shopizer-developers
Changes
sm-shop/.classpath 10(+10 -0)
sm-shop/.gitignore 1(+1 -0)
sm-shop/.project 42(+42 -0)
sm-shop/.settings/.jsdtscope 12(+12 -0)
sm-shop/.settings/org.eclipse.wst.common.component 291(+291 -0)
sm-shop/pom.xml 451(+451 -0)
sm-shop/README 44(+44 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/categories/CategoryController.java 500(+500 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/CacheController.java 107(+107 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/ConfigurationController.java 206(+206 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/SystemConfigurationController.java 86(+86 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentBoxesController.java 221(+221 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentImageController.java 257(+257 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentPagesController.java 371(+371 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/StaticContentController.java 239(+239 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerController.java 745(+745 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsController.java 342(+342 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsSetController.java 367(+367 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsValueController.java 350(+350 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/MerchantStoreController.java 479(+479 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/StoreBrandingController.java 193(+193 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/StoreLandingController.java 238(+238 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrderActionsControler.java 561(+561 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrdersController.java 178(+178 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/payments/PaymentsController.java 175(+175 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/CustomProductGroupsController.java 452(+452 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/DigitalProductController.java 186(+186 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/FeaturedItemsController.java 256(+256 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ManufacturerController.java 428(+428 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/OptionsController.java 345(+345 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/OptionsValueController.java 430(+430 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductAttributeController.java 532(+532 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductController.java 1020(+1020 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductImagesController.java 325(+325 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductKeywordsController.java 352(+352 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductPriceController.java 510(+510 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductReviewController.java 229(+229 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductsController.java 261(+261 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/RelatedItemsController.java 313(+313 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/CustomShippingMethodsController.java 767(+767 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingConfigsController.java 228(+228 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingMethodsController.java 189(+189 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingOptionsController.java 176(+176 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingPackagingController.java 140(+140 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxClassController.java 304(+304 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxConfigurationController.java 89(+89 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxRatesController.java 471(+471 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/PermissionController.java 119(+119 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerAttributes.java 18(+18 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerOption.java 70(+70 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerOptionValue.java 22(+22 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/entity/merchant/StoreLandingDescription.java 65(+65 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/security/SecurityDataAccessException.java 20(+20 -0)
sm-shop/src/main/java/com/salesmanager/web/admin/security/UserAuthenticationSuccessHandler.java 48(+48 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/CategoryDescription.java 14(+14 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/PersistableCategory.java 27(+27 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ManufacturerDescription.java 15(+15 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ManufacturerEntity.java 22(+22 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/PersistableManufacturer.java 21(+21 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ReadableManufacturer.java 20(+20 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductAttribute.java 13(+13 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductOption.java 21(+21 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductOptionValue.java 23(+23 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductAttribute.java 28(+28 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductAttributeEntity.java 43(+43 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOption.java 14(+14 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionDescription.java 15(+15 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionEntity.java 33(+33 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValue.java 14(+14 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValueDescription.java 15(+15 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValueEntity.java 26(+26 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ReadableProductAttribute.java 12(+12 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableProduct.java 61(+61 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableProductReview.java 25(+25 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductDescription.java 12(+12 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductReviewEntity.java 55(+55 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductList.java 29(+29 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductPrice.java 34(+34 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductReview.java 21(+21 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerAttribute.java 16(+16 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerAttributeEntity.java 22(+22 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionDescription.java 15(+15 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionEntity.java 34(+34 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValue.java 15(+15 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValueDescription.java 15(+15 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValueEntity.java 27(+27 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerAttribute.java 25(+25 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerOption.java 23(+23 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerOptionValue.java 23(+23 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerAttribute.java 26(+26 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerOption.java 22(+22 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerOptionValue.java 22(+22 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/customer/SecuredShopPersistableCustomer.java 50(+50 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderProductDownload.java 61(+61 -0)
sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartAttribute.java 50(+50 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableCategoryPopulator.java 127(+127 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductOptionPopulator.java 75(+75 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductOptionValuePopulator.java 83(+83 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductPopulator.java 269(+269 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductReviewPopulator.java 133(+133 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableCategoryPopulator.java 62(+62 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductPopulator.java 159(+159 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductPricePopulator.java 58(+58 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductReviewPopulator.java 60(+60 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerBillingAddressPopulator.java 52(+52 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerDeliveryAddressPopulator.java 78(+78 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerEntityPopulator.java 108(+108 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerOptionPopulator.java 68(+68 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerBillingAddressPopulator.java 62(+62 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerOptionPopulator.java 82(+82 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerOptionValuePopulator.java 75(+75 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerPopulator.java 95(+95 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerShippingAddressPopulator.java 97(+97 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/customer/ReadableCustomerPopulator.java 114(+114 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/manufacturer/PersistableManufacturerPopulator.java 84(+84 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/manufacturer/ReadableManufacturerPopulator.java 54(+54 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/order/PersistableOrderPopulator.java 225(+225 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/order/PersistableOrderProductPopulator.java 167(+167 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderProductDownloadPopulator.java 39(+39 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderProductPopulator.java 117(+117 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderTotalPopulator.java 78(+78 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableShippingSummaryPopulator.java 59(+59 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableShopOrderPopulator.java 114(+114 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/order/ShoppingCartItemPopulator.java 87(+87 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/shoppingCart/ShoppingCartDataPopulator.java 184(+184 -0)
sm-shop/src/main/java/com/salesmanager/web/populator/shoppingCart/ShoppingCartModelPopulator.java 276(+276 -0)
sm-shop/src/main/java/com/salesmanager/web/services/controller/category/ShoppingCategoryRESTController.java 214(+214 -0)
sm-shop/src/main/java/com/salesmanager/web/services/controller/customer/CustomerRESTController.java 399(+399 -0)
sm-shop/src/main/java/com/salesmanager/web/services/controller/order/OrderRESTController.java 277(+277 -0)
sm-shop/src/main/java/com/salesmanager/web/services/controller/product/ShopProductRESTController.java 642(+642 -0)
sm-shop/src/main/java/com/salesmanager/web/services/controller/store/StoreContactRESTController.java 132(+132 -0)
sm-shop/src/main/java/com/salesmanager/web/services/security/ServicesAuthenticationEntryPoint.java 19(+19 -0)
sm-shop/src/main/java/com/salesmanager/web/services/security/ServicesAuthenticationSuccessHandler.java 42(+42 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/category/ShoppingCategoryController.java 723(+723 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/content/ShopContentController.java 65(+65 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerAccountController.java 523(+523 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerDashboardController.java 135(+135 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerLoginController.java 123(+123 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerOrdersController.java 160(+160 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerProductReviewController.java 226(+226 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerRegistrationController.java 290(+290 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/facade/CustomerFacade.java 91(+91 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/facade/CustomerFacadeImpl.java 559(+559 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/facade/OrderFacade.java 110(+110 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/facade/OrderFacadeImpl.java 945(+945 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderConfirmationController.java 193(+193 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderController.java 940(+940 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderDownloadController.java 114(+114 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderPaymentController.java 255(+255 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/product/ShopProductController.java 403(+403 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/search/SearchController.java 285(+285 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/facade/ShoppingCartFacade.java 48(+48 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/facade/ShoppingCartFacadeImpl.java 513(+513 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/MiniCartController.java 92(+92 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/ShoppingCartController.java 400(+400 -0)
sm-shop/src/main/java/com/salesmanager/web/shop/controller/store/ContactController.java 162(+162 -0)
sm-shop/src/main/resources/admin/menu.json 309(+309 -0)
sm-shop/src/main/resources/log4j.xml 95(+95 -0)
sm-shop/src/main/webapp/common/adminTabs.jsp 36(+36 -0)
sm-shop/src/main/webapp/layout/admin/layout.jsp 384(+384 -0)
sm-shop/src/main/webapp/pages/admin/home.jsp 86(+86 -0)
sm-shop/src/main/webapp/pages/admin/orders/order.jsp 714(+714 -0)
sm-shop/src/main/webapp/pages/admin/tax/taxRates.jsp 263(+263 -0)
sm-shop/src/main/webapp/resources/css/sm.css 311(+311 -0)
sm-shop/src/main/webapp/resources/js/bootstrap/jquery.js 9252(+9252 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt 25(+25 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/_translationstatus.txt 28(+28 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/_translationstatus.txt 27(+27 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_blockquote.png 0(+0 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/_translationstatus.txt 22(+22 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template1.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template2.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template3.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/_translationstatus.txt 28(+28 -0)
sm-shop/src/main/webapp/resources/js/functions.jsp 107(+107 -0)
sm-shop/src/main/webapp/resources/js/hogan.js 575(+575 -0)
sm-shop/src/main/webapp/resources/js/json2.js 482(+482 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/button_selection.html 137(+137 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/canvas_clip_scroll.html 79(+79 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/detailViewer_init.html 52(+52 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_annotations.html 81(+81 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_init.html 61(+61 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_item_types.html 79(+79 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_layout.html 63(+63 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_validators.html 183(+183 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/editableListGrid_init.html 63(+63 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/event_details.html 105(+105 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/event_propagation.html 119(+119 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_inverted.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_small.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/imgButton_selection.html 173(+173 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/keypress_handling.html 51(+51 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/listGrid_drag.html 130(+130 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/menu_features.html 103(+103 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/menubar_features.html 136(+136 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/refresh_response.html 12(+12 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/refreshFromServer.html 48(+48 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/replace_response.html 12(+12 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/replaceFromServer.html 47(+47 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/scrollBar_custom.html 114(+114 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/slider_colormixer.html 122(+122 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/stretchImgButton_selection.html 169(+169 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/toolbar_features.html 68(+68 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/treeGrid_init.html 123(+123 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/treeGrid_init_connectors.html 138(+138 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/widget_attachment.html 150(+150 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/widget_drag_appearance.html 191(+191 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/widget_drag_resize.html 158(+158 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/widget_layering.html 95(+95 -0)
sm-shop/src/main/webapp/resources/smart-client/components/components/widget_position_size.html 126(+126 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/add_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/back_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/color_swatch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/column_preferences.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/configure.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/download.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/edit_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/exclamation.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/forward_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/freezeLeft.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/freezeRight.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/plus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/remove_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/sort_ascending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/sort_descending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/text_linespacing.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/unfreeze.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ColorPicker/crosshair.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ColorPicker/spectrum.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_opening.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/close_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderDisabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderLabel.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderLabelDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/header_handle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/header_handle_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/maximize.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/maximize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/minimize.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/minimize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderDisabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabel.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabelDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabelSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_selected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_selected_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_selected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_selected_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DatabaseBrowser/column.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DatabaseBrowser/data.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/arrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/arrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/doubleArrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/doubleArrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/warn copy.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/ColorPicker_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/ColorPicker_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/date_control.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/date_control_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/partialcheck.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PopUpTextAreaEditor_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_ColorPicker_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_pickbutton.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_pickbutton_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease_Focused.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase_Focused.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/createNewFolder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/file.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/folder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/previousFolder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/refresh.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/upOneLevel.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/document.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/document_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/expander_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/expander_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/formula_menuItem.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/group_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/group_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_menu.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/headerSprite.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_collapsed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_expanded.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Over_Selected.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Selected.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/sort_ascending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/sort_descending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/check_disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_background.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_rollover.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_disabled_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_add_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_add_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_remove_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_remove_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Panel/panel_header.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/check.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/query.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/background_color.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/background_color_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/copy.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/copy_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/cut.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/cut_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/indent.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/indent_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/link_new.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/outdent.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/outdent_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/paste.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/paste_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/separator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/separator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_center_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_justified.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_justified_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_bold.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_color.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_color_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_italic.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_underline.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/complexType.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/operation.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/simpleType.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/background.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/progressCursorTracker.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_Disabled_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_snap.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_snap_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_Disabled_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_snap.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_snap_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_bottom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_bottom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_top.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_bottom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_top.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_top.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_bottom_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_bottom_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_bottom_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_bottom_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_left_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_left_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_right_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_right_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_top_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_top_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_bottom_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_bottom_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_left_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_left_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_right_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_right_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_top_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_top_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_left_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_left_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_right_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_right_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_top_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_top_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TileGrid/tileOver.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/background.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/background_vertical.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hresizer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hresizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hseparator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hseparator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/resizer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/resizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/separator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/separator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_ancestor.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_drop.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_file.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_open.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/opener_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/opener_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/headerIcon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/resizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/accept.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/add_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/approve.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/back_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/color_swatch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/column_preferences.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/configure.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/download.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/edit.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/edit_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/exclamation.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/filter.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/first.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/forward_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/freezeLeft.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/freezeRight.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/groupby.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/help.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/last.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/next.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/plus.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/plus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/prev.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/print.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/redo.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/refresh.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/remove.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/remove_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/save.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/search.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/sort_ascending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/sort_descending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/text_linespacing.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/undo.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/unfreeze.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/ungroup.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/view.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ColorPicker/crosshair.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ColorPicker/spectrum.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_opening.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/close.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/close_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderDisabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderLabel.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderLabelDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/header_handle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/header_handle_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/maximize.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/maximize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/minimize.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/minimize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderDisabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabel.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabelDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabelSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_selected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_selected_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_selected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_selected_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DatabaseBrowser/column.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DatabaseBrowser/data.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/arrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/arrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/doubleArrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/doubleArrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/confirm.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/error.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/notify.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/ColorPicker_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/ColorPicker_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/date_control.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/date_control_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/partialcheck.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PopUpTextAreaEditor_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_ColorPicker_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_pickbutton.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_pickbutton_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease_Focused.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase_Focused.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/createNewFolder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/file.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/folder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/previousFolder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/refresh.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/upOneLevel.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/document.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/document_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/expander_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/expander_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/formula_menuItem.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/group_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/group_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_menu.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_collapsed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_expanded.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Over_Selected.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Selected.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Selected_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/sort_ascending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/sort_descending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/loadingSmall.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/check_disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_background.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_rollover.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_disabled_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_add_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_add_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_remove_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_remove_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Panel/panel_header.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/check.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/query.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/background_color.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/background_color_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/copy.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/copy_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/cut.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/cut_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/indent.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/indent_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/link_new.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/outdent.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/outdent_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/paste.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/paste_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/separator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/separator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_center_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_justified.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_justified_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_bold.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_color.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_color_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_italic.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_underline.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/complexType.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/operation.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/simpleType.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_grip.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_grip_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_grip.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_grip_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/background.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/progressCursorTracker.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_Disabled_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_snap.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_snap_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_Disabled_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_snap.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_snap_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/close.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/close.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/close.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/close.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_bottom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_bottom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_top.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_bottom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_top.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_top.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_bottom_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_bottom_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_bottom_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_bottom_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_left_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_left_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_right_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_right_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_top_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_top_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_bottom_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_bottom_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_left_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_left_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_right_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_right_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_top_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_top_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_left_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_left_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_right_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_right_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_top_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_top_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TileGrid/tileOver.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/background.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/background_vertical.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hresizer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hresizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hseparator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hseparator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/resizer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/resizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/separator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/separator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_ancestor.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/file.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_drop.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_file.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_open.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/opener_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/opener_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/headerIcon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/resizer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/resizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/unsupported_browser.html 89(+89 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/add_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/back_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/color_swatch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/column_preferences.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/edit_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/exclamation.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/forward_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/freezeLeft.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/freezeRight.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/plus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/remove_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/sort_ascending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/sort_descending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/text_linespacing.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ColorPicker/crosshair.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ColorPicker/spectrum.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/date_control.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/date_control_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease_Focused.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase_Focused.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_opening.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/close_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderDisabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderLabel.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderLabelDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/header_handle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/header_handle_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/maximize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/minimize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderDisabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabel.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabelDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabelSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_selected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_selected_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_selected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_selected_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DatabaseBrowser/column.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DatabaseBrowser/data.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/arrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/arrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/doubleArrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/doubleArrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/ColorPicker_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/ColorPicker_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/date_control.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/date_control_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/partialcheck.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PopUpTextAreaEditor_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_ColorPicker_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_pickbutton.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_pickbutton_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease_Focused.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase_Focused.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/createNewFolder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/folder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/previousFolder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/refresh.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/upOneLevel.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/expander_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/expander_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/formula_menuItem.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/group_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/group_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_menu.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/headerSprite.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_collapsed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_expanded.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Over_Selected.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Selected.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Selected_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/sort_ascending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/sort_descending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/check_disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_background.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_up.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_rollover.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_disabled_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_add_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_add_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_remove_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_remove_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Panel/panel_header.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/check.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/query.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/background_color.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/background_color_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/copy.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/copy_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/cut.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/cut_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/indent.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/indent_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/link_new.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/outdent.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/outdent_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/paste.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/paste_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/separator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/separator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_center_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_justified.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_justified_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_bold.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_color.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_color_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_italic.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_underline.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/complexType.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/operation.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/simpleType.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_grip.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_grip_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_corner.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_track.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_grip.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_grip_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/progressCursorTracker.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_Disabled_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_snap.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_snap_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_Disabled_bg.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_snap.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_snap_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_bottom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_bottom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_top.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_bottom.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_top.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_bottom_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_bottom_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_bottom_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_bottom_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_left_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_left_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_right_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_right_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_top_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_top_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_bottom_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_bottom_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_left_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_left_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_right_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_right_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_top_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_top_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_left_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_left_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_right_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_right_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_top_back.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_top_forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/background.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/background_vertical.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hresizer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hresizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hseparator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hseparator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/resizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/separator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/separator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_ancestor.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_drop.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_file.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_open.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/opener_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/opener_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Normal.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/resizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/approve.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/column_preferences.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/configure.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/download.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/forward.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/freezeLeft.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/freezeRight.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/groupby.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/refresh.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/sort_ascending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/sort_descending.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/unfreeze.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/ungroup.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/AdvancedFilter/Remove_Row_disabled_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/AdvancedFilter/Remove_Row_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorChooser/auto_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorChooser/transparent_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorPicker/crosshair.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorPicker/spectrum.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_opening.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/close_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderLabel.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderLabelDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/CubeGrid.psd 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/header_handle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/header_handle_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/maximize.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/maximize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/minimize.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/minimize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeader.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderLabel.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderLabelDown.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderSelected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderSelectedOver.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_selected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_selected_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_selected.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_selected_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/validation_error_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DatabaseBrowser/column.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DatabaseBrowser/data.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/arrow_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/arrow_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/doubleArrow_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/doubleArrow_right.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ColorPicker_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/date_control.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/DatePicker_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/DatePicker_icon_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PopUpTextAreaEditor_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_ColorPicker_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_pickbutton.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_pickbutton_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unsetcheck_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_B.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_L.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_R.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_T.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_B.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_L.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_R.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_T.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_B.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_L.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_R.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_T.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_B.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_L.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_R.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_T.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TL.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TR.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/createNewFolder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/file.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/folder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/previousFolder.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/refresh.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/upOneLevel.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/checked.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/formula_menuItem.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_closed_rtl.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_Disabled_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_Disabled_opened.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_opened.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_opening.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/headerMenuButton_icon.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/sort_ascending.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/sort_descending.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/tracker.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/validation_error_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/check_disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_up_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_disabled_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_left.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_add_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_add_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_remove_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_remove_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_add_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_add_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_remove_files.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_remove_files_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/Portlet.psd 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/Progressbar.psd 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/spacer.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/check.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/query.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/background_color.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/background_color_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/copy.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/copy_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/cut.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/cut_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/indent.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/indent_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/link_new.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/outdent.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/outdent_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/paste.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/paste_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/separator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/separator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_center_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_justified.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_justified_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_left.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_left_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_right.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_right_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_bold.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_color.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_color_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_italic.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_underline.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/complexType.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/operation.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/simpleType.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/scrollbar.psd 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_corner.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_track.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_Disabled_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_Disabled_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_opened.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/progressCursorTracker.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds_center.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_B.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_BL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_BR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_L.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_R.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_T.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_TL.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_TR.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb_down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hgrip_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Down_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Over_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vgrip_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Down_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Over.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Over_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_stretch.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/close_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_back.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Disabled_back.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Disabled_forward.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Down_back.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Down_forward.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_forward.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker_Disabled.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker_Down.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_back.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Disabled_back.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Disabled_forward.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Down_back.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Down_forward.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_forward.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_end.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_start.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_stretch.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hresizer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hresizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hseparator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hseparator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/resizer.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/resizer_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/separator.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/separator_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/checked.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_ancestor.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_end.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_middle.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_single.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_start.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_closed.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_drop.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_drop.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_file.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_file.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_open.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_open.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_up.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_closed_rtl.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_Disabled_closed.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_Disabled_opened.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_opened.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_opening.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/sort_ascending.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/sort_descending.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/TreeGrid.psd 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/validation_error_icon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient.psd 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient_hilite.gif 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerIcon.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Disabled.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Down.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Over.png 0(+0 -0)
sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/unsupported_browser.html 89(+89 -0)
sm-shop/src/main/webapp/WEB-INF/shopizer-tags.tld 273(+273 -0)
sm-shop/src/main/webapp/WEB-INF/tiles/tiles-shop.xml 196(+196 -0)
sm-shop/src/main/webapp/WEB-INF/web.xml 60(+60 -0)
sm-shop/src/test/java/com/salesmanager/test/shop/controller/category/rest/CategoryManagementAPITest.java 120(+120 -0)
sm-shop/src/test/java/com/salesmanager/test/shop/controller/customer/rest/CustomerRESTControllerTest.java 184(+184 -0)
sm-shop/src/test/java/com/salesmanager/test/shop/controller/product/rest/ProductManagementAPITest.java 319(+319 -0)
sm-shop/src/test/java/com/salesmanager/test/shop/controller/store/rest/ContactAPITest.java 66(+66 -0)
sm-shop/src/test/resources/log4j.xml 41(+41 -0)
Details
diff --git a/sm-core/.settings/org.eclipse.jdt.core.prefs b/sm-core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3053f12
--- /dev/null
+++ b/sm-core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,6 @@
+#Sun Jun 10 11:43:01 EDT 2012
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/sm-core/.settings/org.maven.ide.eclipse.prefs b/sm-core/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..c8e126b
--- /dev/null
+++ b/sm-core/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,8 @@
+#Sun Jun 10 11:43:00 EDT 2012
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
sm-shop/.classpath 10(+10 -0)
diff --git a/sm-shop/.classpath b/sm-shop/.classpath
new file mode 100644
index 0000000..7c3d14f
--- /dev/null
+++ b/sm-shop/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
sm-shop/.gitignore 1(+1 -0)
diff --git a/sm-shop/.gitignore b/sm-shop/.gitignore
new file mode 100644
index 0000000..ea8c4bf
--- /dev/null
+++ b/sm-shop/.gitignore
@@ -0,0 +1 @@
+/target
sm-shop/.project 42(+42 -0)
diff --git a/sm-shop/.project b/sm-shop/.project
new file mode 100644
index 0000000..d2c565e
--- /dev/null
+++ b/sm-shop/.project
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>sm-shop</name>
+ <comment>NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+ </natures>
+</projectDescription>
sm-shop/.settings/.jsdtscope 12(+12 -0)
diff --git a/sm-shop/.settings/.jsdtscope b/sm-shop/.settings/.jsdtscope
new file mode 100644
index 0000000..3a28de0
--- /dev/null
+++ b/sm-shop/.settings/.jsdtscope
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="WebContent"/>
+ <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+ <attributes>
+ <attribute name="hide" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+ <classpathentry kind="output" path=""/>
+</classpath>
diff --git a/sm-shop/.settings/org.eclipse.core.resources.prefs b/sm-shop/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f798bdc
--- /dev/null
+++ b/sm-shop/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,4 @@
+#Mon Nov 19 18:19:59 EST 2012
+eclipse.preferences.version=1
+encoding//src/main/resources/bundles/shopizer_fr.properties=UTF-8
+encoding//src/main/webapp/pages/admin/categories/category.jsp=UTF-8
diff --git a/sm-shop/.settings/org.eclipse.jdt.core.prefs b/sm-shop/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..14b4a3c
--- /dev/null
+++ b/sm-shop/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+#Mon Jul 09 07:43:17 EDT 2012
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.compliance=1.6
sm-shop/.settings/org.eclipse.wst.common.component 291(+291 -0)
diff --git a/sm-shop/.settings/org.eclipse.wst.common.component b/sm-shop/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..a634905
--- /dev/null
+++ b/sm-shop/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="sm-shop">
+ <property name="context-root" value="sm-shop"/>
+ <wb-resource deploy-path="/" source-path="src/main/webapp"/>
+ <property name="java-output-path" value="/target/classes"/>
+ <dependent-module archiveName="activation-1.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/javax/activation/activation/1.1/activation-1.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="antlr-2.7.7.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="aopalliance-1.0.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="asm-3.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/asm/asm/3.1/asm-3.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="aspectjrt-1.6.10.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/aspectj/aspectjrt/1.6.10/aspectjrt-1.6.10.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="aspectjweaver-1.5.4.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/aspectj/aspectjweaver/1.5.4/aspectjweaver-1.5.4.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="c3p0-0.9.1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="cglib-2.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/cglib/cglib/2.2/cglib-2.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="codegen-0.4.9.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/mysema/codegen/codegen/0.4.9/codegen-0.4.9.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="collections-generic-4.01.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/net/sourceforge/collections/collections-generic/4.01/collections-generic-4.01.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="commons-beanutils-1.8.0.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/commons-beanutils/commons-beanutils/1.8.0/commons-beanutils-1.8.0.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="commons-digester-1.8.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/commons-digester/commons-digester/1.8.1/commons-digester-1.8.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="commons-fileupload-1.2.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/commons-fileupload/commons-fileupload/1.2.2/commons-fileupload-1.2.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="commons-io-2.0.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="commons-lang3-3.0.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/apache/commons/commons-lang3/3.0/commons-lang3-3.0.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="commons-logging-1.1.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="commons-logging-api-1.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="dom4j-1.6.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="ehcache-core-2.4.3.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/net/sf/ehcache/ehcache-core/2.4.3/ehcache-core-2.4.3.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="freemarker-2.3.19.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/freemarker/freemarker/2.3.19/freemarker-2.3.19.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="h2-1.3.152.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/h2database/h2/1.3.152/h2-1.3.152.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="hibernate-commons-annotations-4.0.1.Final.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/hibernate/common/hibernate-commons-annotations/4.0.1.Final/hibernate-commons-annotations-4.0.1.Final.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="hibernate-core-4.1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/hibernate/hibernate-core/4.1.2/hibernate-core-4.1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="hibernate-ehcache-4.1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/hibernate/hibernate-ehcache/4.1.2/hibernate-ehcache-4.1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="hibernate-entitymanager-4.1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/hibernate/hibernate-entitymanager/4.1.2/hibernate-entitymanager-4.1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="hibernate-jpa-2.0-api-1.0.1.Final.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/hibernate/javax/persistence/hibernate-jpa-2.0-api/1.0.1.Final/hibernate-jpa-2.0-api-1.0.1.Final.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="hibernate-validator-4.1.0.Final.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/hibernate/hibernate-validator/4.1.0.Final/hibernate-validator-4.1.0.Final.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="infinispan-cachestore-bdbje-5.1.4.FINAL.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/infinispan/infinispan-cachestore-bdbje/5.1.4.FINAL/infinispan-cachestore-bdbje-5.1.4.FINAL.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="infinispan-cachestore-jdbc-5.1.4.FINAL.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/infinispan/infinispan-cachestore-jdbc/5.1.4.FINAL/infinispan-cachestore-jdbc-5.1.4.FINAL.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="infinispan-core-5.1.6.FINAL.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/infinispan/infinispan-core/5.1.6.FINAL/infinispan-core-5.1.6.FINAL.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="infinispan-tree-5.1.6.FINAL.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/infinispan/infinispan-tree/5.1.6.FINAL/infinispan-tree-5.1.6.FINAL.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jackson-core-asl-1.8.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/codehaus/jackson/jackson-core-asl/1.8.1/jackson-core-asl-1.8.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jackson-mapper-asl-1.8.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/codehaus/jackson/jackson-mapper-asl/1.8.1/jackson-mapper-asl-1.8.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="javassist-3.3.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/javassist/javassist/3.3/javassist-3.3.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="javax.inject-1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/javax/inject/javax.inject/1/javax.inject-1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jboss-common-core-2.2.14.GA.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jboss/jboss-common-core/2.2.14.GA/jboss-common-core-2.2.14.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jboss-logging-3.1.0.GA.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jboss/logging/jboss-logging/3.1.0.GA/jboss-logging-3.1.0.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jboss-logging-spi-2.0.5.GA.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jboss-marshalling-1.3.11.GA.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jboss/marshalling/jboss-marshalling/1.3.11.GA/jboss-marshalling-1.3.11.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jboss-marshalling-river-1.3.11.GA.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jboss/marshalling/jboss-marshalling-river/1.3.11.GA/jboss-marshalling-river-1.3.11.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jboss-transaction-api-1.0.1.GA.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jboss/javaee/jboss-transaction-api/1.0.1.GA/jboss-transaction-api-1.0.1.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jboss-transaction-api_1.1_spec-1.0.0.Final.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jboss/spec/javax/transaction/jboss-transaction-api_1.1_spec/1.0.0.Final/jboss-transaction-api_1.1_spec-1.0.0.Final.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jbosscache-core-3.2.5.GA.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jboss/cache/jbosscache-core/3.2.5.GA/jbosscache-core-3.2.5.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jcl-over-slf4j-1.6.6.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/slf4j/jcl-over-slf4j/1.6.6/jcl-over-slf4j-1.6.6.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jdom-1.0.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/jdom/jdom/1.0/jdom-1.0.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="je-4.0.92.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/sleepycat/je/4.0.92/je-4.0.92.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jgroups-2.6.13.GA.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/jgroups/jgroups/2.6.13.GA/jgroups-2.6.13.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jgroups-3.0.11.Final.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jgroups/jgroups/3.0.11.Final/jgroups-3.0.11.Final.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="joda-money-0.6.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/joda/joda-money/0.6/joda-money-0.6.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="joda-time-2.0.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/joda-time/joda-time/2.0/joda-time-2.0.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="json-simple-1.1.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jsr305-1.3.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/net/sourceforge/findbugs/jsr305/1.3.2/jsr305-1.3.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jstl-api-1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/javax/servlet/jsp/jstl/jstl-api/1.2/jstl-api-1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="jstl-impl-1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/glassfish/web/jstl-impl/1.2/jstl-impl-1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="log4j-1.2.16.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="mail-1.4.5.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/javax/mail/mail/1.4.5/mail-1.4.5.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="mysema-commons-lang-0.2.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/mysema/commons/mysema-commons-lang/0.2.2/mysema-commons-lang-0.2.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="mysql-connector-java-5.1.19.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/mysql/mysql-connector-java/5.1.19/mysql-connector-java-5.1.19.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="querydsl-core-2.3.3.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/mysema/querydsl/querydsl-core/2.3.3/querydsl-core-2.3.3.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="querydsl-jpa-2.3.3.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/mysema/querydsl/querydsl-jpa/2.3.3/querydsl-jpa-2.3.3.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="rhq-pluginAnnotations-3.0.4.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/rhq/helpers/rhq-pluginAnnotations/3.0.4/rhq-pluginAnnotations-3.0.4.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="rome-1.0.0.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/net/java/dev/rome/rome/1.0.0/rome-1.0.0.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="slf4j-api-1.6.6.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="slf4j-log4j12-1.6.6.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/slf4j/slf4j-log4j12/1.6.6/slf4j-log4j12-1.6.6.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-aop-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-aop/3.1.0.RELEASE/spring-aop-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-asm-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-asm/3.1.0.RELEASE/spring-asm-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-aspects-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-aspects/3.1.0.RELEASE/spring-aspects-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-beans-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-beans/3.1.0.RELEASE/spring-beans-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-context-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-context/3.1.0.RELEASE/spring-context-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-context-support-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-context-support/3.1.0.RELEASE/spring-context-support-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-core-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-core/3.1.0.RELEASE/spring-core-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-expression-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-expression/3.1.0.RELEASE/spring-expression-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-jdbc-3.0.6.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-jdbc/3.0.6.RELEASE/spring-jdbc-3.0.6.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-orm-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-orm/3.1.0.RELEASE/spring-orm-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-security-config-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/security/spring-security-config/3.1.0.RELEASE/spring-security-config-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-security-core-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/security/spring-security-core/3.1.0.RELEASE/spring-security-core-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-security-crypto-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/security/spring-security-crypto/3.1.0.RELEASE/spring-security-crypto-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-security-web-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/security/spring-security-web/3.1.0.RELEASE/spring-security-web-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-test-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-test/3.1.0.RELEASE/spring-test-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-tx-3.0.6.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-tx/3.0.6.RELEASE/spring-tx-3.0.6.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-web-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-web/3.1.0.RELEASE/spring-web-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="spring-webmvc-3.1.0.RELEASE.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/springframework/spring-webmvc/3.1.0.RELEASE/spring-webmvc-3.1.0.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="stax2-api-3.1.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/codehaus/woodstox/stax2-api/3.1.1/stax2-api-3.1.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="tiles-api-2.1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/apache/tiles/tiles-api/2.1.2/tiles-api-2.1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="tiles-core-2.1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/apache/tiles/tiles-core/2.1.2/tiles-core-2.1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="tiles-jsp-2.1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/apache/tiles/tiles-jsp/2.1.2/tiles-jsp-2.1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="tiles-servlet-2.1.2.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/apache/tiles/tiles-servlet/2.1.2/tiles-servlet-2.1.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="usertype.core-3.0.0.CR1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jadira/usertype/usertype.core/3.0.0.CR1/usertype.core-3.0.0.CR1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="usertype.spi-3.0.0.CR1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/jadira/usertype/usertype.spi/3.0.0.CR1/usertype.spi-3.0.0.CR1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="validation-api-1.0.0.GA.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module archiveName="woodstox-core-asl-4.1.1.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/org/codehaus/woodstox/woodstox-core-asl/4.1.1/woodstox-core-asl-4.1.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+
+ <dependent-module archiveName="sm-core.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/shopizer/sm-core/0.0.1-SNAPSHOT/sm-core-0.0.1-SNAPSHOT.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/resources"/>
+ </wb-module>
+</project-modules>
diff --git a/sm-shop/.settings/org.eclipse.wst.common.project.facet.core.xml b/sm-shop/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..bc40bcf
--- /dev/null
+++ b/sm-shop/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,6 @@
+<faceted-project>
+ <fixed facet="jst.java"/>
+ <fixed facet="jst.web"/>
+ <installed facet="jst.web" version="2.5"/>
+ <installed facet="jst.java" version="6.0"/>
+</faceted-project>
\ No newline at end of file
diff --git a/sm-shop/.settings/org.eclipse.wst.jsdt.ui.superType.container b/sm-shop/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..3bd5d0a
--- /dev/null
+++ b/sm-shop/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/sm-shop/.settings/org.eclipse.wst.jsdt.ui.superType.name b/sm-shop/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..05bd71b
--- /dev/null
+++ b/sm-shop/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git a/sm-shop/.settings/org.eclipse.wst.validation.prefs b/sm-shop/.settings/org.eclipse.wst.validation.prefs
new file mode 100644
index 0000000..96384eb
--- /dev/null
+++ b/sm-shop/.settings/org.eclipse.wst.validation.prefs
@@ -0,0 +1,9 @@
+#Mon Nov 19 20:10:12 EST 2012
+DELEGATES_PREFERENCE=delegateValidatorList
+USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;
+USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;
+USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationtrueversion1.2.303.v201202090300
+eclipse.preferences.version=1
+override=true
+suspend=true
+vf.version=3
diff --git a/sm-shop/.settings/org.maven.ide.eclipse.prefs b/sm-shop/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..fe9ce3d
--- /dev/null
+++ b/sm-shop/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,8 @@
+#Mon Jul 09 07:39:03 EDT 2012
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
sm-shop/pom.xml 451(+451 -0)
diff --git a/sm-shop/pom.xml b/sm-shop/pom.xml
new file mode 100755
index 0000000..dccdd24
--- /dev/null
+++ b/sm-shop/pom.xml
@@ -0,0 +1,451 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.salesmanager</groupId>
+ <artifactId>sm-shop</artifactId>
+ <name>sm-shop</name>
+ <packaging>war</packaging>
+ <version>2.0-SNAPSHOT</version>
+ <properties>
+ <java-version>1.6</java-version>
+ <jackson-version>1.9.13</jackson-version>
+ <fasterxml-version>2.2.3</fasterxml-version>
+ <org.springframework-version>3.1.0.RELEASE</org.springframework-version>
+ <org.springframework-security-version>3.1.4.RELEASE</org.springframework-security-version>
+ <org.aspectj-version>1.6.10</org.aspectj-version>
+ <org.slf4j-version>1.6.6</org.slf4j-version>
+ <sm-core.jodatime.version>2.0</sm-core.jodatime.version>
+ <sm-core.jodatime-hibernate.version>1.3</sm-core.jodatime-hibernate.version>
+ <sm-core.version>2.0-SNAPSHOT</sm-core.version>
+ <sm-search.version>0.0.3</sm-search.version>
+ </properties>
+ <dependencies>
+
+
+ <!-- sm-core -->
+ <dependency>
+ <groupId>com.shopizer</groupId>
+ <artifactId>sm-core</artifactId>
+ <version>${sm-core.version}</version>
+ </dependency>
+
+ <!-- sm-search -->
+ <dependency>
+ <groupId>com.shopizer</groupId>
+ <artifactId>sm-search</artifactId>
+ <version>${sm-search.version}</version>
+ </dependency>
+
+
+
+ <!-- Spring -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${org.springframework-version}</version>
+ <exclusions>
+ <!-- Exclude Commons Logging in favor of SLF4j -->
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc</artifactId>
+ <version>${org.springframework-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.mobile</groupId>
+ <artifactId>spring-mobile-device</artifactId>
+ <version>1.1.0.RELEASE</version>
+ </dependency>
+
+ <!-- Spring Security -->
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-core</artifactId>
+ <version>${org.springframework-security-version}</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>spring-tx</artifactId>
+ <groupId>org.springframework</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-web</artifactId>
+ <version>${org.springframework-security-version}</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>spring-tx</artifactId>
+ <groupId>org.springframework</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-config</artifactId>
+ <version>${org.springframework-security-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-taglibs</artifactId>
+ <version>${org.springframework-security-version}</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>spring-tx</artifactId>
+ <groupId>org.springframework</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.annotation</groupId>
+ <artifactId>jsr250-api</artifactId>
+ <version>1.0</version>
+ </dependency>
+
+
+ <!-- AspectJ -->
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>${org.aspectj-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.transaction</groupId>
+ <artifactId>jta</artifactId>
+ <version>1.1</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- Logging -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${org.slf4j-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ <version>${org.slf4j-version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${org.slf4j-version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.16</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- @Inject -->
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <version>1</version>
+ </dependency>
+
+ <!-- Servlet -->
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet.jsp</groupId>
+ <artifactId>jsp-api</artifactId>
+ <version>2.1</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet.jsp.jstl</groupId>
+ <artifactId>jstl-api</artifactId>
+ <version>1.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish.web</groupId>
+ <artifactId>jstl-impl</artifactId>
+ <version>1.2</version>
+ </dependency>
+
+ <!-- Jackson JSON Processor -->
+ <dependency>
+ <groupId>org.codehaus.jackson</groupId>
+ <artifactId>jackson-mapper-asl</artifactId>
+ <version>${jackson-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.googlecode.json-simple</groupId>
+ <artifactId>json-simple</artifactId>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>${fasterxml-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>${fasterxml-version}</version>
+ </dependency>
+
+ <!-- Rome Atom+RSS -->
+ <dependency>
+ <groupId>net.java.dev.rome</groupId>
+ <artifactId>rome</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+
+ <!-- JSR 303 with Hibernate Validator -->
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>1.0.0.GA</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>4.1.0.Final</version>
+ </dependency>
+
+
+
+ <dependency>
+ <groupId>commons-fileupload</groupId>
+ <artifactId>commons-fileupload</artifactId>
+ <version>1.2.2</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-validator</groupId>
+ <artifactId>commons-validator</artifactId>
+ <version>1.4.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <version>3.0</version>
+ </dependency>
+
+ <!-- Test -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.2</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- Needs Tiles core to add tiles to spring (2.1.2 is the latest supported) -->
+ <dependency>
+ <groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-core</artifactId>
+ <version>2.1.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-servlet</artifactId>
+ <version>2.1.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-jsp</artifactId>
+ <version>2.1.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-core</artifactId>
+ <version>3.2.5.GA</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jopendocument</groupId>
+ <artifactId>jOpenDocument</artifactId>
+ <version>1.3b1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.lowagie</groupId>
+ <artifactId>itext</artifactId>
+ <version>4.2.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>net.tanesha.recaptcha4j</groupId>
+ <artifactId>recaptcha4j</artifactId>
+ <version>0.0.7</version>
+ </dependency>
+
+ </dependencies>
+ <repositories>
+ <!-- For testing against latest Spring snapshots -->
+ <repository>
+ <id>org.springframework.maven.snapshot</id>
+ <name>Spring Maven Snapshot Repository</name>
+ <url>http://maven.springframework.org/snapshot</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ <!-- For developing against latest Spring milestones -->
+ <repository>
+ <id>org.springframework.maven.milestone</id>
+ <name>Spring Maven Milestone Repository</name>
+ <url>http://maven.springframework.org/milestone</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>org.jboss.repository.releases</id>
+ <name>JBoss Maven Release Repository</name>
+ <url>https://repository.jboss.org/nexus/content/repositories/releases</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+
+ </repositories>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <source>${java-version}</source>
+ <target>${java-version}</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>install</id>
+ <phase>install</phase>
+ <goals>
+ <goal>sources</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>aspectj-maven-plugin</artifactId>
+ <!-- Have to use version 1.2 since version 1.3 does not appear to work
+ with ITDs -->
+ <version>1.2</version>
+ <dependencies>
+ <!-- You must use Maven 2.0.9 or above or these are ignored (see MNG-2972) -->
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>${org.aspectj-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjtools</artifactId>
+ <version>${org.aspectj-version}</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ <goal>test-compile</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <outxml>true</outxml>
+ <source>${java-version}</source>
+ <target>${java-version}</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>tomcat-maven-plugin</artifactId>
+ <version>1.1</version>
+ </plugin>
+ <!-- minify -->
+ <!-- match with JDK (use 1.7.2 with JDK 1.7) -->
+ <!--
+ <plugin>
+ <groupId>com.samaxes.maven</groupId>
+ <artifactId>minify-maven-plugin</artifactId>
+ <version>1.6</version>
+ <executions>
+ <execution>
+ <id>default-minify</id>
+ <phase>prepare-package</phase>
+ <configuration>
+ <charset>UTF-8</charset>
+ <cssSourceDir>resources/css</cssSourceDir>
+ <cssSourceFiles>
+ <cssSourceFile>shopizer-admin.css.css</cssSourceFile>
+ <cssSourceFile>sm.css</cssSourceFile>
+ <cssSourceFile>showLoading.css</cssSourceFile>
+ </cssSourceFiles>
+ <jsSourceDir>resources/js</jsSourceDir>
+ <jsSourceFiles>
+ <jsSourceFile>adminFunctions.js</jsSourceFile>
+ <jsSourceFile>address.js</jsSourceFile>
+ <jsSourceFile>login.js</jsSourceFile>
+ <jsSourceFile>product.js</jsSourceFile>
+ <jsSourceFile>registration.js</jsSourceFile>
+ <jsSourceFile>shopping-cart.js</jsSourceFile>
+ </jsSourceFiles>
+ </configuration>
+ <goals>
+ <goal>minify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ -->
+ </plugins>
+ </build>
+</project>
sm-shop/README 44(+44 -0)
diff --git a/sm-shop/README b/sm-shop/README
new file mode 100755
index 0000000..db29172
--- /dev/null
+++ b/sm-shop/README
@@ -0,0 +1,44 @@
+Shopizer 2.0
+-------------------
+Java open source e-commerce software
+
+- Shopping cart
+- Catalogue
+- Search
+- Checkout
+- Administration
+
+
+To get the code:
+-------------------
+Clone the repository:
+$ git clone git://github.com/shopizer-ecommerce/shopizer.git
+
+If this is your first time using Github, review http://help.github.com to learn the basics.
+
+To run the application:
+-------------------
+From the command line with Maven:
+$ cd sm-core
+$ mvn clean install
+
+$ cd sm-shop
+$ mvn clean install
+
+copy sm-shop/target/sm-shop.war to tomcat or any other application server deployment dir
+
+edit catalina.bat for windows users or catalina.sh for linux / max users
+
+export JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m" in Linux / Mac
+set JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m" in Windows
+
+Access the deployed web application at: http://localhost:8080/sm-shop/shop
+
+Acces the admin section at: http://localhost:8080/sm-shop/admin
+
+username : admin
+password : password
+
+The instructions above will let you run the application with default settings and configurations.
+Please read the instructions on how to connect to MySQL, configure an email server and configure other subsystems
+The documentation is available here http://www.shopizer.com
\ No newline at end of file
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/AdminController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/AdminController.java
new file mode 100644
index 0000000..0d76f26
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/AdminController.java
@@ -0,0 +1,71 @@
+package com.salesmanager.web.admin.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.salesmanager.core.business.common.model.CriteriaOrderBy;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.OrderCriteria;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.user.model.User;
+import com.salesmanager.core.business.user.service.UserService;
+import com.salesmanager.web.constants.Constants;
+
+@Controller
+public class AdminController {
+
+ @Autowired
+ CountryService countryService;
+
+ @Autowired
+ UserService userService;
+
+ @RequestMapping(value={"/admin/home.html","/admin/","/admin"}, method=RequestMethod.GET)
+ public String displayDashboard(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("home", "home");
+
+ model.addAttribute("activeMenus",activeMenus);
+
+
+ //get store information
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Map<String,Country> countries = countryService.getCountriesMap(language);
+
+ Country storeCountry = store.getCountry();
+ Country country = countries.get(storeCountry.getIsoCode());
+
+ String sCurrentUser = request.getRemoteUser();
+ User currentUser = userService.getByUserName(sCurrentUser);
+
+ model.addAttribute("store", store);
+ model.addAttribute("country", country);
+ model.addAttribute("user", currentUser);
+ //get last 10 orders
+ OrderCriteria orderCriteria = new OrderCriteria();
+ orderCriteria.setMaxCount(10);
+ orderCriteria.setOrderBy(CriteriaOrderBy.DESC);
+
+ return ControllerConstants.Tiles.adminDashboard;
+ }
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/categories/CategoryController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/categories/CategoryController.java
new file mode 100644
index 0000000..a6b0f5b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/categories/CategoryController.java
@@ -0,0 +1,500 @@
+package com.salesmanager.web.admin.controller.categories;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.model.CategoryDescription;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class CategoryController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CategoryController.class);
+
+ @Autowired
+ LanguageService languageService;
+
+ @Autowired
+ CategoryService categoryService;
+
+ @Autowired
+ CountryService countryService;
+
+ @Autowired
+ LabelUtils messages;
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/categories/editCategory.html", method=RequestMethod.GET)
+ public String displayCategoryEdit(@RequestParam("id") long categoryId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ return displayCategory(categoryId,model,request,response);
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/categories/createCategory.html", method=RequestMethod.GET)
+ public String displayCategoryCreate(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ return displayCategory(null,model,request,response);
+
+ }
+
+
+
+ private String displayCategory(Long categoryId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ //get parent categories
+ List<Category> categories = categoryService.listByStore(store,language);
+
+
+ List<Language> languages = store.getLanguages();
+ Category category = new Category();
+
+ if(categoryId!=null && categoryId!=0) {//edit mode
+ category = categoryService.getById(categoryId);
+
+
+
+ if(category==null || category.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "catalogue-categories";
+ }
+ } else {
+
+ category.setVisible(true);
+
+ }
+
+ List<CategoryDescription> descriptions = new ArrayList<CategoryDescription>();
+
+ for(Language l : languages) {
+
+ CategoryDescription description = null;
+ if(category!=null) {
+ for(CategoryDescription desc : category.getDescriptions()) {
+
+
+ if(desc.getLanguage().getCode().equals(l.getCode())) {
+ description = desc;
+ }
+
+
+ }
+ }
+
+ if(description==null) {
+ description = new CategoryDescription();
+ description.setLanguage(l);
+ }
+
+ descriptions.add(description);
+
+ }
+
+ category.setDescriptions(descriptions);
+
+
+
+ model.addAttribute("category", category);
+ model.addAttribute("categories", categories);
+
+
+
+ return "catalogue-categories-category";
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/categories/save.html", method=RequestMethod.POST)
+ public String saveCategory(@Valid @ModelAttribute("category") Category category, BindingResult result, Model model, HttpServletRequest request) throws Exception {
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ //display menu
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ if(category.getId() != null && category.getId() >0) { //edit entry
+
+ //get from DB
+ Category currentCategory = categoryService.getById(category.getId());
+
+ if(currentCategory==null || currentCategory.getMerchantStore().getId()!=store.getId()) {
+ return "catalogue-categories";
+ }
+
+ }
+
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+
+
+ List<CategoryDescription> descriptions = category.getDescriptions();
+ if(descriptions!=null) {
+
+ for(CategoryDescription description : descriptions) {
+
+ String code = description.getLanguage().getCode();
+ Language l = langs.get(code);
+ description.setLanguage(l);
+ description.setCategory(category);
+
+
+ }
+
+ }
+
+ //save to DB
+ category.setMerchantStore(store);
+ //}
+
+ if (result.hasErrors()) {
+ return "catalogue-categories-category";
+ }
+
+ //check parent
+ if(category.getParent()!=null) {
+ if(category.getParent().getId()==-1) {//this is a root category
+ category.setParent(null);
+ category.setLineage("/");
+ category.setDepth(0);
+ }
+ }
+
+ category.getAuditSection().setModifiedBy(request.getRemoteUser());
+ categoryService.saveOrUpdate(category);
+
+
+ //ajust lineage and depth
+ if(category.getParent()!=null && category.getParent().getId()!=-1) {
+
+ Category parent = new Category();
+ parent.setId(category.getParent().getId());
+ parent.setMerchantStore(store);
+
+ categoryService.addChild(parent, category);
+
+ }
+
+
+ //get parent categories
+ List<Category> categories = categoryService.listByStore(store,language);
+ model.addAttribute("categories", categories);
+
+
+ model.addAttribute("success","success");
+ return "catalogue-categories-category";
+ }
+
+
+ //category list
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/categories/categories.html", method=RequestMethod.GET)
+ public String displayCategories(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+
+ setMenu(model,request);
+
+ //does nothing, ajax subsequent request
+
+ return "catalogue-categories";
+ }
+
+ @SuppressWarnings({ "unchecked"})
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/categories/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageCategories(HttpServletRequest request, HttpServletResponse response) {
+ String categoryName = request.getParameter("name");
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Category> categories = null;
+
+ if(!StringUtils.isBlank(categoryName)) {
+
+
+ categories = categoryService.getByName(store, categoryName, language);
+
+ } else {
+
+ categories = categoryService.listByStore(store, language);
+
+ }
+
+
+
+ for(Category category : categories) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("categoryId", category.getId());
+
+ CategoryDescription description = category.getDescriptions().get(0);
+
+ entry.put("name", description.getName());
+ entry.put("code", category.getCode());
+ entry.put("visible", category.isVisible());
+ resp.addDataEntry(entry);
+
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging categories", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/categories/hierarchy.html", method=RequestMethod.GET)
+ public String displayCategoryHierarchy(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+
+ setMenu(model,request);
+
+ //get the list of categories
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Category> categories = categoryService.listByStore(store, language);
+
+ model.addAttribute("categories", categories);
+
+ return "catalogue-categories-hierarchy";
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/categories/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteCategory(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sid = request.getParameter("categoryId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long id = Long.parseLong(sid);
+
+ Category category = categoryService.getById(id);
+
+ if(category==null || category.getMerchantStore().getId().intValue() !=store.getId().intValue() ) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+
+ } else {
+
+ categoryService.delete(category);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting category", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/categories/moveCategory.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String moveCategory(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String parentid = request.getParameter("parentId");
+ String childid = request.getParameter("childId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long parentId = Long.parseLong(parentid);
+ Long childId = Long.parseLong(childid);
+
+ Category child = categoryService.getById(childId);
+ Category parent = categoryService.getById(parentId);
+
+ if(child.getParent().getId()==parentId) {
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+ return resp.toJSONString();
+ }
+
+ if(parentId!=1) {
+
+ if(child==null || parent==null || child.getMerchantStore().getId()!=store.getId() || parent.getMerchantStore().getId()!=store.getId()) {
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(child.getMerchantStore().getId()!=store.getId() || parent.getMerchantStore().getId()!=store.getId()) {
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ }
+
+
+ parent.getAuditSection().setModifiedBy(request.getRemoteUser());
+ categoryService.addChild(parent, child);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while moving category", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/categories/checkCategoryCode.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String checkCategoryCode(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String code = request.getParameter("code");
+ String id = request.getParameter("id");
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ if(StringUtils.isBlank(code)) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+
+ try {
+
+ Category category = categoryService.getByCode(store, code);
+
+ if(category!=null && StringUtils.isBlank(id)) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+
+ if(category!=null && !StringUtils.isBlank(id)) {
+ try {
+ Long lid = Long.parseLong(id);
+
+ if(category.getCode().equals(code) && category.getId().longValue()==lid) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+ } catch (Exception e) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ }
+
+
+
+
+
+
+
+
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while getting category", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-categories", "catalogue-categories");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/CacheController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/CacheController.java
new file mode 100644
index 0000000..4ea93df
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/CacheController.java
@@ -0,0 +1,107 @@
+package com.salesmanager.web.admin.controller.configurations;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.utils.CacheUtils;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+
+@Controller
+public class CacheController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CacheController.class);
+
+ @Autowired
+ private CacheUtils cache;
+
+
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/cache/cacheManagement.html", method=RequestMethod.GET)
+ public String displayAccounts(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ this.setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get cache keys
+ List<String> cacheKeysList = cache.getCacheKeys(store);
+
+ model.addAttribute("keys", cacheKeysList);
+
+ return ControllerConstants.Tiles.Configuration.cache;
+
+ }
+
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/cache/clear.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String clearCache(HttpServletRequest request, HttpServletResponse response) {
+ String cacheKey = request.getParameter("cacheKey");
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ StringBuilder key = new StringBuilder();
+ key.append(store.getId()).append("_").append(cacheKey);
+
+ if(cacheKey!=null) {
+ cache.removeFromCache(key.toString());
+ } else {
+ cache.removeAllFromCache(store);
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while updateing groups", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("cache", "cache");
+
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("cache");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/ConfigurationController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/ConfigurationController.java
new file mode 100644
index 0000000..476198e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/ConfigurationController.java
@@ -0,0 +1,206 @@
+package com.salesmanager.web.admin.controller.configurations;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.system.model.MerchantConfiguration;
+import com.salesmanager.core.business.system.model.MerchantConfigurationType;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.business.system.service.MerchantConfigurationService;
+import com.salesmanager.core.modules.email.EmailConfig;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.ConfigListWrapper;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+
+@Controller
+public class ConfigurationController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationController.class);
+
+ @Autowired
+ private MerchantConfigurationService merchantConfigurationService;
+
+ @Autowired
+ private EmailService emailService;
+
+ @Autowired
+ Environment env;
+
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/configuration/accounts.html", method=RequestMethod.GET)
+ public String displayAccountsConfguration(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setConfigurationMenu(model, request);
+ List<MerchantConfiguration> configs = new ArrayList<MerchantConfiguration>();
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ MerchantConfiguration merchantFBConfiguration = merchantConfigurationService.getMerchantConfiguration(Constants.KEY_FACEBOOK_PAGE_URL,store);
+ if(null == merchantFBConfiguration)
+ {
+ merchantFBConfiguration = new MerchantConfiguration();
+ merchantFBConfiguration.setKey(Constants.KEY_FACEBOOK_PAGE_URL);
+ merchantFBConfiguration.setMerchantConfigurationType(MerchantConfigurationType.CONFIG);
+ }
+ configs.add(merchantFBConfiguration);
+
+ MerchantConfiguration merchantGoogleAnalyticsConfiguration = merchantConfigurationService.getMerchantConfiguration(Constants.KEY_GOOGLE_ANALYTICS_URL,store);
+ if(null == merchantGoogleAnalyticsConfiguration)
+ {
+ merchantGoogleAnalyticsConfiguration = new MerchantConfiguration();
+ merchantGoogleAnalyticsConfiguration.setKey(Constants.KEY_GOOGLE_ANALYTICS_URL);
+ merchantGoogleAnalyticsConfiguration.setMerchantConfigurationType(MerchantConfigurationType.CONFIG);
+ }
+ configs.add(merchantGoogleAnalyticsConfiguration);
+
+ /**
+ MerchantConfiguration merchantGoogleApiConfiguration = merchantConfigurationService.getMerchantConfiguration(Constants.KEY_GOOGLE_API_KEY,store);
+ if(null == merchantGoogleApiConfiguration)
+ {
+ merchantGoogleApiConfiguration = new MerchantConfiguration();
+ merchantGoogleApiConfiguration.setKey(Constants.KEY_GOOGLE_API_KEY);
+ merchantGoogleApiConfiguration.setMerchantConfigurationType(MerchantConfigurationType.CONFIG);
+ }
+ configs.add(merchantGoogleApiConfiguration);
+ **/
+
+ MerchantConfiguration twitterConfiguration = merchantConfigurationService.getMerchantConfiguration(Constants.KEY_TWITTER_HANDLE,store);
+ if(null == twitterConfiguration)
+ {
+ twitterConfiguration = new MerchantConfiguration();
+ twitterConfiguration.setKey(Constants.KEY_TWITTER_HANDLE);
+ twitterConfiguration.setMerchantConfigurationType(MerchantConfigurationType.CONFIG);
+ }
+ configs.add(twitterConfiguration);
+
+ ConfigListWrapper configWrapper = new ConfigListWrapper();
+ configWrapper.setMerchantConfigs(configs);
+ model.addAttribute("configuration",configWrapper);
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Configuration.accounts;
+ }
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/configuration/saveConfiguration.html", method=RequestMethod.POST)
+ public String saveConfigurations(@ModelAttribute("configuration") ConfigListWrapper configWrapper, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception
+ {
+ setConfigurationMenu(model, request);
+ List<MerchantConfiguration> configs = configWrapper.getMerchantConfigs();
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ for(MerchantConfiguration mConfigs : configs)
+ {
+ mConfigs.setMerchantStore(store);
+ if(!StringUtils.isBlank(mConfigs.getValue())) {
+ mConfigs.setMerchantConfigurationType(MerchantConfigurationType.CONFIG);
+ merchantConfigurationService.saveOrUpdate(mConfigs);
+ } else {//remove if submited blank and exists
+ MerchantConfiguration config = merchantConfigurationService.getMerchantConfiguration(mConfigs.getKey(), store);
+ if(config!=null) {
+ merchantConfigurationService.delete(config);
+ }
+ }
+ }
+ model.addAttribute("success","success");
+ model.addAttribute("configuration",configWrapper);
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Configuration.accounts;
+
+ }
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/configuration/email.html", method=RequestMethod.GET)
+ public String displayEmailSettings(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ setEmailConfigurationMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ EmailConfig emailConfig = emailService.getEmailConfiguration(store);
+ if(emailConfig == null){
+ emailConfig = new EmailConfig();
+ //TODO: Need to check below properties. When there are no record available in MerchantConfguration table with EMAIL_CONFIG key,
+ // instead of showing blank fields in setup screen, show default configured values from email.properties
+ emailConfig.setProtocol(env.getProperty("mailSender.protocol"));
+ emailConfig.setHost(env.getProperty("mailSender.host"));
+ emailConfig.setPort(env.getProperty("mailSender.port}"));
+ emailConfig.setUsername(env.getProperty("mailSender.username"));
+ emailConfig.setPassword(env.getProperty("mailSender.password"));
+ emailConfig.setSmtpAuth(Boolean.parseBoolean(env.getProperty("mailSender.mail.smtp.auth")));
+ emailConfig.setStarttls(Boolean.parseBoolean(env.getProperty("mail.smtp.starttls.enable")));
+ }
+
+ model.addAttribute("configuration", emailConfig);
+ return ControllerConstants.Tiles.Configuration.email;
+ }
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/configuration/saveEmailConfiguration.html", method=RequestMethod.POST)
+ public String saveEmailSettings(@ModelAttribute("configuration") EmailConfig config, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+ setEmailConfigurationMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ EmailConfig emailConfig = emailService.getEmailConfiguration(store);
+ if(emailConfig == null){
+ emailConfig = new EmailConfig();
+ }
+
+ // populte EmailConfig model from UI values
+ emailConfig.setProtocol(config.getProtocol());
+ emailConfig.setHost(config.getHost());
+ emailConfig.setPort(config.getPort());
+ emailConfig.setUsername(config.getUsername());
+ emailConfig.setPassword(config.getPassword());
+ emailConfig.setSmtpAuth(config.isSmtpAuth());
+ emailConfig.setStarttls(config.isStarttls());
+
+ emailService.saveEmailConfiguration(emailConfig, store);
+
+ model.addAttribute("configuration", emailConfig);
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Configuration.email;
+ }
+
+ private void setConfigurationMenu(Model model, HttpServletRequest request) throws Exception {
+
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("configuration", "configuration");
+ activeMenus.put("accounts-conf", "accounts-conf");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("configuration");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ }
+
+ private void setEmailConfigurationMenu(Model model, HttpServletRequest request) throws Exception {
+
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("configuration", "configuration");
+ activeMenus.put("email-conf", "email-conf");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("configuration");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/SystemConfigurationController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/SystemConfigurationController.java
new file mode 100644
index 0000000..4948fa2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/configurations/SystemConfigurationController.java
@@ -0,0 +1,86 @@
+package com.salesmanager.web.admin.controller.configurations;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.system.model.MerchantConfig;
+import com.salesmanager.core.business.system.service.MerchantConfigurationService;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+
+@Controller
+public class SystemConfigurationController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(SystemConfigurationController.class);
+
+ @Autowired
+ private MerchantConfigurationService merchantConfigurationService;
+
+ @Autowired
+ Environment env;
+
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/configuration/system.html", method=RequestMethod.GET)
+ public String displaySysyemConfgurations(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ MerchantConfig merchantConfiguration = merchantConfigurationService.getMerchantConfig(store);
+
+ if(merchantConfiguration==null) {
+ merchantConfiguration = new MerchantConfig();
+ }
+
+ model.addAttribute("store", store);
+ model.addAttribute("configuration",merchantConfiguration);
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Configuration.system;
+ }
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/configuration/saveSystemConfiguration.html", method=RequestMethod.POST)
+ public String saveSystemConfigurations(@ModelAttribute("configuration") MerchantConfig merchantConfiguration, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception
+ {
+ setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ merchantConfigurationService.saveMerchantConfig(merchantConfiguration, store);
+ model.addAttribute("success","success");
+ model.addAttribute("store", store);
+ model.addAttribute("configuration",merchantConfiguration);
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Configuration.system;
+
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("configuration", "configuration");
+ activeMenus.put("system-configurations", "system-configurations");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("configuration");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentBoxesController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentBoxesController.java
new file mode 100644
index 0000000..c3d60ec
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentBoxesController.java
@@ -0,0 +1,221 @@
+package com.salesmanager.web.admin.controller.content;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.salesmanager.core.business.content.model.Content;
+import com.salesmanager.core.business.content.model.ContentDescription;
+import com.salesmanager.core.business.content.model.ContentType;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+@Controller
+public class ContentBoxesController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ContentBoxesController.class);
+
+ @Autowired
+ private ContentService contentService;
+
+ @Autowired
+ LanguageService languageService;
+
+ @ModelAttribute("boxPositions")
+ public Set<Map.Entry<String, String>> boxPositions() {
+ final Map<String, String> map = new HashMap<String, String>();
+
+ map.put("LEFT", "LEFT");
+ map.put("RIGHT", "RIGHT");
+
+
+ return (map.entrySet());
+ }
+
+
+
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/boxes/list.html", method=RequestMethod.GET)
+ public String listContentBoxes(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ model.addAttribute("boxes", true);
+ return ControllerConstants.Tiles.Content.contentPages;
+
+
+ }
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/boxes/create.html", method=RequestMethod.GET)
+ public String createBox(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ model.addAttribute("boxes", true);
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Content content = new Content();
+ content.setMerchantStore(store);
+ content.setContentType(ContentType.BOX);
+
+
+ List<Language> languages = store.getLanguages();
+
+
+ for(Language l : languages) {
+
+ ContentDescription description = new ContentDescription();
+ description.setLanguage(l);
+ content.getDescriptions().add(description);
+ }
+
+ //add positions
+ List<String> positions = new ArrayList<String>();
+ positions.add("LEFT");
+ positions.add("RIGHT");
+
+ model.addAttribute("positions",positions);
+ model.addAttribute("content",content);
+
+
+ return ControllerConstants.Tiles.Content.contentPagesDetails;
+
+
+ }
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/boxes/details.html", method=RequestMethod.GET)
+ public String getContentDetails(@RequestParam("id") Long id, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ model.addAttribute("boxes", true);
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Content content = contentService.getById(id);
+
+
+ List<String> positions = new ArrayList<String>();
+ positions.add("LEFT");
+ positions.add("RIGHT");
+
+ model.addAttribute("positions",positions);
+
+ if(content==null) {
+ LOGGER.error("Content entity null for id " + id);
+ return "redirect:/admin/content/boxes/listContent.html";
+ }
+
+ if(content.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ LOGGER.error("Content id " + id + " does not belong to merchant " + store.getId());
+ return "redirect:/admin/content/boxes/listContent.html";
+ }
+
+ if(!content.getContentType().name().equals(ContentType.BOX.name())) {
+ LOGGER.error("This controller does not handle content type " + content.getContentType().name());
+ return "redirect:/admin/content/boxes/listContent.html";
+ }
+
+ List<Language> languages = store.getLanguages();
+
+ List<ContentDescription> descriptions = new ArrayList<ContentDescription>();
+ for(Language l : languages) {
+ for(ContentDescription description : content.getDescriptions()) {
+ if(description.getLanguage().getCode().equals(l.getCode())) {
+ descriptions.add(description);
+ }
+ }
+ }
+ content.setDescriptions(descriptions);
+
+ model.addAttribute("content",content);
+
+
+ return ControllerConstants.Tiles.Content.contentPagesDetails;
+
+
+ }
+
+
+
+
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/boxes/save.html", method=RequestMethod.POST)
+ public String saveContent(@Valid @ModelAttribute Content content, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ model.addAttribute("boxes", true);
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<String> positions = new ArrayList<String>();
+ positions.add("LEFT");
+ positions.add("RIGHT");
+
+ model.addAttribute("positions",positions);
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.Content.contentPagesDetails;
+ }
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+ List<ContentDescription> descriptions = content.getDescriptions();
+ for(ContentDescription description : descriptions) {
+ Language l = langs.get(description.getLanguage().getCode());
+ description.setLanguage(l);
+ description.setContent(content);
+ }
+
+ content.setContentType(ContentType.BOX);
+ content.setMerchantStore(store);
+ contentService.saveOrUpdate(content);
+
+
+ model.addAttribute("content",content);
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Content.contentPagesDetails;
+
+
+ }
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("content", "content");
+ activeMenus.put("content-boxes", "content-boxes");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("content");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentImageController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentImageController.java
new file mode 100644
index 0000000..6fc92c7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentImageController.java
@@ -0,0 +1,257 @@
+package com.salesmanager.web.admin.controller.content;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.content.model.InputContentFile;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.content.ContentFiles;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.ImageFilePathUtils;
+
+/**
+ * Manage static content type image
+ * - Add images
+ * - Remove images
+ * @author Carl Samson
+ *
+ */
+@Controller
+public class ContentImageController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ContentImageController.class);
+
+ @Autowired
+ private ContentService contentService;
+
+ /**
+ * Entry point for the file browser used from the javascript
+ * content editor
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value={"/admin/content/fileBrowser.html"}, method=RequestMethod.GET)
+ public String displayFileBrowser(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ return ControllerConstants.Tiles.ContentImages.fileBrowser;
+
+ }
+
+
+
+ /**
+ * Get images for a given merchant store
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value={"/admin/content/contentImages.html","/admin/content/contentManagement.html"}, method=RequestMethod.GET)
+ public String getContentImages(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ this.setMenu(model, request);
+ return ControllerConstants.Tiles.ContentImages.contentImages;
+
+ }
+
+
+ @SuppressWarnings({ "unchecked"})
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/images/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageImages(HttpServletRequest request, HttpServletResponse response) {
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<String> imageNames = contentService.getContentFilesNames(store.getCode(),FileContentType.IMAGE);
+
+ if(imageNames!=null) {
+
+ for(String name : imageNames) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("picture", new StringBuilder().append(request.getContextPath()).append(ImageFilePathUtils.buildStaticImageFilePath(store, name)).toString());
+ entry.put("name", name);
+ entry.put("id", name);
+ resp.addDataEntry(entry);
+
+ }
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging content images", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ /**
+ * Controller methods which allow Admin to add content images to underlying
+ * Infinispan cache.
+ * @param model model object
+ * @param request http request object
+ * @param response http response object
+ * @return view allowing user to add content images
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/createContentImages.html", method=RequestMethod.GET)
+ public String displayContentImagesCreate(final Model model, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
+
+ return ControllerConstants.Tiles.ContentImages.addContentImages;
+
+ }
+
+ /**
+ * Method responsible for adding content images to underlying Infinispan cache.
+ * It will add given content image(s) for given merchant store in the cache.
+ * Following steps will be performed in order to add images
+ * <pre>
+ * 1. Validate form data
+ * 2. Get Merchant Store based on merchant Id.
+ * 3. Call {@link InputContentFile} to add image(s).
+ * </pre>
+ *
+ * @param contentImages
+ * @param bindingResult
+ * @param model
+ * @param request
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/saveContentImages.html", method=RequestMethod.POST)
+ public String saveContentImages(@ModelAttribute(value="contentFiles") @Valid final ContentFiles contentImages, final BindingResult bindingResult,final Model model, final HttpServletRequest request) throws Exception{
+
+ this.setMenu(model, request);
+ if (bindingResult.hasErrors()) {
+ LOGGER.info( "Found {} Validation errors", bindingResult.getErrorCount());
+ return ControllerConstants.Tiles.ContentImages.addContentImages;
+
+ }
+ final List<InputContentFile> contentImagesList=new ArrayList<InputContentFile>();
+ final MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ if(CollectionUtils.isNotEmpty( contentImages.getFile() )){
+ LOGGER.info("Saving {} content images for merchant {}",contentImages.getFile().size(),store.getId());
+ for(final MultipartFile multipartFile:contentImages.getFile()){
+ if(!multipartFile.isEmpty()){
+ ByteArrayInputStream inputStream = new ByteArrayInputStream( multipartFile.getBytes() );
+ InputContentFile cmsContentImage = new InputContentFile();
+ cmsContentImage.setFileName(multipartFile.getOriginalFilename() );
+ cmsContentImage.setMimeType( multipartFile.getContentType() );
+ cmsContentImage.setFile( inputStream );
+ cmsContentImage.setFileContentType(FileContentType.IMAGE);
+ contentImagesList.add( cmsContentImage);
+ }
+ }
+
+ if(CollectionUtils.isNotEmpty( contentImagesList )){
+ contentService.addContentFiles( store.getCode(), contentImagesList );
+ }
+ else{
+ // show error message on UI
+ }
+ }
+
+ return ControllerConstants.Tiles.ContentImages.contentImages;
+ }
+
+
+ /**
+ * Removes a content image from the CMS
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ */
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/removeImage.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeImage(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String imageName = request.getParameter("name");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+
+ contentService.removeFile(store.getCode(), FileContentType.IMAGE, imageName);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("content", "content");
+ activeMenus.put("content-images", "content-images");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("content");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentPagesController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentPagesController.java
new file mode 100644
index 0000000..63911e7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/ContentPagesController.java
@@ -0,0 +1,371 @@
+package com.salesmanager.web.admin.controller.content;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.content.model.Content;
+import com.salesmanager.core.business.content.model.ContentDescription;
+import com.salesmanager.core.business.content.model.ContentType;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+@Controller
+public class ContentPagesController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(StaticContentController.class);
+
+ @Autowired
+ private ContentService contentService;
+
+ @Autowired
+ LanguageService languageService;
+
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/pages/list.html", method=RequestMethod.GET)
+ public String listContentPages(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ return ControllerConstants.Tiles.Content.contentPages;
+
+
+ }
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/pages/create.html", method=RequestMethod.GET)
+ public String createPage(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Content content = new Content();
+ content.setMerchantStore(store);
+ content.setContentType(ContentType.PAGE);
+
+
+ List<Language> languages = store.getLanguages();
+
+
+ for(Language l : languages) {
+
+ ContentDescription description = new ContentDescription();
+ description.setLanguage(l);
+ content.getDescriptions().add(description);
+ }
+
+
+
+ model.addAttribute("content",content);
+
+
+ return ControllerConstants.Tiles.Content.contentPagesDetails;
+
+
+ }
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/pages/details.html", method=RequestMethod.GET)
+ public String getContentDetails(@RequestParam("id") Long id, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Content content = contentService.getById(id);
+
+
+
+ if(content==null) {
+ LOGGER.error("Content entity null for id " + id);
+ return "redirect:/admin/content/pages/listContent.html";
+ }
+
+ if(content.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ LOGGER.error("Content id " + id + " does not belong to merchant " + store.getId());
+ return "redirect:/admin/content/pages/listContent.html";
+ }
+
+ if(!content.getContentType().name().equals(ContentType.PAGE.name())) {
+ LOGGER.error("This controller does not handle content type " + content.getContentType().name());
+ return "redirect:/admin/content/pages/listContent.html";
+ }
+
+ List<Language> languages = store.getLanguages();
+
+ List<ContentDescription> descriptions = new ArrayList<ContentDescription>();
+ for(Language l : languages) {
+ for(ContentDescription description : content.getDescriptions()) {
+ if(description.getLanguage().getCode().equals(l.getCode())) {
+ descriptions.add(description);
+ }
+ }
+ }
+ content.setDescriptions(descriptions);
+
+ model.addAttribute("content",content);
+
+
+ return ControllerConstants.Tiles.Content.contentPagesDetails;
+
+
+ }
+
+
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeContent(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String id = request.getParameter("id");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ //get the content first
+ Long lid = Long.parseLong(id);
+
+ Content dbContent = contentService.getById(lid);
+
+ if(dbContent==null) {
+ LOGGER.error("Invalid content id ", id);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(dbContent!=null && dbContent.getMerchantStore().getId().intValue()!= store.getId().intValue()) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ contentService.delete(dbContent);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ @SuppressWarnings({ "unchecked"})
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/page.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageStaticContent(@RequestParam("contentType") String contentType, HttpServletRequest request, HttpServletResponse response) {
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+
+
+ ContentType cType = ContentType.PAGE;
+ if(ContentType.BOX.name().equals(contentType)) {
+ cType = ContentType.BOX;
+ }
+ List<Content> contentList = contentService.listByType(cType, store, language);
+
+ if(contentList!=null) {
+
+ for(Content content : contentList) {
+
+ List<ContentDescription> descriptions = content.getDescriptions();
+ ContentDescription description = descriptions.get(0);
+ for(ContentDescription desc : descriptions) {
+ if(desc.getLanguage().getCode().equals(language.getCode())) {
+ description = desc;
+ break;
+ }
+ }
+
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("id", content.getId());
+ entry.put("code", content.getCode());
+ entry.put("name", description.getName());
+ resp.addDataEntry(entry);
+
+ }
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging content", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/pages/save.html", method=RequestMethod.POST)
+ public String saveContent(@Valid @ModelAttribute Content content, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.Content.contentPagesDetails;
+ }
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+ List<ContentDescription> descriptions = content.getDescriptions();
+ for(ContentDescription description : descriptions) {
+ Language l = langs.get(description.getLanguage().getCode());
+ description.setLanguage(l);
+ description.setContent(content);
+ }
+
+ if(content.getSortOrder()==null) {
+ content.setSortOrder(0);
+ }
+
+ content.setContentType(ContentType.PAGE);
+ content.setMerchantStore(store);
+ contentService.saveOrUpdate(content);
+
+
+ model.addAttribute("content",content);
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Content.contentPagesDetails;
+
+
+ }
+
+ /**
+ * Check if the content code filled in by the
+ * user is unique
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ */
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/checkContentCode.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String checkContentCode(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+ String code = request.getParameter("code");
+ String id = request.getParameter("id");
+
+
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ if(StringUtils.isBlank(code)) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ try {
+
+ Content content = contentService.getByCode(code, store);
+
+
+ if(!StringUtils.isBlank(id)) {
+ try {
+ Long lid = Long.parseLong(id);
+
+ if(content!=null && content.getCode().equals(code) && content.getId().longValue()==lid) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+ return resp.toJSONString();
+ }
+ } catch (Exception e) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ } else {
+ if(content!=null) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+ }
+
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while getting category", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("content", "content");
+ activeMenus.put("content-pages", "content-pages");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("content");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/StaticContentController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/StaticContentController.java
new file mode 100644
index 0000000..c0010c9
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/content/StaticContentController.java
@@ -0,0 +1,239 @@
+package com.salesmanager.web.admin.controller.content;
+
+import java.io.ByteArrayInputStream;
+import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.content.model.InputContentFile;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.content.ContentFiles;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.FilePathUtils;
+
+
+@Controller
+public class StaticContentController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(StaticContentController.class);
+
+ @Autowired
+ private ContentService contentService;
+
+
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value={"/admin/content/static/contentFiles.html","/admin/content/static/contentManagement.html"}, method=RequestMethod.GET)
+ public String getContentImages(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ this.setMenu(model, request);
+ return ControllerConstants.Tiles.ContentFiles.contentFiles;
+
+ }
+
+
+ /**
+ * Display files in a List grid
+ * @param request
+ * @param response
+ * @return
+ */
+ @SuppressWarnings({ "unchecked"})
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/static/page.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageStaticContent(HttpServletRequest request, HttpServletResponse response) {
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<String> fileNames = contentService.getContentFilesNames(store.getCode(), FileContentType.STATIC_FILE);
+
+ Map<String,String> configurations = (Map<String, String>)request.getSession().getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+
+ StringBuilder storePath = new StringBuilder();
+ storePath.append(scheme).append("://")
+ .append(store.getDomainName())
+ .append(request.getContextPath());
+
+
+ if(fileNames!=null) {
+
+ for(String name : fileNames) {
+
+ String mimeType = URLConnection.getFileNameMap().getContentTypeFor(name);
+
+ StringBuilder filePath = new StringBuilder();
+
+ filePath.append(storePath.toString()).append(FilePathUtils.buildStaticFilePath(store,name));
+
+
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("name", name);
+ entry.put("path", filePath.toString());
+ entry.put("mimeType", mimeType);
+ resp.addDataEntry(entry);
+
+ }
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging content images", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+
+ /**
+ * Method responsible for adding content files to underlying Infinispan cache.
+ * It will add given content file(s) for given merchant store in the cache.
+ * Following steps will be performed in order to add files
+ * <pre>
+ * 1. Validate form data
+ * 2. Get Merchant Store based on merchant Id.
+ * 3. Call {@link InputContentFile} to add file(s).
+ * </pre>
+ *
+ * @param contentImages
+ * @param bindingResult
+ * @param model
+ * @param request
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/static/saveFiles.html", method=RequestMethod.POST)
+ public String saveFiles(@ModelAttribute(value="contentFiles") @Valid final ContentFiles contentFiles, final BindingResult bindingResult,final Model model, final HttpServletRequest request) throws Exception{
+
+ this.setMenu(model, request);
+ if (bindingResult.hasErrors()) {
+ LOGGER.info( "Found {} Validation errors", bindingResult.getErrorCount());
+ return ControllerConstants.Tiles.ContentFiles.contentFiles;
+
+ }
+ final List<InputContentFile> contentFilesList=new ArrayList<InputContentFile>();
+ final MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ if(CollectionUtils.isNotEmpty( contentFiles.getFile() )){
+ LOGGER.info("Saving {} content files for merchant {}",contentFiles.getFile().size(),store.getId());
+ for(final MultipartFile multipartFile:contentFiles.getFile()){
+ if(!multipartFile.isEmpty()){
+ ByteArrayInputStream inputStream = new ByteArrayInputStream( multipartFile.getBytes() );
+ InputContentFile cmsContentImage = new InputContentFile();
+ cmsContentImage.setFileName(multipartFile.getOriginalFilename() );
+ cmsContentImage.setFileContentType( FileContentType.STATIC_FILE );
+ cmsContentImage.setFile( inputStream );
+ contentFilesList.add( cmsContentImage);
+ }
+ }
+
+ if(CollectionUtils.isNotEmpty( contentFilesList )){
+ contentService.addContentFiles( store.getCode(), contentFilesList );
+ }
+ else{
+ // show error message on UI
+ }
+ }
+
+ return ControllerConstants.Tiles.ContentFiles.contentFiles;
+ }
+
+
+ /**
+ * Removes a static file from the CMS
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ */
+ @PreAuthorize("hasRole('CONTENT')")
+ @RequestMapping(value="/admin/content/static/removeFile.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeFile(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String fileName = request.getParameter("name");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+
+ contentService.removeFile(store.getCode(), FileContentType.STATIC_FILE, fileName);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("content", "content");
+ activeMenus.put("content-files", "content-files");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("content");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/ControllerConstants.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/ControllerConstants.java
new file mode 100644
index 0000000..5131add
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/ControllerConstants.java
@@ -0,0 +1,108 @@
+/**
+ *
+ */
+package com.salesmanager.web.admin.controller;
+
+/**
+ * Interface contain constant for Controller.These constant will be used throughout
+ * sm-shop to providing constant values to various Controllers being used in the
+ * application.
+ * @author Umesh A
+ *
+ */
+public interface ControllerConstants
+{
+
+ interface Tiles{
+
+ final String adminDashboard="admin-dashboard";
+ interface ContentImages{
+ final String addContentImages="admin-contentImages-add";
+ final String contentImages="admin-content-images";
+ final String fileBrowser="admin-content-filebrowser";
+
+ }
+
+ interface ContentFiles{
+ final String addContentFiles="admin-content-files-add";
+ final String contentFiles="admin-content-files";
+
+
+ }
+
+ interface Content{
+ final String contentPages="admin-content-pages";
+ final String contentPagesDetails="admin-content-pages-details";
+
+ }
+
+ interface Customer{
+ final String optionsList="admin-customer-options-list";
+ final String optionDetails="admin-customer-options-details";
+ final String optionsValuesList="admin-customer-options-values-list";
+ final String optionsValueDetails="admin-customer-options-values-details";
+ final String optionsSet="admin-customer-options-set";
+
+ }
+
+ interface Product{
+ final String productReviews="catalogue-product-reviews";
+ final String productPrices="admin-products-prices";
+ final String productPrice="admin-products-price";
+ final String relatedItems="admin-products-related";
+ final String digitalProduct="admin-products-digital";
+ final String productImages="admin-products-images";
+ final String productKeywords="admin-products-keywords";
+ final String customGroups="admin-products-groups";
+ final String customGroupsDetails="admin-products-groups-details";
+ final String manufacturerList="admin-products-manufacturer";
+ final String manufacturerDetails="admin-products-manufacturer-details";
+ }
+
+ interface User{
+ final String profile="admin-user-profile";
+ final String users="admin-users";
+ final String password="admin-user-password";
+ }
+
+ interface Store{
+ final String stores="admin-stores";
+ }
+
+
+ interface Shipping{
+ final String shippingMethod="shipping-method";
+ final String shippingMethods="shipping-methods";
+ final String shippingOptions="shipping-options";
+ final String shippingPackaging="shipping-packaging";
+ final String customShippingWeightBased="admin-shipping-custom";
+ }
+
+ interface Payment{
+ final String paymentMethods="payment-methods";
+ final String paymentMethod="payment-method";
+ }
+
+ interface Order{
+ final String orders="admin-orders";
+ final String ordersEdit="admin-orders-edit";
+ final String ordersTransactions="admin-orders-transactions";
+ }
+
+ interface Configuration{
+ final String accounts="config-accounts";
+ final String email="config-email";
+ final String cache="admin-cache";
+ final String system="config-system";
+ }
+
+ interface Tax{
+ final String taxClasses="tax-classes";
+ final String taxClass="tax-class";
+ final String taxConfiguration="tax-configuration";
+ final String taxRates="tax-rates";
+ final String taxRate="tax-rate";
+ }
+
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerController.java
new file mode 100644
index 0000000..fcea8de
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerController.java
@@ -0,0 +1,745 @@
+package com.salesmanager.web.admin.controller.customers;
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.model.CustomerCriteria;
+import com.salesmanager.core.business.customer.model.CustomerList;
+import com.salesmanager.core.business.customer.model.attribute.CustomerAttribute;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionSet;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionType;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionValueDescription;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerAttributeService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionSetService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionValueService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.modules.email.Email;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.customer.attribute.CustomerOption;
+import com.salesmanager.web.admin.entity.customer.attribute.CustomerOptionValue;
+import com.salesmanager.web.admin.entity.userpassword.UserReset;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.constants.EmailConstants;
+import com.salesmanager.web.populator.customer.CustomerOptionPopulator;
+import com.salesmanager.web.utils.EmailUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+
+@Controller
+public class CustomerController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomerController.class);
+
+ private static final String CUSTOMER_ID_PARAMETER = "customer";
+
+ private final static String RESET_PASSWORD_TPL = "email_template_password_reset_customer.ftl";
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private CustomerOptionService customerOptionService;
+
+ @Autowired
+ private CustomerOptionValueService customerOptionValueService;
+
+ @Autowired
+ private CustomerOptionSetService customerOptionSetService;
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private CustomerAttributeService customerAttributeService;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+ @Autowired
+ EmailService emailService;
+
+
+ /**
+ * Customer details
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/customer.html", method=RequestMethod.GET)
+ public String displayCustomer(Long id, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ //display menu
+ this.setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Language> languages = languageService.getLanguages();
+
+ model.addAttribute("languages",languages);
+
+ Customer customer = null;
+
+ //if request.attribute contains id then get this customer from customerService
+ if(id!=null && id!=0) {//edit mode
+
+ //get from DB
+ customer = customerService.getById(id);
+ if(customer==null) {
+ return "redirect:/admin/customers/list.html";
+ }
+ if(customer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/customers/list.html";
+ }
+
+ } else {
+ customer = new Customer();
+ }
+ //get list of countries (see merchant controller)
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ //get countries
+ List<Country> countries = countryService.getCountries(language);
+
+ //get list of zones
+ List<Zone> zones = zoneService.list();
+
+ this.getCustomerOptions(model, customer, store, language);
+
+ model.addAttribute("zones", zones);
+ model.addAttribute("countries", countries);
+ model.addAttribute("customer", customer);
+ return "admin-customer";
+
+ }
+
+ private void getCustomerOptions(Model model, Customer customer, MerchantStore store, Language language) throws Exception {
+
+ Map<Long,CustomerOption> options = new HashMap<Long,CustomerOption>();
+ //get options
+ List<CustomerOptionSet> optionSet = customerOptionSetService.listByStore(store, language);
+ if(!CollectionUtils.isEmpty(optionSet)) {
+
+
+ CustomerOptionPopulator optionPopulator = new CustomerOptionPopulator();
+
+ Set<CustomerAttribute> customerAttributes = customer.getAttributes();
+
+ for(CustomerOptionSet optSet : optionSet) {
+
+ com.salesmanager.core.business.customer.model.attribute.CustomerOption custOption = optSet.getCustomerOption();
+ if(!custOption.isActive()) {
+ continue;
+ }
+ CustomerOption customerOption = options.get(custOption.getId());
+
+ optionPopulator.setOptionSet(optSet);
+
+
+
+ if(customerOption==null) {
+ customerOption = new CustomerOption();
+ customerOption.setId(custOption.getId());
+ customerOption.setType(custOption.getCustomerOptionType());
+ customerOption.setName(custOption.getDescriptionsSettoList().get(0).getName());
+
+ }
+
+ optionPopulator.populate(custOption, customerOption, store, language);
+ options.put(customerOption.getId(), customerOption);
+
+ if(!CollectionUtils.isEmpty(customerAttributes)) {
+ for(CustomerAttribute customerAttribute : customerAttributes) {
+ if(customerAttribute.getCustomerOption().getId().longValue()==customerOption.getId()){
+ CustomerOptionValue selectedValue = new CustomerOptionValue();
+ com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue attributeValue = customerAttribute.getCustomerOptionValue();
+ selectedValue.setId(attributeValue.getId());
+ CustomerOptionValueDescription optValue = attributeValue.getDescriptionsSettoList().get(0);
+ selectedValue.setName(optValue.getName());
+ customerOption.setDefaultValue(selectedValue);
+ if(customerOption.getType().equalsIgnoreCase(CustomerOptionType.Text.name())) {
+ selectedValue.setName(customerAttribute.getTextValue());
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ model.addAttribute("options", options.values());
+
+
+ }
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/save.html", method=RequestMethod.POST)
+ public String saveCustomer(@Valid @ModelAttribute("customer") Customer customer, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception{
+
+ this.setMenu(model, request);
+
+ String email_regEx = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}\\b";
+ Pattern pattern = Pattern.compile(email_regEx);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ List<Language> languages = languageService.getLanguages();
+
+ model.addAttribute("languages",languages);
+
+ this.getCustomerOptions(model, customer, store, language);
+
+ //get countries
+ List<Country> countries = countryService.getCountries(language);
+
+
+ if(!StringUtils.isBlank(customer.getEmailAddress() ) ){
+ java.util.regex.Matcher matcher = pattern.matcher(customer.getEmailAddress());
+
+ if(!matcher.find()) {
+ ObjectError error = new ObjectError("customerEmailAddress",messages.getMessage("Email.customer.EmailAddress", locale));
+ result.addError(error);
+ }
+ }else{
+ ObjectError error = new ObjectError("customerEmailAddress",messages.getMessage("NotEmpty.customer.EmailAddress", locale));
+ result.addError(error);
+ }
+
+
+
+ if( StringUtils.isBlank(customer.getBilling().getFirstName() ) ){
+ ObjectError error = new ObjectError("billingFirstName", messages.getMessage("NotEmpty.customer.billingFirstName", locale));
+ result.addError(error);
+ }
+
+ if( StringUtils.isBlank(customer.getBilling().getLastName() ) ){
+ ObjectError error = new ObjectError("billingLastName", messages.getMessage("NotEmpty.customer.billingLastName", locale));
+ result.addError(error);
+ }
+
+ if( StringUtils.isBlank(customer.getBilling().getAddress() ) ){
+ ObjectError error = new ObjectError("billingAddress", messages.getMessage("NotEmpty.customer.billingStreetAddress", locale));
+ result.addError(error);
+ }
+
+ if( StringUtils.isBlank(customer.getBilling().getCity() ) ){
+ ObjectError error = new ObjectError("billingCity",messages.getMessage("NotEmpty.customer.billingCity", locale));
+ result.addError(error);
+ }
+
+ if( customer.getShowBillingStateList().equalsIgnoreCase("yes" ) && customer.getBilling().getZone().getCode() == null ){
+ ObjectError error = new ObjectError("billingState",messages.getMessage("NotEmpty.customer.billingState", locale));
+ result.addError(error);
+
+ }else if( customer.getShowBillingStateList().equalsIgnoreCase("no" ) && customer.getBilling().getState() == null ){
+ ObjectError error = new ObjectError("billingState",messages.getMessage("NotEmpty.customer.billingState", locale));
+ result.addError(error);
+
+ }
+
+ if( StringUtils.isBlank(customer.getBilling().getPostalCode() ) ){
+ ObjectError error = new ObjectError("billingPostalCode", messages.getMessage("NotEmpty.customer.billingPostCode", locale));
+ result.addError(error);
+ }
+
+ //check if error from the @valid
+ if (result.hasErrors()) {
+ model.addAttribute("countries", countries);
+ return "admin-customer";
+ }
+
+ Customer newCustomer = new Customer();
+
+ if( customer.getId()!=null && customer.getId().longValue()>0 ) {
+ newCustomer = customerService.getById( customer.getId() );
+
+ if(newCustomer==null) {
+ return "redirect:/admin/customers/list.html";
+ }
+
+ if(newCustomer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/customers/list.html";
+ }
+
+
+
+ }else{
+ // new customer set marchant_Id
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ newCustomer.setMerchantStore(merchantStore);
+ }
+
+
+ newCustomer.setEmailAddress(customer.getEmailAddress() );
+
+ //get Customer country/zone
+ Country deliveryCountry = countryService.getByCode( customer.getDelivery().getCountry().getIsoCode());
+ Country billingCountry = countryService.getByCode( customer.getBilling().getCountry().getIsoCode()) ;
+
+ Zone deliveryZone = customer.getDelivery().getZone();
+ Zone billingZone = customer.getBilling().getZone();
+
+
+
+ if (customer.getShowDeliveryStateList().equalsIgnoreCase("yes" )) {
+ deliveryZone = zoneService.getByCode(customer.getDelivery().getZone().getCode());
+ customer.getDelivery().setState( null );
+
+ }else if (customer.getShowDeliveryStateList().equalsIgnoreCase("no" )){
+ deliveryZone = null ;
+ customer.getDelivery().setState( customer.getDelivery().getState() );
+ }
+
+ if (customer.getShowBillingStateList().equalsIgnoreCase("yes" )) {
+ billingZone = zoneService.getByCode(customer.getBilling().getZone().getCode());
+ customer.getBilling().setState( null );
+
+ }else if (customer.getShowBillingStateList().equalsIgnoreCase("no" )){
+ billingZone = null ;
+ customer.getBilling().setState( customer.getBilling().getState() );
+ }
+
+
+
+ newCustomer.setDefaultLanguage(customer.getDefaultLanguage() );
+
+ customer.getDelivery().setZone( deliveryZone);
+ customer.getDelivery().setCountry(deliveryCountry );
+ newCustomer.setDelivery( customer.getDelivery() );
+
+ customer.getBilling().setZone( billingZone);
+ customer.getBilling().setCountry(billingCountry );
+ newCustomer.setBilling( customer.getBilling() );
+
+ customerService.saveOrUpdate(newCustomer);
+
+ model.addAttribute("customer", newCustomer);
+ model.addAttribute("countries", countries);
+ model.addAttribute("success","success");
+
+ return "admin-customer";
+
+ }
+
+ /**
+ * Deserves shop and admin
+ * @param request
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value={"/admin/customers/attributes/save.html"}, method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String saveCustomerAttributes(HttpServletRequest request, Locale locale) throws Exception {
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //1=1&2=on&3=eeee&4=on&customer=1
+
+ @SuppressWarnings("rawtypes")
+ Enumeration parameterNames = request.getParameterNames();
+
+ Customer customer = null;
+
+ while(parameterNames.hasMoreElements()) {
+
+ String parameterName = (String)parameterNames.nextElement();
+ String parameterValue = request.getParameter(parameterName);
+ if(CUSTOMER_ID_PARAMETER.equals(parameterName)) {
+ customer = customerService.getById(new Long(parameterValue));
+ break;
+ }
+ }
+
+ if(customer==null) {
+ LOGGER.error("Customer id [customer] is not defined in the parameters");
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(customer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ LOGGER.error("Customer id does not belong to current store");
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ List<CustomerAttribute> customerAttributes = customerAttributeService.getByCustomer(store, customer);
+ Map<Long,CustomerAttribute> customerAttributesMap = new HashMap<Long,CustomerAttribute>();
+
+ for(CustomerAttribute attr : customerAttributes) {
+ customerAttributesMap.put(attr.getCustomerOption().getId(), attr);
+ }
+
+ parameterNames = request.getParameterNames();
+
+ while(parameterNames.hasMoreElements()) {
+
+ String parameterName = (String)parameterNames.nextElement();
+ String parameterValue = request.getParameter(parameterName);
+ try {
+
+ String[] parameterKey = parameterName.split("-");
+ com.salesmanager.core.business.customer.model.attribute.CustomerOption customerOption = null;
+ com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue customerOptionValue = null;
+
+
+ if(CUSTOMER_ID_PARAMETER.equals(parameterName)) {
+ continue;
+ }
+
+ if(parameterKey.length>1) {
+ //parse key - value
+ String key = parameterKey[0];
+ String value = parameterKey[1];
+ //should be on
+ customerOption = customerOptionService.getById(new Long(key));
+ customerOptionValue = customerOptionValueService.getById(new Long(value));
+
+
+
+ } else {
+ customerOption = customerOptionService.getById(new Long(parameterName));
+ customerOptionValue = customerOptionValueService.getById(new Long(parameterValue));
+
+ }
+
+ //get the attribute
+ //CustomerAttribute attribute = customerAttributeService.getByCustomerOptionId(store, customer.getId(), customerOption.getId());
+ CustomerAttribute attribute = customerAttributesMap.get(customerOption.getId());
+ if(attribute==null) {
+ attribute = new CustomerAttribute();
+ attribute.setCustomer(customer);
+ attribute.setCustomerOption(customerOption);
+ } else {
+ customerAttributes.remove(attribute);
+ }
+
+ if(customerOption.getCustomerOptionType().equals(CustomerOptionType.Text.name())) {
+ if(!StringUtils.isBlank(parameterValue)) {
+ attribute.setCustomerOptionValue(customerOptionValue);
+ attribute.setTextValue(parameterValue);
+ } else {
+ attribute.setTextValue(null);
+ }
+ } else {
+ attribute.setCustomerOptionValue(customerOptionValue);
+ }
+
+
+ if(attribute.getId()!=null && attribute.getId().longValue()>0) {
+ if(attribute.getCustomerOptionValue()==null){
+ customerAttributeService.delete(attribute);
+ } else {
+ customerAttributeService.update(attribute);
+ }
+ } else {
+ customerAttributeService.save(attribute);
+ }
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot get parameter information " + parameterName,e);
+ }
+
+ }
+
+ //and now the remaining to be removed
+ for(CustomerAttribute attr : customerAttributes) {
+ customerAttributeService.delete(attr);
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+ return resp.toJSONString();
+
+
+ }
+
+
+
+ /**
+ * List of customers
+ * @param model
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value="/admin/customers/list.html", method=RequestMethod.GET)
+ public String displayCustomers(Model model,HttpServletRequest request) throws Exception {
+
+
+ this.setMenu(model, request);
+
+ return "admin-customers";
+
+
+
+ }
+
+
+
+ @SuppressWarnings("unchecked")
+ @RequestMapping(value="/admin/customers/page.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody
+ String pageCustomers(HttpServletRequest request,HttpServletResponse response) {
+
+
+ AjaxPageableResponse resp = new AjaxPageableResponse();
+
+ //Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ try {
+
+
+
+ //Map<String,Country> countriesMap = countryService.getCountriesMap(language);
+
+
+ int startRow = Integer.parseInt(request.getParameter("_startRow"));
+ int endRow = Integer.parseInt(request.getParameter("_endRow"));
+ String email = request.getParameter("email");
+ String name = request.getParameter("name");
+ String firstName = request.getParameter("firstName");
+ String lastName = request.getParameter("lastName");
+ String country = request.getParameter("country");
+
+
+ CustomerCriteria criteria = new CustomerCriteria();
+ criteria.setStartIndex(startRow);
+ criteria.setMaxCount(endRow);
+
+ if(!StringUtils.isBlank(email)) {
+ criteria.setEmail(email);
+ }
+
+ if(!StringUtils.isBlank(name)) {
+ criteria.setName(name);
+ }
+
+ if(!StringUtils.isBlank(country)) {
+ criteria.setCountry(country);
+ }
+
+ if(!StringUtils.isBlank(firstName)) {
+ criteria.setFirstName(firstName);
+ }
+
+ if(!StringUtils.isBlank(lastName)) {
+ criteria.setLastName(lastName);
+ }
+
+
+ CustomerList customerList = customerService.listByStore(store,criteria);
+
+ if(customerList.getCustomers()!=null) {
+
+ for(Customer customer : customerList.getCustomers()) {
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("id", customer.getId());
+ entry.put("firstName", customer.getBilling().getFirstName());
+ entry.put("lastName", customer.getBilling().getLastName());
+ entry.put("email", customer.getEmailAddress());
+ entry.put("country", customer.getBilling().getCountry().getIsoCode());
+ resp.addDataEntry(entry);
+
+ }
+
+ }
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging orders", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+
+ }
+
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/resetPassword.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody
+ String resetPassword(HttpServletRequest request,HttpServletResponse response) {
+
+ String customerId = request.getParameter("customerId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ AjaxResponse resp = new AjaxResponse();
+
+
+
+ try {
+
+ Long id = Long.parseLong(customerId);
+
+ Customer customer = customerService.getById(id);
+
+ if(customer==null) {
+ resp.setErrorString("Customer does not exist");
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(customer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setErrorString("Invalid customer id");
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ Language userLanguage = customer.getDefaultLanguage();
+
+ Locale customerLocale = LocaleUtils.getLocale(userLanguage);
+
+ String password = UserReset.generateRandomString();
+ String encodedPassword = passwordEncoder.encodePassword(password, null);
+
+ customer.setPassword(encodedPassword);
+
+ customerService.saveOrUpdate(customer);
+
+ //send email
+
+ try {
+
+ //creation of a user, send an email
+ String[] storeEmail = {store.getStoreEmailAddress()};
+
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(request.getContextPath(), store, messages, customerLocale);
+ templateTokens.put(EmailConstants.LABEL_HI, messages.getMessage("label.generic.hi", customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_FIRSTNAME, customer.getBilling().getFirstName());
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_LASTNAME, customer.getBilling().getLastName());
+ templateTokens.put(EmailConstants.EMAIL_RESET_PASSWORD_TXT, messages.getMessage("email.customer.resetpassword.text", customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_CONTACT_OWNER, messages.getMessage("email.contactowner", storeEmail, customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_PASSWORD_LABEL, messages.getMessage("label.generic.password",customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_PASSWORD, password);
+
+
+ Email email = new Email();
+ email.setFrom(store.getStorename());
+ email.setFromEmail(store.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("label.generic.changepassword",customerLocale));
+ email.setTo(customer.getEmailAddress());
+ email.setTemplateName(RESET_PASSWORD_TPL);
+ email.setTemplateTokens(templateTokens);
+
+
+
+ emailService.sendHtmlEmail(store, email);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot send email to user",e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("An exception occured while changing password",e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+
+ return resp.toJSONString();
+
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("customer", "customer");
+ activeMenus.put("customer-list", "customer-list");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("customer");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+
+
+ //
+
+ }
+
+/* private void setMenuCreate(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("customer", "customer");
+ activeMenus.put("customer-create", "customer-create");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("customer");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+
+
+ //
+
+ }*/
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsController.java
new file mode 100644
index 0000000..6fb6b83
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsController.java
@@ -0,0 +1,342 @@
+package com.salesmanager.web.admin.controller.customers;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.customer.model.attribute.CustomerOption;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionDescription;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class CustomerOptionsController {
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private CustomerOptionService customerOptionService;
+
+ @Autowired
+ private LabelUtils messages;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomerOptionsController.class);
+
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/list.html", method=RequestMethod.GET)
+ public String displayOptions(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+ return ControllerConstants.Tiles.Customer.optionsList;
+
+
+ }
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/edit.html", method=RequestMethod.GET)
+ public String displayOptionEdit(@RequestParam("id") long id, HttpServletRequest request, HttpServletResponse response, Model model, Locale locale) throws Exception {
+ return displayOption(id,request,response,model,locale);
+ }
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/create.html", method=RequestMethod.GET)
+ public String displayOptionCreate(HttpServletRequest request, HttpServletResponse response, Model model, Locale locale) throws Exception {
+ return displayOption(null,request,response,model,locale);
+ }
+
+ private String displayOption(Long optionId, HttpServletRequest request, HttpServletResponse response,Model model,Locale locale) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Language> languages = store.getLanguages();
+
+ Set<CustomerOptionDescription> descriptions = new HashSet<CustomerOptionDescription>();
+
+ CustomerOption option = new CustomerOption();
+
+ if(optionId!=null && optionId!=0) {//edit mode
+
+
+ option = customerOptionService.getById(optionId);
+
+
+ if(option==null) {
+ return "redirect:/admin/customers/options/list.html";
+ }
+
+ if(option.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/customers/options/list.html";
+ }
+
+ Set<CustomerOptionDescription> optionDescriptions = option.getDescriptions();
+
+
+
+ for(Language l : languages) {
+
+ CustomerOptionDescription optionDescription = null;
+
+ if(optionDescriptions!=null) {
+
+ for(CustomerOptionDescription description : optionDescriptions) {
+
+ String code = description.getLanguage().getCode();
+ if(code.equals(l.getCode())) {
+ optionDescription = description;
+ }
+ }
+
+ }
+
+ if(optionDescription==null) {
+ optionDescription = new CustomerOptionDescription();
+ optionDescription.setLanguage(l);
+ }
+ descriptions.add(optionDescription);
+ }
+
+ } else {
+ for(Language l : languages) {
+ CustomerOptionDescription desc = new CustomerOptionDescription();
+ desc.setLanguage(l);
+ descriptions.add(desc);
+ }
+ }
+
+
+ option.setDescriptions(descriptions);
+ model.addAttribute("option", option);
+ return ControllerConstants.Tiles.Customer.optionDetails;
+
+
+ }
+
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/save.html", method=RequestMethod.POST)
+ public String saveOption(@Valid @ModelAttribute("option") CustomerOption option, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ CustomerOption dbEntity = null;
+
+ if(option.getId() != null && option.getId() >0) { //edit entry
+
+ //get from DB
+ dbEntity = customerOptionService.getById(option.getId());
+
+ if(dbEntity==null) {
+ return "redirect:/admin/options/options.html";
+ }
+ }
+
+ //validate if it contains an existing code
+ CustomerOption byCode = customerOptionService.getByCode(store, option.getCode());
+ if(byCode!=null && option.getId()==null) {
+ ObjectError error = new ObjectError("code",messages.getMessage("message.code.exist", locale));
+ result.addError(error);
+ }
+
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+
+ List<CustomerOptionDescription> descriptions = option.getDescriptionsList();
+
+ if(descriptions!=null) {
+
+ for(CustomerOptionDescription description : descriptions) {
+
+ if(StringUtils.isBlank(description.getName())) {
+ ObjectError error = new ObjectError("name",messages.getMessage("message.name.required", locale));
+ result.addError(error);
+ } else {
+
+ String code = description.getLanguage().getCode();
+ Language l = langs.get(code);
+ description.setLanguage(l);
+ description.setCustomerOption(option);
+
+ }
+
+ }
+
+ }
+
+ option.setDescriptions(new HashSet<CustomerOptionDescription>(descriptions));
+ option.setMerchantStore(store);
+
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.Customer.optionDetails;
+ }
+
+
+
+
+ customerOptionService.saveOrUpdate(option);
+
+
+
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Customer.optionDetails;
+ }
+
+
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageOptions(HttpServletRequest request, HttpServletResponse response) {
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<CustomerOption> options = null;
+
+
+
+ options = customerOptionService.listByStore(store, language);
+
+
+
+
+
+ for(CustomerOption option : options) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("id", option.getId());
+
+ CustomerOptionDescription description = option.getDescriptions().iterator().next();
+
+ entry.put("name", description.getName());
+ entry.put("type", option.getCustomerOptionType());
+ entry.put("active", option.isActive());
+ entry.put("public", option.isPublicOption());
+ resp.addDataEntry(entry);
+
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging options", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+
+ }
+
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("customer", "customer");
+ activeMenus.put("customer-options", "customer-options");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("customer");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteOption(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sid = request.getParameter("id");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long id = Long.parseLong(sid);
+
+ CustomerOption entity = customerOptionService.getById(id);
+
+ if(entity==null || entity.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+
+ } else {
+
+ customerOptionService.delete(entity);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting option", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsSetController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsSetController.java
new file mode 100644
index 0000000..6239edb
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsSetController.java
@@ -0,0 +1,367 @@
+package com.salesmanager.web.admin.controller.customers;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.codehaus.jackson.map.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.customer.model.attribute.CustomerOption;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionDescription;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionSet;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionValueDescription;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionSetService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionValueService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class CustomerOptionsSetController {
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private CustomerOptionSetService customerOptionSetService;
+
+ @Autowired
+ private CustomerOptionService customerOptionService;
+
+ @Autowired
+ private CustomerOptionValueService customerOptionValueService;
+
+ @Autowired
+ private LabelUtils messages;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomerOptionsSetController.class);
+
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/optionsset/list.html", method=RequestMethod.GET)
+ public String displayOptions(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ Language language = languageService.toLanguage(locale);
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ //get options
+ List<CustomerOption> options = customerOptionService.listByStore(store, language);
+
+
+ //get values
+ List<CustomerOptionValue> optionsValues = customerOptionValueService.listByStore(store, language);
+
+
+ CustomerOptionSet optionSet = new CustomerOptionSet();
+
+ model.addAttribute("optionSet", optionSet);
+ model.addAttribute("options", options);
+ model.addAttribute("optionsValues", optionsValues);
+ return ControllerConstants.Tiles.Customer.optionsSet;
+
+
+ }
+
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/optionsset/save.html", method=RequestMethod.POST)
+ public String saveOptionSet(@Valid @ModelAttribute("optionSet") CustomerOptionSet optionSet, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+ Language language = languageService.toLanguage(locale);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ /** reference objects **/
+
+ //get options
+ List<CustomerOption> options = customerOptionService.listByStore(store, language);
+
+
+ //get values
+ List<CustomerOptionValue> optionsValues = customerOptionValueService.listByStore(store, language);
+
+
+ model.addAttribute("options", options);
+ model.addAttribute("optionsValues", optionsValues);
+
+ if(optionSet.getCustomerOption()==null || optionSet.getCustomerOptionValue()==null) {
+ model.addAttribute("errorMessageAssociation",messages.getMessage("message.optionset.noassociation", locale));
+ ObjectError error = new ObjectError("customerOptionValue.id",messages.getMessage("message.optionset.noassociation", locale));
+ result.addError(error);
+ return ControllerConstants.Tiles.Customer.optionsSet;
+ }
+
+ //see if association already exist
+ CustomerOption option = null;
+
+ //get from DB
+ //option = customerOptionService.getById(optionSet.getPk().getCustomerOption().getId());
+ option = customerOptionService.getById(optionSet.getCustomerOption().getId());
+
+ if(option==null) {
+ return "redirect:/admin/customers/optionsset/list.html";
+ }
+
+ //CustomerOptionValue optionValue = customerOptionValueService.getById(optionSet.getPk().getCustomerOptionValue().getId());
+ CustomerOptionValue optionValue = customerOptionValueService.getById(optionSet.getCustomerOptionValue().getId());
+
+ if(optionValue==null) {
+ return "redirect:/admin/customers/optionsset/list.html";
+ }
+
+
+ List<CustomerOptionSet> optionsSet = customerOptionSetService.listByStore(store, language);
+
+ if(optionsSet!=null && optionsSet.size()>0) {
+
+ for(CustomerOptionSet optSet : optionsSet) {
+
+ //CustomerOption opt = optSet.getPk().getCustomerOption();
+ CustomerOption opt = optSet.getCustomerOption();
+ //CustomerOptionValue optValue = optSet.getPk().getCustomerOptionValue();
+ CustomerOptionValue optValue = optSet.getCustomerOptionValue();
+
+ //if(opt.getId().longValue()==optionSet.getPk().getCustomerOption().getId().longValue()
+ if(opt.getId().longValue()==optionSet.getCustomerOption().getId().longValue()
+ //&& optValue.getId().longValue() == optionSet.getPk().getCustomerOptionValue().getId().longValue()) {
+ && optValue.getId().longValue() == optionSet.getCustomerOptionValue().getId().longValue()) {
+ model.addAttribute("errorMessageAssociation",messages.getMessage("message.optionset.optionassociationexists", locale));
+ ObjectError error = new ObjectError("customerOptionValue.id",messages.getMessage("message.optionset.optionassociationexists", locale));
+ result.addError(error);
+ break;
+ }
+ }
+ }
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.Customer.optionsSet;
+ }
+
+
+ //optionSet.getPk().setCustomerOption(option);
+ optionSet.setCustomerOption(option);
+ //optionSet.getPk().setCustomerOptionValue(optionValue);
+ optionSet.setCustomerOptionValue(optionValue);
+ customerOptionSetService.create(optionSet);
+
+
+
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Customer.optionsSet;
+ }
+
+
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/optionsset/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageOptionsSet(HttpServletRequest request, HttpServletResponse response) {
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ //List<CustomerOption> options = null;
+
+ List<CustomerOptionSet> optionSet = customerOptionSetService.listByStore(store, language);
+ //for(CustomerOption option : options) {
+
+
+ //Set<CustomerOptionSet> optionSet = option.getCustomerOptions();
+
+ if(optionSet!=null && optionSet.size()>0) {
+
+ for(CustomerOptionSet optSet : optionSet) {
+
+ //CustomerOption customerOption = optSet.getPk().getCustomerOption();
+ CustomerOption customerOption = optSet.getCustomerOption();
+ //CustomerOptionValue customerOptionValue = optSet.getPk().getCustomerOptionValue();
+ CustomerOptionValue customerOptionValue = optSet.getCustomerOptionValue();
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+
+
+ entry.put("id", optSet.getId());
+
+ CustomerOptionDescription description = customerOption.getDescriptionsSettoList().get(0);
+ CustomerOptionValueDescription valueDescription = customerOptionValue.getDescriptionsSettoList().get(0);
+
+ entry.put("optionCode", customerOption.getCode());
+ entry.put("optionName", description.getName());
+ entry.put("optionValueCode", customerOptionValue.getCode());
+ entry.put("optionValueName", valueDescription.getName());
+ entry.put("order", customerOptionValue.getSortOrder());
+ resp.addDataEntry(entry);
+
+ }
+
+ }
+
+
+ //}
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging options", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+
+ }
+
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("customer", "customer");
+ activeMenus.put("customer-options", "customer-options");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("customer");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/optionsset/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteOptionSet(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sid = request.getParameter("id");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+
+ Long optionSetId = Long.parseLong(sid);
+
+
+ CustomerOptionSet entity = customerOptionSetService.getById(optionSetId);
+ //if(entity==null || entity.getPk().getCustomerOption().getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ if(entity==null || entity.getCustomerOption().getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+
+ } else {
+
+ customerOptionSetService.delete(entity);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting option", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/optionsset/update.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String updateOrder(HttpServletRequest request, HttpServletResponse response) {
+ String values = request.getParameter("_oldValues");
+ String order = request.getParameter("order");
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ /**
+ * Values
+ */
+ ObjectMapper mapper = new ObjectMapper();
+ @SuppressWarnings("rawtypes")
+ Map conf = mapper.readValue(values, Map.class);
+
+ String sid = (String)conf.get("id");
+
+ Long optionId = Long.parseLong(sid);
+
+ CustomerOptionSet entity = customerOptionSetService.getById(optionId);
+
+
+ if(entity!=null) {
+
+ entity.setSortOrder(Integer.parseInt(order));
+ customerOptionSetService.update(entity);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging shipping countries", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsValueController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsValueController.java
new file mode 100644
index 0000000..b6fc8d0
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/customers/CustomerOptionsValueController.java
@@ -0,0 +1,350 @@
+package com.salesmanager.web.admin.controller.customers;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionValueDescription;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionValueService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class CustomerOptionsValueController {
+
+ @Autowired
+ LanguageService languageService;
+
+
+ @Autowired
+ private CustomerOptionValueService customerOptionValueService;
+
+ @Autowired
+ LabelUtils messages;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomerOptionsValueController.class);
+
+ /**
+ * Displays the list of customer options values
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/values/list.html", method=RequestMethod.GET)
+ public String displayOptionValues(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+ return ControllerConstants.Tiles.Customer.optionsValuesList;
+
+
+
+ }
+
+ /**
+ * Display an option value in edit mode
+ * @param id
+ * @param request
+ * @param response
+ * @param model
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/values/edit.html", method=RequestMethod.GET)
+ public String displayOptionValueEdit(@RequestParam("id") long id, HttpServletRequest request, HttpServletResponse response, Model model, Locale locale) throws Exception {
+ return displayOption(id,request,response,model,locale);
+ }
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/values/create.html", method=RequestMethod.GET)
+ public String displayOptionValueCreate(HttpServletRequest request, HttpServletResponse response, Model model, Locale locale) throws Exception {
+ return displayOption(null,request,response,model,locale);
+ }
+
+ private String displayOption(Long id, HttpServletRequest request, HttpServletResponse response,Model model,Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Language> languages = store.getLanguages();
+
+ Set<CustomerOptionValueDescription> descriptions = new HashSet<CustomerOptionValueDescription>();
+ CustomerOptionValue option = new CustomerOptionValue();
+
+ if(id!=null && id!=0) {//edit mode
+
+
+ option = customerOptionValueService.getById(id);
+
+
+ if(option==null) {
+ return "redirect:/admin/customers/options/values/list.html";
+ }
+
+ if(option.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/customers/options/values/list.html";
+ }
+
+ Set<CustomerOptionValueDescription> optionDescriptions = option.getDescriptions();
+
+ for(Language l : languages) {
+
+ CustomerOptionValueDescription optionDescription = null;
+
+ if(optionDescriptions!=null) {
+ for(CustomerOptionValueDescription description : optionDescriptions) {
+ String code = description.getLanguage().getCode();
+ if(code.equals(l.getCode())) {
+ optionDescription = description;
+ }
+ }
+ }
+
+ if(optionDescription==null) {
+ optionDescription = new CustomerOptionValueDescription();
+ optionDescription.setLanguage(l);
+ }
+
+ descriptions.add(optionDescription);
+ }
+
+ } else {
+
+ for(Language l : languages) {
+ CustomerOptionValueDescription desc = new CustomerOptionValueDescription();
+ desc.setLanguage(l);
+ descriptions.add(desc);
+ }
+
+ option.setDescriptions(descriptions);
+ }
+
+
+
+ model.addAttribute("optionValue", option);
+ return ControllerConstants.Tiles.Customer.optionsValueDetails;
+
+
+ }
+
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/values/save.html", method=RequestMethod.POST)
+ public String saveOption(@Valid @ModelAttribute("optionValue") CustomerOptionValue optionValue, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ CustomerOptionValue dbEntity = null;
+
+ if(optionValue.getId() != null && optionValue.getId() >0) { //edit entry
+
+ //get from DB
+ dbEntity = customerOptionValueService.getById(optionValue.getId());
+
+ if(dbEntity==null) {
+ return "redirect:/admin/customers/options/values/list.html";
+ }
+
+ if(dbEntity.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/customers/options/values/list.html";
+ }
+ }
+
+ //validate if it contains an existing code
+ CustomerOptionValue byCode = customerOptionValueService.getByCode(store, optionValue.getCode());
+ if(byCode!=null && optionValue.getId()==null) {
+ ObjectError error = new ObjectError("code",messages.getMessage("message.code.exist", locale));
+ result.addError(error);
+ }
+
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+
+ List<CustomerOptionValueDescription> descriptions = optionValue.getDescriptionsList();
+ if(descriptions!=null && descriptions.size()>0) {
+
+ Set<CustomerOptionValueDescription> descs = new HashSet<CustomerOptionValueDescription>();
+ optionValue.setDescriptions(descs);
+ for(CustomerOptionValueDescription description : descriptions) {
+
+ if(StringUtils.isBlank(description.getName())) {
+ ObjectError error = new ObjectError("name",messages.getMessage("message.name.required", locale));
+ result.addError(error);
+ } else {
+ String code = description.getLanguage().getCode();
+ Language l = langs.get(code);
+ description.setLanguage(l);
+ description.setCustomerOptionValue(optionValue);
+ descs.add(description);
+ }
+ }
+
+ } else {
+
+ ObjectError error = new ObjectError("name",messages.getMessage("message.name.required", locale));
+ result.addError(error);
+
+ }
+
+
+ optionValue.setMerchantStore(store);
+
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.Customer.optionsValueDetails;
+ }
+
+
+ customerOptionValueService.saveOrUpdate(optionValue);
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Customer.optionsValueDetails;
+ }
+
+
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/values/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageOptions(HttpServletRequest request, HttpServletResponse response) {
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<CustomerOptionValue> options = null;
+
+
+ options = customerOptionValueService.listByStore(store, language);
+
+ for(CustomerOptionValue option : options) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("id", option.getId());
+ entry.put("code", option.getCode());
+ CustomerOptionValueDescription description = option.getDescriptions().iterator().next();
+
+ entry.put("name", description.getName());
+ resp.addDataEntry(entry);
+
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging options", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+
+ }
+
+ @PreAuthorize("hasRole('CUSTOMER')")
+ @RequestMapping(value="/admin/customers/options/values/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteOptionValue(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sid = request.getParameter("id");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long id = Long.parseLong(sid);
+
+ CustomerOptionValue entity = customerOptionValueService.getById(id);
+
+ if(entity==null || entity.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ } else {
+ customerOptionValueService.delete(entity);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting option", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("customer", "customer");
+ activeMenus.put("customer-options", "customer-options");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("customer");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/MerchantStoreController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/MerchantStoreController.java
new file mode 100644
index 0000000..05afaf1
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/MerchantStoreController.java
@@ -0,0 +1,479 @@
+package com.salesmanager.web.admin.controller.merchant;
+
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.currency.model.Currency;
+import com.salesmanager.core.business.reference.currency.service.CurrencyService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.business.user.model.User;
+import com.salesmanager.core.business.user.service.UserService;
+import com.salesmanager.core.modules.email.Email;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.reference.Size;
+import com.salesmanager.web.admin.entity.reference.Weight;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.constants.EmailConstants;
+import com.salesmanager.web.utils.DateUtil;
+import com.salesmanager.web.utils.EmailUtils;
+import com.salesmanager.web.utils.FilePathUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+import com.salesmanager.web.utils.UserUtils;
+
+@Controller
+public class MerchantStoreController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(MerchantStoreController.class);
+
+ @Autowired
+ MerchantStoreService merchantStoreService;
+
+ @Autowired
+ CountryService countryService;
+
+ @Autowired
+ ZoneService zoneService;
+
+ @Autowired
+ LanguageService languageService;
+
+ @Autowired
+ CurrencyService currencyService;
+
+ @Autowired
+ UserService userService;
+
+ @Autowired
+ LabelUtils messages;
+
+ @Autowired
+ EmailService emailService;
+
+ private final static String NEW_STORE_TMPL = "email_template_new_store.ftl";
+
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value="/admin/store/list.html", method=RequestMethod.GET)
+ public String displayStores(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ setMenu(model,request);
+ return ControllerConstants.Tiles.Store.stores;
+ }
+
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value = "/admin/store/paging.html", method = RequestMethod.POST, produces = "application/json")
+ public @ResponseBody
+ String pageStores(HttpServletRequest request,
+ HttpServletResponse response) {
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ List<MerchantStore> stores = merchantStoreService.list();
+
+ for (MerchantStore store : stores) {
+
+ if(!store.getCode().equals(MerchantStore.DEFAULT_STORE)){
+ Map<String,String> entry = new HashMap<String,String> ();
+ entry.put("storeId", String.valueOf(store.getId()));
+ entry.put("code", store.getCode());
+ entry.put("name", store.getStorename());
+ entry.put("email", store.getStoreEmailAddress());
+ resp.addDataEntry(entry);
+ }
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/storeCreate.html", method=RequestMethod.GET)
+ public String displayMerchantStoreCreate(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+
+ setMenu(model,request);
+
+ MerchantStore store = new MerchantStore();
+
+ MerchantStore sessionStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ store.setCurrency(sessionStore.getCurrency());
+ store.setCountry(sessionStore.getCountry());
+ store.setZone(sessionStore.getZone());
+ store.setStorestateprovince(sessionStore.getStorestateprovince());
+ store.setLanguages(sessionStore.getLanguages());
+ store.setDomainName(sessionStore.getDomainName());
+
+
+ return displayMerchantStore(store, model, request, response, locale);
+ }
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/store.html", method=RequestMethod.GET)
+ public String displayMerchantStore(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ return displayMerchantStore(store, model, request, response, locale);
+ }
+
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/editStore.html", method=RequestMethod.GET)
+ public String displayMerchantStore(@ModelAttribute("id") Integer id, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ setMenu(model,request);
+ MerchantStore store = merchantStoreService.getById(id);
+ return displayMerchantStore(store, model, request, response, locale);
+ }
+
+ private String displayMerchantStore(MerchantStore store, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ setMenu(model,request);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ List<Language> languages = languageService.getLanguages();
+ List<Currency> currencies = currencyService.list();
+ Date dt = store.getInBusinessSince();
+ if(dt!=null) {
+ store.setDateBusinessSince(DateUtil.formatDate(dt));
+ } else {
+ store.setDateBusinessSince(DateUtil.formatDate(new Date()));
+ }
+
+ //get countries
+ List<Country> countries = countryService.getCountries(language);
+
+ List<Weight> weights = new ArrayList<Weight>();
+ weights.add(new Weight("LB",messages.getMessage("label.generic.weightunit.LB", locale)));
+ weights.add(new Weight("KG",messages.getMessage("label.generic.weightunit.KG", locale)));
+
+ List<Size> sizes = new ArrayList<Size>();
+ sizes.add(new Size("CM",messages.getMessage("label.generic.sizeunit.CM", locale)));
+ sizes.add(new Size("IN",messages.getMessage("label.generic.sizeunit.IN", locale)));
+
+ //display menu
+
+ model.addAttribute("countries", countries);
+ model.addAttribute("languages",languages);
+ model.addAttribute("currencies",currencies);
+
+ model.addAttribute("weights",weights);
+ model.addAttribute("sizes",sizes);
+ model.addAttribute("store", store);
+
+
+ return "admin-store";
+
+
+ }
+
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/save.html", method=RequestMethod.POST)
+ public String saveMerchantStore(@Valid @ModelAttribute("store") MerchantStore store, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ setMenu(model,request);
+ MerchantStore sessionStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ if(store.getId()!=null) {
+ if(store.getId().intValue() != sessionStore.getId().intValue()) {
+ return "redirect:/admin/store/store.html";
+ }
+ }
+
+ Date date = new Date();
+ if(!StringUtils.isBlank(store.getDateBusinessSince())) {
+ try {
+ date = DateUtil.getDate(store.getDateBusinessSince());
+ store.setInBusinessSince(date);
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("dateBusinessSince",messages.getMessage("message.invalid.date", locale));
+ result.addError(error);
+ }
+ }
+
+ List<Currency> currencies = currencyService.list();
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ List<Language> languages = languageService.getLanguages();
+
+ //get countries
+ List<Country> countries = countryService.getCountries(language);
+
+ List<Weight> weights = new ArrayList<Weight>();
+ weights.add(new Weight("LB",messages.getMessage("label.generic.weightunit.LB", locale)));
+ weights.add(new Weight("KG",messages.getMessage("label.generic.weightunit.KG", locale)));
+
+ List<Size> sizes = new ArrayList<Size>();
+ sizes.add(new Size("CM",messages.getMessage("label.generic.sizeunit.CM", locale)));
+ sizes.add(new Size("IN",messages.getMessage("label.generic.sizeunit.IN", locale)));
+
+ model.addAttribute("weights",weights);
+ model.addAttribute("sizes",sizes);
+
+ model.addAttribute("countries", countries);
+ model.addAttribute("languages",languages);
+ model.addAttribute("currencies",currencies);
+
+
+ Country c = store.getCountry();
+ List<Zone> zonesList = zoneService.getZones(c, language);
+
+ if((zonesList==null || zonesList.size()==0) && StringUtils.isBlank(store.getStorestateprovince())) {
+
+ ObjectError error = new ObjectError("zone.code",messages.getMessage("merchant.zone.invalid", locale));
+ result.addError(error);
+
+ }
+
+ if (result.hasErrors()) {
+ return "admin-store";
+ }
+
+ //get country
+ Country country = store.getCountry();
+ country = countryService.getByCode(country.getIsoCode());
+ Zone zone = store.getZone();
+ if(zone!=null) {
+ zone = zoneService.getByCode(zone.getCode());
+ }
+ Currency currency = store.getCurrency();
+ currency = currencyService.getById(currency.getId());
+
+ List<Language> supportedLanguages = store.getLanguages();
+ List<Language> supportedLanguagesList = new ArrayList<Language>();
+ Map<String,Language> languagesMap = languageService.getLanguagesMap();
+ for(Language lang : supportedLanguages) {
+
+ Language l = languagesMap.get(lang.getCode());
+ if(l!=null) {
+ supportedLanguagesList.add(l);
+ }
+
+ }
+
+ Language defaultLanguage = store.getDefaultLanguage();
+ defaultLanguage = languageService.getById(defaultLanguage.getId());
+ if(defaultLanguage!=null) {
+ store.setDefaultLanguage(defaultLanguage);
+ }
+
+ Locale storeLocale = LocaleUtils.getLocale(defaultLanguage);
+
+ store.setStoreTemplate(sessionStore.getStoreTemplate());
+ store.setCountry(country);
+ store.setZone(zone);
+ store.setCurrency(currency);
+ store.setDefaultLanguage(defaultLanguage);
+ store.setLanguages(supportedLanguagesList);
+ store.setLanguages(supportedLanguagesList);
+
+
+ merchantStoreService.saveOrUpdate(store);
+
+ if(!store.getCode().equals(sessionStore.getCode())) {//create store
+ //send email
+
+ try {
+
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(request.getContextPath(), store, messages, storeLocale);
+ templateTokens.put(EmailConstants.EMAIL_NEW_STORE_TEXT, messages.getMessage("email.newstore.text", storeLocale));
+ templateTokens.put(EmailConstants.EMAIL_STORE_NAME, messages.getMessage("email.newstore.name",new String[]{store.getStorename()},storeLocale));
+ templateTokens.put(EmailConstants.EMAIL_ADMIN_STORE_INFO_LABEL, messages.getMessage("email.newstore.info",storeLocale));
+
+ templateTokens.put(EmailConstants.EMAIL_ADMIN_URL_LABEL, messages.getMessage("label.adminurl",storeLocale));
+ templateTokens.put(EmailConstants.EMAIL_ADMIN_URL, FilePathUtils.buildAdminUri(store, request));
+
+
+ Email email = new Email();
+ email.setFrom(store.getStorename());
+ email.setFromEmail(store.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("email.newstore.title",storeLocale));
+ email.setTo(store.getStoreEmailAddress());
+ email.setTemplateName(NEW_STORE_TMPL);
+ email.setTemplateTokens(templateTokens);
+
+
+
+ emailService.sendHtmlEmail(store, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot send email to user",e);
+ }
+
+ }
+
+ sessionStore = merchantStoreService.getMerchantStore(sessionStore.getCode());
+
+
+ //update session store
+ request.getSession().setAttribute(Constants.ADMIN_STORE, sessionStore);
+
+
+ model.addAttribute("success","success");
+ model.addAttribute("store", store);
+
+
+ return "admin-store";
+ }
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/store/checkStoreCode.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String checkStoreCode(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String code = request.getParameter("code");
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ if(StringUtils.isBlank(code)) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ MerchantStore store = merchantStoreService.getByCode(code);
+
+
+
+
+ if(store!=null) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while getting user", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value="/admin/store/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeMerchantStore(HttpServletRequest request, Locale locale) throws Exception {
+
+ String sMerchantStoreId = request.getParameter("storeId");
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Integer storeId = Integer.parseInt(sMerchantStoreId);
+ MerchantStore store = merchantStoreService.getById(storeId);
+
+ User user = userService.getByUserName(request.getRemoteUser());
+
+ /**
+ * In order to remove a Store the logged in ser must be SUPERADMIN
+ */
+
+ //check if the user removed has group SUPERADMIN
+ boolean isSuperAdmin = false;
+ if(UserUtils.userInGroup(user, Constants.GROUP_SUPERADMIN)) {
+ isSuperAdmin = true;
+ }
+
+
+ if(!isSuperAdmin) {
+ resp.setStatusMessage(messages.getMessage("message.security.caanotremovesuperadmin", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ merchantStoreService.delete(store);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product price", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("store", "store");
+ activeMenus.put("storeDetails", "storeDetails");
+
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("store");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/StoreBrandingController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/StoreBrandingController.java
new file mode 100644
index 0000000..490a1ea
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/StoreBrandingController.java
@@ -0,0 +1,193 @@
+package com.salesmanager.web.admin.controller.merchant;
+
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.content.model.InputContentFile;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.currency.service.CurrencyService;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.content.ContentFiles;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+@Controller
+public class StoreBrandingController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(StoreBrandingController.class);
+
+
+ @Autowired
+ MerchantStoreService merchantStoreService;
+
+ @Autowired
+ CountryService countryService;
+
+ @Autowired
+ ZoneService zoneService;
+
+ @Autowired
+ LanguageService languageService;
+
+ @Autowired
+ CurrencyService currencyService;
+
+ @Autowired
+ private ContentService contentService;
+
+
+ @Resource(name="templates")
+ List<String> templates;
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/storeBranding.html", method=RequestMethod.GET)
+ public String displayStoreBranding(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //display templates
+ model.addAttribute("templates", templates);
+
+ model.addAttribute("store", store);
+
+
+
+ return "admin-store-branding";
+ }
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/saveBranding.html", method=RequestMethod.POST)
+ public String saveStoreBranding(@ModelAttribute(value="contentImages") @Valid final ContentFiles contentImages, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ if(contentImages.getFile()!=null && contentImages.getFile().size()>0) {
+
+ String imageName = contentImages.getFile().get(0).getOriginalFilename();
+ InputStream inputStream = contentImages.getFile().get(0).getInputStream();
+ InputContentFile cmsContentImage = new InputContentFile();
+ cmsContentImage.setFileName(imageName);
+ cmsContentImage.setMimeType( contentImages.getFile().get(0).getContentType());
+ cmsContentImage.setFile( inputStream );
+ contentService.addLogo(store.getCode(), cmsContentImage);
+
+ //Update store
+ store.setStoreLogo(imageName);
+ merchantStoreService.update(store);
+ request.getSession().setAttribute(Constants.ADMIN_STORE, store);
+
+ }
+
+ //display templates
+ model.addAttribute("templates", templates);
+
+ model.addAttribute("success","success");
+ model.addAttribute("store", store);
+
+ return "admin-store-branding";
+ }
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/saveTemplate.html", method=RequestMethod.POST)
+ public String saveTemplate(@ModelAttribute(value="store") final MerchantStore store, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ MerchantStore sessionstore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ sessionstore.setStoreTemplate(store.getStoreTemplate());
+
+ merchantStoreService.saveOrUpdate(sessionstore);
+
+ request.setAttribute(Constants.ADMIN_STORE, sessionstore);
+
+ //display templates
+ model.addAttribute("templates", templates);
+
+ model.addAttribute("success","success");
+ model.addAttribute("store", sessionstore);
+
+ return "admin-store-branding";
+ }
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/removeImage.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeImage(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+
+ contentService.removeFile(store.getCode(), FileContentType.LOGO, store.getStoreLogo());
+
+ store.setStoreLogo(null);
+ merchantStoreService.update(store);
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("store", "store");
+ activeMenus.put("storeBranding", "storeBranding");
+
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("store");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/StoreLandingController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/StoreLandingController.java
new file mode 100755
index 0000000..25cc7cb
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/merchant/StoreLandingController.java
@@ -0,0 +1,238 @@
+package com.salesmanager.web.admin.controller.merchant;
+
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.content.model.Content;
+import com.salesmanager.core.business.content.model.ContentDescription;
+import com.salesmanager.core.business.content.model.ContentType;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.web.admin.entity.merchant.StoreLanding;
+import com.salesmanager.web.admin.entity.merchant.StoreLandingDescription;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+@Controller
+public class StoreLandingController {
+
+ @Autowired
+ MerchantStoreService merchantStoreService;
+
+ @Autowired
+ LanguageService languageService;
+
+ @Autowired
+ ContentService contentService;
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/storeLanding.html", method=RequestMethod.GET)
+ public String displayStoreLanding(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Language> languages = store.getLanguages();
+
+ Content content = contentService.getByCode("LANDING_PAGE", store);
+ StoreLanding landing = new StoreLanding();
+
+ List<StoreLandingDescription> descriptions = new ArrayList<StoreLandingDescription>();
+
+
+ for(Language l : languages) {
+
+ StoreLandingDescription landingDescription = null;
+ if(content!=null) {
+ for(ContentDescription desc : content.getDescriptions()) {
+ if(desc.getLanguage().getCode().equals(l.getCode())) {
+ landingDescription = new StoreLandingDescription();
+ landingDescription.setDescription(desc.getMetatagDescription());
+ landingDescription.setHomePageContent(desc.getDescription());
+ landingDescription.setKeywords(desc.getMetatagKeywords());
+ landingDescription.setTitle(desc.getName());//name is a not empty
+ landingDescription.setLanguage(desc.getLanguage());
+ }
+ }
+ }
+
+ if(landingDescription==null) {
+ landingDescription = new StoreLandingDescription();
+ landingDescription.setLanguage(l);
+ }
+
+
+
+ descriptions.add(landingDescription);
+ }
+
+ landing.setDescriptions(descriptions);
+
+
+ model.addAttribute("store", store);
+ model.addAttribute("storeLanding", landing);
+
+
+ return "admin-store-landing";
+ }
+
+ @PreAuthorize("hasRole('STORE')")
+ @RequestMapping(value="/admin/store/saveLanding.html", method=RequestMethod.POST)
+ public String saveStoreLanding(@Valid @ModelAttribute("storeLanding") StoreLanding storeLanding, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ if (result.hasErrors()) {
+ return "admin-store-landing";
+ }
+
+ //get original store
+ Content content = contentService.getByCode("LANDING_PAGE", store);
+
+ if(content==null) {
+ content = new Content();
+ content.setVisible(true);
+ content.setContentType(ContentType.SECTION);
+ content.setCode("LANDING_PAGE");
+ content.setMerchantStore(store);
+ }
+
+
+ //List<Language> languages = store.getLanguages();
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+
+
+/* for(Language l : languages) {
+
+ StoreLandingDescription landingDescription = null;
+ for(ContentDescription desc : content.getDescriptions()) {
+ if(desc.getLanguage().getCode().equals(l.getCode())) {
+ landingDescription = new StoreLandingDescription();
+ landingDescription.setDescription(desc.getMetatagDescription());
+ landingDescription.setHomePageContent(desc.getDescription());
+ landingDescription.setKeywords(desc.getMetatagKeywords());
+ landingDescription.setTitle(desc.getName());//name is a not empty
+ landingDescription.setLanguage(desc.getLanguage());
+ }
+ }
+
+
+ if(landingDescription==null) {
+ landingDescription = new StoreLandingDescription();
+ landingDescription.setLanguage(l);
+ }
+
+
+
+ descriptions.add(landingDescription);
+ }
+
+ landing.setDescriptions(descriptions);*/
+
+
+
+
+
+ List<StoreLandingDescription> descriptions = storeLanding.getDescriptions();
+ List<ContentDescription> contentDescriptions = new ArrayList<ContentDescription>();
+ if(descriptions!=null) {
+
+ for(StoreLandingDescription description : descriptions) {
+
+ String code = description.getLanguage().getCode();
+ Language l = langs.get(code);
+
+ ContentDescription contentDescription = null;
+ if(content.getDescriptions()!=null && content.getDescriptions().size()>0) {
+
+ for(ContentDescription desc : content.getDescriptions()) {
+
+ if(desc.getLanguage().getCode().equals(l.getCode())) {
+ contentDescription = desc;
+ desc.setMetatagDescription(description.getDescription());
+ desc.setName(description.getTitle());
+ desc.setDescription(description.getHomePageContent());
+ desc.setMetatagKeywords(description.getKeywords());
+
+
+ }
+
+ }
+ }
+
+ if(contentDescription==null) {
+
+
+ contentDescription = new ContentDescription();
+ contentDescription.setContent(content);
+ contentDescription.setLanguage(l);
+ contentDescription.setMetatagDescription(description.getDescription());
+ contentDescription.setName(description.getTitle());
+ contentDescription.setDescription(description.getHomePageContent());
+ contentDescription.setMetatagKeywords(description.getKeywords());
+
+ }
+
+ contentDescriptions.add(contentDescription);
+
+
+
+ }
+
+ content.setDescriptions(contentDescriptions);
+
+ }
+
+
+
+ contentService.saveOrUpdate(content);
+
+ model.addAttribute("success","success");
+
+ return "admin-store-landing";
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("store", "store");
+ activeMenus.put("storeLanding", "storeLanding");
+
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("store");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrderActionsControler.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrderActionsControler.java
new file mode 100644
index 0000000..6a9c97e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrderActionsControler.java
@@ -0,0 +1,561 @@
+package com.salesmanager.web.admin.controller.orders;
+
+import java.io.ByteArrayOutputStream;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatusHistory;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.payments.model.Transaction;
+import com.salesmanager.core.business.payments.service.PaymentService;
+import com.salesmanager.core.business.payments.service.TransactionService;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.modules.integration.IntegrationException;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.orders.Refund;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.DateUtil;
+import com.salesmanager.web.utils.EmailTemplatesUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+
+/**
+ * Manage order details
+ * @author Carl Samson
+ *
+ */
+@Controller
+public class OrderActionsControler {
+
+private static final Logger LOGGER = LoggerFactory.getLogger(OrderActionsControler.class);
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ CountryService countryService;
+
+ @Autowired
+ ZoneService zoneService;
+
+ @Autowired
+ PaymentService paymentService;
+
+ @Autowired
+ CustomerService customerService;
+
+ @Autowired
+ PricingService pricingService;
+
+ @Autowired
+ TransactionService transactionService;
+
+ @Autowired
+ EmailService emailService;
+
+ @Autowired
+ EmailTemplatesUtils emailTemplatesUtils;
+
+
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/captureOrder.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String captureOrder(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ String sId = request.getParameter("id");
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+ Long id = Long.parseLong(sId);
+
+ Order order = orderService.getById(id);
+
+ if(order==null) {
+
+ LOGGER.error("Order {0} does not exists", id);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(order.getMerchant().getId().intValue()!=store.getId().intValue()) {
+
+ LOGGER.error("Merchant store does not have order {0}",id);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ Customer customer = customerService.getById(order.getCustomerId());
+
+ if(customer==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("message.notexist.customer", locale));
+ return resp.toJSONString();
+ }
+
+ paymentService.processCapturePayment(order, customer, store);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while getting category", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/refundOrder.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String refundOrder(@RequestBody Refund refund, HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ BigDecimal submitedAmount = null;
+
+ try {
+
+ Order order = orderService.getById(refund.getOrderId());
+
+ if(order==null) {
+
+ LOGGER.error("Order {0} does not exists", refund.getOrderId());
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(order.getMerchant().getId().intValue()!=store.getId().intValue()) {
+
+ LOGGER.error("Merchant store does not have order {0}",refund.getOrderId());
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ //parse amount
+ try {
+ submitedAmount = new BigDecimal(refund.getAmount());
+ if(submitedAmount.doubleValue()==0) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("message.invalid.amount", locale));
+ return resp.toJSONString();
+ }
+
+ } catch (Exception e) {
+ LOGGER.equals("invalid refundAmount " + refund.getAmount());
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ BigDecimal orderTotal = order.getTotal();
+ if(submitedAmount.doubleValue()>orderTotal.doubleValue()) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("message.invalid.amount", locale));
+ return resp.toJSONString();
+ }
+
+ if(submitedAmount.doubleValue()<=0) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("message.invalid.amount", locale));
+ return resp.toJSONString();
+ }
+
+ Customer customer = customerService.getById(order.getCustomerId());
+
+ if(customer==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("message.notexist.customer", locale));
+ return resp.toJSONString();
+ }
+
+
+ paymentService.processRefund(order, customer, store, submitedAmount);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+ } catch (IntegrationException e) {
+ LOGGER.error("Error while processing refund", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString(e.getMessageCode());
+ } catch (Exception e) {
+ LOGGER.error("Error while processing refund", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/printInvoice.html", method=RequestMethod.GET, produces="application/json")
+ public void printInvoice(HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ String sId = request.getParameter("id");
+
+ try {
+
+ Long id = Long.parseLong(sId);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Order order = orderService.getById(id);
+
+ if(order.getMerchant().getId().intValue()!=store.getId().intValue()) {
+ throw new Exception("Invalid order");
+ }
+
+
+ Language lang = store.getDefaultLanguage();
+
+
+
+ ByteArrayOutputStream stream = orderService.generateInvoice(store, order, lang);
+ StringBuilder attachment = new StringBuilder();
+ //attachment.append("attachment; filename=");
+ attachment.append(order.getId());
+ attachment.append(".pdf");
+
+ response.setHeader("Content-disposition", "attachment;filename=" + attachment.toString());
+
+ //Set the mime type for the response
+ response.setContentType("application/pdf");
+
+
+ response.getOutputStream().write(stream.toByteArray());
+
+ response.flushBuffer();
+
+
+ } catch(Exception e) {
+ LOGGER.error("Error while printing a report",e);
+ }
+
+
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/listTransactions.html", method=RequestMethod.GET, produces="application/json")
+ public @ResponseBody String listTransactions(HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String sId = request.getParameter("id");
+
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ if(sId==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+ try {
+
+ Long id = Long.parseLong(sId);
+
+
+ Order dbOrder = orderService.getById(id);
+
+ if(dbOrder==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ if(dbOrder.getMerchant().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+ List<Transaction> transactions = transactionService.listTransactions(dbOrder);
+
+ if(transactions!=null) {
+
+ for(Transaction transaction : transactions) {
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("transactionId", transaction.getId());
+ entry.put("transactionDate", DateUtil.formatLongDate(transaction.getTransactionDate()));
+ entry.put("transactionType", transaction.getTransactionType().name());
+ entry.put("paymentType", transaction.getPaymentType().name());
+ entry.put("transactionAmount", pricingService.getStringAmount(transaction.getAmount(), store));
+ entry.put("transactionDetails", transaction.getTransactionDetails());
+ resp.addDataEntry(entry);
+ }
+
+
+ }
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch(Exception e) {
+ LOGGER.error("Cannot get transactions for order id " + sId, e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ return resp.toJSONString();
+
+
+ }
+
+
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/sendInvoice.html", method=RequestMethod.GET, produces="application/json")
+ public @ResponseBody String sendInvoice(HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String sId = request.getParameter("id");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ if(sId==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+ try {
+
+ Long id = Long.parseLong(sId);
+
+
+ Order dbOrder = orderService.getById(id);
+
+ if(dbOrder==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ if(dbOrder.getMerchant().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ //get customer
+ Customer customer = customerService.getById(dbOrder.getCustomerId());
+
+ if(customer==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Customer does not exist");
+ return resp.toJSONString();
+ }
+
+ Locale customerLocale = LocaleUtils.getLocale(customer.getDefaultLanguage());
+
+ emailTemplatesUtils.sendOrderEmail(customer, dbOrder, customerLocale, customer.getDefaultLanguage(), store, request.getContextPath());
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch(Exception e) {
+ LOGGER.error("Cannot get transactions for order id " + sId, e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ return resp.toJSONString();
+
+
+ }
+
+
+
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/updateStatus.html", method=RequestMethod.GET, produces="application/json")
+ public @ResponseBody String updateStatus(HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String sId = request.getParameter("id");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ if(sId==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+ try {
+
+ Long id = Long.parseLong(sId);
+
+
+ Order dbOrder = orderService.getById(id);
+
+ if(dbOrder==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ if(dbOrder.getMerchant().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ //get customer
+ Customer customer = customerService.getById(dbOrder.getCustomerId());
+
+ if(customer==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Customer does not exist");
+ return resp.toJSONString();
+ }
+
+ Locale customerLocale = LocaleUtils.getLocale(customer.getDefaultLanguage());
+
+
+ Set<OrderStatusHistory> orderStatus = dbOrder.getOrderHistory();
+ OrderStatusHistory lastHistory = null;
+ if(orderStatus!=null) {
+ int count = 1;
+ for(OrderStatusHistory history : orderStatus) {
+ if(count==orderStatus.size()) {
+ lastHistory = history;
+ break;
+ }
+ count++;
+ }
+ }
+
+ if(lastHistory==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("No history");
+ return resp.toJSONString();
+ }
+ emailTemplatesUtils.sendUpdateOrderStatusEmail(customer, dbOrder, lastHistory, store, customerLocale, request.getContextPath());
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch(Exception e) {
+ LOGGER.error("Cannot get transactions for order id " + sId, e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString(e.getMessage());
+ resp.setErrorMessage(e);
+ }
+
+ return resp.toJSONString();
+
+
+ }
+
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/sendDownloadEmail.html", method=RequestMethod.GET, produces="application/json")
+ public @ResponseBody String sendDownloadEmail(HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String sId = request.getParameter("id");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ if(sId==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+ try {
+
+ Long id = Long.parseLong(sId);
+
+
+ Order dbOrder = orderService.getById(id);
+
+ if(dbOrder==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ if(dbOrder.getMerchant().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ //get customer
+ Customer customer = customerService.getById(dbOrder.getCustomerId());
+
+ if(customer==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Customer does not exist");
+ return resp.toJSONString();
+ }
+
+ Locale customerLocale = LocaleUtils.getLocale(customer.getDefaultLanguage());
+
+
+ emailTemplatesUtils.sendOrderDownloadEmail(customer, dbOrder, store, customerLocale, request.getContextPath());
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch(Exception e) {
+ LOGGER.error("Cannot get transactions for order id " + sId, e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString(e.getMessage());
+ resp.setErrorMessage(e);
+ }
+
+ return resp.toJSONString();
+
+
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrderControler.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrderControler.java
new file mode 100644
index 0000000..7916736
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrderControler.java
@@ -0,0 +1,473 @@
+package com.salesmanager.web.admin.controller.orders;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.impl.cookie.DateUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.OrderTotal;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProduct;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductDownload;
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatusHistory;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.order.service.orderproduct.OrderProductDownloadService;
+import com.salesmanager.core.business.payments.model.PaymentType;
+import com.salesmanager.core.business.payments.model.Transaction;
+import com.salesmanager.core.business.payments.service.PaymentService;
+import com.salesmanager.core.business.payments.service.TransactionService;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.modules.email.Email;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.constants.EmailConstants;
+import com.salesmanager.web.utils.DateUtil;
+import com.salesmanager.web.utils.EmailUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+
+/**
+ * Manage order details
+ * @author Carl Samson
+ *
+ */
+@Controller
+public class OrderControler {
+
+private static final Logger LOGGER = LoggerFactory.getLogger(OrderControler.class);
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ CountryService countryService;
+
+ @Autowired
+ ZoneService zoneService;
+
+ @Autowired
+ PaymentService paymentService;
+
+ @Autowired
+ CustomerService customerService;
+
+ @Autowired
+ PricingService pricingService;
+
+ @Autowired
+ TransactionService transactionService;
+
+ @Autowired
+ EmailService emailService;
+
+ @Autowired
+ OrderProductDownloadService orderProdctDownloadService;
+
+ private final static String ORDER_STATUS_TMPL = "email_template_order_status.ftl";
+
+
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/editOrder.html", method=RequestMethod.GET)
+ public String displayOrderEdit(@RequestParam("id") long orderId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ return displayOrder(orderId,model,request,response);
+
+ }
+
+ @PreAuthorize("hasRole('ORDER')")
+ private String displayOrder(Long orderId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ //display menu
+ setMenu(model,request);
+
+ com.salesmanager.web.admin.entity.orders.Order order = new com.salesmanager.web.admin.entity.orders.Order();
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ List<Country> countries = countryService.getCountries(language);
+ if(orderId!=null && orderId!=0) { //edit mode
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+
+ Set<OrderProduct> orderProducts = null;
+ Set<OrderTotal> orderTotal = null;
+ Set<OrderStatusHistory> orderHistory = null;
+
+ Order dbOrder = orderService.getById(orderId);
+
+ if(dbOrder==null) {
+ return "redirect:/admin/orders/list.html";
+ }
+
+
+ if(dbOrder.getMerchant().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/orders/list.html";
+ }
+
+
+ order.setId( orderId );
+
+ if( dbOrder.getDatePurchased() !=null ){
+ order.setDatePurchased(DateUtil.formatDate(dbOrder.getDatePurchased()));
+ }
+
+ Long customerId = dbOrder.getCustomerId();
+
+ if(customerId!=null && customerId>0) {
+
+ try {
+
+ Customer customer = customerService.getById(customerId);
+ if(customer!=null) {
+ model.addAttribute("customer",customer);
+ }
+
+
+ } catch(Exception e) {
+ LOGGER.error("Error while getting customer for customerId " + customerId, e);
+ }
+
+ }
+
+ order.setOrder( dbOrder );
+ order.setBilling( dbOrder.getBilling() );
+ order.setDelivery(dbOrder.getDelivery() );
+
+ orderProducts = dbOrder.getOrderProducts();
+ orderTotal = dbOrder.getOrderTotal();
+ orderHistory = dbOrder.getOrderHistory();
+
+ //get capturable
+ if(dbOrder.getPaymentType().name() != PaymentType.MONEYORDER.name()) {
+ Transaction capturableTransaction = transactionService.getCapturableTransaction(dbOrder);
+ if(capturableTransaction!=null) {
+ model.addAttribute("capturableTransaction",capturableTransaction);
+ }
+ }
+
+
+ //get refundable
+ if(dbOrder.getPaymentType().name() != PaymentType.MONEYORDER.name()) {
+ Transaction refundableTransaction = transactionService.getRefundableTransaction(dbOrder);
+ if(refundableTransaction!=null) {
+ model.addAttribute("capturableTransaction",null);//remove capturable
+ model.addAttribute("refundableTransaction",refundableTransaction);
+ }
+ }
+
+
+ List<OrderProductDownload> orderProductDownloads = orderProdctDownloadService.getByOrderId(order.getId());
+ if(CollectionUtils.isNotEmpty(orderProductDownloads)) {
+ model.addAttribute("downloads",orderProductDownloads);
+ }
+
+ }
+
+ model.addAttribute("countries", countries);
+ model.addAttribute("order",order);
+ return ControllerConstants.Tiles.Order.ordersEdit;
+ }
+
+
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/save.html", method=RequestMethod.POST)
+ public String saveOrder(@Valid @ModelAttribute("order") com.salesmanager.web.admin.entity.orders.Order entityOrder, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+ String email_regEx = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}\\b";
+ Pattern pattern = Pattern.compile(email_regEx);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ List<Country> countries = countryService.getCountries(language);
+ model.addAttribute("countries", countries);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //set the id if fails
+ entityOrder.setId(entityOrder.getOrder().getId());
+
+ model.addAttribute("order", entityOrder);
+
+ Set<OrderProduct> orderProducts = new HashSet<OrderProduct>();
+ Set<OrderTotal> orderTotal = new HashSet<OrderTotal>();
+ Set<OrderStatusHistory> orderHistory = new HashSet<OrderStatusHistory>();
+
+ Date date = new Date();
+ if(!StringUtils.isBlank(entityOrder.getDatePurchased() ) ){
+ try {
+ date = DateUtil.getDate(entityOrder.getDatePurchased());
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("datePurchased",messages.getMessage("message.invalid.date", locale));
+ result.addError(error);
+ }
+
+ } else{
+ date = null;
+ }
+
+
+ if(!StringUtils.isBlank(entityOrder.getOrder().getCustomerEmailAddress() ) ){
+ java.util.regex.Matcher matcher = pattern.matcher(entityOrder.getOrder().getCustomerEmailAddress());
+
+ if(!matcher.find()) {
+ ObjectError error = new ObjectError("customerEmailAddress",messages.getMessage("Email.order.customerEmailAddress", locale));
+ result.addError(error);
+ }
+ }else{
+ ObjectError error = new ObjectError("customerEmailAddress",messages.getMessage("NotEmpty.order.customerEmailAddress", locale));
+ result.addError(error);
+ }
+
+
+ if( StringUtils.isBlank(entityOrder.getOrder().getBilling().getFirstName() ) ){
+ ObjectError error = new ObjectError("billingFirstName", messages.getMessage("NotEmpty.order.billingFirstName", locale));
+ result.addError(error);
+ }
+
+ if( StringUtils.isBlank(entityOrder.getOrder().getBilling().getFirstName() ) ){
+ ObjectError error = new ObjectError("billingLastName", messages.getMessage("NotEmpty.order.billingLastName", locale));
+ result.addError(error);
+ }
+
+ if( StringUtils.isBlank(entityOrder.getOrder().getBilling().getAddress() ) ){
+ ObjectError error = new ObjectError("billingAddress", messages.getMessage("NotEmpty.order.billingStreetAddress", locale));
+ result.addError(error);
+ }
+
+ if( StringUtils.isBlank(entityOrder.getOrder().getBilling().getCity() ) ){
+ ObjectError error = new ObjectError("billingCity",messages.getMessage("NotEmpty.order.billingCity", locale));
+ result.addError(error);
+ }
+
+ if( entityOrder.getOrder().getBilling().getZone()==null){
+ if( StringUtils.isBlank(entityOrder.getOrder().getBilling().getState())){
+ ObjectError error = new ObjectError("billingState",messages.getMessage("NotEmpty.order.billingState", locale));
+ result.addError(error);
+ }
+ }
+
+ if( StringUtils.isBlank(entityOrder.getOrder().getBilling().getPostalCode() ) ){
+ ObjectError error = new ObjectError("billingPostalCode", messages.getMessage("NotEmpty.order.billingPostCode", locale));
+ result.addError(error);
+ }
+
+ com.salesmanager.core.business.order.model.Order newOrder = orderService.getById(entityOrder.getOrder().getId() );
+
+
+ //get capturable
+ if(newOrder.getPaymentType().name() != PaymentType.MONEYORDER.name()) {
+ Transaction capturableTransaction = transactionService.getCapturableTransaction(newOrder);
+ if(capturableTransaction!=null) {
+ model.addAttribute("capturableTransaction",capturableTransaction);
+ }
+ }
+
+
+ //get refundable
+ if(newOrder.getPaymentType().name() != PaymentType.MONEYORDER.name()) {
+ Transaction refundableTransaction = transactionService.getRefundableTransaction(newOrder);
+ if(refundableTransaction!=null) {
+ model.addAttribute("capturableTransaction",null);//remove capturable
+ model.addAttribute("refundableTransaction",refundableTransaction);
+ }
+ }
+
+
+ if (result.hasErrors()) {
+ // somehow we lose data, so reset Order detail info.
+ entityOrder.getOrder().setOrderProducts( orderProducts);
+ entityOrder.getOrder().setOrderTotal(orderTotal);
+ entityOrder.getOrder().setOrderHistory(orderHistory);
+
+ return ControllerConstants.Tiles.Order.ordersEdit;
+ /* "admin-orders-edit"; */
+ }
+
+ OrderStatusHistory orderStatusHistory = new OrderStatusHistory();
+
+
+
+
+ Country deliveryCountry = countryService.getByCode( entityOrder.getOrder().getDelivery().getCountry().getIsoCode());
+ Country billingCountry = countryService.getByCode( entityOrder.getOrder().getBilling().getCountry().getIsoCode()) ;
+ Zone billingZone = null;
+ Zone deliveryZone = null;
+ if(entityOrder.getOrder().getBilling().getZone()!=null) {
+ billingZone = zoneService.getByCode(entityOrder.getOrder().getBilling().getZone().getCode());
+ }
+
+ if(entityOrder.getOrder().getDelivery().getZone()!=null) {
+ deliveryZone = zoneService.getByCode(entityOrder.getOrder().getDelivery().getZone().getCode());
+ }
+
+ newOrder.setCustomerEmailAddress(entityOrder.getOrder().getCustomerEmailAddress() );
+ newOrder.setStatus(entityOrder.getOrder().getStatus() );
+
+ newOrder.setDatePurchased(date);
+ newOrder.setLastModified( new Date() );
+
+ if(!StringUtils.isBlank(entityOrder.getOrderHistoryComment() ) ) {
+ orderStatusHistory.setComments( entityOrder.getOrderHistoryComment() );
+ orderStatusHistory.setCustomerNotified(1);
+ orderStatusHistory.setStatus(entityOrder.getOrder().getStatus());
+ orderStatusHistory.setDateAdded(new Date() );
+ orderStatusHistory.setOrder(newOrder);
+ newOrder.getOrderHistory().add( orderStatusHistory );
+ entityOrder.setOrderHistoryComment( "" );
+ }
+
+ newOrder.setDelivery( entityOrder.getOrder().getDelivery() );
+ newOrder.setBilling( entityOrder.getOrder().getBilling() );
+
+ newOrder.getDelivery().setCountry(deliveryCountry );
+ newOrder.getBilling().setCountry(billingCountry );
+
+ if(billingZone!=null) {
+ newOrder.getBilling().setZone(billingZone);
+ }
+
+ if(deliveryZone!=null) {
+ newOrder.getDelivery().setZone(deliveryZone);
+ }
+
+ orderService.saveOrUpdate(newOrder);
+ entityOrder.setOrder(newOrder);
+ entityOrder.setBilling(newOrder.getBilling());
+ entityOrder.setDelivery(newOrder.getDelivery());
+ model.addAttribute("order", entityOrder);
+
+ Long customerId = newOrder.getCustomerId();
+
+ if(customerId!=null && customerId>0) {
+
+ try {
+
+ Customer customer = customerService.getById(customerId);
+ if(customer!=null) {
+ model.addAttribute("customer",customer);
+ }
+
+
+ } catch(Exception e) {
+ LOGGER.error("Error while getting customer for customerId " + customerId, e);
+ }
+
+ }
+
+ List<OrderProductDownload> orderProductDownloads = orderProdctDownloadService.getByOrderId(newOrder.getId());
+ if(CollectionUtils.isNotEmpty(orderProductDownloads)) {
+ model.addAttribute("downloads",orderProductDownloads);
+ }
+
+
+ /**
+ * send email if admin posted orderHistoryComment
+ *
+ * **/
+
+ if(StringUtils.isBlank(entityOrder.getOrderHistoryComment())) {
+
+ try {
+
+ Customer customer = customerService.getById(newOrder.getCustomerId());
+ Language lang = store.getDefaultLanguage();
+ if(customer!=null) {
+ lang = customer.getDefaultLanguage();
+ }
+
+ Locale customerLocale = LocaleUtils.getLocale(lang);
+
+ StringBuilder customerName = new StringBuilder();
+ customerName.append(newOrder.getBilling().getFirstName()).append(" ").append(newOrder.getBilling().getLastName());
+
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(request.getContextPath(), store, messages, customerLocale);
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_NAME, customerName.toString());
+ templateTokens.put(EmailConstants.EMAIL_TEXT_ORDER_NUMBER, messages.getMessage("email.order.confirmation", new String[]{String.valueOf(newOrder.getId())}, customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_TEXT_DATE_ORDERED, messages.getMessage("email.order.ordered", new String[]{entityOrder.getDatePurchased()}, customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_TEXT_STATUS_COMMENTS, messages.getMessage("email.order.comments", new String[]{entityOrder.getOrderHistoryComment()}, customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_TEXT_DATE_UPDATED, messages.getMessage("email.order.updated", new String[]{DateUtils.formatDate(new Date())}, customerLocale));
+
+
+ Email email = new Email();
+ email.setFrom(store.getStorename());
+ email.setFromEmail(store.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("email.order.status.title",new String[]{String.valueOf(newOrder.getId())},customerLocale));
+ email.setTo(entityOrder.getOrder().getCustomerEmailAddress());
+ email.setTemplateName(ORDER_STATUS_TMPL);
+ email.setTemplateTokens(templateTokens);
+
+
+
+ emailService.sendHtmlEmail(store, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot send email to customer",e);
+ }
+
+ }
+
+ model.addAttribute("success","success");
+
+
+ return ControllerConstants.Tiles.Order.ordersEdit;
+ /* "admin-orders-edit"; */
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("order", "order");
+ activeMenus.put("order-list", "order-list");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ model.addAttribute("activeMenus",activeMenus);
+
+ Menu currentMenu = (Menu)menus.get("order");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrdersController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrdersController.java
new file mode 100644
index 0000000..5b21465
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/orders/OrdersController.java
@@ -0,0 +1,178 @@
+package com.salesmanager.web.admin.controller.orders;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.OrderCriteria;
+import com.salesmanager.core.business.order.model.OrderList;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.system.model.IntegrationModule;
+import com.salesmanager.core.business.system.service.ModuleConfigurationService;
+import com.salesmanager.core.utils.ProductPriceUtils;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.DateUtil;
+import com.salesmanager.web.utils.LabelUtils;
+
+
+/**
+ * Manage order list
+ * Manage search order
+ * @author csamson
+ *
+ */
+@Controller
+public class OrdersController {
+
+ @Autowired
+ OrderService orderService;
+
+ @Autowired
+ LabelUtils messages;
+
+ @Autowired
+ private ProductPriceUtils priceUtil;
+
+ @Autowired
+ protected ModuleConfigurationService moduleConfigurationService;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(OrderControler.class);
+
+
+ @PreAuthorize("hasRole('ORDER')")
+ @RequestMapping(value="/admin/orders/list.html", method=RequestMethod.GET)
+ public String displayOrders(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ //the list of orders is from page method
+
+ return ControllerConstants.Tiles.Order.orders;
+
+
+ }
+
+
+ @PreAuthorize("hasRole('ORDER')")
+ @SuppressWarnings({ "unchecked", "unused"})
+ @RequestMapping(value="/admin/orders/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageOrders(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+
+ AjaxPageableResponse resp = new AjaxPageableResponse();
+
+
+
+
+ try {
+
+ int startRow = Integer.parseInt(request.getParameter("_startRow"));
+ int endRow = Integer.parseInt(request.getParameter("_endRow"));
+ String paymentModule = request.getParameter("paymentModule");
+ String customerName = request.getParameter("customer");
+
+ OrderCriteria criteria = new OrderCriteria();
+ criteria.setStartIndex(startRow);
+ criteria.setMaxCount(endRow);
+ if(!StringUtils.isBlank(paymentModule)) {
+ criteria.setPaymentMethod(paymentModule);
+ }
+
+ if(!StringUtils.isBlank(customerName)) {
+ criteria.setCustomerName(customerName);
+ }
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ List<IntegrationModule> paymentModules = moduleConfigurationService.getIntegrationModules( "PAYMENT" );
+
+
+ OrderList orderList = orderService.listByStore(store, criteria);
+
+ if(orderList.getOrders()!=null) {
+
+ for(Order order : orderList.getOrders()) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("orderId", order.getId());
+ entry.put("customer", order.getBilling().getFirstName() + " " + order.getBilling().getLastName());
+ entry.put("amount", priceUtil.getAdminFormatedAmountWithCurrency(store,order.getTotal()));//todo format total
+ entry.put("date", DateUtil.formatDate(order.getDatePurchased()));
+ entry.put("status", order.getStatus().name());
+
+
+ if ( paymentModules!= null && paymentModules.size() > 0 )
+ {
+ for ( int index = 0; index < paymentModules.size(); index++ )
+ {
+ if ( paymentModules.get(index).getCode().equalsIgnoreCase( order.getPaymentModuleCode() ) )
+ {
+ paymentModule = paymentModules.get(index).getCode();
+ break;
+ }
+ }
+
+ }
+
+ entry.put("paymentModule", paymentModule );
+ resp.addDataEntry(entry);
+
+ }
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging orders", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("order", "order");
+ activeMenus.put("order-list", "order-list");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("order");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/payments/PaymentsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/payments/PaymentsController.java
new file mode 100644
index 0000000..0a044e2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/payments/PaymentsController.java
@@ -0,0 +1,175 @@
+package com.salesmanager.web.admin.controller.payments;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.payments.model.TransactionType;
+import com.salesmanager.core.business.payments.service.PaymentService;
+import com.salesmanager.core.business.system.model.IntegrationConfiguration;
+import com.salesmanager.core.business.system.model.IntegrationModule;
+import com.salesmanager.core.modules.integration.IntegrationException;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class PaymentsController {
+
+
+ @Autowired
+ private PaymentService paymentService;
+
+ @Autowired
+ LabelUtils messages;
+
+
+ @RequestMapping(value="/admin/payments/paymentMethods.html", method=RequestMethod.GET)
+ public String getPaymentMethods(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ //set menu
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get payment methods
+ List<IntegrationModule> modules = paymentService.getPaymentMethods(store);
+
+ //get configured payment modules
+ Map<String,IntegrationConfiguration> configuredModules = paymentService.getPaymentModulesConfigured(store);
+
+
+
+ model.addAttribute("modules", modules);
+ model.addAttribute("configuredModules", configuredModules);
+
+ return ControllerConstants.Tiles.Payment.paymentMethods;
+
+ }
+
+ @PreAuthorize("hasRole('PAYMENT')")
+ @RequestMapping(value="/admin/payments/paymentMethod.html", method=RequestMethod.GET)
+ public String displayPaymentMethod(@RequestParam("code") String code, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ //get configured shipping modules
+ IntegrationConfiguration configuration = paymentService.getPaymentConfiguration(code, store);
+ if(configuration==null) {
+ configuration = new IntegrationConfiguration();
+ configuration.setEnvironment(com.salesmanager.core.constants.Constants.PRODUCTION_ENVIRONMENT);
+
+ Map<String,String> keys = new HashMap<String,String>();
+ keys.put("transaction", TransactionType.AUTHORIZECAPTURE.name());
+
+ configuration.setIntegrationKeys(keys);
+
+ }
+
+ configuration.setModuleCode(code);
+
+ List<String> environments = new ArrayList<String>();
+ environments.add(com.salesmanager.core.constants.Constants.TEST_ENVIRONMENT);
+ environments.add(com.salesmanager.core.constants.Constants.PRODUCTION_ENVIRONMENT);
+
+ model.addAttribute("configuration", configuration);
+ model.addAttribute("environments", environments);
+ return ControllerConstants.Tiles.Payment.paymentMethod;
+
+
+ }
+
+ @PreAuthorize("hasRole('PAYMENT')")
+ @RequestMapping(value="/admin/payments/savePaymentMethod.html", method=RequestMethod.POST)
+ public String savePaymentMethod(@ModelAttribute("configuration") IntegrationConfiguration configuration, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+
+ List<String> environments = new ArrayList<String>();
+ environments.add(com.salesmanager.core.constants.Constants.TEST_ENVIRONMENT);
+ environments.add(com.salesmanager.core.constants.Constants.PRODUCTION_ENVIRONMENT);
+
+ model.addAttribute("environments", environments);
+ model.addAttribute("configuration", configuration);
+
+ try {
+ paymentService.savePaymentModuleConfiguration(configuration, store);
+ } catch (Exception e) {
+ if(e instanceof IntegrationException) {
+ if(((IntegrationException)e).getErrorCode()==IntegrationException.ERROR_VALIDATION_SAVE) {
+
+ List<String> errorCodes = ((IntegrationException)e).getErrorFields();
+ for(String errorCode : errorCodes) {
+ model.addAttribute(errorCode,messages.getMessage("message.fielderror", locale));
+ }
+ model.addAttribute("validationError","validationError");
+ return ControllerConstants.Tiles.Payment.paymentMethod;
+ }
+ } else {
+ throw new Exception(e);
+ }
+ }
+
+
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Payment.paymentMethod;
+
+
+ }
+
+ @RequestMapping(value="/admin/payments/deletePaymentMethod.html", method=RequestMethod.POST)
+ public String deletePaymentMethod(@RequestParam("code") String code, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ paymentService.removePaymentModuleConfiguration(code, store);
+
+ return "redirect:/admin/payments/paymentMethods.html";
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("payment", "payment");
+ activeMenus.put("payment-methods", "payment-methods");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("payment");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/CustomProductGroupsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/CustomProductGroupsController.java
new file mode 100644
index 0000000..d443d96
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/CustomProductGroupsController.java
@@ -0,0 +1,452 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationship;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.relationship.ProductRelationshipService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+
+@Controller
+public class CustomProductGroupsController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomProductGroupsController.class);
+
+ @Autowired
+ CategoryService categoryService;
+
+ @Autowired
+ ProductService productService;
+
+ @Autowired
+ ProductRelationshipService productRelationshipService;
+
+ @Autowired
+ LabelUtils messages;
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/groups/list.html", method=RequestMethod.GET)
+ public String displayProductGroups(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ ProductRelationship group = new ProductRelationship();
+
+
+ model.addAttribute("group", group);
+
+ return ControllerConstants.Tiles.Product.customGroups;
+
+ }
+
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/groups/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageCustomGroups(HttpServletRequest request, HttpServletResponse response) {
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ List<ProductRelationship> relationships = productRelationshipService.getGroups(store);
+
+ for(ProductRelationship relationship : relationships) {
+
+ if(!"FEATURED_ITEM".equals(relationship.getCode())) {//do not add featured items
+
+ Map entry = new HashMap();
+ entry.put("code", relationship.getCode());
+ entry.put("active", relationship.isActive());
+
+ resp.addDataEntry(entry);
+
+ }
+
+ }
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/groups/save.html", method=RequestMethod.POST)
+ public String saveCustomProductGroup(@ModelAttribute("group") ProductRelationship group, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ //check if group already exist
+
+
+ if(StringUtils.isBlank(group.getCode())) {
+ FieldError fieldError = new FieldError("group","code",group.getCode(),false,null,null,messages.getMessage("message.group.required",locale));
+ result.addError(fieldError);
+ return ControllerConstants.Tiles.Product.customGroups;
+ }
+
+ //String msg = messages.getMessage("message.group.alerady.exists",locale);
+ //String[] messages = {msg};
+
+ String[] messages = {"message.group.alerady.exists"};
+
+ List<ProductRelationship> groups = productRelationshipService.getGroups(store);
+ for(ProductRelationship grp : groups) {
+ if(grp.getCode().equalsIgnoreCase(group.getCode())) {
+ String[] args = {group.getCode()};
+ FieldError fieldError = new FieldError("group","code",group.getCode(),false,messages,args,null);
+ result.addError(fieldError);
+ }
+ }
+
+ if(result.hasErrors()) {
+ return ControllerConstants.Tiles.Product.customGroups;
+ }
+
+ group.setActive(true);
+ group.setStore(store);
+
+ productRelationshipService.addGroup(store,group.getCode());
+
+
+ model.addAttribute("success","success");
+
+ return ControllerConstants.Tiles.Product.customGroups;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/groups/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeCustomProductGroup(HttpServletRequest request, HttpServletResponse response) {
+
+ String groupCode = request.getParameter("code");
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ productRelationshipService.deleteGroup(store, groupCode);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting a group", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/groups/update.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String activateProductGroup(HttpServletRequest request, HttpServletResponse response) {
+ String values = request.getParameter("_oldValues");
+ String active = request.getParameter("active");
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ ObjectMapper mapper = new ObjectMapper();
+ @SuppressWarnings("rawtypes")
+ Map conf = mapper.readValue(values, Map.class);
+ String groupCode = (String)conf.get("code");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get groups
+ List<ProductRelationship> groups = productRelationshipService.getGroups(store);
+
+ for(ProductRelationship relation : groups) {
+ if(relation.getCode().equals(groupCode)) {
+ if("true".equals(active)) {
+ relation.setActive(true);
+ } else {
+ relation.setActive(false);
+ }
+ productRelationshipService.saveOrUpdate(relation);
+ }
+ }
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while updateing groups", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/group/edit.html", method=RequestMethod.GET)
+ public String displayCustomProductGroup(@RequestParam("code") String groupCode, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Category> categories = categoryService.listByStore(store,language);//for categories
+
+
+ model.addAttribute("group", groupCode);
+ model.addAttribute("categories", categories);
+ return ControllerConstants.Tiles.Product.customGroupsDetails;
+
+ }
+
+
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/group/details/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageProducts(HttpServletRequest request, HttpServletResponse response) {
+
+ String code = request.getParameter("code");
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ List<ProductRelationship> relationships = productRelationshipService.getByGroup(store, code, language);
+
+ for(ProductRelationship relationship : relationships) {
+
+ Product product = relationship.getRelatedProduct();
+ Map entry = new HashMap();
+ entry.put("relationshipId", relationship.getId());
+ entry.put("productId", product.getId());
+
+ ProductDescription description = product.getDescriptions().iterator().next();
+ Set<ProductDescription> descriptions = product.getDescriptions();
+ for(ProductDescription desc : descriptions) {
+ if(desc.getLanguage().getId().intValue()==language.getId().intValue()) {
+ description = desc;
+ }
+ }
+
+ entry.put("name", description.getName());
+ entry.put("sku", product.getSku());
+ entry.put("available", product.isAvailable());
+ resp.addDataEntry(entry);
+
+ }
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+
+ }
+
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/group/details/addItem.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String addItem(HttpServletRequest request, HttpServletResponse response) {
+
+ String code = request.getParameter("code");
+ String productId = request.getParameter("productId");
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+ Long lProductId = Long.parseLong(productId);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(lProductId);
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ ProductRelationship relationship = new ProductRelationship();
+ relationship.setActive(true);
+ relationship.setCode(code);
+ relationship.setStore(store);
+ relationship.setRelatedProduct(product);
+
+ productRelationshipService.saveOrUpdate(relationship);
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/group/details/removeItem.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeItem(HttpServletRequest request, HttpServletResponse response) {
+
+ String code = request.getParameter("code");
+ String productId = request.getParameter("productId");
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+ Long lproductId = Long.parseLong(productId);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(lproductId);
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ ProductRelationship relationship = null;
+ List<ProductRelationship> relationships = productRelationshipService.getByGroup(store, code);
+
+ for(ProductRelationship r : relationships) {
+ if(r.getRelatedProduct().getId().longValue()==lproductId.longValue()) {
+ relationship = r;
+ break;
+ }
+ }
+
+ if(relationship==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(relationship.getStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+
+ productRelationshipService.delete(relationship);
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products-group", "catalogue-products-group");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/DigitalProductController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/DigitalProductController.java
new file mode 100644
index 0000000..3068765
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/DigitalProductController.java
@@ -0,0 +1,186 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.file.DigitalProduct;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.file.DigitalProductService;
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.content.model.InputContentFile;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.digital.ProductFiles;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+@Controller
+public class DigitalProductController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(DigitalProductController.class);
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private DigitalProductService digitalProductService;
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value={"/admin/products/digitalProduct.html"}, method=RequestMethod.GET)
+ public String getDigitalProduct(@RequestParam("id") long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(productId);
+
+ if(product==null || product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ model.addAttribute("product", product);
+
+ DigitalProduct digitalProduct = digitalProductService.getByProduct(store, product);
+
+ model.addAttribute("digitalProduct", digitalProduct);
+ return ControllerConstants.Tiles.Product.digitalProduct;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/product/saveDigitalProduct.html", method=RequestMethod.POST)
+ public String saveFile(@ModelAttribute(value="productFiles") @Valid final ProductFiles productFiles, final BindingResult bindingResult,final Model model, final HttpServletRequest request) throws Exception{
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(productFiles.getProduct().getId());
+ DigitalProduct digitalProduct = new DigitalProduct();
+ if(product==null || product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ digitalProduct.setProduct(product);
+ model.addAttribute("product", product);
+ model.addAttribute("digitalProduct", digitalProduct);
+
+ if (bindingResult.hasErrors()) {
+ LOGGER.info( "Found {} Validation errors", bindingResult.getErrorCount());
+ return ControllerConstants.Tiles.Product.digitalProduct;
+ }
+
+
+ final List<InputContentFile> contentFilesList=new ArrayList<InputContentFile>();
+ if(CollectionUtils.isNotEmpty( productFiles.getFile() )){
+ LOGGER.info("Saving {} product files for merchant {}",productFiles.getFile().size(),store.getId());
+ for(final MultipartFile multipartFile:productFiles.getFile()){
+ if(!multipartFile.isEmpty()){
+ ByteArrayInputStream inputStream = new ByteArrayInputStream( multipartFile.getBytes() );
+ InputContentFile cmsContentImage = new InputContentFile();
+ cmsContentImage.setFileName(multipartFile.getOriginalFilename() );
+ cmsContentImage.setFileContentType( FileContentType.PRODUCT_DIGITAL );
+ cmsContentImage.setFile( inputStream );
+ contentFilesList.add( cmsContentImage);
+ }
+ }
+
+ if(CollectionUtils.isNotEmpty( contentFilesList )){
+
+ digitalProduct.setProductFileName(contentFilesList.get(0).getFileName());
+ digitalProductService.addProductFile(product, digitalProduct, contentFilesList.get(0));
+
+ //refresh digital product
+ digitalProduct = digitalProductService.getByProduct(store, product);
+
+ }
+ }
+
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Product.digitalProduct;
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/product/removeDigitalProduct.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeFile(@RequestParam("fileId") long fileId, HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ DigitalProduct digitalProduct = digitalProductService.getById(fileId);
+
+ //validate store
+ if(digitalProduct==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ Product product = digitalProduct.getProduct();
+ if(product.getMerchantStore().getId().intValue()!= store.getId().intValue()) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ digitalProductService.delete(digitalProduct);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products", "catalogue-products");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/FeaturedItemsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/FeaturedItemsController.java
new file mode 100755
index 0000000..8352d01
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/FeaturedItemsController.java
@@ -0,0 +1,256 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationship;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationshipType;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.relationship.ProductRelationshipService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+
+@Controller
+public class FeaturedItemsController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(FeaturedItemsController.class);
+
+ @Autowired
+ CategoryService categoryService;
+
+ @Autowired
+ ProductService productService;
+
+ @Autowired
+ ProductRelationshipService productRelationshipService;
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/featured/list.html", method=RequestMethod.GET)
+ public String displayFeaturedItems(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Category> categories = categoryService.listByStore(store,language);
+
+ model.addAttribute("categories", categories);
+ return "admin-catalogue-featured";
+
+ }
+
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/featured/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageProducts(HttpServletRequest request, HttpServletResponse response) {
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ List<ProductRelationship> relationships = productRelationshipService.getByType(store, ProductRelationshipType.FEATURED_ITEM, language);
+
+ for(ProductRelationship relationship : relationships) {
+
+ Product product = relationship.getRelatedProduct();
+ Map entry = new HashMap();
+ entry.put("relationshipId", relationship.getId());
+ entry.put("productId", product.getId());
+
+ ProductDescription description = product.getDescriptions().iterator().next();
+ Set<ProductDescription> descriptions = product.getDescriptions();
+ for(ProductDescription desc : descriptions) {
+ if(desc.getLanguage().getId().intValue()==language.getId().intValue()) {
+ description = desc;
+ }
+ }
+
+ entry.put("name", description.getName());
+ entry.put("sku", product.getSku());
+ entry.put("available", product.isAvailable());
+ resp.addDataEntry(entry);
+
+ }
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/featured/addItem.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String addItem(HttpServletRequest request, HttpServletResponse response) {
+
+ String productId = request.getParameter("productId");
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+ Long lProductId = Long.parseLong(productId);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(lProductId);
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ ProductRelationship relationship = new ProductRelationship();
+ relationship.setActive(true);
+ relationship.setCode(ProductRelationshipType.FEATURED_ITEM.name());
+ relationship.setStore(store);
+ relationship.setRelatedProduct(product);
+
+ productRelationshipService.saveOrUpdate(relationship);
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/featured/removeItem.html&removeEntity=FEATURED", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeItem(HttpServletRequest request, HttpServletResponse response) {
+
+ String productId = request.getParameter("productId");
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+ Long lproductId = Long.parseLong(productId);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(lproductId);
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ ProductRelationship relationship = null;
+ List<ProductRelationship> relationships = productRelationshipService.getByType(store, ProductRelationshipType.FEATURED_ITEM);
+
+ for(ProductRelationship r : relationships) {
+ if(r.getRelatedProduct().getId().longValue()==lproductId.longValue()) {
+ relationship = r;
+ }
+ }
+
+ if(relationship==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(relationship.getStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+
+ productRelationshipService.delete(relationship);
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products-group", "catalogue-products-group");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ManufacturerController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ManufacturerController.java
new file mode 100644
index 0000000..ab20582
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ManufacturerController.java
@@ -0,0 +1,428 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer;
+import com.salesmanager.core.business.catalog.product.model.manufacturer.ManufacturerDescription;
+import com.salesmanager.core.business.catalog.product.service.manufacturer.ManufacturerService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.CoreConfiguration;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.controller.customers.CustomerController;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ManufacturerController {
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private ManufacturerService manufacturerService;
+
+ @Autowired
+ LabelUtils messages;
+
+ @Autowired
+ private CoreConfiguration configuration;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomerController.class);
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/manufacturer/list.html", method=RequestMethod.GET)
+ public String getManufacturers(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ this.setMenu(model, request);
+
+ return ControllerConstants.Tiles.Product.manufacturerList;
+ }
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/manufacturer/create.html", method=RequestMethod.GET)
+ public String createManufacturer( Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ return displayManufacturer(null,model,request,response);
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/manufacturer/edit.html", method=RequestMethod.GET)
+ public String editManufacturer(@RequestParam("id") long manufacturerId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ return displayManufacturer(manufacturerId,model,request,response);
+ }
+
+ private String displayManufacturer(Long manufacturerId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ //display menu
+ setMenu(model,request);
+
+ //List<Language> languages = languageService.getLanguages();
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ List<Language> languages = store.getLanguages();
+
+
+ com.salesmanager.web.admin.entity.catalog.Manufacturer manufacturer = new com.salesmanager.web.admin.entity.catalog.Manufacturer();
+ List<ManufacturerDescription> descriptions = new ArrayList<ManufacturerDescription>();
+
+
+ if( manufacturerId!=null && manufacturerId.longValue()!=0) { //edit mode
+
+ Manufacturer dbManufacturer = new Manufacturer();
+ dbManufacturer = manufacturerService.getById( manufacturerId );
+
+ if(dbManufacturer==null) {
+ return ControllerConstants.Tiles.Product.manufacturerList;
+ }
+
+ if(dbManufacturer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return ControllerConstants.Tiles.Product.manufacturerList;
+ }
+
+ Set<ManufacturerDescription> manufacturerDescriptions = dbManufacturer.getDescriptions();
+
+
+ for(Language l : languages) {
+
+ ManufacturerDescription manufDescription = null;
+ if(manufacturerDescriptions!=null) {
+
+ for(ManufacturerDescription desc : manufacturerDescriptions) {
+ String code = desc.getLanguage().getCode();
+ if(code.equals(l.getCode())) {
+ manufDescription = desc;
+ }
+
+ }
+
+ }
+
+ if(manufDescription==null) {
+ manufDescription = new ManufacturerDescription();
+ manufDescription.setLanguage(l);
+ }
+
+ manufacturer.getDescriptions().add(manufDescription);
+
+ }
+
+ manufacturer.setManufacturer( dbManufacturer );
+
+
+ manufacturer.setOrder( dbManufacturer.getOrder() );
+
+ } else { // Create mode
+
+ Manufacturer manufacturerTmp = new Manufacturer();
+ manufacturer.setManufacturer( manufacturerTmp );
+
+ for(Language l : languages) {// for each store language
+
+ ManufacturerDescription manufacturerDesc = new ManufacturerDescription();
+ manufacturerDesc.setLanguage(l);
+ descriptions.add( manufacturerDesc );
+ manufacturer.setDescriptions(descriptions);
+
+ }
+ }
+
+ model.addAttribute("languages",languages);
+ model.addAttribute("manufacturer", manufacturer);
+
+ return ControllerConstants.Tiles.Product.manufacturerDetails;
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/manufacturer/save.html", method=RequestMethod.POST)
+ public String saveManufacturer( @Valid @ModelAttribute("manufacturer") com.salesmanager.web.admin.entity.catalog.Manufacturer manufacturer, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+ //save or edit a manufacturer
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ List<Language> languages = languageService.getLanguages();
+
+ if(manufacturer.getDescriptions()!=null && manufacturer.getDescriptions().size()>0) {
+
+ for(ManufacturerDescription description : manufacturer.getDescriptions()) {
+
+ //validate Url Clicked
+/* if ( description.getUrlClicked() != null && !description.getUrlClicked().toString().isEmpty()) {
+ try{
+ Integer.parseInt( description.getUrlClicked().toString() );
+
+ } catch (Exception e) {
+
+ ObjectError error = new ObjectError("descriptions[${counter.index}].urlClicked","URL Clicked must be a number");
+ result.addError(error);
+ }
+ }*/
+ }
+ }
+
+
+ //validate image
+ if(manufacturer.getImage()!=null && !manufacturer.getImage().isEmpty()) {
+
+ try {
+
+ String maxHeight = configuration.getProperty("PRODUCT_IMAGE_MAX_HEIGHT_SIZE");
+ String maxWidth = configuration.getProperty("PRODUCT_IMAGE_MAX_WIDTH_SIZE");
+ String maxSize = configuration.getProperty("PRODUCT_IMAGE_MAX_SIZE");
+
+ BufferedImage image = ImageIO.read(manufacturer.getImage().getInputStream());
+
+ if(!StringUtils.isBlank(maxHeight)) {
+
+ int maxImageHeight = Integer.parseInt(maxHeight);
+ if(image.getHeight()>maxImageHeight) {
+ ObjectError error = new ObjectError("image",messages.getMessage("message.image.height", locale) + " {"+maxHeight+"}");
+ result.addError(error);
+ }
+ }
+
+ if(!StringUtils.isBlank(maxWidth)) {
+
+ int maxImageWidth = Integer.parseInt(maxWidth);
+ if(image.getWidth()>maxImageWidth) {
+ ObjectError error = new ObjectError("image",messages.getMessage("message.image.width", locale) + " {"+maxWidth+"}");
+ result.addError(error);
+ }
+ }
+
+ if(!StringUtils.isBlank(maxSize)) {
+
+ int maxImageSize = Integer.parseInt(maxSize);
+ if(manufacturer.getImage().getSize()>maxImageSize) {
+ ObjectError error = new ObjectError("image",messages.getMessage("message.image.size", locale) + " {"+maxSize+"}");
+ result.addError(error);
+ }
+ }
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot validate manufacturer image", e);
+ }
+
+ }
+
+ if (result.hasErrors()) {
+ model.addAttribute("languages",languages);
+ return ControllerConstants.Tiles.Product.manufacturerDetails;
+ }
+
+ Manufacturer newManufacturer = manufacturer.getManufacturer();
+
+ if ( manufacturer.getManufacturer().getId() !=null && manufacturer.getManufacturer().getId() > 0 ){
+
+ newManufacturer = manufacturerService.getById( manufacturer.getManufacturer().getId() );
+
+ if(newManufacturer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return ControllerConstants.Tiles.Product.manufacturerList;
+ }
+
+ }
+
+// for(ManufacturerImage image : manufacturer.getImages()) {
+// if(image.isDefaultImage()) {
+// manufacturer.setProductImage(image);
+// }
+// }
+
+ Set<ManufacturerDescription> descriptions = new HashSet<ManufacturerDescription>();
+ if(manufacturer.getDescriptions()!=null && manufacturer.getDescriptions().size()>0) {
+
+ for(ManufacturerDescription desc : manufacturer.getDescriptions()) {
+
+ desc.setManufacturer(newManufacturer);
+ descriptions.add(desc);
+ }
+ }
+ newManufacturer.setDescriptions(descriptions );
+ newManufacturer.setOrder( manufacturer.getOrder() );
+ newManufacturer.setMerchantStore(store);
+
+
+
+// if(manufacturer.getManufacturerImage()!=null && manufacturer.getManufacturerImage().getId() == null) {
+// newManufacturer.setProductImage(null);
+// }
+
+
+
+ if(manufacturer.getImage()!=null && !manufacturer.getImage().isEmpty()) {
+//
+// String imageName = manufacturer.getImage().getOriginalFilename();
+//
+// ManufacturerImage manufacturerImage = new ManufacturerImage();
+// manufacturerImage.setDefaultImage(true);
+// manufacturerImage.setImage(manufacturer.getImage().getInputStream());
+// manufacturerImage.setManufacturerImage(imageName);
+//
+// List<ManufacturerImageDescription> imagesDescriptions = new ArrayList<ManufacturerImageDescription>();
+//
+// for(Language l : languages) {
+//
+// ManufacturerImageDescription imageDescription = new ManufacturerImageDescription();
+// imageDescription.setName(imageName);
+// imageDescription.setLanguage(l);
+// imageDescription.setManufacturerImage(productImage);
+// imagesDescriptions.add(imageDescription);
+//
+// }
+//
+// manufacturerImage.setDescriptions(imagesDescriptions);
+// manufacturerImage.setProduct(newManufacturer);
+//
+// newManufacturer.getImages().add(manufacturerImage);
+//
+// manufacturerService.saveOrUpdate(newManufacturer);
+//
+// //manufacturer displayed
+// manufacturer.setProductImage(manufacturerImage);
+
+
+ } else {
+
+ manufacturerService.saveOrUpdate(newManufacturer);
+ }
+
+ model.addAttribute("manufacturer", manufacturer);
+ model.addAttribute("languages",languages);
+ model.addAttribute("success","success");
+
+ return ControllerConstants.Tiles.Product.manufacturerDetails;
+
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/manufacturer/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageManufacturers(HttpServletRequest request, HttpServletResponse response) {
+
+ AjaxResponse resp = new AjaxResponse();
+ try {
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Manufacturer> manufacturers = null;
+ manufacturers = manufacturerService.listByStore(store, language);
+
+ for(Manufacturer manufacturer : manufacturers) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("id", manufacturer.getId());
+
+ ManufacturerDescription description = manufacturer.getDescriptions().iterator().next();
+
+ entry.put("attribute", description.getName());
+ entry.put("order", manufacturer.getOrder());
+ resp.addDataEntry(entry);
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging Manufacturers", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/manufacturer/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteManufacturer(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ Long sid = Long.valueOf(request.getParameter("id") );
+
+
+ AjaxResponse resp = new AjaxResponse();
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ try{
+ Manufacturer delManufacturer = manufacturerService.getById( sid );
+ if(delManufacturer==null || delManufacturer.getMerchantStore().getId().intValue() != store.getId().intValue()) {
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ int count = manufacturerService.getCountManufAttachedProducts( delManufacturer );
+ //IF already attached to products it can't be deleted
+ if ( count > 0 ){
+ resp.setStatusMessage(messages.getMessage("message.product.association", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ manufacturerService.delete( delManufacturer );
+
+ resp.setStatusMessage(messages.getMessage("message.success", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ LOGGER.error("Cannot delete manufacturer.", e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("manufacturer-list", "manufacturer-list");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/OptionsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/OptionsController.java
new file mode 100644
index 0000000..bb596e0
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/OptionsController.java
@@ -0,0 +1,345 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOption;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionDescription;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class OptionsController {
+
+ @Autowired
+ LanguageService languageService;
+
+ @Autowired
+ ProductOptionService productOptionService;
+
+ @Autowired
+ LabelUtils messages;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(OptionsController.class);
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/options/options.html", method=RequestMethod.GET)
+ public String displayOptions(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+
+
+
+ return "catalogue-options-list";
+
+
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/options/editOption.html", method=RequestMethod.GET)
+ public String displayOptionEdit(@RequestParam("id") long optionId, HttpServletRequest request, HttpServletResponse response, Model model, Locale locale) throws Exception {
+ return displayOption(optionId,request,response,model,locale);
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/options/createOption.html", method=RequestMethod.GET)
+ public String displayOption(HttpServletRequest request, HttpServletResponse response, Model model, Locale locale) throws Exception {
+ return displayOption(null,request,response,model,locale);
+ }
+
+ private String displayOption(Long optionId, HttpServletRequest request, HttpServletResponse response,Model model,Locale locale) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Language> languages = store.getLanguages();
+
+ Set<ProductOptionDescription> descriptions = new HashSet<ProductOptionDescription>();
+
+ ProductOption option = new ProductOption();
+
+ if(optionId!=null && optionId!=0) {//edit mode
+
+
+ option = productOptionService.getById(optionId);
+
+
+ if(option==null) {
+ return "redirect:/admin/options/options.html";
+ }
+
+ Set<ProductOptionDescription> optionDescriptions = option.getDescriptions();
+
+
+
+ for(Language l : languages) {
+
+ ProductOptionDescription optionDescription = null;
+
+ if(optionDescriptions!=null) {
+
+ for(ProductOptionDescription description : optionDescriptions) {
+
+ String code = description.getLanguage().getCode();
+ if(code.equals(l.getCode())) {
+ optionDescription = description;
+ }
+
+ }
+
+ }
+
+ if(optionDescription==null) {
+ optionDescription = new ProductOptionDescription();
+ optionDescription.setLanguage(l);
+ }
+
+ descriptions.add(optionDescription);
+
+ }
+
+ } else {
+
+ for(Language l : languages) {
+
+ ProductOptionDescription desc = new ProductOptionDescription();
+ desc.setLanguage(l);
+ descriptions.add(desc);
+
+ }
+
+ }
+
+
+ option.setDescriptions(descriptions);
+ model.addAttribute("option", option);
+ return "catalogue-options-details";
+
+
+ }
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/options/save.html", method=RequestMethod.POST)
+ public String saveOption(@Valid @ModelAttribute("option") ProductOption option, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ ProductOption dbEntity = null;
+
+ if(option.getId() != null && option.getId() >0) { //edit entry
+ //get from DB
+ dbEntity = productOptionService.getById(option.getId());
+
+ if(dbEntity==null) {
+ return "redirect:/admin/options/options.html";
+ }
+ }
+
+ //validate if it contains an existing code
+ ProductOption byCode = productOptionService.getByCode(store, option.getCode());
+ if(byCode!=null) {
+ ObjectError error = new ObjectError("code",messages.getMessage("message.code.exist", locale));
+ result.addError(error);
+ }
+
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+
+ List<ProductOptionDescription> descriptions = option.getDescriptionsList();
+
+ if(descriptions!=null) {
+
+ for(ProductOptionDescription description : descriptions) {
+
+ String code = description.getLanguage().getCode();
+ Language l = langs.get(code);
+ description.setLanguage(l);
+ description.setProductOption(option);
+
+ }
+
+ }
+
+ option.setDescriptions(new HashSet<ProductOptionDescription>(descriptions));
+ option.setMerchantStore(store);
+
+
+ if (result.hasErrors()) {
+ return "catalogue-options-details";
+ }
+
+
+
+
+ productOptionService.saveOrUpdate(option);
+
+
+
+
+ model.addAttribute("success","success");
+ return "catalogue-options-details";
+ }
+
+
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/options/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageOptions(HttpServletRequest request, HttpServletResponse response) {
+
+ String optionName = request.getParameter("name");
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<ProductOption> options = null;
+
+ if(!StringUtils.isBlank(optionName)) {
+
+ options = productOptionService.getByName(store, optionName, language);
+
+ } else {
+
+ options = productOptionService.listByStore(store, language);
+
+ }
+
+
+
+ for(ProductOption option : options) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("optionId", option.getId());
+ entry.put("display", option.isReadOnly());
+ ProductOptionDescription description = option.getDescriptions().iterator().next();
+
+ entry.put("name", description.getName());
+ entry.put("type", option.getProductOptionType());//TODO resolve with option type label
+ resp.addDataEntry(entry);
+
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging options", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+
+ }
+
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-options", "catalogue-options");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+ @RequestMapping(value="/admin/options/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteOption(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sid = request.getParameter("optionId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long id = Long.parseLong(sid);
+
+ ProductOption entity = productOptionService.getById(id);
+
+ if(entity==null || entity.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+
+ } else {
+
+ productOptionService.delete(entity);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting option", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/OptionsValueController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/OptionsValueController.java
new file mode 100755
index 0000000..a9e226b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/OptionsValueController.java
@@ -0,0 +1,430 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValue;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValueDescription;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionValueService;
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.content.model.InputContentFile;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class OptionsValueController {
+
+ @Autowired
+ LanguageService languageService;
+
+
+ @Autowired
+ ProductOptionValueService productOptionValueService;
+
+ @Autowired
+ LabelUtils messages;
+
+ @Autowired
+ private ContentService contentService;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(OptionsValueController.class);
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/options/optionvalues.html", method=RequestMethod.GET)
+ public String displayOptions(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+
+ //subsequent ajax call
+
+
+ return "catalogue-optionsvalues-list";
+
+
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/options/editOptionValue.html", method=RequestMethod.GET)
+ public String displayOptionEdit(@RequestParam("id") long optionId, HttpServletRequest request, HttpServletResponse response, Model model, Locale locale) throws Exception {
+ return displayOption(optionId,request,response,model,locale);
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/options/createOptionValue.html", method=RequestMethod.GET)
+ public String displayOption(HttpServletRequest request, HttpServletResponse response, Model model, Locale locale) throws Exception {
+ return displayOption(null,request,response,model,locale);
+ }
+
+ private String displayOption(Long optionId, HttpServletRequest request, HttpServletResponse response,Model model,Locale locale) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Language> languages = store.getLanguages();
+
+ Set<ProductOptionValueDescription> descriptions = new HashSet<ProductOptionValueDescription>();
+
+ ProductOptionValue option = new ProductOptionValue();
+
+ if(optionId!=null && optionId!=0) {//edit mode
+
+
+ option = productOptionValueService.getById(store, optionId);
+
+
+ if(option==null) {
+ return "redirect:/admin/options/optionsvalues.html";
+ }
+
+ Set<ProductOptionValueDescription> optionDescriptions = option.getDescriptions();
+
+
+
+ for(Language l : languages) {
+
+ ProductOptionValueDescription optionDescription = null;
+
+ if(optionDescriptions!=null) {
+
+ for(ProductOptionValueDescription description : optionDescriptions) {
+
+ String code = description.getLanguage().getCode();
+ if(code.equals(l.getCode())) {
+ optionDescription = description;
+ }
+
+ }
+
+ }
+
+ if(optionDescription==null) {
+ optionDescription = new ProductOptionValueDescription();
+ optionDescription.setLanguage(l);
+ }
+
+ descriptions.add(optionDescription);
+
+ }
+
+ } else {
+
+ for(Language l : languages) {
+
+ ProductOptionValueDescription desc = new ProductOptionValueDescription();
+ desc.setLanguage(l);
+ descriptions.add(desc);
+
+ }
+
+ option.setDescriptions(descriptions);
+
+ }
+
+
+
+ model.addAttribute("optionValue", option);
+ return "catalogue-optionsvalues-details";
+
+
+ }
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/options/saveOptionValue.html", method=RequestMethod.POST)
+ public String saveOption(@Valid @ModelAttribute("optionValue") ProductOptionValue optionValue, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ ProductOptionValue dbEntity = null;
+
+ if(optionValue.getId() != null && optionValue.getId() >0) { //edit entry
+
+ //get from DB
+ dbEntity = productOptionValueService.getById(store,optionValue.getId());
+
+ if(dbEntity==null) {
+ return "redirect:/admin/options/optionsvalues.html";
+ }
+
+
+ }
+
+ //validate if it contains an existing code
+ ProductOptionValue byCode = productOptionValueService.getByCode(store, optionValue.getCode());
+ if(byCode!=null) {
+ ObjectError error = new ObjectError("code",messages.getMessage("message.code.exist", locale));
+ result.addError(error);
+ }
+
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+
+ List<ProductOptionValueDescription> descriptions = optionValue.getDescriptionsList();
+ if(descriptions!=null && descriptions.size()>0) {
+
+ Set<ProductOptionValueDescription> descs = new HashSet<ProductOptionValueDescription>();
+
+ //if(descs==null || descs.size()==0) {
+
+ //} else {
+
+ optionValue.setDescriptions(descs);
+ for(ProductOptionValueDescription description : descriptions) {
+
+ if(StringUtils.isBlank(description.getName())) {
+ ObjectError error = new ObjectError("name",messages.getMessage("message.name.required", locale));
+ result.addError(error);
+ } else {
+
+
+ String code = description.getLanguage().getCode();
+ Language l = langs.get(code);
+ description.setLanguage(l);
+ description.setProductOptionValue(optionValue);
+ descs.add(description);
+
+ }
+
+
+ }
+
+
+ } else {
+
+ ObjectError error = new ObjectError("name",messages.getMessage("message.name.required", locale));
+ result.addError(error);
+
+ }
+
+
+ optionValue.setMerchantStore(store);
+
+
+ if (result.hasErrors()) {
+ return "catalogue-optionsvalues-details";
+ }
+
+
+ if(optionValue.getImage()!=null && !optionValue.getImage().isEmpty()) {
+
+ String imageName = optionValue.getImage().getOriginalFilename();
+ InputStream inputStream = optionValue.getImage().getInputStream();
+ InputContentFile cmsContentImage = new InputContentFile();
+ cmsContentImage.setFileName(imageName);
+ cmsContentImage.setMimeType( optionValue.getImage().getContentType() );
+ cmsContentImage.setFile( inputStream );
+ contentService.addOptionImage(store.getCode(), cmsContentImage);
+
+ optionValue.setProductOptionValueImage(imageName);
+
+ }
+
+ productOptionValueService.saveOrUpdate(optionValue);
+
+
+
+
+ model.addAttribute("success","success");
+ return "catalogue-optionsvalues-details";
+ }
+
+
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/optionsvalues/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageOptions(HttpServletRequest request, HttpServletResponse response) {
+
+ String optionName = request.getParameter("name");
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<ProductOptionValue> options = null;
+
+ if(!StringUtils.isBlank(optionName)) {
+
+ //productOptionValueService.getByName(store, optionName, language);
+
+ } else {
+
+ options = productOptionValueService.listByStore(store, language);
+
+ }
+
+
+
+ for(ProductOptionValue option : options) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("optionValueId", option.getId());
+
+ ProductOptionValueDescription description = option.getDescriptions().iterator().next();
+
+ entry.put("name", description.getName());
+ entry.put("image", new StringBuilder().append(store.getCode()).append("/").append(FileContentType.PROPERTY.name()).append("/").append(option.getProductOptionValueImage()).toString());
+ resp.addDataEntry(entry);
+
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging options", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/optionsvalues/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteOptionValue(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sid = request.getParameter("optionValueId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long id = Long.parseLong(sid);
+
+ ProductOptionValue entity = productOptionValueService.getById(store, id);
+
+ if(entity==null || entity.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+
+ } else {
+
+ productOptionValueService.delete(entity);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting option", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/optionsvalues/removeImage.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeImage(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String optionValueId = request.getParameter("optionId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long id = Long.parseLong(optionValueId);
+
+ ProductOptionValue optionValue = productOptionValueService.getById(store, id);
+
+
+
+ contentService.removeFile(store.getCode(), FileContentType.PROPERTY, optionValue.getProductOptionValueImage());
+
+ store.setStoreLogo(null);
+ optionValue.setProductOptionValueImage(null);
+ productOptionValueService.update(optionValue);
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-options", "catalogue-options");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductAttributeController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductAttributeController.java
new file mode 100644
index 0000000..61fef22
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductAttributeController.java
@@ -0,0 +1,532 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductAttribute;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOption;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionDescription;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValue;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValueDescription;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionValueService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.ProductPriceUtils;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ProductAttributeController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ProductAttributeController.class);
+
+ private final static String TEXT_OPTION = "text";
+
+ @Autowired
+ private ProductAttributeService productAttributeService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ProductPriceUtils priceUtil;
+
+ @Autowired
+ ProductOptionService productOptionService;
+
+ @Autowired
+ ProductOptionValueService productOptionValueService;
+
+ @Autowired
+ LabelUtils messages;
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/attributes/list.html", method=RequestMethod.GET)
+ public String displayProductAttributes(@RequestParam("id") long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(productId);
+
+ if(product==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ model.addAttribute("product",product);
+ return "admin-products-attributes";
+
+ }
+
+
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/attributes/page.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageAttributes(HttpServletRequest request, HttpServletResponse response) {
+
+ //String attribute = request.getParameter("attribute");
+ String sProductId = request.getParameter("productId");
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ Long productId;
+ Product product = null;
+
+ try {
+ productId = Long.parseLong(sProductId);
+ } catch (Exception e) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ try {
+
+
+ product = productService.getById(productId);
+
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //List<ProductAttribute> attributes = productAttributeService.getByProductId(store, product, language);
+
+ for(ProductAttribute attr : product.getAttributes()) {
+
+ Map entry = new HashMap();
+ entry.put("attributeId", attr.getId());
+
+ List<ProductOptionDescription> optionsDescriptions = attr.getProductOption().getDescriptionsSettoList();
+ ProductOptionDescription optionDescription = attr.getProductOption().getDescriptionsSettoList().get(0);
+ for(ProductOptionDescription desc : optionsDescriptions) {
+ if(desc.getLanguage().getId().intValue()==language.getId().intValue()) {
+ optionDescription = desc;
+ }
+ }
+
+ List<ProductOptionValueDescription> optionValuesDescriptions = attr.getProductOptionValue().getDescriptionsSettoList();
+ ProductOptionValueDescription optionValueDescription = attr.getProductOptionValue().getDescriptionsSettoList().get(0);
+ for(ProductOptionValueDescription desc : optionValuesDescriptions) {
+ if(desc.getLanguage().getId().intValue()==language.getId().intValue()) {
+ optionValueDescription = desc;
+ }
+ }
+ entry.put("attribute", optionDescription.getName());
+ entry.put("display", attr.getAttributeDisplayOnly());
+ entry.put("value", optionValueDescription.getName());
+ entry.put("order", attr.getProductOptionSortOrder());
+ entry.put("price", priceUtil.getAdminFormatedAmountWithCurrency(store,attr.getProductAttributePrice()));
+
+ resp.addDataEntry(entry);
+
+
+
+ }
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/attributes/editAttribute.html", method=RequestMethod.GET)
+ public String displayAttributeEdit(@RequestParam("productId") Long productId, @RequestParam("id") Long id, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ return displayAttribute(productId, id,model,request,response);
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/attribute/createAttribute.html", method=RequestMethod.GET)
+ public String displayAttributeCreate(@RequestParam("productId") Long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ return displayAttribute(productId, null,model,request,response);
+
+ }
+
+ private String displayAttribute(Long productId, Long id, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ //get product
+ Product product = productService.getById(productId);
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ List<Language> languages = store.getLanguages();
+
+ ProductAttribute attribute = null;
+
+ //get Options
+ List<ProductOption> options = productOptionService.listByStore(store, language);
+ //get OptionsValues
+ List<ProductOptionValue> optionsValues = productOptionValueService.listByStoreNoReadOnly(store, language);
+
+ if(id!=null && id.intValue()!=0) {//edit mode
+
+ attribute = productAttributeService.getById(id);
+ attribute.setAttributePrice(priceUtil.getAdminFormatedAmount(store, attribute.getProductAttributePrice()));
+ attribute.setAttributeAdditionalWeight(String.valueOf(attribute.getProductAttributeWeight().intValue()));
+ attribute.setAttributeSortOrder(String.valueOf(attribute.getProductOptionSortOrder()));
+
+ } else {
+
+ attribute = new ProductAttribute();
+ attribute.setProduct(product);
+ ProductOptionValue value = new ProductOptionValue();
+ Set<ProductOptionValueDescription> descriptions = new HashSet<ProductOptionValueDescription>();
+ for(Language l : languages) {
+
+ ProductOptionValueDescription desc = new ProductOptionValueDescription();
+ desc.setLanguage(l);
+ descriptions.add(desc);
+
+
+ }
+
+ value.setDescriptions(descriptions);
+ attribute.setProductOptionValue(value);
+ }
+
+ model.addAttribute("optionsValues",optionsValues);
+ model.addAttribute("options",options);
+ model.addAttribute("attribute",attribute);
+ model.addAttribute("product",product);
+ return "admin-products-attribute-details";
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/attributes/attribute/save.html", method=RequestMethod.POST)
+ public String saveAttribute(@Valid @ModelAttribute("attribute") ProductAttribute attribute, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+ Product product = productService.getById(attribute.getProduct().getId());
+
+ model.addAttribute("product",product);
+
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ //get Options
+ List<ProductOption> options = productOptionService.listByStore(store, language);
+ //get OptionsValues
+ List<ProductOptionValue> optionsValues = productOptionValueService.listByStoreNoReadOnly(store, language);
+
+ model.addAttribute("optionsValues",optionsValues);
+ model.addAttribute("options",options);
+
+ ProductAttribute dbEntity = null;
+
+ if(attribute.getId() != null && attribute.getId() >0) { //edit entry
+
+ //get from DB
+ dbEntity = productAttributeService.getById(attribute.getId());
+
+ if(dbEntity==null) {
+ return "redirect:/admin/products/attributes/list.html";
+ }
+
+ if(dbEntity.getProductOption().getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/attributes/list.html";
+ }
+ }
+
+ //validate price
+ BigDecimal submitedPrice = null;
+ try {
+ submitedPrice = priceUtil.getAmount(attribute.getAttributePrice());
+ attribute.setProductAttributePrice(submitedPrice);
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("attributePrice",messages.getMessage("NotEmpty.product.productPrice", locale));
+ result.addError(error);
+ }
+
+ //validate sort order
+ try {
+ Integer sortOrder = Integer.parseInt(attribute.getAttributeSortOrder());
+ attribute.setProductOptionSortOrder(sortOrder);
+ } catch(Exception e) {
+ ObjectError error = new ObjectError("attributeSortOrder",messages.getMessage("message.number.invalid", locale));
+ result.addError(error);
+ }
+
+ //validate weight
+ try {
+ Integer weight = Integer.parseInt(attribute.getAttributeAdditionalWeight());
+ attribute.setProductAttributeWeight(new BigDecimal(weight));
+ } catch(Exception e) {
+ ObjectError error = new ObjectError("attributeAdditionalWeight",messages.getMessage("message.number.invalid", locale));
+ result.addError(error);
+ }
+
+ if(attribute.getProductOption()==null) {
+ ObjectError error = new ObjectError("productOption.id",messages.getMessage("message.productoption.required", locale));
+ result.addError(error);
+ return "admin-products-attribute-details";
+ }
+
+
+ //check type
+ ProductOption option = attribute.getProductOption();
+ option = productOptionService.getById(option.getId());
+ attribute.setProductOption(option);
+
+ if(option.getProductOptionType().equals(TEXT_OPTION)) {
+
+ if(dbEntity!=null && dbEntity.getProductOption().getProductOptionType().equals(TEXT_OPTION)) {//bcz it is overwrited by hidden product option value list
+ if(dbEntity.getProductOptionValue()!=null) {
+ ProductOptionValue optVal = dbEntity.getProductOptionValue();
+ List<ProductOptionValueDescription> descriptions = attribute.getProductOptionValue().getDescriptionsList();
+ Set<ProductOptionValueDescription> descriptionsSet = new HashSet<ProductOptionValueDescription>();
+ for(ProductOptionValueDescription description : descriptions) {
+ description.setProductOptionValue(optVal);
+ description.setName(description.getDescription().length()<15 ? description.getDescription() : description.getDescription().substring(0,15));
+ descriptionsSet.add(description);
+ }
+ optVal.setDescriptions(descriptionsSet);
+ optVal.setProductOptionDisplayOnly(true);
+ productOptionValueService.saveOrUpdate(optVal);
+ attribute.setProductOptionValue(optVal);
+ }
+ } else {//create a new value
+
+ //create new option value
+ List<ProductOptionValueDescription> descriptions = attribute.getProductOptionValue().getDescriptionsList();
+ Set<ProductOptionValueDescription> newDescriptions = new HashSet<ProductOptionValueDescription>();
+ ProductOptionValue newValue = new ProductOptionValue();
+ for(ProductOptionValueDescription description : descriptions) {
+ ProductOptionValueDescription optionValueDescription = new ProductOptionValueDescription();
+ optionValueDescription.setAuditSection(description.getAuditSection());
+ optionValueDescription.setLanguage(description.getLanguage());
+ optionValueDescription.setName(description.getDescription().length()<15 ? description.getDescription() : description.getDescription().substring(0,15));
+ optionValueDescription.setLanguage(description.getLanguage());
+ optionValueDescription.setDescription(description.getDescription());
+ optionValueDescription.setProductOptionValue(newValue);
+ newDescriptions.add(optionValueDescription);
+ }
+
+ //code generation
+ String code = RandomStringUtils.randomAlphanumeric(10).toUpperCase();
+ newValue.setCode(code);
+ newValue.setMerchantStore(store);
+ newValue.setProductOptionValueSortOrder(attribute.getProductOptionValue().getProductOptionValueSortOrder());
+ newValue.setDescriptions(newDescriptions);
+ newValue.setProductOptionDisplayOnly(true);
+ productOptionValueService.save(newValue);
+ attribute.setProductOptionValue(newValue);
+ attribute.setAttributeDisplayOnly(true);
+
+ }
+
+ }
+
+
+
+ if(attribute.getProductOptionValue().getId()==null) {
+ ObjectError error = new ObjectError("productOptionValue.id",messages.getMessage("message.productoptionvalue.required", locale));
+ result.addError(error);
+ }
+
+ model.addAttribute("attribute",attribute);
+
+
+ if (result.hasErrors()) {
+ return "admin-products-attribute-details";
+ }
+
+ productAttributeService.saveOrUpdate(attribute);
+
+ model.addAttribute("success","success");
+ return "admin-products-attribute-details";
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/attributes/attribute/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteProductPrice(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sAttributeid = request.getParameter("attributeId");
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long attributeId = Long.parseLong(sAttributeid);
+ ProductAttribute attribute = productAttributeService.getById(attributeId);
+
+
+ if(attribute==null || attribute.getProduct().getMerchantStore().getId().intValue()!=store.getId()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ productAttributeService.delete(attribute);
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product price", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/attributes/getAttributeType.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String checkAttributeType(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+ String sOptionId = request.getParameter("optionId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ Long prodoptionId;
+ ProductOption productOption = null;
+
+ try {
+ prodoptionId = Long.parseLong(sOptionId);
+ } catch (Exception e) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product Option id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ try {
+
+
+ productOption = productOptionService.getById(prodoptionId);
+
+ if(productOption==null) {
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(productOption.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+
+ Map entry = new HashMap();
+
+
+
+ entry.put("type", productOption.getProductOptionType());
+ resp.addDataEntry(entry);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products", "catalogue-products");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductController.java
new file mode 100644
index 0000000..99b799f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductController.java
@@ -0,0 +1,1020 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.awt.image.BufferedImage;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.model.CategoryDescription;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductAttribute;
+import com.salesmanager.core.business.catalog.product.model.availability.ProductAvailability;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.model.image.ProductImage;
+import com.salesmanager.core.business.catalog.product.model.image.ProductImageDescription;
+import com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPrice;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPriceDescription;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationship;
+import com.salesmanager.core.business.catalog.product.model.type.ProductType;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.image.ProductImageService;
+import com.salesmanager.core.business.catalog.product.service.manufacturer.ManufacturerService;
+import com.salesmanager.core.business.catalog.product.service.type.ProductTypeService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.tax.model.taxclass.TaxClass;
+import com.salesmanager.core.business.tax.service.TaxClassService;
+import com.salesmanager.core.utils.CoreConfiguration;
+import com.salesmanager.core.utils.ProductPriceUtils;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.DateUtil;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ProductController {
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ProductController.class);
+
+
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ManufacturerService manufacturerService;
+
+ @Autowired
+ private ProductTypeService productTypeService;
+
+ @Autowired
+ private ProductImageService productImageService;
+
+ @Autowired
+ private TaxClassService taxClassService;
+
+ @Autowired
+ private ProductPriceUtils priceUtil;
+
+ @Autowired
+ LabelUtils messages;
+
+ @Autowired
+ private CoreConfiguration configuration;
+
+ @Autowired
+ CategoryService categoryService;
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/editProduct.html", method=RequestMethod.GET)
+ public String displayProductEdit(@RequestParam("id") long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ return displayProduct(productId,model,request,response);
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/createProduct.html", method=RequestMethod.GET)
+ public String displayProductCreate(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ return displayProduct(null,model,request,response);
+
+ }
+
+
+
+ private String displayProduct(Long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ List<Manufacturer> manufacturers = manufacturerService.listByStore(store, language);
+
+ List<ProductType> productTypes = productTypeService.list();
+
+ List<TaxClass> taxClasses = taxClassService.listByStore(store);
+
+ List<Language> languages = store.getLanguages();
+
+
+
+ com.salesmanager.web.admin.entity.catalog.Product product = new com.salesmanager.web.admin.entity.catalog.Product();
+ List<ProductDescription> descriptions = new ArrayList<ProductDescription>();
+
+ if(productId!=null && productId!=0) {//edit mode
+
+
+ Product dbProduct = productService.getById(productId);
+
+ if(dbProduct==null || dbProduct.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ product.setProduct(dbProduct);
+ Set<ProductDescription> productDescriptions = dbProduct.getDescriptions();
+
+ for(Language l : languages) {
+
+ ProductDescription productDesc = null;
+ for(ProductDescription desc : productDescriptions) {
+
+ Language lang = desc.getLanguage();
+ if(lang.getCode().equals(l.getCode())) {
+ productDesc = desc;
+ }
+
+ }
+
+ if(productDesc==null) {
+ productDesc = new ProductDescription();
+ productDesc.setLanguage(l);
+ }
+
+ descriptions.add(productDesc);
+
+ }
+
+ for(ProductImage image : dbProduct.getImages()) {
+ if(image.isDefaultImage()) {
+ product.setProductImage(image);
+ break;
+ }
+
+ }
+
+
+ ProductAvailability productAvailability = null;
+ ProductPrice productPrice = null;
+
+ Set<ProductAvailability> availabilities = dbProduct.getAvailabilities();
+ if(availabilities!=null && availabilities.size()>0) {
+
+ for(ProductAvailability availability : availabilities) {
+ if(availability.getRegion().equals(com.salesmanager.core.constants.Constants.ALL_REGIONS)) {
+ productAvailability = availability;
+ Set<ProductPrice> prices = availability.getPrices();
+ for(ProductPrice price : prices) {
+ if(price.isDefaultPrice()) {
+ productPrice = price;
+ product.setProductPrice(priceUtil.getAdminFormatedAmount(store, productPrice.getProductPriceAmount()));
+ }
+ }
+ }
+ }
+ }
+
+ if(productAvailability==null) {
+ productAvailability = new ProductAvailability();
+ }
+
+ if(productPrice==null) {
+ productPrice = new ProductPrice();
+ }
+
+ product.setAvailability(productAvailability);
+ product.setPrice(productPrice);
+ product.setDescriptions(descriptions);
+
+
+ product.setDateAvailable(DateUtil.formatDate(dbProduct.getDateAvailable()));
+
+
+ } else {
+
+
+ for(Language l : languages) {
+
+ ProductDescription desc = new ProductDescription();
+ desc.setLanguage(l);
+ descriptions.add(desc);
+
+ }
+
+ Product prod = new Product();
+
+ prod.setAvailable(true);
+
+ ProductAvailability productAvailability = new ProductAvailability();
+ ProductPrice price = new ProductPrice();
+ product.setPrice(price);
+ product.setAvailability(productAvailability);
+ product.setProduct(prod);
+ product.setDescriptions(descriptions);
+ product.setDateAvailable(DateUtil.formatDate(new Date()));
+
+
+ }
+
+
+
+
+
+ model.addAttribute("product",product);
+ model.addAttribute("manufacturers", manufacturers);
+ model.addAttribute("productTypes", productTypes);
+ model.addAttribute("taxClasses", taxClasses);
+ return "admin-products-edit";
+ }
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/save.html", method=RequestMethod.POST)
+ public String saveProduct(@Valid @ModelAttribute("product") com.salesmanager.web.admin.entity.catalog.Product product, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ //display menu
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Manufacturer> manufacturers = manufacturerService.listByStore(store, language);
+
+ List<ProductType> productTypes = productTypeService.list();
+
+ List<TaxClass> taxClasses = taxClassService.listByStore(store);
+
+ List<Language> languages = store.getLanguages();
+
+ model.addAttribute("manufacturers", manufacturers);
+ model.addAttribute("productTypes", productTypes);
+ model.addAttribute("taxClasses", taxClasses);
+
+ //validate price
+ BigDecimal submitedPrice = null;
+ try {
+ submitedPrice = priceUtil.getAmount(product.getProductPrice());
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("productPrice",messages.getMessage("NotEmpty.product.productPrice", locale));
+ result.addError(error);
+ }
+ Date date = new Date();
+ if(!StringUtils.isBlank(product.getDateAvailable())) {
+ try {
+ date = DateUtil.getDate(product.getDateAvailable());
+ product.getAvailability().setProductDateAvailable(date);
+ product.setDateAvailable(DateUtil.formatDate(date));
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("dateAvailable",messages.getMessage("message.invalid.date", locale));
+ result.addError(error);
+ }
+ }
+
+
+
+ //validate image
+ if(product.getImage()!=null && !product.getImage().isEmpty()) {
+
+ try {
+
+ String maxHeight = configuration.getProperty("PRODUCT_IMAGE_MAX_HEIGHT_SIZE");
+ String maxWidth = configuration.getProperty("PRODUCT_IMAGE_MAX_WIDTH_SIZE");
+ String maxSize = configuration.getProperty("PRODUCT_IMAGE_MAX_SIZE");
+
+
+ BufferedImage image = ImageIO.read(product.getImage().getInputStream());
+
+
+ if(!StringUtils.isBlank(maxHeight)) {
+
+ int maxImageHeight = Integer.parseInt(maxHeight);
+ if(image.getHeight()>maxImageHeight) {
+ ObjectError error = new ObjectError("image",messages.getMessage("message.image.height", locale) + " {"+maxHeight+"}");
+ result.addError(error);
+ }
+
+ }
+
+ if(!StringUtils.isBlank(maxWidth)) {
+
+ int maxImageWidth = Integer.parseInt(maxWidth);
+ if(image.getWidth()>maxImageWidth) {
+ ObjectError error = new ObjectError("image",messages.getMessage("message.image.width", locale) + " {"+maxWidth+"}");
+ result.addError(error);
+ }
+
+ }
+
+ if(!StringUtils.isBlank(maxSize)) {
+
+ int maxImageSize = Integer.parseInt(maxSize);
+ if(product.getImage().getSize()>maxImageSize) {
+ ObjectError error = new ObjectError("image",messages.getMessage("message.image.size", locale) + " {"+maxSize+"}");
+ result.addError(error);
+ }
+
+ }
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot validate product image", e);
+ }
+
+ }
+
+
+
+ if (result.hasErrors()) {
+ return "admin-products-edit";
+ }
+
+ Product newProduct = product.getProduct();
+ ProductAvailability newProductAvailability = null;
+ ProductPrice newProductPrice = null;
+
+ Set<ProductPriceDescription> productPriceDescriptions = null;
+
+ //get tax class
+ //TaxClass taxClass = newProduct.getTaxClass();
+ //TaxClass dbTaxClass = taxClassService.getById(taxClass.getId());
+ Set<ProductPrice> prices = new HashSet<ProductPrice>();
+ Set<ProductAvailability> availabilities = new HashSet<ProductAvailability>();
+
+ if(product.getProduct().getId()!=null && product.getProduct().getId().longValue()>0) {
+
+
+ //get actual product
+ newProduct = productService.getById(product.getProduct().getId());
+ if(newProduct!=null && newProduct.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ //copy properties
+ newProduct.setSku(product.getProduct().getSku());
+ newProduct.setAvailable(product.getProduct().isAvailable());
+ newProduct.setDateAvailable(date);
+ newProduct.setManufacturer(product.getProduct().getManufacturer());
+ newProduct.setType(product.getProduct().getType());
+ newProduct.setProductHeight(product.getProduct().getProductHeight());
+ newProduct.setProductLength(product.getProduct().getProductLength());
+ newProduct.setProductWeight(product.getProduct().getProductWeight());
+ newProduct.setProductWidth(product.getProduct().getProductWidth());
+ newProduct.setProductVirtual(product.getProduct().isProductVirtual());
+ newProduct.setProductShipeable(product.getProduct().isProductShipeable());
+ newProduct.setTaxClass(product.getProduct().getTaxClass());
+
+
+ Set<ProductAvailability> avails = newProduct.getAvailabilities();
+ if(avails !=null && avails.size()>0) {
+
+ for(ProductAvailability availability : avails) {
+ if(availability.getRegion().equals(com.salesmanager.core.constants.Constants.ALL_REGIONS)) {
+
+
+ newProductAvailability = availability;
+ Set<ProductPrice> productPrices = availability.getPrices();
+
+ for(ProductPrice price : productPrices) {
+ if(price.isDefaultPrice()) {
+ newProductPrice = price;
+ newProductPrice.setProductPriceAmount(submitedPrice);
+ productPriceDescriptions = price.getDescriptions();
+ } else {
+ prices.add(price);
+ }
+ }
+ } else {
+ availabilities.add(availability);
+ }
+ }
+ }
+
+
+ for(ProductImage image : newProduct.getImages()) {
+ if(image.isDefaultImage()) {
+ product.setProductImage(image);
+ }
+ }
+ }
+
+ if(newProductPrice==null) {
+ newProductPrice = new ProductPrice();
+ newProductPrice.setDefaultPrice(true);
+ newProductPrice.setProductPriceAmount(submitedPrice);
+ }
+
+ if(product.getProductImage()!=null && product.getProductImage().getId() == null) {
+ product.setProductImage(null);
+ }
+
+ if(productPriceDescriptions==null) {
+ productPriceDescriptions = new HashSet<ProductPriceDescription>();
+ for(ProductDescription description : product.getDescriptions()) {
+ ProductPriceDescription ppd = new ProductPriceDescription();
+ ppd.setProductPrice(newProductPrice);
+ ppd.setLanguage(description.getLanguage());
+ ppd.setName(ProductPriceDescription.DEFAULT_PRICE_DESCRIPTION);
+ productPriceDescriptions.add(ppd);
+ }
+ newProductPrice.setDescriptions(productPriceDescriptions);
+ }
+
+ newProduct.setMerchantStore(store);
+
+ if(newProductAvailability==null) {
+ newProductAvailability = new ProductAvailability();
+ }
+
+
+ newProductAvailability.setProductQuantity(product.getAvailability().getProductQuantity());
+ newProductAvailability.setProductQuantityOrderMin(product.getAvailability().getProductQuantityOrderMin());
+ newProductAvailability.setProductQuantityOrderMax(product.getAvailability().getProductQuantityOrderMax());
+ newProductAvailability.setProduct(newProduct);
+ newProductAvailability.setPrices(prices);
+ availabilities.add(newProductAvailability);
+
+ newProductPrice.setProductAvailability(newProductAvailability);
+ prices.add(newProductPrice);
+
+ newProduct.setAvailabilities(availabilities);
+
+ Set<ProductDescription> descriptions = new HashSet<ProductDescription>();
+ if(product.getDescriptions()!=null && product.getDescriptions().size()>0) {
+
+ for(ProductDescription description : product.getDescriptions()) {
+ description.setProduct(newProduct);
+ descriptions.add(description);
+
+ }
+ }
+
+ newProduct.setDescriptions(descriptions);
+ product.setDateAvailable(DateUtil.formatDate(date));
+
+
+
+ if(product.getImage()!=null && !product.getImage().isEmpty()) {
+
+
+
+ String imageName = product.getImage().getOriginalFilename();
+
+
+
+ ProductImage productImage = new ProductImage();
+ productImage.setDefaultImage(true);
+ productImage.setImage(product.getImage().getInputStream());
+ productImage.setProductImage(imageName);
+
+
+ List<ProductImageDescription> imagesDescriptions = new ArrayList<ProductImageDescription>();
+
+ for(Language l : languages) {
+
+ ProductImageDescription imageDescription = new ProductImageDescription();
+ imageDescription.setName(imageName);
+ imageDescription.setLanguage(l);
+ imageDescription.setProductImage(productImage);
+ imagesDescriptions.add(imageDescription);
+
+ }
+
+ productImage.setDescriptions(imagesDescriptions);
+ productImage.setProduct(newProduct);
+
+ newProduct.getImages().add(productImage);
+
+ productService.saveOrUpdate(newProduct);
+
+ //product displayed
+ product.setProductImage(productImage);
+
+
+ } else {
+
+ productService.saveOrUpdate(newProduct);
+
+ }
+
+
+ model.addAttribute("success","success");
+
+ return "admin-products-edit";
+ }
+
+
+ /**
+ * Creates a duplicate product with the same inner object graph
+ * Will ignore SKU, reviews and images
+ * @param id
+ * @param result
+ * @param model
+ * @param request
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/product/duplicate.html", method=RequestMethod.POST)
+ public String duplicateProduct(@ModelAttribute("productId") Long id, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ //display menu
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Manufacturer> manufacturers = manufacturerService.listByStore(store, language);
+ List<ProductType> productTypes = productTypeService.list();
+ List<TaxClass> taxClasses = taxClassService.listByStore(store);
+
+ model.addAttribute("manufacturers", manufacturers);
+ model.addAttribute("productTypes", productTypes);
+ model.addAttribute("taxClasses", taxClasses);
+
+ Product dbProduct = productService.getById(id);
+ Product newProduct = new Product();
+
+ if(dbProduct==null || dbProduct.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ //Make a copy of the product
+ com.salesmanager.web.admin.entity.catalog.Product product = new com.salesmanager.web.admin.entity.catalog.Product();
+
+ Set<ProductAvailability> availabilities = new HashSet<ProductAvailability>();
+ //availability - price
+ for(ProductAvailability pAvailability : dbProduct.getAvailabilities()) {
+
+ ProductAvailability availability = new ProductAvailability();
+ availability.setProductDateAvailable(pAvailability.getProductDateAvailable());
+ availability.setProductIsAlwaysFreeShipping(pAvailability.getProductIsAlwaysFreeShipping());
+ availability.setProductQuantity(pAvailability.getProductQuantity());
+ availability.setProductQuantityOrderMax(pAvailability.getProductQuantityOrderMax());
+ availability.setProductQuantityOrderMin(pAvailability.getProductQuantityOrderMin());
+ availability.setProductStatus(pAvailability.getProductStatus());
+ availability.setRegion(pAvailability.getRegion());
+ availability.setRegionVariant(pAvailability.getRegionVariant());
+
+
+
+ Set<ProductPrice> prices = pAvailability.getPrices();
+ for(ProductPrice pPrice : prices) {
+
+ ProductPrice price = new ProductPrice();
+ price.setDefaultPrice(pPrice.isDefaultPrice());
+ price.setProductPriceAmount(pPrice.getProductPriceAmount());
+ price.setProductAvailability(availability);
+ price.setProductPriceSpecialAmount(pPrice.getProductPriceSpecialAmount());
+ price.setProductPriceSpecialEndDate(pPrice.getProductPriceSpecialEndDate());
+ price.setProductPriceSpecialStartDate(pPrice.getProductPriceSpecialStartDate());
+ price.setProductPriceType(pPrice.getProductPriceType());
+
+ Set<ProductPriceDescription> priceDescriptions = new HashSet<ProductPriceDescription>();
+ //price descriptions
+ for(ProductPriceDescription pPriceDescription : pPrice.getDescriptions()) {
+
+ ProductPriceDescription productPriceDescription = new ProductPriceDescription();
+ productPriceDescription.setAuditSection(pPriceDescription.getAuditSection());
+ productPriceDescription.setDescription(pPriceDescription.getDescription());
+ productPriceDescription.setName(pPriceDescription.getName());
+ productPriceDescription.setLanguage(pPriceDescription.getLanguage());
+ productPriceDescription.setProductPrice(price);
+ priceDescriptions.add(productPriceDescription);
+
+ }
+ price.setDescriptions(priceDescriptions);
+ if(price.isDefaultPrice()) {
+ product.setPrice(price);
+ product.setProductPrice(priceUtil.getAdminFormatedAmount(store, price.getProductPriceAmount()));
+ }
+
+ availability.getPrices().add(price);
+ }
+
+
+
+ if(availability.getRegion().equals(com.salesmanager.core.constants.Constants.ALL_REGIONS)) {
+ product.setAvailability(availability);
+ }
+
+ availabilities.add(availability);
+ }
+
+ newProduct.setAvailabilities(availabilities);
+
+
+
+ //attributes
+ Set<ProductAttribute> attributes = new HashSet<ProductAttribute>();
+ for(ProductAttribute pAttribute : dbProduct.getAttributes()) {
+
+ ProductAttribute attribute = new ProductAttribute();
+ attribute.setAttributeDefault(pAttribute.getAttributeDefault());
+ attribute.setAttributeDiscounted(pAttribute.getAttributeDiscounted());
+ attribute.setAttributeDisplayOnly(pAttribute.getAttributeDisplayOnly());
+ attribute.setAttributeRequired(pAttribute.getAttributeRequired());
+ attribute.setProductAttributePrice(pAttribute.getProductAttributePrice());
+ attribute.setProductAttributeIsFree(pAttribute.getProductAttributeIsFree());
+ attribute.setProductAttributeWeight(pAttribute.getProductAttributeWeight());
+ attribute.setProductOption(pAttribute.getProductOption());
+ attribute.setProductOptionSortOrder(pAttribute.getProductOptionSortOrder());
+ attribute.setProductOptionValue(pAttribute.getProductOptionValue());
+ attributes.add(attribute);
+
+ }
+ newProduct.setAttributes(attributes);
+
+ //relationships
+ Set<ProductRelationship> relationships = new HashSet<ProductRelationship>();
+ for(ProductRelationship pRelationship : dbProduct.getRelationships()) {
+
+ ProductRelationship relationship = new ProductRelationship();
+ relationship.setActive(pRelationship.isActive());
+ relationship.setCode(pRelationship.getCode());
+ relationship.setRelatedProduct(pRelationship.getRelatedProduct());
+ relationship.setStore(store);
+ relationships.add(relationship);
+
+ }
+
+ newProduct.setRelationships(relationships);
+
+ //product description
+ Set<ProductDescription> descsset = new HashSet<ProductDescription>();
+ List<ProductDescription> desclist = new ArrayList<ProductDescription>();
+ Set<ProductDescription> descriptions = dbProduct.getDescriptions();
+ for(ProductDescription pDescription : descriptions) {
+
+ ProductDescription description = new ProductDescription();
+ description.setAuditSection(pDescription.getAuditSection());
+ description.setName(pDescription.getName());
+ description.setDescription(pDescription.getDescription());
+ description.setLanguage(pDescription.getLanguage());
+ description.setMetatagDescription(pDescription.getMetatagDescription());
+ description.setMetatagKeywords(pDescription.getMetatagKeywords());
+ description.setMetatagTitle(pDescription.getMetatagTitle());
+ descsset.add(description);
+ desclist.add(description);
+ }
+ newProduct.setDescriptions(descsset);
+ product.setDescriptions(desclist);
+
+ //product
+ newProduct.setAuditSection(dbProduct.getAuditSection());
+ newProduct.setAvailable(dbProduct.isAvailable());
+
+
+
+ //copy
+ newProduct.setCategories(dbProduct.getCategories());
+ newProduct.setDateAvailable(dbProduct.getDateAvailable());
+ newProduct.setManufacturer(dbProduct.getManufacturer());
+ newProduct.setMerchantStore(store);
+ newProduct.setProductHeight(dbProduct.getProductHeight());
+ newProduct.setProductIsFree(dbProduct.getProductIsFree());
+ newProduct.setProductLength(dbProduct.getProductLength());
+ newProduct.setProductOrdered(dbProduct.getProductOrdered());
+ newProduct.setProductWeight(dbProduct.getProductWeight());
+ newProduct.setProductWidth(dbProduct.getProductWidth());
+ newProduct.setSortOrder(dbProduct.getSortOrder());
+ newProduct.setTaxClass(dbProduct.getTaxClass());
+ newProduct.setType(dbProduct.getType());
+ newProduct.setSku(dbProduct.getSku());
+ newProduct.setProductVirtual(dbProduct.isProductVirtual());
+ newProduct.setProductShipeable(dbProduct.isProductShipeable());
+
+ productService.saveOrUpdate(newProduct);
+
+ Set<Category> categories = dbProduct.getCategories();
+ for(Category category : categories) {
+ newProduct.getCategories().add(category);
+ productService.update(newProduct);
+ }
+
+ product.setProduct(newProduct);
+ model.addAttribute("product", product);
+ model.addAttribute("success","success");
+
+ return "redirect:/admin/products/editProduct.html?id=" + newProduct.getId();
+ }
+
+
+ /**
+ * Removes a product image based on the productimage id
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ */
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/product/removeImage.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeImage(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String iid = request.getParameter("imageId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long id = Long.parseLong(iid);
+ ProductImage productImage = productImageService.getById(id);
+ if(productImage==null || productImage.getProduct().getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+
+ } else {
+
+ productImageService.removeProductImage(productImage);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ /**
+ * List all categories and let the merchant associate the product to a category
+ * @param productId
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/displayProductToCategories.html", method=RequestMethod.GET)
+ public String displayAddProductToCategories(@RequestParam("id") long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ //get the product and validate it belongs to the current merchant
+ Product product = productService.getById(productId);
+
+ if(product==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+
+ //get parent categories
+ List<Category> categories = categoryService.listByStore(store,language);
+
+ model.addAttribute("product", product);
+ model.addAttribute("categories", categories);
+ return "catalogue-product-categories";
+
+ }
+
+ /**
+ * List all categories associated to a Product
+ * @param request
+ * @param response
+ * @return
+ */
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/product-categories/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageProductCategories(HttpServletRequest request, HttpServletResponse response) {
+
+ String sProductId = request.getParameter("productId");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ Long productId;
+ Product product = null;
+
+ try {
+ productId = Long.parseLong(sProductId);
+ } catch (Exception e) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ try {
+
+ product = productService.getById(productId);
+
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ Set<Category> categories = product.getCategories();
+
+
+ for(Category category : categories) {
+ Map entry = new HashMap();
+ entry.put("categoryId", category.getId());
+
+ List<CategoryDescription> descriptions = category.getDescriptions();
+ String categoryName = category.getDescriptions().get(0).getName();
+ for(CategoryDescription description : descriptions){
+ if(description.getLanguage().getCode().equals(language.getCode())) {
+ categoryName = description.getName();
+ }
+ }
+ entry.put("name", categoryName);
+ resp.addDataEntry(entry);
+ }
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+
+ }
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/product-categories/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteProductFromCategory(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sCategoryid = request.getParameter("categoryId");
+ String sProductId = request.getParameter("productId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long categoryId = Long.parseLong(sCategoryid);
+ Long productId = Long.parseLong(sProductId);
+
+ Category category = categoryService.getById(categoryId);
+ Product product = productService.getById(productId);
+
+ if(category==null || category.getMerchantStore().getId()!=store.getId()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(product==null || product.getMerchantStore().getId()!=store.getId()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ product.getCategories().remove(category);
+ productService.update(product);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting category", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/addProductToCategories.html", method=RequestMethod.POST)
+ public String addProductToCategory(@RequestParam("productId") long productId, @RequestParam("id") long categoryId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ //get the product and validate it belongs to the current merchant
+ Product product = productService.getById(productId);
+
+ if(product==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+
+ //get parent categories
+ List<Category> categories = categoryService.listByStore(store,language);
+
+ Category category = categoryService.getById(categoryId);
+
+ if(category==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(category.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ product.getCategories().add(category);
+
+ productService.update(product);
+
+ model.addAttribute("product", product);
+ model.addAttribute("categories", categories);
+
+ return "catalogue-product-categories";
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products", "catalogue-products");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductImagesController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductImagesController.java
new file mode 100644
index 0000000..8a8689e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductImagesController.java
@@ -0,0 +1,325 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.image.ProductImage;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.image.ProductImageService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.content.ProductImages;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.ImageFilePathUtils;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ProductImagesController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ProductImagesController.class);
+
+
+
+ @Autowired
+ private ProductService productService;
+
+
+ @Autowired
+ private ProductImageService productImageService;
+
+ @Autowired
+ LabelUtils messages;
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/images/list.html", method=RequestMethod.GET)
+ public String displayProductImages(@RequestParam("id") long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(productId);
+
+ if(product==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ model.addAttribute("product",product);
+ return ControllerConstants.Tiles.Product.productImages;
+
+ }
+
+
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/images/page.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageProductImages(HttpServletRequest request, HttpServletResponse response) {
+
+ //String attribute = request.getParameter("attribute");
+ String sProductId = request.getParameter("productId");
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ Long productId;
+ Product product = null;
+
+ try {
+ productId = Long.parseLong(sProductId);
+ } catch (Exception e) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ try {
+
+
+ product = productService.getById(productId);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //List<ProductAttribute> attributes = productAttributeService.getByProductId(store, product, language);
+
+
+ Set<ProductImage> images = product.getImages();
+
+ if(images!=null) {
+
+ for(ProductImage image : images) {
+
+ String imagePath = ImageFilePathUtils.buildProductImageFilePath(store, product, image.getProductImage());
+
+ Map entry = new HashMap();
+ entry.put("picture", new StringBuilder().append(request.getContextPath()).append(imagePath).toString());
+ entry.put("name", image.getProductImage());
+ entry.put("id",image.getId());
+
+ resp.addDataEntry(entry);
+ }
+
+
+ }
+
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+
+ }
+
+
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/images/save.html", method=RequestMethod.POST)
+ public String saveProductImages(@ModelAttribute(value="productImages") @Valid final ProductImages productImages, final BindingResult bindingResult,final Model model, final HttpServletRequest request,Locale locale) throws Exception{
+
+
+ this.setMenu(model, request);
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(productImages.getProductId());
+ model.addAttribute("product",product);
+ if(product==null) {
+ FieldError error = new FieldError("productImages","image",messages.getMessage("message.error", locale));
+ bindingResult.addError(error);
+ return ControllerConstants.Tiles.Product.productImages;
+ }
+
+ if(product.getMerchantStore().getId()!=store.getId()) {
+ FieldError error = new FieldError("productImages","image",messages.getMessage("message.error", locale));
+ bindingResult.addError(error);
+ }
+
+ if (bindingResult.hasErrors()) {
+ LOGGER.info( "Found {} Validation errors", bindingResult.getErrorCount());
+ return ControllerConstants.Tiles.Product.productImages;
+
+ }
+
+ final List<ProductImage> contentImagesList=new ArrayList<ProductImage>();
+ if(CollectionUtils.isNotEmpty( productImages.getFile() )){
+ LOGGER.info("Saving {} content images for merchant {}",productImages.getFile().size(),store.getId());
+ for(final MultipartFile multipartFile:productImages.getFile()){
+ if(!multipartFile.isEmpty()){
+ ProductImage productImage = new ProductImage();
+
+ productImage.setImage(multipartFile.getInputStream());
+ productImage.setProductImage(multipartFile.getOriginalFilename() );
+ productImage.setProduct(product);
+ productImage.setDefaultImage(false);//default image is uploaded in the product details
+
+ contentImagesList.add( productImage);
+ }
+ }
+
+ if(CollectionUtils.isNotEmpty( contentImagesList )){
+ productImageService.addProductImages(product, contentImagesList);
+ }
+
+ }
+
+/* ProductImage productImage = new ProductImage();
+ productImage.setProduct(product);
+
+
+ InputStream inputStream = productImages.getFile().get(0).getInputStream();
+ ImageContentFile cmsContentImage = new ImageContentFile();
+ cmsContentImage.setFileName( productImages.getFile().get(0).getOriginalFilename() );
+ cmsContentImage.setFile( inputStream );
+ cmsContentImage.setFileContentType(FileContentType.PRODUCT);
+
+ productImage.setProductImage(productImages.getFile().get(0).getOriginalFilename() );
+
+
+ BufferedImage bufferedImage = ImageIO.read(inputStream);
+ cmsContentImage.setBufferedImage(bufferedImage);
+
+ productImageService.addProductImage(product, productImage, cmsContentImage);*/
+
+
+
+ //reload
+ product = productService.getById(productImages.getProductId());
+ model.addAttribute("product",product);
+
+ return ControllerConstants.Tiles.Product.productImages;
+ }
+
+
+
+
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/images/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteImage(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sImageId = request.getParameter("id");
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+
+
+ Long imageId = Long.parseLong(sImageId);
+
+
+ ProductImage productImage = productImageService.getById(imageId);
+ if(productImage==null) {
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(productImage.getProduct().getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ productImageService.removeProductImage(productImage);
+
+ //Long attributeId = Long.parseLong(sAttributeid);
+ //ProductAttribute attribute = productAttributeService.getById(attributeId);
+
+
+/* if(attribute==null || attribute.getProduct().getMerchantStore().getId().intValue()!=store.getId()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ productAttributeService.delete(attribute);
+ */
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product price", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products", "catalogue-products");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductKeywordsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductKeywordsController.java
new file mode 100644
index 0000000..f4799c5
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductKeywordsController.java
@@ -0,0 +1,352 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.catalog.Keyword;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ProductKeywordsController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ProductKeywordsController.class);
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ LabelUtils messages;
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value={"/admin/products/product/keywords.html"}, method=RequestMethod.GET)
+ public String displayKeywords(@RequestParam("id") long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(productId);
+
+ if(product==null || product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ model.addAttribute("store", store);
+ model.addAttribute("product", product);
+ model.addAttribute("productKeyword", new Keyword());
+
+ return ControllerConstants.Tiles.Product.productKeywords;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/product/addKeyword.html", method=RequestMethod.POST)
+ public String addKeyword(@Valid @ModelAttribute("productKeyword") Keyword keyword, final BindingResult bindingResult,final Model model, final HttpServletRequest request, Locale locale) throws Exception{
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ Product product = productService.getById(keyword.getProductId());
+
+ model.addAttribute("store", store);
+ model.addAttribute("product", product);
+ model.addAttribute("productKeyword", new Keyword());
+
+ if(product==null || product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ Set<ProductDescription> descriptions = product.getDescriptions();
+ ProductDescription productDescription = null;
+ for(ProductDescription description : descriptions) {
+
+ if(description.getLanguage().getCode().equals(keyword.getLanguageCode())) {
+ productDescription = description;
+ break;
+ }
+
+ }
+
+ if(productDescription==null) {
+ FieldError error = new FieldError("keyword","keyword",messages.getMessage("message.product.language", locale));
+ bindingResult.addError(error);
+ return ControllerConstants.Tiles.Product.productKeywords;
+ }
+
+
+ String keywords = productDescription.getMetatagKeywords();
+ List<String> keyWordsList = null;
+ if(!StringUtils.isBlank(keywords)) {
+ String[] splits = keywords.split(",");
+ keyWordsList = new ArrayList(Arrays.asList(splits));
+ }
+
+ if(keyWordsList==null) {
+ keyWordsList = new ArrayList<String>();
+ }
+ keyWordsList.add(keyword.getKeyword());
+
+ StringBuilder kwString = new StringBuilder();
+ for(String s : keyWordsList) {
+ kwString.append(s).append(",");
+ }
+
+ productDescription.setMetatagKeywords(kwString.toString());
+ Set<ProductDescription> updatedDescriptions = new HashSet<ProductDescription>();
+ for(ProductDescription description : descriptions) {
+
+ if(!description.getLanguage().getCode().equals(keyword.getLanguageCode())) {
+ updatedDescriptions.add(description);
+ }
+ }
+
+ updatedDescriptions.add(productDescription);
+ product.setDescriptions(updatedDescriptions);
+
+ productService.saveOrUpdate(product);
+ model.addAttribute("success","success");
+
+
+ return ControllerConstants.Tiles.Product.productKeywords;
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/product/removeKeyword.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeKeyword(@RequestParam("id") long productId, HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+
+ String code = request.getParameter("code");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ //parse code i,lang (0,en)
+ String ids[] = code.split(",");
+
+ String languageCode = ids[1];
+
+ int index = Integer.parseInt(ids[0]);
+
+ Product product = productService.getById(productId);
+
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ Set<ProductDescription> descriptions = product.getDescriptions();
+ Set<ProductDescription> editedDescriptions = new HashSet<ProductDescription>();
+ for(ProductDescription description : descriptions) {
+
+ Language lang = description.getLanguage();
+ if(!lang.getCode().equals(languageCode)){
+ editedDescriptions.add(description);
+ continue;
+ }
+
+ List<String> keyWordsList = new ArrayList<String>();
+
+
+ String keywords = description.getMetatagKeywords();
+ if(!StringUtils.isBlank(keywords)) {
+ String splitKeywords[] = keywords.split(",");
+ for(int i = 0; i < splitKeywords.length; i++) {
+
+ if(i!=index) {
+ keyWordsList.add(splitKeywords[i]);
+ }
+
+
+ }
+ }
+
+
+
+
+ StringBuilder kwString = new StringBuilder();
+ for(String s : keyWordsList) {
+ kwString.append(s).append(",");
+ }
+
+ description.setMetatagKeywords(kwString.toString());
+ editedDescriptions.add(description);
+
+ }
+
+ product.setDescriptions(editedDescriptions);
+ productService.saveOrUpdate(product);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/product/keywords/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageKeywords(HttpServletRequest request, HttpServletResponse response) {
+
+ String sProductId = request.getParameter("id");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ Long productId;
+ Product product = null;
+
+ try {
+ productId = Long.parseLong(sProductId);
+ } catch (Exception e) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ try {
+
+ product = productService.getById(productId);
+
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ @SuppressWarnings("rawtypes")
+
+
+ Set<ProductDescription> descriptions = product.getDescriptions();
+
+ for(ProductDescription description : descriptions) {
+
+
+ Language lang = description.getLanguage();
+
+
+ String keywords = description.getMetatagKeywords();
+ if(!StringUtils.isBlank(keywords)) {
+
+ String splitKeywords[] = keywords.split(",");
+ for(int i = 0; i < splitKeywords.length; i++) {
+ Map entry = new HashMap();
+ entry.put("language", lang.getCode());
+ String keyword = splitKeywords[i];
+ StringBuilder code = new StringBuilder();
+ code.append(i).append(",").append(lang.getCode());
+
+ entry.put("code", code.toString());
+ entry.put("keyword", keyword);
+ resp.addDataEntry(entry);
+
+
+ }
+
+ }
+
+ }
+
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products", "catalogue-products");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductPriceController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductPriceController.java
new file mode 100644
index 0000000..33f5569
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductPriceController.java
@@ -0,0 +1,510 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.availability.ProductAvailability;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPrice;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPriceDescription;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPriceType;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.price.ProductPriceService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.ProductPriceUtils;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.DateUtil;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ProductPriceController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ProductPriceController.class);
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ProductPriceService productPriceService;
+
+ @Autowired
+ private ProductPriceUtils priceUtil;
+
+ @Autowired
+ LabelUtils messages;
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/prices.html", method=RequestMethod.GET)
+ public String getProductPrices(@RequestParam("id") long productId,Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get the product and validate it belongs to the current merchant
+ Product product = productService.getById(productId);
+
+ if(product==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ ProductAvailability productAvailability = null;
+ for(ProductAvailability availability : product.getAvailabilities()) {
+ if(availability.getRegion().equals(com.salesmanager.core.constants.Constants.ALL_REGIONS)) {
+ productAvailability = availability;
+ }
+ }
+
+ model.addAttribute("product",product);
+ model.addAttribute("availability",productAvailability);
+
+ return ControllerConstants.Tiles.Product.productPrices;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/prices/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pagePrices(HttpServletRequest request, HttpServletResponse response) {
+
+ String sProductId = request.getParameter("productId");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ Long productId;
+ Product product = null;
+
+ try {
+ productId = Long.parseLong(sProductId);
+ } catch (Exception e) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ try {
+
+ product = productService.getById(productId);
+
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ ProductAvailability defaultAvailability = null;
+
+ Set<ProductAvailability> availabilities = product.getAvailabilities();
+
+ //get default availability
+ for(ProductAvailability availability : availabilities) {
+ if(availability.getRegion().equals(com.salesmanager.core.constants.Constants.ALL_REGIONS)) {
+ defaultAvailability = availability;
+ break;
+ }
+ }
+
+ if(defaultAvailability==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ Set<ProductPrice> prices = defaultAvailability.getPrices();
+
+
+ for(ProductPrice price : prices) {
+ Map entry = new HashMap();
+ entry.put("priceId", price.getId());
+
+
+ String priceName = "";
+ Set<ProductPriceDescription> descriptions = price.getDescriptions();
+ if(descriptions!=null) {
+ for(ProductPriceDescription description : descriptions) {
+ if(description.getLanguage().getCode().equals(language.getCode())) {
+ priceName = description.getName();
+ }
+ }
+ }
+
+
+ entry.put("name", priceName);
+ entry.put("price", priceUtil.getAdminFormatedAmountWithCurrency(store,price.getProductPriceAmount()));
+ entry.put("specialPrice", priceUtil.getAdminFormatedAmountWithCurrency(store,price.getProductPriceSpecialAmount()));
+
+ String discount = "";
+ if(priceUtil.hasDiscount(price)) {
+ discount = priceUtil.getAdminFormatedAmountWithCurrency(store,price.getProductPriceAmount());
+ }
+ entry.put("special", discount);
+
+ resp.addDataEntry(entry);
+ }
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/price/edit.html", method=RequestMethod.GET)
+ public String editProductPrice(@RequestParam("id") long productPriceId, @RequestParam("productId") long productId,Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Product product = productService.getById(productId);
+
+ if(product==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+
+ setMenu(model,request);
+ return displayProductPrice(product, productPriceId, model, request, response);
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/price/create.html", method=RequestMethod.GET)
+ public String displayCreateProductPrice(@RequestParam("productId") long productId,@RequestParam("availabilityId") long avilabilityId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Product product = productService.getById(productId);
+ if(product==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ setMenu(model,request);
+ return displayProductPrice(product, null, model, request, response);
+
+
+
+ }
+
+ private String displayProductPrice(Product product, Long productPriceId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ com.salesmanager.web.admin.entity.catalog.ProductPrice pprice = new com.salesmanager.web.admin.entity.catalog.ProductPrice();
+
+ ProductPrice productPrice = null;
+ ProductAvailability productAvailability = null;
+
+ if(productPriceId!=null) {
+
+ Set<ProductAvailability> availabilities = product.getAvailabilities();
+
+ //get default availability
+ for(ProductAvailability availability : availabilities) {
+ if(availability.getRegion().equals(com.salesmanager.core.constants.Constants.ALL_REGIONS)) {//TODO to be updated when multiple regions is implemented
+ productAvailability = availability;
+ Set<ProductPrice> prices = availability.getPrices();
+ for(ProductPrice price : prices) {
+ if(price.getId().longValue()==productPriceId.longValue()) {
+ productPrice = price;
+ if(price.getProductPriceSpecialStartDate()!=null) {
+ pprice.setProductPriceSpecialStartDate(DateUtil.formatDate(price.getProductPriceSpecialStartDate()));
+ }
+ if(price.getProductPriceSpecialEndDate()!=null) {
+ pprice.setProductPriceSpecialEndDate(DateUtil.formatDate(price.getProductPriceSpecialEndDate()));
+ }
+ pprice.setPriceText(priceUtil.getAdminFormatedAmount(store, price.getProductPriceAmount()));
+ if(price.getProductPriceSpecialAmount()!=null) {
+ pprice.setSpecialPriceText(priceUtil.getAdminFormatedAmount(store, price.getProductPriceSpecialAmount()));
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ if(productPrice==null) {
+ productPrice = new ProductPrice();
+ productPrice.setProductPriceType(ProductPriceType.ONE_TIME);
+ }
+
+ //descriptions
+ List<Language> languages = store.getLanguages();
+
+ Set<ProductPriceDescription> productPriceDescriptions = productPrice.getDescriptions();
+ List<ProductPriceDescription> descriptions = new ArrayList<ProductPriceDescription>();
+ for(Language l : languages) {
+ ProductPriceDescription productPriceDesc = null;
+ for(ProductPriceDescription desc : productPriceDescriptions) {
+ Language lang = desc.getLanguage();
+ if(lang.getCode().equals(l.getCode())) {
+ productPriceDesc = desc;
+ }
+ }
+
+ if(productPriceDesc==null) {
+ productPriceDesc = new ProductPriceDescription();
+ productPriceDesc.setLanguage(l);
+ productPriceDescriptions.add(productPriceDesc);
+ }
+ descriptions.add(productPriceDesc);
+ }
+
+
+ if(productAvailability==null) {
+ Set<ProductAvailability> availabilities = product.getAvailabilities();
+ for(ProductAvailability availability : availabilities) {
+ if(availability.getRegion().equals(com.salesmanager.core.constants.Constants.ALL_REGIONS)) {//TODO to be updated when multiple regions is implemented
+ productAvailability = availability;
+ break;
+ }
+ }
+ }
+
+ pprice.setDescriptions(descriptions);
+ pprice.setProductAvailability(productAvailability);
+ pprice.setPrice(productPrice);
+ pprice.setProduct(product);
+
+
+ model.addAttribute("product",product);
+ //model.addAttribute("descriptions",descriptions);
+ model.addAttribute("price",pprice);
+ //model.addAttribute("availability",productAvailability);
+
+ return ControllerConstants.Tiles.Product.productPrice;
+ }
+
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/price/save.html", method=RequestMethod.POST)
+ public String saveProductPrice(@Valid @ModelAttribute("price") com.salesmanager.web.admin.entity.catalog.ProductPrice price, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+ //dates after save
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = price.getProduct();
+ Product dbProduct = productService.getById(product.getId());
+ if(store.getId().intValue()!=dbProduct.getMerchantStore().getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ model.addAttribute("product",dbProduct);
+
+ //validate price
+ BigDecimal submitedPrice = null;
+ try {
+ submitedPrice = priceUtil.getAmount(price.getPriceText());
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("productPrice",messages.getMessage("NotEmpty.product.productPrice", locale));
+ result.addError(error);
+ }
+
+ //validate discount price
+ BigDecimal submitedDiscountPrice = null;
+
+ if(!StringUtils.isBlank(price.getSpecialPriceText())) {
+ try {
+ submitedDiscountPrice = priceUtil.getAmount(price.getSpecialPriceText());
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("productSpecialPrice",messages.getMessage("NotEmpty.product.productPrice", locale));
+ result.addError(error);
+ }
+ }
+
+ //validate start date
+ if(!StringUtils.isBlank(price.getProductPriceSpecialStartDate())) {
+ try {
+ Date startDate = DateUtil.getDate(price.getProductPriceSpecialStartDate());
+ price.getPrice().setProductPriceSpecialStartDate(startDate);
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("productPriceSpecialStartDate",messages.getMessage("message.invalid.date", locale));
+ result.addError(error);
+ }
+ }
+
+ if(!StringUtils.isBlank(price.getProductPriceSpecialEndDate())) {
+ try {
+ Date endDate = DateUtil.getDate(price.getProductPriceSpecialEndDate());
+ price.getPrice().setProductPriceSpecialEndDate(endDate);
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("productPriceSpecialEndDate",messages.getMessage("message.invalid.date", locale));
+ result.addError(error);
+ }
+ }
+
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.Product.productPrice;
+ }
+
+
+ price.getPrice().setProductPriceAmount(submitedPrice);
+ if(!StringUtils.isBlank(price.getSpecialPriceText())) {
+ price.getPrice().setProductPriceSpecialAmount(submitedDiscountPrice);
+ }
+
+ ProductAvailability productAvailability = null;
+
+ Set<ProductAvailability> availabilities = dbProduct.getAvailabilities();
+ for(ProductAvailability availability : availabilities) {
+
+ if(availability.getId().longValue()==price.getProductAvailability().getId().longValue()) {
+ productAvailability = availability;
+ break;
+ }
+
+
+ }
+
+
+
+
+ Set<ProductPriceDescription> descriptions = new HashSet<ProductPriceDescription>();
+ if(price.getDescriptions()!=null && price.getDescriptions().size()>0) {
+
+ for(ProductPriceDescription description : price.getDescriptions()) {
+ description.setProductPrice(price.getPrice());
+ descriptions.add(description);
+ description.setProductPrice(price.getPrice());
+ }
+ }
+
+ price.getPrice().setDescriptions(descriptions);
+ price.getPrice().setProductAvailability(productAvailability);
+
+ productPriceService.saveOrUpdate(price.getPrice());
+ model.addAttribute("success","success");
+
+ return ControllerConstants.Tiles.Product.productPrice;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/price/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteProductPrice(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sPriceid = request.getParameter("priceId");
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long priceId = Long.parseLong(sPriceid);
+ ProductPrice price = productPriceService.getById(priceId);
+
+
+ if(price==null || price.getProductAvailability().getProduct().getMerchantStore().getId().intValue()!=store.getId()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ productPriceService.delete(price);
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product price", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products", "catalogue-products");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductReviewController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductReviewController.java
new file mode 100644
index 0000000..c0c3060
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductReviewController.java
@@ -0,0 +1,229 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.review.ProductReview;
+import com.salesmanager.core.business.catalog.product.model.review.ProductReviewDescription;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.review.ProductReviewService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ProductReviewController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ProductReviewController.class);
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ProductReviewService productReviewService;
+
+ @Autowired
+ LabelUtils messages;
+
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/reviews.html", method=RequestMethod.GET)
+ public String displayProductReviews(@RequestParam("id") long productId,Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ setMenu(model, request);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Product product = productService.getById(productId);
+
+ if(product==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+
+ model.addAttribute("product", product);
+
+ return ControllerConstants.Tiles.Product.productReviews;
+
+ }
+
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/reviews/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageProductReviews(HttpServletRequest request, HttpServletResponse response) {
+
+ String sProductId = request.getParameter("productId");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ Long productId;
+ Product product = null;
+
+ try {
+ productId = Long.parseLong(sProductId);
+ } catch (Exception e) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ try {
+
+ product = productService.getById(productId);
+
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ List<ProductReview> reviews = productReviewService.getByProduct(product);
+
+
+
+ for(ProductReview review : reviews) {
+ Map entry = new HashMap();
+ entry.put("reviewId", review.getId());
+ entry.put("rating", review.getReviewRating().intValue());
+ Set<ProductReviewDescription> descriptions = review.getDescriptions();
+ String reviewDesc= "";
+ if(!CollectionUtils.isEmpty(descriptions)) {
+ reviewDesc = descriptions.iterator().next().getDescription();
+ }
+ //for(ProductReviewDescription description : descriptions){
+ // if(description.getLanguage().getCode().equals(language.getCode())) {
+ // reviewDesc = description.getDescription();
+ // }
+ //}
+ entry.put("description", reviewDesc);
+ resp.addDataEntry(entry);
+ }
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/reviews/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteProductReview(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sReviewid = request.getParameter("reviewId");
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long reviewId = Long.parseLong(sReviewid);
+
+
+ ProductReview review = productReviewService.getById(reviewId);
+
+
+ if(review==null || review.getProduct().getMerchantStore().getId().intValue()!=store.getId()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ productReviewService.delete(review);
+
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting category", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products", "catalogue-products");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductsController.java
new file mode 100644
index 0000000..30fe579
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/ProductsController.java
@@ -0,0 +1,261 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.ProductCriteria;
+import com.salesmanager.core.business.catalog.product.model.ProductList;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ProductsController {
+
+ @Autowired
+ CategoryService categoryService;
+
+ @Autowired
+ ProductService productService;
+
+ @Autowired
+ LabelUtils messages;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ProductsController.class);
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/products.html", method=RequestMethod.GET)
+ public String displayProducts(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ List<Category> categories = categoryService.listByStore(store, language);
+
+ model.addAttribute("categories", categories);
+
+ return "admin-products";
+
+ }
+
+
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageProducts(HttpServletRequest request, HttpServletResponse response) {
+
+ //TODO what if ROOT
+
+ String categoryId = request.getParameter("categoryId");
+ String sku = request.getParameter("sku");
+ String available = request.getParameter("available");
+ String searchTerm = request.getParameter("searchTerm");
+ String name = request.getParameter("name");
+
+ AjaxPageableResponse resp = new AjaxPageableResponse();
+
+ try {
+
+
+ int startRow = Integer.parseInt(request.getParameter("_startRow"));
+ int endRow = Integer.parseInt(request.getParameter("_endRow"));
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ ProductCriteria criteria = new ProductCriteria();
+
+ criteria.setStartIndex(startRow);
+ criteria.setMaxCount(endRow);
+
+
+ if(!StringUtils.isBlank(categoryId) && !categoryId.equals("-1")) {
+
+ //get other filters
+ Long lcategoryId = 0L;
+ try {
+ lcategoryId = Long.parseLong(categoryId);
+ } catch (Exception e) {
+ LOGGER.error("Product page cannot parse categoryId " + categoryId );
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+
+ if(lcategoryId>0) {
+
+ Category category = categoryService.getById(lcategoryId);
+
+ if(category==null || category.getMerchantStore().getId()!=store.getId()) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ //get all sub categories
+ StringBuilder lineage = new StringBuilder();
+ lineage.append(category.getLineage()).append(category.getId()).append("/");
+
+ List<Category> categories = categoryService.listByLineage(store, lineage.toString());
+
+ List<Long> categoryIds = new ArrayList<Long>();
+
+ for(Category cat : categories) {
+ categoryIds.add(cat.getId());
+ }
+ categoryIds.add(category.getId());
+ criteria.setCategoryIds(categoryIds);
+
+ }
+
+
+
+
+ }
+
+ if(!StringUtils.isBlank(sku)) {
+ criteria.setCode(sku);
+ }
+
+ if(!StringUtils.isBlank(name)) {
+ criteria.setProductName(name);
+ }
+
+ if(!StringUtils.isBlank(available)) {
+ if(available.equals("true")) {
+ criteria.setAvailable(new Boolean(true));
+ } else {
+ criteria.setAvailable(new Boolean(false));
+ }
+ }
+
+ ProductList productList = productService.listByStore(store, language, criteria);
+ resp.setEndRow(productList.getTotalCount());
+ resp.setStartRow(startRow);
+ List<Product> plist = productList.getProducts();
+
+ if(plist!=null) {
+
+ for(Product product : plist) {
+
+ Map entry = new HashMap();
+ entry.put("productId", product.getId());
+
+ ProductDescription description = product.getDescriptions().iterator().next();
+
+ entry.put("name", description.getName());
+ entry.put("sku", product.getSku());
+ entry.put("available", product.isAvailable());
+ resp.addDataEntry(entry);
+
+
+
+ }
+
+ }
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/products/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteProduct(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String sid = request.getParameter("productId");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ Long id = Long.parseLong(sid);
+
+ Product product = productService.getById(id);
+
+ if(product==null || product.getMerchantStore().getId()!=store.getId()) {
+
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+
+ } else {
+
+ productService.delete(product);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products", "catalogue-products");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/RelatedItemsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/RelatedItemsController.java
new file mode 100644
index 0000000..d4fa49f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/products/RelatedItemsController.java
@@ -0,0 +1,313 @@
+package com.salesmanager.web.admin.controller.products;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationship;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationshipType;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.relationship.ProductRelationshipService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+
+@Controller
+public class RelatedItemsController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(RelatedItemsController.class);
+
+ @Autowired
+ CategoryService categoryService;
+
+ @Autowired
+ ProductService productService;
+
+ @Autowired
+ ProductRelationshipService productRelationshipService;
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/related/list.html", method=RequestMethod.GET)
+ public String displayRelatedItems(@RequestParam("id") long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ setMenu(model,request);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get the product and validate it belongs to the current merchant
+ Product product = productService.getById(productId);
+
+ if(product==null) {
+ return "redirect:/admin/products/products.html";
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:/admin/products/products.html";
+ }
+
+
+ List<Category> categories = categoryService.listByStore(store,language);
+
+ model.addAttribute("categories", categories);
+ model.addAttribute("product", product);
+ return ControllerConstants.Tiles.Product.relatedItems;
+
+ }
+
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/related/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageRelatedItems(HttpServletRequest request, HttpServletResponse response) {
+
+ String sProductId = request.getParameter("productId");
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+
+ Long productId = Long.parseLong(sProductId);
+ Product product = productService.getById(productId);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ if(product==null || product.getMerchantStore().getId().intValue()!= store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Product id is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+
+ List<ProductRelationship> relationships = productRelationshipService.getByType(store, product, ProductRelationshipType.RELATED_ITEM, language);
+
+ for(ProductRelationship relationship : relationships) {
+
+ Product relatedProduct = relationship.getRelatedProduct();
+ Map entry = new HashMap();
+ entry.put("relationshipId", relationship.getId());
+ entry.put("productId", relatedProduct.getId());
+
+ ProductDescription description = relatedProduct.getDescriptions().iterator().next();
+ Set<ProductDescription> descriptions = relatedProduct.getDescriptions();
+ for(ProductDescription desc : descriptions) {
+ if(desc.getLanguage().getId().intValue()==language.getId().intValue()) {
+ description = desc;
+ }
+ }
+
+
+ entry.put("name", description.getName());
+ entry.put("sku", relatedProduct.getSku());
+ entry.put("available", relatedProduct.isAvailable());
+ resp.addDataEntry(entry);
+
+ }
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/related/addItem.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String addItem(HttpServletRequest request, HttpServletResponse response) {
+
+ String productId = request.getParameter("productId");
+ String baseProductId = request.getParameter("baseProductId");
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+ Long lProductId = Long.parseLong(productId);
+ Long lBaseProductId = Long.parseLong(baseProductId);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(lProductId);
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ Product baseProduct = productService.getById(lBaseProductId);
+
+ if(baseProduct==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(baseProduct.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ ProductRelationship relationship = new ProductRelationship();
+ relationship.setActive(true);
+ relationship.setProduct(baseProduct);
+ relationship.setCode(ProductRelationshipType.RELATED_ITEM.name());
+ relationship.setStore(store);
+ relationship.setRelatedProduct(product);
+
+ productRelationshipService.saveOrUpdate(relationship);
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping(value="/admin/catalogue/related/removeItem.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeItem(HttpServletRequest request, HttpServletResponse response) {
+
+ String productId = request.getParameter("productId");
+ String baseProductId = request.getParameter("baseProductId");
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+
+ Long lproductId = Long.parseLong(productId);
+ Long lBaseProductId = Long.parseLong(baseProductId);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Product product = productService.getById(lproductId);
+
+ if(product==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ Product baseProduct = productService.getById(lBaseProductId);
+
+ if(baseProduct==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(baseProduct.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ ProductRelationship relationship = null;
+ List<ProductRelationship> relationships = productRelationshipService.getByType(store, baseProduct, ProductRelationshipType.RELATED_ITEM);
+
+ for(ProductRelationship r : relationships) {
+ if(r.getRelatedProduct().getId().longValue()==lproductId.longValue()) {
+ relationship = r;
+ break;
+ }
+ }
+
+ if(relationship==null) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(relationship.getStore().getId().intValue()!=store.getId().intValue()) {
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+
+ productRelationshipService.delete(relationship);
+
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("catalogue", "catalogue");
+ activeMenus.put("catalogue-products", "catalogue-products");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("catalogue");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/CustomShippingMethodsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/CustomShippingMethodsController.java
new file mode 100644
index 0000000..fbb3823
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/CustomShippingMethodsController.java
@@ -0,0 +1,767 @@
+package com.salesmanager.web.admin.controller.shipping;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.beanutils.BeanComparator;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shipping.model.ShippingConfiguration;
+import com.salesmanager.core.business.shipping.model.ShippingType;
+import com.salesmanager.core.business.shipping.service.ShippingService;
+import com.salesmanager.core.business.system.model.IntegrationConfiguration;
+import com.salesmanager.core.modules.integration.IntegrationException;
+import com.salesmanager.core.modules.integration.shipping.model.CustomShippingQuoteWeightItem;
+import com.salesmanager.core.modules.integration.shipping.model.CustomShippingQuotesConfiguration;
+import com.salesmanager.core.modules.integration.shipping.model.CustomShippingQuotesRegion;
+import com.salesmanager.core.utils.ProductPriceUtils;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class CustomShippingMethodsController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomShippingMethodsController.class);
+
+
+ public final static String WEIGHT_BASED_SHIPPING_METHOD = "weightBased";
+
+ @Autowired
+ private ShippingService shippingService;
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private ProductPriceUtils priceUtil;
+
+ @Autowired
+ LabelUtils messages;
+
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/weightBased.html", method=RequestMethod.GET)
+ public String getWeightBasedShippingMethod(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ this.setMenu(model, request);
+
+ populateModel(model, request, response);
+
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+
+
+ }
+
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/addCustomRegion.html", method=RequestMethod.POST)
+ public String addCustomRegion(@ModelAttribute("region") String region, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+ populateModel(model, request, response);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ List<CustomShippingQuotesRegion> regions = customConfiguration.getRegions();
+
+ if(StringUtils.isBlank(region)) {
+ model.addAttribute("errorMessage",messages.getMessage("message.region.null", locale));
+ ObjectError error = new ObjectError("region",messages.getMessage("message.region.null", locale));
+ result.addError(error);
+ }
+
+
+ for(CustomShippingQuotesRegion customRegion : regions) {
+ if(customRegion.getCustomRegionName().equals(region)) {
+ model.addAttribute("errorMessage",messages.getMessage("message.region.null", locale));
+ ObjectError error = new ObjectError("region",messages.getMessage("message.region.exists", locale));
+ result.addError(error);
+ break;
+ }
+ }
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+ }
+
+
+ CustomShippingQuotesRegion quoteRegion = new CustomShippingQuotesRegion();
+ quoteRegion.setCustomRegionName(region);
+
+ customConfiguration.getRegions().add(quoteRegion);
+ shippingService.saveCustomShippingConfiguration(this.WEIGHT_BASED_SHIPPING_METHOD, customConfiguration, store);
+
+ model.addAttribute("customConfiguration", customConfiguration);
+ model.addAttribute("success","success");
+
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+
+ }
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/addCountryToRegion.html", method=RequestMethod.POST)
+ public String addCountryToCustomRegion(@ModelAttribute("customRegion") CustomShippingQuotesRegion customRegion, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+ populateModel(model, request, response);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ List<CustomShippingQuotesRegion> regions = customConfiguration.getRegions();
+
+
+ if(StringUtils.isBlank(customRegion.getCustomRegionName())) {
+ model.addAttribute("errorMessageAssociation",messages.getMessage("message.region.null", locale));
+ ObjectError error = new ObjectError("region",messages.getMessage("message.region.exists", locale));
+ result.addError(error);
+ }
+
+
+ for(CustomShippingQuotesRegion region : regions) {
+ if(region.getCustomRegionName().equals(customRegion.getCustomRegionName())) {
+ List<String> countries = region.getCountries();
+ if(countries!=null) {
+ for(String countryCode : countries) {
+ if(countryCode.equals(customRegion.getCountries().get(0))) {
+ model.addAttribute("errorMessageAssociation",messages.getMessage("message.region.exists", locale));
+ ObjectError error = new ObjectError("region",messages.getMessage("message.region.exists", locale));
+ result.addError(error);
+ break;
+ }
+ }
+
+ countries.add(customRegion.getCountries().get(0));
+
+ } else {
+ List<String> countriesList = new ArrayList<String>();
+ countriesList.add(customRegion.getCountries().get(0));
+ region.setCountries(countriesList);
+ }
+ }
+ }
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+ }
+
+
+ shippingService.saveCustomShippingConfiguration(this.WEIGHT_BASED_SHIPPING_METHOD, customConfiguration, store);
+ model.addAttribute("customConfiguration", customConfiguration);
+ model.addAttribute("success","success");
+
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+
+ }
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/saveweightBasedShippingMethod.html", method=RequestMethod.POST)
+ public String saveShippingMethod(@ModelAttribute("configuration") CustomShippingQuotesConfiguration configuration, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ populateModel(model, request, response);
+
+ String moduleCode = configuration.getModuleCode();
+ LOGGER.debug("Saving module code " + moduleCode);
+
+ List<String> environments = new ArrayList<String>();
+ environments.add(com.salesmanager.core.constants.Constants.TEST_ENVIRONMENT);
+ environments.add(com.salesmanager.core.constants.Constants.PRODUCTION_ENVIRONMENT);
+
+ model.addAttribute("environments", environments);
+ model.addAttribute("configuration", configuration);
+
+ try {
+
+
+ CustomShippingQuotesConfiguration dbConfig = (CustomShippingQuotesConfiguration) shippingService.getCustomShippingConfiguration(this.WEIGHT_BASED_SHIPPING_METHOD, store);
+
+
+ shippingService.saveShippingQuoteModuleConfiguration(configuration, store);
+ if(dbConfig!=null) {
+ dbConfig.setActive(configuration.isActive());
+ shippingService.saveCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, dbConfig, store);
+ } else {
+ shippingService.saveCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, configuration, store);
+ }
+
+
+
+
+ } catch (Exception e) {
+ if(e instanceof IntegrationException) {
+ if(((IntegrationException)e).getErrorCode()==IntegrationException.ERROR_VALIDATION_SAVE) {
+
+ List<String> errorCodes = ((IntegrationException)e).getErrorFields();
+ for(String errorCode : errorCodes) {
+ model.addAttribute(errorCode,messages.getMessage("message.fielderror", locale));
+ }
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+ }
+ } else {
+ throw new Exception(e);
+ }
+ }
+
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+
+
+ }
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/weightBased/removeCountry.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deleteCountry(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String country = request.getParameter("regionCode");
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ if(customConfiguration!=null) {
+
+ List<CustomShippingQuotesRegion> quotes = customConfiguration.getRegions();
+ for (CustomShippingQuotesRegion quote : quotes) {
+ List<String> countries = quote.getCountries();
+ List<String> newCountries = new ArrayList<String>();
+ if(countries!=null) {
+ for(String cntry : countries) {
+ if(!cntry.equals(country)) {
+ newCountries.add(cntry);
+ }
+ }
+ }
+ quote.setCountries(newCountries);
+ }
+
+ }
+
+ shippingService.saveCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, customConfiguration, store);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging custom weight based", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/weightBased/removePrice.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String deletePrice(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String weight = request.getParameter("weight");
+ String region = request.getParameter("region");
+ int maxWeight = 0;
+ try {
+ maxWeight = Integer.parseInt(weight);
+ } catch (Exception e) {
+ LOGGER.error("Weight (integer) malformed " + weight);
+ }
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ if(customConfiguration!=null) {
+
+ List<CustomShippingQuotesRegion> quotes = customConfiguration.getRegions();
+
+ for (CustomShippingQuotesRegion quote : quotes) {
+
+
+ if(quote.getCustomRegionName().equals(region)) {
+ List<CustomShippingQuoteWeightItem> quoteItems = quote.getQuoteItems();
+
+ if(quoteItems!=null) {
+ List<CustomShippingQuoteWeightItem> newQuoteItems = new ArrayList<CustomShippingQuoteWeightItem>();
+ for(CustomShippingQuoteWeightItem q : quoteItems) {
+ if(maxWeight!=q.getMaximumWeight()) {
+ newQuoteItems.add(q);
+ }
+ }
+ quote.setQuoteItems(newQuoteItems);
+ break;
+ }
+ }
+
+ }
+
+ }
+
+ shippingService.saveCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, customConfiguration, store);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging custom weight based", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/deleteWeightBasedShippingMethod.html", method=RequestMethod.POST)
+ public String deleteShippingMethod(BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ shippingService.removeCustomShippingQuoteModuleConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+
+ return ControllerConstants.Tiles.Shipping.shippingMethods;
+
+ }
+
+ /**
+ * Check if a region code already exist with the same name
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ */
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/checkRegionCode.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String checkRegionCode(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String code = request.getParameter("code");
+
+
+ AjaxResponse resp = new AjaxResponse();
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ try {
+
+ if(StringUtils.isBlank(code)) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ if(customConfiguration!=null) {
+ List<CustomShippingQuotesRegion> regions = customConfiguration.getRegions();
+ for(CustomShippingQuotesRegion region : regions) {
+
+ if(code.equals(region.getCustomRegionName())) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ }
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while getting user", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value = "/admin/shipping/weightBased/page.html", method = RequestMethod.POST, produces = "application/json")
+ public @ResponseBody
+ String pageCustomShipping(HttpServletRequest request,
+ HttpServletResponse response) {
+
+ AjaxResponse resp = new AjaxResponse();
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ try {
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ Map<String,Country> countriesMap = countryService.getCountriesMap(language);
+
+ if(customConfiguration!=null) {
+ List<CustomShippingQuotesRegion> quotes = customConfiguration.getRegions();
+ for (CustomShippingQuotesRegion quote : quotes) {
+ List<String> countries = quote.getCountries();
+ if(countries!=null) {
+ for(String country : countries) {
+ Map<String,String> entry = new HashMap<String,String> ();
+ entry.put("regionCode", country);
+ entry.put("region", quote.getCustomRegionName());
+ entry.put("country", countriesMap.get(country).getName());
+ resp.addDataEntry(entry);
+ }
+ }
+ }
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging custom weight based", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+ /**
+ * Edit custom region
+ * @param region
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/weightBased/edit.html", method=RequestMethod.GET)
+ public String editCustomShipping(@ModelAttribute("customRegionName") String region, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ setMenu(model,request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+ CustomShippingQuotesRegion aRegion = null;
+
+ List<CustomShippingQuotesRegion> regions = customConfiguration.getRegions();
+ for(CustomShippingQuotesRegion customRegion : regions) {
+ if(customRegion.getCustomRegionName().equals(region)) {
+ aRegion = customRegion;
+ break;
+ }
+ }
+
+ if(aRegion==null) {
+ return "redirect:/admin/shipping/shippingMethods.html";
+ }
+
+ model.addAttribute("customRegion", aRegion);
+
+
+ return ControllerConstants.Tiles.Shipping.customShippingWeightBased;
+ }
+
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value = "/admin/shipping/weightBasedDetails/page.html", method = RequestMethod.POST, produces = "application/json")
+ public @ResponseBody
+ String pageCustomShippingDetails(HttpServletRequest request,
+ HttpServletResponse response) {
+
+ String region = request.getParameter("region");
+
+ AjaxResponse resp = new AjaxResponse();
+
+ if(StringUtils.isBlank(region)){
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorString("Region is not valid");
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+
+ try {
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ List<CustomShippingQuotesRegion> quotes = customConfiguration.getRegions();
+ for (CustomShippingQuotesRegion quote : quotes) {
+
+ if(quote.getCustomRegionName().equals(region)) {
+
+ List<CustomShippingQuoteWeightItem> quoteItems = quote.getQuoteItems();
+ if(quoteItems!=null) {
+ for(CustomShippingQuoteWeightItem quoteItem : quoteItems) {
+ Map<String,String> entry = new HashMap<String,String> ();
+ entry.put("price", priceUtil.getAdminFormatedAmountWithCurrency(store,quoteItem.getPrice()));
+ entry.put("weight", String.valueOf(quoteItem.getMaximumWeight()));
+ resp.addDataEntry(entry);
+ }
+ }
+ }
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+
+
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/weightBased/addPrice.html", method=RequestMethod.POST)
+ public String addPrice(@ModelAttribute("region") String customRegion, @ModelAttribute("customQuote") CustomShippingQuoteWeightItem customQuote, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ List<CustomShippingQuotesRegion> regions = customConfiguration.getRegions();
+
+ try {
+ BigDecimal price = new BigDecimal(customQuote.getPriceText());
+ customQuote.setPrice(price);
+ } catch(Exception e) {
+ ObjectError error = new ObjectError("priceText",messages.getMessage("message.invalid.price", locale));
+ result.addError(error);
+ }
+
+
+ int weight = customQuote.getMaximumWeight();
+ if(weight<=0) {
+ ObjectError error = new ObjectError("maximumWeight",messages.getMessage("message.maximumWeight.invalid", locale));
+ result.addError(error);
+ }
+
+
+
+ for(CustomShippingQuotesRegion customReg : regions) {
+ if(customReg.getCustomRegionName().equals(customRegion)) {
+ model.addAttribute("customRegion", customReg);
+ break;
+ }
+ }
+
+
+ if(StringUtils.isBlank(customQuote.getPriceText())) {
+ ObjectError error = new ObjectError("priceText",messages.getMessage("message.invalid.price", locale));
+ result.addError(error);
+ }
+
+ CustomShippingQuotesRegion currentRegion = null;
+
+
+ for(CustomShippingQuotesRegion region : regions) {
+ if(region.getCustomRegionName().equals(customRegion)) {
+ currentRegion = region;
+ List<CustomShippingQuoteWeightItem> quotes = region.getQuoteItems();
+ if(quotes!=null) {
+ for(CustomShippingQuoteWeightItem quote : quotes) {
+
+ if(quote.getMaximumWeight()==customQuote.getMaximumWeight()){
+ ObjectError error = new ObjectError("maximumWeight",messages.getMessage("label.message.maximumWeight.exist", locale));
+ result.addError(error);
+ break;
+ }
+ }
+ quotes.add(customQuote);
+ } else {
+ quotes = new ArrayList<CustomShippingQuoteWeightItem>();
+ quotes.add(customQuote);
+ region.setQuoteItems(quotes);
+ }
+ }
+ }
+
+ model.addAttribute("customConfiguration", customConfiguration);
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.Shipping.customShippingWeightBased;
+ }
+
+ //order weights
+ if(currentRegion!=null) {
+ List<CustomShippingQuoteWeightItem> quotes = currentRegion.getQuoteItems();
+ if(quotes!=null) {
+
+
+ BeanComparator beanComparator = new BeanComparator("maximumWeight");
+ Collections.sort(quotes, beanComparator);
+
+
+ }
+ }
+
+
+ shippingService.saveCustomShippingConfiguration(this.WEIGHT_BASED_SHIPPING_METHOD, customConfiguration, store);
+
+ model.addAttribute("success","success");
+
+ return ControllerConstants.Tiles.Shipping.customShippingWeightBased;
+
+ }
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/weightBased/deleteRegion.html", method=RequestMethod.POST)
+ public String deleteRegion(@ModelAttribute("customRegionName") String region, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ List<CustomShippingQuotesRegion> regions = customConfiguration.getRegions();
+
+ List<CustomShippingQuotesRegion> newRegions = new ArrayList<CustomShippingQuotesRegion>();
+ for(CustomShippingQuotesRegion reg : regions) {
+
+ if(!reg.getCustomRegionName().equals(region)) {
+ newRegions.add(reg);
+ }
+ }
+
+ customConfiguration.setRegions(newRegions);
+ shippingService.saveCustomShippingConfiguration(this.WEIGHT_BASED_SHIPPING_METHOD, customConfiguration, store);
+ populateModel(model, request, response);
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+ }
+
+
+
+
+
+ private void populateModel(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ ShippingConfiguration shippingConfiguration = shippingService.getShippingConfiguration(store);
+
+ if(shippingConfiguration==null) {
+ shippingConfiguration = new ShippingConfiguration();
+ shippingConfiguration.setShippingType(ShippingType.INTERNATIONAL);
+ }
+
+
+ //get configured shipping modules
+ Map<String,IntegrationConfiguration> configuredModules = shippingService.getShippingModulesConfigured(store);
+ IntegrationConfiguration configuration = new IntegrationConfiguration();
+ if(configuredModules!=null) {
+ for(String key : configuredModules.keySet()) {
+ if(key.equals(WEIGHT_BASED_SHIPPING_METHOD)) {
+ configuration = configuredModules.get(key);
+ break;
+ }
+ }
+ }
+ configuration.setModuleCode(WEIGHT_BASED_SHIPPING_METHOD);
+
+ //get custom information
+ CustomShippingQuotesConfiguration customConfiguration = (CustomShippingQuotesConfiguration)shippingService.getCustomShippingConfiguration(WEIGHT_BASED_SHIPPING_METHOD, store);
+
+ if(customConfiguration==null) {
+ customConfiguration = new CustomShippingQuotesConfiguration();
+ customConfiguration.setModuleCode(this.WEIGHT_BASED_SHIPPING_METHOD);
+ }
+
+
+ //get supported countries
+ //List<String> includedCountries = shippingService.getSupportedCountries(store);
+ List<Country> shipToCountries = shippingService.getShipToCountryList(store, language);
+/* List<Country> shippingCountries = new ArrayList<Country>();
+ Map<String,Country> countries = countryService.getCountriesMap(language);
+ if(shippingConfiguration.getShippingType().name().equals(ShippingType.INTERNATIONAL.name())){
+
+ for(String key : countries.keySet()) {
+ Country country = (Country)countries.get(key);
+ if(includedCountries.contains(key)) {
+ shippingCountries.add(country);
+ }
+ }
+ } else {//if national only store country
+ if(!includedCountries.contains(store.getCountry().getIsoCode())) {
+ shippingCountries.add((Country)countries.get(store.getCountry().getIsoCode()));
+ }
+ }*/
+
+ CustomShippingQuotesRegion customRegion = new CustomShippingQuotesRegion();
+
+
+ List<String> environments = new ArrayList<String>();
+ environments.add(com.salesmanager.core.constants.Constants.PRODUCTION_ENVIRONMENT);//only production
+
+ model.addAttribute("environments", environments);
+ model.addAttribute("configuration", configuration);
+ model.addAttribute("customConfiguration", customConfiguration);
+ model.addAttribute("customRegion", customRegion);
+ model.addAttribute("shippingCountries", shipToCountries);
+
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("shipping", "shipping");
+ activeMenus.put("shipping-methods", "shipping-methods");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("shipping");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingConfigsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingConfigsController.java
new file mode 100755
index 0000000..8b17ab3
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingConfigsController.java
@@ -0,0 +1,228 @@
+package com.salesmanager.web.admin.controller.shipping;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shipping.model.ShippingConfiguration;
+import com.salesmanager.core.business.shipping.model.ShippingType;
+import com.salesmanager.core.business.shipping.service.ShippingService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+
+@Controller
+public class ShippingConfigsController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShippingConfigsController.class);
+
+
+ @Autowired
+ private ShippingService shippingService;
+
+ @Autowired
+ private CountryService countryService;
+
+ /**
+ * Configures the shipping mode, shows shipping countries
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/shippingConfigs.html", method=RequestMethod.GET)
+ public String displayShippingConfigs(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ this.setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+
+ ShippingConfiguration shippingConfiguration = shippingService.getShippingConfiguration(store);
+
+ if(shippingConfiguration==null) {
+ shippingConfiguration = new ShippingConfiguration();
+ shippingConfiguration.setShippingType(ShippingType.INTERNATIONAL);
+ }
+
+
+ model.addAttribute("configuration", shippingConfiguration);
+ return "shipping-configs";
+
+
+ }
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/saveShippingConfiguration.html", method=RequestMethod.POST)
+ public String saveShippingConfiguration(@ModelAttribute("configuration") ShippingConfiguration configuration, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get original configuration
+ ShippingConfiguration shippingConfiguration = shippingService.getShippingConfiguration(store);
+
+ if(shippingConfiguration==null) {
+ shippingConfiguration = new ShippingConfiguration();
+ }
+
+ shippingConfiguration.setShippingType(configuration.getShippingType());
+
+ shippingService.saveShippingConfiguration(shippingConfiguration, store);
+
+ model.addAttribute("configuration", shippingConfiguration);
+ model.addAttribute("success","success");
+ return "shipping-configs";
+
+ }
+
+ @SuppressWarnings({ "unchecked"})
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/countries/paging.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String pageCountries(HttpServletRequest request, HttpServletResponse response) {
+ String countryName = request.getParameter("name");
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get list of countries
+ Map<String,Country> countries = countryService.getCountriesMap(language);
+
+ //get inclusions
+ List<String> includedCountries = shippingService.getSupportedCountries(store);
+
+
+ for(String key : countries.keySet()) {
+
+ Country country = (Country)countries.get(key);
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("code", country.getIsoCode());
+ entry.put("name", country.getName());
+
+ if(includedCountries.contains(key)) {
+ entry.put("supported", true);
+ } else {
+ entry.put("supported", false);
+ }
+
+ if(!StringUtils.isBlank(countryName)) {
+ if(country.getName().contains(countryName)){
+ resp.addDataEntry(entry);
+ }
+ } else {
+ resp.addDataEntry(entry);
+ }
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging shipping countries", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/countries/update.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String updateCountry(HttpServletRequest request, HttpServletResponse response) {
+ String values = request.getParameter("_oldValues");
+ String supported = request.getParameter("supported");
+
+
+
+
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ ObjectMapper mapper = new ObjectMapper();
+ @SuppressWarnings("rawtypes")
+ Map conf = mapper.readValue(values, Map.class);
+
+ String countryCode = (String)conf.get("code");
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get list of countries
+ List<String> includedCountries = shippingService.getSupportedCountries(store);
+
+ if(!StringUtils.isBlank(supported)) {
+ if("true".equals(supported)) {
+ includedCountries.add(countryCode);
+ } else {
+ includedCountries.remove(countryCode);
+ }
+ }
+
+
+ shippingService.setSupportedCountries(store, includedCountries);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging shipping countries", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("shipping", "shipping");
+ activeMenus.put("shipping-configs", "shipping-configs");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("shipping");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingMethodsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingMethodsController.java
new file mode 100755
index 0000000..1ac808b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingMethodsController.java
@@ -0,0 +1,189 @@
+package com.salesmanager.web.admin.controller.shipping;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.shipping.service.ShippingService;
+import com.salesmanager.core.business.system.model.IntegrationConfiguration;
+import com.salesmanager.core.business.system.model.IntegrationModule;
+import com.salesmanager.core.modules.integration.IntegrationException;
+import com.salesmanager.core.modules.integration.shipping.model.CustomShippingQuotesConfiguration;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ShippingMethodsController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShippingMethodsController.class);
+
+
+ @Autowired
+ private ShippingService shippingService;
+
+ @Autowired
+ LabelUtils messages;
+
+ /**
+ * Configures the shipping shows shipping methods
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/shippingMethods.html", method=RequestMethod.GET)
+ public String displayShippingMethods(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get shipping methods
+ List<IntegrationModule> modules = shippingService.getShippingMethods(store);
+
+ //get configured shipping modules
+ Map<String,IntegrationConfiguration> configuredModules = shippingService.getShippingModulesConfigured(store);
+
+
+
+ model.addAttribute("modules", modules);
+ model.addAttribute("configuredModules", configuredModules);
+
+
+ return ControllerConstants.Tiles.Shipping.shippingMethods;
+
+
+ }
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/shippingMethod.html", method=RequestMethod.GET)
+ public String displayShippingMethod(@RequestParam("code") String code, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ //get configured shipping modules
+ IntegrationConfiguration configuration = shippingService.getShippingConfiguration(code, store);
+ if(configuration==null) {
+ configuration = new IntegrationConfiguration();
+ }
+
+ configuration.setModuleCode(code);
+
+ List<String> environments = new ArrayList<String>();
+ environments.add(com.salesmanager.core.constants.Constants.TEST_ENVIRONMENT);
+ environments.add(com.salesmanager.core.constants.Constants.PRODUCTION_ENVIRONMENT);
+
+ model.addAttribute("configuration", configuration);
+ model.addAttribute("environments", environments);
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+
+
+ }
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/saveShippingMethod.html", method=RequestMethod.POST)
+ public String saveShippingMethod(@ModelAttribute("configuration") IntegrationConfiguration configuration, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ String moduleCode = configuration.getModuleCode();
+ LOGGER.debug("Saving module code " + moduleCode);
+
+ List<String> environments = new ArrayList<String>();
+ environments.add(com.salesmanager.core.constants.Constants.TEST_ENVIRONMENT);
+ environments.add(com.salesmanager.core.constants.Constants.PRODUCTION_ENVIRONMENT);
+
+ model.addAttribute("environments", environments);
+ model.addAttribute("configuration", configuration);
+
+ try {
+ shippingService.saveShippingQuoteModuleConfiguration(configuration, store);
+ } catch (Exception e) {
+ if(e instanceof IntegrationException) {
+ if(((IntegrationException)e).getErrorCode()==IntegrationException.ERROR_VALIDATION_SAVE) {
+
+ List<String> errorCodes = ((IntegrationException)e).getErrorFields();
+ for(String errorCode : errorCodes) {
+ model.addAttribute(errorCode,messages.getMessage("message.fielderror", locale));
+ }
+ model.addAttribute("validationError","validationError");
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+ }
+ } else {
+ throw new Exception(e);
+ }
+ }
+
+
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+
+
+ }
+
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/weightBased.html", method=RequestMethod.POST)
+ public String saveCustomWeightBasedShippingMethod(@ModelAttribute("configuration") CustomShippingQuotesConfiguration configuration, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Shipping.shippingMethod;
+
+ }
+
+ @RequestMapping(value="/admin/shipping/deleteShippingMethod.html", method=RequestMethod.POST)
+ public String deleteShippingMethod(@RequestParam("code") String code, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ shippingService.removeShippingQuoteModuleConfiguration(code, store);
+
+ return "redirect:/admin/shipping/shippingMethods.html";
+
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("shipping", "shipping");
+ activeMenus.put("shipping-methods", "shipping-methods");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("shipping");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingOptionsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingOptionsController.java
new file mode 100644
index 0000000..deab242
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingOptionsController.java
@@ -0,0 +1,176 @@
+package com.salesmanager.web.admin.controller.shipping;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.shipping.model.ShippingConfiguration;
+import com.salesmanager.core.business.shipping.model.ShippingType;
+import com.salesmanager.core.business.shipping.service.ShippingService;
+import com.salesmanager.core.utils.ProductPriceUtils;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ShippingOptionsController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShippingOptionsController.class);
+
+
+ @Autowired
+ private ShippingService shippingService;
+
+ @Autowired
+ LabelUtils messages;
+
+ @Autowired
+ private ProductPriceUtils priceUtil;
+
+ /**
+ * Displays shipping options
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/shippingOptions.html", method=RequestMethod.GET)
+ public String displayShippingOptions(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ this.setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+
+ ShippingConfiguration shippingConfiguration = shippingService.getShippingConfiguration(store);
+
+ if(shippingConfiguration==null) {
+ shippingConfiguration = new ShippingConfiguration();
+ shippingConfiguration.setShippingType(ShippingType.INTERNATIONAL);
+ }
+
+ if(shippingConfiguration!=null) {
+
+ if(shippingConfiguration.getHandlingFees()!=null) {
+ shippingConfiguration.setHandlingFeesText(priceUtil.getAdminFormatedAmount(store,shippingConfiguration.getHandlingFees()));
+ }
+
+ if(shippingConfiguration.getOrderTotalFreeShipping()!=null) {
+ shippingConfiguration.setOrderTotalFreeShippingText(priceUtil.getAdminFormatedAmount(store,shippingConfiguration.getOrderTotalFreeShipping()));
+ }
+
+ }
+
+
+ model.addAttribute("configuration", shippingConfiguration);
+ return ControllerConstants.Tiles.Shipping.shippingOptions;
+
+
+ }
+
+ /**
+ * Saves shipping options
+ * @param configuration
+ * @param result
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/saveShippingOptions.html", method=RequestMethod.POST)
+ public String saveShippingOptions(@ModelAttribute("configuration") ShippingConfiguration configuration, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get original configuration
+ ShippingConfiguration shippingConfiguration = shippingService.getShippingConfiguration(store);
+
+ if(shippingConfiguration==null) {
+ shippingConfiguration = new ShippingConfiguration();
+ }
+
+ BigDecimal submitedOrderPrice = null;
+ if(!StringUtils.isBlank(configuration.getOrderTotalFreeShippingText())){
+ try {
+ submitedOrderPrice = priceUtil.getAmount(configuration.getOrderTotalFreeShippingText());
+ shippingConfiguration.setOrderTotalFreeShipping(submitedOrderPrice);
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("orderTotalFreeShippingText",messages.getMessage("message.invalid.price", locale));
+ result.addError(error);
+ }
+ }
+
+ BigDecimal submitedHandlingPrice = null;
+ if(!StringUtils.isBlank(configuration.getHandlingFeesText())){
+ try {
+ submitedHandlingPrice = priceUtil.getAmount(configuration.getHandlingFeesText());
+ shippingConfiguration.setHandlingFees(submitedHandlingPrice);
+ } catch (Exception e) {
+ ObjectError error = new ObjectError("handlingFeesText",messages.getMessage("message.invalid.price", locale));
+ result.addError(error);
+ }
+ }
+
+ shippingConfiguration.setFreeShippingEnabled(configuration.isFreeShippingEnabled());
+ shippingConfiguration.setTaxOnShipping(configuration.isTaxOnShipping());
+ if(configuration.getShipFreeType()!=null) {
+ shippingConfiguration.setShipFreeType(configuration.getShipFreeType());
+ }
+ shippingConfiguration.setShipOptionPriceType(configuration.getShipOptionPriceType());
+
+ shippingService.saveShippingConfiguration(shippingConfiguration, store);
+
+ model.addAttribute("configuration", configuration);
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Shipping.shippingOptions;
+
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("shipping", "shipping");
+ activeMenus.put("shipping-options", "shipping-options");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("shipping");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingPackagingController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingPackagingController.java
new file mode 100644
index 0000000..c65cf0b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/shipping/ShippingPackagingController.java
@@ -0,0 +1,140 @@
+package com.salesmanager.web.admin.controller.shipping;
+
+import java.text.DecimalFormat;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.shipping.model.ShippingConfiguration;
+import com.salesmanager.core.business.shipping.model.ShippingType;
+import com.salesmanager.core.business.shipping.service.ShippingService;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class ShippingPackagingController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShippingPackagingController.class);
+
+
+ @Autowired
+ private ShippingService shippingService;
+
+ @Autowired
+ LabelUtils messages;
+
+
+ /**
+ * Displays shipping packaging
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/shippingPackaging.html", method=RequestMethod.GET)
+ public String displayShippingPackaging(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ this.setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ ShippingConfiguration shippingConfiguration = shippingService.getShippingConfiguration(store);
+
+ if(shippingConfiguration==null) {
+ shippingConfiguration = new ShippingConfiguration();
+ shippingConfiguration.setShippingType(ShippingType.INTERNATIONAL);
+ }
+
+ model.addAttribute("configuration", shippingConfiguration);
+ model.addAttribute("store",store);
+ return ControllerConstants.Tiles.Shipping.shippingPackaging;
+
+
+ }
+
+ /**
+ * Saves shipping packaging
+ * @param configuration
+ * @param result
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('SHIPPING')")
+ @RequestMapping(value="/admin/shipping/saveShippingPackaging.html", method=RequestMethod.POST)
+ public String saveShippingPackaging(@ModelAttribute("configuration") ShippingConfiguration configuration, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ this.setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ //get original configuration
+ ShippingConfiguration shippingConfiguration = shippingService.getShippingConfiguration(store);
+
+ if(shippingConfiguration==null) {
+ shippingConfiguration = new ShippingConfiguration();
+ }
+
+ DecimalFormat df = new DecimalFormat("#.##");
+ String sweight = df.format(configuration.getBoxWeight());
+ double weight = Double.parseDouble(sweight);
+
+ shippingConfiguration.setBoxHeight(configuration.getBoxHeight());
+ shippingConfiguration.setBoxLength(configuration.getBoxLength());
+ shippingConfiguration.setBoxWeight(weight);
+ shippingConfiguration.setBoxWidth(configuration.getBoxWidth());
+
+ shippingConfiguration.setShipPackageType(configuration.getShipPackageType());
+
+
+ shippingService.saveShippingConfiguration(shippingConfiguration, store);
+
+ model.addAttribute("configuration", configuration);
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.Shipping.shippingPackaging;
+
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("shipping", "shipping");
+ activeMenus.put("shipping-packages", "shipping-packages");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("shipping");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxClassController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxClassController.java
new file mode 100644
index 0000000..b79cd59
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxClassController.java
@@ -0,0 +1,304 @@
+package com.salesmanager.web.admin.controller.tax;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.tax.model.taxclass.TaxClass;
+import com.salesmanager.core.business.tax.service.TaxClassService;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class TaxClassController {
+
+ @Autowired
+ private TaxClassService taxClassService = null;
+
+ @Autowired
+ private ProductService productService=null;
+
+ @Autowired
+ LabelUtils messages;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(TaxClassController.class);
+
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value={"/admin/tax/taxclass/list.html"}, method=RequestMethod.GET)
+ public String displayTaxClasses(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ TaxClass taxClass = new TaxClass();
+ taxClass.setMerchantStore(store);
+
+ model.addAttribute("taxClass", taxClass);
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxClasses;
+ }
+
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value = "/admin/tax/taxclass/paging.html", method = RequestMethod.POST, produces = "application/json")
+ public @ResponseBody
+ String pageTaxClasses(HttpServletRequest request,
+ HttpServletResponse response, Locale locale) {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ AjaxResponse resp = new AjaxResponse();
+ try {
+
+ List<TaxClass> taxClasses = taxClassService.listByStore(store);
+ for(TaxClass tax : taxClasses) {
+ if(!tax.getCode().equals(TaxClass.DEFAULT_TAX_CLASS)) {
+ Map<String,String> entry = new HashMap<String,String>();
+ entry.put("taxClassId", String.valueOf(tax.getId()));
+ entry.put("code", tax.getCode());
+ entry.put("name", tax.getTitle());
+ resp.addDataEntry(entry);
+ }
+ }
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging permissions", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value="/admin/tax/taxclass/save.html", method=RequestMethod.POST)
+ public String saveTaxClass(@Valid @ModelAttribute("taxClass") TaxClass taxClass, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ //requires code and name
+ if(taxClass.getCode().equals(TaxClass.DEFAULT_TAX_CLASS)) {
+ ObjectError error = new ObjectError("code",messages.getMessage("message.taxclass.alreadyexist", locale));
+ result.addError(error);
+ }
+
+
+
+ //check if the code already exist
+ TaxClass taxClassDb = taxClassService.getByCode(taxClass.getCode(),store);
+
+ if(taxClassDb!=null) {
+ ObjectError error = new ObjectError("code",messages.getMessage("message.taxclass.alreadyexist", locale));
+ result.addError(error);
+ }
+
+ if (result.hasErrors()) {
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxClasses;
+ }
+
+ taxClassService.create(taxClass);
+
+ model.addAttribute("success","success");
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxClasses;
+
+ }
+
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value="/admin/tax/taxclass/update.html", method=RequestMethod.POST)
+ public String updateTaxClass(@Valid @ModelAttribute("taxClass") TaxClass taxClass, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ //requires code and name
+ if(taxClass.getCode().equals(TaxClass.DEFAULT_TAX_CLASS)) {
+ ObjectError error = new ObjectError("code",messages.getMessage("message.taxclass.alreadyexist", locale));
+ result.addError(error);
+ }
+
+
+
+ //check if the code already exist
+ TaxClass taxClassDb = taxClassService.getByCode(taxClass.getCode(),store);
+
+ if(taxClassDb!=null && taxClassDb.getId().longValue()!=taxClass.getId().longValue()) {
+ ObjectError error = new ObjectError("code",messages.getMessage("message.taxclass.alreadyexist", locale));
+ result.addError(error);
+ }
+
+ if (result.hasErrors()) {
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxClass;
+ }
+
+ taxClassService.update(taxClass);
+
+ model.addAttribute("success","success");
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxClass;
+
+ }
+
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value="/admin/tax/taxclass/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeTaxClass(HttpServletRequest request, Locale locale) throws Exception {
+
+ //do not remove super admin
+
+ String taxClassId = request.getParameter("taxClassId");
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+ /**
+ * In order to remove a User the logged in ser must be STORE_ADMIN
+ * or SUPER_USER
+ */
+
+
+ if(taxClassId==null){
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ long lTaxClassId;
+ try {
+ lTaxClassId = Long.parseLong(taxClassId);
+ } catch (Exception e) {
+ LOGGER.error("Invalid taxClassId " + taxClassId);
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ TaxClass taxClass = taxClassService.getById(lTaxClassId);
+
+ if(taxClass==null) {
+ LOGGER.error("Invalid taxClassId " + taxClassId);
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ //look if the taxclass is used for products
+ List<Product> products = productService.listByTaxClass(taxClass);
+
+ if(products!=null && products.size()>0) {
+ resp.setStatusMessage(messages.getMessage("message.product.association", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ taxClassService.delete(taxClass);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting tax class", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+ }
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value="/admin/tax/taxclass/edit.html", method=RequestMethod.GET)
+ public String editTaxClass(@ModelAttribute("id") String id, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ TaxClass taxClass = null;
+ try {
+ Long taxClassId = Long.parseLong(id);
+ taxClass = taxClassService.getById(taxClassId);
+ } catch (Exception e) {
+ LOGGER.error("Cannot parse taxclassid " + id);
+ return "redirect:/admin/tax/taxclass/list.html";
+ }
+
+ if(taxClass==null || taxClass.getMerchantStore().getId()!=store.getId()) {
+ return "redirect:/admin/tax/taxclass/list.html";
+ }
+
+
+
+
+ model.addAttribute("taxClass", taxClass);
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxClass;
+
+
+
+ }
+
+
+
+ private void setMenu(Model model, HttpServletRequest request)
+ throws Exception {
+
+ // display menu
+ Map<String, String> activeMenus = new HashMap<String, String>();
+ activeMenus.put("tax", "tax");
+ activeMenus.put("taxclass", "taxclass");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>) request
+ .getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu) menus.get("tax");
+ model.addAttribute("currentMenu", currentMenu);
+ model.addAttribute("activeMenus", activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxConfigurationController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxConfigurationController.java
new file mode 100644
index 0000000..bec6011
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxConfigurationController.java
@@ -0,0 +1,89 @@
+package com.salesmanager.web.admin.controller.tax;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.tax.model.TaxConfiguration;
+import com.salesmanager.core.business.tax.service.TaxService;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+@Controller
+public class TaxConfigurationController {
+
+ @Autowired
+ private TaxService taxService = null;
+
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value={"/admin/tax/taxconfiguration/edit.html"}, method=RequestMethod.GET)
+ public String displayTaxConfiguration(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ TaxConfiguration taxConfiguration = taxService.getTaxConfiguration(store);
+ if(taxConfiguration == null) {
+
+ taxConfiguration = new TaxConfiguration();
+
+ }
+
+ model.addAttribute("taxConfiguration", taxConfiguration);
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxConfiguration;
+ }
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value="/admin/tax/taxconfiguration/save.html", method=RequestMethod.POST)
+ public String saveTaxConfiguration(@Valid @ModelAttribute("taxConfiguration") TaxConfiguration taxConfiguration, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ taxService.saveTaxConfiguration(taxConfiguration, store);
+
+ model.addAttribute("success","success");
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxConfiguration;
+
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request)
+ throws Exception {
+
+ // display menu
+ Map<String, String> activeMenus = new HashMap<String, String>();
+ activeMenus.put("tax", "tax");
+ activeMenus.put("taxconfiguration", "taxconfiguration");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>) request
+ .getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu) menus.get("tax");
+ model.addAttribute("currentMenu", currentMenu);
+ model.addAttribute("activeMenus", activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxRatesController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxRatesController.java
new file mode 100644
index 0000000..bf108b5
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/tax/TaxRatesController.java
@@ -0,0 +1,471 @@
+package com.salesmanager.web.admin.controller.tax;
+import java.math.BigDecimal;
+import java.text.NumberFormat;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.tax.model.taxclass.TaxClass;
+import com.salesmanager.core.business.tax.model.taxrate.TaxRate;
+import com.salesmanager.core.business.tax.model.taxrate.TaxRateDescription;
+import com.salesmanager.core.business.tax.service.TaxClassService;
+import com.salesmanager.core.business.tax.service.TaxRateService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LabelUtils;
+
+
+@Controller
+public class TaxRatesController {
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(TaxRatesController.class);
+
+ private final static char DECIMALCOUNT = '3';
+
+
+ @Autowired
+ LabelUtils messages;
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private TaxRateService taxRateService;
+
+ @Autowired
+ private TaxClassService taxClassService;
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value={"/admin/tax/taxrates/list.html"}, method=RequestMethod.GET)
+ public String displayTaxRates(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model, request);
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ List<Country> countries = countryService.getCountries(language);
+ TaxRate taxRate = new TaxRate();
+ List<Language> languages = store.getLanguages();
+
+ for(Language l : languages) {
+
+ TaxRateDescription taxRateDescription = new TaxRateDescription();
+ taxRateDescription.setLanguage(l);
+ taxRate.getDescriptions().add(taxRateDescription);
+ }
+
+ taxRate.setMerchantStore(store);
+ taxRate.setCountry(store.getCountry());
+
+
+ List<TaxRate> taxRates = taxRateService.listByStore(store);
+ List<TaxClass> taxClasses = taxClassService.listByStore(store);
+
+ model.addAttribute("taxRate", taxRate);
+ model.addAttribute("countries", countries);
+ model.addAttribute("taxRates", taxRates);
+ model.addAttribute("taxClasses", taxClasses);
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxRates;
+ }
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value = "/admin/tax/taxrates/page.html", method = RequestMethod.POST, produces = "application/json")
+ public @ResponseBody
+ String pageTaxRates(HttpServletRequest request,
+ HttpServletResponse response) {
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+ NumberFormat nf = null;
+
+
+ nf = NumberFormat.getInstance(Locale.US);
+
+ nf.setMaximumFractionDigits(Integer.parseInt(Character
+ .toString(DECIMALCOUNT)));
+ nf.setMinimumFractionDigits(Integer.parseInt(Character
+ .toString(DECIMALCOUNT)));
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ List<TaxRate> taxRates = taxRateService.listByStore(store,language);
+
+ if(taxRates!=null) {
+ for (TaxRate rate : taxRates) {
+
+ Map entry = new HashMap ();
+ entry.put("taxRateId", String.valueOf(rate.getId()));
+ entry.put("code", rate.getCode());
+ List<TaxRateDescription> descriptions = rate.getDescriptions();
+ String name = "";
+ if(descriptions!=null && descriptions.size()>0) {
+ TaxRateDescription desc = descriptions.get(0);
+ for(TaxRateDescription description : descriptions) {
+ if(description.getLanguage().getCode().equals(language.getCode())) {
+ desc = description;
+ break;
+ }
+ }
+ name = desc.getName();
+ }
+
+ entry.put("name", name);
+ entry.put("priority", rate.getTaxPriority());
+
+ entry.put("piggyback", rate.isPiggyback());
+ entry.put("country", rate.getCountry().getIsoCode());
+ entry.put("taxClass", rate.getTaxClass().getCode());
+
+
+ String zoneCode = rate.getStateProvince();
+ if(rate.getZone()!=null) {
+ zoneCode = rate.getZone().getCode();
+ }
+ entry.put("zone", zoneCode);
+
+ entry.put("rate", nf.format(rate.getTaxRate()));
+
+
+ resp.addDataEntry(entry);
+
+ }
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging custom weight based", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value="/admin/tax/taxrates/save.html", method=RequestMethod.POST)
+ public String saveTaxRate(@Valid @ModelAttribute("taxRate") TaxRate taxRate, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+ setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ this.validateTaxRate(model, taxRate, result, store, language, locale);
+
+ if (result.hasErrors()) {
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxRates;
+
+ }
+
+
+ taxRateService.create(taxRate);
+
+ List<TaxRate> taxRates = taxRateService.listByStore(store);
+
+ model.addAttribute("success","success");
+ model.addAttribute("taxRates", taxRates);
+
+
+
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxRates;
+
+ }
+
+
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value="/admin/tax/taxrates/update.html", method=RequestMethod.POST)
+ public String updateTaxRate(@Valid @ModelAttribute("taxRate") TaxRate taxRate, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ setMenu(model, request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ this.validateTaxRate(model, taxRate, result, store, language, locale);
+
+ if (result.hasErrors()) {
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxRate;
+
+ }
+
+
+ taxRateService.update(taxRate);
+
+ List<TaxRate> taxRates = taxRateService.listByStore(store);
+
+ model.addAttribute("success","success");
+ model.addAttribute("taxRates", taxRates);
+
+
+
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxRate;
+
+
+ }
+
+ private void validateTaxRate(Model model, TaxRate taxRate, BindingResult result, MerchantStore store, Language language, Locale locale) throws Exception {
+
+
+
+ List<TaxClass> taxClasses = taxClassService.listByStore(store);
+
+
+ List<Country> countries = countryService.getCountries(language);
+ List<TaxRate> taxRates = taxRateService.listByStore(store);
+
+
+ model.addAttribute("countries", countries);
+ model.addAttribute("taxRates", taxRates);
+ model.addAttribute("taxClasses", taxClasses);
+
+ if(StringUtils.isBlank(taxRate.getRateText())) {
+ FieldError error = new FieldError("taxRate","rateText",messages.getMessage("NotEmpty.taxRate.rateText", locale));
+ result.addError(error);
+ }
+
+ //if(taxRate.isPiggyback() && taxRate.getParent()==null) {
+ //FieldError error = new FieldError("taxRate","piggyback",messages.getMessage("NotNull.taxRate.parent", locale));
+ //result.addError(error);
+ //}
+
+ try {
+ BigDecimal rate = new BigDecimal(taxRate.getRateText());
+ taxRate.setTaxRate(rate);
+ } catch (Exception e) {
+ FieldError error = new FieldError("taxRate","rateText",messages.getMessage("message.invalid.rate", locale));
+ result.addError(error);
+ }
+
+ //check if code exists
+ String taxRateCode = taxRate.getCode();
+ TaxRate tr = taxRateService.getByCode(taxRateCode, store);
+ if(tr!=null) {
+ if(tr.getId().longValue()!=taxRate.getId().longValue()){
+ FieldError error = new FieldError("taxRate","code",messages.getMessage("NotEmpty.taxRate.unique.code", locale));
+ result.addError(error);
+ }
+ }
+
+
+ if(taxRate.getTaxPriority()==null) {
+ taxRate.setTaxPriority(0);
+ }
+
+
+ if(taxRate.getZone()!=null) {
+ Zone z = zoneService.getById(taxRate.getZone().getId());
+ taxRate.setZone(z);
+ }
+
+
+
+ Country c = countryService.getByCode(taxRate.getCountry().getIsoCode());
+
+ taxRate.setCountry(c);
+
+ List<TaxRateDescription> descriptions = taxRate.getDescriptions();
+ for(TaxRateDescription description : descriptions) {
+ description.setTaxRate(taxRate);
+ }
+
+ if(!taxRate.isPiggyback()) {
+ taxRate.setParent(null);
+ }
+
+ return;
+
+ }
+
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value="/admin/tax/taxrates/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeTaxRate(HttpServletRequest request, Locale locale) throws Exception {
+
+ //do not remove super admin
+
+ String taxRateId = request.getParameter("taxRateId");
+
+ AjaxResponse resp = new AjaxResponse();
+
+
+ try {
+
+
+ /**
+ * In order to remove a User the logged in ser must be STORE_ADMIN
+ * or SUPER_USER
+ */
+
+
+ if(taxRateId==null){
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ long ltaxRateId;
+ try {
+ ltaxRateId = Long.parseLong(taxRateId);
+ } catch (Exception e) {
+ LOGGER.error("Invalid taxRateId " + taxRateId);
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ TaxRate taxRate = taxRateService.getById(ltaxRateId);
+
+ if(taxRate==null) {
+ LOGGER.error("Invalid taxRateId " + taxRateId);
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+
+ taxRateService.delete(taxRate);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting tax rate", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+ }
+
+ @PreAuthorize("hasRole('TAX')")
+ @RequestMapping(value="/admin/tax/taxrates/edit.html", method=RequestMethod.GET)
+ public String editTaxRate(@ModelAttribute("id") String id, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ TaxRate taxRate = null;
+ try {
+ Long taxRateId = Long.parseLong(id);
+ taxRate = taxRateService.getById(taxRateId);
+ } catch (Exception e) {
+ LOGGER.error("Cannot parse taxRateId " + id);
+ return "redirect:/admin/tax/taxrates/list.html";
+ }
+
+ if(taxRate==null || taxRate.getMerchantStore().getId()!=store.getId()) {
+ return "redirect:/admin/tax/taxrates/list.html";
+ }
+
+
+ NumberFormat nf = null;
+
+
+ nf = NumberFormat.getInstance(Locale.US);
+
+ nf.setMaximumFractionDigits(Integer.parseInt(Character
+ .toString(DECIMALCOUNT)));
+ nf.setMinimumFractionDigits(Integer.parseInt(Character
+ .toString(DECIMALCOUNT)));
+
+ taxRate.setRateText(nf.format(taxRate.getTaxRate()));
+
+
+
+ List<TaxClass> taxClasses = taxClassService.listByStore(store);
+
+
+
+ List<Country> countries = countryService.getCountries(language);
+ List<TaxRate> taxRates = taxRateService.listByStore(store);
+
+
+ model.addAttribute("countries", countries);
+ model.addAttribute("taxRates", taxRates);
+ model.addAttribute("taxClasses", taxClasses);
+
+ model.addAttribute("taxRate", taxRate);
+
+ return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Tax.taxRate;
+
+
+
+ }
+
+
+
+
+ private void setMenu(Model model, HttpServletRequest request)
+ throws Exception {
+
+ // display menu
+ Map<String, String> activeMenus = new HashMap<String, String>();
+ activeMenus.put("tax", "tax");
+ activeMenus.put("taxrates", "taxrates");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>) request
+ .getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu) menus.get("tax");
+ model.addAttribute("currentMenu", currentMenu);
+ model.addAttribute("activeMenus", activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/GroupsController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/GroupsController.java
new file mode 100644
index 0000000..13f33ae
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/GroupsController.java
@@ -0,0 +1,150 @@
+package com.salesmanager.web.admin.controller.user;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.GroupType;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.core.business.user.service.PermissionService;
+import com.salesmanager.core.utils.ajax.AjaxPageableResponse;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class GroupsController {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(GroupsController.class);
+
+ @Autowired
+ LanguageService languageService;
+
+ @Autowired
+ protected GroupService groupService;
+
+ @Autowired
+ PermissionService permissionService;
+
+ @Autowired
+ CountryService countryService;
+
+ @Autowired
+ LabelUtils messages;
+
+
+
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value = "/admin/groups/editGroup.html", method = RequestMethod.GET)
+ public String displayGroup(@RequestParam("id") Integer groupId, Model model,
+ HttpServletRequest request, HttpServletResponse response)
+ throws Exception {
+ // display menu
+ setMenu(model, request);
+
+ Group group = groupService.getById(groupId);
+
+ model.addAttribute("group", group);
+
+ return "admin-user-group";
+ }
+
+
+
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value = "/admin/groups/groups.html", method = RequestMethod.GET)
+ public String displayGroups(Model model, HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ setMenu(model, request);
+ List<Group> groups = groupService.listGroup(GroupType.ADMIN);
+ model.addAttribute("groups", groups);
+
+ return "admin-user-groups";
+ }
+
+
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value = "/admin/groups/paging.html", method = RequestMethod.POST, produces = "application/json")
+ public @ResponseBody
+ String pageGroups(HttpServletRequest request,
+ HttpServletResponse response, Locale locale) {
+
+ AjaxResponse resp = new AjaxResponse();
+ try {
+
+ List<Group> groups = groupService.list();
+
+ for(Group group : groups) {
+ Map entry = new HashMap();
+ entry.put("groupId", group.getId());
+ entry.put("name", group.getGroupName());
+
+ StringBuilder key = new StringBuilder().append("security.group.description.").append(group.getGroupName());
+ try {
+
+ String message = messages.getMessage(key.toString(), locale);
+ entry.put("description",message);
+
+ } catch(Exception noLabelException) {
+ LOGGER.error("No label found for key [" + key.toString() + "]");
+ }
+
+
+
+
+ resp.addDataEntry(entry);
+ }
+
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging permissions", e);
+ resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request)
+ throws Exception {
+
+ // display menu
+ Map<String, String> activeMenus = new HashMap<String, String>();
+ activeMenus.put("profile", "profile");
+ activeMenus.put("security", "security");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>) request
+ .getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu) menus.get("profile");
+ model.addAttribute("currentMenu", currentMenu);
+ model.addAttribute("activeMenus", activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/LoginController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/LoginController.java
new file mode 100644
index 0000000..5c65fc7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/LoginController.java
@@ -0,0 +1,48 @@
+package com.salesmanager.web.admin.controller.user;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+@Controller
+public class LoginController {
+
+
+ @RequestMapping(value="/admin/logon.html", method=RequestMethod.GET)
+ public String displayLogin(HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ return "admin/logon";
+
+
+ }
+
+
+ @RequestMapping(value="/admin/denied.html", method=RequestMethod.GET)
+ public String displayDenied(HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ //logoff the user
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ if (auth != null){
+ new SecurityContextLogoutHandler().logout(request, response, auth);
+ //new PersistentTokenBasedRememberMeServices().logout(request, response, auth);
+ }
+
+ return "admin/logon";
+
+
+ }
+
+ @RequestMapping(value="/admin/unauthorized.html", method=RequestMethod.GET)
+ public String unauthorized(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ return "admin/unauthorized";
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/PermissionController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/PermissionController.java
new file mode 100644
index 0000000..24e0541
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/PermissionController.java
@@ -0,0 +1,119 @@
+package com.salesmanager.web.admin.controller.user;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.user.model.Permission;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.core.business.user.service.PermissionService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class PermissionController {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(PermissionController.class);
+
+ @Autowired
+ protected PermissionService permissionService;
+
+ @Autowired
+ protected GroupService groupService;
+
+ @Autowired
+ CountryService countryService;
+
+ @Autowired
+ LabelUtils messages;
+
+
+
+
+
+
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value = "/admin/permissions/permissions.html", method = RequestMethod.GET)
+ public String displayPermissions(Model model, HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ //setMenu(model, request);
+ //return "admin-user-permissions";
+
+ throw new Exception("Not implemented");
+ }
+
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value = "/admin/permissions/paging.html", method = RequestMethod.POST, produces = "application/json")
+ public @ResponseBody
+ String pagePermissions(HttpServletRequest request,
+ HttpServletResponse response) {
+ //String permissionName = request.getParameter("name");
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ List<Permission> permissions = null;
+ permissions = permissionService.listPermission();
+
+ for (Permission permission : permissions) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("permissionId", permission.getId());
+ entry.put("name", permission.getPermissionName());
+ resp.addDataEntry(entry);
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging permissions", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @SuppressWarnings("unused")
+ private void setMenu(Model model, HttpServletRequest request)
+ throws Exception {
+
+ // display menu
+ Map<String, String> activeMenus = new HashMap<String, String>();
+ activeMenus.put("profile", "profile");
+ activeMenus.put("security", "security");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>) request
+ .getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu) menus.get("profile");
+ model.addAttribute("currentMenu", currentMenu);
+ model.addAttribute("activeMenus", activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/SecurityController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/SecurityController.java
new file mode 100644
index 0000000..494cfc4
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/SecurityController.java
@@ -0,0 +1,67 @@
+package com.salesmanager.web.admin.controller.user;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.GroupType;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.web.admin.entity.web.Menu;
+
+@Controller
+public class SecurityController {
+
+ @Autowired
+ GroupService groupService;
+
+ @RequestMapping(value="/admin/user/permissions.html", method=RequestMethod.GET)
+ public String displayPermissions(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+ return "admin-user-permissions";
+
+
+ }
+
+
+ @RequestMapping(value="/admin/user/groups.html", method=RequestMethod.GET)
+ public String displayGroups(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ setMenu(model,request);
+ List<Group> groups = groupService.listGroup(GroupType.ADMIN);
+
+ model.addAttribute("groups", groups);
+
+ return "admin-user-groups";
+
+
+ }
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("profile", "profile");
+ activeMenus.put("security", "security");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("profile");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/UserController.java b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/UserController.java
new file mode 100644
index 0000000..5b6e343
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/controller/user/UserController.java
@@ -0,0 +1,862 @@
+package com.salesmanager.web.admin.controller.user;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.GroupType;
+import com.salesmanager.core.business.user.model.User;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.core.business.user.service.UserService;
+import com.salesmanager.core.modules.email.Email;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.admin.controller.ControllerConstants;
+import com.salesmanager.web.admin.entity.secutity.Password;
+import com.salesmanager.web.admin.entity.userpassword.UserReset;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.admin.security.SecurityQuestion;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.constants.EmailConstants;
+import com.salesmanager.web.utils.EmailUtils;
+import com.salesmanager.web.utils.FilePathUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+import com.salesmanager.web.utils.UserUtils;
+
+@Controller
+public class UserController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);
+
+ @Autowired
+ LanguageService languageService;
+
+ @Autowired
+ UserService userService;
+
+ @Autowired
+ GroupService groupService;
+
+ @Autowired
+ CountryService countryService;
+
+ @Autowired
+ EmailService emailService;
+
+ @Autowired
+ MerchantStoreService merchantStoreService;
+
+ @Autowired
+ LabelUtils messages;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+ private final static String QUESTION_1 = "question1";
+ private final static String QUESTION_2 = "question2";
+ private final static String QUESTION_3 = "question3";
+ private final static String RESET_PASSWORD_TPL = "email_template_password_reset_user.ftl";
+ private final static String NEW_USER_TMPL = "email_template_new_user.ftl";
+
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value="/admin/users/list.html", method=RequestMethod.GET)
+ public String displayUsers(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ //The users are retrieved from the paging method
+ setMenu(model,request);
+ return ControllerConstants.Tiles.User.users;
+ }
+
+ /**
+ * Displays a list of users that can be managed by admins
+ * @param request
+ * @param response
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value = "/admin/users/paging.html", method = RequestMethod.POST, produces = "application/json")
+ public @ResponseBody
+ String pageUsers(HttpServletRequest request,
+ HttpServletResponse response) {
+
+ AjaxResponse resp = new AjaxResponse();
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ String sCurrentUser = request.getRemoteUser();
+
+
+ try {
+
+ User currentUser = userService.getByUserName(sCurrentUser);
+ List<User> users = null;
+ if(UserUtils.userInGroup(currentUser, Constants.GROUP_SUPERADMIN) ) {
+ users = userService.listUser();
+ } else {
+ users = userService.listByStore(store);
+ }
+
+
+ for (User user : users) {
+
+ if(!UserUtils.userInGroup(user, Constants.GROUP_SUPERADMIN)) {
+
+ if(!currentUser.equals(user.getAdminName())){
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("userId", user.getId());
+ entry.put("name", user.getFirstName() + " " + user.getLastName());
+ entry.put("email", user.getAdminEmail());
+ entry.put("active", user.isActive());
+ resp.addDataEntry(entry);
+
+ }
+
+ }
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while paging products", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/users/password.html", method=RequestMethod.GET)
+ public String displayChangePassword(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+ setMenu(model,request);
+ String userName = request.getRemoteUser();
+ User user = userService.getByUserName(userName);
+
+ Password password = new Password();
+ password.setUser(user);
+
+ model.addAttribute("password",password);
+ model.addAttribute("user",user);
+ return ControllerConstants.Tiles.User.password;
+ }
+
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/users/savePassword.html", method=RequestMethod.POST)
+ public String changePassword(@ModelAttribute("password") Password password, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+ setMenu(model,request);
+ String userName = request.getRemoteUser();
+ User dbUser = userService.getByUserName(userName);
+
+
+ if(password.getUser().getId().longValue()!= dbUser.getId().longValue()) {
+ return "redirect:/admin/users/displayUser.html";
+ }
+
+ //validate password not empty
+ if(StringUtils.isBlank(password.getPassword())) {
+ ObjectError error = new ObjectError("password",new StringBuilder().append(messages.getMessage("label.generic.password", locale)).append(" ").append(messages.getMessage("message.cannot.empty", locale)).toString());
+ result.addError(error);
+ return ControllerConstants.Tiles.User.password;
+ }
+
+
+ String tempPass = passwordEncoder.encodePassword(password.getPassword(), null);
+
+ //password match
+ if(!tempPass.equals(dbUser.getAdminPassword())) {
+ ObjectError error = new ObjectError("password",messages.getMessage("message.password.invalid", locale));
+ result.addError(error);
+ return ControllerConstants.Tiles.User.password;
+ }
+
+
+
+ if(StringUtils.isBlank(password.getNewPassword())) {
+ ObjectError error = new ObjectError("newPassword",new StringBuilder().append(messages.getMessage("label.generic.newpassword", locale)).append(" ").append(messages.getMessage("message.cannot.empty", locale)).toString());
+ result.addError(error);
+ }
+
+ if(StringUtils.isBlank(password.getRepeatPassword())) {
+ ObjectError error = new ObjectError("newPasswordAgain",new StringBuilder().append(messages.getMessage("label.generic.newpassword.repeat", locale)).append(" ").append(messages.getMessage("message.cannot.empty", locale)).toString());
+ result.addError(error);
+ }
+
+ if(!password.getRepeatPassword().equals(password.getNewPassword())) {
+ ObjectError error = new ObjectError("newPasswordAgain",messages.getMessage("message.password.different", locale));
+ result.addError(error);
+ }
+
+ if(password.getNewPassword().length()<6) {
+ ObjectError error = new ObjectError("newPassword",messages.getMessage("message.password.length", locale));
+ result.addError(error);
+ }
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.User.password;
+ }
+
+
+
+ String pass = passwordEncoder.encodePassword(password.getNewPassword(), null);
+ dbUser.setAdminPassword(pass);
+ userService.update(dbUser);
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.User.password;
+ }
+
+ @PreAuthorize("hasRole('STORE_ADMIN')")
+ @RequestMapping(value="/admin/users/createUser.html", method=RequestMethod.GET)
+ public String displayUserCreate(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+ return displayUser(null,model,request,response,locale);
+ }
+
+
+ /**
+ * From user list
+ * @param id
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/users/displayStoreUser.html", method=RequestMethod.GET)
+ public String displayUserEdit(@ModelAttribute("id") Long id, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ User dbUser = userService.getById(id);
+
+ if(dbUser==null) {
+ LOGGER.info("User is null for id " + id);
+ return "redirect://admin/users/list.html";
+ }
+
+
+ return displayUser(dbUser,model,request,response,locale);
+
+ }
+
+ /**
+ * From user profile
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/users/displayUser.html", method=RequestMethod.GET)
+ public String displayUserEdit(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ String userName = request.getRemoteUser();
+ User user = userService.getByUserName(userName);
+ return displayUser(user,model,request,response,locale);
+
+ }
+
+ private void populateUserObjects(User user, MerchantStore store, Model model, Locale locale) throws Exception {
+
+ //get groups
+ List<Group> groups = new ArrayList<Group>();
+ List<Group> userGroups = groupService.listGroup(GroupType.ADMIN);
+ for(Group group : userGroups) {
+ if(!group.getGroupName().equals(Constants.GROUP_SUPERADMIN)) {
+ groups.add(group);
+ }
+ }
+
+
+ List<MerchantStore> stores = new ArrayList<MerchantStore>();
+ //stores.add(store);
+ stores = merchantStoreService.list();
+
+ //String remoteUser = request.getRemoteUser();
+
+/* if(user!=null && user.getId()!=null) {
+ User logedInUser = userService.getByUserName(user.getAdminName());
+
+ //check groups
+ List<Group> logedInUserGroups = logedInUser.getGroups();
+ for(Group group : logedInUserGroups) {
+ if(group.getGroupName().equals(Constants.GROUP_SUPERADMIN)) {
+ stores = merchantStoreService.list();
+ }
+ }
+ }*/
+
+ //questions
+ List<SecurityQuestion> questions = new ArrayList<SecurityQuestion>();
+
+ SecurityQuestion question = new SecurityQuestion();
+ question.setId("1");
+ question.setLabel(messages.getMessage("security.question.1", locale));
+ questions.add(question);
+
+ question = new SecurityQuestion();
+ question.setId("2");
+ question.setLabel(messages.getMessage("security.question.2", locale));
+ questions.add(question);
+
+ question = new SecurityQuestion();
+ question.setId("3");
+ question.setLabel(messages.getMessage("security.question.3", locale));
+ questions.add(question);
+
+ question = new SecurityQuestion();
+ question.setId("4");
+ question.setLabel(messages.getMessage("security.question.4", locale));
+ questions.add(question);
+
+ question = new SecurityQuestion();
+ question.setId("5");
+ question.setLabel(messages.getMessage("security.question.5", locale));
+ questions.add(question);
+
+ question = new SecurityQuestion();
+ question.setId("6");
+ question.setLabel(messages.getMessage("security.question.6", locale));
+ questions.add(question);
+
+ question = new SecurityQuestion();
+ question.setId("7");
+ question.setLabel(messages.getMessage("security.question.7", locale));
+ questions.add(question);
+
+ question = new SecurityQuestion();
+ question.setId("8");
+ question.setLabel(messages.getMessage("security.question.8", locale));
+ questions.add(question);
+
+ question = new SecurityQuestion();
+ question.setId("9");
+ question.setLabel(messages.getMessage("security.question.9", locale));
+ questions.add(question);
+
+ model.addAttribute("questions", questions);
+ model.addAttribute("stores", stores);
+ model.addAttribute("languages", store.getLanguages());
+ model.addAttribute("groups", groups);
+
+
+ }
+
+
+
+ private String displayUser(User user, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ //display menu
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+
+
+ if(user==null) {
+ user = new User();
+ } else {
+ user.setAdminPassword("TRANSIENT");
+ }
+
+ this.populateUserObjects(user, store, model, locale);
+
+
+ model.addAttribute("user", user);
+
+
+
+ return ControllerConstants.Tiles.User.profile;
+ }
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/users/checkUserCode.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String checkUserCode(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+ String code = request.getParameter("code");
+ String id = request.getParameter("id");
+
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ if(StringUtils.isBlank(code)) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ User user = userService.getByUserName(code);
+
+
+ if(!StringUtils.isBlank(id)&& user!=null) {
+ try {
+ Long lid = Long.parseLong(id);
+
+ if(user.getAdminName().equals(code) && user.getId()==lid) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+ return resp.toJSONString();
+ }
+ } catch (Exception e) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ }
+
+
+ if(StringUtils.isBlank(code)) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ if(user!=null) {
+ resp.setStatus(AjaxResponse.CODE_ALREADY_EXIST);
+ return resp.toJSONString();
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while getting user", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+ }
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/users/save.html", method=RequestMethod.POST)
+ public String saveUser(@Valid @ModelAttribute("user") User user, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception {
+
+
+ setMenu(model,request);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ this.populateUserObjects(user, store, model, locale);
+
+ Language language = user.getDefaultLanguage();
+
+ Language l = languageService.getById(language.getId());
+
+ user.setDefaultLanguage(l);
+
+ Locale userLocale = LocaleUtils.getLocale(l);
+
+
+
+ User dbUser = null;
+
+ //edit mode, need to get original user important information
+ if(user.getId()!=null) {
+ dbUser = userService.getByUserName(user.getAdminName());
+ if(dbUser==null) {
+ return "redirect://admin/users/displayUser.html";
+ }
+ }
+
+ List<Group> submitedGroups = user.getGroups();
+ Set<Integer> ids = new HashSet<Integer>();
+ for(Group group : submitedGroups) {
+ ids.add(Integer.parseInt(group.getGroupName()));
+ }
+
+
+
+ //validate security questions not empty
+ if(StringUtils.isBlank(user.getAnswer1())) {
+ ObjectError error = new ObjectError("answer1",messages.getMessage("security.answer.question1.message", locale));
+ result.addError(error);
+ }
+
+ if(StringUtils.isBlank(user.getAnswer2())) {
+ ObjectError error = new ObjectError("answer2",messages.getMessage("security.answer.question2.message", locale));
+ result.addError(error);
+ }
+
+ if(StringUtils.isBlank(user.getAnswer3())) {
+ ObjectError error = new ObjectError("answer3",messages.getMessage("security.answer.question3.message", locale));
+ result.addError(error);
+ }
+
+ if(user.getQuestion1().equals(user.getQuestion2()) || user.getQuestion1().equals(user.getQuestion3())
+ || user.getQuestion2().equals(user.getQuestion1()) || user.getQuestion1().equals(user.getQuestion3())
+ || user.getQuestion3().equals(user.getQuestion1()) || user.getQuestion1().equals(user.getQuestion2()))
+
+
+ {
+ ObjectError error = new ObjectError("question1",messages.getMessage("security.questions.differentmessages", locale));
+ result.addError(error);
+ }
+
+
+ Group superAdmin = null;
+
+ if(user.getId()!=null && user.getId()>0) {
+ if(user.getId().longValue()!=dbUser.getId().longValue()) {
+ return "redirect://admin/users/displayUser.html";
+ }
+
+ List<Group> groups = dbUser.getGroups();
+ //boolean removeSuperAdmin = true;
+ for(Group group : groups) {
+ //can't revoke super admin
+ if(group.getGroupName().equals("SUPERADMIN")) {
+ superAdmin = group;
+ }
+ }
+
+ } else {
+
+ if(user.getAdminPassword().length()<6) {
+ ObjectError error = new ObjectError("adminPassword",messages.getMessage("message.password.length", locale));
+ result.addError(error);
+ }
+
+ }
+
+ if(superAdmin!=null) {
+ ids.add(superAdmin.getId());
+ }
+
+
+ List<Group> newGroups = groupService.listGroupByIds(ids);
+
+ //set actual user groups
+ user.setGroups(newGroups);
+
+ if (result.hasErrors()) {
+ return ControllerConstants.Tiles.User.profile;
+ }
+
+ String decodedPassword = user.getAdminPassword();
+ if(user.getId()!=null && user.getId()>0) {
+ user.setAdminPassword(dbUser.getAdminPassword());
+ } else {
+ String encoded = passwordEncoder.encodePassword(user.getAdminPassword(),null);
+ user.setAdminPassword(encoded);
+ }
+
+
+ if(user.getId()==null || user.getId().longValue()==0) {
+
+ //save or update user
+ userService.saveOrUpdate(user);
+
+ try {
+
+ //creation of a user, send an email
+ String userName = user.getFirstName();
+ if(StringUtils.isBlank(userName)) {
+ userName = user.getAdminName();
+ }
+ String[] userNameArg = {userName};
+
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(request.getContextPath(), store, messages, userLocale);
+ templateTokens.put(EmailConstants.EMAIL_NEW_USER_TEXT, messages.getMessage("email.greeting", userNameArg, userLocale));
+ templateTokens.put(EmailConstants.EMAIL_USER_FIRSTNAME, user.getFirstName());
+ templateTokens.put(EmailConstants.EMAIL_USER_LASTNAME, user.getLastName());
+ templateTokens.put(EmailConstants.EMAIL_ADMIN_USERNAME_LABEL, messages.getMessage("label.generic.username",userLocale));
+ templateTokens.put(EmailConstants.EMAIL_ADMIN_NAME, user.getAdminName());
+ templateTokens.put(EmailConstants.EMAIL_TEXT_NEW_USER_CREATED, messages.getMessage("email.newuser.text",userLocale));
+ templateTokens.put(EmailConstants.EMAIL_ADMIN_PASSWORD_LABEL, messages.getMessage("label.generic.password",userLocale));
+ templateTokens.put(EmailConstants.EMAIL_ADMIN_PASSWORD, decodedPassword);
+ templateTokens.put(EmailConstants.EMAIL_ADMIN_URL_LABEL, messages.getMessage("label.adminurl",userLocale));
+ templateTokens.put(EmailConstants.EMAIL_ADMIN_URL, FilePathUtils.buildAdminUri(store, request));
+
+
+ Email email = new Email();
+ email.setFrom(store.getStorename());
+ email.setFromEmail(store.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("email.newuser.title",userLocale));
+ email.setTo(user.getAdminEmail());
+ email.setTemplateName(NEW_USER_TMPL);
+ email.setTemplateTokens(templateTokens);
+
+
+
+ emailService.sendHtmlEmail(store, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot send email to user",e);
+ }
+
+ } else {
+ //save or update user
+ userService.saveOrUpdate(user);
+ }
+
+ model.addAttribute("success","success");
+ return ControllerConstants.Tiles.User.profile;
+ }
+
+ @PreAuthorize("hasRole('AUTH')")
+ @RequestMapping(value="/admin/users/remove.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String removeUser(HttpServletRequest request, Locale locale) throws Exception {
+
+ //do not remove super admin
+
+ String sUserId = request.getParameter("userId");
+
+ AjaxResponse resp = new AjaxResponse();
+
+ String userName = request.getRemoteUser();
+ User remoteUser = userService.getByUserName(userName);
+
+
+ try {
+
+ Long userId = Long.parseLong(sUserId);
+ User user = userService.getById(userId);
+
+ /**
+ * In order to remove a User the logged in ser must be STORE_ADMIN
+ * or SUPER_USER
+ */
+
+
+ if(user==null){
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ if(!request.isUserInRole(Constants.GROUP_ADMIN)) {
+ resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+ //check if the user removed has group ADMIN
+ boolean isAdmin = false;
+ if(UserUtils.userInGroup(remoteUser, Constants.GROUP_ADMIN) || UserUtils.userInGroup(remoteUser, Constants.GROUP_SUPERADMIN)) {
+ isAdmin = true;
+ }
+
+
+ if(!isAdmin) {
+ resp.setStatusMessage(messages.getMessage("message.security.caanotremovesuperadmin", locale));
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ userService.delete(user);
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while deleting product price", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setErrorMessage(e);
+ }
+
+ String returnString = resp.toJSONString();
+
+ return returnString;
+
+ }
+
+
+ private void setMenu(Model model, HttpServletRequest request) throws Exception {
+
+ //display menu
+ Map<String,String> activeMenus = new HashMap<String,String>();
+ activeMenus.put("profile", "profile");
+ activeMenus.put("user", "create-user");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
+
+ Menu currentMenu = (Menu)menus.get("profile");
+ model.addAttribute("currentMenu",currentMenu);
+ model.addAttribute("activeMenus",activeMenus);
+ //
+
+ }
+
+ //password reset functionality --- Sajid Shajahan
+ @RequestMapping(value="/admin/users/resetPassword.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String resetPassword(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+ AjaxResponse resp = new AjaxResponse();
+ String userName = request.getParameter("username");
+
+
+
+ /**
+ * Get User with userService.getByUserName
+ * Get 3 security questions from User.getQuestion1, user.getQuestion2, user.getQuestion3
+ */
+
+ HttpSession session = request.getSession();
+ session.setAttribute("username_reset", userName);
+
+ try {
+ if(!StringUtils.isBlank(userName)){
+
+ User dbUser = userService.getByUserName(userName);
+
+ if(dbUser==null) {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("message.username.notfound", locale));
+ return resp.toJSONString();
+ }
+
+ Map<String,String> entry = new HashMap<String,String>();
+ entry.put(QUESTION_1, dbUser.getQuestion1());
+ entry.put(QUESTION_2, dbUser.getQuestion2());
+ entry.put(QUESTION_3, dbUser.getQuestion3());
+ resp.addDataEntry(entry);
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ }else
+ {
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("User.resetPassword.Error", locale));
+
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("User.resetPassword.Error", locale));
+ return resp.toJSONString();
+ }
+
+
+
+
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+ //password reset functionality --- Sajid Shajahan
+ @RequestMapping(value="/admin/users/resetPasswordSecurityQtn.html", method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String resetPasswordSecurityQtn(@ModelAttribute(value="userReset") UserReset userReset,HttpServletRequest request, HttpServletResponse response, Locale locale) {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+ Language userLanguage = null;
+ Locale userLocale = null;
+ AjaxResponse resp = new AjaxResponse();
+
+ //String question1 = request.getParameter("question1");
+ //String question2 = request.getParameter("question2");
+ //String question3 = request.getParameter("question3");
+
+ String answer1 = request.getParameter("answer1");
+ String answer2 = request.getParameter("answer2");
+ String answer3 = request.getParameter("answer3");
+
+ try {
+
+ HttpSession session = request.getSession();
+ User dbUser = userService.getByUserName((String) session.getAttribute("username_reset"));
+
+ if(dbUser!= null){
+
+ if(dbUser.getAnswer1().equals(answer1.trim()) && dbUser.getAnswer2().equals(answer2.trim()) && dbUser.getAnswer3().equals(answer3.trim())){
+ userLanguage = dbUser.getDefaultLanguage();
+ userLocale = LocaleUtils.getLocale(userLanguage);
+
+ String tempPass = userReset.generateRandomString();
+ String pass = passwordEncoder.encodePassword(tempPass, null);
+
+ dbUser.setAdminPassword(pass);
+ userService.update(dbUser);
+
+ //send email
+
+ try {
+ String[] storeEmail = {store.getStoreEmailAddress()};
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(request.getContextPath(), store, messages, userLocale);
+ templateTokens.put(EmailConstants.EMAIL_RESET_PASSWORD_TXT, messages.getMessage("email.user.resetpassword.text", userLocale));
+ templateTokens.put(EmailConstants.EMAIL_CONTACT_OWNER, messages.getMessage("email.contactowner", storeEmail, userLocale));
+ templateTokens.put(EmailConstants.EMAIL_PASSWORD_LABEL, messages.getMessage("label.generic.password",userLocale));
+ templateTokens.put(EmailConstants.EMAIL_USER_PASSWORD, tempPass);
+
+ Email email = new Email();
+ email.setFrom(store.getStorename());
+ email.setFromEmail(store.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("label.generic.changepassword",userLocale));
+ email.setTo(dbUser.getAdminEmail() );
+ email.setTemplateName(RESET_PASSWORD_TPL);
+ email.setTemplateTokens(templateTokens);
+
+ emailService.sendHtmlEmail(store, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot send email to user",e);
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+ resp.setStatusMessage(messages.getMessage("User.resetPassword.resetSuccess", locale));
+ }
+ else{
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("User.resetPassword.wrongSecurityQtn", locale));
+
+ }
+ }else{
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("User.resetPassword.userNotFound", locale));
+
+ }
+
+ } catch (ServiceException e) {
+ e.printStackTrace();
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ resp.setStatusMessage(messages.getMessage("User.resetPassword.Error", locale));
+ }
+
+ String returnString = resp.toJSONString();
+ return returnString;
+ }
+
+ }
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/Keyword.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/Keyword.java
new file mode 100644
index 0000000..1182e6a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/Keyword.java
@@ -0,0 +1,42 @@
+package com.salesmanager.web.admin.entity.catalog;
+
+import java.io.Serializable;
+
+
+import org.hibernate.validator.constraints.NotEmpty;
+
+/**
+ * Post keyword from the admin
+ * @author Carl Samson
+ *
+ */
+public class Keyword implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private long productId;
+ private String languageCode;
+ @NotEmpty
+ private String keyword;
+ public void setProductId(long productId) {
+ this.productId = productId;
+ }
+ public long getProductId() {
+ return productId;
+ }
+ public void setLanguageCode(String languageCode) {
+ this.languageCode = languageCode;
+ }
+ public String getLanguageCode() {
+ return languageCode;
+ }
+ public void setKeyword(String keyword) {
+ this.keyword = keyword;
+ }
+ public String getKeyword() {
+ return keyword;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/Manufacturer.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/Manufacturer.java
new file mode 100644
index 0000000..44426a7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/Manufacturer.java
@@ -0,0 +1,83 @@
+package com.salesmanager.web.admin.entity.catalog;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.validation.Valid;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import com.salesmanager.core.business.catalog.product.model.image.ProductImage;
+import com.salesmanager.core.business.catalog.product.model.manufacturer.ManufacturerDescription;
+
+
+public class Manufacturer implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -4531526676134574984L;
+
+ /**
+ *
+ */
+
+ //provides wrapping to the main Manufacturer entity
+ @Valid
+ private com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer manufacturer;
+
+ @Valid
+ private List<ManufacturerDescription> descriptions = new ArrayList<ManufacturerDescription>();
+
+ private Integer order = new Integer(0);
+ private MultipartFile image = null;
+ private ProductImage productImage = null;
+
+
+
+ public MultipartFile getImage() {
+ return image;
+ }
+
+ public void setImage(MultipartFile image) {
+ this.image = image;
+ }
+
+ public ProductImage getProductImage() {
+ return productImage;
+ }
+
+ public void setProductImage(ProductImage productImage) {
+ this.productImage = productImage;
+ }
+
+ public com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer getManufacturer() {
+ return manufacturer;
+ }
+
+ public void setManufacturer(
+ com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer manufacturer) {
+ this.manufacturer = manufacturer;
+ }
+
+ public List<ManufacturerDescription> getDescriptions() {
+ return descriptions;
+ }
+
+ public void setDescriptions(List<ManufacturerDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+
+ public Integer getOrder() {
+ return order;
+ }
+
+ public void setOrder(Integer order) {
+ this.order = order;
+ }
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/Product.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/Product.java
new file mode 100644
index 0000000..93cd0a9
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/Product.java
@@ -0,0 +1,115 @@
+package com.salesmanager.web.admin.entity.catalog;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.validation.Valid;
+
+import org.hibernate.validator.constraints.NotEmpty;
+import org.springframework.web.multipart.MultipartFile;
+
+
+import com.salesmanager.core.business.catalog.product.model.availability.ProductAvailability;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.model.image.ProductImage;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPrice;
+
+public class Product implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -4531526676134574984L;
+
+ /**
+ *
+ */
+
+ //provides wrapping to the main product entity
+ @Valid
+ private com.salesmanager.core.business.catalog.product.model.Product product;
+
+ @Valid
+ private List<ProductDescription> descriptions = new ArrayList<ProductDescription>();
+
+ @Valid
+ private ProductAvailability availability = null;
+
+ @Valid
+ private ProductPrice price = null;
+
+ private MultipartFile image = null;
+
+ private ProductImage productImage = null;
+
+ @NotEmpty
+ private String productPrice = "0";
+
+ private String dateAvailable;
+
+ private ProductDescription description = null;
+
+ public String getDateAvailable() {
+ return dateAvailable;
+ }
+ public void setDateAvailable(String dateAvailable) {
+ this.dateAvailable = dateAvailable;
+ }
+ public com.salesmanager.core.business.catalog.product.model.Product getProduct() {
+ return product;
+ }
+ public void setProduct(com.salesmanager.core.business.catalog.product.model.Product product) {
+ this.product = product;
+ }
+
+ public List<ProductDescription> getDescriptions() {
+ return descriptions;
+ }
+ public void setDescriptions(List<ProductDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+ public void setAvailability(ProductAvailability availability) {
+ this.availability = availability;
+ }
+ public ProductAvailability getAvailability() {
+ return availability;
+ }
+ public void setPrice(ProductPrice price) {
+ this.price = price;
+ }
+ public ProductPrice getPrice() {
+ return price;
+ }
+ public MultipartFile getImage() {
+ return image;
+ }
+ public void setImage(MultipartFile image) {
+ this.image = image;
+ }
+
+ public void setProductPrice(String productPrice) {
+ this.productPrice = productPrice;
+ }
+ public String getProductPrice() {
+ return productPrice;
+ }
+ public void setProductImage(ProductImage productImage) {
+ this.productImage = productImage;
+ }
+ public ProductImage getProductImage() {
+ return productImage;
+ }
+ public void setDescription(ProductDescription description) {
+ this.description = description;
+ }
+ public ProductDescription getDescription() {
+ return description;
+ }
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/ProductPrice.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/ProductPrice.java
new file mode 100644
index 0000000..fc828bb
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/catalog/ProductPrice.java
@@ -0,0 +1,83 @@
+package com.salesmanager.web.admin.entity.catalog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.validation.Valid;
+
+import com.salesmanager.core.business.catalog.product.model.availability.ProductAvailability;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPriceDescription;
+
+public class ProductPrice {
+
+ @Valid
+ private com.salesmanager.core.business.catalog.product.model.price.ProductPrice price = null;
+ @Valid
+ private List <ProductPriceDescription> descriptions = new ArrayList<ProductPriceDescription>();
+ private String priceText;
+ private String specialPriceText;
+ private ProductAvailability productAvailability;
+
+
+ //cannot convert in this object to date ??? needs to use a string, parse, bla bla
+ private String productPriceSpecialStartDate;
+ private String productPriceSpecialEndDate;
+
+ private com.salesmanager.core.business.catalog.product.model.Product product;
+
+
+
+
+
+ public List <ProductPriceDescription> getDescriptions() {
+ return descriptions;
+ }
+ public void setDescriptions(List <ProductPriceDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+ public ProductAvailability getProductAvailability() {
+ return productAvailability;
+ }
+ public void setProductAvailability(ProductAvailability productAvailability) {
+ this.productAvailability = productAvailability;
+ }
+ public String getPriceText() {
+ return priceText;
+ }
+ public void setPriceText(String priceText) {
+ this.priceText = priceText;
+ }
+ public com.salesmanager.core.business.catalog.product.model.price.ProductPrice getPrice() {
+ return price;
+ }
+ public void setPrice(com.salesmanager.core.business.catalog.product.model.price.ProductPrice price) {
+ this.price = price;
+ }
+ public String getSpecialPriceText() {
+ return specialPriceText;
+ }
+ public void setSpecialPriceText(String specialPriceText) {
+ this.specialPriceText = specialPriceText;
+ }
+
+ public com.salesmanager.core.business.catalog.product.model.Product getProduct() {
+ return product;
+ }
+ public void setProduct(com.salesmanager.core.business.catalog.product.model.Product product) {
+ this.product = product;
+ }
+ public String getProductPriceSpecialStartDate() {
+ return productPriceSpecialStartDate;
+ }
+ public void setProductPriceSpecialStartDate(
+ String productPriceSpecialStartDate) {
+ this.productPriceSpecialStartDate = productPriceSpecialStartDate;
+ }
+ public String getProductPriceSpecialEndDate() {
+ return productPriceSpecialEndDate;
+ }
+ public void setProductPriceSpecialEndDate(String productPriceSpecialEndDate) {
+ this.productPriceSpecialEndDate = productPriceSpecialEndDate;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/content/ContentFiles.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/content/ContentFiles.java
new file mode 100644
index 0000000..240f2aa
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/content/ContentFiles.java
@@ -0,0 +1,57 @@
+/**
+ *
+ */
+package com.salesmanager.web.admin.entity.content;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.validation.Valid;
+
+import org.hibernate.validator.constraints.NotEmpty;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * A bean class responsible for getting form data from shop Admin for uploading
+ * content files for a given merchant and validating the provided data.
+ *
+ * This will work as a wrapper for underlying cache where these content images will be stored
+ * and retrieved in future.
+ *
+ * @author Umesh Awasthi
+ * @since 1.2
+ *
+ */
+public class ContentFiles implements Serializable
+{
+
+ private static final long serialVersionUID = 1L;
+
+
+ private List<MultipartFile> file;
+ public void setFile(List<MultipartFile> file) {
+ this.file = file;
+ }
+
+ private String fileName;
+
+ @NotEmpty(message="{merchant.files.invalid}")
+ @Valid
+ public List<MultipartFile> getFile()
+ {
+ return file;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/content/ProductImages.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/content/ProductImages.java
new file mode 100644
index 0000000..c6393f1
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/content/ProductImages.java
@@ -0,0 +1,19 @@
+package com.salesmanager.web.admin.entity.content;
+
+public class ProductImages extends ContentFiles {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 7732719188032287938L;
+ private long productId;
+
+ public long getProductId() {
+ return productId;
+ }
+
+ public void setProductId(long productId) {
+ this.productId = productId;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerAttributes.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerAttributes.java
new file mode 100644
index 0000000..fc8b481
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerAttributes.java
@@ -0,0 +1,18 @@
+package com.salesmanager.web.admin.entity.customer.attribute;
+
+import java.util.List;
+
+
+public class CustomerAttributes {
+
+ private List<CustomerOption> customerOptions;
+
+ public List<CustomerOption> getCustomerOptions() {
+ return customerOptions;
+ }
+
+ public void setCustomerOptions(List<CustomerOption> customerOptions) {
+ this.customerOptions = customerOptions;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerOption.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerOption.java
new file mode 100644
index 0000000..ebf45ae
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerOption.java
@@ -0,0 +1,70 @@
+package com.salesmanager.web.admin.entity.customer.attribute;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.salesmanager.web.entity.ShopEntity;
+
+public class CustomerOption extends ShopEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String type;
+ private String name;
+
+ //private List<long> values;
+ //private String value;
+ //private long idValue;
+
+
+
+ private CustomerOptionValue defaultValue;
+
+
+ private List<CustomerOptionValue> availableValues;
+
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public CustomerOptionValue getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(CustomerOptionValue defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public List<CustomerOptionValue> getAvailableValues() {
+ return availableValues;
+ }
+
+ public void setAvailableValues(List<CustomerOptionValue> availableValues) {
+ this.availableValues = availableValues;
+ }
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerOptionValue.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerOptionValue.java
new file mode 100644
index 0000000..c682f4e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/customer/attribute/CustomerOptionValue.java
@@ -0,0 +1,22 @@
+package com.salesmanager.web.admin.entity.customer.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.ShopEntity;
+
+public class CustomerOptionValue extends ShopEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/digital/ProductFiles.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/digital/ProductFiles.java
new file mode 100644
index 0000000..b813be0
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/digital/ProductFiles.java
@@ -0,0 +1,71 @@
+/**
+ *
+ */
+package com.salesmanager.web.admin.entity.digital;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.validation.Valid;
+
+import org.hibernate.validator.constraints.NotEmpty;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.file.DigitalProduct;
+
+/**
+ * A bean class responsible for getting form data from shop Admin for uploading
+ * product files for a given product and validating the provided data.
+ *
+ * This will work as a wrapper for underlying cache where these content images will be stored
+ * and retrieved in future.
+ *
+ * @author Carl Samson
+ * @since 1.2
+ *
+ */
+public class ProductFiles implements Serializable
+{
+
+ private static final long serialVersionUID = 1L;
+
+
+ private List<MultipartFile> file;
+ private DigitalProduct digitalProduct;
+ private Product product;
+
+ @NotEmpty(message="{product.files.invalid}")
+ @Valid
+ public List<MultipartFile> getFile()
+ {
+ return file;
+ }
+
+ public void setFile( final List<MultipartFile> file )
+ {
+ this.file = file;
+ }
+
+
+
+ public Product getProduct() {
+ return product;
+ }
+
+ public void setProduct(Product product) {
+ this.product = product;
+ }
+
+ public void setDigitalProduct(DigitalProduct digitalProduct) {
+ this.digitalProduct = digitalProduct;
+ }
+
+ public DigitalProduct getDigitalProduct() {
+ return digitalProduct;
+ }
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/merchant/StoreLanding.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/merchant/StoreLanding.java
new file mode 100755
index 0000000..803fed1
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/merchant/StoreLanding.java
@@ -0,0 +1,21 @@
+package com.salesmanager.web.admin.entity.merchant;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.validation.Valid;
+
+public class StoreLanding {
+
+ @Valid
+ private List<StoreLandingDescription> descriptions = new ArrayList<StoreLandingDescription>();
+
+ public void setDescriptions(List<StoreLandingDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+
+ public List<StoreLandingDescription> getDescriptions() {
+ return descriptions;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/merchant/StoreLandingDescription.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/merchant/StoreLandingDescription.java
new file mode 100755
index 0000000..f738285
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/merchant/StoreLandingDescription.java
@@ -0,0 +1,65 @@
+package com.salesmanager.web.admin.entity.merchant;
+
+import java.io.Serializable;
+
+import com.salesmanager.core.business.reference.language.model.Language;
+
+public class StoreLandingDescription implements Serializable {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String title;
+ private String description;
+ private String keywords;
+ private String homePageContent;
+
+
+ private Language language;
+
+
+
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setHomePageContent(String homePageContent) {
+ this.homePageContent = homePageContent;
+ }
+
+ public String getHomePageContent() {
+ return homePageContent;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setLanguage(Language language) {
+ this.language = language;
+ }
+
+ public Language getLanguage() {
+ return language;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/orders/Order.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/orders/Order.java
new file mode 100644
index 0000000..ee2f596
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/orders/Order.java
@@ -0,0 +1,98 @@
+package com.salesmanager.web.admin.entity.orders;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.persistence.Embedded;
+
+import com.salesmanager.core.business.common.model.Billing;
+import com.salesmanager.core.business.common.model.Delivery;
+
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatus;
+
+
+public class Order implements Serializable {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private Long Id;
+ private String orderHistoryComment = "";
+
+ List<OrderStatus> orderStatusList = Arrays.asList(OrderStatus.values());
+ private String datePurchased = "";
+ private com.salesmanager.core.business.order.model.Order order;
+
+ @Embedded
+ private com.salesmanager.core.business.common.model.Delivery delivery = null;
+
+ @Embedded
+ private com.salesmanager.core.business.common.model.Billing billing = null;
+
+
+
+
+ public String getDatePurchased() {
+ return datePurchased;
+ }
+
+ public void setDatePurchased(String datePurchased) {
+ this.datePurchased = datePurchased;
+ }
+
+ public Long getId() {
+ return Id;
+ }
+
+ public void setId(Long id) {
+ Id = id;
+ }
+
+ public String getOrderHistoryComment() {
+ return orderHistoryComment;
+ }
+
+ public void setOrderHistoryComment(String orderHistoryComment) {
+ this.orderHistoryComment = orderHistoryComment;
+ }
+
+ public List<OrderStatus> getOrderStatusList() {
+ return orderStatusList;
+ }
+
+ public void setOrderStatusList(List<OrderStatus> orderStatusList) {
+ this.orderStatusList = orderStatusList;
+ }
+
+ public com.salesmanager.core.business.order.model.Order getOrder() {
+ return order;
+ }
+
+ public void setOrder(com.salesmanager.core.business.order.model.Order order) {
+ this.order = order;
+ }
+
+ public Delivery getDelivery() {
+ return delivery;
+ }
+
+ public void setDelivery(Delivery delivery) {
+ this.delivery = delivery;
+ }
+
+ public Billing getBilling() {
+ return billing;
+ }
+
+ public void setBilling(Billing billing) {
+ this.billing = billing;
+ }
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/orders/Refund.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/orders/Refund.java
new file mode 100644
index 0000000..b0e2d0e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/orders/Refund.java
@@ -0,0 +1,26 @@
+package com.salesmanager.web.admin.entity.orders;
+
+import java.io.Serializable;
+
+public class Refund implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2392736671094915447L;
+ private Long orderId;
+ private String amount;
+ public Long getOrderId() {
+ return orderId;
+ }
+ public void setOrderId(Long orderId) {
+ this.orderId = orderId;
+ }
+ public String getAmount() {
+ return amount;
+ }
+ public void setAmount(String amount) {
+ this.amount = amount;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/reference/Size.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/reference/Size.java
new file mode 100644
index 0000000..c9628d6
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/reference/Size.java
@@ -0,0 +1,32 @@
+package com.salesmanager.web.admin.entity.reference;
+
+import java.io.Serializable;
+
+public class Size implements Serializable {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -4737272153685816396L;
+ private String code;
+ private String name;
+ public String getCode() {
+ return code;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Size(String code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/reference/Weight.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/reference/Weight.java
new file mode 100644
index 0000000..495f642
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/reference/Weight.java
@@ -0,0 +1,31 @@
+package com.salesmanager.web.admin.entity.reference;
+
+import java.io.Serializable;
+
+public class Weight implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1006772612089740285L;
+ private String code;
+ private String name;
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getCode() {
+ return code;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public Weight(String code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/secutity/Password.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/secutity/Password.java
new file mode 100644
index 0000000..4947df3
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/secutity/Password.java
@@ -0,0 +1,59 @@
+package com.salesmanager.web.admin.entity.secutity;
+
+import java.io.Serializable;
+
+import com.salesmanager.core.business.user.model.User;
+
+/**
+ * Entity used in the cahange passord page
+ * @author csamson777
+ *
+ */
+public class Password implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String password;
+ private String newPassword;
+ private String repeatPassword;
+
+ private User user;
+
+
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getNewPassword() {
+ return newPassword;
+ }
+
+ public void setNewPassword(String newPassword) {
+ this.newPassword = newPassword;
+ }
+
+ public String getRepeatPassword() {
+ return repeatPassword;
+ }
+
+ public void setRepeatPassword(String repeatPassword) {
+ this.repeatPassword = repeatPassword;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public void setUser(User user) {
+ this.user = user;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/userpassword/UserReset.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/userpassword/UserReset.java
new file mode 100644
index 0000000..2cef668
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/userpassword/UserReset.java
@@ -0,0 +1,47 @@
+package com.salesmanager.web.admin.entity.userpassword;
+
+import java.util.Random;
+
+
+public class UserReset
+{
+ final static String CHAR_LIST_WITHNUM = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
+ final static String CHAR_LIST = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";
+
+ final static int RANDOM_STRING_LENGTH = 10;
+
+ public static String generateRandomString()
+ {
+ StringBuilder randStr = new StringBuilder();
+ for (int i = 0; i < RANDOM_STRING_LENGTH; i++) {
+ int number = getRandomNumber();
+ char ch = CHAR_LIST_WITHNUM.charAt(number);
+ randStr.append(ch);
+ }
+ return randStr.toString();
+ }
+
+ public static String generateRandomString(int length)
+ {
+ StringBuilder randStr = new StringBuilder();
+ for (int i = 0; i < length; i++) {
+ int number = getRandomNumber();
+ char ch = CHAR_LIST.charAt(number);
+ randStr.append(ch);
+ }
+ return randStr.toString();
+ }
+
+ private static int getRandomNumber()
+ {
+ int randomInt = 0;
+ Random randomGenerator = new Random();
+ randomInt = randomGenerator.nextInt(CHAR_LIST.length());
+ if (randomInt - 1 == -1) {
+ return randomInt;
+ }
+ return randomInt - 1;
+ }
+
+
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/web/ConfigListWrapper.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/web/ConfigListWrapper.java
new file mode 100644
index 0000000..3c2888e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/web/ConfigListWrapper.java
@@ -0,0 +1,21 @@
+package com.salesmanager.web.admin.entity.web;
+
+import java.util.List;
+
+import com.salesmanager.core.business.system.model.MerchantConfiguration;
+
+public class ConfigListWrapper
+{
+ private List<MerchantConfiguration> merchantConfigs;
+
+ public List<MerchantConfiguration> getMerchantConfigs()
+ {
+ return merchantConfigs;
+ }
+
+ public void setMerchantConfigs(List<MerchantConfiguration> merchantConfigs)
+ {
+ this.merchantConfigs = merchantConfigs;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/entity/web/Menu.java b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/web/Menu.java
new file mode 100644
index 0000000..fe3f863
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/entity/web/Menu.java
@@ -0,0 +1,66 @@
+package com.salesmanager.web.admin.entity.web;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+public class Menu implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String code;
+ private String url;
+ private String icon;
+ private String role;
+ private int order;
+ private List<Menu> menus = new ArrayList<Menu>();
+ public String getCode() {
+ return code;
+ }
+ @JsonProperty("code")
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public String getUrl() {
+ return url;
+ }
+ @JsonProperty("url")
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+
+
+ public int getOrder() {
+ return order;
+ }
+ @JsonProperty("order")
+ public void setOrder(int order) {
+ this.order = order;
+ }
+ public List<Menu> getMenus() {
+ return menus;
+ }
+ @JsonProperty("menus")
+ public void setMenus(List<Menu> menus) {
+ this.menus = menus;
+ }
+ public void setIcon(String icon) {
+ this.icon = icon;
+ }
+ public String getIcon() {
+ return icon;
+ }
+ public String getRole() {
+ return role;
+ }
+ @JsonProperty("role")
+ public void setRole(String role) {
+ this.role = role;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/security/SecurityDataAccessException.java b/sm-shop/src/main/java/com/salesmanager/web/admin/security/SecurityDataAccessException.java
new file mode 100644
index 0000000..df64b57
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/security/SecurityDataAccessException.java
@@ -0,0 +1,20 @@
+package com.salesmanager.web.admin.security;
+
+import org.springframework.dao.DataAccessException;
+
+public class SecurityDataAccessException extends DataAccessException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public SecurityDataAccessException(String msg) {
+ super(msg);
+ }
+
+ public SecurityDataAccessException(String msg, Exception e) {
+ super(msg,e);
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/security/SecurityQuestion.java b/sm-shop/src/main/java/com/salesmanager/web/admin/security/SecurityQuestion.java
new file mode 100644
index 0000000..7968c35
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/security/SecurityQuestion.java
@@ -0,0 +1,26 @@
+package com.salesmanager.web.admin.security;
+
+import java.io.Serializable;
+
+public class SecurityQuestion implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String id;
+ private String label;
+ public void setLabel(String label) {
+ this.label = label;
+ }
+ public String getLabel() {
+ return label;
+ }
+ public void setId(String id) {
+ this.id = id;
+ }
+ public String getId() {
+ return id;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/security/UserAuthenticationSuccessHandler.java b/sm-shop/src/main/java/com/salesmanager/web/admin/security/UserAuthenticationSuccessHandler.java
new file mode 100644
index 0000000..587737f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/security/UserAuthenticationSuccessHandler.java
@@ -0,0 +1,48 @@
+package com.salesmanager.web.admin.security;
+
+import java.util.Date;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
+
+import com.salesmanager.core.business.user.model.User;
+import com.salesmanager.core.business.user.service.UserService;
+
+public class UserAuthenticationSuccessHandler extends
+ SavedRequestAwareAuthenticationSuccessHandler {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(UserAuthenticationSuccessHandler.class);
+
+ @Autowired
+ private UserService userService;
+
+ @Override
+ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
+ // last access timestamp
+ String userName = authentication.getName();
+
+ try {
+ User user = userService.getByUserName(userName);
+
+ Date lastAccess = user.getLoginTime();
+ if(lastAccess==null) {
+ lastAccess = new Date();
+ }
+ user.setLastAccess(lastAccess);
+ user.setLoginTime(new Date());
+
+ userService.saveOrUpdate(user);
+
+ response.sendRedirect(request.getContextPath() + "/admin/home.html");
+ } catch (Exception e) {
+ LOGGER.error("User authenticationSuccess",e);
+ }
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/security/UserServicesImpl.java b/sm-shop/src/main/java/com/salesmanager/web/admin/security/UserServicesImpl.java
new file mode 100644
index 0000000..84ef591
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/security/UserServicesImpl.java
@@ -0,0 +1,140 @@
+package com.salesmanager.web.admin.security;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.GrantedAuthorityImpl;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.GroupType;
+import com.salesmanager.core.business.user.model.Permission;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.core.business.user.service.PermissionService;
+import com.salesmanager.core.business.user.service.UserService;
+import com.salesmanager.web.constants.Constants;
+
+
+/**
+ *
+ * @author casams1
+ * http://stackoverflow.com/questions/5105776/spring-security-with
+ * -custom-user-details
+ */
+@Service("userDetailsService")
+public class UserServicesImpl implements WebUserServices{
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(UserServicesImpl.class);
+
+ @Autowired
+ private UserService userService;
+
+
+ @Autowired
+ private MerchantStoreService merchantStoreService;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+
+
+ @Autowired
+ protected PermissionService permissionService;
+
+ @Autowired
+ protected GroupService groupService;
+
+
+
+ @SuppressWarnings("deprecation")
+ public UserDetails loadUserByUsername(String userName)
+ throws UsernameNotFoundException, DataAccessException {
+
+ com.salesmanager.core.business.user.model.User user = null;
+ Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
+
+ try {
+
+ user = userService.getByUserName(userName);
+
+ if(user==null) {
+ return null;
+ }
+
+ GrantedAuthority role = new GrantedAuthorityImpl(Constants.PERMISSION_AUTHENTICATED);//required to login
+ authorities.add(role);
+
+ List<Integer> groupsId = new ArrayList<Integer>();
+ List<Group> groups = user.getGroups();
+ for(Group group : groups) {
+
+
+ groupsId.add(group.getId());
+
+ }
+
+
+
+ List<Permission> permissions = permissionService.getPermissions(groupsId);
+ for(Permission permission : permissions) {
+ GrantedAuthority auth = new GrantedAuthorityImpl(permission.getPermissionName());
+ authorities.add(auth);
+ }
+
+ } catch (Exception e) {
+ LOGGER.error("Exception while querrying user",e);
+ throw new SecurityDataAccessException("Exception while querrying user",e);
+ }
+
+
+
+
+
+ User secUser = new User(userName, user.getAdminPassword(), user.isActive(), true,
+ true, true, authorities);
+ return secUser;
+ }
+
+
+ public void createDefaultAdmin() throws Exception {
+
+ //TODO create all groups and permissions
+
+ MerchantStore store = merchantStoreService.getMerchantStore(MerchantStore.DEFAULT_STORE);
+
+ String password = passwordEncoder.encodePassword("password", null);
+
+ List<Group> groups = groupService.listGroup(GroupType.ADMIN);
+
+ //creation of the super admin admin:password)
+ com.salesmanager.core.business.user.model.User user = new com.salesmanager.core.business.user.model.User("admin",password,"admin@shopizer.com");
+ user.setFirstName("Administrator");
+ user.setLastName("User");
+
+ for(Group group : groups) {
+ if(group.getGroupName().equals(Constants.GROUP_SUPERADMIN) || group.getGroupName().equals(Constants.GROUP_ADMIN)) {
+ user.getGroups().add(group);
+ }
+ }
+
+ user.setMerchantStore(store);
+ userService.create(user);
+
+
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/admin/security/WebUserServices.java b/sm-shop/src/main/java/com/salesmanager/web/admin/security/WebUserServices.java
new file mode 100644
index 0000000..81f738f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/admin/security/WebUserServices.java
@@ -0,0 +1,9 @@
+package com.salesmanager.web.admin.security;
+
+import org.springframework.security.core.userdetails.UserDetailsService;
+
+public interface WebUserServices extends UserDetailsService{
+
+ void createDefaultAdmin() throws Exception;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/constants/ApplicationConstants.java b/sm-shop/src/main/java/com/salesmanager/web/constants/ApplicationConstants.java
new file mode 100644
index 0000000..90bfacc
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/constants/ApplicationConstants.java
@@ -0,0 +1,9 @@
+package com.salesmanager.web.constants;
+
+public class ApplicationConstants {
+
+ public final static String POPULATE_TEST_DATA = "POPULATE_TEST_DATA";
+ public final static String TEST_DATA_LOADED = "TEST_DATA_LOADED";
+ public final static int MAX_DOWNLOAD_DAYS = 30;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/constants/Constants.java b/sm-shop/src/main/java/com/salesmanager/web/constants/Constants.java
new file mode 100644
index 0000000..af844ae
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/constants/Constants.java
@@ -0,0 +1,111 @@
+package com.salesmanager.web.constants;
+
+public class Constants {
+
+ public final static String SLASH = "/";
+ public final static String EQUALS = "=";
+
+ public final static String RESPONSE_STATUS = "STATUS";
+ public final static String RESPONSE_SUCCESS = "SUCCESS";
+ public final static String DEFAULT_LANGUAGE = "en";
+ public final static String LANGUAGE = "LANGUAGE";
+ public final static String LANG = "lang";
+ public final static String BREADCRUMB = "BREADCRUMB";
+
+ public final static String HOME_MENU_KEY = "menu.home";
+ public final static String HOME_URL = "/shop";
+ public final static String ADMIN_URI = "/admin";
+ public final static String SHOP_URI = "/shop";
+ public final static String SHOP = "shop";
+ public final static String REF = "ref";
+ public final static String REF_C = "c:";
+
+ public final static String FILE_NOT_FOUND = "File not found";
+
+
+
+ public final static String DEFAULT_DOMAIN_NAME = "localhost:8080";
+
+ public final static String ADMIN_STORE = "ADMIN_STORE";
+ public final static String ADMIN_USER = "ADMIN_USER";
+ public final static String MERCHANT_STORE = "MERCHANT_STORE";
+ public final static String SHOPPING_CART = "SHOPPING_CART";
+ public final static String CUSTOMER = "CUSTOMER";
+ public final static String ORDER = "ORDER";
+ public final static String ORDER_ID = "ORDER_ID";
+ public final static String ORDER_ID_TOKEN = "ORDER_ID_TOKEN";
+ public final static String SHIPPING_SUMMARY = "SHIPPING_SUMMARY";
+ public final static String SHIPPING_OPTIONS = "SHIPPING_OPTIONS";
+ public final static String ORDER_SUMMARY = "ORDER_SIMMARY";
+
+
+ public final static String GROUP_ADMIN = "ADMIN";
+ public final static String PERMISSION_AUTHENTICATED = "AUTH";
+ public final static String PERMISSION_CUSTOMER_AUTHENTICATED = "AUTH_CUSTOMER";
+ public final static String GROUP_SUPERADMIN = "SUPERADMIN";
+ public final static String GROUP_CUSTOMER = "CUSTOMER";
+ public final static String ANONYMOUS_CUSTOMER = "ANONYMOUS_CUSTOMER";
+
+
+ public final static String CONTENT_IMAGE = "CONTENT";
+ public final static String CONTENT_LANDING_PAGE = "LANDING_PAGE";
+ public final static String CONTENT_CONTACT_US = "contact";
+
+ public final static String STATIC_URI = "/static";
+ public final static String FILES_URI = "/files";
+ public final static String PRODUCT_URI= "/product";
+ public final static String CATEGORY_URI = "/category";
+ public final static String PRODUCT_ID_URI= "/productid";
+ public final static String ORDER_DOWNLOAD_URI= "/order/download";
+
+ public final static String URL_EXTENSION= ".html";
+ public final static String REDIRECT_PREFIX ="redirect:";
+
+
+
+
+ public final static String STORE_CONFIGURATION = "STORECONFIGURATION";
+
+ public final static String HTTP_SCHEME= "http";
+
+ public final static String MISSED_CACHE_KEY = "MISSED";
+ public final static String CONTENT_CACHE_KEY = "CONTENT";
+ public final static String CONTENT_PAGE_CACHE_KEY = "CONTENT_PAGE";
+ public final static String CATEGORIES_CACHE_KEY = "CATALOG_CATEGORIES";
+ public final static String PRODUCTS_GROUP_CACHE_KEY = "CATALOG_GROUP";
+ public final static String SUBCATEGORIES_CACHE_KEY = "CATALOG_SUBCATEGORIES";
+ public final static String RELATEDITEMS_CACHE_KEY = "CATALOG_RELATEDITEMS";
+ public final static String MANUFACTURERS_BY_PRODUCTS_CACHE_KEY = "CATALOG_BRANDS_BY_PRODUCTS";
+ public final static String CONFIG_CACHE_KEY = "CONFIG";
+
+ public final static String REQUEST_CONTENT_OBJECTS = "CONTENT";
+ public final static String REQUEST_CONTENT_PAGE_OBJECTS = "CONTENT_PAGE";
+ public final static String REQUEST_TOP_CATEGORIES = "TOP_CATEGORIES";
+ public final static String REQUEST_PAGE_INFORMATION = "PAGE_INFORMATION";
+ public final static String REQUEST_SHOPPING_CART = "SHOPPING_CART";
+ public final static String REQUEST_CONFIGS = "CONFIGS";
+
+ public final static String KEY_FACEBOOK_PAGE_URL = "facebook_page_url";
+ public final static String KEY_GOOGLE_ANALYTICS_URL = "google_analytics_url";
+ public final static String KEY_GOOGLE_API_KEY = "google_api_key";
+ public final static String KEY_TWITTER_HANDLE = "twitter_handle";
+
+
+ public final static String CATEGORY_LINEAGE_DELIMITER = "/";
+ public final static int MAX_REVIEW_RATING_SCORE = 5;
+ public final static int MAX_ORDERS_PAGE = 5;
+ public final static String SUCCESS = "success";
+ public final static String CANCEL = "cancel";
+
+ public final static String START = "start";
+ public final static String MAX = "max";
+
+ public final static String CREDIT_CARD_YEARS_CACHE_KEY = "CREDIT_CARD_YEARS_CACHE_KEY";
+ public final static String MONTHS_OF_YEAR_CACHE_KEY = "MONTHS_OF_YEAR_CACHE_KEY";
+
+ public final static String INIT_TRANSACTION_KEY = "init_transaction";
+
+ public static final String RECAPATCHA_PUBLIC_KEY="shopizer.recapatcha_public_key";
+ public static final String RECAPATCHA_PRIVATE_KEY="shopizer.recapatcha_private_key";
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/constants/EmailConstants.java b/sm-shop/src/main/java/com/salesmanager/web/constants/EmailConstants.java
new file mode 100644
index 0000000..fa60f3b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/constants/EmailConstants.java
@@ -0,0 +1,88 @@
+package com.salesmanager.web.constants;
+
+public class EmailConstants {
+
+ public static final String EMAIL_NEW_USER_TEXT = "EMAIL_NEW_USER_TEXT";
+ public static final String EMAIL_USER_FIRSTNAME = "EMAIL_USER_FIRSTNAME";
+ public static final String EMAIL_USER_LASTNAME = "EMAIL_USER_LASTNAME";
+ public static final String EMAIL_ADMIN_USERNAME_LABEL = "EMAIL_ADMIN_USERNAME_LABEL";
+ public static final String EMAIL_ADMIN_NAME = "EMAIL_ADMIN_NAME";
+ public static final String EMAIL_TEXT_NEW_USER_CREATED = "EMAIL_TEXT_NEW_USER_CREATED";
+ public static final String EMAIL_ADMIN_PASSWORD_LABEL = "EMAIL_ADMIN_PASSWORD_LABEL";
+ public static final String EMAIL_ADMIN_PASSWORD = "EMAIL_ADMIN_PASSWORD";
+
+
+ public static final String EMAIL_USERNAME_LABEL = "EMAIL_USERNAME_LABEL";
+ public static final String EMAIL_PASSWORD_LABEL = "EMAIL_PASSWORD_LABEL";
+ public static final String EMAIL_CUSTOMER_PASSWORD = "EMAIL_CUSTOMER_PASSWORD";
+ public static final String EMAIL_CUSTOMER_NAME = "EMAIL_CUSTOMER_NAME";
+ public static final String EMAIL_CUSTOMER_FIRSTNAME = "EMAIL_CUSTOMER_FIRSTNAME";
+ public static final String EMAIL_CUSTOMER_LASTNAME = "EMAIL_CUSTOMER_LASTNAME";
+ public static final String EMAIL_NOTIFICATION_MESSAGE = "EMAIL_NOTIFICATION_MESSAGE";
+ public static final String EMAIL_CUSTOMER_GREETING = "EMAIL_CUSTOMER_GREETING";
+ public static final String EMAIL_RESET_PASSWORD_TXT = "EMAIL_RESET_PASSWORD_TXT";
+ public static final String EMAIL_USER_NAME = "EMAIL_USER_NAME";
+ public static final String EMAIL_USER_PASSWORD = "EMAIL_USER_PASSWORD";
+
+ public static final String EMAIL_TEXT_ORDER_NUMBER = "EMAIL_TEXT_ORDER_NUMBER";
+ public static final String EMAIL_TEXT_DATE_ORDERED = "EMAIL_TEXT_DATE_ORDERED";
+ public static final String EMAIL_TEXT_STATUS_COMMENTS = "EMAIL_TEXT_STATUS_COMMENTS";
+ public static final String EMAIL_TEXT_DATE_UPDATED = "EMAIL_TEXT_DATE_UPDATED";
+ public static final String EMAIL_ORDER_DETAILS_TITLE = "EMAIL_ORDER_DETAILS_TITLE";
+ public static final String ORDER_PRODUCTS_DETAILS = "ORDER_PRODUCTS_DETAILS";
+ public static final String ORDER_TOTALS = "ORDER_TOTALS";
+ public static final String ORDER_STATUS = "ORDER_STATUS";
+ public final static String EMAIL_ORDER_DOWNLOAD = "EMAIL_ORDER_DOWNLOAD";
+
+ public static final String EMAIL_NEW_STORE_TEXT = "EMAIL_NEW_STORE_TEXT";
+ public static final String EMAIL_STORE_NAME = "EMAIL_STORE_NAME";
+ public static final String EMAIL_ADMIN_STORE_INFO_LABEL = "EMAIL_ADMIN_STORE_INFO_LABEL";
+ public static final String EMAIL_ADMIN_USERNAME_TEXT = "EMAIL_ADMIN_USERNAME_TEXT";
+ public static final String EMAIL_ADMIN_PASSWORD_TEXT = "EMAIL_ADMIN_PASSWORD_TEXT";
+
+
+
+ public static final String EMAIL_CONTACT_OWNER = "EMAIL_CONTACT_OWNER";
+ public static final String EMAIL_ADMIN_URL_LABEL = "EMAIL_ADMIN_URL_LABEL";
+ public static final String EMAIL_ADMIN_URL = "EMAIL_ADMIN_URL";
+
+ public static final String EMAIL_ORDER_CONFIRMATION_TITLE ="EMAIL_ORDER_CONFIRMATION_TITLE";
+ public static final String EMAIL_ORDER_NUMBER ="EMAIL_ORDER_NUMBER";
+ public static final String EMAIL_ORDER_DATE ="EMAIL_ORDER_DATE";
+ public static final String EMAIL_ORDER_THANKS ="EMAIL_ORDER_THANKS";
+ public static final String EMAIL_ORDER_STATUS_TEXT ="EMAIL_ORDER_STATUS_TEXT";
+ public static final String EMAIL_ORDER_STATUS ="EMAIL_ORDER_STATUS";
+ public static final String ADDRESS_BILLING_TITLE ="ADDRESS_BILLING_TITLE";
+ public static final String ADDRESS_BILLING ="ADDRESS_BILLING";
+ public static final String ADDRESS_SHIPPING ="ADDRESS_SHIPPING";
+ public static final String ADDRESS_DELIVERY ="ADDRESS_DELIVERY";
+ public static final String ADDRESS_SHIPPING_TITLE ="ADDRESS_SHIPPING_TITLE";
+ public static final String PAYMENT_METHOD_TITLE ="PAYMENT_METHOD_TITLE";
+ public static final String PAYMENT_METHOD_DETAILS ="PAYMENT_METHOD_DETAILS";
+ public static final String SHIPPING_METHOD_DETAILS ="SHIPPING_METHOD_DETAILS";
+ public static final String SHIPPING_METHOD_TITLE ="SHIPPING_METHOD_TITLE";
+ public static final String ADDRESS_DELIVERY_TITLE ="ADDRESS_DELIVERY_TITLE";
+
+ public static final String EMAIL_CUSTOMER_CONTACT ="EMAIL_CUSTOMER_CONTACT";
+ public static final String EMAIL_CONTACT_NAME_LABEL ="EMAIL_CONTACT_NAME_LABEL";
+ public static final String EMAIL_CONTACT_NAME ="EMAIL_CONTACT_NAME";
+ public static final String EMAIL_CONTACT_EMAIL_LABEL ="EMAIL_CONTACT_EMAIL_LABEL";
+ public static final String EMAIL_CONTACT_EMAIL ="EMAIL_CONTACT_EMAIL";
+ public static final String EMAIL_CONTACT_CONTENT ="EMAIL_CONTACT_CONTENT";
+
+
+
+ public final static String LABEL_HI = "LABEL_HI";
+ public final static String CUSTOMER_ACCESS_LABEL = "CUSTOMER_ACCESS_LABEL";
+ public final static String CUSTOMER_ACCESS_URL = "CUSTOMER_ACCESS_URL";
+ public final static String ACCESS_NOW_LABEL = "ACCESS_NOW_LABEL";
+
+ public static final String EMAIL_CUSTOMER_TPL = "email_template_customer.ftl";
+ public static final String EMAIL_ORDER_TPL = "email_template_checkout.ftl";
+ public static final String EMAIL_ORDER_DOWNLOAD_TPL = "email_template_checkout_download.ftl";
+ public static final String ORDER_STATUS_TMPL = "email_template_order_status.ftl";
+ public static final String EMAIL_CONTACT_TMPL = "email_template_contact.ftl";
+ public static final String EMAIL_NOTIFICATION_TMPL = "email_template_notification.ftl";
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/CatalogEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/CatalogEntity.java
new file mode 100644
index 0000000..409cd07
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/CatalogEntity.java
@@ -0,0 +1,63 @@
+package com.salesmanager.web.entity.catalog;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.ShopEntity;
+
+public abstract class CatalogEntity extends ShopEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String name;
+ private String description;
+ private String friendlyUrl;
+ private String keyWords;
+ private String highlights;
+ private String metaDescription;
+ private String title;
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public String getFriendlyUrl() {
+ return friendlyUrl;
+ }
+ public void setFriendlyUrl(String friendlyUrl) {
+ this.friendlyUrl = friendlyUrl;
+ }
+ public String getKeyWords() {
+ return keyWords;
+ }
+ public void setKeyWords(String keyWords) {
+ this.keyWords = keyWords;
+ }
+ public String getHighlights() {
+ return highlights;
+ }
+ public void setHighlights(String highlights) {
+ this.highlights = highlights;
+ }
+ public String getMetaDescription() {
+ return metaDescription;
+ }
+ public void setMetaDescription(String metaDescription) {
+ this.metaDescription = metaDescription;
+ }
+ public String getTitle() {
+ return title;
+ }
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/Category.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/Category.java
new file mode 100644
index 0000000..5b1a201
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/Category.java
@@ -0,0 +1,14 @@
+package com.salesmanager.web.entity.catalog.category;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class Category extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/CategoryDescription.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/CategoryDescription.java
new file mode 100644
index 0000000..c46f546
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/CategoryDescription.java
@@ -0,0 +1,14 @@
+package com.salesmanager.web.entity.catalog.category;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.catalog.CatalogEntity;
+
+public class CategoryDescription extends CatalogEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/CategoryEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/CategoryEntity.java
new file mode 100644
index 0000000..2798a72
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/CategoryEntity.java
@@ -0,0 +1,46 @@
+package com.salesmanager.web.entity.catalog.category;
+
+import java.io.Serializable;
+
+public class CategoryEntity extends Category implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+
+
+
+ private int sortOrder;
+ private boolean visible;
+ private String code;
+ private String lineage;
+
+
+ public int getSortOrder() {
+ return sortOrder;
+ }
+ public void setSortOrder(int sortOrder) {
+ this.sortOrder = sortOrder;
+ }
+ public boolean isVisible() {
+ return visible;
+ }
+ public void setVisible(boolean visible) {
+ this.visible = visible;
+ }
+ public String getCode() {
+ return code;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public String getLineage() {
+ return lineage;
+ }
+ public void setLineage(String lineage) {
+ this.lineage = lineage;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/PersistableCategory.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/PersistableCategory.java
new file mode 100644
index 0000000..71bff4a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/PersistableCategory.java
@@ -0,0 +1,27 @@
+package com.salesmanager.web.entity.catalog.category;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class PersistableCategory extends CategoryEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<CategoryDescription> descriptions;//always persist description
+ private Category parent;//saves a reference
+ public List<CategoryDescription> getDescriptions() {
+ return descriptions;
+ }
+ public void setDescriptions(List<CategoryDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+ public void setParent(Category parent) {
+ this.parent = parent;
+ }
+ public Category getParent() {
+ return parent;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/ReadableCategory.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/ReadableCategory.java
new file mode 100644
index 0000000..888896c
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/category/ReadableCategory.java
@@ -0,0 +1,33 @@
+package com.salesmanager.web.entity.catalog.category;
+
+import java.io.Serializable;
+
+public class ReadableCategory extends CategoryEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private CategoryDescription description;//one category based on language
+ private CategoryEntity parent;
+ private int productCount;
+ public void setDescription(CategoryDescription description) {
+ this.description = description;
+ }
+ public CategoryDescription getDescription() {
+ return description;
+ }
+ public void setParent(CategoryEntity parent) {
+ this.parent = parent;
+ }
+ public CategoryEntity getParent() {
+ return parent;
+ }
+ public int getProductCount() {
+ return productCount;
+ }
+ public void setProductCount(int productCount) {
+ this.productCount = productCount;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/Manufacturer.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/Manufacturer.java
new file mode 100644
index 0000000..d03d80e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/Manufacturer.java
@@ -0,0 +1,14 @@
+package com.salesmanager.web.entity.catalog.manufacturer;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class Manufacturer extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ManufacturerDescription.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ManufacturerDescription.java
new file mode 100644
index 0000000..ae2d664
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ManufacturerDescription.java
@@ -0,0 +1,15 @@
+package com.salesmanager.web.entity.catalog.manufacturer;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.catalog.CatalogEntity;
+
+public class ManufacturerDescription extends CatalogEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ManufacturerEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ManufacturerEntity.java
new file mode 100644
index 0000000..27f2ddc
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ManufacturerEntity.java
@@ -0,0 +1,22 @@
+package com.salesmanager.web.entity.catalog.manufacturer;
+
+import java.io.Serializable;
+
+
+
+public class ManufacturerEntity extends Manufacturer implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int order;
+
+ public void setOrder(int order) {
+ this.order = order;
+ }
+ public int getOrder() {
+ return order;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/PersistableManufacturer.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/PersistableManufacturer.java
new file mode 100644
index 0000000..62648cb
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/PersistableManufacturer.java
@@ -0,0 +1,21 @@
+package com.salesmanager.web.entity.catalog.manufacturer;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class PersistableManufacturer extends ManufacturerEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<ManufacturerDescription> descriptions;
+ public void setDescriptions(List<ManufacturerDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+ public List<ManufacturerDescription> getDescriptions() {
+ return descriptions;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ReadableManufacturer.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ReadableManufacturer.java
new file mode 100644
index 0000000..1269eaf
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/manufacturer/ReadableManufacturer.java
@@ -0,0 +1,20 @@
+package com.salesmanager.web.entity.catalog.manufacturer;
+
+import java.io.Serializable;
+
+public class ReadableManufacturer extends ManufacturerEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private ManufacturerDescription description;
+ public void setDescription(ManufacturerDescription description) {
+ this.description = description;
+ }
+ public ManufacturerDescription getDescription() {
+ return description;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductAttribute.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductAttribute.java
new file mode 100644
index 0000000..bf6d634
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductAttribute.java
@@ -0,0 +1,13 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+
+public class PersistableProductAttribute extends ProductAttributeEntity
+ implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductOption.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductOption.java
new file mode 100644
index 0000000..f67f504
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductOption.java
@@ -0,0 +1,21 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class PersistableProductOption extends ProductOptionEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<ProductOptionDescription> descriptions;
+ public void setDescriptions(List<ProductOptionDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+ public List<ProductOptionDescription> getDescriptions() {
+ return descriptions;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductOptionValue.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductOptionValue.java
new file mode 100644
index 0000000..f7013d8
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/PersistableProductOptionValue.java
@@ -0,0 +1,23 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class PersistableProductOptionValue extends ProductOptionValueEntity
+ implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<ProductOptionValueDescription> descriptions;
+
+ public void setDescriptions(List<ProductOptionValueDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+
+ public List<ProductOptionValueDescription> getDescriptions() {
+ return descriptions;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductAttribute.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductAttribute.java
new file mode 100644
index 0000000..a5eefe5
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductAttribute.java
@@ -0,0 +1,28 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class ProductAttribute extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private ProductOption option;
+ private ProductOptionValue optionValue;
+ public void setOptionValue(ProductOptionValue optionValue) {
+ this.optionValue = optionValue;
+ }
+ public ProductOptionValue getOptionValue() {
+ return optionValue;
+ }
+ public void setOption(ProductOption option) {
+ this.option = option;
+ }
+ public ProductOption getOption() {
+ return option;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductAttributeEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductAttributeEntity.java
new file mode 100644
index 0000000..2fe44c8
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductAttributeEntity.java
@@ -0,0 +1,43 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+public class ProductAttributeEntity extends ProductAttribute implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private BigDecimal productAttributePrice;
+ private int sortOrder;
+ private BigDecimal productAttributeWeight;
+ private boolean attributeDefault=false;
+
+
+
+ public void setProductAttributePrice(BigDecimal productAttributePrice) {
+ this.productAttributePrice = productAttributePrice;
+ }
+ public BigDecimal getProductAttributePrice() {
+ return productAttributePrice;
+ }
+ public void setSortOrder(int sortOrder) {
+ this.sortOrder = sortOrder;
+ }
+ public int getSortOrder() {
+ return sortOrder;
+ }
+ public void setProductAttributeWeight(BigDecimal productAttributeWeight) {
+ this.productAttributeWeight = productAttributeWeight;
+ }
+ public BigDecimal getProductAttributeWeight() {
+ return productAttributeWeight;
+ }
+ public void setAttributeDefault(boolean attributeDefault) {
+ this.attributeDefault = attributeDefault;
+ }
+ public boolean isAttributeDefault() {
+ return attributeDefault;
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOption.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOption.java
new file mode 100644
index 0000000..a10cd4b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOption.java
@@ -0,0 +1,14 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class ProductOption extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionDescription.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionDescription.java
new file mode 100644
index 0000000..801bfac
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionDescription.java
@@ -0,0 +1,15 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.catalog.CatalogEntity;
+
+public class ProductOptionDescription extends CatalogEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionEntity.java
new file mode 100644
index 0000000..fc8b384
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionEntity.java
@@ -0,0 +1,33 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+
+public class ProductOptionEntity extends ProductOption implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int order;
+ private String code;
+ private String type;
+ public void setOrder(int order) {
+ this.order = order;
+ }
+ public int getOrder() {
+ return order;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public String getCode() {
+ return code;
+ }
+ public void setType(String type) {
+ this.type = type;
+ }
+ public String getType() {
+ return type;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValue.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValue.java
new file mode 100644
index 0000000..29245b7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValue.java
@@ -0,0 +1,14 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class ProductOptionValue extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValueDescription.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValueDescription.java
new file mode 100644
index 0000000..5277984
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValueDescription.java
@@ -0,0 +1,15 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.catalog.CatalogEntity;
+
+public class ProductOptionValueDescription extends CatalogEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValueEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValueEntity.java
new file mode 100644
index 0000000..9b91f4b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ProductOptionValueEntity.java
@@ -0,0 +1,26 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+
+public class ProductOptionValueEntity extends ProductOptionValue implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int order;
+ private String code;
+ public void setOrder(int order) {
+ this.order = order;
+ }
+ public int getOrder() {
+ return order;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public String getCode() {
+ return code;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ReadableProductAttribute.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ReadableProductAttribute.java
new file mode 100644
index 0000000..e90fe50
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/attribute/ReadableProductAttribute.java
@@ -0,0 +1,12 @@
+package com.salesmanager.web.entity.catalog.product.attribute;
+
+import java.io.Serializable;
+
+public class ReadableProductAttribute extends ProductAttributeEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableImage.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableImage.java
new file mode 100644
index 0000000..cd9504a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableImage.java
@@ -0,0 +1,42 @@
+package com.salesmanager.web.entity.catalog.product;
+
+public class PersistableImage {
+
+ private byte[] bytes = null;
+
+
+ private String contentType = null;
+
+ private String imageName;
+
+
+ public void setBytes(byte[] bytes) {
+ this.bytes = bytes;
+ }
+
+
+ public byte[] getBytes() {
+ return bytes;
+ }
+
+
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+
+ public String getContentType() {
+ return contentType;
+ }
+
+
+ public void setImageName(String imageName) {
+ this.imageName = imageName;
+ }
+
+
+ public String getImageName() {
+ return imageName;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableProduct.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableProduct.java
new file mode 100644
index 0000000..3d43a4a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableProduct.java
@@ -0,0 +1,61 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.salesmanager.web.entity.catalog.category.Category;
+import com.salesmanager.web.entity.catalog.manufacturer.Manufacturer;
+import com.salesmanager.web.entity.catalog.product.attribute.PersistableProductAttribute;
+
+public class PersistableProduct extends ProductEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<ProductDescription> descriptions;//always persist descriptions
+ private List<PersistableProductAttribute> attributes;//persist attribute and save reference
+ private List<PersistableImage> images;//persist images and save reference
+ private List<Category> categories;//save reference
+ private List<RelatedProduct> relatedProducts;//save reference
+ private Manufacturer manufacturer;
+
+ public List<ProductDescription> getDescriptions() {
+ return descriptions;
+ }
+ public void setDescriptions(List<ProductDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+
+ public List<PersistableImage> getImages() {
+ return images;
+ }
+ public void setImages(List<PersistableImage> images) {
+ this.images = images;
+ }
+ public List<Category> getCategories() {
+ return categories;
+ }
+ public void setCategories(List<Category> categories) {
+ this.categories = categories;
+ }
+ public List<RelatedProduct> getRelatedProducts() {
+ return relatedProducts;
+ }
+ public void setRelatedProducts(List<RelatedProduct> relatedProducts) {
+ this.relatedProducts = relatedProducts;
+ }
+ public void setManufacturer(Manufacturer manufacturer) {
+ this.manufacturer = manufacturer;
+ }
+ public Manufacturer getManufacturer() {
+ return manufacturer;
+ }
+ public void setAttributes(List<PersistableProductAttribute> attributes) {
+ this.attributes = attributes;
+ }
+ public List<PersistableProductAttribute> getAttributes() {
+ return attributes;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableProductReview.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableProductReview.java
new file mode 100644
index 0000000..590ebfd
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/PersistableProductReview.java
@@ -0,0 +1,25 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+
+import javax.validation.constraints.NotNull;
+
+public class PersistableProductReview extends ProductReviewEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ @NotNull
+ private Long customerId;
+ public Long getCustomerId() {
+ return customerId;
+ }
+ public void setCustomerId(Long customerId) {
+ this.customerId = customerId;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/Product.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/Product.java
new file mode 100644
index 0000000..0bb1686
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/Product.java
@@ -0,0 +1,14 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class Product extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductDescription.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductDescription.java
new file mode 100644
index 0000000..63489dc
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductDescription.java
@@ -0,0 +1,12 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import com.salesmanager.web.entity.catalog.CatalogEntity;
+
+public class ProductDescription extends CatalogEntity {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductEntity.java
new file mode 100644
index 0000000..6c5ad11
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductEntity.java
@@ -0,0 +1,146 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+
+/**
+ * A product entity is used by services API
+ * to populate or retrieve a Product entity
+ * @author Carl Samson
+ *
+ */
+public class ProductEntity extends Product implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private BigDecimal price;
+ private int quantity = 0;
+ private String sku;
+ private boolean productShipeable = false;
+ private boolean productVirtual = false;
+ private int quantityOrderMaximum =-1;//default unlimited
+ private int quantityOrderMinimum = 1;//default 1
+ private boolean productIsFree;
+ private boolean available;
+ private BigDecimal productLength;
+ private BigDecimal productWidth;
+ private BigDecimal productHeight;
+ private BigDecimal productWeight;
+ private Double rating = 0D;
+ private int ratingCount;
+ private int sortOrder;
+ private String dateAvailable;
+
+
+
+
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public int getQuantity() {
+ return quantity;
+ }
+ public void setQuantity(int quantity) {
+ this.quantity = quantity;
+ }
+ public String getSku() {
+ return sku;
+ }
+ public void setSku(String sku) {
+ this.sku = sku;
+ }
+ public boolean isProductShipeable() {
+ return productShipeable;
+ }
+ public void setProductShipeable(boolean productShipeable) {
+ this.productShipeable = productShipeable;
+ }
+ public boolean isProductIsFree() {
+ return productIsFree;
+ }
+ public void setProductIsFree(boolean productIsFree) {
+ this.productIsFree = productIsFree;
+ }
+ public BigDecimal getProductLength() {
+ return productLength;
+ }
+ public void setProductLength(BigDecimal productLength) {
+ this.productLength = productLength;
+ }
+ public BigDecimal getProductWidth() {
+ return productWidth;
+ }
+ public void setProductWidth(BigDecimal productWidth) {
+ this.productWidth = productWidth;
+ }
+ public BigDecimal getProductHeight() {
+ return productHeight;
+ }
+ public void setProductHeight(BigDecimal productHeight) {
+ this.productHeight = productHeight;
+ }
+ public BigDecimal getProductWeight() {
+ return productWeight;
+ }
+ public void setProductWeight(BigDecimal productWeight) {
+ this.productWeight = productWeight;
+ }
+ public int getSortOrder() {
+ return sortOrder;
+ }
+ public void setSortOrder(int sortOrder) {
+ this.sortOrder = sortOrder;
+ }
+ public void setQuantityOrderMaximum(int quantityOrderMaximum) {
+ this.quantityOrderMaximum = quantityOrderMaximum;
+ }
+ public int getQuantityOrderMaximum() {
+ return quantityOrderMaximum;
+ }
+ public void setProductVirtual(boolean productVirtual) {
+ this.productVirtual = productVirtual;
+ }
+ public boolean isProductVirtual() {
+ return productVirtual;
+ }
+ public void setAvailable(boolean available) {
+ this.available = available;
+ }
+ public boolean isAvailable() {
+ return available;
+ }
+ public void setDateAvailable(String dateAvailable) {
+ this.dateAvailable = dateAvailable;
+ }
+ public String getDateAvailable() {
+ return dateAvailable;
+ }
+ public int getQuantityOrderMinimum() {
+ return quantityOrderMinimum;
+ }
+ public void setQuantityOrderMinimum(int quantityOrderMinimum) {
+ this.quantityOrderMinimum = quantityOrderMinimum;
+ }
+ public int getRatingCount() {
+ return ratingCount;
+ }
+ public void setRatingCount(int ratingCount) {
+ this.ratingCount = ratingCount;
+ }
+ public Double getRating() {
+ return rating;
+ }
+ public void setRating(Double rating) {
+ this.rating = rating;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductReviewEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductReviewEntity.java
new file mode 100644
index 0000000..82dedd5
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ProductReviewEntity.java
@@ -0,0 +1,55 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+import org.hibernate.validator.constraints.NotEmpty;
+
+import com.salesmanager.web.entity.ShopEntity;
+
+public class ProductReviewEntity extends ShopEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ @NotEmpty
+ private String description;
+ private Long productId;
+ private String date;
+
+ @NotNull
+ @Min(1)
+ @Max(5)
+ private Double rating;
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public Long getProductId() {
+ return productId;
+ }
+ public void setProductId(Long productId) {
+ this.productId = productId;
+ }
+
+ public Double getRating() {
+ return rating;
+ }
+ public void setRating(Double rating) {
+ this.rating = rating;
+ }
+ public String getDate() {
+ return date;
+ }
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProduct.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProduct.java
new file mode 100644
index 0000000..81ed590
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProduct.java
@@ -0,0 +1,77 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.salesmanager.web.entity.catalog.ReadableImage;
+import com.salesmanager.web.entity.catalog.manufacturer.ReadableManufacturer;
+import com.salesmanager.web.entity.catalog.product.attribute.ReadableProductAttribute;
+
+public class ReadableProduct extends ProductEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private ProductDescription description;
+ private String finalPrice = "0";
+ private String originalPrice = null;
+ private boolean discounted = false;
+ private ReadableImage image;
+ private List<ReadableImage> images;
+ private ReadableManufacturer manufacturer;
+ private List<ReadableProductAttribute> attributes;
+
+
+
+ public ProductDescription getDescription() {
+ return description;
+ }
+ public void setDescription(ProductDescription description) {
+ this.description = description;
+ }
+ public String getFinalPrice() {
+ return finalPrice;
+ }
+ public void setFinalPrice(String finalPrice) {
+ this.finalPrice = finalPrice;
+ }
+ public String getOriginalPrice() {
+ return originalPrice;
+ }
+ public void setOriginalPrice(String originalPrice) {
+ this.originalPrice = originalPrice;
+ }
+ public boolean isDiscounted() {
+ return discounted;
+ }
+ public void setDiscounted(boolean discounted) {
+ this.discounted = discounted;
+ }
+
+ public void setImages(List<ReadableImage> images) {
+ this.images = images;
+ }
+ public List<ReadableImage> getImages() {
+ return images;
+ }
+ public void setImage(ReadableImage image) {
+ this.image = image;
+ }
+ public ReadableImage getImage() {
+ return image;
+ }
+ public void setAttributes(List<ReadableProductAttribute> attributes) {
+ this.attributes = attributes;
+ }
+ public List<ReadableProductAttribute> getAttributes() {
+ return attributes;
+ }
+ public void setManufacturer(ReadableManufacturer manufacturer) {
+ this.manufacturer = manufacturer;
+ }
+ public ReadableManufacturer getManufacturer() {
+ return manufacturer;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductList.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductList.java
new file mode 100644
index 0000000..2daf7ee
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductList.java
@@ -0,0 +1,29 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ReadableProductList implements Serializable {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int totalCount;
+ private List<ReadableProduct> products = new ArrayList<ReadableProduct>();
+ public void setProducts(List<ReadableProduct> products) {
+ this.products = products;
+ }
+ public List<ReadableProduct> getProducts() {
+ return products;
+ }
+ public void setTotalCount(int totalCount) {
+ this.totalCount = totalCount;
+ }
+ public int getTotalCount() {
+ return totalCount;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductPrice.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductPrice.java
new file mode 100644
index 0000000..1a27aa5
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductPrice.java
@@ -0,0 +1,34 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+
+public class ReadableProductPrice implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String originalPrice;
+ private String finalPrice;
+ private boolean discounted = false;
+
+ public String getOriginalPrice() {
+ return originalPrice;
+ }
+ public void setOriginalPrice(String originalPrice) {
+ this.originalPrice = originalPrice;
+ }
+ public String getFinalPrice() {
+ return finalPrice;
+ }
+ public void setFinalPrice(String finalPrice) {
+ this.finalPrice = finalPrice;
+ }
+ public boolean isDiscounted() {
+ return discounted;
+ }
+ public void setDiscounted(boolean discounted) {
+ this.discounted = discounted;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductReview.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductReview.java
new file mode 100644
index 0000000..fb955fd
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/ReadableProductReview.java
@@ -0,0 +1,21 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+
+public class ReadableProductReview extends ProductReviewEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private ReadableCustomer customer;
+ public ReadableCustomer getCustomer() {
+ return customer;
+ }
+ public void setCustomer(ReadableCustomer customer) {
+ this.customer = customer;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/RelatedProduct.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/RelatedProduct.java
new file mode 100644
index 0000000..18727a2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/product/RelatedProduct.java
@@ -0,0 +1,19 @@
+package com.salesmanager.web.entity.catalog.product;
+
+import java.io.Serializable;
+
+public class RelatedProduct extends Product implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String relationShipType; //RELATED_ITEM ~ BUNDLED_ITEM
+ public void setRelationShipType(String relationShipType) {
+ this.relationShipType = relationShipType;
+ }
+ public String getRelationShipType() {
+ return relationShipType;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/ProductList.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/ProductList.java
new file mode 100644
index 0000000..37326ba
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/ProductList.java
@@ -0,0 +1,32 @@
+package com.salesmanager.web.entity.catalog;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+
+public class ProductList implements Serializable {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int productCount;
+ private List<ReadableProduct> products = new ArrayList<ReadableProduct>();
+ public void setProducts(List<ReadableProduct> products) {
+ this.products = products;
+ }
+ public List<ReadableProduct> getProducts() {
+ return products;
+ }
+ public int getProductCount() {
+ return productCount;
+ }
+ public void setProductCount(int productCount) {
+ this.productCount = productCount;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/ReadableImage.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/ReadableImage.java
new file mode 100644
index 0000000..b6b4422
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/ReadableImage.java
@@ -0,0 +1,28 @@
+package com.salesmanager.web.entity.catalog;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class ReadableImage extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String imageName;
+ private String imageUrl;
+ public void setImageName(String imageName) {
+ this.imageName = imageName;
+ }
+ public String getImageName() {
+ return imageName;
+ }
+ public void setImageUrl(String imageUrl) {
+ this.imageUrl = imageUrl;
+ }
+ public String getImageUrl() {
+ return imageUrl;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/SearchProductList.java b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/SearchProductList.java
new file mode 100644
index 0000000..7931181
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/catalog/SearchProductList.java
@@ -0,0 +1,26 @@
+package com.salesmanager.web.entity.catalog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.salesmanager.web.entity.catalog.category.ReadableCategory;
+
+/**
+ * Object representing the results of a search query
+ * @author Carl Samson
+ *
+ */
+public class SearchProductList extends ProductList {
+
+
+ private static final long serialVersionUID = 1L;
+ private List<ReadableCategory> categoryFacets = new ArrayList<ReadableCategory>();
+ public List<ReadableCategory> getCategoryFacets() {
+ return categoryFacets;
+ }
+ public void setCategoryFacets(List<ReadableCategory> categoryFacets) {
+ this.categoryFacets = categoryFacets;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/Address.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/Address.java
new file mode 100644
index 0000000..677736f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/Address.java
@@ -0,0 +1,143 @@
+package com.salesmanager.web.entity.customer;
+
+import java.io.Serializable;
+
+import org.hibernate.validator.constraints.NotEmpty;
+
+
+public class Address implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ @NotEmpty(message="{NotEmpty.customer.firstName}")
+ private String firstName;
+
+ @NotEmpty(message="{NotEmpty.customer.lastName}")
+ private String lastName;
+ private String bilstateOther;
+
+ private String company;
+
+ private String phone;
+ private String address;
+ private String city;
+
+
+ private String postalCode;
+
+
+ private String stateProvince;
+ private boolean billingAddress;
+
+ private String zone;//code
+
+ @NotEmpty(message="{NotEmpty.customer.billing.country}")
+ private String country;//code
+
+ public void setStateProvince(String stateProvince) {
+ this.stateProvince = stateProvince;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+
+
+ public String getCompany() {
+ return company;
+ }
+
+ public void setCompany(String company) {
+ this.company = company;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getPostalCode() {
+ return postalCode;
+ }
+
+ public void setPostalCode(String postalCode) {
+ this.postalCode = postalCode;
+ }
+
+ public String getStateProvince() {
+ return stateProvince;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setZone(String zone) {
+ this.zone = zone;
+ }
+
+ public String getZone() {
+ return zone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public boolean isBillingAddress()
+ {
+ return billingAddress;
+ }
+
+ public void setBillingAddress( boolean billingAddress )
+ {
+ this.billingAddress = billingAddress;
+ }
+
+ public String getBilstateOther()
+ {
+ return bilstateOther;
+ }
+
+ public void setBilstateOther( String bilstateOther )
+ {
+ this.bilstateOther = bilstateOther;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/AnonymousCustomer.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/AnonymousCustomer.java
new file mode 100644
index 0000000..e26aef9
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/AnonymousCustomer.java
@@ -0,0 +1,10 @@
+package com.salesmanager.web.entity.customer;
+
+public class AnonymousCustomer extends PersistableCustomer {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerAttribute.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerAttribute.java
new file mode 100644
index 0000000..0a97dd2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerAttribute.java
@@ -0,0 +1,16 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+
+public class CustomerAttribute extends Entity implements Serializable {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerAttributeEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerAttributeEntity.java
new file mode 100644
index 0000000..1e183f8
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerAttributeEntity.java
@@ -0,0 +1,22 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+public class CustomerAttributeEntity extends CustomerAttribute implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String textValue;
+ public void setTextValue(String textValue) {
+ this.textValue = textValue;
+ }
+ public String getTextValue() {
+ return textValue;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOption.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOption.java
new file mode 100644
index 0000000..ca147d0
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOption.java
@@ -0,0 +1,17 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class CustomerOption extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionDescription.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionDescription.java
new file mode 100644
index 0000000..af8b614
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionDescription.java
@@ -0,0 +1,15 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.catalog.CatalogEntity;
+
+public class CustomerOptionDescription extends CatalogEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionEntity.java
new file mode 100644
index 0000000..ca8fa1b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionEntity.java
@@ -0,0 +1,34 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+public class CustomerOptionEntity extends CustomerOption implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int order;
+ private String code;
+ private String type;//TEXT|SELECT|RADIO|CHECKBOX
+ public void setOrder(int order) {
+ this.order = order;
+ }
+ public int getOrder() {
+ return order;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public String getCode() {
+ return code;
+ }
+ public String getType() {
+ return type;
+ }
+ public void setType(String type) {
+ this.type = type;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValue.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValue.java
new file mode 100644
index 0000000..44e5e2d
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValue.java
@@ -0,0 +1,15 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class CustomerOptionValue extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValueDescription.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValueDescription.java
new file mode 100644
index 0000000..1098ed3
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValueDescription.java
@@ -0,0 +1,15 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.catalog.CatalogEntity;
+
+public class CustomerOptionValueDescription extends CatalogEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValueEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValueEntity.java
new file mode 100644
index 0000000..73bebfe
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/CustomerOptionValueEntity.java
@@ -0,0 +1,27 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+public class CustomerOptionValueEntity extends CustomerOptionValue implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int order;
+ private String code;
+ public void setOrder(int order) {
+ this.order = order;
+ }
+ public int getOrder() {
+ return order;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public String getCode() {
+ return code;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerAttribute.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerAttribute.java
new file mode 100644
index 0000000..c740d6a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerAttribute.java
@@ -0,0 +1,25 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+public class PersistableCustomerAttribute extends CustomerAttributeEntity {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private CustomerOption customerOption;
+ private CustomerOptionValue customerOptionValue;
+ public void setCustomerOptionValue(CustomerOptionValue customerOptionValue) {
+ this.customerOptionValue = customerOptionValue;
+ }
+ public CustomerOptionValue getCustomerOptionValue() {
+ return customerOptionValue;
+ }
+ public void setCustomerOption(CustomerOption customerOption) {
+ this.customerOption = customerOption;
+ }
+ public CustomerOption getCustomerOption() {
+ return customerOption;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerOption.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerOption.java
new file mode 100644
index 0000000..7db2c79
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerOption.java
@@ -0,0 +1,23 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class PersistableCustomerOption extends CustomerOptionEntity
+ implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<CustomerOptionDescription> descriptions;
+
+ public void setDescriptions(List<CustomerOptionDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+
+ public List<CustomerOptionDescription> getDescriptions() {
+ return descriptions;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerOptionValue.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerOptionValue.java
new file mode 100644
index 0000000..7e046e9
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/PersistableCustomerOptionValue.java
@@ -0,0 +1,23 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class PersistableCustomerOptionValue extends CustomerOptionValueEntity
+ implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<CustomerOptionValueDescription> descriptions;
+
+ public void setDescriptions(List<CustomerOptionValueDescription> descriptions) {
+ this.descriptions = descriptions;
+ }
+
+ public List<CustomerOptionValueDescription> getDescriptions() {
+ return descriptions;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerAttribute.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerAttribute.java
new file mode 100644
index 0000000..6a8f3e7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerAttribute.java
@@ -0,0 +1,26 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+public class ReadableCustomerAttribute extends CustomerAttributeEntity {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private ReadableCustomerOption customerOption;
+ private ReadableCustomerOptionValue customerOptionValue;
+ public void setCustomerOption(ReadableCustomerOption customerOption) {
+ this.customerOption = customerOption;
+ }
+ public ReadableCustomerOption getCustomerOption() {
+ return customerOption;
+ }
+ public void setCustomerOptionValue(ReadableCustomerOptionValue customerOptionValue) {
+ this.customerOptionValue = customerOptionValue;
+ }
+ public ReadableCustomerOptionValue getCustomerOptionValue() {
+ return customerOptionValue;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerOption.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerOption.java
new file mode 100644
index 0000000..165b57c
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerOption.java
@@ -0,0 +1,22 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+public class ReadableCustomerOption extends CustomerOptionEntity
+ implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private CustomerOptionDescription description;
+ public void setDescription(CustomerOptionDescription description) {
+ this.description = description;
+ }
+ public CustomerOptionDescription getDescription() {
+ return description;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerOptionValue.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerOptionValue.java
new file mode 100644
index 0000000..cdf0885
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/attribute/ReadableCustomerOptionValue.java
@@ -0,0 +1,22 @@
+package com.salesmanager.web.entity.customer.attribute;
+
+import java.io.Serializable;
+
+public class ReadableCustomerOptionValue extends CustomerOptionValueEntity
+ implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private CustomerOptionValueDescription description;
+ public void setDescription(CustomerOptionValueDescription description) {
+ this.description = description;
+ }
+ public CustomerOptionValueDescription getDescription() {
+ return description;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/Customer.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/Customer.java
new file mode 100644
index 0000000..a48b31c
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/Customer.java
@@ -0,0 +1,16 @@
+package com.salesmanager.web.entity.customer;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class Customer extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/CustomerEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/CustomerEntity.java
new file mode 100644
index 0000000..75f95a1
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/CustomerEntity.java
@@ -0,0 +1,134 @@
+package com.salesmanager.web.entity.customer;
+
+import java.io.Serializable;
+
+import javax.validation.Valid;
+
+import org.hibernate.validator.constraints.Email;
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class CustomerEntity extends Customer implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+
+ @Email (message="{messages.invalid.email}")
+ @NotEmpty(message="{NotEmpty.customer.emailAddress}")
+ private String emailAddress;
+ @Valid
+ private Address billing;
+ private Address delivery;
+ private String gender;
+
+ private String language;
+ private String firstName;
+ private String lastName;
+
+ private String encodedPassword = null;
+ private String clearPassword = null;
+
+ private String storeCode;
+
+ @NotEmpty(message="{NotEmpty.customer.userName}")
+ private String userName;
+
+ public void setUserName(final String userName) {
+ this.userName = userName;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+
+ public void setStoreCode(final String storeCode) {
+ this.storeCode = storeCode;
+ }
+
+
+ public String getStoreCode() {
+ return storeCode;
+ }
+
+
+ public void setEmailAddress(final String emailAddress) {
+ this.emailAddress = emailAddress;
+ }
+
+
+ public String getEmailAddress() {
+ return emailAddress;
+ }
+
+
+ public void setLanguage(final String language) {
+ this.language = language;
+ }
+ public String getLanguage() {
+ return language;
+ }
+
+
+ public Address getBilling() {
+ return billing;
+ }
+ public void setBilling(final Address billing) {
+ this.billing = billing;
+ }
+ public Address getDelivery() {
+ return delivery;
+ }
+ public void setDelivery(final Address delivery) {
+ this.delivery = delivery;
+ }
+ public void setGender(final String gender) {
+ this.gender = gender;
+ }
+ public String getGender() {
+ return gender;
+ }
+
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+
+ public String getLastName() {
+ return lastName;
+ }
+
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getEncodedPassword() {
+ return encodedPassword;
+ }
+
+ public void setEncodedPassword(String encodedPassword) {
+ this.encodedPassword = encodedPassword;
+ }
+
+ public String getClearPassword() {
+ return clearPassword;
+ }
+
+ public void setClearPassword(String clearPassword) {
+ this.clearPassword = clearPassword;
+ }
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/CustomerPassword.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/CustomerPassword.java
new file mode 100644
index 0000000..753df66
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/CustomerPassword.java
@@ -0,0 +1,45 @@
+package com.salesmanager.web.entity.customer;
+
+import java.io.Serializable;
+
+import javax.validation.constraints.Size;
+
+import org.hibernate.validator.constraints.NotEmpty;
+
+import com.salesmanager.web.utils.FieldMatch;
+
+@FieldMatch.List({
+ @FieldMatch(first="password",second="checkPassword",message="password.notequal")
+})
+public class CustomerPassword implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ @NotEmpty( message="{currentpassword.not.empty}")
+ private String currentPassword;
+ @Size(min=6, message="{newpassword.not.empty}")
+ private String password;
+ @Size(min=6, message="{repeatpassword.not.empty}")
+ private String checkPassword;
+ public String getCurrentPassword() {
+ return currentPassword;
+ }
+ public void setCurrentPassword(String currentPassword) {
+ this.currentPassword = currentPassword;
+ }
+ public String getPassword() {
+ return password;
+ }
+ public void setPassword(String password) {
+ this.password = password;
+ }
+ public String getCheckPassword() {
+ return checkPassword;
+ }
+ public void setCheckPassword(String checkPassword) {
+ this.checkPassword = checkPassword;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/PersistableCustomer.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/PersistableCustomer.java
new file mode 100644
index 0000000..6dc4511
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/PersistableCustomer.java
@@ -0,0 +1,23 @@
+package com.salesmanager.web.entity.customer;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.salesmanager.web.entity.customer.attribute.PersistableCustomerAttribute;
+
+public class PersistableCustomer extends CustomerEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<PersistableCustomerAttribute> attributes;
+ public void setAttributes(List<PersistableCustomerAttribute> attributes) {
+ this.attributes = attributes;
+ }
+ public List<PersistableCustomerAttribute> getAttributes() {
+ return attributes;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/ReadableCustomer.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/ReadableCustomer.java
new file mode 100644
index 0000000..36c20bc
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/ReadableCustomer.java
@@ -0,0 +1,23 @@
+package com.salesmanager.web.entity.customer;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.salesmanager.web.entity.customer.attribute.ReadableCustomerAttribute;
+
+public class ReadableCustomer extends CustomerEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<ReadableCustomerAttribute> attributes = new ArrayList<ReadableCustomerAttribute>();
+ public void setAttributes(List<ReadableCustomerAttribute> attributes) {
+ this.attributes = attributes;
+ }
+ public List<ReadableCustomerAttribute> getAttributes() {
+ return attributes;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/SecuredCustomer.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/SecuredCustomer.java
new file mode 100644
index 0000000..061537b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/SecuredCustomer.java
@@ -0,0 +1,51 @@
+package com.salesmanager.web.entity.customer;
+
+import java.io.Serializable;
+
+import javax.validation.constraints.Size;
+
+import com.salesmanager.web.utils.FieldMatch;
+
+
+@FieldMatch.List({
+ @FieldMatch(first="password",second="checkPassword",message="password.notequal")
+
+})
+public class SecuredCustomer extends PersistableCustomer implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+
+
+ @Size(min=6, message="{registration.password.not.empty}")
+ private String password;
+
+ @Size(min=6, message="{registration.password.not.empty}")
+ private String checkPassword;
+
+
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getCheckPassword()
+ {
+ return checkPassword;
+ }
+
+ public void setCheckPassword( String checkPassword )
+ {
+ this.checkPassword = checkPassword;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/customer/SecuredShopPersistableCustomer.java b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/SecuredShopPersistableCustomer.java
new file mode 100644
index 0000000..9c88fa6
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/customer/SecuredShopPersistableCustomer.java
@@ -0,0 +1,50 @@
+package com.salesmanager.web.entity.customer;
+
+import javax.validation.constraints.Size;
+
+
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class SecuredShopPersistableCustomer extends SecuredCustomer {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private String recaptcha_challenge_field;
+ private String recaptcha_response_field;
+ private String checkPassword;
+
+ @NotEmpty(message="{validaion.recaptcha.not.matched}")
+ @Size( min=1,message="{validaion.recaptcha.not.matched}")
+ public String getRecaptcha_challenge_field()
+ {
+ return recaptcha_challenge_field;
+ }
+ public void setRecaptcha_challenge_field( final String recaptcha_challenge_field )
+ {
+ this.recaptcha_challenge_field = recaptcha_challenge_field;
+ }
+
+
+ @NotEmpty(message="{validaion.recaptcha.not.matched}")
+ @Size( min=1,message="{validaion.recaptcha.not.matched}")
+ public String getRecaptcha_response_field()
+ {
+ return recaptcha_response_field;
+ }
+ public void setRecaptcha_response_field( final String recaptcha_response_field )
+ {
+ this.recaptcha_response_field = recaptcha_response_field;
+ }
+ public String getCheckPassword() {
+ return checkPassword;
+ }
+ public void setCheckPassword(String checkPassword) {
+ this.checkPassword = checkPassword;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/Entity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/Entity.java
new file mode 100644
index 0000000..b4d4d93
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/Entity.java
@@ -0,0 +1,19 @@
+package com.salesmanager.web.entity;
+
+import java.io.Serializable;
+
+public class Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private Long id = 0L;
+ public void setId(Long id) {
+ this.id = id;
+ }
+ public Long getId() {
+ return id;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/CartModificationException.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/CartModificationException.java
new file mode 100644
index 0000000..d714389
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/CartModificationException.java
@@ -0,0 +1,31 @@
+/**
+ *
+ */
+package com.salesmanager.web.entity.order;
+
+/**
+ * @author Umesh A
+ *
+ */
+public class CartModificationException extends Exception{
+
+
+ private static final long serialVersionUID = 679173596061770958L;
+
+ public CartModificationException(final String msg, final Throwable cause)
+ {
+ super(msg, cause);
+ }
+
+ public CartModificationException(final String msg)
+ {
+ super(msg);
+ }
+
+ public CartModificationException(Throwable t)
+ {
+ super(t);
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/Order.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/Order.java
new file mode 100644
index 0000000..de170b3
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/Order.java
@@ -0,0 +1,14 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class Order extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderEntity.java
new file mode 100644
index 0000000..da1b706
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderEntity.java
@@ -0,0 +1,85 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatus;
+import com.salesmanager.core.business.order.model.payment.CreditCard;
+import com.salesmanager.core.business.payments.model.PaymentType;
+
+public class OrderEntity extends Order implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<OrderTotal> totals;
+
+ private PaymentType paymentType;
+ private String paymentModule;
+ private String shippingModule;
+ private List<OrderStatus> previousOrderStatus;
+ private OrderStatus orderStatus;
+ private CreditCard creditCard;
+ private Date datePurchased;
+ private String currency;
+
+ public void setTotals(List<OrderTotal> totals) {
+ this.totals = totals;
+ }
+ public List<OrderTotal> getTotals() {
+ return totals;
+ }
+ public PaymentType getPaymentType() {
+ return paymentType;
+ }
+ public void setPaymentType(PaymentType paymentType) {
+ this.paymentType = paymentType;
+ }
+ public String getPaymentModule() {
+ return paymentModule;
+ }
+ public void setPaymentModule(String paymentModule) {
+ this.paymentModule = paymentModule;
+ }
+ public String getShippingModule() {
+ return shippingModule;
+ }
+ public void setShippingModule(String shippingModule) {
+ this.shippingModule = shippingModule;
+ }
+
+ public CreditCard getCreditCard() {
+ return creditCard;
+ }
+ public void setCreditCard(CreditCard creditCard) {
+ this.creditCard = creditCard;
+ }
+ public Date getDatePurchased() {
+ return datePurchased;
+ }
+ public void setDatePurchased(Date datePurchased) {
+ this.datePurchased = datePurchased;
+ }
+ public void setPreviousOrderStatus(List<OrderStatus> previousOrderStatus) {
+ this.previousOrderStatus = previousOrderStatus;
+ }
+ public List<OrderStatus> getPreviousOrderStatus() {
+ return previousOrderStatus;
+ }
+ public void setOrderStatus(OrderStatus orderStatus) {
+ this.orderStatus = orderStatus;
+ }
+ public OrderStatus getOrderStatus() {
+ return orderStatus;
+ }
+ public String getCurrency() {
+ return currency;
+ }
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderProduct.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderProduct.java
new file mode 100644
index 0000000..1a77abe
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderProduct.java
@@ -0,0 +1,14 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class OrderProduct extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderProductEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderProductEntity.java
new file mode 100644
index 0000000..2bd7fd7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderProductEntity.java
@@ -0,0 +1,35 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+
+public class OrderProductEntity extends OrderProduct implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int orderedQuantity;
+ private ReadableProduct product;
+
+
+
+
+ public void setOrderedQuantity(int orderedQuantity) {
+ this.orderedQuantity = orderedQuantity;
+ }
+ public int getOrderedQuantity() {
+ return orderedQuantity;
+ }
+ public ReadableProduct getProduct() {
+ return product;
+ }
+ public void setProduct(ReadableProduct product) {
+ this.product = product;
+ }
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderTotal.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderTotal.java
new file mode 100644
index 0000000..0a0ec6a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/OrderTotal.java
@@ -0,0 +1,51 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import com.salesmanager.web.entity.Entity;
+
+public class OrderTotal extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String title;
+ private String code;
+ private int order;
+ private String module;
+ private BigDecimal value;
+ public String getTitle() {
+ return title;
+ }
+ public void setTitle(String title) {
+ this.title = title;
+ }
+ public String getCode() {
+ return code;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public int getOrder() {
+ return order;
+ }
+ public void setOrder(int order) {
+ this.order = order;
+ }
+ public String getModule() {
+ return module;
+ }
+ public void setModule(String module) {
+ this.module = module;
+ }
+ public BigDecimal getValue() {
+ return value;
+ }
+ public void setValue(BigDecimal value) {
+ this.value = value;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/PersistableOrder.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/PersistableOrder.java
new file mode 100644
index 0000000..7bcc26e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/PersistableOrder.java
@@ -0,0 +1,40 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+
+public class PersistableOrder extends OrderEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private PersistableCustomer customer;//might already exist if id > 0, otherwise persist
+ private List<PersistableOrderProduct> orderProductItems;
+ private boolean shipToBillingAdress = true;
+
+
+ public void setOrderProductItems(List<PersistableOrderProduct> orderProductItems) {
+ this.orderProductItems = orderProductItems;
+ }
+ public List<PersistableOrderProduct> getOrderProductItems() {
+ return orderProductItems;
+ }
+ public void setCustomer(PersistableCustomer customer) {
+ this.customer = customer;
+ }
+ public PersistableCustomer getCustomer() {
+ return customer;
+ }
+ public boolean isShipToBillingAdress() {
+ return shipToBillingAdress;
+ }
+ public void setShipToBillingAdress(boolean shipToBillingAdress) {
+ this.shipToBillingAdress = shipToBillingAdress;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/PersistableOrderProduct.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/PersistableOrderProduct.java
new file mode 100644
index 0000000..af015fc
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/PersistableOrderProduct.java
@@ -0,0 +1,37 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.salesmanager.web.entity.catalog.product.attribute.ProductAttribute;
+
+public class PersistableOrderProduct extends OrderProductEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private BigDecimal price;//specify final price
+ private List<ProductAttribute> attributes;//may have attributes
+
+
+
+ public void setAttributes(List<ProductAttribute> attributes) {
+ this.attributes = attributes;
+ }
+
+ public List<ProductAttribute> getAttributes() {
+ return attributes;
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrder.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrder.java
new file mode 100644
index 0000000..925dcdf
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrder.java
@@ -0,0 +1,82 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.salesmanager.core.business.reference.currency.model.Currency;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+
+public class ReadableOrder extends OrderEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private ReadableCustomer customer;
+ private List<ReadableOrderProduct> products;
+ private Currency currencyModel;
+
+ private Address billing;
+ private Address delivery;
+
+
+
+ public void setCustomer(ReadableCustomer customer) {
+ this.customer = customer;
+ }
+ public ReadableCustomer getCustomer() {
+ return customer;
+ }
+ public OrderTotal getTotal() {
+ return total;
+ }
+ public void setTotal(OrderTotal total) {
+ this.total = total;
+ }
+ public OrderTotal getTax() {
+ return tax;
+ }
+ public void setTax(OrderTotal tax) {
+ this.tax = tax;
+ }
+ public OrderTotal getShipping() {
+ return shipping;
+ }
+ public void setShipping(OrderTotal shipping) {
+ this.shipping = shipping;
+ }
+
+ public List<ReadableOrderProduct> getProducts() {
+ return products;
+ }
+ public void setProducts(List<ReadableOrderProduct> products) {
+ this.products = products;
+ }
+
+ public Currency getCurrencyModel() {
+ return currencyModel;
+ }
+ public void setCurrencyModel(Currency currencyModel) {
+ this.currencyModel = currencyModel;
+ }
+
+ public Address getBilling() {
+ return billing;
+ }
+ public void setBilling(Address billing) {
+ this.billing = billing;
+ }
+
+ public Address getDelivery() {
+ return delivery;
+ }
+ public void setDelivery(Address delivery) {
+ this.delivery = delivery;
+ }
+
+ private OrderTotal total;
+ private OrderTotal tax;
+ private OrderTotal shipping;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderList.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderList.java
new file mode 100644
index 0000000..b11034e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderList.java
@@ -0,0 +1,32 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.salesmanager.web.entity.ServiceEntity;
+
+public class ReadableOrderList extends ServiceEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int total;
+ private List<ReadableOrder> orders;
+
+
+
+ public int getTotal() {
+ return total;
+ }
+ public void setTotal(int total) {
+ this.total = total;
+ }
+ public List<ReadableOrder> getOrders() {
+ return orders;
+ }
+ public void setOrders(List<ReadableOrder> orders) {
+ this.orders = orders;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderProduct.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderProduct.java
new file mode 100644
index 0000000..991f9d3
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderProduct.java
@@ -0,0 +1,52 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+
+public class ReadableOrderProduct extends OrderProductEntity implements
+ Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String productName;
+ private String price;
+ private String subTotal;
+
+
+
+ private String sku;
+ private String image;
+ public String getProductName() {
+ return productName;
+ }
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+ public String getSku() {
+ return sku;
+ }
+ public void setSku(String sku) {
+ this.sku = sku;
+ }
+ public String getImage() {
+ return image;
+ }
+ public void setImage(String image) {
+ this.image = image;
+ }
+ public String getPrice() {
+ return price;
+ }
+ public void setPrice(String price) {
+ this.price = price;
+ }
+ public String getSubTotal() {
+ return subTotal;
+ }
+ public void setSubTotal(String subTotal) {
+ this.subTotal = subTotal;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderProductDownload.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderProductDownload.java
new file mode 100644
index 0000000..64da1ab
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderProductDownload.java
@@ -0,0 +1,61 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.Entity;
+
+public class ReadableOrderProductDownload extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private long orderId;
+
+ private String productName;
+ private String downloadUrl;
+
+ private String fileName;
+
+ private int downloadExpiryDays = 0;
+ private int downloadCount = 0;
+ public int getDownloadExpiryDays() {
+ return downloadExpiryDays;
+ }
+ public void setDownloadExpiryDays(int downloadExpiryDays) {
+ this.downloadExpiryDays = downloadExpiryDays;
+ }
+ public int getDownloadCount() {
+ return downloadCount;
+ }
+ public void setDownloadCount(int downloadCount) {
+ this.downloadCount = downloadCount;
+ }
+ public String getProductName() {
+ return productName;
+ }
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+ public String getDownloadUrl() {
+ return downloadUrl;
+ }
+ public void setDownloadUrl(String downloadUrl) {
+ this.downloadUrl = downloadUrl;
+ }
+ public long getOrderId() {
+ return orderId;
+ }
+ public void setOrderId(long orderId) {
+ this.orderId = orderId;
+ }
+ public String getFileName() {
+ return fileName;
+ }
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderTotal.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderTotal.java
new file mode 100644
index 0000000..75839c3
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableOrderTotal.java
@@ -0,0 +1,19 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+
+public class ReadableOrderTotal extends OrderTotal implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String total;
+ public String getTotal() {
+ return total;
+ }
+ public void setTotal(String total) {
+ this.total = total;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableShippingSummary.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableShippingSummary.java
new file mode 100644
index 0000000..046ae4f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableShippingSummary.java
@@ -0,0 +1,93 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.salesmanager.core.business.shipping.model.ShippingOption;
+
+public class ReadableShippingSummary implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private BigDecimal shipping;
+ private BigDecimal handling;
+ private String shippingModule;
+ private String shippingOption;
+ private boolean freeShipping;
+ private boolean taxOnShipping;
+ private String shippingText;
+ private String handlingText;
+
+
+ private ShippingOption selectedShippingOption = null;//Default selected option
+ private List<ShippingOption> shippingOptions = null;
+
+
+ public BigDecimal getShipping() {
+ return shipping;
+ }
+ public void setShipping(BigDecimal shipping) {
+ this.shipping = shipping;
+ }
+ public BigDecimal getHandling() {
+ return handling;
+ }
+ public void setHandling(BigDecimal handling) {
+ this.handling = handling;
+ }
+ public String getShippingModule() {
+ return shippingModule;
+ }
+ public void setShippingModule(String shippingModule) {
+ this.shippingModule = shippingModule;
+ }
+ public String getShippingOption() {
+ return shippingOption;
+ }
+ public void setShippingOption(String shippingOption) {
+ this.shippingOption = shippingOption;
+ }
+ public boolean isFreeShipping() {
+ return freeShipping;
+ }
+ public void setFreeShipping(boolean freeShipping) {
+ this.freeShipping = freeShipping;
+ }
+ public boolean isTaxOnShipping() {
+ return taxOnShipping;
+ }
+ public void setTaxOnShipping(boolean taxOnShipping) {
+ this.taxOnShipping = taxOnShipping;
+ }
+ public String getShippingText() {
+ return shippingText;
+ }
+ public void setShippingText(String shippingText) {
+ this.shippingText = shippingText;
+ }
+ public String getHandlingText() {
+ return handlingText;
+ }
+ public void setHandlingText(String handlingText) {
+ this.handlingText = handlingText;
+ }
+ public static long getSerialversionuid() {
+ return serialVersionUID;
+ }
+ public List<ShippingOption> getShippingOptions() {
+ return shippingOptions;
+ }
+ public void setShippingOptions(List<ShippingOption> shippingOptions) {
+ this.shippingOptions = shippingOptions;
+ }
+ public ShippingOption getSelectedShippingOption() {
+ return selectedShippingOption;
+ }
+ public void setSelectedShippingOption(ShippingOption selectedShippingOption) {
+ this.selectedShippingOption = selectedShippingOption;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableShopOrder.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableShopOrder.java
new file mode 100644
index 0000000..3cb13c6
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ReadableShopOrder.java
@@ -0,0 +1,45 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class ReadableShopOrder extends ReadableOrder implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private ReadableShippingSummary shippingSummary;
+
+ private String errorMessage = null;//global error message
+ private List<ReadableOrderTotal> subTotals;//order calculation
+ private String grandTotal;//grand total - order calculation
+
+
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+ public void setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+ public String getGrandTotal() {
+ return grandTotal;
+ }
+ public void setGrandTotal(String grandTotal) {
+ this.grandTotal = grandTotal;
+ }
+ public List<ReadableOrderTotal> getSubTotals() {
+ return subTotals;
+ }
+ public void setSubTotals(List<ReadableOrderTotal> subTotals) {
+ this.subTotals = subTotals;
+ }
+ public ReadableShippingSummary getShippingSummary() {
+ return shippingSummary;
+ }
+ public void setShippingSummary(ReadableShippingSummary shippingSummary) {
+ this.shippingSummary = shippingSummary;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/order/ShopOrder.java b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ShopOrder.java
new file mode 100644
index 0000000..36fa8f8
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/order/ShopOrder.java
@@ -0,0 +1,85 @@
+package com.salesmanager.web.entity.order;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+import com.salesmanager.core.business.order.model.OrderTotalSummary;
+import com.salesmanager.core.business.shipping.model.ShippingOption;
+import com.salesmanager.core.business.shipping.model.ShippingSummary;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem;
+
+/**
+ * Orders saved on the website
+ * @author Carl Samson
+ *
+ */
+public class ShopOrder extends PersistableOrder implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private List<ShoppingCartItem> shoppingCartItems;//overrides parent API list of shoppingcartitem
+
+ private OrderTotalSummary orderTotalSummary;//The order total displayed to the end user. That object will be used when committing the order
+
+
+ private ShippingSummary shippingSummary;
+ private ShippingOption selectedShippingOption = null;//Default selected option
+
+
+ private String paymentMethodType = null;//user selected payment type
+ private Map<String,String> payment;//user payment information
+
+ private String errorMessage = null;
+
+
+ public void setShoppingCartItems(List<ShoppingCartItem> shoppingCartItems) {
+ this.shoppingCartItems = shoppingCartItems;
+ }
+ public List<ShoppingCartItem> getShoppingCartItems() {
+ return shoppingCartItems;
+ }
+
+ public void setOrderTotalSummary(OrderTotalSummary orderTotalSummary) {
+ this.orderTotalSummary = orderTotalSummary;
+ }
+ public OrderTotalSummary getOrderTotalSummary() {
+ return orderTotalSummary;
+ }
+
+ public ShippingSummary getShippingSummary() {
+ return shippingSummary;
+ }
+ public void setShippingSummary(ShippingSummary shippingSummary) {
+ this.shippingSummary = shippingSummary;
+ }
+ public ShippingOption getSelectedShippingOption() {
+ return selectedShippingOption;
+ }
+ public void setSelectedShippingOption(ShippingOption selectedShippingOption) {
+ this.selectedShippingOption = selectedShippingOption;
+ }
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+ public void setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+ public String getPaymentMethodType() {
+ return paymentMethodType;
+ }
+ public void setPaymentMethodType(String paymentMethodType) {
+ this.paymentMethodType = paymentMethodType;
+ }
+ public Map<String,String> getPayment() {
+ return payment;
+ }
+ public void setPayment(Map<String,String> payment) {
+ this.payment = payment;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/ServiceEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/ServiceEntity.java
new file mode 100644
index 0000000..86aba5d
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/ServiceEntity.java
@@ -0,0 +1,21 @@
+package com.salesmanager.web.entity;
+
+public abstract class ServiceEntity {
+
+ private int status = 0;
+ private String message = null;
+
+ public int getStatus() {
+ return status;
+ }
+ public void setStatus(int status) {
+ this.status = status;
+ }
+ public String getMessage() {
+ return message;
+ }
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/shop/Breadcrumb.java b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/Breadcrumb.java
new file mode 100644
index 0000000..4fd9f5f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/Breadcrumb.java
@@ -0,0 +1,44 @@
+package com.salesmanager.web.entity.shop;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.salesmanager.core.business.reference.language.model.Language;
+
+public class Breadcrumb implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private BreadcrumbItemType itemType;
+ private Language language;
+ private String urlRefContent = null;
+ private List<BreadcrumbItem> breadCrumbs = new ArrayList<BreadcrumbItem>();
+ public Language getLanguage() {
+ return language;
+ }
+ public void setLanguage(Language language) {
+ this.language = language;
+ }
+ public List<BreadcrumbItem> getBreadCrumbs() {
+ return breadCrumbs;
+ }
+ public void setBreadCrumbs(List<BreadcrumbItem> breadCrumbs) {
+ this.breadCrumbs = breadCrumbs;
+ }
+ public void setItemType(BreadcrumbItemType itemType) {
+ this.itemType = itemType;
+ }
+ public BreadcrumbItemType getItemType() {
+ return itemType;
+ }
+ public String getUrlRefContent() {
+ return urlRefContent;
+ }
+ public void setUrlRefContent(String urlRefContent) {
+ this.urlRefContent = urlRefContent;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/shop/BreadcrumbItem.java b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/BreadcrumbItem.java
new file mode 100644
index 0000000..a2b57a2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/BreadcrumbItem.java
@@ -0,0 +1,40 @@
+package com.salesmanager.web.entity.shop;
+
+import java.io.Serializable;
+
+public class BreadcrumbItem implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private Long id;
+ private String label;
+ private String url;
+ private BreadcrumbItemType itemType;
+ public Long getId() {
+ return id;
+ }
+ public void setId(Long id) {
+ this.id = id;
+ }
+ public String getLabel() {
+ return label;
+ }
+ public void setLabel(String label) {
+ this.label = label;
+ }
+ public String getUrl() {
+ return url;
+ }
+ public void setUrl(String url) {
+ this.url = url;
+ }
+ public BreadcrumbItemType getItemType() {
+ return itemType;
+ }
+ public void setItemType(BreadcrumbItemType itemType) {
+ this.itemType = itemType;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/shop/BreadcrumbItemType.java b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/BreadcrumbItemType.java
new file mode 100644
index 0000000..217244d
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/BreadcrumbItemType.java
@@ -0,0 +1,7 @@
+package com.salesmanager.web.entity.shop;
+
+public enum BreadcrumbItemType {
+
+ CATEGORY, PRODUCT, HOME, PAGE
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/shop/ContactForm.java b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/ContactForm.java
new file mode 100644
index 0000000..e544652
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/ContactForm.java
@@ -0,0 +1,60 @@
+package com.salesmanager.web.entity.shop;
+
+import org.hibernate.validator.constraints.Email;
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class ContactForm {
+
+ @NotEmpty
+ private String name;
+ @NotEmpty
+ private String subject;
+ @Email
+ private String email;
+ @NotEmpty
+ private String comment;
+
+
+ private String captchaResponseField;
+ private String captchaChallengeField;
+
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getEmail() {
+ return email;
+ }
+ public void setEmail(String email) {
+ this.email = email;
+ }
+ public String getComment() {
+ return comment;
+ }
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+ public String getCaptchaResponseField() {
+ return captchaResponseField;
+ }
+ public void setCaptchaResponseField(String captchaResponseField) {
+ this.captchaResponseField = captchaResponseField;
+ }
+ public String getCaptchaChallengeField() {
+ return captchaChallengeField;
+ }
+ public void setCaptchaChallengeField(String captchaChallengeField) {
+ this.captchaChallengeField = captchaChallengeField;
+ }
+ public String getSubject() {
+ return subject;
+ }
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/shop/PageInformation.java b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/PageInformation.java
new file mode 100644
index 0000000..5cc0524
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/shop/PageInformation.java
@@ -0,0 +1,40 @@
+package com.salesmanager.web.entity.shop;
+
+import java.io.Serializable;
+
+public class PageInformation implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String pageTitle;
+ private String pageDescription;
+ private String pageKeywords;
+ private String pageUrl;
+ public String getPageTitle() {
+ return pageTitle;
+ }
+ public void setPageTitle(String pageTitle) {
+ this.pageTitle = pageTitle;
+ }
+ public String getPageDescription() {
+ return pageDescription;
+ }
+ public void setPageDescription(String pageDescription) {
+ this.pageDescription = pageDescription;
+ }
+ public String getPageKeywords() {
+ return pageKeywords;
+ }
+ public void setPageKeywords(String pageKeywords) {
+ this.pageKeywords = pageKeywords;
+ }
+ public void setPageUrl(String pageUrl) {
+ this.pageUrl = pageUrl;
+ }
+ public String getPageUrl() {
+ return pageUrl;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/ShopEntity.java b/sm-shop/src/main/java/com/salesmanager/web/entity/ShopEntity.java
new file mode 100644
index 0000000..85eb7ac
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/ShopEntity.java
@@ -0,0 +1,21 @@
+package com.salesmanager.web.entity;
+
+import java.io.Serializable;
+
+public abstract class ShopEntity extends Entity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String language;
+
+ public void setLanguage(String language) {
+ this.language = language;
+ }
+ public String getLanguage() {
+ return language;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartAttribute.java b/sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartAttribute.java
new file mode 100644
index 0000000..c4b249b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartAttribute.java
@@ -0,0 +1,50 @@
+package com.salesmanager.web.entity.shoppingcart;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.ShopEntity;
+
+public class ShoppingCartAttribute extends ShopEntity implements Serializable {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private long optionId;
+ private long optionValueId;
+ private long attributeId;
+ private String optionName;
+ private String optionValue;
+ public long getOptionId() {
+ return optionId;
+ }
+ public void setOptionId(long optionId) {
+ this.optionId = optionId;
+ }
+ public long getOptionValueId() {
+ return optionValueId;
+ }
+ public void setOptionValueId(long optionValueId) {
+ this.optionValueId = optionValueId;
+ }
+ public String getOptionName() {
+ return optionName;
+ }
+ public void setOptionName(String optionName) {
+ this.optionName = optionName;
+ }
+ public String getOptionValue() {
+ return optionValue;
+ }
+ public void setOptionValue(String optionValue) {
+ this.optionValue = optionValue;
+ }
+ public long getAttributeId() {
+ return attributeId;
+ }
+ public void setAttributeId(long attributeId) {
+ this.attributeId = attributeId;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartData.java b/sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartData.java
new file mode 100644
index 0000000..718acac
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartData.java
@@ -0,0 +1,75 @@
+package com.salesmanager.web.entity.shoppingcart;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import com.salesmanager.web.entity.ShopEntity;
+import com.salesmanager.web.entity.order.OrderTotal;
+
+@Component
+@Scope(value = "prototype")
+public class ShoppingCartData extends ShopEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String message;
+ private String code;
+ private int quantity;
+ private String total;
+ private String subTotal;
+
+ private List<OrderTotal> totals;//calculated from OrderTotalSummary
+ private List<ShoppingCartItem> shoppingCartItems;
+
+
+ public String getMessage() {
+ return message;
+ }
+ public void setMessage(String message) {
+ this.message = message;
+ }
+ public String getCode() {
+ return code;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public int getQuantity() {
+ return quantity;
+ }
+ public void setQuantity(int quantity) {
+ this.quantity = quantity;
+ }
+ public String getTotal() {
+ return total;
+ }
+ public void setTotal(String total) {
+ this.total = total;
+ }
+ public List<ShoppingCartItem> getShoppingCartItems() {
+ return shoppingCartItems;
+ }
+ public void setShoppingCartItems(List<ShoppingCartItem> shoppingCartItems) {
+ this.shoppingCartItems = shoppingCartItems;
+ }
+ public String getSubTotal() {
+ return subTotal;
+ }
+ public void setSubTotal(String subTotal) {
+ this.subTotal = subTotal;
+ }
+ public List<OrderTotal> getTotals() {
+ return totals;
+ }
+ public void setTotals(List<OrderTotal> totals) {
+ this.totals = totals;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartItem.java b/sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartItem.java
new file mode 100644
index 0000000..1c99f5c
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/entity/shoppingcart/ShoppingCartItem.java
@@ -0,0 +1,99 @@
+package com.salesmanager.web.entity.shoppingcart;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.salesmanager.web.entity.ShopEntity;
+
+public class ShoppingCartItem extends ShopEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String name;
+ private String price;
+ private String image;
+ private BigDecimal productPrice;
+ private int quantity;
+ private long productId;
+ private String productCode;
+ private String code;//shopping cart code
+ private boolean productVirtual;
+
+ private String subTotal;
+
+ private List<ShoppingCartAttribute> shoppingCartAttributes;
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getPrice() {
+ return price;
+ }
+ public void setPrice(String price) {
+ this.price = price;
+ }
+ public int getQuantity() {
+ return quantity;
+ }
+ public void setQuantity(int quantity) {
+ this.quantity = quantity;
+ }
+
+
+ public String getCode() {
+ return code;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public List<ShoppingCartAttribute> getShoppingCartAttributes() {
+ return shoppingCartAttributes;
+ }
+ public void setShoppingCartAttributes(List<ShoppingCartAttribute> shoppingCartAttributes) {
+ this.shoppingCartAttributes = shoppingCartAttributes;
+ }
+ public void setProductPrice(BigDecimal productPrice) {
+ this.productPrice = productPrice;
+ }
+ public BigDecimal getProductPrice() {
+ return productPrice;
+ }
+ public void setProductId(long productId) {
+ this.productId = productId;
+ }
+ public long getProductId() {
+ return productId;
+ }
+ public void setProductCode(String productCode) {
+ this.productCode = productCode;
+ }
+ public String getProductCode() {
+ return productCode;
+ }
+ public void setImage(String image) {
+ this.image = image;
+ }
+ public String getImage() {
+ return image;
+ }
+ public void setSubTotal(String subTotal) {
+ this.subTotal = subTotal;
+ }
+ public String getSubTotal() {
+ return subTotal;
+ }
+ public boolean isProductVirtual() {
+ return productVirtual;
+ }
+ public void setProductVirtual(boolean productVirtual) {
+ this.productVirtual = productVirtual;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/files/FilesController.java b/sm-shop/src/main/java/com/salesmanager/web/files/FilesController.java
new file mode 100644
index 0000000..472403c
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/files/FilesController.java
@@ -0,0 +1,144 @@
+package com.salesmanager.web.files;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.content.model.OutputContentFile;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.shop.controller.AbstractController;
+
+@Controller
+public class FilesController extends AbstractController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(FilesController.class);
+
+
+
+ @Autowired
+ private ContentService contentService;
+
+
+ /**
+ * Serves static files (css, js ...) the repository is a single node by merchant
+ * @param storeCode
+ * @param imageName
+ * @param extension
+ * @return
+ * @throws IOException
+ * @throws ServiceException
+ */
+ @RequestMapping("/files/{storeCode}/{fileName}.{extension}")
+ public @ResponseBody byte[] downloadFile(@PathVariable final String storeCode, @PathVariable final String fileName, @PathVariable final String extension, HttpServletRequest request, HttpServletResponse response) throws IOException, ServiceException {
+
+ // example -> /files/<store code>/myfile.css
+ FileContentType fileType = FileContentType.STATIC_FILE;
+
+ // needs to query the new API
+ OutputContentFile file =contentService.getContentFile(storeCode, fileType, new StringBuilder().append(fileName).append(".").append(extension).toString());
+
+
+ if(file!=null) {
+ return file.getFile().toByteArray();
+ } else {
+ LOGGER.debug("File not found " + fileName + "." + extension);
+ response.sendError(404, Constants.FILE_NOT_FOUND);
+ return null;
+ }
+ }
+
+ /**
+ * Requires admin with roles admin, superadmin or product
+ * @param storeCode
+ * @param fileName
+ * @param extension
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('PRODUCTS')")
+ @RequestMapping("/admin/files/downloads/{storeCode}/{fileName}.{extension}")
+ public @ResponseBody byte[] downloadProduct(@PathVariable final String storeCode, @PathVariable final String fileName, @PathVariable final String extension, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ FileContentType fileType = FileContentType.PRODUCT_DIGITAL;
+
+ String fileNameAndExtension = new StringBuilder().append(fileName).append(".").append(extension).toString();
+
+ // needs to query the new API
+ OutputContentFile file = contentService.getContentFile(storeCode, fileType, fileNameAndExtension);
+
+
+ if(file!=null) {
+ response.setHeader("Content-Disposition", "attachment; filename=\"" + fileNameAndExtension + "\"");
+ return file.getFile().toByteArray();
+ } else {
+ LOGGER.debug("File not found " + fileName + "." + extension);
+ response.sendError(404, Constants.FILE_NOT_FOUND);
+ return null;
+ }
+ }
+
+
+
+/* *//**
+ * See order controller
+ * Serves product download files
+ * @param storeCode
+ * @param productId
+ * @param fileName
+ * @param extension
+ * @return
+ * @throws IOException
+ *//*
+ @RequestMapping("/files/{storeCode}/{orderId}/{productId}/{fileName}.{extension}")
+ public void downloadProduct(@PathVariable final String storeCode, @PathVariable final Long orderId, @PathVariable final Long productId, @PathVariable final String fileName, @PathVariable final String extension, HttpServletRequest request, HttpServletResponse response) throws IOException {
+
+ // product image
+ // example -> /files/mystore/12345/120/product1.zip
+
+ //TODO role customer, verify the order has the requested product to download
+
+ //Need to query the files CMS for merchant and product ( not the order )
+
+ FileContentType imgType = null;
+
+
+
+ OutputContentFile image = null;
+ //try {
+ //image = productImageService.getProductImage(storeCode, productId, new StringBuilder().append(imageName).append(".").append(extension).toString());
+ //} catch (ServiceException e) {
+ //LOGGER.error("Cannot retrieve image " + imageName, e);
+ //}
+ try {
+ // get your file as InputStream
+ InputStream is = ...;
+ // copy it to response's OutputStream
+ IOUtils.copy(is, response.getOutputStream());
+ response.setContentType("application/pdf");
+ response.setHeader("Content-Disposition", "attachment; filename=somefile.pdf");
+ response.flushBuffer();
+ } catch (IOException ex) {
+ log.info("Error writing file to output stream. Filename was '" + fileName + "'");
+ throw new RuntimeException("IOError writing file to output stream");
+ }
+
+ }
+
+ }*/
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/filter/AdminFilter.java b/sm-shop/src/main/java/com/salesmanager/web/filter/AdminFilter.java
new file mode 100644
index 0000000..16dd7ca
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/filter/AdminFilter.java
@@ -0,0 +1,216 @@
+package com.salesmanager.web.filter;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.user.model.User;
+import com.salesmanager.core.business.user.service.UserService;
+import com.salesmanager.core.utils.CacheUtils;
+import com.salesmanager.web.admin.entity.web.Menu;
+import com.salesmanager.web.constants.Constants;
+
+
+public class AdminFilter extends HandlerInterceptorAdapter {
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AdminFilter.class);
+
+ @Autowired
+ private MerchantStoreService merchantService;
+
+ @Autowired
+ private UserService userService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private CacheUtils cache;
+
+ public boolean preHandle(
+ HttpServletRequest request,
+ HttpServletResponse response,
+ Object handler) throws Exception {
+
+ request.setCharacterEncoding("UTF-8");
+ @SuppressWarnings("unchecked")
+ Map<String,Menu> menus = (Map<String,Menu>) cache.getFromCache("MENUMAP");
+
+ User user = (User)request.getSession().getAttribute(Constants.ADMIN_USER);
+
+
+
+
+
+
+ String storeCode = MerchantStore.DEFAULT_STORE;
+ MerchantStore store = (MerchantStore)request.getSession().getAttribute(Constants.ADMIN_STORE);
+
+
+ String userName = request.getRemoteUser();
+
+ if(userName==null) {//** IMPORTANT FOR SPRING SECURITY **//
+ //response.sendRedirect(new StringBuilder().append(request.getContextPath()).append("/").append("/admin").toString());
+ } else {
+
+ if(user==null) {
+ user = userService.getByUserName(userName);
+ request.getSession().setAttribute(Constants.ADMIN_USER, user);
+ if(user!=null) {
+ storeCode = user.getMerchantStore().getCode();
+ } else {
+ LOGGER.warn("User name not found " + userName);
+ }
+ store=null;
+ }
+
+ if(user==null) {
+ response.sendRedirect(request.getContextPath() + "/admin/unauthorized.html");
+ return true;
+ }
+
+ if(!user.getAdminName().equals(userName)) {
+ user = userService.getByUserName(userName);
+ if(user!=null) {
+ storeCode = user.getMerchantStore().getCode();
+ } else {
+ LOGGER.warn("User name not found " + userName);
+ }
+ store=null;
+ }
+
+ }
+
+ if(store==null) {
+ store = merchantService.getByCode(storeCode);
+ request.getSession().setAttribute(Constants.ADMIN_STORE, store);
+ }
+ request.setAttribute(Constants.ADMIN_STORE, store);
+
+
+ Language language = (Language) request.getSession().getAttribute("LANGUAGE");
+
+ if(language==null) {
+
+ //TODO get the Locale from Spring API, is it simply request.getLocale() ???
+ //if so then based on the Locale language locale.getLanguage() get the appropriate Language
+ //object as represented below
+ if(user!=null) {
+ language = user.getDefaultLanguage();
+ if(language==null) {
+ language = store.getDefaultLanguage();
+ }
+ } else {
+ language = store.getDefaultLanguage();
+ }
+
+
+
+ request.getSession().setAttribute("LANGUAGE", language);
+
+
+ }
+
+
+ request.setAttribute(Constants.LANGUAGE, language);
+
+
+ if(menus==null) {
+ InputStream in = null;
+ ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
+ try {
+ in =
+ (InputStream) this.getClass().getClassLoader().getResourceAsStream("admin/menu.json");
+
+ Map<String,Object> data = mapper.readValue(in, Map.class);
+
+ Menu currentMenu = null;
+
+ menus = new LinkedHashMap<String,Menu>();
+ List objects = (List)data.get("menus");
+ for(Object object : objects) {
+ Menu m = getMenu(object);
+ menus.put(m.getCode(),m);
+ }
+
+ cache.putInCache(menus,"MENUMAP");
+
+ } catch (JsonParseException e) {
+ LOGGER.error("Error while creating menu", e);
+ } catch (JsonMappingException e) {
+ LOGGER.error("Error while creating menu", e);
+ } catch (IOException e) {
+ LOGGER.error("Error while creating menu", e);
+ } finally {
+ if(in !=null) {
+ try {
+ in.close();
+ } catch (Exception ignore) {
+ // TODO: handle exception
+ }
+ }
+ }
+
+ }
+
+
+ List<Menu> list = new ArrayList<Menu>(menus.values());
+
+ request.setAttribute("MENULIST", list);
+
+
+
+ request.setAttribute("MENUMAP", menus);
+ response.setCharacterEncoding("UTF-8");
+
+ return true;
+ }
+
+
+ private Menu getMenu(Object object) {
+
+ Map o = (Map)object;
+ Map menu = (Map)o.get("menu");
+
+ Menu m = new Menu();
+ m.setCode((String)menu.get("code"));
+
+
+ m.setUrl((String)menu.get("url"));
+ m.setIcon((String)menu.get("icon"));
+ m.setRole((String)menu.get("role"));
+
+ List menus = (List)menu.get("menus");
+ if(menus!=null) {
+ for(Object oo : menus) {
+
+ Menu mm = getMenu(oo);
+ m.getMenus().add(mm);
+ }
+
+ }
+
+ return m;
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/filter/StoreFilter.java b/sm-shop/src/main/java/com/salesmanager/web/filter/StoreFilter.java
new file mode 100644
index 0000000..cc86898
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/filter/StoreFilter.java
@@ -0,0 +1,909 @@
+package com.salesmanager.web.filter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.model.CategoryDescription;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.content.model.Content;
+import com.salesmanager.core.business.content.model.ContentDescription;
+import com.salesmanager.core.business.content.model.ContentType;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.system.model.MerchantConfig;
+import com.salesmanager.core.business.system.model.MerchantConfiguration;
+import com.salesmanager.core.business.system.model.MerchantConfigurationType;
+import com.salesmanager.core.business.system.service.MerchantConfigurationService;
+import com.salesmanager.core.utils.CacheUtils;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.AnonymousCustomer;
+import com.salesmanager.web.entity.shop.Breadcrumb;
+import com.salesmanager.web.entity.shop.BreadcrumbItem;
+import com.salesmanager.web.entity.shop.BreadcrumbItemType;
+import com.salesmanager.web.entity.shop.PageInformation;
+import com.salesmanager.web.utils.GeoLocationUtils;
+import com.salesmanager.web.utils.LabelUtils;
+
+
+
+
+
+
+/**
+ * Servlet Filter implementation class StoreFilter
+ */
+
+public class StoreFilter extends HandlerInterceptorAdapter {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(StoreFilter.class);
+
+ private final static String STORE_REQUEST_PARAMETER = "store";
+
+
+ @Autowired
+ private ContentService contentService;
+
+ @Autowired
+ private CategoryService categoryService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private MerchantStoreService merchantService;
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private MerchantConfigurationService merchantConfigurationService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private CacheUtils cache;
+
+ private final static String SERVICES_URL_PATTERN = "/services";
+ private final static String REFERENCE_URL_PATTERN = "/reference";
+
+
+
+ /**
+ * Default constructor.
+ */
+ public StoreFilter() {
+
+ }
+
+ public boolean preHandle(
+ HttpServletRequest request,
+ HttpServletResponse response,
+ Object handler) throws Exception {
+
+ request.setCharacterEncoding("UTF-8");
+
+ /**
+ * if url contains /services
+ * exit from here !
+ */
+
+ if(request.getRequestURL().toString().toLowerCase().contains(SERVICES_URL_PATTERN)
+ || request.getRequestURL().toString().toLowerCase().contains(REFERENCE_URL_PATTERN)
+ ) {
+ return true;
+ }
+
+ /*****
+ * where is my stuff
+ */
+ String currentPath = System.getProperty("user.dir");
+ //System.out.println("*** user.dir ***" + currentPath);
+ //LOGGER.debug("*** user.dir ***" + currentPath);
+
+ try {
+
+ /** merchant store **/
+ MerchantStore store = (MerchantStore)request.getSession().getAttribute(Constants.MERCHANT_STORE);
+
+ String storeCode = request.getParameter(STORE_REQUEST_PARAMETER);
+
+ if(!StringUtils.isBlank(storeCode)) {
+ if(store!=null) {
+ if(!store.getCode().equals(storeCode)) {
+ store = setMerchantStoreInSession(request, storeCode);
+ }
+ }else{ // when url sm-shop/shop is being loaded for first time store is null
+ store = setMerchantStoreInSession(request, storeCode);
+ }
+ }
+
+ if(store==null) {
+ store = setMerchantStoreInSession(request, MerchantStore.DEFAULT_STORE);
+ }
+
+ request.setAttribute(Constants.MERCHANT_STORE, store);
+
+ /** customer **/
+ Customer customer = (Customer)request.getSession().getAttribute(Constants.CUSTOMER);
+ if(customer!=null) {
+ if(customer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ request.getSession().removeAttribute(Constants.CUSTOMER);
+ }
+ request.setAttribute(Constants.CUSTOMER, customer);
+ }
+
+ if(customer==null) {
+
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ customer = customerService.getByNick(auth.getName());
+ if(customer!=null) {
+ request.setAttribute(Constants.CUSTOMER, customer);
+ }
+ }
+
+ }
+
+
+
+ AnonymousCustomer anonymousCustomer = (AnonymousCustomer)request.getSession().getAttribute(Constants.ANONYMOUS_CUSTOMER);
+ if(anonymousCustomer==null) {
+
+ Address address = null;
+ try {
+
+ String ipAddress = GeoLocationUtils.getClientIpAddress(request);
+ com.salesmanager.core.business.common.model.Address geoAddress = customerService.getCustomerAddress(store, ipAddress);
+ if(geoAddress!=null) {
+ address = new Address();
+ address.setCountry(geoAddress.getCountry());
+ address.setCity(geoAddress.getCity());
+ address.setZone(geoAddress.getZone());
+ address.setPostalCode(geoAddress.getPostalCode());
+ }
+ } catch(Exception ce) {
+ LOGGER.error("Cannot get geo ip component ", ce);
+ }
+
+ if(address==null) {
+ address = new Address();
+ address.setCountry(store.getCountry().getIsoCode());
+ if(store.getZone()!=null) {
+ address.setZone(store.getZone().getCode());
+ } else {
+ address.setStateProvince(store.getStorestateprovince());
+ }
+ address.setPostalCode(store.getStorepostalcode());
+ }
+
+ anonymousCustomer = new AnonymousCustomer();
+ anonymousCustomer.setBilling(address);
+ request.getSession().setAttribute(Constants.ANONYMOUS_CUSTOMER, anonymousCustomer);
+ } else {
+ request.setAttribute(Constants.ANONYMOUS_CUSTOMER, anonymousCustomer);
+ }
+
+
+
+
+ /** language & locale **/
+ Language language = (Language) request.getSession().getAttribute(Constants.LANGUAGE);
+ if(language==null) {
+
+ //TODO get the Locale from Spring API, is it simply request.getLocale()
+ //if so then based on the Locale language locale.getLanguage() get the appropriate Language
+ //object as represented below
+
+ language = languageService.getByCode(Constants.DEFAULT_LANGUAGE);
+ request.getSession().setAttribute(Constants.LANGUAGE, language);
+
+ //TODO store default language
+ }
+
+
+ request.setAttribute(Constants.LANGUAGE, language);
+ Locale locale = request.getLocale();
+
+ /** Breadcrumbs **/
+ setBreadcrumb(request,locale);
+
+
+ /**
+ * Get global objects
+ * Themes are built on a similar way displaying
+ * Header, Body and Footer
+ * Header and Footer are displayed on each page
+ * Some themes also contain side bars which may include
+ * similar emements
+ *
+ * Elements from Header :
+ * - CMS links
+ * - Customer
+ * - Mini shopping cart
+ * - Store name / logo
+ * - Top categories
+ * - Search
+ *
+ * Elements from Footer :
+ * - CMS links
+ * - Store address
+ * - Global payment information
+ * - Global shipping information
+ */
+
+
+ //get from the cache first
+ /**
+ * The cache for each object contains 2 objects, a Cache and a Missed-Cache
+ * Get objects from the cache
+ * If not null use those objects
+ * If null, get entry from missed-cache
+ * If missed-cache not null then nothing exist
+ * If missed-cache null, add missed-cache entry and load from the database
+ * If objects from database not null store in cache
+ */
+
+ /******* CMS Objects ********/
+ this.getContentObjects(store, language, request);
+
+ /******* CMS Page names **********/
+ this.getContentPageNames(store, language, request);
+
+ /******* Top Categories ********/
+ this.getTopCategories(store, language, request);
+
+ /******* Default metatags *******/
+
+ /**
+ * Title
+ * Description
+ * Keywords
+ */
+
+ PageInformation pageInformation = new PageInformation();
+ pageInformation.setPageTitle(store.getStorename());
+ pageInformation.setPageDescription(store.getStorename());
+ pageInformation.setPageKeywords(store.getStorename());
+
+
+ @SuppressWarnings("unchecked")
+ Map<String, List<Content>> contents = (Map<String, List<Content>>)request.getAttribute(Constants.REQUEST_CONTENT_OBJECTS);
+
+ if(contents!=null) {
+ for(String key : contents.keySet()) {
+ List<Content> contentsList = contents.get(key);
+ for(Content content : contentsList) {
+ if(content.getCode().equals(Constants.CONTENT_LANDING_PAGE)) {
+
+ List<ContentDescription> descriptions = content.getDescriptions();
+ for(ContentDescription contentDescription : descriptions) {
+ if(contentDescription.getLanguage().getCode().equals(language.getCode())) {
+ pageInformation.setPageTitle(contentDescription.getName());
+ pageInformation.setPageDescription(contentDescription.getMetatagDescription());
+ pageInformation.setPageKeywords(contentDescription.getMetatagKeywords());
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ request.setAttribute(Constants.REQUEST_PAGE_INFORMATION, pageInformation);
+
+
+ /******* Configuration objects *******/
+
+ /**
+ * SHOP configuration type
+ * Should contain
+ * - Different configuration flags
+ * - Google analytics
+ * - Facebook page
+ * - Twitter handle
+ * - Show customer login
+ * - ...
+ */
+
+ this.getMerchantConfigurations(store,request);
+
+ /******* Shopping Cart *********/
+
+ String shoppingCarCode = (String)request.getSession().getAttribute(Constants.SHOPPING_CART);
+ if(shoppingCarCode!=null) {
+ request.setAttribute(Constants.REQUEST_SHOPPING_CART, shoppingCarCode);
+ }
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error in StoreFilter",e);
+ }
+
+ return true;
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private void getMerchantConfigurations(MerchantStore store, HttpServletRequest request) throws Exception {
+
+
+
+ StringBuilder configKey = new StringBuilder();
+ configKey
+ .append(store.getId())
+ .append("_")
+ .append(Constants.CONFIG_CACHE_KEY);
+
+
+ StringBuilder configKeyMissed = new StringBuilder();
+ configKeyMissed
+ .append(configKey.toString())
+ .append(Constants.MISSED_CACHE_KEY);
+
+ Map<String, Object> configs = null;
+
+ if(store.isUseCache()) {
+
+ //get from the cache
+ configs = (Map<String, Object>) cache.getFromCache(configKey.toString());
+ if(configs==null) {
+ //get from missed cache
+ //Boolean missedContent = (Boolean)cache.getFromCache(configKeyMissed.toString());
+
+ //if( missedContent==null) {
+ configs = this.getConfigurations(store);
+ //put in cache
+
+ if(configs!=null) {
+ cache.putInCache(configs, configKey.toString());
+ } else {
+ //put in missed cache
+ //cache.putInCache(new Boolean(true), configKeyMissed.toString());
+ }
+ //}
+ }
+
+ } else {
+ configs = this.getConfigurations(store);
+ }
+
+
+ if(configs!=null && configs.size()>0) {
+ request.setAttribute(Constants.REQUEST_CONFIGS, configs);
+ }
+
+
+ }
+
+
+ @SuppressWarnings("unchecked")
+ private void getContentPageNames(MerchantStore store, Language language, HttpServletRequest request) throws Exception {
+
+
+ /**
+ * CMS links
+ * Those links are implemented as pages (Content)
+ * ContentDescription will provide attributes name for the
+ * label to be displayed and seUrl for the friendly url page
+ */
+
+ //build the key
+ /**
+ * The cache is kept as a Map<String,Object>
+ * The key is <MERCHANT_ID>_CONTENTPAGELOCALE
+ * The value is a List of Content object
+ */
+
+ StringBuilder contentKey = new StringBuilder();
+ contentKey
+ .append(store.getId())
+ .append("_")
+ .append(Constants.CONTENT_PAGE_CACHE_KEY)
+ .append("-")
+ .append(language.getCode());
+
+ StringBuilder contentKeyMissed = new StringBuilder();
+ contentKeyMissed
+ .append(contentKey.toString())
+ .append(Constants.MISSED_CACHE_KEY);
+
+ Map<String, List<ContentDescription>> contents = null;
+
+ if(store.isUseCache()) {
+
+ //get from the cache
+ contents = (Map<String, List<ContentDescription>>) cache.getFromCache(contentKey.toString());
+
+
+ if(contents==null) {
+ //get from missed cache
+ //Boolean missedContent = (Boolean)cache.getFromCache(contentKeyMissed.toString());
+
+
+ //if(missedContent==null) {
+
+ contents = this.getContentPagesNames(store, language);
+
+ if(contents!=null) {
+ //put in cache
+ cache.putInCache(contents, contentKey.toString());
+
+ } else {
+ //put in missed cache
+ //cache.putInCache(new Boolean(true), contentKeyMissed.toString());
+ }
+ //}
+ }
+ } else {
+ contents = this.getContentPagesNames(store, language);
+ }
+
+
+ if(contents!=null && contents.size()>0) {
+ List<ContentDescription> descriptions = contents.get(contentKey.toString());
+
+ if(descriptions!=null) {
+ request.setAttribute(Constants.REQUEST_CONTENT_PAGE_OBJECTS, descriptions);
+ }
+ }
+ }
+
+ @SuppressWarnings({ "unchecked"})
+ private void getContentObjects(MerchantStore store, Language language, HttpServletRequest request) throws Exception {
+
+
+ /**
+ * CMS links
+ * Those links are implemented as pages (Content)
+ * ContentDescription will provide attributes name for the
+ * label to be displayed and seUrl for the friendly url page
+ */
+
+ //build the key
+ /**
+ * The cache is kept as a Map<String,Object>
+ * The key is CONTENT_<MERCHANT_ID>_<LOCALE>
+ * The value is a List of Content object
+ */
+
+ StringBuilder contentKey = new StringBuilder();
+ contentKey
+ .append(store.getId())
+ .append("_")
+ .append(Constants.CONTENT_CACHE_KEY)
+ .append("-")
+ .append(language.getCode());
+
+ StringBuilder contentKeyMissed = new StringBuilder();
+ contentKeyMissed
+ .append(contentKey.toString())
+ .append(Constants.MISSED_CACHE_KEY);
+
+ Map<String, List<Content>> contents = null;
+
+ if(store.isUseCache()) {
+
+ //get from the cache
+ contents = (Map<String, List<Content>>) cache.getFromCache(contentKey.toString());
+
+
+ if(contents==null) {
+
+ //get from missed cache
+ //Boolean missedContent = (Boolean)cache.getFromCache(contentKeyMissed.toString());
+
+
+ //if(missedContent==null) {
+
+ contents = this.getContent(store, language);
+ if(contents!=null && contents.size()>0) {
+ //put in cache
+ cache.putInCache(contents, contentKey.toString());
+ } else {
+ //put in missed cache
+ //cache.putInCache(new Boolean(true), contentKeyMissed.toString());
+ }
+ //}
+
+ }
+ } else {
+
+ contents = this.getContent(store, language);
+
+ }
+
+
+
+ if(contents!=null && contents.size()>0) {
+
+ request.setAttribute(Constants.REQUEST_CONTENT_OBJECTS, contents);
+
+
+ }
+
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private void getTopCategories(MerchantStore store, Language language, HttpServletRequest request) throws Exception {
+
+
+ /**
+ * Top categories
+ * Top categories are implemented as Category entity
+ * CategoryDescription will provide attributes name for the
+ * label to be displayed and seUrl for the friendly url page
+ */
+
+ //build the key
+ /**
+ * The categories is kept as a Map<String,Object>
+ * The key is <MERCHANT_ID>_CATEGORYLOCALE
+ * The value is a List of Category object
+ */
+
+ StringBuilder categoriesKey = new StringBuilder();
+ categoriesKey
+ .append(store.getId())
+ .append("_")
+ .append(Constants.CATEGORIES_CACHE_KEY)
+ .append("-")
+ .append(language.getCode());
+
+ StringBuilder categoriesKeyMissed = new StringBuilder();
+ categoriesKeyMissed
+ .append(categoriesKey.toString())
+ .append(Constants.MISSED_CACHE_KEY);
+
+ Map<String, List<Category>> objects = null;
+
+ if(store.isUseCache()) {
+
+ //get from the cache
+ objects = (Map<String, List<Category>>) cache.getFromCache(categoriesKey.toString());
+
+
+ if(objects==null) {
+ //Boolean missedContent = (Boolean)cache.getFromCache(categoriesKeyMissed.toString());
+
+ //if(missedContent==null) {
+
+ //Get top categories from the database
+ objects = this.getCategories(store, language);
+
+ if(objects!=null) {
+ //put in cache
+ cache.putInCache(objects, categoriesKey.toString());
+ } else {
+ //put in missed cache
+ //cache.putInCache(new Boolean(true), categoriesKeyMissed.toString());
+ }
+
+ //}
+ }
+
+ } else {
+ objects = this.getCategories(store, language);
+ }
+
+ if(objects!=null && objects.size()>0) {
+
+
+ List<Category> categories = objects.get(categoriesKey.toString());
+
+ if(categories!=null) {
+ request.setAttribute(Constants.REQUEST_TOP_CATEGORIES, categories);
+ }
+
+
+ }
+
+ }
+
+
+ private Map<String, List<ContentDescription>> getContentPagesNames(MerchantStore store, Language language) throws Exception {
+
+
+ Map<String, List<ContentDescription>> contents = new ConcurrentHashMap<String, List<ContentDescription>>();
+
+ //Get boxes and sections from the database
+ List<ContentType> contentTypes = new ArrayList<ContentType>();
+ contentTypes.add(ContentType.PAGE);
+
+
+ List<ContentDescription> contentPages = contentService.listNameByType(contentTypes, store, language);
+
+ if(contentPages!=null && contentPages.size()>0) {
+
+ //create a Map<String,List<Content>
+ for(ContentDescription content : contentPages) {
+
+
+ Language lang = language;
+ String key = new StringBuilder()
+ .append(store.getId())
+ .append("_")
+ .append(Constants.CONTENT_PAGE_CACHE_KEY)
+ .append("-")
+ .append(lang.getCode()).toString();
+ List<ContentDescription> contentList = null;
+ if(contents==null) {
+ contents = new HashMap<String, List<ContentDescription>>();
+ }
+ if(!contents.containsKey(key)) {
+ contentList = new ArrayList<ContentDescription>();
+
+ contents.put(key, contentList);
+ }
+ contentList.add(content);
+ }
+ }
+ return contents;
+ }
+
+ private Map<String, List<Content>> getContent(MerchantStore store, Language language) throws Exception {
+
+
+ Map<String, List<Content>> contents = new ConcurrentHashMap<String, List<Content>>();
+
+ //Get boxes and sections from the database
+ List<ContentType> contentTypes = new ArrayList<ContentType>();
+ contentTypes.add(ContentType.BOX);
+ contentTypes.add(ContentType.SECTION);
+
+ List<Content> contentPages = contentService.listByType(contentTypes, store, language);
+
+ if(contentPages!=null && contentPages.size()>0) {
+
+ //create a Map<String,List<Content>
+ for(Content content : contentPages) {
+ if(content.isVisible()) {
+ List<ContentDescription> descriptions = content.getDescriptions();
+ for(ContentDescription contentDescription : descriptions) {
+ Language lang = contentDescription.getLanguage();
+ String key = new StringBuilder()
+ .append(store.getId())
+ .append("_")
+ .append(Constants.CONTENT_CACHE_KEY)
+ .append("-")
+ .append(lang.getCode()).toString();
+ List<Content> contentList = null;
+ if(contents==null) {
+ contents = new HashMap<String, List<Content>>();
+ }
+ if(!contents.containsKey(key)) {
+ contentList = new ArrayList<Content>();
+
+ contents.put(key, contentList);
+ }
+ contentList.add(content);
+ }
+ }
+ }
+ }
+ return contents;
+ }
+
+ private Map<String, List<Category>> getCategories(MerchantStore store, Language language) throws Exception {
+
+ Map<String, List<Category>> objects = new ConcurrentHashMap<String, List<Category>>();
+
+
+ List<Category> categories = categoryService.listByDepth(store, 0, language);
+
+ if(categories!=null && categories.size()>0) {
+
+ //create a Map<String,List<Content>
+ for(Category category : categories) {
+ if(category.isVisible()) {
+ List<CategoryDescription> descriptions = category.getDescriptions();
+ for(CategoryDescription description : descriptions) {
+ Language lang = description.getLanguage();
+ String key = new StringBuilder()
+ .append(store.getId())
+ .append("_")
+ .append(Constants.CATEGORIES_CACHE_KEY)
+ .append("-")
+ .append(lang.getCode()).toString();
+
+ List<Category> cacheCategories = null;
+ if(objects==null) {
+ objects = new HashMap<String, List<Category>>();
+ }
+ if(!objects.containsKey(key)) {
+ cacheCategories = new ArrayList<Category>();
+
+ objects.put(key, cacheCategories);
+ } else {
+ cacheCategories = objects.get(key.toString());
+ }
+ cacheCategories.add(category);
+ }
+ }
+ }
+
+
+ }
+ return objects;
+ }
+
+ private Map<String,Object> getConfigurations(MerchantStore store) {
+
+ Map<String,Object> configs = null;
+ try {
+
+ List<MerchantConfiguration> configurations = merchantConfigurationService.listByType(MerchantConfigurationType.CONFIG, store);
+
+ if(!CollectionUtils.isEmpty(configurations) && configs==null) {
+ configs = new HashMap<String,Object>();
+ }
+
+
+ for(MerchantConfiguration configuration : configurations) {
+ configs.put(configuration.getKey(), configuration.getValue());
+ }
+
+ //get MerchantConfig
+ MerchantConfig merchantConfig = merchantConfigurationService.getMerchantConfig(store);
+ if(merchantConfig!=null) {
+ if(configs==null) {
+ configs = new HashMap<String,Object>();
+ }
+
+ ObjectMapper m = new ObjectMapper();
+ @SuppressWarnings("unchecked")
+ Map<String,Object> props = m.convertValue(merchantConfig, Map.class);
+
+ for(String key : props.keySet()) {
+ configs.put(key, props.get(key));
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.error("Exception while getting configurations",e);
+ }
+
+ return configs;
+
+ }
+
+ private void setBreadcrumb(HttpServletRequest request, Locale locale) {
+
+
+
+ try {
+
+ //breadcrumb
+ Breadcrumb breadCrumb = (Breadcrumb) request.getSession().getAttribute(Constants.BREADCRUMB);
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+ if(breadCrumb==null) {
+ breadCrumb = new Breadcrumb();
+ breadCrumb.setLanguage(language);
+ BreadcrumbItem item = this.getDefaultBreadcrumbItem(language, locale);
+ breadCrumb.getBreadCrumbs().add(item);
+ } else {
+
+ //check language
+ if(language.getCode().equals(breadCrumb.getLanguage().getCode())) {
+
+ //rebuild using the appropriate language
+ List<BreadcrumbItem> items = new ArrayList<BreadcrumbItem>();
+ for(BreadcrumbItem item : breadCrumb.getBreadCrumbs()) {
+
+ if(item.getItemType().name().equals(BreadcrumbItemType.HOME)) {
+ BreadcrumbItem homeItem = this.getDefaultBreadcrumbItem(language, locale);
+ homeItem.setItemType(BreadcrumbItemType.HOME);
+ homeItem.setLabel(messages.getMessage(Constants.HOME_MENU_KEY, locale));
+ homeItem.setUrl(Constants.HOME_URL);
+ items.add(homeItem);
+ } else if(item.getItemType().name().equals(BreadcrumbItemType.PRODUCT)) {
+ Product product = productService.getProductForLocale(item.getId(), language, locale);
+ if(product!=null) {
+ BreadcrumbItem productItem = new BreadcrumbItem();
+ productItem.setId(product.getId());
+ productItem.setItemType(BreadcrumbItemType.PRODUCT);
+ productItem.setLabel(product.getProductDescription().getName());
+ productItem.setUrl(product.getProductDescription().getSeUrl());
+ items.add(productItem);
+ }
+ }else if(item.getItemType().name().equals(BreadcrumbItemType.CATEGORY)) {
+ Category category = categoryService.getByLanguage(item.getId(), language);
+ if(category!=null) {
+ BreadcrumbItem categoryItem = new BreadcrumbItem();
+ categoryItem.setId(category.getId());
+ categoryItem.setItemType(BreadcrumbItemType.CATEGORY);
+ categoryItem.setLabel(category.getDescription().getName());
+ categoryItem.setUrl(category.getDescription().getSeUrl());
+ items.add(categoryItem);
+ }
+ }else if(item.getItemType().name().equals(BreadcrumbItemType.PAGE)) {
+ Content content = contentService.getByLanguage(item.getId(), language);
+ if(content!=null) {
+ BreadcrumbItem contentItem = new BreadcrumbItem();
+ contentItem.setId(content.getId());
+ contentItem.setItemType(BreadcrumbItemType.PAGE);
+ contentItem.setLabel(content.getDescription().getName());
+ contentItem.setUrl(content.getDescription().getSeUrl());
+ items.add(contentItem);
+ }
+ }
+
+ }
+
+ breadCrumb = new Breadcrumb();
+ breadCrumb.setLanguage(language);
+ breadCrumb.setBreadCrumbs(items);
+
+ }
+
+ }
+
+ request.getSession().setAttribute(Constants.BREADCRUMB, breadCrumb);
+ request.setAttribute(Constants.BREADCRUMB, breadCrumb);
+
+ } catch (Exception e) {
+ LOGGER.error("Error while building breadcrumbs",e);
+ }
+
+ }
+
+ private BreadcrumbItem getDefaultBreadcrumbItem(Language language, Locale locale) {
+
+ //set home page item
+ BreadcrumbItem item = new BreadcrumbItem();
+ item.setItemType(BreadcrumbItemType.HOME);
+ item.setLabel(messages.getMessage(Constants.HOME_MENU_KEY, locale));
+ item.setUrl(Constants.HOME_URL);
+ return item;
+
+ }
+
+ /**
+ * Sets a MerchantStore with the given storeCode in the session.
+ * @param request
+ * @param storeCode The storeCode of the Merchant.
+ * @return the MerchantStore inserted in the session.
+ * @throws Exception
+ */
+ private MerchantStore setMerchantStoreInSession(HttpServletRequest request, String storeCode) throws Exception{
+ if(storeCode == null || request == null)
+ return null;
+ MerchantStore store = merchantService.getByCode(storeCode);
+ if(store!=null) {
+ request.getSession().setAttribute(Constants.MERCHANT_STORE, store);
+ }
+ return store;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/images/ImagesController.java b/sm-shop/src/main/java/com/salesmanager/web/images/ImagesController.java
new file mode 100644
index 0000000..8b7905f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/images/ImagesController.java
@@ -0,0 +1,106 @@
+package com.salesmanager.web.images;
+
+import java.io.IOException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.model.file.ProductImageSize;
+import com.salesmanager.core.business.catalog.product.service.image.ProductImageService;
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.content.model.OutputContentFile;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+
+@Controller
+public class ImagesController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ImagesController.class);
+
+
+
+ @Autowired
+ private ContentService contentService;
+
+ @Autowired
+ private ProductImageService productImageService;
+
+ /**
+ * Logo, content image
+ * @param storeId
+ * @param imageType (LOGO, CONTENT, IMAGE)
+ * @param imageName
+ * @return
+ * @throws IOException
+ * @throws ServiceException
+ */
+ @RequestMapping("/static/{storeCode}/{imageType}/{imageName}.{extension}")
+ public @ResponseBody byte[] printImage(@PathVariable final String storeCode, @PathVariable final String imageType, @PathVariable final String imageName, @PathVariable final String extension) throws IOException, ServiceException {
+
+ // example -> /static/mystore/CONTENT/myImage.png
+
+ FileContentType imgType = null;
+
+ if(FileContentType.LOGO.name().equals(imageType)) {
+ imgType = FileContentType.LOGO;
+ }
+
+ if(FileContentType.IMAGE.name().equals(imageType)) {
+ imgType = FileContentType.IMAGE;
+ }
+
+ if(FileContentType.PROPERTY.name().equals(imageType)) {
+ imgType = FileContentType.PROPERTY;
+ }
+
+ OutputContentFile image =contentService.getContentFile(storeCode, imgType, new StringBuilder().append(imageName).append(".").append(extension).toString());
+
+
+ if(image!=null) {
+ return image.getFile().toByteArray();
+ } else {
+ //empty image placeholder
+ return null;
+ }
+
+ }
+
+
+ @RequestMapping("/static/{storeCode}/{imageType}/{productCode}/{imageName}.{extension}")
+ public @ResponseBody byte[] printImage(@PathVariable final String storeCode, @PathVariable final String productCode, @PathVariable final String imageType, @PathVariable final String imageName, @PathVariable final String extension) throws IOException {
+
+ // product image
+ // example small product image -> /static/1/PRODUCT/120/product1.jpg
+
+ // example large product image -> /static/1/PRODUCTLG/120/product1.jpg
+
+
+ ProductImageSize size = ProductImageSize.SMALL;
+
+ if(imageType.equals(FileContentType.PRODUCTLG.name())) {
+ size = ProductImageSize.LARGE;
+ }
+
+
+
+ OutputContentFile image = null;
+ try {
+ image = productImageService.getProductImage(storeCode, productCode, new StringBuilder().append(imageName).append(".").append(extension).toString(), size);
+ } catch (ServiceException e) {
+ LOGGER.error("Cannot retrieve image " + imageName, e);
+ }
+ if(image!=null) {
+ return image.getFile().toByteArray();
+ } else {
+ //empty image placeholder
+ return null;
+ }
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/init/data/InitData.java b/sm-shop/src/main/java/com/salesmanager/web/init/data/InitData.java
new file mode 100644
index 0000000..3341882
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/init/data/InitData.java
@@ -0,0 +1,9 @@
+package com.salesmanager.web.init.data;
+
+import com.salesmanager.core.business.generic.exception.ServiceException;
+
+public interface InitData {
+
+ public void initInitialData() throws ServiceException;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/init/data/InitializationLoader.java b/sm-shop/src/main/java/com/salesmanager/web/init/data/InitializationLoader.java
new file mode 100644
index 0000000..face783
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/init/data/InitializationLoader.java
@@ -0,0 +1,228 @@
+package com.salesmanager.web.init.data;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.reference.init.service.InitializationDatabase;
+import com.salesmanager.core.business.system.model.SystemConfiguration;
+import com.salesmanager.core.business.system.service.SystemConfigurationService;
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.GroupType;
+import com.salesmanager.core.business.user.model.Permission;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.core.business.user.service.PermissionService;
+import com.salesmanager.core.constants.SystemConstants;
+import com.salesmanager.core.utils.CoreConfiguration;
+import com.salesmanager.web.admin.security.WebUserServices;
+import com.salesmanager.web.constants.ApplicationConstants;
+import com.salesmanager.web.utils.AppConfiguration;
+
+
+
+@Component
+public class InitializationLoader {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(InitializationLoader.class);
+
+ @Autowired
+ private AppConfiguration appConfiguration;
+
+
+ @Autowired
+ private InitializationDatabase initializationDatabase;
+
+ @Autowired
+ private com.salesmanager.web.init.data.InitData initData;
+
+ @Autowired
+ private SystemConfigurationService systemConfigurationService;
+
+ @Autowired
+ private WebUserServices userDetailsService;
+
+ @Autowired
+ protected PermissionService permissionService;
+
+ @Autowired
+ protected GroupService groupService;
+
+ @Autowired
+ private CoreConfiguration configuration;
+
+ @PostConstruct
+ public void init() {
+
+ try {
+
+ if (initializationDatabase.isEmpty()) {
+ LOGGER.info(String.format("%s : Shopizer database is empty, populate it....", "sm-shop"));
+
+ initializationDatabase.populate("sm-shop");
+
+
+
+ //security groups and permissions
+
+ Group gsuperadmin = new Group("SUPERADMIN");
+ gsuperadmin.setGroupType(GroupType.ADMIN);
+ Group gadmin = new Group("ADMIN");
+ gadmin.setGroupType(GroupType.ADMIN);
+ Group gcatalogue = new Group("ADMIN_CATALOGUE");
+ gcatalogue.setGroupType(GroupType.ADMIN);
+ Group gstore = new Group("ADMIN_STORE");
+ gstore.setGroupType(GroupType.ADMIN);
+ Group gorder = new Group("ADMIN_ORDER");
+ gorder.setGroupType(GroupType.ADMIN);
+ Group gcontent = new Group("ADMIN_CONTENT");
+ gcontent.setGroupType(GroupType.ADMIN);
+
+ groupService.create(gsuperadmin);
+ groupService.create(gadmin);
+ groupService.create(gcatalogue);
+ groupService.create(gstore);
+ groupService.create(gorder);
+ groupService.create(gcontent);
+
+ Permission storeadmin = new Permission("STORE_ADMIN");//Administrator of the store
+ storeadmin.getGroups().add(gsuperadmin);
+ storeadmin.getGroups().add(gadmin);
+ permissionService.create(storeadmin);
+
+ Permission superadmin = new Permission("SUPERADMIN");
+ superadmin.getGroups().add(gsuperadmin);
+ permissionService.create(superadmin);
+
+ Permission admin = new Permission("ADMIN");
+ admin.getGroups().add(gsuperadmin);
+ admin.getGroups().add(gadmin);
+ permissionService.create(admin);
+
+ Permission auth = new Permission("AUTH");//Authenticated
+ auth.getGroups().add(gsuperadmin);
+ auth.getGroups().add(gadmin);
+ auth.getGroups().add(gcatalogue);
+ auth.getGroups().add(gstore);
+ auth.getGroups().add(gorder);
+ permissionService.create(auth);
+
+
+ Permission products = new Permission("PRODUCTS");
+ products.getGroups().add(gsuperadmin);
+ products.getGroups().add(gadmin);
+ products.getGroups().add(gcatalogue);
+ permissionService.create(products);
+
+
+ Permission order = new Permission("ORDER");
+ order.getGroups().add(gsuperadmin);
+ order.getGroups().add(gorder);
+ order.getGroups().add(gadmin);
+ permissionService.create(order);
+
+ Permission content = new Permission("CONTENT");
+ content.getGroups().add(gsuperadmin);
+ content.getGroups().add(gadmin);
+ content.getGroups().add(gcontent);
+ permissionService.create(content);
+
+
+
+ Permission pstore = new Permission("STORE");
+ pstore.getGroups().add(gsuperadmin);
+ pstore.getGroups().add(gstore);
+ pstore.getGroups().add(gadmin);
+ permissionService.create(pstore);
+
+ Permission tax = new Permission("TAX");
+ tax.getGroups().add(gsuperadmin);
+ tax.getGroups().add(gstore);
+ tax.getGroups().add(gadmin);
+ permissionService.create(tax);
+
+
+ Permission payment = new Permission("PAYMENT");
+ payment.getGroups().add(gsuperadmin);
+ payment.getGroups().add(gstore);
+ payment.getGroups().add(gadmin);
+ permissionService.create(payment);
+
+ Permission customer = new Permission("CUSTOMER");
+ customer.getGroups().add(gsuperadmin);
+ customer.getGroups().add(gstore);
+ customer.getGroups().add(gadmin);
+ permissionService.create(customer);
+
+
+ Permission shipping = new Permission("SHIPPING");
+ shipping.getGroups().add(gsuperadmin);
+ shipping.getGroups().add(gadmin);
+ shipping.getGroups().add(gstore);
+
+ permissionService.create(shipping);
+
+
+
+ userDetailsService.createDefaultAdmin();
+
+
+ //load customer groups and permissions
+ Group gcustomer = new Group("CUSTOMER");
+ gcustomer.setGroupType(GroupType.CUSTOMER);
+
+ groupService.create(gcustomer);
+
+ Permission gcustomerpermission = new Permission("AUTH_CUSTOMER");
+ gcustomerpermission.getGroups().add(gcustomer);
+ permissionService.create(gcustomerpermission);
+
+ loadData();
+
+ }
+
+ } catch (Exception e) {
+ LOGGER.error("Error in the init method",e);
+ }
+
+
+
+ }
+
+ private void loadData() throws ServiceException {
+
+ String loadTestData = configuration.getProperty(ApplicationConstants.POPULATE_TEST_DATA);
+ boolean loadData = !StringUtils.isBlank(loadTestData) && loadTestData.equals(SystemConstants.CONFIG_VALUE_TRUE);
+
+
+ if(loadData) {
+
+ SystemConfiguration configuration = systemConfigurationService.getByKey(ApplicationConstants.TEST_DATA_LOADED);
+
+ if(configuration!=null) {
+ if(configuration.getKey().equals(ApplicationConstants.TEST_DATA_LOADED)) {
+ if(configuration.getValue().equals(SystemConstants.CONFIG_VALUE_TRUE)) {
+ return;
+ }
+ }
+ }
+
+ initData.initInitialData();
+
+ configuration = new SystemConfiguration();
+ configuration.getAuditSection().setModifiedBy(SystemConstants.SYSTEM_USER);
+ configuration.setKey(ApplicationConstants.TEST_DATA_LOADED);
+ configuration.setValue(SystemConstants.CONFIG_VALUE_TRUE);
+ systemConfigurationService.create(configuration);
+
+
+ }
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/init/data/InitStoreData.java b/sm-shop/src/main/java/com/salesmanager/web/init/data/InitStoreData.java
new file mode 100644
index 0000000..886a6d4
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/init/data/InitStoreData.java
@@ -0,0 +1,960 @@
+package com.salesmanager.web.init.data;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.stereotype.Component;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.model.CategoryDescription;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.availability.ProductAvailability;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.model.image.ProductImage;
+import com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer;
+import com.salesmanager.core.business.catalog.product.model.manufacturer.ManufacturerDescription;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPrice;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPriceDescription;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationship;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationshipType;
+import com.salesmanager.core.business.catalog.product.model.type.ProductType;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionValueService;
+import com.salesmanager.core.business.catalog.product.service.availability.ProductAvailabilityService;
+import com.salesmanager.core.business.catalog.product.service.image.ProductImageService;
+import com.salesmanager.core.business.catalog.product.service.manufacturer.ManufacturerService;
+import com.salesmanager.core.business.catalog.product.service.price.ProductPriceService;
+import com.salesmanager.core.business.catalog.product.service.relationship.ProductRelationshipService;
+import com.salesmanager.core.business.catalog.product.service.type.ProductTypeService;
+import com.salesmanager.core.business.common.model.Billing;
+import com.salesmanager.core.business.common.model.Delivery;
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.content.model.ImageContentFile;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.model.CustomerGender;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.OrderTotal;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProduct;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductDownload;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductPrice;
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatus;
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatusHistory;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.payments.model.PaymentType;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.currency.model.Currency;
+import com.salesmanager.core.business.reference.currency.service.CurrencyService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.GroupType;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.LocaleUtils;
+
+@Component
+public class InitStoreData implements InitData {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(InitStoreData.class);
+
+ @Autowired
+ protected ProductService productService;
+
+
+ @Autowired
+ protected ProductPriceService productPriceService;
+
+ @Autowired
+ protected ProductAttributeService productAttributeService;
+
+ @Autowired
+ protected ProductOptionService productOptionService;
+
+ @Autowired
+ protected ProductOptionValueService productOptionValueService;
+
+ @Autowired
+ protected ProductAvailabilityService productAvailabilityService;
+
+ @Autowired
+ protected ProductImageService productImageService;
+
+ @Autowired
+ protected CategoryService categoryService;
+
+ @Autowired
+ protected MerchantStoreService merchantService;
+
+ @Autowired
+ protected ProductTypeService productTypeService;
+
+ @Autowired
+ protected LanguageService languageService;
+
+ @Autowired
+ protected CountryService countryService;
+
+ @Autowired
+ protected ZoneService zoneService;
+
+ @Autowired
+ protected CustomerService customerService;
+
+ @Autowired
+ protected ManufacturerService manufacturerService;
+
+ @Autowired
+ protected CurrencyService currencyService;
+
+ @Autowired
+ protected OrderService orderService;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+ @Autowired
+ protected GroupService groupService;
+
+ @Autowired
+ private ProductRelationshipService productRelationshipService;
+
+ public void initInitialData() throws ServiceException {
+
+
+ LOGGER.info("Starting the initialization of test data");
+ Date date = new Date(System.currentTimeMillis());
+
+ //2 languages by default
+ Language en = languageService.getByCode("en");
+ Language fr = languageService.getByCode("fr");
+
+ Country canada = countryService.getByCode("CA");
+ Zone zone = zoneService.getByCode("QC");
+
+ //create a merchant
+ MerchantStore store = merchantService.getMerchantStore(MerchantStore.DEFAULT_STORE);
+ ProductType generalType = productTypeService.getProductType(ProductType.GENERAL_TYPE);
+
+
+ Category book = new Category();
+ book.setMerchantStore(store);
+ book.setCode("computerbooks");
+ book.setVisible(true);
+
+ CategoryDescription bookEnglishDescription = new CategoryDescription();
+ bookEnglishDescription.setName("Computer Books");
+ bookEnglishDescription.setCategory(book);
+ bookEnglishDescription.setLanguage(en);
+ bookEnglishDescription.setSeUrl("computer-books");
+
+ CategoryDescription bookFrenchDescription = new CategoryDescription();
+ bookFrenchDescription.setName("Livres d'informatique");
+ bookFrenchDescription.setCategory(book);
+ bookFrenchDescription.setLanguage(fr);
+ bookFrenchDescription.setSeUrl("livres-informatiques");
+
+ List<CategoryDescription> descriptions = new ArrayList<CategoryDescription>();
+ descriptions.add(bookEnglishDescription);
+ descriptions.add(bookFrenchDescription);
+
+ book.setDescriptions(descriptions);
+
+ categoryService.create(book);
+
+ Category novs = new Category();
+ novs.setMerchantStore(store);
+ novs.setCode("novels");
+ novs.setVisible(false);
+
+ CategoryDescription novsEnglishDescription = new CategoryDescription();
+ novsEnglishDescription.setName("Novels");
+ novsEnglishDescription.setCategory(novs);
+ novsEnglishDescription.setLanguage(en);
+ novsEnglishDescription.setSeUrl("novels");
+
+ CategoryDescription novsFrenchDescription = new CategoryDescription();
+ novsFrenchDescription.setName("Romans");
+ novsFrenchDescription.setCategory(novs);
+ novsFrenchDescription.setLanguage(fr);
+ novsFrenchDescription.setSeUrl("romans");
+
+ List<CategoryDescription> descriptions2 = new ArrayList<CategoryDescription>();
+ descriptions2.add(novsEnglishDescription);
+ descriptions2.add(novsFrenchDescription);
+
+ novs.setDescriptions(descriptions2);
+
+ categoryService.create(novs);
+
+ Category tech = new Category();
+ tech.setMerchantStore(store);
+ tech.setCode("tech");
+
+ CategoryDescription techEnglishDescription = new CategoryDescription();
+ techEnglishDescription.setName("Technology");
+ techEnglishDescription.setCategory(tech);
+ techEnglishDescription.setLanguage(en);
+ techEnglishDescription.setSeUrl("technology");
+
+ CategoryDescription techFrenchDescription = new CategoryDescription();
+ techFrenchDescription.setName("Technologie");
+ techFrenchDescription.setCategory(tech);
+ techFrenchDescription.setLanguage(fr);
+ techFrenchDescription.setSeUrl("technologie");
+
+ List<CategoryDescription> descriptions4 = new ArrayList<CategoryDescription>();
+ descriptions4.add(techEnglishDescription);
+ descriptions4.add(techFrenchDescription);
+
+ tech.setDescriptions(descriptions4);
+
+ tech.setParent(book);
+
+ categoryService.create(tech);
+ categoryService.addChild(book, tech);
+
+ Category web = new Category();
+ web.setMerchantStore(store);
+ web.setCode("web");
+ web.setVisible(true);
+
+ CategoryDescription webEnglishDescription = new CategoryDescription();
+ webEnglishDescription.setName("Web");
+ webEnglishDescription.setCategory(web);
+ webEnglishDescription.setLanguage(en);
+ webEnglishDescription.setSeUrl("the-web");
+
+ CategoryDescription webFrenchDescription = new CategoryDescription();
+ webFrenchDescription.setName("Web");
+ webFrenchDescription.setCategory(web);
+ webFrenchDescription.setLanguage(fr);
+ webFrenchDescription.setSeUrl("le-web");
+
+ List<CategoryDescription> descriptions3 = new ArrayList<CategoryDescription>();
+ descriptions3.add(webEnglishDescription);
+ descriptions3.add(webFrenchDescription);
+
+ web.setDescriptions(descriptions3);
+
+ web.setParent(book);
+
+ categoryService.create(web);
+ categoryService.addChild(book, web);
+
+
+
+ Category fiction = new Category();
+ fiction.setMerchantStore(store);
+ fiction.setCode("fiction");
+ fiction.setVisible(true);
+
+ CategoryDescription fictionEnglishDescription = new CategoryDescription();
+ fictionEnglishDescription.setName("Fiction");
+ fictionEnglishDescription.setCategory(fiction);
+ fictionEnglishDescription.setLanguage(en);
+ fictionEnglishDescription.setSeUrl("fiction");
+
+ CategoryDescription fictionFrenchDescription = new CategoryDescription();
+ fictionFrenchDescription.setName("Sc Fiction");
+ fictionFrenchDescription.setCategory(fiction);
+ fictionFrenchDescription.setLanguage(fr);
+ fictionFrenchDescription.setSeUrl("fiction");
+
+ List<CategoryDescription> fictiondescriptions = new ArrayList<CategoryDescription>();
+ fictiondescriptions.add(fictionEnglishDescription);
+ fictiondescriptions.add(fictionFrenchDescription);
+
+ fiction.setDescriptions(fictiondescriptions);
+
+ fiction.setParent(novs);
+
+ categoryService.create(fiction);
+ categoryService.addChild(novs, fiction);
+
+
+ Category business = new Category();
+ business.setMerchantStore(store);
+ business.setCode("business");
+ business.setVisible(true);
+
+ CategoryDescription businessEnglishDescription = new CategoryDescription();
+ businessEnglishDescription.setName("Business");
+ businessEnglishDescription.setCategory(business);
+ businessEnglishDescription.setLanguage(en);
+ businessEnglishDescription.setSeUrl("business");
+
+ CategoryDescription businessFrenchDescription = new CategoryDescription();
+ businessFrenchDescription.setName("Affaires");
+ businessFrenchDescription.setCategory(business);
+ businessFrenchDescription.setLanguage(fr);
+ businessFrenchDescription.setSeUrl("affaires");
+
+ List<CategoryDescription> businessdescriptions = new ArrayList<CategoryDescription>();
+ businessdescriptions.add(businessEnglishDescription);
+ businessdescriptions.add(businessFrenchDescription);
+
+ business.setDescriptions(businessdescriptions);
+
+
+ categoryService.create(business);
+
+
+
+ Category cloud = new Category();
+ cloud.setMerchantStore(store);
+ cloud.setCode("cloud");
+ cloud.setVisible(true);
+
+ CategoryDescription cloudEnglishDescription = new CategoryDescription();
+ cloudEnglishDescription.setName("Cloud computing");
+ cloudEnglishDescription.setCategory(cloud);
+ cloudEnglishDescription.setLanguage(en);
+ cloudEnglishDescription.setSeUrl("cloud-computing");
+
+ CategoryDescription cloudFrenchDescription = new CategoryDescription();
+ cloudFrenchDescription.setName("Programmation pour le cloud");
+ cloudFrenchDescription.setCategory(cloud);
+ cloudFrenchDescription.setLanguage(fr);
+ cloudFrenchDescription.setSeUrl("programmation-cloud");
+
+ List<CategoryDescription> clouddescriptions = new ArrayList<CategoryDescription>();
+ clouddescriptions.add(cloudEnglishDescription);
+ clouddescriptions.add(cloudFrenchDescription);
+
+ cloud.setDescriptions(clouddescriptions);
+
+ cloud.setParent(tech);
+
+ categoryService.create(cloud);
+ categoryService.addChild(tech, cloud);
+
+ // Add products
+ // ProductType generalType = productTypeService.
+
+ Manufacturer oreilley = new Manufacturer();
+ oreilley.setMerchantStore(store);
+
+ ManufacturerDescription oreilleyd = new ManufacturerDescription();
+ oreilleyd.setLanguage(en);
+ oreilleyd.setName("O\'Reilley");
+ oreilleyd.setManufacturer(oreilley);
+ oreilley.getDescriptions().add(oreilleyd);
+
+ manufacturerService.create(oreilley);
+
+
+ Manufacturer sams = new Manufacturer();
+ sams.setMerchantStore(store);
+
+ ManufacturerDescription samsd = new ManufacturerDescription();
+ samsd.setLanguage(en);
+ samsd.setName("Sams");
+ samsd.setManufacturer(sams);
+ sams.getDescriptions().add(samsd);
+
+ manufacturerService.create(sams);
+
+ Manufacturer packt = new Manufacturer();
+ packt.setMerchantStore(store);
+
+ ManufacturerDescription packtd = new ManufacturerDescription();
+ packtd.setLanguage(en);
+ packtd.setName("Packt");
+ packtd.setManufacturer(packt);
+ packt.getDescriptions().add(packtd);
+
+ manufacturerService.create(packt);
+
+ Manufacturer manning = new Manufacturer();
+ manning.setMerchantStore(store);
+
+ ManufacturerDescription manningd = new ManufacturerDescription();
+ manningd.setLanguage(en);
+ manningd.setManufacturer(manning);
+ manningd.setName("Manning");
+ manning.getDescriptions().add(manningd);
+
+ manufacturerService.create(manning);
+
+ Manufacturer novells = new Manufacturer();
+ novells.setMerchantStore(store);
+
+ ManufacturerDescription novellsd = new ManufacturerDescription();
+ novellsd.setLanguage(en);
+ novellsd.setManufacturer(novells);
+ novellsd.setName("Novells publishing");
+ novells.getDescriptions().add(novellsd);
+
+ manufacturerService.create(novells);
+
+
+ // PRODUCT 1
+
+ Product product = new Product();
+ product.setProductHeight(new BigDecimal(10));
+ product.setProductLength(new BigDecimal(3));
+ product.setProductWidth(new BigDecimal(6));
+ product.setSku("TB12345");
+ product.setManufacturer(manning);
+ product.setType(generalType);
+ product.setMerchantStore(store);
+ product.setProductShipeable(true);
+
+ // Product description
+ ProductDescription description = new ProductDescription();
+ description.setName("Spring in Action");
+ description.setLanguage(en);
+ description.setSeUrl("Spring-in-Action");
+ description.setProduct(product);
+
+ product.getDescriptions().add(description);
+
+ product.getCategories().add(tech);
+ product.getCategories().add(web);
+
+
+ productService.create(product);
+
+ try {
+ InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("/demo/spring.png");
+ this.saveFile(inStream, "spring.png", product);
+ } catch(Exception e) {
+ LOGGER.error("Error while reading demo file spring.png",e);
+ }
+
+
+ // Availability
+ ProductAvailability availability = new ProductAvailability();
+ availability.setProductDateAvailable(date);
+ availability.setProductQuantity(100);
+ availability.setRegion("*");
+ availability.setProduct(product);// associate with product
+
+ productAvailabilityService.create(availability);
+
+ ProductPrice dprice = new ProductPrice();
+ dprice.setDefaultPrice(true);
+ dprice.setProductPriceAmount(new BigDecimal(39.99));
+ dprice.setProductAvailability(availability);
+
+ ProductPriceDescription dpd = new ProductPriceDescription();
+ dpd.setName("Base price");
+ dpd.setProductPrice(dprice);
+ dpd.setLanguage(en);
+
+ dprice.getDescriptions().add(dpd);
+
+ productPriceService.create(dprice);
+
+ // PRODUCT 2
+
+ Product product2 = new Product();
+ product2.setProductHeight(new BigDecimal(4));
+ product2.setProductLength(new BigDecimal(3));
+ product2.setProductWidth(new BigDecimal(1));
+ product2.setSku("TB2468");
+ product2.setManufacturer(packt);
+ product2.setType(generalType);
+ product2.setMerchantStore(store);
+ product2.setProductShipeable(true);
+
+ // Product description
+ description = new ProductDescription();
+ description.setName("Node Web Development");
+ description.setLanguage(en);
+ description.setProduct(product2);
+ description.setSeUrl("Node-Web-Development");
+
+ product2.getDescriptions().add(description);
+
+ product2.getCategories().add(tech);
+ product2.getCategories().add(web);
+
+ productService.create(product2);
+
+ try {
+ InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("/demo/node.jpg");
+ this.saveFile(inStream, "node.jpg", product2);
+ } catch(Exception e) {
+ LOGGER.error("Error while reading demo file node.jpg",e);
+ }
+
+ // Availability
+ ProductAvailability availability2 = new ProductAvailability();
+ availability2.setProductDateAvailable(date);
+ availability2.setProductQuantity(100);
+ availability2.setRegion("*");
+ availability2.setProduct(product2);// associate with product
+
+ productAvailabilityService.create(availability2);
+
+ ProductPrice dprice2 = new ProductPrice();
+ dprice2.setDefaultPrice(true);
+ dprice2.setProductPriceAmount(new BigDecimal(29.99));
+ dprice2.setProductAvailability(availability2);
+
+ dpd = new ProductPriceDescription();
+ dpd.setName("Base price");
+ dpd.setProductPrice(dprice2);
+ dpd.setLanguage(en);
+
+ dprice2.getDescriptions().add(dpd);
+
+ productPriceService.create(dprice2);
+
+ // PRODUCT 3
+
+ Product product3 = new Product();
+ product3.setProductHeight(new BigDecimal(4));
+ product3.setProductLength(new BigDecimal(3));
+ product3.setProductWidth(new BigDecimal(1));
+ product3.setSku("NB1111");
+ product3.setManufacturer(oreilley);
+ product3.setType(generalType);
+ product3.setMerchantStore(store);
+ product3.setProductShipeable(true);
+
+ // Product description
+ description = new ProductDescription();
+ description.setName("Programming for PAAS");
+ description.setLanguage(en);
+ description.setProduct(product3);
+ description.setSeUrl("programming-for-paas");
+
+ product3.getDescriptions().add(description);
+
+ product3.getCategories().add(cloud);
+ productService.create(product3);
+
+ // Availability
+ ProductAvailability availability3 = new ProductAvailability();
+ availability3.setProductDateAvailable(date);
+ availability3.setProductQuantity(100);
+ availability3.setRegion("*");
+ availability3.setProduct(product3);// associate with product
+
+ productAvailabilityService.create(availability3);
+
+ ProductPrice dprice3 = new ProductPrice();
+ dprice3.setDefaultPrice(true);
+ dprice3.setProductPriceAmount(new BigDecimal(19.99));
+ dprice3.setProductAvailability(availability3);
+
+ dpd = new ProductPriceDescription();
+ dpd.setName("Base price");
+ dpd.setProductPrice(dprice3);
+ dpd.setLanguage(en);
+
+ dprice3.getDescriptions().add(dpd);
+
+ productPriceService.create(dprice3);
+
+ try {
+ InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("/demo/paas.JPG");
+ this.saveFile(inStream, "paas.JPG", product3);
+ } catch(Exception e) {
+ LOGGER.error("Error while reading demo file paas.jpg",e);
+ }
+
+ // PRODUCT 4
+ Product product4 = new Product();
+ product4.setProductHeight(new BigDecimal(4));
+ product4.setProductLength(new BigDecimal(3));
+ product4.setProductWidth(new BigDecimal(1));
+ product4.setSku("SF333345");
+ product4.setManufacturer(sams);
+ product4.setType(generalType);
+ product4.setMerchantStore(store);
+ product4.setProductShipeable(true);
+
+ // Product description
+ description = new ProductDescription();
+ description.setName("Android development");
+ description.setLanguage(en);
+ description.setProduct(product4);
+ description.setSeUrl("android-application-development");
+
+ product4.getDescriptions().add(description);
+
+ product4.getCategories().add(tech);
+ productService.create(product4);
+
+ // Availability
+ ProductAvailability availability4 = new ProductAvailability();
+ availability4.setProductDateAvailable(date);
+ availability4.setProductQuantity(100);
+ availability4.setRegion("*");
+ availability4.setProduct(product4);// associate with product
+
+ productAvailabilityService.create(availability4);
+
+ ProductPrice dprice4 = new ProductPrice();
+ dprice4.setDefaultPrice(true);
+ dprice4.setProductPriceAmount(new BigDecimal(18.99));
+ dprice4.setProductAvailability(availability4);
+
+ dpd = new ProductPriceDescription();
+ dpd.setName("Base price");
+ dpd.setProductPrice(dprice4);
+ dpd.setLanguage(en);
+
+ dprice4.getDescriptions().add(dpd);
+
+ productPriceService.create(dprice4);
+
+ try {
+ InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("/demo/android.jpg");
+ this.saveFile(inStream, "android.jpg", product4);
+ } catch(Exception e) {
+ LOGGER.error("Error while reading demo file android.jpg",e);
+ }
+
+ // PRODUCT 5
+ Product product5 = new Product();
+ product5.setProductHeight(new BigDecimal(4));
+ product5.setProductLength(new BigDecimal(3));
+ product5.setProductWidth(new BigDecimal(1));
+ product5.setSku("SF333346");
+ product5.setManufacturer(packt);
+ product5.setType(generalType);
+ product5.setMerchantStore(store);
+ product5.setProductShipeable(true);
+
+ // Product description
+ description = new ProductDescription();
+ description.setName("Android 3.0 Cookbook");
+ description.setLanguage(en);
+ description.setProduct(product5);
+ description.setSeUrl("android-3-cookbook");
+
+ product5.getDescriptions().add(description);
+
+ product5.getCategories().add(tech);
+ productService.create(product5);
+
+ // Availability
+ ProductAvailability availability5 = new ProductAvailability();
+ availability5.setProductDateAvailable(date);
+ availability5.setProductQuantity(100);
+ availability5.setRegion("*");
+ availability5.setProduct(product5);// associate with product
+
+ productAvailabilityService.create(availability5);
+
+ ProductPrice dprice5 = new ProductPrice();
+ dprice5.setDefaultPrice(true);
+ dprice5.setProductPriceAmount(new BigDecimal(18.99));
+ dprice5.setProductAvailability(availability5);
+
+ dpd = new ProductPriceDescription();
+ dpd.setName("Base price");
+ dpd.setProductPrice(dprice5);
+ dpd.setLanguage(en);
+
+ dprice5.getDescriptions().add(dpd);
+
+ productPriceService.create(dprice5);
+
+ try {
+ InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("/demo/android2.jpg");
+ this.saveFile(inStream, "android2.jpg", product5);
+ } catch(Exception e) {
+ LOGGER.error("Error while reading demo file android2.jpg",e);
+ }
+
+ // PRODUCT 6
+
+ Product product6 = new Product();
+ product6.setProductHeight(new BigDecimal(4));
+ product6.setProductLength(new BigDecimal(3));
+ product6.setProductWidth(new BigDecimal(1));
+ product6.setSku("LL333444");
+ product6.setManufacturer(novells);
+ product6.setType(generalType);
+ product6.setMerchantStore(store);
+ product6.setProductShipeable(true);
+
+ // Product description
+ description = new ProductDescription();
+ description.setName("The Big Switch");
+ description.setLanguage(en);
+ description.setProduct(product6);
+ description.setSeUrl("the-big-switch");
+
+ product6.getDescriptions().add(description);
+
+ product6.getCategories().add(business);
+ productService.create(product6);
+
+ // Availability
+ ProductAvailability availability6 = new ProductAvailability();
+ availability6.setProductDateAvailable(date);
+ availability6.setProductQuantity(100);
+ availability6.setRegion("*");
+ availability6.setProduct(product6);// associate with product
+
+ productAvailabilityService.create(availability6);
+
+ ProductPrice dprice6 = new ProductPrice();
+ dprice6.setDefaultPrice(true);
+ dprice6.setProductPriceAmount(new BigDecimal(18.99));
+ dprice6.setProductAvailability(availability6);
+
+ dpd = new ProductPriceDescription();
+ dpd.setName("Base price");
+ dpd.setProductPrice(dprice6);
+ dpd.setLanguage(en);
+
+ dprice6.getDescriptions().add(dpd);
+
+ productPriceService.create(dprice6);
+
+ try {
+ InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("/demo/google.jpg");
+ this.saveFile(inStream, "google.jpg", product6);
+ } catch(Exception e) {
+ LOGGER.error("Error while reading demo file google.jpg",e);
+ }
+
+ //featured items
+
+ ProductRelationship relationship = new ProductRelationship();
+ relationship.setActive(true);
+ relationship.setCode(ProductRelationshipType.FEATURED_ITEM.name());
+ relationship.setStore(store);
+ relationship.setRelatedProduct(product);
+
+ productRelationshipService.saveOrUpdate(relationship);
+
+ relationship = new ProductRelationship();
+ relationship.setActive(true);
+ relationship.setCode(ProductRelationshipType.FEATURED_ITEM.name());
+ relationship.setStore(store);
+ relationship.setRelatedProduct(product6);
+
+ productRelationshipService.saveOrUpdate(relationship);
+
+
+ relationship = new ProductRelationship();
+ relationship.setActive(true);
+ relationship.setCode(ProductRelationshipType.FEATURED_ITEM.name());
+ relationship.setStore(store);
+ relationship.setRelatedProduct(product5);
+
+ productRelationshipService.saveOrUpdate(relationship);
+
+
+ relationship = new ProductRelationship();
+ relationship.setActive(true);
+ relationship.setCode(ProductRelationshipType.FEATURED_ITEM.name());
+ relationship.setStore(store);
+ relationship.setRelatedProduct(product2);
+
+ productRelationshipService.saveOrUpdate(relationship);
+
+
+ //Create a customer (user name[nick] : shopizer password : password)
+
+ Customer customer = new Customer();
+ customer.setMerchantStore(store);
+ customer.setEmailAddress("test@shopizer.com");
+ customer.setGender(CustomerGender.M);
+ customer.setAnonymous(false);
+ customer.setCompany("CSTI Consulting");
+ customer.setDateOfBirth(new Date());
+
+ customer.setDefaultLanguage(en);
+ customer.setNick("shopizer");
+
+ String password = passwordEncoder.encodePassword("password", null);
+ customer.setPassword(password);
+
+ List<Group> groups = groupService.listGroup(GroupType.CUSTOMER);
+
+
+ for(Group group : groups) {
+ if(group.getGroupName().equals(Constants.GROUP_CUSTOMER)) {
+ customer.getGroups().add(group);
+ }
+ }
+
+ Delivery delivery = new Delivery();
+ delivery.setAddress("358 Du Languadoc");
+ delivery.setCity( "Boucherville" );
+ delivery.setCountry(canada);
+// delivery.setCountryCode(canada.getIsoCode());
+ delivery.setFirstName("Leonardo" );
+ delivery.setLastName("DiCaprio" );
+ delivery.setPostalCode("J4B-8J9" );
+ delivery.setZone(zone);
+
+ Billing billing = new Billing();
+ billing.setAddress("358 Du Languadoc");
+ billing.setCity("Boucherville");
+ billing.setCompany("CSTI Consulting");
+ billing.setCountry(canada);
+// billing.setCountryCode(canada.getIsoCode());
+ billing.setFirstName("Leonardo" );
+ billing.setLastName("DiCaprio" );
+ billing.setPostalCode("J4B-8J9");
+ billing.setZone(zone);
+
+ customer.setBilling(billing);
+ customer.setDelivery(delivery);
+ customerService.create(customer);
+
+ Currency currency = currencyService.getByCode("CAD");
+
+ OrderStatusHistory orderStatusHistory = new OrderStatusHistory();
+
+ //create an order
+
+ Order order = new Order();
+ order.setDatePurchased(new Date());
+ order.setCurrency(currency);
+ order.setLastModified(new Date());
+ order.setBilling(billing);
+
+
+ order.setLocale(LocaleUtils.getLocale(store));
+
+ order.setCurrencyValue(new BigDecimal(0.98));//compared to based currency (not necessary)
+ order.setCustomerId(customer.getId());
+ order.setBilling(billing);
+ order.setDelivery(delivery);
+ order.setCustomerEmailAddress("leo@shopizer.com");
+ order.setDelivery(delivery);
+ order.setIpAddress("ipAddress" );
+ order.setMerchant(store);
+ order.setOrderDateFinished(new Date());//committed date
+
+ orderStatusHistory.setComments("We received your order");
+ orderStatusHistory.setCustomerNotified(1);
+ orderStatusHistory.setStatus(OrderStatus.ORDERED);
+ orderStatusHistory.setDateAdded(new Date() );
+ orderStatusHistory.setOrder(order);
+ order.getOrderHistory().add( orderStatusHistory );
+
+
+ order.setPaymentType(PaymentType.PAYPAL);
+ order.setPaymentModuleCode("paypal");
+ order.setStatus( OrderStatus.DELIVERED);
+ order.setTotal(new BigDecimal(23.99));
+
+
+ //OrderProductDownload - Digital download
+ OrderProductDownload orderProductDownload = new OrderProductDownload();
+ orderProductDownload.setDownloadCount(1);
+ orderProductDownload.setMaxdays(31);
+ orderProductDownload.setOrderProductFilename("Your digital file name");
+
+ //OrderProductPrice
+ OrderProductPrice oproductprice = new OrderProductPrice();
+ oproductprice.setDefaultPrice(true);
+ oproductprice.setProductPrice(new BigDecimal(19.99) );
+ oproductprice.setProductPriceCode("baseprice" );
+ oproductprice.setProductPriceName("Base Price" );
+ //oproductprice.setProductPriceSpecialAmount(new BigDecimal(13.99) );
+
+
+ //OrderProduct
+ OrderProduct oproduct = new OrderProduct();
+ oproduct.getDownloads().add( orderProductDownload);
+ oproduct.setOneTimeCharge( new BigDecimal(19.99) );
+ oproduct.setOrder(order);
+ oproduct.setProductName( "Product name" );
+ oproduct.setProductQuantity(1);
+ oproduct.setSku("TB12345" );
+ oproduct.getPrices().add(oproductprice ) ;
+
+ oproductprice.setOrderProduct(oproduct);
+ orderProductDownload.setOrderProduct(oproduct);
+ order.getOrderProducts().add(oproduct);
+
+ //OrderTotal
+ OrderTotal subtotal = new OrderTotal();
+ subtotal.setModule("summary" );
+ subtotal.setSortOrder(0);
+ subtotal.setText("Summary" );
+ subtotal.setTitle("Summary" );
+ subtotal.setOrderTotalCode("subtotal");
+ subtotal.setValue(new BigDecimal(19.99 ) );
+ subtotal.setOrder(order);
+
+ order.getOrderTotal().add(subtotal);
+
+ OrderTotal tax = new OrderTotal();
+ tax.setModule("tax" );
+ tax.setSortOrder(1);
+ tax.setText("Tax" );
+ tax.setTitle("Tax" );
+ tax.setOrderTotalCode("tax");
+ tax.setValue(new BigDecimal(4) );
+ tax.setOrder(order);
+
+ order.getOrderTotal().add(tax);
+
+ OrderTotal total = new OrderTotal();
+ total.setModule("total" );
+ total.setSortOrder(2);
+ total.setText("Total" );
+ total.setTitle("Total" );
+ total.setOrderTotalCode("total");
+ total.setValue(new BigDecimal(23.99) );
+ total.setOrder(order);
+
+ order.getOrderTotal().add(total);
+
+ orderService.create(order);
+
+ LOGGER.info("Ending the initialization of test data");
+
+ }
+
+ private void saveFile(InputStream fis, String name, Product product) throws Exception {
+
+ if(fis==null) {
+ return;
+ }
+
+ final byte[] is = IOUtils.toByteArray( fis );
+ final ByteArrayInputStream inputStream = new ByteArrayInputStream( is );
+ final ImageContentFile cmsContentImage = new ImageContentFile();
+ cmsContentImage.setFileName( name );
+ cmsContentImage.setFile( inputStream );
+ cmsContentImage.setFileContentType(FileContentType.PRODUCT);
+
+
+ ProductImage productImage = new ProductImage();
+ productImage.setProductImage(name);
+ productImage.setProduct(product);
+
+
+ productImageService.addProductImage(product, productImage, cmsContentImage);
+
+
+ }
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableCategoryPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableCategoryPopulator.java
new file mode 100644
index 0000000..6069f94
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableCategoryPopulator.java
@@ -0,0 +1,127 @@
+package com.salesmanager.web.populator.catalog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.category.CategoryDescription;
+import com.salesmanager.web.entity.catalog.category.PersistableCategory;
+
+public class PersistableCategoryPopulator extends
+ AbstractDataPopulator<PersistableCategory, Category> {
+
+
+ private CategoryService categoryService;
+ private LanguageService languageService;
+
+
+ public void setCategoryService(CategoryService categoryService) {
+ this.categoryService = categoryService;
+ }
+
+ public CategoryService getCategoryService() {
+ return categoryService;
+ }
+
+ public void setLanguageService(LanguageService languageService) {
+ this.languageService = languageService;
+ }
+
+ public LanguageService getLanguageService() {
+ return languageService;
+ }
+
+
+ @Override
+ public Category populate(PersistableCategory source, Category target,
+ MerchantStore store, Language language)
+ throws ConversionException {
+
+ try {
+
+
+ Validate.notNull(categoryService, "Requires to set CategoryService");
+ Validate.notNull(languageService, "Requires to set LanguageService");
+
+ target.setMerchantStore(store);
+ target.setCode(source.getCode());
+ target.setSortOrder(source.getSortOrder());
+ target.setVisible(source.isVisible());
+
+ //get parent
+
+ if(source.getParent()==null) {
+
+ target.setParent(null);
+ target.setLineage("/");
+ target.setDepth(0);
+
+ } else {
+
+ Category parent = categoryService.getById(source.getParent().getId());
+ if(parent.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Store id does not belong to specified parent id");
+ }
+
+ target.setParent(parent);
+
+ String lineage = parent.getLineage();
+ int depth = parent.getDepth();
+
+ target.setDepth(depth+1);
+ target.setLineage(new StringBuilder().append(lineage).append(parent.getId()).append("/").toString());
+
+
+
+ }
+
+
+
+ if(!CollectionUtils.isEmpty(source.getDescriptions())) {
+ List<com.salesmanager.core.business.catalog.category.model.CategoryDescription> descriptions = new ArrayList<com.salesmanager.core.business.catalog.category.model.CategoryDescription>();
+ for(CategoryDescription description : source.getDescriptions()) {
+ com.salesmanager.core.business.catalog.category.model.CategoryDescription desc = new com.salesmanager.core.business.catalog.category.model.CategoryDescription();
+ desc.setCategory(target);
+ desc.setCategoryHighlight(description.getHighlights());
+ desc.setDescription(description.getDescription());
+ desc.setName(description.getName());
+ desc.setMetatagDescription(description.getMetaDescription());
+ desc.setMetatagTitle(description.getTitle());
+ desc.setSeUrl(description.getFriendlyUrl());
+ Language lang = languageService.getByCode(description.getLanguage());
+ if(lang==null) {
+ throw new ConversionException("Language is null for code " + description.getLanguage() + " use language ISO code [en, fr ...]");
+ }
+ desc.setLanguage(lang);
+ descriptions.add(desc);
+ }
+ target.setDescriptions(descriptions);
+ }
+
+
+ return target;
+
+
+ } catch(Exception e) {
+ throw new ConversionException(e);
+ }
+
+ }
+
+
+ @Override
+ protected Category createTarget() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductOptionPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductOptionPopulator.java
new file mode 100644
index 0000000..032978e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductOptionPopulator.java
@@ -0,0 +1,75 @@
+package com.salesmanager.web.populator.catalog;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOption;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.product.attribute.PersistableProductOption;
+import com.salesmanager.web.entity.catalog.product.attribute.ProductOptionDescription;
+
+public class PersistableProductOptionPopulator extends
+ AbstractDataPopulator<PersistableProductOption, ProductOption> {
+
+ private LanguageService languageService;
+
+ public LanguageService getLanguageService() {
+ return languageService;
+ }
+
+ public void setLanguageService(LanguageService languageService) {
+ this.languageService = languageService;
+ }
+
+ @Override
+ public ProductOption populate(PersistableProductOption source,
+ ProductOption target, MerchantStore store, Language language)
+ throws ConversionException {
+ Validate.notNull(languageService, "Requires to set LanguageService");
+
+
+ try {
+
+
+ target.setMerchantStore(store);
+ target.setProductOptionSortOrder(source.getOrder());
+ target.setCode(source.getCode());
+
+ if(!CollectionUtils.isEmpty(source.getDescriptions())) {
+ Set<com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionDescription> descriptions = new HashSet<com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionDescription>();
+ for(ProductOptionDescription desc : source.getDescriptions()) {
+ com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionDescription description = new com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionDescription();
+ Language lang = languageService.getByCode(desc.getLanguage());
+ if(lang==null) {
+ throw new ConversionException("Language is null for code " + description.getLanguage() + " use language ISO code [en, fr ...]");
+ }
+ description.setLanguage(lang);
+ description.setName(desc.getName());
+ description.setTitle(desc.getTitle());
+ description.setProductOption(target);
+ descriptions.add(description);
+ }
+ target.setDescriptions(descriptions);
+ }
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+
+ return target;
+ }
+
+ @Override
+ protected ProductOption createTarget() {
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductOptionValuePopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductOptionValuePopulator.java
new file mode 100644
index 0000000..c262001
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductOptionValuePopulator.java
@@ -0,0 +1,83 @@
+package com.salesmanager.web.populator.catalog;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValue;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.product.attribute.PersistableProductOptionValue;
+import com.salesmanager.web.entity.catalog.product.attribute.ProductOptionValueDescription;
+
+/**
+ * Converts a PersistableProductOptionValue to
+ * a ProductOptionValue model object
+ * @author Carl Samson
+ *
+ */
+public class PersistableProductOptionValuePopulator extends
+ AbstractDataPopulator<PersistableProductOptionValue, ProductOptionValue> {
+
+
+ private LanguageService languageService;
+
+ public LanguageService getLanguageService() {
+ return languageService;
+ }
+
+ public void setLanguageService(LanguageService languageService) {
+ this.languageService = languageService;
+ }
+
+ @Override
+ public ProductOptionValue populate(PersistableProductOptionValue source,
+ ProductOptionValue target, MerchantStore store, Language language)
+ throws ConversionException {
+
+ Validate.notNull(languageService, "Requires to set LanguageService");
+
+
+ try {
+
+
+ target.setMerchantStore(store);
+ target.setProductOptionValueSortOrder(source.getOrder());
+ target.setCode(source.getCode());
+
+ if(!CollectionUtils.isEmpty(source.getDescriptions())) {
+ Set<com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValueDescription> descriptions = new HashSet<com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValueDescription>();
+ for(ProductOptionValueDescription desc : source.getDescriptions()) {
+ com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValueDescription description = new com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValueDescription();
+ Language lang = languageService.getByCode(desc.getLanguage());
+ if(lang==null) {
+ throw new ConversionException("Language is null for code " + description.getLanguage() + " use language ISO code [en, fr ...]");
+ }
+ description.setLanguage(lang);
+ description.setName(desc.getName());
+ description.setTitle(desc.getTitle());
+ description.setProductOptionValue(target);
+ descriptions.add(description);
+ }
+ target.setDescriptions(descriptions);
+ }
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+
+ return target;
+ }
+
+ @Override
+ protected ProductOptionValue createTarget() {
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductPopulator.java
new file mode 100644
index 0000000..382d169
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductPopulator.java
@@ -0,0 +1,269 @@
+package com.salesmanager.web.populator.catalog;
+
+import java.io.ByteArrayInputStream;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+import org.apache.commons.lang3.StringUtils;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductAttribute;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOption;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValue;
+import com.salesmanager.core.business.catalog.product.model.availability.ProductAvailability;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.model.image.ProductImage;
+import com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPrice;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPriceDescription;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionValueService;
+import com.salesmanager.core.business.catalog.product.service.manufacturer.ManufacturerService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.tax.service.TaxClassService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.product.PersistableImage;
+import com.salesmanager.web.entity.catalog.product.PersistableProduct;
+import com.salesmanager.web.utils.DateUtil;
+
+public class PersistableProductPopulator extends
+ AbstractDataPopulator<PersistableProduct, Product> {
+
+
+ private CategoryService categoryService;
+ private ManufacturerService manufacturerService;
+ private TaxClassService taxClassService;
+ private LanguageService languageService;
+
+ private ProductOptionService productOptionService;
+ private ProductOptionValueService productOptionValueService;
+
+
+ @Override
+ public Product populate(PersistableProduct source,
+ Product target, MerchantStore store, Language language)
+ throws ConversionException {
+
+ Validate.notNull(manufacturerService, "Requires to set ManufacturerService");
+ Validate.notNull(languageService, "Requires to set LanguageService");
+ Validate.notNull(categoryService, "Requires to set CategoryService");
+ Validate.notNull(taxClassService, "Requires to set TaxClassService");
+ Validate.notNull(productOptionService, "Requires to set ProductOptionService");
+ Validate.notNull(productOptionValueService, "Requires to set ProductOptionValueService");
+
+ try {
+
+ target.setSku(source.getSku());
+ target.setAvailable(source.isAvailable());
+
+ if(!StringUtils.isBlank(source.getDateAvailable())) {
+ target.setDateAvailable(DateUtil.getDate(source.getDateAvailable()));
+ }
+
+ if(source.getManufacturer()!=null) {
+ Manufacturer manuf = manufacturerService.getById(source.getManufacturer().getId());
+ if(manuf==null) {
+ throw new ConversionException("Invalid manufacturer id");
+ }
+ if(manuf!=null) {
+ if(manuf.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid manufacturer id");
+ }
+ target.setManufacturer(manuf);
+
+ }
+ }
+
+ target.setMerchantStore(store);
+
+ List<Language> languages = new ArrayList<Language>();
+ Set<ProductDescription> descriptions = new HashSet<ProductDescription>();
+ if(!CollectionUtils.isEmpty(source.getDescriptions())) {
+ for(com.salesmanager.web.entity.catalog.product.ProductDescription description : source.getDescriptions()) {
+
+ ProductDescription productDescription = new ProductDescription();
+ productDescription.setProduct(target);
+ productDescription.setDescription(description.getDescription());
+ productDescription.setName(description.getName());
+ productDescription.setSeUrl(description.getFriendlyUrl());
+ productDescription.setMetatagDescription(description.getMetaDescription());
+ productDescription.setTitle(description.getTitle());
+
+ Language lang = languageService.getByCode(description.getLanguage());
+ if(lang==null) {
+ throw new ConversionException("Language code " + description.getLanguage() + " is invalid, use ISO code (en, fr ...)");
+ }
+
+ languages.add(lang);
+ productDescription.setLanguage(lang);
+ descriptions.add(productDescription);
+ }
+ }
+
+ if(descriptions.size()>0) {
+ target.setDescriptions(descriptions);
+ }
+
+ //target.setType(source.getType());//not implemented yet
+ target.setProductHeight(source.getProductHeight());
+ target.setProductLength(source.getProductLength());
+ target.setProductWeight(source.getProductWeight());
+ target.setProductWidth(source.getProductWidth());
+ target.setProductVirtual(source.isProductVirtual());
+ target.setProductShipeable(source.isProductShipeable());
+ target.setProductReviewAvg(new BigDecimal(source.getRating()));
+ target.setProductReviewCount(source.getRatingCount());
+
+
+ ProductAvailability productAvailability = new ProductAvailability();
+ ProductPrice price = new ProductPrice();
+ price.setDefaultPrice(true);
+ price.setProductPriceAmount(source.getPrice());
+ price.setProductAvailability(productAvailability);
+ productAvailability.getPrices().add(price);
+ target.getAvailabilities().add(productAvailability);
+ for(Language lang : languages) {
+ ProductPriceDescription ppd = new ProductPriceDescription();
+ ppd.setProductPrice(price);
+ ppd.setLanguage(lang);
+ ppd.setName(ProductPriceDescription.DEFAULT_PRICE_DESCRIPTION);
+ price.getDescriptions().add(ppd);
+ }
+
+ //image
+ if(source.getImages()!=null) {
+ for(PersistableImage img : source.getImages()) {
+ ByteArrayInputStream in = new ByteArrayInputStream(img.getBytes());
+ ProductImage productImage = new ProductImage();
+ productImage.setProduct(target);
+ productImage.setProductImage(img.getImageName());
+ productImage.setImage(in);
+ target.getImages().add(productImage);
+ }
+ }
+
+ //attributes
+ if(source.getAttributes()!=null) {
+ for(com.salesmanager.web.entity.catalog.product.attribute.ProductAttributeEntity attr : source.getAttributes()) {
+
+ ProductOption productOption = productOptionService.getById(attr.getOption().getId());
+ if(productOption==null) {
+ throw new ConversionException("Product option id " + attr.getOption().getId() + " does not exist");
+ }
+
+ ProductOptionValue productOptionValue = productOptionValueService.getById(attr.getOptionValue().getId());
+ if(productOptionValue==null) {
+ throw new ConversionException("Product option value id " + attr.getOptionValue().getId() + " does not exist");
+ }
+
+ if(productOption.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid product option id ");
+ }
+
+ if(productOptionValue.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid product option value id ");
+ }
+
+ ProductAttribute attribute = new ProductAttribute();
+ attribute.setProduct(target);
+ attribute.setProductOption(productOption);
+ attribute.setProductOptionValue(productOptionValue);
+ attribute.setProductAttributePrice(attr.getProductAttributePrice());
+ attribute.setProductAttributeWeight(attr.getProductAttributeWeight());
+ attribute.setProductAttributePrice(attr.getProductAttributePrice());
+ target.getAttributes().add(attribute);
+
+ }
+ }
+
+
+ //categories
+ if(!CollectionUtils.isEmpty(source.getCategories())) {
+ for(com.salesmanager.web.entity.catalog.category.Category categ : source.getCategories()) {
+ Category c = categoryService.getById(categ.getId());
+ if(c==null) {
+ throw new ConversionException("Category id " + categ.getId() + " does not exist");
+ }
+ if(c.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid category id");
+ }
+ target.getCategories().add(c);
+ }
+ }
+ return target;
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+ }
+
+
+
+ public void setCategoryService(CategoryService categoryService) {
+ this.categoryService = categoryService;
+ }
+
+ public CategoryService getCategoryService() {
+ return categoryService;
+ }
+
+ public void setManufacturerService(ManufacturerService manufacturerService) {
+ this.manufacturerService = manufacturerService;
+ }
+
+ public ManufacturerService getManufacturerService() {
+ return manufacturerService;
+ }
+
+ public void setTaxClassService(TaxClassService taxClassService) {
+ this.taxClassService = taxClassService;
+ }
+
+ public TaxClassService getTaxClassService() {
+ return taxClassService;
+ }
+
+
+ public LanguageService getLanguageService() {
+ return languageService;
+ }
+
+ public void setLanguageService(LanguageService languageService) {
+ this.languageService = languageService;
+ }
+
+ public ProductOptionService getProductOptionService() {
+ return productOptionService;
+ }
+
+ public void setProductOptionService(ProductOptionService productOptionService) {
+ this.productOptionService = productOptionService;
+ }
+
+ public ProductOptionValueService getProductOptionValueService() {
+ return productOptionValueService;
+ }
+
+ public void setProductOptionValueService(
+ ProductOptionValueService productOptionValueService) {
+ this.productOptionValueService = productOptionValueService;
+ }
+
+
+ @Override
+ protected Product createTarget() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductReviewPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductReviewPopulator.java
new file mode 100644
index 0000000..73ff451
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/PersistableProductReviewPopulator.java
@@ -0,0 +1,133 @@
+package com.salesmanager.web.populator.catalog;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.lang.Validate;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.review.ProductReview;
+import com.salesmanager.core.business.catalog.product.model.review.ProductReviewDescription;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.product.PersistableProductReview;
+import com.shopizer.search.utils.DateUtil;
+
+public class PersistableProductReviewPopulator extends
+ AbstractDataPopulator<PersistableProductReview, ProductReview> {
+
+
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private LanguageService languageService;
+
+
+
+ public LanguageService getLanguageService() {
+ return languageService;
+ }
+
+ public void setLanguageService(LanguageService languageService) {
+ this.languageService = languageService;
+ }
+
+ @Override
+ public ProductReview populate(PersistableProductReview source,
+ ProductReview target, MerchantStore store, Language language)
+ throws ConversionException {
+
+
+ Validate.notNull(customerService,"customerService cannot be null");
+ Validate.notNull(productService,"productService cannot be null");
+ Validate.notNull(languageService,"languageService cannot be null");
+
+ try {
+
+ if(target==null) {
+ target = new ProductReview();
+ }
+
+ Customer customer = customerService.getById(source.getCustomerId());
+
+ //check if customer belongs to store
+ if(customer ==null || customer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid customer id for the given store");
+ }
+
+ target.setReviewDate(DateUtil.formatDate(source.getDate()));
+ target.setCustomer(customer);
+ target.setReviewRating(source.getRating());
+
+ Product product = productService.getById(source.getProductId());
+
+ //check if product belongs to store
+ if(product ==null || product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid product id for the given store");
+ }
+
+ target.setProduct(product);
+
+ Language lang = languageService.getByCode(language.getCode());
+ if(lang ==null) {
+ throw new ConversionException("Invalid language code, use iso codes (en, fr ...)");
+ }
+
+ ProductReviewDescription description = new ProductReviewDescription();
+ description.setDescription(source.getDescription());
+ description.setLanguage(lang);
+ description.setName("-");
+ description.setProductReview(target);
+
+ Set<ProductReviewDescription> descriptions = new HashSet<ProductReviewDescription>();
+ descriptions.add(description);
+
+ target.setDescriptions(descriptions);
+
+
+
+
+
+ return target;
+
+ } catch (Exception e) {
+ throw new ConversionException("Cannot populate ProductReview", e);
+ }
+
+ }
+
+ @Override
+ protected ProductReview createTarget() {
+ return null;
+ }
+
+ public CustomerService getCustomerService() {
+ return customerService;
+ }
+
+ public void setCustomerService(CustomerService customerService) {
+ this.customerService = customerService;
+ }
+
+ public ProductService getProductService() {
+ return productService;
+ }
+
+ public void setProductService(ProductService productService) {
+ this.productService = productService;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableCategoryPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableCategoryPopulator.java
new file mode 100644
index 0000000..07d81b2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableCategoryPopulator.java
@@ -0,0 +1,62 @@
+package com.salesmanager.web.populator.catalog;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.model.CategoryDescription;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.category.ReadableCategory;
+
+public class ReadableCategoryPopulator extends
+ AbstractDataPopulator<Category, ReadableCategory> {
+
+ @Override
+ public ReadableCategory populate(Category source, ReadableCategory target,
+ MerchantStore store, Language language) throws ConversionException {
+
+
+ target.setLineage(source.getLineage());
+ if(source.getDescriptions()!=null && source.getDescriptions().size()>0) {
+
+ CategoryDescription description = source.getDescription();
+ if(source.getDescriptions().size()>1) {
+ for(CategoryDescription desc : source.getDescriptions()) {
+ if(desc.getLanguage().getCode().equals(language.getCode())) {
+ description = desc;
+ break;
+ }
+ }
+ }
+
+
+
+ if(description!=null) {
+ com.salesmanager.web.entity.catalog.category.CategoryDescription desc = new com.salesmanager.web.entity.catalog.category.CategoryDescription();
+ desc.setFriendlyUrl(description.getSeUrl());
+ desc.setName(description.getName());
+ desc.setDescription(description.getName());
+ desc.setKeyWords(description.getMetatagKeywords());
+ desc.setHighlights(description.getCategoryHighlight());
+ desc.setTitle(description.getMetatagTitle());
+ desc.setMetaDescription(description.getMetatagDescription());
+
+ target.setDescription(desc);
+ }
+
+ }
+
+ target.setCode(source.getCode());
+ target.setId(source.getId());
+
+
+ return target;
+
+ }
+
+ @Override
+ protected ReadableCategory createTarget() {
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductPopulator.java
new file mode 100644
index 0000000..fad0f81
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductPopulator.java
@@ -0,0 +1,159 @@
+package com.salesmanager.web.populator.catalog;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.lang.Validate;
+import org.apache.commons.lang3.StringUtils;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.availability.ProductAvailability;
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.catalog.product.model.image.ProductImage;
+import com.salesmanager.core.business.catalog.product.model.manufacturer.ManufacturerDescription;
+import com.salesmanager.core.business.catalog.product.model.price.FinalPrice;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.constants.Constants;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.ReadableImage;
+import com.salesmanager.web.entity.catalog.manufacturer.ReadableManufacturer;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.utils.ImageFilePathUtils;
+
+public class ReadableProductPopulator extends
+ AbstractDataPopulator<Product, ReadableProduct> {
+
+ private PricingService pricingService;
+
+ public PricingService getPricingService() {
+ return pricingService;
+ }
+
+
+
+
+ public void setPricingService(PricingService pricingService) {
+ this.pricingService = pricingService;
+ }
+
+
+
+
+ @Override
+ public ReadableProduct populate(Product source,
+ ReadableProduct target, MerchantStore store, Language language)
+ throws ConversionException {
+ Validate.notNull(pricingService, "Requires to set PricingService");
+
+ try {
+
+
+ ProductDescription description = source.getProductDescription();
+
+ target.setId(source.getId());
+ target.setAvailable(source.isAvailable());
+ if(source.getProductReviewAvg()!=null) {
+ double avg = source.getProductReviewAvg().doubleValue();
+ double rating = Math.round(avg * 2) / 2.0f;
+ target.setRating(rating);
+ }
+ target.setProductVirtual(source.getProductVirtual());
+ if(source.getProductReviewCount()!=null) {
+ target.setRatingCount(source.getProductReviewCount().intValue());
+ }
+ if(description!=null) {
+ com.salesmanager.web.entity.catalog.product.ProductDescription tragetDescription = new com.salesmanager.web.entity.catalog.product.ProductDescription();
+ tragetDescription.setFriendlyUrl(description.getSeUrl());
+ tragetDescription.setName(description.getName());
+ if(!StringUtils.isBlank(description.getMetatagTitle())) {
+ tragetDescription.setTitle(description.getMetatagTitle());
+ } else {
+ tragetDescription.setTitle(description.getName());
+ }
+ tragetDescription.setMetaDescription(description.getMetatagDescription());
+ tragetDescription.setDescription(description.getDescription());
+ tragetDescription.setHighlights(description.getProductHighlight());
+ target.setDescription(tragetDescription);
+ }
+
+ if(source.getManufacturer()!=null) {
+ ManufacturerDescription manufacturer = source.getManufacturer().getDescriptions().iterator().next();
+ ReadableManufacturer manufacturerEntity = new ReadableManufacturer();
+ com.salesmanager.web.entity.catalog.manufacturer.ManufacturerDescription d = new com.salesmanager.web.entity.catalog.manufacturer.ManufacturerDescription();
+ d.setName(manufacturer.getName());
+ manufacturerEntity.setDescription(d);
+ manufacturerEntity.setId(manufacturer.getId());
+ manufacturerEntity.setOrder(source.getManufacturer().getOrder());
+ target.setManufacturer(manufacturerEntity);
+ }
+
+ ProductImage image = source.getProductImage();
+ if(image!=null) {
+ ReadableImage rimg = new ReadableImage();
+ rimg.setImageName(image.getProductImage());
+ String imagePath = ImageFilePathUtils.buildProductImageFilePath(store, source.getSku(), image.getProductImage());
+ rimg.setImageUrl(imagePath);
+ rimg.setId(image.getId());
+ target.setImage(rimg);
+
+ //other images
+ Set<ProductImage> images = source.getImages();
+ if(images!=null && images.size()>0) {
+ List<ReadableImage> imageList = new ArrayList<ReadableImage>();
+ for(ProductImage img : images) {
+ ReadableImage prdImage = new ReadableImage();
+ prdImage.setImageName(img.getProductImage());
+ String imgPath = ImageFilePathUtils.buildProductImageFilePath(store, source.getSku(), img.getProductImage());
+ prdImage.setImageUrl(imgPath);
+ prdImage.setId(img.getId());
+ imageList.add(prdImage);
+ }
+ target
+ .setImages(imageList);
+ }
+ }
+
+ target.setSku(source.getSku());
+ //target.setLanguage(language.getCode());
+
+ FinalPrice price = pricingService.calculateProductPrice(source);
+
+ target.setFinalPrice(pricingService.getDisplayAmount(price.getFinalPrice(), store));
+ target.setPrice(price.getFinalPrice());
+
+ if(price.isDiscounted()) {
+ target.setDiscounted(true);
+ target.setOriginalPrice(pricingService.getDisplayAmount(price.getOriginalPrice(), store));
+ }
+
+ //availability
+ for(ProductAvailability availability : source.getAvailabilities()) {
+ if(availability.getRegion().equals(Constants.ALL_REGIONS)) {//TODO REL 2.1 accept a region
+ target.setQuantity(availability.getProductQuantity());
+ target.setQuantityOrderMaximum(availability.getProductQuantityOrderMax());
+ target.setQuantityOrderMinimum(availability.getProductQuantityOrderMin());
+ }
+ }
+
+
+ return target;
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+ }
+
+
+
+
+ @Override
+ protected ReadableProduct createTarget() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductPricePopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductPricePopulator.java
new file mode 100644
index 0000000..8d382df
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductPricePopulator.java
@@ -0,0 +1,58 @@
+package com.salesmanager.web.populator.catalog;
+
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.product.model.price.FinalPrice;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.product.ReadableProductPrice;
+
+public class ReadableProductPricePopulator extends
+ AbstractDataPopulator<FinalPrice, ReadableProductPrice> {
+
+
+ private PricingService pricingService;
+
+ public PricingService getPricingService() {
+ return pricingService;
+ }
+
+ public void setPricingService(PricingService pricingService) {
+ this.pricingService = pricingService;
+ }
+
+ @Override
+ public ReadableProductPrice populate(FinalPrice source,
+ ReadableProductPrice target, MerchantStore store, Language language)
+ throws ConversionException {
+ Validate.notNull(pricingService,"pricingService must be set");
+
+ try {
+
+ target.setOriginalPrice(pricingService.getDisplayAmount(source.getOriginalPrice(), store));
+ if(source.isDiscounted()) {
+ target.setDiscounted(true);
+ target.setFinalPrice(pricingService.getDisplayAmount(source.getDiscountedPrice(), store));
+ } else {
+ target.setFinalPrice(pricingService.getDisplayAmount(source.getFinalPrice(), store));
+ }
+
+ } catch(Exception e) {
+ throw new ConversionException("Exception while converting to ReadableProductPrice",e);
+ }
+
+
+
+ return target;
+ }
+
+ @Override
+ protected ReadableProductPrice createTarget() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductReviewPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductReviewPopulator.java
new file mode 100644
index 0000000..66a91e8
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/catalog/ReadableProductReviewPopulator.java
@@ -0,0 +1,60 @@
+package com.salesmanager.web.populator.catalog;
+
+import java.util.Set;
+
+
+import com.salesmanager.core.business.catalog.product.model.review.ProductReview;
+import com.salesmanager.core.business.catalog.product.model.review.ProductReviewDescription;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.product.ReadableProductReview;
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+import com.salesmanager.web.populator.customer.ReadableCustomerPopulator;
+import com.salesmanager.web.utils.DateUtil;
+
+public class ReadableProductReviewPopulator extends
+ AbstractDataPopulator<ProductReview, ReadableProductReview> {
+
+ @Override
+ public ReadableProductReview populate(ProductReview source,
+ ReadableProductReview target, MerchantStore store, Language language)
+ throws ConversionException {
+
+
+ try {
+ ReadableCustomerPopulator populator = new ReadableCustomerPopulator();
+ ReadableCustomer customer = new ReadableCustomer();
+ populator.populate(source.getCustomer(), customer, store, language);
+
+ target.setDate(DateUtil.formatDate(source.getReviewDate()));
+ target.setCustomer(customer);
+ target.setRating(source.getReviewRating());
+ target.setProductId(source.getProduct().getId());
+
+ Set<ProductReviewDescription> descriptions = source.getDescriptions();
+ if(descriptions!=null) {
+ for(ProductReviewDescription description : descriptions) {
+ target.setDescription(description.getDescription());
+ target.setLanguage(description.getLanguage().getCode());
+ break;
+ }
+ }
+
+ return target;
+
+ } catch (Exception e) {
+ throw new ConversionException("Cannot populate ProductReview", e);
+ }
+
+
+
+ }
+
+ @Override
+ protected ReadableProductReview createTarget() {
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerBillingAddressPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerBillingAddressPopulator.java
new file mode 100644
index 0000000..cb5a538
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerBillingAddressPopulator.java
@@ -0,0 +1,52 @@
+/**
+ *
+ */
+package com.salesmanager.web.populator.customer;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+
+/**
+ * @author Admin
+ *
+ */
+public class CustomerBillingAddressPopulator extends AbstractDataPopulator<Customer, Address>
+{
+
+ @Override
+ public Address populate( Customer source, Address target, MerchantStore store, Language language )
+ throws ConversionException
+ {
+
+ target.setCity(source.getBilling().getCity());
+ target.setCompany(source.getBilling().getCompany());
+ target.setFirstName(source.getBilling().getFirstName());
+ target.setLastName(source.getBilling().getLastName());
+ target.setPostalCode(source.getBilling().getPostalCode());
+ target.setPhone(source.getBilling().getTelephone());
+ if(source.getBilling().getTelephone()==null) {
+ target.setPhone(source.getBilling().getTelephone());
+ }
+ target.setAddress(source.getBilling().getAddress());
+ if(source.getBilling().getCountry()!=null) {
+ target.setCountry(source.getBilling().getCountry().getIsoCode());
+ }
+ if(source.getBilling().getZone()!=null) {
+ target.setZone(source.getBilling().getZone().getCode());
+ }
+ target.setStateProvince(source.getBilling().getState());
+
+ return target;
+ }
+
+ @Override
+ protected Address createTarget()
+ {
+ return new Address();
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerDeliveryAddressPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerDeliveryAddressPopulator.java
new file mode 100644
index 0000000..ac16570
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerDeliveryAddressPopulator.java
@@ -0,0 +1,78 @@
+/**
+ *
+ */
+package com.salesmanager.web.populator.customer;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+
+/**
+ * @author Admin
+ *
+ */
+public class CustomerDeliveryAddressPopulator extends AbstractDataPopulator<Customer, Address>
+{
+
+ @Override
+ public Address populate( Customer source, Address target, MerchantStore store, Language language )
+ throws ConversionException
+ {
+
+ if(source.getDelivery()!=null){
+ if(StringUtils.isNotBlank( source.getDelivery().getCity() )){
+ target.setCity(source.getDelivery().getCity());
+ }
+
+ if(StringUtils.isNotBlank( source.getDelivery().getCompany() )){
+ target.setCompany(source.getDelivery().getCompany());
+ }
+
+ if(StringUtils.isNotBlank( source.getDelivery().getAddress() )){
+ target.setAddress(source.getDelivery().getAddress());
+ }
+
+ if(StringUtils.isNotBlank( source.getDelivery().getFirstName() )){
+ target.setFirstName(source.getDelivery().getFirstName());
+ }
+
+ if(StringUtils.isNotBlank( source.getDelivery().getLastName() )){
+ target.setLastName(source.getDelivery().getLastName());
+ }
+
+ if(StringUtils.isNotBlank( source.getDelivery().getPostalCode() )){
+ target.setPostalCode(source.getDelivery().getPostalCode());
+ }
+
+ if(StringUtils.isNotBlank( source.getDelivery().getTelephone() )){
+ target.setPhone(source.getDelivery().getTelephone());
+ }
+
+ target.setStateProvince(source.getDelivery().getState());
+
+ if(source.getDelivery().getTelephone()==null) {
+ target.setPhone(source.getDelivery().getTelephone());
+ }
+ target.setAddress(source.getDelivery().getAddress());
+ if(source.getDelivery().getCountry()!=null) {
+ target.setCountry(source.getDelivery().getCountry().getIsoCode());
+ }
+ if(source.getDelivery().getZone()!=null) {
+ target.setZone(source.getDelivery().getZone().getCode());
+ }
+ }
+ return target;
+ }
+
+ @Override
+ protected Address createTarget()
+ {
+ return new Address();
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerEntityPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerEntityPopulator.java
new file mode 100644
index 0000000..a3c8f5b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerEntityPopulator.java
@@ -0,0 +1,108 @@
+/**
+ *
+ */
+package com.salesmanager.web.populator.customer;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.CustomerEntity;
+
+/**
+ * <p>
+ * CustomerEntityPopulator will help to populate {@link CustomerEntity} from {@link Customer} CustomerEntity will be
+ * used to show data on the UI side.
+ * </p>
+ *
+ * @author Umesh Awasthi
+ * @version 1.2
+ */
+public class CustomerEntityPopulator
+ extends AbstractDataPopulator<Customer, CustomerEntity>
+{
+
+ @Override
+ public CustomerEntity populate( final Customer source, final CustomerEntity target,
+ final MerchantStore merchantStore, final Language language )
+ throws ConversionException
+ {
+ try
+ {
+
+
+ target.setId( source.getId() );
+ if(StringUtils.isNotBlank( source.getEmailAddress() )){
+ target.setEmailAddress( source.getEmailAddress() );
+ }
+
+
+
+ if ( source.getBilling() != null )
+ {
+ Address address = new Address();
+ address.setCity( source.getBilling().getCity() );
+ address.setAddress(source.getBilling().getAddress());
+ address.setCompany( source.getBilling().getCompany() );
+ address.setFirstName( source.getBilling().getFirstName() );
+ address.setLastName( source.getBilling().getLastName() );
+ address.setPostalCode( source.getBilling().getPostalCode() );
+ address.setPhone( source.getBilling().getTelephone() );
+ if ( source.getBilling().getCountry() != null )
+ {
+ address.setCountry( source.getBilling().getCountry().getIsoCode() );
+ }
+ if ( source.getBilling().getZone() != null )
+ {
+ address.setZone( source.getBilling().getZone().getCode() );
+ }
+
+ address.setStateProvince(source.getBilling().getState());
+
+ target.setBilling( address );
+ }
+
+ if ( source.getDelivery() != null )
+ {
+ Address address = new Address();
+ address.setCity( source.getDelivery().getCity() );
+ address.setAddress(source.getDelivery().getAddress());
+ address.setCompany( source.getDelivery().getCompany() );
+ address.setFirstName( source.getDelivery().getFirstName() );
+ address.setLastName( source.getDelivery().getLastName() );
+ address.setPostalCode( source.getDelivery().getPostalCode() );
+ address.setPhone( source.getDelivery().getTelephone() );
+ if ( source.getDelivery().getCountry() != null )
+ {
+ address.setCountry( source.getDelivery().getCountry().getIsoCode() );
+ }
+ if ( source.getDelivery().getZone() != null )
+ {
+ address.setZone( source.getDelivery().getZone().getCode() );
+ }
+
+ address.setStateProvince(source.getDelivery().getState());
+
+ target.setDelivery( address );
+ }
+
+ }
+ catch ( Exception e )
+ {
+ throw new ConversionException( e );
+ }
+
+ return target;
+ }
+
+ @Override
+ protected CustomerEntity createTarget()
+ {
+ return new CustomerEntity();
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerOptionPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerOptionPopulator.java
new file mode 100644
index 0000000..609d491
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerOptionPopulator.java
@@ -0,0 +1,68 @@
+package com.salesmanager.web.populator.customer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionSet;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.admin.entity.customer.attribute.CustomerOption;
+import com.salesmanager.web.admin.entity.customer.attribute.CustomerOptionValue;
+
+public class CustomerOptionPopulator extends
+ AbstractDataPopulator<com.salesmanager.core.business.customer.model.attribute.CustomerOption, com.salesmanager.web.admin.entity.customer.attribute.CustomerOption> {
+
+
+ private CustomerOptionSet optionSet;
+
+ public CustomerOptionSet getOptionSet() {
+ return optionSet;
+ }
+
+ public void setOptionSet(CustomerOptionSet optionSet) {
+ this.optionSet = optionSet;
+ }
+
+ @Override
+ public CustomerOption populate(
+ com.salesmanager.core.business.customer.model.attribute.CustomerOption source,
+ CustomerOption target, MerchantStore store, Language language) throws ConversionException {
+
+
+ CustomerOption customerOption = target;
+ if(customerOption==null) {
+ customerOption = new CustomerOption();
+ }
+
+ customerOption.setId(source.getId());
+ customerOption.setType(source.getCustomerOptionType());
+ customerOption.setName(source.getDescriptionsSettoList().get(0).getName());
+
+ List<CustomerOptionValue> values = customerOption.getAvailableValues();
+ if(values==null) {
+ values = new ArrayList<CustomerOptionValue>();
+ customerOption.setAvailableValues(values);
+ }
+
+ com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue optionValue = optionSet.getCustomerOptionValue();
+ CustomerOptionValue custOptValue = new CustomerOptionValue();
+ custOptValue.setId(optionValue.getId());
+ custOptValue.setLanguage(language.getCode());
+ custOptValue.setName(optionValue.getDescriptionsSettoList().get(0).getName());
+ values.add(custOptValue);
+
+ return customerOption;
+
+ }
+
+ @Override
+ protected CustomerOption createTarget()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerPopulator.java
new file mode 100644
index 0000000..8797508
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/CustomerPopulator.java
@@ -0,0 +1,269 @@
+package com.salesmanager.web.populator.customer;
+
+import java.util.Map;
+
+import org.apache.commons.lang.Validate;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.common.model.Billing;
+import com.salesmanager.core.business.common.model.Delivery;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.model.attribute.CustomerAttribute;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOption;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionValueService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.customer.attribute.PersistableCustomerAttribute;
+
+public class CustomerPopulator extends
+ AbstractDataPopulator<PersistableCustomer, Customer> {
+
+ protected static final Logger LOG=LoggerFactory.getLogger( CustomerPopulator.class );
+ private CountryService countryService;
+ private ZoneService zoneService;
+ private LanguageService languageService;
+
+ private CustomerOptionService customerOptionService;
+ private CustomerOptionValueService customerOptionValueService;
+
+
+ /**
+ * Creates a Customer entity ready to be saved
+ */
+ @Override
+ public Customer populate(PersistableCustomer source, Customer target,
+ MerchantStore store, Language language) throws ConversionException {
+
+ Validate.notNull(customerOptionService, "Requires to set CustomerOptionService");
+ Validate.notNull(customerOptionValueService, "Requires to set CustomerOptionValueService");
+ Validate.notNull(zoneService, "Requires to set ZoneService");
+ Validate.notNull(countryService, "Requires to set CountryService");
+ Validate.notNull(languageService, "Requires to set LanguageService");
+
+ try {
+
+ if(source.getId() !=null && source.getId()>0){
+ target.setId( source.getId() );
+ }
+
+
+ if(!StringUtils.isBlank(source.getEncodedPassword())) {
+ target.setPassword(source.getEncodedPassword());
+ target.setAnonymous(false);
+ }
+
+ target.setEmailAddress(source.getEmailAddress());
+ target.setNick(source.getUserName());
+ if(source.getGender()!=null && target.getGender()==null) {
+ target.setGender( com.salesmanager.core.business.customer.model.CustomerGender.valueOf( source.getGender() ) );
+ }
+ if(target.getGender()==null) {
+ target.setGender( com.salesmanager.core.business.customer.model.CustomerGender.M);
+ }
+
+ Map<String,Country> countries = countryService.getCountriesMap(language);
+
+ target.setMerchantStore( store );
+
+ Address sourceBilling = source.getBilling();
+ if(sourceBilling!=null) {
+ Billing billing = new Billing();
+ billing.setAddress(sourceBilling.getAddress());
+ billing.setCity(sourceBilling.getCity());
+ billing.setCompany(sourceBilling.getCompany());
+ //billing.setCountry(country);
+ billing.setFirstName(sourceBilling.getFirstName());
+ billing.setLastName(sourceBilling.getLastName());
+ billing.setTelephone(sourceBilling.getPhone());
+ billing.setPostalCode(sourceBilling.getPostalCode());
+ billing.setState(sourceBilling.getStateProvince());
+ Country billingCountry = null;
+ if(!StringUtils.isBlank(sourceBilling.getCountry())) {
+ billingCountry = countries.get(sourceBilling.getCountry());
+ if(billingCountry==null) {
+ throw new ConversionException("Unsuported country code " + sourceBilling.getCountry());
+ }
+ billing.setCountry(billingCountry);
+ }
+
+ if(billingCountry!=null && !StringUtils.isBlank(sourceBilling.getZone())) {
+ Zone zone = zoneService.getByCode(sourceBilling.getZone());
+ if(zone==null) {
+ throw new ConversionException("Unsuported zone code " + sourceBilling.getZone());
+ }
+ billing.setZone(zone);
+ }
+ target.setBilling(billing);
+
+ }
+ if(target.getBilling() ==null && source.getBilling()!=null){
+ LOG.info( "Setting default values for billing" );
+ Billing billing = new Billing();
+ Country billingCountry = null;
+ if(StringUtils.isNotBlank( source.getBilling().getCountry() )) {
+ billingCountry = countries.get(source.getBilling().getCountry());
+ if(billingCountry==null) {
+ throw new ConversionException("Unsuported country code " + sourceBilling.getCountry());
+ }
+ billing.setCountry(billingCountry);
+ target.setBilling( billing );
+ }
+ }
+ Address sourceShipping = source.getDelivery();
+ if(sourceShipping!=null) {
+ Delivery delivery = new Delivery();
+ delivery.setAddress(sourceShipping.getAddress());
+ delivery.setCity(sourceShipping.getCity());
+ delivery.setCompany(sourceShipping.getCompany());
+ delivery.setFirstName(sourceShipping.getFirstName());
+ delivery.setLastName(sourceShipping.getLastName());
+ delivery.setTelephone(sourceShipping.getPhone());
+ delivery.setPostalCode(sourceShipping.getPostalCode());
+ delivery.setState(sourceShipping.getStateProvince());
+ Country deliveryCountry = null;
+
+
+
+ if(!StringUtils.isBlank(sourceShipping.getCountry())) {
+ deliveryCountry = countries.get(sourceShipping.getCountry());
+ if(deliveryCountry==null) {
+ throw new ConversionException("Unsuported country code " + sourceShipping.getCountry());
+ }
+ delivery.setCountry(deliveryCountry);
+ }
+
+ if(deliveryCountry!=null && !StringUtils.isBlank(sourceShipping.getZone())) {
+ Zone zone = zoneService.getByCode(sourceShipping.getZone());
+ if(zone==null) {
+ throw new ConversionException("Unsuported zone code " + sourceShipping.getZone());
+ }
+ delivery.setZone(zone);
+ }
+ target.setDelivery(delivery);
+ }
+
+ if(target.getDelivery() ==null && source.getDelivery()!=null){
+ LOG.info( "Setting default value for delivery" );
+ Delivery delivery = new Delivery();
+ Country deliveryCountry = null;
+ if(StringUtils.isNotBlank( source.getDelivery().getCountry() )) {
+ deliveryCountry = countries.get(source.getDelivery().getCountry());
+ if(deliveryCountry==null) {
+ throw new ConversionException("Unsuported country code " + sourceShipping.getCountry());
+ }
+ delivery.setCountry(deliveryCountry);
+ target.setDelivery( delivery );
+ }
+ }
+
+ if(source.getAttributes()!=null) {
+ for(PersistableCustomerAttribute attr : source.getAttributes()) {
+
+ CustomerOption customerOption = customerOptionService.getById(attr.getCustomerOption().getId());
+ if(customerOption==null) {
+ throw new ConversionException("Customer option id " + attr.getCustomerOption().getId() + " does not exist");
+ }
+
+ CustomerOptionValue customerOptionValue = customerOptionValueService.getById(attr.getCustomerOptionValue().getId());
+ if(customerOptionValue==null) {
+ throw new ConversionException("Customer option value id " + attr.getCustomerOptionValue().getId() + " does not exist");
+ }
+
+ if(customerOption.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid customer option id ");
+ }
+
+ if(customerOptionValue.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid customer option value id ");
+ }
+
+ CustomerAttribute attribute = new CustomerAttribute();
+ attribute.setCustomer(target);
+ attribute.setCustomerOption(customerOption);
+ attribute.setCustomerOptionValue(customerOptionValue);
+ attribute.setTextValue(attr.getTextValue());
+
+ target.getAttributes().add(attribute);
+
+ }
+ }
+
+ if(target.getDefaultLanguage()==null) {
+ Language lang = languageService.getByCode(source.getLanguage());
+ if(lang==null) {
+ lang = store.getDefaultLanguage();
+ }
+
+ target.setDefaultLanguage(lang);
+ }
+
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+
+
+
+ return target;
+ }
+
+ @Override
+ protected Customer createTarget() {
+ return new Customer();
+ }
+
+ public void setCustomerOptionService(CustomerOptionService customerOptionService) {
+ this.customerOptionService = customerOptionService;
+ }
+
+ public CustomerOptionService getCustomerOptionService() {
+ return customerOptionService;
+ }
+
+ public void setCustomerOptionValueService(CustomerOptionValueService customerOptionValueService) {
+ this.customerOptionValueService = customerOptionValueService;
+ }
+
+ public CustomerOptionValueService getCustomerOptionValueService() {
+ return customerOptionValueService;
+ }
+
+ public CountryService getCountryService() {
+ return countryService;
+ }
+
+ public void setCountryService(CountryService countryService) {
+ this.countryService = countryService;
+ }
+
+ public ZoneService getZoneService() {
+ return zoneService;
+ }
+
+ public void setZoneService(ZoneService zoneService) {
+ this.zoneService = zoneService;
+ }
+
+ public LanguageService getLanguageService() {
+ return languageService;
+ }
+
+ public void setLanguageService(LanguageService languageService) {
+ this.languageService = languageService;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerBillingAddressPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerBillingAddressPopulator.java
new file mode 100644
index 0000000..ee21133
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerBillingAddressPopulator.java
@@ -0,0 +1,62 @@
+package com.salesmanager.web.populator.customer;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+
+public class PersistableCustomerBillingAddressPopulator extends AbstractDataPopulator<Address, Customer>
+{
+
+ @Override
+ public Customer populate( Address source, Customer target, MerchantStore store, Language language )
+ throws ConversionException
+ {
+
+
+ target.getBilling().setFirstName( source.getFirstName() );
+ target.getBilling().setLastName( source.getLastName() );
+
+ // lets fill optional data now
+
+ if(StringUtils.isNotBlank( source.getAddress())){
+ target.getBilling().setAddress( source.getAddress() );
+ }
+
+ if(StringUtils.isNotBlank( source.getCity())){
+ target.getBilling().setCity( source.getCity() );
+ }
+
+ if(StringUtils.isNotBlank( source.getCompany())){
+ target.getBilling().setCompany( source.getCompany() );
+ }
+
+ if(StringUtils.isNotBlank( source.getPhone())){
+ target.getBilling().setTelephone( source.getPhone());
+ }
+
+ if(StringUtils.isNotBlank( source.getPostalCode())){
+ target.getBilling().setPostalCode( source.getPostalCode());
+ }
+
+ if(StringUtils.isNotBlank( source.getStateProvince())){
+ target.getBilling().setState(source.getStateProvince());
+ }
+
+ return target;
+
+ }
+
+ @Override
+ protected Customer createTarget()
+ {
+ return null;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerOptionPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerOptionPopulator.java
new file mode 100644
index 0000000..2455834
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerOptionPopulator.java
@@ -0,0 +1,82 @@
+package com.salesmanager.web.populator.customer;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+import org.apache.commons.lang3.StringUtils;
+
+import com.salesmanager.core.business.customer.model.attribute.CustomerOption;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.attribute.CustomerOptionDescription;
+import com.salesmanager.web.entity.customer.attribute.PersistableCustomerOption;
+
+public class PersistableCustomerOptionPopulator extends
+ AbstractDataPopulator<PersistableCustomerOption, CustomerOption> {
+
+
+ private LanguageService languageService;
+
+ @Override
+ public CustomerOption populate(PersistableCustomerOption source,
+ CustomerOption target, MerchantStore store, Language language)
+ throws ConversionException {
+
+
+ Validate.notNull(languageService, "Requires to set LanguageService");
+
+
+ try {
+
+ target.setCode(source.getCode());
+ target.setMerchantStore(store);
+ target.setSortOrder(source.getOrder());
+ if(!StringUtils.isBlank(source.getType())) {
+ target.setCustomerOptionType(source.getType());
+ } else {
+ target.setCustomerOptionType("TEXT");
+ }
+ target.setPublicOption(true);
+
+ if(!CollectionUtils.isEmpty(source.getDescriptions())) {
+ Set<com.salesmanager.core.business.customer.model.attribute.CustomerOptionDescription> descriptions = new HashSet<com.salesmanager.core.business.customer.model.attribute.CustomerOptionDescription>();
+ for(CustomerOptionDescription desc : source.getDescriptions()) {
+ com.salesmanager.core.business.customer.model.attribute.CustomerOptionDescription description = new com.salesmanager.core.business.customer.model.attribute.CustomerOptionDescription();
+ Language lang = languageService.getByCode(desc.getLanguage());
+ if(lang==null) {
+ throw new ConversionException("Language is null for code " + description.getLanguage() + " use language ISO code [en, fr ...]");
+ }
+ description.setLanguage(lang);
+ description.setName(desc.getName());
+ description.setTitle(desc.getTitle());
+ description.setCustomerOption(target);
+ descriptions.add(description);
+ }
+ target.setDescriptions(descriptions);
+ }
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+ return target;
+ }
+
+ @Override
+ protected CustomerOption createTarget() {
+ return null;
+ }
+
+ public void setLanguageService(LanguageService languageService) {
+ this.languageService = languageService;
+ }
+
+ public LanguageService getLanguageService() {
+ return languageService;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerOptionValuePopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerOptionValuePopulator.java
new file mode 100644
index 0000000..221115b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerOptionValuePopulator.java
@@ -0,0 +1,75 @@
+package com.salesmanager.web.populator.customer;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.attribute.CustomerOptionValueDescription;
+import com.salesmanager.web.entity.customer.attribute.PersistableCustomerOptionValue;
+
+public class PersistableCustomerOptionValuePopulator extends
+ AbstractDataPopulator<PersistableCustomerOptionValue, CustomerOptionValue> {
+
+
+ private LanguageService languageService;
+
+ @Override
+ public CustomerOptionValue populate(PersistableCustomerOptionValue source,
+ CustomerOptionValue target, MerchantStore store, Language language)
+ throws ConversionException {
+
+
+ Validate.notNull(languageService, "Requires to set LanguageService");
+
+
+ try {
+
+ target.setCode(source.getCode());
+ target.setMerchantStore(store);
+ target.setSortOrder(source.getOrder());
+
+ if(!CollectionUtils.isEmpty(source.getDescriptions())) {
+ Set<com.salesmanager.core.business.customer.model.attribute.CustomerOptionValueDescription> descriptions = new HashSet<com.salesmanager.core.business.customer.model.attribute.CustomerOptionValueDescription>();
+ for(CustomerOptionValueDescription desc : source.getDescriptions()) {
+ com.salesmanager.core.business.customer.model.attribute.CustomerOptionValueDescription description = new com.salesmanager.core.business.customer.model.attribute.CustomerOptionValueDescription();
+ Language lang = languageService.getByCode(desc.getLanguage());
+ if(lang==null) {
+ throw new ConversionException("Language is null for code " + description.getLanguage() + " use language ISO code [en, fr ...]");
+ }
+ description.setLanguage(lang);
+ description.setName(desc.getName());
+ description.setTitle(desc.getTitle());
+ description.setCustomerOptionValue(target);
+ descriptions.add(description);
+ }
+ target.setDescriptions(descriptions);
+ }
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+ return target;
+ }
+
+ @Override
+ protected CustomerOptionValue createTarget() {
+ return null;
+ }
+
+ public void setLanguageService(LanguageService languageService) {
+ this.languageService = languageService;
+ }
+
+ public LanguageService getLanguageService() {
+ return languageService;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerPopulator.java
new file mode 100644
index 0000000..f14487c
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerPopulator.java
@@ -0,0 +1,95 @@
+package com.salesmanager.web.populator.customer;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+
+public class PersistableCustomerPopulator extends
+ AbstractDataPopulator<Customer, PersistableCustomer> {
+
+ @Override
+ public PersistableCustomer populate(Customer source,
+ PersistableCustomer target, MerchantStore store, Language language)
+ throws ConversionException {
+
+
+ try {
+
+
+ if(source.getBilling()!=null) {
+ Address address = new Address();
+ address.setCity(source.getBilling().getCity());
+ address.setCompany(source.getBilling().getCompany());
+ address.setFirstName(source.getBilling().getFirstName());
+ address.setLastName(source.getBilling().getLastName());
+ address.setPostalCode(source.getBilling().getPostalCode());
+ address.setPhone(source.getBilling().getTelephone());
+ if(source.getBilling().getTelephone()==null) {
+ address.setPhone(source.getBilling().getTelephone());
+ }
+ address.setAddress(source.getBilling().getAddress());
+ if(source.getBilling().getCountry()!=null) {
+ address.setCountry(source.getBilling().getCountry().getIsoCode());
+ }
+ if(source.getBilling().getZone()!=null) {
+ address.setZone(source.getBilling().getZone().getCode());
+ }
+
+ target.setBilling(address);
+ }
+
+ if(source.getDelivery()!=null) {
+ Address address = new Address();
+ address.setCity(source.getDelivery().getCity());
+ address.setCompany(source.getDelivery().getCompany());
+ address.setFirstName(source.getDelivery().getFirstName());
+ address.setLastName(source.getDelivery().getLastName());
+ address.setPostalCode(source.getDelivery().getPostalCode());
+ address.setPhone(source.getDelivery().getTelephone());
+ if(source.getDelivery().getCountry()!=null) {
+ address.setCountry(source.getDelivery().getCountry().getIsoCode());
+ }
+ if(source.getDelivery().getZone()!=null) {
+ address.setZone(source.getDelivery().getZone().getCode());
+ }
+
+ target.setDelivery(address);
+ }
+
+ target.setId(source.getId());
+ target.setEmailAddress(source.getEmailAddress());
+ if(source.getGender()!=null) {
+ target.setGender(source.getGender().name());
+ }
+ if(source.getDefaultLanguage()!=null) {
+ target.setLanguage(source.getDefaultLanguage().getCode());
+ }
+ target.setUserName(source.getNick());
+ target.setStoreCode(store.getCode());
+ if(source.getDefaultLanguage()!=null) {
+ target.setLanguage(source.getDefaultLanguage().getCode());
+ } else {
+ target.setLanguage(store.getDefaultLanguage().getCode());
+ }
+
+
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+ return target;
+
+ }
+
+ @Override
+ protected PersistableCustomer createTarget() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerShippingAddressPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerShippingAddressPopulator.java
new file mode 100644
index 0000000..5c8c081
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/PersistableCustomerShippingAddressPopulator.java
@@ -0,0 +1,97 @@
+package com.salesmanager.web.populator.customer;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.salesmanager.core.business.common.model.Delivery;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+
+public class PersistableCustomerShippingAddressPopulator extends AbstractDataPopulator<Address, Customer>
+{
+
+ @Override
+ public Customer populate( Address source, Customer target, MerchantStore store, Language language )
+ throws ConversionException
+ {
+
+
+ if( target.getDelivery() == null){
+
+ Delivery delivery=new Delivery();
+ delivery.setFirstName( source.getFirstName()) ;
+ delivery.setLastName( source.getLastName() );
+
+ if(StringUtils.isNotBlank( source.getAddress())){
+ delivery.setAddress( source.getAddress() );
+ }
+
+ if(StringUtils.isNotBlank( source.getCity())){
+ delivery.setCity( source.getCity() );
+ }
+
+ if(StringUtils.isNotBlank( source.getCompany())){
+ delivery.setCompany( source.getCompany() );
+ }
+
+ if(StringUtils.isNotBlank( source.getPhone())){
+ delivery.setTelephone( source.getPhone());
+ }
+
+ if(StringUtils.isNotBlank( source.getPostalCode())){
+ delivery.setPostalCode( source.getPostalCode());
+ }
+
+ if(StringUtils.isNotBlank( source.getStateProvince())){
+ delivery.setPostalCode( source.getStateProvince());
+ }
+
+ target.setDelivery( delivery );
+ }
+ else{
+ target.getDelivery().setFirstName( source.getFirstName() );
+ target.getDelivery().setLastName( source.getLastName() );
+
+ // lets fill optional data now
+
+ if(StringUtils.isNotBlank( source.getAddress())){
+ target.getDelivery().setAddress( source.getAddress() );
+ }
+
+ if(StringUtils.isNotBlank( source.getCity())){
+ target.getDelivery().setCity( source.getCity() );
+ }
+
+ if(StringUtils.isNotBlank( source.getCompany())){
+ target.getDelivery().setCompany( source.getCompany() );
+ }
+
+ if(StringUtils.isNotBlank( source.getPhone())){
+ target.getDelivery().setTelephone( source.getPhone());
+ }
+
+ if(StringUtils.isNotBlank( source.getPostalCode())){
+ target.getDelivery().setPostalCode( source.getPostalCode());
+ }
+
+ if(StringUtils.isNotBlank( source.getStateProvince())){
+ target.getDelivery().setPostalCode( source.getStateProvince());
+ }
+ }
+
+ return target;
+
+ }
+
+ @Override
+ protected Customer createTarget()
+ {
+ return null;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/customer/ReadableCustomerPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/ReadableCustomerPopulator.java
new file mode 100644
index 0000000..3ffed6e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/customer/ReadableCustomerPopulator.java
@@ -0,0 +1,114 @@
+package com.salesmanager.web.populator.customer;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.model.attribute.CustomerAttribute;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+import com.salesmanager.web.entity.customer.attribute.CustomerOptionDescription;
+import com.salesmanager.web.entity.customer.attribute.CustomerOptionValueDescription;
+import com.salesmanager.web.entity.customer.attribute.ReadableCustomerAttribute;
+import com.salesmanager.web.entity.customer.attribute.ReadableCustomerOption;
+import com.salesmanager.web.entity.customer.attribute.ReadableCustomerOptionValue;
+
+public class ReadableCustomerPopulator extends
+ AbstractDataPopulator<Customer, ReadableCustomer> {
+
+
+
+ @Override
+ public ReadableCustomer populate(Customer source, ReadableCustomer target,
+ MerchantStore store, Language language) throws ConversionException {
+
+ try {
+
+ if(source.getId()!=null && source.getId()>0) {
+ target.setId(source.getId());
+ }
+ target.setEmailAddress(source.getEmailAddress());
+ if(source.getBilling()!=null) {
+ Address address = new Address();
+ address.setAddress(source.getBilling().getAddress());
+ address.setCity(source.getBilling().getCity());
+ address.setCompany(source.getBilling().getCompany());
+ address.setFirstName(source.getBilling().getFirstName());
+ address.setLastName(source.getBilling().getLastName());
+ address.setPostalCode(source.getBilling().getPostalCode());
+ address.setPhone(source.getBilling().getTelephone());
+ if(source.getBilling().getCountry()!=null) {
+ address.setCountry(source.getBilling().getCountry().getIsoCode());
+ }
+ if(source.getBilling().getZone()!=null) {
+ address.setZone(source.getBilling().getZone().getCode());
+ }
+
+ target.setFirstName(address.getFirstName());
+ target.setLastName(address.getLastName());
+
+ target.setBilling(address);
+ }
+
+ if(source.getDelivery()!=null) {
+ Address address = new Address();
+ address.setCity(source.getDelivery().getCity());
+ address.setAddress(source.getDelivery().getAddress());
+ address.setCompany(source.getDelivery().getCompany());
+ address.setFirstName(source.getDelivery().getFirstName());
+ address.setLastName(source.getDelivery().getLastName());
+ address.setPostalCode(source.getDelivery().getPostalCode());
+ address.setPhone(source.getDelivery().getTelephone());
+ if(source.getDelivery().getCountry()!=null) {
+ address.setCountry(source.getDelivery().getCountry().getIsoCode());
+ }
+ if(source.getDelivery().getZone()!=null) {
+ address.setZone(source.getDelivery().getZone().getCode());
+ }
+
+ target.setDelivery(address);
+ }
+
+ if(source.getAttributes()!=null) {
+ for(CustomerAttribute attribute : source.getAttributes()) {
+ ReadableCustomerAttribute readableAttribute = new ReadableCustomerAttribute();
+ readableAttribute.setId(attribute.getId());
+ ReadableCustomerOption option = new ReadableCustomerOption();
+ option.setId(attribute.getCustomerOption().getId());
+ option.setCode(attribute.getCustomerOption().getCode());
+
+ CustomerOptionDescription d = new CustomerOptionDescription();
+ d.setDescription(attribute.getCustomerOption().getDescriptionsSettoList().get(0).getDescription());
+ d.setName(attribute.getCustomerOption().getDescriptionsSettoList().get(0).getName());
+ option.setDescription(d);
+
+ readableAttribute.setCustomerOption(option);
+
+ ReadableCustomerOptionValue optionValue = new ReadableCustomerOptionValue();
+ optionValue.setId(attribute.getCustomerOptionValue().getId());
+ CustomerOptionValueDescription vd = new CustomerOptionValueDescription();
+ vd.setDescription(attribute.getCustomerOptionValue().getDescriptionsSettoList().get(0).getDescription());
+ vd.setName(attribute.getCustomerOptionValue().getDescriptionsSettoList().get(0).getName());
+ optionValue.setCode(attribute.getCustomerOptionValue().getCode());
+ optionValue.setDescription(vd);
+
+
+ readableAttribute.setCustomerOptionValue(optionValue);
+ target.getAttributes().add(readableAttribute);
+ }
+ }
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+ return target;
+ }
+
+ @Override
+ protected ReadableCustomer createTarget() {
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/manufacturer/PersistableManufacturerPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/manufacturer/PersistableManufacturerPopulator.java
new file mode 100644
index 0000000..c545256
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/manufacturer/PersistableManufacturerPopulator.java
@@ -0,0 +1,84 @@
+
+package com.salesmanager.web.populator.manufacturer;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.manufacturer.ManufacturerDescription;
+import com.salesmanager.web.entity.catalog.manufacturer.PersistableManufacturer;
+
+
+/**
+ * @author Carl Samson
+ *
+ */
+
+
+public class PersistableManufacturerPopulator extends AbstractDataPopulator<PersistableManufacturer, Manufacturer>
+{
+
+
+ private LanguageService languageService;
+
+ @Override
+ public Manufacturer populate(PersistableManufacturer source,
+ Manufacturer target, MerchantStore store, Language language)
+ throws ConversionException {
+
+ Validate.notNull(languageService, "Requires to set LanguageService");
+
+ try {
+
+ target.setMerchantStore(store);
+
+
+ if(!CollectionUtils.isEmpty(source.getDescriptions())) {
+ Set<com.salesmanager.core.business.catalog.product.model.manufacturer.ManufacturerDescription> descriptions = new HashSet<com.salesmanager.core.business.catalog.product.model.manufacturer.ManufacturerDescription>();
+ for(ManufacturerDescription description : source.getDescriptions()) {
+ com.salesmanager.core.business.catalog.product.model.manufacturer.ManufacturerDescription desc = new com.salesmanager.core.business.catalog.product.model.manufacturer.ManufacturerDescription();
+ desc.setManufacturer(target);
+ desc.setDescription(description.getDescription());
+ desc.setName(description.getName());
+ Language lang = languageService.getByCode(description.getLanguage());
+ if(lang==null) {
+ throw new ConversionException("Language is null for code " + description.getLanguage() + " use language ISO code [en, fr ...]");
+ }
+ desc.setLanguage(lang);
+ descriptions.add(desc);
+ }
+ target.setDescriptions(descriptions);
+ }
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+
+ return target;
+ }
+
+ @Override
+ protected Manufacturer createTarget() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void setLanguageService(LanguageService languageService) {
+ this.languageService = languageService;
+ }
+
+ public LanguageService getLanguageService() {
+ return languageService;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/manufacturer/ReadableManufacturerPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/manufacturer/ReadableManufacturerPopulator.java
new file mode 100644
index 0000000..7890a15
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/manufacturer/ReadableManufacturerPopulator.java
@@ -0,0 +1,54 @@
+package com.salesmanager.web.populator.manufacturer;
+
+import java.util.Set;
+
+import com.salesmanager.core.business.catalog.product.model.manufacturer.ManufacturerDescription;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.manufacturer.ReadableManufacturer;
+
+public class ReadableManufacturerPopulator extends AbstractDataPopulator<com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer,ReadableManufacturer>
+{
+
+
+
+
+ @Override
+ public ReadableManufacturer populate(
+ com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer source,
+ ReadableManufacturer target, MerchantStore store, Language language) throws ConversionException {
+ target.setId(source.getId());
+ if(source.getDescriptions()!=null && source.getDescriptions().size()>0) {
+
+ Set<ManufacturerDescription> descriptions = source.getDescriptions();
+ ManufacturerDescription description = null;
+ for(ManufacturerDescription desc : descriptions) {
+ if(desc.getLanguage().getCode().equals(language.getCode())) {
+ description = desc;
+ break;
+ }
+ }
+
+ target.setOrder(source.getOrder());
+ target.setId(source.getId());
+
+ if (description != null) {
+ com.salesmanager.web.entity.catalog.manufacturer.ManufacturerDescription d = new com.salesmanager.web.entity.catalog.manufacturer.ManufacturerDescription();
+ d.setName(description.getName());
+ d.setDescription(description.getDescription());
+ target.setDescription(d);
+ }
+
+ }
+
+ return target;
+ }
+
+ @Override
+ protected ReadableManufacturer createTarget()
+ {
+ return null;
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/OrderProductPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/OrderProductPopulator.java
new file mode 100644
index 0000000..c978eef
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/OrderProductPopulator.java
@@ -0,0 +1,191 @@
+package com.salesmanager.web.populator.order;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductAttribute;
+import com.salesmanager.core.business.catalog.product.model.file.DigitalProduct;
+import com.salesmanager.core.business.catalog.product.model.price.FinalPrice;
+import com.salesmanager.core.business.catalog.product.model.price.ProductPrice;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.catalog.product.service.file.DigitalProductService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProduct;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductAttribute;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductDownload;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductPrice;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.constants.ApplicationConstants;
+
+public class OrderProductPopulator extends
+ AbstractDataPopulator<ShoppingCartItem, OrderProduct> {
+
+ private ProductService productService;
+ private DigitalProductService digitalProductService;
+ private ProductAttributeService productAttributeService;
+
+
+ public ProductAttributeService getProductAttributeService() {
+ return productAttributeService;
+ }
+
+ public void setProductAttributeService(
+ ProductAttributeService productAttributeService) {
+ this.productAttributeService = productAttributeService;
+ }
+
+ public DigitalProductService getDigitalProductService() {
+ return digitalProductService;
+ }
+
+ public void setDigitalProductService(DigitalProductService digitalProductService) {
+ this.digitalProductService = digitalProductService;
+ }
+
+ /**
+ * Converts a ShoppingCartItem carried in the ShoppingCart to an OrderProduct
+ * that will be saved in the system
+ */
+ @Override
+ public OrderProduct populate(ShoppingCartItem source, OrderProduct target,
+ MerchantStore store, Language language) throws ConversionException {
+
+ Validate.notNull(productService,"productService must be set");
+ Validate.notNull(digitalProductService,"digitalProductService must be set");
+ Validate.notNull(productAttributeService,"productAttributeService must be set");
+
+
+ try {
+ Product modelProduct = productService.getById(source.getProductId());
+ if(modelProduct==null) {
+ throw new ConversionException("Cannot get product with id (productId) " + source.getProductId());
+ }
+
+ if(modelProduct.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid product id " + source.getProductId());
+ }
+
+ DigitalProduct digitalProduct = digitalProductService.getByProduct(store, modelProduct);
+
+ if(digitalProduct!=null) {
+ OrderProductDownload orderProductDownload = new OrderProductDownload();
+ orderProductDownload.setOrderProductFilename(digitalProduct.getProductFileName());
+ orderProductDownload.setOrderProduct(target);
+ orderProductDownload.setDownloadCount(0);
+ orderProductDownload.setMaxdays(ApplicationConstants.MAX_DOWNLOAD_DAYS);
+ target.getDownloads().add(orderProductDownload);
+ }
+
+ target.setOneTimeCharge(source.getItemPrice());
+ target.setProductName(source.getProduct().getDescriptions().iterator().next().getName());
+ target.setProductQuantity(source.getQuantity());
+ target.setSku(source.getProduct().getSku());
+
+ FinalPrice finalPrice = source.getFinalPrice();
+ if(finalPrice==null) {
+ throw new ConversionException("Object final price not populated in shoppingCartItem (source)");
+ }
+ //Default price
+ OrderProductPrice orderProductPrice = orderProductPrice(finalPrice);
+ orderProductPrice.setOrderProduct(target);
+
+ Set<OrderProductPrice> prices = new HashSet<OrderProductPrice>();
+ prices.add(orderProductPrice);
+
+ //Other prices
+ List<FinalPrice> otherPrices = finalPrice.getAdditionalPrices();
+ if(otherPrices!=null) {
+ for(FinalPrice otherPrice : otherPrices) {
+ OrderProductPrice other = orderProductPrice(otherPrice);
+ other.setOrderProduct(target);
+ prices.add(other);
+ }
+ }
+
+ target.setPrices(prices);
+
+ //OrderProductAttribute
+ Set<ShoppingCartAttributeItem> attributeItems = source.getAttributes();
+ if(!CollectionUtils.isEmpty(attributeItems)) {
+ Set<OrderProductAttribute> attributes = new HashSet<OrderProductAttribute>();
+ for(ShoppingCartAttributeItem attribute : attributeItems) {
+ OrderProductAttribute orderProductAttribute = new OrderProductAttribute();
+ orderProductAttribute.setOrderProduct(target);
+ Long id = attribute.getProductAttributeId();
+ ProductAttribute attr = productAttributeService.getById(id);
+ if(attr==null) {
+ throw new ConversionException("Attribute id " + id + " does not exists");
+ }
+
+ if(attr.getProduct().getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Attribute id " + id + " invalid for this store");
+ }
+
+ orderProductAttribute.setProductAttributeIsFree(attr.getProductAttributeIsFree());
+ orderProductAttribute.setProductAttributeName(attr.getProductOption().getDescriptionsSettoList().get(0).getName());
+ orderProductAttribute.setProductAttributeValueName(attr.getProductOptionValue().getDescriptionsSettoList().get(0).getName());
+ orderProductAttribute.setProductAttributePrice(attr.getProductAttributePrice());
+ orderProductAttribute.setProductAttributeWeight(attr.getProductAttributeWeight());
+ orderProductAttribute.setProductOptionId(attr.getProductOption().getId());
+ orderProductAttribute.setProductOptionValueId(attr.getProductOptionValue().getId());
+ attributes.add(orderProductAttribute);
+ }
+ target.setOrderAttributes(attributes);
+ }
+
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+
+ return target;
+ }
+
+ @Override
+ protected OrderProduct createTarget() {
+ return null;
+ }
+
+ public void setProductService(ProductService productService) {
+ this.productService = productService;
+ }
+
+ public ProductService getProductService() {
+ return productService;
+ }
+
+ private OrderProductPrice orderProductPrice(FinalPrice price) {
+
+ OrderProductPrice orderProductPrice = new OrderProductPrice();
+
+ ProductPrice productPrice = price.getProductPrice();
+
+ orderProductPrice.setDefaultPrice(productPrice.isDefaultPrice());
+
+ orderProductPrice.setProductPrice(price.getFinalPrice());
+ orderProductPrice.setProductPriceCode(productPrice.getCode());
+ if(productPrice.getDescriptions()!=null && productPrice.getDescriptions().size()>0) {
+ orderProductPrice.setProductPriceName(productPrice.getDescriptions().iterator().next().getName());
+ }
+ if(price.isDiscounted()) {
+ orderProductPrice.setProductPriceSpecial(productPrice.getProductPriceSpecialAmount());
+ orderProductPrice.setProductPriceSpecialStartDate(productPrice.getProductPriceSpecialStartDate());
+ orderProductPrice.setProductPriceSpecialEndDate(productPrice.getProductPriceSpecialEndDate());
+ }
+
+ return orderProductPrice;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/PersistableOrderPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/PersistableOrderPopulator.java
new file mode 100644
index 0000000..0b2351a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/PersistableOrderPopulator.java
@@ -0,0 +1,225 @@
+package com.salesmanager.web.populator.order;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.catalog.product.service.file.DigitalProductService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProduct;
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatus;
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatusHistory;
+import com.salesmanager.core.business.order.model.payment.CreditCard;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.currency.model.Currency;
+import com.salesmanager.core.business.reference.currency.service.CurrencyService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.core.utils.CreditCardUtils;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.order.OrderTotal;
+import com.salesmanager.web.entity.order.PersistableOrder;
+import com.salesmanager.web.entity.order.PersistableOrderProduct;
+import com.salesmanager.web.utils.LocaleUtils;
+
+public class PersistableOrderPopulator extends
+ AbstractDataPopulator<PersistableOrder, Order> {
+
+ private CustomerService customerService;
+ private CountryService countryService;
+ private CurrencyService currencyService;
+
+
+ private ZoneService zoneService;
+ private ProductService productService;
+ private DigitalProductService digitalProductService;
+ private ProductAttributeService productAttributeService;
+
+ @Override
+ public Order populate(PersistableOrder source, Order target,
+ MerchantStore store, Language language) throws ConversionException {
+
+
+ Validate.notNull(productService,"productService must be set");
+ Validate.notNull(digitalProductService,"digitalProductService must be set");
+ Validate.notNull(productAttributeService,"productAttributeService must be set");
+ Validate.notNull(customerService,"customerService must be set");
+ Validate.notNull(countryService,"countryService must be set");
+ Validate.notNull(zoneService,"zoneService must be set");
+ Validate.notNull(currencyService,"currencyService must be set");
+
+ try {
+
+
+ Map<String,Country> countriesMap = countryService.getCountriesMap(language);
+ Map<String,Zone> zonesMap = zoneService.getZones(language);
+ /** customer **/
+ PersistableCustomer customer = source.getCustomer();
+ if(customer!=null) {
+ if(customer.getId()!=null && customer.getId()>0) {
+ Customer modelCustomer = customerService.getById(customer.getId());
+ if(modelCustomer==null) {
+ throw new ConversionException("Customer id " + customer.getId() + " does not exists");
+ }
+ if(modelCustomer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Customer id " + customer.getId() + " does not exists for store " + store.getCode());
+ }
+ target.setCustomerId(modelCustomer.getId());
+ target.setBilling(modelCustomer.getBilling());
+ target.setDelivery(modelCustomer.getDelivery());
+ target.setCustomerEmailAddress(source.getCustomer().getEmailAddress());
+
+
+
+ }
+ }
+
+ target.setLocale(LocaleUtils.getLocale(store));
+
+ CreditCard creditCard = source.getCreditCard();
+ if(creditCard!=null) {
+ String maskedNumber = CreditCardUtils.maskCardNumber(creditCard.getCcNumber());
+ creditCard.setCcNumber(maskedNumber);
+ target.setCreditCard(creditCard);
+ }
+
+ Currency currency = null;
+ try {
+ currency = currencyService.getByCode(source.getCurrency());
+ } catch(Exception e) {
+ throw new ConversionException("Currency not found for code " + source.getCurrency());
+ }
+
+ if(currency==null) {
+ throw new ConversionException("Currency not found for code " + source.getCurrency());
+ }
+
+ target.setCurrency(currency);
+ target.setDatePurchased(source.getDatePurchased());
+ //target.setCurrency(store.getCurrency());
+ target.setCurrencyValue(new BigDecimal(0));
+ target.setMerchant(store);
+ target.setStatus(source.getOrderStatus());
+ target.setPaymentModuleCode(source.getPaymentModule());
+ target.setPaymentType(source.getPaymentType());
+ target.setShippingModuleCode(source.getShippingModule());
+ if(source.getPreviousOrderStatus()!=null) {
+ List<OrderStatus> orderStatusList = source.getPreviousOrderStatus();
+ for(OrderStatus status : orderStatusList) {
+ OrderStatusHistory statusHistory = new OrderStatusHistory();
+ statusHistory.setStatus(status);
+ statusHistory.setOrder(target);
+ target.getOrderHistory().add(statusHistory);
+ }
+ }
+
+ List<PersistableOrderProduct> products = source.getOrderProductItems();
+ if(CollectionUtils.isEmpty(products)) {
+ throw new ConversionException("Requires at least 1 PersistableOrderProduct");
+ }
+ PersistableOrderProductPopulator orderProductPopulator = new PersistableOrderProductPopulator();
+ orderProductPopulator.setProductAttributeService(productAttributeService);
+ orderProductPopulator.setProductService(productService);
+ orderProductPopulator.setDigitalProductService(digitalProductService);
+
+ for(PersistableOrderProduct orderProduct : products) {
+ OrderProduct modelOrderProduct = new OrderProduct();
+ orderProductPopulator.populate(orderProduct, modelOrderProduct, store, language);
+ target.getOrderProducts().add(modelOrderProduct);
+ }
+
+ List<OrderTotal> orderTotals = source.getTotals();
+ if(CollectionUtils.isNotEmpty(orderTotals)) {
+ for(OrderTotal total : orderTotals) {
+ com.salesmanager.core.business.order.model.OrderTotal totalModel = new com.salesmanager.core.business.order.model.OrderTotal();
+ totalModel.setModule(total.getModule());
+ totalModel.setOrder(target);
+ totalModel.setOrderTotalCode(total.getCode());
+ totalModel.setTitle(total.getTitle());
+ totalModel.setValue(total.getValue());
+ target.getOrderTotal().add(totalModel);
+ }
+ }
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+
+ return target;
+ }
+
+ @Override
+ protected Order createTarget() {
+ return null;
+ }
+
+ public void setProductService(ProductService productService) {
+ this.productService = productService;
+ }
+
+ public ProductService getProductService() {
+ return productService;
+ }
+
+ public void setDigitalProductService(DigitalProductService digitalProductService) {
+ this.digitalProductService = digitalProductService;
+ }
+
+ public DigitalProductService getDigitalProductService() {
+ return digitalProductService;
+ }
+
+ public void setProductAttributeService(ProductAttributeService productAttributeService) {
+ this.productAttributeService = productAttributeService;
+ }
+
+ public ProductAttributeService getProductAttributeService() {
+ return productAttributeService;
+ }
+
+ public CustomerService getCustomerService() {
+ return customerService;
+ }
+
+ public void setCustomerService(CustomerService customerService) {
+ this.customerService = customerService;
+ }
+
+ public CountryService getCountryService() {
+ return countryService;
+ }
+
+ public void setCountryService(CountryService countryService) {
+ this.countryService = countryService;
+ }
+
+ public CurrencyService getCurrencyService() {
+ return currencyService;
+ }
+
+ public void setCurrencyService(CurrencyService currencyService) {
+ this.currencyService = currencyService;
+ }
+
+ public ZoneService getZoneService() {
+ return zoneService;
+ }
+
+ public void setZoneService(ZoneService zoneService) {
+ this.zoneService = zoneService;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/PersistableOrderProductPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/PersistableOrderProductPopulator.java
new file mode 100644
index 0000000..48331c8
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/PersistableOrderProductPopulator.java
@@ -0,0 +1,167 @@
+package com.salesmanager.web.populator.order;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.file.DigitalProduct;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.catalog.product.service.file.DigitalProductService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProduct;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductAttribute;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductDownload;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductPrice;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.constants.ApplicationConstants;
+import com.salesmanager.web.entity.catalog.product.attribute.ProductAttribute;
+import com.salesmanager.web.entity.order.PersistableOrderProduct;
+
+public class PersistableOrderProductPopulator extends
+ AbstractDataPopulator<PersistableOrderProduct, OrderProduct> {
+
+ private ProductService productService;
+ private DigitalProductService digitalProductService;
+ private ProductAttributeService productAttributeService;
+
+
+ public ProductAttributeService getProductAttributeService() {
+ return productAttributeService;
+ }
+
+ public void setProductAttributeService(
+ ProductAttributeService productAttributeService) {
+ this.productAttributeService = productAttributeService;
+ }
+
+ public DigitalProductService getDigitalProductService() {
+ return digitalProductService;
+ }
+
+ public void setDigitalProductService(DigitalProductService digitalProductService) {
+ this.digitalProductService = digitalProductService;
+ }
+
+ /**
+ * Converts a ShoppingCartItem carried in the ShoppingCart to an OrderProduct
+ * that will be saved in the system
+ */
+ @Override
+ public OrderProduct populate(PersistableOrderProduct source, OrderProduct target,
+ MerchantStore store, Language language) throws ConversionException {
+
+ Validate.notNull(productService,"productService must be set");
+ Validate.notNull(digitalProductService,"digitalProductService must be set");
+ Validate.notNull(productAttributeService,"productAttributeService must be set");
+
+
+ try {
+ Product modelProduct = productService.getById(source.getProduct().getId());
+ if(modelProduct==null) {
+ throw new ConversionException("Cannot get product with id (productId) " + source.getProduct().getId());
+ }
+
+ if(modelProduct.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Invalid product id " + source.getProduct().getId());
+ }
+
+ DigitalProduct digitalProduct = digitalProductService.getByProduct(store, modelProduct);
+
+ if(digitalProduct!=null) {
+ OrderProductDownload orderProductDownload = new OrderProductDownload();
+ orderProductDownload.setOrderProductFilename(digitalProduct.getProductFileName());
+ orderProductDownload.setOrderProduct(target);
+ orderProductDownload.setDownloadCount(0);
+ orderProductDownload.setMaxdays(ApplicationConstants.MAX_DOWNLOAD_DAYS);
+ target.getDownloads().add(orderProductDownload);
+ }
+
+ target.setOneTimeCharge(source.getPrice());
+ target.setProductName(source.getProduct().getDescription().getName());
+ target.setProductQuantity(source.getOrderedQuantity());
+ target.setSku(source.getProduct().getSku());
+
+ OrderProductPrice orderProductPrice = new OrderProductPrice();
+ orderProductPrice.setDefaultPrice(true);
+ orderProductPrice.setProductPrice(source.getPrice());
+ orderProductPrice.setOrderProduct(target);
+
+
+
+ Set<OrderProductPrice> prices = new HashSet<OrderProductPrice>();
+ prices.add(orderProductPrice);
+
+ /** DO NOT SUPPORT MUTIPLE PRICES **/
+/* //Other prices
+ List<FinalPrice> otherPrices = finalPrice.getAdditionalPrices();
+ if(otherPrices!=null) {
+ for(FinalPrice otherPrice : otherPrices) {
+ OrderProductPrice other = orderProductPrice(otherPrice);
+ other.setOrderProduct(target);
+ prices.add(other);
+ }
+ }*/
+
+ target.setPrices(prices);
+
+ //OrderProductAttribute
+ List<ProductAttribute> attributeItems = source.getAttributes();
+ if(!CollectionUtils.isEmpty(attributeItems)) {
+ Set<OrderProductAttribute> attributes = new HashSet<OrderProductAttribute>();
+ for(ProductAttribute attribute : attributeItems) {
+ OrderProductAttribute orderProductAttribute = new OrderProductAttribute();
+ orderProductAttribute.setOrderProduct(target);
+ Long id = attribute.getId();
+ com.salesmanager.core.business.catalog.product.model.attribute.ProductAttribute attr = productAttributeService.getById(id);
+ if(attr==null) {
+ throw new ConversionException("Attribute id " + id + " does not exists");
+ }
+
+ if(attr.getProduct().getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ throw new ConversionException("Attribute id " + id + " invalid for this store");
+ }
+
+ orderProductAttribute.setProductAttributeIsFree(attr.getProductAttributeIsFree());
+ orderProductAttribute.setProductAttributeName(attr.getProductOption().getDescriptionsSettoList().get(0).getName());
+ orderProductAttribute.setProductAttributeValueName(attr.getProductOptionValue().getDescriptionsSettoList().get(0).getName());
+ orderProductAttribute.setProductAttributePrice(attr.getProductAttributePrice());
+ orderProductAttribute.setProductAttributeWeight(attr.getProductAttributeWeight());
+ orderProductAttribute.setProductOptionId(attr.getProductOption().getId());
+ orderProductAttribute.setProductOptionValueId(attr.getProductOptionValue().getId());
+ attributes.add(orderProductAttribute);
+ }
+ target.setOrderAttributes(attributes);
+ }
+
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+
+ return target;
+ }
+
+ @Override
+ protected OrderProduct createTarget() {
+ return null;
+ }
+
+ public void setProductService(ProductService productService) {
+ this.productService = productService;
+ }
+
+ public ProductService getProductService() {
+ return productService;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderPopulator.java
new file mode 100644
index 0000000..bd101fa
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderPopulator.java
@@ -0,0 +1,151 @@
+package com.salesmanager.web.populator.order;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.OrderTotal;
+import com.salesmanager.core.business.order.model.OrderTotalType;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.order.ReadableOrder;
+
+public class ReadableOrderPopulator extends
+ AbstractDataPopulator<Order, ReadableOrder> {
+
+ @Override
+ public ReadableOrder populate(Order source, ReadableOrder target,
+ MerchantStore store, Language language) throws ConversionException {
+
+
+
+ target.setId(source.getId());
+ target.setDatePurchased(source.getDatePurchased());
+ target.setOrderStatus(source.getStatus());
+ target.setCurrency(source.getCurrency().getCode());
+ target.setCurrencyModel(source.getCurrency());
+ com.salesmanager.web.entity.order.OrderTotal taxTotal = null;
+ com.salesmanager.web.entity.order.OrderTotal shippingTotal = null;
+
+
+ if(source.getBilling()!=null) {
+ Address address = new Address();
+ address.setCity(source.getBilling().getCity());
+ address.setAddress(source.getBilling().getAddress());
+ address.setCompany(source.getBilling().getCompany());
+ address.setFirstName(source.getBilling().getFirstName());
+ address.setLastName(source.getBilling().getLastName());
+ address.setPostalCode(source.getBilling().getPostalCode());
+ address.setPhone(source.getBilling().getTelephone());
+ if(source.getBilling().getCountry()!=null) {
+ address.setCountry(source.getBilling().getCountry().getIsoCode());
+ }
+ if(source.getBilling().getZone()!=null) {
+ address.setZone(source.getBilling().getZone().getCode());
+ }
+
+ target.setBilling(address);
+ }
+
+ if(source.getDelivery()!=null) {
+ Address address = new Address();
+ address.setCity(source.getDelivery().getCity());
+ address.setAddress(source.getDelivery().getAddress())
+; address.setCompany(source.getDelivery().getCompany());
+ address.setFirstName(source.getDelivery().getFirstName());
+ address.setLastName(source.getDelivery().getLastName());
+ address.setPostalCode(source.getDelivery().getPostalCode());
+ address.setPhone(source.getDelivery().getTelephone());
+ if(source.getDelivery().getCountry()!=null) {
+ address.setCountry(source.getDelivery().getCountry().getIsoCode());
+ }
+ if(source.getDelivery().getZone()!=null) {
+ address.setZone(source.getDelivery().getZone().getCode());
+ }
+
+ target.setDelivery(address);
+ }
+
+ List<com.salesmanager.web.entity.order.OrderTotal> totals = new ArrayList<com.salesmanager.web.entity.order.OrderTotal>();
+ for(OrderTotal t : source.getOrderTotal()) {
+ if(t.getOrderTotalType()==null) {
+ continue;
+ }
+ if(t.getOrderTotalType().name().equals(OrderTotalType.TOTAL.name())) {
+ com.salesmanager.web.entity.order.OrderTotal totalTotal = createTotal(t);
+ target.setTotal(totalTotal);
+ totals.add(totalTotal);
+ }
+ else if(t.getOrderTotalType().name().equals(OrderTotalType.TAX.name())) {
+ com.salesmanager.web.entity.order.OrderTotal totalTotal = createTotal(t);
+ if(taxTotal==null) {
+ taxTotal = totalTotal;
+ } else {
+ BigDecimal v = taxTotal.getValue();
+ v = v.add(totalTotal.getValue());
+ taxTotal.setValue(v);
+ }
+ target.setTax(totalTotal);
+ totals.add(totalTotal);
+ }
+ else if(t.getOrderTotalType().name().equals(OrderTotalType.SHIPPING.name())) {
+ com.salesmanager.web.entity.order.OrderTotal totalTotal = createTotal(t);
+ if(shippingTotal==null) {
+ shippingTotal = totalTotal;
+ } else {
+ BigDecimal v = shippingTotal.getValue();
+ v = v.add(totalTotal.getValue());
+ shippingTotal.setValue(v);
+ }
+ target.setShipping(totalTotal);
+ totals.add(totalTotal);
+ }
+ else if(t.getOrderTotalType().name().equals(OrderTotalType.HANDLING.name())) {
+ com.salesmanager.web.entity.order.OrderTotal totalTotal = createTotal(t);
+ if(shippingTotal==null) {
+ shippingTotal = totalTotal;
+ } else {
+ BigDecimal v = shippingTotal.getValue();
+ v = v.add(totalTotal.getValue());
+ shippingTotal.setValue(v);
+ }
+ target.setShipping(totalTotal);
+ totals.add(totalTotal);
+ }
+ else if(t.getOrderTotalType().name().equals(OrderTotalType.SUBTOTAL.name())) {
+ com.salesmanager.web.entity.order.OrderTotal subTotal = createTotal(t);
+ totals.add(subTotal);
+
+ }
+ else {
+ com.salesmanager.web.entity.order.OrderTotal otherTotal = createTotal(t);
+ totals.add(otherTotal);
+ }
+ }
+
+ target.setTotals(totals);
+
+ return target;
+ }
+
+ private com.salesmanager.web.entity.order.OrderTotal createTotal(OrderTotal t) {
+ com.salesmanager.web.entity.order.OrderTotal totalTotal = new com.salesmanager.web.entity.order.OrderTotal();
+ totalTotal.setCode(t.getOrderTotalCode());
+ totalTotal.setId(t.getId());
+ totalTotal.setModule(t.getModule());
+ totalTotal.setOrder(t.getSortOrder());
+ totalTotal.setValue(t.getValue());
+ return totalTotal;
+ }
+
+ @Override
+ protected ReadableOrder createTarget() {
+
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderProductDownloadPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderProductDownloadPopulator.java
new file mode 100644
index 0000000..8a8d0e2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderProductDownloadPopulator.java
@@ -0,0 +1,39 @@
+package com.salesmanager.web.populator.order;
+
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductDownload;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.order.ReadableOrderProductDownload;
+
+public class ReadableOrderProductDownloadPopulator extends
+ AbstractDataPopulator<OrderProductDownload, ReadableOrderProductDownload> {
+
+ @Override
+ public ReadableOrderProductDownload populate(OrderProductDownload source,
+ ReadableOrderProductDownload target, MerchantStore store,
+ Language language) throws ConversionException {
+ try {
+
+ target.setProductName(source.getOrderProduct().getProductName());
+ target.setDownloadCount(source.getDownloadCount());
+ target.setDownloadExpiryDays(source.getMaxdays());
+ target.setId(source.getId());
+ target.setFileName(source.getOrderProductFilename());
+ target.setOrderId(source.getOrderProduct().getOrder().getId());
+
+ return target;
+
+ } catch(Exception e) {
+ throw new ConversionException(e);
+ }
+ }
+
+ @Override
+ protected ReadableOrderProductDownload createTarget() {
+ return new ReadableOrderProductDownload();
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderProductPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderProductPopulator.java
new file mode 100644
index 0000000..f67d1a7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderProductPopulator.java
@@ -0,0 +1,117 @@
+package com.salesmanager.web.populator.order;
+
+import java.math.BigDecimal;
+import java.util.Set;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Validate;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.image.ProductImage;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProduct;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.entity.order.ReadableOrderProduct;
+import com.salesmanager.web.populator.catalog.ReadableProductPopulator;
+
+public class ReadableOrderProductPopulator extends
+ AbstractDataPopulator<OrderProduct, ReadableOrderProduct> {
+
+ private ProductService productService;
+ private PricingService pricingService;
+
+
+
+ @Override
+ public ReadableOrderProduct populate(OrderProduct source,
+ ReadableOrderProduct target, MerchantStore store, Language language)
+ throws ConversionException {
+
+ Validate.notNull(productService,"Requires ProductService");
+ Validate.notNull(pricingService,"Requires PricingService");
+ target.setId(source.getId());
+ target.setOrderedQuantity(source.getProductQuantity());
+ try {
+ target.setPrice(pricingService.getDisplayAmount(source.getOneTimeCharge(), store));
+ } catch(Exception e) {
+ throw new ConversionException("Cannot convert price",e);
+ }
+ target.setProductName(source.getProductName());
+ target.setSku(source.getSku());
+
+ //subtotal = price * quantity
+ BigDecimal subTotal = source.getOneTimeCharge();
+ subTotal = subTotal.multiply(new BigDecimal(source.getProductQuantity()));
+
+ try {
+ String subTotalPrice = pricingService.getDisplayAmount(subTotal, store);
+ target.setSubTotal(subTotalPrice);
+ } catch(Exception e) {
+ throw new ConversionException("Cannot format price",e);
+ }
+
+
+ if(productService!=null && pricingService!=null) {
+ String productSku = source.getSku();
+ if(!StringUtils.isBlank(productSku)) {
+ Product product = productService.getByCode(productSku, language);
+ if(product!=null) {
+
+
+
+ ReadableProductPopulator populator = new ReadableProductPopulator();
+ populator.setPricingService(pricingService);
+
+ ReadableProduct productProxy = populator.populate(product, new ReadableProduct(), store, language);
+ target.setProduct(productProxy);
+
+ Set<ProductImage> images = product.getImages();
+ ProductImage defaultImage = null;
+ if(images!=null) {
+ for(ProductImage image : images) {
+ if(defaultImage==null) {
+ defaultImage = image;
+ }
+ if(image.isDefaultImage()) {
+ defaultImage = image;
+ }
+ }
+ }
+ if(defaultImage!=null) {
+ target.setImage(defaultImage.getProductImage());
+ }
+ }
+ }
+ }
+
+ return target;
+ }
+
+ @Override
+ protected ReadableOrderProduct createTarget() {
+
+ return null;
+ }
+
+ public ProductService getProductService() {
+ return productService;
+ }
+
+ public void setProductService(ProductService productService) {
+ this.productService = productService;
+ }
+
+ public PricingService getPricingService() {
+ return pricingService;
+ }
+
+ public void setPricingService(PricingService pricingService) {
+ this.pricingService = pricingService;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderTotalPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderTotalPopulator.java
new file mode 100644
index 0000000..eabf946
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableOrderTotalPopulator.java
@@ -0,0 +1,78 @@
+package com.salesmanager.web.populator.order;
+
+import java.util.Locale;
+
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.OrderTotal;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.order.ReadableOrderTotal;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+
+public class ReadableOrderTotalPopulator extends
+ AbstractDataPopulator<OrderTotal, ReadableOrderTotal> {
+
+
+ private PricingService pricingService;
+
+
+ private LabelUtils messages;
+
+
+
+
+ @Override
+ public ReadableOrderTotal populate(OrderTotal source,
+ ReadableOrderTotal target, MerchantStore store, Language language)
+ throws ConversionException {
+
+ Validate.notNull(pricingService,"PricingService must be set");
+ Validate.notNull(messages,"LabelUtils must be set");
+
+ Locale locale = LocaleUtils.getLocale(language);
+
+ try {
+
+ target.setCode(source.getOrderTotalCode());
+ target.setId(source.getId());
+ target.setModule(source.getModule());
+ target.setOrder(source.getSortOrder());
+ target.setTitle(messages.getMessage(source.getOrderTotalCode(), locale, source.getOrderTotalCode()));
+ target.setValue(source.getValue());
+ target.setTotal(pricingService.getDisplayAmount(source.getValue(), store));
+
+ } catch(Exception e) {
+ throw new ConversionException(e);
+ }
+
+ return target;
+
+ }
+
+ @Override
+ protected ReadableOrderTotal createTarget() {
+ return new ReadableOrderTotal();
+ }
+
+ public PricingService getPricingService() {
+ return pricingService;
+ }
+
+ public void setPricingService(PricingService pricingService) {
+ this.pricingService = pricingService;
+ }
+
+ public LabelUtils getMessages() {
+ return messages;
+ }
+
+ public void setMessages(LabelUtils messages) {
+ this.messages = messages;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableShippingSummaryPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableShippingSummaryPopulator.java
new file mode 100644
index 0000000..e05588a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableShippingSummaryPopulator.java
@@ -0,0 +1,59 @@
+package com.salesmanager.web.populator.order;
+
+import org.apache.commons.lang.Validate;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shipping.model.ShippingSummary;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.order.ReadableShippingSummary;
+
+public class ReadableShippingSummaryPopulator extends
+ AbstractDataPopulator<ShippingSummary, ReadableShippingSummary> {
+
+ private PricingService pricingService;
+
+ @Override
+ public ReadableShippingSummary populate(ShippingSummary source,
+ ReadableShippingSummary target, MerchantStore store,
+ Language language) throws ConversionException {
+
+ Validate.notNull(pricingService,"PricingService must be set");
+
+ try {
+
+ target.setFreeShipping(source.isFreeShipping());
+ target.setHandling(source.getHandling());
+ target.setShipping(source.getShipping());
+ target.setShippingModule(source.getShippingModule());
+ target.setShippingOption(source.getShippingOption());
+ target.setTaxOnShipping(source.isTaxOnShipping());
+ target.setHandlingText(pricingService.getDisplayAmount(source.getHandling(), store));
+ target.setShippingText(pricingService.getDisplayAmount(source.getShipping(), store));
+
+ } catch(Exception e) {
+ throw new ConversionException(e);
+ }
+
+ return target;
+
+
+ }
+
+ @Override
+ protected ReadableShippingSummary createTarget() {
+ return new
+ ReadableShippingSummary();
+ }
+
+ public PricingService getPricingService() {
+ return pricingService;
+ }
+
+ public void setPricingService(PricingService pricingService) {
+ this.pricingService = pricingService;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableShopOrderPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableShopOrderPopulator.java
new file mode 100644
index 0000000..b8e222e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ReadableShopOrderPopulator.java
@@ -0,0 +1,114 @@
+package com.salesmanager.web.populator.order;
+
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+import com.salesmanager.web.entity.order.ReadableShopOrder;
+import com.salesmanager.web.entity.order.ShopOrder;
+
+public class ReadableShopOrderPopulator extends
+ AbstractDataPopulator<ShopOrder, ReadableShopOrder> {
+
+ @Override
+ public ReadableShopOrder populate(ShopOrder source,
+ ReadableShopOrder target, MerchantStore store, Language language)
+ throws ConversionException {
+
+ //not that much is required
+
+
+ //customer
+
+ try {
+
+ ReadableCustomer customer = new ReadableCustomer();
+ PersistableCustomer persistableCustomer = source.getCustomer();
+
+
+ customer.setEmailAddress(persistableCustomer.getEmailAddress());
+ if(persistableCustomer.getBilling()!=null) {
+ Address address = new Address();
+ address.setCity(persistableCustomer.getBilling().getCity());
+ address.setCompany(persistableCustomer.getBilling().getCompany());
+ address.setFirstName(persistableCustomer.getBilling().getFirstName());
+ address.setLastName(persistableCustomer.getBilling().getLastName());
+ address.setPostalCode(persistableCustomer.getBilling().getPostalCode());
+ address.setPhone(persistableCustomer.getBilling().getPhone());
+ if(persistableCustomer.getBilling().getCountry()!=null) {
+ address.setCountry(persistableCustomer.getBilling().getCountry());
+ }
+ if(persistableCustomer.getBilling().getZone()!=null) {
+ address.setZone(persistableCustomer.getBilling().getZone());
+ }
+
+ customer.setBilling(address);
+ }
+
+ if(persistableCustomer.getDelivery()!=null) {
+ Address address = new Address();
+ address.setCity(persistableCustomer.getDelivery().getCity());
+ address.setCompany(persistableCustomer.getDelivery().getCompany());
+ address.setFirstName(persistableCustomer.getDelivery().getFirstName());
+ address.setLastName(persistableCustomer.getDelivery().getLastName());
+ address.setPostalCode(persistableCustomer.getDelivery().getPostalCode());
+ address.setPhone(persistableCustomer.getDelivery().getPhone());
+ if(persistableCustomer.getDelivery().getCountry()!=null) {
+ address.setCountry(persistableCustomer.getDelivery().getCountry());
+ }
+ if(persistableCustomer.getDelivery().getZone()!=null) {
+ address.setZone(persistableCustomer.getDelivery().getZone());
+ }
+
+ customer.setDelivery(address);
+ }
+
+/* if(persistableCustomer.getAttributes()!=null) {
+ for(PersistableCustomerAttribute attribute : persistableCustomer.getAttributes()) {
+ ReadableCustomerAttribute readableAttribute = new ReadableCustomerAttribute();
+ readableAttribute.setId(attribute.getId());
+ ReadableCustomerOption option = new ReadableCustomerOption();
+ option.setId(attribute.getCustomerOption().getId());
+ option.setCode(attribute.getCustomerOption());
+
+ CustomerOptionDescription d = new CustomerOptionDescription();
+ d.setDescription(attribute.getCustomerOption().getDescriptionsSettoList().get(0).getDescription());
+ d.setName(attribute.getCustomerOption().getDescriptionsSettoList().get(0).getName());
+ option.setDescription(d);
+
+ readableAttribute.setCustomerOption(option);
+
+ ReadableCustomerOptionValue optionValue = new ReadableCustomerOptionValue();
+ optionValue.setId(attribute.getCustomerOptionValue().getId());
+ CustomerOptionValueDescription vd = new CustomerOptionValueDescription();
+ vd.setDescription(attribute.getCustomerOptionValue().getDescriptionsSettoList().get(0).getDescription());
+ vd.setName(attribute.getCustomerOptionValue().getDescriptionsSettoList().get(0).getName());
+ optionValue.setCode(attribute.getCustomerOptionValue().getCode());
+ optionValue.setDescription(vd);
+
+
+ readableAttribute.setCustomerOptionValue(optionValue);
+ customer.getAttributes().add(readableAttribute);
+ }
+ }*/
+
+ target.setCustomer(customer);
+
+ } catch (Exception e) {
+ throw new ConversionException(e);
+ }
+
+
+
+ return target;
+ }
+
+ @Override
+ protected ReadableShopOrder createTarget() {
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/order/ShoppingCartItemPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ShoppingCartItemPopulator.java
new file mode 100644
index 0000000..578bb85
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/order/ShoppingCartItemPopulator.java
@@ -0,0 +1,87 @@
+package com.salesmanager.web.populator.order;
+
+import org.apache.commons.lang3.Validate;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductAttribute;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.order.PersistableOrderProduct;
+
+public class ShoppingCartItemPopulator extends
+ AbstractDataPopulator<PersistableOrderProduct, ShoppingCartItem> {
+
+
+ private ProductService productService;
+ private ProductAttributeService productAttributeService;
+ private ShoppingCartService shoppingCartService;
+
+ @Override
+ public ShoppingCartItem populate(PersistableOrderProduct source,
+ ShoppingCartItem target, MerchantStore store, Language language)
+ throws ConversionException {
+ Validate.notNull(productService, "Requires to set productService");
+ Validate.notNull(productAttributeService, "Requires to set productAttributeService");
+ Validate.notNull(shoppingCartService, "Requires to set shoppingCartService");
+
+ Product product = productService.getById(source.getProduct().getId());
+ if(source.getAttributes()!=null) {
+
+ for(com.salesmanager.web.entity.catalog.product.attribute.ProductAttribute attr : source.getAttributes()) {
+ ProductAttribute attribute = productAttributeService.getById(attr.getId());
+ if(attribute==null) {
+ throw new ConversionException("ProductAttribute with id " + attr.getId() + " is null");
+ }
+ if(attribute.getProduct().getId().longValue()!=source.getProduct().getId().longValue()) {
+ throw new ConversionException("ProductAttribute with id " + attr.getId() + " is not assigned to Product id " + source.getProduct().getId());
+ }
+ product.getAttributes().add(attribute);
+ }
+ }
+
+ try {
+ return shoppingCartService.populateShoppingCartItem(product);
+ } catch (ServiceException e) {
+ throw new ConversionException(e);
+ }
+
+ }
+
+ @Override
+ protected ShoppingCartItem createTarget() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void setProductAttributeService(ProductAttributeService productAttributeService) {
+ this.productAttributeService = productAttributeService;
+ }
+
+ public ProductAttributeService getProductAttributeService() {
+ return productAttributeService;
+ }
+
+ public void setProductService(ProductService productService) {
+ this.productService = productService;
+ }
+
+ public ProductService getProductService() {
+ return productService;
+ }
+
+ public void setShoppingCartService(ShoppingCartService shoppingCartService) {
+ this.shoppingCartService = shoppingCartService;
+ }
+
+ public ShoppingCartService getShoppingCartService() {
+ return shoppingCartService;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/shoppingCart/ShoppingCartDataPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/shoppingCart/ShoppingCartDataPopulator.java
new file mode 100644
index 0000000..70dfec3
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/shoppingCart/ShoppingCartDataPopulator.java
@@ -0,0 +1,184 @@
+/**
+ *
+ */
+package com.salesmanager.web.populator.shoppingCart;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.configuration.ConversionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionDescription;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValueDescription;
+import com.salesmanager.core.business.catalog.product.model.image.ProductImage;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.OrderSummary;
+import com.salesmanager.core.business.order.model.OrderTotalSummary;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCart;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartCalculationService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.order.OrderTotal;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartAttribute;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartItem;
+import com.salesmanager.web.utils.ImageFilePathUtils;
+
+
+/**
+ * @author Umesh A
+ *
+ */
+
+
+public class ShoppingCartDataPopulator extends AbstractDataPopulator<ShoppingCart,ShoppingCartData>
+{
+
+ private static final Logger LOG = LoggerFactory.getLogger(ShoppingCartDataPopulator.class);
+
+ private PricingService pricingService;
+
+ private ShoppingCartCalculationService shoppingCartCalculationService;
+
+
+
+ @Override
+ public ShoppingCartData createTarget()
+ {
+
+ return new ShoppingCartData();
+ }
+
+
+
+ public ShoppingCartCalculationService getOrderService() {
+ return shoppingCartCalculationService;
+ }
+
+
+
+ public PricingService getPricingService() {
+ return pricingService;
+ }
+
+
+ @Override
+ public ShoppingCartData populate(final ShoppingCart shoppingCart,
+ final ShoppingCartData cart, final MerchantStore store, final Language language) {
+
+ int cartQuantity = 0;
+ cart.setCode(shoppingCart.getShoppingCartCode());
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem> items = shoppingCart.getLineItems();
+ List<ShoppingCartItem> shoppingCartItemsList=Collections.emptyList();
+ try{
+ if(items!=null) {
+ shoppingCartItemsList=new ArrayList<ShoppingCartItem>();
+ for(com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem item : items) {
+
+ ShoppingCartItem shoppingCartItem = new ShoppingCartItem();
+ shoppingCartItem.setCode(cart.getCode());
+ shoppingCartItem.setProductCode(item.getProduct().getSku());
+ shoppingCartItem.setProductVirtual(item.isProductVirtual());
+
+ shoppingCartItem.setProductId(item.getProductId());
+ shoppingCartItem.setId(item.getId());
+ shoppingCartItem.setName(item.getProduct().getProductDescription().getName());
+
+ shoppingCartItem.setPrice(pricingService.getDisplayAmount(item.getItemPrice(),store));
+ shoppingCartItem.setQuantity(item.getQuantity());
+
+
+ cartQuantity = cartQuantity + item.getQuantity();
+
+ shoppingCartItem.setProductPrice(item.getItemPrice());
+ shoppingCartItem.setSubTotal(pricingService.getDisplayAmount(item.getSubTotal(), store));
+ ProductImage image = item.getProduct().getProductImage();
+ if(image!=null) {
+ String imagePath = ImageFilePathUtils.buildProductImageFilePath(store, item.getProduct().getSku(), image.getProductImage());
+ shoppingCartItem.setImage(imagePath);
+ }
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem> attributes = item.getAttributes();
+ if(attributes!=null) {
+ List<ShoppingCartAttribute> cartAttributes = new ArrayList<ShoppingCartAttribute>();
+ for(com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem attribute : attributes) {
+ ShoppingCartAttribute cartAttribute = new ShoppingCartAttribute();
+ cartAttribute.setId(attribute.getId());
+ cartAttribute.setAttributeId(attribute.getProductAttributeId());
+ cartAttribute.setOptionId(attribute.getProductAttribute().getProductOption().getId());
+ cartAttribute.setOptionValueId(attribute.getProductAttribute().getProductOptionValue().getId());
+ List<ProductOptionDescription> optionDescriptions = attribute.getProductAttribute().getProductOption().getDescriptionsSettoList();
+ List<ProductOptionValueDescription> optionValueDescriptions = attribute.getProductAttribute().getProductOptionValue().getDescriptionsSettoList();
+ if(!CollectionUtils.isEmpty(optionDescriptions) && !CollectionUtils.isEmpty(optionValueDescriptions)) {
+ cartAttribute.setOptionName(optionDescriptions.get(0).getName());
+ cartAttribute.setOptionValue(optionValueDescriptions.get(0).getName());
+ cartAttributes.add(cartAttribute);
+ }
+ }
+ shoppingCartItem.setShoppingCartAttributes(cartAttributes);
+ }
+ shoppingCartItemsList.add(shoppingCartItem);
+ }
+ }
+ if(CollectionUtils.isNotEmpty(shoppingCartItemsList)){
+ cart.setShoppingCartItems(shoppingCartItemsList);
+ }
+
+ OrderSummary summary = new OrderSummary();
+ List<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem> productsList = new ArrayList<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem>();
+ productsList.addAll(shoppingCart.getLineItems());
+ summary.setProducts(productsList);
+ OrderTotalSummary orderSummary = shoppingCartCalculationService.calculate(shoppingCart,store, language );
+
+ if(CollectionUtils.isNotEmpty(orderSummary.getTotals())) {
+ List<OrderTotal> totals = new ArrayList<OrderTotal>();
+ for(com.salesmanager.core.business.order.model.OrderTotal t : orderSummary.getTotals()) {
+ OrderTotal total = new OrderTotal();
+ total.setCode(t.getOrderTotalCode());
+ total.setValue(t.getValue());
+ totals.add(total);
+ }
+ cart.setTotals(totals);
+ }
+
+ cart.setSubTotal(pricingService.getDisplayAmount(orderSummary.getSubTotal(), store));
+ cart.setTotal(pricingService.getDisplayAmount(orderSummary.getTotal(), store));
+ cart.setQuantity(cartQuantity);
+ cart.setId(shoppingCart.getId());
+ }
+ catch(ServiceException ex){
+ LOG.error( "Error while converting cart Model to cart Data.."+ex );
+ throw new ConversionException( "Unable to create cart data", ex );
+ }
+ return cart;
+
+
+ };
+
+
+
+
+
+ public void setPricingService(final PricingService pricingService) {
+ this.pricingService = pricingService;
+ }
+
+
+
+
+
+
+ public void setShoppingCartCalculationService(final ShoppingCartCalculationService shoppingCartCalculationService) {
+ this.shoppingCartCalculationService = shoppingCartCalculationService;
+ }
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/populator/shoppingCart/ShoppingCartModelPopulator.java b/sm-shop/src/main/java/com/salesmanager/web/populator/shoppingCart/ShoppingCartModelPopulator.java
new file mode 100644
index 0000000..b77ce03
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/populator/shoppingCart/ShoppingCartModelPopulator.java
@@ -0,0 +1,276 @@
+/**
+ *
+ */
+package com.salesmanager.web.populator.shoppingCart;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.configuration.ConversionException;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductAttribute;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCart;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.core.utils.AbstractDataPopulator;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartAttribute;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartItem;
+
+/**
+ * @author Umesh A
+ */
+
+@Service(value="shoppingCartModelPopulator")
+public class ShoppingCartModelPopulator
+ extends AbstractDataPopulator<ShoppingCartData,ShoppingCart>
+{
+
+ private static final Logger LOG = LoggerFactory.getLogger(ShoppingCartModelPopulator.class);
+
+ private ShoppingCartService shoppingCartService;
+
+ private Customer customer;
+
+ public ShoppingCartService getShoppingCartService() {
+ return shoppingCartService;
+ }
+
+
+ public void setShoppingCartService(ShoppingCartService shoppingCartService) {
+ this.shoppingCartService = shoppingCartService;
+ }
+
+
+ private ProductService productService;
+
+
+ public ProductService getProductService() {
+ return productService;
+ }
+
+
+ public void setProductService(ProductService productService) {
+ this.productService = productService;
+ }
+
+
+ private ProductAttributeService productAttributeService;
+
+
+ public ProductAttributeService getProductAttributeService() {
+ return productAttributeService;
+ }
+
+
+ public void setProductAttributeService(
+ ProductAttributeService productAttributeService) {
+ this.productAttributeService = productAttributeService;
+ }
+
+
+ @Override
+ public ShoppingCart populate(ShoppingCartData shoppingCart,ShoppingCart cartMdel,final MerchantStore store, Language language)
+ {
+
+
+ // if id >0 get the original from the database, override products
+ try{
+ if ( shoppingCart.getId() > 0 && StringUtils.isNotBlank( shoppingCart.getCode()))
+ {
+ cartMdel = shoppingCartService.getByCode( shoppingCart.getCode(), store );
+ if(cartMdel==null){
+ cartMdel=new ShoppingCart();
+ cartMdel.setShoppingCartCode( shoppingCart.getCode() );
+ cartMdel.setMerchantStore( store );
+ if ( customer != null )
+ {
+ cartMdel.setCustomerId( customer.getId() );
+ }
+ shoppingCartService.create( cartMdel );
+ }
+ }
+ else
+ {
+ cartMdel.setShoppingCartCode( shoppingCart.getCode() );
+ cartMdel.setMerchantStore( store );
+ if ( customer != null )
+ {
+ cartMdel.setCustomerId( customer.getId() );
+ }
+ shoppingCartService.create( cartMdel );
+ }
+
+ List<ShoppingCartItem> items = shoppingCart.getShoppingCartItems();
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem> newItems =
+ new HashSet<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem>();
+ if ( items != null && items.size() > 0 )
+ {
+ for ( ShoppingCartItem item : items )
+ {
+
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem> cartItems = cartMdel.getLineItems();
+ if ( cartItems != null && cartItems.size() > 0 )
+ {
+
+ for ( com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem dbItem : cartItems )
+ {
+ if ( dbItem.getId().longValue() == item.getId() )
+ {
+ dbItem.setQuantity( item.getQuantity() );
+ // compare attributes
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem> attributes =
+ dbItem.getAttributes();
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem> newAttributes =
+ new HashSet<com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem>();
+ List<ShoppingCartAttribute> cartAttributes = item.getShoppingCartAttributes();
+ if ( !CollectionUtils.isEmpty( cartAttributes ) )
+ {
+ for ( ShoppingCartAttribute attribute : cartAttributes )
+ {
+ for ( com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem dbAttribute : attributes )
+ {
+ if ( dbAttribute.getId().longValue() == attribute.getId() )
+ {
+ newAttributes.add( dbAttribute );
+ }
+ }
+ }
+
+ dbItem.setAttributes( newAttributes );
+ }
+ else
+ {
+ dbItem.removeAllAttributes();
+ }
+ newItems.add( dbItem );
+ }
+ }
+ }
+ else
+ {// create new item
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem cartItem =
+ createCartItem( cartMdel, item, store );
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem> lineItems =
+ cartMdel.getLineItems();
+ if ( lineItems == null )
+ {
+ lineItems = new HashSet<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem>();
+ cartMdel.setLineItems( lineItems );
+ }
+ lineItems.add( cartItem );
+ shoppingCartService.update( cartMdel );
+ }
+ }// end for
+ }// end if
+ }catch(ServiceException se){
+ LOG.error( "Error while converting cart data to cart model.."+se );
+ throw new ConversionException( "Unable to create cart model", se );
+ }
+ catch (Exception ex){
+ LOG.error( "Error while converting cart data to cart model.."+ex );
+ throw new ConversionException( "Unable to create cart model", ex );
+ }
+
+ return cartMdel;
+ }
+
+
+ private com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem createCartItem( com.salesmanager.core.business.shoppingcart.model.ShoppingCart cart,
+ ShoppingCartItem shoppingCartItem,
+ MerchantStore store )
+ throws Exception
+ {
+
+ Product product = productService.getById( shoppingCartItem.getProductId() );
+
+ if ( product == null )
+ {
+ throw new Exception( "Item with id " + shoppingCartItem.getProductId() + " does not exist" );
+ }
+
+ if ( product.getMerchantStore().getId().intValue() != store.getId().intValue() )
+ {
+ throw new Exception( "Item with id " + shoppingCartItem.getProductId() + " does not belong to merchant "
+ + store.getId() );
+ }
+
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem item =
+ new com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem( cart, product );
+ item.setQuantity( shoppingCartItem.getQuantity() );
+ item.setItemPrice( shoppingCartItem.getProductPrice() );
+ item.setShoppingCart( cart );
+
+ // attributes
+ List<ShoppingCartAttribute> cartAttributes = shoppingCartItem.getShoppingCartAttributes();
+ if ( !CollectionUtils.isEmpty( cartAttributes ) )
+ {
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem> newAttributes =
+ new HashSet<com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem>();
+ for ( ShoppingCartAttribute attribute : cartAttributes )
+ {
+ ProductAttribute productAttribute = productAttributeService.getById( attribute.getAttributeId() );
+ if ( productAttribute != null
+ && productAttribute.getProduct().getId().longValue() == product.getId().longValue() )
+ {
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem attributeItem =
+ new com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem( item,
+ productAttribute );
+ if ( attribute.getAttributeId() > 0 )
+ {
+ attributeItem.setId( attribute.getId() );
+ }
+ item.addAttributes( attributeItem );
+ //newAttributes.add( attributeItem );
+ }
+
+ }
+
+ //item.setAttributes( newAttributes );
+ }
+
+ return item;
+
+ }
+
+
+
+
+ @Override
+ protected ShoppingCart createTarget()
+ {
+
+ return new ShoppingCart();
+ }
+
+
+ public Customer getCustomer() {
+ return customer;
+ }
+
+
+ public void setCustomer(Customer customer) {
+ this.customer = customer;
+ }
+
+
+
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/reference/ReferenceController.java b/sm-shop/src/main/java/com/salesmanager/web/reference/ReferenceController.java
new file mode 100644
index 0000000..d3edfe2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/reference/ReferenceController.java
@@ -0,0 +1,253 @@
+package com.salesmanager.web.reference;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.utils.CacheUtils;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.DateUtil;
+import com.salesmanager.web.utils.LocaleUtils;
+
+
+/**
+ * Used for misc reference objects
+ * @author csamson777
+ *
+ */
+@Controller
+public class ReferenceController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ReferenceController.class);
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private CacheUtils cache;
+
+
+
+
+ @SuppressWarnings("unchecked")
+ @RequestMapping(value={"/admin/reference/provinces.html","/shop/reference/provinces.html"}, method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String getProvinces(HttpServletRequest request, HttpServletResponse response) {
+
+ String countryCode = request.getParameter("countryCode");
+ String lang = request.getParameter("lang");
+ LOGGER.debug("Province Country Code " + countryCode);
+ AjaxResponse resp = new AjaxResponse();
+
+ try {
+
+ Language language = null;
+
+ if(!StringUtils.isBlank(lang)) {
+ language = languageService.getByCode(lang);
+ }
+
+ if(language==null) {
+ language = (Language)request.getAttribute("LANGUAGE");
+ }
+
+ if(language==null) {
+ language = languageService.getByCode(Constants.DEFAULT_LANGUAGE);
+ }
+
+
+ Map<String,Country> countriesMap = countryService.getCountriesMap(language);
+ Country country = countriesMap.get(countryCode);
+ List<Zone> zones = zoneService.getZones(country, language);
+ if(zones!=null && zones.size()>0) {
+
+
+
+ for(Zone zone : zones) {
+
+ @SuppressWarnings("rawtypes")
+ Map entry = new HashMap();
+ entry.put("name", zone.getName());
+ entry.put("code", zone.getCode());
+ entry.put("id", zone.getId());
+
+ resp.addDataEntry(entry);
+
+ }
+
+
+ }
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOGGER.error("GetProvinces()", e);
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+
+ String returnString = resp.toJSONString();
+ return returnString;
+
+ }
+
+ @RequestMapping(value="/shop/reference/countryName")
+ public @ResponseBody String countryName(@RequestParam String countryCode, HttpServletRequest request) {
+
+ try {
+ Language language = LocaleUtils.getRequestLanguage(request);
+ if(language==null) {
+ return countryCode;
+ }
+ Map<String, Country> countriesMap = countryService.getCountriesMap(language);
+ if(countriesMap!=null) {
+ Country c = countriesMap.get(countryCode);
+ if(c!=null) {
+ return c.getName();
+ }
+ }
+
+ } catch (ServiceException e) {
+ LOGGER.error("Error while looking up country " + countryCode);
+ }
+ return countryCode;
+ }
+
+ @RequestMapping(value="/shop/reference/zoneName")
+ public @ResponseBody String zoneName(@RequestParam String zoneCode, HttpServletRequest request) {
+
+ try {
+ Language language = LocaleUtils.getRequestLanguage(request);
+ if(language==null) {
+ return zoneCode;
+ }
+ Map<String, Zone> zonesMap = zoneService.getZones(language);
+ if(zonesMap!=null) {
+ Zone z = zonesMap.get(zoneCode);
+ if(z!=null) {
+ return z.getName();
+ }
+ }
+
+ } catch (ServiceException e) {
+ LOGGER.error("Error while looking up zone " + zoneCode);
+ }
+ return zoneCode;
+ }
+
+ @SuppressWarnings("unchecked")
+ @RequestMapping(value={"/shop/reference/creditCardDates.html"}, method=RequestMethod.GET, produces="application/json")
+ public @ResponseBody String getCreditCardDates(HttpServletRequest request, HttpServletResponse response) {
+
+
+ List<String> years = null;
+ String serialized = null;
+ try {
+
+
+ years = (List<String>)cache.getFromCache(Constants.CREDIT_CARD_YEARS_CACHE_KEY);
+
+ if(years==null) {
+
+ years = new ArrayList<String>();
+ //current year
+
+ for(int i = 0 ; i < 10 ; i++) {
+ Calendar localCalendar = Calendar.getInstance(TimeZone.getDefault());
+ localCalendar.add(Calendar.YEAR, i);
+ String dt = DateUtil.formatYear(localCalendar.getTime());
+ years.add(dt);
+ }
+ //up to year + 10
+
+ cache.putInCache(years, Constants.CREDIT_CARD_YEARS_CACHE_KEY);
+
+ }
+
+
+
+ final ObjectMapper mapper = new ObjectMapper();
+ serialized = mapper.writeValueAsString(years);
+
+ } catch(Exception e) {
+ LOGGER.error("ReferenceControler ",e);
+ }
+
+ return serialized;
+
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @RequestMapping(value={"/shop/reference/monthsOfYear.html"}, method=RequestMethod.GET, produces="application/json")
+ public @ResponseBody String getMonthsOfYear(HttpServletRequest request, HttpServletResponse response) {
+
+
+ List<String> days = null;
+ String serialized = null;
+
+ try {
+ days = (List<String>)cache.getFromCache(Constants.MONTHS_OF_YEAR_CACHE_KEY);
+ if(days==null) {
+
+ days = new ArrayList<String>();
+ for(int i = 1 ; i < 13 ; i++) {
+ days.add(String.format("%02d", i));
+ }
+
+ cache.putInCache(days, Constants.MONTHS_OF_YEAR_CACHE_KEY);
+
+ }
+
+
+
+ final ObjectMapper mapper = new ObjectMapper();
+ serialized = mapper.writeValueAsString(days);
+
+ } catch(Exception e) {
+ LOGGER.error("ReferenceControler ",e);
+ }
+
+ return serialized;
+
+ }
+
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/services/controller/category/ShoppingCategoryRESTController.java b/sm-shop/src/main/java/com/salesmanager/web/services/controller/category/ShoppingCategoryRESTController.java
new file mode 100644
index 0000000..528942a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/services/controller/category/ShoppingCategoryRESTController.java
@@ -0,0 +1,214 @@
+package com.salesmanager.web.services.controller.category;
+
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.catalog.category.PersistableCategory;
+import com.salesmanager.web.entity.catalog.category.ReadableCategory;
+import com.salesmanager.web.populator.catalog.PersistableCategoryPopulator;
+import com.salesmanager.web.populator.catalog.ReadableCategoryPopulator;
+
+/**
+ * Rest services for category management
+ * @author Carl Samson
+ *
+ */
+@Controller
+@RequestMapping("/services")
+public class ShoppingCategoryRESTController {
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private MerchantStoreService merchantStoreService;
+
+ @Autowired
+ private CategoryService categoryService;
+
+ @Autowired
+ private ProductService productService;
+
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShoppingCategoryRESTController.class);
+
+
+
+ @RequestMapping( value="/public/{store}/category/{id}", method=RequestMethod.GET)
+ @ResponseBody
+ public ReadableCategory getCategory(@PathVariable final String store, @PathVariable Long id, HttpServletRequest request, HttpServletResponse response) {
+
+
+ try {
+
+ /** default routine **/
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ Language language = merchantStore.getDefaultLanguage();
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+
+ if(!StringUtils.isBlank(request.getParameter(Constants.LANG))) {
+ String lang = request.getParameter(Constants.LANG);
+ if(lang!=null) {
+ language = langs.get(language);
+ }
+ }
+
+ if(language==null) {
+ language = merchantStore.getDefaultLanguage();
+ }
+
+
+ /** end default routine **/
+
+
+ Category dbCategory = categoryService.getByLanguage(id, language);
+
+ if(dbCategory==null) {
+ response.sendError(503, "Invalid category id");
+ return null;
+ }
+
+ if(dbCategory.getMerchantStore().getId().intValue()!=merchantStore.getId().intValue()){
+ response.sendError(503, "Invalid category id");
+ return null;
+ }
+
+
+ ReadableCategoryPopulator populator = new ReadableCategoryPopulator();
+
+ //TODO count products by category
+ ReadableCategory category = populator.populate(dbCategory, new ReadableCategory(), merchantStore, merchantStore.getDefaultLanguage());
+
+ return category;
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving category",e);
+ try {
+ response.sendError(503, "Error while saving category " + e.getMessage());
+ } catch (Exception ignore) {
+ }
+ return null;
+ }
+ }
+
+
+
+
+ /**
+ * Create new category for a given MerchantStore
+ */
+ @RequestMapping( value="/private/{store}/category", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableCategory createCategory(@PathVariable final String store, @Valid @RequestBody PersistableCategory category, HttpServletRequest request, HttpServletResponse response) {
+
+
+ try {
+
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ PersistableCategoryPopulator populator = new PersistableCategoryPopulator();
+ populator.setCategoryService(categoryService);
+ populator.setLanguageService(languageService);
+
+ Category dbCategory = populator.populate(category, new Category(), merchantStore, merchantStore.getDefaultLanguage());
+
+ dbCategory.setMerchantStore(merchantStore);
+
+ categoryService.saveOrUpdate(dbCategory);
+ category.setId(dbCategory.getId());
+
+ return category;
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving category",e);
+ try {
+ response.sendError(503, "Error while saving category " + e.getMessage());
+ } catch (Exception ignore) {
+ }
+ return null;
+ }
+ }
+
+
+
+ /**
+ * Deletes a category for a given MerchantStore
+ */
+ @RequestMapping( value="/private/{store}/category/{id}", method=RequestMethod.DELETE)
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public void deleteCategory(@PathVariable final String store, @PathVariable Long id, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ Category category = categoryService.getById(id);
+ if(category != null && category.getMerchantStore().getCode().equalsIgnoreCase(store)){
+ categoryService.delete(category);
+ }else{
+ response.sendError(404, "No Category found for ID : " + id);
+ }
+ }
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/services/controller/customer/CustomerRESTController.java b/sm-shop/src/main/java/com/salesmanager/web/services/controller/customer/CustomerRESTController.java
new file mode 100644
index 0000000..f92c5d8
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/services/controller/customer/CustomerRESTController.java
@@ -0,0 +1,399 @@
+package com.salesmanager.web.services.controller.customer;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionValueService;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.GroupType;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.core.modules.email.Email;
+import com.salesmanager.web.admin.entity.userpassword.UserReset;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.constants.EmailConstants;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+import com.salesmanager.web.entity.customer.attribute.PersistableCustomerOption;
+import com.salesmanager.web.entity.customer.attribute.PersistableCustomerOptionValue;
+import com.salesmanager.web.populator.customer.CustomerPopulator;
+import com.salesmanager.web.populator.customer.PersistableCustomerOptionPopulator;
+import com.salesmanager.web.populator.customer.PersistableCustomerOptionValuePopulator;
+import com.salesmanager.web.populator.customer.ReadableCustomerPopulator;
+import com.salesmanager.web.services.controller.category.ShoppingCategoryRESTController;
+import com.salesmanager.web.utils.EmailTemplatesUtils;
+import com.salesmanager.web.utils.EmailUtils;
+import com.salesmanager.web.utils.FilePathUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+
+@Controller
+@RequestMapping("/services")
+public class CustomerRESTController {
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private CustomerOptionValueService customerOptionValueService;
+
+ @Autowired
+ private CustomerOptionService customerOptionService;
+
+
+ @Autowired
+ private MerchantStoreService merchantStoreService;
+
+ @Autowired
+ private LanguageService languageService;
+
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private GroupService groupService;
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+ @Autowired
+ EmailService emailService;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private EmailTemplatesUtils emailTemplatesUtils;
+
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShoppingCategoryRESTController.class);
+
+
+ /**
+ * Returns a single customer for a given MerchantStore
+ */
+ @RequestMapping( value="/private/{store}/customer/{id}", method=RequestMethod.GET)
+ @ResponseBody
+ public ReadableCustomer getCustomer(@PathVariable final String store, @PathVariable Long id, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ Customer customer = customerService.getById(id);
+ com.salesmanager.web.entity.customer.Customer customerProxy;
+ if(customer == null){
+ response.sendError(404, "No Customer found with id : " + id);
+ return null;
+ }
+
+ ReadableCustomerPopulator populator = new ReadableCustomerPopulator();
+ ReadableCustomer readableCustomer = new ReadableCustomer();
+ populator.populate(customer, readableCustomer, merchantStore, merchantStore.getDefaultLanguage());
+
+ return readableCustomer;
+ }
+
+
+ /**
+ * Create a customer option value
+ * @param store
+ * @param optionValue
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping( value="/private/{store}/customer/optionValue", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableCustomerOptionValue createCustomerOptionValue(@PathVariable final String store, @Valid @RequestBody PersistableCustomerOptionValue optionValue, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ PersistableCustomerOptionValuePopulator populator = new PersistableCustomerOptionValuePopulator();
+ populator.setLanguageService(languageService);
+
+ com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue optValue = new com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue();
+ populator.populate(optionValue, optValue, merchantStore, merchantStore.getDefaultLanguage());
+
+ customerOptionValueService.save(optValue);
+
+ optionValue.setId(optValue.getId());
+
+ return optionValue;
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving customer option value",e);
+ try {
+ response.sendError(503, "Error while saving product option value" + e.getMessage());
+ } catch (Exception ignore) {
+ }
+ return null;
+ }
+ }
+
+ /**
+ * Create a customer option
+ * @param store
+ * @param option
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping( value="/private/{store}/customer/option", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableCustomerOption createCustomerOption(@PathVariable final String store, @Valid @RequestBody PersistableCustomerOption option, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ PersistableCustomerOptionPopulator populator = new PersistableCustomerOptionPopulator();
+ populator.setLanguageService(languageService);
+
+ com.salesmanager.core.business.customer.model.attribute.CustomerOption opt = new com.salesmanager.core.business.customer.model.attribute.CustomerOption();
+ populator.populate(option, opt, merchantStore, merchantStore.getDefaultLanguage());
+
+ customerOptionService.save(opt);
+
+ option.setId(opt.getId());
+
+ return option;
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving customer option",e);
+ try {
+ response.sendError(503, "Error while saving product option value" + e.getMessage());
+ } catch (Exception ignore) {
+ }
+ return null;
+ }
+ }
+
+
+ /**
+ * Returns all customers for a given MerchantStore
+ */
+ @RequestMapping( value="/private/{store}/customer", method=RequestMethod.GET)
+ @ResponseBody
+ public List<ReadableCustomer> getCustomers(@PathVariable final String store, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ List<Customer> customers = customerService.listByStore(merchantStore);
+ List<ReadableCustomer> returnCustomers = new ArrayList<ReadableCustomer>();
+ for(Customer customer : customers) {
+
+ ReadableCustomerPopulator populator = new ReadableCustomerPopulator();
+ ReadableCustomer readableCustomer = new ReadableCustomer();
+ populator.populate(customer, readableCustomer, merchantStore, merchantStore.getDefaultLanguage());
+ returnCustomers.add(readableCustomer);
+
+ }
+
+ return returnCustomers;
+ }
+
+
+
+ /**
+ * Deletes a customer for a given MerchantStore
+ */
+ @RequestMapping( value="/private/{store}/customer/{id}", method=RequestMethod.DELETE)
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public void deleteCustomer(@PathVariable final String store, @PathVariable Long id, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+ Customer customer = customerService.getById(id);
+
+ if(customer==null) {
+ response.sendError(404, "No Customer found for ID : " + id);
+ return;
+ }
+
+ MerchantStore merchantStore = merchantStoreService.getByCode(store);
+ if(merchantStore == null) {
+ response.sendError(404, "Invalid merchant store : " + store);
+ return;
+ }
+
+ if(merchantStore.getId().intValue()!= customer.getMerchantStore().getId().intValue()){
+ response.sendError(404, "Customer id: " + id + " is not part of store " + store);
+ return;
+ }
+
+ customerService.delete(customer);
+
+
+ } catch (ServiceException se) {
+ LOGGER.error("Cannot delete customer",se);
+ response.sendError(404, "An exception occured while removing the customer");
+ return;
+ }
+
+ }
+
+
+ /**
+ * Create new customer for a given MerchantStore
+ */
+ @RequestMapping( value="/private/{store}/customer", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableCustomer createCustomer(@PathVariable final String store, @Valid @RequestBody PersistableCustomer customer, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ Customer cust = new Customer();
+
+ CustomerPopulator populator = new CustomerPopulator();
+ populator.setCountryService(countryService);
+ populator.setCustomerOptionService(customerOptionService);
+ populator.setCustomerOptionValueService(customerOptionValueService);
+ populator.setLanguageService(languageService);
+ populator.setLanguageService(languageService);
+ populator.setZoneService(zoneService);
+ populator.populate(customer, cust, merchantStore, merchantStore.getDefaultLanguage());
+
+ List<Group> groups = groupService.listGroup(GroupType.ADMIN);
+ cust.setGroups(groups);
+
+ Locale customerLocale = LocaleUtils.getLocale(cust.getDefaultLanguage());
+
+ String password = customer.getClearPassword();
+ if(StringUtils.isBlank(password)) {
+ password = UserReset.generateRandomString();
+ customer.setClearPassword(password);
+ }
+
+ @SuppressWarnings("deprecation")
+ String encodedPassword = passwordEncoder.encodePassword(password, null);
+ if(!StringUtils.isBlank(customer.getEncodedPassword())) {
+ encodedPassword = customer.getEncodedPassword();
+ customer.setClearPassword("");
+ }
+
+ customer.setEncodedPassword(encodedPassword);
+ customerService.save(cust);
+ customer.setId(cust.getId());
+
+ emailTemplatesUtils.sendRegistrationEmail(customer, merchantStore, customerLocale, request.getContextPath());
+
+
+ return customer;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/services/controller/order/OrderRESTController.java b/sm-shop/src/main/java/com/salesmanager/web/services/controller/order/OrderRESTController.java
new file mode 100644
index 0000000..3c4be68
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/services/controller/order/OrderRESTController.java
@@ -0,0 +1,277 @@
+package com.salesmanager.web.services.controller.order;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.catalog.product.service.file.DigitalProductService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.order.PersistableOrder;
+import com.salesmanager.web.entity.order.ReadableOrderList;
+import com.salesmanager.web.populator.customer.CustomerPopulator;
+import com.salesmanager.web.populator.order.PersistableOrderPopulator;
+import com.salesmanager.web.shop.controller.order.facade.OrderFacade;
+
+@Controller
+@RequestMapping("/services/private")
+public class OrderRESTController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(OrderRESTController.class);
+
+
+ @Autowired
+ private MerchantStoreService merchantStoreService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ProductAttributeService productAttributeService;
+
+ @Autowired
+ private DigitalProductService digitalProductService;
+
+ @Autowired
+ private OrderFacade orderFacade;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private LanguageService languageService;
+
+
+ @RequestMapping( value="/{store}/orders", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableOrder createOrder(@PathVariable final String store, @Valid @RequestBody PersistableOrder order, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+
+ PersistableCustomer cust = order.getCustomer();
+ if(cust!=null) {
+ CustomerPopulator customerPopulator = new CustomerPopulator();
+ Customer customer = new Customer();
+ customerPopulator.populate(cust, customer, merchantStore, merchantStore.getDefaultLanguage());
+ customerService.save(customer);
+ cust.setId(customer.getId());
+ }
+
+
+ Order modelOrder = new Order();
+ PersistableOrderPopulator populator = new PersistableOrderPopulator();
+ populator.setDigitalProductService(digitalProductService);
+ populator.setProductAttributeService(productAttributeService);
+ populator.setProductService(productService);
+
+ populator.populate(order, modelOrder, merchantStore, merchantStore.getDefaultLanguage());
+
+
+ orderService.save(modelOrder);
+ order.setId(modelOrder.getId());
+
+ return order;
+ }
+
+
+ /**
+ * Get a list of orders
+ * accept request parameter 'lang' [en,fr...] otherwise store dafault language
+ * accept request parameter 'start' start index for count
+ * accept request parameter 'max' maximum number count, otherwise returns all
+ * @param store
+ * @param order
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping( value="/{store}/orders/", method=RequestMethod.GET)
+ @ResponseStatus(HttpStatus.ACCEPTED)
+ @ResponseBody
+ public ReadableOrderList listOrders(@PathVariable final String store, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ //get additional request parameters for orders
+ String lang = request.getParameter(Constants.LANG);
+ String start = request.getParameter(Constants.START);
+ String max = request.getParameter(Constants.MAX);
+
+ int startCount = 0;
+ int maxCount = 0;
+
+ if(StringUtils.isBlank(lang)) {
+ lang = merchantStore.getDefaultLanguage().getCode();
+ }
+
+
+ Language language = languageService.getByCode(lang);
+
+ if(language==null) {
+ LOGGER.error("Language is null for code " + lang);
+ response.sendError(503, "Language is null for code " + lang);
+ return null;
+ }
+
+ try {
+ startCount = Integer.parseInt(start);
+ } catch (Exception e) {
+ LOGGER.info("Invalid value for start " + start);
+ }
+
+ try {
+ maxCount = Integer.parseInt(max);
+ } catch (Exception e) {
+ LOGGER.info("Invalid value for max " + max);
+ }
+
+
+
+ ReadableOrderList returnList = orderFacade.getReadableOrderList(merchantStore, startCount, maxCount, language);
+
+ return returnList;
+ }
+
+ /**
+ * Get a list of orders for a given customer
+ * accept request parameter 'lang' [en,fr...] otherwise store dafault language
+ * accept request parameter 'start' start index for count
+ * accept request parameter 'max' maximum number count, otherwise returns all
+ * @param store
+ * @param order
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping( value="/{store}/orders/customer/{id}", method=RequestMethod.GET)
+ @ResponseStatus(HttpStatus.ACCEPTED)
+ @ResponseBody
+ public ReadableOrderList listOrders(@PathVariable final String store, @PathVariable final Long id, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ //get additional request parameters for orders
+ String lang = request.getParameter(Constants.LANG);
+ String start = request.getParameter(Constants.START);
+ String max = request.getParameter(Constants.MAX);
+
+ int startCount = 0;
+ int maxCount = 0;
+
+ if(StringUtils.isBlank(lang)) {
+ lang = merchantStore.getDefaultLanguage().getCode();
+ }
+
+
+ Language language = languageService.getByCode(lang);
+
+ if(language==null) {
+ LOGGER.error("Language is null for code " + lang);
+ response.sendError(503, "Language is null for code " + lang);
+ return null;
+ }
+
+ try {
+ startCount = Integer.parseInt(start);
+ } catch (Exception e) {
+ LOGGER.info("Invalid value for start " + start);
+ }
+
+ try {
+ maxCount = Integer.parseInt(max);
+ } catch (Exception e) {
+ LOGGER.info("Invalid value for max " + max);
+ }
+
+ Customer customer = customerService.getById(id);
+
+ if(customer==null) {
+ LOGGER.error("Customer is null for id " + id);
+ response.sendError(503, "Customer is null for id " + id);
+ return null;
+ }
+
+ if(customer.getMerchantStore().getId().intValue()!=merchantStore.getId().intValue()) {
+ LOGGER.error("Customer is null for id " + id + " and store id " + store);
+ response.sendError(503, "Customer is null for id " + id + " and store id " + store);
+ return null;
+ }
+
+ ReadableOrderList returnList = orderFacade.getReadableOrderList(merchantStore, startCount, maxCount, language);
+
+ return returnList;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/services/controller/product/ShopProductRESTController.java b/sm-shop/src/main/java/com/salesmanager/web/services/controller/product/ShopProductRESTController.java
new file mode 100644
index 0000000..c2935e0
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/services/controller/product/ShopProductRESTController.java
@@ -0,0 +1,642 @@
+package com.salesmanager.web.services.controller.product;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.ProductCriteria;
+import com.salesmanager.core.business.catalog.product.model.review.ProductReview;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductOptionValueService;
+import com.salesmanager.core.business.catalog.product.service.manufacturer.ManufacturerService;
+import com.salesmanager.core.business.catalog.product.service.review.ProductReviewService;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.tax.service.TaxClassService;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.catalog.manufacturer.PersistableManufacturer;
+import com.salesmanager.web.entity.catalog.product.PersistableProduct;
+import com.salesmanager.web.entity.catalog.product.PersistableProductReview;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.entity.catalog.product.ReadableProductList;
+import com.salesmanager.web.entity.catalog.product.attribute.PersistableProductOption;
+import com.salesmanager.web.entity.catalog.product.attribute.PersistableProductOptionValue;
+import com.salesmanager.web.populator.catalog.PersistableProductOptionPopulator;
+import com.salesmanager.web.populator.catalog.PersistableProductOptionValuePopulator;
+import com.salesmanager.web.populator.catalog.PersistableProductPopulator;
+import com.salesmanager.web.populator.catalog.PersistableProductReviewPopulator;
+import com.salesmanager.web.populator.catalog.ReadableProductPopulator;
+import com.salesmanager.web.populator.manufacturer.PersistableManufacturerPopulator;
+import com.salesmanager.web.shop.model.filter.QueryFilter;
+import com.salesmanager.web.shop.model.filter.QueryFilterType;
+
+/**
+ * API for create, read and delete Product
+ * @author Carl Samson
+ *
+ */
+@Controller
+@RequestMapping("/services")
+public class ShopProductRESTController {
+
+ @Autowired
+ private MerchantStoreService merchantStoreService;
+
+ @Autowired
+ private CategoryService categoryService;
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ProductReviewService productReviewService;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private ProductOptionService productOptionService;
+
+ @Autowired
+ private ProductOptionValueService productOptionValueService;
+
+ @Autowired
+ private TaxClassService taxClassService;
+
+ @Autowired
+ private ManufacturerService manufacturerService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShopProductRESTController.class);
+
+
+ /**
+ * Create new product for a given MerchantStore
+ */
+ @RequestMapping( value="/private/product/{store}", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableProduct createProduct(@PathVariable final String store, @Valid @RequestBody PersistableProduct product, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ PersistableProductPopulator populator = new PersistableProductPopulator();
+ populator.setCategoryService(categoryService);
+ populator.setProductOptionService(productOptionService);
+ populator.setProductOptionValueService(productOptionValueService);
+ populator.setManufacturerService(manufacturerService);
+ populator.setTaxClassService(taxClassService);
+ populator.setLanguageService(languageService);
+
+
+ Product prod = new Product();
+ populator.populate(product, prod, merchantStore, merchantStore.getDefaultLanguage());
+
+ productService.save(prod);
+
+ return product;
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving product",e);
+ try {
+ response.sendError(503, "Error while saving product " + e.getMessage());
+ } catch (Exception ignore) {
+ }
+
+ return null;
+ }
+
+ }
+
+
+ @RequestMapping( value="/private/product/{store}/{id}", method=RequestMethod.DELETE)
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public void deleteProduct(@PathVariable final String store, @PathVariable Long id, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ Product product = productService.getById(id);
+ if(product != null && product.getMerchantStore().getCode().equalsIgnoreCase(store)){
+ productService.delete(product);
+ }else{
+ response.sendError(404, "No Product found for ID : " + id);
+ }
+ }
+
+ /**
+ * Method for creating a manufacturer
+ * @param store
+ * @param manufacturer
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping( value="/private/manufacturer/{store}", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableManufacturer createManufacturer(@PathVariable final String store, @Valid @RequestBody PersistableManufacturer manufacturer, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ PersistableManufacturerPopulator populator = new PersistableManufacturerPopulator();
+ populator.setLanguageService(languageService);
+
+ com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer manuf = new com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer();
+
+ populator.populate(manufacturer, manuf, merchantStore, merchantStore.getDefaultLanguage());
+
+ manufacturerService.save(manuf);
+
+ manufacturer.setId(manuf.getId());
+
+ return manufacturer;
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving product",e);
+ try {
+ response.sendError(503, "Error while saving product " + e.getMessage());
+ } catch (Exception ignore) {
+ }
+
+ return null;
+ }
+
+ }
+
+
+ @RequestMapping( value="/private/product/optionValue/{store}", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableProductOptionValue createProductOptionValue(@PathVariable final String store, @Valid @RequestBody PersistableProductOptionValue optionValue, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ PersistableProductOptionValuePopulator populator = new PersistableProductOptionValuePopulator();
+ populator.setLanguageService(languageService);
+
+ com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValue optValue = new com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValue();
+ populator.populate(optionValue, optValue, merchantStore, merchantStore.getDefaultLanguage());
+
+ productOptionValueService.save(optValue);
+
+ optionValue.setId(optValue.getId());
+
+ return optionValue;
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving product option value",e);
+ try {
+ response.sendError(503, "Error while saving product option value" + e.getMessage());
+ } catch (Exception ignore) {
+ }
+
+ return null;
+ }
+
+ }
+
+
+ @RequestMapping( value="/private/product/option/{store}", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableProductOption createProductOption(@PathVariable final String store, @Valid @RequestBody PersistableProductOption option, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ PersistableProductOptionPopulator populator = new PersistableProductOptionPopulator();
+ populator.setLanguageService(languageService);
+
+ com.salesmanager.core.business.catalog.product.model.attribute.ProductOption opt = new com.salesmanager.core.business.catalog.product.model.attribute.ProductOption();
+ populator.populate(option, opt, merchantStore, merchantStore.getDefaultLanguage());
+
+ productOptionService.save(opt);
+
+ option.setId(opt.getId());
+
+ return option;
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving product option",e);
+ try {
+ response.sendError(503, "Error while saving product option" + e.getMessage());
+ } catch (Exception ignore) {
+ }
+
+ return null;
+ }
+ }
+
+
+ @RequestMapping( value="/private/product/review/{store}", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.CREATED)
+ @ResponseBody
+ public PersistableProductReview createProductReview(@PathVariable final String store, @Valid @RequestBody PersistableProductReview review, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(500, "Merchant store is null for code " + store);
+ return null;
+ }
+
+
+ //rating already exist
+ ProductReview prodReview = productReviewService.getByProductAndCustomer(review.getProductId(), review.getCustomerId());
+ if(prodReview!=null) {
+ response.sendError(500, "A review already exist for this customer and product");
+ return null;
+ }
+
+ //rating maximum 5
+ if(review.getRating()>Constants.MAX_REVIEW_RATING_SCORE) {
+ response.sendError(503, "Maximum rating score is " + Constants.MAX_REVIEW_RATING_SCORE);
+ return null;
+ }
+
+
+
+ PersistableProductReviewPopulator populator = new PersistableProductReviewPopulator();
+ populator.setLanguageService(languageService);
+ populator.setCustomerService(customerService);
+ populator.setProductService(productService);
+
+ com.salesmanager.core.business.catalog.product.model.review.ProductReview rev = new com.salesmanager.core.business.catalog.product.model.review.ProductReview();
+ populator.populate(review, rev, merchantStore, merchantStore.getDefaultLanguage());
+
+ productReviewService.create(rev);
+
+
+ review.setId(rev.getId());
+
+ return review;
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving product review",e);
+ try {
+ response.sendError(503, "Error while saving product review" + e.getMessage());
+ } catch (Exception ignore) {
+ }
+
+ return null;
+ }
+ }
+
+
+ /**
+ * Will get products for a given category
+ * supports language by setting land as a query parameter
+ * supports paging by adding start and max as query parameters
+ * @param store
+ * @param language
+ * @param category
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/public/{store}/category/{id}/productsproducts/page/{start}/{max}/{store}/{language}/{category}.html")
+ @ResponseBody
+ public ReadableProductList getProducts(@PathVariable String store, @PathVariable final String category, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ /** default routine **/
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ Language language = merchantStore.getDefaultLanguage();
+
+ String lang = language.getCode();
+
+ if(!StringUtils.isBlank(request.getParameter(Constants.LANG))) {
+
+ lang = request.getParameter(Constants.LANG);
+
+ }
+
+/* Map<String,Language> langs = languageService.getLanguagesMap();
+
+
+ if(!StringUtils.isBlank(request.getParameter(Constants.LANG))) {
+ String lang = request.getParameter(Constants.LANG);
+ language = langs.get(language);
+ if(language==null) {
+ language = merchantStore.getDefaultLanguage();
+ }
+ }*/
+
+
+ /** end default routine **/
+
+
+ //start
+ int iStart = 0;
+ if(!StringUtils.isBlank(request.getParameter(Constants.START))) {
+
+ String start = request.getParameter(Constants.START);
+
+ try {
+ iStart = Integer.parseInt(start);
+ } catch(Exception e) {
+ LOGGER.error("Cannot parse start parameter " + start);
+ }
+
+ }
+
+ //max
+ int iMax = 0;
+ if(!StringUtils.isBlank(request.getParameter(Constants.MAX))) {
+
+ String max = request.getParameter(Constants.MAX);
+
+ try {
+ iMax = Integer.parseInt(max);
+ } catch(Exception e) {
+ LOGGER.error("Cannot parse max parameter " + max);
+ }
+
+ }
+
+
+ return this.getProducts(iStart, iMax, store, lang, category, null, model, request, response);
+ }
+
+
+ /**
+ * An entry point for filtering by another entity such as Manufacturer
+ * filter=BRAND&filter-value=123
+ * @param start
+ * @param max
+ * @param store
+ * @param language
+ * @param category
+ * @param filterType
+ * @param filterValue
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/products/public/page/{start}/{max}/{store}/{language}/{category}.html/filter={filterType}/filter-value={filterValue}")
+ @ResponseBody
+ public ReadableProductList getProductsFilteredByType(@PathVariable int start, @PathVariable int max, @PathVariable String store, @PathVariable final String language, @PathVariable final String category, @PathVariable final String filterType, @PathVariable final String filterValue, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ List<QueryFilter> queryFilters = null;
+ try {
+ if(filterType.equals(QueryFilterType.BRAND.name())) {//the only one implemented so far
+ QueryFilter filter = new QueryFilter();
+ filter.setFilterType(QueryFilterType.BRAND);
+ filter.setFilterId(Long.parseLong(filterValue));
+ if(queryFilters==null) {
+ queryFilters = new ArrayList<QueryFilter>();
+ }
+ queryFilters.add(filter);
+ }
+ } catch(Exception e) {
+ LOGGER.error("Invalid filter or filter-value " + filterType + " - " + filterValue,e);
+ }
+
+ return this.getProducts(start, max, store, language, category, queryFilters, model, request, response);
+ }
+
+
+ private ReadableProductList getProducts(final int start, final int max, final String store, final String language, final String category, final List<QueryFilter> filters, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+
+ /**
+ * How to Spring MVC Rest web service - ajax / jquery
+ * http://codetutr.com/2013/04/09/spring-mvc-easy-rest-based-json-services-with-responsebody/
+ */
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null; //reset for the current request
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);//TODO localized message
+ return null;
+ }
+
+ //get the category by code
+ Category cat = categoryService.getBySeUrl(merchantStore, category);
+
+ if(cat==null) {
+ LOGGER.error("Category " + category + " is null");
+ response.sendError(503, "Category is null");//TODO localized message
+ return null;
+ }
+
+ String lineage = new StringBuilder().append(cat.getLineage()).append(cat.getId()).append("/").toString();
+
+ List<Category> categories = categoryService.listByLineage(store, lineage);
+
+ List<Long> ids = new ArrayList<Long>();
+ if(categories!=null && categories.size()>0) {
+ for(Category c : categories) {
+ ids.add(c.getId());
+ }
+ }
+ ids.add(cat.getId());
+
+
+ Language lang = langs.get(language);
+ if(lang==null) {
+ lang = langs.get(Constants.DEFAULT_LANGUAGE);
+ }
+
+ ProductCriteria productCriteria = new ProductCriteria();
+ productCriteria.setMaxCount(max);
+ productCriteria.setStartIndex(start);
+ productCriteria.setCategoryIds(ids);
+
+ if(filters!=null) {
+ for(QueryFilter filter : filters) {
+ if(filter.getFilterType().name().equals(QueryFilterType.BRAND.name())) {//the only filter implemented
+ productCriteria.setManufacturerId(filter.getFilterId());
+ }
+ }
+ }
+
+ com.salesmanager.core.business.catalog.product.model.ProductList products = productService.listByStore(merchantStore, lang, productCriteria);
+
+
+ ReadableProductPopulator populator = new ReadableProductPopulator();
+ populator.setPricingService(pricingService);
+
+
+ ReadableProductList productList = new ReadableProductList();
+ for(Product product : products.getProducts()) {
+
+ //create new proxy product
+ ReadableProduct readProduct = populator.populate(product, new ReadableProduct(), merchantStore, lang);
+ productList.getProducts().add(readProduct);
+
+ }
+
+ productList.setTotalCount(products.getTotalCount());
+
+
+ return productList;
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while getting products",e);
+ response.sendError(503, "An error occured while retrieving products " + e.getMessage());
+ }
+
+ return null;
+
+ }
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/services/controller/store/StoreContactRESTController.java b/sm-shop/src/main/java/com/salesmanager/web/services/controller/store/StoreContactRESTController.java
new file mode 100644
index 0000000..6f57f26
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/services/controller/store/StoreContactRESTController.java
@@ -0,0 +1,132 @@
+package com.salesmanager.web.services.controller.store;
+
+
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.shop.ContactForm;
+import com.salesmanager.web.utils.EmailTemplatesUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+
+/**
+ * Rest services for sending contact
+ * @author Carl Samson
+ *
+ */
+@Controller
+@RequestMapping("/services")
+public class StoreContactRESTController {
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private MerchantStoreService merchantStoreService;
+
+ @Autowired
+ private CategoryService categoryService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private EmailTemplatesUtils emailTemplatesUtils;
+
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(StoreContactRESTController.class);
+
+
+
+ @RequestMapping( value="/public/{store}/contact", method=RequestMethod.POST)
+ @ResponseStatus(HttpStatus.ACCEPTED)
+ @ResponseBody
+ public AjaxResponse contact(@PathVariable final String store, @Valid @RequestBody ContactForm contact, HttpServletRequest request, HttpServletResponse response) {
+
+ AjaxResponse ajaxResponse = new AjaxResponse();
+ try {
+
+ /** default routine **/
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null;
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);
+ return null;
+ }
+
+ Language language = merchantStore.getDefaultLanguage();
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+
+ if(!StringUtils.isBlank(request.getParameter(Constants.LANG))) {
+ String lang = request.getParameter(Constants.LANG);
+ if(lang!=null) {
+ language = langs.get(language);
+ }
+ }
+
+ if(language==null) {
+ language = merchantStore.getDefaultLanguage();
+ }
+
+ Locale l = LocaleUtils.getLocale(language);
+
+
+ /** end default routine **/
+
+
+ emailTemplatesUtils.sendContactEmail(contact, merchantStore, l, request.getContextPath());
+
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ return ajaxResponse;
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while saving category",e);
+ try {
+ response.sendError(503, "Error while saving category " + e.getMessage());
+ } catch (Exception ignore) {
+ }
+ return null;
+ }
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/services/security/CustomerServicesImpl.java b/sm-shop/src/main/java/com/salesmanager/web/services/security/CustomerServicesImpl.java
new file mode 100755
index 0000000..d9a805d
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/services/security/CustomerServicesImpl.java
@@ -0,0 +1,105 @@
+package com.salesmanager.web.services.security;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.GrantedAuthorityImpl;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.Permission;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.core.business.user.service.PermissionService;
+import com.salesmanager.web.admin.security.SecurityDataAccessException;
+
+
+/**
+ *
+ * @author casams1
+ * http://stackoverflow.com/questions/5105776/spring-security-with
+ * -custom-user-details
+ */
+@Service("customerDetailsService")
+public class CustomerServicesImpl implements UserDetailsService{
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomerServicesImpl.class);
+
+ @Autowired
+ private CustomerService customerService;
+
+
+
+ @Autowired
+ protected PermissionService permissionService;
+
+ @Autowired
+ protected GroupService groupService;
+
+
+
+ @SuppressWarnings("deprecation")
+ public UserDetails loadUserByUsername(String userName)
+ throws UsernameNotFoundException, DataAccessException {
+
+ Customer user = null;
+ Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
+
+ try {
+
+ user = customerService.getByNick(userName);
+
+ if(user==null) {
+ return null;
+ }
+
+
+
+ List<Integer> groupsId = new ArrayList<Integer>();
+ List<Group> groups = user.getGroups();
+ for(Group group : groups) {
+ groupsId.add(group.getId());
+ }
+
+
+ List<Permission> permissions = permissionService.getPermissions(groupsId);
+ for(Permission permission : permissions) {
+ GrantedAuthority auth = new GrantedAuthorityImpl(permission.getPermissionName());
+ authorities.add(auth);
+ }
+
+
+
+
+
+
+ } catch (ServiceException e) {
+ LOGGER.error("Exception while querrying customer",e);
+ throw new SecurityDataAccessException("Cannot authenticate customer",e);
+ }
+
+ User authUser = new User(userName, user.getPassword(), true, true,
+ true, true, authorities);
+
+ return authUser;
+
+
+ }
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/services/security/ServicesAuthenticationEntryPoint.java b/sm-shop/src/main/java/com/salesmanager/web/services/security/ServicesAuthenticationEntryPoint.java
new file mode 100644
index 0000000..083e779
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/services/security/ServicesAuthenticationEntryPoint.java
@@ -0,0 +1,19 @@
+package com.salesmanager.web.services.security;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.AuthenticationEntryPoint;
+
+public class ServicesAuthenticationEntryPoint implements AuthenticationEntryPoint {
+
+ @Override
+ public void commence( HttpServletRequest request, HttpServletResponse response,
+ AuthenticationException authException ) throws IOException{
+ response.sendError( HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized" );
+ }
+
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/java/com/salesmanager/web/services/security/ServicesAuthenticationSuccessHandler.java b/sm-shop/src/main/java/com/salesmanager/web/services/security/ServicesAuthenticationSuccessHandler.java
new file mode 100644
index 0000000..066ebb9
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/services/security/ServicesAuthenticationSuccessHandler.java
@@ -0,0 +1,42 @@
+package com.salesmanager.web.services.security;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
+import org.springframework.security.web.savedrequest.HttpSessionRequestCache;
+import org.springframework.security.web.savedrequest.RequestCache;
+import org.springframework.security.web.savedrequest.SavedRequest;
+import org.springframework.util.StringUtils;
+
+public class ServicesAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
+
+ private RequestCache requestCache = new HttpSessionRequestCache();
+
+ @Override
+ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException {
+ SavedRequest savedRequest = requestCache.getRequest(request, response);
+
+ if (savedRequest == null) {
+ clearAuthenticationAttributes(request);
+ return;
+ }
+ String targetUrlParam = getTargetUrlParameter();
+ if (isAlwaysUseDefaultTargetUrl() || (targetUrlParam != null && StringUtils.hasText(request.getParameter(targetUrlParam)))) {
+ requestCache.removeRequest(request, response);
+ clearAuthenticationAttributes(request);
+ return;
+ }
+
+ clearAuthenticationAttributes(request);
+ }
+
+ public void setRequestCache(RequestCache requestCache) {
+ this.requestCache = requestCache;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/AbstractController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/AbstractController.java
new file mode 100644
index 0000000..7558661
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/AbstractController.java
@@ -0,0 +1,93 @@
+/**
+ *
+ */
+package com.salesmanager.web.shop.controller;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.jopendocument.util.ExceptionUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.shop.model.paging.PaginationData;
+
+/**
+ * @author Umesh A
+ *
+ */
+public abstract class AbstractController {
+
+
+ /**
+ * Method which will help to retrieving values from Session
+ * based on the key being passed to the method.
+ * @param key
+ * @return value stored in session corresponding to the key
+ */
+ @SuppressWarnings( "unchecked" )
+ protected <T> T getSessionAttribute(final String key, HttpServletRequest request) {
+ return (T) com.salesmanager.web.utils.SessionUtil.getSessionAttribute(key, request);
+
+ }
+
+ protected void setSessionAttribute(final String key, final Object value, HttpServletRequest request) {
+ com.salesmanager.web.utils.SessionUtil.setSessionAttribute(key, value, request);
+ }
+
+
+ protected void removeAttribute(final String key, HttpServletRequest request) {
+ com.salesmanager.web.utils.SessionUtil.removeSessionAttribute(key, request);
+ }
+
+ protected Language getLanguage(HttpServletRequest request) {
+ return (Language)request.getAttribute(Constants.LANGUAGE);
+ }
+
+
+
+ @ExceptionHandler(Exception.class)
+ @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
+ public ModelAndView handleException(Exception ex) {
+
+ ModelAndView model = null;
+ if(ex instanceof AccessDeniedException) {
+
+ model = new ModelAndView("error/access_denied");
+
+ } else {
+
+ model = new ModelAndView("error/generic_error");
+ model.addObject("stackError", ExceptionUtils.getStackTrace(ex));
+ model.addObject("errMsg", ex.getMessage());
+
+ }
+
+
+
+ return model;
+
+ }
+
+ protected PaginationData createPaginaionData( final int pageNumber, final int pageSize )
+ {
+ final PaginationData paginaionData = new PaginationData(pageSize,pageNumber);
+
+ return paginaionData;
+ }
+
+ protected PaginationData calculatePaginaionData( final PaginationData paginaionData, final int resultCount){
+ paginaionData.setTotalCount( resultCount );
+ return paginaionData;
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/category/ShoppingCategoryController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/category/ShoppingCategoryController.java
new file mode 100644
index 0000000..9ddac70
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/category/ShoppingCategoryController.java
@@ -0,0 +1,723 @@
+package com.salesmanager.web.shop.controller.category;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.ProductCriteria;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.manufacturer.ManufacturerService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.utils.CacheUtils;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.catalog.ProductList;
+import com.salesmanager.web.entity.catalog.category.ReadableCategory;
+import com.salesmanager.web.entity.catalog.manufacturer.ReadableManufacturer;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.entity.shop.Breadcrumb;
+import com.salesmanager.web.entity.shop.PageInformation;
+import com.salesmanager.web.populator.catalog.ReadableCategoryPopulator;
+import com.salesmanager.web.populator.catalog.ReadableProductPopulator;
+import com.salesmanager.web.populator.manufacturer.ReadableManufacturerPopulator;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.model.filter.QueryFilter;
+import com.salesmanager.web.shop.model.filter.QueryFilterType;
+import com.salesmanager.web.utils.BreadcrumbsUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.PageBuilderUtils;
+
+
+/**
+ * Renders a given category page based on friendly url
+ * Can also filter by facets such as manufacturer
+ * @author Carl Samson
+ *
+ */
+@Controller
+public class ShoppingCategoryController {
+
+
+
+ @Autowired
+ private CategoryService categoryService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private MerchantStoreService merchantStoreService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ManufacturerService manufacturerService;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private BreadcrumbsUtils breadcrumbsUtils;
+
+ @Autowired
+ private CacheUtils cache;
+
+ @Autowired
+ private PricingService pricingService;
+
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShoppingCategoryController.class);
+
+
+ /**
+ *
+ * @param friendlyUrl
+ * @param ref
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/shop/category/{friendlyUrl}.html/ref={ref}")
+ public String displayCategoryWithReference(@PathVariable final String friendlyUrl, @PathVariable final String ref, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+
+ return this.displayCategory(friendlyUrl,ref,model,request,response,locale);
+ }
+
+
+
+ /**
+ * Category page entry point
+ * @param friendlyUrl
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/shop/category/{friendlyUrl}.html")
+ public String displayCategoryNoReference(@PathVariable final String friendlyUrl, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ return this.displayCategory(friendlyUrl,null,model,request,response,locale);
+ }
+
+ @SuppressWarnings("unchecked")
+ private String displayCategory(final String friendlyUrl, final String ref, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ //get category
+ Category category = categoryService.getBySeUrl(store, friendlyUrl);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ if(category==null) {
+ LOGGER.error("No category found for friendlyUrl " + friendlyUrl);
+ //redirect on page not found
+ return PageBuilderUtils.build404(store);
+
+ }
+
+ ReadableCategoryPopulator populator = new ReadableCategoryPopulator();
+ ReadableCategory categoryProxy = populator.populate(category, new ReadableCategory(), store, language);
+
+ Breadcrumb breadCrumb = breadcrumbsUtils.buildCategoryBreadcrumb(categoryProxy, store, language, request.getContextPath());
+ request.getSession().setAttribute(Constants.BREADCRUMB, breadCrumb);
+ request.setAttribute(Constants.BREADCRUMB, breadCrumb);
+
+
+ //meta information
+ PageInformation pageInformation = new PageInformation();
+ pageInformation.setPageDescription(categoryProxy.getDescription().getMetaDescription());
+ pageInformation.setPageKeywords(categoryProxy.getDescription().getKeyWords());
+ pageInformation.setPageTitle(categoryProxy.getDescription().getTitle());
+ pageInformation.setPageUrl(categoryProxy.getDescription().getFriendlyUrl());
+
+ //** retrieves category id drill down**//
+ String lineage = new StringBuilder().append(category.getLineage()).append(category.getId()).append(Constants.CATEGORY_LINEAGE_DELIMITER).toString();
+
+
+
+
+ /**
+ String[] categoryPath = lineage.split(Constants.CATEGORY_LINEAGE_DELIMITER);
+ List<Long> ids = new ArrayList<Long>();
+ for(int i=0 ; i<categoryPath.length; i++) {
+ String sId = categoryPath[i];
+ if(!StringUtils.isBlank(sId)) {
+ ids.add(Long.parseLong(sId));
+ }
+ }
+
+ List<Category> categories = categoryService.listByIds(store, ids, language);
+
+ *//** Rebuild breadcrumb **//*
+ BreadcrumbItem home = new BreadcrumbItem();
+ home.setItemType(BreadcrumbItemType.HOME);
+ home.setLabel(messages.getMessage(Constants.HOME_MENU_KEY, locale));
+ home.setUrl(FilePathUtils.buildStoreUri(store, request) + Constants.SHOP_URI);
+
+ Breadcrumb breadCrumb = new Breadcrumb();
+ breadCrumb.setLanguage(language);
+
+ List<BreadcrumbItem> items = new ArrayList<BreadcrumbItem>();
+ items.add(home);
+
+ //category path - use lineage
+ for(Category c : categories) {
+ BreadcrumbItem categoryBreadcrump = new BreadcrumbItem();
+ categoryBreadcrump.setItemType(BreadcrumbItemType.CATEGORY);
+ categoryBreadcrump.setLabel(c.getDescription().getName());
+ categoryBreadcrump.setUrl(FilePathUtils.buildCategoryUrl(store, request, c.getDescription().getSeUrl()));
+ items.add(categoryBreadcrump);
+ }
+
+ breadCrumb.setBreadCrumbs(items);
+ breadCrumb.setItemType(BreadcrumbItemType.CATEGORY);
+ request.getSession().setAttribute(Constants.BREADCRUMB, breadCrumb);
+ request.setAttribute(Constants.BREADCRUMB, breadCrumb);
+ *//** **//*
+*/
+
+ request.setAttribute(Constants.REQUEST_PAGE_INFORMATION, pageInformation);
+
+ //TODO add to caching
+ List<Category> subCategs = categoryService.listByLineage(store, lineage);
+ List<Long> subIds = new ArrayList<Long>();
+ if(subCategs!=null && subCategs.size()>0) {
+ for(Category c : subCategs) {
+ subIds.add(c.getId());
+ }
+ }
+ subIds.add(category.getId());
+
+
+ StringBuilder subCategoriesCacheKey = new StringBuilder();
+ subCategoriesCacheKey
+ .append(store.getId())
+ .append("_")
+ .append(category.getId())
+ .append("_")
+ .append(Constants.SUBCATEGORIES_CACHE_KEY)
+ .append("-")
+ .append(language.getCode());
+
+ StringBuilder subCategoriesMissed = new StringBuilder();
+ subCategoriesMissed
+ .append(subCategoriesCacheKey.toString())
+ .append(Constants.MISSED_CACHE_KEY);
+
+ List<ReadableCategory> subCategories = null;
+ Map<Long,Long> countProductsByCategories = null;
+
+ if(store.isUseCache()) {
+
+ //get from the cache
+ subCategories = (List<ReadableCategory>) cache.getFromCache(subCategoriesCacheKey.toString());
+ if(subCategories==null) {
+ //get from missed cache
+ //Boolean missedContent = (Boolean)cache.getFromCache(subCategoriesMissed.toString());
+
+ //if(missedContent==null) {
+ countProductsByCategories = getProductsByCategory(store, category, lineage, subCategs);
+ subCategories = getSubCategories(store,category,countProductsByCategories,language,locale);
+
+ if(subCategories!=null) {
+ cache.putInCache(subCategories, subCategoriesCacheKey.toString());
+ } else {
+ //cache.putInCache(new Boolean(true), subCategoriesCacheKey.toString());
+ }
+ //}
+ }
+ } else {
+ countProductsByCategories = getProductsByCategory(store, category, lineage, subCategs);
+ subCategories = getSubCategories(store,category,countProductsByCategories,language,locale);
+ }
+
+ //Parent category
+ ReadableCategory parentProxy = null;
+ if(!StringUtils.isBlank(ref)) {
+ try {
+ Long parentId = Long.parseLong(ref);
+ Category parent = categoryService.getById(parentId);
+ parentProxy = populator.populate(parent, new ReadableCategory(), store, language);
+ } catch(Exception e) {
+ LOGGER.error("Cannot parse category id to Long ",ref );
+ }
+ }
+
+
+ //** List of manufacturers **//
+ List<ReadableManufacturer> manufacturerList = getManufacturersByProductAndCategory(store,category,subIds,language);
+
+ model.addAttribute("manufacturers", manufacturerList);
+ model.addAttribute("parent", parentProxy);
+ model.addAttribute("category", categoryProxy);
+ model.addAttribute("subCategories", subCategories);
+
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Category.category).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+ }
+
+ @SuppressWarnings("unchecked")
+ private List<ReadableManufacturer> getManufacturersByProductAndCategory(MerchantStore store, Category category, List<Long> subCategoryIds, Language language) throws Exception {
+
+ List<ReadableManufacturer> manufacturerList = null;
+ /** List of manufacturers **/
+ if(subCategoryIds!=null && subCategoryIds.size()>0) {
+
+ StringBuilder manufacturersKey = new StringBuilder();
+ manufacturersKey
+ .append(store.getId())
+ .append("_")
+ .append(Constants.MANUFACTURERS_BY_PRODUCTS_CACHE_KEY)
+ .append("-")
+ .append(language.getCode());
+
+ StringBuilder manufacturersKeyMissed = new StringBuilder();
+ manufacturersKeyMissed
+ .append(manufacturersKey.toString())
+ .append(Constants.MISSED_CACHE_KEY);
+
+ if(store.isUseCache()) {
+
+ //get from the cache
+
+ manufacturerList = (List<ReadableManufacturer>) cache.getFromCache(manufacturersKey.toString());
+
+
+ if(manufacturerList==null) {
+ //get from missed cache
+ //Boolean missedContent = (Boolean)cache.getFromCache(manufacturersKeyMissed.toString());
+ //if(missedContent==null) {
+ manufacturerList = this.getManufacturers(store, subCategoryIds, language);
+ if(CollectionUtils.isEmpty(manufacturerList)) {
+ cache.putInCache(new Boolean(true), manufacturersKeyMissed.toString());
+ } else {
+ //cache.putInCache(manufacturerList, manufacturersKey.toString());
+ }
+ //}
+ }
+ } else {
+ manufacturerList = this.getManufacturers(store, subCategoryIds, language);
+ }
+ }
+ return manufacturerList;
+ }
+
+ private List<ReadableManufacturer> getManufacturers(MerchantStore store, List<Long> ids, Language language) throws Exception {
+ List<ReadableManufacturer> manufacturerList = null;
+ List<com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer> manufacturers = manufacturerService.listByProductsByCategoriesId(store, ids, language);
+ if(!CollectionUtils.isEmpty(manufacturers)) {
+ manufacturerList = new ArrayList<ReadableManufacturer>();
+ for(com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer manufacturer : manufacturers) {
+ ReadableManufacturer manuf = new ReadableManufacturerPopulator().populate(manufacturer, new ReadableManufacturer(), store, language);
+ manufacturerList.add(manuf);
+
+ }
+ }
+ return manufacturerList;
+ }
+
+ private Map<Long,Long> getProductsByCategory(MerchantStore store, Category category, String lineage, List<Category> subCategories) throws Exception {
+
+ if(CollectionUtils.isEmpty(subCategories)) {
+ return null;
+ }
+ List<Long> ids = new ArrayList<Long>();
+ if(subCategories!=null && subCategories.size()>0) {
+ for(Category c : subCategories) {
+ ids.add(c.getId());
+ }
+ }
+
+ List<Object[]> countProductsByCategories = categoryService.countProductsByCategories(store, ids);
+ Map<Long, Long> countByCategories = new HashMap<Long,Long>();
+
+ for(Object[] counts : countProductsByCategories) {
+ Category c = (Category)counts[0];
+ if(c.getParent().getId()==category.getId()) {
+ countByCategories.put(c.getId(), (Long)counts[1]);
+ } else {
+ //get lineage
+ String lin = c.getLineage();
+ String[] categoryPath = lin.split(Constants.CATEGORY_LINEAGE_DELIMITER);
+ for(int i=0 ; i<categoryPath.length; i++) {
+ String sId = categoryPath[i];
+ if(!StringUtils.isBlank(sId)) {
+ Long count = countByCategories.get(Long.parseLong(sId));
+ if(count!=null) {
+ count = count + (Long)counts[1];
+ countByCategories.put(Long.parseLong(sId), count);
+ }
+ }
+ }
+ }
+ }
+
+ return countByCategories;
+
+ }
+
+ private List<ReadableCategory> getSubCategories(MerchantStore store, Category category, Map<Long,Long> productCount, Language language, Locale locale) throws Exception {
+
+
+ //sub categories
+ List<Category> subCategories = categoryService.listByParent(category, language);
+ ReadableCategoryPopulator populator = new ReadableCategoryPopulator();
+ List<ReadableCategory> subCategoryProxies = new ArrayList<ReadableCategory>();
+ for(Category sub : subCategories) {
+ ReadableCategory cProxy = populator.populate(sub, new ReadableCategory(), store, language);
+ //com.salesmanager.web.entity.catalog.Category cProxy = catalogUtils.buildProxyCategory(sub, store, locale);
+ if(productCount!=null) {
+ Long total = productCount.get(cProxy.getId());
+ if(total!=null) {
+ cProxy.setProductCount(total.intValue());
+ }
+ }
+ subCategoryProxies.add(cProxy);
+ }
+
+ return subCategoryProxies;
+
+ }
+
+
+
+ /**
+ * Returns all categories for a given MerchantStore
+ */
+ @RequestMapping("/services/public/category/{store}/{language}")
+ @ResponseBody
+ public List<ReadableCategory> getCategories(@PathVariable final String language, @PathVariable final String store, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+ Language l = langs.get(language);
+ if(l==null) {
+ l = languageService.getByCode(Constants.DEFAULT_LANGUAGE);
+ }
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null; //reset for the current request
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);//TODO localized message
+ return null;
+ }
+
+ List<Category> categories = categoryService.listByStore(merchantStore, l);
+
+ ReadableCategoryPopulator populator = new ReadableCategoryPopulator();
+
+ List<ReadableCategory> returnCategories = new ArrayList<ReadableCategory>();
+ for(Category category : categories) {
+ ReadableCategory categoryProxy = populator.populate(category, new ReadableCategory(), merchantStore, l);
+ returnCategories.add(categoryProxy);
+ }
+
+ return returnCategories;
+ }
+
+ /**
+ * Returns an array of products belonging to a given category
+ * in a given language for a given store
+ * url example : http://<host>/sm-shop/shop/services/public/products/DEFAULT/BOOKS
+ * @param store
+ * @param language
+ * @param category
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/services/public/products/{store}/{language}/{category}")
+ @ResponseBody
+ public ProductList getProducts(@PathVariable final String store, @PathVariable final String language, @PathVariable final String category, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ //http://localhost:8080/sm-shop/services/public/products/DEFAULT/en/book.html
+
+ try {
+
+
+ /**
+ * How to Spring MVC Rest web service - ajax / jquery
+ * http://codetutr.com/2013/04/09/spring-mvc-easy-rest-based-json-services-with-responsebody/
+ */
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null; //reset for the current request
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);//TODO localized message
+ return null;
+ }
+
+ //get the category by code
+ Category cat = categoryService.getBySeUrl(merchantStore, category);
+
+ if(cat==null) {
+ LOGGER.error("Category with friendly url " + category + " is null");
+ response.sendError(503, "Category is null");//TODO localized message
+ }
+
+ String lineage = new StringBuilder().append(cat.getLineage()).append(cat.getId()).append("/").toString();
+
+ List<Category> categories = categoryService.listByLineage(store, lineage);
+
+ List<Long> ids = new ArrayList<Long>();
+ if(categories!=null && categories.size()>0) {
+ for(Category c : categories) {
+ ids.add(c.getId());
+ }
+ }
+ ids.add(cat.getId());
+
+ Language lang = langs.get(language);
+ if(lang==null) {
+ lang = langs.get(Constants.DEFAULT_LANGUAGE);
+ }
+
+ List<com.salesmanager.core.business.catalog.product.model.Product> products = productService.getProducts(ids, lang);
+
+ ProductList productList = new ProductList();
+
+ ReadableProductPopulator populator = new ReadableProductPopulator();
+ populator.setPricingService(pricingService);
+
+ for(Product product : products) {
+ //create new proxy product
+ ReadableProduct p = populator.populate(product, new ReadableProduct(), merchantStore, lang);
+ productList.getProducts().add(p);
+
+ }
+
+ productList.setProductCount(productList.getProducts().size());
+ return productList;
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while getting category",e);
+ response.sendError(503, "Error while getting category");
+ }
+
+ return null;
+ }
+
+
+ /**
+ * Will page products of a given category
+ * @param store
+ * @param language
+ * @param category
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/services/public/products/page/{start}/{max}/{store}/{language}/{category}.html")
+ @ResponseBody
+ public ProductList getProducts(@PathVariable int start, @PathVariable int max, @PathVariable String store, @PathVariable final String language, @PathVariable final String category, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ return this.getProducts(start, max, store, language, category, null, model, request, response);
+ }
+
+
+ /**
+ * An entry point for filtering by another entity such as Manufacturer
+ * filter=BRAND&filter-value=123
+ * @param start
+ * @param max
+ * @param store
+ * @param language
+ * @param category
+ * @param filterType
+ * @param filterValue
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/services/public/products/page/{start}/{max}/{store}/{language}/{category}.html/filter={filterType}/filter-value={filterValue}")
+ @ResponseBody
+ public ProductList getProductsFilteredByType(@PathVariable int start, @PathVariable int max, @PathVariable String store, @PathVariable final String language, @PathVariable final String category, @PathVariable final String filterType, @PathVariable final String filterValue, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ List<QueryFilter> queryFilters = null;
+ try {
+ if(filterType.equals(QueryFilterType.BRAND.name())) {//the only one implemented so far
+ QueryFilter filter = new QueryFilter();
+ filter.setFilterType(QueryFilterType.BRAND);
+ filter.setFilterId(Long.parseLong(filterValue));
+ if(queryFilters==null) {
+ queryFilters = new ArrayList<QueryFilter>();
+ }
+ queryFilters.add(filter);
+ }
+ } catch(Exception e) {
+ LOGGER.error("Invalid filter or filter-value " + filterType + " - " + filterValue,e);
+ }
+
+ return this.getProducts(start, max, store, language, category, queryFilters, model, request, response);
+ }
+
+
+ private ProductList getProducts(final int start, final int max, final String store, final String language, final String category, final List<QueryFilter> filters, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ try {
+
+
+ /**
+ * How to Spring MVC Rest web service - ajax / jquery
+ * http://codetutr.com/2013/04/09/spring-mvc-easy-rest-based-json-services-with-responsebody/
+ */
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null; //reset for the current request
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);//TODO localized message
+ return null;
+ }
+
+ //get the category by code
+ Category cat = categoryService.getBySeUrl(merchantStore, category);
+
+ if(cat==null) {
+ LOGGER.error("Category " + category + " is null");
+ response.sendError(503, "Category is null");//TODO localized message
+ return null;
+ }
+
+ String lineage = new StringBuilder().append(cat.getLineage()).append(cat.getId()).append("/").toString();
+
+ List<Category> categories = categoryService.listByLineage(store, lineage);
+
+ List<Long> ids = new ArrayList<Long>();
+ if(categories!=null && categories.size()>0) {
+ for(Category c : categories) {
+ ids.add(c.getId());
+ }
+ }
+ ids.add(cat.getId());
+
+
+ Language lang = langs.get(language);
+ if(lang==null) {
+ lang = langs.get(Constants.DEFAULT_LANGUAGE);
+ }
+
+ ProductCriteria productCriteria = new ProductCriteria();
+ productCriteria.setMaxCount(max);
+ productCriteria.setStartIndex(start);
+ productCriteria.setCategoryIds(ids);
+
+ if(filters!=null) {
+ for(QueryFilter filter : filters) {
+ if(filter.getFilterType().name().equals(QueryFilterType.BRAND.name())) {//the only filter implemented
+ productCriteria.setManufacturerId(filter.getFilterId());
+ }
+ }
+ }
+
+ com.salesmanager.core.business.catalog.product.model.ProductList products = productService.listByStore(merchantStore, lang, productCriteria);
+
+ ReadableProductPopulator populator = new ReadableProductPopulator();
+ populator.setPricingService(pricingService);
+
+
+ ProductList productList = new ProductList();
+ for(Product product : products.getProducts()) {
+
+ //create new proxy product
+ ReadableProduct p = populator.populate(product, new ReadableProduct(), merchantStore, lang);
+ productList.getProducts().add(p);
+
+ }
+
+ productList.setProductCount(products.getTotalCount());
+ return productList;
+
+
+ } catch (Exception e) {
+ LOGGER.error("Error while getting products",e);
+ response.sendError(503, "An error occured while retrieving products " + e.getMessage());
+ }
+
+ return null;
+
+ }
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/content/ShopContentController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/content/ShopContentController.java
new file mode 100644
index 0000000..7fe278b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/content/ShopContentController.java
@@ -0,0 +1,65 @@
+package com.salesmanager.web.shop.controller.content;
+
+import java.util.Locale;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.salesmanager.core.business.content.model.ContentDescription;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.shop.PageInformation;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+
+@Controller
+public class ShopContentController {
+
+
+ @Autowired
+ private ContentService contentService;
+
+
+ @RequestMapping("/shop/pages/{friendlyUrl}.html")
+ public String displayContent(@PathVariable final String friendlyUrl, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ ContentDescription contentDescription = contentService.getBySeUrl(store, friendlyUrl);
+
+ if(contentDescription!=null) {
+
+ //meta information
+ PageInformation pageInformation = new PageInformation();
+ pageInformation.setPageDescription(contentDescription.getMetatagDescription());
+ pageInformation.setPageKeywords(contentDescription.getMetatagKeywords());
+ pageInformation.setPageTitle(contentDescription.getTitle());
+ pageInformation.setPageUrl(contentDescription.getName());
+
+ request.setAttribute(Constants.REQUEST_PAGE_INFORMATION, pageInformation);
+
+
+ }
+
+ //TODO breadcrumbs
+
+ model.addAttribute("content",contentDescription);
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Content.content).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/ControllerConstants.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/ControllerConstants.java
new file mode 100644
index 0000000..8e9a875
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/ControllerConstants.java
@@ -0,0 +1,80 @@
+/**
+ *
+ */
+package com.salesmanager.web.shop.controller;
+
+/**
+ * Interface contain constant for Controller.These constant will be used throughout
+ * sm-shop to providing constant values to various Controllers being used in the
+ * application.
+ * @author Umesh A
+ *
+ */
+public interface ControllerConstants
+{
+
+ final static String REDIRECT="redirect:";
+
+ interface Tiles{
+ interface ShoppingCart{
+ final static String shoppingCart="maincart";
+ }
+
+ interface Category{
+ final static String category="category";
+ }
+
+ interface Product{
+ final static String product="product";
+ }
+
+ interface Customer{
+ final static String customer="customer";
+ final static String customerLogon="customerLogon";
+ final static String review="review";
+ final static String register="register";
+ final static String changePassword="customerPassword";
+ final static String customerOrders="customerOrders";
+ final static String customerOrder="customerOrder";
+ final static String Billing="customerAddress";
+ final static String EditAddress="editCustomerAddress";
+ }
+
+ interface Content{
+ final static String content="content";
+ final static String contactus="contactus";
+ }
+
+ interface Pages{
+ final static String notFound="404";
+ final static String timeout="timeout";
+ }
+
+ interface Merchant{
+ final static String contactUs="contactus";
+ }
+
+ interface Checkout{
+ final static String checkout="checkout";
+ final static String confirmation="confirmation";
+ }
+
+ interface Search{
+ final static String search="search";
+ }
+
+
+
+ }
+
+ interface Views
+ {
+ interface Controllers
+ {
+ interface Registration
+ {
+ String RegistrationPage = "shop/customer/registration.html";
+ }
+ }
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerAccountController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerAccountController.java
new file mode 100644
index 0000000..ac25f35
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerAccountController.java
@@ -0,0 +1,523 @@
+package com.salesmanager.web.shop.controller.customer;
+
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.model.attribute.CustomerAttribute;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionType;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerAttributeService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionSetService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionValueService;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.CustomerEntity;
+import com.salesmanager.web.entity.customer.CustomerPassword;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.controller.customer.facade.CustomerFacade;
+import com.salesmanager.web.shop.controller.order.facade.OrderFacade;
+import com.salesmanager.web.utils.EmailTemplatesUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+//import com.salesmanager.web.shop.controller.data.CountryData;
+
+/**
+ * Entry point for logged in customers
+ * @author Carl Samson
+ *
+ */
+@Controller
+@RequestMapping("/shop/customer")
+public class CustomerAccountController extends AbstractController {
+
+ private static final String CUSTOMER_ID_PARAMETER = "customer";
+ private static final String BILLING_SECTION="/shop/customer//billing.html";
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomerAccountController.class);
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private CustomerOptionService customerOptionService;
+
+ @Autowired
+ private CustomerOptionValueService customerOptionValueService;
+
+ @Autowired
+ private CustomerOptionSetService customerOptionSetService;
+
+ @Autowired
+ private CustomerAttributeService customerAttributeService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private EmailTemplatesUtils emailTemplatesUtils;
+
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @Autowired
+ private CustomerFacade customerFacade;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private OrderFacade orderFacade;
+
+ @Autowired
+ private LabelUtils messages;
+
+
+
+ /**
+ * Dedicated customer logon page
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value="/customLogon.html", method=RequestMethod.GET)
+ public String displayLogon(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+
+
+ //dispatch to dedicated customer logon
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.customerLogon).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+
+ }
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/account.html", method=RequestMethod.GET)
+ public String displayCustomerAccount(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+
+
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.customer).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+
+ }
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/password.html", method=RequestMethod.GET)
+ public String displayCustomerChangePassword(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+
+ CustomerPassword customerPassword = new CustomerPassword();
+ model.addAttribute("password", customerPassword);
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.changePassword).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+
+ }
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/changePassword.html", method=RequestMethod.POST)
+ public String changePassword(@Valid @ModelAttribute(value="password") CustomerPassword password, BindingResult bindingResult, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.changePassword).append(".").append(store.getStoreTemplate());
+
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ Customer customer = null;
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ customer = customerFacade.getCustomerByUserName(auth.getName(), store);
+
+ }
+
+ if(customer==null) {
+ return "redirect:/"+Constants.SHOP_URI;
+ }
+
+ String currentPassword = password.getCurrentPassword();
+ String encodedCurrentPassword = passwordEncoder.encodePassword(currentPassword, null);
+
+ if(!StringUtils.equals(encodedCurrentPassword, customer.getPassword())) {
+ FieldError error = new FieldError("password","password",messages.getMessage("message.invalidpassword", locale));
+ bindingResult.addError(error);
+ }
+
+
+ if ( bindingResult.hasErrors() )
+ {
+ LOGGER.info( "found {} validation error while validating customer password",
+ bindingResult.getErrorCount() );
+ return template.toString();
+
+ }
+
+ CustomerPassword customerPassword = new CustomerPassword();
+ model.addAttribute("password", customerPassword);
+
+ String newPassword = password.getPassword();
+ String encodedPassword = passwordEncoder.encodePassword(newPassword, null);
+
+ customer.setPassword(encodedPassword);
+
+ customerService.saveOrUpdate(customer);
+
+ emailTemplatesUtils.changePasswordNotificationEmail(customer, store, LocaleUtils.getLocale(customer.getDefaultLanguage()), request.getContextPath());
+
+ model.addAttribute("success", "success");
+
+ return template.toString();
+
+ }
+
+
+
+ /**
+ * Manage the edition of customer attributes
+ * @param request
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value={"/attributes/save.html"}, method=RequestMethod.POST, produces="application/json")
+ public @ResponseBody String saveCustomerAttributes(HttpServletRequest request, Locale locale) throws Exception {
+
+
+ AjaxResponse resp = new AjaxResponse();
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ //1=1&2=on&3=eeee&4=on&customer=1
+
+ @SuppressWarnings("rawtypes")
+ Enumeration parameterNames = request.getParameterNames();
+
+
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ Customer customer = null;
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ customer = customerFacade.getCustomerByUserName(auth.getName(), store);
+
+ }
+
+ if(customer==null) {
+ LOGGER.error("Customer id [customer] is not defined in the parameters");
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+
+
+
+ if(customer.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ LOGGER.error("Customer id does not belong to current store");
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return resp.toJSONString();
+ }
+
+ List<CustomerAttribute> customerAttributes = customerAttributeService.getByCustomer(store, customer);
+ Map<Long,CustomerAttribute> customerAttributesMap = new HashMap<Long,CustomerAttribute>();
+
+ for(CustomerAttribute attr : customerAttributes) {
+ customerAttributesMap.put(attr.getCustomerOption().getId(), attr);
+ }
+
+ parameterNames = request.getParameterNames();
+
+ while(parameterNames.hasMoreElements()) {
+
+ String parameterName = (String)parameterNames.nextElement();
+ String parameterValue = request.getParameter(parameterName);
+ try {
+
+ String[] parameterKey = parameterName.split("-");
+ com.salesmanager.core.business.customer.model.attribute.CustomerOption customerOption = null;
+ com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue customerOptionValue = null;
+
+
+ if(CUSTOMER_ID_PARAMETER.equals(parameterName)) {
+ continue;
+ }
+
+ if(parameterKey.length>1) {
+ //parse key - value
+ String key = parameterKey[0];
+ String value = parameterKey[1];
+ //should be on
+ customerOption = customerOptionService.getById(new Long(key));
+ customerOptionValue = customerOptionValueService.getById(new Long(value));
+
+
+
+ } else {
+ customerOption = customerOptionService.getById(new Long(parameterName));
+ customerOptionValue = customerOptionValueService.getById(new Long(parameterValue));
+
+ }
+
+ //get the attribute
+ //CustomerAttribute attribute = customerAttributeService.getByCustomerOptionId(store, customer.getId(), customerOption.getId());
+ CustomerAttribute attribute = customerAttributesMap.get(customerOption.getId());
+ if(attribute==null) {
+ attribute = new CustomerAttribute();
+ attribute.setCustomer(customer);
+ attribute.setCustomerOption(customerOption);
+ } else {
+ customerAttributes.remove(attribute);
+ }
+
+ if(customerOption.getCustomerOptionType().equals(CustomerOptionType.Text.name())) {
+ if(!StringUtils.isBlank(parameterValue)) {
+ attribute.setCustomerOptionValue(customerOptionValue);
+ attribute.setTextValue(parameterValue);
+ } else {
+ attribute.setTextValue(null);
+ }
+ } else {
+ attribute.setCustomerOptionValue(customerOptionValue);
+ }
+
+
+ if(attribute.getId()!=null && attribute.getId().longValue()>0) {
+ if(attribute.getCustomerOptionValue()==null){
+ customerAttributeService.delete(attribute);
+ } else {
+ customerAttributeService.update(attribute);
+ }
+ } else {
+ customerAttributeService.save(attribute);
+ }
+
+
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot get parameter information " + parameterName,e);
+ }
+
+ }
+
+ //and now the remaining to be removed
+ for(CustomerAttribute attr : customerAttributes) {
+ customerAttributeService.delete(attr);
+ }
+
+ //refresh customer
+ Customer c = customerService.getById(customer.getId());
+ super.setSessionAttribute(Constants.CUSTOMER, c, request);
+
+ resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+ return resp.toJSONString();
+
+
+ }
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/billing.html", method=RequestMethod.GET)
+ public String displayCustomerBillingAddress(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+ Language language = getSessionAttribute(Constants.LANGUAGE, request);
+
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ Customer customer = null;
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ customer = customerFacade.getCustomerByUserName(auth.getName(), store);
+
+ }
+
+ if(customer==null) {
+ return "redirect:/"+Constants.SHOP_URI;
+ }
+
+
+ CustomerEntity customerEntity = customerFacade.getCustomerDataByUserName( customer.getNick(), store, language );
+ if(customer !=null){
+ model.addAttribute( "customer", customerEntity);
+ }
+
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.Billing).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+
+ }
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/editAddress.html", method={RequestMethod.GET,RequestMethod.POST})
+ public String editAddress(final Model model, final HttpServletRequest request,
+ @RequestParam(value = "billingAddress", required = false) Boolean billingAddress) throws Exception {
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ Customer customer = null;
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ customer = customerFacade.getCustomerByUserName(auth.getName(), store);
+
+ }
+
+ if(customer==null) {
+ return "redirect:/"+Constants.SHOP_URI;
+ }
+
+
+
+ Address address=customerFacade.getAddress( customer.getId(), store, billingAddress );
+ model.addAttribute( "address", address);
+ model.addAttribute( "customerId", customer.getId() );
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.EditAddress).append(".").append(store.getStoreTemplate());
+ return template.toString();
+ }
+
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/updateAddress.html", method={RequestMethod.GET,RequestMethod.POST})
+ public String updateCustomerAddress(@Valid
+ @ModelAttribute("address") Address address,BindingResult bindingResult,final Model model, final HttpServletRequest request,
+ @RequestParam(value = "billingAddress", required = false) Boolean billingAddress) throws Exception {
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ Customer customer = null;
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ customer = customerFacade.getCustomerByUserName(auth.getName(), store);
+
+ }
+
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.EditAddress).append(".").append(store.getStoreTemplate());
+
+ if(customer==null) {
+ return "redirect:/"+Constants.SHOP_URI;
+ }
+
+ model.addAttribute( "address", address);
+ model.addAttribute( "customerId", customer.getId() );
+
+
+ if(bindingResult.hasErrors()){
+ LOGGER.info( "found {} error(s) while validating customer address ",
+ bindingResult.getErrorCount() );
+ return template.toString();
+ }
+
+
+ Language language = getSessionAttribute(Constants.LANGUAGE, request);
+ customerFacade.updateAddress( customer.getId(), store, address, language);
+
+ Customer c = customerService.getById(customer.getId());
+ super.setSessionAttribute(Constants.CUSTOMER, c, request);
+
+ model.addAttribute("success", "success");
+
+ return template.toString();
+
+ }
+
+
+ @ModelAttribute("countries")
+ protected List<Country> getCountries(final HttpServletRequest request){
+
+ Language language = (Language) request.getAttribute( "LANGUAGE" );
+ try
+ {
+ if ( language == null )
+ {
+ language = (Language) request.getAttribute( "LANGUAGE" );
+ }
+
+ if ( language == null )
+ {
+ language = languageService.getByCode( Constants.DEFAULT_LANGUAGE );
+ }
+
+ List<Country> countryList=countryService.getCountries( language );
+ return countryList;
+ }
+ catch ( ServiceException e )
+ {
+ LOGGER.error( "Error while fetching country list ", e );
+
+ }
+ return Collections.emptyList();
+ }
+
+ //@ModelAttribute("zones")
+ //public List<Zone> getZones(final HttpServletRequest request){
+ // return zoneService.list();
+ //}
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerDashboardController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerDashboardController.java
new file mode 100644
index 0000000..0354d00
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerDashboardController.java
@@ -0,0 +1,135 @@
+package com.salesmanager.web.shop.controller.customer;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.model.attribute.CustomerAttribute;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionSet;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionType;
+import com.salesmanager.core.business.customer.model.attribute.CustomerOptionValueDescription;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionSetService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.web.admin.entity.customer.attribute.CustomerOption;
+import com.salesmanager.web.admin.entity.customer.attribute.CustomerOptionValue;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.populator.customer.CustomerOptionPopulator;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+
+/**
+ * Entry point for logged in customers
+ * @author Carl Samson
+ *
+ */
+@Controller
+@RequestMapping("/shop/customer")
+public class CustomerDashboardController extends AbstractController {
+
+ @Autowired
+ private AuthenticationManager customerAuthenticationManager;
+
+ @Autowired
+ private CustomerOptionSetService customerOptionSetService;
+
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/dashboard.html", method=RequestMethod.GET)
+ public String displayCustomerDashboard(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+
+ Customer customer = (Customer)request.getAttribute(Constants.CUSTOMER);
+ getCustomerOptions(model, customer, store, language);
+
+
+ model.addAttribute("section","dashboard");
+
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.customer).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+
+ }
+
+
+ private void getCustomerOptions(Model model, Customer customer, MerchantStore store, Language language) throws Exception {
+
+ Map<Long,CustomerOption> options = new HashMap<Long,CustomerOption>();
+ //get options
+ List<CustomerOptionSet> optionSet = customerOptionSetService.listByStore(store, language);
+ if(!CollectionUtils.isEmpty(optionSet)) {
+
+
+ CustomerOptionPopulator optionPopulator = new CustomerOptionPopulator();
+
+ Set<CustomerAttribute> customerAttributes = customer.getAttributes();
+
+ for(CustomerOptionSet optSet : optionSet) {
+
+ com.salesmanager.core.business.customer.model.attribute.CustomerOption custOption = optSet.getCustomerOption();
+ if(!custOption.isActive() || !custOption.isPublicOption()) {
+ continue;
+ }
+ CustomerOption customerOption = options.get(custOption.getId());
+
+ optionPopulator.setOptionSet(optSet);
+
+
+
+ if(customerOption==null) {
+ customerOption = new CustomerOption();
+ customerOption.setId(custOption.getId());
+ customerOption.setType(custOption.getCustomerOptionType());
+ customerOption.setName(custOption.getDescriptionsSettoList().get(0).getName());
+
+ }
+
+ optionPopulator.populate(custOption, customerOption, store, language);
+ options.put(customerOption.getId(), customerOption);
+
+ if(!CollectionUtils.isEmpty(customerAttributes)) {
+ for(CustomerAttribute customerAttribute : customerAttributes) {
+ if(customerAttribute.getCustomerOption().getId().longValue()==customerOption.getId()){
+ CustomerOptionValue selectedValue = new CustomerOptionValue();
+ com.salesmanager.core.business.customer.model.attribute.CustomerOptionValue attributeValue = customerAttribute.getCustomerOptionValue();
+ selectedValue.setId(attributeValue.getId());
+ CustomerOptionValueDescription optValue = attributeValue.getDescriptionsSettoList().get(0);
+ selectedValue.setName(optValue.getName());
+ customerOption.setDefaultValue(selectedValue);
+ if(customerOption.getType().equalsIgnoreCase(CustomerOptionType.Text.name())) {
+ selectedValue.setName(customerAttribute.getTextValue());
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ model.addAttribute("options", options.values());
+
+
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerLoginController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerLoginController.java
new file mode 100644
index 0000000..e8e98da
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerLoginController.java
@@ -0,0 +1,123 @@
+package com.salesmanager.web.shop.controller.customer;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCart;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.customer.SecuredCustomer;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.customer.facade.CustomerFacade;
+
+/**
+ * Custom Spring Security authentication
+ * @author Carl Samson
+ *
+ */
+@Controller
+@RequestMapping("/shop/customer")
+public class CustomerLoginController extends AbstractController {
+
+ @Autowired
+ private AuthenticationManager customerAuthenticationManager;
+
+
+ @Autowired
+ private CustomerFacade customerFacade;
+
+ @Autowired
+ private ShoppingCartService shoppingCartService;
+
+ private static final Logger LOG = LoggerFactory.getLogger(CustomerLoginController.class);
+
+ /**
+ * Customer login entry point
+ * @param securedCustomer
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value="/logon.html", method=RequestMethod.POST)
+ public @ResponseBody String logon(@ModelAttribute SecuredCustomer securedCustomer, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ AjaxResponse jsonObject=new AjaxResponse();
+
+
+ try {
+
+ LOG.debug("Authenticating user " + securedCustomer.getUserName());
+
+ //user goes to shop filter first so store and language are set
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ //check if username is from the appropriate store
+ Customer customerModel = customerFacade.getCustomerByUserName(securedCustomer.getUserName(), store);
+ if(customerModel==null) {
+ jsonObject.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return jsonObject.toJSONString();
+ }
+ customerFacade.authenticate(customerModel, securedCustomer.getUserName(), securedCustomer.getPassword());
+ //set customer in the http session
+ super.setSessionAttribute(Constants.CUSTOMER, customerModel, request);
+ jsonObject.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+
+
+
+ LOG.info( "Fetching and merging Shopping Cart data" );
+ final String sessionShoppingCartCode= (String)request.getSession().getAttribute( Constants.SHOPPING_CART );
+ if(!StringUtils.isBlank(sessionShoppingCartCode)) {
+ ShoppingCartData shoppingCartData= customerFacade.mergeCart( customerModel, sessionShoppingCartCode, store, language );
+
+
+ if(shoppingCartData !=null){
+ jsonObject.addEntry(Constants.SHOPPING_CART, shoppingCartData.getCode());
+ request.getSession().setAttribute(Constants.SHOPPING_CART, shoppingCartData.getCode());
+ }
+ } else {
+
+ ShoppingCart cartModel = shoppingCartService.getByCustomer(customerModel);
+ if(cartModel!=null) {
+ jsonObject.addEntry( Constants.SHOPPING_CART, cartModel.getShoppingCartCode());
+ request.getSession().setAttribute(Constants.SHOPPING_CART, cartModel.getShoppingCartCode());
+ }
+
+ }
+
+
+
+
+
+ } catch (AuthenticationException ex) {
+ jsonObject.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ } catch(Exception e) {
+ jsonObject.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+
+ return jsonObject.toJSONString();
+
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerOrdersController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerOrdersController.java
new file mode 100644
index 0000000..d8d6a14
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerOrdersController.java
@@ -0,0 +1,160 @@
+package com.salesmanager.web.shop.controller.customer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductDownload;
+import com.salesmanager.core.business.order.service.orderproduct.OrderProductDownloadService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.order.ReadableOrder;
+import com.salesmanager.web.entity.order.ReadableOrderList;
+import com.salesmanager.web.entity.order.ReadableOrderProductDownload;
+import com.salesmanager.web.populator.order.ReadableOrderProductDownloadPopulator;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.controller.customer.facade.CustomerFacade;
+import com.salesmanager.web.shop.controller.order.facade.OrderFacade;
+import com.salesmanager.web.shop.model.paging.PaginationData;
+
+@Controller
+@RequestMapping(Constants.SHOP_URI + "/customer")
+public class CustomerOrdersController extends AbstractController {
+
+ @Autowired
+ private MerchantStoreService merchantStoreService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private OrderFacade orderFacade;
+
+ @Autowired
+ private CustomerFacade customerFacade;
+
+ @Autowired
+ private OrderProductDownloadService orderProdctDownloadService;
+
+
+
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomerOrdersController.class);
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/orders.html", method={RequestMethod.GET,RequestMethod.POST})
+ public String listOrders(Model model, @RequestParam(value = "page", defaultValue = "1") final int page, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ LOGGER.info( "Fetching orders for current customer" );
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+ Language language = getSessionAttribute(Constants.LANGUAGE, request);
+
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ Customer customer = null;
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ customer = customerFacade.getCustomerByUserName(auth.getName(), store);
+
+ }
+
+ if(customer==null) {
+ return "redirect:/"+Constants.SHOP_URI;
+ }
+
+ PaginationData paginaionData=createPaginaionData(page,Constants.MAX_ORDERS_PAGE);
+ ReadableOrderList readable= orderFacade.getReadableOrderList(store, customer, (paginaionData.getOffset() -1),paginaionData.getPageSize(), language);
+
+ model.addAttribute( "customerOrders", readable);
+ if(readable!=null) {
+ model.addAttribute( "paginationData", calculatePaginaionData(paginaionData,readable.getTotal()));
+ } else {
+ model.addAttribute( "paginationData", null);
+ }
+
+
+
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.customerOrders).append(".").append(store.getStoreTemplate());
+ return template.toString();
+ }
+
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/order.html", method={RequestMethod.GET,RequestMethod.POST})
+ public String orderDetails(final Model model,final HttpServletRequest request,@RequestParam(value = "orderId" ,required=true) final String orderId) throws Exception{
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+
+ if(StringUtils.isBlank( orderId )){
+ LOGGER.error( "Order Id can not be null or empty" );
+ }
+ LOGGER.info( "Fetching order details for Id " +orderId);
+
+ //get order id
+ Long lOrderId = null;
+ try {
+ lOrderId = Long.parseLong(orderId);
+ } catch(NumberFormatException nfe) {
+ LOGGER.error("Cannot parse orderId to long " + orderId);
+ return "redirect:/"+Constants.SHOP_URI;
+ }
+
+
+ //check if order belongs to customer logged in
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ Customer customer = null;
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ customer = customerFacade.getCustomerByUserName(auth.getName(), store);
+
+ }
+
+ if(customer==null) {
+ return "redirect:/"+Constants.SHOP_URI;
+ }
+
+ ReadableOrder order = orderFacade.getReadableOrder(lOrderId, store, customer.getDefaultLanguage());
+
+ model.addAttribute("order", order);
+
+ //check if any downloads exist for this order
+ List<OrderProductDownload> orderProductDownloads = orderProdctDownloadService.getByOrderId(order.getId());
+ if(CollectionUtils.isNotEmpty(orderProductDownloads)) {
+ ReadableOrderProductDownloadPopulator populator = new ReadableOrderProductDownloadPopulator();
+ List<ReadableOrderProductDownload> downloads = new ArrayList<ReadableOrderProductDownload>();
+ for(OrderProductDownload download : orderProductDownloads) {
+ ReadableOrderProductDownload view = new ReadableOrderProductDownload();
+ populator.populate(download, view, store, language);
+ downloads.add(view);
+ }
+ model.addAttribute("downloads", downloads);
+ }
+
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.customerOrder).append(".").append(store.getStoreTemplate());
+ return template.toString();
+
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerProductReviewController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerProductReviewController.java
new file mode 100644
index 0000000..67e04ba
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerProductReviewController.java
@@ -0,0 +1,226 @@
+package com.salesmanager.web.shop.controller.customer;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.review.ProductReview;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.review.ProductReviewService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.catalog.product.PersistableProductReview;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.entity.catalog.product.ReadableProductReview;
+import com.salesmanager.web.populator.catalog.PersistableProductReviewPopulator;
+import com.salesmanager.web.populator.catalog.ReadableProductPopulator;
+import com.salesmanager.web.populator.catalog.ReadableProductReviewPopulator;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.controller.customer.facade.CustomerFacade;
+import com.salesmanager.web.utils.DateUtil;
+import com.salesmanager.web.utils.LabelUtils;
+
+/**
+ * Entry point for logged in customers
+ * @author Carl Samson
+ *
+ */
+@Controller
+@RequestMapping(Constants.SHOP_URI + "/customer")
+public class CustomerProductReviewController extends AbstractController {
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private ProductReviewService productReviewService;
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private CustomerFacade customerFacade;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/review.html", method=RequestMethod.GET)
+ public String displayProductReview(@RequestParam Long productId, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+ Language language = super.getLanguage(request);
+
+
+
+ //get product
+ Product product = productService.getById(productId);
+ if(product==null) {
+ return "redirect:" + Constants.SHOP_URI;
+ }
+
+ if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
+ return "redirect:" + Constants.SHOP_URI;
+ }
+
+
+ //create readable product
+ ReadableProduct readableProduct = new ReadableProduct();
+ ReadableProductPopulator readableProductPopulator = new ReadableProductPopulator();
+ readableProductPopulator.setPricingService(pricingService);
+ readableProductPopulator.populate(product, readableProduct, store, language);
+ model.addAttribute("product", readableProduct);
+
+
+ Customer customer = customerFacade.getCustomerByUserName(request.getRemoteUser(), store);
+
+ List<ProductReview> reviews = productReviewService.getByProduct(product, language);
+ for(ProductReview r : reviews) {
+ if(r.getCustomer().getId().longValue()==customer.getId().longValue()) {
+
+ ReadableProductReviewPopulator reviewPopulator = new ReadableProductReviewPopulator();
+ ReadableProductReview rev = new ReadableProductReview();
+ reviewPopulator.populate(r, rev, store, language);
+
+ model.addAttribute("customerReview", rev);
+ break;
+ }
+ }
+
+
+ ProductReview review = new ProductReview();
+ review.setCustomer(customer);
+ review.setProduct(product);
+
+ ReadableProductReview productReview = new ReadableProductReview();
+ ReadableProductReviewPopulator reviewPopulator = new ReadableProductReviewPopulator();
+ reviewPopulator.populate(review, productReview, store, language);
+
+ model.addAttribute("review", productReview);
+ model.addAttribute("reviews", reviews);
+
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.review).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+
+ }
+
+
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping(value="/review/submit.html", method=RequestMethod.POST)
+ public String submitProductReview(@ModelAttribute("review") PersistableProductReview review, BindingResult bindingResult, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+ Language language = getLanguage(request);
+
+ Customer customer = customerFacade.getCustomerByUserName(request.getRemoteUser(), store);
+
+ if(customer==null) {
+ return "redirect:" + Constants.SHOP_URI;
+ }
+
+
+ Product product = productService.getById(review.getProductId());
+ if(product==null) {
+ return "redirect:" + Constants.SHOP_URI;
+ }
+
+ if(StringUtils.isBlank(review.getDescription())) {
+ FieldError error = new FieldError("description","description",messages.getMessage("NotEmpty.review.description", locale));
+ bindingResult.addError(error);
+ }
+
+
+
+ ReadableProduct readableProduct = new ReadableProduct();
+ ReadableProductPopulator readableProductPopulator = new ReadableProductPopulator();
+ readableProductPopulator.setPricingService(pricingService);
+ readableProductPopulator.populate(product, readableProduct, store, language);
+ model.addAttribute("product", readableProduct);
+
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.review).append(".").append(store.getStoreTemplate());
+
+ if ( bindingResult.hasErrors() )
+ {
+
+ return template.toString();
+
+ }
+
+
+ //check if customer has already evaluated the product
+ List<ProductReview> reviews = productReviewService.getByProduct(product);
+
+ for(ProductReview r : reviews) {
+ if(r.getCustomer().getId().longValue()==customer.getId().longValue()) {
+ ReadableProductReviewPopulator reviewPopulator = new ReadableProductReviewPopulator();
+ ReadableProductReview rev = new ReadableProductReview();
+ reviewPopulator.populate(r, rev, store, language);
+
+ model.addAttribute("customerReview", rev);
+ return template.toString();
+ }
+ }
+
+
+ PersistableProductReviewPopulator populator = new PersistableProductReviewPopulator();
+ populator.setCustomerService(customerService);
+ populator.setLanguageService(languageService);
+ populator.setProductService(productService);
+
+ review.setDate(DateUtil.formatDate(new Date()));
+ review.setCustomerId(customer.getId());
+
+ ProductReview productReview = populator.populate(review, store, language);
+ productReviewService.create(productReview);
+
+ model.addAttribute("review", review);
+ model.addAttribute("success", "success");
+
+ ReadableProductReviewPopulator reviewPopulator = new ReadableProductReviewPopulator();
+ ReadableProductReview rev = new ReadableProductReview();
+ reviewPopulator.populate(productReview, rev, store, language);
+
+ model.addAttribute("customerReview", rev);
+
+ return template.toString();
+
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerRegistrationController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerRegistrationController.java
new file mode 100644
index 0000000..cf781a2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/CustomerRegistrationController.java
@@ -0,0 +1,290 @@
+package com.salesmanager.web.shop.controller.customer;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import net.tanesha.recaptcha.ReCaptchaImpl;
+import net.tanesha.recaptcha.ReCaptchaResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.customer.CustomerRegistrationException;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.utils.CoreConfiguration;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.customer.AnonymousCustomer;
+import com.salesmanager.web.entity.customer.CustomerEntity;
+import com.salesmanager.web.entity.customer.SecuredShopPersistableCustomer;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.controller.customer.facade.CustomerFacade;
+import com.salesmanager.web.utils.EmailTemplatesUtils;
+import com.salesmanager.web.utils.LabelUtils;
+
+/**
+ * Registration of a new customer
+ * @author Carl Samson
+ *
+ */
+
+@SuppressWarnings( "deprecation" )
+// http://stackoverflow.com/questions/17444258/how-to-use-new-passwordencoder-from-spring-security
+@Controller
+@RequestMapping("/shop/customer")
+public class CustomerRegistrationController extends AbstractController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomerRegistrationController.class);
+
+
+ @Autowired
+ private CoreConfiguration coreConfiguration;
+
+ @Autowired
+ private LanguageService languageService;
+
+
+ @Autowired
+ private CountryService countryService;
+
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+ @Autowired
+ EmailService emailService;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private CustomerFacade customerFacade;
+
+ @Autowired
+ private AuthenticationManager customerAuthenticationManager;
+
+ @Autowired
+ private EmailTemplatesUtils emailTemplatesUtils;
+
+
+
+ @RequestMapping(value="/registration.html", method=RequestMethod.GET)
+ public String displayRegistration(final Model model, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ model.addAttribute( "recapatcha_public_key", coreConfiguration.getProperty( Constants.RECAPATCHA_PUBLIC_KEY ) );
+
+ SecuredShopPersistableCustomer customer = new SecuredShopPersistableCustomer();
+ AnonymousCustomer anonymousCustomer = (AnonymousCustomer)request.getAttribute(Constants.ANONYMOUS_CUSTOMER);
+ if(anonymousCustomer!=null) {
+ customer.setBilling(anonymousCustomer.getBilling());
+ }
+
+ model.addAttribute("customer", customer);
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.register).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+
+
+ }
+
+ @RequestMapping( value = "/register.html", method = RequestMethod.POST )
+ public String registerCustomer( @Valid
+ @ModelAttribute("customer") SecuredShopPersistableCustomer customer, BindingResult bindingResult, Model model,
+ HttpServletRequest request, final Locale locale )
+ throws Exception
+ {
+ MerchantStore merchantStore = (MerchantStore) request.getAttribute( Constants.MERCHANT_STORE );
+ Language language = super.getLanguage(request);
+
+
+ ReCaptchaImpl reCaptcha = new ReCaptchaImpl();
+ reCaptcha.setPublicKey( coreConfiguration.getProperty( Constants.RECAPATCHA_PUBLIC_KEY ) );
+ reCaptcha.setPrivateKey( coreConfiguration.getProperty( Constants.RECAPATCHA_PRIVATE_KEY ) );
+
+ String userName = null;
+ String password = null;
+
+ model.addAttribute( "recapatcha_public_key", coreConfiguration.getProperty( Constants.RECAPATCHA_PUBLIC_KEY ) );
+
+ if ( StringUtils.isNotBlank( customer.getRecaptcha_challenge_field() )
+ && StringUtils.isNotBlank( customer.getRecaptcha_response_field() ) )
+ {
+ ReCaptchaResponse reCaptchaResponse =
+ reCaptcha.checkAnswer( request.getRemoteAddr(), customer.getRecaptcha_challenge_field(),
+ customer.getRecaptcha_response_field() );
+ if ( !reCaptchaResponse.isValid() )
+ {
+ LOGGER.debug( "Captcha response does not matched" );
+ FieldError error = new FieldError("recaptcha_challenge_field","recaptcha_challenge_field",messages.getMessage("validaion.recaptcha.not.matched", locale));
+ bindingResult.addError(error);
+ }
+
+ }
+
+ if ( StringUtils.isNotBlank( customer.getUserName() ) )
+ {
+ if ( customerFacade.checkIfUserExists( customer.getUserName(), merchantStore ) )
+ {
+ LOGGER.debug( "Customer with username {} already exists for this store ", customer.getUserName() );
+ FieldError error = new FieldError("userName","userName",messages.getMessage("registration.username.already.exists", locale));
+ bindingResult.addError(error);
+ }
+ userName = customer.getUserName();
+ }
+
+
+ if ( StringUtils.isNotBlank( customer.getPassword() ) && StringUtils.isNotBlank( customer.getCheckPassword() ))
+ {
+ if (! customer.getPassword().equals(customer.getCheckPassword()) )
+ {
+ FieldError error = new FieldError("password","password",messages.getMessage("message.password.checkpassword.identical", locale));
+ bindingResult.addError(error);
+
+ }
+ password = customer.getPassword();
+ }
+
+ if ( bindingResult.hasErrors() )
+ {
+ LOGGER.debug( "found {} validation error while validating in customer registration ",
+ bindingResult.getErrorCount() );
+ StringBuilder template =
+ new StringBuilder().append( ControllerConstants.Tiles.Customer.register ).append( "." ).append( merchantStore.getStoreTemplate() );
+ return template.toString();
+
+ }
+
+ @SuppressWarnings( "unused" )
+ CustomerEntity customerData = null;
+ try
+ {
+ customerData = customerFacade.registerCustomer( customer, merchantStore, language );
+ }
+ catch ( CustomerRegistrationException cre )
+ {
+ LOGGER.error( "Error while registering customer.. ", cre);
+ ObjectError error = new ObjectError("registration",messages.getMessage("registration.failed", locale));
+ bindingResult.addError(error);
+ StringBuilder template =
+ new StringBuilder().append( ControllerConstants.Tiles.Customer.register ).append( "." ).append( merchantStore.getStoreTemplate() );
+ return template.toString();
+ }
+ catch ( Exception e )
+ {
+ LOGGER.error( "Error while registering customer.. ", e);
+ ObjectError error = new ObjectError("registration",messages.getMessage("registration.failed", locale));
+ bindingResult.addError(error);
+ StringBuilder template =
+ new StringBuilder().append( ControllerConstants.Tiles.Customer.register ).append( "." ).append( merchantStore.getStoreTemplate() );
+ return template.toString();
+ }
+
+ /**
+ * Send registration email
+ */
+ emailTemplatesUtils.sendRegistrationEmail( customer, merchantStore, locale, request.getContextPath() );
+
+ /**
+ * Login user
+ */
+
+ try {
+
+ //refresh customer
+ Customer c = customerFacade.getCustomerByUserName(customer.getUserName(), merchantStore);
+ //authenticate
+ customerFacade.authenticate(c, userName, password);
+ super.setSessionAttribute(Constants.CUSTOMER, c, request);
+
+ return "redirect:/shop/customer/dashboard.html";
+
+
+ } catch(Exception e) {
+ LOGGER.error("Cannot authenticate user ",e);
+ ObjectError error = new ObjectError("registration",messages.getMessage("registration.failed", locale));
+ bindingResult.addError(error);
+ }
+
+
+ StringBuilder template =
+ new StringBuilder().append( ControllerConstants.Tiles.Customer.register ).append( "." ).append( merchantStore.getStoreTemplate() );
+ return template.toString();
+
+ }
+
+
+ @ModelAttribute("countryList")
+ public List<Country> getCountries(final HttpServletRequest request){
+
+ Language language = (Language) request.getAttribute( "LANGUAGE" );
+ try
+ {
+ if ( language == null )
+ {
+ language = (Language) request.getAttribute( "LANGUAGE" );
+ }
+
+ if ( language == null )
+ {
+ language = languageService.getByCode( Constants.DEFAULT_LANGUAGE );
+ }
+
+ List<Country> countryList=countryService.getCountries( language );
+ return countryList;
+ }
+ catch ( ServiceException e )
+ {
+ LOGGER.error( "Error while fetching country list ", e );
+
+ }
+ return Collections.emptyList();
+ }
+
+ @ModelAttribute("zoneList")
+ public List<Zone> getZones(final HttpServletRequest request){
+ return zoneService.list();
+ }
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/facade/CustomerFacade.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/facade/CustomerFacade.java
new file mode 100644
index 0000000..851770f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/facade/CustomerFacade.java
@@ -0,0 +1,91 @@
+/**
+ *
+ */
+package com.salesmanager.web.shop.controller.customer.facade;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.CustomerEntity;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+
+/**
+ * <p>Customer facade working as a bridge between {@link CustomerService} and Controller
+ * It will take care about interacting with Service API and doing any pre and post processing
+ * </p>
+ *
+ * @author Umesh Awasthi
+ * @version 1/2
+ *
+ *
+ */
+public interface CustomerFacade
+{
+
+ /**
+ * Method used to fetch customer based on the username and storecode.
+ * Customer username is unique to each store.
+ *
+ * @param userName
+ * @param storeCode
+ * @param store
+ * @param language
+ * @throws Exception
+ *
+ */
+ public CustomerEntity getCustomerDataByUserName(final String userName,final MerchantStore store, final Language language) throws Exception;
+
+ /**
+ * Creates a ReadableCustomer
+ * @param id
+ * @param merchantStore
+ * @param language
+ * @return
+ */
+ public ReadableCustomer getCustomerById(final Long id, final MerchantStore merchantStore, final Language language) throws Exception;
+
+ /**
+ * <p>Method responsible for merging cart during authentication,
+ * Method will perform following operations
+ * <li> Merge Customer Shopping Cart with Session Cart if any.</li>
+ * <li> Convert Customer to {@link CustomerEntity} </li>
+ * </p>
+ *
+ * @param userName username of Customer
+ * @param storeCode storeCode to which user is associated/
+ * @param sessionShoppingCartId session shopping cart, if user already have few items in Cart.
+ * @throws Exception
+ */
+ public ShoppingCartData mergeCart(final Customer customer,final String sessionShoppingCartId,final MerchantStore store,final Language language) throws Exception;
+
+ public Customer getCustomerByUserName(final String userName, final MerchantStore store) throws Exception;
+
+ public boolean checkIfUserExists(final String userName,final MerchantStore store) throws Exception;
+
+ public CustomerEntity registerCustomer( final PersistableCustomer customer,final MerchantStore merchantStore, final Language language) throws Exception;
+
+ public Address getAddress(final Long userId, final MerchantStore merchantStore,boolean isBillingAddress) throws Exception;
+
+ public void updateAddress( Long userId, MerchantStore merchantStore, Address address, final Language language )
+ throws Exception;
+
+ public void setCustomerModelDefaultProperties(Customer customer, MerchantStore store) throws Exception;
+ //public Customer populateCustomerModel(PersistableCustomer customer,
+ // MerchantStore merchantStore) throws Exception;
+
+ public void authenticate(Customer customer, String userName, String password) throws Exception;
+
+ Customer getCustomerModel(PersistableCustomer customer,
+ MerchantStore merchantStore, Language language) throws Exception;
+
+ Customer populateCustomerModel(Customer customerModel, PersistableCustomer customer,
+ MerchantStore merchantStore, Language language) throws Exception;
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/facade/CustomerFacadeImpl.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/facade/CustomerFacadeImpl.java
new file mode 100644
index 0000000..2962994
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/customer/facade/CustomerFacadeImpl.java
@@ -0,0 +1,559 @@
+/**
+ *
+ */
+package com.salesmanager.web.shop.controller.customer.facade;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.Validate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.GrantedAuthorityImpl;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Service;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.customer.CustomerRegistrationException;
+import com.salesmanager.core.business.customer.exception.CustomerNotFoundException;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionValueService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCart;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartCalculationService;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.GroupType;
+import com.salesmanager.core.business.user.model.Permission;
+import com.salesmanager.core.business.user.service.GroupService;
+import com.salesmanager.core.business.user.service.PermissionService;
+import com.salesmanager.web.admin.entity.userpassword.UserReset;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.CustomerEntity;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+import com.salesmanager.web.populator.customer.CustomerBillingAddressPopulator;
+import com.salesmanager.web.populator.customer.CustomerDeliveryAddressPopulator;
+import com.salesmanager.web.populator.customer.CustomerEntityPopulator;
+import com.salesmanager.web.populator.customer.CustomerPopulator;
+import com.salesmanager.web.populator.customer.PersistableCustomerBillingAddressPopulator;
+import com.salesmanager.web.populator.customer.PersistableCustomerShippingAddressPopulator;
+import com.salesmanager.web.populator.customer.ReadableCustomerPopulator;
+import com.salesmanager.web.populator.shoppingCart.ShoppingCartDataPopulator;
+
+
+/**
+ * Customer Facade work as an abstraction layer between Controller and Service layer.
+ * It work as an entry point to service layer.
+ * @author Umesh Awasthi
+ *
+ */
+
+@Service("customerFacade")
+//// http://stackoverflow.com/questions/17444258/how-to-use-new-passwordencoder-from-spring-security
+public class CustomerFacadeImpl implements CustomerFacade
+{
+
+ private static final Logger LOG = LoggerFactory.getLogger(CustomerFacadeImpl.class);
+ private final static int USERNAME_LENGTH=6;
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private ShoppingCartService shoppingCartService;
+
+ @Autowired
+ private ShoppingCartCalculationService shoppingCartCalculationService;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ProductAttributeService productAttributeService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private CustomerOptionValueService customerOptionValueService;
+
+ @Autowired
+ private CustomerOptionService customerOptionService;
+
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private GroupService groupService;
+
+ @Autowired
+ private PermissionService permissionService;
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @SuppressWarnings( "deprecation" )
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+ @Autowired
+ private EmailService emailService;
+
+ @Autowired
+ private AuthenticationManager customerAuthenticationManager;
+
+
+
+
+ /**
+ * Method used to fetch customer based on the username and storecode.
+ * Customer username is unique to each store.
+ *
+ * @param userName
+ * @param storeCode
+ * @throws ConversionException
+ */
+ @Override
+ public CustomerEntity getCustomerDataByUserName( final String userName, final MerchantStore store, final Language language ) throws Exception
+ {
+ LOG.info( "Fetching customer with userName" +userName);
+ Customer customer=customerService.getByNick( userName );
+
+ if(customer !=null){
+ LOG.info( "Found customer, converting to CustomerEntity");
+ try{
+ CustomerEntityPopulator customerEntityPopulator=new CustomerEntityPopulator();
+ return customerEntityPopulator.populate( customer, store, language ); //store, language
+
+ }
+ catch(ConversionException ex){
+ LOG.error( "Error while converting Customer to CustomerEntity", ex );
+ throw new Exception(ex);
+ }
+ }
+
+ return null;
+
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.salesmanager.web.shop.controller.customer.facade#mergeCart(final Customer customerModel, final String sessionShoppingCartId ,final MerchantStore store,final Language language)
+ */
+ @Override
+ public ShoppingCartData mergeCart( final Customer customerModel, final String sessionShoppingCartId ,final MerchantStore store,final Language language)
+ throws Exception
+ {
+
+ LOG.debug( "Starting merge cart process" );
+ if(customerModel != null){
+ ShoppingCart customerCart = shoppingCartService.getByCustomer( customerModel );
+ if(StringUtils.isNotBlank( sessionShoppingCartId )){
+ ShoppingCart sessionShoppingCart = shoppingCartService.getByCode( sessionShoppingCartId, store );
+ if(sessionShoppingCart != null){
+ if(customerCart == null){
+ if(sessionShoppingCart.getCustomerId()==null) {//saved shopping cart does not belong to a customer
+ LOG.debug( "Not able to find any shoppingCart with current customer" );
+ //give it to the customer
+ sessionShoppingCart.setCustomerId( customerModel.getId() );
+ shoppingCartService.saveOrUpdate( sessionShoppingCart );
+ customerCart =shoppingCartService.getById( sessionShoppingCart.getId(), store );
+ return populateShoppingCartData(customerCart,store,language);
+ } else {
+ return null;
+ }
+ }
+ else{
+ if(sessionShoppingCart.getCustomerId()==null) {//saved shopping cart does not belong to a customer
+ //assign it to logged in user
+ LOG.debug( "Customer shopping cart as well session cart is available, merging carts" );
+ customerCart=shoppingCartService.mergeShoppingCarts( customerCart, sessionShoppingCart, store );
+ customerCart =shoppingCartService.getById( customerCart.getId(), store );
+ return populateShoppingCartData(customerCart,store,language);
+ } else {
+ if(sessionShoppingCart.getCustomerId().longValue()==customerModel.getId().longValue()) {
+ if(!customerCart.getShoppingCartCode().equals(sessionShoppingCart.getShoppingCartCode())) {
+ //merge carts
+ LOG.info( "Customer shopping cart as well session cart is available" );
+ customerCart=shoppingCartService.mergeShoppingCarts( customerCart, sessionShoppingCart, store );
+ customerCart =shoppingCartService.getById( customerCart.getId(), store );
+ return populateShoppingCartData(customerCart,store,language);
+ } else {
+ return populateShoppingCartData(sessionShoppingCart,store,language);
+ }
+ } else {
+ //the saved cart belongs to another user
+ return null;
+ }
+ }
+
+
+ }
+ }
+ }
+ else{
+ if(customerCart !=null){
+ return populateShoppingCartData(customerCart,store,language);
+ }
+ return null;
+
+ }
+ }
+ LOG.info( "Seems some issue with system, unable to find any customer after successful authentication" );
+ return null;
+
+ }
+
+
+ private ShoppingCartData populateShoppingCartData(final ShoppingCart cartModel , final MerchantStore store, final Language language){
+
+ ShoppingCartDataPopulator shoppingCartDataPopulator = new ShoppingCartDataPopulator();
+ shoppingCartDataPopulator.setShoppingCartCalculationService( shoppingCartCalculationService );
+ shoppingCartDataPopulator.setPricingService( pricingService );
+ try
+ {
+ return shoppingCartDataPopulator.populate( cartModel , store, language);
+ }
+ catch ( ConversionException ce )
+ {
+ LOG.error( "Error in converting shopping cart to shopping cart data", ce );
+
+ }
+ return null;
+ }
+
+
+ @Override
+ public Customer getCustomerByUserName(String userName, MerchantStore store)
+ throws Exception {
+ return customerService.getByNick( userName, store.getId() );
+ }
+
+
+ /**
+ * <p>
+ * Method to check if given user exists for given username under given store.
+ * System treat username as unique for a given store,
+ * customer is not allowed
+ * to use same username twice for a given store, however it can be used for
+ * different stores.</p>
+ *
+ * @param userName Customer slected userName
+ * @param store store for which customer want to register
+ * @return boolean flag indicating if user exists for given store or not
+ * @throws Exception
+ *
+ */
+ @Override
+ public boolean checkIfUserExists( final String userName, final MerchantStore store )
+ throws Exception
+ {
+ if ( StringUtils.isNotBlank( userName ) && store != null )
+ {
+ Customer customer = customerService.getByNick( userName, store.getId() );
+ if ( customer != null )
+ {
+ LOG.info( "Customer with userName {} already exists for store {} ", userName, store.getStorename() );
+ return true;
+ }
+
+ LOG.info( "No customer found with userName {} for store {} ", userName, store.getStorename());
+ return false;
+
+ }
+ LOG.info( "Either userName is empty or we have not found any value for store" );
+ return false;
+ }
+
+
+ @Override
+ public CustomerEntity registerCustomer( final PersistableCustomer customer,final MerchantStore merchantStore, Language language )
+ throws Exception
+ {
+ LOG.info( "Starting customer registration process.." );
+ Customer customerModel= getCustomerModel(customer,merchantStore,language);
+ if(customerModel == null){
+ LOG.equals( "Unable to create customer in system" );
+ throw new CustomerRegistrationException( "Unable to register customer" );
+ }
+
+ LOG.info( "About to persist customer to database." );
+ customerService.saveOrUpdate( customerModel );
+
+ LOG.info( "Returning customer data to controller.." );
+ return customerEntityPoulator(customerModel,merchantStore);
+ }
+
+ @Override
+ public Customer getCustomerModel(final PersistableCustomer customer,final MerchantStore merchantStore, Language language) throws Exception {
+
+ LOG.info( "Starting to populate customer model from customer data" );
+ Customer customerModel=null;
+ CustomerPopulator populator = new CustomerPopulator();
+ populator.setCountryService(countryService);
+ populator.setCustomerOptionService(customerOptionService);
+ populator.setCustomerOptionValueService(customerOptionValueService);
+ populator.setLanguageService(languageService);
+ populator.setLanguageService(languageService);
+ populator.setZoneService(zoneService);
+
+
+ customerModel= populator.populate( customer, merchantStore, language );
+ //set groups
+ if(!StringUtils.isBlank(customerModel.getPassword()) && !StringUtils.isBlank(customerModel.getNick())) {
+ customerModel.setPassword(passwordEncoder.encodePassword(customer.getClearPassword(), null));
+ setCustomerModelDefaultProperties(customerModel, merchantStore);
+ }
+
+ return customerModel;
+
+ }
+
+
+
+
+ private CustomerEntity customerEntityPoulator(final Customer customerModel,final MerchantStore merchantStore){
+ CustomerEntityPopulator customerPopulator=new CustomerEntityPopulator();
+ try
+ {
+ CustomerEntity customerEntity= customerPopulator.populate( customerModel, merchantStore, merchantStore.getDefaultLanguage() );
+ if(customerEntity !=null){
+ customerEntity.setId( customerModel.getId() );
+ LOG.info( "Retunring populated instance of customer entity" );
+ return customerEntity;
+ }
+ LOG.warn( "Seems some issue with customerEntity populator..retunring null instance of customerEntity " );
+ return null;
+
+ }
+ catch ( ConversionException e )
+ {
+ LOG.error( "Error while converting customer model to customer entity ",e );
+
+ }
+ return null;
+ }
+
+
+ @Override
+ public void setCustomerModelDefaultProperties(Customer customer,
+ MerchantStore store) throws Exception {
+ Validate.notNull(customer, "Customer object cannot be null");
+ if(customer.getId()==null || customer.getId()==0) {
+ if(StringUtils.isBlank(customer.getNick())) {
+ String userName = UserReset.generateRandomString(USERNAME_LENGTH);
+ customer.setNick(userName);
+ }
+ if(StringUtils.isBlank(customer.getPassword())) {
+ String password = UserReset.generateRandomString();
+ String encodedPassword = passwordEncoder.encodePassword(password, null);
+ customer.setPassword(encodedPassword);
+ }
+ }
+
+ if(CollectionUtils.isEmpty(customer.getGroups())) {
+ List<Group> groups = groupService.listGroup(GroupType.CUSTOMER);
+ for(Group group : groups) {
+ if(group.getGroupName().equals(Constants.GROUP_CUSTOMER)) {
+ customer.getGroups().add(group);
+ }
+ }
+
+ }
+
+ }
+
+
+
+
+ @SuppressWarnings("deprecation")
+ public void authenticate(Customer customer, String userName, String password) throws Exception {
+
+ Validate.notNull(customer, "Customer cannot be null");
+
+ Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
+ GrantedAuthority role = new GrantedAuthorityImpl(Constants.PERMISSION_CUSTOMER_AUTHENTICATED);//required to login
+ authorities.add(role);
+ List<Integer> groupsId = new ArrayList<Integer>();
+ List<Group> groups = customer.getGroups();
+ if(groups!=null) {
+ for(Group group : groups) {
+ groupsId.add(group.getId());
+
+ }
+
+ List<Permission> permissions = permissionService.getPermissions(groupsId);
+ for(Permission permission : permissions) {
+ GrantedAuthority auth = new GrantedAuthorityImpl(permission.getPermissionName());
+ authorities.add(auth);
+ }
+ }
+
+ Authentication authenticationToken =
+ new UsernamePasswordAuthenticationToken(userName, password, authorities);
+
+ Authentication authentication = customerAuthenticationManager.authenticate(authenticationToken);
+
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+
+ }
+
+
+ @Override
+ public Address getAddress( Long userId, final MerchantStore merchantStore,boolean isBillingAddress)
+ throws Exception
+ {
+ LOG.info( "Fetching customer for id {} ", userId);
+ Address address=null;
+ final Customer customerModel=customerService.getById( userId );
+
+ if(customerModel == null){
+ LOG.error( "Customer with ID {} does not exists..", userId);
+ throw new CustomerNotFoundException( "customer with given id does not exists" );
+ }
+
+ if(isBillingAddress){
+ LOG.info( "getting billing address.." );
+ CustomerBillingAddressPopulator billingAddressPopulator=new CustomerBillingAddressPopulator();
+ address =billingAddressPopulator.populate( customerModel, merchantStore, merchantStore.getDefaultLanguage() );
+ address.setBillingAddress( true );
+ return address;
+ }
+
+ LOG.info( "getting Delivery address.." );
+ CustomerDeliveryAddressPopulator deliveryAddressPopulator=new CustomerDeliveryAddressPopulator();
+ return deliveryAddressPopulator.populate( customerModel, merchantStore, merchantStore.getDefaultLanguage() );
+
+ }
+
+
+ @Override
+ public void updateAddress( Long userId, MerchantStore merchantStore, Address address, final Language language )
+ throws Exception
+ {
+
+ Customer customerModel=customerService.getById( userId );
+ Map<String, Country> countriesMap = countryService.getCountriesMap( language );
+ Country country = countriesMap.get( address.getCountry() );
+
+ if(customerModel ==null){
+ LOG.error( "Customer with ID {} does not exists..", userId);
+ throw new CustomerNotFoundException( "customer with given id does not exists" );
+
+ }
+ if(address.isBillingAddress()){
+ LOG.info( "updating customer billing address..");
+ PersistableCustomerBillingAddressPopulator billingAddressPopulator=new PersistableCustomerBillingAddressPopulator();
+ customerModel= billingAddressPopulator.populate( address, customerModel, merchantStore, merchantStore.getDefaultLanguage() );
+ customerModel.getBilling().setCountry( country );
+ if(StringUtils.isNotBlank( address.getZone() )){
+ Zone zone = zoneService.getByCode(address.getZone());
+ if(zone==null) {
+ throw new ConversionException("Unsuported zone code " + address.getZone());
+ }
+ customerModel.getBilling().setZone( zone );
+ customerModel.getBilling().setState(null);
+
+ } else {
+ customerModel.getBilling().setZone(null);
+ }
+
+ }
+ else{
+ LOG.info( "updating customer shipping address..");
+ PersistableCustomerShippingAddressPopulator shippingAddressPopulator=new PersistableCustomerShippingAddressPopulator();
+ customerModel= shippingAddressPopulator.populate( address, customerModel, merchantStore, merchantStore.getDefaultLanguage() );
+ customerModel.getDelivery().setCountry( country );
+ if(StringUtils.isNotBlank( address.getZone() )){
+ Zone zone = zoneService.getByCode(address.getZone());
+ if(zone==null) {
+ throw new ConversionException("Unsuported zone code " + address.getZone());
+ }
+
+ customerModel.getDelivery().setZone( zone );
+ customerModel.getDelivery().setState(null);
+
+ } else {
+ customerModel.getDelivery().setZone(null);
+ }
+
+ }
+
+
+ // same update address with customer model
+ this.customerService.saveOrUpdate( customerModel );
+
+ }
+
+ @Override
+ public ReadableCustomer getCustomerById(final Long id, final MerchantStore merchantStore, final Language language) throws Exception {
+ Customer customerModel = customerService.getById(id);
+ if(customerModel==null) {
+ return null;
+ }
+
+ ReadableCustomer readableCustomer = new ReadableCustomer();
+
+ ReadableCustomerPopulator customerPopulator = new ReadableCustomerPopulator();
+ customerPopulator.populate(customerModel,readableCustomer, merchantStore, language);
+
+ return readableCustomer;
+ }
+
+
+ @Override
+ public Customer populateCustomerModel(Customer customerModel,
+ PersistableCustomer customer, MerchantStore merchantStore,
+ Language language) throws Exception {
+ LOG.info( "Starting to populate customer model from customer data" );
+ CustomerPopulator populator = new CustomerPopulator();
+ populator.setCountryService(countryService);
+ populator.setCustomerOptionService(customerOptionService);
+ populator.setCustomerOptionValueService(customerOptionValueService);
+ populator.setLanguageService(languageService);
+ populator.setLanguageService(languageService);
+ populator.setZoneService(zoneService);
+
+
+ customerModel= populator.populate( customer, customerModel, merchantStore, language );
+ //set groups
+ //if(!StringUtils.isBlank(customerModel.getPassword()) && !StringUtils.isBlank(customerModel.getNick())) {
+ // customerModel.setPassword(passwordEncoder.encodePassword(customer.getPassword(), null));
+ // setCustomerModelDefaultProperties(customerModel, merchantStore);
+ //}
+
+ LOG.info( "About to persist customer to database." );
+ customerService.saveOrUpdate( customerModel );
+ return customerModel;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/LandingController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/LandingController.java
new file mode 100755
index 0000000..d049b0a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/LandingController.java
@@ -0,0 +1,156 @@
+package com.salesmanager.web.shop.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationship;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationshipType;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.relationship.ProductRelationshipService;
+import com.salesmanager.core.business.content.model.Content;
+import com.salesmanager.core.business.content.model.ContentDescription;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.entity.shop.Breadcrumb;
+import com.salesmanager.web.entity.shop.BreadcrumbItem;
+import com.salesmanager.web.entity.shop.BreadcrumbItemType;
+import com.salesmanager.web.entity.shop.PageInformation;
+import com.salesmanager.web.populator.catalog.ReadableProductPopulator;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+public class LandingController {
+
+
+ @Autowired
+ private ContentService contentService;
+
+ @Autowired
+ private ProductRelationshipService productRelationshipService;
+
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private MerchantStoreService merchantService;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(LandingController.class);
+
+
+ @RequestMapping(value={Constants.SHOP_URI + "/home.html",Constants.SHOP_URI +"/", Constants.SHOP_URI}, method=RequestMethod.GET)
+ public String displayLanding(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+
+ Content content = contentService.getByCode("LANDING_PAGE", store, language);
+
+ /** Rebuild breadcrumb **/
+ BreadcrumbItem item = new BreadcrumbItem();
+ item.setItemType(BreadcrumbItemType.HOME);
+ item.setLabel(messages.getMessage(Constants.HOME_MENU_KEY, locale));
+ item.setUrl(Constants.HOME_URL);
+
+
+ Breadcrumb breadCrumb = new Breadcrumb();
+ breadCrumb.setLanguage(language);
+
+ List<BreadcrumbItem> items = new ArrayList<BreadcrumbItem>();
+ items.add(item);
+
+ breadCrumb.setBreadCrumbs(items);
+ request.getSession().setAttribute(Constants.BREADCRUMB, breadCrumb);
+ request.setAttribute(Constants.BREADCRUMB, breadCrumb);
+ /** **/
+
+ if(content!=null) {
+
+ ContentDescription description = content.getDescription();
+
+
+ model.addAttribute("page",description);
+
+
+ PageInformation pageInformation = new PageInformation();
+ pageInformation.setPageTitle(description.getName());
+ pageInformation.setPageDescription(description.getMetatagDescription());
+ pageInformation.setPageKeywords(description.getMetatagKeywords());
+
+ request.setAttribute(Constants.REQUEST_PAGE_INFORMATION, pageInformation);
+
+ }
+
+ ReadableProductPopulator populator = new ReadableProductPopulator();
+ populator.setPricingService(pricingService);
+
+
+ //featured items
+ List<ProductRelationship> relationships = productRelationshipService.getByType(store, ProductRelationshipType.FEATURED_ITEM, language);
+ List<ReadableProduct> featuredItems = new ArrayList<ReadableProduct>();
+ for(ProductRelationship relationship : relationships) {
+
+ Product product = relationship.getRelatedProduct();
+ ReadableProduct proxyProduct = populator.populate(product, new ReadableProduct(), store, language);
+
+ featuredItems.add(proxyProduct);
+ }
+
+
+ model.addAttribute("featuredItems", featuredItems);
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append("landing.").append(store.getStoreTemplate());
+
+ return template.toString();
+ }
+
+ @RequestMapping( value=Constants.SHOP_URI + "/{store}", method=RequestMethod.GET)
+ public String displayStoreLanding(@PathVariable final String store, HttpServletRequest request, HttpServletResponse response) {
+
+ try {
+
+ request.getSession().invalidate();
+ request.getSession().removeAttribute(Constants.MERCHANT_STORE);
+
+ MerchantStore merchantStore = merchantService.getByCode(store);
+ if(merchantStore!=null) {
+ request.getSession().setAttribute(Constants.MERCHANT_STORE, merchantStore);
+ } else {
+ LOGGER.error("MerchantStore does not exist for store code " + store);
+ }
+
+ } catch(Exception e) {
+ LOGGER.error("Error occured while getting store code " + store, e);
+ }
+
+
+
+ return "redirect:" + Constants.SHOP_URI;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/facade/OrderFacade.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/facade/OrderFacade.java
new file mode 100644
index 0000000..7785b9b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/facade/OrderFacade.java
@@ -0,0 +1,110 @@
+package com.salesmanager.web.shop.controller.order.facade;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.springframework.validation.BindingResult;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.OrderTotalSummary;
+import com.salesmanager.core.business.payments.model.Transaction;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shipping.model.ShippingQuote;
+import com.salesmanager.core.business.shipping.model.ShippingSummary;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCart;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.order.PersistableOrder;
+import com.salesmanager.web.entity.order.ReadableOrder;
+import com.salesmanager.web.entity.order.ReadableOrderList;
+import com.salesmanager.web.entity.order.ShopOrder;
+
+
+public interface OrderFacade {
+
+ ShopOrder initializeOrder(MerchantStore store, Customer customer, ShoppingCart shoppingCart, Language language) throws Exception;
+ void refreshOrder(ShopOrder order, MerchantStore store, Customer customer, ShoppingCart shoppingCart, Language language) throws Exception;
+ /** used in website **/
+ OrderTotalSummary calculateOrderTotal(MerchantStore store, ShopOrder order, Language language) throws Exception;
+ /** used in the API **/
+ OrderTotalSummary calculateOrderTotal(MerchantStore store, PersistableOrder order, Language language) throws Exception;
+
+ /** process a valid order **/
+ Order processOrder(ShopOrder order, Customer customer, MerchantStore store, Language language) throws ServiceException;
+ /** process a valid order against an initial transaction **/
+ Order processOrder(ShopOrder order, Customer customer, Transaction transaction, MerchantStore store, Language language) throws ServiceException;
+
+ /** creates a working copy of customer when the user is anonymous **/
+ Customer initEmptyCustomer(MerchantStore store);
+ List<Country> getShipToCountry(MerchantStore store, Language language)
+ throws Exception;
+
+ /**
+ * Get a ShippingQuote based on merchant configuration and items to be shipped
+ * @param cart
+ * @param order
+ * @param store
+ * @param language
+ * @return
+ * @throws Exception
+ */
+ ShippingQuote getShippingQuote(PersistableCustomer customer, ShoppingCart cart, ShopOrder order,
+ MerchantStore store, Language language) throws Exception;
+
+ ShippingQuote getShippingQuote(Customer customer, ShoppingCart cart, PersistableOrder order,
+ MerchantStore store, Language language) throws Exception;
+
+ /**
+ * Creates a ShippingSummary object for OrderTotal calculation based on a ShippingQuote
+ * @param quote
+ * @param store
+ * @param language
+ * @return
+ */
+ ShippingSummary getShippingSummary(ShippingQuote quote, MerchantStore store, Language language);
+ void validateOrder(ShopOrder order, BindingResult bindingResult,
+ Map<String, String> messagesResult, MerchantStore store,
+ Locale locale) throws ServiceException;
+
+ /**
+ * Creates a ReadableOrder object from an orderId
+ * @param orderId
+ * @param store
+ * @param language
+ * @return
+ * @throws Exception
+ */
+ ReadableOrder getReadableOrder(Long orderId, MerchantStore store, Language language) throws Exception;
+
+
+ /**
+ * <p>Method used to fetch all orders associated with customer customer.
+ * It will used current customer ID to fetch all orders which has been
+ * placed by customer for current store.</p>
+ *
+ * @param customer currently logged in customer
+ * @param store store associated with current customer
+ * @return ReadableOrderList
+ * @throws Exception
+ */
+
+ ReadableOrderList getReadableOrderList(MerchantStore store, Customer customer, int start,
+ int maxCount, Language language) throws Exception;
+
+
+ /**
+ * Get orders for a given store
+ * @param store
+ * @param start
+ * @param maxCount
+ * @param language
+ * @return
+ * @throws Exception
+ */
+ ReadableOrderList getReadableOrderList(MerchantStore store, int start,
+ int maxCount, Language language) throws Exception;
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/facade/OrderFacadeImpl.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/facade/OrderFacadeImpl.java
new file mode 100644
index 0000000..2bb36e5
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/facade/OrderFacadeImpl.java
@@ -0,0 +1,945 @@
+package com.salesmanager.web.shop.controller.order.facade;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.ObjectError;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.catalog.product.service.file.DigitalProductService;
+import com.salesmanager.core.business.common.model.Billing;
+import com.salesmanager.core.business.common.model.Delivery;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionValueService;
+import com.salesmanager.core.business.generic.exception.ConversionException;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.OrderCriteria;
+import com.salesmanager.core.business.order.model.OrderList;
+import com.salesmanager.core.business.order.model.OrderSummary;
+import com.salesmanager.core.business.order.model.OrderTotalSummary;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProduct;
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatus;
+import com.salesmanager.core.business.order.model.payment.CreditCard;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.payments.model.CreditCardPayment;
+import com.salesmanager.core.business.payments.model.CreditCardType;
+import com.salesmanager.core.business.payments.model.Payment;
+import com.salesmanager.core.business.payments.model.PaymentType;
+import com.salesmanager.core.business.payments.model.Transaction;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.shipping.model.ShippingProduct;
+import com.salesmanager.core.business.shipping.model.ShippingQuote;
+import com.salesmanager.core.business.shipping.model.ShippingSummary;
+import com.salesmanager.core.business.shipping.service.ShippingService;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCart;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.core.utils.CreditCardUtils;
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+import com.salesmanager.web.entity.order.OrderEntity;
+import com.salesmanager.web.entity.order.OrderTotal;
+import com.salesmanager.web.entity.order.PersistableOrder;
+import com.salesmanager.web.entity.order.PersistableOrderProduct;
+import com.salesmanager.web.entity.order.ReadableOrder;
+import com.salesmanager.web.entity.order.ReadableOrderList;
+import com.salesmanager.web.entity.order.ReadableOrderProduct;
+import com.salesmanager.web.entity.order.ShopOrder;
+import com.salesmanager.web.populator.customer.CustomerPopulator;
+import com.salesmanager.web.populator.customer.PersistableCustomerPopulator;
+import com.salesmanager.web.populator.order.OrderProductPopulator;
+import com.salesmanager.web.populator.order.ReadableOrderPopulator;
+import com.salesmanager.web.populator.order.ReadableOrderProductPopulator;
+import com.salesmanager.web.populator.order.ShoppingCartItemPopulator;
+import com.salesmanager.web.shop.controller.customer.facade.CustomerFacade;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+
+import edu.emory.mathcs.backport.java.util.Collections;
+
+@Service("orderFacade")
+public class OrderFacadeImpl implements OrderFacade {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(OrderFacadeImpl.class);
+
+
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private ProductService productService;
+ @Autowired
+ private ProductAttributeService productAttributeService;
+ @Autowired
+ private ShoppingCartService shoppingCartService;
+ @Autowired
+ private DigitalProductService digitalProductService;
+ @Autowired
+ private CustomerService customerService;
+ @Autowired
+ private CountryService countryService;
+ @Autowired
+ private ZoneService zoneService;
+ @Autowired
+ private CustomerOptionService customerOptionService;
+ @Autowired
+ private CustomerOptionValueService customerOptionValueService;
+ @Autowired
+ private LanguageService languageService;
+ @Autowired
+ private ShippingService shippingService;
+ @Autowired
+ private CustomerFacade customerFacade;
+ @Autowired
+ private PricingService pricingService;
+
+
+ @Autowired
+ private LabelUtils messages;
+
+
+ @Override
+ public ShopOrder initializeOrder(MerchantStore store, Customer customer,
+ ShoppingCart shoppingCart, Language language) throws Exception {
+
+ //assert not null shopping cart items
+
+ ShopOrder order = new ShopOrder();
+
+ OrderStatus orderStatus = OrderStatus.ORDERED;
+ order.setOrderStatus(orderStatus);
+
+ if(customer==null) {
+ customer = this.initEmptyCustomer(store);
+ }
+
+ PersistableCustomer persistableCustomer = persistableCustomer(customer, store, language);
+ order.setCustomer(persistableCustomer);
+
+ //keep list of shopping cart items for core price calculation
+ List<ShoppingCartItem> items = new ArrayList<ShoppingCartItem>(shoppingCart.getLineItems());
+ order.setShoppingCartItems(items);
+
+ return order;
+ }
+
+
+
+ @Override
+ public OrderTotalSummary calculateOrderTotal(MerchantStore store,
+ ShopOrder order, Language language) throws Exception {
+
+
+ Customer customer = customerFacade.getCustomerModel(order.getCustomer(), store, language);
+ OrderTotalSummary summary = this.calculateOrderTotal(store, customer, order, language);
+ this.setOrderTotals(order, summary);
+ return summary;
+ }
+
+ @Override
+ public OrderTotalSummary calculateOrderTotal(MerchantStore store,
+ PersistableOrder order, Language language) throws Exception {
+
+ List<PersistableOrderProduct> orderProducts = order.getOrderProductItems();
+
+ ShoppingCartItemPopulator populator = new ShoppingCartItemPopulator();
+ populator.setProductAttributeService(productAttributeService);
+ populator.setProductService(productService);
+ populator.setShoppingCartService(shoppingCartService);
+
+ List<ShoppingCartItem> items = new ArrayList<ShoppingCartItem>();
+ for(PersistableOrderProduct orderProduct : orderProducts) {
+ ShoppingCartItem item = populator.populate(orderProduct, new ShoppingCartItem(), store, language);
+ items.add(item);
+ }
+
+
+ Customer customer = customer(order.getCustomer(), store, language);
+
+ OrderTotalSummary summary = this.calculateOrderTotal(store, customer, order, language);
+
+ return summary;
+ }
+
+ private OrderTotalSummary calculateOrderTotal(MerchantStore store, Customer customer, PersistableOrder order, Language language) throws Exception {
+
+ OrderTotalSummary orderTotalSummary = null;
+
+ OrderSummary summary = new OrderSummary();
+
+
+ if(order instanceof ShopOrder) {
+ ShopOrder o = (ShopOrder)order;
+ summary.setProducts(o.getShoppingCartItems());
+
+ if(o.getShippingSummary()!=null) {
+ summary.setShippingSummary(o.getShippingSummary());
+ }
+ orderTotalSummary = orderService.caculateOrderTotal(summary, customer, store, language);
+ } else {
+ //need Set of ShoppingCartItem
+ //PersistableOrder not implemented
+ throw new Exception("calculateOrderTotal not yet implemented for PersistableOrder");
+ }
+
+ return orderTotalSummary;
+
+ }
+
+
+ private PersistableCustomer persistableCustomer(Customer customer, MerchantStore store, Language language) throws Exception {
+
+ PersistableCustomerPopulator customerPopulator = new PersistableCustomerPopulator();
+ PersistableCustomer persistableCustomer = customerPopulator.populate(customer, new PersistableCustomer(), store, language);
+ return persistableCustomer;
+
+ }
+
+ private Customer customer(PersistableCustomer customer, MerchantStore store, Language language) throws Exception {
+ CustomerPopulator customerPopulator = new CustomerPopulator();
+ Customer cust = customerPopulator.populate(customer, new Customer(), store, language);
+ return cust;
+
+ }
+
+ private void setOrderTotals(OrderEntity order, OrderTotalSummary summary) {
+
+ List<OrderTotal> totals = new ArrayList<OrderTotal>();
+ List<com.salesmanager.core.business.order.model.OrderTotal> orderTotals = summary.getTotals();
+ for(com.salesmanager.core.business.order.model.OrderTotal t : orderTotals) {
+ OrderTotal total = new OrderTotal();
+ total.setCode(t.getOrderTotalCode());
+ total.setTitle(t.getTitle());
+ total.setValue(t.getValue());
+ totals.add(total);
+ }
+
+ order.setTotals(totals);
+
+ }
+
+
+ /**
+ * Submitted object must be valided prior to the invocation of this method
+ */
+ @Override
+ public Order processOrder(ShopOrder order, Customer customer, MerchantStore store,
+ Language language) throws ServiceException {
+
+ return this.processOrderModel(order, customer, null, store, language);
+
+ }
+
+ @Override
+ public Order processOrder(ShopOrder order, Customer customer, Transaction transaction, MerchantStore store,
+ Language language) throws ServiceException {
+
+ return this.processOrderModel(order, customer, transaction, store, language);
+
+ }
+
+ private Order processOrderModel(ShopOrder order, Customer customer, Transaction transaction, MerchantStore store,
+ Language language) throws ServiceException {
+
+ try {
+
+ if(order.isShipToBillingAdress()) {//customer shipping is billing
+ PersistableCustomer orderCustomer = order.getCustomer();
+ Address billing = orderCustomer.getBilling();
+ orderCustomer.setDelivery(billing);
+ }
+
+
+
+
+ Order modelOrder = new Order();
+ modelOrder.setDatePurchased(new Date());
+ modelOrder.setBilling(customer.getBilling());
+ modelOrder.setDelivery(customer.getDelivery());
+ modelOrder.setPaymentModuleCode(order.getPaymentModule());
+ modelOrder.setPaymentType(PaymentType.valueOf(order.getPaymentMethodType()));
+ modelOrder.setShippingModuleCode(order.getShippingModule());
+ modelOrder.setLocale(LocaleUtils.getLocale(store));//set the store locale based on the country for order $ formatting
+
+ List<ShoppingCartItem> shoppingCartItems = order.getShoppingCartItems();
+ Set<OrderProduct> orderProducts = new LinkedHashSet<OrderProduct>();
+
+ OrderProductPopulator orderProductPopulator = new OrderProductPopulator();
+ orderProductPopulator.setDigitalProductService(digitalProductService);
+ orderProductPopulator.setProductAttributeService(productAttributeService);
+ orderProductPopulator.setProductService(productService);
+
+ for(ShoppingCartItem item : shoppingCartItems) {
+ OrderProduct orderProduct = new OrderProduct();
+ orderProduct = orderProductPopulator.populate(item, orderProduct , store, language);
+ orderProduct.setOrder(modelOrder);
+ orderProducts.add(orderProduct);
+ }
+
+ modelOrder.setOrderProducts(orderProducts);
+
+ OrderTotalSummary summary = order.getOrderTotalSummary();
+ List<com.salesmanager.core.business.order.model.OrderTotal> totals = summary.getTotals();
+
+ //re-order totals
+ Collections.sort(
+ totals,
+ new Comparator<com.salesmanager.core.business.order.model.OrderTotal>() {
+ public int compare(com.salesmanager.core.business.order.model.OrderTotal x, com.salesmanager.core.business.order.model.OrderTotal y) {
+ if(x.getSortOrder()==y.getSortOrder())
+ return 0;
+ return x.getSortOrder() < y.getSortOrder() ? -1 : 1;
+ }
+
+ });
+
+ Set<com.salesmanager.core.business.order.model.OrderTotal> modelTotals = new LinkedHashSet<com.salesmanager.core.business.order.model.OrderTotal>();
+ for(com.salesmanager.core.business.order.model.OrderTotal total : totals) {
+ total.setOrder(modelOrder);
+ modelTotals.add(total);
+ }
+
+ modelOrder.setOrderTotal(modelTotals);
+ modelOrder.setTotal(order.getOrderTotalSummary().getTotal());
+
+ //order misc objects
+ modelOrder.setCurrency(store.getCurrency());
+ modelOrder.setMerchant(store);
+
+
+
+ //customer object
+ orderCustomer(customer, modelOrder, language);
+
+ //populate shipping information
+ if(!StringUtils.isBlank(order.getShippingModule())) {
+ modelOrder.setShippingModuleCode(order.getShippingModule());
+ }
+
+ String paymentType = order.getPaymentMethodType();
+ Payment payment = new Payment();
+ payment.setPaymentType(PaymentType.valueOf(paymentType));
+ if(PaymentType.CREDITCARD.name().equals(paymentType)) {
+
+
+
+ payment = new CreditCardPayment();
+ ((CreditCardPayment)payment).setCardOwner(order.getPayment().get("creditcard_card_holder"));
+ ((CreditCardPayment)payment).setCredidCardValidationNumber(order.getPayment().get("creditcard_card_cvv"));
+ ((CreditCardPayment)payment).setCreditCardNumber(order.getPayment().get("creditcard_card_number"));
+ ((CreditCardPayment)payment).setExpirationMonth(order.getPayment().get("creditcard_card_expirationmonth"));
+ ((CreditCardPayment)payment).setExpirationYear(order.getPayment().get("creditcard_card_expirationyear"));
+
+ CreditCardType creditCardType =null;
+ String cardType = order.getPayment().get("creditcard_card_type");
+
+ if(cardType.equalsIgnoreCase(CreditCardType.AMEX.name())) {
+ creditCardType = CreditCardType.AMEX;
+ } else if(cardType.equalsIgnoreCase(CreditCardType.VISA.name())) {
+ creditCardType = CreditCardType.VISA;
+ } else if(cardType.equalsIgnoreCase(CreditCardType.MASTERCARD.name())) {
+ creditCardType = CreditCardType.MASTERCARD;
+ } else if(cardType.equalsIgnoreCase(CreditCardType.DINERS.name())) {
+ creditCardType = CreditCardType.DINERS;
+ } else if(cardType.equalsIgnoreCase(CreditCardType.DISCOVERY.name())) {
+ creditCardType = CreditCardType.DISCOVERY;
+ }
+
+
+
+
+ ((CreditCardPayment)payment).setCreditCard(creditCardType);
+
+ CreditCard cc = new CreditCard();
+ cc.setCardType(creditCardType);
+ cc.setCcCvv(((CreditCardPayment)payment).getCredidCardValidationNumber());
+ cc.setCcOwner(((CreditCardPayment)payment).getCardOwner());
+ cc.setCcExpires(((CreditCardPayment)payment).getExpirationMonth() + "-" + ((CreditCardPayment)payment).getExpirationYear());
+
+ //hash credit card number
+ String maskedNumber = CreditCardUtils.maskCardNumber(order.getPayment().get("creditcard_card_number"));
+ cc.setCcNumber(maskedNumber);
+ modelOrder.setCreditCard(cc);
+
+ }
+
+ if(PaymentType.PAYPAL.name().equals(paymentType)) {
+
+ //check for previous transaction
+ if(transaction==null) {
+ throw new ServiceException("payment.error");
+ }
+
+ payment = new com.salesmanager.core.business.payments.model.PaypalPayment();
+
+ ((com.salesmanager.core.business.payments.model.PaypalPayment)payment).setPayerId(transaction.getTransactionDetails().get("PAYERID"));
+ ((com.salesmanager.core.business.payments.model.PaypalPayment)payment).setPaymentToken(transaction.getTransactionDetails().get("TOKEN"));
+
+
+ }
+
+
+ modelOrder.setPaymentModuleCode(order.getPaymentModule());
+ payment.setModuleName(order.getPaymentModule());
+
+ if(transaction!=null) {
+ orderService.processOrder(modelOrder, customer, order.getShoppingCartItems(), summary, payment, store);
+ } else {
+ orderService.processOrder(modelOrder, customer, order.getShoppingCartItems(), summary, payment, transaction, store);
+ }
+
+
+
+ return modelOrder;
+
+ } catch(ServiceException se) {//may be invalid credit card
+ throw se;
+ } catch(Exception e) {
+ throw new ServiceException(e);
+ }
+
+ }
+
+ private void orderCustomer(Customer customer, Order order, Language language) throws Exception {
+
+ //populate customer
+ order.setBilling(customer.getBilling());
+ order.setDelivery(customer.getDelivery());
+ order.setCustomerEmailAddress(customer.getEmailAddress());
+ order.setCustomerId(customer.getId());
+
+
+
+ }
+
+
+
+ @Override
+ public Customer initEmptyCustomer(MerchantStore store) {
+
+ Customer customer = new Customer();
+ Billing billing = new Billing();
+ billing.setCountry(store.getCountry());
+ billing.setZone(store.getZone());
+ billing.setState(store.getStorestateprovince());
+ billing.setPostalCode(store.getStorepostalcode());
+ customer.setBilling(billing);
+
+ Delivery delivery = new Delivery();
+ delivery.setCountry(store.getCountry());
+ delivery.setZone(store.getZone());
+ delivery.setState(store.getStorestateprovince());
+ delivery.setPostalCode(store.getStorepostalcode());
+ customer.setDelivery(delivery);
+
+ return customer;
+ }
+
+
+
+ @Override
+ public void refreshOrder(ShopOrder order, MerchantStore store,
+ Customer customer, ShoppingCart shoppingCart, Language language)
+ throws Exception {
+ if(customer==null && order.getCustomer()!=null) {
+ order.getCustomer().setId(0L);//reset customer id
+ }
+
+ if(customer!=null) {
+ PersistableCustomer persistableCustomer = persistableCustomer(customer, store, language);
+ order.setCustomer(persistableCustomer);
+ }
+
+ List<ShoppingCartItem> items = new ArrayList<ShoppingCartItem>(shoppingCart.getLineItems());
+ order.setShoppingCartItems(items);
+
+ return;
+ }
+
+ @Override
+ public ShippingQuote getShippingQuote(PersistableCustomer persistableCustomer, ShoppingCart cart, ShopOrder order, MerchantStore store, Language language) throws Exception {
+
+
+ //create shipping products
+ List<ShippingProduct> shippingProducts = shoppingCartService.createShippingProduct(cart);
+
+ if(CollectionUtils.isEmpty(shippingProducts)) {
+ return null;//products are virtual
+ }
+
+ Customer customer = customerFacade.getCustomerModel(persistableCustomer, store, language);
+
+
+ Delivery delivery = new Delivery();
+
+ //adjust shipping and billing
+ if(order.isShipToBillingAdress()) {
+ Billing billing = customer.getBilling();
+ delivery.setAddress(billing.getAddress());
+ delivery.setCompany(billing.getCompany());
+ delivery.setPostalCode(billing.getPostalCode());
+ delivery.setState(billing.getState());
+ delivery.setCountry(billing.getCountry());
+ delivery.setZone(billing.getZone());
+ } else {
+ delivery = customer.getDelivery();
+ }
+
+
+
+ ShippingQuote quote = shippingService.getShippingQuote(store, delivery, shippingProducts, language);
+
+ return quote;
+
+ }
+
+ @Override
+ public List<Country> getShipToCountry(MerchantStore store, Language language) throws Exception {
+
+ List<Country> shippingCountriesList = shippingService.getShipToCountryList(store, language);
+ return shippingCountriesList;
+
+ }
+
+
+
+
+
+ @Override
+ public ShippingSummary getShippingSummary(ShippingQuote quote,
+ MerchantStore store, Language language) {
+
+ if(quote.getSelectedShippingOption()!=null) {
+
+ ShippingSummary summary = new ShippingSummary();
+ summary.setFreeShipping(quote.isFreeShipping());
+ summary.setTaxOnShipping(quote.isApplyTaxOnShipping());
+ summary.setHandling(quote.getHandlingFees());
+ summary.setShipping(quote.getSelectedShippingOption().getOptionPrice());
+ summary.setShippingOption(quote.getSelectedShippingOption().getOptionName());
+ summary.setShippingModule(quote.getShippingModuleCode());
+
+ return summary;
+
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public void validateOrder(ShopOrder order, BindingResult bindingResult, Map<String,String> messagesResult, MerchantStore store, Locale locale) throws ServiceException {
+
+
+ Validate.notNull(messagesResult,"messagesResult should not be null");
+
+
+ try {
+
+
+ //Language language = (Language)request.getAttribute("LANGUAGE");
+
+ //validate order shipping and billing
+ if(StringUtils.isBlank(order.getCustomer().getBilling().getFirstName())) {
+ FieldError error = new FieldError("customer.billing.firstName","customer.billing.firstName",messages.getMessage("NotEmpty.customer.firstName", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.billing.firstName",messages.getMessage("NotEmpty.customer.firstName", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getBilling().getLastName())) {
+ FieldError error = new FieldError("customer.billing.lastName","customer.billing.lastName",messages.getMessage("NotEmpty.customer.lastName", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.billing.lastName",messages.getMessage("NotEmpty.customer.lastName", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getEmailAddress())) {
+ FieldError error = new FieldError("customer.emailAddress","customer.emailAddress",messages.getMessage("NotEmpty.customer.emailAddress", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.emailAddress",messages.getMessage("NotEmpty.customer.emailAddress", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getBilling().getAddress())) {
+ FieldError error = new FieldError("customer.billing.address","customer.billing.address",messages.getMessage("NotEmpty.customer.billing.address", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.billing.address",messages.getMessage("NotEmpty.customer.billing.address", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getBilling().getCity())) {
+ FieldError error = new FieldError("customer.billing.city","customer.billing.city",messages.getMessage("NotEmpty.customer.billing.city", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.billing.city",messages.getMessage("NotEmpty.customer.billing.city", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getBilling().getCountry())) {
+ FieldError error = new FieldError("customer.billing.country","customer.billing.country",messages.getMessage("NotEmpty.customer.billing.country", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.billing.country",messages.getMessage("NotEmpty.customer.billing.country", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getBilling().getZone()) && StringUtils.isBlank(order.getCustomer().getBilling().getStateProvince())) {
+ FieldError error = new FieldError("customer.billing.stateProvince","customer.billing.stateProvince",messages.getMessage("NotEmpty.customer.billing.stateProvince", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.billing.stateProvince",messages.getMessage("NotEmpty.customer.billing.stateProvince", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getBilling().getPhone())) {
+ FieldError error = new FieldError("customer.billing.phone","customer.billing.phone",messages.getMessage("NotEmpty.customer.billing.phone", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.billing.phone",messages.getMessage("NotEmpty.customer.billing.phone", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getBilling().getPostalCode())) {
+ FieldError error = new FieldError("customer.billing.postalCode","customer.billing.postalCode",messages.getMessage("NotEmpty.customer.billing.postalCode", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.billing.postalCode",messages.getMessage("NotEmpty.customer.billing.postalCode", locale));
+ }
+
+ if(!order.isShipToBillingAdress()) {
+
+ if(StringUtils.isBlank(order.getCustomer().getDelivery().getFirstName())) {
+ FieldError error = new FieldError("customer.delivery.firstName","customer.delivery.firstName",messages.getMessage("NotEmpty.customer.shipping.firstName", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.delivery.firstName",messages.getMessage("NotEmpty.customer.shipping.firstName", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getDelivery().getLastName())) {
+ FieldError error = new FieldError("customer.delivery.lastName","customer.delivery.lastName",messages.getMessage("NotEmpty.customer.shipping.lastName", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.delivery.lastName",messages.getMessage("NotEmpty.customer.shipping.lastName", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getDelivery().getAddress())) {
+ FieldError error = new FieldError("customer.delivery.address","customer.delivery.address",messages.getMessage("NotEmpty.customer.shipping.address", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.delivery.address",messages.getMessage("NotEmpty.customer.shipping.address", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getDelivery().getCity())) {
+ FieldError error = new FieldError("customer.delivery.city","customer.delivery.city",messages.getMessage("NotEmpty.customer.shipping.city", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.delivery.city",messages.getMessage("NotEmpty.customer.shipping.city", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getDelivery().getCountry())) {
+ FieldError error = new FieldError("customer.delivery.country","customer.delivery.country",messages.getMessage("NotEmpty.customer.shipping.country", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.delivery.country",messages.getMessage("NotEmpty.customer.shipping.country", locale));
+ }
+
+ if(StringUtils.isBlank(order.getCustomer().getDelivery().getZone()) && StringUtils.isBlank(order.getCustomer().getDelivery().getStateProvince())) {
+ FieldError error = new FieldError("customer.delivery.stateProvince","customer.delivery.stateProvince",messages.getMessage("NotEmpty.customer.shipping.stateProvince", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.delivery.stateProvince",messages.getMessage("NotEmpty.customer.shipping.stateProvince", locale));
+ }
+
+
+ if(StringUtils.isBlank(order.getCustomer().getDelivery().getPostalCode())) {
+ FieldError error = new FieldError("customer.delivery.postalCode","customer.delivery.postalCode",messages.getMessage("NotEmpty.customer.shipping.postalCode", locale));
+ bindingResult.addError(error);
+ messagesResult.put("customer.delivery.postalCode",messages.getMessage("NotEmpty.customer.shipping.postalCode", locale));
+ }
+
+ }
+
+ if ( bindingResult.hasErrors() )
+ {
+ return;
+
+ }
+
+ String paymentType = order.getPaymentMethodType();
+
+ if(!shoppingCartService.isFreeShoppingCart(order.getShoppingCartItems()) && paymentType==null) {
+
+ }
+
+ //validate payment
+ if(paymentType==null) {
+ ServiceException serviceException = new ServiceException(ServiceException.EXCEPTION_VALIDATION,"payment.required");
+ throw serviceException;
+ }
+
+ //validate shipping
+ if(shippingService.requiresShipping(order.getShoppingCartItems(), store) && order.getSelectedShippingOption()==null) {
+ ServiceException serviceException = new ServiceException(ServiceException.EXCEPTION_VALIDATION,"shipping.required");
+ throw serviceException;
+ }
+
+ //pre-validate credit card
+ if(PaymentType.CREDITCARD.name().equals(paymentType)) {
+ String cco = order.getPayment().get("creditcard_card_holder");
+ String cvv = order.getPayment().get("creditcard_card_cvv");
+ String ccn = order.getPayment().get("creditcard_card_number");
+ String ccm = order.getPayment().get("creditcard_card_expirationmonth");
+ String ccd = order.getPayment().get("creditcard_card_expirationyear");
+
+ if(StringUtils.isBlank(cco) || StringUtils.isBlank(cvv) || StringUtils.isBlank(ccn) ||
+ StringUtils.isBlank(ccm) || StringUtils.isBlank(ccd)) {
+ ObjectError error = new ObjectError("creditcard_card_holder",messages.getMessage("NotEmpty.customer.shipping.stateProvince", locale));
+ bindingResult.addError(error);
+ messagesResult.put("creditcard_card_holder",messages.getMessage("NotEmpty.customer.shipping.stateProvince", locale));
+ return;
+ }
+
+ CreditCardType creditCardType =null;
+ String cardType = order.getPayment().get("creditcard_card_type");
+
+ if(cardType.equalsIgnoreCase(CreditCardType.AMEX.name())) {
+ creditCardType = CreditCardType.AMEX;
+ } else if(cardType.equalsIgnoreCase(CreditCardType.VISA.name())) {
+ creditCardType = CreditCardType.VISA;
+ } else if(cardType.equalsIgnoreCase(CreditCardType.MASTERCARD.name())) {
+ creditCardType = CreditCardType.MASTERCARD;
+ } else if(cardType.equalsIgnoreCase(CreditCardType.DINERS.name())) {
+ creditCardType = CreditCardType.DINERS;
+ } else if(cardType.equalsIgnoreCase(CreditCardType.DISCOVERY.name())) {
+ creditCardType = CreditCardType.DISCOVERY;
+ }
+
+ if(creditCardType==null) {
+ ServiceException serviceException = new ServiceException(ServiceException.EXCEPTION_VALIDATION,"cc.type");
+ throw serviceException;
+ }
+
+ }
+
+
+
+
+
+
+
+ } catch(ServiceException se) {
+ LOGGER.error("Error while commiting order",se);
+ throw se;
+ }
+
+}
+
+
+
+ @Override
+ public ReadableOrderList getReadableOrderList(MerchantStore store,
+ Customer customer, int start, int maxCount, Language language) throws Exception {
+
+ OrderCriteria criteria = new OrderCriteria();
+ criteria.setStartIndex(start);
+ criteria.setMaxCount(maxCount);
+ criteria.setCustomerId(customer.getId());
+
+ return this.getReadableOrderList(criteria, store, language);
+
+ }
+
+
+
+ @Override
+ public ShippingQuote getShippingQuote(Customer customer, ShoppingCart cart,
+ PersistableOrder order, MerchantStore store, Language language)
+ throws Exception {
+ //create shipping products
+ List<ShippingProduct> shippingProducts = shoppingCartService.createShippingProduct(cart);
+
+ if(CollectionUtils.isEmpty(shippingProducts)) {
+ return null;//products are virtual
+ }
+
+
+
+ Delivery delivery = new Delivery();
+
+ //adjust shipping and billing
+ if(order.isShipToBillingAdress()) {
+ Billing billing = customer.getBilling();
+ delivery.setAddress(billing.getAddress());
+ delivery.setCompany(billing.getCompany());
+ delivery.setPostalCode(billing.getPostalCode());
+ delivery.setState(billing.getState());
+ delivery.setCountry(billing.getCountry());
+ delivery.setZone(billing.getZone());
+ } else {
+ delivery = customer.getDelivery();
+ }
+
+
+
+ ShippingQuote quote = shippingService.getShippingQuote(store, delivery, shippingProducts, language);
+
+ return quote;
+ }
+
+
+
+ private ReadableOrderList populateOrderList(final OrderList orderList,final MerchantStore store, final Language language){
+ List<Order> orders = orderList.getOrders();
+ ReadableOrderList returnList = new ReadableOrderList();
+ if(CollectionUtils.isEmpty( orders)){
+ LOGGER.info( "Order list if empty..Returning empty list" );
+ returnList.setTotal(0);
+ returnList.setMessage("No results for store code " + store);
+ return null;
+ }
+
+ ReadableOrderPopulator orderPopulator = new ReadableOrderPopulator();
+ Locale locale = LocaleUtils.getLocale(language);
+ orderPopulator.setLocale(locale);
+
+ List<ReadableOrder> readableOrders = new ArrayList<ReadableOrder>();
+ for (Order order : orders) {
+ ReadableOrder readableOrder = new ReadableOrder();
+ try
+ {
+ orderPopulator.populate(order,readableOrder,store,language);
+ setOrderProductList(order,locale,store,language,readableOrder);
+ }
+ catch ( ConversionException ex )
+ {
+ LOGGER.error( "Error while converting order to order data", ex );
+
+ }
+ readableOrders.add(readableOrder);
+
+ }
+
+ returnList.setTotal(orderList.getTotalCount());
+ returnList.setOrders( readableOrders );
+ return returnList;
+
+ }
+
+ private void setOrderProductList(final Order order, final Locale locale,final MerchantStore store, final Language language , final ReadableOrder readableOrder) throws ConversionException{
+ List<ReadableOrderProduct> orderProducts = new ArrayList<ReadableOrderProduct>();
+ for(OrderProduct p : order.getOrderProducts()) {
+ ReadableOrderProductPopulator orderProductPopulator = new ReadableOrderProductPopulator();
+ orderProductPopulator.setLocale(locale);
+ orderProductPopulator.setProductService(productService);
+ orderProductPopulator.setPricingService(pricingService);
+ ReadableOrderProduct orderProduct = new ReadableOrderProduct();
+ orderProductPopulator.populate(p, orderProduct, store, language);
+
+ //image
+
+ //attributes
+
+
+
+ orderProducts.add(orderProduct);
+ }
+
+ readableOrder.setProducts(orderProducts);
+ }
+
+
+ private ReadableOrderList getReadableOrderList(OrderCriteria criteria, MerchantStore store, Language language) throws Exception {
+
+ OrderList orderList = orderService.listByStore(store, criteria);
+
+ ReadableOrderPopulator orderPopulator = new ReadableOrderPopulator();
+ Locale locale = LocaleUtils.getLocale(language);
+ orderPopulator.setLocale(locale);
+
+ List<Order> orders = orderList.getOrders();
+ ReadableOrderList returnList = new ReadableOrderList();
+
+ if(CollectionUtils.isEmpty(orders)) {
+ returnList.setTotal(0);
+ returnList.setMessage("No results for store code " + store);
+ return null;
+ }
+
+ List<ReadableOrder> readableOrders = new ArrayList<ReadableOrder>();
+ for (Order order : orders) {
+ ReadableOrder readableOrder = new ReadableOrder();
+ orderPopulator.populate(order,readableOrder,store,language);
+ readableOrders.add(readableOrder);
+
+ }
+
+ returnList.setTotal(orderList.getTotalCount());
+ return this.populateOrderList(orderList, store, language);
+
+
+ }
+
+ @Override
+ public ReadableOrderList getReadableOrderList(MerchantStore store,
+ int start, int maxCount, Language language) throws Exception {
+
+ OrderCriteria criteria = new OrderCriteria();
+ criteria.setStartIndex(start);
+ criteria.setMaxCount(maxCount);
+
+ return this.getReadableOrderList(criteria, store, language);
+ }
+
+
+
+ @Override
+ public ReadableOrder getReadableOrder(Long orderId, MerchantStore store,
+ Language language) throws Exception {
+
+
+
+ Order modelOrder = orderService.getById(orderId);
+ if(modelOrder==null) {
+ throw new Exception("Order not found with id " + orderId);
+ }
+
+ ReadableOrder readableOrder = new ReadableOrder();
+
+ Long customerId = modelOrder.getCustomerId();
+ if(customerId != null) {
+ ReadableCustomer readableCustomer = customerFacade.getCustomerById(customerId, store, language);
+ if(readableCustomer==null) {
+ LOGGER.warn("Customer id " + customerId + " not found in order " + orderId);
+ } else {
+ readableOrder.setCustomer(readableCustomer);
+ }
+ }
+
+ ReadableOrderPopulator orderPopulator = new ReadableOrderPopulator();
+ orderPopulator.populate(modelOrder, readableOrder, store, language);
+
+ //order products
+ List<ReadableOrderProduct> orderProducts = new ArrayList<ReadableOrderProduct>();
+ for(OrderProduct p : modelOrder.getOrderProducts()) {
+ ReadableOrderProductPopulator orderProductPopulator = new ReadableOrderProductPopulator();
+ orderProductPopulator.setProductService(productService);
+ orderProductPopulator.setPricingService(pricingService);
+
+ ReadableOrderProduct orderProduct = new ReadableOrderProduct();
+ orderProductPopulator.populate(p, orderProduct, store, language);
+ orderProducts.add(orderProduct);
+ }
+
+ readableOrder.setProducts(orderProducts);
+
+ return readableOrder;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderConfirmationController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderConfirmationController.java
new file mode 100644
index 0000000..2659793
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderConfirmationController.java
@@ -0,0 +1,193 @@
+package com.salesmanager.web.shop.controller.order;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductDownload;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.order.service.orderproduct.OrderProductDownloadService;
+import com.salesmanager.core.business.payments.service.PaymentService;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.shipping.service.ShippingService;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.order.ReadableOrder;
+import com.salesmanager.web.entity.order.ReadableOrderProductDownload;
+import com.salesmanager.web.populator.order.ReadableOrderProductDownloadPopulator;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.controller.customer.facade.CustomerFacade;
+import com.salesmanager.web.shop.controller.order.facade.OrderFacade;
+import com.salesmanager.web.shop.controller.shoppingCart.facade.ShoppingCartFacade;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+@RequestMapping(Constants.SHOP_URI+"/order")
+public class ShoppingOrderConfirmationController extends AbstractController {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(ShoppingOrderConfirmationController.class);
+
+ @Autowired
+ private ShoppingCartFacade shoppingCartFacade;
+
+ @Autowired
+ private ShoppingCartService shoppingCartService;
+
+
+
+ @Autowired
+ private PaymentService paymentService;
+
+ @Autowired
+ private ShippingService shippingService;
+
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @Autowired
+ private OrderFacade orderFacade;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private CustomerFacade customerFacade;
+
+ @Autowired
+ private AuthenticationManager customerAuthenticationManager;
+
+ @Autowired
+ private OrderProductDownloadService orderProdctDownloadService;
+
+ /**
+ * Invoked once the payment is complete and order is fulfilled
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/confirmation.html")
+ public String displayConfirmation(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ Long orderId = super.getSessionAttribute(Constants.ORDER_ID, request);
+ if(orderId==null) {
+ return new StringBuilder().append("redirect:").append(Constants.SHOP_URI).toString();
+ }
+
+ //get the order
+ Order order = orderService.getById(orderId);
+ if(order == null) {
+ LOGGER.warn("Order id [" + orderId + "] does not exist");
+ throw new Exception("Order id [" + orderId + "] does not exist");
+ }
+
+ if(order.getMerchant().getId().intValue()!=store.getId().intValue()) {
+ LOGGER.warn("Store id [" + store.getId() + "] differs from order.store.id [" + order.getMerchant().getId() + "]");
+ return new StringBuilder().append("redirect:").append(Constants.SHOP_URI).toString();
+ }
+
+ if(super.getSessionAttribute(Constants.ORDER_ID_TOKEN, request)!=null) {
+ //set this unique token for performing unique operations in the confirmation
+ model.addAttribute("confirmation", "confirmation");
+ }
+
+ //remove unique token
+ super.removeAttribute(Constants.ORDER_ID_TOKEN, request);
+
+
+ String[] orderMessageParams = {store.getStorename(), String.valueOf(order.getId())};
+ String orderMessage = messages.getMessage("label.checkout.text", orderMessageParams, locale);
+ model.addAttribute("ordermessage", orderMessage);
+
+ String[] orderEmailParams = {order.getCustomerEmailAddress()};
+ String orderEmailMessage = messages.getMessage("label.checkout.email", orderEmailParams, locale);
+ model.addAttribute("orderemail", orderEmailMessage);
+
+ ReadableOrder readableOrder = orderFacade.getReadableOrder(orderId, store, language);
+
+
+
+ //resolve country and Zone for GA
+ String countryCode = readableOrder.getCustomer().getBilling().getCountry();
+ Map<String,Country> countriesMap = countryService.getCountriesMap(language);
+ Country billingCountry = countriesMap.get(countryCode);
+ if(billingCountry!=null) {
+ readableOrder.getCustomer().getBilling().setCountry(billingCountry.getName());
+ }
+
+ String zoneCode = readableOrder.getCustomer().getBilling().getZone();
+ Map<String,Zone> zonesMap = zoneService.getZones(language);
+ Zone billingZone = zonesMap.get(zoneCode);
+ if(billingZone!=null) {
+ readableOrder.getCustomer().getBilling().setZone(billingZone.getName());
+ }
+
+
+ model.addAttribute("order",readableOrder);
+
+ //check if any downloads exist for this order
+ List<OrderProductDownload> orderProductDownloads = orderProdctDownloadService.getByOrderId(order.getId());
+ if(CollectionUtils.isNotEmpty(orderProductDownloads)) {
+ ReadableOrderProductDownloadPopulator populator = new ReadableOrderProductDownloadPopulator();
+ List<ReadableOrderProductDownload> downloads = new ArrayList<ReadableOrderProductDownload>();
+ for(OrderProductDownload download : orderProductDownloads) {
+ ReadableOrderProductDownload view = new ReadableOrderProductDownload();
+ populator.populate(download, view, store, language);
+ downloads.add(view);
+ }
+ model.addAttribute("downloads", downloads);
+ }
+
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Checkout.confirmation).append(".").append(store.getStoreTemplate());
+ return template.toString();
+
+
+ }
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderController.java
new file mode 100644
index 0000000..aebc991
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderController.java
@@ -0,0 +1,940 @@
+package com.salesmanager.web.shop.controller.order;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.Validate;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.CookieValue;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.common.model.Billing;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.OrderTotal;
+import com.salesmanager.core.business.order.model.OrderTotalSummary;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductDownload;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.order.service.orderproduct.OrderProductDownloadService;
+import com.salesmanager.core.business.payments.model.PaymentMethod;
+import com.salesmanager.core.business.payments.model.Transaction;
+import com.salesmanager.core.business.payments.service.PaymentService;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.shipping.model.ShippingOption;
+import com.salesmanager.core.business.shipping.model.ShippingQuote;
+import com.salesmanager.core.business.shipping.model.ShippingSummary;
+import com.salesmanager.core.business.shipping.service.ShippingService;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.web.admin.entity.userpassword.UserReset;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.customer.AnonymousCustomer;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.order.ReadableOrderTotal;
+import com.salesmanager.web.entity.order.ReadableShippingSummary;
+import com.salesmanager.web.entity.order.ReadableShopOrder;
+import com.salesmanager.web.entity.order.ShopOrder;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+import com.salesmanager.web.populator.order.ReadableOrderTotalPopulator;
+import com.salesmanager.web.populator.order.ReadableShippingSummaryPopulator;
+import com.salesmanager.web.populator.order.ReadableShopOrderPopulator;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.controller.customer.facade.CustomerFacade;
+import com.salesmanager.web.shop.controller.order.facade.OrderFacade;
+import com.salesmanager.web.shop.controller.shoppingCart.facade.ShoppingCartFacade;
+import com.salesmanager.web.utils.EmailTemplatesUtils;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+@RequestMapping(Constants.SHOP_URI+"/order")
+public class ShoppingOrderController extends AbstractController {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(ShoppingOrderController.class);
+
+ @Autowired
+ private ShoppingCartFacade shoppingCartFacade;
+
+ @Autowired
+ private ShoppingCartService shoppingCartService;
+
+ @Autowired
+ private PaymentService paymentService;
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private ShippingService shippingService;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @Autowired
+ private OrderFacade orderFacade;
+
+ @Autowired
+ private CustomerFacade customerFacade;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+ @Autowired
+ private AuthenticationManager customerAuthenticationManager;
+
+ @Autowired
+ private EmailTemplatesUtils emailTemplatesUtils;
+
+ @Autowired
+ private OrderProductDownloadService orderProdctDownloadService;
+
+ @SuppressWarnings("unused")
+ @RequestMapping("/checkout.html")
+ public String displayCheckout(@CookieValue("cart") String cookie, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Customer customer = (Customer)request.getSession().getAttribute(Constants.CUSTOMER);
+
+
+ /**
+ * Shopping cart
+ *
+ * ShoppingCart should be in the HttpSession
+ * Otherwise the cart id is in the cookie
+ * Otherwise the customer is in the session and a cart exist in the DB
+ * Else -> Nothing to display
+ */
+
+ //check if an existing order exist
+ ShopOrder order = null;
+ order = super.getSessionAttribute(Constants.ORDER, request);
+
+ //Get the cart from the DB
+ String shoppingCartCode = (String)request.getSession().getAttribute(Constants.SHOPPING_CART);
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCart cart = null;
+
+ if(StringUtils.isBlank(shoppingCartCode)) {
+
+ if(cookie==null) {//session expired and cookie null, nothing to do
+ return "redirect:/shop/cart/shoppingCart.html";
+ }
+ String merchantCookie[] = cookie.split("_");
+ String merchantStoreCode = merchantCookie[0];
+ if(!merchantStoreCode.equals(store.getCode())) {
+ return "redirect:/shop/cart/shoppingCart.html";
+ }
+ shoppingCartCode = merchantCookie[1];
+
+ }
+
+ cart = shoppingCartFacade.getShoppingCartModel(shoppingCartCode, store);
+
+ if(cart==null && customer!=null) {
+ cart=shoppingCartFacade.getShoppingCartModel(customer, store);
+ }
+
+ super.setSessionAttribute(Constants.SHOPPING_CART, cart.getShoppingCartCode(), request);
+
+ if(shoppingCartCode==null && cart==null) {//error
+ return "redirect:/shop/cart/shoppingCart.html";
+ }
+
+
+ if(customer!=null) {
+ if(cart.getCustomerId()!=customer.getId().longValue()) {
+ return "redirect:/shop/shoppingCart.html";
+ }
+ } else {
+ customer = orderFacade.initEmptyCustomer(store);
+ AnonymousCustomer anonymousCustomer = (AnonymousCustomer)request.getAttribute(Constants.ANONYMOUS_CUSTOMER);
+ if(anonymousCustomer!=null && anonymousCustomer.getBilling()!=null) {
+ Billing billing = customer.getBilling();
+ billing.setCity(anonymousCustomer.getBilling().getCity());
+ Map<String,Country> countriesMap = countryService.getCountriesMap(language);
+ Country anonymousCountry = countriesMap.get(anonymousCustomer.getBilling().getCountry());
+ if(anonymousCountry!=null) {
+ billing.setCountry(anonymousCountry);
+ }
+ Map<String,Zone> zonesMap = zoneService.getZones(language);
+ Zone anonymousZone = zonesMap.get(anonymousCustomer.getBilling().getZone());
+ if(anonymousZone!=null) {
+ billing.setZone(anonymousZone);
+ }
+ if(anonymousCustomer.getBilling().getPostalCode()!=null) {
+ billing.setPostalCode(anonymousCustomer.getBilling().getPostalCode());
+ }
+ customer.setBilling(billing);
+ }
+ }
+
+ Set<ShoppingCartItem> items = cart.getLineItems();
+ if(CollectionUtils.isEmpty(items)) {
+ return "redirect:/shop/shoppingCart.html";
+ }
+
+ if(order==null) {
+ order = orderFacade.initializeOrder(store, customer, cart, language);
+ }
+
+ boolean freeShoppingCart = shoppingCartService.isFreeShoppingCart(cart);
+ boolean requiresShipping = shoppingCartService.requiresShipping(cart);
+
+ /** shipping **/
+ ShippingQuote quote = null;
+ if(requiresShipping) {
+ quote = orderFacade.getShippingQuote(customer, cart, order, store, language);
+ model.addAttribute("shippingQuote", quote);
+ }
+
+ if(quote!=null) {
+
+ if(StringUtils.isBlank(quote.getShippingReturnCode())) {
+
+ if(order.getShippingSummary()==null) {
+ ShippingSummary summary = orderFacade.getShippingSummary(quote, store, language);
+ order.setShippingSummary(summary);
+ request.getSession().setAttribute(Constants.SHIPPING_SUMMARY, summary);
+ }
+ if(order.getSelectedShippingOption()==null) {
+ order.setSelectedShippingOption(quote.getSelectedShippingOption());
+ }
+
+ //save quotes in HttpSession
+ List<ShippingOption> options = quote.getShippingOptions();
+ request.getSession().setAttribute(Constants.SHIPPING_OPTIONS, options);
+
+ }
+
+
+ //get shipping countries
+ List<Country> shippingCountriesList = orderFacade.getShipToCountry(store, language);
+ model.addAttribute("countries", shippingCountriesList);
+ } else {
+ //get all countries
+ List<Country> countries = countryService.getCountries(language);
+ model.addAttribute("countries", countries);
+ }
+
+ if(quote!=null && quote.getShippingReturnCode()!=null && quote.getShippingReturnCode().equals(ShippingQuote.NO_SHIPPING_MODULE_CONFIGURED)) {
+ LOGGER.error("Shipping quote error " + quote.getShippingReturnCode());
+ model.addAttribute("errorMessages", quote.getShippingReturnCode());
+ }
+
+ if(quote!=null && !StringUtils.isBlank(quote.getQuoteError())) {
+ LOGGER.error("Shipping quote error " + quote.getQuoteError());
+ model.addAttribute("errorMessages", quote.getQuoteError());
+ }
+
+ if(quote!=null && quote.getShippingReturnCode()!=null && quote.getShippingReturnCode().equals(ShippingQuote.NO_SHIPPING_TO_SELECTED_COUNTRY)) {
+ LOGGER.error("Shipping quote error " + quote.getShippingReturnCode());
+ model.addAttribute("errorMessages", quote.getShippingReturnCode());
+ }
+ /** end shipping **/
+
+ //get payment methods
+ List<PaymentMethod> paymentMethods = paymentService.getAcceptedPaymentMethods(store);
+
+ //not free and no payment methods
+ if(CollectionUtils.isEmpty(paymentMethods) && !freeShoppingCart) {
+ LOGGER.error("No payment method configured");
+ model.addAttribute("errorMessages", "No payments configured");
+ }
+
+ if(!CollectionUtils.isEmpty(paymentMethods)) {//select default payment method
+ PaymentMethod defaultPaymentSelected = null;
+ for(PaymentMethod paymentMethod : paymentMethods) {
+ if(paymentMethod.isDefaultSelected()) {
+ defaultPaymentSelected = paymentMethod;
+ break;
+ }
+ }
+
+ if(defaultPaymentSelected==null) {//forced default selection
+ defaultPaymentSelected = paymentMethods.get(0);
+ defaultPaymentSelected.setDefaultSelected(true);
+ }
+
+
+ }
+
+ //readable shopping cart items for order summary box
+ ShoppingCartData shoppingCart = shoppingCartFacade.getShoppingCartData(cart);
+ model.addAttribute( "cart", shoppingCart );
+
+
+
+ //order total
+ OrderTotalSummary orderTotalSummary = orderFacade.calculateOrderTotal(store, order, language);
+ order.setOrderTotalSummary(orderTotalSummary);
+ //if order summary has to be re-used
+ super.setSessionAttribute(Constants.ORDER_SUMMARY, orderTotalSummary, request);
+
+ model.addAttribute("order",order);
+ model.addAttribute("paymentMethods", paymentMethods);
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Checkout.checkout).append(".").append(store.getStoreTemplate());
+ return template.toString();
+
+
+ }
+
+
+ @RequestMapping("/commitPreAuthorized.html")
+ public String commitPreAuthorizedOrder(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ ShopOrder order = super.getSessionAttribute(Constants.ORDER, request);
+ if(order==null) {
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Pages.timeout).append(".").append(store.getStoreTemplate());
+ return template.toString();
+ }
+
+
+
+ try {
+
+ OrderTotalSummary totalSummary = super.getSessionAttribute(Constants.ORDER_SUMMARY, request);
+
+ if(totalSummary==null) {
+ totalSummary = orderFacade.calculateOrderTotal(store, order, language);
+ super.setSessionAttribute(Constants.ORDER_SUMMARY, totalSummary, request);
+ }
+
+
+ order.setOrderTotalSummary(totalSummary);
+
+ //already validated, proceed with commit
+ Order orderModel = this.commitOrder(order, request, locale);
+ super.setSessionAttribute(Constants.ORDER_ID, orderModel.getId(), request);
+
+ return "redirect://shop/order/confirmation.html";
+
+ } catch(Exception e) {
+ LOGGER.error("Error while commiting order",e);
+ throw e;
+
+ }
+
+ }
+
+
+ private Order commitOrder(ShopOrder order, HttpServletRequest request, Locale locale) throws Exception, ServiceException {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ String userName = null;
+ String password = null;
+
+ PersistableCustomer customer = order.getCustomer();
+
+ /** set username and password to persistable object **/
+ Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+ Customer authCustomer = null;
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ authCustomer = customerFacade.getCustomerByUserName(auth.getName(), store);
+ //set id and authentication information
+ customer.setUserName(authCustomer.getNick());
+ customer.setEncodedPassword(authCustomer.getPassword());
+ customer.setId(authCustomer.getId());
+ } else {
+ //set customer id to null
+ customer.setId(null);
+ }
+
+ //if the customer is new, generate a password
+ if(customer.getId()==null || customer.getId()==0) {//new customer
+ password = UserReset.generateRandomString();
+ String encodedPassword = passwordEncoder.encodePassword(password, null);
+ customer.setEncodedPassword(encodedPassword);
+ }
+
+ if(order.isShipToBillingAdress()) {
+ customer.setDelivery(customer.getBilling());
+ }
+
+
+
+ Customer modelCustomer = null;
+ try {//set groups
+ if(authCustomer==null) {//not authenticated, create a new volatile user
+ modelCustomer = customerFacade.getCustomerModel(customer, store, language);
+ customerFacade.setCustomerModelDefaultProperties(modelCustomer, store);
+ userName = modelCustomer.getNick();
+ LOGGER.debug( "About to persist volatile customer to database." );
+ customerService.saveOrUpdate( modelCustomer );
+ } else {//use existing customer
+ modelCustomer = customerFacade.populateCustomerModel(authCustomer, customer, store, language);
+ }
+ } catch(Exception e) {
+ throw new ServiceException(e);
+ }
+
+
+
+ Order modelOrder = null;
+ Transaction initialTransaction = (Transaction)super.getSessionAttribute(Constants.INIT_TRANSACTION_KEY, request);
+ if(initialTransaction!=null) {
+ modelOrder=orderFacade.processOrder(order, modelCustomer, initialTransaction, store, language);
+ } else {
+ modelOrder=orderFacade.processOrder(order, modelCustomer, store, language);
+ }
+
+ //save order id in session
+ super.setSessionAttribute(Constants.ORDER_ID, modelOrder.getId(), request);
+ //set a unique token for confirmation
+ super.setSessionAttribute(Constants.ORDER_ID_TOKEN, modelOrder.getId(), request);
+
+
+ //get cart
+ String cartCode = super.getSessionAttribute(Constants.SHOPPING_CART, request);
+ if(StringUtils.isNotBlank(cartCode)) {
+ try {
+ shoppingCartFacade.deleteShoppingCart(cartCode, store);
+ } catch(Exception e) {
+ LOGGER.error("Cannot delete cart " + cartCode, e);
+ throw new ServiceException(e);
+ }
+ }
+
+
+ //cleanup the order objects
+ super.removeAttribute(Constants.ORDER, request);
+ super.removeAttribute(Constants.ORDER_SUMMARY, request);
+ super.removeAttribute(Constants.INIT_TRANSACTION_KEY, request);
+ super.removeAttribute(Constants.SHIPPING_OPTIONS, request);
+ super.removeAttribute(Constants.SHIPPING_SUMMARY, request);
+ super.removeAttribute(Constants.SHOPPING_CART, request);
+
+
+
+
+ try {
+ //refresh customer --
+ modelCustomer = customerFacade.getCustomerByUserName(modelCustomer.getNick(), store);
+
+ //if has downloads, authenticate
+
+ //check if any downloads exist for this order6
+ List<OrderProductDownload> orderProductDownloads = orderProdctDownloadService.getByOrderId(modelOrder.getId());
+ if(CollectionUtils.isNotEmpty(orderProductDownloads)) {
+
+ LOGGER.debug("Is user authenticated ? ",auth.isAuthenticated());
+ if(auth != null &&
+ request.isUserInRole("AUTH_CUSTOMER")) {
+ //already authenticated
+ } else {
+ //authenticate
+ customerFacade.authenticate(modelCustomer, userName, password);
+ super.setSessionAttribute(Constants.CUSTOMER, modelCustomer, request);
+ }
+ //send new user registration template
+ if(order.getCustomer().getId()==null || order.getCustomer().getId().longValue()==0) {
+ //send email for new customer
+ customer.setClearPassword(password);//set clear password for email
+ customer.setUserName(userName);
+ emailTemplatesUtils.sendRegistrationEmail( customer, store, locale, request.getContextPath() );
+ }
+ }
+
+ //send order confirmation email
+ emailTemplatesUtils.sendOrderEmail(modelCustomer, modelOrder, locale, language, store, request.getContextPath());
+
+ if(orderService.hasDownloadFiles(modelOrder)) {
+ emailTemplatesUtils.sendOrderDownloadEmail(modelCustomer, modelOrder, store, locale, request.getContextPath());
+
+ }
+
+
+ } catch(Exception e) {
+ LOGGER.error("Error while post processing order",e);
+ }
+
+
+
+
+ return modelOrder;
+
+
+ }
+
+
+
+
+ @RequestMapping("/commitOrder.html")
+ public String commitOrder(@CookieValue("cart") String cookie, @Valid @ModelAttribute(value="order") ShopOrder order, BindingResult bindingResult, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ //validate if session has expired
+
+
+
+ try {
+
+ //basic stuff
+ String shoppingCartCode = (String)request.getSession().getAttribute(Constants.SHOPPING_CART);
+ if(shoppingCartCode==null) {
+
+ if(cookie==null) {//session expired and cookie null, nothing to do
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Pages.timeout).append(".").append(store.getStoreTemplate());
+ return template.toString();
+ }
+ String merchantCookie[] = cookie.split("_");
+ String merchantStoreCode = merchantCookie[0];
+ if(!merchantStoreCode.equals(store.getCode())) {
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Pages.timeout).append(".").append(store.getStoreTemplate());
+ return template.toString();
+ }
+ shoppingCartCode = merchantCookie[1];
+ }
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCart cart = null;
+
+ if(StringUtils.isBlank(shoppingCartCode)) {
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Pages.timeout).append(".").append(store.getStoreTemplate());
+ return template.toString();
+ }
+ cart = shoppingCartFacade.getShoppingCartModel(shoppingCartCode, store);
+
+ Set<ShoppingCartItem> items = cart.getLineItems();
+ List<ShoppingCartItem> cartItems = new ArrayList<ShoppingCartItem>(items);
+ order.setShoppingCartItems(cartItems);
+
+ //get payment methods
+ List<PaymentMethod> paymentMethods = paymentService.getAcceptedPaymentMethods(store);
+ boolean freeShoppingCart = shoppingCartService.isFreeShoppingCart(cart);
+
+ //not free and no payment methods
+ if(CollectionUtils.isEmpty(paymentMethods) && !freeShoppingCart) {
+ LOGGER.error("No payment method configured");
+ model.addAttribute("errorMessages", "No payments configured");
+ }
+
+ if(!CollectionUtils.isEmpty(paymentMethods)) {//select default payment method
+ PaymentMethod defaultPaymentSelected = null;
+ for(PaymentMethod paymentMethod : paymentMethods) {
+ if(paymentMethod.isDefaultSelected()) {
+ defaultPaymentSelected = paymentMethod;
+ break;
+ }
+ }
+
+ if(defaultPaymentSelected==null) {//forced default selection
+ defaultPaymentSelected = paymentMethods.get(0);
+ defaultPaymentSelected.setDefaultSelected(true);
+ }
+
+
+ }
+
+ ShippingQuote quote = orderFacade.getShippingQuote(order.getCustomer(), cart, order, store, language);
+ model.addAttribute("shippingQuote", quote);
+ model.addAttribute("paymentMethods", paymentMethods);
+
+ if(quote!=null) {
+ List<Country> shippingCountriesList = orderFacade.getShipToCountry(store, language);
+ model.addAttribute("countries", shippingCountriesList);
+ } else {
+ //get all countries
+ List<Country> countries = countryService.getCountries(language);
+ model.addAttribute("countries", countries);
+ }
+
+ //set shipping summary
+ if(order.getSelectedShippingOption()!=null) {
+ ShippingSummary summary = (ShippingSummary)request.getSession().getAttribute(Constants.SHIPPING_SUMMARY);
+ @SuppressWarnings("unchecked")
+ List<ShippingOption> options = (List<ShippingOption>)request.getSession().getAttribute(Constants.SHIPPING_OPTIONS);
+
+ if(summary==null) {
+ summary = orderFacade.getShippingSummary(quote, store, language);
+ request.getSession().setAttribute(Constants.SHIPPING_SUMMARY, options);
+ }
+
+ if(options==null) {
+ options = quote.getShippingOptions();
+ request.getSession().setAttribute(Constants.SHIPPING_OPTIONS, options);
+ }
+
+ ReadableShippingSummary readableSummary = new ReadableShippingSummary();
+ ReadableShippingSummaryPopulator readableSummaryPopulator = new ReadableShippingSummaryPopulator();
+ readableSummaryPopulator.setPricingService(pricingService);
+ readableSummaryPopulator.populate(summary, readableSummary, store, language);
+
+
+ if(!CollectionUtils.isEmpty(options)) {
+
+ //get submitted shipping option
+ ShippingOption quoteOption = null;
+ ShippingOption selectedOption = order.getSelectedShippingOption();
+
+ //check if selectedOption exist
+ for(ShippingOption shipOption : options) {
+ if(!StringUtils.isBlank(shipOption.getOptionId()) && shipOption.getOptionId().equals(selectedOption.getOptionId())) {
+ quoteOption = shipOption;
+ }
+ }
+ if(quoteOption==null) {
+ quoteOption = options.get(0);
+ }
+
+ readableSummary.setSelectedShippingOption(quoteOption);
+ readableSummary.setShippingOptions(options);
+ summary.setShippingOption(quoteOption.getOptionId());
+ summary.setShipping(quoteOption.getOptionPrice());
+
+ }
+
+ order.setShippingSummary(summary);
+ }
+
+ OrderTotalSummary totalSummary = super.getSessionAttribute(Constants.ORDER_SUMMARY, request);
+
+ if(totalSummary==null) {
+ totalSummary = orderFacade.calculateOrderTotal(store, order, language);
+ super.setSessionAttribute(Constants.ORDER_SUMMARY, totalSummary, request);
+ }
+
+
+ order.setOrderTotalSummary(totalSummary);
+
+
+ orderFacade.validateOrder(order, bindingResult, new HashMap<String,String>(), store, locale);
+
+ if ( bindingResult.hasErrors() )
+ {
+ LOGGER.info( "found {} validation error while validating in customer registration ",
+ bindingResult.getErrorCount() );
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Checkout.checkout).append(".").append(store.getStoreTemplate());
+ return template.toString();
+
+ }
+
+ @SuppressWarnings("unused")
+ Order modelOrder = this.commitOrder(order, request, locale);
+
+
+ } catch(ServiceException se) {
+
+
+ LOGGER.error("Error while creating an order ", se);
+
+ String defaultMessage = messages.getMessage("message.error", locale);
+ model.addAttribute("errorMessages", defaultMessage);
+
+ if(se.getExceptionType()==ServiceException.EXCEPTION_VALIDATION) {
+ if(!StringUtils.isBlank(se.getMessageCode())) {
+ String messageLabel = messages.getMessage(se.getMessageCode(), locale, defaultMessage);
+ model.addAttribute("errorMessages", messageLabel);
+ }
+ } else if(se.getExceptionType()==ServiceException.EXCEPTION_PAYMENT_DECLINED) {
+ String paymentDeclinedMessage = messages.getMessage("message.payment.declined", locale);
+ if(!StringUtils.isBlank(se.getMessageCode())) {
+ String messageLabel = messages.getMessage(se.getMessageCode(), locale, paymentDeclinedMessage);
+ model.addAttribute("errorMessages", messageLabel);
+ } else {
+ model.addAttribute("errorMessages", paymentDeclinedMessage);
+ }
+ }
+
+
+
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Checkout.checkout).append(".").append(store.getStoreTemplate());
+ return template.toString();
+
+ } catch(Exception e) {
+ LOGGER.error("Error while commiting order",e);
+ throw e;
+
+ }
+
+ //redirect to completd
+ return "redirect://shop/order/confirmation.html";
+
+
+
+
+
+ }
+
+
+
+
+ /**
+ * Recalculates shipping and tax following a change in country or province
+ * @param order
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value={"/shippingQuotes.html"}, method=RequestMethod.POST)
+ public @ResponseBody ReadableShopOrder calculateShipping(@ModelAttribute(value="order") ShopOrder order, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ String shoppingCartCode = getSessionAttribute(Constants.SHOPPING_CART, request);
+
+ Validate.notNull(shoppingCartCode,"shoppingCartCode does not exist in the session");
+
+ ReadableShopOrder readableOrder = new ReadableShopOrder();
+ try {
+
+ //re-generate cart
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCart cart = shoppingCartFacade.getShoppingCartModel(shoppingCartCode, store);
+
+
+
+ ReadableShopOrderPopulator populator = new ReadableShopOrderPopulator();
+ populator.populate(order, readableOrder, store, language);
+
+ boolean requiresShipping = shoppingCartService.requiresShipping(cart);
+
+ /** shipping **/
+ ShippingQuote quote = null;
+ if(requiresShipping) {
+ quote = orderFacade.getShippingQuote(order.getCustomer(), cart, order, store, language);
+ }
+
+ if(quote!=null) {
+ if(StringUtils.isBlank(quote.getShippingReturnCode())) {
+ ShippingSummary summary = orderFacade.getShippingSummary(quote, store, language);
+ order.setShippingSummary(summary);//for total calculation
+
+
+ ReadableShippingSummary readableSummary = new ReadableShippingSummary();
+ ReadableShippingSummaryPopulator readableSummaryPopulator = new ReadableShippingSummaryPopulator();
+ readableSummaryPopulator.setPricingService(pricingService);
+ readableSummaryPopulator.populate(summary, readableSummary, store, language);
+
+ readableSummary.setSelectedShippingOption(quote.getSelectedShippingOption());
+
+ //save quotes in HttpSession
+ List<ShippingOption> options = quote.getShippingOptions();
+ readableSummary.setShippingOptions(options);
+
+ readableOrder.setShippingSummary(readableSummary);
+ request.getSession().setAttribute(Constants.SHIPPING_SUMMARY, summary);
+ request.getSession().setAttribute(Constants.SHIPPING_OPTIONS, options);
+
+ }
+
+ if(quote.getShippingReturnCode()!=null && quote.getShippingReturnCode().equals(ShippingQuote.NO_SHIPPING_MODULE_CONFIGURED)) {
+ LOGGER.error("Shipping quote error " + quote.getShippingReturnCode());
+ readableOrder.setErrorMessage(messages.getMessage("message.noshipping", locale));
+ }
+
+ if(quote.getShippingReturnCode()!=null && quote.getShippingReturnCode().equals(ShippingQuote.NO_SHIPPING_TO_SELECTED_COUNTRY)) {
+ LOGGER.error("Shipping quote error " + quote.getShippingReturnCode());
+ readableOrder.setErrorMessage(messages.getMessage("message.noshipping", locale));
+ }
+
+ if(!StringUtils.isBlank(quote.getQuoteError())) {
+ LOGGER.error("Shipping quote error " + quote.getQuoteError());
+ readableOrder.setErrorMessage(messages.getMessage("message.noshippingerror", locale));
+ }
+
+
+ }
+
+ //set list of shopping cart items for core price calculation
+ List<ShoppingCartItem> items = new ArrayList<ShoppingCartItem>(cart.getLineItems());
+ order.setShoppingCartItems(items);
+
+ OrderTotalSummary orderTotalSummary = orderFacade.calculateOrderTotal(store, order, language);
+ super.setSessionAttribute(Constants.ORDER_SUMMARY, orderTotalSummary, request);
+
+
+ ReadableOrderTotalPopulator totalPopulator = new ReadableOrderTotalPopulator();
+ totalPopulator.setMessages(messages);
+ totalPopulator.setPricingService(pricingService);
+
+ List<ReadableOrderTotal> subtotals = new ArrayList<ReadableOrderTotal>();
+ for(OrderTotal total : orderTotalSummary.getTotals()) {
+ if(!total.getOrderTotalCode().equals("order.total.total")) {
+ ReadableOrderTotal t = new ReadableOrderTotal();
+ totalPopulator.populate(total, t, store, language);
+ subtotals.add(t);
+ } else {//grand total
+ ReadableOrderTotal ot = new ReadableOrderTotal();
+ totalPopulator.populate(total, ot, store, language);
+ readableOrder.setGrandTotal(ot.getTotal());
+ }
+ }
+
+
+ readableOrder.setSubTotals(subtotals);
+
+ } catch(Exception e) {
+ LOGGER.error("Error while getting shipping quotes",e);
+ readableOrder.setErrorMessage(messages.getMessage("message.error", locale));
+ }
+
+ return readableOrder;
+ }
+
+ /**
+ * Calculates the order total following price variation like changing a shipping option
+ * @param order
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value={"/calculateOrderTotal.html"}, method=RequestMethod.POST)
+ public @ResponseBody ReadableShopOrder calculateOrderTotal(@ModelAttribute(value="order") ShopOrder order, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ String shoppingCartCode = getSessionAttribute(Constants.SHOPPING_CART, request);
+
+ Validate.notNull(shoppingCartCode,"shoppingCartCode does not exist in the session");
+
+ ReadableShopOrder readableOrder = new ReadableShopOrder();
+ try {
+
+ //re-generate cart
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCart cart = shoppingCartFacade.getShoppingCartModel(shoppingCartCode, store);
+
+ ReadableShopOrderPopulator populator = new ReadableShopOrderPopulator();
+ populator.populate(order, readableOrder, store, language);
+
+ if(order.getSelectedShippingOption()!=null) {
+ ShippingSummary summary = (ShippingSummary)request.getSession().getAttribute(Constants.SHIPPING_SUMMARY);
+ @SuppressWarnings("unchecked")
+ List<ShippingOption> options = (List<ShippingOption>)request.getSession().getAttribute(Constants.SHIPPING_OPTIONS);
+
+
+ order.setShippingSummary(summary);//for total calculation
+
+
+ ReadableShippingSummary readableSummary = new ReadableShippingSummary();
+ ReadableShippingSummaryPopulator readableSummaryPopulator = new ReadableShippingSummaryPopulator();
+ readableSummaryPopulator.setPricingService(pricingService);
+ readableSummaryPopulator.populate(summary, readableSummary, store, language);
+
+
+ if(!CollectionUtils.isEmpty(options)) {
+
+ //get submitted shipping option
+ ShippingOption quoteOption = null;
+ ShippingOption selectedOption = order.getSelectedShippingOption();
+
+
+
+ //check if selectedOption exist
+ for(ShippingOption shipOption : options) {
+ if(!StringUtils.isBlank(shipOption.getOptionId()) && shipOption.getOptionId().equals(selectedOption.getOptionId())) {
+ quoteOption = shipOption;
+ }
+ }
+
+ if(quoteOption==null) {
+ quoteOption = options.get(0);
+ }
+
+
+ readableSummary.setSelectedShippingOption(quoteOption);
+ readableSummary.setShippingOptions(options);
+
+
+ summary.setShippingOption(quoteOption.getOptionId());
+ summary.setShipping(quoteOption.getOptionPrice());
+
+ }
+
+
+ readableOrder.setShippingSummary(readableSummary);
+
+ }
+
+ //set list of shopping cart items for core price calculation
+ List<ShoppingCartItem> items = new ArrayList<ShoppingCartItem>(cart.getLineItems());
+ order.setShoppingCartItems(items);
+
+ OrderTotalSummary orderTotalSummary = orderFacade.calculateOrderTotal(store, order, language);
+ super.setSessionAttribute(Constants.ORDER_SUMMARY, orderTotalSummary, request);
+
+
+ ReadableOrderTotalPopulator totalPopulator = new ReadableOrderTotalPopulator();
+ totalPopulator.setMessages(messages);
+ totalPopulator.setPricingService(pricingService);
+
+ List<ReadableOrderTotal> subtotals = new ArrayList<ReadableOrderTotal>();
+ for(OrderTotal total : orderTotalSummary.getTotals()) {
+ if(!total.getOrderTotalCode().equals("order.total.total")) {
+ ReadableOrderTotal t = new ReadableOrderTotal();
+ totalPopulator.populate(total, t, store, language);
+ subtotals.add(t);
+ } else {//grand total
+ ReadableOrderTotal ot = new ReadableOrderTotal();
+ totalPopulator.populate(total, ot, store, language);
+ readableOrder.setGrandTotal(ot.getTotal());
+ }
+ }
+
+
+ readableOrder.setSubTotals(subtotals);
+
+ } catch(Exception e) {
+ LOGGER.error("Error while getting shipping quotes",e);
+ readableOrder.setErrorMessage(messages.getMessage("message.error", locale));
+ }
+
+ return readableOrder;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderDownloadController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderDownloadController.java
new file mode 100644
index 0000000..d19cea4
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderDownloadController.java
@@ -0,0 +1,114 @@
+package com.salesmanager.web.shop.controller.order;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.content.model.OutputContentFile;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProductDownload;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.order.service.orderproduct.OrderProductDownloadService;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.shop.controller.AbstractController;
+
+
+@Controller
+@RequestMapping(Constants.SHOP_URI+"/order")
+public class ShoppingOrderDownloadController extends AbstractController {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(ShoppingOrderDownloadController.class);
+
+ @Autowired
+ private ContentService contentService;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private OrderProductDownloadService orderProductDownloadService;
+
+ /**
+ * Virtual product(s) download link
+ * @param id
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @PreAuthorize("hasRole('AUTH_CUSTOMER')")
+ @RequestMapping("/download/{orderId}/{id}.html")
+ public @ResponseBody byte[] downloadFile(@PathVariable Long orderId, @PathVariable Long id, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+
+ FileContentType fileType = FileContentType.PRODUCT_DIGITAL;
+
+ //get customer and check order
+ Order order = orderService.getById(orderId);
+ if(order==null) {
+ LOGGER.warn("Order is null for id " + orderId);
+ response.sendError(404, "Image not found");
+ return null;
+ }
+
+
+ //order belongs to customer
+ Customer customer = (Customer)super.getSessionAttribute(Constants.CUSTOMER, request);
+ if(customer==null) {
+ response.sendError(404, "Image not found");
+ return null;
+ }
+
+
+ String fileName = null;//get it from OrderProductDownlaod
+ OrderProductDownload download = orderProductDownloadService.getById(id);
+ if(download==null) {
+ LOGGER.warn("OrderProductDownload is null for id " + id);
+ response.sendError(404, "Image not found");
+ return null;
+ }
+
+ fileName = download.getOrderProductFilename();
+
+ // needs to query the new API
+ OutputContentFile file =contentService.getContentFile(store.getCode(), fileType, fileName);
+
+
+ if(file!=null) {
+ response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
+ return file.getFile().toByteArray();
+ } else {
+ LOGGER.warn("Image not found for OrderProductDownload id " + id);
+ response.sendError(404, "Image not found");
+ return null;
+ }
+
+
+ // product image
+ // example -> /download/12345/120.html
+
+
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderPaymentController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderPaymentController.java
new file mode 100644
index 0000000..144e0d5
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/order/ShoppingOrderPaymentController.java
@@ -0,0 +1,255 @@
+package com.salesmanager.web.shop.controller.order;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.Validate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mobile.device.Device;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.customer.service.CustomerService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionService;
+import com.salesmanager.core.business.customer.service.attribute.CustomerOptionValueService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.OrderTotalSummary;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.payments.model.PaypalPayment;
+import com.salesmanager.core.business.payments.model.Transaction;
+import com.salesmanager.core.business.payments.service.PaymentService;
+import com.salesmanager.core.business.payments.service.TransactionService;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.shipping.model.ShippingSummary;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.core.business.system.model.IntegrationConfiguration;
+import com.salesmanager.core.business.system.model.IntegrationModule;
+import com.salesmanager.core.modules.integration.payment.impl.PayPalExpressCheckoutPayment;
+import com.salesmanager.core.modules.integration.payment.model.PaymentModule;
+import com.salesmanager.core.utils.CoreConfiguration;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.order.ShopOrder;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.order.facade.OrderFacade;
+import com.salesmanager.web.shop.controller.shoppingCart.facade.ShoppingCartFacade;
+import com.salesmanager.web.utils.LabelUtils;
+
+@Controller
+@RequestMapping(Constants.SHOP_URI)
+public class ShoppingOrderPaymentController extends AbstractController {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(ShoppingOrderPaymentController.class);
+
+ private final static String INIT_ACTION = "init";
+
+
+ @Autowired
+ private ShoppingCartFacade shoppingCartFacade;
+
+ @Autowired
+ private ShoppingCartService shoppingCartService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private PaymentService paymentService;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @Autowired
+ private OrderFacade orderFacade;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private CustomerService customerService;
+
+ @Autowired
+ private CustomerOptionService customerOptionService;
+
+ @Autowired
+ private CustomerOptionValueService customerOptionValueService;
+
+ @Autowired
+ private TransactionService transactionService;
+
+ @Autowired
+ private CoreConfiguration coreConfiguration;
+
+ /**
+ * Recalculates shipping and tax following a change in country or province
+ * @param order
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value={"/order/payment/{action}/{paymentmethod}.html"}, method=RequestMethod.POST)
+ public @ResponseBody String paymentAction(@Valid @ModelAttribute(value="order") ShopOrder order, @PathVariable String action, @PathVariable String paymentmethod, Device device, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ String shoppingCartCode = getSessionAttribute(Constants.SHOPPING_CART, request);
+
+ Validate.notNull(shoppingCartCode,"shoppingCartCode does not exist in the session");
+ AjaxResponse ajaxResponse = new AjaxResponse();
+
+ try {
+
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCart cart = shoppingCartFacade.getShoppingCartModel(shoppingCartCode, store);
+
+ Set<ShoppingCartItem> items = cart.getLineItems();
+ List<ShoppingCartItem> cartItems = new ArrayList<ShoppingCartItem>(items);
+ order.setShoppingCartItems(cartItems);
+
+ //validate order first
+ Map<String,String> messages = new TreeMap<String,String>();
+ orderFacade.validateOrder(order, new BeanPropertyBindingResult(order,"order"), messages, store, locale);
+
+ if(CollectionUtils.isNotEmpty(messages.values())) {
+ for(String key : messages.keySet()) {
+ String value = messages.get(key);
+ ajaxResponse.addValidationMessage(key, value);
+ }
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_VALIDATION_FAILED);
+ return ajaxResponse.toJSONString();
+ }
+
+
+ IntegrationConfiguration config = paymentService.getPaymentConfiguration(order.getPaymentModule(), store);
+ IntegrationModule integrationModule = paymentService.getPaymentMethodByCode(store, order.getPaymentModule());
+
+
+ //OrderTotalSummary orderTotalSummary = orderFacade.calculateOrderTotal(store, order, language);
+ OrderTotalSummary orderTotalSummary = super.getSessionAttribute(Constants.ORDER_SUMMARY, request);
+ if(orderTotalSummary==null) {
+ orderTotalSummary = orderFacade.calculateOrderTotal(store, order, language);
+ super.setSessionAttribute(Constants.ORDER_SUMMARY, orderTotalSummary, request);
+ }
+
+ ShippingSummary summary = (ShippingSummary)request.getSession().getAttribute("SHIPPING_SUMMARY");
+
+ if(summary!=null) {
+ order.setShippingSummary(summary);
+ }
+
+
+
+ if(action.equals(INIT_ACTION)) {
+ if(paymentmethod.equals("PAYPAL")) {
+ try {
+
+
+
+ PaymentModule module = paymentService.getPaymentModule("paypal-express-checkout");
+ PayPalExpressCheckoutPayment p = (PayPalExpressCheckoutPayment)module;
+ PaypalPayment payment = new PaypalPayment();
+ payment.setCurrency(store.getCurrency());
+ Transaction transaction = p.initPaypalTransaction(store, cartItems, orderTotalSummary, payment, config, integrationModule);
+ transactionService.create(transaction);
+
+ super.setSessionAttribute(Constants.INIT_TRANSACTION_KEY, transaction, request);
+
+ //https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout-mobile&token=tokenValueReturnedFromSetExpressCheckoutCall
+ //For Desktop use
+ //https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=tokenValueReturnedFromSetExpressCheckoutCall
+
+ StringBuilder urlAppender = new StringBuilder();
+
+ if(device!=null) {
+ if(device.isNormal()) {
+ urlAppender.append(coreConfiguration.getProperty("PAYPAL_EXPRESSCHECKOUT_REGULAR"));
+ }
+ if(device.isTablet()) {
+ urlAppender.append(coreConfiguration.getProperty("PAYPAL_EXPRESSCHECKOUT_REGULAR"));
+ }
+ if(device.isMobile()) {
+ urlAppender.append(coreConfiguration.getProperty("PAYPAL_EXPRESSCHECKOUT_MOBILE"));
+ }
+ } else {
+ urlAppender.append(coreConfiguration.getProperty("PAYPAL_EXPRESSCHECKOUT_REGULAR"));
+ }
+
+ urlAppender.append(transaction.getTransactionDetails().get("TOKEN"));
+
+
+
+ if(config.getEnvironment().equals(com.salesmanager.core.constants.Constants.PRODUCTION_ENVIRONMENT)) {
+ StringBuilder url = new StringBuilder().append(coreConfiguration.getProperty("PAYPAL_EXPRESSCHECKOUT_PRODUCTION")).append(urlAppender.toString());
+ ajaxResponse.addEntry("url", url.toString());
+ } else {
+ StringBuilder url = new StringBuilder().append(coreConfiguration.getProperty("PAYPAL_EXPRESSCHECKOUT_SANDBOX")).append(urlAppender.toString());
+ ajaxResponse.addEntry("url", url.toString());
+ }
+
+ //keep order in session when user comes back from pp
+ super.setSessionAttribute(Constants.ORDER, order, request);
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_OPERATION_COMPLETED);
+
+ } catch(Exception e) {
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+
+ }
+ }
+
+ } catch(Exception e) {
+ LOGGER.error("Error while performing payment action " + action + " for payment method " + paymentmethod ,e);
+ ajaxResponse.setErrorMessage(e);
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+
+ }
+
+ return ajaxResponse.toJSONString();
+ }
+
+ //cancel - success paypal order
+ @RequestMapping(value={"/paypal/checkout.html/{code}"}, method=RequestMethod.GET)
+ public String returnPayPalPayment(@PathVariable String code, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+ if(Constants.SUCCESS.equals(code)) {
+ return "redirect:" + Constants.SHOP_URI + "/order/commitPreAuthorized.html";
+ } else {//process as cancel
+ return "redirect:" + Constants.SHOP_URI + "/order/checkout.html";
+ }
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/product/ShopProductController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/product/ShopProductController.java
new file mode 100644
index 0000000..9fdd35d
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/product/ShopProductController.java
@@ -0,0 +1,403 @@
+package com.salesmanager.web.shop.controller.product;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductAttribute;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionDescription;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValue;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionValueDescription;
+import com.salesmanager.core.business.catalog.product.model.price.FinalPrice;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationship;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationshipType;
+import com.salesmanager.core.business.catalog.product.model.review.ProductReview;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.catalog.product.service.relationship.ProductRelationshipService;
+import com.salesmanager.core.business.catalog.product.service.review.ProductReviewService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.CacheUtils;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.entity.catalog.product.ReadableProductPrice;
+import com.salesmanager.web.entity.catalog.product.ReadableProductReview;
+import com.salesmanager.web.entity.shop.Breadcrumb;
+import com.salesmanager.web.entity.shop.PageInformation;
+import com.salesmanager.web.populator.catalog.ReadableProductPopulator;
+import com.salesmanager.web.populator.catalog.ReadableProductPricePopulator;
+import com.salesmanager.web.populator.catalog.ReadableProductReviewPopulator;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.model.catalog.Attribute;
+import com.salesmanager.web.shop.model.catalog.AttributeValue;
+import com.salesmanager.web.utils.BreadcrumbsUtils;
+import com.salesmanager.web.utils.ImageFilePathUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.PageBuilderUtils;
+
+import edu.emory.mathcs.backport.java.util.Arrays;
+
+/**
+ * Populates the product details page
+ * @author Carl Samson
+ *
+ */
+@Controller
+@RequestMapping("/shop/product")
+public class ShopProductController {
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ProductAttributeService productAttributeService;
+
+ @Autowired
+ private ProductRelationshipService productRelationshipService;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private ProductReviewService productReviewService;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private CacheUtils cache;
+
+ @Autowired
+ private CategoryService categoryService;
+
+ @Autowired
+ private BreadcrumbsUtils breadcrumbsUtils;
+
+ private static final Logger LOG = LoggerFactory.getLogger(ShopProductController.class);
+
+
+ /**
+ * Display product details with reference to caller page
+ * @param friendlyUrl
+ * @param ref
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/{friendlyUrl}.html/ref={ref}")
+ public String displayProductWithReference(@PathVariable final String friendlyUrl, @PathVariable final String ref, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+ return display(ref, friendlyUrl, model, request, response, locale);
+ }
+
+
+ /**
+ * Display product details no reference
+ * @param friendlyUrl
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/{friendlyUrl}.html")
+ public String displayProduct(@PathVariable final String friendlyUrl, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+ return display(null, friendlyUrl, model, request, response, locale);
+ }
+
+
+ public String display(final String reference, final String friendlyUrl, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ Product product = productService.getBySeUrl(store, friendlyUrl, locale);
+
+ if(product==null) {
+ return PageBuilderUtils.build404(store);
+ }
+
+ ReadableProductPopulator populator = new ReadableProductPopulator();
+ populator.setPricingService(pricingService);
+
+ ReadableProduct productProxy = populator.populate(product, new ReadableProduct(), store, language);
+
+ //meta information
+ PageInformation pageInformation = new PageInformation();
+ pageInformation.setPageDescription(productProxy.getDescription().getMetaDescription());
+ pageInformation.setPageKeywords(productProxy.getDescription().getKeyWords());
+ pageInformation.setPageTitle(productProxy.getDescription().getTitle());
+ pageInformation.setPageUrl(productProxy.getDescription().getFriendlyUrl());
+
+ request.setAttribute(Constants.REQUEST_PAGE_INFORMATION, pageInformation);
+
+ Breadcrumb breadCrumb = breadcrumbsUtils.buildProductBreadcrumb(reference, productProxy, store, language, request.getContextPath());
+ request.getSession().setAttribute(Constants.BREADCRUMB, breadCrumb);
+ request.setAttribute(Constants.BREADCRUMB, breadCrumb);
+
+
+
+ StringBuilder relatedItemsCacheKey = new StringBuilder();
+ relatedItemsCacheKey
+ .append(store.getId())
+ .append("_")
+ .append(Constants.RELATEDITEMS_CACHE_KEY)
+ .append("-")
+ .append(language.getCode());
+
+ StringBuilder relatedItemsMissed = new StringBuilder();
+ relatedItemsMissed
+ .append(relatedItemsCacheKey.toString())
+ .append(Constants.MISSED_CACHE_KEY);
+
+ Map<Long,List<ReadableProduct>> relatedItemsMap = null;
+ List<ReadableProduct> relatedItems = null;
+
+ if(store.isUseCache()) {
+
+ //get from the cache
+ relatedItemsMap = (Map<Long,List<ReadableProduct>>) cache.getFromCache(relatedItemsCacheKey.toString());
+ if(relatedItemsMap==null) {
+ //get from missed cache
+ //Boolean missedContent = (Boolean)cache.getFromCache(relatedItemsMissed.toString());
+
+ //if(missedContent==null) {
+ relatedItems = relatedItems(store, product, language);
+ if(relatedItems!=null) {
+ relatedItemsMap = new HashMap<Long,List<ReadableProduct>>();
+ relatedItemsMap.put(product.getId(), relatedItems);
+ cache.putInCache(relatedItemsMap, relatedItemsCacheKey.toString());
+ } else {
+ //cache.putInCache(new Boolean(true), relatedItemsMissed.toString());
+ }
+ //}
+ } else {
+ relatedItems = relatedItemsMap.get(product.getId());
+ }
+ } else {
+ relatedItems = relatedItems(store, product, language);
+ }
+
+ model.addAttribute("relatedProducts",relatedItems);
+ Set<ProductAttribute> attributes = product.getAttributes();
+
+ //split read only and options
+ Map<Long,Attribute> readOnlyAttributes = null;
+ Map<Long,Attribute> selectableOptions = null;
+
+ if(!CollectionUtils.isEmpty(attributes)) {
+ for(ProductAttribute attribute : attributes) {
+ Attribute attr = null;
+ AttributeValue attrValue = new AttributeValue();
+ ProductOptionValue optionValue = attribute.getProductOptionValue();
+
+ if(attribute.getAttributeDisplayOnly()==true) {//read only attribute
+ if(readOnlyAttributes==null) {
+ readOnlyAttributes = new TreeMap<Long,Attribute>();
+ }
+ attr = readOnlyAttributes.get(attribute.getProductOption().getId());
+ if(attr==null) {
+ attr = createAttribute(attribute, language);
+ }
+ if(attr!=null) {
+ readOnlyAttributes.put(attribute.getProductOption().getId(), attr);
+ attr.setReadOnlyValue(attrValue);
+ }
+ } else {//selectable option
+ if(selectableOptions==null) {
+ selectableOptions = new TreeMap<Long,Attribute>();
+ }
+ attr = selectableOptions.get(attribute.getProductOption().getId());
+ if(attr==null) {
+ attr = createAttribute(attribute, language);
+ }
+ if(attr!=null) {
+ selectableOptions.put(attribute.getProductOption().getId(), attr);
+ }
+ }
+
+
+
+ attrValue.setDefaultAttribute(attribute.getAttributeDefault());
+ attrValue.setId(attribute.getId());//id of the attribute
+ attrValue.setLanguage(language.getCode());
+ if(attribute.getProductAttributePrice()!=null && attribute.getProductAttributePrice().doubleValue()>0) {
+ String formatedPrice = pricingService.getDisplayAmount(attribute.getProductAttributePrice(), store);
+ attrValue.setPrice(formatedPrice);
+ }
+
+ if(!StringUtils.isBlank(attribute.getProductOptionValue().getProductOptionValueImage())) {
+ attrValue.setImage(ImageFilePathUtils.buildProductPropertyImageFilePath(store, attribute.getProductOptionValue().getProductOptionValueImage()));
+ }
+
+ List<ProductOptionValueDescription> descriptions = optionValue.getDescriptionsSettoList();
+ ProductOptionValueDescription description = null;
+ if(descriptions!=null && descriptions.size()>0) {
+ description = descriptions.get(0);
+ if(descriptions.size()>1) {
+ for(ProductOptionValueDescription optionValueDescription : descriptions) {
+ if(optionValueDescription.getLanguage().getId().intValue()==language.getId().intValue()) {
+ description = optionValueDescription;
+ break;
+ }
+ }
+ }
+ }
+ attrValue.setName(description.getName());
+ attrValue.setDescription(description.getDescription());
+ List<AttributeValue> attrs = attr.getValues();
+ if(attrs==null) {
+ attrs = new ArrayList<AttributeValue>();
+ attr.setValues(attrs);
+ }
+ attrs.add(attrValue);
+ }
+ }
+
+ List<ProductReview> reviews = productReviewService.getByProduct(product, language);
+ if(!CollectionUtils.isEmpty(reviews)) {
+ List<ReadableProductReview> revs = new ArrayList<ReadableProductReview>();
+ ReadableProductReviewPopulator reviewPopulator = new ReadableProductReviewPopulator();
+ for(ProductReview review : reviews) {
+ ReadableProductReview rev = new ReadableProductReview();
+ reviewPopulator.populate(review, rev, store, language);
+ revs.add(rev);
+ }
+ model.addAttribute("reviews", revs);
+ }
+
+ List<Attribute> attributesList = null;
+ if(readOnlyAttributes!=null) {
+ attributesList = new ArrayList<Attribute>(readOnlyAttributes.values());
+ }
+
+ List<Attribute> optionsList = null;
+ if(selectableOptions!=null) {
+ optionsList = new ArrayList<Attribute>(selectableOptions.values());
+ }
+
+ model.addAttribute("attributes", attributesList);
+ model.addAttribute("options", optionsList);
+
+ model.addAttribute("product", productProxy);
+
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Product.product).append(".").append(store.getStoreTemplate());
+
+ return template.toString();
+ }
+
+ @RequestMapping(value={"/{productId}/calculatePrice.html"}, method=RequestMethod.POST)
+ public @ResponseBody
+ ReadableProductPrice calculatePrice(@RequestParam(value="attributeIds[]") Long[] attributeIds, @PathVariable final Long productId, final HttpServletRequest request, final HttpServletResponse response, final Locale locale) throws Exception {
+
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+
+ Product product = productService.getById(productId);
+
+ @SuppressWarnings("unchecked")
+ List<Long> ids = new ArrayList<Long>(Arrays.asList(attributeIds));
+ List<ProductAttribute> attributes = productAttributeService.getByAttributeIds(store, ids);
+
+ for(ProductAttribute attribute : attributes) {
+ if(attribute.getProduct().getId().longValue()!=productId.longValue()) {
+ return null;
+ }
+ }
+
+ FinalPrice price = pricingService.calculateProductPrice(product, attributes);
+ ReadableProductPrice readablePrice = new ReadableProductPrice();
+ ReadableProductPricePopulator populator = new ReadableProductPricePopulator();
+ populator.setPricingService(pricingService);
+ populator.populate(price, readablePrice, store, language);
+ return readablePrice;
+
+ }
+
+ private Attribute createAttribute(ProductAttribute productAttribute, Language language) {
+
+ Attribute attribute = new Attribute();
+ attribute.setId(productAttribute.getProductOption().getId());//attribute of the option
+ attribute.setType(productAttribute.getProductOption().getProductOptionType());
+ List<ProductOptionDescription> descriptions = productAttribute.getProductOption().getDescriptionsSettoList();
+ ProductOptionDescription description = null;
+ if(descriptions!=null && descriptions.size()>0) {
+ description = descriptions.get(0);
+ if(descriptions.size()>1) {
+ for(ProductOptionDescription optionDescription : descriptions) {
+ if(optionDescription.getLanguage().getId().intValue()==language.getId().intValue()) {
+ description = optionDescription;
+ break;
+ }
+ }
+ }
+ }
+
+ if(description==null) {
+ return null;
+ }
+
+ attribute.setType(productAttribute.getProductOption().getProductOptionType());
+ attribute.setLanguage(language.getCode());
+ attribute.setName(description.getName());
+ attribute.setCode(productAttribute.getProductOption().getCode());
+
+ return attribute;
+
+ }
+
+ private List<ReadableProduct> relatedItems(MerchantStore store, Product product, Language language) throws Exception {
+
+
+ ReadableProductPopulator populator = new ReadableProductPopulator();
+ populator.setPricingService(pricingService);
+
+ List<ProductRelationship> relatedItems = productRelationshipService.getByType(store, product, ProductRelationshipType.RELATED_ITEM);
+ if(relatedItems!=null && relatedItems.size()>0) {
+ List<ReadableProduct> items = new ArrayList<ReadableProduct>();
+ for(ProductRelationship relationship : relatedItems) {
+ Product relatedProduct = relationship.getRelatedProduct();
+ ReadableProduct proxyProduct = populator.populate(relatedProduct, new ReadableProduct(), store, language);
+ items.add(proxyProduct);
+ }
+ return items;
+ }
+
+ return null;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/search/SearchController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/search/SearchController.java
new file mode 100644
index 0000000..c414fce
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/search/SearchController.java
@@ -0,0 +1,285 @@
+package com.salesmanager.web.shop.controller.search;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.ProductCriteria;
+import com.salesmanager.core.business.catalog.product.model.ProductList;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.merchant.service.MerchantStoreService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.language.service.LanguageService;
+import com.salesmanager.core.business.search.model.IndexProduct;
+import com.salesmanager.core.business.search.model.SearchEntry;
+import com.salesmanager.core.business.search.model.SearchFacet;
+import com.salesmanager.core.business.search.model.SearchKeywords;
+import com.salesmanager.core.business.search.model.SearchResponse;
+import com.salesmanager.core.business.search.service.SearchService;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.catalog.SearchProductList;
+import com.salesmanager.web.entity.catalog.category.ReadableCategory;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.populator.catalog.ReadableCategoryPopulator;
+import com.salesmanager.web.populator.catalog.ReadableProductPopulator;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.model.search.AutoCompleteRequest;
+
+@Controller
+public class SearchController {
+
+ @Autowired
+ private MerchantStoreService merchantStoreService;
+
+ @Autowired
+ private LanguageService languageService;
+
+ @Autowired
+ private SearchService searchService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private CategoryService categoryService;
+
+ @Autowired
+ private PricingService pricingService;
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(SearchController.class);
+
+ private final static int AUTOCOMPLETE_ENTRIES_COUNT = 15;
+ private final static String CATEGORY_FACET_NAME = "categories";
+ private final static String MANUFACTURER_FACET_NAME = "manufacturer";
+
+
+ /**
+ * Retrieves a list of keywords for a given series of character typed by the end user
+ * This is used for auto complete on search input field
+ * @param json
+ * @param store
+ * @param language
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/services/public/search/{store}/{language}/autocomplete.html")
+ @ResponseBody
+ public String autocomplete(@RequestParam("q") String query, @PathVariable String store, @PathVariable final String language, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null; //reset for the current request
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);//TODO localized message
+ return null;
+ }
+
+ AutoCompleteRequest req = new AutoCompleteRequest(store,language);
+ /** formatted toJSONString because of te specific field names required in the UI **/
+ SearchKeywords keywords = searchService.searchForKeywords(req.getCollectionName(), req.toJSONString(query), AUTOCOMPLETE_ENTRIES_COUNT);
+ return keywords.toJSONString();
+
+ }
+
+
+ /**
+ * Displays the search result page
+ * @param json
+ * @param store
+ * @param language
+ * @param start
+ * @param max
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/services/public/search/{store}/{language}/{start}/{max}/term.html")
+ @ResponseBody
+ public SearchProductList search(@RequestBody String json, @PathVariable String store, @PathVariable final String language, @PathVariable int start, @PathVariable int max, Model model, HttpServletRequest request, HttpServletResponse response) {
+
+ SearchProductList returnList = new SearchProductList();
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ try {
+
+ Map<String,Language> langs = languageService.getLanguagesMap();
+
+ if(merchantStore!=null) {
+ if(!merchantStore.getCode().equals(store)) {
+ merchantStore = null; //reset for the current request
+ }
+ }
+
+ if(merchantStore== null) {
+ merchantStore = merchantStoreService.getByCode(store);
+ }
+
+ if(merchantStore==null) {
+ LOGGER.error("Merchant store is null for code " + store);
+ response.sendError(503, "Merchant store is null for code " + store);//TODO localized message
+ return null;
+ }
+
+ Language l = langs.get(language);
+ if(l==null) {
+ l = languageService.getByCode(Constants.DEFAULT_LANGUAGE);
+ }
+
+ SearchResponse resp = searchService.search(merchantStore, language, json, max, start);
+
+ List<SearchEntry> entries = resp.getEntries();
+
+ if(!CollectionUtils.isEmpty(entries)) {
+ List<Long> ids = new ArrayList<Long>();
+ for(SearchEntry entry : entries) {
+ IndexProduct indexedProduct = entry.getIndexProduct();
+ Long id = Long.parseLong(indexedProduct.getId());
+
+ //No highlights
+ ids.add(id);
+ }
+
+ ProductCriteria searchCriteria = new ProductCriteria();
+ searchCriteria.setMaxCount(max);
+ searchCriteria.setStartIndex(start);
+ searchCriteria.setProductIds(ids);
+ searchCriteria.setAvailable(true);
+
+ ProductList productList = productService.listByStore(merchantStore, l, searchCriteria);
+
+ ReadableProductPopulator populator = new ReadableProductPopulator();
+ populator.setPricingService(pricingService);
+
+ for(Product product : productList.getProducts()) {
+ //create new proxy product
+ ReadableProduct p = populator.populate(product, new ReadableProduct(), merchantStore, l);
+
+ //com.salesmanager.web.entity.catalog.Product p = catalogUtils.buildProxyProduct(product,merchantStore,LocaleUtils.getLocale(l));
+ returnList.getProducts().add(p);
+
+ }
+ returnList.setProductCount(productList.getProducts().size());
+ }
+
+ //Facets
+ Map<String,List<SearchFacet>> facets = resp.getFacets();
+ List<SearchFacet> categoriesFacets = null;
+ List<SearchFacet> manufacturersFacets = null;
+ if(facets!=null) {
+ for(String key : facets.keySet()) {
+ //supports category and manufacturer
+ if(CATEGORY_FACET_NAME.equals(key)) {
+ categoriesFacets = facets.get(key);
+ }
+
+ if(MANUFACTURER_FACET_NAME.equals(key)) {
+ manufacturersFacets = facets.get(key);
+ }
+ }
+
+
+ if(categoriesFacets!=null) {
+ List<String> categoryCodes = new ArrayList<String>();
+ Map<String,Long> productCategoryCount = new HashMap<String,Long>();
+ for(SearchFacet facet : categoriesFacets) {
+ categoryCodes.add(facet.getName());
+ productCategoryCount.put(facet.getKey(), facet.getCount());
+ }
+
+ List<Category> categories = categoryService.listByCodes(merchantStore, categoryCodes, l);
+ List<ReadableCategory> categoryProxies = new ArrayList<ReadableCategory>();
+ ReadableCategoryPopulator populator = new ReadableCategoryPopulator();
+
+ for(Category category : categories) {
+ //com.salesmanager.web.entity.catalog.Category categoryProxy = catalogUtils.buildProxyCategory(category, merchantStore, LocaleUtils.getLocale(l));
+ ReadableCategory categoryProxy = populator.populate(category, new ReadableCategory(), merchantStore, l);
+ Long total = productCategoryCount.get(categoryProxy.getCode());
+ if(total!=null) {
+ categoryProxy.setProductCount(total.intValue());
+ }
+ categoryProxies.add(categoryProxy);
+ }
+ returnList.setCategoryFacets(categoryProxies);
+ }
+
+ //todo manufacturer facets
+ if(manufacturersFacets!=null) {
+
+ }
+
+
+ }
+ } catch (Exception e) {
+ LOGGER.error("Exception occured while querying " + json,e);
+ }
+
+
+
+ return returnList;
+
+ }
+
+ /**
+ * Displays the search page after a search query post
+ * @param query
+ * @param model
+ * @param request
+ * @param response
+ * @param locale
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value={"/shop/search/search.html"}, method=RequestMethod.POST)
+ public String displaySearch(@RequestParam("q") String query, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ model.addAttribute("q",query);
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Search.search).append(".").append(store.getStoreTemplate());
+ return template.toString();
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/facade/ShoppingCartFacade.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/facade/ShoppingCartFacade.java
new file mode 100644
index 0000000..7fab834
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/facade/ShoppingCartFacade.java
@@ -0,0 +1,48 @@
+/**
+ *
+ */
+package com.salesmanager.web.shop.controller.shoppingCart.facade;
+
+import java.util.List;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCart;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartItem;
+
+/**
+ * </p>Shopping cart Facade which provide abstraction layer between
+ * SM core module and Controller.
+ * Only Data Object will be exposed to controller by hiding model
+ * object from view.</p>
+ * @author Umesh Awasthi
+ * @version 1.2
+ * @since1.2
+ *
+ */
+
+
+public interface ShoppingCartFacade {
+
+ public ShoppingCartData addItemsToShoppingCart(ShoppingCartData shoppingCart,final ShoppingCartItem item, final MerchantStore store,final Language language,final Customer customer) throws Exception;
+ public ShoppingCart createCartModel(final String shoppingCartCode, final MerchantStore store,final Customer customer) throws Exception;
+ /**
+ * Method responsible for getting shopping cart from
+ * either session or from underlying DB.
+ */
+ public ShoppingCartData getShoppingCartData(final Customer customer,final MerchantStore store,final String shoppingCartId) throws Exception;
+ public ShoppingCartData getShoppingCartData(final ShoppingCart shoppingCart) throws Exception;
+ public ShoppingCartData getShoppingCartData(String code, MerchantStore store) throws Exception;
+ public ShoppingCartData removeCartItem(final Long itemID, final String cartId,final MerchantStore store,final Language language ) throws Exception;
+ public ShoppingCartData updateCartItem(final Long itemID, final String cartId, final long quantity,final MerchantStore store,Language language ) throws Exception;
+ public void deleteShoppingCart(final Long id, final MerchantStore store) throws Exception;
+ ShoppingCartData updateCartItems(List<ShoppingCartItem> shoppingCartItems,
+ MerchantStore store, Language language) throws Exception;
+ public ShoppingCart getShoppingCartModel(final String shoppingCartCode, MerchantStore store) throws Exception;
+ public ShoppingCart getShoppingCartModel(final Customer customer, MerchantStore store) throws Exception;
+ void deleteShoppingCart(String code, MerchantStore store) throws Exception;
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/facade/ShoppingCartFacadeImpl.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/facade/ShoppingCartFacadeImpl.java
new file mode 100644
index 0000000..eed6be6
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/facade/ShoppingCartFacadeImpl.java
@@ -0,0 +1,513 @@
+/**
+ *
+ */
+package com.salesmanager.web.shop.controller.shoppingCart.facade;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.persistence.NoResultException;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Validate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductAttribute;
+import com.salesmanager.core.business.catalog.product.model.price.FinalPrice;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.generic.exception.ServiceException;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shoppingcart.model.ShoppingCart;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartCalculationService;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.core.utils.ProductPriceUtils;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.order.CartModificationException;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartAttribute;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartItem;
+import com.salesmanager.web.populator.shoppingCart.ShoppingCartDataPopulator;
+
+/**
+ * @author Umesh Awasthi
+ * @version 1.2
+ * @since 1.2
+ */
+@Service( value = "shoppingCartFacade" )
+public class ShoppingCartFacadeImpl
+ implements ShoppingCartFacade
+{
+
+
+ private static final Logger LOG = LoggerFactory.getLogger(ShoppingCartFacadeImpl.class);
+
+ @Autowired
+ private ShoppingCartService shoppingCartService;
+
+ @Autowired
+ ShoppingCartCalculationService shoppingCartCalculationService;
+
+ @Autowired
+ private ProductPriceUtils productPriceUtils;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private ProductAttributeService productAttributeService;
+
+ public void deleteShoppingCart(final Long id, final MerchantStore store) throws Exception {
+ ShoppingCart cart = shoppingCartService.getById(id, store);
+ if(cart!=null) {
+ shoppingCartService.deleteCart(cart);
+ }
+ }
+
+ @Override
+ public void deleteShoppingCart(final String code, final MerchantStore store) throws Exception {
+ ShoppingCart cart = shoppingCartService.getByCode(code, store);
+ if(cart!=null) {
+ shoppingCartService.deleteCart(cart);
+ }
+ }
+
+ @Override
+ public ShoppingCartData addItemsToShoppingCart( final ShoppingCartData shoppingCartData,
+ final ShoppingCartItem item, final MerchantStore store, final Language language,final Customer customer )
+ throws Exception
+ {
+
+ ShoppingCart cartModel = null;
+ if ( !StringUtils.isBlank( item.getCode() ) )
+ {
+ // get it from the db
+ cartModel = getShoppingCartModel( item.getCode(), store );
+ if ( cartModel == null )
+ {
+ cartModel = createCartModel( shoppingCartData.getCode(), store,customer );
+ }
+
+ }
+
+ if ( cartModel == null )
+ {
+
+ final String shoppingCartCode =
+ StringUtils.isNotBlank( shoppingCartData.getCode() ) ? shoppingCartData.getCode() : null;
+ cartModel = createCartModel( shoppingCartCode, store,customer );
+
+ }
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem shoppingCartItem =
+ createCartItem( cartModel, item, store );
+
+ boolean duplicateFound = false;
+ if(CollectionUtils.isEmpty(item.getShoppingCartAttributes())) {//increment quantity
+ //get duplicate item from the cart
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem> cartModelItems = cartModel.getLineItems();
+ for(com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem cartItem : cartModelItems) {
+ if(cartItem.getProduct().getId().longValue()==shoppingCartItem.getProduct().getId().longValue()) {
+ if(CollectionUtils.isEmpty(cartItem.getAttributes())) {
+ if(!duplicateFound) {
+ if(!shoppingCartItem.isProductVirtual()) {
+ cartItem.setQuantity(cartItem.getQuantity() + shoppingCartItem.getQuantity());
+ }
+ duplicateFound = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if(!duplicateFound) {
+ cartModel.getLineItems().add( shoppingCartItem );
+ }
+
+ /** Update cart in database with line items **/
+ shoppingCartService.saveOrUpdate( cartModel );
+
+ //refresh cart
+ cartModel = shoppingCartService.getById(cartModel.getId(), store);
+
+ shoppingCartCalculationService.calculate( cartModel, store, language );
+
+ ShoppingCartDataPopulator shoppingCartDataPopulator = new ShoppingCartDataPopulator();
+ shoppingCartDataPopulator.setShoppingCartCalculationService( shoppingCartCalculationService );
+ shoppingCartDataPopulator.setPricingService( pricingService );
+
+ return shoppingCartDataPopulator.populate( cartModel, store, language );
+ }
+
+ private com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem createCartItem( final ShoppingCart cartModel,
+ final ShoppingCartItem shoppingCartItem,
+ final MerchantStore store )
+ throws Exception
+ {
+
+ Product product = productService.getById( shoppingCartItem.getProductId() );
+
+ if ( product == null )
+ {
+ throw new Exception( "Item with id " + shoppingCartItem.getProductId() + " does not exist" );
+ }
+
+ if ( product.getMerchantStore().getId().intValue() != store.getId().intValue() )
+ {
+ throw new Exception( "Item with id " + shoppingCartItem.getProductId() + " does not belong to merchant "
+ + store.getId() );
+ }
+
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem item =
+ shoppingCartService.populateShoppingCartItem( product );
+
+ item.setQuantity( shoppingCartItem.getQuantity() );
+ item.setShoppingCart( cartModel );
+
+ // attributes
+ List<ShoppingCartAttribute> cartAttributes = shoppingCartItem.getShoppingCartAttributes();
+ if ( !CollectionUtils.isEmpty( cartAttributes ) )
+ {
+ for ( ShoppingCartAttribute attribute : cartAttributes )
+ {
+ ProductAttribute productAttribute = productAttributeService.getById( attribute.getAttributeId() );
+ if ( productAttribute != null
+ && productAttribute.getProduct().getId().longValue() == product.getId().longValue() )
+ {
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem attributeItem =
+ new com.salesmanager.core.business.shoppingcart.model.ShoppingCartAttributeItem( item,
+ productAttribute );
+
+ item.addAttributes( attributeItem );
+ }
+ }
+ }
+ return item;
+
+ }
+
+ @Override
+ public ShoppingCart createCartModel( final String shoppingCartCode, final MerchantStore store,final Customer customer )
+ throws Exception
+ {
+ final Long CustomerId = customer != null ? customer.getId() : null;
+ ShoppingCart cartModel = new ShoppingCart();
+ if ( StringUtils.isNotBlank( shoppingCartCode ) )
+ {
+ cartModel.setShoppingCartCode( shoppingCartCode );
+ }
+ else
+ {
+ cartModel.setShoppingCartCode( UUID.randomUUID().toString().replaceAll( "-", "" ) );
+ }
+
+ cartModel.setMerchantStore( store );
+ if ( CustomerId != null )
+ {
+ cartModel.setCustomerId( CustomerId );
+ ;
+ }
+ shoppingCartService.create( cartModel );
+ return cartModel;
+ }
+
+
+
+
+
+ private com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem getEntryToUpdate( final long entryId,
+ final ShoppingCart cartModel )
+ {
+ if ( CollectionUtils.isNotEmpty( cartModel.getLineItems() ) )
+ {
+ for ( com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem shoppingCartItem : cartModel.getLineItems() )
+ {
+ if ( shoppingCartItem.getId().longValue() == entryId )
+ {
+ LOG.info( "Found line item for given entry id: " + entryId );
+ return shoppingCartItem;
+
+ }
+ }
+ }
+ LOG.info( "Unable to find any entry for given Id: " + entryId );
+ return null;
+ }
+
+ private Object getKeyValue( final String key )
+ {
+ ServletRequestAttributes reqAttr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
+ return reqAttr.getRequest().getAttribute( key );
+ }
+
+ @Override
+ public ShoppingCartData getShoppingCartData( final Customer customer, final MerchantStore store,
+ final String shoppingCartId )
+ throws Exception
+ {
+
+ ShoppingCart cart = null;
+ try
+ {
+ if ( customer != null )
+ {
+ LOG.info( "Reteriving customer shopping cart..." );
+
+ cart = shoppingCartService.getShoppingCart( customer );
+
+ }
+
+ else
+ {
+ if ( StringUtils.isNotBlank( shoppingCartId ) && cart == null )
+ {
+ cart = shoppingCartService.getByCode( shoppingCartId, store );
+ }
+
+ }
+ }
+ catch ( ServiceException ex )
+ {
+ LOG.error( "Error while retriving cart from customer", ex );
+ }
+ catch( NoResultException nre) {
+ //nothing
+ }
+
+ if ( cart == null )
+ {
+ return null;
+ }
+
+ LOG.info( "Cart model found." );
+
+ ShoppingCartDataPopulator shoppingCartDataPopulator = new ShoppingCartDataPopulator();
+ shoppingCartDataPopulator.setShoppingCartCalculationService( shoppingCartCalculationService );
+ shoppingCartDataPopulator.setPricingService( pricingService );
+
+ Language language = (Language) getKeyValue( Constants.LANGUAGE );
+ MerchantStore merchantStore = (MerchantStore) getKeyValue( Constants.MERCHANT_STORE );
+ return shoppingCartDataPopulator.populate( cart, merchantStore, language );
+
+ }
+
+ @Override
+ public ShoppingCartData getShoppingCartData( final ShoppingCart shoppingCartModel )
+ throws Exception
+ {
+
+ ShoppingCartDataPopulator shoppingCartDataPopulator = new ShoppingCartDataPopulator();
+ shoppingCartDataPopulator.setShoppingCartCalculationService( shoppingCartCalculationService );
+ shoppingCartDataPopulator.setPricingService( pricingService );
+ Language language = (Language) getKeyValue( Constants.LANGUAGE );
+ MerchantStore merchantStore = (MerchantStore) getKeyValue( Constants.MERCHANT_STORE );
+ return shoppingCartDataPopulator.populate( shoppingCartModel, merchantStore, language );
+ }
+
+ @Override
+ public ShoppingCartData removeCartItem( final Long itemID, final String cartId ,final MerchantStore store,final Language language )
+ throws Exception
+ {
+ if ( StringUtils.isNotBlank( cartId ) )
+ {
+
+ ShoppingCart cartModel = getCartModel( cartId,store );
+ if ( cartModel != null )
+ {
+ if ( CollectionUtils.isNotEmpty( cartModel.getLineItems() ) )
+ {
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem> shoppingCartItemSet =
+ new HashSet<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem>();
+ for ( com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem shoppingCartItem : cartModel.getLineItems() )
+ {
+ if ( shoppingCartItem.getId().longValue() != itemID.longValue() )
+ {
+ shoppingCartItemSet.add( shoppingCartItem );
+ }
+ }
+ cartModel.setLineItems( shoppingCartItemSet );
+ shoppingCartService.saveOrUpdate( cartModel );
+
+
+
+
+ ShoppingCartDataPopulator shoppingCartDataPopulator = new ShoppingCartDataPopulator();
+ shoppingCartDataPopulator.setShoppingCartCalculationService( shoppingCartCalculationService );
+ shoppingCartDataPopulator.setPricingService( pricingService );
+ return shoppingCartDataPopulator.populate( cartModel, store, language );
+ }
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public ShoppingCartData updateCartItem( final Long itemID, final String cartId, final long newQuantity,final MerchantStore store, final Language language )
+ throws Exception
+ {
+ if ( newQuantity < 1 )
+ {
+ throw new CartModificationException( "Quantity must not be less than one" );
+ }
+ if ( StringUtils.isNotBlank( cartId ) )
+ {
+ ShoppingCart cartModel = getCartModel( cartId,store );
+ if ( cartModel != null )
+ {
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem entryToUpdate =
+ getEntryToUpdate( itemID.longValue(), cartModel );
+
+ if ( entryToUpdate == null )
+ {
+ throw new CartModificationException( "Unknown entry number." );
+ }
+
+ entryToUpdate.getProduct();
+
+ LOG.info( "Updating cart entry quantity to" + newQuantity );
+ entryToUpdate.setQuantity( (int) newQuantity );
+ List<ProductAttribute> productAttributes = new ArrayList<ProductAttribute>();
+ productAttributes.addAll( entryToUpdate.getProduct().getAttributes() );
+ final FinalPrice finalPrice =
+ productPriceUtils.getFinalProductPrice( entryToUpdate.getProduct(), productAttributes );
+ entryToUpdate.setItemPrice( finalPrice.getFinalPrice() );
+ shoppingCartService.saveOrUpdate( cartModel );
+
+ LOG.info( "Cart entry updated with desired quantity" );
+ ShoppingCartDataPopulator shoppingCartDataPopulator = new ShoppingCartDataPopulator();
+ shoppingCartDataPopulator.setShoppingCartCalculationService( shoppingCartCalculationService );
+ shoppingCartDataPopulator.setPricingService( pricingService );
+ return shoppingCartDataPopulator.populate( cartModel, store, language );
+
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public ShoppingCartData updateCartItems( final List<ShoppingCartItem> shoppingCartItems, final MerchantStore store, final Language language )
+ throws Exception
+ {
+
+ Validate.notEmpty(shoppingCartItems,"shoppingCartItems null or empty");
+ ShoppingCart cartModel = null;
+ Set<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem> cartItems = new HashSet<com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem>();
+ for(ShoppingCartItem item : shoppingCartItems) {
+
+ if(item.getQuantity()<1) {
+ throw new CartModificationException( "Quantity must not be less than one" );
+ }
+
+ if(cartModel==null) {
+ cartModel = getCartModel( item.getCode(), store );
+ }
+
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCartItem entryToUpdate =
+ getEntryToUpdate( item.getId(), cartModel );
+
+ if ( entryToUpdate == null ) {
+ throw new CartModificationException( "Unknown entry number." );
+ }
+
+ entryToUpdate.getProduct();
+
+ LOG.info( "Updating cart entry quantity to" + item.getQuantity() );
+ entryToUpdate.setQuantity( (int) item.getQuantity() );
+
+ List<ProductAttribute> productAttributes = new ArrayList<ProductAttribute>();
+ productAttributes.addAll( entryToUpdate.getProduct().getAttributes() );
+
+ final FinalPrice finalPrice =
+ productPriceUtils.getFinalProductPrice( entryToUpdate.getProduct(), productAttributes );
+ entryToUpdate.setItemPrice( finalPrice.getFinalPrice() );
+
+
+ cartItems.add(entryToUpdate);
+
+
+
+
+ }
+
+ cartModel.setLineItems(cartItems);
+ shoppingCartService.saveOrUpdate( cartModel );
+ LOG.info( "Cart entry updated with desired quantity" );
+ ShoppingCartDataPopulator shoppingCartDataPopulator = new ShoppingCartDataPopulator();
+ shoppingCartDataPopulator.setShoppingCartCalculationService( shoppingCartCalculationService );
+ shoppingCartDataPopulator.setPricingService( pricingService );
+ return shoppingCartDataPopulator.populate( cartModel, store, language );
+
+ }
+
+
+ private ShoppingCart getCartModel( final String cartId,final MerchantStore store )
+ {
+ if ( StringUtils.isNotBlank( cartId ) )
+ {
+ try
+ {
+ return shoppingCartService.getByCode( cartId, store );
+ }
+ catch ( ServiceException e )
+ {
+ LOG.error( "unable to find any cart asscoiated with this Id: " + cartId );
+ LOG.error( "error while fetching cart model...", e );
+ return null;
+ }
+ catch( NoResultException nre) {
+ //nothing
+ }
+
+ }
+ return null;
+ }
+
+ @Override
+ public ShoppingCartData getShoppingCartData(String code, MerchantStore store) {
+ try {
+ ShoppingCart cartModel = shoppingCartService.getByCode( code, store );
+ if(cartModel!=null) {
+ ShoppingCartData cart = getShoppingCartData(cartModel);
+ return cart;
+ }
+ } catch( NoResultException nre) {
+ //nothing
+
+ } catch(Exception e) {
+ LOG.error("Cannot retrieve cart code " + code,e);
+ }
+
+
+ return null;
+ }
+
+ @Override
+ public ShoppingCart getShoppingCartModel(String shoppingCartCode,
+ MerchantStore store) throws Exception {
+ return shoppingCartService.getByCode( shoppingCartCode, store );
+ }
+
+ @Override
+ public ShoppingCart getShoppingCartModel(Customer customer,
+ MerchantStore store) throws Exception {
+ return shoppingCartService.getByCustomer(customer);
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/MiniCartController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/MiniCartController.java
new file mode 100644
index 0000000..23c272b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/MiniCartController.java
@@ -0,0 +1,92 @@
+/**
+ *
+ */
+package com.salesmanager.web.shop.controller.shoppingCart;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.shoppingCart.facade.ShoppingCartFacade;
+
+/**
+ * @author Umesh A
+ *
+ */
+@Controller
+@RequestMapping("/shop/cart")
+public class MiniCartController extends AbstractController{
+
+ private static final Logger LOG = LoggerFactory.getLogger(MiniCartController.class);
+
+ @Autowired
+ private ShoppingCartFacade shoppingCartFacade;
+
+
+
+
+ @RequestMapping(value={"/displayMiniCartByCode.html"}, method = { RequestMethod.GET, RequestMethod.POST })
+ public @ResponseBody ShoppingCartData displayMiniCart(final String shoppingCartCode, HttpServletRequest request, Model model){
+
+ try {
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Customer customer = getSessionAttribute( Constants.CUSTOMER, request );
+ ShoppingCartData cart = shoppingCartFacade.getShoppingCartData(customer,merchantStore,shoppingCartCode);
+ if(cart!=null) {
+ request.getSession().setAttribute(Constants.SHOPPING_CART, cart.getCode());
+ }
+ if(cart==null) {
+ request.getSession().removeAttribute(Constants.SHOPPING_CART);//make sure there is no cart here
+ }
+ return cart;
+
+
+ } catch(Exception e) {
+ LOG.error("Error while getting the shopping cart",e);
+ }
+
+ return null;
+
+ }
+
+
+ @RequestMapping(value={"/removeMiniShoppingCartItem.html"}, method = { RequestMethod.GET, RequestMethod.POST })
+ public @ResponseBody ShoppingCartData removeShoppingCartItem(Long lineItemId, final String shoppingCartCode, HttpServletRequest request, Model model) throws Exception {
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ ShoppingCartData cart = shoppingCartFacade.getShoppingCartData(null, merchantStore, shoppingCartCode);
+ if(cart==null) {
+ return null;
+ }
+ ShoppingCartData shoppingCartData=shoppingCartFacade.removeCartItem(lineItemId, cart.getCode(), merchantStore,language);
+
+
+ if(CollectionUtils.isEmpty(shoppingCartData.getShoppingCartItems())) {
+ shoppingCartFacade.deleteShoppingCart(shoppingCartData.getId(), merchantStore);
+ request.getSession().removeAttribute(Constants.SHOPPING_CART);
+ return null;
+ }
+
+
+ request.getSession().setAttribute(Constants.SHOPPING_CART, cart.getCode());
+
+ LOG.debug("removed item" + lineItemId + "from cart");
+ return shoppingCartData;
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/ShoppingCartController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/ShoppingCartController.java
new file mode 100644
index 0000000..6e29849
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/shoppingCart/ShoppingCartController.java
@@ -0,0 +1,400 @@
+package com.salesmanager.web.shop.controller.shoppingCart;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.UUID;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.catalog.product.service.attribute.ProductAttributeService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.service.OrderService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.shoppingcart.service.ShoppingCartService;
+import com.salesmanager.core.utils.ProductPriceUtils;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.shop.PageInformation;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartData;
+import com.salesmanager.web.entity.shoppingcart.ShoppingCartItem;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.shop.controller.shoppingCart.facade.ShoppingCartFacade;
+import com.salesmanager.web.utils.LabelUtils;
+
+import edu.emory.mathcs.backport.java.util.Arrays;
+
+
+/**
+ * A mini shopping cart is available on the public shopping section from the upper menu
+ * Landing page, Category page (list of products) and Product details page contains a form
+ * that let the user add an item to the cart, see the quantity of items, total price of items
+ * in the cart and remove items
+ *
+ * Add To Cart
+ * ---------------
+ * The add to cart is 100% driven by javascript / ajax. The code is available in webapp\resources\js\functions.js
+ *
+ * <!-- Simple add to cart html example ${id} is the product id -->
+ * <form id="input-${id}">
+ * <input type="text" class="input-small" id="quantity-productId-${id}" placeholder="1" value="1">
+ * <a href="#" class="addToCart" productId="${id}">Add to cart</a>
+ * </form>
+ *
+ * The javascript function creates com.salesmanager.web.entity.shoppingcart.ShoppingCartItem and ShoppingCartAttribute based on user selection
+ * The javascript looks in the cookie if a shopping cart code exists ex $.cookie( 'cart' ); // requires jQuery-cookie
+ * The javascript posts the ShoppingCartItem and the shopping cart code if present to /shop/addShoppingCartItem.html
+ *
+ * @see
+ *
+ * The javascript re-creates the shopping cart div item (div id shoppingcart) (see webapp\pages\shop\templates\bootstrap\sections\header.jsp)
+ * The javascript set the shopping cart code in the cookie
+ *
+ * Display a page
+ * ----------------
+ *
+ * When a page is displayed from the shopping section, the shopping cart has to be displayed
+ * 4 paths 1) No shopping cart 2) A shopping cart exist in the session 3) A shopping cart code exists in the cookie 4) A customer is logeed in and a shopping cart exists in the database
+ *
+ * 1) No shopping cart, nothing to do !
+ *
+ * 2) StoreFilter will tak care of a ShoppingCart present in the HttpSession
+ *
+ * 3) Once a page is displayed and no cart returned from the controller, a javascript looks on load in the cookie to see if a shopping cart code is present
+ * If a code is present, by ajax the cart is loaded and displayed
+ *
+ * 4) No cart in the session but the customer logs in, the system looks in the DB if a shopping cart exists, if so it is putted in the session so the StoreFilter can manage it and putted in the request
+ *
+ * @author Carl Samson
+ * @author Umesh
+ */
+
+@Controller
+@RequestMapping("/shop/cart/")
+public class ShoppingCartController extends AbstractController {
+
+ private static final Logger LOG = LoggerFactory.getLogger(ShoppingCartController.class);
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ProductAttributeService productAttributeService;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private ShoppingCartService shoppingCartService;
+
+ @Autowired
+ private ProductPriceUtils productPriceUtils;
+
+ @Autowired
+ private ShoppingCartFacade shoppingCartFacade;
+
+ @Autowired
+ private LabelUtils messages;
+
+
+
+ /**
+ * Add an item to the ShoppingCart (AJAX exposed method)
+ * @param id
+ * @param quantity
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value={"/addShoppingCartItem.html"}, method=RequestMethod.POST)
+ public @ResponseBody
+ ShoppingCartData addShoppingCartItem(@RequestBody final ShoppingCartItem item, final HttpServletRequest request, final HttpServletResponse response, final Locale locale) throws Exception {
+
+
+ ShoppingCartData shoppingCart=null;
+
+
+
+ //Look in the HttpSession to see if a customer is logged in
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+ Customer customer = getSessionAttribute( Constants.CUSTOMER, request );
+
+
+ if(customer != null) {
+ com.salesmanager.core.business.shoppingcart.model.ShoppingCart customerCart = shoppingCartService.getByCustomer(customer);
+ if(customerCart!=null) {
+ shoppingCart = shoppingCartFacade.getShoppingCartData( customerCart);
+
+
+ //TODO if shoppingCart != null ?? merge
+ //TODO maybe they have the same code
+ //TODO what if codes are different (-- merge carts, keep the latest one, delete the oldest, switch codes --)
+ }
+ }
+
+
+ if(shoppingCart==null && !StringUtils.isBlank(item.getCode())) {
+ shoppingCart = shoppingCartFacade.getShoppingCartData(item.getCode(), store);
+ }
+
+
+ //if shoppingCart is null create a new one
+ if(shoppingCart==null) {
+ shoppingCart = new ShoppingCartData();
+ String code = UUID.randomUUID().toString().replaceAll("-", "");
+ shoppingCart.setCode(code);
+ }
+
+ shoppingCart=shoppingCartFacade.addItemsToShoppingCart( shoppingCart, item, store,language,customer );
+ request.getSession().setAttribute(Constants.SHOPPING_CART, shoppingCart.getCode());
+
+
+ /******************************************************/
+ //TODO validate all of this
+
+ //if a customer exists in http session
+ //if a cart does not exist in httpsession
+ //get cart from database
+ //if a cart exist in the database add the item to the cart and put cart in httpsession and save to the database
+ //else a cart does not exist in the database, create a new one, set the customer id, set the cart in the httpsession
+ //else a cart exist in the httpsession, add item to httpsession cart and save to the database
+ //else no customer in httpsession
+ //if a cart does not exist in httpsession
+ //create a new one, set the cart in the httpsession
+ //else a cart exist in the httpsession, add item to httpsession cart and save to the database
+
+
+ /**
+ * my concern is with the following :
+ * what if you add item in the shopping cart as an anonymous user
+ * later on you log in to process with checkout but the system retrieves a previous shopping cart saved in the database for that customer
+ * in that case we need to synchronize both carts and the original one (the one with the customer id) supercedes the current cart in session
+ * the system will have to deal with the original one and remove the latest
+ */
+
+
+ //**more implementation details
+ //calculate the price of each item by using ProductPriceUtils in sm-core
+ //for each product in the shopping cart get the product
+ //invoke productPriceUtils.getFinalProductPrice
+ //from FinalPrice get final price which is the calculated price given attributes and discounts
+ //set each item price in ShoppingCartItem.price
+
+ //add new item shoppingCartService.create
+
+ //create JSON representation of the shopping cart
+
+ //return the JSON structure in AjaxResponse
+
+
+
+ //AjaxResponse resp = new AjaxResponse();
+ //resp.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+ return shoppingCart;
+
+ }
+
+
+
+ /**
+ * Retrieves a Shopping cart from the database (regular shopping cart)
+ * @param model
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping( value = { "/shoppingCart.html" }, method = RequestMethod.GET )
+ public String displayShoppingCart( final Model model, final HttpServletRequest request, final HttpServletResponse response, final Locale locale )
+ throws Exception
+ {
+
+ LOG.info( "Starting to calculate shopping cart..." );
+
+
+ //meta information
+ PageInformation pageInformation = new PageInformation();
+ pageInformation.setPageTitle(messages.getMessage("label.cart.placeorder", locale));
+ request.setAttribute(Constants.REQUEST_PAGE_INFORMATION, pageInformation);
+
+
+ MerchantStore store = (MerchantStore) request.getAttribute(Constants.MERCHANT_STORE);
+ Customer customer = getSessionAttribute( Constants.CUSTOMER, request );
+
+ /** there must be a cart in the session **/
+ String cartCode = (String)request.getSession().getAttribute(Constants.SHOPPING_CART);
+
+ if(StringUtils.isBlank(cartCode)) {
+ //display empty cart
+ StringBuilder template =
+ new StringBuilder().append( ControllerConstants.Tiles.ShoppingCart.shoppingCart ).append( "." ).append( store.getStoreTemplate() );
+ return template.toString();
+ }
+
+ ShoppingCartData shoppingCart = shoppingCartFacade.getShoppingCartData(customer, store, cartCode);
+ model.addAttribute( "cart", shoppingCart );
+
+ /** template **/
+ StringBuilder template =
+ new StringBuilder().append( ControllerConstants.Tiles.ShoppingCart.shoppingCart ).append( "." ).append( store.getStoreTemplate() );
+ return template.toString();
+
+ }
+
+
+ @RequestMapping(value={"/shoppingCartByCode.html"}, method = { RequestMethod.GET })
+ public String displayShoppingCart(@ModelAttribute String shoppingCartCode, final Model model, HttpServletRequest request, final Locale locale) throws Exception{
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Customer customer = getSessionAttribute( Constants.CUSTOMER, request );
+
+ if(StringUtils.isBlank(shoppingCartCode)) {
+ return "redirect:/shop";
+ }
+
+ ShoppingCartData cart = shoppingCartFacade.getShoppingCartData(customer,merchantStore,shoppingCartCode);
+ if(cart==null) {
+ return "redirect:/shop";
+ }
+
+
+ //meta information
+ PageInformation pageInformation = new PageInformation();
+ pageInformation.setPageTitle(messages.getMessage("label.cart.placeorder", locale));
+ request.setAttribute(Constants.REQUEST_PAGE_INFORMATION, pageInformation);
+ request.getSession().setAttribute(Constants.SHOPPING_CART, cart.getCode());
+ model.addAttribute("cart", cart);
+
+ /** template **/
+ StringBuilder template =
+ new StringBuilder().append( ControllerConstants.Tiles.ShoppingCart.shoppingCart ).append( "." ).append( merchantStore.getStoreTemplate() );
+ return template.toString();
+
+
+
+ }
+
+
+ /**
+ * Removes an item from the Shopping Cart (AJAX exposed method)
+ * @param id
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value={"/removeShoppingCartItem.html"}, method = { RequestMethod.GET, RequestMethod.POST })
+
+ String removeShoppingCartItem(final Long lineItemId, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
+
+
+
+ //Looks in the HttpSession to see if a customer is logged in
+
+ //get any shopping cart for this user
+
+ //** need to check if the item has property, similar items may exist but with different properties
+ //String attributes = request.getParameter("attribute");//attributes id are sent as 1|2|5|
+ //this will help with hte removal of the appropriate item
+
+ //remove the item shoppingCartService.create
+
+ //create JSON representation of the shopping cart
+
+ //return the JSON structure in AjaxResponse
+
+ //store the shopping cart in the http session
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+ Customer customer = getSessionAttribute( Constants.CUSTOMER, request );
+
+ /** there must be a cart in the session **/
+ String cartCode = (String)request.getSession().getAttribute(Constants.SHOPPING_CART);
+
+ if(StringUtils.isBlank(cartCode)) {
+ return "redirect:/shop";
+ }
+
+ ShoppingCartData shoppingCart = shoppingCartFacade.getShoppingCartData(customer, store, cartCode);
+
+ ShoppingCartData shoppingCartData=shoppingCartFacade.removeCartItem(lineItemId, shoppingCart.getCode(),store,language);
+
+
+ if(CollectionUtils.isEmpty(shoppingCartData.getShoppingCartItems())) {
+ shoppingCartFacade.deleteShoppingCart(shoppingCartData.getId(), store);
+ return "redirect:/shop";
+ }
+
+
+
+ return Constants.REDIRECT_PREFIX + "/shop/shoppingCart.html";
+
+
+
+ }
+
+ /**
+ * Update the quantity of an item in the Shopping Cart (AJAX exposed method)
+ * @param id
+ * @param quantity
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value={"/updateShoppingCartItem.html"}, method = { RequestMethod.POST })
+ public @ResponseBody String updateShoppingCartItem( @RequestBody final ShoppingCartItem[] shoppingCartItems, final HttpServletRequest request, final HttpServletResponse response) {
+
+ AjaxResponse ajaxResponse = new AjaxResponse();
+
+
+
+ MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+
+
+ String cartCode = (String)request.getSession().getAttribute(Constants.SHOPPING_CART);
+
+ if(StringUtils.isBlank(cartCode)) {
+ return "redirect:/shop";
+ }
+
+ try {
+ List<ShoppingCartItem> items = Arrays.asList(shoppingCartItems);
+ ShoppingCartData shoppingCart = shoppingCartFacade.updateCartItems(items, store, language);
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ LOG.error("Excption while updating cart" ,e);
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ return ajaxResponse.toJSONString();
+
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/controller/store/ContactController.java b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/store/ContactController.java
new file mode 100644
index 0000000..169232e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/controller/store/ContactController.java
@@ -0,0 +1,162 @@
+package com.salesmanager.web.shop.controller.store;
+
+import java.util.Locale;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.tanesha.recaptcha.ReCaptchaImpl;
+import net.tanesha.recaptcha.ReCaptchaResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.salesmanager.core.business.content.model.Content;
+import com.salesmanager.core.business.content.model.ContentDescription;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.CoreConfiguration;
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.shop.ContactForm;
+import com.salesmanager.web.entity.shop.PageInformation;
+import com.salesmanager.web.shop.controller.AbstractController;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+import com.salesmanager.web.utils.EmailTemplatesUtils;
+import com.salesmanager.web.utils.LabelUtils;
+import com.salesmanager.web.utils.LocaleUtils;
+
+@Controller
+public class ContactController extends AbstractController {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(ContactController.class);
+
+ @Autowired
+ private ContentService contentService;
+
+ @Autowired
+ private CoreConfiguration coreConfiguration;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private EmailTemplatesUtils emailTemplatesUtils;
+
+
+ @RequestMapping("/shop/store/contactus.html")
+ public String displayContact(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ Language language = (Language)request.getAttribute("LANGUAGE");
+
+ ContactForm contact = new ContactForm();
+ model.addAttribute("contact", contact);
+
+ model.addAttribute( "recapatcha_public_key", coreConfiguration.getProperty( Constants.RECAPATCHA_PUBLIC_KEY ) );
+
+ Content content = contentService.getByCode(Constants.CONTENT_CONTACT_US, store, language);
+ ContentDescription contentDescription = null;
+ if(content!=null && content.isVisible()) {
+ contentDescription = content.getDescription();
+ }
+
+ if(contentDescription!=null) {
+
+ //meta information
+ PageInformation pageInformation = new PageInformation();
+ pageInformation.setPageDescription(contentDescription.getMetatagDescription());
+ pageInformation.setPageKeywords(contentDescription.getMetatagKeywords());
+ pageInformation.setPageTitle(contentDescription.getTitle());
+ pageInformation.setPageUrl(contentDescription.getName());
+
+ request.setAttribute(Constants.REQUEST_PAGE_INFORMATION, pageInformation);
+
+ model.addAttribute("content",contentDescription);
+
+ }
+
+
+
+ /** template **/
+ StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Content.contactus).append(".").append(store.getStoreTemplate());
+ return template.toString();
+
+
+ }
+
+
+ @RequestMapping(value={"/shop/store/{storeCode}/contact"}, method=RequestMethod.POST)
+ public @ResponseBody String sendEmail(@ModelAttribute(value="contact") ContactForm contact, BindingResult bindingResult, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
+
+ AjaxResponse ajaxResponse = new AjaxResponse();
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ try {
+
+ if ( StringUtils.isBlank( contact.getCaptchaResponseField() )) {
+ FieldError error = new FieldError("captchaResponseField","captchaResponseField",messages.getMessage("NotEmpty.contact.captchaResponseField", locale));
+ bindingResult.addError(error);
+ ajaxResponse.setErrorString(bindingResult.getAllErrors().get(0).getDefaultMessage());
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return ajaxResponse.toJSONString();
+ }
+
+ ReCaptchaImpl reCaptcha = new ReCaptchaImpl();
+ reCaptcha.setPublicKey( coreConfiguration.getProperty( Constants.RECAPATCHA_PUBLIC_KEY ) );
+ reCaptcha.setPrivateKey( coreConfiguration.getProperty( Constants.RECAPATCHA_PRIVATE_KEY ) );
+
+ if ( StringUtils.isNotBlank( contact.getCaptchaChallengeField() )
+ && StringUtils.isNotBlank( contact.getCaptchaResponseField() ) )
+ {
+ ReCaptchaResponse reCaptchaResponse =
+ reCaptcha.checkAnswer( request.getRemoteAddr(), contact.getCaptchaChallengeField(),
+ contact.getCaptchaResponseField() );
+ if ( !reCaptchaResponse.isValid() )
+ {
+ LOGGER.debug( "Captcha response does not matched" );
+ FieldError error = new FieldError("captchaChallengeField","captchaChallengeField",messages.getMessage("validaion.recaptcha.not.matched", locale));
+ bindingResult.addError(error);
+ }
+
+ }
+
+ if ( bindingResult.hasErrors() )
+ {
+ LOGGER.debug( "found {} validation error while validating in customer registration ",
+ bindingResult.getErrorCount() );
+ ajaxResponse.setErrorString(bindingResult.getAllErrors().get(0).getDefaultMessage());
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ return ajaxResponse.toJSONString();
+
+ }
+
+ emailTemplatesUtils.sendContactEmail(contact, store, LocaleUtils.getLocale(store.getDefaultLanguage()), request.getContextPath());
+
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_SUCCESS);
+ } catch(Exception e) {
+ LOGGER.error("An error occured while trying to send an email",e);
+ ajaxResponse.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+ }
+
+ return ajaxResponse.toJSONString();
+
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/model/catalog/Attribute.java b/sm-shop/src/main/java/com/salesmanager/web/shop/model/catalog/Attribute.java
new file mode 100644
index 0000000..111c1ee
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/model/catalog/Attribute.java
@@ -0,0 +1,57 @@
+package com.salesmanager.web.shop.model.catalog;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.salesmanager.web.entity.ShopEntity;
+
+public class Attribute extends ShopEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String name = null;
+ private String type = null;
+ private String code = null;
+ private List<AttributeValue> values = null;
+ private AttributeValue readOnlyValue = null;
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getType() {
+ return type;
+ }
+ public void setType(String type) {
+ this.type = type;
+ }
+
+
+
+ public void setValues(List<AttributeValue> values) {
+ this.values = values;
+ }
+ public List<AttributeValue> getValues() {
+ return values;
+ }
+ public void setCode(String code) {
+ this.code = code;
+ }
+ public String getCode() {
+ return code;
+ }
+ public void setReadOnlyValue(AttributeValue readOnlyValue) {
+ this.readOnlyValue = readOnlyValue;
+ }
+ public AttributeValue getReadOnlyValue() {
+ return readOnlyValue;
+ }
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/model/catalog/AttributeValue.java b/sm-shop/src/main/java/com/salesmanager/web/shop/model/catalog/AttributeValue.java
new file mode 100644
index 0000000..a8a301f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/model/catalog/AttributeValue.java
@@ -0,0 +1,50 @@
+package com.salesmanager.web.shop.model.catalog;
+
+import java.io.Serializable;
+
+import com.salesmanager.web.entity.ShopEntity;
+
+public class AttributeValue extends ShopEntity implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private String name = null;
+ private String description = null;
+ private boolean defaultAttribute;
+ private String image;
+ private String price;
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public boolean isDefaultAttribute() {
+ return defaultAttribute;
+ }
+ public void setDefaultAttribute(boolean defaultAttribute) {
+ this.defaultAttribute = defaultAttribute;
+ }
+ public String getImage() {
+ return image;
+ }
+ public void setImage(String image) {
+ this.image = image;
+ }
+ public String getPrice() {
+ return price;
+ }
+ public void setPrice(String price) {
+ this.price = price;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/model/filter/QueryFilter.java b/sm-shop/src/main/java/com/salesmanager/web/shop/model/filter/QueryFilter.java
new file mode 100644
index 0000000..5e45500
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/model/filter/QueryFilter.java
@@ -0,0 +1,39 @@
+package com.salesmanager.web.shop.model.filter;
+
+/**
+ * Used in Category and Search to filter display based on other
+ * entities such as Manufacturer
+ * @author Carl Samson
+ *
+ */
+public class QueryFilter {
+
+ /**
+ * used when filtering on an entity code (example property)
+ */
+ private String filterCode;
+ /**
+ * used when filtering on an entity id
+ */
+ private Long filterId;
+ private QueryFilterType filterType;
+ public String getFilterCode() {
+ return filterCode;
+ }
+ public void setFilterCode(String filterCode) {
+ this.filterCode = filterCode;
+ }
+ public Long getFilterId() {
+ return filterId;
+ }
+ public void setFilterId(Long filterId) {
+ this.filterId = filterId;
+ }
+ public QueryFilterType getFilterType() {
+ return filterType;
+ }
+ public void setFilterType(QueryFilterType filterType) {
+ this.filterType = filterType;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/model/filter/QueryFilterType.java b/sm-shop/src/main/java/com/salesmanager/web/shop/model/filter/QueryFilterType.java
new file mode 100644
index 0000000..28161df
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/model/filter/QueryFilterType.java
@@ -0,0 +1,7 @@
+package com.salesmanager.web.shop.model.filter;
+
+public enum QueryFilterType {
+
+ BRAND
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/model/paging/PaginationData.java b/sm-shop/src/main/java/com/salesmanager/web/shop/model/paging/PaginationData.java
new file mode 100644
index 0000000..79f8b5a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/model/paging/PaginationData.java
@@ -0,0 +1,127 @@
+/**
+ *
+ */
+package com.salesmanager.web.shop.model.paging;
+
+import java.io.Serializable;
+
+/**
+ * POJO representation of pagination
+ * @author Umesh Awasthi
+ *
+ */
+public class PaginationData implements Serializable
+{
+
+
+ private static final long serialVersionUID = 1L;
+
+ /** The number of results per page.*/
+ private int pageSize;
+ private int currentPage;
+ private int offset ;
+ private int totalCount;
+ private int totalPages;
+
+
+ public PaginationData(int pageSize,int currentPage) {
+ if (pageSize == 0)
+ throw new IllegalArgumentException("limit cannot be 0 for pagination.");
+
+
+ this.pageSize = pageSize;
+ this.currentPage=currentPage;
+ }
+
+
+ public int getPageSize()
+ {
+ return pageSize;
+ }
+
+
+ /**
+ * The current page number this pagination object represents
+ *
+ * @return the page number
+ */
+ public int getPageNumber() {
+ if (offset < pageSize || pageSize == 0)
+ return 1;
+
+ return (offset / pageSize) + 1;
+ }
+
+
+ /**
+ * The offset for this pagination object. The offset determines what index (0 index) to start retrieving results from.
+ *
+ * @return the offset
+ */
+ public int getOffset() {
+ return (currentPage - 1) * pageSize + 1;
+ }
+
+
+ /**
+ * Creates a new pagination object representing the next page
+ *
+ * @return new pagination object with offset shifted by offset+limit
+ */
+ public PaginationData getNext()
+ {
+ return new PaginationData( offset + pageSize, pageSize );
+ }
+
+
+ /**
+ * Creates a new pagination object representing the previous page
+ *
+ * @return new pagination object with offset shifted by offset-limit
+ */
+ public PaginationData getPrevious() {
+ if (pageSize >= offset) {
+ return new PaginationData(0, pageSize);
+ } else {
+ return new PaginationData(offset - pageSize, pageSize);
+ }
+ }
+
+
+ public int getCurrentPage()
+ {
+ return currentPage;
+ }
+
+
+ public void setCurrentPage( int currentPage )
+ {
+ this.currentPage = currentPage;
+ }
+
+
+ public int getTotalCount()
+ {
+ return totalCount;
+ }
+
+
+ public void setTotalCount( int totalCount )
+ {
+ this.totalCount = totalCount;
+ }
+
+
+ public int getTotalPages()
+ {
+
+ Integer totalPages= Integer.valueOf((int) (Math.ceil(Integer.valueOf(totalCount).doubleValue() / pageSize)));
+ return totalPages;
+ }
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/shop/model/search/AutoCompleteRequest.java b/sm-shop/src/main/java/com/salesmanager/web/shop/model/search/AutoCompleteRequest.java
new file mode 100644
index 0000000..73150cd
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/shop/model/search/AutoCompleteRequest.java
@@ -0,0 +1,79 @@
+package com.salesmanager.web.shop.model.search;
+
+import org.json.simple.JSONObject;
+
+public class AutoCompleteRequest {
+
+ //private String collectionName;
+ //private String query;
+ //private String filter;
+ private String merchantCode;
+ private String languageCode;
+
+
+ private final static String WILDCARD_QUERY = "wildcard";
+ private final static String KEYWORD = "keyword";
+ private final static String UNDERSCORE = "_";
+ private final static String ALL = "*";
+ private final static String TYPE = "type";
+ private final static String TYPE_PHRASE = "phrase_prefix";
+ private final static String QUERY = "query";
+ private final static String MATCH = "match";
+
+ public AutoCompleteRequest(String merchantCode, String languageCode) {
+ this.merchantCode = merchantCode;
+ this.languageCode = languageCode;
+ }
+
+ @SuppressWarnings("unchecked")
+ public String toJSONString(String query) {
+
+ JSONObject keyword = new JSONObject();
+ JSONObject q = new JSONObject();
+ JSONObject match = new JSONObject();
+
+ q.put(QUERY, query);
+ q.put(TYPE, TYPE_PHRASE);
+
+ keyword.put(KEYWORD, q);
+
+ match.put(MATCH, keyword);
+
+ //StringBuilder qValueBuilder = new StringBuilder();
+ //qValueBuilder.append(query.toLowerCase()).append(ALL);
+
+ //q.put(KEYWORD, qValueBuilder.toString());
+ //wildcard.put(WILDCARD_QUERY, q);
+
+
+ return match.toJSONString();
+ }
+
+ /** keyword_en_default **/
+ public String getCollectionName() {
+ StringBuilder qBuilder = new StringBuilder();
+ qBuilder.append(KEYWORD).append(UNDERSCORE).append(getLanguageCode()).append(UNDERSCORE)
+ .append(getMerchantCode());
+
+ return qBuilder.toString().toLowerCase();
+ }
+
+
+
+ public String getMerchantCode() {
+ return merchantCode;
+ }
+
+ public void setMerchantCode(String merchantCode) {
+ this.merchantCode = merchantCode;
+ }
+
+ public String getLanguageCode() {
+ return languageCode;
+ }
+
+ public void setLanguageCode(String languageCode) {
+ this.languageCode = languageCode;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/AdminProductDownloadUrlTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/AdminProductDownloadUrlTag.java
new file mode 100644
index 0000000..d9ef297
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/AdminProductDownloadUrlTag.java
@@ -0,0 +1,98 @@
+package com.salesmanager.web.tags;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.catalog.product.model.file.DigitalProduct;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.FilePathUtils;
+
+public class AdminProductDownloadUrlTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6319855234657139862L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AdminProductDownloadUrlTag.class);
+
+ private DigitalProduct digitalProduct;
+
+
+
+
+ public DigitalProduct getDigitalProduct() {
+ return digitalProduct;
+ }
+
+ public void setDigitalProduct(DigitalProduct digitalProduct) {
+ this.digitalProduct = digitalProduct;
+ }
+
+ public int doStartTag() throws JspException {
+ try {
+
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ HttpSession session = request.getSession();
+
+ StringBuilder filePath = new StringBuilder();
+
+ //TODO domain from merchant, else from global config, else from property (localhost)
+
+ // example -> "/files/{storeCode}/{fileName}.{extension}"
+
+
+ @SuppressWarnings("unchecked")
+ Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+
+
+ filePath.append(scheme).append("://")
+ .append(merchantStore.getDomainName())
+ //.append("/")
+ .append(request.getContextPath());
+
+ filePath
+ .append(FilePathUtils.buildAdminDownloadProductFilePath(merchantStore, digitalProduct)).toString();
+
+
+
+ pageContext.getOut().print(filePath.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting content url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/ContentImageUrlTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/ContentImageUrlTag.java
new file mode 100644
index 0000000..6a6f09f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/ContentImageUrlTag.java
@@ -0,0 +1,123 @@
+package com.salesmanager.web.tags;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+
+public class ContentImageUrlTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6319855234657139862L;
+ private static final Logger LOGGER = LoggerFactory.getLogger(ContentImageUrlTag.class);
+
+ private MerchantStore merchantStore;
+ private String imageName;
+ private String imageType;
+
+
+ public int doStartTag() throws JspException {
+ try {
+
+
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ HttpSession session = request.getSession();
+
+ StringBuilder imagePath = new StringBuilder();
+
+ //TODO domain from merchant, else from global config, else from property (localhost)
+
+ //http://domain/static/merchantid/imageType/imageName
+
+ //@SuppressWarnings("unchecked")
+ //Map<String,String> configurations = (Map<String, String>)session.getAttribute("STORECONFIGURATION");
+ //String scheme = (String)configurations.get("scheme");
+
+ //if(StringUtils.isBlank(scheme)) {
+ // scheme = "http";
+ //}
+
+
+
+ @SuppressWarnings("unchecked")
+ Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+
+
+ imagePath.append(scheme).append("://")
+ .append(merchantStore.getDomainName())
+ .append(request.getContextPath());
+
+
+
+ imagePath //.append(scheme).append("://").append(merchantStore.getDomainName())\
+ .append(Constants.STATIC_URI).append("/")
+ .append(merchantStore.getCode()).append("/").append(this.getImageType())
+ .append("/").append(this.getImageName());
+
+
+ pageContext.getOut().print(imagePath.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting content url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+ public void setMerchantStore(MerchantStore merchantStore) {
+ this.merchantStore = merchantStore;
+ }
+
+ public MerchantStore getMerchantStore() {
+ return merchantStore;
+ }
+
+ public void setImageName(String imageName) {
+ this.imageName = imageName;
+ }
+
+ public String getImageName() {
+ return imageName;
+ }
+
+ public void setImageType(String imageType) {
+ this.imageType = imageType;
+ }
+
+ public String getImageType() {
+ return imageType;
+ }
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/ManufacturerImageUrlTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/ManufacturerImageUrlTag.java
new file mode 100644
index 0000000..0ba3682
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/ManufacturerImageUrlTag.java
@@ -0,0 +1,122 @@
+package com.salesmanager.web.tags;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.ImageFilePathUtils;
+
+public class ManufacturerImageUrlTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6319855234657139862L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ManufacturerImageUrlTag.class);
+
+
+ private String imageName;
+ private String imageType;
+ private Manufacturer manufacturer;
+
+
+ public int doStartTag() throws JspException {
+ try {
+
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ HttpSession session = request.getSession();
+
+ StringBuilder imagePath = new StringBuilder();
+
+ //TODO domain from merchant, else from global config, else from property (localhost)
+
+ // example -> /static/1/PRODUCT/120/product1.jpg
+
+ //@SuppressWarnings("unchecked")
+ //Map<String,String> configurations = (Map<String, String>)session.getAttribute("STORECONFIGURATION");
+ //String scheme = (String)configurations.get("scheme");
+
+ //if(StringUtils.isBlank(scheme)) {
+ // scheme = "http";
+ //}
+
+ @SuppressWarnings("unchecked")
+ Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+
+
+ imagePath.append(scheme).append("://")
+ .append(merchantStore.getDomainName())
+ .append("/")
+ .append(request.getContextPath());
+
+ //imagePath
+
+ //.append(scheme).append("://").append(merchantStore.getDomainName())
+ //.append(Constants.STATIC_URI)
+ //.append("/").append(ImageFilePathUtils.buildManufacturerImageFilePath(merchantStore, manufacturer, this.getImageName())).toString();
+
+
+
+ pageContext.getOut().print(imagePath.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting content url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+
+ public void setImageName(String imageName) {
+ this.imageName = imageName;
+ }
+
+ public String getImageName() {
+ return imageName;
+ }
+
+ public void setImageType(String imageType) {
+ this.imageType = imageType;
+ }
+
+ public String getImageType() {
+ return imageType;
+ }
+
+ public Manufacturer getManufacturer() {
+ return manufacturer;
+ }
+
+ public void setManufacturer(Manufacturer manufacturer) {
+ this.manufacturer = manufacturer;
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/OrderProductDownloadUrlTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/OrderProductDownloadUrlTag.java
new file mode 100644
index 0000000..1fb19f5
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/OrderProductDownloadUrlTag.java
@@ -0,0 +1,89 @@
+package com.salesmanager.web.tags;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.order.ReadableOrderProductDownload;
+import com.salesmanager.web.utils.FilePathUtils;
+
+public class OrderProductDownloadUrlTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6319855234657139862L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(OrderProductDownloadUrlTag.class);
+
+
+ private ReadableOrderProductDownload productDownload;
+
+ private Long orderId;
+
+
+
+
+ public int doStartTag() throws JspException {
+ try {
+
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ StringBuilder filePath = new StringBuilder();
+
+ filePath.append(FilePathUtils.buildStoreUri(merchantStore,request));
+
+ filePath
+ .append(FilePathUtils.buildOrderDownloadProductFilePath(merchantStore, this.getProductDownload(), this.getOrderId())).toString();
+
+
+
+ pageContext.getOut().print(filePath.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting order product download url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+
+
+ public Long getOrderId() {
+ return orderId;
+ }
+
+ public void setOrderId(Long orderId) {
+ this.orderId = orderId;
+ }
+
+ public ReadableOrderProductDownload getProductDownload() {
+ return productDownload;
+ }
+
+ public void setProductDownload(ReadableOrderProductDownload productDownload) {
+ this.productDownload = productDownload;
+ }
+
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/PageContentTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/PageContentTag.java
new file mode 100644
index 0000000..1aa3911
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/PageContentTag.java
@@ -0,0 +1,90 @@
+package com.salesmanager.web.tags;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.servlet.tags.RequestContextAwareTag;
+
+import com.salesmanager.core.business.content.model.Content;
+import com.salesmanager.core.business.content.model.ContentDescription;
+import com.salesmanager.core.business.content.service.ContentService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.web.constants.Constants;
+
+public class PageContentTag extends RequestContextAwareTag {
+
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(PageContentTag.class);
+
+
+ @Autowired
+ private ContentService contentService;
+
+ private String contentCode;
+
+
+
+
+ public String getContentCode() {
+ return contentCode;
+ }
+
+
+ public void setContentCode(String contentCode) {
+ this.contentCode = contentCode;
+ }
+
+
+ @Override
+ protected int doStartTagInternal() throws Exception {
+ if (contentService == null || contentService==null) {
+ LOGGER.debug("Autowiring contentService");
+ WebApplicationContext wac = getRequestContext().getWebApplicationContext();
+ AutowireCapableBeanFactory factory = wac.getAutowireCapableBeanFactory();
+ factory.autowireBean(this);
+ }
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ Content content = contentService.getByCode(contentCode, store, language);
+
+ String pageContent = "";
+ if(content!=null) {
+ ContentDescription description = content.getDescription();
+ if(description != null) {
+ pageContent = description.getDescription();
+ }
+ }
+
+
+ pageContext.getOut().print(pageContent);
+
+ return SKIP_BODY;
+
+ }
+
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/ProductDescriptionUrlTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/ProductDescriptionUrlTag.java
new file mode 100644
index 0000000..b73c96f
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/ProductDescriptionUrlTag.java
@@ -0,0 +1,100 @@
+package com.salesmanager.web.tags;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.catalog.product.model.description.ProductDescription;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+
+public class ProductDescriptionUrlTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6319855234657139862L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ProductDescriptionUrlTag.class);
+
+
+
+ private ProductDescription productDescription;
+
+ /**
+ * Created the product url for the store front
+ */
+ public int doStartTag() throws JspException {
+ try {
+
+ //http://www.domainname.com:8080/shop/product/product-name.html
+ //or
+ //http://www.domainname.com:8080/shop/productid/sku.html
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ HttpSession session = request.getSession();
+
+ StringBuilder productPath = new StringBuilder();
+
+ @SuppressWarnings("unchecked")
+ Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+
+
+ productPath.append(scheme).append("://")
+ .append(merchantStore.getDomainName())
+ .append(request.getContextPath());
+
+ if(!StringUtils.isBlank(this.getProductDescription().getSeUrl())) {
+ productPath.append(Constants.PRODUCT_URI).append("/");
+ productPath.append(this.getProductDescription().getSeUrl());
+ } else {
+ productPath.append(Constants.PRODUCT_ID_URI).append("/");
+ productPath.append(this.getProductDescription().getProduct().getSku());
+ }
+
+ productPath.append(Constants.URL_EXTENSION);
+
+
+
+ pageContext.getOut().print(productPath.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting content url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+ public void setProductDescription(ProductDescription productDescription) {
+ this.productDescription = productDescription;
+ }
+
+ public ProductDescription getProductDescription() {
+ return productDescription;
+ }
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/ProductImageUrlTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/ProductImageUrlTag.java
new file mode 100644
index 0000000..a3fb51a
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/ProductImageUrlTag.java
@@ -0,0 +1,125 @@
+package com.salesmanager.web.tags;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.ImageFilePathUtils;
+
+public class ProductImageUrlTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6319855234657139862L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ProductImageUrlTag.class);
+
+
+ private String imageName;
+ private String imageType;
+ private Product product;
+
+
+ public int doStartTag() throws JspException {
+ try {
+
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+ HttpSession session = request.getSession();
+
+ StringBuilder imagePath = new StringBuilder();
+
+ //TODO domain from merchant, else from global config, else from property (localhost)
+
+ // example -> /static/1/PRODUCT/120/product1.jpg
+
+ //@SuppressWarnings("unchecked")
+ //Map<String,String> configurations = (Map<String, String>)session.getAttribute("STORECONFIGURATION");
+ //String scheme = (String)configurations.get("scheme");
+
+ //if(StringUtils.isBlank(scheme)) {
+ // scheme = "http";
+ //}
+
+ @SuppressWarnings("unchecked")
+ Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+
+
+ imagePath.append(scheme).append("://")
+ .append(merchantStore.getDomainName())
+ .append("/")
+ .append(request.getContextPath());
+
+ imagePath
+
+ //.append(scheme).append("://").append(merchantStore.getDomainName())
+ //.append(Constants.STATIC_URI)
+ .append("/").append(ImageFilePathUtils.buildProductImageFilePath(merchantStore, product, this.getImageName())).toString();
+
+
+
+ pageContext.getOut().print(imagePath.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting content url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+
+ public void setImageName(String imageName) {
+ this.imageName = imageName;
+ }
+
+ public String getImageName() {
+ return imageName;
+ }
+
+ public void setImageType(String imageType) {
+ this.imageType = imageType;
+ }
+
+ public String getImageType() {
+ return imageType;
+ }
+
+ public void setProduct(Product product) {
+ this.product = product;
+ }
+
+ public Product getProduct() {
+ return product;
+ }
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/ShopProductImageUrlTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/ShopProductImageUrlTag.java
new file mode 100644
index 0000000..fac37cc
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/ShopProductImageUrlTag.java
@@ -0,0 +1,132 @@
+package com.salesmanager.web.tags;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.ImageFilePathUtils;
+
+public class ShopProductImageUrlTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6319855234657139862L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShopProductImageUrlTag.class);
+
+ private final static String SMALL = "SMALL";
+ private final static String LARGE = "LARGE";
+
+ private String imageName;
+ private String sku;
+ private String size; //SMALL | LARGE
+
+
+ public int doStartTag() throws JspException {
+ try {
+
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ HttpSession session = request.getSession();
+
+ StringBuilder imagePath = new StringBuilder();
+
+ //TODO domain from merchant, else from global config, else from property (localhost)
+
+ // example -> /static/1/PRODUCT/120/product1.jpg
+
+ //@SuppressWarnings("unchecked")
+ //Map<String,String> configurations = (Map<String, String>)session.getAttribute("STORECONFIGURATION");
+ //String scheme = (String)configurations.get("scheme");
+
+ //if(StringUtils.isBlank(scheme)) {
+ // scheme = "http";
+ //}
+
+ @SuppressWarnings("unchecked")
+ Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+
+
+ imagePath.append(scheme).append("://")
+ .append(merchantStore.getDomainName())
+ .append(request.getContextPath());
+
+
+
+ //.append(scheme).append("://").append(merchantStore.getDomainName())
+
+ if(StringUtils.isBlank(this.getSize()) || this.getSize().equals(SMALL)) {
+ imagePath.append(ImageFilePathUtils.buildProductImageFilePath(merchantStore, this.getSku(), this.getImageName())).toString();
+ } else {
+ imagePath.append(ImageFilePathUtils.buildLargeProductImageFilePath(merchantStore, this.getSku(), this.getImageName())).toString();
+ }
+
+
+
+ pageContext.getOut().print(imagePath.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting content url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+
+ public void setImageName(String imageName) {
+ this.imageName = imageName;
+ }
+
+ public String getImageName() {
+ return imageName;
+ }
+
+
+
+ public void setSku(String sku) {
+ this.sku = sku;
+ }
+
+ public String getSku() {
+ return sku;
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size;
+ }
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/ShopProductPriceFormatTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/ShopProductPriceFormatTag.java
new file mode 100644
index 0000000..b33e4f9
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/ShopProductPriceFormatTag.java
@@ -0,0 +1,107 @@
+package com.salesmanager.web.tags;
+
+import java.math.BigDecimal;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.servlet.tags.RequestContextAwareTag;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.currency.model.Currency;
+import com.salesmanager.core.utils.ProductPriceUtils;
+import com.salesmanager.web.constants.Constants;
+
+public class ShopProductPriceFormatTag extends RequestContextAwareTag {
+
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShopProductPriceFormatTag.class);
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private ProductPriceUtils productPriceUtils;
+
+
+
+ private BigDecimal value;
+
+
+
+ private Currency currency;
+
+
+
+
+
+ public Currency getCurrency() {
+ return currency;
+ }
+
+
+ public void setCurrency(Currency currency) {
+ this.currency = currency;
+ }
+
+
+ @Override
+ protected int doStartTagInternal() throws Exception {
+ if (pricingService == null || productPriceUtils==null) {
+ LOGGER.debug("Autowiring productPriceUtils");
+ WebApplicationContext wac = getRequestContext().getWebApplicationContext();
+ AutowireCapableBeanFactory factory = wac.getAutowireCapableBeanFactory();
+ factory.autowireBean(this);
+ }
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ String formatedPrice = null;
+
+ if(this.getCurrency()!=null) {
+ formatedPrice = productPriceUtils.getFormatedAmountWithCurrency(this.getCurrency(), this.getValue());
+ } else {
+ formatedPrice = pricingService.getDisplayAmount(this.getValue(), store);
+ }
+
+ pageContext.getOut().print(formatedPrice);
+
+ return SKIP_BODY;
+
+ }
+
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+
+ public void setValue(BigDecimal value) {
+ this.value = value;
+ }
+
+
+ public BigDecimal getValue() {
+ return value;
+ }
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/ShopProductRelationshipTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/ShopProductRelationshipTag.java
new file mode 100644
index 0000000..f413c57
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/ShopProductRelationshipTag.java
@@ -0,0 +1,159 @@
+package com.salesmanager.web.tags;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.servlet.tags.RequestContextAwareTag;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.relationship.ProductRelationship;
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.relationship.ProductRelationshipService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.utils.CacheUtils;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.populator.catalog.ReadableProductPopulator;
+
+public class ShopProductRelationshipTag extends RequestContextAwareTag {
+
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShopProductRelationshipTag.class);
+
+ @Autowired
+ private ProductRelationshipService productRelationshipService;
+
+ @Autowired
+ private PricingService pricingService;
+
+ @Autowired
+ private CacheUtils cache;
+
+
+ private String groupName;
+
+
+
+ public String getGroupName() {
+ return groupName;
+ }
+
+
+ public void setGroupName(String groupName) {
+ this.groupName = groupName;
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected int doStartTagInternal() throws Exception {
+ if (productRelationshipService == null || pricingService==null) {
+ LOGGER.debug("Autowiring ProductRelationshipService");
+ WebApplicationContext wac = getRequestContext().getWebApplicationContext();
+ AutowireCapableBeanFactory factory = wac.getAutowireCapableBeanFactory();
+ factory.autowireBean(this);
+ }
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+
+ StringBuilder groupKey = new StringBuilder();
+ groupKey
+ .append(store.getId())
+ .append("_")
+ .append(Constants.PRODUCTS_GROUP_CACHE_KEY)
+ .append("-")
+ .append(this.getGroupName())
+ .append("_")
+ .append(language.getCode());
+
+ StringBuilder groupKeyMissed = new StringBuilder();
+ groupKeyMissed
+ .append(groupKey.toString())
+ .append(Constants.MISSED_CACHE_KEY);
+
+ List<ReadableProduct> objects = null;
+
+ if(store.isUseCache()) {
+
+ //get from the cache
+ objects = (List<ReadableProduct>) cache.getFromCache(groupKey.toString());
+ Boolean missedContent = null;
+ //if(objects==null) {
+ //get from missed cache
+ // missedContent = (Boolean)cache.getFromCache(groupKeyMissed.toString());
+ //}
+
+ if(objects==null && missedContent==null) {
+ objects = getProducts(request);
+
+ //put in cache
+ cache.putInCache(objects, groupKey.toString());
+
+ } else {
+ //put in missed cache
+ //cache.putInCache(new Boolean(true), groupKeyMissed.toString());
+ }
+
+ } else {
+ objects = getProducts(request);
+ }
+ if(objects!=null && objects.size()>0) {
+ request.setAttribute(this.getGroupName(), objects);
+ }
+
+ return SKIP_BODY;
+
+ }
+
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+ private List<ReadableProduct> getProducts(HttpServletRequest request) throws Exception {
+
+ MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+ Language language = (Language)request.getAttribute(Constants.LANGUAGE);
+
+ List<ProductRelationship> relationships = productRelationshipService.getByGroup(store, this.getGroupName(), language);
+
+ ReadableProductPopulator populator = new ReadableProductPopulator();
+ populator.setPricingService(pricingService);
+
+ List<ReadableProduct> products = new ArrayList<ReadableProduct>();
+ for(ProductRelationship relationship : relationships) {
+
+ Product product = relationship.getRelatedProduct();
+
+ ReadableProduct proxyProduct = populator.populate(product, new ReadableProduct(), store, language);
+ //com.salesmanager.web.entity.catalog.Product proxyProduct = catalogUtils.buildProxyProduct(product, store, locale);
+ products.add(proxyProduct);
+
+ }
+
+ return products;
+
+ }
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/StoreBreadcrumbsTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/StoreBreadcrumbsTag.java
new file mode 100644
index 0000000..80e89c9
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/StoreBreadcrumbsTag.java
@@ -0,0 +1,111 @@
+package com.salesmanager.web.tags;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.shop.Breadcrumb;
+
+import edu.emory.mathcs.backport.java.util.Arrays;
+
+public class StoreBreadcrumbsTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(StoreBreadcrumbsTag.class);
+
+ private Long categoryId = null;
+ private Long productId = null;
+
+ public int doStartTag() throws JspException {
+ try {
+
+
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ Breadcrumb breadCrumb = (Breadcrumb)request.getAttribute(Constants.BREADCRUMB);
+
+ StringBuilder ref = new StringBuilder();
+
+ if(breadCrumb!=null && !StringUtils.isBlank(breadCrumb.getUrlRefContent())) {
+ ref.append(Constants.SLASH).append(Constants.REF).append(Constants.EQUALS).append(breadCrumb.getUrlRefContent());
+ if(categoryId!=null) {
+ List<String> ids = this.parseBreadCrumb(breadCrumb.getUrlRefContent());
+ if(!ids.contains(String.valueOf(this.getCategoryId()))) {
+ ref.append(",").append(this.getCategoryId().longValue());
+ }
+ }
+ } else {
+ if(categoryId!=null) {
+ ref.append(Constants.SLASH).append(Constants.REF).append(Constants.EQUALS).append(Constants.REF_C).append(this.getCategoryId());
+ } else {
+ ref.append("");
+ }
+ }
+
+
+ pageContext.getOut().print(ref.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting content url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ /** only category **/
+ private List<String> parseBreadCrumb(String refContent) throws Exception {
+
+ /** c:1,2,3 **/
+ String[] categoryComa = refContent.split(":");
+ String[] categoryIds = categoryComa[1].split(",");
+ return new LinkedList(Arrays.asList(categoryIds));
+
+
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+ public Long getCategoryId() {
+ return categoryId;
+ }
+
+ public void setCategoryId(Long categoryId) {
+ this.categoryId = categoryId;
+ }
+
+ public Long getProductId() {
+ return productId;
+ }
+
+ public void setProductId(Long productId) {
+ this.productId = productId;
+ }
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/StoreFooterlTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/StoreFooterlTag.java
new file mode 100644
index 0000000..c650aa7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/StoreFooterlTag.java
@@ -0,0 +1,83 @@
+package com.salesmanager.web.tags;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+
+public class StoreFooterlTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6319855234657139862L;
+ private static final Logger LOGGER = LoggerFactory.getLogger(StoreFooterlTag.class);
+
+ private final static String COPY = "�";
+
+
+ public int doStartTag() throws JspException {
+ try {
+
+
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
+
+
+ StringBuilder y = new StringBuilder();
+ int currentYear = Calendar.getInstance().get(Calendar.YEAR);
+
+
+ if(merchantStore!=null) {
+ Date dateBusiness=merchantStore.getInBusinessSince();
+ if(dateBusiness!=null) {
+ Calendar c = Calendar.getInstance();
+ c.setTime(dateBusiness);
+ int startBusiness = c.get(Calendar.YEAR);
+ if(startBusiness<currentYear) {
+ y.append(startBusiness).append("-");
+ }
+ }
+ }
+
+ y.append(currentYear);
+
+ StringBuilder copy = new StringBuilder();
+ copy.append(COPY).append(" ").append(merchantStore.getStorename()).append(" ").append(y.toString());
+
+ pageContext.getOut().print(copy.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting content url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/tags/StoreLogoUrlTag.java b/sm-shop/src/main/java/com/salesmanager/web/tags/StoreLogoUrlTag.java
new file mode 100644
index 0000000..2554dce
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/tags/StoreLogoUrlTag.java
@@ -0,0 +1,115 @@
+package com.salesmanager.web.tags;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.utils.ImageFilePathUtils;
+
+public class StoreLogoUrlTag extends TagSupport {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6319855234657139862L;
+ private static final Logger LOGGER = LoggerFactory.getLogger(StoreLogoUrlTag.class);
+ private static final String RESOURCES = "resources";
+ private static final String IMG = "img";
+ private static final String SHOPIZER_LOGO = "shopizer_small.png";
+
+
+ public int doStartTag() throws JspException {
+ try {
+
+
+
+ HttpServletRequest request = (HttpServletRequest) pageContext
+ .getRequest();
+
+ MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
+
+
+ HttpSession session = request.getSession();
+
+ StringBuilder imagePath = new StringBuilder();
+
+ //TODO domain from merchant, else from global config, else from property (localhost)
+
+ //http://domain/static/merchantid/imageType/imageName
+
+ //@SuppressWarnings("unchecked")
+ //Map<String,String> configurations = (Map<String, String>)session.getAttribute("STORECONFIGURATION");
+ //String scheme = (String)configurations.get("scheme");
+
+ //if(StringUtils.isBlank(scheme)) {
+ // scheme = "http";
+ //}
+
+
+
+ @SuppressWarnings("unchecked")
+ Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+
+ imagePath.append(scheme).append("://")
+ .append(merchantStore.getDomainName())
+ .append(request.getContextPath());
+
+
+
+
+ if(StringUtils.isBlank(merchantStore.getStoreLogo())){
+
+ imagePath
+ .append(RESOURCES).append("/")
+ .append(IMG).append("/").append(SHOPIZER_LOGO);
+ } else {
+
+ imagePath
+ .append(ImageFilePathUtils.buildStoreLogoFilePath(merchantStore));
+
+ }
+
+
+
+
+
+
+ pageContext.getOut().print(imagePath.toString());
+
+
+
+ } catch (Exception ex) {
+ LOGGER.error("Error while getting content url", ex);
+ }
+ return SKIP_BODY;
+ }
+
+ public int doEndTag() {
+ return EVAL_PAGE;
+ }
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/AdminAccessDeniedHandler.java b/sm-shop/src/main/java/com/salesmanager/web/utils/AdminAccessDeniedHandler.java
new file mode 100644
index 0000000..784211e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/AdminAccessDeniedHandler.java
@@ -0,0 +1,33 @@
+package com.salesmanager.web.utils;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.security.web.access.AccessDeniedHandler;
+
+public class AdminAccessDeniedHandler implements AccessDeniedHandler {
+
+ @Override
+ public void handle(HttpServletRequest request,
+ HttpServletResponse response,
+ AccessDeniedException accessDeniedException) throws IOException,
+ ServletException {
+ response.sendRedirect(request.getContextPath() + getAccessDeniedUrl());
+
+ }
+
+ public String getAccessDeniedUrl() {
+ return accessDeniedUrl;
+ }
+
+ public void setAccessDeniedUrl(String accessDeniedUrl) {
+ this.accessDeniedUrl = accessDeniedUrl;
+ }
+
+ private String accessDeniedUrl = null;
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/AppConfiguration.java b/sm-shop/src/main/java/com/salesmanager/web/utils/AppConfiguration.java
new file mode 100644
index 0000000..5b1dadc
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/AppConfiguration.java
@@ -0,0 +1,37 @@
+package com.salesmanager.web.utils;
+
+import java.util.Properties;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class AppConfiguration {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AppConfiguration.class);
+ public Properties properties;
+
+ public Properties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
+ public AppConfiguration() {}
+
+ public String getProperty(String propertyKey) {
+
+ if(properties!=null) {
+ return properties.getProperty(propertyKey);
+ } else {
+ LOGGER.warn("Application properties are not loaded");
+ return null;
+ }
+
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/BeanUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/BeanUtils.java
new file mode 100644
index 0000000..63bf8c1
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/BeanUtils.java
@@ -0,0 +1,65 @@
+package com.salesmanager.web.utils;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class BeanUtils
+{
+ private BeanUtils(){
+
+ }
+
+ public static BeanUtils newInstance(){
+ return new BeanUtils();
+ }
+
+ @SuppressWarnings( "nls" )
+ public Object getPropertyValue( Object bean, String property )
+ throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
+ {
+
+ if (bean == null) {
+ throw new IllegalArgumentException("No bean specified");
+ }
+ if(property == null){
+
+ throw new IllegalArgumentException("No name specified for bean class '" + bean.getClass() + "'");
+ }
+ Class<?> beanClass = bean.getClass();
+ PropertyDescriptor propertyDescriptor = getPropertyDescriptor( beanClass, property );
+ if ( propertyDescriptor == null )
+ {
+ throw new IllegalArgumentException( "No such property " + property + " for " + beanClass + " exists" );
+ }
+
+ Method readMethod = propertyDescriptor.getReadMethod();
+ if ( readMethod == null )
+ {
+ throw new IllegalStateException( "No getter available for property " + property + " on " + beanClass );
+ }
+ return readMethod.invoke( bean );
+ }
+
+ private PropertyDescriptor getPropertyDescriptor( Class<?> beanClass, String propertyname )
+ throws IntrospectionException
+ {
+ BeanInfo beanInfo = Introspector.getBeanInfo( beanClass );
+ PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+ PropertyDescriptor propertyDescriptor = null;
+ for ( int i = 0; i < propertyDescriptors.length; i++ )
+ {
+ PropertyDescriptor currentPropertyDescriptor = propertyDescriptors[i];
+ if ( currentPropertyDescriptor.getName().equals( propertyname ) )
+ {
+ propertyDescriptor = currentPropertyDescriptor;
+ }
+
+ }
+ return propertyDescriptor;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/BreadcrumbsUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/BreadcrumbsUtils.java
new file mode 100644
index 0000000..53c9084
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/BreadcrumbsUtils.java
@@ -0,0 +1,187 @@
+package com.salesmanager.web.utils;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.salesmanager.core.business.catalog.category.model.Category;
+import com.salesmanager.core.business.catalog.category.service.CategoryService;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.catalog.category.ReadableCategory;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.entity.shop.Breadcrumb;
+import com.salesmanager.web.entity.shop.BreadcrumbItem;
+import com.salesmanager.web.entity.shop.BreadcrumbItemType;
+
+import edu.emory.mathcs.backport.java.util.Arrays;
+
+@Component
+public class BreadcrumbsUtils {
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private CategoryService categoryService;
+
+
+ public Breadcrumb buildCategoryBreadcrumb(ReadableCategory categoryClicked, MerchantStore store, Language language, String contextPath) throws Exception {
+
+ /** Rebuild breadcrumb **/
+ BreadcrumbItem home = new BreadcrumbItem();
+ home.setItemType(BreadcrumbItemType.HOME);
+ home.setLabel(messages.getMessage(Constants.HOME_MENU_KEY, LocaleUtils.getLocale(language)));
+ home.setUrl(FilePathUtils.buildStoreUri(store, contextPath) + Constants.SHOP_URI);
+
+ Breadcrumb breadCrumb = new Breadcrumb();
+ breadCrumb.setLanguage(language);
+
+ List<BreadcrumbItem> items = new ArrayList<BreadcrumbItem>();
+ items.add(home);
+
+ //if(!StringUtils.isBlank(refContent)) {
+
+ //List<String> categoryIds = parseBreadCrumb(refContent);
+ List<String> categoryIds = parseCategoryLineage(categoryClicked.getLineage());
+ List<Long> ids = new ArrayList<Long>();
+ for(String c : categoryIds) {
+ ids.add(Long.parseLong(c));
+ }
+
+ ids.add(categoryClicked.getId());
+
+
+ List<Category> categories = categoryService.listByIds(store, ids, language);
+
+ //category path - use lineage
+ for(Category c : categories) {
+ BreadcrumbItem categoryBreadcrump = new BreadcrumbItem();
+ categoryBreadcrump.setItemType(BreadcrumbItemType.CATEGORY);
+ categoryBreadcrump.setLabel(c.getDescription().getName());
+ categoryBreadcrump.setUrl(FilePathUtils.buildCategoryUrl(store, contextPath, c.getDescription().getSeUrl()));
+ items.add(categoryBreadcrump);
+ }
+
+ breadCrumb.setUrlRefContent(buildBreadCrumb(ids));
+
+ //}
+
+
+
+ breadCrumb.setBreadCrumbs(items);
+ breadCrumb.setItemType(BreadcrumbItemType.CATEGORY);
+
+
+ return breadCrumb;
+ }
+
+
+ public Breadcrumb buildProductBreadcrumb(String refContent, ReadableProduct productClicked, MerchantStore store, Language language, String contextPath) throws Exception {
+
+ /** Rebuild breadcrumb **/
+ BreadcrumbItem home = new BreadcrumbItem();
+ home.setItemType(BreadcrumbItemType.HOME);
+ home.setLabel(messages.getMessage(Constants.HOME_MENU_KEY, LocaleUtils.getLocale(language)));
+ home.setUrl(FilePathUtils.buildStoreUri(store, contextPath) + Constants.SHOP_URI);
+
+ Breadcrumb breadCrumb = new Breadcrumb();
+ breadCrumb.setLanguage(language);
+
+ List<BreadcrumbItem> items = new ArrayList<BreadcrumbItem>();
+ items.add(home);
+
+ if(!StringUtils.isBlank(refContent)) {
+
+ List<String> categoryIds = parseBreadCrumb(refContent);
+ List<Long> ids = new ArrayList<Long>();
+ for(String c : categoryIds) {
+ ids.add(Long.parseLong(c));
+ }
+
+
+ List<Category> categories = categoryService.listByIds(store, ids, language);
+
+ //category path - use lineage
+ for(Category c : categories) {
+ BreadcrumbItem categoryBreadcrump = new BreadcrumbItem();
+ categoryBreadcrump.setItemType(BreadcrumbItemType.CATEGORY);
+ categoryBreadcrump.setLabel(c.getDescription().getName());
+ categoryBreadcrump.setUrl(FilePathUtils.buildCategoryUrl(store, contextPath, c.getDescription().getSeUrl()));
+ items.add(categoryBreadcrump);
+ }
+
+
+ breadCrumb.setUrlRefContent(buildBreadCrumb(ids));
+ }
+
+ BreadcrumbItem productBreadcrump = new BreadcrumbItem();
+ productBreadcrump.setItemType(BreadcrumbItemType.PRODUCT);
+ productBreadcrump.setLabel(productClicked.getDescription().getName());
+ productBreadcrump.setUrl(FilePathUtils.buildProductUrl(store, contextPath, productClicked.getDescription().getFriendlyUrl()));
+ items.add(productBreadcrump);
+
+
+
+
+
+ breadCrumb.setBreadCrumbs(items);
+ breadCrumb.setItemType(BreadcrumbItemType.CATEGORY);
+
+
+ return breadCrumb;
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes", "unused" })
+ private List<String> parseBreadCrumb(String refContent) throws Exception {
+
+ /** c:1,2,3 **/
+ String[] categoryComa = refContent.split(":");
+ String[] categoryIds = categoryComa[1].split(",");
+ return new LinkedList(Arrays.asList(categoryIds));
+
+
+ }
+
+
+ private List<String> parseCategoryLineage(String lineage) throws Exception {
+
+ String[] categoryPath = lineage.split(Constants.CATEGORY_LINEAGE_DELIMITER);
+ List<String> returnList = new LinkedList<String>();
+ for(String c : categoryPath) {
+ if(!StringUtils.isBlank(c)) {
+ returnList.add(c);
+ }
+ }
+ return returnList;
+
+ }
+
+ private String buildBreadCrumb(List<Long> ids) throws Exception {
+
+ if(CollectionUtils.isEmpty(ids)) {
+ return null;
+ }
+ StringBuilder sb = new StringBuilder();
+ sb.append("c:");
+ int count = 1;
+ for(Long c : ids) {
+ sb.append(c);
+ if(count < ids.size()) {
+ sb.append(",");
+ }
+ count++;
+ }
+
+
+ return sb.toString();
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/DateUtil.java b/sm-shop/src/main/java/com/salesmanager/web/utils/DateUtil.java
new file mode 100644
index 0000000..2a70201
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/DateUtil.java
@@ -0,0 +1,161 @@
+/*
+ * Licensed to csti consulting
+ * You may obtain a copy of the License at
+ *
+ * http://www.csticonsulting.com
+ * Copyright (c) 2006-Aug 24, 2010 Consultation CS-TI inc.
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.salesmanager.web.utils;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.salesmanager.core.constants.Constants;
+
+
+
+public class DateUtil {
+
+ private Date startDate = new Date(new Date().getTime());
+ private Date endDate = new Date(new Date().getTime());
+ private static final Logger LOGGER = LoggerFactory.getLogger(DateUtil.class);
+ private final static String LONGDATE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z";
+
+
+
+ /**
+ * Generates a time stamp
+ * yyyymmddhhmmss
+ * @return
+ */
+ public static String generateTimeStamp() {
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmSS");
+ return format.format(new Date());
+ }
+
+ /**
+ * yyyy-MM-dd
+ *
+ * @param dt
+ * @return
+ */
+ public static String formatDate(Date dt) {
+
+ if (dt == null)
+ return null;
+ SimpleDateFormat format = new SimpleDateFormat(Constants.DEFAULT_DATE_FORMAT);
+ return format.format(dt);
+
+ }
+
+ public static String formatYear(Date dt) {
+
+ if (dt == null)
+ return null;
+ SimpleDateFormat format = new SimpleDateFormat(Constants.DEFAULT_DATE_FORMAT_YEAR);
+ return format.format(dt);
+
+ }
+
+ public static String formatLongDate(Date date) {
+
+ if (date == null)
+ return null;
+ SimpleDateFormat format = new SimpleDateFormat(LONGDATE_FORMAT);
+ return format.format(date);
+
+ }
+
+ /**
+ * yy-MMM-dd
+ *
+ * @param dt
+ * @return
+ */
+ public static String formatDateMonthString(Date dt) {
+
+ if (dt == null)
+ return null;
+ SimpleDateFormat format = new SimpleDateFormat(Constants.DEFAULT_DATE_FORMAT);
+ return format.format(dt);
+
+ }
+
+ public static Date getDate(String date) throws Exception {
+ DateFormat myDateFormat = new SimpleDateFormat(Constants.DEFAULT_DATE_FORMAT);
+ return myDateFormat.parse(date);
+ }
+
+ public static Date addDaysToCurrentDate(int days) {
+ Calendar c = Calendar.getInstance();
+ c.setTime(new Date());
+ c.add(Calendar.DATE, days);
+ return c.getTime();
+
+ }
+
+ public static Date getDate() {
+
+ return new Date(new Date().getTime());
+
+ }
+
+ public static String getPresentDate() {
+
+ Date dt = new Date();
+
+ SimpleDateFormat format = new SimpleDateFormat(Constants.DEFAULT_DATE_FORMAT);
+ return format.format(new Date(dt.getTime()));
+ }
+
+ public static String getPresentYear() {
+
+ Date dt = new Date();
+
+ SimpleDateFormat format = new SimpleDateFormat("yyyy");
+ return format.format(new Date(dt.getTime()));
+ }
+
+ public void processPostedDates(HttpServletRequest request) {
+ Date dt = new Date();
+ DateFormat myDateFormat = new SimpleDateFormat(Constants.DEFAULT_DATE_FORMAT);
+ Date sDate = null;
+ Date eDate = null;
+ try {
+ if (request.getParameter("startdate") != null) {
+ sDate = myDateFormat.parse(request.getParameter("startdate"));
+ }
+ if (request.getParameter("enddate") != null) {
+ eDate = myDateFormat.parse(request.getParameter("enddate"));
+ }
+ this.startDate = sDate;
+ this.endDate = eDate;
+ } catch (Exception e) {
+ LOGGER.error("",e);
+ this.startDate = new Date(dt.getTime());
+ this.endDate = new Date(dt.getTime());
+ }
+ }
+
+ public Date getEndDate() {
+ return endDate;
+ }
+
+ public Date getStartDate() {
+ return startDate;
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/EmailTemplatesUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/EmailTemplatesUtils.java
new file mode 100644
index 0000000..e0877fd
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/EmailTemplatesUtils.java
@@ -0,0 +1,499 @@
+package com.salesmanager.web.utils;
+
+import java.util.Date;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.impl.cookie.DateUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import com.salesmanager.core.business.catalog.product.service.PricingService;
+import com.salesmanager.core.business.catalog.product.service.ProductService;
+import com.salesmanager.core.business.customer.model.Customer;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.order.model.Order;
+import com.salesmanager.core.business.order.model.OrderTotal;
+import com.salesmanager.core.business.order.model.orderproduct.OrderProduct;
+import com.salesmanager.core.business.order.model.orderstatus.OrderStatusHistory;
+import com.salesmanager.core.business.reference.country.model.Country;
+import com.salesmanager.core.business.reference.country.service.CountryService;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.core.business.reference.zone.model.Zone;
+import com.salesmanager.core.business.reference.zone.service.ZoneService;
+import com.salesmanager.core.business.system.service.EmailService;
+import com.salesmanager.core.modules.email.Email;
+import com.salesmanager.web.constants.ApplicationConstants;
+import com.salesmanager.web.constants.EmailConstants;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.shop.ContactForm;
+
+
+@Component
+public class EmailTemplatesUtils {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(EmailTemplatesUtils.class);
+
+ @Autowired
+ private EmailService emailService;
+
+ @Autowired
+ private LabelUtils messages;
+
+ @Autowired
+ private CountryService countryService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @Autowired
+ private PricingService pricingService;
+
+ private final static String LINE_BREAK = "<br/>";
+ private final static String TABLE = "<table width=\"100%\">";
+ private final static String CLOSING_TABLE = "</table>";
+ private final static String TR = "<tr>";
+ private final static String TR_BORDER = "<tr class=\"border\">";
+ private final static String CLOSING_TR = "</tr>";
+ private final static String TD = "<td valign=\"top\">";
+ private final static String CLOSING_TD = "</td>";
+
+
+ /**
+ * Sends an email to the customer afer a completed order
+ * @param customer
+ * @param order
+ * @param customerLocale
+ * @param language
+ * @param merchantStore
+ * @param contextPath
+ */
+ @Async
+ public void sendOrderEmail(Customer customer, Order order, Locale customerLocale, Language language, MerchantStore merchantStore, String contextPath) {
+ /** issue with putting that elsewhere **/
+ LOGGER.info( "Sending welcome email to customer" );
+ try {
+
+ Map<String,Zone> zones = zoneService.getZones(language);
+
+ Map<String,Country> countries = countryService.getCountriesMap(language);
+
+ //format Billing address
+ StringBuilder billing = new StringBuilder();
+ if(StringUtils.isBlank(order.getBilling().getCompany())) {
+ billing.append(order.getBilling().getFirstName()).append(" ")
+ .append(order.getBilling().getLastName()).append(LINE_BREAK);
+ } else {
+ billing.append(order.getBilling().getCompany()).append(LINE_BREAK);
+ }
+ billing.append(order.getBilling().getAddress()).append(LINE_BREAK);
+ billing.append(order.getBilling().getCity()).append(", ");
+
+ if(order.getBilling().getZone()!=null) {
+ Zone zone = zones.get(order.getBilling().getZone().getCode());
+ if(zone!=null) {
+ billing.append(zone.getName());
+ } else {
+ billing.append(zone.getCode());
+ }
+ billing.append(LINE_BREAK);
+ } else if(!StringUtils.isBlank(order.getBilling().getState())) {
+ billing.append(order.getBilling().getState()).append(LINE_BREAK);
+ }
+ Country country = countries.get(order.getBilling().getCountry().getIsoCode());
+ if(country!=null) {
+ billing.append(country.getName()).append(" ");
+ }
+ billing.append(order.getBilling().getPostalCode());
+
+
+ //format shipping address
+ StringBuilder shipping = null;
+ if(order.getDelivery()!=null && !StringUtils.isBlank(order.getDelivery().getFirstName())) {
+ shipping = new StringBuilder();
+ if(StringUtils.isBlank(order.getDelivery().getCompany())) {
+ shipping.append(order.getDelivery().getFirstName()).append(" ")
+ .append(order.getDelivery().getLastName()).append(LINE_BREAK);
+ } else {
+ shipping.append(order.getDelivery().getCompany()).append(LINE_BREAK);
+ }
+ shipping.append(order.getDelivery().getAddress()).append(LINE_BREAK);
+ shipping.append(order.getDelivery().getCity()).append(", ");
+
+ if(order.getDelivery().getZone()!=null) {
+ Zone zone = zones.get(order.getDelivery().getZone().getCode());
+ if(zone!=null) {
+ shipping.append(zone.getName());
+ } else {
+ shipping.append(zone.getCode());
+ }
+ shipping.append(LINE_BREAK);
+ } else if(!StringUtils.isBlank(order.getDelivery().getState())) {
+ shipping.append(order.getDelivery().getState()).append(LINE_BREAK);
+ }
+ Country deliveryCountry = countries.get(order.getDelivery().getCountry().getIsoCode());
+ if(country!=null) {
+ shipping.append(deliveryCountry.getName()).append(" ");
+ }
+ shipping.append(order.getDelivery().getPostalCode());
+ }
+
+ if(shipping==null && StringUtils.isNotBlank(order.getShippingModuleCode())) {
+ //TODO IF HAS NO SHIPPING
+ shipping = billing;
+ }
+
+ //format order
+ //String storeUri = FilePathUtils.buildStoreUri(merchantStore, contextPath);
+ StringBuilder orderTable = new StringBuilder();
+ orderTable.append(TABLE);
+ for(OrderProduct product : order.getOrderProducts()) {
+ //Product productModel = productService.getByCode(product.getSku(), language);
+ orderTable.append(TR);
+ //images are ugly
+/* orderTable.append(TD);
+ if(productModel!=null && productModel.getProductImage()!=null) {
+ String productImage = new StringBuilder().append(storeUri).append(ImageFilePathUtils.buildProductImageFilePath(merchantStore, productModel, productModel.getProductImage().getProductImage())).toString();
+
+ String imgSrc = new StringBuilder().append("<img src=\"").append(productImage).append("\" width=\"40\">").toString();
+ orderTable.append(imgSrc);
+ } else {
+ orderTable.append(" ");
+ }
+ orderTable.append(CLOSING_TD);*/
+ orderTable.append(TD).append(product.getProductName()).append(CLOSING_TD);
+ orderTable.append(TD).append(messages.getMessage("label.quantity", customerLocale)).append(": ").append(product.getProductQuantity()).append(CLOSING_TD);
+ orderTable.append(TD).append(pricingService.getDisplayAmount(product.getOneTimeCharge(), merchantStore)).append(CLOSING_TD);
+ orderTable.append(CLOSING_TR);
+ }
+
+ //order totals
+ for(OrderTotal total : order.getOrderTotal()) {
+ orderTable.append(TR_BORDER);
+ //orderTable.append(TD);
+ //orderTable.append(CLOSING_TD);
+ orderTable.append(TD);
+ orderTable.append(CLOSING_TD);
+ orderTable.append(TD);
+ orderTable.append("<strong>");
+ if(total.getModule().equals("tax")) {
+ orderTable.append(total.getText()).append(": ");
+
+ } else {
+ //if(total.getModule().equals("total") || total.getModule().equals("subtotal")) {
+ //}
+ orderTable.append(messages.getMessage(total.getOrderTotalCode(), customerLocale)).append(": ");
+ //if(total.getModule().equals("total") || total.getModule().equals("subtotal")) {
+
+ //}
+ }
+ orderTable.append("</strong>");
+ orderTable.append(CLOSING_TD);
+ orderTable.append(TD);
+ orderTable.append("<strong>");
+
+ orderTable.append(pricingService.getDisplayAmount(total.getValue(), merchantStore));
+
+ orderTable.append("</strong>");
+ orderTable.append(CLOSING_TD);
+ orderTable.append(CLOSING_TR);
+ }
+ orderTable.append(CLOSING_TABLE);
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(contextPath, merchantStore, messages, customerLocale);
+ templateTokens.put(EmailConstants.LABEL_HI, messages.getMessage("label.generic.hi", customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_FIRSTNAME, order.getBilling().getFirstName());
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_LASTNAME, order.getBilling().getLastName());
+
+ String[] params = {String.valueOf(order.getId())};
+ String[] dt = {DateUtils.formatDate(order.getDatePurchased())};
+ templateTokens.put(EmailConstants.EMAIL_ORDER_NUMBER, messages.getMessage("email.order.confirmation", params, customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_ORDER_DATE, messages.getMessage("email.order.ordered", dt, customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_ORDER_THANKS, messages.getMessage("email.order.thanks",customerLocale));
+ templateTokens.put(EmailConstants.ADDRESS_BILLING, billing.toString());
+
+ templateTokens.put(EmailConstants.ORDER_PRODUCTS_DETAILS, orderTable.toString());
+ templateTokens.put(EmailConstants.EMAIL_ORDER_DETAILS_TITLE, messages.getMessage("label.order.details",customerLocale));
+ templateTokens.put(EmailConstants.ADDRESS_BILLING_TITLE, messages.getMessage("label.customer.billinginformation",customerLocale));
+ templateTokens.put(EmailConstants.PAYMENT_METHOD_TITLE, messages.getMessage("label.order.paymentmode",customerLocale));
+ templateTokens.put(EmailConstants.PAYMENT_METHOD_DETAILS, messages.getMessage(new StringBuilder().append("payment.type.").append(order.getPaymentType().name()).toString(),customerLocale,order.getPaymentType().name()));
+
+ if(StringUtils.isNotBlank(order.getShippingModuleCode())) {
+ templateTokens.put(EmailConstants.SHIPPING_METHOD_DETAILS, messages.getMessage(new StringBuilder().append("module.shipping.").append(order.getShippingModuleCode()).toString(),customerLocale,order.getShippingModuleCode()));
+ templateTokens.put(EmailConstants.ADDRESS_SHIPPING_TITLE, messages.getMessage("label.order.shippingmethod",customerLocale));
+ templateTokens.put(EmailConstants.ADDRESS_DELIVERY_TITLE, messages.getMessage("label.customer.shippinginformation",customerLocale));
+ templateTokens.put(EmailConstants.SHIPPING_METHOD_TITLE, messages.getMessage("label.customer.shippinginformation",customerLocale));
+ templateTokens.put(EmailConstants.ADDRESS_DELIVERY, shipping.toString());
+ } else {
+ templateTokens.put(EmailConstants.SHIPPING_METHOD_DETAILS, "");
+ templateTokens.put(EmailConstants.ADDRESS_SHIPPING_TITLE, "");
+ templateTokens.put(EmailConstants.ADDRESS_DELIVERY_TITLE, "");
+ templateTokens.put(EmailConstants.SHIPPING_METHOD_TITLE, "");
+ templateTokens.put(EmailConstants.ADDRESS_DELIVERY, "");
+ }
+
+ String status = messages.getMessage("label.order." + order.getStatus().name(), customerLocale, order.getStatus().name());
+ String[] statusMessage = {DateUtils.formatDate(order.getDatePurchased()),status};
+ templateTokens.put(EmailConstants.ORDER_STATUS, messages.getMessage("email.order.status", statusMessage, customerLocale));
+
+
+ String[] title = {merchantStore.getStorename(), String.valueOf(order.getId())};
+ Email email = new Email();
+ email.setFrom(merchantStore.getStorename());
+ email.setFromEmail(merchantStore.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("email.order.title", title, customerLocale));
+ email.setTo(customer.getEmailAddress());
+ email.setTemplateName(EmailConstants.EMAIL_ORDER_TPL);
+ email.setTemplateTokens(templateTokens);
+
+ LOGGER.debug( "Sending email to {} for order id {} ",customer.getEmailAddress(), order.getId() );
+ emailService.sendHtmlEmail(merchantStore, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Error occured while sending order confirmation email ",e);
+ }
+
+ }
+
+ /**
+ * Sends an email to the customer after registration
+ * @param request
+ * @param customer
+ * @param merchantStore
+ * @param customerLocale
+ */
+ @Async
+ public void sendRegistrationEmail(
+ PersistableCustomer customer, MerchantStore merchantStore,
+ Locale customerLocale, String contextPath) {
+ /** issue with putting that elsewhere **/
+ LOGGER.info( "Sending welcome email to customer" );
+ try {
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(contextPath, merchantStore, messages, customerLocale);
+ templateTokens.put(EmailConstants.LABEL_HI, messages.getMessage("label.generic.hi", customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_FIRSTNAME, customer.getBilling().getFirstName());
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_LASTNAME, customer.getBilling().getLastName());
+ String[] greetingMessage = {merchantStore.getStorename(),FilePathUtils.buildCustomerUri(merchantStore,contextPath),merchantStore.getStoreEmailAddress()};
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_GREETING, messages.getMessage("email.customer.greeting", greetingMessage, customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_USERNAME_LABEL, messages.getMessage("label.generic.username",customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_PASSWORD_LABEL, messages.getMessage("label.generic.password",customerLocale));
+ templateTokens.put(EmailConstants.CUSTOMER_ACCESS_LABEL, messages.getMessage("label.customer.accessportal",customerLocale));
+ templateTokens.put(EmailConstants.ACCESS_NOW_LABEL, messages.getMessage("label.customer.accessnow",customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_USER_NAME, customer.getUserName());
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_PASSWORD, customer.getClearPassword());
+
+ //shop url
+ String customerUrl = FilePathUtils.buildStoreUri(merchantStore, contextPath);
+ templateTokens.put(EmailConstants.CUSTOMER_ACCESS_URL, customerUrl);
+
+ Email email = new Email();
+ email.setFrom(merchantStore.getStorename());
+ email.setFromEmail(merchantStore.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("email.newuser.title",customerLocale));
+ email.setTo(customer.getEmailAddress());
+ email.setTemplateName(EmailConstants.EMAIL_CUSTOMER_TPL);
+ email.setTemplateTokens(templateTokens);
+
+ LOGGER.debug( "Sending email to {} on their registered email id {} ",customer.getBilling().getFirstName(),customer.getEmailAddress() );
+ emailService.sendHtmlEmail(merchantStore, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Error occured while sending welcome email ",e);
+ }
+
+ }
+
+ public void sendContactEmail(
+ ContactForm contact, MerchantStore merchantStore,
+ Locale storeLocale, String contextPath) {
+ /** issue with putting that elsewhere **/
+ LOGGER.info( "Sending welcome email to customer" );
+ try {
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(contextPath, merchantStore, messages, storeLocale);
+
+ templateTokens.put(EmailConstants.EMAIL_CONTACT_NAME, contact.getName());
+ templateTokens.put(EmailConstants.EMAIL_CONTACT_EMAIL, contact.getEmail());
+ templateTokens.put(EmailConstants.EMAIL_CONTACT_CONTENT, contact.getComment());
+
+ String[] contactSubject = {contact.getSubject()};
+
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_CONTACT, messages.getMessage("email.contact",contactSubject, storeLocale));
+ templateTokens.put(EmailConstants.EMAIL_CONTACT_NAME_LABEL, messages.getMessage("label.entity.name",storeLocale));
+ templateTokens.put(EmailConstants.EMAIL_CONTACT_EMAIL_LABEL, messages.getMessage("label.generic.email",storeLocale));
+
+
+
+ Email email = new Email();
+ email.setFrom(merchantStore.getStorename());
+ email.setFromEmail(contact.getEmail());
+ email.setSubject(messages.getMessage("email.contact.title",storeLocale));
+ email.setTo(merchantStore.getStoreEmailAddress());
+ email.setTemplateName(EmailConstants.EMAIL_CONTACT_TMPL);
+ email.setTemplateTokens(templateTokens);
+
+ LOGGER.debug( "Sending contact email");
+ emailService.sendHtmlEmail(merchantStore, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Error occured while sending contact email ",e);
+ }
+
+ }
+
+ /**
+ * Send an email to the customer with last order status
+ * @param request
+ * @param customer
+ * @param order
+ * @param merchantStore
+ * @param customerLocale
+ */
+ @Async
+ public void sendUpdateOrderStatusEmail(
+ Customer customer, Order order, OrderStatusHistory lastHistory, MerchantStore merchantStore,
+ Locale customerLocale, String contextPath) {
+ /** issue with putting that elsewhere **/
+ LOGGER.info( "Sending order status email to customer" );
+ try {
+
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(contextPath, merchantStore, messages, customerLocale);
+
+ templateTokens.put(EmailConstants.LABEL_HI, messages.getMessage("label.generic.hi", customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_FIRSTNAME, customer.getBilling().getFirstName());
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_LASTNAME, customer.getBilling().getLastName());
+
+ String[] statusMessageText = {String.valueOf(order.getId()),DateUtils.formatDate(order.getDatePurchased())};
+ String status = messages.getMessage("label.order." + order.getStatus().name(), customerLocale, order.getStatus().name());
+ String[] statusMessage = {DateUtils.formatDate(lastHistory.getDateAdded()),status};
+
+ String comments = lastHistory.getComments();
+ if(StringUtils.isBlank(comments)) {
+ comments = messages.getMessage("label.order." + order.getStatus().name(), customerLocale, order.getStatus().name());
+ }
+
+ templateTokens.put(EmailConstants.EMAIL_ORDER_STATUS_TEXT, messages.getMessage("email.order.statustext", statusMessageText, customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_ORDER_STATUS, messages.getMessage("email.order.status", statusMessage, customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_TEXT_STATUS_COMMENTS, comments);
+
+
+ Email email = new Email();
+ email.setFrom(merchantStore.getStorename());
+ email.setFromEmail(merchantStore.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("email.order.status.title",new String[]{String.valueOf(order.getId())},customerLocale));
+ email.setTo(customer.getEmailAddress());
+ email.setTemplateName(EmailConstants.ORDER_STATUS_TMPL);
+ email.setTemplateTokens(templateTokens);
+
+
+
+ emailService.sendHtmlEmail(merchantStore, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Error occured while sending order download email ",e);
+ }
+
+ }
+
+ /**
+ * Send download email instructions to customer
+ * @param customer
+ * @param order
+ * @param merchantStore
+ * @param customerLocale
+ * @param contextPath
+ */
+ @Async
+ public void sendOrderDownloadEmail(
+ Customer customer, Order order, MerchantStore merchantStore,
+ Locale customerLocale, String contextPath) {
+ /** issue with putting that elsewhere **/
+ LOGGER.info( "Sending download email to customer" );
+ try {
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(contextPath, merchantStore, messages, customerLocale);
+ templateTokens.put(EmailConstants.LABEL_HI, messages.getMessage("label.generic.hi", customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_FIRSTNAME, customer.getBilling().getFirstName());
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_LASTNAME, customer.getBilling().getLastName());
+ String[] downloadMessage = {String.valueOf(ApplicationConstants.MAX_DOWNLOAD_DAYS), String.valueOf(order.getId()), FilePathUtils.buildCustomerUri(merchantStore, contextPath), merchantStore.getStoreEmailAddress()};
+ templateTokens.put(EmailConstants.EMAIL_ORDER_DOWNLOAD, messages.getMessage("email.order.download.text", downloadMessage, customerLocale));
+ templateTokens.put(EmailConstants.CUSTOMER_ACCESS_LABEL, messages.getMessage("label.customer.accessportal",customerLocale));
+ templateTokens.put(EmailConstants.ACCESS_NOW_LABEL, messages.getMessage("label.customer.accessnow",customerLocale));
+
+ //shop url
+ String customerUrl = FilePathUtils.buildStoreUri(merchantStore, contextPath);
+ templateTokens.put(EmailConstants.CUSTOMER_ACCESS_URL, customerUrl);
+
+ String[] orderInfo = {String.valueOf(order.getId())};
+
+ Email email = new Email();
+ email.setFrom(merchantStore.getStorename());
+ email.setFromEmail(merchantStore.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("email.order.download.title", orderInfo, customerLocale));
+ email.setTo(customer.getEmailAddress());
+ email.setTemplateName(EmailConstants.EMAIL_ORDER_DOWNLOAD_TPL);
+ email.setTemplateTokens(templateTokens);
+
+ LOGGER.debug( "Sending email to {} with download info",customer.getEmailAddress() );
+ emailService.sendHtmlEmail(merchantStore, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Error occured while sending order download email ",e);
+ }
+
+ }
+
+ /**
+ * Sends a change password notification email to the Customer
+ * @param customer
+ * @param merchantStore
+ * @param customerLocale
+ * @param contextPath
+ */
+ @Async
+ public void changePasswordNotificationEmail(
+ Customer customer, MerchantStore merchantStore,
+ Locale customerLocale, String contextPath) {
+ LOGGER.debug( "Sending change password email" );
+ try {
+
+
+ Map<String, String> templateTokens = EmailUtils.createEmailObjectsMap(contextPath, merchantStore, messages, customerLocale);
+
+ templateTokens.put(EmailConstants.LABEL_HI, messages.getMessage("label.generic.hi", customerLocale));
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_FIRSTNAME, customer.getBilling().getFirstName());
+ templateTokens.put(EmailConstants.EMAIL_CUSTOMER_LASTNAME, customer.getBilling().getLastName());
+
+ String[] date = {DateUtil.formatLongDate(new Date())};
+
+ templateTokens.put(EmailConstants.EMAIL_NOTIFICATION_MESSAGE, messages.getMessage("label.notification.message.passwordchanged", date, customerLocale));
+
+
+ Email email = new Email();
+ email.setFrom(merchantStore.getStorename());
+ email.setFromEmail(merchantStore.getStoreEmailAddress());
+ email.setSubject(messages.getMessage("label.notification.title.passwordchanged",customerLocale));
+ email.setTo(customer.getEmailAddress());
+ email.setTemplateName(EmailConstants.EMAIL_NOTIFICATION_TMPL);
+ email.setTemplateTokens(templateTokens);
+
+
+
+ emailService.sendHtmlEmail(merchantStore, email);
+
+ } catch (Exception e) {
+ LOGGER.error("Error occured while sending change password email ",e);
+ }
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/EmailUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/EmailUtils.java
new file mode 100755
index 0000000..65e156c
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/EmailUtils.java
@@ -0,0 +1,55 @@
+package com.salesmanager.web.utils;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+
+
+public class EmailUtils {
+
+ private final static String EMAIL_STORE_NAME = "EMAIL_STORE_NAME";
+ private final static String EMAIL_FOOTER_COPYRIGHT = "EMAIL_FOOTER_COPYRIGHT";
+ private final static String EMAIL_DISCLAIMER = "EMAIL_DISCLAIMER";
+ private final static String EMAIL_SPAM_DISCLAIMER = "EMAIL_SPAM_DISCLAIMER";
+ private final static String EMAIL_ADMIN_LABEL = "EMAIL_ADMIN_LABEL";
+ private final static String LOGOPATH = "LOGOPATH";
+
+ /**
+ * Builds generic html email information
+ * @param store
+ * @param messages
+ * @param locale
+ * @return
+ */
+ public static Map<String, String> createEmailObjectsMap(String contextPath, MerchantStore store, LabelUtils messages, Locale locale){
+
+ Map<String, String> templateTokens = new HashMap<String, String>();
+
+ String[] adminNameArg = {store.getStorename()};
+ String[] adminEmailArg = {store.getStoreEmailAddress()};
+ String[] copyArg = {store.getStorename(), DateUtil.getPresentYear()};
+
+ templateTokens.put(EMAIL_ADMIN_LABEL, messages.getMessage("email.message.from", adminNameArg, locale));
+ templateTokens.put(EMAIL_STORE_NAME, store.getStorename());
+ templateTokens.put(EMAIL_FOOTER_COPYRIGHT, messages.getMessage("email.copyright", copyArg, locale));
+ templateTokens.put(EMAIL_DISCLAIMER, messages.getMessage("email.disclaimer", adminEmailArg, locale));
+ templateTokens.put(EMAIL_SPAM_DISCLAIMER, messages.getMessage("email.spam.disclaimer", locale));
+
+ if(store.getStoreLogo()!=null) {
+ StringBuilder logoPath = new StringBuilder();
+ String scheme = Constants.HTTP_SCHEME;
+ logoPath.append("<img src='").append(scheme).append("://").append(store.getDomainName()).append(contextPath).append("/").append(ImageFilePathUtils.buildStoreLogoFilePath(store)).append("' style='max-width:400px;'>");
+ templateTokens.put(LOGOPATH, logoPath.toString());
+ } else {
+ templateTokens.put(LOGOPATH, store.getStorename());
+ }
+
+ return templateTokens;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/FieldMatch.java b/sm-shop/src/main/java/com/salesmanager/web/utils/FieldMatch.java
new file mode 100644
index 0000000..681d1c3
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/FieldMatch.java
@@ -0,0 +1,70 @@
+/**
+ *
+ */
+package com.salesmanager.web.utils;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+
+/**
+ *
+ * Validation annotation to validate that 2 fields have the same value.
+ * An array of fields and their matching confirmation fields can be supplied.
+ *
+ * Example, compare 1 pair of fields:
+ * @FieldMatch(first = "password", second = "confirmPassword", message = "The password fields must match")
+ *
+ * Example, compare more than 1 pair of fields:
+ * @FieldMatch.List({
+ * @FieldMatch(first = "password", second = "confirmPassword", message = "The password fields must match"),
+ * @FieldMatch(first = "email", second = "confirmEmail", message = "The email fields must match")})
+ *
+ * @author Umesh Awasthi
+ *
+ */
+
+@Constraint(validatedBy = FieldMatchValidator.class)
+@Documented
+@Target({TYPE, ANNOTATION_TYPE})
+@Retention(RUNTIME)
+public @interface FieldMatch
+{
+
+ String message() default "Fields are not matching";
+
+ Class<?>[] groups() default {};
+
+ Class<? extends Payload>[] payload() default {};
+
+ /**
+ * @return The first field
+ */
+ String first();
+
+ /**
+ * @return The second field
+ */
+ String second();
+
+ /**
+ * Defines several <code>@FieldMatch</code> annotations on the same element
+ *
+ * @see FieldMatch
+ */
+ @Target({TYPE, ANNOTATION_TYPE})
+ @Retention(RUNTIME)
+ @Documented
+ @interface List
+ {
+ FieldMatch[] value();
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/FieldMatchValidator.java b/sm-shop/src/main/java/com/salesmanager/web/utils/FieldMatchValidator.java
new file mode 100644
index 0000000..8c602fb
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/FieldMatchValidator.java
@@ -0,0 +1,45 @@
+package com.salesmanager.web.utils;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+
+public class FieldMatchValidator implements ConstraintValidator<FieldMatch, Object>
+{
+
+ private static final Logger LOG=LoggerFactory.getLogger(FieldMatchValidator.class);
+ private String firstFieldName;
+ private String secondFieldName;
+ private BeanUtils beanUtils;
+
+ @Override
+ public void initialize(final FieldMatch constraintAnnotation)
+ {
+ this.firstFieldName = constraintAnnotation.first();
+ this.secondFieldName = constraintAnnotation.second();
+ this.beanUtils=BeanUtils.newInstance();
+ }
+
+ @SuppressWarnings( "nls" )
+ @Override
+ public boolean isValid(final Object value, final ConstraintValidatorContext context)
+ {
+ try
+ {
+ final Object firstObj = this.beanUtils.getPropertyValue(value, this.firstFieldName);
+ final Object secondObj = this.beanUtils.getPropertyValue(value, this.secondFieldName);
+ return firstObj == null && secondObj == null || firstObj != null && firstObj.equals(secondObj);
+ }
+ catch (final Exception ex)
+ {
+ LOG.info( "Error while getting values from object", ex );
+ return false;
+
+ }
+
+ }
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/FilePathUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/FilePathUtils.java
new file mode 100644
index 0000000..8a32720
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/FilePathUtils.java
@@ -0,0 +1,184 @@
+package com.salesmanager.web.utils;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.salesmanager.core.business.catalog.product.model.file.DigitalProduct;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+import com.salesmanager.web.entity.order.ReadableOrderProductDownload;
+
+public class FilePathUtils {
+
+
+ private final static String CUSTOMER_ACCESS_LINK = Constants.SHOP_URI + "/customer/dashboard.html";
+ private final static String DOWNLOADS = "/downloads/";
+
+
+ /**
+ * Builds a static content content file path that can be used by image servlet
+ * utility for getting the physical image
+ * @param store
+ * @param imageName
+ * @return
+ */
+ public static String buildStaticFilePath(MerchantStore store, String imageName) {
+ return new StringBuilder().append(Constants.FILES_URI).append(Constants.SLASH).append(store.getCode()).append(Constants.SLASH).append(imageName).toString();
+ }
+
+ public static String buildAdminDownloadProductFilePath(MerchantStore store, DigitalProduct digitalProduct) {
+ return new StringBuilder().append(Constants.ADMIN_URI).append(Constants.FILES_URI).append(DOWNLOADS).append(store.getCode()).append(Constants.SLASH).append(digitalProduct.getProductFileName()).toString();
+ }
+
+ public static String buildOrderDownloadProductFilePath(MerchantStore store, ReadableOrderProductDownload digitalProduct, Long orderId) {
+ return new StringBuilder().append(Constants.SHOP_URI).append(Constants.ORDER_DOWNLOAD_URI).append(Constants.SLASH).append(orderId).append(Constants.SLASH).append(digitalProduct.getId()).append(Constants.URL_EXTENSION).toString();
+ }
+
+ /**
+ * Builds http://<domain name>/<context path>
+ * @param store
+ * @param request
+ * @return
+ */
+ public static String buildStoreUri(MerchantStore store, HttpServletRequest request) {
+ StringBuilder resourcePath = new StringBuilder();
+ HttpSession session= request.getSession();
+ @SuppressWarnings("unchecked")
+ Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+ String domainName = store.getDomainName();
+ if(StringUtils.isBlank(domainName)) {
+ domainName = Constants.DEFAULT_DOMAIN_NAME;
+ }
+
+ resourcePath.append(scheme).append("://")
+ .append(domainName)
+ .append(request.getContextPath());
+
+ return resourcePath.toString();
+
+ }
+
+ public static String buildStoreUri(MerchantStore store, String contextPath) {
+ StringBuilder resourcePath = new StringBuilder();
+ String scheme = Constants.HTTP_SCHEME;
+
+ String domainName = store.getDomainName();
+ if(StringUtils.isBlank(domainName)) {
+ domainName = Constants.DEFAULT_DOMAIN_NAME;
+ }
+
+ resourcePath.append(scheme).append("://")
+ .append(domainName)
+ .append(contextPath);
+
+ return resourcePath.toString();
+
+ }
+
+
+ /**
+ * Access to the customer section
+ * @param store
+ * @param request
+ * @return
+ */
+ public static String buildCustomerUri(MerchantStore store, String contextPath) {
+/* StringBuilder resourcePath = new StringBuilder();
+ //@SuppressWarnings("unchecked")
+ //Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ //if(configurations!=null) {
+ // scheme = (String)configurations.get("scheme");
+ //}
+
+ String domainName = store.getDomainName();
+ if(StringUtils.isBlank(domainName)) {
+ domainName = Constants.DEFAULT_DOMAIN_NAME;
+ }
+
+ resourcePath.append(scheme).append("://")
+ .append(domainName)
+ .append(contextPath)
+ .append(CUSTOMER_ACCESS_LINK);
+
+ return resourcePath.toString();*/
+
+ StringBuilder resourcePath = new StringBuilder();
+ String scheme = Constants.HTTP_SCHEME;
+
+ String domainName = store.getDomainName();
+ if(StringUtils.isBlank(domainName)) {
+ domainName = Constants.DEFAULT_DOMAIN_NAME;
+ }
+
+ resourcePath.append(scheme).append("://")
+ .append(domainName)
+ .append(contextPath);
+
+ return resourcePath.toString();
+
+ }
+
+ public static String buildAdminUri(MerchantStore store, HttpServletRequest request) {
+ StringBuilder resourcePath = new StringBuilder();
+ HttpSession session= request.getSession();
+ @SuppressWarnings("unchecked")
+ Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
+ String scheme = Constants.HTTP_SCHEME;
+ if(configurations!=null) {
+ scheme = (String)configurations.get("scheme");
+ }
+
+ String domainName = store.getDomainName();
+ if(StringUtils.isBlank(domainName)) {
+ domainName = Constants.DEFAULT_DOMAIN_NAME;
+ }
+
+ resourcePath.append(scheme).append("://")
+ .append(domainName)
+ .append(request.getContextPath())
+ .append(Constants.ADMIN_URI);
+
+ return resourcePath.toString();
+
+ }
+
+ public static String buildCategoryUrl(MerchantStore store, String contextPath, String url) {
+ StringBuilder resourcePath = new StringBuilder();
+ resourcePath.append(buildStoreUri(store, contextPath))
+
+ .append(Constants.SHOP_URI)
+
+ .append(Constants.CATEGORY_URI)
+ .append(Constants.SLASH)
+ .append(url)
+ .append(Constants.URL_EXTENSION);
+
+ return resourcePath.toString();
+
+ }
+
+ public static String buildProductUrl(MerchantStore store, String contextPath, String url) {
+ StringBuilder resourcePath = new StringBuilder();
+ resourcePath.append(buildStoreUri(store, contextPath))
+ .append(Constants.SHOP_URI)
+ .append(Constants.PRODUCT_URI)
+ .append(Constants.SLASH)
+ .append(url)
+ .append(Constants.URL_EXTENSION);
+
+ return resourcePath.toString();
+
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/GeoLocationUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/GeoLocationUtils.java
new file mode 100644
index 0000000..6ed7937
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/GeoLocationUtils.java
@@ -0,0 +1,31 @@
+package com.salesmanager.web.utils;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class GeoLocationUtils {
+
+
+ private static final String[] HEADERS_TO_TRY = {
+ "X-Forwarded-For",
+ "Proxy-Client-IP",
+ "WL-Proxy-Client-IP",
+ "HTTP_X_FORWARDED_FOR",
+ "HTTP_X_FORWARDED",
+ "HTTP_X_CLUSTER_CLIENT_IP",
+ "HTTP_CLIENT_IP",
+ "HTTP_FORWARDED_FOR",
+ "HTTP_FORWARDED",
+ "HTTP_VIA",
+ "REMOTE_ADDR" };
+
+ public static String getClientIpAddress(HttpServletRequest request) {
+ for (String header : HEADERS_TO_TRY) {
+ String ip = request.getHeader(header);
+ if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
+ return ip;
+ }
+ }
+ return request.getRemoteAddr();
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/ImageFilePathUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/ImageFilePathUtils.java
new file mode 100644
index 0000000..66b73bb
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/ImageFilePathUtils.java
@@ -0,0 +1,98 @@
+package com.salesmanager.web.utils;
+
+import com.salesmanager.core.business.catalog.product.model.Product;
+import com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer;
+import com.salesmanager.core.business.content.model.FileContentType;
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.constants.Constants;
+
+public class ImageFilePathUtils {
+
+ /**
+ * Builds a static content image file path that can be used by image servlet
+ * utility for getting the physical image
+ * @param store
+ * @param imageName
+ * @return
+ */
+ public static String buildStaticImageFilePath(MerchantStore store, String imageName) {
+ return new StringBuilder().append(Constants.STATIC_URI).append("/").append(store.getCode()).append("/").append(FileContentType.IMAGE.name()).append("/").append(imageName).toString();
+ }
+
+ /**
+ * Builds a manufacturer image file path that can be used by image servlet
+ * utility for getting the physical image
+ * @param store
+ * @param manufacturer
+ * @param imageName
+ * @return
+ */
+ public static String buildManufacturerImageFilePath(MerchantStore store, Manufacturer manufacturer, String imageName) {
+ return new StringBuilder().append(Constants.STATIC_URI).append("/").append(store.getCode()).append("/").
+ append(FileContentType.MANUFACTURER.name()).append("/")
+ .append(manufacturer.getId()).append("/")
+ .append(imageName).toString();
+ }
+
+ /**
+ * Builds a product image file path that can be used by image servlet
+ * utility for getting the physical image
+ * @param store
+ * @param product
+ * @param imageName
+ * @return
+ */
+ public static String buildProductImageFilePath(MerchantStore store, Product product, String imageName) {
+ return new StringBuilder().append(Constants.STATIC_URI).append("/").append(store.getCode()).append("/").append(FileContentType.PRODUCT.name()).append("/")
+ .append(product.getSku()).append("/").append(imageName).toString();
+ }
+
+ /**
+ * Builds a default product image file path that can be used by image servlet
+ * utility for getting the physical image
+ * @param store
+ * @param sku
+ * @param imageName
+ * @return
+ */
+ public static String buildProductImageFilePath(MerchantStore store, String sku, String imageName) {
+ return new StringBuilder().append(Constants.STATIC_URI).append("/").append(store.getCode()).append("/").append(FileContentType.PRODUCT.name()).append("/")
+ .append(sku).append("/").append(imageName).toString();
+ }
+
+ /**
+ * Builds a large product image file path that can be used by the image servlet
+ * @param store
+ * @param sku
+ * @param imageName
+ * @return
+ */
+ public static String buildLargeProductImageFilePath(MerchantStore store, String sku, String imageName) {
+ return new StringBuilder().append(Constants.STATIC_URI).append("/").append(store.getCode()).append("/").append(FileContentType.PRODUCTLG.name()).append("/")
+ .append(sku).append("/").append(imageName).toString();
+ }
+
+
+
+ /**
+ * Builds a merchant store logo path
+ * @param store
+ * @return
+ */
+ public static String buildStoreLogoFilePath(MerchantStore store) {
+ return new StringBuilder().append(Constants.STATIC_URI).append("/").append(store.getCode()).append("/").append(FileContentType.LOGO).append("/")
+ .append(store.getStoreLogo()).toString();
+ }
+
+ /**
+ * Builds product property image url path
+ * @param store
+ * @param imageName
+ * @return
+ */
+ public static String buildProductPropertyImageFilePath(MerchantStore store, String imageName) {
+ return new StringBuilder().append(Constants.STATIC_URI).append("/").append(store.getCode()).append("/").append(FileContentType.PROPERTY).append("/")
+ .append(imageName).toString();
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/LabelUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/LabelUtils.java
new file mode 100644
index 0000000..abe464e
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/LabelUtils.java
@@ -0,0 +1,36 @@
+package com.salesmanager.web.utils;
+
+import java.util.Locale;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+public class LabelUtils implements ApplicationContextAware {
+
+
+ private ApplicationContext applicationContext;
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext)
+ throws BeansException {
+ this.applicationContext = applicationContext;
+
+ }
+
+ public String getMessage(String key, Locale locale) {
+ return applicationContext.getMessage(key, null, locale);
+ }
+
+ public String getMessage(String key, Locale locale, String defaultValue) {
+ try {
+ return applicationContext.getMessage(key, null, locale);
+ } catch(Exception ignore) {}
+ return defaultValue;
+ }
+
+ public String getMessage(String key, String[] args, Locale locale) {
+ return applicationContext.getMessage(key, args, locale);
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/LocaleUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/LocaleUtils.java
new file mode 100644
index 0000000..064bc8b
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/LocaleUtils.java
@@ -0,0 +1,54 @@
+package com.salesmanager.web.utils;
+
+import java.util.Locale;
+
+import javax.servlet.http.HttpServletRequest;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.core.business.reference.language.model.Language;
+import com.salesmanager.web.constants.Constants;
+
+public class LocaleUtils {
+
+ public static Locale getLocale(Language language) {
+
+ return new Locale(language.getCode());
+
+ }
+
+ /**
+ * Creates a Locale object for currency format only with country code
+ * This method ignoes the language
+ * @param store
+ * @return
+ */
+ public static Locale getLocale(MerchantStore store) {
+
+ Locale defaultLocale = com.salesmanager.core.constants.Constants.DEFAULT_LOCALE;
+ Locale[] locales = Locale.getAvailableLocales();
+ for(int i = 0; i< locales.length; i++) {
+ Locale l = locales[i];
+ if(l.getISO3Country().equals(store.getCurrency().getCode())) {
+ defaultLocale = l;
+ break;
+ }
+ }
+
+ return defaultLocale;
+
+ }
+
+ public static Language getRequestLanguage(HttpServletRequest request) {
+
+ Language language = (Language) request.getSession().getAttribute(Constants.LANGUAGE);
+ if(language==null) {
+ MerchantStore store = (MerchantStore)request.getSession().getAttribute(Constants.MERCHANT_STORE);
+ if(store!=null) {
+ language = store.getDefaultLanguage();
+ }
+ }
+ return language;
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/MerchantUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/MerchantUtils.java
new file mode 100644
index 0000000..2370287
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/MerchantUtils.java
@@ -0,0 +1,26 @@
+package com.salesmanager.web.utils;
+
+import java.util.Date;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+
+public class MerchantUtils {
+
+ public String getFooterMessage(MerchantStore store, String prefix, String suffix) {
+
+ StringBuilder footerMessage = new StringBuilder();
+
+ if(!StringUtils.isBlank(prefix)) {
+ footerMessage.append(prefix).append(" ");
+ }
+
+ Date sinceDate = null;
+ String inBusinessSince = store.getDateBusinessSince();
+
+
+ return null;
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/PageBuilderUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/PageBuilderUtils.java
new file mode 100644
index 0000000..dc7feb0
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/PageBuilderUtils.java
@@ -0,0 +1,12 @@
+package com.salesmanager.web.utils;
+
+import com.salesmanager.core.business.merchant.model.MerchantStore;
+import com.salesmanager.web.shop.controller.ControllerConstants;
+
+public class PageBuilderUtils {
+
+ public static String build404(MerchantStore store) {
+ return new StringBuilder().append(ControllerConstants.Tiles.Pages.notFound).append(".").append(store.getStoreTemplate()).toString();
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/SessionUtil.java b/sm-shop/src/main/java/com/salesmanager/web/utils/SessionUtil.java
new file mode 100644
index 0000000..23b5a21
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/SessionUtil.java
@@ -0,0 +1,31 @@
+/**
+ *
+ */
+package com.salesmanager.web.utils;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author Umesh Awasthi
+ *
+ */
+public class SessionUtil
+{
+
+
+
+ @SuppressWarnings("unchecked")
+ public static <T> T getSessionAttribute(final String key, HttpServletRequest request) {
+ return (T) request.getSession().getAttribute( key );
+ }
+
+ public static void removeSessionAttribute(final String key, HttpServletRequest request) {
+ request.getSession().removeAttribute( key );
+ }
+
+ public static void setSessionAttribute(final String key, final Object value, HttpServletRequest request) {
+ request.getSession().setAttribute( key, value );
+ }
+
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/TokenizeTool.java b/sm-shop/src/main/java/com/salesmanager/web/utils/TokenizeTool.java
new file mode 100755
index 0000000..b6b157d
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/TokenizeTool.java
@@ -0,0 +1,48 @@
+package com.salesmanager.web.utils;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TokenizeTool {
+
+ private final static String CIPHER = "AES/ECB/PKCS5Padding";
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(TokenizeTool.class);
+
+ private TokenizeTool(){}
+
+ private static SecretKey key = null;
+
+ static {
+
+ try {
+
+ KeyGenerator keygen = KeyGenerator.getInstance("DES");
+ key = keygen.generateKey();
+
+ } catch (Exception e) {
+ LOGGER.error("Cannot generate key",e);
+ }
+
+
+
+
+
+ }
+
+ public static String tokenizeString(String token) throws Exception {
+
+ Cipher aes = Cipher.getInstance(CIPHER);
+ aes.init(Cipher.ENCRYPT_MODE, key);
+ byte[] ciphertext = aes.doFinal(token.getBytes());
+
+ return new String(ciphertext);
+
+
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/web/utils/UserUtils.java b/sm-shop/src/main/java/com/salesmanager/web/utils/UserUtils.java
new file mode 100644
index 0000000..60b5bb2
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/web/utils/UserUtils.java
@@ -0,0 +1,25 @@
+package com.salesmanager.web.utils;
+
+import java.util.List;
+
+import com.salesmanager.core.business.user.model.Group;
+import com.salesmanager.core.business.user.model.User;
+
+public class UserUtils {
+
+ public static boolean userInGroup(User user,String groupName) {
+
+
+
+ List<Group> logedInUserGroups = user.getGroups();
+ for(Group group : logedInUserGroups) {
+ if(group.getGroupName().equals(groupName)) {
+ return true;
+ }
+ }
+
+ return false;
+
+ }
+
+}
sm-shop/src/main/resources/admin/menu.json 309(+309 -0)
diff --git a/sm-shop/src/main/resources/admin/menu.json b/sm-shop/src/main/resources/admin/menu.json
new file mode 100644
index 0000000..a38f5c9
--- /dev/null
+++ b/sm-shop/src/main/resources/admin/menu.json
@@ -0,0 +1,309 @@
+{"menus":[
+{
+"menu":{
+"code":"home",
+"icon":"icon-home",
+"url":"/admin/home.html",
+"role":"AUTH",
+"order":0
+}},
+{
+"menu":{
+"code":"store",
+"icon":"icon-file",
+"url":"/admin/store/store.html",
+"role":"STORE",
+"order":1,
+"menus":[
+ {"menu":{"code":"storeDetails","url":"/admin/store/store.html","role":"STORE","order":0, "menus":
+ [
+ {"menu":{
+ "code":"storeDetails","url":"/admin/store/store.html","role":"STORE","order":0
+ }},
+ {"menu":{
+ "code":"create-store","url":"/admin/store/createStore.html","role":"SUPERADMIN","order":1
+ }},
+ {"menu":{
+ "code":"store-list","url":"/admin/store/list.html","role":"SUPERADMIN","order":1
+ }}
+ ]
+ }},
+ {"menu":{"code":"storeBranding","url":"/admin/store/branding.html","role":"STORE","order":1}},
+ {"menu":{"code":"storeLanding","url":"/admin/store/storeLanding.html","role":"STORE","order":2}}
+]
+}},
+{
+"menu":{
+"code":"profile",
+"icon":"icon-info-sign",
+"url":"/admin/users/displayUser.html",
+"role":"AUTH",
+"order":2,
+"menus":[
+ {"menu":{
+ "code":"user","url":"","role":"AUTH","order":0,"menus":
+ [
+ {"menu":{
+ "code":"myprofile","url":"/admin/user/profile.html","role":"AUTH","order":0
+ }},
+ {"menu":{
+ "code":"change-password","url":"/admin/user/password.html","role":"AUTH","order":1
+ }},
+ {"menu":{
+ "code":"users","url":"","role":"ADMIN","order":2
+ }},
+ {"menu":{
+ "code":"create-user","url":"","role":"ADMIN","order":3
+ }}
+ ]
+
+ }},
+ {"menu":{
+ "code":"security","url":"","role":"ADMIN","order":1,"menus":
+ [
+ {"menu":{
+ "code":"security-groups","url":"/admin/user/groups.html","role":"ADMIN","order":1
+ }}
+ ]
+ }}
+]
+}},
+{
+"menu":{
+"code":"catalogue",
+"icon":"icon-tags",
+"url":"/admin/products/products.html",
+"role":"PRODUCTS",
+"order":3,
+"menus":[
+ {"menu":{
+ "code":"catalogue-products","url":"","role":"PRODUCTS","order":0,"menus":
+ [
+ {"menu":{
+ "code":"catalogue-products-create","url":"/admin/products/product.html","role":"PRODUCTS","order":0
+ }},
+ {"menu":{
+ "code":"catalogue","url":"/admin/products/products.html","role":"PRODUCTS","order":2
+ }}
+ ]
+ }},
+ {"menu":{
+ "code":"catalogue-categories","url":"","role":"PRODUCTS","order":1,"menus":
+ [
+ {"menu":{
+ "code":"catalogue-categories-create","url":"/admin/categories/createCategory.html","role":"PRODUCTS","order":0
+ }},
+ {"menu":{
+ "code":"catalogue-categories-list","url":"/admin/categories/categories.html","role":"PRODUCTS","order":1
+ }},
+ {"menu":{
+ "code":"catalogue-categories-hierarchy","url":"/admin/categories/hierarchy.html","role":"PRODUCTS","order":2
+ }}
+ ]
+ }},
+ {"menu":{
+ "code":"catalogue-options","url":"","role":"PRODUCTS","order":2,"menus":
+ [
+ {"menu":{
+ "code":"catalogue-options-list","url":"/admin/catalogue/options/options.html","role":"PRODUCTS","order":1
+ }},
+ {"menu":{
+ "code":"catalogue-options-create","url":"/admin/catalogue/options/option.html","role":"PRODUCTS","order":1
+ }},
+ {"menu":{
+ "code":"catalogue-optionsvalues-list","url":"/admin/catalogue/options/optionsvalues.html","role":"PRODUCTS","order":1
+ }},
+ {"menu":{
+ "code":"catalogue-optionsvalues-create","url":"/admin/options/createOptionValue.html","role":"PRODUCTS","order":1
+ }}
+ ]
+ }},
+ {"menu":{
+ "code":"catalogue-products-group","url":"/admin/catalogue/groups/list.html","role":"PRODUCTS","order":3,"menus":
+ [
+ {"menu":{
+ "code":"catalogue-featured","url":"/admin/catalogue/featured/list.html","role":"PRODUCTS","order":0
+ }},
+ {"menu":{
+ "code":"catalogue-products-custom-group","url":"/admin/catalogue/groups/list.html","role":"PRODUCTS","order":1
+ }}
+ ]
+ }},
+ {"menu":{
+ "code":"manufacturer-list","url":"","role":"PRODUCTS","order":4,"menus":
+ [
+ {"menu":{
+ "code":"manufacturer-list","url":"/admin/catalogue/manufacturer/list.html","role":"PRODUCTS","order":0
+ }},
+ {"menu":{
+ "code":"manufacturer-create","url":"/admin/catalogue/manufacturer/create.html","role":"PRODUCTS","order":1
+ }}
+ ]
+ }}
+]
+}},
+
+
+
+
+{
+"menu":{
+"code":"content",
+"icon":"icon-pencil",
+"url":"/admin/content/pages/list.html",
+"role":"CONTENT",
+"order":4,
+"menus":[
+ {"menu":{
+ "code":"content-pages","url":"","role":"CONTENT","order":0,"menus":
+ [
+ {"menu":{
+ "code":"content-pages","url":"/admin/content/pages/list.html","role":"CONTENT","order":0
+ }},
+ {"menu":{
+ "code":"content-pages-create","url":"/admin/content/pages/create.html","role":"CONTENT","order":1
+ }}
+ ]
+
+ }},
+ {"menu":{
+ "code":"content-boxes","url":"","role":"CONTENT","order":1,"menus":
+ [
+ {"menu":{
+ "code":"content-boxes","url":"/admin/content/boxes/list.html","role":"CONTENT","order":0
+ }},
+ {"menu":{
+ "code":"content-boxes-create","url":"/admin/content/boxes/create.html","role":"CONTENT","order":1
+ }}
+ ]
+
+ }},
+ {"menu":{"code":"content-images","url":"","role":"CONTENT","order":0}},
+ {"menu":{"code":"content-files","url":"","role":"CONTENT","order":0}}
+]
+}},
+{
+"menu":{
+"code":"shipping",
+"icon":"icon-plane",
+"url":"/admin/shipping/shippingConfigs.html",
+"role":"SHIPPING",
+"order":5,
+"menus":[
+ {"menu":{"code":"shipping-configs","url":"","role":"SHIPPING","order":0}},
+ {"menu":{"code":"shipping-methods","url":"","role":"SHIPPING","order":0}},
+ {"menu":{"code":"shipping-options","url":"","role":"SHIPPING","order":0}},
+ {"menu":{"code":"shipping-packages","url":"","role":"SHIPPING","order":0}}
+]
+}},
+{
+"menu":{
+"code":"payment",
+"icon":"icon-cog",
+"url":"/admin/payments/paymentMethods.html",
+"role":"PAYMENT",
+"order":6
+}},
+{
+"menu":{
+"code":"customer",
+"icon":"icon-user",
+"url":"/admin/customers/list.html",
+"role":"CUSTOMER",
+"order":7,
+"menus":[
+ {"menu":{
+ "code":"customer-list","url":"","role":"CUSTOMER","order":0,"menus":
+ [
+ {"menu":{
+ "code":"customer-list","url":"/admin/customers/list.html","role":"CUSTOMER","order":0
+ }},
+ {"menu":{
+ "code":"customer-create","url":"/admin/customers/customer.html","role":"CUSTOMER","order":1
+ }}
+ ]
+ }},
+ {"menu":{
+ "code":"customer-options","url":"","role":"CUSTOMER","order":1,"menus":
+ [
+ {"menu":{
+ "code":"customer-options-list","url":"/admin/customers/options/list.html","role":"CUSTOMER","order":0
+ }},
+ {"menu":{
+ "code":"customer-options-create","url":"/admin/customers/options/create.html","role":"CUSTOMER","order":1
+ }},
+ {"menu":{
+ "code":"customer-options-values-list","url":"/admin/customers/options/values/list.html","role":"CUSTOMER","order":2
+ }},
+ {"menu":{
+ "code":"customer-options-values-create","url":"/admin/customers/options/values/create.html","role":"CUSTOMER","order":3
+ }},
+ {"menu":{
+ "code":"customer-options-set","url":"/admin/customers/optionsset/list.html","role":"CUSTOMER","order":4
+ }}
+ ]
+ }}
+]
+}},
+{
+"menu":{
+"code":"order",
+"icon":"icon-shopping-cart",
+"url":"/admin/orders/list.html",
+"role":"ORDER",
+"order":8,
+"menus":[
+ {"menu":{
+ "code":"order-list","url":"/admin/orders/list.html","role":"ORDER","order":0
+ }}
+]
+}},
+{
+"menu":{
+"code":"tax",
+"icon":"icon-book",
+"url":"/admin/tax/taxconfiguration/edit.html",
+"role":"TAX",
+"order":9,
+"menus":[
+ {"menu":{
+ "code":"taxconfiguration","url":"/admin/tax/taxconfiguration/edit.html","role":"TAX","order":0
+ }},
+ {"menu":{
+ "code":"taxclass","url":"/admin/tax/taxclass/list.html","role":"TAX","order":1
+ }},
+ {"menu":{
+ "code":"taxrates","url":"/admin/tax/taxrates/list.html","role":"TAX","order":2
+ }}
+]
+}},
+{
+"menu":{
+"code":"cache",
+"icon":"icon-th",
+"url":"/admin/cache/cacheManagement.html",
+"role":"AUTH",
+"order":10
+}},
+{
+"menu":{
+"code":"configuration",
+"icon":"icon-wrench",
+"url":"/admin/configuration/accounts.html",
+"role":"AUTH",
+"order":11,
+"menus":[
+ {"menu":{
+ "code":"accounts-conf","url":"/admin/configuration/accounts.html","role":"AUTH","order":0
+ }},
+ {"menu":{
+ "code":"email-conf","url":"/admin/configuration/email.html","role":"AUTH","order":1
+ }},
+ {"menu":{
+ "code":"system-configurations","url":"/admin/configuration/system.html","role":"AUTH","order":2
+ }}
+]
+}}
+]}
+
+
diff --git a/sm-shop/src/main/resources/bundles/messages.properties b/sm-shop/src/main/resources/bundles/messages.properties
new file mode 100644
index 0000000..a28de9a
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/messages.properties
@@ -0,0 +1,197 @@
+message.success=Request completed with success
+message.error=An error occurred in this request
+message.email.success=Your message has been sent
+message.productreview.created=You have successfully created a product review
+message.email.error=An error occurred while sending your message, pleas try again later
+message.access.denied=Access denied
+message.error.shoppingcart.update=An error occurred while updating the shopping cart
+message.username.password=Login Failed. Username or Password is incorrect.
+message.resource.notfound=The requested page does not exist.
+message.fielderror=Field error
+message.timeout=The session timed out.
+NotEmpty=Field required
+currentpassword.not.empty=Current password should not be empty
+password.notequal=New password and check password should be equals
+newpassword.not.empty=New password should not be empty and should be 6 characters long
+repeatpassword.not.empty=Check password should not be empty and should be 6 characters long
+
+NotEmpty.store.storename=The store name should not be empty
+NotEmpty.store.storeEmailAddress=Store email address should not be empty
+Email.store.storeEmailAddress=Store email address is invalid
+NotEmpty.product.productPrice=The product price must be specified
+NotEmpty.product.manufacturer=The product manufacturer is required
+NotEmpty.price.code=The price code is required
+Pattern.price.code=The price code must be alphanumeric
+Pattern.product.sku=The sku must be alphanumeric
+Pattern.merchant.code=The merchant store code must be alphanumeric
+Pattern.optionValue.code=The code must be alphanumeric
+NotEmpty.optionValue.code=The code should not be empty
+Pattern.option.code=The code must be alphanumeric
+NotEmpty.option.code=The code should not be empty
+NotEmpty.keyword.keyword=The keyword cannot be empty
+NotEmpty.review.description=Your opinion is required
+
+NotEmpty.customer.userName=User name is required
+NotEmpty.customer.firstName=First name is required
+NotEmpty.customer.lastName=Last name is required
+NotEmpty.customer.address=Street address is required
+NotEmpty.customer.postalCode=Postal code is required
+NotEmpty.customer.stateProvince=State / Province is required
+NotEmpty.customer.phone=Phone number is required
+NotEmpty.customer.city=City is required
+
+NotEmpty.customer.emailAddress=Email address is required
+Email.customer.emailAddress=Email address is invalid
+NotEmpty.customer.billing.phone=Phone number is required
+NotEmpty.customer.billing.address=Street address is required
+NotEmpty.customer.billing.city=City is required
+NotEmpty.customer.billing.postalCode=Postal code is required
+NotEmpty.customer.billing.country=Country is required
+NotEmpty.customer.billing.stateProvince=State / Province is required
+
+NotEmpty.customer.shipping.firstName=Shipping first name should not be empty
+NotEmpty.customer.shipping.lastName=Shipping last name should not be empty
+NotEmpty.customer.shipping.address=Shipping street address should not be empty
+NotEmpty.customer.shipping.city=Shipping city should not be empty
+NotEmpty.customer.shipping.postalCode=Shipping postal code should not be empty
+NotEmpty.customer.shipping.phone=Shipping phone should not be empty
+NotEmpty.customer.shipping.stateProvince=Shipping State / Province is required
+
+NotEmpty.order.creditcard.number=A valid credit card number is required
+NotEmpty.order.creditcard.name=Credit card holder's name is required
+NotEmpty.order.creditcard.cvv=Credit card validation digit is required
+NotEmpty.contact.name=Contact name is required
+NotEmpty.contact.subject=Contact subject is required
+NotEmpty.contact.comment=Comment is required
+Email.contact.email=Email format is invalid
+NotEmpty.contact.captchaResponseField=Captcha answer is required
+NotEmpty.contact.captchaChallengeField=Captcha challenge question is required
+
+message.order.canprocess=The order can be completed
+message.name.required=The object name is required
+
+message.code.exist=This code already exist
+message.invalid.amount=Invalid amount
+message.region.exists=Region already exist
+message.region.null=Region cannot be empty
+message.invalid.price=Price format is invalid
+message.invalid.rate=Rate format is invalid
+message.invalid.date=Invalid date format
+message.maximumWeight.null=Maximum weight cannot be empty
+message.maximumWeight.invalid=Maximum weight needs to be greater than 0
+message.unauthorized=This transaction cannot be completed
+message.code.available=This code is available
+message.image.height=Image height too large
+message.image.width=Image width too large
+message.image.size=Image too big
+message.number.invalid=Must be a valid number (eg 5)
+message.productoption.required=A product attribute/option is required
+message.productoptionvalue.required=A product attribute/option value is required
+message.product.language=The product has not been configured with this language. Edit the product and configure it with this language.
+
+message.password.required=A password is required
+message.password.repeat.required=Repeated password is required
+message.username.required=User name is required
+message.username.notfound=User name not found
+message.price.cents=Please enter a maximum of 99 cents
+message.security.cannotrevoke.superadmin=Can't revoke Super Admin group
+message.cannot.empty=can't be empty
+message.password.different=New password and repeat password must be identical
+message.password.invalid=Invalid password
+message.password.length=Password must be at least 6 characters
+message.password.reset=Password has been reset
+message.password.checkpassword.identical=Both password must match
+
+message.security.caanotremovesuperadmin=Can't remove super admin user
+
+message.group.alerady.exists=The group {0} already exists
+message.group.required=The group is required
+
+message.product.association=This entity is attached to one or more products, remove the association before trying to delete.
+message.notexist.customer=Customer does not exist
+message.optionset.optionassociationexists=The option association already exist
+message.optionset.noassociation=Select an option and an option value
+
+messages.error.creditcard.number=Credit card number is not valid
+messages.error.creditcard.dateformat=Credit card expiration date is invalid
+
+message.payment.declined=Payment transaction has been declined
+
+merchant.storeId.invalid=Please provide a merchant store
+merchant.files.invalid=Please provide file(s) to be uploaded.
+merchant.zone.invalid=Store state/province is required
+
+NotEmpty.order.customerFirstName=Customer first name should not be empty
+NotEmpty.order.customerLastName=Customer last name should not be empty
+NotEmpty.order.customerStreetAddress=Customer street address should not be empty
+NotEmpty.order.customerCity=Customer city should not be empty
+NotEmpty.order.customerPostCode=Customer postal code should not be empty
+NotEmpty.order.customerTelephone=Customer phone should not be empty
+Email.order.customerEmailAddress=Customer email address is invalid
+NotEmpty.order.customerEmailAddress=Customer email address should not be empty
+
+
+NotEmpty.order.billingName=Billing name should not be empty
+NotEmpty.order.billingStreetAddress=Billing street address should not be empty
+NotEmpty.order.billingCity=Billing city should not be empty
+NotEmpty.order.billingState=Billing state should not be empty
+NotEmpty.order.billingPostCode=Billing postal code should not be empty
+
+
+NotEmpty.customer.FirstName=Customer first name should not be empty
+NotEmpty.customer.LastName=Customer last name should not be empty
+NotEmpty.customer.StreetAddress=Customer street address should not be empty
+NotEmpty.customer.City=Customer city should not be empty
+NotEmpty.customer.Country=Customer country should not be empty
+NotEmpty.customer.PostCode=Customer postal code should not be empty
+NotEmpty.customer.Telephone=Customer phone should not be empty
+Email.customer.EmailAddress=Customer email address is invalid
+NotEmpty.customer.EmailAddress=Customer email address should not be empty
+
+NotEmpty.customer.billingCompany=Billing company name should not be empty
+NotEmpty.customer.billingFirstName=Billing first name should not be empty
+NotEmpty.customer.billingLastName=Billing last name should not be empty
+NotEmpty.customer.billingStreetAddress=Billing street address should not be empty
+NotEmpty.customer.billingCity=Billing city should not be empty
+NotEmpty.customer.billingState=Billing state should not be empty
+NotEmpty.customer.billingCountry=Billing country should not be empty
+NotEmpty.customer.billingPostCode=Billing postal code should not be empty
+
+NotEmpty.customer.shippingCountry=Shipping country should not be empty
+
+NotEmpty.taxClass.code=Tax Class code is required
+NotEmpty.taxClass.title=Tax Class name is required
+message.taxclass.alreadyexist=Tax Class code already exist
+NotEmpty.taxRate.code=Tax Rate code must not be empty
+NotEmpty.taxRate.unique.code=Tax Rate code must be unique
+NotEmpty.taxRate.rateText=Tax Rate must not be empty
+NotEmpty.taxRateDescription.name=Tax Rate name must not be empty
+NotNull.taxRate.parent=Parent tax rate must be selected
+
+message.noshipping.configured=No shipping method configured
+message.noshipping=No shipping available
+message.noshippingerror=No shipping available, please check your shipping country, state / province and postal code
+
+message.login.duallogin=Dual login not authorized on the same browser
+
+User.resetPassword.resetSuccess=Successfully changed password, please check your Email
+User.resetPassword.wrongSecurityQtn=Wrong Security Question/Answer Entered
+User.resetPassword.userNotFound=Specified User Not Found
+User.resetPassword.Error=An error occured, please contact the administrator
+
+validaion.recaptcha.not.matched=Recaptcha does not matched with user input
+registration.username.not.empty=Please provide user name
+registration.username.length.invalid=User name must be at least 6 characters long
+registration.password.not.empty=Please provide a valid password
+registration.firstName.invalid=Please provide first name
+registration.lastName.invalid=Please provide last name
+messages.invalid.email=Please provide a valid email address.
+registration.username.already.exists = User with user name already exists for this store.
+registration.failed=Unable to complete registration, please try again later
+currentpassword.not.empty=Please provide your current password
+newpassword.not.empty=Please provide a new password
+repeatpassword.not.empty=Please provide repeated password
+message.invalidpassword=Invalid password
+
+error.code.99=An error occured while trying to process the payment
+
diff --git a/sm-shop/src/main/resources/bundles/messages_fr.properties b/sm-shop/src/main/resources/bundles/messages_fr.properties
new file mode 100644
index 0000000..454d4c8
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/messages_fr.properties
@@ -0,0 +1,198 @@
+message.success=Requête compétée avec succès
+message.error=Une erreur est survenue avec cette requête
+message.email.success=Votre message a été envoyé avec succès
+message.productreview.created=Votre avez créé une revue de produit avec succès
+message.email.error=Une erreur est survenue avec l'encoi du meesge, veuillez essayer plus tard
+message.error.shoppingcart.update=Une erreur est survenue pendant la mise à jour du panier d'achat
+message.access.denied=Accès refusé
+message.username.password=Authentication échouée. Le nom d'usager ou le mot de passe est invalide.
+message.resource.notfound=La page demandée n'existe pas
+message.fielderror=Entrée erronnée
+message.timeout=La session est expirée.
+NotEmpty=Champs requis
+currentpassword.not.empty=Le mot de passe courant ne doit pas être vide
+password.notequal=Le nouveau mot de passe et le mot de passe de vérification doivent être identiques
+newpassword.not.empty=Le nouveau mot de passe ne doit pas être vide et doit être d'au moins 6 caractères
+repeatpassword.not.empty=Le mot de passe de vérification ne doit pas être vide et doit être d'au moins 6 caractères
+
+NotEmpty.store.storename=Le nom de la boutique ne doit pas être vide
+NotEmpty.store.storeEmailAddress=Le email de la boutique ne doit pas être vide
+Email.store.storeEmailAddress=Le email est invalide
+NotEmpty.product.productPrice=Le prix du produit doit être spécifié
+NotEmpty.product.manufacturer=Le manufacturier du produit doit être spécifié
+NotEmpty.price.code=Le code de prix doit être spécifié
+Pattern.price.code=Le code de prix doit être aplha-numérique
+Pattern.product.sku=Le sku doit être aplha-numérique
+Pattern.merchant.code=Le code du marchand doit être aplha-numérique
+Pattern.optionValue.code=Le code doit être aplha-numérique
+NotEmpty.optionValue.code=Le code ne doit pas être vide
+Pattern.option.code=Le code doit être aplha-numérique
+NotEmpty.option.code=Le code ne doit pas être vide
+NotEmpty.keyword.keyword=Le mot clé ne doit pas être vide
+NotEmpty.review.description=Votre opinion est requise
+
+NotEmpty.customer.userName=Un nom d'usager est requis
+NotEmpty.customer.firstName=Le prénom est requis
+NotEmpty.customer.lastName=Le nom est requis
+NotEmpty.customer.address=L'addresse est requise
+NotEmpty.customer.postalCode=Le code postal est requis
+NotEmpty.customer.stateProvince=L'état / province est requis
+NotEmpty.customer.phone=Le téléphone est requis
+NotEmpty.customer.city=La ville est requise
+
+
+NotEmpty.customer.emailAddress=L'adresse couriel est requise
+Email.customer.emailAddress=L'adresse couriel est invalide
+NotEmpty.customer.billing.phone=Le téléphone est requis
+NotEmpty.customer.billing.address=L'addresse est requise
+NotEmpty.customer.billing.city=La ville est requise
+NotEmpty.customer.billing.postalCode=Le code postal est requis
+NotEmpty.customer.billing.country=Le pays est requis
+NotEmpty.customer.billing.stateProvince=L'état / province est requis
+
+NotEmpty.customer.shipping.firstName=Le prénom à la livraison ne doit pas être vide
+NotEmpty.customer.shipping.lastName=Le nom de famille à la livraisonne doit pas être vide
+NotEmpty.customer.shipping.address=L'adresse de livraison ne doit pas être vide
+NotEmpty.customer.shipping.city=La ville de livraison ne doit pas être vide
+NotEmpty.customer.shipping.postalCode=Le code postal de livraison ne doit pas être vide
+NotEmpty.customer.shipping.phone=Le numéro de telephone de livraison ne doit pas être vide
+NotEmpty.customer.shipping.stateProvince=L'état / province de la livraison est requis
+
+NotEmpty.order.creditcard.number=Un numéro de carte de crédit valide est requis
+NotEmpty.order.creditcard.name=Le nom aparaissant sur la carte de crédit est requis
+NotEmpty.order.creditcard.cvv=Les numéros de vérification aparaisasant sur la carte de crédit sont requis
+NotEmpty.contact.name=Le nom de la personne contact est requis
+NotEmpty.contact.subject=Le sujet du formulaire de contact est requis
+NotEmpty.contact.comment=Les commentaires sont requis
+Email.contact.email=L'adresse couriel est invalide
+NotEmpty.contact.captchaResponseField=La réponse 'Captcha' est requise
+NotEmpty.contact.captchaChallengeField=La question 'Captcha' est requise
+
+message.payment.declined=La transaction a été refusée
+
+message.order.canprocess=La commande peut être complétée
+message.name.required=Le nom de l'objet est reuis
+
+message.code.exist=Ce code existe déjà
+message.invalid.amount=Montant invalide
+message.region.exists=cette région existe déjà
+message.region.null=La région ne peut être vide
+message.invalid.price=Le format du prix est invalide
+message.invalid.rate=Le format du taux est invalide
+message.invalid.date=Format de la date invalide
+message.maximumWeight.null=Poids maximum ne peut être vide
+message.maximumWeight.invalid=Poids maximum doit être supérieur é 0
+message.unauthorized=Cette transaction ne peut être complétée
+message.code.available=Ce code est disponible
+message.image.height=Hauteur de l'image trop grande
+message.image.width=Largeur de l'image trop grande
+message.image.size=Image trop volumineuse
+message.number.invalid=Doit être un nombre valide (ex 5)
+
+message.password.required=Un mot de passe est requis
+message.password.repeat.required=Le mot de passe répété est requis
+message.username.required=Le code d'usager est requis
+message.username.notfound=Le code d'usager n'existe pas
+message.price.cents=SVP entrer un maximum de 99 sous
+message.security.cannotrevoke.superadmin=Le groupe Super Admin ne peut être révoqué
+message.cannot.empty=ne peut être vide
+message.password.different=Le nouveau mot de passe et le mot de passe répété doivent être identiques
+message.password.invalid=Mot de passe invalide
+message.password.length=Le mot de passe doit avoir au moins 6 caractéres
+message.password.reset=Le mot de passe a été ré-initialisé
+message.password.checkpassword.identical=Les deux mots de passe doivent être identiques
+
+message.security.caanotremovesuperadmin=Il n'est pas possible de détruire un usager super admin
+
+message.group.alerady.exists=Le groupe {0} existe déjà
+
+message.product.association=Cette entité est associée é un ou plusieurs produits. Veuillez détruire les associations et ré-essayer é nouveau.
+message.notexist.customer=Le client n'existe pas
+
+message.optionset.optionassociationexists=Cette association d'options existe déjà
+message.optionset.noassociation=Choisir une option et une valeur d'option
+
+
+message.productoption.required=Un attribut/option de produit est requis
+message.productoptionvalue.required=Une valeur d'attribut/option de produit est requis
+message.product.language=Le produit n'a pas été configuré pour ce language. Veuillez éditer le produit et ajouter les informations pour cette langue.
+
+messages.error.creditcard.number=Le numéro de carte de crédit est invalide
+messages.error.creditcard.dateformat=La date d'expiration de la carte de crédit est invalide
+
+merchant.storeId.invalid=Le numéro de marchand est invalide
+merchant.files.invalid=Veuillez fournir un ou plusieurs fichiers é charger
+merchant.zone.invalid=L'état / province est requise
+
+NotEmpty.order.customerFirstName=Le prénom du client ne doit pas être vide
+NotEmpty.order.customerLastName=Le nom de famille du client ne doit pas être vide
+NotEmpty.order.customerStreetAddress=L'adresse du client ne doit pas être vide
+NotEmpty.order.customerCity=La ville du client ne doit pas être vide
+NotEmpty.order.customerPostCode=Le code postal du client ne doit pas être vide
+NotEmpty.order.customerTelephone=Le numero de telephone du client ne doit pas être vide
+Email.order.customerEmailAddress=Le email du client est invalide
+NotEmpty.order.customerEmailAddress=Le email du client ne doit pas être vide
+
+NotEmpty.order.billingName=Le nom de facturation ne doit pas être vide
+NotEmpty.order.billingStreetAddress=L'adresse de facturation ne doit pas être vide
+NotEmpty.order.billingCity=La ville de facturation ne doit pas être vide
+NotEmpty.order.billingState=La province de facturation ne doit pas être vide
+NotEmpty.order.billingPostCode=Le code postal de facturation ne doit pas être vide
+
+NotEmpty.customer.FirstName=Le prenom du client ne doit pas être vide
+NotEmpty.customer.LastName=Le nom de famille du client ne doit pas être vide
+NotEmpty.customer.StreetAddress=L'adresse du client ne doit pas être vide
+NotEmpty.customer.City=La ville du client ne doit pas être vide
+NotEmpty.customer.PostCode=Le code postal du client ne doit pas être vide
+NotEmpty.customer.Telephone=Le numero de telephone du client ne doit pas être vide
+Email.customer.EmailAddress=Le email du client est invalide
+NotEmpty.customer.EmailAddress=Le email du client ne doit pas être vide
+
+NotEmpty.customer.billingCompany=Le nom de compagnie ne doit pas être vide
+NotEmpty.customer.billingFirstName=Le prénom de facturation ne doit pas être vide
+NotEmpty.customer.billingLastName=Le nom de facturation ne doit pas être vide
+NotEmpty.customer.billingStreetAddress=L'adresse de facturation ne doit pas être vide
+NotEmpty.customer.billingCity=La ville de facturation ne doit pas être vide
+NotEmpty.customer.billingState=La province de facturation ne doit pas être vide
+NotEmpty.customer.billingCountry=Le pays de facturation ne doit pas être vide
+NotEmpty.customer.billingPostCode=Le code postal de facturation ne doit pas être vide
+
+NotEmpty.customer.shippingCountry=Le pays de livraison ne doit pas être vide
+
+NotEmpty.taxClass.code=Le code de la classe de taxe est requis
+NotEmpty.taxClass.title=Le nom de la classe de taxe est requis
+message.taxclass.alreadyexist=Le code de classe existe déjà
+NotEmpty.taxRate.code=Le code du taux de taxation est requis
+NotEmpty.taxRate.unique.code=Le code du taux de taxation doit être unique
+NotEmpty.taxRate.rateText=Le taux de taxation est requis
+NotEmpty.taxRateDescription.name=Le nom du taux de taxation est requis
+NotNull.taxRate.parent=Le taux de taxation parent doit être sélectionné
+
+
+message.noshipping.configured=Aucune méthode de livraison configurée
+message.noshipping=La livraison n'est pas disponible
+message.noshippingerror=La livraison n'est pas disponible, veuillez valider le pays, la province ou l'état ainsi que le code postal de livraison
+
+message.login.duallogin=Le système ne supporte pas 2 authentifications sur le même fureteur
+
+User.resetPassword.resetSuccess=Le mot de passe a été changé. Vous recevrez votre nouveau mot de passe par courriel.
+User.resetPassword.wrongSecurityQtn=La réponse à la question de sécurité est invalide
+User.resetPassword.userNotFound=L'usager spécifié n`existe pas
+User.resetPassword.Error=Une erreur s'est produite, contactez l'administrateur
+
+validaion.recaptcha.not.matched=Saisie du champs 'captcha' invalide
+registration.username.not.empty=Veuillez fournir un nom d'usager
+registration.password.not.empty=Veuillez fournir un mot de passe valide
+registration.username.length.invalid=Le nom d'usager doit contenir au moins 6 caractères
+registration.firstName.invalid=Le prénom est obligatoire
+registration.lastName.invalid=Le nom est obligatoire
+messages.invalid.email=Veuillez fournir une adress courriel valide
+registration.username.already.exists = Ce nom d'usager existe déjà
+registration.failed=Une erreur est survenue lors de l'enregistrement veuillez recommencer plus tard
+currentpassword.not.empty=Veuillez fournir votre mot de passe actuel
+newpassword.not.empty=Veuillez fournir un nouveau mot de passe valide
+repeatpassword.not.empty=Veuillez répéter le nouveau mot de passe
+message.invalidpassword=Mot de passe invalide
+
+error.code.99=Une erreur s'est produite en essayant de traîter le paiement (99)
+
diff --git a/sm-shop/src/main/resources/bundles/payment.properties b/sm-shop/src/main/resources/bundles/payment.properties
new file mode 100644
index 0000000..fa95400
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/payment.properties
@@ -0,0 +1,49 @@
+payment.type.MONEYORDER=Money order
+payment.type.PAYPAL=PayPal
+payment.type.CREDITCARD=Credit card
+
+module.payment.paypal=PayPal
+module.payment.beanstream=Beanstream
+module.payment.authorizenet=Authorize Net
+module.payment.moneyorder=Money order
+module.payment.paypal-express-checkout=PayPal express checkout
+
+module.payment.transactiontype=Transaction type
+module.payment.transactiontype.preauth=Pre-authorization
+module.payment.transactiontype.capture=Capture
+module.payment.transactiontype.sale=Sale
+module.payment.transactiontype.refund=Refund
+
+#PayPal
+module.payment.paypal-express-checkout.userid=PayPal API user name
+module.payment.paypal-express-checkout.apikey=PayPal API password
+module.payment.paypal-express-checkout.signature=PayPal API signature
+module.payment.paypal-express-checkout.applicationid=PayPal application id
+module.payment.paypal-express-checkout.note=Follow the instructions here to create you PayPal API user name, password and signature (https://developer.paypal.com/docs/classic/api/apiCredentials/#creating-classic-api-credentials)
+
+
+
+#paypal rest
+module,payment.paypal.clientId=PayPal clientId
+module,payment.paypal.secret=PayPal secret
+module.payment.paypal.note=Create a PayPal seller account (www.paypal.com). Once completed, login to PayPal developer website (https://developer.paypal.com/webapps/developer/index) using your PayPal seller credentials. Click Applications on the upper nav bar to access the My Applications page. Click on Create App button, this action will provide your client id and secret keys.
+module.payment.paypal.message.clientId=PayPal clientId is required
+module.payment.paypal.message.secret=PayPal secret is required
+
+module.payment.paypal.message.identifier=PayPal API user name required
+module.payment.paypal.message.api=PayPal API user name required
+module.payment.paypal.message.password=PayPal API password required
+module.payment.paypal.message.signature=PayPal API signature required
+
+#Beanstream
+module.payment.beanstream.merchantid=Merchant id
+module.payment.beanstream.username=User name
+module.payment.beanstream.password=Password
+
+module.payment.beanstream.message.merchantid=Merchant id required
+module.payment.beanstream.message.username=Username is required
+module.payment.beanstream.message.password=Password is required
+
+#Moneyorder
+module.payment.moneyorder.adress=Cheque to be made to this address
+module.payment.moneyorder.message.address=Address is required
\ No newline at end of file
diff --git a/sm-shop/src/main/resources/bundles/payment_fr.properties b/sm-shop/src/main/resources/bundles/payment_fr.properties
new file mode 100644
index 0000000..7b5d9ff
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/payment_fr.properties
@@ -0,0 +1,46 @@
+payment.type.MONEYORDER=Tra�te bancaire
+payment.type.PayPal=PayPal
+payment.type.CREDITCARD=Carte de cr�dit
+
+module.payment.PayPal=PayPal
+module.payment.beanstream=Beanstream
+module.payment.authorizenet=Authorize Net
+module.payment.moneyorder=Tra�te bancaire
+module.payment.paypal-express-checkout=PayPal express checkout
+
+module.payment.transactiontype=Type de transaction
+module.payment.transactiontype.preauth=Pr�-authorization
+module.payment.transactiontype.capture=Capture
+module.payment.transactiontype.sale=Vente
+module.payment.transactiontype.refund=Remboursement
+
+#PayPal
+module.payment.paypal-express-checkout.userid=Usager PayPal API
+module.payment.paypal-express-checkout.apikey=Mot de pass API
+module.payment.paypal-express-checkout.signature=PayPal API signature
+module.payment.paypal-express-checkout.applicationid=PayPal identifiant de l'application
+module.payment.paypal-express-checkout.note=Suivez les instructions afin de cr�er votre usager, mot de passe et signature PayPal (https://developer.paypal.com/docs/classic/api/apiCredentials/#creating-classic-api-credentials)
+
+module,payment.paypal.clientId=PayPal clientId
+module,payment.paypal.secret=PayPal secret
+module.payment.paypal.note=Cr�ez un compte PayPal (www.PayPal.com). Une fois termin�, connectez-vous au site PayPal pour d�veloppeur (https://developer.paypal.com/webapps/developer/index) en utilisant votre compte PayPal. Cliquez sur Applications sur la barre de navigation sup�rieure pour acc�der � la page Mes applications. Cliquez sur le bouton Cr�er une Application, cette action vous fournira votre num�ro de client et la cl� secr�te.
+module.payment.paypal.message.clientId=PayPal clientId est requis
+module.payment.paypal.message.secret=PayPal secret est requis
+
+module.payment.paypal.message.identifier=Usager API PayPal requis
+module.payment.paypal.message.api=Cl�e API PayPal requise
+module.payment.paypal.message.password=PayPal API mot de passe requis
+module.payment.paypal.message.signature=PayPal API signature requise
+
+#Beanstream
+module.payment.beanstream.merchantid=Identifiant marchand
+module.payment.beanstream.username=Nom d'usager
+module.payment.beanstream.password=Mot de passe
+
+module.payment.beanstream.message.merchantid=Identifiant marchand requis
+module.payment.beanstream.message.username=Nom d'usager requis
+module.payment.beanstream.message.password=Mot de passe requis
+
+#Moneyorder
+module.payment.moneyorder.adress=Le chèque doit être fait à cette adresse
+module.payment.moneyorder.message.address=L'adresse est requise
\ No newline at end of file
diff --git a/sm-shop/src/main/resources/bundles/shipping.properties b/sm-shop/src/main/resources/bundles/shipping.properties
new file mode 100644
index 0000000..63d6d48
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/shipping.properties
@@ -0,0 +1,85 @@
+module.shipping.canadapost=Canada Post
+module.shipping.ups=UPS
+module.shipping.usps=United States Postal Service
+module.shipping.fedex=Fedex
+module.shipping.weightBased=Weight based shipping price
+
+#Canada Post
+module.shipping.canadapost.identifier=Canada Post identifier (CPC number)
+module.shipping.canadapost.username=Canada Post user name
+module.shipping.canadapost.password=Canada Post password
+module.shipping.canadapost.packages=Package type
+module.shipping.canadapost.message.identifier=Canada Post identifier required
+module.shipping.canadapost.message.username=Canada Post username required
+module.shipping.canadapost.message.password=Canada Post password required
+
+#USPS
+module.shipping.usps.identifier=USPS account identifier
+module.shipping.usps.packages=Package type
+module.shipping.usps.shippingmethods=Select up to 3 shipping methods
+module.shipping.usps.message.identifier=USPS account identifier required
+module.shipping.usps.message.packages=You must select one package type
+
+
+module.shipping.usps.package.01=Variable
+module.shipping.usps.package.02=Flat Rate Box
+module.shipping.usps.package.03=Flat Rate Envelope
+module.shipping.usps.package.04=Rectangular
+module.shipping.usps.package.05=Non Rectangular
+module.shipping.usps.package.06=LG Flat Rate Box
+
+module.shipping.usps.package.07=Envelope
+module.shipping.usps.package.08=Package
+
+module.shipping.usps.method.01=First-Class Mail
+module.shipping.usps.method.02=Priority Mail
+module.shipping.usps.method.03=Express Mail
+module.shipping.usps.method.04=Express SH
+module.shipping.usps.method.05=Express HFP
+module.shipping.usps.method.06=BPM
+module.shipping.usps.method.07=Parcel Post
+
+#UPS
+module.shipping.ups.identifier=UPS access key
+module.shipping.ups.userid=User ID
+module.shipping.ups.password=Password
+module.shipping.ups.packages=Package type
+module.shipping.ups.shippingmethods=Select a shipping method
+module.shipping.ups.message.identifier=UPS account identifier required
+module.shipping.ups.message.packages=You must select one package type
+
+
+
+module.shipping.ups.package.02=Customer Package
+module.shipping.ups.packagel.01=UPS Letter
+module.shipping.ups.package.03=UPS Tube
+module.shipping.ups.package.04=UPS Pak
+module.shipping.ups.package.21=UPS Express Box
+module.shipping.ups.package.24=UPS 25kg Box
+module.shipping.ups.package.10=UPS 10kg box
+module.shipping.ups.package.25=Unknown
+
+
+
+
+module.shipping.ups.method.01=UPS Next Day Air
+module.shipping.ups.method.02=UPS Second Day Air
+module.shipping.ups.method.03=UPS Ground
+module.shipping.ups.method.07=UPS Worldwide Express
+module.shipping.ups.method.08=UPS Worldwide Expedited
+module.shipping.ups.method.11=UPS Standard
+module.shipping.ups.method.12=UPS Three-Day Select
+module.shipping.ups.method.13=UPS Next Day Air Saver
+module.shipping.ups.method.14=UPS Next Day Air Early A.M.
+module.shipping.ups.method.54=UPS Worldwide Express Plus
+module.shipping.ups.method.59=UPS Second Day Air A.M.
+module.shipping.ups.method.65=UPS Saver
+
+#module.shipping.ups.method.68=UPS Express
+#module.shipping.ups.method.69=UPS Worldwide Expedited
+#module.shipping.ups.method.70=UPS Standard
+#module.shipping.ups.method.71=UPS Worldwide Express Plus
+#module.shipping.ups.method.72=UPS Saver
+module.shipping.ups.method=UPS shipping methods
+module.shipping.ups.method.select=Select a specific UPS shipping method
+module.shipping.ups.method.unselect=Let UPS propose all available shipping methods
diff --git a/sm-shop/src/main/resources/bundles/shipping_fr.properties b/sm-shop/src/main/resources/bundles/shipping_fr.properties
new file mode 100644
index 0000000..0ae1760
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/shipping_fr.properties
@@ -0,0 +1,42 @@
+module.shipping.canadapost=Postes Canada
+module.shipping.ups=UPS
+module.shipping.usps=United States Postal Service
+module.shipping.fedex=Fedex
+module.shipping.weightBased=Prix d'expédition basé sur le poids
+
+
+#Canada Post
+module.shipping.canadapost.identifier=Identifiant Postes Canada
+module.shipping.canadapost.username=Nom d'usager Postes Canada
+module.shipping.canadapost.password=Mot de passe Postes Canada
+module.shipping.canadapost.packages=Type d'emballage
+module.shipping.canadapost.message.identifier=Identifiant Postes Canada requis
+module.shipping.canadapost.message.packages=Au moins un type d'emballage
+
+#USPS
+module.shipping.usps.identifier=Numéro de compte USPS
+module.shipping.usps.packages=Type d'emballage
+module.shipping.usps.shippingmethods=Choisir jusqu'a 3 méthodes d'expédition
+module.shipping.usps.message.identifier=Identifiant USPS requis
+module.shipping.usps.message.packages=Vous devez choisir un type d'emballage
+
+
+module.shipping.usps.package.01=Variable
+module.shipping.usps.package.02=Flat Rate Box
+module.shipping.usps.package.03=Flat Rate Envelope
+module.shipping.usps.package.04=Rectangular
+module.shipping.usps.package.05=Non Rectangular
+module.shipping.usps.package.06=LG Flat Rate Box
+
+module.shipping.usps.package.07=Envelope
+module.shipping.usps.package.08=Package
+
+module.shipping.usps.method.01=First-Class Mail
+module.shipping.usps.method.02=Priority Mail
+module.shipping.usps.method.03=Express Mail
+module.shipping.usps.method.04=Express SH
+module.shipping.usps.method.05=Express HFP
+module.shipping.usps.method.06=BPM
+module.shipping.usps.method.07=Parcel Post
+module.shipping.canadapost.packages.package=Paquet
+module.shipping.canadapost.packages.envelope=Enveloppe
diff --git a/sm-shop/src/main/resources/bundles/shopizer.properties b/sm-shop/src/main/resources/bundles/shopizer.properties
new file mode 100644
index 0000000..b3eee9e
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/shopizer.properties
@@ -0,0 +1,707 @@
+label.quantity=Quantity
+
+label.entity.id=Id
+label.entity.name=Name
+label.entity.code=Code
+label.entity.visible=Visible
+label.entity.enabled=Enabled
+label.entity.active=Active
+label.entity.public=Public
+label.entity.details=Details
+label.entity.type=Type
+label.entity.remove.confirm=Do you really want to remove this entity?
+label.entity.order=Order
+label.entity.status=Status
+label.generic.all=All
+label.generic.email=Email address
+label.generic.country=Country
+label.generic.price=Price
+label.generic.phone=Phone number
+label.generic.back=Back
+label.generic.country.code=Country code
+label.generic.stateprovince=State / province
+label.generic.item=item
+label.generic.item.title=Item
+label.generic.items=items
+label.generic.displayonly=Display only
+label.generic.url=URL
+label.generic.sortby=Sort by
+label.generic.default=Default
+label.generic.name=Name
+label.generic.next=Next
+label.generic.genre=Genre
+label.generic.male=Male
+label.generic.female=Female
+label.generic.register=Register
+label.generic.youropinion=Your opinion
+label.generic.comments=Comments
+label.generic.subject=Subject
+
+label.generic.welcome=Welcome
+label.generic.weightunit.LB=Pounds
+label.generic.weightunit.KG=Kilograms
+label.generic.language=Language
+label.generic.search=Search
+
+label.generic.sizeunit.CM=Centimeter
+label.generic.sizeunit.IN=Inch
+label.generic.remove=Remove
+label.generic.yes=Yes
+label.generic.no=No
+label.generic.alphanumeric=Alphanumeric
+label.generic.add=Add
+label.generic.username=User name
+label.generic.edit=Edit
+label.generic.print=Print
+
+label.generic.environment=Environment
+label.generic.providedby=Powered by
+
+label.generic.title=Title
+label.generic.keywords=Keywords
+label.generic.amount=Amount
+
+label.generic.changepassword=Change password
+
+label.generic.confirm=Please confirm!
+label.generic.firstname=First name
+label.generic.lastname=Last name
+label.generic.streetaddress=Street address
+label.generic.postalcode=Postal code
+label.generic.city=City
+label.generic.country=Country
+label.generic.hi=Hi
+label.generic.send=Send
+
+#merchant store
+label.store.information.title=Information
+label.store.title=Merchant Store
+label.store.information=Store information
+label.storeadministration=Store administration
+label.storeadministrator=Store administrator
+label.storename=Store Name
+label.storecode=Unique Store Code
+label.currency=Currency
+label.bgcolorcode=Background Color
+label.storelogo=Store Logo
+label.storebanner=Store Banner
+label.storephone=Store Phone
+label.accepteddomains=Accepted Domains
+label.storeaddress=Store Address
+label.storecity=Store City
+label.storepostalcode=Store Postal Code
+label.storecountry=Store Country
+label.storezone=Store State / Province
+label.supportedlanguages=Supported languages
+label.storeemailaddress=Store email address
+label.storesetup=Store setup
+label.store.template=Theme
+label.store.baseurl=Store base url (domain)
+label.store.inbusinesssince=Web site operating since
+label.changepasswordrequest = Change password request
+label.store.weightunit=Weight units
+label.store.sizeunits=Size units
+label.store.list=Stores
+label.store.useCache=Use cache
+label.store.currency.format=National currency format
+label.store.currency.format.help=National currency format ex $1,345.79 or International currency format ex USD1,345.79
+
+label.store.displaycontactussection=Display contact us page
+label.store.displaystoreaddress=Display store address
+label.store.displayaddtocartfeatured=Allow add to cart on featured items
+
+label.storefront.landingpage=Landing page information
+label.storefront.storetext=Landing page main text
+label.storefront.metatags.keywords=Meta tags keywords
+label.storefront.metatags.description=Meta tags description
+label.storefront.landingpage.title=Landing page title
+
+#user
+label.profile.title=User profile
+label.my.profile=My profile
+label.profile.lastaccess=Last access
+
+#search
+label.search.searchQuery=Search query
+label.search.items.found=item(s) found
+
+
+label.generic.password=Password
+label.generic.repeatpassword=Repeat password
+label.generic.newpassword=New password
+label.generic.newpassword.repeat=Repeat new password
+
+security.question.1=What was the color of your first car?
+security.question.2=In what city were you born?
+security.question.3=What was the name of your first pet?
+security.question.4=What is your preferred musical genre?
+security.question.5=Who was your childhood hero?
+security.question.6=In what city or town was your first job?
+security.question.7=Where were you when you had your first kiss?
+security.question.8=In which city did you met your spouse/significant other?
+security.question.9=What was your childhood nickname?
+
+
+security.questions.differentmessages=Please select 3 different questions
+
+security.question1=Question 1
+security.question2=Question 2
+security.question3=Question 3
+security.answer.question1.message=Please answer to security question 1
+security.answer.question2.message=Please answer to security question 2
+security.answer.question3.message=Please answer to security question 3
+
+
+security.group.description.SUPERADMIN=A single user can be superadmin. The user admin is created by default as the superadmin user. This user can do everything in the system and is the only one who can manage stores.
+security.group.description.ADMIN=An admin user is a user with most privileges for a store administration. An admin user can do everything as a store manager and can also create users with more restricted access.
+security.group.description.ADMIN_CATALOGUE=A user part of that group can create products, categories and featured items.
+security.group.description.ADMIN_STORE=A user part of that group can manage the store he is assigned too. He will be able to change the branding and modify anything under store menu. This group gives also access to the shipping and payment configuration
+security.group.description.ADMIN_ORDER=A user part of that group can manage orders, search for orders, modify customer information, apply refund to an order.
+security.group.description.ADMIN_CONTENT=A user assigned to that group will be able to manage the site dynamic and static content, add images, aand files to the system.
+
+label.security.loggedinas=You are logged in as
+label.security.nologinacces.store=We can't display store logon box
+
+#customer
+label.customer.myaccount=My Account
+label.customer.contactus=Contact us
+label.customer.list=Customer list
+label.customer.name=Customer name
+label.customer.lastname=Customer last name
+label.customer.firstname=Customer first name
+label.customer.id=Customer id
+label.customer.companyname=Company name
+label.customer.email=Customer email address
+label.customer.streetaddress=Customer street address
+label.customer.suburb=Customer suburb
+label.customer.postalcode=Customer postal code
+label.customer.telephone=Customer phone
+label.customer.city=Customer city
+label.customer.zone=Customer state / province
+label.customer.country=Customer country
+label.customer.registered=Registered customer
+label.customer.editcustomer=Edit Customer
+label.customer.createcustomer=Create Customer
+label.customer.order.date= Order date
+label.customer.options.edit=Edit option
+label.customer.option=Customer option
+label.customer.option.value=Customer option value
+
+label.customer.billinginformation=Billing information
+label.customer.shippinginformation=Shipping information
+label.customer.shippingaddress=Shipping Address
+label.customer.billingaddress=Billing Address
+label.customer.billingshipping=Billing & shipping information
+
+label.customer.edit.billingaddress=Edit Billing Address
+label.customer.edit.shippinginformation=Edit Shipping information
+
+label.customer.billing.company=Billing company
+label.customer.billing.streetaddress=Billing street address
+label.customer.billing.suburb=Billing suburb
+label.customer.billing.postalcode=Billing postal code
+label.customer.billing.city=Billing city
+label.customer.billing.zone=Billing state / province
+label.customer.billing.country=Billing country
+label.customer.billing.firstname=Billing first name
+label.customer.billing.lastname=Billing last name
+label.customer.billing.name=Billing name
+
+label.customer.shipping.company=Shipping company
+label.customer.shipping.streetaddress=Shipping street address
+label.customer.shipping.suburb=Shipping suburb
+label.customer.shipping.postalcode=Shipping postal code
+label.customer.shipping.city=Shipping city
+label.customer.shipping.zone=Shipping state / province
+label.customer.shipping.country=Shipping country
+label.customer.shipping.firstname=Shipping first name
+label.customer.shipping.lastname=Shipping last name
+label.customer.shipping.name=Shipping name
+label.customer.shipping.shipaddress=Ship to this address
+
+label.customer.optionv.edit=Edit option
+label.customer.option.name=Option name
+label.customer.option.code=Option code
+label.customer.option.type=Display type
+
+label.customer.optionvalue.edit=Edit option value
+label.customer.optionvalue.name=Option value name
+label.customer.optionvalue.code=Option value code
+
+label.customer.displaycustomersection=Display customer section
+label.customer.accessportal=You can access the customer section using the following url
+label.customer.accessnow=Access now!
+
+label.customer.resetpasswor.confirm=Are you sure you want to reset the customer password?
+label.customer.moredetails=More details!
+label.order.editcustomer=Edit customer
+
+label.customer.currentpassword=Current password
+label.customer.newpassword=New password
+label.customer.repeatpassword=Repeat password
+
+#permission
+label.permissions.title=Permissions
+label.permission.editpermission=Edit permission
+label.permission.createpermission=Create permission
+label.permission.name=Permission name
+
+#groups
+label.groups.title=Groups
+label.group.editgroup=Edit group
+label.group.creategroup=Create group
+label.group.root=Root
+label.group.groupId=Group Id
+
+#category
+label.category.title=Category title
+label.category.highlight=Short category highlight
+label.categories.title=Categories
+label.categories.hierarchy.title=Categories hierarchy
+label.category.root=Root
+label.productedit.categoryname=Category name
+label.productedit.choosecategory=Choose a category
+label.category.categogydetails=Category details
+label.category.editcategory=Edit category
+label.category.movecategory=Move category
+label.category.moveundercategory=Move under category
+label.category.createcategory=Create category
+label.category.code=Category code
+label.category.categoryvisible=Category visible
+label.category.categorydescription=Category description
+label.category.parentcategory=Parent category
+label.category.hierarchy.text=Drag categories to re-organize the hierarchy
+
+#manufacturer
+label.manufacturer.brand=Brands
+label.manufacturer.edit=Edit manufacturer
+label.manufacturer.create=Create a manufacturer
+label.manufactureredit.manufacturername=Manufacturer name
+label.manufactureredit.manufacturertitle=Manufacturer title
+label.manufactureredit.manufacturerurl=URL
+label.manufactureredit.manufacturerurlclicked=URL clicked
+label.manufactureredit.manufacturerdescription=Manufacturer description
+label.manufacturer.image=Image
+label.manufactureredit.manufacturerorder=Order
+
+
+#product
+label.product.create=Create a product
+label.product.edit=Edit product
+label.sefurl=Search engine friendly url
+label.metatags.description = (Meta tags) Description
+label.metatags.keywords = (Meta tags) Keywords
+label.product.sku=Sku
+label.product.available=Available
+label.productedit.productname=Product name
+label.productedit.producthl=Short product highlight
+label.productedit.productdesc=Product description
+label.product.title=Product title
+label.product.price=Product price
+label.product.price.code=Product price code
+label.product.price.name=Product price name
+label.product.price.default=Default product price
+label.product.price.special=Special price
+label.product.price.special.startdate=Special start date
+label.product.price.special.enddate=Special end date
+label.taxclass =Tax class
+label.product.ordermax=Quantity order max
+label.product.ordermin=Quantity order min
+label.product.visible=Product visible
+label.product.status=Status
+label.product.weight=Weight
+label.product.height=Height
+label.product.lenght=Length
+label.product.width=Width
+label.product.image=Image
+label.product.uploadfile=Upload file
+label.product.details=Product details
+label.product.prices=Product prices
+label.product.attributes=Product options / attributes
+label.product.attribute=Option / attribute
+label.product.attribute.default=Default option
+label.product.attribute.required=Required option
+label.product.attribute.display=Use attribute for display only
+label.product.attribute.otherweight=Additional weight
+label.product.attribute.option.name=Option / attribute name
+label.product.attribute.value=Attribute value
+label.product.attribute.specifications=Specifications
+label.product.price.create=Create product price
+label.product.attribute.create=Create product option / attribute
+label.product.category.association=Associate product in categories
+label.product.customer.reviews=Customer review(s)
+label.product.reviews=Reviews
+label.product.reviews.rating=Rating
+label.product.reviews.write=Write a review
+label.product.reviews.logon.write=You have to be authenticated to write a review
+label.product.reviews.evaluated=You have evaluated this product
+label.product.featured.meassage=To add a product to the featured items list drag the desired product from the list of available products to the featured items box.
+label.product.group.meassage=To add a product to the product group list drag the desired product from the list of available products to the product group box.
+label.product.related.title=Related items
+label.product.related.meassage=To add a product to the related items list drag the desired product from the list of available products to the related items box.
+label.product.createsimilar=Create similar product
+label.product.configure=Product definition
+label.product.specification=Specification
+label.product.digitalproduct=Digital product
+label.product.specials=Specials
+label.product.brand=Brand
+label.product.code=Product code
+label.product.nomoreitems=No more items available
+label.product.moreitems=Display more items
+label.product.searchkeywords=Search keywords
+label.product.shipeable=Product will be shipped
+label.product.outofstock=Out of stock
+
+#options
+label.product.productoptions.edit.title=Edit product option
+label.product.productoptions.create.title=Create product option
+label.product.productoptions.title=Product option
+label.product.productoptions.name=Option name
+label.product.productoptions.price=Option price
+label.product.productoptions.comments=Option comments
+label.product.productoptions.type=Option type
+label.product.productoptions.list=Options list
+
+label.product.productoption.type.text=Text
+label.product.productoption.type.radio=Radio
+label.product.productoption.type.select=Select
+label.product.productoption.type.checkbox=Checkbox
+
+label.product.option.displayonly=Option for display only
+label.product.option.code=Option code
+label.product.option.codehelp=Option code is required for querying products by attributes
+
+#options values
+label.product.productoptionsvalues.title=Product option values
+label.product.productoptionsvalues.list=Product options values list
+label.product.productoptiosvalue.title=Product option value
+label.product.productoptionvalue.edit.title=Edit product option value
+label.product.productoptionvalue.create.title=Create product option value
+label.product.productoptionvalue=Option value image
+
+label.product.customGroup.title=Product group
+label.product.customgroup.add=Add custom product group
+label.product.customgroup.code=Custom product group code (must be unique)
+
+label.product.rate=Rate product
+label.product.clickrate=Product rating (click on the stars to activate rating)
+
+#content Images - Files
+label.contentImages.store=Merchant Store
+label.content.images=Images library
+label.content.files=Files library
+label.content.pages=Content pages
+label.content.pages.manage.content=Manage content pages
+label.content.manage.content=Manage content
+label.content.pages.page.name=Page name
+label.content.pages.page.content=Page content
+label.content.boxes=Content boxes
+label.content.boxes.position=Box position
+label.content.boxes.name=Box name
+label.content.sections=Content sections
+label.content.friendlyurl=Friendly url
+label.content.metatag.description=Description metatag
+
+#shipping
+label.shipping.title=Shipping configuration
+label.shipping.national=National
+label.shipping.international=International
+label.shipping.mode=Shipping mode
+label.shipping.methods=Shipping methods
+label.shipping.countries=Ship to countries
+label.shipping.options=Shipping options
+label.shipping.taxonshipping=Apply tax on shipping
+label.shipping.freeshipping=Apply free shipping
+label.shipping.freeshippingamount=Free shipping on order amount over
+label.shipping.handlingfees=Handling fees
+label.shipping.packaging.title=Packaging information
+label.shipping.packaging.individual=Items will be shipped individually
+label.shipping.packaging.boxes=Items will be combined and shipped in a box
+label.shipping.packaging.box.height=Box height
+label.shipping.packaging.box.length=Box length
+label.shipping.packaging.box.width=Box width
+label.shipping.packaging.box.weight=Box weight
+label.shipping.packaging.box.maxweight=Maximum weight in box
+label.shipping.packaging.box.maxitems=Maximum items in a box
+label.shipping.addregion=Add region
+label.shipping.region=Region
+label.shipping.allquotes=Display all shipping quotes
+label.shipping.leastexpensivequotes=Display least expensive shipping quotes
+label.shipping.moreexpensivequotes=Display highest expensive shipping quotes
+label.message.region.available=Region available
+label.message.region.exist=Region already exists
+label.shipping.maximumWeight=Maximum weight
+label.shipping.shippingaddress=Shipping address
+label.shipping.billingaddress=Billing address
+label.message.maximumWeight.exist=Maximum weight already exists
+label.shipping.fees=Shipping fees
+label.shipping.freeshipping=Free shipping!
+label.shipping.freeshipping.over=Free shipping for orders over
+label.shipping.freeshippingandhandling=Free shipping and handling
+
+#order
+label.order.title=Orders
+label.order.total=Total
+label.order.date=Order date
+label.order.module=Payment module
+label.order.paymentmode=Payment mode
+label.order.shippingmethod=Shipping mode
+label.order.refund=Apply refund
+label.order.capture=Capture transaction
+label.order.item=Item
+label.order.price=Price
+label.order.sendinvoice=Send email invoice
+label.order.printinvoice=Print invoice
+label.order.packing=Print packing slip
+label.order.updatestatus=Send order status email
+label.order.downloademail=Send download email
+label.order.history=History
+label.order.recent=Recent orders
+label.order.pastorders=Past orders
+label.order.summary=Order summary
+label.order.details=Order details
+label.order.PROCESSING=Processing
+label.order.ORDERED=Ordered
+label.order.PAID=Paid
+label.order.SHIPPED=Delivered
+label.order.PREPARED=Prepared
+label.order.REFUNDED=Refunded
+label.order.DELIVERED=Delivered
+refund=Refund
+
+order.total.subtotal=Sub-total
+order.total.total=Total
+order.total.shipping=Shipping
+order.total.handling=Handling
+
+label.order.recalculate=Recalculate
+
+label.order.transactions=Transactions list
+
+#payment
+label.payment.title=Payment methods
+label.payment.module.title=Payment method
+
+label.payment.paypal.usepaypal=Use PayPal
+label.payment.moneyorder.usemoneyorder=Use money order
+label.payment.creditcard.usecredicard=Use your credit card
+label.payment.creditcard.cardowner=Card Holder's Name
+label.payment.creditcard.cardnumber=Card number
+label.payment.creditcard.cardexpiry=Card expiry date
+label.payment.creditcard.cardcvv=Card validation number
+label.payment.creditcard.whatiscvv=What is a credit card validation number?
+
+
+#tax
+label.tax.taxclass.title=Tax classes
+label.tax.taxclass=Tax class
+label.tax.taxclass.name=Tax class name
+label.tax.taxconfiguration=Tax basis calculation
+label.tax.storeaddress=Store address
+label.tax.piggyback=Piggy back
+label.tax.compound=Compound
+
+#configuration
+label.configuration.options=Configuration options
+label.configuration.configurations=Configurations
+label.configuration.google_analytics_url=Google Analytics URL (UC-XXXXXX)
+label.configuration.google_api_key=Google API key (For maps)
+label.configuration.facebook_page_url=FaceBook Page
+label.configuration.twitter_handle=Twitter handle
+label.social.connect=Connect with us
+label.social.facebook=FaceBook
+label.social.twitter=Twitter
+label.configuration.useglobalsearch_suggestions=Use global pre-defined search suggestions
+label.configuration.globalsearch_suggestions_path=Global pre-defined search suggestions file path
+
+#cart
+label.emptycart=No items in your shopping cart
+label.cart=Shopping cart
+label.mycart=My cart
+label.cart.revieworder=Review your order
+label.cart.placeorder=Place your order
+
+#checkout
+label.checkout=Checkout
+label.subtotal=Sub-total
+label.checkout.confirmation=Order completed
+
+#register
+label.register.notyetregistered=Not yet registered?
+label.register.whyregister=Why register?
+label.register.registerreasons=Simplify a checkout process by having your information filed in, re-order an item from one click and get access to premium information.
+label.register.confirmation=Registration has been completed with success! An email was sent to {0} with all authentication details. Got to {1} and use your authentication information to login.
+
+label.notification.message.passwordchanged=We would like to inform you that your password was recently changed on {0}
+label.notification.title.passwordchanged=Password changed notification
+
+
+#Email configuration
+label.emailconfig.options=Email Configuration Options
+label.emailconfig.protocol=Protocol
+label.emailconfig.host=Host
+label.emailconfig.port=Port
+label.emailconfig.username=Username
+label.emailconfig.password=Password
+label.emailconfig.smtpauth=Requires authentication
+label.emailconfig.starttls=STARTTLS
+label.emailconfig.requiresauthentication=Email server requires authentication (should be true)
+label.emailconfig.requiresstarttls=Some email servers such as Google mail requires starttls encryption
+
+label.adminurl=Administration url
+
+email.username.label=Username : {0}
+email.password.label=Password : {0}
+email.administration.url=Administration url : {0}
+
+email.newuser.title=New user created
+email.newstore.title=New store created
+email.newstore.text=A new store has been created
+email.newuser.text=A new user has been created
+email.newstore.name=Store name : {0}
+email.newstore.info=User informations will be sent on a separate email.
+
+email.order.title={0} - Order confirmation: {1}
+email.order.confirmation=Order confirmation: {0}
+email.order.ordered=Ordered on : {0}
+email.order.updated=Updated on : {0}
+email.order.status.title=Order {0} updated
+email.order.status=Last order status: {0}
+email.order.thanks=Thanks for your purchase!
+email.order.download.title=Download your files - Order confirmation: {0}
+email.order.download.text=Your download files will be available for {0} days. You should have received an email with your login information to the system. Once logged in the system, navigate to the order details <strong>{1}</strong> and click on 'Download files'. You can get access to the customer section by clicking on the following link {2}. If you are having any difficulty with acceding to the customer section please send an email to {3}.
+
+email.contact=A new contact email - {0}
+email.contact.title=Email contact form
+label.checkout.logon=Logon or signup to simplify the online purchase process!
+
+label.checkout.text=Thank you for ordering from {0}. Your order id is {1}.
+label.checkout.email=An email with your order details has been sent to {0}.
+label.checkout.additionaltext=If you have any comments or suggestions for us, please send us an email with your order id. We value your feedback.
+label.checkout.downloads.completed=Here are your download files.
+label.checkout.downloads.processing=An email with your file(s) download instructions will be sent once the payment for this order will be completed.
+
+label.entitylist.paging=Showing {0} - {1} of {2} result(s)
+
+label.checkout.moneyorder=Please make your check or money order payable to:
+
+email.user.resetpassword.text=A request has been made to reset you password. You will find herein your new password.
+email.customer.resetpassword.text=A request has been made to reset you password. You will find herein your new password.
+email.disclaimer=This email address was given to us by you or by one of our customers. If you feel that you have received this email in error, please send an email to {0} for de-activation
+email.contactowner=If you have any questions on this request, please send an email to {0} in order to receive more details.
+email.spam.disclaimer=This email is sent in accordance with the US CAN-SPAM Law in effect 2004-01-01. Removal requests can be sent to this address and will be honored and respected.
+email.copyright=Copyright @ {0} {1}, All Rights Reserved
+email.message.from=Message from {0}
+email.greeting=Hi {0},
+email.customer.greeting=Thanks for joining {0}, you will be able to get access to the customer section by clicking on the following link {1}. Log on to the system and navigate to your order details. Informations to log in are included in this email. If you are having any difficulty with acceding to the customer section please send an email to {2}.
+email.order.statustext=An update on the status has been made on order {0} ordered on {1}
+email.order.status=Updated on {0} - Last order status {1}
+
+
+# General Form
+button.label.close=Close
+button.label.esc=Esc key
+button.label.submit=Save
+button.label.submit2=Submit
+button.label.submitorder=Submit order
+button.label.ok=Ok
+button.label.cancel=Cancel
+button.label.edit=Edit
+button.label.crop=Crop
+button.label.reset=Reset
+button.label.clear=Clear
+button.label.clear.all=Clear all
+button.label.add=Add
+button.label.update=Update
+button.label.removeservice=Remove Service
+button.label.getcode=Get code
+button.label.logout=Logout
+button.label.logon=Logon
+button.label.login=Login
+button.label.signin=Signin
+button.label.register=Register
+button.label.select=Select
+button.label.subscribe=Subscribe
+button.label.printreport=Print report
+button.label.upload.images=Upload Images
+button.label.upload.files=Upload Files
+button.label.resetpassword=Reset Password
+button.label.view=Details
+button.label.addToCart=Add to cart
+
+#menus
+menu.home=Home
+menu.catalogue=Catalogue
+menu.store=Store
+menu.storeDetails=Store
+menu.storeLanding=Store home page
+menu.storeBranding=Store branding
+menu.catalogue-products=Products
+menu.catalogue-products-create=Create product
+menu.catalogue-categories=Categories
+menu.catalogue-categories-create=Create category
+menu.catalogue-categories-list=List of categories
+menu.catalogue-categories-hierarchy=Category hierarchy
+menu.catalogue-products-categories=Products to categories
+menu.catalogue-options=Options
+menu.catalogue-products-images=Product images
+menu.catalogue-options-create=Create option
+menu.catalogue-options-list=Options list
+menu.catalogue-optionsvalues-create=Create option value
+menu.catalogue-optionsvalues-list=Options values list
+menu.catalogue-products-group=Products group
+menu.catalogue-featured=Featured items
+menu.catalogue-products-custom-group=Products custom groups
+menu.customer=Customers
+menu.profile=Profile
+menu.users=Users
+menu.user=User
+menu.myprofile=My profile
+menu.change-password=Change password
+menu.create-user=Create a user
+menu.create-store=Create a store
+menu.store-list=Stores
+menu.security=Security
+menu.security-permissions=Permissions
+menu.security-groups=Groups
+menu.order=Orders
+menu.order-list=List of orders
+menu.shipping=Shipping
+menu.shipping-configs=Shipping configurations
+menu.shipping-methods=Shipping methods
+menu.shipping-options=Shipping options
+menu.shipping-packages=Packaging
+menu.configuration=Configurations
+menu.cache=Cache management
+menu.customer-list=List of customers
+menu.customer-create=Create customer
+menu.customer-options=Customer options
+menu.customer-options-list=List of customer options
+menu.customer-options-create=Create customer option
+menu.customer-options-values-list=List of customer option values
+menu.customer-options-values-create=Create customer option value
+menu.customer-options-set=Manage customer options set
+menu.content=Manage content
+menu.content-pages=Manage pages
+menu.content-boxes=Manage boxes
+menu.content-images=Manage images
+menu.content-images-create=Create images
+menu.content-pages-create=Create page
+menu.content-boxes-create=Create box
+menu.content-files=Manage files
+menu.payment=Payment
+menu.tax=Manage taxes
+menu.taxconfiguration=Tax configuration
+menu.taxclass=Tax classes
+menu.taxrates=Tax rates
+menu.taxrates.rate=Tax rate
+menu.taxrates.code=Tax rate code
+menu.taxrates.name=Tax rate name
+menu.product.category=Associate to categories
+menu.accounts-conf=Accounts configuration
+menu.email-conf=Email settings
+menu.system-configurations=System configurations
+menu.manufacturer-list=List of manufacturers
+menu.manufacturer-create=Create manufacturer
+menu.addaddress=Add a new address
+menu.editaddress=Change address
\ No newline at end of file
diff --git a/sm-shop/src/main/resources/bundles/shopizer_fr.properties b/sm-shop/src/main/resources/bundles/shopizer_fr.properties
new file mode 100644
index 0000000..c387ae0
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/shopizer_fr.properties
@@ -0,0 +1,701 @@
+label.quantity=Quantité
+
+
+label.entity.id=Identifiant
+label.entity.name=Nom
+label.entity.code=Code
+label.entity.visible=Visible
+label.entity.active=Actif
+label.entity.public=Public
+label.entity.details=Détails
+label.entity.type=Type
+label.entity.remove.confirm=Désirez-vous vraiement détruire cette entitée ?
+label.entity.order=Ordre
+label.entity.status=Status
+label.generic.all=Tout
+label.generic.email=Adresse courriel
+label.generic.country=Pays
+label.generic.price=Prix
+label.generic.phone=Téléphone
+label.generic.back=Retour
+label.generic.country.code=Code du pays
+label.generic.stateprovince=État / province
+label.generic.item=article
+label.generic.item.title=Article
+label.generic.items=articles
+label.generic.displayonly=Affichage seulement
+label.generic.url=URL
+label.generic.sortby=Ordonner par
+label.generic.default=Défaut
+label.generic.name=Nom
+label.generic.next=Suivant
+label.generic.genre=Genre
+label.generic.male=Homme
+label.generic.female=Femme
+label.generic.register=Enregistrer
+label.generic.youropinion=Votre opinion
+label.generic.date=Date
+label.generic.comments=Commentaires
+label.generic.subject=Sujet
+
+label.generic.welcome=Bienvenue
+label.generic.weightunit.LB = Livres
+label.generic.weightunit.KG = Kilogrammes
+label.generic.language=Langue
+label.generic.search=Recherche
+
+label.generic.sizeunit.CM = Centimètre
+label.generic.sizeunit.IN = Pouces
+label.generic.remove=Détruire
+label.generic.yes=Oui
+label.generic.no=Non
+label.generic.alphanumeric=Alpha numérique
+label.generic.add=Ajouter
+label.generic.username=User name
+label.generic.edit=Changer
+label.generic.print=Imprimer
+
+label.generic.environment=Environnement
+label.generic.providedby=Propulsé par
+
+label.generic.title=Titre
+label.generic.keywords=Mots clés
+label.generic.amount=Montant
+label.generic.changepassword=Change password
+
+label.generic.confirm=Veuillez confirmer!
+label.generic.firstname=Prénom
+label.generic.lastname=Nom
+label.generic.streetaddress=Adresse civique
+label.generic.postalcode=Code postal
+label.generic.city=Ville
+label.generic.country=Pays
+label.generic.hi=Bonjour
+label.generic.send=Envoyer
+
+
+#merchant store
+label.store.information.title=Informations
+label.store.title=Boutique
+label.store.information=Informations sur la boutique
+label.storeadministration=Administration de la boutique
+label.storeadministrator = Administrateur de la boutique
+label.storename = Nom de la boutique
+label.storecode=Code unique de la boutique
+label.currency = Devise
+label.bgcolorcode = Couleur de fond
+label.storelogo = Logo de la boutique
+label.storebanner = Banniére de la boutique
+label.storephone = Téléphone de la boutique
+label.accepteddomains = Domaines acceptÈs
+label.storeaddress = Adresse de la boutique
+label.storecity = Ville de la boutique
+label.storepostalcode = Code postal de la boutique
+label.storecountry = Pays de la boutique
+label.storezone = État / Région / Province de la boutique
+label.supportedlanguages = Langues prises en charge
+label.storeemailaddress = Adresse e-mail de la boutique
+label.storesetup = Configuration de la boutique
+label.store.template=Th\u00E8me
+label.store.baseurl=Url de base de la boutique (domaine)
+label.store.inbusinesssince=Boutique web en opération depuis
+label.changepasswordrequest = Demande de changement de mot de passe
+label.store.weightunit=Unités de poids
+label.store.sizeunits=Unités de grandeur
+label.store.list=Boutiques
+label.store.useCache=Utiliser la cache
+label.store.currency.format=Format de la monaie national
+label.store.currency.format.help=Format de la monaie national ex $1,345.79 ou Format de la monaie international ex USD1,345.79
+
+label.store.displaycontactussection=Afficher la page contactez-nous
+label.store.displaystoreaddress=Afficher l'adresse de la boutique
+label.store.displayaddtocartfeatured=Permettre l'ajout au panier à partir des articles recommandés
+
+label.storefront.landingpage=Informations de la page principale
+label.storefront.storetext = Contenu de la page principale
+label.storefront.metatags.keywords = (Meta tags) Mots-cl\u00E9s
+label.storefront.metatags.description = (Meta tags) Description
+label.storefront.landingpage.title = Titre de la page principale
+
+#user
+label.profile.title=Profile de l'utilisateur
+label.my.profile=Mon profile
+label.profile.lastaccess=Dernier accès
+
+#search
+label.search.searchQuery=mots recherchés
+label.search.items.found=article(s) trouvé(s)
+
+
+label.generic.password=Mot de passe
+label.generic.repeatpassword=Répéter le mot de passe
+label.generic.newpassword=Nouveau mot de passe
+label.generic.newpassword.repeat=Répéter le nouveau mot de passe
+
+security.question.1=Quelle était la couleur de votre première voiture ?
+security.question.2=Dans quelle ville êtes-vous né ?
+security.question.3=Quel était le nom de votre premier animal de compagnie ?
+security.question.4=Quel est votre genre de musique préféré ?
+security.question.5=Qui \u00E9tait le h\u00E9ro de votre enfance ?
+security.question.6=Dans quelle ville était votre premier emploi ?
+security.question.7=\u00C0 quel endroit \u00EAtiez-vous lors de votre premier baiser ?
+security.question.8=Dans quelle ville avez vous rencontré votre conjoint/conjointe ?
+security.question.9=Quel surnom aviez-vous dans votre enfance ?
+
+security.questions.differentmessages=Choisir 3 questions différentes
+
+security.question1=Question 1
+security.question2=Question 2
+security.question3=Question 3
+security.answer.question1.message=Veuillez répondre à la question de sécurité 1
+security.answer.question2.message=Veuillez répondre à la question de sécurité 2
+security.answer.question3.message=Veuillez répondre à la question de sécurité 3
+
+
+security.group.description.SUPERADMIN=Un seul usager est créé super admin. L'usager 'admin' créé par défaut par le systeème est l'usager superadmin. Cet usager peut tout administrer et il est le seul usager pouvant créeer et supprimer une boutique.
+security.group.description.ADMIN=Un usager admin poss\u00E8de le plus de privil\u00E8ges dans l\u00E8administration de la boutique.Un usager admin peut tout administrer dans une boutique et peut \uFFFD\uFFFDgalement cr\u00E9er d\u00E8autres usagers ayant des acc\u00E8s plus restreints.
+security.group.description.ADMIN_CATALOGUE=Un usager appartenant à ce groupe peut gérer les catégories et les produits. Il peut également configurer les produits vedettes.
+security.group.description.ADMIN_STORE=Un usager appartenant à ce groupe peut administrer toutes configurations reliées à la boutique. L'usager peut également administrer les configurations de paiement et de livraison.
+security.group.description.ADMIN_ORDER=A user part of that group can manage orders, search for orders, modify customer information, apply refund to an order.
+security.group.description.ADMIN_CONTENT=A user assigned to that group will be able to manage the site dynamic and static content, add images, aand files to the system.
+
+label.security.loggedinas=Vous êtes authentifié avec
+label.security.nologinacces.store=Impossible de s'authentifier dans cette section.
+
+#customer
+label.customer.myaccount=Mon Compte
+label.customer.contactus=Contactez-nous
+label.customer.list=Liste de clients
+label.customer.customerlist.title = Liste des clients
+label.customer.customerdetails.title = D\u00E9tails du client
+label.customer.name = Nom du client
+label.customer.lastname = Nom de famille du client
+label.customer.firstname = Prénom du client
+label.customer.id = Identifiant du client
+label.customer.companyname = Nom de l'entreprise
+label.customer.email = Adresse e-mail du client
+label.customer.streetaddress = Adresse
+label.customer.suburb = Banlieue
+label.customer.postalcode = Code postal
+label.customer.telephone = Téléphone
+label.customer.city = Ville
+label.customer.zone = État / Province
+label.customer.country = Pays
+label.customer.registered = Client inscrit (enregistré)
+label.customer.editcustomer=Éditer un client
+label.customer.createcustomer=Créer un client
+label.customer.order.date= Date de la commande
+label.customer.options.edit=Éditer l'option
+
+label.customer.billinginformation = Informations sur la facturation
+label.customer.shippinginformation = Informations sur la livraison
+label.customer.billingshipping=Billing & shipping information
+label.customer.shippingaddress=Adresse de livraison
+label.customer.billingaddress=Adresse de facturation
+
+
+label.customer.edit.billingaddress=Modifier l'adresse de facturation
+label.customer.edit.shippinginformation=Modifier l'adresse de livraison
+
+
+label.customer.billing.company=Company de facturation
+label.customer.billing.streetaddress = Adresse de facturation
+label.customer.billing.suburb = Banlieue de facturation
+label.customer.billing.postalcode = Code postal de facturation
+label.customer.billing.city = Ville de facturation
+label.customer.billing.zone =État / province de facturation
+label.customer.billing.country = Pays de facturation
+label.customer.billing.firstname = Prénom sur la facturation
+label.customer.billing.lastname = Nom de famille sur la facturation
+label.customer.billing.name=Nom sur la facturation
+
+label.customer.shipping.company=Company de livraison
+label.customer.shipping.streetaddress=Adresse de livraison
+label.customer.shipping.suburb=Banlieue de livraison
+label.customer.shipping.postalcode=Code postal de livraison
+label.customer.shipping.city=Ville de livraison
+label.customer.shipping.zone=État / province de livraison
+label.customer.shipping.country=Pays de livraison
+label.customer.shipping.firstname=Pr\u00E9nom sur la livraison
+label.customer.shipping.lastname=Nom de famille sur la livraison
+label.customer.shipping.name=Nom sur la livraison
+label.customer.shipping.shipaddress=Livrer à cette adresse
+
+
+label.customer.optionv.edit=Éditer une option
+label.customer.option.name=Nom de l'option
+label.customer.option.code=Code de l'option
+label.customer.option.type=Type d'affichage
+
+label.customer.optionvalue.edit=Éditer la valeur d'option
+label.customer.optionvalue.name=Nom de la valeur d'option
+label.customer.optionvalue.code=Code de la valeur d'option
+
+label.customer.displaycustomersection=Afficher la section client
+label.customer.accessportal=Vous pouvez accéder à la section des utilisateurs en suivant ce lien
+label.customer.accessnow=Accéder maintenant !
+
+label.customer.resetpasswor.confirm=Êtes-vous certain de vouloir ré-initialiser le mot de passe ?
+label.customer.moredetails=Plus de détails !
+label.order.editcustomer=Éditer le client
+
+#permission
+label.permissions.title=Permissions
+label.permission.editpermission=Éditer les permissions
+label.permission.createpermission=Créer une permission
+label.permission.name=Nom de la permission
+
+#groups
+label.groups.title=Groupes
+label.group.editgroup=éditer un groupe
+label.group.creategroup=Créer un groupe
+label.group.root=Racine
+label.group.groupId=Identifiant du groupe
+
+#category
+label.category.title=Titre de la catégorie
+label.category.highlight=Description éclair
+label.categories.title=Catégories
+label.categories.hierarchy.title=Hierarchie des catégories
+label.category.root=Racine
+label.productedit.categoryname = Nom de la cat\u00E9gorie
+label.productedit.choosecategory = Choisissez une cat\u00E9gorie
+label.category.categogydetails = D\u00E9tails de la cat\u00E9gorie
+label.category.editcategory = Modifier la cat\u00E9gorie
+label.category.movecategory = D\u00E9placer la cat\u00E9gorie
+label.category.moveundercategory = D\u00E9placer sous la cat\u00E9gorie
+label.category.createcategory = Créer une catégorie
+label.category.code=Code de la cat\u00E9gorie
+label.category.categoryvisible = Catégorie visible
+label.category.categorydescription = Description de la cat\u00E9gorie
+label.category.parentcategory = Catégorie parent
+label.category.hierarchy.text=Glisser les catégories pour ré-organiser la hierarchie
+
+#manufacturer
+label.manufacturer.brand=Marques
+label.manufacturer.edit=éditer le manufacturier
+label.manufacturer.create=Créer un manufacturier
+label.manufactureredit.manufacturername=Nom du manufacturier
+label.manufactureredit.manufacturertitle=Titre du manufacturier
+label.manufactureredit.manufacturerurl=URL
+label.manufactureredit.manufacturerurlclicked=URL clique
+label.manufactureredit.manufacturerdescription=Description du manufacturier
+label.manufacturer.image=Image
+label.manufactureredit.manufacturerorder=Sequence
+
+#product
+label.sefurl=Lien convivial
+label.metatags.description = (Meta tags) Description
+label.metatags.keywords = (Meta tags) Mots-clés
+label.product.sku=Sku
+label.product.available=Disponible
+label.product.create=Créer a produit
+label.product.edit=éditer le produit
+label.productedit.productname=Nom du produit
+label.productedit.producthl=Description éclair
+label.productedit.productdesc=Description du produit
+label.product.title=Titre du produit
+label.product.price=Prix du produit
+label.product.price.code=Code de prix du produit
+label.product.price.name=Nom du prix
+label.product.price.default=Prix par défaut
+label.product.price.special=Prix rabais
+label.product.price.special.startdate=Date de début du rabais
+label.product.price.special.enddate=Date de fin du rabais
+label.taxclass = Classe de taxe
+label.product.ordermax=Quantitée maximum permise
+label.product.ordermin=Quantity minimum permise
+label.product.weight = Poids
+label.product.height = Hauteur
+label.product.lenght = Longueur
+label.product.width = Largeur
+label.product.image = Image
+label.product.uploadfile = Importer un fichier
+label.product.details=Détails du produit
+label.product.prices=Prix du produit
+label.product.attributes=Options du produit / Attributs
+label.product.attribute=Option du produit / Attribut
+label.product.attribute.default=Option par défault
+label.product.attribute.required=Option requise
+label.product.attribute.display=Attribut utilisé pour lecture seulement
+label.product.attribute.otherweight=Poids additionnel
+label.product.attribute.option.name=Nom de l'option / attribut
+label.product.attribute.value=Valeur de l'attribut
+label.product.price.create=Créer un prix
+label.product.attribute.create=Créer une option / attribut
+label.product.attribute.specifications=Spécifications
+label.product.category.association=Associer le produit aux catégories
+label.product.customer.reviews=Revues du client
+label.product.reviews=Revue(s) du produit
+label.product.reviews.rating=Évaluation
+label.product.reviews.write=Évaluer ce produit
+label.product.reviews.logon.write=Vous devez vous authentifier afin d'évaluer ce produit
+label.product.reviews.evaluated=Vous avez évalué ce produit
+label.product.featured.meassage=Pour ajouter un produit à la liste des produits vedettes faites glisser le produit du contenant des produits vers la boîte des produits vedetted.
+label.product.group.meassage=Pour ajouter un produit à la liste du groupe de produits faites glisser le produit du contenant des produits vers la boîte du groupe de produit courant.
+label.product.related.title=Produits connexes
+label.product.related.meassage=Pour ajouter un produit à la liste des produits connexes faites glisser le produit du contenant des produits vers la boîte des produits connexes.
+label.product.createsimilar=Créer un produit similaire
+label.product.configure=Définition du produit
+label.product.specification=Spécification
+label.product.digitalproduct=Produit virtuel
+label.product.specials=Spéciaux
+label.product.brand=Marque
+label.product.code=Code de produit
+label.product.nomoreitems=Fin des articles à afficher
+label.product.moreitems=Afficher plus d'articles
+label.product.searchkeywords=Mots clés de recherche
+label.product.shipeable=Le produit doit être livré
+label.product.outofstock=Non disponible
+
+
+#options
+label.product.productoptions.edit.title=Modifier une option de produit
+label.product.productoptions.create.title=Créer une option de produit
+label.product.productoptions.title=Option du produit
+label.product.productoptions.name =Nom de l'option
+label.product.productoptions.price=Prix de l'option
+label.product.productoptions.comments=Commentaires
+label.product.productoptions.type=Type d'option
+
+label.product.productoption.type.text=Texte
+label.product.productoption.type.radio=Radio
+label.product.productoption.type.select=Select
+label.product.productoption.type.checkbox=Checkbox
+
+label.product.customGroup.title=Groupe de produits
+label.product.customgroup.add=Ajouter un groupe de produits
+label.product.customgroup.code=Code du groupe de produit (doit être unique)
+
+label.product.rate=Évaluer ce produit
+label.product.clickrate=Évaluation du produit (cliquez sur les images pour activer l'évaluation)
+
+
+label.product.option.displayonly=Option pour affichage seulement
+label.product.option.code=Code de l'option
+label.product.option.codehelp=Code de l'option requis pour effectuer des recherches de produits par attribut
+
+
+#options values
+label.product.productoptionsvalues.title=Valeurs des options de produit
+label.product.productoptionsvalues.list=Liste des valeurs des options de produit
+label.product.productoptiosvalue.title=Valeur d'option
+label.product.productoptionvalue.edit.title=Modifier une valeur d'option
+label.product.productoptionvalue.create.title=Créer une valeur d'option
+label.product.productoptionvalue=Image de valeur d'option
+
+#content Images - Files
+label.contentImages.store=Boutique marchand
+label.content.images=Librairie d'images
+label.content.files=Librairie de fichiers
+label.content.pages=Pages de contenu
+label.content.pages.manage.content=Gestion du contenu des pages
+label.content.manage.content=Gestion du contenu
+label.content.pages.page.name=Nom de la page
+label.content.pages.page.content=Contenu de la page
+label.content.boxes=Boîtes de contenu
+label.content.boxes.position=Position de la boîte
+label.content.boxes.name=Nom de la boîte
+label.content.sections=Sections de contenu
+label.content.friendlyurl=URL simplifié
+label.content.metatag.description=Méta donnée de description
+
+
+#shipping
+label.shipping.title=Configuration expédition
+label.shipping.national=National
+label.shipping.international=International
+label.shipping.mode=Statut d'expédition
+label.shipping.methods=Méthodes d'expédition
+label.shipping.countries=Pays d'expédition
+label.shipping.options=Options d'expédition
+label.shipping.taxonshipping=Appliquer la taxe sur l'expédition
+label.shipping.freeshipping=Livraison gratuite
+label.shipping.freeshippingamount=Livraison gratuite sur une commande dont le montant est supérieur à
+label.shipping.handlingfees=Frais de manutention
+label.shipping.packaging.title=Packaging information
+label.shipping.packaging.individual=Les items seront expédiés séparément
+label.shipping.packaging.boxes=Les items seront combinés et expédiés dans une boîte
+label.shipping.packaging.box.height=Hauteur de la boîte
+label.shipping.packaging.box.length=Longueur de la boîte
+label.shipping.packaging.box.width=Largeur de la boîte
+label.shipping.packaging.box.weight=Poids de la boîte
+label.shipping.packaging.box.maxweight=Poids maximum supporté par la boîte
+label.shipping.packaging.box.maxitems=Nombre maximum d'items dans la boîte
+label.shipping.addregion=Ajouter une région
+label.shipping.region=Région
+label.shipping.allquotes=Afficher toutes les catations obtenues
+label.shipping.leastexpensivequotes=Afficher la catations obtenue la moins dispendieuse
+label.shipping.moreexpensivequotes=Afficher la catations obtenue la plus dispendieuse
+label.message.region.available=Région disponible
+label.message.region.exist=Région existe déjà
+label.shipping.maximumWeight=Poids maximum
+label.shipping.shippingaddress=Adresse de livraison
+label.shipping.billingaddress=Adresse de facturation
+label.message.maximumWeight.exist=Poids maximum existe déjà
+label.shipping.fees=Frais de livraison
+label.shipping.freeshipping=Livraison gratuite !
+label.shipping.freeshipping.over=Livraison gratuite pour les commandes dont le montant est supérieur à
+label.shipping.freeshippingandhandling=Livraison et manutention gratuits
+
+#order
+label.order.title=Commandes
+label.order.total=Total
+label.order.date=Date de la commande
+label.order.module=Module du paiement
+label.order.shippingmethod=Mode d'expédition
+label.order.paymentmode=Mode de paiement
+label.order.refund=Appliquer un remboursement
+label.order.capture=Compléter la transaction
+label.order.item=Article
+label.order.price=Prix
+label.order.sendinvoice=Envoyer la facture par courriel
+label.order.printinvoice=Imprimer la facture
+label.order.packing=Imprimer l'étiquette d'expédition
+label.order.updatestatus=Envoyer un statut de la commande
+label.order.downloademail=Envoyer les instructions de téléchargement
+label.order.history=Historique
+label.order.recent=Dernières commandes
+label.order.pastorders=Historique des commandes
+label.order.summary=Sommaire de la commande
+label.order.PROCESSING=En traîtement
+label.order.ORDERED=Commandée
+label.order.PAID=Payée
+label.order.SHIPPED=Livrée
+label.order.PREPARED=Préparés
+label.order.REFUNDED=Remboursée
+label.order.DELIVERED=Livrée
+refund=Remboursement
+
+order.total.subtotal=Sous-total
+order.total.total=Total
+order.total.shipping=Livraison
+order.total.handling=Manutention
+
+label.order.recalculate=Recalculer
+label.order.transactions=Liste des transactions
+
+#payment
+label.payment.title=Méthodes de paiement
+label.payment.module.title=Méthode de paiement
+
+label.payment.paypal.usepaypal=Utiliser PayPal
+label.payment.moneuorder.usemoneyorder=Utiliser une traîte bancaire
+label.payment.creditcard.usecredicard=Utitliser votre carte de crédit
+label.payment.creditcard.cardowner=Nom inscrit sur la carte
+label.payment.creditcard.cardowner=Numéro de la carte
+label.payment.creditcard.cardexpiry=Date d'expiration de la carte de crédit
+label.payment.creditcard.cardcvv=Numéro de validation de la carte de crédit
+label.payment.creditcard.whatiscvv=Qu'est-ce que le numéro de validation de la carte de crédit
+
+#tax
+label.tax.taxclass.title=Classes de taxes
+label.tax.taxclass=Classe de taxe
+label.tax.taxclass.name=Nom de la classe de taxe
+label.tax.taxconfiguration=Bases du calcul des taxes
+label.tax.storeaddress=Adresse de la boutique
+label.tax.piggyback=Cumulée à une autre taxe
+label.tax.compound=Composée à une autre taxe
+
+#configuration
+label.configuration.options=Options de configuration
+label.configuration.configurations=Configurations
+label.configuration.google_analytics_url=URL Google Analytics (UC-XXXXXX)
+label.configuration.google_api_key=Clée Google pour API (pour les cartes)
+label.configuration.facebook_page_url=URL de la page FaceBook
+label.configuration.twitter_handle=Compte Twitter
+label.social.connect=Restons en contact
+label.social.facebook=FaceBook
+label.social.twitter=Twitter
+label.configuration.useglobalsearch_suggestions=Utiliser un fichier global de recherches pré-défini
+label.configuration.globalsearch_suggestions_path=Chemin d'accès du fichier global de recherches pré-défini
+
+#cart
+label.emptycart=Aucun item dans le panier d'achat
+label.cart=Panier d'achat
+label.mycart=Mes achats
+label.cart.revieworder=Revoir votre commande
+label.cart.placeorder=Passez votre commande
+
+#checkout
+label.checkout=Paiement
+label.subtotal=Sous-total
+label.checkout.confirmation=La commande a été complétée
+
+#register
+label.register.notyetregistered=Pas encore enregistré ?
+label.register.whyregister=Pourquoi s'enregistrer ?
+label.register.registerreasons=Simplify a checkout process by having your information pre-filed, re-order an item from one click and get access to premium information.
+label.register.confirmation=L'enregistrement a été complété avec succès ! Un couriel a été envoyé à {0} comprenant les informations permettant de se connecter. Allez à {1} afin de vous connecter au système.
+
+label.notification.message.passwordchanged=Nous désirons vous informer qu'une demande de changement de votre mot de passe a été faite le {0}
+label.notification.title.passwordchanged=Notification d'un changement de mot de passe
+
+
+#Email configuration
+label.emailconfig.options=Configurations du serveur email
+label.emailconfig.protocol=Protocole
+label.emailconfig.host=Hôte
+label.emailconfig.port=Port
+label.emailconfig.username=Nom d'usager
+label.emailconfig.password=Mot de passe
+label.emailconfig.smtpauth=Authentication requise
+label.emailconfig.starttls=STARTTLS
+label.emailconfig.requiresauthentication=Le serveur email requiert une authentification (devrait être vrai)
+label.emailconfig.requiresstarttls=Certains serveurs email tels que Google mail requierent l'utilisation de l'encryption STARTTLS
+
+label.adminurl=Adresse du site d'administration
+email.newuesr.title=Nouvel usager créé
+
+email.username.label=Code d'usager : {0}
+email.password.label=Mot de passe : {0}
+email.administration.url=Lien administration : {0}
+
+email.newstore.title=Création d'un nouveau marchand
+email.newstore.text=Un nouveau marchand a été créé
+email.newuser.text=Un nouvel usager a été créé
+email.newstore.name=Nom du marchand : {0}
+email.newstore.info=Les informations de l'usager seront envoyées dans un couriel différent.
+
+email.order.title={0} - Confirmation : {1}
+email.order.confirmation=Numéro de confirmation de la commande : {0}
+email.order.ordered=Commandé le : {0}
+email.order.updated=Mis à jour le : {0}
+email.order.status.title=Commande {0} mise à jour
+email.order.status=Dernier statut de la commande : {0}
+email.order.thanks=Merci pour cette commande !
+email.order.download.title=Téléchargez vos fichiers - Commande : {0}
+email.order.download.text=Vos fichiers prêts à télécharger seront disponibles pendant {0} jours. Vous devriez avoir reçu un courriel avec les informations nécessaires à l'accès au système. Une fois authentifié dans le système, naviguez vers le détail de la commande <strong>{1}</strong> et cliquez sur 'Télécharger mes fichiers'. Vous avez accès au système en suivant ce lien {2}. Si vous avez des difficultées à accéder à la section client, envoyez un couriel à {3}.
+
+email.contact=Nouveau contact - {0}
+email.contact.title=Formulaire de contact
+label.checkout.logon=Vous pouvez vous authentifier ou vous abonner afin de simplifier le processus d'achats !
+
+
+label.checkout.text=Merci d'avoir commandé de {0}. Vontre nu,éro de commande est {1}.
+label.checkout.email=Un courriel contenant le détail de la commande a été envoyé à {0}.
+label.checkout.additionaltext=Si vous avez des commentaires ou suggestions à nous envoyez vous pouvez le faire par courriel en prenant le soin de mentionner le numéro de votre commande.
+label.checkout.downloads.completed=Voici le(s) fichier(s) à télécharger.
+label.checkout.downloads.processing=Un courriel contenant un lien vers le(s) fichier(s) à télécharger vous sera envoyé dès que le paiement pour cette commande sera complété.
+
+label.entitylist.paging=Affichage de {0} - {1} de {2} résultat(s)
+
+label.checkout.moneyorder=S'il vous plaît faire votre chèque ou mandat à l'ordre de :
+
+email.user.resetpassword.text=Une requête a été faite afin de ré-initialiser votre mot de passe. Vous trouverez ci-joint votre nouveau mot de passe.
+email.customer.resetpassword.text=Une requête a été faite afin de ré-initialiser votre mot de passe. Vous trouverez ci-joint votre nouveau mot de passe.
+email.disclaimer = Cette adresse de courriel nous a été donnée par vous ou par un de nos clients. Si vous pensez que vous avez reçu ce courriel par erreur, s''il vous plaît envoyez un courriel à {0} pour procéder à la désactivation
+email.contactowner=Si vous avez des questions concernant cette requête, envoyez un message courriel à {0} afin de recevoir plus de détails.
+email.spam.disclaimer = Ce courriel est envoyé en conformité avec la loi CAN-SPAM américaine en vigueur le 2004-01-01. Les demandes de suppression peuvent être envoyées à cette adresse et seront honorées et respectées.
+email.copyright=Tous droits réservés {0} {1}
+email.message.from = Message de {0}
+email.greeting=Bonjour {0},
+email.customer.greeting=Merci de vous joindre à {0}, vous pourrez accéder à la section des clients en utilisant ce lien {1}. Authentifiez-vous au système et naviguez vers la section de détail des commandes. Les informations vous permettant de vous authentifier sont incluses dans ce couriel. Si vous avez des difficultées à accéder à la section client, envoyez un couriel à {2}.
+email.order.statustext=Une mise à jour a été faite à la commande {0} commandée le {1}
+email.order.status=Mis à jour le {0} - Dernier statut de la commande {1}
+
+
+# Formulaire général
+button.label.close = Fermer
+button.label.esc = Touche Esc
+button.label.submit=Sauvegarder
+button.label.submit2=Soumettre
+button.label.submitorder=Envoyer la commande
+button.label.ok=Ok
+button.label.edit=éditer
+button.label.cancel = Annuler
+button.label.crop = Redimensioner
+button.label.reset = Ré-initialiser
+button.label.clear = Effacer
+button.label.clear.all=Effacer tout
+button.label.add = Ajouter
+button.label.update = Mise à jour
+button.label.removeservice = Supprimer le Service
+button.label.getcode = Obtenir le code
+button.label.logout = Déconnection
+button.label.logon = Authentifier
+button.label.login = Connection
+button.label.signin=Authentification
+button.label.register=S'enregistrer
+button.label.select = Sélectionner
+button.label.subscribe = S'abonner
+button.label.printreport=Imprimer un rapport
+button.label.upload.images=Ajouter des fichiers
+button.label.resetpassword=Ré-initialiser le mot de passe
+button.label.view=Détails
+button.label.addToCart=Ajouter au panier
+
+menu.home=Page d'acceuil
+menu.catalogue=Catalogue
+menu.store=Boutique
+menu.storeDetails=Boutique
+menu.storeLanding=Boutique - page principale
+menu.storeBranding=Boutique - image de marque
+menu.catalogue-products=Produits
+menu.catalogue-products-create=Créer un produit
+menu.catalogue-categories=Catégories
+menu.catalogue-categories-create=Créer une catégorie
+menu.catalogue-categories-list=Liste des catégories
+menu.catalogue-categories-hierarchy=Structure des catégories
+menu.catalogue-products-categories=Produits - Catégories
+menu.catalogue-options=Options
+menu.catalogue-products-images=Images du produit
+menu.catalogue-options-create=Créer une option
+menu.catalogue-options-list=Liste des options
+menu.catalogue-optionsvalues-create=Créer une valeur d'option
+menu.catalogue-optionsvalues-list=Liste des valeurs d'options
+menu.catalogue-products-group=Groupes de produits
+menu.catalogue-featured=Items vedettes
+menu.catalogue-products-custom-group=Autres groupes de produits
+menu.customer=Clients
+menu.profile=Profile
+menu.users=Utilisateurs
+menu.user=Utilisateur
+menu.myprofile=Mon profile
+menu.change-password=Changement de mot de passe
+menu.create-user=Créer un utilisateur
+menu.create-store=Créer une boutique
+menu.store-list=Liste des boutiques
+menu.security=Securité
+menu.security-permissions=Permissions
+menu.security-groups=Groupes
+menu.order=Commandes
+menu.order-list=Liste des commandes
+menu.shipping=Expédition
+menu.shipping-configs=Configurations de l'expédition
+menu.shipping-methods=Méthodes d'expédition
+menu.shipping-options=Options d'expédition
+menu.shipping-packages=Emballage
+menu.cache=Gestion de la cache
+menu.configuration=Configurations
+menu.customer-list=Liste des clients
+menu.customer-create=Créer un client
+menu.customer-options=Options du client
+menu.customer-options-list=Liste des options du client
+menu.customer-options-create=Créer une option de client
+menu.customer-options-values-list=Liste de valeurs des options du client
+menu.customer-options-values-create=Créer une valeur option d'option du client
+menu.customer-options-set=Gérer les options possibles du client
+menu.content=Gestion du contenu
+menu.content-pages=Gérer les pages
+menu.content-pages-create=Créer un page
+menu.content-boxes-create=Créer une boîte
+menu.content-boxes=Gérer les boîtes
+menu.content-images=Gérer les images
+menu.content-files=Gérer les fichiers
+menu.payment=Paiement
+menu.tax=Taxes de vente
+menu.taxconfiguration=Configuration des taxes
+menu.taxclass=Classes de taxes
+menu.taxrates=Taux des taxes
+menu.taxrates.rate=Taux
+menu.taxrates.code=Code du taux de taxe
+menu.taxrates.name=Nom de la taxe
+menu.product.category=Asscoier aux catégories
+menu.accounts-conf=Configuration des comptes
+menu.email-conf=Configuration du courriel
+menu.system-configurations=Configurations du système
+menu.manufacturer-list=Liste des fabricants
+menu.manufacturer-create=Créer un fabricant
+menu.addaddress=Ajouter une nouvelle adresse
+menu.editaddress=Changer l'adresse
diff --git a/sm-shop/src/main/resources/database.properties b/sm-shop/src/main/resources/database.properties
new file mode 100644
index 0000000..dc8f723
--- /dev/null
+++ b/sm-shop/src/main/resources/database.properties
@@ -0,0 +1,31 @@
+##
+## configuration base de donn�es
+##
+
+
+#MYSQL
+#db.jdbcUrl=jdbc:mysql://localhost:3306/SALESMANAGER?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
+#db.user=youruser
+#db.password=yourpassword
+#hibernate.hbm2ddl.auto=update
+#db.driverClass=com.mysql.jdbc.Driver
+#hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
+#db.preferredTestQuery=SELECT 1
+#db.schema=SALESMANAGER
+
+#H2
+db.jdbcUrl=jdbc\:h2\:file\:SALESMANAGER;AUTOCOMMIT=OFF;INIT\=CREATE SCHEMA IF NOT EXISTS SALESMANAGER
+db.user=test
+db.password=password
+db.driverClass=org.h2.Driver
+hibernate.dialect=org.hibernate.dialect.H2Dialect
+db.preferredTestQuery=SELECT 1
+db.schema=SALESMANAGER
+hibernate.hbm2ddl.auto=update
+
+##
+## configuration pooling base de donn�es
+##
+db.initialPoolSize=10
+db.minPoolSize=5
+db.maxPoolSize=50
\ No newline at end of file
sm-shop/src/main/resources/log4j.xml 95(+95 -0)
diff --git a/sm-shop/src/main/resources/log4j.xml b/sm-shop/src/main/resources/log4j.xml
new file mode 100644
index 0000000..b45d23a
--- /dev/null
+++ b/sm-shop/src/main/resources/log4j.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- # The five logging levels used by Log are (in order):
+#
+# 1. DEBUG (the least serious)
+# 2. INFO
+# 3. WARN
+# 4. ERROR
+# 5. FATAL (the most serious)
+ -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+<appender name="CORE" class="org.apache.log4j.rolling.RollingFileAppender">
+ <!-- The active file to log to -->
+ <param name="File" value="/sm-core.log" />
+ <param name="MaxFileSize" value="10000KB"/>
+ <param name="Append" value="true" />
+ <param name="Encoding" value="UTF-8" />
+ <param name="Threshold" value="debug" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The log message pattern -->
+ <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} [%5p] (%F:%L) [%M] - %m%n" />
+ </layout>
+</appender>
+
+<logger name="com.salesmanager.core" additivity="false">
+ <level value="debug"/>
+ <appender-ref ref="CORE" />
+</logger>
+
+<appender name="WEB" class="org.apache.log4j.rolling.RollingFileAppender">
+ <param name="File" value="/sm-shop.log" />
+ <param name="Append" value="true" />
+ <param name="Encoding" value="UTF-8" />
+ <param name="Threshold" value="debug" />
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} [%5p] (%F:%L) [%M] - %m%n" />
+ </layout>
+</appender>
+
+<logger name="com.salesmanager.web" additivity="false">
+ <level value="debug"/>
+ <appender-ref ref="WEB" />
+</logger>
+
+<!--<appender name="WEB_FRONT" class="org.apache.log4j.rolling.RollingFileAppender">
+ <param name="File" value="/sm-shop-front.log" />
+ <param name="Append" value="true" />
+ <param name="Encoding" value="UTF-8" />
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} [%5p] (%F:%L) [%M] - %m%n" />
+ </layout>
+</appender>
+
+<logger name="com.salesmanager.web.shop" additivity="false">
+ <level value="debug"/>
+ <appender-ref ref="WEB_FRONT" />
+</logger>
+
+-->
+
+<!--<appender name="WEB_ADMIN" class="org.apache.log4j.rolling.RollingFileAppender">
+ <param name="File" value="/sm-shop-admin.log" />
+ <param name="Append" value="true" />
+ <param name="Encoding" value="UTF-8" />
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} [%5p] (%F:%L) [%M] - %m%n" />
+ </layout>
+</appender>
+
+<logger name="com.salesmanager.web.admin" additivity="false">
+ <level value="debug"/>
+ <appender-ref ref="WEB_ADMIN" />
+</logger>
+
+-->
+
+<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out"/>
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%p %c: %m%n"/>
+ </layout>
+</appender>
+
+<root>
+ <priority value="debug" />
+ <appender-ref ref="CONSOLE" />
+</root>
+
+</log4j:configuration>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/common/adminLinks.jsp b/sm-shop/src/main/webapp/common/adminLinks.jsp
new file mode 100644
index 0000000..8b00832
--- /dev/null
+++ b/sm-shop/src/main/webapp/common/adminLinks.jsp
@@ -0,0 +1,36 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+ <!-- Le styles -->
+
+ <link href="<c:url value="/resources/css/bootstrap/css/sm-bootstrap.css" />" rel="stylesheet">
+ <link href="<c:url value="/resources/css/sm-bootstrap-responsive.css" />" rel="stylesheet">
+
+
+
+
+
+ <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
+ <!--[if lt IE 9]>
+ <!--<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>-->
+ <![endif]-->
+ <link href="<c:url value="/resources/css/shopizer-admin.css" />" rel="stylesheet">
+
+
+ <script src="<c:url value="/resources/js/jquery.showLoading.min.js" />"></script>
+ <link href="<c:url value="/resources/css/showLoading.css" />" rel="stylesheet">
+
+
+ <script>var isomorphicDir="<c:url value="/resources/smart-client/" />";</script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_Core.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_Foundation.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_Containers.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_Grids.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_Forms.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_DataBinding.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/skins/Graphite/load_skin.js" />"></script>
+
sm-shop/src/main/webapp/common/adminTabs.jsp 36(+36 -0)
diff --git a/sm-shop/src/main/webapp/common/adminTabs.jsp b/sm-shop/src/main/webapp/common/adminTabs.jsp
new file mode 100644
index 0000000..f0234fc
--- /dev/null
+++ b/sm-shop/src/main/webapp/common/adminTabs.jsp
@@ -0,0 +1,36 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+
+<%@ page session="false" %>
+
+
+ <c:if test="${fn:length(currentMenu.menus)>0}">
+
+ <ul class="nav nav-tabs">
+ <c:forEach items="${currentMenu.menus}" var="menu">
+ <sec:authorize access="hasRole('${menu.role}') and fullyAuthenticated">
+ <c:choose>
+ <c:when test="${fn:length(menu.menus)==0}">
+ <li id="${menu.code}-tab" <c:if test="${activeMenus[menu.code]!=null}"> class="active"</c:if>><a href="#" id="${menu.code}-link" data-toggle="tab"><s:message code="menu.${menu.code}" text="${menu.code}"/></a></li>
+ </c:when>
+ <c:otherwise>
+ <li class="dropdown <c:if test="${activeMenus[menu.code]!=null}"> active</c:if>" style="z-index:500000;position:relative">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown"><s:message code="menu.${menu.code}" text="${menu.code}"/><b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <c:forEach items="${menu.menus}" var="submenu">
+ <sec:authorize access="hasRole('${submenu.role}') and fullyAuthenticated">
+ <li><a href="#" id="${submenu.code}-link" data-toggle="tab"><s:message code="menu.${submenu.code}" text="${submenu.code}"/></a></li>
+ </sec:authorize>
+ </c:forEach>
+ </ul>
+ </li>
+ </c:otherwise>
+ </c:choose>
+ </sec:authorize>
+ </c:forEach>
+ </ul>
+
+ </c:if>
\ No newline at end of file
sm-shop/src/main/webapp/layout/admin/layout.jsp 384(+384 -0)
diff --git a/sm-shop/src/main/webapp/layout/admin/layout.jsp b/sm-shop/src/main/webapp/layout/admin/layout.jsp
new file mode 100644
index 0000000..dd8b6ca
--- /dev/null
+++ b/sm-shop/src/main/webapp/layout/admin/layout.jsp
@@ -0,0 +1,384 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ page import="java.util.Calendar" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+ <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+ <c:set var="lang" scope="request" value="${requestScope.locale.language}"/>
+
+
+ <html xmlns="http://www.w3.org/1999/xhtml">
+
+
+ <head>
+
+
+ <meta charset="utf-8">
+ <title><s:message code="label.storeadministration" text="Store administration" /></title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="">
+
+ <script src="<c:url value="/resources/js/bootstrap/jquery.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery.friendurl.min.js" />"></script>
+
+
+ <jsp:include page="/common/adminLinks.jsp" />
+
+
+
+
+
+
+ </head>
+
+ <body class="body">
+
+ <p> </p>
+
+<div class="sm">
+ <div class="container">
+
+ <div class="row">
+
+ <div class="span4"><a class="brand" href="#"><img src="<c:url value="/resources/img/shopizer_small.jpg" />"/></a></div>
+
+ <div class="span4 offset4">
+
+
+
+
+
+
+
+
+ <div class="btn-group pull-right">
+ <div class="nav-collapse">
+ <ul class="nav pull-right" style="z-index:500000;position:relative">
+ <li class="dropdown">
+
+ <a data-toggle="dropdown" class="dropdown-toggle" href="#">
+ <i class="icon-user"></i>
+ <sec:authentication property="principal.username" />
+ <b class="caret"></b>
+ </a>
+
+ <ul class="dropdown-menu">
+ <li><a href="<c:url value="/admin/users/displayUser.html" />"><s:message code="label.my.profile" text="My profile" /></a></li>
+ <!--<li><a href="javascript:;">TODO //Language</a></li>-->
+ <li class="divider"></li>
+ <li>
+ <c:url value="/admin/j_spring_security_logout" var="logoutUrl"/>
+ <a href="${logoutUrl}"><s:message code="button.label.logout" text="Logout" /></a>
+ </li>
+ </ul>
+
+ </li>
+ </ul>
+
+
+
+ </div><!--/.nav-collapse -->
+
+ </div>
+
+ </div>
+
+
+
+
+ </div>
+
+ </div>
+
+
+ <div class="row"> </div>
+
+
+
+ <div class="container">
+ <div class="row">
+
+ <div class="span3">
+ <ul class="nav nav-list">
+ <c:forEach items="${requestScope.MENULIST}" var="menu">
+ <sec:authorize access="hasRole('${menu.role}') and fullyAuthenticated">
+ <li <c:if test="${activeMenus[menu.code]!=null}"> class="active"</c:if>>
+ <a href="<c:url value="${menu.url}" />">
+ <i class="${menu.icon}"></i>
+ <s:message code="menu.${menu.code}" text="${menu.code}"/>
+ </a>
+ </li>
+ </sec:authorize>
+ </c:forEach>
+ </ul>
+ </div><!-- end span 3 -->
+
+
+
+ <div class="span9">
+
+ <tiles:insertAttribute name="body"/>
+
+ </div>
+
+
+ </div>
+
+
+
+
+ <hr>
+
+
+ <footer>
+ <p>© Shopizer 2010-<%=Calendar.getInstance().get(Calendar.YEAR)%></p>
+ </footer>
+
+
+ </div> <!-- /container -->
+
+
+
+</div>
+
+ <!-- Le javascript
+ ================================================== -->
+ <!-- Placed at the end of the document so the pages load faster -->
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-button.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-modal.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-tab.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-transition.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-alert.js" />"></script>
+
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-dropdown.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-scrollspy.js" />"></script>
+
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-tooltip.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-popover.js" />"></script>
+
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-collapse.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-carousel.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-typeahead.js" />"></script>
+
+
+
+
+
+ <script>
+
+ $(document).ready(function(){
+
+
+ $("#catalogue-products-create-link").click(function() {
+ window.location='<c:url value="/admin/products/createProduct.html" />';
+ });
+ $("#catalogue-categories-list-link").click(function() {
+ window.location='<c:url value="/admin/categories/categories.html" />';
+ });
+ $("#catalogue-products-categories-link").click(function() {
+ window.location='<c:url value="/admin/products/product-categories.html" />';
+ });
+ $("#catalogue-link").click(function() {
+ window.location='<c:url value="/admin/products/products.html" />';
+ });
+ $("#catalogue-categories-hierarchy-link").click(function() {
+ window.location='<c:url value="/admin/categories/hierarchy.html" />';
+ });
+ $("#catalogue-categories-create-link").click(function() {
+ window.location='<c:url value="/admin/categories/createCategory.html" />';
+ });
+ $("#catalogue-options-list-link").click(function() {
+ window.location='<c:url value="/admin/options/options.html" />';
+ });
+ $("#catalogue-options-create-link").click(function() {
+ window.location='<c:url value="/admin/options/createOption.html" />';
+ });
+ $("#catalogue-optionsvalues-list-link").click(function() {
+ window.location='<c:url value="/admin/options/optionvalues.html" />';
+ });
+ $("#catalogue-optionsvalues-create-link").click(function() {
+ window.location='<c:url value="/admin/options/createOptionValue.html" />';
+ });
+ $("#catalogue-featured-link").click(function() {
+ window.location='<c:url value="/admin/catalogue/featured/list.html" />';
+ });
+ $("#catalogue-products-custom-group-link").click(function() {
+ window.location='<c:url value="/admin/products/groups/list.html" />';
+ });
+ $("#manufacturer-list-link").click(function() {
+ window.location='<c:url value="/admin/catalogue/manufacturer/list.html" />';
+ });
+ $("#manufacturer-create-link").click(function() {
+ window.location='<c:url value="/admin/catalogue/manufacturer/create.html" />';
+ });
+ $("#myprofile-link").click(function() {
+ window.location='<c:url value="/admin/users/displayUser.html" />';
+ });
+ $("#user-link").click(function() {
+ window.location='<c:url value="/admin/users/displayUser.html" />';
+ });
+ $("#change-password-link").click(function() {
+ window.location='<c:url value="/admin/users/password.html" />';
+ });
+ $("#users-link").click(function() {
+ window.location='<c:url value="/admin/users/list.html" />';
+ });
+ $("#create-user-link").click(function() {
+ window.location='<c:url value="/admin/users/createUser.html" />';
+ });
+ $("#security-permissions-link").click(function() {
+ window.location='<c:url value="/admin/user/permissions.html" />';
+ });
+ $("#security-groups-link").click(function() {
+ window.location='<c:url value="/admin/user/groups.html" />';
+ });
+ $("#customer-list-link").click(function() {
+ window.location='<c:url value="/admin/customers/list.html" />';
+ });
+ $("#customer-create-link").click(function() {
+ window.location='<c:url value="/admin/customers/customer.html" />';
+ });
+ $("#customer-options-list-link").click(function() {
+ window.location='<c:url value="/admin/customers/options/list.html" />';
+ });
+ $("#customer-options-create-link").click(function() {
+ window.location='<c:url value="/admin/customers/options/create.html" />';
+ });
+ $("#customer-options-values-list-link").click(function() {
+ window.location='<c:url value="/admin/customers/options/values/list.html" />';
+ });
+ $("#customer-options-values-create-link").click(function() {
+ window.location='<c:url value="/admin/customers/options/values/create.html" />';
+ });
+ $("#customer-options-set-link").click(function() {
+ window.location='<c:url value="/admin/customers/optionsset/list.html" />';
+ });
+ $("#order-list-link").click(function() {
+ window.location='<c:url value="/admin/orders/list.html" />';
+ });
+ $("#storeDetails-link").click(function() {
+ window.location='<c:url value="/admin/store/store.html" />';
+ });
+ $("#create-store-link").click(function() {
+ window.location='<c:url value="/admin/store/storeCreate.html" />';
+ });
+ $("#store-list-link").click(function() {
+ window.location='<c:url value="/admin/store/list.html" />';
+ });
+ $("#storeBranding-link").click(function() {
+ window.location='<c:url value="/admin/store/storeBranding.html" />';
+ });
+ $("#storeLanding-link").click(function() {
+ window.location='<c:url value="/admin/store/storeLanding.html" />';
+ });
+ $("#content-link").click(function() {
+ window.location='<c:url value="/admin/content/contentImages.html" />';
+ });
+ $("#content-images-create-link").click(function() {
+ window.location='<c:url value="/admin/content/createContentImages.html" />';
+ });
+ $("#content-pages-link").click(function() {
+ window.location='<c:url value="/admin/content/pages/list.html" />';
+ });
+ $("#content-pages-create-link").click(function() {
+ window.location='<c:url value="/admin/content/pages/create.html" />';
+ });
+ $("#content-boxes-link").click(function() {
+ window.location='<c:url value="/admin/content/boxes/list.html" />';
+ });
+ $("#content-boxes-create-link").click(function() {
+ window.location='<c:url value="/admin/content/boxes/create.html" />';
+ });
+ $("#content-files-link").click(function() {
+ window.location='<c:url value="/admin/content/static/contentFiles.html" />';
+ });
+ $("#content-images-link").click(function() {
+ window.location='<c:url value="/admin/content/contentImages.html" />';
+ });
+ $("#shipping-configs-link").click(function() {
+ window.location='<c:url value="/admin/shipping/shippingConfigs.html" />';
+ });
+ $("#shipping-methods-link").click(function() {
+ window.location='<c:url value="/admin/shipping/shippingMethods.html" />';
+ });
+ $("#shipping-options-link").click(function() {
+ window.location='<c:url value="/admin/shipping/shippingOptions.html" />';
+ });
+ $("#shipping-packages-link").click(function() {
+ window.location='<c:url value="/admin/shipping/shippingPackaging.html" />';
+ });
+ $("#accounts-conf-link").click(function() {
+ window.location='<c:url value="/admin/configuration/accounts.html" />';
+ });
+ $("#email-conf-link").click(function() {
+ window.location='<c:url value="/admin/configuration/email.html" />';
+ });
+ $("#system-configurations-link").click(function() {
+ window.location='<c:url value="/admin/configuration/system.html" />';
+ });
+ $("#taxclass-link").click(function() {
+ window.location='<c:url value="/admin/tax/taxclass/list.html" />';
+ });
+ $("#taxconfiguration-link").click(function() {
+ window.location='<c:url value="/admin/tax/taxconfiguration/edit.html" />';
+ });
+ $("#taxrates-link").click(function() {
+ window.location='<c:url value="/admin/tax/taxrates/list.html" />';
+ });
+
+ });
+
+
+ function checkCode(code, id, url) {
+
+
+
+ $.ajax({
+ type: 'POST',
+ dataType: "json",
+ url: url,
+ data: "code="+ code + "&id=" + id,
+ success: function(response) {
+ var msg = isc.XMLTools.selectObjects(response, "/response/statusMessage");
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+
+ callBackCheckCode(msg,status);
+
+
+ },
+ error: function(jqXHR,textStatus,errorThrown) {
+ alert(jqXHR + "-" + textStatus + "-" + errorThrown);
+ }
+
+ });
+
+
+
+ }
+
+</script>
+
+
+
+ </body>
+
+ </html>
+
diff --git a/sm-shop/src/main/webapp/layout/admin/noSkinLayout.jsp b/sm-shop/src/main/webapp/layout/admin/noSkinLayout.jsp
new file mode 100644
index 0000000..8a7f1ab
--- /dev/null
+++ b/sm-shop/src/main/webapp/layout/admin/noSkinLayout.jsp
@@ -0,0 +1,95 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+ <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+ <c:set var="lang" scope="request" value="${requestScope.locale.language}"/>
+
+
+ <html xmlns="http://www.w3.org/1999/xhtml">
+
+
+ <head>
+
+
+ <meta charset="utf-8">
+ <title><s:message code="label.storeadministration" text="Store administration" /></title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="">
+
+ <script src="<c:url value="/resources/js/bootstrap/jquery.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery.friendurl.min.js" />"></script>
+
+
+ <jsp:include page="/common/adminLinks.jsp" />
+
+
+
+
+
+
+ </head>
+
+ <body class="body">
+
+ <p> </p>
+
+<div class="sm">
+
+ <!-- <div class="container">-->
+ <div class="span6">
+ <!--<div class="row">-->
+ <tiles:insertAttribute name="body"/>
+ <!--</div>-->
+
+
+ </div> <!-- /container -->
+
+
+
+</div>
+
+ <!-- Le javascript
+ ================================================== -->
+ <!-- Placed at the end of the document so the pages load faster -->
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-button.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-modal.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-tab.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-transition.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-alert.js" />"></script>
+
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-dropdown.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-scrollspy.js" />"></script>
+
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-tooltip.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-popover.js" />"></script>
+
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-collapse.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-carousel.js" />"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-typeahead.js" />"></script>
+
+
+
+
+ </body>
+
+ </html>
+
diff --git a/sm-shop/src/main/webapp/pages/admin/categories/categories.jsp b/sm-shop/src/main/webapp/pages/admin/categories/categories.jsp
new file mode 100644
index 0000000..e7f42c0
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/categories/categories.jsp
@@ -0,0 +1,59 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.categories.title" text="Categories" /></h3>
+ <br/>
+
+
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/categories/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/categories/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/categories/editCategory.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/categories/categories.html" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="categoryId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.categories.title" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/categories/categories-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/categories/categories-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/categories/categories-gridHeader.jsp
new file mode 100755
index 0000000..be64c85
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/categories/categories-gridHeader.jsp
@@ -0,0 +1,13 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"categoryId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name"},
+ {title:"<s:message code="label.entity.code" text="Code"/>", name:"code", canFiler:false},
+ {title:"<s:message code="label.entity.visible" text="Visible"/>", name:"visible", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/categories/category.jsp b/sm-shop/src/main/webapp/pages/admin/categories/category.jsp
new file mode 100644
index 0000000..3b9fd79
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/categories/category.jsp
@@ -0,0 +1,272 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+
+ <script type="text/javascript">
+
+
+
+ $(function(){
+ $('#order').numeric();
+ if($("#code").val()=="") {
+ $('.btn').addClass('disabled');
+ }
+ <c:forEach items="${category.descriptions}" var="description" varStatus="counter">
+ $("#name${counter.index}").friendurl({id : 'seUrl${counter.index}'});
+ </c:forEach>
+ });
+
+
+ function validateCode() {
+ $('#checkCodeStatus').html('<img src="<c:url value="/resources/img/ajax-loader.gif" />');
+ $('#checkCodeStatus').show();
+ var code = $("#code").val();
+ var id = $("#id").val();
+ checkCode(code,id,'<c:url value="/admin/categories/checkCategoryCode.html" />');
+ }
+
+ function callBackCheckCode(msg,code) {
+ console.log(code);
+ if(code==0) {
+ $('.btn').removeClass('disabled');
+ }
+ if(code==9999) {
+
+ $('#checkCodeStatus').html('<font color="green"><s:message code="message.code.available" text="This code is available"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').removeClass('disabled');
+ }
+ if(code==9998) {
+
+ $('#checkCodeStatus').html('<font color="red"><s:message code="message.code.exist" text="This code already exist"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').addClass('disabled');
+ }
+
+ }
+
+
+ </script>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <c:choose>
+ <c:when test="${category.id!=null && category.id>0}">
+ <s:message code="label.category.editcategory" text="Edit category" /> <c:out value="${category.code}"/>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.category.createcategory" text="Create category" />
+ </c:otherwise>
+ </c:choose>
+
+ </h3>
+ <br/>
+
+ <c:url var="categorySave" value="/admin/categories/save.html"/>
+
+
+ <form:form method="POST" commandName="category" action="${categorySave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.category.parentcategory" text="Category vsible"/></label>
+ <div class="controls">
+
+ <div class="controls">
+ <s:message code="label.category.root" text="Root" var="rootVar"/>
+ <form:select path="parent.id">
+ <form:option value="-1" label="${rootVar}" />
+ <form:options items="${categories}" itemValue="id" itemLabel="descriptions[0].name"/>
+ </form:select>
+ <span class="help-inline"><form:errors path="parent.id" cssClass="error" /></span>
+ </div>
+
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.entity.visible" text="Visible"/></label>
+ <div class="controls">
+ <form:checkbox path="visible" />
+
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.category.code" text="Category code"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="code" onblur="validateCode()"/>
+ <span class="help-inline"><div id="checkCodeStatus" style="display:none;"></div><form:errors path="code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <c:forEach items="${category.descriptions}" var="description" varStatus="counter">
+
+ <div class="control-group">
+ <label><s:message code="label.productedit.categoryname" text="Category name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" id="name${counter.index}" path="descriptions[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].name" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.category.highlight" text="Category highlight"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large" id="categoryHighlight${counter.index}" path="descriptions[${counter.index}].categoryHighlight"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].categoryHighlight" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.sefurl" text="SEF Url"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="highlight" id="seUrl${counter.index}" path="descriptions[${counter.index}].seUrl"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].seUrl" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.category.categorydescription" text="Category description"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+
+
+
+ <textarea cols="30" id="descriptions[${counter.index}].description" class="ckeditor" name="descriptions[${counter.index}].description">
+ <c:out value="${category.descriptions[counter.index].description}"/>
+ </textarea>
+
+
+ </div>
+
+ <script type="text/javascript">
+ //<![CDATA[
+
+ CKEDITOR.replace('descriptions[${counter.index}].description',
+ {
+ skin : 'office2003',
+ toolbar :
+ [
+ ['Source','-','Save','NewPage','Preview'],
+ ['Cut','Copy','Paste','PasteText','-','Print'],
+ ['Undo','Redo','-','Find','-','SelectAll','RemoveFormat'], '/',
+ ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
+ ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+ ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
+ ['Link','Unlink','Anchor'],
+ ['Image','Flash','Table','HorizontalRule','SpecialChar','PageBreak'], '/',
+ ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'],
+ ['Maximize', 'ShowBlocks']
+ ],
+
+ filebrowserWindowWidth : '720',
+ filebrowserWindowHeight : '740',
+ filebrowserImageBrowseUrl : '<c:url value="/admin/content/fileBrowser.html"/>'
+
+
+ });
+
+ //]]>
+ </script>
+
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.category.title" text="Metatag title"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input path="descriptions[${counter.index}].metatagTitle"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].metatagTitle" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.metatags.keywords" text="Metatag keywords"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input path="descriptions[${counter.index}].metatagKeywords"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].metatagKeywords" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.metatags.description" text="Metatag description"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input path="descriptions[${counter.index}].metatagDescription"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].metatagDescription" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <form:hidden path="descriptions[${counter.index}].language.code" />
+ <form:hidden path="descriptions[${counter.index}].id" />
+
+ </c:forEach>
+
+ <div class="control-group">
+ <label><s:message code="label.entity.order" text="Sort order"/></label>
+ <div class="controls">
+ <form:input id="order" cssClass="" path="sortOrder"/>
+ <span class="help-inline"><form:errors path="sortOrder" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <form:hidden path="id" />
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+
+
+ </div>
+
+ </div>
+
+ </form:form>
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/categories/hierarchy.jsp b/sm-shop/src/main/webapp/pages/admin/categories/hierarchy.jsp
new file mode 100644
index 0000000..05b039b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/categories/hierarchy.jsp
@@ -0,0 +1,172 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.categories.hierarchy.title" text="Category hierarchy" /></h3>
+ <br/>
+ <div class="well">
+ <s:message code="label.category.hierarchy.text" text="Drag categories to re-organize the hierarchy" />
+ </div>
+ <br/>
+
+ <script>
+
+
+
+///isc.showConsole();
+
+
+// User Interface
+// ---------------------------------------------------------------------
+
+
+
+ //iterate from category objects to display data
+ isc.TreeGrid.create({
+ ID:"categoryTree",
+ border:1,
+ showResizeBar: false,
+
+ data: isc.Tree.create({
+ modelType: "parent",
+ nameProperty: "Name",
+ idField: "categoryId",
+ parentIdField: "parentId",
+ data: [
+ {categoryId:"-1", parentId:"0", Name:"<s:message code="label.category.root" text="Root" />", isFolder: true},
+ <c:forEach items="${categories}" var="category" varStatus="status">
+ {categoryId:'<c:out value="${category.id}" />', parentId:'<c:choose><c:when test="${category.parent!=null}"><c:out value="${category.parent.id}" /></c:when><c:otherwise>-1</c:otherwise></c:choose>', Name:'<c:out value="${category.descriptions[0].name}" />', isFolder: true}
+ <c:if test="${status.count<fn:length(categories)}">,</c:if>
+ </c:forEach>
+ ]
+ }),
+
+
+ //nodeClick:"itemList.fetchData({categoryId:node.categoryId})",
+ showHeader:false,
+ leaveScrollbarGap:false,
+ animateFolders:true,
+ canReorderRecords: true,
+ canAcceptDroppedRecords: true,
+ canReparentNodes:true,
+ selectionType:"single",
+ animateRowsMaxTime:750,
+ folderDrop: function (dragRecords, dropFolder, index, sourceWidget) {
+ var record=categoryTree.getSelectedRecord();
+ var newUnit=dropFolder.SysId;
+ var newRecord=record;
+ newRecord.ReportsTo=newUnit;
+
+ //ajax call
+ $.ajax({
+ type: 'POST',
+ dataType: "json",
+ url: "<c:url value="/admin/categories/moveCategory.html" />",
+ data: "parentId="+ dropFolder.categoryId + "&childId=" + newRecord.categoryId,
+ success: function(response) {
+ var msg = isc.XMLTools.selectObjects(response, "/response/statusMessage");
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+
+
+ if(status==0 || status ==9999) {
+ categoryTree.removeData(record);
+ categoryTree.data.addList([newRecord],dropFolder, index);
+ } else {
+ if(msg!=null && msg !='') {
+ alert("! " + msg);
+ }
+ }
+
+ },
+ error: function(jqXHR,textStatus,errorThrown) {
+ alert(jqXHR + "-" + textStatus + "-" + errorThrown);
+
+ //alert(data.statusMessage);
+ }
+
+ });
+
+
+
+
+
+ //alert(index);
+ //alert(dropFolder.categoryId);
+ //alert(newRecord.categoryId);
+ }
+
+
+
+ });
+
+
+
+
+
+
+
+
+// Define application layout
+// ---------------------------------------------------------------------
+
+isc.HLayout.create({
+ ID:"pageLayout",
+ width: "680",
+ height: "600",
+ position:"relative",
+ members:[
+
+ isc.SectionStack.create({
+ ID:"mainLayout",
+ visibilityMode:"multiple",
+ animateSections:true,
+ sections:[
+ {title:"<s:message code="label.categories.hierarchy.title" text="Category hierarchy"/>", autoShow:true, items:[categoryTree]}
+ ]
+ })
+
+
+ ]
+});
+
+isc.Page.setEvent("load", "pageLayout.draw()");
+
+ </script>
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
diff --git a/sm-shop/src/main/webapp/pages/admin/components/fileBrowser.jsp b/sm-shop/src/main/webapp/pages/admin/components/fileBrowser.jsp
new file mode 100644
index 0000000..54444ff
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/components/fileBrowser.jsp
@@ -0,0 +1,39 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+
+
+<script language="javascript">
+ function selectImage(img) {//ckeditor function
+ //TODO URL, MERCHANT STORE
+ var image = '<c:url value="/static/${requestScope.ADMIN_STORE.code}/IMAGE/"/>' + img;
+ window.opener.CKEDITOR.tools.callFunction(2, image);
+ window.close();
+ }
+</script>
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.content.images" text="Images library" /></h3>
+ <br/>
+
+
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/content/images/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/content/contentImages.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/content/contentImages.html" var="refreshUrl" scope="request"/>
+ <c:set var="componentTitleKey" value="menu.content-images" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/images-list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
diff --git a/sm-shop/src/main/webapp/pages/admin/components/images-list.jsp b/sm-shop/src/main/webapp/pages/admin/components/images-list.jsp
new file mode 100755
index 0000000..5b1178e
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/components/images-list.jsp
@@ -0,0 +1,136 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+ <script>
+
+
+
+
+
+ isc.RestDataSource.create({
+ ID:"dataSource",
+ dataFormat:"json",
+ operationBindings:[
+ {operationType:"fetch", dataProtocol:"postParams",dataURL: "<c:url value="${pagingUrl}" />"},
+ {operationType:"remove", dataProtocol:"postParams",dataURL: "<c:url value="${removeUrl}" />"}
+ ],
+ transformResponse : function (dsResponse, dsRequest, jsonData) {
+ var status = isc.XMLTools.selectObjects(jsonData, "/response/status");
+ if (status != 0) {
+ //if(status==9999) {//operation completed
+ //reload
+ // window.location='<c:url value="${refreshUrl}" />';
+ //}
+ //var msg = isc.XMLTools.selectObjects(jsonData, "/response/statusMessage");
+ //alert("! " + msg);
+ }
+ }
+ });
+
+
+
+ isc.TileGrid.create({
+ ID:"imageList",
+ tileWidth:150,
+ tileHeight:200,
+ dataSource:"dataSource",
+ autoFetchData:true,
+ showAllRecords:true,
+ animateTileChange:true,
+ recordClick:"selectImage(record.name)",
+ fields: [
+ {name:"id", cellStyle: "name"},
+ {name:"picture", type:"image", imageWidth:150},
+ {name:"name", cellStyle: "name"}
+ ],
+
+ getTile : function (record) {
+ // override getTile() and add a "Remove" button
+ var canvas = this.Super("getTile", arguments);
+ canvas.addChild(this.getRemoveButton(this.getRecord(record)));
+ return canvas;
+ },
+
+ getRemoveButton : function (record) {
+ var removeButton = isc.ImgButton.create({
+ src: "<c:url value='/resources/img/admin/remove.png'/>",
+ showHover: true,
+ prompt: "<s:message code='label.generic.remove' text='Remove' />",
+ size: 15,
+ showFocused: false,
+ showRollOver: false,
+ snapTo: "TR",
+ showDown: false,
+ margin: 2,
+ tileGrid: this,
+ record: record,
+ click : function () {
+ if (confirm('<s:message code="label.entity.remove.confirm" text="Do you really want to remove this record ?" />')) {
+
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="${removeUrl}"/>',
+ data: 'id=' + record.id + '&name=' + record.name,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ //reload
+ window.location='<c:url value="${refreshUrl}" />';
+
+ } else {
+
+
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+
+
+
+ }
+ }
+ });
+
+ return removeButton;
+ }
+ });
+
+
+
+
+
+// Define application layout
+// ---------------------------------------------------------------------
+
+isc.HLayout.create({
+ ID:"pageLayout",
+ width: "700",
+ height: "600",
+ position:"relative",
+ members:[
+ isc.SectionStack.create({
+ ID:"mainLayout",
+ visibilityMode:"multiple",
+ animateSections:true,
+ sections:[
+ {title:"<s:message code="${componentTitleKey}" text="{componentTitleKey} UNDEFINED"/>", autoShow:true, items:[imageList]}
+ ]
+ })
+ ]
+});
+
+isc.Page.setEvent("load", "pageLayout.draw()");
+
+ </script>
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/components/list.jsp b/sm-shop/src/main/webapp/pages/admin/components/list.jsp
new file mode 100644
index 0000000..afc5dda
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/components/list.jsp
@@ -0,0 +1,146 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+ <script>
+
+
+
+
+
+ isc.RestDataSource.create({
+ ID:"dataSource",
+ dataFormat:"json",
+ operationBindings:[
+ {operationType:"fetch", dataProtocol:"postParams",dataURL: "<c:url value="${pagingUrl}" />"},
+ {operationType:"remove", dataProtocol:"postParams",dataURL: "<c:url value="${removeUrl}" />"},
+ {operationType:"update", dataProtocol:"postParams",dataURL: "<c:url value="${updateUrl}" />"},
+ ],
+ transformResponse : function (dsResponse, dsRequest, jsonData) {
+
+ var status = isc.XMLTools.selectObjects(jsonData, "/response/status");
+ //alert('check status ' + status);
+ if (status != 0) {
+ if(status==9999) {//operation completed
+ //reload
+ <c:if test="${afterRemoveUrl!=null}">
+ window.location='<c:url value="${afterRemoveUrl}" />';
+ </c:if>
+ <c:if test="${refreshUrl!=null}">
+ window.location='<c:url value="${refreshUrl}" />';
+ </c:if>
+ } else {
+
+ var msg = isc.XMLTools.selectObjects(jsonData, "/response/statusMessage");
+ alert("! " + msg);
+ }
+ }
+ }
+ });
+
+
+
+ isc.ListGrid.create({
+ ID: "entityList",
+ border:1,
+ dataSource: "dataSource",
+ showRecordComponents: true,
+ showRecordComponentsByCell: true,
+ canRemoveRecords: <c:out value="${canRemoveEntry}" />,
+ autoFetchData: true,
+ showFilterEditor: true,
+ filterOnKeypress: true,
+ dataFetchMode:"paged",
+ canEdit:<c:choose><c:when test="${canEdit!=null}"><c:out value="${canEdit}" /></c:when><c:otherwise>true</c:otherwise></c:choose>,
+ editByCell: true,
+ editEvent: "click",
+
+
+ fields:[
+ <jsp:include page="${gridHeader}"></jsp:include>
+ ],
+ selectionType: "multiple",
+ removeData: function () {
+ if (confirm('<s:message code="label.entity.remove.confirm" text="Do you really want to remove this record ?" />')) {
+ return this.Super("removeData", arguments);
+ }
+ },
+ fetchData: function () {
+ return this.Super("fetchData", arguments);
+ },
+
+ <c:if test="${expandDetails!=null && expandDetails!=''}">
+ canExpandRecords: true,
+ expansionMode: "detailField",
+ detailField: "<c:out value="${expandDetails}"/>",
+ </c:if>
+
+
+ <c:if test="${groupByEntity!=null && groupByEntity!=''}">
+ groupStartOpen:"all",
+ groupByField: '<c:out value="${groupByEntity}"/>',
+ </c:if>
+
+ createRecordComponent : function (record, colNum) {
+ var fieldName = this.getFieldName(colNum);
+ if (fieldName == "buttonField") {
+
+
+ var button = isc.IButton.create({
+ height: 18,
+ width: 65,
+ title: "<s:message code="label.entity.details" text="Details"/>",
+ click : function () {
+
+ var url = '<c:url value="${editUrl}" />';
+ var queryString = '?id=' + record["<c:out value="${entityId}" />"];
+ <c:if test="${appendQueryStringToEdit!=null && appendQueryStringToEdit!=''}">
+ queryString = queryString + '&<c:out value="${appendQueryStringToEdit}" />' ;
+ </c:if>
+ var locationUrl = url + queryString;
+ window.location= locationUrl;
+
+ }
+ });
+ return button;
+
+ }
+
+
+ }
+
+
+ });
+
+
+
+
+
+
+
+// Define application layout
+// ---------------------------------------------------------------------
+
+isc.HLayout.create({
+ ID:"pageLayout",
+ width: "700",
+ height: "600",
+ position:"relative",
+ members:[
+ isc.SectionStack.create({
+ ID:"mainLayout",
+ visibilityMode:"multiple",
+ animateSections:true,
+ sections:[
+ {title:"<s:message code="${componentTitleKey}" text="{componentTitleKey} UNDEFINED"/>", autoShow:true, items:[entityList]}
+ ]
+ })
+ ]
+});
+
+isc.Page.setEvent("load", "pageLayout.draw()");
+
+ </script>
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/components/product-container.jsp b/sm-shop/src/main/webapp/pages/admin/components/product-container.jsp
new file mode 100755
index 0000000..bbf1010
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/components/product-container.jsp
@@ -0,0 +1,206 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+<script>
+ //isc.showConsole();
+ //Always fetch products for a given category
+ isc.RestDataSource.create({
+ ID:"products",
+ dataFormat:"json",
+ dataURL: "<c:url value="/admin/products/paging.html" />",
+ operationBindings:[
+ {operationType:"fetch", dataProtocol:"postParams"}
+ ]
+ });
+
+ isc.RestDataSource.create({
+ ID:"container",
+ dataFormat:"json",
+ operationBindings:[
+ {operationType:"remove", dataProtocol:"postParams",dataURL: "<c:url value="${containerRemoveUrl}" />&removeEntity=<c:out value="${removeEntity}" />"},
+ {operationType:"fetch", dataProtocol:"postParams",dataURL: "<c:url value="${containerFetchUrl}" />"},
+ {operationType:"add", dataProtocol:"postParams",dataURL: "<c:url value="${containerAddUrl}" />"},
+ {operationType:"update", dataProtocol:"postParams",dataURL: "<c:url value="${containerUpdateUrl}" />"}
+ ],
+ transformResponse : function (dsResponse, dsRequest, jsonData) {
+ var status = isc.XMLTools.selectObjects(jsonData, "/response/status");
+ if (status != 0 && status !=9999) {
+ var msg = isc.XMLTools.selectObjects(jsonData, "/response/statusMessage");
+ alert("! " + msg);
+ //window.location='<c:url value="${reloadUrl}" />';
+ }
+ if(status == 9999) {
+ window.location='<c:url value="${reloadUrl}" />';
+ }
+ }
+ });
+
+
+ //iterate from category objects to display data
+ isc.TreeGrid.create({
+ ID:"categoryTree",
+ showResizeBar: false,
+ data: isc.Tree.create({
+ modelType: "parent",
+ nameProperty: "Name",
+ idField: "categoryId",
+ parentIdField: "parentId",
+ data: [
+ {categoryId:"-1", parentId:"0", Name:"<s:message code="label.category.root" text="Root" />", isFolder: true},
+ <c:forEach items="${categories}" var="category" varStatus="status">
+ {categoryId:'<c:out value="${category.id}" />', parentId:'<c:choose><c:when test="${category.parent!=null}"><c:out value="${category.parent.id}" /></c:when><c:otherwise>-1</c:otherwise></c:choose>', Name:'<c:out value="${category.descriptions[0].name}" />', isFolder: true}
+ <c:if test="${status.count<fn:length(categories)}">,</c:if>
+ </c:forEach>
+ ]
+ }),
+
+ nodeClick:"itemList.fetchData({categoryId:node.categoryId})",
+ showHeader:false,
+ leaveScrollbarGap:false,
+ animateFolders:true,
+ canAcceptDroppedRecords:false,
+ canReparentNodes:false,
+ selectionType:"single",
+ animateRowsMaxTime:750
+ });
+
+
+ isc.ListGrid.create({
+ ID: "itemList",
+ dataSource: "products",
+ showRecordComponents: true,
+ showRecordComponentsByCell: true,
+
+ autoFetchData: false,
+ showFilterEditor: true,
+ filterOnKeypress: true,
+ dataFetchMode:"paged",
+ canDragRecordsOut: true,
+ dragDataAction: "copy",
+ alternateRecordStyles: true,
+ fields:[
+ <jsp:include page="${gridHeader}"></jsp:include>
+ ],
+ selectionType: "single",
+ createRecordComponent : function (record, colNum) {
+ var fieldName = this.getFieldName(colNum);
+ if (fieldName == "buttonField") {
+ var button = isc.IButton.create({
+ height: 18,
+ width: 65,
+ title: "<s:message code="label.entity.details" text="Details"/>",
+ click : function () {
+ var url = '<c:url value="/admin/products/editProduct.html" />?id=' + record["productId"];
+ <c:if test="${appendQueryStringToEdit!=null && appendQueryStringToEdit!=''}">
+ url = url + '&<c:out value="${appendQueryStringToEdit}" />' ;
+ </c:if>
+ window.location=url;
+ }
+ });
+ }
+ return button;
+ }
+
+
+
+ });
+
+ isc.ListGrid.create({
+ ID: "containerList",
+ dataSource: "container",
+ canAcceptDroppedRecords: true,
+ canRemoveRecords: true,
+ canReorderRecords: false,
+ alternateRecordStyles: true,
+ autoFetchData: true,
+ preventDuplicates: true,
+ leaveScrollbarGap: false,
+ fields: [
+ <jsp:include page="${gridHeaderContainer}"></jsp:include>
+ ],
+ removeData: function () {
+ if (confirm('<s:message code="label.entity.remove.confirm" text="Do you really want to remove this record ?" />')) {
+ return this.Super("removeData", arguments);
+ }
+ }
+ //recordDrop: function (dropRecords, targetRecord, index, sourceWidget) {
+ //alert(dropRecords.length);
+ //alert(dropRecords.length);
+ //var rolesNotAddedMessage = '';
+ //for (i=0; i < dropRecords.length; i++) {
+ //if (selectedRoleList.data.find("roleId", dropRecords.get(i).roleId)) {
+ // rolesNotAddedMessage = rolesNotAddedMessage + "\'" + dropRecords.get(i).roleName + "\' is already in the list." + "<br>";
+ //}
+ //else {
+ // this.Super("recordDrop", newDropRecords, targetRecord, index, sourceWidget);
+ //}
+ //if (rolesNotAddedMessage != ''){
+ //alert(dropRecords[i].productId);
+
+ //isc.say(dropRecords.get(i).productId);
+ //}
+ //}
+
+ //this.Super("recordDrop", dropRecords, targetRecord, index, sourceWidget);
+
+ //}
+ });
+
+
+// Define application layout
+// ---------------------------------------------------------------------
+
+isc.HLayout.create({
+ ID:"pageLayout",
+ width: "700",
+ height: "600",
+ position:"relative",
+ members:[
+ isc.SectionStack.create({
+ ID:"leftSideLayout",
+ width:200,
+ showResizeBar:true,
+ visibilityMode:"multiple",
+ animateSections:true,
+ sections:[
+ {title:"<s:message code="label.categories.title" text="Categories" />", autoShow:true, items:[categoryTree]}
+ ]
+ }),
+ isc.SectionStack.create({
+ ID:"middleSideLayout",
+ width:280,
+ visibilityMode:"multiple",
+ animateSections:true,
+ sections:[
+ {title:"<s:message code="menu.catalogue-products" text="Products" />", autoShow:true, items:[itemList]}
+ ]
+ }),
+ isc.Img.create({src:"", width:10, height:32, layoutAlign:"center",
+ click:"itemList.transferSelectedData(containerList)"
+ }),
+ isc.SectionStack.create({
+ ID:"rightSideLayout",
+ width:205,
+ showResizeBar:false,
+ visibilityMode:"multiple",
+ animateSections:true,
+ sections:[
+ {title:"<s:message code="${componentTitleKey}" text="{componentTitleKey} UNDEFINED"/>", autoShow:true, items:[containerList]}
+ ]
+ }),
+ ]
+});
+
+
+
+isc.Page.setEvent("load", "pageLayout.draw()");
+
+
+
+
+
+</script>
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/configuration/accounts.jsp b/sm-shop/src/main/webapp/pages/admin/configuration/accounts.jsp
new file mode 100644
index 0000000..e67e493
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/configuration/accounts.jsp
@@ -0,0 +1,52 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="accounts-conf">
+ <div class="sm-ui-component">
+ <h3><s:message code="label.configuration.options" text="Configuration options" /></h3>
+ <br/>
+ <c:url var="saveAccountsConfiguration" value="/admin/configuration/saveConfiguration.html"/>
+ <form:form method="POST" modelAttribute="configuration" action="${saveAccountsConfiguration}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <c:forEach var="merchantConfig" items="${configuration.merchantConfigs}" varStatus="counter">
+
+
+ <div class="control-group">
+ <label><s:message code="label.configuration.${merchantConfig.key}" text="** Label for [label.configuration.${merchantConfig.key}] not found **" /> : </label>
+ <div class="controls">
+ <form:input path="merchantConfigs[${counter.index}].value" />
+ <form:hidden path="merchantConfigs[${counter.index}].key" />
+ <form:hidden path="merchantConfigs[${counter.index}].id" />
+ <span class="help-inline"><form:errors path="merchantConfigs[${counter.index}].key" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ </c:forEach>
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+
+ </form:form>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/configuration/cacheManagement.jsp b/sm-shop/src/main/webapp/pages/admin/configuration/cacheManagement.jsp
new file mode 100644
index 0000000..8c99689
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/configuration/cacheManagement.jsp
@@ -0,0 +1,106 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+ <script src="<c:url value="/resources/js/jquery.showLoading.min.js" />"></script>
+ <link href="<c:url value="/resources/css/showLoading.css" />" rel="stylesheet">
+
+<script>
+ $(function() {
+
+ $(".clear-cache").click(function() {
+ $(".alert-error").hide();
+ $(".alert-success").hide();
+ $('.tab-content').showLoading();
+ var cacheKey = $(this).attr('id');
+ clearCache(cacheKey);
+ return false;
+ });
+ });
+
+
+ function clearCache(cacheKey) {
+
+ var url = '<c:url value="/admin/cache/clear.html"/>';
+ if(cacheKey!=null) {
+ url = url + '?cacheKey=' + cacheKey;
+ }
+
+ $.ajax({
+ 'type': 'POST',
+ 'url': url,
+ 'contentType': 'application/json',
+ 'dataType': 'json',
+ 'success': function(result) {
+ $('.tab-content').hideLoading();
+ var response = result.response.status;
+ if (response==9999) {
+ $(".alert-success").show();
+ window.location='<c:url value="/admin/cache/cacheManagement.html" />';
+ } else {
+ $(".alert-error").show();
+ }
+ }
+ });
+ }
+
+ $(function() {
+
+ $(".clear-all-cache").click(function() {
+ $(".alert-error").hide();
+ $(".alert-success").hide();
+ $('.tab-content').showLoading();
+ clearCache(null);
+ return false;
+ });
+ });
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="admin-cache">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="menu.cache" text="Cache management" /></h3>
+ <br/>
+
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <div id="store.error" class="alert alert-error" style="display:none;"><s:message code="message.error" text="An error occured"/></div>
+ <table class="table table-hover">
+ <c:forEach items="${keys}" var="key">
+ <tr>
+ <td><label>${key}</label></td>
+ <td>
+ <form class="form-inline">
+ <button id="${key}" type="submit" class="btn clear-cache"><s:message code="button.label.clear" text="Clear" /></button>
+ <br/>
+ </form>
+ </td>
+ </tr>
+ </c:forEach>
+ <tr>
+ <td><s:message code="button.label.clear.all" text="Clear all"/></td>
+ <td><button type="submit" class="btn clear-all-cache"><s:message code="button.label.clear" text="Clear" /></button></td>
+ </tr>
+ </table>
+
+ </div>
+
+
+ </div>
+
+ </div>
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/configuration/email.jsp b/sm-shop/src/main/webapp/pages/admin/configuration/email.jsp
new file mode 100644
index 0000000..8978cb2
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/configuration/email.jsp
@@ -0,0 +1,117 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="accounts-conf">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.emailconfig.options" text="Email Configuration Options" /></h3>
+ <br/>
+
+
+ <c:url var="saveEmailConfiguration" value="/admin/configuration/saveEmailConfiguration.html"/>
+ <form:form method="POST" commandName="configuration" action="${saveEmailConfiguration}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.emailconfig.protocol" text="Protocol"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="protocol" />
+ </div>
+ <span class="help-inline"><form:errors path="protocol" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.emailconfig.host" text="Host"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="host" />
+ </div>
+ <span class="help-inline"><form:errors path="host" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.emailconfig.port" text="Port"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="port" />
+ </div>
+ <span class="help-inline"><form:errors path="port" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.emailconfig.username" text="Username"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="username" />
+ </div>
+ <span class="help-inline"><form:errors path="username" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.emailconfig.password" text="Password"/></label>
+ <div class="controls">
+ <form:password cssClass="input-large" path="password" />
+ </div>
+ <span class="help-inline"><form:errors path="password" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.emailconfig.smtpauth" text="SmtpAuth"/></label>
+ <div class="controls">
+ <form:checkbox cssClass="input-large" path="smtpAuth" />
+ </div>
+ <span class="help-inline"><s:message code="label.emailconfig.requiresauthentication" text="Email server requires authentication (should be set to true)"/></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.emailconfig.starttls" text="Starttls"/></label>
+ <div class="controls">
+ <form:checkbox cssClass="input-large" path="starttls" />
+ </div>
+ <span class="help-inline"><s:message code="label.emailconfig.requiresstarttls" text="Email server requires STARTLS encryption (should be false, check server configurations)"/></span>
+ </div>
+
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+
+ </form:form>
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/configuration/system.jsp b/sm-shop/src/main/webapp/pages/admin/configuration/system.jsp
new file mode 100644
index 0000000..52168e3
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/configuration/system.jsp
@@ -0,0 +1,94 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="admin-cache">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="menu.system-configurations" text="System configurations" /></h3>
+ <br/>
+
+ <c:url var="saveSystemConfiguration" value="/admin/configuration/saveSystemConfiguration.html"/>
+ <form:form method="POST" commandName="configuration" action="${saveSystemConfiguration}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.displaycustomersection" text="Display customer section" /></label>
+ <div class="controls">
+ <form:checkbox path="displayCustomerSection" />
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.store.displaycontactussection" text="Display contact us page" /></label>
+ <div class="controls">
+ <form:checkbox path="displayContactUs" />
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.store.displaystoreaddress" text="Display store address" /></label>
+ <div class="controls">
+ <form:checkbox path="displayStoreAddress" />
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+ <c:forEach items="${store.languages}" var="language">
+
+ <div class="control-group">
+ <label><s:message code="label.configuration.useglobalsearch_suggestions" text="Use global pre-defined search suggestions" /> (${language.code})</label>
+ <div class="controls">
+ <form:checkbox path="useDefaultSearchConfig['${language.code}']" value="on"/>
+ <br/>
+ <s:message code="label.configuration.globalsearch_suggestions_path" text="Global pre-defined search suggestions file path" /> (${language.code})<br/>
+ <form:input cssClass="input-large" path="defaultSearchConfigPath['${language.code}']" />
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+ </c:forEach>
+
+ <div class="control-group">
+ <label><s:message code="label.store.displayaddtocartfeatured" text="Allow add to cart on featured items" /></label>
+ <div class="controls">
+ <form:checkbox path="displayAddToCartOnFeaturedItems" />
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+
+ </form:form>
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/content/contentFiles.jsp b/sm-shop/src/main/webapp/pages/admin/content/contentFiles.jsp
new file mode 100644
index 0000000..694bae3
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/content/contentFiles.jsp
@@ -0,0 +1,67 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+<div class="tabbable">
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="catalogue-section">
+ <div class="sm-ui-component">
+ <h3>
+ <s:message code="label.content.files" text="Files library" />
+ </h3>
+
+
+ <!-- Add content files -->
+ <c:url var="saveContentFiles" value="/admin/content/static/saveFiles.html" />
+ <form:form method="POST" enctype="multipart/form-data" commandName="contentFiles" action="${saveContentFiles}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.success" text="Request successfull" />
+ </div>
+
+ <div class="control-group" style="margin-top:15px;">
+ <div class="controls">
+ <input class="input-file" id="file" name="file" type="file" multiple="multiple">
+ <!-- <input class="input-file" id="image1" name="image[1]" type="file"><br />
+ <input class="input-file" id="image2" name="image[2]" type="file"><br />
+ <input class="input-file" id="image3" name="image[3]" type="file"><br /> -->
+ </div>
+ </div>
+
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.upload.files" text="Upload files"/></button>
+
+
+ </div>
+
+ </div>
+
+
+ </form:form>
+
+
+
+ <br />
+ <!-- Listing grid include -->
+ <c:set value="/admin/content/static/page.html" var="pagingUrl" scope="request" />
+ <c:set value="/admin/content/static/removeFile.html" var="removeUrl" scope="request" />
+ <c:set value="/admin/content/static/contentFiles.html" var="refreshUrl" scope="request" />
+ <c:set var="componentTitleKey" value="menu.content-files" scope="request" />
+ <c:set var="canRemoveEntry" value="true" scope="request" />
+ <c:set var="canEdit" value="false" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/content/contentFiles-gridHeader.jsp" scope="request"/>
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/content/contentFiles-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/content/contentFiles-gridHeader.jsp
new file mode 100644
index 0000000..196f906
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/content/contentFiles-gridHeader.jsp
@@ -0,0 +1,14 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:true},
+ {title:"<s:message code="label.generic.url" text="URL"/>", name:"path", type: "link", canFilter:true},
+ {title:"<s:message code="label.entity.type" text="Type"/>", name:"mimeType", canFilter:false},
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/content/content-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/content/content-gridHeader.jsp
new file mode 100644
index 0000000..1f5dd19
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/content/content-gridHeader.jsp
@@ -0,0 +1,14 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"id", canFilter:false},
+ {title:"<s:message code="label.entity.code" text="Code"/>", name:"code", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/content/contentImages.jsp b/sm-shop/src/main/webapp/pages/admin/content/contentImages.jsp
new file mode 100644
index 0000000..68dbd0a
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/content/contentImages.jsp
@@ -0,0 +1,65 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+<div class="tabbable">
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="catalogue-section">
+ <div class="sm-ui-component">
+ <h3>
+ <s:message code="label.content.images" text="Images library" />
+ </h3>
+
+
+ <!-- Add content images -->
+ <c:url var="saveContentImages" value="/admin/content/saveContentImages.html" />
+ <form:form method="POST" enctype="multipart/form-data" commandName="contentFiles" action="${saveContentImages}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.success" text="Request successfull" />
+ </div>
+
+ <div class="control-group" style="margin-top:15px;">
+ <div class="controls">
+ <input class="input-file" id="file" name="file" type="file" multiple="multiple">
+ <!-- <input class="input-file" id="image1" name="image[1]" type="file"><br />
+ <input class="input-file" id="image2" name="image[2]" type="file"><br />
+ <input class="input-file" id="image3" name="image[3]" type="file"><br /> -->
+ </div>
+ </div>
+
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.upload.images" text="Upload Images"/></button>
+
+
+ </div>
+
+ </div>
+
+
+ </form:form>
+
+
+
+ <br />
+ <!-- Listing grid include -->
+ <c:set value="/admin/content/images/paging.html" var="pagingUrl" scope="request" />
+ <c:set value="/admin/content/removeImage.html" var="removeUrl" scope="request" />
+ <c:set value="/admin/content/contentImages.html" var="refreshUrl" scope="request" />
+ <c:set var="componentTitleKey" value="menu.content-images" scope="request" />
+ <c:set var="canRemoveEntry" value="true" scope="request" />
+ <jsp:include page="/pages/admin/components/images-list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/content/contentPages.jsp b/sm-shop/src/main/webapp/pages/admin/content/contentPages.jsp
new file mode 100644
index 0000000..a77ab1e
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/content/contentPages.jsp
@@ -0,0 +1,63 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+<div class="tabbable">
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="catalogue-section">
+ <div class="sm-ui-component">
+
+ <h3>
+ <c:choose>
+ <c:when test="${boxes==true}">
+ <s:message code="label.content.boxes" text="Content boxes" />
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.content.pages" text="Content pages" />
+ </c:otherwise>
+ </c:choose>
+ </h3>
+
+
+
+
+
+
+
+ <br />
+
+ <c:choose>
+ <c:when test="${boxes==true}">
+
+ <c:set value="/admin/content/page.html?contentType=BOX" var="pagingUrl" scope="request" />
+ <c:set value="/admin/content/remove.html" var="removeUrl" scope="request" />
+ <c:set value="/admin/content/boxes/list.html" var="refreshUrl" scope="request" />
+ <c:set value="/admin/content/boxes/details.html" var="editUrl" scope="request"/>
+ <c:set var="componentTitleKey" value="label.content.boxes" scope="request" />
+ </c:when>
+ <c:otherwise>
+ <c:set value="/admin/content/page.html?contentType=PAGE" var="pagingUrl" scope="request" />
+ <c:set value="/admin/content/remove.html" var="removeUrl" scope="request" />
+ <c:set value="/admin/content/pages/list.html" var="refreshUrl" scope="request" />
+ <c:set value="/admin/content/pages/details.html" var="editUrl" scope="request"/>
+ <c:set var="componentTitleKey" value="label.content.pages" scope="request" />
+ </c:otherwise>
+
+ </c:choose>
+
+ <!-- Listing grid include -->
+
+ <c:set var="entityId" value="id" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request" />
+ <c:set var="gridHeader" value="/pages/admin/content/content-gridHeader.jsp" scope="request"/>
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/content/contentPagesDetails.jsp b/sm-shop/src/main/webapp/pages/admin/content/contentPagesDetails.jsp
new file mode 100644
index 0000000..356c4d3
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/content/contentPagesDetails.jsp
@@ -0,0 +1,265 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+
+ <script type="text/javascript">
+
+ $(function(){
+ $('#order').numeric();
+ if($("#code").val()=="") {
+ $('.btn').addClass('disabled');
+ }
+ <c:forEach items="${content.descriptions}" var="description" varStatus="counter">
+ $("#name${counter.index}").friendurl({id : 'seUrl${counter.index}'});
+ </c:forEach>
+ });
+
+
+ function validateCode() {
+ $('#checkCodeStatus').html('<img src="<c:url value="/resources/img/ajax-loader.gif" />');
+ $('#checkCodeStatus').show();
+ var code = $("#code").val();
+ var id = $("#id").val();
+ checkCode(code,id,'<c:url value="/admin/content/checkContentCode.html" />');
+ }
+
+ function callBackCheckCode(msg,code) {
+
+ if(code==0) {
+ $('.btn').removeClass('disabled');
+ }
+ if(code==9999) {
+
+ $('#checkCodeStatus').html('<font color="green"><s:message code="message.code.available" text="This code is available"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').removeClass('disabled');
+ }
+ if(code==9998) {
+
+ $('#checkCodeStatus').html('<font color="red"><s:message code="message.code.exist" text="This code already exist"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').addClass('disabled');
+ }
+
+ }
+
+
+ </script>
+
+<%@ page session="false" %>
+<div class="tabbable">
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="catalogue-section">
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <c:choose>
+ <c:when test="${content.id!=null && content.id>0}">
+ <s:message code="label.content.manage.content" text="Manage content" /> <c:out value="${content.code}"/>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.content.manage.content" text="Manage content" />
+ </c:otherwise>
+ </c:choose>
+
+ </h3>
+
+
+ <!-- Add content page / box -->
+
+ <c:choose>
+ <c:when test="${boxes!=null}">
+ <c:url var="saveContent" value="/admin/content/boxes/save.html" />
+ </c:when>
+ <c:otherwise>
+ <c:url var="saveContent" value="/admin/content/pages/save.html" />
+ </c:otherwise>
+ </c:choose>
+
+
+ <form:form method="POST" enctype="multipart/form-data" commandName="content" action="${saveContent}">
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.success" text="Request successfull" />
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.entity.visible" text="Visible"/></label>
+ <div class="controls">
+ <form:checkbox path="visible" />
+
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.entity.code" text="Code"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="code" onblur="validateCode()"/>
+ <span class="help-inline"><div id="checkCodeStatus" style="display:none;"></div><form:errors path="code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.entity.order" text="Sort order"/></label>
+ <div class="controls">
+ <form:input id="order" cssClass="" path="sortOrder"/>
+ <span class="help-inline"><form:errors path="sortOrder" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <c:if test="${positions!=null}">
+ <div class="control-group">
+ <label><s:message code="label.content.boxes.position" text="Box position"/></label>
+ <div class="controls">
+
+ <form:select cssClass="list" path="contentPosition">
+ <form:options items="${boxPositions}" itemValue="value" itemLabel="key" />
+ </form:select>
+ <span class="help-inline"><form:errors path="contentPosition" cssClass="error" /></span>
+ </div>
+ </div>
+ </c:if>
+
+
+
+ <c:forEach items="${content.descriptions}" var="description" varStatus="counter">
+
+ <div class="control-group">
+
+ <c:choose>
+ <c:when test="${boxes!=null}">
+ <label><s:message code="label.content.boxes.name" text="Box name"/> (<c:out value="${description.language.code}"/>)</label>
+ </c:when>
+ <c:otherwise>
+ <label><s:message code="label.content.pages.page.name" text="Page name"/> (<c:out value="${description.language.code}"/>)</label>
+ </c:otherwise>
+ </c:choose>
+
+ <div class="controls">
+ <form:input cssClass="input-large highlight" id="name${counter.index}" path="descriptions[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].name" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+ <c:if test="${boxes==null}">
+ <div class="control-group">
+ <label><s:message code="label.sefurl" text="SEF Url"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input id="seUrl${counter.index}" path="descriptions[${counter.index}].seUrl"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].seUrl" cssClass="error" /></span>
+ </div>
+
+ </div>
+ </c:if>
+
+ <div class="control-group">
+ <label><s:message code="label.content.pages.page.content" text="Page content"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+
+
+
+ <textarea cols="30" id="descriptions[${counter.index}].description" class="ckeditor" name="descriptions[${counter.index}].description">
+ <c:out value="${content.descriptions[counter.index].description}"/>
+ </textarea>
+
+
+ </div>
+
+ <script type="text/javascript">
+ //<![CDATA[
+
+ CKEDITOR.replace('descriptions[${counter.index}].description',
+ {
+ skin : 'office2003',
+ toolbar :
+ [
+ ['Source','-','Save','NewPage','Preview'],
+ ['Cut','Copy','Paste','PasteText','-','Print'],
+ ['Undo','Redo','-','Find','-','SelectAll','RemoveFormat'], '/',
+ ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
+ ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+ ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
+ ['Link','Unlink','Anchor'],
+ ['Image','Flash','Table','HorizontalRule','SpecialChar','PageBreak'], '/',
+ ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'],
+ ['Maximize', 'ShowBlocks']
+ ],
+
+ filebrowserWindowWidth : '720',
+ filebrowserWindowHeight : '740',
+ filebrowserImageBrowseUrl : '<c:url value="/admin/content/fileBrowser.html"/>'
+
+
+ });
+
+ //]]>
+ </script>
+
+ </div>
+
+ <c:if test="${boxes==null}">
+ <div class="control-group">
+ <label><s:message code="label.generic.title" text="Metatag title"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input path="descriptions[${counter.index}].metatagTitle"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].metatagTitle" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.generic.keywords" text="Keywords"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input path="descriptions[${counter.index}].metatagKeywords"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].metatagKeywords" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.content.metatag.description" text="Metatag description"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input path="descriptions[${counter.index}].metatagDescription"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].metatagDescription" cssClass="error" /></span>
+ </div>
+ </div>
+ </c:if>
+
+ <form:hidden path="descriptions[${counter.index}].language.code" />
+ <form:hidden path="descriptions[${counter.index}].id" />
+
+ </c:forEach>
+
+ <form:hidden path="id" />
+
+
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+
+
+ </div>
+
+ </div>
+
+
+ </form:form>
+
+
+
+
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/customer.jsp b/sm-shop/src/main/webapp/pages/admin/customers/customer.jsp
new file mode 100644
index 0000000..b173449
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/customer.jsp
@@ -0,0 +1,622 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+<script src="<c:url value="/resources/js/bootstrap/bootstrap-datepicker.js" />"></script>
+
+
+<script>
+
+
+
+
+$(document).ready(function() {
+
+
+ $('.textAttribute').alphanumeric({ichars:'&=?'});
+
+ $('#attributes').on('submit',function (event) {
+ $('#attributesBox').showLoading();
+ $("#attributesError").hide();
+ $("#attributesSuccess").hide();
+ var data = $('#attributes').serialize();
+
+ $.ajax({
+ url: '<c:url value="/admin/customers/attributes/save.html"/>',
+ cache: false,
+ type: 'POST',
+ data : data,
+ success: function(result) {
+ $('#attributesBox').hideLoading();
+ var response = result.response;
+ if (response.status==0) {
+ $("#attributesSuccess").show();
+ } else {
+ $("#attributesError").html(response.message);
+ $("#attributesError").show();
+ }
+ },
+ error: function(jqXHR,textStatus,errorThrown) {
+ $('#attributesBox').hideLoading();
+ alert('Error ' + jqXHR + "-" + textStatus + "-" + errorThrown);
+ }
+ });
+
+ event.preventDefault();
+ });
+
+
+
+ if($("#code").val()=="") {
+ $('.btn').addClass('disabled');
+ }
+
+
+
+ <c:if test="${customer.delivery.state!=null && customer.delivery.state!=''}">
+ $('.delivery-zone-list').hide();
+ $('#delstateOther').show();
+ $("input[name='showDeliveryStateList']").val('no');
+ $('#delstateOther').val('<c:out value="${customer.delivery.state}"/>');
+ </c:if>
+ <c:if test="${customer.delivery.state==null || customer.delivery.state==''}">
+ $('.delivery-zone-list').show();
+ $('#delstateOther').hide();
+ $("input[name='showDeliveryStateList']").val('yes');
+ getDeliveryZones('<c:out value="${customer.delivery.country.isoCode}" />');
+ </c:if>
+
+ <c:if test="${customer.billing.state!=null && customer.billing.state!=''}">
+ $('.billing-zone-list').hide();
+ $('#bilstateOther').show();
+ $("input[name='showBillingStateList']").val('no');
+ $('#bilstateOther').val('<c:out value="${customer.billing.state}"/>');
+ </c:if>
+
+ <c:if test="${customer.billing.state==null || customer.billing.state==''}">
+ $('.billing.zone-list').show();
+ $('#bilstateOther').hide();
+ $("input[name='showBillingStateList']").val('yes');
+ getBillingZones('<c:out value="${customer.billing.country.isoCode}" />');
+ </c:if>
+
+
+
+ $(".country-list").change(function() {
+ getZones($(this).val());
+ })
+
+ $(".billing-country-list").change(function() {
+ getBillingZones($(this).val());
+ })
+
+ $(".delivery-country-list").change(function() {
+ getDeliveryZones($(this).val());
+ })
+
+
+ //reset password link
+ $('a[href="#resetPassword"]').click(function(){
+
+ var customerId = this.id;
+
+ $('#confirmModal').modal();
+
+ });
+
+});
+
+$.fn.addItems = function(data) {
+ $(".zone-list > option").remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ var option = new Option(itemData.name, itemData.code);
+ list.add(option);
+ });
+ });
+};
+
+function getZones(countryCode){
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/reference/provinces.html"/>',
+ data: 'countryCode=' + countryCode,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ var data = isc.XMLTools.selectObjects(response, "/response/data");
+ if(data && data.length>0) {
+ $("input[name='showCustomerStateList']").val('yes');
+ $('.zone-list').show();
+ $('#stateOther').hide();
+ $(".zone-list").addItems(data);
+ } else {
+ $("input[name='showCustomerStateList']").val('no');
+ $('.zone-list').hide();
+ $('#stateOther').show();
+ <c:if test="${stateOther!=null}">
+ $('#stateOther').val('<c:out value="${customer.state}"/>');
+ </c:if>
+ }
+ } else {
+ $('.zone-list').hide();
+ $('#stateOther').show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+}
+
+$.fn.addDeliveryItems = function(data) {
+ $(".delivery-zone-list > option").remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ var option = new Option(itemData.name, itemData.code);
+ list.add(option);
+ });
+ });
+};
+
+function getDeliveryZones(countryCode){
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/reference/provinces.html"/>',
+ data: 'countryCode=' + countryCode,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ var data = isc.XMLTools.selectObjects(response, "/response/data");
+ if(data && data.length>0) {
+ $("input[name='showDeliveryStateList']").val('yes');
+ $('.delivery-zone-list').show();
+ $('#delstateOther').hide();
+ $(".delivery-zone-list").addDeliveryItems(data);
+ <c:if test="${customer.delivery.zone!=null}">
+ $('.delivery-zone-list').val('<c:out value="${customer.delivery.zone.code}"/>');
+ </c:if>
+ } else {
+ $("input[name='showDeliveryStateList']").val('no');
+ $('.delivery-zone-list').hide();
+ $('#delstateOther').show();
+ <c:if test="${delstateOther!=null}">
+ $('#delstateOther').val('<c:out value="${customer.delivery.state}"/>');
+ </c:if>
+ }
+ } else {
+ $('.delivery-zone-list').hide();
+ $('#delstateOther').show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+ });
+}
+
+$.fn.addBillingItems = function(data) {
+ $(".billing-zone-list > option").remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ var option = new Option(itemData.name, itemData.code);
+ list.add(option);
+ });
+ });
+};
+
+function getBillingZones(countryCode){
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/reference/provinces.html"/>',
+ data: 'countryCode=' + countryCode,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ var data = isc.XMLTools.selectObjects(response, "/response/data");
+ if(data && data.length>0) {
+ $("input[name='showBillingStateList']").val('yes');
+ $('.billing-zone-list').show();
+ $('#bilstateOther').hide();
+ $(".billing-zone-list").addBillingItems(data);
+ <c:if test="${customer.billing.zone!=null}">
+ $('.billing-zone-list').val('<c:out value="${customer.billing.zone.code}"/>');
+ </c:if>
+ } else {
+ $("input[name='showBillingStateList']").val('no');
+ $('.billing-zone-list').hide();
+ $('#bilstateOther').show();
+ <c:if test="${bilstateOther!=null}">
+ $('#bilstateOther').val('<c:out value="${customer.billing.state}"/>');
+ </c:if>
+ }
+ } else {
+ $('.billing-zone-list').hide();
+ $('#bilstateOther').show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+}
+
+
+function resetCustomerPassword(customerId){
+ $('#customerError').hide();
+ $('#customerSuccess').hide();
+ $('#confirmationInnerBox').showLoading({
+ 'indicatorZIndex' : 1000001,
+ 'overlayZIndex': 1000000
+ })
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/customers/resetPassword.html"/>',
+ data: 'customerId=' + customerId,
+ dataType: 'json',
+ success: function(response){
+ $('#confirmationInnerBox').hideLoading();
+ $('#confirmModal').modal('hide');
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ $('#customerSuccess').html('<s:message code="message.password.reset" text="Password has been reset" />');
+ $('#customerSuccess').show();
+
+ } else {
+ $('#customerError').html('<s:message code="message.error" text="An error occured" />');
+ $('#customerError').show();
+ }
+
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ //alert('error ' + errorThrown);
+ $('#confirmationInnerBox').hideLoading();
+ $('#confirmModal').modal('hide');
+ $('#customerError').html('<s:message code="message.error" text="An error occured" />');
+ $('#customerError').show();
+ }
+
+ });
+}
+
+
+</script>
+
+
+<div id="tabbable" class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <h3>
+
+
+
+
+
+ <c:choose>
+ <c:when test="${customer.id!=null && customer.id>0}">
+ <s:message code="label.customer.editcustomer" text="Edit Customer" /> <c:out value="${category.code}"/>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.customer.createcustomer" text="Create Customer" />
+ </c:otherwise>
+ </c:choose>
+
+ </h3>
+ <br/>
+
+ <c:if test="${customer.id!=null && customer.id>0}">
+ <div class="btn-group" style="z-index:400000;">
+ <button class="btn btn-info dropdown-toggle" data-toggle="dropdown"><s:message code="label.generic.moreoptions" text="More options"/> ... <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a id="${customer.id}" href="#resetPassword"><s:message code="button.label.resetpassword" text="Reset Password" /></a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ <br/>
+ </c:if>
+
+ <c:set var="customerAttr" value="${customer}"/>
+
+
+ <c:url var="saveCustomer" value="/admin/customers/save.html"/>
+
+
+ <form:form method="POST" commandName="customer" action="${saveCustomer}">
+
+ <form:errors id="customer.error" path="*" cssClass="alert alert-error" element="div" />
+ <div id="customerError" class="alert alert-error" style="display:none;"></div>
+ <div id="customerSuccess" class="alert alert-success"
+ style="<c:choose>
+ <c:when test="${success!=null}">display:block;</c:when>
+ <c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.success" text="Request successful"/>
+ </div>
+
+ <form:hidden id="customerId" path="id" />
+ <form:hidden path="merchantStore.id" />
+ <form:hidden path="showCustomerStateList" />
+ <form:hidden path="showBillingStateList" />
+ <form:hidden path="showDeliveryStateList" />
+
+
+ <h3><s:message code="label.customer.billinginformation" text="Billing information"/></h3>
+ <div class="control-group">
+ <label><s:message code="label.customer.firstname" text="First Name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" maxlength="64" path="billing.firstName"/>
+ <span class="help-inline"><form:errors path="billing.FirstName" cssClass="error" /></span>
+ </div>
+ </div>
+ <div class="control-group">
+ <label><s:message code="label.customer.lastname" text="Last Name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" maxlength="64" path="billing.lastName"/>
+ <span class="help-inline"><form:errors path="billing.lastName" cssClass="error" /></span>
+ </div>
+ </div>
+ <div class="control-group">
+ <label><s:message code="label.generic.username" text="User Name"/></label>
+ <div class="controls">
+ <span class="input-large uneditable-input">${customer.nick}</span><form:hidden path="nick" />
+ </div>
+ </div>
+
+
+ <address>
+
+ <div class="controls">
+ <label><s:message code="label.customer.billing.company" text="Company"/></label>
+ <form:input cssClass="input-large" maxlength="100" path="billing.company"/>
+ </div>
+
+ <div class="controls">
+ <label><s:message code="label.customer.billing.streetaddress" text="Street Address"/></label>
+ <form:input cssClass="input-large highlight" maxlength="256" path="billing.address"/>
+ </div>
+ <div class="controls">
+ <label><s:message code="label.customer.billing.city" text="City"/></label>
+ <form:input cssClass="input-large highlight" maxlength="100" path="billing.city"/>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.billing.country" text="Country"/></label>
+ <div class="controls">
+ <form:select cssClass="billing-country-list" path="billing.country.isoCode">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ <span class="help-inline"><form:errors path="billing.country.isoCode" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.billing.zone" text="State / Province"/></label>
+ <div class="controls">
+ <form:select cssClass="billing-zone-list" path="billing.zone.code"/>
+ <form:input class="input-large highlight" id="bilstateOther" maxlength="100" name="bilstateOther" path="billing.state" />
+ <span class="help-inline"><form:errors path="billing.zone.code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="controls">
+ <label><s:message code="label.customer.billing.postalcode" text="Postal code"/></label>
+ <form:input id="billingPostalCode" cssClass="input-large highlight" maxlength="20" path="billing.postalCode"/>
+ <span class="help-inline"><form:errors path="billing.postalCode" cssClass="error" /></span>
+ </div>
+
+ </address>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.email" text="Email"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" maxlength="96" path="emailAddress" />
+ <span class="help-inline"><form:errors path="emailAddress" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.telephone" text="Phone"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" maxlength="32" path="billing.telephone" />
+ <span class="help-inline"><form:errors path="billing.telephone" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.defaultlanguage" text="Default language"/></label>
+ <div class="controls">
+
+ <form:select class="input-large" items="${languages}" itemValue="id" itemLabel="code" path="defaultLanguage.id"/>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+
+ <h3><s:message code="label.customer.shippinginformation" text="Shipping information"/></h3>
+ <address>
+ <div class="controls">
+ <label><s:message code="label.customer.shipping.company" text="Company"/></label>
+ <form:input cssClass="input-large" maxlength="100" path="delivery.company"/>
+ </div>
+ <div class="controls">
+ <label><s:message code="label.customer.shipping.firstName" text="First name"/></label>
+ <form:input cssClass="input-large" maxlength="64" path="delivery.firstName"/>
+ </div>
+ <div class="controls">
+ <label><s:message code="label.customer.shipping.lastName" text="Last name"/></label>
+ <form:input cssClass="input-large" maxlength="64" path="delivery.lastName"/>
+ </div>
+ <div class="controls">
+ <label><s:message code="label.customer.shipping.streetaddress" text="Street Address"/></label>
+ <form:input cssClass="input-large" maxlength="256" path="delivery.address"/>
+ </div>
+ <div class="controls">
+ <label><s:message code="label.customer.shipping.city" text="City"/></label>
+ <form:input cssClass="input-large" maxlength="100" path="delivery.city"/>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.country" text="Country"/></label>
+ <div class="controls">
+ <form:select cssClass="delivery-country-list" path="delivery.country.isoCode">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ <span class="help-inline"><form:errors path="delivery.country.isoCode" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.zone" text="State / Province"/></label>
+ <div class="controls">
+ <form:select cssClass="delivery-zone-list" path="delivery.zone.code"/>
+ <form:input class="input-large" id="delstateOther" maxlength="100" name="delstateOther" path="delivery.state" />
+ <span class="help-inline"><form:errors path="delivery.zone.code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="controls">
+ <label><s:message code="label.customer.shipping.postalcode" text="Postal code"/></label>
+ <form:input id="deliveryPostalCode" cssClass="input-large" maxlength="20" path="delivery.postalCode"/>
+ <span class="help-inline"><form:errors path="delivery.postalCode" cssClass="error" /></span>
+ </div>
+ </address>
+
+ <!--</div>-->
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.save" text="Save"/></button>
+ </div>
+ </div>
+
+
+
+ </form:form>
+
+ <c:if test="${customerAttr.id!=null && customerAttr.id>0}">
+
+
+ <!-- properties -->
+ <!-- @ModelAttribute("optionList") List<Option> options -->
+
+ <c:if test="${options!=null && fn:length(options)>0}">
+
+ <div id="attributesSuccess" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <div id="attributesError" class="alert alert-error" style="display:none;"><s:message code="message.error" text="An error occured"/></div>
+ <div id="attributesBox" class="box">
+ <span class="box-title">
+ <p><s:message code="label.customer.attributes" text="Customer attributes" /></p>
+ </span>
+
+
+
+ <form id="attributes">
+ <input id="customer" type="hidden" value="<c:out value="${customerAttr.id}"/>" name="customer">
+ <c:forEach items="${options}" var="option" varStatus="status">
+ <div class="control-group">
+ <label><c:out value="${option.name}"/></label>
+ <div class="controls">
+ <c:choose>
+ <c:when test="${option.type=='Select'}">
+ <select id="<c:out value="${option.id}"/>" name="<c:out value="${option.id}"/>">
+ <c:forEach items="${option.availableValues}" var="optionValue">
+ <option value="${optionValue.id}" <c:if test="${option.defaultValue!=null && option.defaultValue.id==optionValue.id}"> SELECTED</c:if>>${optionValue.name}</option>
+ </c:forEach>
+ </select>
+ </c:when>
+ <c:when test="${option.type=='Radio'}">
+ <c:forEach items="${option.availableValues}" var="optionValue">
+ <input type="radio" id="<c:out value="${option.id}"/>" name="<c:out value="${option.id}"/>" value="<c:out value="${optionValue.id}"/>" <c:if test="${option.defaultValue!=null && option.defaultValue.id==optionValue.id}"> checked="checked" </c:if> />
+ <c:out value="${optionValue.name}"/>
+ </c:forEach>
+ </c:when>
+ <c:when test="${option.type=='Text'}">
+ <input class="textAttribute" type="text" id="<c:out value="${option.id}"/>-<c:out value="${option.availableValues[0].id}"/>" name="<c:out value="${option.id}"/>-<c:out value="${option.availableValues[0].id}"/>" class="input-large" value="<c:if test="${option.defaultValue!=null}">${option.defaultValue.name}</c:if>">
+ </c:when>
+ <c:when test="${option.type=='Checkbox'}">
+ <c:forEach items="${option.availableValues}" var="optionValue">
+ <input type="checkbox" id="<c:out value="${option.id}"/>-<c:out value="${optionValue.id}"/>" name="<c:out value="${option.id}"/>-<c:out value="${optionValue.id}"/>" <c:if test="${option.defaultValue!=null && option.defaultValue.id==optionValue.id}"> checked="checked" </c:if> />
+ <c:out value="${optionValue.name}"/>
+ </c:forEach>
+ </c:when>
+
+
+ </c:choose>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+
+ </c:forEach>
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.save" text="Save"/></button>
+ </div>
+ </div>
+
+
+
+ </form>
+ </div>
+ </c:if>
+ </c:if>
+</div>
+
+
+
+
+<div id="confirmModal" class="modal hide" style="z-index:600000" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+ <span id="confirmationInnerBox">
+ <div class="modal-header">
+ <button type="button" class="close close-modal" data-dismiss="modal" aria-hidden="true">X</button>
+ <h3 id="modalTitle"><s:message code="label.generic.confirm" text="Please confirm!" /></h3>
+ </div>
+ <div class="modal-body">
+ <p id="modalMessage">
+ <s:message code="label.customer.resetpasswor.confirm" text="Are you sure you want to reset the customer password?" />
+ </p>
+ </div>
+ <div class="modal-footer">
+
+ <button class="btn btn-primary" aria-hidden="true"
+ onClick="resetCustomerPassword( $('#customerId').val() );" >
+ <s:message code="button.label.ok" text="-" />
+ </button>
+
+
+ <button class="btn cancel-modal" data-dismiss="modal" aria-hidden="true"><s:message code="button.label.cancel" text="Cancel" /></button>
+ <button class="btn btn-success close-modal" id="closeModal" data-dismiss="modal" aria-hidden="true" style="display:none;"><s:message code="button.label.close" text="Close" /></button>
+ </div>
+ </span>
+</div>
+
+
+
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/customers.jsp b/sm-shop/src/main/webapp/pages/admin/customers/customers.jsp
new file mode 100644
index 0000000..332861d
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/customers.jsp
@@ -0,0 +1,69 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+
+<%@ page session="false"%>
+
+
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+
+
+ <div class="sm-ui-component">
+
+
+
+
+ <h3><s:message code="label.customer.list" text="Customer list" /></h3>
+ <br/><br/>
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/customers/page.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/admin/customers/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/customers/customer.html" var="editUrl" scope="request"/>
+ <c:set var="entityId" value="id" scope="request"/>
+ <c:set var="componentTitleKey" value="label.customer.list" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/customers/customers-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="false" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/customers-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/customers/customers-gridHeader.jsp
new file mode 100644
index 0000000..94fe906
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/customers-gridHeader.jsp
@@ -0,0 +1,14 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"id",canFilter:false},
+ {title:"<s:message code="label.customer.firstname" text="First name"/>", name:"firstName",canFilter:false},
+ {title:"<s:message code="label.customer.lastname" text="Last name"/>", name:"lastName",canFilter:true},
+ {title:"<s:message code="label.generic.email" text="Email"/>", name:"email",canFilter:true},
+ {title:"<s:message code="label.customer.country" text="Customer country"/>", name:"country",canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/option.jsp b/sm-shop/src/main/webapp/pages/admin/customers/option.jsp
new file mode 100644
index 0000000..9933a0d
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/option.jsp
@@ -0,0 +1,173 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+ $('#sortOrder').numeric();
+
+});
+
+</script>
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="customer-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <s:message code="menu.customer-options" text="Option management" />
+ </h3>
+
+
+ <h3>
+ <c:choose>
+ <c:when test="${option.id!=null && option.id>0}">
+ <s:message code="label.customer.options.edit" text="Edit option" />
+ </c:when>
+ <c:otherwise>
+ <s:message code="menu.customer-options-create" text="Create option" />
+ </c:otherwise>
+ </c:choose>
+
+ </h3>
+ <br/>
+
+ <c:url var="optionSave" value="/admin/customers/options/save.html"/>
+
+
+ <form:form method="POST" commandName="option" action="${optionSave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.customer.option.code" text="Option code"/> </label>
+ <div class="controls">
+ <form:input cssClass="highlight" readonly="${option.id>0}" id="code" path="code"/>
+ <span class="help-inline"><form:errors path="code" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+ <c:forEach items="${option.descriptionsSettoList}" var="description" varStatus="counter">
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.customer.option.name" text="Option name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="highlight input-xxlarge" id="name${counter.index}" path="descriptionsList[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptionsList[${counter.index}].name" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+
+ <form:hidden path="descriptionsList[${counter.index}].language.code" />
+ <form:hidden path="descriptionsList[${counter.index}].id" />
+
+ </c:forEach>
+
+
+ <div class="control-group">
+ <label><s:message code="label.customer.option.type" text="Dsiplay selection type"/></label>
+ <div class="controls">
+
+ <div class="controls">
+ <form:select path="customerOptionType">
+ <s:message code="label.product.productoption.type.text" text="Text" var="vText" />
+ <s:message code="label.product.productoption.type.select" text="Select" var="vSelect"/>
+ <s:message code="label.product.productoption.type.radio" text="Radio" var="vRadio"/>
+ <s:message code="label.product.productoption.type.checkbox" text="Checkbox" var="vCheckbox"/>
+ <form:option value="Text" label="${vText}" />
+ <form:option value="Select" label="${vSelect}" />
+ <form:option value="Radio" label="${vRadio}" />
+ <form:option value="Checkbox" label="${vCheckbox}" />
+ </form:select>
+ <span class="help-inline"><form:errors path="customerOptionType" cssClass="error" /></span>
+ </div>
+
+ </div>
+ </div>
+
+
+ <form:hidden path="id" />
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.entity.public" text="Public"/></label>
+ <div class="controls">
+ <form:checkbox path="publicOption" />
+ <span class="help-inline"><form:errors path="publicOption" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.entity.active" text="Active"/></label>
+ <div class="controls">
+ <form:checkbox path="active" />
+ <span class="help-inline"><form:errors path="active" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.entity.order" text="Order"/></label>
+ <div class="controls">
+ <form:input id="sortOrder" path="sortOrder"/>
+ <span class="help-inline"><form:errors path="sortOrder" cssClass="error" /></span>
+
+ </div>
+ </div>
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+
+
+ </div>
+
+ </div>
+
+ </form:form>
+
+
+ <br/>
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/options.jsp b/sm-shop/src/main/webapp/pages/admin/customers/options.jsp
new file mode 100644
index 0000000..151ea48
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/options.jsp
@@ -0,0 +1,62 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="customer-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <s:message code="menu.customer-options" text="Option management" />
+ </h3>
+ <br/>
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/customers/options/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/customers/options/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/customers/options/edit.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/customers/options/list.html" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="id" scope="request"/>
+ <c:set var="componentTitleKey" value="menu.catalogue-options-list" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/customers/options-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/options-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/customers/options-gridHeader.jsp
new file mode 100644
index 0000000..5b20805
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/options-gridHeader.jsp
@@ -0,0 +1,14 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"id", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="label.entity.type" text="Type"/>", name:"type", canFilter:false},
+ {title:"<s:message code="label.entity.active" text="Active"/>", name:"active", type:"boolean", canEdit:false, canFilter:false},
+ {title:"<s:message code="label.entity.public" text="Public"/>", name:"public", type:"boolean", canEdit:false, canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/optionsset.jsp b/sm-shop/src/main/webapp/pages/admin/customers/optionsset.jsp
new file mode 100644
index 0000000..cf84332
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/optionsset.jsp
@@ -0,0 +1,142 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+
+<%@ page session="false"%>
+
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+ $('#sortOrder').numeric();
+
+});
+
+</script>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="customer-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <s:message code="menu.customer-options-set"
+ text="Manage customer options set" />
+ </h3>
+
+ <c:url var="createOptionSet"
+ value="/admin/customers/optionsset/save.html" />
+ <form:form method="POST" commandName="optionSet"
+ action="${createOptionSet}" cssClass="form-inline">
+
+
+ <div class="control-group">
+ <label>
+ <s:message code="label.customer.option" text="Option" />
+ </label>
+ <div class="controls">
+ <form:select path="customerOption.id">
+ <form:options items="${options}" itemValue="id"
+ itemLabel="descriptionsSettoList[0].name" />
+ </form:select>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label>
+ <s:message code="label.customer.option.value" text="Option value" />
+ </label>
+ <div class="controls">
+ <form:select path="customerOptionValue.id">
+ <form:options items="${optionsValues}" itemValue="id"
+ itemLabel="descriptionsSettoList[0].name" />
+ </form:select>
+ <span class="help-inline"> <c:if
+ test="${errorMessageAssociation!=null}">
+ <span id="identifiererrors" class="error"><c:out
+ value="${errorMessageAssociation}" />
+ </span>
+ </c:if> </span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label class="required">
+ <s:message code="label.entity.order" text="Order" />
+ </label>
+ <div class="controls">
+ <form:input id="sortOrder" path="sortOrder" />
+ <span class="help-inline"><form:errors path="sortOrder"
+ cssClass="error" />
+ </span>
+
+ </div>
+ </div>
+
+
+ <button type="submit" class="btn btn-success">
+ <s:message code="label.generic.add" text="Add" />
+ </button>
+
+ </form:form>
+
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/customers/optionsset/paging.html"
+ var="pagingUrl" scope="request" />
+ <c:set value="/admin/customers/optionsset/remove.html"
+ var="removeUrl" scope="request" />
+ <c:set value="/admin/customers/optionsset/edit.html" var="editUrl"
+ scope="request" />
+ <c:set value="/admin/customers/optionsset/list.html"
+ var="afterRemoveUrl" scope="request" />
+ <c:set var="entityId" value="id" scope="request" />
+ <c:set var="groupByEntity" value="optionCode" scope="request" />
+ <c:set var="componentTitleKey" value="menu.customer-options-list"
+ scope="request" />
+ <c:set var="gridHeader"
+ value="/pages/admin/customers/optionsset-gridHeader.jsp"
+ scope="request" />
+ <c:set var="canRemoveEntry" value="true" scope="request" />
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+</div>
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/optionsset-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/customers/optionsset-gridHeader.jsp
new file mode 100644
index 0000000..6b129d8
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/optionsset-gridHeader.jsp
@@ -0,0 +1,14 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"id", canFilter:false},
+ {title:"<s:message code="label.customer.option.code" text="Option code"/>", name:"optionCode", canFilter:false},
+ {title:"<s:message code="label.customer.option.name" text="Option name"/>", name:"optionName", canFilter:false},
+ {title:"<s:message code="label.customer.optionvalue.code" text="Option value code"/>", name:"optionValueCode", canFilter:false},
+ {title:"<s:message code="label.customer.optionvalue.name" text="Option value name"/>", name:"optionValueName", canFilter:false},
+ {title:"<s:message code="label.entity.order" text="Sort order"/>", name:"order", type: "integer", canEdit:true, canFilter:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/optionsValues.jsp b/sm-shop/src/main/webapp/pages/admin/customers/optionsValues.jsp
new file mode 100644
index 0000000..cfd2d60
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/optionsValues.jsp
@@ -0,0 +1,55 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="customer-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <s:message code="menu.customer-options" text="Customer options" />
+ </h3>
+ <br/>
+
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/customers/options/values/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/customers/options/values/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/customers/options/values/edit.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/customers/options/values/list.html" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="id" scope="request"/>
+ <c:set var="componentTitleKey" value="menu.customer-options-list" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/customers/optionsValues-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/optionsValues-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/customers/optionsValues-gridHeader.jsp
new file mode 100644
index 0000000..de21a97
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/optionsValues-gridHeader.jsp
@@ -0,0 +1,12 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"id", canFilter:false},
+ {title:"<s:message code="label.entity.code" text="Code"/>", name:"code", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/customers/optionValue.jsp b/sm-shop/src/main/webapp/pages/admin/customers/optionValue.jsp
new file mode 100644
index 0000000..4cac819
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/customers/optionValue.jsp
@@ -0,0 +1,103 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+<%@ page session="false" %>
+
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+ $('#sortOrder').numeric();
+
+});
+
+</script>
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="customer-section">
+ <div class="sm-ui-component">
+
+ <h3>
+ <c:choose>
+ <c:when test="${optionValue.id!=null && optionValue.id>0}">
+ <s:message code="label.customer.optionvalue.edit" text="Edit option value" />
+ </c:when>
+ <c:otherwise>
+ <s:message code="menu.customer-options-create" text="Create option value" />
+ </c:otherwise>
+ </c:choose>
+ </h3>
+ <br/>
+
+ <c:url var="optionSave" value="/admin/customers/options/values/save.html"/>
+
+
+ <form:form method="POST" enctype="multipart/form-data" commandName="optionValue" action="${optionSave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.customer.optionvalue.code" text="Option value code"/> </label>
+ <div class="controls">
+ <form:input cssClass="highlight" readonly="${optionValue.id>0}" id="code" path="code"/>
+ <span class="help-inline"><form:errors path="code" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+ <c:forEach items="${optionValue.descriptionsSettoList}" var="description" varStatus="counter">
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.customer.optionvalue.name" text="Option name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="highlight x-large" id="name${counter.index}" path="descriptionsList[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptionsList[${counter.index}].name" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+
+ <form:hidden path="descriptionsList[${counter.index}].language.code" />
+ <form:hidden path="descriptionsList[${counter.index}].id" />
+
+ </c:forEach>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.entity.order" text="Order"/></label>
+ <div class="controls">
+ <form:input id="sortOrder" path="sortOrder"/>
+ <span class="help-inline"><form:errors path="sortOrder" cssClass="error" /></span>
+
+ </div>
+ </div>
+
+
+ <form:hidden path="id" />
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+ <br/>
+
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
sm-shop/src/main/webapp/pages/admin/home.jsp 86(+86 -0)
diff --git a/sm-shop/src/main/webapp/pages/admin/home.jsp b/sm-shop/src/main/webapp/pages/admin/home.jsp
new file mode 100644
index 0000000..be7ea48
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/home.jsp
@@ -0,0 +1,86 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+
+<%@ page session="false" %>
+
+
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div id="messages" class="alert alert-info" style="display:none">
+ </div>
+
+ <div class="box">
+ <span class="box-title">
+ <p><s:message code="label.store.information" text="Store information" /></p>
+ </span>
+
+ <p>
+ <address>
+ <strong><c:out value="${store.storename}"/></strong><br/>
+ <c:if test="${not empty store.storeaddress}">
+ <c:out value="${store.storeaddress}"/><br/>
+ </c:if>
+ <c:if test="${not empty store.storecity}">
+ <c:out value="${store.storecity}"/>,
+ </c:if>
+ <c:choose>
+ <c:when test="${not empty store.zone}">
+ <c:out value="${store.zone.code}"/>,
+ </c:when>
+ <c:otherwise>
+ <c:if test="${not empty store.storestateprovince}">
+ <c:out value="${store.storestateprovince}"/>,
+ </c:if>
+ </c:otherwise>
+ </c:choose>
+ <c:if test="${not empty store.storepostalcode}">
+ <c:out value="${store.storepostalcode}"/>
+ </c:if>
+ <br/><c:out value="${country.name}"/>
+ <c:if test="${not empty store.storephone}">
+ <br/><c:out value="${store.storephone}"/>
+ </c:if>
+ </address>
+
+
+ </p>
+ <p>
+ <i class="icon-user"></i>
+ <sec:authentication property="principal.username" /><br/>
+ <i class="icon-calendar"></i> <s:message code="label.profile.lastaccess" text="Last access"/>: <fmt:formatDate type="both" dateStyle="long" value="${user.lastAccess}" />
+ </p>
+
+
+ </div>
+
+ <sec:authorize access="hasAnyRole('ADMIN', 'SUPERADMIN', 'ADMIN_ORDER')">
+
+ <br/>
+ <h3><s:message code="label.order.recent" text="Recent orders"/></h3>
+ <br/><br/>
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/orders/paging.html?_endRow=10" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/orders/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/orders/editOrder.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/orders/list.html" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="orderId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.order.title" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/orders/orders-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="false" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+ </sec:authorize>
+
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/merchant/branding.jsp b/sm-shop/src/main/webapp/pages/admin/merchant/branding.jsp
new file mode 100644
index 0000000..a05cf51
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/merchant/branding.jsp
@@ -0,0 +1,134 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@ page session="false"%>
+
+
+
+<script type="text/javascript">
+
+ function removeImage(){
+ $("#store.error").show();
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/store/removeImage.html"/>',
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ //remove delete
+ $("#imageControlRemove").html('');
+ //add field
+ $("#imageControl").html('<input class=\"input-file\" id=\"file[0]\" name=\"file[0]\" type=\"file\">');
+ $(".alert-success").show();
+
+ } else {
+
+ //display message
+ $(".alert-error").show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+ }
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+ <c:url var="saveBrandingImage" value="/admin/store/saveBranding.html" />
+ <form:form method="POST" enctype="multipart/form-data" commandName="contentImages" action="${saveBrandingImage}">
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success"
+ style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.success" text="Request successfull" />
+ </div>
+
+
+
+ <!-- hidden when creating the product -->
+ <div class="control-group">
+ <label><s:message code="label.storelogo" text="Store logo"/> <c:if test="${store.storeLogo!=null}"><span id="imageControlRemove"> - <a href="#" onClick="removeImage('${store.id}')"><s:message code="label.generic.remove" text="Remove"/></a></span></c:if></label>
+ <div class="controls" id="imageControl">
+
+ <c:choose>
+ <c:when test="${store.storeLogo==null}">
+
+ <input class="input-file" id="file" name="file[0]" type="file"><br/>
+ </c:when>
+ <c:otherwise>
+ <img src="<sm:contentImage imageName="${store.storeLogo}" imageType="LOGO"/>">
+ </c:otherwise>
+ </c:choose>
+
+
+
+
+
+
+ </div>
+ </div>
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success">
+ <s:message code="button.label.submit2" text="Submit" />
+ </button>
+ </div>
+ </div>
+ </form:form>
+
+ <br/>
+ <br/>
+ <c:url var="saveTemplate" value="/admin/store/saveTemplate.html" />
+ <form:form method="POST" enctype="multipart/form-data" commandName="store" action="${saveTemplate}">
+
+
+
+ <!-- hidden when creating the product -->
+ <div class="control-group">
+ <label><s:message code="label.store.template" text="Theme"/></label>
+ <div class="controls">
+ <form:select items="${templates}" path="storeTemplate" />
+ <span class="help-inline"></span>
+ </div>
+ </div>
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success">
+ <s:message code="button.label.submit2" text="Submit" />
+ </button>
+ </div>
+ </div>
+ </form:form>
+
+
+ </div>
+ </div>
+ </div>
+
+
+
+
+
+
+
+
diff --git a/sm-shop/src/main/webapp/pages/admin/merchant/merchant.jsp b/sm-shop/src/main/webapp/pages/admin/merchant/merchant.jsp
new file mode 100644
index 0000000..2f5e79f
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/merchant/merchant.jsp
@@ -0,0 +1,345 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+ <link href="<c:url value="/resources/css/bootstrap/css/datepicker.css" />" rel="stylesheet"></link>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-datepicker.js" />"></script>
+
+
+<script>
+
+
+$(document).ready(function() {
+
+ if($("#code").val()=="") {
+ $('.btn').addClass('disabled');
+ }
+
+
+ <c:choose>
+ <c:when test="${store.storestateprovince!=null && store.storestateprovince!=''}">
+ $('.zone-list').hide();
+ $('#storestateprovince').show();
+ $('#storestateprovince').val('<c:out value="${store.storestateprovince}"/>');
+ </c:when>
+ <c:otherwise>
+ $('.zone-list').show();
+ $('#storestateprovince').hide();
+ getZones('<c:out value="${store.country.isoCode}" />');
+ </c:otherwise>
+ </c:choose>
+
+ $(".country-list").change(function() {
+ getZones($(this).val());
+ })
+
+
+});
+
+$.fn.addItems = function(data) {
+ $(".zone-list > option").remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ var option = new Option(itemData.name, itemData.code);
+ list.add(option);
+ });
+ });
+};
+
+function getZones(countryCode){
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/reference/provinces.html"/>',
+ data: 'countryCode=' + countryCode,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ var data = isc.XMLTools.selectObjects(response, "/response/data");
+ if(data && data.length>0) {
+
+ $('.zone-list').show();
+ $('#storestateprovince').hide();
+ $(".zone-list").addItems(data);
+ <c:if test="${store.zone!=null}">
+ $('.zone-list').val('<c:out value="${store.zone.code}"/>');
+ $('#storestateprovince').val('');
+ </c:if>
+ } else {
+ $('.zone-list').hide();
+ $('#storestateprovince').show();
+ <c:if test="${store.storestateprovince!=null}">
+ $('#storestateprovince').val('<c:out value="${store.storestateprovince}"/>');
+ </c:if>
+ }
+ } else {
+ $('.zone-list').hide();
+ $('#storestateprovince').show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+}
+
+
+
+function validateCode() {
+ $('#checkCodeStatus').html('<img src="<c:url value="/resources/img/ajax-loader.gif" />');
+ $('#checkCodeStatus').show();
+ var storeCode = $("#code").val();
+ var id = $("#id").val();
+ checkCode(storeCode,id,'<c:url value="/admin/store/checkStoreCode.html" />');
+}
+
+function callBackCheckCode(msg,code) {
+
+ if(code==0) {
+ $('.btn').removeClass('disabled');
+ }
+ if(code==9999) {
+
+ $('#checkCodeStatus').html('<font color="green"><s:message code="message.code.available" text="This code is available"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').removeClass('disabled');
+ }
+ if(code==9998) {
+
+ $('#checkCodeStatus').html('<font color="red"><s:message code="message.code.exist" text="This code already exist"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').addClass('disabled');
+ }
+
+}
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <h3><s:message code="label.store.title" text="Merchant store" /></h3>
+ <br/>
+
+
+ <c:url var="merchant" value="/admin/store/save.html"/>
+
+
+ <form:form method="POST" commandName="store" action="${merchant}">
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+ <div class="control-group">
+ <label><s:message code="label.storename" text="Name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="storename" />
+ <span class="help-inline"><form:errors path="storename" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.storecode" text="Store code"/></label>
+ <div class="controls">
+ <c:choose>
+ <c:when test="${store.code=='DEFAULT'}">
+ <span class="input-large uneditable-input">${store.code}</span><form:hidden path="code" />
+ </c:when>
+ <c:otherwise>
+ <form:input cssClass="input-large highlight" path="code" onblur="validateCode()"/>
+ </c:otherwise>
+ </c:choose>
+ <span class="help-inline"><div id="checkCodeStatus" style="display:none;"></div><form:errors path="code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.storephone" text="Phone"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="storephone" />
+ <span class="help-inline"><form:errors path="storephone" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.storeemailaddress" text="Email"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="storeEmailAddress" />
+ <span class="help-inline"><form:errors path="storeEmailAddress" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.storeaddress" text="Address"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="storeaddress" />
+ <span class="help-inline"><form:errors path="storeaddress" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.storecity" text="City"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="storecity" />
+ <span class="help-inline"><form:errors path="storecity" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.storecountry" text="Store Country"/></label>
+ <div class="controls">
+
+ <form:select cssClass="country-list highlight" path="country.isoCode">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ <span class="help-inline"><form:errors path="country" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.storezone" text="Store state / province"/></label>
+ <div class="controls">
+ <form:select cssClass="zone-list highlight" path="zone.code"/>
+ <input type="text" class="input-large highlight" id="storestateprovince" name="storestateprovince" value="${store.storestateprovince}" />
+ <span class="help-inline"><form:errors path="zone.code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.storepostalcode" text="Postal code"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="storepostalcode" />
+ <span class="help-inline"><form:errors path="storepostalcode" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.supportedlanguages" text="Supported languages"/></label>
+ <div class="controls">
+
+ <form:checkboxes cssClass="highlight" items="${languages}" itemValue="code" itemLabel="code" path="languages" />
+ <span class="help-inline"><form:errors path="languages" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.defaultlanguage" text="Default language"/></label>
+ <div class="controls">
+
+ <form:select items="${languages}" itemValue="id" itemLabel="code" path="defaultLanguage.id"/>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.currency" text="Currency"/></label>
+ <div class="controls">
+
+ <form:select items="${currencies}" itemValue="id" itemLabel="code" path="currency.id"/>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.store.currency.format" text="National currency format"/></label>
+ <div class="controls">
+
+ <form:checkbox path="currencyFormatNational" />
+ <span class="help-inline"><s:message code="label.store.currency.format.help" text="National currency format ex $1,345.79 or International currency format ex USD1,345.79"/></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.store.weightunit" text="Weight units"/></label>
+ <div class="controls">
+
+ <form:select items="${weights}" path="weightunitcode" itemValue="code" itemLabel="name"/>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.store.sizeunit" text="Size units"/></label>
+ <div class="controls">
+
+ <form:select items="${sizes}" path="seizeunitcode" itemValue="code" itemLabel="name"/>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.store.inbusinesssince" text="Web site operating since"/></label>
+ <div class="controls">
+ <input id="dateBusinessSince" name="dateBusinessSince" value="${store.dateBusinessSince}" class="small" type="text" data-date-format="<%=com.salesmanager.core.constants.Constants.DEFAULT_DATE_FORMAT%>" data-datepicker="datepicker">
+ <span class="help-inline"><form:errors path="dateBusinessSince" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.store.useCache" text="Use cache"/></label>
+ <div class="controls">
+
+ <form:checkbox path="useCache" />
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.store.baseurl" text="Store base url"/></label>
+ <div class="controls">
+ <span class="add-on">
+ http://
+ </span>
+ <form:input cssClass="input-medium highlight" path="domainName" />
+ <span class="help-inline"><form:errors path="domainName" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <form:hidden path="id" />
+ <form:hidden path="storeLogo" />
+ <form:hidden path="storeTemplate" />
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit2" text="Submit"/></button>
+ </div>
+ </div>
+
+
+
+ </form:form>
+
+
+
+
+
+
+
+
+
+
+
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/merchant/storeLanding.jsp b/sm-shop/src/main/webapp/pages/admin/merchant/storeLanding.jsp
new file mode 100755
index 0000000..f113353
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/merchant/storeLanding.jsp
@@ -0,0 +1,147 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+
+
+<script>
+
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <h3><s:message code="label.storefront.landingpage" text="Landing page information" /></h3>
+ <br/>
+
+
+ <c:url var="merchant" value="/admin/store/saveLanding.html"/>
+
+
+ <form:form method="POST" commandName="storeLanding" action="${merchant}">
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <c:forEach items="${storeLanding.descriptions}" var="description" varStatus="counter">
+
+
+ <!-- Title -->
+ <div class="control-group">
+ <label><s:message code="label.storefront.landingpage.title" text="Title"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input id="title${counter.index}" cssClass="input-large highlight" path="descriptions[${counter.index}].title" />
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].title" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <!-- Description -->
+ <div class="control-group">
+ <label><s:message code="label.storefront.metatags.description" text="Tags description"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:textarea id="description${counter.index}" cssClass="span6" path="descriptions[${counter.index}].description" rows="5" />
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].description" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+
+
+ <!-- Keywords -->
+ <div class="control-group">
+ <label><s:message code="label.storefront.metatags.keywords" text="Keywords"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:textarea id="keywords${counter.index}" cssClass="span6" path="descriptions[${counter.index}].keywords" rows="5"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].keywords" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <!-- Content -->
+
+ <div class="control-group">
+ <label><s:message code="label.storefront.storetext" text="Page content"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+
+
+
+ <textarea cols="30" id="descriptions[${counter.index}].homePageContent" class="ckeditor" name="descriptions[${counter.index}].homePageContent">
+ <c:out value="${content.descriptions[counter.index].homePageContent}"/>
+ </textarea>
+
+
+ </div>
+
+ <script type="text/javascript">
+ //<![CDATA[
+
+ CKEDITOR.replace('descriptions[${counter.index}].homePageContent',
+ {
+ skin : 'office2003',
+ toolbar :
+ [
+ ['Source','-','Save','NewPage','Preview'],
+ ['Cut','Copy','Paste','PasteText','-','Print'],
+ ['Undo','Redo','-','Find','-','SelectAll','RemoveFormat'], '/',
+ ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
+ ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+ ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
+ ['Link','Unlink','Anchor'],
+ ['Image','Flash','Table','HorizontalRule','SpecialChar','PageBreak'], '/',
+ ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'],
+ ['Maximize', 'ShowBlocks']
+ ],
+
+ filebrowserWindowWidth : '720',
+ filebrowserWindowHeight : '740',
+ filebrowserImageBrowseUrl : '<c:url value="/admin/content/fileBrowser.html"/>'
+
+
+ });
+
+ //]]>
+ </script>
+
+ </div>
+
+
+
+ <form:hidden path="descriptions[${counter.index}].language.code" />
+
+
+ </c:forEach>
+
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit2" text="Submit"/></button>
+ </div>
+ </div>
+
+
+
+ </form:form>
+
+
+
+
+
+
+
+
+
+
+
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/merchant/stores.jsp b/sm-shop/src/main/webapp/pages/admin/merchant/stores.jsp
new file mode 100644
index 0000000..03be948
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/merchant/stores.jsp
@@ -0,0 +1,51 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.store.list" text="Stores" /></h3>
+ <br/>
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/store/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/store/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/store/editStore.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/store/list.html" var="refreshUrl" scope="request"/>
+ <c:set var="entityId" value="storeId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.store.list" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/merchant/stores-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/merchant/stores-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/merchant/stores-gridHeader.jsp
new file mode 100644
index 0000000..be2326e
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/merchant/stores-gridHeader.jsp
@@ -0,0 +1,13 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"storeId", canFilter:false},
+ {title:"<s:message code="label.entity.code" text="Code"/>", name:"code", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="label.generic.email" text="Email"/>", name:"email", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
\ No newline at end of file
sm-shop/src/main/webapp/pages/admin/orders/order.jsp 714(+714 -0)
diff --git a/sm-shop/src/main/webapp/pages/admin/orders/order.jsp b/sm-shop/src/main/webapp/pages/admin/orders/order.jsp
new file mode 100755
index 0000000..b339550
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/orders/order.jsp
@@ -0,0 +1,714 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+<%@ page session="false" %>
+
+
+<link href="<c:url value="/resources/css/bootstrap/css/datepicker.css" />" rel="stylesheet"></link>
+<script src="<c:url value="/resources/js/bootstrap/bootstrap-datepicker.js" />"></script>
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+<script src="<c:url value="/resources/js/json2.js" />"></script>
+<script src="<c:url value="/resources/js/adminFunctions.js" />"></script>
+
+<script src="<c:url value="/resources/js/jquery.showLoading.min.js" />"></script>
+<link href="<c:url value="/resources/css/showLoading.css" />" rel="stylesheet">
+
+<script>
+
+function displayErrorMessage(message) {
+
+}
+
+
+function getZones(listDiv, textDiv, countryCode, defaultValue){
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/shop/reference/provinces.html"/>',
+ data: 'countryCode=' + countryCode + '&lang=${requestScope.LANGUAGE.code}',
+ dataType: 'json',
+ success: function(response){
+ var status = response.response.status;
+ var data = response.response.data;
+ //console.log(status);
+ if((status==0 || status ==9999) && data) {
+ //console.log(data);
+ if(data && data.length>0) {
+ $(listDiv).show();
+ $(textDiv).hide();
+ $(listDiv).addItems(listDiv, data, defaultValue);
+ } else {
+ $(listDiv).hide();
+ $(textDiv).show();
+ if(defaultValue!=null || defaultValue !='') {
+ $(textDiv).val(defaultValue);
+ }
+ }
+ } else {
+ $(listDiv).hide();
+ $(textDiv).show();
+ }
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ $('.sm').hideLoading();
+ }
+
+ });
+
+}
+
+
+$.fn.addItems = function(div, data, defaultValue) {
+ //console.log('Populating div ' + div + ' defaultValue ' + defaultValue);
+ var selector = div + ' > option';
+ var defaultExist = false;
+ $(selector).remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ //console.log(itemData.code + ' ' + defaultValue);
+ if(itemData.code==defaultValue) {
+ defaultExist = true;
+ }
+ var option = new Option(itemData.name, itemData.code);
+ list.add(option);
+ });
+ if(defaultExist && (defaultValue!=null && defaultValue!='')) {
+ $(div).val(defaultValue);
+ }
+ });
+};
+
+function listTransactions(orderId){
+
+ $.ajax({
+ type: 'GET',
+ url: '<c:url value="/admin/orders/listTransactions.html"/>?id=' + orderId,
+ dataType: 'json',
+ success: function(response){
+ var status = response.response.status;
+ var data = response.response.data;
+ console.log(status);
+ if((status==0 || status ==9999) && data) {
+ //console.log(data);
+ $('#transactionsModal').modal();
+ var transactions = data;
+ //console.log(transactions);
+ for(i=0;i<transactions.length;i++) {
+ var tr = '<tr><td>' + transactions[i].transactionId + '</td><td>' + transactions[i].transactionDate + '</td><td>' + transactions[i].transactionType + '</td><td>' + transactions[i].transactionAmount + '</td><td>' + JSON.stringify(transactions[i].transactionDetails) + '</td>';
+ $('#transactionList').append(tr);
+ }
+ }
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ $('.sm').hideLoading();
+ }
+
+ });
+}
+
+function sendInvoice(orderId){
+
+ $.ajax({
+ type: 'GET',
+ url: '<c:url value="/admin/orders/sendInvoice.html"/>?id=' + orderId,
+ dataType: 'json',
+ success: function(response){
+ var status = response.response.status;
+ var data = response.response.data;
+ //console.log(status);
+ if(status==0 || status ==9999) {
+ $(".alert-success").show();
+ } else {
+ $(".alert-error").show();
+ }
+ $('.sm').hideLoading();
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ $('.sm').hideLoading();
+ }
+
+ });
+}
+
+function updateStatus(orderId){
+
+ $.ajax({
+ type: 'GET',
+ url: '<c:url value="/admin/orders/updateStatus.html"/>?id=' + orderId,
+ dataType: 'json',
+ success: function(response){
+ var status = response.response.status;
+ var data = response.response.data;
+ //console.log(status);
+ if(status==0 || status ==9999) {
+ $(".alert-success").show();
+ } else {
+ $(".alert-error").show();
+ }
+ $('.sm').hideLoading();
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ $('.sm').hideLoading();
+ }
+
+ });
+}
+
+function resetMessages() {
+ $(".alert-error").hide();
+ $(".alert-success").hide();
+}
+
+
+function sendDownloadEmail(orderId){
+
+ $.ajax({
+ type: 'GET',
+ url: '<c:url value="/admin/orders/sendDownloadEmail.html"/>?id=' + orderId,
+ dataType: 'json',
+ success: function(response){
+ var status = response.response.status;
+ var data = response.response.data;
+ //console.log(status);
+ if(status==0 || status ==9999) {
+ $(".alert-success").show();
+ } else {
+ $(".alert-error").show();
+ }
+ $('.sm').hideLoading();
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ $('.sm').hideLoading();
+ }
+
+ });
+}
+
+function captureOrder(orderId){
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/orders/captureOrder.html"/>?id=' + orderId,
+ dataType: 'json',
+ success: function(response){
+ var status = response.response.status;
+ var data = response.response.data;
+ //console.log(status);
+ if(status==0 || status ==9999) {
+ $(".alert-success").show();
+ window.location='<c:url value="/admin/orders/editOrder.html" />?id=' + orderId;
+ } else {
+ $(".alert-error").show();
+ }
+ $('.sm').hideLoading();
+ $('#captureAction').removeClass('disabled');
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ $('.sm').hideLoading();
+ }
+
+ });
+}
+
+ $(document).ready(function(){
+
+ $("#refundAction").click(function() {
+ resetMessages();
+ $('#refundModal').modal();
+ });
+
+ $("#transactionsAction").click(function() {
+ resetMessages();
+ listTransactions('<c:out value="${order.order.id}"/>');
+ });
+
+ $("#sendInvoiceAction").click(function() {
+ resetMessages();
+ $('.sm').showLoading();
+ sendInvoice('<c:out value="${order.order.id}"/>');
+ });
+
+ $("#updateStatusAction").click(function() {
+ resetMessages();
+ $('.sm').showLoading();
+ updateStatus('<c:out value="${order.order.id}"/>');
+ });
+
+ $("#updateDownloadsAction").click(function() {
+ resetMessages();
+ $('.sm').showLoading();
+ sendDownloadEmail('<c:out value="${order.order.id}"/>');
+ });
+
+ $("#captureAction").click(function() {
+ resetMessages();
+ $('#captureAction').addClass('disabled');
+ $('.sm').showLoading();
+ captureOrder('<c:out value="${order.order.id}"/>');
+ });
+
+ $(".close-modal").click(function() {
+ location.href="<c:url value="/admin/orders/editOrder.html" />?id=<c:out value="${order.order.id}"/>";
+ });
+
+ $(".billing-country-list").change(function() {
+ getZones('#billingZoneList','#billingZoneText',$(this).val(),'<c:out value="${order.billing.zone.code}" />');
+ })
+
+
+ <c:if test="${order.billing.state!=null && order.billing.state!=''}">
+ $('#billingZoneList').hide();
+ $('#billingZoneText').show();
+ $('#billingZoneText').val('<c:out value="${order.billing.state}"/>');
+ </c:if>
+
+ <c:if test="${order.billing.state==null || order.billing.state==''}">
+ $('#billingZoneList').show();
+ $('#billingZoneText').hide();
+ getZones('#billingZoneList','#billingZoneText','<c:out value="${order.billing.country.isoCode}" />','<c:out value="${order.billing.zone.code}" />');
+ </c:if>
+
+ <c:if test="${order.delivery.state!=null && order.delivery.state!=''}">
+ $('#shippingZoneList').hide();
+ $('#shippingZoneText').show();
+ $('#shippingZoneText').val('<c:out value="${order.delivery.state}"/>');
+ </c:if>
+ <c:if test="${order.delivery.state==null || order.delivery.state==''}">
+ $('#shippingZoneList').show();
+ $('#shippingZoneText').hide();
+ getZones('#shippingZoneList','#shippingZoneText','<c:out value="${order.delivery.country.isoCode}" />','<c:out value="${order.delivery.zone.code}" />');
+ </c:if>
+
+
+
+ });
+
+
+ $(function() {
+
+ $("#refund").submit(function() {
+ $('#refundButton').addClass('disabled');
+ $('#refundModal').showLoading();
+ var data = $(this).serializeObject();
+ $.ajax({
+ 'type': 'POST',
+ 'url': "<c:url value="/admin/orders/refundOrder.html"/>",
+ 'contentType': 'application/json',
+ 'data': JSON.stringify(data),
+ 'dataType': 'json',
+ 'success': function(result) {
+ $('#refundModal').hideLoading();
+ var response = result.response;
+ var status = response.status;
+ if(status==0 || status ==9999) {
+ //window.location='<c:url value="/admin/orders/editOrder.html" />?id=<c:out value="${order.order.id}" />';
+ $(".alert-success-modal").show();
+ //$(".close-modal").show();
+ } else {
+ $(".alert-error-modal").html(response.statusMessage);
+ $(".alert-error-modal").show();
+ }
+ $('#refundButton').removeClass('disabled');
+ }
+ });
+
+ return false;
+ });
+ });
+
+ $.fn.serializeObject = function() {
+ var o = {};
+ var a = this.serializeArray();
+ $.each(a, function() {
+ if (o[this.name]) {
+ if (!o[this.name].push) {
+ o[this.name] = [o[this.name]];
+ }
+ o[this.name].push(this.value || '');
+ } else {
+ o[this.name] = this.value || '';
+ }
+ });
+ return o;
+ };
+</script>
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="order-section">
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <div class="control-group">
+ <div class="controls">
+ <s:message code="label.order.id2" text="Order ID"/>
+ <c:out value="${order.order.id}" /> - <span class="lead"><s:message code="label.order.${order.order.status.value}" text="${order.order.status.value}" /></span>
+ <br>
+ </div>
+ </div>
+ </h3>
+ <br/>
+ <br/>
+ <div class="btn-group" style="z-index:400000;">
+ <button class="btn btn-info dropdown-toggle" data-toggle="dropdown"><s:message code="label.generic.moreoptions" text="More options"/> ... <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a id="transactionsAction" href="#"><s:message code="label.order.transactions" text="Transactions list"/></a></li>
+ <li><a id="sendInvoiceAction" href="#"><s:message code="label.order.sendinvoice" text="Send email invoice"/></a></li>
+ <li><a id="updateStatusAction" href="#"><s:message code="label.order.updatestatus" text="Send order status email"/></a></li>
+ <li>
+ <c:if test="${downloads!=null}">
+ <a id="updateDownloadsAction" href="#"><s:message code="label.order.downloademail" text="Send download email"/></a>
+ </c:if>
+ </li>
+
+ <li><a href="<c:url value="/admin/orders/printInvoice.html?id=${order.id}" />"><s:message code="label.order.printinvoice" text="Print invoice"/></a></li>
+ <!-- available soon <li><a href="<c:url value="/admin/orders/printShippingLabel.html?id=${order.id}" />"><s:message code="label.order.packing" text="Print packing slip"/></a></li>-->
+ <li>
+ <c:if test="${customer!=null}">
+ <a href="<c:url value="/admin/customers/customer.html?id=${customer.id}"/>"><s:message code="label.order.editcustomer" text="Edit customer"/></a>
+ </c:if>
+ </li>
+ </ul>
+
+ <c:if test="${order.order.total>0}">
+ <c:if test="${capturableTransaction!=null}">
+ <a id="captureAction" class="btn btn-primary btn-block" href="#"><s:message code="label.order.capture" text="Capture transaction"/></a>
+ </c:if>
+ <c:if test="${refundableTransaction!=null}">
+ <a id="refundAction" class="btn btn-danger btn-block" href="#"><s:message code="label.order.refund" text="Apply refund"/></a>
+ </c:if>
+ </c:if>
+
+ </div><!-- /btn-group -->
+ <br/>
+
+ <c:url var="orderSave" value="/admin/orders/save.html"/>
+ <form:form method="POST" enctype="multipart/form-data" commandName="order" action="${orderSave}">
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <div id="store.error" class="alert alert-error" style="display:none;"><s:message code="message.error" text="An error occured"/></div>
+
+ <form:hidden path="order.id" />
+ <form:hidden path="order.customerId" />
+
+ <div class="span8">
+
+ <div class="span4" style="margin-left:0px;">
+
+ <h6> <s:message code="label.customer.billinginformation" text="Billing information"/> </h6>
+ <address>
+
+ <label><s:message code="label.customer.firstname" text="First Name"/></label>
+ <div class="controls">
+
+ <form:input id="customerFirstName" cssClass="input-large highlight" path="order.billing.firstName"/>
+ <span class="help-inline">
+ <form:errors path="order.billing.firstName" cssClass="error" /></span>
+ </div>
+
+ <label><s:message code="label.customer.lastname" text="Last Name"/></label>
+ <div class="controls">
+ <form:input id="customerLastName" cssClass="input-large highlight" path="order.billing.lastName"/>
+ <span class="help-inline"><form:errors path="order.billing.lastName" cssClass="error" /></span>
+ </div>
+
+
+ <address>
+
+ <label><s:message code="label.customer.billing.streetaddress" text="Billing address"/></label>
+ <div class="controls">
+ <form:input id="billingAdress" cssClass="input-large highlight" path="order.billing.address"/>
+ <span class="help-inline"><form:errors path="order.billing.address" cssClass="error" /></span>
+ </div>
+ <label><s:message code="label.customer.billing.city" text="Billing city"/></label>
+ <div class="controls">
+ <form:input id="billingCity" cssClass="input-large highlight" path="order.billing.city"/>
+ <span class="help-inline"><form:errors path="order.billing.city" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.billing.zone" text="State / Province"/></label>
+ <div class="controls">
+ <form:select id="billingZoneList" cssClass="billing-zone-list" path="order.billing.zone.code"/>
+ <form:input class="input-large highlight" id="billingZoneText" maxlength="100" name="billingZoneText" path="order.billing.state" />
+ <span class="help-inline"><form:errors path="order.billing.zone.code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <label><s:message code="label.customer.billing.country" text="Country"/></label>
+ <div class="controls">
+ <form:select cssClass="billing-country-list" path="order.billing.country.isoCode">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ </div>
+ <label><s:message code="label.customer.billing.postalcode" text="Billing postal code"/></label>
+ <div class="controls">
+ <form:input id="billingPostalCode" cssClass="input-large highlight" path="order.billing.postalCode"/>
+ <span class="help-inline"><form:errors path="order.billing.postalCode" cssClass="error" /></span>
+ </div>
+ <label><s:message code="label.customer.telephone" text="Customer phone"/></label>
+ <div class="controls">
+ <form:input id="phoneNumber" cssClass="input-large highlight" path="order.billing.telephone"/>
+ <span class="help-inline"><form:errors path="order.billing.telephone" cssClass="error" /></span>
+ </div>
+ </address>
+
+
+ <label><s:message code="label.customer.email" text="Email"/></label>
+ <div class="controls">
+ <form:input id="customerEmailAddress" cssClass="input-large highlight" path="order.customerEmailAddress"/>
+ <span class="help-inline"><form:errors path="order.customerEmailAddress" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+ <div span="4">
+
+
+ <h6><s:message code="label.customer.shippinginformation" text="Shipping information"/></h6>
+ <address>
+ <label><s:message code="label.customer.shipping.firstName" text="Shipping first name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="order.delivery.firstName"/>
+ </div>
+ <label><s:message code="label.customer.shipping.lastName" text="Shipping last name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="order.delivery.lastName"/>
+ </div>
+ <label><s:message code="label.customer.shipping.streetaddress" text="Shipping address"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="order.delivery.address"/>
+ </div>
+ <label><s:message code="label.customer.shipping.city" text="Shipping city"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="order.delivery.city"/>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.zone" text="State / Province"/></label>
+ <div class="controls">
+ <form:select id="shippingZoneList" cssClass="shiiping-zone-list" path="order.delivery.zone.code"/>
+ <form:input class="input-large highlight" id="shippingZoneText" maxlength="100" name="shippingZoneText" path="order.delivery.state" />
+ <span class="help-inline"><form:errors path="order.delivery.zone.code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <label><s:message code="label.customer.shipping.country" text="Country"/></label>
+ <div class="controls">
+ <form:select cssClass="country-list" path="order.delivery.country.isoCode">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ </div>
+ <label><s:message code="label.customer.shipping.postalcode" text="Postal code"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="order.delivery.postalCode"/>
+ </div>
+ </address>
+
+
+ </div>
+
+ </div>
+
+ <div class="span8">
+ <s:message code="label.customer.order.date" text="Order date"/>
+ <div class="controls">
+ <form:input cssClass="input-large" path="datePurchased" class="small" type="text"
+ data-date-format="<%=com.salesmanager.core.constants.Constants.DEFAULT_DATE_FORMAT%>" />
+ <script type="text/javascript">
+ $('#datePurchased').datepicker();
+ </script>
+ <span class="help-inline"><form:errors path="datePurchased" cssClass="error" /></span>
+ </div>
+
+
+ <label><s:message code="label.order.paymentmode" text="Payment mode"/></label>
+ <div class="controls">
+ <strong><c:out value="${order.order.paymentType}"/> - <c:out value="${order.order.paymentModuleCode}"/></strong>
+ <c:if test="${order.order.paymentType=='CREDITCARD' && order.order.creditCard!=null}">
+ <br/><c:out value="${order.order.creditCard.cardType}"/> - <c:out value="${order.order.creditCard.ccNumber}"/>
+ </c:if>
+ <br/><br/>
+ </div>
+
+ <c:if test="${order.order.shippingModuleCode!=null}">
+ <label><s:message code="label.order.shippingmethod" text="Shipping method"/></label>
+ <div class="controls">
+ <strong><c:out value="${order.order.shippingModuleCode}"/></strong><form:hidden path="order.shippingModuleCode"/>
+ </div>
+ </c:if>
+
+ </dl>
+
+
+
+ </div>
+
+
+
+
+ <div class="span8" style="margin-top:20px;">
+ <table class="table table-bordered table-striped">
+ <thead>
+ <tr>
+ <th colspan="2" width="55%"><s:message code="label.order.item" text="Item"/></th>
+ <th colspan="1" width="15%"><s:message code="label.quantity" text="Quantity"/></th>
+ <th width="15%"><s:message code="label.order.price" text="Price"/></th>
+ <th width="15%"><s:message code="label.order.total" text="Total"/></th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <c:forEach items="${order.order.orderProducts}" var="orderProduct" varStatus="counter">
+ <c:set var="total" value="${orderProduct.oneTimeCharge * orderProduct.productQuantity }" />
+
+ <tr>
+ <td colspan="2"> <c:out value="${orderProduct.productName}" /></td>
+ <td ><c:out value="${orderProduct.productQuantity}" /></td>
+ <td><strong><sm:monetary value="${orderProduct.oneTimeCharge}" currency="${order.order.currency}"/></strong> </td>
+ <td><strong><sm:monetary value="${total}" currency="${order.order.currency}"/></strong></td>
+ </tr>
+
+ </c:forEach>
+
+ <c:forEach items="${order.order.orderTotal}" var="orderTotal" varStatus="counter">
+ <tr class="subt">
+ <td colspan="2"> </td>
+ <td colspan="2" ><c:if test="${orderTotal.orderTotalCode=='refund'}"><font color="red"></c:if><s:message code="${orderTotal.orderTotalCode}" text="${orderTotal.orderTotalCode}"/><c:if test="${orderTotal.orderTotalCode=='refund'}"></font></c:if></td>
+ <td ><strong><c:if test="${orderTotal.orderTotalCode=='refund'}"><font color="red"></c:if><sm:monetary value="${orderTotal.value}" currency="${order.order.currency}"/><c:if test="${orderTotal.orderTotalCode=='refund'}"></font></c:if></strong></td>
+ </tr>
+ </c:forEach>
+ </tbody>
+ </table>
+ </div>
+
+ <br/>
+ <div class="span8">
+ <div class="control-group">
+ <label><s:message code="label.entity.status" text="Status"/></label>
+ <div class="controls">
+ <form:select path="order.status">
+ <form:options items="${orderStatusList}" />
+ </form:select>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.order.history" text="History"/></label>
+ <div class="controls">
+ <dl class="dl-horizontal">
+ <c:forEach items="${order.order.orderHistory}" var="orderHistory" varStatus="counter">
+ <c:if test="${orderHistory.comments!=null}">
+ <dd><fmt:formatDate type="both" dateStyle="long" value="${orderHistory.dateAdded}" /> - <c:out value="${orderHistory.comments}"/>
+ </c:if>
+ </c:forEach>
+ </dl>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.entity.status" text="Status"/></label>
+ <div class="controls">
+ <form:textarea cols="10" rows="3" path="orderHistoryComment"/>
+ </div>
+ </div>
+
+ <div class="form-actions">
+ <button type="submit" class="btn btn-medium btn-primary" ><s:message code="button.label.save" text="Save"/></button>
+ </div>
+ </div>
+ <br/>
+
+ </div>
+
+ </form:form>
+
+ </div>
+ </div>
+ </div>
+
+
+
+
+<div id="transactionsModal" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="width:900px;z-index:500000;">
+ <div class="modal-header">
+ <button type="button" class="close close-modal" data-dismiss="modal" aria-hidden="true">X</button>
+ <h3 id="myModalLabel"><s:message code="label.order.transactions" text="List of transactions" /></h3>
+ </div>
+ <div class="modal-body">
+ <p>
+ <table class="table table-hover" style="font-size:10px;">
+ <thead>
+ <tr>
+ <th><s:message code="label.entity.id" text="Id" /></th>
+ <th><s:message code="label.generic.date" text="Date" /></th>
+ <th><s:message code="label.entity.type" text="Type" /></th>
+ <th><s:message code="label.entity.amount" text="Amount" /></th>
+ <th><s:message code="label.entity.details" text="Details" /></th>
+ </tr>
+ </thead>
+ <tbody id="transactionList">
+ </tbody>
+ </table>
+ </p>
+
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary" id="closeModal" data-dismiss="modal" aria-hidden="true"><s:message code="button.label.close" text="Close" /></button>
+ </div>
+</div>
+
+<div id="refundModal" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="z-index:500000;">
+ <div class="modal-header">
+ <button type="button" class="close close-modal" data-dismiss="modal" aria-hidden="true">X</button>
+ <h3 id="myModalLabel"><s:message code="label.order.refund" text="Apply refund"/> -
+ <s:message code="label.order.id2" text="Order ID"/>
+ <c:out value="${order.order.id}" />
+ </h3>
+ </div>
+ <div class="modal-body">
+
+ <div id="store.success" class="alert alert-success alert-success-modal" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <div id="store.error" class="alert alert-error alert-error-modal" style="display:none;"><s:message code="message.error" text="An error occured"/></div>
+
+ <p>
+ <s:message code="label.order.total" text="Total" />: <strong><c:out value="${order.order.total}"/></strong>
+ <span id="refundMessage" style="display:none;"><s:message code="" text=""/><span id="refundAmount"></span></span>
+ </p>
+ <p>
+ <form id="refund" class="form-inline">
+ <label><s:message code="label.generic.amount" text="Amount" /></label> <input type="text" id="amount" name="amount" class="input-small" placeholder="<s:message code="label.generic.amount" text="Amount" />">
+ <input name="orderId" id="orderId" type="hidden" value="<c:out value="${order.id}"/>">
+ <button id="refundButton" type="submit" class="btn btn-danger"><s:message code="label.order.refund" text="Apply refund"/></button>
+ </form>
+
+ </p>
+
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary close-modal" id="closeModal" data-dismiss="modal" aria-hidden="true"><s:message code="button.label.close" text="Close" /></button>
+ </div>
+</div>
+
+
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/orders/orders.jsp b/sm-shop/src/main/webapp/pages/admin/orders/orders.jsp
new file mode 100755
index 0000000..28ddebd
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/orders/orders.jsp
@@ -0,0 +1,59 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.order.title" text="Orders" /></h3>
+ <br/>
+
+
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/orders/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/orders/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/orders/editOrder.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/orders/list.html" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="orderId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.order.title" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/orders/orders-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="false" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/orders/orders-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/orders/orders-gridHeader.jsp
new file mode 100644
index 0000000..94864f2
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/orders/orders-gridHeader.jsp
@@ -0,0 +1,16 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"orderId", canFilter:false},
+ {title:"<s:message code="label.customer.name" text="Customer name"/>", name:"customer"},
+ {title:"<s:message code="label.order.total" text="Total"/>", name:"amount", canFilter:false},
+ {title:"<s:message code="label.order.date" text="Date"/>", name:"date", canFilter:false},
+ {title:"<s:message code="label.entity.status" text="Status"/>", name:"status", canFilter:false},
+ {title:"<s:message code="label.order.module" text="Payment module"/>", name:"paymentModule"},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
+
diff --git a/sm-shop/src/main/webapp/pages/admin/orders/transactions.jsp b/sm-shop/src/main/webapp/pages/admin/orders/transactions.jsp
new file mode 100755
index 0000000..a895d63
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/orders/transactions.jsp
@@ -0,0 +1,54 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+<%@ page session="false" %>
+
+
+<link href="<c:url value="/resources/css/bootstrap/css/datepicker.css" />" rel="stylesheet"></link>
+<script src="<c:url value="/resources/js/bootstrap/bootstrap-datepicker.js" />"></script>
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+<script src="<c:url value="/resources/js/adminFunctions.js" />"></script>
+
+<script src="<c:url value="/resources/js/jquery.showLoading.min.js" />"></script>
+<link href="<c:url value="/resources/css/showLoading.css" />" rel="stylesheet">
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="order-section">
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <div class="control-group">
+ <div class="controls">
+ Transactions - <s:message code="label.order.id2" text="Order ID"/>
+ <c:out value="${order.order.id}" /><br>
+ </div>
+ </div>
+ </div>
+
+
+ </h3>
+ <br/>
+ <br/>
+
+ </div>
+ </div>
+ </div>
+
+</div>
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/payment/beanstream.jsp b/sm-shop/src/main/webapp/pages/admin/payment/beanstream.jsp
new file mode 100644
index 0000000..b0773a5
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/payment/beanstream.jsp
@@ -0,0 +1,55 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.payment.beanstream.merchantid" text="Merchant id"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['merchantid']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${merchantid!=null}">
+ <span id="identifiererrors" class="error"><s:message code="module.payment.beanstream.message.merchantid" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.payment.beanstream.username" text="Username"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['username']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${username!=null}">
+ <span id="usernameerrors" class="error"><s:message code="module.payment.beanstream.message.username" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.payment.beanstream.password" text="Password"/></label>
+ <div class="controls">
+ <form:password cssClass="input-large highlight" path="integrationKeys['password']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${password!=null}">
+ <span id="passworderrors" class="error"><s:message code="module.payment.beanstream.message.password" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.payment.transactiontype" text="Transaction type"/></label>
+ <div class="controls">
+ <form:radiobutton cssClass="input-large highlight" path="integrationKeys['transaction']" value="AUTHORIZE" /> <s:message code="module.payment.transactiontype.preauth" text="Pre-authorization" /><br/>
+ <form:radiobutton cssClass="input-large highlight" path="integrationKeys['transaction']" value="AUTHORIZECAPTURE" /> <s:message code="module.payment.transactiontype.sale" text="Sale" /></br>
+ </div>
+ </div>
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/payment/moneyorder.jsp b/sm-shop/src/main/webapp/pages/admin/payment/moneyorder.jsp
new file mode 100644
index 0000000..74d5aa8
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/payment/moneyorder.jsp
@@ -0,0 +1,65 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+
+
+
+
+ <div class="control-group">
+ <label class="required"><strong><s:message code="module.payment.moneyorder.adress" text="Cheque must be made to this address"/></strong></label>
+ <div class="controls">
+ <span class="help-inline">
+ <c:if test="${address!=null}">
+ <span id="identifiererrors" class="error"><s:message code="module.payment.moneyorder.message.address" text="Field in error"/></span>
+ </c:if>
+ </span>
+ <br/>
+
+ <textarea cols="30" id="integrationKeys['address']" name="integrationKeys['address']">
+ <c:out value="${configuration.integrationKeys['address']}"/>
+ </textarea>
+
+ <script type="text/javascript">
+ //<![CDATA[
+
+ CKEDITOR.replace("integrationKeys['address']",
+ {
+ skin : 'office2003',
+ toolbar :
+ [
+ ['Source','-','Save','NewPage','Preview'],
+ ['Cut','Copy','Paste','PasteText','-','Print'],
+ ['Undo','Redo','-','Find','-','SelectAll','RemoveFormat'], '/',
+ ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
+ ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+ ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
+ ['Link','Unlink','Anchor'],
+ ['Image','Flash','Table','HorizontalRule','SpecialChar','PageBreak'], '/',
+ ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'],
+ ['Maximize', 'ShowBlocks']
+ ],
+
+ filebrowserWindowWidth : '720',
+ filebrowserWindowHeight : '740',
+ filebrowserImageBrowseUrl : '<c:url value="/admin/content/fileBrowser.html"/>'
+
+
+ });
+
+ //]]>
+ </script>
+
+
+ </div>
+
+ </div>
+
+
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/payment/paymentMethod.jsp b/sm-shop/src/main/webapp/pages/admin/payment/paymentMethod.jsp
new file mode 100644
index 0000000..49a0295
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/payment/paymentMethod.jsp
@@ -0,0 +1,122 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="payment-method">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.payment.module.title" text="Payment method" /> - <s:message code="module.payment.${configuration.moduleCode}" text="No label found - ${configuration.moduleCode}"/></h3>
+ <br/>
+
+
+
+
+ <p><s:message code="module.payment.${configuration.moduleCode}.note" text=""/></p><br/>
+
+ <c:url var="savePaymentMethod" value="/admin/payments/savePaymentMethod.html"/>
+
+
+ <form:form method="POST" commandName="configuration" action="${savePaymentMethod}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.entity.enabled" text="Module enabled"/></label>
+ <div class="controls">
+ <form:checkbox path="active" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.generic.default" text="Default"/></label>
+ <div class="controls">
+ <form:checkbox path="defaultSelected" />
+ </div>
+ </div>
+
+ <div class="controls">
+ <label><s:message code="label.generic.environment" text="Environment"/></label>
+ <div class="controls">
+ <form:select path="environment">
+ <form:options items="${environments}" />
+ </form:select>
+ </div>
+ <span class="help-inline"><form:errors path="environment" cssClass="error" /></span>
+ </div>
+
+
+ <c:if test="${customConfiguration==null}">
+ <jsp:include page="/pages/admin/payment/${configuration.moduleCode}.jsp"></jsp:include>
+ </c:if>
+
+
+ <form:hidden path="moduleCode" />
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+
+ </form:form>
+
+
+
+ <c:if test="${customConfiguration!=null}">
+ <jsp:include page="/pages/admin/payments/${configuration.moduleCode}.jsp"></jsp:include>
+ </c:if>
+
+
+ <c:if test="${configuration.active && validationError==null}">
+ <c:url var="removeModule" value="/admin/payments/deletePaymentMethod.html"/>
+ <form:form method="POST" enctype="multipart/form-data" commandName="code" action="${removeModule}">
+ <input type="hidden" name="code" value="${configuration.moduleCode}" />
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn-danger"><i class="icon-trash icon-large"></i><s:message code="label.generic.remove" text="Remove"/></button>
+ </div>
+ </div>
+
+ </form:form>
+ </c:if>
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/payment/paymentMethods.jsp b/sm-shop/src/main/webapp/pages/admin/payment/paymentMethods.jsp
new file mode 100644
index 0000000..c991e18
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/payment/paymentMethods.jsp
@@ -0,0 +1,107 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="payment-methods">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.payment.title" text="Payment configuration" /></h3>
+ <br/>
+
+
+
+
+
+
+ <c:url var="savePaymentMethods" value="/admin/payments/savePaymentMethods.html"/>
+ <form:form method="POST" commandName="configuration" action="${savePaymentMethods}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <table class="table table-hover">
+
+ <c:forEach items="${modules}" var="module">
+
+
+ <tr>
+ <td>
+ <c:choose>
+ <c:when test="${configuredModules[module.code]!=null && configuredModules[module.code].active==true}">
+ <img src="<c:url value="/resources/img/icon_green_on.gif"/>" width="12">
+ </c:when>
+ <c:otherwise>
+ <img src="<c:url value="/resources/img/icon_red_on.gif"/>" width="12">
+ </c:otherwise>
+ </c:choose>
+ </td>
+ <td>
+ <label>
+ <c:choose>
+ <c:when test="${module.customModule==true}">
+ <a href="<c:url value="/admin/payments/${module.code}.html"/>"><s:message code="module.payment.${module.code}" text="No label found - ${module.code}"/></a>
+ </c:when>
+ <c:otherwise>
+ <a href="<c:url value="/admin/payments/paymentMethod.html?code="/><c:out value="${module.code}"/>"><s:message code="module.payment.${module.code}" text="No label found - ${module.code}"/></a>
+ </c:otherwise>
+ </c:choose>
+ </label>
+ </td>
+ <td>
+ <c:if test="${module.image!=null}">
+ <img src="<c:url value="/resources/img/payment/${module.image}"/>">
+ </c:if>
+ </td>
+ </tr>
+
+
+ </c:forEach>
+ </table>
+
+ </div>
+
+ </form:form>
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/payment/paypal.jsp b/sm-shop/src/main/webapp/pages/admin/payment/paypal.jsp
new file mode 100644
index 0000000..c0c1c2f
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/payment/paypal.jsp
@@ -0,0 +1,44 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="module,payment.paypal.clientId" text="Paypal client id"/></label>
+ <div class="controls">
+ <form:input cssClass="input-xxlarge highlight" path="integrationKeys['client']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${client!=null}">
+ <span id="identifiererrors" class="error"><s:message code="module.payment.paypal.message.clientId" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module,payment.paypal.secret" text="PayPal Secret"/></label>
+ <div class="controls">
+ <form:input cssClass="input-xxlarge highlight" path="integrationKeys['secret']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${secret!=null}">
+ <span id="apikeyerrors" class="error"><s:message code="module.payment.paypal.message.secret" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.payment.transactiontype" text="Transaction type"/></label>
+ <div class="controls">
+ <form:radiobutton cssClass="input-large highlight" path="integrationKeys['transaction']" value="AUTHORIZE" /> <s:message code="module.payment.transactiontype.preauth" text="Pre-authorization" /><br/>
+ <form:radiobutton cssClass="input-large highlight" path="integrationKeys['transaction']" value="AUTHORIZECAPTURE" /> <s:message code="module.payment.transactiontype.sale" text="Sale" /></br>
+ </div>
+ </div>
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/payment/paypal-express-checkout.jsp b/sm-shop/src/main/webapp/pages/admin/payment/paypal-express-checkout.jsp
new file mode 100644
index 0000000..e1f630e
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/payment/paypal-express-checkout.jsp
@@ -0,0 +1,55 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.payment.paypal-express-checkout.userid" text="Paypal API user name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['username']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${username!=null}">
+ <span id="identifiererrors" class="error"><s:message code="module.payment.paypal.message.identifier" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.payment.paypal-express-checkout.apikey" text="Paypal API password"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['api']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${api!=null}">
+ <span id="apikeyerrors" class="error"><s:message code="module.payment.paypal.message.api" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.payment.paypal-express-checkout.signature" text="Paypal API signature"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['signature']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${signature!=null}">
+ <span id="apisignatureerrors" class="error"><s:message code="module.payment.paypal.message.signature" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.payment.transactiontype" text="Transaction type"/></label>
+ <div class="controls">
+ <form:radiobutton cssClass="input-large highlight" path="integrationKeys['transaction']" value="AUTHORIZE" /> <s:message code="module.payment.transactiontype.preauth" text="Pre-authorization" /><br/>
+ <form:radiobutton cssClass="input-large highlight" path="integrationKeys['transaction']" value="AUTHORIZECAPTURE" /> <s:message code="module.payment.transactiontype.sale" text="Sale" /></br>
+ </div>
+ </div>
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/attribute.jsp b/sm-shop/src/main/webapp/pages/admin/products/attribute.jsp
new file mode 100644
index 0000000..81af97c
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/attribute.jsp
@@ -0,0 +1,264 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+<script type="text/javascript">
+var priceFormatMessage = '<s:message code="message.price.cents" text="Wrong format" />';
+</script>
+
+<script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+<script src="<c:url value="/resources/js/adminFunctions.js" />"></script>
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+ $('#productPriceAmount').numeric({allow:"."});
+ $('#order').numeric();
+ $('#weight').numeric({allow:"."});
+ $("#productOption").change(function() {
+ if($('#displayOnly').attr('checked')) {
+ checkReadOnlyAttribute($(this).val());
+ }
+ })
+
+ var optionId = $('#productOption').find(":selected").val();
+ checkReadOnlyAttribute(optionId);
+
+ $( "#productOption" ).change(function() {
+ checkReadOnlyAttribute($(this).val());
+ });
+
+
+});
+
+function checkReadOnlyAttribute(optionId){
+ //$('#displayOnly').removeAttr("disabled");
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/products/attributes/getAttributeType.html"/>',
+ data: 'optionId=' + optionId,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ var type = isc.XMLTools.selectObjects(response, "/response/data/type");
+ if(type=='text') {
+ //$('#displayOnly').prop("checked", true);
+ //$('#displayOnly').attr("disabled", true);
+ $("#attributeValueText").show();
+ $("#optionValue").hide();
+ } else {
+ $("#attributeValueText").hide();
+ $("#optionValue").show();
+ }
+
+ } else {
+
+ //display message
+ $(".alert-error").show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+}
+
+
+</script>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+
+ <h3>
+ <s:message code="label.product.attribute" text="Attribute" />
+ </h3>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+
+
+ <br/><br/>
+
+
+
+
+ <c:url var="attributeSave" value="/admin/attributes/attribute/save.html"/>
+
+
+ <form:form method="POST" commandName="attribute" action="${attributeSave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.attribute.option.name" text="Option / attribute name"/></label>
+ <div class="controls">
+ <div class="controls">
+ <form:select cssClass="highlight" id="productOption" path="productOption.id">
+ <form:options items="${options}" itemValue="id" itemLabel="descriptionsSettoList[0].name"/>
+ </form:select>
+ <span class="help-inline"><form:errors path="productOption.id" cssClass="error" /></span>
+ </div>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.product.attribute.display" text="Display only"/></label>
+ <div class="controls">
+ <form:checkbox id="displayOnly" path="attributeDisplayOnly"/>
+ <span class="help-inline"><form:errors path="attributeDisplayOnly" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group" id="optionValue" style="display:<c:choose><c:when test="${attribute.productOption.productOptionType=='text'}">none;</c:when><c:otherwise>block;</c:otherwise></c:choose>">
+ <label><s:message code="label.product.productoptiosvalue.title" text="Option value name"/></label>
+ <div class="controls">
+ <div class="controls">
+ <form:select cssClass="highlight" path="productOptionValue.id">
+ <form:options items="${optionsValues}" itemValue="id" itemLabel="descriptionsSettoList[0].name"/>
+ </form:select>
+ <span class="help-inline"><form:errors path="productOptionValue.id" cssClass="error" /></span>
+ </div>
+ </div>
+ </div>
+
+
+ <div class="control-group" id="attributeValueText" style="display:<c:choose><c:when test="${attribute.productOption.productOptionType=='text'}">block;</c:when><c:otherwise>none;</c:otherwise></c:choose>">
+ <c:forEach items="${attribute.productOptionValue.descriptionsSettoList}" var="description" varStatus="counter">
+
+
+ <label class="required"><s:message code="label.product.attribute.value" text="Attribute value"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-xlarge" id="name${counter.index}" path="productOptionValue.descriptionsList[${counter.index}].description"/>
+ <span class="help-inline"><form:errors path="productOptionValue.descriptionsList[${counter.index}].description" cssClass="error" /></span>
+ </div>
+
+ <form:hidden path="productOptionValue.descriptionsList[${counter.index}].language.code" />
+ <form:hidden path="productOptionValue.descriptionsList[${counter.index}].language.id" />
+ <form:hidden path="productOptionValue.descriptionsList[${counter.index}].id" />
+ <form:hidden path="productOptionValue.id" />
+ <form:hidden path="productOptionValue.code" />
+
+ </c:forEach>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.productoptions.price" text="Price"/></label>
+ <div class="controls">
+ <form:input id="productPriceAmount" cssClass="highlight" path="attributePrice"/>
+ <span id="help-price" class="help-inline"><form:errors path="attributePrice" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.entity.order" text="Order"/></label>
+ <div class="controls">
+ <form:input id="order" cssClass="highlight" path="attributeSortOrder"/>
+ <span class="help-inline"><form:errors path="attributeSortOrder" cssClass="error" /></span>
+
+ </div>
+ </div>
+
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.attribute.default" text="Default"/></label>
+ <div class="controls">
+ <form:checkbox path="attributeDefault"/>
+ <span class="help-inline"><form:errors path="attributeDefault" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.product.attribute.required" text="Required"/></label>
+ <div class="controls">
+ <form:checkbox path="attributeRequired"/>
+ <span class="help-inline"><form:errors path="attributeRequired" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.product.attribute.otherweight" text="Additional weight"/></label>
+ <div class="controls">
+ <form:input id="weight" cssClass="highlight" path="attributeAdditionalWeight"/>
+ <span class="help-inline"><form:errors path="attributeAdditionalWeight" cssClass="error" /></span>
+
+ </div>
+ </div>
+
+
+
+ <form:hidden path="id" />
+ <form:hidden path="product.id" />
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+
+
+ </div>
+
+ </div>
+
+ </form:form>
+
+
+ <br/>
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/attributes.jsp b/sm-shop/src/main/webapp/pages/admin/products/attributes.jsp
new file mode 100644
index 0000000..8baf59f
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/attributes.jsp
@@ -0,0 +1,74 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+
+
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+ <h3><s:message code="label.product.attributes" text="Product attributes" /></h3>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+
+ <br/>
+ <a href="<c:url value="/admin/products/attribute/createAttribute.html?productId=${product.id}"/>"><s:message code="label.product.attribute.create" text="Create product attribute" /></a>
+ <br/><br/>
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/products/attributes/page.html?productId=${product.id}" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/attributes/attribute/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/products/attributes/editAttribute.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/products/attributes/list.html?id=${product.id}" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="attributeId" scope="request"/>
+ <c:set var="appendQueryStringToEdit" value="productId=${product.id}" scope="request"/>
+ <c:set var="groupByEntity" value="attribute" scope="request"/>
+ <c:set var="componentTitleKey" value="label.product.attributes" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/products/attributes-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/attributes-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/attributes-gridHeader.jsp
new file mode 100644
index 0000000..e71966f
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/attributes-gridHeader.jsp
@@ -0,0 +1,15 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"attributeId", canFilter:false},
+ {title:"<s:message code="label.product.productoptions.name" text="Attribute / option name"/>", name:"attribute", canFilter:false},
+ {title:"<s:message code="label.product.productoptiosvalue.title" text="Option value"/>", name:"value", canFilter:false},
+ {title:"<s:message code="label.generic.displayonly" text="Display only"/>", name:"display", type:"boolean", canFilter:false},
+ {title:"<s:message code="label.generic.price" text="Price"/>", name:"price", canFilter:false},
+ {title:"<s:message code="label.entity.order" text="Order"/>", name:"order", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/customProductGroup.jsp b/sm-shop/src/main/webapp/pages/admin/products/customProductGroup.jsp
new file mode 100644
index 0000000..238060b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/customProductGroup.jsp
@@ -0,0 +1,100 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+
+
+ <h3>
+ <s:message code="label.product.customgroup.add" text="Add custom group" />
+ </h3>
+
+
+
+ <br/><br/>
+
+
+ <c:url var="saveProductGrop" value="/admin/products/groups/save.html"/>
+
+
+ <form:form method="POST" commandName="group" action="${saveProductGrop}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.product.customgroup.code" text="Custom product group code"/></label>
+ <div class="controls">
+ <form:input id="code" cssClass="highlight" path="code"/>
+ <span id="help-price" class="help-inline"><form:errors path="code" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+
+ </div>
+ </div>
+
+ </form:form>
+
+
+ <br/>
+
+ <!-- Listing grid include -->
+
+ <c:set value="/admin/products/groups/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/products/groups/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/products/groups/update.html" var="updateUrl" scope="request"/>
+ <c:set value="/admin/products/group/edit.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/products/groups/list.html" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="code" scope="request"/>
+ <c:set var="componentTitleKey" value="menu.catalogue-products-custom-group" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/products/customProductGroup-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/customProductGroupDetails.jsp b/sm-shop/src/main/webapp/pages/admin/products/customProductGroupDetails.jsp
new file mode 100644
index 0000000..452698a
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/customProductGroupDetails.jsp
@@ -0,0 +1,74 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+
+
+ <div class="sm-ui-component">
+
+ <h3>
+ <c:out value="${group}"/>
+ </h3>
+ <br/>
+ <div class="alert alert-info">
+ <s:message code="label.product.group.meassage" text="Drag and drop product from product list to the product group box"/>
+ </div>
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/products/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/products/group/details/paging.html?code=${group}" var="containerFetchUrl" scope="request"/>
+ <c:set value="/admin/products/group/details/removeItem.html?code=${group}" var="containerRemoveUrl" scope="request"/>
+ <c:set value="/admin/products/group/details/addItem.html?code=${group}" var="containerAddUrl" scope="request"/>
+ <c:set value="/admin/products/group/details/update.html" var="containerUpdateUrl" scope="request"/>
+ <c:set value="/admin/products/editProduct.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/products/group/edit.html?code=${group}" var="reloadUrl" scope="request"/>
+ <c:set var="componentTitleKey" value="label.product.customGroup.title" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/products/featured-gridHeader.jsp" scope="request"/>
+ <c:set var="gridHeaderContainer" value="/pages/admin/products/product-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/product-container.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/customProductGroup-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/customProductGroup-gridHeader.jsp
new file mode 100644
index 0000000..e79b841
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/customProductGroup-gridHeader.jsp
@@ -0,0 +1,12 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+ {title:"<s:message code="label.entity.code" text="Code"/>", name:"code", canFilter:false},
+ {title:"<s:message code="label.entity.enabled" text="Enabled"/>", name:"active", type:"boolean", canEdit:true, canFilter:true},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/products/digitalProduct.jsp b/sm-shop/src/main/webapp/pages/admin/products/digitalProduct.jsp
new file mode 100644
index 0000000..7cb62b9
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/digitalProduct.jsp
@@ -0,0 +1,122 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@ page session="false"%>
+
+
+
+<script type="text/javascript">
+
+ function removeFile(fileId){
+ $("#store.error").show();
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/products/product/removeDigitalProduct.html"/>?fileId=' + fileId,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ //remove delete
+ $("#productControlRemove").html('');
+ $("#fileLink").hide();
+ //add field
+ $("#fileControl").html('<input class=\"input-file\" id=\"file\" name=\"file\" type=\"file\">');
+ $(".alert-success").show();
+
+ } else {
+
+ //display message
+ $(".alert-error").show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+ }
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+ <h3>
+ <s:message code="label.product.digitalproduct" text="Digital product"/>
+ </h3>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+
+
+ <br/><br/>
+
+ <c:url var="saveProductFile" value="/admin/products/product/saveDigitalProduct.html" />
+ <form:form method="POST" enctype="multipart/form-data" commandName="productFiles" action="${saveProductFile}">
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success"
+ style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.success" text="Request successfull" />
+ </div>
+ <input type="hidden" name="product.id" value="${product.id}" />
+
+
+
+ <!-- hidden when creating the product -->
+ <div class="control-group">
+ <label>
+ <s:message code="label.product.digitalproduct" text="Digital product"/>
+ <c:if test="${digitalProduct!=null}"><span id="productControlRemove"> - <a href="#" onClick="removeFile('${digitalProduct.id}')"><s:message code="label.generic.remove" text="Remove"/></a></span></c:if>
+ </label>
+ <div class="controls" id="fileControl">
+
+ <c:choose>
+ <c:when test="${digitalProduct==null}">
+ <input class="input-file" id="file" name="file" type="file" multiple="multiple">
+ <br/>
+ </c:when>
+ <c:otherwise>
+ <a id="fileLink" href="<sm:adminProductDownload digitalProduct="${digitalProduct}" />">${digitalProduct.productFileName}</a>
+ </c:otherwise>
+ </c:choose>
+
+ </div>
+ </div>
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success">
+ <s:message code="button.label.submit2" text="Submit" />
+ </button>
+ </div>
+ </div>
+ </form:form>
+ </div>
+ </div>
+ </div>
+
+
+
+
+
+
+
+
diff --git a/sm-shop/src/main/webapp/pages/admin/products/featured.jsp b/sm-shop/src/main/webapp/pages/admin/products/featured.jsp
new file mode 100755
index 0000000..d9c8989
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/featured.jsp
@@ -0,0 +1,75 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+
+
+ <div class="sm-ui-component">
+
+ <h3>
+ <s:message code="menu.catalogue-featured" text="Featured items" />
+ </h3>
+ <br/>
+ <div class="alert alert-info">
+ <s:message code="label.product.featured.meassage" text="Drag and drop product from product list to featured items box"/>
+ </div>
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/products/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/catalogue/featured/paging.html" var="containerFetchUrl" scope="request"/>
+ <c:set value="/admin/catalogue/featured/removeItem.html" var="containerRemoveUrl" scope="request"/>
+ <c:set value="FEATURED" var="removeEntity" scope="request"/>
+ <c:set value="/admin/catalogue/featured/addItem.html" var="containerAddUrl" scope="request"/>
+ <c:set value="/admin/catalogue/featured/update.html" var="containerUpdateUrl" scope="request"/>
+ <c:set value="/admin/products/editProduct.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/catalogue/featured/list.html" var="reloadUrl" scope="request"/>
+ <c:set var="componentTitleKey" value="menu.catalogue-featured" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/products/featured-gridHeader.jsp" scope="request"/>
+ <c:set var="gridHeaderContainer" value="/pages/admin/products/product-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/product-container.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/featured-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/featured-gridHeader.jsp
new file mode 100755
index 0000000..33c50a2
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/featured-gridHeader.jsp
@@ -0,0 +1,13 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"productId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name"},
+ {title:"<s:message code="label.product.sku" text="Sku"/>", name:"sku"},
+ {title:"<s:message code="label.product.available" text="Available"/>", name:"available",type:"boolean"},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/products/keywords.jsp b/sm-shop/src/main/webapp/pages/admin/products/keywords.jsp
new file mode 100644
index 0000000..8fc3456
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/keywords.jsp
@@ -0,0 +1,86 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+<div class="tabbable">
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="catalogue-section">
+ <div class="sm-ui-component">
+
+
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+
+ <h3>
+ <s:message code="label.product.searchkeywords" text="Search keywords" />
+ </h3>
+
+
+
+ <c:url var="addKeyword" value="/admin/products/product/addKeyword.html" />
+ <form:form method="POST" enctype="multipart/form-data" commandName="productKeyword" action="${addKeyword}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.success" text="Request successfull" />
+ </div>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+ <br/><br/>
+
+ <div class="control-group">
+ <label><s:message code="label.generic.language" text="Language"/></label>
+ <div class="controls">
+ <form:select path="languageCode">
+ <form:options items="${store.languages}" itemValue="code" itemLabel="code"/>
+ </form:select>
+ <span class="help-inline"><form:errors path="languageCode" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.generic.keyword" text="Keyword"/></label>
+ <div class="controls">
+ <form:input id="keyword" cssClass="highlight" path="keyword"/>
+ <span class="help-inline"><form:errors path="keyword" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <input type="hidden" name="productId" value="${product.id}">
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="label.generic.add" text="Add"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+ <br/>
+ <!-- Listing grid include -->
+
+ <c:set value="/admin/products/product/keywords/paging.html?id=${product.id}" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/products/product/removeKeyword.html?id=${product.id}" var="removeUrl" scope="request"/>
+ <c:set value="/admin/products/product/keywords.html?id=${product.id}" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="code" scope="request"/>
+ <c:set var="componentTitleKey" value="label.product.searchkeywords" scope="request"/>
+ <c:set var="groupByEntity" value="language" scope="request" />
+ <c:set var="gridHeader" value="/pages/admin/products/keywords-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+ <c:set var="canEdit" value="false" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/keywords-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/keywords-gridHeader.jsp
new file mode 100644
index 0000000..0797f65
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/keywords-gridHeader.jsp
@@ -0,0 +1,11 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"code", canFilter:false},
+ {title:"<s:message code="label.generic.language" text="Language"/>", name:"language"},
+ {title:"<s:message code="label.generic.keyword" text="Keyword"/>", name:"keyword"}
diff --git a/sm-shop/src/main/webapp/pages/admin/products/manufacturer.jsp b/sm-shop/src/main/webapp/pages/admin/products/manufacturer.jsp
new file mode 100644
index 0000000..397bbac
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/manufacturer.jsp
@@ -0,0 +1,196 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+
+<%@ page session="false" %>
+
+<link href="<c:url value="/resources/css/bootstrap/css/datepicker.css" />" rel="stylesheet"></link>
+<script src="<c:url value="/resources/js/bootstrap/bootstrap-datepicker.js" />"></script>
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+<script src="<c:url value="/resources/js/adminFunctions.js" />"></script>
+
+<script type="text/javascript">
+
+
+ $(function(){
+ $('#order').numeric();
+ });
+
+
+ function removeImage(imageId){
+ $("#store.error").show();
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/manufacturers/manufacturer/removeImage.html"/>',
+ data: 'imageId=' + imageId,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ //remove delete
+ $("#imageControlRemove").html('');
+ //add field
+ $("#imageControl").html('<input class=\"input-file\" id=\"image\" name=\"image\" type=\"file\">');
+ $(".alert-success").show();
+
+ } else {
+
+ //display message
+ $(".alert-error").show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+ }
+
+
+</script>
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+ <h3>
+ <c:choose>
+ <c:when test="${manufacturer.manufacturer.id!=null && manufacturer.manufacturer.id>0}">
+ <s:message code="label.manufacturer.edit" text="Edit Manufacturer" /> <c:out value="${product.product.sku}"/>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.manufacturer.create" text="Create a Manufacturer" />
+ </c:otherwise>
+ </c:choose>
+ </h3>
+ <br/><br/>
+
+ <c:url var="manufacturerSave" value="/admin/catalogue/manufacturer/save.html"/>
+
+ <form:form method="POST" commandName="manufacturer" action="${manufacturerSave}">
+
+ <form:hidden path="manufacturer.id" />
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <div id="store.error" class="alert alert-error" style="display:none;"><s:message code="message.error" text="An error occured"/></div>
+
+
+ <c:forEach items="${manufacturer.descriptions}" var="description" varStatus="counter">
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.manufactureredit.manufacturername" text="Manufacturer Name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" id="name${counter.index}" path="descriptions[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].name" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.manufactureredit.manufacturertitle" text="Manufacturer Title"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large" id="title${counter.index}" path="descriptions[${counter.index}].title"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].title" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.manufactureredit.manufacturerurl" text="URL"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large" id="url${counter.index}" path="descriptions[${counter.index}].url"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].url" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.manufactureredit.manufacturerdescription" text="Manufacturer Description"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+
+ <textarea cols="30" id="descriptions${counter.index}.description" name="descriptions[${counter.index}].description">
+ <c:out value="${manufacturer.descriptions[counter.index].description}"/>
+ </textarea>
+ </div>
+ <script type="text/javascript">
+ //<![CDATA[
+
+ CKEDITOR.replace('descriptions[${counter.index}].description',
+ {
+ skin : 'office2003',
+ toolbar :
+ [
+ ['Source','-','Save','NewPage','Preview'],
+ ['Cut','Copy','Paste','PasteText','-','Print'],
+ ['Undo','Redo','-','Find','-','SelectAll','RemoveFormat'], '/',
+ ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
+ ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+ ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
+ ['Link','Unlink','Anchor'],
+ ['Image','Flash','Table','HorizontalRule','SpecialChar','PageBreak'], '/',
+ ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'],
+ ['Maximize', 'ShowBlocks']
+ ],
+
+ filebrowserWindowWidth : '720',
+ filebrowserWindowHeight : '740',
+ filebrowserImageBrowseUrl : '<c:url value="/admin/content/fileBrowser.html"/>'
+
+
+ });
+
+ //]]>
+ </script>
+
+ </div>
+ <form:hidden path="descriptions[${counter.index}].language.id" />
+ <form:hidden path="descriptions[${counter.index}].language.code" />
+ <form:hidden path="descriptions[${counter.index}].id" />
+
+ </c:forEach>
+ <%--
+ <div class="control-group">
+ <label><s:message code="label.manufacturer.image" text="Image"/> <c:if test="${manufacturer.productImage.productImage!=null && manufacturer.productImage.productImage!=''}"><span id="imageControlRemove"> - <a href="#" onClick="removeImage('${manufacturer.productImage.id}')"><s:message code="label.generic.remove" text="Remove"/></a></span></c:if></label>
+ <div class="controls" id="imageControl">
+ <c:choose>
+ <c:when test="${manufacturer.productImage.productImage==null || manufacturer.productImage.productImage==''}">
+ <input class="input-file" id="image" name="image" type="file">
+ </c:when>
+ <c:otherwise>
+ <img src="<sm:manufacturerImage imageName="${manufacturer.productImage.productImage}" manufacturer="${manufacturer.manufacturer}"/>" width="200"/>
+ </c:otherwise>
+ </c:choose>
+ </div>
+ </div>
+ --%>
+ <div class="control-group">
+ <label><s:message code="label.manufactureredit.manufacturerorder" text="Order"/></label>
+ <div class="controls">
+ <form:input id="order" cssClass="input-large" path="order"/>
+ <span class="help-inline"><form:errors path="order" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit2" text="Submit"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+ </div>
+ </div>
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/manufacturers.jsp b/sm-shop/src/main/webapp/pages/admin/products/manufacturers.jsp
new file mode 100644
index 0000000..9a81a41
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/manufacturers.jsp
@@ -0,0 +1,62 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+
+ <h3>
+ <s:message code="menu.manufacturer-list" text="Manufacturers" />
+ </h3>
+ <br/>
+
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/catalogue/manufacturer/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/catalogue/manufacturer/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/catalogue/manufacturer/edit.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/catalogue/manufacturer/list.html" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="id" scope="request"/>
+ <c:set var="componentTitleKey" value="menu.manufacturer-list" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/products/manufacturers-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/manufacturers-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/manufacturers-gridHeader.jsp
new file mode 100644
index 0000000..6fccff1
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/manufacturers-gridHeader.jsp
@@ -0,0 +1,12 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"id", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"attribute", canFilter:false},
+ {title:"<s:message code="label.entity.order" text="Order"/>", name:"order", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/option.jsp b/sm-shop/src/main/webapp/pages/admin/products/option.jsp
new file mode 100644
index 0000000..d0d0e31
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/option.jsp
@@ -0,0 +1,138 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <s:message code="label.product.productoptions.title" text="Option management" />
+ </h3>
+
+
+ <h3>
+ <c:choose>
+ <c:when test="${option.id!=null && option.id>0}">
+ <s:message code="label.product.productoptions.edit.title" text="Edit option" />
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.product.productoptions.create.title" text="Create option" />
+ </c:otherwise>
+ </c:choose>
+
+ </h3>
+ <br/>
+
+ <c:url var="optionSave" value="/admin/options/save.html"/>
+
+
+ <form:form method="POST" commandName="option" action="${optionSave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.option.code" text="Option code"/></label>
+ <div class="controls">
+ <form:input cssClass="highlight" id="code" path="code"/>
+ <span class="help-inline"><form:errors path="code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <c:forEach items="${option.descriptionsSettoList}" var="description" varStatus="counter">
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.product.productoptions.name" text="Option name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input id="name${counter.index}" path="descriptionsList[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptionsList[${counter.index}].name" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+
+ <form:hidden path="descriptionsList[${counter.index}].language.code" />
+ <form:hidden path="descriptionsList[${counter.index}].id" />
+
+ </c:forEach>
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.productoptions.type" text="Option type"/></label>
+ <div class="controls">
+
+ <div class="controls">
+ <form:select path="productOptionType">
+ <s:message code="label.product.productoption.type.text" text="Text" var="vText" />
+ <s:message code="label.product.productoption.type.select" text="Select" var="vSelect"/>
+ <s:message code="label.product.productoption.type.radio" text="Radio" var="vRadio"/>
+ <s:message code="label.product.productoption.type.checkbox" text="Checkbox" var="vCheckbox"/>
+ <form:option value="text" label="${vText}" />
+ <form:option value="select" label="${vSelect}" />
+ <form:option value="radio" label="${vRadio}" />
+ <form:option value="checkbox" label="${vCheckbox}" />
+ </form:select>
+ <span class="help-inline"><form:errors path="productOptionType" cssClass="error" /></span>
+ </div>
+
+ </div>
+ </div>
+
+
+ <form:hidden path="id" />
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+
+
+ </div>
+
+ </div>
+
+ </form:form>
+
+
+ <br/>
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/options.jsp b/sm-shop/src/main/webapp/pages/admin/products/options.jsp
new file mode 100644
index 0000000..5863b2f
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/options.jsp
@@ -0,0 +1,62 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <s:message code="label.product.productoptions.title" text="Option management" />
+ </h3>
+ <br/>
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/options/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/options/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/options/editOption.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/options/options.html" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="optionId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.product.productoptions.list" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/products/options-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/options-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/options-gridHeader.jsp
new file mode 100755
index 0000000..1a5f6ef
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/options-gridHeader.jsp
@@ -0,0 +1,12 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"optionId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="label.entity.type" text="Type"/>", name:"type", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/optionsValues.jsp b/sm-shop/src/main/webapp/pages/admin/products/optionsValues.jsp
new file mode 100755
index 0000000..f2fc2c2
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/optionsValues.jsp
@@ -0,0 +1,64 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <s:message code="label.product.productoptionsvalues.title" text="Product options values" />
+ </h3>
+ <br/>
+
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/optionsvalues/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/optionsvalues/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/options/editOptionValue.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/options/optionvalues.html" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="optionValueId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.product.productoptionsvalues.list" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/products/optionsValues-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/optionsValues-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/optionsValues-gridHeader.jsp
new file mode 100755
index 0000000..6a0621c
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/optionsValues-gridHeader.jsp
@@ -0,0 +1,12 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"optionValueId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="label.product.image" text="Image"/>", name:"image", type:"image", imageWidth:75, imageURLPrefix:"<c:url value='/static/'/>", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/products/optionValue.jsp b/sm-shop/src/main/webapp/pages/admin/products/optionValue.jsp
new file mode 100755
index 0000000..4e2b55b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/optionValue.jsp
@@ -0,0 +1,135 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+<%@ page session="false" %>
+
+
+
+<script type="text/javascript">
+
+ function removeImage(id){
+ $("#store.error").show();
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/optionsvalues/removeImage.html"/>',
+ dataType: 'json',
+ data: 'optionId=' + id,
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ //remove delete
+ $("#imageControlRemove").html('');
+ //add field
+ $("#imageControl").html('<input class=\"input-file\" id=\"image\" name=\"image\" type=\"file\">');
+ $(".alert-success").show();
+
+ } else {
+
+ //display message
+ $(".alert-error").show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+ }
+
+</script>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="catalogue-section">
+ <div class="sm-ui-component">
+
+ <h3>
+ <c:choose>
+ <c:when test="${optionValue.id!=null && optionValue.id>0}">
+ <s:message code="label.product.productoptionvalue.edit.title" text="Edit option value" />
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.product.productoptionvalue.create.title" text="Create option value" />
+ </c:otherwise>
+ </c:choose>
+ </h3>
+ <br/>
+
+ <c:url var="optionSave" value="/admin/options/saveOptionValue.html"/>
+
+
+ <form:form method="POST" enctype="multipart/form-data" commandName="optionValue" action="${optionSave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.entity.code" text="Option value code"/></label>
+ <div class="controls">
+ <form:input cssClass="highlight" id="code" path="code"/>
+ <span class="help-inline"><form:errors path="code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <c:forEach items="${optionValue.descriptionsSettoList}" var="description" varStatus="counter">
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.product.productoptions.name" text="Option name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="highlight" id="name${counter.index}" path="descriptionsList[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptionsList[${counter.index}].name" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+
+ <form:hidden path="descriptionsList[${counter.index}].language.code" />
+ <form:hidden path="descriptionsList[${counter.index}].id" />
+
+ </c:forEach>
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.image" text="Image"/> <c:if test="${optionValue.productOptionValueImage!=null && optionValue.productOptionValueImage!=''}"><span id="imageControlRemove"> - <a href="#" onClick="removeImage('${optionValue.id}')"><s:message code="label.generic.remove" text="Remove"/></a></span></c:if></label>
+ <div class="controls" id="imageControl">
+ <c:choose>
+ <c:when test="${optionValue.productOptionValueImage==null || optionValue.productOptionValueImage==''}">
+ <input class="input-file" id="image" name="image" type="file">
+ </c:when>
+ <c:otherwise>
+ <img src="<sm:contentImage imageName="${optionValue.productOptionValueImage}" imageType="PROPERTY"/>" width="80">
+ </c:otherwise>
+ </c:choose>
+ </div>
+ </div>
+ <form:hidden path="productOptionValueImage" />
+ <form:hidden path="id" />
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+ <br/>
+
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/price.jsp b/sm-shop/src/main/webapp/pages/admin/products/price.jsp
new file mode 100644
index 0000000..6e3c174
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/price.jsp
@@ -0,0 +1,205 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+<script type="text/javascript">
+var priceFormatMessage = '<s:message code="message.price.cents" text="Wrong format" />';
+</script>
+
+<link href="<c:url value="/resources/css/bootstrap/css/datepicker.css" />" rel="stylesheet"></link>
+<script src="<c:url value="/resources/js/bootstrap/bootstrap-datepicker.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+<script src="<c:url value="/resources/js/adminFunctions.js" />"></script>
+
+
+<script type="text/javascript">
+ $(function(){
+
+ $('#productSpecialPriceAmount').blur(function() {
+ $('#help-price').html(null);
+ $(this).formatCurrency({ roundToDecimalPlace: 2, eventOnDecimalsEntered: true, symbol: ''});
+ })
+ .keyup(function(e) {
+ var e = window.event || e;
+ var keyUnicode = e.charCode || e.keyCode;
+ if (e !== undefined) {
+ switch (keyUnicode) {
+ case 16: break; // Shift
+ case 17: break; // Ctrl
+ case 18: break; // Alt
+ case 27: this.value = ''; break; // Esc: clear entry
+ case 35: break; // End
+ case 36: break; // Home
+ case 37: break; // cursor left
+ case 38: break; // cursor up
+ case 39: break; // cursor right
+ case 40: break; // cursor down
+ case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
+ case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
+ case 190: break; // .
+ default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, eventOnDecimalsEntered: true, symbol: ''});
+ }
+ }
+ })
+ .bind('decimalsEntered', function(e, cents) {
+ if (String(cents).length > 2) {
+ var errorMsg = priceFormatMessage + ' (0.' + cents + ')';
+ $('#help-special-price').html(errorMsg);
+ }
+ });
+
+ $('#productSpecialPriceAmount').numeric({allow:"."});
+
+
+ });
+
+</script>
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+
+ <h3>
+ <s:message code="label.product.price" text="Product price" />
+ </h3>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+
+
+ <br/><br/>
+
+
+ <c:url var="saveProductPrice" value="/admin/products/price/save.html"/>
+
+
+ <form:form method="POST" commandName="price" action="${saveProductPrice}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.product.price" text="Price"/></label>
+ <div class="controls">
+ <form:input id="productPriceAmount" cssClass="highlight" path="priceText"/>
+ <span id="help-price" class="help-inline"><form:errors path="priceText" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.price.default" text="Default price"/></label>
+ <div class="controls">
+ <form:checkbox path="price.defaultPrice" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.product.price.code" text="Product price code"/></label>
+ <div class="controls">
+ <form:input cssClass="highlight" path="price.code"/>
+ <span class="help-inline"><form:errors path="price.code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <c:forEach items="${price.descriptions}" var="description" varStatus="counter">
+
+ <div class="control-group">
+
+ <label class="required"><s:message code="label.product.price.name" text="Product price name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" id="name${counter.index}" path="descriptions[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].name" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <form:hidden path="descriptions[${counter.index}].language.id" />
+ <form:hidden path="descriptions[${counter.index}].language.code" />
+ <form:hidden path="descriptions[${counter.index}].id" />
+
+ </c:forEach>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.product.price.special" text="Special price"/></label>
+ <div class="controls">
+ <form:input id="productSpecialPriceAmount" cssClass="" path="specialPriceText"/>
+ <span id="help-special-price" class="help-inline"><form:errors path="specialPriceText" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.product.price.special.startdate" text="Special start date"/></label>
+ <div class="controls">
+ <input name="productPriceSpecialStartDate" id="productPriceSpecialStartDate" value="${price.price.productPriceSpecialStartDate}" class="small" type="text" data-datepicker="datepicker">
+ <span class="help-inline"><form:errors path="productPriceSpecialStartDate" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.price.special.enddate" text="Special end date"/></label>
+ <div class="controls">
+ <input name="productPriceSpecialEndDate" id="productPriceSpecialEndDate" value="${price.price.productPriceSpecialEndDate}" class="small" type="text" data-datepicker="datepicker">
+ <span class="help-inline"><form:errors path="productPriceSpecialEndDate" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <!-- default one time -->
+ <form:hidden path="price.productPriceType" />
+ <form:hidden path="price.id" />
+ <form:hidden path="productAvailability.region" />
+ <form:hidden path="productAvailability.id" />
+ <form:hidden path="product.id" />
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+
+ </div>
+ </div>
+
+ </form:form>
+
+
+ <br/>
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/prices.jsp b/sm-shop/src/main/webapp/pages/admin/products/prices.jsp
new file mode 100755
index 0000000..0642587
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/prices.jsp
@@ -0,0 +1,73 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+
+
+
+ <h3><s:message code="label.product.prices" text="Product prices" /></h3>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+
+ <br/>
+ <a href="<c:url value="/admin/products/price/create.html?productId=${product.id}&availabilityId=${availability.id}"/>"><s:message code="label.product.price.create" text="Create price" /></a>
+ <br/><br/>
+
+ <!-- Listing grid include -->
+
+ <c:set value="/admin/products/prices/paging.html?productId=${product.id}" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/products/price/remove.html?productId=${product.id}" var="removeUrl" scope="request"/>
+ <c:set value="/admin/products/price/edit.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/products/prices.html?id=${product.id}" var="afterRemoveUrl" scope="request"/>
+ <c:set var="entityId" value="priceId" scope="request"/>
+ <c:set var="appendQueryStringToEdit" value="productId=${product.id}" scope="request"/>
+ <c:set var="componentTitleKey" value="label.product.prices" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/products/prices-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/prices-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/prices-gridHeader.jsp
new file mode 100755
index 0000000..ff13e30
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/prices-gridHeader.jsp
@@ -0,0 +1,13 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"priceId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="label.product.price" text="Price"/>", name:"price", canFiler:false},
+ {title:"<s:message code="label.product.price.special" text="Special price"/>", name:"specialPrice", canFiler:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/products/product.jsp b/sm-shop/src/main/webapp/pages/admin/products/product.jsp
new file mode 100644
index 0000000..51a9148
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/product.jsp
@@ -0,0 +1,467 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@ page session="false" %>
+<script type="text/javascript">
+var priceFormatMessage = '<s:message code="message.price.cents" text="Wrong format" />';
+</script>
+
+ <link href="<c:url value="/resources/css/bootstrap/css/datepicker.css" />" rel="stylesheet"></link>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-datepicker.js" />"></script>
+ <script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+ <script src="<c:url value="/resources/js/adminFunctions.js" />"></script>
+
+
+
+<script type="text/javascript">
+
+
+ $(function(){
+ $('#sku').alphanumeric();
+ $('#productPriceAmount').numeric({allow:"."});
+ $('#quantity').numeric();
+ $('#ordermin').numeric();
+ $('#ordermax').numeric();
+ $('#order').numeric();
+ $('#weight').numeric({allow:"."});
+ $('#width').numeric({allow:"."});
+ $('#length').numeric({allow:"."});
+ $('#hight').numeric({allow:"."});
+ <c:forEach items="${product.descriptions}" var="description" varStatus="counter">
+ $("#name${counter.index}").friendurl({id : 'seUrl${counter.index}'});
+ </c:forEach>
+ });
+
+
+ function removeImage(imageId){
+ $("#store.error").show();
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/products/product/removeImage.html"/>',
+ data: 'imageId=' + imageId,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ //remove delete
+ $("#imageControlRemove").html('');
+ //add field
+ $("#imageControl").html('<input class=\"input-file\" id=\"image\" name=\"image\" type=\"file\">');
+ $(".alert-success").show();
+
+ } else {
+
+ //display message
+ $(".alert-error").show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+ }
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+ <div class="sm-ui-component">
+
+
+ <c:if test="${product.product.id!=null && product.product.id>0}">
+ <c:set value="${product.product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+
+ <h3>
+ <c:choose>
+ <c:when test="${product.product.id!=null && product.product.id>0}">
+ <s:message code="label.product.edit" text="Edit product" /> <c:out value="${product.product.sku}"/>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.product.create" text="Create product" />
+ </c:otherwise>
+ </c:choose>
+
+ </h3>
+ <br/>
+ <c:if test="${product.product.id!=null && product.product.id>0}">
+ <c:forEach items="${product.descriptions}" var="description" varStatus="counter">
+ <strong><sm:productUrl productDescription="${description}" /></strong><br/>
+ </c:forEach>
+ </c:if>
+ <br/><br/>
+
+ <c:url var="productSave" value="/admin/products/save.html"/>
+ <form:form method="POST" enctype="multipart/form-data" commandName="product" action="${productSave}">
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <div id="store.error" class="alert alert-error" style="display:none;"><s:message code="message.error" text="An error occured"/></div>
+
+ <div class="control-group">
+ <label><s:message code="label.product.sku" text="Sku"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" id="sku" path="product.sku"/>
+ <span class="help-inline"><s:message code="label.generic.alphanumeric" text="Alphanumeric" /><form:errors path="product.sku" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <form:hidden path="product.id" />
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.available" text="Product available"/></label>
+ <div class="controls">
+ <form:checkbox path="product.available" />
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.availabledate" text="Date available"/></label>
+ <div class="controls">
+ <input id="dateAvailable" name="dateAvailable" value="${product.dateAvailable}" class="small" type="text" data-date-format="<%=com.salesmanager.core.constants.Constants.DEFAULT_DATE_FORMAT%>" data-datepicker="datepicker">
+ <script type="text/javascript">
+ $('#dateAvailable').datepicker();
+ </script>
+ <span class="help-inline"><form:errors path="dateAvailable" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.product.manufacturer" text="Manufacturer"/></label>
+ <div class="controls">
+ <form:select items="${manufacturers}" itemValue="id" itemLabel="descriptions[0].name" path="product.manufacturer.id"/>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.productedit.producttype" text="Product type"/></label>
+ <div class="controls">
+ <form:select items="${productTypes}" itemValue="id" itemLabel="code" path="product.type.id"/>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+
+
+ <c:forEach items="${product.descriptions}" var="description" varStatus="counter">
+
+
+
+ <div class="control-group">
+
+ <label class="required"><s:message code="label.productedit.productname" text="Product name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" id="name${counter.index}" path="descriptions[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].name" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.sefurl" text="Search engine friendly url"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input id="seUrl${counter.index}" cssClass="input-large" path="descriptions[${counter.index}].seUrl"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].seUrl" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.productedit.producthl" text="Product highlight"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="descriptions[${counter.index}].productHighlight"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].productHighlight" cssClass="error" /></span>
+ </div>
+
+ </div>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.productedit.productdesc" text="Product description"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+
+
+ <textarea cols="30" id="descriptions${counter.index}.description" name="descriptions[${counter.index}].description">
+ <c:out value="${product.descriptions[counter.index].description}"/>
+ </textarea>
+ </div>
+
+
+
+ <script type="text/javascript">
+ //<![CDATA[
+
+ CKEDITOR.replace('descriptions[${counter.index}].description',
+ {
+ skin : 'office2003',
+ toolbar :
+ [
+ ['Source','-','Save','NewPage','Preview'],
+ ['Cut','Copy','Paste','PasteText','-','Print'],
+ ['Undo','Redo','-','Find','-','SelectAll','RemoveFormat'], '/',
+ ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
+ ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+ ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
+ ['Link','Unlink','Anchor'],
+ ['Image','Flash','Table','HorizontalRule','SpecialChar','PageBreak'], '/',
+ ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'],
+ ['Maximize', 'ShowBlocks']
+ ],
+
+ filebrowserWindowWidth : '720',
+ filebrowserWindowHeight : '740',
+ filebrowserImageBrowseUrl : '<c:url value="/admin/content/fileBrowser.html"/>'
+
+
+ });
+
+ //]]>
+ </script>
+
+
+
+ </div>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.product.title" text="Product title"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="descriptions[${counter.index}].metatagTitle"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].metatagTitle" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.metatags.description" text="Metatag description"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="descriptions[${counter.index}].metatagDescription"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].metatagDescription" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+
+ <form:hidden path="descriptions[${counter.index}].language.id" />
+ <form:hidden path="descriptions[${counter.index}].language.code" />
+ <form:hidden path="descriptions[${counter.index}].id" />
+ <form:hidden path="descriptions[${counter.index}].metatagKeywords" />
+ <form:hidden path="descriptions[${counter.index}].productExternalDl" />
+
+
+
+ </c:forEach>
+
+
+
+ <div class="control-group">
+
+ <label class="required"><s:message code="label.product.price" text="Price"/></label>
+
+ <div class="controls">
+ <form:input id="productPriceAmount" cssClass="highlight" path="productPrice"/>
+ <span id="help-price" class="help-inline"><form:errors path="productPrice" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+
+ <div class="control-group">
+
+ <label><s:message code="label.productedit.qtyavailable" text="Quantity available"/></label>
+ <div class="controls">
+ <form:input id="quantity" cssClass="highlight" path="availability.productQuantity"/>
+ <span class="help-inline"><form:errors path="availability.productQuantity" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.ordermin" text="Quantity order minimum"/></label>
+ <div class="controls">
+ <form:input id="ordermin" cssClass="highlight" path="availability.productQuantityOrderMin"/>
+ <span class="help-inline"><form:errors path="availability.productQuantityOrderMin" cssClass="error" /></span>
+
+ </div>
+ </div>
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.ordermax" text="Quantity order maximum"/></label>
+ <div class="controls">
+ <form:input id="ordermax" cssClass="highlight" path="availability.productQuantityOrderMax"/>
+ <span class="help-inline"><form:errors path="availability.productQuantityOrderMax" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.product.shipeable" text="Product will be shipped"/></label>
+ <div class="controls">
+ <form:checkbox path="product.productShipeable" />
+ </div>
+ </div>
+
+
+ <form:hidden path="availability.region" />
+ <form:hidden path="availability.id" />
+ <form:hidden path="price.id" />
+ <form:hidden path="product.productVirtual" />
+
+ <div class="control-group">
+ <label><s:message code="label.product.weight" text="Weight"/></label>
+ <div class="controls">
+ <form:input id="weight" cssClass="" path="product.productWeight"/>
+ <span class="help-inline"><form:errors path="product.productWeight" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.product.height" text="Height"/></label>
+ <div class="controls">
+ <form:input id="height" cssClass="" path="product.productHeight"/>
+ <span class="help-inline"><form:errors path="product.productHeight" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.width" text="Width"/></label>
+ <div class="controls">
+ <form:input id="width" cssClass="" path="product.productWidth"/>
+ <span class="help-inline"><form:errors path="product.productWidth" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.product.length" text="Length"/></label>
+ <div class="controls">
+ <form:input id="length" cssClass="" path="product.productLength"/>
+ <span class="help-inline"><form:errors path="product.productLength" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.entity.order" text="Sort order"/></label>
+ <div class="controls">
+ <form:input id="order" cssClass="" path="product.sortOrder"/>
+ <span class="help-inline"><form:errors path="product.sortOrder" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.product.image" text="Image"/> <c:if test="${product.productImage.productImage!=null && product.productImage.productImage!=''}"><span id="imageControlRemove"> - <a href="#" onClick="removeImage('${product.productImage.id}')"><s:message code="label.generic.remove" text="Remove"/></a></span></c:if></label>
+ <div class="controls" id="imageControl">
+ <c:choose>
+ <c:when test="${product.productImage.productImage==null || product.productImage.productImage==''}">
+ <input class="input-file" id="image" name="image" type="file">
+ </c:when>
+ <c:otherwise>
+ <img src="<sm:productImage imageName="${product.productImage.productImage}" product="${product.product}"/>" width="200"/>
+ </c:otherwise>
+ </c:choose>
+ </div>
+ </div>
+
+ <form:hidden path="productImage.productImage" />
+
+ <div class="control-group">
+ <label><s:message code="label.taxclass" text="Tax class"/></label>
+ <div class="controls">
+ <form:select items="${taxClasses}" itemValue="id" itemLabel="code" path="product.taxClass.id"/>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit2" text="Submit"/></button>
+ </div>
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </form:form>
+
+ <c:if test="${product.product.id!=null && product.product.id>0}">
+ <c:url var="createSimilar" value="/admin/products/product/duplicate.html"/>
+ <form:form method="POST" enctype="multipart/form-data" commandName="product" action="${createSimilar}">
+ <input type="hidden" name="productId" value="${product.product.id}" />
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn"><s:message code="label.product.createsimilar" text="Create similar product"/></button>
+ </div>
+ </div>
+
+ </form:form>
+ </c:if>
+
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/product-categories-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/product-categories-gridHeader.jsp
new file mode 100755
index 0000000..c07ba4e
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/product-categories-gridHeader.jsp
@@ -0,0 +1,10 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"categoryId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/product-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/product-gridHeader.jsp
new file mode 100644
index 0000000..8a9f51b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/product-gridHeader.jsp
@@ -0,0 +1,11 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name: "productId"},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name: "name", width: "70%"},
+ {title:"<s:message code="label.product.sku" text="Sku"/>", name: "sku"}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/productImages.jsp b/sm-shop/src/main/webapp/pages/admin/products/productImages.jsp
new file mode 100644
index 0000000..48b316c
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/productImages.jsp
@@ -0,0 +1,76 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+<div class="tabbable">
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="catalogue-section">
+ <div class="sm-ui-component">
+
+
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+
+ <h3>
+ <s:message code="menu.catalogue-products-images" text="Images library" />
+ </h3>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+ <br/>
+
+ <!-- Add content images -->
+ <c:url var="saveProductImages" value="/admin/products/images/save.html" />
+ <form:form method="POST" enctype="multipart/form-data" commandName="contentImages" action="${saveProductImages}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.success" text="Request successfull" />
+ </div>
+
+ <div class="control-group" style="margin-top:15px;">
+ <div class="controls">
+ <input class="input-file" id="file" name="file" type="file" multiple="multiple">
+ <input type="hidden" name="productId" id="productId" value="${product.id}"/>
+ <!-- <input class="input-file" id="image1" name="image[1]" type="file"><br />
+ <input class="input-file" id="image2" name="image[2]" type="file"><br />
+ <input class="input-file" id="image3" name="image[3]" type="file"><br /> -->
+ </div>
+ </div>
+
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.upload" text="Upload Images"/></button>
+
+
+ </div>
+
+ </div>
+
+
+ </form:form>
+
+
+
+ <br />
+ <!-- Listing grid include -->
+ <c:set value="/admin/products/images/page.html?productId=${product.id}" var="pagingUrl" scope="request" />
+ <c:set value="/admin/products/images/remove.html" var="removeUrl" scope="request" />
+ <c:set value="/admin/products/images/list.html?id=${product.id}" var="refreshUrl" scope="request" />
+ <c:set var="componentTitleKey" value="menu.catalogue-products-images" scope="request" />
+ <c:set var="canRemoveEntry" value="true" scope="request" />
+ <jsp:include page="/pages/admin/components/images-list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/product-menu.jsp b/sm-shop/src/main/webapp/pages/admin/products/product-menu.jsp
new file mode 100644
index 0000000..c931b25
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/product-menu.jsp
@@ -0,0 +1,23 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ <div class="btn-group" style="z-index:400000;">
+ <button class="btn btn-info dropdown-toggle" data-toggle="dropdown"><s:message code="label.product.configure" text="Product definition"/> ... <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="<c:url value="/admin/products/editProduct.html" />?id=<c:out value="${productId}"/>"><s:message code="label.product.details" text="Product details" /></a></li>
+ <li><a href="<c:url value="/admin/products/prices.html" />?id=<c:out value="${productId}"/>"><s:message code="label.product.prices" text="Product prices" /></a></li>
+ <li><a href="<c:url value="/admin/products/attributes/list.html" />?id=<c:out value="${productId}"/>"><s:message code="label.product.attributes" text="Attributes" /></a></li>
+ <li><a href="<c:url value="/admin/products/images/list.html" />?id=<c:out value="${productId}"/>"><s:message code="menu.catalogue-products-images" text="Product images" /></a></li>
+ <li><a href="<c:url value="/admin/products/reviews.html" />?id=<c:out value="${productId}"/>"><s:message code="label.product.customer.reviews" text="Reviews" /></a></li>
+ <li><a href="<c:url value="/admin/catalogue/related/list.html" />?id=<c:out value="${productId}"/>"><s:message code="label.product.related.title" text="Related items" /></a></li>
+ <li><a href="<c:url value="/admin/products/product/keywords.html" />?id=<c:out value="${productId}"/>"><s:message code="label.product.searchkeywords" text="Search keywords" /></a></li>
+ <li><a href="<c:url value="/admin/products/digitalProduct.html" />?id=<c:out value="${productId}"/>"><s:message code="label.product.digitalproduct" text="Digital product" /></a></li>
+ <li><a href="<c:url value="/admin/products/displayProductToCategories.html" />?id=<c:out value="${productId}"/>"><s:message code="menu.product.category" text="Associate to categories" /></a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ <br/>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/products.jsp b/sm-shop/src/main/webapp/pages/admin/products/products.jsp
new file mode 100644
index 0000000..0df800b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/products.jsp
@@ -0,0 +1,214 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+
+
+ <div class="sm-ui-component">
+
+
+ <script>
+
+///isc.showConsole();
+
+
+// User Interface
+// ---------------------------------------------------------------------
+
+
+
+
+
+ isc.RestDataSource.create({
+ ID:"products",
+ dataFormat:"json",
+ operationBindings:[
+ {operationType:"fetch", dataProtocol:"postParams",dataURL: "<c:url value="/admin/products/paging.html" />"},
+ {operationType:"remove", dataProtocol:"postParams",dataURL: "<c:url value="/admin/products/remove.html" />"}
+ ],
+ transformResponse : function (dsResponse, dsRequest, jsonData) {
+ var status = isc.XMLTools.selectObjects(jsonData, "/response/status");
+
+ if (status != 0 && status !=9999) {
+
+ var msg = isc.XMLTools.selectObjects(jsonData, "/response/statusMessage");
+
+ alert("! " + msg);
+
+ }
+
+
+ if(status == 9999) {
+
+ window.location='<c:url value="/admin/products/products.html" />';
+ }
+ }
+ });
+
+
+ //iterate from category objects to display data
+ isc.TreeGrid.create({
+ ID:"categoryTree",
+ border:0,
+ showResizeBar: false,
+ data: isc.Tree.create({
+ modelType: "parent",
+ nameProperty: "Name",
+ idField: "categoryId",
+ parentIdField: "parentId",
+ data: [
+ {categoryId:"-1", parentId:"0", Name:"<s:message code="label.category.root" text="Root" />", isFolder: true},
+ <c:forEach items="${categories}" var="category" varStatus="status">
+ {categoryId:'<c:out value="${category.id}" />', parentId:'<c:choose><c:when test="${category.parent!=null}"><c:out value="${category.parent.id}" /></c:when><c:otherwise>-1</c:otherwise></c:choose>', Name:'<c:out value="${category.descriptions[0].name}" />', isFolder: true}
+ <c:if test="${status.count<fn:length(categories)}">,</c:if>
+ </c:forEach>
+ ]
+ }),
+
+
+ nodeClick:"itemList.fetchData({categoryId:node.categoryId})",
+ showHeader:false,
+ leaveScrollbarGap:false,
+ animateFolders:true,
+ canAcceptDroppedRecords:true,
+ canReparentNodes:false,
+ selectionType:"single",
+ animateRowsMaxTime:750
+ });
+
+
+ isc.ListGrid.create({
+ ID: "itemList",
+ border:0,
+ dataSource: "products",
+ showRecordComponents: true,
+ showRecordComponentsByCell: true,
+ canRemoveRecords: true,
+ autoFetchData: false,
+ showFilterEditor: true,
+ filterOnKeypress: true,
+ dataFetchMode:"paged",
+
+
+ fields:[
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"productId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name"},
+ {title:"<s:message code="label.product.sku" text="Sku"/>", name:"sku"},
+ {title:"<s:message code="label.product.available" text="Available"/>", name:"available",type:"boolean"},
+ //{title:"<s:message code="label.quantity" text="Quantity"/>", name:"quantity", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
+
+
+ ],
+ selectionType: "single",
+ removeData: function () {
+ if (confirm('<s:message code="label.entity.remove.confirm" text="Do you really want to remove this record ?" />')) {
+ return this.Super("removeData", arguments);
+ }
+ },
+ createRecordComponent : function (record, colNum) {
+
+ var fieldName = this.getFieldName(colNum);
+ if (fieldName == "buttonField") {
+
+
+ var button = isc.IButton.create({
+ height: 18,
+ width: 65,
+ title: "<s:message code="label.entity.details" text="Details"/>",
+ click : function () {
+ window.location='<c:url value="/admin/products/editProduct.html" />?id=' + record["productId"];
+ }
+ });
+ return button;
+
+ }
+
+ }
+
+
+ });
+
+
+
+
+
+// Define application layout
+// ---------------------------------------------------------------------
+
+isc.HLayout.create({
+ ID:"pageLayout",
+ width: "700",
+ height: "600",
+ position:"relative",
+ members:[
+ isc.SectionStack.create({
+ ID:"leftSideLayout",
+ width:200,
+ showResizeBar:true,
+ visibilityMode:"multiple",
+ animateSections:true,
+ sections:[
+ {title:"<s:message code="label.categories.title" text="Categories" />", autoShow:true, items:[categoryTree]}
+ ]
+ }),
+ isc.SectionStack.create({
+ ID:"rightSideLayout",
+ visibilityMode:"multiple",
+ animateSections:true,
+ sections:[
+ {title:"<s:message code="menu.catalogue-products" text="Products" />", autoShow:true, items:[itemList]}
+ ]
+ })
+ ]
+});
+
+isc.Page.setEvent("load", "pageLayout.draw()");
+
+
+
+
+
+ </script>
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/productsCategories.jsp b/sm-shop/src/main/webapp/pages/admin/products/productsCategories.jsp
new file mode 100644
index 0000000..9b5e52c
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/productsCategories.jsp
@@ -0,0 +1,74 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+<div class="tabbable">
+ <jsp:include page="/common/adminTabs.jsp" />
+ <div class="tab-content">
+ <div class="tab-pane active" id="catalogue-section">
+ <div class="sm-ui-component">
+
+
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+
+ <h3>
+ <s:message code="label.product.category.association" text="Associate to categories" />
+ </h3>
+
+
+
+ <c:url var="addCategory" value="/admin/products/addProductToCategories.html" />
+ <form:form method="POST" enctype="multipart/form-data" commandName="product" action="${addCategory}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.success" text="Request successfull" />
+ </div>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+ <br/><br/>
+
+ <div class="control-group">
+ <label><s:message code="label.productedit.categoryname" text="Category"/></label>
+ <div class="controls">
+ <form:select path="id">
+ <form:options items="${categories}" itemValue="id" itemLabel="descriptions[0].name"/>
+ </form:select>
+ <span class="help-inline"><form:errors path="id" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <input type="hidden" name="productId" value="${product.id}">
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="label.generic.add" text="Add"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+
+ <br />
+ <!-- Listing grid include -->
+ <c:set value="/admin/product-categories/paging.html?productId=${product.id}" var="pagingUrl" scope="request" />
+ <c:set value="/admin/product-categories/remove.html?productId=${product.id}" var="removeUrl" scope="request" />
+ <c:set value="/admin/products/displayProductToCategories.html?id=${product.id}" var="refreshUrl" scope="request" />
+ <c:set var="entityId" value="categoryId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.categories.title" scope="request" />
+ <c:set var="canRemoveEntry" value="true" scope="request" />
+ <c:set var="gridHeader" value="/pages/admin/products/product-categories-gridHeader.jsp" scope="request"/>
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/related.jsp b/sm-shop/src/main/webapp/pages/admin/products/related.jsp
new file mode 100644
index 0000000..4c025e6
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/related.jsp
@@ -0,0 +1,84 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+
+
+ <div class="sm-ui-component">
+
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+
+ <h3><s:message code="label.product.related.title" text="Related items" /></h3>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+
+
+ <br/>
+ <div class="alert alert-info">
+ <s:message code="label.product.related.meassage" text="Drag and drop product from product list to related items box"/>
+ </div>
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/products/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/catalogue/related/paging.html?productId=${productId}" var="containerFetchUrl" scope="request"/>
+ <c:set value="/admin/catalogue/related/removeItem.html?baseProductId=${productId}" var="containerRemoveUrl" scope="request"/>
+ <c:set value="RELATED" var="removeEntity" scope="request"/>
+ <c:set value="/admin/catalogue/related/addItem.html?baseProductId=${productId}" var="containerAddUrl" scope="request"/>
+ <c:set value="/admin/catalogue/related/update.html" var="containerUpdateUrl" scope="request"/>
+ <c:set value="/admin/products/editProduct.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/catalogue/related/list.html?id=${productId}" var="reloadUrl" scope="request"/>
+ <c:set var="componentTitleKey" value="label.product.related.title" scope="request"/>
+ <!-- same headers than featured -->
+ <c:set var="gridHeader" value="/pages/admin/products/featured-gridHeader.jsp" scope="request"/>
+ <c:set var="gridHeaderContainer" value="/pages/admin/products/featured-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/product-container.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/reviews.jsp b/sm-shop/src/main/webapp/pages/admin/products/reviews.jsp
new file mode 100644
index 0000000..01ff8c7
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/reviews.jsp
@@ -0,0 +1,71 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <c:if test="${product.id!=null && product.id>0}">
+ <c:set value="${product.id}" var="productId" scope="request"/>
+ <jsp:include page="/pages/admin/products/product-menu.jsp" />
+ </c:if>
+
+
+
+
+ <h3><s:message code="label.product.customer.reviews" text="Customer reviews" /></h3>
+ <br/>
+ <strong><c:out value="${product.sku}"/></strong>
+
+ <br/>
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/products/reviews/paging.html?productId=${product.id}" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/products/reviews/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/products/reviews/paging.html?productId=${product.id}" var="refreshUrl" scope="request"/>
+ <c:set var="entityId" value="reviewId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.product.reviews" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/products/reviews-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/products/reviews-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/products/reviews-gridHeader.jsp
new file mode 100644
index 0000000..85da89e
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/products/reviews-gridHeader.jsp
@@ -0,0 +1,11 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"reviewId", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Name"/>", name:"description"},
+ {title:"<s:message code="label.product.reviews.rating" text="Rating"/>", name:"rating"}
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/group.jsp b/sm-shop/src/main/webapp/pages/admin/profile/group.jsp
new file mode 100644
index 0000000..29dbb2f
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/group.jsp
@@ -0,0 +1,87 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <c:choose>
+ <c:when test="${group.id!=null && group.id>0}">
+ <s:message code="label.group.editgroup" text="Edit group" /> <c:out value="${category.code}"/>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.group.creategroup" text="Create group" />
+ </c:otherwise>
+ </c:choose>
+
+ </h3>
+ <br/>
+
+ <c:url var="groupSave" value="/admin/group/save.html"/>
+
+
+ <form:form method="POST" modelAttribute="group" action="${groupSave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.group.name" text="Group name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="groupName" />
+ </div>
+ </div>
+
+
+ <form:hidden path="id" />
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+
+
+ </div>
+
+ </div>
+
+ </form:form>
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/groups.jsp b/sm-shop/src/main/webapp/pages/admin/profile/groups.jsp
new file mode 100644
index 0000000..2bdf271
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/groups.jsp
@@ -0,0 +1,50 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.groups.title" text="Groups" /></h3>
+ <br/>
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/groups/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/groups/editGroup.html?id=${group.id}" var="editUrl" scope="request"/>
+ <c:set var="entityId" value="groupId" scope="request"/>
+ <c:set var="expandDetails" value="description" scope="request"/>
+ <c:set var="componentTitleKey" value="label.groups.title" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/profile/groups-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="false" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/groups-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/profile/groups-gridHeader.jsp
new file mode 100644
index 0000000..9f94ca5
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/groups-gridHeader.jsp
@@ -0,0 +1,10 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"groupId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/password.jsp b/sm-shop/src/main/webapp/pages/admin/profile/password.jsp
new file mode 100644
index 0000000..598e938
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/password.jsp
@@ -0,0 +1,101 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ page session="false" %>
+
+
+
+
+ <script type="text/javascript">
+
+
+
+
+
+ </script>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <s:message code="label.generic.password" text="Password" /> <c:out value="${user.adminName}"/>
+ </h3>
+ <br/>
+
+ <c:url var="savePassword" value="/admin/users/savePassword.html"/>
+
+
+ <form:form method="POST" commandName="password" action="${savePassword}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.generic.password" text="Password"/></label>
+ <div class="controls">
+ <input type="password" name="password" id="password" cssClass="input-large highlight" />
+ <span class="help-inline"><form:errors path="password" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.generic.newpassword" text="New password"/></label>
+ <div class="controls">
+ <input type="password" name="newPassword" id="newPassword" cssClass="input-large highlight" />
+ <span class="help-inline"><form:errors path="newPassword" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.generic.newpassword.repeat" text="Repeat new password"/></label>
+ <div class="controls">
+ <input type="password" name="repeatPassword" id="repeatPassword" cssClass="input-large highlight" />
+ <span class="help-inline"><form:errors path="repeatPassword" cssClass="error" /></span>
+ </div>
+ </div>
+ <form:hidden path="user.id"/>
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+
+ </div>
+
+ </form:form>
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/permission.jsp b/sm-shop/src/main/webapp/pages/admin/profile/permission.jsp
new file mode 100644
index 0000000..1a326eb
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/permission.jsp
@@ -0,0 +1,129 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+
+
+ <script type="text/javascript">
+
+
+
+ $(function(){
+ $('.btn').addClass('disabled');
+ <c:forEach items="${category.descriptions}" var="description" varStatus="counter">
+ $("#name${counter.index}").friendurl({id : 'seUrl${counter.index}'});
+ </c:forEach>
+ });
+
+
+ function validateCode() {
+ $('#checkCodeStatus').html('<img src="<c:url value="/resources/img/ajax-loader.gif" />');
+ $('#checkCodeStatus').show();
+ var code = $("#code").val();
+ checkCode(code,'<c:url value="/admin/categories/checkCategoryCode.html" />');
+ }
+
+ function callBackCheckCode(msg,code) {
+
+ if(code==9999 || code==0) {
+
+ $('#checkCodeStatus').html('<font color="green"><s:message code="message.code.available" text="This code is available"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').removeClass('disabled');
+ }
+ if(code==9998) {
+
+ $('#checkCodeStatus').html('<font color="red"><s:message code="message.code.exist" text="This code already exist"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').addClass('disabled');
+ }
+
+ }
+
+
+ </script>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <c:choose>
+ <c:when test="${permission.id!=null && permission.id>0}">
+ <s:message code="label.permission.editpermission" text="Edit permission" /> <c:out value="${category.code}"/>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.permission.createpermission" text="Create permission" />
+ </c:otherwise>
+ </c:choose>
+
+ </h3>
+ <br/>
+
+ <c:url var="permissionSave" value="/admin/permission/save.html"/>
+
+
+ <form:form method="POST" modelAttribute="permission" action="${permissionSave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.permission.name" text="Permission name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="permissionName" />
+ </div>
+ </div>
+
+
+ <form:hidden path="id" />
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+
+
+ </div>
+
+ </div>
+
+ </form:form>
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/permissions.jsp b/sm-shop/src/main/webapp/pages/admin/profile/permissions.jsp
new file mode 100644
index 0000000..10aaf05
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/permissions.jsp
@@ -0,0 +1,57 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.permissions.title" text="Permissions" /></h3>
+ <br/>
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/permissions/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/permissions/editPermission.html?id=${group.id}" var="editUrl" scope="request"/>
+ <c:set var="entityId" value="groupId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.permissions.title" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/profile/permissions-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="false" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/permissions-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/profile/permissions-gridHeader.jsp
new file mode 100644
index 0000000..d36ea2a
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/permissions-gridHeader.jsp
@@ -0,0 +1,11 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"permissionId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name"},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/profile.jsp b/sm-shop/src/main/webapp/pages/admin/profile/profile.jsp
new file mode 100644
index 0000000..f91b4eb
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/profile.jsp
@@ -0,0 +1,229 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ page session="false" %>
+
+
+
+ <script type="text/javascript">
+
+
+
+ $(function(){
+ if($("#adminName").val()=="") {
+ $('.btn').addClass('disabled');
+ }
+ });
+
+
+ function validateCode() {
+ $('#checkCodeStatus').html('<img src="<c:url value="/resources/img/ajax-loader.gif" />');
+ $('#checkCodeStatus').show();
+ var adminName = $("#adminName").val();
+ var id = $("#id").val();
+ checkCode(adminName,id,'<c:url value="/admin/users/checkUserCode.html" />');
+ }
+
+ function callBackCheckCode(msg,code) {
+
+ if(code==0) {
+ $('.btn').removeClass('disabled');
+ }
+ if(code==9999) {
+
+ $('#checkCodeStatus').html('<font color="green"><s:message code="message.code.available" text="This code is available"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').removeClass('disabled');
+ }
+ if(code==9998) {
+
+ $('#checkCodeStatus').html('<font color="red"><s:message code="message.code.exist" text="This code already exist"/></font>');
+ $('#checkCodeStatus').show();
+ $('.btn').addClass('disabled');
+ }
+
+ }
+
+
+ </script>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+
+
+ <h3>
+ <c:choose>
+ <c:when test="${user.id!=null && user.id>0}">
+ <s:message code="label.user.edituser" text="Edit user" /> <c:out value="${user.adminName}"/>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.user.createuser" text="Create user" />
+ </c:otherwise>
+ </c:choose>
+
+ </h3>
+ <br/>
+
+ <c:url var="userSave" value="/admin/users/save.html"/>
+
+
+ <form:form method="POST" commandName="user" action="${userSave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.user.name" text="User name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="adminName" onblur="validateCode()"/>
+ <span class="help-inline"><div id="checkCodeStatus" style="display:none;"></div><form:errors path="adminName" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.store.title" text="Store"/> </label>
+ <div class="controls">
+ <form:select cssClass="" items="${stores}" itemValue="id" itemLabel="code" path="merchantStore.id"/>
+ <span class="help-inline"><form:errors path="merchantStore" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.user.email" text="Email"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="adminEmail"/>
+ <span class="help-inline"><form:errors path="adminEmail" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <c:if test="${user.id==null || user.id==0}">
+ <div class="control-group">
+ <label><s:message code="label.user.password" text="Password"/></label>
+ <div class="controls">
+ <form:password cssClass="input-large highlight" path="adminPassword"/>
+ <span class="help-inline"><form:errors path="adminPassword" cssClass="error" /></span>
+ </div>
+
+ </div>
+ </c:if>
+
+
+ <div class="control-group">
+ <label><s:message code="label.user.firstName" text="First name"/> </label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="firstName"/>
+ <span class="help-inline"><form:errors path="firstName" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.user.lastName" text="Last name"/> </label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="lastName"/>
+ <span class="help-inline"><form:errors path="lastName" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.user.defaultLanguage" text="Default language"/> </label>
+ <div class="controls">
+ <form:select cssClass="" items="${languages}" itemValue="id" itemLabel="code" path="defaultLanguage.id"/>
+ <span class="help-inline"><form:errors path="defaultLanguage" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <sec:authorize access="hasRole('ADMIN') and fullyAuthenticated">
+ <div class="control-group">
+ <label><s:message code="label.groups.title" text="Groups"/></label>
+ <div class="controls">
+ <form:checkboxes cssClass="highlight" items="${groups}" itemValue="id" itemLabel="groupName" path="groups" delimiter="<br/>" />
+ <span class="help-inline"><form:errors path="groups" cssClass="error" /></span>
+ </div>
+ </div>
+ </sec:authorize>
+
+
+ <sec:authorize access="hasRole('ADMIN') and fullyAuthenticated">
+ <div class="control-group">
+ <label><strong></strong><s:message code="label.entity.active" text="Active"/></strong></label>
+ <div class="controls">
+ <form:checkbox path="active" />
+ </div>
+ </div>
+ </sec:authorize>
+
+ <div class="control-group">
+ <label><s:message code="security.question1" text="Question 1"/> </label>
+ <div class="controls">
+ <form:select cssClass="" items="${questions}" itemValue="label" itemLabel="label" path="question1"/>
+ <form:input cssClass="input-large" path="answer1"/>
+ <span class="help-inline"><form:errors path="answer1" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="security.question1" text="Question 2"/> </label>
+ <div class="controls">
+ <form:select cssClass="" items="${questions}" itemValue="label" itemLabel="label" path="question2"/>
+ <form:input cssClass="input-large" path="answer2"/>
+ <span class="help-inline"><form:errors path="answer2" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="security.question3" text="Question 3"/> </label>
+ <div class="controls">
+ <form:select cssClass="" items="${questions}" itemValue="label" itemLabel="label" path="question3"/>
+ <form:input cssClass="input-large" path="answer3"/>
+ <span class="help-inline"><form:errors path="answer3" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <form:hidden path="id"/>
+ <c:if test="${user.id!=null && user.id>0}">
+ <form:hidden path="adminPassword"/>
+ </c:if>
+
+ <div class="form-actions">
+
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+
+ </div>
+
+ </form:form>
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/users.jsp b/sm-shop/src/main/webapp/pages/admin/profile/users.jsp
new file mode 100644
index 0000000..62689f5
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/users.jsp
@@ -0,0 +1,48 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="catalogue-section">
+
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="menu.users" text="Users" /></h3>
+ <br/>
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/users/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/users/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/users/list.html" var="refreshUrl" scope="request"/>
+ <c:set value="/admin/users/displayStoreUser.html" var="editUrl" scope="request"/>
+ <c:set var="entityId" value="userId" scope="request"/>
+ <c:set var="componentTitleKey" value="menu.users" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/profile/users-gridHeader.jsp" scope="request"/>
+ <sec:authorize access="hasRole('STORE_ADMIN') and fullyAuthenticated">
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+ </sec:authorize>
+
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+ </div>
+
+ </div>
+ </div>
+
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/profile/users-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/profile/users-gridHeader.jsp
new file mode 100644
index 0000000..0fd6027
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/profile/users-gridHeader.jsp
@@ -0,0 +1,17 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"userId", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="label.generic.email" text="Email"/>", name:"email", canFilter:false},
+ {title:"<s:message code="label.entity.active" text="Active"/>", name:"active", canFilter:false}
+ <sec:authorize access="hasRole('STORE_ADMIN') and fullyAuthenticated">
+ ,
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
+ </sec:authorize>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/canadapost.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/canadapost.jsp
new file mode 100644
index 0000000..6f85fa5
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/canadapost.jsp
@@ -0,0 +1,64 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.canadapost.identifier" text="Account identifier"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['account']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${identifier!=null}">
+ <span id="identifiererrors" class="error"><s:message code="module.shipping.canadapost.message.identifier" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.canadapost.username" text="Username"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['username']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${username!=null}">
+ <span id="identifiererrors" class="error"><s:message code="module.shipping.canadapost.message.username" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.canadapost.password" text="Password"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['password']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${username!=null}">
+ <span id="identifiererrors" class="error"><s:message code="module.shipping.canadapost.message.password" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.canadapost.packages" text="Packaging"/></label>
+ <div class="controls">
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="PACKAGE" /> <s:message code="module.shipping.canadapost.packages.package" text="Package" /><br/>
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="ENVELOPE" /> <s:message code="module.shipping.canadapost.packages.envelope" text="Envelope" /></br>
+ </div>
+ <span class="help-inline">
+ <c:if test="${packages!=null}">
+ <span id="packageserrors" class="error"><s:message code="module.shipping.canadapost.message.packages" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/customShippingDetails.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/customShippingDetails.jsp
new file mode 100644
index 0000000..a6f3603
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/customShippingDetails.jsp
@@ -0,0 +1,149 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+<script type="text/javascript">
+var priceFormatMessage = '<s:message code="message.price.cents" text="Wrong format" />';
+</script>
+
+<script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+<script src="<c:url value="/resources/js/adminFunctions.js" />"></script>
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+ $('#priceText').numeric({allow:"."});
+ $('#maximumWeight').numeric();
+
+
+ $('#priceText').blur(function() {
+ $('#help-priceText').html(null);
+ $(this).formatCurrency({ roundToDecimalPlace: 2, eventOnDecimalsEntered: true, symbol: ''});
+ })
+ .keyup(function(e) {
+ var e = window.event || e;
+ var keyUnicode = e.charCode || e.keyCode;
+ if (e !== undefined) {
+ switch (keyUnicode) {
+ case 16: break; // Shift
+ case 17: break; // Ctrl
+ case 18: break; // Alt
+ case 27: this.value = ''; break; // Esc: clear entry
+ case 35: break; // End
+ case 36: break; // Home
+ case 37: break; // cursor left
+ case 38: break; // cursor up
+ case 39: break; // cursor right
+ case 40: break; // cursor down
+ case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
+ case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
+ case 190: break; // .
+ default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, eventOnDecimalsEntered: true, symbol: ''});
+ }
+ }
+ })
+ .bind('decimalsEntered', function(e, cents) {
+ if (String(cents).length > 2) {
+ var errorMsg = priceFormatMessage + ' (0.' + cents + ')';
+ $('#help-priceText').html(errorMsg);
+ }
+ });
+
+});
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="shipping-section">
+
+ <div class="sm-ui-component">
+ <a href="<c:url value="/admin/shipping/weightBased.html"/>"><s:message code="label.generic.back" text="Back" /></a><br/><br/>
+ <h3><s:message code="module.shipping.weightBased" text="module.shipping.weightBased" /> - <c:out value="${customRegion.customRegionName}" /></h3>
+ <br/>
+
+ <c:url var="addPrice" value="/admin/shipping/weightBased/addPrice.html"/>
+ <form:form method="POST" commandName="customQuote" action="${addPrice}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.shipping.maximumWeight" text="Maximum weight" /></label>
+ <div class="controls">
+ <input type="text" class="span3" name="maximumWeight" id="maximumWeight" value="0">
+ </div>
+ <span class="help-inline"><form:errors path="maximumWeight" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.generic.price" text="Price" /></label>
+ <div class="controls">
+ <input type="text" class="span3" name="priceText" id="priceText">
+ </div>
+ <span id="help-priceText" class="help-inline"><form:errors path="priceText" cssClass="error" /></span>
+ </div>
+ <input type="hidden" name="region" value="${customRegion.customRegionName}" />
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+
+ </form:form>
+
+
+
+ <br/>
+
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/shipping/weightBasedDetails/page.html?region=${customRegion.customRegionName}" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/shipping/weightBased/removePrice.html?region=${customRegion.customRegionName}" var="removeUrl" scope="request"/>
+ <c:set var="entityId" value="maximumWeight" scope="request"/>
+ <c:set value="/admin/shipping/weightBased/edit.html?customRegionName=${customRegion.customRegionName}" var="afterRemoveUrl" scope="request"/>
+ <c:set var="componentTitleKey" value="module.shipping.weightBased" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/shipping/weightBasedDetails-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+ <br/><br/>
+ <c:url var="removeRegion" value="/admin/shipping/weightBased/deleteRegion.html"/>
+ <form:form method="POST" enctype="multipart/form-data" commandName="region" action="${removeRegion}">
+ <input type="hidden" name="customRegionName" value="${customRegion.customRegionName}" />
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn-danger"><i class="icon-trash icon-large"></i><s:message code="label.generic.remove" text="Remove"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+ </div>
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/packaging.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/packaging.jsp
new file mode 100644
index 0000000..f62503d
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/packaging.jsp
@@ -0,0 +1,121 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+<script>
+
+ $(function(){
+ $('#boxWidth').numeric();
+ $('#boxHeight').numeric();
+ $('#boxLength').numeric();
+ $('#boxWeight').numeric({allow:"."});
+ });
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="shipping-methods">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.shipping.packaging.title" text="Packaging information" /></h3>
+ <br/>
+
+
+ <c:url var="savePackaging" value="/admin/shipping/saveShippingPackaging.html"/>
+ <form:form method="POST" commandName="configuration" action="${savePackaging}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <div class="controls">
+ <form:radiobutton id="shipPackageType" path="shipPackageType" value="ITEM"/> <s:message code="label.shipping.packaging.individual" text="Items will be shipped individually" /><br/>
+ <form:radiobutton id="shipPackageType" path="shipPackageType" value="BOX"/> <s:message code="label.shipping.packaging.boxes" text="Items will be combined and shipped in a box" /><br/>
+ </div>
+ </div>
+ <div class="well">
+ <div class="control-group">
+ <div class="controls">
+ <s:message code="label.store.weightunit" text="Weight units" /> <strong><c:out value="${store.weightunitcode}"/></strong><br/>
+ <s:message code="label.store.sizeunits" text="Size units" /> <strong><c:out value="${store.seizeunitcode}"/></strong><br/>
+ </div>
+ </div>
+ <div class="control-group">
+ <label><s:message code="label.shipping.packaging.box.width" text="Box width"/></label>
+ <div class="controls">
+ <form:input cssClass="input-small" id="boxWidth" path="boxWidth" />
+ </div>
+ <span class="help-inline"><form:errors path="boxWidth" cssClass="error" /></span>
+ </div>
+ <div class="control-group">
+ <label><s:message code="label.shipping.packaging.box.height" text="Box height"/></label>
+ <div class="controls">
+ <form:input cssClass="input-small" id="boxHeight" path="boxHeight" />
+ </div>
+ <span class="help-inline"><form:errors path="boxHeight" cssClass="error" /></span>
+ </div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.shipping.packaging.box.length" text="Box length"/></label>
+ <div class="controls">
+ <form:input cssClass="input-small" id="boxLength" path="boxLength" />
+ </div>
+ <span class="help-inline"><form:errors path="boxLength" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.shipping.packaging.box.weight" text="Box weight"/></label>
+ <div class="controls">
+ <form:input cssClass="input-small" id="boxWeight" path="boxWeight" />
+ </div>
+ <span class="help-inline"><form:errors path="boxWeight" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+
+ </form:form>
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/shippingConfig.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/shippingConfig.jsp
new file mode 100755
index 0000000..27d1036
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/shippingConfig.jsp
@@ -0,0 +1,104 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="shipping-config">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.shipping.title" text="Shipping configuration" /></h3>
+ <br/>
+
+
+ <c:url var="shippingConfigurationSave" value="/admin/shipping/saveShippingConfiguration.html"/>
+
+
+ <form:form method="POST" commandName="configuration" action="${shippingConfigurationSave}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.shipping.mode" text="Shipping mode"/></label>
+ <div class="controls">
+
+ <div class="controls">
+ <form:radiobutton id="shipType" path="shipType" value="NATIONAL"/> <s:message code="label.shipping.national" text="National" />
+ <form:radiobutton id="shipType" path="shipType" value="INTERNATIONAL"/> <s:message code="label.shipping.international" text="International" />
+ <span class="help-inline"><form:errors path="shipType" cssClass="error" /></span>
+ </div>
+
+ </div>
+ </div>
+
+ <form:hidden path="shipBaseType"/>
+ <form:hidden path="shipOptionPriceType"/>
+
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+
+ </div>
+ </form:form>
+
+
+
+ <br/>
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/shipping/countries/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/shipping/countries/update.html" var="updateUrl" scope="request"/>
+ <c:set value="/admin/shipping/shippingConfigs.html" var="refreshUrl" scope="request"/>
+ <c:set var="entityId" value="code" scope="request"/>
+ <c:set var="componentTitleKey" value="label.shipping.countries" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/shipping/shipping-countries-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="false" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/shipping-countries-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/shipping-countries-gridHeader.jsp
new file mode 100755
index 0000000..2ee90fe
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/shipping-countries-gridHeader.jsp
@@ -0,0 +1,11 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.code" text="Code"/>", name:"code", primaryKey:true, canEdit:false, canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canEdit:false, canFilter:true},
+ {title:"<s:message code="label.entity.enabled" text="Enabled"/>", name:"supported", type:"boolean", canEdit:true, canFilter:true}
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/shippingMethod.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/shippingMethod.jsp
new file mode 100644
index 0000000..b61077f
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/shippingMethod.jsp
@@ -0,0 +1,120 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="shipping-method">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.shipping.title" text="Shipping configuration" /> - <s:message code="module.shipping.${configuration.moduleCode}" text="No label found - ${configuration.moduleCode}"/></h3>
+ <br/>
+
+
+
+
+ <s:message code="module.shipping.${configuration.moduleCode}.note" text=""/><br/>
+
+ <c:url var="saveShippingMethod" value="/admin/shipping/saveShippingMethod.html"/>
+
+ <c:if test="${customConfiguration!=null}">
+ <c:url var="saveShippingMethod" value="/admin/shipping/save${configuration.moduleCode}ShippingMethod.html"/>
+
+ </c:if>
+
+
+ <form:form method="POST" commandName="configuration" action="${saveShippingMethod}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+ <div class="control-group">
+ <label><s:message code="label.entity.enabled" text="Module enabled"/></label>
+ <div class="controls">
+ <form:checkbox path="active" />
+ </div>
+ </div>
+
+ <div class="controls">
+ <label><s:message code="label.generic.environment" text="Environment"/></label>
+ <div class="controls">
+ <form:select path="environment">
+ <form:options items="${environments}" />
+ </form:select>
+ </div>
+ <span class="help-inline"><form:errors path="environment" cssClass="error" /></span>
+ </div>
+
+
+ <c:if test="${customConfiguration==null}">
+ <jsp:include page="/pages/admin/shipping/${configuration.moduleCode}.jsp"></jsp:include>
+ </c:if>
+
+
+ <form:hidden path="moduleCode" />
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+
+ </form:form>
+
+
+
+ <c:if test="${customConfiguration!=null}">
+ <jsp:include page="/pages/admin/shipping/${configuration.moduleCode}.jsp"></jsp:include>
+ </c:if>
+
+
+ <c:if test="${configuration.active && validationError==null}">
+ <c:url var="removeModule" value="/admin/shipping/deleteShippingMethod.html"/>
+ <form:form method="POST" enctype="multipart/form-data" commandName="code" action="${removeModule}">
+ <input type="hidden" name="code" value="${configuration.moduleCode}" />
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn-danger"><i class="icon-trash icon-large"></i><s:message code="label.generic.remove" text="Remove"/></button>
+ </div>
+ </div>
+
+ </form:form>
+ </c:if>
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/shippingMethods.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/shippingMethods.jsp
new file mode 100755
index 0000000..b112f20
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/shippingMethods.jsp
@@ -0,0 +1,103 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+<script>
+
+
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="shipping-methods">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.shipping.title" text="Shipping configuration" /></h3>
+ <br/>
+
+
+
+
+
+
+ <c:url var="saveShippingMethods" value="/admin/shipping/saveShippingMethods.html"/>
+ <form:form method="POST" commandName="configuration" action="${saveShippingMethods}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+ <div class="control-group">
+ <table class="table table-hover">
+
+ <c:forEach items="${modules}" var="module">
+
+ <tr>
+ <td>
+ <c:choose>
+ <c:when test="${configuredModules[module.code]!=null && configuredModules[module.code].active==true}">
+ <img src="<c:url value="/resources/img/icon_green_on.gif"/>" width="12">
+ </c:when>
+ <c:otherwise>
+ <img src="<c:url value="/resources/img/icon_red_on.gif"/>" width="12">
+ </c:otherwise>
+ </c:choose>
+ </td>
+ <td>
+ <label>
+ <c:choose>
+ <c:when test="${module.customModule==true}">
+ <a href="<c:url value="/admin/shipping/${module.code}.html"/>"><s:message code="module.shipping.${module.code}" text="No label found - ${module.code}"/></a>
+ </c:when>
+ <c:otherwise>
+ <a href="<c:url value="/admin/shipping/shippingMethod.html?code="/><c:out value="${module.code}"/>"><s:message code="module.shipping.${module.code}" text="No label found - ${module.code}"/></a>
+ </c:otherwise>
+ </c:choose>
+ </label>
+ </td>
+ <td>
+ <c:if test="${module.image!=null}">
+ <img src="<c:url value="/resources/img/shipping/${module.image}"/>">
+ </c:if>
+ </td>
+ </tr>
+ </c:forEach>
+ </table>
+
+ </div>
+
+ </form:form>
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/shippingOptions.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/shippingOptions.jsp
new file mode 100644
index 0000000..9bc8e21
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/shippingOptions.jsp
@@ -0,0 +1,184 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+<script type="text/javascript">
+var priceFormatMessage = '<s:message code="message.price.cents" text="Wrong format" />';
+</script>
+
+<script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+<script src="<c:url value="/resources/js/adminFunctions.js" />"></script>
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+ $('#orderTotalFreeShippingText').numeric({allow:"."});
+ $('#handlingFeesText').numeric({allow:"."});
+
+
+ $('#orderTotalFreeShippingText').blur(function() {
+ $('#help-orderTotalFreeShippingText').html(null);
+ $(this).formatCurrency({ roundToDecimalPlace: 2, eventOnDecimalsEntered: true, symbol: ''});
+ })
+ .keyup(function(e) {
+ var e = window.event || e;
+ var keyUnicode = e.charCode || e.keyCode;
+ if (e !== undefined) {
+ switch (keyUnicode) {
+ case 16: break; // Shift
+ case 17: break; // Ctrl
+ case 18: break; // Alt
+ case 27: this.value = ''; break; // Esc: clear entry
+ case 35: break; // End
+ case 36: break; // Home
+ case 37: break; // cursor left
+ case 38: break; // cursor up
+ case 39: break; // cursor right
+ case 40: break; // cursor down
+ case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
+ case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
+ case 190: break; // .
+ default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, eventOnDecimalsEntered: true, symbol: ''});
+ }
+ }
+ })
+ .bind('decimalsEntered', function(e, cents) {
+ if (String(cents).length > 2) {
+ var errorMsg = priceFormatMessage + ' (0.' + cents + ')';
+ $('#help-orderTotalFreeShippingText').html(errorMsg);
+ }
+ });
+
+
+ $('#handlingFeesText').blur(function() {
+ $('#help-handlingFeesText').html(null);
+ $(this).formatCurrency({ roundToDecimalPlace: 2, eventOnDecimalsEntered: true, symbol: ''});
+ })
+ .keyup(function(e) {
+ var e = window.event || e;
+ var keyUnicode = e.charCode || e.keyCode;
+ if (e !== undefined) {
+ switch (keyUnicode) {
+ case 16: break; // Shift
+ case 17: break; // Ctrl
+ case 18: break; // Alt
+ case 27: this.value = ''; break; // Esc: clear entry
+ case 35: break; // End
+ case 36: break; // Home
+ case 37: break; // cursor left
+ case 38: break; // cursor up
+ case 39: break; // cursor right
+ case 40: break; // cursor down
+ case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
+ case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
+ case 190: break; // .
+ default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, eventOnDecimalsEntered: true, symbol: ''});
+ }
+ }
+ })
+ .bind('decimalsEntered', function(e, cents) {
+ if (String(cents).length > 2) {
+ var errorMsg = priceFormatMessage + ' (0.' + cents + ')';
+ $('#help-handlingFeesText').html(errorMsg);
+ }
+ });
+
+});
+
+</script>
+
+
+<div class="tabbable">
+
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+
+ <div class="tab-pane active" id="shipping-options">
+
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.shipping.options" text="Shipping options" /></h3>
+ <br/>
+
+
+ <c:url var="saveShippingOptions" value="/admin/shipping/saveShippingOptions.html"/>
+ <form:form method="POST" commandName="configuration" action="${saveShippingOptions}">
+
+
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+ <!--
+ <div class="control-group">
+ <label><s:message code="label.shipping.taxonshipping" text="Apply tax on shipping" /></label>
+ <div class="controls">
+ <form:checkbox id="taxOnShipping" path="taxOnShipping" />
+ </div>
+ </div>
+ -->
+
+ <div class="control-group well">
+ <label><s:message code="label.shipping.freeshippingandhandling=" text="Apply free shipping and handling"/></label>
+ <div class="controls">
+ <form:checkbox id="freeShippingEnabled" path="freeShippingEnabled" /><br/>
+ <form:radiobutton id="shipFreeType" path="shipFreeType" value="NATIONAL"/> <s:message code="label.shipping.national" text="National" /><br/>
+ <form:radiobutton id="shipFreeType" path="shipFreeType" value="INTERNATIONAL"/> <s:message code="label.generic.all" text="All" /><br/>
+ <form:input cssClass="input-large" id="orderTotalFreeShippingText" path="orderTotalFreeShippingText" /> <s:message code="label.shipping.freeshippingamount" text="Order total over" />
+ </div>
+ <span id="help-orderTotalFreeShippingText" class="help-inline"><form:errors path="orderTotalFreeShippingText" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.shipping.handlingfees" text="Handling fees"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" id="handlingFeesText" path="handlingFeesText" />
+ </div>
+ <span id="help-handlingFeesText" class="help-inline"><form:errors path="handlingFeesText" cssClass="error" /></span>
+ </div>
+
+ <div class="control-group">
+ <div class="controls">
+ <form:radiobutton id="shipOptionPriceType" path="shipOptionPriceType" value="ALL"/> <s:message code="label.shipping.allquotes" text="All quotes" /><br/>
+ <form:radiobutton id="shipOptionPriceType" path="shipOptionPriceType" value="LEAST"/> <s:message code="label.shipping.leastexpensivequotes" text="Least expensive" /><br/>
+ <form:radiobutton id="shipOptionPriceType" path="shipOptionPriceType" value="HIGHEST"/> <s:message code="label.shipping.moreexpensivequotes" text="Highest price" />
+ </div>
+ <span class="help-inline"><form:errors path="handlingFeesText" cssClass="error" /></span>
+ </div>
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+
+ </form:form>
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/ups.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/ups.jsp
new file mode 100644
index 0000000..9a812d1
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/ups.jsp
@@ -0,0 +1,77 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.ups.identifier" text="Access key"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['accessKey']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${accessKey!=null}">
+ <span id="identifiererrors" class="error"><s:message code="module.shipping.usps.message.identifier" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.ups.userid" text="User id"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['userId']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${userId!=null}">
+ <span id="useriderrors" class="error"><s:message code="module.shipping.usps.message.userid" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.ups.password" text="Password"/></label>
+ <div class="controls">
+ <form:password cssClass="input-large highlight" path="integrationKeys['password']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${password!=null}">
+ <span id="passworderrors" class="error"><s:message code="module.shipping.usps.message.password" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.ups.packages" text="Packaging"/></label>
+ <div class="controls">
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="01" /> <s:message code="module.shipping.ups.package.01" text="UPS Letter" /><br/>
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="02" /> <s:message code="module.shipping.ups.package.02" text="Customer Package" /></br>
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="03" /> <s:message code="module.shipping.ups.package.03" text="UPS Tube" /></br>
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="04" /> <s:message code="module.shipping.ups.package.04" text="UPS Pak" /></br>
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="21" /> <s:message code="module.shipping.ups.package.21" text="UPS Express Box" /></br>
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="24" /> <s:message code="module.shipping.ups.package.24" text="UPS 25kg Box" /></br>
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="10" /> <s:message code="module.shipping.ups.package.10" text="UPS 10kg box" /></br>
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="25" /> <s:message code="module.shipping.ups.package.25" text="Unknown" /></br>
+ </div>
+ <span class="help-inline">
+ <c:if test="${packages!=null}">
+ <span id="packageserrors" class="error"><s:message code="module.shipping.ups.message.packages" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.ups.method" text="UPS Shipping method"/></label>
+ <div class="controls">
+ <!--<form:radiobutton cssClass="input-large highlight" path="integrationOptions['selectservice']" value="yes" /> <s:message code="module.shipping.ups.method.select" text="Select a specific UPS shipping method" /><br/>-->
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['selectservice']" value="no" /> <s:message code="module.shipping.ups.method.unselect" text="Let UPS propose all available shipping methods" /></br>
+ </div>
+ </div>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/usps.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/usps.jsp
new file mode 100644
index 0000000..3540f9a
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/usps.jsp
@@ -0,0 +1,40 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.usps.identifier" text="Account identifier"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" path="integrationKeys['account']" />
+ </div>
+ <span class="help-inline">
+ <c:if test="${identifier!=null}">
+ <span id="identifiererrors" class="error"><s:message code="module.shipping.usps.message.identifier" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="module.shipping.usps.packages" text="Packaging"/></label>
+ <div class="controls">
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="Package" /> <s:message code="module.shipping.usps.package.08" text="Package" /><br/>
+ <form:radiobutton cssClass="input-large highlight" path="integrationOptions['packages']" value="Envelope" /> <s:message code="module.shipping.usps.package.07" text="Envelope" /></br>
+ </div>
+ <span class="help-inline">
+ <c:if test="${packages!=null}">
+ <span id="packageserrors" class="error"><s:message code="module.shipping.usps.message.packages" text="Field in error"/></span>
+ </c:if>
+ </span>
+ </div>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/weightBased.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/weightBased.jsp
new file mode 100644
index 0000000..af7bd24
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/weightBased.jsp
@@ -0,0 +1,88 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+
+
+
+ <form action="<c:url value="/admin/shipping/addCustomRegion.html"/>" method="POST" class="form-inline">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ 1- <label class="required"><s:message code="label.shipping.addregion" text="Add region" /></label>
+ <input type="text" class="span3" name="region" id="region"><!-- must be unique -->
+ <span class="help-inline"><div id="checkCodeStatus" style="display:none;"></div></span>
+ <span class="help-inline">
+ <c:if test="${errorMessage!=null}">
+ <span id="identifiererrors" class="error"><c:out value="${errorMessage}"/></span>
+ </c:if>
+ </span>
+ <button type="submit" class="btn btn-success"><s:message code="label.shipping.addregion" text="Add region"/></button>
+ </form>
+ <br/>
+
+ <c:url var="addShipping" value="/admin/shipping/addCountryToRegion.html"/>
+ <form:form method="POST" commandName="customRegion" action="${addShipping}" cssClass="form-inline">
+
+
+ 2- <label><s:message code="label.region" text="Region"/></label>
+
+ <form:select path="customRegionName">
+ <form:options items="${customConfiguration.regions}" itemValue="customRegionName" itemLabel="customRegionName"/>
+ </form:select>
+
+
+
+ <label><s:message code="label.country" text="Country"/></label>
+
+ <form:select path="countries[0]">
+ <form:options items="${shippingCountries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ <span class="help-inline">
+ <c:if test="${errorMessageAssociation!=null}">
+ <span id="identifiererrors" class="error"><c:out value="${errorMessage}"/></span>
+ </c:if>
+ </span>
+
+
+ <button type="submit" class="btn btn-success"><s:message code="label.generic.add" text="Add"/></button>
+
+ </form:form>
+
+
+ <!-- Listing grid include -->
+ <c:set value="/admin/shipping/weightBased/page.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/shipping/weightBased/removeCountry.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/shipping/weightBased/edit.html" var="editUrl" scope="request"/>
+ <c:set value="/admin/shipping/weightBased.html" var="refreshUrl" scope="request"/>
+ <c:set var="entityId" value="regionCode" scope="request"/>
+ <c:set var="groupByEntity" value="region" scope="request"/>
+ <c:set var="componentTitleKey" value="module.shipping.weightBased" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/shipping/weightBased-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+ <br/><br/>
+ <c:url var="addPrice" value="/admin/shipping/weightBased/edit.html"/>
+ <form:form method="GET" commandName="customRegion" action="${addPrice}" cssClass="form-inline">
+
+
+ 3- <label><s:message code="label.region" text="Region"/></label>
+
+ <form:select path="customRegionName">
+ <form:options items="${customConfiguration.regions}" itemValue="customRegionName" itemLabel="customRegionName"/>
+ </form:select>
+
+
+
+ <button type="submit" class="btn btn-success"><s:message code="label.entity.details" text="Details"/></button>
+
+ </form:form>
+
+
+
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/weightBasedDetails-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/weightBasedDetails-gridHeader.jsp
new file mode 100644
index 0000000..0e72640
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/weightBasedDetails-gridHeader.jsp
@@ -0,0 +1,10 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.shipping.maximumWeight" text="Maximum weight"/>", name:"weight", primaryKey:true, canEdit:false, canFilter:false},
+ {title:"<s:message code="label.generic.price" text="Price"/>", name:"price", canEdit:false, canFilter:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/shipping/weightBased-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/shipping/weightBased-gridHeader.jsp
new file mode 100644
index 0000000..c675d54
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/shipping/weightBased-gridHeader.jsp
@@ -0,0 +1,11 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.generic.country.code" text="Country code"/>", name:"regionCode", canEdit:false, canFilter:false},
+ {title:"<s:message code="label.shipping.region" text="Region"/>", name:"region", canEdit:false, canFilter:false},
+ {title:"<s:message code="label.generic.country" text="Country"/>", name:"country",primaryKey:true, canEdit:false, canFilter:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/tax/taxClass.jsp b/sm-shop/src/main/webapp/pages/admin/tax/taxClass.jsp
new file mode 100644
index 0000000..1f4a666
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/tax/taxClass.jsp
@@ -0,0 +1,93 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="taxrates-section">
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.tax.taxclass.title" text="Tax classes" /></h3>
+ <br/>
+
+ <c:url var="saveTaxClass" value="/admin/tax/taxclass/save.html"/>
+
+ <form:form method="POST" modelAttribute="taxClass" action="${saveTaxClass}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.tax.taxclass" text="Tax class"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="code" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.tax.taxclass.name" text="Tax class name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="title" />
+ </div>
+ </div>
+
+
+ <form:hidden path="id" />
+ <form:hidden path="merchantStore.id" value="${requestScope.store.id}" />
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+ <br/><br/>
+ <!-- Listing grid include -->
+ <c:set value="/admin/tax/taxclass/paging.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/tax/taxclass/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/tax/taxclass/list.html" var="refreshUrl" scope="request"/>
+ <c:set value="/admin/tax/taxclass/edit.html" var="editUrl" scope="request"/>
+ <c:set var="entityId" value="taxClassId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.tax.taxclass.title" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/tax/taxClass-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/tax/taxClassDetails.jsp b/sm-shop/src/main/webapp/pages/admin/tax/taxClassDetails.jsp
new file mode 100644
index 0000000..39a9df3
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/tax/taxClassDetails.jsp
@@ -0,0 +1,69 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="taxrates-section">
+ <a href="<c:url value="/admin/tax/taxclass/list.html"/>"><s:message code="label.generic.back" text="Back" /></a><br/><br/>
+ <div class="sm-ui-component">
+ <h3><s:message code="label.tax.taxclass.title" text="Tax classes" /></h3>
+ <br/>
+
+ <c:url var="saveTaxClass" value="/admin/tax/taxclass/update.html"/>
+
+ <form:form method="POST" modelAttribute="taxClass" action="${saveTaxClass}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.tax.taxclass" text="Tax class"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="code" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.tax.taxclass.name" text="Tax class name"/></label>
+ <div class="controls">
+ <form:input cssClass="input-large" path="title" />
+ </div>
+ </div>
+
+
+ <form:hidden path="id" />
+ <form:hidden path="merchantStore.id" value="${requestScope.store.id}" />
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+ </div>
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/tax/taxClass-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/tax/taxClass-gridHeader.jsp
new file mode 100644
index 0000000..3faf146
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/tax/taxClass-gridHeader.jsp
@@ -0,0 +1,13 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"taxClassId", canFilter:false},
+ {title:"<s:message code="label.entity.code" text="Code"/>", name:"code", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
diff --git a/sm-shop/src/main/webapp/pages/admin/tax/taxConfiguration.jsp b/sm-shop/src/main/webapp/pages/admin/tax/taxConfiguration.jsp
new file mode 100644
index 0000000..1cfd0a9
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/tax/taxConfiguration.jsp
@@ -0,0 +1,70 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+
+
+<script src="<c:url value="/resources/js/ckeditor/ckeditor.js" />"></script>
+
+
+
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="taxrates-section">
+
+ <div class="sm-ui-component">
+ <h3><s:message code="label.tax.taxconfiguration" text="Tax basis calculation" /></h3>
+ <br/>
+
+ <c:url var="saveTaxConfiguration" value="/admin/tax/taxconfiguration/save.html"/>
+
+ <form:form method="POST" modelAttribute="taxConfiguration" action="${saveTaxConfiguration}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+ <div class="control-group">
+ <div class="controls">
+ <form:radiobutton id="taxBasisCalculation" path="taxBasisCalculation" value="STOREADDRESS"/> <s:message code="label.tax.storeaddress" text="Store address" /><br/>
+ <form:radiobutton id="taxBasisCalculation" path="taxBasisCalculation" value="SHIPPINGADDRESS"/> <s:message code="label.shipping.shippingaddress" text="Shipping address" /><br/>
+ <form:radiobutton id="taxBasisCalculation" path="taxBasisCalculation" value="BILLINGADDRESS"/> <s:message code="label.shipping.billingaddress" text="Billing address" />
+ </div>
+ <span class="help-inline"><form:errors path="taxBasisCalculation" cssClass="error" /></span>
+ </div>
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/tax/taxRateDetails.jsp b/sm-shop/src/main/webapp/pages/admin/tax/taxRateDetails.jsp
new file mode 100644
index 0000000..ed45517
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/tax/taxRateDetails.jsp
@@ -0,0 +1,251 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+<script type="text/javascript">
+var priceFormatMessage = '<s:message code="message.price.cents" text="Wrong format" />';
+</script>
+
+ <script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+<script>
+
+
+$(document).ready(function() {
+
+ $('#code').alphanumeric();
+ $('#taxPriority').numeric();
+ $('#rateText').numeric({allow:"."});
+ getZones('<c:out value="${taxRate.country.isoCode}"/>');
+
+ $(".country-list").change(function() {
+ getZones($(this).val());
+ })
+
+
+ $('#rateText').blur(function() {
+ $('#help-rateText').html(null);
+ $(this).formatCurrency({ roundToDecimalPlace: 3, eventOnDecimalsEntered: true, symbol: ''});
+ })
+ .keyup(function(e) {
+ var e = window.event || e;
+ var keyUnicode = e.charCode || e.keyCode;
+ if (e !== undefined) {
+ switch (keyUnicode) {
+ case 16: break; // Shift
+ case 17: break; // Ctrl
+ case 18: break; // Alt
+ case 27: this.value = ''; break; // Esc: clear entry
+ case 35: break; // End
+ case 36: break; // Home
+ case 37: break; // cursor left
+ case 38: break; // cursor up
+ case 39: break; // cursor right
+ case 40: break; // cursor down
+ case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
+ case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
+ case 190: break; // .
+ default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, eventOnDecimalsEntered: true, symbol: ''});
+ }
+ }
+ })
+ .bind('decimalsEntered', function(e, cents) {
+ if (String(cents).length > 3) {
+ var errorMsg = priceFormatMessage + ' (0.' + cents + ')';
+ $('#help-rateText').html(errorMsg);
+ }
+ });
+
+
+
+});
+
+$.fn.addItems = function(data) {
+ $(".zone-list > option").remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ var option = new Option(itemData.name, itemData.id);
+ list.add(option);
+ });
+ });
+};
+
+function getZones(countryCode){
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/reference/provinces.html"/>',
+ data: 'countryCode=' + countryCode,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ var data = isc.XMLTools.selectObjects(response, "/response/data");
+ if(data && data.length>0) {
+
+ $('.zone-list').show();
+ $('#stateProvince').hide();
+ $(".zone-list").addItems(data);
+ <c:if test="${taxRate.zone!=null}">
+ $('.zone-list').val('<c:out value="${taxRate.zone.id}"/>');
+ $('#stateProvince').val('');
+ </c:if>
+ } else {
+ $('.zone-list').hide();
+ $('#stateProvince').show();
+ <c:if test="${taxRate.stateProvince!=null}">
+ $('#stateProvince').val('<c:out value="${taxRate.stateProvince}"/>');
+ </c:if>
+
+ }
+ } else {
+ $('.zone-list').hide();
+ $('#stateProvince').show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+}
+
+
+</script>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="taxrates-section">
+ <a href="<c:url value="/admin/tax/taxrates/list.html"/>"><s:message code="label.generic.back" text="Back" /></a><br/><br/>
+ <div class="sm-ui-component">
+ <h3><s:message code="menu.taxrates.rate" text="Tax rate" /></h3>
+ <br/>
+
+ <c:url var="saveTaxRate" value="/admin/tax/taxrates/update.html"/>
+
+ <form:form method="POST" modelAttribute="taxRate" action="${saveTaxRate}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.country" text="Country"/></label>
+ <div class="controls">
+ <form:select path="country.isoCode" cssClass="country-list highlight">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.storezone" text="Store state / province"/></label>
+ <div class="controls">
+ <form:select cssClass="zone-list " path="zone.id"/>
+ <input type="text" class="input-large" value="${taxRate.stateProvince}" id="stateProvince" name="stateProvince" />
+ <span class="help-inline"><form:errors path="zone.code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <c:forEach items="${taxRate.descriptions}" var="description" varStatus="counter">
+
+ <div class="control-group">
+
+ <label class="required"><s:message code="menu.taxrates.name" text="Tax name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" id="name${counter.index}" path="descriptions[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].name" cssClass="error" /></span>
+ </div>
+
+ </div>
+ <form:hidden path="descriptions[${counter.index}].id" />
+ <form:hidden path="descriptions[${counter.index}].language.id" />
+ <form:hidden path="descriptions[${counter.index}].language.code" />
+ <form:hidden path="descriptions[${counter.index}].taxRate.id" />
+
+ </c:forEach>
+
+ <div class="control-group">
+ <label class="required"><s:message code="menu.taxrates.code" text="Code"/></label>
+
+ <div class="controls">
+ <form:input id="code" cssClass="highlight" path="code"/>
+ <span class="help-inline"><form:errors path="code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="menu.taxrates.rate" text="Rate"/></label>
+
+ <div class="controls">
+ <form:input id="rateText" cssClass="highlight" path="rateText"/>
+ <span id="help-rateText" class="help-inline"><form:errors path="rateText" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.tax.compound" text="Compound" /></label>
+ <div class="controls">
+ <form:checkbox id="piggyback" path="piggyback" /><br/>
+ <span class="help-inline"><form:errors path="piggyback" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.entity.order" text="Priority"/></label>
+
+ <div class="controls">
+ <form:input id="taxPriority" cssClass="highlight" path="taxPriority"/>
+ <span class="help-inline"><form:errors path="taxPriority" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.tax.taxclass.name" text="Tax class name"/></label>
+ <div class="controls">
+ <form:select path="taxClass.id" cssClass="highlight">
+ <form:options items="${taxClasses}" itemValue="id" itemLabel="code"/>
+ </form:select>
+ </div>
+ </div>
+
+
+
+ <form:hidden path="merchantStore.id" value="${requestScope.store.id}" />
+ <form:hidden path="id" />
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+
+
+ </div>
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
sm-shop/src/main/webapp/pages/admin/tax/taxRates.jsp 263(+263 -0)
diff --git a/sm-shop/src/main/webapp/pages/admin/tax/taxRates.jsp b/sm-shop/src/main/webapp/pages/admin/tax/taxRates.jsp
new file mode 100644
index 0000000..90dfb2f
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/tax/taxRates.jsp
@@ -0,0 +1,263 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ page session="false" %>
+<script type="text/javascript">
+var priceFormatMessage = '<s:message code="message.price.cents" text="Wrong format" />';
+</script>
+
+ <script src="<c:url value="/resources/js/jquery.formatCurrency-1.4.0.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+<script>
+
+
+$(document).ready(function() {
+
+ $('#code').alphanumeric();
+ $('#taxPriority').numeric();
+ $('#rateText').numeric({allow:"."});
+ getZones('<c:out value="${taxRate.country.isoCode}"/>');
+
+ $(".country-list").change(function() {
+ getZones($(this).val());
+ })
+
+
+ $('#rateText').blur(function() {
+ $('#help-rateText').html(null);
+ $(this).formatCurrency({ roundToDecimalPlace: 3, eventOnDecimalsEntered: true, symbol: ''});
+ })
+ .keyup(function(e) {
+ var e = window.event || e;
+ var keyUnicode = e.charCode || e.keyCode;
+ if (e !== undefined) {
+ switch (keyUnicode) {
+ case 16: break; // Shift
+ case 17: break; // Ctrl
+ case 18: break; // Alt
+ case 27: this.value = ''; break; // Esc: clear entry
+ case 35: break; // End
+ case 36: break; // Home
+ case 37: break; // cursor left
+ case 38: break; // cursor up
+ case 39: break; // cursor right
+ case 40: break; // cursor down
+ case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
+ case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
+ case 190: break; // .
+ default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, eventOnDecimalsEntered: true, symbol: ''});
+ }
+ }
+ })
+ .bind('decimalsEntered', function(e, cents) {
+ if (String(cents).length > 3) {
+ var errorMsg = priceFormatMessage + ' (0.' + cents + ')';
+ $('#help-rateText').html(errorMsg);
+ }
+ });
+
+
+
+});
+
+$.fn.addItems = function(data) {
+ $(".zone-list > option").remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ //alert(itemData.name + " " + itemData.id)
+ var option = new Option(itemData.name, itemData.id);
+ list.add(option);
+ });
+ });
+};
+
+function getZones(countryCode){
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/admin/reference/provinces.html"/>',
+ data: 'countryCode=' + countryCode,
+ dataType: 'json',
+ success: function(response){
+
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+
+ var data = isc.XMLTools.selectObjects(response, "/response/data");
+ if(data && data.length>0) {
+
+ $('.zone-list').show();
+ $('#stateProvince').hide();
+ $(".zone-list").addItems(data);
+ } else {
+ $('.zone-list').hide();
+ $('#stateProvince').show();
+
+ }
+ } else {
+ $('.zone-list').hide();
+ $('#stateProvince').show();
+ }
+
+
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+}
+
+
+</script>
+
+
+
+<div class="tabbable">
+
+ <jsp:include page="/common/adminTabs.jsp" />
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="taxrates-section">
+
+ <div class="sm-ui-component">
+ <h3><s:message code="menu.taxrates" text="Tax rates" /></h3>
+ <br/>
+
+ <c:url var="saveTaxRate" value="/admin/tax/taxrates/save.html"/>
+
+ <form:form method="POST" modelAttribute="taxRate" action="${saveTaxRate}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+
+
+
+ <div class="control-group">
+ <label><s:message code="label.country" text="Country"/></label>
+ <div class="controls">
+ <form:select path="country.isoCode" cssClass="country-list highlight">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.storezone" text="Store state / province"/></label>
+ <div class="controls">
+ <form:select cssClass="zone-list " path="zone.id"/>
+ <input type="text" class="input-large" id="stateProvince" name="stateProvince" />
+ <span class="help-inline"><form:errors path="zone.code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <c:forEach items="${taxRate.descriptions}" var="description" varStatus="counter">
+
+ <div class="control-group">
+
+ <label class="required"><s:message code="menu.taxrates.name" text="Tax name"/> (<c:out value="${description.language.code}"/>)</label>
+ <div class="controls">
+ <form:input cssClass="input-large highlight" id="name${counter.index}" path="descriptions[${counter.index}].name"/>
+ <span class="help-inline"><form:errors path="descriptions[${counter.index}].name" cssClass="error" /></span>
+ </div>
+
+ </div>
+ <form:hidden path="descriptions[${counter.index}].language.id" />
+ <form:hidden path="descriptions[${counter.index}].language.code" />
+
+ </c:forEach>
+
+ <div class="control-group">
+ <label class="required"><s:message code="menu.taxrates.code" text="Code"/></label>
+
+ <div class="controls">
+ <form:input id="code" cssClass="highlight" path="code"/>
+ <span class="help-inline"><form:errors path="code" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="menu.taxrates.rate" text="Rate"/></label>
+
+ <div class="controls">
+ <form:input id="rateText" cssClass="highlight" path="rateText"/>
+ <span id="help-rateText" class="help-inline"><form:errors path="rateText" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.tax.compound" text="Compound" /></label>
+ <div class="controls">
+ <form:checkbox id="piggyback" path="piggyback" /><br/>
+ <span class="help-inline"><form:errors path="piggyback" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.entity.order" text="Priority"/></label>
+
+ <div class="controls">
+ <form:input id="taxPriority" cssClass="highlight" path="taxPriority" value="0"/>
+ <span class="help-inline"><form:errors path="taxPriority" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required"><s:message code="label.tax.taxclass.name" text="Tax class name"/></label>
+ <div class="controls">
+ <form:select path="taxClass.id" cssClass="highlight">
+ <form:options items="${taxClasses}" itemValue="id" itemLabel="code"/>
+ </form:select>
+ </div>
+ </div>
+
+
+
+ <form:hidden path="merchantStore.id" value="${requestScope.store.id}" />
+
+ <div class="form-actions">
+ <div class="pull-right">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.submit" text="Submit"/></button>
+ </div>
+ </div>
+
+ </form:form>
+
+
+ <br/><br/>
+ <!-- Listing grid include -->
+ <c:set value="/admin/tax/taxrates/page.html" var="pagingUrl" scope="request"/>
+ <c:set value="/admin/tax/taxrates/remove.html" var="removeUrl" scope="request"/>
+ <c:set value="/admin/tax/taxrates/list.html" var="refreshUrl" scope="request"/>
+ <c:set value="/admin/tax/taxrates/edit.html" var="editUrl" scope="request"/>
+ <c:set var="entityId" value="taxRateId" scope="request"/>
+ <c:set var="componentTitleKey" value="label.tax.taxclass.title" scope="request"/>
+ <c:set var="gridHeader" value="/pages/admin/tax/taxRates-gridHeader.jsp" scope="request"/>
+ <c:set var="canRemoveEntry" value="true" scope="request"/>
+
+
+ <jsp:include page="/pages/admin/components/list.jsp"></jsp:include>
+ <!-- End listing grid include -->
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/admin/tax/taxRates-gridHeader.jsp b/sm-shop/src/main/webapp/pages/admin/tax/taxRates-gridHeader.jsp
new file mode 100644
index 0000000..361d3e9
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/admin/tax/taxRates-gridHeader.jsp
@@ -0,0 +1,19 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ page session="false" %>
+
+
+
+ {title:"<s:message code="label.entity.id" text="Id"/>", name:"taxRateId", canFilter:false},
+ {title:"<s:message code="label.generic.country.code" text="Country dode"/>", name:"country", canFilter:false},
+ {title:"<s:message code="label.generic.stateprovince" text="State / province"/>", name:"zone", canFilter:true},
+ {title:"<s:message code="label.entity.code" text="Code"/>", name:"code", canFilter:false},
+ {title:"<s:message code="label.entity.name" text="Name"/>", name:"name", canFilter:false},
+ {title:"<s:message code="menu.taxrates.rate" text="Rate"/>", name:"rate", canFilter:false},
+ {title:"<s:message code="label.entity.order" text="Order"/>", name:"priority", canFilter:false},
+ {title:"<s:message code="label.tax.compound" text="Compound"/>", name:"piggyback", type:"boolean", canFilter:false},
+ {title:"<s:message code="label.taxclass" text="Tax class"/>", name:"taxClass", canFilter:false},
+ {title:"<s:message code="label.entity.details" text="Details"/>", name: "buttonField", align: "center",canFilter:false,canSort:false, canReorder:false}
diff --git a/sm-shop/src/main/webapp/pages/shop/common/cart/cart.jsp b/sm-shop/src/main/webapp/pages/shop/common/cart/cart.jsp
new file mode 100644
index 0000000..210d32e
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/cart/cart.jsp
@@ -0,0 +1,139 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+
+
+<c:url value="/shop/cart/removeShoppingCartItem.html"
+ var="removeShoppingCartItemUrl" />
+
+
+
+<div id="main-content" class="row-fluid show-grid">
+
+<h1><s:message code="label.cart.revieworder" text="Review your order" /></h1>
+<div id="store.error" class="alert alert-error" style="display:none;"><s:message code="message.error.shoppingcart.update" text="An error occurred while updating the shopping cart"/></div>
+<br/>
+<table id="mainCartTable" class="table table-bordered table-striped">
+
+ <c:if test="${not empty cart}">
+ <c:choose>
+ <c:when test="${not empty cart.shoppingCartItems}">
+
+ <c:forEach items="${cart.shoppingCartItems}" var="shoppingCartItem"
+ varStatus="itemStatus">
+ <c:if test="${itemStatus.index eq 0}">
+ <thead>
+ <tr>
+ <th colspan="2" width="55%"><s:message code="label.generic.item.title" text="Item"/></th>
+ <th colspan="2" width="15%"><s:message code="label.quantity" text="Quantity"/></th>
+ <th width="15%"><s:message code="label.generic.price" text="Price"/></th>
+ <th width="15%"><s:message code="label.order.total" text="Total"/></th>
+ </tr>
+ </thead>
+ <tbody>
+ </c:if>
+ <form:form action="${updateShoppingCartItemUrl}"
+ id="shoppingCartLineitem_${shoppingCartItem.id}">
+ <tr>
+ <td width="10%">
+ <c:if test="${shoppingCartItem.image!=null}">
+ <img width="60" src="<c:url value="${shoppingCartItem.image}"/>">
+ </c:if>
+ </td>
+
+ <td style="border-left:none;">
+ <strong>${shoppingCartItem.name}</strong>
+ <c:if test="${fn:length(shoppingCartItem.shoppingCartAttributes)>0}">
+ <br/>
+ <ul>
+ <c:forEach items="${shoppingCartItem.shoppingCartAttributes}" var="option">
+ <li>${option.optionName} - ${option.optionValue}</li>
+ </c:forEach>
+ </ul>
+ </c:if>
+
+ </td>
+ <td>
+ <input type="text" class="input-small quantity" placeholder="<s:message code="label.quantity" text="Quantity"/>"
+ value="${shoppingCartItem.quantity}" name="quantity" id="${shoppingCartItem.id}" <c:if test="${shoppingCartItem.productVirtual==true}">readonly</c:if>>
+ </td>
+ <td style="border-left:none;"><button class="close"
+ onclick="javascript:updateLineItem('${shoppingCartItem.id}','${removeShoppingCartItemUrl}');">×</button>
+ </td>
+
+ <td><strong>${shoppingCartItem.price}</strong></td>
+ <td><strong>${shoppingCartItem.subTotal}</strong></td>
+
+
+ <input type="hidden" name="lineItemId" id="lineItemId"
+ value="${shoppingCartItem.id}"/>
+
+
+ </tr>
+ </form:form>
+
+
+ </c:forEach>
+ <c:forEach items="${cart.totals}" var="total">
+ <tr class="subt">
+ <td colspan="2"> </td>
+ <td colspan="3"><strong><s:message code="${total.code}" text="label [${total.code}] not found"/></strong></td>
+ <td><strong><sm:monetary value="${total.value}" /></strong></td>
+ </tr>
+ </c:forEach>
+
+ </c:when>
+ <c:otherwise>
+ <tr><td><s:message code="cart.empty" text="Your Shopping cart is empty" /></td></tr>
+ </c:otherwise>
+ </c:choose>
+ </c:if>
+
+
+ </tbody>
+</table>
+<c:if test="${not empty cart}">
+ <c:if test="${not empty cart.shoppingCartItems}">
+ <div class="pull-right">
+ <div class="form-actions">
+ <button type="button" class="btn" onClick="javascript:updateCart('#mainCartTable');"><s:message code="label.order.recalculate" text="Racalculate"/></button>
+ <button id="checkoutButton" type="submit" class="btn btn-success"><s:message code="label.cart.placeorder" text="Place your order" /></button>
+ </div>
+ </div>
+ </c:if>
+</c:if>
+</div>
+<c:if test="${empty cart}">
+<!-- load cart with cookie -->
+<script>
+ $(document).ready(function(){
+ var cartCode=getCartCode();
+ if(cartCode!=null) {
+ console.log('cart code ' + cartCode);
+ location.href='<c:url value="/shop/cart/shoppingCartByCode.html" />?shoppingCartCode=' + cartCode;
+ }
+
+ });
+</script>
+</c:if>
+
+<script>
+ $(document).ready(function(){
+ $('.quantity').numeric();
+ $("input[type='text']").keypress(function(e){
+ if (e.which == 13){
+ e.preventDefault();
+ }
+ });
+ $('#checkoutButton').click(function(e) {
+ location.href='<c:url value="/shop/order/checkout.html"/>';
+ });
+ });
+</script>
+
+
diff --git a/sm-shop/src/main/webapp/pages/shop/common/cart/minicart.jsp b/sm-shop/src/main/webapp/pages/shop/common/cart/minicart.jsp
new file mode 100644
index 0000000..1a6c766
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/cart/minicart.jsp
@@ -0,0 +1,36 @@
+
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+
+<div class="cartbox" id="cart-box">
+ <div class="box-content clearfix">
+ <p id="shoppingcarttitle" class="lbw"><s:message code="label.cart" text="Shopping cart"/></p>
+ <br />
+ <div id="cartShowLoading" class="loading-indicator" style="width:100%;display:none;"></div>
+ <div id="cartMessage" style="width:100%;display:none;"></div>
+ <div id="shoppingcart">
+ <table style="margin-bottom: 5px" class="table">
+ <tbody id="shoppingcartProducts"><!-- products place holder -->
+ </tbody>
+ </table>
+ <div id="total-box" class="total-box"></div><!-- totals place holder -->
+ <br />
+ <button class="btn btn-large" style="width: 100%" type="button" onclick="viewShoppingCartPage();"><s:message code="label.checkout" text="Checkout"/></button>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/cart/minicartinfo.jsp b/sm-shop/src/main/webapp/pages/shop/common/cart/minicartinfo.jsp
new file mode 100644
index 0000000..0f16b49
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/cart/minicartinfo.jsp
@@ -0,0 +1,12 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+ <!-- display is ajax driven -->
+ <span id="cartinfo">
+ <span id="cartqty">(0 <s:message code="label.generic.item" text="item" />)</span><span id="cartprice"></span>
+ </span>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/catalog/addToCartProduct.jsp b/sm-shop/src/main/webapp/pages/shop/common/catalog/addToCartProduct.jsp
new file mode 100644
index 0000000..d2b737b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/catalog/addToCartProduct.jsp
@@ -0,0 +1,81 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<script src="<c:url value="/resources/js/product.js" />"></script>
+<script>
+
+$(function(){
+
+ initProduct('<c:out value="${product.id}"/>','#input-<c:out value="${product.id}" />');//pass form div
+
+});
+
+</script>
+
+
+ <!-- leave the form id as is -->
+ <form id="input-<c:out value="${product.id}" />">
+ <!-- select options -->
+ <c:if test="${options!=null && not product.productVirtual}">
+ <c:forEach items="${options}" var="option" varStatus="status">
+ <div class="control-group">
+ <label><strong><c:out value="${option.name}"/></strong></label>
+ <div class="controls">
+ <c:choose>
+ <c:when test="${option.type=='select'}">
+ <select id="${status.index}" name="${status.index}" class="attribute">
+ <c:forEach items="${option.values}" var="optionValue">
+ <option value="${optionValue.id}" <c:if test="${optionValue.defaultAttribute==true}"> SELECTED</c:if>>${optionValue.name}<c:if test="${optionValue.price!=null}"> <c:out value="${optionValue.price}"/></c:if></option>
+ </c:forEach>
+ </select>
+ </c:when>
+ <c:when test="${option.type=='radio'}">
+ <c:forEach items="${option.values}" var="optionValue">
+ <c:if test="${optionValue.image!=null}">
+ <img src="<c:url value="${optionValue.image}"/>" height="40">
+ </c:if>
+ <input type="radio" class="attribute" id="${status.index}" name="${status.index}" value="<c:out value="${optionValue.id}"/>" <c:if test="${optionValue.defaultAttribute==true}"> checked="checked" </c:if> />
+ <c:out value="${optionValue.name}"/><c:if test="${optionValue.price!=null}"> <c:out value="${optionValue.price}"/></c:if><br/>
+ </c:forEach>
+ </c:when>
+ <c:when test="${option.type=='text'}">
+ <input type="text" class="attribute" id="${status.index}" name="${status.index}" class="input-large">
+ </c:when>
+ <c:when test="${option.type=='checkbox'}">
+ <c:forEach items="${option.values}" var="optionValue">
+ <c:if test="${optionValue.image!=null}">
+ <img src="<c:url value="${optionValue.image}"/>" height="40">
+ </c:if>
+ <input type="checkbox" class="attribute" id="${status.index}" name="${status.index}" value="<c:out value="${optionValue.id}"/>"<c:if test="${optionValue.defaultAttribute==true}"> checked="checked" </c:if> />
+ <c:out value="${optionValue.name}"/><c:if test="${optionValue.price!=null}"> <c:out value="${optionValue.price}"/></c:if><br/>
+ </c:forEach>
+ </c:when>
+ </c:choose>
+ <span class="help-inline"></span>
+ </div>
+ </div>
+ </c:forEach>
+ </c:if>
+ <br/>
+ <div class="form-inline">
+ <c:if test="${product.quantityOrderMaximum==-1 || product.quantityOrderMaximum>1 && not product.productVirtual}" >
+ <input id="qty-productId-<c:out value="${product.id}" />" class="input-mini" placeholder="1" type="text">
+ </c:if>
+ <button class="btn btn-success addToCart" type="button" productId="<c:out value="${product.id}" />"><s:message code="button.label.addToCart" text="Add to cart"/></button>
+ </div>
+
+
+ </form>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/catalog/rating.jsp b/sm-shop/src/main/webapp/pages/shop/common/catalog/rating.jsp
new file mode 100644
index 0000000..84e40b0
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/catalog/rating.jsp
@@ -0,0 +1,48 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+ <div id="review" class="review">
+ <div>
+ <div id="productRating" style="width: 100px;">
+ </div>
+ <script>
+ $(function() {
+ $('#productRating').raty({
+ readOnly: true,
+ half: true,
+ path : '<c:url value="/resources/img/stars/"/>',
+ score: <c:out value="${product.rating}" />
+ });
+ });
+ </script>
+ <c:choose>
+ <c:when test="${product.ratingCount>0}">
+ <a href="#" onclick="$('a[href=\'#reviews\']').trigger('click');"><c:out value="${product.ratingCount}"/> <s:message code="label.product.customer.reviews" text="Customer reviews" /></a>
+ </c:when>
+ <c:otherwise>
+ 0 <s:message code="label.product.customer.reviews" text="Customer reviews" />
+ </c:otherwise>
+ </c:choose>
+ <c:if test="${requestScope.HIDEACTION==null}">
+ <sec:authorize access="hasRole('AUTH_CUSTOMER') and fullyAuthenticated">
+ |
+ <a href="<c:url value="/shop/customer/review.html"/>?productId=${product.id}"><s:message code="label.product.reviews.write" text="Write a review" /></a>
+ </sec:authorize>
+ </c:if>
+ </div>
+ </div>
+
diff --git a/sm-shop/src/main/webapp/pages/shop/common/catalog/review.jsp b/sm-shop/src/main/webapp/pages/shop/common/catalog/review.jsp
new file mode 100644
index 0000000..ebf94a9
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/catalog/review.jsp
@@ -0,0 +1,125 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<script src="<c:url value="/resources/js/jquery.raty.min.js" />"></script>
+
+ <div id="review" class="row-fluid">
+
+ <p class="lead"><s:message code="label.product.rate"/></p>
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>">
+ <s:message code="message.productreview.created" text="You have successfully created a product review" />
+ </div>
+
+ <div class="span12 no_margin">
+ <div class="span6">
+ <table class="table" style="margin-bottom: 35px">
+ <tbody>
+ <tr>
+ <c:if test="${product.image!=null}">
+ <td>
+ <img width="60" src="<c:url value="${product.image.imageUrl}"/>">
+ </td>
+ </c:if>
+ <td>
+ <table>
+ <tr>
+ <td style="border-top: none;"><c:out value="${product.description.name}" /></td>
+ </tr>
+ <tr>
+ <td style="border-top: none;">
+ <c:set var="HIDEACTION" value="TRUE" scope="request" />
+ <!-- product rating -->
+ <jsp:include page="/pages/shop/common/catalog/rating.jsp" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td>
+ <c:out value="${product.finalPrice}"/>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <br/>
+
+
+ <sec:authorize access="hasRole('AUTH_CUSTOMER') and fullyAuthenticated">
+ <c:choose>
+ <c:when test="${customerReview!=null}">
+ <p>
+ <s:message code="label.product.reviews.evaluated" text="You have evaluated this product"/>
+ <br/>
+ <div id="customerRating" style="width: 100px;"></div>
+ <br/>
+ <blockquote>
+ <p><c:out value="${customerReview.description}" escapeXml="false" /></p>
+ <small><c:out value="${customerReview.customer.firstName}" /> <c:out value="${customerReview.customer.lastName}"/> <c:out value="${customerReview.date}" /></small>
+ </blockquote>
+ </p>
+ <script>
+ $(function() {
+ $('#customerRating').raty({
+ readOnly: true,
+ half: true,
+ path : '<c:url value="/resources/img/stars/"/>',
+ score: <c:out value="${customerReview.rating}" />
+ });
+ });
+ </script>
+
+ </p>
+ </c:when>
+ <c:otherwise>
+
+ <c:url var="submitReview" value="/shop/customer/review/submit.html"/>
+ <form:form method="POST" commandName="review" action="${submitReview}">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <form:hidden id="rating" path="rating"/>
+ <form:hidden path="productId"/>
+ <label><s:message code="label.generic.youropinion" text="Your opinion" /></label>
+ <form:textarea name="" rows="6" class="span6" path="description"/>
+ <label> </label>
+ <span class="help-block"><s:message code="label.product.clickrate" text="Product rating (click on the stars to activate rating)" /></span>
+ <div id="rateMe" style="width: 100px;"></div>
+ <script>
+ $(function() {
+ $('#rateMe').raty({
+ readOnly: false,
+ half: true,
+ path : '<c:url value="/resources/img/stars/"/>',
+ score: 5,
+ click: function(score, evt) {
+ $('#rating').val(score);
+ }
+ });
+ });
+ </script>
+ <br/>
+ <button type="submit" class="btn"><s:message code="button.label.submit2" text="Submit"/></button>
+ </form:form>
+
+ </c:otherwise>
+ </c:choose>
+ </sec:authorize>
+ </div>
+ <div class="span6"> </div>
+ </div>
+ </div>
+ <sec:authorize access="!hasRole('AUTH_CUSTOMER') and !fullyAuthenticated">
+ <p class="muted"><s:message code="label.product.reviews.logon.write" text="You have to be authenticated to write a review" /></p>
+ </sec:authorize>
+
diff --git a/sm-shop/src/main/webapp/pages/shop/common/catalog/reviews.jsp b/sm-shop/src/main/webapp/pages/shop/common/catalog/reviews.jsp
new file mode 100644
index 0000000..384d002
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/catalog/reviews.jsp
@@ -0,0 +1,51 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+
+ <sec:authorize access="hasRole('AUTH_CUSTOMER') and fullyAuthenticated">
+ <a href="<c:url value="/shop/customer/review.html"/>?productId=${product.id}"/><button id="reviewButton" type="submit" class="btn btn-default"><s:message code="label.product.reviews.write" text="Write a review" /></button></a>
+ </sec:authorize>
+ <sec:authorize access="!hasRole('AUTH_CUSTOMER') and !fullyAuthenticated">
+ <p class="muted"><s:message code="label.product.reviews.logon.write" text="You have to be authenticated to write a review" /></p>
+ </sec:authorize>
+
+
+ <c:if test="${reviews!=null}">
+ <c:forEach items="${reviews}" var="review" varStatus="status">
+ <p>
+ <div id="productRating<c:out value="${status.count}"/>" style="width: 100px;">
+ </div>
+ <br/>
+ <blockquote>
+ <p><c:out value="${review.description}" escapeXml="false" /></p>
+ <small><c:out value="${review.customer.firstName}" /> <c:out value="${review.customer.lastName}"/> <c:out value="${rating.date}"/> <c:out value="${review.date}" /></small>
+ </blockquote>
+ </p>
+ <script>
+ $(function() {
+ $('#productRating<c:out value="${status.count}"/>').raty({
+ readOnly: true,
+ half: true,
+ path : '<c:url value="/resources/img/stars/"/>',
+ score: <c:out value="${review.rating}" />
+ });
+ });
+ </script>
+ </c:forEach>
+ </c:if>
+
diff --git a/sm-shop/src/main/webapp/pages/shop/common/checkout/checkout.jsp b/sm-shop/src/main/webapp/pages/shop/common/checkout/checkout.jsp
new file mode 100644
index 0000000..beaa8db
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/checkout/checkout.jsp
@@ -0,0 +1,1109 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<script src="<c:url value="/resources/js/jquery.maskedinput.min.js" />"></script>
+
+<!-- subtotals template -->
+<script type="text/html" id="subTotalsTemplate">
+ {{#subTotals}}
+ <tr class="subt">
+ <td colspan="3">{{title}}</td>
+ <td><strong>{{total}}</strong></td>
+ </tr>
+ {{/subTotals}}
+</script>
+
+<!-- total template -->
+<script type="text/html" id="totalTemplate">
+ <span style="float:right">
+ <font class="total-box-label">
+ <s:message code="order.total.total" text="Total"/>
+ <font class="total-box-price">{{grandTotal}}</font>
+ </font>
+ </span>
+</script>
+
+<!-- shipping template -->
+<script type="text/html" id="shippingTemplate">
+
+ <label class="control-label">
+ <s:message code="label.shipping.options" text="Shipping options"/>
+ {{#showHandling}}
+ (<s:message code="label.shipping.handlingfees" text="Handling fees" /> {{handlingText}})
+ {{/showHandling}}
+ </label>
+ <div class="controls">
+ {{#shippingOptions}}
+ <label class="radio">
+ <input type="radio" name="selectedShippingOption.optionId" class="shippingOption" id="{{optionId}}" value="{{optionId}}" {{#checked}} checked="checked"{{/checked}}>
+ {{optionName}} - {{optionPriceText}}
+ </label>
+ {{/shippingOptions}}
+ </div>
+
+</script>
+
+
+<script>
+
+<!-- checkout form id -->
+var checkoutFormId = '#checkoutForm';
+var formErrorMessageId = '#formErrorMessage';
+
+
+function isFormValid() {
+ $(formErrorMessageId).hide();//reset error message
+ var $inputs = $(checkoutFormId).find(':input');
+ var valid = true;
+ var firstErrorMessage = null;
+ $inputs.each(function() {
+ if($(this).hasClass('required')) {
+ var fieldValid = isFieldValid($(this));
+ if(!fieldValid) {
+ if(firstErrorMessage==null) {
+ if($(this).attr('title')) {
+ firstErrorMessage = $(this).attr('title');
+ }
+ }
+ valid = false;
+ }
+ }
+ if($(this).hasClass('email')) {
+ var emailValid = validateEmail($(this).val());
+ //console.log('Email is valid ? ' + emailValid);
+ if(!emailValid) {
+ if(firstErrorMessage==null) {
+ firstErrorMessage = '<s:message code="messages.invalid.email" text="Invalid email address"/>';
+ valid = false;
+ }
+ }
+ }
+ });
+
+ //display - hide shipping
+ if ($('#shipToBillingAdress').is(':checked')) {
+ $('#deliveryBox').hide();
+ } else {
+ $('#deliveryBox').show();
+ }
+
+ //console.log('Form is valid ? ' + valid);
+ if(valid==false) {//disable submit button
+ if(firstErrorMessage!=null) {
+ $(formErrorMessageId).addClass('alert-error');
+ $(formErrorMessageId).removeClass('alert-success');
+ $(formErrorMessageId).html('<img src="<c:url value="/resources/img/icon_error.png"/>" width="40"/> <strong><font color="red">' + firstErrorMessage + '</font></strong>');
+ $(formErrorMessageId).show();
+ }
+ $('#submitOrder').addClass('btn-disabled');
+ $('#submitOrder').prop('disabled', true);
+ } else {
+ $(formErrorMessageId).removeClass('alert-error');
+ $(formErrorMessageId).addClass('alert-success');
+ $(formErrorMessageId).html('<img src="<c:url value="/resources/img/icon_success.png"/>" width="40"/> <strong><s:message code="message.order.canprocess" text="The order can be completed"/></strong>');
+ $(formErrorMessageId).show();
+ $('#submitOrder').removeClass('btn-disabled');
+ $('#submitOrder').prop('disabled', false);
+ }
+}
+
+function setPaymentModule(module) {
+ //console.log('Module - ' + module);
+ $('#paymentModule').val(module);
+}
+
+function isFieldValid(field) {
+ var validateField = true;
+ var fieldId = field.prop('id');
+ var value = field.val();
+ if (fieldId.indexOf("creditcard") >= 0) {
+ validateField = false; //ignore credit card number field
+ }
+ if(!field.is(':visible')) {
+ validateField = false; //ignore invisible fields
+ }
+ //shipping information
+ <c:if test="${shippingQuote!=null}">
+ if ($('#shipToBillingAdress').is(':checked')) {
+ //validate shipping fields
+ if (fieldId.indexOf("delivery") >= 0) {
+ validateField = false; //ignore shipping fields when ship to billing
+ }
+ }
+ </c:if>
+ <c:if test="${fn:length(paymentMethods)>0}">
+ //if any payment option need validation insert here
+ //console.log($('input[name=paymentMethodType]:checked', checkoutFormId).val());
+ if($('input[name=paymentMethodType]:checked', checkoutFormId).val()=='CREDITCARD') {
+ if (fieldId.indexOf("creditcard") >= 0) {
+ if(fieldId!='creditcard_card_number') {
+ validateField = true;// but validate credit card fields when credit card is selected
+ }
+ if(fieldId=='creditcard_card_number') {
+ return isCreditCardValid();// validate credit card number differently
+ }
+ }
+ }
+ </c:if>
+ if(!validateField) {
+ return true;
+ }
+ if(!emptyString(value)) {
+ field.css('background-color', '#FFF');
+ return true;
+ } else {
+ field.css('background-color', '#FFC');
+ return false;
+ }
+}
+
+$.fn.addItems = function(div, data, defaultValue) {
+ //console.log('Populating div ' + div + ' defaultValue ' + defaultValue);
+ var selector = div + ' > option';
+ var defaultExist = false;
+ $(selector).remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ //console.log(itemData.code + ' ' + defaultValue);
+ if(itemData.code==defaultValue) {
+ defaultExist = true;
+ }
+ var option = new Option(itemData.name, itemData.code);
+ list.add(option);
+ });
+ if(defaultExist && (defaultValue!=null && defaultValue!='')) {
+ $(div).val(defaultValue);
+ }
+ });
+};
+
+$.fn.serializeObject = function()
+{
+ var o = {};
+ var a = this.serializeArray();
+ $.each(a, function() {
+ if (o[this.name]) {
+ if (!o[this.name].push) {
+ o[this.name] = [o[this.name]];
+ }
+ o[this.name].push(this.value || '');
+ } else {
+ o[this.name] = this.value || '';
+ }
+ });
+ return o;
+};
+
+function showErrorMessage(message) {
+
+
+ showResponseErrorMessage(message);
+ $('#submitOrder').addClass('btn-disabled');
+ $('#submitOrder').prop('disabled', true);
+
+ $(formErrorMessageId).addClass('alert-error');
+ $(formErrorMessageId).removeClass('alert-success');
+ $(formErrorMessageId).html('<img src="<c:url value="/resources/img/icon_error.png"/>" width="40"/> <strong><font color="red">' + message + '</font></strong>');
+ $(formErrorMessageId).show();
+
+}
+
+function showResponseErrorMessage(message) {
+
+ $('#checkoutError').addClass('alert');
+ $('#checkoutError').addClass('alert-error');
+ $('#checkoutError').html(message);
+
+}
+
+function resetErrorMessage() {
+
+ $('#checkoutError').html('');
+ $('#checkoutError').removeClass('alert');
+ $('#checkoutError').removeClass('alert-error');
+ $('.error').html('');
+
+}
+
+
+
+/**
+ * Specify
+ * div list container
+ * text div (shown or not)
+ * selected countryCode
+ * preselected value
+ * callback to invoke
+ */
+function getZones(listDiv, textDiv, countryCode, defaultValue, callBackFunction){
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/shop/reference/provinces.html"/>',
+ data: 'countryCode=' + countryCode + '&lang=${requestScope.LANGUAGE.code}',
+ dataType: 'json',
+ success: function(response){
+ var status = response.response.status;
+ var data = response.response.data;
+ //console.log(status);
+ if((status==0 || status ==9999) && data) {
+
+
+ //console.log(data);
+ if(data && data.length>0) {
+ $(listDiv).show();
+ $(textDiv).hide();
+ $(listDiv).addItems(listDiv, data, defaultValue);
+ } else {
+ $(listDiv).hide();
+ $(textDiv).show();
+ if(defaultValue!=null || defaultValue !='') {
+ $(textDiv).val(defaultValue);
+ }
+ }
+ } else {
+ $(listDiv).hide();
+ $(textDiv).show();
+ }
+ isFormValid();
+ if(callBackFunction!=null) {
+ callBackFunction();
+ }
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+ });
+
+}
+
+
+function setCountrySettings(prefix, countryCode) {
+ //add masks to your country
+ //console.log('Apply mask ' + countryCode);
+
+ var phoneSelector = '.' + prefix + '-phone';
+ var postalCodeSelector = '.' + prefix + '-postalCode';
+
+ if(countryCode=='CA') {//mask for canada
+ $(phoneSelector).mask("?(999) 999-9999");
+ $(postalCodeSelector).mask("?*** ***");
+ return;
+ }
+ if(countryCode=='US') {// mask for united states
+ $(phoneSelector).mask("?(999) 999-9999");
+ $(postalCodeSelector).mask("?99999");
+ return;
+ }
+
+ $(phoneSelector).unmask();
+ $(postalCodeSelector).unmask();
+
+
+}
+
+
+
+function bindActions() {
+ $(".shippingOption").click(function() {
+ calculateTotal();
+ });
+
+ <!-- shipping / billing decision -->
+ $("#shipToBillingAdress").click(function() {
+ shippingQuotes();
+ if ($('#shipToBillingAdress').is(':checked')) {
+ $('#deliveryBox').hide();
+ isFormValid();
+ } else {
+ $('#deliveryBox').show();
+ isFormValid();
+ }
+ });
+
+ $("#submitOrder").click(function(e) {
+ e.preventDefault();//do not submit form
+ resetErrorMessage();
+ setCountrySettings('billing',$('.billing-country-list').val());
+ setCountrySettings('delivery',$('.shipping-country-list').val());
+ $('#pageContainer').showLoading();
+ var paymentSelection = $('input[name=paymentMethodType]:checked', checkoutFormId).val();
+ if(paymentSelection.indexOf('PAYPAL')!=-1) {
+ initPayment(paymentSelection);
+ } else {
+ //submit form
+ $('#pageContainer').hideLoading();
+ $('#checkoutForm').submit();
+
+ }
+ });
+}
+
+
+
+function shippingQuotes(){
+ resetErrorMessage();
+ $('#pageContainer').showLoading();
+ var data = $(checkoutFormId).serialize();
+ //console.log(data);
+
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/shop/order/shippingQuotes.html"/>',
+ data: data,
+ cache: false,
+ dataType: 'json',
+ success: function(response){
+
+ $('#pageContainer').hideLoading();
+ if(response.errorMessage!=null && response.errorMessage!='') {
+ showErrorMessage(response.errorMessage);
+ return;
+ }
+
+ //console.log(response);
+
+ $('#summary-table tr.subt').remove();
+ $('#totalRow').html('');
+ var subTotalsTemplate = Hogan.compile(document.getElementById("subTotalsTemplate").innerHTML);
+ var totalTemplate = Hogan.compile(document.getElementById("totalTemplate").innerHTML);
+ var quotesTemplate = Hogan.compile(document.getElementById("shippingTemplate").innerHTML);
+ var subTotalsRendered = subTotalsTemplate.render(response);
+ var totalRendred = totalTemplate.render(response);
+
+ if(response.shippingSummary!=null) {
+ //create extra fields
+ summary = response.shippingSummary;
+ for(var i = 0; i< summary.shippingOptions.length; i++) {
+ if(summary.shippingOptions[i].optionId == summary.selectedShippingOption.optionId) {
+ summary.shippingOptions[i].checked = true;
+ break;
+ }
+ }
+ if(summary.handling && summary.handling>0) {
+ summary.showHandling = true;
+ }
+
+ //render summary
+ $('#shippingSection').html('');
+ var quotesRendered = quotesTemplate.render(response.shippingSummary);
+ //console.log(quotesRendered);
+ $('#shippingSection').html(quotesRendered);
+ bindActions();
+ }
+ $('#summaryRows').append(subTotalsRendered);
+ $('#totalRow').html(totalRendred);
+ isFormValid();
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ $('#pageContainer').hideLoading();
+ alert('error ' + errorThrown);
+ }
+
+ });
+
+}
+
+function initPayment(paymentSelection) {
+ var url = '<c:url value="/shop/order/payment/init/"/>' + paymentSelection + '.html';
+ var data = $(checkoutFormId).serialize();
+ $.ajax({
+ type: 'POST',
+ url: url,
+ data: data,
+ cache: false,
+ dataType: 'json',
+ success: function(response){
+ $('#pageContainer').hideLoading();
+ var resp = response.response;
+ var status = resp.status;
+ console.log(status);
+ if(status==0 || status ==9999) {
+
+ var data = resp.url;
+ console.log(resp.url);
+ location.href=resp.url;
+
+ } else if(status==-2) {//validation issues
+
+ console.log(resp.validations);
+ var globalMessage = '';
+ for(var i = 0; i< resp.validations.length; i++) {
+ var fieldName = resp.validations[i].field;
+ var message = resp.validations[i].message;
+ console.log(fieldName + ' - ' + message);
+ //query for the field
+ var f = $(document.getElementById('error-'+fieldName));
+ if(f) {
+ f.html(message);
+ }
+ globalMessage = globalMessage + message + '<br/>';
+
+ }
+
+ showResponseErrorMessage(globalMessage);
+
+
+ } else {
+ console.log('Wrong status ' + status);
+ showResponseErrorMessage('<s:message code="error.code.99" text="An error message occured while trying to process the payment (99)"/>');
+
+ }
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ $('#pageContainer').hideLoading();
+ alert('error ' + errorThrown);
+ }
+
+ });
+
+}
+
+
+function calculateTotal(){
+ resetErrorMessage();
+ $('#pageContainer').showLoading();
+ var data = $(checkoutFormId).serialize();
+ //console.log(data);
+
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/shop/order/calculateOrderTotal.html"/>',
+ data: data,
+ cache: false,
+ dataType: 'json',
+ success: function(response){
+
+ $('#pageContainer').hideLoading();
+ if(response.errorMessage!==null && response.errorMessage!=='') {
+ showErrorMessage(response.errorMessage);
+ return;
+ }
+
+ //console.log(response);
+
+ $('#summary-table tr.subt').remove();
+ $('#totalRow').html('');
+ var subTotalsTemplate = Hogan.compile(document.getElementById("subTotalsTemplate").innerHTML);
+ var totalTemplate = Hogan.compile(document.getElementById("totalTemplate").innerHTML);
+ var subTotalsRendered = subTotalsTemplate.render(response);
+ var totalRendred = totalTemplate.render(response);
+
+
+ //console.log(rendered);
+ $('#summaryRows').append(subTotalsRendered);
+ $('#totalRow').html(totalRendred);
+ isFormValid();
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ $('#pageContainer').hideLoading();
+ alert('error ' + errorThrown);
+ }
+
+ });
+}
+
+
+
+$(document).ready(function() {
+
+ <!--
+ //can use masked input for phone (USA - CANADA)
+ -->
+ isFormValid();
+
+ bindActions();
+
+ $("input[type='text']").on("change keyup paste", function(){
+ isFormValid();
+ });
+
+ <c:if test="${order.customer.billing.country!=null}">
+ $('.billing-country-list').val('${order.customer.billing.country}');
+ setCountrySettings('billing','${order.customer.billing.country}');
+ </c:if>
+ <c:if test="${order.customer.delivery.country!=null}">
+ $('.shipping-country-list').val('${order.customer.delivery.country}');
+ setCountrySettings('delivery','${order.customer.delivery.country}');
+ </c:if>
+
+ <!-- customer state is text -->
+ <c:if test="${order.customer.billing.stateProvince!=null && order.customer.billing.stateProvince!=null !=''}">
+ $('#billingStateList').hide();
+ $('#billingStateProvince').show();
+ $('#billingStateProvince').val('<c:out value="${order.customer.billing.stateProvince}"/>');
+ </c:if>
+ <!-- customer state is a know state -->
+ <c:if test="${order.customer.billing.stateProvince==null || order.customer.billing.stateProvince==''}">
+ $('#billingStateList').show();
+ $('#billingStateProvince').hide();
+ getZones('#billingStateList','#billingStateProvince','<c:out value="${order.customer.billing.country}" />','<c:out value="${order.customer.billing.zone}" />', null);
+ </c:if>
+
+ <c:if test="${order.customer.delivery.stateProvince!=null && order.customer.delivery.stateProvince!=''}">
+ $('#deliveryStateList').hide();
+ $('#deliveryStateProvince').show();
+ $('#deliveryStateProvince').val('<c:out value="${order.customer.delivery.stateProvince}"/>');
+ </c:if>
+
+ <c:if test="${order.customer.delivery.stateProvince==null || order.customer.delivery.stateProvince==''}">
+ $('#deliveryStateList').show();
+ $('#deliveryStateProvince').hide();
+ getZones('#deliveryStateList','#deliveryStateProvince','<c:out value="${order.customer.delivery.country}" />','<c:out value="${order.customer.billing.zone}" />', null);
+ </c:if>
+
+ $(".billing-country-list").change(function() {
+ getZones('#billingStateList','#billingStateProvince',$(this).val(),'<c:out value="${order.customer.billing.zone}" />', shippingQuotes);
+ setCountrySettings('billing',$(this).val());
+ })
+
+ $(".shipping-country-list").change(function() {
+ getZones('#deliveryStateList','#deliveryStateProvince',$(this).val(),'<c:out value="${order.customer.delivery.zone}" />', shippingQuotes);
+ setCountrySettings('delivery',$(this).val());
+ })
+
+ $("#billingStateList").change(function() {
+ shippingQuotes();
+ })
+
+ $("#shippingStateList").change(function() {
+ shippingQuotes();
+ })
+
+
+
+
+
+
+
+ $('input[name=paymentMethodType]', checkoutFormId).click(function() {
+ isFormValid();//change payment method
+ });
+
+ $("input[id=billingPostalCode]").blur(function() {
+ shippingQuotes();
+ });
+
+ $("input[id=shippingPostalCode]").blur(function() {
+ if (!$('#shipToBillingAdress').is(':checked')) {
+ shippingQuotes();
+ }
+ });
+
+
+
+});
+
+
+
+
+</script>
+
+ <div id="main-content">
+ <h1><s:message code="label.checkout" text="Checkout" /></h1>
+ <sec:authorize access="!hasRole('AUTH_CUSTOMER') and !fullyAuthenticated">
+ <p class="muted"><s:message code="label.checkout.logon" text="Logon or signup to simplify the online purchase process!"/></p>
+ </sec:authorize>
+
+ <c:set var="commitUrl" value="${pageContext.request.contextPath}/shop/order/commitOrder.html"/>
+ <form:form id="checkoutForm" method="POST" enctype="multipart/form-data" commandName="order" action="${commitUrl}">
+
+
+ <div class="row-fluid" id="checkout">
+ <div class="span12">
+
+
+ <!-- If error messages -->
+ <div id="checkoutError" class="<c:if test="${errorMessages!=null}">alert alert-error </c:if>">
+ <c:if test="${errorMessages!=null}">
+ <c:out value="${errorMessages}" />
+ </c:if>
+ </div>
+ <!--alert-error-->
+
+ <!-- row fluid span -->
+ <div class="row-fluid">
+ <!-- left column -->
+ <div class="span8">
+
+ <!-- Billing box -->
+ <div id="shippingBox" class="box">
+ <span class="box-title">
+ <p class="p-title"><s:message code="label.customer.billinginformation" text="Billing information"/></p>
+ </span>
+
+
+
+ <!-- First name - Last name -->
+ <div class="row-fluid">
+ <div class="span4">
+
+ <div class="control-group">
+ <label><s:message code="label.generic.firstname" text="First Name"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.firstName" text="First name is required" var="msgFirstName"/>
+ <form:input id="customer.firstName" cssClass="input-large required" path="customer.billing.firstName" title="${msgFirstName}"/>
+ <form:errors path="customer.billing.firstName" cssClass="error" />
+ <span id="error-customer.billing.firstName" class="error"></span>
+ </div>
+ </div>
+ </div>
+ <div class="span4">
+ <div class="control-group">
+ <label><s:message code="label.generic.lastname" text="Last Name"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.lastName" text="Last name is required" var="msgLastName"/>
+ <form:input id="customer.lastName" cssClass="input-large required" maxlength="32" path="customer.billing.lastName" title="${msgLastName}" />
+ <form:errors path="customer.billing.lastName" cssClass="error" />
+ <span id="error-customer.billing.lastName" class="error"></span>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+ <!-- email company -->
+ <div class="row-fluid">
+ <div class="span4">
+ <div class="control-group">
+ <label><s:message code="label.generic.email" text="Email address"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.emailAddress" text="Email address is required" var="msgEmail"/>
+ <form:input id="customer.emailAddress" cssClass="input-large required email" path="customer.emailAddress" title="${msgEmail}"/>
+ <form:errors path="customer.emailAddress" cssClass="error" />
+ <span id="error-customer.emailAddress" class="error"></span>
+ </div>
+ </div>
+ </div>
+ <div class="span4">
+ <div class="control-group">
+ <label><s:message code="label.customer.billing.company" text="Billing company"/></label>
+ <div class="controls">
+ <form:input id="customer.billing.company" cssClass="input-large" path="customer.billing.company"/>
+ <form:errors path="customer.billing.company" cssClass="error" />
+ <span id="error-customer.billing.company" class="error"></span>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- street address -->
+ <div class="row-fluid">
+ <div class="control-group">
+ <label><s:message code="label.generic.streetaddress" text="Street address"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.billing.address" text="Address is required" var="msgAddress"/>
+ <form:input id="customer.billing.address" cssClass="input-xxlarge required" path="customer.billing.address" title="${msgAddress}"/>
+ <form:errors path="customer.billing.address" cssClass="error" />
+ <span id="error-customer.billing.address" class="error"></span>
+ </div>
+ </div>
+ </div>
+
+ <!-- city - postal code -->
+ <div class="row-fluid">
+ <div class="span4">
+ <div class="control-group">
+ <label><s:message code="label.generic.city" text="City"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.billing.city" text="City is required" var="msgCity"/>
+ <form:input id="customer.billing.city" cssClass="input-large required" path="customer.billing.city" title="${msgCity}"/>
+ <form:errors path="customer.billing.city" cssClass="error" />
+ <span id="error-customer.billing.city" class="error"></span>
+ </div>
+ </div>
+ </div>
+ <div class="span4">
+ <div class="control-group">
+ <label><s:message code="label.generic.postalcode" text="Postal code"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.billing.postalCode" text="Postal code is required" var="msgPostalCode"/>
+ <form:input id="billingPostalCode" cssClass="input-large required billing-postalCode" path="customer.billing.postalCode" title="${msgPostalCode}"/>
+ <form:errors path="customer.billing.postalCode" cssClass="error" />
+ <span id="error-customer.billing.postalCode" class="error"></span>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- state province -->
+ <div class="row-fluid">
+ <div class="control-group">
+ <label><s:message code="label.generic.stateprovince" text="State / Province"/></label>
+ <div class="controls">
+ <form:select cssClass="zone-list" id="billingStateList" path="customer.billing.zone"/>
+ <s:message code="NotEmpty.customer.billing.stateProvince" text="State / Province is required" var="msgStateProvince"/>
+ <form:input class="input-large required" id="billingStateProvince" maxlength="100" name="billingStateProvince" path="customer.billing.stateProvince" title="${msgStateProvince}"/>
+ <form:errors path="customer.billing.stateProvince" cssClass="error" />
+ <span id="error-customer.billing.stateProvince" class="error"></span>
+ </div>
+ </div>
+ </div>
+
+ <!-- country - phone - ship checkbox -->
+ <div class="row-fluid">
+ <div class="control-group">
+ <label><s:message code="label.generic.country" text="Country"/></label>
+ <div class="controls">
+ <form:select cssClass="billing-country-list" path="customer.billing.country">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.generic.phone" text="Phone number"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.billing.phone" text="Phone number is required" var="msgPhone"/>
+ <form:input id="customer.billing.phone" cssClass="input-large required billing-phone" path="customer.billing.phone" title="${msgPhone}"/>
+ <form:errors path="customer.billing.phone" cssClass="error" />
+ <span id="error-customer.billing.phone" class="error"></span>
+ </div>
+ </div>
+
+ <c:if test="${shippingQuote!=null}">
+ <!-- display only if a shipping quote exist -->
+ <label id="useAddress" class="checkbox">
+ <form:checkbox path="shipToBillingAdress" id="shipToBillingAdress"/>
+ <s:message code="label.customer.shipping.shipaddress" text="Ship to this address" /></label>
+ </c:if>
+ </div>
+ </div>
+ <!-- end billing box -->
+
+ <c:if test="${shippingQuote!=null}">
+ <br/>
+ <!-- Shipping box -->
+ <div id="deliveryBox" class="box">
+ <span class="box-title">
+ <p class="p-title"><s:message code="label.customer.shippinginformation" text="Shipping information"/></p>
+ </span>
+
+ <!-- First name - Last name -->
+ <div class="row-fluid">
+ <div class="span4">
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.firtsname" text="Shipping first name"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.shipping.firstName" text="Shipping first name should not be empty" var="msgShippingFirstName"/>
+ <form:input id="customer.delivery.name" cssClass="input-xxlarge required" path="customer.delivery.firstName" title="${msgShippingFirstName}"/>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="row-fluid">
+ <div class="span4">
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.lastname" text="Shipping last name"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.shipping.lastName" text="Shipping last name should not be empty" var="msgShippingLastName"/>
+ <form:input id="customer.delivery.name" cssClass="input-xxlarge required" path="customer.delivery.lastName" title="${msgShippingLastName}"/>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- company -->
+ <div class="row-fluid">
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.company" text="Shipping company"/></label>
+ <div class="controls">
+ <form:input id="customer.delivery.company" cssClass="input-large" path="customer.delivery.company"/>
+ </div>
+ </div>
+ </div>
+
+ <!-- street address -->
+ <div class="row-fluid">
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.streetaddress" text="Shipping street address"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.shipping.address" text="Shipping street address should not be empty" var="msgShippingAddress"/>
+ <form:input id="customer.delivery.address" cssClass="input-xxlarge required" path="customer.delivery.address" title="${msgShippingAddress}"/>
+ </div>
+ </div>
+ </div>
+
+ <!-- city - postal code -->
+ <div class="row-fluid">
+ <div class="span4">
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.city" text="Shipping city"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.shipping.city" text="Shipping city should not be empty" var="msgShippingCity"/>
+ <form:input id="customer.delivery.city" cssClass="input-large required" path="customer.delivery.city" title="${msgShippingCity}"/>
+ </div>
+ </div>
+ </div>
+ <div class="span4">
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.postalcode" text="Shipping postal code"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.shipping.postalcode" text="Shipping postal code should not be empty" var="msgShippingPostal"/>
+ <form:input id="deliveryPostalCode" cssClass="input-large required delivery-postalCode" path="customer.delivery.postalCode" title="${msgShippingPostal}"/>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- state province -->
+ <div class="row-fluid">
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.zone" text="Shipping state / province"/></label>
+ <div class="controls">
+ <form:select cssClass="zone-list" id="deliveryStateList" path="customer.delivery.zone"/>
+ <s:message code="NotEmpty.customer.shipping.stateProvince" text="Shipping State / Province is required" var="msgShippingState"/>
+ <form:input class="input-large required" id="deliveryStateProvince" maxlength="100" name="shippingStateProvince" path="customer.delivery.stateProvince" title="${msgShippingState}"/>
+ </div>
+ </div>
+ </div>
+
+ <!-- country -->
+ <div class="row-fluid">
+ <div class="control-group">
+ <label><s:message code="label.customer.shipping.country" text="Shipping country"/></label>
+ <div class="controls">
+ <form:select cssClass="shipping-country-list" path="customer.delivery.country">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ </div>
+ </div>
+ </div>
+ </div>
+ </c:if>
+
+
+
+
+
+ <!-- Shipping box -->
+ <c:if test="${shippingQuote!=null}">
+ <br/>
+ <!-- Shipping -->
+ <div class="box">
+ <span class="box-title">
+ <p class="p-title"><s:message code="label.shipping.fees" text="Shipping fees" /> </p>
+ </span>
+
+ <c:choose>
+ <c:when test="${fn:length(shippingQuote.shippingOptions)>0}">
+ <input type="hidden" name="shippingModule" value="${shippingQuote.shippingModuleCode}">
+ <div id="shippingSection" class="control-group">
+ <label class="control-label">
+ <s:message code="label.shipping.options" text="Shipping options"/>
+ <c:if test="${shippingQuote.handlingFees!=null && shippingQuote.handlingFees>0}">
+ (<s:message code="label.shipping.handlingfees" text="Handling fees" /> <sm:monetary value="${shippingQuote.handlingFees}"/>)
+ </c:if>
+ </label>
+ <div class="controls">
+ <c:forEach items="${shippingQuote.shippingOptions}" var="option" varStatus="status">
+ <label class="radio">
+ <input type="radio" name="selectedShippingOption.optionId" class="shippingOption" id="${option.optionId}" value="${option.optionId}" <c:if test="${order.selectedShippingOption!=null && order.selectedShippingOption.optionId==option.optionId}">checked="checked"</c:if>>
+ ${option.optionName} - ${option.optionPriceText}
+ </label>
+ </c:forEach>
+ </div>
+ </div>
+ </c:when>
+ <c:otherwise>
+ <c:choose>
+ <c:when test="${shippingQuote.freeShipping==true && shippingQuote.freeShippingAmount!=null}" >
+ <s:message code="label.shipping.freeshipping.over" text="Free shipping for orders over"/> <strong><sm:monetary value="${shippingQuote.freeShippingAmount}"/></strong>
+ </c:when>
+ <c:otherwise>
+ <c:choose>
+ <c:when test="${shippingQuote.quoteError!=null}">
+ <font color="red"><c:out value="${shippingQuote.quoteError}" /></font>
+ </c:when>
+ <c:otherwise>
+ <c:choose>
+ <c:when test="${shippingQuote.shippingReturnCode=='NO_SHIPPING_MODULE_CONFIGURED'}">
+ <font color="red"><s:message code="message.noshipping.configured" text="No shipping method configured"/></font>
+ </c:when>
+ <c:otherwise>
+ <strong><s:message code="label.shipping.freeshipping" text="Free shipping!"/></strong>
+ </c:otherwise>
+ </c:choose>
+ </c:otherwise>
+ </c:choose>
+ </c:otherwise>
+ </c:choose>
+ </c:otherwise>
+ </c:choose>
+ </div>
+ <!-- end shipping box -->
+ </c:if>
+ <br/>
+
+ <c:if test="${fn:length(paymentMethods)>0}">
+ <!-- payment box -->
+ <div class="box">
+ <span class="box-title">
+ <p class="p-title"><s:message code="label.payment.module.title" text="Payment method" /></p>
+ </span>
+
+ <div class="tabbable">
+ <ul class="nav nav-tabs">
+ <c:forEach items="${paymentMethods}" var="paymentMethod">
+ <li class="<c:choose><c:when test="${order.paymentMethodType!=null && order.paymentMethodType==paymentMethod.paymentType}">active</c:when><c:otherwise><c:if test="${order.paymentMethodType==null && paymentMethod.defaultSelected==true}">active</c:if></c:otherwise></c:choose>">
+ <a href="#${paymentMethod.paymentType}" data-toggle="tab">
+ <c:choose>
+ <c:when test="${paymentMethod.paymentType=='CREDITCARD' || paymentMethod.paymentType=='PAYPAL'}">
+ <c:if test="${paymentMethod.paymentType=='CREDITCARD'}">
+ <img src="<c:url value="/resources/img/payment/icons/visa-straight-64px.png"/>" width="40">
+ <img src="<c:url value="/resources/img/payment/icons/mastercard-straight-64px.png"/>" width="40">
+ <img src="<c:url value="/resources/img/payment/icons/american-express-straight-64px.png"/>" width="40">
+ </c:if>
+ <c:if test="${paymentMethod.paymentType=='PAYPAL'}"><img src="<c:url value="/resources/img/payment/icons/paypal-straight-64px.png"/>" width="40"></c:if>
+ </c:when>
+ <c:otherwise>
+ <h4><s:message code="payment.type.${paymentMethod.paymentType}" text="Payment method type [payment.type.${paymentMethod.paymentType}] not defined in payment.properties" /></h4>
+ </c:otherwise>
+ </c:choose>
+ </a>
+ </li>
+ </c:forEach>
+ </ul>
+
+
+
+
+ <div class="tab-content">
+ <c:forEach items="${paymentMethods}" var="paymentMethod">
+ <div class="tab-pane <c:choose><c:when test="${order.paymentMethodType!=null && order.paymentMethodType==paymentMethod.paymentType}">active</c:when><c:otherwise><c:if test="${order.paymentMethodType==null && paymentMethod.defaultSelected==true}">active</c:if></c:otherwise></c:choose>" id="${paymentMethod.paymentType}">
+ <c:choose>
+ <c:when test="${order.paymentMethodType!=null && order.paymentMethodType==paymentMethod.paymentType}">
+ <c:set var="paymentModule" value="${order.paymentMethodType}" scope="request"/>
+ </c:when>
+ <c:otherwise>
+ <c:if test="${order.paymentMethodType==null && paymentMethod.defaultSelected==true}">
+ <c:set var="paymentModule" value="${paymentMethod.paymentMethodCode}" scope="request"/>
+ </c:if>
+ </c:otherwise>
+ </c:choose>
+ <c:set var="selectedPaymentMethod" value="${order.paymentMethodType}" scope="request"/>
+ <c:set var="paymentMethod" value="${paymentMethod}" scope="request"/>
+ <c:set var="pageName" value="${fn:toLowerCase(paymentMethod.paymentType)}" />
+ <jsp:include page="/pages/shop/common/checkout/${pageName}.jsp" />
+ </div>
+ </c:forEach>
+
+ <input type="hidden" id="paymentModule" name="paymentModule" value="<c:choose><c:when test="${order.paymentModule!=null}"><c:out value="${order.paymentModule}"/></c:when><c:otherwise><c:out value="${paymentModule}" /></c:otherwise></c:choose>"/>
+ </div>
+ </div>
+ </div>
+ <!-- end payment box -->
+ </c:if>
+
+
+
+
+
+ </div>
+ <!-- end left column -->
+
+
+ <!-- Order summary right column -->
+ <div class="span4">
+
+ <!-- order summary box -->
+ <div class="box">
+ <span id="summaryBox" class="box-title">
+ <p class="p-title"><s:message code="label.order.summary" text="Order summary" /></p>
+ </span>
+
+ <table id="summary-table" class="table table-condensed">
+ <thead>
+ <tr>
+ <th width="55%"><s:message code="label.order.item" text="Item" /></th>
+ <th width="15%"><s:message code="label.quantity" text="Quantity" /></th>
+ <th width="15%"><s:message code="label.order.price" text="Price" /></th>
+ <th width="15%"><s:message code="label.order.total" text="Total" /></th>
+ </tr>
+ </thead>
+
+ <tbody id="summaryRows">
+ <c:forEach items="${cart.shoppingCartItems}" var="shoppingCartItem">
+ <tr class="item">
+ <td>
+ ${shoppingCartItem.name}
+ <c:if test="${fn:length(shoppingCartItem.shoppingCartAttributes)>0}">
+ <br/>
+ <ul>
+ <c:forEach items="${shoppingCartItem.shoppingCartAttributes}" var="option">
+ <li>${option.optionName} - ${option.optionValue}</li>
+ </c:forEach>
+ </ul>
+ </c:if>
+ </td>
+ <td >${shoppingCartItem.quantity}</td>
+ <td><strong>${shoppingCartItem.price}</strong></td>
+ <td><strong>${shoppingCartItem.subTotal}</strong></td>
+ </tr>
+ </c:forEach>
+ <!-- subtotals -->
+ <c:forEach items="${order.orderTotalSummary.totals}" var="total">
+ <c:if test="${total.orderTotalCode!='order.total.total'}">
+ <tr class="subt">
+ <td colspan="3"><s:message code="${total.orderTotalCode}" text="${total.orderTotalCode}"/></td>
+ <td><strong><sm:monetary value="${total.value}" /></strong></td>
+ </tr>
+ </c:if>
+ </c:forEach>
+ </tbody>
+ </table>
+
+
+ <div id="totalRow" class="total-box">
+ <span style="float:right">
+ <font class="total-box-label">
+ <s:message code="order.total.total" text="Total"/>
+ <font class="total-box-price"><sm:monetary value="${order.orderTotalSummary.total}"/></font>
+ </font>
+ </span>
+ </div>
+ </div>
+ <!-- end order summary box -->
+ <br/>
+ <div id="formErrorMessage" class="alert">
+ </div>
+ <!-- Submit -->
+ <div class="form-actions">
+ <div class="pull-right">
+ <button id="submitOrder" type="submit" class="btn btn-large btn-success
+ <c:if test="${errorMessages!=null}"> btn-disabled</c:if>"
+ <c:if test="${errorMessages!=null}"> disabled="true"</c:if>
+ ><s:message code="button.label.submitorder" text="Submit order"/></button>
+
+ </div>
+ </div>
+
+ </div>
+ <!-- end right column -->
+
+ </div>
+ <!-- end row fluid span -->
+ </div>
+ <!-- end span 12 -->
+
+ </div>
+ <!-- end row fluid -->
+
+ </form:form>
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/checkout/confirmation.jsp b/sm-shop/src/main/webapp/pages/shop/common/checkout/confirmation.jsp
new file mode 100644
index 0000000..88cbefd
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/checkout/confirmation.jsp
@@ -0,0 +1,124 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+ removeCart();
+});
+
+</script>
+
+
+
+<c:if test="${requestScope.CONFIGS['google_analytics_url'] != null && confirmation!=null}">
+
+
+<script type="text/javascript">
+//<![CDATA[
+
+
+ if(_gaq) {
+
+
+ //console.log('GAQ ');
+
+ _gaq.push(['_trackPageview']);
+ _gaq.push(['_addTrans',
+ '<c:out value="${order.id}"/>', // order ID - required
+ '<c:out value="${requestScope.MERCHANT_STORE.storename}"/>', //Store Name
+ '<sm:monetary value="${order.total.value}"/>', // total - required
+ '<sm:monetary value="${order.tax.value}"/>', // tax
+ <c:choose>
+ <c:when test="${order.shipping!=null}">
+ '<sm:monetary value="${order.shipping.value}"/>', // shipping
+ </c:when>
+ <c:otherwise>
+ '',
+ </c:otherwise>
+ </c:choose>
+ '<c:out value="${order.customer.billing.city}"/>', // city
+ <c:choose>
+ <c:when test="${order.customer.billing.zone!=null}">
+ '<c:out value="${order.customer.billing.zone}"/>',// state or province
+ </c:when>
+ <c:otherwise>
+ '<c:out value="${order.customer.billing.zone.stateProvince}"/>',// state or province
+ </c:otherwise>
+ </c:choose>
+ '<c:out value="${order.customer.billing.country}"/>' // country
+ ]);
+
+
+ <c:forEach items="${order.products}" var="product" varStatus="status">
+
+ _gaq.push(['_addItem',
+ '<c:out value="${order.id}"/>', // order ID - required
+ '<c:out value="${product.sku}" />', // SKU/code - required
+ '<c:out value="${product.productName}" />', // product name
+ '<c:out value="${product.price}" />', // unit price - required
+ '<c:out value="${product.orderedQuantity}" />' // quantity - required
+ ]);
+
+ </c:forEach>
+
+ _gaq.push(['_trackTrans']); //submits transaction to the Analytics servers
+
+ }
+
+
+ //]]>
+</script>
+
+</c:if>
+
+
+ <div id="main-content" class="container clearfix">
+ <h1><s:message code="label.checkout.confirmation" text="Order completed" /></h1>
+ <div class="row-fluid">
+ <div class="span12">
+
+
+ <p class="lead"><c:out value="${ordermessage}" /></p>
+ <p><c:out value="${orderemail}" /></p>
+
+
+
+ <c:if test="${downloads!=null}">
+ <p>
+ <c:choose>
+ <c:when test="${order.orderStatus.value=='processed'}">
+ <strong><s:message code="label.checkout.downloads.completed" text="label.checkout.downloads.completed"/></strong><br/>
+ <c:forEach items="${downloads}" var="download">
+ <a href="<sm:orderProductDownload productDownload="${download}" orderId="${order.id}"/>"><c:out value="${download.fileName}" /></a>
+ </c:forEach>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.checkout.downloads.processing" text="*** An email with your file(s) download instructions will be sent once the payment for this order will be completed."/>
+ </c:otherwise>
+ </c:choose>
+ </p>
+ </c:if>
+
+ <p class="muted"><s:message code="label.checkout.additionaltext" text="If you have any comments or suggestions for us, please send us an email with your order id. We value your feedback."/></p>
+
+
+ </div>
+
+ </div>
+
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/checkout/creditcard.jsp b/sm-shop/src/main/webapp/pages/shop/common/checkout/creditcard.jsp
new file mode 100644
index 0000000..e2bc2e7
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/checkout/creditcard.jsp
@@ -0,0 +1,139 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<script src="<c:url value="/resources/js/jquery.creditCardValidator.js" />"></script>
+
+<script>$.ajax({url: "<c:url value="/shop/reference/creditCardDates.html"/>",type: "GET",success: function(data){populateData($('#creditCardYears'), data, '${order.payment['creditcard_card_expirationyear']}'); }})</script>
+<script>$.ajax({url: "<c:url value="/shop/reference/monthsOfYear.html"/>",type: "GET",success: function(data){populateData($('#creditCardDays'),data, '${order.payment['creditcard_card_expirationmonth']}'); }})</script>
+
+<script type="text/javascript">
+
+ var img = '<img src="<c:url value="/resources/img/cvv.jpg"/>" width="180">';
+ var ccValid = false;
+
+
+ $(document).ready(function() {
+ $("#cvvImage").popover({ title: '<s:message code="label.payment.creditcard.cardcvv" text="Card validation number" />', content: img });
+ var creditCardDiv = '#creditcard_card_number';
+ invalidCreditCardNumber(creditCardDiv);
+ $(creditCardDiv).validateCreditCard(function(result) {
+ invalidCreditCardNumber(creditCardDiv);
+ if(result.card_type!=null) {
+ //console.log('CC type: ' + result.card_type.name
+ // + '\nLength validation: ' + result.length_valid
+ // + '\nLuhn validation: + result.luhn_valid');
+ if(result.luhn_valid==true && result.length_valid==true) {
+ validCreditCardNumber(creditCardDiv, result);
+ } else {
+ invalidCreditCardNumber(creditCardDiv);
+ }
+ } else {
+ invalidCreditCardNumber(creditCardDiv);
+ }
+ //call parent form valid
+ //isFormValid();
+ },
+ { accept: ['visa', 'mastercard', 'amex'] }
+
+ );
+
+ })
+
+ function invalidCreditCardNumber(div) {
+ $('#creditcard_card_image').html('');
+ $(div).removeClass("valid");
+ $(div).css('background-color', '#FFC');
+ ccValid = false;
+ }
+
+ function validCreditCardNumber(div, creditCard) {
+ $(div).addClass("valid");
+ $(div).css('background-color', '#FFF');
+ $('#creditcard_type').val(creditCard.card_type.name);
+ $('#creditcard_card_image').html('<img src="<c:url value="/resources/img/payment/icons/'+ creditCard.card_type.name +'-straight-32px.png" />"/>');
+ ccValid = true;
+ }
+
+ function isCreditCardValid() {
+ return ccValid;
+ }
+
+ function populateData(div, data, defaultValue) {
+ $.each(data, function() {
+ div.append($('<option/>').val(this).text(this));
+ });
+ if(defaultValue && (defaultValue!=null && defaultValue!='')) {
+ div.val(defaultValue);
+ }
+ }
+
+</script>
+
+
+ <div class="control-group">
+ <label class="control-label"><s:message code="label.payment.creditcard.usecredicard" text="Use your credit card" /></label>
+ <div class="controls">
+ <jsp:include page="/pages/shop/common/checkout/selectedPayment.jsp" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="control-label"><s:message code="label.payment.creditcard.cardowner" text="Card Holder's Name" /></label>
+ <div class="controls">
+ <s:message code="NotEmpty.order.creditcard.name" text="Credit card holder's name is required" var="msgCardHolderName"/>
+ <input type="text" id="creditcard_card_holder" name="payment['creditcard_card_holder']" class="input-xlarge required" title="${msgCardHolderName}" value="${order.payment['creditcard_card_holder']}">
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="control-label"><s:message code="label.payment.creditcard.cardnumber" text="Card number" /></label>
+ <s:message code="NotEmpty.order.creditcard.number" text="A valid credit card number is required" var="msgCardNumber"/>
+ <div class="input-append">
+ <input id="creditcard_card_number" class="input-xlarge valid required" type="text" name="payment['creditcard_card_number']" autocomplete="off" title="${msgCardNumber}">
+ <span id="creditcard_card_image" class="img-add-on"></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="control-label"><s:message code="label.payment.creditcard.cardexpiry" text="Card expiry year" /></label>
+ <div class="controls">
+ <div class="row-fluid">
+ <div class="span2">
+ <select id="creditCardDays" name="payment['creditcard_card_expirationmonth']" class="input-small"></select>
+ </div>
+ <div class="span2">
+ <select id="creditCardYears" name="payment['creditcard_card_expirationyear']" class="input-small"></select>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="control-label"><s:message code="label.payment.creditcard.cardcvv" text="Card validation number" /></label>
+ <div class="controls">
+ <div class="row-fluid">
+ <div class="span2">
+ <s:message code="NotEmpty.order.creditcard.cvv" text="Credit card validation digit is required" var="msgCardCvv"/>
+ <input type="text" id="creditcard_card_cvv" name="payment['creditcard_card_cvv']" class="input-small required" autocomplete="off" maxlength="3" pattern="\d{3}" title="${msgCardCvv}">
+ </div>
+ <div class="span4">
+ <a href="#" id="cvvImage" rel="popover"><s:message code="label.payment.creditcard.whatiscvv" text="What is a credit card validation number?" /></a>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <input type="hidden" name="payment['creditcard_card_type']" id="creditcard_type" value="" />
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/checkout/moneyorder.jsp b/sm-shop/src/main/webapp/pages/shop/common/checkout/moneyorder.jsp
new file mode 100644
index 0000000..d3c5e94
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/checkout/moneyorder.jsp
@@ -0,0 +1,28 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+ <div class="control-group">
+ <label class="control-label"><s:message code="label.payment.moneyorder.usemoneyorder" text="Use money order" /></label>
+ <div class="controls">
+ <jsp:include page="/pages/shop/common/checkout/selectedPayment.jsp" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <s:message code="label.checkout.moneyorder" text="Please make your check or money order payable to:"/><br/>
+ <c:out value="${requestScope.paymentMethod.informations.integrationKeys['address']}" escapeXml="false"/>
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/checkout/paypal.jsp b/sm-shop/src/main/webapp/pages/shop/common/checkout/paypal.jsp
new file mode 100644
index 0000000..7cf9546
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/checkout/paypal.jsp
@@ -0,0 +1,28 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+ <div class="control-group">
+ <label class="control-label"><s:message code="label.payment.paypal.usepaypal" text="Use PayPal"/></label>
+ <div class="controls">
+ <jsp:include page="/pages/shop/common/checkout/selectedPayment.jsp" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <!-- PayPal Logo -->
+ <a href="https://www.paypal.com/webapps/mpp/paypal-popup" title="How PayPal Works" onclick="javascript:window.open('https://www.paypal.com/webapps/mpp/paypal-popup','WIPaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=1060, height=700'); return false;"><img src="https://www.paypalobjects.com/webstatic/mktg/logo/AM_mc_vs_dc_ae.jpg" width="200" border="0" alt="PayPal Acceptance Mark"></a>
+ </div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/checkout/selectedPayment.jsp b/sm-shop/src/main/webapp/pages/shop/common/checkout/selectedPayment.jsp
new file mode 100644
index 0000000..95ea4ca
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/checkout/selectedPayment.jsp
@@ -0,0 +1,28 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+ <span style="margin-left:2px;">
+ <input type="radio" onClick="setPaymentModule('${requestScope.paymentMethod.paymentMethodCode}');" name="paymentMethodType" value="<c:out value="${requestScope.paymentMethod.paymentType}"/>" <c:choose><c:when test="${requestScope.selectedPaymentMethod!=null && (requestScope.selectedPaymentMethod==requestScope.paymentMethod.paymentType)}"> checked</c:when><c:otherwise><c:if test="${requestScope.selectedPaymentMethod==null && requestScope.paymentMethod.defaultSelected==true}"> checked</c:if></c:otherwise></c:choose>/>
+ </span>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/address.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/address.jsp
new file mode 100644
index 0000000..e91252b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/address.jsp
@@ -0,0 +1,141 @@
+
+<%
+ response.setCharacterEncoding( "UTF-8" );
+ response.setHeader( "Cache-Control", "no-cache" );
+ response.setHeader( "Pragma", "no-cache" );
+ response.setDateHeader( "Expires", -1 );
+%>
+<script>
+function editAddress(formId){
+ $( "#editBillingAddress_"+formId).submit();
+}
+function editShippingAddress(formId){
+ $( "#editShippingAddress_"+formId).submit();
+}
+function addShippingAddress(formId){
+ $( "#addShippingAddress_"+formId).submit();
+}
+
+
+</script>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<c:url var="editAddress" value="/shop/customer/editAddress.html"/>
+<div id="main-content" class="container clearfix">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <div class="span8">
+ <div class="box">
+ <span class="box-title">
+ <p class="p-title">
+ <s:message
+ code="label.customer.billingaddress" text="Billing Address" />
+ <a href="javascript:void(0)" onclick="editAddress('${customer.id}');"><s:message code="label.generic.edit" text="Edit"/></a>
+ </p>
+ </span>
+
+ <c:if test="${not empty customer}">
+
+ <form:form action="${editAddress}" method="GET" id="editBillingAddress_${customer.id}">
+ <input type="hidden" name="customerId" value="${customer.id}">
+ <input type="hidden" name="billingAddress" value="true"/>
+ <address>
+ <c:choose>
+ <c:when test="${not empty customer.billing.company}">
+ ${customer.billing.company}<br/>
+ </c:when>
+ <c:otherwise>
+ ${customer.billing.firstName} ${customer.billing.lastName}<br />
+ </c:otherwise>
+ </c:choose>
+
+
+ <c:if test="${not empty customer.billing.address}"> ${customer.billing.address} <br />
+ </c:if>
+
+
+ <c:if test="${not empty customer.billing.city}">${customer.billing.city} <br />
+ </c:if>
+ <c:choose><c:when test="${not empty customer.billing.stateProvince}"><c:out value="${customer.billing.stateProvince}"/></c:when><c:otherwise><script>$.ajax({url: "<c:url value="/shop/reference/zoneName"/>",type: "GET",data: "zoneCode=${customer.billing.zone}",success: function(data){$('#billingZoneName').html(data)}})</script><span id="billingZoneName"><c:out value="${customer.billing.zone}"/></span></c:otherwise></c:choose>,
+
+ <c:if test="${not empty customer.billing.country}">
+ <span id="customerCountryName"><script>$.ajax({url: "<c:url value="/shop/reference/countryName"/>",type: "GET",data: "countryCode=${customer.billing.country}",success: function(data){$('#customerCountryName').html(data)}})</script></span><br/>
+ </c:if>
+ <c:if test="${not empty customer.billing.postalCode}"> ${customer.billing.postalCode}<br />
+ </c:if>
+ <c:if test="${not empty customer.billing.phone}">${customer.billing.phone}</c:if>
+
+
+ </address>
+ </form:form>
+ </c:if>
+ </div>
+ <br/>
+ <div class="box">
+ <span class="box-title">
+ <p class="p-title">
+ <s:message
+ code="label.customer.shippingaddress" text="Shipping Address" />
+
+
+ <c:if test="${not empty customer.delivery}">
+ <a href="javascript:void(0)" onclick="editShippingAddress('${customer.id}');"><s:message code="label.generic.edit" text="Edit"/></a>
+ </c:if>
+
+ </p>
+ </span>
+ <c:if test="${not empty customer.delivery}">
+ <form:form action="${editAddress}" id="editShippingAddress_${customer.id}">
+ <input type="hidden" name="customerId" value="${customer.id}">
+ <input type="hidden" name="billingAddress" value="false"/>
+ <address>
+ ${customer.delivery.firstName} ${customer.delivery.lastName}
+ <br />
+ <c:if test="${not empty customer.delivery.company}"> ${customer.delivery.company} <br />
+ </c:if>
+ <c:if test="${not empty customer.delivery.address}"> ${customer.delivery.address} <br />
+ </c:if>
+ <c:if test="${not empty customer.delivery.city}">${customer.delivery.city} <br />
+ </c:if>
+
+
+ <c:choose><c:when test="${not empty customer.delivery.stateProvince}"><c:out value="${customer.delivery.stateProvince}"/></c:when><c:otherwise><script>$.ajax({url: "<c:url value="/shop/reference/zoneName"/>",type: "GET",data: "zoneCode=${customer.delivery.zone}",success: function(data){$('#deliveryZoneName').html(data)}})</script><span id="deliveryZoneName"><c:out value="${customer.delivery.zone}"/></span></c:otherwise></c:choose>,
+
+ <c:if test="${not empty customer.delivery.country}">
+ <span id="customerDeliveryName"><script>$.ajax({url: "<c:url value="/shop/reference/countryName"/>",type: "GET",data: "countryCode=${customer.delivery.country}",success: function(data){$('#customerDeliveryName').html(data)}})</script></span><br/>
+ </c:if>
+ <c:if test="${not empty customer.delivery.postalCode}"> ${customer.delivery.postalCode}<br />
+ </c:if>
+ <c:if test="${not empty customer.delivery.phone}">${customer.delivery.phone} <br/></c:if>
+
+ </address>
+ </form:form>
+ </c:if>
+
+ <c:if test="${empty customer.delivery}">
+ <form:form action="${editAddress}" id="addShippingAddress_${customer.id}">
+ <input type="hidden" name="customerId" value="${customer.id}">
+ <input type="hidden" name="billingAddress" value="false"/>
+ <a href="javascript:void(0)" onclick="addShippingAddress('${customer.id}');"><s:message code="menu.addaddress" text="Add a new address" /></a> <br />
+ </form:form>
+ </c:if>
+
+ </div>
+ </div>
+ <div class="span4">
+ <jsp:include page="/pages/shop/common/customer/customerProfileMenu.jsp" />
+ <jsp:include page="/pages/shop/common/customer/customerOrdersMenu.jsp" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- close row-fluid-->
+</div>
+<!--close .container "main-content" -->
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/changePassword.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/changePassword.jsp
new file mode 100644
index 0000000..4ae58dc
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/changePassword.jsp
@@ -0,0 +1,144 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<!-- requires functions.jsp -->
+<script src="<c:url value="/resources/js/shop-customer.js" />"></script>
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+
+ isFormValid();
+ //bind fields to be validated
+ $("input[type='text']").on("change keyup paste", function(){
+ resetGlobalErrors();
+ isFormValid();
+ });
+
+ $("input[type='password']").on("change keyup paste", function(){
+ resetGlobalErrors();
+ isFormValid();
+ });
+
+ $("#submitChangePassword").click(function(e) {
+ e.preventDefault();//do not submit form
+ resetGlobalErrors();
+ if(isFormValid()) {
+ $('#changePasswordForm').submit();
+ }
+ });
+
+
+});
+
+function isFormValid() {
+
+ if($('.alert-error').is(":visible")) {
+ return true;
+ }
+
+ if($('.alert-success').is(":visible")) {
+ return true;
+ }
+
+ var msg = isCustomerFormValid($('#changePasswordForm'));
+
+ if(msg!=null) {//disable submit button
+ $('#submitChangePassword').addClass('btn-disabled');
+ $('#submitChangePassword').prop('disabled', true);
+ $('#formError').html(msg);
+ $('#formError').show();
+ return false;
+ } else {
+ $('#submitChangePassword').removeClass('btn-disabled');
+ $('#submitChangePassword').prop('disabled', false);
+ $('#formError').hide();
+ return true;
+ }
+}
+
+function resetGlobalErrors() {
+ $('.alert-error').hide();
+}
+
+
+</script>
+
+ <div id="main-content" class="container clearfix">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <div class="span8">
+ <div class="box">
+ <span class="box-title">
+ <p class="p-title">
+ <s:message code="label.generic.changepassword" text="Change password"/>
+ </p>
+ </span>
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <c:url var="changePassword" value="/shop/customer/changePassword.html"/>
+ <div id="formError" class="alert alert-warning" style="display:none;"></div>
+ <form:form method="post" action="${changePassword}" id="changePasswordForm" class="form-horizontal" commandName="password">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <div class="control-group">
+ <label class="required control-label" for="currentPassword"><s:message code="label.customer.currentpassword" text="Current password"/></label>
+ <div class="controls">
+ <s:message code="currentpassword.not.empty" text="Current password is required" var="msgCurrentPassword"/>
+ <form:password path="currentPassword" cssClass="span3 required" id="currentPassword" title="${msgCurrentPassword}"/>
+ <form:errors path="currentPassword" cssClass="error" />
+
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="required control-label" for="password"><s:message code="label.customer.newpassword" text="New password"/></label>
+ <div class="controls">
+ <s:message code="newpassword.not.empty" text="New password is required" var="msgPassword"/>
+ <form:password path="password" cssClass="span3 required password" id="password" title="${msgPassword}"/>
+ <form:errors path="currentPassword" cssClass="error" />
+
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="required control-label" for="repeatPassword"><s:message code="label.customer.repeatpassword" text="Repeat password"/></label>
+ <div class="controls">
+ <s:message code="label.customer.repeatpassword" text="Current password is required" var="msgRepeatPassword"/>
+ <form:password path="checkPassword" cssClass="span3 required checkPassword" id="checkPassword" title="${msgRepeatPassword}"/>
+ <form:errors path="currentPassword" cssClass="error" />
+
+ </div>
+ </div>
+
+ <div class="form-actions">
+ <input id="submitChangePassword" class="btn btn-large btn-disabled" type="submit" name="changePassword" value="<s:message code="menu.change-password" text="Change password"/>" disabled="">
+ </div>
+
+
+ </form:form>
+
+
+ </div>
+ </div>
+ <div class="span4">
+ <jsp:include page="/pages/shop/common/customer/customerProfileMenu.jsp" />
+ <jsp:include page="/pages/shop/common/customer/customerOrdersMenu.jsp" />
+ </div>
+ </div>
+ <!--close .span12-->
+ </div>
+ <!-- close row-fluid-->
+ </div>
+ <!--close .container "main-content" -->
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/customerOrdersMenu.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/customerOrdersMenu.jsp
new file mode 100644
index 0000000..dfe9c73
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/customerOrdersMenu.jsp
@@ -0,0 +1,20 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+ <c:set var="orders" value="${pageContext.request.contextPath}/shop/customer/orders.html"/>
+ <ul>
+ <li> <a href="${orders}"><s:message code="label.order.recent" text="Recent orders"/></a></li>
+ </ul>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/customerProfileMenu.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/customerProfileMenu.jsp
new file mode 100644
index 0000000..2799c88
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/customerProfileMenu.jsp
@@ -0,0 +1,26 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+ <c:set var="billing" value="${pageContext.request.contextPath}/shop/customer/billing.html"/>
+ <ul>
+ <li><a href="<c:url value="/shop/customer/dashboard.html"/>"><s:message code="label.customer.myaccount" text="My account"/></a></li>
+ <li>
+ <a href="${billing}">
+ <s:message code="label.customer.billingshipping" text="Billing & shipping information"/>
+ </a>
+ </li>
+ <li><a href="<c:url value="/shop/customer/password.html"/>"><s:message code="menu.change-password" text="Change password"/></a></li>
+ </ul>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/dashboard.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/dashboard.jsp
new file mode 100644
index 0000000..cca80de
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/dashboard.jsp
@@ -0,0 +1,167 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<script src="<c:url value="/resources/js/jquery.alphanumeric.pack.js" />"></script>
+
+<script>
+
+
+
+
+$(document).ready(function() {
+
+
+ $('.textAttribute').alphanumeric({ichars:'&=?'});
+
+ $('#attributes').on('submit',function (event) {
+ $('#attributesBox').showLoading();
+ $("#attributesError").hide();
+ $("#attributesSuccess").hide();
+ var data = $('#attributes').serialize();
+ console.log('Saving attributes ' + data);
+ $.ajax({
+ url: '<c:url value="/shop/customer/attributes/save.html"/>',
+ cache: false,
+ type: 'POST',
+ data : data,
+ success: function(result) {
+ $('#attributesBox').hideLoading();
+ var response = result.response;
+ if (response.status==0) {
+ $("#attributesSuccess").show();
+ } else {
+ $("#attributesError").html(response.message);
+ $("#attributesError").show();
+ }
+ },
+ error: function(jqXHR,textStatus,errorThrown) {
+ $('#attributesBox').hideLoading();
+ alert('Error ' + jqXHR + "-" + textStatus + "-" + errorThrown);
+ }
+ });
+
+ event.preventDefault();
+ });
+});
+
+</script>
+
+
+ <div id="main-content" class="container clearfix">
+ <div class="row-fluid">
+ <div class="span12">
+
+
+ <c:if test="${options!=null && fn:length(options)>0}">
+ <div class="row-fluid">
+ <div class="span12">
+ <div id="attributesSuccess" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <div id="attributesError" class="alert alert-error" style="display:none;"><s:message code="message.error" text="An error occured"/></div>
+ <form action="#" id="attributes">
+ <div id="attributesBox" class="box">
+ <span class="box-title">
+ <p><font color="#FF8C00"><s:message code="label.customer.moredetails" text="More details"/></font></p>
+ </span
+
+
+
+
+ <c:forEach items="${options}" var="option" varStatus="status">
+ <div class="control-group">
+ <label><c:out value="${option.name}"/></label>
+ <div class="controls">
+ <c:choose>
+ <c:when test="${option.type=='Select'}">
+ <select id="<c:out value="${option.id}"/>" name="<c:out value="${option.id}"/>">
+ <c:forEach items="${option.availableValues}" var="optionValue">
+ <option value="${optionValue.id}" <c:if test="${option.defaultValue!=null && option.defaultValue.id==optionValue.id}"> SELECTED</c:if>>${optionValue.name}</option>
+ </c:forEach>
+ </select>
+ </c:when>
+ <c:when test="${option.type=='Radio'}">
+ <c:forEach items="${option.availableValues}" var="optionValue">
+ <input type="radio" id="<c:out value="${option.id}"/>" name="<c:out value="${option.id}"/>" value="<c:out value="${optionValue.id}"/>" <c:if test="${option.defaultValue!=null && option.defaultValue.id==optionValue.id}"> checked="checked" </c:if> />
+ <c:out value="${optionValue.name}"/>
+ </c:forEach>
+ </c:when>
+ <c:when test="${option.type=='Text'}">
+ <input class="textAttribute" type="text" id="<c:out value="${option.id}"/>-<c:out value="${option.availableValues[0].id}"/>" name="<c:out value="${option.id}"/>-<c:out value="${option.availableValues[0].id}"/>" class="input-large" value="<c:if test="${option.defaultValue!=null}">${option.defaultValue.name}</c:if>">
+ </c:when>
+ <c:when test="${option.type=='Checkbox'}">
+ <c:forEach items="${option.availableValues}" var="optionValue">
+ <input type="checkbox" id="<c:out value="${option.id}"/>-<c:out value="${optionValue.id}"/>" name="<c:out value="${option.id}"/>-<c:out value="${optionValue.id}"/>" <c:if test="${option.defaultValue!=null && option.defaultValue.id==optionValue.id}"> checked="checked" </c:if> />
+ <c:out value="${optionValue.name}"/>
+ </c:forEach>
+ </c:when>
+
+
+ </c:choose>
+ <span class="help-inline"></span>
+
+ </div>
+
+
+ </c:forEach>
+ <input id="customer" type="hidden" value="<c:out value="${requestScope.CUSTOMER.id}"/>" name="customer">
+
+ <div class="short-form-actions">
+ <div class="pull-left">
+ <button type="submit" class="btn btn-success"><s:message code="button.label.save" text="Save"/></button>
+ </div>
+ </div>
+
+
+
+
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </c:if>
+
+
+
+
+ </br>
+ <div class="row-fluid">
+
+
+ <div class="span6">
+
+ <div class="box">
+ <span class="box-title">
+ <p class="p-title"><s:message code="label.customer.myaccount" text="My account"/></p>
+ </span>
+ <jsp:include page="/pages/shop/common/customer/customerProfileMenu.jsp" />
+ </div>
+
+
+ </div>
+ <div class="span6">
+ <div class="box">
+ <span class="box-title">
+ <p class="p-title"><s:message code="label.order.pastorders" text="Past orders"/></p>
+ </span>
+ <jsp:include page="/pages/shop/common/customer/customerOrdersMenu.jsp" />
+ </div>
+
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- close row-fluid-->
+ </div>
+ <!--close .container "main-content" -->
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/editAddress.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/editAddress.jsp
new file mode 100644
index 0000000..ac952c8
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/editAddress.jsp
@@ -0,0 +1,206 @@
+<%
+ response.setCharacterEncoding( "UTF-8" );
+ response.setHeader( "Cache-Control", "no-cache" );
+ response.setHeader( "Pragma", "no-cache" );
+ response.setDateHeader( "Expires", -1 );
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+<!-- requires functions.jsp -->
+<script src="<c:url value="/resources/js/jquery.maskedinput.min.js" />"></script>
+<script src="<c:url value="/resources/js/shop-customer.js" />"></script>
+<script src="<c:url value="/resources/js/address.js" />"></script>
+
+
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+ //triggers form validation
+ isFormValid();
+ $("input[type='text']").on("change keyup paste", function(){
+ isFormValid();
+ });
+ //apply mask
+ setCountrySettings('customer',$('#customer_country').val());
+ //populate zones combo
+ getZones($('#customer_country').val(),'<c:out value="${address.zone}" />',isFormValid);
+ $("#customer_country").change(function() {
+ getZones($(this).val(),'<c:out value="${address.zone}" />',isFormValid);
+ setCountrySettings('customer',$('#customer_country').val());
+ })
+
+
+});
+
+function isFormValid() {
+
+ if($('.alert-error').is(":visible")) {
+ return true;
+ }
+
+ if($('.alert-success').is(":visible")) {
+ return true;
+ }
+
+ var msg = isCustomerFormValid($('#changeAddressForm'));
+
+ if(msg!=null) {//disable submit button
+ $('#submitAddress').addClass('btn-disabled');
+ $('#submitAddress').prop('disabled', true);
+ $('#formError').html(msg);
+ $('#formError').show();
+ return false;
+ } else {
+ $('#submitAddress').removeClass('btn-disabled');
+ $('#submitAddress').prop('disabled', false);
+ $('#formError').hide();
+ return true;
+ }
+}
+
+</script>
+
+<c:url var="updateAddress" value="/shop/customer/updateAddress.html"/>
+<div id="main-content" class="container clearfix">
+ <div class="row-fluid">
+ <div class="span12">
+ <div class="span8">
+
+ <div class="box">
+ <span class="box-title">
+ <p class="p-title">
+
+ <c:choose>
+ <c:when test="${address.billingAddress eq true}">
+ <s:message code="label.customer.edit.billingaddress" text="Edit Billing Address" />
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.customer.edit.shippinginformation" text="Edit Shipping Address" />
+ </c:otherwise>
+ </c:choose>
+
+ </p>
+ </span>
+ <div id="store.success" class="alert alert-success" style="<c:choose><c:when test="${success!=null}">display:block;</c:when><c:otherwise>display:none;</c:otherwise></c:choose>"><s:message code="message.success" text="Request successfull"/></div>
+ <div id="formError" class="alert alert-warning" style="display:none;"></div>
+ <form:form method="POST" id="changeAddressForm" commandName="address" action="${updateAddress}">
+ <!-- TODO REMOVE -->
+ <input type="hidden" name="customerId" value="${customerId}">
+ <input type="hidden" name="billingAddress" value="${address.billingAddress}">
+
+ <form:errors id="address.error" path="*" cssClass="alert alert-error" element="div" />
+ <form:hidden path="${billingAddress}"/>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.firstname" text="First Name"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.firstName" text="First name is required" var="msgFirstName"/>
+ <form:input cssClass="input-large required" maxlength="64" path="firstName" title="${msgFirstName}"/>
+ <span class="help-inline"><form:errors path="firstName" cssClass="error" /></span>
+ </div>
+ </div>
+ <div class="control-group">
+ <label><s:message code="label.customer.lastname" text="Last Name"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.lastName" text="Last name is required" var="msgLastName"/>
+ <form:input cssClass="input-large required" maxlength="64" path="lastName" title="${msgLastName}"/>
+ <span class="help-inline"><form:errors path="lastName" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.company" text="Company"/></label>
+ <div class="controls">
+
+ <form:input cssClass="input-large" maxlength="100" path="company"/>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.streetaddress" text="Street Address"/></label>
+ <div class="controls">
+
+ <s:message code="NotEmpty.customer.address" text="Address is required" var="msgAddress"/>
+ <form:input cssClass="input-large required" maxlength="256" path="address" title="${msgAddress}"/>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.city" text="City"/></label>
+ <div class="controls">
+
+ <s:message code="NotEmpty.customer.city" text="City is required" var="msgCity"/>
+ <form:input cssClass="input-large required" maxlength="100" path="city" title="${msgCity}"/>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.country" text="Country"/></label>
+ <div class="controls">
+ <form:select cssClass="billing-country-list" path="country" id="customer_country">
+ <form:options items="${countries}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ <span class="help-inline"><form:errors path="country" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.zone" text="State / Province"/></label>
+ <div class="controls">
+ <form:select cssClass="billing-zone-list" path="zone" id="customer_zones"/>
+ <s:message code="NotEmpty.customer.stateProvince" text="State / Province is required" var="msgStateProvince"/>
+ <form:input class="input-large required" id="hidden_zones" maxlength="100" name="stateProvince" path="stateProvince" title="${msgStateProvince}" />
+ <span class="help-inline"><form:errors path="zone" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.generic.postalcode" text="Postal code"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.billing.postalCode" text="Postal code is required" var="msgPostalCode"/>
+ <form:input id="billingPostalCode" cssClass="input-large required customer-postalCode" maxlength="20" path="postalCode" title="${msgPostalCode}"/>
+ <span class="help-inline"><form:errors path="postalCode" cssClass="error" /></span>
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label><s:message code="label.customer.telephone" text="Phone"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.billing.phone" text="Phone number is required" var="msgPhone"/>
+ <form:input cssClass="input-large required customer-phone" maxlength="32" path="phone" title="${msgPhone}"/>
+ <span class="help-inline"><form:errors path="phone" cssClass="error" /></span>
+ </div>
+ </div>
+
+
+
+ <div class="form-actions">
+ <input id="submitAddress" class="btn btn-large btn-disabled" type="submit" name="submitAddress" value="<s:message code="menu.editaddress" text="Change address"/>" disabled="">
+ </div>
+
+
+
+
+ </form:form>
+ </div>
+ </div>
+ <div class="span4">
+ <jsp:include page="/pages/shop/common/customer/customerProfileMenu.jsp" />
+ <jsp:include page="/pages/shop/common/customer/customerOrdersMenu.jsp" />
+ </div>
+
+ </div>
+ </div>
+ </div>
+ <!-- close row-fluid-->
+</div>
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/logon.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/logon.jsp
new file mode 100644
index 0000000..4a37ed0
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/logon.jsp
@@ -0,0 +1,70 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+
+<div class="container">
+ <div class="row">
+ <form class="form-signin mg-btm">
+ <h3 class="heading-desc">
+ <button type="button" class="close pull-right" aria-hidden="true">×</button>
+ Login to Bootsnipp</h3>
+ <div class="social-box">
+ <div class="row mg-btm">
+ <div class="col-md-12">
+ <a href="#" class="btn btn-primary btn-block">
+ <i class="icon-facebook"></i> Login with Facebook
+ </a>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <a href="#" class="btn btn-info btn-block" >
+ <i class="icon-twitter"></i> Login with Twitter
+ </a>
+ </div>
+ </div>
+ </div>
+ <div class="main">
+
+ <input type="text" class="form-control" placeholder="Email" autofocus>
+ <input type="password" class="form-control" placeholder="Password">
+
+ Are you a business? <a href=""> Get started here</a>
+ <span class="clearfix"></span>
+ </div>
+ <div class="login-footer">
+ <div class="row">
+ <div class="col-xs-6 col-md-6">
+ <div class="left-section">
+ <a href="">Forgot your password?</a>
+ <a href="">Sign up now</a>
+ </div>
+ </div>
+ <div class="col-xs-6 col-md-6 pull-right">
+ <button type="submit" class="btn btn-large btn-danger pull-right">Login</button>
+ </div>
+ </div>
+
+ </div>
+ </form>
+ </div>
+</div>
+
+
+
+
+
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/order.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/order.jsp
new file mode 100644
index 0000000..22383ad
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/order.jsp
@@ -0,0 +1,191 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<script src="<c:url value="/resources/js/jquery.printElement.min.js" />"></script>
+
+<script type="text/javascript">
+
+function print() {
+ $('#printableOrder').printElement();
+ //https://github.com/jasonday/printThis
+}
+
+</script>
+
+
+ <div id="main-content" class="container clearfix">
+
+
+
+
+ <header class="page-header">
+ <h1><s:message code="label.order.details" text="Order details" /> # <c:out value="${order.id}"/></h1>
+ </header>
+
+
+ <div class="row-fluid">
+ <!-- note class 'printable' - this area is printable only! -->
+
+ <!-- Buttons -->
+ <div class="alert-custom">
+
+ <div class="row-fluid">
+
+ <div class="col-md-8 col-sm-8 pull-left"><!-- left text -->
+
+
+ <c:if test="${downloads!=null}">
+ <p class="nomargin">
+ <c:choose>
+ <c:when test="${order.orderStatus.value=='processed'}">
+ <strong><s:message code="label.checkout.downloads.completed" text="label.checkout.downloads.completed"/></strong><br/>
+ <c:forEach items="${downloads}" var="download">
+ <a href="<sm:orderProductDownload productDownload="${download}" orderId="${order.id}"/>"><c:out value="${download.fileName}" /></a>
+ </c:forEach>
+ </c:when>
+ <c:otherwise>
+ <s:message code="label.checkout.downloads.processing" text="*** An email with your file(s) download instructions will be sent once the payment for this order will be completed."/>
+ </c:otherwise>
+ </c:choose>
+ </p>
+ </c:if>
+
+
+ </div><!-- /left text -->
+
+
+ <div class="col-md-4 col-sm-4 text-right pull-right">
+ <a onclick="print();" class="btn btn-large" href="#"><s:message code="label.generic.print" text="Print" /></a>
+ </div>
+
+ </div>
+
+ </div>
+
+ <div id="printableOrder" class="row-fluid">
+
+
+ <div class="row-fluid">
+
+ <div class="col-md-12 col-sm-12 pull-left">
+
+
+ <h2><s:message code="label.entity.order" text="Order" /> # <c:out value="${order.id}"/><br/></h2>
+ <p class="lead">
+ <fmt:formatDate type="both" dateStyle="long" value="${order.datePurchased}" /><br/>
+ <s:message code="label.order.${order.orderStatus.value}" text="${order.orderStatus.value}" />
+ </p>
+ </div>
+ </div>
+
+ <!-- BILLING and SHIPPING ADDRESS -->
+ <div class="row-fluid">
+ <div class="col-md-6 col-sm-6">
+ <c:if test="${not empty order.billing}">
+ <h5><strong><s:message code="label.customer.billingaddress" text="Billing address" /></strong></h5>
+ <p>
+ <c:set var="address" value="${order.billing}" scope="request" />
+ <c:set var="addressType" value="billing" scope="request" />
+ <jsp:include page="/pages/shop/common/preBuiltBlocks/customerAddress.jsp"/>
+ </p>
+ </c:if>
+ </div>
+
+ <div class="col-md-6 col-sm-6">
+ <c:if test="${not empty order.delivery}">
+ <h5><strong><s:message code="label.customer.shippingaddress" text="Shipping address" /></strong></h5>
+ <p>
+ <c:set var="address" value="${order.delivery}" scope="request" />
+ <c:set var="addressType" value="delivery" scope="request" />
+ <jsp:include page="/pages/shop/common/preBuiltBlocks/customerAddress.jsp"/>
+ </p>
+ </c:if>
+ </div>
+ </div>
+ <!-- /BILLING and SHIPPING ADDRESS -->
+
+ <div id="orderTableTitle">
+ <h2>
+ <s:message code="label.entity.details" text="Details"/>
+ </h2>
+ </div>
+
+ <!-- PRODUCTS TABLE -->
+ <div id="cartContent">
+ <!-- cart header -->
+ <div class="item head">
+ <span class="cartImage"></span>
+ <span class="productName"><s:message code="label.productedit.productname" text="Product name" /></span>
+ <span class="quantity"><s:message code="label.quantity" text="Quantity" /></span>
+ <span class="totalPrice"><s:message code="label.generic.price" text="Price" /></span>
+ <span class="subTotal"><s:message code="order.total.subtotal" text="Sub-total" /></span>
+ <div class="clearfix"></div>
+ </div>
+ <!-- /cart header -->
+
+ <!-- cart item -->
+ <c:forEach items="${order.products}" var="product">
+ <div class="item">
+ <div class="cartImage">
+ <c:if test="${not empty product.image}">
+ <img width="60" src="<sm:shopProductImage imageName="${product.image}" sku="${product.sku}"/>"/>
+ </c:if>
+ </div>
+ <c:choose>
+ <c:when test="${product.product!=null}">
+ <a class="productName" href="<c:url value="/shop/product/" /><c:out value="${product.product.description.friendlyUrl}"/>.html"><c:out value="${product.productName}"/></a>
+ </c:when>
+ <c:otherwise>
+ <span class="productName"><c:out value="${product.productName}"/></span>
+ </c:otherwise>
+ </c:choose>
+
+ <div class="quantity"><c:out value="${product.orderedQuantity}"/></div>
+ <div class="totalPrice"><c:out value="${product.price}"/></div>
+ <div class="subTotal"><c:out value="${product.subTotal}"/></div>
+ <div class="clearfix"></div>
+ </div>
+ </c:forEach>
+ <!-- /cart item -->
+
+
+ <!-- cart total -->
+ <div class="total pull-right">
+ <c:forEach items="${order.totals}" var="orderTotal" varStatus="counter">
+ <small class="totalItem">
+ <c:if test="${orderTotal.code=='refund'}"><font color="red"></c:if><s:message code="${orderTotal.code}" text="${orderTotal.code}"/>:<c:if test="${orderTotal.code=='refund'}"></font></c:if>
+ <span <c:if test="orderTotal.code=='total'">class="totalToPay"</c:if>><strong><c:if test="${orderTotal.code=='refund'}"><font color="red"></c:if><sm:monetary value="${orderTotal.value}" /><c:if test="${orderTotal.code=='refund'}"></font></c:if></strong></span>
+ </small>
+ <br/>
+ </c:forEach>
+ </div>
+ <!-- /cart total -->
+
+ <div class="clearfix"></div>
+ </div>
+ <!-- /SUMMARY TABLE -->
+
+
+ </div>
+
+
+
+
+
+ </div>
+ <!--close .container "main-content" -->
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/orders.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/orders.jsp
new file mode 100644
index 0000000..1c09e4f
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/orders.jsp
@@ -0,0 +1,119 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm"%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<c:set var="ordersAction" value="${pageContext.request.contextPath}/shop/customer/orders.html"/>
+<c:set var="customerOrder" value="${pageContext.request.contextPath}/shop/customer/order.html"/>
+
+ <div id="main-content" class="container clearfix">
+ <div class="row-fluid">
+
+ <div class="span12">
+
+
+ <div class="span8">
+
+ <div class="box">
+ <span class="box-title">
+ <p class="p-title">
+ <s:message
+ code="menu.order-list" text="List of orders" />
+
+ <span class="p-title-text">
+ <c:if test="${not empty customerOrders.orders}">
+
+ <s:message code="label.entitylist.paging"
+ arguments="${(paginationData.offset)};${((paginationData.offset)-1)+(paginationData.pageSize)};${paginationData.totalCount}"
+ htmlEscape="false"
+ argumentSeparator=";" text=""/>
+
+ </c:if>
+ </p>
+ </span>
+ <c:choose>
+ <c:when test="${not empty customerOrders.orders}">
+ <div id="shop">
+
+ <!-- HISTORY TABLE -->
+ <table class="table table-striped">
+ <!-- table head -->
+ <thead>
+ <tr>
+ <th><s:message code="label.entity.id" text="Id"/></th>
+ <th><s:message code="label.customer.order.date" text="Order date"/></th>
+ <th><s:message code="label.generic.amount" text="Amount"/></th>
+ <th><s:message code="label.entity.status" text="Status"/></th>
+ </tr>
+ </thead>
+
+ <!-- /HISTORY TABLE -->
+ <tbody>
+ <c:forEach items="${customerOrders.orders}" var="order" varStatus="orderStatus">
+ <tr><!-- item -->
+ <td><a href="${customerOrder}?orderId=${order.id}">${order.id}</a></td>
+ <td><fmt:formatDate type="both" value="${order.datePurchased}" /></td>
+ <td><sm:monetary value="${order.total.value}" /> <small>(${fn:length(order.products)} item(s))</small></td>
+ <td>${order.orderStatus}</td>
+
+ </tr>
+ </c:forEach>
+
+ </tbody>
+ </table>
+
+
+
+
+ <!-- PAGINATION -->
+ <br/>
+ <ul class="pagination">
+
+ <c:forEach begin="1" end="${paginationData.totalPages}" varStatus="paginationDataStatus">
+ <li class="${paginationData.currentPage eq (paginationDataStatus.index) ? 'active' : ''}"><a href="${ordersAction}?page=${paginationDataStatus.index}">${paginationDataStatus.index}</a></li>
+ </c:forEach>
+
+ </ul>
+ <!-- /PAGINATION -->
+
+
+ </div>
+ </c:when>
+ <c:otherwise>
+
+ </c:otherwise>
+
+ </c:choose>
+ </div>
+
+ </div>
+ <div class="span4">
+ <jsp:include page="/pages/shop/common/customer/customerProfileMenu.jsp" />
+ <jsp:include page="/pages/shop/common/customer/customerOrdersMenu.jsp" />
+ </div>
+
+
+ </div>
+
+
+
+
+
+ </div>
+ <!-- close row-fluid-->
+ </div>
+ <!--close .container "main-content" -->
+
+ <!-- http://theme.stepofweb.com/Alkaline/v1.0/shop-history-summary.html -->
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/customer/register.jsp b/sm-shop/src/main/webapp/pages/shop/common/customer/register.jsp
new file mode 100644
index 0000000..f4e82f2
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/customer/register.jsp
@@ -0,0 +1,229 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<!-- requires functions.jsp -->
+<script src="<c:url value="/resources/js/jquery.maskedinput.min.js" />"></script>
+<script src="<c:url value="/resources/js/shop-customer.js" />"></script>
+<script src="<c:url value="/resources/js/address.js" />"></script>
+
+
+<script type="text/javascript">
+
+var RecaptchaOptions = {
+ theme : 'clean'
+};
+
+$(document).ready(function() {
+
+
+
+ getZones($('#registration_country').val(),'<c:out value="${customer.billing.zone}" />',isFormValid);
+ $("#hidden_zones").hide();
+ $("#registration_country").change(function() {
+ getZones($(this).val(),'<c:out value="${customer.billing.zone}" />',isFormValid);
+ })
+
+
+ isFormValid();
+ $("input[type='text']").on("change keyup paste", function(){
+ isFormValid();
+ });
+
+ $("input[type='password']").on("change keyup paste", function(){
+ isFormValid();
+ });
+
+ $("#registration_country").change(function() {
+ isFormValid();
+ });
+
+});
+
+
+function isFormValid() {
+
+ if($('.alert-error').is(":visible")) {
+ return true;
+ }
+
+ if($('.alert-success').is(":visible")) {
+ return true;
+ }
+
+ $('#registrationError').hide();//reset error message
+ var msg = isCustomerFormValid($('#registrationForm'));
+
+ if(msg!=null) {//disable submit button
+ $('#submitRegistration').addClass('btn-disabled');
+ $('#submitRegistration').prop('disabled', true);
+ $('#registrationError').html(msg);
+ $('#registrationError').show();
+ return false;
+ } else {
+ $('#submitRegistration').removeClass('btn-disabled');
+ $('#submitRegistration').prop('disabled', false);
+ $('#registrationError').hide();
+ return true;
+ }
+}
+
+
+
+
+ </script>
+
+<div id="registrationError" class="alert alert-warning" style="display:none;"></div>
+
+<c:set var="register_url" value="${pageContext.request.contextPath}/shop/customer/register.html"/>
+
+ <div id="main-content" class="container clearfix">
+ <div class="row-fluid">
+ <div class="span7">
+ <form:form method="post" action="${register_url}" id="registrationForm" class="form-horizontal" commandName="customer">
+ <form:errors path="*" cssClass="alert alert-error" element="div" />
+ <fieldset>
+ <div class="control-group">
+ <label class="required control-label" for="FirstNameRegister"><s:message code="label.generic.firstname" text="First Name"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.firstName" text="First name is required" var="msgFirstName"/>
+ <form:input path="billing.firstName" cssClass="span8 required" id="firstName" title="${msgFirstName}"/>
+ <form:errors path="billing.firstName" cssClass="error" />
+
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="required control-label" for="LastNameRegister"><s:message code="label.generic.lastname" text="Last Name"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.lastName" text="Last name is required" var="msgLastName"/>
+ <form:input path="billing.lastName" cssClass="span8 required" id="lastName" title="${msgLastName}"/>
+ <form:errors path="billing.lastName" cssClass="error" />
+
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required control-label" for="sex"><s:message code="label.generic.genre" text="Genre"/></label>
+ <div class="controls">
+ <form:select path="gender">
+ <form:option value="M"><s:message code="label.generic.male" text="Male"/></form:option>
+ <form:option value="F"><s:message code="label.generic.female" text="Female"/></form:option>
+ </form:select>
+ <form:errors path="gender" cssClass="error" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="control-label required"><s:message code="label.generic.country" text="Country"/></label>
+ <div class="controls">
+ <form:select path="billing.country" id="registration_country">
+ <form:options items="${countryList}" itemValue="isoCode" itemLabel="name"/>
+ </form:select>
+ </div>
+ </div>
+
+
+
+ <div class="control-group">
+ <label class="control-label required"><s:message code="label.generic.stateprovince" text="State / Province"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.billing.stateProvince" text="State / Province is required" var="msgStateProvince"/>
+ <form:select path="billing.zone" id="customer_zones" >
+ </form:select>
+ <form:input path="billing.stateProvince" cssClass="span8 required" id="hidden_zones" title="${msgStateProvince}"/>
+ </div>
+ </div>
+
+
+ <div class="control-group">
+ <label class="required control-label" for="username"><s:message code="label.generic.username" text="User name" /></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.userName" text="User name is required" var="msgUserName"/>
+ <form:input path="userName" cssClass="span8 required userName" id="userName" title="${msgUserName}"/>
+ <form:errors path="userName" cssClass="error" />
+ </div>
+ </div>
+
+
+
+ <div class="control-group">
+ <label class="required control-label" for="email"><s:message code="label.generic.email" text="Email address"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.emailAddress" text="Email address is required" var="msgEmail"/>
+ <form:input path="emailAddress" cssClass="span8 required email" id="email" title="${msgEmail}"/>
+ <form:errors path="emailAddress" cssClass="error" />
+
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required control-label" for="password"><s:message code="label.generic.password" text="Password"/></label>
+ <div class="controls">
+ <s:message code="message.password.required" text="Password is required" var="msgPassword"/>
+ <form:password path="password" class="span8 required password" id="password" title="${msgPassword}"/>
+ <form:errors path="password" cssClass="error" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="required control-label" for="passwordAgain"><s:message code="label.generic.repeatpassword" text="Repeat password"/></label>
+ <div class="controls">
+ <s:message code="message.password.repeat.required" text="Repeated password is required" var="msgRepeatPassword"/>
+ <form:password path="checkPassword" class="span8 required checkPassword" id="passwordAgain" title="${msgRepeatPassword}"/>
+ <form:errors path="checkPassword" cssClass="error" />
+ </div>
+ </div>
+
+ <div class="control-group">
+ <div class="controls"><!--watch the white space in IOS!-->
+ <script type="text/javascript"
+ src="http://www.google.com/recaptcha/api/challenge?k=<c:out value="${recapatcha_public_key}"/>&hl=${requestScope.LANGUAGE.code}">
+ </script>
+ <noscript>
+ <iframe
+ src="http://www.google.com/recaptcha/api/noscript?k=<c:out value="${recapatcha_public_key}"/>&hl=${requestScope.LANGUAGE.code}"
+ height="300" width="500" frameborder="0">
+ </iframe>
+ <br/>
+ <form:textarea path="recaptcha_challenge_field" readonly="3" cols="40"/>
+ <form:errors path="recaptcha_challenge_field" cssClass="error" />
+
+ <input type="hidden" name="recaptcha_response_field"
+ value="manual_challenge">
+ </noscript>
+ </div>
+ </div>
+
+ <div class="form-actions">
+ <input id="submitRegistration" type="submit" value="<s:message code="label.generic.register" text="Register"/>" name="register" class="btn btn-large">
+ </div>
+ </fieldset>
+ </form:form>
+ <!-- end registration form-->
+
+ </div>
+ <!--close .span7-->
+
+ <div id="why-join" class="span4 offset1">
+ <h3 class="short_headline"><span><s:message code="label.register.whyregister" text="Why register?" /></span></h3>
+ <p>
+ <s:message code="label.register.registerreasons" text="Simplify a checkout process by having your information pre-filed, re-order an item from one click and get access to premium information." />
+ </p>
+ </div>
+ <!--close span4 offset1-->
+ </div>
+ <!-- close row-fluid-->
+ </div>
+ <!--close .container "main-content" -->
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/common/merchant/contactus.jsp b/sm-shop/src/main/webapp/pages/shop/common/merchant/contactus.jsp
new file mode 100644
index 0000000..78ce122
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/merchant/contactus.jsp
@@ -0,0 +1,280 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<!--Set google map API key -->
+<c:if test="${requestScope.CONFIGS['displayStoreAddress'] == true}">
+<script type="text/javascript"
+ src="https://maps.googleapis.com/maps/api/js?sensor=true">
+</script>
+</c:if>
+
+<script type="text/javascript">
+
+var RecaptchaOptions = {
+ theme : 'clean'
+};
+
+
+$(document).ready(function() {
+
+ isFormValid();
+ $("input[type='text']").on("change keyup paste", function(){
+ isFormValid();
+ });
+ $("#comment").on("change keyup paste", function(){
+ isFormValid();
+ });
+
+ $("#submitContact").click(function() {
+ sendContact();
+ });
+
+});
+
+
+function sendContact(){
+ $('#pageContainer').showLoading();
+ $(".alert-error").hide();
+ $(".alert-success").hide();
+ var data = $('#contactForm').serialize();
+ //console.log(data);
+ $.ajax({
+ type: 'POST',
+ url: '<c:url value="/shop/store/${requestScope.MERCHANT_STORE.code}/contact"/>',
+ data: data,
+ cache: false,
+ dataType: 'json',
+ success: function(response){
+
+ $('#pageContainer').hideLoading();
+ if(response.errorMessage!=null && response.errorMessage!='') {
+ $(".alert-error").show();
+ $(".alert-success").hide();
+ return;
+ }
+
+ $(".alert-error").hide();
+ $(".alert-success").show();
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ $('#pageContainer').hideLoading();
+ alert('error ' + errorThrown);
+ }
+
+ });
+
+}
+
+
+
+
+
+ function isFormValid() {
+ var $inputs = $('#contactForm').find(':input');
+ var valid = true;
+ var firstErrorMessage = null;
+ $inputs.each(function() {
+ if($(this).hasClass('required')) {
+ var fieldValid = isFieldValid($(this));
+ if(!fieldValid) {
+ valid = false;
+ }
+ }
+ //if has class email
+ if($(this).hasClass('email')) {
+ var emailValid = validateEmail($(this).val());
+ //console.log('Email is valid ? ' + emailValid);
+ if(!emailValid) {
+ valid = false;
+ }
+ }
+ });
+
+ //console.log('Form is valid ? ' + valid);
+ if(valid==false) {//disable submit button
+ $('#submitContact').addClass('btn-disabled');
+ $('#submitContact').prop('disabled', true);
+ } else {
+ $('#submitContact').removeClass('btn-disabled');
+ $('#submitContact').prop('disabled', false);
+ }
+ }
+
+
+ function isFieldValid(field) {
+ var validateField = true;
+
+ var fieldId = field.prop('id');
+ var value = field.val();
+
+ //console.log('Check id ' + fieldId + ' and value ' + value);
+ if(!emptyString(value)) {
+ field.css('background-color', '#FFF');
+ return true;
+ } else {
+ field.css('background-color', '#FFC');
+ return false;
+ }
+ }
+
+
+
+</script>
+
+
+ <div id="main-content" class="container clearfix">
+ <h1><s:message code="label.customer.contactus" text="Contact us"/></h1>
+ <div class="row-fluid">
+
+ <div class="span6">
+
+ <form:form action="#" method="POST" id="contactForm" class="form-horizontal" name="contactForm" commandName="contact">
+ <div id="store.success" class="alert alert-success" style="display:none;"><s:message code="message.email.success" text="Your message has been sent"/></div>
+ <div id="store.error" class="alert alert-error" style="display:none;"><s:message code="message.email.success" text="An error occurred while sending your message, pleas try again later"/></div>
+ <form:errors id="contactForm" path="*" cssClass="alert alert-error" element="div" />
+ <fieldset>
+ <div class="control-group">
+ <label for="inputName" class="control-label"><s:message code="label.entity.name" text="Name"/></label>
+ <div class="controls">
+ <s:message code="NotEmpty.customer.name" text="Name is required" var="msgName"/>
+ <form:input path="name" cssClass="required" id="name" title="${msgName}"/>
+ <form:errors path="name" cssClass="error" />
+ </div>
+ </div>
+ <div class="control-group">
+ <label for="inputEmail" class="control-label"><s:message code="label.generic.email" text="Email address"/></label>
+ <div class="controls">
+ <form:input path="email" cssClass="required" id="email"/>
+ <form:errors path="email" cssClass="error" />
+ </div>
+ </div>
+ <div class="control-group">
+ <label for="inputEmail" class="control-label"><s:message code="label.generic.subject" text="Subject"/></label>
+ <div class="controls">
+ <form:input path="subject" cssClass="required" id="subject"/>
+ <form:errors path="subject" cssClass="error" />
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="textarea"><s:message code="label.generic.comments" text="Comments"/></label>
+ <div class="controls">
+ <form:textarea path="comment" cssClass="span8 required" rows="10" id="comment"/>
+ </div>
+ </div>
+ <div class="control-group">
+ <div class="controls">
+ <!--watch the white space in IOS!-->
+ <script type="text/javascript"
+ src="http://www.google.com/recaptcha/api/challenge?k=<c:out value="${recapatcha_public_key}"/>&hl=${requestScope.LANGUAGE.code}">
+
+ </script>
+ <noscript>
+ <iframe
+ src="http://www.google.com/recaptcha/api/noscript?k=<c:out value="${recapatcha_public_key}"/>&hl=${requestScope.LANGUAGE.code}"
+ height="300" width="500" frameborder="0"> </iframe>
+ <br />
+ <form:textarea path="captchaResponseField" readonly="3"
+ cols="40" />
+ <form:errors path="captchaResponseField" cssClass="error" />
+
+ <input type="hidden" name="captchaChallengeField"
+ value="manual_challenge">
+ </noscript>
+ </div>
+
+ <div class="form-actions">
+ <input id="submitContact" type="button" value="<s:message code="label.generic.send" text="Send"/>" name="register" class="btn btn-large">
+ </div>
+ </fieldset>
+ </form:form>
+
+
+
+ </div>
+<!-- END LEFT-SIDE CONTACT FORM AREA -->
+
+
+<!-- BEGIN RIGHT-SIDE CONTACT FORM AREA -->
+ <div class="contact-info span4 offset1">
+ <!-- COMPANY ADDRESS -->
+ <c:if test="${requestScope.CONFIGS['displayStoreAddress'] == true}">
+ <address>
+ <div itemscope itemtype="http://schema.org/Organization">
+ <h2 itemprop="name"><c:out value="${requestScope.MERCHANT_STORE.storename}"/></h2><br/>
+ <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
+ <span itemprop="streetAddress"><c:out value="${requestScope.MERCHANT_STORE.storeaddress}"/> <c:out value="${requestScope.MERCHANT_STORE.storecity}"/></span><br/>
+ <span itemprop="addressLocality"><c:choose><c:when test="${not empty requestScope.MERCHANT_STORE.storestateprovince}"><c:out value="${requestScope.MERCHANT_STORE.storestateprovince}"/></c:when><c:otherwise><script>$.ajax({url: "<c:url value="/shop/reference/zoneName"/>",type: "GET",data: "zoneCode=${requestScope.MERCHANT_STORE.zone.code}",success: function(data){$('#storeZoneName').html(data)}})</script><span id="storeZoneName"><c:out value="${requestScope.MERCHANT_STORE.zone.code}"/></span></c:otherwise></c:choose>,
+ <span id="storeCountryName"><script>$.ajax({url: "<c:url value="/shop/reference/countryName"/>",type: "GET",data: "countryCode=${requestScope.MERCHANT_STORE.country.isoCode}",success: function(data){$('#storeCountryName').html(data)}})</script></span></span><br/>
+ <span itemprop="postalCode"><c:out value="${requestScope.MERCHANT_STORE.storepostalcode}"/></span><br/>
+ <abbr title="Phone"><s:message code="label.generic.phone" text="Phone" /></abbr>: <span itemprop="telephone"><c:out value="${requestScope.MERCHANT_STORE.storephone}"/></span>
+ </div>
+ </div>
+ </address>
+ </c:if>
+
+
+
+ </div>
+ </div>
+<!-- END RIGHT-SIDE CONTACT FORM AREA -->
+<!-- CUSTOM CONTENT -->
+ <div class="row-fluid">
+ <c:if test="${content!=null}">
+ <br/>
+ <p>
+ <c:out value="${content.description}" escapeXml="false"/>
+ </p>
+ <br/>
+ </c:if>
+ <br/>
+ <div id="map_canvas" style="width:600px; height:300px"></div>
+
+ </div>
+
+
+<!-- GOOGLE MAP -->
+<c:if test="${requestScope.CONFIGS['displayStoreAddress'] == true}">
+
+
+<script>
+
+var address = '<c:out value="${requestScope.MERCHANT_STORE.storeaddress}"/> <c:out value="${requestScope.MERCHANT_STORE.storecity}"/> <c:out value="${requestScope.MERCHANT_STORE.zone.code}"/> <c:out value="${requestScope.MERCHANT_STORE.storepostalcode}"/>';
+
+if(address!=null) {
+ geocoder = new google.maps.Geocoder();
+ var mapOptions = {
+ zoom: 8,
+ mapTypeId: google.maps.MapTypeId.ROADMAP
+ }
+ map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
+
+ geocoder.geocode( { 'address': address}, function(results, status) {
+ if (status == google.maps.GeocoderStatus.OK) {
+ map.setCenter(results[0].geometry.location);
+ var marker = new google.maps.Marker({
+ map: map,
+ position: results[0].geometry.location
+ });
+ } else {
+ alert("Geocode was not successful for the following reason: " + status);
+ }
+ });
+}
+
+</script>
+
+</c:if>
+ </div>
diff --git a/sm-shop/src/main/webapp/pages/shop/common/notFound.jsp b/sm-shop/src/main/webapp/pages/shop/common/notFound.jsp
new file mode 100644
index 0000000..b376015
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/notFound.jsp
@@ -0,0 +1,29 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+
+ <table>
+ <tr>
+ <td><img src="<c:url value="/resources/img/important-icon.png"/>" width="50"></td>
+ <td><h3><s:message code="message.resource.notfound" text="Page not found"/></h3></td>
+ </tr>
+ </table>
+
+
+
+
+
diff --git a/sm-shop/src/main/webapp/pages/shop/common/preBuiltBlocks/customerAddress.jsp b/sm-shop/src/main/webapp/pages/shop/common/preBuiltBlocks/customerAddress.jsp
new file mode 100644
index 0000000..a0a4478
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/preBuiltBlocks/customerAddress.jsp
@@ -0,0 +1,37 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+ <address>
+ <c:choose>
+ <c:when test="${not empty requestScope.address.company}">
+ ${requestScope.address.company}<br/>
+ </c:when>
+ <c:otherwise>
+ ${requestScope.address.firstName} ${requestScope.address.lastName}<br />
+ </c:otherwise>
+ </c:choose>
+
+
+ <c:if test="${not empty requestScope.address.address}"> ${requestScope.address.address} <br />
+ </c:if>
+
+
+ <c:if test="${not empty requestScope.address.city}">${requestScope.address.city} <br />
+ </c:if>
+ <c:choose><c:when test="${not empty requestScope.address.stateProvince}"><c:out value="${requestScope.address.stateProvince}"/></c:when><c:otherwise><script>$.ajax({url: "<c:url value="/shop/reference/zoneName"/>",type: "GET",data: "zoneCode=${requestScope.address.zone}",success: function(data){$('#zone<c:out value="${requestScope.addressType}"/>').html(data)}})</script><span id="zone<c:out value="${requestScope.addressType}"/>"><c:out value="${requestScope.address.zone}"/></span></c:otherwise></c:choose>,
+
+ <c:if test="${not empty requestScope.address.country}">
+ <span id="country<c:out value="${requestScope.addressType}"/>"><script>$.ajax({url: "<c:url value="/shop/reference/countryName"/>",type: "GET",data: "countryCode=${requestScope.address.country}",success: function(data){$('#country<c:out value="${requestScope.addressType}"/>').html(data)}})</script></span><br/>
+ </c:if>
+ <c:if test="${not empty requestScope.address.postalCode}"> ${requestScope.address.postalCode}<br />
+ </c:if>
+ <c:if test="${not empty requestScope.address.phone}">${requestScope.address.phone}</c:if>
+
+
+ </address>
diff --git a/sm-shop/src/main/webapp/pages/shop/common/preBuiltBlocks/storeAddress.jsp b/sm-shop/src/main/webapp/pages/shop/common/preBuiltBlocks/storeAddress.jsp
new file mode 100644
index 0000000..ec5b94c
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/preBuiltBlocks/storeAddress.jsp
@@ -0,0 +1,21 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+
+ <address>
+ <div itemscope itemtype="http://schema.org/Organization">
+ <strong><span itemprop="name"><c:out value="${requestScope.MERCHANT_STORE.storename}"/></span></strong><br/>
+ <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
+ <span itemprop="streetAddress"><c:out value="${requestScope.MERCHANT_STORE.storeaddress}"/> <c:out value="${requestScope.MERCHANT_STORE.storecity}"/></span><br/>
+ <span itemprop="addressLocality"><c:choose><c:when test="${not empty requestScope.MERCHANT_STORE.storestateprovince}"><c:out value="${requestScope.MERCHANT_STORE.storestateprovince}"/></c:when><c:otherwise><script>$.ajax({url: "<c:url value="/shop/reference/zoneName"/>",type: "GET",data: "zoneCode=${requestScope.MERCHANT_STORE.zone.code}",success: function(data){$('#storeZoneName').html(data)}})</script><span id="storeZoneName"><c:out value="${requestScope.MERCHANT_STORE.zone.code}"/></span></c:otherwise></c:choose>,
+ <span id="storeCountryName"><script>$.ajax({url: "<c:url value="/shop/reference/countryName"/>",type: "GET",data: "countryCode=${requestScope.MERCHANT_STORE.country.isoCode}",success: function(data){$('#storeCountryName').html(data)}})</script></span></span><br/>
+ <span itemprop="postalCode"><c:out value="${requestScope.MERCHANT_STORE.storepostalcode}"/></span><br/>
+ <abbr title="Phone"><s:message code="label.generic.phone" text="Phone" /></abbr>: <span itemprop="telephone"><c:out value="${requestScope.MERCHANT_STORE.storephone}"/></span>
+ </div>
+ </div>
+ </address>
diff --git a/sm-shop/src/main/webapp/pages/shop/common/timeout.jsp b/sm-shop/src/main/webapp/pages/shop/common/timeout.jsp
new file mode 100644
index 0000000..ab42112
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/common/timeout.jsp
@@ -0,0 +1,29 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+
+ <table>
+ <tr>
+ <td><img src="<c:url value="/resources/img/important-icon.png"/>" width="50"></td>
+ <td><h3><s:message code="message.timeout" text="The request timed out"/></h3></td>
+ </tr>
+ </table>
+
+
+
+
+
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/catalogLayout.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/catalogLayout.jsp
new file mode 100755
index 0000000..d776910
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/catalogLayout.jsp
@@ -0,0 +1,56 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+ <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+ <c:set var="lang" scope="request" value="${requestScope.locale.language}"/>
+
+
+ <html xmlns="http://www.w3.org/1999/xhtml">
+
+
+ <head>
+ <meta charset="utf-8">
+ <title><c:out value="${requestScope.PAGE_INFORMATION.pageTitle}" /></title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="<c:out value="${requestScope.PAGE_INFORMATION.pageDescription}" />">
+ <meta name="author" content="<c:out value="${requestScope.MERCHANT_STORE.storename}"/>">
+
+
+ <jsp:include page="/pages/shop/templates/bootstrap/sections/shopLinks.jsp" />
+ </head>
+
+ <body>
+
+ <div id="pageContainer" class="container">
+ <tiles:insertAttribute name="header" ignore="true"/>
+
+ <tiles:insertAttribute name="navbar" ignore="true"/>
+
+ <tiles:insertAttribute name="body" ignore="true"/>
+
+ <tiles:insertAttribute name="footer" ignore="true"/>
+ </div>
+ <!-- end container -->
+ <jsp:include page="/pages/shop/templates/bootstrap/sections/jsLinks.jsp" />
+
+ </body>
+
+ </html>
+
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/category.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/category.jsp
new file mode 100755
index 0000000..3498d76
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/category.jsp
@@ -0,0 +1,215 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+ <script src="<c:url value="/resources/js/jquery.easing.1.3.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery.quicksand.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery-sort-filter-plugin.js" />"></script>
+
+
+
+ <script>
+
+ var START_COUNT_PRODUCTS = 0;
+ var MAX_PRODUCTS = 16;
+ var filter = null;
+ var filterValue = null;
+
+ $(function(){
+
+ $('#filter').on('change', function() {
+ var orderBy = getOrderBy();
+ orderProducts(orderBy);
+ });
+
+ loadCategoryProducts();
+
+ });
+
+ function orderProducts(attribute) {
+
+
+ if(attribute=='item-order') {
+ return;
+ }
+
+ // get the first collection
+ var $prods = $('#productsContainer');
+
+ // clone applications to get a second collection
+ var $data = $prods.clone();
+
+ var $filteredData = $data.find('li');
+ var $sortedData = $filteredData.sorted({
+ by: function(v) {
+ if(attribute=='item-price') {
+ return parseFloat($(v).attr(attribute));
+ } else {
+ return $(v).attr(attribute);
+ }
+ }
+ });
+
+ // finally, call quicksand
+ $prods.quicksand($sortedData, {
+ duration: 800,
+ easing: 'easeInOutQuad'
+ });
+
+
+ }
+
+ function loadCategoryProducts() {
+ var url = '<%=request.getContextPath()%>/services/public/products/page/' + START_COUNT_PRODUCTS + '/' + MAX_PRODUCTS + '/<c:out value="${requestScope.MERCHANT_STORE.code}"/>/<c:out value="${requestScope.LANGUAGE.code}"/>/<c:out value="${category.description.friendlyUrl}"/>.html';
+
+ if(filter!=null) {
+ url = url + '/filter=' + filter + '/filter-value=' + filterValue +'';
+ }
+ loadProducts(url,'#productsContainer');
+ }
+
+
+ function filterCategory(filterType,filterVal) {
+ //reset product section
+ $('#productsContainer').html('');
+ START_COUNT_PRODUCTS = 0;
+ filter = filterType;
+ filterValue = filterVal;
+ loadCategoryProducts();
+ }
+
+ function callBackLoadProducts(productList) {
+ totalCount = productList.productCount;
+ START_COUNT_PRODUCTS = START_COUNT_PRODUCTS + MAX_PRODUCTS;
+ if(START_COUNT_PRODUCTS < totalCount) {
+ $("#button_nav").show();
+ } else {
+ $("#button_nav").hide();
+ }
+ $('#productsContainer').hideLoading();
+
+ //check option
+ var orderBy = getOrderBy();
+ orderProducts(orderBy);
+
+ var productQty = productList.productCount + ' <s:message code="label.search.items.found" text="item(s) found" />';
+ $('#products-qty').html(productQty);
+
+ }
+
+ function getOrderBy() {
+ var orderBy = $("#filter").val();
+ return orderBy;
+ }
+
+
+
+
+</script>
+
+ <jsp:include page="/pages/shop/templates/bootstrap/sections/breadcrumb.jsp" />
+
+ <c:if test="${category.description.description!=null}">
+ <!-- category description -->
+ <div class="row-fluid">
+ <p>
+ <c:out value="${category.description.description}"/>
+ </p>
+ </div>
+
+ </c:if>
+
+ <div class="row-fluid">
+
+
+ <div class="span12">
+
+
+
+ <!-- left column -->
+ <div class="span3">
+ <div class="sidebar-nav">
+
+
+ <br/>
+
+ <ul class="nav nav-list">
+ <c:if test="${parent!=null}">
+ <li class="nav-header"><c:out value="${parent.description.name}" /></li>
+ </c:if>
+ <c:forEach items="${subCategories}" var="subCategory">
+ <li>
+ <a href="<c:url value="/shop/category/${subCategory.description.friendlyUrl}.html"/><sm:breadcrumbParam categoryId="${subCategory.id}"/>"><c:out value="${subCategory.description.name}" />
+ <c:if test="${subCategory.productCount>0}"> <span class="countItems">(<c:out value="${subCategory.productCount}" />)</span></c:if></a></li>
+ </c:forEach>
+ </ul>
+ </div>
+
+ <c:if test="${fn:length(manufacturers) > 0}">
+ <br/>
+ <div class="sidebar-nav">
+ <ul class="nav nav-list">
+ <li class="nav-header"><s:message code="label.manufacturer.brand" text="Brands" /></li>
+ <c:forEach items="${manufacturers}" var="manufacturer">
+ <li>
+ <a href="javascript:filterCategory('BRAND','${manufacturer.id}')"><c:out value="${manufacturer.description.name}" /></a></li>
+ </c:forEach>
+ </ul>
+ </div>
+ </c:if>
+
+
+ </div><!--/span-->
+
+ <!-- right column -->
+ <div class="span9">
+ <p class="lead"><c:out value="${category.description.name}" /></p>
+ <div class="products-title row-fluid">
+ <div class="span6">
+ <p><div id="products-qty"></div></p>
+ </div>
+ <div class="span6">
+ <div class="pull-right">
+ <p>
+ <ul class="nav nav-list">
+ <li class="widget-header"><s:message code="label.generic.sortby" text="Sort by" />:
+ <select id="filter">
+ <option value="item-order"><s:message code="label.generic.default" text="Default" /></option>
+ <option value="item-name"><s:message code="label.generic.name" text="Name" /></option>
+ <option value="item-price"><s:message code="label.generic.price" text="Price" /></option>
+ </select>
+ </li>
+ </ul>
+ </p>
+ </div>
+ </div>
+ </div>
+
+
+
+ <!-- products are loaded by ajax -->
+ <ul id="productsContainer" class="thumbnails product-list"></ul>
+
+ <nav id="button_nav" style="text-align:center;display:none;">
+ <button class="btn btn-large" style="width:400px;" onClick="loadCategoryProducts();"><s:message code="label.product.moreitems" text="Display more items" />...</button>
+ </nav>
+ <span id="end_nav" style="display:none;"><s:message code="label.product.nomoreitems" text="No more items to be displayed" /></span>
+
+
+ </div><!--/span-->
+
+ </div><!-- 12 -->
+
+ </div><!-- row fluid -->
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/content.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/content.jsp
new file mode 100644
index 0000000..acc309b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/content.jsp
@@ -0,0 +1,31 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+ <jsp:include page="/pages/shop/templates/bootstrap/sections/breadcrumb.jsp" />
+
+
+ <div class="row-fluid">
+
+ <div class="span12">
+ <c:out value="${content.description}" escapeXml="false"/>
+ </div>
+ </div>
+
+
+
+
+
+
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/customer.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/customer.jsp
new file mode 100644
index 0000000..373471b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/customer.jsp
@@ -0,0 +1,21 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<%
+/** Nothing just use the common customer dashboard page **/
+%>
+
+<jsp:include page="/pages/shop/common/customer/dashboard.jsp" />
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/landing.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/landing.jsp
new file mode 100755
index 0000000..618da97
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/landing.jsp
@@ -0,0 +1,69 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+
+
+
+ <c:if test="${page!=null}">
+ <div class="row-fluid">
+ <div class="span12">
+ <span id="homeText"><c:out value="${page.description}" escapeXml="false"/></span>
+ </div>
+ </div>
+ </c:if>
+
+ <br/>
+ <sm:shopProductGroup groupName="FEATURED_ITEM"/>
+ <sm:shopProductGroup groupName="SPECIALS"/>
+
+ <c:if test="${requestScope.FEATURED_ITEM!=null || requestScope.SPECIALS!=null}" >
+ <div class="row-fluid">
+ <div class="span12">
+ <ul class="nav nav-tabs home" id="product-tab">
+ <c:if test="${requestScope.FEATURED_ITEM!=null}" ><li class="active"><a href="#tab1"><s:message code="menu.catalogue-featured" text="Featured items" /></a></li></c:if>
+ <c:if test="${requestScope.SPECIALS!=null}" ><li><a href="#tab2"><s:message code="label.product.specials" text="Specials" /></a></li></c:if>
+ </ul>
+ <div class="tab-content">
+ <!-- one div by section -->
+ <c:if test="${requestScope.FEATURED_ITEM!=null}" >
+
+ <div class="tab-pane active" id="tab1">
+ <ul class="thumbnails product-list">
+ <!-- Iterate over featuredItems -->
+ <c:set var="ITEMS" value="${requestScope.FEATURED_ITEM}" scope="request" />
+ <c:set var="FEATURED" value="true" scope="request" />
+ <jsp:include page="/pages/shop/templates/bootstrap/sections/productBox.jsp" />
+ </ul>
+ </div>
+ </c:if>
+ <c:if test="${requestScope.SPECIALS!=null}" >
+ <div class="tab-pane" id="tab2">
+ <ul class="thumbnails product-list">
+ <!-- Iterate over featuredItems -->
+ <c:set var="ITEMS" value="${requestScope.SPECIALS}" scope="request" />
+ <jsp:include page="/pages/shop/templates/bootstrap/sections/productBox.jsp" />
+ </ul>
+ </div>
+ </c:if>
+
+ </div>
+ </div>
+ </div>
+ </c:if>
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/product.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/product.jsp
new file mode 100644
index 0000000..54ed48b
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/product.jsp
@@ -0,0 +1,165 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<script src="<c:url value="/resources/js/jquery.elevateZoom-3.0.8.min.js" />"></script>
+<script src="<c:url value="/resources/js/jquery.raty.min.js" />"></script>
+
+
+
+ <jsp:include page="/pages/shop/templates/bootstrap/sections/breadcrumb.jsp" />
+
+ <div class="row-fluid">
+
+ <div itemscope class="span12" itemtype="http://data-vocabulary.org/Product">
+ <!-- Image column -->
+ <div id="img" class="span4 productMainImage">
+ <c:if test="${product.image!=null}">
+ <span id="mainImg"><img id="im-<c:out value="${product.image.id}"/>" alt="<c:out value="${product.description.name}"/>" src="<c:url value="${product.image.imageUrl}"/>" data-zoom-image="<sm:shopProductImage imageName="${product.image.imageName}" sku="${product.sku}" size="LARGE"/>"></span>
+ <script>
+ $(function() {
+ setImageZoom('im-<c:out value="${product.image.id}"/>');
+ });
+ </script>
+ <c:if test="${product.images!=null && fn:length(product.images)>1}">
+ <ul id="imageGallery" class="thumbnails small">
+ <c:forEach items="${product.images}" var="thumbnail">
+ <li class="span2">
+ <a href="#img" class="thumbImg" title="<c:out value="${thumbnail.imageName}"/>"><img id="im-<c:out value="${thumbnail.id}"/>" src="<c:url value="${thumbnail.imageUrl}"/>" data-zoom-image="<sm:shopProductImage imageName="${thumbnail.imageName}" sku="${product.sku}" size="LARGE"/>" alt="<c:url value="${thumbnail.imageName}"/>" ></a>
+ </li>
+ </c:forEach>
+ </ul>
+ </c:if>
+ </c:if>
+ </div>
+
+ <!-- Google rich snippets (http://blog.hubspot.com/power-google-rich-snippets-ecommerce-seo-ht) -->
+ <!-- Product description column -->
+ <div class="span8">
+ <p class="lead"><strong>${product.description.name}</strong></p>
+
+
+ <!-- product rating -->
+ <jsp:include page="/pages/shop/common/catalog/rating.jsp" />
+
+
+ <address>
+ <strong><s:message code="label.product.brand" text="Brand"/></strong> <span itemprop="brand"><c:out value="${product.manufacturer.description.name}" /></span><br>
+ <strong><s:message code="label.product.code" text="Product code"/></strong> <span itemprop="identifier" content="mpn:${product.sku}">${product.sku}</span><br>
+ </address>
+ <span itemprop="offerDetails" itemscope itemtype="http://data-vocabulary.org/Offer">
+ <meta itemprop="seller" content="${requestScope.MERCHANT_STORE.storename}"/>
+ <meta itemprop="currency" content="<c:out value="${requestScope.MERCHANT_STORE.currency.code}" />" />
+ <h3 id="productPrice">
+ <c:choose>
+ <c:when test="${product.discounted}">
+ <del><c:out value="${product.originalPrice}" /></del> <span class="specialPrice"><span itemprop="price"><c:out value="${product.finalPrice}" /></span></span>
+ </c:when>
+ <c:otherwise>
+ <span itemprop="price"><c:out value="${product.finalPrice}" /></span>
+ </c:otherwise>
+ </c:choose>
+ </h3>
+ <c:if test="${not product.productVirtual}">
+ <address>
+ <strong><s:message code="label.product.available" text="Availability"/></strong> <span><c:choose><c:when test="${product.quantity>0}"><span itemprop="availability" content="in_stock">${product.quantity}</span></c:when><c:otherwise><span itemprop="availability" content="out_of_stock"><s:message code="label.product.outofstock" text="Out of stock" /></c:otherwise></c:choose></span><br>
+ </address>
+ </c:if>
+ </span>
+ <p>
+ <jsp:include page="/pages/shop/common/catalog/addToCartProduct.jsp" />
+ </p>
+ </div>
+
+ </div>
+ </div>
+ <div class="row-fluid">
+ <div class="span12">
+
+ <ul class="nav nav-tabs" id="productTabs">
+ <li class="active"><a href="#description"><s:message code="label.productedit.productdesc" text="Product description" /></a></li>
+ <c:if test="${attributes!=null}"><li><a href="#specifications"><s:message code="label.product.attribute.specifications" text="Specifications" /></a></li></c:if>
+ <li><a href="#reviews"><s:message code="label.product.customer.reviews" text="Customer reviews" /></a></li>
+ </ul>
+ <div class="tab-content">
+ <div class="tab-pane active" id="description">
+ <c:out value="${product.description.description}" escapeXml="false"/>
+ </div>
+ <div class="tab-pane" id="specifications">
+ <!-- read only properties -->
+ <c:if test="${attributes!=null}">
+ <table>
+ <c:forEach items="${attributes}" var="attribute" varStatus="status">
+ <tr>
+ <td><c:out value="${attribute.name}"/> : </td>
+ <td><c:out value="${attribute.readOnlyValue.description}" /></td>
+ </tr>
+ </c:forEach>
+ </table>
+ </c:if>
+ </div>
+ <div class="tab-pane" id="reviews">
+
+ <!-- reviews -->
+ <jsp:include page="/pages/shop/common/catalog/reviews.jsp" />
+
+
+ </div>
+ </div>
+ <br/>
+ <br/>
+ <!-- Related items -->
+ <c:if test="${relatedProducts!=null}">
+ <h1><s:message code="label.product.related.title" text="Related items"/></h1>
+ <ul class="thumbnails product-list">
+ <!-- Iterate over featuredItems -->
+ <c:set var="ITEMS" value="${relatedProducts}" scope="request" />
+ <jsp:include page="/pages/shop/templates/bootstrap/sections/productBox.jsp" />
+ </ul>
+ </c:if>
+
+
+ </div>
+ </div>
+
+
+
+ <script>
+
+ $(function () {
+ $('#productTabs a:first').tab('show');
+ $('#productTabs a').click(function (e) {
+ e.preventDefault();
+ $(this).tab('show');
+ })
+ $('.thumbImg').click(function (e) {
+ img = $(this).find('img').clone();
+ $('#mainImg').html(img);
+ setImageZoom(img.attr('id'));
+ })
+ })
+
+ <!-- lens plugin -->
+ function setImageZoom(id) {
+ $('#' + id).elevateZoom({
+ zoomType : "lens",
+ lensShape : "square",
+ lensSize : 240
+ });
+ }
+
+
+ </script>
+
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/search.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/search.jsp
new file mode 100644
index 0000000..ff03d81
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/pages/search.jsp
@@ -0,0 +1,126 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+
+ <script>
+
+ var START_COUNT_PRODUCTS = 0;
+ var MAX_PRODUCTS = 12;
+
+
+ $(function(){
+
+ search();
+
+ });
+
+ function search() {
+ var url = '<%=request.getContextPath()%>/services/public/search/<c:out value="${requestScope.MERCHANT_STORE.code}"/>/<c:out value="${requestScope.LANGUAGE.code}"/>/' + START_COUNT_PRODUCTS + '/' + MAX_PRODUCTS + '/term.html';
+ searchProducts(url,'#productsContainer','<c:out value="${q}"/>',null);
+ }
+
+ function callBackSearchProducts(productList) {
+ totalCount = productList.productCount;
+ START_COUNT_PRODUCTS = START_COUNT_PRODUCTS + MAX_PRODUCTS;
+ if(START_COUNT_PRODUCTS < totalCount) {
+ $("#button_nav").show();
+ } else {
+ $("#button_nav").hide();
+ }
+
+ //facets
+ if(productList.categoryFacets!=null) {
+ for (var i = 0; i < productList.categoryFacets.length; i++) {
+ var categoryFacets = '<li>';
+ categoryFacets = categoryFacets + '<a href="<c:url value="/shop"/>/category/' + productList.categoryFacets[i].description.friendlyUrl + '.html">' + productList.categoryFacets[i].description.name;
+ if(productList.categoryFacets[i].productCount>0) {
+ categoryFacets = categoryFacets + ' <span class="countItems">(' + productList.categoryFacets[i].productCount + ')</span>'
+ }
+ categoryFacets = categoryFacets + '</a>';
+ categoryFacets = categoryFacets + '</li>';
+ $(categoriesFacets).append(categoryFacets);
+ }
+ }
+
+ $('#productsContainer').hideLoading();
+
+
+ var productQty = productList.productCount + ' <s:message code="label.search.items.found" text="item(s) found" />';
+ $('#products-qty').html(productQty);
+
+ }
+
+
+
+
+</script>
+
+
+ <div class="row-fluid">
+
+
+ <div class="span12">
+
+ <!-- left column -->
+ <!--Search facets-->
+ <div class="span3">
+ <div class="sidebar-nav">
+ <ul id="categoriesFacets" class="nav nav-list">
+ <!--<li class="nav-header"></li>-->
+ </ul>
+ </div>
+ </div><!--/span-->
+
+ <!-- right column -->
+ <div class="span9">
+
+ <div class="products-title row-fluid">
+ <div class="span6">
+ <p><div id="products-qty"></div></p>
+ </div>
+ <div class="span6">
+ <div class="pull-right">
+ <p>
+ <ul class="nav nav-list">
+ <li class="widget-header"><s:message code="label.generic.sortby" text="Sort by" />:
+ <select id="filter">
+ <option value="item-order"><s:message code="label.generic.default" text="Default" /></option>
+ <option value="item-name"><s:message code="label.generic.name" text="Name" /></option>
+ <option value="item-price"><s:message code="label.generic.price" text="Price" /></option>
+ </select>
+ </li>
+ </ul>
+ </p>
+ </div>
+ </div>
+ </div>
+
+
+ <ul id="productsContainer" class="thumbnails product-list">
+ <!-- search ajax -->
+ </ul>
+ <nav id="button_nav" style="text-align:center;display:none;">
+ <button class="btn btn-large" style="width:400px;" onClick="loadProducts();"><s:message code="label.product.moreitems" text="Display more items" />...</button>
+ </nav>
+ <span id="end_nav" style="display:none;"><s:message code="label.product.nomoreitems" text="No more items to be displayed" /></span>
+
+
+ </div><!--/span-->
+
+ </div><!-- 12 -->
+
+ </div><!-- row fluid -->
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/breadcrumb.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/breadcrumb.jsp
new file mode 100755
index 0000000..b7eb69a
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/breadcrumb.jsp
@@ -0,0 +1,33 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<div class="row-fluid">
+
+ <div class="span12">
+
+ <ul class="breadcrumb">
+
+
+ <c:forEach items="${requestScope.BREADCRUMB.breadCrumbs}" var="breadcrumb" varStatus="count">
+ <li class="active">
+ <a href="${breadcrumb.url}<sm:breadcrumbParam/>">${breadcrumb.label}</a> <span class="divider">/</span>
+ </li>
+ </c:forEach>
+
+ </ul>
+
+ </div>
+
+
+
+</div>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/footer.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/footer.jsp
new file mode 100755
index 0000000..e14cee6
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/footer.jsp
@@ -0,0 +1,84 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+ <!-- footer -->
+ <footer>
+ <div id="footer" class="row-fluid">
+ <c:if test="${requestScope.CONFIGS['displayStoreAddress'] == true}">
+ <div class="span3">
+ <div class="company">
+ <p>
+ <jsp:include page="/pages/shop/common/preBuiltBlocks/storeAddress.jsp"/>
+ </p>
+ </div>
+ </div>
+ </c:if>
+ <c:if test="${not empty requestScope.CONTENT_PAGE}">
+ <div class="span3 contentPages">
+ <p class="lead"><s:message code="label.store.information.title" text="Informations"/></p>
+ <!-- Pages -->
+ <ul class="footerLiks">
+ <c:forEach items="${requestScope.CONTENT_PAGE}" var="content">
+ <li><a href="<c:url value="/shop/pages/${content.seUrl}.html"/>" class="current" style="color: #fff;">${content.name}</a></li>
+ </c:forEach>
+ <c:if test="${requestScope.CONFIGS['displayContactUs']==true}">
+ <li><a href="<c:url value="/shop/store/contactus.html"/>" style="color: #fff;"><s:message code="label.customer.contactus" text="Contact us"/></a></li>
+ </c:if>
+ </ul>
+ </div>
+ </c:if>
+ <div class="span3 customerSection">
+ <c:if test="${requestScope.CONFIGS['displayCustomerSection'] == true}">
+ <p class="lead"><s:message code="label.customer.myaccount" text="My Account" /></p>
+ <ul class="footerLiks">
+ <sec:authorize access="hasRole('AUTH_CUSTOMER') and fullyAuthenticated">
+ <li><a href="<c:url value="/shop/customer/account.html"/>" style="color: #fff;"><s:message code="menu.profile" text="Profile"/></a></li>
+ <li><a href="<c:url value="/shop/customer/billing.html"/>" style="color: #fff;"><s:message code="label.customer.billingshipping" text="Billing & shipping information"/></a></li>
+ <li><s:message code="label.order.recent" text="Recent orders"/></li>
+ </sec:authorize>
+ <sec:authorize access="!hasRole('AUTH_CUSTOMER') and fullyAuthenticated">
+ <li>
+ <s:message code="label.security.loggedinas" text="You are logged in as"/> [<sec:authentication property="principal.username"/>]. <s:message code="label.security.nologinacces.store" text="We can't display store logon box"/>
+ </li>
+ </sec:authorize>
+ <sec:authorize access="!hasRole('AUTH_CUSTOMER') and !fullyAuthenticated">
+ <li><a href="#" style="color: #fff;"><s:message code="button.label.login" text="Login" /></a></li>
+ </sec:authorize>
+ </ul>
+ </c:if>
+ </div>
+ <div class="span3 socialLinksSection">
+ <!-- Social links -->
+ <c:if test="${requestScope.CONFIGS['facebook_page_url'] != null}">
+ <p class="lead"><s:message code="label.social.connect" text="Connect with us"/></p>
+ <c:if test="${requestScope.CONFIGS['facebook_page_url'] != null}">
+ <a href="<c:out value="${requestScope.CONFIGS['facebook_page_url']}"/>"><img src="<c:url value="/resources/img/facebook-transparent.png" />" width="40"></a>
+ </c:if>
+ <c:if test="${requestScope.CONFIGS['twitter_handle'] != null}">
+ <a href="<c:out value="${requestScope.CONFIGS['twitter_handle']}"/>"><img src="<c:url value="/resources/img/twitter-transparent.png" />" width="50"></a>
+ </c:if>
+ </c:if>
+ </div>
+ </div>
+ <div id="footer-bottom">
+ <div class="container">
+ <div class="row-fluid">
+ <div class="span12 text">© <s:message code="label.generic.providedby" /> <a href="http://www.shopizer.com" class="footer-href" target="_blank">Shopizer</div>
+ </div>
+ </div>
+ </div>
+ </footer>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/header.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/header.jsp
new file mode 100755
index 0000000..a732572
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/header.jsp
@@ -0,0 +1,122 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+ <!-- header -->
+ <div id="mainmenu" class="row-fluid">
+
+ <ul class="nav nav-pills pull-left" id="linkMenuLinks">
+ <li class="active"><a href="<c:url value="/shop"/>"><s:message code="menu.home" text="Home"/></a></li>
+ <c:forEach items="${requestScope.CONTENT_PAGE}" var="content">
+ <li class="">
+ <a href="<c:url value="/shop/pages/${content.seUrl}.html"/>" class="current">
+ <span class="name">${content.name}</span>
+ </a>
+ </li>
+ </c:forEach>
+ <c:if test="${requestScope.CONFIGS['displayContactUs']==true}">
+ <li><a href="<c:url value="/shop/store/contactus.html"/>"><s:message code="label.customer.contactus" text="Contact us"/></a></li>
+ </c:if>
+ </ul>
+
+
+ <c:if test="${not fn:contains(requestScope['javax.servlet.forward.servlet_path'], 'order') && not fn:contains(requestScope['javax.servlet.forward.servlet_path'], 'cart')}">
+ <!-- not displayed in checkout (order) and cart -->
+ <div id="miniCart" style="padding-top: 8px;padding-bottom:10px;" class="btn-group pull-right">
+
+ <i class="icon-shopping-cart icon-black"></i>
+ <a style="box-shadow:none;color:FF8C00;" href="#" data-toggle="dropdown" class="open noboxshadow dropdown-toggle" id="open-cart"><s:message code="label.mycart" text="My cart"/></a>
+ <jsp:include page="/pages/shop/common/cart/minicartinfo.jsp" />
+
+ <ul class="dropdown-menu minicart" id="minicartComponent">
+ <li>
+ <jsp:include page="/pages/shop/common/cart/minicart.jsp" />
+ </li>
+ </ul>
+ </div>
+ </c:if>
+
+ <!-- If display customer section -->
+ <c:if test="${requestScope.CONFIGS['displayCustomerSection'] == true}">
+ <sec:authorize access="hasRole('AUTH_CUSTOMER') and fullyAuthenticated">
+ <!-- logged in user -->
+ <c:if test="${requestScope.CUSTOMER!=null}">
+ <ul class="logon-box pull-right">
+ <li id="fat-menu" class="dropdown">
+ <a class="dropdown-toggle noboxshadow" data-toggle="dropdown" href="#">
+ <s:message code="label.generic.welcome" text="Welcome" />
+ <c:if test="${not empty requestScope.CUSTOMER.billing.firstName}">
+ <c:out value="${sessionScope.CUSTOMER.billing.firstName}"/>
+ </c:if><b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="<c:url value="/shop/customer/dashboard.html" />"><s:message code="label.customer.myaccount" text="My account"/></a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="<c:url value="/shop/customer/j_spring_security_logout" />"><s:message code="button.label.logout" text="Logout"/></a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </c:if>
+ </sec:authorize>
+ <sec:authorize access="!hasRole('AUTH_CUSTOMER') and fullyAuthenticated">
+ <!-- no dual login -->
+ <ul class="logon-box pull-right">
+ <li>
+ <s:message code="label.security.loggedinas" text="You are logged in as"/> [<sec:authentication property="principal.username"/>]. <s:message code="label.security.nologinacces.store" text="We can't display store logon box"/>
+ </li>
+ </ul>
+ </sec:authorize>
+ <sec:authorize access="!hasRole('AUTH_CUSTOMER') and !fullyAuthenticated">
+ <!-- login box -->
+ <ul class="pull-right" style="list-style-type: none;padding-top: 8px;z-index:500000;">
+ <li id="fat-menu" class="dropdown">
+ <a href="#" id="signinDrop" role="button" class="dropdown-toggle noboxshadow" data-toggle="dropdown"><s:message code="button.label.signin" text="Signin" /><b class="caret"></b></a>
+
+
+ <div id="signinPane" class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;">
+ <div id="loginError" class="alert alert-error" style="display:none;"></div>
+ <!-- form id must be login, form fields must be userName, password and storeCode -->
+ <form id="login" method="post" accept-charset="UTF-8">
+ <div class="control-group">
+ <label><s:message code="label.username" text="Username" /></label>
+ <div class="controls">
+ <input id="userName" style="margin-bottom: 15px;" type="text" name="userName" size="30" />
+ </div>
+ </div>
+ <div class="control-group">
+ <label><s:message code="label.password" text="Password" /></label>
+ <div class="controls">
+ <input id="password" style="margin-bottom: 15px;" type="password" name="password" size="30" />
+ </div>
+ </div>
+ <input id="storeCode" name="storeCode" type="hidden" value="<c:out value="${requestScope.MERCHANT_STORE.code}"/>"/>
+ <button type="submit" style="width:100%" class="btn btn-large" id="login-button"><s:message code="button.label.login" text="Login" /></button>
+
+ </form>
+ <a href="<c:url value="/shop/customer/registration.html" />" role="button" class="" data-toggle="modal"><s:message code="label.register.notyetregistered" text="Not yet registered ?" /></a>
+ </div>
+ </li>
+ </ul>
+ </sec:authorize>
+ </c:if>
+
+
+ </div>
+ <!-- End main menu -->
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/jsLinks.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/jsLinks.jsp
new file mode 100755
index 0000000..4305ecb
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/jsLinks.jsp
@@ -0,0 +1,34 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+
+ <script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-button.js" />"></script>
+ <script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-modal.js" />"></script>
+ <script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-tab.js" />"></script>
+ <!--<script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-transition.js" />"></script>-->
+ <!--<script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-alert.js" />"></script>-->
+ <script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-dropdown.js" />"></script>
+ <!--<script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-scrollspy.js" />"></script>-->
+ <script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-tooltip.js" />"></script>
+ <!--<script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-popover.js" />"></script>-->
+ <script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-collapse.js" />"></script>
+ <!--<script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-carousel.js" />"></script>-->
+
+
+ <script type="text/javascript">
+
+ $('#product-tab a:first').tab('show');
+ $('#product-tab a').click(function (e) {
+ e.preventDefault();
+ $(this).tab('show');
+ })
+
+
+ </script>
+
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/navbar.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/navbar.jsp
new file mode 100755
index 0000000..c7d5cc6
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/navbar.jsp
@@ -0,0 +1,117 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+<%@ taglib uri="/WEB-INF/shopizer-functions.tld" prefix="display" %>
+
+<!-- TT Typeahead js files -->
+<script src="<c:url value="/resources/js/hogan.js" />"></script>
+<script src="<c:url value="/resources/js/typeahead.min.js" />"></script>
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+ $('#searchField').typeahead({
+ name: 'shopizer-search',
+ <c:if test="${requestScope.CONFIGS['useDefaultSearchConfig'][requestScope.LANGUAGE.code]==true}">
+ <c:if test="${requestScope.CONFIGS['defaultSearchConfigPath'][requestScope.LANGUAGE.code]!=null}">
+ prefetch: '<c:out value="${requestScope.CONFIGS['defaultSearchConfigPath'][requestScope.LANGUAGE.code]}"/>',
+ </c:if>
+ </c:if>
+
+
+ remote: {
+ url: '<c:url value="/services/public/search/${requestScope.MERCHANT_STORE.code}/${requestScope.LANGUAGE.code}/autocomplete.html"/>?q=%QUERY',
+ filter: function (parsedResponse) {
+ // parsedResponse is the array returned from your backend
+ console.log(parsedResponse);
+
+ // do whatever processing you need here
+ return parsedResponse;
+ }
+ },
+ template: [
+ '<p class="name">{{name}}</p>',
+ '<p class="description">{{description}}</p>'
+ ].join(''),
+ engine: Hogan
+ });
+
+
+
+
+});
+
+</script>
+
+<c:set var="req" value="${request}" />
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+ <!-- Start Navbar-->
+ <div class="row-fluid">
+
+ <div class="span4 pull-left">
+ <nav class="logo">
+ <c:choose>
+ <c:when test="${not empty requestScope.MERCHANT_STORE.storeLogo}">
+ <img class="logoImage" src="<sm:storeLogo/>"/>
+ </c:when>
+ <c:otherwise>
+ <h1>
+ <a href="<c:url value="/shop/"/>">
+ <c:out value="${requestScope.MERCHANT_STORE.storename}"/>
+ </a>
+ </h1>
+ </c:otherwise>
+ </c:choose>
+ </nav>
+ </div>
+ <div class="span8 pull-right">
+
+ <nav id="menu" class="pull-right">
+ <ul id="mainMenu">
+ <li class="">
+ <a href="<c:url value="/shop"/>" class="current">
+ <span class="name"><s:message code="menu.home" text="Home"/></span>
+ <span class="desc"><s:message code="menu.home" text="Home"/></span>
+ </a>
+ </li>
+
+
+ <c:forEach items="${requestScope.TOP_CATEGORIES}" var="category">
+ <li class="">
+ <a href="<c:url value="/shop/category/${category.description.seUrl}.html"/><sm:breadcrumbParam categoryId="${category.id}"/>" class="current">
+ <span class="name">${category.description.name}</span>
+ <span class="desc">${category.description.categoryHighlight}</span>
+ </a>
+ </li>
+ </c:forEach>
+ </ul>
+
+ <div id="searchGroup" class="btn-group pull-right">
+ <form id="searchForm" class="form-inline" method="post" action="<c:url value="/shop/search/search.html"/>">
+ <input id="searchField" class="tt-query" name="q" type="text" placeholder="<s:message code="label.search.searchQuery" text="Search query" />" autocomplete="off" spellcheck="false" dir="auto" value="<c:out value="${q}"/>">
+ <button id="searchButton" class="btn" type="submit"><s:message code="label.generic.search" text="Search" /></button>
+ </form>
+ </div>
+
+
+ </nav>
+
+
+ </div>
+ </div>
+
+ <!-- End Navbar-->
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/productBox.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/productBox.jsp
new file mode 100644
index 0000000..37c7397
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/productBox.jsp
@@ -0,0 +1,37 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+ <c:forEach items="${requestScope.ITEMS}" var="product">
+ <li class="span3" data-id="${product.id}" item-price="${product.price}" item-name="${product.description.name}" item-order="${product.sortOrder}">
+ <div class="product-box">
+ <a href="<c:url value="/shop/product/" /><c:out value="${product.description.friendlyUrl}"/>.html<sm:breadcrumbParam productId="${product.id}"/>"><h4><c:out value="${product.description.name}"/></h4></a>
+ <h3>
+ <c:choose>
+ <c:when test="${product.discounted}">
+ <del><c:out value="${product.originalPrice}" /></del> <span class="specialPrice"><c:out value="${product.finalPrice}" /></span>
+ </c:when>
+ <c:otherwise>
+ <c:out value="${product.finalPrice}" />
+ </c:otherwise>
+ </c:choose>
+ </h3>
+ <c:if test="${product.image!=null}"><a href="<c:url value="/shop/product/" /><c:out value="${product.description.friendlyUrl}"/>.html"><img src="<sm:shopProductImage imageName="${product.image.imageName}" sku="${product.sku}"/>"/></a></c:if>
+ <div class="bottom">
+ <a href="<c:url value="/shop/product/" /><c:out value="${product.description.friendlyUrl}"/>.html<sm:breadcrumbParam productId="${product.id}"/>"><s:message code="button.label.view" text="Details" /></a> <c:choose><c:when test="${requestScope.FEATURED==true}"><c:if test="${requestScope.CONFIGS['displayAddToCartOnFeaturedItems']==true}">/ <a class="addToCart" href="#" productId="${product.id}"><s:message code="button.label.addToCart" text="Add to cart" /></a></c:if></c:when><c:otherwise>/ <a class="addToCart" href="#" productId="${product.id}"><s:message code="button.label.addToCart" text="Add to cart" /></a></c:otherwise></c:choose>
+ </div>
+ </div>
+ </li>
+ </c:forEach>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/shopLinks.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/shopLinks.jsp
new file mode 100755
index 0000000..866d95d
--- /dev/null
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/shopLinks.jsp
@@ -0,0 +1,70 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@ page session="false" %>
+
+ <!-- required common scripts -->
+ <script src="<c:url value="/resources/js/shop-functions.js" />"></script>
+ <jsp:include page="/resources/js/functions.jsp" />
+ <script src="<c:url value="/resources/js/jquery-1.10.2.min.js" />"></script>
+ <script src="<c:url value="/resources/js/json2.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery-cookie.js" />"></script>
+ <script src="<c:url value="/resources/js/shopping-cart.js" />"></script>
+ <script src="<c:url value="/resources/js/login.js" />"></script>
+ <script src="<c:url value="/resources/js/jquery.showLoading.min.js" />"></script>
+
+ <!-- specific css -->
+ <link href="<c:url value="/resources/templates/bootstrap/css/bootstrap.min.css" />" rel="stylesheet">
+ <link href="<c:url value="/resources/templates/bootstrap/css/bootstrap-responsive.min.css" />" rel="stylesheet">
+
+ <!-- generic and common css file -->
+ <link href="<c:url value="/resources/css/sm.css" />" rel="stylesheet">
+ <link href="<c:url value="/resources/css/showLoading.css" />" rel="stylesheet">
+
+ <!-- template css file -->
+ <link href="<c:url value="/resources/templates/bootstrap/css/theme.css" />" rel="stylesheet">
+
+ <script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-tooltip.js" />"></script>
+ <script src="<c:url value="/resources/templates/bootstrap/js/bootstrap-popover.js" />"></script>
+
+
+ <!-- mini shopping cart template -->
+ <script type="text/html" id="miniShoppingCartTemplate">
+ {{#shoppingCartItems}}
+ <tr id="{{productId}}" class="cart-product">
+ <td>
+ {{#image}}
+ <img width="40" src="{{contextPath}}{{image}}">
+ {{/image}}
+ {{^image}}
+  
+ {{/image}}
+ </td>
+ <td>{{quantity}}</td>
+ <td>{{name}}</td>
+ <td>{{price}}</td>
+ <td><button productid="{{productId}}" class="close removeProductIcon" onclick="removeItemFromMinicart('{{id}}')">x</button></td>
+ </tr>
+ {{/shoppingCartItems}}
+ </script>
+
+ <c:if test="${requestScope.CONFIGS['google_analytics_url'] != null}">
+ <script type="text/javascript">
+ //<![CDATA[
+ <!-- google analytics -->
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', '<c:out value="${requestScope.CONFIGS['google_analytics_url']}"/>']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+ //]]>
+ </script>
+ </c:if>
+
+
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/css/bootstrap/css/datepicker.css b/sm-shop/src/main/webapp/resources/css/bootstrap/css/datepicker.css
new file mode 100644
index 0000000..2f44634
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/bootstrap/css/datepicker.css
@@ -0,0 +1,130 @@
+.datepicker {
+ background-color: #ffffff;
+ border-color: #999;
+ border-color: rgba(0, 0, 0, 0.2);
+ border-style: solid;
+ border-width: 1px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding-box;
+ background-clip: padding-box;
+ display: none;
+ position: absolute;
+ z-index: 900;
+ margin-left: 0;
+ margin-right: 0;
+ margin-bottom: 18px;
+ padding-bottom: 4px;
+ width: 218px;
+}
+.datepicker .nav {
+ font-weight: bold;
+ width: 100%;
+ padding: 4px 0;
+ background-color: #f5f5f5;
+ color: #808080;
+ border-bottom: 1px solid #ddd;
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
+ box-shadow: inset 0 1px 0 #ffffff;
+ zoom: 1;
+}
+.datepicker .nav:before, .datepicker .nav:after {
+ display: table;
+ content: "";
+ zoom: 1;
+ *display: inline;
+}
+.datepicker .nav:after {
+ clear: both;
+}
+.datepicker .nav span {
+ display: block;
+ float: left;
+ text-align: center;
+ height: 28px;
+ line-height: 28px;
+ position: relative;
+}
+.datepicker .nav .bg {
+ width: 100%;
+ background-color: #fdf5d9;
+ height: 28px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.datepicker .nav .fg {
+ width: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+.datepicker .button {
+ cursor: pointer;
+ padding: 0 4px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.datepicker .button:hover {
+ background-color: #808080;
+ color: #ffffff;
+}
+.datepicker .months {
+ float: left;
+ margin-left: 4px;
+}
+.datepicker .months .name {
+ width: 72px;
+ padding: 0;
+}
+.datepicker .years {
+ float: right;
+ margin-right: 4px;
+}
+.datepicker .years .name {
+ width: 36px;
+ padding: 0;
+}
+.datepicker .dow, .datepicker .days div {
+ float: left;
+ width: 30px;
+ line-height: 25px;
+ text-align: center;
+}
+.datepicker .dow {
+ font-weight: bold;
+ color: #808080;
+}
+.datepicker .calendar {
+ padding: 4px;
+}
+.datepicker .days div {
+ cursor: pointer;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.datepicker .days div:hover {
+ background-color: #0064cd;
+ color: #ffffff;
+}
+.datepicker .overlap {
+ color: #bfbfbf;
+}
+.datepicker .today {
+ background-color: #fee9cc;
+}
+.datepicker .selected {
+ background-color: #bfbfbf;
+ color: #ffffff;
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/css/bootstrap/css/sm-bootstrap.css b/sm-shop/src/main/webapp/resources/css/bootstrap/css/sm-bootstrap.css
new file mode 100755
index 0000000..c6e9ebc
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/bootstrap/css/sm-bootstrap.css
@@ -0,0 +1,4163 @@
+.sm article,
+.sm aside,
+.sm details,
+.sm figcaption,
+.sm figure,
+.sm footer,
+.sm header,
+.sm hgroup,
+.sm nav,
+.sm section {
+ display: block;
+}
+.sm audio,
+.sm canvas,
+.sm video {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+.sm audio:not([controls]) {
+ display: none;
+}
+.sm html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+.sm a:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.sm a:hover,
+.sm a:active {
+ outline: 0;
+}
+.sm sub,
+.sm sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+.sm sup {
+ top: -0.5em;
+}
+.sm sub {
+ bottom: -0.25em;
+}
+.sm img {
+ max-width: 100%;
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic;
+}
+.sm button,
+.sm input,
+.sm select,
+.sm textarea {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
+}
+.sm button,
+.sm input {
+ *overflow: visible;
+ line-height: normal;
+}
+.sm button::-moz-focus-inner,
+.sm input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+.sm button,
+.sm input[type="button"],
+.sm input[type="reset"],
+.sm input[type="submit"] {
+ cursor: pointer;
+ -webkit-appearance: button;
+}
+.sm input[type="search"] {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
+}
+.sm input[type="search"]::-webkit-search-decoration,
+.sm input[type="search"]::-webkit-search-cancel-button {
+ -webkit-appearance: none;
+}
+.sm textarea {
+ overflow: auto;
+ vertical-align: top;
+}
+.sm .clearfix {
+ *zoom: 1;
+}
+.sm .clearfix:before,
+.sm .clearfix:after {
+ display: table;
+ content: "";
+}
+.sm .clearfix:after {
+ clear: both;
+}
+.sm .hide-text {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+.sm .input-block-level {
+ display: block;
+ width: 100%;
+ min-height: 28px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.sm body {
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ line-height: 18px;
+ color: #333333;
+ background-color: #ffffff;
+}
+.sm a {
+ color: #0088cc;
+ text-decoration: none;
+}
+.sm a:hover {
+ color: #005580;
+ text-decoration: underline;
+}
+.sm .row {
+ margin-left: -20px;
+ *zoom: 1;
+}
+.sm .row:before,
+.sm .row:after {
+ display: table;
+ content: "";
+}
+.sm .row:after {
+ clear: both;
+}
+.sm [class*="span"] {
+ float: left;
+ margin-left: 20px;
+}
+.sm .container,
+.sm .navbar-fixed-top .container,
+.sm .navbar-fixed-bottom .container {
+ width: 940px;
+}
+.sm .span12 {
+ width: 940px;
+}
+.sm .span11 {
+ width: 860px;
+}
+.sm .span10 {
+ width: 780px;
+}
+.sm .span9 {
+ width: 700px;
+}
+.sm .span8 {
+ width: 620px;
+}
+.sm .span7 {
+ width: 540px;
+}
+.sm .span6 {
+ width: 460px;
+}
+.sm .span5 {
+ width: 380px;
+}
+.sm .span4 {
+ width: 300px;
+}
+.sm .span3 {
+ width: 220px;
+}
+.sm .span2 {
+ width: 140px;
+}
+.sm .span1 {
+ width: 60px;
+}
+.sm .offset12 {
+ margin-left: 980px;
+}
+.sm .offset11 {
+ margin-left: 900px;
+}
+.sm .offset10 {
+ margin-left: 820px;
+}
+.sm .offset9 {
+ margin-left: 740px;
+}
+.sm .offset8 {
+ margin-left: 660px;
+}
+.sm .offset7 {
+ margin-left: 580px;
+}
+.sm .offset6 {
+ margin-left: 500px;
+}
+.sm .offset5 {
+ margin-left: 420px;
+}
+.sm .offset4 {
+ margin-left: 340px;
+}
+.sm .offset3 {
+ margin-left: 260px;
+}
+.sm .offset2 {
+ margin-left: 180px;
+}
+.sm .offset1 {
+ margin-left: 100px;
+}
+.sm .row-fluid {
+ width: 100%;
+ *zoom: 1;
+}
+.sm .row-fluid:before,
+.sm .row-fluid:after {
+ display: table;
+ content: "";
+}
+.sm .row-fluid:after {
+ clear: both;
+}
+.sm .row-fluid [class*="span"] {
+ display: block;
+ float: left;
+ width: 100%;
+ min-height: 28px;
+ margin-left: 2.127659574%;
+ *margin-left: 2.0744680846382977%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.sm .row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+}
+.sm .row-fluid .span12 {
+ width: 99.99999998999999%;
+ *width: 99.94680850063828%;
+}
+.sm .row-fluid .span11 {
+ width: 91.489361693%;
+ *width: 91.4361702036383%;
+}
+.sm .row-fluid .span10 {
+ width: 82.97872339599999%;
+ *width: 82.92553190663828%;
+}
+.sm .row-fluid .span9 {
+ width: 74.468085099%;
+ *width: 74.4148936096383%;
+}
+.sm .row-fluid .span8 {
+ width: 65.95744680199999%;
+ *width: 65.90425531263828%;
+}
+.sm .row-fluid .span7 {
+ width: 57.446808505%;
+ *width: 57.3936170156383%;
+}
+.sm .row-fluid .span6 {
+ width: 48.93617020799999%;
+ *width: 48.88297871863829%;
+}
+.sm .row-fluid .span5 {
+ width: 40.425531911%;
+ *width: 40.3723404216383%;
+}
+.sm .row-fluid .span4 {
+ width: 31.914893614%;
+ *width: 31.8617021246383%;
+}
+.sm .row-fluid .span3 {
+ width: 23.404255317%;
+ *width: 23.3510638276383%;
+}
+.sm .row-fluid .span2 {
+ width: 14.89361702%;
+ *width: 14.8404255306383%;
+}
+.sm .row-fluid .span1 {
+ width: 6.382978723%;
+ *width: 6.329787233638298%;
+}
+.sm .container {
+ margin-right: auto;
+ margin-left: auto;
+ *zoom: 1;
+}
+.sm .container:before,
+.sm .container:after {
+ display: table;
+ content: "";
+}
+.sm .container:after {
+ clear: both;
+}
+.sm .container-fluid {
+ padding-right: 20px;
+ padding-left: 20px;
+ *zoom: 1;
+}
+.sm .container-fluid:before,
+.sm .container-fluid:after {
+ display: table;
+ content: "";
+}
+.sm .container-fluid:after {
+ clear: both;
+}
+.sm p {
+ margin: 0 0 9px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ line-height: 18px;
+}
+.sm p small {
+ font-size: 11px;
+ color: #999999;
+}
+.sm .lead {
+ margin-bottom: 18px;
+ font-size: 20px;
+ font-weight: 200;
+ line-height: 27px;
+}
+.sm h1,
+.sm h2,
+.sm h3,
+.sm h4,
+.sm h5,
+.sm h6 {
+ margin: 0;
+ font-family: inherit;
+ font-weight: bold;
+ color: inherit;
+ text-rendering: optimizelegibility;
+}
+.sm h1 small,
+.sm h2 small,
+.sm h3 small,
+.sm h4 small,
+.sm h5 small,
+.sm h6 small {
+ font-weight: normal;
+ color: #999999;
+}
+.sm h1 {
+ font-size: 30px;
+ line-height: 36px;
+}
+.sm h1 small {
+ font-size: 18px;
+}
+.sm h2 {
+ font-size: 24px;
+ line-height: 36px;
+}
+.sm h2 small {
+ font-size: 18px;
+}
+.sm h3 {
+ font-size: 18px;
+ line-height: 27px;
+}
+.sm h3 small {
+ font-size: 14px;
+}
+.sm h4,
+.sm h5,
+.sm h6 {
+ line-height: 18px;
+}
+.sm h4 {
+ font-size: 14px;
+}
+.sm h4 small {
+ font-size: 12px;
+}
+.sm h5 {
+ font-size: 12px;
+}
+.sm h6 {
+ font-size: 11px;
+ color: #999999;
+ text-transform: uppercase;
+}
+.sm .page-header {
+ padding-bottom: 17px;
+ margin: 18px 0;
+ border-bottom: 1px solid #eeeeee;
+}
+.sm .page-header h1 {
+ line-height: 1;
+}
+.sm ul,
+.sm ol {
+ padding: 0;
+ margin: 0 0 9px 25px;
+}
+.sm ul ul,
+.sm ul ol,
+.sm ol ol,
+.sm ol ul {
+ margin-bottom: 0;
+}
+.sm ul {
+ list-style: disc;
+}
+.sm ol {
+ list-style: decimal;
+}
+.sm li {
+ line-height: 18px;
+}
+.sm ul.unstyled,
+.sm ol.unstyled {
+ margin-left: 0;
+ list-style: none;
+}
+.sm dl {
+ margin-bottom: 18px;
+}
+.sm dt,
+.sm dd {
+ line-height: 18px;
+}
+.sm dt {
+ font-weight: bold;
+ line-height: 17px;
+}
+.sm dd {
+ margin-left: 9px;
+}
+.sm .dl-horizontal dt {
+ float: left;
+ width: 120px;
+ overflow: hidden;
+ clear: left;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.sm .dl-horizontal dd {
+ margin-left: 130px;
+}
+.sm hr {
+ margin: 18px 0;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #ffffff;
+}
+.sm strong {
+ font-weight: bold;
+}
+.sm em {
+ font-style: italic;
+}
+.sm .muted {
+ color: #999999;
+}
+.sm abbr[title] {
+ cursor: help;
+ border-bottom: 1px dotted #ddd;
+}
+.sm abbr.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+.sm blockquote {
+ padding: 0 0 0 15px;
+ margin: 0 0 18px;
+ border-left: 5px solid #eeeeee;
+}
+.sm blockquote p {
+ margin-bottom: 0;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 22.5px;
+}
+.sm blockquote small {
+ display: block;
+ line-height: 18px;
+ color: #999999;
+}
+.sm blockquote small:before {
+ content: '\2014 \00A0';
+}
+.sm blockquote.pull-right {
+ float: right;
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+}
+.sm blockquote.pull-right p,
+.sm blockquote.pull-right small {
+ text-align: right;
+}
+.sm q:before,
+.sm q:after,
+.sm blockquote:before,
+.sm blockquote:after {
+ content: "";
+}
+.sm address {
+ display: block;
+ margin-bottom: 18px;
+ font-style: normal;
+ line-height: 18px;
+}
+.sm small {
+ font-size: 100%;
+}
+.sm cite {
+ font-style: normal;
+}
+.sm code,
+.sm pre {
+ padding: 0 3px 2px;
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+ font-size: 12px;
+ color: #333333;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.sm code {
+ padding: 2px 4px;
+ color: #d14;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
+}
+.sm pre {
+ display: block;
+ padding: 8.5px;
+ margin: 0 0 9px;
+ font-size: 12.025px;
+ line-height: 18px;
+ word-break: break-all;
+ word-wrap: break-word;
+ white-space: pre;
+ white-space: pre-wrap;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.sm pre.prettyprint {
+ margin-bottom: 18px;
+}
+.sm pre code {
+ padding: 0;
+ color: inherit;
+ background-color: transparent;
+ border: 0;
+}
+.sm .pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.sm form {
+ margin: 0 0 18px;
+}
+.sm fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+.sm legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 27px;
+ font-size: 19.5px;
+ line-height: 36px;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #eee;
+}
+.sm legend small {
+ font-size: 13.5px;
+ color: #999999;
+}
+.sm label,
+.sm input,
+.sm button,
+.sm select,
+.sm textarea {
+ font-size: 13px;
+ font-weight: normal;
+ line-height: 18px;
+}
+.sm input,
+.sm button,
+.sm select,
+.sm textarea {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+.sm label {
+ display: block;
+ margin-bottom: 5px;
+ color: #333333;
+}
+.sm input,
+.sm textarea,
+.sm select,
+.sm .uneditable-input {
+ display: inline-block;
+ width: 210px;
+ height: 18px;
+ padding: 4px;
+ margin-bottom: 9px;
+ font-size: 13px;
+ line-height: 18px;
+ color: #555555;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.sm .uneditable-textarea {
+ width: auto;
+ height: auto;
+}
+.sm label input,
+.sm label textarea,
+.sm label select {
+ display: block;
+}
+.sm input[type="image"],
+.sm input[type="checkbox"],
+.sm input[type="radio"] {
+ width: auto;
+ height: auto;
+ padding: 0;
+ margin: 3px 0;
+ *margin-top: 0;
+ /* IE7 */
+
+ line-height: normal;
+ cursor: pointer;
+ background-color: transparent;
+ border: 0 \9;
+ /* IE9 and down */
+
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.sm input[type="image"] {
+ border: 0;
+}
+.sm input[type="file"] {
+ width: auto;
+ padding: initial;
+ line-height: initial;
+ background-color: #ffffff;
+ background-color: initial;
+ border: initial;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+.sm input[type="button"],
+.sm input[type="reset"],
+.sm input[type="submit"] {
+ width: auto;
+ height: auto;
+}
+.sm select,
+.sm input[type="file"] {
+ height: 28px;
+ /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+ *margin-top: 4px;
+ /* For IE7, add top margin to align select with labels */
+
+ line-height: 28px;
+}
+.sm input[type="file"] {
+ line-height: 18px \9;
+}
+.sm select {
+ width: 220px;
+ background-color: #ffffff;
+}
+.sm select[multiple],
+.sm select[size] {
+ height: auto;
+}
+.sm input[type="image"] {
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+.sm textarea {
+ height: auto;
+}
+.sm input[type="hidden"] {
+ display: none;
+}
+.sm .radio,
+.sm .checkbox {
+ min-height: 18px;
+ padding-left: 18px;
+}
+.sm .radio input[type="radio"],
+.sm .checkbox input[type="checkbox"] {
+ float: left;
+ margin-left: -18px;
+}
+.sm .controls > .radio:first-child,
+.sm .controls > .checkbox:first-child {
+ padding-top: 5px;
+}
+.sm .radio.inline,
+.sm .checkbox.inline {
+ display: inline-block;
+ padding-top: 5px;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.sm .radio.inline + .radio.inline,
+.sm .checkbox.inline + .checkbox.inline {
+ margin-left: 10px;
+}
+.sm input,
+.sm textarea {
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -o-transition: border linear 0.2s, box-shadow linear 0.2s;
+ transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+.sm input:focus,
+.sm textarea:focus {
+ border-color: rgba(82, 168, 236, 0.8);
+ outline: 0;
+ outline: thin dotted \9;
+ /* IE6-9 */
+
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+}
+.sm input[type="file"]:focus,
+.sm input[type="radio"]:focus,
+.sm input[type="checkbox"]:focus,
+.sm select:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+.sm .input-mini {
+ width: 60px;
+}
+.sm .input-small {
+ width: 90px;
+}
+.sm .input-medium {
+ width: 150px;
+}
+.sm .input-large {
+ width: 210px;
+}
+.sm .input-xlarge {
+ width: 270px;
+}
+.sm .input-xxlarge {
+ width: 530px;
+}
+.sm input[class*="span"],
+.sm select[class*="span"],
+.sm textarea[class*="span"],
+.sm .uneditable-input[class*="span"],
+.sm .row-fluid input[class*="span"],
+.sm .row-fluid select[class*="span"],
+.sm .row-fluid textarea[class*="span"],
+.sm .row-fluid .uneditable-input[class*="span"] {
+ float: none;
+ margin-left: 0;
+}
+.sm input,
+.sm textarea,
+.sm .uneditable-input {
+ margin-left: 0;
+}
+.sm input.span12,
+.sm textarea.span12,
+.sm .uneditable-input.span12 {
+ width: 930px;
+}
+.sm input.span11,
+.sm textarea.span11,
+.sm .uneditable-input.span11 {
+ width: 850px;
+}
+.sm input.span10,
+.sm textarea.span10,
+.sm .uneditable-input.span10 {
+ width: 770px;
+}
+.sm input.span9,
+.sm textarea.span9,
+.sm .uneditable-input.span9 {
+ width: 690px;
+}
+.sm input.span8,
+.sm textarea.span8,
+.sm .uneditable-input.span8 {
+ width: 610px;
+}
+.sm input.span7,
+.sm textarea.span7,
+.sm .uneditable-input.span7 {
+ width: 530px;
+}
+.sm input.span6,
+.sm textarea.span6,
+.sm .uneditable-input.span6 {
+ width: 450px;
+}
+.sm input.span5,
+.sm textarea.span5,
+.sm .uneditable-input.span5 {
+ width: 370px;
+}
+.sm input.span4,
+.sm textarea.span4,
+.sm .uneditable-input.span4 {
+ width: 290px;
+}
+.sm input.span3,
+.sm textarea.span3,
+.sm .uneditable-input.span3 {
+ width: 210px;
+}
+.sm input.span2,
+.sm textarea.span2,
+.sm .uneditable-input.span2 {
+ width: 130px;
+}
+.sm input.span1,
+.sm textarea.span1,
+.sm .uneditable-input.span1 {
+ width: 50px;
+}
+.sm input[disabled],
+.sm select[disabled],
+.sm textarea[disabled],
+.sm input[readonly],
+.sm select[readonly],
+.sm textarea[readonly] {
+ cursor: not-allowed;
+ background-color: #eeeeee;
+ border-color: #ddd;
+}
+.sm input[type="radio"][disabled],
+.sm input[type="checkbox"][disabled],
+.sm input[type="radio"][readonly],
+.sm input[type="checkbox"][readonly] {
+ background-color: transparent;
+}
+.sm .control-group.warning > label,
+.sm .control-group.warning .help-block,
+.sm .control-group.warning .help-inline {
+ color: #c09853;
+}
+.sm .control-group.warning input,
+.sm .control-group.warning select,
+.sm .control-group.warning textarea {
+ color: #c09853;
+ border-color: #c09853;
+}
+.sm .control-group.warning input:focus,
+.sm .control-group.warning select:focus,
+.sm .control-group.warning textarea:focus {
+ border-color: #a47e3c;
+ -webkit-box-shadow: 0 0 6px #dbc59e;
+ -moz-box-shadow: 0 0 6px #dbc59e;
+ box-shadow: 0 0 6px #dbc59e;
+}
+.sm .control-group.warning .input-prepend .add-on,
+.sm .control-group.warning .input-append .add-on {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #c09853;
+}
+.sm .control-group.error > label,
+.sm .control-group.error .help-block,
+.sm .control-group.error .help-inline {
+ color: #b94a48;
+}
+.sm .control-group.error input,
+.sm .control-group.error select,
+.sm .control-group.error textarea {
+ color: #b94a48;
+ border-color: #b94a48;
+}
+.sm .control-group.error input:focus,
+.sm .control-group.error select:focus,
+.sm .control-group.error textarea:focus {
+ border-color: #953b39;
+ -webkit-box-shadow: 0 0 6px #d59392;
+ -moz-box-shadow: 0 0 6px #d59392;
+ box-shadow: 0 0 6px #d59392;
+}
+.sm .control-group.error .input-prepend .add-on,
+.sm .control-group.error .input-append .add-on {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #b94a48;
+}
+.sm .control-group.success > label,
+.sm .control-group.success .help-block,
+.sm .control-group.success .help-inline {
+ color: #468847;
+}
+.sm .control-group.success input,
+.sm .control-group.success select,
+.sm .control-group.success textarea {
+ color: #468847;
+ border-color: #468847;
+}
+.sm .control-group.success input:focus,
+.sm .control-group.success select:focus,
+.sm .control-group.success textarea:focus {
+ border-color: #356635;
+ -webkit-box-shadow: 0 0 6px #7aba7b;
+ -moz-box-shadow: 0 0 6px #7aba7b;
+ box-shadow: 0 0 6px #7aba7b;
+}
+.sm .control-group.success .input-prepend .add-on,
+.sm .control-group.success .input-append .add-on {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #468847;
+}
+.sm input:focus:required:invalid,
+.sm textarea:focus:required:invalid,
+.sm select:focus:required:invalid {
+ color: #b94a48;
+ border-color: #ee5f5b;
+}
+.sm input:focus:required:invalid:focus,
+.sm textarea:focus:required:invalid:focus,
+.sm select:focus:required:invalid:focus {
+ border-color: #e9322d;
+ -webkit-box-shadow: 0 0 6px #f8b9b7;
+ -moz-box-shadow: 0 0 6px #f8b9b7;
+ box-shadow: 0 0 6px #f8b9b7;
+}
+.sm .form-actions {
+ padding: 17px 20px 18px;
+ margin-top: 18px;
+ margin-bottom: 18px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #ddd;
+ *zoom: 1;
+}
+.sm .form-actions:before,
+.sm .form-actions:after {
+ display: table;
+ content: "";
+}
+.sm .form-actions:after {
+ clear: both;
+}
+.sm .uneditable-input {
+ overflow: hidden;
+ white-space: nowrap;
+ cursor: not-allowed;
+ background-color: #ffffff;
+ border-color: #eee;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+}
+.sm :-moz-placeholder {
+ color: #999999;
+}
+.sm ::-webkit-input-placeholder {
+ color: #999999;
+}
+.sm .help-block,
+.sm .help-inline {
+ color: #555555;
+}
+.sm .help-block {
+ display: block;
+ margin-bottom: 9px;
+}
+.sm .help-inline {
+ display: inline-block;
+ *display: inline;
+ padding-left: 5px;
+ vertical-align: middle;
+ *zoom: 1;
+}
+.sm .input-prepend,
+.sm .input-append {
+ margin-bottom: 5px;
+}
+.sm .input-prepend input,
+.sm .input-append input,
+.sm .input-prepend select,
+.sm .input-append select,
+.sm .input-prepend .uneditable-input,
+.sm .input-append .uneditable-input {
+ position: relative;
+ margin-bottom: 0;
+ *margin-left: 0;
+ vertical-align: middle;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.sm .input-prepend input:focus,
+.sm .input-append input:focus,
+.sm .input-prepend select:focus,
+.sm .input-append select:focus,
+.sm .input-prepend .uneditable-input:focus,
+.sm .input-append .uneditable-input:focus {
+ z-index: 2;
+}
+.sm .input-prepend .uneditable-input,
+.sm .input-append .uneditable-input {
+ border-left-color: #ccc;
+}
+.sm .input-prepend .add-on,
+.sm .input-append .add-on {
+ display: inline-block;
+ width: auto;
+ height: 18px;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: 18px;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ vertical-align: middle;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
+}
+.sm .input-prepend .add-on,
+.sm .input-append .add-on,
+.sm .input-prepend .btn,
+.sm .input-append .btn {
+ margin-left: -1px;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.sm .input-prepend .active,
+.sm .input-append .active {
+ background-color: #a9dba9;
+ border-color: #46a546;
+}
+.sm .input-prepend .add-on,
+.sm .input-prepend .btn {
+ margin-right: -1px;
+}
+.sm .input-prepend .add-on:first-child,
+.sm .input-prepend .btn:first-child {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.sm .input-append input,
+.sm .input-append select,
+.sm .input-append .uneditable-input {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.sm .input-append .uneditable-input {
+ border-right-color: #ccc;
+ border-left-color: #eee;
+}
+.sm .input-append .add-on:last-child,
+.sm .input-append .btn:last-child {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.sm .input-prepend.input-append input,
+.sm .input-prepend.input-append select,
+.sm .input-prepend.input-append .uneditable-input {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.sm .input-prepend.input-append .add-on:first-child,
+.sm .input-prepend.input-append .btn:first-child {
+ margin-right: -1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.sm .input-prepend.input-append .add-on:last-child,
+.sm .input-prepend.input-append .btn:last-child {
+ margin-left: -1px;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.sm .search-query {
+ padding-right: 14px;
+ padding-right: 4px \9;
+ padding-left: 14px;
+ padding-left: 4px \9;
+ /* IE7-8 doesn't have border-radius, so don't indent the padding */
+
+ margin-bottom: 0;
+ -webkit-border-radius: 14px;
+ -moz-border-radius: 14px;
+ border-radius: 14px;
+}
+.sm .form-search input,
+.sm .form-inline input,
+.sm .form-horizontal input,
+.sm .form-search textarea,
+.sm .form-inline textarea,
+.sm .form-horizontal textarea,
+.sm .form-search select,
+.sm .form-inline select,
+.sm .form-horizontal select,
+.sm .form-search .help-inline,
+.sm .form-inline .help-inline,
+.sm .form-horizontal .help-inline,
+.sm .form-search .uneditable-input,
+.sm .form-inline .uneditable-input,
+.sm .form-horizontal .uneditable-input,
+.sm .form-search .input-prepend,
+.sm .form-inline .input-prepend,
+.sm .form-horizontal .input-prepend,
+.sm .form-search .input-append,
+.sm .form-inline .input-append,
+.sm .form-horizontal .input-append {
+ display: inline-block;
+ *display: inline;
+ margin-bottom: 0;
+ *zoom: 1;
+}
+.sm .form-search .hide,
+.sm .form-inline .hide,
+.sm .form-horizontal .hide {
+ display: none;
+}
+.sm .form-search label,
+.sm .form-inline label {
+ display: inline-block;
+}
+.sm .form-search .input-append,
+.sm .form-inline .input-append,
+.sm .form-search .input-prepend,
+.sm .form-inline .input-prepend {
+ margin-bottom: 0;
+}
+.sm .form-search .radio,
+.sm .form-search .checkbox,
+.sm .form-inline .radio,
+.sm .form-inline .checkbox {
+ padding-left: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.sm .form-search .radio input[type="radio"],
+.sm .form-search .checkbox input[type="checkbox"],
+.sm .form-inline .radio input[type="radio"],
+.sm .form-inline .checkbox input[type="checkbox"] {
+ float: left;
+ margin-right: 3px;
+ margin-left: 0;
+}
+.sm .control-group {
+ margin-bottom: 9px;
+}
+.sm legend + .control-group {
+ margin-top: 18px;
+ -webkit-margin-top-collapse: separate;
+}
+.sm .form-horizontal .control-group {
+ margin-bottom: 18px;
+ *zoom: 1;
+}
+.sm .form-horizontal .control-group:before,
+.sm .form-horizontal .control-group:after {
+ display: table;
+ content: "";
+}
+.sm .form-horizontal .control-group:after {
+ clear: both;
+}
+.sm .form-horizontal .control-label {
+ float: left;
+ width: 140px;
+ padding-top: 5px;
+ text-align: right;
+}
+.sm .form-horizontal .controls {
+ *display: inline-block;
+ *padding-left: 20px;
+ margin-left: 160px;
+ *margin-left: 0;
+}
+.sm .form-horizontal .controls:first-child {
+ *padding-left: 160px;
+}
+.sm .form-horizontal .help-block {
+ margin-top: 9px;
+ margin-bottom: 0;
+}
+.sm .form-horizontal .form-actions {
+ padding-left: 160px;
+}
+.sm table {
+ max-width: 100%;
+ background-color: transparent;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+.sm .table {
+ width: 100%;
+ margin-bottom: 18px;
+}
+.sm .table th,
+.sm .table td {
+ padding: 8px;
+ line-height: 18px;
+ text-align: left;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
+}
+.sm .table th {
+ font-weight: bold;
+}
+.sm .table thead th {
+ vertical-align: bottom;
+}
+.sm .table caption + thead tr:first-child th,
+.sm .table caption + thead tr:first-child td,
+.sm .table colgroup + thead tr:first-child th,
+.sm .table colgroup + thead tr:first-child td,
+.sm .table thead:first-child tr:first-child th,
+.sm .table thead:first-child tr:first-child td {
+ border-top: 0;
+}
+.sm .table tbody + tbody {
+ border-top: 2px solid #dddddd;
+}
+.sm .table-condensed th,
+.sm .table-condensed td {
+ padding: 4px 5px;
+}
+.sm .table-bordered {
+ border: 1px solid #dddddd;
+ border-collapse: separate;
+ *border-collapse: collapsed;
+ border-left: 0;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.sm .table-bordered th,
+.sm .table-bordered td {
+ border-left: 1px solid #dddddd;
+}
+.sm .table-bordered caption + thead tr:first-child th,
+.sm .table-bordered caption + tbody tr:first-child th,
+.sm .table-bordered caption + tbody tr:first-child td,
+.sm .table-bordered colgroup + thead tr:first-child th,
+.sm .table-bordered colgroup + tbody tr:first-child th,
+.sm .table-bordered colgroup + tbody tr:first-child td,
+.sm .table-bordered thead:first-child tr:first-child th,
+.sm .table-bordered tbody:first-child tr:first-child th,
+.sm .table-bordered tbody:first-child tr:first-child td {
+ border-top: 0;
+}
+.sm .table-bordered thead:first-child tr:first-child th:first-child,
+.sm .table-bordered tbody:first-child tr:first-child td:first-child {
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+.sm .table-bordered thead:first-child tr:first-child th:last-child,
+.sm .table-bordered tbody:first-child tr:first-child td:last-child {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+}
+.sm .table-bordered thead:last-child tr:last-child th:first-child,
+.sm .table-bordered tbody:last-child tr:last-child td:first-child {
+ -webkit-border-radius: 0 0 0 4px;
+ -moz-border-radius: 0 0 0 4px;
+ border-radius: 0 0 0 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+}
+.sm .table-bordered thead:last-child tr:last-child th:last-child,
+.sm .table-bordered tbody:last-child tr:last-child td:last-child {
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+}
+.sm .table-striped tbody tr:nth-child(odd) td,
+.sm .table-striped tbody tr:nth-child(odd) th {
+ background-color: #f9f9f9;
+}
+.sm .table tbody tr:hover td,
+.sm .table tbody tr:hover th {
+ background-color: #f5f5f5;
+}
+.sm table .span1 {
+ float: none;
+ width: 44px;
+ margin-left: 0;
+}
+.sm table .span2 {
+ float: none;
+ width: 124px;
+ margin-left: 0;
+}
+.sm table .span3 {
+ float: none;
+ width: 204px;
+ margin-left: 0;
+}
+.sm table .span4 {
+ float: none;
+ width: 284px;
+ margin-left: 0;
+}
+.sm table .span5 {
+ float: none;
+ width: 364px;
+ margin-left: 0;
+}
+.sm table .span6 {
+ float: none;
+ width: 444px;
+ margin-left: 0;
+}
+.sm table .span7 {
+ float: none;
+ width: 524px;
+ margin-left: 0;
+}
+.sm table .span8 {
+ float: none;
+ width: 604px;
+ margin-left: 0;
+}
+.sm table .span9 {
+ float: none;
+ width: 684px;
+ margin-left: 0;
+}
+.sm table .span10 {
+ float: none;
+ width: 764px;
+ margin-left: 0;
+}
+.sm table .span11 {
+ float: none;
+ width: 844px;
+ margin-left: 0;
+}
+.sm table .span12 {
+ float: none;
+ width: 924px;
+ margin-left: 0;
+}
+.sm table .span13 {
+ float: none;
+ width: 1004px;
+ margin-left: 0;
+}
+.sm table .span14 {
+ float: none;
+ width: 1084px;
+ margin-left: 0;
+}
+.sm table .span15 {
+ float: none;
+ width: 1164px;
+ margin-left: 0;
+}
+.sm table .span16 {
+ float: none;
+ width: 1244px;
+ margin-left: 0;
+}
+.sm table .span17 {
+ float: none;
+ width: 1324px;
+ margin-left: 0;
+}
+.sm table .span18 {
+ float: none;
+ width: 1404px;
+ margin-left: 0;
+}
+.sm table .span19 {
+ float: none;
+ width: 1484px;
+ margin-left: 0;
+}
+.sm table .span20 {
+ float: none;
+ width: 1564px;
+ margin-left: 0;
+}
+.sm table .span21 {
+ float: none;
+ width: 1644px;
+ margin-left: 0;
+}
+.sm table .span22 {
+ float: none;
+ width: 1724px;
+ margin-left: 0;
+}
+.sm table .span23 {
+ float: none;
+ width: 1804px;
+ margin-left: 0;
+}
+.sm table .span24 {
+ float: none;
+ width: 1884px;
+ margin-left: 0;
+}
+.sm [class^="icon-"],
+.sm [class*=" icon-"] {
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ *margin-right: .3em;
+ line-height: 14px;
+ vertical-align: text-top;
+ background-image: url("../img/glyphicons-halflings.png");
+ background-position: 14px 14px;
+ background-repeat: no-repeat;
+}
+.sm [class^="icon-"]:last-child,
+.sm [class*=" icon-"]:last-child {
+ *margin-left: 0;
+}
+.sm .icon-white {
+ background-image: url("../img/glyphicons-halflings-white.png");
+}
+.sm .icon-glass {
+ background-position: 0 0;
+}
+.sm .icon-music {
+ background-position: -24px 0;
+}
+.sm .icon-search {
+ background-position: -48px 0;
+}
+.sm .icon-envelope {
+ background-position: -72px 0;
+}
+.sm .icon-heart {
+ background-position: -96px 0;
+}
+.sm .icon-star {
+ background-position: -120px 0;
+}
+.sm .icon-star-empty {
+ background-position: -144px 0;
+}
+.sm .icon-user {
+ background-position: -168px 0;
+}
+.sm .icon-film {
+ background-position: -192px 0;
+}
+.sm .icon-th-large {
+ background-position: -216px 0;
+}
+.sm .icon-th {
+ background-position: -240px 0;
+}
+.sm .icon-th-list {
+ background-position: -264px 0;
+}
+.sm .icon-ok {
+ background-position: -288px 0;
+}
+.sm .icon-remove {
+ background-position: -312px 0;
+}
+.sm .icon-zoom-in {
+ background-position: -336px 0;
+}
+.sm .icon-zoom-out {
+ background-position: -360px 0;
+}
+.sm .icon-off {
+ background-position: -384px 0;
+}
+.sm .icon-signal {
+ background-position: -408px 0;
+}
+.sm .icon-cog {
+ background-position: -432px 0;
+}
+.sm .icon-trash {
+ background-position: -456px 0;
+}
+.sm .icon-home {
+ background-position: 0 -24px;
+}
+.sm .icon-file {
+ background-position: -24px -24px;
+}
+.sm .icon-time {
+ background-position: -48px -24px;
+}
+.sm .icon-road {
+ background-position: -72px -24px;
+}
+.sm .icon-download-alt {
+ background-position: -96px -24px;
+}
+.sm .icon-download {
+ background-position: -120px -24px;
+}
+.sm .icon-upload {
+ background-position: -144px -24px;
+}
+.sm .icon-inbox {
+ background-position: -168px -24px;
+}
+.sm .icon-play-circle {
+ background-position: -192px -24px;
+}
+.sm .icon-repeat {
+ background-position: -216px -24px;
+}
+.sm .icon-refresh {
+ background-position: -240px -24px;
+}
+.sm .icon-list-alt {
+ background-position: -264px -24px;
+}
+.sm .icon-lock {
+ background-position: -287px -24px;
+}
+.sm .icon-flag {
+ background-position: -312px -24px;
+}
+.sm .icon-headphones {
+ background-position: -336px -24px;
+}
+.sm .icon-volume-off {
+ background-position: -360px -24px;
+}
+.sm .icon-volume-down {
+ background-position: -384px -24px;
+}
+.sm .icon-volume-up {
+ background-position: -408px -24px;
+}
+.sm .icon-qrcode {
+ background-position: -432px -24px;
+}
+.sm .icon-barcode {
+ background-position: -456px -24px;
+}
+.sm .icon-tag {
+ background-position: 0 -48px;
+}
+.sm .icon-tags {
+ background-position: -25px -48px;
+}
+.sm .icon-book {
+ background-position: -48px -48px;
+}
+.sm .icon-bookmark {
+ background-position: -72px -48px;
+}
+.sm .icon-print {
+ background-position: -96px -48px;
+}
+.sm .icon-camera {
+ background-position: -120px -48px;
+}
+.sm .icon-font {
+ background-position: -144px -48px;
+}
+.sm .icon-bold {
+ background-position: -167px -48px;
+}
+.sm .icon-italic {
+ background-position: -192px -48px;
+}
+.sm .icon-text-height {
+ background-position: -216px -48px;
+}
+.sm .icon-text-width {
+ background-position: -240px -48px;
+}
+.sm .icon-align-left {
+ background-position: -264px -48px;
+}
+.sm .icon-align-center {
+ background-position: -288px -48px;
+}
+.sm .icon-align-right {
+ background-position: -312px -48px;
+}
+.sm .icon-align-justify {
+ background-position: -336px -48px;
+}
+.sm .icon-list {
+ background-position: -360px -48px;
+}
+.sm .icon-indent-left {
+ background-position: -384px -48px;
+}
+.sm .icon-indent-right {
+ background-position: -408px -48px;
+}
+.sm .icon-facetime-video {
+ background-position: -432px -48px;
+}
+.sm .icon-picture {
+ background-position: -456px -48px;
+}
+.sm .icon-pencil {
+ background-position: 0 -72px;
+}
+.sm .icon-map-marker {
+ background-position: -24px -72px;
+}
+.sm .icon-adjust {
+ background-position: -48px -72px;
+}
+.sm .icon-tint {
+ background-position: -72px -72px;
+}
+.sm .icon-edit {
+ background-position: -96px -72px;
+}
+.sm .icon-share {
+ background-position: -120px -72px;
+}
+.sm .icon-check {
+ background-position: -144px -72px;
+}
+.sm .icon-move {
+ background-position: -168px -72px;
+}
+.sm .icon-step-backward {
+ background-position: -192px -72px;
+}
+.sm .icon-fast-backward {
+ background-position: -216px -72px;
+}
+.sm .icon-backward {
+ background-position: -240px -72px;
+}
+.sm .icon-play {
+ background-position: -264px -72px;
+}
+.sm .icon-pause {
+ background-position: -288px -72px;
+}
+.sm .icon-stop {
+ background-position: -312px -72px;
+}
+.sm .icon-forward {
+ background-position: -336px -72px;
+}
+.sm .icon-fast-forward {
+ background-position: -360px -72px;
+}
+.sm .icon-step-forward {
+ background-position: -384px -72px;
+}
+.sm .icon-eject {
+ background-position: -408px -72px;
+}
+.sm .icon-chevron-left {
+ background-position: -432px -72px;
+}
+.sm .icon-chevron-right {
+ background-position: -456px -72px;
+}
+.sm .icon-plus-sign {
+ background-position: 0 -96px;
+}
+.sm .icon-minus-sign {
+ background-position: -24px -96px;
+}
+.sm .icon-remove-sign {
+ background-position: -48px -96px;
+}
+.sm .icon-ok-sign {
+ background-position: -72px -96px;
+}
+.sm .icon-question-sign {
+ background-position: -96px -96px;
+}
+.sm .icon-info-sign {
+ background-position: -120px -96px;
+}
+.sm .icon-screenshot {
+ background-position: -144px -96px;
+}
+.sm .icon-remove-circle {
+ background-position: -168px -96px;
+}
+.sm .icon-ok-circle {
+ background-position: -192px -96px;
+}
+.sm .icon-ban-circle {
+ background-position: -216px -96px;
+}
+.sm .icon-arrow-left {
+ background-position: -240px -96px;
+}
+.sm .icon-arrow-right {
+ background-position: -264px -96px;
+}
+.sm .icon-arrow-up {
+ background-position: -289px -96px;
+}
+.sm .icon-arrow-down {
+ background-position: -312px -96px;
+}
+.sm .icon-share-alt {
+ background-position: -336px -96px;
+}
+.sm .icon-resize-full {
+ background-position: -360px -96px;
+}
+.sm .icon-resize-small {
+ background-position: -384px -96px;
+}
+.sm .icon-plus {
+ background-position: -408px -96px;
+}
+.sm .icon-minus {
+ background-position: -433px -96px;
+}
+.sm .icon-asterisk {
+ background-position: -456px -96px;
+}
+.sm .icon-exclamation-sign {
+ background-position: 0 -120px;
+}
+.sm .icon-gift {
+ background-position: -24px -120px;
+}
+.sm .icon-leaf {
+ background-position: -48px -120px;
+}
+.sm .icon-fire {
+ background-position: -72px -120px;
+}
+.sm .icon-eye-open {
+ background-position: -96px -120px;
+}
+.sm .icon-eye-close {
+ background-position: -120px -120px;
+}
+.sm .icon-warning-sign {
+ background-position: -144px -120px;
+}
+.sm .icon-plane {
+ background-position: -168px -120px;
+}
+.sm .icon-calendar {
+ background-position: -192px -120px;
+}
+.sm .icon-random {
+ background-position: -216px -120px;
+}
+.sm .icon-comment {
+ background-position: -240px -120px;
+}
+.sm .icon-magnet {
+ background-position: -264px -120px;
+}
+.sm .icon-chevron-up {
+ background-position: -288px -120px;
+}
+.sm .icon-chevron-down {
+ background-position: -313px -119px;
+}
+.sm .icon-retweet {
+ background-position: -336px -120px;
+}
+.sm .icon-shopping-cart {
+ background-position: -360px -120px;
+}
+.sm .icon-folder-close {
+ background-position: -384px -120px;
+}
+.sm .icon-folder-open {
+ background-position: -408px -120px;
+}
+.sm .icon-resize-vertical {
+ background-position: -432px -119px;
+}
+.sm .icon-resize-horizontal {
+ background-position: -456px -118px;
+}
+.sm .icon-hdd {
+ background-position: 0 -144px;
+}
+.sm .icon-bullhorn {
+ background-position: -24px -144px;
+}
+.sm .icon-bell {
+ background-position: -48px -144px;
+}
+.sm .icon-certificate {
+ background-position: -72px -144px;
+}
+.sm .icon-thumbs-up {
+ background-position: -96px -144px;
+}
+.sm .icon-thumbs-down {
+ background-position: -120px -144px;
+}
+.sm .icon-hand-right {
+ background-position: -144px -144px;
+}
+.sm .icon-hand-left {
+ background-position: -168px -144px;
+}
+.sm .icon-hand-up {
+ background-position: -192px -144px;
+}
+.sm .icon-hand-down {
+ background-position: -216px -144px;
+}
+.sm .icon-circle-arrow-right {
+ background-position: -240px -144px;
+}
+.sm .icon-circle-arrow-left {
+ background-position: -264px -144px;
+}
+.sm .icon-circle-arrow-up {
+ background-position: -288px -144px;
+}
+.sm .icon-circle-arrow-down {
+ background-position: -312px -144px;
+}
+.sm .icon-globe {
+ background-position: -336px -144px;
+}
+.sm .icon-wrench {
+ background-position: -360px -144px;
+}
+.sm .icon-tasks {
+ background-position: -384px -144px;
+}
+.sm .icon-filter {
+ background-position: -408px -144px;
+}
+.sm .icon-briefcase {
+ background-position: -432px -144px;
+}
+.sm .icon-fullscreen {
+ background-position: -456px -144px;
+}
+.sm .dropup,
+.sm .dropdown {
+ position: relative;
+}
+.sm .dropdown-toggle {
+ *margin-bottom: -3px;
+}
+.sm .dropdown-toggle:active,
+.sm .open .dropdown-toggle {
+ outline: 0;
+}
+.sm .caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ vertical-align: top;
+ border-top: 4px solid #000000;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+ content: "";
+ opacity: 0.3;
+ filter: alpha(opacity=30);
+}
+.sm .dropdown .caret {
+ margin-top: 8px;
+ margin-left: 2px;
+}
+.sm .dropdown:hover .caret,
+.sm .open .caret {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.sm .dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 4px 0;
+ margin: 1px 0 0;
+ list-style: none;
+ background-color: #ffffff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ *border-right-width: 2px;
+ *border-bottom-width: 2px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+}
+.sm .dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.sm .dropdown-menu .divider {
+ *width: 100%;
+ height: 1px;
+ margin: 8px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+}
+.sm .dropdown-menu a {
+ display: block;
+ padding: 3px 15px;
+ clear: both;
+ font-weight: normal;
+ line-height: 18px;
+ color: #333333;
+ white-space: nowrap;
+}
+.sm .dropdown-menu li > a:hover,
+.sm .dropdown-menu .active > a,
+.sm .dropdown-menu .active > a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #0088cc;
+}
+.sm .open {
+ *z-index: 1000;
+}
+.sm .open .dropdown-menu {
+ display: block;
+}
+.sm .pull-right .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.sm .dropup .caret,
+.sm .navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 4px solid #000000;
+ content: "\2191";
+}
+.sm .dropup .dropdown-menu,
+.sm .navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 1px;
+}
+.sm .typeahead {
+ margin-top: 2px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.sm .well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #eee;
+ border: 1px solid rgba(0, 0, 0, 0.05);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.sm .well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+.sm .well-large {
+ padding: 24px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.sm .well-small {
+ padding: 9px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.sm .fade {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ -webkit-transition: opacity 0.15s linear;
+ -moz-transition: opacity 0.15s linear;
+ -ms-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+}
+.sm .fade.in {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.sm .collapse {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition: height 0.35s ease;
+ -moz-transition: height 0.35s ease;
+ -ms-transition: height 0.35s ease;
+ -o-transition: height 0.35s ease;
+ transition: height 0.35s ease;
+}
+.sm .collapse.in {
+ height: auto;
+}
+.sm .close {
+ float: right;
+ font-size: 20px;
+ font-weight: bold;
+ line-height: 18px;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.sm .close:hover {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.4;
+ filter: alpha(opacity=40);
+}
+.sm button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+.sm .btn {
+ display: inline-block;
+ *display: inline;
+ padding: 4px 10px 4px;
+ margin-bottom: 0;
+ *margin-left: .3em;
+ font-size: 13px;
+ line-height: 18px;
+ *line-height: 20px;
+ color: #333333;
+ text-align: center;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ vertical-align: middle;
+ cursor: pointer;
+ background-color: #f5f5f5;
+ *background-color: #e6e6e6;
+ background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-repeat: repeat-x;
+ border: 1px solid #cccccc;
+ *border: 0;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+ border-bottom-color: #b3b3b3;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+ *zoom: 1;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.sm .btn:hover,
+.sm .btn:active,
+.sm .btn.active,
+.sm .btn.disabled,
+.sm .btn[disabled] {
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
+}
+.sm .btn:active,
+.sm .btn.active {
+ background-color: #cccccc \9;
+}
+.sm .btn:first-child {
+ *margin-left: 0;
+}
+.sm .btn:hover {
+ color: #333333;
+ text-decoration: none;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
+ /* Buttons in IE7 don't get borders, so darken on hover */
+
+ background-position: 0 -15px;
+ -webkit-transition: background-position 0.1s linear;
+ -moz-transition: background-position 0.1s linear;
+ -ms-transition: background-position 0.1s linear;
+ -o-transition: background-position 0.1s linear;
+ transition: background-position 0.1s linear;
+}
+.sm .btn:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.sm .btn.active,
+.sm .btn:active {
+ background-color: #e6e6e6;
+ background-color: #d9d9d9 \9;
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.sm .btn.disabled,
+.sm .btn[disabled] {
+ cursor: default;
+ background-color: #e6e6e6;
+ background-image: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+.sm .btn-large {
+ padding: 9px 14px;
+ font-size: 15px;
+ line-height: normal;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+.sm .btn-large [class^="icon-"] {
+ margin-top: 1px;
+}
+.sm .btn-small {
+ padding: 5px 9px;
+ font-size: 11px;
+ line-height: 16px;
+}
+.sm .btn-small [class^="icon-"] {
+ margin-top: -1px;
+}
+.sm .btn-mini {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 14px;
+}
+.sm .btn-primary,
+.sm .btn-primary:hover,
+.sm .btn-warning,
+.sm .btn-warning:hover,
+.sm .btn-danger,
+.sm .btn-danger:hover,
+.sm .btn-success,
+.sm .btn-success:hover,
+.sm .btn-info,
+.sm .btn-info:hover,
+.sm .btn-inverse,
+.sm .btn-inverse:hover {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.sm .btn-primary.active,
+.sm .btn-warning.active,
+.sm .btn-danger.active,
+.sm .btn-success.active,
+.sm .btn-info.active,
+.sm .btn-inverse.active {
+ color: rgba(255, 255, 255, 0.75);
+}
+.sm .btn {
+ border-color: #ccc;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+.sm .btn-primary {
+ background-color: #0074cc;
+ *background-color: #0055cc;
+ background-image: -ms-linear-gradient(top, #0088cc, #0055cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0055cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0055cc);
+ background-image: -moz-linear-gradient(top, #0088cc, #0055cc);
+ background-image: linear-gradient(top, #0088cc, #0055cc);
+ background-repeat: repeat-x;
+ border-color: #0055cc #0055cc #003580;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.sm .btn-primary:hover,
+.sm .btn-primary:active,
+.sm .btn-primary.active,
+.sm .btn-primary.disabled,
+.sm .btn-primary[disabled] {
+ background-color: #0055cc;
+ *background-color: #004ab3;
+}
+.sm .btn-primary:active,
+.sm .btn-primary.active {
+ background-color: #004099 \9;
+}
+.sm .btn-warning {
+ background-color: #faa732;
+ *background-color: #f89406;
+ background-image: -ms-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(top, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ border-color: #f89406 #f89406 #ad6704;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.sm .btn-warning:hover,
+.sm .btn-warning:active,
+.sm .btn-warning.active,
+.sm .btn-warning.disabled,
+.sm .btn-warning[disabled] {
+ background-color: #f89406;
+ *background-color: #df8505;
+}
+.sm .btn-warning:active,
+.sm .btn-warning.active {
+ background-color: #c67605 \9;
+}
+.sm .btn-danger {
+ background-color: #da4f49;
+ *background-color: #bd362f;
+ background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: linear-gradient(top, #ee5f5b, #bd362f);
+ background-repeat: repeat-x;
+ border-color: #bd362f #bd362f #802420;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.sm .btn-danger:hover,
+.sm .btn-danger:active,
+.sm .btn-danger.active,
+.sm .btn-danger.disabled,
+.sm .btn-danger[disabled] {
+ background-color: #bd362f;
+ *background-color: #a9302a;
+}
+.sm .btn-danger:active,
+.sm .btn-danger.active {
+ background-color: #942a25 \9;
+}
+.sm .btn-success {
+ background-color: #5bb75b;
+ *background-color: #51a351;
+ background-image: -ms-linear-gradient(top, #62c462, #51a351);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+ background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+ background-image: -o-linear-gradient(top, #62c462, #51a351);
+ background-image: -moz-linear-gradient(top, #62c462, #51a351);
+ background-image: linear-gradient(top, #62c462, #51a351);
+ background-repeat: repeat-x;
+ border-color: #51a351 #51a351 #387038;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.sm .btn-success:hover,
+.sm .btn-success:active,
+.sm .btn-success.active,
+.sm .btn-success.disabled,
+.sm .btn-success[disabled] {
+ background-color: #51a351;
+ *background-color: #499249;
+}
+.sm .btn-success:active,
+.sm .btn-success.active {
+ background-color: #408140 \9;
+}
+.sm .btn-info {
+ background-color: #49afcd;
+ *background-color: #2f96b4;
+ background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: linear-gradient(top, #5bc0de, #2f96b4);
+ background-repeat: repeat-x;
+ border-color: #2f96b4 #2f96b4 #1f6377;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.sm .btn-info:hover,
+.sm .btn-info:active,
+.sm .btn-info.active,
+.sm .btn-info.disabled,
+.sm .btn-info[disabled] {
+ background-color: #2f96b4;
+ *background-color: #2a85a0;
+}
+.sm .btn-info:active,
+.sm .btn-info.active {
+ background-color: #24748c \9;
+}
+.sm .btn-inverse {
+ background-color: #414141;
+ *background-color: #222222;
+ background-image: -ms-linear-gradient(top, #555555, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));
+ background-image: -webkit-linear-gradient(top, #555555, #222222);
+ background-image: -o-linear-gradient(top, #555555, #222222);
+ background-image: -moz-linear-gradient(top, #555555, #222222);
+ background-image: linear-gradient(top, #555555, #222222);
+ background-repeat: repeat-x;
+ border-color: #222222 #222222 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.sm .btn-inverse:hover,
+.sm .btn-inverse:active,
+.sm .btn-inverse.active,
+.sm .btn-inverse.disabled,
+.sm .btn-inverse[disabled] {
+ background-color: #222222;
+ *background-color: #151515;
+}
+.sm .btn-inverse:active,
+.sm .btn-inverse.active {
+ background-color: #080808 \9;
+}
+.sm button.btn,
+.sm input[type="submit"].btn {
+ *padding-top: 2px;
+ *padding-bottom: 2px;
+}
+.sm button.btn::-moz-focus-inner,
+.sm input[type="submit"].btn::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+.sm button.btn.btn-large,
+.sm input[type="submit"].btn.btn-large {
+ *padding-top: 7px;
+ *padding-bottom: 7px;
+}
+.sm button.btn.btn-small,
+.sm input[type="submit"].btn.btn-small {
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+}
+.sm button.btn.btn-mini,
+.sm input[type="submit"].btn.btn-mini {
+ *padding-top: 1px;
+ *padding-bottom: 1px;
+}
+.sm .btn-group {
+ position: relative;
+ *margin-left: .3em;
+ *zoom: 1;
+}
+.sm .btn-group:before,
+.sm .btn-group:after {
+ display: table;
+ content: "";
+}
+.sm .btn-group:after {
+ clear: both;
+}
+.sm .btn-group:first-child {
+ *margin-left: 0;
+}
+.sm .btn-group + .btn-group {
+ margin-left: 5px;
+}
+.sm .btn-toolbar {
+ margin-top: 9px;
+ margin-bottom: 9px;
+}
+.sm .btn-toolbar .btn-group {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+}
+.sm .btn-group > .btn {
+ position: relative;
+ float: left;
+ margin-left: -1px;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.sm .btn-group > .btn:first-child {
+ margin-left: 0;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+.sm .btn-group > .btn:last-child,
+.sm .btn-group > .dropdown-toggle {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-bottomright: 4px;
+}
+.sm .btn-group > .btn.large:first-child {
+ margin-left: 0;
+ -webkit-border-bottom-left-radius: 6px;
+ border-bottom-left-radius: 6px;
+ -webkit-border-top-left-radius: 6px;
+ border-top-left-radius: 6px;
+ -moz-border-radius-bottomleft: 6px;
+ -moz-border-radius-topleft: 6px;
+}
+.sm .btn-group > .btn.large:last-child,
+.sm .btn-group > .large.dropdown-toggle {
+ -webkit-border-top-right-radius: 6px;
+ border-top-right-radius: 6px;
+ -webkit-border-bottom-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+ -moz-border-radius-topright: 6px;
+ -moz-border-radius-bottomright: 6px;
+}
+.sm .btn-group > .btn:hover,
+.sm .btn-group > .btn:focus,
+.sm .btn-group > .btn:active,
+.sm .btn-group > .btn.active {
+ z-index: 2;
+}
+.sm .btn-group .dropdown-toggle:active,
+.sm .btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.sm .btn-group > .dropdown-toggle {
+ *padding-top: 4px;
+ padding-right: 8px;
+ *padding-bottom: 4px;
+ padding-left: 8px;
+ -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.sm .btn-group > .btn-mini.dropdown-toggle {
+ padding-right: 5px;
+ padding-left: 5px;
+}
+.sm .btn-group > .btn-small.dropdown-toggle {
+ *padding-top: 4px;
+ *padding-bottom: 4px;
+}
+.sm .btn-group > .btn-large.dropdown-toggle {
+ padding-right: 12px;
+ padding-left: 12px;
+}
+.sm .btn-group.open .dropdown-toggle {
+ background-image: none;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.sm .btn-group.open .btn.dropdown-toggle {
+ background-color: #e6e6e6;
+}
+.sm .btn-group.open .btn-primary.dropdown-toggle {
+ background-color: #0055cc;
+}
+.sm .btn-group.open .btn-warning.dropdown-toggle {
+ background-color: #f89406;
+}
+.sm .btn-group.open .btn-danger.dropdown-toggle {
+ background-color: #bd362f;
+}
+.sm .btn-group.open .btn-success.dropdown-toggle {
+ background-color: #51a351;
+}
+.sm .btn-group.open .btn-info.dropdown-toggle {
+ background-color: #2f96b4;
+}
+.sm .btn-group.open .btn-inverse.dropdown-toggle {
+ background-color: #222222;
+}
+.sm .btn .caret {
+ margin-top: 7px;
+ margin-left: 0;
+}
+.sm .btn:hover .caret,
+.sm .open.btn-group .caret {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.sm .btn-mini .caret {
+ margin-top: 5px;
+}
+.sm .btn-small .caret {
+ margin-top: 6px;
+}
+.sm .btn-large .caret {
+ margin-top: 6px;
+ border-top-width: 5px;
+ border-right-width: 5px;
+ border-left-width: 5px;
+}
+.sm .dropup .btn-large .caret {
+ border-top: 0;
+ border-bottom: 5px solid #000000;
+}
+.sm .btn-primary .caret,
+.sm .btn-warning .caret,
+.sm .btn-danger .caret,
+.sm .btn-info .caret,
+.sm .btn-success .caret,
+.sm .btn-inverse .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+ opacity: 0.75;
+ filter: alpha(opacity=75);
+}
+.sm .alert {
+ padding: 8px 35px 8px 14px;
+ margin-bottom: 18px;
+ color: #c09853;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ background-color: #fcf8e3;
+ border: 1px solid #fbeed5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.sm .alert-heading {
+ color: inherit;
+}
+.sm .alert .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ line-height: 18px;
+}
+.sm .alert-success {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+.sm .alert-danger,
+.sm .alert-error {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+.sm .alert-info {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+.sm .alert-block {
+ padding-top: 14px;
+ padding-bottom: 14px;
+}
+.sm .alert-block > p,
+.sm .alert-block > ul {
+ margin-bottom: 0;
+}
+.sm .alert-block p + p {
+ margin-top: 5px;
+}
+.sm .nav {
+ margin-bottom: 18px;
+ margin-left: 0;
+ list-style: none;
+}
+.sm .nav > li > a {
+ display: block;
+}
+.sm .nav > li > a:hover {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+.sm .nav > .pull-right {
+ float: right;
+}
+.sm .nav .nav-header {
+ display: block;
+ padding: 3px 15px;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 18px;
+ color: #999999;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ text-transform: uppercase;
+}
+.sm .nav li + .nav-header {
+ margin-top: 9px;
+}
+.sm .nav-list {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-bottom: 0;
+}
+.sm .nav-list > li > a,
+.sm .nav-list .nav-header {
+ margin-right: -15px;
+ margin-left: -15px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.sm .nav-list > li > a {
+ padding: 3px 15px;
+}
+.sm .nav-list > .active > a,
+.sm .nav-list > .active > a:hover {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+ background-color: #0088cc;
+}
+.sm .nav-list [class^="icon-"] {
+ margin-right: 2px;
+}
+.sm .nav-list .divider {
+ *width: 100%;
+ height: 1px;
+ margin: 8px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+}
+.sm .nav-tabs,
+.sm .nav-pills {
+ *zoom: 1;
+}
+.sm .nav-tabs:before,
+.sm .nav-pills:before,
+.sm .nav-tabs:after,
+.sm .nav-pills:after {
+ display: table;
+ content: "";
+}
+.sm .nav-tabs:after,
+.sm .nav-pills:after {
+ clear: both;
+}
+.sm .nav-tabs > li,
+.sm .nav-pills > li {
+ float: left;
+}
+.sm .nav-tabs > li > a,
+.sm .nav-pills > li > a {
+ padding-right: 12px;
+ padding-left: 12px;
+ margin-right: 2px;
+ line-height: 14px;
+}
+.sm .nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+.sm .nav-tabs > li {
+ margin-bottom: -1px;
+}
+.sm .nav-tabs > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ line-height: 18px;
+ border: 1px solid transparent;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+.sm .nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #dddddd;
+}
+.sm .nav-tabs > .active > a,
+.sm .nav-tabs > .active > a:hover {
+ color: #555555;
+ cursor: default;
+ background-color: #ffffff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+}
+.sm .nav-pills > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+.sm .nav-pills > .active > a,
+.sm .nav-pills > .active > a:hover {
+ color: #ffffff;
+ background-color: #0088cc;
+}
+.sm .nav-stacked > li {
+ float: none;
+}
+.sm .nav-stacked > li > a {
+ margin-right: 0;
+}
+.sm .nav-tabs.nav-stacked {
+ border-bottom: 0;
+}
+.sm .nav-tabs.nav-stacked > li > a {
+ border: 1px solid #ddd;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.sm .nav-tabs.nav-stacked > li:first-child > a {
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+.sm .nav-tabs.nav-stacked > li:last-child > a {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+.sm .nav-tabs.nav-stacked > li > a:hover {
+ z-index: 2;
+ border-color: #ddd;
+}
+.sm .nav-pills.nav-stacked > li > a {
+ margin-bottom: 3px;
+}
+.sm .nav-pills.nav-stacked > li:last-child > a {
+ margin-bottom: 1px;
+}
+.sm .nav-tabs .dropdown-menu {
+ -webkit-border-radius: 0 0 5px 5px;
+ -moz-border-radius: 0 0 5px 5px;
+ border-radius: 0 0 5px 5px;
+}
+.sm .nav-pills .dropdown-menu {
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.sm .nav-tabs .dropdown-toggle .caret,
+.sm .nav-pills .dropdown-toggle .caret {
+ margin-top: 6px;
+ border-top-color: #0088cc;
+ border-bottom-color: #0088cc;
+}
+.sm .nav-tabs .dropdown-toggle:hover .caret,
+.sm .nav-pills .dropdown-toggle:hover .caret {
+ border-top-color: #005580;
+ border-bottom-color: #005580;
+}
+.sm .nav-tabs .active .dropdown-toggle .caret,
+.sm .nav-pills .active .dropdown-toggle .caret {
+ border-top-color: #333333;
+ border-bottom-color: #333333;
+}
+.sm .nav > .dropdown.active > a:hover {
+ color: #000000;
+ cursor: pointer;
+}
+.sm .nav-tabs .open .dropdown-toggle,
+.sm .nav-pills .open .dropdown-toggle,
+.sm .nav > li.dropdown.open.active > a:hover {
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #999999;
+}
+.sm .nav li.dropdown.open .caret,
+.sm .nav li.dropdown.open.active .caret,
+.sm .nav li.dropdown.open a:hover .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.sm .tabs-stacked .open > a:hover {
+ border-color: #999999;
+}
+.sm .tabbable {
+ *zoom: 1;
+}
+.sm .tabbable:before,
+.sm .tabbable:after {
+ display: table;
+ content: "";
+}
+.sm .tabbable:after {
+ clear: both;
+}
+.sm .tab-content {
+ overflow: auto;
+}
+.sm .tabs-below > .nav-tabs,
+.sm .tabs-right > .nav-tabs,
+.sm .tabs-left > .nav-tabs {
+ border-bottom: 0;
+}
+.sm .tab-content > .tab-pane,
+.sm .pill-content > .pill-pane {
+ display: none;
+}
+.sm .tab-content > .active,
+.sm .pill-content > .active {
+ display: block;
+}
+.sm .tabs-below > .nav-tabs {
+ border-top: 1px solid #ddd;
+}
+.sm .tabs-below > .nav-tabs > li {
+ margin-top: -1px;
+ margin-bottom: 0;
+}
+.sm .tabs-below > .nav-tabs > li > a {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+.sm .tabs-below > .nav-tabs > li > a:hover {
+ border-top-color: #ddd;
+ border-bottom-color: transparent;
+}
+.sm .tabs-below > .nav-tabs > .active > a,
+.sm .tabs-below > .nav-tabs > .active > a:hover {
+ border-color: transparent #ddd #ddd #ddd;
+}
+.sm .tabs-left > .nav-tabs > li,
+.sm .tabs-right > .nav-tabs > li {
+ float: none;
+}
+.sm .tabs-left > .nav-tabs > li > a,
+.sm .tabs-right > .nav-tabs > li > a {
+ min-width: 74px;
+ margin-right: 0;
+ margin-bottom: 3px;
+}
+.sm .tabs-left > .nav-tabs {
+ float: left;
+ margin-right: 19px;
+ border-right: 1px solid #ddd;
+}
+.sm .tabs-left > .nav-tabs > li > a {
+ margin-right: -1px;
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+.sm .tabs-left > .nav-tabs > li > a:hover {
+ border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+.sm .tabs-left > .nav-tabs .active > a,
+.sm .tabs-left > .nav-tabs .active > a:hover {
+ border-color: #ddd transparent #ddd #ddd;
+ *border-right-color: #ffffff;
+}
+.sm .tabs-right > .nav-tabs {
+ float: right;
+ margin-left: 19px;
+ border-left: 1px solid #ddd;
+}
+.sm .tabs-right > .nav-tabs > li > a {
+ margin-left: -1px;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+.sm .tabs-right > .nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+.sm .tabs-right > .nav-tabs .active > a,
+.sm .tabs-right > .nav-tabs .active > a:hover {
+ border-color: #ddd #ddd #ddd transparent;
+ *border-left-color: #ffffff;
+}
+.sm .navbar {
+ *position: relative;
+ *z-index: 2;
+ margin-bottom: 18px;
+ overflow: visible;
+}
+.sm .navbar-inner {
+ min-height: 40px;
+ padding-right: 20px;
+ padding-left: 20px;
+ background-color: #2c2c2c;
+ background-image: -moz-linear-gradient(top, #333333, #222222);
+ background-image: -ms-linear-gradient(top, #333333, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
+ background-image: -webkit-linear-gradient(top, #333333, #222222);
+ background-image: -o-linear-gradient(top, #333333, #222222);
+ background-image: linear-gradient(top, #333333, #222222);
+ background-repeat: repeat-x;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+}
+.sm .navbar .container {
+ width: auto;
+}
+.sm .nav-collapse.collapse {
+ height: auto;
+}
+.sm .navbar {
+ color: #999999;
+}
+.sm .navbar .brand:hover {
+ text-decoration: none;
+}
+.sm .navbar .brand {
+ display: block;
+ float: left;
+ padding: 8px 20px 12px;
+ margin-left: -20px;
+ font-size: 20px;
+ font-weight: 200;
+ line-height: 1;
+ color: #999999;
+}
+.sm .navbar .navbar-text {
+ margin-bottom: 0;
+ line-height: 40px;
+}
+.sm .navbar .navbar-link {
+ color: #999999;
+}
+.sm .navbar .navbar-link:hover {
+ color: #ffffff;
+}
+.sm .navbar .btn,
+.sm .navbar .btn-group {
+ margin-top: 5px;
+}
+.sm .navbar .btn-group .btn {
+ margin: 0;
+}
+.sm .navbar-form {
+ margin-bottom: 0;
+ *zoom: 1;
+}
+.sm .navbar-form:before,
+.sm .navbar-form:after {
+ display: table;
+ content: "";
+}
+.sm .navbar-form:after {
+ clear: both;
+}
+.sm .navbar-form input,
+.sm .navbar-form select,
+.sm .navbar-form .radio,
+.sm .navbar-form .checkbox {
+ margin-top: 5px;
+}
+.sm .navbar-form input,
+.sm .navbar-form select {
+ display: inline-block;
+ margin-bottom: 0;
+}
+.sm .navbar-form input[type="image"],
+.sm .navbar-form input[type="checkbox"],
+.sm .navbar-form input[type="radio"] {
+ margin-top: 3px;
+}
+.sm .navbar-form .input-append,
+.sm .navbar-form .input-prepend {
+ margin-top: 6px;
+ white-space: nowrap;
+}
+.sm .navbar-form .input-append input,
+.sm .navbar-form .input-prepend input {
+ margin-top: 0;
+}
+.sm .navbar-search {
+ position: relative;
+ float: left;
+ margin-top: 6px;
+ margin-bottom: 0;
+}
+.sm .navbar-search .search-query {
+ padding: 4px 9px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ font-weight: normal;
+ line-height: 1;
+ color: #ffffff;
+ background-color: #626262;
+ border: 1px solid #151515;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -webkit-transition: none;
+ -moz-transition: none;
+ -ms-transition: none;
+ -o-transition: none;
+ transition: none;
+}
+.sm .navbar-search .search-query:-moz-placeholder {
+ color: #cccccc;
+}
+.sm .navbar-search .search-query::-webkit-input-placeholder {
+ color: #cccccc;
+}
+.sm .navbar-search .search-query:focus,
+.sm .navbar-search .search-query.focused {
+ padding: 5px 10px;
+ color: #333333;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #ffffff;
+ border: 0;
+ outline: 0;
+ -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+}
+.sm .navbar-fixed-top,
+.sm .navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+ margin-bottom: 0;
+}
+.sm .navbar-fixed-top .navbar-inner,
+.sm .navbar-fixed-bottom .navbar-inner {
+ padding-right: 0;
+ padding-left: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.sm .navbar-fixed-top .container,
+.sm .navbar-fixed-bottom .container {
+ width: 940px;
+}
+.sm .navbar-fixed-top {
+ top: 0;
+}
+.sm .navbar-fixed-bottom {
+ bottom: 0;
+}
+.sm .navbar .nav {
+ position: relative;
+ left: 0;
+ display: block;
+ float: left;
+ margin: 0 10px 0 0;
+}
+.sm .navbar .nav.pull-right {
+ float: right;
+}
+.sm .navbar .nav > li {
+ display: block;
+ float: left;
+}
+.sm .navbar .nav > li > a {
+ float: none;
+ padding: 9px 10px 11px;
+ line-height: 19px;
+ color: #999999;
+ text-decoration: none;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.sm .navbar .btn {
+ display: inline-block;
+ padding: 4px 10px 4px;
+ margin: 5px 5px 6px;
+ line-height: 18px;
+}
+.sm .navbar .btn-group {
+ padding: 5px 5px 6px;
+ margin: 0;
+}
+.sm .navbar .nav > li > a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: transparent;
+}
+.sm .navbar .nav .active > a,
+.sm .navbar .nav .active > a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #222222;
+}
+.sm .navbar .divider-vertical {
+ width: 1px;
+ height: 40px;
+ margin: 0 9px;
+ overflow: hidden;
+ background-color: #222222;
+ border-right: 1px solid #333333;
+}
+.sm .navbar .nav.pull-right {
+ margin-right: 0;
+ margin-left: 10px;
+}
+.sm .navbar .btn-navbar {
+ display: none;
+ float: right;
+ padding: 7px 10px;
+ margin-right: 5px;
+ margin-left: 5px;
+ background-color: #2c2c2c;
+ *background-color: #222222;
+ background-image: -ms-linear-gradient(top, #333333, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
+ background-image: -webkit-linear-gradient(top, #333333, #222222);
+ background-image: -o-linear-gradient(top, #333333, #222222);
+ background-image: linear-gradient(top, #333333, #222222);
+ background-image: -moz-linear-gradient(top, #333333, #222222);
+ background-repeat: repeat-x;
+ border-color: #222222 #222222 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+}
+.sm .navbar .btn-navbar:hover,
+.sm .navbar .btn-navbar:active,
+.sm .navbar .btn-navbar.active,
+.sm .navbar .btn-navbar.disabled,
+.sm .navbar .btn-navbar[disabled] {
+ background-color: #222222;
+ *background-color: #151515;
+}
+.sm .navbar .btn-navbar:active,
+.sm .navbar .btn-navbar.active {
+ background-color: #080808 \9;
+}
+.sm .navbar .btn-navbar .icon-bar {
+ display: block;
+ width: 18px;
+ height: 2px;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 1px;
+ -moz-border-radius: 1px;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.sm .btn-navbar .icon-bar + .icon-bar {
+ margin-top: 3px;
+}
+.sm .navbar .dropdown-menu:before {
+ position: absolute;
+ top: -7px;
+ left: 9px;
+ display: inline-block;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-left: 7px solid transparent;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ content: '';
+}
+.sm .navbar .dropdown-menu:after {
+ position: absolute;
+ top: -6px;
+ left: 10px;
+ display: inline-block;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #ffffff;
+ border-left: 6px solid transparent;
+ content: '';
+}
+.sm .navbar-fixed-bottom .dropdown-menu:before {
+ top: auto;
+ bottom: -7px;
+ border-top: 7px solid #ccc;
+ border-bottom: 0;
+ border-top-color: rgba(0, 0, 0, 0.2);
+}
+.sm .navbar-fixed-bottom .dropdown-menu:after {
+ top: auto;
+ bottom: -6px;
+ border-top: 6px solid #ffffff;
+ border-bottom: 0;
+}
+.sm .navbar .nav li.dropdown .dropdown-toggle .caret,
+.sm .navbar .nav li.dropdown.open .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+.sm .navbar .nav li.dropdown.active .caret {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.sm .navbar .nav li.dropdown.open > .dropdown-toggle,
+.sm .navbar .nav li.dropdown.active > .dropdown-toggle,
+.sm .navbar .nav li.dropdown.open.active > .dropdown-toggle {
+ background-color: transparent;
+}
+.sm .navbar .nav li.dropdown.active > .dropdown-toggle:hover {
+ color: #ffffff;
+}
+.sm .navbar .pull-right .dropdown-menu,
+.sm .navbar .dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.sm .navbar .pull-right .dropdown-menu:before,
+.sm .navbar .dropdown-menu.pull-right:before {
+ right: 12px;
+ left: auto;
+}
+.sm .navbar .pull-right .dropdown-menu:after,
+.sm .navbar .dropdown-menu.pull-right:after {
+ right: 13px;
+ left: auto;
+}
+.sm .breadcrumb {
+ padding: 7px 14px;
+ margin: 0 0 18px;
+ list-style: none;
+ background-color: #fbfbfb;
+ background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
+ background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: linear-gradient(top, #ffffff, #f5f5f5);
+ background-repeat: repeat-x;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
+ box-shadow: inset 0 1px 0 #ffffff;
+}
+.sm .breadcrumb li {
+ display: inline-block;
+ *display: inline;
+ text-shadow: 0 1px 0 #ffffff;
+ *zoom: 1;
+}
+.sm .breadcrumb .divider {
+ padding: 0 5px;
+ color: #999999;
+}
+.sm .breadcrumb .active a {
+ color: #333333;
+}
+.sm .pagination {
+ height: 36px;
+ margin: 18px 0;
+}
+.sm .pagination ul {
+ display: inline-block;
+ *display: inline;
+ margin-bottom: 0;
+ margin-left: 0;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ *zoom: 1;
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.sm .pagination li {
+ display: inline;
+}
+.sm .pagination a {
+ float: left;
+ padding: 0 14px;
+ line-height: 34px;
+ text-decoration: none;
+ border: 1px solid #ddd;
+ border-left-width: 0;
+}
+.sm .pagination a:hover,
+.sm .pagination .active a {
+ background-color: #f5f5f5;
+}
+.sm .pagination .active a {
+ color: #999999;
+ cursor: default;
+}
+.sm .pagination .disabled span,
+.sm .pagination .disabled a,
+.sm .pagination .disabled a:hover {
+ color: #999999;
+ cursor: default;
+ background-color: transparent;
+}
+.sm .pagination li:first-child a {
+ border-left-width: 1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.sm .pagination li:last-child a {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.sm .pagination-centered {
+ text-align: center;
+}
+.sm .pagination-right {
+ text-align: right;
+}
+.sm .pager {
+ margin-bottom: 18px;
+ margin-left: 0;
+ text-align: center;
+ list-style: none;
+ *zoom: 1;
+}
+.sm .pager:before,
+.sm .pager:after {
+ display: table;
+ content: "";
+}
+.sm .pager:after {
+ clear: both;
+}
+.sm .pager li {
+ display: inline;
+}
+.sm .pager a {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+.sm .pager a:hover {
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+.sm .pager .next a {
+ float: right;
+}
+.sm .pager .previous a {
+ float: left;
+}
+.sm .pager .disabled a,
+.sm .pager .disabled a:hover {
+ color: #999999;
+ cursor: default;
+ background-color: #fff;
+}
+.sm .modal-open .dropdown-menu {
+ z-index: 2050;
+}
+.sm .modal-open .dropdown.open {
+ *z-index: 2050;
+}
+.sm .modal-open .popover {
+ z-index: 2060;
+}
+.sm .modal-open .tooltip {
+ z-index: 2070;
+}
+.sm .modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000000;
+}
+.sm .modal-backdrop.fade {
+ opacity: 0;
+}
+.sm .modal-backdrop,
+.sm .modal-backdrop.fade.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+.sm .modal {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ z-index: 1050;
+ width: 560px;
+ margin: -250px 0 0 -280px;
+ overflow: auto;
+ background-color: #ffffff;
+ border: 1px solid #999;
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ *border: 1px solid #999;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding-box;
+ background-clip: padding-box;
+}
+.sm .modal.fade {
+ top: -25%;
+ -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
+ -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
+ -ms-transition: opacity 0.3s linear, top 0.3s ease-out;
+ -o-transition: opacity 0.3s linear, top 0.3s ease-out;
+ transition: opacity 0.3s linear, top 0.3s ease-out;
+}
+.sm .modal.fade.in {
+ top: 50%;
+}
+.sm .modal-header {
+ padding: 9px 15px;
+ border-bottom: 1px solid #eee;
+}
+.sm .modal-header .close {
+ margin-top: 2px;
+}
+.sm .modal-body {
+ max-height: 400px;
+ padding: 15px;
+ overflow-y: auto;
+}
+.sm .modal-form {
+ margin-bottom: 0;
+}
+.sm .modal-footer {
+ padding: 14px 15px 15px;
+ margin-bottom: 0;
+ text-align: right;
+ background-color: #f5f5f5;
+ border-top: 1px solid #ddd;
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+ *zoom: 1;
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
+ box-shadow: inset 0 1px 0 #ffffff;
+}
+.sm .modal-footer:before,
+.sm .modal-footer:after {
+ display: table;
+ content: "";
+}
+.sm .modal-footer:after {
+ clear: both;
+}
+.sm .modal-footer .btn + .btn {
+ margin-bottom: 0;
+ margin-left: 5px;
+}
+.sm .modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.sm .tooltip {
+ position: absolute;
+ z-index: 1020;
+ display: block;
+ padding: 5px;
+ font-size: 11px;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ visibility: visible;
+}
+.sm .tooltip.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+.sm .tooltip.top {
+ margin-top: -2px;
+}
+.sm .tooltip.right {
+ margin-left: 2px;
+}
+.sm .tooltip.bottom {
+ margin-top: 2px;
+}
+.sm .tooltip.left {
+ margin-left: -2px;
+}
+.sm .tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-top: 5px solid #000000;
+ border-right: 5px solid transparent;
+ border-left: 5px solid transparent;
+}
+.sm .tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 5px solid #000000;
+}
+.sm .tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-right: 5px solid transparent;
+ border-bottom: 5px solid #000000;
+ border-left: 5px solid transparent;
+}
+.sm .tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-right: 5px solid #000000;
+ border-bottom: 5px solid transparent;
+}
+.sm .tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000000;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.sm .tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+}
+.sm .popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1010;
+ display: none;
+ padding: 5px;
+}
+.sm .popover.top {
+ margin-top: -5px;
+}
+.sm .popover.right {
+ margin-left: 5px;
+}
+.sm .popover.bottom {
+ margin-top: 5px;
+}
+.sm .popover.left {
+ margin-left: -5px;
+}
+.sm .popover.top .arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-top: 5px solid #000000;
+ border-right: 5px solid transparent;
+ border-left: 5px solid transparent;
+}
+.sm .popover.right .arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-right: 5px solid #000000;
+ border-bottom: 5px solid transparent;
+}
+.sm .popover.bottom .arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-right: 5px solid transparent;
+ border-bottom: 5px solid #000000;
+ border-left: 5px solid transparent;
+}
+.sm .popover.left .arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 5px solid #000000;
+}
+.sm .popover .arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+}
+.sm .popover-inner {
+ width: 280px;
+ padding: 3px;
+ overflow: hidden;
+ background: #000000;
+ background: rgba(0, 0, 0, 0.8);
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+}
+.sm .popover-title {
+ padding: 9px 15px;
+ line-height: 1;
+ background-color: #f5f5f5;
+ border-bottom: 1px solid #eee;
+ -webkit-border-radius: 3px 3px 0 0;
+ -moz-border-radius: 3px 3px 0 0;
+ border-radius: 3px 3px 0 0;
+}
+.sm .popover-content {
+ padding: 14px;
+ background-color: #ffffff;
+ -webkit-border-radius: 0 0 3px 3px;
+ -moz-border-radius: 0 0 3px 3px;
+ border-radius: 0 0 3px 3px;
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding-box;
+ background-clip: padding-box;
+}
+.sm .popover-content p,
+.sm .popover-content ul,
+.sm .popover-content ol {
+ margin-bottom: 0;
+}
+.sm .thumbnails {
+ margin-left: -20px;
+ list-style: none;
+ *zoom: 1;
+}
+.sm .thumbnails:before,
+.sm .thumbnails:after {
+ display: table;
+ content: "";
+}
+.sm .thumbnails:after {
+ clear: both;
+}
+.sm .row-fluid .thumbnails {
+ margin-left: 0;
+}
+.sm .thumbnails > li {
+ float: left;
+ margin-bottom: 18px;
+ margin-left: 20px;
+}
+.sm .thumbnail {
+ display: block;
+ padding: 4px;
+ line-height: 1;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.sm a.thumbnail:hover {
+ border-color: #0088cc;
+ -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+ -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+ box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+}
+.sm .thumbnail > img {
+ display: block;
+ max-width: 100%;
+ margin-right: auto;
+ margin-left: auto;
+}
+.sm .thumbnail .caption {
+ padding: 9px;
+}
+.sm .label,
+.sm .badge {
+ font-size: 10.998px;
+ font-weight: bold;
+ line-height: 14px;
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ white-space: nowrap;
+ vertical-align: baseline;
+ background-color: #999999;
+}
+.sm .label {
+ padding: 1px 4px 2px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.sm .badge {
+ padding: 1px 9px 2px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
+ border-radius: 9px;
+}
+.sm a.label:hover,
+.sm a.badge:hover {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.sm .label-important,
+.sm .badge-important {
+ background-color: #b94a48;
+}
+.sm .label-important[href],
+.sm .badge-important[href] {
+ background-color: #953b39;
+}
+.sm .label-warning,
+.sm .badge-warning {
+ background-color: #f89406;
+}
+.sm .label-warning[href],
+.sm .badge-warning[href] {
+ background-color: #c67605;
+}
+.sm .label-success,
+.sm .badge-success {
+ background-color: #468847;
+}
+.sm .label-success[href],
+.sm .badge-success[href] {
+ background-color: #356635;
+}
+.sm .label-info,
+.sm .badge-info {
+ background-color: #3a87ad;
+}
+.sm .label-info[href],
+.sm .badge-info[href] {
+ background-color: #2d6987;
+}
+.sm .label-inverse,
+.sm .badge-inverse {
+ background-color: #333333;
+}
+.sm .label-inverse[href],
+.sm .badge-inverse[href] {
+ background-color: #1a1a1a;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@-moz-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@-ms-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+.sm .progress {
+ height: 18px;
+ margin-bottom: 18px;
+ overflow: hidden;
+ background-color: #f7f7f7;
+ background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+ background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-repeat: repeat-x;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+.sm .progress .bar {
+ width: 0;
+ height: 18px;
+ font-size: 12px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e90d2;
+ background-image: -moz-linear-gradient(top, #149bdf, #0480be);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+ background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+ background-image: -o-linear-gradient(top, #149bdf, #0480be);
+ background-image: linear-gradient(top, #149bdf, #0480be);
+ background-image: -ms-linear-gradient(top, #149bdf, #0480be);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transition: width 0.6s ease;
+ -moz-transition: width 0.6s ease;
+ -ms-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+.sm .progress-striped .bar {
+ background-color: #149bdf;
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ -moz-background-size: 40px 40px;
+ -o-background-size: 40px 40px;
+ background-size: 40px 40px;
+}
+.sm .progress.active .bar {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -moz-animation: progress-bar-stripes 2s linear infinite;
+ -ms-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.sm .progress-danger .bar {
+ background-color: #dd514c;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: linear-gradient(top, #ee5f5b, #c43c35);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
+}
+.sm .progress-danger.progress-striped .bar {
+ background-color: #ee5f5b;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.sm .progress-success .bar {
+ background-color: #5eb95e;
+ background-image: -moz-linear-gradient(top, #62c462, #57a957);
+ background-image: -ms-linear-gradient(top, #62c462, #57a957);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+ background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+ background-image: -o-linear-gradient(top, #62c462, #57a957);
+ background-image: linear-gradient(top, #62c462, #57a957);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
+}
+.sm .progress-success.progress-striped .bar {
+ background-color: #62c462;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.sm .progress-info .bar {
+ background-color: #4bb1cf;
+ background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: linear-gradient(top, #5bc0de, #339bb9);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
+}
+.sm .progress-info.progress-striped .bar {
+ background-color: #5bc0de;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.sm .progress-warning .bar {
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -ms-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(top, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
+}
+.sm .progress-warning.progress-striped .bar {
+ background-color: #fbb450;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.sm .accordion {
+ margin-bottom: 18px;
+}
+.sm .accordion-group {
+ margin-bottom: 2px;
+ border: 1px solid #e5e5e5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.sm .accordion-heading {
+ border-bottom: 0;
+}
+.sm .accordion-heading .accordion-toggle {
+ display: block;
+ padding: 8px 15px;
+}
+.sm .accordion-toggle {
+ cursor: pointer;
+}
+.sm .accordion-inner {
+ padding: 9px 15px;
+ border-top: 1px solid #e5e5e5;
+}
+.sm .carousel {
+ position: relative;
+ margin-bottom: 18px;
+ line-height: 1;
+}
+.sm .carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+.sm .carousel .item {
+ position: relative;
+ display: none;
+ -webkit-transition: 0.6s ease-in-out left;
+ -moz-transition: 0.6s ease-in-out left;
+ -ms-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+.sm .carousel .item > img {
+ display: block;
+ line-height: 1;
+}
+.sm .carousel .active,
+.sm .carousel .next,
+.sm .carousel .prev {
+ display: block;
+}
+.sm .carousel .active {
+ left: 0;
+}
+.sm .carousel .next,
+.sm .carousel .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.sm .carousel .next {
+ left: 100%;
+}
+.sm .carousel .prev {
+ left: -100%;
+}
+.sm .carousel .next.left,
+.sm .carousel .prev.right {
+ left: 0;
+}
+.sm .carousel .active.left {
+ left: -100%;
+}
+.sm .carousel .active.right {
+ left: 100%;
+}
+.sm .carousel-control {
+ position: absolute;
+ top: 40%;
+ left: 15px;
+ width: 40px;
+ height: 40px;
+ margin-top: -20px;
+ font-size: 60px;
+ font-weight: 100;
+ line-height: 30px;
+ color: #ffffff;
+ text-align: center;
+ background: #222222;
+ border: 3px solid #ffffff;
+ -webkit-border-radius: 23px;
+ -moz-border-radius: 23px;
+ border-radius: 23px;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.sm .carousel-control.right {
+ right: 15px;
+ left: auto;
+}
+.sm .carousel-control:hover {
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.sm .carousel-caption {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 10px 15px 5px;
+ background: #333333;
+ background: rgba(0, 0, 0, 0.75);
+}
+.sm .carousel-caption h4,
+.sm .carousel-caption p {
+ color: #ffffff;
+}
+.sm .hero-unit {
+ padding: 60px;
+ margin-bottom: 30px;
+ background-color: #eeeeee;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.sm .hero-unit h1 {
+ margin-bottom: 0;
+ font-size: 60px;
+ line-height: 1;
+ letter-spacing: -1px;
+ color: inherit;
+}
+.sm .hero-unit p {
+ font-size: 18px;
+ font-weight: 200;
+ line-height: 27px;
+ color: inherit;
+}
+.sm .pull-right {
+ float: right;
+}
+.sm .pull-left {
+ float: left;
+}
+.sm .hide {
+ display: none;
+}
+.sm .show {
+ display: block;
+}
+.sm .invisible {
+ visibility: hidden;
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/css/bootstrap/css/sm-bootstrap-responsive.css b/sm-shop/src/main/webapp/resources/css/bootstrap/css/sm-bootstrap-responsive.css
new file mode 100755
index 0000000..93d2bc5
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/bootstrap/css/sm-bootstrap-responsive.css
@@ -0,0 +1,782 @@
+.sm .clearfix {
+ *zoom: 1;
+}
+.sm .clearfix:before,
+.sm .clearfix:after {
+ display: table;
+ content: "";
+}
+.sm .clearfix:after {
+ clear: both;
+}
+.sm .hide-text {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+.sm .input-block-level {
+ display: block;
+ width: 100%;
+ min-height: 28px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.sm .hidden {
+ display: none;
+ visibility: hidden;
+}
+.sm .visible-phone {
+ display: none !important;
+}
+.sm .visible-tablet {
+ display: none !important;
+}
+.sm .hidden-desktop {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .sm .visible-phone {
+ display: inherit !important;
+ }
+ .sm .hidden-phone {
+ display: none !important;
+ }
+ .sm .hidden-desktop {
+ display: inherit !important;
+ }
+ .sm .visible-desktop {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 979px) {
+ .sm .visible-tablet {
+ display: inherit !important;
+ }
+ .sm .hidden-tablet {
+ display: none !important;
+ }
+ .sm .hidden-desktop {
+ display: inherit !important;
+ }
+ .sm .visible-desktop {
+ display: none !important ;
+ }
+}
+@media (max-width: 480px) {
+ .sm .nav-collapse {
+ -webkit-transform: translate3d(0, 0, 0);
+ }
+ .sm .page-header h1 small {
+ display: block;
+ line-height: 18px;
+ }
+ .sm input[type="checkbox"],
+ .sm input[type="radio"] {
+ border: 1px solid #ccc;
+ }
+ .sm .form-horizontal .control-group > label {
+ float: none;
+ width: auto;
+ padding-top: 0;
+ text-align: left;
+ }
+ .sm .form-horizontal .controls {
+ margin-left: 0;
+ }
+ .sm .form-horizontal .control-list {
+ padding-top: 0;
+ }
+ .sm .form-horizontal .form-actions {
+ padding-right: 10px;
+ padding-left: 10px;
+ }
+ .sm .modal {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ left: 10px;
+ width: auto;
+ margin: 0;
+ }
+ .sm .modal.fade.in {
+ top: auto;
+ }
+ .sm .modal-header .close {
+ padding: 10px;
+ margin: -10px;
+ }
+ .sm .carousel-caption {
+ position: static;
+ }
+}
+@media (max-width: 767px) {
+ .sm body {
+ padding-right: 20px;
+ padding-left: 20px;
+ }
+ .sm .navbar-fixed-top,
+ .sm .navbar-fixed-bottom {
+ margin-right: -20px;
+ margin-left: -20px;
+ }
+ .sm .container-fluid {
+ padding: 0;
+ }
+ .sm .dl-horizontal dt {
+ float: none;
+ width: auto;
+ clear: none;
+ text-align: left;
+ }
+ .sm .dl-horizontal dd {
+ margin-left: 0;
+ }
+ .sm .container {
+ width: auto;
+ }
+ .sm .row-fluid {
+ width: 100%;
+ }
+ .sm .row,
+ .sm .thumbnails {
+ margin-left: 0;
+ }
+ .sm [class*="span"],
+ .sm .row-fluid [class*="span"] {
+ display: block;
+ float: none;
+ width: auto;
+ margin-left: 0;
+ }
+ .sm .input-large,
+ .sm .input-xlarge,
+ .sm .input-xxlarge,
+ .sm input[class*="span"],
+ .sm select[class*="span"],
+ .sm textarea[class*="span"],
+ .sm .uneditable-input {
+ display: block;
+ width: 100%;
+ min-height: 28px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .sm .input-prepend input,
+ .sm .input-append input,
+ .sm .input-prepend input[class*="span"],
+ .sm .input-append input[class*="span"] {
+ display: inline-block;
+ width: auto;
+ }
+}
+@media (min-width: 768px) and (max-width: 979px) {
+ .sm .row {
+ margin-left: -20px;
+ *zoom: 1;
+ }
+ .sm .row:before,
+ .sm .row:after {
+ display: table;
+ content: "";
+ }
+ .sm .row:after {
+ clear: both;
+ }
+ .sm [class*="span"] {
+ float: left;
+ margin-left: 20px;
+ }
+ .sm .container,
+ .sm .navbar-fixed-top .container,
+ .sm .navbar-fixed-bottom .container {
+ width: 724px;
+ }
+ .sm .span12 {
+ width: 724px;
+ }
+ .sm .span11 {
+ width: 662px;
+ }
+ .sm .span10 {
+ width: 600px;
+ }
+ .sm .span9 {
+ width: 538px;
+ }
+ .sm .span8 {
+ width: 476px;
+ }
+ .sm .span7 {
+ width: 414px;
+ }
+ .sm .span6 {
+ width: 352px;
+ }
+ .sm .span5 {
+ width: 290px;
+ }
+ .sm .span4 {
+ width: 228px;
+ }
+ .sm .span3 {
+ width: 166px;
+ }
+ .sm .span2 {
+ width: 104px;
+ }
+ .sm .span1 {
+ width: 42px;
+ }
+ .sm .offset12 {
+ margin-left: 764px;
+ }
+ .sm .offset11 {
+ margin-left: 702px;
+ }
+ .sm .offset10 {
+ margin-left: 640px;
+ }
+ .sm .offset9 {
+ margin-left: 578px;
+ }
+ .sm .offset8 {
+ margin-left: 516px;
+ }
+ .sm .offset7 {
+ margin-left: 454px;
+ }
+ .sm .offset6 {
+ margin-left: 392px;
+ }
+ .sm .offset5 {
+ margin-left: 330px;
+ }
+ .sm .offset4 {
+ margin-left: 268px;
+ }
+ .sm .offset3 {
+ margin-left: 206px;
+ }
+ .sm .offset2 {
+ margin-left: 144px;
+ }
+ .sm .offset1 {
+ margin-left: 82px;
+ }
+ .sm .row-fluid {
+ width: 100%;
+ *zoom: 1;
+ }
+ .sm .row-fluid:before,
+ .sm .row-fluid:after {
+ display: table;
+ content: "";
+ }
+ .sm .row-fluid:after {
+ clear: both;
+ }
+ .sm .row-fluid [class*="span"] {
+ display: block;
+ float: left;
+ width: 100%;
+ min-height: 28px;
+ margin-left: 2.762430939%;
+ *margin-left: 2.709239449638298%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .sm .row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+ }
+ .sm .row-fluid .span12 {
+ width: 99.999999993%;
+ *width: 99.9468085036383%;
+ }
+ .sm .row-fluid .span11 {
+ width: 91.436464082%;
+ *width: 91.38327259263829%;
+ }
+ .sm .row-fluid .span10 {
+ width: 82.87292817100001%;
+ *width: 82.8197366816383%;
+ }
+ .sm .row-fluid .span9 {
+ width: 74.30939226%;
+ *width: 74.25620077063829%;
+ }
+ .sm .row-fluid .span8 {
+ width: 65.74585634900001%;
+ *width: 65.6926648596383%;
+ }
+ .sm .row-fluid .span7 {
+ width: 57.182320438000005%;
+ *width: 57.129128948638304%;
+ }
+ .sm .row-fluid .span6 {
+ width: 48.618784527%;
+ *width: 48.5655930376383%;
+ }
+ .sm .row-fluid .span5 {
+ width: 40.055248616%;
+ *width: 40.0020571266383%;
+ }
+ .sm .row-fluid .span4 {
+ width: 31.491712705%;
+ *width: 31.4385212156383%;
+ }
+ .sm .row-fluid .span3 {
+ width: 22.928176794%;
+ *width: 22.874985304638297%;
+ }
+ .sm .row-fluid .span2 {
+ width: 14.364640883%;
+ *width: 14.311449393638298%;
+ }
+ .sm .row-fluid .span1 {
+ width: 5.801104972%;
+ *width: 5.747913482638298%;
+ }
+ .sm input,
+ .sm textarea,
+ .sm .uneditable-input {
+ margin-left: 0;
+ }
+ .sm input.span12,
+ .sm textarea.span12,
+ .sm .uneditable-input.span12 {
+ width: 714px;
+ }
+ .sm input.span11,
+ .sm textarea.span11,
+ .sm .uneditable-input.span11 {
+ width: 652px;
+ }
+ .sm input.span10,
+ .sm textarea.span10,
+ .sm .uneditable-input.span10 {
+ width: 590px;
+ }
+ .sm input.span9,
+ .sm textarea.span9,
+ .sm .uneditable-input.span9 {
+ width: 528px;
+ }
+ .sm input.span8,
+ .sm textarea.span8,
+ .sm .uneditable-input.span8 {
+ width: 466px;
+ }
+ .sm input.span7,
+ .sm textarea.span7,
+ .sm .uneditable-input.span7 {
+ width: 404px;
+ }
+ .sm input.span6,
+ .sm textarea.span6,
+ .sm .uneditable-input.span6 {
+ width: 342px;
+ }
+ .sm input.span5,
+ .sm textarea.span5,
+ .sm .uneditable-input.span5 {
+ width: 280px;
+ }
+ .sm input.span4,
+ .sm textarea.span4,
+ .sm .uneditable-input.span4 {
+ width: 218px;
+ }
+ .sm input.span3,
+ .sm textarea.span3,
+ .sm .uneditable-input.span3 {
+ width: 156px;
+ }
+ .sm input.span2,
+ .sm textarea.span2,
+ .sm .uneditable-input.span2 {
+ width: 94px;
+ }
+ .sm input.span1,
+ .sm textarea.span1,
+ .sm .uneditable-input.span1 {
+ width: 32px;
+ }
+}
+@media (min-width: 1200px) {
+ .sm .row {
+ margin-left: -30px;
+ *zoom: 1;
+ }
+ .sm .row:before,
+ .sm .row:after {
+ display: table;
+ content: "";
+ }
+ .sm .row:after {
+ clear: both;
+ }
+ .sm [class*="span"] {
+ float: left;
+ margin-left: 30px;
+ }
+ .sm .container,
+ .sm .navbar-fixed-top .container,
+ .sm .navbar-fixed-bottom .container {
+ width: 1170px;
+ }
+ .sm .span12 {
+ width: 1170px;
+ }
+ .sm .span11 {
+ width: 1070px;
+ }
+ .sm .span10 {
+ width: 970px;
+ }
+ .sm .span9 {
+ width: 870px;
+ }
+ .sm .span8 {
+ width: 770px;
+ }
+ .sm .span7 {
+ width: 670px;
+ }
+ .sm .span6 {
+ width: 570px;
+ }
+ .sm .span5 {
+ width: 470px;
+ }
+ .sm .span4 {
+ width: 370px;
+ }
+ .sm .span3 {
+ width: 270px;
+ }
+ .sm .span2 {
+ width: 170px;
+ }
+ .sm .span1 {
+ width: 70px;
+ }
+ .sm .offset12 {
+ margin-left: 1230px;
+ }
+ .sm .offset11 {
+ margin-left: 1130px;
+ }
+ .sm .offset10 {
+ margin-left: 1030px;
+ }
+ .sm .offset9 {
+ margin-left: 930px;
+ }
+ .sm .offset8 {
+ margin-left: 830px;
+ }
+ .sm .offset7 {
+ margin-left: 730px;
+ }
+ .sm .offset6 {
+ margin-left: 630px;
+ }
+ .sm .offset5 {
+ margin-left: 530px;
+ }
+ .sm .offset4 {
+ margin-left: 430px;
+ }
+ .sm .offset3 {
+ margin-left: 330px;
+ }
+ .sm .offset2 {
+ margin-left: 230px;
+ }
+ .sm .offset1 {
+ margin-left: 130px;
+ }
+ .sm .row-fluid {
+ width: 100%;
+ *zoom: 1;
+ }
+ .sm .row-fluid:before,
+ .sm .row-fluid:after {
+ display: table;
+ content: "";
+ }
+ .sm .row-fluid:after {
+ clear: both;
+ }
+ .sm .row-fluid [class*="span"] {
+ display: block;
+ float: left;
+ width: 100%;
+ min-height: 28px;
+ margin-left: 2.564102564%;
+ *margin-left: 2.510911074638298%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .sm .row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+ }
+ .sm .row-fluid .span12 {
+ width: 100%;
+ *width: 99.94680851063829%;
+ }
+ .sm .row-fluid .span11 {
+ width: 91.45299145300001%;
+ *width: 91.3997999636383%;
+ }
+ .sm .row-fluid .span10 {
+ width: 82.905982906%;
+ *width: 82.8527914166383%;
+ }
+ .sm .row-fluid .span9 {
+ width: 74.358974359%;
+ *width: 74.30578286963829%;
+ }
+ .sm .row-fluid .span8 {
+ width: 65.81196581200001%;
+ *width: 65.7587743226383%;
+ }
+ .sm .row-fluid .span7 {
+ width: 57.264957265%;
+ *width: 57.2117657756383%;
+ }
+ .sm .row-fluid .span6 {
+ width: 48.717948718%;
+ *width: 48.6647572286383%;
+ }
+ .sm .row-fluid .span5 {
+ width: 40.170940171000005%;
+ *width: 40.117748681638304%;
+ }
+ .sm .row-fluid .span4 {
+ width: 31.623931624%;
+ *width: 31.5707401346383%;
+ }
+ .sm .row-fluid .span3 {
+ width: 23.076923077%;
+ *width: 23.0237315876383%;
+ }
+ .sm .row-fluid .span2 {
+ width: 14.529914530000001%;
+ *width: 14.4767230406383%;
+ }
+ .sm .row-fluid .span1 {
+ width: 5.982905983%;
+ *width: 5.929714493638298%;
+ }
+ .sm input,
+ .sm textarea,
+ .sm .uneditable-input {
+ margin-left: 0;
+ }
+ .sm input.span12,
+ .sm textarea.span12,
+ .sm .uneditable-input.span12 {
+ width: 1160px;
+ }
+ .sm input.span11,
+ .sm textarea.span11,
+ .sm .uneditable-input.span11 {
+ width: 1060px;
+ }
+ .sm input.span10,
+ .sm textarea.span10,
+ .sm .uneditable-input.span10 {
+ width: 960px;
+ }
+ .sm input.span9,
+ .sm textarea.span9,
+ .sm .uneditable-input.span9 {
+ width: 860px;
+ }
+ .sm input.span8,
+ .sm textarea.span8,
+ .sm .uneditable-input.span8 {
+ width: 760px;
+ }
+ .sm input.span7,
+ .sm textarea.span7,
+ .sm .uneditable-input.span7 {
+ width: 660px;
+ }
+ .sm input.span6,
+ .sm textarea.span6,
+ .sm .uneditable-input.span6 {
+ width: 560px;
+ }
+ .sm input.span5,
+ .sm textarea.span5,
+ .sm .uneditable-input.span5 {
+ width: 460px;
+ }
+ .sm input.span4,
+ .sm textarea.span4,
+ .sm .uneditable-input.span4 {
+ width: 360px;
+ }
+ .sm input.span3,
+ .sm textarea.span3,
+ .sm .uneditable-input.span3 {
+ width: 260px;
+ }
+ .sm input.span2,
+ .sm textarea.span2,
+ .sm .uneditable-input.span2 {
+ width: 160px;
+ }
+ .sm input.span1,
+ .sm textarea.span1,
+ .sm .uneditable-input.span1 {
+ width: 60px;
+ }
+ .sm .thumbnails {
+ margin-left: -30px;
+ }
+ .sm .thumbnails > li {
+ margin-left: 30px;
+ }
+ .sm .row-fluid .thumbnails {
+ margin-left: 0;
+ }
+}
+@media (max-width: 979px) {
+ .sm body {
+ padding-top: 0;
+ }
+ .sm .navbar-fixed-top {
+ position: static;
+ margin-bottom: 18px;
+ }
+ .sm .navbar-fixed-top .navbar-inner {
+ padding: 5px;
+ }
+ .sm .navbar .container {
+ width: auto;
+ padding: 0;
+ }
+ .sm .navbar .brand {
+ padding-right: 10px;
+ padding-left: 10px;
+ margin: 0 0 0 -5px;
+ }
+ .sm .nav-collapse {
+ clear: both;
+ }
+ .sm .nav-collapse .nav {
+ float: none;
+ margin: 0 0 9px;
+ }
+ .sm .nav-collapse .nav > li {
+ float: none;
+ }
+ .sm .nav-collapse .nav > li > a {
+ margin-bottom: 2px;
+ }
+ .sm .nav-collapse .nav > .divider-vertical {
+ display: none;
+ }
+ .sm .nav-collapse .nav .nav-header {
+ color: #999999;
+ text-shadow: none;
+ }
+ .sm .nav-collapse .nav > li > a,
+ .sm .nav-collapse .dropdown-menu a {
+ padding: 6px 15px;
+ font-weight: bold;
+ color: #999999;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ }
+ .sm .nav-collapse .btn {
+ padding: 4px 10px 4px;
+ font-weight: normal;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ }
+ .sm .nav-collapse .dropdown-menu li + li a {
+ margin-bottom: 2px;
+ }
+ .sm .nav-collapse .nav > li > a:hover,
+ .sm .nav-collapse .dropdown-menu a:hover {
+ background-color: #222222;
+ }
+ .sm .nav-collapse.in .btn-group {
+ padding: 0;
+ margin-top: 5px;
+ }
+ .sm .nav-collapse .dropdown-menu {
+ position: static;
+ top: auto;
+ left: auto;
+ display: block;
+ float: none;
+ max-width: none;
+ padding: 0;
+ margin: 0 15px;
+ background-color: transparent;
+ border: none;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ }
+ .sm .nav-collapse .dropdown-menu:before,
+ .sm .nav-collapse .dropdown-menu:after {
+ display: none;
+ }
+ .sm .nav-collapse .dropdown-menu .divider {
+ display: none;
+ }
+ .sm .nav-collapse .navbar-form,
+ .sm .nav-collapse .navbar-search {
+ float: none;
+ padding: 9px 15px;
+ margin: 9px 0;
+ border-top: 1px solid #222222;
+ border-bottom: 1px solid #222222;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ }
+ .sm .navbar .nav-collapse .nav.pull-right {
+ float: none;
+ margin-left: 0;
+ }
+ .sm .nav-collapse,
+ .sm .nav-collapse.collapse {
+ height: 0;
+ overflow: hidden;
+ }
+ .sm .navbar .btn-navbar {
+ display: block;
+ }
+ .sm .navbar-static .navbar-inner {
+ padding-right: 10px;
+ padding-left: 10px;
+ }
+}
+@media (min-width: 980px) {
+ .sm .nav-collapse.collapse {
+ height: auto !important;
+ overflow: visible !important;
+ }
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/css/bootstrap/img/glyphicons-halflings.png b/sm-shop/src/main/webapp/resources/css/bootstrap/img/glyphicons-halflings.png
new file mode 100644
index 0000000..79bc568
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/css/bootstrap/img/glyphicons-halflings.png differ
diff --git a/sm-shop/src/main/webapp/resources/css/bootstrap/img/glyphicons-halflings-white.png b/sm-shop/src/main/webapp/resources/css/bootstrap/img/glyphicons-halflings-white.png
new file mode 100644
index 0000000..3bf6484
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/css/bootstrap/img/glyphicons-halflings-white.png differ
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome.css b/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome.css
new file mode 100644
index 0000000..7ede182
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome.css
@@ -0,0 +1,1479 @@
+/*!
+ * Font Awesome 3.2.1
+ * the iconic font designed for Bootstrap
+ * ------------------------------------------------------------------------------
+ * The full suite of pictographic icons, examples, and documentation can be
+ * found at http://fontawesome.io. Stay up to date on Twitter at
+ * http://twitter.com/fontawesome.
+ *
+ * License
+ * ------------------------------------------------------------------------------
+ * - The Font Awesome font is licensed under SIL OFL 1.1 -
+ * http://scripts.sil.org/OFL
+ * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
+ * http://opensource.org/licenses/mit-license.html
+ * - Font Awesome documentation licensed under CC BY 3.0 -
+ * http://creativecommons.org/licenses/by/3.0/
+ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
+ * "Font Awesome by Dave Gandy - http://fontawesome.io"
+ *
+ * Author - Dave Gandy
+ * ------------------------------------------------------------------------------
+ * Email: dave@fontawesome.io
+ * Twitter: http://twitter.com/davegandy
+ * Work: Lead Product Designer @ Kyruus - http://kyruus.com
+ */
+/* FONT PATH
+ * -------------------------- */
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('../font/fontawesome-webfont.eot?v=3.2.1');
+ src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+/* FONT AWESOME CORE
+ * -------------------------- */
+[class^="icon-"],
+[class*=" icon-"] {
+ font-family: FontAwesome;
+ font-weight: normal;
+ font-style: normal;
+ text-decoration: inherit;
+ -webkit-font-smoothing: antialiased;
+ *margin-right: .3em;
+}
+[class^="icon-"]:before,
+[class*=" icon-"]:before {
+ text-decoration: inherit;
+ display: inline-block;
+ speak: none;
+}
+/* makes the font 33% larger relative to the icon container */
+.icon-large:before {
+ vertical-align: -10%;
+ font-size: 1.3333333333333333em;
+}
+/* makes sure icons active on rollover in links */
+a [class^="icon-"],
+a [class*=" icon-"] {
+ display: inline;
+}
+/* increased font size for icon-large */
+[class^="icon-"].icon-fixed-width,
+[class*=" icon-"].icon-fixed-width {
+ display: inline-block;
+ width: 1.1428571428571428em;
+ text-align: right;
+ padding-right: 0.2857142857142857em;
+}
+[class^="icon-"].icon-fixed-width.icon-large,
+[class*=" icon-"].icon-fixed-width.icon-large {
+ width: 1.4285714285714286em;
+}
+.icons-ul {
+ margin-left: 2.142857142857143em;
+ list-style-type: none;
+}
+.icons-ul > li {
+ position: relative;
+}
+.icons-ul .icon-li {
+ position: absolute;
+ left: -2.142857142857143em;
+ width: 2.142857142857143em;
+ text-align: center;
+ line-height: inherit;
+}
+[class^="icon-"].hide,
+[class*=" icon-"].hide {
+ display: none;
+}
+.icon-muted {
+ color: #eeeeee;
+}
+.icon-light {
+ color: #ffffff;
+}
+.icon-dark {
+ color: #333333;
+}
+.icon-border {
+ border: solid 1px #eeeeee;
+ padding: .2em .25em .15em;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.icon-2x {
+ font-size: 2em;
+}
+.icon-2x.icon-border {
+ border-width: 2px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.icon-3x {
+ font-size: 3em;
+}
+.icon-3x.icon-border {
+ border-width: 3px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+.icon-4x {
+ font-size: 4em;
+}
+.icon-4x.icon-border {
+ border-width: 4px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.icon-5x {
+ font-size: 5em;
+}
+.icon-5x.icon-border {
+ border-width: 5px;
+ -webkit-border-radius: 7px;
+ -moz-border-radius: 7px;
+ border-radius: 7px;
+}
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+[class^="icon-"].pull-left,
+[class*=" icon-"].pull-left {
+ margin-right: .3em;
+}
+[class^="icon-"].pull-right,
+[class*=" icon-"].pull-right {
+ margin-left: .3em;
+}
+/* BOOTSTRAP SPECIFIC CLASSES
+ * -------------------------- */
+/* Bootstrap 2.0 sprites.less reset */
+[class^="icon-"],
+[class*=" icon-"] {
+ display: inline;
+ width: auto;
+ height: auto;
+ line-height: normal;
+ vertical-align: baseline;
+ background-image: none;
+ background-position: 0% 0%;
+ background-repeat: repeat;
+ margin-top: 0;
+}
+/* more sprites.less reset */
+.icon-white,
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"],
+.dropdown-submenu:hover > a > [class^="icon-"],
+.dropdown-submenu:hover > a > [class*=" icon-"] {
+ background-image: none;
+}
+/* keeps Bootstrap styles with and without icons the same */
+.btn [class^="icon-"].icon-large,
+.nav [class^="icon-"].icon-large,
+.btn [class*=" icon-"].icon-large,
+.nav [class*=" icon-"].icon-large {
+ line-height: .9em;
+}
+.btn [class^="icon-"].icon-spin,
+.nav [class^="icon-"].icon-spin,
+.btn [class*=" icon-"].icon-spin,
+.nav [class*=" icon-"].icon-spin {
+ display: inline-block;
+}
+.nav-tabs [class^="icon-"],
+.nav-pills [class^="icon-"],
+.nav-tabs [class*=" icon-"],
+.nav-pills [class*=" icon-"],
+.nav-tabs [class^="icon-"].icon-large,
+.nav-pills [class^="icon-"].icon-large,
+.nav-tabs [class*=" icon-"].icon-large,
+.nav-pills [class*=" icon-"].icon-large {
+ line-height: .9em;
+}
+.btn [class^="icon-"].pull-left.icon-2x,
+.btn [class*=" icon-"].pull-left.icon-2x,
+.btn [class^="icon-"].pull-right.icon-2x,
+.btn [class*=" icon-"].pull-right.icon-2x {
+ margin-top: .18em;
+}
+.btn [class^="icon-"].icon-spin.icon-large,
+.btn [class*=" icon-"].icon-spin.icon-large {
+ line-height: .8em;
+}
+.btn.btn-small [class^="icon-"].pull-left.icon-2x,
+.btn.btn-small [class*=" icon-"].pull-left.icon-2x,
+.btn.btn-small [class^="icon-"].pull-right.icon-2x,
+.btn.btn-small [class*=" icon-"].pull-right.icon-2x {
+ margin-top: .25em;
+}
+.btn.btn-large [class^="icon-"],
+.btn.btn-large [class*=" icon-"] {
+ margin-top: 0;
+}
+.btn.btn-large [class^="icon-"].pull-left.icon-2x,
+.btn.btn-large [class*=" icon-"].pull-left.icon-2x,
+.btn.btn-large [class^="icon-"].pull-right.icon-2x,
+.btn.btn-large [class*=" icon-"].pull-right.icon-2x {
+ margin-top: .05em;
+}
+.btn.btn-large [class^="icon-"].pull-left.icon-2x,
+.btn.btn-large [class*=" icon-"].pull-left.icon-2x {
+ margin-right: .2em;
+}
+.btn.btn-large [class^="icon-"].pull-right.icon-2x,
+.btn.btn-large [class*=" icon-"].pull-right.icon-2x {
+ margin-left: .2em;
+}
+/* Fixes alignment in nav lists */
+.nav-list [class^="icon-"],
+.nav-list [class*=" icon-"] {
+ line-height: inherit;
+}
+/* EXTRAS
+ * -------------------------- */
+/* Stacked and layered icon */
+.icon-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: -35%;
+}
+.icon-stack [class^="icon-"],
+.icon-stack [class*=" icon-"] {
+ display: block;
+ text-align: center;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ font-size: 1em;
+ line-height: inherit;
+ *line-height: 2em;
+}
+.icon-stack .icon-stack-base {
+ font-size: 2em;
+ *line-height: 1em;
+}
+/* Animated rotating icon */
+.icon-spin {
+ display: inline-block;
+ -moz-animation: spin 2s infinite linear;
+ -o-animation: spin 2s infinite linear;
+ -webkit-animation: spin 2s infinite linear;
+ animation: spin 2s infinite linear;
+}
+/* Prevent stack and spinners from being taken inline when inside a link */
+a .icon-stack,
+a .icon-spin {
+ display: inline-block;
+ text-decoration: none;
+}
+@-moz-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ }
+ 100% {
+ -moz-transform: rotate(359deg);
+ }
+}
+@-webkit-keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ }
+}
+@-o-keyframes spin {
+ 0% {
+ -o-transform: rotate(0deg);
+ }
+ 100% {
+ -o-transform: rotate(359deg);
+ }
+}
+@-ms-keyframes spin {
+ 0% {
+ -ms-transform: rotate(0deg);
+ }
+ 100% {
+ -ms-transform: rotate(359deg);
+ }
+}
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(359deg);
+ }
+}
+/* Icon rotations and mirroring */
+.icon-rotate-90:before {
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ transform: rotate(90deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+.icon-rotate-180:before {
+ -webkit-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ transform: rotate(180deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+}
+.icon-rotate-270:before {
+ -webkit-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ transform: rotate(270deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+.icon-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -moz-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ -o-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.icon-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -moz-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ -o-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+/* ensure rotation occurs inside anchor tags */
+a .icon-rotate-90:before,
+a .icon-rotate-180:before,
+a .icon-rotate-270:before,
+a .icon-flip-horizontal:before,
+a .icon-flip-vertical:before {
+ display: inline-block;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+.icon-glass:before {
+ content: "\f000";
+}
+.icon-music:before {
+ content: "\f001";
+}
+.icon-search:before {
+ content: "\f002";
+}
+.icon-envelope-alt:before {
+ content: "\f003";
+}
+.icon-heart:before {
+ content: "\f004";
+}
+.icon-star:before {
+ content: "\f005";
+}
+.icon-star-empty:before {
+ content: "\f006";
+}
+.icon-user:before {
+ content: "\f007";
+}
+.icon-film:before {
+ content: "\f008";
+}
+.icon-th-large:before {
+ content: "\f009";
+}
+.icon-th:before {
+ content: "\f00a";
+}
+.icon-th-list:before {
+ content: "\f00b";
+}
+.icon-ok:before {
+ content: "\f00c";
+}
+.icon-remove:before {
+ content: "\f00d";
+}
+.icon-zoom-in:before {
+ content: "\f00e";
+}
+.icon-zoom-out:before {
+ content: "\f010";
+}
+.icon-power-off:before,
+.icon-off:before {
+ content: "\f011";
+}
+.icon-signal:before {
+ content: "\f012";
+}
+.icon-gear:before,
+.icon-cog:before {
+ content: "\f013";
+}
+.icon-trash:before {
+ content: "\f014";
+}
+.icon-home:before {
+ content: "\f015";
+}
+.icon-file-alt:before {
+ content: "\f016";
+}
+.icon-time:before {
+ content: "\f017";
+}
+.icon-road:before {
+ content: "\f018";
+}
+.icon-download-alt:before {
+ content: "\f019";
+}
+.icon-download:before {
+ content: "\f01a";
+}
+.icon-upload:before {
+ content: "\f01b";
+}
+.icon-inbox:before {
+ content: "\f01c";
+}
+.icon-play-circle:before {
+ content: "\f01d";
+}
+.icon-rotate-right:before,
+.icon-repeat:before {
+ content: "\f01e";
+}
+.icon-refresh:before {
+ content: "\f021";
+}
+.icon-list-alt:before {
+ content: "\f022";
+}
+.icon-lock:before {
+ content: "\f023";
+}
+.icon-flag:before {
+ content: "\f024";
+}
+.icon-headphones:before {
+ content: "\f025";
+}
+.icon-volume-off:before {
+ content: "\f026";
+}
+.icon-volume-down:before {
+ content: "\f027";
+}
+.icon-volume-up:before {
+ content: "\f028";
+}
+.icon-qrcode:before {
+ content: "\f029";
+}
+.icon-barcode:before {
+ content: "\f02a";
+}
+.icon-tag:before {
+ content: "\f02b";
+}
+.icon-tags:before {
+ content: "\f02c";
+}
+.icon-book:before {
+ content: "\f02d";
+}
+.icon-bookmark:before {
+ content: "\f02e";
+}
+.icon-print:before {
+ content: "\f02f";
+}
+.icon-camera:before {
+ content: "\f030";
+}
+.icon-font:before {
+ content: "\f031";
+}
+.icon-bold:before {
+ content: "\f032";
+}
+.icon-italic:before {
+ content: "\f033";
+}
+.icon-text-height:before {
+ content: "\f034";
+}
+.icon-text-width:before {
+ content: "\f035";
+}
+.icon-align-left:before {
+ content: "\f036";
+}
+.icon-align-center:before {
+ content: "\f037";
+}
+.icon-align-right:before {
+ content: "\f038";
+}
+.icon-align-justify:before {
+ content: "\f039";
+}
+.icon-list:before {
+ content: "\f03a";
+}
+.icon-indent-left:before {
+ content: "\f03b";
+}
+.icon-indent-right:before {
+ content: "\f03c";
+}
+.icon-facetime-video:before {
+ content: "\f03d";
+}
+.icon-picture:before {
+ content: "\f03e";
+}
+.icon-pencil:before {
+ content: "\f040";
+}
+.icon-map-marker:before {
+ content: "\f041";
+}
+.icon-adjust:before {
+ content: "\f042";
+}
+.icon-tint:before {
+ content: "\f043";
+}
+.icon-edit:before {
+ content: "\f044";
+}
+.icon-share:before {
+ content: "\f045";
+}
+.icon-check:before {
+ content: "\f046";
+}
+.icon-move:before {
+ content: "\f047";
+}
+.icon-step-backward:before {
+ content: "\f048";
+}
+.icon-fast-backward:before {
+ content: "\f049";
+}
+.icon-backward:before {
+ content: "\f04a";
+}
+.icon-play:before {
+ content: "\f04b";
+}
+.icon-pause:before {
+ content: "\f04c";
+}
+.icon-stop:before {
+ content: "\f04d";
+}
+.icon-forward:before {
+ content: "\f04e";
+}
+.icon-fast-forward:before {
+ content: "\f050";
+}
+.icon-step-forward:before {
+ content: "\f051";
+}
+.icon-eject:before {
+ content: "\f052";
+}
+.icon-chevron-left:before {
+ content: "\f053";
+}
+.icon-chevron-right:before {
+ content: "\f054";
+}
+.icon-plus-sign:before {
+ content: "\f055";
+}
+.icon-minus-sign:before {
+ content: "\f056";
+}
+.icon-remove-sign:before {
+ content: "\f057";
+}
+.icon-ok-sign:before {
+ content: "\f058";
+}
+.icon-question-sign:before {
+ content: "\f059";
+}
+.icon-info-sign:before {
+ content: "\f05a";
+}
+.icon-screenshot:before {
+ content: "\f05b";
+}
+.icon-remove-circle:before {
+ content: "\f05c";
+}
+.icon-ok-circle:before {
+ content: "\f05d";
+}
+.icon-ban-circle:before {
+ content: "\f05e";
+}
+.icon-arrow-left:before {
+ content: "\f060";
+}
+.icon-arrow-right:before {
+ content: "\f061";
+}
+.icon-arrow-up:before {
+ content: "\f062";
+}
+.icon-arrow-down:before {
+ content: "\f063";
+}
+.icon-mail-forward:before,
+.icon-share-alt:before {
+ content: "\f064";
+}
+.icon-resize-full:before {
+ content: "\f065";
+}
+.icon-resize-small:before {
+ content: "\f066";
+}
+.icon-plus:before {
+ content: "\f067";
+}
+.icon-minus:before {
+ content: "\f068";
+}
+.icon-asterisk:before {
+ content: "\f069";
+}
+.icon-exclamation-sign:before {
+ content: "\f06a";
+}
+.icon-gift:before {
+ content: "\f06b";
+}
+.icon-leaf:before {
+ content: "\f06c";
+}
+.icon-fire:before {
+ content: "\f06d";
+}
+.icon-eye-open:before {
+ content: "\f06e";
+}
+.icon-eye-close:before {
+ content: "\f070";
+}
+.icon-warning-sign:before {
+ content: "\f071";
+}
+.icon-plane:before {
+ content: "\f072";
+}
+.icon-calendar:before {
+ content: "\f073";
+}
+.icon-random:before {
+ content: "\f074";
+}
+.icon-comment:before {
+ content: "\f075";
+}
+.icon-magnet:before {
+ content: "\f076";
+}
+.icon-chevron-up:before {
+ content: "\f077";
+}
+.icon-chevron-down:before {
+ content: "\f078";
+}
+.icon-retweet:before {
+ content: "\f079";
+}
+.icon-shopping-cart:before {
+ content: "\f07a";
+}
+.icon-folder-close:before {
+ content: "\f07b";
+}
+.icon-folder-open:before {
+ content: "\f07c";
+}
+.icon-resize-vertical:before {
+ content: "\f07d";
+}
+.icon-resize-horizontal:before {
+ content: "\f07e";
+}
+.icon-bar-chart:before {
+ content: "\f080";
+}
+.icon-twitter-sign:before {
+ content: "\f081";
+}
+.icon-facebook-sign:before {
+ content: "\f082";
+}
+.icon-camera-retro:before {
+ content: "\f083";
+}
+.icon-key:before {
+ content: "\f084";
+}
+.icon-gears:before,
+.icon-cogs:before {
+ content: "\f085";
+}
+.icon-comments:before {
+ content: "\f086";
+}
+.icon-thumbs-up-alt:before {
+ content: "\f087";
+}
+.icon-thumbs-down-alt:before {
+ content: "\f088";
+}
+.icon-star-half:before {
+ content: "\f089";
+}
+.icon-heart-empty:before {
+ content: "\f08a";
+}
+.icon-signout:before {
+ content: "\f08b";
+}
+.icon-linkedin-sign:before {
+ content: "\f08c";
+}
+.icon-pushpin:before {
+ content: "\f08d";
+}
+.icon-external-link:before {
+ content: "\f08e";
+}
+.icon-signin:before {
+ content: "\f090";
+}
+.icon-trophy:before {
+ content: "\f091";
+}
+.icon-github-sign:before {
+ content: "\f092";
+}
+.icon-upload-alt:before {
+ content: "\f093";
+}
+.icon-lemon:before {
+ content: "\f094";
+}
+.icon-phone:before {
+ content: "\f095";
+}
+.icon-unchecked:before,
+.icon-check-empty:before {
+ content: "\f096";
+}
+.icon-bookmark-empty:before {
+ content: "\f097";
+}
+.icon-phone-sign:before {
+ content: "\f098";
+}
+.icon-twitter:before {
+ content: "\f099";
+}
+.icon-facebook:before {
+ content: "\f09a";
+}
+.icon-github:before {
+ content: "\f09b";
+}
+.icon-unlock:before {
+ content: "\f09c";
+}
+.icon-credit-card:before {
+ content: "\f09d";
+}
+.icon-rss:before {
+ content: "\f09e";
+}
+.icon-hdd:before {
+ content: "\f0a0";
+}
+.icon-bullhorn:before {
+ content: "\f0a1";
+}
+.icon-bell:before {
+ content: "\f0a2";
+}
+.icon-certificate:before {
+ content: "\f0a3";
+}
+.icon-hand-right:before {
+ content: "\f0a4";
+}
+.icon-hand-left:before {
+ content: "\f0a5";
+}
+.icon-hand-up:before {
+ content: "\f0a6";
+}
+.icon-hand-down:before {
+ content: "\f0a7";
+}
+.icon-circle-arrow-left:before {
+ content: "\f0a8";
+}
+.icon-circle-arrow-right:before {
+ content: "\f0a9";
+}
+.icon-circle-arrow-up:before {
+ content: "\f0aa";
+}
+.icon-circle-arrow-down:before {
+ content: "\f0ab";
+}
+.icon-globe:before {
+ content: "\f0ac";
+}
+.icon-wrench:before {
+ content: "\f0ad";
+}
+.icon-tasks:before {
+ content: "\f0ae";
+}
+.icon-filter:before {
+ content: "\f0b0";
+}
+.icon-briefcase:before {
+ content: "\f0b1";
+}
+.icon-fullscreen:before {
+ content: "\f0b2";
+}
+.icon-group:before {
+ content: "\f0c0";
+}
+.icon-link:before {
+ content: "\f0c1";
+}
+.icon-cloud:before {
+ content: "\f0c2";
+}
+.icon-beaker:before {
+ content: "\f0c3";
+}
+.icon-cut:before {
+ content: "\f0c4";
+}
+.icon-copy:before {
+ content: "\f0c5";
+}
+.icon-paperclip:before,
+.icon-paper-clip:before {
+ content: "\f0c6";
+}
+.icon-save:before {
+ content: "\f0c7";
+}
+.icon-sign-blank:before {
+ content: "\f0c8";
+}
+.icon-reorder:before {
+ content: "\f0c9";
+}
+.icon-list-ul:before {
+ content: "\f0ca";
+}
+.icon-list-ol:before {
+ content: "\f0cb";
+}
+.icon-strikethrough:before {
+ content: "\f0cc";
+}
+.icon-underline:before {
+ content: "\f0cd";
+}
+.icon-table:before {
+ content: "\f0ce";
+}
+.icon-magic:before {
+ content: "\f0d0";
+}
+.icon-truck:before {
+ content: "\f0d1";
+}
+.icon-pinterest:before {
+ content: "\f0d2";
+}
+.icon-pinterest-sign:before {
+ content: "\f0d3";
+}
+.icon-google-plus-sign:before {
+ content: "\f0d4";
+}
+.icon-google-plus:before {
+ content: "\f0d5";
+}
+.icon-money:before {
+ content: "\f0d6";
+}
+.icon-caret-down:before {
+ content: "\f0d7";
+}
+.icon-caret-up:before {
+ content: "\f0d8";
+}
+.icon-caret-left:before {
+ content: "\f0d9";
+}
+.icon-caret-right:before {
+ content: "\f0da";
+}
+.icon-columns:before {
+ content: "\f0db";
+}
+.icon-sort:before {
+ content: "\f0dc";
+}
+.icon-sort-down:before {
+ content: "\f0dd";
+}
+.icon-sort-up:before {
+ content: "\f0de";
+}
+.icon-envelope:before {
+ content: "\f0e0";
+}
+.icon-linkedin:before {
+ content: "\f0e1";
+}
+.icon-rotate-left:before,
+.icon-undo:before {
+ content: "\f0e2";
+}
+.icon-legal:before {
+ content: "\f0e3";
+}
+.icon-dashboard:before {
+ content: "\f0e4";
+}
+.icon-comment-alt:before {
+ content: "\f0e5";
+}
+.icon-comments-alt:before {
+ content: "\f0e6";
+}
+.icon-bolt:before {
+ content: "\f0e7";
+}
+.icon-sitemap:before {
+ content: "\f0e8";
+}
+.icon-umbrella:before {
+ content: "\f0e9";
+}
+.icon-paste:before {
+ content: "\f0ea";
+}
+.icon-lightbulb:before {
+ content: "\f0eb";
+}
+.icon-exchange:before {
+ content: "\f0ec";
+}
+.icon-cloud-download:before {
+ content: "\f0ed";
+}
+.icon-cloud-upload:before {
+ content: "\f0ee";
+}
+.icon-user-md:before {
+ content: "\f0f0";
+}
+.icon-stethoscope:before {
+ content: "\f0f1";
+}
+.icon-suitcase:before {
+ content: "\f0f2";
+}
+.icon-bell-alt:before {
+ content: "\f0f3";
+}
+.icon-coffee:before {
+ content: "\f0f4";
+}
+.icon-food:before {
+ content: "\f0f5";
+}
+.icon-file-text-alt:before {
+ content: "\f0f6";
+}
+.icon-building:before {
+ content: "\f0f7";
+}
+.icon-hospital:before {
+ content: "\f0f8";
+}
+.icon-ambulance:before {
+ content: "\f0f9";
+}
+.icon-medkit:before {
+ content: "\f0fa";
+}
+.icon-fighter-jet:before {
+ content: "\f0fb";
+}
+.icon-beer:before {
+ content: "\f0fc";
+}
+.icon-h-sign:before {
+ content: "\f0fd";
+}
+.icon-plus-sign-alt:before {
+ content: "\f0fe";
+}
+.icon-double-angle-left:before {
+ content: "\f100";
+}
+.icon-double-angle-right:before {
+ content: "\f101";
+}
+.icon-double-angle-up:before {
+ content: "\f102";
+}
+.icon-double-angle-down:before {
+ content: "\f103";
+}
+.icon-angle-left:before {
+ content: "\f104";
+}
+.icon-angle-right:before {
+ content: "\f105";
+}
+.icon-angle-up:before {
+ content: "\f106";
+}
+.icon-angle-down:before {
+ content: "\f107";
+}
+.icon-desktop:before {
+ content: "\f108";
+}
+.icon-laptop:before {
+ content: "\f109";
+}
+.icon-tablet:before {
+ content: "\f10a";
+}
+.icon-mobile-phone:before {
+ content: "\f10b";
+}
+.icon-circle-blank:before {
+ content: "\f10c";
+}
+.icon-quote-left:before {
+ content: "\f10d";
+}
+.icon-quote-right:before {
+ content: "\f10e";
+}
+.icon-spinner:before {
+ content: "\f110";
+}
+.icon-circle:before {
+ content: "\f111";
+}
+.icon-mail-reply:before,
+.icon-reply:before {
+ content: "\f112";
+}
+.icon-github-alt:before {
+ content: "\f113";
+}
+.icon-folder-close-alt:before {
+ content: "\f114";
+}
+.icon-folder-open-alt:before {
+ content: "\f115";
+}
+.icon-expand-alt:before {
+ content: "\f116";
+}
+.icon-collapse-alt:before {
+ content: "\f117";
+}
+.icon-smile:before {
+ content: "\f118";
+}
+.icon-frown:before {
+ content: "\f119";
+}
+.icon-meh:before {
+ content: "\f11a";
+}
+.icon-gamepad:before {
+ content: "\f11b";
+}
+.icon-keyboard:before {
+ content: "\f11c";
+}
+.icon-flag-alt:before {
+ content: "\f11d";
+}
+.icon-flag-checkered:before {
+ content: "\f11e";
+}
+.icon-terminal:before {
+ content: "\f120";
+}
+.icon-code:before {
+ content: "\f121";
+}
+.icon-reply-all:before {
+ content: "\f122";
+}
+.icon-mail-reply-all:before {
+ content: "\f122";
+}
+.icon-star-half-full:before,
+.icon-star-half-empty:before {
+ content: "\f123";
+}
+.icon-location-arrow:before {
+ content: "\f124";
+}
+.icon-crop:before {
+ content: "\f125";
+}
+.icon-code-fork:before {
+ content: "\f126";
+}
+.icon-unlink:before {
+ content: "\f127";
+}
+.icon-question:before {
+ content: "\f128";
+}
+.icon-info:before {
+ content: "\f129";
+}
+.icon-exclamation:before {
+ content: "\f12a";
+}
+.icon-superscript:before {
+ content: "\f12b";
+}
+.icon-subscript:before {
+ content: "\f12c";
+}
+.icon-eraser:before {
+ content: "\f12d";
+}
+.icon-puzzle-piece:before {
+ content: "\f12e";
+}
+.icon-microphone:before {
+ content: "\f130";
+}
+.icon-microphone-off:before {
+ content: "\f131";
+}
+.icon-shield:before {
+ content: "\f132";
+}
+.icon-calendar-empty:before {
+ content: "\f133";
+}
+.icon-fire-extinguisher:before {
+ content: "\f134";
+}
+.icon-rocket:before {
+ content: "\f135";
+}
+.icon-maxcdn:before {
+ content: "\f136";
+}
+.icon-chevron-sign-left:before {
+ content: "\f137";
+}
+.icon-chevron-sign-right:before {
+ content: "\f138";
+}
+.icon-chevron-sign-up:before {
+ content: "\f139";
+}
+.icon-chevron-sign-down:before {
+ content: "\f13a";
+}
+.icon-html5:before {
+ content: "\f13b";
+}
+.icon-css3:before {
+ content: "\f13c";
+}
+.icon-anchor:before {
+ content: "\f13d";
+}
+.icon-unlock-alt:before {
+ content: "\f13e";
+}
+.icon-bullseye:before {
+ content: "\f140";
+}
+.icon-ellipsis-horizontal:before {
+ content: "\f141";
+}
+.icon-ellipsis-vertical:before {
+ content: "\f142";
+}
+.icon-rss-sign:before {
+ content: "\f143";
+}
+.icon-play-sign:before {
+ content: "\f144";
+}
+.icon-ticket:before {
+ content: "\f145";
+}
+.icon-minus-sign-alt:before {
+ content: "\f146";
+}
+.icon-check-minus:before {
+ content: "\f147";
+}
+.icon-level-up:before {
+ content: "\f148";
+}
+.icon-level-down:before {
+ content: "\f149";
+}
+.icon-check-sign:before {
+ content: "\f14a";
+}
+.icon-edit-sign:before {
+ content: "\f14b";
+}
+.icon-external-link-sign:before {
+ content: "\f14c";
+}
+.icon-share-sign:before {
+ content: "\f14d";
+}
+.icon-compass:before {
+ content: "\f14e";
+}
+.icon-collapse:before {
+ content: "\f150";
+}
+.icon-collapse-top:before {
+ content: "\f151";
+}
+.icon-expand:before {
+ content: "\f152";
+}
+.icon-euro:before,
+.icon-eur:before {
+ content: "\f153";
+}
+.icon-gbp:before {
+ content: "\f154";
+}
+.icon-dollar:before,
+.icon-usd:before {
+ content: "\f155";
+}
+.icon-rupee:before,
+.icon-inr:before {
+ content: "\f156";
+}
+.icon-yen:before,
+.icon-jpy:before {
+ content: "\f157";
+}
+.icon-renminbi:before,
+.icon-cny:before {
+ content: "\f158";
+}
+.icon-won:before,
+.icon-krw:before {
+ content: "\f159";
+}
+.icon-bitcoin:before,
+.icon-btc:before {
+ content: "\f15a";
+}
+.icon-file:before {
+ content: "\f15b";
+}
+.icon-file-text:before {
+ content: "\f15c";
+}
+.icon-sort-by-alphabet:before {
+ content: "\f15d";
+}
+.icon-sort-by-alphabet-alt:before {
+ content: "\f15e";
+}
+.icon-sort-by-attributes:before {
+ content: "\f160";
+}
+.icon-sort-by-attributes-alt:before {
+ content: "\f161";
+}
+.icon-sort-by-order:before {
+ content: "\f162";
+}
+.icon-sort-by-order-alt:before {
+ content: "\f163";
+}
+.icon-thumbs-up:before {
+ content: "\f164";
+}
+.icon-thumbs-down:before {
+ content: "\f165";
+}
+.icon-youtube-sign:before {
+ content: "\f166";
+}
+.icon-youtube:before {
+ content: "\f167";
+}
+.icon-xing:before {
+ content: "\f168";
+}
+.icon-xing-sign:before {
+ content: "\f169";
+}
+.icon-youtube-play:before {
+ content: "\f16a";
+}
+.icon-dropbox:before {
+ content: "\f16b";
+}
+.icon-stackexchange:before {
+ content: "\f16c";
+}
+.icon-instagram:before {
+ content: "\f16d";
+}
+.icon-flickr:before {
+ content: "\f16e";
+}
+.icon-adn:before {
+ content: "\f170";
+}
+.icon-bitbucket:before {
+ content: "\f171";
+}
+.icon-bitbucket-sign:before {
+ content: "\f172";
+}
+.icon-tumblr:before {
+ content: "\f173";
+}
+.icon-tumblr-sign:before {
+ content: "\f174";
+}
+.icon-long-arrow-down:before {
+ content: "\f175";
+}
+.icon-long-arrow-up:before {
+ content: "\f176";
+}
+.icon-long-arrow-left:before {
+ content: "\f177";
+}
+.icon-long-arrow-right:before {
+ content: "\f178";
+}
+.icon-apple:before {
+ content: "\f179";
+}
+.icon-windows:before {
+ content: "\f17a";
+}
+.icon-android:before {
+ content: "\f17b";
+}
+.icon-linux:before {
+ content: "\f17c";
+}
+.icon-dribbble:before {
+ content: "\f17d";
+}
+.icon-skype:before {
+ content: "\f17e";
+}
+.icon-foursquare:before {
+ content: "\f180";
+}
+.icon-trello:before {
+ content: "\f181";
+}
+.icon-female:before {
+ content: "\f182";
+}
+.icon-male:before {
+ content: "\f183";
+}
+.icon-gittip:before {
+ content: "\f184";
+}
+.icon-sun:before {
+ content: "\f185";
+}
+.icon-moon:before {
+ content: "\f186";
+}
+.icon-archive:before {
+ content: "\f187";
+}
+.icon-bug:before {
+ content: "\f188";
+}
+.icon-vk:before {
+ content: "\f189";
+}
+.icon-weibo:before {
+ content: "\f18a";
+}
+.icon-renren:before {
+ content: "\f18b";
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome.min.css b/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome.min.css
new file mode 100644
index 0000000..866437f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome.min.css
@@ -0,0 +1,403 @@
+@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=3.2.1');src:url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'),url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'),url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'),url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;}
+[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;}
+.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;}
+a [class^="icon-"],a [class*=" icon-"]{display:inline;}
+[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:0.2857142857142857em;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em;}
+.icons-ul{margin-left:2.142857142857143em;list-style-type:none;}.icons-ul>li{position:relative;}
+.icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit;}
+[class^="icon-"].hide,[class*=" icon-"].hide{display:none;}
+.icon-muted{color:#eeeeee;}
+.icon-light{color:#ffffff;}
+.icon-dark{color:#333333;}
+.icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
+.icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+.icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
+.icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;}
+.pull-right{float:right;}
+.pull-left{float:left;}
+[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;}
+[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;}
+[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;}
+.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;}
+.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;}
+.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;}
+.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;}
+.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;}
+.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;}
+.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;}
+.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;}
+.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;}
+.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;}
+.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{line-height:inherit;}
+.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;}
+.icon-stack .icon-stack-base{font-size:2em;*line-height:1em;}
+.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;}
+a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none;}
+@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);}
+.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);}
+.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}
+.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);}
+.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);}
+a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block;}
+.icon-glass:before{content:"\f000";}
+.icon-music:before{content:"\f001";}
+.icon-search:before{content:"\f002";}
+.icon-envelope-alt:before{content:"\f003";}
+.icon-heart:before{content:"\f004";}
+.icon-star:before{content:"\f005";}
+.icon-star-empty:before{content:"\f006";}
+.icon-user:before{content:"\f007";}
+.icon-film:before{content:"\f008";}
+.icon-th-large:before{content:"\f009";}
+.icon-th:before{content:"\f00a";}
+.icon-th-list:before{content:"\f00b";}
+.icon-ok:before{content:"\f00c";}
+.icon-remove:before{content:"\f00d";}
+.icon-zoom-in:before{content:"\f00e";}
+.icon-zoom-out:before{content:"\f010";}
+.icon-power-off:before,.icon-off:before{content:"\f011";}
+.icon-signal:before{content:"\f012";}
+.icon-gear:before,.icon-cog:before{content:"\f013";}
+.icon-trash:before{content:"\f014";}
+.icon-home:before{content:"\f015";}
+.icon-file-alt:before{content:"\f016";}
+.icon-time:before{content:"\f017";}
+.icon-road:before{content:"\f018";}
+.icon-download-alt:before{content:"\f019";}
+.icon-download:before{content:"\f01a";}
+.icon-upload:before{content:"\f01b";}
+.icon-inbox:before{content:"\f01c";}
+.icon-play-circle:before{content:"\f01d";}
+.icon-rotate-right:before,.icon-repeat:before{content:"\f01e";}
+.icon-refresh:before{content:"\f021";}
+.icon-list-alt:before{content:"\f022";}
+.icon-lock:before{content:"\f023";}
+.icon-flag:before{content:"\f024";}
+.icon-headphones:before{content:"\f025";}
+.icon-volume-off:before{content:"\f026";}
+.icon-volume-down:before{content:"\f027";}
+.icon-volume-up:before{content:"\f028";}
+.icon-qrcode:before{content:"\f029";}
+.icon-barcode:before{content:"\f02a";}
+.icon-tag:before{content:"\f02b";}
+.icon-tags:before{content:"\f02c";}
+.icon-book:before{content:"\f02d";}
+.icon-bookmark:before{content:"\f02e";}
+.icon-print:before{content:"\f02f";}
+.icon-camera:before{content:"\f030";}
+.icon-font:before{content:"\f031";}
+.icon-bold:before{content:"\f032";}
+.icon-italic:before{content:"\f033";}
+.icon-text-height:before{content:"\f034";}
+.icon-text-width:before{content:"\f035";}
+.icon-align-left:before{content:"\f036";}
+.icon-align-center:before{content:"\f037";}
+.icon-align-right:before{content:"\f038";}
+.icon-align-justify:before{content:"\f039";}
+.icon-list:before{content:"\f03a";}
+.icon-indent-left:before{content:"\f03b";}
+.icon-indent-right:before{content:"\f03c";}
+.icon-facetime-video:before{content:"\f03d";}
+.icon-picture:before{content:"\f03e";}
+.icon-pencil:before{content:"\f040";}
+.icon-map-marker:before{content:"\f041";}
+.icon-adjust:before{content:"\f042";}
+.icon-tint:before{content:"\f043";}
+.icon-edit:before{content:"\f044";}
+.icon-share:before{content:"\f045";}
+.icon-check:before{content:"\f046";}
+.icon-move:before{content:"\f047";}
+.icon-step-backward:before{content:"\f048";}
+.icon-fast-backward:before{content:"\f049";}
+.icon-backward:before{content:"\f04a";}
+.icon-play:before{content:"\f04b";}
+.icon-pause:before{content:"\f04c";}
+.icon-stop:before{content:"\f04d";}
+.icon-forward:before{content:"\f04e";}
+.icon-fast-forward:before{content:"\f050";}
+.icon-step-forward:before{content:"\f051";}
+.icon-eject:before{content:"\f052";}
+.icon-chevron-left:before{content:"\f053";}
+.icon-chevron-right:before{content:"\f054";}
+.icon-plus-sign:before{content:"\f055";}
+.icon-minus-sign:before{content:"\f056";}
+.icon-remove-sign:before{content:"\f057";}
+.icon-ok-sign:before{content:"\f058";}
+.icon-question-sign:before{content:"\f059";}
+.icon-info-sign:before{content:"\f05a";}
+.icon-screenshot:before{content:"\f05b";}
+.icon-remove-circle:before{content:"\f05c";}
+.icon-ok-circle:before{content:"\f05d";}
+.icon-ban-circle:before{content:"\f05e";}
+.icon-arrow-left:before{content:"\f060";}
+.icon-arrow-right:before{content:"\f061";}
+.icon-arrow-up:before{content:"\f062";}
+.icon-arrow-down:before{content:"\f063";}
+.icon-mail-forward:before,.icon-share-alt:before{content:"\f064";}
+.icon-resize-full:before{content:"\f065";}
+.icon-resize-small:before{content:"\f066";}
+.icon-plus:before{content:"\f067";}
+.icon-minus:before{content:"\f068";}
+.icon-asterisk:before{content:"\f069";}
+.icon-exclamation-sign:before{content:"\f06a";}
+.icon-gift:before{content:"\f06b";}
+.icon-leaf:before{content:"\f06c";}
+.icon-fire:before{content:"\f06d";}
+.icon-eye-open:before{content:"\f06e";}
+.icon-eye-close:before{content:"\f070";}
+.icon-warning-sign:before{content:"\f071";}
+.icon-plane:before{content:"\f072";}
+.icon-calendar:before{content:"\f073";}
+.icon-random:before{content:"\f074";}
+.icon-comment:before{content:"\f075";}
+.icon-magnet:before{content:"\f076";}
+.icon-chevron-up:before{content:"\f077";}
+.icon-chevron-down:before{content:"\f078";}
+.icon-retweet:before{content:"\f079";}
+.icon-shopping-cart:before{content:"\f07a";}
+.icon-folder-close:before{content:"\f07b";}
+.icon-folder-open:before{content:"\f07c";}
+.icon-resize-vertical:before{content:"\f07d";}
+.icon-resize-horizontal:before{content:"\f07e";}
+.icon-bar-chart:before{content:"\f080";}
+.icon-twitter-sign:before{content:"\f081";}
+.icon-facebook-sign:before{content:"\f082";}
+.icon-camera-retro:before{content:"\f083";}
+.icon-key:before{content:"\f084";}
+.icon-gears:before,.icon-cogs:before{content:"\f085";}
+.icon-comments:before{content:"\f086";}
+.icon-thumbs-up-alt:before{content:"\f087";}
+.icon-thumbs-down-alt:before{content:"\f088";}
+.icon-star-half:before{content:"\f089";}
+.icon-heart-empty:before{content:"\f08a";}
+.icon-signout:before{content:"\f08b";}
+.icon-linkedin-sign:before{content:"\f08c";}
+.icon-pushpin:before{content:"\f08d";}
+.icon-external-link:before{content:"\f08e";}
+.icon-signin:before{content:"\f090";}
+.icon-trophy:before{content:"\f091";}
+.icon-github-sign:before{content:"\f092";}
+.icon-upload-alt:before{content:"\f093";}
+.icon-lemon:before{content:"\f094";}
+.icon-phone:before{content:"\f095";}
+.icon-unchecked:before,.icon-check-empty:before{content:"\f096";}
+.icon-bookmark-empty:before{content:"\f097";}
+.icon-phone-sign:before{content:"\f098";}
+.icon-twitter:before{content:"\f099";}
+.icon-facebook:before{content:"\f09a";}
+.icon-github:before{content:"\f09b";}
+.icon-unlock:before{content:"\f09c";}
+.icon-credit-card:before{content:"\f09d";}
+.icon-rss:before{content:"\f09e";}
+.icon-hdd:before{content:"\f0a0";}
+.icon-bullhorn:before{content:"\f0a1";}
+.icon-bell:before{content:"\f0a2";}
+.icon-certificate:before{content:"\f0a3";}
+.icon-hand-right:before{content:"\f0a4";}
+.icon-hand-left:before{content:"\f0a5";}
+.icon-hand-up:before{content:"\f0a6";}
+.icon-hand-down:before{content:"\f0a7";}
+.icon-circle-arrow-left:before{content:"\f0a8";}
+.icon-circle-arrow-right:before{content:"\f0a9";}
+.icon-circle-arrow-up:before{content:"\f0aa";}
+.icon-circle-arrow-down:before{content:"\f0ab";}
+.icon-globe:before{content:"\f0ac";}
+.icon-wrench:before{content:"\f0ad";}
+.icon-tasks:before{content:"\f0ae";}
+.icon-filter:before{content:"\f0b0";}
+.icon-briefcase:before{content:"\f0b1";}
+.icon-fullscreen:before{content:"\f0b2";}
+.icon-group:before{content:"\f0c0";}
+.icon-link:before{content:"\f0c1";}
+.icon-cloud:before{content:"\f0c2";}
+.icon-beaker:before{content:"\f0c3";}
+.icon-cut:before{content:"\f0c4";}
+.icon-copy:before{content:"\f0c5";}
+.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6";}
+.icon-save:before{content:"\f0c7";}
+.icon-sign-blank:before{content:"\f0c8";}
+.icon-reorder:before{content:"\f0c9";}
+.icon-list-ul:before{content:"\f0ca";}
+.icon-list-ol:before{content:"\f0cb";}
+.icon-strikethrough:before{content:"\f0cc";}
+.icon-underline:before{content:"\f0cd";}
+.icon-table:before{content:"\f0ce";}
+.icon-magic:before{content:"\f0d0";}
+.icon-truck:before{content:"\f0d1";}
+.icon-pinterest:before{content:"\f0d2";}
+.icon-pinterest-sign:before{content:"\f0d3";}
+.icon-google-plus-sign:before{content:"\f0d4";}
+.icon-google-plus:before{content:"\f0d5";}
+.icon-money:before{content:"\f0d6";}
+.icon-caret-down:before{content:"\f0d7";}
+.icon-caret-up:before{content:"\f0d8";}
+.icon-caret-left:before{content:"\f0d9";}
+.icon-caret-right:before{content:"\f0da";}
+.icon-columns:before{content:"\f0db";}
+.icon-sort:before{content:"\f0dc";}
+.icon-sort-down:before{content:"\f0dd";}
+.icon-sort-up:before{content:"\f0de";}
+.icon-envelope:before{content:"\f0e0";}
+.icon-linkedin:before{content:"\f0e1";}
+.icon-rotate-left:before,.icon-undo:before{content:"\f0e2";}
+.icon-legal:before{content:"\f0e3";}
+.icon-dashboard:before{content:"\f0e4";}
+.icon-comment-alt:before{content:"\f0e5";}
+.icon-comments-alt:before{content:"\f0e6";}
+.icon-bolt:before{content:"\f0e7";}
+.icon-sitemap:before{content:"\f0e8";}
+.icon-umbrella:before{content:"\f0e9";}
+.icon-paste:before{content:"\f0ea";}
+.icon-lightbulb:before{content:"\f0eb";}
+.icon-exchange:before{content:"\f0ec";}
+.icon-cloud-download:before{content:"\f0ed";}
+.icon-cloud-upload:before{content:"\f0ee";}
+.icon-user-md:before{content:"\f0f0";}
+.icon-stethoscope:before{content:"\f0f1";}
+.icon-suitcase:before{content:"\f0f2";}
+.icon-bell-alt:before{content:"\f0f3";}
+.icon-coffee:before{content:"\f0f4";}
+.icon-food:before{content:"\f0f5";}
+.icon-file-text-alt:before{content:"\f0f6";}
+.icon-building:before{content:"\f0f7";}
+.icon-hospital:before{content:"\f0f8";}
+.icon-ambulance:before{content:"\f0f9";}
+.icon-medkit:before{content:"\f0fa";}
+.icon-fighter-jet:before{content:"\f0fb";}
+.icon-beer:before{content:"\f0fc";}
+.icon-h-sign:before{content:"\f0fd";}
+.icon-plus-sign-alt:before{content:"\f0fe";}
+.icon-double-angle-left:before{content:"\f100";}
+.icon-double-angle-right:before{content:"\f101";}
+.icon-double-angle-up:before{content:"\f102";}
+.icon-double-angle-down:before{content:"\f103";}
+.icon-angle-left:before{content:"\f104";}
+.icon-angle-right:before{content:"\f105";}
+.icon-angle-up:before{content:"\f106";}
+.icon-angle-down:before{content:"\f107";}
+.icon-desktop:before{content:"\f108";}
+.icon-laptop:before{content:"\f109";}
+.icon-tablet:before{content:"\f10a";}
+.icon-mobile-phone:before{content:"\f10b";}
+.icon-circle-blank:before{content:"\f10c";}
+.icon-quote-left:before{content:"\f10d";}
+.icon-quote-right:before{content:"\f10e";}
+.icon-spinner:before{content:"\f110";}
+.icon-circle:before{content:"\f111";}
+.icon-mail-reply:before,.icon-reply:before{content:"\f112";}
+.icon-github-alt:before{content:"\f113";}
+.icon-folder-close-alt:before{content:"\f114";}
+.icon-folder-open-alt:before{content:"\f115";}
+.icon-expand-alt:before{content:"\f116";}
+.icon-collapse-alt:before{content:"\f117";}
+.icon-smile:before{content:"\f118";}
+.icon-frown:before{content:"\f119";}
+.icon-meh:before{content:"\f11a";}
+.icon-gamepad:before{content:"\f11b";}
+.icon-keyboard:before{content:"\f11c";}
+.icon-flag-alt:before{content:"\f11d";}
+.icon-flag-checkered:before{content:"\f11e";}
+.icon-terminal:before{content:"\f120";}
+.icon-code:before{content:"\f121";}
+.icon-reply-all:before{content:"\f122";}
+.icon-mail-reply-all:before{content:"\f122";}
+.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";}
+.icon-location-arrow:before{content:"\f124";}
+.icon-crop:before{content:"\f125";}
+.icon-code-fork:before{content:"\f126";}
+.icon-unlink:before{content:"\f127";}
+.icon-question:before{content:"\f128";}
+.icon-info:before{content:"\f129";}
+.icon-exclamation:before{content:"\f12a";}
+.icon-superscript:before{content:"\f12b";}
+.icon-subscript:before{content:"\f12c";}
+.icon-eraser:before{content:"\f12d";}
+.icon-puzzle-piece:before{content:"\f12e";}
+.icon-microphone:before{content:"\f130";}
+.icon-microphone-off:before{content:"\f131";}
+.icon-shield:before{content:"\f132";}
+.icon-calendar-empty:before{content:"\f133";}
+.icon-fire-extinguisher:before{content:"\f134";}
+.icon-rocket:before{content:"\f135";}
+.icon-maxcdn:before{content:"\f136";}
+.icon-chevron-sign-left:before{content:"\f137";}
+.icon-chevron-sign-right:before{content:"\f138";}
+.icon-chevron-sign-up:before{content:"\f139";}
+.icon-chevron-sign-down:before{content:"\f13a";}
+.icon-html5:before{content:"\f13b";}
+.icon-css3:before{content:"\f13c";}
+.icon-anchor:before{content:"\f13d";}
+.icon-unlock-alt:before{content:"\f13e";}
+.icon-bullseye:before{content:"\f140";}
+.icon-ellipsis-horizontal:before{content:"\f141";}
+.icon-ellipsis-vertical:before{content:"\f142";}
+.icon-rss-sign:before{content:"\f143";}
+.icon-play-sign:before{content:"\f144";}
+.icon-ticket:before{content:"\f145";}
+.icon-minus-sign-alt:before{content:"\f146";}
+.icon-check-minus:before{content:"\f147";}
+.icon-level-up:before{content:"\f148";}
+.icon-level-down:before{content:"\f149";}
+.icon-check-sign:before{content:"\f14a";}
+.icon-edit-sign:before{content:"\f14b";}
+.icon-external-link-sign:before{content:"\f14c";}
+.icon-share-sign:before{content:"\f14d";}
+.icon-compass:before{content:"\f14e";}
+.icon-collapse:before{content:"\f150";}
+.icon-collapse-top:before{content:"\f151";}
+.icon-expand:before{content:"\f152";}
+.icon-euro:before,.icon-eur:before{content:"\f153";}
+.icon-gbp:before{content:"\f154";}
+.icon-dollar:before,.icon-usd:before{content:"\f155";}
+.icon-rupee:before,.icon-inr:before{content:"\f156";}
+.icon-yen:before,.icon-jpy:before{content:"\f157";}
+.icon-renminbi:before,.icon-cny:before{content:"\f158";}
+.icon-won:before,.icon-krw:before{content:"\f159";}
+.icon-bitcoin:before,.icon-btc:before{content:"\f15a";}
+.icon-file:before{content:"\f15b";}
+.icon-file-text:before{content:"\f15c";}
+.icon-sort-by-alphabet:before{content:"\f15d";}
+.icon-sort-by-alphabet-alt:before{content:"\f15e";}
+.icon-sort-by-attributes:before{content:"\f160";}
+.icon-sort-by-attributes-alt:before{content:"\f161";}
+.icon-sort-by-order:before{content:"\f162";}
+.icon-sort-by-order-alt:before{content:"\f163";}
+.icon-thumbs-up:before{content:"\f164";}
+.icon-thumbs-down:before{content:"\f165";}
+.icon-youtube-sign:before{content:"\f166";}
+.icon-youtube:before{content:"\f167";}
+.icon-xing:before{content:"\f168";}
+.icon-xing-sign:before{content:"\f169";}
+.icon-youtube-play:before{content:"\f16a";}
+.icon-dropbox:before{content:"\f16b";}
+.icon-stackexchange:before{content:"\f16c";}
+.icon-instagram:before{content:"\f16d";}
+.icon-flickr:before{content:"\f16e";}
+.icon-adn:before{content:"\f170";}
+.icon-bitbucket:before{content:"\f171";}
+.icon-bitbucket-sign:before{content:"\f172";}
+.icon-tumblr:before{content:"\f173";}
+.icon-tumblr-sign:before{content:"\f174";}
+.icon-long-arrow-down:before{content:"\f175";}
+.icon-long-arrow-up:before{content:"\f176";}
+.icon-long-arrow-left:before{content:"\f177";}
+.icon-long-arrow-right:before{content:"\f178";}
+.icon-apple:before{content:"\f179";}
+.icon-windows:before{content:"\f17a";}
+.icon-android:before{content:"\f17b";}
+.icon-linux:before{content:"\f17c";}
+.icon-dribbble:before{content:"\f17d";}
+.icon-skype:before{content:"\f17e";}
+.icon-foursquare:before{content:"\f180";}
+.icon-trello:before{content:"\f181";}
+.icon-female:before{content:"\f182";}
+.icon-male:before{content:"\f183";}
+.icon-gittip:before{content:"\f184";}
+.icon-sun:before{content:"\f185";}
+.icon-moon:before{content:"\f186";}
+.icon-archive:before{content:"\f187";}
+.icon-bug:before{content:"\f188";}
+.icon-vk:before{content:"\f189";}
+.icon-weibo:before{content:"\f18a";}
+.icon-renren:before{content:"\f18b";}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome-ie7.css b/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome-ie7.css
new file mode 100644
index 0000000..17f0776
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome-ie7.css
@@ -0,0 +1,1203 @@
+/*!
+ * Font Awesome 3.2.1
+ * the iconic font designed for Bootstrap
+ * ------------------------------------------------------------------------------
+ * The full suite of pictographic icons, examples, and documentation can be
+ * found at http://fontawesome.io. Stay up to date on Twitter at
+ * http://twitter.com/fontawesome.
+ *
+ * License
+ * ------------------------------------------------------------------------------
+ * - The Font Awesome font is licensed under SIL OFL 1.1 -
+ * http://scripts.sil.org/OFL
+ * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
+ * http://opensource.org/licenses/mit-license.html
+ * - Font Awesome documentation licensed under CC BY 3.0 -
+ * http://creativecommons.org/licenses/by/3.0/
+ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
+ * "Font Awesome by Dave Gandy - http://fontawesome.io"
+ *
+ * Author - Dave Gandy
+ * ------------------------------------------------------------------------------
+ * Email: dave@fontawesome.io
+ * Twitter: http://twitter.com/davegandy
+ * Work: Lead Product Designer @ Kyruus - http://kyruus.com
+ */
+.icon-large {
+ font-size: 1.3333333333333333em;
+ margin-top: -4px;
+ padding-top: 3px;
+ margin-bottom: -4px;
+ padding-bottom: 3px;
+ vertical-align: middle;
+}
+.nav [class^="icon-"],
+.nav [class*=" icon-"] {
+ vertical-align: inherit;
+ margin-top: -4px;
+ padding-top: 3px;
+ margin-bottom: -4px;
+ padding-bottom: 3px;
+}
+.nav [class^="icon-"].icon-large,
+.nav [class*=" icon-"].icon-large {
+ vertical-align: -25%;
+}
+.nav-pills [class^="icon-"].icon-large,
+.nav-tabs [class^="icon-"].icon-large,
+.nav-pills [class*=" icon-"].icon-large,
+.nav-tabs [class*=" icon-"].icon-large {
+ line-height: .75em;
+ margin-top: -7px;
+ padding-top: 5px;
+ margin-bottom: -5px;
+ padding-bottom: 4px;
+}
+.btn [class^="icon-"].pull-left,
+.btn [class*=" icon-"].pull-left,
+.btn [class^="icon-"].pull-right,
+.btn [class*=" icon-"].pull-right {
+ vertical-align: inherit;
+}
+.btn [class^="icon-"].icon-large,
+.btn [class*=" icon-"].icon-large {
+ margin-top: -0.5em;
+}
+a [class^="icon-"],
+a [class*=" icon-"] {
+ cursor: pointer;
+}
+.icon-glass {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-music {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-search {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-envelope-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-heart {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-star {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-star-empty {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-user {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-film {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-th-large {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-th {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-th-list {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-ok {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-remove {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-zoom-in {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-zoom-out {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-off {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-power-off {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-signal {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-cog {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-gear {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-trash {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-home {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-file-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-time {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-road {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-download-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-download {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-upload {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-inbox {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-play-circle {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-repeat {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-rotate-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-refresh {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-list-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-lock {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-flag {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-headphones {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-volume-off {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-volume-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-volume-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-qrcode {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-barcode {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-tag {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-tags {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-book {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bookmark {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-print {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-camera {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-font {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bold {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-italic {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-text-height {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-text-width {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-align-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-align-center {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-align-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-align-justify {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-list {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-indent-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-indent-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-facetime-video {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-picture {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-pencil {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-map-marker {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-adjust {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-tint {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-edit {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-share {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-check {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-move {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-step-backward {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-fast-backward {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-backward {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-play {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-pause {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-stop {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-forward {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-fast-forward {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-step-forward {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-eject {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-chevron-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-chevron-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-plus-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-minus-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-remove-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-ok-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-question-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-info-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-screenshot {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-remove-circle {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-ok-circle {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-ban-circle {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-arrow-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-arrow-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-arrow-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-arrow-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-share-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-mail-forward {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-resize-full {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-resize-small {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-plus {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-minus {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-asterisk {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-exclamation-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-gift {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-leaf {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-fire {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-eye-open {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-eye-close {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-warning-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-plane {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-calendar {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-random {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-comment {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-magnet {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-chevron-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-chevron-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-retweet {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-shopping-cart {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-folder-close {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-folder-open {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-resize-vertical {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-resize-horizontal {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bar-chart {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-twitter-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-facebook-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-camera-retro {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-key {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-cogs {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-gears {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-comments {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-thumbs-up-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-thumbs-down-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-star-half {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-heart-empty {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-signout {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-linkedin-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-pushpin {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-external-link {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-signin {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-trophy {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-github-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-upload-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-lemon {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-phone {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-check-empty {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-unchecked {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bookmark-empty {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-phone-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-twitter {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-facebook {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-github {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-unlock {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-credit-card {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-rss {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-hdd {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bullhorn {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bell {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-certificate {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-hand-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-hand-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-hand-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-hand-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-circle-arrow-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-circle-arrow-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-circle-arrow-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-circle-arrow-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-globe {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-wrench {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-tasks {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-filter {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-briefcase {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-fullscreen {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-group {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-link {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-cloud {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-beaker {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-cut {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-copy {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-paper-clip {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-paperclip {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-save {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sign-blank {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-reorder {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-list-ul {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-list-ol {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-strikethrough {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-underline {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-table {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-magic {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-truck {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-pinterest {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-pinterest-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-google-plus-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-google-plus {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-money {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-caret-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-caret-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-caret-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-caret-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-columns {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sort {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sort-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sort-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-envelope {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-linkedin {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-undo {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-rotate-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-legal {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-dashboard {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-comment-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-comments-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bolt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sitemap {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-umbrella {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-paste {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-lightbulb {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-exchange {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-cloud-download {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-cloud-upload {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-user-md {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-stethoscope {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-suitcase {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bell-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-coffee {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-food {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-file-text-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-building {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-hospital {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-ambulance {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-medkit {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-fighter-jet {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-beer {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-h-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-plus-sign-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-double-angle-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-double-angle-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-double-angle-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-double-angle-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-angle-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-angle-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-angle-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-angle-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-desktop {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-laptop {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-tablet {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-mobile-phone {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-circle-blank {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-quote-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-quote-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-spinner {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-circle {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-reply {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-mail-reply {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-github-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-folder-close-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-folder-open-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-expand-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-collapse-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-smile {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-frown {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-meh {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-gamepad {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-keyboard {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-flag-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-flag-checkered {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-terminal {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-code {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-reply-all {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-mail-reply-all {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-star-half-empty {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-star-half-full {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-location-arrow {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-crop {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-code-fork {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-unlink {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-question {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-info {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-exclamation {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-superscript {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-subscript {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-eraser {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-puzzle-piece {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-microphone {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-microphone-off {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-shield {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-calendar-empty {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-fire-extinguisher {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-rocket {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-maxcdn {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-chevron-sign-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-chevron-sign-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-chevron-sign-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-chevron-sign-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-html5 {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-css3 {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-anchor {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-unlock-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bullseye {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-ellipsis-horizontal {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-ellipsis-vertical {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-rss-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-play-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-ticket {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-minus-sign-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-check-minus {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-level-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-level-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-check-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-edit-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-external-link-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-share-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-compass {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-collapse {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-collapse-top {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-expand {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-eur {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-euro {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-gbp {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-usd {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-dollar {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-inr {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-rupee {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-jpy {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-yen {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-cny {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-renminbi {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-krw {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-won {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-btc {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bitcoin {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-file {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-file-text {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sort-by-alphabet {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sort-by-alphabet-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sort-by-attributes {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sort-by-attributes-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sort-by-order {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sort-by-order-alt {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-thumbs-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-thumbs-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-youtube-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-youtube {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-xing {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-xing-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-youtube-play {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-dropbox {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-stackexchange {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-instagram {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-flickr {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-adn {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bitbucket {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bitbucket-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-tumblr {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-tumblr-sign {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-long-arrow-down {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-long-arrow-up {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-long-arrow-left {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-long-arrow-right {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-apple {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-windows {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-android {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-linux {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-dribbble {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-skype {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-foursquare {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-trello {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-female {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-male {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-gittip {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-sun {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-moon {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-archive {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-bug {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-vk {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-weibo {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
+.icon-renren {
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome-ie7.min.css b/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome-ie7.min.css
new file mode 100644
index 0000000..d3dae63
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/css/font-awesome-ie7.min.css
@@ -0,0 +1,384 @@
+.icon-large{font-size:1.3333333333333333em;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;vertical-align:middle;}
+.nav [class^="icon-"],.nav [class*=" icon-"]{vertical-align:inherit;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;}.nav [class^="icon-"].icon-large,.nav [class*=" icon-"].icon-large{vertical-align:-25%;}
+.nav-pills [class^="icon-"].icon-large,.nav-tabs [class^="icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large{line-height:.75em;margin-top:-7px;padding-top:5px;margin-bottom:-5px;padding-bottom:4px;}
+.btn [class^="icon-"].pull-left,.btn [class*=" icon-"].pull-left,.btn [class^="icon-"].pull-right,.btn [class*=" icon-"].pull-right{vertical-align:inherit;}
+.btn [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large{margin-top:-0.5em;}
+a [class^="icon-"],a [class*=" icon-"]{cursor:pointer;}
+.icon-glass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-music{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-search{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-envelope-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-heart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-star{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-star-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-user{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-film{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-th-large{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-th{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-th-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-ok{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-remove{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-zoom-in{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-zoom-out{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-power-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-signal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-cog{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-gear{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-trash{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-home{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-file-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-time{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-road{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-download-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-inbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-play-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-repeat{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-rotate-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-refresh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-list-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-lock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-flag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-headphones{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-volume-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-volume-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-volume-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-qrcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-barcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-tag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-tags{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-book{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bookmark{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-print{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-camera{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-font{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bold{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-italic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-text-height{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-text-width{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-align-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-align-center{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-align-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-align-justify{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-indent-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-indent-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-facetime-video{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-picture{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-pencil{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-map-marker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-adjust{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-tint{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-edit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-share{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-check{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-move{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-step-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-fast-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-pause{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-stop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-fast-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-step-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-eject{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-chevron-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-chevron-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-minus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-remove-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-ok-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-question-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-info-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-screenshot{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-remove-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-ok-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-ban-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-share-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-mail-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-resize-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-resize-small{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-asterisk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-exclamation-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-gift{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-leaf{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-fire{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-eye-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-eye-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-warning-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-plane{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-calendar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-random{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-comment{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-magnet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-chevron-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-chevron-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-retweet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-shopping-cart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-folder-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-folder-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-resize-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-resize-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bar-chart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-twitter-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-facebook-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-camera-retro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-key{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-cogs{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-gears{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-comments{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-thumbs-up-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-thumbs-down-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-star-half{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-heart-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-signout{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-linkedin-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-pushpin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-external-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-signin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-trophy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-github-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-upload-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-lemon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-check-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-unchecked{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bookmark-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-phone-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-twitter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-facebook{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-github{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-unlock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-credit-card{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-rss{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-hdd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bullhorn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bell{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-certificate{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-hand-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-hand-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-hand-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-hand-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-circle-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-circle-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-circle-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-circle-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-globe{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-wrench{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-tasks{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-filter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-briefcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-fullscreen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-group{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-cloud{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-beaker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-cut{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-copy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-paper-clip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-paperclip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-save{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sign-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-reorder{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-list-ul{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-list-ol{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-strikethrough{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-underline{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-table{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-magic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-truck{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-pinterest{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-pinterest-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-google-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-google-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-money{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-caret-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-caret-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-caret-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-caret-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-columns{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sort{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sort-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sort-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-envelope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-linkedin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-undo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-rotate-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-legal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-dashboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-comment-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-comments-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bolt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sitemap{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-umbrella{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-paste{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-lightbulb{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-exchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-cloud-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-cloud-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-user-md{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-stethoscope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-suitcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bell-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-coffee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-food{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-file-text-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-building{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-hospital{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-ambulance{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-medkit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-fighter-jet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-beer{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-h-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-plus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-double-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-double-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-double-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-double-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-desktop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-laptop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-tablet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-mobile-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-circle-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-quote-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-quote-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-spinner{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-mail-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-github-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-folder-close-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-folder-open-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-expand-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-collapse-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-smile{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-frown{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-meh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-gamepad{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-keyboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-flag-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-flag-checkered{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-terminal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-code{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-mail-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-star-half-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-star-half-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-location-arrow{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-crop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-code-fork{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-unlink{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-question{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-info{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-exclamation{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-superscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-subscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-eraser{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-puzzle-piece{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-microphone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-microphone-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-shield{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-calendar-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-fire-extinguisher{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-rocket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-maxcdn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-chevron-sign-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-chevron-sign-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-chevron-sign-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-chevron-sign-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-html5{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-css3{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-anchor{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-unlock-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bullseye{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-ellipsis-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-ellipsis-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-rss-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-play-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-ticket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-minus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-check-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-level-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-level-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-check-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-edit-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-external-link-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-share-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-compass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-collapse{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-collapse-top{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-expand{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-eur{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-euro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-gbp{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-usd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-dollar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-inr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-rupee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-jpy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-yen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-cny{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-renminbi{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-krw{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-won{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-btc{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bitcoin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-file{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-file-text{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sort-by-alphabet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sort-by-alphabet-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sort-by-attributes{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sort-by-attributes-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sort-by-order{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sort-by-order-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-thumbs-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-thumbs-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-youtube-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-youtube{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-xing{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-xing-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-youtube-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-dropbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-stackexchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-instagram{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-flickr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-adn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bitbucket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bitbucket-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-tumblr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-tumblr-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-long-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-long-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-long-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-long-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-apple{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-windows{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-android{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-linux{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-dribbble{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-skype{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-foursquare{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-trello{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-female{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-male{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-gittip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-sun{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-moon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-archive{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-bug{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-vk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-weibo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
+.icon-renren{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/font/FontAwesome.otf b/sm-shop/src/main/webapp/resources/css/font-awesome/font/FontAwesome.otf
new file mode 100644
index 0000000..7012545
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/css/font-awesome/font/FontAwesome.otf differ
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.eot b/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.eot
new file mode 100755
index 0000000..0662cb9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.eot differ
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.svg b/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.svg
new file mode 100755
index 0000000..2edb4ec
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.svg
@@ -0,0 +1,399 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="fontawesomeregular" horiz-adv-x="1536" >
+<font-face units-per-em="1792" ascent="1536" descent="-256" />
+<missing-glyph horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" />
+<glyph unicode="	" horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" />
+<glyph unicode="¨" horiz-adv-x="1792" />
+<glyph unicode="©" horiz-adv-x="1792" />
+<glyph unicode="®" horiz-adv-x="1792" />
+<glyph unicode="´" horiz-adv-x="1792" />
+<glyph unicode="Æ" horiz-adv-x="1792" />
+<glyph unicode=" " horiz-adv-x="768" />
+<glyph unicode=" " />
+<glyph unicode=" " horiz-adv-x="768" />
+<glyph unicode=" " />
+<glyph unicode=" " horiz-adv-x="512" />
+<glyph unicode=" " horiz-adv-x="384" />
+<glyph unicode=" " horiz-adv-x="256" />
+<glyph unicode=" " horiz-adv-x="256" />
+<glyph unicode=" " horiz-adv-x="192" />
+<glyph unicode=" " horiz-adv-x="307" />
+<glyph unicode=" " horiz-adv-x="85" />
+<glyph unicode=" " horiz-adv-x="307" />
+<glyph unicode=" " horiz-adv-x="384" />
+<glyph unicode="™" horiz-adv-x="1792" />
+<glyph unicode="∞" horiz-adv-x="1792" />
+<glyph unicode="≠" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
+<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
+<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280zM768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z " />
+<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
+<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
+<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
+<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
+<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
+<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
+<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
+<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q73 -1 153.5 -2t119 -1.5t52.5 -0.5l29 2q-32 95 -92 241q-53 132 -92 211zM21 -128h-21l2 79q22 7 80 18q89 16 110 31q20 16 48 68l237 616l280 724h75h53l11 -21l205 -480q103 -242 124 -297q39 -102 96 -235q26 -58 65 -164q24 -67 65 -149 q22 -49 35 -57q22 -19 69 -23q47 -6 103 -27q6 -39 6 -57q0 -14 -1 -26q-80 0 -192 8q-93 8 -189 8q-79 0 -135 -2l-200 -11l-58 -2q0 45 4 78l131 28q56 13 68 23q12 12 12 27t-6 32l-47 114l-92 228l-450 2q-29 -65 -104 -274q-23 -64 -23 -84q0 -31 17 -43 q26 -21 103 -32q3 0 13.5 -2t30 -5t40.5 -6q1 -28 1 -58q0 -17 -2 -27q-66 0 -349 20l-48 -8q-81 -14 -167 -14z" />
+<glyph unicode="" horiz-adv-x="1408" d="M555 15q76 -32 140 -32q131 0 216 41t122 113q38 70 38 181q0 114 -41 180q-58 94 -141 126q-80 32 -247 32q-74 0 -101 -10v-144l-1 -173l3 -270q0 -15 12 -44zM541 761q43 -7 109 -7q175 0 264 65t89 224q0 112 -85 187q-84 75 -255 75q-52 0 -130 -13q0 -44 2 -77 q7 -122 6 -279l-1 -98q0 -43 1 -77zM0 -128l2 94q45 9 68 12q77 12 123 31q17 27 21 51q9 66 9 194l-2 497q-5 256 -9 404q-1 87 -11 109q-1 4 -12 12q-18 12 -69 15q-30 2 -114 13l-4 83l260 6l380 13l45 1q5 0 14 0.5t14 0.5q1 0 21.5 -0.5t40.5 -0.5h74q88 0 191 -27 q43 -13 96 -39q57 -29 102 -76q44 -47 65 -104t21 -122q0 -70 -32 -128t-95 -105q-26 -20 -150 -77q177 -41 267 -146q92 -106 92 -236q0 -76 -29 -161q-21 -62 -71 -117q-66 -72 -140 -108q-73 -36 -203 -60q-82 -15 -198 -11l-197 4q-84 2 -298 -11q-33 -3 -272 -11z" />
+<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q4 1 77 20q76 19 116 39q29 37 41 101l27 139l56 268l12 64q8 44 17 84.5t16 67t12.5 46.5t9 30.5t3.5 11.5l29 157l16 63l22 135l8 50v38q-41 22 -144 28q-28 2 -38 4l19 103l317 -14q39 -2 73 -2q66 0 214 9q33 2 68 4.5t36 2.5q-2 -19 -6 -38 q-7 -29 -13 -51q-55 -19 -109 -31q-64 -16 -101 -31q-12 -31 -24 -88q-9 -44 -13 -82q-44 -199 -66 -306l-61 -311l-38 -158l-43 -235l-12 -45q-2 -7 1 -27q64 -15 119 -21q36 -5 66 -10q-1 -29 -7 -58q-7 -31 -9 -41q-18 0 -23 -1q-24 -2 -42 -2q-9 0 -28 3q-19 4 -145 17 l-198 2q-41 1 -174 -11q-74 -7 -98 -9z" />
+<glyph unicode="" horiz-adv-x="1792" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l215 -1h293l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -42.5 2t-103.5 -1t-111 -1 q-34 0 -67 -5q-10 -97 -8 -136l1 -152v-332l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-88 0 -233 -14q-48 -4 -70 -4q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q8 192 6 433l-5 428q-1 62 -0.5 118.5t0.5 102.5t-2 57t-6 15q-6 5 -14 6q-38 6 -148 6q-43 0 -100 -13.5t-73 -24.5q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1744 128q33 0 42 -18.5t-11 -44.5 l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80z" />
+<glyph unicode="" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l446 -1h318l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -58.5 2t-138.5 -1t-128 -1 q-94 0 -127 -5q-10 -97 -8 -136l1 -152v52l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-82 0 -233 -13q-45 -5 -70 -5q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q6 137 6 433l-5 44q0 265 -2 278q-2 11 -6 15q-6 5 -14 6q-38 6 -148 6q-50 0 -168.5 -14t-132.5 -24q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1505 113q26 -20 26 -49t-26 -49l-162 -126 q-26 -20 -44.5 -11t-18.5 42v80h-1024v-80q0 -33 -18.5 -42t-44.5 11l-162 126q-26 20 -26 49t26 49l162 126q26 20 44.5 11t18.5 -42v-80h1024v80q0 33 18.5 42t44.5 -11z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
+<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
+<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
+<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
+<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
+<glyph unicode="" horiz-adv-x="1152" d="M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 -90.5l-486 -486l486 -485q37 -38 37 -91t-37 -90l-75 -75q-37 -37 -90.5 -37t-90.5 37z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1099 704q0 -52 -37 -91l-652 -651q-37 -37 -90 -37t-90 37l-76 75q-37 39 -37 91q0 53 37 90l486 486l-486 485q-37 39 -37 91q0 53 37 90l76 75q36 38 90 38t90 -38l652 -651q37 -37 37 -90z" />
+<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
+<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
+<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
+<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
+<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
+<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
+<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
+<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
+<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 320q0 -53 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-486 485l-486 -485q-36 -38 -90 -38t-90 38l-75 75q-38 36 -38 90q0 53 38 91l651 651q37 37 90 37q52 0 91 -37l650 -651q38 -38 38 -91z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 832q0 -53 -37 -90l-651 -651q-38 -38 -91 -38q-54 0 -90 38l-651 651q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l486 -486l486 486q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
+<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1920" d="M512 512v-384h-256v384h256zM896 1024v-896h-256v896h256zM1280 768v-640h-256v640h256zM1664 1152v-1024h-256v1024h256zM1792 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5z M1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1307 618l23 219h-198v109q0 49 15.5 68.5t71.5 19.5h110v219h-175q-152 0 -218 -72t-66 -213v-131h-131v-219h131v-635h262v635h175zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
+<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
+<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
+<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
+<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
+<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
+<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
+<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
+<glyph unicode="" horiz-adv-x="768" d="M511 980h257l-30 -284h-227v-824h-341v824h-170v284h170v171q0 182 86 275.5t283 93.5h227v-284h-142q-39 0 -62.5 -6.5t-34 -23.5t-13.5 -34.5t-3 -49.5v-142z" />
+<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
+<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
+<glyph unicode="" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM1664 128q0 -52 -38 -90t-90 -38 h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
+<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
+<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
+<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
+<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
+<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
+<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
+<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
+<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
+<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
+<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
+<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
+<glyph unicode="" d="M678 -57q0 -38 -10 -71h-380q-95 0 -171.5 56.5t-103.5 147.5q24 45 69 77.5t100 49.5t107 24t107 7q32 0 49 -2q6 -4 30.5 -21t33 -23t31 -23t32 -25.5t27.5 -25.5t26.5 -29.5t21 -30.5t17.5 -34.5t9.5 -36t4.5 -40.5zM385 294q-234 -7 -385 -85v433q103 -118 273 -118 q32 0 70 5q-21 -61 -21 -86q0 -67 63 -149zM558 805q0 -100 -43.5 -160.5t-140.5 -60.5q-51 0 -97 26t-78 67.5t-56 93.5t-35.5 104t-11.5 99q0 96 51.5 165t144.5 69q66 0 119 -41t84 -104t47 -130t16 -128zM1536 896v-736q0 -119 -84.5 -203.5t-203.5 -84.5h-468 q39 73 39 157q0 66 -22 122.5t-55.5 93t-72 71t-72 59.5t-55.5 54.5t-22 59.5q0 36 23 68t56 61.5t65.5 64.5t55.5 93t23 131t-26.5 145.5t-75.5 118.5q-6 6 -14 11t-12.5 7.5t-10 9.5t-10.5 17h135l135 64h-437q-138 0 -244.5 -38.5t-182.5 -133.5q0 126 81 213t207 87h960 q119 0 203.5 -84.5t84.5 -203.5v-96h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" />
+<glyph unicode="" horiz-adv-x="1664" d="M876 71q0 21 -4.5 40.5t-9.5 36t-17.5 34.5t-21 30.5t-26.5 29.5t-27.5 25.5t-32 25.5t-31 23t-33 23t-30.5 21q-17 2 -50 2q-54 0 -106 -7t-108 -25t-98 -46t-69 -75t-27 -107q0 -68 35.5 -121.5t93 -84t120.5 -45.5t127 -15q59 0 112.5 12.5t100.5 39t74.5 73.5 t27.5 110zM756 933q0 60 -16.5 127.5t-47 130.5t-84 104t-119.5 41q-93 0 -144 -69t-51 -165q0 -47 11.5 -99t35.5 -104t56 -93.5t78 -67.5t97 -26q97 0 140.5 60.5t43.5 160.5zM625 1408h437l-135 -79h-135q71 -45 110 -126t39 -169q0 -74 -23 -131.5t-56 -92.5t-66 -64.5 t-56 -61t-23 -67.5q0 -26 16.5 -51t43 -48t58.5 -48t64 -55.5t58.5 -66t43 -85t16.5 -106.5q0 -160 -140 -282q-152 -131 -420 -131q-59 0 -119.5 10t-122 33.5t-108.5 58t-77 89t-30 121.5q0 61 37 135q32 64 96 110.5t145 71t155 36t150 13.5q-64 83 -64 149q0 12 2 23.5 t5 19.5t8 21.5t7 21.5q-40 -5 -70 -5q-149 0 -255.5 98t-106.5 246q0 140 95 250.5t234 141.5q94 20 187 20zM1664 1152v-128h-256v-256h-128v256h-256v128h256v256h128v-256h256z" />
+<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
+<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
+<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
+<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
+<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
+<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
+<glyph unicode="" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1664 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5 q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1024 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1024 608v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280z M768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
+<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
+<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
+<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
+<glyph unicode="" horiz-adv-x="1152" d="M896 608v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h224q14 0 23 -9t9 -23zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28 t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68zM1152 928v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704q93 0 158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="1152" d="M928 1152q93 0 158.5 -65.5t65.5 -158.5v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68z M864 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576z" />
+<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
+<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
+<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
+<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
+<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
+<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
+<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
+<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1708 881l-188 -881h-304l181 849q4 21 1 43q-4 20 -16 35q-10 14 -28 24q-18 9 -40 9h-197l-205 -960h-303l204 960h-304l-205 -960h-304l272 1280h1139q157 0 245 -118q86 -116 52 -281z" />
+<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
+<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
+<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
+<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
+<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
+<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
+<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 352v-32q0 -132 -94 -226t-226 -94h-128q-132 0 -226 94t-94 226v480h-224q-2 -102 -14.5 -190.5t-30.5 -156t-48.5 -126.5t-57 -99.5t-67.5 -77.5t-69.5 -58.5t-74 -44t-69 -32t-65.5 -25.5q-4 -2 -32 -13q-8 -2 -12 -2q-22 0 -30 20l-71 178q-5 13 0 25t17 17 q7 3 20 7.5t18 6.5q31 12 46.5 18.5t44.5 20t45.5 26t42 32.5t40.5 42.5t34.5 53.5t30.5 68.5t22.5 83.5t17 103t6.5 123h-256q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h1216q14 0 23 -9t9 -23v-160q0 -14 -9 -23t-23 -9h-224v-512q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v64q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1280 1376v-160q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h960q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1024 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1024 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28 t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
+<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
+<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
+<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
+<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
+<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
+<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
+<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
+<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
+<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
+<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
+<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M390 1408h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170v217q91 30 155 84q64 55 103 132q39 78 54 196z " />
+<glyph unicode="" d="M1123 127v181q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
+<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
+<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
+<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
+<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
+<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1483 512l-587 -587q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128t53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41 l619 619l2 -3q53 -53 53 -128t-53 -128zM1406 1138l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15v0q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36t14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15z" />
+<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
+<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M805 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM453 1176v-344q0 -179 -89.5 -326t-234.5 -217q-129 152 -129 351q0 200 129.5 352t323.5 184zM958 991q-128 -152 -128 -351q0 -201 128 -351q-145 70 -234.5 218t-89.5 328 v341q196 -33 324 -185zM1638 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM1286 1176v-344q0 -179 -91 -326t-237 -217v0q133 154 133 351q0 195 -133 351q129 151 328 185zM1920 640q0 -201 -129 -351q-145 70 -234.5 218 t-89.5 328v341q194 -32 323.5 -184t129.5 -352z" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.ttf b/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.ttf
new file mode 100755
index 0000000..d365924
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.ttf differ
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.woff b/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.woff
new file mode 100755
index 0000000..b9bd17e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/css/font-awesome/font/fontawesome-webfont.woff differ
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/less/bootstrap.less b/sm-shop/src/main/webapp/resources/css/font-awesome/less/bootstrap.less
new file mode 100644
index 0000000..a2c9604
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/less/bootstrap.less
@@ -0,0 +1,84 @@
+/* BOOTSTRAP SPECIFIC CLASSES
+ * -------------------------- */
+
+/* Bootstrap 2.0 sprites.less reset */
+[class^="icon-"],
+[class*=" icon-"] {
+ display: inline;
+ width: auto;
+ height: auto;
+ line-height: normal;
+ vertical-align: baseline;
+ background-image: none;
+ background-position: 0% 0%;
+ background-repeat: repeat;
+ margin-top: 0;
+}
+
+/* more sprites.less reset */
+.icon-white,
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"],
+.dropdown-submenu:hover > a > [class^="icon-"],
+.dropdown-submenu:hover > a > [class*=" icon-"] {
+ background-image: none;
+}
+
+
+/* keeps Bootstrap styles with and without icons the same */
+.btn, .nav {
+ [class^="icon-"],
+ [class*=" icon-"] {
+// display: inline;
+ &.icon-large { line-height: .9em; }
+ &.icon-spin { display: inline-block; }
+ }
+}
+.nav-tabs, .nav-pills {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &, &.icon-large { line-height: .9em; }
+ }
+}
+.btn {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &.pull-left, &.pull-right {
+ &.icon-2x { margin-top: .18em; }
+ }
+ &.icon-spin.icon-large { line-height: .8em; }
+ }
+}
+.btn.btn-small {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &.pull-left, &.pull-right {
+ &.icon-2x { margin-top: .25em; }
+ }
+ }
+}
+.btn.btn-large {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ margin-top: 0; // overrides bootstrap default
+ &.pull-left, &.pull-right {
+ &.icon-2x { margin-top: .05em; }
+ }
+ &.pull-left.icon-2x { margin-right: .2em; }
+ &.pull-right.icon-2x { margin-left: .2em; }
+ }
+}
+
+/* Fixes alignment in nav lists */
+.nav-list [class^="icon-"],
+.nav-list [class*=" icon-"] {
+ line-height: inherit;
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/less/core.less b/sm-shop/src/main/webapp/resources/css/font-awesome/less/core.less
new file mode 100644
index 0000000..1ef7e22
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/less/core.less
@@ -0,0 +1,129 @@
+/* FONT AWESOME CORE
+ * -------------------------- */
+
+[class^="icon-"],
+[class*=" icon-"] {
+ .icon-FontAwesome();
+}
+
+[class^="icon-"]:before,
+[class*=" icon-"]:before {
+ text-decoration: inherit;
+ display: inline-block;
+ speak: none;
+}
+
+/* makes the font 33% larger relative to the icon container */
+.icon-large:before {
+ vertical-align: -10%;
+ font-size: 4/3em;
+}
+
+/* makes sure icons active on rollover in links */
+a {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ display: inline;
+ }
+}
+
+/* increased font size for icon-large */
+[class^="icon-"],
+[class*=" icon-"] {
+ &.icon-fixed-width {
+ display: inline-block;
+ width: 16/14em;
+ text-align: right;
+ padding-right: 4/14em;
+ &.icon-large {
+ width: 20/14em;
+ }
+ }
+}
+
+.icons-ul {
+ margin-left: @icons-li-width;
+ list-style-type: none;
+
+ > li { position: relative; }
+
+ .icon-li {
+ position: absolute;
+ left: -@icons-li-width;
+ width: @icons-li-width;
+ text-align: center;
+ line-height: inherit;
+ }
+}
+
+// allows usage of the hide class directly on font awesome icons
+[class^="icon-"],
+[class*=" icon-"] {
+ &.hide {
+ display: none;
+ }
+}
+
+.icon-muted { color: @iconMuted; }
+.icon-light { color: @iconLight; }
+.icon-dark { color: @iconDark; }
+
+// Icon Borders
+// -------------------------
+
+.icon-border {
+ border: solid 1px @borderColor;
+ padding: .2em .25em .15em;
+ .border-radius(3px);
+}
+
+// Icon Sizes
+// -------------------------
+
+.icon-2x {
+ font-size: 2em;
+ &.icon-border {
+ border-width: 2px;
+ .border-radius(4px);
+ }
+}
+.icon-3x {
+ font-size: 3em;
+ &.icon-border {
+ border-width: 3px;
+ .border-radius(5px);
+ }
+}
+.icon-4x {
+ font-size: 4em;
+ &.icon-border {
+ border-width: 4px;
+ .border-radius(6px);
+ }
+}
+
+.icon-5x {
+ font-size: 5em;
+ &.icon-border {
+ border-width: 5px;
+ .border-radius(7px);
+ }
+}
+
+
+// Floats & Margins
+// -------------------------
+
+// Quick floats
+.pull-right { float: right; }
+.pull-left { float: left; }
+
+[class^="icon-"],
+[class*=" icon-"] {
+ &.pull-left {
+ margin-right: .3em;
+ }
+ &.pull-right {
+ margin-left: .3em;
+ }
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/less/extras.less b/sm-shop/src/main/webapp/resources/css/font-awesome/less/extras.less
new file mode 100644
index 0000000..c93c260
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/less/extras.less
@@ -0,0 +1,93 @@
+/* EXTRAS
+ * -------------------------- */
+
+/* Stacked and layered icon */
+.icon-stack();
+
+/* Animated rotating icon */
+.icon-spin {
+ display: inline-block;
+ -moz-animation: spin 2s infinite linear;
+ -o-animation: spin 2s infinite linear;
+ -webkit-animation: spin 2s infinite linear;
+ animation: spin 2s infinite linear;
+}
+
+/* Prevent stack and spinners from being taken inline when inside a link */
+a .icon-stack,
+a .icon-spin {
+ display: inline-block;
+ text-decoration: none;
+}
+
+@-moz-keyframes spin {
+ 0% { -moz-transform: rotate(0deg); }
+ 100% { -moz-transform: rotate(359deg); }
+}
+@-webkit-keyframes spin {
+ 0% { -webkit-transform: rotate(0deg); }
+ 100% { -webkit-transform: rotate(359deg); }
+}
+@-o-keyframes spin {
+ 0% { -o-transform: rotate(0deg); }
+ 100% { -o-transform: rotate(359deg); }
+}
+@-ms-keyframes spin {
+ 0% { -ms-transform: rotate(0deg); }
+ 100% { -ms-transform: rotate(359deg); }
+}
+@keyframes spin {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(359deg); }
+}
+
+/* Icon rotations and mirroring */
+.icon-rotate-90:before {
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ transform: rotate(90deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+.icon-rotate-180:before {
+ -webkit-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ transform: rotate(180deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+}
+
+.icon-rotate-270:before {
+ -webkit-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ transform: rotate(270deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+.icon-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -moz-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ -o-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+
+.icon-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -moz-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ -o-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+
+/* ensure rotation occurs inside anchor tags */
+a {
+ .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical {
+ &:before { display: inline-block; }
+ }
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/less/font-awesome.less b/sm-shop/src/main/webapp/resources/css/font-awesome/less/font-awesome.less
new file mode 100644
index 0000000..0f45461
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/less/font-awesome.less
@@ -0,0 +1,33 @@
+/*!
+ * Font Awesome 3.2.1
+ * the iconic font designed for Bootstrap
+ * ------------------------------------------------------------------------------
+ * The full suite of pictographic icons, examples, and documentation can be
+ * found at http://fontawesome.io. Stay up to date on Twitter at
+ * http://twitter.com/fontawesome.
+ *
+ * License
+ * ------------------------------------------------------------------------------
+ * - The Font Awesome font is licensed under SIL OFL 1.1 -
+ * http://scripts.sil.org/OFL
+ * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
+ * http://opensource.org/licenses/mit-license.html
+ * - Font Awesome documentation licensed under CC BY 3.0 -
+ * http://creativecommons.org/licenses/by/3.0/
+ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
+ * "Font Awesome by Dave Gandy - http://fontawesome.io"
+ *
+ * Author - Dave Gandy
+ * ------------------------------------------------------------------------------
+ * Email: dave@fontawesome.io
+ * Twitter: http://twitter.com/davegandy
+ * Work: Lead Product Designer @ Kyruus - http://kyruus.com
+ */
+
+@import "variables.less";
+@import "mixins.less";
+@import "path.less";
+@import "core.less";
+@import "bootstrap.less";
+@import "extras.less";
+@import "icons.less";
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/less/font-awesome-ie7.less b/sm-shop/src/main/webapp/resources/css/font-awesome/less/font-awesome-ie7.less
new file mode 100644
index 0000000..6675c49
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/less/font-awesome-ie7.less
@@ -0,0 +1,1953 @@
+/*!
+ * Font Awesome 3.2.1
+ * the iconic font designed for Bootstrap
+ * ------------------------------------------------------------------------------
+ * The full suite of pictographic icons, examples, and documentation can be
+ * found at http://fontawesome.io. Stay up to date on Twitter at
+ * http://twitter.com/fontawesome.
+ *
+ * License
+ * ------------------------------------------------------------------------------
+ * - The Font Awesome font is licensed under SIL OFL 1.1 -
+ * http://scripts.sil.org/OFL
+ * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
+ * http://opensource.org/licenses/mit-license.html
+ * - Font Awesome documentation licensed under CC BY 3.0 -
+ * http://creativecommons.org/licenses/by/3.0/
+ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
+ * "Font Awesome by Dave Gandy - http://fontawesome.io"
+ *
+ * Author - Dave Gandy
+ * ------------------------------------------------------------------------------
+ * Email: dave@fontawesome.io
+ * Twitter: http://twitter.com/davegandy
+ * Work: Lead Product Designer @ Kyruus - http://kyruus.com
+ */
+
+.icon-large {
+ font-size: 4/3em;
+ margin-top: -4px;
+ padding-top: 3px;
+ margin-bottom: -4px;
+ padding-bottom: 3px;
+ vertical-align: middle;
+}
+
+.nav {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ vertical-align: inherit;
+ margin-top: -4px;
+ padding-top: 3px;
+ margin-bottom: -4px;
+ padding-bottom: 3px;
+ &.icon-large {
+ vertical-align: -25%;
+ }
+ }
+}
+
+.nav-pills, .nav-tabs {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &.icon-large {
+ line-height: .75em;
+ margin-top: -7px;
+ padding-top: 5px;
+ margin-bottom: -5px;
+ padding-bottom: 4px;
+ }
+ }
+}
+
+.btn {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &.pull-left, &.pull-right { vertical-align: inherit; }
+ &.icon-large {
+ margin-top: -.5em;
+ }
+ }
+}
+
+a [class^="icon-"],
+a [class*=" icon-"] {
+ cursor: pointer;
+}
+
+.ie7icon(@inner) { *zoom: ~"expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '@{inner}')"; }
+
+
+.icon-glass {
+ .ie7icon('');
+}
+
+
+.icon-music {
+ .ie7icon('');
+}
+
+
+.icon-search {
+ .ie7icon('');
+}
+
+
+.icon-envelope-alt {
+ .ie7icon('');
+}
+
+
+.icon-heart {
+ .ie7icon('');
+}
+
+
+.icon-star {
+ .ie7icon('');
+}
+
+
+.icon-star-empty {
+ .ie7icon('');
+}
+
+
+.icon-user {
+ .ie7icon('');
+}
+
+
+.icon-film {
+ .ie7icon('');
+}
+
+
+.icon-th-large {
+ .ie7icon('');
+}
+
+
+.icon-th {
+ .ie7icon('');
+}
+
+
+.icon-th-list {
+ .ie7icon('');
+}
+
+
+.icon-ok {
+ .ie7icon('');
+}
+
+
+.icon-remove {
+ .ie7icon('');
+}
+
+
+.icon-zoom-in {
+ .ie7icon('');
+}
+
+
+.icon-zoom-out {
+ .ie7icon('');
+}
+
+
+.icon-off {
+ .ie7icon('');
+}
+
+.icon-power-off {
+ .ie7icon('');
+}
+
+
+.icon-signal {
+ .ie7icon('');
+}
+
+
+.icon-cog {
+ .ie7icon('');
+}
+
+.icon-gear {
+ .ie7icon('');
+}
+
+
+.icon-trash {
+ .ie7icon('');
+}
+
+
+.icon-home {
+ .ie7icon('');
+}
+
+
+.icon-file-alt {
+ .ie7icon('');
+}
+
+
+.icon-time {
+ .ie7icon('');
+}
+
+
+.icon-road {
+ .ie7icon('');
+}
+
+
+.icon-download-alt {
+ .ie7icon('');
+}
+
+
+.icon-download {
+ .ie7icon('');
+}
+
+
+.icon-upload {
+ .ie7icon('');
+}
+
+
+.icon-inbox {
+ .ie7icon('');
+}
+
+
+.icon-play-circle {
+ .ie7icon('');
+}
+
+
+.icon-repeat {
+ .ie7icon('');
+}
+
+.icon-rotate-right {
+ .ie7icon('');
+}
+
+
+.icon-refresh {
+ .ie7icon('');
+}
+
+
+.icon-list-alt {
+ .ie7icon('');
+}
+
+
+.icon-lock {
+ .ie7icon('');
+}
+
+
+.icon-flag {
+ .ie7icon('');
+}
+
+
+.icon-headphones {
+ .ie7icon('');
+}
+
+
+.icon-volume-off {
+ .ie7icon('');
+}
+
+
+.icon-volume-down {
+ .ie7icon('');
+}
+
+
+.icon-volume-up {
+ .ie7icon('');
+}
+
+
+.icon-qrcode {
+ .ie7icon('');
+}
+
+
+.icon-barcode {
+ .ie7icon('');
+}
+
+
+.icon-tag {
+ .ie7icon('');
+}
+
+
+.icon-tags {
+ .ie7icon('');
+}
+
+
+.icon-book {
+ .ie7icon('');
+}
+
+
+.icon-bookmark {
+ .ie7icon('');
+}
+
+
+.icon-print {
+ .ie7icon('');
+}
+
+
+.icon-camera {
+ .ie7icon('');
+}
+
+
+.icon-font {
+ .ie7icon('');
+}
+
+
+.icon-bold {
+ .ie7icon('');
+}
+
+
+.icon-italic {
+ .ie7icon('');
+}
+
+
+.icon-text-height {
+ .ie7icon('');
+}
+
+
+.icon-text-width {
+ .ie7icon('');
+}
+
+
+.icon-align-left {
+ .ie7icon('');
+}
+
+
+.icon-align-center {
+ .ie7icon('');
+}
+
+
+.icon-align-right {
+ .ie7icon('');
+}
+
+
+.icon-align-justify {
+ .ie7icon('');
+}
+
+
+.icon-list {
+ .ie7icon('');
+}
+
+
+.icon-indent-left {
+ .ie7icon('');
+}
+
+
+.icon-indent-right {
+ .ie7icon('');
+}
+
+
+.icon-facetime-video {
+ .ie7icon('');
+}
+
+
+.icon-picture {
+ .ie7icon('');
+}
+
+
+.icon-pencil {
+ .ie7icon('');
+}
+
+
+.icon-map-marker {
+ .ie7icon('');
+}
+
+
+.icon-adjust {
+ .ie7icon('');
+}
+
+
+.icon-tint {
+ .ie7icon('');
+}
+
+
+.icon-edit {
+ .ie7icon('');
+}
+
+
+.icon-share {
+ .ie7icon('');
+}
+
+
+.icon-check {
+ .ie7icon('');
+}
+
+
+.icon-move {
+ .ie7icon('');
+}
+
+
+.icon-step-backward {
+ .ie7icon('');
+}
+
+
+.icon-fast-backward {
+ .ie7icon('');
+}
+
+
+.icon-backward {
+ .ie7icon('');
+}
+
+
+.icon-play {
+ .ie7icon('');
+}
+
+
+.icon-pause {
+ .ie7icon('');
+}
+
+
+.icon-stop {
+ .ie7icon('');
+}
+
+
+.icon-forward {
+ .ie7icon('');
+}
+
+
+.icon-fast-forward {
+ .ie7icon('');
+}
+
+
+.icon-step-forward {
+ .ie7icon('');
+}
+
+
+.icon-eject {
+ .ie7icon('');
+}
+
+
+.icon-chevron-left {
+ .ie7icon('');
+}
+
+
+.icon-chevron-right {
+ .ie7icon('');
+}
+
+
+.icon-plus-sign {
+ .ie7icon('');
+}
+
+
+.icon-minus-sign {
+ .ie7icon('');
+}
+
+
+.icon-remove-sign {
+ .ie7icon('');
+}
+
+
+.icon-ok-sign {
+ .ie7icon('');
+}
+
+
+.icon-question-sign {
+ .ie7icon('');
+}
+
+
+.icon-info-sign {
+ .ie7icon('');
+}
+
+
+.icon-screenshot {
+ .ie7icon('');
+}
+
+
+.icon-remove-circle {
+ .ie7icon('');
+}
+
+
+.icon-ok-circle {
+ .ie7icon('');
+}
+
+
+.icon-ban-circle {
+ .ie7icon('');
+}
+
+
+.icon-arrow-left {
+ .ie7icon('');
+}
+
+
+.icon-arrow-right {
+ .ie7icon('');
+}
+
+
+.icon-arrow-up {
+ .ie7icon('');
+}
+
+
+.icon-arrow-down {
+ .ie7icon('');
+}
+
+
+.icon-share-alt {
+ .ie7icon('');
+}
+
+.icon-mail-forward {
+ .ie7icon('');
+}
+
+
+.icon-resize-full {
+ .ie7icon('');
+}
+
+
+.icon-resize-small {
+ .ie7icon('');
+}
+
+
+.icon-plus {
+ .ie7icon('');
+}
+
+
+.icon-minus {
+ .ie7icon('');
+}
+
+
+.icon-asterisk {
+ .ie7icon('');
+}
+
+
+.icon-exclamation-sign {
+ .ie7icon('');
+}
+
+
+.icon-gift {
+ .ie7icon('');
+}
+
+
+.icon-leaf {
+ .ie7icon('');
+}
+
+
+.icon-fire {
+ .ie7icon('');
+}
+
+
+.icon-eye-open {
+ .ie7icon('');
+}
+
+
+.icon-eye-close {
+ .ie7icon('');
+}
+
+
+.icon-warning-sign {
+ .ie7icon('');
+}
+
+
+.icon-plane {
+ .ie7icon('');
+}
+
+
+.icon-calendar {
+ .ie7icon('');
+}
+
+
+.icon-random {
+ .ie7icon('');
+}
+
+
+.icon-comment {
+ .ie7icon('');
+}
+
+
+.icon-magnet {
+ .ie7icon('');
+}
+
+
+.icon-chevron-up {
+ .ie7icon('');
+}
+
+
+.icon-chevron-down {
+ .ie7icon('');
+}
+
+
+.icon-retweet {
+ .ie7icon('');
+}
+
+
+.icon-shopping-cart {
+ .ie7icon('');
+}
+
+
+.icon-folder-close {
+ .ie7icon('');
+}
+
+
+.icon-folder-open {
+ .ie7icon('');
+}
+
+
+.icon-resize-vertical {
+ .ie7icon('');
+}
+
+
+.icon-resize-horizontal {
+ .ie7icon('');
+}
+
+
+.icon-bar-chart {
+ .ie7icon('');
+}
+
+
+.icon-twitter-sign {
+ .ie7icon('');
+}
+
+
+.icon-facebook-sign {
+ .ie7icon('');
+}
+
+
+.icon-camera-retro {
+ .ie7icon('');
+}
+
+
+.icon-key {
+ .ie7icon('');
+}
+
+
+.icon-cogs {
+ .ie7icon('');
+}
+
+.icon-gears {
+ .ie7icon('');
+}
+
+
+.icon-comments {
+ .ie7icon('');
+}
+
+
+.icon-thumbs-up-alt {
+ .ie7icon('');
+}
+
+
+.icon-thumbs-down-alt {
+ .ie7icon('');
+}
+
+
+.icon-star-half {
+ .ie7icon('');
+}
+
+
+.icon-heart-empty {
+ .ie7icon('');
+}
+
+
+.icon-signout {
+ .ie7icon('');
+}
+
+
+.icon-linkedin-sign {
+ .ie7icon('');
+}
+
+
+.icon-pushpin {
+ .ie7icon('');
+}
+
+
+.icon-external-link {
+ .ie7icon('');
+}
+
+
+.icon-signin {
+ .ie7icon('');
+}
+
+
+.icon-trophy {
+ .ie7icon('');
+}
+
+
+.icon-github-sign {
+ .ie7icon('');
+}
+
+
+.icon-upload-alt {
+ .ie7icon('');
+}
+
+
+.icon-lemon {
+ .ie7icon('');
+}
+
+
+.icon-phone {
+ .ie7icon('');
+}
+
+
+.icon-check-empty {
+ .ie7icon('');
+}
+
+.icon-unchecked {
+ .ie7icon('');
+}
+
+
+.icon-bookmark-empty {
+ .ie7icon('');
+}
+
+
+.icon-phone-sign {
+ .ie7icon('');
+}
+
+
+.icon-twitter {
+ .ie7icon('');
+}
+
+
+.icon-facebook {
+ .ie7icon('');
+}
+
+
+.icon-github {
+ .ie7icon('');
+}
+
+
+.icon-unlock {
+ .ie7icon('');
+}
+
+
+.icon-credit-card {
+ .ie7icon('');
+}
+
+
+.icon-rss {
+ .ie7icon('');
+}
+
+
+.icon-hdd {
+ .ie7icon('');
+}
+
+
+.icon-bullhorn {
+ .ie7icon('');
+}
+
+
+.icon-bell {
+ .ie7icon('');
+}
+
+
+.icon-certificate {
+ .ie7icon('');
+}
+
+
+.icon-hand-right {
+ .ie7icon('');
+}
+
+
+.icon-hand-left {
+ .ie7icon('');
+}
+
+
+.icon-hand-up {
+ .ie7icon('');
+}
+
+
+.icon-hand-down {
+ .ie7icon('');
+}
+
+
+.icon-circle-arrow-left {
+ .ie7icon('');
+}
+
+
+.icon-circle-arrow-right {
+ .ie7icon('');
+}
+
+
+.icon-circle-arrow-up {
+ .ie7icon('');
+}
+
+
+.icon-circle-arrow-down {
+ .ie7icon('');
+}
+
+
+.icon-globe {
+ .ie7icon('');
+}
+
+
+.icon-wrench {
+ .ie7icon('');
+}
+
+
+.icon-tasks {
+ .ie7icon('');
+}
+
+
+.icon-filter {
+ .ie7icon('');
+}
+
+
+.icon-briefcase {
+ .ie7icon('');
+}
+
+
+.icon-fullscreen {
+ .ie7icon('');
+}
+
+
+.icon-group {
+ .ie7icon('');
+}
+
+
+.icon-link {
+ .ie7icon('');
+}
+
+
+.icon-cloud {
+ .ie7icon('');
+}
+
+
+.icon-beaker {
+ .ie7icon('');
+}
+
+
+.icon-cut {
+ .ie7icon('');
+}
+
+
+.icon-copy {
+ .ie7icon('');
+}
+
+
+.icon-paper-clip {
+ .ie7icon('');
+}
+
+.icon-paperclip {
+ .ie7icon('');
+}
+
+
+.icon-save {
+ .ie7icon('');
+}
+
+
+.icon-sign-blank {
+ .ie7icon('');
+}
+
+
+.icon-reorder {
+ .ie7icon('');
+}
+
+
+.icon-list-ul {
+ .ie7icon('');
+}
+
+
+.icon-list-ol {
+ .ie7icon('');
+}
+
+
+.icon-strikethrough {
+ .ie7icon('');
+}
+
+
+.icon-underline {
+ .ie7icon('');
+}
+
+
+.icon-table {
+ .ie7icon('');
+}
+
+
+.icon-magic {
+ .ie7icon('');
+}
+
+
+.icon-truck {
+ .ie7icon('');
+}
+
+
+.icon-pinterest {
+ .ie7icon('');
+}
+
+
+.icon-pinterest-sign {
+ .ie7icon('');
+}
+
+
+.icon-google-plus-sign {
+ .ie7icon('');
+}
+
+
+.icon-google-plus {
+ .ie7icon('');
+}
+
+
+.icon-money {
+ .ie7icon('');
+}
+
+
+.icon-caret-down {
+ .ie7icon('');
+}
+
+
+.icon-caret-up {
+ .ie7icon('');
+}
+
+
+.icon-caret-left {
+ .ie7icon('');
+}
+
+
+.icon-caret-right {
+ .ie7icon('');
+}
+
+
+.icon-columns {
+ .ie7icon('');
+}
+
+
+.icon-sort {
+ .ie7icon('');
+}
+
+
+.icon-sort-down {
+ .ie7icon('');
+}
+
+
+.icon-sort-up {
+ .ie7icon('');
+}
+
+
+.icon-envelope {
+ .ie7icon('');
+}
+
+
+.icon-linkedin {
+ .ie7icon('');
+}
+
+
+.icon-undo {
+ .ie7icon('');
+}
+
+.icon-rotate-left {
+ .ie7icon('');
+}
+
+
+.icon-legal {
+ .ie7icon('');
+}
+
+
+.icon-dashboard {
+ .ie7icon('');
+}
+
+
+.icon-comment-alt {
+ .ie7icon('');
+}
+
+
+.icon-comments-alt {
+ .ie7icon('');
+}
+
+
+.icon-bolt {
+ .ie7icon('');
+}
+
+
+.icon-sitemap {
+ .ie7icon('');
+}
+
+
+.icon-umbrella {
+ .ie7icon('');
+}
+
+
+.icon-paste {
+ .ie7icon('');
+}
+
+
+.icon-lightbulb {
+ .ie7icon('');
+}
+
+
+.icon-exchange {
+ .ie7icon('');
+}
+
+
+.icon-cloud-download {
+ .ie7icon('');
+}
+
+
+.icon-cloud-upload {
+ .ie7icon('');
+}
+
+
+.icon-user-md {
+ .ie7icon('');
+}
+
+
+.icon-stethoscope {
+ .ie7icon('');
+}
+
+
+.icon-suitcase {
+ .ie7icon('');
+}
+
+
+.icon-bell-alt {
+ .ie7icon('');
+}
+
+
+.icon-coffee {
+ .ie7icon('');
+}
+
+
+.icon-food {
+ .ie7icon('');
+}
+
+
+.icon-file-text-alt {
+ .ie7icon('');
+}
+
+
+.icon-building {
+ .ie7icon('');
+}
+
+
+.icon-hospital {
+ .ie7icon('');
+}
+
+
+.icon-ambulance {
+ .ie7icon('');
+}
+
+
+.icon-medkit {
+ .ie7icon('');
+}
+
+
+.icon-fighter-jet {
+ .ie7icon('');
+}
+
+
+.icon-beer {
+ .ie7icon('');
+}
+
+
+.icon-h-sign {
+ .ie7icon('');
+}
+
+
+.icon-plus-sign-alt {
+ .ie7icon('');
+}
+
+
+.icon-double-angle-left {
+ .ie7icon('');
+}
+
+
+.icon-double-angle-right {
+ .ie7icon('');
+}
+
+
+.icon-double-angle-up {
+ .ie7icon('');
+}
+
+
+.icon-double-angle-down {
+ .ie7icon('');
+}
+
+
+.icon-angle-left {
+ .ie7icon('');
+}
+
+
+.icon-angle-right {
+ .ie7icon('');
+}
+
+
+.icon-angle-up {
+ .ie7icon('');
+}
+
+
+.icon-angle-down {
+ .ie7icon('');
+}
+
+
+.icon-desktop {
+ .ie7icon('');
+}
+
+
+.icon-laptop {
+ .ie7icon('');
+}
+
+
+.icon-tablet {
+ .ie7icon('');
+}
+
+
+.icon-mobile-phone {
+ .ie7icon('');
+}
+
+
+.icon-circle-blank {
+ .ie7icon('');
+}
+
+
+.icon-quote-left {
+ .ie7icon('');
+}
+
+
+.icon-quote-right {
+ .ie7icon('');
+}
+
+
+.icon-spinner {
+ .ie7icon('');
+}
+
+
+.icon-circle {
+ .ie7icon('');
+}
+
+
+.icon-reply {
+ .ie7icon('');
+}
+
+.icon-mail-reply {
+ .ie7icon('');
+}
+
+
+.icon-github-alt {
+ .ie7icon('');
+}
+
+
+.icon-folder-close-alt {
+ .ie7icon('');
+}
+
+
+.icon-folder-open-alt {
+ .ie7icon('');
+}
+
+
+.icon-expand-alt {
+ .ie7icon('');
+}
+
+
+.icon-collapse-alt {
+ .ie7icon('');
+}
+
+
+.icon-smile {
+ .ie7icon('');
+}
+
+
+.icon-frown {
+ .ie7icon('');
+}
+
+
+.icon-meh {
+ .ie7icon('');
+}
+
+
+.icon-gamepad {
+ .ie7icon('');
+}
+
+
+.icon-keyboard {
+ .ie7icon('');
+}
+
+
+.icon-flag-alt {
+ .ie7icon('');
+}
+
+
+.icon-flag-checkered {
+ .ie7icon('');
+}
+
+
+.icon-terminal {
+ .ie7icon('');
+}
+
+
+.icon-code {
+ .ie7icon('');
+}
+
+
+.icon-reply-all {
+ .ie7icon('');
+}
+
+
+.icon-mail-reply-all {
+ .ie7icon('');
+}
+
+
+.icon-star-half-empty {
+ .ie7icon('');
+}
+
+.icon-star-half-full {
+ .ie7icon('');
+}
+
+
+.icon-location-arrow {
+ .ie7icon('');
+}
+
+
+.icon-crop {
+ .ie7icon('');
+}
+
+
+.icon-code-fork {
+ .ie7icon('');
+}
+
+
+.icon-unlink {
+ .ie7icon('');
+}
+
+
+.icon-question {
+ .ie7icon('');
+}
+
+
+.icon-info {
+ .ie7icon('');
+}
+
+
+.icon-exclamation {
+ .ie7icon('');
+}
+
+
+.icon-superscript {
+ .ie7icon('');
+}
+
+
+.icon-subscript {
+ .ie7icon('');
+}
+
+
+.icon-eraser {
+ .ie7icon('');
+}
+
+
+.icon-puzzle-piece {
+ .ie7icon('');
+}
+
+
+.icon-microphone {
+ .ie7icon('');
+}
+
+
+.icon-microphone-off {
+ .ie7icon('');
+}
+
+
+.icon-shield {
+ .ie7icon('');
+}
+
+
+.icon-calendar-empty {
+ .ie7icon('');
+}
+
+
+.icon-fire-extinguisher {
+ .ie7icon('');
+}
+
+
+.icon-rocket {
+ .ie7icon('');
+}
+
+
+.icon-maxcdn {
+ .ie7icon('');
+}
+
+
+.icon-chevron-sign-left {
+ .ie7icon('');
+}
+
+
+.icon-chevron-sign-right {
+ .ie7icon('');
+}
+
+
+.icon-chevron-sign-up {
+ .ie7icon('');
+}
+
+
+.icon-chevron-sign-down {
+ .ie7icon('');
+}
+
+
+.icon-html5 {
+ .ie7icon('');
+}
+
+
+.icon-css3 {
+ .ie7icon('');
+}
+
+
+.icon-anchor {
+ .ie7icon('');
+}
+
+
+.icon-unlock-alt {
+ .ie7icon('');
+}
+
+
+.icon-bullseye {
+ .ie7icon('');
+}
+
+
+.icon-ellipsis-horizontal {
+ .ie7icon('');
+}
+
+
+.icon-ellipsis-vertical {
+ .ie7icon('');
+}
+
+
+.icon-rss-sign {
+ .ie7icon('');
+}
+
+
+.icon-play-sign {
+ .ie7icon('');
+}
+
+
+.icon-ticket {
+ .ie7icon('');
+}
+
+
+.icon-minus-sign-alt {
+ .ie7icon('');
+}
+
+
+.icon-check-minus {
+ .ie7icon('');
+}
+
+
+.icon-level-up {
+ .ie7icon('');
+}
+
+
+.icon-level-down {
+ .ie7icon('');
+}
+
+
+.icon-check-sign {
+ .ie7icon('');
+}
+
+
+.icon-edit-sign {
+ .ie7icon('');
+}
+
+
+.icon-external-link-sign {
+ .ie7icon('');
+}
+
+
+.icon-share-sign {
+ .ie7icon('');
+}
+
+
+.icon-compass {
+ .ie7icon('');
+}
+
+
+.icon-collapse {
+ .ie7icon('');
+}
+
+
+.icon-collapse-top {
+ .ie7icon('');
+}
+
+
+.icon-expand {
+ .ie7icon('');
+}
+
+
+.icon-eur {
+ .ie7icon('');
+}
+
+.icon-euro {
+ .ie7icon('');
+}
+
+
+.icon-gbp {
+ .ie7icon('');
+}
+
+
+.icon-usd {
+ .ie7icon('');
+}
+
+.icon-dollar {
+ .ie7icon('');
+}
+
+
+.icon-inr {
+ .ie7icon('');
+}
+
+.icon-rupee {
+ .ie7icon('');
+}
+
+
+.icon-jpy {
+ .ie7icon('');
+}
+
+.icon-yen {
+ .ie7icon('');
+}
+
+
+.icon-cny {
+ .ie7icon('');
+}
+
+.icon-renminbi {
+ .ie7icon('');
+}
+
+
+.icon-krw {
+ .ie7icon('');
+}
+
+.icon-won {
+ .ie7icon('');
+}
+
+
+.icon-btc {
+ .ie7icon('');
+}
+
+.icon-bitcoin {
+ .ie7icon('');
+}
+
+
+.icon-file {
+ .ie7icon('');
+}
+
+
+.icon-file-text {
+ .ie7icon('');
+}
+
+
+.icon-sort-by-alphabet {
+ .ie7icon('');
+}
+
+
+.icon-sort-by-alphabet-alt {
+ .ie7icon('');
+}
+
+
+.icon-sort-by-attributes {
+ .ie7icon('');
+}
+
+
+.icon-sort-by-attributes-alt {
+ .ie7icon('');
+}
+
+
+.icon-sort-by-order {
+ .ie7icon('');
+}
+
+
+.icon-sort-by-order-alt {
+ .ie7icon('');
+}
+
+
+.icon-thumbs-up {
+ .ie7icon('');
+}
+
+
+.icon-thumbs-down {
+ .ie7icon('');
+}
+
+
+.icon-youtube-sign {
+ .ie7icon('');
+}
+
+
+.icon-youtube {
+ .ie7icon('');
+}
+
+
+.icon-xing {
+ .ie7icon('');
+}
+
+
+.icon-xing-sign {
+ .ie7icon('');
+}
+
+
+.icon-youtube-play {
+ .ie7icon('');
+}
+
+
+.icon-dropbox {
+ .ie7icon('');
+}
+
+
+.icon-stackexchange {
+ .ie7icon('');
+}
+
+
+.icon-instagram {
+ .ie7icon('');
+}
+
+
+.icon-flickr {
+ .ie7icon('');
+}
+
+
+.icon-adn {
+ .ie7icon('');
+}
+
+
+.icon-bitbucket {
+ .ie7icon('');
+}
+
+
+.icon-bitbucket-sign {
+ .ie7icon('');
+}
+
+
+.icon-tumblr {
+ .ie7icon('');
+}
+
+
+.icon-tumblr-sign {
+ .ie7icon('');
+}
+
+
+.icon-long-arrow-down {
+ .ie7icon('');
+}
+
+
+.icon-long-arrow-up {
+ .ie7icon('');
+}
+
+
+.icon-long-arrow-left {
+ .ie7icon('');
+}
+
+
+.icon-long-arrow-right {
+ .ie7icon('');
+}
+
+
+.icon-apple {
+ .ie7icon('');
+}
+
+
+.icon-windows {
+ .ie7icon('');
+}
+
+
+.icon-android {
+ .ie7icon('');
+}
+
+
+.icon-linux {
+ .ie7icon('');
+}
+
+
+.icon-dribbble {
+ .ie7icon('');
+}
+
+
+.icon-skype {
+ .ie7icon('');
+}
+
+
+.icon-foursquare {
+ .ie7icon('');
+}
+
+
+.icon-trello {
+ .ie7icon('');
+}
+
+
+.icon-female {
+ .ie7icon('');
+}
+
+
+.icon-male {
+ .ie7icon('');
+}
+
+
+.icon-gittip {
+ .ie7icon('');
+}
+
+
+.icon-sun {
+ .ie7icon('');
+}
+
+
+.icon-moon {
+ .ie7icon('');
+}
+
+
+.icon-archive {
+ .ie7icon('');
+}
+
+
+.icon-bug {
+ .ie7icon('');
+}
+
+
+.icon-vk {
+ .ie7icon('');
+}
+
+
+.icon-weibo {
+ .ie7icon('');
+}
+
+
+.icon-renren {
+ .ie7icon('');
+}
+
+
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/less/icons.less b/sm-shop/src/main/webapp/resources/css/font-awesome/less/icons.less
new file mode 100644
index 0000000..476d201
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/less/icons.less
@@ -0,0 +1,381 @@
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+
+.icon-glass:before { content: @glass; }
+.icon-music:before { content: @music; }
+.icon-search:before { content: @search; }
+.icon-envelope-alt:before { content: @envelope-alt; }
+.icon-heart:before { content: @heart; }
+.icon-star:before { content: @star; }
+.icon-star-empty:before { content: @star-empty; }
+.icon-user:before { content: @user; }
+.icon-film:before { content: @film; }
+.icon-th-large:before { content: @th-large; }
+.icon-th:before { content: @th; }
+.icon-th-list:before { content: @th-list; }
+.icon-ok:before { content: @ok; }
+.icon-remove:before { content: @remove; }
+.icon-zoom-in:before { content: @zoom-in; }
+.icon-zoom-out:before { content: @zoom-out; }
+.icon-power-off:before,
+.icon-off:before { content: @off; }
+.icon-signal:before { content: @signal; }
+.icon-gear:before,
+.icon-cog:before { content: @cog; }
+.icon-trash:before { content: @trash; }
+.icon-home:before { content: @home; }
+.icon-file-alt:before { content: @file-alt; }
+.icon-time:before { content: @time; }
+.icon-road:before { content: @road; }
+.icon-download-alt:before { content: @download-alt; }
+.icon-download:before { content: @download; }
+.icon-upload:before { content: @upload; }
+.icon-inbox:before { content: @inbox; }
+.icon-play-circle:before { content: @play-circle; }
+.icon-rotate-right:before,
+.icon-repeat:before { content: @repeat; }
+.icon-refresh:before { content: @refresh; }
+.icon-list-alt:before { content: @list-alt; }
+.icon-lock:before { content: @lock; }
+.icon-flag:before { content: @flag; }
+.icon-headphones:before { content: @headphones; }
+.icon-volume-off:before { content: @volume-off; }
+.icon-volume-down:before { content: @volume-down; }
+.icon-volume-up:before { content: @volume-up; }
+.icon-qrcode:before { content: @qrcode; }
+.icon-barcode:before { content: @barcode; }
+.icon-tag:before { content: @tag; }
+.icon-tags:before { content: @tags; }
+.icon-book:before { content: @book; }
+.icon-bookmark:before { content: @bookmark; }
+.icon-print:before { content: @print; }
+.icon-camera:before { content: @camera; }
+.icon-font:before { content: @font; }
+.icon-bold:before { content: @bold; }
+.icon-italic:before { content: @italic; }
+.icon-text-height:before { content: @text-height; }
+.icon-text-width:before { content: @text-width; }
+.icon-align-left:before { content: @align-left; }
+.icon-align-center:before { content: @align-center; }
+.icon-align-right:before { content: @align-right; }
+.icon-align-justify:before { content: @align-justify; }
+.icon-list:before { content: @list; }
+.icon-indent-left:before { content: @indent-left; }
+.icon-indent-right:before { content: @indent-right; }
+.icon-facetime-video:before { content: @facetime-video; }
+.icon-picture:before { content: @picture; }
+.icon-pencil:before { content: @pencil; }
+.icon-map-marker:before { content: @map-marker; }
+.icon-adjust:before { content: @adjust; }
+.icon-tint:before { content: @tint; }
+.icon-edit:before { content: @edit; }
+.icon-share:before { content: @share; }
+.icon-check:before { content: @check; }
+.icon-move:before { content: @move; }
+.icon-step-backward:before { content: @step-backward; }
+.icon-fast-backward:before { content: @fast-backward; }
+.icon-backward:before { content: @backward; }
+.icon-play:before { content: @play; }
+.icon-pause:before { content: @pause; }
+.icon-stop:before { content: @stop; }
+.icon-forward:before { content: @forward; }
+.icon-fast-forward:before { content: @fast-forward; }
+.icon-step-forward:before { content: @step-forward; }
+.icon-eject:before { content: @eject; }
+.icon-chevron-left:before { content: @chevron-left; }
+.icon-chevron-right:before { content: @chevron-right; }
+.icon-plus-sign:before { content: @plus-sign; }
+.icon-minus-sign:before { content: @minus-sign; }
+.icon-remove-sign:before { content: @remove-sign; }
+.icon-ok-sign:before { content: @ok-sign; }
+.icon-question-sign:before { content: @question-sign; }
+.icon-info-sign:before { content: @info-sign; }
+.icon-screenshot:before { content: @screenshot; }
+.icon-remove-circle:before { content: @remove-circle; }
+.icon-ok-circle:before { content: @ok-circle; }
+.icon-ban-circle:before { content: @ban-circle; }
+.icon-arrow-left:before { content: @arrow-left; }
+.icon-arrow-right:before { content: @arrow-right; }
+.icon-arrow-up:before { content: @arrow-up; }
+.icon-arrow-down:before { content: @arrow-down; }
+.icon-mail-forward:before,
+.icon-share-alt:before { content: @share-alt; }
+.icon-resize-full:before { content: @resize-full; }
+.icon-resize-small:before { content: @resize-small; }
+.icon-plus:before { content: @plus; }
+.icon-minus:before { content: @minus; }
+.icon-asterisk:before { content: @asterisk; }
+.icon-exclamation-sign:before { content: @exclamation-sign; }
+.icon-gift:before { content: @gift; }
+.icon-leaf:before { content: @leaf; }
+.icon-fire:before { content: @fire; }
+.icon-eye-open:before { content: @eye-open; }
+.icon-eye-close:before { content: @eye-close; }
+.icon-warning-sign:before { content: @warning-sign; }
+.icon-plane:before { content: @plane; }
+.icon-calendar:before { content: @calendar; }
+.icon-random:before { content: @random; }
+.icon-comment:before { content: @comment; }
+.icon-magnet:before { content: @magnet; }
+.icon-chevron-up:before { content: @chevron-up; }
+.icon-chevron-down:before { content: @chevron-down; }
+.icon-retweet:before { content: @retweet; }
+.icon-shopping-cart:before { content: @shopping-cart; }
+.icon-folder-close:before { content: @folder-close; }
+.icon-folder-open:before { content: @folder-open; }
+.icon-resize-vertical:before { content: @resize-vertical; }
+.icon-resize-horizontal:before { content: @resize-horizontal; }
+.icon-bar-chart:before { content: @bar-chart; }
+.icon-twitter-sign:before { content: @twitter-sign; }
+.icon-facebook-sign:before { content: @facebook-sign; }
+.icon-camera-retro:before { content: @camera-retro; }
+.icon-key:before { content: @key; }
+.icon-gears:before,
+.icon-cogs:before { content: @cogs; }
+.icon-comments:before { content: @comments; }
+.icon-thumbs-up-alt:before { content: @thumbs-up-alt; }
+.icon-thumbs-down-alt:before { content: @thumbs-down-alt; }
+.icon-star-half:before { content: @star-half; }
+.icon-heart-empty:before { content: @heart-empty; }
+.icon-signout:before { content: @signout; }
+.icon-linkedin-sign:before { content: @linkedin-sign; }
+.icon-pushpin:before { content: @pushpin; }
+.icon-external-link:before { content: @external-link; }
+.icon-signin:before { content: @signin; }
+.icon-trophy:before { content: @trophy; }
+.icon-github-sign:before { content: @github-sign; }
+.icon-upload-alt:before { content: @upload-alt; }
+.icon-lemon:before { content: @lemon; }
+.icon-phone:before { content: @phone; }
+.icon-unchecked:before,
+.icon-check-empty:before { content: @check-empty; }
+.icon-bookmark-empty:before { content: @bookmark-empty; }
+.icon-phone-sign:before { content: @phone-sign; }
+.icon-twitter:before { content: @twitter; }
+.icon-facebook:before { content: @facebook; }
+.icon-github:before { content: @github; }
+.icon-unlock:before { content: @unlock; }
+.icon-credit-card:before { content: @credit-card; }
+.icon-rss:before { content: @rss; }
+.icon-hdd:before { content: @hdd; }
+.icon-bullhorn:before { content: @bullhorn; }
+.icon-bell:before { content: @bell; }
+.icon-certificate:before { content: @certificate; }
+.icon-hand-right:before { content: @hand-right; }
+.icon-hand-left:before { content: @hand-left; }
+.icon-hand-up:before { content: @hand-up; }
+.icon-hand-down:before { content: @hand-down; }
+.icon-circle-arrow-left:before { content: @circle-arrow-left; }
+.icon-circle-arrow-right:before { content: @circle-arrow-right; }
+.icon-circle-arrow-up:before { content: @circle-arrow-up; }
+.icon-circle-arrow-down:before { content: @circle-arrow-down; }
+.icon-globe:before { content: @globe; }
+.icon-wrench:before { content: @wrench; }
+.icon-tasks:before { content: @tasks; }
+.icon-filter:before { content: @filter; }
+.icon-briefcase:before { content: @briefcase; }
+.icon-fullscreen:before { content: @fullscreen; }
+.icon-group:before { content: @group; }
+.icon-link:before { content: @link; }
+.icon-cloud:before { content: @cloud; }
+.icon-beaker:before { content: @beaker; }
+.icon-cut:before { content: @cut; }
+.icon-copy:before { content: @copy; }
+.icon-paperclip:before,
+.icon-paper-clip:before { content: @paper-clip; }
+.icon-save:before { content: @save; }
+.icon-sign-blank:before { content: @sign-blank; }
+.icon-reorder:before { content: @reorder; }
+.icon-list-ul:before { content: @list-ul; }
+.icon-list-ol:before { content: @list-ol; }
+.icon-strikethrough:before { content: @strikethrough; }
+.icon-underline:before { content: @underline; }
+.icon-table:before { content: @table; }
+.icon-magic:before { content: @magic; }
+.icon-truck:before { content: @truck; }
+.icon-pinterest:before { content: @pinterest; }
+.icon-pinterest-sign:before { content: @pinterest-sign; }
+.icon-google-plus-sign:before { content: @google-plus-sign; }
+.icon-google-plus:before { content: @google-plus; }
+.icon-money:before { content: @money; }
+.icon-caret-down:before { content: @caret-down; }
+.icon-caret-up:before { content: @caret-up; }
+.icon-caret-left:before { content: @caret-left; }
+.icon-caret-right:before { content: @caret-right; }
+.icon-columns:before { content: @columns; }
+.icon-sort:before { content: @sort; }
+.icon-sort-down:before { content: @sort-down; }
+.icon-sort-up:before { content: @sort-up; }
+.icon-envelope:before { content: @envelope; }
+.icon-linkedin:before { content: @linkedin; }
+.icon-rotate-left:before,
+.icon-undo:before { content: @undo; }
+.icon-legal:before { content: @legal; }
+.icon-dashboard:before { content: @dashboard; }
+.icon-comment-alt:before { content: @comment-alt; }
+.icon-comments-alt:before { content: @comments-alt; }
+.icon-bolt:before { content: @bolt; }
+.icon-sitemap:before { content: @sitemap; }
+.icon-umbrella:before { content: @umbrella; }
+.icon-paste:before { content: @paste; }
+.icon-lightbulb:before { content: @lightbulb; }
+.icon-exchange:before { content: @exchange; }
+.icon-cloud-download:before { content: @cloud-download; }
+.icon-cloud-upload:before { content: @cloud-upload; }
+.icon-user-md:before { content: @user-md; }
+.icon-stethoscope:before { content: @stethoscope; }
+.icon-suitcase:before { content: @suitcase; }
+.icon-bell-alt:before { content: @bell-alt; }
+.icon-coffee:before { content: @coffee; }
+.icon-food:before { content: @food; }
+.icon-file-text-alt:before { content: @file-text-alt; }
+.icon-building:before { content: @building; }
+.icon-hospital:before { content: @hospital; }
+.icon-ambulance:before { content: @ambulance; }
+.icon-medkit:before { content: @medkit; }
+.icon-fighter-jet:before { content: @fighter-jet; }
+.icon-beer:before { content: @beer; }
+.icon-h-sign:before { content: @h-sign; }
+.icon-plus-sign-alt:before { content: @plus-sign-alt; }
+.icon-double-angle-left:before { content: @double-angle-left; }
+.icon-double-angle-right:before { content: @double-angle-right; }
+.icon-double-angle-up:before { content: @double-angle-up; }
+.icon-double-angle-down:before { content: @double-angle-down; }
+.icon-angle-left:before { content: @angle-left; }
+.icon-angle-right:before { content: @angle-right; }
+.icon-angle-up:before { content: @angle-up; }
+.icon-angle-down:before { content: @angle-down; }
+.icon-desktop:before { content: @desktop; }
+.icon-laptop:before { content: @laptop; }
+.icon-tablet:before { content: @tablet; }
+.icon-mobile-phone:before { content: @mobile-phone; }
+.icon-circle-blank:before { content: @circle-blank; }
+.icon-quote-left:before { content: @quote-left; }
+.icon-quote-right:before { content: @quote-right; }
+.icon-spinner:before { content: @spinner; }
+.icon-circle:before { content: @circle; }
+.icon-mail-reply:before,
+.icon-reply:before { content: @reply; }
+.icon-github-alt:before { content: @github-alt; }
+.icon-folder-close-alt:before { content: @folder-close-alt; }
+.icon-folder-open-alt:before { content: @folder-open-alt; }
+.icon-expand-alt:before { content: @expand-alt; }
+.icon-collapse-alt:before { content: @collapse-alt; }
+.icon-smile:before { content: @smile; }
+.icon-frown:before { content: @frown; }
+.icon-meh:before { content: @meh; }
+.icon-gamepad:before { content: @gamepad; }
+.icon-keyboard:before { content: @keyboard; }
+.icon-flag-alt:before { content: @flag-alt; }
+.icon-flag-checkered:before { content: @flag-checkered; }
+.icon-terminal:before { content: @terminal; }
+.icon-code:before { content: @code; }
+.icon-reply-all:before { content: @reply-all; }
+.icon-mail-reply-all:before { content: @mail-reply-all; }
+.icon-star-half-full:before,
+.icon-star-half-empty:before { content: @star-half-empty; }
+.icon-location-arrow:before { content: @location-arrow; }
+.icon-crop:before { content: @crop; }
+.icon-code-fork:before { content: @code-fork; }
+.icon-unlink:before { content: @unlink; }
+.icon-question:before { content: @question; }
+.icon-info:before { content: @info; }
+.icon-exclamation:before { content: @exclamation; }
+.icon-superscript:before { content: @superscript; }
+.icon-subscript:before { content: @subscript; }
+.icon-eraser:before { content: @eraser; }
+.icon-puzzle-piece:before { content: @puzzle-piece; }
+.icon-microphone:before { content: @microphone; }
+.icon-microphone-off:before { content: @microphone-off; }
+.icon-shield:before { content: @shield; }
+.icon-calendar-empty:before { content: @calendar-empty; }
+.icon-fire-extinguisher:before { content: @fire-extinguisher; }
+.icon-rocket:before { content: @rocket; }
+.icon-maxcdn:before { content: @maxcdn; }
+.icon-chevron-sign-left:before { content: @chevron-sign-left; }
+.icon-chevron-sign-right:before { content: @chevron-sign-right; }
+.icon-chevron-sign-up:before { content: @chevron-sign-up; }
+.icon-chevron-sign-down:before { content: @chevron-sign-down; }
+.icon-html5:before { content: @html5; }
+.icon-css3:before { content: @css3; }
+.icon-anchor:before { content: @anchor; }
+.icon-unlock-alt:before { content: @unlock-alt; }
+.icon-bullseye:before { content: @bullseye; }
+.icon-ellipsis-horizontal:before { content: @ellipsis-horizontal; }
+.icon-ellipsis-vertical:before { content: @ellipsis-vertical; }
+.icon-rss-sign:before { content: @rss-sign; }
+.icon-play-sign:before { content: @play-sign; }
+.icon-ticket:before { content: @ticket; }
+.icon-minus-sign-alt:before { content: @minus-sign-alt; }
+.icon-check-minus:before { content: @check-minus; }
+.icon-level-up:before { content: @level-up; }
+.icon-level-down:before { content: @level-down; }
+.icon-check-sign:before { content: @check-sign; }
+.icon-edit-sign:before { content: @edit-sign; }
+.icon-external-link-sign:before { content: @external-link-sign; }
+.icon-share-sign:before { content: @share-sign; }
+.icon-compass:before { content: @compass; }
+.icon-collapse:before { content: @collapse; }
+.icon-collapse-top:before { content: @collapse-top; }
+.icon-expand:before { content: @expand; }
+.icon-euro:before,
+.icon-eur:before { content: @eur; }
+.icon-gbp:before { content: @gbp; }
+.icon-dollar:before,
+.icon-usd:before { content: @usd; }
+.icon-rupee:before,
+.icon-inr:before { content: @inr; }
+.icon-yen:before,
+.icon-jpy:before { content: @jpy; }
+.icon-renminbi:before,
+.icon-cny:before { content: @cny; }
+.icon-won:before,
+.icon-krw:before { content: @krw; }
+.icon-bitcoin:before,
+.icon-btc:before { content: @btc; }
+.icon-file:before { content: @file; }
+.icon-file-text:before { content: @file-text; }
+.icon-sort-by-alphabet:before { content: @sort-by-alphabet; }
+.icon-sort-by-alphabet-alt:before { content: @sort-by-alphabet-alt; }
+.icon-sort-by-attributes:before { content: @sort-by-attributes; }
+.icon-sort-by-attributes-alt:before { content: @sort-by-attributes-alt; }
+.icon-sort-by-order:before { content: @sort-by-order; }
+.icon-sort-by-order-alt:before { content: @sort-by-order-alt; }
+.icon-thumbs-up:before { content: @thumbs-up; }
+.icon-thumbs-down:before { content: @thumbs-down; }
+.icon-youtube-sign:before { content: @youtube-sign; }
+.icon-youtube:before { content: @youtube; }
+.icon-xing:before { content: @xing; }
+.icon-xing-sign:before { content: @xing-sign; }
+.icon-youtube-play:before { content: @youtube-play; }
+.icon-dropbox:before { content: @dropbox; }
+.icon-stackexchange:before { content: @stackexchange; }
+.icon-instagram:before { content: @instagram; }
+.icon-flickr:before { content: @flickr; }
+.icon-adn:before { content: @adn; }
+.icon-bitbucket:before { content: @bitbucket; }
+.icon-bitbucket-sign:before { content: @bitbucket-sign; }
+.icon-tumblr:before { content: @tumblr; }
+.icon-tumblr-sign:before { content: @tumblr-sign; }
+.icon-long-arrow-down:before { content: @long-arrow-down; }
+.icon-long-arrow-up:before { content: @long-arrow-up; }
+.icon-long-arrow-left:before { content: @long-arrow-left; }
+.icon-long-arrow-right:before { content: @long-arrow-right; }
+.icon-apple:before { content: @apple; }
+.icon-windows:before { content: @windows; }
+.icon-android:before { content: @android; }
+.icon-linux:before { content: @linux; }
+.icon-dribbble:before { content: @dribbble; }
+.icon-skype:before { content: @skype; }
+.icon-foursquare:before { content: @foursquare; }
+.icon-trello:before { content: @trello; }
+.icon-female:before { content: @female; }
+.icon-male:before { content: @male; }
+.icon-gittip:before { content: @gittip; }
+.icon-sun:before { content: @sun; }
+.icon-moon:before { content: @moon; }
+.icon-archive:before { content: @archive; }
+.icon-bug:before { content: @bug; }
+.icon-vk:before { content: @vk; }
+.icon-weibo:before { content: @weibo; }
+.icon-renren:before { content: @renren; }
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/less/mixins.less b/sm-shop/src/main/webapp/resources/css/font-awesome/less/mixins.less
new file mode 100644
index 0000000..f7fdda5
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/less/mixins.less
@@ -0,0 +1,48 @@
+// Mixins
+// --------------------------
+
+.icon(@icon) {
+ .icon-FontAwesome();
+ content: @icon;
+}
+
+.icon-FontAwesome() {
+ font-family: FontAwesome;
+ font-weight: normal;
+ font-style: normal;
+ text-decoration: inherit;
+ -webkit-font-smoothing: antialiased;
+ *margin-right: .3em; // fixes ie7 issues
+}
+
+.border-radius(@radius) {
+ -webkit-border-radius: @radius;
+ -moz-border-radius: @radius;
+ border-radius: @radius;
+}
+
+.icon-stack(@width: 2em, @height: 2em, @top-font-size: 1em, @base-font-size: 2em) {
+ .icon-stack {
+ position: relative;
+ display: inline-block;
+ width: @width;
+ height: @height;
+ line-height: @width;
+ vertical-align: -35%;
+ [class^="icon-"],
+ [class*=" icon-"] {
+ display: block;
+ text-align: center;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ font-size: @top-font-size;
+ line-height: inherit;
+ *line-height: @height;
+ }
+ .icon-stack-base {
+ font-size: @base-font-size;
+ *line-height: @height / @base-font-size;
+ }
+ }
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/less/path.less b/sm-shop/src/main/webapp/resources/css/font-awesome/less/path.less
new file mode 100644
index 0000000..8ccef8c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/less/path.less
@@ -0,0 +1,14 @@
+/* FONT PATH
+ * -------------------------- */
+
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('@{FontAwesomePath}/fontawesome-webfont.eot?v=@{FontAwesomeVersion}');
+ src: url('@{FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=@{FontAwesomeVersion}') format('embedded-opentype'),
+ url('@{FontAwesomePath}/fontawesome-webfont.woff?v=@{FontAwesomeVersion}') format('woff'),
+ url('@{FontAwesomePath}/fontawesome-webfont.ttf?v=@{FontAwesomeVersion}') format('truetype'),
+ url('@{FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=@{FontAwesomeVersion}') format('svg');
+// src: url('@{FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts
+ font-weight: normal;
+ font-style: normal;
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/less/variables.less b/sm-shop/src/main/webapp/resources/css/font-awesome/less/variables.less
new file mode 100644
index 0000000..9d0879b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/less/variables.less
@@ -0,0 +1,735 @@
+// Variables
+// --------------------------
+
+@FontAwesomePath: "../font";
+//@FontAwesomePath: "//netdna.bootstrapcdn.com/font-awesome/3.2.1/font"; // for referencing Bootstrap CDN font files directly
+@FontAwesomeVersion: "3.2.1";
+@borderColor: #eee;
+@iconMuted: #eee;
+@iconLight: #fff;
+@iconDark: #333;
+@icons-li-width: 30/14em;
+
+
+ @glass: "\f000";
+
+ @music: "\f001";
+
+ @search: "\f002";
+
+ @envelope-alt: "\f003";
+
+ @heart: "\f004";
+
+ @star: "\f005";
+
+ @star-empty: "\f006";
+
+ @user: "\f007";
+
+ @film: "\f008";
+
+ @th-large: "\f009";
+
+ @th: "\f00a";
+
+ @th-list: "\f00b";
+
+ @ok: "\f00c";
+
+ @remove: "\f00d";
+
+ @zoom-in: "\f00e";
+
+ @zoom-out: "\f010";
+
+ @off: "\f011";
+
+ @signal: "\f012";
+
+ @cog: "\f013";
+
+ @trash: "\f014";
+
+ @home: "\f015";
+
+ @file-alt: "\f016";
+
+ @time: "\f017";
+
+ @road: "\f018";
+
+ @download-alt: "\f019";
+
+ @download: "\f01a";
+
+ @upload: "\f01b";
+
+ @inbox: "\f01c";
+
+ @play-circle: "\f01d";
+
+ @repeat: "\f01e";
+
+ @refresh: "\f021";
+
+ @list-alt: "\f022";
+
+ @lock: "\f023";
+
+ @flag: "\f024";
+
+ @headphones: "\f025";
+
+ @volume-off: "\f026";
+
+ @volume-down: "\f027";
+
+ @volume-up: "\f028";
+
+ @qrcode: "\f029";
+
+ @barcode: "\f02a";
+
+ @tag: "\f02b";
+
+ @tags: "\f02c";
+
+ @book: "\f02d";
+
+ @bookmark: "\f02e";
+
+ @print: "\f02f";
+
+ @camera: "\f030";
+
+ @font: "\f031";
+
+ @bold: "\f032";
+
+ @italic: "\f033";
+
+ @text-height: "\f034";
+
+ @text-width: "\f035";
+
+ @align-left: "\f036";
+
+ @align-center: "\f037";
+
+ @align-right: "\f038";
+
+ @align-justify: "\f039";
+
+ @list: "\f03a";
+
+ @indent-left: "\f03b";
+
+ @indent-right: "\f03c";
+
+ @facetime-video: "\f03d";
+
+ @picture: "\f03e";
+
+ @pencil: "\f040";
+
+ @map-marker: "\f041";
+
+ @adjust: "\f042";
+
+ @tint: "\f043";
+
+ @edit: "\f044";
+
+ @share: "\f045";
+
+ @check: "\f046";
+
+ @move: "\f047";
+
+ @step-backward: "\f048";
+
+ @fast-backward: "\f049";
+
+ @backward: "\f04a";
+
+ @play: "\f04b";
+
+ @pause: "\f04c";
+
+ @stop: "\f04d";
+
+ @forward: "\f04e";
+
+ @fast-forward: "\f050";
+
+ @step-forward: "\f051";
+
+ @eject: "\f052";
+
+ @chevron-left: "\f053";
+
+ @chevron-right: "\f054";
+
+ @plus-sign: "\f055";
+
+ @minus-sign: "\f056";
+
+ @remove-sign: "\f057";
+
+ @ok-sign: "\f058";
+
+ @question-sign: "\f059";
+
+ @info-sign: "\f05a";
+
+ @screenshot: "\f05b";
+
+ @remove-circle: "\f05c";
+
+ @ok-circle: "\f05d";
+
+ @ban-circle: "\f05e";
+
+ @arrow-left: "\f060";
+
+ @arrow-right: "\f061";
+
+ @arrow-up: "\f062";
+
+ @arrow-down: "\f063";
+
+ @share-alt: "\f064";
+
+ @resize-full: "\f065";
+
+ @resize-small: "\f066";
+
+ @plus: "\f067";
+
+ @minus: "\f068";
+
+ @asterisk: "\f069";
+
+ @exclamation-sign: "\f06a";
+
+ @gift: "\f06b";
+
+ @leaf: "\f06c";
+
+ @fire: "\f06d";
+
+ @eye-open: "\f06e";
+
+ @eye-close: "\f070";
+
+ @warning-sign: "\f071";
+
+ @plane: "\f072";
+
+ @calendar: "\f073";
+
+ @random: "\f074";
+
+ @comment: "\f075";
+
+ @magnet: "\f076";
+
+ @chevron-up: "\f077";
+
+ @chevron-down: "\f078";
+
+ @retweet: "\f079";
+
+ @shopping-cart: "\f07a";
+
+ @folder-close: "\f07b";
+
+ @folder-open: "\f07c";
+
+ @resize-vertical: "\f07d";
+
+ @resize-horizontal: "\f07e";
+
+ @bar-chart: "\f080";
+
+ @twitter-sign: "\f081";
+
+ @facebook-sign: "\f082";
+
+ @camera-retro: "\f083";
+
+ @key: "\f084";
+
+ @cogs: "\f085";
+
+ @comments: "\f086";
+
+ @thumbs-up-alt: "\f087";
+
+ @thumbs-down-alt: "\f088";
+
+ @star-half: "\f089";
+
+ @heart-empty: "\f08a";
+
+ @signout: "\f08b";
+
+ @linkedin-sign: "\f08c";
+
+ @pushpin: "\f08d";
+
+ @external-link: "\f08e";
+
+ @signin: "\f090";
+
+ @trophy: "\f091";
+
+ @github-sign: "\f092";
+
+ @upload-alt: "\f093";
+
+ @lemon: "\f094";
+
+ @phone: "\f095";
+
+ @check-empty: "\f096";
+
+ @bookmark-empty: "\f097";
+
+ @phone-sign: "\f098";
+
+ @twitter: "\f099";
+
+ @facebook: "\f09a";
+
+ @github: "\f09b";
+
+ @unlock: "\f09c";
+
+ @credit-card: "\f09d";
+
+ @rss: "\f09e";
+
+ @hdd: "\f0a0";
+
+ @bullhorn: "\f0a1";
+
+ @bell: "\f0a2";
+
+ @certificate: "\f0a3";
+
+ @hand-right: "\f0a4";
+
+ @hand-left: "\f0a5";
+
+ @hand-up: "\f0a6";
+
+ @hand-down: "\f0a7";
+
+ @circle-arrow-left: "\f0a8";
+
+ @circle-arrow-right: "\f0a9";
+
+ @circle-arrow-up: "\f0aa";
+
+ @circle-arrow-down: "\f0ab";
+
+ @globe: "\f0ac";
+
+ @wrench: "\f0ad";
+
+ @tasks: "\f0ae";
+
+ @filter: "\f0b0";
+
+ @briefcase: "\f0b1";
+
+ @fullscreen: "\f0b2";
+
+ @group: "\f0c0";
+
+ @link: "\f0c1";
+
+ @cloud: "\f0c2";
+
+ @beaker: "\f0c3";
+
+ @cut: "\f0c4";
+
+ @copy: "\f0c5";
+
+ @paper-clip: "\f0c6";
+
+ @save: "\f0c7";
+
+ @sign-blank: "\f0c8";
+
+ @reorder: "\f0c9";
+
+ @list-ul: "\f0ca";
+
+ @list-ol: "\f0cb";
+
+ @strikethrough: "\f0cc";
+
+ @underline: "\f0cd";
+
+ @table: "\f0ce";
+
+ @magic: "\f0d0";
+
+ @truck: "\f0d1";
+
+ @pinterest: "\f0d2";
+
+ @pinterest-sign: "\f0d3";
+
+ @google-plus-sign: "\f0d4";
+
+ @google-plus: "\f0d5";
+
+ @money: "\f0d6";
+
+ @caret-down: "\f0d7";
+
+ @caret-up: "\f0d8";
+
+ @caret-left: "\f0d9";
+
+ @caret-right: "\f0da";
+
+ @columns: "\f0db";
+
+ @sort: "\f0dc";
+
+ @sort-down: "\f0dd";
+
+ @sort-up: "\f0de";
+
+ @envelope: "\f0e0";
+
+ @linkedin: "\f0e1";
+
+ @undo: "\f0e2";
+
+ @legal: "\f0e3";
+
+ @dashboard: "\f0e4";
+
+ @comment-alt: "\f0e5";
+
+ @comments-alt: "\f0e6";
+
+ @bolt: "\f0e7";
+
+ @sitemap: "\f0e8";
+
+ @umbrella: "\f0e9";
+
+ @paste: "\f0ea";
+
+ @lightbulb: "\f0eb";
+
+ @exchange: "\f0ec";
+
+ @cloud-download: "\f0ed";
+
+ @cloud-upload: "\f0ee";
+
+ @user-md: "\f0f0";
+
+ @stethoscope: "\f0f1";
+
+ @suitcase: "\f0f2";
+
+ @bell-alt: "\f0f3";
+
+ @coffee: "\f0f4";
+
+ @food: "\f0f5";
+
+ @file-text-alt: "\f0f6";
+
+ @building: "\f0f7";
+
+ @hospital: "\f0f8";
+
+ @ambulance: "\f0f9";
+
+ @medkit: "\f0fa";
+
+ @fighter-jet: "\f0fb";
+
+ @beer: "\f0fc";
+
+ @h-sign: "\f0fd";
+
+ @plus-sign-alt: "\f0fe";
+
+ @double-angle-left: "\f100";
+
+ @double-angle-right: "\f101";
+
+ @double-angle-up: "\f102";
+
+ @double-angle-down: "\f103";
+
+ @angle-left: "\f104";
+
+ @angle-right: "\f105";
+
+ @angle-up: "\f106";
+
+ @angle-down: "\f107";
+
+ @desktop: "\f108";
+
+ @laptop: "\f109";
+
+ @tablet: "\f10a";
+
+ @mobile-phone: "\f10b";
+
+ @circle-blank: "\f10c";
+
+ @quote-left: "\f10d";
+
+ @quote-right: "\f10e";
+
+ @spinner: "\f110";
+
+ @circle: "\f111";
+
+ @reply: "\f112";
+
+ @github-alt: "\f113";
+
+ @folder-close-alt: "\f114";
+
+ @folder-open-alt: "\f115";
+
+ @expand-alt: "\f116";
+
+ @collapse-alt: "\f117";
+
+ @smile: "\f118";
+
+ @frown: "\f119";
+
+ @meh: "\f11a";
+
+ @gamepad: "\f11b";
+
+ @keyboard: "\f11c";
+
+ @flag-alt: "\f11d";
+
+ @flag-checkered: "\f11e";
+
+ @terminal: "\f120";
+
+ @code: "\f121";
+
+ @reply-all: "\f122";
+
+ @mail-reply-all: "\f122";
+
+ @star-half-empty: "\f123";
+
+ @location-arrow: "\f124";
+
+ @crop: "\f125";
+
+ @code-fork: "\f126";
+
+ @unlink: "\f127";
+
+ @question: "\f128";
+
+ @info: "\f129";
+
+ @exclamation: "\f12a";
+
+ @superscript: "\f12b";
+
+ @subscript: "\f12c";
+
+ @eraser: "\f12d";
+
+ @puzzle-piece: "\f12e";
+
+ @microphone: "\f130";
+
+ @microphone-off: "\f131";
+
+ @shield: "\f132";
+
+ @calendar-empty: "\f133";
+
+ @fire-extinguisher: "\f134";
+
+ @rocket: "\f135";
+
+ @maxcdn: "\f136";
+
+ @chevron-sign-left: "\f137";
+
+ @chevron-sign-right: "\f138";
+
+ @chevron-sign-up: "\f139";
+
+ @chevron-sign-down: "\f13a";
+
+ @html5: "\f13b";
+
+ @css3: "\f13c";
+
+ @anchor: "\f13d";
+
+ @unlock-alt: "\f13e";
+
+ @bullseye: "\f140";
+
+ @ellipsis-horizontal: "\f141";
+
+ @ellipsis-vertical: "\f142";
+
+ @rss-sign: "\f143";
+
+ @play-sign: "\f144";
+
+ @ticket: "\f145";
+
+ @minus-sign-alt: "\f146";
+
+ @check-minus: "\f147";
+
+ @level-up: "\f148";
+
+ @level-down: "\f149";
+
+ @check-sign: "\f14a";
+
+ @edit-sign: "\f14b";
+
+ @external-link-sign: "\f14c";
+
+ @share-sign: "\f14d";
+
+ @compass: "\f14e";
+
+ @collapse: "\f150";
+
+ @collapse-top: "\f151";
+
+ @expand: "\f152";
+
+ @eur: "\f153";
+
+ @gbp: "\f154";
+
+ @usd: "\f155";
+
+ @inr: "\f156";
+
+ @jpy: "\f157";
+
+ @cny: "\f158";
+
+ @krw: "\f159";
+
+ @btc: "\f15a";
+
+ @file: "\f15b";
+
+ @file-text: "\f15c";
+
+ @sort-by-alphabet: "\f15d";
+
+ @sort-by-alphabet-alt: "\f15e";
+
+ @sort-by-attributes: "\f160";
+
+ @sort-by-attributes-alt: "\f161";
+
+ @sort-by-order: "\f162";
+
+ @sort-by-order-alt: "\f163";
+
+ @thumbs-up: "\f164";
+
+ @thumbs-down: "\f165";
+
+ @youtube-sign: "\f166";
+
+ @youtube: "\f167";
+
+ @xing: "\f168";
+
+ @xing-sign: "\f169";
+
+ @youtube-play: "\f16a";
+
+ @dropbox: "\f16b";
+
+ @stackexchange: "\f16c";
+
+ @instagram: "\f16d";
+
+ @flickr: "\f16e";
+
+ @adn: "\f170";
+
+ @bitbucket: "\f171";
+
+ @bitbucket-sign: "\f172";
+
+ @tumblr: "\f173";
+
+ @tumblr-sign: "\f174";
+
+ @long-arrow-down: "\f175";
+
+ @long-arrow-up: "\f176";
+
+ @long-arrow-left: "\f177";
+
+ @long-arrow-right: "\f178";
+
+ @apple: "\f179";
+
+ @windows: "\f17a";
+
+ @android: "\f17b";
+
+ @linux: "\f17c";
+
+ @dribbble: "\f17d";
+
+ @skype: "\f17e";
+
+ @foursquare: "\f180";
+
+ @trello: "\f181";
+
+ @female: "\f182";
+
+ @male: "\f183";
+
+ @gittip: "\f184";
+
+ @sun: "\f185";
+
+ @moon: "\f186";
+
+ @archive: "\f187";
+
+ @bug: "\f188";
+
+ @vk: "\f189";
+
+ @weibo: "\f18a";
+
+ @renren: "\f18b";
+
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_bootstrap.scss b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_bootstrap.scss
new file mode 100644
index 0000000..837d2df
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_bootstrap.scss
@@ -0,0 +1,84 @@
+/* BOOTSTRAP SPECIFIC CLASSES
+ * -------------------------- */
+
+/* Bootstrap 2.0 sprites.less reset */
+[class^="icon-"],
+[class*=" icon-"] {
+ display: inline;
+ width: auto;
+ height: auto;
+ line-height: normal;
+ vertical-align: baseline;
+ background-image: none;
+ background-position: 0% 0%;
+ background-repeat: repeat;
+ margin-top: 0;
+}
+
+/* more sprites.less reset */
+.icon-white,
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"],
+.dropdown-submenu:hover > a > [class^="icon-"],
+.dropdown-submenu:hover > a > [class*=" icon-"] {
+ background-image: none;
+}
+
+
+/* keeps Bootstrap styles with and without icons the same */
+.btn, .nav {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ // display: inline;
+ &.icon-large { line-height: .9em; }
+ &.icon-spin { display: inline-block; }
+ }
+}
+.nav-tabs, .nav-pills {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &, &.icon-large { line-height: .9em; }
+ }
+}
+.btn {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &.pull-left, &.pull-right {
+ &.icon-2x { margin-top: .18em; }
+ }
+ &.icon-spin.icon-large { line-height: .8em; }
+ }
+}
+.btn.btn-small {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &.pull-left, &.pull-right {
+ &.icon-2x { margin-top: .25em; }
+ }
+ }
+}
+.btn.btn-large {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ margin-top: 0; // overrides bootstrap default
+ &.pull-left, &.pull-right {
+ &.icon-2x { margin-top: .05em; }
+ }
+ &.pull-left.icon-2x { margin-right: .2em; }
+ &.pull-right.icon-2x { margin-left: .2em; }
+ }
+}
+
+/* Fixes alignment in nav lists */
+.nav-list [class^="icon-"],
+.nav-list [class*=" icon-"] {
+ line-height: inherit;
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_core.scss b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_core.scss
new file mode 100644
index 0000000..0189c73
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_core.scss
@@ -0,0 +1,129 @@
+/* FONT AWESOME CORE
+ * -------------------------- */
+
+[class^="icon-"],
+[class*=" icon-"] {
+ @include icon-FontAwesome();
+}
+
+[class^="icon-"]:before,
+[class*=" icon-"]:before {
+ text-decoration: inherit;
+ display: inline-block;
+ speak: none;
+}
+
+/* makes the font 33% larger relative to the icon container */
+.icon-large:before {
+ vertical-align: -10%;
+ font-size: (4em/3);
+}
+
+/* makes sure icons active on rollover in links */
+a {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ display: inline;
+ }
+}
+
+/* increased font size for icon-large */
+[class^="icon-"],
+[class*=" icon-"] {
+ &.icon-fixed-width {
+ display: inline-block;
+ width: (16em/14);
+ text-align: right;
+ padding-right: (4em/14);
+ &.icon-large {
+ width: (20em/14);
+ }
+ }
+}
+
+.icons-ul {
+ margin-left: $icons-li-width;
+ list-style-type: none;
+
+ > li { position: relative; }
+
+ .icon-li {
+ position: absolute;
+ left: -$icons-li-width;
+ width: $icons-li-width;
+ text-align: center;
+ line-height: inherit;
+ }
+}
+
+// allows usage of the hide class directly on font awesome icons
+[class^="icon-"],
+[class*=" icon-"] {
+ &.hide {
+ display: none;
+ }
+}
+
+.icon-muted { color: $iconMuted; }
+.icon-light { color: $iconLight; }
+.icon-dark { color: $iconDark; }
+
+// Icon Borders
+// -------------------------
+
+.icon-border {
+ border: solid 1px $borderColor;
+ padding: .2em .25em .15em;
+ @include border-radius(3px);
+}
+
+// Icon Sizes
+// -------------------------
+
+.icon-2x {
+ font-size: 2em;
+ &.icon-border {
+ border-width: 2px;
+ @include border-radius(4px);
+ }
+}
+.icon-3x {
+ font-size: 3em;
+ &.icon-border {
+ border-width: 3px;
+ @include border-radius(5px);
+ }
+}
+.icon-4x {
+ font-size: 4em;
+ &.icon-border {
+ border-width: 4px;
+ @include border-radius(6px);
+ }
+}
+
+.icon-5x {
+ font-size: 5em;
+ &.icon-border {
+ border-width: 5px;
+ @include border-radius(7px);
+ }
+}
+
+
+// Floats & Margins
+// -------------------------
+
+// Quick floats
+.pull-right { float: right; }
+.pull-left { float: left; }
+
+[class^="icon-"],
+[class*=" icon-"] {
+ &.pull-left {
+ margin-right: .3em;
+ }
+ &.pull-right {
+ margin-left: .3em;
+ }
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_extras.scss b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_extras.scss
new file mode 100644
index 0000000..9a25845
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_extras.scss
@@ -0,0 +1,93 @@
+/* EXTRAS
+ * -------------------------- */
+
+/* Stacked and layered icon */
+@include icon-stack();
+
+/* Animated rotating icon */
+.icon-spin {
+ display: inline-block;
+ -moz-animation: spin 2s infinite linear;
+ -o-animation: spin 2s infinite linear;
+ -webkit-animation: spin 2s infinite linear;
+ animation: spin 2s infinite linear;
+}
+
+/* Prevent stack and spinners from being taken inline when inside a link */
+a .icon-stack,
+a .icon-spin {
+ display: inline-block;
+ text-decoration: none;
+}
+
+@-moz-keyframes spin {
+ 0% { -moz-transform: rotate(0deg); }
+ 100% { -moz-transform: rotate(359deg); }
+}
+@-webkit-keyframes spin {
+ 0% { -webkit-transform: rotate(0deg); }
+ 100% { -webkit-transform: rotate(359deg); }
+}
+@-o-keyframes spin {
+ 0% { -o-transform: rotate(0deg); }
+ 100% { -o-transform: rotate(359deg); }
+}
+@-ms-keyframes spin {
+ 0% { -ms-transform: rotate(0deg); }
+ 100% { -ms-transform: rotate(359deg); }
+}
+@keyframes spin {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(359deg); }
+}
+
+/* Icon rotations and mirroring */
+.icon-rotate-90:before {
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ transform: rotate(90deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+.icon-rotate-180:before {
+ -webkit-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ transform: rotate(180deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+}
+
+.icon-rotate-270:before {
+ -webkit-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ transform: rotate(270deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+.icon-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -moz-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ -o-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+
+.icon-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -moz-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ -o-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+
+/* ensure rotation occurs inside anchor tags */
+a {
+ .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical {
+ &:before { display: inline-block; }
+ }
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_icons.scss b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_icons.scss
new file mode 100644
index 0000000..eefda0c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_icons.scss
@@ -0,0 +1,381 @@
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ * readers do not read off random characters that represent icons */
+
+.icon-glass:before { content: $glass; }
+.icon-music:before { content: $music; }
+.icon-search:before { content: $search; }
+.icon-envelope-alt:before { content: $envelope-alt; }
+.icon-heart:before { content: $heart; }
+.icon-star:before { content: $star; }
+.icon-star-empty:before { content: $star-empty; }
+.icon-user:before { content: $user; }
+.icon-film:before { content: $film; }
+.icon-th-large:before { content: $th-large; }
+.icon-th:before { content: $th; }
+.icon-th-list:before { content: $th-list; }
+.icon-ok:before { content: $ok; }
+.icon-remove:before { content: $remove; }
+.icon-zoom-in:before { content: $zoom-in; }
+.icon-zoom-out:before { content: $zoom-out; }
+.icon-power-off:before,
+.icon-off:before { content: $off; }
+.icon-signal:before { content: $signal; }
+.icon-gear:before,
+.icon-cog:before { content: $cog; }
+.icon-trash:before { content: $trash; }
+.icon-home:before { content: $home; }
+.icon-file-alt:before { content: $file-alt; }
+.icon-time:before { content: $time; }
+.icon-road:before { content: $road; }
+.icon-download-alt:before { content: $download-alt; }
+.icon-download:before { content: $download; }
+.icon-upload:before { content: $upload; }
+.icon-inbox:before { content: $inbox; }
+.icon-play-circle:before { content: $play-circle; }
+.icon-rotate-right:before,
+.icon-repeat:before { content: $repeat; }
+.icon-refresh:before { content: $refresh; }
+.icon-list-alt:before { content: $list-alt; }
+.icon-lock:before { content: $lock; }
+.icon-flag:before { content: $flag; }
+.icon-headphones:before { content: $headphones; }
+.icon-volume-off:before { content: $volume-off; }
+.icon-volume-down:before { content: $volume-down; }
+.icon-volume-up:before { content: $volume-up; }
+.icon-qrcode:before { content: $qrcode; }
+.icon-barcode:before { content: $barcode; }
+.icon-tag:before { content: $tag; }
+.icon-tags:before { content: $tags; }
+.icon-book:before { content: $book; }
+.icon-bookmark:before { content: $bookmark; }
+.icon-print:before { content: $print; }
+.icon-camera:before { content: $camera; }
+.icon-font:before { content: $font; }
+.icon-bold:before { content: $bold; }
+.icon-italic:before { content: $italic; }
+.icon-text-height:before { content: $text-height; }
+.icon-text-width:before { content: $text-width; }
+.icon-align-left:before { content: $align-left; }
+.icon-align-center:before { content: $align-center; }
+.icon-align-right:before { content: $align-right; }
+.icon-align-justify:before { content: $align-justify; }
+.icon-list:before { content: $list; }
+.icon-indent-left:before { content: $indent-left; }
+.icon-indent-right:before { content: $indent-right; }
+.icon-facetime-video:before { content: $facetime-video; }
+.icon-picture:before { content: $picture; }
+.icon-pencil:before { content: $pencil; }
+.icon-map-marker:before { content: $map-marker; }
+.icon-adjust:before { content: $adjust; }
+.icon-tint:before { content: $tint; }
+.icon-edit:before { content: $edit; }
+.icon-share:before { content: $share; }
+.icon-check:before { content: $check; }
+.icon-move:before { content: $move; }
+.icon-step-backward:before { content: $step-backward; }
+.icon-fast-backward:before { content: $fast-backward; }
+.icon-backward:before { content: $backward; }
+.icon-play:before { content: $play; }
+.icon-pause:before { content: $pause; }
+.icon-stop:before { content: $stop; }
+.icon-forward:before { content: $forward; }
+.icon-fast-forward:before { content: $fast-forward; }
+.icon-step-forward:before { content: $step-forward; }
+.icon-eject:before { content: $eject; }
+.icon-chevron-left:before { content: $chevron-left; }
+.icon-chevron-right:before { content: $chevron-right; }
+.icon-plus-sign:before { content: $plus-sign; }
+.icon-minus-sign:before { content: $minus-sign; }
+.icon-remove-sign:before { content: $remove-sign; }
+.icon-ok-sign:before { content: $ok-sign; }
+.icon-question-sign:before { content: $question-sign; }
+.icon-info-sign:before { content: $info-sign; }
+.icon-screenshot:before { content: $screenshot; }
+.icon-remove-circle:before { content: $remove-circle; }
+.icon-ok-circle:before { content: $ok-circle; }
+.icon-ban-circle:before { content: $ban-circle; }
+.icon-arrow-left:before { content: $arrow-left; }
+.icon-arrow-right:before { content: $arrow-right; }
+.icon-arrow-up:before { content: $arrow-up; }
+.icon-arrow-down:before { content: $arrow-down; }
+.icon-mail-forward:before,
+.icon-share-alt:before { content: $share-alt; }
+.icon-resize-full:before { content: $resize-full; }
+.icon-resize-small:before { content: $resize-small; }
+.icon-plus:before { content: $plus; }
+.icon-minus:before { content: $minus; }
+.icon-asterisk:before { content: $asterisk; }
+.icon-exclamation-sign:before { content: $exclamation-sign; }
+.icon-gift:before { content: $gift; }
+.icon-leaf:before { content: $leaf; }
+.icon-fire:before { content: $fire; }
+.icon-eye-open:before { content: $eye-open; }
+.icon-eye-close:before { content: $eye-close; }
+.icon-warning-sign:before { content: $warning-sign; }
+.icon-plane:before { content: $plane; }
+.icon-calendar:before { content: $calendar; }
+.icon-random:before { content: $random; }
+.icon-comment:before { content: $comment; }
+.icon-magnet:before { content: $magnet; }
+.icon-chevron-up:before { content: $chevron-up; }
+.icon-chevron-down:before { content: $chevron-down; }
+.icon-retweet:before { content: $retweet; }
+.icon-shopping-cart:before { content: $shopping-cart; }
+.icon-folder-close:before { content: $folder-close; }
+.icon-folder-open:before { content: $folder-open; }
+.icon-resize-vertical:before { content: $resize-vertical; }
+.icon-resize-horizontal:before { content: $resize-horizontal; }
+.icon-bar-chart:before { content: $bar-chart; }
+.icon-twitter-sign:before { content: $twitter-sign; }
+.icon-facebook-sign:before { content: $facebook-sign; }
+.icon-camera-retro:before { content: $camera-retro; }
+.icon-key:before { content: $key; }
+.icon-gears:before,
+.icon-cogs:before { content: $cogs; }
+.icon-comments:before { content: $comments; }
+.icon-thumbs-up-alt:before { content: $thumbs-up-alt; }
+.icon-thumbs-down-alt:before { content: $thumbs-down-alt; }
+.icon-star-half:before { content: $star-half; }
+.icon-heart-empty:before { content: $heart-empty; }
+.icon-signout:before { content: $signout; }
+.icon-linkedin-sign:before { content: $linkedin-sign; }
+.icon-pushpin:before { content: $pushpin; }
+.icon-external-link:before { content: $external-link; }
+.icon-signin:before { content: $signin; }
+.icon-trophy:before { content: $trophy; }
+.icon-github-sign:before { content: $github-sign; }
+.icon-upload-alt:before { content: $upload-alt; }
+.icon-lemon:before { content: $lemon; }
+.icon-phone:before { content: $phone; }
+.icon-unchecked:before,
+.icon-check-empty:before { content: $check-empty; }
+.icon-bookmark-empty:before { content: $bookmark-empty; }
+.icon-phone-sign:before { content: $phone-sign; }
+.icon-twitter:before { content: $twitter; }
+.icon-facebook:before { content: $facebook; }
+.icon-github:before { content: $github; }
+.icon-unlock:before { content: $unlock; }
+.icon-credit-card:before { content: $credit-card; }
+.icon-rss:before { content: $rss; }
+.icon-hdd:before { content: $hdd; }
+.icon-bullhorn:before { content: $bullhorn; }
+.icon-bell:before { content: $bell; }
+.icon-certificate:before { content: $certificate; }
+.icon-hand-right:before { content: $hand-right; }
+.icon-hand-left:before { content: $hand-left; }
+.icon-hand-up:before { content: $hand-up; }
+.icon-hand-down:before { content: $hand-down; }
+.icon-circle-arrow-left:before { content: $circle-arrow-left; }
+.icon-circle-arrow-right:before { content: $circle-arrow-right; }
+.icon-circle-arrow-up:before { content: $circle-arrow-up; }
+.icon-circle-arrow-down:before { content: $circle-arrow-down; }
+.icon-globe:before { content: $globe; }
+.icon-wrench:before { content: $wrench; }
+.icon-tasks:before { content: $tasks; }
+.icon-filter:before { content: $filter; }
+.icon-briefcase:before { content: $briefcase; }
+.icon-fullscreen:before { content: $fullscreen; }
+.icon-group:before { content: $group; }
+.icon-link:before { content: $link; }
+.icon-cloud:before { content: $cloud; }
+.icon-beaker:before { content: $beaker; }
+.icon-cut:before { content: $cut; }
+.icon-copy:before { content: $copy; }
+.icon-paperclip:before,
+.icon-paper-clip:before { content: $paper-clip; }
+.icon-save:before { content: $save; }
+.icon-sign-blank:before { content: $sign-blank; }
+.icon-reorder:before { content: $reorder; }
+.icon-list-ul:before { content: $list-ul; }
+.icon-list-ol:before { content: $list-ol; }
+.icon-strikethrough:before { content: $strikethrough; }
+.icon-underline:before { content: $underline; }
+.icon-table:before { content: $table; }
+.icon-magic:before { content: $magic; }
+.icon-truck:before { content: $truck; }
+.icon-pinterest:before { content: $pinterest; }
+.icon-pinterest-sign:before { content: $pinterest-sign; }
+.icon-google-plus-sign:before { content: $google-plus-sign; }
+.icon-google-plus:before { content: $google-plus; }
+.icon-money:before { content: $money; }
+.icon-caret-down:before { content: $caret-down; }
+.icon-caret-up:before { content: $caret-up; }
+.icon-caret-left:before { content: $caret-left; }
+.icon-caret-right:before { content: $caret-right; }
+.icon-columns:before { content: $columns; }
+.icon-sort:before { content: $sort; }
+.icon-sort-down:before { content: $sort-down; }
+.icon-sort-up:before { content: $sort-up; }
+.icon-envelope:before { content: $envelope; }
+.icon-linkedin:before { content: $linkedin; }
+.icon-rotate-left:before,
+.icon-undo:before { content: $undo; }
+.icon-legal:before { content: $legal; }
+.icon-dashboard:before { content: $dashboard; }
+.icon-comment-alt:before { content: $comment-alt; }
+.icon-comments-alt:before { content: $comments-alt; }
+.icon-bolt:before { content: $bolt; }
+.icon-sitemap:before { content: $sitemap; }
+.icon-umbrella:before { content: $umbrella; }
+.icon-paste:before { content: $paste; }
+.icon-lightbulb:before { content: $lightbulb; }
+.icon-exchange:before { content: $exchange; }
+.icon-cloud-download:before { content: $cloud-download; }
+.icon-cloud-upload:before { content: $cloud-upload; }
+.icon-user-md:before { content: $user-md; }
+.icon-stethoscope:before { content: $stethoscope; }
+.icon-suitcase:before { content: $suitcase; }
+.icon-bell-alt:before { content: $bell-alt; }
+.icon-coffee:before { content: $coffee; }
+.icon-food:before { content: $food; }
+.icon-file-text-alt:before { content: $file-text-alt; }
+.icon-building:before { content: $building; }
+.icon-hospital:before { content: $hospital; }
+.icon-ambulance:before { content: $ambulance; }
+.icon-medkit:before { content: $medkit; }
+.icon-fighter-jet:before { content: $fighter-jet; }
+.icon-beer:before { content: $beer; }
+.icon-h-sign:before { content: $h-sign; }
+.icon-plus-sign-alt:before { content: $plus-sign-alt; }
+.icon-double-angle-left:before { content: $double-angle-left; }
+.icon-double-angle-right:before { content: $double-angle-right; }
+.icon-double-angle-up:before { content: $double-angle-up; }
+.icon-double-angle-down:before { content: $double-angle-down; }
+.icon-angle-left:before { content: $angle-left; }
+.icon-angle-right:before { content: $angle-right; }
+.icon-angle-up:before { content: $angle-up; }
+.icon-angle-down:before { content: $angle-down; }
+.icon-desktop:before { content: $desktop; }
+.icon-laptop:before { content: $laptop; }
+.icon-tablet:before { content: $tablet; }
+.icon-mobile-phone:before { content: $mobile-phone; }
+.icon-circle-blank:before { content: $circle-blank; }
+.icon-quote-left:before { content: $quote-left; }
+.icon-quote-right:before { content: $quote-right; }
+.icon-spinner:before { content: $spinner; }
+.icon-circle:before { content: $circle; }
+.icon-mail-reply:before,
+.icon-reply:before { content: $reply; }
+.icon-github-alt:before { content: $github-alt; }
+.icon-folder-close-alt:before { content: $folder-close-alt; }
+.icon-folder-open-alt:before { content: $folder-open-alt; }
+.icon-expand-alt:before { content: $expand-alt; }
+.icon-collapse-alt:before { content: $collapse-alt; }
+.icon-smile:before { content: $smile; }
+.icon-frown:before { content: $frown; }
+.icon-meh:before { content: $meh; }
+.icon-gamepad:before { content: $gamepad; }
+.icon-keyboard:before { content: $keyboard; }
+.icon-flag-alt:before { content: $flag-alt; }
+.icon-flag-checkered:before { content: $flag-checkered; }
+.icon-terminal:before { content: $terminal; }
+.icon-code:before { content: $code; }
+.icon-reply-all:before { content: $reply-all; }
+.icon-mail-reply-all:before { content: $mail-reply-all; }
+.icon-star-half-full:before,
+.icon-star-half-empty:before { content: $star-half-empty; }
+.icon-location-arrow:before { content: $location-arrow; }
+.icon-crop:before { content: $crop; }
+.icon-code-fork:before { content: $code-fork; }
+.icon-unlink:before { content: $unlink; }
+.icon-question:before { content: $question; }
+.icon-info:before { content: $info; }
+.icon-exclamation:before { content: $exclamation; }
+.icon-superscript:before { content: $superscript; }
+.icon-subscript:before { content: $subscript; }
+.icon-eraser:before { content: $eraser; }
+.icon-puzzle-piece:before { content: $puzzle-piece; }
+.icon-microphone:before { content: $microphone; }
+.icon-microphone-off:before { content: $microphone-off; }
+.icon-shield:before { content: $shield; }
+.icon-calendar-empty:before { content: $calendar-empty; }
+.icon-fire-extinguisher:before { content: $fire-extinguisher; }
+.icon-rocket:before { content: $rocket; }
+.icon-maxcdn:before { content: $maxcdn; }
+.icon-chevron-sign-left:before { content: $chevron-sign-left; }
+.icon-chevron-sign-right:before { content: $chevron-sign-right; }
+.icon-chevron-sign-up:before { content: $chevron-sign-up; }
+.icon-chevron-sign-down:before { content: $chevron-sign-down; }
+.icon-html5:before { content: $html5; }
+.icon-css3:before { content: $css3; }
+.icon-anchor:before { content: $anchor; }
+.icon-unlock-alt:before { content: $unlock-alt; }
+.icon-bullseye:before { content: $bullseye; }
+.icon-ellipsis-horizontal:before { content: $ellipsis-horizontal; }
+.icon-ellipsis-vertical:before { content: $ellipsis-vertical; }
+.icon-rss-sign:before { content: $rss-sign; }
+.icon-play-sign:before { content: $play-sign; }
+.icon-ticket:before { content: $ticket; }
+.icon-minus-sign-alt:before { content: $minus-sign-alt; }
+.icon-check-minus:before { content: $check-minus; }
+.icon-level-up:before { content: $level-up; }
+.icon-level-down:before { content: $level-down; }
+.icon-check-sign:before { content: $check-sign; }
+.icon-edit-sign:before { content: $edit-sign; }
+.icon-external-link-sign:before { content: $external-link-sign; }
+.icon-share-sign:before { content: $share-sign; }
+.icon-compass:before { content: $compass; }
+.icon-collapse:before { content: $collapse; }
+.icon-collapse-top:before { content: $collapse-top; }
+.icon-expand:before { content: $expand; }
+.icon-euro:before,
+.icon-eur:before { content: $eur; }
+.icon-gbp:before { content: $gbp; }
+.icon-dollar:before,
+.icon-usd:before { content: $usd; }
+.icon-rupee:before,
+.icon-inr:before { content: $inr; }
+.icon-yen:before,
+.icon-jpy:before { content: $jpy; }
+.icon-renminbi:before,
+.icon-cny:before { content: $cny; }
+.icon-won:before,
+.icon-krw:before { content: $krw; }
+.icon-bitcoin:before,
+.icon-btc:before { content: $btc; }
+.icon-file:before { content: $file; }
+.icon-file-text:before { content: $file-text; }
+.icon-sort-by-alphabet:before { content: $sort-by-alphabet; }
+.icon-sort-by-alphabet-alt:before { content: $sort-by-alphabet-alt; }
+.icon-sort-by-attributes:before { content: $sort-by-attributes; }
+.icon-sort-by-attributes-alt:before { content: $sort-by-attributes-alt; }
+.icon-sort-by-order:before { content: $sort-by-order; }
+.icon-sort-by-order-alt:before { content: $sort-by-order-alt; }
+.icon-thumbs-up:before { content: $thumbs-up; }
+.icon-thumbs-down:before { content: $thumbs-down; }
+.icon-youtube-sign:before { content: $youtube-sign; }
+.icon-youtube:before { content: $youtube; }
+.icon-xing:before { content: $xing; }
+.icon-xing-sign:before { content: $xing-sign; }
+.icon-youtube-play:before { content: $youtube-play; }
+.icon-dropbox:before { content: $dropbox; }
+.icon-stackexchange:before { content: $stackexchange; }
+.icon-instagram:before { content: $instagram; }
+.icon-flickr:before { content: $flickr; }
+.icon-adn:before { content: $adn; }
+.icon-bitbucket:before { content: $bitbucket; }
+.icon-bitbucket-sign:before { content: $bitbucket-sign; }
+.icon-tumblr:before { content: $tumblr; }
+.icon-tumblr-sign:before { content: $tumblr-sign; }
+.icon-long-arrow-down:before { content: $long-arrow-down; }
+.icon-long-arrow-up:before { content: $long-arrow-up; }
+.icon-long-arrow-left:before { content: $long-arrow-left; }
+.icon-long-arrow-right:before { content: $long-arrow-right; }
+.icon-apple:before { content: $apple; }
+.icon-windows:before { content: $windows; }
+.icon-android:before { content: $android; }
+.icon-linux:before { content: $linux; }
+.icon-dribbble:before { content: $dribbble; }
+.icon-skype:before { content: $skype; }
+.icon-foursquare:before { content: $foursquare; }
+.icon-trello:before { content: $trello; }
+.icon-female:before { content: $female; }
+.icon-male:before { content: $male; }
+.icon-gittip:before { content: $gittip; }
+.icon-sun:before { content: $sun; }
+.icon-moon:before { content: $moon; }
+.icon-archive:before { content: $archive; }
+.icon-bug:before { content: $bug; }
+.icon-vk:before { content: $vk; }
+.icon-weibo:before { content: $weibo; }
+.icon-renren:before { content: $renren; }
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_mixins.scss b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_mixins.scss
new file mode 100644
index 0000000..ca9c593
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_mixins.scss
@@ -0,0 +1,48 @@
+// Mixins
+// --------------------------
+
+@mixin icon($icon) {
+ @include icon-FontAwesome();
+ content: $icon;
+}
+
+@mixin icon-FontAwesome() {
+ font-family: FontAwesome;
+ font-weight: normal;
+ font-style: normal;
+ text-decoration: inherit;
+ -webkit-font-smoothing: antialiased;
+ *margin-right: .3em; // fixes ie7 issues
+}
+
+@mixin border-radius($radius) {
+ -webkit-border-radius: $radius;
+ -moz-border-radius: $radius;
+ border-radius: $radius;
+}
+
+@mixin icon-stack($width: 2em, $height: 2em, $top-font-size: 1em, $base-font-size: 2em) {
+ .icon-stack {
+ position: relative;
+ display: inline-block;
+ width: $width;
+ height: $height;
+ line-height: $width;
+ vertical-align: -35%;
+ [class^="icon-"],
+ [class*=" icon-"] {
+ display: block;
+ text-align: center;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ font-size: $top-font-size;
+ line-height: inherit;
+ *line-height: $height;
+ }
+ .icon-stack-base {
+ font-size: $base-font-size;
+ *line-height: #{$height / $base-font-size}em;
+ }
+ }
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_path.scss b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_path.scss
new file mode 100644
index 0000000..bb3f36b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_path.scss
@@ -0,0 +1,14 @@
+/* FONT PATH
+ * -------------------------- */
+
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}');
+ src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'),
+ url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'),
+ url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'),
+ url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg');
+// src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts
+ font-weight: normal;
+ font-style: normal;
+}
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_variables.scss b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_variables.scss
new file mode 100644
index 0000000..7d6bbc5
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/_variables.scss
@@ -0,0 +1,734 @@
+// Variables
+// --------------------------
+
+$FontAwesomePath: "../font" !default;
+$FontAwesomeVersion: "3.2.1" !default;
+$borderColor: #eeeeee !default;
+$iconMuted: #eeeeee !default;
+$iconLight: white !default;
+$iconDark: #333333 !default;
+$icons-li-width: (30em/14);
+
+
+$glass: "\f000";
+
+$music: "\f001";
+
+$search: "\f002";
+
+$envelope-alt: "\f003";
+
+$heart: "\f004";
+
+$star: "\f005";
+
+$star-empty: "\f006";
+
+$user: "\f007";
+
+$film: "\f008";
+
+$th-large: "\f009";
+
+$th: "\f00a";
+
+$th-list: "\f00b";
+
+$ok: "\f00c";
+
+$remove: "\f00d";
+
+$zoom-in: "\f00e";
+
+$zoom-out: "\f010";
+
+$off: "\f011";
+
+$signal: "\f012";
+
+$cog: "\f013";
+
+$trash: "\f014";
+
+$home: "\f015";
+
+$file-alt: "\f016";
+
+$time: "\f017";
+
+$road: "\f018";
+
+$download-alt: "\f019";
+
+$download: "\f01a";
+
+$upload: "\f01b";
+
+$inbox: "\f01c";
+
+$play-circle: "\f01d";
+
+$repeat: "\f01e";
+
+$refresh: "\f021";
+
+$list-alt: "\f022";
+
+$lock: "\f023";
+
+$flag: "\f024";
+
+$headphones: "\f025";
+
+$volume-off: "\f026";
+
+$volume-down: "\f027";
+
+$volume-up: "\f028";
+
+$qrcode: "\f029";
+
+$barcode: "\f02a";
+
+$tag: "\f02b";
+
+$tags: "\f02c";
+
+$book: "\f02d";
+
+$bookmark: "\f02e";
+
+$print: "\f02f";
+
+$camera: "\f030";
+
+$font: "\f031";
+
+$bold: "\f032";
+
+$italic: "\f033";
+
+$text-height: "\f034";
+
+$text-width: "\f035";
+
+$align-left: "\f036";
+
+$align-center: "\f037";
+
+$align-right: "\f038";
+
+$align-justify: "\f039";
+
+$list: "\f03a";
+
+$indent-left: "\f03b";
+
+$indent-right: "\f03c";
+
+$facetime-video: "\f03d";
+
+$picture: "\f03e";
+
+$pencil: "\f040";
+
+$map-marker: "\f041";
+
+$adjust: "\f042";
+
+$tint: "\f043";
+
+$edit: "\f044";
+
+$share: "\f045";
+
+$check: "\f046";
+
+$move: "\f047";
+
+$step-backward: "\f048";
+
+$fast-backward: "\f049";
+
+$backward: "\f04a";
+
+$play: "\f04b";
+
+$pause: "\f04c";
+
+$stop: "\f04d";
+
+$forward: "\f04e";
+
+$fast-forward: "\f050";
+
+$step-forward: "\f051";
+
+$eject: "\f052";
+
+$chevron-left: "\f053";
+
+$chevron-right: "\f054";
+
+$plus-sign: "\f055";
+
+$minus-sign: "\f056";
+
+$remove-sign: "\f057";
+
+$ok-sign: "\f058";
+
+$question-sign: "\f059";
+
+$info-sign: "\f05a";
+
+$screenshot: "\f05b";
+
+$remove-circle: "\f05c";
+
+$ok-circle: "\f05d";
+
+$ban-circle: "\f05e";
+
+$arrow-left: "\f060";
+
+$arrow-right: "\f061";
+
+$arrow-up: "\f062";
+
+$arrow-down: "\f063";
+
+$share-alt: "\f064";
+
+$resize-full: "\f065";
+
+$resize-small: "\f066";
+
+$plus: "\f067";
+
+$minus: "\f068";
+
+$asterisk: "\f069";
+
+$exclamation-sign: "\f06a";
+
+$gift: "\f06b";
+
+$leaf: "\f06c";
+
+$fire: "\f06d";
+
+$eye-open: "\f06e";
+
+$eye-close: "\f070";
+
+$warning-sign: "\f071";
+
+$plane: "\f072";
+
+$calendar: "\f073";
+
+$random: "\f074";
+
+$comment: "\f075";
+
+$magnet: "\f076";
+
+$chevron-up: "\f077";
+
+$chevron-down: "\f078";
+
+$retweet: "\f079";
+
+$shopping-cart: "\f07a";
+
+$folder-close: "\f07b";
+
+$folder-open: "\f07c";
+
+$resize-vertical: "\f07d";
+
+$resize-horizontal: "\f07e";
+
+$bar-chart: "\f080";
+
+$twitter-sign: "\f081";
+
+$facebook-sign: "\f082";
+
+$camera-retro: "\f083";
+
+$key: "\f084";
+
+$cogs: "\f085";
+
+$comments: "\f086";
+
+$thumbs-up-alt: "\f087";
+
+$thumbs-down-alt: "\f088";
+
+$star-half: "\f089";
+
+$heart-empty: "\f08a";
+
+$signout: "\f08b";
+
+$linkedin-sign: "\f08c";
+
+$pushpin: "\f08d";
+
+$external-link: "\f08e";
+
+$signin: "\f090";
+
+$trophy: "\f091";
+
+$github-sign: "\f092";
+
+$upload-alt: "\f093";
+
+$lemon: "\f094";
+
+$phone: "\f095";
+
+$check-empty: "\f096";
+
+$bookmark-empty: "\f097";
+
+$phone-sign: "\f098";
+
+$twitter: "\f099";
+
+$facebook: "\f09a";
+
+$github: "\f09b";
+
+$unlock: "\f09c";
+
+$credit-card: "\f09d";
+
+$rss: "\f09e";
+
+$hdd: "\f0a0";
+
+$bullhorn: "\f0a1";
+
+$bell: "\f0a2";
+
+$certificate: "\f0a3";
+
+$hand-right: "\f0a4";
+
+$hand-left: "\f0a5";
+
+$hand-up: "\f0a6";
+
+$hand-down: "\f0a7";
+
+$circle-arrow-left: "\f0a8";
+
+$circle-arrow-right: "\f0a9";
+
+$circle-arrow-up: "\f0aa";
+
+$circle-arrow-down: "\f0ab";
+
+$globe: "\f0ac";
+
+$wrench: "\f0ad";
+
+$tasks: "\f0ae";
+
+$filter: "\f0b0";
+
+$briefcase: "\f0b1";
+
+$fullscreen: "\f0b2";
+
+$group: "\f0c0";
+
+$link: "\f0c1";
+
+$cloud: "\f0c2";
+
+$beaker: "\f0c3";
+
+$cut: "\f0c4";
+
+$copy: "\f0c5";
+
+$paper-clip: "\f0c6";
+
+$save: "\f0c7";
+
+$sign-blank: "\f0c8";
+
+$reorder: "\f0c9";
+
+$list-ul: "\f0ca";
+
+$list-ol: "\f0cb";
+
+$strikethrough: "\f0cc";
+
+$underline: "\f0cd";
+
+$table: "\f0ce";
+
+$magic: "\f0d0";
+
+$truck: "\f0d1";
+
+$pinterest: "\f0d2";
+
+$pinterest-sign: "\f0d3";
+
+$google-plus-sign: "\f0d4";
+
+$google-plus: "\f0d5";
+
+$money: "\f0d6";
+
+$caret-down: "\f0d7";
+
+$caret-up: "\f0d8";
+
+$caret-left: "\f0d9";
+
+$caret-right: "\f0da";
+
+$columns: "\f0db";
+
+$sort: "\f0dc";
+
+$sort-down: "\f0dd";
+
+$sort-up: "\f0de";
+
+$envelope: "\f0e0";
+
+$linkedin: "\f0e1";
+
+$undo: "\f0e2";
+
+$legal: "\f0e3";
+
+$dashboard: "\f0e4";
+
+$comment-alt: "\f0e5";
+
+$comments-alt: "\f0e6";
+
+$bolt: "\f0e7";
+
+$sitemap: "\f0e8";
+
+$umbrella: "\f0e9";
+
+$paste: "\f0ea";
+
+$lightbulb: "\f0eb";
+
+$exchange: "\f0ec";
+
+$cloud-download: "\f0ed";
+
+$cloud-upload: "\f0ee";
+
+$user-md: "\f0f0";
+
+$stethoscope: "\f0f1";
+
+$suitcase: "\f0f2";
+
+$bell-alt: "\f0f3";
+
+$coffee: "\f0f4";
+
+$food: "\f0f5";
+
+$file-text-alt: "\f0f6";
+
+$building: "\f0f7";
+
+$hospital: "\f0f8";
+
+$ambulance: "\f0f9";
+
+$medkit: "\f0fa";
+
+$fighter-jet: "\f0fb";
+
+$beer: "\f0fc";
+
+$h-sign: "\f0fd";
+
+$plus-sign-alt: "\f0fe";
+
+$double-angle-left: "\f100";
+
+$double-angle-right: "\f101";
+
+$double-angle-up: "\f102";
+
+$double-angle-down: "\f103";
+
+$angle-left: "\f104";
+
+$angle-right: "\f105";
+
+$angle-up: "\f106";
+
+$angle-down: "\f107";
+
+$desktop: "\f108";
+
+$laptop: "\f109";
+
+$tablet: "\f10a";
+
+$mobile-phone: "\f10b";
+
+$circle-blank: "\f10c";
+
+$quote-left: "\f10d";
+
+$quote-right: "\f10e";
+
+$spinner: "\f110";
+
+$circle: "\f111";
+
+$reply: "\f112";
+
+$github-alt: "\f113";
+
+$folder-close-alt: "\f114";
+
+$folder-open-alt: "\f115";
+
+$expand-alt: "\f116";
+
+$collapse-alt: "\f117";
+
+$smile: "\f118";
+
+$frown: "\f119";
+
+$meh: "\f11a";
+
+$gamepad: "\f11b";
+
+$keyboard: "\f11c";
+
+$flag-alt: "\f11d";
+
+$flag-checkered: "\f11e";
+
+$terminal: "\f120";
+
+$code: "\f121";
+
+$reply-all: "\f122";
+
+$mail-reply-all: "\f122";
+
+$star-half-empty: "\f123";
+
+$location-arrow: "\f124";
+
+$crop: "\f125";
+
+$code-fork: "\f126";
+
+$unlink: "\f127";
+
+$question: "\f128";
+
+$info: "\f129";
+
+$exclamation: "\f12a";
+
+$superscript: "\f12b";
+
+$subscript: "\f12c";
+
+$eraser: "\f12d";
+
+$puzzle-piece: "\f12e";
+
+$microphone: "\f130";
+
+$microphone-off: "\f131";
+
+$shield: "\f132";
+
+$calendar-empty: "\f133";
+
+$fire-extinguisher: "\f134";
+
+$rocket: "\f135";
+
+$maxcdn: "\f136";
+
+$chevron-sign-left: "\f137";
+
+$chevron-sign-right: "\f138";
+
+$chevron-sign-up: "\f139";
+
+$chevron-sign-down: "\f13a";
+
+$html5: "\f13b";
+
+$css3: "\f13c";
+
+$anchor: "\f13d";
+
+$unlock-alt: "\f13e";
+
+$bullseye: "\f140";
+
+$ellipsis-horizontal: "\f141";
+
+$ellipsis-vertical: "\f142";
+
+$rss-sign: "\f143";
+
+$play-sign: "\f144";
+
+$ticket: "\f145";
+
+$minus-sign-alt: "\f146";
+
+$check-minus: "\f147";
+
+$level-up: "\f148";
+
+$level-down: "\f149";
+
+$check-sign: "\f14a";
+
+$edit-sign: "\f14b";
+
+$external-link-sign: "\f14c";
+
+$share-sign: "\f14d";
+
+$compass: "\f14e";
+
+$collapse: "\f150";
+
+$collapse-top: "\f151";
+
+$expand: "\f152";
+
+$eur: "\f153";
+
+$gbp: "\f154";
+
+$usd: "\f155";
+
+$inr: "\f156";
+
+$jpy: "\f157";
+
+$cny: "\f158";
+
+$krw: "\f159";
+
+$btc: "\f15a";
+
+$file: "\f15b";
+
+$file-text: "\f15c";
+
+$sort-by-alphabet: "\f15d";
+
+$sort-by-alphabet-alt: "\f15e";
+
+$sort-by-attributes: "\f160";
+
+$sort-by-attributes-alt: "\f161";
+
+$sort-by-order: "\f162";
+
+$sort-by-order-alt: "\f163";
+
+$thumbs-up: "\f164";
+
+$thumbs-down: "\f165";
+
+$youtube-sign: "\f166";
+
+$youtube: "\f167";
+
+$xing: "\f168";
+
+$xing-sign: "\f169";
+
+$youtube-play: "\f16a";
+
+$dropbox: "\f16b";
+
+$stackexchange: "\f16c";
+
+$instagram: "\f16d";
+
+$flickr: "\f16e";
+
+$adn: "\f170";
+
+$bitbucket: "\f171";
+
+$bitbucket-sign: "\f172";
+
+$tumblr: "\f173";
+
+$tumblr-sign: "\f174";
+
+$long-arrow-down: "\f175";
+
+$long-arrow-up: "\f176";
+
+$long-arrow-left: "\f177";
+
+$long-arrow-right: "\f178";
+
+$apple: "\f179";
+
+$windows: "\f17a";
+
+$android: "\f17b";
+
+$linux: "\f17c";
+
+$dribbble: "\f17d";
+
+$skype: "\f17e";
+
+$foursquare: "\f180";
+
+$trello: "\f181";
+
+$female: "\f182";
+
+$male: "\f183";
+
+$gittip: "\f184";
+
+$sun: "\f185";
+
+$moon: "\f186";
+
+$archive: "\f187";
+
+$bug: "\f188";
+
+$vk: "\f189";
+
+$weibo: "\f18a";
+
+$renren: "\f18b";
+
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/scss/font-awesome.scss b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/font-awesome.scss
new file mode 100644
index 0000000..e5903d8
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/font-awesome.scss
@@ -0,0 +1,33 @@
+/*!
+ * Font Awesome 3.2.1
+ * the iconic font designed for Bootstrap
+ * ------------------------------------------------------------------------------
+ * The full suite of pictographic icons, examples, and documentation can be
+ * found at http://fontawesome.io. Stay up to date on Twitter at
+ * http://twitter.com/fontawesome.
+ *
+ * License
+ * ------------------------------------------------------------------------------
+ * - The Font Awesome font is licensed under SIL OFL 1.1 -
+ * http://scripts.sil.org/OFL
+ * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
+ * http://opensource.org/licenses/mit-license.html
+ * - Font Awesome documentation licensed under CC BY 3.0 -
+ * http://creativecommons.org/licenses/by/3.0/
+ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
+ * "Font Awesome by Dave Gandy - http://fontawesome.io"
+ *
+ * Author - Dave Gandy
+ * ------------------------------------------------------------------------------
+ * Email: dave@fontawesome.io
+ * Twitter: http://twitter.com/davegandy
+ * Work: Lead Product Designer @ Kyruus - http://kyruus.com
+ */
+
+@import "variables";
+@import "mixins";
+@import "path";
+@import "core";
+@import "bootstrap";
+@import "extras";
+@import "icons";
diff --git a/sm-shop/src/main/webapp/resources/css/font-awesome/scss/font-awesome-ie7.scss b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/font-awesome-ie7.scss
new file mode 100644
index 0000000..0e236f6
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/font-awesome/scss/font-awesome-ie7.scss
@@ -0,0 +1,1953 @@
+/*!
+ * Font Awesome 3.2.1
+ * the iconic font designed for Bootstrap
+ * ------------------------------------------------------------------------------
+ * The full suite of pictographic icons, examples, and documentation can be
+ * found at http://fontawesome.io. Stay up to date on Twitter at
+ * http://twitter.com/fontawesome.
+ *
+ * License
+ * ------------------------------------------------------------------------------
+ * - The Font Awesome font is licensed under SIL OFL 1.1 -
+ * http://scripts.sil.org/OFL
+ * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
+ * http://opensource.org/licenses/mit-license.html
+ * - Font Awesome documentation licensed under CC BY 3.0 -
+ * http://creativecommons.org/licenses/by/3.0/
+ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
+ * "Font Awesome by Dave Gandy - http://fontawesome.io"
+ *
+ * Author - Dave Gandy
+ * ------------------------------------------------------------------------------
+ * Email: dave@fontawesome.io
+ * Twitter: http://twitter.com/davegandy
+ * Work: Lead Product Designer @ Kyruus - http://kyruus.com
+ */
+
+.icon-large {
+ font-size: (4em/3);
+ margin-top: -4px;
+ padding-top: 3px;
+ margin-bottom: -4px;
+ padding-bottom: 3px;
+ vertical-align: middle;
+}
+
+.nav {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ vertical-align: inherit;
+ margin-top: -4px;
+ padding-top: 3px;
+ margin-bottom: -4px;
+ padding-bottom: 3px;
+ &.icon-large {
+ vertical-align: -25%;
+ }
+ }
+}
+
+.nav-pills, .nav-tabs {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &.icon-large {
+ line-height: .75em;
+ margin-top: -7px;
+ padding-top: 5px;
+ margin-bottom: -5px;
+ padding-bottom: 4px;
+ }
+ }
+}
+
+.btn {
+ [class^="icon-"],
+ [class*=" icon-"] {
+ &.pull-left, &.pull-right { vertical-align: inherit; }
+ &.icon-large {
+ margin-top: -.5em;
+ }
+ }
+}
+
+a [class^="icon-"],
+a [class*=" icon-"] {
+ cursor: pointer;
+}
+
+@mixin ie7icon($inner) { *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '#{$inner}'); }
+
+
+.icon-glass {
+ @include ie7icon('');
+}
+
+
+.icon-music {
+ @include ie7icon('');
+}
+
+
+.icon-search {
+ @include ie7icon('');
+}
+
+
+.icon-envelope-alt {
+ @include ie7icon('');
+}
+
+
+.icon-heart {
+ @include ie7icon('');
+}
+
+
+.icon-star {
+ @include ie7icon('');
+}
+
+
+.icon-star-empty {
+ @include ie7icon('');
+}
+
+
+.icon-user {
+ @include ie7icon('');
+}
+
+
+.icon-film {
+ @include ie7icon('');
+}
+
+
+.icon-th-large {
+ @include ie7icon('');
+}
+
+
+.icon-th {
+ @include ie7icon('');
+}
+
+
+.icon-th-list {
+ @include ie7icon('');
+}
+
+
+.icon-ok {
+ @include ie7icon('');
+}
+
+
+.icon-remove {
+ @include ie7icon('');
+}
+
+
+.icon-zoom-in {
+ @include ie7icon('');
+}
+
+
+.icon-zoom-out {
+ @include ie7icon('');
+}
+
+
+.icon-off {
+ @include ie7icon('');
+}
+
+.icon-power-off {
+ @include ie7icon('');
+}
+
+
+.icon-signal {
+ @include ie7icon('');
+}
+
+
+.icon-cog {
+ @include ie7icon('');
+}
+
+.icon-gear {
+ @include ie7icon('');
+}
+
+
+.icon-trash {
+ @include ie7icon('');
+}
+
+
+.icon-home {
+ @include ie7icon('');
+}
+
+
+.icon-file-alt {
+ @include ie7icon('');
+}
+
+
+.icon-time {
+ @include ie7icon('');
+}
+
+
+.icon-road {
+ @include ie7icon('');
+}
+
+
+.icon-download-alt {
+ @include ie7icon('');
+}
+
+
+.icon-download {
+ @include ie7icon('');
+}
+
+
+.icon-upload {
+ @include ie7icon('');
+}
+
+
+.icon-inbox {
+ @include ie7icon('');
+}
+
+
+.icon-play-circle {
+ @include ie7icon('');
+}
+
+
+.icon-repeat {
+ @include ie7icon('');
+}
+
+.icon-rotate-right {
+ @include ie7icon('');
+}
+
+
+.icon-refresh {
+ @include ie7icon('');
+}
+
+
+.icon-list-alt {
+ @include ie7icon('');
+}
+
+
+.icon-lock {
+ @include ie7icon('');
+}
+
+
+.icon-flag {
+ @include ie7icon('');
+}
+
+
+.icon-headphones {
+ @include ie7icon('');
+}
+
+
+.icon-volume-off {
+ @include ie7icon('');
+}
+
+
+.icon-volume-down {
+ @include ie7icon('');
+}
+
+
+.icon-volume-up {
+ @include ie7icon('');
+}
+
+
+.icon-qrcode {
+ @include ie7icon('');
+}
+
+
+.icon-barcode {
+ @include ie7icon('');
+}
+
+
+.icon-tag {
+ @include ie7icon('');
+}
+
+
+.icon-tags {
+ @include ie7icon('');
+}
+
+
+.icon-book {
+ @include ie7icon('');
+}
+
+
+.icon-bookmark {
+ @include ie7icon('');
+}
+
+
+.icon-print {
+ @include ie7icon('');
+}
+
+
+.icon-camera {
+ @include ie7icon('');
+}
+
+
+.icon-font {
+ @include ie7icon('');
+}
+
+
+.icon-bold {
+ @include ie7icon('');
+}
+
+
+.icon-italic {
+ @include ie7icon('');
+}
+
+
+.icon-text-height {
+ @include ie7icon('');
+}
+
+
+.icon-text-width {
+ @include ie7icon('');
+}
+
+
+.icon-align-left {
+ @include ie7icon('');
+}
+
+
+.icon-align-center {
+ @include ie7icon('');
+}
+
+
+.icon-align-right {
+ @include ie7icon('');
+}
+
+
+.icon-align-justify {
+ @include ie7icon('');
+}
+
+
+.icon-list {
+ @include ie7icon('');
+}
+
+
+.icon-indent-left {
+ @include ie7icon('');
+}
+
+
+.icon-indent-right {
+ @include ie7icon('');
+}
+
+
+.icon-facetime-video {
+ @include ie7icon('');
+}
+
+
+.icon-picture {
+ @include ie7icon('');
+}
+
+
+.icon-pencil {
+ @include ie7icon('');
+}
+
+
+.icon-map-marker {
+ @include ie7icon('');
+}
+
+
+.icon-adjust {
+ @include ie7icon('');
+}
+
+
+.icon-tint {
+ @include ie7icon('');
+}
+
+
+.icon-edit {
+ @include ie7icon('');
+}
+
+
+.icon-share {
+ @include ie7icon('');
+}
+
+
+.icon-check {
+ @include ie7icon('');
+}
+
+
+.icon-move {
+ @include ie7icon('');
+}
+
+
+.icon-step-backward {
+ @include ie7icon('');
+}
+
+
+.icon-fast-backward {
+ @include ie7icon('');
+}
+
+
+.icon-backward {
+ @include ie7icon('');
+}
+
+
+.icon-play {
+ @include ie7icon('');
+}
+
+
+.icon-pause {
+ @include ie7icon('');
+}
+
+
+.icon-stop {
+ @include ie7icon('');
+}
+
+
+.icon-forward {
+ @include ie7icon('');
+}
+
+
+.icon-fast-forward {
+ @include ie7icon('');
+}
+
+
+.icon-step-forward {
+ @include ie7icon('');
+}
+
+
+.icon-eject {
+ @include ie7icon('');
+}
+
+
+.icon-chevron-left {
+ @include ie7icon('');
+}
+
+
+.icon-chevron-right {
+ @include ie7icon('');
+}
+
+
+.icon-plus-sign {
+ @include ie7icon('');
+}
+
+
+.icon-minus-sign {
+ @include ie7icon('');
+}
+
+
+.icon-remove-sign {
+ @include ie7icon('');
+}
+
+
+.icon-ok-sign {
+ @include ie7icon('');
+}
+
+
+.icon-question-sign {
+ @include ie7icon('');
+}
+
+
+.icon-info-sign {
+ @include ie7icon('');
+}
+
+
+.icon-screenshot {
+ @include ie7icon('');
+}
+
+
+.icon-remove-circle {
+ @include ie7icon('');
+}
+
+
+.icon-ok-circle {
+ @include ie7icon('');
+}
+
+
+.icon-ban-circle {
+ @include ie7icon('');
+}
+
+
+.icon-arrow-left {
+ @include ie7icon('');
+}
+
+
+.icon-arrow-right {
+ @include ie7icon('');
+}
+
+
+.icon-arrow-up {
+ @include ie7icon('');
+}
+
+
+.icon-arrow-down {
+ @include ie7icon('');
+}
+
+
+.icon-share-alt {
+ @include ie7icon('');
+}
+
+.icon-mail-forward {
+ @include ie7icon('');
+}
+
+
+.icon-resize-full {
+ @include ie7icon('');
+}
+
+
+.icon-resize-small {
+ @include ie7icon('');
+}
+
+
+.icon-plus {
+ @include ie7icon('');
+}
+
+
+.icon-minus {
+ @include ie7icon('');
+}
+
+
+.icon-asterisk {
+ @include ie7icon('');
+}
+
+
+.icon-exclamation-sign {
+ @include ie7icon('');
+}
+
+
+.icon-gift {
+ @include ie7icon('');
+}
+
+
+.icon-leaf {
+ @include ie7icon('');
+}
+
+
+.icon-fire {
+ @include ie7icon('');
+}
+
+
+.icon-eye-open {
+ @include ie7icon('');
+}
+
+
+.icon-eye-close {
+ @include ie7icon('');
+}
+
+
+.icon-warning-sign {
+ @include ie7icon('');
+}
+
+
+.icon-plane {
+ @include ie7icon('');
+}
+
+
+.icon-calendar {
+ @include ie7icon('');
+}
+
+
+.icon-random {
+ @include ie7icon('');
+}
+
+
+.icon-comment {
+ @include ie7icon('');
+}
+
+
+.icon-magnet {
+ @include ie7icon('');
+}
+
+
+.icon-chevron-up {
+ @include ie7icon('');
+}
+
+
+.icon-chevron-down {
+ @include ie7icon('');
+}
+
+
+.icon-retweet {
+ @include ie7icon('');
+}
+
+
+.icon-shopping-cart {
+ @include ie7icon('');
+}
+
+
+.icon-folder-close {
+ @include ie7icon('');
+}
+
+
+.icon-folder-open {
+ @include ie7icon('');
+}
+
+
+.icon-resize-vertical {
+ @include ie7icon('');
+}
+
+
+.icon-resize-horizontal {
+ @include ie7icon('');
+}
+
+
+.icon-bar-chart {
+ @include ie7icon('');
+}
+
+
+.icon-twitter-sign {
+ @include ie7icon('');
+}
+
+
+.icon-facebook-sign {
+ @include ie7icon('');
+}
+
+
+.icon-camera-retro {
+ @include ie7icon('');
+}
+
+
+.icon-key {
+ @include ie7icon('');
+}
+
+
+.icon-cogs {
+ @include ie7icon('');
+}
+
+.icon-gears {
+ @include ie7icon('');
+}
+
+
+.icon-comments {
+ @include ie7icon('');
+}
+
+
+.icon-thumbs-up-alt {
+ @include ie7icon('');
+}
+
+
+.icon-thumbs-down-alt {
+ @include ie7icon('');
+}
+
+
+.icon-star-half {
+ @include ie7icon('');
+}
+
+
+.icon-heart-empty {
+ @include ie7icon('');
+}
+
+
+.icon-signout {
+ @include ie7icon('');
+}
+
+
+.icon-linkedin-sign {
+ @include ie7icon('');
+}
+
+
+.icon-pushpin {
+ @include ie7icon('');
+}
+
+
+.icon-external-link {
+ @include ie7icon('');
+}
+
+
+.icon-signin {
+ @include ie7icon('');
+}
+
+
+.icon-trophy {
+ @include ie7icon('');
+}
+
+
+.icon-github-sign {
+ @include ie7icon('');
+}
+
+
+.icon-upload-alt {
+ @include ie7icon('');
+}
+
+
+.icon-lemon {
+ @include ie7icon('');
+}
+
+
+.icon-phone {
+ @include ie7icon('');
+}
+
+
+.icon-check-empty {
+ @include ie7icon('');
+}
+
+.icon-unchecked {
+ @include ie7icon('');
+}
+
+
+.icon-bookmark-empty {
+ @include ie7icon('');
+}
+
+
+.icon-phone-sign {
+ @include ie7icon('');
+}
+
+
+.icon-twitter {
+ @include ie7icon('');
+}
+
+
+.icon-facebook {
+ @include ie7icon('');
+}
+
+
+.icon-github {
+ @include ie7icon('');
+}
+
+
+.icon-unlock {
+ @include ie7icon('');
+}
+
+
+.icon-credit-card {
+ @include ie7icon('');
+}
+
+
+.icon-rss {
+ @include ie7icon('');
+}
+
+
+.icon-hdd {
+ @include ie7icon('');
+}
+
+
+.icon-bullhorn {
+ @include ie7icon('');
+}
+
+
+.icon-bell {
+ @include ie7icon('');
+}
+
+
+.icon-certificate {
+ @include ie7icon('');
+}
+
+
+.icon-hand-right {
+ @include ie7icon('');
+}
+
+
+.icon-hand-left {
+ @include ie7icon('');
+}
+
+
+.icon-hand-up {
+ @include ie7icon('');
+}
+
+
+.icon-hand-down {
+ @include ie7icon('');
+}
+
+
+.icon-circle-arrow-left {
+ @include ie7icon('');
+}
+
+
+.icon-circle-arrow-right {
+ @include ie7icon('');
+}
+
+
+.icon-circle-arrow-up {
+ @include ie7icon('');
+}
+
+
+.icon-circle-arrow-down {
+ @include ie7icon('');
+}
+
+
+.icon-globe {
+ @include ie7icon('');
+}
+
+
+.icon-wrench {
+ @include ie7icon('');
+}
+
+
+.icon-tasks {
+ @include ie7icon('');
+}
+
+
+.icon-filter {
+ @include ie7icon('');
+}
+
+
+.icon-briefcase {
+ @include ie7icon('');
+}
+
+
+.icon-fullscreen {
+ @include ie7icon('');
+}
+
+
+.icon-group {
+ @include ie7icon('');
+}
+
+
+.icon-link {
+ @include ie7icon('');
+}
+
+
+.icon-cloud {
+ @include ie7icon('');
+}
+
+
+.icon-beaker {
+ @include ie7icon('');
+}
+
+
+.icon-cut {
+ @include ie7icon('');
+}
+
+
+.icon-copy {
+ @include ie7icon('');
+}
+
+
+.icon-paper-clip {
+ @include ie7icon('');
+}
+
+.icon-paperclip {
+ @include ie7icon('');
+}
+
+
+.icon-save {
+ @include ie7icon('');
+}
+
+
+.icon-sign-blank {
+ @include ie7icon('');
+}
+
+
+.icon-reorder {
+ @include ie7icon('');
+}
+
+
+.icon-list-ul {
+ @include ie7icon('');
+}
+
+
+.icon-list-ol {
+ @include ie7icon('');
+}
+
+
+.icon-strikethrough {
+ @include ie7icon('');
+}
+
+
+.icon-underline {
+ @include ie7icon('');
+}
+
+
+.icon-table {
+ @include ie7icon('');
+}
+
+
+.icon-magic {
+ @include ie7icon('');
+}
+
+
+.icon-truck {
+ @include ie7icon('');
+}
+
+
+.icon-pinterest {
+ @include ie7icon('');
+}
+
+
+.icon-pinterest-sign {
+ @include ie7icon('');
+}
+
+
+.icon-google-plus-sign {
+ @include ie7icon('');
+}
+
+
+.icon-google-plus {
+ @include ie7icon('');
+}
+
+
+.icon-money {
+ @include ie7icon('');
+}
+
+
+.icon-caret-down {
+ @include ie7icon('');
+}
+
+
+.icon-caret-up {
+ @include ie7icon('');
+}
+
+
+.icon-caret-left {
+ @include ie7icon('');
+}
+
+
+.icon-caret-right {
+ @include ie7icon('');
+}
+
+
+.icon-columns {
+ @include ie7icon('');
+}
+
+
+.icon-sort {
+ @include ie7icon('');
+}
+
+
+.icon-sort-down {
+ @include ie7icon('');
+}
+
+
+.icon-sort-up {
+ @include ie7icon('');
+}
+
+
+.icon-envelope {
+ @include ie7icon('');
+}
+
+
+.icon-linkedin {
+ @include ie7icon('');
+}
+
+
+.icon-undo {
+ @include ie7icon('');
+}
+
+.icon-rotate-left {
+ @include ie7icon('');
+}
+
+
+.icon-legal {
+ @include ie7icon('');
+}
+
+
+.icon-dashboard {
+ @include ie7icon('');
+}
+
+
+.icon-comment-alt {
+ @include ie7icon('');
+}
+
+
+.icon-comments-alt {
+ @include ie7icon('');
+}
+
+
+.icon-bolt {
+ @include ie7icon('');
+}
+
+
+.icon-sitemap {
+ @include ie7icon('');
+}
+
+
+.icon-umbrella {
+ @include ie7icon('');
+}
+
+
+.icon-paste {
+ @include ie7icon('');
+}
+
+
+.icon-lightbulb {
+ @include ie7icon('');
+}
+
+
+.icon-exchange {
+ @include ie7icon('');
+}
+
+
+.icon-cloud-download {
+ @include ie7icon('');
+}
+
+
+.icon-cloud-upload {
+ @include ie7icon('');
+}
+
+
+.icon-user-md {
+ @include ie7icon('');
+}
+
+
+.icon-stethoscope {
+ @include ie7icon('');
+}
+
+
+.icon-suitcase {
+ @include ie7icon('');
+}
+
+
+.icon-bell-alt {
+ @include ie7icon('');
+}
+
+
+.icon-coffee {
+ @include ie7icon('');
+}
+
+
+.icon-food {
+ @include ie7icon('');
+}
+
+
+.icon-file-text-alt {
+ @include ie7icon('');
+}
+
+
+.icon-building {
+ @include ie7icon('');
+}
+
+
+.icon-hospital {
+ @include ie7icon('');
+}
+
+
+.icon-ambulance {
+ @include ie7icon('');
+}
+
+
+.icon-medkit {
+ @include ie7icon('');
+}
+
+
+.icon-fighter-jet {
+ @include ie7icon('');
+}
+
+
+.icon-beer {
+ @include ie7icon('');
+}
+
+
+.icon-h-sign {
+ @include ie7icon('');
+}
+
+
+.icon-plus-sign-alt {
+ @include ie7icon('');
+}
+
+
+.icon-double-angle-left {
+ @include ie7icon('');
+}
+
+
+.icon-double-angle-right {
+ @include ie7icon('');
+}
+
+
+.icon-double-angle-up {
+ @include ie7icon('');
+}
+
+
+.icon-double-angle-down {
+ @include ie7icon('');
+}
+
+
+.icon-angle-left {
+ @include ie7icon('');
+}
+
+
+.icon-angle-right {
+ @include ie7icon('');
+}
+
+
+.icon-angle-up {
+ @include ie7icon('');
+}
+
+
+.icon-angle-down {
+ @include ie7icon('');
+}
+
+
+.icon-desktop {
+ @include ie7icon('');
+}
+
+
+.icon-laptop {
+ @include ie7icon('');
+}
+
+
+.icon-tablet {
+ @include ie7icon('');
+}
+
+
+.icon-mobile-phone {
+ @include ie7icon('');
+}
+
+
+.icon-circle-blank {
+ @include ie7icon('');
+}
+
+
+.icon-quote-left {
+ @include ie7icon('');
+}
+
+
+.icon-quote-right {
+ @include ie7icon('');
+}
+
+
+.icon-spinner {
+ @include ie7icon('');
+}
+
+
+.icon-circle {
+ @include ie7icon('');
+}
+
+
+.icon-reply {
+ @include ie7icon('');
+}
+
+.icon-mail-reply {
+ @include ie7icon('');
+}
+
+
+.icon-github-alt {
+ @include ie7icon('');
+}
+
+
+.icon-folder-close-alt {
+ @include ie7icon('');
+}
+
+
+.icon-folder-open-alt {
+ @include ie7icon('');
+}
+
+
+.icon-expand-alt {
+ @include ie7icon('');
+}
+
+
+.icon-collapse-alt {
+ @include ie7icon('');
+}
+
+
+.icon-smile {
+ @include ie7icon('');
+}
+
+
+.icon-frown {
+ @include ie7icon('');
+}
+
+
+.icon-meh {
+ @include ie7icon('');
+}
+
+
+.icon-gamepad {
+ @include ie7icon('');
+}
+
+
+.icon-keyboard {
+ @include ie7icon('');
+}
+
+
+.icon-flag-alt {
+ @include ie7icon('');
+}
+
+
+.icon-flag-checkered {
+ @include ie7icon('');
+}
+
+
+.icon-terminal {
+ @include ie7icon('');
+}
+
+
+.icon-code {
+ @include ie7icon('');
+}
+
+
+.icon-reply-all {
+ @include ie7icon('');
+}
+
+
+.icon-mail-reply-all {
+ @include ie7icon('');
+}
+
+
+.icon-star-half-empty {
+ @include ie7icon('');
+}
+
+.icon-star-half-full {
+ @include ie7icon('');
+}
+
+
+.icon-location-arrow {
+ @include ie7icon('');
+}
+
+
+.icon-crop {
+ @include ie7icon('');
+}
+
+
+.icon-code-fork {
+ @include ie7icon('');
+}
+
+
+.icon-unlink {
+ @include ie7icon('');
+}
+
+
+.icon-question {
+ @include ie7icon('');
+}
+
+
+.icon-info {
+ @include ie7icon('');
+}
+
+
+.icon-exclamation {
+ @include ie7icon('');
+}
+
+
+.icon-superscript {
+ @include ie7icon('');
+}
+
+
+.icon-subscript {
+ @include ie7icon('');
+}
+
+
+.icon-eraser {
+ @include ie7icon('');
+}
+
+
+.icon-puzzle-piece {
+ @include ie7icon('');
+}
+
+
+.icon-microphone {
+ @include ie7icon('');
+}
+
+
+.icon-microphone-off {
+ @include ie7icon('');
+}
+
+
+.icon-shield {
+ @include ie7icon('');
+}
+
+
+.icon-calendar-empty {
+ @include ie7icon('');
+}
+
+
+.icon-fire-extinguisher {
+ @include ie7icon('');
+}
+
+
+.icon-rocket {
+ @include ie7icon('');
+}
+
+
+.icon-maxcdn {
+ @include ie7icon('');
+}
+
+
+.icon-chevron-sign-left {
+ @include ie7icon('');
+}
+
+
+.icon-chevron-sign-right {
+ @include ie7icon('');
+}
+
+
+.icon-chevron-sign-up {
+ @include ie7icon('');
+}
+
+
+.icon-chevron-sign-down {
+ @include ie7icon('');
+}
+
+
+.icon-html5 {
+ @include ie7icon('');
+}
+
+
+.icon-css3 {
+ @include ie7icon('');
+}
+
+
+.icon-anchor {
+ @include ie7icon('');
+}
+
+
+.icon-unlock-alt {
+ @include ie7icon('');
+}
+
+
+.icon-bullseye {
+ @include ie7icon('');
+}
+
+
+.icon-ellipsis-horizontal {
+ @include ie7icon('');
+}
+
+
+.icon-ellipsis-vertical {
+ @include ie7icon('');
+}
+
+
+.icon-rss-sign {
+ @include ie7icon('');
+}
+
+
+.icon-play-sign {
+ @include ie7icon('');
+}
+
+
+.icon-ticket {
+ @include ie7icon('');
+}
+
+
+.icon-minus-sign-alt {
+ @include ie7icon('');
+}
+
+
+.icon-check-minus {
+ @include ie7icon('');
+}
+
+
+.icon-level-up {
+ @include ie7icon('');
+}
+
+
+.icon-level-down {
+ @include ie7icon('');
+}
+
+
+.icon-check-sign {
+ @include ie7icon('');
+}
+
+
+.icon-edit-sign {
+ @include ie7icon('');
+}
+
+
+.icon-external-link-sign {
+ @include ie7icon('');
+}
+
+
+.icon-share-sign {
+ @include ie7icon('');
+}
+
+
+.icon-compass {
+ @include ie7icon('');
+}
+
+
+.icon-collapse {
+ @include ie7icon('');
+}
+
+
+.icon-collapse-top {
+ @include ie7icon('');
+}
+
+
+.icon-expand {
+ @include ie7icon('');
+}
+
+
+.icon-eur {
+ @include ie7icon('');
+}
+
+.icon-euro {
+ @include ie7icon('');
+}
+
+
+.icon-gbp {
+ @include ie7icon('');
+}
+
+
+.icon-usd {
+ @include ie7icon('');
+}
+
+.icon-dollar {
+ @include ie7icon('');
+}
+
+
+.icon-inr {
+ @include ie7icon('');
+}
+
+.icon-rupee {
+ @include ie7icon('');
+}
+
+
+.icon-jpy {
+ @include ie7icon('');
+}
+
+.icon-yen {
+ @include ie7icon('');
+}
+
+
+.icon-cny {
+ @include ie7icon('');
+}
+
+.icon-renminbi {
+ @include ie7icon('');
+}
+
+
+.icon-krw {
+ @include ie7icon('');
+}
+
+.icon-won {
+ @include ie7icon('');
+}
+
+
+.icon-btc {
+ @include ie7icon('');
+}
+
+.icon-bitcoin {
+ @include ie7icon('');
+}
+
+
+.icon-file {
+ @include ie7icon('');
+}
+
+
+.icon-file-text {
+ @include ie7icon('');
+}
+
+
+.icon-sort-by-alphabet {
+ @include ie7icon('');
+}
+
+
+.icon-sort-by-alphabet-alt {
+ @include ie7icon('');
+}
+
+
+.icon-sort-by-attributes {
+ @include ie7icon('');
+}
+
+
+.icon-sort-by-attributes-alt {
+ @include ie7icon('');
+}
+
+
+.icon-sort-by-order {
+ @include ie7icon('');
+}
+
+
+.icon-sort-by-order-alt {
+ @include ie7icon('');
+}
+
+
+.icon-thumbs-up {
+ @include ie7icon('');
+}
+
+
+.icon-thumbs-down {
+ @include ie7icon('');
+}
+
+
+.icon-youtube-sign {
+ @include ie7icon('');
+}
+
+
+.icon-youtube {
+ @include ie7icon('');
+}
+
+
+.icon-xing {
+ @include ie7icon('');
+}
+
+
+.icon-xing-sign {
+ @include ie7icon('');
+}
+
+
+.icon-youtube-play {
+ @include ie7icon('');
+}
+
+
+.icon-dropbox {
+ @include ie7icon('');
+}
+
+
+.icon-stackexchange {
+ @include ie7icon('');
+}
+
+
+.icon-instagram {
+ @include ie7icon('');
+}
+
+
+.icon-flickr {
+ @include ie7icon('');
+}
+
+
+.icon-adn {
+ @include ie7icon('');
+}
+
+
+.icon-bitbucket {
+ @include ie7icon('');
+}
+
+
+.icon-bitbucket-sign {
+ @include ie7icon('');
+}
+
+
+.icon-tumblr {
+ @include ie7icon('');
+}
+
+
+.icon-tumblr-sign {
+ @include ie7icon('');
+}
+
+
+.icon-long-arrow-down {
+ @include ie7icon('');
+}
+
+
+.icon-long-arrow-up {
+ @include ie7icon('');
+}
+
+
+.icon-long-arrow-left {
+ @include ie7icon('');
+}
+
+
+.icon-long-arrow-right {
+ @include ie7icon('');
+}
+
+
+.icon-apple {
+ @include ie7icon('');
+}
+
+
+.icon-windows {
+ @include ie7icon('');
+}
+
+
+.icon-android {
+ @include ie7icon('');
+}
+
+
+.icon-linux {
+ @include ie7icon('');
+}
+
+
+.icon-dribbble {
+ @include ie7icon('');
+}
+
+
+.icon-skype {
+ @include ie7icon('');
+}
+
+
+.icon-foursquare {
+ @include ie7icon('');
+}
+
+
+.icon-trello {
+ @include ie7icon('');
+}
+
+
+.icon-female {
+ @include ie7icon('');
+}
+
+
+.icon-male {
+ @include ie7icon('');
+}
+
+
+.icon-gittip {
+ @include ie7icon('');
+}
+
+
+.icon-sun {
+ @include ie7icon('');
+}
+
+
+.icon-moon {
+ @include ie7icon('');
+}
+
+
+.icon-archive {
+ @include ie7icon('');
+}
+
+
+.icon-bug {
+ @include ie7icon('');
+}
+
+
+.icon-vk {
+ @include ie7icon('');
+}
+
+
+.icon-weibo {
+ @include ie7icon('');
+}
+
+
+.icon-renren {
+ @include ie7icon('');
+}
+
+
diff --git a/sm-shop/src/main/webapp/resources/css/shopizer-admin.css b/sm-shop/src/main/webapp/resources/css/shopizer-admin.css
new file mode 100644
index 0000000..265ec72
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/shopizer-admin.css
@@ -0,0 +1,105 @@
+
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+
+body {
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ color: #333333;
+ background-color: #ffffff;
+}
+
+
+
+.error { color: #ff0000; }
+
+.sm-iframe-component {
+
+
+ width:100%;
+ height:620px;
+ overflow:hidden;
+ border:0;
+
+}
+
+
+
+.table tbody tr.subt:hover td,
+.table tbody tr.subt:hover th {
+ background-color: transparent;
+}
+
+
+.modalOverlay {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 0px;
+ left: 0px;
+ background-color: rgba(0,0,0,0.3); /* black semi-transparent */
+}
+
+/** Bootstrap overwrites **/
+
+
+.sm-ui-component label {
+ color: #333333;
+ margin-bottom: 0;
+ display: inline;
+}
+
+.sm-ui-component IMG {
+
+ max-width:none;
+
+}
+
+.sm-iframe-component {
+
+ width:100%;
+ height:620px;
+ overflow:hidden;
+ border:0;
+
+}
+
+
+input.highlight, select.highlight, checkbox.highlight, textarea.highlight {
+ background-color: #FFC;
+}
+
+
+.box-title {
+ background-color: #F5F5F5;
+ border: 1px solid #DDDDDD;
+ border-radius: 4px 4px 0px 0px;
+ color: #000000;
+ font-size: 12px;
+ font-weight: bold;
+ width:100%;
+ height: 30px;
+ position: absolute;
+ margin-left:-20px;
+ top: -1px;
+}
+
+
+.box-title p {
+ padding:8px;
+}
+
+
+.box {
+ background-color: #FFFFFF;
+ border: 1px solid #DDDDDD;
+ padding: 39px 19px 14px;
+ position: relative;
+}
+
+
+
diff --git a/sm-shop/src/main/webapp/resources/css/showLoading.css b/sm-shop/src/main/webapp/resources/css/showLoading.css
new file mode 100644
index 0000000..5084218
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/showLoading.css
@@ -0,0 +1,15 @@
+.loading-indicator {
+ height: 120px;
+ width: 240px;
+ background: url( '../img/loading.gif' );
+ background-repeat: no-repeat;
+ background-position: center center;
+ z-index: 100000;
+}
+
+.loading-indicator-overlay {
+ background-color: #FFFFFF;
+ opacity: 0.6;
+ filter: alpha(opacity = 60);
+ z-index: 100000;
+}
\ No newline at end of file
sm-shop/src/main/webapp/resources/css/sm.css 311(+311 -0)
diff --git a/sm-shop/src/main/webapp/resources/css/sm.css b/sm-shop/src/main/webapp/resources/css/sm.css
new file mode 100755
index 0000000..ed48f43
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/css/sm.css
@@ -0,0 +1,311 @@
+/**
+*Generic Shopizer shop css file
+*
+**/
+
+
+.total-price {
+ width: 100%; float: left; height: 27px
+}
+
+.total-price1 {
+ background-image: url(../img/shopizer/cart-price1.gif); width: 5px;; background-repeat: no-repeat; float: left; height: 27px
+}
+
+.total-price2 {
+ background-image: url(../img/shopizer/cart-price2.gif); width:95%; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; FONT-STYLE: normal; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: repeat-x; FONT-FAMILY: Tahoma, Helvetica, Arial; FLOAT: left; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 27px; COLOR: #e1e1e1; BORDER-LEFT-WIDTH: 0px; FONT-WEIGHT: normal; PADDING-TOP: 2px
+}
+.total-price3 {
+ background-image: url(../img/shopizer/cart-price3.gif); width: 5px; background-repeat: no-repeat; float: left; height: 27px
+}
+.total-label {
+ font-size: 14px
+}
+.price-label {
+ color: #8dc63f
+}
+.price-total {
+ font-size: 18px;
+}
+
+.section-header {
+ BACKGROUND-IMAGE: url(../img/shopizer/header-dot.gif); PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; FONT-STYLE: normal; WIDTH: 100%; BACKGROUND-REPEAT: repeat-x; FONT-FAMILY: "Times New Roman"; BACKGROUND-POSITION: left bottom; FLOAT: left; COLOR: #a1a1a1; FONT-SIZE: 18px; FONT-WEIGHT: normal
+}
+.section-header-1stword {
+ COLOR: #535353
+}
+
+.short-form-actions {
+ margin-top: 5px;
+ padding: 5px 0px 18px;
+}
+
+.sm-ui-component label {
+ color: #333333;
+ margin-bottom: 0;
+ display: inline;
+}
+
+/** shopping cart **/
+.cartmessage {
+ margin-left:10px;
+ margin-top:10px;
+ margin-bottom:10px;
+}
+
+#mainCartTable tbody tr:hover td, .table tbody tr:hover th {
+ background-color: transparent;
+}
+
+/** typeahead search **/
+.tt-dropdown-menu,
+.gist {
+ text-align: left;
+}
+
+.typeahead,
+.tt-query,
+.tt-hint {
+ width: 250px;
+ padding: 8px 12px;
+ font-size: 15px;
+ line-height: 30px;
+ border: 2px solid #ccc;
+ outline: none;
+}
+
+.twitter-typeahead {
+ vertical-align:top;
+}
+
+.typeahead {
+ background-color: #fff;
+}
+
+.typeahead:focus {
+ border: 2px solid #0097cf;
+}
+
+.tt-query {
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.tt-hint {
+ color: #999
+}
+
+.tt-dropdown-menu {
+ width: 276px;
+ margin-top: 12px;
+ padding: 8px 0;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+ border-radius: 8px;
+ -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
+ -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
+ box-shadow: 0 5px 10px rgba(0,0,0,.2);
+}
+
+.tt-suggestion {
+ padding: 3px 20px;
+ font-size: 18px;
+ line-height: 24px;
+}
+
+.tt-suggestion.tt-is-under-cursor {
+ color: #fff;
+ background-color: #0097cf;
+
+}
+
+.tt-suggestion p {
+ margin: 0;
+}
+
+
+
+#searchGroup .tt-suggestion {
+ padding: 8px 20px;
+}
+
+
+#searchGroup .name {
+ font-weight: bold;
+}
+
+#searchGroup .description {
+ font-size: 14px;
+}
+
+#searchButton {
+ height: 37px;
+}
+
+/** boxes **/
+.box-title {
+
+ background-color: #FBFBFB;
+ background-image: -moz-linear-gradient(center top , #FFFFFF, #F5F5F5);
+ box-shadow: 0 1px 0 #FFFFFF inset;
+ border: 1px solid #DDDDDD;
+ border-radius: 4px 4px 0px 0px;
+ color: #000000;
+ font-size: 12px;
+ font-weight: bold;
+ width:100%;
+ height: 30px;
+ position: absolute;
+ margin-left:-20px;
+ top: -1px;
+}
+
+.box-h1 {
+ color: #000000;
+ font-size: 16px;
+ font-weight: bold;
+ width:100%;
+}
+
+
+.box-title p {
+ padding:8px;
+}
+
+
+.box {
+ background-color: #FFF;
+ border: 1px solid #DDDDDD;
+ padding: 39px 19px 14px;
+ position: relative;
+}
+
+.error { color: #ff0000; }
+
+.no_margin{
+ margin:0px !important;
+}
+
+input.required, select.required, checkbox.required, textarea.required {
+ background-color: #FFC;
+}
+
+.contentPages {
+ margin:10px !important;
+}
+
+.customerSection {
+ margin:10px !important;
+}
+
+.socialLinksSection {
+ margin:10px !important;
+}
+
+/** cart colors **/
+#mainCartTable th {
+ background-color: #FBFBFB;
+ background-image: -moz-linear-gradient(center top , #FFFFFF, #F5F5F5);
+ box-shadow: 0 1px 0 #FFFFFF inset;
+}
+
+form input.valid {
+ background: url("../img/check.png") no-repeat scroll 250px center rgba(0, 0, 0, 0);
+}
+
+/** checkout **/
+#checkoutForm .img-add-on {
+ background-color: #FFF;
+ border: 0px;
+ display: inline-block;
+ font-weight: normal;
+ height: 32px;
+ line-height: 18px;
+ min-width: 16px;
+ padding: 4px 5px;
+ text-align: center;
+ text-shadow: 0 1px 0 #FFFFFF;
+ vertical-align: middle;
+ width: auto;
+}
+
+.nomargin {
+ margin: 0 !important;
+}
+
+.alert-custom {
+ border-bottom: 1px solid #EEEEEE;
+ background-color: #FFFFFF;
+ padding-bottom: 20px;
+ margin-bottom:18px;
+}
+
+#orderTableTitle {
+ margin-top:20px;
+}
+
+#cartContent .item {
+ border-bottom: 1px dotted #DDDDDD;
+}
+
+#cartContent .cartImage {
+ float: left;
+ padding: 10px;
+ text-align: left;
+ width: 15%;
+}
+
+#cartContent .productName {
+ float: left;
+ padding: 10px;
+ font-size: 15px;
+ text-align: left;
+ width: 40%;
+}
+
+#cartContent .quantity {
+ float: left;
+ font-size: 15px;
+ padding: 10px;
+ text-align: center;
+ width: 10%;
+}
+
+#cartContent .totalPrice {
+ float: right;
+ font-size: 15px;
+ font-weight: bold;
+ padding: 10px;
+ text-align: right;
+ width: 10%;
+}
+
+
+#cartContent .subTotal {
+ float: right;
+ font-size: 15px;
+ padding: 10px;
+ text-align: right;
+ width: 10%;
+}
+
+#cartContent .total {
+ text-align: right;
+ padding: 10px;
+}
+
+.totalItem {
+ font-size: 15px;
+ padding: 10px;
+}
+
+
+
+
+
+
+
diff --git a/sm-shop/src/main/webapp/resources/img/admin/login-box-backg.png b/sm-shop/src/main/webapp/resources/img/admin/login-box-backg.png
new file mode 100755
index 0000000..1259cce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/admin/login-box-backg.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/admin/remove.png b/sm-shop/src/main/webapp/resources/img/admin/remove.png
new file mode 100644
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/admin/remove.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/ajax-loader.gif b/sm-shop/src/main/webapp/resources/img/ajax-loader.gif
new file mode 100644
index 0000000..3c2f7c0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/ajax-loader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/img/blue_right_arrow.jpg b/sm-shop/src/main/webapp/resources/img/blue_right_arrow.jpg
new file mode 100644
index 0000000..54d3e94
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/blue_right_arrow.jpg differ
diff --git a/sm-shop/src/main/webapp/resources/img/check.png b/sm-shop/src/main/webapp/resources/img/check.png
new file mode 100644
index 0000000..99c4f55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/check.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/cvv.jpg b/sm-shop/src/main/webapp/resources/img/cvv.jpg
new file mode 100644
index 0000000..4903f89
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/cvv.jpg differ
diff --git a/sm-shop/src/main/webapp/resources/img/facebook-transparent.png b/sm-shop/src/main/webapp/resources/img/facebook-transparent.png
new file mode 100644
index 0000000..c469daf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/facebook-transparent.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/icon_error.png b/sm-shop/src/main/webapp/resources/img/icon_error.png
new file mode 100644
index 0000000..a32ea66
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/icon_error.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/icon_green_on.gif b/sm-shop/src/main/webapp/resources/img/icon_green_on.gif
new file mode 100644
index 0000000..0785cbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/icon_green_on.gif differ
diff --git a/sm-shop/src/main/webapp/resources/img/icon_red_on.gif b/sm-shop/src/main/webapp/resources/img/icon_red_on.gif
new file mode 100644
index 0000000..9a5bfc6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/icon_red_on.gif differ
diff --git a/sm-shop/src/main/webapp/resources/img/icon_success.png b/sm-shop/src/main/webapp/resources/img/icon_success.png
new file mode 100644
index 0000000..3f8ef4e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/icon_success.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/important-icon.png b/sm-shop/src/main/webapp/resources/img/important-icon.png
new file mode 100644
index 0000000..075da64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/important-icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/loading.gif b/sm-shop/src/main/webapp/resources/img/loading.gif
new file mode 100644
index 0000000..874c571
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/loading.gif differ
diff --git a/sm-shop/src/main/webapp/resources/img/loading-bars.gif b/sm-shop/src/main/webapp/resources/img/loading-bars.gif
new file mode 100644
index 0000000..e147f3e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/loading-bars.gif differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/authorizenet_logo.gif b/sm-shop/src/main/webapp/resources/img/payment/authorizenet_logo.gif
new file mode 100644
index 0000000..38322d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/authorizenet_logo.gif differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/beanstream.gif b/sm-shop/src/main/webapp/resources/img/payment/beanstream.gif
new file mode 100644
index 0000000..ecd18fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/beanstream.gif differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icon-paypal.png b/sm-shop/src/main/webapp/resources/img/payment/icon-paypal.png
new file mode 100644
index 0000000..36cada0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icon-paypal.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-curved-128px.png
new file mode 100644
index 0000000..f4b444c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-curved-32px.png
new file mode 100644
index 0000000..3dcbf92
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-curved-64px.png
new file mode 100644
index 0000000..2659340
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-straight-128px.png
new file mode 100644
index 0000000..2355947
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-straight-32px.png
new file mode 100644
index 0000000..2553a21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-straight-64px.png
new file mode 100644
index 0000000..db9a974
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/2checkout-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-curved-128px.png
new file mode 100644
index 0000000..70bf37a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-curved-32px.png
new file mode 100644
index 0000000..6075846
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-curved-64px.png
new file mode 100644
index 0000000..5049cac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-straight-128px.png
new file mode 100644
index 0000000..65cd991
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-straight-32px.png
new file mode 100644
index 0000000..902c316
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-straight-64px.png
new file mode 100644
index 0000000..b46185d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/american-express-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/amex-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/amex-straight-32px.png
new file mode 100644
index 0000000..902c316
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/amex-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-curved-128px.png
new file mode 100644
index 0000000..86a9b2c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-curved-32px.png
new file mode 100644
index 0000000..a113ddc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-curved-64px.png
new file mode 100644
index 0000000..13f77cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-straight-128px.png
new file mode 100644
index 0000000..96c7c9f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-straight-32px.png
new file mode 100644
index 0000000..8a4d90c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-straight-64px.png
new file mode 100644
index 0000000..0cb0272
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/cirrus-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/delta-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-curved-128px.png
new file mode 100644
index 0000000..ac9b0ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/delta-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-curved-32px.png
new file mode 100644
index 0000000..017588c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/delta-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-curved-64px.png
new file mode 100644
index 0000000..948e679
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/delta-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-straight-128px.png
new file mode 100644
index 0000000..706d2c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/delta-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-straight-32px.png
new file mode 100644
index 0000000..27b9052
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/delta-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-straight-64px.png
new file mode 100644
index 0000000..e6dd454
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/delta-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-curved-128px.png
new file mode 100644
index 0000000..26bfd54
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-curved-32px.png
new file mode 100644
index 0000000..0e54467
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-curved-64px.png
new file mode 100644
index 0000000..c5bebef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-straight-128px.png
new file mode 100644
index 0000000..bdde8e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-straight-32px.png
new file mode 100644
index 0000000..bec539c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-straight-64px.png
new file mode 100644
index 0000000..f4e023c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/direct-debit-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/discover-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-curved-128px.png
new file mode 100644
index 0000000..e81ae35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/discover-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-curved-32px.png
new file mode 100644
index 0000000..3e29096
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/discover-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-curved-64px.png
new file mode 100644
index 0000000..c0a141f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/discover-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-straight-128px.png
new file mode 100644
index 0000000..ec2e9c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/discover-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-straight-32px.png
new file mode 100644
index 0000000..b901ae8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/discover-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-straight-64px.png
new file mode 100644
index 0000000..3100cd0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/discover-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-curved-128px.png
new file mode 100644
index 0000000..9a6d78e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-curved-32px.png
new file mode 100644
index 0000000..b06b8c2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-curved-64px.png
new file mode 100644
index 0000000..203cf16
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-straight-128px.png
new file mode 100644
index 0000000..2b480fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-straight-32px.png
new file mode 100644
index 0000000..c9bccf8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-straight-64px.png
new file mode 100644
index 0000000..4e35668
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/ebay-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-curved-128px.png
new file mode 100644
index 0000000..bc3c6dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-curved-32px.png
new file mode 100644
index 0000000..50aee30
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-curved-64px.png
new file mode 100644
index 0000000..2dd2505
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-straight-128px.png
new file mode 100644
index 0000000..587f944
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-straight-32px.png
new file mode 100644
index 0000000..38f9df7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-straight-64px.png
new file mode 100644
index 0000000..bcb9139
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/google-checkout-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-curved-128px.png
new file mode 100644
index 0000000..4c3a432
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-curved-32px.png
new file mode 100644
index 0000000..e6472a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-curved-64px.png
new file mode 100644
index 0000000..d27df38
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-straight-128px.png
new file mode 100644
index 0000000..2cd1ea8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-straight-32px.png
new file mode 100644
index 0000000..14b1329
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-straight-64px.png
new file mode 100644
index 0000000..ce9d6a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/maestro-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-curved-128px.png
new file mode 100644
index 0000000..dd59998
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-curved-32px.png
new file mode 100644
index 0000000..9bc5e28
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-curved-64px.png
new file mode 100644
index 0000000..5618275
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-straight-128px.png
new file mode 100644
index 0000000..b4253ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-straight-32px.png
new file mode 100644
index 0000000..619201b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-straight-64px.png
new file mode 100644
index 0000000..dc1d255
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/mastercard-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-curved-128px.png
new file mode 100644
index 0000000..923a476
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-curved-32px.png
new file mode 100644
index 0000000..3867079
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-curved-64px.png
new file mode 100644
index 0000000..3edb006
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-straight-128px.png
new file mode 100644
index 0000000..8cd7819
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-straight-32px.png
new file mode 100644
index 0000000..773bb41
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-straight-64px.png
new file mode 100644
index 0000000..e790f9f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/moneybookers-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-curved-128px.png
new file mode 100644
index 0000000..42cdb26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-curved-32px.png
new file mode 100644
index 0000000..7767b62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-curved-64px.png
new file mode 100644
index 0000000..0b60adc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-straight-128px.png
new file mode 100644
index 0000000..d4594f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-straight-32px.png
new file mode 100644
index 0000000..de08fc9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-straight-64px.png
new file mode 100644
index 0000000..5dbb6ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/paypal-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-curved-128px.png
new file mode 100644
index 0000000..8729815
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-curved-32px.png
new file mode 100644
index 0000000..ab5ec59
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-curved-64px.png
new file mode 100644
index 0000000..b2541db
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-straight-128px.png
new file mode 100644
index 0000000..d4e057c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-straight-32px.png
new file mode 100644
index 0000000..3328306
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-straight-64px.png
new file mode 100644
index 0000000..11e946d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/sagepay-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/solo-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-curved-128px.png
new file mode 100644
index 0000000..09da85d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/solo-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-curved-32px.png
new file mode 100644
index 0000000..72eeb39
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/solo-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-curved-64px.png
new file mode 100644
index 0000000..158453a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/solo-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-straight-128px.png
new file mode 100644
index 0000000..6210710
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/solo-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-straight-32px.png
new file mode 100644
index 0000000..7d06adc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/solo-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-straight-64px.png
new file mode 100644
index 0000000..3d427ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/solo-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/switch-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-curved-128px.png
new file mode 100644
index 0000000..cb4383f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/switch-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-curved-32px.png
new file mode 100644
index 0000000..3167a21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/switch-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-curved-64px.png
new file mode 100644
index 0000000..9ea2b6d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/switch-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-straight-128px.png
new file mode 100644
index 0000000..e24661f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/switch-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-straight-32px.png
new file mode 100644
index 0000000..de48d3a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/switch-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-straight-64px.png
new file mode 100644
index 0000000..fd0b735
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/switch-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-curved-128px.png
new file mode 100644
index 0000000..ddab3cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-curved-32px.png
new file mode 100644
index 0000000..7220716
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-curved-64px.png
new file mode 100644
index 0000000..8051995
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-curved-128px.png
new file mode 100644
index 0000000..77de7bf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-curved-32px.png
new file mode 100644
index 0000000..8f8ec2f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-curved-64px.png
new file mode 100644
index 0000000..cb152a0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-straight-128px.png
new file mode 100644
index 0000000..f1449c8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-straight-32px.png
new file mode 100644
index 0000000..2351e34
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-straight-64px.png
new file mode 100644
index 0000000..d06bcce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-electron-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-straight-128px.png
new file mode 100644
index 0000000..1c97b0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-straight-32px.png
new file mode 100644
index 0000000..f263147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/visa-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-straight-64px.png
new file mode 100644
index 0000000..a273cc9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/visa-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-curved-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-curved-128px.png
new file mode 100644
index 0000000..b9bd511
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-curved-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-curved-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-curved-32px.png
new file mode 100644
index 0000000..135ff14
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-curved-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-curved-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-curved-64px.png
new file mode 100644
index 0000000..a87e5d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-curved-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-straight-128px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-straight-128px.png
new file mode 100644
index 0000000..4fcf441
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-straight-128px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-straight-32px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-straight-32px.png
new file mode 100644
index 0000000..db6dff6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-straight-32px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-straight-64px.png b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-straight-64px.png
new file mode 100644
index 0000000..2fb8466
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/icons/western-union-straight-64px.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/payment/moneyorder.gif b/sm-shop/src/main/webapp/resources/img/payment/moneyorder.gif
new file mode 100644
index 0000000..eb1ec75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/payment/moneyorder.gif differ
diff --git a/sm-shop/src/main/webapp/resources/img/shipping/canadapost.jpg b/sm-shop/src/main/webapp/resources/img/shipping/canadapost.jpg
new file mode 100644
index 0000000..409b990
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/shipping/canadapost.jpg differ
diff --git a/sm-shop/src/main/webapp/resources/img/shipping/fedEx.gif b/sm-shop/src/main/webapp/resources/img/shipping/fedEx.gif
new file mode 100644
index 0000000..d5ddc20
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/shipping/fedEx.gif differ
diff --git a/sm-shop/src/main/webapp/resources/img/shipping/ups.jpg b/sm-shop/src/main/webapp/resources/img/shipping/ups.jpg
new file mode 100644
index 0000000..67e3b64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/shipping/ups.jpg differ
diff --git a/sm-shop/src/main/webapp/resources/img/shipping/usps.jpg b/sm-shop/src/main/webapp/resources/img/shipping/usps.jpg
new file mode 100644
index 0000000..44cb19b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/shipping/usps.jpg differ
diff --git a/sm-shop/src/main/webapp/resources/img/shopizer_resized_transparent.png b/sm-shop/src/main/webapp/resources/img/shopizer_resized_transparent.png
new file mode 100644
index 0000000..4fad4db
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/shopizer_resized_transparent.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/shopizer_small.jpg b/sm-shop/src/main/webapp/resources/img/shopizer_small.jpg
new file mode 100644
index 0000000..465091b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/shopizer_small.jpg differ
diff --git a/sm-shop/src/main/webapp/resources/img/shopizer_small.png b/sm-shop/src/main/webapp/resources/img/shopizer_small.png
new file mode 100644
index 0000000..ff28733
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/shopizer_small.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/stars/cancel-off.png b/sm-shop/src/main/webapp/resources/img/stars/cancel-off.png
new file mode 100644
index 0000000..a3031f0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/stars/cancel-off.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/stars/cancel-on.png b/sm-shop/src/main/webapp/resources/img/stars/cancel-on.png
new file mode 100644
index 0000000..08f2493
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/stars/cancel-on.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/stars/star-half.png b/sm-shop/src/main/webapp/resources/img/stars/star-half.png
new file mode 100644
index 0000000..3c19e90
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/stars/star-half.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/stars/star-off.png b/sm-shop/src/main/webapp/resources/img/stars/star-off.png
new file mode 100644
index 0000000..956fa7c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/stars/star-off.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/stars/star-on.png b/sm-shop/src/main/webapp/resources/img/stars/star-on.png
new file mode 100644
index 0000000..975fe7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/stars/star-on.png differ
diff --git a/sm-shop/src/main/webapp/resources/img/twitter-transparent.png b/sm-shop/src/main/webapp/resources/img/twitter-transparent.png
new file mode 100644
index 0000000..94f8da3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/img/twitter-transparent.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/address.js b/sm-shop/src/main/webapp/resources/js/address.js
new file mode 100644
index 0000000..b69fcf4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/address.js
@@ -0,0 +1,70 @@
+ /**
+ * customer functionality for store front
+ */
+
+
+$.fn.addZoneItems = function(div, data, defaultValue) {
+ //console.log('Populating div ' + div + ' defaultValue ' + defaultValue);
+ var selector = div + ' > option';
+ var defaultExist = false;
+ $(selector).remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ //console.log(itemData.code + ' ' + defaultValue);
+ if(itemData.code==defaultValue) {
+ defaultExist = true;
+ }
+ var option = new Option(itemData.name, itemData.code);
+ list.add(option);
+ });
+ if(defaultExist && (defaultValue!=null && defaultValue!='')) {
+ $(div).val(defaultValue);
+ }
+ });
+};
+
+
+function getZones(countryCode, zoneCode, callBackFunction){
+
+ //console.log('Zone code ' + zoneCode);
+ var url = getContextPath() + '/shop/reference/provinces.html';
+ var data = 'countryCode=' + countryCode + '&lang=' + getLanguageCode();
+
+ $.ajax({
+ type: 'POST',
+ url: url,
+ data: data,
+ dataType: 'json',
+ success: function(responseObj){
+
+ if((responseObj.response.status == 0 || responseObj.response.status ==9999) && responseObj.response.data){
+ //$("#registration_zones option").remove();
+ $('#customer_zones').show();
+ $('#hidden_zones').hide();
+
+
+ //var zone = $('#registration_zones');
+ $('#customer_zones').addZoneItems('#customer_zones', responseObj.response.data, zoneCode);
+
+ } else {
+ $('#customer_zones').hide();
+ $('#hidden_zones').show();
+
+ }
+ if(callBackFunction!=null) {
+ callBackFunction();
+ }
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+
+ });
+
+}
+
+
+
+
diff --git a/sm-shop/src/main/webapp/resources/js/adminFunctions.js b/sm-shop/src/main/webapp/resources/js/adminFunctions.js
new file mode 100644
index 0000000..7e20145
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/adminFunctions.js
@@ -0,0 +1,48 @@
+ $(function(){
+
+ initBindings();
+
+
+ });
+
+
+ function initBindings() {
+
+
+
+ /** numeric formats **/
+ if($('#productPriceAmount')) {
+ $('#productPriceAmount').blur(function() {
+ $('#help-price').html(null);
+ $(this).formatCurrency({ roundToDecimalPlace: 2, eventOnDecimalsEntered: true, symbol: ''});
+ })
+ .keyup(function(e) {
+ var e = window.event || e;
+ var keyUnicode = e.charCode || e.keyCode;
+ if (e !== undefined) {
+ switch (keyUnicode) {
+ case 16: break; // Shift
+ case 17: break; // Ctrl
+ case 18: break; // Alt
+ case 27: this.value = ''; break; // Esc: clear entry
+ case 35: break; // End
+ case 36: break; // Home
+ case 37: break; // cursor left
+ case 38: break; // cursor up
+ case 39: break; // cursor right
+ case 40: break; // cursor down
+ case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
+ case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
+ case 190: break; // .
+ default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, eventOnDecimalsEntered: true, symbol: ''});
+ }
+ }
+ })
+ .bind('decimalsEntered', function(e, cents) {
+ if (String(cents).length > 2) {
+ var errorMsg = priceFormatMessage + ' (0.' + cents + ')';
+ $('#help-price').html(errorMsg);
+ }
+ });
+ }
+ }
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap.min.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap.min.js
new file mode 100644
index 0000000..1f87730
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap.min.js
@@ -0,0 +1,6 @@
+/*!
+* Bootstrap.js by @fat & @mdo
+* Copyright 2012 Twitter, Inc.
+* http://www.apache.org/licenses/LICENSE-2.0.txt
+*/
+!function(a){a(function(){"use strict",a.support.transition=function(){var a=function(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd",transition:"transitionend"},c;for(c in b)if(a.style[c]!==undefined)return b[c]}();return a&&{end:a}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function f(){e.trigger("closed").remove()}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger(b=a.Event("close"));if(b.isDefaultPrevented())return;e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=c,this.options.slide&&this.slide(this.options.slide),this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(b){return b||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(a){return a||(this.paused=!0),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this,j=a.Event("slide");this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h]();if(e.hasClass("active"))return;if(a.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(j);if(j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})}else{this.$element.trigger(j);if(j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=a.extend({},a.fn.carousel.defaults,typeof c=="object"&&c);e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():f.interval&&e.cycle()})},a.fn.carousel.defaults={interval:5e3,pause:"hover"},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b,c,d,e;if(this.transitioning)return;b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find("> .accordion-group > .in");if(d&&d.length){e=d.data("collapse");if(e&&e.transitioning)return;d.collapse("hide"),e||d.data("collapse",null)}this.$element[b](0),this.transition("addClass",a.Event("show"),"shown"),this.$element[b](this.$element[0][c])},hide:function(){var b;if(this.transitioning)return;b=this.dimension(),this.reset(this.$element[b]()),this.transition("removeClass",a.Event("hide"),"hidden"),this.$element[b](0)},reset:function(a){var b=this.dimension();return this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element[a!==null?"addClass":"removeClass"]("collapse"),this},transition:function(b,c,d){var e=this,f=function(){c.type=="show"&&e.reset(),e.transitioning=0,e.$element.trigger(d)};this.$element.trigger(c);if(c.isDefaultPrevented())return;this.transitioning=1,this.$element[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e,f,g;if(c.is(".disabled, :disabled"))return;return f=c.attr("data-target"),f||(f=c.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,"")),e=a(f),e.length||(e=c.parent()),g=e.hasClass("open"),d(),g||e.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown",".dropdown form",function(a){a.stopPropagation()}).on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this,c=a.Event("show");this.$element.trigger(c);if(this.isShown||c.isDefaultPrevented())return;a("body").addClass("modal-open"),this.isShown=!0,g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");b.$element.parent().length||b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();var e=this;b=a.Event("hide"),this.$element.trigger(b);if(!this.isShown||b.isDefaultPrevented())return;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);if(!c.options.delay||!c.options.delay.show)return c.show();clearTimeout(this.timeout),c.hoverState="in",this.timeout=setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show)},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);if(!c.options.delay||!c.options.delay.hide)return c.hide();clearTimeout(this.timeout),c.hoverState="out",this.timeout=setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide)},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},isHTML:function(a){return typeof a!="string"||a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3||/^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(a)},setContent:function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.isHTML(b)?"html":"text"](b),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover",title:"",delay:0}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.isHTML(b)?"html":"text"](b),a.find(".popover-content > *")[this.isHTML(c)?"html":"text"](c),a.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body"),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){var b=this,c;this.offsets=a([]),this.targets=a([]),c=this.$body.find(this.selector).map(function(){var b=a(this),c=b.data("target")||b.attr("href"),d=/^#\w/.test(c)&&a(c);return d&&c.length&&[[d.position().top,c]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,c=b-this.$scrollElement.height(),d=this.offsets,e=this.targets,f=this.activeTarget,g;if(a>=c)return f!=(g=e.last()[0])&&this.activate(g);for(g=d.length;g--;)f!=e[g]&&a>=d[g]&&(!d[g+1]||a<=d[g+1])&&this.activate(e[g])},activate:function(b){var c,d;this.activeTarget=b,a(this.selector).parent(".active").removeClass("active"),d=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',c=a(d).parent("li").addClass("active"),c.parent(".dropdown-menu")&&(c=c.closest("li.dropdown").addClass("active")),c.trigger("activate")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f,g;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],g=a.Event("show",{relatedTarget:e}),b.trigger(g);if(g.isDefaultPrevented())return;f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(a)).change(),this.hide()},updater:function(a){return a},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){return c.matcher(a)}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){var b=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return a.replace(new RegExp("("+b+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation(),a.preventDefault()},keypress:function(a){if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:if(a.type!="keydown")break;a.preventDefault(),this.prev();break;case 40:if(a.type!="keydown")break;a.preventDefault(),this.next()}a.stopPropagation()},blur:function(a){var b=this;setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-alert.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-alert.js
new file mode 100644
index 0000000..57890a9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-alert.js
@@ -0,0 +1,90 @@
+/* ==========================================================
+ * bootstrap-alert.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* ALERT CLASS DEFINITION
+ * ====================== */
+
+ var dismiss = '[data-dismiss="alert"]'
+ , Alert = function (el) {
+ $(el).on('click', dismiss, this.close)
+ }
+
+ Alert.prototype.close = function (e) {
+ var $this = $(this)
+ , selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+
+ e && e.preventDefault()
+
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
+
+ $parent.trigger(e = $.Event('close'))
+
+ if (e.isDefaultPrevented()) return
+
+ $parent.removeClass('in')
+
+ function removeElement() {
+ $parent
+ .trigger('closed')
+ .remove()
+ }
+
+ $.support.transition && $parent.hasClass('fade') ?
+ $parent.on($.support.transition.end, removeElement) :
+ removeElement()
+ }
+
+
+ /* ALERT PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.alert = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('alert')
+ if (!data) $this.data('alert', (data = new Alert(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.alert.Constructor = Alert
+
+
+ /* ALERT DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-button.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-button.js
new file mode 100644
index 0000000..7f187be
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-button.js
@@ -0,0 +1,96 @@
+/* ============================================================
+ * bootstrap-button.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* BUTTON PUBLIC CLASS DEFINITION
+ * ============================== */
+
+ var Button = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.button.defaults, options)
+ }
+
+ Button.prototype.setState = function (state) {
+ var d = 'disabled'
+ , $el = this.$element
+ , data = $el.data()
+ , val = $el.is('input') ? 'val' : 'html'
+
+ state = state + 'Text'
+ data.resetText || $el.data('resetText', $el[val]())
+
+ $el[val](data[state] || this.options[state])
+
+ // push to event loop to allow forms to submit
+ setTimeout(function () {
+ state == 'loadingText' ?
+ $el.addClass(d).attr(d, d) :
+ $el.removeClass(d).removeAttr(d)
+ }, 0)
+ }
+
+ Button.prototype.toggle = function () {
+ var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
+
+ $parent && $parent
+ .find('.active')
+ .removeClass('active')
+
+ this.$element.toggleClass('active')
+ }
+
+
+ /* BUTTON PLUGIN DEFINITION
+ * ======================== */
+
+ $.fn.button = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('button')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('button', (data = new Button(this, options)))
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
+
+ $.fn.button.defaults = {
+ loadingText: 'loading...'
+ }
+
+ $.fn.button.Constructor = Button
+
+
+ /* BUTTON DATA-API
+ * =============== */
+
+ $(function () {
+ $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ $btn.button('toggle')
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-carousel.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-carousel.js
new file mode 100644
index 0000000..551de58
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-carousel.js
@@ -0,0 +1,169 @@
+/* ==========================================================
+ * bootstrap-carousel.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* CAROUSEL CLASS DEFINITION
+ * ========================= */
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.options = options
+ this.options.slide && this.slide(this.options.slide)
+ this.options.pause == 'hover' && this.$element
+ .on('mouseenter', $.proxy(this.pause, this))
+ .on('mouseleave', $.proxy(this.cycle, this))
+ }
+
+ Carousel.prototype = {
+
+ cycle: function (e) {
+ if (!e) this.paused = false
+ this.options.interval
+ && !this.paused
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+ return this
+ }
+
+ , to: function (pos) {
+ var $active = this.$element.find('.active')
+ , children = $active.parent().children()
+ , activePos = children.index($active)
+ , that = this
+
+ if (pos > (children.length - 1) || pos < 0) return
+
+ if (this.sliding) {
+ return this.$element.one('slid', function () {
+ that.to(pos)
+ })
+ }
+
+ if (activePos == pos) {
+ return this.pause().cycle()
+ }
+
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
+ }
+
+ , pause: function (e) {
+ if (!e) this.paused = true
+ clearInterval(this.interval)
+ this.interval = null
+ return this
+ }
+
+ , next: function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ , prev: function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ , slide: function (type, next) {
+ var $active = this.$element.find('.active')
+ , $next = next || $active[type]()
+ , isCycling = this.interval
+ , direction = type == 'next' ? 'left' : 'right'
+ , fallback = type == 'next' ? 'first' : 'last'
+ , that = this
+ , e = $.Event('slide')
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
+
+ if ($next.hasClass('active')) return
+
+ if ($.support.transition && this.$element.hasClass('slide')) {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ this.$element.one($.support.transition.end, function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
+ })
+ } else {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger('slid')
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+ }
+
+
+ /* CAROUSEL PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.carousel = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('carousel')
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (typeof option == 'string' || (option = options.slide)) data[option]()
+ else if (options.interval) data.cycle()
+ })
+ }
+
+ $.fn.carousel.defaults = {
+ interval: 5000
+ , pause: 'hover'
+ }
+
+ $.fn.carousel.Constructor = Carousel
+
+
+ /* CAROUSEL DATA-API
+ * ================= */
+
+ $(function () {
+ $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
+ $target.carousel(options)
+ e.preventDefault()
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-collapse.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-collapse.js
new file mode 100644
index 0000000..fbc915b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-collapse.js
@@ -0,0 +1,157 @@
+/* =============================================================
+ * bootstrap-collapse.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* COLLAPSE PUBLIC CLASS DEFINITION
+ * ================================ */
+
+ var Collapse = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
+
+ if (this.options.parent) {
+ this.$parent = $(this.options.parent)
+ }
+
+ this.options.toggle && this.toggle()
+ }
+
+ Collapse.prototype = {
+
+ constructor: Collapse
+
+ , dimension: function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ , show: function () {
+ var dimension
+ , scroll
+ , actives
+ , hasData
+
+ if (this.transitioning) return
+
+ dimension = this.dimension()
+ scroll = $.camelCase(['scroll', dimension].join('-'))
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
+
+ if (actives && actives.length) {
+ hasData = actives.data('collapse')
+ if (hasData && hasData.transitioning) return
+ actives.collapse('hide')
+ hasData || actives.data('collapse', null)
+ }
+
+ this.$element[dimension](0)
+ this.transition('addClass', $.Event('show'), 'shown')
+ this.$element[dimension](this.$element[0][scroll])
+ }
+
+ , hide: function () {
+ var dimension
+ if (this.transitioning) return
+ dimension = this.dimension()
+ this.reset(this.$element[dimension]())
+ this.transition('removeClass', $.Event('hide'), 'hidden')
+ this.$element[dimension](0)
+ }
+
+ , reset: function (size) {
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ [dimension](size || 'auto')
+ [0].offsetWidth
+
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
+
+ return this
+ }
+
+ , transition: function (method, startEvent, completeEvent) {
+ var that = this
+ , complete = function () {
+ if (startEvent.type == 'show') that.reset()
+ that.transitioning = 0
+ that.$element.trigger(completeEvent)
+ }
+
+ this.$element.trigger(startEvent)
+
+ if (startEvent.isDefaultPrevented()) return
+
+ this.transitioning = 1
+
+ this.$element[method]('in')
+
+ $.support.transition && this.$element.hasClass('collapse') ?
+ this.$element.one($.support.transition.end, complete) :
+ complete()
+ }
+
+ , toggle: function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+
+ /* COLLAPSIBLE PLUGIN DEFINITION
+ * ============================== */
+
+ $.fn.collapse = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('collapse')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.collapse.defaults = {
+ toggle: true
+ }
+
+ $.fn.collapse.Constructor = Collapse
+
+
+ /* COLLAPSIBLE DATA-API
+ * ==================== */
+
+ $(function () {
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
+ var $this = $(this), href
+ , target = $this.attr('data-target')
+ || e.preventDefault()
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
+ $(target).collapse(option)
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-datepicker.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-datepicker.js
new file mode 100644
index 0000000..6bb6949
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-datepicker.js
@@ -0,0 +1,338 @@
+/* ===========================================================
+ * bootstrap-datepicker.js v1.3.0
+ * http://twitter.github.com/bootstrap/javascript.html#datepicker
+ * ===========================================================
+ * Copyright 2011 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributed by Scott Torborg - github.com/storborg
+ * Loosely based on jquery.date_input.js by Jon Leighton, heavily updated and
+ * rewritten to match bootstrap javascript approach and add UI features.
+ * =========================================================== */
+
+
+!function ( $ ) {
+
+ var selector = '[data-datepicker]',
+ all = [];
+
+ function clearDatePickers(except) {
+ var ii;
+ for(ii = 0; ii < all.length; ii++) {
+ if(all[ii] != except) {
+ all[ii].hide();
+ }
+ }
+ }
+
+ function DatePicker( element, options ) {
+ this.$el = $(element);
+ this.proxy('show').proxy('ahead').proxy('hide').proxy('keyHandler').proxy('selectDate');
+
+ var options = $.extend({}, $.fn.datepicker.defaults, options );
+
+ if((!!options.parse) || (!!options.format) || !this.detectNative()) {
+ $.extend(this, options);
+ this.$el.data('datepicker', this);
+ all.push(this);
+ this.init();
+ }
+ }
+
+ DatePicker.prototype = {
+
+ detectNative: function(el) {
+ // Attempt to activate the native datepicker, if there is a known good
+ // one. If successful, return true. Note that input type="date"
+ // requires that the string be RFC3339, so if the format/parse methods
+ // have been overridden, this won't be used.
+ if(navigator.userAgent.match(/(iPad|iPhone); CPU(\ iPhone)? OS 5_\d/i)) {
+ // jQuery will only change the input type of a detached element.
+ var $marker = $('<span>').insertBefore(this.$el);
+ this.$el.detach().attr('type', 'date').insertAfter($marker);
+ $marker.remove();
+ return true;
+ }
+ return false;
+ }
+
+ , init: function() {
+ var $months = this.nav('months', 1);
+ var $years = this.nav('years', 12);
+
+ var $nav = $('<div>').addClass('nav').append($months, $years);
+
+ this.$month = $('.name', $months);
+ this.$year = $('.name', $years);
+
+ $calendar = $("<div>").addClass('calendar');
+
+ // Populate day of week headers, realigned by startOfWeek.
+ for (var i = 0; i < this.shortDayNames.length; i++) {
+ $calendar.append('<div class="dow">' + this.shortDayNames[(i + this.startOfWeek) % 7] + '</div>');
+ };
+
+ this.$days = $('<div>').addClass('days');
+ $calendar.append(this.$days);
+
+ this.$picker = $('<div>')
+ .click(function(e) { e.stopPropagation() })
+ // Use this to prevent accidental text selection.
+ .mousedown(function(e) { e.preventDefault() })
+ .addClass('datepicker')
+ .append($nav, $calendar)
+ .insertAfter(this.$el);
+
+ this.$el
+ .focus(this.show)
+ .click(this.show)
+ .change($.proxy(function() { this.selectDate(); }, this));
+
+ this.selectDate();
+ this.hide();
+ }
+
+ , nav: function( c, months ) {
+ var $subnav = $('<div>' +
+ '<span class="prev button">←</span>' +
+ '<span class="name"></span>' +
+ '<span class="next button">→</span>' +
+ '</div>').addClass(c)
+ $('.prev', $subnav).click($.proxy(function() { this.ahead(-months, 0) }, this));
+ $('.next', $subnav).click($.proxy(function() { this.ahead(months, 0) }, this));
+ return $subnav;
+
+ }
+
+ , updateName: function($area, s) {
+ // Update either the month or year field, with a background flash
+ // animation.
+ var cur = $area.find('.fg').text(),
+ $fg = $('<div>').addClass('fg').append(s);
+ $area.empty();
+ if(cur != s) {
+ var $bg = $('<div>').addClass('bg');
+ $area.append($bg, $fg);
+ $bg.fadeOut('slow', function() {
+ $(this).remove();
+ });
+ } else {
+ $area.append($fg);
+ }
+ }
+
+ , selectMonth: function(date) {
+ var newMonth = new Date(date.getFullYear(), date.getMonth(), 1);
+
+ if (!this.curMonth || !(this.curMonth.getFullYear() == newMonth.getFullYear() &&
+ this.curMonth.getMonth() == newMonth.getMonth())) {
+
+ this.curMonth = newMonth;
+
+ var rangeStart = this.rangeStart(date), rangeEnd = this.rangeEnd(date);
+ var num_days = this.daysBetween(rangeStart, rangeEnd);
+ this.$days.empty();
+
+ for (var ii = 0; ii <= num_days; ii++) {
+ var thisDay = new Date(rangeStart.getFullYear(), rangeStart.getMonth(), rangeStart.getDate() + ii, 12, 00);
+ var $day = $('<div>').attr('date', this.format(thisDay));
+ $day.text(thisDay.getDate());
+
+ if (thisDay.getMonth() != date.getMonth()) {
+ $day.addClass('overlap');
+ };
+
+ this.$days.append($day);
+ };
+
+ this.updateName(this.$month, this.monthNames[date.getMonth()]);
+ this.updateName(this.$year, this.curMonth.getFullYear());
+
+ $('div', this.$days).click($.proxy(function(e) {
+ var $targ = $(e.target);
+
+ // The date= attribute is used here to provide relatively fast
+ // selectors for setting certain date cells.
+ this.update($targ.attr("date"));
+
+ // Don't consider this selection final if we're just going to an
+ // adjacent month.
+ if(!$targ.hasClass('overlap')) {
+ this.hide();
+ }
+
+ }, this));
+
+ $("[date='" + this.format(new Date()) + "']", this.$days).addClass('today');
+
+ };
+
+ $('.selected', this.$days).removeClass('selected');
+ $('[date="' + this.selectedDateStr + '"]', this.$days).addClass('selected');
+ }
+
+ , selectDate: function(date) {
+ if (typeof(date) == "undefined") {
+ date = this.parse(this.$el.val());
+ };
+ if (!date) date = new Date();
+
+ this.selectedDate = date;
+ this.selectedDateStr = this.format(this.selectedDate);
+ this.selectMonth(this.selectedDate);
+ }
+
+ , update: function(s) {
+ this.$el.val(s).change();
+ }
+
+ , show: function(e) {
+ e && e.stopPropagation();
+
+ // Hide all other datepickers.
+ clearDatePickers(this);
+
+ var offset = this.$el.offset();
+
+ this.$picker.css({
+ top: offset.top + this.$el.outerHeight() + 2,
+ left: offset.left
+ }).show();
+
+ $('html').on('keydown', this.keyHandler);
+ }
+
+ , hide: function() {
+ this.$picker.hide();
+ $('html').off('keydown', this.keyHandler);
+ }
+
+ , keyHandler: function(e) {
+ // Keyboard navigation shortcuts.
+ switch (e.keyCode)
+ {
+ case 9:
+ case 27:
+ // Tab or escape hides the datepicker. In this case, just return
+ // instead of breaking, so that the e doesn't get stopped.
+ this.hide(); return;
+ case 13:
+ // Enter selects the currently highlighted date.
+ this.update(this.selectedDateStr); this.hide(); break;
+ case 38:
+ // Arrow up goes to prev week.
+ this.ahead(0, -7); break;
+ case 40:
+ // Arrow down goes to next week.
+ this.ahead(0, 7); break;
+ case 37:
+ // Arrow left goes to prev day.
+ this.ahead(0, -1); break;
+ case 39:
+ // Arrow right goes to next day.
+ this.ahead(0, 1); break;
+ default:
+ return;
+ }
+ e.preventDefault();
+ }
+
+ , parse: function(s) {
+ // Parse a partial RFC 3339 string into a Date.
+ var m;
+ if ((m = s.match(/^(\d{4,4})-(\d{2,2})-(\d{2,2})$/))) {
+ return new Date(m[1], m[2] - 1, m[3]);
+ } else {
+ return null;
+ }
+ }
+
+ , format: function(date) {
+ // Format a Date into a string as specified by RFC 3339.
+ var month = (date.getMonth() + 1).toString(),
+ dom = date.getDate().toString();
+ if (month.length === 1) {
+ month = '0' + month;
+ }
+ if (dom.length === 1) {
+ dom = '0' + dom;
+ }
+ return date.getFullYear() + '-' + month + "-" + dom;
+ }
+
+ , ahead: function(months, days) {
+ // Move ahead ``months`` months and ``days`` days, both integers, can be
+ // negative.
+ this.selectDate(new Date(this.selectedDate.getFullYear(),
+ this.selectedDate.getMonth() + months,
+ this.selectedDate.getDate() + days));
+ }
+
+ , proxy: function(meth) {
+ // Bind a method so that it always gets the datepicker instance for
+ // ``this``. Return ``this`` so chaining calls works.
+ this[meth] = $.proxy(this[meth], this);
+ return this;
+ }
+
+ , daysBetween: function(start, end) {
+ // Return number of days between ``start`` Date object and ``end``.
+ var start = Date.UTC(start.getFullYear(), start.getMonth(), start.getDate());
+ var end = Date.UTC(end.getFullYear(), end.getMonth(), end.getDate());
+ return (end - start) / 86400000;
+ }
+
+ , findClosest: function(dow, date, direction) {
+ // From a starting date, find the first day ahead of behind it that is
+ // a given day of the week.
+ var difference = direction * (Math.abs(date.getDay() - dow - (direction * 7)) % 7);
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate() + difference);
+ }
+
+ , rangeStart: function(date) {
+ // Get the first day to show in the current calendar view.
+ return this.findClosest(this.startOfWeek,
+ new Date(date.getFullYear(), date.getMonth()),
+ -1);
+ }
+
+ , rangeEnd: function(date) {
+ // Get the last day to show in the current calendar view.
+ return this.findClosest((this.startOfWeek - 1) % 7,
+ new Date(date.getFullYear(), date.getMonth() + 1, 0),
+ 1);
+ }
+ };
+
+ /* DATEPICKER PLUGIN DEFINITION
+ * ============================ */
+
+ $.fn.datepicker = function( options ) {
+ return this.each(function() { new DatePicker(this, options); });
+ };
+
+ $(function() {
+ $(selector).datepicker();
+ $('html').click(clearDatePickers);
+ });
+
+ $.fn.datepicker.DatePicker = DatePicker;
+
+ $.fn.datepicker.defaults = {
+ monthNames: ["January", "February", "March", "April", "May", "June",
+ "July", "August", "September", "October", "November", "December"]
+ , shortDayNames: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
+ , startOfWeek: 1
+ };
+}( window.jQuery || window.ender );
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-dropdown.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-dropdown.js
new file mode 100644
index 0000000..454a968
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-dropdown.js
@@ -0,0 +1,100 @@
+/* ============================================================
+ * bootstrap-dropdown.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* DROPDOWN CLASS DEFINITION
+ * ========================= */
+
+ var toggle = '[data-toggle="dropdown"]'
+ , Dropdown = function (element) {
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
+ $('html').on('click.dropdown.data-api', function () {
+ $el.parent().removeClass('open')
+ })
+ }
+
+ Dropdown.prototype = {
+
+ constructor: Dropdown
+
+ , toggle: function (e) {
+ var $this = $(this)
+ , $parent
+ , selector
+ , isActive
+
+ if ($this.is('.disabled, :disabled')) return
+
+ selector = $this.attr('data-target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+ $parent.length || ($parent = $this.parent())
+
+ isActive = $parent.hasClass('open')
+
+ clearMenus()
+
+ if (!isActive) $parent.toggleClass('open')
+
+ return false
+ }
+
+ }
+
+ function clearMenus() {
+ $(toggle).parent().removeClass('open')
+ }
+
+
+ /* DROPDOWN PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.dropdown = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('dropdown')
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
+ * =================================== */
+
+ $(function () {
+ $('html').on('click.dropdown.data-api', clearMenus)
+ $('body')
+ .on('click.dropdown', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-modal.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-modal.js
new file mode 100644
index 0000000..38fd0c8
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-modal.js
@@ -0,0 +1,218 @@
+/* =========================================================
+ * bootstrap-modal.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#modals
+ * =========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* MODAL CLASS DEFINITION
+ * ====================== */
+
+ var Modal = function (content, options) {
+ this.options = options
+ this.$element = $(content)
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
+ }
+
+ Modal.prototype = {
+
+ constructor: Modal
+
+ , toggle: function () {
+ return this[!this.isShown ? 'show' : 'hide']()
+ }
+
+ , show: function () {
+ var that = this
+ , e = $.Event('show')
+
+ this.$element.trigger(e)
+
+ if (this.isShown || e.isDefaultPrevented()) return
+
+ $('body').addClass('modal-open')
+
+ this.isShown = true
+
+ escape.call(this)
+ backdrop.call(this, function () {
+ var transition = $.support.transition && that.$element.hasClass('fade')
+
+ if (!that.$element.parent().length) {
+ that.$element.appendTo(document.body) //don't move modals dom position
+ }
+
+ that.$element
+ .show()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element.addClass('in')
+
+ transition ?
+ that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
+ that.$element.trigger('shown')
+
+ })
+ }
+
+ , hide: function (e) {
+ e && e.preventDefault()
+
+ var that = this
+
+ e = $.Event('hide')
+
+ this.$element.trigger(e)
+
+ if (!this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = false
+
+ $('body').removeClass('modal-open')
+
+ escape.call(this)
+
+ this.$element.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ hideWithTransition.call(this) :
+ hideModal.call(this)
+ }
+
+ }
+
+
+ /* MODAL PRIVATE METHODS
+ * ===================== */
+
+ function hideWithTransition() {
+ var that = this
+ , timeout = setTimeout(function () {
+ that.$element.off($.support.transition.end)
+ hideModal.call(that)
+ }, 500)
+
+ this.$element.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ hideModal.call(that)
+ })
+ }
+
+ function hideModal(that) {
+ this.$element
+ .hide()
+ .trigger('hidden')
+
+ backdrop.call(this)
+ }
+
+ function backdrop(callback) {
+ var that = this
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+ .appendTo(document.body)
+
+ if (this.options.backdrop != 'static') {
+ this.$backdrop.click($.proxy(this.hide, this))
+ }
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ doAnimate ?
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade')?
+ this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
+ removeBackdrop.call(this)
+
+ } else if (callback) {
+ callback()
+ }
+ }
+
+ function removeBackdrop() {
+ this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ function escape() {
+ var that = this
+ if (this.isShown && this.options.keyboard) {
+ $(document).on('keyup.dismiss.modal', function ( e ) {
+ e.which == 27 && that.hide()
+ })
+ } else if (!this.isShown) {
+ $(document).off('keyup.dismiss.modal')
+ }
+ }
+
+
+ /* MODAL PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.modal = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('modal')
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option]()
+ else if (options.show) data.show()
+ })
+ }
+
+ $.fn.modal.defaults = {
+ backdrop: true
+ , keyboard: true
+ , show: true
+ }
+
+ $.fn.modal.Constructor = Modal
+
+
+ /* MODAL DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
+
+ e.preventDefault()
+ $target.modal(option)
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-popover.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-popover.js
new file mode 100644
index 0000000..39fbe35
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-popover.js
@@ -0,0 +1,98 @@
+/* ===========================================================
+ * bootstrap-popover.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * =========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* POPOVER PUBLIC CLASS DEFINITION
+ * =============================== */
+
+ var Popover = function ( element, options ) {
+ this.init('popover', element, options)
+ }
+
+
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
+ ========================================== */
+
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
+
+ constructor: Popover
+
+ , setContent: function () {
+ var $tip = this.tip()
+ , title = this.getTitle()
+ , content = this.getContent()
+
+ $tip.find('.popover-title')[this.isHTML(title) ? 'html' : 'text'](title)
+ $tip.find('.popover-content > *')[this.isHTML(content) ? 'html' : 'text'](content)
+
+ $tip.removeClass('fade top bottom left right in')
+ }
+
+ , hasContent: function () {
+ return this.getTitle() || this.getContent()
+ }
+
+ , getContent: function () {
+ var content
+ , $e = this.$element
+ , o = this.options
+
+ content = $e.attr('data-content')
+ || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
+
+ return content
+ }
+
+ , tip: function () {
+ if (!this.$tip) {
+ this.$tip = $(this.options.template)
+ }
+ return this.$tip
+ }
+
+ })
+
+
+ /* POPOVER PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.popover = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('popover')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('popover', (data = new Popover(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.popover.Constructor = Popover
+
+ $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
+ placement: 'right'
+ , content: ''
+ , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-scrollspy.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-scrollspy.js
new file mode 100644
index 0000000..dce3718
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-scrollspy.js
@@ -0,0 +1,151 @@
+/* =============================================================
+ * bootstrap-scrollspy.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* SCROLLSPY CLASS DEFINITION
+ * ========================== */
+
+ function ScrollSpy( element, options) {
+ var process = $.proxy(this.process, this)
+ , $element = $(element).is('body') ? $(window) : $(element)
+ , href
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
+ this.$scrollElement = $element.on('scroll.scroll.data-api', process)
+ this.selector = (this.options.target
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ || '') + ' .nav li > a'
+ this.$body = $('body')
+ this.refresh()
+ this.process()
+ }
+
+ ScrollSpy.prototype = {
+
+ constructor: ScrollSpy
+
+ , refresh: function () {
+ var self = this
+ , $targets
+
+ this.offsets = $([])
+ this.targets = $([])
+
+ $targets = this.$body
+ .find(this.selector)
+ .map(function () {
+ var $el = $(this)
+ , href = $el.data('target') || $el.attr('href')
+ , $href = /^#\w/.test(href) && $(href)
+ return ( $href
+ && href.length
+ && [[ $href.position().top, href ]] ) || null
+ })
+ .sort(function (a, b) { return a[0] - b[0] })
+ .each(function () {
+ self.offsets.push(this[0])
+ self.targets.push(this[1])
+ })
+ }
+
+ , process: function () {
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
+ , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
+ , maxScroll = scrollHeight - this.$scrollElement.height()
+ , offsets = this.offsets
+ , targets = this.targets
+ , activeTarget = this.activeTarget
+ , i
+
+ if (scrollTop >= maxScroll) {
+ return activeTarget != (i = targets.last()[0])
+ && this.activate ( i )
+ }
+
+ for (i = offsets.length; i--;) {
+ activeTarget != targets[i]
+ && scrollTop >= offsets[i]
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+ && this.activate( targets[i] )
+ }
+ }
+
+ , activate: function (target) {
+ var active
+ , selector
+
+ this.activeTarget = target
+
+ $(this.selector)
+ .parent('.active')
+ .removeClass('active')
+
+ selector = this.selector
+ + '[data-target="' + target + '"],'
+ + this.selector + '[href="' + target + '"]'
+
+ active = $(selector)
+ .parent('li')
+ .addClass('active')
+
+ if (active.parent('.dropdown-menu')) {
+ active = active.closest('li.dropdown').addClass('active')
+ }
+
+ active.trigger('activate')
+ }
+
+ }
+
+
+ /* SCROLLSPY PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.scrollspy = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('scrollspy')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.scrollspy.Constructor = ScrollSpy
+
+ $.fn.scrollspy.defaults = {
+ offset: 10
+ }
+
+
+ /* SCROLLSPY DATA-API
+ * ================== */
+
+ $(function () {
+ $('[data-spy="scroll"]').each(function () {
+ var $spy = $(this)
+ $spy.scrollspy($spy.data())
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-tab.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-tab.js
new file mode 100644
index 0000000..d87f350
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-tab.js
@@ -0,0 +1,135 @@
+/* ========================================================
+ * bootstrap-tab.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TAB CLASS DEFINITION
+ * ==================== */
+
+ var Tab = function ( element ) {
+ this.element = $(element)
+ }
+
+ Tab.prototype = {
+
+ constructor: Tab
+
+ , show: function () {
+ var $this = this.element
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
+ , selector = $this.attr('data-target')
+ , previous
+ , $target
+ , e
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ if ( $this.parent('li').hasClass('active') ) return
+
+ previous = $ul.find('.active a').last()[0]
+
+ e = $.Event('show', {
+ relatedTarget: previous
+ })
+
+ $this.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ $target = $(selector)
+
+ this.activate($this.parent('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $this.trigger({
+ type: 'shown'
+ , relatedTarget: previous
+ })
+ })
+ }
+
+ , activate: function ( element, container, callback) {
+ var $active = container.find('> .active')
+ , transition = callback
+ && $.support.transition
+ && $active.hasClass('fade')
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+
+ element.addClass('active')
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if ( element.parent('.dropdown-menu') ) {
+ element.closest('li.dropdown').addClass('active')
+ }
+
+ callback && callback()
+ }
+
+ transition ?
+ $active.one($.support.transition.end, next) :
+ next()
+
+ $active.removeClass('in')
+ }
+ }
+
+
+ /* TAB PLUGIN DEFINITION
+ * ===================== */
+
+ $.fn.tab = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tab')
+ if (!data) $this.data('tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tab.Constructor = Tab
+
+
+ /* TAB DATA-API
+ * ============ */
+
+ $(function () {
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ e.preventDefault()
+ $(this).tab('show')
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-tooltip.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-tooltip.js
new file mode 100644
index 0000000..b476f1c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-tooltip.js
@@ -0,0 +1,275 @@
+/* ===========================================================
+ * bootstrap-tooltip.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TOOLTIP PUBLIC CLASS DEFINITION
+ * =============================== */
+
+ var Tooltip = function (element, options) {
+ this.init('tooltip', element, options)
+ }
+
+ Tooltip.prototype = {
+
+ constructor: Tooltip
+
+ , init: function (type, element, options) {
+ var eventIn
+ , eventOut
+
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+ this.enabled = true
+
+ if (this.options.trigger != 'manual') {
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
+ this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
+ }
+
+ this.options.selector ?
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+ this.fixTitle()
+ }
+
+ , getOptions: function (options) {
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
+
+ if (options.delay && typeof options.delay == 'number') {
+ options.delay = {
+ show: options.delay
+ , hide: options.delay
+ }
+ }
+
+ return options
+ }
+
+ , enter: function (e) {
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+ if (!self.options.delay || !self.options.delay.show) return self.show()
+
+ clearTimeout(this.timeout)
+ self.hoverState = 'in'
+ this.timeout = setTimeout(function() {
+ if (self.hoverState == 'in') self.show()
+ }, self.options.delay.show)
+ }
+
+ , leave: function (e) {
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+ if (this.timeout) clearTimeout(this.timeout)
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+ self.hoverState = 'out'
+ this.timeout = setTimeout(function() {
+ if (self.hoverState == 'out') self.hide()
+ }, self.options.delay.hide)
+ }
+
+ , show: function () {
+ var $tip
+ , inside
+ , pos
+ , actualWidth
+ , actualHeight
+ , placement
+ , tp
+
+ if (this.hasContent() && this.enabled) {
+ $tip = this.tip()
+ this.setContent()
+
+ if (this.options.animation) {
+ $tip.addClass('fade')
+ }
+
+ placement = typeof this.options.placement == 'function' ?
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
+ this.options.placement
+
+ inside = /in/.test(placement)
+
+ $tip
+ .remove()
+ .css({ top: 0, left: 0, display: 'block' })
+ .appendTo(inside ? this.$element : document.body)
+
+ pos = this.getPosition(inside)
+
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+
+ switch (inside ? placement.split(' ')[1] : placement) {
+ case 'bottom':
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'top':
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'left':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
+ break
+ case 'right':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
+ break
+ }
+
+ $tip
+ .css(tp)
+ .addClass(placement)
+ .addClass('in')
+ }
+ }
+
+ , isHTML: function(text) {
+ // html string detection logic adapted from jQuery
+ return typeof text != 'string'
+ || ( text.charAt(0) === "<"
+ && text.charAt( text.length - 1 ) === ">"
+ && text.length >= 3
+ ) || /^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(text)
+ }
+
+ , setContent: function () {
+ var $tip = this.tip()
+ , title = this.getTitle()
+
+ $tip.find('.tooltip-inner')[this.isHTML(title) ? 'html' : 'text'](title)
+ $tip.removeClass('fade in top bottom left right')
+ }
+
+ , hide: function () {
+ var that = this
+ , $tip = this.tip()
+
+ $tip.removeClass('in')
+
+ function removeWithAnimation() {
+ var timeout = setTimeout(function () {
+ $tip.off($.support.transition.end).remove()
+ }, 500)
+
+ $tip.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ $tip.remove()
+ })
+ }
+
+ $.support.transition && this.$tip.hasClass('fade') ?
+ removeWithAnimation() :
+ $tip.remove()
+ }
+
+ , fixTitle: function () {
+ var $e = this.$element
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
+ }
+ }
+
+ , hasContent: function () {
+ return this.getTitle()
+ }
+
+ , getPosition: function (inside) {
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
+ width: this.$element[0].offsetWidth
+ , height: this.$element[0].offsetHeight
+ })
+ }
+
+ , getTitle: function () {
+ var title
+ , $e = this.$element
+ , o = this.options
+
+ title = $e.attr('data-original-title')
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
+
+ return title
+ }
+
+ , tip: function () {
+ return this.$tip = this.$tip || $(this.options.template)
+ }
+
+ , validate: function () {
+ if (!this.$element[0].parentNode) {
+ this.hide()
+ this.$element = null
+ this.options = null
+ }
+ }
+
+ , enable: function () {
+ this.enabled = true
+ }
+
+ , disable: function () {
+ this.enabled = false
+ }
+
+ , toggleEnabled: function () {
+ this.enabled = !this.enabled
+ }
+
+ , toggle: function () {
+ this[this.tip().hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+
+ /* TOOLTIP PLUGIN DEFINITION
+ * ========================= */
+
+ $.fn.tooltip = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tooltip')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tooltip.Constructor = Tooltip
+
+ $.fn.tooltip.defaults = {
+ animation: true
+ , placement: 'top'
+ , selector: false
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
+ , trigger: 'hover'
+ , title: ''
+ , delay: 0
+ }
+
+}(window.jQuery);
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-transition.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-transition.js
new file mode 100644
index 0000000..5341826
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-transition.js
@@ -0,0 +1,61 @@
+/* ===================================================
+ * bootstrap-transition.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
+ * ===================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ $(function () {
+
+ "use strict"; // jshint ;_;
+
+
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
+ * ======================================================= */
+
+ $.support.transition = (function () {
+
+ var transitionEnd = (function () {
+
+ var el = document.createElement('bootstrap')
+ , transEndEventNames = {
+ 'WebkitTransition' : 'webkitTransitionEnd'
+ , 'MozTransition' : 'transitionend'
+ , 'OTransition' : 'oTransitionEnd'
+ , 'msTransition' : 'MSTransitionEnd'
+ , 'transition' : 'transitionend'
+ }
+ , name
+
+ for (name in transEndEventNames){
+ if (el.style[name] !== undefined) {
+ return transEndEventNames[name]
+ }
+ }
+
+ }())
+
+ return transitionEnd && {
+ end: transitionEnd
+ }
+
+ })()
+
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-typeahead.js b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-typeahead.js
new file mode 100644
index 0000000..ad44b90
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/bootstrap-typeahead.js
@@ -0,0 +1,285 @@
+/* =============================================================
+ * bootstrap-typeahead.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function($){
+
+ "use strict"; // jshint ;_;
+
+
+ /* TYPEAHEAD PUBLIC CLASS DEFINITION
+ * ================================= */
+
+ var Typeahead = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
+ this.matcher = this.options.matcher || this.matcher
+ this.sorter = this.options.sorter || this.sorter
+ this.highlighter = this.options.highlighter || this.highlighter
+ this.updater = this.options.updater || this.updater
+ this.$menu = $(this.options.menu).appendTo('body')
+ this.source = this.options.source
+ this.shown = false
+ this.listen()
+ }
+
+ Typeahead.prototype = {
+
+ constructor: Typeahead
+
+ , select: function () {
+ var val = this.$menu.find('.active').attr('data-value')
+ this.$element
+ .val(this.updater(val))
+ .change()
+ return this.hide()
+ }
+
+ , updater: function (item) {
+ return item
+ }
+
+ , show: function () {
+ var pos = $.extend({}, this.$element.offset(), {
+ height: this.$element[0].offsetHeight
+ })
+
+ this.$menu.css({
+ top: pos.top + pos.height
+ , left: pos.left
+ })
+
+ this.$menu.show()
+ this.shown = true
+ return this
+ }
+
+ , hide: function () {
+ this.$menu.hide()
+ this.shown = false
+ return this
+ }
+
+ , lookup: function (event) {
+ var that = this
+ , items
+ , q
+
+ this.query = this.$element.val()
+
+ if (!this.query) {
+ return this.shown ? this.hide() : this
+ }
+
+ items = $.grep(this.source, function (item) {
+ return that.matcher(item)
+ })
+
+ items = this.sorter(items)
+
+ if (!items.length) {
+ return this.shown ? this.hide() : this
+ }
+
+ return this.render(items.slice(0, this.options.items)).show()
+ }
+
+ , matcher: function (item) {
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
+ }
+
+ , sorter: function (items) {
+ var beginswith = []
+ , caseSensitive = []
+ , caseInsensitive = []
+ , item
+
+ while (item = items.shift()) {
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
+ else caseInsensitive.push(item)
+ }
+
+ return beginswith.concat(caseSensitive, caseInsensitive)
+ }
+
+ , highlighter: function (item) {
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
+ return '<strong>' + match + '</strong>'
+ })
+ }
+
+ , render: function (items) {
+ var that = this
+
+ items = $(items).map(function (i, item) {
+ i = $(that.options.item).attr('data-value', item)
+ i.find('a').html(that.highlighter(item))
+ return i[0]
+ })
+
+ items.first().addClass('active')
+ this.$menu.html(items)
+ return this
+ }
+
+ , next: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , next = active.next()
+
+ if (!next.length) {
+ next = $(this.$menu.find('li')[0])
+ }
+
+ next.addClass('active')
+ }
+
+ , prev: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , prev = active.prev()
+
+ if (!prev.length) {
+ prev = this.$menu.find('li').last()
+ }
+
+ prev.addClass('active')
+ }
+
+ , listen: function () {
+ this.$element
+ .on('blur', $.proxy(this.blur, this))
+ .on('keypress', $.proxy(this.keypress, this))
+ .on('keyup', $.proxy(this.keyup, this))
+
+ if ($.browser.webkit || $.browser.msie) {
+ this.$element.on('keydown', $.proxy(this.keypress, this))
+ }
+
+ this.$menu
+ .on('click', $.proxy(this.click, this))
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+ }
+
+ , keyup: function (e) {
+ switch(e.keyCode) {
+ case 40: // down arrow
+ case 38: // up arrow
+ break
+
+ case 9: // tab
+ case 13: // enter
+ if (!this.shown) return
+ this.select()
+ break
+
+ case 27: // escape
+ if (!this.shown) return
+ this.hide()
+ break
+
+ default:
+ this.lookup()
+ }
+
+ e.stopPropagation()
+ e.preventDefault()
+ }
+
+ , keypress: function (e) {
+ if (!this.shown) return
+
+ switch(e.keyCode) {
+ case 9: // tab
+ case 13: // enter
+ case 27: // escape
+ e.preventDefault()
+ break
+
+ case 38: // up arrow
+ if (e.type != 'keydown') break
+ e.preventDefault()
+ this.prev()
+ break
+
+ case 40: // down arrow
+ if (e.type != 'keydown') break
+ e.preventDefault()
+ this.next()
+ break
+ }
+
+ e.stopPropagation()
+ }
+
+ , blur: function (e) {
+ var that = this
+ setTimeout(function () { that.hide() }, 150)
+ }
+
+ , click: function (e) {
+ e.stopPropagation()
+ e.preventDefault()
+ this.select()
+ }
+
+ , mouseenter: function (e) {
+ this.$menu.find('.active').removeClass('active')
+ $(e.currentTarget).addClass('active')
+ }
+
+ }
+
+
+ /* TYPEAHEAD PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.typeahead = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('typeahead')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.typeahead.defaults = {
+ source: []
+ , items: 8
+ , menu: '<ul class="typeahead dropdown-menu"></ul>'
+ , item: '<li><a href="#"></a></li>'
+ }
+
+ $.fn.typeahead.Constructor = Typeahead
+
+
+ /* TYPEAHEAD DATA-API
+ * ================== */
+
+ $(function () {
+ $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
+ var $this = $(this)
+ if ($this.data('typeahead')) return
+ e.preventDefault()
+ $this.typeahead($this.data())
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
sm-shop/src/main/webapp/resources/js/bootstrap/jquery.js 9252(+9252 -0)
diff --git a/sm-shop/src/main/webapp/resources/js/bootstrap/jquery.js b/sm-shop/src/main/webapp/resources/js/bootstrap/jquery.js
new file mode 100644
index 0000000..00c4e23
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/bootstrap/jquery.js
@@ -0,0 +1,9252 @@
+/*! jQuery v1.7.1 jquery.com | jquery.org/license */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document,
+ navigator = window.navigator,
+ location = window.location;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Matches dashed string for camelizing
+ rdashAlpha = /-([a-z]|[0-9])/ig,
+ rmsPrefix = /^-ms-/,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return ( letter + "" ).toUpperCase();
+ },
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // The deferred used on DOM ready
+ readyList,
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = quickExpr.exec( selector );
+ }
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+ doc = ( context ? context.ownerDocument || context : document );
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.7.1",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = this.constructor();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // Add the callback
+ readyList.add( fn );
+
+ return this;
+ },
+
+ eq: function( i ) {
+ i = +i;
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // Either a released hold or an DOMready/load event and not yet ready
+ if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.fireWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).off( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyList ) {
+ return;
+ }
+
+ readyList = jQuery.Callbacks( "once memory" );
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", DOMContentLoaded );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNumeric: function( obj ) {
+ return !isNaN( parseFloat(obj) ) && isFinite( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return ( new Function( "return " + data ) )();
+
+ }
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ parseXML: function( data ) {
+ var xml, tmp;
+ try {
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+ } catch( e ) {
+ xml = undefined;
+ }
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction( object );
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type( array );
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array, i ) {
+ var len;
+
+ if ( array ) {
+ if ( indexOf ) {
+ return indexOf.call( array, elem, i );
+ }
+
+ len = array.length;
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+ for ( ; i < len; i++ ) {
+ // Skip accessing in sparse arrays
+ if ( i in array && array[ i ] === elem ) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length,
+ j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value, key, ret = [],
+ i = 0,
+ length = elems.length,
+ // jquery objects are treated as arrays
+ isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object
+ } else {
+ for ( key in elems ) {
+ value = callback( elems[ key ], key, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ if ( typeof context === "string" ) {
+ var tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ var args = slice.call( arguments, 2 ),
+ proxy = function() {
+ return fn.apply( context, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return ( new Date() ).getTime();
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ sub: function() {
+ function jQuerySub( selector, context ) {
+ return new jQuerySub.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySub, this );
+ jQuerySub.superclass = this;
+ jQuerySub.fn = jQuerySub.prototype = this();
+ jQuerySub.fn.constructor = jQuerySub;
+ jQuerySub.sub = this.sub;
+ jQuerySub.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+ context = jQuerySub( context );
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+ };
+ jQuerySub.fn.init.prototype = jQuerySub.fn;
+ var rootjQuerySub = jQuerySub(document);
+ return jQuerySub;
+ },
+
+ browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+return jQuery;
+
+})();
+
+
+// String to Object flags format cache
+var flagsCache = {};
+
+// Convert String-formatted flags into Object-formatted ones and store in cache
+function createFlags( flags ) {
+ var object = flagsCache[ flags ] = {},
+ i, length;
+ flags = flags.split( /\s+/ );
+ for ( i = 0, length = flags.length; i < length; i++ ) {
+ object[ flags[i] ] = true;
+ }
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * flags: an optional list of space-separated flags that will change how
+ * the callback list behaves
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible flags:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( flags ) {
+
+ // Convert flags from String-formatted to Object-formatted
+ // (we check in cache first)
+ flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
+
+ var // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = [],
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list is currently firing
+ firing,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // Add one or several callbacks to the list
+ add = function( args ) {
+ var i,
+ length,
+ elem,
+ type,
+ actual;
+ for ( i = 0, length = args.length; i < length; i++ ) {
+ elem = args[ i ];
+ type = jQuery.type( elem );
+ if ( type === "array" ) {
+ // Inspect recursively
+ add( elem );
+ } else if ( type === "function" ) {
+ // Add if not in unique mode and callback is not in
+ if ( !flags.unique || !self.has( elem ) ) {
+ list.push( elem );
+ }
+ }
+ }
+ },
+ // Fire callbacks
+ fire = function( context, args ) {
+ args = args || [];
+ memory = !flags.memory || [ context, args ];
+ firing = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
+ memory = true; // Mark as halted
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( !flags.once ) {
+ if ( stack && stack.length ) {
+ memory = stack.shift();
+ self.fireWith( memory[ 0 ], memory[ 1 ] );
+ }
+ } else if ( memory === true ) {
+ self.disable();
+ } else {
+ list = [];
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ var length = list.length;
+ add( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away, unless previous
+ // firing was halted (stopOnFalse)
+ } else if ( memory && memory !== true ) {
+ firingStart = length;
+ fire( memory[ 0 ], memory[ 1 ] );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ var args = arguments,
+ argIndex = 0,
+ argLength = args.length;
+ for ( ; argIndex < argLength ; argIndex++ ) {
+ for ( var i = 0; i < list.length; i++ ) {
+ if ( args[ argIndex ] === list[ i ] ) {
+ // Handle firingIndex and firingLength
+ if ( firing ) {
+ if ( i <= firingLength ) {
+ firingLength--;
+ if ( i <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ // Remove the element
+ list.splice( i--, 1 );
+ // If we have some unicity property then
+ // we only need to do this once
+ if ( flags.unique ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+ return this;
+ },
+ // Control if a given callback is in the list
+ has: function( fn ) {
+ if ( list ) {
+ var i = 0,
+ length = list.length;
+ for ( ; i < length; i++ ) {
+ if ( fn === list[ i ] ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory || memory === true ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( stack ) {
+ if ( firing ) {
+ if ( !flags.once ) {
+ stack.push( [ context, args ] );
+ }
+ } else if ( !( flags.once && memory ) ) {
+ fire( context, args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!memory;
+ }
+ };
+
+ return self;
+};
+
+
+
+
+var // Static reference to slice
+ sliceDeferred = [].slice;
+
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var doneList = jQuery.Callbacks( "once memory" ),
+ failList = jQuery.Callbacks( "once memory" ),
+ progressList = jQuery.Callbacks( "memory" ),
+ state = "pending",
+ lists = {
+ resolve: doneList,
+ reject: failList,
+ notify: progressList
+ },
+ promise = {
+ done: doneList.add,
+ fail: failList.add,
+ progress: progressList.add,
+
+ state: function() {
+ return state;
+ },
+
+ // Deprecated
+ isResolved: doneList.fired,
+ isRejected: failList.fired,
+
+ then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
+ deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
+ return this;
+ },
+ always: function() {
+ deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
+ return this;
+ },
+ pipe: function( fnDone, fnFail, fnProgress ) {
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( {
+ done: [ fnDone, "resolve" ],
+ fail: [ fnFail, "reject" ],
+ progress: [ fnProgress, "notify" ]
+ }, function( handler, data ) {
+ var fn = data[ 0 ],
+ action = data[ 1 ],
+ returned;
+ if ( jQuery.isFunction( fn ) ) {
+ deferred[ handler ](function() {
+ returned = fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
+ } else {
+ newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
+ }
+ });
+ } else {
+ deferred[ handler ]( newDefer[ action ] );
+ }
+ });
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ if ( obj == null ) {
+ obj = promise;
+ } else {
+ for ( var key in promise ) {
+ obj[ key ] = promise[ key ];
+ }
+ }
+ return obj;
+ }
+ },
+ deferred = promise.promise({}),
+ key;
+
+ for ( key in lists ) {
+ deferred[ key ] = lists[ key ].fire;
+ deferred[ key + "With" ] = lists[ key ].fireWith;
+ }
+
+ // Handle state
+ deferred.done( function() {
+ state = "resolved";
+ }, failList.disable, progressList.lock ).fail( function() {
+ state = "rejected";
+ }, doneList.disable, progressList.lock );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( firstParam ) {
+ var args = sliceDeferred.call( arguments, 0 ),
+ i = 0,
+ length = args.length,
+ pValues = new Array( length ),
+ count = length,
+ pCount = length,
+ deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
+ firstParam :
+ jQuery.Deferred(),
+ promise = deferred.promise();
+ function resolveFunc( i ) {
+ return function( value ) {
+ args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ if ( !( --count ) ) {
+ deferred.resolveWith( deferred, args );
+ }
+ };
+ }
+ function progressFunc( i ) {
+ return function( value ) {
+ pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ deferred.notifyWith( promise, pValues );
+ };
+ }
+ if ( length > 1 ) {
+ for ( ; i < length; i++ ) {
+ if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
+ args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
+ } else {
+ --count;
+ }
+ }
+ if ( !count ) {
+ deferred.resolveWith( deferred, args );
+ }
+ } else if ( deferred !== firstParam ) {
+ deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
+ }
+ return promise;
+ }
+});
+
+
+
+
+jQuery.support = (function() {
+
+ var support,
+ all,
+ a,
+ select,
+ opt,
+ input,
+ marginDiv,
+ fragment,
+ tds,
+ events,
+ eventName,
+ i,
+ isSupported,
+ div = document.createElement( "div" ),
+ documentElement = document.documentElement;
+
+ // Preliminary tests
+ div.setAttribute("className", "t");
+ div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ all = div.getElementsByTagName( "*" );
+ a = div.getElementsByTagName( "a" )[ 0 ];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return {};
+ }
+
+ // First batch of supports tests
+ select = document.createElement( "select" );
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName( "input" )[ 0 ];
+
+ support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: ( div.firstChild.nodeType === 3 ),
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ style: /top/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: ( a.getAttribute("href") === "/a" ),
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: ( input.value === "on" ),
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ getSetAttribute: div.className !== "t",
+
+ // Tests for enctype support on a form(#6743)
+ enctype: !!document.createElement("form").enctype,
+
+ // Makes sure cloning an html5 element does not cause problems
+ // Where outerHTML is undefined, this still works
+ html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
+
+ // Will be defined later
+ submitBubbles: true,
+ changeBubbles: true,
+ focusinBubbles: false,
+ deleteExpando: true,
+ noCloneEvent: true,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableMarginRight: true
+ };
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent( "onclick", function() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ support.noCloneEvent = false;
+ });
+ div.cloneNode( true ).fireEvent( "onclick" );
+ }
+
+ // Check if a radio maintains its value
+ // after being appended to the DOM
+ input = document.createElement("input");
+ input.value = "t";
+ input.setAttribute("type", "radio");
+ support.radioValue = input.value === "t";
+
+ input.setAttribute("checked", "checked");
+ div.appendChild( input );
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( div.lastChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ fragment.removeChild( input );
+ fragment.appendChild( div );
+
+ div.innerHTML = "";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. For more
+ // info see bug #3333
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ if ( window.getComputedStyle ) {
+ marginDiv = document.createElement( "div" );
+ marginDiv.style.width = "0";
+ marginDiv.style.marginRight = "0";
+ div.style.width = "2px";
+ div.appendChild( marginDiv );
+ support.reliableMarginRight =
+ ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
+ }
+
+ // Technique from Juriy Zaytsev
+ // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
+ // We only care about the case where non-standard event systems
+ // are used, namely in IE. Short-circuiting here helps us to
+ // avoid an eval call (in setAttribute) which can cause CSP
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+ if ( div.attachEvent ) {
+ for( i in {
+ submit: 1,
+ change: 1,
+ focusin: 1
+ }) {
+ eventName = "on" + i;
+ isSupported = ( eventName in div );
+ if ( !isSupported ) {
+ div.setAttribute( eventName, "return;" );
+ isSupported = ( typeof div[ eventName ] === "function" );
+ }
+ support[ i + "Bubbles" ] = isSupported;
+ }
+ }
+
+ fragment.removeChild( div );
+
+ // Null elements to avoid leaks in IE
+ fragment = select = opt = marginDiv = div = input = null;
+
+ // Run tests that need a body at doc ready
+ jQuery(function() {
+ var container, outer, inner, table, td, offsetSupport,
+ conMarginTop, ptlm, vb, style, html,
+ body = document.getElementsByTagName("body")[0];
+
+ if ( !body ) {
+ // Return for frameset docs that don't have a body
+ return;
+ }
+
+ conMarginTop = 1;
+ ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";
+ vb = "visibility:hidden;border:0;";
+ style = "style='" + ptlm + "border:5px solid #000;padding:0;'";
+ html = "<div " + style + "><div></div></div>" +
+ "<table " + style + " cellpadding='0' cellspacing='0'>" +
+ "<tr><td></td></tr></table>";
+
+ container = document.createElement("div");
+ container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
+ body.insertBefore( container, body.firstChild );
+
+ // Construct the test element
+ div = document.createElement("div");
+ container.appendChild( div );
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
+ tds = div.getElementsByTagName( "td" );
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE <= 8 fail this test)
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+ // Figure out if the W3C box model works as expected
+ div.innerHTML = "";
+ div.style.width = div.style.paddingLeft = "1px";
+ jQuery.boxModel = support.boxModel = div.offsetWidth === 2;
+
+ if ( typeof div.style.zoom !== "undefined" ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
+ }
+
+ div.style.cssText = ptlm + vb;
+ div.innerHTML = html;
+
+ outer = div.firstChild;
+ inner = outer.firstChild;
+ td = outer.nextSibling.firstChild.firstChild;
+
+ offsetSupport = {
+ doesNotAddBorder: ( inner.offsetTop !== 5 ),
+ doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
+ };
+
+ inner.style.position = "fixed";
+ inner.style.top = "20px";
+
+ // safari subtracts parent border width here which is 5px
+ offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
+ inner.style.position = inner.style.top = "";
+
+ outer.style.overflow = "hidden";
+ outer.style.position = "relative";
+
+ offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
+ offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
+
+ body.removeChild( container );
+ div = container = null;
+
+ jQuery.extend( support, offsetSupport );
+ });
+
+ return support;
+})();
+
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var privateCache, thisCache, ret,
+ internalKey = jQuery.expando,
+ getByName = typeof name === "string",
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
+ isEvents = name === "events";
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ elem[ internalKey ] = id = ++jQuery.uuid;
+ } else {
+ id = internalKey;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ cache[ id ] = {};
+
+ // Avoids exposing jQuery metadata on plain JS objects when the object
+ // is serialized using JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ] = jQuery.extend( cache[ id ], name );
+ } else {
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+ }
+ }
+
+ privateCache = thisCache = cache[ id ];
+
+ // jQuery data() is stored in a separate object inside the object's internal data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data.
+ if ( !pvt ) {
+ if ( !thisCache.data ) {
+ thisCache.data = {};
+ }
+
+ thisCache = thisCache.data;
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // Users should not attempt to inspect the internal events object using jQuery.data,
+ // it is undocumented and subject to change. But does anyone listen? No.
+ if ( isEvents && !thisCache[ name ] ) {
+ return privateCache.events;
+ }
+
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( getByName ) {
+
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
+
+ // Test for null|undefined property data
+ if ( ret == null ) {
+
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
+
+ return ret;
+ },
+
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, i, l,
+
+ // Reference to internal data cache key
+ internalKey = jQuery.expando,
+
+ isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+
+ // See jQuery.data for more information
+ id = isNode ? elem[ internalKey ] : internalKey;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+ if ( thisCache ) {
+
+ // Support array or space separated string names for data keys
+ if ( !jQuery.isArray( name ) ) {
+
+ // try the string as a key before any manipulation
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+
+ // split the camel cased version by spaces unless a key with the spaces exists
+ name = jQuery.camelCase( name );
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+ name = name.split( " " );
+ }
+ }
+ }
+
+ for ( i = 0, l = name.length; i < l; i++ ) {
+ delete thisCache[ name[i] ];
+ }
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( !pvt ) {
+ delete cache[ id ].data;
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject(cache[ id ]) ) {
+ return;
+ }
+ }
+
+ // Browsers that fail expando deletion also refuse to delete expandos on
+ // the window, but it will allow it on all other JS objects; other browsers
+ // don't care
+ // Ensure that `cache` is not a window object #10080
+ if ( jQuery.support.deleteExpando || !cache.setInterval ) {
+ delete cache[ id ];
+ } else {
+ cache[ id ] = null;
+ }
+
+ // We destroyed the cache and need to eliminate the expando on the node to avoid
+ // false lookups in the cache for entries that no longer exist
+ if ( isNode ) {
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( jQuery.support.deleteExpando ) {
+ delete elem[ internalKey ];
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( internalKey );
+ } else {
+ elem[ internalKey ] = null;
+ }
+ }
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return jQuery.data( elem, name, data, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var parts, attr, name,
+ data = null;
+
+ if ( typeof key === "undefined" ) {
+ if ( this.length ) {
+ data = jQuery.data( this[0] );
+
+ if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
+ attr = this[0].attributes;
+ for ( var i = 0, l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.substring(5) );
+
+ dataAttr( this[0], name, data[ name ] );
+ }
+ }
+ jQuery._data( this[0], "parsedAttrs", true );
+ }
+ }
+
+ return data;
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ data = dataAttr( this[0], key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+
+ } else {
+ return this.each(function() {
+ var self = jQuery( this ),
+ args = [ parts[0], value ];
+
+ self.triggerHandler( "setData" + parts[1] + "!", args );
+ jQuery.data( this, key, value );
+ self.triggerHandler( "changeData" + parts[1] + "!", args );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ jQuery.isNumeric( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+ for ( var name in obj ) {
+
+ // if the public data object is empty, the private is still empty
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+ continue;
+ }
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+
+
+
+function handleQueueMarkDefer( elem, type, src ) {
+ var deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ defer = jQuery._data( elem, deferDataKey );
+ if ( defer &&
+ ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
+ ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
+ // Give room for hard-coded callbacks to fire first
+ // and eventually mark/queue something else on the element
+ setTimeout( function() {
+ if ( !jQuery._data( elem, queueDataKey ) &&
+ !jQuery._data( elem, markDataKey ) ) {
+ jQuery.removeData( elem, deferDataKey, true );
+ defer.fire();
+ }
+ }, 0 );
+ }
+}
+
+jQuery.extend({
+
+ _mark: function( elem, type ) {
+ if ( elem ) {
+ type = ( type || "fx" ) + "mark";
+ jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
+ }
+ },
+
+ _unmark: function( force, elem, type ) {
+ if ( force !== true ) {
+ type = elem;
+ elem = force;
+ force = false;
+ }
+ if ( elem ) {
+ type = type || "fx";
+ var key = type + "mark",
+ count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
+ if ( count ) {
+ jQuery._data( elem, key, count );
+ } else {
+ jQuery.removeData( elem, key, true );
+ handleQueueMarkDefer( elem, type, "mark" );
+ }
+ }
+ },
+
+ queue: function( elem, type, data ) {
+ var q;
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ q = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery._data( elem, type, jQuery.makeArray(data) );
+ } else {
+ q.push( data );
+ }
+ }
+ return q || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift(),
+ hooks = {};
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ jQuery._data( elem, type + ".run", hooks );
+ fn.call( elem, function() {
+ jQuery.dequeue( elem, type );
+ }, hooks );
+ }
+
+ if ( !queue.length ) {
+ jQuery.removeData( elem, type + "queue " + type + ".run", true );
+ handleQueueMarkDefer( elem, type, "queue" );
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, object ) {
+ if ( typeof type !== "string" ) {
+ object = type;
+ type = undefined;
+ }
+ type = type || "fx";
+ var defer = jQuery.Deferred(),
+ elements = this,
+ i = elements.length,
+ count = 1,
+ deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ tmp;
+ function resolve() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ }
+ while( i-- ) {
+ if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+ ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+ jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+ jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
+ count++;
+ tmp.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise();
+ }
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+ rspace = /\s+/,
+ rreturn = /\r/g,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ getSetAttribute = jQuery.support.getSetAttribute,
+ nodeHook, boolHook, fixSpecified;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.prop );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ var classNames, i, l, elem,
+ setClass, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call(this, j, this.className) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ classNames = value.split( rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className && classNames.length === 1 ) {
+ elem.className = value;
+
+ } else {
+ setClass = " " + elem.className + " ";
+
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
+ setClass += classNames[ c ] + " ";
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classNames, i, l, elem, className, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call(this, j, this.className) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ classNames = ( value || "" ).split( rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ className = (" " + elem.className + " ").replace( rclass, " " );
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[ c ] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( rspace );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var self = jQuery(this), val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, self.val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, i, max, option,
+ index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ i = one ? index : 0;
+ max = one ? index + 1 : options.length;
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+ if ( one && !values.length && options.length ) {
+ return jQuery( options[ index ] ).val();
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var values = jQuery.makeArray( value );
+
+ jQuery(elem).find("option").each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery( elem )[ name ]( value );
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === "undefined" ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( notxml ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return;
+
+ } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, "" + value );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+
+ ret = elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret === null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var propName, attrNames, name, l,
+ i = 0;
+
+ if ( value && elem.nodeType === 1 ) {
+ attrNames = value.toLowerCase().split( rspace );
+ l = attrNames.length;
+
+ for ( ; i < l; i++ ) {
+ name = attrNames[ i ];
+
+ if ( name ) {
+ propName = jQuery.propFix[ name ] || name;
+
+ // See #9699 for explanation of this approach (setting first, then removal)
+ jQuery.attr( elem, name, "" );
+ elem.removeAttribute( getSetAttribute ? name : propName );
+
+ // Set corresponding property to false for boolean attributes
+ if ( rboolean.test( name ) && propName in elem ) {
+ elem[ propName ] = false;
+ }
+ }
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to it's default in case type is set after value
+ // This is for element creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ },
+ // Use the value property for back compat
+ // Use the nodeHook for button elements in IE6/7 (#1954)
+ value: {
+ get: function( elem, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.get( elem, name );
+ }
+ return name in elem ?
+ elem.value :
+ null;
+ },
+ set: function( elem, value, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.set( elem, value, name );
+ }
+ // Does not return so that setAttribute is also used
+ elem.value = value;
+ }
+ }
+ },
+
+ propFix: {
+ tabindex: "tabIndex",
+ readonly: "readOnly",
+ "for": "htmlFor",
+ "class": "className",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ cellpadding: "cellPadding",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ usemap: "useMap",
+ frameborder: "frameBorder",
+ contenteditable: "contentEditable"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ return ( elem[ name ] = value );
+ }
+
+ } else {
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ return elem[ name ];
+ }
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ var attributeNode = elem.getAttributeNode("tabindex");
+
+ return attributeNode && attributeNode.specified ?
+ parseInt( attributeNode.value, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+ }
+ }
+});
+
+// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
+jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
+
+// Hook for boolean attributes
+boolHook = {
+ get: function( elem, name ) {
+ // Align boolean attributes with corresponding properties
+ // Fall back to attribute presence where some booleans are not supported
+ var attrNode,
+ property = jQuery.prop( elem, name );
+ return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
+ name.toLowerCase() :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ var propName;
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ // value is true since we know at this point it's type boolean and not false
+ // Set boolean attributes to the same name and set the DOM property
+ propName = jQuery.propFix[ name ] || name;
+ if ( propName in elem ) {
+ // Only set the IDL specifically if it already exists on the element
+ elem[ propName ] = true;
+ }
+
+ elem.setAttribute( name, name.toLowerCase() );
+ }
+ return name;
+ }
+};
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+ fixSpecified = {
+ name: true,
+ id: true
+ };
+
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret;
+ ret = elem.getAttributeNode( name );
+ return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
+ ret.nodeValue :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ ret = document.createAttribute( name );
+ elem.setAttributeNode( ret );
+ }
+ return ( ret.nodeValue = value + "" );
+ }
+ };
+
+ // Apply the nodeHook to tabindex
+ jQuery.attrHooks.tabindex.set = nodeHook.set;
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ });
+ });
+
+ // Set contenteditable to false on removals(#10429)
+ // Setting to empty string throws an error as an invalid value
+ jQuery.attrHooks.contenteditable = {
+ get: nodeHook.get,
+ set: function( elem, value, name ) {
+ if ( value === "" ) {
+ value = "false";
+ }
+ nodeHook.set( elem, value, name );
+ }
+ };
+}
+
+
+// Some attributes require a special call on IE
+if ( !jQuery.support.hrefNormalized ) {
+ jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ get: function( elem ) {
+ var ret = elem.getAttribute( name, 2 );
+ return ret === null ? undefined : ret;
+ }
+ });
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Normalize to lowercase since IE uppercases css property names
+ return elem.style.cssText.toLowerCase() || undefined;
+ },
+ set: function( elem, value ) {
+ return ( elem.style.cssText = "" + value );
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ });
+}
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+ jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+ jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ get: function( elem ) {
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+ };
+ });
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ });
+});
+
+
+
+
+var rformElems = /^(?:textarea|input|select)$/i,
+ rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
+ rhoverHack = /\bhover(\.\S+)?\b/,
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
+ quickParse = function( selector ) {
+ var quick = rquickIs.exec( selector );
+ if ( quick ) {
+ // 0 1 2 3
+ // [ _, tag, id, class ]
+ quick[1] = ( quick[1] || "" ).toLowerCase();
+ quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
+ }
+ return quick;
+ },
+ quickIs = function( elem, m ) {
+ var attrs = elem.attributes || {};
+ return (
+ (!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
+ (!m[2] || (attrs.id || {}).value === m[2]) &&
+ (!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
+ );
+ },
+ hoverHack = function( events ) {
+ return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
+ };
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var elemData, eventHandle, events,
+ t, tns, type, namespaces, handleObj,
+ handleObjIn, quick, handlers, special;
+
+ // Don't attach events to noData or text/comment nodes (allow plain objects tho)
+ if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ events = elemData.events;
+ if ( !events ) {
+ elemData.events = events = {};
+ }
+ eventHandle = elemData.handle;
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+ eventHandle.elem = elem;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = jQuery.trim( hoverHack(types) ).split( " " );
+ for ( t = 0; t < types.length; t++ ) {
+
+ tns = rtypenamespace.exec( types[t] ) || [];
+ type = tns[1];
+ namespaces = ( tns[2] || "" ).split( "." ).sort();
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: tns[1],
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ quick: quickParse( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ handlers = events[ type ];
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener/attachEvent if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
+ t, tns, type, origType, namespaces, origCount,
+ j, events, special, handle, eventType, handleObj;
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
+ for ( t = 0; t < types.length; t++ ) {
+ tns = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tns[1];
+ namespaces = tns[2];
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector? special.delegateType : special.bindType ) || type;
+ eventType = events[ type ] || [];
+ origCount = eventType.length;
+ namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+
+ // Remove matching events
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ eventType.splice( j--, 1 );
+
+ if ( handleObj.selector ) {
+ eventType.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( eventType.length === 0 && origCount !== eventType.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ // removeData also checks for emptiness and clears the expando if empty
+ // so use it instead of delete
+ jQuery.removeData( elem, [ "events", "handle" ], true );
+ }
+ },
+
+ // Events that are safe to short-circuit if no handlers are attached.
+ // Native DOM events should not be added, they may have inline handlers.
+ customEvent: {
+ "getData": true,
+ "setData": true,
+ "changeData": true
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ // Don't do events on text and comment nodes
+ if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
+ return;
+ }
+
+ // Event object or event type
+ var type = event.type || event,
+ namespaces = [],
+ cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf( "!" ) >= 0 ) {
+ // Exclusive events trigger only for the exact event (no namespaces)
+ type = type.slice(0, -1);
+ exclusive = true;
+ }
+
+ if ( type.indexOf( "." ) >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+
+ if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
+ // No jQuery handlers for this event type, and it can't have inline handlers
+ return;
+ }
+
+ // Caller can pass in an Event, Object, or just an event type string
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ new jQuery.Event( type, event ) :
+ // Just the event type (string)
+ new jQuery.Event( type );
+
+ event.type = type;
+ event.isTrigger = true;
+ event.exclusive = exclusive;
+ event.namespace = namespaces.join( "." );
+ event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+ ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
+
+ // Handle a global trigger
+ if ( !elem ) {
+
+ // TODO: Stop taunting the data cache; remove global events and always attach to document
+ cache = jQuery.cache;
+ for ( i in cache ) {
+ if ( cache[ i ].events && cache[ i ].events[ type ] ) {
+ jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
+ }
+ }
+ return;
+ }
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data != null ? jQuery.makeArray( data ) : [];
+ data.unshift( event );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ eventPath = [[ elem, special.bindType || type ]];
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
+ old = null;
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push([ cur, bubbleType ]);
+ old = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( old && old === elem.ownerDocument ) {
+ eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
+ }
+ }
+
+ // Fire handlers on the event path
+ for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
+
+ cur = eventPath[i][0];
+ event.type = eventPath[i][1];
+
+ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+ // Note that this is a bare JS function and not a jQuery handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
+ event.preventDefault();
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
+ !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ // IE<9 dies on focus/blur to hidden element (#1486)
+ if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ old = elem[ ontype ];
+
+ if ( old ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( old ) {
+ elem[ ontype ] = old;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event || window.event );
+
+ var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
+ delegateCount = handlers.delegateCount,
+ args = [].slice.call( arguments, 0 ),
+ run_all = !event.exclusive && !event.namespace,
+ handlerQueue = [],
+ i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Determine handlers that should run if there are delegated events
+ // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
+
+ // Pregenerate a single jQuery object for reuse with .is()
+ jqcur = jQuery(this);
+ jqcur.context = this.ownerDocument || this;
+
+ for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
+ selMatch = {};
+ matches = [];
+ jqcur[0] = cur;
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+ sel = handleObj.selector;
+
+ if ( selMatch[ sel ] === undefined ) {
+ selMatch[ sel ] = (
+ handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
+ );
+ }
+ if ( selMatch[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, matches: matches });
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( handlers.length > delegateCount ) {
+ handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
+ }
+
+ // Run delegates first; they may want to stop propagation beneath us
+ for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
+ matched = handlerQueue[ i ];
+ event.currentTarget = matched.elem;
+
+ for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
+ handleObj = matched.matches[ j ];
+
+ // Triggered event must either 1) be non-exclusive and have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
+ props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var eventDoc, doc, body,
+ button = original.button,
+ fromElement = original.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && fromElement ) {
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop,
+ originalEvent = event,
+ fixHook = jQuery.event.fixHooks[ event.type ] || {},
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = jQuery.Event( originalEvent );
+
+ for ( i = copy.length; i; ) {
+ prop = copy[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
+ if ( !event.target ) {
+ event.target = originalEvent.srcElement || document;
+ }
+
+ // Target should not be a text node (#504, Safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
+ if ( event.metaKey === undefined ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady
+ },
+
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+
+ focus: {
+ delegateType: "focusin"
+ },
+ blur: {
+ delegateType: "focusout"
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ { type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+// Some plugins are using, but it's undocumented/deprecated and will be removed.
+// The 1.7 special event interface should provide all the hooks needed now.
+jQuery.event.handle = jQuery.event.dispatch;
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj,
+ selector = handleObj.selector,
+ ret;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+ // Node name check avoids a VML-related crash in IE (#9807)
+ var elem = e.target,
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+ if ( form && !form._submit_attached ) {
+ jQuery.event.add( form, "submit._submit", function( event ) {
+ // If form was submitted by the user, bubble the event up the tree
+ if ( this.parentNode && !event.isTrigger ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ });
+ form._submit_attached = true;
+ }
+ });
+ // return undefined since we don't need an event listener
+ },
+
+ teardown: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+ jQuery.event.remove( this, "._submit" );
+ }
+ };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+ jQuery.event.special.change = {
+
+ setup: function() {
+
+ if ( rformElems.test( this.nodeName ) ) {
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
+ // after a propertychange. Eat the blur-change in special.change.handle.
+ // This still fires onchange a second time for check/radio after blur.
+ if ( this.type === "checkbox" || this.type === "radio" ) {
+ jQuery.event.add( this, "propertychange._change", function( event ) {
+ if ( event.originalEvent.propertyName === "checked" ) {
+ this._just_changed = true;
+ }
+ });
+ jQuery.event.add( this, "click._change", function( event ) {
+ if ( this._just_changed && !event.isTrigger ) {
+ this._just_changed = false;
+ jQuery.event.simulate( "change", this, event, true );
+ }
+ });
+ }
+ return false;
+ }
+ // Delegated event; lazy-add a change handler on descendant inputs
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
+ var elem = e.target;
+
+ if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
+ jQuery.event.add( elem, "change._change", function( event ) {
+ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+ jQuery.event.simulate( "change", this.parentNode, event, true );
+ }
+ });
+ elem._change_attached = true;
+ }
+ });
+ },
+
+ handle: function( event ) {
+ var elem = event.target;
+
+ // Swallow native change events from checkbox/radio, we already triggered them above
+ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+ return event.handleObj.handler.apply( this, arguments );
+ }
+ },
+
+ teardown: function() {
+ jQuery.event.remove( this, "._change" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0,
+ handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on.call( this, types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ var handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( var type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ live: function( types, data, fn ) {
+ jQuery( this.context ).on( types, this.selector, data, fn );
+ return this;
+ },
+ die: function( types, fn ) {
+ jQuery( this.context ).off( types, this.selector || "**", fn );
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ return jQuery.event.trigger( type, data, this[0], true );
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ guid = fn.guid || jQuery.guid++,
+ i = 0,
+ toggler = function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ };
+
+ // link all the functions, so any of them can unbind this click handler
+ toggler.guid = guid;
+ while ( i < args.length ) {
+ args[ i++ ].guid = guid;
+ }
+
+ return this.click( toggler );
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+
+ if ( rkeyEvent.test( name ) ) {
+ jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
+ }
+
+ if ( rmouseEvent.test( name ) ) {
+ jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
+ }
+});
+
+
+
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2012, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ expando = "sizcache" + (Math.random() + '').replace('.', ''),
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true,
+ rBackslash = /\\/g,
+ rReturn = /\r\n/g,
+ rNonWord = /\W/;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context, seed );
+
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set, seed );
+ }
+ }
+
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray( set );
+
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+ var set, i, len, match, type, left;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( i = 0, len = Expr.order.length; i < len; i++ ) {
+ type = Expr.order[i];
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ left = match[1];
+ match.splice( 1, 1 );
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace( rBackslash, "" );
+ set = Expr.find[ type ]( match, context, isXML );
+
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( "*" ) :
+ [];
+ }
+
+ return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ type, found, item, filter, left,
+ i, pass,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+ while ( expr && set.length ) {
+ for ( type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ filter = Expr.filter[ type ];
+ left = match[1];
+
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ pass = not ^ found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+
+ } else {
+ curLoop[i] = false;
+ }
+
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Utility function for retreiving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+var getText = Sizzle.getText = function( elem ) {
+ var i, node,
+ nodeType = elem.nodeType,
+ ret = "";
+
+ if ( nodeType ) {
+ if ( nodeType === 1 || nodeType === 9 ) {
+ // Use textContent || innerText for elements
+ if ( typeof elem.textContent === 'string' ) {
+ return elem.textContent;
+ } else if ( typeof elem.innerText === 'string' ) {
+ // Replace IE's carriage returns
+ return elem.innerText.replace( rReturn, '' );
+ } else {
+ // Traverse it's children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ } else {
+
+ // If no nodeType, this is expected to be an array
+ for ( i = 0; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ if ( node.nodeType !== 8 ) {
+ ret += getText( node );
+ }
+ }
+ }
+ return ret;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+
+ leftMatch: {},
+
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+
+ attrHandle: {
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ },
+ type: function( elem ) {
+ return elem.getAttribute( "type" );
+ }
+ },
+
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !rNonWord.test( part ),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+
+ "": function(checkSet, part, isXML){
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+ },
+
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+ }
+ },
+
+ find: {
+ ID: function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ },
+
+ NAME: function( match, context ) {
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [],
+ results = context.getElementsByName( match[1] );
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+
+ TAG: function( match, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( match[1] );
+ }
+ }
+ },
+ preFilter: {
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace( rBackslash, "" ) + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+
+ ID: function( match ) {
+ return match[1].replace( rBackslash, "" );
+ },
+
+ TAG: function( match, curLoop ) {
+ return match[1].replace( rBackslash, "" ).toLowerCase();
+ },
+
+ CHILD: function( match ) {
+ if ( match[1] === "nth" ) {
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ match[2] = match[2].replace(/^\+|\s*/g, '');
+
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+ else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1] = match[1].replace( rBackslash, "" );
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ // Handle if an un-quoted value was used
+ match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+
+ return false;
+ }
+
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+
+ POS: function( match ) {
+ match.unshift( true );
+
+ return match;
+ }
+ },
+
+ filters: {
+ enabled: function( elem ) {
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+
+ disabled: function( elem ) {
+ return elem.disabled === true;
+ },
+
+ checked: function( elem ) {
+ return elem.checked === true;
+ },
+
+ selected: function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ parent: function( elem ) {
+ return !!elem.firstChild;
+ },
+
+ empty: function( elem ) {
+ return !elem.firstChild;
+ },
+
+ has: function( elem, i, match ) {
+ return !!Sizzle( match[3], elem ).length;
+ },
+
+ header: function( elem ) {
+ return (/h\d/i).test( elem.nodeName );
+ },
+
+ text: function( elem ) {
+ var attr = elem.getAttribute( "type" ), type = elem.type;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
+ },
+
+ radio: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
+ },
+
+ checkbox: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
+ },
+
+ password: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
+ },
+
+ submit: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "submit" === elem.type;
+ },
+
+ image: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
+ },
+
+ reset: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "reset" === elem.type;
+ },
+
+ button: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && "button" === elem.type || name === "button";
+ },
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
+ },
+
+ focus: function( elem ) {
+ return elem === elem.ownerDocument.activeElement;
+ }
+ },
+ setFilters: {
+ first: function( elem, i ) {
+ return i === 0;
+ },
+
+ last: function( elem, i, match, array ) {
+ return i === array.length - 1;
+ },
+
+ even: function( elem, i ) {
+ return i % 2 === 0;
+ },
+
+ odd: function( elem, i ) {
+ return i % 2 === 1;
+ },
+
+ lt: function( elem, i, match ) {
+ return i < match[3] - 0;
+ },
+
+ gt: function( elem, i, match ) {
+ return i > match[3] - 0;
+ },
+
+ nth: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ },
+
+ eq: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ } else {
+ Sizzle.error( name );
+ }
+ },
+
+ CHILD: function( elem, match ) {
+ var first, last,
+ doneName, parent, cache,
+ count, diff,
+ type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ case "nth":
+ first = match[2];
+ last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ doneName = match[0];
+ parent = elem.parentNode;
+
+ if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
+ count = 0;
+
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+
+ parent[ expando ] = doneName;
+ }
+
+ diff = elem.nodeIndex - last;
+
+ if ( first === 0 ) {
+ return diff === 0;
+
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+
+ ID: function( elem, match ) {
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+
+ TAG: function( elem, match ) {
+ return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
+ },
+
+ CLASS: function( elem, match ) {
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+
+ ATTR: function( elem, match ) {
+ var name = match[1],
+ result = Sizzle.attr ?
+ Sizzle.attr( elem, name ) :
+ Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ !type && Sizzle.attr ?
+ result != null :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+
+ } else {
+ for ( ; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+ };
+
+} else {
+ sortOrder = function( a, b ) {
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
+ } else if ( a.sourceIndex && b.sourceIndex ) {
+ return a.sourceIndex - b.sourceIndex;
+ }
+
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+
+ var cur = a.nextSibling;
+ }
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+ };
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
+ }
+ };
+
+ Expr.filter.ID = function( elem, match ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+
+ // release memory in IE
+ root = form = null;
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ };
+ }
+
+ // release memory in IE
+ div = null;
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function( query, context, extra, seed ) {
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && !Sizzle.isXML(context) ) {
+ // See if we find a selector to speed up
+ var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+
+ if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+ // Speed-up: Sizzle("TAG")
+ if ( match[1] ) {
+ return makeArray( context.getElementsByTagName( query ), extra );
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+ return makeArray( context.getElementsByClassName( match[2] ), extra );
+ }
+ }
+
+ if ( context.nodeType === 9 ) {
+ // Speed-up: Sizzle("body")
+ // The body element only exists once, optimize finding it
+ if ( query === "body" && context.body ) {
+ return makeArray( [ context.body ], extra );
+
+ // Speed-up: Sizzle("#ID")
+ } else if ( match && match[3] ) {
+ var elem = context.getElementById( match[3] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id === match[3] ) {
+ return makeArray( [ elem ], extra );
+ }
+
+ } else {
+ return makeArray( [], extra );
+ }
+ }
+
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var oldContext = context,
+ old = context.getAttribute( "id" ),
+ nid = old || id,
+ hasParent = context.parentNode,
+ relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ } else {
+ nid = nid.replace( /'/g, "\\$&" );
+ }
+ if ( relativeHierarchySelector && hasParent ) {
+ context = context.parentNode;
+ }
+
+ try {
+ if ( !relativeHierarchySelector || hasParent ) {
+ return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+ }
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ oldContext.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ // release memory in IE
+ div = null;
+ })();
+}
+
+(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+ if ( matches ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9 fails this)
+ var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ var ret = matches.call( node, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || !disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9, so check for that
+ node.document && node.document.nodeType !== 11 ) {
+ return ret;
+ }
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function( match, context, isXML ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ // release memory in IE
+ div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem[ expando ] === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem[ expando ] = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem[ expando ] === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem[ expando ] = doneName;
+ elem.sizset = i;
+ }
+
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
+
+Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context, seed ) {
+ var match,
+ tmpSet = [],
+ later = "",
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet, seed );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+// Override sizzle attribute retrieval
+Sizzle.attr = jQuery.attr;
+Sizzle.selectors.attrMap = {};
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.POS,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var self = this,
+ i, l;
+
+ if ( typeof selector !== "string" ) {
+ return jQuery( selector ).filter(function() {
+ for ( i = 0, l = self.length; i < l; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ });
+ }
+
+ var ret = this.pushStack( "", "find", selector ),
+ length, n, r;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( n = length; n < ret.length; n++ ) {
+ for ( r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && (
+ typeof selector === "string" ?
+ // If this is a positional selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ POS.test( selector ) ?
+ jQuery( selector, this.context ).index( this[0] ) >= 0 :
+ jQuery.filter( selector, this ).length > 0 :
+ this.filter( selector ).length > 0 );
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ // Array (deprecated as of jQuery 1.7)
+ if ( jQuery.isArray( selectors ) ) {
+ var level = 1;
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( i = 0; i < selectors.length; i++ ) {
+
+ if ( jQuery( cur ).is( selectors[ i ] ) ) {
+ ret.push({ selector: selectors[ i ], elem: cur, level: level });
+ }
+ }
+
+ cur = cur.parentNode;
+ level++;
+ }
+
+ return ret;
+ }
+
+ // String
+ var pos = POS.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
+ break;
+ }
+ }
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, slice.call( arguments ).join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+ // Can't pass null or undefined to indexOf in Firefox 4
+ // Set to 0 to skip string check
+ qualifier = qualifier || 0;
+
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return ( elem === qualifier ) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
+ });
+}
+
+
+
+
+function createSafeFragment( document ) {
+ var list = nodeNames.split( "|" ),
+ safeFrag = document.createDocumentFragment();
+
+ if ( safeFrag.createElement ) {
+ while ( list.length ) {
+ safeFrag.createElement(
+ list.pop()
+ );
+ }
+ }
+ return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" +
+ "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+ rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnoInnerhtml = /<(?:script|style)/i,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")", "i"),
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /\/(java|ecma)script/i,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ area: [ 1, "<map>", "</map>" ],
+ _default: [ 0, "", "" ]
+ },
+ safeFragment = createSafeFragment( document );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery( this );
+
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
+
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
+
+ return jQuery.text( this );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function(i) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery.clean( arguments );
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery.clean(arguments) );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
+
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+ value = value.replace(rxhtmlTag, "<$1></$2>");
+
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
+ }
+ }
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
+ }
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery( this );
+
+ self.html( value.call(this, i, self.html()) );
+ });
+
+ } else {
+ this.empty().append( value );
+ }
+
+ return this;
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery( value ).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling,
+ parent = this.parentNode;
+
+ jQuery( this ).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.length ?
+ this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+ this;
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, fragment, parent,
+ value = args[0],
+ scripts = [];
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = jQuery.buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ // Make sure that we do not leak memory by inadvertently discarding
+ // the original fragment (which might have attached data) instead of
+ // using it; in addition, use the original fragment object for the last
+ // item instead of first because it can end up being emptied incorrectly
+ // in certain situations (Bug #8070).
+ // Fragments from the fragment cache must always be cloned and never used
+ // in place.
+ results.cacheable || ( l > 1 && i < lastIndex ) ?
+ jQuery.clone( fragment, true, true ) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
+
+ return this;
+ }
+});
+
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var type, i, l,
+ oldData = jQuery._data( src ),
+ curData = jQuery._data( dest, oldData ),
+ events = oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
+ }
+ }
+ }
+
+ // make the cloned public data object a copy from the original
+ if ( curData.data ) {
+ curData.data = jQuery.extend( {}, curData.data );
+ }
+}
+
+function cloneFixAttributes( src, dest ) {
+ var nodeName;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // clearAttributes removes the attributes, which we don't want,
+ // but also removes the attachEvent events, which we *do* want
+ if ( dest.clearAttributes ) {
+ dest.clearAttributes();
+ }
+
+ // mergeAttributes, in contrast, only merges back on the
+ // original attributes, not the events
+ if ( dest.mergeAttributes ) {
+ dest.mergeAttributes( src );
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 fail to clone children inside object elements that use
+ // the proprietary classid attribute value (rather than the type
+ // attribute) to identify the type of content to display
+ if ( nodeName === "object" ) {
+ dest.outerHTML = src.outerHTML;
+
+ } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+ if ( src.checked ) {
+ dest.defaultChecked = dest.checked = src.checked;
+ }
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+
+ // Event data gets referenced instead of copied if the expando
+ // gets copied too
+ dest.removeAttribute( jQuery.expando );
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults, doc,
+ first = args[ 0 ];
+
+ // nodes may contain either an explicit document object,
+ // a jQuery collection or context object.
+ // If nodes[0] contains a valid object to assign to doc
+ if ( nodes && nodes[0] ) {
+ doc = nodes[0].ownerDocument || nodes[0];
+ }
+
+ // Ensure that an attr object doesn't incorrectly stand in as a document object
+ // Chrome and Firefox seem to allow this to occur and will throw exception
+ // Fixes #8950
+ if ( !doc.createDocumentFragment ) {
+ doc = document;
+ }
+
+ // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
+ if ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&
+ first.charAt(0) === "<" && !rnocache.test( first ) &&
+ (jQuery.support.checkClone || !rchecked.test( first )) &&
+ (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
+
+ cacheable = true;
+
+ cacheresults = jQuery.fragments[ first ];
+ if ( cacheresults && cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ first ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [],
+ insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = ( i > 0 ? this.clone(true) : this ).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+function getAll( elem ) {
+ if ( typeof elem.getElementsByTagName !== "undefined" ) {
+ return elem.getElementsByTagName( "*" );
+
+ } else if ( typeof elem.querySelectorAll !== "undefined" ) {
+ return elem.querySelectorAll( "*" );
+
+ } else {
+ return [];
+ }
+}
+
+// Used in clean, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( elem.type === "checkbox" || elem.type === "radio" ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+// Finds all inputs and passes them to fixDefaultChecked
+function findInputs( elem ) {
+ var nodeName = ( elem.nodeName || "" ).toLowerCase();
+ if ( nodeName === "input" ) {
+ fixDefaultChecked( elem );
+ // Skip scripts, get other children
+ } else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
+ jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
+ }
+}
+
+// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js
+function shimCloneNode( elem ) {
+ var div = document.createElement( "div" );
+ safeFragment.appendChild( div );
+
+ div.innerHTML = elem.outerHTML;
+ return div.firstChild;
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var srcElements,
+ destElements,
+ i,
+ // IE<=8 does not properly clone detached, unknown element nodes
+ clone = jQuery.support.html5Clone || !rnoshimcache.test( "<" + elem.nodeName ) ?
+ elem.cloneNode( true ) :
+ shimCloneNode( elem );
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+ // IE copies events bound via attachEvent when using cloneNode.
+ // Calling detachEvent on the clone will also remove the events
+ // from the original. In order to get around this, we use some
+ // proprietary methods to clear the events. Thanks to MooTools
+ // guys for this hotness.
+
+ cloneFixAttributes( elem, clone );
+
+ // Using Sizzle here is crazy slow, so we use getElementsByTagName instead
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ // Weird iteration because IE will replace the length property
+ // with an element if you are cloning the body and one of the
+ // elements on the page has a name or id of "length"
+ for ( i = 0; srcElements[i]; ++i ) {
+ // Ensure that the destination node is not null; Fixes #9587
+ if ( destElements[i] ) {
+ cloneFixAttributes( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ cloneCopyEvent( elem, clone );
+
+ if ( deepDataAndEvents ) {
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneCopyEvent( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ srcElements = destElements = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
+ clean: function( elems, context, fragment, scripts ) {
+ var checkScriptType;
+
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ var ret = [], j;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ if ( !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+ } else {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
+
+ // Append wrapper element to unknown element safe doc fragment
+ if ( context === document ) {
+ // Use the fragment we've already created for this document
+ safeFragment.appendChild( div );
+ } else {
+ // Use a fragment created with the owner document
+ createSafeFragment( context ).appendChild( div );
+ }
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+ }
+ }
+
+ // Resets defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ var len;
+ if ( !jQuery.support.appendChecked ) {
+ if ( elem[0] && typeof (len = elem.length) === "number" ) {
+ for ( j = 0; j < len; j++ ) {
+ findInputs( elem[j] );
+ }
+ } else {
+ findInputs( elem );
+ }
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ checkScriptType = function( elem ) {
+ return !elem.type || rscriptType.test( elem.type );
+ };
+ for ( i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
+
+ ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id,
+ cache = jQuery.cache,
+ special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ];
+
+ if ( data && data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+
+ // Null the DOM reference to avoid IE6/7/8 leak (#7054)
+ if ( data.handle ) {
+ data.handle.elem = null;
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ // fixed for IE9, see #8346
+ rupper = /([A-Z]|^ms)/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+ rrelNum = /^([\-+])=([\-+.\de]+)/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+ curCSS,
+
+ getComputedStyle,
+ currentStyle;
+
+jQuery.fn.css = function( name, value ) {
+ // Setting 'undefined' is a no-op
+ if ( arguments.length === 2 && value === undefined ) {
+ return this;
+ }
+
+ return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ });
+};
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity", "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( value == null || type === "number" && isNaN( value ) ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra ) {
+ var ret, hooks;
+
+ // Make sure that we're working with the right name
+ name = jQuery.camelCase( name );
+ hooks = jQuery.cssHooks[ name ];
+ name = jQuery.cssProps[ name ] || name;
+
+ // cssFloat needs a special treatment
+ if ( name === "cssFloat" ) {
+ name = "float";
+ }
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
+
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name );
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ var val;
+
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ return getWH( elem, name, extra );
+ } else {
+ jQuery.swap( elem, cssShow, function() {
+ val = getWH( elem, name, extra );
+ });
+ }
+
+ return val;
+ }
+ },
+
+ set: function( elem, value ) {
+ if ( rnumpx.test( value ) ) {
+ // ignore negative width and height values #1599
+ value = parseFloat( value );
+
+ if ( value >= 0 ) {
+ return value + "px";
+ }
+
+ } else {
+ return value;
+ }
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( parseFloat( RegExp.$1 ) / 100 ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there there is no filter style applied in a css rule, we are done
+ if ( currentStyle && !currentStyle.filter ) {
+ return;
+ }
+ }
+
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+jQuery(function() {
+ // This hook cannot be added until DOM ready because the support test
+ // for it is not run until after DOM ready
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ var ret;
+ jQuery.swap( elem, { "display": "inline-block" }, function() {
+ if ( computed ) {
+ ret = curCSS( elem, "margin-right", "marginRight" );
+ } else {
+ ret = elem.style.marginRight;
+ }
+ });
+ return ret;
+ }
+ };
+ }
+});
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ getComputedStyle = function( elem, name ) {
+ var ret, defaultView, computedStyle;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ if ( (defaultView = elem.ownerDocument.defaultView) &&
+ (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+ }
+
+ return ret;
+ };
+}
+
+if ( document.documentElement.currentStyle ) {
+ currentStyle = function( elem, name ) {
+ var left, rsLeft, uncomputed,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ style = elem.style;
+
+ // Avoid setting ret to empty string here
+ // so we don't default to auto
+ if ( ret === null && style && (uncomputed = style[ name ]) ) {
+ ret = uncomputed;
+ }
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+
+ // Remember the original values
+ left = style.left;
+ rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : ( ret || 0 );
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWH( elem, name, extra ) {
+
+ // Start with offset property
+ var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ which = name === "width" ? cssWidth : cssHeight,
+ i = 0,
+ len = which.length;
+
+ if ( val > 0 ) {
+ if ( extra !== "border" ) {
+ for ( ; i < len; i++ ) {
+ if ( !extra ) {
+ val -= parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
+ } else {
+ val -= parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
+ }
+ }
+ }
+
+ return val + "px";
+ }
+
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, name );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ] || 0;
+ }
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+
+ // Add padding, border, margin
+ if ( extra ) {
+ for ( ; i < len; i++ ) {
+ val += parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
+ if ( extra !== "padding" ) {
+ val += parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
+ }
+ }
+ }
+
+ return val + "px";
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth,
+ height = elem.offsetHeight;
+
+ return ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rhash = /#.*$/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rquery = /\?/,
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rspacesAjax = /\s+/,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Document location
+ ajaxLocation,
+
+ // Document location segments
+ ajaxLocParts,
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = ["*/"] + ["*"];
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ if ( jQuery.isFunction( func ) ) {
+ var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
+ i = 0,
+ length = dataTypes.length,
+ dataType,
+ list,
+ placeBefore;
+
+ // For each dataType in the dataTypeExpression
+ for ( ; i < length; i++ ) {
+ dataType = dataTypes[ i ];
+ // We control if we're asked to add before
+ // any existing element
+ placeBefore = /^\+/.test( dataType );
+ if ( placeBefore ) {
+ dataType = dataType.substr( 1 ) || "*";
+ }
+ list = structure[ dataType ] = structure[ dataType ] || [];
+ // then we add to the structure accordingly
+ list[ placeBefore ? "unshift" : "push" ]( func );
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+ dataType /* internal */, inspected /* internal */ ) {
+
+ dataType = dataType || options.dataTypes[ 0 ];
+ inspected = inspected || {};
+
+ inspected[ dataType ] = true;
+
+ var list = structure[ dataType ],
+ i = 0,
+ length = list ? list.length : 0,
+ executeOnly = ( structure === prefilters ),
+ selection;
+
+ for ( ; i < length && ( executeOnly || !selection ); i++ ) {
+ selection = list[ i ]( options, originalOptions, jqXHR );
+ // If we got redirected to another dataType
+ // we try there if executing only and not done already
+ if ( typeof selection === "string" ) {
+ if ( !executeOnly || inspected[ selection ] ) {
+ selection = undefined;
+ } else {
+ options.dataTypes.unshift( selection );
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, selection, inspected );
+ }
+ }
+ }
+ // If we're only executing or nothing was selected
+ // we try the catchall dataType if not done already
+ if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, "*", inspected );
+ }
+ // unnecessary when only executing (prefilters)
+ // but it'll be ignored by the caller in that case
+ return selection;
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+}
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf( " " );
+ if ( off >= 0 ) {
+ var selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ // Complete callback (responseText is used internally)
+ complete: function( jqXHR, status, responseText ) {
+ // Store the response as specified by the jqXHR object
+ responseText = jqXHR.responseText;
+ // If successful, inject the HTML into all the matched elements
+ if ( jqXHR.isResolved() ) {
+ // #4825: Get the actual response in case
+ // a dataFilter is present in ajaxSettings
+ jqXHR.done(function( r ) {
+ responseText = r;
+ });
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [ responseText, status, jqXHR ] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray( this.elements ) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ ( this.checked || rselectTextarea.test( this.nodeName ) ||
+ rinput.test( this.type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val, i ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+ jQuery.fn[ o ] = function( f ){
+ return this.on( o, f );
+ };
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ type: method,
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ };
+});
+
+jQuery.extend({
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ if ( settings ) {
+ // Building a settings object
+ ajaxExtend( target, jQuery.ajaxSettings );
+ } else {
+ // Extending ajaxSettings
+ settings = target;
+ target = jQuery.ajaxSettings;
+ }
+ ajaxExtend( target, settings );
+ return target;
+ },
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ text: "text/plain",
+ json: "application/json, text/javascript",
+ "*": allTypes
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText"
+ },
+
+ // List of data converters
+ // 1) key format is "source_type destination_type" (a single space in-between)
+ // 2) the catchall symbol "*" can be used for source_type
+ converters: {
+
+ // Convert anything to text
+ "* text": window.String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ context: true,
+ url: true
+ }
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events
+ // It's the callbackContext if one was provided in the options
+ // and if it's a DOM node or a jQuery collection
+ globalEventContext = callbackContext !== s &&
+ ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+ jQuery( callbackContext ) : jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks( "once memory" ),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // ifModified key
+ ifModifiedKey,
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // transport
+ transport,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // The jqXHR state
+ state = 0,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Fake xhr
+ jqXHR = {
+
+ readyState: 0,
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( !state ) {
+ var lname = name.toLowerCase();
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match === undefined ? null : match;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ statusText = statusText || "abort";
+ if ( transport ) {
+ transport.abort( statusText );
+ }
+ done( 0, statusText );
+ return this;
+ }
+ };
+
+ // Callback for when everything is done
+ // It is defined here because jslint complains if it is declared
+ // at the end of the function (which would be more logical and readable)
+ function done( status, nativeStatusText, responses, headers ) {
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ var isSuccess,
+ success,
+ error,
+ statusText = nativeStatusText,
+ response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
+ lastModified,
+ etag;
+
+ // If successful, handle type chaining
+ if ( status >= 200 && status < 300 || status === 304 ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+
+ if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
+ jQuery.lastModified[ ifModifiedKey ] = lastModified;
+ }
+ if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
+ jQuery.etag[ ifModifiedKey ] = etag;
+ }
+ }
+
+ // If not modified
+ if ( status === 304 ) {
+
+ statusText = "notmodified";
+ isSuccess = true;
+
+ // If we have data
+ } else {
+
+ try {
+ success = ajaxConvert( s, response );
+ statusText = "success";
+ isSuccess = true;
+ } catch(e) {
+ // We have a parsererror
+ statusText = "parsererror";
+ error = e;
+ }
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if ( !statusText || status ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = "" + ( nativeStatusText || statusText );
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+ jqXHR.complete = completeDeferred.add;
+
+ // Status-dependent callbacks
+ jqXHR.statusCode = function( map ) {
+ if ( map ) {
+ var tmp;
+ if ( state < 2 ) {
+ for ( tmp in map ) {
+ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
+ }
+ } else {
+ tmp = map[ jqXHR.status ];
+ jqXHR.then( tmp, tmp );
+ }
+ }
+ return this;
+ };
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
+
+ // Determine if a cross-domain request is in order
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefiler, stop there
+ if ( state === 2 ) {
+ return false;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Get ifModifiedKey before adding the anti-cache parameter
+ ifModifiedKey = s.url;
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+
+ var ts = jQuery.now(),
+ // try replacing _= if it is there
+ ret = s.url.replace( rts, "$1_=" + ts );
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ ifModifiedKey = ifModifiedKey || s.url;
+ if ( jQuery.lastModified[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
+ }
+ if ( jQuery.etag[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
+ }
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already
+ jqXHR.abort();
+ return false;
+
+ }
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout( function(){
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch (e) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : value;
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ // Serialize object item.
+ for ( var name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var contents = s.contents,
+ dataTypes = s.dataTypes,
+ responseFields = s.responseFields,
+ ct,
+ type,
+ finalDataType,
+ firstDataType;
+
+ // Fill responseXXX fields
+ for ( type in responseFields ) {
+ if ( type in responses ) {
+ jqXHR[ responseFields[type] ] = responses[ type ];
+ }
+ }
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+ // Apply the dataFilter if provided
+ if ( s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ var dataTypes = s.dataTypes,
+ converters = {},
+ i,
+ key,
+ length = dataTypes.length,
+ tmp,
+ // Current and previous dataTypes
+ current = dataTypes[ 0 ],
+ prev,
+ // Conversion expression
+ conversion,
+ // Conversion function
+ conv,
+ // Conversion functions (transitive conversion)
+ conv1,
+ conv2;
+
+ // For each dataType in the chain
+ for ( i = 1; i < length; i++ ) {
+
+ // Create converters map
+ // with lowercased keys
+ if ( i === 1 ) {
+ for ( key in s.converters ) {
+ if ( typeof key === "string" ) {
+ converters[ key.toLowerCase() ] = s.converters[ key ];
+ }
+ }
+ }
+
+ // Get the dataTypes
+ prev = current;
+ current = dataTypes[ i ];
+
+ // If current is auto dataType, update it to prev
+ if ( current === "*" ) {
+ current = prev;
+ // If no auto and dataTypes are actually different
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Get the converter
+ conversion = prev + " " + current;
+ conv = converters[ conversion ] || converters[ "* " + current ];
+
+ // If there is no direct converter, search transitively
+ if ( !conv ) {
+ conv2 = undefined;
+ for ( conv1 in converters ) {
+ tmp = conv1.split( " " );
+ if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
+ conv2 = converters[ tmp[1] + " " + current ];
+ if ( conv2 ) {
+ conv1 = converters[ conv1 ];
+ if ( conv1 === true ) {
+ conv = conv2;
+ } else if ( conv2 === true ) {
+ conv = conv1;
+ }
+ break;
+ }
+ }
+ }
+ }
+ // If we found no converter, dispatch an error
+ if ( !( conv || conv2 ) ) {
+ jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
+ }
+ // If found converter is not an equivalence
+ if ( conv !== true ) {
+ // Convert with 1 or 2 converters accordingly
+ response = conv ? conv( response ) : conv2( conv1(response) );
+ }
+ }
+ }
+ return response;
+}
+
+
+
+
+var jsc = jQuery.now(),
+ jsre = /(\=)\?(&|$)|\?\?/i;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ return jQuery.expando + "_" + ( jsc++ );
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
+ ( typeof s.data === "string" );
+
+ if ( s.dataTypes[ 0 ] === "jsonp" ||
+ s.jsonp !== false && ( jsre.test( s.url ) ||
+ inspectData && jsre.test( s.data ) ) ) {
+
+ var responseContainer,
+ jsonpCallback = s.jsonpCallback =
+ jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
+ previous = window[ jsonpCallback ],
+ url = s.url,
+ data = s.data,
+ replace = "$1" + jsonpCallback + "$2";
+
+ if ( s.jsonp !== false ) {
+ url = url.replace( jsre, replace );
+ if ( s.url === url ) {
+ if ( inspectData ) {
+ data = data.replace( jsre, replace );
+ }
+ if ( s.data === data ) {
+ // Add callback manually
+ url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
+ }
+ }
+ }
+
+ s.url = url;
+ s.data = data;
+
+ // Install callback
+ window[ jsonpCallback ] = function( response ) {
+ responseContainer = [ response ];
+ };
+
+ // Clean-up function
+ jqXHR.always(function() {
+ // Set callback back to previous value
+ window[ jsonpCallback ] = previous;
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( previous ) ) {
+ window[ jsonpCallback ]( responseContainer[ 0 ] );
+ }
+ });
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( jsonpCallback + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Delegate to script
+ return "script";
+ }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /javascript|ecmascript/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement( "script" );
+
+ script.async = "async";
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+
+ // Dereference the script
+ script = undefined;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( 0, 1 );
+ }
+ }
+ };
+ }
+});
+
+
+
+
+var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject ? function() {
+ // Abort all pending requests
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( 0, 1 );
+ }
+ } : false,
+ xhrId = 0,
+ xhrCallbacks;
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+(function( xhr ) {
+ jQuery.extend( jQuery.support, {
+ ajax: !!xhr,
+ cors: !!xhr && ( "withCredentials" in xhr )
+ });
+})( jQuery.ajaxSettings.xhr() );
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var xhr = s.xhr(),
+ handle,
+ i;
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( _ ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+
+ var status,
+ statusText,
+ responseHeaders,
+ responses,
+ xml;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occured
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+ responses = {};
+ xml = xhr.responseXML;
+
+ // Construct response list
+ if ( xml && xml.documentElement /* #4958 */ ) {
+ responses.xml = xml;
+ }
+ responses.text = xhr.responseText;
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ // if we're in sync mode or it's in cache
+ // and has been retrieved directly (IE6 & IE7)
+ // we need to manually fire the callback
+ if ( !s.async || xhr.readyState === 4 ) {
+ callback();
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback(0,1);
+ }
+ }
+ };
+ }
+ });
+}
+
+
+
+
+var elemdisplay = {},
+ iframe, iframeDoc,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ],
+ fxNow;
+
+jQuery.fn.extend({
+ show: function( speed, easing, callback ) {
+ var elem, display;
+
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback );
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
+ display = elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( display === "" && jQuery.css(elem, "display") === "none" ) {
+ jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ if ( display === "" || display === "none" ) {
+ elem.style.display = jQuery._data( elem, "olddisplay" ) || "";
+ }
+ }
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, easing, callback);
+
+ } else {
+ var elem, display,
+ i = 0,
+ j = this.length;
+
+ for ( ; i < j; i++ ) {
+ elem = this[i];
+ if ( elem.style ) {
+ display = jQuery.css( elem, "display" );
+
+ if ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {
+ jQuery._data( elem, "olddisplay", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ if ( this[i].style ) {
+ this[i].style.display = "none";
+ }
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2, callback ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, easing, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, easing, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed( speed, easing, callback );
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete, [ false ] );
+ }
+
+ // Do not change referenced properties as per-property easing will be lost
+ prop = jQuery.extend( {}, prop );
+
+ function doAnimation() {
+ // XXX 'this' does not always have a nodeName when running the
+ // test suite
+
+ if ( optall.queue === false ) {
+ jQuery._mark( this );
+ }
+
+ var opt = jQuery.extend( {}, optall ),
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ name, val, p, e,
+ parts, start, end, unit,
+ method;
+
+ // will store per property easing and be used to determine when an animation is complete
+ opt.animatedProperties = {};
+
+ for ( p in prop ) {
+
+ // property name normalization
+ name = jQuery.camelCase( p );
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ }
+
+ val = prop[ name ];
+
+ // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
+ if ( jQuery.isArray( val ) ) {
+ opt.animatedProperties[ name ] = val[ 1 ];
+ val = prop[ name ] = val[ 0 ];
+ } else {
+ opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
+ }
+
+ if ( val === "hide" && hidden || val === "show" && !hidden ) {
+ return opt.complete.call( this );
+ }
+
+ if ( isElement && ( name === "height" || name === "width" ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
+ this.style.display = "inline-block";
+
+ } else {
+ this.style.zoom = 1;
+ }
+ }
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ for ( p in prop ) {
+ e = new jQuery.fx( this, opt, p );
+ val = prop[ p ];
+
+ if ( rfxtypes.test( val ) ) {
+
+ // Tracks whether to show or hide based on private
+ // data attached to the element
+ method = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );
+ if ( method ) {
+ jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
+ e[ method ]();
+ } else {
+ e[ val ]();
+ }
+
+ } else {
+ parts = rfxnum.exec( val );
+ start = e.cur();
+
+ if ( parts ) {
+ end = parseFloat( parts[2] );
+ unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ jQuery.style( this, p, (end || 1) + unit);
+ start = ( (end || 1) / e.cur() ) * start;
+ jQuery.style( this, p, start + unit);
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ }
+
+ // For JS strict compliance
+ return true;
+ }
+
+ return optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+
+ stop: function( type, clearQueue, gotoEnd ) {
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var index,
+ hadTimers = false,
+ timers = jQuery.timers,
+ data = jQuery._data( this );
+
+ // clear marker counters if we know they won't be
+ if ( !gotoEnd ) {
+ jQuery._unmark( true, this );
+ }
+
+ function stopQueue( elem, data, index ) {
+ var hooks = data[ index ];
+ jQuery.removeData( elem, index, true );
+ hooks.stop( gotoEnd );
+ }
+
+ if ( type == null ) {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {
+ stopQueue( this, data, index );
+ }
+ }
+ } else if ( data[ index = type + ".run" ] && data[ index ].stop ){
+ stopQueue( this, data, index );
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ if ( gotoEnd ) {
+
+ // force the next step to be the last
+ timers[ index ]( true );
+ } else {
+ timers[ index ].saveState();
+ }
+ hadTimers = true;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( !( gotoEnd && hadTimers ) ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ }
+
+});
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout( clearFxNow, 0 );
+ return ( fxNow = jQuery.now() );
+}
+
+function clearFxNow() {
+ fxNow = undefined;
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx( "show", 1 ),
+ slideUp: genFx( "hide", 1 ),
+ slideToggle: genFx( "toggle", 1 ),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function( noUnmark ) {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ } else if ( noUnmark !== false ) {
+ jQuery._unmark( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ( ( -Math.cos( p*Math.PI ) / 2 ) + 0.5 ) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ options.orig = options.orig || {};
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ ( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );
+ },
+
+ // Get the current size
+ cur: function() {
+ if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var parsed,
+ r = jQuery.css( this.elem, this.prop );
+ // Empty strings, null, undefined and "auto" are converted to 0,
+ // complex values such as "rotate(1rad)" are returned as is,
+ // simple values such as "10px" are parsed to Float.
+ return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ var self = this,
+ fx = jQuery.fx;
+
+ this.startTime = fxNow || createFxNow();
+ this.end = to;
+ this.now = this.start = from;
+ this.pos = this.state = 0;
+ this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
+
+ function t( gotoEnd ) {
+ return self.step( gotoEnd );
+ }
+
+ t.queue = this.options.queue;
+ t.elem = this.elem;
+ t.saveState = function() {
+ if ( self.options.hide && jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
+ jQuery._data( self.elem, "fxshow" + self.prop, self.start );
+ }
+ };
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval( fx.tick, fx.interval );
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
+
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any flash of content
+ if ( dataShow !== undefined ) {
+ // This show is picking up where a previous hide or show left off
+ this.custom( this.cur(), dataShow );
+ } else {
+ this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
+ }
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom( this.cur(), 0 );
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var p, n, complete,
+ t = fxNow || createFxNow(),
+ done = true,
+ elem = this.elem,
+ options = this.options;
+
+ if ( gotoEnd || t >= options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ options.animatedProperties[ this.prop ] = true;
+
+ for ( p in options.animatedProperties ) {
+ if ( options.animatedProperties[ p ] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ // Reset the overflow
+ if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+
+ jQuery.each( [ "", "X", "Y" ], function( index, value ) {
+ elem.style[ "overflow" + value ] = options.overflow[ index ];
+ });
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( options.hide ) {
+ jQuery( elem ).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( options.hide || options.show ) {
+ for ( p in options.animatedProperties ) {
+ jQuery.style( elem, p, options.orig[ p ] );
+ jQuery.removeData( elem, "fxshow" + p, true );
+ // Toggle data is no longer needed
+ jQuery.removeData( elem, "toggle" + p, true );
+ }
+ }
+
+ // Execute the complete function
+ // in the event that the complete function throws an exception
+ // we must ensure it won't be called twice. #5684
+
+ complete = options.complete;
+ if ( complete ) {
+
+ options.complete = false;
+ complete.call( elem );
+ }
+ }
+
+ return false;
+
+ } else {
+ // classical easing cannot be used with an Infinity duration
+ if ( options.duration == Infinity ) {
+ this.now = t;
+ } else {
+ n = t - this.startTime;
+ this.state = n / options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
+ this.now = this.start + ( (this.end - this.start) * this.pos );
+ }
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ var timer,
+ timers = jQuery.timers,
+ i = 0;
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ interval: 13,
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style( fx.elem, "opacity", fx.now );
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+// Adds width/height step functions
+// Do not set anything below 0
+jQuery.each([ "width", "height" ], function( i, prop ) {
+ jQuery.fx.step[ prop ] = function( fx ) {
+ jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
+ };
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+// Try to restore the default display value of an element
+function defaultDisplay( nodeName ) {
+
+ if ( !elemdisplay[ nodeName ] ) {
+
+ var body = document.body,
+ elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
+ display = elem.css( "display" );
+ elem.remove();
+
+ // If the simple way fails,
+ // get element's real default display by attaching it to a temp iframe
+ if ( display === "none" || display === "" ) {
+ // No iframe to use yet, so create it
+ if ( !iframe ) {
+ iframe = document.createElement( "iframe" );
+ iframe.frameBorder = iframe.width = iframe.height = 0;
+ }
+
+ body.appendChild( iframe );
+
+ // Create a cacheable copy of the iframe document on first call.
+ // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
+ // document to it; WebKit & Firefox won't allow reusing the iframe document.
+ if ( !iframeDoc || !iframe.createElement ) {
+ iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+ iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
+ iframeDoc.close();
+ }
+
+ elem = iframeDoc.createElement( nodeName );
+
+ iframeDoc.body.appendChild( elem );
+
+ display = jQuery.css( elem, "display" );
+ body.removeChild( iframe );
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0], box;
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ var doc = elem.ownerDocument,
+ docElem = doc.documentElement;
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow(doc),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
+ scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ var computedStyle,
+ offsetParent = elem.offsetParent,
+ prevOffsetParent = elem,
+ doc = elem.ownerDocument,
+ docElem = doc.documentElement,
+ body = doc.body,
+ defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop,
+ left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.offset = {
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop,
+ left = body.offsetLeft;
+
+ if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
+
+ jQuery.fn[ method ] = function( val ) {
+ var elem, win;
+
+ if ( val === undefined ) {
+ elem = this[ 0 ];
+
+ if ( !elem ) {
+ return null;
+ }
+
+ win = getWindow( elem );
+
+ // Return the scroll offset
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery( win ).scrollLeft(),
+ i ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+
+
+
+
+// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+ var type = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn[ "inner" + name ] = function() {
+ var elem = this[0];
+ return elem ?
+ elem.style ?
+ parseFloat( jQuery.css( elem, type, "padding" ) ) :
+ this[ type ]() :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn[ "outer" + name ] = function( margin ) {
+ var elem = this[0];
+ return elem ?
+ elem.style ?
+ parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
+ this[ type ]() :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ if ( jQuery.isWindow( elem ) ) {
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+ var docElemProp = elem.document.documentElement[ "client" + name ],
+ body = elem.document.body;
+ return elem.document.compatMode === "CSS1Compat" && docElemProp ||
+ body && body[ "client" + name ] || docElemProp;
+
+ // Get document width or height
+ } else if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ return Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ );
+
+ // Get or set width or height on the element
+ } else if ( size === undefined ) {
+ var orig = jQuery.css( elem, type ),
+ ret = parseFloat( orig );
+
+ return jQuery.isNumeric( ret ) ? ret : orig;
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ } else {
+ return this.css( type, typeof size === "string" ? size : size + "px" );
+ }
+ };
+
+});
+
+
+
+
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+
+// Expose jQuery as an AMD module, but only for AMD loaders that
+// understand the issues with loading multiple versions of jQuery
+// in a page that all might call define(). The loader will indicate
+// they have special allowances for multiple jQuery versions by
+// specifying define.amd.jQuery = true. Register as a named module,
+// since jQuery can be concatenated with other files that may use define,
+// but not use a proper concatenation script that understands anonymous
+// AMD modules. A named AMD is safest and most robust way to register.
+// Lowercase jquery is used because AMD module names are derived from
+// file names, and jQuery is normally delivered in a lowercase file name.
+// Do this after creating the global so that if an AMD module wants to call
+// noConflict to hide this version of jQuery, it will work.
+if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
+ define( "jquery", [], function () { return jQuery; } );
+}
+
+
+
+})( window );
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/ckeditor.js b/sm-shop/src/main/webapp/resources/js/ckeditor/ckeditor.js
new file mode 100755
index 0000000..f3758ea
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/ckeditor.js
@@ -0,0 +1,152 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'C6HH5UF',version:'3.6.4',revision:'7575',rnd:Math.floor(Math.random()*900)+100,_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf(':/')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;if(!d)throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return d;})(),getUrl:function(d){if(d.indexOf(':/')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/'&&!/[&?]t=/.test(d))d+=(d.indexOf('?')>=0?'&':'?')+'t='+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();var a=CKEDITOR;if(!a.event){a.event=function(){};a.event.implementOn=function(b){var c=a.event.prototype;for(var d in c){if(b[d]==undefined)b[d]=c[d];}};a.event.prototype=(function(){var b=function(d){var e=d.getPrivate&&d.getPrivate()||d._||(d._={});return e.events||(e.events={});},c=function(d){this.name=d;this.listeners=[];};c.prototype={getListenerIndex:function(d){for(var e=0,f=this.listeners;e<f.length;e++){if(f[e].fn==d)return e;}return-1;}};return{on:function(d,e,f,g,h){var i=b(this),j=i[d]||(i[d]=new c(d));if(j.getListenerIndex(e)<0){var k=j.listeners;if(!f)f=this;if(isNaN(h))h=10;var l=this,m=function(o,p,q,r){var s={name:d,sender:this,editor:o,data:p,listenerData:g,stop:q,cancel:r,removeListener:function(){l.removeListener(d,e);}};e.call(f,s);return s.data;};m.fn=e;m.priority=h;for(var n=k.length-1;n>=0;n--){if(k[n].priority<=h){k.splice(n+1,0,m);return;}}k.unshift(m);}},fire:(function(){var d=false,e=function(){d=true;},f=false,g=function(){f=true;};return function(h,i,j){var k=b(this)[h],l=d,m=f;d=f=false;if(k){var n=k.listeners;if(n.length){n=n.slice(0);for(var o=0;o<n.length;o++){var p=n[o].call(this,j,i,e,g);if(typeof p!='undefined')i=p;if(d||f)break;}}}var q=f||(typeof i=='undefined'?false:i);d=l;f=m;return q;};})(),fireOnce:function(d,e,f){var g=this.fire(d,e,f);delete b(this)[d];return g;},removeListener:function(d,e){var f=b(this)[d];if(f){var g=f.getListenerIndex(e);
+if(g>=0)f.listeners.splice(g,1);}},hasListeners:function(d){var e=b(this)[d];return e&&e.listeners.length>0;}};})();}if(!a.editor){a.ELEMENT_MODE_NONE=0;a.ELEMENT_MODE_REPLACE=1;a.ELEMENT_MODE_APPENDTO=2;a.editor=function(b,c,d,e){var f=this;f._={instanceConfig:b,element:c,data:e};f.elementMode=d||0;a.event.call(f);f._init();};a.editor.replace=function(b,c){var d=b;if(typeof d!='object'){d=document.getElementById(b);if(d&&d.tagName.toLowerCase() in {style:1,script:1,base:1,link:1,meta:1,title:1})d=null;if(!d){var e=0,f=document.getElementsByName(b);while((d=f[e++])&&d.tagName.toLowerCase()!='textarea'){}}if(!d)throw '[CKEDITOR.editor.replace] The element with id or name "'+b+'" was not found.';}d.style.visibility='hidden';return new a.editor(c,d,1);};a.editor.appendTo=function(b,c,d){var e=b;if(typeof e!='object'){e=document.getElementById(b);if(!e)throw '[CKEDITOR.editor.appendTo] The element with id "'+b+'" was not found.';}return new a.editor(c,e,2,d);};a.editor.prototype={_init:function(){var b=a.editor._pending||(a.editor._pending=[]);b.push(this);},fire:function(b,c){return a.event.prototype.fire.call(this,b,c,this);},fireOnce:function(b,c){return a.event.prototype.fireOnce.call(this,b,c,this);}};a.event.implementOn(a.editor.prototype,true);}if(!a.env)a.env=(function(){var b=navigator.userAgent.toLowerCase(),c=window.opera,d={ie:/*@cc_on!@*/false,opera:!!c&&c.version,webkit:b.indexOf(' applewebkit/')>-1,air:b.indexOf(' adobeair/')>-1,mac:b.indexOf('macintosh')>-1,quirks:document.compatMode=='BackCompat',mobile:b.indexOf('mobile')>-1,iOS:/(ipad|iphone|ipod)/.test(b),isCustomDomain:function(){if(!this.ie)return false;var g=document.domain,h=window.location.hostname;return g!=h&&g!='['+h+']';},secure:location.protocol=='https:'};d.gecko=navigator.product=='Gecko'&&!d.webkit&&!d.opera;var e=0;if(d.ie){e=parseFloat(b.match(/msie (\d+)/)[1]);d.ie8=!!document.documentMode;d.ie8Compat=document.documentMode==8;d.ie9Compat=document.documentMode==9;d.ie7Compat=e==7&&!document.documentMode||document.documentMode==7;d.ie6Compat=e<7||d.quirks;}if(d.gecko){var f=b.match(/rv:([\d\.]+)/);if(f){f=f[1].split('.');e=f[0]*10000+(f[1]||0)*100+ +(f[2]||0);}}if(d.opera)e=parseFloat(c.version());if(d.air)e=parseFloat(b.match(/ adobeair\/(\d+)/)[1]);if(d.webkit)e=parseFloat(b.match(/ applewebkit\/(\d+)/)[1]);d.version=e;d.isCompatible=d.iOS&&e>=534||!d.mobile&&(d.ie&&e>=6||d.gecko&&e>=10801||d.opera&&e>=9.5||d.air&&e>=1||d.webkit&&e>=522||false);d.cssClass='cke_browser_'+(d.ie?'ie':d.gecko?'gecko':d.opera?'opera':d.webkit?'webkit':'unknown');
+if(d.quirks)d.cssClass+=' cke_browser_quirks';if(d.ie){d.cssClass+=' cke_browser_ie'+(d.version<7?'6':d.version>=8?document.documentMode:'7');if(d.quirks)d.cssClass+=' cke_browser_iequirks';}if(d.gecko&&e<10900)d.cssClass+=' cke_browser_gecko18';if(d.air)d.cssClass+=' cke_browser_air';return d;})();var b=a.env;var c=b.ie;if(a.status=='unloaded')(function(){a.event.implementOn(a);a.loadFullCore=function(){if(a.status!='basic_ready'){a.loadFullCore._load=1;return;}delete a.loadFullCore;var e=document.createElement('script');e.type='text/javascript';e.src=a.basePath+'ckeditor.js';document.getElementsByTagName('head')[0].appendChild(e);};a.loadFullCoreTimeout=0;a.replaceClass='ckeditor';a.replaceByClassEnabled=1;var d=function(e,f,g,h){if(b.isCompatible){if(a.loadFullCore)a.loadFullCore();var i=g(e,f,h);a.add(i);return i;}return null;};a.replace=function(e,f){return d(e,f,a.editor.replace);};a.appendTo=function(e,f,g){return d(e,f,a.editor.appendTo,g);};a.add=function(e){var f=this._.pending||(this._.pending=[]);f.push(e);};a.replaceAll=function(){var e=document.getElementsByTagName('textarea');for(var f=0;f<e.length;f++){var g=null,h=e[f];if(!h.name&&!h.id)continue;if(typeof arguments[0]=='string'){var i=new RegExp('(?:^|\\s)'+arguments[0]+'(?:$|\\s)');if(!i.test(h.className))continue;}else if(typeof arguments[0]=='function'){g={};if(arguments[0](h,g)===false)continue;}this.replace(h,g);}};(function(){var e=function(){var f=a.loadFullCore,g=a.loadFullCoreTimeout;if(a.replaceByClassEnabled)a.replaceAll(a.replaceClass);a.status='basic_ready';if(f&&f._load)f();else if(g)setTimeout(function(){if(a.loadFullCore)a.loadFullCore();},g*1000);};if(window.addEventListener)window.addEventListener('load',e,false);else if(window.attachEvent)window.attachEvent('onload',e);})();a.status='basic_loaded';})();a.dom={};var d=a.dom;(function(){var e=[];a.on('reset',function(){e=[];});a.tools={arrayCompare:function(f,g){if(!f&&!g)return true;if(!f||!g||f.length!=g.length)return false;for(var h=0;h<f.length;h++){if(f[h]!=g[h])return false;}return true;},clone:function(f){var g;if(f&&f instanceof Array){g=[];for(var h=0;h<f.length;h++)g[h]=this.clone(f[h]);return g;}if(f===null||typeof f!='object'||f instanceof String||f instanceof Number||f instanceof Boolean||f instanceof Date||f instanceof RegExp)return f;g=new f.constructor();for(var i in f){var j=f[i];g[i]=this.clone(j);}return g;},capitalize:function(f){return f.charAt(0).toUpperCase()+f.substring(1).toLowerCase();},extend:function(f){var g=arguments.length,h,i;
+if(typeof (h=arguments[g-1])=='boolean')g--;else if(typeof (h=arguments[g-2])=='boolean'){i=arguments[g-1];g-=2;}for(var j=1;j<g;j++){var k=arguments[j];for(var l in k){if(h===true||f[l]==undefined)if(!i||l in i)f[l]=k[l];}}return f;},prototypedCopy:function(f){var g=function(){};g.prototype=f;return new g();},isArray:function(f){return!!f&&f instanceof Array;},isEmpty:function(f){for(var g in f){if(f.hasOwnProperty(g))return false;}return true;},cssStyleToDomStyle:(function(){var f=document.createElement('div').style,g=typeof f.cssFloat!='undefined'?'cssFloat':typeof f.styleFloat!='undefined'?'styleFloat':'float';return function(h){if(h=='float')return g;else return h.replace(/-./g,function(i){return i.substr(1).toUpperCase();});};})(),buildStyleHtml:function(f){f=[].concat(f);var g,h=[];for(var i=0;i<f.length;i++){g=f[i];if(/@import|[{}]/.test(g))h.push('<style>'+g+'</style>');else h.push('<link type="text/css" rel=stylesheet href="'+g+'">');}return h.join('');},htmlEncode:function(f){var g=function(k){var l=new d.element('span');l.setText(k);return l.getHtml();},h=g('\n').toLowerCase()=='<br>'?function(k){return g(k).replace(/<br>/gi,'\n');}:g,i=g('>')=='>'?function(k){return h(k).replace(/>/g,'>');}:h,j=g(' ')==' '?function(k){return i(k).replace(/ /g,' ');}:i;this.htmlEncode=j;return this.htmlEncode(f);},htmlEncodeAttr:function(f){return f.replace(/"/g,'"').replace(/</g,'<').replace(/>/g,'>');},getNextNumber:(function(){var f=0;return function(){return++f;};})(),getNextId:function(){return 'cke_'+this.getNextNumber();},override:function(f,g){return g(f);},setTimeout:function(f,g,h,i,j){if(!j)j=window;if(!h)h=j;return j.setTimeout(function(){if(i)f.apply(h,[].concat(i));else f.apply(h);},g||0);},trim:(function(){var f=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(g){return g.replace(f,'');};})(),ltrim:(function(){var f=/^[ \t\n\r]+/g;return function(g){return g.replace(f,'');};})(),rtrim:(function(){var f=/[ \t\n\r]+$/g;return function(g){return g.replace(f,'');};})(),indexOf:Array.prototype.indexOf?function(f,g){return f.indexOf(g);}:function(f,g){for(var h=0,i=f.length;h<i;h++){if(f[h]===g)return h;}return-1;},bind:function(f,g){return function(){return f.apply(g,arguments);};},createClass:function(f){var g=f.$,h=f.base,i=f.privates||f._,j=f.proto,k=f.statics;if(i){var l=g;g=function(){var p=this;var m=p._||(p._={});for(var n in i){var o=i[n];m[n]=typeof o=='function'?a.tools.bind(o,p):o;}l.apply(p,arguments);};}if(h){g.prototype=this.prototypedCopy(h.prototype);
+g.prototype['constructor']=g;g.prototype.base=function(){this.base=h.prototype.base;h.apply(this,arguments);this.base=arguments.callee;};}if(j)this.extend(g.prototype,j,true);if(k)this.extend(g,k,true);return g;},addFunction:function(f,g){return e.push(function(){return f.apply(g||this,arguments);})-1;},removeFunction:function(f){e[f]=null;},callFunction:function(f){var g=e[f];return g&&g.apply(window,Array.prototype.slice.call(arguments,1));},cssLength:(function(){return function(f){return f+(!f||isNaN(Number(f))?'':'px');};})(),convertToPx:(function(){var f;return function(g){if(!f){f=d.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"></div>',a.document);a.document.getBody().append(f);}if(!/%$/.test(g)){f.setStyle('width',g);return f.$.clientWidth;}return g;};})(),repeat:function(f,g){return new Array(g+1).join(f);},tryThese:function(){var f;for(var g=0,h=arguments.length;g<h;g++){var i=arguments[g];try{f=i();break;}catch(j){}}return f;},genKey:function(){return Array.prototype.slice.call(arguments).join('-');}};})();var e=a.tools;a.dtd=(function(){var f=e.extend,g={isindex:1,fieldset:1},h={input:1,button:1,select:1,textarea:1,label:1},i=f({a:1},h),j=f({iframe:1},i),k={hr:1,ul:1,menu:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1},l={ins:1,del:1,script:1,style:1},m=f({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1,wbr:1},l),n=f({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1,mark:1},m),o=f({p:1},n),p=f({iframe:1},n,h),q={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1},r=f({a:1},p),s={tr:1},t={'#':1},u=f({param:1},q),v=f({form:1},g,j,k,o),w={li:1},x={style:1,script:1},y={base:1,link:1,meta:1,title:1},z=f(y,x),A={head:1,body:1},B={html:1},C={address:1,blockquote:1,center:1,dir:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1};
+return{$nonBodyContent:f(B,A,y),$block:C,$blockLimit:{body:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,td:1,th:1,caption:1,form:1},$inline:r,$body:f({script:1,style:1},C),$cdata:{script:1,style:1},$empty:{area:1,base:1,br:1,col:1,hr:1,img:1,input:1,link:1,meta:1,param:1,wbr:1},$listItem:{dd:1,dt:1,li:1},$list:{ul:1,ol:1,dl:1},$nonEditable:{applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1,param:1,audio:1,video:1},$captionBlock:{caption:1,legend:1},$removeEmpty:{abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1,mark:1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},html:A,head:z,style:t,script:t,body:v,base:{},link:{},meta:{},title:t,col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:v,td:v,br:{},wbr:{},th:v,center:v,kbd:r,button:f(o,k),basefont:{},h5:r,h4:r,samp:r,h6:r,ol:w,h1:r,h3:r,option:t,h2:r,form:f(g,j,k,o),select:{optgroup:1,option:1},font:r,ins:r,menu:w,abbr:r,label:r,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:r,tfoot:s,cite:r,li:v,input:{},iframe:v,strong:r,textarea:t,noframes:v,big:r,small:r,span:r,hr:{},dt:r,sub:r,optgroup:{option:1},param:{},bdo:r,'var':r,div:v,object:u,sup:r,dd:v,strike:r,area:{},dir:w,map:f({area:1,form:1,p:1},g,l,k),applet:u,dl:{dt:1,dd:1},del:r,isindex:{},fieldset:f({legend:1},q),thead:s,ul:w,acronym:r,b:r,a:p,blockquote:v,caption:r,i:r,u:r,tbody:s,s:r,address:f(j,o),tt:r,legend:r,q:r,pre:f(m,i),p:r,em:r,dfn:r,section:v,header:v,footer:v,nav:v,article:v,aside:v,figure:v,dialog:v,hgroup:v,mark:r,time:r,meter:r,menu:r,command:r,keygen:r,output:r,progress:u,audio:u,video:u,details:u,datagrid:u,datalist:u};})();var f=a.dtd;d.event=function(g){this.$=g;};d.event.prototype={getKey:function(){return this.$.keyCode||this.$.which;},getKeystroke:function(){var h=this;var g=h.getKey();if(h.$.ctrlKey||h.$.metaKey)g+=1114112;if(h.$.shiftKey)g+=2228224;if(h.$.altKey)g+=4456448;return g;},preventDefault:function(g){var h=this.$;if(h.preventDefault)h.preventDefault();else h.returnValue=false;if(g)this.stopPropagation();},stopPropagation:function(){var g=this.$;if(g.stopPropagation)g.stopPropagation();else g.cancelBubble=true;
+},getTarget:function(){var g=this.$.target||this.$.srcElement;return g?new d.node(g):null;}};a.CTRL=1114112;a.SHIFT=2228224;a.ALT=4456448;d.domObject=function(g){if(g)this.$=g;};d.domObject.prototype=(function(){var g=function(h,i){return function(j){if(typeof a!='undefined')h.fire(i,new d.event(j));};};return{getPrivate:function(){var h;if(!(h=this.getCustomData('_')))this.setCustomData('_',h={});return h;},on:function(h){var k=this;var i=k.getCustomData('_cke_nativeListeners');if(!i){i={};k.setCustomData('_cke_nativeListeners',i);}if(!i[h]){var j=i[h]=g(k,h);if(k.$.addEventListener)k.$.addEventListener(h,j,!!a.event.useCapture);else if(k.$.attachEvent)k.$.attachEvent('on'+h,j);}return a.event.prototype.on.apply(k,arguments);},removeListener:function(h){var k=this;a.event.prototype.removeListener.apply(k,arguments);if(!k.hasListeners(h)){var i=k.getCustomData('_cke_nativeListeners'),j=i&&i[h];if(j){if(k.$.removeEventListener)k.$.removeEventListener(h,j,false);else if(k.$.detachEvent)k.$.detachEvent('on'+h,j);delete i[h];}}},removeAllListeners:function(){var k=this;var h=k.getCustomData('_cke_nativeListeners');for(var i in h){var j=h[i];if(k.$.detachEvent)k.$.detachEvent('on'+i,j);else if(k.$.removeEventListener)k.$.removeEventListener(i,j,false);delete h[i];}}};})();(function(g){var h={};a.on('reset',function(){h={};});g.equals=function(i){return i&&i.$===this.$;};g.setCustomData=function(i,j){var k=this.getUniqueId(),l=h[k]||(h[k]={});l[i]=j;return this;};g.getCustomData=function(i){var j=this.$['data-cke-expando'],k=j&&h[j];return k&&k[i];};g.removeCustomData=function(i){var j=this.$['data-cke-expando'],k=j&&h[j],l=k&&k[i];if(typeof l!='undefined')delete k[i];return l||null;};g.clearCustomData=function(){this.removeAllListeners();var i=this.$['data-cke-expando'];i&&delete h[i];};g.getUniqueId=function(){return this.$['data-cke-expando']||(this.$['data-cke-expando']=e.getNextNumber());};a.event.implementOn(g);})(d.domObject.prototype);d.window=function(g){d.domObject.call(this,g);};d.window.prototype=new d.domObject();e.extend(d.window.prototype,{focus:function(){if(b.webkit&&this.$.parent)this.$.parent.focus();this.$.focus();},getViewPaneSize:function(){var g=this.$.document,h=g.compatMode=='CSS1Compat';return{width:(h?g.documentElement.clientWidth:g.body.clientWidth)||0,height:(h?g.documentElement.clientHeight:g.body.clientHeight)||0};},getScrollPosition:function(){var g=this.$;if('pageXOffset' in g)return{x:g.pageXOffset||0,y:g.pageYOffset||0};else{var h=g.document;
+return{x:h.documentElement.scrollLeft||h.body.scrollLeft||0,y:h.documentElement.scrollTop||h.body.scrollTop||0};}}});d.document=function(g){d.domObject.call(this,g);};var g=d.document;g.prototype=new d.domObject();e.extend(g.prototype,{appendStyleSheet:function(h){if(this.$.createStyleSheet)this.$.createStyleSheet(h);else{var i=new d.element('link');i.setAttributes({rel:'stylesheet',type:'text/css',href:h});this.getHead().append(i);}},appendStyleText:function(h){var k=this;if(k.$.createStyleSheet){var i=k.$.createStyleSheet('');i.cssText=h;}else{var j=new d.element('style',k);j.append(new d.text(h,k));k.getHead().append(j);}},createElement:function(h,i){var j=new d.element(h,this);if(i){if(i.attributes)j.setAttributes(i.attributes);if(i.styles)j.setStyles(i.styles);}return j;},createText:function(h){return new d.text(h,this);},focus:function(){this.getWindow().focus();},getById:function(h){var i=this.$.getElementById(h);return i?new d.element(i):null;},getByAddress:function(h,i){var j=this.$.documentElement;for(var k=0;j&&k<h.length;k++){var l=h[k];if(!i){j=j.childNodes[l];continue;}var m=-1;for(var n=0;n<j.childNodes.length;n++){var o=j.childNodes[n];if(i===true&&o.nodeType==3&&o.previousSibling&&o.previousSibling.nodeType==3)continue;m++;if(m==l){j=o;break;}}}return j?new d.node(j):null;},getElementsByTag:function(h,i){if(!(c&&!(document.documentMode>8))&&i)h=i+':'+h;return new d.nodeList(this.$.getElementsByTagName(h));},getHead:function(){var h=this.$.getElementsByTagName('head')[0];if(!h)h=this.getDocumentElement().append(new d.element('head'),true);else h=new d.element(h);return(this.getHead=function(){return h;})();},getBody:function(){var h=new d.element(this.$.body);return(this.getBody=function(){return h;})();},getDocumentElement:function(){var h=new d.element(this.$.documentElement);return(this.getDocumentElement=function(){return h;})();},getWindow:function(){var h=new d.window(this.$.parentWindow||this.$.defaultView);return(this.getWindow=function(){return h;})();},write:function(h){var i=this;i.$.open('text/html','replace');b.isCustomDomain()&&(i.$.domain=document.domain);i.$.write(h);i.$.close();}});d.node=function(h){if(h){var i=h.nodeType==9?'document':h.nodeType==1?'element':h.nodeType==3?'text':h.nodeType==8?'comment':'domObject';return new d[i](h);}return this;};d.node.prototype=new d.domObject();a.NODE_ELEMENT=1;a.NODE_DOCUMENT=9;a.NODE_TEXT=3;a.NODE_COMMENT=8;a.NODE_DOCUMENT_FRAGMENT=11;a.POSITION_IDENTICAL=0;a.POSITION_DISCONNECTED=1;
+a.POSITION_FOLLOWING=2;a.POSITION_PRECEDING=4;a.POSITION_IS_CONTAINED=8;a.POSITION_CONTAINS=16;e.extend(d.node.prototype,{appendTo:function(h,i){h.append(this,i);return h;},clone:function(h,i){var j=this.$.cloneNode(h),k=function(l){if(l.nodeType!=1)return;if(!i)l.removeAttribute('id',false);l.removeAttribute('data-cke-expando',false);if(h){var m=l.childNodes;for(var n=0;n<m.length;n++)k(m[n]);}};k(j);return new d.node(j);},hasPrevious:function(){return!!this.$.previousSibling;},hasNext:function(){return!!this.$.nextSibling;},insertAfter:function(h){h.$.parentNode.insertBefore(this.$,h.$.nextSibling);return h;},insertBefore:function(h){h.$.parentNode.insertBefore(this.$,h.$);return h;},insertBeforeMe:function(h){this.$.parentNode.insertBefore(h.$,this.$);return h;},getAddress:function(h){var i=[],j=this.getDocument().$.documentElement,k=this.$;while(k&&k!=j){var l=k.parentNode;if(l)i.unshift(this.getIndex.call({$:k},h));k=l;}return i;},getDocument:function(){return new g(this.$.ownerDocument||this.$.parentNode.ownerDocument);},getIndex:function(h){var i=this.$,j=0;while(i=i.previousSibling){if(h&&i.nodeType==3&&(!i.nodeValue.length||i.previousSibling&&i.previousSibling.nodeType==3))continue;j++;}return j;},getNextSourceNode:function(h,i,j){if(j&&!j.call){var k=j;j=function(n){return!n.equals(k);};}var l=!h&&this.getFirst&&this.getFirst(),m;if(!l){if(this.type==1&&j&&j(this,true)===false)return null;l=this.getNext();}while(!l&&(m=(m||this).getParent())){if(j&&j(m,true)===false)return null;l=m.getNext();}if(!l)return null;if(j&&j(l)===false)return null;if(i&&i!=l.type)return l.getNextSourceNode(false,i,j);return l;},getPreviousSourceNode:function(h,i,j){if(j&&!j.call){var k=j;j=function(n){return!n.equals(k);};}var l=!h&&this.getLast&&this.getLast(),m;if(!l){if(this.type==1&&j&&j(this,true)===false)return null;l=this.getPrevious();}while(!l&&(m=(m||this).getParent())){if(j&&j(m,true)===false)return null;l=m.getPrevious();}if(!l)return null;if(j&&j(l)===false)return null;if(i&&l.type!=i)return l.getPreviousSourceNode(false,i,j);return l;},getPrevious:function(h){var i=this.$,j;do{i=i.previousSibling;j=i&&i.nodeType!=10&&new d.node(i);}while(j&&h&&!h(j));return j;},getNext:function(h){var i=this.$,j;do{i=i.nextSibling;j=i&&new d.node(i);}while(j&&h&&!h(j));return j;},getParent:function(){var h=this.$.parentNode;return h&&h.nodeType==1?new d.node(h):null;},getParents:function(h){var i=this,j=[];do j[h?'push':'unshift'](i);while(i=i.getParent());return j;},getCommonAncestor:function(h){var j=this;
+if(h.equals(j))return j;if(h.contains&&h.contains(j))return h;var i=j.contains?j:j.getParent();do{if(i.contains(h))return i;}while(i=i.getParent());return null;},getPosition:function(h){var i=this.$,j=h.$;if(i.compareDocumentPosition)return i.compareDocumentPosition(j);if(i==j)return 0;if(this.type==1&&h.type==1){if(i.contains){if(i.contains(j))return 16+4;if(j.contains(i))return 8+2;}if('sourceIndex' in i)return i.sourceIndex<0||j.sourceIndex<0?1:i.sourceIndex<j.sourceIndex?4:2;}var k=this.getAddress(),l=h.getAddress(),m=Math.min(k.length,l.length);for(var n=0;n<=m-1;n++){if(k[n]!=l[n]){if(n<m)return k[n]<l[n]?4:2;break;}}return k.length<l.length?16+4:8+2;},getAscendant:function(h,i){var j=this.$,k;if(!i)j=j.parentNode;while(j){if(j.nodeName&&(k=j.nodeName.toLowerCase(),typeof h=='string'?k==h:k in h))return new d.node(j);j=j.parentNode;}return null;},hasAscendant:function(h,i){var j=this.$;if(!i)j=j.parentNode;while(j){if(j.nodeName&&j.nodeName.toLowerCase()==h)return true;j=j.parentNode;}return false;},move:function(h,i){h.append(this.remove(),i);},remove:function(h){var i=this.$,j=i.parentNode;if(j){if(h)for(var k;k=i.firstChild;)j.insertBefore(i.removeChild(k),i);j.removeChild(i);}return this;},replace:function(h){this.insertBefore(h);h.remove();},trim:function(){this.ltrim();this.rtrim();},ltrim:function(){var k=this;var h;while(k.getFirst&&(h=k.getFirst())){if(h.type==3){var i=e.ltrim(h.getText()),j=h.getLength();if(!i){h.remove();continue;}else if(i.length<j){h.split(j-i.length);k.$.removeChild(k.$.firstChild);}}break;}},rtrim:function(){var k=this;var h;while(k.getLast&&(h=k.getLast())){if(h.type==3){var i=e.rtrim(h.getText()),j=h.getLength();if(!i){h.remove();continue;}else if(i.length<j){h.split(i.length);k.$.lastChild.parentNode.removeChild(k.$.lastChild);}}break;}if(!c&&!b.opera){h=k.$.lastChild;if(h&&h.type==1&&h.nodeName.toLowerCase()=='br')h.parentNode.removeChild(h);}},isReadOnly:function(){var h=this;if(this.type!=1)h=this.getParent();if(h&&typeof h.$.isContentEditable!='undefined')return!(h.$.isContentEditable||h.data('cke-editable'));else{var i=h;while(i){if(i.is('body')||!!i.data('cke-editable'))break;if(i.getAttribute('contentEditable')=='false')return true;else if(i.getAttribute('contentEditable')=='true')break;i=i.getParent();}return false;}}});d.nodeList=function(h){this.$=h;};d.nodeList.prototype={count:function(){return this.$.length;},getItem:function(h){var i=this.$[h];return i?new d.node(i):null;}};d.element=function(h,i){if(typeof h=='string')h=(i?i.$:document).createElement(h);
+d.domObject.call(this,h);};var h=d.element;h.get=function(i){return i&&(i.$?i:new h(i));};h.prototype=new d.node();h.createFromHtml=function(i,j){var k=new h('div',j);k.setHtml(i);return k.getFirst().remove();};h.setMarker=function(i,j,k,l){var m=j.getCustomData('list_marker_id')||j.setCustomData('list_marker_id',e.getNextNumber()).getCustomData('list_marker_id'),n=j.getCustomData('list_marker_names')||j.setCustomData('list_marker_names',{}).getCustomData('list_marker_names');i[m]=j;n[k]=1;return j.setCustomData(k,l);};h.clearAllMarkers=function(i){for(var j in i)h.clearMarkers(i,i[j],1);};h.clearMarkers=function(i,j,k){var l=j.getCustomData('list_marker_names'),m=j.getCustomData('list_marker_id');for(var n in l)j.removeCustomData(n);j.removeCustomData('list_marker_names');if(k){j.removeCustomData('list_marker_id');delete i[m];}};e.extend(h.prototype,{type:1,addClass:function(i){var j=this.$.className;if(j){var k=new RegExp('(?:^|\\s)'+i+'(?:\\s|$)','');if(!k.test(j))j+=' '+i;}this.$.className=j||i;},removeClass:function(i){var j=this.getAttribute('class');if(j){var k=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','i');if(k.test(j)){j=j.replace(k,'').replace(/^\s+/,'');if(j)this.setAttribute('class',j);else this.removeAttribute('class');}}},hasClass:function(i){var j=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','');return j.test(this.getAttribute('class'));},append:function(i,j){var k=this;if(typeof i=='string')i=k.getDocument().createElement(i);if(j)k.$.insertBefore(i.$,k.$.firstChild);else k.$.appendChild(i.$);return i;},appendHtml:function(i){var k=this;if(!k.$.childNodes.length)k.setHtml(i);else{var j=new h('div',k.getDocument());j.setHtml(i);j.moveChildren(k);}},appendText:function(i){if(this.$.text!=undefined)this.$.text+=i;else this.append(new d.text(i));},appendBogus:function(){var k=this;var i=k.getLast();while(i&&i.type==3&&!e.rtrim(i.getText()))i=i.getPrevious();if(!i||!i.is||!i.is('br')){var j=b.opera?k.getDocument().createText(''):k.getDocument().createElement('br');b.gecko&&j.setAttribute('type','_moz');k.append(j);}},breakParent:function(i){var l=this;var j=new d.range(l.getDocument());j.setStartAfter(l);j.setEndAfter(i);var k=j.extractContents();j.insertNode(l.remove());k.insertAfterNode(l);},contains:c||b.webkit?function(i){var j=this.$;return i.type!=1?j.contains(i.getParent().$):j!=i.$&&j.contains(i.$);}:function(i){return!!(this.$.compareDocumentPosition(i.$)&16);},focus:(function(){function i(){try{this.$.focus();}catch(j){}};return function(j){if(j)e.setTimeout(i,100,this);
+else i.call(this);};})(),getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;},getOuterHtml:function(){var j=this;if(j.$.outerHTML)return j.$.outerHTML.replace(/<\?[^>]*>/,'');var i=j.$.ownerDocument.createElement('div');i.appendChild(j.$.cloneNode(true));return i.innerHTML;},setHtml:function(i){return this.$.innerHTML=i;},setText:function(i){h.prototype.setText=this.$.innerText!=undefined?function(j){return this.$.innerText=j;}:function(j){return this.$.textContent=j;};return this.setText(i);},getAttribute:(function(){var i=function(j){return this.$.getAttribute(j,2);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){var n=this;switch(j){case 'class':j='className';break;case 'http-equiv':j='httpEquiv';break;case 'name':return n.$.name;case 'tabindex':var k=i.call(n,j);if(k!==0&&n.$.tabIndex===0)k=null;return k;break;case 'checked':var l=n.$.attributes.getNamedItem(j),m=l.specified?l.nodeValue:n.$.checked;return m?'checked':null;case 'hspace':case 'value':return n.$[j];case 'style':return n.$.style.cssText;case 'contenteditable':case 'contentEditable':return n.$.attributes.getNamedItem('contentEditable').specified?n.$.getAttribute('contentEditable'):null;}return i.call(n,j);};else return i;})(),getChildren:function(){return new d.nodeList(this.$.childNodes);},getComputedStyle:c?function(i){return this.$.currentStyle[e.cssStyleToDomStyle(i)];}:function(i){return this.getWindow().$.getComputedStyle(this.$,'').getPropertyValue(i);},getDtd:function(){var i=f[this.getName()];this.getDtd=function(){return i;};return i;},getElementsByTag:g.prototype.getElementsByTag,getTabIndex:c?function(){var i=this.$.tabIndex;if(i===0&&!f.$tabIndex[this.getName()]&&parseInt(this.getAttribute('tabindex'),10)!==0)i=-1;return i;}:b.webkit?function(){var i=this.$.tabIndex;if(i==undefined){i=parseInt(this.getAttribute('tabindex'),10);if(isNaN(i))i=-1;}return i;}:function(){return this.$.tabIndex;},getText:function(){return this.$.textContent||this.$.innerText||'';},getWindow:function(){return this.getDocument().getWindow();},getId:function(){return this.$.id||null;},getNameAtt:function(){return this.$.name||null;},getName:function(){var i=this.$.nodeName.toLowerCase();if(c&&!(document.documentMode>8)){var j=this.$.scopeName;if(j!='HTML')i=j.toLowerCase()+':'+i;}return(this.getName=function(){return i;})();},getValue:function(){return this.$.value;},getFirst:function(i){var j=this.$.firstChild,k=j&&new d.node(j);if(k&&i&&!i(k))k=k.getNext(i);return k;},getLast:function(i){var j=this.$.lastChild,k=j&&new d.node(j);
+if(k&&i&&!i(k))k=k.getPrevious(i);return k;},getStyle:function(i){return this.$.style[e.cssStyleToDomStyle(i)];},is:function(){var i=this.getName();for(var j=0;j<arguments.length;j++){if(arguments[j]==i)return true;}return false;},isEditable:function(i){var l=this;var j=l.getName();if(l.isReadOnly()||l.getComputedStyle('display')=='none'||l.getComputedStyle('visibility')=='hidden'||l.is('a')&&l.data('cke-saved-name')&&!l.getChildCount()||f.$nonEditable[j]||f.$empty[j])return false;if(i!==false){var k=f[j]||f.span;return k&&k['#'];}return true;},isIdentical:function(i){if(this.getName()!=i.getName())return false;var j=this.$.attributes,k=i.$.attributes,l=j.length,m=k.length;for(var n=0;n<l;n++){var o=j[n];if(o.nodeName=='_moz_dirty')continue;if((!c||o.specified&&o.nodeName!='data-cke-expando')&&o.nodeValue!=i.getAttribute(o.nodeName))return false;}if(c)for(n=0;n<m;n++){o=k[n];if(o.specified&&o.nodeName!='data-cke-expando'&&o.nodeValue!=this.getAttribute(o.nodeName))return false;}return true;},isVisible:function(){var l=this;var i=(l.$.offsetHeight||l.$.offsetWidth)&&l.getComputedStyle('visibility')!='hidden',j,k;if(i&&(b.webkit||b.opera)){j=l.getWindow();if(!j.equals(a.document.getWindow())&&(k=j.$.frameElement))i=new h(k).isVisible();}return!!i;},isEmptyInlineRemoveable:function(){if(!f.$removeEmpty[this.getName()])return false;var i=this.getChildren();for(var j=0,k=i.count();j<k;j++){var l=i.getItem(j);if(l.type==1&&l.data('cke-bookmark'))continue;if(l.type==1&&!l.isEmptyInlineRemoveable()||l.type==3&&e.trim(l.getText()))return false;}return true;},hasAttributes:c&&(b.ie7Compat||b.ie6Compat)?function(){var i=this.$.attributes;for(var j=0;j<i.length;j++){var k=i[j];switch(k.nodeName){case 'class':if(this.getAttribute('class'))return true;case 'data-cke-expando':continue;default:if(k.specified)return true;}}return false;}:function(){var i=this.$.attributes,j=i.length,k={'data-cke-expando':1,_moz_dirty:1};return j>0&&(j>2||!k[i[0].nodeName]||j==2&&!k[i[1].nodeName]);},hasAttribute:(function(){function i(j){var k=this.$.attributes.getNamedItem(j);return!!(k&&k.specified);};return c&&b.version<8?function(j){if(j=='name')return!!this.$.name;return i.call(this,j);}:i;})(),hide:function(){this.setStyle('display','none');},moveChildren:function(i,j){var k=this.$;i=i.$;if(k==i)return;var l;if(j)while(l=k.lastChild)i.insertBefore(k.removeChild(l),i.firstChild);else while(l=k.firstChild)i.appendChild(k.removeChild(l));},mergeSiblings:(function(){function i(j,k,l){if(k&&k.type==1){var m=[];
+while(k.data('cke-bookmark')||k.isEmptyInlineRemoveable()){m.push(k);k=l?k.getNext():k.getPrevious();if(!k||k.type!=1)return;}if(j.isIdentical(k)){var n=l?j.getLast():j.getFirst();while(m.length)m.shift().move(j,!l);k.moveChildren(j,!l);k.remove();if(n&&n.type==1)n.mergeSiblings();}}};return function(j){var k=this;if(!(j===false||f.$removeEmpty[k.getName()]||k.is('a')))return;i(k,k.getNext(),true);i(k,k.getPrevious());};})(),show:function(){this.setStyles({display:'',visibility:''});},setAttribute:(function(){var i=function(j,k){this.$.setAttribute(j,k);return this;};if(c&&(b.ie7Compat||b.ie6Compat))return function(j,k){var l=this;if(j=='class')l.$.className=k;else if(j=='style')l.$.style.cssText=k;else if(j=='tabindex')l.$.tabIndex=k;else if(j=='checked')l.$.checked=k;else if(j=='contenteditable')i.call(l,'contentEditable',k);else i.apply(l,arguments);return l;};else if(b.ie8Compat&&b.secure)return function(j,k){if(j=='src'&&k.match(/^http:\/\//))try{i.apply(this,arguments);}catch(l){}else i.apply(this,arguments);return this;};else return i;})(),setAttributes:function(i){for(var j in i)this.setAttribute(j,i[j]);return this;},setValue:function(i){this.$.value=i;return this;},removeAttribute:(function(){var i=function(j){this.$.removeAttribute(j);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){if(j=='class')j='className';else if(j=='tabindex')j='tabIndex';else if(j=='contenteditable')j='contentEditable';i.call(this,j);};else return i;})(),removeAttributes:function(i){if(e.isArray(i))for(var j=0;j<i.length;j++)this.removeAttribute(i[j]);else for(var k in i)i.hasOwnProperty(k)&&this.removeAttribute(k);},removeStyle:function(i){var j=this.$.style;j.removeProperty?j.removeProperty(i):j.removeAttribute(e.cssStyleToDomStyle(i));if(!this.$.style.cssText)this.removeAttribute('style');},setStyle:function(i,j){this.$.style[e.cssStyleToDomStyle(i)]=j;return this;},setStyles:function(i){for(var j in i)this.setStyle(j,i[j]);return this;},setOpacity:function(i){if(c&&b.version<9){i=Math.round(i*100);this.setStyle('filter',i>=100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+i+')');}else this.setStyle('opacity',i);},unselectable:b.gecko?function(){this.$.style.MozUserSelect='none';this.on('dragstart',function(i){i.data.preventDefault();});}:b.webkit?function(){this.$.style.KhtmlUserSelect='none';this.on('dragstart',function(i){i.data.preventDefault();});}:function(){if(c||b.opera){var i=this.$,j=i.getElementsByTagName('*'),k,l=0;i.unselectable='on';while(k=j[l++])switch(k.tagName.toLowerCase()){case 'iframe':case 'textarea':case 'input':case 'select':break;
+default:k.unselectable='on';}}},getPositionedAncestor:function(){var i=this;while(i.getName()!='html'){if(i.getComputedStyle('position')!='static')return i;i=i.getParent();}return null;},getDocumentPosition:function(i){var D=this;var j=0,k=0,l=D.getDocument(),m=l.getBody(),n=l.$.compatMode=='BackCompat';if(document.documentElement.getBoundingClientRect){var o=D.$.getBoundingClientRect(),p=l.$,q=p.documentElement,r=q.clientTop||m.$.clientTop||0,s=q.clientLeft||m.$.clientLeft||0,t=true;if(c){var u=l.getDocumentElement().contains(D),v=l.getBody().contains(D);t=n&&v||!n&&u;}if(t){j=o.left+(!n&&q.scrollLeft||m.$.scrollLeft);j-=s;k=o.top+(!n&&q.scrollTop||m.$.scrollTop);k-=r;}}else{var w=D,x=null,y;while(w&&!(w.getName()=='body'||w.getName()=='html')){j+=w.$.offsetLeft-w.$.scrollLeft;k+=w.$.offsetTop-w.$.scrollTop;if(!w.equals(D)){j+=w.$.clientLeft||0;k+=w.$.clientTop||0;}var z=x;while(z&&!z.equals(w)){j-=z.$.scrollLeft;k-=z.$.scrollTop;z=z.getParent();}x=w;w=(y=w.$.offsetParent)?new h(y):null;}}if(i){var A=D.getWindow(),B=i.getWindow();if(!A.equals(B)&&A.$.frameElement){var C=new h(A.$.frameElement).getDocumentPosition(i);j+=C.x;k+=C.y;}}if(!document.documentElement.getBoundingClientRect)if(b.gecko&&!n){j+=D.$.clientLeft?1:0;k+=D.$.clientTop?1:0;}return{x:j,y:k};},scrollIntoView:function(i){var j=this.getParent();if(!j)return;do{var k=j.$.clientWidth&&j.$.clientWidth<j.$.scrollWidth||j.$.clientHeight&&j.$.clientHeight<j.$.scrollHeight;if(k)this.scrollIntoParent(j,i,1);if(j.is('html')){var l=j.getWindow();try{var m=l.$.frameElement;m&&(j=new h(m));}catch(n){}}}while(j=j.getParent());},scrollIntoParent:function(i,j,k){!i&&(i=this.getWindow());var l=i.getDocument(),m=l.$.compatMode=='BackCompat';if(i instanceof d.window)i=m?l.getBody():l.getDocumentElement();function n(z,A){if(/body|html/.test(i.getName()))i.getWindow().$.scrollBy(z,A);else{i.$.scrollLeft+=z;i.$.scrollTop+=A;}};function o(z,A){var B={x:0,y:0};if(!z.is(m?'body':'html')){var C=z.$.getBoundingClientRect();B.x=C.left,B.y=C.top;}var D=z.getWindow();if(!D.equals(A)){var E=o(h.get(D.$.frameElement),A);B.x+=E.x,B.y+=E.y;}return B;};function p(z,A){return parseInt(z.getComputedStyle('margin-'+A)||0,10)||0;};var q=i.getWindow(),r=o(this,q),s=o(i,q),t=this.$.offsetHeight,u=this.$.offsetWidth,v=i.$.clientHeight,w=i.$.clientWidth,x,y;x={x:r.x-p(this,'left')-s.x||0,y:r.y-p(this,'top')-s.y||0};y={x:r.x+u+p(this,'right')-(s.x+w)||0,y:r.y+t+p(this,'bottom')-(s.y+v)||0};if(x.y<0||y.y>0)n(0,j===true?x.y:j===false?y.y:x.y<0?x.y:y.y);
+if(k&&(x.x<0||y.x>0))n(x.x<0?x.x:y.x,0);},setState:function(i){var j=this;switch(i){case 1:j.addClass('cke_on');j.removeClass('cke_off');j.removeClass('cke_disabled');break;case 0:j.addClass('cke_disabled');j.removeClass('cke_off');j.removeClass('cke_on');break;default:j.addClass('cke_off');j.removeClass('cke_on');j.removeClass('cke_disabled');break;}},getFrameDocument:function(){var i=this.$;try{i.contentWindow.document;}catch(j){i.src=i.src;if(c&&b.version<7)window.showModalDialog('javascript:document.write("<script>window.setTimeout(function(){window.close();},50);</script>")');}return i&&new g(i.contentWindow.document);},copyAttributes:function(i,j){var p=this;var k=p.$.attributes;j=j||{};for(var l=0;l<k.length;l++){var m=k[l],n=m.nodeName.toLowerCase(),o;if(n in j)continue;if(n=='checked'&&(o=p.getAttribute(n)))i.setAttribute(n,o);else if(m.specified||c&&m.nodeValue&&n=='value'){o=p.getAttribute(n);if(o===null)o=m.nodeValue;i.setAttribute(n,o);}}if(p.$.style.cssText!=='')i.$.style.cssText=p.$.style.cssText;},renameNode:function(i){var l=this;if(l.getName()==i)return;var j=l.getDocument(),k=new h(i,j);l.copyAttributes(k);l.moveChildren(k);l.getParent()&&l.$.parentNode.replaceChild(k.$,l.$);k.$['data-cke-expando']=l.$['data-cke-expando'];l.$=k.$;},getChild:function(i){var j=this.$;if(!i.slice)j=j.childNodes[i];else while(i.length>0&&j)j=j.childNodes[i.shift()];return j?new d.node(j):null;},getChildCount:function(){return this.$.childNodes.length;},disableContextMenu:function(){this.on('contextmenu',function(i){if(!i.data.getTarget().hasClass('cke_enable_context_menu'))i.data.preventDefault();});},getDirection:function(i){var j=this;return i?j.getComputedStyle('direction')||j.getDirection()||j.getDocument().$.dir||j.getDocument().getBody().getDirection(1):j.getStyle('direction')||j.getAttribute('dir');},data:function(i,j){i='data-'+i;if(j===undefined)return this.getAttribute(i);else if(j===false)this.removeAttribute(i);else this.setAttribute(i,j);return null;}});(function(){var i={width:['border-left-width','border-right-width','padding-left','padding-right'],height:['border-top-width','border-bottom-width','padding-top','padding-bottom']};function j(k){var l=0;for(var m=0,n=i[k].length;m<n;m++)l+=parseInt(this.getComputedStyle(i[k][m])||0,10)||0;return l;};h.prototype.setSize=function(k,l,m){if(typeof l=='number'){if(m&&!(c&&b.quirks))l-=j.call(this,k);this.setStyle(k,l+'px');}};h.prototype.getSize=function(k,l){var m=Math.max(this.$['offset'+e.capitalize(k)],this.$['client'+e.capitalize(k)])||0;
+if(l)m-=j.call(this,k);return m;};})();a.command=function(i,j){this.uiItems=[];this.exec=function(k){var l=this;if(l.state==0)return false;if(l.editorFocus)i.focus();if(l.fire('exec')===true)return true;return j.exec.call(l,i,k)!==false;};this.refresh=function(){if(this.fire('refresh')===true)return true;return j.refresh&&j.refresh.apply(this,arguments)!==false;};e.extend(this,j,{modes:{wysiwyg:1},editorFocus:1,state:2});a.event.call(this);};a.command.prototype={enable:function(){var i=this;if(i.state==0)i.setState(!i.preserveState||typeof i.previousState=='undefined'?2:i.previousState);},disable:function(){this.setState(0);},setState:function(i){var j=this;if(j.state==i)return false;j.previousState=j.state;j.state=i;j.fire('state');return true;},toggleState:function(){var i=this;if(i.state==2)i.setState(1);else if(i.state==1)i.setState(2);}};a.event.implementOn(a.command.prototype,true);a.ENTER_P=1;a.ENTER_BR=2;a.ENTER_DIV=3;a.config={customConfig:'config.js',autoUpdateElement:true,baseHref:'',contentsCss:a.basePath+'contents.css',contentsLangDirection:'ui',contentsLanguage:'',language:'',defaultLanguage:'en',enterMode:1,forceEnterMode:false,shiftEnterMode:2,corePlugins:'',docType:'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',bodyId:'',bodyClass:'',fullPage:false,height:200,plugins:'about,a11yhelp,basicstyles,bidi,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,dialogadvtab,div,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,iframe,image,indent,justify,keystrokes,link,list,liststyle,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,showblocks,showborders,smiley,sourcearea,specialchar,stylescombo,tab,table,tabletools,templates,toolbar,undo,wsc,wysiwygarea',extraPlugins:'',removePlugins:'',protectedSource:[],tabIndex:0,theme:'default',skin:'kama',width:'',baseFloatZIndex:10000};var i=a.config;a.focusManager=function(j){if(j.focusManager)return j.focusManager;this.hasFocus=false;this._={editor:j};return this;};a.focusManager.prototype={focus:function(){var k=this;if(k._.timer)clearTimeout(k._.timer);if(!k.hasFocus){if(a.currentInstance)a.currentInstance.focusManager.forceBlur();var j=k._.editor;j.container.getChild(1).addClass('cke_focus');k.hasFocus=true;j.fire('focus');}},blur:function(){var j=this;if(j._.timer)clearTimeout(j._.timer);j._.timer=setTimeout(function(){delete j._.timer;
+j.forceBlur();},100);},forceBlur:function(){if(this.hasFocus){var j=this._.editor;j.container.getChild(1).removeClass('cke_focus');this.hasFocus=false;j.fire('blur');}}};(function(){var j={};a.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,'en-au':1,'en-ca':1,'en-gb':1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,'fr-ca':1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,lt:1,lv:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,'pt-br':1,pt:1,ro:1,ru:1,sk:1,sl:1,'sr-latn':1,sr:1,sv:1,th:1,tr:1,uk:1,vi:1,'zh-cn':1,zh:1},load:function(k,l,m){if(!k||!a.lang.languages[k])k=this.detect(l,k);if(!this[k])a.scriptLoader.load(a.getUrl('lang/'+k+'.js'),function(){m(k,this[k]);},this);else m(k,this[k]);},detect:function(k,l){var m=this.languages;l=l||navigator.userLanguage||navigator.language||k;var n=l.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),o=n[1],p=n[2];if(m[o+'-'+p])o=o+'-'+p;else if(!m[o])o=null;a.lang.detect=o?function(){return o;}:function(q){return q;};return o||k;}};})();a.scriptLoader=(function(){var j={},k={};return{load:function(l,m,n,o){var p=typeof l=='string';if(p)l=[l];if(!n)n=a;var q=l.length,r=[],s=[],t=function(y){if(m)if(p)m.call(n,y);else m.call(n,r,s);};if(q===0){t(true);return;}var u=function(y,z){(z?r:s).push(y);if(--q<=0){o&&a.document.getDocumentElement().removeStyle('cursor');t(z);}},v=function(y,z){j[y]=1;var A=k[y];delete k[y];for(var B=0;B<A.length;B++)A[B](y,z);},w=function(y){if(j[y]){u(y,true);return;}var z=k[y]||(k[y]=[]);z.push(u);if(z.length>1)return;var A=new h('script');A.setAttributes({type:'text/javascript',src:y});if(m)if(c)A.$.onreadystatechange=function(){if(A.$.readyState=='loaded'||A.$.readyState=='complete'){A.$.onreadystatechange=null;v(y,true);}};else{A.$.onload=function(){setTimeout(function(){v(y,true);},0);};A.$.onerror=function(){v(y,false);};}A.appendTo(a.document.getHead());};o&&a.document.getDocumentElement().setStyle('cursor','wait');for(var x=0;x<q;x++)w(l[x]);}};})();a.resourceManager=function(j,k){var l=this;l.basePath=j;l.fileName=k;l.registered={};l.loaded={};l.externals={};l._={waitingList:{}};};a.resourceManager.prototype={add:function(j,k){if(this.registered[j])throw '[CKEDITOR.resourceManager.add] The resource name "'+j+'" is already registered.';a.fire(j+e.capitalize(this.fileName)+'Ready',this.registered[j]=k||{});},get:function(j){return this.registered[j]||null;},getPath:function(j){var k=this.externals[j];return a.getUrl(k&&k.dir||this.basePath+j+'/');},getFilePath:function(j){var k=this.externals[j];
+return a.getUrl(this.getPath(j)+(k&&typeof k.file=='string'?k.file:this.fileName+'.js'));},addExternal:function(j,k,l){j=j.split(',');for(var m=0;m<j.length;m++){var n=j[m];this.externals[n]={dir:k,file:l};}},load:function(j,k,l){if(!e.isArray(j))j=j?[j]:[];var m=this.loaded,n=this.registered,o=[],p={},q={};for(var r=0;r<j.length;r++){var s=j[r];if(!s)continue;if(!m[s]&&!n[s]){var t=this.getFilePath(s);o.push(t);if(!(t in p))p[t]=[];p[t].push(s);}else q[s]=this.get(s);}a.scriptLoader.load(o,function(u,v){if(v.length)throw '[CKEDITOR.resourceManager.load] Resource name "'+p[v[0]].join(',')+'" was not found at "'+v[0]+'".';for(var w=0;w<u.length;w++){var x=p[u[w]];for(var y=0;y<x.length;y++){var z=x[y];q[z]=this.get(z);m[z]=1;}}k.call(l,q);},this);}};a.plugins=new a.resourceManager('plugins/','plugin');var j=a.plugins;j.load=e.override(j.load,function(k){return function(l,m,n){var o={},p=function(q){k.call(this,q,function(r){e.extend(o,r);var s=[];for(var t in r){var u=r[t],v=u&&u.requires;if(v)for(var w=0;w<v.length;w++){if(!o[v[w]])s.push(v[w]);}}if(s.length)p.call(this,s);else{for(t in o){u=o[t];if(u.onLoad&&!u.onLoad._called){u.onLoad();u.onLoad._called=1;}}if(m)m.call(n||window,o);}},this);};p.call(this,l);};});j.setLang=function(k,l,m){var n=this.get(k),o=n.langEntries||(n.langEntries={}),p=n.lang||(n.lang=[]);if(e.indexOf(p,l)==-1)p.push(l);o[l]=m;};a.skins=(function(){var k={},l={},m=function(n,o,p,q){var r=k[o];if(!n.skin){n.skin=r;if(r.init)r.init(n);}var s=function(B){for(var C=0;C<B.length;C++)B[C]=a.getUrl(l[o]+B[C]);};function t(B,C){return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(D,E,F,G){if(/^\/|^\w?:/.test(F))return D;else return 'url('+C+E+F+G+')';});};p=r[p];var u=!p||!!p._isLoaded;if(u)q&&q();else{var v=p._pending||(p._pending=[]);v.push(q);if(v.length>1)return;var w=!p.css||!p.css.length,x=!p.js||!p.js.length,y=function(){if(w&&x){p._isLoaded=1;for(var B=0;B<v.length;B++){if(v[B])v[B]();}}};if(!w){var z=p.css;if(e.isArray(z)){s(z);for(var A=0;A<z.length;A++)a.document.appendStyleSheet(z[A]);}else{z=t(z,a.getUrl(l[o]));a.document.appendStyleText(z);}p.css=z;w=1;}if(!x){s(p.js);a.scriptLoader.load(p.js,function(){x=1;y();});}y();}};return{add:function(n,o){k[n]=o;o.skinPath=l[n]||(l[n]=a.getUrl('skins/'+n+'/'));},load:function(n,o,p){var q=n.skinName,r=n.skinPath;if(k[q])m(n,q,o,p);else{l[q]=r;a.scriptLoader.load(a.getUrl(r+'skin.js'),function(){m(n,q,o,p);});}}};})();a.themes=new a.resourceManager('themes/','theme');a.ui=function(k){if(k.ui)return k.ui;
+this._={handlers:{},items:{},editor:k};return this;};var k=a.ui;k.prototype={add:function(l,m,n){this._.items[l]={type:m,command:n.command||null,args:Array.prototype.slice.call(arguments,2)};},create:function(l){var q=this;var m=q._.items[l],n=m&&q._.handlers[m.type],o=m&&m.command&&q._.editor.getCommand(m.command),p=n&&n.create.apply(q,m.args);m&&(p=e.extend(p,q._.editor.skin[m.type],true));if(o)o.uiItems.push(p);return p;},addHandler:function(l,m){this._.handlers[l]=m;}};a.event.implementOn(k);(function(){var l=0,m=function(){var x='editor'+ ++l;return a.instances&&a.instances[x]?m():x;},n={},o=function(x){var y=x.config.customConfig;if(!y)return false;y=a.getUrl(y);var z=n[y]||(n[y]={});if(z.fn){z.fn.call(x,x.config);if(a.getUrl(x.config.customConfig)==y||!o(x))x.fireOnce('customConfigLoaded');}else a.scriptLoader.load(y,function(){if(a.editorConfig)z.fn=a.editorConfig;else z.fn=function(){};o(x);});return true;},p=function(x,y){x.on('customConfigLoaded',function(){if(y){if(y.on)for(var z in y.on)x.on(z,y.on[z]);e.extend(x.config,y,true);delete x.config.on;}q(x);});if(y&&y.customConfig!=undefined)x.config.customConfig=y.customConfig;if(!o(x))x.fireOnce('customConfigLoaded');},q=function(x){var y=x.config.skin.split(','),z=y[0],A=a.getUrl(y[1]||'skins/'+z+'/');x.skinName=z;x.skinPath=A;x.skinClass='cke_skin_'+z;x.tabIndex=x.config.tabIndex||x.element.getAttribute('tabindex')||0;x.readOnly=!!(x.config.readOnly||x.element.getAttribute('disabled'));x.fireOnce('configLoaded');t(x);},r=function(x){a.lang.load(x.config.language,x.config.defaultLanguage,function(y,z){x.langCode=y;x.lang=e.prototypedCopy(z);if(b.gecko&&b.version<10900&&x.lang.dir=='rtl')x.lang.dir='ltr';x.fire('langLoaded');var A=x.config;A.contentsLangDirection=='ui'&&(A.contentsLangDirection=x.lang.dir);s(x);});},s=function(x){var y=x.config,z=y.plugins,A=y.extraPlugins,B=y.removePlugins;if(A){var C=new RegExp('(?:^|,)(?:'+A.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');z=z.replace(C,'');z+=','+A;}if(B){C=new RegExp('(?:^|,)(?:'+B.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');z=z.replace(C,'');}b.air&&(z+=',adobeair');j.load(z.split(','),function(D){var E=[],F=[],G=[];x.plugins=D;for(var H in D){var I=D[H],J=I.lang,K=j.getPath(H),L=null;I.path=K;if(J){L=e.indexOf(J,x.langCode)>=0?x.langCode:J[0];if(!I.langEntries||!I.langEntries[L])G.push(a.getUrl(K+'lang/'+L+'.js'));else{e.extend(x.lang,I.langEntries[L]);L=null;}}F.push(L);E.push(I);}a.scriptLoader.load(G,function(){var M=['beforeInit','init','afterInit'];
+for(var N=0;N<M.length;N++)for(var O=0;O<E.length;O++){var P=E[O];if(N===0&&F[O]&&P.lang)e.extend(x.lang,P.langEntries[F[O]]);if(P[M[N]])P[M[N]](x);}x.fire('pluginsLoaded');u(x);});});},t=function(x){a.skins.load(x,'editor',function(){r(x);});},u=function(x){var y=x.config.theme;a.themes.load(y,function(){var z=x.theme=a.themes.get(y);z.path=a.themes.getPath(y);z.build(x);if(x.config.autoUpdateElement)v(x);});},v=function(x){var y=x.element;if(x.elementMode==1&&y.is('textarea')){var z=y.$.form&&new h(y.$.form);if(z){function A(){x.updateElement();};z.on('submit',A);if(!z.$.submit.nodeName&&!z.$.submit.length)z.$.submit=e.override(z.$.submit,function(B){return function(){x.updateElement();if(B.apply)B.apply(this,arguments);else B();};});x.on('destroy',function(){z.removeListener('submit',A);});}}};function w(){var x,y=this._.commands,z=this.mode;if(!z)return;for(var A in y){x=y[A];x[x.startDisabled?'disable':this.readOnly&&!x.readOnly?'disable':x.modes[z]?'enable':'disable']();}};a.editor.prototype._init=function(){var z=this;var x=h.get(z._.element),y=z._.instanceConfig;delete z._.element;delete z._.instanceConfig;z._.commands={};z._.styles=[];z.element=x;z.name=x&&z.elementMode==1&&(x.getId()||x.getNameAtt())||m();if(z.name in a.instances)throw '[CKEDITOR.editor] The instance "'+z.name+'" already exists.';z.id=e.getNextId();z.config=e.prototypedCopy(i);z.ui=new k(z);z.focusManager=new a.focusManager(z);a.fire('instanceCreated',null,z);z.on('mode',w,null,null,1);z.on('readOnly',w,null,null,1);p(z,y);};})();e.extend(a.editor.prototype,{addCommand:function(l,m){return this._.commands[l]=new a.command(this,m);},addCss:function(l){this._.styles.push(l);},destroy:function(l){var m=this;if(!l)m.updateElement();m.fire('destroy');m.theme&&m.theme.destroy(m);a.remove(m);a.fire('instanceDestroyed',null,m);},execCommand:function(l,m){var n=this.getCommand(l),o={name:l,commandData:m,command:n};if(n&&n.state!=0)if(this.fire('beforeCommandExec',o)!==true){o.returnValue=n.exec(o.commandData);if(!n.async&&this.fire('afterCommandExec',o)!==true)return o.returnValue;}return false;},getCommand:function(l){return this._.commands[l];},getData:function(){var n=this;n.fire('beforeGetData');var l=n._.data;if(typeof l!='string'){var m=n.element;if(m&&n.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();else l='';}l={dataValue:l};n.fire('getData',l);return l.dataValue;},getSnapshot:function(){var l=this.fire('getSnapshot');if(typeof l!='string'){var m=this.element;if(m&&this.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();
+}return l;},loadSnapshot:function(l){this.fire('loadSnapshot',l);},setData:function(l,m,n){if(m)this.on('dataReady',function(p){p.removeListener();m.call(p.editor);});var o={dataValue:l};!n&&this.fire('setData',o);this._.data=o.dataValue;!n&&this.fire('afterSetData',o);},setReadOnly:function(l){l=l==undefined||l;if(this.readOnly!=l){this.readOnly=l;this.fire('readOnly');}},insertHtml:function(l){this.fire('insertHtml',l);},insertText:function(l){this.fire('insertText',l);},insertElement:function(l){this.fire('insertElement',l);},checkDirty:function(){return this.mayBeDirty&&this._.previousValue!==this.getSnapshot();},resetDirty:function(){if(this.mayBeDirty)this._.previousValue=this.getSnapshot();},updateElement:function(){var n=this;var l=n.element;if(l&&n.elementMode==1){var m=n.getData();if(n.config.htmlEncodeOutput)m=e.htmlEncode(m);if(l.is('textarea'))l.setValue(m);else l.setHtml(m);}}});a.on('loaded',function(){var l=a.editor._pending;if(l){delete a.editor._pending;for(var m=0;m<l.length;m++)l[m]._init();}});a.htmlParser=function(){this._={htmlPartsRegex:new RegExp("<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s>]+)\\s*((?:(?:\"[^\"]*\")|(?:'[^']*')|[^\"'>])*)\\/?>))",'g')};};(function(){var l=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,m={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};a.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(n){var A=this;var o,p,q=0,r;while(o=A._.htmlPartsRegex.exec(n)){var s=o.index;if(s>q){var t=n.substring(q,s);if(r)r.push(t);else A.onText(t);}q=A._.htmlPartsRegex.lastIndex;if(p=o[1]){p=p.toLowerCase();if(r&&f.$cdata[p]){A.onCDATA(r.join(''));r=null;}if(!r){A.onTagClose(p);continue;}}if(r){r.push(o[0]);continue;}if(p=o[3]){p=p.toLowerCase();if(/="/.test(p))continue;var u={},v,w=o[4],x=!!(w&&w.charAt(w.length-1)=='/');if(w)while(v=l.exec(w)){var y=v[1].toLowerCase(),z=v[2]||v[3]||v[4]||'';if(!z&&m[y])u[y]=y;else u[y]=z;}A.onTagOpen(p,u,x);if(!r&&f.$cdata[p])r=[];continue;}if(p=o[2])A.onComment(p);}if(n.length>q)A.onText(n.substring(q,n.length));}};})();a.htmlParser.comment=function(l){this.value=l;this._={isBlockLike:false};};a.htmlParser.comment.prototype={type:8,writeHtml:function(l,m){var n=this.value;if(m){if(!(n=m.onComment(n,this)))return;if(typeof n!='string'){n.parent=this.parent;n.writeHtml(l,m);
+return;}}l.comment(n);}};(function(){a.htmlParser.text=function(l){this.value=l;this._={isBlockLike:false};};a.htmlParser.text.prototype={type:3,writeHtml:function(l,m){var n=this.value;if(m&&!(n=m.onText(n,this)))return;l.text(n);}};})();(function(){a.htmlParser.cdata=function(l){this.value=l;};a.htmlParser.cdata.prototype={type:3,writeHtml:function(l){l.write(this.value);}};})();a.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false};};(function(){var l=e.extend({table:1,ul:1,ol:1,dl:1},f.table,f.ul,f.ol,f.dl),m=c&&b.version<8?{dd:1,dt:1}:{},n={ol:1,ul:1},o=e.extend({},{html:1},f.html,f.body,f.head,{style:1,script:1});function p(q){return q.name=='a'&&q.attributes.href||f.$removeEmpty[q.name];};a.htmlParser.fragment.fromHtml=function(q,r,s){var t=new a.htmlParser(),u=s||new a.htmlParser.fragment(),v=[],w=[],x=u,y=false,z=false;function A(D){var E;if(v.length>0)for(var F=0;F<v.length;F++){var G=v[F],H=G.name,I=f[H],J=x.name&&f[x.name];if((!J||J[H])&&(!D||!I||I[D]||!f[D])){if(!E){B();E=1;}G=G.clone();G.parent=x;x=G;v.splice(F,1);F--;}else if(H==x.name)C(x,x.parent,1),F--;}};function B(){while(w.length)C(w.shift(),x);};function C(D,E,F){if(D.previous!==undefined)return;E=E||x||u;var G=x;if(r&&(!E.type||E.name=='body')){var H,I;if(D.attributes&&(I=D.attributes['data-cke-real-element-type']))H=I;else H=D.name;if(H&&!(H in f.$body||H=='body'||D.isOrphan)){x=E;t.onTagOpen(r,{});D.returnPoint=E=x;}}if(D._.isBlockLike&&D.name!='pre'&&D.name!='textarea'){var J=D.children.length,K=D.children[J-1],L;if(K&&K.type==3)if(!(L=e.rtrim(K.value)))D.children.length=J-1;else K.value=L;}E.add(D);if(D.name=='pre')z=false;if(D.name=='textarea')y=false;if(D.returnPoint){x=D.returnPoint;delete D.returnPoint;}else x=F?E:G;};t.onTagOpen=function(D,E,F,G){var H=new a.htmlParser.element(D,E);if(H.isUnknown&&F)H.isEmpty=true;H.isOptionalClose=D in m||G;if(p(H)){v.push(H);return;}else if(D=='pre')z=true;else if(D=='br'&&z){x.add(new a.htmlParser.text('\n'));return;}else if(D=='textarea')y=true;if(D=='br'){w.push(H);return;}while(1){var I=x.name,J=I?f[I]||(x._.isBlockLike?f.div:f.span):o;if(!H.isUnknown&&!x.isUnknown&&!J[D]){if(x.isOptionalClose)t.onTagClose(I);else if(D in n&&I in n){var K=x.children,L=K[K.length-1];if(!(L&&L.name=='li'))C(L=new a.htmlParser.element('li'),x);!H.returnPoint&&(H.returnPoint=x);x=L;}else if(D in f.$listItem&&I!=D)t.onTagOpen(D=='li'?'ul':'dl',{},0,1);else if(I in l&&I!=D){!H.returnPoint&&(H.returnPoint=x);
+x=x.parent;}else{if(I in f.$inline)v.unshift(x);if(x.parent)C(x,x.parent,1);else{H.isOrphan=1;break;}}}else break;}A(D);B();H.parent=x;if(H.isEmpty)C(H);else x=H;};t.onTagClose=function(D){for(var E=v.length-1;E>=0;E--){if(D==v[E].name){v.splice(E,1);return;}}var F=[],G=[],H=x;while(H!=u&&H.name!=D){if(!H._.isBlockLike)G.unshift(H);F.push(H);H=H.returnPoint||H.parent;}if(H!=u){for(E=0;E<F.length;E++){var I=F[E];C(I,I.parent);}x=H;if(H._.isBlockLike)B();C(H,H.parent);if(H==x)x=x.parent;v=v.concat(G);}if(D=='body')r=false;};t.onText=function(D){if((!x._.hasInlineStarted||w.length)&&!z&&!y){D=e.ltrim(D);if(D.length===0)return;}var E=x.name,F=E?f[E]||(x._.isBlockLike?f.div:f.span):o;if(!y&&!F['#']&&E in l){t.onTagOpen(E in n?'li':E=='dl'?'dd':E=='table'?'tr':E=='tr'?'td':'');t.onText(D);return;}B();A();if(r&&(!x.type||x.name=='body')&&e.trim(D))this.onTagOpen(r,{},0,1);if(!z&&!y)D=D.replace(/[\t\r\n ]{2,}|[\t\r\n]/g,' ');x.add(new a.htmlParser.text(D));};t.onCDATA=function(D){x.add(new a.htmlParser.cdata(D));};t.onComment=function(D){B();A();x.add(new a.htmlParser.comment(D));};t.parse(q);B(!c&&1);while(x!=u)C(x,x.parent,1);return u;};a.htmlParser.fragment.prototype={add:function(q,r){var t=this;isNaN(r)&&(r=t.children.length);var s=r>0?t.children[r-1]:null;if(s){if(q._.isBlockLike&&s.type==3){s.value=e.rtrim(s.value);if(s.value.length===0){t.children.pop();t.add(q);return;}}s.next=q;}q.previous=s;q.parent=t;t.children.splice(r,0,q);t._.hasInlineStarted=q.type==3||q.type==1&&!q._.isBlockLike;},writeHtml:function(q,r){var s;this.filterChildren=function(){var t=new a.htmlParser.basicWriter();this.writeChildrenHtml.call(this,t,r,true);var u=t.getHtml();this.children=new a.htmlParser.fragment.fromHtml(u).children;s=1;};!this.name&&r&&r.onFragment(this);this.writeChildrenHtml(q,s?null:r);},writeChildrenHtml:function(q,r){for(var s=0;s<this.children.length;s++)this.children[s].writeHtml(q,r);}};})();a.htmlParser.element=function(l,m){var q=this;q.name=l;q.attributes=m||{};q.children=[];var n=l||'',o=n.match(/^cke:(.*)/);o&&(n=o[1]);var p=!!(f.$nonBodyContent[n]||f.$block[n]||f.$listItem[n]||f.$tableContent[n]||f.$nonEditable[n]||n=='br');q.isEmpty=!!f.$empty[l];q.isUnknown=!f[l];q._={isBlockLike:p,hasInlineStarted:q.isEmpty||!p};};a.htmlParser.cssStyle=function(){var l,m=arguments[0],n={};l=m instanceof a.htmlParser.element?m.attributes.style:m;(l||'').replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(o,p,q){p=='font-family'&&(q=q.replace(/["']/g,''));
+n[p.toLowerCase()]=q;});return{rules:n,populate:function(o){var p=this.toString();if(p)o instanceof h?o.setAttribute('style',p):o instanceof a.htmlParser.element?o.attributes.style=p:o.style=p;},'toString':function(){var o=[];for(var p in n)n[p]&&o.push(p,':',n[p],';');return o.join('');}};};(function(){var l=function(m,n){m=m[0];n=n[0];return m<n?-1:m>n?1:0;};a.htmlParser.element.prototype={type:1,add:a.htmlParser.fragment.prototype.add,clone:function(){return new a.htmlParser.element(this.name,this.attributes);},writeHtml:function(m,n){var o=this.attributes,p=this,q=p.name,r,s,t,u;p.filterChildren=function(){if(!u){var B=new a.htmlParser.basicWriter();a.htmlParser.fragment.prototype.writeChildrenHtml.call(p,B,n);p.children=new a.htmlParser.fragment.fromHtml(B.getHtml(),0,p.clone()).children;u=1;}};if(n){for(;;){if(!(q=n.onElementName(q)))return;p.name=q;if(!(p=n.onElement(p)))return;p.parent=this.parent;if(p.name==q)break;if(p.type!=1){p.writeHtml(m,n);return;}q=p.name;if(!q){for(var v=0,w=this.children.length;v<w;v++)this.children[v].parent=p.parent;this.writeChildrenHtml.call(p,m,u?null:n);return;}}o=p.attributes;}m.openTag(q,o);var x=[];for(var y=0;y<2;y++)for(r in o){s=r;t=o[r];if(y==1)x.push([r,t]);else if(n){for(;;){if(!(s=n.onAttributeName(r))){delete o[r];break;}else if(s!=r){delete o[r];r=s;continue;}else break;}if(s)if((t=n.onAttribute(p,s,t))===false)delete o[s];else o[s]=t;}}if(m.sortAttributes)x.sort(l);var z=x.length;for(y=0;y<z;y++){var A=x[y];m.attribute(A[0],A[1]);}m.openTagClose(q,p.isEmpty);if(!p.isEmpty){this.writeChildrenHtml.call(p,m,u?null:n);m.closeTag(q);}},writeChildrenHtml:function(m,n){a.htmlParser.fragment.prototype.writeChildrenHtml.apply(this,arguments);}};})();(function(){a.htmlParser.filter=e.createClass({$:function(q){this._={elementNames:[],attributeNames:[],elements:{$length:0},attributes:{$length:0}};if(q)this.addRules(q,10);},proto:{addRules:function(q,r){var s=this;if(typeof r!='number')r=10;m(s._.elementNames,q.elementNames,r);m(s._.attributeNames,q.attributeNames,r);n(s._.elements,q.elements,r);n(s._.attributes,q.attributes,r);s._.text=o(s._.text,q.text,r)||s._.text;s._.comment=o(s._.comment,q.comment,r)||s._.comment;s._.root=o(s._.root,q.root,r)||s._.root;},onElementName:function(q){return l(q,this._.elementNames);},onAttributeName:function(q){return l(q,this._.attributeNames);},onText:function(q){var r=this._.text;return r?r.filter(q):q;},onComment:function(q,r){var s=this._.comment;return s?s.filter(q,r):q;},onFragment:function(q){var r=this._.root;
+return r?r.filter(q):q;},onElement:function(q){var v=this;var r=[v._.elements['^'],v._.elements[q.name],v._.elements.$],s,t;for(var u=0;u<3;u++){s=r[u];if(s){t=s.filter(q,v);if(t===false)return null;if(t&&t!=q)return v.onNode(t);if(q.parent&&!q.name)break;}}return q;},onNode:function(q){var r=q.type;return r==1?this.onElement(q):r==3?new a.htmlParser.text(this.onText(q.value)):r==8?new a.htmlParser.comment(this.onComment(q.value)):null;},onAttribute:function(q,r,s){var t=this._.attributes[r];if(t){var u=t.filter(s,q,this);if(u===false)return false;if(typeof u!='undefined')return u;}return s;}}});function l(q,r){for(var s=0;q&&s<r.length;s++){var t=r[s];q=q.replace(t[0],t[1]);}return q;};function m(q,r,s){if(typeof r=='function')r=[r];var t,u,v=q.length,w=r&&r.length;if(w){for(t=0;t<v&&q[t].pri<s;t++){}for(u=w-1;u>=0;u--){var x=r[u];if(x){x.pri=s;q.splice(t,0,x);}}}};function n(q,r,s){if(r)for(var t in r){var u=q[t];q[t]=o(u,r[t],s);if(!u)q.$length++;}};function o(q,r,s){if(r){r.pri=s;if(q){if(!q.splice){if(q.pri>s)q=[r,q];else q=[q,r];q.filter=p;}else m(q,r,s);return q;}else{r.filter=r;return r;}}};function p(q){var r=q.type||q instanceof a.htmlParser.fragment;for(var s=0;s<this.length;s++){if(r)var t=q.type,u=q.name;var v=this[s],w=v.apply(window,arguments);if(w===false)return w;if(r){if(w&&(w.name!=u||w.type!=t))return w;}else if(typeof w!='string')return w;w!=undefined&&(q=w);}return q;};})();a.htmlParser.basicWriter=e.createClass({$:function(){this._={output:[]};},proto:{openTag:function(l,m){this._.output.push('<',l);},openTagClose:function(l,m){if(m)this._.output.push(' />');else this._.output.push('>');},attribute:function(l,m){if(typeof m=='string')m=e.htmlEncodeAttr(m);this._.output.push(' ',l,'="',m,'"');},closeTag:function(l){this._.output.push('</',l,'>');},text:function(l){this._.output.push(l);},comment:function(l){this._.output.push('<!--',l,'-->');},write:function(l){this._.output.push(l);},reset:function(){this._.output=[];this._.indent=false;},getHtml:function(l){var m=this._.output.join('');if(l)this.reset();return m;}}});delete a.loadFullCore;a.instances={};a.document=new g(document);a.add=function(l){a.instances[l.name]=l;l.on('focus',function(){if(a.currentInstance!=l){a.currentInstance=l;a.fire('currentInstance');}});l.on('blur',function(){if(a.currentInstance==l){a.currentInstance=null;a.fire('currentInstance');}});};a.remove=function(l){delete a.instances[l.name];};a.on('instanceDestroyed',function(){if(e.isEmpty(this.instances))a.fire('reset');
+});a.TRISTATE_ON=1;a.TRISTATE_OFF=2;a.TRISTATE_DISABLED=0;d.comment=function(l,m){if(typeof l=='string')l=(m?m.$:document).createComment(l);d.domObject.call(this,l);};d.comment.prototype=new d.node();e.extend(d.comment.prototype,{type:8,getOuterHtml:function(){return '<!--'+this.$.nodeValue+'-->';}});(function(){var l={address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,dd:1,legend:1,caption:1},m={body:1,div:1,table:1,tbody:1,tr:1,td:1,th:1,form:1,fieldset:1},n=function(o){var p=o.getChildren();for(var q=0,r=p.count();q<r;q++){var s=p.getItem(q);if(s.type==1&&f.$block[s.getName()])return true;}return false;};d.elementPath=function(o){var u=this;var p=null,q=null,r=[],s=o;while(s){if(s.type==1){if(!u.lastElement)u.lastElement=s;var t=s.getName();if(!q){if(!p&&l[t])p=s;if(m[t])if(!p&&t=='div'&&!n(s))p=s;else q=s;}r.push(s);if(t=='body')break;}s=s.getParent();}u.block=p;u.blockLimit=q;u.elements=r;};})();d.elementPath.prototype={compare:function(l){var m=this.elements,n=l&&l.elements;if(!n||m.length!=n.length)return false;for(var o=0;o<m.length;o++){if(!m[o].equals(n[o]))return false;}return true;},contains:function(l){var m=this.elements;for(var n=0;n<m.length;n++){if(m[n].getName() in l)return m[n];}return null;}};d.text=function(l,m){if(typeof l=='string')l=(m?m.$:document).createTextNode(l);this.$=l;};d.text.prototype=new d.node();e.extend(d.text.prototype,{type:3,getLength:function(){return this.$.nodeValue.length;},getText:function(){return this.$.nodeValue;},setText:function(l){this.$.nodeValue=l;},split:function(l){var q=this;if(c&&l==q.getLength()){var m=q.getDocument().createText('');m.insertAfter(q);return m;}var n=q.getDocument(),o=new d.text(q.$.splitText(l),n);if(b.ie8){var p=new d.text('',n);p.insertAfter(o);p.remove();}return o;},substring:function(l,m){if(typeof m!='number')return this.$.nodeValue.substr(l);else return this.$.nodeValue.substring(l,m);}});d.documentFragment=function(l){l=l||a.document;this.$=l.$.createDocumentFragment();};e.extend(d.documentFragment.prototype,h.prototype,{type:11,insertAfterNode:function(l){l=l.$;l.parentNode.insertBefore(this.$,l.nextSibling);}},true,{append:1,appendBogus:1,getFirst:1,getLast:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1});(function(){function l(s,t){var u=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(u.collapsed){this.end();return null;
+}u.optimize();}var v,w=u.startContainer,x=u.endContainer,y=u.startOffset,z=u.endOffset,A,B=this.guard,C=this.type,D=s?'getPreviousSourceNode':'getNextSourceNode';if(!s&&!this._.guardLTR){var E=x.type==1?x:x.getParent(),F=x.type==1?x.getChild(z):x.getNext();this._.guardLTR=function(J,K){return(!K||!E.equals(J))&&(!F||!J.equals(F))&&(J.type!=1||!K||J.getName()!='body');};}if(s&&!this._.guardRTL){var G=w.type==1?w:w.getParent(),H=w.type==1?y?w.getChild(y-1):null:w.getPrevious();this._.guardRTL=function(J,K){return(!K||!G.equals(J))&&(!H||!J.equals(H))&&(J.type!=1||!K||J.getName()!='body');};}var I=s?this._.guardRTL:this._.guardLTR;if(B)A=function(J,K){if(I(J,K)===false)return false;return B(J,K);};else A=I;if(this.current)v=this.current[D](false,C,A);else{if(s){v=x;if(v.type==1)if(z>0)v=v.getChild(z-1);else v=A(v,true)===false?null:v.getPreviousSourceNode(true,C,A);}else{v=w;if(v.type==1)if(!(v=v.getChild(y)))v=A(w,true)===false?null:w.getNextSourceNode(true,C,A);}if(v&&A(v)===false)v=null;}while(v&&!this._.end){this.current=v;if(!this.evaluator||this.evaluator(v)!==false){if(!t)return v;}else if(t&&this.evaluator)return false;v=v[D](false,C,A);}this.end();return this.current=null;};function m(s){var t,u=null;while(t=l.call(this,s))u=t;return u;};d.walker=e.createClass({$:function(s){this.range=s;this._={};},proto:{end:function(){this._.end=1;},next:function(){return l.call(this);},previous:function(){return l.call(this,1);},checkForward:function(){return l.call(this,0,1)!==false;},checkBackward:function(){return l.call(this,1,1)!==false;},lastForward:function(){return m.call(this);},lastBackward:function(){return m.call(this,1);},reset:function(){delete this.current;this._={};}}});var n={block:1,'list-item':1,table:1,'table-row-group':1,'table-header-group':1,'table-footer-group':1,'table-row':1,'table-column-group':1,'table-column':1,'table-cell':1,'table-caption':1};h.prototype.isBlockBoundary=function(s){var t=s?e.extend({},f.$block,s||{}):f.$block;return this.getComputedStyle('float')=='none'&&n[this.getComputedStyle('display')]||t[this.getName()];};d.walker.blockBoundary=function(s){return function(t,u){return!(t.type==1&&t.isBlockBoundary(s));};};d.walker.listItemBoundary=function(){return this.blockBoundary({br:1});};d.walker.bookmark=function(s,t){function u(v){return v&&v.getName&&v.getName()=='span'&&v.data('cke-bookmark');};return function(v){var w,x;w=v&&!v.getName&&(x=v.getParent())&&u(x);w=s?w:w||u(v);return!!(t^w);};};d.walker.whitespaces=function(s){return function(t){var u=t&&t.type==3&&!e.trim(t.getText());
+return!!(s^u);};};d.walker.invisible=function(s){var t=d.walker.whitespaces();return function(u){var v=t(u)||u.is&&!u.$.offsetHeight;return!!(s^v);};};d.walker.nodeType=function(s,t){return function(u){return!!(t^u.type==s);};};d.walker.bogus=function(s){function t(u){return!p(u)&&!q(u);};return function(u){var v=!c?u.is&&u.is('br'):u.getText&&o.test(u.getText());if(v){var w=u.getParent(),x=u.getNext(t);v=w.isBlockBoundary()&&(!x||x.type==1&&x.isBlockBoundary());}return!!(s^v);};};var o=/^[\t\r\n ]*(?: |\xa0)$/,p=d.walker.whitespaces(),q=d.walker.bookmark(),r=function(s){return q(s)||p(s)||s.type==1&&s.getName() in f.$inline&&!(s.getName() in f.$empty);};h.prototype.getBogus=function(){var s=this;do s=s.getPreviousSourceNode();while(r(s));if(s&&(!c?s.is&&s.is('br'):s.getText&&o.test(s.getText())))return s;return false;};})();d.range=function(l){var m=this;m.startContainer=null;m.startOffset=null;m.endContainer=null;m.endOffset=null;m.collapsed=true;m.document=l;};(function(){var l=function(u){u.collapsed=u.startContainer&&u.endContainer&&u.startContainer.equals(u.endContainer)&&u.startOffset==u.endOffset;},m=function(u,v,w,x){u.optimizeBookmark();var y=u.startContainer,z=u.endContainer,A=u.startOffset,B=u.endOffset,C,D;if(z.type==3)z=z.split(B);else if(z.getChildCount()>0)if(B>=z.getChildCount()){z=z.append(u.document.createText(''));D=true;}else z=z.getChild(B);if(y.type==3){y.split(A);if(y.equals(z))z=y.getNext();}else if(!A){y=y.getFirst().insertBeforeMe(u.document.createText(''));C=true;}else if(A>=y.getChildCount()){y=y.append(u.document.createText(''));C=true;}else y=y.getChild(A).getPrevious();var E=y.getParents(),F=z.getParents(),G,H,I;for(G=0;G<E.length;G++){H=E[G];I=F[G];if(!H.equals(I))break;}var J=w,K,L,M,N;for(var O=G;O<E.length;O++){K=E[O];if(J&&!K.equals(y))L=J.append(K.clone());M=K.getNext();while(M){if(M.equals(F[O])||M.equals(z))break;N=M.getNext();if(v==2)J.append(M.clone(true));else{M.remove();if(v==1)J.append(M);}M=N;}if(J)J=L;}J=w;for(var P=G;P<F.length;P++){K=F[P];if(v>0&&!K.equals(z))L=J.append(K.clone());if(!E[P]||K.$.parentNode!=E[P].$.parentNode){M=K.getPrevious();while(M){if(M.equals(E[P])||M.equals(y))break;N=M.getPrevious();if(v==2)J.$.insertBefore(M.$.cloneNode(true),J.$.firstChild);else{M.remove();if(v==1)J.$.insertBefore(M.$,J.$.firstChild);}M=N;}}if(J)J=L;}if(v==2){var Q=u.startContainer;if(Q.type==3){Q.$.data+=Q.$.nextSibling.data;Q.$.parentNode.removeChild(Q.$.nextSibling);}var R=u.endContainer;if(R.type==3&&R.$.nextSibling){R.$.data+=R.$.nextSibling.data;
+R.$.parentNode.removeChild(R.$.nextSibling);}}else{if(H&&I&&(y.$.parentNode!=H.$.parentNode||z.$.parentNode!=I.$.parentNode)){var S=I.getIndex();if(C&&I.$.parentNode==y.$.parentNode)S--;if(x&&H.type==1){var T=h.createFromHtml('<span data-cke-bookmark="1" style="display:none"> </span>',u.document);T.insertAfter(H);H.mergeSiblings(false);u.moveToBookmark({startNode:T});}else u.setStart(I.getParent(),S);}u.collapse(true);}if(C)y.remove();if(D&&z.$.parentNode)z.remove();},n={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1};function o(u){var v=false,w=d.walker.bookmark(true),x=/^[\t\r\n ]*(?: |\xa0)$/;return function(y){if(w(y))return true;if(y.type==3){if(c&&x.test(y.getText())&&!v&&!(u&&y.getNext()))v=true;else if(y.hasAscendant('pre')||e.trim(y.getText()).length)return false;}else if(y.type==1)if(!n[y.getName()])if(!c&&y.is('br')&&!v&&!(u&&y.getNext()))v=true;else return false;return true;};};var p=d.walker.bogus();function q(u){return function(v){return!u&&p(v)||(v.type==3?!e.trim(v.getText())||!!v.getParent().data('cke-bookmark'):v.getName() in f.$removeEmpty);};};var r=new d.walker.whitespaces(),s=new d.walker.bookmark();function t(u){return!r(u)&&!s(u);};d.range.prototype={clone:function(){var v=this;var u=new d.range(v.document);u.startContainer=v.startContainer;u.startOffset=v.startOffset;u.endContainer=v.endContainer;u.endOffset=v.endOffset;u.collapsed=v.collapsed;return u;},collapse:function(u){var v=this;if(u){v.endContainer=v.startContainer;v.endOffset=v.startOffset;}else{v.startContainer=v.endContainer;v.startOffset=v.endOffset;}v.collapsed=true;},cloneContents:function(){var u=new d.documentFragment(this.document);if(!this.collapsed)m(this,2,u);return u;},deleteContents:function(u){if(this.collapsed)return;m(this,0,null,u);},extractContents:function(u){var v=new d.documentFragment(this.document);if(!this.collapsed)m(this,1,v,u);return v;},createBookmark:function(u){var A=this;var v,w,x,y,z=A.collapsed;v=A.document.createElement('span');v.data('cke-bookmark',1);v.setStyle('display','none');v.setHtml(' ');if(u){x='cke_bm_'+e.getNextNumber();v.setAttribute('id',x+(z?'C':'S'));}if(!z){w=v.clone();w.setHtml(' ');if(u)w.setAttribute('id',x+'E');y=A.clone();y.collapse();y.insertNode(w);}y=A.clone();y.collapse(true);y.insertNode(v);if(w){A.setStartAfter(v);A.setEndBefore(w);}else A.moveToPosition(v,4);return{startNode:u?x+(z?'C':'S'):v,endNode:u?x+'E':w,serializable:u,collapsed:z};
+},createBookmark2:function(u){var C=this;var v=C.startContainer,w=C.endContainer,x=C.startOffset,y=C.endOffset,z=C.collapsed,A,B;if(!v||!w)return{start:0,end:0};if(u){if(v.type==1){A=v.getChild(x);if(A&&A.type==3&&x>0&&A.getPrevious().type==3){v=A;x=0;}if(A&&A.type==1)x=A.getIndex(1);}while(v.type==3&&(B=v.getPrevious())&&B.type==3){v=B;x+=B.getLength();}if(!z){if(w.type==1){A=w.getChild(y);if(A&&A.type==3&&y>0&&A.getPrevious().type==3){w=A;y=0;}if(A&&A.type==1)y=A.getIndex(1);}while(w.type==3&&(B=w.getPrevious())&&B.type==3){w=B;y+=B.getLength();}}}return{start:v.getAddress(u),end:z?null:w.getAddress(u),startOffset:x,endOffset:y,normalized:u,collapsed:z,is2:true};},moveToBookmark:function(u){var C=this;if(u.is2){var v=C.document.getByAddress(u.start,u.normalized),w=u.startOffset,x=u.end&&C.document.getByAddress(u.end,u.normalized),y=u.endOffset;C.setStart(v,w);if(x)C.setEnd(x,y);else C.collapse(true);}else{var z=u.serializable,A=z?C.document.getById(u.startNode):u.startNode,B=z?C.document.getById(u.endNode):u.endNode;C.setStartBefore(A);A.remove();if(B){C.setEndBefore(B);B.remove();}else C.collapse(true);}},getBoundaryNodes:function(){var z=this;var u=z.startContainer,v=z.endContainer,w=z.startOffset,x=z.endOffset,y;if(u.type==1){y=u.getChildCount();if(y>w)u=u.getChild(w);else if(y<1)u=u.getPreviousSourceNode();else{u=u.$;while(u.lastChild)u=u.lastChild;u=new d.node(u);u=u.getNextSourceNode()||u;}}if(v.type==1){y=v.getChildCount();if(y>x)v=v.getChild(x).getPreviousSourceNode(true);else if(y<1)v=v.getPreviousSourceNode();else{v=v.$;while(v.lastChild)v=v.lastChild;v=new d.node(v);}}if(u.getPosition(v)&2)u=v;return{startNode:u,endNode:v};},getCommonAncestor:function(u,v){var z=this;var w=z.startContainer,x=z.endContainer,y;if(w.equals(x)){if(u&&w.type==1&&z.startOffset==z.endOffset-1)y=w.getChild(z.startOffset);else y=w;}else y=w.getCommonAncestor(x);return v&&!y.is?y.getParent():y;},optimize:function(){var w=this;var u=w.startContainer,v=w.startOffset;if(u.type!=1)if(!v)w.setStartBefore(u);else if(v>=u.getLength())w.setStartAfter(u);u=w.endContainer;v=w.endOffset;if(u.type!=1)if(!v)w.setEndBefore(u);else if(v>=u.getLength())w.setEndAfter(u);},optimizeBookmark:function(){var w=this;var u=w.startContainer,v=w.endContainer;if(u.is&&u.is('span')&&u.data('cke-bookmark'))w.setStartAt(u,3);if(v&&v.is&&v.is('span')&&v.data('cke-bookmark'))w.setEndAt(v,4);},trim:function(u,v){var C=this;var w=C.startContainer,x=C.startOffset,y=C.collapsed;if((!u||y)&&w&&w.type==3){if(!x){x=w.getIndex();
+w=w.getParent();}else if(x>=w.getLength()){x=w.getIndex()+1;w=w.getParent();}else{var z=w.split(x);x=w.getIndex()+1;w=w.getParent();if(C.startContainer.equals(C.endContainer))C.setEnd(z,C.endOffset-C.startOffset);else if(w.equals(C.endContainer))C.endOffset+=1;}C.setStart(w,x);if(y){C.collapse(true);return;}}var A=C.endContainer,B=C.endOffset;if(!(v||y)&&A&&A.type==3){if(!B){B=A.getIndex();A=A.getParent();}else if(B>=A.getLength()){B=A.getIndex()+1;A=A.getParent();}else{A.split(B);B=A.getIndex()+1;A=A.getParent();}C.setEnd(A,B);}},enlarge:function(u,v){switch(u){case 1:if(this.collapsed)return;var w=this.getCommonAncestor(),x=this.document.getBody(),y,z,A,B,C,D=false,E,F,G=this.startContainer,H=this.startOffset;if(G.type==3){if(H){G=!e.trim(G.substring(0,H)).length&&G;D=!!G;}if(G)if(!(B=G.getPrevious()))A=G.getParent();}else{if(H)B=G.getChild(H-1)||G.getLast();if(!B)A=G;}while(A||B){if(A&&!B){if(!C&&A.equals(w))C=true;if(!x.contains(A))break;if(!D||A.getComputedStyle('display')!='inline'){D=false;if(C)y=A;else this.setStartBefore(A);}B=A.getPrevious();}while(B){E=false;if(B.type==8){B=B.getPrevious();continue;}else if(B.type==3){F=B.getText();if(/[^\s\ufeff]/.test(F))B=null;E=/[\s\ufeff]$/.test(F);}else if((B.$.offsetWidth>0||v&&B.is('br'))&&!B.data('cke-bookmark'))if(D&&f.$removeEmpty[B.getName()]){F=B.getText();if(/[^\s\ufeff]/.test(F))B=null;else{var I=B.$.getElementsByTagName('*');for(var J=0,K;K=I[J++];){if(!f.$removeEmpty[K.nodeName.toLowerCase()]){B=null;break;}}}if(B)E=!!F.length;}else B=null;if(E)if(D){if(C)y=A;else if(A)this.setStartBefore(A);}else D=true;if(B){var L=B.getPrevious();if(!A&&!L){A=B;B=null;break;}B=L;}else A=null;}if(A)A=A.getParent();}G=this.endContainer;H=this.endOffset;A=B=null;C=D=false;if(G.type==3){G=!e.trim(G.substring(H)).length&&G;D=!(G&&G.getLength());if(G)if(!(B=G.getNext()))A=G.getParent();}else{B=G.getChild(H);if(!B)A=G;}while(A||B){if(A&&!B){if(!C&&A.equals(w))C=true;if(!x.contains(A))break;if(!D||A.getComputedStyle('display')!='inline'){D=false;if(C)z=A;else if(A)this.setEndAfter(A);}B=A.getNext();}while(B){E=false;if(B.type==3){F=B.getText();if(/[^\s\ufeff]/.test(F))B=null;E=/^[\s\ufeff]/.test(F);}else if(B.type==1){if((B.$.offsetWidth>0||v&&B.is('br'))&&!B.data('cke-bookmark'))if(D&&f.$removeEmpty[B.getName()]){F=B.getText();if(/[^\s\ufeff]/.test(F))B=null;else{I=B.$.getElementsByTagName('*');for(J=0;K=I[J++];){if(!f.$removeEmpty[K.nodeName.toLowerCase()]){B=null;break;}}}if(B)E=!!F.length;}else B=null;}else E=1;if(E)if(D)if(C)z=A;
+else this.setEndAfter(A);if(B){L=B.getNext();if(!A&&!L){A=B;B=null;break;}B=L;}else A=null;}if(A)A=A.getParent();}if(y&&z){w=y.contains(z)?z:y;this.setStartBefore(w);this.setEndAfter(w);}break;case 2:case 3:var M=new d.range(this.document);x=this.document.getBody();M.setStartAt(x,1);M.setEnd(this.startContainer,this.startOffset);var N=new d.walker(M),O,P,Q=d.walker.blockBoundary(u==3?{br:1}:null),R=function(X){var Y=Q(X);if(!Y)O=X;return Y;},S=function(X){var Y=R(X);if(!Y&&X.is&&X.is('br'))P=X;return Y;};N.guard=R;A=N.lastBackward();O=O||x;this.setStartAt(O,!O.is('br')&&(!A&&this.checkStartOfBlock()||A&&O.contains(A))?1:4);if(u==3){var T=this.clone();N=new d.walker(T);var U=d.walker.whitespaces(),V=d.walker.bookmark();N.evaluator=function(X){return!U(X)&&!V(X);};var W=N.previous();if(W&&W.type==1&&W.is('br'))return;}M=this.clone();M.collapse();M.setEndAt(x,2);N=new d.walker(M);N.guard=u==3?S:R;O=null;A=N.lastForward();O=O||x;this.setEndAt(O,!A&&this.checkEndOfBlock()||A&&O.contains(A)?2:3);if(P)this.setEndAfter(P);}},shrink:function(u,v){if(!this.collapsed){u=u||2;var w=this.clone(),x=this.startContainer,y=this.endContainer,z=this.startOffset,A=this.endOffset,B=this.collapsed,C=1,D=1;if(x&&x.type==3)if(!z)w.setStartBefore(x);else if(z>=x.getLength())w.setStartAfter(x);else{w.setStartBefore(x);C=0;}if(y&&y.type==3)if(!A)w.setEndBefore(y);else if(A>=y.getLength())w.setEndAfter(y);else{w.setEndAfter(y);D=0;}var E=new d.walker(w),F=d.walker.bookmark();E.evaluator=function(J){return J.type==(u==1?1:3);};var G;E.guard=function(J,K){if(F(J))return true;if(u==1&&J.type==3)return false;if(K&&J.equals(G))return false;if(!K&&J.type==1)G=J;return true;};if(C){var H=E[u==1?'lastForward':'next']();H&&this.setStartAt(H,v?1:3);}if(D){E.reset();var I=E[u==1?'lastBackward':'previous']();I&&this.setEndAt(I,v?2:4);}return!!(C||D);}},insertNode:function(u){var y=this;y.optimizeBookmark();y.trim(false,true);var v=y.startContainer,w=y.startOffset,x=v.getChild(w);if(x)u.insertBefore(x);else v.append(u);if(u.getParent().equals(y.endContainer))y.endOffset++;y.setStartBefore(u);},moveToPosition:function(u,v){this.setStartAt(u,v);this.collapse(true);},selectNodeContents:function(u){this.setStart(u,0);this.setEnd(u,u.type==3?u.getLength():u.getChildCount());},setStart:function(u,v){var w=this;if(u.type==1&&f.$empty[u.getName()])v=u.getIndex(),u=u.getParent();w.startContainer=u;w.startOffset=v;if(!w.endContainer){w.endContainer=u;w.endOffset=v;}l(w);},setEnd:function(u,v){var w=this;if(u.type==1&&f.$empty[u.getName()])v=u.getIndex()+1,u=u.getParent();
+w.endContainer=u;w.endOffset=v;if(!w.startContainer){w.startContainer=u;w.startOffset=v;}l(w);},setStartAfter:function(u){this.setStart(u.getParent(),u.getIndex()+1);},setStartBefore:function(u){this.setStart(u.getParent(),u.getIndex());},setEndAfter:function(u){this.setEnd(u.getParent(),u.getIndex()+1);},setEndBefore:function(u){this.setEnd(u.getParent(),u.getIndex());},setStartAt:function(u,v){var w=this;switch(v){case 1:w.setStart(u,0);break;case 2:if(u.type==3)w.setStart(u,u.getLength());else w.setStart(u,u.getChildCount());break;case 3:w.setStartBefore(u);break;case 4:w.setStartAfter(u);}l(w);},setEndAt:function(u,v){var w=this;switch(v){case 1:w.setEnd(u,0);break;case 2:if(u.type==3)w.setEnd(u,u.getLength());else w.setEnd(u,u.getChildCount());break;case 3:w.setEndBefore(u);break;case 4:w.setEndAfter(u);}l(w);},fixBlock:function(u,v){var y=this;var w=y.createBookmark(),x=y.document.createElement(v);y.collapse(u);y.enlarge(2);y.extractContents().appendTo(x);x.trim();if(!c)x.appendBogus();y.insertNode(x);y.moveToBookmark(w);return x;},splitBlock:function(u){var E=this;var v=new d.elementPath(E.startContainer),w=new d.elementPath(E.endContainer),x=v.blockLimit,y=w.blockLimit,z=v.block,A=w.block,B=null;if(!x.equals(y))return null;if(u!='br'){if(!z){z=E.fixBlock(true,u);A=new d.elementPath(E.endContainer).block;}if(!A)A=E.fixBlock(false,u);}var C=z&&E.checkStartOfBlock(),D=A&&E.checkEndOfBlock();E.deleteContents();if(z&&z.equals(A))if(D){B=new d.elementPath(E.startContainer);E.moveToPosition(A,4);A=null;}else if(C){B=new d.elementPath(E.startContainer);E.moveToPosition(z,3);z=null;}else{A=E.splitElement(z);if(!c&&!z.is('ul','ol'))z.appendBogus();}return{previousBlock:z,nextBlock:A,wasStartOfBlock:C,wasEndOfBlock:D,elementPath:B};},splitElement:function(u){var x=this;if(!x.collapsed)return null;x.setEndAt(u,2);var v=x.extractContents(),w=u.clone(false);v.appendTo(w);w.insertAfter(u);x.moveToPosition(u,4);return w;},checkBoundaryOfElement:function(u,v){var w=v==1,x=this.clone();x.collapse(w);x[w?'setStartAt':'setEndAt'](u,w?1:2);var y=new d.walker(x);y.evaluator=q(w);return y[w?'checkBackward':'checkForward']();},checkStartOfBlock:function(){var A=this;var u=A.startContainer,v=A.startOffset;if(v&&u.type==3){var w=e.ltrim(u.substring(0,v));if(w.length)return false;}var x=new d.elementPath(A.startContainer),y=A.clone();y.collapse(true);y.setStartAt(x.block||x.blockLimit,1);var z=new d.walker(y);z.evaluator=o(true);return z.checkBackward();},checkEndOfBlock:function(){var A=this;
+var u=A.endContainer,v=A.endOffset;if(u.type==3){var w=e.rtrim(u.substring(v));if(w.length)return false;}var x=new d.elementPath(A.endContainer),y=A.clone();y.collapse(false);y.setEndAt(x.block||x.blockLimit,2);var z=new d.walker(y);z.evaluator=o(false);return z.checkForward();},checkReadOnly:(function(){function u(v,w){while(v){if(v.type==1)if(v.getAttribute('contentEditable')=='false'&&!v.data('cke-editable'))return 0;else if(v.is('html')||v.getAttribute('contentEditable')=='true'&&(v.contains(w)||v.equals(w)))break;v=v.getParent();}return 1;};return function(){var v=this.startContainer,w=this.endContainer;return!(u(v,w)&&u(w,v));};})(),moveToElementEditablePosition:function(u,v){var w=/^[\t\r\n ]*(?: |\xa0)$/;function x(z,A){var B;if(z.type==1&&z.isEditable(false))B=z[v?'getLast':'getFirst'](t);if(!A&&!B)B=z[v?'getPrevious':'getNext'](t);return B;};if(u.type==1&&!u.isEditable(false)){this.moveToPosition(u,v?4:3);return true;}var y=0;while(u){if(u.type==3){if(v&&this.checkEndOfBlock()&&w.test(u.getText()))this.moveToPosition(u,3);else this.moveToPosition(u,v?4:3);y=1;break;}if(u.type==1)if(u.isEditable()){this.moveToPosition(u,v?2:1);y=1;}else if(v&&u.is('br')&&this.checkEndOfBlock())this.moveToPosition(u,3);u=x(u,y);}return!!y;},moveToElementEditStart:function(u){return this.moveToElementEditablePosition(u);},moveToElementEditEnd:function(u){return this.moveToElementEditablePosition(u,true);},getEnclosedNode:function(){var u=this.clone();u.optimize();if(u.startContainer.type!=1||u.endContainer.type!=1)return null;var v=new d.walker(u),w=d.walker.bookmark(true),x=d.walker.whitespaces(true),y=function(A){return x(A)&&w(A);};u.evaluator=y;var z=v.next();v.reset();return z&&z.equals(v.previous())?z:null;},getTouchedStartNode:function(){var u=this.startContainer;if(this.collapsed||u.type!=1)return u;return u.getChild(this.startOffset)||u;},getTouchedEndNode:function(){var u=this.endContainer;if(this.collapsed||u.type!=1)return u;return u.getChild(this.endOffset-1)||u;}};})();a.POSITION_AFTER_START=1;a.POSITION_BEFORE_END=2;a.POSITION_BEFORE_START=3;a.POSITION_AFTER_END=4;a.ENLARGE_ELEMENT=1;a.ENLARGE_BLOCK_CONTENTS=2;a.ENLARGE_LIST_ITEM_CONTENTS=3;a.START=1;a.END=2;a.STARTEND=3;a.SHRINK_ELEMENT=1;a.SHRINK_TEXT=2;(function(){d.rangeList=function(n){if(n instanceof d.rangeList)return n;if(!n)n=[];else if(n instanceof d.range)n=[n];return e.extend(n,l);};var l={createIterator:function(){var n=this,o=d.walker.bookmark(),p=function(s){return!(s.is&&s.is('tr'));
+},q=[],r;return{getNextRange:function(s){r=r==undefined?0:r+1;var t=n[r];if(t&&n.length>1){if(!r)for(var u=n.length-1;u>=0;u--)q.unshift(n[u].createBookmark(true));if(s){var v=0;while(n[r+v+1]){var w=t.document,x=0,y=w.getById(q[v].endNode),z=w.getById(q[v+1].startNode),A;while(1){A=y.getNextSourceNode(false);if(!z.equals(A)){if(o(A)||A.type==1&&A.isBlockBoundary()){y=A;continue;}}else x=1;break;}if(!x)break;v++;}}t.moveToBookmark(q.shift());while(v--){A=n[++r];A.moveToBookmark(q.shift());t.setEnd(A.endContainer,A.endOffset);}}return t;}};},createBookmarks:function(n){var s=this;var o=[],p;for(var q=0;q<s.length;q++){o.push(p=s[q].createBookmark(n,true));for(var r=q+1;r<s.length;r++){s[r]=m(p,s[r]);s[r]=m(p,s[r],true);}}return o;},createBookmarks2:function(n){var o=[];for(var p=0;p<this.length;p++)o.push(this[p].createBookmark2(n));return o;},moveToBookmarks:function(n){for(var o=0;o<this.length;o++)this[o].moveToBookmark(n[o]);}};function m(n,o,p){var q=n.serializable,r=o[p?'endContainer':'startContainer'],s=p?'endOffset':'startOffset',t=q?o.document.getById(n.startNode):n.startNode,u=q?o.document.getById(n.endNode):n.endNode;if(r.equals(t.getPrevious())){o.startOffset=o.startOffset-r.getLength()-u.getPrevious().getLength();r=u.getNext();}else if(r.equals(u.getPrevious())){o.startOffset=o.startOffset-r.getLength();r=u.getNext();}r.equals(t.getParent())&&o[s]++;r.equals(u.getParent())&&o[s]++;o[p?'endContainer':'startContainer']=r;return o;};})();(function(){if(b.webkit){b.hc=false;return;}var l=h.createFromHtml('<div style="width:0px;height:0px;position:absolute;left:-10000px;border: 1px solid;border-color: red blue;"></div>',a.document);l.appendTo(a.document.getHead());try{b.hc=l.getComputedStyle('border-top-color')==l.getComputedStyle('border-right-color');}catch(m){b.hc=false;}if(b.hc)b.cssClass+=' cke_hc';l.remove();})();j.load(i.corePlugins.split(','),function(){a.status='loaded';a.fire('loaded');var l=a._.pending;if(l){delete a._.pending;for(var m=0;m<l.length;m++)a.add(l[m]);}});if(c)try{document.execCommand('BackgroundImageCache',false,true);}catch(l){}a.skins.add('kama',(function(){var m='cke_ui_color';return{editor:{css:['editor.css']},dialog:{css:['dialog.css']},richcombo:{canGroup:false},templates:{css:['templates.css']},margins:[0,0,0,0],init:function(n){if(n.config.width&&!isNaN(n.config.width))n.config.width-=12;var o=[],p=/\$color/g,q='/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';
+if(b.webkit){q=q.split('}').slice(0,-1);for(var r=0;r<q.length;r++)q[r]=q[r].split('{');}function s(v){var w=v.getById(m);if(!w){w=v.getHead().append('style');w.setAttribute('id',m);w.setAttribute('type','text/css');}return w;};function t(v,w,x){var y,z,A;for(var B=0;B<v.length;B++){if(b.webkit)for(z=0;z<w.length;z++){A=w[z][1];for(y=0;y<x.length;y++)A=A.replace(x[y][0],x[y][1]);v[B].$.sheet.addRule(w[z][0],A);}else{A=w;for(y=0;y<x.length;y++)A=A.replace(x[y][0],x[y][1]);if(c)v[B].$.styleSheet.cssText+=A;else v[B].$.innerHTML+=A;}}};var u=/\$color/g;e.extend(n,{uiColor:null,getUiColor:function(){return this.uiColor;},setUiColor:function(v){var w,x=s(a.document),y='.'+n.id,z=[y+' .cke_wrapper',y+'_dialog .cke_dialog_contents',y+'_dialog a.cke_dialog_tab',y+'_dialog .cke_dialog_footer'].join(','),A='background-color: $color !important;';if(b.webkit)w=[[z,A]];else w=z+'{'+A+'}';return(this.setUiColor=function(B){var C=[[u,B]];n.uiColor=B;t([x],w,C);t(o,q,C);})(v);}});n.on('menuShow',function(v){var w=v.data[0],x=w.element.getElementsByTag('iframe').getItem(0).getFrameDocument();if(!x.getById('cke_ui_color')){var y=s(x);o.push(y);var z=n.getUiColor();if(z)t([y],q,[[u,z]]);}});if(n.config.uiColor)n.setUiColor(n.config.uiColor);}};})());(function(){a.dialog?m():a.on('dialogPluginReady',m);function m(){a.dialog.on('resize',function(n){var o=n.data,p=o.width,q=o.height,r=o.dialog,s=r.parts.contents;if(o.skin!='kama')return;s.setStyles({width:p+'px',height:q+'px'});});};})();j.add('about',{requires:['dialog'],init:function(m){var n=m.addCommand('about',new a.dialogCommand('about'));n.modes={wysiwyg:1,source:1};n.canUndo=false;n.readOnly=1;m.ui.addButton('About',{label:m.lang.about.title,command:'about'});a.dialog.add('about',this.path+'dialogs/about.js');}});(function(){var m='a11yhelp',n='a11yHelp';j.add(m,{requires:['dialog'],availableLangs:{cs:1,cy:1,da:1,de:1,el:1,en:1,eo:1,fa:1,fi:1,fr:1,gu:1,he:1,it:1,mk:1,nb:1,nl:1,no:1,'pt-br':1,ro:1,tr:1,ug:1,vi:1,'zh-cn':1},init:function(o){var p=this;o.addCommand(n,{exec:function(){var q=o.langCode;q=p.availableLangs[q]?q:'en';a.scriptLoader.load(a.getUrl(p.path+'lang/'+q+'.js'),function(){e.extend(o.lang,p.langEntries[q]);o.openDialog(n);});},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:false});a.dialog.add(n,this.path+'dialogs/a11yhelp.js');}});})();j.add('basicstyles',{requires:['styles','button'],init:function(m){var n=function(q,r,s,t){var u=new a.style(t);m.attachStyleStateChange(u,function(v){!m.readOnly&&m.getCommand(s).setState(v);
+});m.addCommand(s,new a.styleCommand(u));m.ui.addButton(q,{label:r,command:s});},o=m.config,p=m.lang;n('Bold',p.bold,'bold',o.coreStyles_bold);n('Italic',p.italic,'italic',o.coreStyles_italic);n('Underline',p.underline,'underline',o.coreStyles_underline);n('Strike',p.strike,'strike',o.coreStyles_strike);n('Subscript',p.subscript,'subscript',o.coreStyles_subscript);n('Superscript',p.superscript,'superscript',o.coreStyles_superscript);}});i.coreStyles_bold={element:'strong',overrides:'b'};i.coreStyles_italic={element:'em',overrides:'i'};i.coreStyles_underline={element:'u'};i.coreStyles_strike={element:'strike'};i.coreStyles_subscript={element:'sub'};i.coreStyles_superscript={element:'sup'};(function(){var m={table:1,ul:1,ol:1,blockquote:1,div:1},n={},o={};e.extend(n,m,{tr:1,p:1,div:1,li:1});e.extend(o,n,{td:1});function p(B){q(B);r(B);};function q(B){var C=B.editor,D=B.data.path;if(C.readOnly)return;var E=C.config.useComputedState,F;E=E===undefined||E;if(!E)F=s(D.lastElement);F=F||D.block||D.blockLimit;if(F.is('body')){var G=C.getSelection().getRanges()[0].getEnclosedNode();G&&G.type==1&&(F=G);}if(!F)return;var H=E?F.getComputedStyle('direction'):F.getStyle('direction')||F.getAttribute('dir');C.getCommand('bidirtl').setState(H=='rtl'?1:2);C.getCommand('bidiltr').setState(H=='ltr'?1:2);};function r(B){var C=B.editor,D=B.data.path.block||B.data.path.blockLimit;C.fire('contentDirChanged',D?D.getComputedStyle('direction'):C.lang.dir);};function s(B){while(B&&!(B.getName() in o||B.is('body'))){var C=B.getParent();if(!C)break;B=C;}return B;};function t(B,C,D,E){if(B.isReadOnly())return;h.setMarker(E,B,'bidi_processed',1);var F=B;while((F=F.getParent())&&!F.is('body')){if(F.getCustomData('bidi_processed')){B.removeStyle('direction');B.removeAttribute('dir');return;}}var G='useComputedState' in D.config?D.config.useComputedState:1,H=G?B.getComputedStyle('direction'):B.getStyle('direction')||B.hasAttribute('dir');if(H==C)return;B.removeStyle('direction');if(G){B.removeAttribute('dir');if(C!=B.getComputedStyle('direction'))B.setAttribute('dir',C);}else B.setAttribute('dir',C);D.forceNextSelectionCheck();};function u(B,C,D){var E=B.getCommonAncestor(false,true);B=B.clone();B.enlarge(D==2?3:2);if(B.checkBoundaryOfElement(E,1)&&B.checkBoundaryOfElement(E,2)){var F;while(E&&E.type==1&&(F=E.getParent())&&F.getChildCount()==1&&!(E.getName() in C))E=F;return E.type==1&&E.getName() in C&&E;}};function v(B){return function(C){var D=C.getSelection(),E=C.config.enterMode,F=D.getRanges();
+if(F&&F.length){var G={},H=D.createBookmarks(),I=F.createIterator(),J,K=0;while(J=I.getNextRange(1)){var L=J.getEnclosedNode();if(!L||L&&!(L.type==1&&L.getName() in n))L=u(J,m,E);L&&t(L,B,C,G);var M,N,O=new d.walker(J),P=H[K].startNode,Q=H[K++].endNode;O.evaluator=function(R){return!!(R.type==1&&R.getName() in m&&!(R.getName()==(E==1?'p':'div')&&R.getParent().type==1&&R.getParent().getName()=='blockquote')&&R.getPosition(P)&2&&(R.getPosition(Q)&4+16)==4);};while(N=O.next())t(N,B,C,G);M=J.createIterator();M.enlargeBr=E!=2;while(N=M.getNextParagraph(E==1?'p':'div'))t(N,B,C,G);}h.clearAllMarkers(G);C.forceNextSelectionCheck();D.selectBookmarks(H);C.focus();}};};j.add('bidi',{requires:['styles','button'],init:function(B){var C=function(E,F,G,H){B.addCommand(G,new a.command(B,{exec:H}));B.ui.addButton(E,{label:F,command:G});},D=B.lang.bidi;C('BidiLtr',D.ltr,'bidiltr',v('ltr'));C('BidiRtl',D.rtl,'bidirtl',v('rtl'));B.on('selectionChange',p);B.on('contentDom',function(){B.document.on('dirChanged',function(E){B.fire('dirChanged',{node:E.data,dir:E.data.getDirection(1)});});});}});function w(B){var C=B.getDocument().getBody().getParent();while(B){if(B.equals(C))return false;B=B.getParent();}return true;};function x(B){var C=B==y.setAttribute,D=B==y.removeAttribute,E=/\bdirection\s*:\s*(.*?)\s*(:?$|;)/;return function(F,G){var J=this;if(!J.getDocument().equals(a.document)){var H;if((F==(C||D?'dir':'direction')||F=='style'&&(D||E.test(G)))&&!w(J)){H=J.getDirection(1);var I=B.apply(J,arguments);if(H!=J.getDirection(1)){J.getDocument().fire('dirChanged',J);return I;}}}return B.apply(J,arguments);};};var y=h.prototype,z=['setStyle','removeStyle','setAttribute','removeAttribute'];for(var A=0;A<z.length;A++)y[z[A]]=e.override(y[z[A]],x);})();(function(){function m(q,r){var s=r.block||r.blockLimit;if(!s||s.getName()=='body')return 2;if(s.getAscendant('blockquote',true))return 1;return 2;};function n(q){var r=q.editor;if(r.readOnly)return;var s=r.getCommand('blockquote');s.state=m(r,q.data.path);s.fire('state');};function o(q){for(var r=0,s=q.getChildCount(),t;r<s&&(t=q.getChild(r));r++){if(t.type==1&&t.isBlockBoundary())return false;}return true;};var p={exec:function(q){var r=q.getCommand('blockquote').state,s=q.getSelection(),t=s&&s.getRanges(true)[0];if(!t)return;var u=s.createBookmarks();if(c){var v=u[0].startNode,w=u[0].endNode,x;if(v&&v.getParent().getName()=='blockquote'){x=v;while(x=x.getNext()){if(x.type==1&&x.isBlockBoundary()){v.move(x,true);break;}}}if(w&&w.getParent().getName()=='blockquote'){x=w;
+while(x=x.getPrevious()){if(x.type==1&&x.isBlockBoundary()){w.move(x);break;}}}}var y=t.createIterator(),z;y.enlargeBr=q.config.enterMode!=2;if(r==2){var A=[];while(z=y.getNextParagraph())A.push(z);if(A.length<1){var B=q.document.createElement(q.config.enterMode==1?'p':'div'),C=u.shift();t.insertNode(B);B.append(new d.text('\ufeff',q.document));t.moveToBookmark(C);t.selectNodeContents(B);t.collapse(true);C=t.createBookmark();A.push(B);u.unshift(C);}var D=A[0].getParent(),E=[];for(var F=0;F<A.length;F++){z=A[F];D=D.getCommonAncestor(z.getParent());}var G={table:1,tbody:1,tr:1,ol:1,ul:1};while(G[D.getName()])D=D.getParent();var H=null;while(A.length>0){z=A.shift();while(!z.getParent().equals(D))z=z.getParent();if(!z.equals(H))E.push(z);H=z;}while(E.length>0){z=E.shift();if(z.getName()=='blockquote'){var I=new d.documentFragment(q.document);while(z.getFirst()){I.append(z.getFirst().remove());A.push(I.getLast());}I.replace(z);}else A.push(z);}var J=q.document.createElement('blockquote');J.insertBefore(A[0]);while(A.length>0){z=A.shift();J.append(z);}}else if(r==1){var K=[],L={};while(z=y.getNextParagraph()){var M=null,N=null;while(z.getParent()){if(z.getParent().getName()=='blockquote'){M=z.getParent();N=z;break;}z=z.getParent();}if(M&&N&&!N.getCustomData('blockquote_moveout')){K.push(N);h.setMarker(L,N,'blockquote_moveout',true);}}h.clearAllMarkers(L);var O=[],P=[];L={};while(K.length>0){var Q=K.shift();J=Q.getParent();if(!Q.getPrevious())Q.remove().insertBefore(J);else if(!Q.getNext())Q.remove().insertAfter(J);else{Q.breakParent(Q.getParent());P.push(Q.getNext());}if(!J.getCustomData('blockquote_processed')){P.push(J);h.setMarker(L,J,'blockquote_processed',true);}O.push(Q);}h.clearAllMarkers(L);for(F=P.length-1;F>=0;F--){J=P[F];if(o(J))J.remove();}if(q.config.enterMode==2){var R=true;while(O.length){Q=O.shift();if(Q.getName()=='div'){I=new d.documentFragment(q.document);var S=R&&Q.getPrevious()&&!(Q.getPrevious().type==1&&Q.getPrevious().isBlockBoundary());if(S)I.append(q.document.createElement('br'));var T=Q.getNext()&&!(Q.getNext().type==1&&Q.getNext().isBlockBoundary());while(Q.getFirst())Q.getFirst().remove().appendTo(I);if(T)I.append(q.document.createElement('br'));I.replace(Q);R=false;}}}}s.selectBookmarks(u);q.focus();}};j.add('blockquote',{init:function(q){q.addCommand('blockquote',p);q.ui.addButton('Blockquote',{label:q.lang.blockquote,command:'blockquote'});q.on('selectionChange',n);},requires:['domiterator']});})();j.add('button',{beforeInit:function(m){m.ui.addHandler('button',k.button.handler);
+}});a.UI_BUTTON='button';k.button=function(m){e.extend(this,m,{title:m.label,className:m.className||m.command&&'cke_button_'+m.command||'',click:m.click||(function(n){n.execCommand(m.command);})});this._={};};k.button.handler={create:function(m){return new k.button(m);}};(function(){k.button.prototype={render:function(m,n){var o=b,p=this._.id=e.getNextId(),q='',r=this.command,s;this._.editor=m;var t={id:p,button:this,editor:m,focus:function(){var z=a.document.getById(p);z.focus();},execute:function(){if(c&&b.version<7)e.setTimeout(function(){this.button.click(m);},0,this);else this.button.click(m);}},u=e.addFunction(function(z){if(t.onkey){z=new d.event(z);return t.onkey(t,z.getKeystroke())!==false;}}),v=e.addFunction(function(z){var A;if(t.onfocus)A=t.onfocus(t,new d.event(z))!==false;if(b.gecko&&b.version<10900)z.preventBubble();return A;});t.clickFn=s=e.addFunction(t.execute,t);if(this.modes){var w={};function x(){var z=m.mode;if(z){var A=this.modes[z]?w[z]!=undefined?w[z]:2:0;this.setState(m.readOnly&&!this.readOnly?0:A);}};m.on('beforeModeUnload',function(){if(m.mode&&this._.state!=0)w[m.mode]=this._.state;},this);m.on('mode',x,this);!this.readOnly&&m.on('readOnly',x,this);}else if(r){r=m.getCommand(r);if(r){r.on('state',function(){this.setState(r.state);},this);q+='cke_'+(r.state==1?'on':r.state==0?'disabled':'off');}}if(!r)q+='cke_off';if(this.className)q+=' '+this.className;n.push('<span class="cke_button'+(this.icon&&this.icon.indexOf('.png')==-1?' cke_noalphafix':'')+'">','<a id="',p,'" class="',q,'"',o.gecko&&o.version>=10900&&!o.hc?'':'" href="javascript:void(\''+(this.title||'').replace("'",'')+"')\"",' title="',this.title,'" tabindex="-1" hidefocus="true" role="button" aria-labelledby="'+p+'_label"'+(this.hasArrow?' aria-haspopup="true"':''));if(o.opera||o.gecko&&o.mac)n.push(' onkeypress="return false;"');if(o.gecko)n.push(' onblur="this.style.cssText = this.style.cssText;"');n.push(' onkeydown="return CKEDITOR.tools.callFunction(',u,', event);" onfocus="return CKEDITOR.tools.callFunction(',v,', event);" '+(c?'onclick="return false;" onmouseup':'onclick')+'="CKEDITOR.tools.callFunction(',s,', this); return false;"><span class="cke_icon"');if(this.icon){var y=(this.iconOffset||0)*-16;n.push(' style="background-image:url(',a.getUrl(this.icon),');background-position:0 '+y+'px;"');}n.push('> </span><span id="',p,'_label" class="cke_label">',this.label,'</span>');if(this.hasArrow)n.push('<span class="cke_buttonarrow">'+(b.hc?'▼':' ')+'</span>');
+n.push('</a>','</span>');if(this.onRender)this.onRender();return t;},setState:function(m){if(this._.state==m)return false;this._.state=m;var n=a.document.getById(this._.id);if(n){n.setState(m);m==0?n.setAttribute('aria-disabled',true):n.removeAttribute('aria-disabled');m==1?n.setAttribute('aria-pressed',true):n.removeAttribute('aria-pressed');return true;}else return false;}};})();k.prototype.addButton=function(m,n){this.add(m,'button',n);};(function(){var m=function(y,z){var A=y.document,B=A.getBody(),C=false,D=function(){C=true;};B.on(z,D);(b.version>7?A.$:A.$.selection.createRange()).execCommand(z);B.removeListener(z,D);return C;},n=c?function(y,z){return m(y,z);}:function(y,z){try{return y.document.$.execCommand(z,false,null);}catch(A){return false;}},o=function(y){var z=this;z.type=y;z.canUndo=z.type=='cut';z.startDisabled=true;};o.prototype={exec:function(y,z){this.type=='cut'&&t(y);var A=n(y,this.type);if(!A)alert(y.lang.clipboard[this.type+'Error']);return A;}};var p={canUndo:false,exec:c?function(y){y.focus();if(!y.document.getBody().fire('beforepaste')&&!m(y,'paste')){y.fire('pasteDialog');return false;}}:function(y){try{if(!y.document.getBody().fire('beforepaste')&&!y.document.$.execCommand('Paste',false,null))throw 0;}catch(z){setTimeout(function(){y.fire('pasteDialog');},0);return false;}}},q=function(y){if(this.mode!='wysiwyg')return;switch(y.data.keyCode){case 1114112+86:case 2228224+45:var z=this.document.getBody();if(b.opera||b.gecko)z.fire('paste');return;case 1114112+88:case 2228224+46:var A=this;this.fire('saveSnapshot');setTimeout(function(){A.fire('saveSnapshot');},0);}};function r(y){y.cancel();};function s(y,z,A){var B=this.document;if(B.getById('cke_pastebin'))return;if(z=='text'&&y.data&&y.data.$.clipboardData){var C=y.data.$.clipboardData.getData('text/plain');if(C){y.data.preventDefault();A(C);return;}}var D=this.getSelection(),E=new d.range(B),F=new h(z=='text'?'textarea':b.webkit?'body':'div',B);F.setAttribute('id','cke_pastebin');b.webkit&&F.append(B.createText('\xa0'));B.getBody().append(F);F.setStyles({position:'absolute',top:D.getStartElement().getDocumentPosition().y+'px',width:'1px',height:'1px',overflow:'hidden'});F.setStyle(this.config.contentsLangDirection=='ltr'?'left':'right','-1000px');var G=D.createBookmarks();this.on('selectionChange',r,null,null,0);if(z=='text')F.$.focus();else{E.setStartAt(F,1);E.setEndAt(F,2);E.select(true);}var H=this;window.setTimeout(function(){H.document.getBody().focus();H.removeListener('selectionChange',r);
+if(b.ie7Compat){D.selectBookmarks(G);F.remove();}else{F.remove();D.selectBookmarks(G);}var I;F=b.webkit&&(I=F.getFirst())&&I.is&&I.hasClass('Apple-style-span')?I:F;A(F['get'+(z=='text'?'Value':'Html')]());},0);};function t(y){if(!c||b.quirks)return;var z=y.getSelection(),A;if(z.getType()==3&&(A=z.getSelectedElement())){var B=z.getRanges()[0],C=y.document.createText('');C.insertBefore(A);B.setStartBefore(C);B.setEndAfter(A);z.selectRanges([B]);setTimeout(function(){if(A.getParent()){C.remove();z.selectElement(A);}},0);}};var u,v;function w(y,z){var A;if(v&&y in {Paste:1,Cut:1})return 0;if(y=='Paste'){c&&(u=1);try{A=z.document.$.queryCommandEnabled(y)||b.webkit;}catch(D){}u=0;}else{var B=z.getSelection(),C=B&&B.getRanges();A=B&&!(C.length==1&&C[0].collapsed);}return A?2:0;};function x(){var z=this;if(z.mode!='wysiwyg')return;var y=w('Paste',z);z.getCommand('cut').setState(w('Cut',z));z.getCommand('copy').setState(w('Copy',z));z.getCommand('paste').setState(y);z.fire('pasteState',y);};j.add('clipboard',{requires:['dialog','htmldataprocessor'],init:function(y){y.on('paste',function(A){var B=A.data;if(B.html)y.insertHtml(B.html);else if(B.text)y.insertText(B.text);setTimeout(function(){y.fire('afterPaste');},0);},null,null,1000);y.on('pasteDialog',function(A){setTimeout(function(){y.openDialog('paste');},0);});y.on('pasteState',function(A){y.getCommand('paste').setState(A.data);});function z(A,B,C,D){var E=y.lang[B];y.addCommand(B,C);y.ui.addButton(A,{label:E,command:B});if(y.addMenuItems)y.addMenuItem(B,{label:E,command:B,group:'clipboard',order:D});};z('Cut','cut',new o('cut'),1);z('Copy','copy',new o('copy'),4);z('Paste','paste',p,8);a.dialog.add('paste',a.getUrl(this.path+'dialogs/paste.js'));y.on('key',q,y);y.on('contentDom',function(){var A=y.document.getBody();A.on(!c?'paste':'beforepaste',function(B){if(u)return;var C=B.data&&B.data.$;if(c&&C&&!C.ctrlKey)return;var D={mode:'html'};y.fire('beforePaste',D);s.call(y,B,D.mode,function(E){if(!(E=e.trim(E.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig,''))))return;var F={};F[D.mode]=E;y.fire('paste',F);});});if(c){A.on('contextmenu',function(){u=1;setTimeout(function(){u=0;},0);});A.on('paste',function(B){if(!y.document.getById('cke_pastebin')){B.data.preventDefault();u=0;p.exec(y);}});}A.on('beforecut',function(){!u&&t(y);});A.on('mouseup',function(){setTimeout(function(){x.call(y);},0);},y);A.on('keyup',x,y);});y.on('selectionChange',function(A){v=A.data.selection.getRanges()[0].checkReadOnly();x.call(y);
+});if(y.contextMenu)y.contextMenu.addListener(function(A,B){var C=B.getRanges()[0].checkReadOnly();return{cut:w('Cut',y),copy:w('Copy',y),paste:w('Paste',y)};});}});})();j.add('colorbutton',{requires:['panelbutton','floatpanel','styles'],init:function(m){var n=m.config,o=m.lang.colorButton,p;if(!b.hc){q('TextColor','fore',o.textColorTitle);q('BGColor','back',o.bgColorTitle);}function q(t,u,v){var w=e.getNextId()+'_colorBox';m.ui.add(t,'panelbutton',{label:v,title:v,className:'cke_button_'+t.toLowerCase(),modes:{wysiwyg:1},panel:{css:m.skin.editor.css,attributes:{role:'listbox','aria-label':o.panelTitle}},onBlock:function(x,y){y.autoSize=true;y.element.addClass('cke_colorblock');y.element.setHtml(r(x,u,w));y.element.getDocument().getBody().setStyle('overflow','hidden');k.fire('ready',this);var z=y.keys,A=m.lang.dir=='rtl';z[A?37:39]='next';z[40]='next';z[9]='next';z[A?39:37]='prev';z[38]='prev';z[2228224+9]='prev';z[32]='click';},onOpen:function(){var x=m.getSelection(),y=x&&x.getStartElement(),z=new d.elementPath(y),A;y=z.block||z.blockLimit||m.document.getBody();do A=y&&y.getComputedStyle(u=='back'?'background-color':'color')||'transparent';while(u=='back'&&A=='transparent'&&y&&(y=y.getParent()));if(!A||A=='transparent')A='#ffffff';this._.panel._.iframe.getFrameDocument().getById(w).setStyle('background-color',A);}});};function r(t,u,v){var w=[],x=n.colorButton_colors.split(','),y=e.addFunction(function(E,F){if(E=='?'){var G=arguments.callee;function H(J){this.removeListener('ok',H);this.removeListener('cancel',H);J.name=='ok'&&G(this.getContentElement('picker','selectedColor').getValue(),F);};m.openDialog('colordialog',function(){this.on('ok',H);this.on('cancel',H);});return;}m.focus();t.hide(false);m.fire('saveSnapshot');new a.style(n['colorButton_'+F+'Style'],{color:'inherit'}).remove(m.document);if(E){var I=n['colorButton_'+F+'Style'];I.childRule=F=='back'?function(J){return s(J);}:function(J){return!(J.is('a')||J.getElementsByTag('a').count())||s(J);};new a.style(I,{color:E}).apply(m.document);}m.fire('saveSnapshot');});w.push('<a class="cke_colorauto" _cke_focus=1 hidefocus=true title="',o.auto,'" onclick="CKEDITOR.tools.callFunction(',y,",null,'",u,"');return false;\" href=\"javascript:void('",o.auto,'\')" role="option"><table role="presentation" cellspacing=0 cellpadding=0 width="100%"><tr><td><span class="cke_colorbox" id="',v,'"></span></td><td colspan=7 align=center>',o.auto,'</td></tr></table></a><table role="presentation" cellspacing=0 cellpadding=0 width="100%">');
+for(var z=0;z<x.length;z++){if(z%8===0)w.push('</tr><tr>');var A=x[z].split('/'),B=A[0],C=A[1]||B;if(!A[1])B='#'+B.replace(/^(.)(.)(.)$/,'$1$1$2$2$3$3');var D=m.lang.colors[C]||C;w.push('<td><a class="cke_colorbox" _cke_focus=1 hidefocus=true title="',D,'" onclick="CKEDITOR.tools.callFunction(',y,",'",B,"','",u,"'); return false;\" href=\"javascript:void('",D,'\')" role="option"><span class="cke_colorbox" style="background-color:#',C,'"></span></a></td>');}if(n.colorButton_enableMore===undefined||n.colorButton_enableMore)w.push('</tr><tr><td colspan=8 align=center><a class="cke_colormore" _cke_focus=1 hidefocus=true title="',o.more,'" onclick="CKEDITOR.tools.callFunction(',y,",'?','",u,"');return false;\" href=\"javascript:void('",o.more,"')\"",' role="option">',o.more,'</a></td>');w.push('</tr></table>');return w.join('');};function s(t){return t.getAttribute('contentEditable')=='false'||t.getAttribute('data-nostyle');};}});i.colorButton_colors='000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF';i.colorButton_foreStyle={element:'span',styles:{color:'#(color)'},overrides:[{element:'font',attributes:{color:null}}]};i.colorButton_backStyle={element:'span',styles:{'background-color':'#(color)'}};j.colordialog={requires:['dialog'],init:function(m){m.addCommand('colordialog',new a.dialogCommand('colordialog'));a.dialog.add('colordialog',this.path+'dialogs/colordialog.js');}};j.add('colordialog',j.colordialog);j.add('contextmenu',{requires:['menu'],onLoad:function(){j.contextMenu=e.createClass({base:a.menu,$:function(m){this.base.call(this,m,{panel:{className:m.skinClass+' cke_contextmenu',attributes:{'aria-label':m.lang.contextmenu.options}}});},proto:{addTarget:function(m,n){if(b.opera&&!('oncontextmenu' in document.body)){var o;m.on('mousedown',function(s){s=s.data;if(s.$.button!=2){if(s.getKeystroke()==1114112+1)m.fire('contextmenu',s);return;}if(n&&(b.mac?s.$.metaKey:s.$.ctrlKey))return;var t=s.getTarget();if(!o){var u=t.getDocument();o=u.createElement('input');o.$.type='button';u.getBody().append(o);}o.setAttribute('style','position:absolute;top:'+(s.$.clientY-2)+'px;left:'+(s.$.clientX-2)+'px;width:5px;height:5px;opacity:0.01');});m.on('mouseup',function(s){if(o){o.remove();o=undefined;m.fire('contextmenu',s.data);}});}m.on('contextmenu',function(s){var t=s.data;
+if(n&&(b.webkit?p:b.mac?t.$.metaKey:t.$.ctrlKey))return;t.preventDefault();var u=t.getTarget().getDocument().getDocumentElement(),v=t.$.clientX,w=t.$.clientY;e.setTimeout(function(){this.open(u,null,v,w);},c?200:0,this);},this);if(b.opera)m.on('keypress',function(s){var t=s.data;if(t.$.keyCode===0)t.preventDefault();});if(b.webkit){var p,q=function(s){p=b.mac?s.data.$.metaKey:s.data.$.ctrlKey;},r=function(){p=0;};m.on('keydown',q);m.on('keyup',r);m.on('contextmenu',r);}},open:function(m,n,o,p){this.editor.focus();m=m||a.document.getDocumentElement();this.show(m,n,o,p);}}});},beforeInit:function(m){m.contextMenu=new j.contextMenu(m);m.addCommand('contextMenu',{exec:function(){m.contextMenu.open(m.document.getBody());}});}});(function(){function m(o){var p=this.att,q=o&&o.hasAttribute(p)&&o.getAttribute(p)||'';if(q!==undefined)this.setValue(q);};function n(){var o;for(var p=0;p<arguments.length;p++){if(arguments[p] instanceof h){o=arguments[p];break;}}if(o){var q=this.att,r=this.getValue();if(r)o.setAttribute(q,r);else o.removeAttribute(q,r);}};j.add('dialogadvtab',{createAdvancedTab:function(o,p){if(!p)p={id:1,dir:1,classes:1,styles:1};var q=o.lang.common,r={id:'advanced',label:q.advancedTab,title:q.advancedTab,elements:[{type:'vbox',padding:1,children:[]}]},s=[];if(p.id||p.dir){if(p.id)s.push({id:'advId',att:'id',type:'text',label:q.id,setup:m,commit:n});if(p.dir)s.push({id:'advLangDir',att:'dir',type:'select',label:q.langDir,'default':'',style:'width:100%',items:[[q.notSet,''],[q.langDirLTR,'ltr'],[q.langDirRTL,'rtl']],setup:m,commit:n});r.elements[0].children.push({type:'hbox',widths:['50%','50%'],children:[].concat(s)});}if(p.styles||p.classes){s=[];if(p.styles)s.push({id:'advStyles',att:'style',type:'text',label:q.styles,'default':'',validate:a.dialog.validate.inlineStyle(q.invalidInlineStyle),onChange:function(){},getStyle:function(t,u){var v=this.getValue().match(new RegExp(t+'\\s*:\\s*([^;]*)','i'));return v?v[1]:u;},updateStyle:function(t,u){var v=this.getValue();if(v)v=v.replace(new RegExp('\\s*'+t+'s*:[^;]*(?:$|;s*)','i'),'').replace(/^[;\s]+/,'').replace(/\s+$/,'');if(u){v&&!/;\s*$/.test(v)&&(v+='; ');v+=t+': '+u;}this.setValue(v,1);},setup:m,commit:n});if(p.classes)s.push({type:'hbox',widths:['45%','55%'],children:[{id:'advCSSClasses',att:'class',type:'text',label:q.cssClasses,'default':'',setup:m,commit:n}]});r.elements[0].children.push({type:'hbox',widths:['50%','50%'],children:[].concat(s)});}return r;}});})();(function(){j.add('div',{requires:['editingblock','dialog','domiterator','styles'],init:function(m){var n=m.lang.div;
+m.addCommand('creatediv',new a.dialogCommand('creatediv'));m.addCommand('editdiv',new a.dialogCommand('editdiv'));m.addCommand('removediv',{exec:function(o){var p=o.getSelection(),q=p&&p.getRanges(),r,s=p.createBookmarks(),t,u=[];function v(x){var y=new d.elementPath(x),z=y.blockLimit,A=z.is('div')&&z;if(A&&!A.data('cke-div-added')){u.push(A);A.data('cke-div-added');}};for(var w=0;w<q.length;w++){r=q[w];if(r.collapsed)v(p.getStartElement());else{t=new d.walker(r);t.evaluator=v;t.lastForward();}}for(w=0;w<u.length;w++)u[w].remove(true);p.selectBookmarks(s);}});m.ui.addButton('CreateDiv',{label:n.toolbar,command:'creatediv'});if(m.addMenuItems){m.addMenuItems({editdiv:{label:n.edit,command:'editdiv',group:'div',order:1},removediv:{label:n.remove,command:'removediv',group:'div',order:5}});if(m.contextMenu)m.contextMenu.addListener(function(o,p){if(!o||o.isReadOnly())return null;var q=new d.elementPath(o),r=q.blockLimit;if(r&&r.getAscendant('div',true))return{editdiv:2,removediv:2};return null;});}a.dialog.add('creatediv',this.path+'dialogs/div.js');a.dialog.add('editdiv',this.path+'dialogs/div.js');}});})();(function(){var m={toolbarFocus:{editorFocus:false,readOnly:1,exec:function(o){var p=o._.elementsPath.idBase,q=a.document.getById(p+'0');q&&q.focus(c||b.air);}}},n='<span class="cke_empty"> </span>';j.add('elementspath',{requires:['selection'],init:function(o){var p='cke_path_'+o.name,q,r=function(){if(!q)q=a.document.getById(p);return q;},s='cke_elementspath_'+e.getNextNumber()+'_';o._.elementsPath={idBase:s,filters:[]};o.on('themeSpace',function(x){if(x.data.space=='bottom')x.data.html+='<span id="'+p+'_label" class="cke_voice_label">'+o.lang.elementsPath.eleLabel+'</span>'+'<div id="'+p+'" class="cke_path" role="group" aria-labelledby="'+p+'_label">'+n+'</div>';});function t(x){o.focus();var y=o._.elementsPath.list[x];if(y.is('body')){var z=new d.range(o.document);z.selectNodeContents(y);z.select();}else o.getSelection().selectElement(y);};var u=e.addFunction(t),v=e.addFunction(function(x,y){var z=o._.elementsPath.idBase,A;y=new d.event(y);var B=o.lang.dir=='rtl';switch(y.getKeystroke()){case B?39:37:case 9:A=a.document.getById(z+(x+1));if(!A)A=a.document.getById(z+'0');A.focus();return false;case B?37:39:case 2228224+9:A=a.document.getById(z+(x-1));if(!A)A=a.document.getById(z+(o._.elementsPath.list.length-1));A.focus();return false;case 27:o.focus();return false;case 13:case 32:t(x);return false;}return true;});o.on('selectionChange',function(x){var y=b,z=x.data.selection,A=z.getStartElement(),B=[],C=x.editor,D=C._.elementsPath.list=[],E=C._.elementsPath.filters;
+while(A){var F=0,G;if(A.data('cke-display-name'))G=A.data('cke-display-name');else if(A.data('cke-real-element-type'))G=A.data('cke-real-element-type');else G=A.getName();for(var H=0;H<E.length;H++){var I=E[H](A,G);if(I===false){F=1;break;}G=I||G;}if(!F){var J=D.push(A)-1,K='';if(y.opera||y.gecko&&y.mac)K+=' onkeypress="return false;"';if(y.gecko)K+=' onblur="this.style.cssText = this.style.cssText;"';var L=C.lang.elementsPath.eleTitle.replace(/%1/,G);B.unshift('<a id="',s,J,'" href="javascript:void(\'',G,'\')" tabindex="-1" title="',L,'"'+(b.gecko&&b.version<10900?' onfocus="event.preventBubble();"':'')+' hidefocus="true" '+' onkeydown="return CKEDITOR.tools.callFunction(',v,',',J,', event );"'+K,' onclick="CKEDITOR.tools.callFunction('+u,',',J,'); return false;"',' role="button" aria-labelledby="'+s+J+'_label">',G,'<span id="',s,J,'_label" class="cke_label">'+L+'</span>','</a>');}if(G=='body')break;A=A.getParent();}var M=r();M.setHtml(B.join('')+n);C.fire('elementsPathUpdate',{space:M});});function w(){q&&q.setHtml(n);delete o._.elementsPath.list;};o.on('readOnly',w);o.on('contentDomUnload',w);o.addCommand('elementsPathFocus',m.toolbarFocus);}});})();(function(){j.add('enterkey',{requires:['keystrokes','indent'],init:function(t){t.addCommand('enter',{modes:{wysiwyg:1},editorFocus:false,exec:function(v){r(v);}});t.addCommand('shiftEnter',{modes:{wysiwyg:1},editorFocus:false,exec:function(v){q(v);}});var u=t.keystrokeHandler.keystrokes;u[13]='enter';u[2228224+13]='shiftEnter';}});j.enterkey={enterBlock:function(t,u,v,w){v=v||s(t);if(!v)return;var x=v.document,y=v.checkStartOfBlock(),z=v.checkEndOfBlock(),A=new d.elementPath(v.startContainer),B=A.block;if(y&&z){if(B&&(B.is('li')||B.getParent().is('li'))){t.execCommand('outdent');return;}if(B&&B.getParent().is('blockquote')){B.breakParent(B.getParent());if(!B.getPrevious().getFirst(d.walker.invisible(1)))B.getPrevious().remove();if(!B.getNext().getFirst(d.walker.invisible(1)))B.getNext().remove();v.moveToElementEditStart(B);v.select();return;}}else if(B&&B.is('pre')){if(!z){n(t,u,v,w);return;}}else if(B&&f.$captionBlock[B.getName()]){n(t,u,v,w);return;}var C=u==3?'div':'p',D=v.splitBlock(C);if(!D)return;var E=D.previousBlock,F=D.nextBlock,G=D.wasStartOfBlock,H=D.wasEndOfBlock,I;if(F){I=F.getParent();if(I.is('li')){F.breakParent(I);F.move(F.getNext(),1);}}else if(E&&(I=E.getParent())&&I.is('li')){E.breakParent(I);I=E.getNext();v.moveToElementEditStart(I);E.move(E.getPrevious());}if(!G&&!H){if(F.is('li')&&(I=F.getFirst(d.walker.invisible(true)))&&I.is&&I.is('ul','ol'))(c?x.createText('\xa0'):x.createElement('br')).insertBefore(I);
+if(F)v.moveToElementEditStart(F);}else{var J,K;if(E){if(E.is('li')||!(p.test(E.getName())||E.is('pre')))J=E.clone();}else if(F)J=F.clone();if(!J){if(I&&I.is('li'))J=I;else{J=x.createElement(C);if(E&&(K=E.getDirection()))J.setAttribute('dir',K);}}else if(w&&!J.is('li'))J.renameNode(C);var L=D.elementPath;if(L)for(var M=0,N=L.elements.length;M<N;M++){var O=L.elements[M];if(O.equals(L.block)||O.equals(L.blockLimit))break;if(f.$removeEmpty[O.getName()]){O=O.clone();J.moveChildren(O);J.append(O);}}if(!c)J.appendBogus();if(!J.getParent())v.insertNode(J);J.is('li')&&J.removeAttribute('value');if(c&&G&&(!H||!E.getChildCount())){v.moveToElementEditStart(H?E:J);v.select();}v.moveToElementEditStart(G&&!H?F:J);}if(!c)if(F){var P=x.createElement('span');P.setHtml(' ');v.insertNode(P);P.scrollIntoView();v.deleteContents();}else J.scrollIntoView();v.select();},enterBr:function(t,u,v,w){v=v||s(t);if(!v)return;var x=v.document,y=u==3?'div':'p',z=v.checkEndOfBlock(),A=new d.elementPath(t.getSelection().getStartElement()),B=A.block,C=B&&A.block.getName(),D=false;if(!w&&C=='li'){o(t,u,v,w);return;}if(!w&&z&&p.test(C)){var E,F;if(F=B.getDirection()){E=x.createElement('div');E.setAttribute('dir',F);E.insertAfter(B);v.setStart(E,0);}else{x.createElement('br').insertAfter(B);if(b.gecko)x.createText('').insertAfter(B);v.setStartAt(B.getNext(),c?3:1);}}else{var G;D=C=='pre';if(D&&!b.gecko)G=x.createText(c?'\r':'\n');else G=x.createElement('br');v.deleteContents();v.insertNode(G);if(c)v.setStartAt(G,4);else{x.createText('\ufeff').insertAfter(G);if(z)G.getParent().appendBogus();G.getNext().$.nodeValue='';v.setStartAt(G.getNext(),1);var H=null;if(!b.gecko){H=x.createElement('span');H.setHtml(' ');}else H=x.createElement('br');H.insertBefore(G.getNext());H.scrollIntoView();H.remove();}}v.collapse(true);v.select(D);}};var m=j.enterkey,n=m.enterBr,o=m.enterBlock,p=/^h[1-6]$/;function q(t){if(t.mode!='wysiwyg')return false;return r(t,t.config.shiftEnterMode,1);};function r(t,u,v){v=t.config.forceEnterMode||v;if(t.mode!='wysiwyg')return false;if(!u)u=t.config.enterMode;setTimeout(function(){t.fire('saveSnapshot');if(u==2)n(t,u,null,v);else o(t,u,null,v);t.fire('saveSnapshot');},0);return true;};function s(t){var u=t.getSelection().getRanges(true);for(var v=u.length-1;v>0;v--)u[v].deleteContents();return u[0];};})();(function(){var m='nbsp,gt,lt,amp',n='quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro',o='Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml',p='Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv';
+function q(r,s){var t={},u=[],v={nbsp:'\xa0',shy:'',gt:'>',lt:'<',amp:'&',apos:"'",quot:'"'};r=r.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(A,B){var C=s?'&'+B+';':v[B],D=s?v[B]:'&'+B+';';t[C]=D;u.push(C);return '';});if(!s&&r){r=r.split(',');var w=document.createElement('div'),x;w.innerHTML='&'+r.join(';&')+';';x=w.innerHTML;w=null;for(var y=0;y<x.length;y++){var z=x.charAt(y);t[z]='&'+r[y]+';';u.push(z);}}t.regex=u.join(s?'|':'');return t;};j.add('entities',{afterInit:function(r){var s=r.config,t=r.dataProcessor,u=t&&t.htmlFilter;if(u){var v=[];if(s.basicEntities!==false)v.push(m);if(s.entities){if(v.length)v.push(n);if(s.entities_latin)v.push(o);if(s.entities_greek)v.push(p);if(s.entities_additional)v.push(s.entities_additional);}var w=q(v.join(',')),x=w.regex?'['+w.regex+']':'a^';delete w.regex;if(s.entities&&s.entities_processNumerical)x='[^ -~]|'+x;x=new RegExp(x,'g');function y(C){return s.entities_processNumerical=='force'||!w[C]?'&#'+C.charCodeAt(0)+';':w[C];};var z=q([m,'shy'].join(','),true),A=new RegExp(z.regex,'g');function B(C){return z[C];};u.addRules({text:function(C){return C.replace(A,B).replace(x,y);}});}}});})();i.basicEntities=true;i.entities=true;i.entities_latin=true;i.entities_greek=true;i.entities_additional='#39';(function(){function m(v,w){var x=[];if(!w)return v;else for(var y in w)x.push(y+'='+encodeURIComponent(w[y]));return v+(v.indexOf('?')!=-1?'&':'?')+x.join('&');};function n(v){v+='';var w=v.charAt(0).toUpperCase();return w+v.substr(1);};function o(v){var C=this;var w=C.getDialog(),x=w.getParentEditor();x._.filebrowserSe=C;var y=x.config['filebrowser'+n(w.getName())+'WindowWidth']||x.config.filebrowserWindowWidth||'80%',z=x.config['filebrowser'+n(w.getName())+'WindowHeight']||x.config.filebrowserWindowHeight||'70%',A=C.filebrowser.params||{};A.CKEditor=x.name;A.CKEditorFuncNum=x._.filebrowserFn;if(!A.langCode)A.langCode=x.langCode;var B=m(C.filebrowser.url,A);x.popup(B,y,z,x.config.filebrowserWindowFeatures||x.config.fileBrowserWindowFeatures);};function p(v){var y=this;var w=y.getDialog(),x=w.getParentEditor();x._.filebrowserSe=y;if(!w.getContentElement(y['for'][0],y['for'][1]).getInputElement().$.value)return false;if(!w.getContentElement(y['for'][0],y['for'][1]).getAction())return false;return true;};function q(v,w,x){var y=x.params||{};y.CKEditor=v.name;y.CKEditorFuncNum=v._.filebrowserFn;if(!y.langCode)y.langCode=v.langCode;w.action=m(x.url,y);w.filebrowser=x;};function r(v,w,x,y){var z,A;for(var B in y){z=y[B];
+if(z.type=='hbox'||z.type=='vbox'||z.type=='fieldset')r(v,w,x,z.children);if(!z.filebrowser)continue;if(typeof z.filebrowser=='string'){var C={action:z.type=='fileButton'?'QuickUpload':'Browse',target:z.filebrowser};z.filebrowser=C;}if(z.filebrowser.action=='Browse'){var D=z.filebrowser.url;if(D===undefined){D=v.config['filebrowser'+n(w)+'BrowseUrl'];if(D===undefined)D=v.config.filebrowserBrowseUrl;}if(D){z.onClick=o;z.filebrowser.url=D;z.hidden=false;}}else if(z.filebrowser.action=='QuickUpload'&&z['for']){D=z.filebrowser.url;if(D===undefined){D=v.config['filebrowser'+n(w)+'UploadUrl'];if(D===undefined)D=v.config.filebrowserUploadUrl;}if(D){var E=z.onClick;z.onClick=function(F){var G=F.sender;if(E&&E.call(G,F)===false)return false;return p.call(G,F);};z.filebrowser.url=D;z.hidden=false;q(v,x.getContents(z['for'][0]).get(z['for'][1]),z.filebrowser);}}}};function s(v,w){var x=w.getDialog(),y=w.filebrowser.target||null;if(y){var z=y.split(':'),A=x.getContentElement(z[0],z[1]);if(A){A.setValue(v);x.selectPage(z[0]);}}};function t(v,w,x){if(x.indexOf(';')!==-1){var y=x.split(';');for(var z=0;z<y.length;z++){if(t(v,w,y[z]))return true;}return false;}var A=v.getContents(w).get(x).filebrowser;return A&&A.url;};function u(v,w){var A=this;var x=A._.filebrowserSe.getDialog(),y=A._.filebrowserSe['for'],z=A._.filebrowserSe.filebrowser.onSelect;if(y)x.getContentElement(y[0],y[1]).reset();if(typeof w=='function'&&w.call(A._.filebrowserSe)===false)return;if(z&&z.call(A._.filebrowserSe,v,w)===false)return;if(typeof w=='string'&&w)alert(w);if(v)s(v,A._.filebrowserSe);};j.add('filebrowser',{init:function(v,w){v._.filebrowserFn=e.addFunction(u,v);v.on('destroy',function(){e.removeFunction(this._.filebrowserFn);});}});a.on('dialogDefinition',function(v){var w=v.data.definition,x;for(var y in w.contents){if(x=w.contents[y]){r(v.editor,v.data.name,w,x.elements);if(x.hidden&&x.filebrowser)x.hidden=!t(w,x.id,x.filebrowser);}}});})();j.add('find',{requires:['dialog'],init:function(m){var n=j.find;m.ui.addButton('Find',{label:m.lang.findAndReplace.find,command:'find'});var o=m.addCommand('find',new a.dialogCommand('find'));o.canUndo=false;o.readOnly=1;m.ui.addButton('Replace',{label:m.lang.findAndReplace.replace,command:'replace'});var p=m.addCommand('replace',new a.dialogCommand('replace'));p.canUndo=false;a.dialog.add('find',this.path+'dialogs/find.js');a.dialog.add('replace',this.path+'dialogs/find.js');},requires:['styles']});i.find_highlight={element:'span',styles:{'background-color':'#004',color:'#fff'}};
+(function(){var m=/\.swf(?:$|\?)/i;function n(p){var q=p.attributes;return q.type=='application/x-shockwave-flash'||m.test(q.src||'');};function o(p,q){return p.createFakeParserElement(q,'cke_flash','flash',true);};j.add('flash',{init:function(p){p.addCommand('flash',new a.dialogCommand('flash'));p.ui.addButton('Flash',{label:p.lang.common.flash,command:'flash'});a.dialog.add('flash',this.path+'dialogs/flash.js');p.addCss('img.cke_flash{background-image: url('+a.getUrl(this.path+'images/placeholder.png')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 80px;'+'height: 80px;'+'}');if(p.addMenuItems)p.addMenuItems({flash:{label:p.lang.flash.properties,command:'flash',group:'flash'}});p.on('doubleclick',function(q){var r=q.data.element;if(r.is('img')&&r.data('cke-real-element-type')=='flash')q.data.dialog='flash';});if(p.contextMenu)p.contextMenu.addListener(function(q,r){if(q&&q.is('img')&&!q.isReadOnly()&&q.data('cke-real-element-type')=='flash')return{flash:2};});},afterInit:function(p){var q=p.dataProcessor,r=q&&q.dataFilter;if(r)r.addRules({elements:{'cke:object':function(s){var t=s.attributes,u=t.classid&&String(t.classid).toLowerCase();if(!u&&!n(s)){for(var v=0;v<s.children.length;v++){if(s.children[v].name=='cke:embed'){if(!n(s.children[v]))return null;return o(p,s);}}return null;}return o(p,s);},'cke:embed':function(s){if(!n(s))return null;return o(p,s);}}},5);},requires:['fakeobjects']});})();e.extend(i,{flashEmbedTagOnly:false,flashAddEmbedTag:true,flashConvertOnEdit:false});(function(){function m(n,o,p,q,r,s,t){var u=n.config,v=r.split(';'),w=[],x={};for(var y=0;y<v.length;y++){var z=v[y];if(z){z=z.split('/');var A={},B=v[y]=z[0];A[p]=w[y]=z[1]||B;x[B]=new a.style(t,A);x[B]._.definition.name=B;}else v.splice(y--,1);}n.ui.addRichCombo(o,{label:q.label,title:q.panelTitle,className:'cke_'+(p=='size'?'fontSize':'font'),panel:{css:n.skin.editor.css.concat(u.contentsCss),multiSelect:false,attributes:{'aria-label':q.panelTitle}},init:function(){this.startGroup(q.panelTitle);for(var C=0;C<v.length;C++){var D=v[C];this.add(D,x[D].buildPreview(),D);}},onClick:function(C){n.focus();n.fire('saveSnapshot');var D=x[C];if(this.getValue()==C)D.remove(n.document);else D.apply(n.document);n.fire('saveSnapshot');},onRender:function(){n.on('selectionChange',function(C){var D=this.getValue(),E=C.data.path,F=E.elements;for(var G=0,H;G<F.length;G++){H=F[G];for(var I in x){if(x[I].checkElementMatch(H,true)){if(I!=D)this.setValue(I);
+return;}}}this.setValue('',s);},this);}});};j.add('font',{requires:['richcombo','styles'],init:function(n){var o=n.config;m(n,'Font','family',n.lang.font,o.font_names,o.font_defaultLabel,o.font_style);m(n,'FontSize','size',n.lang.fontSize,o.fontSize_sizes,o.fontSize_defaultLabel,o.fontSize_style);}});})();i.font_names='Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif';i.font_defaultLabel='';i.font_style={element:'span',styles:{'font-family':'#(family)'},overrides:[{element:'font',attributes:{face:null}}]};i.fontSize_sizes='8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px';i.fontSize_defaultLabel='';i.fontSize_style={element:'span',styles:{'font-size':'#(size)'},overrides:[{element:'font',attributes:{size:null}}]};j.add('format',{requires:['richcombo','styles'],init:function(m){var n=m.config,o=m.lang.format,p=n.format_tags.split(';'),q={};for(var r=0;r<p.length;r++){var s=p[r];q[s]=new a.style(n['format_'+s]);q[s]._.enterMode=m.config.enterMode;}m.ui.addRichCombo('Format',{label:o.label,title:o.panelTitle,className:'cke_format',panel:{css:m.skin.editor.css.concat(n.contentsCss),multiSelect:false,attributes:{'aria-label':o.panelTitle}},init:function(){this.startGroup(o.panelTitle);for(var t in q){var u=o['tag_'+t];this.add(t,q[t].buildPreview(u),u);}},onClick:function(t){m.focus();m.fire('saveSnapshot');var u=q[t],v=new d.elementPath(m.getSelection().getStartElement());u[u.checkActive(v)?'remove':'apply'](m.document);setTimeout(function(){m.fire('saveSnapshot');},0);},onRender:function(){m.on('selectionChange',function(t){var u=this.getValue(),v=t.data.path;for(var w in q){if(q[w].checkActive(v)){if(w!=u)this.setValue(w,m.lang.format['tag_'+w]);return;}}this.setValue('');},this);}});}});i.format_tags='p;h1;h2;h3;h4;h5;h6;pre;address;div';i.format_p={element:'p'};i.format_div={element:'div'};i.format_pre={element:'pre'};i.format_address={element:'address'};i.format_h1={element:'h1'};i.format_h2={element:'h2'};i.format_h3={element:'h3'};i.format_h4={element:'h4'};i.format_h5={element:'h5'};i.format_h6={element:'h6'};j.add('forms',{requires:['dialog'],init:function(m){var n=m.lang;
+m.addCss('form{border: 1px dotted #FF0000;padding: 2px;}\n');m.addCss('img.cke_hidden{background-image: url('+a.getUrl(this.path+'images/hiddenfield.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 16px !important;'+'height: 16px !important;'+'}');var o=function(q,r,s){m.addCommand(r,new a.dialogCommand(r));m.ui.addButton(q,{label:n.common[q.charAt(0).toLowerCase()+q.slice(1)],command:r});a.dialog.add(r,s);},p=this.path+'dialogs/';o('Form','form',p+'form.js');o('Checkbox','checkbox',p+'checkbox.js');o('Radio','radio',p+'radio.js');o('TextField','textfield',p+'textfield.js');o('Textarea','textarea',p+'textarea.js');o('Select','select',p+'select.js');o('Button','button',p+'button.js');o('ImageButton','imagebutton',j.getPath('image')+'dialogs/image.js');o('HiddenField','hiddenfield',p+'hiddenfield.js');if(m.addMenuItems)m.addMenuItems({form:{label:n.form.menu,command:'form',group:'form'},checkbox:{label:n.checkboxAndRadio.checkboxTitle,command:'checkbox',group:'checkbox'},radio:{label:n.checkboxAndRadio.radioTitle,command:'radio',group:'radio'},textfield:{label:n.textfield.title,command:'textfield',group:'textfield'},hiddenfield:{label:n.hidden.title,command:'hiddenfield',group:'hiddenfield'},imagebutton:{label:n.image.titleButton,command:'imagebutton',group:'imagebutton'},button:{label:n.button.title,command:'button',group:'button'},select:{label:n.select.title,command:'select',group:'select'},textarea:{label:n.textarea.title,command:'textarea',group:'textarea'}});if(m.contextMenu){m.contextMenu.addListener(function(q){if(q&&q.hasAscendant('form',true)&&!q.isReadOnly())return{form:2};});m.contextMenu.addListener(function(q){if(q&&!q.isReadOnly()){var r=q.getName();if(r=='select')return{select:2};if(r=='textarea')return{textarea:2};if(r=='input')switch(q.getAttribute('type')){case 'button':case 'submit':case 'reset':return{button:2};case 'checkbox':return{checkbox:2};case 'radio':return{radio:2};case 'image':return{imagebutton:2};default:return{textfield:2};}if(r=='img'&&q.data('cke-real-element-type')=='hiddenfield')return{hiddenfield:2};}});}m.on('doubleclick',function(q){var r=q.data.element;if(r.is('form'))q.data.dialog='form';else if(r.is('select'))q.data.dialog='select';else if(r.is('textarea'))q.data.dialog='textarea';else if(r.is('img')&&r.data('cke-real-element-type')=='hiddenfield')q.data.dialog='hiddenfield';else if(r.is('input'))switch(r.getAttribute('type')){case 'button':case 'submit':case 'reset':q.data.dialog='button';
+break;case 'checkbox':q.data.dialog='checkbox';break;case 'radio':q.data.dialog='radio';break;case 'image':q.data.dialog='imagebutton';break;default:q.data.dialog='textfield';break;}});},afterInit:function(m){var n=m.dataProcessor,o=n&&n.htmlFilter,p=n&&n.dataFilter;if(c)o&&o.addRules({elements:{input:function(q){var r=q.attributes,s=r.type;if(!s)r.type='text';if(s=='checkbox'||s=='radio')r.value=='on'&&delete r.value;}}});if(p)p.addRules({elements:{input:function(q){if(q.attributes.type=='hidden')return m.createFakeParserElement(q,'cke_hidden','hiddenfield');}}});},requires:['image','fakeobjects']});if(c)h.prototype.hasAttribute=e.override(h.prototype.hasAttribute,function(m){return function(n){var q=this;var o=q.$.attributes.getNamedItem(n);if(q.getName()=='input')switch(n){case 'class':return q.$.className.length>0;case 'checked':return!!q.$.checked;case 'value':var p=q.getAttribute('type');return p=='checkbox'||p=='radio'?q.$.value!='on':q.$.value;}return m.apply(q,arguments);};});(function(){var m={canUndo:false,exec:function(o){var p=o.document.createElement('hr');o.insertElement(p);}},n='horizontalrule';j.add(n,{init:function(o){o.addCommand(n,m);o.ui.addButton('HorizontalRule',{label:o.lang.horizontalrule,command:n});}});})();(function(){var m=/^[\t\r\n ]*(?: |\xa0)$/,n='{cke_protected}';function o(T){var U=T.children.length,V=T.children[U-1];while(V&&V.type==3&&!e.trim(V.value))V=T.children[--U];return V;};function p(T,U){var V=T.children,W=o(T);if(W){if((U||!c)&&W.type==1&&W.name=='br')V.pop();if(W.type==3&&m.test(W.value))V.pop();}};function q(T,U,V){if(!U&&(!V||typeof V=='function'&&V(T)===false))return false;if(U&&c&&(document.documentMode>7||T.name in f.tr||T.name in f.$listItem))return false;var W=o(T);return!W||W&&(W.type==1&&W.name=='br'||T.name=='form'&&W.name=='input');};function r(T,U){return function(V){p(V,!T);if(q(V,!T,U))if(T||c)V.add(new a.htmlParser.text('\xa0'));else V.add(new a.htmlParser.element('br',{}));};};var s=f,t=['caption','colgroup','col','thead','tfoot','tbody'],u=e.extend({},s.$block,s.$listItem,s.$tableContent);for(var v in u){if(!('br' in s[v]))delete u[v];}delete u.pre;var w={elements:{},attributeNames:[[/^on/,'data-cke-pa-on']]},x={elements:{}};for(v in u)x.elements[v]=r();var y={elementNames:[[/^cke:/,''],[/^\?xml:namespace$/,'']],attributeNames:[[/^data-cke-(saved|pa)-/,''],[/^data-cke-.*/,''],['hidefocus','']],elements:{$:function(T){var U=T.attributes;if(U){if(U['data-cke-temp'])return false;var V=['name','href','src'],W;
+for(var X=0;X<V.length;X++){W='data-cke-saved-'+V[X];W in U&&delete U[V[X]];}}return T;},table:function(T){var U=T.children;U.sort(function(V,W){return V.type==1&&W.type==V.type?e.indexOf(t,V.name)>e.indexOf(t,W.name)?1:-1:0;});},embed:function(T){var U=T.parent;if(U&&U.name=='object'){var V=U.attributes.width,W=U.attributes.height;V&&(T.attributes.width=V);W&&(T.attributes.height=W);}},param:function(T){T.children=[];T.isEmpty=true;return T;},a:function(T){if(!(T.children.length||T.attributes.name||T.attributes['data-cke-saved-name']))return false;},span:function(T){if(T.attributes['class']=='Apple-style-span')delete T.name;},pre:function(T){c&&p(T);},html:function(T){delete T.attributes.contenteditable;delete T.attributes['class'];},body:function(T){delete T.attributes.spellcheck;delete T.attributes.contenteditable;},style:function(T){var U=T.children[0];U&&U.value&&(U.value=e.trim(U.value));if(!T.attributes.type)T.attributes.type='text/css';},title:function(T){var U=T.children[0];U&&(U.value=T.attributes['data-cke-title']||'');}},attributes:{'class':function(T,U){return e.ltrim(T.replace(/(?:^|\s+)cke_[^\s]*/g,''))||false;}}};if(c)y.attributes.style=function(T,U){return T.replace(/(^|;)([^\:]+)/g,function(V){return V.toLowerCase();});};function z(T){var U=T.attributes;if(U.contenteditable!='false')U['data-cke-editable']=U.contenteditable?'true':1;U.contenteditable='false';};function A(T){var U=T.attributes;switch(U['data-cke-editable']){case 'true':U.contenteditable='true';break;case '1':delete U.contenteditable;break;}};for(v in {input:1,textarea:1}){w.elements[v]=z;y.elements[v]=A;}var B=/<(a|area|img|input)\b([^>]*)>/gi,C=/\b(on\w+|href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,D=/(?:<style(?=[ >])[^>]*>[\s\S]*<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,E=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,F=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,G=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,H=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi;function I(T){return T.replace(B,function(U,V,W){return '<'+V+W.replace(C,function(X,Y){if(!/^on/.test(Y)&&W.indexOf('data-cke-saved-'+Y)==-1)return ' data-cke-saved-'+X+' data-cke-'+a.rnd+'-'+X;return X;})+'>';});};function J(T){return T.replace(D,function(U){return '<cke:encoded>'+encodeURIComponent(U)+'</cke:encoded>';});};function K(T){return T.replace(E,function(U,V){return decodeURIComponent(V);});};function L(T){return T.replace(F,'$1cke:$2');};function M(T){return T.replace(G,'$1$2');
+};function N(T){return T.replace(H,'<cke:$1$2></cke:$1>');};function O(T){return T.replace(/(<pre\b[^>]*>)(\r\n|\n)/g,'$1$2$2');};function P(T){return T.replace(/<!--(?!{cke_protected})[\s\S]+?-->/g,function(U){return '<!--'+n+'{C}'+encodeURIComponent(U).replace(/--/g,'%2D%2D')+'-->';});};function Q(T){return T.replace(/<!--\{cke_protected\}\{C\}([\s\S]+?)-->/g,function(U,V){return decodeURIComponent(V);});};function R(T,U){var V=U._.dataStore;return T.replace(/<!--\{cke_protected\}([\s\S]+?)-->/g,function(W,X){return decodeURIComponent(X);}).replace(/\{cke_protected_(\d+)\}/g,function(W,X){return V&&V[X]||'';});};function S(T,U){var V=[],W=U.config.protectedSource,X=U._.dataStore||(U._.dataStore={id:1}),Y=/<\!--\{cke_temp(comment)?\}(\d*?)-->/g,Z=[/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi].concat(W);T=T.replace(/<!--[\s\S]*?-->/g,function(ab){return '<!--{cke_tempcomment}'+(V.push(ab)-1)+'-->';});for(var aa=0;aa<Z.length;aa++)T=T.replace(Z[aa],function(ab){ab=ab.replace(Y,function(ac,ad,ae){return V[ae];});return/cke_temp(comment)?/.test(ab)?ab:'<!--{cke_temp}'+(V.push(ab)-1)+'-->';});T=T.replace(Y,function(ab,ac,ad){return '<!--'+n+(ac?'{C}':'')+encodeURIComponent(V[ad]).replace(/--/g,'%2D%2D')+'-->';});return T.replace(/(['"]).*?\1/g,function(ab){return ab.replace(/<!--\{cke_protected\}([\s\S]+?)-->/g,function(ac,ad){X[X.id]=decodeURIComponent(ad);return '{cke_protected_'+X.id++ +'}';});});};j.add('htmldataprocessor',{requires:['htmlwriter'],init:function(T){var U=T.dataProcessor=new a.htmlDataProcessor(T);U.writer.forceSimpleAmpersand=T.config.forceSimpleAmpersand;U.dataFilter.addRules(w);U.dataFilter.addRules(x);U.htmlFilter.addRules(y);var V={elements:{}};for(v in u)V.elements[v]=r(true,T.config.fillEmptyBlocks);U.htmlFilter.addRules(V);},onLoad:function(){!('fillEmptyBlocks' in i)&&(i.fillEmptyBlocks=1);}});a.htmlDataProcessor=function(T){var U=this;U.editor=T;U.writer=new a.htmlWriter();U.dataFilter=new a.htmlParser.filter();U.htmlFilter=new a.htmlParser.filter();};a.htmlDataProcessor.prototype={toHtml:function(T,U){T=S(T,this.editor);T=I(T);T=J(T);T=L(T);T=N(T);T=O(T);var V=new h('div');V.setHtml('a'+T);T=V.getHtml().substr(1);T=T.replace(new RegExp(' data-cke-'+a.rnd+'-','ig'),' ');T=M(T);T=K(T);T=Q(T);var W=a.htmlParser.fragment.fromHtml(T,U),X=new a.htmlParser.basicWriter();W.writeHtml(X,this.dataFilter);T=X.getHtml(true);T=P(T);return T;},toDataFormat:function(T,U){var V=this.writer,W=a.htmlParser.fragment.fromHtml(T,U);V.reset();
+W.writeHtml(V,this.htmlFilter);var X=V.getHtml(true);X=Q(X);X=R(X,this.editor);return X;}};})();(function(){j.add('iframe',{requires:['dialog','fakeobjects'],init:function(m){var n='iframe',o=m.lang.iframe;a.dialog.add(n,this.path+'dialogs/iframe.js');m.addCommand(n,new a.dialogCommand(n));m.addCss('img.cke_iframe{background-image: url('+a.getUrl(this.path+'images/placeholder.png')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 80px;'+'height: 80px;'+'}');m.ui.addButton('Iframe',{label:o.toolbar,command:n});m.on('doubleclick',function(p){var q=p.data.element;if(q.is('img')&&q.data('cke-real-element-type')=='iframe')p.data.dialog='iframe';});if(m.addMenuItems)m.addMenuItems({iframe:{label:o.title,command:'iframe',group:'image'}});if(m.contextMenu)m.contextMenu.addListener(function(p,q){if(p&&p.is('img')&&p.data('cke-real-element-type')=='iframe')return{iframe:2};});},afterInit:function(m){var n=m.dataProcessor,o=n&&n.dataFilter;if(o)o.addRules({elements:{iframe:function(p){return m.createFakeParserElement(p,'cke_iframe','iframe',true);}}});}});})();(function(){j.add('image',{requires:['dialog'],init:function(o){var p='image';a.dialog.add(p,this.path+'dialogs/image.js');o.addCommand(p,new a.dialogCommand(p));o.ui.addButton('Image',{label:o.lang.common.image,command:p});o.on('doubleclick',function(q){var r=q.data.element;if(r.is('img')&&!r.data('cke-realelement')&&!r.isReadOnly())q.data.dialog='image';});if(o.addMenuItems)o.addMenuItems({image:{label:o.lang.image.menu,command:'image',group:'image'}});if(o.contextMenu)o.contextMenu.addListener(function(q,r){if(m(o,q))return{image:2};});},afterInit:function(o){p('left');p('right');p('center');p('block');function p(q){var r=o.getCommand('justify'+q);if(r){if(q=='left'||q=='right')r.on('exec',function(s){var t=m(o),u;if(t){u=n(t);if(u==q){t.removeStyle('float');if(q==n(t))t.removeAttribute('align');}else t.setStyle('float',q);s.cancel();}});r.on('refresh',function(s){var t=m(o),u;if(t){u=n(t);this.setState(u==q?1:q=='right'||q=='left'?2:0);s.cancel();}});}};}});function m(o,p){if(!p){var q=o.getSelection();p=q.getType()==3&&q.getSelectedElement();}if(p&&p.is('img')&&!p.data('cke-realelement')&&!p.isReadOnly())return p;};function n(o){var p=o.getStyle('float');if(p=='inherit'||p=='none')p=0;if(!p)p=o.getAttribute('align');return p;};})();i.image_removeLinkByEmptyURL=true;(function(){var m={ol:1,ul:1},n=d.walker.whitespaces(true),o=d.walker.bookmark(false,true);
+function p(t){var B=this;if(t.editor.readOnly)return null;var u=t.editor,v=t.data.path,w=v&&v.contains(m),x=v.block||v.blockLimit;if(w)return B.setState(2);if(!B.useIndentClasses&&B.name=='indent')return B.setState(2);if(!x)return B.setState(0);if(B.useIndentClasses){var y=x.$.className.match(B.classNameRegex),z=0;if(y){y=y[1];z=B.indentClassMap[y];}if(B.name=='outdent'&&!z||B.name=='indent'&&z==u.config.indentClasses.length)return B.setState(0);return B.setState(2);}else{var A=parseInt(x.getStyle(r(x)),10);if(isNaN(A))A=0;if(A<=0)return B.setState(0);return B.setState(2);}};function q(t,u){var w=this;w.name=u;w.useIndentClasses=t.config.indentClasses&&t.config.indentClasses.length>0;if(w.useIndentClasses){w.classNameRegex=new RegExp('(?:^|\\s+)('+t.config.indentClasses.join('|')+')(?=$|\\s)');w.indentClassMap={};for(var v=0;v<t.config.indentClasses.length;v++)w.indentClassMap[t.config.indentClasses[v]]=v+1;}w.startDisabled=u=='outdent';};function r(t,u){return(u||t.getComputedStyle('direction'))=='ltr'?'margin-left':'margin-right';};function s(t){return t.type==1&&t.is('li');};q.prototype={exec:function(t){var u=this,v={};function w(M){var N=C.startContainer,O=C.endContainer;while(N&&!N.getParent().equals(M))N=N.getParent();while(O&&!O.getParent().equals(M))O=O.getParent();if(!N||!O)return;var P=N,Q=[],R=false;while(!R){if(P.equals(O))R=true;Q.push(P);P=P.getNext();}if(Q.length<1)return;var S=M.getParents(true);for(var T=0;T<S.length;T++){if(S[T].getName&&m[S[T].getName()]){M=S[T];break;}}var U=u.name=='indent'?1:-1,V=Q[0],W=Q[Q.length-1],X=j.list.listToArray(M,v),Y=X[W.getCustomData('listarray_index')].indent;for(T=V.getCustomData('listarray_index');T<=W.getCustomData('listarray_index');T++){X[T].indent+=U;if(U>0){var Z=X[T].parent;X[T].parent=new h(Z.getName(),Z.getDocument());}}for(T=W.getCustomData('listarray_index')+1;T<X.length&&X[T].indent>Y;T++)X[T].indent+=U;var aa=j.list.arrayToList(X,v,null,t.config.enterMode,M.getDirection());if(u.name=='outdent'){var ab;if((ab=M.getParent())&&ab.is('li')){var ac=aa.listNode.getChildren(),ad=[],ae=ac.count(),af;for(T=ae-1;T>=0;T--){if((af=ac.getItem(T))&&af.is&&af.is('li'))ad.push(af);}}}if(aa)aa.listNode.replace(M);if(ad&&ad.length)for(T=0;T<ad.length;T++){var ag=ad[T],ah=ag;while((ah=ah.getNext())&&ah.is&&ah.getName() in m){if(c&&!ag.getFirst(function(ai){return n(ai)&&o(ai);}))ag.append(C.document.createText('\xa0'));ag.append(ah);}ag.insertAfter(ab);}};function x(){var M=C.createIterator(),N=t.config.enterMode;
+M.enforceRealBlocks=true;M.enlargeBr=N!=2;var O;while(O=M.getNextParagraph(N==1?'p':'div'))y(O);};function y(M,N){if(M.getCustomData('indent_processed'))return false;if(u.useIndentClasses){var O=M.$.className.match(u.classNameRegex),P=0;if(O){O=O[1];P=u.indentClassMap[O];}if(u.name=='outdent')P--;else P++;if(P<0)return false;P=Math.min(P,t.config.indentClasses.length);P=Math.max(P,0);M.$.className=e.ltrim(M.$.className.replace(u.classNameRegex,''));if(P>0)M.addClass(t.config.indentClasses[P-1]);}else{var Q=r(M,N),R=parseInt(M.getStyle(Q),10);if(isNaN(R))R=0;var S=t.config.indentOffset||40;R+=(u.name=='indent'?1:-1)*S;if(R<0)return false;R=Math.max(R,0);R=Math.ceil(R/S)*S;M.setStyle(Q,R?R+(t.config.indentUnit||'px'):'');if(M.getAttribute('style')==='')M.removeAttribute('style');}h.setMarker(v,M,'indent_processed',1);return true;};var z=t.getSelection(),A=z.createBookmarks(1),B=z&&z.getRanges(1),C,D=B.createIterator();while(C=D.getNextRange()){var E=C.getCommonAncestor(),F=E;while(F&&!(F.type==1&&m[F.getName()]))F=F.getParent();if(!F){var G=C.getEnclosedNode();if(G&&G.type==1&&G.getName() in m){C.setStartAt(G,1);C.setEndAt(G,2);F=G;}}if(F&&C.startContainer.type==1&&C.startContainer.getName() in m){var H=new d.walker(C);H.evaluator=s;C.startContainer=H.next();}if(F&&C.endContainer.type==1&&C.endContainer.getName() in m){H=new d.walker(C);H.evaluator=s;C.endContainer=H.previous();}if(F){var I=F.getFirst(s),J=!!I.getNext(s),K=C.startContainer,L=I.equals(K)||I.contains(K);if(!(L&&(u.name=='indent'||u.useIndentClasses||parseInt(F.getStyle(r(F)),10))&&y(F,!J&&I.getDirection())))w(F);}else x();}h.clearAllMarkers(v);t.forceNextSelectionCheck();z.selectBookmarks(A);}};j.add('indent',{init:function(t){var u=t.addCommand('indent',new q(t,'indent')),v=t.addCommand('outdent',new q(t,'outdent'));t.ui.addButton('Indent',{label:t.lang.indent,command:'indent'});t.ui.addButton('Outdent',{label:t.lang.outdent,command:'outdent'});t.on('selectionChange',e.bind(p,u));t.on('selectionChange',e.bind(p,v));if(b.ie6Compat||b.ie7Compat)t.addCss('ul,ol{\tmargin-left: 0px;\tpadding-left: 40px;}');t.on('dirChanged',function(w){var x=new d.range(t.document);x.setStartBefore(w.data.node);x.setEndAfter(w.data.node);var y=new d.walker(x),z;while(z=y.next()){if(z.type==1){if(!z.equals(w.data.node)&&z.getDirection()){x.setStartAfter(z);y=new d.walker(x);continue;}var A=t.config.indentClasses;if(A){var B=w.data.dir=='ltr'?['_rtl','']:['','_rtl'];for(var C=0;C<A.length;C++){if(z.hasClass(A[C]+B[0])){z.removeClass(A[C]+B[0]);
+z.addClass(A[C]+B[1]);}}}var D=z.getStyle('margin-right'),E=z.getStyle('margin-left');D?z.setStyle('margin-left',D):z.removeStyle('margin-left');E?z.setStyle('margin-right',E):z.removeStyle('margin-right');}}});},requires:['domiterator','list']});})();(function(){function m(q,r){r=r===undefined||r;var s;if(r)s=q.getComputedStyle('text-align');else{while(!q.hasAttribute||!(q.hasAttribute('align')||q.getStyle('text-align'))){var t=q.getParent();if(!t)break;q=t;}s=q.getStyle('text-align')||q.getAttribute('align')||'';}s&&(s=s.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i,''));!s&&r&&(s=q.getComputedStyle('direction')=='rtl'?'right':'left');return s;};function n(q){if(q.editor.readOnly)return;q.editor.getCommand(this.name).refresh(q.data.path);};function o(q,r,s){var u=this;u.editor=q;u.name=r;u.value=s;var t=q.config.justifyClasses;if(t){switch(s){case 'left':u.cssClassName=t[0];break;case 'center':u.cssClassName=t[1];break;case 'right':u.cssClassName=t[2];break;case 'justify':u.cssClassName=t[3];break;}u.cssClassRegex=new RegExp('(?:^|\\s+)(?:'+t.join('|')+')(?=$|\\s)');}};function p(q){var r=q.editor,s=new d.range(r.document);s.setStartBefore(q.data.node);s.setEndAfter(q.data.node);var t=new d.walker(s),u;while(u=t.next()){if(u.type==1){if(!u.equals(q.data.node)&&u.getDirection()){s.setStartAfter(u);t=new d.walker(s);continue;}var v=r.config.justifyClasses;if(v)if(u.hasClass(v[0])){u.removeClass(v[0]);u.addClass(v[2]);}else if(u.hasClass(v[2])){u.removeClass(v[2]);u.addClass(v[0]);}var w='text-align',x=u.getStyle(w);if(x=='left')u.setStyle(w,'right');else if(x=='right')u.setStyle(w,'left');}}};o.prototype={exec:function(q){var C=this;var r=q.getSelection(),s=q.config.enterMode;if(!r)return;var t=r.createBookmarks(),u=r.getRanges(true),v=C.cssClassName,w,x,y=q.config.useComputedState;y=y===undefined||y;for(var z=u.length-1;z>=0;z--){w=u[z].createIterator();w.enlargeBr=s!=2;while(x=w.getNextParagraph(s==1?'p':'div')){x.removeAttribute('align');x.removeStyle('text-align');var A=v&&(x.$.className=e.ltrim(x.$.className.replace(C.cssClassRegex,''))),B=C.state==2&&(!y||m(x,true)!=C.value);if(v){if(B)x.addClass(v);else if(!A)x.removeAttribute('class');}else if(B)x.setStyle('text-align',C.value);}}q.focus();q.forceNextSelectionCheck();r.selectBookmarks(t);},refresh:function(q){var r=q.block||q.blockLimit;this.setState(r.getName()!='body'&&m(r,this.editor.config.useComputedState)==this.value?1:2);}};j.add('justify',{init:function(q){var r=new o(q,'justifyleft','left'),s=new o(q,'justifycenter','center'),t=new o(q,'justifyright','right'),u=new o(q,'justifyblock','justify');
+q.addCommand('justifyleft',r);q.addCommand('justifycenter',s);q.addCommand('justifyright',t);q.addCommand('justifyblock',u);q.ui.addButton('JustifyLeft',{label:q.lang.justify.left,command:'justifyleft'});q.ui.addButton('JustifyCenter',{label:q.lang.justify.center,command:'justifycenter'});q.ui.addButton('JustifyRight',{label:q.lang.justify.right,command:'justifyright'});q.ui.addButton('JustifyBlock',{label:q.lang.justify.block,command:'justifyblock'});q.on('selectionChange',e.bind(n,r));q.on('selectionChange',e.bind(n,t));q.on('selectionChange',e.bind(n,s));q.on('selectionChange',e.bind(n,u));q.on('dirChanged',p);},requires:['domiterator']});})();j.add('keystrokes',{beforeInit:function(m){m.keystrokeHandler=new a.keystrokeHandler(m);m.specialKeys={};},init:function(m){var n=m.config.keystrokes,o=m.config.blockedKeystrokes,p=m.keystrokeHandler.keystrokes,q=m.keystrokeHandler.blockedKeystrokes;for(var r=0;r<n.length;r++)p[n[r][0]]=n[r][1];for(r=0;r<o.length;r++)q[o[r]]=1;}});a.keystrokeHandler=function(m){var n=this;if(m.keystrokeHandler)return m.keystrokeHandler;n.keystrokes={};n.blockedKeystrokes={};n._={editor:m};return n;};(function(){var m,n=function(p){p=p.data;var q=p.getKeystroke(),r=this.keystrokes[q],s=this._.editor;m=s.fire('key',{keyCode:q})===true;if(!m){if(r){var t={from:'keystrokeHandler'};m=s.execCommand(r,t)!==false;}if(!m){var u=s.specialKeys[q];m=u&&u(s)===true;if(!m)m=!!this.blockedKeystrokes[q];}}if(m)p.preventDefault(true);return!m;},o=function(p){if(m){m=false;p.data.preventDefault(true);}};a.keystrokeHandler.prototype={attach:function(p){p.on('keydown',n,this);if(b.opera||b.gecko&&b.mac)p.on('keypress',o,this);}};})();i.blockedKeystrokes=[1114112+66,1114112+73,1114112+85];i.keystrokes=[[4456448+121,'toolbarFocus'],[4456448+122,'elementsPathFocus'],[2228224+121,'contextMenu'],[1114112+2228224+121,'contextMenu'],[1114112+90,'undo'],[1114112+89,'redo'],[1114112+2228224+90,'redo'],[1114112+76,'link'],[1114112+66,'bold'],[1114112+73,'italic'],[1114112+85,'underline'],[4456448+(c||b.webkit?189:109),'toolbarCollapse'],[4456448+48,'a11yHelp']];j.add('link',{requires:['fakeobjects','dialog'],init:function(m){m.addCommand('link',new a.dialogCommand('link'));m.addCommand('anchor',new a.dialogCommand('anchor'));m.addCommand('unlink',new a.unlinkCommand());m.addCommand('removeAnchor',new a.removeAnchorCommand());m.ui.addButton('Link',{label:m.lang.link.toolbar,command:'link'});m.ui.addButton('Unlink',{label:m.lang.unlink,command:'unlink'});m.ui.addButton('Anchor',{label:m.lang.anchor.toolbar,command:'anchor'});
+a.dialog.add('link',this.path+'dialogs/link.js');a.dialog.add('anchor',this.path+'dialogs/anchor.js');var n=m.lang.dir=='rtl'?'right':'left',o='background:url('+a.getUrl(this.path+'images/anchor.gif')+') no-repeat '+n+' center;'+'border:1px dotted #00f;';m.addCss('a.cke_anchor,a.cke_anchor_empty'+(c&&b.version<7?'':',a[name],a[data-cke-saved-name]')+'{'+o+'padding-'+n+':18px;'+'cursor:auto;'+'}'+(c?'a.cke_anchor_empty{display:inline-block;}':'')+'img.cke_anchor'+'{'+o+'width:16px;'+'min-height:15px;'+'height:1.15em;'+'vertical-align:'+(b.opera?'middle':'text-bottom')+';'+'}');m.on('selectionChange',function(p){if(m.readOnly)return;var q=m.getCommand('unlink'),r=p.data.path.lastElement&&p.data.path.lastElement.getAscendant('a',true);if(r&&r.getName()=='a'&&r.getAttribute('href')&&r.getChildCount())q.setState(2);else q.setState(0);});m.on('doubleclick',function(p){var q=j.link.getSelectedLink(m)||p.data.element;if(!q.isReadOnly())if(q.is('a')){p.data.dialog=q.getAttribute('name')&&(!q.getAttribute('href')||!q.getChildCount())?'anchor':'link';m.getSelection().selectElement(q);}else if(j.link.tryRestoreFakeAnchor(m,q))p.data.dialog='anchor';});if(m.addMenuItems)m.addMenuItems({anchor:{label:m.lang.anchor.menu,command:'anchor',group:'anchor',order:1},removeAnchor:{label:m.lang.anchor.remove,command:'removeAnchor',group:'anchor',order:5},link:{label:m.lang.link.menu,command:'link',group:'link',order:1},unlink:{label:m.lang.unlink,command:'unlink',group:'link',order:5}});if(m.contextMenu)m.contextMenu.addListener(function(p,q){if(!p||p.isReadOnly())return null;var r=j.link.tryRestoreFakeAnchor(m,p);if(!r&&!(r=j.link.getSelectedLink(m)))return null;var s={};if(r.getAttribute('href')&&r.getChildCount())s={link:2,unlink:2};if(r&&r.hasAttribute('name'))s.anchor=s.removeAnchor=2;return s;});},afterInit:function(m){var n=m.dataProcessor,o=n&&n.dataFilter,p=n&&n.htmlFilter,q=m._.elementsPath&&m._.elementsPath.filters;if(o)o.addRules({elements:{a:function(r){var s=r.attributes;if(!s.name)return null;var t=!r.children.length;if(j.link.synAnchorSelector){var u=t?'cke_anchor_empty':'cke_anchor',v=s['class'];if(s.name&&(!v||v.indexOf(u)<0))s['class']=(v||'')+' '+u;if(t&&j.link.emptyAnchorFix){s.contenteditable='false';s['data-cke-editable']=1;}}else if(j.link.fakeAnchor&&t)return m.createFakeParserElement(r,'cke_anchor','anchor');return null;}}});if(j.link.emptyAnchorFix&&p)p.addRules({elements:{a:function(r){delete r.attributes.contenteditable;}}});if(q)q.push(function(r,s){if(s=='a')if(j.link.tryRestoreFakeAnchor(m,r)||r.getAttribute('name')&&(!r.getAttribute('href')||!r.getChildCount()))return 'anchor';
+});}});j.link={getSelectedLink:function(m){try{var n=m.getSelection();if(n.getType()==3){var o=n.getSelectedElement();if(o.is('a'))return o;}var p=n.getRanges(true)[0];p.shrink(2);var q=p.getCommonAncestor();return q.getAscendant('a',true);}catch(r){return null;}},fakeAnchor:b.opera||b.webkit,synAnchorSelector:c,emptyAnchorFix:c&&b.version<8,tryRestoreFakeAnchor:function(m,n){if(n&&n.data('cke-real-element-type')&&n.data('cke-real-element-type')=='anchor'){var o=m.restoreRealElement(n);if(o.data('cke-saved-name'))return o;}}};a.unlinkCommand=function(){};a.unlinkCommand.prototype={exec:function(m){var n=m.getSelection(),o=n.createBookmarks(),p=n.getRanges(),q,r;for(var s=0;s<p.length;s++){q=p[s].getCommonAncestor(true);r=q.getAscendant('a',true);if(!r)continue;p[s].selectNodeContents(r);}n.selectRanges(p);m.document.$.execCommand('unlink',false,null);n.selectBookmarks(o);},startDisabled:true};a.removeAnchorCommand=function(){};a.removeAnchorCommand.prototype={exec:function(m){var n=m.getSelection(),o=n.createBookmarks(),p;if(n&&(p=n.getSelectedElement())&&(j.link.fakeAnchor&&!p.getChildCount()?j.link.tryRestoreFakeAnchor(m,p):p.is('a')))p.remove(1);else if(p=j.link.getSelectedLink(m))if(p.hasAttribute('href')){p.removeAttributes({name:1,'data-cke-saved-name':1});p.removeClass('cke_anchor');}else p.remove(1);n.selectBookmarks(o);}};e.extend(i,{linkShowAdvancedTab:true,linkShowTargetTab:true});(function(){var m={ol:1,ul:1},n=/^[\n\r\t ]*$/,o=d.walker.whitespaces(),p=d.walker.bookmark(),q=function(N){return!(o(N)||p(N));},r=d.walker.bogus();function s(N){var O,P,Q;if(O=N.getDirection()){P=N.getParent();while(P&&!(Q=P.getDirection()))P=P.getParent();if(O==Q)N.removeAttribute('dir');}};function t(N,O){var P=N.getAttribute('style');P&&O.setAttribute('style',P.replace(/([^;])$/,'$1;')+(O.getAttribute('style')||''));};j.list={listToArray:function(N,O,P,Q,R){if(!m[N.getName()])return[];if(!Q)Q=0;if(!P)P=[];for(var S=0,T=N.getChildCount();S<T;S++){var U=N.getChild(S);if(U.type==1&&U.getName() in f.$list)j.list.listToArray(U,O,P,Q+1);if(U.$.nodeName.toLowerCase()!='li')continue;var V={parent:N,indent:Q,element:U,contents:[]};if(!R){V.grandparent=N.getParent();if(V.grandparent&&V.grandparent.$.nodeName.toLowerCase()=='li')V.grandparent=V.grandparent.getParent();}else V.grandparent=R;if(O)h.setMarker(O,U,'listarray_index',P.length);P.push(V);for(var W=0,X=U.getChildCount(),Y;W<X;W++){Y=U.getChild(W);if(Y.type==1&&m[Y.getName()])j.list.listToArray(Y,O,P,Q+1,V.grandparent);
+else V.contents.push(Y);}}return P;},arrayToList:function(N,O,P,Q,R){if(!P)P=0;if(!N||N.length<P+1)return null;var S,T=N[P].parent.getDocument(),U=new d.documentFragment(T),V=null,W=P,X=Math.max(N[P].indent,0),Y=null,Z,aa,ab=Q==1?'p':'div';while(1){var ac=N[W],ad=ac.grandparent;Z=ac.element.getDirection(1);if(ac.indent==X){if(!V||N[W].parent.getName()!=V.getName()){V=N[W].parent.clone(false,1);R&&V.setAttribute('dir',R);U.append(V);}Y=V.append(ac.element.clone(0,1));if(Z!=V.getDirection(1))Y.setAttribute('dir',Z);for(S=0;S<ac.contents.length;S++)Y.append(ac.contents[S].clone(1,1));W++;}else if(ac.indent==Math.max(X,0)+1){var ae=N[W-1].element.getDirection(1),af=j.list.arrayToList(N,null,W,Q,ae!=Z?Z:null);if(!Y.getChildCount()&&c&&!(T.$.documentMode>7))Y.append(T.createText('\xa0'));Y.append(af.listNode);W=af.nextIndex;}else if(ac.indent==-1&&!P&&ad){if(m[ad.getName()]){Y=ac.element.clone(false,true);if(Z!=ad.getDirection(1))Y.setAttribute('dir',Z);}else Y=new d.documentFragment(T);var ag=ad.getDirection(1)!=Z,ah=ac.element,ai=ah.getAttribute('class'),aj=ah.getAttribute('style'),ak=Y.type==11&&(Q!=2||ag||aj||ai),al,am=ac.contents.length;for(S=0;S<am;S++){al=ac.contents[S];if(al.type==1&&al.isBlockBoundary()){if(ag&&!al.getDirection())al.setAttribute('dir',Z);t(ah,al);ai&&al.addClass(ai);}else if(ak){if(!aa){aa=T.createElement(ab);ag&&aa.setAttribute('dir',Z);}aj&&aa.setAttribute('style',aj);ai&&aa.setAttribute('class',ai);aa.append(al.clone(1,1));}Y.append(aa||al.clone(1,1));}if(Y.type==11&&W!=N.length-1){var an=Y.getLast();if(an&&an.type==1&&an.getAttribute('type')=='_moz')an.remove();if(!(an=Y.getLast(q)&&an.type==1&&an.getName() in f.$block))Y.append(T.createElement('br'));}var ao=Y.$.nodeName.toLowerCase();if(!c&&(ao=='div'||ao=='p'))Y.appendBogus();U.append(Y);V=null;W++;}else return null;aa=null;if(N.length<=W||Math.max(N[W].indent,0)<X)break;}if(O){var ap=U.getFirst(),aq=N[0].parent;while(ap){if(ap.type==1){h.clearMarkers(O,ap);if(ap.getName() in f.$listItem)s(ap);}ap=ap.getNextSourceNode();}}return{listNode:U,nextIndex:W};}};function u(N){if(N.editor.readOnly)return null;var O=N.data.path,P=O.blockLimit,Q=O.elements,R,S;for(S=0;S<Q.length&&(R=Q[S])&&!R.equals(P);S++){if(m[Q[S].getName()])return this.setState(this.type==Q[S].getName()?1:2);}return this.setState(2);};function v(N,O,P,Q){var R=j.list.listToArray(O.root,P),S=[];for(var T=0;T<O.contents.length;T++){var U=O.contents[T];U=U.getAscendant('li',true);if(!U||U.getCustomData('list_item_processed'))continue;
+S.push(U);h.setMarker(P,U,'list_item_processed',true);}var V=O.root,W=V.getDocument(),X,Y;for(T=0;T<S.length;T++){var Z=S[T].getCustomData('listarray_index');X=R[Z].parent;if(!X.is(this.type)){Y=W.createElement(this.type);X.copyAttributes(Y,{start:1,type:1});Y.removeStyle('list-style-type');R[Z].parent=Y;}}var aa=j.list.arrayToList(R,P,null,N.config.enterMode),ab,ac=aa.listNode.getChildCount();for(T=0;T<ac&&(ab=aa.listNode.getChild(T));T++){if(ab.getName()==this.type)Q.push(ab);}aa.listNode.replace(O.root);};var w=/^h[1-6]$/;function x(N,O,P){var Q=O.contents,R=O.root.getDocument(),S=[];if(Q.length==1&&Q[0].equals(O.root)){var T=R.createElement('div');Q[0].moveChildren&&Q[0].moveChildren(T);Q[0].append(T);Q[0]=T;}var U=O.contents[0].getParent();for(var V=0;V<Q.length;V++)U=U.getCommonAncestor(Q[V].getParent());var W=N.config.useComputedState,X,Y;W=W===undefined||W;for(V=0;V<Q.length;V++){var Z=Q[V],aa;while(aa=Z.getParent()){if(aa.equals(U)){S.push(Z);if(!Y&&Z.getDirection())Y=1;var ab=Z.getDirection(W);if(X!==null)if(X&&X!=ab)X=null;else X=ab;break;}Z=aa;}}if(S.length<1)return;var ac=S[S.length-1].getNext(),ad=R.createElement(this.type);P.push(ad);var ae,af;while(S.length){ae=S.shift();af=R.createElement('li');if(ae.is('pre')||w.test(ae.getName()))ae.appendTo(af);else{ae.copyAttributes(af);if(X&&ae.getDirection()){af.removeStyle('direction');af.removeAttribute('dir');}ae.moveChildren(af);ae.remove();}af.appendTo(ad);}if(X&&Y)ad.setAttribute('dir',X);if(ac)ad.insertBefore(ac);else ad.appendTo(U);};function y(N,O,P){var Q=j.list.listToArray(O.root,P),R=[];for(var S=0;S<O.contents.length;S++){var T=O.contents[S];T=T.getAscendant('li',true);if(!T||T.getCustomData('list_item_processed'))continue;R.push(T);h.setMarker(P,T,'list_item_processed',true);}var U=null;for(S=0;S<R.length;S++){var V=R[S].getCustomData('listarray_index');Q[V].indent=-1;U=V;}for(S=U+1;S<Q.length;S++){if(Q[S].indent>Q[S-1].indent+1){var W=Q[S-1].indent+1-Q[S].indent,X=Q[S].indent;while(Q[S]&&Q[S].indent>=X){Q[S].indent+=W;S++;}S--;}}var Y=j.list.arrayToList(Q,P,null,N.config.enterMode,O.root.getAttribute('dir')),Z=Y.listNode,aa,ab;function ac(ad){if((aa=Z[ad?'getFirst':'getLast']())&&!(aa.is&&aa.isBlockBoundary())&&(ab=O.root[ad?'getPrevious':'getNext'](d.walker.whitespaces(true)))&&!(ab.is&&ab.isBlockBoundary({br:1})))N.document.createElement('br')[ad?'insertBefore':'insertAfter'](aa);};ac(true);ac();Z.replace(O.root);};function z(N,O){this.name=N;this.type=O;};var A=d.walker.nodeType(1);function B(N,O,P,Q){var R,S;
+while(R=N[Q?'getLast':'getFirst'](A)){if((S=R.getDirection(1))!==O.getDirection(1))R.setAttribute('dir',S);R.remove();P?R[Q?'insertBefore':'insertAfter'](P):O.append(R,Q);}};z.prototype={exec:function(N){var aq=this;var O=N.document,P=N.config,Q=N.getSelection(),R=Q&&Q.getRanges(true);if(!R||R.length<1)return;if(aq.state==2){var S=O.getBody();if(!S.getFirst(q)){P.enterMode==2?S.appendBogus():R[0].fixBlock(1,P.enterMode==1?'p':'div');Q.selectRanges(R);}else{var T=R.length==1&&R[0],U=T&&T.getEnclosedNode();if(U&&U.is&&aq.type==U.getName())aq.setState(1);}}var V=Q.createBookmarks(true),W=[],X={},Y=R.createIterator(),Z=0;while((T=Y.getNextRange())&&++Z){var aa=T.getBoundaryNodes(),ab=aa.startNode,ac=aa.endNode;if(ab.type==1&&ab.getName()=='td')T.setStartAt(aa.startNode,1);if(ac.type==1&&ac.getName()=='td')T.setEndAt(aa.endNode,2);var ad=T.createIterator(),ae;ad.forceBrBreak=aq.state==2;while(ae=ad.getNextParagraph()){if(ae.getCustomData('list_block'))continue;else h.setMarker(X,ae,'list_block',1);var af=new d.elementPath(ae),ag=af.elements,ah=ag.length,ai=null,aj=0,ak=af.blockLimit,al;for(var am=ah-1;am>=0&&(al=ag[am]);am--){if(m[al.getName()]&&ak.contains(al)){ak.removeCustomData('list_group_object_'+Z);var an=al.getCustomData('list_group_object');if(an)an.contents.push(ae);else{an={root:al,contents:[ae]};W.push(an);h.setMarker(X,al,'list_group_object',an);}aj=1;break;}}if(aj)continue;var ao=ak;if(ao.getCustomData('list_group_object_'+Z))ao.getCustomData('list_group_object_'+Z).contents.push(ae);else{an={root:ao,contents:[ae]};h.setMarker(X,ao,'list_group_object_'+Z,an);W.push(an);}}}var ap=[];while(W.length>0){an=W.shift();if(aq.state==2){if(m[an.root.getName()])v.call(aq,N,an,X,ap);else x.call(aq,N,an,ap);}else if(aq.state==1&&m[an.root.getName()])y.call(aq,N,an,X);}for(am=0;am<ap.length;am++)C(ap[am]);h.clearAllMarkers(X);Q.selectBookmarks(V);N.focus();}};function C(N){var O;(O=function(P){var Q=N[P?'getPrevious':'getNext'](q);if(Q&&Q.type==1&&Q.is(N.getName())){B(N,Q,null,!P);N.remove();N=Q;}})();O(1);};var D=f,E=/[\t\r\n ]*(?: |\xa0)$/;function F(N,O){var P,Q=N.children,R=Q.length;for(var S=0;S<R;S++){P=Q[S];if(P.name&&P.name in O)return S;}return R;};function G(N){return function(O){var P=O.children,Q=F(O,D.$list),R=P[Q],S=R&&R.previous,T;if(S&&(S.name&&S.name=='br'||S.value&&(T=S.value.match(E)))){var U=S;if(!(T&&T.index)&&U==P[0])P[0]=N||c?new a.htmlParser.text('\xa0'):new a.htmlParser.element('br',{});else if(U.name=='br')P.splice(Q-1,1);else U.value=U.value.replace(E,'');
+}};};var H={elements:{}};for(var I in D.$listItem)H.elements[I]=G();var J={elements:{}};for(I in D.$listItem)J.elements[I]=G(true);function K(N){return N.type==1&&(N.getName() in f.$block||N.getName() in f.$listItem)&&f[N.getName()]['#'];};function L(N,O,P){N.fire('saveSnapshot');P.enlarge(3);var Q=P.extractContents();O.trim(false,true);var R=O.createBookmark(),S=new d.elementPath(O.startContainer),T=S.lastElement.getAscendant('li',1),U=S.block.getBogus();U&&U.remove();var V=Q.getLast();if(V&&V.type==1&&V.is('br'))V.remove();var W=O.startContainer.getChild(O.startOffset);if(W)Q.insertBefore(W);else O.startContainer.append(Q);var X=new d.elementPath(P.startContainer),Y=P.startContainer.getAscendant('li',1);if(Y){var Z=M(Y);if(Z)if(T.contains(Y)){B(Z,Y.getParent(),Y);Z.remove();}else T.append(Z);}while(P.checkStartOfBlock()&&P.checkEndOfBlock()){X=new d.elementPath(P.startContainer);var aa=X.block,ab;if(aa.is('li')){ab=aa.getParent();if(aa.equals(ab.getLast(q))&&aa.equals(ab.getFirst(q)))aa=ab;}P.moveToPosition(aa,3);aa.remove();}var ac=P.clone(),ad=N.document.getBody();ac.setEndAt(ad,2);var ae=new d.walker(ac);ae.evaluator=function(ag){return q(ag)&&!r(ag);};var af=ae.next();if(af&&af.type==1&&af.getName() in f.$list)C(af);O.moveToBookmark(R);O.select();N.selectionChange(1);N.fire('saveSnapshot');};function M(N){var O=N.getLast(q);return O&&O.type==1&&O.getName() in m?O:null;};j.add('list',{init:function(N){var O=N.addCommand('numberedlist',new z('numberedlist','ol')),P=N.addCommand('bulletedlist',new z('bulletedlist','ul'));N.ui.addButton('NumberedList',{label:N.lang.numberedlist,command:'numberedlist'});N.ui.addButton('BulletedList',{label:N.lang.bulletedlist,command:'bulletedlist'});N.on('selectionChange',e.bind(u,O));N.on('selectionChange',e.bind(u,P));N.on('key',function(Q){var R=Q.data.keyCode;if(N.mode=='wysiwyg'&&R in {8:1,46:1}){var S=N.getSelection(),T=S.getRanges()[0];if(!T.collapsed)return;var U=R==8,V=N.document.getBody(),W=new d.walker(T.clone());W.evaluator=function(ah){return q(ah)&&!r(ah);};var X=T.clone();if(U){var Y,Z,aa=new d.elementPath(T.startContainer);if((Y=aa.contains(m))&&T.checkBoundaryOfElement(Y,1)&&(Y=Y.getParent())&&Y.is('li')&&(Y=M(Y))){Z=Y;Y=Y.getPrevious(q);X.moveToPosition(Y&&r(Y)?Y:Z,3);}else{W.range.setStartAt(V,1);W.range.setEnd(T.startContainer,T.startOffset);Y=W.previous();if(Y&&Y.type==1&&(Y.getName() in m||Y.is('li'))){if(!Y.is('li')){W.range.selectNodeContents(Y);W.reset();W.evaluator=K;Y=W.previous();}Z=Y;X.moveToElementEditEnd(Z);
+}}if(Z){L(N,X,T);Q.cancel();}}else{var ab=T.startContainer.getAscendant('li',1);if(ab){W.range.setEndAt(V,2);var ac=ab.getLast(q),ad=ac&&K(ac)?ac:ab,ae=0,af=W.next();if(af&&af.type==1&&af.getName() in m&&af.equals(ac)){ae=1;af=W.next();}else if(T.checkBoundaryOfElement(ad,2))ae=1;if(ae&&af){var ag=T.clone();ag.moveToElementEditStart(af);L(N,X,ag);Q.cancel();}}}setTimeout(function(){N.selectionChange(1);});}});},afterInit:function(N){var O=N.dataProcessor;if(O){O.dataFilter.addRules(H);O.htmlFilter.addRules(J);}},requires:['domiterator']});})();(function(){j.liststyle={requires:['dialog'],init:function(m){m.addCommand('numberedListStyle',new a.dialogCommand('numberedListStyle'));a.dialog.add('numberedListStyle',this.path+'dialogs/liststyle.js');m.addCommand('bulletedListStyle',new a.dialogCommand('bulletedListStyle'));a.dialog.add('bulletedListStyle',this.path+'dialogs/liststyle.js');if(m.addMenuItems){m.addMenuGroup('list',108);m.addMenuItems({numberedlist:{label:m.lang.list.numberedTitle,group:'list',command:'numberedListStyle'},bulletedlist:{label:m.lang.list.bulletedTitle,group:'list',command:'bulletedListStyle'}});}if(m.contextMenu)m.contextMenu.addListener(function(n,o){if(!n||n.isReadOnly())return null;while(n){var p=n.getName();if(p=='ol')return{numberedlist:2};else if(p=='ul')return{bulletedlist:2};n=n.getParent();}return null;});}};j.add('liststyle',j.liststyle);})();(function(){function m(s){if(!s||s.type!=1||s.getName()!='form')return[];var t=[],u=['style','className'];for(var v=0;v<u.length;v++){var w=u[v],x=s.$.elements.namedItem(w);if(x){var y=new h(x);t.push([y,y.nextSibling]);y.remove();}}return t;};function n(s,t){if(!s||s.type!=1||s.getName()!='form')return;if(t.length>0)for(var u=t.length-1;u>=0;u--){var v=t[u][0],w=t[u][1];if(w)v.insertBefore(w);else v.appendTo(s);}};function o(s,t){var u=m(s),v={},w=s.$;if(!t){v['class']=w.className||'';w.className='';}v.inline=w.style.cssText||'';if(!t)w.style.cssText='position: static; overflow: visible';n(u);return v;};function p(s,t){var u=m(s),v=s.$;if('class' in t)v.className=t['class'];if('inline' in t)v.style.cssText=t.inline;n(u);};function q(s){var t=a.instances;for(var u in t){var v=t[u];if(v.mode=='wysiwyg'&&!v.readOnly){var w=v.document.getBody();w.setAttribute('contentEditable',false);w.setAttribute('contentEditable',true);}}if(s.focusManager.hasFocus){s.toolbox.focus();s.focus();}};function r(s){if(!c||b.version>6)return null;var t=h.createFromHtml('<iframe frameborder="0" tabindex="-1" src="javascript:void((function(){document.open();'+(b.isCustomDomain()?"document.domain='"+this.getDocument().$.domain+"';":'')+'document.close();'+'})())"'+' style="display:block;position:absolute;z-index:-1;'+'progid:DXImageTransform.Microsoft.Alpha(opacity=0);'+'"></iframe>');
+return s.append(t,true);};j.add('maximize',{init:function(s){var t=s.lang,u=a.document,v=u.getWindow(),w,x,y,z;function A(){var C=v.getViewPaneSize();z&&z.setStyles({width:C.width+'px',height:C.height+'px'});s.resize(C.width,C.height,null,true);};var B=2;s.addCommand('maximize',{modes:{wysiwyg:!b.iOS,source:!b.iOS},readOnly:1,editorFocus:false,exec:function(){var C=s.container.getChild(1),D=s.getThemeSpace('contents');if(s.mode=='wysiwyg'){var E=s.getSelection();w=E&&E.getRanges();x=v.getScrollPosition();}else{var F=s.textarea.$;w=!c&&[F.selectionStart,F.selectionEnd];x=[F.scrollLeft,F.scrollTop];}if(this.state==2){v.on('resize',A);y=v.getScrollPosition();var G=s.container;while(G=G.getParent()){G.setCustomData('maximize_saved_styles',o(G));G.setStyle('z-index',s.config.baseFloatZIndex-1);}D.setCustomData('maximize_saved_styles',o(D,true));C.setCustomData('maximize_saved_styles',o(C,true));var H={overflow:b.webkit?'':'hidden',width:0,height:0};u.getDocumentElement().setStyles(H);!b.gecko&&u.getDocumentElement().setStyle('position','fixed');!(b.gecko&&b.quirks)&&u.getBody().setStyles(H);c?setTimeout(function(){v.$.scrollTo(0,0);},0):v.$.scrollTo(0,0);C.setStyle('position',b.gecko&&b.quirks?'fixed':'absolute');C.$.offsetLeft;C.setStyles({'z-index':s.config.baseFloatZIndex-1,left:'0px',top:'0px'});z=r(C);C.addClass('cke_maximized');A();var I=C.getDocumentPosition();C.setStyles({left:-1*I.x+'px',top:-1*I.y+'px'});b.gecko&&q(s);}else if(this.state==1){v.removeListener('resize',A);var J=[D,C];for(var K=0;K<J.length;K++){p(J[K],J[K].getCustomData('maximize_saved_styles'));J[K].removeCustomData('maximize_saved_styles');}G=s.container;while(G=G.getParent()){p(G,G.getCustomData('maximize_saved_styles'));G.removeCustomData('maximize_saved_styles');}c?setTimeout(function(){v.$.scrollTo(y.x,y.y);},0):v.$.scrollTo(y.x,y.y);C.removeClass('cke_maximized');if(b.webkit){C.setStyle('display','inline');setTimeout(function(){C.setStyle('display','block');},0);}if(z){z.remove();z=null;}s.fire('resize');}this.toggleState();var L=this.uiItems[0];if(L){var M=this.state==2?t.maximize:t.minimize,N=s.element.getDocument().getById(L._.id);N.getChild(1).setHtml(M);N.setAttribute('title',M);N.setAttribute('href','javascript:void("'+M+'");');}if(s.mode=='wysiwyg'){if(w){b.gecko&&q(s);s.getSelection().selectRanges(w);var O=s.getSelection().getStartElement();O&&O.scrollIntoView(true);}else v.$.scrollTo(x.x,x.y);}else{if(w){F.selectionStart=w[0];F.selectionEnd=w[1];}F.scrollLeft=x[0];F.scrollTop=x[1];
+}w=x=null;B=this.state;},canUndo:false});s.ui.addButton('Maximize',{label:t.maximize,command:'maximize'});s.on('mode',function(){var C=s.getCommand('maximize');C.setState(C.state==0?0:B);},null,null,100);}});})();j.add('newpage',{init:function(m){m.addCommand('newpage',{modes:{wysiwyg:1,source:1},exec:function(n){var o=this;n.setData(n.config.newpage_html||'',function(){setTimeout(function(){n.fire('afterCommandExec',{name:'newpage',command:o});n.selectionChange();},200);});n.focus();},async:true});m.ui.addButton('NewPage',{label:m.lang.newPage,command:'newpage'});}});j.add('pagebreak',{init:function(m){m.addCommand('pagebreak',j.pagebreakCmd);m.ui.addButton('PageBreak',{label:m.lang.pagebreak,command:'pagebreak'});var n=['{','background: url('+a.getUrl(this.path+'images/pagebreak.gif')+') no-repeat center center;','clear: both;','width:100%; _width:99.9%;','border-top: #999999 1px dotted;','border-bottom: #999999 1px dotted;','padding:0;','height: 5px;','cursor: default;','}'].join('').replace(/;/g,' !important;');m.addCss('div.cke_pagebreak'+n);b.opera&&m.on('contentDom',function(){m.document.on('click',function(o){var p=o.data.getTarget();if(p.is('div')&&p.hasClass('cke_pagebreak'))m.getSelection().selectElement(p);});});},afterInit:function(m){var n=m.lang.pagebreakAlt,o=m.dataProcessor,p=o&&o.dataFilter,q=o&&o.htmlFilter;if(q)q.addRules({attributes:{'class':function(r,s){var t=r.replace('cke_pagebreak','');if(t!=r){var u=a.htmlParser.fragment.fromHtml('<span style="display: none;"> </span>');s.children.length=0;s.add(u);var v=s.attributes;delete v['aria-label'];delete v.contenteditable;delete v.title;}return t;}}},5);if(p)p.addRules({elements:{div:function(r){var s=r.attributes,t=s&&s.style,u=t&&r.children.length==1&&r.children[0],v=u&&u.name=='span'&&u.attributes.style;if(v&&/page-break-after\s*:\s*always/i.test(t)&&/display\s*:\s*none/i.test(v)){s.contenteditable='false';s['class']='cke_pagebreak';s['data-cke-display-name']='pagebreak';s['aria-label']=n;s.title=n;r.children.length=0;}}}});},requires:['fakeobjects']});j.pagebreakCmd={exec:function(m){var n=m.lang.pagebreakAlt,o=h.createFromHtml('<div style="page-break-after: always;"contenteditable="false" title="'+n+'" '+'aria-label="'+n+'" '+'data-cke-display-name="pagebreak" '+'class="cke_pagebreak">'+'</div>',m.document),p=m.getSelection().getRanges(true);m.fire('saveSnapshot');for(var q,r=p.length-1;r>=0;r--){q=p[r];if(r<p.length-1)o=o.clone(true);q.splitBlock('p');q.insertNode(o);if(r==p.length-1){var s=o.getNext();
+q.moveToPosition(o,4);if(!s||s.type==1&&!s.isEditable())q.fixBlock(true,m.config.enterMode==3?'div':'p');q.select();}}m.fire('saveSnapshot');}};(function(){function m(n){n.data.mode='html';};j.add('pastefromword',{init:function(n){var o=0,p=function(q){q&&q.removeListener();n.removeListener('beforePaste',m);o&&setTimeout(function(){o=0;},0);};n.addCommand('pastefromword',{canUndo:false,exec:function(){o=1;n.on('beforePaste',m);if(n.execCommand('paste','html')===false){n.on('dialogShow',function(q){q.removeListener();q.data.on('cancel',p);});n.on('dialogHide',function(q){q.data.removeListener('cancel',p);});}n.on('afterPaste',p);}});n.ui.addButton('PasteFromWord',{label:n.lang.pastefromword.toolbar,command:'pastefromword'});n.on('pasteState',function(q){n.getCommand('pastefromword').setState(q.data);});n.on('paste',function(q){var r=q.data,s;if((s=r.html)&&(o||/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(s))){var t=this.loadFilterRules(function(){if(t)n.fire('paste',r);else if(!n.config.pasteFromWordPromptCleanup||o||confirm(n.lang.pastefromword.confirmCleanup))r.html=a.cleanWord(s,n);});t&&q.cancel();}},this);},loadFilterRules:function(n){var o=a.cleanWord;if(o)n();else{var p=a.getUrl(i.pasteFromWordCleanupFile||this.path+'filter/default.js');a.scriptLoader.load(p,n,null,true);}return!o;},requires:['clipboard']});})();(function(){var m={exec:function(n){var o=e.tryThese(function(){var p=window.clipboardData.getData('Text');if(!p)throw 0;return p;});if(!o){n.openDialog('pastetext');return false;}else n.fire('paste',{text:o});return true;}};j.add('pastetext',{init:function(n){var o='pastetext',p=n.addCommand(o,m);n.ui.addButton('PasteText',{label:n.lang.pasteText.button,command:o});a.dialog.add(o,a.getUrl(this.path+'dialogs/pastetext.js'));if(n.config.forcePasteAsPlainText){n.on('beforeCommandExec',function(q){var r=q.data.commandData;if(q.data.name=='paste'&&r!='html'){n.execCommand('pastetext');q.cancel();}},null,null,0);n.on('beforePaste',function(q){q.data.mode='text';});}n.on('pasteState',function(q){n.getCommand('pastetext').setState(q.data);});},requires:['clipboard']});})();j.add('popup');e.extend(a.editor.prototype,{popup:function(m,n,o,p){n=n||'80%';o=o||'70%';if(typeof n=='string'&&n.length>1&&n.substr(n.length-1,1)=='%')n=parseInt(window.screen.width*parseInt(n,10)/100,10);if(typeof o=='string'&&o.length>1&&o.substr(o.length-1,1)=='%')o=parseInt(window.screen.height*parseInt(o,10)/100,10);if(n<640)n=640;if(o<420)o=420;var q=parseInt((window.screen.height-o)/2,10),r=parseInt((window.screen.width-n)/2,10);
+p=(p||'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes')+',width='+n+',height='+o+',top='+q+',left='+r;var s=window.open('',null,p,true);if(!s)return false;try{var t=navigator.userAgent.toLowerCase();if(t.indexOf(' chrome/')==-1){s.moveTo(r,q);s.resizeTo(n,o);}s.focus();s.location.href=m;}catch(u){s=window.open(m,null,p,true);}return true;}});(function(){var m,n={modes:{wysiwyg:1,source:1},canUndo:false,readOnly:1,exec:function(p){var q,r=p.config,s=r.baseHref?'<base href="'+r.baseHref+'"/>':'',t=b.isCustomDomain();if(r.fullPage)q=p.getData().replace(/<head>/,'$&'+s).replace(/[^>]*(?=<\/title>)/,'$& — '+p.lang.preview);else{var u='<body ',v=p.document&&p.document.getBody();if(v){if(v.getAttribute('id'))u+='id="'+v.getAttribute('id')+'" ';if(v.getAttribute('class'))u+='class="'+v.getAttribute('class')+'" ';}u+='>';q=p.config.docType+'<html dir="'+p.config.contentsLangDirection+'">'+'<head>'+s+'<title>'+p.lang.preview+'</title>'+e.buildStyleHtml(p.config.contentsCss)+'</head>'+u+p.getData()+'</body></html>';}var w=640,x=420,y=80;try{var z=window.screen;w=Math.round(z.width*0.8);x=Math.round(z.height*0.7);y=Math.round(z.width*0.1);}catch(D){}var A='';if(t){window._cke_htmlToLoad=q;A='javascript:void( (function(){document.open();document.domain="'+document.domain+'";'+'document.write( window.opener._cke_htmlToLoad );'+'document.close();'+'window.opener._cke_htmlToLoad = null;'+'})() )';}if(b.gecko){window._cke_htmlToLoad=q;A=m+'preview.html';}var B=window.open(A,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+w+',height='+x+',left='+y);if(!t&&!b.gecko){var C=B.document;C.open();C.write(q);C.close();b.webkit&&setTimeout(function(){C.body.innerHTML+='';},0);}}},o='preview';j.add(o,{init:function(p){m=this.path;p.addCommand(o,n);p.ui.addButton('Preview',{label:p.lang.preview,command:o});}});})();j.add('print',{init:function(m){var n='print',o=m.addCommand(n,j.print);m.ui.addButton('Print',{label:m.lang.print,command:n});}});j.print={exec:function(m){if(b.opera)return;else if(b.gecko)m.window.$.print();else m.document.$.execCommand('Print');},canUndo:false,readOnly:1,modes:{wysiwyg:!b.opera}};j.add('removeformat',{requires:['selection'],init:function(m){m.addCommand('removeFormat',j.removeformat.commands.removeformat);m.ui.addButton('RemoveFormat',{label:m.lang.removeFormat,command:'removeFormat'});m._.removeFormat={filters:[]};}});j.removeformat={commands:{removeformat:{exec:function(m){var n=m._.removeFormatRegex||(m._.removeFormatRegex=new RegExp('^(?:'+m.config.removeFormatTags.replace(/,/g,'|')+')$','i')),o=m._.removeAttributes||(m._.removeAttributes=m.config.removeFormatAttributes.split(',')),p=j.removeformat.filter,q=m.getSelection().getRanges(1),r=q.createIterator(),s;
+while(s=r.getNextRange()){if(!s.collapsed)s.enlarge(1);var t=s.createBookmark(),u=t.startNode,v=t.endNode,w,x=function(z){var A=new d.elementPath(z),B=A.elements;for(var C=1,D;D=B[C];C++){if(D.equals(A.block)||D.equals(A.blockLimit))break;if(n.test(D.getName())&&p(m,D))z.breakParent(D);}};x(u);if(v){x(v);w=u.getNextSourceNode(true,1);while(w){if(w.equals(v))break;var y=w.getNextSourceNode(false,1);if(!(w.getName()=='img'&&w.data('cke-realelement'))&&p(m,w))if(n.test(w.getName()))w.remove(1);else{w.removeAttributes(o);m.fire('removeFormatCleanup',w);}w=y;}}s.moveToBookmark(t);}m.getSelection().selectRanges(q);}}},filter:function(m,n){var o=m._.removeFormat.filters;for(var p=0;p<o.length;p++){if(o[p](n)===false)return false;}return true;}};a.editor.prototype.addRemoveFormatFilter=function(m){this._.removeFormat.filters.push(m);};i.removeFormatTags='b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var';i.removeFormatAttributes='class,style,lang,width,height,align,hspace,valign';j.add('resize',{init:function(m){var n=m.config,o=m.element.getDirection(1);!n.resize_dir&&(n.resize_dir='both');n.resize_maxWidth==undefined&&(n.resize_maxWidth=3000);n.resize_maxHeight==undefined&&(n.resize_maxHeight=3000);n.resize_minWidth==undefined&&(n.resize_minWidth=750);n.resize_minHeight==undefined&&(n.resize_minHeight=250);if(n.resize_enabled!==false){var p=null,q,r,s=(n.resize_dir=='both'||n.resize_dir=='horizontal')&&n.resize_minWidth!=n.resize_maxWidth,t=(n.resize_dir=='both'||n.resize_dir=='vertical')&&n.resize_minHeight!=n.resize_maxHeight;function u(x){var y=x.data.$.screenX-q.x,z=x.data.$.screenY-q.y,A=r.width,B=r.height,C=A+y*(o=='rtl'?-1:1),D=B+z;if(s)A=Math.max(n.resize_minWidth,Math.min(C,n.resize_maxWidth));if(t)B=Math.max(n.resize_minHeight,Math.min(D,n.resize_maxHeight));m.resize(s?A:null,B);};function v(x){a.document.removeListener('mousemove',u);a.document.removeListener('mouseup',v);if(m.document){m.document.removeListener('mousemove',u);m.document.removeListener('mouseup',v);}};var w=e.addFunction(function(x){if(!p)p=m.getResizable();r={width:p.$.offsetWidth||0,height:p.$.offsetHeight||0};q={x:x.screenX,y:x.screenY};n.resize_minWidth>r.width&&(n.resize_minWidth=r.width);n.resize_minHeight>r.height&&(n.resize_minHeight=r.height);a.document.on('mousemove',u);a.document.on('mouseup',v);if(m.document){m.document.on('mousemove',u);m.document.on('mouseup',v);}});m.on('destroy',function(){e.removeFunction(w);});m.on('themeSpace',function(x){if(x.data.space=='bottom'){var y='';
+if(s&&!t)y=' cke_resizer_horizontal';if(!s&&t)y=' cke_resizer_vertical';var z='<div class="cke_resizer'+y+' cke_resizer_'+o+'"'+' title="'+e.htmlEncode(m.lang.resize)+'"'+' onmousedown="CKEDITOR.tools.callFunction('+w+', event)"'+'></div>';o=='ltr'&&y=='ltr'?x.data.html+=z:x.data.html=z+x.data.html;}},m,null,100);}}});(function(){var m={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(o){var p=o.element.$.form;if(p)try{p.submit();}catch(q){if(p.submit.click)p.submit.click();}}},n='save';j.add(n,{init:function(o){var p=o.addCommand(n,m);p.modes={wysiwyg:!!o.element.$.form};o.ui.addButton('Save',{label:o.lang.save,command:n});}});})();(function(){var m='scaytcheck',n='';function o(t,u){var v=0,w;for(w in u){if(u[w]==t){v=1;break;}}return v;};var p=function(){var t=this,u=function(){var y=t.config,z={};z.srcNodeRef=t.document.getWindow().$.frameElement;z.assocApp='CKEDITOR.'+a.version+'@'+a.revision;z.customerid=y.scayt_customerid||'1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2';z.customDictionaryIds=y.scayt_customDictionaryIds||'';z.userDictionaryName=y.scayt_userDictionaryName||'';z.sLang=y.scayt_sLang||'en_US';z.onLoad=function(){if(!(c&&b.version<8))this.addStyle(this.selectorCss(),'padding-bottom: 2px !important;');if(t.focusManager.hasFocus&&!q.isControlRestored(t))this.focus();};z.onBeforeChange=function(){if(q.getScayt(t)&&!t.checkDirty())setTimeout(function(){t.resetDirty();},0);};var A=window.scayt_custom_params;if(typeof A=='object')for(var B in A)z[B]=A[B];if(q.getControlId(t))z.id=q.getControlId(t);var C=new window.scayt(z);C.afterMarkupRemove.push(function(E){new h(E,C.document).mergeSiblings();});var D=q.instances[t.name];if(D){C.sLang=D.sLang;C.option(D.option());C.paused=D.paused;}q.instances[t.name]=C;try{C.setDisabled(q.isPaused(t)===false);}catch(E){}t.fire('showScaytState');};t.on('contentDom',u);t.on('contentDomUnload',function(){var y=a.document.getElementsByTag('script'),z=/^dojoIoScript(\d+)$/i,A=/^https?:\/\/svc\.webspellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;for(var B=0;B<y.count();B++){var C=y.getItem(B),D=C.getId(),E=C.getAttribute('src');if(D&&E&&D.match(z)&&E.match(A))C.remove();}});t.on('beforeCommandExec',function(y){if((y.data.name=='source'||y.data.name=='newpage')&&t.mode=='wysiwyg'){var z=q.getScayt(t);if(z){q.setPaused(t,!z.disabled);q.setControlId(t,z.id);z.destroy(true);delete q.instances[t.name];}}else if(y.data.name=='source'&&t.mode=='source')q.markControlRestore(t);});t.on('afterCommandExec',function(y){if(!q.isScaytEnabled(t))return;
+if(t.mode=='wysiwyg'&&(y.data.name=='undo'||y.data.name=='redo'))window.setTimeout(function(){q.getScayt(t).refresh();},10);});t.on('destroy',function(y){var z=y.editor,A=q.getScayt(z);if(!A)return;delete q.instances[z.name];q.setControlId(z,A.id);A.destroy(true);});t.on('afterSetData',function(){if(q.isScaytEnabled(t))window.setTimeout(function(){var y=q.getScayt(t);y&&y.refresh();},10);});t.on('insertElement',function(){var y=q.getScayt(t);if(q.isScaytEnabled(t)){if(c)t.getSelection().unlock(true);window.setTimeout(function(){y.focus();y.refresh();},10);}},this,null,50);t.on('insertHtml',function(){var y=q.getScayt(t);if(q.isScaytEnabled(t)){if(c)t.getSelection().unlock(true);window.setTimeout(function(){y.focus();y.refresh();},10);}},this,null,50);t.on('scaytDialog',function(y){y.data.djConfig=window.djConfig;y.data.scayt_control=q.getScayt(t);y.data.tab=n;y.data.scayt=window.scayt;});var v=t.dataProcessor,w=v&&v.htmlFilter;if(w)w.addRules({elements:{span:function(y){if(y.attributes['data-scayt_word']&&y.attributes['data-scaytid']){delete y.name;return y;}}}});var x=j.undo.Image.prototype;x.equals=e.override(x.equals,function(y){return function(z){var E=this;var A=E.contents,B=z.contents,C=q.getScayt(E.editor);if(C&&q.isScaytReady(E.editor)){E.contents=C.reset(A)||'';z.contents=C.reset(B)||'';}var D=y.apply(E,arguments);E.contents=A;z.contents=B;return D;};});if(t.document)u();};j.scayt={engineLoaded:false,instances:{},controlInfo:{},setControlInfo:function(t,u){if(t&&t.name&&typeof this.controlInfo[t.name]!='object')this.controlInfo[t.name]={};for(var v in u)this.controlInfo[t.name][v]=u[v];},isControlRestored:function(t){if(t&&t.name&&this.controlInfo[t.name])return this.controlInfo[t.name].restored;return false;},markControlRestore:function(t){this.setControlInfo(t,{restored:true});},setControlId:function(t,u){this.setControlInfo(t,{id:u});},getControlId:function(t){if(t&&t.name&&this.controlInfo[t.name]&&this.controlInfo[t.name].id)return this.controlInfo[t.name].id;return null;},setPaused:function(t,u){this.setControlInfo(t,{paused:u});},isPaused:function(t){if(t&&t.name&&this.controlInfo[t.name])return this.controlInfo[t.name].paused;return undefined;},getScayt:function(t){return this.instances[t.name];},isScaytReady:function(t){return this.engineLoaded===true&&'undefined'!==typeof window.scayt&&this.getScayt(t);},isScaytEnabled:function(t){var u=this.getScayt(t);return u?u.disabled===false:false;},getUiTabs:function(t){var u=[],v=t.config.scayt_uiTabs||'1,1,1';
+v=v.split(',');v[3]='1';for(var w=0;w<4;w++)u[w]=typeof window.scayt!='undefined'&&typeof window.scayt.uiTags!='undefined'?parseInt(v[w],10)&&window.scayt.uiTags[w]:parseInt(v[w],10);return u;},loadEngine:function(t){if(b.gecko&&b.version<10900||b.opera||b.air)return t.fire('showScaytState');if(this.engineLoaded===true)return p.apply(t);else if(this.engineLoaded==-1)return a.on('scaytReady',function(){p.apply(t);});a.on('scaytReady',p,t);a.on('scaytReady',function(){this.engineLoaded=true;},this,null,0);this.engineLoaded=-1;var u=document.location.protocol;u=u.search(/https?:/)!=-1?u:'http:';var v='svc.webspellchecker.net/scayt26/loader__base.js',w=t.config.scayt_srcUrl||u+'//'+v,x=q.parseUrl(w).path+'/';if(window.scayt==undefined){a._djScaytConfig={baseUrl:x,addOnLoad:[function(){a.fireOnce('scaytReady');}],isDebug:false};a.document.getHead().append(a.document.createElement('script',{attributes:{type:'text/javascript',async:'true',src:w}}));}else a.fireOnce('scaytReady');return null;},parseUrl:function(t){var u;if(t.match&&(u=t.match(/(.*)[\/\\](.*?\.\w+)$/)))return{path:u[1],file:u[2]};else return t;}};var q=j.scayt,r=function(t,u,v,w,x,y,z){t.addCommand(w,x);t.addMenuItem(w,{label:v,command:w,group:y,order:z});},s={preserveState:true,editorFocus:false,canUndo:false,exec:function(t){if(q.isScaytReady(t)){var u=q.isScaytEnabled(t);this.setState(u?2:1);var v=q.getScayt(t);v.focus();v.setDisabled(u);}else if(!t.config.scayt_autoStartup&&q.engineLoaded>=0){this.setState(0);q.loadEngine(t);}}};j.add('scayt',{requires:['menubutton'],beforeInit:function(t){var u=t.config.scayt_contextMenuItemsOrder||'suggest|moresuggest|control',v='';u=u.split('|');if(u&&u.length)for(var w=0;w<u.length;w++)v+='scayt_'+u[w]+(u.length!=parseInt(w,10)+1?',':'');t.config.menu_groups=v+','+t.config.menu_groups;},init:function(t){var u=t.dataProcessor&&t.dataProcessor.dataFilter,v={elements:{span:function(E){var F=E.attributes;if(F&&F['data-scaytid'])delete E.name;}}};u&&u.addRules(v);var w={},x={},y=t.addCommand(m,s);a.dialog.add(m,a.getUrl(this.path+'dialogs/options.js'));var z=q.getUiTabs(t),A='scaytButton';t.addMenuGroup(A);var B={},C=t.lang.scayt;B.scaytToggle={label:C.enable,command:m,group:A};if(z[0]==1)B.scaytOptions={label:C.options,group:A,onClick:function(){n='options';t.openDialog(m);}};if(z[1]==1)B.scaytLangs={label:C.langs,group:A,onClick:function(){n='langs';t.openDialog(m);}};if(z[2]==1)B.scaytDict={label:C.dictionariesTab,group:A,onClick:function(){n='dictionaries';t.openDialog(m);
+}};B.scaytAbout={label:t.lang.scayt.about,group:A,onClick:function(){n='about';t.openDialog(m);}};t.addMenuItems(B);t.ui.add('Scayt','menubutton',{label:C.title,title:b.opera?C.opera_title:C.title,className:'cke_button_scayt',modes:{wysiwyg:1},onRender:function(){y.on('state',function(){this.setState(y.state);},this);},onMenu:function(){var E=q.isScaytEnabled(t);t.getMenuItem('scaytToggle').label=C[E?'disable':'enable'];var F=q.getUiTabs(t);return{scaytToggle:2,scaytOptions:E&&F[0]?2:0,scaytLangs:E&&F[1]?2:0,scaytDict:E&&F[2]?2:0,scaytAbout:E&&F[3]?2:0};}});if(t.contextMenu&&t.addMenuItems)t.contextMenu.addListener(function(E,F){if(!q.isScaytEnabled(t)||F.getRanges()[0].checkReadOnly())return null;var G=q.getScayt(t),H=G.getScaytNode();if(!H)return null;var I=G.getWord(H);if(!I)return null;var J=G.getLang(),K={},L=window.scayt.getSuggestion(I,J);if(!L||!L.length)return null;for(var M in w){delete t._.menuItems[M];delete t._.commands[M];}for(M in x){delete t._.menuItems[M];delete t._.commands[M];}w={};x={};var N=t.config.scayt_moreSuggestions||'on',O=false,P=t.config.scayt_maxSuggestions;typeof P!='number'&&(P=5);!P&&(P=L.length);var Q=t.config.scayt_contextCommands||'all';Q=Q.split('|');for(var R=0,S=L.length;R<S;R+=1){var T='scayt_suggestion_'+L[R].replace(' ','_'),U=(function(Y,Z){return{exec:function(){G.replace(Y,Z);}};})(H,L[R]);if(R<P){r(t,'button_'+T,L[R],T,U,'scayt_suggest',R+1);K[T]=2;x[T]=2;}else if(N=='on'){r(t,'button_'+T,L[R],T,U,'scayt_moresuggest',R+1);w[T]=2;O=true;}}if(O){t.addMenuItem('scayt_moresuggest',{label:C.moreSuggestions,group:'scayt_moresuggest',order:10,getItems:function(){return w;}});x.scayt_moresuggest=2;}if(o('all',Q)||o('ignore',Q)){var V={exec:function(){G.ignore(H);}};r(t,'ignore',C.ignore,'scayt_ignore',V,'scayt_control',1);x.scayt_ignore=2;}if(o('all',Q)||o('ignoreall',Q)){var W={exec:function(){G.ignoreAll(H);}};r(t,'ignore_all',C.ignoreAll,'scayt_ignore_all',W,'scayt_control',2);x.scayt_ignore_all=2;}if(o('all',Q)||o('add',Q)){var X={exec:function(){window.scayt.addWordToUserDictionary(H);}};r(t,'add_word',C.addWord,'scayt_add_word',X,'scayt_control',3);x.scayt_add_word=2;}if(G.fireOnContextMenu)G.fireOnContextMenu(t);return x;});var D=function(){t.removeListener('showScaytState',D);if(!b.opera&&!b.air)y.setState(q.isScaytEnabled(t)?1:2);else y.setState(0);};t.on('showScaytState',D);if(b.opera||b.air)t.on('instanceReady',function(){D();});if(t.config.scayt_autoStartup)t.on('instanceReady',function(){q.loadEngine(t);});
+},afterInit:function(t){var u,v=function(w){if(w.hasAttribute('data-scaytid'))return false;};if(t._.elementsPath&&(u=t._.elementsPath.filters))u.push(v);t.addRemoveFormatFilter&&t.addRemoveFormatFilter(v);}});})();j.add('smiley',{requires:['dialog'],init:function(m){m.config.smiley_path=m.config.smiley_path||this.path+'images/';m.addCommand('smiley',new a.dialogCommand('smiley'));m.ui.addButton('Smiley',{label:m.lang.smiley.toolbar,command:'smiley'});a.dialog.add('smiley',this.path+'dialogs/smiley.js');}});i.smiley_images=['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'];i.smiley_descriptions=['smiley','sad','wink','laugh','frown','cheeky','blush','surprise','indecision','angry','angel','cool','devil','crying','enlightened','no','yes','heart','broken heart','kiss','mail'];(function(){var m='.%2 p,.%2 div,.%2 pre,.%2 address,.%2 blockquote,.%2 h1,.%2 h2,.%2 h3,.%2 h4,.%2 h5,.%2 h6{background-repeat: no-repeat;background-position: top %3;border: 1px dotted gray;padding-top: 8px;padding-%3: 8px;}.%2 p{%1p.png);}.%2 div{%1div.png);}.%2 pre{%1pre.png);}.%2 address{%1address.png);}.%2 blockquote{%1blockquote.png);}.%2 h1{%1h1.png);}.%2 h2{%1h2.png);}.%2 h3{%1h3.png);}.%2 h4{%1h4.png);}.%2 h5{%1h5.png);}.%2 h6{%1h6.png);}',n=/%1/g,o=/%2/g,p=/%3/g,q={readOnly:1,preserveState:true,editorFocus:false,exec:function(r){this.toggleState();this.refresh(r);},refresh:function(r){if(r.document){var s=this.state==1?'addClass':'removeClass';r.document.getBody()[s]('cke_show_blocks');}}};j.add('showblocks',{requires:['wysiwygarea'],init:function(r){var s=r.addCommand('showblocks',q);s.canUndo=false;if(r.config.startupOutlineBlocks)s.setState(1);r.addCss(m.replace(n,'background-image: url('+a.getUrl(this.path)+'images/block_').replace(o,'cke_show_blocks ').replace(p,r.lang.dir=='rtl'?'right':'left'));r.ui.addButton('ShowBlocks',{label:r.lang.showBlocks,command:'showblocks'});r.on('mode',function(){if(s.state!=0)s.refresh(r);});r.on('contentDom',function(){if(s.state!=0)s.refresh(r);});}});})();(function(){var m='cke_show_border',n,o=(b.ie6Compat?['.%1 table.%2,','.%1 table.%2 td, .%1 table.%2 th','{','border : #d3d3d3 1px dotted','}']:['.%1 table.%2,','.%1 table.%2 > tr > td, .%1 table.%2 > tr > th,','.%1 table.%2 > tbody > tr > td, .%1 table.%2 > tbody > tr > th,','.%1 table.%2 > thead > tr > td, .%1 table.%2 > thead > tr > th,','.%1 table.%2 > tfoot > tr > td, .%1 table.%2 > tfoot > tr > th','{','border : #d3d3d3 1px dotted','}']).join('');
+n=o.replace(/%2/g,m).replace(/%1/g,'cke_show_borders ');var p={preserveState:true,editorFocus:false,readOnly:1,exec:function(q){this.toggleState();this.refresh(q);},refresh:function(q){if(q.document){var r=this.state==1?'addClass':'removeClass';q.document.getBody()[r]('cke_show_borders');}}};j.add('showborders',{requires:['wysiwygarea'],modes:{wysiwyg:1},init:function(q){var r=q.addCommand('showborders',p);r.canUndo=false;if(q.config.startupShowBorders!==false)r.setState(1);q.addCss(n);q.on('mode',function(){if(r.state!=0)r.refresh(q);},null,null,100);q.on('contentDom',function(){if(r.state!=0)r.refresh(q);});q.on('removeFormatCleanup',function(s){var t=s.data;if(q.getCommand('showborders').state==1&&t.is('table')&&(!t.hasAttribute('border')||parseInt(t.getAttribute('border'),10)<=0))t.addClass(m);});},afterInit:function(q){var r=q.dataProcessor,s=r&&r.dataFilter,t=r&&r.htmlFilter;if(s)s.addRules({elements:{table:function(u){var v=u.attributes,w=v['class'],x=parseInt(v.border,10);if((!x||x<=0)&&(!w||w.indexOf(m)==-1))v['class']=(w||'')+' '+m;}}});if(t)t.addRules({elements:{table:function(u){var v=u.attributes,w=v['class'];w&&(v['class']=w.replace(m,'').replace(/\s{2}/,' ').replace(/^\s+|\s+$/,''));}}});}});a.on('dialogDefinition',function(q){var r=q.data.name;if(r=='table'||r=='tableProperties'){var s=q.data.definition,t=s.getContents('info'),u=t.get('txtBorder'),v=u.commit;u.commit=e.override(v,function(y){return function(z,A){y.apply(this,arguments);var B=parseInt(this.getValue(),10);A[!B||B<=0?'addClass':'removeClass'](m);};});var w=s.getContents('advanced'),x=w&&w.get('advCSSClasses');if(x){x.setup=e.override(x.setup,function(y){return function(){y.apply(this,arguments);this.setValue(this.getValue().replace(/cke_show_border/,''));};});x.commit=e.override(x.commit,function(y){return function(z,A){y.apply(this,arguments);if(!parseInt(A.getAttribute('border'),10))A.addClass('cke_show_border');};});}}});})();j.add('sourcearea',{requires:['editingblock'],init:function(m){var n=j.sourcearea,o=a.document.getWindow();m.on('editingBlockReady',function(){var p,q;m.addMode('source',{load:function(r,s){if(c&&b.version<8)r.setStyle('position','relative');m.textarea=p=new h('textarea');p.setAttributes({dir:'ltr',tabIndex:b.webkit?-1:m.tabIndex,role:'textbox','aria-label':m.lang.editorTitle.replace('%1',m.name)});p.addClass('cke_source');p.addClass('cke_enable_context_menu');m.readOnly&&p.setAttribute('readOnly','readonly');var t={width:b.ie7Compat?'99%':'100%',height:'100%',resize:'none',outline:'none','text-align':'left'};
+if(c){q=function(){p.hide();p.setStyle('height',r.$.clientHeight+'px');p.setStyle('width',r.$.clientWidth+'px');p.show();};m.on('resize',q);o.on('resize',q);setTimeout(q,0);}r.setHtml('');r.append(p);p.setStyles(t);m.fire('ariaWidget',p);p.on('blur',function(){m.focusManager.blur();});p.on('focus',function(){m.focusManager.focus();});m.mayBeDirty=true;this.loadData(s);var u=m.keystrokeHandler;if(u)u.attach(p);setTimeout(function(){m.mode='source';m.fire('mode',{previousMode:m._.previousMode});},b.gecko||b.webkit?100:0);},loadData:function(r){p.setValue(r);m.fire('dataReady');},getData:function(){return p.getValue();},getSnapshotData:function(){return p.getValue();},unload:function(r){p.clearCustomData();m.textarea=p=null;if(q){m.removeListener('resize',q);o.removeListener('resize',q);}if(c&&b.version<8)r.removeStyle('position');},focus:function(){p.focus();}});});m.on('readOnly',function(){if(m.mode=='source')if(m.readOnly)m.textarea.setAttribute('readOnly','readonly');else m.textarea.removeAttribute('readOnly');});m.addCommand('source',n.commands.source);if(m.ui.addButton)m.ui.addButton('Source',{label:m.lang.source,command:'source'});m.on('mode',function(){m.getCommand('source').setState(m.mode=='source'?1:2);});}});j.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:false,readOnly:1,exec:function(m){if(m.mode=='wysiwyg')m.fire('saveSnapshot');m.getCommand('source').setState(0);m.setMode(m.mode=='source'?'wysiwyg':'source');},canUndo:false}}};(function(){j.add('stylescombo',{requires:['richcombo','styles'],init:function(n){var o=n.config,p=n.lang.stylesCombo,q={},r=[],s;function t(u){n.getStylesSet(function(v){if(!r.length){var w,x;for(var y=0,z=v.length;y<z;y++){var A=v[y];x=A.name;w=q[x]=new a.style(A);w._name=x;w._.enterMode=o.enterMode;r.push(w);}r.sort(m);}u&&u();});};n.ui.addRichCombo('Styles',{label:p.label,title:p.panelTitle,className:'cke_styles',panel:{css:n.skin.editor.css.concat(o.contentsCss),multiSelect:true,attributes:{'aria-label':p.panelTitle}},init:function(){s=this;t(function(){var u,v,w,x,y,z;for(y=0,z=r.length;y<z;y++){u=r[y];v=u._name;x=u.type;if(x!=w){s.startGroup(p['panelTitle'+String(x)]);w=x;}s.add(v,u.type==3?v:u.buildPreview(),v);}s.commit();});},onClick:function(u){n.focus();n.fire('saveSnapshot');var v=q[u],w=n.getSelection(),x=new d.elementPath(w.getStartElement());v[v.checkActive(x)?'remove':'apply'](n.document);n.fire('saveSnapshot');},onRender:function(){n.on('selectionChange',function(u){var v=this.getValue(),w=u.data.path,x=w.elements;
+for(var y=0,z=x.length,A;y<z;y++){A=x[y];for(var B in q){if(q[B].checkElementRemovable(A,true)){if(B!=v)this.setValue(B);return;}}}this.setValue('');},this);},onOpen:function(){var B=this;if(c||b.webkit)n.focus();var u=n.getSelection(),v=u.getSelectedElement(),w=new d.elementPath(v||u.getStartElement()),x=[0,0,0,0];B.showAll();B.unmarkAll();for(var y in q){var z=q[y],A=z.type;if(z.checkActive(w))B.mark(y);else if(A==3&&!z.checkApplicable(w)){B.hideItem(y);x[A]--;}x[A]++;}if(!x[1])B.hideGroup(p['panelTitle'+String(1)]);if(!x[2])B.hideGroup(p['panelTitle'+String(2)]);if(!x[3])B.hideGroup(p['panelTitle'+String(3)]);},reset:function(){if(s){delete s._.panel;delete s._.list;s._.committed=0;s._.items={};s._.state=2;}q={};r=[];t();}});n.on('instanceReady',function(){t();});}});function m(n,o){var p=n.type,q=o.type;return p==q?0:p==3?-1:q==3?1:q==1?1:-1;};})();j.add('table',{requires:['dialog'],init:function(m){var n=j.table,o=m.lang.table;m.addCommand('table',new a.dialogCommand('table'));m.addCommand('tableProperties',new a.dialogCommand('tableProperties'));m.ui.addButton('Table',{label:o.toolbar,command:'table'});a.dialog.add('table',this.path+'dialogs/table.js');a.dialog.add('tableProperties',this.path+'dialogs/table.js');if(m.addMenuItems)m.addMenuItems({table:{label:o.menu,command:'tableProperties',group:'table',order:5},tabledelete:{label:o.deleteTable,command:'tableDelete',group:'table',order:1}});m.on('doubleclick',function(p){var q=p.data.element;if(q.is('table'))p.data.dialog='tableProperties';});if(m.contextMenu)m.contextMenu.addListener(function(p,q){if(!p||p.isReadOnly())return null;var r=p.hasAscendant('table',1);if(r)return{tabledelete:2,table:2};return null;});}});(function(){var m=/^(?:td|th)$/;function n(G){var H=G.getRanges(),I=[],J={};function K(S){if(I.length>0)return;if(S.type==1&&m.test(S.getName())&&!S.getCustomData('selected_cell')){h.setMarker(J,S,'selected_cell',true);I.push(S);}};for(var L=0;L<H.length;L++){var M=H[L];if(M.collapsed){var N=M.getCommonAncestor(),O=N.getAscendant('td',true)||N.getAscendant('th',true);if(O)I.push(O);}else{var P=new d.walker(M),Q;P.guard=K;while(Q=P.next()){var R=Q.getAscendant('td')||Q.getAscendant('th');if(R&&!R.getCustomData('selected_cell')){h.setMarker(J,R,'selected_cell',true);I.push(R);}}}}h.clearAllMarkers(J);return I;};function o(G){var H=0,I=G.length-1,J={},K,L,M;while(K=G[H++])h.setMarker(J,K,'delete_cell',true);H=0;while(K=G[H++]){if((L=K.getPrevious())&&!L.getCustomData('delete_cell')||(L=K.getNext())&&!L.getCustomData('delete_cell')){h.clearAllMarkers(J);
+return L;}}h.clearAllMarkers(J);M=G[0].getParent();if(M=M.getPrevious())return M.getLast();M=G[I].getParent();if(M=M.getNext())return M.getChild(0);return null;};function p(G,H){var I=n(G),J=I[0],K=J.getAscendant('table'),L=J.getDocument(),M=I[0].getParent(),N=M.$.rowIndex,O=I[I.length-1],P=O.getParent().$.rowIndex+O.$.rowSpan-1,Q=new h(K.$.rows[P]),R=H?N:P,S=H?M:Q,T=e.buildTableMap(K),U=T[R],V=H?T[R-1]:T[R+1],W=T[0].length,X=L.createElement('tr');for(var Y=0;U[Y]&&Y<W;Y++){var Z;if(U[Y].rowSpan>1&&V&&U[Y]==V[Y]){Z=U[Y];Z.rowSpan+=1;}else{Z=new h(U[Y]).clone();Z.removeAttribute('rowSpan');!c&&Z.appendBogus();X.append(Z);Z=Z.$;}Y+=Z.colSpan-1;}H?X.insertBefore(S):X.insertAfter(S);};function q(G){if(G instanceof d.selection){var H=n(G),I=H[0],J=I.getAscendant('table'),K=e.buildTableMap(J),L=H[0].getParent(),M=L.$.rowIndex,N=H[H.length-1],O=N.getParent().$.rowIndex+N.$.rowSpan-1,P=[];for(var Q=M;Q<=O;Q++){var R=K[Q],S=new h(J.$.rows[Q]);for(var T=0;T<R.length;T++){var U=new h(R[T]),V=U.getParent().$.rowIndex;if(U.$.rowSpan==1)U.remove();else{U.$.rowSpan-=1;if(V==Q){var W=K[Q+1];W[T-1]?U.insertAfter(new h(W[T-1])):new h(J.$.rows[Q+1]).append(U,1);}}T+=U.$.colSpan-1;}P.push(S);}var X=J.$.rows,Y=new h(X[O+1]||(M>0?X[M-1]:null)||J.$.parentNode);for(Q=P.length;Q>=0;Q--)q(P[Q]);return Y;}else if(G instanceof h){J=G.getAscendant('table');if(J.$.rows.length==1)J.remove();else G.remove();}return null;};function r(G,H){var I=G.getParent(),J=I.$.cells,K=0;for(var L=0;L<J.length;L++){var M=J[L];K+=H?1:M.colSpan;if(M==G.$)break;}return K-1;};function s(G,H){var I=H?Infinity:0;for(var J=0;J<G.length;J++){var K=r(G[J],H);if(H?K<I:K>I)I=K;}return I;};function t(G,H){var I=n(G),J=I[0],K=J.getAscendant('table'),L=s(I,1),M=s(I),N=H?L:M,O=e.buildTableMap(K),P=[],Q=[],R=O.length;for(var S=0;S<R;S++){P.push(O[S][N]);var T=H?O[S][N-1]:O[S][N+1];T&&Q.push(T);}for(S=0;S<R;S++){var U;if(P[S].colSpan>1&&Q.length&&Q[S]==P[S]){U=P[S];U.colSpan+=1;}else{U=new h(P[S]).clone();U.removeAttribute('colSpan');!c&&U.appendBogus();U[H?'insertBefore':'insertAfter'].call(U,new h(P[S]));U=U.$;}S+=U.rowSpan-1;}};function u(G){var H=n(G),I=H[0],J=H[H.length-1],K=I.getAscendant('table'),L=e.buildTableMap(K),M,N,O=[];for(var P=0,Q=L.length;P<Q;P++)for(var R=0,S=L[P].length;R<S;R++){if(L[P][R]==I.$)M=R;if(L[P][R]==J.$)N=R;}for(P=M;P<=N;P++)for(R=0;R<L.length;R++){var T=L[R],U=new h(K.$.rows[R]),V=new h(T[P]);if(V.$){if(V.$.colSpan==1)V.remove();else V.$.colSpan-=1;R+=V.$.rowSpan-1;if(!U.$.cells.length)O.push(U);
+}}var W=K.$.rows[0]&&K.$.rows[0].cells,X=new h(W[M]||(M?W[M-1]:K.$.parentNode));if(O.length==Q)K.remove();return X;};function v(G){var H=[],I=G[0]&&G[0].getAscendant('table'),J,K,L,M;for(J=0,K=G.length;J<K;J++)H.push(G[J].$.cellIndex);H.sort();for(J=1,K=H.length;J<K;J++){if(H[J]-H[J-1]>1){L=H[J-1]+1;break;}}if(!L)L=H[0]>0?H[0]-1:H[H.length-1]+1;var N=I.$.rows;for(J=0,K=N.length;J<K;J++){M=N[J].cells[L];if(M)break;}return M?new h(M):I.getPrevious();};function w(G,H){var I=G.getStartElement(),J=I.getAscendant('td',1)||I.getAscendant('th',1);if(!J)return;var K=J.clone();if(!c)K.appendBogus();if(H)K.insertBefore(J);else K.insertAfter(J);};function x(G){if(G instanceof d.selection){var H=n(G),I=H[0]&&H[0].getAscendant('table'),J=o(H);for(var K=H.length-1;K>=0;K--)x(H[K]);if(J)z(J,true);else if(I)I.remove();}else if(G instanceof h){var L=G.getParent();if(L.getChildCount()==1)L.remove();else G.remove();}};function y(G){var H=G.getBogus();H&&H.remove();G.trim();};function z(G,H){var I=new d.range(G.getDocument());if(!I['moveToElementEdit'+(H?'End':'Start')](G)){I.selectNodeContents(G);I.collapse(H?false:true);}I.select(true);};function A(G,H,I){var J=G[H];if(typeof I=='undefined')return J;for(var K=0;J&&K<J.length;K++){if(I.is&&J[K]==I.$)return K;else if(K==I)return new h(J[K]);}return I.is?-1:null;};function B(G,H){var I=[];for(var J=0;J<G.length;J++){var K=G[J];I.push(K[H]);if(K[H].rowSpan>1)J+=K[H].rowSpan-1;}return I;};function C(G,H,I){var J=n(G),K;if((H?J.length!=1:J.length<2)||(K=G.getCommonAncestor())&&K.type==1&&K.is('table'))return false;var L,M=J[0],N=M.getAscendant('table'),O=e.buildTableMap(N),P=O.length,Q=O[0].length,R=M.getParent().$.rowIndex,S=A(O,R,M);if(H){var T;try{var U=parseInt(M.getAttribute('rowspan'),10)||1,V=parseInt(M.getAttribute('colspan'),10)||1;T=O[H=='up'?R-U:H=='down'?R+U:R][H=='left'?S-V:H=='right'?S+V:S];}catch(an){return false;}if(!T||M.$==T)return false;J[H=='up'||H=='left'?'unshift':'push'](new h(T));}var W=M.getDocument(),X=R,Y=0,Z=0,aa=!I&&new d.documentFragment(W),ab=0;for(var ac=0;ac<J.length;ac++){L=J[ac];var ad=L.getParent(),ae=L.getFirst(),af=L.$.colSpan,ag=L.$.rowSpan,ah=ad.$.rowIndex,ai=A(O,ah,L);ab+=af*ag;Z=Math.max(Z,ai-S+af);Y=Math.max(Y,ah-R+ag);if(!I){if(y(L),L.getChildren().count()){if(ah!=X&&ae&&!(ae.isBlockBoundary&&ae.isBlockBoundary({br:1}))){var aj=aa.getLast(d.walker.whitespaces(true));if(aj&&!(aj.is&&aj.is('br')))aa.append('br');}L.moveChildren(aa);}ac?L.remove():L.setHtml('');}X=ah;}if(!I){aa.moveChildren(M);
+if(!c)M.appendBogus();if(Z>=Q)M.removeAttribute('rowSpan');else M.$.rowSpan=Y;if(Y>=P)M.removeAttribute('colSpan');else M.$.colSpan=Z;var ak=new d.nodeList(N.$.rows),al=ak.count();for(ac=al-1;ac>=0;ac--){var am=ak.getItem(ac);if(!am.$.cells.length){am.remove();al++;continue;}}return M;}else return Y*Z==ab;};function D(G,H){var I=n(G);if(I.length>1)return false;else if(H)return true;var J=I[0],K=J.getParent(),L=K.getAscendant('table'),M=e.buildTableMap(L),N=K.$.rowIndex,O=A(M,N,J),P=J.$.rowSpan,Q,R,S,T;if(P>1){R=Math.ceil(P/2);S=Math.floor(P/2);T=N+R;var U=new h(L.$.rows[T]),V=A(M,T),W;Q=J.clone();for(var X=0;X<V.length;X++){W=V[X];if(W.parentNode==U.$&&X>O){Q.insertBefore(new h(W));break;}else W=null;}if(!W)U.append(Q,true);}else{S=R=1;U=K.clone();U.insertAfter(K);U.append(Q=J.clone());var Y=A(M,N);for(var Z=0;Z<Y.length;Z++)Y[Z].rowSpan++;}if(!c)Q.appendBogus();J.$.rowSpan=R;Q.$.rowSpan=S;if(R==1)J.removeAttribute('rowSpan');if(S==1)Q.removeAttribute('rowSpan');return Q;};function E(G,H){var I=n(G);if(I.length>1)return false;else if(H)return true;var J=I[0],K=J.getParent(),L=K.getAscendant('table'),M=e.buildTableMap(L),N=K.$.rowIndex,O=A(M,N,J),P=J.$.colSpan,Q,R,S;if(P>1){R=Math.ceil(P/2);S=Math.floor(P/2);}else{S=R=1;var T=B(M,O);for(var U=0;U<T.length;U++)T[U].colSpan++;}Q=J.clone();Q.insertAfter(J);if(!c)Q.appendBogus();J.$.colSpan=R;Q.$.colSpan=S;if(R==1)J.removeAttribute('colSpan');if(S==1)Q.removeAttribute('colSpan');return Q;};var F={thead:1,tbody:1,tfoot:1,td:1,tr:1,th:1};j.tabletools={requires:['table','dialog','contextmenu'],init:function(G){var H=G.lang.table;G.addCommand('cellProperties',new a.dialogCommand('cellProperties'));a.dialog.add('cellProperties',this.path+'dialogs/tableCell.js');G.addCommand('tableDelete',{exec:function(I){var J=I.getSelection(),K=J&&J.getStartElement(),L=K&&K.getAscendant('table',1);if(!L)return;var M=L.getParent();if(M.getChildCount()==1&&!M.is('body','td','th'))L=M;var N=new d.range(I.document);N.moveToPosition(L,3);L.remove();N.select();}});G.addCommand('rowDelete',{exec:function(I){var J=I.getSelection();z(q(J));}});G.addCommand('rowInsertBefore',{exec:function(I){var J=I.getSelection();p(J,true);}});G.addCommand('rowInsertAfter',{exec:function(I){var J=I.getSelection();p(J);}});G.addCommand('columnDelete',{exec:function(I){var J=I.getSelection(),K=u(J);K&&z(K,true);}});G.addCommand('columnInsertBefore',{exec:function(I){var J=I.getSelection();t(J,true);}});G.addCommand('columnInsertAfter',{exec:function(I){var J=I.getSelection();
+t(J);}});G.addCommand('cellDelete',{exec:function(I){var J=I.getSelection();x(J);}});G.addCommand('cellMerge',{exec:function(I){z(C(I.getSelection()),true);}});G.addCommand('cellMergeRight',{exec:function(I){z(C(I.getSelection(),'right'),true);}});G.addCommand('cellMergeDown',{exec:function(I){z(C(I.getSelection(),'down'),true);}});G.addCommand('cellVerticalSplit',{exec:function(I){z(D(I.getSelection()));}});G.addCommand('cellHorizontalSplit',{exec:function(I){z(E(I.getSelection()));}});G.addCommand('cellInsertBefore',{exec:function(I){var J=I.getSelection();w(J,true);}});G.addCommand('cellInsertAfter',{exec:function(I){var J=I.getSelection();w(J);}});if(G.addMenuItems)G.addMenuItems({tablecell:{label:H.cell.menu,group:'tablecell',order:1,getItems:function(){var I=G.getSelection(),J=n(I);return{tablecell_insertBefore:2,tablecell_insertAfter:2,tablecell_delete:2,tablecell_merge:C(I,null,true)?2:0,tablecell_merge_right:C(I,'right',true)?2:0,tablecell_merge_down:C(I,'down',true)?2:0,tablecell_split_vertical:D(I,true)?2:0,tablecell_split_horizontal:E(I,true)?2:0,tablecell_properties:J.length>0?2:0};}},tablecell_insertBefore:{label:H.cell.insertBefore,group:'tablecell',command:'cellInsertBefore',order:5},tablecell_insertAfter:{label:H.cell.insertAfter,group:'tablecell',command:'cellInsertAfter',order:10},tablecell_delete:{label:H.cell.deleteCell,group:'tablecell',command:'cellDelete',order:15},tablecell_merge:{label:H.cell.merge,group:'tablecell',command:'cellMerge',order:16},tablecell_merge_right:{label:H.cell.mergeRight,group:'tablecell',command:'cellMergeRight',order:17},tablecell_merge_down:{label:H.cell.mergeDown,group:'tablecell',command:'cellMergeDown',order:18},tablecell_split_horizontal:{label:H.cell.splitHorizontal,group:'tablecell',command:'cellHorizontalSplit',order:19},tablecell_split_vertical:{label:H.cell.splitVertical,group:'tablecell',command:'cellVerticalSplit',order:20},tablecell_properties:{label:H.cell.title,group:'tablecellproperties',command:'cellProperties',order:21},tablerow:{label:H.row.menu,group:'tablerow',order:1,getItems:function(){return{tablerow_insertBefore:2,tablerow_insertAfter:2,tablerow_delete:2};}},tablerow_insertBefore:{label:H.row.insertBefore,group:'tablerow',command:'rowInsertBefore',order:5},tablerow_insertAfter:{label:H.row.insertAfter,group:'tablerow',command:'rowInsertAfter',order:10},tablerow_delete:{label:H.row.deleteRow,group:'tablerow',command:'rowDelete',order:15},tablecolumn:{label:H.column.menu,group:'tablecolumn',order:1,getItems:function(){return{tablecolumn_insertBefore:2,tablecolumn_insertAfter:2,tablecolumn_delete:2};
+}},tablecolumn_insertBefore:{label:H.column.insertBefore,group:'tablecolumn',command:'columnInsertBefore',order:5},tablecolumn_insertAfter:{label:H.column.insertAfter,group:'tablecolumn',command:'columnInsertAfter',order:10},tablecolumn_delete:{label:H.column.deleteColumn,group:'tablecolumn',command:'columnDelete',order:15}});if(G.contextMenu)G.contextMenu.addListener(function(I,J){if(!I||I.isReadOnly())return null;while(I){if(I.getName() in F)return{tablecell:2,tablerow:2,tablecolumn:2};I=I.getParent();}return null;});},getSelectedCells:n};j.add('tabletools',j.tabletools);})();e.buildTableMap=function(m){var n=m.$.rows,o=-1,p=[];for(var q=0;q<n.length;q++){o++;!p[o]&&(p[o]=[]);var r=-1;for(var s=0;s<n[q].cells.length;s++){var t=n[q].cells[s];r++;while(p[o][r])r++;var u=isNaN(t.colSpan)?1:t.colSpan,v=isNaN(t.rowSpan)?1:t.rowSpan;for(var w=0;w<v;w++){if(!p[o+w])p[o+w]=[];for(var x=0;x<u;x++)p[o+w][r+x]=n[q].cells[s];}r+=u-1;}}return p;};j.add('specialchar',{requires:['dialog'],availableLangs:{cs:1,cy:1,de:1,el:1,en:1,eo:1,et:1,fa:1,fi:1,fr:1,he:1,hr:1,it:1,nb:1,nl:1,no:1,'pt-br':1,tr:1,ug:1,'zh-cn':1},init:function(m){var n='specialchar',o=this;a.dialog.add(n,this.path+'dialogs/specialchar.js');m.addCommand(n,{exec:function(){var p=m.langCode;p=o.availableLangs[p]?p:'en';a.scriptLoader.load(a.getUrl(o.path+'lang/'+p+'.js'),function(){e.extend(m.lang.specialChar,o.langEntries[p]);m.openDialog(n);});},modes:{wysiwyg:1},canUndo:false});m.ui.addButton('SpecialChar',{label:m.lang.specialChar.toolbar,command:n});}});i.specialChars=['!','"','#','$','%','&',"'",'(',')','*','+','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','€','‘','’','“','”','–','—','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','®','¯','°','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ','Œ','œ','Ŵ','Ŷ','ŵ','ŷ','‚','‛','„','…','™','►','•','→','⇒','⇔','♦','≈'];
+(function(){var m={editorFocus:false,modes:{wysiwyg:1,source:1}},n={exec:function(q){q.container.focusNext(true,q.tabIndex);}},o={exec:function(q){q.container.focusPrevious(true,q.tabIndex);}};function p(q){return{editorFocus:false,canUndo:false,modes:{wysiwyg:1},exec:function(r){if(r.focusManager.hasFocus){var s=r.getSelection(),t=s.getCommonAncestor(),u;if(u=t.getAscendant('td',true)||t.getAscendant('th',true)){var v=new d.range(r.document),w=e.tryThese(function(){var D=u.getParent(),E=D.$.cells[u.$.cellIndex+(q?-1:1)];E.parentNode.parentNode;return E;},function(){var D=u.getParent(),E=D.getAscendant('table'),F=E.$.rows[D.$.rowIndex+(q?-1:1)];return F.cells[q?F.cells.length-1:0];});if(!(w||q)){var x=u.getAscendant('table').$,y=u.getParent().$.cells,z=new h(x.insertRow(-1),r.document);for(var A=0,B=y.length;A<B;A++){var C=z.append(new h(y[A],r.document).clone(false,false));!c&&C.appendBogus();}v.moveToElementEditStart(z);}else if(w){w=new h(w);v.moveToElementEditStart(w);if(!(v.checkStartOfBlock()&&v.checkEndOfBlock()))v.selectNodeContents(w);}else return true;v.select(true);return true;}}return false;}};};j.add('tab',{requires:['keystrokes'],init:function(q){var r=q.config.enableTabKeyTools!==false,s=q.config.tabSpaces||0,t='';while(s--)t+='\xa0';if(t)q.on('key',function(u){if(u.data.keyCode==9){q.insertHtml(t);u.cancel();}});if(r)q.on('key',function(u){if(u.data.keyCode==9&&q.execCommand('selectNextCell')||u.data.keyCode==2228224+9&&q.execCommand('selectPreviousCell'))u.cancel();});if(b.webkit||b.gecko)q.on('key',function(u){var v=u.data.keyCode;if(v==9&&!t){u.cancel();q.execCommand('blur');}if(v==2228224+9){q.execCommand('blurBack');u.cancel();}});q.addCommand('blur',e.extend(n,m));q.addCommand('blurBack',e.extend(o,m));q.addCommand('selectNextCell',p());q.addCommand('selectPreviousCell',p(true));}});})();h.prototype.focusNext=function(m,n){var w=this;var o=w.$,p=n===undefined?w.getTabIndex():n,q,r,s,t,u,v;if(p<=0){u=w.getNextSourceNode(m,1);while(u){if(u.isVisible()&&u.getTabIndex()===0){s=u;break;}u=u.getNextSourceNode(false,1);}}else{u=w.getDocument().getBody().getFirst();while(u=u.getNextSourceNode(false,1)){if(!q)if(!r&&u.equals(w)){r=true;if(m){if(!(u=u.getNextSourceNode(true,1)))break;q=1;}}else if(r&&!w.contains(u))q=1;if(!u.isVisible()||(v=u.getTabIndex())<0)continue;if(q&&v==p){s=u;break;}if(v>p&&(!s||!t||v<t)){s=u;t=v;}else if(!s&&v===0){s=u;t=v;}}}if(s)s.focus();};h.prototype.focusPrevious=function(m,n){var w=this;var o=w.$,p=n===undefined?w.getTabIndex():n,q,r,s,t=0,u,v=w.getDocument().getBody().getLast();
+while(v=v.getPreviousSourceNode(false,1)){if(!q)if(!r&&v.equals(w)){r=true;if(m){if(!(v=v.getPreviousSourceNode(true,1)))break;q=1;}}else if(r&&!w.contains(v))q=1;if(!v.isVisible()||(u=v.getTabIndex())<0)continue;if(p<=0){if(q&&u===0){s=v;break;}if(u>t){s=v;t=u;}}else{if(q&&u==p){s=v;break;}if(u<p&&(!s||u>t)){s=v;t=u;}}}if(s)s.focus();};(function(){j.add('templates',{requires:['dialog'],init:function(o){a.dialog.add('templates',a.getUrl(this.path+'dialogs/templates.js'));o.addCommand('templates',new a.dialogCommand('templates'));o.ui.addButton('Templates',{label:o.lang.templates.button,command:'templates'});}});var m={},n={};a.addTemplates=function(o,p){m[o]=p;};a.getTemplates=function(o){return m[o];};a.loadTemplates=function(o,p){var q=[];for(var r=0,s=o.length;r<s;r++){if(!n[o[r]]){q.push(o[r]);n[o[r]]=1;}}if(q.length)a.scriptLoader.load(q,p);else setTimeout(p,0);};})();i.templates_files=[a.getUrl('plugins/templates/templates/default.js')];i.templates_replaceContent=true;(function(){var m=function(){this.toolbars=[];this.focusCommandExecuted=false;};m.prototype.focus=function(){for(var o=0,p;p=this.toolbars[o++];)for(var q=0,r;r=p.items[q++];){if(r.focus){r.focus();return;}}};var n={toolbarFocus:{modes:{wysiwyg:1,source:1},readOnly:1,exec:function(o){if(o.toolbox){o.toolbox.focusCommandExecuted=true;if(c||b.air)setTimeout(function(){o.toolbox.focus();},100);else o.toolbox.focus();}}}};j.add('toolbar',{requires:['button'],init:function(o){var p,q=function(r,s){var t,u,v=o.lang.dir=='rtl',w=o.config.toolbarGroupCycling;w=w===undefined||w;switch(s){case 9:case 2228224+9:while(!u||!u.items.length){u=s==9?(u?u.next:r.toolbar.next)||o.toolbox.toolbars[0]:(u?u.previous:r.toolbar.previous)||o.toolbox.toolbars[o.toolbox.toolbars.length-1];if(u.items.length){r=u.items[p?u.items.length-1:0];while(r&&!r.focus){r=p?r.previous:r.next;if(!r)u=0;}}}if(r)r.focus();return false;case v?37:39:case 40:t=r;do{t=t.next;if(!t&&w)t=r.toolbar.items[0];}while(t&&!t.focus);if(t)t.focus();else q(r,9);return false;case v?39:37:case 38:t=r;do{t=t.previous;if(!t&&w)t=r.toolbar.items[r.toolbar.items.length-1];}while(t&&!t.focus);if(t)t.focus();else{p=1;q(r,2228224+9);p=0;}return false;case 27:o.focus();return false;case 13:case 32:r.execute();return false;}return true;};o.on('themeSpace',function(r){if(r.data.space==o.config.toolbarLocation){o.toolbox=new m();var s=e.getNextId(),t=['<div class="cke_toolbox" role="group" aria-labelledby="',s,'" onmousedown="return false;"'],u=o.config.toolbarStartupExpanded!==false,v;
+t.push(u?'>':' style="display:none">');t.push('<span id="',s,'" class="cke_voice_label">',o.lang.toolbars,'</span>');var w=o.toolbox.toolbars,x=o.config.toolbar instanceof Array?o.config.toolbar:o.config['toolbar_'+o.config.toolbar];for(var y=0;y<x.length;y++){var z,A=0,B,C=x[y],D;if(!C)continue;if(v){t.push('</div>');v=0;}if(C==='/'){t.push('<div class="cke_break"></div>');continue;}D=C.items||C;for(var E=0;E<D.length;E++){var F,G=D[E],H;F=o.ui.create(G);if(F){H=F.canGroup!==false;if(!A){z=e.getNextId();A={id:z,items:[]};B=C.name&&(o.lang.toolbarGroups[C.name]||C.name);t.push('<span id="',z,'" class="cke_toolbar"',B?' aria-labelledby="'+z+'_label"':'',' role="toolbar">');B&&t.push('<span id="',z,'_label" class="cke_voice_label">',B,'</span>');t.push('<span class="cke_toolbar_start"></span>');var I=w.push(A)-1;if(I>0){A.previous=w[I-1];A.previous.next=A;}}if(H){if(!v){t.push('<span class="cke_toolgroup" role="presentation">');v=1;}}else if(v){t.push('</span>');v=0;}var J=F.render(o,t);I=A.items.push(J)-1;if(I>0){J.previous=A.items[I-1];J.previous.next=J;}J.toolbar=A;J.onkey=q;J.onfocus=function(){if(!o.toolbox.focusCommandExecuted)o.focus();};}}if(v){t.push('</span>');v=0;}if(A)t.push('<span class="cke_toolbar_end"></span></span>');}t.push('</div>');if(o.config.toolbarCanCollapse){var K=e.addFunction(function(){o.execCommand('toolbarCollapse');});o.on('destroy',function(){e.removeFunction(K);});var L=e.getNextId();o.addCommand('toolbarCollapse',{readOnly:1,exec:function(M){var N=a.document.getById(L),O=N.getPrevious(),P=M.getThemeSpace('contents'),Q=O.getParent(),R=parseInt(P.$.style.height,10),S=Q.$.offsetHeight,T=!O.isVisible();if(!T){O.hide();N.addClass('cke_toolbox_collapser_min');N.setAttribute('title',M.lang.toolbarExpand);}else{O.show();N.removeClass('cke_toolbox_collapser_min');N.setAttribute('title',M.lang.toolbarCollapse);}N.getFirst().setText(T?'▲':'◀');var U=Q.$.offsetHeight-S;P.setStyle('height',R-U+'px');M.fire('resize');},modes:{wysiwyg:1,source:1}});t.push('<a title="'+(u?o.lang.toolbarCollapse:o.lang.toolbarExpand)+'" id="'+L+'" tabIndex="-1" class="cke_toolbox_collapser');if(!u)t.push(' cke_toolbox_collapser_min');t.push('" onclick="CKEDITOR.tools.callFunction('+K+')">','<span>▲</span>','</a>');}r.data.html+=t.join('');}});o.on('destroy',function(){var r,s=0,t,u,v;r=this.toolbox.toolbars;for(;s<r.length;s++){u=r[s].items;for(t=0;t<u.length;t++){v=u[t];if(v.clickFn)e.removeFunction(v.clickFn);if(v.keyDownFn)e.removeFunction(v.keyDownFn);
+}}});o.addCommand('toolbarFocus',n.toolbarFocus);o.ui.add('-',a.UI_SEPARATOR,{});o.ui.addHandler(a.UI_SEPARATOR,{create:function(){return{render:function(r,s){s.push('<span class="cke_separator" role="separator"></span>');return{};}};}});}});})();a.UI_SEPARATOR='separator';i.toolbarLocation='top';i.toolbar_Basic=[['Bold','Italic','-','NumberedList','BulletedList','-','Link','Unlink','-','About']];i.toolbar_Full=[{name:'document',items:['Source','-','Save','NewPage','DocProps','Preview','Print','-','Templates']},{name:'clipboard',items:['Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo']},{name:'editing',items:['Find','Replace','-','SelectAll','-','SpellChecker','Scayt']},{name:'forms',items:['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField']},'/',{name:'basicstyles',items:['Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat']},{name:'paragraph',items:['NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','CreateDiv','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl']},{name:'links',items:['Link','Unlink','Anchor']},{name:'insert',items:['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe']},'/',{name:'styles',items:['Styles','Format','Font','FontSize']},{name:'colors',items:['TextColor','BGColor']},{name:'tools',items:['Maximize','ShowBlocks','-','About']}];i.toolbar='Full';i.toolbarCanCollapse=true;(function(){j.add('undo',{requires:['selection','wysiwygarea'],init:function(s){var t=new o(s),u=s.addCommand('undo',{exec:function(){if(t.undo()){s.selectionChange();this.fire('afterUndo');}},state:0,canUndo:false}),v=s.addCommand('redo',{exec:function(){if(t.redo()){s.selectionChange();this.fire('afterRedo');}},state:0,canUndo:false});t.onChange=function(){u.setState(t.undoable()?2:0);v.setState(t.redoable()?2:0);};function w(x){if(t.enabled&&x.data.command.canUndo!==false)t.save();};s.on('beforeCommandExec',w);s.on('afterCommandExec',w);s.on('saveSnapshot',function(x){t.save(x.data&&x.data.contentOnly);});s.on('contentDom',function(){s.document.on('keydown',function(x){if(!x.data.$.ctrlKey&&!x.data.$.metaKey)t.type(x);});});s.on('beforeModeUnload',function(){s.mode=='wysiwyg'&&t.save(true);});s.on('mode',function(){t.enabled=s.readOnly?false:s.mode=='wysiwyg';t.onChange();});s.ui.addButton('Undo',{label:s.lang.undo,command:'undo'});s.ui.addButton('Redo',{label:s.lang.redo,command:'redo'});
+s.resetUndo=function(){t.reset();s.fire('saveSnapshot');};s.on('updateSnapshot',function(){if(t.currentImage)t.update();});}});j.undo={};var m=j.undo.Image=function(s){this.editor=s;s.fire('beforeUndoImage');var t=s.getSnapshot(),u=t&&s.getSelection();c&&t&&(t=t.replace(/\s+data-cke-expando=".*?"/g,''));this.contents=t;this.bookmarks=u&&u.createBookmarks2(true);s.fire('afterUndoImage');},n=/\b(?:href|src|name)="[^"]*?"/gi;m.prototype={equals:function(s,t){var u=this.contents,v=s.contents;if(c&&(b.ie7Compat||b.ie6Compat)){u=u.replace(n,'');v=v.replace(n,'');}if(u!=v)return false;if(t)return true;var w=this.bookmarks,x=s.bookmarks;if(w||x){if(!w||!x||w.length!=x.length)return false;for(var y=0;y<w.length;y++){var z=w[y],A=x[y];if(z.startOffset!=A.startOffset||z.endOffset!=A.endOffset||!e.arrayCompare(z.start,A.start)||!e.arrayCompare(z.end,A.end))return false;}}return true;}};function o(s){this.editor=s;this.reset();};var p={8:1,46:1},q={16:1,17:1,18:1},r={37:1,38:1,39:1,40:1};o.prototype={type:function(s){var t=s&&s.data.getKey(),u=t in q,v=t in p,w=this.lastKeystroke in p,x=v&&t==this.lastKeystroke,y=t in r,z=this.lastKeystroke in r,A=!v&&!y,B=v&&!x,C=!(u||this.typing)||A&&(w||z);if(C||B){var D=new m(this.editor),E=this.snapshots.length;e.setTimeout(function(){var G=this;var F=G.editor.getSnapshot();if(c)F=F.replace(/\s+data-cke-expando=".*?"/g,'');if(D.contents!=F&&E==G.snapshots.length){G.typing=true;if(!G.save(false,D,false))G.snapshots.splice(G.index+1,G.snapshots.length-G.index-1);G.hasUndo=true;G.hasRedo=false;G.typesCount=1;G.modifiersCount=1;G.onChange();}},0,this);}this.lastKeystroke=t;if(v){this.typesCount=0;this.modifiersCount++;if(this.modifiersCount>25){this.save(false,null,false);this.modifiersCount=1;}}else if(!y){this.modifiersCount=0;this.typesCount++;if(this.typesCount>25){this.save(false,null,false);this.typesCount=1;}}},reset:function(){var s=this;s.lastKeystroke=0;s.snapshots=[];s.index=-1;s.limit=s.editor.config.undoStackSize||20;s.currentImage=null;s.hasUndo=false;s.hasRedo=false;s.resetType();},resetType:function(){var s=this;s.typing=false;delete s.lastKeystroke;s.typesCount=0;s.modifiersCount=0;},fireChange:function(){var s=this;s.hasUndo=!!s.getNextImage(true);s.hasRedo=!!s.getNextImage(false);s.resetType();s.onChange();},save:function(s,t,u){var w=this;var v=w.snapshots;if(!t)t=new m(w.editor);if(t.contents===false)return false;if(w.currentImage&&t.equals(w.currentImage,s))return false;v.splice(w.index+1,v.length-w.index-1);if(v.length==w.limit)v.shift();
+w.index=v.push(t)-1;w.currentImage=t;if(u!==false)w.fireChange();return true;},restoreImage:function(s){var w=this;var t=w.editor,u;if(s.bookmarks){t.focus();u=t.getSelection();}w.editor.loadSnapshot(s.contents);if(s.bookmarks)u.selectBookmarks(s.bookmarks);else if(c){var v=w.editor.document.getBody().$.createTextRange();v.collapse(true);v.select();}w.index=s.index;w.update();w.fireChange();},getNextImage:function(s){var x=this;var t=x.snapshots,u=x.currentImage,v,w;if(u)if(s)for(w=x.index-1;w>=0;w--){v=t[w];if(!u.equals(v,true)){v.index=w;return v;}}else for(w=x.index+1;w<t.length;w++){v=t[w];if(!u.equals(v,true)){v.index=w;return v;}}return null;},redoable:function(){return this.enabled&&this.hasRedo;},undoable:function(){return this.enabled&&this.hasUndo;},undo:function(){var t=this;if(t.undoable()){t.save(true);var s=t.getNextImage(true);if(s)return t.restoreImage(s),true;}return false;},redo:function(){var t=this;if(t.redoable()){t.save(true);if(t.redoable()){var s=t.getNextImage(false);if(s)return t.restoreImage(s),true;}}return false;},update:function(){var s=this;s.snapshots.splice(s.index,1,s.currentImage=new m(s.editor));}};})();(function(){var m=/(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,n=d.walker.whitespaces(true),o=d.walker.bogus(true),p=function(E){return n(E)&&o(E);};function q(E){return E.isBlockBoundary()&&f.$empty[E.getName()];};function r(E){return function(F){if(this.mode=='wysiwyg'){this.focus();var G=this.getSelection(),H=G.isLocked;H&&G.unlock();this.fire('saveSnapshot');E.call(this,F.data);H&&this.getSelection().lock();e.setTimeout(function(){this.fire('saveSnapshot');},0,this);}};};function s(E){var N=this;if(N.dataProcessor)E=N.dataProcessor.toHtml(E);if(!E)return;var F=N.getSelection(),G=F.getRanges()[0];if(G.checkReadOnly())return;if(b.opera){var H=new d.elementPath(G.startContainer);if(H.block){var I=a.htmlParser.fragment.fromHtml(E,false).children;for(var J=0,K=I.length;J<K;J++){if(I[J]._.isBlockLike){G.splitBlock(N.enterMode==3?'div':'p');G.insertNode(G.document.createText(''));G.select();break;}}}}if(c){var L=F.getNative();if(L.type=='Control')L.clear();else if(F.getType()==2){G=F.getRanges()[0];var M=G&&G.endContainer;if(M&&M.type==1&&M.getAttribute('contenteditable')=='false'&&G.checkBoundaryOfElement(M,2)){G.setEndAfter(G.endContainer);G.deleteContents();}}L.createRange().pasteHTML(E);}else N.document.$.execCommand('inserthtml',false,E);
+if(b.webkit){F=N.getSelection();F.scrollIntoView();}};function t(E){var F=this.getSelection(),G=F.getStartElement().hasAscendant('pre',true)?2:this.config.enterMode,H=G==2,I=e.htmlEncode(E.replace(/\r\n|\r/g,'\n'));I=I.replace(/^[ \t]+|[ \t]+$/g,function(O,P,Q){if(O.length==1)return ' ';else if(!P)return e.repeat(' ',O.length-1)+' ';else return ' '+e.repeat(' ',O.length-1);});I=I.replace(/[ \t]{2,}/g,function(O){return e.repeat(' ',O.length-1)+' ';});var J=G==1?'p':'div';if(!H)I=I.replace(/(\n{2})([\s\S]*?)(?:$|\1)/g,function(O,P,Q){return '<'+J+'>'+Q+'</'+J+'>';});I=I.replace(/\n/g,'<br>');if(!(H||c))I=I.replace(new RegExp('<br>(?=</'+J+'>)'),function(O){return e.repeat(O,2);});if(b.gecko||b.webkit){var K=new d.elementPath(F.getStartElement()),L=[];for(var M=0;M<K.elements.length;M++){var N=K.elements[M].getName();if(N in f.$inline)L.unshift(K.elements[M].getOuterHtml().match(/^<.*?>/));else if(N in f.$block)break;}I=L.join('')+I;}s.call(this,I);};function u(E){var F=this.getSelection(),G=F.getRanges(),H=E.getName(),I=f.$block[H],J=F.isLocked;if(J)F.unlock();var K,L,M,N;for(var O=G.length-1;O>=0;O--){K=G[O];if(!K.checkReadOnly()){K.deleteContents(1);L=!O&&E||E.clone(1);var P,Q;if(I)while((P=K.getCommonAncestor(0,1))&&(Q=f[P.getName()])&&!(Q&&Q[H])){if(P.getName() in f.span)K.splitElement(P);else if(K.checkStartOfBlock()&&K.checkEndOfBlock()){K.setStartBefore(P);K.collapse(true);P.remove();}else K.splitBlock();}K.insertNode(L);if(!M)M=L;}}if(M){K.moveToPosition(M,4);if(I){var R=M.getNext(p),S=R&&R.type==1&&R.getName();if(S&&f.$block[S]){if(f[S]['#'])K.moveToElementEditStart(R);else K.moveToElementEditEnd(M);}else if(!R){R=K.fixBlock(true,this.config.enterMode==3?'div':'p');K.moveToElementEditStart(R);}}}F.selectRanges([K]);if(J)this.getSelection().lock();};function v(E){if(!E.checkDirty())setTimeout(function(){E.resetDirty();},0);};var w=d.walker.whitespaces(true),x=d.walker.bookmark(false,true);function y(E){return w(E)&&x(E);};function z(E){return E.type==3&&e.trim(E.getText()).match(/^(?: |\xa0)$/);};function A(E){if(E.isLocked){E.unlock();setTimeout(function(){E.lock();},0);}};function B(E){return E.getOuterHtml().match(m);};w=d.walker.whitespaces(true);function C(E){var F=E.window,G=E.document,H=E.document.getBody(),I=H.getFirst(),J=H.getChildren().count();if(!J||J==1&&I.type==1&&I.hasAttribute('_moz_editor_bogus_node')){v(E);var K=E.element.getDocument(),L=K.getDocumentElement(),M=L.$.scrollTop,N=L.$.scrollLeft,O=G.$.createEvent('KeyEvents');
+O.initKeyEvent('keypress',true,true,F.$,false,false,false,false,0,32);G.$.dispatchEvent(O);if(M!=L.$.scrollTop||N!=L.$.scrollLeft)K.getWindow().$.scrollTo(N,M);J&&H.getFirst().remove();G.getBody().appendBogus();var P=new d.range(G);P.setStartAt(H,1);P.select();}};function D(E){var F=E.editor,G=E.data.path,H=G.blockLimit,I=E.data.selection,J=I.getRanges()[0],K=F.document.getBody(),L=F.config.enterMode;if(b.gecko){C(F);var M=G.block||G.blockLimit,N=M&&M.getLast(y);if(M&&M.isBlockBoundary()&&!(N&&N.type==1&&N.isBlockBoundary())&&!M.is('pre')&&!M.getBogus())M.appendBogus();}if(F.config.autoParagraph!==false&&L!=2&&J.collapsed&&H.getName()=='body'&&!G.block){var O=J.fixBlock(true,F.config.enterMode==3?'div':'p');if(c){var P=O.getFirst(y);P&&z(P)&&P.remove();}if(B(O)){var Q=O.getNext(w);if(Q&&Q.type==1&&!q(Q)){J.moveToElementEditStart(Q);O.remove();}else{Q=O.getPrevious(w);if(Q&&Q.type==1&&!q(Q)){J.moveToElementEditEnd(Q);O.remove();}}}J.select();E.cancel();}var R=new d.range(F.document);R.moveToElementEditEnd(F.document.getBody());var S=new d.elementPath(R.startContainer);if(!S.blockLimit.is('body')){var T;if(L!=2)T=K.append(F.document.createElement(L==1?'p':'div'));else T=K;if(!c)T.appendBogus();}};j.add('wysiwygarea',{requires:['editingblock'],init:function(E){var F=E.config.enterMode!=2&&E.config.autoParagraph!==false?E.config.enterMode==3?'div':'p':false,G=E.lang.editorTitle.replace('%1',E.name),H=E.lang.editorHelp;if(c)G+=', '+H;var I=a.document.getWindow(),J;E.on('editingBlockReady',function(){var M,N,O,P,Q,R,S,T=b.isCustomDomain(),U=function(X){if(N)N.remove();var Y='document.open();'+(T?'document.domain="'+document.domain+'";':'')+'document.close();';Y=b.air?'javascript:void(0)':c?'javascript:void(function(){'+encodeURIComponent(Y)+'}())':'';var Z=e.getNextId();N=h.createFromHtml('<iframe style="width:100%;height:100%" frameBorder="0" aria-describedby="'+Z+'"'+' title="'+G+'"'+' src="'+Y+'"'+' tabIndex="'+(b.webkit?-1:E.tabIndex)+'"'+' allowTransparency="true"'+'></iframe>');if(document.location.protocol=='chrome:')a.event.useCapture=true;N.on('load',function(aa){Q=1;aa.removeListener();var ab=N.getFrameDocument();ab.write(X);b.air&&W(ab.getWindow().$);});if(document.location.protocol=='chrome:')a.event.useCapture=false;M.append(h.createFromHtml('<span id="'+Z+'" class="cke_voice_label">'+H+'</span>'));M.append(N);if(b.webkit){S=function(){M.setStyle('width','100%');N.hide();N.setSize('width',M.getSize('width'));M.removeStyle('width');N.show();};I.on('resize',S);
+}};J=e.addFunction(W);var V='<script id="cke_actscrpt" type="text/javascript" data-cke-temp="1">'+(T?'document.domain="'+document.domain+'";':'')+'window.parent.CKEDITOR.tools.callFunction( '+J+', window );'+'</script>';function W(X){if(!Q)return;Q=0;E.fire('ariaWidget',N);var Y=X.document,Z=Y.body,aa=Y.getElementById('cke_actscrpt');aa&&aa.parentNode.removeChild(aa);Z.spellcheck=!E.config.disableNativeSpellChecker;var ab=!E.readOnly;if(c){Z.hideFocus=true;Z.disabled=true;Z.contentEditable=ab;Z.removeAttribute('disabled');}else setTimeout(function(){if(b.gecko&&b.version>=10900||b.opera)Y.$.body.contentEditable=ab;else if(b.webkit)Y.$.body.parentNode.contentEditable=ab;else Y.$.designMode=ab?'off':'on';},0);ab&&b.gecko&&e.setTimeout(C,0,null,E);X=E.window=new d.window(X);Y=E.document=new g(Y);ab&&Y.on('dblclick',function(ag){var ah=ag.data.getTarget(),ai={element:ah,dialog:''};E.fire('doubleclick',ai);ai.dialog&&E.openDialog(ai.dialog);});c&&Y.on('click',function(ag){var ah=ag.data.getTarget();if(ah.is('input')){var ai=ah.getAttribute('type');if(ai=='submit'||ai=='reset')ag.data.preventDefault();}});if(!(c||b.opera))Y.on('mousedown',function(ag){var ah=ag.data.getTarget();if(ah.is('img','hr','input','textarea','select'))E.getSelection().selectElement(ah);});if(b.gecko)Y.on('mouseup',function(ag){if(ag.data.$.button==2){var ah=ag.data.getTarget();if(!ah.getOuterHtml().replace(m,'')){var ai=new d.range(Y);ai.moveToElementEditStart(ah);ai.select(true);}}});Y.on('click',function(ag){ag=ag.data;if(ag.getTarget().is('a')&&ag.$.button!=2)ag.preventDefault();});if(b.webkit){Y.on('mousedown',function(){ad=1;});Y.on('click',function(ag){if(ag.data.getTarget().is('input','select'))ag.data.preventDefault();});Y.on('mouseup',function(ag){if(ag.data.getTarget().is('input','textarea'))ag.data.preventDefault();});}var ac=c?N:X;ac.on('blur',function(){E.focusManager.blur();});var ad;ac.on('focus',function(){var ag=E.document;if(b.gecko||b.opera)ag.getBody().focus();else if(b.webkit)if(!ad){E.document.getDocumentElement().focus();ad=1;}E.focusManager.focus();});var ae=E.keystrokeHandler;ae.blockedKeystrokes[8]=!ab;ae.attach(Y);Y.getDocumentElement().addClass(Y.$.compatMode);ab&&Y.on('keydown',function(ag){var ah=ag.data.getKeystroke();if(ah in {8:1,46:1}){var ai=E.getSelection(),aj=ai.getSelectedElement(),ak=ai.getRanges()[0],al=new d.elementPath(ak.startContainer),am,an,ao,ap=ah==8;if(aj){E.fire('saveSnapshot');ak.moveToPosition(aj,3);aj.remove();ak.select();E.fire('saveSnapshot');
+ag.data.preventDefault();}else if((am=al.block)&&ak[ap?'checkStartOfBlock':'checkEndOfBlock']()&&(ao=am[ap?'getPrevious':'getNext'](n))&&ao.is('table')){E.fire('saveSnapshot');if(ak[ap?'checkEndOfBlock':'checkStartOfBlock']())am.remove();ak['moveToElementEdit'+(ap?'End':'Start')](ao);ak.select();E.fire('saveSnapshot');ag.data.preventDefault();}else if(al.blockLimit.is('td')&&(an=al.blockLimit.getAscendant('table'))&&ak.checkBoundaryOfElement(an,ap?1:2)&&(ao=an[ap?'getPrevious':'getNext'](n))){E.fire('saveSnapshot');ak['moveToElementEdit'+(ap?'End':'Start')](ao);if(ak.checkStartOfBlock()&&ak.checkEndOfBlock())ao.remove();else ak.select();E.fire('saveSnapshot');ag.data.preventDefault();}}if(ah==33||ah==34)if(b.gecko){var aq=Y.getBody();if(X.$.innerHeight>aq.$.offsetHeight){ak=new d.range(Y);ak[ah==33?'moveToElementEditStart':'moveToElementEditEnd'](aq);ak.select();ag.data.preventDefault();}}});if(c&&Y.$.compatMode=='CSS1Compat'){var af={33:1,34:1};Y.on('keydown',function(ag){if(ag.data.getKeystroke() in af)setTimeout(function(){E.getSelection().scrollIntoView();},0);});}if(c&&E.config.enterMode!=1)Y.on('selectionchange',function(){var ag=Y.getBody(),ah=E.getSelection(),ai=ah&&ah.getRanges()[0];if(ai&&ag.getHtml().match(/^<p> <\/p>$/i)&&ai.startContainer.equals(ag))setTimeout(function(){ai=E.getSelection().getRanges()[0];if(!ai.startContainer.equals('body')){ag.getFirst().remove(1);ai.moveToElementEditEnd(ag);ai.select(1);}},0);});if(E.contextMenu)E.contextMenu.addTarget(Y,E.config.browserContextMenuOnCtrl!==false);setTimeout(function(){E.fire('contentDom');if(R){E.mode='wysiwyg';E.fire('mode',{previousMode:E._.previousMode});R=false;}O=false;if(P){E.focus();P=false;}setTimeout(function(){E.fire('dataReady');},0);try{E.document.$.execCommand('2D-position',false,true);}catch(ag){}try{E.document.$.execCommand('enableInlineTableEditing',false,!E.config.disableNativeTableHandles);}catch(ah){}if(E.config.disableObjectResizing)try{E.document.$.execCommand('enableObjectResizing',false,false);}catch(ai){E.document.getBody().on(c?'resizestart':'resize',function(aj){aj.data.preventDefault();});}if(c)setTimeout(function(){if(E.document){var aj=E.document.$.body;aj.runtimeStyle.marginBottom='0px';aj.runtimeStyle.marginBottom='';}},1000);},0);};E.addMode('wysiwyg',{load:function(X,Y,Z){M=X;if(c&&b.quirks)X.setStyle('position','relative');E.mayBeDirty=true;R=true;if(Z)this.loadSnapshotData(Y);else this.loadData(Y);},loadData:function(X){O=true;E._.dataStore={id:1};var Y=E.config,Z=Y.fullPage,aa=Y.docType,ab='<style type="text/css" data-cke-temp="1">'+E._.styles.join('\n')+'</style>';
+!Z&&(ab=e.buildStyleHtml(E.config.contentsCss)+ab);var ac=Y.baseHref?'<base href="'+Y.baseHref+'" data-cke-temp="1" />':'';if(Z)X=X.replace(/<!DOCTYPE[^>]*>/i,function(ad){E.docType=aa=ad;return '';}).replace(/<\?xml\s[^\?]*\?>/i,function(ad){E.xmlDeclaration=ad;return '';});if(E.dataProcessor)X=E.dataProcessor.toHtml(X,F);if(Z){if(!/<body[\s|>]/.test(X))X='<body>'+X;if(!/<html[\s|>]/.test(X))X='<html>'+X+'</html>';if(!/<head[\s|>]/.test(X))X=X.replace(/<html[^>]*>/,'$&<head><title></title></head>');else if(!/<title[\s|>]/.test(X))X=X.replace(/<head[^>]*>/,'$&<title></title>');ac&&(X=X.replace(/<head>/,'$&'+ac));X=X.replace(/<\/head\s*>/,ab+'$&');X=aa+X;}else X=Y.docType+'<html dir="'+Y.contentsLangDirection+'"'+' lang="'+(Y.contentsLanguage||E.langCode)+'">'+'<head>'+'<title>'+G+'</title>'+ac+ab+'</head>'+'<body'+(Y.bodyId?' id="'+Y.bodyId+'"':'')+(Y.bodyClass?' class="'+Y.bodyClass+'"':'')+'>'+X+'</html>';if(b.gecko)X=X.replace(/<br \/>(?=\s*<\/(:?html|body)>)/,'$&<br type="_moz" />');X+=V;this.onDispose();U(X);},getData:function(){var X=E.config,Y=X.fullPage,Z=Y&&E.docType,aa=Y&&E.xmlDeclaration,ab=N.getFrameDocument(),ac=Y?ab.getDocumentElement().getOuterHtml():ab.getBody().getHtml();if(b.gecko)ac=ac.replace(/<br>(?=\s*(:?$|<\/body>))/,'');if(E.dataProcessor)ac=E.dataProcessor.toDataFormat(ac,F);if(X.ignoreEmptyParagraph)ac=ac.replace(m,function(ad,ae){return ae;});if(aa)ac=aa+'\n'+ac;if(Z)ac=Z+'\n'+ac;return ac;},getSnapshotData:function(){return N.getFrameDocument().getBody().getHtml();},loadSnapshotData:function(X){N.getFrameDocument().getBody().setHtml(X);},onDispose:function(){if(!E.document)return;E.document.getDocumentElement().clearCustomData();E.document.getBody().clearCustomData();E.window.clearCustomData();E.document.clearCustomData();N.clearCustomData();N.remove();},unload:function(X){this.onDispose();if(S)I.removeListener('resize',S);E.window=E.document=N=M=P=null;E.fire('contentDomUnload');},focus:function(){var X=E.window;if(O)P=true;else if(X){var Y=E.getSelection(),Z=Y&&Y.getNative();if(Z&&Z.type=='Control')return;b.air?setTimeout(function(){X.focus();},0):X.focus();E.selectionChange();}}});E.on('insertHtml',r(s),null,null,20);E.on('insertElement',r(u),null,null,20);E.on('insertText',r(t),null,null,20);E.on('selectionChange',function(X){if(E.readOnly)return;var Y=E.getSelection();if(Y&&!Y.isLocked){var Z=E.checkDirty();E.fire('saveSnapshot',{contentOnly:1});D.call(this,X);E.fire('updateSnapshot');!Z&&E.resetDirty();}},null,null,1);});E.on('contentDom',function(){var M=E.document.getElementsByTag('title').getItem(0);
+M.data('cke-title',E.document.$.title);c&&(E.document.$.title=G);});E.on('readOnly',function(){if(E.mode=='wysiwyg'){var M=E.getMode();M.loadData(M.getData());}});if(a.document.$.documentMode>=8){E.addCss('html.CSS1Compat [contenteditable=false]{ min-height:0 !important;}');var K=[];for(var L in f.$removeEmpty)K.push('html.CSS1Compat '+L+'[contenteditable=false]');E.addCss(K.join(',')+'{ display:inline-block;}');}else if(b.gecko){E.addCss('html { height: 100% !important; }');E.addCss('img:-moz-broken { -moz-force-broken-image-icon : 1;\tmin-width : 24px; min-height : 24px; }');}else if(c&&b.version<8&&E.config.contentsLangDirection=='ltr')E.addCss('body{margin-right:0;}');E.addCss('html {\t_overflow-y: scroll; cursor: text;\t*cursor:auto;}');E.addCss('img, input, textarea { cursor: default;}');E.on('insertElement',function(M){var N=M.data;if(N.type==1&&(N.is('input')||N.is('textarea'))){var O=N.getAttribute('contenteditable')=='false';if(!O){N.data('cke-editable',N.hasAttribute('contenteditable')?'true':'1');N.setAttribute('contenteditable',false);}}});}});if(b.gecko)(function(){var E=document.body;if(!E)window.addEventListener('load',arguments.callee,false);else{var F=E.getAttribute('onpageshow');E.setAttribute('onpageshow',(F?F+';':'')+'event.persisted && (function(){'+'var allInstances = CKEDITOR.instances, editor, doc;'+'for ( var i in allInstances )'+'{'+'\teditor = allInstances[ i ];'+'\tdoc = editor.document;'+'\tif ( doc )'+'\t{'+'\t\tdoc.$.designMode = "off";'+'\t\tdoc.$.designMode = "on";'+'\t}'+'}'+'})();');}})();})();i.disableObjectResizing=false;i.disableNativeTableHandles=true;i.disableNativeSpellChecker=true;i.ignoreEmptyParagraph=true;j.add('wsc',{requires:['dialog'],init:function(m){var n='checkspell',o=m.addCommand(n,new a.dialogCommand(n));o.modes={wysiwyg:!b.opera&&!b.air&&document.domain==window.location.hostname};m.ui.addButton('SpellChecker',{label:m.lang.spellCheck.toolbar,command:n});a.dialog.add(n,this.path+'dialogs/wsc.js');}});i.wsc_customerId=i.wsc_customerId||'1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk';i.wsc_customLoaderScript=i.wsc_customLoaderScript||null;a.DIALOG_RESIZE_NONE=0;a.DIALOG_RESIZE_WIDTH=1;a.DIALOG_RESIZE_HEIGHT=2;a.DIALOG_RESIZE_BOTH=3;(function(){var m=e.cssLength;function n(Q){return!!this._.tabs[Q][0].$.offsetHeight;};function o(){var U=this;var Q=U._.currentTabId,R=U._.tabIdList.length,S=e.indexOf(U._.tabIdList,Q)+R;for(var T=S-1;T>S-R;T--){if(n.call(U,U._.tabIdList[T%R]))return U._.tabIdList[T%R];
+}return null;};function p(){var U=this;var Q=U._.currentTabId,R=U._.tabIdList.length,S=e.indexOf(U._.tabIdList,Q);for(var T=S+1;T<S+R;T++){if(n.call(U,U._.tabIdList[T%R]))return U._.tabIdList[T%R];}return null;};function q(Q,R){var S=Q.$.getElementsByTagName('input');for(var T=0,U=S.length;T<U;T++){var V=new h(S[T]);if(V.getAttribute('type').toLowerCase()=='text')if(R){V.setAttribute('value',V.getCustomData('fake_value')||'');V.removeCustomData('fake_value');}else{V.setCustomData('fake_value',V.getAttribute('value'));V.setAttribute('value','');}}};function r(Q,R){var T=this;var S=T.getInputElement();if(S)Q?S.removeAttribute('aria-invalid'):S.setAttribute('aria-invalid',true);if(!Q)if(T.select)T.select();else T.focus();R&&alert(R);T.fire('validated',{valid:Q,msg:R});};function s(){var Q=this.getInputElement();Q&&Q.removeAttribute('aria-invalid');};a.dialog=function(Q,R){var S=a.dialog._.dialogDefinitions[R],T=e.clone(u),U=Q.config.dialog_buttonsOrder||'OS',V=Q.lang.dir,W={},X,Y,Z;if(U=='OS'&&b.mac||U=='rtl'&&V=='ltr'||U=='ltr'&&V=='rtl')T.buttons.reverse();S=e.extend(S(Q),T);S=e.clone(S);S=new y(this,S);var aa=a.document,ab=Q.theme.buildDialog(Q);this._={editor:Q,element:ab.element,name:R,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:false,focusList:[],currentFocusIndex:0,hasFocus:false};this.parts=ab.parts;e.setTimeout(function(){Q.fire('ariaWidget',this.parts.contents);},0,this);var ac={position:b.ie6Compat?'absolute':'fixed',top:0,visibility:'hidden'};ac[V=='rtl'?'right':'left']=0;this.parts.dialog.setStyles(ac);a.event.call(this);this.definition=S=a.fire('dialogDefinition',{name:R,definition:S},Q).definition;if(!('removeDialogTabs' in Q._)&&Q.config.removeDialogTabs){var ad=Q.config.removeDialogTabs.split(';');for(X=0;X<ad.length;X++){var ae=ad[X].split(':');if(ae.length==2){var af=ae[0];if(!W[af])W[af]=[];W[af].push(ae[1]);}}Q._.removeDialogTabs=W;}if(Q._.removeDialogTabs&&(W=Q._.removeDialogTabs[R]))for(X=0;X<W.length;X++)S.removeContents(W[X]);if(S.onLoad)this.on('load',S.onLoad);if(S.onShow)this.on('show',S.onShow);if(S.onHide)this.on('hide',S.onHide);if(S.onOk)this.on('ok',function(aq){Q.fire('saveSnapshot');setTimeout(function(){Q.fire('saveSnapshot');},0);if(S.onOk.call(this,aq)===false)aq.data.hide=false;});if(S.onCancel)this.on('cancel',function(aq){if(S.onCancel.call(this,aq)===false)aq.data.hide=false;
+});var ag=this,ah=function(aq){var ar=ag._.contents,as=false;for(var at in ar)for(var au in ar[at]){as=aq.call(this,ar[at][au]);if(as)return;}};this.on('ok',function(aq){ah(function(ar){if(ar.validate){var as=ar.validate(this),at=typeof as=='string'||as===false;if(at){aq.data.hide=false;aq.stop();}r.call(ar,!at,typeof as=='string'?as:undefined);return at;}});},this,null,0);this.on('cancel',function(aq){ah(function(ar){if(ar.isChanged()){if(!confirm(Q.lang.common.confirmCancel))aq.data.hide=false;return true;}});},this,null,0);this.parts.close.on('click',function(aq){if(this.fire('cancel',{hide:true}).hide!==false)this.hide();aq.data.preventDefault();},this);function ai(){var aq=ag._.focusList;aq.sort(function(at,au){if(at.tabIndex!=au.tabIndex)return au.tabIndex-at.tabIndex;else return at.focusIndex-au.focusIndex;});var ar=aq.length;for(var as=0;as<ar;as++)aq[as].focusIndex=as;};function aj(aq){var ar=ag._.focusList;aq=aq||0;if(ar.length<1)return;var as=ag._.currentFocusIndex;try{ar[as].getInputElement().$.blur();}catch(av){}var at=(as+aq+ar.length)%ar.length,au=at;while(aq&&!ar[au].isFocusable()){au=(au+aq+ar.length)%ar.length;if(au==at)break;}ar[au].focus();if(ar[au].type=='text')ar[au].select();};this.changeFocus=aj;function ak(aq){var ax=this;if(ag!=a.dialog._.currentTop)return;var ar=aq.data.getKeystroke(),as=Q.lang.dir=='rtl',at;Y=Z=0;if(ar==9||ar==2228224+9){var au=ar==2228224+9;if(ag._.tabBarMode){var av=au?o.call(ag):p.call(ag);ag.selectPage(av);ag._.tabs[av][0].focus();}else aj(au?-1:1);Y=1;}else if(ar==4456448+121&&!ag._.tabBarMode&&ag.getPageCount()>1){ag._.tabBarMode=true;ag._.tabs[ag._.currentTabId][0].focus();Y=1;}else if((ar==37||ar==39)&&ag._.tabBarMode){av=ar==(as?39:37)?o.call(ag):p.call(ag);ag.selectPage(av);ag._.tabs[av][0].focus();Y=1;}else if((ar==13||ar==32)&&ag._.tabBarMode){ax.selectPage(ax._.currentTabId);ax._.tabBarMode=false;ax._.currentFocusIndex=-1;aj(1);Y=1;}else if(ar==13){var aw=aq.data.getTarget();if(!aw.is('a','button','select')&&(!aw.is('input')||aw.$.type!='button')){at=ax.getButton('ok');at&&e.setTimeout(at.click,0,at);Y=1;}Z=1;}else if(ar==27){at=ax.getButton('cancel');if(at)e.setTimeout(at.click,0,at);else if(ax.fire('cancel',{hide:true}).hide!==false)ax.hide();Z=1;}else return;al(aq);};function al(aq){if(Y)aq.data.preventDefault(1);else if(Z)aq.data.stopPropagation();};var am=this._.element;this.on('show',function(){am.on('keydown',ak,this);if(b.opera||b.gecko)am.on('keypress',al,this);});this.on('hide',function(){am.removeListener('keydown',ak);
+if(b.opera||b.gecko)am.removeListener('keypress',al);ah(function(aq){s.apply(aq);});});this.on('iframeAdded',function(aq){var ar=new g(aq.data.iframe.$.contentWindow.document);ar.on('keydown',ak,this,null,0);});this.on('show',function(){var au=this;ai();if(Q.config.dialog_startupFocusTab&&ag._.pageCount>1){ag._.tabBarMode=true;ag._.tabs[ag._.currentTabId][0].focus();}else if(!au._.hasFocus){au._.currentFocusIndex=-1;if(S.onFocus){var aq=S.onFocus.call(au);aq&&aq.focus();}else aj(1);if(au._.editor.mode=='wysiwyg'&&c){var ar=Q.document.$.selection,as=ar.createRange();if(as)if(as.parentElement&&as.parentElement().ownerDocument==Q.document.$||as.item&&as.item(0).ownerDocument==Q.document.$){var at=document.body.createTextRange();at.moveToElementText(au.getElement().getFirst().$);at.collapse(true);at.select();}}}},this,null,4294967295);if(b.ie6Compat)this.on('load',function(aq){var ar=this.getElement(),as=ar.getFirst();as.remove();as.appendTo(ar);},this);A(this);B(this);new d.text(S.title,a.document).appendTo(this.parts.title);for(X=0;X<S.contents.length;X++){var an=S.contents[X];an&&this.addPage(an);}this.parts.tabs.on('click',function(aq){var at=this;var ar=aq.data.getTarget();if(ar.hasClass('cke_dialog_tab')){var as=ar.$.id;at.selectPage(as.substring(4,as.lastIndexOf('_')));if(at._.tabBarMode){at._.tabBarMode=false;at._.currentFocusIndex=-1;aj(1);}aq.data.preventDefault();}},this);var ao=[],ap=a.dialog._.uiElementBuilders.hbox.build(this,{type:'hbox',className:'cke_dialog_footer_buttons',widths:[],children:S.buttons},ao).getChild();this.parts.footer.setHtml(ao.join(''));for(X=0;X<ap.length;X++)this._.buttons[ap[X].id]=ap[X];};function t(Q,R,S){this.element=R;this.focusIndex=S;this.tabIndex=0;this.isFocusable=function(){return!R.getAttribute('disabled')&&R.isVisible();};this.focus=function(){Q._.currentFocusIndex=this.focusIndex;this.element.focus();};R.on('keydown',function(T){if(T.data.getKeystroke() in {32:1,13:1})this.fire('click');});R.on('focus',function(){this.fire('mouseover');});R.on('blur',function(){this.fire('mouseout');});};a.dialog.prototype={destroy:function(){this.hide();this._.element.remove();},resize:(function(){return function(Q,R){var S=this;if(S._.contentSize&&S._.contentSize.width==Q&&S._.contentSize.height==R)return;a.dialog.fire('resize',{dialog:S,skin:S._.editor.skinName,width:Q,height:R},S._.editor);S.fire('resize',{skin:S._.editor.skinName,width:Q,height:R},S._.editor);if(S._.editor.lang.dir=='rtl'&&S._.position)S._.position.x=a.document.getWindow().getViewPaneSize().width-S._.contentSize.width-parseInt(S._.element.getFirst().getStyle('right'),10);
+S._.contentSize={width:Q,height:R};};})(),getSize:function(){var Q=this._.element.getFirst();return{width:Q.$.offsetWidth||0,height:Q.$.offsetHeight||0};},move:(function(){var Q;return function(R,S,T){var aa=this;var U=aa._.element.getFirst(),V=aa._.editor.lang.dir=='rtl';if(Q===undefined)Q=U.getComputedStyle('position')=='fixed';if(Q&&aa._.position&&aa._.position.x==R&&aa._.position.y==S)return;aa._.position={x:R,y:S};if(!Q){var W=a.document.getWindow().getScrollPosition();R+=W.x;S+=W.y;}if(V){var X=aa.getSize(),Y=a.document.getWindow().getViewPaneSize();R=Y.width-X.width-R;}var Z={top:(S>0?S:0)+'px'};Z[V?'right':'left']=(R>0?R:0)+'px';U.setStyles(Z);T&&(aa._.moved=1);};})(),getPosition:function(){return e.extend({},this._.position);},show:function(){var Q=this._.element,R=this.definition;if(!(Q.getParent()&&Q.getParent().equals(a.document.getBody())))Q.appendTo(a.document.getBody());else Q.setStyle('display','block');if(b.gecko&&b.version<10900){var S=this.parts.dialog;S.setStyle('position','absolute');setTimeout(function(){S.setStyle('position','fixed');},0);}this.resize(this._.contentSize&&this._.contentSize.width||R.width||R.minWidth,this._.contentSize&&this._.contentSize.height||R.height||R.minHeight);this.reset();this.selectPage(this.definition.contents[0].id);if(a.dialog._.currentZIndex===null)a.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex;this._.element.getFirst().setStyle('z-index',a.dialog._.currentZIndex+=10);if(a.dialog._.currentTop===null){a.dialog._.currentTop=this;this._.parentDialog=null;G(this._.editor);}else{this._.parentDialog=a.dialog._.currentTop;var T=this._.parentDialog.getElement().getFirst();T.$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2);a.dialog._.currentTop=this;}Q.on('keydown',K);Q.on(b.opera?'keypress':'keyup',L);this._.hasFocus=false;e.setTimeout(function(){this.layout();this.parts.dialog.setStyle('visibility','');this.fireOnce('load',{});k.fire('ready',this);this.fire('show',{});this._.editor.fire('dialogShow',this);this.foreach(function(U){U.setInitValue&&U.setInitValue();});},100,this);},layout:function(){var S=this;var Q=a.document.getWindow().getViewPaneSize(),R=S.getSize();S.move(S._.moved?S._.position.x:(Q.width-R.width)/2,S._.moved?S._.position.y:(Q.height-R.height)/2);},foreach:function(Q){var T=this;for(var R in T._.contents)for(var S in T._.contents[R])Q.call(T,T._.contents[R][S]);return T;},reset:(function(){var Q=function(R){if(R.reset)R.reset(1);};return function(){this.foreach(Q);
+return this;};})(),setupContent:function(){var Q=arguments;this.foreach(function(R){if(R.setup)R.setup.apply(R,Q);});},commitContent:function(){var Q=arguments;this.foreach(function(R){if(c&&this._.currentFocusIndex==R.focusIndex)R.getInputElement().$.blur();if(R.commit)R.commit.apply(R,Q);});},hide:function(){if(!this.parts.dialog.isVisible())return;this.fire('hide',{});this._.editor.fire('dialogHide',this);this.selectPage(this._.tabIdList[0]);var Q=this._.element;Q.setStyle('display','none');this.parts.dialog.setStyle('visibility','hidden');N(this);while(a.dialog._.currentTop!=this)a.dialog._.currentTop.hide();if(!this._.parentDialog)H();else{var R=this._.parentDialog.getElement().getFirst();R.setStyle('z-index',parseInt(R.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2));}a.dialog._.currentTop=this._.parentDialog;if(!this._.parentDialog){a.dialog._.currentZIndex=null;Q.removeListener('keydown',K);Q.removeListener(b.opera?'keypress':'keyup',L);var S=this._.editor;S.focus();if(S.mode=='wysiwyg'&&c){var T=S.getSelection();T&&T.unlock(true);}}else a.dialog._.currentZIndex-=10;delete this._.parentDialog;this.foreach(function(U){U.resetInitValue&&U.resetInitValue();});},addPage:function(Q){var ac=this;var R=[],S=Q.label?' title="'+e.htmlEncode(Q.label)+'"':'',T=Q.elements,U=a.dialog._.uiElementBuilders.vbox.build(ac,{type:'vbox',className:'cke_dialog_page_contents',children:Q.elements,expand:!!Q.expand,padding:Q.padding,style:Q.style||'width: 100%;height:100%'},R),V=h.createFromHtml(R.join(''));V.setAttribute('role','tabpanel');var W=b,X='cke_'+Q.id+'_'+e.getNextNumber(),Y=h.createFromHtml(['<a class="cke_dialog_tab"',ac._.pageCount>0?' cke_last':'cke_first',S,!!Q.hidden?' style="display:none"':'',' id="',X,'"',W.gecko&&W.version>=10900&&!W.hc?'':' href="javascript:void(0)"',' tabIndex="-1"',' hidefocus="true"',' role="tab">',Q.label,'</a>'].join(''));V.setAttribute('aria-labelledby',X);ac._.tabs[Q.id]=[Y,V];ac._.tabIdList.push(Q.id);!Q.hidden&&ac._.pageCount++;ac._.lastTab=Y;ac.updateStyle();var Z=ac._.contents[Q.id]={},aa,ab=U.getChild();while(aa=ab.shift()){Z[aa.id]=aa;if(typeof aa.getChild=='function')ab.push.apply(ab,aa.getChild());}V.setAttribute('name',Q.id);V.appendTo(ac.parts.contents);Y.unselectable();ac.parts.tabs.append(Y);if(Q.accessKey){M(ac,ac,'CTRL+'+Q.accessKey,P,O);ac._.accessKeyMap['CTRL+'+Q.accessKey]=Q.id;}},selectPage:function(Q){if(this._.currentTabId==Q)return;if(this.fire('selectPage',{page:Q,currentPage:this._.currentTabId})===true)return;
+for(var R in this._.tabs){var S=this._.tabs[R][0],T=this._.tabs[R][1];if(R!=Q){S.removeClass('cke_dialog_tab_selected');T.hide();}T.setAttribute('aria-hidden',R!=Q);}var U=this._.tabs[Q];U[0].addClass('cke_dialog_tab_selected');if(b.ie6Compat||b.ie7Compat){q(U[1]);U[1].show();setTimeout(function(){q(U[1],1);},0);}else U[1].show();this._.currentTabId=Q;this._.currentTabIndex=e.indexOf(this._.tabIdList,Q);},updateStyle:function(){this.parts.dialog[(this._.pageCount===1?'add':'remove')+'Class']('cke_single_page');},hidePage:function(Q){var S=this;var R=S._.tabs[Q]&&S._.tabs[Q][0];if(!R||S._.pageCount==1||!R.isVisible())return;else if(Q==S._.currentTabId)S.selectPage(o.call(S));R.hide();S._.pageCount--;S.updateStyle();},showPage:function(Q){var S=this;var R=S._.tabs[Q]&&S._.tabs[Q][0];if(!R)return;R.show();S._.pageCount++;S.updateStyle();},getElement:function(){return this._.element;},getName:function(){return this._.name;},getContentElement:function(Q,R){var S=this._.contents[Q];return S&&S[R];},getValueOf:function(Q,R){return this.getContentElement(Q,R).getValue();},setValueOf:function(Q,R,S){return this.getContentElement(Q,R).setValue(S);},getButton:function(Q){return this._.buttons[Q];},click:function(Q){return this._.buttons[Q].click();},disableButton:function(Q){return this._.buttons[Q].disable();},enableButton:function(Q){return this._.buttons[Q].enable();},getPageCount:function(){return this._.pageCount;},getParentEditor:function(){return this._.editor;},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement();},addFocusable:function(Q,R){var T=this;if(typeof R=='undefined'){R=T._.focusList.length;T._.focusList.push(new t(T,Q,R));}else{T._.focusList.splice(R,0,new t(T,Q,R));for(var S=R+1;S<T._.focusList.length;S++)T._.focusList[S].focusIndex++;}}};e.extend(a.dialog,{add:function(Q,R){if(!this._.dialogDefinitions[Q]||typeof R=='function')this._.dialogDefinitions[Q]=R;},exists:function(Q){return!!this._.dialogDefinitions[Q];},getCurrent:function(){return a.dialog._.currentTop;},okButton:(function(){var Q=function(R,S){S=S||{};return e.extend({id:'ok',type:'button',label:R.lang.common.ok,'class':'cke_dialog_ui_button_ok',onClick:function(T){var U=T.data.dialog;if(U.fire('ok',{hide:true}).hide!==false)U.hide();}},S,true);};Q.type='button';Q.override=function(R){return e.extend(function(S){return Q(S,R);},{type:'button'},true);};return Q;})(),cancelButton:(function(){var Q=function(R,S){S=S||{};return e.extend({id:'cancel',type:'button',label:R.lang.common.cancel,'class':'cke_dialog_ui_button_cancel',onClick:function(T){var U=T.data.dialog;
+if(U.fire('cancel',{hide:true}).hide!==false)U.hide();}},S,true);};Q.type='button';Q.override=function(R){return e.extend(function(S){return Q(S,R);},{type:'button'},true);};return Q;})(),addUIElement:function(Q,R){this._.uiElementBuilders[Q]=R;}});a.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};a.event.implementOn(a.dialog);a.event.implementOn(a.dialog.prototype,true);var u={resizable:3,minWidth:600,minHeight:400,buttons:[a.dialog.okButton,a.dialog.cancelButton]},v=function(Q,R,S){for(var T=0,U;U=Q[T];T++){if(U.id==R)return U;if(S&&U[S]){var V=v(U[S],R,S);if(V)return V;}}return null;},w=function(Q,R,S,T,U){if(S){for(var V=0,W;W=Q[V];V++){if(W.id==S){Q.splice(V,0,R);return R;}if(T&&W[T]){var X=w(W[T],R,S,T,true);if(X)return X;}}if(U)return null;}Q.push(R);return R;},x=function(Q,R,S){for(var T=0,U;U=Q[T];T++){if(U.id==R)return Q.splice(T,1);if(S&&U[S]){var V=x(U[S],R,S);if(V)return V;}}return null;},y=function(Q,R){this.dialog=Q;var S=R.contents;for(var T=0,U;U=S[T];T++)S[T]=U&&new z(Q,U);e.extend(this,R);};y.prototype={getContents:function(Q){return v(this.contents,Q);},getButton:function(Q){return v(this.buttons,Q);},addContents:function(Q,R){return w(this.contents,Q,R);},addButton:function(Q,R){return w(this.buttons,Q,R);},removeContents:function(Q){x(this.contents,Q);},removeButton:function(Q){x(this.buttons,Q);}};function z(Q,R){this._={dialog:Q};e.extend(this,R);};z.prototype={get:function(Q){return v(this.elements,Q,'children');},add:function(Q,R){return w(this.elements,Q,R,'children');},remove:function(Q){x(this.elements,Q,'children');}};function A(Q){var R=null,S=null,T=Q.getElement().getFirst(),U=Q.getParentEditor(),V=U.config.dialog_magnetDistance,W=U.skin.margins||[0,0,0,0];if(typeof V=='undefined')V=20;function X(Z){var aa=Q.getSize(),ab=a.document.getWindow().getViewPaneSize(),ac=Z.data.$.screenX,ad=Z.data.$.screenY,ae=ac-R.x,af=ad-R.y,ag,ah;R={x:ac,y:ad};S.x+=ae;S.y+=af;if(S.x+W[3]<V)ag=-W[3];else if(S.x-W[1]>ab.width-aa.width-V)ag=ab.width-aa.width+(U.lang.dir=='rtl'?0:W[1]);else ag=S.x;if(S.y+W[0]<V)ah=-W[0];else if(S.y-W[2]>ab.height-aa.height-V)ah=ab.height-aa.height+W[2];else ah=S.y;Q.move(ag,ah,1);Z.data.preventDefault();};function Y(Z){a.document.removeListener('mousemove',X);a.document.removeListener('mouseup',Y);if(b.ie6Compat){var aa=E.getChild(0).getFrameDocument();aa.removeListener('mousemove',X);aa.removeListener('mouseup',Y);}};Q.parts.title.on('mousedown',function(Z){R={x:Z.data.$.screenX,y:Z.data.$.screenY};
+a.document.on('mousemove',X);a.document.on('mouseup',Y);S=Q.getPosition();if(b.ie6Compat){var aa=E.getChild(0).getFrameDocument();aa.on('mousemove',X);aa.on('mouseup',Y);}Z.data.preventDefault();},Q);};function B(Q){var R=Q.definition,S=R.resizable;if(S==0)return;var T=Q.getParentEditor(),U,V,W,X,Y,Z,aa=e.addFunction(function(ad){Y=Q.getSize();var ae=Q.parts.contents,af=ae.$.getElementsByTagName('iframe').length;if(af){Z=h.createFromHtml('<div class="cke_dialog_resize_cover" style="height: 100%; position: absolute; width: 100%;"></div>');ae.append(Z);}V=Y.height-Q.parts.contents.getSize('height',!(b.gecko||b.opera||c&&b.quirks));U=Y.width-Q.parts.contents.getSize('width',1);X={x:ad.screenX,y:ad.screenY};W=a.document.getWindow().getViewPaneSize();a.document.on('mousemove',ab);a.document.on('mouseup',ac);if(b.ie6Compat){var ag=E.getChild(0).getFrameDocument();ag.on('mousemove',ab);ag.on('mouseup',ac);}ad.preventDefault&&ad.preventDefault();});Q.on('load',function(){var ad='';if(S==1)ad=' cke_resizer_horizontal';else if(S==2)ad=' cke_resizer_vertical';var ae=h.createFromHtml('<div class="cke_resizer'+ad+' cke_resizer_'+T.lang.dir+'"'+' title="'+e.htmlEncode(T.lang.resize)+'"'+' onmousedown="CKEDITOR.tools.callFunction('+aa+', event )"></div>');Q.parts.footer.append(ae,1);});T.on('destroy',function(){e.removeFunction(aa);});function ab(ad){var ae=T.lang.dir=='rtl',af=(ad.data.$.screenX-X.x)*(ae?-1:1),ag=ad.data.$.screenY-X.y,ah=Y.width,ai=Y.height,aj=ah+af*(Q._.moved?1:2),ak=ai+ag*(Q._.moved?1:2),al=Q._.element.getFirst(),am=ae&&al.getComputedStyle('right'),an=Q.getPosition();if(an.y+ak>W.height)ak=W.height-an.y;if((ae?am:an.x)+aj>W.width)aj=W.width-(ae?am:an.x);if(S==1||S==3)ah=Math.max(R.minWidth||0,aj-U);if(S==2||S==3)ai=Math.max(R.minHeight||0,ak-V);Q.resize(ah,ai);if(!Q._.moved)Q.layout();ad.data.preventDefault();};function ac(){a.document.removeListener('mouseup',ac);a.document.removeListener('mousemove',ab);if(Z){Z.remove();Z=null;}if(b.ie6Compat){var ad=E.getChild(0).getFrameDocument();ad.removeListener('mouseup',ac);ad.removeListener('mousemove',ab);}};};var C,D={},E;function F(Q){Q.data.preventDefault(1);};function G(Q){var R=a.document.getWindow(),S=Q.config,T=S.dialog_backgroundCoverColor||'white',U=S.dialog_backgroundCoverOpacity,V=S.baseFloatZIndex,W=e.genKey(T,U,V),X=D[W];if(!X){var Y=['<div tabIndex="-1" style="position: ',b.ie6Compat?'absolute':'fixed','; z-index: ',V,'; top: 0px; left: 0px; ',!b.ie6Compat?'background-color: '+T:'','" class="cke_dialog_background_cover">'];
+if(b.ie6Compat){var Z=b.isCustomDomain(),aa="<html><body style=\\'background-color:"+T+";\\'></body></html>";Y.push('<iframe hidefocus="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:');Y.push('void((function(){document.open();'+(Z?"document.domain='"+document.domain+"';":'')+"document.write( '"+aa+"' );"+'document.close();'+'})())');Y.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>');}Y.push('</div>');X=h.createFromHtml(Y.join(''));X.setOpacity(U!=undefined?U:0.5);X.on('keydown',F);X.on('keypress',F);X.on('keyup',F);X.appendTo(a.document.getBody());D[W]=X;}else X.show();E=X;var ab=function(){var ae=R.getViewPaneSize();X.setStyles({width:ae.width+'px',height:ae.height+'px'});},ac=function(){var ae=R.getScrollPosition(),af=a.dialog._.currentTop;X.setStyles({left:ae.x+'px',top:ae.y+'px'});if(af)do{var ag=af.getPosition();af.move(ag.x,ag.y);}while(af=af._.parentDialog)};C=ab;R.on('resize',ab);ab();if(!(b.mac&&b.webkit))X.focus();if(b.ie6Compat){var ad=function(){ac();arguments.callee.prevScrollHandler.apply(this,arguments);};R.$.setTimeout(function(){ad.prevScrollHandler=window.onscroll||(function(){});window.onscroll=ad;},0);ac();}};function H(){if(!E)return;var Q=a.document.getWindow();E.hide();Q.removeListener('resize',C);if(b.ie6Compat)Q.$.setTimeout(function(){var R=window.onscroll&&window.onscroll.prevScrollHandler;window.onscroll=R||null;},0);C=null;};function I(){for(var Q in D)D[Q].remove();D={};};var J={},K=function(Q){var R=Q.data.$.ctrlKey||Q.data.$.metaKey,S=Q.data.$.altKey,T=Q.data.$.shiftKey,U=String.fromCharCode(Q.data.$.keyCode),V=J[(R?'CTRL+':'')+(S?'ALT+':'')+(T?'SHIFT+':'')+U];if(!V||!V.length)return;V=V[V.length-1];V.keydown&&V.keydown.call(V.uiElement,V.dialog,V.key);Q.data.preventDefault();},L=function(Q){var R=Q.data.$.ctrlKey||Q.data.$.metaKey,S=Q.data.$.altKey,T=Q.data.$.shiftKey,U=String.fromCharCode(Q.data.$.keyCode),V=J[(R?'CTRL+':'')+(S?'ALT+':'')+(T?'SHIFT+':'')+U];if(!V||!V.length)return;V=V[V.length-1];if(V.keyup){V.keyup.call(V.uiElement,V.dialog,V.key);Q.data.preventDefault();}},M=function(Q,R,S,T,U){var V=J[S]||(J[S]=[]);V.push({uiElement:Q,dialog:R,key:S,keyup:U||Q.accessKeyUp,keydown:T||Q.accessKeyDown});},N=function(Q){for(var R in J){var S=J[R];for(var T=S.length-1;T>=0;T--){if(S[T].dialog==Q||S[T].uiElement==Q)S.splice(T,1);}if(S.length===0)delete J[R];}},O=function(Q,R){if(Q._.accessKeyMap[R])Q.selectPage(Q._.accessKeyMap[R]);
+},P=function(Q,R){};(function(){k.dialog={uiElement:function(Q,R,S,T,U,V,W){if(arguments.length<4)return;var X=(T.call?T(R):T)||'div',Y=['<',X,' '],Z=(U&&U.call?U(R):U)||{},aa=(V&&V.call?V(R):V)||{},ab=(W&&W.call?W.call(this,Q,R):W)||'',ac=this.domId=aa.id||e.getNextId()+'_uiElement',ad=this.id=R.id,ae;aa.id=ac;var af={};if(R.type)af['cke_dialog_ui_'+R.type]=1;if(R.className)af[R.className]=1;if(R.disabled)af.cke_disabled=1;var ag=aa['class']&&aa['class'].split?aa['class'].split(' '):[];for(ae=0;ae<ag.length;ae++){if(ag[ae])af[ag[ae]]=1;}var ah=[];for(ae in af)ah.push(ae);aa['class']=ah.join(' ');if(R.title)aa.title=R.title;var ai=(R.style||'').split(';');if(R.align){var aj=R.align;Z['margin-left']=aj=='left'?0:'auto';Z['margin-right']=aj=='right'?0:'auto';}for(ae in Z)ai.push(ae+':'+Z[ae]);if(R.hidden)ai.push('display:none');for(ae=ai.length-1;ae>=0;ae--){if(ai[ae]==='')ai.splice(ae,1);}if(ai.length>0)aa.style=(aa.style?aa.style+'; ':'')+ai.join('; ');for(ae in aa)Y.push(ae+'="'+e.htmlEncode(aa[ae])+'" ');Y.push('>',ab,'</',X,'>');S.push(Y.join(''));(this._||(this._={})).dialog=Q;if(typeof R.isChanged=='boolean')this.isChanged=function(){return R.isChanged;};if(typeof R.isChanged=='function')this.isChanged=R.isChanged;if(typeof R.setValue=='function')this.setValue=e.override(this.setValue,function(al){return function(am){al.call(this,R.setValue.call(this,am));};});if(typeof R.getValue=='function')this.getValue=e.override(this.getValue,function(al){return function(){return R.getValue.call(this,al.call(this));};});a.event.implementOn(this);this.registerEvents(R);if(this.accessKeyUp&&this.accessKeyDown&&R.accessKey)M(this,Q,'CTRL+'+R.accessKey);var ak=this;Q.on('load',function(){var al=ak.getInputElement();if(al){var am=ak.type in {checkbox:1,ratio:1}&&c&&b.version<8?'cke_dialog_ui_focused':'';al.on('focus',function(){Q._.tabBarMode=false;Q._.hasFocus=true;ak.fire('focus');am&&this.addClass(am);});al.on('blur',function(){ak.fire('blur');am&&this.removeClass(am);});}});if(this.keyboardFocusable){this.tabIndex=R.tabIndex||0;this.focusIndex=Q._.focusList.push(this)-1;this.on('focus',function(){Q._.currentFocusIndex=ak.focusIndex;});}e.extend(this,R);},hbox:function(Q,R,S,T,U){if(arguments.length<4)return;this._||(this._={});var V=this._.children=R,W=U&&U.widths||null,X=U&&U.height||null,Y={},Z,aa=function(){var ac=['<tbody><tr class="cke_dialog_ui_hbox">'];for(Z=0;Z<S.length;Z++){var ad='cke_dialog_ui_hbox_child',ae=[];if(Z===0)ad='cke_dialog_ui_hbox_first';if(Z==S.length-1)ad='cke_dialog_ui_hbox_last';
+ac.push('<td class="',ad,'" role="presentation" ');if(W){if(W[Z])ae.push('width:'+m(W[Z]));}else ae.push('width:'+Math.floor(100/S.length)+'%');if(X)ae.push('height:'+m(X));if(U&&U.padding!=undefined)ae.push('padding:'+m(U.padding));if(c&&b.quirks&&V[Z].align)ae.push('text-align:'+V[Z].align);if(ae.length>0)ac.push('style="'+ae.join('; ')+'" ');ac.push('>',S[Z],'</td>');}ac.push('</tr></tbody>');return ac.join('');},ab={role:'presentation'};U&&U.align&&(ab.align=U.align);k.dialog.uiElement.call(this,Q,U||{type:'hbox'},T,'table',Y,ab,aa);},vbox:function(Q,R,S,T,U){if(arguments.length<3)return;this._||(this._={});var V=this._.children=R,W=U&&U.width||null,X=U&&U.heights||null,Y=function(){var Z=['<table role="presentation" cellspacing="0" border="0" '];Z.push('style="');if(U&&U.expand)Z.push('height:100%;');Z.push('width:'+m(W||'100%'),';');Z.push('"');Z.push('align="',e.htmlEncode(U&&U.align||(Q.getParentEditor().lang.dir=='ltr'?'left':'right')),'" ');Z.push('><tbody>');for(var aa=0;aa<S.length;aa++){var ab=[];Z.push('<tr><td role="presentation" ');if(W)ab.push('width:'+m(W||'100%'));if(X)ab.push('height:'+m(X[aa]));else if(U&&U.expand)ab.push('height:'+Math.floor(100/S.length)+'%');if(U&&U.padding!=undefined)ab.push('padding:'+m(U.padding));if(c&&b.quirks&&V[aa].align)ab.push('text-align:'+V[aa].align);if(ab.length>0)Z.push('style="',ab.join('; '),'" ');Z.push(' class="cke_dialog_ui_vbox_child">',S[aa],'</td></tr>');}Z.push('</tbody></table>');return Z.join('');};k.dialog.uiElement.call(this,Q,U||{type:'vbox'},T,'div',null,{role:'presentation'},Y);}};})();k.dialog.uiElement.prototype={getElement:function(){return a.document.getById(this.domId);},getInputElement:function(){return this.getElement();},getDialog:function(){return this._.dialog;},setValue:function(Q,R){this.getInputElement().setValue(Q);!R&&this.fire('change',{value:Q});return this;},getValue:function(){return this.getInputElement().getValue();},isChanged:function(){return false;},selectParentTab:function(){var T=this;var Q=T.getInputElement(),R=Q,S;while((R=R.getParent())&&R.$.className.search('cke_dialog_page_contents')==-1){}if(!R)return T;S=R.getAttribute('name');if(T._.dialog._.currentTabId!=S)T._.dialog.selectPage(S);return T;},focus:function(){this.selectParentTab().getInputElement().focus();return this;},registerEvents:function(Q){var R=/^on([A-Z]\w+)/,S,T=function(V,W,X,Y){W.on('load',function(){V.getInputElement().on(X,Y,V);});};for(var U in Q){if(!(S=U.match(R)))continue;if(this.eventProcessors[U])this.eventProcessors[U].call(this,this._.dialog,Q[U]);
+else T(this,this._.dialog,S[1].toLowerCase(),Q[U]);}return this;},eventProcessors:{onLoad:function(Q,R){Q.on('load',R,this);},onShow:function(Q,R){Q.on('show',R,this);},onHide:function(Q,R){Q.on('hide',R,this);}},accessKeyDown:function(Q,R){this.focus();},accessKeyUp:function(Q,R){},disable:function(){var Q=this.getElement(),R=this.getInputElement();R.setAttribute('disabled','true');Q.addClass('cke_disabled');},enable:function(){var Q=this.getElement(),R=this.getInputElement();R.removeAttribute('disabled');Q.removeClass('cke_disabled');},isEnabled:function(){return!this.getElement().hasClass('cke_disabled');},isVisible:function(){return this.getInputElement().isVisible();},isFocusable:function(){if(!this.isEnabled()||!this.isVisible())return false;return true;}};k.dialog.hbox.prototype=e.extend(new k.dialog.uiElement(),{getChild:function(Q){var R=this;if(arguments.length<1)return R._.children.concat();if(!Q.splice)Q=[Q];if(Q.length<2)return R._.children[Q[0]];else return R._.children[Q[0]]&&R._.children[Q[0]].getChild?R._.children[Q[0]].getChild(Q.slice(1,Q.length)):null;}},true);k.dialog.vbox.prototype=new k.dialog.hbox();(function(){var Q={build:function(R,S,T){var U=S.children,V,W=[],X=[];for(var Y=0;Y<U.length&&(V=U[Y]);Y++){var Z=[];W.push(Z);X.push(a.dialog._.uiElementBuilders[V.type].build(R,V,Z));}return new k.dialog[S.type](R,X,W,T,S);}};a.dialog.addUIElement('hbox',Q);a.dialog.addUIElement('vbox',Q);})();a.dialogCommand=function(Q){this.dialogName=Q;};a.dialogCommand.prototype={exec:function(Q){b.opera?e.setTimeout(function(){Q.openDialog(this.dialogName);},0,this):Q.openDialog(this.dialogName);},canUndo:false,editorFocus:c||b.webkit};(function(){var Q=/^([a]|[^a])+$/,R=/^\d*$/,S=/^\d*(?:\.\d+)?$/,T=/^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,U=/^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i,V=/^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/;a.VALIDATE_OR=1;a.VALIDATE_AND=2;a.dialog.validate={functions:function(){var W=arguments;return function(){var X=this&&this.getValue?this.getValue():W[0],Y=undefined,Z=2,aa=[],ab;for(ab=0;ab<W.length;ab++){if(typeof W[ab]=='function')aa.push(W[ab]);else break;}if(ab<W.length&&typeof W[ab]=='string'){Y=W[ab];ab++;}if(ab<W.length&&typeof W[ab]=='number')Z=W[ab];var ac=Z==2?true:false;for(ab=0;ab<aa.length;ab++){if(Z==2)ac=ac&&aa[ab](X);else ac=ac||aa[ab](X);}return!ac?Y:true;};},regex:function(W,X){return function(){var Y=this&&this.getValue?this.getValue():arguments[0];return!W.test(Y)?X:true;};},notEmpty:function(W){return this.regex(Q,W);
+},integer:function(W){return this.regex(R,W);},number:function(W){return this.regex(S,W);},cssLength:function(W){return this.functions(function(X){return U.test(e.trim(X));},W);},htmlLength:function(W){return this.functions(function(X){return T.test(e.trim(X));},W);},inlineStyle:function(W){return this.functions(function(X){return V.test(e.trim(X));},W);},equals:function(W,X){return this.functions(function(Y){return Y==W;},X);},notEqual:function(W,X){return this.functions(function(Y){return Y!=W;},X);}};a.on('instanceDestroyed',function(W){if(e.isEmpty(a.instances)){var X;while(X=a.dialog._.currentTop)X.hide();I();}var Y=W.editor._.storedDialogs;for(var Z in Y)Y[Z].destroy();});})();e.extend(a.editor.prototype,{openDialog:function(Q,R){if(this.mode=='wysiwyg'&&c){var S=this.getSelection();S&&S.lock();}var T=a.dialog._.dialogDefinitions[Q],U=this.skin.dialog;if(a.dialog._.currentTop===null)G(this);if(typeof T=='function'&&U._isLoaded){var V=this._.storedDialogs||(this._.storedDialogs={}),W=V[Q]||(V[Q]=new a.dialog(this,Q));R&&R.call(W,W);W.show();return W;}else if(T=='failed'){H();throw new Error('[CKEDITOR.dialog.openDialog] Dialog "'+Q+'" failed when loading definition.');}var X=this;function Y(aa){var ab=a.dialog._.dialogDefinitions[Q],ac=X.skin.dialog;if(!ac._isLoaded||Z&&typeof aa=='undefined')return;if(typeof ab!='function')a.dialog._.dialogDefinitions[Q]='failed';X.openDialog(Q,R);};if(typeof T=='string'){var Z=1;a.scriptLoader.load(a.getUrl(T),Y,null,0,1);}a.skins.load(this,'dialog',Y);return null;}});})();j.add('dialog',{requires:['dialogui']});j.add('styles',{requires:['selection'],init:function(m){m.on('contentDom',function(){m.document.setCustomData('cke_includeReadonly',!m.config.disableReadonlyStyling);});}});a.editor.prototype.attachStyleStateChange=function(m,n){var o=this._.styleStateChangeCallbacks;if(!o){o=this._.styleStateChangeCallbacks=[];this.on('selectionChange',function(p){for(var q=0;q<o.length;q++){var r=o[q],s=r.style.checkActive(p.data.path)?1:2;r.fn.call(this,s);}});}o.push({style:m,fn:n});};a.STYLE_BLOCK=1;a.STYLE_INLINE=2;a.STYLE_OBJECT=3;(function(){var m={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},n={a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},o=/\s*(?:;\s*|$)/,p=/#\((.+?)\)/g,q=d.walker.bookmark(0,1),r=d.walker.whitespaces(1);
+a.style=function(T,U){var W=this;if(U){T=e.clone(T);L(T.attributes,U);L(T.styles,U);}var V=W.element=T.element?typeof T.element=='string'?T.element.toLowerCase():T.element:'*';W.type=m[V]?1:n[V]?3:2;if(typeof W.element=='object')W.type=3;W._={definition:T};};a.style.prototype={apply:function(T){S.call(this,T,false);},remove:function(T){S.call(this,T,true);},applyToRange:function(T){var U=this;return(U.applyToRange=U.type==2?t:U.type==1?x:U.type==3?v:null).call(U,T);},removeFromRange:function(T){var U=this;return(U.removeFromRange=U.type==2?u:U.type==1?y:U.type==3?w:null).call(U,T);},applyToObject:function(T){K(T,this);},checkActive:function(T){var Y=this;switch(Y.type){case 1:return Y.checkElementRemovable(T.block||T.blockLimit,true);case 3:case 2:var U=T.elements;for(var V=0,W;V<U.length;V++){W=U[V];if(Y.type==2&&(W==T.block||W==T.blockLimit))continue;if(Y.type==3){var X=W.getName();if(!(typeof Y.element=='string'?X==Y.element:X in Y.element))continue;}if(Y.checkElementRemovable(W,true))return true;}}return false;},checkApplicable:function(T){switch(this.type){case 2:case 1:break;case 3:return T.lastElement.getAscendant(this.element,true);}return true;},checkElementMatch:function(T,U){var aa=this;var V=aa._.definition;if(!T||!V.ignoreReadonly&&T.isReadOnly())return false;var W,X=T.getName();if(typeof aa.element=='string'?X==aa.element:X in aa.element){if(!U&&!T.hasAttributes())return true;W=M(V);if(W._length){for(var Y in W){if(Y=='_length')continue;var Z=T.getAttribute(Y)||'';if(Y=='style'?R(W[Y],P(Z,false)):W[Y]==Z){if(!U)return true;}else if(U)return false;}if(U)return true;}else return true;}return false;},checkElementRemovable:function(T,U){if(this.checkElementMatch(T,U))return true;var V=N(this)[T.getName()];if(V){var W,X;if(!(W=V.attributes))return true;for(var Y=0;Y<W.length;Y++){X=W[Y][0];var Z=T.getAttribute(X);if(Z){var aa=W[Y][1];if(aa===null||typeof aa=='string'&&Z==aa||aa.test(Z))return true;}}}return false;},buildPreview:function(T){var U=this._.definition,V=[],W=U.element;if(W=='bdo')W='span';V=['<',W];var X=U.attributes;if(X)for(var Y in X)V.push(' ',Y,'="',X[Y],'"');var Z=a.style.getStyleText(U);if(Z)V.push(' style="',Z,'"');V.push('>',T||U.name,'</',W,'>');return V.join('');}};a.style.getStyleText=function(T){var U=T._ST;if(U)return U;U=T.styles;var V=T.attributes&&T.attributes.style||'',W='';if(V.length)V=V.replace(o,';');for(var X in U){var Y=U[X],Z=(X+':'+Y).replace(o,';');if(Y=='inherit')W+=Z;else V+=Z;}if(V.length)V=P(V);V+=W;return T._ST=V;
+};function s(T){var U,V;while(T=T.getParent()){if(T.getName()=='body')break;if(T.getAttribute('data-nostyle'))U=T;else if(!V){var W=T.getAttribute('contentEditable');if(W=='false')U=T;else if(W=='true')V=1;}}return U;};function t(T){var ay=this;var U=T.document;if(T.collapsed){var V=J(ay,U);T.insertNode(V);T.moveToPosition(V,2);return;}var W=ay.element,X=ay._.definition,Y,Z=X.ignoreReadonly,aa=Z||X.includeReadonly;if(aa==undefined)aa=U.getCustomData('cke_includeReadonly');var ab=f[W]||(Y=true,f.span);T.enlarge(1,1);T.trim();var ac=T.createBookmark(),ad=ac.startNode,ae=ac.endNode,af=ad,ag;if(!Z){var ah=s(ad),ai=s(ae);if(ah)af=ah.getNextSourceNode(true);if(ai)ae=ai;}if(af.getPosition(ae)==2)af=0;while(af){var aj=false;if(af.equals(ae)){af=null;aj=true;}else{var ak=af.type,al=ak==1?af.getName():null,am=al&&af.getAttribute('contentEditable')=='false',an=al&&af.getAttribute('data-nostyle');if(al&&af.data('cke-bookmark')){af=af.getNextSourceNode(true);continue;}if(!al||ab[al]&&!an&&(!am||aa)&&(af.getPosition(ae)|4|0|8)==4+0+8&&(!X.childRule||X.childRule(af))){var ao=af.getParent();if(ao&&((ao.getDtd()||f.span)[W]||Y)&&(!X.parentRule||X.parentRule(ao))){if(!ag&&(!al||!f.$removeEmpty[al]||(af.getPosition(ae)|4|0|8)==4+0+8)){ag=new d.range(U);ag.setStartBefore(af);}if(ak==3||am||ak==1&&!af.getChildCount()){var ap=af,aq;while((aj=!ap.getNext(q))&&(aq=ap.getParent(),ab[aq.getName()])&&(aq.getPosition(ad)|2|0|8)==2+0+8&&(!X.childRule||X.childRule(aq)))ap=aq;ag.setEndAfter(ap);}}else aj=true;}else aj=true;af=af.getNextSourceNode(an||am);}if(aj&&ag&&!ag.collapsed){var ar=J(ay,U),as=ar.hasAttributes(),at=ag.getCommonAncestor(),au={styles:{},attrs:{},blockedStyles:{},blockedAttrs:{}},av,aw,ax;while(ar&&at){if(at.getName()==W){for(av in X.attributes){if(au.blockedAttrs[av]||!(ax=at.getAttribute(aw)))continue;if(ar.getAttribute(av)==ax)au.attrs[av]=1;else au.blockedAttrs[av]=1;}for(aw in X.styles){if(au.blockedStyles[aw]||!(ax=at.getStyle(aw)))continue;if(ar.getStyle(aw)==ax)au.styles[aw]=1;else au.blockedStyles[aw]=1;}}at=at.getParent();}for(av in au.attrs)ar.removeAttribute(av);for(aw in au.styles)ar.removeStyle(aw);if(as&&!ar.hasAttributes())ar=null;if(ar){ag.extractContents().appendTo(ar);G(ay,ar);ag.insertNode(ar);ar.mergeSiblings();if(!c)ar.$.normalize();}else{ar=new h('span');ag.extractContents().appendTo(ar);ag.insertNode(ar);G(ay,ar);ar.remove(true);}ag=null;}}T.moveToBookmark(ac);T.shrink(2);};function u(T){T.enlarge(1,1);var U=T.createBookmark(),V=U.startNode;if(T.collapsed){var W=new d.elementPath(V.getParent()),X;
+for(var Y=0,Z;Y<W.elements.length&&(Z=W.elements[Y]);Y++){if(Z==W.block||Z==W.blockLimit)break;if(this.checkElementRemovable(Z)){var aa;if(T.collapsed&&(T.checkBoundaryOfElement(Z,2)||(aa=T.checkBoundaryOfElement(Z,1)))){X=Z;X.match=aa?'start':'end';}else{Z.mergeSiblings();if(Z.getName()==this.element)F(this,Z);else H(Z,N(this)[Z.getName()]);}}}if(X){var ab=V;for(Y=0;true;Y++){var ac=W.elements[Y];if(ac.equals(X))break;else if(ac.match)continue;else ac=ac.clone();ac.append(ab);ab=ac;}ab[X.match=='start'?'insertBefore':'insertAfter'](X);}}else{var ad=U.endNode,ae=this;function af(){var ai=new d.elementPath(V.getParent()),aj=new d.elementPath(ad.getParent()),ak=null,al=null;for(var am=0;am<ai.elements.length;am++){var an=ai.elements[am];if(an==ai.block||an==ai.blockLimit)break;if(ae.checkElementRemovable(an))ak=an;}for(am=0;am<aj.elements.length;am++){an=aj.elements[am];if(an==aj.block||an==aj.blockLimit)break;if(ae.checkElementRemovable(an))al=an;}if(al)ad.breakParent(al);if(ak)V.breakParent(ak);};af();var ag=V;while(!ag.equals(ad)){var ah=ag.getNextSourceNode();if(ag.type==1&&this.checkElementRemovable(ag)){if(ag.getName()==this.element)F(this,ag);else H(ag,N(this)[ag.getName()]);if(ah.type==1&&ah.contains(V)){af();ah=V.getNext();}}ag=ah;}}T.moveToBookmark(U);};function v(T){var U=T.getCommonAncestor(true,true),V=U.getAscendant(this.element,true);V&&!V.isReadOnly()&&K(V,this);};function w(T){var U=T.getCommonAncestor(true,true),V=U.getAscendant(this.element,true);if(!V)return;var W=this,X=W._.definition,Y=X.attributes;if(Y)for(var Z in Y)V.removeAttribute(Z,Y[Z]);if(X.styles)for(var aa in X.styles){if(!X.styles.hasOwnProperty(aa))continue;V.removeStyle(aa);}};function x(T){var U=T.createBookmark(true),V=T.createIterator();V.enforceRealBlocks=true;if(this._.enterMode)V.enlargeBr=this._.enterMode!=2;var W,X=T.document,Y;while(W=V.getNextParagraph()){if(!W.isReadOnly()){var Z=J(this,X,W);z(W,Z);}}T.moveToBookmark(U);};function y(T){var Y=this;var U=T.createBookmark(1),V=T.createIterator();V.enforceRealBlocks=true;V.enlargeBr=Y._.enterMode!=2;var W;while(W=V.getNextParagraph()){if(Y.checkElementRemovable(W))if(W.is('pre')){var X=Y._.enterMode==2?null:T.document.createElement(Y._.enterMode==1?'p':'div');X&&W.copyAttributes(X);z(W,X);}else F(Y,W,1);}T.moveToBookmark(U);};function z(T,U){var V=!U;if(V){U=T.getDocument().createElement('div');T.copyAttributes(U);}var W=U&&U.is('pre'),X=T.is('pre'),Y=W&&!X,Z=!W&&X;if(Y)U=E(T,U);else if(Z)U=D(V?[T.getHtml()]:B(T),U);else T.moveChildren(U);
+U.replace(T);if(W)A(U);else if(V)I(U);};function A(T){var U;if(!((U=T.getPrevious(r))&&U.is&&U.is('pre')))return;var V=C(U.getHtml(),/\n$/,'')+'\n\n'+C(T.getHtml(),/^\n/,'');if(c)T.$.outerHTML='<pre>'+V+'</pre>';else T.setHtml(V);U.remove();};function B(T){var U=/(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,V=T.getName(),W=C(T.getOuterHtml(),U,function(Y,Z,aa){return Z+'</pre>'+aa+'<pre>';}),X=[];W.replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi,function(Y,Z){X.push(Z);});return X;};function C(T,U,V){var W='',X='';T=T.replace(/(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi,function(Y,Z,aa){Z&&(W=Z);aa&&(X=aa);return '';});return W+T.replace(U,V)+X;};function D(T,U){var V;if(T.length>1)V=new d.documentFragment(U.getDocument());for(var W=0;W<T.length;W++){var X=T[W];X=X.replace(/(\r\n|\r)/g,'\n');X=C(X,/^[ \t]*\n/,'');X=C(X,/\n$/,'');X=C(X,/^[ \t]+|[ \t]+$/g,function(Z,aa,ab){if(Z.length==1)return ' ';else if(!aa)return e.repeat(' ',Z.length-1)+' ';else return ' '+e.repeat(' ',Z.length-1);});X=X.replace(/\n/g,'<br>');X=X.replace(/[ \t]{2,}/g,function(Z){return e.repeat(' ',Z.length-1)+' ';});if(V){var Y=U.clone();Y.setHtml(X);V.append(Y);}else U.setHtml(X);}return V||U;};function E(T,U){var V=T.getBogus();V&&V.remove();var W=T.getHtml();W=C(W,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,'');W=W.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'$1');W=W.replace(/([ \t\n\r]+| )/g,' ');W=W.replace(/<br\b[^>]*>/gi,'\n');if(c){var X=T.getDocument().createElement('div');X.append(U);U.$.outerHTML='<pre>'+W+'</pre>';U.copyAttributes(X.getFirst());U=X.getFirst().remove();}else U.setHtml(W);return U;};function F(T,U){var V=T._.definition,W=V.attributes,X=V.styles,Y=N(T)[U.getName()],Z=e.isEmpty(W)&&e.isEmpty(X);for(var aa in W){if((aa=='class'||T._.definition.fullMatch)&&U.getAttribute(aa)!=O(aa,W[aa]))continue;Z=U.hasAttribute(aa);U.removeAttribute(aa);}for(var ab in X){if(T._.definition.fullMatch&&U.getStyle(ab)!=O(ab,X[ab],true))continue;Z=Z||!!U.getStyle(ab);U.removeStyle(ab);}H(U,Y,m[U.getName()]);if(Z)!f.$block[U.getName()]||T._.enterMode==2&&!U.hasAttributes()?I(U):U.renameNode(T._.enterMode==1?'p':'div');};function G(T,U){var V=T._.definition,W=V.attributes,X=V.styles,Y=N(T),Z=U.getElementsByTag(T.element);for(var aa=Z.count();--aa>=0;)F(T,Z.getItem(aa));for(var ab in Y){if(ab!=T.element){Z=U.getElementsByTag(ab);for(aa=Z.count()-1;aa>=0;aa--){var ac=Z.getItem(aa);H(ac,Y[ab]);}}}};function H(T,U,V){var W=U&&U.attributes;
+if(W)for(var X=0;X<W.length;X++){var Y=W[X][0],Z;if(Z=T.getAttribute(Y)){var aa=W[X][1];if(aa===null||aa.test&&aa.test(Z)||typeof aa=='string'&&Z==aa)T.removeAttribute(Y);}}if(!V)I(T);};function I(T){if(!T.hasAttributes())if(f.$block[T.getName()]){var U=T.getPrevious(r),V=T.getNext(r);if(U&&(U.type==3||!U.isBlockBoundary({br:1})))T.append('br',1);if(V&&(V.type==3||!V.isBlockBoundary({br:1})))T.append('br');T.remove(true);}else{var W=T.getFirst(),X=T.getLast();T.remove(true);if(W){W.type==1&&W.mergeSiblings();if(X&&!W.equals(X)&&X.type==1)X.mergeSiblings();}}};function J(T,U,V){var W,X=T._.definition,Y=T.element;if(Y=='*')Y='span';W=new h(Y,U);if(V)V.copyAttributes(W);W=K(W,T);if(U.getCustomData('doc_processing_style')&&W.hasAttribute('id'))W.removeAttribute('id');else U.setCustomData('doc_processing_style',1);return W;};function K(T,U){var V=U._.definition,W=V.attributes,X=a.style.getStyleText(V);if(W)for(var Y in W)T.setAttribute(Y,W[Y]);if(X)T.setAttribute('style',X);return T;};function L(T,U){for(var V in T)T[V]=T[V].replace(p,function(W,X){return U[X];});};function M(T){var U=T._AC;if(U)return U;U={};var V=0,W=T.attributes;if(W)for(var X in W){V++;U[X]=W[X];}var Y=a.style.getStyleText(T);if(Y){if(!U.style)V++;U.style=Y;}U._length=V;return T._AC=U;};function N(T){if(T._.overrides)return T._.overrides;var U=T._.overrides={},V=T._.definition.overrides;if(V){if(!e.isArray(V))V=[V];for(var W=0;W<V.length;W++){var X=V[W],Y,Z,aa;if(typeof X=='string')Y=X.toLowerCase();else{Y=X.element?X.element.toLowerCase():T.element;aa=X.attributes;}Z=U[Y]||(U[Y]={});if(aa){var ab=Z.attributes=Z.attributes||[];for(var ac in aa)ab.push([ac.toLowerCase(),aa[ac]]);}}}return U;};function O(T,U,V){var W=new h('span');W[V?'setStyle':'setAttribute'](T,U);return W[V?'getStyle':'getAttribute'](T);};function P(T,U){var V;if(U!==false){var W=new h('span');W.setAttribute('style',T);V=W.getAttribute('style')||'';}else V=T;V=V.replace(/(font-family:)(.*?)(?=;|$)/,function(X,Y,Z){var aa=Z.split(',');for(var ab=0;ab<aa.length;ab++)aa[ab]=e.trim(aa[ab].replace(/["']/g,''));return Y+aa.join(',');});return V.replace(/\s*([;:])\s*/,'$1').replace(/([^\s;])$/,'$1;').replace(/,\s+/g,',').replace(/\"/g,'').toLowerCase();};function Q(T){var U={};T.replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(V,W,X){U[W]=X;});return U;};function R(T,U){typeof T=='string'&&(T=Q(T));typeof U=='string'&&(U=Q(U));for(var V in T){if(!(V in U&&(U[V]==T[V]||T[V]=='inherit'||U[V]=='inherit')))return false;
+}return true;};function S(T,U){var V=T.getSelection(),W=V.createBookmarks(1),X=V.getRanges(),Y=U?this.removeFromRange:this.applyToRange,Z,aa=X.createIterator();while(Z=aa.getNextRange())Y.call(this,Z);if(W.length==1&&W[0].collapsed){V.selectRanges(X);T.getById(W[0].startNode).remove();}else V.selectBookmarks(W);T.removeCustomData('doc_processing_style');};})();a.styleCommand=function(m){this.style=m;};a.styleCommand.prototype.exec=function(m){var o=this;m.focus();var n=m.document;if(n)if(o.state==2)o.style.apply(n);else if(o.state==1)o.style.remove(n);return!!n;};a.stylesSet=new a.resourceManager('','stylesSet');a.addStylesSet=e.bind(a.stylesSet.add,a.stylesSet);a.loadStylesSet=function(m,n,o){a.stylesSet.addExternal(m,n,'');a.stylesSet.load(m,o);};a.editor.prototype.getStylesSet=function(m){if(!this._.stylesDefinitions){var n=this,o=n.config.stylesCombo_stylesSet||n.config.stylesSet||'default';if(o instanceof Array){n._.stylesDefinitions=o;m(o);return;}var p=o.split(':'),q=p[0],r=p[1],s=j.registered.styles.path;a.stylesSet.addExternal(q,r?p.slice(1).join(':'):s+'styles/'+q+'.js','');a.stylesSet.load(q,function(t){n._.stylesDefinitions=t[q];m(n._.stylesDefinitions);});}else m(this._.stylesDefinitions);};j.add('domiterator');(function(){function m(s){var t=this;if(arguments.length<1)return;t.range=s;t.forceBrBreak=0;t.enlargeBr=1;t.enforceRealBlocks=0;t._||(t._={});};var n=/^[\r\n\t ]+$/,o=d.walker.bookmark(false,true),p=d.walker.whitespaces(true),q=function(s){return o(s)&&p(s);};function r(s,t,u){var v=s.getNextSourceNode(t,null,u);while(!o(v))v=v.getNextSourceNode(t,null,u);return v;};m.prototype={getNextParagraph:function(s){var S=this;var t,u,v,w,x,y;if(!S._.started){u=S.range.clone();u.shrink(1,true);w=u.endContainer.hasAscendant('pre',true)||u.startContainer.hasAscendant('pre',true);u.enlarge(S.forceBrBreak&&!w||!S.enlargeBr?3:2);if(!u.collapsed){var z=new d.walker(u.clone()),A=d.walker.bookmark(true,true);z.evaluator=A;S._.nextNode=z.next();z=new d.walker(u.clone());z.evaluator=A;var B=z.previous();S._.lastNode=B.getNextSourceNode(true);if(S._.lastNode&&S._.lastNode.type==3&&!e.trim(S._.lastNode.getText())&&S._.lastNode.getParent().isBlockBoundary()){var C=new d.range(u.document);C.moveToPosition(S._.lastNode,4);if(C.checkEndOfBlock()){var D=new d.elementPath(C.endContainer),E=D.block||D.blockLimit;S._.lastNode=E.getNextSourceNode(true);}}if(!S._.lastNode){S._.lastNode=S._.docEndMarker=u.document.createText('');S._.lastNode.insertAfter(B);}u=null;}S._.started=1;
+}var F=S._.nextNode;B=S._.lastNode;S._.nextNode=null;while(F){var G=0,H=F.hasAscendant('pre'),I=F.type!=1,J=0;if(!I){var K=F.getName();if(F.isBlockBoundary(S.forceBrBreak&&!H&&{br:1})){if(K=='br')I=1;else if(!u&&!F.getChildCount()&&K!='hr'){t=F;v=F.equals(B);break;}if(u){u.setEndAt(F,3);if(K!='br')S._.nextNode=F;}G=1;}else{if(F.getFirst()){if(!u){u=new d.range(S.range.document);u.setStartAt(F,3);}F=F.getFirst();continue;}I=1;}}else if(F.type==3)if(n.test(F.getText()))I=0;if(I&&!u){u=new d.range(S.range.document);u.setStartAt(F,3);}v=(!G||I)&&F.equals(B);if(u&&!G)while(!F.getNext(q)&&!v){var L=F.getParent();if(L.isBlockBoundary(S.forceBrBreak&&!H&&{br:1})){G=1;I=0;v=v||L.equals(B);u.setEndAt(L,2);break;}F=L;I=1;v=F.equals(B);J=1;}if(I)u.setEndAt(F,4);F=r(F,J,B);v=!F;if(v||G&&u)break;}if(!t){if(!u){S._.docEndMarker&&S._.docEndMarker.remove();S._.nextNode=null;return null;}var M=new d.elementPath(u.startContainer),N=M.blockLimit,O={div:1,th:1,td:1};t=M.block;if(!t&&!S.enforceRealBlocks&&O[N.getName()]&&u.checkStartOfBlock()&&u.checkEndOfBlock())t=N;else if(!t||S.enforceRealBlocks&&t.getName()=='li'){t=S.range.document.createElement(s||'p');u.extractContents().appendTo(t);t.trim();u.insertNode(t);x=y=true;}else if(t.getName()!='li'){if(!u.checkStartOfBlock()||!u.checkEndOfBlock()){t=t.clone(false);u.extractContents().appendTo(t);t.trim();var P=u.splitBlock();x=!P.wasStartOfBlock;y=!P.wasEndOfBlock;u.insertNode(t);}}else if(!v)S._.nextNode=t.equals(B)?null:r(u.getBoundaryNodes().endNode,1,B);}if(x){var Q=t.getPrevious();if(Q&&Q.type==1)if(Q.getName()=='br')Q.remove();else if(Q.getLast()&&Q.getLast().$.nodeName.toLowerCase()=='br')Q.getLast().remove();}if(y){var R=t.getLast();if(R&&R.type==1&&R.getName()=='br')if(c||R.getPrevious(o)||R.getNext(o))R.remove();}if(!S._.nextNode)S._.nextNode=v||t.equals(B)||!B?null:r(t,1,B);return t;}};d.range.prototype.createIterator=function(){return new m(this);};})();j.add('panelbutton',{requires:['button'],onLoad:function(){function m(n){var p=this;var o=p._;if(o.state==0)return;p.createPanel(n);if(o.on){o.panel.hide();return;}o.panel.showBlock(p._.id,p.document.getById(p._.id),4);};k.panelButton=e.createClass({base:k.button,$:function(n){var p=this;var o=n.panel;delete n.panel;p.base(n);p.document=o&&o.parent&&o.parent.getDocument()||a.document;o.block={attributes:o.attributes};p.hasArrow=true;p.click=m;p._={panelDefinition:o};},statics:{handler:{create:function(n){return new k.panelButton(n);}}},proto:{createPanel:function(n){var o=this._;
+if(o.panel)return;var p=this._.panelDefinition||{},q=this._.panelDefinition.block,r=p.parent||a.document.getBody(),s=this._.panel=new k.floatPanel(n,r,p),t=s.addBlock(o.id,q),u=this;s.onShow=function(){if(u.className)this.element.getFirst().addClass(u.className+'_panel');u.setState(1);o.on=1;if(u.onOpen)u.onOpen();};s.onHide=function(v){if(u.className)this.element.getFirst().removeClass(u.className+'_panel');u.setState(u.modes&&u.modes[n.mode]?2:0);o.on=0;if(!v&&u.onClose)u.onClose();};s.onEscape=function(){s.hide();u.document.getById(o.id).focus();};if(this.onBlock)this.onBlock(s,t);t.onHide=function(){o.on=0;u.setState(2);};}}});},beforeInit:function(m){m.ui.addHandler('panelbutton',k.panelButton.handler);}});a.UI_PANELBUTTON='panelbutton';j.add('floatpanel',{requires:['panel']});(function(){var m={},n=false;function o(p,q,r,s,t){var u=e.genKey(q.getUniqueId(),r.getUniqueId(),p.skinName,p.lang.dir,p.uiColor||'',s.css||'',t||''),v=m[u];if(!v){v=m[u]=new k.panel(q,s);v.element=r.append(h.createFromHtml(v.renderHtml(p),q));v.element.setStyles({display:'none',position:'absolute'});}return v;};k.floatPanel=e.createClass({$:function(p,q,r,s){r.forceIFrame=1;var t=q.getDocument(),u=o(p,t,q,r,s||0),v=u.element,w=v.getFirst().getFirst();v.disableContextMenu();this.element=v;this._={editor:p,panel:u,parentElement:q,definition:r,document:t,iframe:w,children:[],dir:p.lang.dir};p.on('mode',function(){this.hide();},this);},proto:{addBlock:function(p,q){return this._.panel.addBlock(p,q);},addListBlock:function(p,q){return this._.panel.addListBlock(p,q);},getBlock:function(p){return this._.panel.getBlock(p);},showBlock:function(p,q,r,s,t){var u=this._.panel,v=u.showBlock(p);this.allowBlur(false);n=1;this._.returnFocus=this._.editor.focusManager.hasFocus?this._.editor:new h(a.document.$.activeElement);var w=this.element,x=this._.iframe,y=this._.definition,z=q.getDocumentPosition(w.getDocument()),A=this._.dir=='rtl',B=z.x+(s||0),C=z.y+(t||0);if(A&&(r==1||r==4))B+=q.$.offsetWidth;else if(!A&&(r==2||r==3))B+=q.$.offsetWidth-1;if(r==3||r==4)C+=q.$.offsetHeight-1;this._.panel._.offsetParentId=q.getId();w.setStyles({top:C+'px',left:0,display:''});w.setOpacity(0);w.getFirst().removeStyle('width');if(!this._.blurSet){var D=c?x:new d.window(x.$.contentWindow);a.event.useCapture=true;D.on('blur',function(E){var G=this;if(!G.allowBlur())return;var F=E.data.getTarget();if(F.getName&&F.getName()!='iframe')return;if(G.visible&&!G._.activeChild&&!n){delete G._.returnFocus;G.hide();}},this);
+D.on('focus',function(){this._.focused=true;this.hideChild();this.allowBlur(true);},this);a.event.useCapture=false;this._.blurSet=1;}u.onEscape=e.bind(function(E){if(this.onEscape&&this.onEscape(E)===false)return false;},this);e.setTimeout(function(){var E=e.bind(function(){var F=w.getFirst();if(v.autoSize){var G=v.element.$;if(b.gecko||b.opera)G=G.parentNode;if(c)G=G.document.body;var H=G.scrollWidth;if(c&&b.quirks&&H>0)H+=(F.$.offsetWidth||0)-(F.$.clientWidth||0)+3;H+=4;F.setStyle('width',H+'px');v.element.addClass('cke_frameLoaded');var I=v.element.$.scrollHeight;if(c&&b.quirks&&I>0)I+=(F.$.offsetHeight||0)-(F.$.clientHeight||0)+3;F.setStyle('height',I+'px');u._.currentBlock.element.setStyle('display','none').removeStyle('display');}else F.removeStyle('height');if(A)B-=w.$.offsetWidth;w.setStyle('left',B+'px');var J=u.element,K=J.getWindow(),L=w.$.getBoundingClientRect(),M=K.getViewPaneSize(),N=L.width||L.right-L.left,O=L.height||L.bottom-L.top,P=A?L.right:M.width-L.left,Q=A?M.width-L.right:L.left;if(A){if(P<N)if(Q>N)B+=N;else if(M.width>N)B-=L.left;else B=B-L.right+M.width;}else if(P<N)if(Q>N)B-=N;else if(M.width>N)B=B-L.right+M.width;else B-=L.left;var R=M.height-L.top,S=L.top;if(R<O)if(S>O)C-=O;else if(M.height>O)C=C-L.bottom+M.height;else C-=L.top;if(c){var T=new h(w.$.offsetParent),U=T;if(U.getName()=='html')U=U.getDocument().getBody();if(U.getComputedStyle('direction')=='rtl')if(b.ie8Compat)B-=w.getDocument().getDocumentElement().$.scrollLeft*2;else B-=T.$.scrollWidth-T.$.clientWidth;}var V=w.getFirst(),W;if(W=V.getCustomData('activePanel'))W.onHide&&W.onHide.call(this,1);V.setCustomData('activePanel',this);w.setStyles({top:C+'px',left:B+'px'});w.setOpacity(1);},this);u.isLoaded?E():u.onLoad=E;e.setTimeout(function(){x.$.contentWindow.focus();this.allowBlur(true);},0,this);},b.air?200:0,this);this.visible=1;if(this.onShow)this.onShow.call(this);n=0;},hide:function(p){var r=this;if(r.visible&&(!r.onHide||r.onHide.call(r)!==true)){r.hideChild();b.gecko&&r._.iframe.getFrameDocument().$.activeElement.blur();r.element.setStyle('display','none');r.visible=0;r.element.getFirst().removeCustomData('activePanel');var q=p!==false&&r._.returnFocus;if(q){if(b.webkit&&q.type)q.getWindow().$.focus();q.focus();}}},allowBlur:function(p){var q=this._.panel;if(p!=undefined)q.allowBlur=p;return q.allowBlur;},showAsChild:function(p,q,r,s,t,u){if(this._.activeChild==p&&p._.panel._.offsetParentId==r.getId())return;this.hideChild();p.onHide=e.bind(function(){e.setTimeout(function(){if(!this._.focused)this.hide();
+},0,this);},this);this._.activeChild=p;this._.focused=false;p.showBlock(q,r,s,t,u);if(b.ie7Compat||b.ie8&&b.ie6Compat)setTimeout(function(){p.element.getChild(0).$.style.cssText+='';},100);},hideChild:function(){var p=this._.activeChild;if(p){delete p.onHide;delete p._.returnFocus;delete this._.activeChild;p.hide();}}}});a.on('instanceDestroyed',function(){var p=e.isEmpty(a.instances);for(var q in m){var r=m[q];if(p)r.destroy();else r.element.hide();}p&&(m={});});})();j.add('menu',{beforeInit:function(m){var n=m.config.menu_groups.split(','),o=m._.menuGroups={},p=m._.menuItems={};for(var q=0;q<n.length;q++)o[n[q]]=q+1;m.addMenuGroup=function(r,s){o[r]=s||100;};m.addMenuItem=function(r,s){if(o[s.group])p[r]=new a.menuItem(this,r,s);};m.addMenuItems=function(r){for(var s in r)this.addMenuItem(s,r[s]);};m.getMenuItem=function(r){return p[r];};m.removeMenuItem=function(r){delete p[r];};},requires:['floatpanel']});(function(){a.menu=e.createClass({$:function(n,o){var r=this;o=r._.definition=o||{};r.id=e.getNextId();r.editor=n;r.items=[];r._.listeners=[];r._.level=o.level||1;var p=e.extend({},o.panel,{css:n.skin.editor.css,level:r._.level-1,block:{}}),q=p.block.attributes=p.attributes||{};!q.role&&(q.role='menu');r._.panelDefinition=p;},_:{onShow:function(){var v=this;var n=v.editor.getSelection();if(c)n&&n.lock();var o=n&&n.getStartElement(),p=v._.listeners,q=[];v.removeAll();for(var r=0;r<p.length;r++){var s=p[r](o,n);if(s)for(var t in s){var u=v.editor.getMenuItem(t);if(u&&(!u.command||v.editor.getCommand(u.command).state)){u.state=s[t];v.add(u);}}}},onClick:function(n){this.hide(false);if(n.onClick)n.onClick();else if(n.command)this.editor.execCommand(n.command);},onEscape:function(n){var o=this.parent;if(o){o._.panel.hideChild();var p=o._.panel._.panel._.currentBlock,q=p._.focusIndex;p._.markItem(q);}else if(n==27)this.hide();return false;},onHide:function(){var o=this;if(c&&!o.parent){var n=o.editor.getSelection();n&&n.unlock(true);}o.onHide&&o.onHide();},showSubMenu:function(n){var v=this;var o=v._.subMenu,p=v.items[n],q=p.getItems&&p.getItems();if(!q){v._.panel.hideChild();return;}var r=v._.panel.getBlock(v.id);r._.focusIndex=n;if(o)o.removeAll();else{o=v._.subMenu=new a.menu(v.editor,e.extend({},v._.definition,{level:v._.level+1},true));o.parent=v;o._.onClick=e.bind(v._.onClick,v);}for(var s in q){var t=v.editor.getMenuItem(s);if(t){t.state=q[s];o.add(t);}}var u=v._.panel.getBlock(v.id).element.getDocument().getById(v.id+String(n));o.show(u,2);}},proto:{add:function(n){if(!n.order)n.order=this.items.length;
+this.items.push(n);},removeAll:function(){this.items=[];},show:function(n,o,p,q){if(!this.parent){this._.onShow();if(!this.items.length)return;}o=o||(this.editor.lang.dir=='rtl'?2:1);var r=this.items,s=this.editor,t=this._.panel,u=this._.element;if(!t){t=this._.panel=new k.floatPanel(this.editor,a.document.getBody(),this._.panelDefinition,this._.level);t.onEscape=e.bind(function(F){if(this._.onEscape(F)===false)return false;},this);t.onHide=e.bind(function(){this._.onHide&&this._.onHide();},this);var v=t.addBlock(this.id,this._.panelDefinition.block);v.autoSize=true;var w=v.keys;w[40]='next';w[9]='next';w[38]='prev';w[2228224+9]='prev';w[s.lang.dir=='rtl'?37:39]=c?'mouseup':'click';w[32]=c?'mouseup':'click';c&&(w[13]='mouseup');u=this._.element=v.element;u.addClass(s.skinClass);var x=u.getDocument();x.getBody().setStyle('overflow','hidden');x.getElementsByTag('html').getItem(0).setStyle('overflow','hidden');this._.itemOverFn=e.addFunction(function(F){var G=this;clearTimeout(G._.showSubTimeout);G._.showSubTimeout=e.setTimeout(G._.showSubMenu,s.config.menu_subMenuDelay||400,G,[F]);},this);this._.itemOutFn=e.addFunction(function(F){clearTimeout(this._.showSubTimeout);},this);this._.itemClickFn=e.addFunction(function(F){var H=this;var G=H.items[F];if(G.state==0){H.hide();return;}if(G.getItems)H._.showSubMenu(F);else H._.onClick(G);},this);}m(r);var y=s.container.getChild(1),z=y.hasClass('cke_mixed_dir_content')?' cke_mixed_dir_content':'',A=['<div class="cke_menu'+z+'" role="presentation">'],B=r.length,C=B&&r[0].group;for(var D=0;D<B;D++){var E=r[D];if(C!=E.group){A.push('<div class="cke_menuseparator" role="separator"></div>');C=E.group;}E.render(this,D,A);}A.push('</div>');u.setHtml(A.join(''));k.fire('ready',this);if(this.parent)this.parent._.panel.showAsChild(t,this.id,n,o,p,q);else t.showBlock(this.id,n,o,p,q);s.fire('menuShow',[t]);},addListener:function(n){this._.listeners.push(n);},hide:function(n){var o=this;o._.onHide&&o._.onHide();o._.panel&&o._.panel.hide(n);}}});function m(n){n.sort(function(o,p){if(o.group<p.group)return-1;else if(o.group>p.group)return 1;return o.order<p.order?-1:o.order>p.order?1:0;});};a.menuItem=e.createClass({$:function(n,o,p){var q=this;e.extend(q,p,{order:0,className:'cke_button_'+o});q.group=n._.menuGroups[q.group];q.editor=n;q.name=o;},proto:{render:function(n,o,p){var w=this;var q=n.id+String(o),r=typeof w.state=='undefined'?2:w.state,s=' cke_'+(r==1?'on':r==0?'disabled':'off'),t=w.label;if(w.className)s+=' '+w.className;
+var u=w.getItems;p.push('<span class="cke_menuitem'+(w.icon&&w.icon.indexOf('.png')==-1?' cke_noalphafix':'')+'">'+'<a id="',q,'" class="',s,'" href="javascript:void(\'',(w.label||'').replace("'",''),'\')" title="',w.label,'" tabindex="-1"_cke_focus=1 hidefocus="true" role="menuitem"'+(u?'aria-haspopup="true"':'')+(r==0?'aria-disabled="true"':'')+(r==1?'aria-pressed="true"':''));if(b.opera||b.gecko&&b.mac)p.push(' onkeypress="return false;"');if(b.gecko)p.push(' onblur="this.style.cssText = this.style.cssText;"');var v=(w.iconOffset||0)*-16;p.push(' onmouseover="CKEDITOR.tools.callFunction(',n._.itemOverFn,',',o,');" onmouseout="CKEDITOR.tools.callFunction(',n._.itemOutFn,',',o,');" '+(c?'onclick="return false;" onmouseup':'onclick')+'="CKEDITOR.tools.callFunction(',n._.itemClickFn,',',o,'); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"'+(w.icon?' style="background-image:url('+a.getUrl(w.icon)+');background-position:0 '+v+'px;"':'')+'></span></span>'+'<span class="cke_label">');if(u)p.push('<span class="cke_menuarrow">','<span>&#',w.editor.lang.dir=='rtl'?'9668':'9658',';</span>','</span>');p.push(t,'</span></a></span>');}}});})();i.menu_groups='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div';(function(){var m;j.add('editingblock',{init:function(n){if(!n.config.editingBlock)return;n.on('themeSpace',function(o){if(o.data.space=='contents')o.data.html+='<br>';});n.on('themeLoaded',function(){n.fireOnce('editingBlockReady');});n.on('uiReady',function(){n.setMode(n.config.startupMode);});n.on('afterSetData',function(){if(!m){function o(){m=true;n.getMode().loadData(n.getData());m=false;};if(n.mode)o();else n.on('mode',function(){if(n.mode){o();n.removeListener('mode',arguments.callee);}});}});n.on('beforeGetData',function(){if(!m&&n.mode){m=true;n.setData(n.getMode().getData(),null,1);m=false;}});n.on('getSnapshot',function(o){if(n.mode)o.data=n.getMode().getSnapshotData();});n.on('loadSnapshot',function(o){if(n.mode)n.getMode().loadSnapshotData(o.data);});n.on('mode',function(o){o.removeListener();b.webkit&&n.container.on('focus',function(){n.focus();});if(n.config.startupFocus)n.focus();setTimeout(function(){n.fireOnce('instanceReady');a.fire('instanceReady',null,n);},0);});n.on('destroy',function(){var o=this;if(o.mode)o._.modes[o.mode].unload(o.getThemeSpace('contents'));});}});a.editor.prototype.mode='';a.editor.prototype.addMode=function(n,o){o.name=n;
+(this._.modes||(this._.modes={}))[n]=o;};a.editor.prototype.setMode=function(n){this.fire('beforeSetMode',{newMode:n});var o,p=this.getThemeSpace('contents'),q=this.checkDirty();if(this.mode){if(n==this.mode)return;this._.previousMode=this.mode;this.fire('beforeModeUnload');var r=this.getMode();o=r.getData();r.unload(p);this.mode='';}p.setHtml('');var s=this.getMode(n);if(!s)throw '[CKEDITOR.editor.setMode] Unknown mode "'+n+'".';if(!q)this.on('mode',function(){this.resetDirty();this.removeListener('mode',arguments.callee);});s.load(p,typeof o!='string'?this.getData():o);};a.editor.prototype.getMode=function(n){return this._.modes&&this._.modes[n||this.mode];};a.editor.prototype.focus=function(){this.forceNextSelectionCheck();var n=this.getMode();if(n)n.focus();};})();i.startupMode='wysiwyg';i.editingBlock=true;(function(){function m(){var C=this;try{var z=C.getSelection();if(!z||!z.document.getWindow().$)return;var A=z.getStartElement(),B=new d.elementPath(A);if(!B.compare(C._.selectionPreviousPath)){C._.selectionPreviousPath=B;C.fire('selectionChange',{selection:z,path:B,element:A});}}catch(D){}};var n,o;function p(){o=true;if(n)return;q.call(this);n=e.setTimeout(q,200,this);};function q(){n=null;if(o){e.setTimeout(m,0,this);o=false;}};function r(z){function A(E){return E&&E.type==1&&E.getName() in f.$removeEmpty;};function B(E){var F=z.document.getBody();return!E.is('body')&&F.getChildCount()==1;};var C=z.startContainer,D=z.startOffset;if(C.type==3)return false;return!e.trim(C.getHtml())?A(C)||B(C):A(C.getChild(D-1))||A(C.getChild(D));};var s={modes:{wysiwyg:1,source:1},readOnly:c||b.webkit,exec:function(z){switch(z.mode){case 'wysiwyg':z.document.$.execCommand('SelectAll',false,null);z.forceNextSelectionCheck();z.selectionChange();break;case 'source':var A=z.textarea.$;if(c)A.createTextRange().execCommand('SelectAll');else{A.selectionStart=0;A.selectionEnd=A.value.length;}A.focus();}},canUndo:false};function t(z){w(z);var A=z.createText('');z.setCustomData('cke-fillingChar',A);return A;};function u(z){return z&&z.getCustomData('cke-fillingChar');};function v(z){var A=z&&u(z);if(A)if(A.getCustomData('ready'))w(z);else A.setCustomData('ready',1);};function w(z){var A=z&&z.removeCustomData('cke-fillingChar');if(A){var B,C=z.getSelection().getNative(),D=C&&C.type!='None'&&C.getRangeAt(0);if(A.getLength()>1&&D&&D.intersectsNode(A.$)){B=[C.anchorOffset,C.focusOffset];var E=C.anchorNode==A.$&&C.anchorOffset>0,F=C.focusNode==A.$&&C.focusOffset>0;E&&B[0]--;F&&B[1]--;
+x(C)&&B.unshift(B.pop());}A.setText(A.getText().replace(/\u200B/g,''));if(B){var G=C.getRangeAt(0);G.setStart(G.startContainer,B[0]);G.setEnd(G.startContainer,B[1]);C.removeAllRanges();C.addRange(G);}}};function x(z){if(!z.isCollapsed){var A=z.getRangeAt(0);A.setStart(z.anchorNode,z.anchorOffset);A.setEnd(z.focusNode,z.focusOffset);return A.collapsed;}};j.add('selection',{init:function(z){if(b.webkit){z.on('selectionChange',function(){v(z.document);});z.on('beforeSetMode',function(){w(z.document);});var A,B;function C(){var E=z.document,F=u(E);if(F){var G=E.$.defaultView.getSelection();if(G.type=='Caret'&&G.anchorNode==F.$)B=1;A=F.getText();F.setText(A.replace(/\u200B/g,''));}};function D(){var E=z.document,F=u(E);if(F){F.setText(A);if(B){E.$.defaultView.getSelection().setPosition(F.$,F.getLength());B=0;}}};z.on('beforeUndoImage',C);z.on('afterUndoImage',D);z.on('beforeGetData',C,null,null,0);z.on('getData',D);}z.on('contentDom',function(){var E=z.document,F=E.getBody(),G=E.getDocumentElement();if(c){var H,I,J=1;F.on('focusin',function(O){if(O.data.$.srcElement.nodeName!='BODY')return;var P=E.getCustomData('cke_locked_selection');if(P){P.unlock(1);P.lock();}else if(H&&J){try{H.select();}catch(Q){}H=null;}});F.on('focus',function(){I=1;N();});F.on('beforedeactivate',function(O){if(O.data.$.toElement)return;I=0;J=1;});c&&z.on('blur',function(){try{E.$.selection.empty();}catch(O){}});G.on('mousedown',function(){J=0;});G.on('mouseup',function(){J=1;});var K;F.on('mousedown',function(O){if(O.data.$.button==2){var P=z.document.$.selection;if(P.type=='None')K=z.window.getScrollPosition();}M();});F.on('mouseup',function(O){if(O.data.$.button==2&&K){z.document.$.documentElement.scrollLeft=K.x;z.document.$.documentElement.scrollTop=K.y;}K=null;I=1;setTimeout(function(){N(true);},0);});F.on('keydown',M);F.on('keyup',function(){I=1;N();});if((b.ie7Compat||b.ie6Compat)&&E.$.compatMode!='BackCompat'){function L(O,P,Q){try{O.moveToPoint(P,Q);}catch(R){}};G.on('mousedown',function(O){function P(R){R=R.data.$;if(Q){var S=F.$.createTextRange();L(S,R.x,R.y);Q.setEndPoint(Q.compareEndPoints('StartToStart',S)<0?'EndToEnd':'StartToStart',S);Q.select();}};O=O.data.$;if(O.y<G.$.clientHeight&&O.y>F.$.offsetTop+F.$.clientHeight&&O.x<G.$.clientWidth){var Q=F.$.createTextRange();L(Q,O.x,O.y);G.on('mousemove',P);G.on('mouseup',function(R){G.removeListener('mousemove',P);R.removeListener();Q.select();});}});}if(b.ie8)G.on('mouseup',function(O){if(O.data.getTarget().getName()=='html'){var P=a.document.$.selection,Q=P.createRange();
+if(P.type!='None'&&Q.parentElement().ownerDocument==E.$)Q.select();}});E.on('selectionchange',N);function M(){I=0;};function N(O){if(I){var P=z.document,Q=z.getSelection(),R=Q&&Q.getNative();if(O&&R&&R.type=='None')if(!P.$.queryCommandEnabled('InsertImage')){e.setTimeout(N,50,this,true);return;}var S;if(R&&R.type&&R.type!='Control'&&(S=R.createRange())&&(S=S.parentElement())&&(S=S.nodeName)&&S.toLowerCase() in {input:1,textarea:1})return;H=R&&Q.getRanges()[0];p.call(z);}};}else{E.on('mouseup',p,z);E.on('keyup',p,z);E.on('selectionchange',p,z);}if(b.webkit)E.on('keydown',function(O){var P=O.data.getKey();switch(P){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:w(z.document);}},null,null,10);});z.on('contentDomUnload',z.forceNextSelectionCheck,z);z.addCommand('selectAll',s);z.ui.addButton('SelectAll',{label:z.lang.selectAll,command:'selectAll'});z.selectionChange=function(E){(E?m:p).call(this);};b.ie9Compat&&z.on('destroy',function(){var E=z.getSelection();E&&E.getNative().clear();},null,null,9);}});a.editor.prototype.getSelection=function(){return this.document&&this.document.getSelection();};a.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath;};g.prototype.getSelection=function(){var z=new d.selection(this);return!z||z.isInvalid?null:z;};a.SELECTION_NONE=1;a.SELECTION_TEXT=2;a.SELECTION_ELEMENT=3;d.selection=function(z){var C=this;var A=z.getCustomData('cke_locked_selection');if(A)return A;C.document=z;C.isLocked=0;C._={cache:{}};if(c)try{var B=C.getNative().createRange();if(!B||B.item&&B.item(0).ownerDocument!=C.document.$||B.parentElement&&B.parentElement().ownerDocument!=C.document.$)throw 0;}catch(D){C.isInvalid=true;}return C;};var y={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};d.selection.prototype={getNative:c?function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.$.selection);}:function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.getWindow().$.getSelection());},getType:c?function(){var z=this._.cache;if(z.type)return z.type;var A=1;try{var B=this.getNative(),C=B.type;if(C=='Text')A=2;if(C=='Control')A=3;if(B.createRange().parentElement)A=2;}catch(D){}return z.type=A;}:function(){var z=this._.cache;if(z.type)return z.type;var A=2,B=this.getNative();if(!B)A=1;else if(B.rangeCount==1){var C=B.getRangeAt(0),D=C.startContainer;if(D==C.endContainer&&D.nodeType==1&&C.endOffset-C.startOffset==1&&y[D.childNodes[C.startOffset].nodeName.toLowerCase()])A=3;
+}return z.type=A;},getRanges:(function(){var z=c?(function(){function A(C){return new d.node(C).getIndex();};var B=function(C,D){C=C.duplicate();C.collapse(D);var E=C.parentElement(),F=E.ownerDocument;if(!E.hasChildNodes())return{container:E,offset:0};var G=E.children,H,I,J=C.duplicate(),K=0,L=G.length-1,M=-1,N,O,P;while(K<=L){M=Math.floor((K+L)/2);H=G[M];J.moveToElementText(H);N=J.compareEndPoints('StartToStart',C);if(N>0)L=M-1;else if(N<0)K=M+1;else if(b.ie9Compat&&H.tagName=='BR'){var Q=F.defaultView.getSelection();return{container:Q[D?'anchorNode':'focusNode'],offset:Q[D?'anchorOffset':'focusOffset']};}else return{container:E,offset:A(H)};}if(M==-1||M==G.length-1&&N<0){J.moveToElementText(E);J.setEndPoint('StartToStart',C);O=J.text.replace(/(\r\n|\r)/g,'\n').length;G=E.childNodes;if(!O){H=G[G.length-1];if(H.nodeType!=3)return{container:E,offset:G.length};else return{container:H,offset:H.nodeValue.length};}var R=G.length;while(O>0&&R>0){I=G[--R];if(I.nodeType==3){P=I;O-=I.nodeValue.length;}}return{container:P,offset:-O};}else{J.collapse(N>0?true:false);J.setEndPoint(N>0?'StartToStart':'EndToStart',C);O=J.text.replace(/(\r\n|\r)/g,'\n').length;if(!O)return{container:E,offset:A(H)+(N>0?0:1)};while(O>0)try{I=H[N>0?'previousSibling':'nextSibling'];if(I.nodeType==3){O-=I.nodeValue.length;P=I;}H=I;}catch(S){return{container:E,offset:A(H)};}return{container:P,offset:N>0?-O:P.nodeValue.length+O};}};return function(){var M=this;var C=M.getNative(),D=C&&C.createRange(),E=M.getType(),F;if(!C)return[];if(E==2){F=new d.range(M.document);var G=B(D,true);F.setStart(new d.node(G.container),G.offset);G=B(D);F.setEnd(new d.node(G.container),G.offset);if(F.endContainer.getPosition(F.startContainer)&4&&F.endOffset<=F.startContainer.getIndex())F.collapse();return[F];}else if(E==3){var H=[];for(var I=0;I<D.length;I++){var J=D.item(I),K=J.parentNode,L=0;F=new d.range(M.document);for(;L<K.childNodes.length&&K.childNodes[L]!=J;L++){}F.setStart(new d.node(K),L);F.setEnd(new d.node(K),L+1);H.push(F);}return H;}return[];};})():function(){var A=[],B,C=this.document,D=this.getNative();if(!D)return A;if(!D.rangeCount){B=new d.range(C);B.moveToElementEditStart(C.getBody());A.push(B);}for(var E=0;E<D.rangeCount;E++){var F=D.getRangeAt(E);B=new d.range(C);B.setStart(new d.node(F.startContainer),F.startOffset);B.setEnd(new d.node(F.endContainer),F.endOffset);A.push(B);}return A;};return function(A){var B=this._.cache;if(B.ranges&&!A)return B.ranges;else if(!B.ranges)B.ranges=new d.rangeList(z.call(this));
+if(A){var C=B.ranges;for(var D=0;D<C.length;D++){var E=C[D],F=E.getCommonAncestor();if(F.isReadOnly())C.splice(D,1);if(E.collapsed)continue;if(E.startContainer.isReadOnly()){var G=E.startContainer;while(G){if(G.is('body')||!G.isReadOnly())break;if(G.type==1&&G.getAttribute('contentEditable')=='false')E.setStartAfter(G);G=G.getParent();}}var H=E.startContainer,I=E.endContainer,J=E.startOffset,K=E.endOffset,L=E.clone();if(H&&H.type==3)if(J>=H.getLength())L.setStartAfter(H);else L.setStartBefore(H);if(I&&I.type==3)if(!K)L.setEndBefore(I);else L.setEndAfter(I);var M=new d.walker(L);M.evaluator=function(N){if(N.type==1&&N.isReadOnly()){var O=E.clone();E.setEndBefore(N);if(E.collapsed)C.splice(D--,1);if(!(N.getPosition(L.endContainer)&16)){O.setStartAfter(N);if(!O.collapsed)C.splice(D+1,0,O);}return true;}return false;};M.next();}}return B.ranges;};})(),getStartElement:function(){var G=this;var z=G._.cache;if(z.startElement!==undefined)return z.startElement;var A,B=G.getNative();switch(G.getType()){case 3:return G.getSelectedElement();case 2:var C=G.getRanges()[0];if(C){if(!C.collapsed){C.optimize();while(1){var D=C.startContainer,E=C.startOffset;if(E==(D.getChildCount?D.getChildCount():D.getLength())&&!D.isBlockBoundary())C.setStartAfter(D);else break;}A=C.startContainer;if(A.type!=1)return A.getParent();A=A.getChild(C.startOffset);if(!A||A.type!=1)A=C.startContainer;else{var F=A.getFirst();while(F&&F.type==1){A=F;F=F.getFirst();}}}else{A=C.startContainer;if(A.type!=1)A=A.getParent();}A=A.$;}}return z.startElement=A?new h(A):null;},getSelectedElement:function(){var z=this._.cache;if(z.selectedElement!==undefined)return z.selectedElement;var A=this,B=e.tryThese(function(){return A.getNative().createRange().item(0);},function(){var C,D,E=A.getRanges()[0],F=E.getCommonAncestor(1,1),G={table:1,ul:1,ol:1,dl:1};for(var H in G){if(C=F.getAscendant(H,1))break;}if(C){var I=new d.range(this.document);I.setStartAt(C,1);I.setEnd(E.startContainer,E.startOffset);var J=e.extend(G,f.$listItem,f.$tableContent),K=new d.walker(I),L=function(M,N){return function(O,P){if(O.type==3&&(!e.trim(O.getText())||O.getParent().data('cke-bookmark')))return true;var Q;if(O.type==1){Q=O.getName();if(Q=='br'&&N&&O.equals(O.getParent().getBogus()))return true;if(P&&Q in J||Q in f.$removeEmpty)return true;}M.halted=1;return false;};};K.guard=L(K);if(K.checkBackward()&&!K.halted){K=new d.walker(I);I.setStart(E.endContainer,E.endOffset);I.setEndAt(C,2);K.guard=L(K,1);if(K.checkForward()&&!K.halted)D=C.$;
+}}if(!D)throw 0;return D;},function(){var C=A.getRanges()[0],D,E;for(var F=2;F&&!((D=C.getEnclosedNode())&&D.type==1&&y[D.getName()]&&(E=D));F--)C.shrink(1);return E.$;});return z.selectedElement=B?new h(B):null;},getSelectedText:function(){var z=this._.cache;if(z.selectedText!==undefined)return z.selectedText;var A='',B=this.getNative();if(this.getType()==2)A=c?B.createRange().text:B.toString();return z.selectedText=A;},lock:function(){var z=this;z.getRanges();z.getStartElement();z.getSelectedElement();z.getSelectedText();z._.cache.nativeSel={};z.isLocked=1;z.document.setCustomData('cke_locked_selection',z);},unlock:function(z){var E=this;var A=E.document,B=A.getCustomData('cke_locked_selection');if(B){A.setCustomData('cke_locked_selection',null);if(z){var C=B.getSelectedElement(),D=!C&&B.getRanges();E.isLocked=0;E.reset();if(C)E.selectElement(C);else E.selectRanges(D);}}if(!B||!z){E.isLocked=0;E.reset();}},reset:function(){this._.cache={};},selectElement:function(z){var B=this;if(B.isLocked){var A=new d.range(B.document);A.setStartBefore(z);A.setEndAfter(z);B._.cache.selectedElement=z;B._.cache.startElement=z;B._.cache.ranges=new d.rangeList(A);B._.cache.type=3;return;}A=new d.range(z.getDocument());A.setStartBefore(z);A.setEndAfter(z);A.select();B.document.fire('selectionchange');B.reset();},selectRanges:function(z){var N=this;if(N.isLocked){N._.cache.selectedElement=null;N._.cache.startElement=z[0]&&z[0].getTouchedStartNode();N._.cache.ranges=new d.rangeList(z);N._.cache.type=2;return;}if(c){if(z.length>1){var A=z[z.length-1];z[0].setEnd(A.endContainer,A.endOffset);z.length=1;}if(z[0])z[0].select();N.reset();}else{var B=N.getNative();if(!B)return;if(z.length){B.removeAllRanges();b.webkit&&w(N.document);}for(var C=0;C<z.length;C++){if(C<z.length-1){var D=z[C],E=z[C+1],F=D.clone();F.setStart(D.endContainer,D.endOffset);F.setEnd(E.startContainer,E.startOffset);if(!F.collapsed){F.shrink(1,true);var G=F.getCommonAncestor(),H=F.getEnclosedNode();if(G.isReadOnly()||H&&H.isReadOnly()){E.setStart(D.startContainer,D.startOffset);z.splice(C--,1);continue;}}}var I=z[C],J=N.document.$.createRange(),K=I.startContainer;if(I.collapsed&&(b.opera||b.gecko&&b.version<10900)&&K.type==1&&!K.getChildCount())K.appendText('');if(I.collapsed&&b.webkit&&r(I)){var L=t(N.document);I.insertNode(L);var M=L.getNext();if(M&&!L.getPrevious()&&M.type==1&&M.getName()=='br'){w(N.document);I.moveToPosition(M,3);}else I.moveToPosition(L,4);}J.setStart(I.startContainer.$,I.startOffset);try{J.setEnd(I.endContainer.$,I.endOffset);
+}catch(O){if(O.toString().indexOf('NS_ERROR_ILLEGAL_VALUE')>=0){I.collapse(1);J.setEnd(I.endContainer.$,I.endOffset);}else throw O;}B.addRange(J);}N.document.fire('selectionchange');N.reset();}},createBookmarks:function(z){return this.getRanges().createBookmarks(z);},createBookmarks2:function(z){return this.getRanges().createBookmarks2(z);},selectBookmarks:function(z){var A=[];for(var B=0;B<z.length;B++){var C=new d.range(this.document);C.moveToBookmark(z[B]);A.push(C);}this.selectRanges(A);return this;},getCommonAncestor:function(){var z=this.getRanges(),A=z[0].startContainer,B=z[z.length-1].endContainer;return A.getCommonAncestor(B);},scrollIntoView:function(){var z=this.getStartElement();z.scrollIntoView();}};})();(function(){var m=d.walker.whitespaces(true),n=/\ufeff|\u00a0/,o={table:1,tbody:1,tr:1};d.range.prototype.select=c?function(p){var A=this;var q=A.collapsed,r,s,t,u=A.getEnclosedNode();if(u)try{t=A.document.$.body.createControlRange();t.addElement(u.$);t.select();return;}catch(B){}if(A.startContainer.type==1&&A.startContainer.getName() in o||A.endContainer.type==1&&A.endContainer.getName() in o)A.shrink(1,true);var v=A.createBookmark(),w=v.startNode,x;if(!q)x=v.endNode;t=A.document.$.body.createTextRange();t.moveToElementText(w.$);t.moveStart('character',1);if(x){var y=A.document.$.body.createTextRange();y.moveToElementText(x.$);t.setEndPoint('EndToEnd',y);t.moveEnd('character',-1);}else{var z=w.getNext(m);r=!(z&&z.getText&&z.getText().match(n))&&(p||!w.hasPrevious()||w.getPrevious().is&&w.getPrevious().is('br'));s=A.document.createElement('span');s.setHtml('');s.insertBefore(w);if(r)A.document.createText('\ufeff').insertBefore(w);}A.setStartBefore(w);w.remove();if(q){if(r){t.moveStart('character',-1);t.select();A.document.$.selection.clear();}else t.select();A.moveToPosition(s,3);s.remove();}else{A.setEndBefore(x);x.remove();t.select();}A.document.fire('selectionchange');}:function(){this.document.getSelection().selectRanges([this]);};})();(function(){var m=a.htmlParser.cssStyle,n=e.cssLength,o=/^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i;function p(r,s){var t=o.exec(r),u=o.exec(s);if(t){if(!t[2]&&u[2]=='px')return u[1];if(t[2]=='px'&&!u[2])return u[1]+'px';}return s;};var q={elements:{$:function(r){var s=r.attributes,t=s&&s['data-cke-realelement'],u=t&&new a.htmlParser.fragment.fromHtml(decodeURIComponent(t)),v=u&&u.children[0];if(v&&r.attributes['data-cke-resizable']){var w=new m(r).rules,x=v.attributes,y=w.width,z=w.height;y&&(x.width=p(x.width,y));
+z&&(x.height=p(x.height,z));}return v;}}};j.add('fakeobjects',{requires:['htmlwriter'],afterInit:function(r){var s=r.dataProcessor,t=s&&s.htmlFilter;if(t)t.addRules(q);}});a.editor.prototype.createFakeElement=function(r,s,t,u){var v=this.lang.fakeobjects,w=v[t]||v.unknown,x={'class':s,'data-cke-realelement':encodeURIComponent(r.getOuterHtml()),'data-cke-real-node-type':r.type,alt:w,title:w,align:r.getAttribute('align')||''};if(!b.hc)x.src=a.getUrl('images/spacer.gif');if(t)x['data-cke-real-element-type']=t;if(u){x['data-cke-resizable']=u;var y=new m(),z=r.getAttribute('width'),A=r.getAttribute('height');z&&(y.rules.width=n(z));A&&(y.rules.height=n(A));y.populate(x);}return this.document.createElement('img',{attributes:x});};a.editor.prototype.createFakeParserElement=function(r,s,t,u){var v=this.lang.fakeobjects,w=v[t]||v.unknown,x,y=new a.htmlParser.basicWriter();r.writeHtml(y);x=y.getHtml();var z={'class':s,'data-cke-realelement':encodeURIComponent(x),'data-cke-real-node-type':r.type,alt:w,title:w,align:r.attributes.align||''};if(!b.hc)z.src=a.getUrl('images/spacer.gif');if(t)z['data-cke-real-element-type']=t;if(u){z['data-cke-resizable']=u;var A=r.attributes,B=new m(),C=A.width,D=A.height;C!=undefined&&(B.rules.width=n(C));D!=undefined&&(B.rules.height=n(D));B.populate(z);}return new a.htmlParser.element('img',z);};a.editor.prototype.restoreRealElement=function(r){if(r.data('cke-real-node-type')!=1)return null;var s=h.createFromHtml(decodeURIComponent(r.data('cke-realelement')),this.document);if(r.data('cke-resizable')){var t=r.getStyle('width'),u=r.getStyle('height');t&&s.setAttribute('width',p(s.getAttribute('width'),t));u&&s.setAttribute('height',p(s.getAttribute('height'),u));}return s;};})();j.add('richcombo',{requires:['floatpanel','listblock','button'],beforeInit:function(m){m.ui.addHandler('richcombo',k.richCombo.handler);}});a.UI_RICHCOMBO='richcombo';k.richCombo=e.createClass({$:function(m){var o=this;e.extend(o,m,{title:m.label,modes:{wysiwyg:1}});var n=o.panel||{};delete o.panel;o.id=e.getNextNumber();o.document=n&&n.parent&&n.parent.getDocument()||a.document;n.className=(n.className||'')+' cke_rcombopanel';n.block={multiSelect:n.multiSelect,attributes:n.attributes};o._={panelDefinition:n,items:{},state:2};},statics:{handler:{create:function(m){return new k.richCombo(m);}}},proto:{renderHtml:function(m){var n=[];this.render(m,n);return n.join('');},render:function(m,n){var o=b,p='cke_'+this.id,q=e.addFunction(function(v){var y=this;var w=y._;if(w.state==0)return;
+y.createPanel(m);if(w.on){w.panel.hide();return;}y.commit();var x=y.getValue();if(x)w.list.mark(x);else w.list.unmarkAll();w.panel.showBlock(y.id,new h(v),4);},this),r={id:p,combo:this,focus:function(){var v=a.document.getById(p).getChild(1);v.focus();},clickFn:q};function s(){var w=this;var v=w.modes[m.mode]?2:0;w.setState(m.readOnly&&!w.readOnly?0:v);w.setValue('');};m.on('mode',s,this);!this.readOnly&&m.on('readOnly',s,this);var t=e.addFunction(function(v,w){v=new d.event(v);var x=v.getKeystroke();switch(x){case 13:case 32:case 40:e.callFunction(q,w);break;default:r.onkey(r,x);}v.preventDefault();}),u=e.addFunction(function(){r.onfocus&&r.onfocus();});r.keyDownFn=t;n.push('<span class="cke_rcombo" role="presentation">','<span id=',p);if(this.className)n.push(' class="',this.className,' cke_off"');n.push(' role="presentation">','<span id="'+p+'_label" class=cke_label>',this.label,'</span>','<a hidefocus=true title="',this.title,'" tabindex="-1"',o.gecko&&o.version>=10900&&!o.hc?'':" href=\"javascript:void('"+this.label+"')\"",' role="button" aria-labelledby="',p,'_label" aria-describedby="',p,'_text" aria-haspopup="true"');if(b.opera||b.gecko&&b.mac)n.push(' onkeypress="return false;"');if(b.gecko)n.push(' onblur="this.style.cssText = this.style.cssText;"');n.push(' onkeydown="CKEDITOR.tools.callFunction( ',t,', event, this );" onfocus="return CKEDITOR.tools.callFunction(',u,', event);" '+(c?'onclick="return false;" onmouseup':'onclick')+'="CKEDITOR.tools.callFunction(',q,', this); return false;"><span><span id="'+p+'_text" class="cke_text cke_inline_label">'+this.label+'</span>'+'</span>'+'<span class=cke_openbutton><span class=cke_icon>'+(b.hc?'▼':b.air?' ':'')+'</span></span>'+'</a>'+'</span>'+'</span>');if(this.onRender)this.onRender();return r;},createPanel:function(m){if(this._.panel)return;var n=this._.panelDefinition,o=this._.panelDefinition.block,p=n.parent||a.document.getBody(),q=new k.floatPanel(m,p,n),r=q.addListBlock(this.id,o),s=this;q.onShow=function(){if(s.className)this.element.getFirst().addClass(s.className+'_panel');s.setState(1);r.focus(!s.multiSelect&&s.getValue());s._.on=1;if(s.onOpen)s.onOpen();};q.onHide=function(t){if(s.className)this.element.getFirst().removeClass(s.className+'_panel');s.setState(s.modes&&s.modes[m.mode]?2:0);s._.on=0;if(!t&&s.onClose)s.onClose();};q.onEscape=function(){q.hide();};r.onClick=function(t,u){s.document.getWindow().focus();if(s.onClick)s.onClick.call(s,t,u);if(u)s.setValue(t,s._.items[t]);
+else s.setValue('');q.hide(false);};this._.panel=q;this._.list=r;q.getBlock(this.id).onHide=function(){s._.on=0;s.setState(2);};if(this.init)this.init();},setValue:function(m,n){var p=this;p._.value=m;var o=p.document.getById('cke_'+p.id+'_text');if(o){if(!(m||n)){n=p.label;o.addClass('cke_inline_label');}else o.removeClass('cke_inline_label');o.setHtml(typeof n!='undefined'?n:m);}},getValue:function(){return this._.value||'';},unmarkAll:function(){this._.list.unmarkAll();},mark:function(m){this._.list.mark(m);},hideItem:function(m){this._.list.hideItem(m);},hideGroup:function(m){this._.list.hideGroup(m);},showAll:function(){this._.list.showAll();},add:function(m,n,o){this._.items[m]=o||m;this._.list.add(m,n,o);},startGroup:function(m){this._.list.startGroup(m);},commit:function(){var m=this;if(!m._.committed){m._.list.commit();m._.committed=1;k.fire('ready',m);}m._.committed=1;},setState:function(m){var n=this;if(n._.state==m)return;n.document.getById('cke_'+n.id).setState(m);n._.state=m;}}});k.prototype.addRichCombo=function(m,n){this.add(m,'richcombo',n);};j.add('htmlwriter');a.htmlWriter=e.createClass({base:a.htmlParser.basicWriter,$:function(){var o=this;o.base();o.indentationChars='\t';o.selfClosingEnd=' />';o.lineBreakChars='\n';o.forceSimpleAmpersand=0;o.sortAttributes=1;o._.indent=0;o._.indentation='';o._.inPre=0;o._.rules={};var m=f;for(var n in e.extend({},m.$nonBodyContent,m.$block,m.$listItem,m.$tableContent))o.setRules(n,{indent:1,breakBeforeOpen:1,breakAfterOpen:1,breakBeforeClose:!m[n]['#'],breakAfterClose:1});o.setRules('br',{breakAfterOpen:1});o.setRules('title',{indent:0,breakAfterOpen:0});o.setRules('style',{indent:0,breakBeforeClose:1});o.setRules('pre',{indent:0});},proto:{openTag:function(m,n){var p=this;var o=p._.rules[m];if(p._.indent)p.indentation();else if(o&&o.breakBeforeOpen){p.lineBreak();p.indentation();}p._.output.push('<',m);},openTagClose:function(m,n){var p=this;var o=p._.rules[m];if(n)p._.output.push(p.selfClosingEnd);else{p._.output.push('>');if(o&&o.indent)p._.indentation+=p.indentationChars;}if(o&&o.breakAfterOpen)p.lineBreak();m=='pre'&&(p._.inPre=1);},attribute:function(m,n){if(typeof n=='string'){this.forceSimpleAmpersand&&(n=n.replace(/&/g,'&'));n=e.htmlEncodeAttr(n);}this._.output.push(' ',m,'="',n,'"');},closeTag:function(m){var o=this;var n=o._.rules[m];if(n&&n.indent)o._.indentation=o._.indentation.substr(o.indentationChars.length);if(o._.indent)o.indentation();else if(n&&n.breakBeforeClose){o.lineBreak();o.indentation();
+}o._.output.push('</',m,'>');m=='pre'&&(o._.inPre=0);if(n&&n.breakAfterClose)o.lineBreak();},text:function(m){var n=this;if(n._.indent){n.indentation();!n._.inPre&&(m=e.ltrim(m));}n._.output.push(m);},comment:function(m){if(this._.indent)this.indentation();this._.output.push('<!--',m,'-->');},lineBreak:function(){var m=this;if(!m._.inPre&&m._.output.length>0)m._.output.push(m.lineBreakChars);m._.indent=1;},indentation:function(){var m=this;if(!m._.inPre)m._.output.push(m._.indentation);m._.indent=0;},setRules:function(m,n){var o=this._.rules[m];if(o)e.extend(o,n,true);else this._.rules[m]=n;}}});j.add('menubutton',{requires:['button','menu'],beforeInit:function(m){m.ui.addHandler('menubutton',k.menuButton.handler);}});a.UI_MENUBUTTON='menubutton';(function(){var m=function(n){var o=this._;if(o.state===0)return;o.previousState=o.state;var p=o.menu;if(!p){p=o.menu=new a.menu(n,{panel:{className:n.skinClass+' cke_contextmenu',attributes:{'aria-label':n.lang.common.options}}});p.onHide=e.bind(function(){this.setState(this.modes&&this.modes[n.mode]?o.previousState:0);},this);if(this.onMenu)p.addListener(this.onMenu);}if(o.on){p.hide();return;}this.setState(1);p.show(a.document.getById(this._.id),4);};k.menuButton=e.createClass({base:k.button,$:function(n){var o=n.panel;delete n.panel;this.base(n);this.hasArrow=true;this.click=m;},statics:{handler:{create:function(n){return new k.menuButton(n);}}}});})();j.add('dialogui');(function(){var m=function(u){var x=this;x._||(x._={});x._['default']=x._.initValue=u['default']||'';x._.required=u.required||false;var v=[x._];for(var w=1;w<arguments.length;w++)v.push(arguments[w]);v.push(true);e.extend.apply(e,v);return x._;},n={build:function(u,v,w){return new k.dialog.textInput(u,v,w);}},o={build:function(u,v,w){return new k.dialog[v.type](u,v,w);}},p={build:function(u,v,w){var x=v.children,y,z=[],A=[];for(var B=0;B<x.length&&(y=x[B]);B++){var C=[];z.push(C);A.push(a.dialog._.uiElementBuilders[y.type].build(u,y,C));}return new k.dialog[v.type](u,A,z,w,v);}},q={isChanged:function(){return this.getValue()!=this.getInitValue();},reset:function(u){this.setValue(this.getInitValue(),u);},setInitValue:function(){this._.initValue=this.getValue();},resetInitValue:function(){this._.initValue=this._['default'];},getInitValue:function(){return this._.initValue;}},r=e.extend({},k.dialog.uiElement.prototype.eventProcessors,{onChange:function(u,v){if(!this._.domOnChangeRegistered){u.on('load',function(){this.getInputElement().on('change',function(){if(!u.parts.dialog.isVisible())return;
+this.fire('change',{value:this.getValue()});},this);},this);this._.domOnChangeRegistered=true;}this.on('change',v);}},true),s=/^on([A-Z]\w+)/,t=function(u){for(var v in u){if(s.test(v)||v=='title'||v=='type')delete u[v];}return u;};e.extend(k.dialog,{labeledElement:function(u,v,w,x){if(arguments.length<4)return;var y=m.call(this,v);y.labelId=e.getNextId()+'_label';var z=this._.children=[],A=function(){var B=[],C=v.required?' cke_required':'';if(v.labelLayout!='horizontal')B.push('<label class="cke_dialog_ui_labeled_label'+C+'" ',' id="'+y.labelId+'"',y.inputId?' for="'+y.inputId+'"':'',(v.labelStyle?' style="'+v.labelStyle+'"':'')+'>',v.label,'</label>','<div class="cke_dialog_ui_labeled_content"'+(v.controlStyle?' style="'+v.controlStyle+'"':'')+' role="presentation">',x.call(this,u,v),'</div>');else{var D={type:'hbox',widths:v.widths,padding:0,children:[{type:'html',html:'<label class="cke_dialog_ui_labeled_label'+C+'"'+' id="'+y.labelId+'"'+' for="'+y.inputId+'"'+(v.labelStyle?' style="'+v.labelStyle+'"':'')+'>'+e.htmlEncode(v.label)+'</span>'},{type:'html',html:'<span class="cke_dialog_ui_labeled_content"'+(v.controlStyle?' style="'+v.controlStyle+'"':'')+'>'+x.call(this,u,v)+'</span>'}]};a.dialog._.uiElementBuilders.hbox.build(u,D,B);}return B.join('');};k.dialog.uiElement.call(this,u,v,w,'div',null,{role:'presentation'},A);},textInput:function(u,v,w){if(arguments.length<3)return;m.call(this,v);var x=this._.inputId=e.getNextId()+'_textInput',y={'class':'cke_dialog_ui_input_'+v.type,id:x,type:v.type},z;if(v.validate)this.validate=v.validate;if(v.maxLength)y.maxlength=v.maxLength;if(v.size)y.size=v.size;if(v.inputStyle)y.style=v.inputStyle;var A=function(){var B=['<div class="cke_dialog_ui_input_',v.type,'" role="presentation"'];if(v.width)B.push('style="width:'+v.width+'" ');B.push('><input ');y['aria-labelledby']=this._.labelId;this._.required&&(y['aria-required']=this._.required);for(var C in y)B.push(C+'="'+y[C]+'" ');B.push(' /></div>');return B.join('');};k.dialog.labeledElement.call(this,u,v,w,A);},textarea:function(u,v,w){if(arguments.length<3)return;m.call(this,v);var x=this,y=this._.inputId=e.getNextId()+'_textarea',z={};if(v.validate)this.validate=v.validate;z.rows=v.rows||5;z.cols=v.cols||20;if(typeof v.inputStyle!='undefined')z.style=v.inputStyle;var A=function(){z['aria-labelledby']=this._.labelId;this._.required&&(z['aria-required']=this._.required);var B=['<div class="cke_dialog_ui_input_textarea" role="presentation"><textarea class="cke_dialog_ui_input_textarea" id="',y,'" '];
+for(var C in z)B.push(C+'="'+e.htmlEncode(z[C])+'" ');B.push('>',e.htmlEncode(x._['default']),'</textarea></div>');return B.join('');};k.dialog.labeledElement.call(this,u,v,w,A);},checkbox:function(u,v,w){if(arguments.length<3)return;var x=m.call(this,v,{'default':!!v['default']});if(v.validate)this.validate=v.validate;var y=function(){var z=e.extend({},v,{id:v.id?v.id+'_checkbox':e.getNextId()+'_checkbox'},true),A=[],B=e.getNextId()+'_label',C={'class':'cke_dialog_ui_checkbox_input',type:'checkbox','aria-labelledby':B};t(z);if(v['default'])C.checked='checked';if(typeof z.inputStyle!='undefined')z.style=z.inputStyle;x.checkbox=new k.dialog.uiElement(u,z,A,'input',null,C);A.push(' <label id="',B,'" for="',C.id,'"'+(v.labelStyle?' style="'+v.labelStyle+'"':'')+'>',e.htmlEncode(v.label),'</label>');return A.join('');};k.dialog.uiElement.call(this,u,v,w,'span',null,null,y);},radio:function(u,v,w){if(arguments.length<3)return;m.call(this,v);if(!this._['default'])this._['default']=this._.initValue=v.items[0][1];if(v.validate)this.validate=v.valdiate;var x=[],y=this,z=function(){var A=[],B=[],C={'class':'cke_dialog_ui_radio_item','aria-labelledby':this._.labelId},D=v.id?v.id+'_radio':e.getNextId()+'_radio';for(var E=0;E<v.items.length;E++){var F=v.items[E],G=F[2]!==undefined?F[2]:F[0],H=F[1]!==undefined?F[1]:F[0],I=e.getNextId()+'_radio_input',J=I+'_label',K=e.extend({},v,{id:I,title:null,type:null},true),L=e.extend({},K,{title:G},true),M={type:'radio','class':'cke_dialog_ui_radio_input',name:D,value:H,'aria-labelledby':J},N=[];if(y._['default']==H)M.checked='checked';t(K);t(L);if(typeof K.inputStyle!='undefined')K.style=K.inputStyle;x.push(new k.dialog.uiElement(u,K,N,'input',null,M));N.push(' ');new k.dialog.uiElement(u,L,N,'label',null,{id:J,'for':M.id},F[0]);A.push(N.join(''));}new k.dialog.hbox(u,x,A,B);return B.join('');};k.dialog.labeledElement.call(this,u,v,w,z);this._.children=x;},button:function(u,v,w){if(!arguments.length)return;if(typeof v=='function')v=v(u.getParentEditor());m.call(this,v,{disabled:v.disabled||false});a.event.implementOn(this);var x=this;u.on('load',function(A){var B=this.getElement();(function(){B.on('click',function(C){x.fire('click',{dialog:x.getDialog()});C.data.preventDefault();});B.on('keydown',function(C){if(C.data.getKeystroke() in {32:1}){x.click();C.data.preventDefault();}});})();B.unselectable();},this);var y=e.extend({},v);delete y.style;var z=e.getNextId()+'_label';k.dialog.uiElement.call(this,u,y,w,'a',null,{style:v.style,href:'javascript:void(0)',title:v.label,hidefocus:'true','class':v['class'],role:'button','aria-labelledby':z},'<span id="'+z+'" class="cke_dialog_ui_button">'+e.htmlEncode(v.label)+'</span>');
+},select:function(u,v,w){if(arguments.length<3)return;var x=m.call(this,v);if(v.validate)this.validate=v.validate;x.inputId=e.getNextId()+'_select';var y=function(){var z=e.extend({},v,{id:v.id?v.id+'_select':e.getNextId()+'_select'},true),A=[],B=[],C={id:x.inputId,'class':'cke_dialog_ui_input_select','aria-labelledby':this._.labelId};if(v.size!=undefined)C.size=v.size;if(v.multiple!=undefined)C.multiple=v.multiple;t(z);for(var D=0,E;D<v.items.length&&(E=v.items[D]);D++)B.push('<option value="',e.htmlEncode(E[1]!==undefined?E[1]:E[0]).replace(/"/g,'"'),'" /> ',e.htmlEncode(E[0]));if(typeof z.inputStyle!='undefined')z.style=z.inputStyle;x.select=new k.dialog.uiElement(u,z,A,'select',null,C,B.join(''));return A.join('');};k.dialog.labeledElement.call(this,u,v,w,y);},file:function(u,v,w){if(arguments.length<3)return;if(v['default']===undefined)v['default']='';var x=e.extend(m.call(this,v),{definition:v,buttons:[]});if(v.validate)this.validate=v.validate;var y=function(){x.frameId=e.getNextId()+'_fileInput';var z=b.isCustomDomain(),A=['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" role="presentation" id="',x.frameId,'" title="',v.label,'" src="javascript:void('];A.push(z?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');A.push(')"></iframe>');return A.join('');};u.on('load',function(){var z=a.document.getById(x.frameId),A=z.getParent();A.addClass('cke_dialog_ui_input_file');});k.dialog.labeledElement.call(this,u,v,w,y);},fileButton:function(u,v,w){if(arguments.length<3)return;var x=m.call(this,v),y=this;if(v.validate)this.validate=v.validate;var z=e.extend({},v),A=z.onClick;z.className=(z.className?z.className+' ':'')+'cke_dialog_ui_button';z.onClick=function(B){var C=v['for'];if(!A||A.call(this,B)!==false){u.getContentElement(C[0],C[1]).submit();this.disable();}};u.on('load',function(){u.getContentElement(v['for'][0],v['for'][1])._.buttons.push(y);});k.dialog.button.call(this,u,z,w);},html:(function(){var u=/^\s*<[\w:]+\s+([^>]*)?>/,v=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,w=/\/$/;return function(x,y,z){if(arguments.length<3)return;var A=[],B,C=y.html,D,E;if(C.charAt(0)!='<')C='<span>'+C+'</span>';var F=y.focus;if(F){var G=this.focus;this.focus=function(){G.call(this);typeof F=='function'&&F.call(this);this.fire('focus');};if(y.isFocusable){var H=this.isFocusable;this.isFocusable=H;}this.keyboardFocusable=true;}k.dialog.uiElement.call(this,x,y,A,'span',null,null,'');B=A.join('');
+D=B.match(u);E=C.match(v)||['','',''];if(w.test(E[1])){E[1]=E[1].slice(0,-1);E[2]='/'+E[2];}z.push([E[1],' ',D[1]||'',E[2]].join(''));};})(),fieldset:function(u,v,w,x,y){var z=y.label,A=function(){var B=[];z&&B.push('<legend'+(y.labelStyle?' style="'+y.labelStyle+'"':'')+'>'+z+'</legend>');for(var C=0;C<w.length;C++)B.push(w[C]);return B.join('');};this._={children:v};k.dialog.uiElement.call(this,u,y,x,'fieldset',null,null,A);}},true);k.dialog.html.prototype=new k.dialog.uiElement();k.dialog.labeledElement.prototype=e.extend(new k.dialog.uiElement(),{setLabel:function(u){var v=a.document.getById(this._.labelId);if(v.getChildCount()<1)new d.text(u,a.document).appendTo(v);else v.getChild(0).$.nodeValue=u;return this;},getLabel:function(){var u=a.document.getById(this._.labelId);if(!u||u.getChildCount()<1)return '';else return u.getChild(0).getText();},eventProcessors:r},true);k.dialog.button.prototype=e.extend(new k.dialog.uiElement(),{click:function(){var u=this;if(!u._.disabled)return u.fire('click',{dialog:u._.dialog});u.getElement().$.blur();return false;},enable:function(){this._.disabled=false;var u=this.getElement();u&&u.removeClass('cke_disabled');},disable:function(){this._.disabled=true;this.getElement().addClass('cke_disabled');},isVisible:function(){return this.getElement().getFirst().isVisible();},isEnabled:function(){return!this._.disabled;},eventProcessors:e.extend({},k.dialog.uiElement.prototype.eventProcessors,{onClick:function(u,v){this.on('click',function(){this.getElement().focus();v.apply(this,arguments);});}},true),accessKeyUp:function(){this.click();},accessKeyDown:function(){this.focus();},keyboardFocusable:true},true);k.dialog.textInput.prototype=e.extend(new k.dialog.labeledElement(),{getInputElement:function(){return a.document.getById(this._.inputId);},focus:function(){var u=this.selectParentTab();setTimeout(function(){var v=u.getInputElement();v&&v.$.focus();},0);},select:function(){var u=this.selectParentTab();setTimeout(function(){var v=u.getInputElement();if(v){v.$.focus();v.$.select();}},0);},accessKeyUp:function(){this.select();},setValue:function(u){!u&&(u='');return k.dialog.uiElement.prototype.setValue.apply(this,arguments);},keyboardFocusable:true},q,true);k.dialog.textarea.prototype=new k.dialog.textInput();k.dialog.select.prototype=e.extend(new k.dialog.labeledElement(),{getInputElement:function(){return this._.select.getElement();},add:function(u,v,w){var x=new h('option',this.getDialog().getParentEditor().document),y=this.getInputElement().$;
+x.$.text=u;x.$.value=v===undefined||v===null?u:v;if(w===undefined||w===null){if(c)y.add(x.$);else y.add(x.$,null);}else y.add(x.$,w);return this;},remove:function(u){var v=this.getInputElement().$;v.remove(u);return this;},clear:function(){var u=this.getInputElement().$;while(u.length>0)u.remove(0);return this;},keyboardFocusable:true},q,true);k.dialog.checkbox.prototype=e.extend(new k.dialog.uiElement(),{getInputElement:function(){return this._.checkbox.getElement();},setValue:function(u,v){this.getInputElement().$.checked=u;!v&&this.fire('change',{value:u});},getValue:function(){return this.getInputElement().$.checked;},accessKeyUp:function(){this.setValue(!this.getValue());},eventProcessors:{onChange:function(u,v){if(!c)return r.onChange.apply(this,arguments);else{u.on('load',function(){var w=this._.checkbox.getElement();w.on('propertychange',function(x){x=x.data.$;if(x.propertyName=='checked')this.fire('change',{value:w.$.checked});},this);},this);this.on('change',v);}return null;}},keyboardFocusable:true},q,true);k.dialog.radio.prototype=e.extend(new k.dialog.uiElement(),{setValue:function(u,v){var w=this._.children,x;for(var y=0;y<w.length&&(x=w[y]);y++)x.getElement().$.checked=x.getValue()==u;!v&&this.fire('change',{value:u});},getValue:function(){var u=this._.children;for(var v=0;v<u.length;v++){if(u[v].getElement().$.checked)return u[v].getValue();}return null;},accessKeyUp:function(){var u=this._.children,v;for(v=0;v<u.length;v++){if(u[v].getElement().$.checked){u[v].getElement().focus();return;}}u[0].getElement().focus();},eventProcessors:{onChange:function(u,v){if(!c)return r.onChange.apply(this,arguments);else{u.on('load',function(){var w=this._.children,x=this;for(var y=0;y<w.length;y++){var z=w[y].getElement();z.on('propertychange',function(A){A=A.data.$;if(A.propertyName=='checked'&&this.$.checked)x.fire('change',{value:this.getAttribute('value')});});}},this);this.on('change',v);}return null;}},keyboardFocusable:true},q,true);k.dialog.file.prototype=e.extend(new k.dialog.labeledElement(),q,{getInputElement:function(){var u=a.document.getById(this._.frameId).getFrameDocument();return u.$.forms.length>0?new h(u.$.forms[0].elements[0]):this.getElement();},submit:function(){this.getInputElement().getParent().$.submit();return this;},getAction:function(){return this.getInputElement().getParent().$.action;},registerEvents:function(u){var v=/^on([A-Z]\w+)/,w,x=function(z,A,B,C){z.on('formLoaded',function(){z.getInputElement().on(B,C,z);});};for(var y in u){if(!(w=y.match(v)))continue;
+if(this.eventProcessors[y])this.eventProcessors[y].call(this,this._.dialog,u[y]);else x(this,this._.dialog,w[1].toLowerCase(),u[y]);}return this;},reset:function(){var u=this._,v=a.document.getById(u.frameId),w=v.getFrameDocument(),x=u.definition,y=u.buttons,z=this.formLoadedNumber,A=this.formUnloadNumber,B=u.dialog._.editor.lang.dir,C=u.dialog._.editor.langCode;if(!z){z=this.formLoadedNumber=e.addFunction(function(){this.fire('formLoaded');},this);A=this.formUnloadNumber=e.addFunction(function(){this.getInputElement().clearCustomData();},this);this.getDialog()._.editor.on('destroy',function(){e.removeFunction(z);e.removeFunction(A);});}function D(){w.$.open();if(b.isCustomDomain())w.$.domain=document.domain;var E='';if(x.size)E=x.size-(c?7:0);var F=u.frameId+'_input';w.$.write(['<html dir="'+B+'" lang="'+C+'"><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">','<form enctype="multipart/form-data" method="POST" dir="'+B+'" lang="'+C+'" action="',e.htmlEncode(x.action),'">','<label id="',u.labelId,'" for="',F,'" style="display:none">',e.htmlEncode(x.label),'</label>','<input id="',F,'" aria-labelledby="',u.labelId,'" type="file" name="',e.htmlEncode(x.id||'cke_upload'),'" size="',e.htmlEncode(E>0?E:''),'" />','</form>','</body></html>','<script>window.parent.CKEDITOR.tools.callFunction('+z+');','window.onbeforeunload = function() {window.parent.CKEDITOR.tools.callFunction('+A+')}</script>'].join(''));w.$.close();for(var G=0;G<y.length;G++)y[G].enable();};if(b.gecko)setTimeout(D,500);else D();},getValue:function(){return this.getInputElement().$.value||'';},setInitValue:function(){this._.initValue='';},eventProcessors:{onChange:function(u,v){if(!this._.domOnChangeRegistered){this.on('formLoaded',function(){this.getInputElement().on('change',function(){this.fire('change',{value:this.getValue()});},this);},this);this._.domOnChangeRegistered=true;}this.on('change',v);}},keyboardFocusable:true},true);k.dialog.fileButton.prototype=new k.dialog.button();k.dialog.fieldset.prototype=e.clone(k.dialog.hbox.prototype);a.dialog.addUIElement('text',n);a.dialog.addUIElement('password',n);a.dialog.addUIElement('textarea',o);a.dialog.addUIElement('checkbox',o);a.dialog.addUIElement('radio',o);a.dialog.addUIElement('button',o);a.dialog.addUIElement('select',o);a.dialog.addUIElement('file',o);a.dialog.addUIElement('fileButton',o);a.dialog.addUIElement('html',o);a.dialog.addUIElement('fieldset',p);})();j.add('panel',{beforeInit:function(m){m.ui.addHandler('panel',k.panel.handler);
+}});a.UI_PANEL='panel';k.panel=function(m,n){var o=this;if(n)e.extend(o,n);e.extend(o,{className:'',css:[]});o.id=e.getNextId();o.document=m;o._={blocks:{}};};k.panel.handler={create:function(m){return new k.panel(m);}};k.panel.prototype={renderHtml:function(m){var n=[];this.render(m,n);return n.join('');},render:function(m,n){var p=this;var o=p.id;n.push('<div class="',m.skinClass,'" lang="',m.langCode,'" role="presentation" style="display:none;z-index:'+(m.config.baseFloatZIndex+1)+'">'+'<div'+' id=',o,' dir=',m.lang.dir,' role="presentation" class="cke_panel cke_',m.lang.dir);if(p.className)n.push(' ',p.className);n.push('">');if(p.forceIFrame||p.css.length){n.push('<iframe id="',o,'_frame" frameborder="0" role="application" src="javascript:void(');n.push(b.isCustomDomain()?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');n.push(')"></iframe>');}n.push('</div></div>');return o;},getHolderElement:function(){var m=this._.holder;if(!m){if(this.forceIFrame||this.css.length){var n=this.document.getById(this.id+'_frame'),o=n.getParent(),p=o.getAttribute('dir'),q=o.getParent().getAttribute('class'),r=o.getParent().getAttribute('lang'),s=n.getFrameDocument();b.iOS&&o.setStyles({overflow:'scroll','-webkit-overflow-scrolling':'touch'});var t=e.addFunction(e.bind(function(w){this.isLoaded=true;if(this.onLoad)this.onLoad();},this)),u='<!DOCTYPE html><html dir="'+p+'" class="'+q+'_container" lang="'+r+'">'+'<head>'+'<style>.'+q+'_container{visibility:hidden}</style>'+e.buildStyleHtml(this.css)+'</head>'+'<body class="cke_'+p+' cke_panel_frame '+b.cssClass+'" style="margin:0;padding:0"'+' onload="( window.CKEDITOR || window.parent.CKEDITOR ).tools.callFunction('+t+');"></body>'+'</html>';s.write(u);var v=s.getWindow();v.$.CKEDITOR=a;s.on('key'+(b.opera?'press':'down'),function(w){var z=this;var x=w.data.getKeystroke(),y=z.document.getById(z.id).getAttribute('dir');if(z._.onKeyDown&&z._.onKeyDown(x)===false){w.data.preventDefault();return;}if(x==27||x==(y=='rtl'?39:37))if(z.onEscape&&z.onEscape(x)===false)w.data.preventDefault();},this);m=s.getBody();m.unselectable();b.air&&e.callFunction(t);}else m=this.document.getById(this.id);this._.holder=m;}return m;},addBlock:function(m,n){var o=this;n=o._.blocks[m]=n instanceof k.panel.block?n:new k.panel.block(o.getHolderElement(),n);if(!o._.currentBlock)o.showBlock(m);return n;},getBlock:function(m){return this._.blocks[m];},showBlock:function(m){var r=this;var n=r._.blocks,o=n[m],p=r._.currentBlock,q=!r.forceIFrame||c?r._.holder:r.document.getById(r.id+'_frame');
+if(p){q.removeAttributes(p.attributes);p.hide();}r._.currentBlock=o;q.setAttributes(o.attributes);a.fire('ariaWidget',q);o._.focusIndex=-1;r._.onKeyDown=o.onKeyDown&&e.bind(o.onKeyDown,o);o.show();return o;},destroy:function(){this.element&&this.element.remove();}};k.panel.block=e.createClass({$:function(m,n){var o=this;o.element=m.append(m.getDocument().createElement('div',{attributes:{tabIndex:-1,'class':'cke_panel_block',role:'presentation'},styles:{display:'none'}}));if(n)e.extend(o,n);if(!o.attributes.title)o.attributes.title=o.attributes['aria-label'];o.keys={};o._.focusIndex=-1;o.element.disableContextMenu();},_:{markItem:function(m){var p=this;if(m==-1)return;var n=p.element.getElementsByTag('a'),o=n.getItem(p._.focusIndex=m);if(b.webkit||b.opera)o.getDocument().getWindow().focus();o.focus();p.onMark&&p.onMark(o);}},proto:{show:function(){this.element.setStyle('display','');},hide:function(){var m=this;if(!m.onHide||m.onHide.call(m)!==true)m.element.setStyle('display','none');},onKeyDown:function(m){var r=this;var n=r.keys[m];switch(n){case 'next':var o=r._.focusIndex,p=r.element.getElementsByTag('a'),q;while(q=p.getItem(++o)){if(q.getAttribute('_cke_focus')&&q.$.offsetWidth){r._.focusIndex=o;q.focus();break;}}return false;case 'prev':o=r._.focusIndex;p=r.element.getElementsByTag('a');while(o>0&&(q=p.getItem(--o))){if(q.getAttribute('_cke_focus')&&q.$.offsetWidth){r._.focusIndex=o;q.focus();break;}}return false;case 'click':case 'mouseup':o=r._.focusIndex;q=o>=0&&r.element.getElementsByTag('a').getItem(o);if(q)q.$[n]?q.$[n]():q.$['on'+n]();return false;}return true;}}});j.add('listblock',{requires:['panel'],onLoad:function(){k.panel.prototype.addListBlock=function(m,n){return this.addBlock(m,new k.listBlock(this.getHolderElement(),n));};k.listBlock=e.createClass({base:k.panel.block,$:function(m,n){var q=this;n=n||{};var o=n.attributes||(n.attributes={});(q.multiSelect=!!n.multiSelect)&&(o['aria-multiselectable']=true);!o.role&&(o.role='listbox');q.base.apply(q,arguments);var p=q.keys;p[40]='next';p[9]='next';p[38]='prev';p[2228224+9]='prev';p[32]=c?'mouseup':'click';c&&(p[13]='mouseup');q._.pendingHtml=[];q._.items={};q._.groups={};},_:{close:function(){if(this._.started){this._.pendingHtml.push('</ul>');delete this._.started;}},getClick:function(){if(!this._.click)this._.click=e.addFunction(function(m){var o=this;var n=true;if(o.multiSelect)n=o.toggle(m);else o.mark(m);if(o.onClick)o.onClick(m,n);},this);return this._.click;}},proto:{add:function(m,n,o){var r=this;
+var p=r._.pendingHtml,q=e.getNextId();if(!r._.started){p.push('<ul role="presentation" class=cke_panel_list>');r._.started=1;r._.size=r._.size||0;}r._.items[m]=q;p.push('<li id=',q,' class=cke_panel_listItem role=presentation><a id="',q,'_option" _cke_focus=1 hidefocus=true title="',o||m,'" href="javascript:void(\'',m,"')\" "+(c?'onclick="return false;" onmouseup':'onclick')+'="CKEDITOR.tools.callFunction(',r._.getClick(),",'",m,"'); return false;\"",' role="option">',n||m,'</a></li>');},startGroup:function(m){this._.close();var n=e.getNextId();this._.groups[m]=n;this._.pendingHtml.push('<h1 role="presentation" id=',n,' class=cke_panel_grouptitle>',m,'</h1>');},commit:function(){var m=this;m._.close();m.element.appendHtml(m._.pendingHtml.join(''));delete m._.size;m._.pendingHtml=[];},toggle:function(m){var n=this.isMarked(m);if(n)this.unmark(m);else this.mark(m);return!n;},hideGroup:function(m){var n=this.element.getDocument().getById(this._.groups[m]),o=n&&n.getNext();if(n){n.setStyle('display','none');if(o&&o.getName()=='ul')o.setStyle('display','none');}},hideItem:function(m){this.element.getDocument().getById(this._.items[m]).setStyle('display','none');},showAll:function(){var m=this._.items,n=this._.groups,o=this.element.getDocument();for(var p in m)o.getById(m[p]).setStyle('display','');for(var q in n){var r=o.getById(n[q]),s=r.getNext();r.setStyle('display','');if(s&&s.getName()=='ul')s.setStyle('display','');}},mark:function(m){var p=this;if(!p.multiSelect)p.unmarkAll();var n=p._.items[m],o=p.element.getDocument().getById(n);o.addClass('cke_selected');p.element.getDocument().getById(n+'_option').setAttribute('aria-selected',true);p.onMark&&p.onMark(o);},unmark:function(m){var q=this;var n=q.element.getDocument(),o=q._.items[m],p=n.getById(o);p.removeClass('cke_selected');n.getById(o+'_option').removeAttribute('aria-selected');q.onUnmark&&q.onUnmark(p);},unmarkAll:function(){var q=this;var m=q._.items,n=q.element.getDocument();for(var o in m){var p=m[o];n.getById(p).removeClass('cke_selected');n.getById(p+'_option').removeAttribute('aria-selected');}q.onUnmark&&q.onUnmark();},isMarked:function(m){return this.element.getDocument().getById(this._.items[m]).hasClass('cke_selected');},focus:function(m){this._.focusIndex=-1;if(m){var n=this.element.getDocument().getById(this._.items[m]).getFirst(),o=this.element.getElementsByTag('a'),p,q=-1;while(p=o.getItem(++q)){if(p.equals(n)){this._.focusIndex=q;break;}}setTimeout(function(){n.focus();},0);}}}});}});a.themes.add('default',(function(){var m={};
+function n(o,p){var q,r;r=o.config.sharedSpaces;r=r&&r[p];r=r&&a.document.getById(r);if(r){var s='<span class="cke_shared " dir="'+o.lang.dir+'"'+'>'+'<span class="'+o.skinClass+' '+o.id+' cke_editor_'+o.name+'">'+'<span class="'+b.cssClass+'">'+'<span class="cke_wrapper cke_'+o.lang.dir+'">'+'<span class="cke_editor">'+'<div class="cke_'+p+'">'+'</div></span></span></span></span></span>',t=r.append(h.createFromHtml(s,r.getDocument()));if(r.getCustomData('cke_hasshared'))t.hide();else r.setCustomData('cke_hasshared',1);q=t.getChild([0,0,0,0]);!o.sharedSpaces&&(o.sharedSpaces={});o.sharedSpaces[p]=q;o.on('focus',function(){for(var u=0,v,w=r.getChildren();v=w.getItem(u);u++){if(v.type==1&&!v.equals(t)&&v.hasClass('cke_shared'))v.hide();}t.show();});o.on('destroy',function(){t.remove();});}return q;};return{build:function(o,p){var q=o.name,r=o.element,s=o.elementMode;if(!r||s==0)return;if(s==1)r.hide();var t=o.fire('themeSpace',{space:'top',html:''}).html,u=o.fire('themeSpace',{space:'contents',html:''}).html,v=o.fireOnce('themeSpace',{space:'bottom',html:''}).html,w=u&&o.config.height,x=o.config.tabIndex||o.element.getAttribute('tabindex')||0;if(!u)w='auto';else if(!isNaN(w))w+='px';var y='',z=o.config.width;if(z){if(!isNaN(z))z+='px';y+='width: '+z+';';}var A=t&&n(o,'top'),B=n(o,'bottom');A&&(A.setHtml(t),t='');B&&(B.setHtml(v),v='');var C='<style>.'+o.skinClass+'{visibility:hidden;}</style>';if(m[o.skinClass])C='';else m[o.skinClass]=1;var D=h.createFromHtml(['<span id="cke_',q,'" class="',o.skinClass,' ',o.id,' cke_editor_',q,'" dir="',o.lang.dir,'" title="',b.gecko?' ':'','" lang="',o.langCode,'"'+(b.webkit?' tabindex="'+x+'"':'')+' role="application"'+' aria-labelledby="cke_',q,'_arialbl"'+(y?' style="'+y+'"':'')+'>'+'<span id="cke_',q,'_arialbl" class="cke_voice_label">'+o.lang.editor+'</span>'+'<span class="',b.cssClass,'" role="presentation"><span class="cke_wrapper cke_',o.lang.dir,'" role="presentation"><table class="cke_editor" border="0" cellspacing="0" cellpadding="0" role="presentation"><tbody><tr',t?'':' style="display:none"',' role="presentation"><td id="cke_top_',q,'" class="cke_top" role="presentation">',t,'</td></tr><tr',u?'':' style="display:none"',' role="presentation"><td id="cke_contents_',q,'" class="cke_contents" style="height:',w,'" role="presentation">',u,'</td></tr><tr',v?'':' style="display:none"',' role="presentation"><td id="cke_bottom_',q,'" class="cke_bottom" role="presentation">',v,'</td></tr></tbody></table>'+C+'</span>'+'</span>'+'</span>'].join(''));
+D.getChild([1,0,0,0,0]).unselectable();D.getChild([1,0,0,0,2]).unselectable();if(s==1)D.insertAfter(r);else r.append(D);o.container=D;D.disableContextMenu();o.on('contentDirChanged',function(E){var F=(o.lang.dir!=E.data?'add':'remove')+'Class';D.getChild(1)[F]('cke_mixed_dir_content');var G=this.sharedSpaces&&this.sharedSpaces[this.config.toolbarLocation];G&&G.getParent().getParent()[F]('cke_mixed_dir_content');});o.fireOnce('themeLoaded');o.fireOnce('uiReady');},buildDialog:function(o){var p=e.getNextNumber(),q=h.createFromHtml(['<div class="',o.id,'_dialog cke_editor_',o.name.replace('.','\\.'),'_dialog cke_skin_',o.skinName,'" dir="',o.lang.dir,'" lang="',o.langCode,'" role="dialog" aria-labelledby="%title#"><table class="cke_dialog',' '+b.cssClass,' cke_',o.lang.dir,'" style="position:absolute" role="presentation"><tr><td role="presentation"><div class="%body" role="presentation"><div id="%title#" class="%title" role="presentation"></div><a id="%close_button#" class="%close_button" href="javascript:void(0)" title="'+o.lang.common.close+'" role="button"><span class="cke_label">X</span></a>'+'<div id="%tabs#" class="%tabs" role="tablist"></div>'+'<table class="%contents" role="presentation">'+'<tr>'+'<td id="%contents#" class="%contents" role="presentation"></td>'+'</tr>'+'<tr>'+'<td id="%footer#" class="%footer" role="presentation"></td>'+'</tr>'+'</table>'+'</div>'+'<div id="%tl#" class="%tl"></div>'+'<div id="%tc#" class="%tc"></div>'+'<div id="%tr#" class="%tr"></div>'+'<div id="%ml#" class="%ml"></div>'+'<div id="%mr#" class="%mr"></div>'+'<div id="%bl#" class="%bl"></div>'+'<div id="%bc#" class="%bc"></div>'+'<div id="%br#" class="%br"></div>'+'</td></tr>'+'</table>',c?'':'<style>.cke_dialog{visibility:hidden;}</style>','</div>'].join('').replace(/#/g,'_'+p).replace(/%/g,'cke_dialog_')),r=q.getChild([0,0,0,0,0]),s=r.getChild(0),t=r.getChild(1);if(c&&!b.ie6Compat){var u=b.isCustomDomain(),v='javascript:void(function(){'+encodeURIComponent('document.open();'+(u?'document.domain="'+document.domain+'";':'')+'document.close();')+'}())',w=h.createFromHtml('<iframe frameBorder="0" class="cke_iframe_shim" src="'+v+'"'+' tabIndex="-1"'+'></iframe>');w.appendTo(r.getParent());}s.unselectable();t.unselectable();return{element:q,parts:{dialog:q.getChild(0),title:s,close:t,tabs:r.getChild(2),contents:r.getChild([3,0,0,0]),footer:r.getChild([3,0,1,0])}};},destroy:function(o){var p=o.container,q=o.element;if(p){p.clearCustomData();p.remove();}if(q){q.clearCustomData();
+o.elementMode==1&&q.show();delete o.element;}}};})());a.editor.prototype.getThemeSpace=function(m){var n='cke_'+m,o=this._[n]||(this._[n]=a.document.getById(n+'_'+this.name));return o;};a.editor.prototype.resize=function(m,n,o,p){var v=this;var q=v.container,r=a.document.getById('cke_contents_'+v.name),s=b.webkit&&v.document&&v.document.getWindow().$.frameElement,t=p?q.getChild(1):q;t.setSize('width',m,true);s&&(s.style.width='1%');var u=o?0:(t.$.offsetHeight||0)-(r.$.clientHeight||0);r.setStyle('height',Math.max(n-u,0)+'px');s&&(s.style.width='100%');v.fire('resize');};a.editor.prototype.getResizable=function(m){return m?a.document.getById('cke_contents_'+this.name):this.container;};})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/config.js b/sm-shop/src/main/webapp/resources/js/ckeditor/config.js
new file mode 100755
index 0000000..44dd1e4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/config.js
@@ -0,0 +1,11 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.editorConfig = function( config )
+{
+ // Define changes to default configuration here. For example:
+ // config.language = 'fr';
+ // config.uiColor = '#AADC6E';
+};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/images/spacer.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/images/spacer.gif
new file mode 100755
index 0000000..5bfd67a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/images/spacer.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/_languages.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/_languages.js
new file mode 100755
index 0000000..b738583
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/_languages.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+var CKEDITOR_LANGS=(function(){var b={af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',cy:'Welsh',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-gb':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',ka:'Georgian',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},c=[];for(var d in b)c.push({code:d,name:b[d]});c.sort(function(e,f){return e.name<f.name?-1:1;});return c;})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/_translationstatus.txt b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/_translationstatus.txt
new file mode 100755
index 0000000..467a733
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/_translationstatus.txt
@@ -0,0 +1,64 @@
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+
+af.js Found: 548 Missing: 29
+ar.js Found: 470 Missing: 107
+bg.js Found: 394 Missing: 183
+bn.js Found: 292 Missing: 285
+bs.js Found: 175 Missing: 402
+ca.js Found: 549 Missing: 28
+cs.js Found: 577 Missing: 0
+cy.js Found: 575 Missing: 2
+da.js Found: 575 Missing: 2
+de.js Found: 575 Missing: 2
+el.js Found: 391 Missing: 186
+en-au.js Found: 347 Missing: 230
+en-ca.js Found: 345 Missing: 232
+en-gb.js Found: 517 Missing: 60
+eo.js Found: 577 Missing: 0
+es.js Found: 575 Missing: 2
+et.js Found: 577 Missing: 0
+eu.js Found: 417 Missing: 160
+fa.js Found: 575 Missing: 2
+fi.js Found: 575 Missing: 2
+fo.js Found: 575 Missing: 2
+fr-ca.js Found: 319 Missing: 258
+fr.js Found: 575 Missing: 2
+gl.js Found: 292 Missing: 285
+gu.js Found: 575 Missing: 2
+he.js Found: 575 Missing: 2
+hi.js Found: 327 Missing: 250
+hr.js Found: 575 Missing: 2
+hu.js Found: 572 Missing: 5
+id.js Found: 1 Missing: 576
+is.js Found: 326 Missing: 251
+it.js Found: 577 Missing: 0
+ja.js Found: 493 Missing: 84
+ka.js Found: 568 Missing: 9
+km.js Found: 286 Missing: 291
+ko.js Found: 304 Missing: 273
+lt.js Found: 575 Missing: 2
+lv.js Found: 294 Missing: 283
+mk.js Found: 0 Missing: 577
+mn.js Found: 320 Missing: 257
+ms.js Found: 276 Missing: 301
+nb.js Found: 577 Missing: 0
+nl.js Found: 575 Missing: 2
+no.js Found: 577 Missing: 0
+pl.js Found: 575 Missing: 2
+pt-br.js Found: 577 Missing: 0
+pt.js Found: 326 Missing: 251
+ro.js Found: 432 Missing: 145
+ru.js Found: 575 Missing: 2
+sk.js Found: 364 Missing: 213
+sl.js Found: 426 Missing: 151
+sr-latn.js Found: 287 Missing: 290
+sr.js Found: 286 Missing: 291
+sv.js Found: 550 Missing: 27
+th.js Found: 298 Missing: 279
+tr.js Found: 575 Missing: 2
+ug.js Found: 572 Missing: 5
+uk.js Found: 575 Missing: 2
+vi.js Found: 577 Missing: 0
+zh-cn.js Found: 577 Missing: 0
+zh.js Found: 433 Missing: 144
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/af.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/af.js
new file mode 100755
index 0000000..8cc3c7c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/af.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.af={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Teksverwerker',source:'Bron',newPage:'Nuwe bladsy',save:'Bewaar',preview:'Voorbeeld',cut:'Knip',copy:'Kopiëer',paste:'Plak',print:'Druk',underline:'Onderstreep',bold:'Vet',italic:'Skuins',selectAll:'Selekteer alles',removeFormat:'Verwyder opmaak',strike:'Deurstreep',subscript:'Onderskrif',superscript:'Bo-skrif',horizontalrule:'Horisontale lyn invoeg',pagebreak:'Bladsy-einde invoeg',pagebreakAlt:'Bladsy-einde',unlink:'Verwyder skakel',undo:'Ontdoen',redo:'Oordoen',common:{browseServer:'Blaai op bediener',url:'URL',protocol:'Protokol',upload:'Oplaai',uploadSubmit:'Stuur na bediener',image:'Afbeelding',flash:'Flash',form:'Vorm',checkbox:'Merkhokkie',radio:'Radioknoppie',textField:'Teksveld',textarea:'Teks-area',hiddenField:'Blinde veld',button:'Knop',select:'Keuseveld',imageButton:'Afbeeldingsknop',notSet:'<geen instelling>',id:'Id',name:'Naam',langDir:'Skryfrigting',langDirLtr:'Links na regs (LTR)',langDirRtl:'Regs na links (RTL)',langCode:'Taalkode',longDescr:'Lang beskrywing URL',cssClass:'CSS klasse',advisoryTitle:'Aanbevole titel',cssStyle:'Styl',ok:'OK',cancel:'Kanselleer',close:'Sluit',preview:'Voorbeeld',generalTab:'Algemeen',advancedTab:'Gevorderd',validateNumberFailed:"Hierdie waarde is nie 'n getal nie.",confirmNewPage:"Alle wysiginge sal verlore gaan. Is u seker dat u 'n nuwe bladsy wil laai?",confirmCancel:'Sommige opsies is gewysig. Is u seker dat u hierdie dialoogvenster wil sluit?',options:'Opsies',target:'Doel',targetNew:'Nuwe venster (_blank)',targetTop:'Boonste venster (_top)',targetSelf:'Selfde venster (_self)',targetParent:'Oorspronklike venster (_parent)',langDirLTR:'Links na Regs (LTR)',langDirRTL:'Regs na Links (RTL)',styles:'Styl',cssClasses:'CSS klasse',width:'Breedte',height:'Hoogte',align:'Oplyn',alignLeft:'Links',alignRight:'Regs',alignCenter:'Sentreer',alignTop:'Bo',alignMiddle:'Middel',alignBottom:'Onder',invalidHeight:"Hoogte moet 'n getal wees",invalidWidth:"Breedte moet 'n getal wees.",invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, nie beskikbaar nie</span>'},contextmenu:{options:'Konteks Spyskaart-opsies'},specialChar:{toolbar:'Voeg spesiaale karakter in',title:'Kies spesiale karakter',options:'Spesiale karakter-opsies'},link:{toolbar:'Skakel invoeg/wysig',other:'<ander>',menu:'Wysig skakel',title:'Skakel',info:'Skakel informasie',target:'Doel',upload:'Oplaai',advanced:'Gevorderd',type:'Skakelsoort',toUrl:'URL',toAnchor:'Anker in bladsy',toEmail:'E-pos',targetFrame:'<raam>',targetPopup:'<opspringvenster>',targetFrameName:'Naam van doelraam',targetPopupName:'Naam van opspringvenster',popupFeatures:'Eienskappe van opspringvenster',popupResizable:'Herskaalbaar',popupStatusBar:'Statusbalk',popupLocationBar:'Adresbalk',popupToolbar:'Werkbalk',popupMenuBar:'Spyskaartbalk',popupFullScreen:'Volskerm (IE)',popupScrollBars:'Skuifbalke',popupDependent:'Afhanklik (Netscape)',popupLeft:'Posisie links',popupTop:'Posisie bo',id:'Id',langDir:'Skryfrigting',langDirLTR:'Links na regs (LTR)',langDirRTL:'Regs na links (RTL)',acccessKey:'Toegangsleutel',name:'Naam',langCode:'Taalkode',tabIndex:'Tab indeks',advisoryTitle:'Aanbevole titel',advisoryContentType:'Aanbevole inhoudstipe',cssClasses:'CSS klasse',charset:'Karakterstel van geskakelde bron',styles:'Styl',rel:'Relationship',selectAnchor:"Kies 'n anker",anchorName:'Op ankernaam',anchorId:'Op element Id',emailAddress:'E-posadres',emailSubject:'Berig-onderwerp',emailBody:'Berig-inhoud',noAnchors:'(Geen ankers beskikbaar in dokument)',noUrl:'Gee die skakel se URL',noEmail:'Gee die e-posadres'},anchor:{toolbar:'Anker byvoeg/verander',menu:'Anker-eienskappe',title:'Anker-eienskappe',name:'Ankernaam',errorName:'Voltooi die ankernaam asseblief',remove:'Remove Anchor'},list:{numberedTitle:'Eienskappe van genommerde lys',bulletedTitle:'Eienskappe van ongenommerde lys',type:'Tipe',start:'Begin',validateStartNumber:"Beginnommer van lys moet 'n heelgetal wees.",circle:'Sirkel',disc:'Skyf',square:'Vierkant',none:'Geen',notset:'<nie ingestel nie>',armenian:'Armeense nommering',georgian:'Georgiese nommering (an, ban, gan, ens.)',lowerRoman:'Romeinse kleinletters (i, ii, iii, iv, v, ens.)',upperRoman:'Romeinse hoofletters (I, II, III, IV, V, ens.)',lowerAlpha:'Kleinletters (a, b, c, d, e, ens.)',upperAlpha:'Hoofletters (A, B, C, D, E, ens.)',lowerGreek:'Griekse kleinletters (alpha, beta, gamma, ens.)',decimal:'Desimale syfers (1, 2, 3, ens.)',decimalLeadingZero:'Desimale syfers met voorloopnul (01, 02, 03, ens.)'},findAndReplace:{title:'Soek en vervang',find:'Soek',replace:'Vervang',findWhat:'Soek na:',replaceWith:'Vervang met:',notFoundMsg:'Teks nie gevind nie.',findOptions:'Find Options',matchCase:'Hoof/kleinletter sensitief',matchWord:'Hele woord moet voorkom',matchCyclic:'Soek deurlopend',replaceAll:'Vervang alles',replaceSuccessMsg:'%1 voorkoms(te) vervang.'},table:{toolbar:'Tabel',title:'Tabel eienskappe',menu:'Tabel eienskappe',deleteTable:'Verwyder tabel',rows:'Rye',columns:'Kolomme',border:'Randbreedte',widthPx:'piksels',widthPc:'persent',widthUnit:'breedte-eenheid',cellSpace:'Sel-afstand',cellPad:'Sel-spasie',caption:'Naam',summary:'Opsomming',headers:'Opskrifte',headersNone:'Geen',headersColumn:'Eerste kolom',headersRow:'Eerste ry',headersBoth:'Beide ',invalidRows:"Aantal rye moet 'n getal groter as 0 wees.",invalidCols:"Aantal kolomme moet 'n getal groter as 0 wees.",invalidBorder:"Randbreedte moet 'n getal wees.",invalidWidth:"Tabelbreedte moet 'n getal wees.",invalidHeight:"Tabelhoogte moet 'n getal wees.",invalidCellSpacing:"Sel-afstand moet 'n getal wees.",invalidCellPadding:"Sel-spasie moet 'n getal wees.",cell:{menu:'Sel',insertBefore:'Voeg sel in voor',insertAfter:'Voeg sel in na',deleteCell:'Verwyder sel',merge:'Voeg selle saam',mergeRight:'Voeg saam na regs',mergeDown:'Voeg saam ondertoe',splitHorizontal:'Splits sel horisontaal',splitVertical:'Splits sel vertikaal',title:'Sel eienskappe',cellType:'Sel tipe',rowSpan:'Omspan rye',colSpan:'Omspan kolomme',wordWrap:'Woord terugloop',hAlign:'Horisontale oplyning',vAlign:'Vertikale oplyning',alignBaseline:'Basislyn',bgColor:'Agtergrondkleur',borderColor:'Randkleur',data:'Inhoud',header:'Opskrif',yes:'Ja',no:'Nee',invalidWidth:"Selbreedte moet 'n getal wees.",invalidHeight:"Selhoogte moet 'n getal wees.",invalidRowSpan:"Omspan rye moet 'n heelgetal wees.",invalidColSpan:"Omspan kolomme moet 'n heelgetal wees.",chooseColor:'Kies'},row:{menu:'Ry',insertBefore:'Voeg ry in voor',insertAfter:'Voeg ry in na',deleteRow:'Verwyder ry'},column:{menu:'Kolom',insertBefore:'Voeg kolom in voor',insertAfter:'Voeg kolom in na',deleteColumn:'Verwyder kolom'}},button:{title:'Knop eienskappe',text:'Teks (Waarde)',type:'Soort',typeBtn:'Knop',typeSbm:'Stuur',typeRst:'Maak leeg'},checkboxAndRadio:{checkboxTitle:'Merkhokkie eienskappe',radioTitle:'Radioknoppie eienskappe',value:'Waarde',selected:'Geselekteer'},form:{title:'Vorm eienskappe',menu:'Vorm eienskappe',action:'Aksie',method:'Metode',encoding:'Kodering'},select:{title:'Keuseveld eienskappe',selectInfo:'Info',opAvail:'Beskikbare opsies',value:'Waarde',size:'Grootte',lines:'Lyne',chkMulti:'Laat meer as een keuse toe',opText:'Teks',opValue:'Waarde',btnAdd:'Byvoeg',btnModify:'Wysig',btnUp:'Op',btnDown:'Af',btnSetValue:'Stel as geselekteerde waarde',btnDelete:'Verwyder'},textarea:{title:'Teks-area eienskappe',cols:'Kolomme',rows:'Rye'},textfield:{title:'Teksveld eienskappe',name:'Naam',value:'Waarde',charWidth:'Breedte (karakters)',maxChars:'Maksimum karakters',type:'Soort',typeText:'Teks',typePass:'Wagwoord'},hidden:{title:'Verborge veld eienskappe',name:'Naam',value:'Waarde'},image:{title:'Afbeelding eienskappe',titleButton:'Afbeeldingsknop eienskappe',menu:'Afbeelding eienskappe',infoTab:'Afbeelding informasie',btnUpload:'Stuur na bediener',upload:'Oplaai',alt:'Alternatiewe teks',lockRatio:'Vaste proporsie',resetSize:'Herstel grootte',border:'Rand',hSpace:'HSpasie',vSpace:'VSpasie',alertUrl:'Gee URL van afbeelding.',linkTab:'Skakel',button2Img:"Wil u die geselekteerde afbeeldingsknop vervang met 'n eenvoudige afbeelding?",img2Button:"Wil u die geselekteerde afbeelding vervang met 'n afbeeldingsknop?",urlMissing:'Die URL na die afbeelding ontbreek.',validateBorder:"Rand moet 'n heelgetal wees.",validateHSpace:"HSpasie moet 'n heelgetal wees.",validateVSpace:"VSpasie moet 'n heelgetal wees."},flash:{properties:'Flash eienskappe',propertiesTab:'Eienskappe',title:'Flash eienskappe',chkPlay:'Speel outomaties',chkLoop:'Herhaal',chkMenu:'Flash spyskaart aan',chkFull:'Laat volledige skerm toe',scale:'Skaal',scaleAll:'Wys alles',scaleNoBorder:'Geen rand',scaleFit:'Presiese pas',access:'Skrip toegang',accessAlways:'Altyd',accessSameDomain:'Selfde domeinnaam',accessNever:'Nooit',alignAbsBottom:'Absoluut-onder',alignAbsMiddle:'Absoluut-middel',alignBaseline:'Basislyn',alignTextTop:'Teks bo',quality:'Kwaliteit',qualityBest:'Beste',qualityHigh:'Hoog',qualityAutoHigh:'Outomaties hoog',qualityMedium:'Gemiddeld',qualityAutoLow:'Outomaties laag',qualityLow:'Laag',windowModeWindow:'Venster',windowModeOpaque:'Ondeursigtig',windowModeTransparent:'Deursigtig',windowMode:'Venster modus',flashvars:'Veranderlikes vir Flash',bgcolor:'Agtergrondkleur',hSpace:'HSpasie',vSpace:'VSpasie',validateSrc:'Voeg die URL in',validateHSpace:"HSpasie moet 'n heelgetal wees.",validateVSpace:"VSpasie moet 'n heelgetal wees."},spellCheck:{toolbar:'Speltoets',title:'Speltoetser',notAvailable:'Jammer, hierdie diens is nie nou beskikbaar nie.',errorLoading:'Fout by inlaai van diens: %s.',notInDic:'Nie in woordeboek nie',changeTo:'Verander na',btnIgnore:'Ignoreer',btnIgnoreAll:'Ignoreer alles',btnReplace:'Vervang',btnReplaceAll:'vervang alles',btnUndo:'Ontdoen',noSuggestions:'- Geen voorstel -',progress:'Spelling word getoets...',noMispell:'Klaar met speltoets: Geen foute nie',noChanges:'Klaar met speltoets: Geen woorde verander nie',oneChange:'Klaar met speltoets: Een woord verander',manyChanges:'Klaar met speltoets: %1 woorde verander',ieSpellDownload:'Speltoetser is nie geïnstalleer nie. Wil u dit nou aflaai?'},smiley:{toolbar:'Lagbekkie',title:'Voeg lagbekkie by',options:'Lagbekkie opsies'},elementsPath:{eleLabel:'Elemente-pad',eleTitle:'%1 element'},numberedlist:'Genommerde lys',bulletedlist:'Ongenommerde lys',indent:'Vergroot inspring',outdent:'Verklein inspring',justify:{left:'Links oplyn',center:'Sentreer',right:'Regs oplyn',block:'Uitvul'},blockquote:'Sitaatblok',clipboard:{title:'Byvoeg',cutError:'U blaaier se sekuriteitsinstelling belet die outomatiese knip-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).',copyError:'U blaaier se sekuriteitsinstelling belet die kopiëringsaksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+C).',pasteMsg:'Plak die teks in die volgende teks-area met die sleutelbordkombinasie (<STRONG>Ctrl/Cmd+V</STRONG>) en druk <STRONG>OK</STRONG>.',securityMsg:'Weens u blaaier se sekuriteitsinstelling is data op die knipbord nie toeganklik nie. U kan dit eers weer in hierdie venster plak.',pasteArea:'Plak-area'},pastefromword:{confirmCleanup:'Die teks wat u wil plak lyk asof dit uit Word gekopiëer is. Wil u dit eers skoonmaak voordat dit geplak word?',toolbar:'Plak vanuit Word',title:'Plak vanuit Word',error:"Die geplakte teks kon nie skoongemaak word nie, weens 'n interne fout"},pasteText:{button:'Plak as eenvoudige teks',title:'Plak as eenvoudige teks'},templates:{button:'Sjablone',title:'Inhoud Sjablone',options:'Sjabloon opsies',insertOption:'Vervang huidige inhoud',selectPromptMsg:'Kies die sjabloon om te gebruik in die redigeerder (huidige inhoud gaan verlore):',emptyListMsg:'(Geen sjablone gedefineer nie)'},showBlocks:'Toon blokke',stylesCombo:{label:'Styl',panelTitle:'Opmaak style',panelTitle1:'Blok style',panelTitle2:'Inlyn style',panelTitle3:'Objek style'},format:{label:'Opmaak',panelTitle:'Opmaak',tag_p:'Normaal',tag_pre:'Opgemaak',tag_address:'Adres',tag_h1:'Opskrif 1',tag_h2:'Opskrif 2',tag_h3:'Opskrif 3',tag_h4:'Opskrif 4',tag_h5:'Opskrif 5',tag_h6:'Opskrif 6',tag_div:'Normaal (DIV)'},div:{title:'Skep Div houer',toolbar:'Skep Div houer',cssClassInputLabel:'CSS klasse',styleSelectLabel:'Styl',IdInputLabel:'Id',languageCodeInputLabel:' Taalkode',inlineStyleInputLabel:'Inlyn Styl',advisoryTitleInputLabel:'Aanbevole Titel',langDirLabel:'Skryfrigting',langDirLTRLabel:'Links na regs (LTR)',langDirRTLLabel:'Regs na links (RTL)',edit:'Wysig Div',remove:'Verwyder Div'},iframe:{title:'IFrame Eienskappe',toolbar:'IFrame',noUrl:'Gee die iframe URL',scrolling:'Skuifbalke aan',border:'Wys rand van raam'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Fontnaam'},fontSize:{label:'Grootte',voiceLabel:'Fontgrootte',panelTitle:'Fontgrootte'},colorButton:{textColorTitle:'Tekskleur',bgColorTitle:'Agtergrondkleur',panelTitle:'Kleure',auto:'Outomaties',more:'Meer Kleure...'},colors:{'000':'Swart',800000:'Meroen','8B4513':'Sjokoladebruin','2F4F4F':'Donkerleisteengrys','008080':'Blougroen','000080':'Vlootblou','4B0082':'Indigo',696969:'Donkergrys',B22222:'Rooibaksteen',A52A2A:'Bruin',DAA520:'Donkergeel','006400':'Donkergroen','40E0D0':'Turkoois','0000CD':'Middelblou',800080:'Pers',808080:'Grys',F00:'Rooi',FF8C00:'Donkeroranje',FFD700:'Goud','008000':'Groen','0FF':'Siaan','00F':'Blou',EE82EE:'Viooltjieblou',A9A9A9:'Donkergrys',FFA07A:'Ligsalm',FFA500:'Oranje',FFFF00:'Geel','00FF00':'Lemmetjie',AFEEEE:'Ligturkoois',ADD8E6:'Ligblou',DDA0DD:'Pruim',D3D3D3:'Liggrys',FFF0F5:'Linne',FAEBD7:'Ivoor',FFFFE0:'Liggeel',F0FFF0:'Heuningdou',F0FFFF:'Asuur',F0F8FF:'Ligte hemelsblou',E6E6FA:'Laventel',FFF:'Wit'},scayt:{title:'Speltoets terwyl u tik',opera_title:'Nie ondersteun deur Opera nie',enable:'SCAYT aan',disable:'SCAYT af',about:'SCAYT info',toggle:'SCAYT wissel aan/af',options:'Opsies',langs:'Tale',moreSuggestions:'Meer voorstelle',ignore:'Ignoreer',ignoreAll:'Ignoreer alles',addWord:'Voeg woord by',emptyDic:'Woordeboeknaam mag nie leeg wees nie.',optionsTab:'Opsies',allCaps:'Ignoreer woorde in hoofletters',ignoreDomainNames:'Ignoreer domeinname',mixedCase:'Ignoreer woorde met hoof- en kleinletters',mixedWithDigits:'Ignoreer woorde met syfers',languagesTab:'Tale',dictionariesTab:'Woordeboeke',dic_field_name:'Naam van woordeboek',dic_create:'Skep',dic_restore:'Herstel',dic_delete:'Verwijder',dic_rename:'Hernoem',dic_info:"Aanvanklik word die gebruikerswoordeboek in 'n koekie gestoor. Koekies is egter beperk in grootte. Wanneer die gebruikerswoordeboek te groot vir 'n koekie geword het, kan dit op ons bediener gestoor word. Om u persoonlike woordeboek op ons bediener te stoor, gee asb. 'n naam vir u woordeboek. Indien u alreeds 'n gestoorde woordeboek het, tik die naam en kliek op die Herstel knop.",aboutTab:'Info'},about:{title:'Info oor CKEditor',dlgTitle:'Info oor CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'Vir lisensie-informasie, besoek asb. ons webwerf:',copy:'Kopiereg © $1. Alle regte voorbehou.'},maximize:'Maksimaliseer',minimize:'Minimaliseer',fakeobjects:{anchor:'Anker',flash:'Flash animasie',iframe:'IFrame',hiddenfield:'Verborge veld',unknown:'Onbekende objek'},resize:'Sleep om te herskaal',colordialog:{title:'Kies kleur',options:'Kleuropsies',highlight:'Aktief',selected:'Geselekteer',clear:'Herstel'},toolbarCollapse:'Verklein werkbalk',toolbarExpand:'Vergroot werkbalk',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Skryfrigting van links na regs',rtl:'Skryfrigting van regs na links'},docprops:{label:'Dokument Eienskappe',title:'Dokument Eienskappe',design:'Design',meta:'Meta Data',chooseColor:'Kies',other:'<ander>',docTitle:'Bladsy Opskrif',charset:'Karakterstel Kodeering',charsetOther:'Ander Karakterstel Kodeering',charsetASCII:'ASCII',charsetCE:'Sentraal Europa',charsetCT:'Chinees Traditioneel (Big5)',charsetCR:'Cyrillic',charsetGR:'Grieks',charsetJP:'Japanees',charsetKR:'Koreans',charsetTR:'Turks',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Dokument Opskrif Soort',docTypeOther:'Ander Dokument Opskrif Soort',xhtmlDec:'Voeg XHTML verklaring by',bgColor:'Agtergrond kleur',bgImage:'Agtergrond Beeld URL',bgFixed:'Vasgeklemde Agtergrond',txtColor:'Tekskleur',margin:'Bladsy Rante',marginTop:'Bo',marginLeft:'Links',marginRight:'Regs',marginBottom:'Onder',metaKeywords:'Dokument Index Sleutelwoorde(comma verdeelt)',metaDescription:'Dokument Beskrywing',metaAuthor:'Skrywer',metaCopyright:'Kopiereg',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ar.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ar.js
new file mode 100755
index 0000000..0e0a892
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ar.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ar={dir:'rtl',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'المصدر',newPage:'صفحة جديدة',save:'حفظ',preview:'معاينة الصفحة',cut:'قص',copy:'نسخ',paste:'لصق',print:'طباعة',underline:'تسطير',bold:'غامق',italic:'مائل',selectAll:'تحديد الكل',removeFormat:'إزالة التنسيقات',strike:'يتوسطه خط',subscript:'منخفض',superscript:'مرتفع',horizontalrule:'خط فاصل',pagebreak:'إدخال صفحة جديدة',pagebreakAlt:'Page Break',unlink:'إزالة رابط',undo:'تراجع',redo:'إعادة',common:{browseServer:'تصفح',url:'الرابط',protocol:'البروتوكول',upload:'رفع',uploadSubmit:'أرسل',image:'صورة',flash:'فلاش',form:'نموذج',checkbox:'خانة إختيار',radio:'زر اختيار',textField:'مربع نص',textarea:'مساحة نصية',hiddenField:'إدراج حقل خفي',button:'زر ضغط',select:'اختار',imageButton:'زر صورة',notSet:'<بدون تحديد>',id:'الرقم',name:'الاسم',langDir:'إتجاه النص',langDirLtr:'اليسار لليمين (LTR)',langDirRtl:'اليمين لليسار (RTL)',langCode:'رمز اللغة',longDescr:'الوصف التفصيلى',cssClass:'فئات التنسيق',advisoryTitle:'عنوان التقرير',cssStyle:'نمط',ok:'موافق',cancel:'إلغاء الأمر',close:'أغلق',preview:'استعراض',generalTab:'عام',advancedTab:'متقدم',validateNumberFailed:'لايوجد نتيجة',confirmNewPage:'ستفقد أي متغييرات اذا لم تقم بحفظها اولا. هل أنت متأكد أنك تريد صفحة جديدة؟',confirmCancel:'بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟',options:'خيارات',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'العرض',height:'الإرتفاع',align:'محاذاة',alignLeft:'يسار',alignRight:'يمين',alignCenter:'وسط',alignTop:'أعلى',alignMiddle:'وسط',alignBottom:'أسفل',invalidHeight:'الارتفاع يجب أن يكون عدداً.',invalidWidth:'العرض يجب أن يكون عدداً.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, غير متاح</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'إدراج خاص.ِ',title:'اختر الخواص',options:'Special Character Options'},link:{toolbar:'رابط',other:'<أخرى>',menu:'تحرير رابط',title:'إرتباط تشعبي',info:'معلومات الرابط',target:'هدف الرابط',upload:'رفع',advanced:'متقدم',type:'نوع الربط',toUrl:'URL',toAnchor:'مكان في هذا المستند',toEmail:'بريد إلكتروني',targetFrame:'<إطار>',targetPopup:'<نافذة منبثقة>',targetFrameName:'اسم الإطار المستهدف',targetPopupName:'اسم النافذة المنبثقة',popupFeatures:'خصائص النافذة المنبثقة',popupResizable:'قابلة التشكيل',popupStatusBar:'شريط الحالة',popupLocationBar:'شريط العنوان',popupToolbar:'شريط الأدوات',popupMenuBar:'القوائم الرئيسية',popupFullScreen:'ملئ الشاشة (IE)',popupScrollBars:'أشرطة التمرير',popupDependent:'تابع (Netscape)',popupLeft:'التمركز لليسار',popupTop:'التمركز للأعلى',id:'هوية',langDir:'إتجاه النص',langDirLTR:'اليسار لليمين (LTR)',langDirRTL:'اليمين لليسار (RTL)',acccessKey:'مفاتيح الإختصار',name:'الاسم',langCode:'كود النص',tabIndex:'الترتيب',advisoryTitle:'عنوان التقرير',advisoryContentType:'نوع التقرير',cssClasses:'فئات التنسيق',charset:'ترميز المادة المطلوبة',styles:'نمط',rel:'Relationship',selectAnchor:'اختر علامة مرجعية',anchorName:'حسب الاسم',anchorId:'حسب رقم العنصر',emailAddress:'عنوان البريد إلكتروني',emailSubject:'موضوع الرسالة',emailBody:'محتوى الرسالة',noAnchors:'(لا توجد علامات مرجعية في هذا المستند)',noUrl:'من فضلك أدخل عنوان الموقع الذي يشير إليه الرابط',noEmail:'من فضلك أدخل عنوان البريد الإلكتروني'},anchor:{toolbar:'إشارة مرجعية',menu:'تحرير الإشارة المرجعية',title:'خصائص الإشارة المرجعية',name:'اسم الإشارة المرجعية',errorName:'الرجاء كتابة اسم الإشارة المرجعية',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'بحث واستبدال',find:'بحث',replace:'إستبدال',findWhat:'البحث بـ:',replaceWith:'إستبدال بـ:',notFoundMsg:'لم يتم العثور على النص المحدد.',findOptions:'Find Options',matchCase:'مطابقة حالة الأحرف',matchWord:'مطابقة بالكامل',matchCyclic:'مطابقة دورية',replaceAll:'إستبدال الكل',replaceSuccessMsg:'تم استبدال 1% من الحالات '},table:{toolbar:'جدول',title:'خصائص الجدول',menu:'خصائص الجدول',deleteTable:'حذف الجدول',rows:'صفوف',columns:'أعمدة',border:'الحدود',widthPx:'بكسل',widthPc:'بالمئة',widthUnit:'width unit',cellSpace:'تباعد الخلايا',cellPad:'المسافة البادئة',caption:'الوصف',summary:'الخلاصة',headers:'العناوين',headersNone:'بدون',headersColumn:'العمود الأول',headersRow:'الصف الأول',headersBoth:'كلاهما',invalidRows:'عدد الصفوف يجب أن يكون عدداً أكبر من صفر.',invalidCols:'عدد الأعمدة يجب أن يكون عدداً أكبر من صفر.',invalidBorder:'حجم الحد يجب أن يكون عدداً.',invalidWidth:'عرض الجدول يجب أن يكون عدداً.',invalidHeight:'ارتفاع الجدول يجب أن يكون عدداً.',invalidCellSpacing:'المسافة بين الخلايا يجب أن تكون عدداً.',invalidCellPadding:'المسافة البادئة يجب أن تكون عدداً',cell:{menu:'خلية',insertBefore:'إدراج خلية قبل',insertAfter:'إدراج خلية بعد',deleteCell:'حذف خلية',merge:'دمج خلايا',mergeRight:'دمج لليمين',mergeDown:'دمج للأسفل',splitHorizontal:'تقسيم الخلية أفقياً',splitVertical:'تقسيم الخلية عمودياً',title:'خصائص الخلية',cellType:'نوع الخلية',rowSpan:'امتداد الصفوف',colSpan:'امتداد الأعمدة',wordWrap:'التفاف النص',hAlign:'محاذاة أفقية',vAlign:'محاذاة رأسية',alignBaseline:'خط القاعدة',bgColor:'لون الخلفية',borderColor:'لون الحدود',data:'بيانات',header:'عنوان',yes:'نعم',no:'لا',invalidWidth:'عرض الخلية يجب أن يكون عدداً.',invalidHeight:'ارتفاع الخلية يجب أن يكون عدداً.',invalidRowSpan:'امتداد الصفوف يجب أن يكون عدداً صحيحاً.',invalidColSpan:'امتداد الأعمدة يجب أن يكون عدداً صحيحاً.',chooseColor:'اختر'},row:{menu:'صف',insertBefore:'إدراج صف قبل',insertAfter:'إدراج صف بعد',deleteRow:'حذف صفوف'},column:{menu:'عمود',insertBefore:'إدراج عمود قبل',insertAfter:'إدراج عمود بعد',deleteColumn:'حذف أعمدة'}},button:{title:'خصائص زر الضغط',text:'القيمة/التسمية',type:'نوع الزر',typeBtn:'زر',typeSbm:'إرسال',typeRst:'إعادة تعيين'},checkboxAndRadio:{checkboxTitle:'خصائص خانة الإختيار',radioTitle:'خصائص زر الخيار',value:'القيمة',selected:'محدد'},form:{title:'خصائص النموذج',menu:'خصائص النموذج',action:'اسم الملف',method:'الأسلوب',encoding:'تشفير'},select:{title:'خصائص اختيار الحقل',selectInfo:'اختار معلومات',opAvail:'الخيارات المتاحة',value:'القيمة',size:'الحجم',lines:'الأسطر',chkMulti:'السماح بتحديدات متعددة',opText:'النص',opValue:'القيمة',btnAdd:'إضافة',btnModify:'تعديل',btnUp:'أعلى',btnDown:'أسفل',btnSetValue:'إجعلها محددة',btnDelete:'إزالة'},textarea:{title:'خصائص مساحة النص',cols:'الأعمدة',rows:'الصفوف'},textfield:{title:'خصائص مربع النص',name:'الاسم',value:'القيمة',charWidth:'عرض السمات',maxChars:'اقصى عدد للسمات',type:'نوع المحتوى',typeText:'نص',typePass:'كلمة مرور'},hidden:{title:'خصائص الحقل المخفي',name:'الاسم',value:'القيمة'},image:{title:'خصائص الصورة',titleButton:'خصائص زر الصورة',menu:'خصائص الصورة',infoTab:'معلومات الصورة',btnUpload:'أرسلها للخادم',upload:'رفع',alt:'عنوان الصورة',lockRatio:'تناسق الحجم',resetSize:'إستعادة الحجم الأصلي',border:'سمك الحدود',hSpace:'تباعد أفقي',vSpace:'تباعد عمودي',alertUrl:'فضلاً أكتب الموقع الذي توجد عليه هذه الصورة.',linkTab:'الرابط',button2Img:'هل تريد تحويل زر الصورة المختار إلى صورة بسيطة؟',img2Button:'هل تريد تحويل الصورة المختارة إلى زر صورة؟',urlMissing:'عنوان مصدر الصورة مفقود',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'خصائص الفلاش',propertiesTab:'الخصائص',title:'خصائص فيلم الفلاش',chkPlay:'تشغيل تلقائي',chkLoop:'تكرار',chkMenu:'تمكين قائمة فيلم الفلاش',chkFull:'ملء الشاشة',scale:'الحجم',scaleAll:'إظهار الكل',scaleNoBorder:'بلا حدود',scaleFit:'ضبط تام',access:'دخول النص البرمجي',accessAlways:'دائماً',accessSameDomain:'نفس النطاق',accessNever:'مطلقاً',alignAbsBottom:'أسفل النص',alignAbsMiddle:'وسط السطر',alignBaseline:'على السطر',alignTextTop:'أعلى النص',quality:'جودة',qualityBest:'أفضل',qualityHigh:'عالية',qualityAutoHigh:'عالية تلقائياً',qualityMedium:'متوسطة',qualityAutoLow:'منخفضة تلقائياً',qualityLow:'منخفضة',windowModeWindow:'نافذة',windowModeOpaque:'غير شفاف',windowModeTransparent:'شفاف',windowMode:'وضع النافذة',flashvars:'متغيرات الفلاش',bgcolor:'لون الخلفية',hSpace:'تباعد أفقي',vSpace:'تباعد عمودي',validateSrc:'فضلاً أدخل عنوان الموقع الذي يشير إليه الرابط',validateHSpace:'HSpace يجب أن يكون عدداً.',validateVSpace:'VSpace يجب أن يكون عدداً.'},spellCheck:{toolbar:'تدقيق إملائي',title:'التدقيق الإملائي',notAvailable:'عفواً، ولكن هذه الخدمة غير متاحة الان',errorLoading:'خطأ في تحميل تطبيق خدمة الاستضافة: %s.',notInDic:'ليست في القاموس',changeTo:'التغيير إلى',btnIgnore:'تجاهل',btnIgnoreAll:'تجاهل الكل',btnReplace:'تغيير',btnReplaceAll:'تغيير الكل',btnUndo:'تراجع',noSuggestions:'- لا توجد إقتراحات -',progress:'جاري التدقيق الاملائى',noMispell:'تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية',noChanges:'تم التدقيق الإملائي: لم يتم تغيير أي كلمة',oneChange:'تم التدقيق الإملائي: تم تغيير كلمة واحدة فقط',manyChanges:'تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات',ieSpellDownload:'المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟'},smiley:{toolbar:'ابتسامات',title:'إدراج ابتسامات',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'عنصر 1%'},numberedlist:'ادخال/حذف تعداد رقمي',bulletedlist:'ادخال/حذف تعداد نقطي',indent:'زيادة المسافة البادئة',outdent:'إنقاص المسافة البادئة',justify:{left:'محاذاة إلى اليسار',center:'توسيط',right:'محاذاة إلى اليمين',block:'ضبط'},blockquote:'اقتباس',clipboard:{title:'لصق',cutError:'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).',copyError:'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+C).',pasteMsg:'الصق داخل الصندوق بإستخدام زرائر (<STRONG>Ctrl/Cmd+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر <STRONG>موافق</STRONG>.',securityMsg:'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيفه قبل الشروع في عملية اللصق؟',toolbar:'لصق من وورد',title:'لصق من وورد',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'لصق كنص بسيط',title:'لصق كنص بسيط'},templates:{button:'القوالب',title:'قوالب المحتوى',options:'Template Options',insertOption:'استبدال المحتوى',selectPromptMsg:'اختر القالب الذي تود وضعه في المحرر',emptyListMsg:'(لم يتم تعريف أي قالب)'},showBlocks:'مخطط تفصيلي',stylesCombo:{label:'أنماط',panelTitle:'Formatting Styles',panelTitle1:'أنماط الفقرة',panelTitle2:'أنماط مضمنة',panelTitle3:'أنماط الكائن'},format:{label:'تنسيق',panelTitle:'تنسيق الفقرة',tag_p:'عادي',tag_pre:'منسّق',tag_address:'عنوان',tag_h1:'العنوان 1',tag_h2:'العنوان 2',tag_h3:'العنوان 3',tag_h4:'العنوان 4',tag_h5:'العنوان 5',tag_h6:'العنوان 6',tag_div:'عادي (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'خط',voiceLabel:'حجم الخط',panelTitle:'حجم الخط'},fontSize:{label:'حجم الخط',voiceLabel:'حجم الخط',panelTitle:'حجم الخط'},colorButton:{textColorTitle:'لون النص',bgColorTitle:'لون الخلفية',panelTitle:'Colors',auto:'تلقائي',more:'ألوان إضافية...'},colors:{'000':'أسود',800000:'كستنائي','8B4513':'بني فاتح','2F4F4F':'رمادي أردوازي غامق','008080':'أزرق مخضر','000080':'أزرق داكن','4B0082':'كحلي',696969:'رمادي داكن',B22222:'طوبي',A52A2A:'بني',DAA520:'ذهبي داكن','006400':'أخضر داكن','40E0D0':'فيروزي','0000CD':'أزرق متوسط',800080:'بنفسجي غامق',808080:'رمادي',F00:'أحمر',FF8C00:'برتقالي داكن',FFD700:'ذهبي','008000':'أخضر','0FF':'تركواز','00F':'أزرق',EE82EE:'بنفسجي',A9A9A9:'رمادي شاحب',FFA07A:'برتقالي وردي',FFA500:'برتقالي',FFFF00:'أصفر','00FF00':'ليموني',AFEEEE:'فيروزي شاحب',ADD8E6:'أزرق فاتح',DDA0DD:'بنفسجي فاتح',D3D3D3:'رمادي فاتح',FFF0F5:'وردي فاتح',FAEBD7:'أبيض عتيق',FFFFE0:'أصفر فاتح',F0FFF0:'أبيض مائل للأخضر',F0FFFF:'سماوي',F0F8FF:'لبني',E6E6FA:'أرجواني',FFF:'أبيض'},scayt:{title:'تدقيق إملائي أثناء الكتابة',opera_title:'Not supported by Opera',enable:'تفعيل SCAYT',disable:'تعطيل SCAYT',about:'عن SCAYT',toggle:'تثبيت SCAYT',options:'خيارات',langs:'لغات',moreSuggestions:'المزيد من المقترحات',ignore:'تجاهل',ignoreAll:'تجاهل الكل',addWord:'إضافة كلمة',emptyDic:'اسم القاموس يجب ألا يكون فارغاً.',optionsTab:'خيارات',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'لغات',dictionariesTab:'قواميس',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'عن'},about:{title:'عن CKEditor',dlgTitle:'عن CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'للحصول على معلومات الترخيص ، يرجى زيارة موقعنا على شبكة الانترنت:',copy:'حقوق النشر © $1. جميع الحقوق محفوظة.'},maximize:'تكبير',minimize:'تصغير',fakeobjects:{anchor:'إرساء',flash:'رسم متحرك بالفلاش',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'كائن غير معروف'},resize:'اسحب لتغيير الحجم',colordialog:{title:'اختر لون',options:'Color Options',highlight:'إلقاء الضوء',selected:'مُختار',clear:'مسح'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'خصائص الصفحة',title:'خصائص الصفحة',design:'Design',meta:'المعرّفات الرأسية',chooseColor:'اختر',other:'<أخرى>',docTitle:'عنوان الصفحة',charset:'ترميز الحروف',charsetOther:'ترميز آخر',charsetASCII:'ASCII',charsetCE:'أوروبا الوسطى',charsetCT:'الصينية التقليدية (Big5)',charsetCR:'السيريلية',charsetGR:'اليونانية',charsetJP:'اليابانية',charsetKR:'الكورية',charsetTR:'التركية',charsetUN:'Unicode (UTF-8)',charsetWE:'أوروبا الغربية',docType:'ترويسة نوع الصفحة',docTypeOther:'ترويسة نوع صفحة أخرى',xhtmlDec:'تضمين إعلانات لغة XHTMLَ',bgColor:'لون الخلفية',bgImage:'رابط الصورة الخلفية',bgFixed:'جعلها علامة مائية',txtColor:'لون النص',margin:'هوامش الصفحة',marginTop:'علوي',marginLeft:'أيسر',marginRight:'أيمن',marginBottom:'سفلي',metaKeywords:'الكلمات الأساسية (مفصولة بفواصل)َ',metaDescription:'وصف الصفحة',metaAuthor:'الكاتب',metaCopyright:'المالك',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/bg.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/bg.js
new file mode 100755
index 0000000..e8b8b92
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/bg.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.bg={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Ленти с инструменти',editor:'Текстов редактор за форматиран текст',source:'Източник',newPage:'Нова страница',save:'Запис',preview:'Преглед',cut:'Отрежи',copy:'Копирай',paste:'Вмъкни',print:'Печат',underline:'Подчертан',bold:'Удебелен',italic:'Наклонен',selectAll:'Избери всичко',removeFormat:'Премахване на форматирането',strike:'Зачертан текст',subscript:'Индексиран текст',superscript:'Суперскрипт',horizontalrule:'Вмъкване на хоризонтална линия',pagebreak:'Вмъкване на нова страница при печат',pagebreakAlt:'Разделяне на страници',unlink:'Премахни връзката',undo:'Възтанови',redo:'Връщане на предишен статус',common:{browseServer:'Избор от сървъра',url:'URL',protocol:'Протокол',upload:'Качване',uploadSubmit:'Изпращане към сървъра',image:'Снимка',flash:'Флаш',form:'Форма',checkbox:'Поле за избор',radio:'Радио бутон',textField:'Текстово поле',textarea:'Текстова зона',hiddenField:'Скрито поле',button:'Бутон',select:'Поле за избор',imageButton:'Бутон за снимка',notSet:'<не е избрано>',id:'ID',name:'Име',langDir:'Посока на езика',langDirLtr:'Ляво на дясно (ЛнД)',langDirRtl:'Дясно на ляво (ДнЛ)',langCode:'Код на езика',longDescr:'Уеб адрес за дълго описание',cssClass:'Класове за CSS',advisoryTitle:'Advisory Title',cssStyle:'Стил',ok:'ОК',cancel:'Отказ',close:'Затвори',preview:'Преглед',generalTab:'Общо',advancedTab:'Разширено',validateNumberFailed:'Тази стойност не е число',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Опции',target:'Цел',targetNew:'Нов прозорец (_blank)',targetTop:'Горна позиция (_top)',targetSelf:'Текущия прозорец (_self)',targetParent:'Основен прозорец (_parent)',langDirLTR:'Ляво на дясно (ЛнД)',langDirRTL:'Дясно на ляво (ДнЛ)',styles:'Стил',cssClasses:'Класове за CSS',width:'Ширина',height:'Височина',align:'Подравняване',alignLeft:'Ляво',alignRight:'Дясно',alignCenter:'Център',alignTop:'Горе',alignMiddle:'По средата',alignBottom:'Долу',invalidHeight:'Височината трябва да е число.',invalidWidth:'Ширина требе да е число.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Опции на контекстното меню'},specialChar:{toolbar:'Вмъкване на специален знак',title:'Избор на специален знак',options:'Опции за специален знак'},link:{toolbar:'Връзка',other:'<друго>',menu:'Промяна на връзка',title:'Връзка',info:'Инфо за връзката',target:'Цел',upload:'Качване',advanced:'Разширено',type:'Тип на връзката',toUrl:'Уеб адрес',toAnchor:'Връзка към котва в текста',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<изкачащ прозорец>',targetFrameName:'Име на целевият прозорец',targetPopupName:'Име на изкачащ прозорец',popupFeatures:'Функции на изкачащ прозорец',popupResizable:'Оразмеряем',popupStatusBar:'Статусна лента',popupLocationBar:'Лента с локацията',popupToolbar:'Лента с инструменти',popupMenuBar:'Лента за меню',popupFullScreen:'Цял екран (IE)',popupScrollBars:'Скролери',popupDependent:'Зависимост (Netscape)',popupLeft:'Лява позиция',popupTop:'Горна позиция',id:'ID',langDir:'Посока на езика',langDirLTR:'Ляво на Дясно (ЛнД)',langDirRTL:'Дясно на Ляво (ДнЛ)',acccessKey:'Ключ за достъп',name:'Име',langCode:'Код за езика',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Класове за CSS',charset:'Linked Resource Charset',styles:'Стил',rel:'Връзка',selectAnchor:'Изберете котва',anchorName:'По име на котва',anchorId:'По ID на елемент',emailAddress:'E-mail aдрес',emailSubject:'Тема',emailBody:'Съдържание',noAnchors:'(No anchors available in the document)',noUrl:'Моля въведете URL адреса',noEmail:'Моля въведете e-mail aдрес'},anchor:{toolbar:'Котва',menu:'Промяна на котва',title:'Настройки на котва',name:'Име на котва',errorName:'Моля въведете име на котвата',remove:'Премахване на котва'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Тип',start:'Старт',validateStartNumber:'List start number must be a whole number.',circle:'Кръг',disc:'Диск',square:'Квадрат',none:'Няма',notset:'<не е указано>',armenian:'Арменско номериране',georgian:'Грузинско номериране (an, ban, gan, и т.н.)',lowerRoman:'Малки римски числа (i, ii, iii, iv, v и т.н.)',upperRoman:'Големи римски числа (I, II, III, IV, V и т.н.)',lowerAlpha:'Малки букви (а, б, в, г, д и т.н.)',upperAlpha:'Големи букви (А, Б, В, Г, Д и т.н.)',lowerGreek:'Малки гръцки букви (алфа, бета, гама и т.н.)',decimal:'Числа (1, 2, 3 и др.)',decimalLeadingZero:'Числа с водеща нула (01, 02, 03 и т.н.)'},findAndReplace:{title:'Търсене и препокриване',find:'Търсене',replace:'Препокриване',findWhat:'Търси за:',replaceWith:'Препокрива с:',notFoundMsg:'Указаният текст не е намерен.',findOptions:'Find Options',matchCase:'Съвпадение',matchWord:'Съвпадение с дума',matchCyclic:'Циклично съвпадение',replaceAll:'Препокрий всички',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Таблица',title:'Настройки на таблицата',menu:'Настройки на таблицата',deleteTable:'Изтриване на таблица',rows:'Редове',columns:'Колони',border:'Размер на рамката',widthPx:'пиксела',widthPc:'процент',widthUnit:'единица за ширина',cellSpace:'Разтояние между клетките',cellPad:'Отделяне на клетките',caption:'Заглавие',summary:'Обща информация',headers:'Хедъри',headersNone:'Няма',headersColumn:'Първа колона',headersRow:'Първи ред',headersBoth:'Заедно',invalidRows:'Броят редове трябва да е по-голям от 0.',invalidCols:'Броят колони трябва да е по-голям от 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Клетка',insertBefore:'Вмъкване на клетка преди',insertAfter:'Вмъкване на клетка след',deleteCell:'Изтриване на клетки',merge:'Сливане на клетки',mergeRight:'Сливане в дясно',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Настройки на клетката',cellType:'Тип на клетката',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Авто. пренос',hAlign:'Хоризонтално подравняване',vAlign:'Вертикално подравняване',alignBaseline:'Базова линия',bgColor:'Фон',borderColor:'Цвят на рамката',data:'Данни',header:'Хедър',yes:'Да',no:'Не',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Изберете'},row:{menu:'Ред',insertBefore:'Insert Row Before',insertAfter:'Вмъкване на ред след',deleteRow:'Изтриване на редове'},column:{menu:'Колона',insertBefore:'Вмъкване на колона преди',insertAfter:'Вмъкване на колона след',deleteColumn:'Изтриване на колони'}},button:{title:'Настройки на бутона',text:'Текст (стойност)',type:'Тип',typeBtn:'Бутон',typeSbm:'Добави',typeRst:'Нулиране'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Настройки на радиобутон',value:'Стойност',selected:'Избрано'},form:{title:'Настройки на формата',menu:'Настройки на формата',action:'Действие',method:'Метод',encoding:'Кодиране'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Налични опции',value:'Стойност',size:'Размер',lines:'линии',chkMulti:'Allow multiple selections',opText:'Текст',opValue:'Стойност',btnAdd:'Добави',btnModify:'Промени',btnUp:'На горе',btnDown:'На долу',btnSetValue:'Set as selected value',btnDelete:'Изтриване'},textarea:{title:'Опции за текстовата зона',cols:'Колони',rows:'Редове'},textfield:{title:'Настройки за текстово поле',name:'Име',value:'Стойност',charWidth:'Ширина на знаците',maxChars:'Макс. знаци',type:'Тип',typeText:'Текст',typePass:'Парола'},hidden:{title:'Настройки за скрито поле',name:'Име',value:'Стойност'},image:{title:'Настройки за снимка',titleButton:'Настойки за бутон за снимка',menu:'Настройки за снимка',infoTab:'Инфо за снимка',btnUpload:'Изпрати я на сървъра',upload:'Качване',alt:'Алтернативен текст',lockRatio:'Заключване на съотношението',resetSize:'Нулиране на размер',border:'Рамка',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Please type the image URL',linkTab:'Връзка',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Настройки за флаш',propertiesTab:'Настройки',title:'Настройки за флаш',chkPlay:'Авто. пускане',chkLoop:'Цикъл',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Показва всичко',scaleNoBorder:'Без рамка',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Винаги',accessSameDomain:'Същият домейн',accessNever:'Никога',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignTextTop:'Text Top',quality:'Качество',qualityBest:'Отлично',qualityHigh:'Високо',qualityAutoHigh:'Авто. високо',qualityMedium:'Средно',qualityAutoLow:'Авто. ниско',qualityLow:'Ниско',windowModeWindow:'Прозорец',windowModeOpaque:'Плътност',windowModeTransparent:'Прозрачност',windowMode:'Режим на прозореца',flashvars:'Променливи за Флаш',bgcolor:'Background color',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Уеб адреса не трябва да е празен.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Проверка на правопис',title:'Проверка на правопис',notAvailable:'Съжаляваме, но услугата не е достъпна за момента',errorLoading:'Error loading application service host: %s.',notInDic:'Не е в речника',changeTo:'Промени на',btnIgnore:'Игнорирай',btnIgnoreAll:'Игнорирай всичко',btnReplace:'Препокриване',btnReplaceAll:'Препокрий всичко',btnUndo:'Възтанови',noSuggestions:'- Няма препоръчани -',progress:'Проверява се правописа...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Усмивка',title:'Вмъкване на усмивка',options:'Опции за усмивката'},elementsPath:{eleLabel:'Път за елементите',eleTitle:'%1 елемент'},numberedlist:'Вмъкване/Премахване на номериран списък',bulletedlist:'Вмъкване/Премахване на точков списък',indent:'Увеличаване на отстъпа',outdent:'Намаляване на отстъпа',justify:{left:'Подравни в ляво',center:'Център',right:'Подравни в дясно',block:'Justify'},blockquote:'Блок за цитат',clipboard:{title:'Paste',cutError:'Настройките за сигурност на Вашия браузър не позволяват на редактора автоматично да изъплни действията за отрязване. Моля ползвайте клавиатурните команди за целта (ctrl+x).',copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Показва блокове',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Стил',IdInputLabel:'ID',languageCodeInputLabel:' Код на езика',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Промяна на Div',remove:'Премахване на Div'},iframe:{title:'IFrame настройки',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Шрифт',voiceLabel:'Шрифт',panelTitle:'Име на шрифт'},fontSize:{label:'Размер',voiceLabel:'Размер на шрифт',panelTitle:'Размер на шрифт'},colorButton:{textColorTitle:'Цвят на шрифт',bgColorTitle:'Фонов цвят',panelTitle:'Цветове',auto:'Автоматично',more:'Още цветове'},colors:{'000':'Черно',800000:'Кестеняво','8B4513':'Светлокафяво','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Индиго',696969:'Тъмно сиво',B22222:'Огнено червено',A52A2A:'Кафяво',DAA520:'Златисто','006400':'Тъмно зелено','40E0D0':'Тюркуазено','0000CD':'Средно синьо',800080:'Пурпурно',808080:'Сиво',F00:'Червено',FF8C00:'Тъмно оранжево',FFD700:'Златно','008000':'Зелено','0FF':'Светло синьо','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Игнорирани думи и цифри',languagesTab:'Езици',dictionariesTab:'Речници',dic_field_name:'Име на речнк',dic_create:'Нов',dic_restore:'Възтановяване',dic_delete:'Изтриване',dic_rename:'Преименуване',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Относно'},about:{title:'Относно CKEditor',dlgTitle:'Относно CKEditor',help:'Проверете $1 за помощ.',userGuide:"CKEditor User's Guide",moreInfo:'За лицензионна информация моля посетете сайта ни:',copy:'Copyright © $1. All rights reserved.'},maximize:'Максимизиране',minimize:'Минимизиране',fakeobjects:{anchor:'Кука',flash:'Флаш анимация',iframe:'IFrame',hiddenfield:'Скрито поле',unknown:'Неизвестен обект'},resize:'Влачете за да оразмерите',colordialog:{title:'Изберете цвят',options:'Цветови опции',highlight:'Осветяване',selected:'Изберете цвят',clear:'Изчистване'},toolbarCollapse:'Свиване на лентата с инструменти',toolbarExpand:'Разширяване на лентата с инструменти',toolbarGroups:{document:'Документ',clipboard:'Clipboard/Undo',editing:'Промяна',forms:'Форми',basicstyles:'Базови стилове',paragraph:'Параграф',links:'Връзки',insert:'Вмъкване',styles:'Стилове',colors:'Цветове',tools:'Инструменти'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Настройки на документа',title:'Настройки на документа',design:'Дизайн',meta:'Мета етикети',chooseColor:'Изберете',other:'Други...',docTitle:'Заглавие на страницата',charset:'Кодова таблица',charsetOther:'Друга кодова таблица',charsetASCII:'ASCII',charsetCE:'Централна европейска',charsetCT:'Китайски традиционен',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Document Type Heading',docTypeOther:'Other Document Type Heading',xhtmlDec:'Include XHTML Declarations',bgColor:'Background Color',bgImage:'Background Image URL',bgFixed:'Non-scrolling (Fixed) Background',txtColor:'Text Color',margin:'Page Margins',marginTop:'Top',marginLeft:'Left',marginRight:'Right',marginBottom:'Bottom',metaKeywords:'Document Indexing Keywords (comma separated)',metaDescription:'Document Description',metaAuthor:'Author',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/bn.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/bn.js
new file mode 100755
index 0000000..beb38f6
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/bn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.bn={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'সোর্স',newPage:'নতুন পেজ',save:'সংরক্ষন কর',preview:'প্রিভিউ',cut:'কাট',copy:'কপি',paste:'পেস্ট',print:'প্রিন্ট',underline:'আন্ডারলাইন',bold:'বোল্ড',italic:'ইটালিক',selectAll:'সব সিলেক্ট কর',removeFormat:'ফরমেট সরাও',strike:'স্ট্রাইক থ্রু',subscript:'অধোলেখ',superscript:'অভিলেখ',horizontalrule:'রেখা যুক্ত কর',pagebreak:'পেজ ব্রেক',pagebreakAlt:'Page Break',unlink:'লিংক সরাও',undo:'আনডু',redo:'রি-ডু',common:{browseServer:'ব্রাউজ সার্ভার',url:'URL',protocol:'প্রোটোকল',upload:'আপলোড',uploadSubmit:'ইহাকে সার্ভারে প্রেরন কর',image:'ছবির লেবেল যুক্ত কর',flash:'ফ্লাশ লেবেল যুক্ত কর',form:'ফর্ম',checkbox:'চেক বাক্স',radio:'রেডিও বাটন',textField:'টেক্সট ফীল্ড',textarea:'টেক্সট এরিয়া',hiddenField:'গুপ্ত ফীল্ড',button:'বাটন',select:'বাছাই ফীল্ড',imageButton:'ছবির বাটন',notSet:'<সেট নেই>',id:'আইডি',name:'নাম',langDir:'ভাষা লেখার দিক',langDirLtr:'বাম থেকে ডান (LTR)',langDirRtl:'ডান থেকে বাম (RTL)',langCode:'ভাষা কোড',longDescr:'URL এর লম্বা বর্ণনা',cssClass:'স্টাইল-শীট ক্লাস',advisoryTitle:'পরামর্শ শীর্ষক',cssStyle:'স্টাইল',ok:'ওকে',cancel:'বাতিল',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'এডভান্সড',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'প্রস্থ',height:'দৈর্ঘ্য',align:'এলাইন',alignLeft:'বামে',alignRight:'ডানে',alignCenter:'মাঝখানে',alignTop:'উপর',alignMiddle:'মধ্য',alignBottom:'নীচে',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'বিশেষ অক্ষর যুক্ত কর',title:'বিশেষ ক্যারেক্টার বাছাই কর',options:'Special Character Options'},link:{toolbar:'লিংক যুক্ত কর',other:'<other>',menu:'লিংক সম্পাদন',title:'লিংক',info:'লিংক তথ্য',target:'টার্গেট',upload:'আপলোড',advanced:'এডভান্সড',type:'লিংক প্রকার',toUrl:'URL',toAnchor:'এই পেজে নোঙর কর',toEmail:'ইমেইল',targetFrame:'<ফ্রেম>',targetPopup:'<পপআপ উইন্ডো>',targetFrameName:'টার্গেট ফ্রেমের নাম',targetPopupName:'পপআপ উইন্ডোর নাম',popupFeatures:'পপআপ উইন্ডো ফীচার সমূহ',popupResizable:'Resizable',popupStatusBar:'স্ট্যাটাস বার',popupLocationBar:'লোকেশন বার',popupToolbar:'টুল বার',popupMenuBar:'মেন্যু বার',popupFullScreen:'পূর্ণ পর্দা জুড়ে (IE)',popupScrollBars:'স্ক্রল বার',popupDependent:'ডিপেন্ডেন্ট (Netscape)',popupLeft:'বামের পজিশন',popupTop:'ডানের পজিশন',id:'Id',langDir:'ভাষা লেখার দিক',langDirLTR:'বাম থেকে ডান (LTR)',langDirRTL:'ডান থেকে বাম (RTL)',acccessKey:'এক্সেস কী',name:'নাম',langCode:'ভাষা লেখার দিক',tabIndex:'ট্যাব ইন্ডেক্স',advisoryTitle:'পরামর্শ শীর্ষক',advisoryContentType:'পরামর্শ কন্টেন্টের প্রকার',cssClasses:'স্টাইল-শীট ক্লাস',charset:'লিংক রিসোর্স ক্যারেক্টর সেট',styles:'স্টাইল',rel:'Relationship',selectAnchor:'নোঙর বাছাই',anchorName:'নোঙরের নাম দিয়ে',anchorId:'নোঙরের আইডি দিয়ে',emailAddress:'ইমেইল ঠিকানা',emailSubject:'মেসেজের বিষয়',emailBody:'মেসেজের দেহ',noAnchors:'(No anchors available in the document)',noUrl:'অনুগ্রহ করে URL লিংক টাইপ করুন',noEmail:'অনুগ্রহ করে ইমেইল এড্রেস টাইপ করুন'},anchor:{toolbar:'নোঙ্গর',menu:'নোঙর প্রোপার্টি',title:'নোঙর প্রোপার্টি',name:'নোঙরের নাম',errorName:'নোঙরের নাম টাইপ করুন',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'খোজো',replace:'রিপ্লেস',findWhat:'যা খুঁজতে হবে:',replaceWith:'যার সাথে বদলাতে হবে:',notFoundMsg:'আপনার উল্লেখিত টেকস্ট পাওয়া যায়নি',findOptions:'Find Options',matchCase:'কেস মিলাও',matchWord:'পুরা শব্দ মেলাও',matchCyclic:'Match cyclic',replaceAll:'সব বদলে দাও',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'টেবিলের লেবেল যুক্ত কর',title:'টেবিল প্রোপার্টি',menu:'টেবিল প্রোপার্টি',deleteTable:'টেবিল ডিলীট কর',rows:'রো',columns:'কলাম',border:'বর্ডার সাইজ',widthPx:'পিক্সেল',widthPc:'শতকরা',widthUnit:'width unit',cellSpace:'সেল স্পেস',cellPad:'সেল প্যাডিং',caption:'শীর্ষক',summary:'সারাংশ',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'সেল',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'সেল মুছে দাও',merge:'সেল জোড়া দাও',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'রো',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'রো মুছে দাও'},column:{menu:'কলাম',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'কলাম মুছে দাও'}},button:{title:'বাটন প্রোপার্টি',text:'টেক্সট (ভ্যালু)',type:'প্রকার',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'চেক বক্স প্রোপার্টি',radioTitle:'রেডিও বাটন প্রোপার্টি',value:'ভ্যালু',selected:'সিলেক্টেড'},form:{title:'ফর্ম প্রোপার্টি',menu:'ফর্ম প্রোপার্টি',action:'একশ্যন',method:'পদ্ধতি',encoding:'Encoding'},select:{title:'বাছাই ফীল্ড প্রোপার্টি',selectInfo:'তথ্য',opAvail:'অন্যান্য বিকল্প',value:'ভ্যালু',size:'সাইজ',lines:'লাইন সমূহ',chkMulti:'একাধিক সিলেকশন এলাউ কর',opText:'টেক্সট',opValue:'ভ্যালু',btnAdd:'যুক্ত',btnModify:'বদলে দাও',btnUp:'উপর',btnDown:'নীচে',btnSetValue:'বাছাই করা ভ্যালু হিসেবে সেট কর',btnDelete:'ডিলীট'},textarea:{title:'টেক্সট এরিয়া প্রোপার্টি',cols:'কলাম',rows:'রো'},textfield:{title:'টেক্সট ফীল্ড প্রোপার্টি',name:'নাম',value:'ভ্যালু',charWidth:'ক্যারেক্টার প্রশস্ততা',maxChars:'সর্বাধিক ক্যারেক্টার',type:'টাইপ',typeText:'টেক্সট',typePass:'পাসওয়ার্ড'},hidden:{title:'গুপ্ত ফীল্ড প্রোপার্টি',name:'নাম',value:'ভ্যালু'},image:{title:'ছবির প্রোপার্টি',titleButton:'ছবি বাটন প্রোপার্টি',menu:'ছবির প্রোপার্টি',infoTab:'ছবির তথ্য',btnUpload:'ইহাকে সার্ভারে প্রেরন কর',upload:'আপলোড',alt:'বিকল্প টেক্সট',lockRatio:'অনুপাত লক কর',resetSize:'সাইজ পূর্বাবস্থায় ফিরিয়ে দাও',border:'বর্ডার',hSpace:'হরাইজন্টাল স্পেস',vSpace:'ভার্টিকেল স্পেস',alertUrl:'অনুগ্রহক করে ছবির URL টাইপ করুন',linkTab:'লিংক',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'ফ্লাশ প্রোপার্টি',propertiesTab:'Properties',title:'ফ্ল্যাশ প্রোপার্টি',chkPlay:'অটো প্লে',chkLoop:'লূপ',chkMenu:'ফ্ল্যাশ মেনু এনাবল কর',chkFull:'Allow Fullscreen',scale:'স্কেল',scaleAll:'সব দেখাও',scaleNoBorder:'কোনো বর্ডার নেই',scaleFit:'নিখুঁত ফিট',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs নীচে',alignAbsMiddle:'Abs উপর',alignBaseline:'মূল রেখা',alignTextTop:'টেক্সট উপর',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'বেকগ্রাউন্ড রং',hSpace:'হরাইজন্টাল স্পেস',vSpace:'ভার্টিকেল স্পেস',validateSrc:'অনুগ্রহ করে URL লিংক টাইপ করুন',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'বানান চেক',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'শব্দকোষে নেই',changeTo:'এতে বদলাও',btnIgnore:'ইগনোর কর',btnIgnoreAll:'সব ইগনোর কর',btnReplace:'বদলে দাও',btnReplaceAll:'সব বদলে দাও',btnUndo:'আন্ডু',noSuggestions:'- কোন সাজেশন নেই -',progress:'বানান পরীক্ষা চলছে...',noMispell:'বানান পরীক্ষা শেষ: কোন ভুল বানান পাওয়া যায়নি',noChanges:'বানান পরীক্ষা শেষ: কোন শব্দ পরিবর্তন করা হয়নি',oneChange:'বানান পরীক্ষা শেষ: একটি মাত্র শব্দ পরিবর্তন করা হয়েছে',manyChanges:'বানান পরীক্ষা শেষ: %1 গুলো শব্দ বদলে গ্যাছে',ieSpellDownload:'বানান পরীক্ষক ইনস্টল করা নেই। আপনি কি এখনই এটা ডাউনলোড করতে চান?'},smiley:{toolbar:'স্মাইলী',title:'স্মাইলী যুক্ত কর',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'সাংখ্যিক লিস্টের লেবেল',bulletedlist:'বুলেট লিস্ট লেবেল',indent:'ইনডেন্ট বাড়াও',outdent:'ইনডেন্ট কমাও',justify:{left:'বা দিকে ঘেঁষা',center:'মাঝ বরাবর ঘেষা',right:'ডান দিকে ঘেঁষা',block:'ব্লক জাস্টিফাই'},blockquote:'Block Quote',clipboard:{title:'পেস্ট',cutError:'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।',copyError:'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।',pasteMsg:'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl/Cmd+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'পেস্ট (শব্দ)',title:'পেস্ট (শব্দ)',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'সাদা টেক্সট হিসেবে পেস্ট কর',title:'সাদা টেক্সট হিসেবে পেস্ট কর'},templates:{button:'টেমপ্লেট',title:'কনটেন্ট টেমপ্লেট',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'অনুগ্রহ করে এডিটরে ওপেন করার জন্য টেমপ্লেট বাছাই করুন<br>(আসল কনটেন্ট হারিয়ে যাবে):',emptyListMsg:'(কোন টেমপ্লেট ডিফাইন করা নেই)'},showBlocks:'Show Blocks',stylesCombo:{label:'স্টাইল',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'ফন্ট ফরমেট',panelTitle:'ফন্ট ফরমেট',tag_p:'সাধারণ',tag_pre:'ফর্মেটেড',tag_address:'ঠিকানা',tag_h1:'শীর্ষক ১',tag_h2:'শীর্ষক ২',tag_h3:'শীর্ষক ৩',tag_h4:'শীর্ষক ৪',tag_h5:'শীর্ষক ৫',tag_h6:'শীর্ষক ৬',tag_div:'শীর্ষক (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'ফন্ট',voiceLabel:'Font',panelTitle:'ফন্ট'},fontSize:{label:'সাইজ',voiceLabel:'Font Size',panelTitle:'সাইজ'},colorButton:{textColorTitle:'টেক্স্ট রং',bgColorTitle:'বেকগ্রাউন্ড রং',panelTitle:'Colors',auto:'অটোমেটিক',more:'আরও রং...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'ডক্যুমেন্ট প্রোপার্টি',title:'ডক্যুমেন্ট প্রোপার্টি',design:'Design',meta:'মেটাডেটা',chooseColor:'Choose',other:'<other>',docTitle:'পেজ শীর্ষক',charset:'ক্যারেক্টার সেট এনকোডিং',charsetOther:'অন্য ক্যারেক্টার সেট এনকোডিং',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'ডক্যুমেন্ট টাইপ হেডিং',docTypeOther:'অন্য ডক্যুমেন্ট টাইপ হেডিং',xhtmlDec:'XHTML ডেক্লারেশন যুক্ত কর',bgColor:'ব্যাকগ্রাউন্ড রং',bgImage:'ব্যাকগ্রাউন্ড ছবির URL',bgFixed:'স্ক্রলহীন ব্যাকগ্রাউন্ড',txtColor:'টেক্স্ট রং',margin:'পেজ মার্জিন',marginTop:'উপর',marginLeft:'বামে',marginRight:'ডানে',marginBottom:'নীচে',metaKeywords:'ডক্যুমেন্ট ইন্ডেক্স কিওয়ার্ড (কমা দ্বারা বিচ্ছিন্ন)',metaDescription:'ডক্যূমেন্ট বর্ণনা',metaAuthor:'লেখক',metaCopyright:'কপীরাইট',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/bs.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/bs.js
new file mode 100755
index 0000000..ba59d3b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/bs.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.bs={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'HTML kôd',newPage:'Novi dokument',save:'Snimi',preview:'Prikaži',cut:'Izreži',copy:'Kopiraj',paste:'Zalijepi',print:'Štampaj',underline:'Podvuci',bold:'Boldiraj',italic:'Ukosi',selectAll:'Selektuj sve',removeFormat:'Poništi format',strike:'Precrtaj',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Ubaci horizontalnu liniju',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Izbriši link',undo:'Vrati',redo:'Ponovi',common:{browseServer:'Browse Server',url:'URL',protocol:'Protokol',upload:'Šalji',uploadSubmit:'Šalji na server',image:'Slika',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<nije podešeno>',id:'Id',name:'Naziv',langDir:'Smjer pisanja',langDirLtr:'S lijeva na desno (LTR)',langDirRtl:'S desna na lijevo (RTL)',langCode:'Jezièni kôd',longDescr:'Dugaèki opis URL-a',cssClass:'Klase CSS stilova',advisoryTitle:'Advisory title',cssStyle:'Stil',ok:'OK',cancel:'Odustani',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Naprednije',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Širina',height:'Visina',align:'Poravnanje',alignLeft:'Lijevo',alignRight:'Desno',alignCenter:'Centar',alignTop:'Vrh',alignMiddle:'Sredina',alignBottom:'Dno',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Ubaci specijalni karater',title:'Izaberi specijalni karakter',options:'Special Character Options'},link:{toolbar:'Ubaci/Izmjeni link',other:'<other>',menu:'Izmjeni link',title:'Link',info:'Link info',target:'Prozor',upload:'Šalji',advanced:'Naprednije',type:'Tip linka',toUrl:'URL',toAnchor:'Sidro na ovoj stranici',toEmail:'E-Mail',targetFrame:'<frejm>',targetPopup:'<popup prozor>',targetFrameName:'Target Frame Name',targetPopupName:'Naziv popup prozora',popupFeatures:'Moguænosti popup prozora',popupResizable:'Resizable',popupStatusBar:'Statusna traka',popupLocationBar:'Traka za lokaciju',popupToolbar:'Traka sa alatima',popupMenuBar:'Izborna traka',popupFullScreen:'Cijeli ekran (IE)',popupScrollBars:'Scroll traka',popupDependent:'Ovisno (Netscape)',popupLeft:'Lijeva pozicija',popupTop:'Gornja pozicija',id:'Id',langDir:'Smjer pisanja',langDirLTR:'S lijeva na desno (LTR)',langDirRTL:'S desna na lijevo (RTL)',acccessKey:'Pristupna tipka',name:'Naziv',langCode:'Smjer pisanja',tabIndex:'Tab indeks',advisoryTitle:'Advisory title',advisoryContentType:'Advisory vrsta sadržaja',cssClasses:'Klase CSS stilova',charset:'Linked Resource Charset',styles:'Stil',rel:'Relationship',selectAnchor:'Izaberi sidro',anchorName:'Po nazivu sidra',anchorId:'Po Id-u elementa',emailAddress:'E-Mail Adresa',emailSubject:'Subjekt poruke',emailBody:'Poruka',noAnchors:'(Nema dostupnih sidra na stranici)',noUrl:'Molimo ukucajte URL link',noEmail:'Molimo ukucajte e-mail adresu'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Naði',replace:'Zamjeni',findWhat:'Naði šta:',replaceWith:'Zamjeni sa:',notFoundMsg:'Traženi tekst nije pronaðen.',findOptions:'Find Options',matchCase:'Uporeðuj velika/mala slova',matchWord:'Uporeðuj samo cijelu rijeè',matchCyclic:'Match cyclic',replaceAll:'Zamjeni sve',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Svojstva tabele',menu:'Svojstva tabele',deleteTable:'Delete Table',rows:'Redova',columns:'Kolona',border:'Okvir',widthPx:'piksela',widthPc:'posto',widthUnit:'width unit',cellSpace:'Razmak æelija',cellPad:'Uvod æelija',caption:'Naslov',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Briši æelije',merge:'Spoji æelije',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Briši redove'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Briši kolone'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Svojstva slike',titleButton:'Image Button Properties',menu:'Svojstva slike',infoTab:'Info slike',btnUpload:'Šalji na server',upload:'Šalji',alt:'Tekst na slici',lockRatio:'Zakljuèaj odnos',resetSize:'Resetuj dimenzije',border:'Okvir',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Molimo ukucajte URL od slike.',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs dole',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignTextTop:'Vrh teksta',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Boja pozadine',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Molimo ukucajte URL link',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smješko',title:'Ubaci smješka',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Numerisana lista',bulletedlist:'Lista',indent:'Poveæaj uvod',outdent:'Smanji uvod',justify:{left:'Lijevo poravnanje',center:'Centralno poravnanje',right:'Desno poravnanje',block:'Puno poravnanje'},blockquote:'Block Quote',clipboard:{title:'Zalijepi',cutError:'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).',copyError:'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).',pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Zalijepi iz Word-a',title:'Zalijepi iz Word-a',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Zalijepi kao obièan tekst',title:'Zalijepi kao obièan tekst'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stil',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'Velièina',voiceLabel:'Font Size',panelTitle:'Velièina'},colorButton:{textColorTitle:'Boja teksta',bgColorTitle:'Boja pozadine',panelTitle:'Colors',auto:'Automatska',more:'Više boja...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Document Properties',title:'Document Properties',design:'Design',meta:'Meta Tags',chooseColor:'Choose',other:'Other...',docTitle:'Page Title',charset:'Character Set Encoding',charsetOther:'Other Character Set Encoding',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Document Type Heading',docTypeOther:'Other Document Type Heading',xhtmlDec:'Include XHTML Declarations',bgColor:'Background Color',bgImage:'Background Image URL',bgFixed:'Non-scrolling (Fixed) Background',txtColor:'Text Color',margin:'Page Margins',marginTop:'Top',marginLeft:'Left',marginRight:'Right',marginBottom:'Bottom',metaKeywords:'Document Indexing Keywords (comma separated)',metaDescription:'Document Description',metaAuthor:'Author',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ca.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ca.js
new file mode 100755
index 0000000..bcecf8a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ca.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ca={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Editor de text enriquit',source:'Codi font',newPage:'Nova pàgina',save:'Desa',preview:'Visualització prèvia',cut:'Retalla',copy:'Copia',paste:'Enganxa',print:'Imprimeix',underline:'Subratllat',bold:'Negreta',italic:'Cursiva',selectAll:'Selecciona-ho tot',removeFormat:'Elimina Format',strike:'Barrat',subscript:'Subíndex',superscript:'Superíndex',horizontalrule:'Insereix línia horitzontal',pagebreak:'Insereix salt de pàgina',pagebreakAlt:'Salt de pàgina',unlink:"Elimina l'enllaç",undo:'Desfés',redo:'Refés',common:{browseServer:'Veure servidor',url:'URL',protocol:'Protocol',upload:'Puja',uploadSubmit:'Envia-la al servidor',image:'Imatge',flash:'Flash',form:'Formulari',checkbox:'Casella de verificació',radio:"Botó d'opció",textField:'Camp de text',textarea:'Àrea de text',hiddenField:'Camp ocult',button:'Botó',select:'Camp de selecció',imageButton:"Botó d'imatge",notSet:'<no definit>',id:'Id',name:'Nom',langDir:"Direcció de l'idioma",langDirLtr:"D'esquerra a dreta (LTR)",langDirRtl:'De dreta a esquerra (RTL)',langCode:"Codi d'idioma",longDescr:'Descripció llarga de la URL',cssClass:"Classes del full d'estil",advisoryTitle:'Títol consultiu',cssStyle:'Estil',ok:"D'acord",cancel:'Cancel·la',close:'Tanca',preview:'Previsualitza',generalTab:'General',advancedTab:'Avançat',validateNumberFailed:'Aquest valor no és un número.',confirmNewPage:'Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pàgina nova?',confirmCancel:"Algunes opcions s'han canviat. Esteu segur que voleu tancar la finestra de diàleg?",options:'Opcions',target:'Destí',targetNew:'Nova finestra (_blank)',targetTop:'Finestra major (_top)',targetSelf:'Mateixa finestra (_self)',targetParent:'Finestra pare (_parent)',langDirLTR:"D'esquerra a dreta (LTR)",langDirRTL:'De dreta a esquerra (RTL)',styles:'Estil',cssClasses:"Classes del full d'estil",width:'Amplada',height:'Alçada',align:'Alineació',alignLeft:"Ajusta a l'esquerra",alignRight:'Ajusta a la dreta',alignCenter:'Centre',alignTop:'Superior',alignMiddle:'Centre',alignBottom:'Inferior',invalidHeight:"L'alçada ha de ser un nombre.",invalidWidth:"L'amplada ha de ser un nombre.",invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, no disponible</span>'},contextmenu:{options:'Opcions del menú contextual'},specialChar:{toolbar:'Insereix caràcter especial',title:'Selecciona el caràcter especial',options:'Opcions de caràcters especials'},link:{toolbar:'Insereix/Edita enllaç',other:'<altre>',menu:"Edita l'enllaç",title:'Enllaç',info:"Informació de l'enllaç",target:'Destí',upload:'Puja',advanced:'Avançat',type:"Tipus d'enllaç",toUrl:'URL',toAnchor:'Àncora en aquesta pàgina',toEmail:'Correu electrònic',targetFrame:'<marc>',targetPopup:'<finestra emergent>',targetFrameName:'Nom del marc de destí',targetPopupName:'Nom finestra popup',popupFeatures:'Característiques finestra popup',popupResizable:'Redimensionable',popupStatusBar:"Barra d'estat",popupLocationBar:"Barra d'adreça",popupToolbar:"Barra d'eines",popupMenuBar:'Barra de menú',popupFullScreen:'Pantalla completa (IE)',popupScrollBars:"Barres d'scroll",popupDependent:'Depenent (Netscape)',popupLeft:'Posició esquerra',popupTop:'Posició dalt',id:'Id',langDir:"Direcció de l'idioma",langDirLTR:"D'esquerra a dreta (LTR)",langDirRTL:'De dreta a esquerra (RTL)',acccessKey:"Clau d'accés",name:'Nom',langCode:"Direcció de l'idioma",tabIndex:'Index de Tab',advisoryTitle:'Títol consultiu',advisoryContentType:'Tipus de contingut consultiu',cssClasses:"Classes del full d'estil",charset:'Conjunt de caràcters font enllaçat',styles:'Estil',rel:'Relationship',selectAnchor:'Selecciona una àncora',anchorName:"Per nom d'àncora",anchorId:"Per Id d'element",emailAddress:'Adreça de correu electrònic',emailSubject:'Assumpte del missatge',emailBody:'Cos del missatge',noAnchors:'(No hi ha àncores disponibles en aquest document)',noUrl:"Si us plau, escrigui l'enllaç URL",noEmail:"Si us plau, escrigui l'adreça correu electrònic"},anchor:{toolbar:'Insereix/Edita àncora',menu:"Propietats de l'àncora",title:"Propietats de l'àncora",name:"Nom de l'àncora",errorName:"Si us plau, escriviu el nom de l'ancora",remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Cerca i reemplaça',find:'Cerca',replace:'Reemplaça',findWhat:'Cerca:',replaceWith:'Remplaça amb:',notFoundMsg:"El text especificat no s'ha trobat.",findOptions:'Find Options',matchCase:'Distingeix majúscules/minúscules',matchWord:'Només paraules completes',matchCyclic:'Match cyclic',replaceAll:'Reemplaça-ho tot',replaceSuccessMsg:'%1 ocurrència/es reemplaçada/es.'},table:{toolbar:'Taula',title:'Propietats de la taula',menu:'Propietats de la taula',deleteTable:'Suprimeix la taula',rows:'Files',columns:'Columnes',border:'Mida vora',widthPx:'píxels',widthPc:'percentatge',widthUnit:"unitat d'amplada",cellSpace:'Espaiat de cel·les',cellPad:'Encoixinament de cel·les',caption:'Títol',summary:'Resum',headers:'Capçaleres',headersNone:'Cap',headersColumn:'Primera columna',headersRow:'Primera fila',headersBoth:'Ambdues',invalidRows:'El nombre de files ha de ser un nombre major que 0.',invalidCols:'El nombre de columnes ha de ser un nombre major que 0.',invalidBorder:'El gruix de la vora ha de ser un nombre.',invalidWidth:"L'amplada de la taula ha de ser un nombre.",invalidHeight:"L'alçada de la taula ha de ser un nombre.",invalidCellSpacing:"L'espaiat de cel·la ha de ser un nombre.",invalidCellPadding:"L'encoixinament de cel·la ha de ser un nombre.",cell:{menu:'Cel·la',insertBefore:'Insereix abans',insertAfter:'Insereix després',deleteCell:'Suprimeix',merge:'Fusiona',mergeRight:'Fusiona a la dreta',mergeDown:'Fusiona avall',splitHorizontal:'Divideix horitzontalment',splitVertical:'Divideix verticalment',title:'Propietats de la cel·la',cellType:'Tipus de cel·la',rowSpan:'Expansió de files',colSpan:'Expansió de columnes',wordWrap:'Ajustar al contingut',hAlign:'Alineació Horizontal',vAlign:'Alineació Vertical',alignBaseline:'A la línia base',bgColor:'Color de fons',borderColor:'Color de la vora',data:'Dades',header:'Capçalera',yes:'Sí',no:'No',invalidWidth:"L'amplada de cel·la ha de ser un nombre.",invalidHeight:"L'alçada de cel·la ha de ser un nombre.",invalidRowSpan:"L'expansió de files ha de ser un nombre enter.",invalidColSpan:"L'expansió de columnes ha de ser un nombre enter.",chooseColor:'Trieu'},row:{menu:'Fila',insertBefore:'Insereix fila abans de',insertAfter:'Insereix fila darrera',deleteRow:'Suprimeix una fila'},column:{menu:'Columna',insertBefore:'Insereix columna abans de',insertAfter:'Insereix columna darrera',deleteColumn:'Suprimeix una columna'}},button:{title:'Propietats del botó',text:'Text (Valor)',type:'Tipus',typeBtn:'Botó',typeSbm:'Transmet formulari',typeRst:'Reinicia formulari'},checkboxAndRadio:{checkboxTitle:'Propietats de la casella de verificació',radioTitle:"Propietats del botó d'opció",value:'Valor',selected:'Seleccionat'},form:{title:'Propietats del formulari',menu:'Propietats del formulari',action:'Acció',method:'Mètode',encoding:'Codificació'},select:{title:'Propietats del camp de selecció',selectInfo:'Info',opAvail:'Opcions disponibles',value:'Valor',size:'Mida',lines:'Línies',chkMulti:'Permet múltiples seleccions',opText:'Text',opValue:'Valor',btnAdd:'Afegeix',btnModify:'Modifica',btnUp:'Amunt',btnDown:'Avall',btnSetValue:'Selecciona per defecte',btnDelete:'Elimina'},textarea:{title:"Propietats de l'àrea de text",cols:'Columnes',rows:'Files'},textfield:{title:'Propietats del camp de text',name:'Nom',value:'Valor',charWidth:'Amplada',maxChars:'Nombre màxim de caràcters',type:'Tipus',typeText:'Text',typePass:'Contrasenya'},hidden:{title:'Propietats del camp ocult',name:'Nom',value:'Valor'},image:{title:'Propietats de la imatge',titleButton:"Propietats del botó d'imatge",menu:'Propietats de la imatge',infoTab:'Informació de la imatge',btnUpload:'Envia-la al servidor',upload:'Puja',alt:'Text alternatiu',lockRatio:'Bloqueja les proporcions',resetSize:'Restaura la mida',border:'Vora',hSpace:'Espaiat horit.',vSpace:'Espaiat vert.',alertUrl:'Si us plau, escriviu la URL de la imatge',linkTab:'Enllaç',button2Img:"Voleu transformar el botó d'imatge seleccionat en una simple imatge?",img2Button:"Voleu transformar la imatge seleccionada en un botó d'imatge?",urlMissing:'Falta la URL de la imatge.',validateBorder:'La vora ha de ser un nombre enter.',validateHSpace:'HSpace ha de ser un nombre enter.',validateVSpace:'VSpace ha de ser un nombre enter.'},flash:{properties:'Propietats del Flash',propertiesTab:'Propietats',title:'Propietats del Flash',chkPlay:'Reprodució automàtica',chkLoop:'Bucle',chkMenu:'Habilita menú Flash',chkFull:'Permetre la pantalla completa',scale:'Escala',scaleAll:'Mostra-ho tot',scaleNoBorder:'Sense vores',scaleFit:'Mida exacta',access:'Accés a scripts',accessAlways:'Sempre',accessSameDomain:'El mateix domini',accessNever:'Mai',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignTextTop:'Text Top',quality:'Qualitat',qualityBest:'La millor',qualityHigh:'Alta',qualityAutoHigh:'Alta automàtica',qualityMedium:'Mitjana',qualityAutoLow:'Baixa automàtica',qualityLow:'Baixa',windowModeWindow:'Finestra',windowModeOpaque:'Opaca',windowModeTransparent:'Transparent',windowMode:'Mode de la finestra',flashvars:'Variables de Flash',bgcolor:'Color de Fons',hSpace:'Espaiat horit.',vSpace:'Espaiat vert.',validateSrc:"Si us plau, escrigui l'enllaç URL",validateHSpace:"L'espaiat horitzonatal ha de ser un nombre.",validateVSpace:"L'espaiat vertical ha de ser un nombre."},spellCheck:{toolbar:"Revisa l'ortografia",title:"Comprova l'ortografia",notAvailable:'El servei no es troba disponible ara.',errorLoading:'Error carregant el servidor: %s.',notInDic:'No és al diccionari',changeTo:'Reemplaça amb',btnIgnore:'Ignora',btnIgnoreAll:'Ignora-les totes',btnReplace:'Canvia',btnReplaceAll:'Canvia-les totes',btnUndo:'Desfés',noSuggestions:'Cap suggeriment',progress:'Verificació ortogràfica en curs...',noMispell:'Verificació ortogràfica acabada: no hi ha cap paraula mal escrita',noChanges:"Verificació ortogràfica: no s'ha canviat cap paraula",oneChange:"Verificació ortogràfica: s'ha canviat una paraula",manyChanges:"Verificació ortogràfica: s'han canviat %1 paraules",ieSpellDownload:'Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?'},smiley:{toolbar:'Icona',title:'Insereix una icona',options:"Opcions d'emoticones"},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Llista numerada',bulletedlist:'Llista de pics',indent:'Augmenta el sagnat',outdent:'Redueix el sagnat',justify:{left:"Alinea a l'esquerra",center:'Centrat',right:'Alinea a la dreta',block:'Justificat'},blockquote:'Bloc de cita',clipboard:{title:'Enganxa',cutError:'La seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl+X).',copyError:'La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).',pasteMsg:'Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.',securityMsg:"A causa de la configuració de seguretat del vostre navegador, l'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.",pasteArea:"Àrea d'enganxat"},pastefromword:{confirmCleanup:'El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?',toolbar:'Enganxa des del Word',title:'Enganxa des del Word',error:'No ha estat possible netejar les dades enganxades degut a un error intern'},pasteText:{button:'Enganxa com a text no formatat',title:'Enganxa com a text no formatat'},templates:{button:'Plantilles',title:'Plantilles de contingut',options:'Opcions de plantilla',insertOption:'Reemplaça el contingut actual',selectPromptMsg:"Seleccioneu una plantilla per usar a l'editor<br>(per defecte s'elimina el contingut actual):",emptyListMsg:'(No hi ha plantilles definides)'},showBlocks:'Mostra els blocs',stylesCombo:{label:'Estil',panelTitle:'Estils de format',panelTitle1:'Estils de bloc',panelTitle2:'Estils incrustats',panelTitle3:"Estils d'objecte"},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatejat',tag_address:'Adreça',tag_h1:'Encapçalament 1',tag_h2:'Encapçalament 2',tag_h3:'Encapçalament 3',tag_h4:'Encapçalament 4',tag_h5:'Encapçalament 5',tag_h6:'Encapçalament 6',tag_div:'Normal (DIV)'},div:{title:'Crea un contenidor Div',toolbar:'Crea un contenidor Div',cssClassInputLabel:"Classes de la fulla d'estils",styleSelectLabel:'Estil',IdInputLabel:'Id',languageCodeInputLabel:" Codi d'idioma",inlineStyleInputLabel:'Estil en línia',advisoryTitleInputLabel:'Títol de guia',langDirLabel:"Direcció de l'idioma",langDirLTRLabel:"D'esquerra a dreta (LTR)",langDirRTLLabel:'De dreta a esquerra (RTL)',edit:'Edita Div',remove:'Elimina Div'},iframe:{title:'Propietats IFrame',toolbar:'IFrame',noUrl:"Si us plau, introduïu la URL de l'iframe URL",scrolling:'Activa les barrres de desplaçament',border:'Mostra la vora del marc'},font:{label:'Tipus de lletra',voiceLabel:'Tipus de lletra',panelTitle:'Tipus de lletra'},fontSize:{label:'Mida',voiceLabel:'Mida de la lletra',panelTitle:'Mida'},colorButton:{textColorTitle:'Color de Text',bgColorTitle:'Color de Fons',panelTitle:'Colors',auto:'Automàtic',more:'Més colors...'},colors:{'000':'Negre',800000:'Granat','8B4513':'Marró sella','2F4F4F':'Gris pissarra fosca','008080':'Blau xarxet','000080':'Blau marí','4B0082':'Indi',696969:'Gris intens',B22222:'Maó',A52A2A:'Marró (web)',DAA520:'Solidago','006400':'Verd fosc','40E0D0':'Turquesa','0000CD':'Atzur',800080:'Lila',808080:'Gris',F00:'Vermell',FF8C00:'Taronja fosc',FFD700:'Or','008000':'Verd','0FF':'Cian','00F':'Blau',EE82EE:'Lavanda rosat',A9A9A9:'Gris clar',FFA07A:'Salmó clar',FFA500:'Taronja',FFFF00:'Groc','00FF00':'Verd llima',AFEEEE:'Blau pàlid',ADD8E6:'Blau clar',DDA0DD:'Pruna',D3D3D3:'Gris clar',FFF0F5:'Lavanda rosat',FAEBD7:'Blanc antic',FFFFE0:'Groc clar',F0FFF0:'Verd pàlid',F0FFFF:'Blau cel pàlid',F0F8FF:'Cian pàlid',E6E6FA:'Lavanda',FFF:'Blanc'},scayt:{title:'Spell Check As You Type',opera_title:"No és compatible amb l'Opera",enable:"Habilitat l'SCAYT",disable:'Deshabilita SCAYT',about:"Quant a l'SCAYT",toggle:"Commuta l'SCAYT",options:'Opcions',langs:'Idiomes',moreSuggestions:'Més suggerències',ignore:'Ignora',ignoreAll:"Ignora'ls tots",addWord:'Afegeix una paraula',emptyDic:"El nom del diccionari no hauria d'estar buit.",optionsTab:'Opcions',allCaps:'Ignora paraules en majúscules',ignoreDomainNames:'Ignora els noms de domini',mixedCase:'Ignora paraules amb majúscules i minúscules',mixedWithDigits:'Ignora paraules amb números ',languagesTab:'Idiomes',dictionariesTab:'Diccionaris',dic_field_name:'Nom del diccionari',dic_create:'Crea',dic_restore:'Restaura',dic_delete:'Elimina',dic_rename:'Canvia el nom',dic_info:"Inicialment el diccionari d'usuari s'emmagatzema en una galeta. De totes maneres, les galetes tenen la mida limitada. Quan el diccionari creix massa, llavors el diccionari es pot emmagatzemar al nostre servidor. Per desar el vostre diccionari personal al nostre servidor heu d.'especificar un nom pel diccionari. Si ja heu desat un diccionari, teclegeu si us plau el seu nom i cliqueu el botó de restauració.",aboutTab:'Quant a'},about:{title:'Quant al CKEditor',dlgTitle:'Quant al CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'Per informació sobre llicències visiteu el web:',copy:'Copyright © $1. Tots els drets reservats.'},maximize:'Maximitza',minimize:'Minimitza',fakeobjects:{anchor:'Àncora',flash:'Animació Flash',iframe:'IFrame',hiddenfield:'Camp ocult',unknown:'Objecte desconegut'},resize:'Arrossegueu per redimensionar',colordialog:{title:'Selecciona el color',options:'Opcions del color',highlight:'Destacat',selected:'Seleccionat',clear:'Neteja'},toolbarCollapse:"Redueix la barra d'eines",toolbarExpand:"Amplia la barra d'eines",toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:"Direcció del text d'esquerra a dreta",rtl:'Direcció del text de dreta a esquerra'},docprops:{label:'Propietats del document',title:'Propietats del document',design:'Design',meta:'Metadades',chooseColor:'Trieu',other:'<altre>',docTitle:'Títol de la pàgina',charset:'Codificació de conjunt de caràcters',charsetOther:'Una altra codificació de caràcters',charsetASCII:'ASCII',charsetCE:'Centreeuropeu',charsetCT:'Xinès tradicional (Big5)',charsetCR:'Ciríl·lic',charsetGR:'Grec',charsetJP:'Japonès',charsetKR:'Coreà',charsetTR:'Turc',charsetUN:'Unicode (UTF-8)',charsetWE:'Europeu occidental',docType:'Capçalera de tipus de document',docTypeOther:'Un altra capçalera de tipus de document',xhtmlDec:'Incloure declaracions XHTML',bgColor:'Color de fons',bgImage:'URL de la imatge de fons',bgFixed:'Fons fixe',txtColor:'Color de Text',margin:'Marges de pàgina',marginTop:'Cap',marginLeft:'Esquerra',marginRight:'Dreta',marginBottom:'Peu',metaKeywords:'Mots clau per a indexació (separats per coma)',metaDescription:'Descripció del document',metaAuthor:'Autor',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/cs.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/cs.js
new file mode 100755
index 0000000..74709c7
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/cs.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.cs={dir:'ltr',editorTitle:'Textový editor, %1',editorHelp:'Stiskněte ALT 0 pro nápovědu',toolbars:'Panely nástrojů editoru',editor:'Textový editor',source:'Zdroj',newPage:'Nová stránka',save:'Uložit',preview:'Náhled',cut:'Vyjmout',copy:'Kopírovat',paste:'Vložit',print:'Tisk',underline:'Podtržené',bold:'Tučné',italic:'Kurzíva',selectAll:'Vybrat vše',removeFormat:'Odstranit formátování',strike:'Přeškrtnuté',subscript:'Dolní index',superscript:'Horní index',horizontalrule:'Vložit vodorovnou linku',pagebreak:'Vložit konec stránky',pagebreakAlt:'Konec stránky',unlink:'Odstranit odkaz',undo:'Zpět',redo:'Znovu',common:{browseServer:'Vybrat na serveru',url:'URL',protocol:'Protokol',upload:'Odeslat',uploadSubmit:'Odeslat na server',image:'Obrázek',flash:'Flash',form:'Formulář',checkbox:'Zaškrtávací políčko',radio:'Přepínač',textField:'Textové pole',textarea:'Textová oblast',hiddenField:'Skryté pole',button:'Tlačítko',select:'Seznam',imageButton:'Obrázkové tlačítko',notSet:'<nenastaveno>',id:'Id',name:'Jméno',langDir:'Směr jazyka',langDirLtr:'Zleva doprava (LTR)',langDirRtl:'Zprava doleva (RTL)',langCode:'Kód jazyka',longDescr:'Dlouhý popis URL',cssClass:'Třída stylu',advisoryTitle:'Pomocný titulek',cssStyle:'Styl',ok:'OK',cancel:'Zrušit',close:'Zavřít',preview:'Náhled',generalTab:'Obecné',advancedTab:'Rozšířené',validateNumberFailed:'Zadaná hodnota není číselná.',confirmNewPage:'Jakékoliv neuložené změny obsahu budou ztraceny. Skutečně chcete otevřít novou stránku?',confirmCancel:'Některá z nastavení byla změněna. Skutečně chcete zavřít dialogové okno?',options:'Nastavení',target:'Cíl',targetNew:'Nové okno (_blank)',targetTop:'Okno nejvyšší úrovně (_top)',targetSelf:'Stejné okno (_self)',targetParent:'Rodičovské okno (_parent)',langDirLTR:'Zleva doprava (LTR)',langDirRTL:'Zprava doleva (RTL)',styles:'Styly',cssClasses:'Třídy stylů',width:'Šířka',height:'Výška',align:'Zarovnání',alignLeft:'Vlevo',alignRight:'Vpravo',alignCenter:'Na střed',alignTop:'Nahoru',alignMiddle:'Na střed',alignBottom:'Dolů',invalidHeight:'Zadaná výška musí být číslo.',invalidWidth:'Šířka musí být číslo.',invalidCssLength:'Hodnota určená pro pole "%1" musí být kladné číslo bez nebo s platnou jednotkou míry CSS (px, %, in, cm, mm, em, ex, pt, nebo pc).',invalidHtmlLength:'Hodnota určená pro pole "%1" musí být kladné číslo bez nebo s platnou jednotkou míry HTML (px nebo %).',invalidInlineStyle:'Hodnota určená pro řádkový styl se musí skládat z jedné nebo více n-tic ve formátu "název : hodnota", oddělené středníky',cssLengthTooltip:'Zadejte číslo jako hodnotu v pixelech nebo číslo s platnou jednotkou CSS (px, %, v cm, mm, em, ex, pt, nebo pc).',unavailable:'%1<span class="cke_accessibility">, nedostupné</span>'},contextmenu:{options:'Nastavení kontextové nabídky'},specialChar:{toolbar:'Vložit speciální znaky',title:'Výběr speciálního znaku',options:'Nastavení speciálních znaků'},link:{toolbar:'Odkaz',other:'<jiný>',menu:'Změnit odkaz',title:'Odkaz',info:'Informace o odkazu',target:'Cíl',upload:'Odeslat',advanced:'Rozšířené',type:'Typ odkazu',toUrl:'URL',toAnchor:'Kotva v této stránce',toEmail:'E-mail',targetFrame:'<rámec>',targetPopup:'<vyskakovací okno>',targetFrameName:'Název cílového rámu',targetPopupName:'Název vyskakovacího okna',popupFeatures:'Vlastnosti vyskakovacího okna',popupResizable:'Umožňující měnit velikost',popupStatusBar:'Stavový řádek',popupLocationBar:'Panel umístění',popupToolbar:'Panel nástrojů',popupMenuBar:'Panel nabídky',popupFullScreen:'Celá obrazovka (IE)',popupScrollBars:'Posuvníky',popupDependent:'Závislost (Netscape)',popupLeft:'Levý okraj',popupTop:'Horní okraj',id:'Id',langDir:'Směr jazyka',langDirLTR:'Zleva doprava (LTR)',langDirRTL:'Zprava doleva (RTL)',acccessKey:'Přístupový klíč',name:'Jméno',langCode:'Kód jazyka',tabIndex:'Pořadí prvku',advisoryTitle:'Pomocný titulek',advisoryContentType:'Pomocný typ obsahu',cssClasses:'Třída stylu',charset:'Přiřazená znaková sada',styles:'Styl',rel:'Vztah',selectAnchor:'Vybrat kotvu',anchorName:'Podle jména kotvy',anchorId:'Podle Id objektu',emailAddress:'E-mailová adresa',emailSubject:'Předmět zprávy',emailBody:'Tělo zprávy',noAnchors:'(Ve stránce není definována žádná kotva!)',noUrl:'Zadejte prosím URL odkazu',noEmail:'Zadejte prosím e-mailovou adresu'},anchor:{toolbar:'Záložka',menu:'Vlastnosti záložky',title:'Vlastnosti záložky',name:'Název záložky',errorName:'Zadejte prosím název záložky',remove:'Odstranit záložku'},list:{numberedTitle:'Vlastnosti číslování',bulletedTitle:'Vlastnosti odrážek',type:'Typ',start:'Počátek',validateStartNumber:'Číslování musí začínat celým číslem.',circle:'Kroužky',disc:'Kolečka',square:'Čtverce',none:'Nic',notset:'<nenastaveno>',armenian:'Arménské',georgian:'Gruzínské (an, ban, gan, atd.)',lowerRoman:'Malé římské (i, ii, iii, iv, v, atd.)',upperRoman:'Velké římské (I, II, III, IV, V, atd.)',lowerAlpha:'Malá latinka (a, b, c, d, e, atd.)',upperAlpha:'Velká latinka (A, B, C, D, E, atd.)',lowerGreek:'Malé řecké (alpha, beta, gamma, atd.)',decimal:'Arabská čísla (1, 2, 3, atd.)',decimalLeadingZero:'Arabská čísla uvozená nulou (01, 02, 03, atd.)'},findAndReplace:{title:'Najít a nahradit',find:'Hledat',replace:'Nahradit',findWhat:'Co hledat:',replaceWith:'Čím nahradit:',notFoundMsg:'Hledaný text nebyl nalezen.',findOptions:'Možnosti hledání',matchCase:'Rozlišovat velikost písma',matchWord:'Pouze celá slova',matchCyclic:'Procházet opakovaně',replaceAll:'Nahradit vše',replaceSuccessMsg:'%1 nahrazení.'},table:{toolbar:'Tabulka',title:'Vlastnosti tabulky',menu:'Vlastnosti tabulky',deleteTable:'Smazat tabulku',rows:'Řádky',columns:'Sloupce',border:'Ohraničení',widthPx:'bodů',widthPc:'procent',widthUnit:'jednotka šířky',cellSpace:'Vzdálenost buněk',cellPad:'Odsazení obsahu v buňce',caption:'Popis',summary:'Souhrn',headers:'Záhlaví',headersNone:'Žádné',headersColumn:'První sloupec',headersRow:'První řádek',headersBoth:'Obojí',invalidRows:'Počet řádků musí být číslo větší než 0.',invalidCols:'Počet sloupců musí být číslo větší než 0.',invalidBorder:'Zdaná velikost okraje musí být číselná.',invalidWidth:'Šířka tabulky musí být číslo.',invalidHeight:'Zadaná výška tabulky musí být číselná.',invalidCellSpacing:'Zadaná vzdálenost buněk musí být číselná.',invalidCellPadding:'Zadané odsazení obsahu v buňce musí být číselné.',cell:{menu:'Buňka',insertBefore:'Vložit buňku před',insertAfter:'Vložit buňku za',deleteCell:'Smazat buňky',merge:'Sloučit buňky',mergeRight:'Sloučit doprava',mergeDown:'Sloučit dolů',splitHorizontal:'Rozdělit buňky vodorovně',splitVertical:'Rozdělit buňky svisle',title:'Vlastnosti buňky',cellType:'Typ buňky',rowSpan:'Spojit řádky',colSpan:'Spojit sloupce',wordWrap:'Zalamování',hAlign:'Vodorovné zarovnání',vAlign:'Svislé zarovnání',alignBaseline:'Na účaří',bgColor:'Barva pozadí',borderColor:'Barva okraje',data:'Data',header:'Hlavička',yes:'Ano',no:'Ne',invalidWidth:'Šířka buňky musí být číslo.',invalidHeight:'Zadaná výška buňky musí být číslená.',invalidRowSpan:'Zadaný počet sloučených řádků musí být celé číslo.',invalidColSpan:'Zadaný počet sloučených sloupců musí být celé číslo.',chooseColor:'Výběr'},row:{menu:'Řádek',insertBefore:'Vložit řádek před',insertAfter:'Vložit řádek za',deleteRow:'Smazat řádky'},column:{menu:'Sloupec',insertBefore:'Vložit sloupec před',insertAfter:'Vložit sloupec za',deleteColumn:'Smazat sloupec'}},button:{title:'Vlastnosti tlačítka',text:'Popisek',type:'Typ',typeBtn:'Tlačítko',typeSbm:'Odeslat',typeRst:'Obnovit'},checkboxAndRadio:{checkboxTitle:'Vlastnosti zaškrtávacího políčka',radioTitle:'Vlastnosti přepínače',value:'Hodnota',selected:'Zaškrtnuto'},form:{title:'Vlastnosti formuláře',menu:'Vlastnosti formuláře',action:'Akce',method:'Metoda',encoding:'Kódování'},select:{title:'Vlastnosti seznamu',selectInfo:'Info',opAvail:'Dostupná nastavení',value:'Hodnota',size:'Velikost',lines:'Řádků',chkMulti:'Povolit mnohonásobné výběry',opText:'Text',opValue:'Hodnota',btnAdd:'Přidat',btnModify:'Změnit',btnUp:'Nahoru',btnDown:'Dolů',btnSetValue:'Nastavit jako vybranou hodnotu',btnDelete:'Smazat'},textarea:{title:'Vlastnosti textové oblasti',cols:'Sloupců',rows:'Řádků'},textfield:{title:'Vlastnosti textového pole',name:'Název',value:'Hodnota',charWidth:'Šířka ve znacích',maxChars:'Maximální počet znaků',type:'Typ',typeText:'Text',typePass:'Heslo'},hidden:{title:'Vlastnosti skrytého pole',name:'Název',value:'Hodnota'},image:{title:'Vlastnosti obrázku',titleButton:'Vlastností obrázkového tlačítka',menu:'Vlastnosti obrázku',infoTab:'Informace o obrázku',btnUpload:'Odeslat na server',upload:'Odeslat',alt:'Alternativní text',lockRatio:'Zámek',resetSize:'Původní velikost',border:'Okraje',hSpace:'Horizontální mezera',vSpace:'Vertikální mezera',alertUrl:'Zadejte prosím URL obrázku',linkTab:'Odkaz',button2Img:'Skutečně chcete převést zvolené obrázkové tlačítko na obyčejný obrázek?',img2Button:'Skutečně chcete převést zvolený obrázek na obrázkové tlačítko?',urlMissing:'Zadané URL zdroje obrázku nebylo nalezeno.',validateBorder:'Okraj musí být nastaven v celých číslech.',validateHSpace:'Horizontální mezera musí být nastavena v celých číslech.',validateVSpace:'Vertikální mezera musí být nastavena v celých číslech.'},flash:{properties:'Vlastnosti Flashe',propertiesTab:'Vlastnosti',title:'Vlastnosti Flashe',chkPlay:'Automatické spuštění',chkLoop:'Opakování',chkMenu:'Nabídka Flash',chkFull:'Povolit celoobrazovkový režim',scale:'Zobrazit',scaleAll:'Zobrazit vše',scaleNoBorder:'Bez okraje',scaleFit:'Přizpůsobit',access:'Přístup ke skriptu',accessAlways:'Vždy',accessSameDomain:'Ve stejné doméně',accessNever:'Nikdy',alignAbsBottom:'Zcela dolů',alignAbsMiddle:'Doprostřed',alignBaseline:'Na účaří',alignTextTop:'Na horní okraj textu',quality:'Kvalita',qualityBest:'Nejlepší',qualityHigh:'Vysoká',qualityAutoHigh:'Vysoká - auto',qualityMedium:'Střední',qualityAutoLow:'Nízká - auto',qualityLow:'Nejnižší',windowModeWindow:'Okno',windowModeOpaque:'Neprůhledné',windowModeTransparent:'Průhledné',windowMode:'Režim okna',flashvars:'Proměnné pro Flash',bgcolor:'Barva pozadí',hSpace:'Horizontální mezera',vSpace:'Vertikální mezera',validateSrc:'Zadejte prosím URL odkazu',validateHSpace:'Zadaná horizontální mezera musí být číslo.',validateVSpace:'Zadaná vertikální mezera musí být číslo.'},spellCheck:{toolbar:'Zkontrolovat pravopis',title:'Kontrola pravopisu',notAvailable:'Omlouváme se, ale služba nyní není dostupná.',errorLoading:'Chyba nahrávání služby aplikace z: %s.',notInDic:'Není ve slovníku',changeTo:'Změnit na',btnIgnore:'Přeskočit',btnIgnoreAll:'Přeskakovat vše',btnReplace:'Zaměnit',btnReplaceAll:'Zaměňovat vše',btnUndo:'Zpět',noSuggestions:'- žádné návrhy -',progress:'Probíhá kontrola pravopisu...',noMispell:'Kontrola pravopisu dokončena: Žádné pravopisné chyby nenalezeny',noChanges:'Kontrola pravopisu dokončena: Beze změn',oneChange:'Kontrola pravopisu dokončena: Jedno slovo změněno',manyChanges:'Kontrola pravopisu dokončena: %1 slov změněno',ieSpellDownload:'Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?'},smiley:{toolbar:'Smajlíci',title:'Vkládání smajlíků',options:'Nastavení smajlíků'},elementsPath:{eleLabel:'Cesta objektu',eleTitle:'%1 objekt'},numberedlist:'Číslování',bulletedlist:'Odrážky',indent:'Zvětšit odsazení',outdent:'Zmenšit odsazení',justify:{left:'Zarovnat vlevo',center:'Zarovnat na střed',right:'Zarovnat vpravo',block:'Zarovnat do bloku'},blockquote:'Citace',clipboard:{title:'Vložit',cutError:'Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+X).',copyError:'Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+C).',pasteMsg:'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl/Cmd+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.',securityMsg:'Z důvodů nastavení bezpečnosti vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.',pasteArea:'Oblast vkládání'},pastefromword:{confirmCleanup:'Jak je vidět, vkládaný text je kopírován z Wordu. Chcete jej před vložením vyčistit?',toolbar:'Vložit z Wordu',title:'Vložit z Wordu',error:'Z důvodu vnitřní chyby nebylo možné provést vyčištění vkládaného textu.'},pasteText:{button:'Vložit jako čistý text',title:'Vložit jako čistý text'},templates:{button:'Šablony',title:'Šablony obsahu',options:'Nastavení šablon',insertOption:'Nahradit aktuální obsah',selectPromptMsg:'Prosím zvolte šablonu pro otevření v editoru<br>(aktuální obsah editoru bude ztracen):',emptyListMsg:'(Není definována žádná šablona)'},showBlocks:'Ukázat bloky',stylesCombo:{label:'Styl',panelTitle:'Formátovací styly',panelTitle1:'Blokové styly',panelTitle2:'Řádkové styly',panelTitle3:'Objektové styly'},format:{label:'Formát',panelTitle:'Formát',tag_p:'Normální',tag_pre:'Naformátováno',tag_address:'Adresa',tag_h1:'Nadpis 1',tag_h2:'Nadpis 2',tag_h3:'Nadpis 3',tag_h4:'Nadpis 4',tag_h5:'Nadpis 5',tag_h6:'Nadpis 6',tag_div:'Normální (DIV)'},div:{title:'Vytvořit Div kontejner',toolbar:'Vytvořit Div kontejner',cssClassInputLabel:'Třídy stylů',styleSelectLabel:'Styly',IdInputLabel:'Id',languageCodeInputLabel:' Kód jazyka',inlineStyleInputLabel:'Vnitřní styly',advisoryTitleInputLabel:'Nápovědní titulek',langDirLabel:'Směr jazyka',langDirLTRLabel:'Zleva doprava (LTR)',langDirRTLLabel:'Zprava doleva (RTL)',edit:'Změnit Div',remove:'Odstranit Div'},iframe:{title:'Vlastnosti IFrame',toolbar:'IFrame',noUrl:'Zadejte prosím URL obsahu pro IFrame',scrolling:'Zapnout posuvníky',border:'Zobrazit okraj'},font:{label:'Písmo',voiceLabel:'Písmo',panelTitle:'Písmo'},fontSize:{label:'Velikost',voiceLabel:'Velikost písma',panelTitle:'Velikost'},colorButton:{textColorTitle:'Barva textu',bgColorTitle:'Barva pozadí',panelTitle:'Barvy',auto:'Automaticky',more:'Více barev...'},colors:{'000':'Černá',800000:'Kaštanová','8B4513':'Sedlová hněď','2F4F4F':'Tmavě bledě šedá','008080':'Čírka','000080':'Námořnická modř','4B0082':'Inkoustová',696969:'Tmavě šedá',B22222:'Pálená cihla',A52A2A:'Hnědá',DAA520:'Zlatý prut','006400':'Tmavě zelená','40E0D0':'Tyrkisová','0000CD':'Středně modrá',800080:'Purpurová',808080:'Šedá',F00:'Červená',FF8C00:'Tmavě oranžová',FFD700:'Zlatá','008000':'Zelená','0FF':'Azurová','00F':'Modrá',EE82EE:'Fialová',A9A9A9:'Kalně šedá',FFA07A:'Světle lososová',FFA500:'Oranžová',FFFF00:'Žlutá','00FF00':'Limetková',AFEEEE:'Bledě tyrkisová',ADD8E6:'Světle modrá',DDA0DD:'Švestková',D3D3D3:'Světle šedá',FFF0F5:'Levandulově ruměnná',FAEBD7:'Antická bílá',FFFFE0:'Světle žlutá',F0FFF0:'Medová rosa',F0FFFF:'Azurová',F0F8FF:'Alenčina modrá',E6E6FA:'Levandulová',FFF:'Bílá'},scayt:{title:'Kontrola pravopisu během psaní (SCAYT)',opera_title:'Toto Opera nepodporuje',enable:'Zapnout SCAYT',disable:'Vypnout SCAYT',about:'O aplikaci SCAYT',toggle:'Vypínač SCAYT',options:'Nastavení',langs:'Jazyky',moreSuggestions:'Více návrhů',ignore:'Přeskočit',ignoreAll:'Přeskočit vše',addWord:'Přidat slovo',emptyDic:'Název slovníku nesmí být prázdný.',optionsTab:'Nastavení',allCaps:'Ignorovat slova tvořená velkými písmeny',ignoreDomainNames:'Ignorovat doménová jména',mixedCase:'Ignorovat slova obsahující různou velikost písma',mixedWithDigits:'Ignorovat slova obsahující čísla',languagesTab:'Jazyky',dictionariesTab:'Slovníky',dic_field_name:'Název slovníku',dic_create:'Vytvořit',dic_restore:'Obnovit',dic_delete:'Smazat',dic_rename:'Přejmenovat',dic_info:'Zpočátku se uživatelský slovník ukládá do cookies ve vašem prohlížeči. Ovšem cookies mají omezenou velikost, takže když slovník dosáhne velikosti, kdy se již do cookies nevejde, může být uložen na našem serveru. Chcete-li uložit váš osobní slovník na našem serveru, je třeba slovník nejdříve pojmenovat. Máte-li již slovník pojmenován a uložen, zadejte jeho název a klepněte na tlačítko Obnovit.',aboutTab:'O aplikaci'},about:{title:'O aplikaci CKEditor',dlgTitle:'O aplikaci CKEditor',help:'Prohlédněte si $1 pro nápovědu.',userGuide:'Uživatelská příručka CKEditor',moreInfo:'Pro informace o lincenci navštivte naši webovou stránku:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximalizovat',minimize:'Minimalizovat',fakeobjects:{anchor:'Záložka',flash:'Flash animace',iframe:'IFrame',hiddenfield:'Skryté pole',unknown:'Neznámý objekt'},resize:'Uchopit pro změnu velikosti',colordialog:{title:'Výběr barvy',options:'Nastavení barvy',highlight:'Zvýraznit',selected:'Vybráno',clear:'Vyčistit'},toolbarCollapse:'Skrýt panel nástrojů',toolbarExpand:'Zobrazit panel nástrojů',toolbarGroups:{document:'Dokument',clipboard:'Schránka/Zpět',editing:'Úpravy',forms:'Formuláře',basicstyles:'Základní styly',paragraph:'Odstavec',links:'Odkazy',insert:'Vložit',styles:'Styly',colors:'Barvy',tools:'Nástroje'},bidi:{ltr:'Směr textu zleva doprava',rtl:'Směr textu zprava doleva'},docprops:{label:'Vlastnosti dokumentu',title:'Vlastnosti dokumentu',design:'Vzhled',meta:'Metadata',chooseColor:'Výběr',other:'<jiný>',docTitle:'Titulek stránky',charset:'Znaková sada',charsetOther:'Další znaková sada',charsetASCII:'ASCII',charsetCE:'Středoevropské jazyky',charsetCT:'Tradiční čínština (Big5)',charsetCR:'Cyrilice',charsetGR:'Řečtina',charsetJP:'Japonština',charsetKR:'Korejština',charsetTR:'Turečtina',charsetUN:'Unicode (UTF-8)',charsetWE:'Západoevropské jazyky',docType:'Typ dokumentu',docTypeOther:'Jiný typ dokumetu',xhtmlDec:'Zahrnout deklarace XHTML',bgColor:'Barva pozadí',bgImage:'URL obrázku na pozadí',bgFixed:'Nerolovatelné (Pevné) pozadí',txtColor:'Barva textu',margin:'Okraje stránky',marginTop:'Horní',marginLeft:'Levý',marginRight:'Pravý',marginBottom:'Dolní',metaKeywords:'Klíčová slova (oddělená čárkou)',metaDescription:'Popis dokumentu',metaAuthor:'Autor',metaCopyright:'Autorská práva',previewHtml:'<p>Toto je <strong>ukázkový text</strong>. Používáte <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/cy.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/cy.js
new file mode 100755
index 0000000..94b49c1
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/cy.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.cy={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Bariau offer golygydd',editor:'Golygydd Testun Cyfoethog',source:'HTML',newPage:'Tudalen newydd',save:'Cadw',preview:'Rhagolwg',cut:'Torri',copy:'Copïo',paste:'Gludo',print:'Argraffu',underline:'Tanlinellu',bold:'Bras',italic:'Italig',selectAll:'Dewis Popeth',removeFormat:'Tynnu Fformat',strike:'Llinell Trwyddo',subscript:'Is-sgript',superscript:'Uwchsgript',horizontalrule:'Mewnosod Llinell Lorweddol',pagebreak:'Mewnosod Toriad Tudalen i Argraffu',pagebreakAlt:'Toriad Tudalen',unlink:'Datgysylltu',undo:'Dadwneud',redo:'Ailadrodd',common:{browseServer:"Pori'r Gweinydd",url:'URL',protocol:'Protocol',upload:'Lanlwytho',uploadSubmit:"Anfon i'r Gweinydd",image:'Delwedd',flash:'Flash',form:'Ffurflen',checkbox:'Blwch ticio',radio:'Botwm Radio',textField:'Maes Testun',textarea:'Ardal Testun',hiddenField:'Maes Cudd',button:'Botwm',select:'Maes Dewis',imageButton:'Botwm Delwedd',notSet:'<heb osod>',id:'Id',name:'Name',langDir:'Cyfeiriad Iaith',langDirLtr:"Chwith i'r Dde (LTR)",langDirRtl:"Dde i'r Chwith (RTL)",langCode:'Cod Iaith',longDescr:'URL Disgrifiad Hir',cssClass:'Dosbarth Dalen Arddull',advisoryTitle:'Teitl Cynghorol',cssStyle:'Arddull',ok:'Iawn',cancel:'Diddymu',close:'Cau',preview:'Rhagolwg',generalTab:'Cyffredinol',advancedTab:'Uwch',validateNumberFailed:"Nid yw'r gwerth hwn yn rhif.",confirmNewPage:"Byddwch yn colli unrhyw newidiadau i'r cynnwys sydd heb eu cadw. A ydych am barhau i lwytho tudalen newydd?",confirmCancel:"Mae rhai o'r opsiynau wedi'u newid. A ydych wir am gau'r deialog?",options:'Opsiynau',target:'Targed',targetNew:'Ffenest Newydd (_blank)',targetTop:'Ffenest ar y Brig (_top)',targetSelf:'Yr un Ffenest (_self)',targetParent:'Ffenest y Rhiant (_parent)',langDirLTR:"Chwith i'r Dde (LTR)",langDirRTL:"Dde i'r Chwith (RTL)",styles:'Arddull',cssClasses:'Dosbarthiadau Ffeil Ddiwyg',width:'Lled',height:'Uchder',align:'Alinio',alignLeft:'Chwith',alignRight:'Dde',alignCenter:'Canol',alignTop:'Brig',alignMiddle:'Canol',alignBottom:'Gwaelod',invalidHeight:"Rhaid i'r Uchder fod yn rhif.",invalidWidth:"Rhaid i'r Lled fod yn rhif.",invalidCssLength:"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad CSS dilys (px, %, in, cm, mm, em, ex, pt, neu pc).",invalidHtmlLength:"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad HTML dilys (px neu %).",invalidInlineStyle:"Mae'n rhaid i'r gwerth ar gyfer arddull mewn-llinell gynnwys un set neu fwy ar y fformat \"enw:gwerth\", wedi'u gwahanu gyda hanner colon.",cssLengthTooltip:'Rhowch rif ar gyfer gwerth mewn picsel neu rhif gydag uned CSS dilys (px, %, in, cm, mm, em, pt neu pc).',unavailable:'%1<span class="cke_accessibility">, ddim ar gael</span>'},contextmenu:{options:'Opsiynau Dewislen Cyd-destun'},specialChar:{toolbar:'Mewnosod Nodau Arbennig',title:'Dewis Nod Arbennig',options:'Opsiynau Nodau Arbennig'},link:{toolbar:'Dolen',other:'<eraill>',menu:'Golygu Dolen',title:'Dolen',info:'Gwyb ar y Ddolen',target:'Targed',upload:'Lanlwytho',advanced:'Uwch',type:'Math y Ddolen',toUrl:'URL',toAnchor:'Dolen at angor yn y testun',toEmail:'E-bost',targetFrame:'<ffrâm>',targetPopup:'<ffenestr bop>',targetFrameName:'Enw Ffrâm y Targed',targetPopupName:'Enw Ffenestr Bop',popupFeatures:'Nodweddion Ffenestr Bop',popupResizable:'Ailfeintiol',popupStatusBar:'Bar Statws',popupLocationBar:'Bar Safle',popupToolbar:'Bar Offer',popupMenuBar:'Dewislen',popupFullScreen:'Sgrin Llawn (IE)',popupScrollBars:'Barrau Sgrolio',popupDependent:'Dibynnol (Netscape)',popupLeft:'Safle Chwith',popupTop:'Safle Top',id:'Id',langDir:'Cyfeiriad Iaith',langDirLTR:"Chwith i'r Dde (LTR)",langDirRTL:"Dde i'r Chwith (RTL)",acccessKey:'Allwedd Mynediad',name:'Enw',langCode:'Cod Iaith',tabIndex:'Indecs Tab',advisoryTitle:'Teitl Cynghorol',advisoryContentType:'Math y Cynnwys Cynghorol',cssClasses:'Dosbarthiadau Dalen Arddull',charset:"Set nodau'r Adnodd Cysylltiedig",styles:'Arddull',rel:'Perthynas',selectAnchor:'Dewiswch Angor',anchorName:"Gan Enw'r Angor",anchorId:'Gan Id yr Elfen',emailAddress:'Cyfeiriad E-Bost',emailSubject:'Testun y Message Subject',emailBody:'Pwnc y Neges',noAnchors:'(Dim angorau ar gael yn y ddogfen)',noUrl:'Teipiwch URL y ddolen',noEmail:'Teipiwch gyfeiriad yr e-bost'},anchor:{toolbar:'Angor',menu:'Golygwch yr Angor',title:"Priodweddau'r Angor",name:"Enw'r Angor",errorName:"Teipiwch enw'r angor",remove:'Tynnwch yr Angor'},list:{numberedTitle:'Priodweddau Rhestr Rifol',bulletedTitle:'Priodweddau Rhestr Fwled',type:'Math',start:'Dechrau',validateStartNumber:'Rhaid bod y rhif cychwynnol yn gyfanrif.',circle:'Cylch',disc:'Disg',square:'Sgwâr',none:'Dim',notset:'<heb osod>',armenian:'Rhifau Armeneg',georgian:'Rhifau Sioraidd (an, ban, gan, ayyb.)',lowerRoman:'Rhufeinig Is (i, ii, iii, iv, v, ayyb.)',upperRoman:'Rhufeinig Uwch (I, II, III, IV, V, ayyb.)',lowerAlpha:'Alffa Is (a, b, c, d, e, ayyb.)',upperAlpha:'Alffa Uwch (A, B, C, D, E, ayyb.)',lowerGreek:'Groeg Is (alpha, beta, gamma, ayyb.)',decimal:'Degol (1, 2, 3, ayyb.)',decimalLeadingZero:'Degol â sero arweiniol (01, 02, 03, ayyb.)'},findAndReplace:{title:'Chwilio ac Amnewid',find:'Chwilio',replace:'Amnewid',findWhat:"Chwilio'r term:",replaceWith:'Amnewid gyda:',notFoundMsg:"Nid oedd y testun wedi'i ddarganfod.",findOptions:'Chwilio Opsiynau',matchCase:"Cyfateb i'r cas",matchWord:'Cyfateb gair cyfan',matchCyclic:'Cyfateb cylchol',replaceAll:'Amnewid pob un',replaceSuccessMsg:'Amnewidiwyd %1 achlysur.'},table:{toolbar:'Tabl',title:'Nodweddion Tabl',menu:'Nodweddion Tabl',deleteTable:'Dileu Tabl',rows:'Rhesi',columns:'Colofnau',border:'Maint yr Ymyl',widthPx:'picsel',widthPc:'y cant',widthUnit:'uned lled',cellSpace:"Bylchu'r gell",cellPad:"Padio'r gell",caption:'Pennawd',summary:'Crynodeb',headers:'Penynnau',headersNone:'Dim',headersColumn:'Colofn gyntaf',headersRow:'Rhes gyntaf',headersBoth:'Y Ddau',invalidRows:"Mae'n rhaid cael o leiaf un rhes.",invalidCols:"Mae'n rhaid cael o leiaf un golofn.",invalidBorder:"Mae'n rhaid i faint yr ymyl fod yn rhif.",invalidWidth:"Mae'n rhaid i led y tabl fod yn rhif.",invalidHeight:"Mae'n rhaid i uchder y tabl fod yn rhif.",invalidCellSpacing:"Mae'n rhaid i fylchiad y gell fod yn rhif positif.",invalidCellPadding:"Mae'n rhaid i badiad y gell fod yn rhif positif.",cell:{menu:'Cell',insertBefore:'Mewnosod Cell Cyn',insertAfter:'Mewnosod Cell Ar Ôl',deleteCell:'Dileu Celloedd',merge:'Cyfuno Celloedd',mergeRight:"Cyfuno i'r Dde",mergeDown:'Cyfuno i Lawr',splitHorizontal:"Hollti'r Gell yn Lorweddol",splitVertical:"Hollti'r Gell yn Fertigol",title:"Priodweddau'r Gell",cellType:'Math y Gell',rowSpan:'Rhychwant Rhesi',colSpan:'Rhychwant Colofnau',wordWrap:'Lapio Geiriau',hAlign:'Aliniad Llorweddol',vAlign:'Aliniad Fertigol',alignBaseline:'Baslinell',bgColor:'Lliw Cefndir',borderColor:'Lliw Ymyl',data:'Data',header:'Pennyn',yes:'Ie',no:'Na',invalidWidth:"Mae'n rhaid i led y gell fod yn rhif.",invalidHeight:"Mae'n rhaid i uchder y gell fod yn rhif.",invalidRowSpan:"Mae'n rhaid i rychwant y rhesi fod yn gyfanrif.",invalidColSpan:"Mae'n rhaid i rychwant y colofnau fod yn gyfanrif.",chooseColor:'Choose'},row:{menu:'Rhes',insertBefore:'Mewnosod Rhes Cyn',insertAfter:'Mewnosod Rhes Ar Ôl',deleteRow:'Dileu Rhesi'},column:{menu:'Colofn',insertBefore:'Mewnosod Colofn Cyn',insertAfter:'Mewnosod Colofn Ar Ôl',deleteColumn:'Dileu Colofnau'}},button:{title:'Priodweddau Botymau',text:'Testun (Gwerth)',type:'Math',typeBtn:'Botwm',typeSbm:'Gyrru',typeRst:'Ailosod'},checkboxAndRadio:{checkboxTitle:'Priodweddau Blwch Ticio',radioTitle:'Priodweddau Botwm Radio',value:'Gwerth',selected:'Dewiswyd'},form:{title:'Priodweddau Ffurflen',menu:'Priodweddau Ffurflen',action:'Gweithred',method:'Dull',encoding:'Amgodio'},select:{title:'Priodweddau Maes Dewis',selectInfo:'Gwyb Dewis',opAvail:'Opsiynau ar Gael',value:'Gwerth',size:'Maint',lines:'llinellau',chkMulti:'Caniatàu aml-ddewisiadau',opText:'Testun',opValue:'Gwerth',btnAdd:'Ychwanegu',btnModify:'Newid',btnUp:'Lan',btnDown:'Lawr',btnSetValue:'Gosod fel gwerth a ddewiswyd',btnDelete:'Dileu'},textarea:{title:'Priodweddau Ardal Testun',cols:'Colofnau',rows:'Rhesi'},textfield:{title:'Priodweddau Maes Testun',name:'Enw',value:'Gwerth',charWidth:'Lled Nod',maxChars:'Uchafswm y Nodau',type:'Math',typeText:'Testun',typePass:'Cyfrinair'},hidden:{title:'Priodweddau Maes Cudd',name:'Enw',value:'Gwerth'},image:{title:'Priodweddau Delwedd',titleButton:'Priodweddau Botwm Delwedd',menu:'Priodweddau Delwedd',infoTab:'Gwyb Delwedd',btnUpload:"Anfon i'r Gweinydd",upload:'lanlwytho',alt:'Testun Amgen',lockRatio:'Cloi Cymhareb',resetSize:'Ailosod Maint',border:'Ymyl',hSpace:'BwlchLl',vSpace:'BwlchF',alertUrl:'Rhowch URL y ddelwedd',linkTab:'Dolen',button2Img:"Ydych am drawsffurfio'r botwm ddelwedd hwn ar ddelwedd syml?",img2Button:"Ydych am drawsffurfio'r ddelwedd hon ar fotwm delwedd?",urlMissing:'URL gwreiddiol y ddelwedd ar goll.',validateBorder:"Rhaid i'r ymyl fod yn gyfanrif.",validateHSpace:"Rhaid i'r HSpace fod yn gyfanrif.",validateVSpace:"Rhaid i'r VSpace fod yn gyfanrif."},flash:{properties:'Priodweddau Flash',propertiesTab:'Priodweddau',title:'Priodweddau Flash',chkPlay:'AwtoChwarae',chkLoop:'Lwpio',chkMenu:'Galluogi Dewislen Flash',chkFull:'Caniatàu Sgrin Llawn',scale:'Graddfa',scaleAll:'Dangos pob',scaleNoBorder:'Dim Ymyl',scaleFit:'Ffit Union',access:'Mynediad Sgript',accessAlways:'Pob amser',accessSameDomain:"R'un parth",accessNever:'Byth',alignAbsBottom:'Gwaelod Abs',alignAbsMiddle:'Canol Abs',alignBaseline:'Baslinell',alignTextTop:'Testun Top',quality:'Ansawdd',qualityBest:'Gorau',qualityHigh:'Uchel',qualityAutoHigh:'Uchel Awto',qualityMedium:'Canolig',qualityAutoLow:'Isel Awto',qualityLow:'Isel',windowModeWindow:'Ffenestr',windowModeOpaque:'Afloyw',windowModeTransparent:'Tryloyw',windowMode:'Modd ffenestr',flashvars:'Newidynnau ar gyfer Flash',bgcolor:'Lliw cefndir',hSpace:'BwlchLl',vSpace:'BwlchF',validateSrc:'Ni all yr URL fod yn wag.',validateHSpace:"Rhaid i'r BwlchLl fod yn rhif.",validateVSpace:"Rhaid i'r BwlchF fod yn rhif."},spellCheck:{toolbar:'Gwirio Sillafu',title:'Gwirio Sillafu',notAvailable:"Nid yw'r gwasanaeth hwn ar gael yn bresennol.",errorLoading:'Error loading application service host: %s.',notInDic:"Nid i'w gael yn y geiriadur",changeTo:'Newid i',btnIgnore:'Anwybyddu Un',btnIgnoreAll:'Anwybyddu Pob',btnReplace:'Amnewid Un',btnReplaceAll:'Amnewid Pob',btnUndo:'Dadwneud',noSuggestions:'- Dim awgrymiadau -',progress:'Gwirio sillafu yn ar y gweill...',noMispell:'Gwirio sillafu wedi gorffen: Dim camsillaf.',noChanges:'Gwirio sillafu wedi gorffen: Dim newidiadau',oneChange:'Gwirio sillafu wedi gorffen: Newidiwyd 1 gair',manyChanges:'Gwirio sillafu wedi gorffen: Newidiwyd %1 gair',ieSpellDownload:'Gwirydd sillafu heb ei arsefydlu. A ydych am ei lawrlwytho nawr?'},smiley:{toolbar:'Gwenoglun',title:'Mewnosod Gwenoglun',options:'Opsiynau Gwenogluniau'},elementsPath:{eleLabel:'Llwybr elfennau',eleTitle:'Elfen %1'},numberedlist:'Mewnosod/Tynnu Rhestr Rhifol',bulletedlist:'Mewnosod/Tynnu Rhestr Bwled',indent:"Cynyddu'r Mewnoliad",outdent:"Lleihau'r Mewnoliad",justify:{left:"Alinio i'r Chwith",center:"Alinio i'r Canol",right:"Alinio i'r Dde",block:'Aliniad Bloc'},blockquote:'Dyfyniad bloc',clipboard:{title:'Gludo',cutError:"Nid yw gosodiadau diogelwch eich porwr yn caniatàu'r golygydd i gynnal 'gweithredoedd torri' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).",copyError:"Nid yw gosodiadau diogelwch eich porwr yn caniatàu'r golygydd i gynnal 'gweithredoedd copïo' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).",pasteMsg:"Gludwch i mewn i'r blwch canlynol gan ddefnyddio'r bysellfwrdd (<strong>Ctrl/Cmd+V</strong>) a phwyso <strong>Iawn</strong>.",securityMsg:"Oherwydd gosodiadau diogelwch eich porwr, nid yw'r porwr yn gallu ennill mynediad i'r data ar y clipfwrdd yn uniongyrchol. Mae angen i chi ei ludo eto i'r ffenestr hon.",pasteArea:'Ardal Gludo'},pastefromword:{confirmCleanup:"Mae'r testun rydych chi am ludo wedi'i gopïo o Word. Ydych chi am ei lanhau cyn ei ludo?",toolbar:'Gludo o Word',title:'Gludo o Word',error:'Doedd dim modd glanhau y data a ludwyd oherwydd gwall mewnol'},pasteText:{button:'Gludo fel testun plaen',title:'Gludo fel Testun Plaen'},templates:{button:'Templedi',title:'Templedi Cynnwys',options:'Opsiynau Templedi',insertOption:'Amnewid y cynnwys go iawn',selectPromptMsg:"Dewiswch dempled i'w agor yn y golygydd",emptyListMsg:"(Dim templedi wedi'u diffinio)"},showBlocks:'Dangos Blociau',stylesCombo:{label:'Arddulliau',panelTitle:'Arddulliau Fformatio',panelTitle1:'Arddulliau Bloc',panelTitle2:'Arddulliau Mewnol',panelTitle3:'Arddulliau Gwrthrych'},format:{label:'Fformat',panelTitle:'Fformat Paragraff',tag_p:'Normal',tag_pre:"Wedi'i Fformatio",tag_address:'Cyfeiriad',tag_h1:'Pennawd 1',tag_h2:'Pennawd 2',tag_h3:'Pennawd 3',tag_h4:'Pennawd 4',tag_h5:'Pennawd 5',tag_h6:'Pennawd 6',tag_div:'Normal (DIV)'},div:{title:'Creu Cynhwysydd Div',toolbar:'Creu Cynhwysydd Div',cssClassInputLabel:'Dosbarthiadau Ffeil Ddiwyg',styleSelectLabel:'Arddull',IdInputLabel:'Id',languageCodeInputLabel:' Cod Iaith',inlineStyleInputLabel:'Arddull Mewn Llinell',advisoryTitleInputLabel:'Teitl Cynghorol',langDirLabel:'Cyfeiriad yr Iaith',langDirLTRLabel:"Chwith i'r Dde (LTR)",langDirRTLLabel:"Dde i'r Chwith (RTL)",edit:'Golygu Div',remove:'Tynnu Div'},iframe:{title:'Priodweddau IFrame',toolbar:'IFrame',noUrl:'Rhowch fath URL yr iframe',scrolling:'Galluogi bariau sgrolio',border:'Dangos ymyl y ffrâm'},font:{label:'Ffont',voiceLabel:'Ffont',panelTitle:"Enw'r Ffont"},fontSize:{label:'Maint',voiceLabel:'Maint y Ffont',panelTitle:'Maint y Ffont'},colorButton:{textColorTitle:'Lliw Testun',bgColorTitle:'Lliw Cefndir',panelTitle:'Lliwiau',auto:'Awtomatig',more:'Mwy o Liwiau...'},colors:{'000':'Du',800000:'Marwn','8B4513':'Brown Cyfrwy','2F4F4F':'Llechen Tywyll','008080':'Corhwyad','000080':'Nefi','4B0082':'Indigo',696969:'Llwyd Pwl',B22222:'Bric Tân',A52A2A:'Brown',DAA520:'Rhoden Aur','006400':'Gwyrdd Tywyll','40E0D0':'Gwyrddlas','0000CD':'Glas Canolig',800080:'Porffor',808080:'Llwyd',F00:'Coch',FF8C00:'Oren Tywyll',FFD700:'Aur','008000':'Gwyrdd','0FF':'Cyan','00F':'Glas',EE82EE:'Fioled',A9A9A9:'Llwyd Tywyll',FFA07A:'Samwn Golau',FFA500:'Oren',FFFF00:'Melyn','00FF00':'Leim',AFEEEE:'Gwyrddlas Golau',ADD8E6:'Glas Golau',DDA0DD:'Eirinen',D3D3D3:'Llwyd Golau',FFF0F5:'Gwrid Lafant',FAEBD7:'Gwyn Hynafol',FFFFE0:'Melyn Golau',F0FFF0:'Melwn Gwyrdd Golau',F0FFFF:'Aswr',F0F8FF:'Glas Alys',E6E6FA:'Lafant',FFF:'Gwyn'},scayt:{title:"Gwirio'r Sillafu Wrth Deipio",opera_title:'Heb ei gynnal gan Opera',enable:'Galluogi SCAYT',disable:'Analluogi SCAYT',about:'Ynghylch SCAYT',toggle:'Togl SCAYT',options:'Opsiynau',langs:'Ieithoedd',moreSuggestions:'Awgrymiadau pellach',ignore:'Anwybyddu',ignoreAll:'Anwybyddu pob',addWord:'Ychwanegu Gair',emptyDic:"Ni ddylai enw'r geiriadur fod yn wag.",optionsTab:'Opsiynau',allCaps:'Anwybyddu Geiriau Nodau Uwch i Gyd',ignoreDomainNames:'Anwybyddu Enwau Parth',mixedCase:'Anwybyddu Geiriau â Chymysgedd Nodau Uwch ac Is',mixedWithDigits:'Anwybyddu Geiriau â Rhifau',languagesTab:'Ieithoedd',dictionariesTab:'Geiriaduron',dic_field_name:"Enw'r geiriadur",dic_create:'Creu',dic_restore:'Adfer',dic_delete:'Dileu',dic_rename:'Ailenwi',dic_info:"Ar y cychwyn, caiff y Geiriadur ei storio mewn Cwci. Er, mae terfyn ar faint cwcis. Pan fydd Gweiriadur Defnyddiwr yn tyfu tu hwnt i gyfyngiadau maint Cwci, caiff y geiriadur ei storio ar ein gweinydd ni. er mwyn storio eich geiriadur poersonol chi ar ein gweinydd, bydd angen i chi osod enw ar gyfer y geiriadur. Os oes geiriadur 'da chi ar ein gweinydd yn barod, teipiwch ei enw a chliciwch y botwm Adfer.",aboutTab:'Ynghylch'},about:{title:'Ynghylch CKEditor',dlgTitle:'Ynghylch CKEditor',help:'Gwirio $1 am gymorth.',userGuide:'Canllawiau Defnyddiwr CKEditor',moreInfo:"Am wybodaeth ynghylch trwyddedau, ewch i'n gwefan:",copy:'Hawlfraint © $1. Cedwir pob hawl.'},maximize:'Mwyhau',minimize:'Lleihau',fakeobjects:{anchor:'Angor',flash:'Animeiddiant Flash',iframe:'IFrame',hiddenfield:'Maes Cudd',unknown:'Gwrthrych Anhysbys'},resize:'Llusgo i ailfeintio',colordialog:{title:'Dewis lliw',options:'Opsiynau Lliw',highlight:'Uwcholeuo',selected:'Dewiswyd',clear:'Clirio'},toolbarCollapse:"Cyfangu'r Bar Offer",toolbarExpand:"Ehangu'r Bar Offer",toolbarGroups:{document:'Dogfen',clipboard:'Clipfwrdd/Dadwneud',editing:'Golygu',forms:'Ffurflenni',basicstyles:'Arddulliau Sylfaenol',paragraph:'Paragraff',links:'Dolenni',insert:'Mewnosod',styles:'Arddulliau',colors:'Lliwiau',tools:'Offer'},bidi:{ltr:"Cyfeiriad testun o'r chwith i'r dde",rtl:"Cyfeiriad testun o'r dde i'r chwith"},docprops:{label:'Priodweddau Dogfen',title:'Priodweddau Dogfen',design:'Cynllunio',meta:'Tagiau Meta',chooseColor:'Dewis',other:'Arall...',docTitle:'Teitl y Dudalen',charset:'Amgodio Set Nodau',charsetOther:'Amgodio Set Nodau Arall',charsetASCII:'ASCII',charsetCE:'Ewropeaidd Canol',charsetCT:'Tsieinëeg Traddodiadol (Big5)',charsetCR:'Syrilig',charsetGR:'Groeg',charsetJP:'Siapanëeg',charsetKR:'Corëeg',charsetTR:'Tyrceg',charsetUN:'Unicode (UTF-8)',charsetWE:'Ewropeaidd Gorllewinol',docType:'Pennawd Math y Ddogfen',docTypeOther:'Pennawd Math y Ddogfen Arall',xhtmlDec:'Cynnwys Datganiadau XHTML',bgColor:'Lliw Cefndir',bgImage:'URL Delwedd Cefndir',bgFixed:'Cefndir Sefydlog (Ddim yn Sgrolio)',txtColor:'Lliw y Testun',margin:'Ffin y Dudalen',marginTop:'Brig',marginLeft:'Chwith',marginRight:'Dde',marginBottom:'Gwaelod',metaKeywords:'Allweddeiriau Indecsio Dogfen (gwahanu gyda choma)',metaDescription:'Disgrifiad y Ddogfen',metaAuthor:'Awdur',metaCopyright:'Hawlfraint',previewHtml:'<p>Dyma ychydig o <strong>destun sampl</strong>. Rydych chi\'n defnyddio <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/da.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/da.js
new file mode 100755
index 0000000..819da50
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/da.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.da={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editors værktøjslinjer',editor:'Rich Text Editor',source:'Kilde',newPage:'Ny side',save:'Gem',preview:'Vis eksempel',cut:'Klip',copy:'Kopiér',paste:'Indsæt',print:'Udskriv',underline:'Understreget',bold:'Fed',italic:'Kursiv',selectAll:'Vælg alt',removeFormat:'Fjern formatering',strike:'Gennemstreget',subscript:'Sænket skrift',superscript:'Hævet skrift',horizontalrule:'Indsæt vandret streg',pagebreak:'Indsæt sideskift',pagebreakAlt:'Sideskift',unlink:'Fjern hyperlink',undo:'Fortryd',redo:'Annullér fortryd',common:{browseServer:'Gennemse...',url:'URL',protocol:'Protokol',upload:'Upload',uploadSubmit:'Upload',image:'Indsæt billede',flash:'Indsæt Flash',form:'Indsæt formular',checkbox:'Indsæt afkrydsningsfelt',radio:'Indsæt alternativknap',textField:'Indsæt tekstfelt',textarea:'Indsæt tekstboks',hiddenField:'Indsæt skjult felt',button:'Indsæt knap',select:'Indsæt liste',imageButton:'Indsæt billedknap',notSet:'<intet valgt>',id:'Id',name:'Navn',langDir:'Tekstretning',langDirLtr:'Fra venstre mod højre (LTR)',langDirRtl:'Fra højre mod venstre (RTL)',langCode:'Sprogkode',longDescr:'Udvidet beskrivelse',cssClass:'Typografiark (CSS)',advisoryTitle:'Titel',cssStyle:'Typografi (CSS)',ok:'OK',cancel:'Annullér',close:'Luk',preview:'Forhåndsvisning',generalTab:'Generelt',advancedTab:'Avanceret',validateNumberFailed:'Værdien er ikke et tal.',confirmNewPage:'Alt indhold, der ikke er blevet gemt, vil gå tabt. Er du sikker på, at du vil indlæse en ny side?',confirmCancel:'Nogle af indstillingerne er blevet ændret. Er du sikker på, at du vil lukke vinduet?',options:'Vis muligheder',target:'Mål',targetNew:'Nyt vindue (_blank)',targetTop:'Øverste vindue (_top)',targetSelf:'Samme vindue (_self)',targetParent:'Samme vindue (_parent)',langDirLTR:'Venstre til højre (LTR)',langDirRTL:'Højre til venstre (RTL)',styles:'Style',cssClasses:'Stylesheetklasser',width:'Bredde',height:'Højde',align:'Justering',alignLeft:'Venstre',alignRight:'Højre',alignCenter:'Centreret',alignTop:'Øverst',alignMiddle:'Centreret',alignBottom:'Nederst',invalidHeight:'Højde skal være et tal.',invalidWidth:'Bredde skal være et tal.',invalidCssLength:'Værdien specificeret for "%1" feltet skal være et positivt nummer med eller uden en CSS måleenhed (px, %, in, cm, mm, em, ex, pt, eller pc).',invalidHtmlLength:'Værdien specificeret for "%1" feltet skal være et positivt nummer med eller uden en CSS måleenhed (px eller %).',invalidInlineStyle:'Værdien specificeret for inline style skal indeholde en eller flere elementer med et format som "name:value", separeret af semikoloner',cssLengthTooltip:'Indsæt en numerisk værdi i pixel eller nummer med en gyldig CSS værdi (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, ikke tilgængelig</span>'},contextmenu:{options:'Muligheder for hjælpemenu'},specialChar:{toolbar:'Indsæt symbol',title:'Vælg symbol',options:'Muligheder for specialkarakterer'},link:{toolbar:'Indsæt/redigér hyperlink',other:'<anden>',menu:'Redigér hyperlink',title:'Egenskaber for hyperlink',info:'Generelt',target:'Mål',upload:'Upload',advanced:'Avanceret',type:'Type',toUrl:'URL',toAnchor:'Bogmærke på denne side',toEmail:'E-mail',targetFrame:'<ramme>',targetPopup:'<popup vindue>',targetFrameName:'Destinationsvinduets navn',targetPopupName:'Popupvinduets navn',popupFeatures:'Egenskaber for popup',popupResizable:'Justérbar',popupStatusBar:'Statuslinje',popupLocationBar:'Adresselinje',popupToolbar:'Værktøjslinje',popupMenuBar:'Menulinje',popupFullScreen:'Fuld skærm (IE)',popupScrollBars:'Scrollbar',popupDependent:'Koblet/dependent (Netscape)',popupLeft:'Position fra venstre',popupTop:'Position fra toppen',id:'Id',langDir:'Tekstretning',langDirLTR:'Fra venstre mod højre (LTR)',langDirRTL:'Fra højre mod venstre (RTL)',acccessKey:'Genvejstast',name:'Navn',langCode:'Tekstretning',tabIndex:'Tabulatorindeks',advisoryTitle:'Titel',advisoryContentType:'Indholdstype',cssClasses:'Typografiark',charset:'Tegnsæt',styles:'Typografi',rel:'Relation',selectAnchor:'Vælg et anker',anchorName:'Efter ankernavn',anchorId:'Efter element-Id',emailAddress:'E-mailadresse',emailSubject:'Emne',emailBody:'Besked',noAnchors:'(Ingen bogmærker i dokumentet)',noUrl:'Indtast hyperlink-URL!',noEmail:'Indtast e-mailadresse!'},anchor:{toolbar:'Indsæt/redigér bogmærke',menu:'Egenskaber for bogmærke',title:'Egenskaber for bogmærke',name:'Bogmærkenavn',errorName:'Indtast bogmærkenavn',remove:'Fjern bogmærke'},list:{numberedTitle:'Egenskaber for nummereret liste',bulletedTitle:'Værdier for cirkelpunktopstilling',type:'Type',start:'Start',validateStartNumber:'Den nummererede liste skal starte med et rundt nummer',circle:'Cirkel',disc:'Værdier for diskpunktopstilling',square:'Firkant',none:'Ingen',notset:'<ikke defineret>',armenian:'Armensk nummering',georgian:'Georgiansk nummering (an, ban, gan, etc.)',lowerRoman:'Små romerske (i, ii, iii, iv, v, etc.)',upperRoman:'Store romerske (I, II, III, IV, V, etc.)',lowerAlpha:'Små alfabet (a, b, c, d, e, etc.)',upperAlpha:'Store alfabet (A, B, C, D, E, etc.)',lowerGreek:'Små græsk (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, osv.)',decimalLeadingZero:'Decimaler med 0 først (01, 02, 03, etc.)'},findAndReplace:{title:'Søg og erstat',find:'Søg',replace:'Erstat',findWhat:'Søg efter:',replaceWith:'Erstat med:',notFoundMsg:'Søgeteksten blev ikke fundet',findOptions:'Find muligheder',matchCase:'Forskel på store og små bogstaver',matchWord:'Kun hele ord',matchCyclic:'Match cyklisk',replaceAll:'Erstat alle',replaceSuccessMsg:'%1 forekomst(er) erstattet.'},table:{toolbar:'Tabel',title:'Egenskaber for tabel',menu:'Egenskaber for tabel',deleteTable:'Slet tabel',rows:'Rækker',columns:'Kolonner',border:'Rammebredde',widthPx:'pixels',widthPc:'procent',widthUnit:'Bredde på enhed',cellSpace:'Celleafstand',cellPad:'Cellemargen',caption:'Titel',summary:'Resumé',headers:'Hoved',headersNone:'Ingen',headersColumn:'Første kolonne',headersRow:'Første række',headersBoth:'Begge',invalidRows:'Antallet af rækker skal være større end 0.',invalidCols:'Antallet af kolonner skal være større end 0.',invalidBorder:'Rammetykkelse skal være et tal.',invalidWidth:'Tabelbredde skal være et tal.',invalidHeight:'Tabelhøjde skal være et tal.',invalidCellSpacing:'Celleafstand skal være et tal.',invalidCellPadding:'Cellemargen skal være et tal.',cell:{menu:'Celle',insertBefore:'Indsæt celle før',insertAfter:'Indsæt celle efter',deleteCell:'Slet celle',merge:'Flet celler',mergeRight:'Flet til højre',mergeDown:'Flet nedad',splitHorizontal:'Del celle vandret',splitVertical:'Del celle lodret',title:'Celleegenskaber',cellType:'Celletype',rowSpan:'Række span (rows span)',colSpan:'Kolonne span (columns span)',wordWrap:'Tekstombrydning',hAlign:'Vandret justering',vAlign:'Lodret justering',alignBaseline:'Grundlinje',bgColor:'Baggrundsfarve',borderColor:'Rammefarve',data:'Data',header:'Hoved',yes:'Ja',no:'Nej',invalidWidth:'Cellebredde skal være et tal.',invalidHeight:'Cellehøjde skal være et tal.',invalidRowSpan:'Række span skal være et heltal.',invalidColSpan:'Kolonne span skal være et heltal.',chooseColor:'Vælg'},row:{menu:'Række',insertBefore:'Indsæt række før',insertAfter:'Indsæt række efter',deleteRow:'Slet række'},column:{menu:'Kolonne',insertBefore:'Indsæt kolonne før',insertAfter:'Indsæt kolonne efter',deleteColumn:'Slet kolonne'}},button:{title:'Egenskaber for knap',text:'Tekst',type:'Type',typeBtn:'Knap',typeSbm:'Send',typeRst:'Nulstil'},checkboxAndRadio:{checkboxTitle:'Egenskaber for afkrydsningsfelt',radioTitle:'Egenskaber for alternativknap',value:'Værdi',selected:'Valgt'},form:{title:'Egenskaber for formular',menu:'Egenskaber for formular',action:'Handling',method:'Metode',encoding:'Kodning (encoding)'},select:{title:'Egenskaber for liste',selectInfo:'Generelt',opAvail:'Valgmuligheder',value:'Værdi',size:'Størrelse',lines:'Linjer',chkMulti:'Tillad flere valg',opText:'Tekst',opValue:'Værdi',btnAdd:'Tilføj',btnModify:'Redigér',btnUp:'Op',btnDown:'Ned',btnSetValue:'Sæt som valgt',btnDelete:'Slet'},textarea:{title:'Egenskaber for tekstboks',cols:'Kolonner',rows:'Rækker'},textfield:{title:'Egenskaber for tekstfelt',name:'Navn',value:'Værdi',charWidth:'Bredde (tegn)',maxChars:'Max. antal tegn',type:'Type',typeText:'Tekst',typePass:'Adgangskode'},hidden:{title:'Egenskaber for skjult felt',name:'Navn',value:'Værdi'},image:{title:'Egenskaber for billede',titleButton:'Egenskaber for billedknap',menu:'Egenskaber for billede',infoTab:'Generelt',btnUpload:'Upload fil til serveren',upload:'Upload',alt:'Alternativ tekst',lockRatio:'Lås størrelsesforhold',resetSize:'Nulstil størrelse',border:'Ramme',hSpace:'Vandret margen',vSpace:'Lodret margen',alertUrl:'Indtast stien til billedet',linkTab:'Hyperlink',button2Img:'Vil du lave billedknappen om til et almindeligt billede?',img2Button:'Vil du lave billedet om til en billedknap?',urlMissing:'Kilde på billed-URL mangler',validateBorder:'Kant skal være et helt nummer.',validateHSpace:'HSpace skal være et helt nummer.',validateVSpace:'VSpace skal være et helt nummer.'},flash:{properties:'Egenskaber for Flash',propertiesTab:'Egenskaber',title:'Egenskaber for Flash',chkPlay:'Automatisk afspilning',chkLoop:'Gentagelse',chkMenu:'Vis Flash-menu',chkFull:'Tillad fuldskærm',scale:'Skalér',scaleAll:'Vis alt',scaleNoBorder:'Ingen ramme',scaleFit:'Tilpas størrelse',access:'Scriptadgang',accessAlways:'Altid',accessSameDomain:'Samme domæne',accessNever:'Aldrig',alignAbsBottom:'Absolut nederst',alignAbsMiddle:'Absolut centreret',alignBaseline:'Grundlinje',alignTextTop:'Toppen af teksten',quality:'Kvalitet',qualityBest:'Bedste',qualityHigh:'Høj',qualityAutoHigh:'Auto høj',qualityMedium:'Medium',qualityAutoLow:'Auto lav',qualityLow:'Lav',windowModeWindow:'Vindue',windowModeOpaque:'Gennemsigtig (opaque)',windowModeTransparent:'Transparent',windowMode:'Vinduestilstand',flashvars:'Variabler for Flash',bgcolor:'Baggrundsfarve',hSpace:'Vandret margen',vSpace:'Lodret margen',validateSrc:'Indtast hyperlink URL!',validateHSpace:'Vandret margen skal være et tal.',validateVSpace:'Lodret margen skal være et tal.'},spellCheck:{toolbar:'Stavekontrol',title:'Stavekontrol',notAvailable:'Stavekontrol er desværre ikke tilgængelig.',errorLoading:'Fejl ved indlæsning af host: %s.',notInDic:'Ikke i ordbogen',changeTo:'Forslag',btnIgnore:'Ignorér',btnIgnoreAll:'Ignorér alle',btnReplace:'Erstat',btnReplaceAll:'Erstat alle',btnUndo:'Tilbage',noSuggestions:'(ingen forslag)',progress:'Stavekontrollen arbejder...',noMispell:'Stavekontrol færdig: Ingen fejl fundet',noChanges:'Stavekontrol færdig: Ingen ord ændret',oneChange:'Stavekontrol færdig: Et ord ændret',manyChanges:'Stavekontrol færdig: %1 ord ændret',ieSpellDownload:'Stavekontrol ikke installeret. Vil du installere den nu?'},smiley:{toolbar:'Smiley',title:'Vælg smiley',options:'Smileymuligheder'},elementsPath:{eleLabel:'Sti på element',eleTitle:'%1 element'},numberedlist:'Talopstilling',bulletedlist:'Punktopstilling',indent:'Forøg indrykning',outdent:'Formindsk indrykning',justify:{left:'Venstrestillet',center:'Centreret',right:'Højrestillet',block:'Lige margener'},blockquote:'Blokcitat',clipboard:{title:'Indsæt',cutError:'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).',copyError:'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).',pasteMsg:'Indsæt i feltet herunder (<STRONG>Ctrl/Cmd+V</STRONG>) og klik på <STRONG>OK</STRONG>.',securityMsg:'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Du skal indsætte udklipsholderens indhold i dette vindue igen.',pasteArea:'Indsæt område'},pastefromword:{confirmCleanup:'Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes?',toolbar:'Indsæt fra Word',title:'Indsæt fra Word',error:'Det var ikke muligt at fjerne formatteringen på den indsatte tekst grundet en intern fejl'},pasteText:{button:'Indsæt som ikke-formateret tekst',title:'Indsæt som ikke-formateret tekst'},templates:{button:'Skabeloner',title:'Indholdsskabeloner',options:'Skabelon muligheder',insertOption:'Erstat det faktiske indhold',selectPromptMsg:'Vælg den skabelon, som skal åbnes i editoren (nuværende indhold vil blive overskrevet):',emptyListMsg:'(Der er ikke defineret nogen skabelon)'},showBlocks:'Vis afsnitsmærker',stylesCombo:{label:'Typografi',panelTitle:'Formattering på stylesheet',panelTitle1:'Block typografi',panelTitle2:'Inline typografi',panelTitle3:'Object typografi'},format:{label:'Formatering',panelTitle:'Formatering',tag_p:'Normal',tag_pre:'Formateret',tag_address:'Adresse',tag_h1:'Overskrift 1',tag_h2:'Overskrift 2',tag_h3:'Overskrift 3',tag_h4:'Overskrift 4',tag_h5:'Overskrift 5',tag_h6:'Overskrift 6',tag_div:'Normal (DIV)'},div:{title:'Opret Div Container',toolbar:'Opret Div Container',cssClassInputLabel:'Typografiark',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Sprogkode',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Vejledende titel',langDirLabel:'Sprogretning',langDirLTRLabel:'Venstre til højre (LTR)',langDirRTLLabel:'Højre til venstre (RTL)',edit:'Rediger Div',remove:'Slet Div'},iframe:{title:'Iframe egenskaber',toolbar:'Iframe',noUrl:'Venligst indsæt URL på iframen',scrolling:'Aktiver scrollbars',border:'Vis kant på rammen'},font:{label:'Skrifttype',voiceLabel:'Skrifttype',panelTitle:'Skrifttype'},fontSize:{label:'Skriftstørrelse',voiceLabel:'Skriftstørrelse',panelTitle:'Skriftstørrelse'},colorButton:{textColorTitle:'Tekstfarve',bgColorTitle:'Baggrundsfarve',panelTitle:'Farver',auto:'Automatisk',more:'Flere farver...'},colors:{'000':'Sort',800000:'Mørkerød','8B4513':'Mørk orange','2F4F4F':'Dark Slate Grå','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Mørkegrå',B22222:'Scarlet / Rød',A52A2A:'Brun',DAA520:'Guld','006400':'Mørkegrøn','40E0D0':'Tyrkis','0000CD':'Mellemblå',800080:'Lilla',808080:'Grå',F00:'Rød',FF8C00:'Mørk orange',FFD700:'Guld','008000':'Grøn','0FF':'Cyan','00F':'Blå',EE82EE:'Violet',A9A9A9:'Matgrå',FFA07A:'Laksefarve',FFA500:'Orange',FFFF00:'Gul','00FF00':'Lime',AFEEEE:'Mat tyrkis',ADD8E6:'Lyseblå',DDA0DD:'Plum',D3D3D3:'Lysegrå',FFF0F5:'Lavender Blush',FAEBD7:'Antikhvid',FFFFE0:'Lysegul',F0FFF0:'Gul / Beige',F0FFFF:'Himmeblå',F0F8FF:'Alice blue',E6E6FA:'Lavendel',FFF:'Hvid'},scayt:{title:'Stavekontrol mens du skriver',opera_title:'Ikke supporteret af Opera',enable:'Aktivér SCAYT',disable:'Deaktivér SCAYT',about:'Om SCAYT',toggle:'Skift/toggle SCAYT',options:'Indstillinger',langs:'Sprog',moreSuggestions:'Flere forslag',ignore:'Ignorér',ignoreAll:'Ignorér alle',addWord:'Tilføj ord',emptyDic:'Ordbogsnavn må ikke være tom.',optionsTab:'Indstillinger',allCaps:'Ignorer alle store bogstaver',ignoreDomainNames:'Ignorér domænenavne',mixedCase:'Ignorer ord med store og små bogstaver',mixedWithDigits:'Ignorér ord med numre',languagesTab:'Sprog',dictionariesTab:'Ordbøger',dic_field_name:'Navn på ordbog',dic_create:'Opret',dic_restore:'Gendan',dic_delete:'Slet',dic_rename:'Omdøb',dic_info:'Til start er brugerordbogen gemt i en Cookie. Dog har Cookies en begrænsning på størrelse. Når ordbogen når en bestemt størrelse kan den blive gemt på vores server. For at gemme din personlige ordbog på vores server skal du angive et navn for denne. Såfremt du allerede har gemt en ordbog, skriv navnet på denne og klik på Gendan knappen.',aboutTab:'Om'},about:{title:'Om CKEditor',dlgTitle:'Om CKEditor',help:'Se $1 for at få hjælp.',userGuide:'CKEditor-brugermanual',moreInfo:'For informationer omkring licens, se venligst vores hjemmeside (på engelsk):',copy:'Copyright © $1. Alle rettigheder forbeholdes.'},maximize:'Maksimér',minimize:'Minimér',fakeobjects:{anchor:'Anker',flash:'Flashanimation',iframe:'Iframe',hiddenfield:'Skjult felt',unknown:'Ukendt objekt'},resize:'Træk for at skalere',colordialog:{title:'Vælg farve',options:'Farvemuligheder',highlight:'Markér',selected:'Valgt farve',clear:'Nulstil'},toolbarCollapse:'Sammenklap værktøjslinje',toolbarExpand:'Udvid værktøjslinje',toolbarGroups:{document:'Dokument',clipboard:'Udklipsholder/Fortryd',editing:'Redigering',forms:'Formularer',basicstyles:'Basis styles',paragraph:'Paragraf',links:'Links',insert:'Indsæt',styles:'Typografier',colors:'Farver',tools:'Værktøjer'},bidi:{ltr:'Tekstretning fra venstre til højre',rtl:'Tekstretning fra højre til venstre'},docprops:{label:'Egenskaber for dokument',title:'Egenskaber for dokument',design:'Design',meta:'Metatags',chooseColor:'Vælg',other:'<anden>',docTitle:'Sidetitel',charset:'Tegnsætskode',charsetOther:'Anden tegnsætskode',charsetASCII:'ASCII',charsetCE:'Centraleuropæisk',charsetCT:'Traditionel kinesisk (Big5)',charsetCR:'Kyrillisk',charsetGR:'Græsk',charsetJP:'Japansk',charsetKR:'Koreansk',charsetTR:'Tyrkisk',charsetUN:'Unicode (UTF-8)',charsetWE:'Vesteuropæisk',docType:'Dokumenttype kategori',docTypeOther:'Anden dokumenttype kategori',xhtmlDec:'Inkludere XHTML deklartion',bgColor:'Baggrundsfarve',bgImage:'Baggrundsbillede URL',bgFixed:'Fastlåst baggrund',txtColor:'Tekstfarve',margin:'Sidemargen',marginTop:'Øverst',marginLeft:'Venstre',marginRight:'Højre',marginBottom:'Nederst',metaKeywords:'Dokument index nøgleord (kommasepareret)',metaDescription:'Dokumentbeskrivelse',metaAuthor:'Forfatter',metaCopyright:'Copyright',previewHtml:'<p>Dette er et <strong>eksempel på noget tekst</strong>. Du benytter <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/de.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/de.js
new file mode 100755
index 0000000..5ec37fd
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/de.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.de={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor Symbolleisten',editor:'WYSIWYG-Editor',source:'Quellcode',newPage:'Neue Seite',save:'Speichern',preview:'Vorschau',cut:'Ausschneiden',copy:'Kopieren',paste:'Einfügen',print:'Drucken',underline:'Unterstrichen',bold:'Fett',italic:'Kursiv',selectAll:'Alles auswählen',removeFormat:'Formatierungen entfernen',strike:'Durchgestrichen',subscript:'Tiefgestellt',superscript:'Hochgestellt',horizontalrule:'Horizontale Linie einfügen',pagebreak:'Seitenumbruch einfügen',pagebreakAlt:'Seitenumbruch einfügen',unlink:'Link entfernen',undo:'Rückgängig',redo:'Wiederherstellen',common:{browseServer:'Server durchsuchen',url:'URL',protocol:'Protokoll',upload:'Hochladen',uploadSubmit:'Zum Server senden',image:'Bild',flash:'Flash',form:'Formular',checkbox:'Checkbox',radio:'Radiobutton',textField:'Textfeld einzeilig',textarea:'Textfeld mehrzeilig',hiddenField:'Verstecktes Feld',button:'Klickbutton',select:'Auswahlfeld',imageButton:'Bildbutton',notSet:'<nichts>',id:'ID',name:'Name',langDir:'Schreibrichtung',langDirLtr:'Links nach Rechts (LTR)',langDirRtl:'Rechts nach Links (RTL)',langCode:'Sprachenkürzel',longDescr:'Langform URL',cssClass:'Stylesheet Klasse',advisoryTitle:'Titel Beschreibung',cssStyle:'Style',ok:'OK',cancel:'Abbrechen',close:'Schließen',preview:'Vorschau',generalTab:'Allgemein',advancedTab:'Erweitert',validateNumberFailed:'Dieser Wert ist keine Nummer.',confirmNewPage:'Alle nicht gespeicherten Änderungen gehen verlohren. Sind Sie sicher die neue Seite zu laden?',confirmCancel:'Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?',options:'Optionen',target:'Zielseite',targetNew:'Neues Fenster (_blank)',targetTop:'Oberstes Fenster (_top)',targetSelf:'Gleiches Fenster (_self)',targetParent:'Oberes Fenster (_parent)',langDirLTR:'Links nach Rechts (LNR)',langDirRTL:'Rechts nach Links (RNL)',styles:'Style',cssClasses:'Stylesheet Klasse',width:'Breite',height:'Höhe',align:'Ausrichtung',alignLeft:'Links',alignRight:'Rechts',alignCenter:'Zentriert',alignTop:'Oben',alignMiddle:'Mitte',alignBottom:'Unten',invalidHeight:'Höhe muss eine Zahl sein.',invalidWidth:'Breite muss eine Zahl sein.',invalidCssLength:'Wert spezifiziert für "%1" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).',invalidHtmlLength:'Wert spezifiziert für "%1" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte HTML Messeinheit (px oder %).',invalidInlineStyle:'Wert spezifiziert für inline Stilart muss enthalten ein oder mehr Tupels mit dem Format "Name : Wert" getrennt mit Semikolons.',cssLengthTooltip:'Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).',unavailable:'%1<span class="cke_accessibility">, nicht verfügbar</span>'},contextmenu:{options:'Kontextmenü Optionen'},specialChar:{toolbar:'Sonderzeichen einfügen/editieren',title:'Sonderzeichen auswählen',options:'Sonderzeichen Optionen'},link:{toolbar:'Link einfügen/editieren',other:'<andere>',menu:'Link editieren',title:'Link',info:'Link-Info',target:'Zielseite',upload:'Hochladen',advanced:'Erweitert',type:'Link-Typ',toUrl:'URL',toAnchor:'Anker in dieser Seite',toEmail:'E-Mail',targetFrame:'<Frame>',targetPopup:'<Pop-up Fenster>',targetFrameName:'Ziel-Fenster-Name',targetPopupName:'Pop-up Fenster-Name',popupFeatures:'Pop-up Fenster-Eigenschaften',popupResizable:'Größe änderbar',popupStatusBar:'Statusleiste',popupLocationBar:'Adress-Leiste',popupToolbar:'Symbolleiste',popupMenuBar:'Menü-Leiste',popupFullScreen:'Vollbild (IE)',popupScrollBars:'Rollbalken',popupDependent:'Abhängig (Netscape)',popupLeft:'Linke Position',popupTop:'Obere Position',id:'Id',langDir:'Schreibrichtung',langDirLTR:'Links nach Rechts (LTR)',langDirRTL:'Rechts nach Links (RTL)',acccessKey:'Zugriffstaste',name:'Name',langCode:'Sprachenkürzel',tabIndex:'Tab-Index',advisoryTitle:'Titel Beschreibung',advisoryContentType:'Inhaltstyp',cssClasses:'Stylesheet Klasse',charset:'Ziel-Zeichensatz',styles:'Style',rel:'Beziehung',selectAnchor:'Anker auswählen',anchorName:'nach Anker Name',anchorId:'nach Element Id',emailAddress:'E-Mail Adresse',emailSubject:'Betreffzeile',emailBody:'Nachrichtentext',noAnchors:'(keine Anker im Dokument vorhanden)',noUrl:'Bitte geben Sie die Link-URL an',noEmail:'Bitte geben Sie e-Mail Adresse an'},anchor:{toolbar:'Anker einfügen/editieren',menu:'Anker-Eigenschaften',title:'Anker-Eigenschaften',name:'Anker Name',errorName:'Bitte geben Sie den Namen des Ankers ein',remove:'Anker entfernen'},list:{numberedTitle:'Nummerierte Listen-Eigenschaften',bulletedTitle:'Listen-Eigenschaften',type:'Typ',start:'Start',validateStartNumber:'List Startnummer muss eine ganze Zahl sein.',circle:'Ring',disc:'Kreis',square:'Quadrat',none:'Keine',notset:'<nicht gesetzt>',armenian:'Armenisch Nummerierung',georgian:'Georgisch Nummerierung (an, ban, gan, etc.)',lowerRoman:'Klein römisch (i, ii, iii, iv, v, etc.)',upperRoman:'Groß römisch (I, II, III, IV, V, etc.)',lowerAlpha:'Klein alpha (a, b, c, d, e, etc.)',upperAlpha:'Groß alpha (A, B, C, D, E, etc.)',lowerGreek:'Klein griechisch (alpha, beta, gamma, etc.)',decimal:'Dezimal (1, 2, 3, etc.)',decimalLeadingZero:'Dezimal mit führende Null (01, 02, 03, etc.)'},findAndReplace:{title:'Suchen und Ersetzen',find:'Suchen',replace:'Ersetzen',findWhat:'Suche nach:',replaceWith:'Ersetze mit:',notFoundMsg:'Der gesuchte Text wurde nicht gefunden.',findOptions:'Suchoptionen',matchCase:'Groß-Kleinschreibung beachten',matchWord:'Nur ganze Worte suchen',matchCyclic:'Zyklische Suche',replaceAll:'Alle ersetzen',replaceSuccessMsg:'%1 vorkommen ersetzt.'},table:{toolbar:'Tabelle',title:'Tabellen-Eigenschaften',menu:'Tabellen-Eigenschaften',deleteTable:'Tabelle löschen',rows:'Zeile',columns:'Spalte',border:'Rahmen',widthPx:'Pixel',widthPc:'%',widthUnit:'Breite Einheit',cellSpace:'Zellenabstand außen',cellPad:'Zellenabstand innen',caption:'Überschrift',summary:'Inhaltsübersicht',headers:'Kopfzeile',headersNone:'Keine',headersColumn:'Erste Spalte',headersRow:'Erste Zeile',headersBoth:'Beide',invalidRows:'Die Anzahl der Zeilen muß größer als 0 sein.',invalidCols:'Die Anzahl der Spalten muß größer als 0 sein..',invalidBorder:'Die Rahmenbreite muß eine Zahl sein.',invalidWidth:'Die Tabellenbreite muss eine Zahl sein.',invalidHeight:'Die Tabellenbreite muß eine Zahl sein.',invalidCellSpacing:'Der Zellenabstand außen muß eine positive Zahl sein.',invalidCellPadding:'Der Zellenabstand innen muß eine positive Zahl sein.',cell:{menu:'Zelle',insertBefore:'Zelle davor einfügen',insertAfter:'Zelle danach einfügen',deleteCell:'Zelle löschen',merge:'Zellen verbinden',mergeRight:'Nach rechts verbinden',mergeDown:'Nach unten verbinden',splitHorizontal:'Zelle horizontal teilen',splitVertical:'Zelle vertikal teilen',title:'Zellen-Eigenschaften',cellType:'Zellart',rowSpan:'Anzahl Zeilen verbinden',colSpan:'Anzahl Spalten verbinden',wordWrap:'Zeilenumbruch',hAlign:'Horizontale Ausrichtung',vAlign:'Vertikale Ausrichtung',alignBaseline:'Grundlinie',bgColor:'Hintergrundfarbe',borderColor:'Rahmenfarbe',data:'Daten',header:'Überschrift',yes:'Ja',no:'Nein',invalidWidth:'Zellenbreite muß eine Zahl sein.',invalidHeight:'Zellenhöhe muß eine Zahl sein.',invalidRowSpan:'"Anzahl Zeilen verbinden" muss eine Ganzzahl sein.',invalidColSpan:'"Anzahl Spalten verbinden" muss eine Ganzzahl sein.',chooseColor:'Wählen'},row:{menu:'Zeile',insertBefore:'Zeile oberhalb einfügen',insertAfter:'Zeile unterhalb einfügen',deleteRow:'Zeile entfernen'},column:{menu:'Spalte',insertBefore:'Spalte links davor einfügen',insertAfter:'Spalte rechts danach einfügen',deleteColumn:'Spalte löschen'}},button:{title:'Button-Eigenschaften',text:'Text (Wert)',type:'Typ',typeBtn:'Button',typeSbm:'Absenden',typeRst:'Zurücksetzen'},checkboxAndRadio:{checkboxTitle:'Checkbox-Eigenschaften',radioTitle:'Optionsfeld-Eigenschaften',value:'Wert',selected:'ausgewählt'},form:{title:'Formular-Eigenschaften',menu:'Formular-Eigenschaften',action:'Action',method:'Method',encoding:'Zeichenkodierung'},select:{title:'Auswahlfeld-Eigenschaften',selectInfo:'Info',opAvail:'Mögliche Optionen',value:'Wert',size:'Größe',lines:'Linien',chkMulti:'Erlaube Mehrfachauswahl',opText:'Text',opValue:'Wert',btnAdd:'Hinzufügen',btnModify:'Ändern',btnUp:'Hoch',btnDown:'Runter',btnSetValue:'Setze als Standardwert',btnDelete:'Entfernen'},textarea:{title:'Textfeld (mehrzeilig) Eigenschaften',cols:'Spalten',rows:'Reihen'},textfield:{title:'Textfeld (einzeilig) Eigenschaften',name:'Name',value:'Wert',charWidth:'Zeichenbreite',maxChars:'Max. Zeichen',type:'Typ',typeText:'Text',typePass:'Passwort'},hidden:{title:'Verstecktes Feld-Eigenschaften',name:'Name',value:'Wert'},image:{title:'Bild-Eigenschaften',titleButton:'Bildbutton-Eigenschaften',menu:'Bild-Eigenschaften',infoTab:'Bild-Info',btnUpload:'Zum Server senden',upload:'Hochladen',alt:'Alternativer Text',lockRatio:'Größenverhältnis beibehalten',resetSize:'Größe zurücksetzen',border:'Rahmen',hSpace:'Horizontal-Abstand',vSpace:'Vertikal-Abstand',alertUrl:'Bitte geben Sie die Bild-URL an',linkTab:'Link',button2Img:'Möchten Sie den gewählten Bild-Button in ein einfaches Bild umwandeln?',img2Button:'Möchten Sie das gewählten Bild in einen Bild-Button umwandeln?',urlMissing:'Imagequelle URL fehlt.',validateBorder:'Rahmen muß eine ganze Zahl sein.',validateHSpace:'Horizontal-Abstand muß eine ganze Zahl sein.',validateVSpace:'Vertikal-Abstand muß eine ganze Zahl sein.'},flash:{properties:'Flash-Eigenschaften',propertiesTab:'Eigenschaften',title:'Flash-Eigenschaften',chkPlay:'Automatisch Abspielen',chkLoop:'Endlosschleife',chkMenu:'Flash-Menü aktivieren',chkFull:'Vollbildmodus erlauben',scale:'Skalierung',scaleAll:'Alles anzeigen',scaleNoBorder:'Ohne Rand',scaleFit:'Passgenau',access:'Skript Zugang',accessAlways:'Immer',accessSameDomain:'Gleiche Domain',accessNever:'Nie',alignAbsBottom:'Abs Unten',alignAbsMiddle:'Abs Mitte',alignBaseline:'Baseline',alignTextTop:'Text Oben',quality:'Qualität',qualityBest:'Beste',qualityHigh:'Hoch',qualityAutoHigh:'Auto Hoch',qualityMedium:'Medium',qualityAutoLow:'Auto Niedrig',qualityLow:'Niedrig',windowModeWindow:'Fenster',windowModeOpaque:'Deckend',windowModeTransparent:'Transparent',windowMode:'Fenster Modus',flashvars:'Variablen für Flash',bgcolor:'Hintergrundfarbe',hSpace:'Horizontal-Abstand',vSpace:'Vertikal-Abstand',validateSrc:'Bitte geben Sie die Link-URL an',validateHSpace:'HSpace muss eine Zahl sein.',validateVSpace:'VSpace muss eine Zahl sein.'},spellCheck:{toolbar:'Rechtschreibprüfung',title:'Rechtschreibprüfung',notAvailable:'Entschuldigung, aber dieser Dienst steht im Moment nicht zur Verfügung.',errorLoading:'Fehler beim laden des Dienstanbieters: %s.',notInDic:'Nicht im Wörterbuch',changeTo:'Ändern in',btnIgnore:'Ignorieren',btnIgnoreAll:'Alle Ignorieren',btnReplace:'Ersetzen',btnReplaceAll:'Alle Ersetzen',btnUndo:'Rückgängig',noSuggestions:' - keine Vorschläge - ',progress:'Rechtschreibprüfung läuft...',noMispell:'Rechtschreibprüfung abgeschlossen - keine Fehler gefunden',noChanges:'Rechtschreibprüfung abgeschlossen - keine Worte geändert',oneChange:'Rechtschreibprüfung abgeschlossen - ein Wort geändert',manyChanges:'Rechtschreibprüfung abgeschlossen - %1 Wörter geändert',ieSpellDownload:'Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?'},smiley:{toolbar:'Smiley',title:'Smiley auswählen',options:'Smiley Optionen'},elementsPath:{eleLabel:'Elements Pfad',eleTitle:'%1 Element'},numberedlist:'Nummerierte Liste',bulletedlist:'Liste',indent:'Einzug erhöhen',outdent:'Einzug verringern',justify:{left:'Linksbündig',center:'Zentriert',right:'Rechtsbündig',block:'Blocksatz'},blockquote:'Zitatblock',clipboard:{title:'Einfügen',cutError:'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).',copyError:'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).',pasteMsg:'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.',securityMsg:'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.',pasteArea:'Einfügebereich'},pastefromword:{confirmCleanup:'Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?',toolbar:'Aus MS-Word einfügen',title:'Aus MS-Word einfügen',error:'Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen'},pasteText:{button:'Als Text einfügen',title:'Als Text einfügen'},templates:{button:'Vorlagen',title:'Vorlagen',options:'Vorlagen Optionen',insertOption:'Aktuellen Inhalt ersetzen',selectPromptMsg:'Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):',emptyListMsg:'(keine Vorlagen definiert)'},showBlocks:'Blöcke anzeigen',stylesCombo:{label:'Stil',panelTitle:'Formatierungenstil',panelTitle1:'Block Stilart',panelTitle2:'Inline Stilart',panelTitle3:'Objekt Stilart'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatiert',tag_address:'Addresse',tag_h1:'Überschrift 1',tag_h2:'Überschrift 2',tag_h3:'Überschrift 3',tag_h4:'Überschrift 4',tag_h5:'Überschrift 5',tag_h6:'Überschrift 6',tag_div:'Normal (DIV)'},div:{title:'Div Container erzeugen',toolbar:'Div Container erzeugen',cssClassInputLabel:'Stylesheet Klasse',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:'Sprachenkürzel',inlineStyleInputLabel:'Inline Stil',advisoryTitleInputLabel:'Tooltip',langDirLabel:'Sprache Richtung',langDirLTRLabel:'Links nach Rechs (LTR)',langDirRTLLabel:'Rechs nach Links (RTL)',edit:'Div bearbeiten',remove:'Div entfernen'},iframe:{title:'IFrame-Eigenschaften',toolbar:'IFrame',noUrl:'Bitte geben Sie die IFrame-URL an',scrolling:'Rollbalken anzeigen',border:'Rahmen anzeigen'},font:{label:'Schriftart',voiceLabel:'Schriftart',panelTitle:'Schriftart'},fontSize:{label:'Größe',voiceLabel:'Schrifgröße',panelTitle:'Größe'},colorButton:{textColorTitle:'Textfarbe',bgColorTitle:'Hintergrundfarbe',panelTitle:'Farben',auto:'Automatisch',more:'Weitere Farben...'},colors:{'000':'Schwarz',800000:'Kastanienbraun','8B4513':'Braun','2F4F4F':'Dunkles Schiefergrau','008080':'Blaugrün','000080':'Navy','4B0082':'Indigo',696969:'Dunkelgrau',B22222:'Ziegelrot',A52A2A:'Braun',DAA520:'Goldgelb','006400':'Dunkelgrün','40E0D0':'Türkis','0000CD':'Medium Blau',800080:'Lila',808080:'Grau',F00:'Rot',FF8C00:'Dunkelorange',FFD700:'Gold','008000':'Grün','0FF':'Cyan','00F':'Blau',EE82EE:'Hellviolett',A9A9A9:'Dunkelgrau',FFA07A:'Helles Lachsrosa',FFA500:'Orange',FFFF00:'Gelb','00FF00':'Lime',AFEEEE:'Blaß-Türkis',ADD8E6:'Hellblau',DDA0DD:'Pflaumenblau',D3D3D3:'Hellgrau',FFF0F5:'Lavendel',FAEBD7:'Antik Weiß',FFFFE0:'Hellgelb',F0FFF0:'Honigtau',F0FFFF:'Azurblau',F0F8FF:'Alice Blau',E6E6FA:'Lavendel',FFF:'Weiß'},scayt:{title:'Rechtschreibprüfung während der Texteingabe (SCAYT)',opera_title:'Nicht von Opera unterstützt',enable:'SCAYT einschalten',disable:'SCAYT ausschalten',about:'Über SCAYT',toggle:'SCAYT umschalten',options:'Optionen',langs:'Sprachen',moreSuggestions:'Mehr Vorschläge',ignore:'Ignorieren',ignoreAll:'Alle ignorieren',addWord:'Wort hinzufügen',emptyDic:'Wörterbuchname sollte leer sein.',optionsTab:'Optionen',allCaps:'Groß geschriebenen Wörter ignorieren',ignoreDomainNames:'Domain-Namen ignorieren',mixedCase:'Wörter mit gemischte Setzkasten ignorieren',mixedWithDigits:'Wörter mit Zahlen ignorieren',languagesTab:'Sprachen',dictionariesTab:'Wörterbücher',dic_field_name:'Wörterbuchname',dic_create:'Erzeugen',dic_restore:'Wiederherstellen',dic_delete:'Löschen',dic_rename:'Umbenennen',dic_info:'Anfangs wird das Benutzerwörterbuch in einem Cookie gespeichert. Allerdings sind Cookies in der Größe begrenzt. Wenn das Benutzerwörterbuch bis zu einem Punkt wächst, wo es nicht mehr in einem Cookie gespeichert werden kann, wird das Benutzerwörterbuch auf dem Server gespeichert. Um Ihr persönliches Wörterbuch auf dem Server zu speichern, müssen Sie einen Namen für das Wörterbuch angeben. Falls Sie schon ein gespeicherte Wörterbuch haben, geben Sie bitte dessen Namen ein und klicken Sie auf die Schaltfläche Wiederherstellen.',aboutTab:'Über'},about:{title:'Über CKEditor',dlgTitle:'Über CKEditor',help:'Prüfe $1 für Hilfe.',userGuide:'CKEditor Benutzerhandbuch',moreInfo:'Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:',copy:'Copyright © $1. Alle Rechte vorbehalten.'},maximize:'Maximieren',minimize:'Minimieren',fakeobjects:{anchor:'Anker',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Verstecktes Feld',unknown:'Unbekanntes Objekt'},resize:'Zum Vergrößern ziehen',colordialog:{title:'Farbe wählen',options:'Farbeoptionen',highlight:'Hervorheben',selected:'Ausgewählte Farbe',clear:'Entfernen'},toolbarCollapse:'Symbolleiste einklappen',toolbarExpand:'Symbolleiste ausklappen',toolbarGroups:{document:'Dokument',clipboard:'Zwischenablage/Rückgängig',editing:'Editieren',forms:'Formularen',basicstyles:'Grundstile',paragraph:'Absatz',links:'Links',insert:'Einfügen',styles:'Stile',colors:'Farben',tools:'Werkzeuge'},bidi:{ltr:'Leserichtung von Links nach Rechts',rtl:'Leserichtung von Rechts nach Links'},docprops:{label:'Dokument-Eigenschaften',title:'Dokument-Eigenschaften',design:'Design',meta:'Metadaten',chooseColor:'Wählen',other:'<andere>',docTitle:'Seitentitel',charset:'Zeichenkodierung',charsetOther:'Andere Zeichenkodierung',charsetASCII:'ASCII',charsetCE:'Zentraleuropäisch',charsetCT:'traditionell Chinesisch (Big5)',charsetCR:'Kyrillisch',charsetGR:'Griechisch',charsetJP:'Japanisch',charsetKR:'Koreanisch',charsetTR:'Türkisch',charsetUN:'Unicode (UTF-8)',charsetWE:'Westeuropäisch',docType:'Dokumententyp',docTypeOther:'Anderer Dokumententyp',xhtmlDec:'Beziehe XHTML Deklarationen ein',bgColor:'Hintergrundfarbe',bgImage:'Hintergrundbild URL',bgFixed:'feststehender Hintergrund',txtColor:'Textfarbe',margin:'Seitenränder',marginTop:'Oben',marginLeft:'Links',marginRight:'Rechts',marginBottom:'Unten',metaKeywords:'Schlüsselwörter (durch Komma getrennt)',metaDescription:'Dokument-Beschreibung',metaAuthor:'Autor',metaCopyright:'Copyright',previewHtml:'<p>Das ist ein <strong>Beispieltext</strong>. Du schreibst in <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/el.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/el.js
new file mode 100755
index 0000000..d25d42a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/el.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.el={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Εργαλειοθήκες Επεξεργαστή',editor:'Επεξεργαστής Πλούσιου Κειμένου',source:'HTML κώδικας',newPage:'Νέα Σελίδα',save:'Αποθήκευση',preview:'Προεπισκόπιση',cut:'Αποκοπή',copy:'Αντιγραφή',paste:'Επικόλληση',print:'Εκτύπωση',underline:'Υπογράμμιση',bold:'Έντονα',italic:'Πλάγια',selectAll:'Επιλογή όλων',removeFormat:'Αφαίρεση Μορφοποίησης',strike:'Διαγράμμιση',subscript:'Δείκτης',superscript:'Εκθέτης',horizontalrule:'Εισαγωγή Οριζόντιας Γραμμής',pagebreak:'Εισαγωγή τέλους σελίδας',pagebreakAlt:'Αλλαγή Σελίδας',unlink:'Αφαίρεση Συνδέσμου (Link)',undo:'Αναίρεση',redo:'Επαναφορά',common:{browseServer:'Εξερεύνηση διακομιστή',url:'URL',protocol:'Πρωτόκολλο',upload:'Ανέβασμα',uploadSubmit:'Αποστολή στον Διακομιστή',image:'Εικόνα',flash:'Εισαγωγή Flash',form:'Φόρμα',checkbox:'Κουτί επιλογής',radio:'Κουμπί επιλογής',textField:'Πεδίο κειμένου',textarea:'Περιοχή κειμένου',hiddenField:'Κρυφό πεδίο',button:'Κουμπί',select:'Πεδίο επιλογής',imageButton:'Κουμπί εικόνας',notSet:'<δεν έχει ρυθμιστεί>',id:'Id',name:'Όνομα',langDir:'Κατεύθυνση κειμένου',langDirLtr:'Αριστερά προς Δεξιά (LTR)',langDirRtl:'Δεξιά προς Αριστερά (RTL)',langCode:'Κωδικός Γλώσσας',longDescr:'Αναλυτική περιγραφή URL',cssClass:'Stylesheet Classes',advisoryTitle:'Ενδεικτικός τίτλος',cssStyle:'Μορφή κειμένου',ok:'OK',cancel:'Ακύρωση',close:'Κλείσιμο',preview:'Προεπισκόπηση',generalTab:'Γενικά',advancedTab:'Για προχωρημένους',validateNumberFailed:'Αυτή η τιμή δεν είναι αριθμός.',confirmNewPage:'Οι όποιες αλλαγές στο περιεχόμενο θα χαθούν. Είσαστε σίγουροι ότι θέλετε να φορτώσετε μια νέα σελίδα;',confirmCancel:'Μερικές επιλογές έχουν αλλάξει. Είσαστε σίγουροι ότι θέλετε να κλείσετε το παράθυρο διαλόγου;',options:'Επιλογές',target:'Προορισμός',targetNew:'Νέο Παράθυρο (_blank)',targetTop:'Αρχική Περιοχή (_top)',targetSelf:'Ίδια Περιοχή (_self)',targetParent:'Γονεϊκό Παράθυρο (_parent)',langDirLTR:'Αριστερά προς Δεξιά (LTR)',langDirRTL:'Δεξιά προς Αριστερά (RTL)',styles:'Μορφή',cssClasses:'Stylesheet Classes',width:'Πλάτος',height:'Ύψος',align:'Στοίχιση',alignLeft:'Αριστερά',alignRight:'Δεξιά',alignCenter:'Κέντρο',alignTop:'Πάνω',alignMiddle:'Μέση',alignBottom:'Κάτω',invalidHeight:'Το ύψος πρέπει να είναι ένας αριθμός.',invalidWidth:'Το πλάτος πρέπει να είναι ένας αριθμός.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Επιλογές Αναδυόμενου Μενού'},specialChar:{toolbar:'Εισαγωγή Ειδικού Χαρακτήρα',title:'Επιλέξτε έναν Ειδικό Χαρακτήρα',options:'Επιλογές Ειδικών Χαρακτήρων'},link:{toolbar:'Σύνδεσμος',other:'<άλλο>',menu:'Επεξεργασία Συνδέσμου',title:'Σύνδεσμος',info:'Πληροφορίες Συνδέσμου',target:'Παράθυρο Προορισμού',upload:'Ανέβασμα',advanced:'Για προχωρημένους',type:'Τύπος Συνδέσμου',toUrl:'URL',toAnchor:'Άγκυρα σε αυτή τη σελίδα',toEmail:'E-Mail',targetFrame:'<πλαίσιο>',targetPopup:'<αναδυόμενο παράθυρο>',targetFrameName:'Όνομα Παραθύρου Προορισμού',targetPopupName:'Όνομα Αναδυόμενου Παραθύρου',popupFeatures:'Επιλογές Αναδυόμενου Παραθύρου',popupResizable:'Προσαρμοζόμενο Μέγεθος',popupStatusBar:'Γραμμή Κατάστασης',popupLocationBar:'Γραμμή Τοποθεσίας',popupToolbar:'Εργαλειοθήκη',popupMenuBar:'Γραμμή Επιλογών',popupFullScreen:'Πλήρης Οθόνη (IE)',popupScrollBars:'Μπάρες Κύλισης',popupDependent:'Εξαρτημένο (Netscape)',popupLeft:'Θέση Αριστερά',popupTop:'Θέση Πάνω',id:'Id',langDir:'Κατεύθυνση Κειμένου',langDirLTR:'Αριστερά προς Δεξιά (LTR)',langDirRTL:'Δεξιά προς Αριστερά (RTL)',acccessKey:'Συντόμευση',name:'Όνομα',langCode:'Κατεύθυνση Κειμένου',tabIndex:'Σειρά Μεταπήδησης',advisoryTitle:'Ενδεικτικός Τίτλος',advisoryContentType:'Ενδεικτικός Τύπος Περιεχομένου',cssClasses:'Stylesheet Classes',charset:'Κωδικοποίηση Χαρακτήρων Προσαρτημένης Πηγής',styles:'Μορφή',rel:'Σχέση',selectAnchor:'Επιλέξτε μια άγκυρα',anchorName:'Βάσει του Ονόματος της άγκυρας',anchorId:'Βάσει του Element Id',emailAddress:'Διεύθυνση e-mail',emailSubject:'Θέμα Μηνύματος',emailBody:'Κείμενο Μηνύματος',noAnchors:'(Δεν υπάρχουν άγκυρες στο κείμενο)',noUrl:'Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)',noEmail:'Εισάγετε την διεύθυνση ηλεκτρονικού ταχυδρομείου'},anchor:{toolbar:'Εισαγωγή/επεξεργασία Άγκυρας',menu:'Ιδιότητες άγκυρας',title:'Ιδιότητες άγκυρας',name:'Όνομα άγκυρας',errorName:'Παρακαλούμε εισάγετε όνομα άγκυρας',remove:'Αφαίρεση Άγκυρας'},list:{numberedTitle:'Ιδιότητες Αριθμημένης Λίστας ',bulletedTitle:'Ιδιότητες Λίστας Σημείων',type:'Τύπος',start:'Εκκίνηση',validateStartNumber:'Ο αριθμός εκκίνησης της αρίθμησης πρέπει να είναι ακέραιος αριθμός.',circle:'Κύκλος',disc:'Δίσκος',square:'Τετράγωνο',none:'Τίποτα',notset:'<δεν έχει οριστεί>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Δεκαδικός (1, 2, 3, κτλ)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Αναζήτηση και Αντικατάσταση',find:'Αναζήτηση',replace:'Αντικατάσταση',findWhat:'Αναζήτηση για:',replaceWith:'Αντικατάσταση με:',notFoundMsg:'Το κείμενο δεν βρέθηκε.',findOptions:'Find Options',matchCase:'Έλεγχος πεζών/κεφαλαίων',matchWord:'Εύρεση πλήρους λέξης',matchCyclic:'Match cyclic',replaceAll:'Αντικατάσταση Όλων',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Πίνακας',title:'Ιδιότητες Πίνακα',menu:'Ιδιότητες Πίνακα',deleteTable:'Διαγραφή πίνακα',rows:'Γραμμές',columns:'Κολώνες',border:'Πάχος Περιγράμματος',widthPx:'pixels',widthPc:'τοις εκατό',widthUnit:'μονάδα πλάτους',cellSpace:'Διάστημα κελιών',cellPad:'Γέμισμα κελιών',caption:'Λεζάντα',summary:'Περίληψη',headers:'Κεφαλίδες',headersNone:'Κανένα',headersColumn:'Πρώτη Στήλη',headersRow:'Πρώτη Σειρά',headersBoth:'Και τα δύο',invalidRows:'Ο αριθμός των σειρών πρέπει να είναι μεγαλύτερος από 0.',invalidCols:'Ο αριθμός των στηλών πρέπει να είναι μεγαλύτερος από 0.',invalidBorder:'Το πάχος του περιγράμματος πρέπει να είναι ένας αριθμός.',invalidWidth:'Το πλάτος του πίνακα πρέπει να είναι ένας αριθμός.',invalidHeight:'Το ύψος του πίνακα πρέπει να είναι ένας αριθμός.',invalidCellSpacing:'Η απόσταση μεταξύ των κελιών πρέπει να είναι ένας θετικός αριθμός.',invalidCellPadding:'Το γέμισμα μέσα στα κελιά πρέπει να είναι ένας θετικός αριθμός.',cell:{menu:'Κελί',insertBefore:'Εισαγωγή Κελιού Πριν',insertAfter:'Εισαγωγή Κελιού Μετά',deleteCell:'Διαγραφή Κελιών',merge:'Ενοποίηση Κελιών',mergeRight:'Συγχώνευση Με Δεξιά',mergeDown:'Συγχώνευση Με Κάτω',splitHorizontal:'Οριζόντιο Μοίρασμα Κελιού',splitVertical:'Κατακόρυφο Μοίρασμα Κελιού',title:'Ιδιότητες Κελιού',cellType:'Τύπος Κελιού',rowSpan:'Εύρος Σειρών',colSpan:'Εύρος Στηλών',wordWrap:'Word Wrap',hAlign:'Οριζόντια Στοίχιση',vAlign:'Κάθετη Στοίχιση',alignBaseline:'Baseline',bgColor:'Χρώμα Φόντου',borderColor:'Χρώμα Περιγράμματος',data:'Δεδομένα',header:'Κεφαλίδα',yes:'Ναι',no:'Όχι',invalidWidth:'Το πλάτος του κελιού πρέπει να είναι ένας αριθμός.',invalidHeight:'Το ύψος του κελιού πρέπει να είναι ένας αριθμός.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Επιλέξτε'},row:{menu:'Σειρά',insertBefore:'Εισαγωγή Σειράς Από Πάνω',insertAfter:'Εισαγωγή Σειράς Από Κάτω',deleteRow:'Διαγραφή Γραμμών'},column:{menu:'Στήλη',insertBefore:'Εισαγωγή Στήλης Πριν',insertAfter:'Εισαγωγή Σειράς Μετά',deleteColumn:'Διαγραφή Κολωνών'}},button:{title:'Ιδιότητες Κουμπιού',text:'Κείμενο (Τιμή)',type:'Τύπος',typeBtn:'Κουμπί',typeSbm:'Υποβολή',typeRst:'Επαναφορά'},checkboxAndRadio:{checkboxTitle:'Ιδιότητες Κουτιού Επιλογής',radioTitle:'Ιδιότητες Κουμπιού Επιλογής',value:'Τιμή',selected:'Επιλεγμένο'},form:{title:'Ιδιότητες Φόρμας',menu:'Ιδιότητες Φόρμας',action:'Δράση',method:'Μέθοδος',encoding:'Κωδικοποίηση'},select:{title:'Ιδιότητες Πεδίου Επιλογής',selectInfo:'Πληροφορίες Πεδίου Επιλογής',opAvail:'Διαθέσιμες Επιλογές',value:'Τιμή',size:'Μέγεθος',lines:'γραμμές',chkMulti:'Να επιτρέπονται οι πολλαπλές επιλογές',opText:'Κείμενο',opValue:'Τιμή',btnAdd:'Προσθήκη',btnModify:'Τροποποίηση',btnUp:'Πάνω',btnDown:'Κάτω',btnSetValue:'Προεπιλογή',btnDelete:'Διαγραφή'},textarea:{title:'Ιδιότητες Περιοχής Κειμένου',cols:'Στήλες',rows:'Σειρές'},textfield:{title:'Ιδιότητες Πεδίου Κειμένου',name:'Όνομα',value:'Τιμή',charWidth:'Πλάτος Χαρακτήρων',maxChars:'Μέγιστοι χαρακτήρες',type:'Τύπος',typeText:'Κείμενο',typePass:'Κωδικός'},hidden:{title:'Ιδιότητες Κρυφού Πεδίου',name:'Όνομα',value:'Τιμή'},image:{title:'Ιδιότητες Εικόνας',titleButton:'Ιδιότητες Κουμπιού Εικόνας',menu:'Ιδιότητες Εικόνας',infoTab:'Πληροφορίες Εικόνας',btnUpload:'Αποστολή στον Διακομιστή',upload:'Ανέβασμα',alt:'Εναλλακτικό Κείμενο',lockRatio:'Κλείδωμα Αναλογίας',resetSize:'Επαναφορά Αρχικού Μεγέθους',border:'Περίγραμμα',hSpace:'Οριζόντιο Διάστημα',vSpace:'Κάθετο Διάστημα',alertUrl:'Εισάγετε την τοποθεσία (URL) της εικόνας',linkTab:'Σύνδεσμος',button2Img:'Θέλετε να μετατρέψετε το επιλεγμένο κουμπί εικόνας σε απλή εικόνα;',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Ιδιότητες Flash',propertiesTab:'Ιδιότητες',title:'Ιδιότητες Flash',chkPlay:'Αυτόματη Εκτέλεση',chkLoop:'Επανάληψη',chkMenu:'Ενεργοποίηση Flash Menu',chkFull:'Allow Fullscreen',scale:'Μεγέθυνση',scaleAll:'Εμφάνιση όλων',scaleNoBorder:'Χωρίς Περίγραμμα',scaleFit:'Ακριβές Μέγεθος',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Απόλυτα Κάτω',alignAbsMiddle:'Απόλυτα στη Μέση',alignBaseline:'Γραμμή Βάσης',alignTextTop:'Κορυφή Κειμένου',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Χρώμα Υποβάθρου',hSpace:'Οριζόντιο Διάστημα',vSpace:'Κάθετο Διάστημα',validateSrc:'Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Ορθογραφικός Έλεγχος',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Δεν υπάρχει στο λεξικό',changeTo:'Αλλαγή σε',btnIgnore:'Αγνόηση',btnIgnoreAll:'Αγνόηση όλων',btnReplace:'Αντικατάσταση',btnReplaceAll:'Αντικατάσταση όλων',btnUndo:'Αναίρεση',noSuggestions:'- Δεν υπάρχουν προτάσεις -',progress:'Γίνεται ορθογραφικός έλεγχος...',noMispell:'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη',noChanges:'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις',oneChange:'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξε μια λέξη',manyChanges:'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξαν %1 λέξεις',ieSpellDownload:'Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;'},smiley:{toolbar:'Smiley',title:'Επιλέξτε ένα Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Εισαγωγή/Απομάκρυνση Αριθμημένης Λίστας',bulletedlist:'Εισαγωγή/Απομάκρυνση Λίστας Κουκκίδων',indent:'Αύξηση Εσοχής',outdent:'Μείωση Εσοχής',justify:{left:'Στοίχιση Αριστερά',center:'Στοίχιση στο Κέντρο',right:'Στοίχιση Δεξιά',block:'Πλήρης Στοίχιση'},blockquote:'Περιοχή Παράθεσης',clipboard:{title:'Επικόλληση',cutError:'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).',copyError:'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).',pasteMsg:'Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<strong>Ctrl/Cmd+V</strong>) και πατήστε OK.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Επικόλληση από το Word',title:'Επικόλληση από το Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Επικόλληση ως Απλό Κείμενο',title:'Επικόλληση ως Απλό Κείμενο'},templates:{button:'Πρότυπα',title:'Πρότυπα Περιεχομένου',options:'Template Options',insertOption:'Αντικατάσταση υπάρχοντων περιεχομένων',selectPromptMsg:'Παρακαλώ επιλέξτε πρότυπο για εισαγωγή στο πρόγραμμα',emptyListMsg:'(Δεν έχουν καθοριστεί πρότυπα)'},showBlocks:'Προβολή Περιοχών',stylesCombo:{label:'Μορφές',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Μορφοποίηση',panelTitle:'Μορφοποίηση Παραγράφου',tag_p:'Κανονικό',tag_pre:'Μορφοποιημένο',tag_address:'Διεύθυνση',tag_h1:'Επικεφαλίδα 1',tag_h2:'Επικεφαλίδα 2',tag_h3:'Επικεφαλίδα 3',tag_h4:'Επικεφαλίδα 4',tag_h5:'Επικεφαλίδα 5',tag_h6:'Επικεφαλίδα 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Γραμματοσειρά',voiceLabel:'Font',panelTitle:'Όνομα Γραμματοσειράς'},fontSize:{label:'Μέγεθος',voiceLabel:'Font Size',panelTitle:'Μέγεθος Γραμματοσειράς'},colorButton:{textColorTitle:'Χρώμα Κειμένου',bgColorTitle:'Χρώμα Φόντου',panelTitle:'Colors',auto:'Αυτόματα',more:'Περισσότερα χρώματα...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Μεγιστοποίηση',minimize:'Ελαχιστοποίηση',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Σύρσιμο για αλλαγή μεγέθους',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Σύμπτηξη Εργαλειοθήκης',toolbarExpand:'Ανάπτυξη Εργαλειοθήκης',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Ιδιότητες Εγγράφου',title:'Ιδιότητες Εγγράφου',design:'Design',meta:'Δεδομένα Meta',chooseColor:'Choose',other:'Άλλο...',docTitle:'Τίτλος Σελίδας',charset:'Κωδικοποίηση Χαρακτήρων',charsetOther:'Άλλη Κωδικοποίηση Χαρακτήρων',charsetASCII:'ASCII',charsetCE:'Κεντρικής Ευρώπης',charsetCT:'Παραδοσιακά κινέζικα (Big5)',charsetCR:'Κυριλλική',charsetGR:'Ελληνική',charsetJP:'Ιαπωνική',charsetKR:'Κορεάτικη',charsetTR:'Τουρκική',charsetUN:'Διεθνής (UTF-8)',charsetWE:'Δυτικής Ευρώπης',docType:'Επικεφαλίδα τύπου εγγράφου',docTypeOther:'Άλλη επικεφαλίδα τύπου εγγράφου',xhtmlDec:'Να συμπεριληφθούν οι δηλώσεις XHTML',bgColor:'Χρώμα φόντου',bgImage:'Διεύθυνση εικόνας φόντου',bgFixed:'Φόντο χωρίς κύλιση',txtColor:'Χρώμα Γραμμάτων',margin:'Περιθώρια σελίδας',marginTop:'Κορυφή',marginLeft:'Αριστερά',marginRight:'Δεξιά',marginBottom:'Κάτω',metaKeywords:'Λέξεις κλειδιά δείκτες εγγράφου (διαχωρισμός με κόμμα)',metaDescription:'Περιγραφή εγγράφου',metaAuthor:'Συγγραφέας',metaCopyright:'Πνευματικά Δικαιώματα',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en.js
new file mode 100755
index 0000000..5c5fcf3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.en={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Width',height:'Height',align:'Alignment',alignLeft:'Left',alignRight:'Right',alignCenter:'Center',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupLeft:'Left Position',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',rel:'Relationship',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',findOptions:'Find Options',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignTextTop:'Text Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background color',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Align Left',center:'Center',right:'Align Right',block:'Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Color',bgColorTitle:'Background Color',panelTitle:'Colors',auto:'Automatic',more:'More Colors...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Document Properties',title:'Document Properties',design:'Design',meta:'Meta Tags',chooseColor:'Choose',other:'Other...',docTitle:'Page Title',charset:'Character Set Encoding',charsetOther:'Other Character Set Encoding',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Document Type Heading',docTypeOther:'Other Document Type Heading',xhtmlDec:'Include XHTML Declarations',bgColor:'Background Color',bgImage:'Background Image URL',bgFixed:'Non-scrolling (Fixed) Background',txtColor:'Text Color',margin:'Page Margins',marginTop:'Top',marginLeft:'Left',marginRight:'Right',marginBottom:'Bottom',metaKeywords:'Document Indexing Keywords (comma separated)',metaDescription:'Document Description',metaAuthor:'Author',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en-au.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en-au.js
new file mode 100755
index 0000000..4461727
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en-au.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['en-au']={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Width',height:'Height',align:'Align',alignLeft:'Left',alignRight:'Right',alignCenter:'Centre',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupLeft:'Left Position',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',rel:'Relationship',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',findOptions:'Find Options',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignTextTop:'Text Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background colour',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Align Left',center:'Centre',right:'Align Right',block:'Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Colour',bgColorTitle:'Background Colour',panelTitle:'Colors',auto:'Automatic',more:'More Colours...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Document Properties',title:'Document Properties',design:'Design',meta:'Meta Tags',chooseColor:'Choose',other:'Other...',docTitle:'Page Title',charset:'Character Set Encoding',charsetOther:'Other Character Set Encoding',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Document Type Heading',docTypeOther:'Other Document Type Heading',xhtmlDec:'Include XHTML Declarations',bgColor:'Background Color',bgImage:'Background Image URL',bgFixed:'Non-scrolling (Fixed) Background',txtColor:'Text Color',margin:'Page Margins',marginTop:'Top',marginLeft:'Left',marginRight:'Right',marginBottom:'Bottom',metaKeywords:'Document Indexing Keywords (comma separated)',metaDescription:'Document Description',metaAuthor:'Author',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en-ca.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en-ca.js
new file mode 100755
index 0000000..470209b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en-ca.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['en-ca']={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Width',height:'Height',align:'Align',alignLeft:'Left',alignRight:'Right',alignCenter:'Centre',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupLeft:'Left Position',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',rel:'Relationship',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',findOptions:'Find Options',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignTextTop:'Text Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background colour',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Align Left',center:'Centre',right:'Align Right',block:'Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Colour',bgColorTitle:'Background Colour',panelTitle:'Colors',auto:'Automatic',more:'More Colours...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Document Properties',title:'Document Properties',design:'Design',meta:'Meta Tags',chooseColor:'Choose',other:'Other...',docTitle:'Page Title',charset:'Character Set Encoding',charsetOther:'Other Character Set Encoding',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Document Type Heading',docTypeOther:'Other Document Type Heading',xhtmlDec:'Include XHTML Declarations',bgColor:'Background Color',bgImage:'Background Image URL',bgFixed:'Non-scrolling (Fixed) Background',txtColor:'Text Color',margin:'Page Margins',marginTop:'Top',marginLeft:'Left',marginRight:'Right',marginBottom:'Bottom',metaKeywords:'Document Indexing Keywords (comma separated)',metaDescription:'Document Description',metaAuthor:'Author',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en-gb.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en-gb.js
new file mode 100755
index 0000000..6d3b073
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/en-gb.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['en-gb']={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Width',height:'Height',align:'Align',alignLeft:'Left',alignRight:'Right',alignCenter:'Centre',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupLeft:'Left Position',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',rel:'Relationship',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',findOptions:'Find Options',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignTextTop:'Text Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background colour',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Align Left',center:'Centre',right:'Align Right',block:'Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Colour',bgColorTitle:'Background Colour',panelTitle:'Colours',auto:'Automatic',more:'More Colours...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Grey','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Grey',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Grey',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Grey',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximise',minimize:'Minimise',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select colour',options:'Colour Options',highlight:'Highlight',selected:'Selected Colour',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Document Properties',title:'Document Properties',design:'Design',meta:'Meta Tags',chooseColor:'Choose',other:'Other...',docTitle:'Page Title',charset:'Character Set Encoding',charsetOther:'Other Character Set Encoding',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Document Type Heading',docTypeOther:'Other Document Type Heading',xhtmlDec:'Include XHTML Declarations',bgColor:'Background Color',bgImage:'Background Image URL',bgFixed:'Non-scrolling (Fixed) Background',txtColor:'Text Color',margin:'Page Margins',marginTop:'Top',marginLeft:'Left',marginRight:'Right',marginBottom:'Bottom',metaKeywords:'Document Indexing Keywords (comma separated)',metaDescription:'Document Description',metaAuthor:'Author',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/eo.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/eo.js
new file mode 100755
index 0000000..a4160b7
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/eo.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.eo={dir:'ltr',editorTitle:'riĉteksta redaktilo, %1',editorHelp:'Premu ALT 0 por helpilo',toolbars:'Ilobretoj de la redaktilo',editor:'Redaktilo por Riĉiga Teksto',source:'Fonto',newPage:'Nova Paĝo',save:'Konservi',preview:'Vidigi Aspekton',cut:'Eltondi',copy:'Kopii',paste:'Interglui',print:'Presi',underline:'Substreko',bold:'Grasa',italic:'Kursiva',selectAll:'Elekti ĉion',removeFormat:'Forigi Formaton',strike:'Trastreko',subscript:'Suba indico',superscript:'Supra indico',horizontalrule:'Enmeti Horizontalan Linion',pagebreak:'Enmeti Paĝavancon por Presado',pagebreakAlt:'Paĝavanco',unlink:'Forigi Ligilon',undo:'Malfari',redo:'Refari',common:{browseServer:'Foliumi en la Servilo',url:'URL',protocol:'Protokolo',upload:'Alŝuti',uploadSubmit:'Sendu al Servilo',image:'Bildo',flash:'Flaŝo',form:'Formularo',checkbox:'Markobutono',radio:'Radiobutono',textField:'Teksta kampo',textarea:'Teksta Areo',hiddenField:'Kaŝita Kampo',button:'Butono',select:'Elekta Kampo',imageButton:'Bildbutono',notSet:'<Defaŭlta>',id:'Id',name:'Nomo',langDir:'Skribdirekto',langDirLtr:'De maldekstro dekstren (LTR)',langDirRtl:'De dekstro maldekstren (RTL)',langCode:'Lingva Kodo',longDescr:'URL de Longa Priskribo',cssClass:'Klasoj de Stilfolioj',advisoryTitle:'Priskriba Titolo',cssStyle:'Stilo',ok:'Akcepti',cancel:'Rezigni',close:'Fermi',preview:'Vidigi Aspekton',generalTab:'Ĝenerala',advancedTab:'Speciala',validateNumberFailed:'Tiu valoro ne estas nombro.',confirmNewPage:'La neregistritaj ŝanĝoj estas perdotaj. Ĉu vi certas, ke vi volas ŝargi novan paĝon?',confirmCancel:'Iuj opcioj esta ŝanĝitaj. Ĉu vi certas, ke vi volas fermi la dialogon?',options:'Opcioj',target:'Celo',targetNew:'Nova Fenestro (_blank)',targetTop:'Supra Fenestro (_top)',targetSelf:'Sama Fenestro (_self)',targetParent:'Patra Fenestro (_parent)',langDirLTR:'De maldekstro dekstren (LTR)',langDirRTL:'De dekstro maldekstren (RTL)',styles:'Stilo',cssClasses:'Stilfoliaj Klasoj',width:'Larĝo',height:'Alto',align:'Ĝisrandigo',alignLeft:'Maldekstre',alignRight:'Dekstre',alignCenter:'Centre',alignTop:'Supre',alignMiddle:'Centre',alignBottom:'Malsupre',invalidHeight:'Alto devas esti nombro.',invalidWidth:'Larĝo devas esti nombro.',invalidCssLength:'La valoro indikita por la "%1" kampo devas esti pozitiva nombro kun aŭ sen valida CSSmezurunuo (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'La valoro indikita por la "%1" kampo devas esti pozitiva nombro kun aŭ sen valida HTMLmezurunuo (px or %).',invalidInlineStyle:'La valoro indikita por la enlinia stilo devas konsisti el unu aŭ pluraj elementoj kun la formato de "nomo : valoro", apartigitaj per punktokomoj.',cssLengthTooltip:'Entajpu nombron por rastrumera valoro aŭ nombron kun valida CSSunuo (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, nehavebla</span>'},contextmenu:{options:'Opcioj de Kunteksta Menuo'},specialChar:{toolbar:'Enmeti Specialan Signon',title:'Selekti Specialan Signon',options:'Opcioj pri Specialaj Signoj'},link:{toolbar:'Enmeti/Ŝanĝi Ligilon',other:'<alia>',menu:'Ŝanĝi Ligilon',title:'Ligilo',info:'Informoj pri la Ligilo',target:'Celo',upload:'Alŝuti',advanced:'Speciala',type:'Tipo de Ligilo',toUrl:'URL',toAnchor:'Ankri en tiu ĉi paĝo',toEmail:'Retpoŝto',targetFrame:'<kadro>',targetPopup:'<ŝprucfenestro>',targetFrameName:'Nomo de CelKadro',targetPopupName:'Nomo de Ŝprucfenestro',popupFeatures:'Atributoj de la Ŝprucfenestro',popupResizable:'Dimensiŝanĝebla',popupStatusBar:'Statobreto',popupLocationBar:'Adresobreto',popupToolbar:'Ilobreto',popupMenuBar:'Menubreto',popupFullScreen:'Tutekrane (IE)',popupScrollBars:'Rulumskaloj',popupDependent:'Dependa (Netscape)',popupLeft:'Maldekstra Pozicio',popupTop:'Supra Pozicio',id:'Id',langDir:'Skribdirekto',langDirLTR:'De maldekstro dekstren (LTR)',langDirRTL:'De dekstro maldekstren (RTL)',acccessKey:'Fulmoklavo',name:'Nomo',langCode:'Lingva Kodo',tabIndex:'Taba Indekso',advisoryTitle:'Priskriba Titolo',advisoryContentType:'Enhavotipo',cssClasses:'Klasoj de Stilfolioj',charset:'Signaro de la Ligita Rimedo',styles:'Stilo',rel:'Rilato',selectAnchor:'Elekti Ankron',anchorName:'Per Ankronomo',anchorId:'Per Elementidentigilo',emailAddress:'Retpoŝto',emailSubject:'Mesaĝa Temo',emailBody:'Mesaĝa korpo',noAnchors:'<Ne disponeblas ankroj en la dokumento>',noUrl:'Bonvolu entajpi la URL-on',noEmail:'Bonvolu entajpi la retpoŝtadreson'},anchor:{toolbar:'Ankro',menu:'Enmeti/Ŝanĝi Ankron',title:'Ankraj Atributoj',name:'Ankra Nomo',errorName:'Bv entajpi la ankran nomon',remove:'Forigi Ankron'},list:{numberedTitle:'Atributoj de Numera Listo',bulletedTitle:'Atributoj de Bula Listo',type:'Tipo',start:'Komenco',validateStartNumber:'La unua listero devas esti entjera nombro.',circle:'Cirklo',disc:'Disko',square:'kvadrato',none:'Neniu',notset:'<Defaŭlta>',armenian:'Armena nombrado',georgian:'Gruza nombrado (an, ban, gan, ktp.)',lowerRoman:'Minusklaj Romanaj Nombroj (i, ii, iii, iv, v, ktp.)',upperRoman:'Majusklaj Romanaj Nombroj (I, II, III, IV, V, ktp.)',lowerAlpha:'Minusklaj Literoj (a, b, c, d, e, ktp.)',upperAlpha:'Majusklaj Literoj (A, B, C, D, E, ktp.)',lowerGreek:'Grekaj Minusklaj Literoj (alpha, beta, gamma, ktp.)',decimal:'Dekumaj Nombroj (1, 2, 3, ktp.)',decimalLeadingZero:'Dekumaj Nombroj malantaŭ nulo (01, 02, 03, ktp.)'},findAndReplace:{title:'Serĉi kaj Anstataŭigi',find:'Serĉi',replace:'Anstataŭigi',findWhat:'Serĉi:',replaceWith:'Anstataŭigi per:',notFoundMsg:'La celteksto ne estas trovita.',findOptions:'Opcioj pri Serĉado',matchCase:'Kongruigi Usklecon',matchWord:'Tuta Vorto',matchCyclic:'Cikla Serĉado',replaceAll:'Anstataŭigi Ĉion',replaceSuccessMsg:'%1 anstataŭigita(j) apero(j).'},table:{toolbar:'Tabelo',title:'Atributoj de Tabelo',menu:'Atributoj de Tabelo',deleteTable:'Forigi Tabelon',rows:'Linioj',columns:'Kolumnoj',border:'Bordero',widthPx:'Rastrumeroj',widthPc:'elcentoj',widthUnit:'unuo de larĝo',cellSpace:'Spaco inter la Ĉeloj',cellPad:'Interna Marĝeno de la ĉeloj',caption:'Tabeltitolo',summary:'Resumo',headers:'Supraj Paĝotitoloj',headersNone:'Neniu',headersColumn:'Unua kolumno',headersRow:'Unua linio',headersBoth:'Ambaŭ',invalidRows:'La nombro de la linioj devas superi 0.',invalidCols:'La nombro de la kolumnoj devas superi 0.',invalidBorder:'La bordergrando devas esti nombro.',invalidWidth:'La tabellarĝo devas esti nombro.',invalidHeight:'La tabelalto devas esti nombro.',invalidCellSpacing:'La spaco inter la ĉeloj devas esti pozitiva nombro.',invalidCellPadding:'La interna marĝeno en la ĉeloj devas esti pozitiva nombro.',cell:{menu:'Ĉelo',insertBefore:'Enmeti Ĉelon Antaŭ',insertAfter:'Enmeti Ĉelon Post',deleteCell:'Forigi la Ĉelojn',merge:'Kunfandi la Ĉelojn',mergeRight:'Kunfandi dekstren',mergeDown:'Kunfandi malsupren ',splitHorizontal:'Horizontale dividi',splitVertical:'Vertikale dividi',title:'Ĉelatributoj',cellType:'Ĉeltipo',rowSpan:'Kunfando de linioj',colSpan:'Kunfando de kolumnoj',wordWrap:'Cezuro',hAlign:'Horizontala ĝisrandigo',vAlign:'Vertikala ĝisrandigo',alignBaseline:'Malsupro de la teksto',bgColor:'Fonkoloro',borderColor:'Borderkoloro',data:'Datenoj',header:'Supra paĝotitolo',yes:'Jes',no:'No',invalidWidth:'Ĉellarĝo devas esti nombro.',invalidHeight:'Ĉelalto devas esti nombro.',invalidRowSpan:'Kunfando de linioj devas esti entjera nombro.',invalidColSpan:'Kunfando de kolumnoj devas esti entjera nombro.',chooseColor:'Elektu'},row:{menu:'Linio',insertBefore:'Enmeti linion antaŭ',insertAfter:'Enmeti linion post',deleteRow:'Forigi Liniojn'},column:{menu:'Kolumno',insertBefore:'Enmeti kolumnon antaŭ',insertAfter:'Enmeti kolumnon post',deleteColumn:'Forigi Kolumnojn'}},button:{title:'Butonaj atributoj',text:'Teksto (Valoro)',type:'Tipo',typeBtn:'Butono',typeSbm:'Validigi (submit)',typeRst:'Remeti en la originstaton (Reset)'},checkboxAndRadio:{checkboxTitle:'Markobutonaj Atributoj',radioTitle:'Radiobutonaj Atributoj',value:'Valoro',selected:'Selektita'},form:{title:'Formularaj Atributoj',menu:'Formularaj Atributoj',action:'Ago',method:'Metodo',encoding:'Kodoprezento'},select:{title:'Atributoj de Elekta Kampo',selectInfo:'Informoj pri la rulummenuo',opAvail:'Elektoj Disponeblaj',value:'Valoro',size:'Grando',lines:'Linioj',chkMulti:'Permesi Plurajn Elektojn',opText:'Teksto',opValue:'Valoro',btnAdd:'Aldoni',btnModify:'Modifi',btnUp:'Supren',btnDown:'Malsupren',btnSetValue:'Agordi kiel Elektitan Valoron',btnDelete:'Forigi'},textarea:{title:'Atributoj de Teksta Areo',cols:'Kolumnoj',rows:'Linioj'},textfield:{title:'Atributoj de Teksta Kampo',name:'Nomo',value:'Valoro',charWidth:'Signolarĝo',maxChars:'Maksimuma Nombro da Signoj',type:'Tipo',typeText:'Teksto',typePass:'Pasvorto'},hidden:{title:'Atributoj de Kaŝita Kampo',name:'Nomo',value:'Valoro'},image:{title:'Atributoj de Bildo',titleButton:'Bildbutonaj Atributoj',menu:'Atributoj de Bildo',infoTab:'Informoj pri Bildo',btnUpload:'Sendu al Servilo',upload:'Alŝuti',alt:'Anstataŭiga Teksto',lockRatio:'Konservi Proporcion',resetSize:'Origina Grando',border:'Bordero',hSpace:'Horizontala Spaco',vSpace:'Vertikala Spaco',alertUrl:'Bonvolu tajpi la retadreson de la bildo',linkTab:'Ligilo',button2Img:'Ĉu vi volas transformi la selektitan bildbutonon en simplan bildon?',img2Button:'Ĉu vi volas transformi la selektitan bildon en bildbutonon?',urlMissing:'La fontretadreso de la bildo mankas.',validateBorder:'La bordero devas esti entjera nombro.',validateHSpace:'La horizontala spaco devas esti entjera nombro.',validateVSpace:'La vertikala spaco devas esti entjera nombro.'},flash:{properties:'Flaŝatributoj',propertiesTab:'Atributoj',title:'Flaŝatributoj',chkPlay:'Aŭtomata legado',chkLoop:'Iteracio',chkMenu:'Ebligi flaŝmenuon',chkFull:'Permesi tutekranon',scale:'Skalo',scaleAll:'Montri ĉion',scaleNoBorder:'Neniu bordero',scaleFit:'Origina grando',access:'Atingi skriptojn',accessAlways:'Ĉiam',accessSameDomain:'Sama domajno',accessNever:'Neniam',alignAbsBottom:'Absoluta Malsupro',alignAbsMiddle:'Absoluta Centro',alignBaseline:'TekstoMalsupro',alignTextTop:'TekstoSupro',quality:'Kvalito',qualityBest:'Plej bona',qualityHigh:'Alta',qualityAutoHigh:'Aŭtomate alta',qualityMedium:'Meza',qualityAutoLow:'Aŭtomate malalta',qualityLow:'Malalta',windowModeWindow:'Fenestro',windowModeOpaque:'Opaka',windowModeTransparent:'Travidebla',windowMode:'Fenestra reĝimo',flashvars:'Variabloj por Flaŝo',bgcolor:'Fona Koloro',hSpace:'Horizontala Spaco',vSpace:'Vertikala Spaco',validateSrc:'Bonvolu entajpi la retadreson (URL)',validateHSpace:'Horizontala Spaco devas esti nombro.',validateVSpace:'Vertikala Spaco devas esti nombro.'},spellCheck:{toolbar:'Kontroli la ortografion',title:'Kontroli la ortografion',notAvailable:'Bedaŭrinde la servo ne funkcias nuntempe.',errorLoading:'Eraro en la servoelŝuto el la gastiga komputiko: %s.',notInDic:'Ne trovita en la vortaro',changeTo:'Ŝanĝi al',btnIgnore:'Ignori',btnIgnoreAll:'Ignori Ĉion',btnReplace:'Anstataŭigi',btnReplaceAll:'Anstataŭigi Ĉion',btnUndo:'Malfari',noSuggestions:'- Neniu propono -',progress:'La ortografio estas kontrolata...',noMispell:'Ortografikontrolado finita: neniu eraro trovita',noChanges:'Ortografikontrolado finita: neniu vorto korektita',oneChange:'Ortografikontrolado finita: unu vorto korektita',manyChanges:'Ortografikontrolado finita: %1 vortoj korektitaj',ieSpellDownload:'Ortografikontrolilo ne instalita. Ĉu vi volas elŝuti ĝin nun?'},smiley:{toolbar:'Mienvinjeto',title:'Enmeti Mienvinjeton',options:'Opcioj pri mienvinjetoj'},elementsPath:{eleLabel:'Vojo al Elementoj',eleTitle:'%1 elementoj'},numberedlist:'Numera Listo',bulletedlist:'Bula Listo',indent:'Pligrandigi Krommarĝenon',outdent:'Malpligrandigi Krommarĝenon',justify:{left:'Ĝisrandigi maldekstren',center:'Centrigi',right:'Ĝisrandigi dekstren',block:'Ĝisrandigi Ambaŭflanke'},blockquote:'Citaĵo',clipboard:{title:'Interglui',cutError:'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).',copyError:'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).',pasteMsg:'Bonvolu glui la tekston en la jenan areon per uzado de la klavaro (<strong>Ctrl/Cmd+V</strong>) kaj premu OK',securityMsg:'Pro la sekurecagordo de via TTT-legilo, la redaktilo ne povas rekte atingi viajn datenojn en la poŝo. Bonvolu denove interglui la datenojn en tiun fenestron.',pasteArea:'Intergluoareo'},pastefromword:{confirmCleanup:'La teksto, kiun vi volas interglui, ŝajnas esti kopiita el Word. Ĉu vi deziras purigi ĝin antaŭ intergluo?',toolbar:'Interglui el Word',title:'Interglui el Word',error:'Ne eblis purigi la intergluitajn datenojn pro interna eraro'},pasteText:{button:'Interglui kiel platan tekston',title:'Interglui kiel platan tekston'},templates:{button:'Ŝablonoj',title:'Enhavo de ŝablonoj',options:'Opcioj pri ŝablonoj',insertOption:'Anstataŭigi la nunan enhavon',selectPromptMsg:'Bonvolu selekti la ŝablonon por malfermi ĝin en la redaktilo',emptyListMsg:'(Neniu ŝablono difinita)'},showBlocks:'Montri la blokojn',stylesCombo:{label:'Stiloj',panelTitle:'Stiloj pri enpaĝigo',panelTitle1:'Stiloj de blokoj',panelTitle2:'Enliniaj Stiloj',panelTitle3:'Stiloj de objektoj'},format:{label:'Formato',panelTitle:'ParagrafFormato',tag_p:'Normala',tag_pre:'Formatita',tag_address:'Adreso',tag_h1:'Titolo 1',tag_h2:'Titolo 2',tag_h3:'Titolo 3',tag_h4:'Titolo 4',tag_h5:'Titolo 5',tag_h6:'Titolo 6',tag_div:'Normala (DIV)'},div:{title:'Krei DIV ujon',toolbar:'Krei DIV ujon',cssClassInputLabel:'Stilfolioklasoj',styleSelectLabel:'Stilo',IdInputLabel:'Id',languageCodeInputLabel:' Lingvokodo',inlineStyleInputLabel:'Enlinia stilo',advisoryTitleInputLabel:'Priskriba Titolo',langDirLabel:'Skribdirekto',langDirLTRLabel:'Maldekstre dekstren (angle LTR)',langDirRTLLabel:'Dekstre maldekstren (angle RTL)',edit:'Redakti Div',remove:'Forigi Div'},iframe:{title:'Atributoj de la enlinia kadro (IFrame)',toolbar:'Enlinia kadro (IFrame)',noUrl:'Bonvolu entajpi la retadreson de la ligilo al la enlinia kadro (IFrame)',scrolling:'Ebligi rulumskalon',border:'Montri borderon de kadro (frame)'},font:{label:'Tiparo',voiceLabel:'Tiparo',panelTitle:'Tipara nomo'},fontSize:{label:'Grado',voiceLabel:'Tipara grado',panelTitle:'Tipara grado'},colorButton:{textColorTitle:'Teksta Koloro',bgColorTitle:'Fona Koloro',panelTitle:'Koloroj',auto:'Aŭtomata',more:'Pli da Koloroj...'},colors:{'000':'Nigra',800000:'Kaŝtankolora','8B4513':'Mezbruna','2F4F4F':'Ardezgriza','008080':'Marĉanaskolora','000080':'Maristblua','4B0082':'Indigokolora',696969:'Malhelgriza',B22222:'Brikruĝa',A52A2A:'Bruna',DAA520:'Senbrilorkolora','006400':'Malhelverda','40E0D0':'Turkisblua','0000CD':'Reĝblua',800080:'Purpura',808080:'Griza',F00:'Ruĝa',FF8C00:'Malheloranĝkolora',FFD700:'Orkolora','008000':'Verda','0FF':'Verdblua','00F':'Blua',EE82EE:'Viola',A9A9A9:'Mezgriza',FFA07A:'Salmokolora',FFA500:'Oranĝkolora',FFFF00:'Flava','00FF00':'Limetkolora',AFEEEE:'Helturkiskolora',ADD8E6:'Helblua',DDA0DD:'Prunkolora',D3D3D3:'Helgriza',FFF0F5:'Lavendkolora vangoŝminko',FAEBD7:'Antikvablanka',FFFFE0:'Helflava',F0FFF0:'Vintromelonkolora',F0FFFF:'Lazura',F0F8FF:'Aliceblua',E6E6FA:'Lavendkolora',FFF:'Blanka'},scayt:{title:'OrtografiKontrolado Dum Vi Tajpas (OKDVT)',opera_title:'Ne subportata de Opera',enable:'Ebligi OKDVT',disable:'Malebligi OKDVT',about:'Pri OKDVT',toggle:'Baskuligi OKDVT',options:'Opcioj',langs:'Lingvoj',moreSuggestions:'Pli da sugestoj',ignore:'Ignori',ignoreAll:'Ignori ĉion',addWord:'Almeti la vorton',emptyDic:'La vortaronomo ne devus esti malplena.',optionsTab:'Opcioj',allCaps:'Ignori la vortojn skribitajn nur per ĉefliteroj',ignoreDomainNames:'Ignori domajnajn nomojn',mixedCase:'Ignori vortojn kun miksa uskleco',mixedWithDigits:'Ignori vortojn kun nombroj',languagesTab:'Lingvoj',dictionariesTab:'Vortaroj',dic_field_name:'Vortaronomo',dic_create:'Krei',dic_restore:'Restaŭri',dic_delete:'Forigi',dic_rename:'Renomi',dic_info:'Komence la vortaro de la uzanto estas konservita en kuketo. Tamen la kuketgrando estas limigita. Kiam la vortaro de la uzanto atingas grandon, kiu ne plu ebligas konservi ĝin en kuketo, tiam la vortaro povas esti konservata en niaj serviloj. Por konservi vian personan vortaron en nian servilon, vi devas indiki nomon por tiu vortaro. Se vi jam havas konservitan vortaron, bonvolu entajpi ties nomon kaj alklaki la restaŭrbutonon.',aboutTab:'Pri'},about:{title:'Pri CKEditor',dlgTitle:'Pri CKEditor',help:'Kontroli $1 por helpo.',userGuide:'CKEditor Uzindikoj',moreInfo:'Por informoj pri licenco, bonvolu viziti nian retpaĝaron:',copy:'Copyright © $1. Ĉiuj rajtoj rezervitaj.'},maximize:'Pligrandigi',minimize:'Malgrandigi',fakeobjects:{anchor:'Ankro',flash:'FlaŝAnimacio',iframe:'Enlinia Kadro (IFrame)',hiddenfield:'Kaŝita kampo',unknown:'Nekonata objekto'},resize:'Movigi por ŝanĝi la grandon',colordialog:{title:'Selekti koloron',options:'Opcioj pri koloroj',highlight:'Detaloj',selected:'Selektita koloro',clear:'Forigi'},toolbarCollapse:'Faldi la ilbreton',toolbarExpand:'Malfaldi la ilbreton',toolbarGroups:{document:'Dokumento',clipboard:'Poŝo/Malfari',editing:'Redaktado',forms:'Formularoj',basicstyles:'Bazaj stiloj',paragraph:'Paragrafo',links:'Ligiloj',insert:'Enmeti',styles:'Stiloj',colors:'Koloroj',tools:'Iloj'},bidi:{ltr:'Tekstdirekto de maldekstre dekstren',rtl:'Tekstdirekto de dekstre maldekstren'},docprops:{label:'Dokumentaj Atributoj',title:'Dokumentaj Atributoj',design:'Dizajno',meta:'Metadatenoj',chooseColor:'Elektu',other:'<alia>',docTitle:'Paĝotitolo',charset:'Signara Kodo',charsetOther:'Alia Signara Kodo',charsetASCII:'ASCII',charsetCE:'Centra Eŭropa',charsetCT:'Tradicia Ĉina (Big5)',charsetCR:'Cirila',charsetGR:'Greka',charsetJP:'Japana',charsetKR:'Korea',charsetTR:'Turka',charsetUN:'Unikodo (UTF-8)',charsetWE:'Okcidenta Eŭropa',docType:'Dokumenta Tipo',docTypeOther:'Alia Dokumenta Tipo',xhtmlDec:'Inkluzivi XHTML Deklarojn',bgColor:'Fona Koloro',bgImage:'URL de Fona Bildo',bgFixed:'Neruluma Fono',txtColor:'Teksta Koloro',margin:'Paĝaj Marĝenoj',marginTop:'Supra',marginLeft:'Maldekstra',marginRight:'Dekstra',marginBottom:'Malsupra',metaKeywords:'Ŝlosilvortoj de la Dokumento (apartigitaj de komoj)',metaDescription:'Dokumenta Priskribo',metaAuthor:'Verkinto',metaCopyright:'Kopirajto',previewHtml:'<p>Tio estas <strong>sampla teksto</strong>. Vi estas uzanta <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/es.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/es.js
new file mode 100755
index 0000000..e48c580
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/es.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.es={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Barras de herramientas del editor',editor:'Editor de texto enriquecido',source:'Fuente HTML',newPage:'Nueva Página',save:'Guardar',preview:'Vista Previa',cut:'Cortar',copy:'Copiar',paste:'Pegar',print:'Imprimir',underline:'Subrayado',bold:'Negrita',italic:'Cursiva',selectAll:'Seleccionar Todo',removeFormat:'Eliminar Formato',strike:'Tachado',subscript:'Subíndice',superscript:'Superíndice',horizontalrule:'Insertar Línea Horizontal',pagebreak:'Insertar Salto de Página',pagebreakAlt:'Salto de página',unlink:'Eliminar Vínculo',undo:'Deshacer',redo:'Rehacer',common:{browseServer:'Ver Servidor',url:'URL',protocol:'Protocolo',upload:'Cargar',uploadSubmit:'Enviar al Servidor',image:'Imagen',flash:'Flash',form:'Formulario',checkbox:'Casilla de Verificación',radio:'Botones de Radio',textField:'Campo de Texto',textarea:'Area de Texto',hiddenField:'Campo Oculto',button:'Botón',select:'Campo de Selección',imageButton:'Botón Imagen',notSet:'<No definido>',id:'Id',name:'Nombre',langDir:'Orientación',langDirLtr:'Izquierda a Derecha (LTR)',langDirRtl:'Derecha a Izquierda (RTL)',langCode:'Cód. de idioma',longDescr:'Descripción larga URL',cssClass:'Clases de hojas de estilo',advisoryTitle:'Título',cssStyle:'Estilo',ok:'Aceptar',cancel:'Cancelar',close:'Cerrar',preview:'Previsualización',generalTab:'General',advancedTab:'Avanzado',validateNumberFailed:'El valor no es un número.',confirmNewPage:'Cualquier cambio que no se haya guardado se perderá.\r\n¿Está seguro de querer crear una nueva página?',confirmCancel:'Algunas de las opciones se han cambiado.\r\n¿Está seguro de querer cerrar el diálogo?',options:'Opciones',target:'Destino',targetNew:'Nueva ventana (_blank)',targetTop:'Ventana principal (_top)',targetSelf:'Misma ventana (_self)',targetParent:'Ventana padre (_parent)',langDirLTR:'Izquierda a derecha (LTR)',langDirRTL:'Derecha a izquierda (RTL)',styles:'Estilos',cssClasses:'Clase de la hoja de estilos',width:'Anchura',height:'Altura',align:'Alineación',alignLeft:'Izquierda',alignRight:'Derecha',alignCenter:'Centrado',alignTop:'Tope',alignMiddle:'Centro',alignBottom:'Pie',invalidHeight:'Altura debe ser un número.',invalidWidth:'Anchura debe ser un número.',invalidCssLength:'El valor especificado para el campo "%1" debe ser un número positivo, incluyendo optionalmente una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).',invalidHtmlLength:'El valor especificado para el campo "%1" debe ser un número positivo, incluyendo optionalmente una unidad de medida HTML válida (px o %).',invalidInlineStyle:'El valor especificado para el estilo debe consistir en uno o más pares con el formato "nombre: valor", separados por punto y coma.',cssLengthTooltip:'Introduca un número para el valor en pixels o un número con una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).',unavailable:'%1<span class="cke_accessibility">, no disponible</span>'},contextmenu:{options:'Opciones del menú contextual'},specialChar:{toolbar:'Insertar Caracter Especial',title:'Seleccione un caracter especial',options:'Opciones de caracteres especiales'},link:{toolbar:'Insertar/Editar Vínculo',other:'<otro>',menu:'Editar Vínculo',title:'Vínculo',info:'Información de Vínculo',target:'Destino',upload:'Cargar',advanced:'Avanzado',type:'Tipo de vínculo',toUrl:'URL',toAnchor:'Referencia en esta página',toEmail:'E-Mail',targetFrame:'<marco>',targetPopup:'<ventana emergente>',targetFrameName:'Nombre del Marco Destino',targetPopupName:'Nombre de Ventana Emergente',popupFeatures:'Características de Ventana Emergente',popupResizable:'Redimensionable',popupStatusBar:'Barra de Estado',popupLocationBar:'Barra de ubicación',popupToolbar:'Barra de Herramientas',popupMenuBar:'Barra de Menú',popupFullScreen:'Pantalla Completa (IE)',popupScrollBars:'Barras de desplazamiento',popupDependent:'Dependiente (Netscape)',popupLeft:'Posición Izquierda',popupTop:'Posición Derecha',id:'Id',langDir:'Orientación',langDirLTR:'Izquierda a Derecha (LTR)',langDirRTL:'Derecha a Izquierda (RTL)',acccessKey:'Tecla de Acceso',name:'Nombre',langCode:'Código idioma',tabIndex:'Indice de tabulación',advisoryTitle:'Título',advisoryContentType:'Tipo de Contenido',cssClasses:'Clases de hojas de estilo',charset:'Fuente de caracteres vinculado',styles:'Estilo',rel:'Relación',selectAnchor:'Seleccionar una referencia',anchorName:'Por Nombre de Referencia',anchorId:'Por ID de elemento',emailAddress:'Dirección de E-Mail',emailSubject:'Título del Mensaje',emailBody:'Cuerpo del Mensaje',noAnchors:'(No hay referencias disponibles en el documento)',noUrl:'Por favor escriba el vínculo URL',noEmail:'Por favor escriba la dirección de e-mail'},anchor:{toolbar:'Referencia',menu:'Propiedades de Referencia',title:'Propiedades de Referencia',name:'Nombre de la Referencia',errorName:'Por favor, complete el nombre de la Referencia',remove:'Quitar Referencia'},list:{numberedTitle:'Propiedades de lista numerada',bulletedTitle:'Propiedades de viñetas',type:'Tipo',start:'Inicio',validateStartNumber:'El Inicio debe ser un número entero.',circle:'Círculo',disc:'Disco',square:'Cuadrado',none:'Ninguno',notset:'<sin establecer>',armenian:'Numeración armenia',georgian:'Numeración georgiana (an, ban, gan, etc.)',lowerRoman:'Números romanos en minúsculas (i, ii, iii, iv, v, etc.)',upperRoman:'Números romanos en mayúsculas (I, II, III, IV, V, etc.)',lowerAlpha:'Alfabeto en minúsculas (a, b, c, d, e, etc.)',upperAlpha:'Alfabeto en mayúsculas (A, B, C, D, E, etc.)',lowerGreek:'Letras griegas (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal con cero inicial (01, 02, 03, etc.)'},findAndReplace:{title:'Buscar y Reemplazar',find:'Buscar',replace:'Reemplazar',findWhat:'Texto a buscar:',replaceWith:'Reemplazar con:',notFoundMsg:'El texto especificado no ha sido encontrado.',findOptions:'Opciones de búsqueda',matchCase:'Coincidir may/min',matchWord:'Coincidir toda la palabra',matchCyclic:'Buscar en todo el contenido',replaceAll:'Reemplazar Todo',replaceSuccessMsg:'La expresión buscada ha sido reemplazada %1 veces.'},table:{toolbar:'Tabla',title:'Propiedades de Tabla',menu:'Propiedades de Tabla',deleteTable:'Eliminar Tabla',rows:'Filas',columns:'Columnas',border:'Tamaño de Borde',widthPx:'pixeles',widthPc:'porcentaje',widthUnit:'unidad de la anchura',cellSpace:'Esp. e/celdas',cellPad:'Esp. interior',caption:'Título',summary:'Síntesis',headers:'Encabezados',headersNone:'Ninguno',headersColumn:'Primera columna',headersRow:'Primera fila',headersBoth:'Ambas',invalidRows:'El número de filas debe ser un número mayor que 0.',invalidCols:'El número de columnas debe ser un número mayor que 0.',invalidBorder:'El tamaño del borde debe ser un número.',invalidWidth:'La anchura de tabla debe ser un número.',invalidHeight:'La altura de tabla debe ser un número.',invalidCellSpacing:'El espaciado entre celdas debe ser un número.',invalidCellPadding:'El espaciado interior debe ser un número.',cell:{menu:'Celda',insertBefore:'Insertar celda a la izquierda',insertAfter:'Insertar celda a la derecha',deleteCell:'Eliminar Celdas',merge:'Combinar Celdas',mergeRight:'Combinar a la derecha',mergeDown:'Combinar hacia abajo',splitHorizontal:'Dividir la celda horizontalmente',splitVertical:'Dividir la celda verticalmente',title:'Propiedades de celda',cellType:'Tipo de Celda',rowSpan:'Expandir filas',colSpan:'Expandir columnas',wordWrap:'Ajustar al contenido',hAlign:'Alineación Horizontal',vAlign:'Alineación Vertical',alignBaseline:'Linea de base',bgColor:'Color de fondo',borderColor:'Color de borde',data:'Datos',header:'Encabezado',yes:'Sí',no:'No',invalidWidth:'La anchura de celda debe ser un número.',invalidHeight:'La altura de celda debe ser un número.',invalidRowSpan:'La expansión de filas debe ser un número entero.',invalidColSpan:'La expansión de columnas debe ser un número entero.',chooseColor:'Elegir'},row:{menu:'Fila',insertBefore:'Insertar fila en la parte superior',insertAfter:'Insertar fila en la parte inferior',deleteRow:'Eliminar Filas'},column:{menu:'Columna',insertBefore:'Insertar columna a la izquierda',insertAfter:'Insertar columna a la derecha',deleteColumn:'Eliminar Columnas'}},button:{title:'Propiedades de Botón',text:'Texto (Valor)',type:'Tipo',typeBtn:'Boton',typeSbm:'Enviar',typeRst:'Reestablecer'},checkboxAndRadio:{checkboxTitle:'Propiedades de Casilla',radioTitle:'Propiedades de Botón de Radio',value:'Valor',selected:'Seleccionado'},form:{title:'Propiedades de Formulario',menu:'Propiedades de Formulario',action:'Acción',method:'Método',encoding:'Codificación'},select:{title:'Propiedades de Campo de Selección',selectInfo:'Información',opAvail:'Opciones disponibles',value:'Valor',size:'Tamaño',lines:'Lineas',chkMulti:'Permitir múltiple selección',opText:'Texto',opValue:'Valor',btnAdd:'Agregar',btnModify:'Modificar',btnUp:'Subir',btnDown:'Bajar',btnSetValue:'Establecer como predeterminado',btnDelete:'Eliminar'},textarea:{title:'Propiedades de Area de Texto',cols:'Columnas',rows:'Filas'},textfield:{title:'Propiedades de Campo de Texto',name:'Nombre',value:'Valor',charWidth:'Caracteres de ancho',maxChars:'Máximo caracteres',type:'Tipo',typeText:'Texto',typePass:'Contraseña'},hidden:{title:'Propiedades de Campo Oculto',name:'Nombre',value:'Valor'},image:{title:'Propiedades de Imagen',titleButton:'Propiedades de Botón de Imagen',menu:'Propiedades de Imagen',infoTab:'Información de Imagen',btnUpload:'Enviar al Servidor',upload:'Cargar',alt:'Texto Alternativo',lockRatio:'Proporcional',resetSize:'Tamaño Original',border:'Borde',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',alertUrl:'Por favor escriba la URL de la imagen',linkTab:'Vínculo',button2Img:'¿Desea convertir el botón de imagen en una simple imagen?',img2Button:'¿Desea convertir la imagen en un botón de imagen?',urlMissing:'Debe indicar la URL de la imagen.',validateBorder:'El borde debe ser un número.',validateHSpace:'El espaciado horizontal debe ser un número.',validateVSpace:'El espaciado vertical debe ser un número.'},flash:{properties:'Propiedades de Flash',propertiesTab:'Propiedades',title:'Propiedades de Flash',chkPlay:'Autoejecución',chkLoop:'Repetir',chkMenu:'Activar Menú Flash',chkFull:'Permitir pantalla completa',scale:'Escala',scaleAll:'Mostrar todo',scaleNoBorder:'Sin Borde',scaleFit:'Ajustado',access:'Acceso de scripts',accessAlways:'Siempre',accessSameDomain:'Mismo dominio',accessNever:'Nunca',alignAbsBottom:'Abs inferior',alignAbsMiddle:'Abs centro',alignBaseline:'Línea de base',alignTextTop:'Tope del texto',quality:'Calidad',qualityBest:'La mejor',qualityHigh:'Alta',qualityAutoHigh:'Auto Alta',qualityMedium:'Media',qualityAutoLow:'Auto Baja',qualityLow:'Baja',windowModeWindow:'Ventana',windowModeOpaque:'Opaco',windowModeTransparent:'Transparente',windowMode:'WindowMode',flashvars:'Opciones',bgcolor:'Color de Fondo',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',validateSrc:'Por favor escriba el vínculo URL',validateHSpace:'Esp.Horiz debe ser un número.',validateVSpace:'Esp.Vert debe ser un número.'},spellCheck:{toolbar:'Ortografía',title:'Comprobar ortografía',notAvailable:'Lo sentimos pero el servicio no está disponible.',errorLoading:'Error cargando la aplicación del servidor: %s.',notInDic:'No se encuentra en el Diccionario',changeTo:'Cambiar a',btnIgnore:'Ignorar',btnIgnoreAll:'Ignorar Todo',btnReplace:'Reemplazar',btnReplaceAll:'Reemplazar Todo',btnUndo:'Deshacer',noSuggestions:'- No hay sugerencias -',progress:'Control de Ortografía en progreso...',noMispell:'Control finalizado: no se encontraron errores',noChanges:'Control finalizado: no se ha cambiado ninguna palabra',oneChange:'Control finalizado: se ha cambiado una palabra',manyChanges:'Control finalizado: se ha cambiado %1 palabras',ieSpellDownload:'Módulo de Control de Ortografía no instalado.\r\n¿Desea descargarlo ahora?'},smiley:{toolbar:'Emoticonos',title:'Insertar un Emoticon',options:'Opciones de emoticonos'},elementsPath:{eleLabel:'Ruta de los elementos',eleTitle:'%1 elemento'},numberedlist:'Numeración',bulletedlist:'Viñetas',indent:'Aumentar Sangría',outdent:'Disminuir Sangría',justify:{left:'Alinear a Izquierda',center:'Centrar',right:'Alinear a Derecha',block:'Justificado'},blockquote:'Cita',clipboard:{title:'Pegar',cutError:'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).',copyError:'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).',pasteMsg:'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl/Cmd+V</STRONG>);\r\nluego presione <STRONG>Aceptar</STRONG>.',securityMsg:'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.',pasteArea:'Zona de pegado'},pastefromword:{confirmCleanup:'El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?',toolbar:'Pegar desde Word',title:'Pegar desde Word',error:'No ha sido posible limpiar los datos debido a un error interno'},pasteText:{button:'Pegar como Texto Plano',title:'Pegar como Texto Plano'},templates:{button:'Plantillas',title:'Contenido de Plantillas',options:'Opciones de plantillas',insertOption:'Reemplazar el contenido actual',selectPromptMsg:'Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):',emptyListMsg:'(No hay plantillas definidas)'},showBlocks:'Mostrar bloques',stylesCombo:{label:'Estilo',panelTitle:'Estilos para formatear',panelTitle1:'Estilos de párrafo',panelTitle2:'Estilos de carácter',panelTitle3:'Estilos de objeto'},format:{label:'Formato',panelTitle:'Formato',tag_p:'Normal',tag_pre:'Con formato',tag_address:'Dirección',tag_h1:'Encabezado 1',tag_h2:'Encabezado 2',tag_h3:'Encabezado 3',tag_h4:'Encabezado 4',tag_h5:'Encabezado 5',tag_h6:'Encabezado 6',tag_div:'Normal (DIV)'},div:{title:'Crear contenedor DIV',toolbar:'Crear contenedor DIV',cssClassInputLabel:'Clase de hoja de estilos',styleSelectLabel:'Estilo',IdInputLabel:'Id',languageCodeInputLabel:' Codigo de idioma',inlineStyleInputLabel:'Estilo',advisoryTitleInputLabel:'Título',langDirLabel:'Orientación',langDirLTRLabel:'Izquierda a Derecha (LTR)',langDirRTLLabel:'Derecha a Izquierda (RTL)',edit:'Editar Div',remove:'Quitar Div'},iframe:{title:'Propiedades de iframe',toolbar:'IFrame',noUrl:'Por favor, escriba la dirección del iframe',scrolling:'Activar barras de desplazamiento',border:'Mostrar borde del marco'},font:{label:'Fuente',voiceLabel:'Fuente',panelTitle:'Fuente'},fontSize:{label:'Tamaño',voiceLabel:'Tamaño de fuente',panelTitle:'Tamaño'},colorButton:{textColorTitle:'Color de Texto',bgColorTitle:'Color de Fondo',panelTitle:'Colores',auto:'Automático',more:'Más Colores...'},colors:{'000':'Negro',800000:'Marrón oscuro','8B4513':'Marrón tierra','2F4F4F':'Pizarra Oscuro','008080':'Azul verdoso','000080':'Azul marino','4B0082':'Añil',696969:'Gris oscuro',B22222:'Ladrillo',A52A2A:'Marrón',DAA520:'Oro oscuro','006400':'Verde oscuro','40E0D0':'Turquesa','0000CD':'Azul medio-oscuro',800080:'Púrpura',808080:'Gris',F00:'Rojo',FF8C00:'Naranja oscuro',FFD700:'Oro','008000':'Verde','0FF':'Cian','00F':'Azul',EE82EE:'Violeta',A9A9A9:'Gris medio',FFA07A:'Salmón claro',FFA500:'Naranja',FFFF00:'Amarillo','00FF00':'Lima',AFEEEE:'Turquesa claro',ADD8E6:'Azul claro',DDA0DD:'Violeta claro',D3D3D3:'Gris claro',FFF0F5:'Lavanda rojizo',FAEBD7:'Blanco antiguo',FFFFE0:'Amarillo claro',F0FFF0:'Miel',F0FFFF:'Azul celeste',F0F8FF:'Azul pálido',E6E6FA:'Lavanda',FFF:'Blanco'},scayt:{title:'Comprobar Ortografía Mientras Escribe',opera_title:'No soportado en Opera',enable:'Activar Corrector',disable:'Desactivar Corrector',about:'Acerca de Corrector',toggle:'Cambiar Corrector',options:'Opciones',langs:'Idiomas',moreSuggestions:'Más sugerencias',ignore:'Ignorar',ignoreAll:'Ignorar Todas',addWord:'Añadir palabra',emptyDic:'El nombre del diccionario no puede estar en blanco.',optionsTab:'Opciones',allCaps:'Omitir palabras en MAYÚSCULAS',ignoreDomainNames:'Omitir nombres de dominio',mixedCase:'Ignorar palabras con combinación de mayúsculas y minúsculas',mixedWithDigits:'Omitir palabras con números',languagesTab:'Idiomas',dictionariesTab:'Diccionarios',dic_field_name:'Nombre del diccionario',dic_create:'Crear',dic_restore:'Recuperar',dic_delete:'Borrar',dic_rename:'Renombrar',dic_info:'Inicialmente el Diccionario de usuario se guarda en una Cookie. Sin embargo, las cookies están limitadas en tamaño. Cuando el diccionario crece a un punto en el que no se puede guardar en una Cookie, el diccionario puede ser almacenado en nuestro servidor. Para almacenar su diccionario personalizado en nuestro servidor debe especificar un nombre para su diccionario. Si ya ha guardado un diccionaro, por favor, escriba su nombre y pulse el botón Recuperar',aboutTab:'Acerca de'},about:{title:'Acerca de CKEditor',dlgTitle:'Acerca de CKEditor',help:'Lea la $1 para resolver sus dudas.',userGuide:'Guía de usuario de CKEditor',moreInfo:'Para información de licencia, por favor visite nuestro sitio web:',copy:'Copyright © $1. Todos los derechos reservados.'},maximize:'Maximizar',minimize:'Minimizar',fakeobjects:{anchor:'Ancla',flash:'Animación flash',iframe:'IFrame',hiddenfield:'Campo oculto',unknown:'Objeto desconocido'},resize:'Arrastre para redimensionar',colordialog:{title:'Elegir color',options:'Opciones de colores',highlight:'Muestra',selected:'Elegido',clear:'Borrar'},toolbarCollapse:'Contraer barra de herramientas',toolbarExpand:'Expandir barra de herramientas',toolbarGroups:{document:'Documento',clipboard:'Portapapeles/Deshacer',editing:'Edición',forms:'Formularios',basicstyles:'Estilos básicos',paragraph:'Párrafo',links:'Enlaces',insert:'Insertar',styles:'Estilos',colors:'Colores',tools:'Herramientas'},bidi:{ltr:'Dirección del texto de izquierda a derecha',rtl:'Dirección del texto de derecha a izquierda'},docprops:{label:'Propiedades del documento',title:'Propiedades del documento',design:'Diseño',meta:'Meta Tags',chooseColor:'Elegir',other:'Otro...',docTitle:'Título de página',charset:'Codificación de caracteres',charsetOther:'Otra codificación de caracteres',charsetASCII:'ASCII',charsetCE:'Centro Europeo',charsetCT:'Chino Tradicional (Big5)',charsetCR:'Ruso',charsetGR:'Griego',charsetJP:'Japonés',charsetKR:'Koreano',charsetTR:'Turco',charsetUN:'Unicode (UTF-8)',charsetWE:'Europeo occidental',docType:'Tipo de documento',docTypeOther:'Otro tipo de documento',xhtmlDec:'Incluir declaración XHTML',bgColor:'Color de fondo',bgImage:'Imagen de fondo',bgFixed:'Fondo fijo (no se desplaza)',txtColor:'Color del texto',margin:'Márgenes',marginTop:'Superior',marginLeft:'Izquierdo',marginRight:'Derecho',marginBottom:'Inferior',metaKeywords:'Palabras claves del documento separadas por coma (meta keywords)',metaDescription:'Descripción del documento',metaAuthor:'Autor',metaCopyright:'Copyright',previewHtml:'<p>Este es un <strong>texto de ejemplo</strong>. Usted está usando <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/et.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/et.js
new file mode 100755
index 0000000..4369767
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/et.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.et={dir:'ltr',editorTitle:'Vormindatud teksti redaktor %1',editorHelp:'Abi saamiseks vajuta ALT 0',toolbars:'Redaktori tööriistaribad',editor:'Rikkalik tekstiredaktor',source:'Lähtekood',newPage:'Uus leht',save:'Salvestamine',preview:'Eelvaade',cut:'Lõika',copy:'Kopeeri',paste:'Aseta',print:'Printimine',underline:'Allajoonitud',bold:'Paks',italic:'Kursiiv',selectAll:'Kõige valimine',removeFormat:'Vormingu eemaldamine',strike:'Läbijoonitud',subscript:'Allindeks',superscript:'Ülaindeks',horizontalrule:'Horisontaaljoone sisestamine',pagebreak:'Lehevahetuskoha sisestamine',pagebreakAlt:'Lehevahetuskoht',unlink:'Lingi eemaldamine',undo:'Tagasivõtmine',redo:'Toimingu kordamine',common:{browseServer:'Serveri sirvimine',url:'URL',protocol:'Protokoll',upload:'Laadi üles',uploadSubmit:'Saada serverisse',image:'Pilt',flash:'Flash',form:'Vorm',checkbox:'Märkeruut',radio:'Raadionupp',textField:'Tekstilahter',textarea:'Tekstiala',hiddenField:'Varjatud lahter',button:'Nupp',select:'Valiklahter',imageButton:'Piltnupp',notSet:'<määramata>',id:'ID',name:'Nimi',langDir:'Keele suund',langDirLtr:'Vasakult paremale (LTR)',langDirRtl:'Paremalt vasakule (RTL)',langCode:'Keele kood',longDescr:'Pikk kirjeldus URL',cssClass:'Stiilistiku klassid',advisoryTitle:'Soovituslik pealkiri',cssStyle:'Laad',ok:'OK',cancel:'Loobu',close:'Sulge',preview:'Eelvaade',generalTab:'Üldine',advancedTab:'Täpsemalt',validateNumberFailed:'See väärtus pole number.',confirmNewPage:'Kõik salvestamata muudatused lähevad kaotsi. Kas oled kindel, et tahad laadida uue lehe?',confirmCancel:'Mõned valikud on muudetud. Kas oled kindel, et tahad dialoogi sulgeda?',options:'Valikud',target:'Sihtkoht',targetNew:'Uus aken (_blank)',targetTop:'Kõige ülemine aken (_top)',targetSelf:'Sama aken (_self)',targetParent:'Vanemaken (_parent)',langDirLTR:'Vasakult paremale (LTR)',langDirRTL:'Paremalt vasakule (RTL)',styles:'Stiili',cssClasses:'Stiililehe klassid',width:'Laius',height:'Kõrgus',align:'Joondus',alignLeft:'Vasak',alignRight:'Paremale',alignCenter:'Kesk',alignTop:'Üles',alignMiddle:'Keskele',alignBottom:'Alla',invalidHeight:'Kõrgus peab olema number.',invalidWidth:'Laius peab olema number.',invalidCssLength:'"%1" välja jaoks määratud väärtus peab olema positiivne täisarv CSS ühikuga (px, %, in, cm, mm, em, ex, pt või pc) või ilma.',invalidHtmlLength:'"%1" välja jaoks määratud väärtus peab olema positiivne täisarv HTML ühikuga (px või %) või ilma.',invalidInlineStyle:'Reasisese stiili määrangud peavad koosnema paarisväärtustest (tuples), mis on semikoolonitega eraldatult järgnevas vormingus: "nimi : väärtus".',cssLengthTooltip:'Sisesta väärtus pikslites või number koos sobiva CSS-i ühikuga (px, %, in, cm, mm, em, ex, pt või pc).',unavailable:'%1<span class="cke_accessibility">, pole saadaval</span>'},contextmenu:{options:'Kontekstimenüü valikud'},specialChar:{toolbar:'Erimärgi sisestamine',title:'Erimärgi valimine',options:'Erimärkide valikud'},link:{toolbar:'Lingi lisamine/muutmine',other:'<muu>',menu:'Muuda linki',title:'Link',info:'Lingi info',target:'Sihtkoht',upload:'Lae üles',advanced:'Täpsemalt',type:'Lingi liik',toUrl:'URL',toAnchor:'Ankur sellel lehel',toEmail:'E-post',targetFrame:'<raam>',targetPopup:'<hüpikaken>',targetFrameName:'Sihtmärk raami nimi',targetPopupName:'Hüpikakna nimi',popupFeatures:'Hüpikakna omadused',popupResizable:'Suurust saab muuta',popupStatusBar:'Olekuriba',popupLocationBar:'Aadressiriba',popupToolbar:'Tööriistariba',popupMenuBar:'Menüüriba',popupFullScreen:'Täisekraan (IE)',popupScrollBars:'Kerimisribad',popupDependent:'Sõltuv (Netscape)',popupLeft:'Vasak asukoht',popupTop:'Ülemine asukoht',id:'ID',langDir:'Keele suund',langDirLTR:'Vasakult paremale (LTR)',langDirRTL:'Paremalt vasakule (RTL)',acccessKey:'Juurdepääsu võti',name:'Nimi',langCode:'Keele suund',tabIndex:'Tab indeks',advisoryTitle:'Juhendav tiitel',advisoryContentType:'Juhendava sisu tüüp',cssClasses:'Stiilistiku klassid',charset:'Lingitud ressursi märgistik',styles:'Laad',rel:'Suhe',selectAnchor:'Vali ankur',anchorName:'Ankru nime järgi',anchorId:'Elemendi id järgi',emailAddress:'E-posti aadress',emailSubject:'Sõnumi teema',emailBody:'Sõnumi tekst',noAnchors:'(Selles dokumendis pole ankruid)',noUrl:'Palun kirjuta lingi URL',noEmail:'Palun kirjuta e-posti aadress'},anchor:{toolbar:'Ankru sisestamine/muutmine',menu:'Ankru omadused',title:'Ankru omadused',name:'Ankru nimi',errorName:'Palun sisesta ankru nimi',remove:'Eemalda ankur'},list:{numberedTitle:'Numberloendi omadused',bulletedTitle:'Punktloendi omadused',type:'Liik',start:'Algus',validateStartNumber:'Loendi algusnumber peab olema täisarv.',circle:'Ring',disc:'Täpp',square:'Ruut',none:'Puudub',notset:'<pole määratud>',armenian:'Armeenia numbrid',georgian:'Gruusia numbrid (an, ban, gan, jne)',lowerRoman:'Väiksed rooma numbrid (i, ii, iii, iv, v, jne)',upperRoman:'Suured rooma numbrid (I, II, III, IV, V, jne)',lowerAlpha:'Väiketähed (a, b, c, d, e, jne)',upperAlpha:'Suurtähed (A, B, C, D, E, jne)',lowerGreek:'Kreeka väiketähed (alpha, beta, gamma, jne)',decimal:'Numbrid (1, 2, 3, jne)',decimalLeadingZero:'Numbrid algusnulliga (01, 02, 03, jne)'},findAndReplace:{title:'Otsimine ja asendamine',find:'Otsi',replace:'Asenda',findWhat:'Otsitav:',replaceWith:'Asendus:',notFoundMsg:'Otsitud teksti ei leitud.',findOptions:'Otsingu valikud',matchCase:'Suur- ja väiketähtede eristamine',matchWord:'Ainult terved sõnad',matchCyclic:'Jätkatakse algusest',replaceAll:'Asenda kõik',replaceSuccessMsg:'%1 vastet asendati.'},table:{toolbar:'Tabel',title:'Tabeli omadused',menu:'Tabeli omadused',deleteTable:'Kustuta tabel',rows:'Read',columns:'Veerud',border:'Joone suurus',widthPx:'pikslit',widthPc:'protsenti',widthUnit:'laiuse ühik',cellSpace:'Lahtri vahe',cellPad:'Lahtri täidis',caption:'Tabeli tiitel',summary:'Kokkuvõte',headers:'Päised',headersNone:'Puudub',headersColumn:'Esimene tulp',headersRow:'Esimene rida',headersBoth:'Mõlemad',invalidRows:'Ridade arv peab olema nullist suurem.',invalidCols:'Tulpade arv peab olema nullist suurem.',invalidBorder:'Äärise suurus peab olema number.',invalidWidth:'Tabeli laius peab olema number.',invalidHeight:'Tabeli kõrgus peab olema number.',invalidCellSpacing:'Lahtrite vahe peab olema positiivne arv.',invalidCellPadding:'Lahtrite polsterdus (padding) peab olema positiivne arv.',cell:{menu:'Lahter',insertBefore:'Sisesta lahter enne',insertAfter:'Sisesta lahter peale',deleteCell:'Eemalda lahtrid',merge:'Ühenda lahtrid',mergeRight:'Ühenda paremale',mergeDown:'Ühenda alla',splitHorizontal:'Poolita lahter horisontaalselt',splitVertical:'Poolita lahter vertikaalselt',title:'Lahtri omadused',cellType:'Lahtri liik',rowSpan:'Ridade vahe',colSpan:'Tulpade vahe',wordWrap:'Sõnade murdmine',hAlign:'Horisontaalne joondus',vAlign:'Vertikaalne joondus',alignBaseline:'Baasjoon',bgColor:'Tausta värv',borderColor:'Äärise värv',data:'Andmed',header:'Päis',yes:'Jah',no:'Ei',invalidWidth:'Lahtri laius peab olema number.',invalidHeight:'Lahtri kõrgus peab olema number.',invalidRowSpan:'Ridade vahe peab olema täisarv.',invalidColSpan:'Tulpade vahe peab olema täisarv.',chooseColor:'Vali'},row:{menu:'Rida',insertBefore:'Sisesta rida enne',insertAfter:'Sisesta rida peale',deleteRow:'Eemalda read'},column:{menu:'Veerg',insertBefore:'Sisesta veerg enne',insertAfter:'Sisesta veerg peale',deleteColumn:'Eemalda veerud'}},button:{title:'Nupu omadused',text:'Tekst (väärtus)',type:'Liik',typeBtn:'Nupp',typeSbm:'Saada',typeRst:'Lähtesta'},checkboxAndRadio:{checkboxTitle:'Märkeruudu omadused',radioTitle:'Raadionupu omadused',value:'Väärtus',selected:'Märgitud'},form:{title:'Vormi omadused',menu:'Vormi omadused',action:'Toiming',method:'Meetod',encoding:'Kodeering'},select:{title:'Valiklahtri omadused',selectInfo:'Info',opAvail:'Võimalikud valikud:',value:'Väärtus',size:'Suurus',lines:'ridu',chkMulti:'Võimalik mitu valikut',opText:'Tekst',opValue:'Väärtus',btnAdd:'Lisa',btnModify:'Muuda',btnUp:'Üles',btnDown:'Alla',btnSetValue:'Määra vaikimisi',btnDelete:'Kustuta'},textarea:{title:'Tekstiala omadused',cols:'Veerge',rows:'Ridu'},textfield:{title:'Tekstilahtri omadused',name:'Nimi',value:'Väärtus',charWidth:'Laius (tähemärkides)',maxChars:'Maksimaalselt tähemärke',type:'Liik',typeText:'Tekst',typePass:'Parool'},hidden:{title:'Varjatud lahtri omadused',name:'Nimi',value:'Väärtus'},image:{title:'Pildi omadused',titleButton:'Piltnupu omadused',menu:'Pildi omadused',infoTab:'Pildi info',btnUpload:'Saada serverisse',upload:'Lae üles',alt:'Alternatiivne tekst',lockRatio:'Lukusta kuvasuhe',resetSize:'Lähtesta suurus',border:'Joon',hSpace:'H. vaheruum',vSpace:'V. vaheruum',alertUrl:'Palun kirjuta pildi URL',linkTab:'Link',button2Img:'Kas tahad teisendada valitud pildiga nupu tavaliseks pildiks?',img2Button:'Kas tahad teisendada valitud tavalise pildi pildiga nupuks?',urlMissing:'Pildi lähte-URL on puudu.',validateBorder:'Äärise laius peab olema täisarv.',validateHSpace:'Horisontaalne vaheruum peab olema täisarv.',validateVSpace:'Vertikaalne vaheruum peab olema täisarv.'},flash:{properties:'Flashi omadused',propertiesTab:'Omadused',title:'Flashi omadused',chkPlay:'Automaatne start ',chkLoop:'Korduv',chkMenu:'Flashi menüü lubatud',chkFull:'Täisekraan lubatud',scale:'Mastaap',scaleAll:'Näidatakse kõike',scaleNoBorder:'Äärist ei ole',scaleFit:'Täpne sobivus',access:'Skriptide ligipääs',accessAlways:'Kõigile',accessSameDomain:'Samalt domeenilt',accessNever:'Mitte ühelegi',alignAbsBottom:'Abs alla',alignAbsMiddle:'Abs keskele',alignBaseline:'Baasjoonele',alignTextTop:'Tekstist üles',quality:'Kvaliteet',qualityBest:'Parim',qualityHigh:'Kõrge',qualityAutoHigh:'Automaatne kõrge',qualityMedium:'Keskmine',qualityAutoLow:'Automaatne madal',qualityLow:'Madal',windowModeWindow:'Aken',windowModeOpaque:'Läbipaistmatu',windowModeTransparent:'Läbipaistev',windowMode:'Akna režiim',flashvars:'Flashi muutujad',bgcolor:'Tausta värv',hSpace:'H. vaheruum',vSpace:'V. vaheruum',validateSrc:'Palun kirjuta lingi URL',validateHSpace:'H. vaheruum peab olema number.',validateVSpace:'V. vaheruum peab olema number.'},spellCheck:{toolbar:'Õigekirjakontroll',title:'Õigekirjakontroll',notAvailable:'Kahjuks ei ole teenus praegu saadaval.',errorLoading:'Viga rakenduse teenushosti laadimisel: %s.',notInDic:'Puudub sõnastikust',changeTo:'Muuda',btnIgnore:'Ignoreeri',btnIgnoreAll:'Ignoreeri kõiki',btnReplace:'Asenda',btnReplaceAll:'Asenda kõik',btnUndo:'Võta tagasi',noSuggestions:'- Soovitused puuduvad -',progress:'Toimub õigekirja kontroll...',noMispell:'Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud',noChanges:'Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud',oneChange:'Õigekirja kontroll sooritatud: üks sõna muudeti',manyChanges:'Õigekirja kontroll sooritatud: %1 sõna muudetud',ieSpellDownload:'Õigekirja kontrollija ei ole paigaldatud. Soovid sa selle alla laadida?'},smiley:{toolbar:'Emotikon',title:'Sisesta emotikon',options:'Emotikonide valikud'},elementsPath:{eleLabel:'Elementide asukoht',eleTitle:'%1 element'},numberedlist:'Numberloend',bulletedlist:'Punktloend',indent:'Taande suurendamine',outdent:'Taande vähendamine',justify:{left:'Vasakjoondus',center:'Keskjoondus',right:'Paremjoondus',block:'Rööpjoondus'},blockquote:'Blokktsitaat',clipboard:{title:'Asetamine',cutError:'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).',copyError:'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).',pasteMsg:'Palun aseta tekst järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl/Cmd+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.',securityMsg:'Sinu veebisirvija turvaseadete tõttu ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead asetama need uuesti siia aknasse.',pasteArea:'Asetamise ala'},pastefromword:{confirmCleanup:'Tekst, mida tahad asetada näib pärinevat Wordist. Kas tahad selle enne asetamist puhastada?',toolbar:'Asetamine Wordist',title:'Asetamine Wordist',error:'Asetatud andmete puhastamine ei olnud sisemise vea tõttu võimalik'},pasteText:{button:'Asetamine tavalise tekstina',title:'Asetamine tavalise tekstina'},templates:{button:'Mall',title:'Sisumallid',options:'Malli valikud',insertOption:'Praegune sisu asendatakse',selectPromptMsg:'Palun vali mall, mis avada redaktoris<br />(praegune sisu läheb kaotsi):',emptyListMsg:'(Ühtegi malli ei ole defineeritud)'},showBlocks:'Blokkide näitamine',stylesCombo:{label:'Stiil',panelTitle:'Vormindusstiilid',panelTitle1:'Blokkstiilid',panelTitle2:'Reasisesed stiilid',panelTitle3:'Objektistiilid'},format:{label:'Vorming',panelTitle:'Vorming',tag_p:'Tavaline',tag_pre:'Vormindatud',tag_address:'Aadress',tag_h1:'Pealkiri 1',tag_h2:'Pealkiri 2',tag_h3:'Pealkiri 3',tag_h4:'Pealkiri 4',tag_h5:'Pealkiri 5',tag_h6:'Pealkiri 6',tag_div:'Tavaline (DIV)'},div:{title:'Div-konteineri loomine',toolbar:'Div-konteineri loomine',cssClassInputLabel:'Stiililehe klassid',styleSelectLabel:'Stiil',IdInputLabel:'ID',languageCodeInputLabel:' Keelekood',inlineStyleInputLabel:'Reasisene stiil',advisoryTitleInputLabel:'Soovitatav pealkiri',langDirLabel:'Keele suund',langDirLTRLabel:'Vasakult paremale (LTR)',langDirRTLLabel:'Paremalt vasakule (RTL)',edit:'Muuda Div',remove:'Eemalda Div'},iframe:{title:'IFrame omadused',toolbar:'IFrame',noUrl:'Vali iframe URLi liik',scrolling:'Kerimisribade lubamine',border:'Raami äärise näitamine'},font:{label:'Kiri',voiceLabel:'Kiri',panelTitle:'Kiri'},fontSize:{label:'Suurus',voiceLabel:'Kirja suurus',panelTitle:'Suurus'},colorButton:{textColorTitle:'Teksti värv',bgColorTitle:'Tausta värv',panelTitle:'Värvid',auto:'Automaatne',more:'Rohkem värve...'},colors:{'000':'Must',800000:'Kastanpruun','8B4513':'Sadulapruun','2F4F4F':'Tume paehall','008080':'Sinakasroheline','000080':'Meresinine','4B0082':'Indigosinine',696969:'Tumehall',B22222:'Šamottkivi',A52A2A:'Pruun',DAA520:'Kuldkollane','006400':'Tumeroheline','40E0D0':'Türkiissinine','0000CD':'Keskmine sinine',800080:'Lilla',808080:'Hall',F00:'Punanae',FF8C00:'Tumeoranž',FFD700:'Kuldne','008000':'Roheline','0FF':'Tsüaniidsinine','00F':'Sinine',EE82EE:'Violetne',A9A9A9:'Tuhm hall',FFA07A:'Hele lõhe',FFA500:'Oranž',FFFF00:'Kollane','00FF00':'Lubja hall',AFEEEE:'Kahvatu türkiis',ADD8E6:'Helesinine',DDA0DD:'Ploomililla',D3D3D3:'Helehall',FFF0F5:'Lavendlipunane',FAEBD7:'Antiikvalge',FFFFE0:'Helekollane',F0FFF0:'Meloniroheline',F0FFFF:'Taevasinine',F0F8FF:'Beebisinine',E6E6FA:'Lavendel',FFF:'Valge'},scayt:{title:'Õigekirjakontroll kirjutamise ajal',opera_title:'Operas pole toetatud',enable:'SCAYT lubatud',disable:'SCAYT keelatud',about:'SCAYT-ist lähemalt',toggle:'SCAYT sisse/välja lülitamine',options:'Valikud',langs:'Keeled',moreSuggestions:'Veel soovitusi',ignore:'Eira',ignoreAll:'Eira kõiki',addWord:'Lisa sõna',emptyDic:'Sõnaraamatu nimi ei tohi olla tühi.',optionsTab:'Valikud',allCaps:'Läbivate suurtähtedega sõnade eiramine',ignoreDomainNames:'Domeeninimede eiramine',mixedCase:'Tavapäratu tõstuga sõnade eiramine',mixedWithDigits:'Numbreid sisaldavate sõnade eiramine',languagesTab:'Keeled',dictionariesTab:'Sõnaraamatud',dic_field_name:'Sõnaraamatu nimi',dic_create:'Loo',dic_restore:'Taasta',dic_delete:'Kustuta',dic_rename:'Nimeta ümber',dic_info:'Alguses säilitatakse kasutaja sõnaraamatut küpsises. Küpsise suurus on piiratud. Pärast sõnaraamatu kasvamist nii suureks, et see küpsisesse ei mahu, võib sõnaraamatut hoida meie serveris. Oma isikliku sõnaraamatu hoidmiseks meie serveris pead andma sellele nime. Kui sa juba oled sõnaraamatu salvestanud, sisesta selle nimi ja klõpsa taastamise nupule.',aboutTab:'Lähemalt'},about:{title:'CKEditorist',dlgTitle:'CKEditorist',help:'Abi jaoks vaata $1.',userGuide:'CKEditori kasutusjuhendit',moreInfo:'Litsentsi andmed leiab meie veebilehelt:',copy:'Copyright © $1. Kõik õigused kaitstud.'},maximize:'Maksimeerimine',minimize:'Minimeerimine',fakeobjects:{anchor:'Ankur',flash:'Flashi animatsioon',iframe:'IFrame',hiddenfield:'Varjatud väli',unknown:'Tundmatu objekt'},resize:'Suuruse muutmiseks lohista',colordialog:{title:'Värvi valimine',options:'Värvi valikud',highlight:'Näidis',selected:'Valitud värv',clear:'Eemalda'},toolbarCollapse:'Tööriistariba peitmine',toolbarExpand:'Tööriistariba näitamine',toolbarGroups:{document:'Dokument',clipboard:'Lõikelaud/tagasivõtmine',editing:'Muutmine',forms:'Vormid',basicstyles:'Põhistiilid',paragraph:'Lõik',links:'Lingid',insert:'Sisesta',styles:'Stiilid',colors:'Värvid',tools:'Tööriistad'},bidi:{ltr:'Teksti suund vasakult paremale',rtl:'Teksti suund paremalt vasakule'},docprops:{label:'Dokumendi omadused',title:'Dokumendi omadused',design:'Disain',meta:'Meta andmed',chooseColor:'Vali',other:'<muu>',docTitle:'Lehekülje tiitel',charset:'Märgistiku kodeering',charsetOther:'Ülejäänud märgistike kodeeringud',charsetASCII:'ASCII',charsetCE:'Kesk-Euroopa',charsetCT:'Hiina traditsiooniline (Big5)',charsetCR:'Kirillisa',charsetGR:'Kreeka',charsetJP:'Jaapani',charsetKR:'Korea',charsetTR:'Türgi',charsetUN:'Unicode (UTF-8)',charsetWE:'Lääne-Euroopa',docType:'Dokumendi tüüppäis',docTypeOther:'Teised dokumendi tüüppäised',xhtmlDec:'Arva kaasa XHTML deklaratsioonid',bgColor:'Taustavärv',bgImage:'Taustapildi URL',bgFixed:'Mittekeritav tagataust',txtColor:'Teksti värv',margin:'Lehekülje äärised',marginTop:'Ülaserv',marginLeft:'Vasakserv',marginRight:'Paremserv',marginBottom:'Alaserv',metaKeywords:'Dokumendi võtmesõnad (eraldatud komadega)',metaDescription:'Dokumendi kirjeldus',metaAuthor:'Autor',metaCopyright:'Autoriõigus',previewHtml:'<p>See on <strong>näidistekst</strong>. Sa kasutad <a href="javascript:void(0)">CKEditori</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/eu.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/eu.js
new file mode 100755
index 0000000..5826bcf
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/eu.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.eu={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'HTML Iturburua',newPage:'Orrialde Berria',save:'Gorde',preview:'Aurrebista',cut:'Ebaki',copy:'Kopiatu',paste:'Itsatsi',print:'Inprimatu',underline:'Azpimarratu',bold:'Lodia',italic:'Etzana',selectAll:'Hautatu dena',removeFormat:'Kendu Formatua',strike:'Marratua',subscript:'Azpi-indize',superscript:'Goi-indize',horizontalrule:'Txertatu Marra Horizontala',pagebreak:'Txertatu Orrialde-jauzia',pagebreakAlt:'Page Break',unlink:'Kendu Esteka',undo:'Desegin',redo:'Berregin',common:{browseServer:'Zerbitzaria arakatu',url:'URL',protocol:'Protokoloa',upload:'Gora kargatu',uploadSubmit:'Zerbitzarira bidalia',image:'Irudia',flash:'Flasha',form:'Formularioa',checkbox:'Kontrol-laukia',radio:'Aukera-botoia',textField:'Testu Eremua',textarea:'Testu-area',hiddenField:'Ezkutuko Eremua',button:'Botoia',select:'Hautespen Eremua',imageButton:'Irudi Botoia',notSet:'<Ezarri gabe>',id:'Id',name:'Izena',langDir:'Hizkuntzaren Norabidea',langDirLtr:'Ezkerretik Eskumara(LTR)',langDirRtl:'Eskumatik Ezkerrera (RTL)',langCode:'Hizkuntza Kodea',longDescr:'URL Deskribapen Luzea',cssClass:'Estilo-orriko Klaseak',advisoryTitle:'Izenburua',cssStyle:'Estiloa',ok:'Ados',cancel:'Utzi',close:'Close',preview:'Preview',generalTab:'Orokorra',advancedTab:'Aurreratua',validateNumberFailed:'Balio hau ez da zenbaki bat.',confirmNewPage:'Eduki honetan gorde gabe dauden aldaketak galduko dira. Ziur zaude orri berri bat kargatu nahi duzula?',confirmCancel:'Aukera batzuk aldatu egin dira. Ziur zaude elkarrizketa-koadroa itxi nahi duzula?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Zabalera',height:'Altuera',align:'Lerrokatu',alignLeft:'Ezkerrera',alignRight:'Eskuman',alignCenter:'Erdian',alignTop:'Goian',alignMiddle:'Erdian',alignBottom:'Behean',invalidHeight:'Altuera zenbaki bat izan behar da.',invalidWidth:'Zabalera zenbaki bat izan behar da.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, erabilezina</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Txertatu Karaktere Berezia',title:'Karaktere Berezia Aukeratu',options:'Special Character Options'},link:{toolbar:'Txertatu/Editatu Esteka',other:'<other>',menu:'Aldatu Esteka',title:'Esteka',info:'Estekaren Informazioa',target:'Target (Helburua)',upload:'Gora kargatu',advanced:'Aurreratua',type:'Esteka Mota',toUrl:'URL',toAnchor:'Aingura orrialde honetan',toEmail:'ePosta',targetFrame:'<marko>',targetPopup:'<popup leihoa>',targetFrameName:'Marko Helburuaren Izena',targetPopupName:'Popup Leihoaren Izena',popupFeatures:'Popup Leihoaren Ezaugarriak',popupResizable:'Tamaina Aldakorra',popupStatusBar:'Egoera Barra',popupLocationBar:'Kokaleku Barra',popupToolbar:'Tresna Barra',popupMenuBar:'Menu Barra',popupFullScreen:'Pantaila Osoa (IE)',popupScrollBars:'Korritze Barrak',popupDependent:'Menpekoa (Netscape)',popupLeft:'Ezkerreko Posizioa',popupTop:'Goiko Posizioa',id:'Id',langDir:'Hizkuntzaren Norabidea',langDirLTR:'Ezkerretik Eskumara(LTR)',langDirRTL:'Eskumatik Ezkerrera (RTL)',acccessKey:'Sarbide-gakoa',name:'Izena',langCode:'Hizkuntzaren Norabidea',tabIndex:'Tabulazio Indizea',advisoryTitle:'Izenburua',advisoryContentType:'Eduki Mota (Content Type)',cssClasses:'Estilo-orriko Klaseak',charset:'Estekatutako Karaktere Multzoa',styles:'Estiloa',rel:'Relationship',selectAnchor:'Aingura bat hautatu',anchorName:'Aingura izenagatik',anchorId:'Elementuaren ID-gatik',emailAddress:'ePosta Helbidea',emailSubject:'Mezuaren Gaia',emailBody:'Mezuaren Gorputza',noAnchors:'(Ez daude aingurak eskuragarri dokumentuan)',noUrl:'Mesedez URL esteka idatzi',noEmail:'Mesedez ePosta helbidea idatzi'},anchor:{toolbar:'Aingura',menu:'Ainguraren Ezaugarriak',title:'Ainguraren Ezaugarriak',name:'Ainguraren Izena',errorName:'Idatzi ainguraren izena',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Bilatu eta Ordeztu',find:'Bilatu',replace:'Ordezkatu',findWhat:'Zer bilatu:',replaceWith:'Zerekin ordeztu:',notFoundMsg:'Idatzitako testua ez da topatu.',findOptions:'Find Options',matchCase:'Maiuskula/minuskula',matchWord:'Esaldi osoa bilatu',matchCyclic:'Bilaketa ziklikoa',replaceAll:'Ordeztu Guztiak',replaceSuccessMsg:'Zenbat aldiz ordeztua: %1'},table:{toolbar:'Taula',title:'Taularen Ezaugarriak',menu:'Taularen Ezaugarriak',deleteTable:'Ezabatu Taula',rows:'Lerroak',columns:'Zutabeak',border:'Ertzaren Zabalera',widthPx:'pixel',widthPc:'ehuneko',widthUnit:'width unit',cellSpace:'Gelaxka arteko tartea',cellPad:'Gelaxken betegarria',caption:'Epigrafea',summary:'Laburpena',headers:'Goiburuak',headersNone:'Bat ere ez',headersColumn:'Lehen zutabea',headersRow:'Lehen lerroa',headersBoth:'Biak',invalidRows:'Lerro kopurua 0 baino handiagoa den zenbakia izan behar da.',invalidCols:'Zutabe kopurua 0 baino handiagoa den zenbakia izan behar da.',invalidBorder:'Ertzaren tamaina zenbaki bat izan behar da.',invalidWidth:'Taularen zabalera zenbaki bat izan behar da.',invalidHeight:'Taularen altuera zenbaki bat izan behar da.',invalidCellSpacing:'Gelaxka arteko tartea zenbaki bat izan behar da.',invalidCellPadding:'Gelaxken betegarria zenbaki bat izan behar da.',cell:{menu:'Gelaxka',insertBefore:'Txertatu Gelaxka Aurretik',insertAfter:'Txertatu Gelaxka Ostean',deleteCell:'Kendu Gelaxkak',merge:'Batu Gelaxkak',mergeRight:'Elkartu Eskumara',mergeDown:'Elkartu Behera',splitHorizontal:'Banatu Gelaxkak Horizontalki',splitVertical:'Banatu Gelaxkak Bertikalki',title:'Gelaxken Ezaugarriak',cellType:'Gelaxka Mota',rowSpan:'Hedatutako Lerroak',colSpan:'Hedatutako Zutabeak',wordWrap:'Itzulbira',hAlign:'Lerrokatze Horizontala',vAlign:'Lerrokatze Bertikala',alignBaseline:'Oinarri-lerroan',bgColor:'Fondoaren Kolorea',borderColor:'Ertzaren Kolorea',data:'Data',header:'Goiburua',yes:'Bai',no:'Ez',invalidWidth:'Gelaxkaren zabalera zenbaki bat izan behar da.',invalidHeight:'Gelaxkaren altuera zenbaki bat izan behar da.',invalidRowSpan:'Lerroen hedapena zenbaki osoa izan behar da.',invalidColSpan:'Zutabeen hedapena zenbaki osoa izan behar da.',chooseColor:'Choose'},row:{menu:'Lerroa',insertBefore:'Txertatu Lerroa Aurretik',insertAfter:'Txertatu Lerroa Ostean',deleteRow:'Ezabatu Lerroak'},column:{menu:'Zutabea',insertBefore:'Txertatu Zutabea Aurretik',insertAfter:'Txertatu Zutabea Ostean',deleteColumn:'Ezabatu Zutabeak'}},button:{title:'Botoiaren Ezaugarriak',text:'Testua (Balorea)',type:'Mota',typeBtn:'Botoia',typeSbm:'Bidali',typeRst:'Garbitu'},checkboxAndRadio:{checkboxTitle:'Kontrol-laukiko Ezaugarriak',radioTitle:'Aukera-botoiaren Ezaugarriak',value:'Balorea',selected:'Hautatuta'},form:{title:'Formularioaren Ezaugarriak',menu:'Formularioaren Ezaugarriak',action:'Ekintza',method:'Metodoa',encoding:'Kodeketa'},select:{title:'Hautespen Eremuaren Ezaugarriak',selectInfo:'Informazioa',opAvail:'Aukera Eskuragarriak',value:'Balorea',size:'Tamaina',lines:'lerro kopurura',chkMulti:'Hautaketa anitzak baimendu',opText:'Testua',opValue:'Balorea',btnAdd:'Gehitu',btnModify:'Aldatu',btnUp:'Gora',btnDown:'Behera',btnSetValue:'Aukeratutako balorea ezarri',btnDelete:'Ezabatu'},textarea:{title:'Testu-arearen Ezaugarriak',cols:'Zutabeak',rows:'Lerroak'},textfield:{title:'Testu Eremuaren Ezaugarriak',name:'Izena',value:'Balorea',charWidth:'Zabalera',maxChars:'Zenbat karaktere gehienez',type:'Mota',typeText:'Testua',typePass:'Pasahitza'},hidden:{title:'Ezkutuko Eremuaren Ezaugarriak',name:'Izena',value:'Balorea'},image:{title:'Irudi Ezaugarriak',titleButton:'Irudi Botoiaren Ezaugarriak',menu:'Irudi Ezaugarriak',infoTab:'Irudi informazioa',btnUpload:'Zerbitzarira bidalia',upload:'Gora Kargatu',alt:'Ordezko Testua',lockRatio:'Erlazioa Blokeatu',resetSize:'Tamaina Berrezarri',border:'Ertza',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Mesedez Irudiaren URLa idatzi',linkTab:'Esteka',button2Img:'Aukeratutako irudi botoia, irudi normal batean eraldatu nahi duzu?',img2Button:'Aukeratutako irudia, irudi botoi batean eraldatu nahi duzu?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flasharen Ezaugarriak',propertiesTab:'Ezaugarriak',title:'Flasharen Ezaugarriak',chkPlay:'Automatikoki Erreproduzitu',chkLoop:'Begizta',chkMenu:'Flasharen Menua Gaitu',chkFull:'Onartu Pantaila osoa',scale:'Eskalatu',scaleAll:'Dena erakutsi',scaleNoBorder:'Ertzik gabe',scaleFit:'Doitu',access:'Scriptak baimendu',accessAlways:'Beti',accessSameDomain:'Domeinu berdinekoak',accessNever:'Inoiz ere ez',alignAbsBottom:'Abs Behean',alignAbsMiddle:'Abs Erdian',alignBaseline:'Oinan',alignTextTop:'Testua Goian',quality:'Kalitatea',qualityBest:'Hoberena',qualityHigh:'Altua',qualityAutoHigh:'Auto Altua',qualityMedium:'Ertaina',qualityAutoLow:'Auto Baxua',qualityLow:'Baxua',windowModeWindow:'Leihoa',windowModeOpaque:'Opakoa',windowModeTransparent:'Gardena',windowMode:'Leihoaren modua',flashvars:'Flash Aldagaiak',bgcolor:'Atzeko kolorea',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Mesedez URL esteka idatzi',validateHSpace:'HSpace zenbaki bat izan behar da.',validateVSpace:'VSpace zenbaki bat izan behar da.'},spellCheck:{toolbar:'Ortografia',title:'Ortografia zuzenketa',notAvailable:'Barkatu baina momentu honetan zerbitzua ez dago erabilgarri.',errorLoading:'Errorea gertatu da aplikazioa zerbitzaritik kargatzean: %s.',notInDic:'Ez dago hiztegian',changeTo:'Honekin ordezkatu',btnIgnore:'Ezikusi',btnIgnoreAll:'Denak Ezikusi',btnReplace:'Ordezkatu',btnReplaceAll:'Denak Ordezkatu',btnUndo:'Desegin',noSuggestions:'- Iradokizunik ez -',progress:'Zuzenketa ortografikoa martxan...',noMispell:'Zuzenketa ortografikoa bukatuta: Akatsik ez',noChanges:'Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu',oneChange:'Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da',manyChanges:'Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira',ieSpellDownload:'Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?'},smiley:{toolbar:'Aurpegierak',title:'Aurpegiera Sartu',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 elementua'},numberedlist:'Zenbakidun Zerrenda',bulletedlist:'Buletdun Zerrenda',indent:'Handitu Koska',outdent:'Txikitu Koska',justify:{left:'Lerrokatu Ezkerrean',center:'Lerrokatu Erdian',right:'Lerrokatu Eskuman',block:'Justifikatu'},blockquote:'Aipamen blokea',clipboard:{title:'Itsatsi',cutError:'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+X).',copyError:'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+C).',pasteMsg:'Mesedez teklatua erabilita (<STRONG>Ctrl/Cmd+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.',securityMsg:'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Itsatsi nahi duzun testua Wordetik hartua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?',toolbar:'Itsatsi Word-etik',title:'Itsatsi Word-etik',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Testu Arrunta bezala Itsatsi',title:'Testu Arrunta bezala Itsatsi'},templates:{button:'Txantiloiak',title:'Eduki Txantiloiak',options:'Template Options',insertOption:'Ordeztu oraingo edukiak',selectPromptMsg:'Mesedez txantiloia aukeratu editorean kargatzeko<br>(orain dauden edukiak galduko dira):',emptyListMsg:'(Ez dago definitutako txantiloirik)'},showBlocks:'Blokeak erakutsi',stylesCombo:{label:'Estiloa',panelTitle:'Formatting Styles',panelTitle1:'Bloke Estiloak',panelTitle2:'Inline Estiloak',panelTitle3:'Objektu Estiloak'},format:{label:'Formatua',panelTitle:'Formatua',tag_p:'Arrunta',tag_pre:'Formateatua',tag_address:'Helbidea',tag_h1:'Izenburua 1',tag_h2:'Izenburua 2',tag_h3:'Izenburua 3',tag_h4:'Izenburua 4',tag_h5:'Izenburua 5',tag_h6:'Izenburua 6',tag_div:'Paragrafoa (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Letra-tipoa',voiceLabel:'Letra-tipoa',panelTitle:'Letra-tipoa'},fontSize:{label:'Tamaina',voiceLabel:'Tamaina',panelTitle:'Tamaina'},colorButton:{textColorTitle:'Testu Kolorea',bgColorTitle:'Atzeko kolorea',panelTitle:'Colors',auto:'Automatikoa',more:'Kolore gehiago...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Ortografia Zuzenketa Idatzi Ahala (SCAYT)',opera_title:'Not supported by Opera',enable:'Gaitu SCAYT',disable:'Desgaitu SCAYT',about:'SCAYTi buruz',toggle:'SCAYT aldatu',options:'Aukerak',langs:'Hizkuntzak',moreSuggestions:'Iradokizun gehiago',ignore:'Baztertu',ignoreAll:'Denak baztertu',addWord:'Hitza Gehitu',emptyDic:'Hiztegiaren izena ezin da hutsik egon.',optionsTab:'Aukerak',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Hizkuntzak',dictionariesTab:'Hiztegiak',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Honi buruz'},about:{title:'CKEditor(r)i buruz',dlgTitle:'CKEditor(r)i buruz',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'Lizentziari buruzko informazioa gure webgunean:',copy:'Copyright © $1. Eskubide guztiak erreserbaturik.'},maximize:'Maximizatu',minimize:'Minimize',fakeobjects:{anchor:'Aingura',flash:'Flash Animazioa',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Objektu ezezaguna'},resize:'Arrastatu tamaina aldatzeko',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Dokumentuaren Ezarpenak',title:'Dokumentuaren Ezarpenak',design:'Design',meta:'Meta Informazioa',chooseColor:'Choose',other:'<other>',docTitle:'Orriaren Izenburua',charset:'Karaktere Multzoaren Kodeketa',charsetOther:'Beste Karaktere Multzoko Kodeketa',charsetASCII:'ASCII',charsetCE:'Erdialdeko Europakoa',charsetCT:'Txinatar Tradizionala (Big5)',charsetCR:'Zirilikoa',charsetGR:'Grekoa',charsetJP:'Japoniarra',charsetKR:'Korearra',charsetTR:'Turkiarra',charsetUN:'Unicode (UTF-8)',charsetWE:'Mendebaldeko Europakoa',docType:'Document Type Goiburua',docTypeOther:'Beste Document Type Goiburua',xhtmlDec:'XHTML Ezarpenak',bgColor:'Atzeko Kolorea',bgImage:'Atzeko Irudiaren URL-a',bgFixed:'Korritze gabeko Atzealdea',txtColor:'Testu Kolorea',margin:'Orrialdearen marjinak',marginTop:'Goian',marginLeft:'Ezkerrean',marginRight:'Eskuman',marginBottom:'Behean',metaKeywords:'Dokumentuaren Gako-hitzak (komarekin bananduta)',metaDescription:'Dokumentuaren Deskribapena',metaAuthor:'Egilea',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fa.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fa.js
new file mode 100755
index 0000000..e20714d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fa.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fa={dir:'rtl',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'نوار ابزار',editor:'ویرایشگر متن غنی',source:'منبع',newPage:'برگهٴ تازه',save:'ذخیره',preview:'پیشنمایش',cut:'برش',copy:'کپی',paste:'چسباندن',print:'چاپ',underline:'زیرخطدار',bold:'درشت',italic:'خمیده',selectAll:'گزینش همه',removeFormat:'برداشتن فرمت',strike:'میانخط',subscript:'زیرنویس',superscript:'بالانویس',horizontalrule:'گنجاندن خط افقی',pagebreak:'گنجاندن شکستگی پایان برگه',pagebreakAlt:'شکستن صفحه',unlink:'برداشتن پیوند',undo:'واچیدن',redo:'بازچیدن',common:{browseServer:'فهرستنمایی سرور',url:'URL',protocol:'پروتکل',upload:'انتقال به سرور',uploadSubmit:'به سرور بفرست',image:'تصویر',flash:'فلش',form:'فرم',checkbox:'خانهٴ گزینهای',radio:'دکمهٴ رادیویی',textField:'فیلد متنی',textarea:'ناحیهٴ متنی',hiddenField:'فیلد پنهان',button:'دکمه',select:'فیلد چندگزینهای',imageButton:'دکمهٴ تصویری',notSet:'<تعین نشده>',id:'شناسه',name:'نام',langDir:'جهتنمای زبان',langDirLtr:'چپ به راست (LTR)',langDirRtl:'راست به چپ (RTL)',langCode:'کد زبان',longDescr:'URL توصیف طولانی',cssClass:'کلاسهای شیوهنامه(Stylesheet)',advisoryTitle:'عنوان کمکی',cssStyle:'شیوه(style)',ok:'پذیرش',cancel:'انصراف',close:'بستن',preview:'پیشنمایش',generalTab:'عمومی',advancedTab:'پیشرفته',validateNumberFailed:'این مقدار یک عدد نیست.',confirmNewPage:'هر تغییر ایجاد شدهی ذخیره نشده از بین خواهد رفت. آیا اطمینان دارید که قصد بارگیری صفحه جدیدی را دارید؟',confirmCancel:'برخی از گزینهها تغییر کردهاند. آیا واقعا قصد بستن این پنجره را دارید؟',options:'گزینهها',target:'مسیر',targetNew:'پنجره جدید (_blank)',targetTop:'بالاترین پنجره (_top)',targetSelf:'همان پنجره (_self)',targetParent:'پنجره والد (_parent)',langDirLTR:'چپ به راست (LTR)',langDirRTL:'راست به چپ (RTL)',styles:'سبک',cssClasses:'کلاسهای شیوهنامه',width:'پهنا',height:'درازا',align:'چینش',alignLeft:'چپ',alignRight:'راست',alignCenter:'وسط',alignTop:'بالا',alignMiddle:'وسط',alignBottom:'پائین',invalidHeight:'ارتفاع باید یک عدد باشد.',invalidWidth:'پهنا باید یک عدد باشد.',invalidCssLength:'عدد تعیین شده برای فیلد "%1" باید یک عدد مثبت با یا بدون یک واحد اندازه گیری CSS معتبر باشد (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'عدد تعیین شده برای فیلد "%1" باید یک عدد مثبت با یا بدون یک واحد اندازه گیری HTML معتبر باشد (px or %).',invalidInlineStyle:'عدد تعیین شده برای سبک درونخطی(Inline Style) باید دارای یک یا چند چندتایی با شکلی شبیه "name : value" که باید با یک ","(semi-colons) از هم جدا شوند.',cssLengthTooltip:'یک عدد برای یک مقدار بر حسب پیکسل و یا یک عدد با یک واحد CSS معتبر وارد کنید (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">، غیر قابل دسترس</span>'},contextmenu:{options:'گزینههای منوی زمینه'},specialChar:{toolbar:'گنجاندن نویسهٴ ویژه',title:'گزینش نویسهٴ ویژه',options:'گزینههای نویسههای ویژه'},link:{toolbar:'گنجاندن/ویرایش پیوند',other:'<سایر>',menu:'ویرایش پیوند',title:'پیوند',info:'اطلاعات پیوند',target:'مقصد',upload:'انتقال به سرور',advanced:'پیشرفته',type:'نوع پیوند',toUrl:'URL',toAnchor:'لنگر در همین صفحه',toEmail:'پست الکترونیکی',targetFrame:'<فریم>',targetPopup:'<پنجرهٴ پاپاپ>',targetFrameName:'نام فریم مقصد',targetPopupName:'نام پنجرهٴ پاپاپ',popupFeatures:'ویژگیهای پنجرهٴ پاپاپ',popupResizable:'قابل تغییر اندازه',popupStatusBar:'نوار وضعیت',popupLocationBar:'نوار موقعیت',popupToolbar:'نوارابزار',popupMenuBar:'نوار منو',popupFullScreen:'تمامصفحه (IE)',popupScrollBars:'میلههای پیمایش',popupDependent:'وابسته (Netscape)',popupLeft:'موقعیت چپ',popupTop:'موقعیت بالا',id:'شناسه',langDir:'جهتنمای زبان',langDirLTR:'چپ به راست (LTR)',langDirRTL:'راست به چپ (RTL)',acccessKey:'کلید دستیابی',name:'نام',langCode:'جهتنمای زبان',tabIndex:'نمایهٴ دسترسی با برگه',advisoryTitle:'عنوان کمکی',advisoryContentType:'نوع محتوای کمکی',cssClasses:'کلاسهای شیوهنامه(Stylesheet)',charset:'نویسهگان منبع پیوند شده',styles:'شیوه(style)',rel:'وابستگی',selectAnchor:'یک لنگر برگزینید',anchorName:'با نام لنگر',anchorId:'با شناسهٴ المان',emailAddress:'نشانی پست الکترونیکی',emailSubject:'موضوع پیام',emailBody:'متن پیام',noAnchors:'(در این سند لنگری دردسترس نیست)',noUrl:'لطفا URL پیوند را بنویسید',noEmail:'لطفا نشانی پست الکترونیکی را بنویسید'},anchor:{toolbar:'گنجاندن/ویرایش لنگر',menu:'ویژگیهای لنگر',title:'ویژگیهای لنگر',name:'نام لنگر',errorName:'لطفا نام لنگر را بنویسید',remove:'حذف لنگر'},list:{numberedTitle:'ویژگیهای فهرست شمارهدار',bulletedTitle:'ویژگیهای فهرست گلولهدار',type:'نوع',start:'شروع',validateStartNumber:'فهرست شماره شروع باید یک عدد صحیح باشد.',circle:'دایره',disc:'صفحه گرد',square:'چهارگوش',none:'هیچ',notset:'<تنظیم نشده>',armenian:'شمارهگذاری ارمنی',georgian:'شمارهگذاری گریگورین (an, ban, gan, etc.)',lowerRoman:'پانویس رومی (i, ii, iii, iv, v, etc.)',upperRoman:'بالانویس رومی (I, II, III, IV, V, etc.)',lowerAlpha:'پانویس الفبایی (a, b, c, d, e, etc.)',upperAlpha:'بالانویس الفبایی (A, B, C, D, E, etc.)',lowerGreek:'پانویس یونانی (alpha, beta, gamma, etc.)',decimal:'دهدهی (1, 2, 3, etc.)',decimalLeadingZero:'دهدهی همراه با صفر (01, 02, 03, etc.)'},findAndReplace:{title:'جستجو و جایگزینی',find:'جستجو',replace:'جایگزینی',findWhat:'چه چیز را مییابید:',replaceWith:'جایگزینی با:',notFoundMsg:'متن موردنظر یافت نشد.',findOptions:'گزینههای جستجو',matchCase:'همسانی در بزرگی و کوچکی نویسهها',matchWord:'همسانی با واژهٴ کامل',matchCyclic:'همسانی با چرخه',replaceAll:'جایگزینی همهٴ یافتهها',replaceSuccessMsg:'%1 رخداد جایگزین شد.'},table:{toolbar:'جدول',title:'ویژگیهای جدول',menu:'ویژگیهای جدول',deleteTable:'پاک کردن جدول',rows:'سطرها',columns:'ستونها',border:'اندازهٴ لبه',widthPx:'پیکسل',widthPc:'درصد',widthUnit:'واحد پهنا',cellSpace:'فاصلهٴ میان سلولها',cellPad:'فاصلهٴ پرشده در سلول',caption:'عنوان',summary:'خلاصه',headers:'سرنویسها',headersNone:'هیچ',headersColumn:'اولین ستون',headersRow:'اولین ردیف',headersBoth:'هردو',invalidRows:'تعداد ردیفها باید یک عدد بزرگتر از 0 باشد.',invalidCols:'تعداد ستونها باید یک عدد بزرگتر از 0 باشد.',invalidBorder:'مقدار اندازه خطوط باید یک عدد باشد.',invalidWidth:'مقدار پهنای جدول باید یک عدد باشد.',invalidHeight:'مقدار ارتفاع جدول باید یک عدد باشد.',invalidCellSpacing:'مقدار فاصلهگذاری سلول باید یک عدد باشد.',invalidCellPadding:'بالشتک سلول باید یک عدد باشد.',cell:{menu:'سلول',insertBefore:'افزودن سلول قبل از',insertAfter:'افزودن سلول بعد از',deleteCell:'حذف سلولها',merge:'ادغام سلولها',mergeRight:'ادغام به راست',mergeDown:'ادغام به پایین',splitHorizontal:'جدا کردن افقی سلول',splitVertical:'جدا کردن عمودی سلول',title:'ویژگیهای سلول',cellType:'نوع سلول',rowSpan:'محدوده ردیفها',colSpan:'محدوده ستونها',wordWrap:'شکستن کلمه',hAlign:'چینش افقی',vAlign:'چینش عمودی',alignBaseline:'خط مبنا',bgColor:'رنگ زمینه',borderColor:'رنگ خطوط',data:'اطلاعات',header:'سرنویس',yes:'بله',no:'خیر',invalidWidth:'عرض سلول باید یک عدد باشد.',invalidHeight:'ارتفاع سلول باید عدد باشد.',invalidRowSpan:'مقدار محدوده ردیفها باید یک عدد باشد.',invalidColSpan:'مقدار محدوده ستونها باید یک عدد باشد.',chooseColor:'انتخاب'},row:{menu:'سطر',insertBefore:'افزودن سطر قبل از',insertAfter:'افزودن سطر بعد از',deleteRow:'حذف سطرها'},column:{menu:'ستون',insertBefore:'افزودن ستون قبل از',insertAfter:'افزودن ستون بعد از',deleteColumn:'حذف ستونها'}},button:{title:'ویژگیهای دکمه',text:'متن (مقدار)',type:'نوع',typeBtn:'دکمه',typeSbm:'ثبت',typeRst:'بازنشانی (Reset)'},checkboxAndRadio:{checkboxTitle:'ویژگیهای خانهٴ گزینهای',radioTitle:'ویژگیهای دکمهٴ رادیویی',value:'مقدار',selected:'برگزیده'},form:{title:'ویژگیهای فرم',menu:'ویژگیهای فرم',action:'رویداد',method:'متد',encoding:'رمزنگاری'},select:{title:'ویژگیهای فیلد چندگزینهای',selectInfo:'اطلاعات',opAvail:'گزینههای دردسترس',value:'مقدار',size:'اندازه',lines:'خطوط',chkMulti:'گزینش چندگانه فراهم باشد',opText:'متن',opValue:'مقدار',btnAdd:'افزودن',btnModify:'ویرایش',btnUp:'بالا',btnDown:'پائین',btnSetValue:'تنظیم به عنوان مقدار برگزیده',btnDelete:'پاککردن'},textarea:{title:'ویژگیهای ناحیهٴ متنی',cols:'ستونها',rows:'سطرها'},textfield:{title:'ویژگیهای فیلد متنی',name:'نام',value:'مقدار',charWidth:'پهنای نویسه',maxChars:'بیشینهٴ نویسهها',type:'نوع',typeText:'متن',typePass:'گذرواژه'},hidden:{title:'ویژگیهای فیلد پنهان',name:'نام',value:'مقدار'},image:{title:'ویژگیهای تصویر',titleButton:'ویژگیهای دکمهٴ تصویری',menu:'ویژگیهای تصویر',infoTab:'اطلاعات تصویر',btnUpload:'به سرور بفرست',upload:'انتقال به سرور',alt:'متن جایگزین',lockRatio:'قفل کردن نسبت',resetSize:'بازنشانی اندازه',border:'لبه',hSpace:'فاصلهٴ افقی',vSpace:'فاصلهٴ عمودی',alertUrl:'لطفا URL تصویر را بنویسید',linkTab:'پیوند',button2Img:'آیا مایلید از یک تصویر ساده روی دکمه تصویری انتخاب شده استفاده کنید؟',img2Button:'آیا مایلید از یک دکمه تصویری روی تصویر انتخاب شده استفاده کنید؟',urlMissing:'آدرس URL اصلی تصویر یافت نشد.',validateBorder:'مقدار خطوط باید یک عدد باشد.',validateHSpace:'مقدار فاصلهگذاری افقی باید یک عدد باشد.',validateVSpace:'مقدار فاصلهگذاری عمودی باید یک عدد باشد.'},flash:{properties:'ویژگیهای فلش',propertiesTab:'ویژگیها',title:'ویژگیهای فلش',chkPlay:'آغاز خودکار',chkLoop:'اجرای پیاپی',chkMenu:'در دسترس بودن منوی فلش',chkFull:'اجازه تمام صفحه',scale:'مقیاس',scaleAll:'نمایش همه',scaleNoBorder:'بدون کران',scaleFit:'جایگیری کامل',access:'دسترسی به اسکریپت',accessAlways:'همیشه',accessSameDomain:'همان دامنه',accessNever:'هرگز',alignAbsBottom:'پائین مطلق',alignAbsMiddle:'وسط مطلق',alignBaseline:'خط پایه',alignTextTop:'متن بالا',quality:'کیفیت',qualityBest:'بهترین',qualityHigh:'بالا',qualityAutoHigh:'بالا - خودکار',qualityMedium:'متوسط',qualityAutoLow:'پایین - خودکار',qualityLow:'پایین',windowModeWindow:'پنجره',windowModeOpaque:'مات',windowModeTransparent:'شفاف',windowMode:'حالت پنجره',flashvars:'مقادیر برای فلش',bgcolor:'رنگ پسزمینه',hSpace:'فاصلهٴ افقی',vSpace:'فاصلهٴ عمودی',validateSrc:'لطفا URL پیوند را بنویسید',validateHSpace:'مقدار فاصلهگذاری افقی باید یک عدد باشد.',validateVSpace:'مقدار فاصلهگذاری عمودی باید یک عدد باشد.'},spellCheck:{toolbar:'بررسی املا',title:'بررسی املا',notAvailable:'با عرض پوزش خدمات الان در دسترس نیستند.',errorLoading:'خطا در بارگیری برنامه خدمات میزبان: %s.',notInDic:'در واژه~نامه یافت نشد',changeTo:'تغییر به',btnIgnore:'چشمپوشی',btnIgnoreAll:'چشمپوشی همه',btnReplace:'جایگزینی',btnReplaceAll:'جایگزینی همه',btnUndo:'واچینش',noSuggestions:'- پیشنهادی نیست -',progress:'بررسی املا در حال انجام...',noMispell:'بررسی املا انجام شد. هیچ غلط املائی یافت نشد',noChanges:'بررسی املا انجام شد. هیچ واژهای تغییر نیافت',oneChange:'بررسی املا انجام شد. یک واژه تغییر یافت',manyChanges:'بررسی املا انجام شد. %1 واژه تغییر یافت',ieSpellDownload:'بررسی کنندهٴ املا نصب نشده است. آیا میخواهید آن را هماکنون دریافت کنید؟'},smiley:{toolbar:'خندانک',title:'گنجاندن خندانک',options:'گزینههای خندانک'},elementsPath:{eleLabel:'مسیر عناصر',eleTitle:'%1 عنصر'},numberedlist:'فهرست شمارهدار',bulletedlist:'فهرست نقطهای',indent:'افزایش تورفتگی',outdent:'کاهش تورفتگی',justify:{left:'چپچین',center:'میانچین',right:'راستچین',block:'بلوکچین'},blockquote:'بلوک نقل قول',clipboard:{title:'چسباندن',cutError:'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+X).',copyError:'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپی کردن را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+C).',pasteMsg:'لطفا متن را با کلیدهای (<STRONG>Ctrl/Cmd+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.',securityMsg:'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.',pasteArea:'محل چسباندن'},pastefromword:{confirmCleanup:'متنی که میخواهید بچسبانید به نظر میرسد که از Word کپی شده است. آیا میخواهید قبل از چسباندن آن را پاکسازی کنید؟',toolbar:'چسباندن از Word',title:'چسباندن از Word',error:'به دلیل بروز خطای داخلی امکان پاکسازی اطلاعات بازنشانی شده وجود ندارد.'},pasteText:{button:'چسباندن به عنوان متن ِساده',title:'چسباندن به عنوان متن ِساده'},templates:{button:'الگوها',title:'الگوهای محتویات',options:'گزینههای الگو',insertOption:'محتویات کنونی جایگزین شوند',selectPromptMsg:'لطفا الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید<br>(محتویات کنونی از دست خواهند رفت):',emptyListMsg:'(الگوئی تعریف نشده است)'},showBlocks:'نمایش بلوکها',stylesCombo:{label:'سبک',panelTitle:'سبکهای قالببندی',panelTitle1:'سبکهای بلوک',panelTitle2:'سبکهای درونخطی',panelTitle3:'سبکهای شیء'},format:{label:'فرمت',panelTitle:'فرمت',tag_p:'نرمال',tag_pre:'فرمت شده',tag_address:'آدرس',tag_h1:'سرنویس 1',tag_h2:'سرنویس 2',tag_h3:'سرنویس 3',tag_h4:'سرنویس 4',tag_h5:'سرنویس 5',tag_h6:'سرنویس 6',tag_div:'بند'},div:{title:'ایجاد یک محل DIV',toolbar:'ایجاد یک محل DIV',cssClassInputLabel:'کلاسهای شیوهنامه',styleSelectLabel:'سبک',IdInputLabel:'شناسه',languageCodeInputLabel:' کد زبان',inlineStyleInputLabel:'سبک درونخطی(Inline Style)',advisoryTitleInputLabel:'عنوان مشاوره',langDirLabel:'جهت نوشتاری زبان',langDirLTRLabel:'چپ به راست (LTR)',langDirRTLLabel:'راست به چپ (RTL)',edit:'ویرایش Div',remove:'حذف Div'},iframe:{title:'ویژگیهای IFrame',toolbar:'IFrame',noUrl:'لطفا مسیر URL iframe را درج کنید',scrolling:'نمایش خطکشها',border:'نمایش خطوط frame'},font:{label:'قلم',voiceLabel:'قلم',panelTitle:'قلم'},fontSize:{label:'اندازه',voiceLabel:'اندازه قلم',panelTitle:'اندازه'},colorButton:{textColorTitle:'رنگ متن',bgColorTitle:'رنگ پسزمینه',panelTitle:'رنگها',auto:'خودکار',more:'رنگهای بیشتر...'},colors:{'000':'سیاه',800000:'خرمایی','8B4513':'قهوهای شکلاتی','2F4F4F':'ارغوانی مایل به خاکستری','008080':'آبی مایل به خاکستری','000080':'آبی سیر','4B0082':'نیلی',696969:'خاکستری تیره',B22222:'آتش آجری',A52A2A:'قهوهای',DAA520:'میلهی طلایی','006400':'سبز تیره','40E0D0':'فیروزهای','0000CD':'آبی روشن',800080:'ارغوانی',808080:'خاکستری',F00:'قرمز',FF8C00:'نارنجی پررنگ',FFD700:'طلایی','008000':'سبز','0FF':'آبی مایل به سبز','00F':'آبی',EE82EE:'بنفش',A9A9A9:'خاکستری مات',FFA07A:'صورتی کدر روشن',FFA500:'نارنجی',FFFF00:'زرد','00FF00':'فسفری',AFEEEE:'فیروزهای رنگ پریده',ADD8E6:'آبی کمرنگ',DDA0DD:'آلویی',D3D3D3:'خاکستری روشن',FFF0F5:'بنفش کمرنگ',FAEBD7:'عتیقه سفید',FFFFE0:'زرد روشن',F0FFF0:'عسلی',F0FFFF:'لاجوردی',F0F8FF:'آبی براق',E6E6FA:'بنفش کمرنگ',FFF:'سفید'},scayt:{title:'بررسی املای تایپ شما',opera_title:'توسط اپرا پشتیبانی نمیشود',enable:'فعالسازی SCAYT',disable:'غیرفعالسازی SCAYT',about:'درباره SCAYT',toggle:'ضامن SCAYT',options:'گزینهها',langs:'زبانها',moreSuggestions:'پیشنهادهای بیشتر',ignore:'عبور کردن',ignoreAll:'عبور کردن از همه',addWord:'افزودن Word',emptyDic:'نام دیکشنری نباید خالی باشد.',optionsTab:'گزینهها',allCaps:'نادیده گرفتن همه کلاه-واژهها',ignoreDomainNames:'عبور از نامهای دامنه',mixedCase:'عبور از کلماتی مرکب از حروف بزرگ و کوچک',mixedWithDigits:'عبور از کلمات به همراه عدد',languagesTab:'زبانها',dictionariesTab:'دیکشنریها',dic_field_name:'نام دیکشنری',dic_create:'ایجاد',dic_restore:'بازیافت',dic_delete:'حذف',dic_rename:'تغییر نام',dic_info:'در ابتدا دیکشنری کاربر در کوکی ذخیره میشود. با این حال، کوکیها در اندازه محدود شدهاند. وقتی که دیکشنری کاربری بزرگ میشود و به نقطهای که نمیتواند در کوکی ذخیره شود، پس از آن دیکشنری ممکن است بر روی سرور ما ذخیره شود. برای ذخیره دیکشنری شخصی شما بر روی سرور ما، باید یک نام برای دیکشنری خود مشخص نمایید. اگر شما قبلا یک دیکشنری روی سرور ما ذخیره کردهاید، لطفا نام آنرا درج و روی دکمه بازیافت کلیک نمایید.',aboutTab:'درباره'},about:{title:'درباره CKEditor',dlgTitle:'درباره CKEditor',help:'بررسی $1 برای راهنمایی.',userGuide:'راهنمای کاربران CKEditor',moreInfo:'برای کسب اطلاعات مجوز لطفا به وب سایت ما مراجعه کنید:',copy:'حق نشر © $1. کلیه حقوق محفوظ است.'},maximize:'حداکثر کردن',minimize:'حداقل کردن',fakeobjects:{anchor:'لنگر',flash:'انیمشن فلش',iframe:'IFrame',hiddenfield:'فیلد پنهان',unknown:'شیء ناشناخته'},resize:'کشیدن برای تغییر اندازه',colordialog:{title:'انتخاب رنگ',options:'گزینههای رنگ',highlight:'متمایز',selected:'رنگ انتخاب شده',clear:'پاک کردن'},toolbarCollapse:'بستن نوار ابزار',toolbarExpand:'بازکردن نوار ابزار',toolbarGroups:{document:'سند',clipboard:'حافظه موقت/برگشت',editing:'در حال ویرایش',forms:'فرمها',basicstyles:'شیوههای پایه',paragraph:'بند',links:'پیوندها',insert:'ورود',styles:'شیوهها',colors:'رنگها',tools:'ابزارها'},bidi:{ltr:'نوشتار متن از چپ به راست',rtl:'نوشتار متن از راست به چپ'},docprops:{label:'ویژگیهای سند',title:'ویژگیهای سند',design:'طراحی',meta:'فراداده',chooseColor:'انتخاب',other:'<سایر>',docTitle:'عنوان صفحه',charset:'رمزگذاری نویسهگان',charsetOther:'رمزگذاری نویسهگان دیگر',charsetASCII:'ASCII',charsetCE:'اروپای مرکزی',charsetCT:'چینی رسمی (Big5)',charsetCR:'سیریلیک',charsetGR:'یونانی',charsetJP:'ژاپنی',charsetKR:'کرهای',charsetTR:'ترکی',charsetUN:'یونیکُد (UTF-8)',charsetWE:'اروپای غربی',docType:'عنوان نوع سند',docTypeOther:'عنوان نوع سند دیگر',xhtmlDec:'شامل تعاریف XHTML',bgColor:'رنگ پسزمینه',bgImage:'URL تصویر پسزمینه',bgFixed:'پسزمینهٴ پیمایش ناپذیر',txtColor:'رنگ متن',margin:'حاشیههای صفحه',marginTop:'بالا',marginLeft:'چپ',marginRight:'راست',marginBottom:'پایین',metaKeywords:'کلیدواژگان نمایهگذاری سند (با کاما جدا شوند)',metaDescription:'توصیف سند',metaAuthor:'نویسنده',metaCopyright:'حق انتشار',previewHtml:'<p>این یک <strong>متن نمونه</strong> است. شما در حال استفاده از <a href="javascript:void(0)">CKEditor</a> هستید.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fi.js
new file mode 100755
index 0000000..12cc26d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fi={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editorin työkalupalkit',editor:'Rikastekstieditori',source:'Koodi',newPage:'Tyhjennä',save:'Tallenna',preview:'Esikatsele',cut:'Leikkaa',copy:'Kopioi',paste:'Liitä',print:'Tulosta',underline:'Alleviivattu',bold:'Lihavoitu',italic:'Kursivoitu',selectAll:'Valitse kaikki',removeFormat:'Poista muotoilu',strike:'Yliviivattu',subscript:'Alaindeksi',superscript:'Yläindeksi',horizontalrule:'Lisää murtoviiva',pagebreak:'Lisää sivunvaihto',pagebreakAlt:'Sivunvaihto',unlink:'Poista linkki',undo:'Kumoa',redo:'Toista',common:{browseServer:'Selaa palvelinta',url:'Osoite',protocol:'Protokolla',upload:'Lisää tiedosto',uploadSubmit:'Lähetä palvelimelle',image:'Kuva',flash:'Flash-animaatio',form:'Lomake',checkbox:'Valintaruutu',radio:'Radiopainike',textField:'Tekstikenttä',textarea:'Tekstilaatikko',hiddenField:'Piilokenttä',button:'Painike',select:'Valintakenttä',imageButton:'Kuvapainike',notSet:'<ei asetettu>',id:'Tunniste',name:'Nimi',langDir:'Kielen suunta',langDirLtr:'Vasemmalta oikealle (LTR)',langDirRtl:'Oikealta vasemmalle (RTL)',langCode:'Kielikoodi',longDescr:'Pitkän kuvauksen URL',cssClass:'Tyyliluokat',advisoryTitle:'Avustava otsikko',cssStyle:'Tyyli',ok:'OK',cancel:'Peruuta',close:'Sulje',preview:'Esikatselu',generalTab:'Yleinen',advancedTab:'Lisäominaisuudet',validateNumberFailed:'Arvon pitää olla numero.',confirmNewPage:'Kaikki tallentamattomat muutokset tähän sisältöön menetetään. Oletko varma, että haluat ladata uuden sivun?',confirmCancel:'Jotkut asetuksista on muuttuneet. Oletko varma, että haluat sulkea valintaikkunan?',options:'Asetukset',target:'Kohde',targetNew:'Uusi ikkuna (_blank)',targetTop:'Päällimmäinen ikkuna (_top)',targetSelf:'Sama ikkuna (_self)',targetParent:'Ylemmän tason ikkuna (_parent)',langDirLTR:'Vasemmalta oikealle (LTR)',langDirRTL:'Oikealta vasemmalle (RTL)',styles:'Tyyli',cssClasses:'Tyylitiedoston luokat',width:'Leveys',height:'Korkeus',align:'Kohdistus',alignLeft:'Vasemmalle',alignRight:'Oikealle',alignCenter:'Keskelle',alignTop:'Ylös',alignMiddle:'Keskelle',alignBottom:'Alas',invalidHeight:'Korkeuden täytyy olla numero.',invalidWidth:'Leveyden täytyy olla numero.',invalidCssLength:'Kentän "%1" arvon täytyy olla positiivinen luku CSS mittayksikön (px, %, in, cm, mm, em, ex, pt tai pc) kanssa tai ilman.',invalidHtmlLength:'Kentän "%1" arvon täytyy olla positiivinen luku HTML mittayksikön (px tai %) kanssa tai ilman.',invalidInlineStyle:'Tyylille annetun arvon täytyy koostua yhdestä tai useammasta "nimi : arvo" parista, jotka ovat eroteltuna toisistaan puolipisteillä.',cssLengthTooltip:'Anna numeroarvo pikseleinä tai numeroarvo CSS mittayksikön kanssa (px, %, in, cm, mm, em, ex, pt, tai pc).',unavailable:'%1<span class="cke_accessibility">, ei saatavissa</span>'},contextmenu:{options:'Pikavalikon ominaisuudet'},specialChar:{toolbar:'Lisää erikoismerkki',title:'Valitse erikoismerkki',options:'Erikoismerkin ominaisuudet'},link:{toolbar:'Lisää linkki/muokkaa linkkiä',other:'<muu>',menu:'Muokkaa linkkiä',title:'Linkki',info:'Linkin tiedot',target:'Kohde',upload:'Lisää tiedosto',advanced:'Lisäominaisuudet',type:'Linkkityyppi',toUrl:'Osoite',toAnchor:'Ankkuri tässä sivussa',toEmail:'Sähköposti',targetFrame:'<kehys>',targetPopup:'<popup ikkuna>',targetFrameName:'Kohdekehyksen nimi',targetPopupName:'Popup ikkunan nimi',popupFeatures:'Popup ikkunan ominaisuudet',popupResizable:'Venytettävä',popupStatusBar:'Tilarivi',popupLocationBar:'Osoiterivi',popupToolbar:'Vakiopainikkeet',popupMenuBar:'Valikkorivi',popupFullScreen:'Täysi ikkuna (IE)',popupScrollBars:'Vierityspalkit',popupDependent:'Riippuva (Netscape)',popupLeft:'Vasemmalta (px)',popupTop:'Ylhäältä (px)',id:'Tunniste',langDir:'Kielen suunta',langDirLTR:'Vasemmalta oikealle (LTR)',langDirRTL:'Oikealta vasemmalle (RTL)',acccessKey:'Pikanäppäin',name:'Nimi',langCode:'Kielen suunta',tabIndex:'Tabulaattori indeksi',advisoryTitle:'Avustava otsikko',advisoryContentType:'Avustava sisällön tyyppi',cssClasses:'Tyyliluokat',charset:'Linkitetty kirjaimisto',styles:'Tyyli',rel:'Suhde',selectAnchor:'Valitse ankkuri',anchorName:'Ankkurin nimen mukaan',anchorId:'Ankkurin ID:n mukaan',emailAddress:'Sähköpostiosoite',emailSubject:'Aihe',emailBody:'Viesti',noAnchors:'(Ei ankkureita tässä dokumentissa)',noUrl:'Linkille on kirjoitettava URL',noEmail:'Kirjoita sähköpostiosoite'},anchor:{toolbar:'Lisää ankkuri/muokkaa ankkuria',menu:'Ankkurin ominaisuudet',title:'Ankkurin ominaisuudet',name:'Nimi',errorName:'Ankkurille on kirjoitettava nimi',remove:'Poista ankkuri'},list:{numberedTitle:'Numeroidun listan ominaisuudet',bulletedTitle:'Numeroimattoman listan ominaisuudet',type:'Tyyppi',start:'Alku',validateStartNumber:'Listan ensimmäisen numeron tulee olla kokonaisluku.',circle:'Ympyrä',disc:'Levy',square:'Neliö',none:'Ei mikään',notset:'<ei asetettu>',armenian:'Armeenialainen numerointi',georgian:'Georgialainen numerointi (an, ban, gan, etc.)',lowerRoman:'Pienet roomalaiset (i, ii, iii, iv, v, jne.)',upperRoman:'Isot roomalaiset (I, II, III, IV, V, jne.)',lowerAlpha:'Pienet aakkoset (a, b, c, d, e, jne.)',upperAlpha:'Isot aakkoset (A, B, C, D, E, jne.)',lowerGreek:'Pienet kreikkalaiset (alpha, beta, gamma, jne.)',decimal:'Desimaalit (1, 2, 3, jne.)',decimalLeadingZero:'Desimaalit, alussa nolla (01, 02, 03, jne.)'},findAndReplace:{title:'Etsi ja korvaa',find:'Etsi',replace:'Korvaa',findWhat:'Etsi mitä:',replaceWith:'Korvaa tällä:',notFoundMsg:'Etsittyä tekstiä ei löytynyt.',findOptions:'Hakuasetukset',matchCase:'Sama kirjainkoko',matchWord:'Koko sana',matchCyclic:'Kierrä ympäri',replaceAll:'Korvaa kaikki',replaceSuccessMsg:'%1 esiintymä(ä) korvattu.'},table:{toolbar:'Taulu',title:'Taulun ominaisuudet',menu:'Taulun ominaisuudet',deleteTable:'Poista taulu',rows:'Rivit',columns:'Sarakkeet',border:'Rajan paksuus',widthPx:'pikseliä',widthPc:'prosenttia',widthUnit:'leveysyksikkö',cellSpace:'Solujen väli',cellPad:'Solujen sisennys',caption:'Otsikko',summary:'Yhteenveto',headers:'Ylätunnisteet',headersNone:'Ei',headersColumn:'Ensimmäinen sarake',headersRow:'Ensimmäinen rivi',headersBoth:'Molemmat',invalidRows:'Rivien määrän täytyy olla suurempi kuin 0.',invalidCols:'Sarakkeiden määrän täytyy olla suurempi kuin 0.',invalidBorder:'Reunan koon täytyy olla numero.',invalidWidth:'Taulun leveyden täytyy olla numero.',invalidHeight:'Taulun korkeuden täytyy olla numero.',invalidCellSpacing:'Solujen välin täytyy olla numero.',invalidCellPadding:'Solujen sisennyksen täytyy olla numero.',cell:{menu:'Solu',insertBefore:'Lisää solu eteen',insertAfter:'Lisää solu perään',deleteCell:'Poista solut',merge:'Yhdistä solut',mergeRight:'Yhdistä oikealla olevan kanssa',mergeDown:'Yhdistä alla olevan kanssa',splitHorizontal:'Jaa solu vaakasuunnassa',splitVertical:'Jaa solu pystysuunnassa',title:'Solun ominaisuudet',cellType:'Solun tyyppi',rowSpan:'Rivin jatkuvuus',colSpan:'Solun jatkuvuus',wordWrap:'Rivitys',hAlign:'Horisontaali kohdistus',vAlign:'Vertikaali kohdistus',alignBaseline:'Alas (teksti)',bgColor:'Taustan väri',borderColor:'Reunan väri',data:'Data',header:'Ylätunniste',yes:'Kyllä',no:'Ei',invalidWidth:'Solun leveyden täytyy olla numero.',invalidHeight:'Solun korkeuden täytyy olla numero.',invalidRowSpan:'Rivin jatkuvuuden täytyy olla kokonaisluku.',invalidColSpan:'Solun jatkuvuuden täytyy olla kokonaisluku.',chooseColor:'Valitse'},row:{menu:'Rivi',insertBefore:'Lisää rivi yläpuolelle',insertAfter:'Lisää rivi alapuolelle',deleteRow:'Poista rivit'},column:{menu:'Sarake',insertBefore:'Lisää sarake vasemmalle',insertAfter:'Lisää sarake oikealle',deleteColumn:'Poista sarakkeet'}},button:{title:'Painikkeen ominaisuudet',text:'Teksti (arvo)',type:'Tyyppi',typeBtn:'Painike',typeSbm:'Lähetä',typeRst:'Tyhjennä'},checkboxAndRadio:{checkboxTitle:'Valintaruudun ominaisuudet',radioTitle:'Radiopainikkeen ominaisuudet',value:'Arvo',selected:'Valittu'},form:{title:'Lomakkeen ominaisuudet',menu:'Lomakkeen ominaisuudet',action:'Toiminto',method:'Tapa',encoding:'Enkoodaus'},select:{title:'Valintakentän ominaisuudet',selectInfo:'Info',opAvail:'Ominaisuudet',value:'Arvo',size:'Koko',lines:'Rivit',chkMulti:'Salli usea valinta',opText:'Teksti',opValue:'Arvo',btnAdd:'Lisää',btnModify:'Muuta',btnUp:'Ylös',btnDown:'Alas',btnSetValue:'Aseta valituksi',btnDelete:'Poista'},textarea:{title:'Tekstilaatikon ominaisuudet',cols:'Sarakkeita',rows:'Rivejä'},textfield:{title:'Tekstikentän ominaisuudet',name:'Nimi',value:'Arvo',charWidth:'Leveys',maxChars:'Maksimi merkkimäärä',type:'Tyyppi',typeText:'Teksti',typePass:'Salasana'},hidden:{title:'Piilokentän ominaisuudet',name:'Nimi',value:'Arvo'},image:{title:'Kuvan ominaisuudet',titleButton:'Kuvapainikkeen ominaisuudet',menu:'Kuvan ominaisuudet',infoTab:'Kuvan tiedot',btnUpload:'Lähetä palvelimelle',upload:'Lisää kuva',alt:'Vaihtoehtoinen teksti',lockRatio:'Lukitse suhteet',resetSize:'Alkuperäinen koko',border:'Kehys',hSpace:'Vaakatila',vSpace:'Pystytila',alertUrl:'Kirjoita kuvan osoite (URL)',linkTab:'Linkki',button2Img:'Haluatko muuntaa valitun kuvanäppäimen kuvaksi?',img2Button:'Haluatko muuntaa valitun kuvan kuvanäppäimeksi?',urlMissing:'Kuvan lähdeosoite puuttuu.',validateBorder:'Kehyksen täytyy olla kokonaisluku.',validateHSpace:'HSpace-määrityksen täytyy olla kokonaisluku.',validateVSpace:'VSpace-määrityksen täytyy olla kokonaisluku.'},flash:{properties:'Flash-ominaisuudet',propertiesTab:'Ominaisuudet',title:'Flash ominaisuudet',chkPlay:'Automaattinen käynnistys',chkLoop:'Toisto',chkMenu:'Näytä Flash-valikko',chkFull:'Salli kokoruututila',scale:'Levitä',scaleAll:'Näytä kaikki',scaleNoBorder:'Ei rajaa',scaleFit:'Tarkka koko',access:'Skriptien pääsy',accessAlways:'Aina',accessSameDomain:'Sama verkkotunnus',accessNever:'Ei koskaan',alignAbsBottom:'Aivan alas',alignAbsMiddle:'Aivan keskelle',alignBaseline:'Alas (teksti)',alignTextTop:'Ylös (teksti)',quality:'Laatu',qualityBest:'Paras',qualityHigh:'Korkea',qualityAutoHigh:'Automaattinen korkea',qualityMedium:'Keskitaso',qualityAutoLow:'Automaattinen matala',qualityLow:'Matala',windowModeWindow:'Ikkuna',windowModeOpaque:'Läpinäkyvyys',windowModeTransparent:'Läpinäkyvä',windowMode:'Ikkuna tila',flashvars:'Muuttujat Flash:lle',bgcolor:'Taustaväri',hSpace:'Vaakatila',vSpace:'Pystytila',validateSrc:'Linkille on kirjoitettava URL',validateHSpace:'Vaakatilan täytyy olla numero.',validateVSpace:'Pystytilan täytyy olla numero.'},spellCheck:{toolbar:'Tarkista oikeinkirjoitus',title:'Oikoluku',notAvailable:'Valitettavasti oikoluku ei ole käytössä tällä hetkellä.',errorLoading:'Virhe ladattaessa oikolukupalvelua isännältä: %s.',notInDic:'Ei sanakirjassa',changeTo:'Vaihda',btnIgnore:'Jätä huomioimatta',btnIgnoreAll:'Jätä kaikki huomioimatta',btnReplace:'Korvaa',btnReplaceAll:'Korvaa kaikki',btnUndo:'Kumoa',noSuggestions:'Ei ehdotuksia',progress:'Tarkistus käynnissä...',noMispell:'Tarkistus valmis: Ei virheitä',noChanges:'Tarkistus valmis: Yhtään sanaa ei muutettu',oneChange:'Tarkistus valmis: Yksi sana muutettiin',manyChanges:'Tarkistus valmis: %1 sanaa muutettiin',ieSpellDownload:'Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?'},smiley:{toolbar:'Hymiö',title:'Lisää hymiö',options:'Hymiön ominaisuudet'},elementsPath:{eleLabel:'Elementin polku',eleTitle:'%1 elementti'},numberedlist:'Numerointi',bulletedlist:'Luottelomerkit',indent:'Suurenna sisennystä',outdent:'Pienennä sisennystä',justify:{left:'Tasaa vasemmat reunat',center:'Keskitä',right:'Tasaa oikeat reunat',block:'Tasaa molemmat reunat'},blockquote:'Lainaus',clipboard:{title:'Liitä',cutError:'Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).',copyError:'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).',pasteMsg:'Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.',securityMsg:'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.',pasteArea:'Leikealue'},pastefromword:{confirmCleanup:'Liittämäsi teksti näyttäisi olevan Word-dokumentista. Haluatko siivota sen ennen liittämistä? (Suositus: Kyllä)',toolbar:'Liitä Word-dokumentista',title:'Liitä Word-dokumentista',error:'Liitetyn tiedon siivoaminen ei onnistunut sisäisen virheen takia'},pasteText:{button:'Liitä tekstinä',title:'Liitä tekstinä'},templates:{button:'Pohjat',title:'Sisältöpohjat',options:'Sisältöpohjan ominaisuudet',insertOption:'Korvaa editorin koko sisältö',selectPromptMsg:'Valitse pohja editoriin<br>(aiempi sisältö menetetään):',emptyListMsg:'(Ei määriteltyjä pohjia)'},showBlocks:'Näytä elementit',stylesCombo:{label:'Tyyli',panelTitle:'Muotoilujen tyylit',panelTitle1:'Lohkojen tyylit',panelTitle2:'Rivinsisäiset tyylit',panelTitle3:'Objektien tyylit'},format:{label:'Muotoilu',panelTitle:'Muotoilu',tag_p:'Normaali',tag_pre:'Muotoiltu',tag_address:'Osoite',tag_h1:'Otsikko 1',tag_h2:'Otsikko 2',tag_h3:'Otsikko 3',tag_h4:'Otsikko 4',tag_h5:'Otsikko 5',tag_h6:'Otsikko 6',tag_div:'Normaali (DIV)'},div:{title:'Luo div-kehikko',toolbar:'Luo div-kehikko',cssClassInputLabel:'Tyylitiedoston luokat',styleSelectLabel:'Tyyli',IdInputLabel:'Id',languageCodeInputLabel:' Kielen koodi',inlineStyleInputLabel:'Sisätyyli',advisoryTitleInputLabel:'Ohjeistava otsikko',langDirLabel:'Kielen suunta',langDirLTRLabel:'Vasemmalta oikealle (LTR)',langDirRTLLabel:'Oikealta vasemmalle (RTL)',edit:'Muokkaa Diviä',remove:'Poista Div'},iframe:{title:'IFrame-kehyksen ominaisuudet',toolbar:'IFrame-kehys',noUrl:'Anna IFrame-kehykselle lähdeosoite (src)',scrolling:'Näytä vierityspalkit',border:'Näytä kehyksen reunat'},font:{label:'Kirjaisinlaji',voiceLabel:'Kirjaisinlaji',panelTitle:'Kirjaisinlaji'},fontSize:{label:'Koko',voiceLabel:'Kirjaisimen koko',panelTitle:'Koko'},colorButton:{textColorTitle:'Tekstiväri',bgColorTitle:'Taustaväri',panelTitle:'Värit',auto:'Automaattinen',more:'Lisää värejä...'},colors:{'000':'Musta',800000:'Kastanjanruskea','8B4513':'Satulanruskea','2F4F4F':'Tumma liuskekivenharmaa','008080':'Sinivihreä','000080':'Laivastonsininen','4B0082':'Indigonsininen',696969:'Tummanharmaa',B22222:'Tiili',A52A2A:'Ruskea',DAA520:'Kultapiisku','006400':'Tummanvihreä','40E0D0':'Turkoosi','0000CD':'Keskisininen',800080:'Purppura',808080:'Harmaa',F00:'Punainen',FF8C00:'Tumma oranssi',FFD700:'Kulta','008000':'Vihreä','0FF':'Syaani','00F':'Sininen',EE82EE:'Violetti',A9A9A9:'Tummanharmaa',FFA07A:'Vaaleanlohenpunainen',FFA500:'Oranssi',FFFF00:'Keltainen','00FF00':'Limetin vihreä',AFEEEE:'Haalea turkoosi',ADD8E6:'Vaaleansininen',DDA0DD:'Luumu',D3D3D3:'Vaaleanharmaa',FFF0F5:'Laventelinpunainen',FAEBD7:'Antiikinvalkoinen',FFFFE0:'Vaaleankeltainen',F0FFF0:'Hunajameloni',F0FFFF:'Asurinsininen',F0F8FF:'Alice Blue -sininen',E6E6FA:'Lavanteli',FFF:'Valkoinen'},scayt:{title:'Oikolue kirjoitettaessa',opera_title:'Opera ei tue tätä ominaisuutta',enable:'Ota käyttöön oikoluku kirjoitettaessa',disable:'Poista käytöstä oikoluku kirjoitetaessa',about:'Tietoja oikoluvusta kirjoitetaessa',toggle:'Vaihda oikoluku kirjoittaessa tilaa',options:'Asetukset',langs:'Kielet',moreSuggestions:'Lisää ehdotuksia',ignore:'Ohita',ignoreAll:'Ohita kaikki',addWord:'Lisää sana',emptyDic:'Sanakirjan nimi on annettava.',optionsTab:'Asetukset',allCaps:'Ohita sanat, jotka on kirjoitettu kokonaan isoilla kirjaimilla',ignoreDomainNames:'Ohita verkkotunnukset',mixedCase:'Ohita sanat, joissa on sekoitettu isoja ja pieniä kirjaimia',mixedWithDigits:'Ohita sanat, joissa on numeroita',languagesTab:'Kielet',dictionariesTab:'Sanakirjat',dic_field_name:'Sanakirjan nimi',dic_create:'Luo',dic_restore:'Palauta',dic_delete:'Poista',dic_rename:'Nimeä uudelleen',dic_info:'Oletuksena sanakirjat tallennetaan evästeeseen, mutta evästeiden koko on kuitenkin rajallinen. Sanakirjan kasvaessa niin suureksi, ettei se enää mahdu evästeeseen, sanakirja täytyy tallentaa palvelimellemme. Tallentaaksesi sanakirjasi palvelimellemme tulee sinun antaa sille nimi. Jos olet jo tallentanut sanakirjan, anna sen nimi ja klikkaa Palauta-painiketta',aboutTab:'Tietoa'},about:{title:'Tietoa CKEditorista',dlgTitle:'Tietoa CKEditorista',help:'Katso ohjeet: $1.',userGuide:'CKEditorin käyttäjäopas',moreInfo:'Lisenssitiedot löytyvät kotisivuiltamme:',copy:'Copyright © $1. Kaikki oikeuden pidätetään.'},maximize:'Suurenna',minimize:'Pienennä',fakeobjects:{anchor:'Ankkuri',flash:'Flash animaatio',iframe:'IFrame-kehys',hiddenfield:'Piilokenttä',unknown:'Tuntematon objekti'},resize:'Raahaa muuttaaksesi kokoa',colordialog:{title:'Valitse väri',options:'Värin ominaisuudet',highlight:'Korostus',selected:'Valittu',clear:'Poista'},toolbarCollapse:'Kutista työkalupalkki',toolbarExpand:'Laajenna työkalupalkki',toolbarGroups:{document:'Dokumentti',clipboard:'Leikepöytä/Kumoa',editing:'Muokkaus',forms:'Lomakkeet',basicstyles:'Perustyylit',paragraph:'Kappale',links:'Linkit',insert:'Lisää',styles:'Tyylit',colors:'Värit',tools:'Työkalut'},bidi:{ltr:'Tekstin suunta vasemmalta oikealle',rtl:'Tekstin suunta oikealta vasemmalle'},docprops:{label:'Dokumentin ominaisuudet',title:'Dokumentin ominaisuudet',design:'Sommittelu',meta:'Metatieto',chooseColor:'Valitse',other:'<muu>',docTitle:'Sivun nimi',charset:'Merkistökoodaus',charsetOther:'Muu merkistökoodaus',charsetASCII:'ASCII',charsetCE:'Keskieurooppalainen',charsetCT:'Kiina, perinteinen (Big5)',charsetCR:'Kyrillinen',charsetGR:'Kreikka',charsetJP:'Japani',charsetKR:'Korealainen',charsetTR:'Turkkilainen',charsetUN:'Unicode (UTF-8)',charsetWE:'Länsieurooppalainen',docType:'Dokumentin tyyppi',docTypeOther:'Muu dokumentin tyyppi',xhtmlDec:'Lisää XHTML julistukset',bgColor:'Taustaväri',bgImage:'Taustakuva',bgFixed:'Paikallaanpysyvä tausta',txtColor:'Tekstiväri',margin:'Sivun marginaalit',marginTop:'Ylä',marginLeft:'Vasen',marginRight:'Oikea',marginBottom:'Ala',metaKeywords:'Hakusanat (pilkulla erotettuna)',metaDescription:'Kuvaus',metaAuthor:'Tekijä',metaCopyright:'Tekijänoikeudet',previewHtml:'<p>Tämä on <strong>esimerkkitekstiä</strong>. Käytät juuri <a href="javascript:void(0)">CKEditoria</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fo.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fo.js
new file mode 100755
index 0000000..0f4c0d5
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fo.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fo={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Kelda',newPage:'Nýggj síða',save:'Goym',preview:'Frumsýning',cut:'Kvett',copy:'Avrita',paste:'Innrita',print:'Prenta',underline:'Undirstrikað',bold:'Feit skrift',italic:'Skráskrift',selectAll:'Markera alt',removeFormat:'Strika sniðgeving',strike:'Yvirstrikað',subscript:'Lækkað skrift',superscript:'Hækkað skrift',horizontalrule:'Ger vatnrætta linju',pagebreak:'Ger síðuskift',pagebreakAlt:'Síðuskift',unlink:'Strika tilknýti',undo:'Angra',redo:'Vend aftur',common:{browseServer:'Ambætarakagi',url:'URL',protocol:'Protokoll',upload:'Send til ambætaran',uploadSubmit:'Send til ambætaran',image:'Myndir',flash:'Flash',form:'Formur',checkbox:'Flugubein',radio:'Radioknøttur',textField:'Tekstteigur',textarea:'Tekstumráði',hiddenField:'Fjaldur teigur',button:'Knøttur',select:'Valskrá',imageButton:'Myndaknøttur',notSet:'<ikki sett>',id:'Id',name:'Navn',langDir:'Tekstkós',langDirLtr:'Frá vinstru til høgru (LTR)',langDirRtl:'Frá høgru til vinstru (RTL)',langCode:'Málkoda',longDescr:'Víðkað URL frágreiðing',cssClass:'Typografi klassar',advisoryTitle:'Vegleiðandi heiti',cssStyle:'Typografi',ok:'Góðkent',cancel:'Avlýst',close:'Lat aftur',preview:'Frumsýn',generalTab:'Generelt',advancedTab:'Fjølbroytt',validateNumberFailed:'Hetta er ikki eitt tal.',confirmNewPage:'Allar ikki goymdar broytingar í hesum innihaldið hvørva. Skal nýggj síða lesast kortini?',confirmCancel:'Nakrir valmøguleikar eru broyttir. Ert tú vísur í, at dialogurin skal latast aftur?',options:'Options',target:'Target',targetNew:'Nýtt vindeyga (_blank)',targetTop:'Vindeyga ovast (_top)',targetSelf:'Sama vindeyga (_self)',targetParent:'Upphavligt vindeyga (_parent)',langDirLTR:'Frá vinstru til høgru (LTR)',langDirRTL:'Frá høgru til vinstru (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Breidd',height:'Hædd',align:'Justering',alignLeft:'Vinstra',alignRight:'Høgra',alignCenter:'Miðsett',alignTop:'Ovast',alignMiddle:'Miðja',alignBottom:'Botnur',invalidHeight:'Hædd má vera eitt tal.',invalidWidth:'Breidd má vera eitt tal.',invalidCssLength:'Virðið sett í "%1" feltið má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px, %, in, cm, mm, em, ex, pt, ella pc).',invalidHtmlLength:'Virðið sett í "%1" feltiðield má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px ella %).',invalidInlineStyle:'Virði specifiserað fyri inline style má hava eitt ella fleiri pør (tuples) skrivað sum "name : value", hvørt parið sundurskilt við semi-colon.',cssLengthTooltip:'Skriva eitt tal fyri eitt virði í pixels ella eitt tal við gyldigum CSS eind (px, %, in, cm, mm, em, ex, pt, ella pc).',unavailable:'%1<span class="cke_accessibility">, ikki tøkt</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Set inn sertekn',title:'Vel sertekn',options:'Møguleikar við serteknum'},link:{toolbar:'Ger/broyt tilknýti',other:'<annað>',menu:'Broyt tilknýti',title:'Tilknýti',info:'Tilknýtis upplýsingar',target:'Target',upload:'Send til ambætaran',advanced:'Fjølbroytt',type:'Tilknýtisslag',toUrl:'URL',toAnchor:'Tilknýti til marknastein í tekstinum',toEmail:'Teldupostur',targetFrame:'<ramma>',targetPopup:'<popup vindeyga>',targetFrameName:'Vís navn vindeygans',targetPopupName:'Popup vindeygans navn',popupFeatures:'Popup vindeygans víðkaðu eginleikar',popupResizable:'Stødd kann broytast',popupStatusBar:'Støðufrágreiðingarbjálki',popupLocationBar:'Adressulinja',popupToolbar:'Amboðsbjálki',popupMenuBar:'Skrábjálki',popupFullScreen:'Fullur skermur (IE)',popupScrollBars:'Rullibjálki',popupDependent:'Bundið (Netscape)',popupLeft:'Frástøða frá vinstru',popupTop:'Frástøða frá íerva',id:'Id',langDir:'Tekstkós',langDirLTR:'Frá vinstru til høgru (LTR)',langDirRTL:'Frá høgru til vinstru (RTL)',acccessKey:'Snarvegisknöttur',name:'Navn',langCode:'Tekstkós',tabIndex:'Tabulator indeks',advisoryTitle:'Vegleiðandi heiti',advisoryContentType:'Vegleiðandi innihaldsslag',cssClasses:'Typografi klassar',charset:'Atknýtt teknsett',styles:'Typografi',rel:'Relatión',selectAnchor:'Vel ein marknastein',anchorName:'Eftir navni á marknasteini',anchorId:'Eftir element Id',emailAddress:'Teldupost-adressa',emailSubject:'Evni',emailBody:'Breyðtekstur',noAnchors:'(Eingir marknasteinar eru í hesum dokumentið)',noUrl:'Vinarliga skriva tilknýti (URL)',noEmail:'Vinarliga skriva teldupost-adressu'},anchor:{toolbar:'Ger/broyt marknastein',menu:'Eginleikar fyri marknastein',title:'Eginleikar fyri marknastein',name:'Heiti marknasteinsins',errorName:'Vinarliga rita marknasteinsins heiti',remove:'Strika marknastein'},list:{numberedTitle:'Eginleikar fyri lista við tølum',bulletedTitle:'Eginleikar fyri lista við prikkum',type:'Slag',start:'Byrjan',validateStartNumber:'Byrjunartalið fyri lista má vera eitt heiltal.',circle:'Sirkul',disc:'Disc',square:'Fýrkantur',none:'Einki',notset:'<ikki sett>',armenian:'Armensk talskipan',georgian:'Georgisk talskipan (an, ban, gan, osv.)',lowerRoman:'Lítil rómaratøl (i, ii, iii, iv, v, etc.)',upperRoman:'Stór rómaratøl (I, II, III, IV, V, etc.)',lowerAlpha:'Lítlir bókstavir (a, b, c, d, e, etc.)',upperAlpha:'Stórir bókstavir (A, B, C, D, E, etc.)',lowerGreek:'Grikskt við lítlum (alpha, beta, gamma, etc.)',decimal:'Vanlig tøl (1, 2, 3, etc.)',decimalLeadingZero:'Tøl við null frammanfyri (01, 02, 03, etc.)'},findAndReplace:{title:'Finn og broyt',find:'Leita',replace:'Yvirskriva',findWhat:'Finn:',replaceWith:'Yvirskriva við:',notFoundMsg:'Leititeksturin varð ikki funnin',findOptions:'Finn møguleikar',matchCase:'Munur á stórum og smáum bókstavum',matchWord:'Bert heil orð',matchCyclic:'Match cyclic',replaceAll:'Yvirskriva alt',replaceSuccessMsg:'%1 úrslit broytt.'},table:{toolbar:'Tabell',title:'Eginleikar fyri tabell',menu:'Eginleikar fyri tabell',deleteTable:'Strika tabell',rows:'Røðir',columns:'Kolonnur',border:'Bordabreidd',widthPx:'pixels',widthPc:'prosent',widthUnit:'breiddar unit',cellSpace:'Fjarstøða millum meskar',cellPad:'Meskubreddi',caption:'Tabellfrágreiðing',summary:'Samandráttur',headers:'Yvirskriftir',headersNone:'Eingin',headersColumn:'Fyrsta kolonna',headersRow:'Fyrsta rað',headersBoth:'Báðir',invalidRows:'Talið av røðum má vera eitt tal størri enn 0.',invalidCols:'Talið av kolonnum má vera eitt tal størri enn 0.',invalidBorder:'Borda-stødd má vera eitt tal.',invalidWidth:'Tabell-breidd má vera eitt tal.',invalidHeight:'Tabell-hædd má vera eitt tal.',invalidCellSpacing:'Cell spacing má vera eitt tal.',invalidCellPadding:'Cell padding má vera eitt tal.',cell:{menu:'Meski',insertBefore:'Set meska inn áðrenn',insertAfter:'Set meska inn aftaná',deleteCell:'Strika meskar',merge:'Flætta meskar',mergeRight:'Flætta meskar til høgru',mergeDown:'Flætta saman',splitHorizontal:'Kloyv meska vatnrætt',splitVertical:'Kloyv meska loddrætt',title:'Mesku eginleikar',cellType:'Mesku slag',rowSpan:'Ræð spenni',colSpan:'Kolonnu spenni',wordWrap:'Orðkloyving',hAlign:'Horisontal plasering',vAlign:'Loddrøtt plasering',alignBaseline:'Basislinja',bgColor:'Bakgrundslitur',borderColor:'Bordalitur',data:'Data',header:'Header',yes:'Ja',no:'Nei',invalidWidth:'Meskubreidd má vera eitt tal.',invalidHeight:'Meskuhædd má vera eitt tal.',invalidRowSpan:'Raðspennið má vera eitt heiltal.',invalidColSpan:'Kolonnuspennið má vera eitt heiltal.',chooseColor:'Vel'},row:{menu:'Rað',insertBefore:'Set rað inn áðrenn',insertAfter:'Set rað inn aftaná',deleteRow:'Strika røðir'},column:{menu:'Kolonna',insertBefore:'Set kolonnu inn áðrenn',insertAfter:'Set kolonnu inn aftaná',deleteColumn:'Strika kolonnur'}},button:{title:'Eginleikar fyri knøtt',text:'Tekstur',type:'Slag',typeBtn:'Knøttur',typeSbm:'Send',typeRst:'Nullstilla'},checkboxAndRadio:{checkboxTitle:'Eginleikar fyri flugubein',radioTitle:'Eginleikar fyri radioknøtt',value:'Virði',selected:'Valt'},form:{title:'Eginleikar fyri Form',menu:'Eginleikar fyri Form',action:'Hending',method:'Háttur',encoding:'Encoding'},select:{title:'Eginleikar fyri valskrá',selectInfo:'Upplýsingar',opAvail:'Tøkir møguleikar',value:'Virði',size:'Stødd',lines:'Linjur',chkMulti:'Loyv fleiri valmøguleikum samstundis',opText:'Tekstur',opValue:'Virði',btnAdd:'Legg afturat',btnModify:'Broyt',btnUp:'Upp',btnDown:'Niður',btnSetValue:'Set sum valt virði',btnDelete:'Strika'},textarea:{title:'Eginleikar fyri tekstumráði',cols:'kolonnur',rows:'røðir'},textfield:{title:'Eginleikar fyri tekstteig',name:'Navn',value:'Virði',charWidth:'Breidd (sjónlig tekn)',maxChars:'Mest loyvdu tekn',type:'Slag',typeText:'Tekstur',typePass:'Loyniorð'},hidden:{title:'Eginleikar fyri fjaldan teig',name:'Navn',value:'Virði'},image:{title:'Myndaeginleikar',titleButton:'Eginleikar fyri myndaknøtt',menu:'Myndaeginleikar',infoTab:'Myndaupplýsingar',btnUpload:'Send til ambætaran',upload:'Send',alt:'Alternativur tekstur',lockRatio:'Læs lutfallið',resetSize:'Upprunastødd',border:'Bordi',hSpace:'Høgri breddi',vSpace:'Vinstri breddi',alertUrl:'Rita slóðina til myndina',linkTab:'Tilknýti',button2Img:'Skal valdi myndaknøttur gerast til vanliga mynd?',img2Button:'Skal valda mynd gerast til myndaknøtt?',urlMissing:'URL til mynd manglar.',validateBorder:'Bordi má vera eitt heiltal.',validateHSpace:'HSpace má vera eitt heiltal.',validateVSpace:'VSpace má vera eitt heiltal.'},flash:{properties:'Flash eginleikar',propertiesTab:'Eginleikar',title:'Flash eginleikar',chkPlay:'Avspælingin byrjar sjálv',chkLoop:'Endurspæl',chkMenu:'Ger Flash skrá virkna',chkFull:'Loyv fullan skerm',scale:'Skalering',scaleAll:'Vís alt',scaleNoBorder:'Eingin bordi',scaleFit:'Neyv skalering',access:'Script atgongd',accessAlways:'Altíð',accessSameDomain:'Sama navnaøki',accessNever:'Ongantíð',alignAbsBottom:'Abs botnur',alignAbsMiddle:'Abs miðja',alignBaseline:'Basislinja',alignTextTop:'Tekst toppur',quality:'Góðska',qualityBest:'Besta',qualityHigh:'Høg',qualityAutoHigh:'Auto høg',qualityMedium:'Meðal',qualityAutoLow:'Auto Lág',qualityLow:'Lág',windowModeWindow:'Rútur',windowModeOpaque:'Ikki transparent',windowModeTransparent:'Transparent',windowMode:'Slag av rúti',flashvars:'Variablar fyri Flash',bgcolor:'Bakgrundslitur',hSpace:'Høgri breddi',vSpace:'Vinstri breddi',validateSrc:'Vinarliga skriva tilknýti (URL)',validateHSpace:'HSpace má vera eitt tal.',validateVSpace:'VSpace má vera eitt tal.'},spellCheck:{toolbar:'Kanna stavseting',title:'Kanna stavseting',notAvailable:'Tíverri, ikki tøkt í løtuni.',errorLoading:'Feilur við innlesing av application service host: %s.',notInDic:'Finst ikki í orðabókini',changeTo:'Broyt til',btnIgnore:'Forfjóna',btnIgnoreAll:'Forfjóna alt',btnReplace:'Yvirskriva',btnReplaceAll:'Yvirskriva alt',btnUndo:'Angra',noSuggestions:'- Einki uppskot -',progress:'Rættstavarin arbeiðir...',noMispell:'Rættstavarin liðugur: Eingin feilur funnin',noChanges:'Rættstavarin liðugur: Einki orð varð broytt',oneChange:'Rættstavarin liðugur: Eitt orð er broytt',manyChanges:'Rættstavarin liðugur: %1 orð broytt',ieSpellDownload:'Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?'},smiley:{toolbar:'Smiley',title:'Vel Smiley',options:'Møguleikar fyri Smiley'},elementsPath:{eleLabel:'Slóð til elementir',eleTitle:'%1 element'},numberedlist:'Talmerktur listi',bulletedlist:'Punktmerktur listi',indent:'Økja reglubrotarinntriv',outdent:'Minka reglubrotarinntriv',justify:{left:'Vinstrasett',center:'Miðsett',right:'Høgrasett',block:'Javnir tekstkantar'},blockquote:'Blockquote',clipboard:{title:'Innrita',cutError:'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).',copyError:'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).',pasteMsg:'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>Ctrl/Cmd+V</strong>) og klikk á <strong>Góðtak</strong>.',securityMsg:'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.',pasteArea:'Avritingarumráði'},pastefromword:{confirmCleanup:'Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?',toolbar:'Innrita frá Word',title:'Innrita frá Word',error:'Tað eydnaðist ikki at reinsa tekstin vegna ein internan feil'},pasteText:{button:'Innrita som reinan tekst',title:'Innrita som reinan tekst'},templates:{button:'Skabelónir',title:'Innihaldsskabelónir',options:'Møguleikar fyri Template',insertOption:'Yvirskriva núverandi innihald',selectPromptMsg:'Vinarliga vel ta skabelón, ið skal opnast í tekstviðgeranum<br>(Hetta yvirskrivar núverandi innihald):',emptyListMsg:'(Ongar skabelónir tøkar)'},showBlocks:'Vís blokkar',stylesCombo:{label:'Typografi',panelTitle:'Formatterings stílir',panelTitle1:'Blokk stílir',panelTitle2:'Inline stílir',panelTitle3:'Object stílir'},format:{label:'Skriftsnið',panelTitle:'Skriftsnið',tag_p:'Vanligt',tag_pre:'Sniðgivið',tag_address:'Adressa',tag_h1:'Yvirskrift 1',tag_h2:'Yvirskrift 2',tag_h3:'Yvirskrift 3',tag_h4:'Yvirskrift 4',tag_h5:'Yvirskrift 5',tag_h6:'Yvirskrift 6',tag_div:'Vanligt (DIV)'},div:{title:'Ger Div Container',toolbar:'Ger Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Vinstru til høgru (LTR)',langDirRTLLabel:'Høgru til vinstru (RTL)',edit:'Redigera Div',remove:'Strika Div'},iframe:{title:'Møguleikar fyri IFrame',toolbar:'IFrame',noUrl:'Vinarliga skriva URL til iframe',scrolling:'Loyv scrollbars',border:'Vís frame kant'},font:{label:'Skrift',voiceLabel:'Skrift',panelTitle:'Skrift'},fontSize:{label:'Skriftstødd',voiceLabel:'Skriftstødd',panelTitle:'Skriftstødd'},colorButton:{textColorTitle:'Tekstlitur',bgColorTitle:'Bakgrundslitur',panelTitle:'Litir',auto:'Automatiskt',more:'Fleiri litir...'},colors:{'000':'Svart',800000:'Maroon','8B4513':'Saðilsbrúnt','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Myrkagrátt',B22222:'Fire Brick',A52A2A:'Brúnt',DAA520:'Gullstavur','006400':'Myrkagrønt','40E0D0':'Turquoise','0000CD':'Meðal blátt',800080:'Purple',808080:'Grátt',F00:'Reytt',FF8C00:'Myrkt appelsingult',FFD700:'Gull','008000':'Grønt','0FF':'Cyan','00F':'Blátt',EE82EE:'Violet',A9A9A9:'Døkt grátt',FFA07A:'Ljósur laksur',FFA500:'Appelsingult',FFFF00:'Gult','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Ljósablátt',DDA0DD:'Plum',D3D3D3:'Ljósagrátt',FFF0F5:'Lavender Blush',FAEBD7:'Klassiskt hvítt',FFFFE0:'Ljósagult',F0FFF0:'Hunangsdøggur',F0FFFF:'Azure',F0F8FF:'Alice Blátt',E6E6FA:'Lavender',FFF:'Hvítt'},scayt:{title:'Kanna stavseting, meðan tú skrivar',opera_title:'Ikki stuðlað í Opera',enable:'Loyv SCAYT',disable:'Nokta SCAYT',about:'Um SCAYT',toggle:'Toggle SCAYT',options:'Uppseting',langs:'Tungumál',moreSuggestions:'Fleiri tilráðingar',ignore:'Ignorera',ignoreAll:'Ignorera alt',addWord:'Legg orð afturat',emptyDic:'Heiti á orðabók eigur ikki at vera tómt.',optionsTab:'Uppseting',allCaps:'Loyp orð við bert stórum stavum um',ignoreDomainNames:'loyp økisnøvn um',mixedCase:'Loyp orð við blandaðum smáum og stórum stavum um',mixedWithDigits:'Loyp orð við tølum um',languagesTab:'Tungumál',dictionariesTab:'Orðabøkur',dic_field_name:'Orðabókanavn',dic_create:'Upprætta nýggja',dic_restore:'Endurskapa',dic_delete:'Strika',dic_rename:'Broyt',dic_info:'Upprunaliga er brúkara-orðabókin goymd í eini cookie í tínum egna kaga. Men hesar cookies eru avmarkaðar í stødd. Tá brúkara-orðabókin veksur seg ov stóra til eina cookie, so er møguligt at goyma hana á ambætara okkara. Fyri at goyma persónligu orðabókina á ambætaranum eigur tú at velja eitt navn til tína skuffu. Hevur tú longu goymt eina orðabók, so vinarliga skriva navnið og klikk á knøttin Endurskapa.',aboutTab:'Um'},about:{title:'Um CKEditor',dlgTitle:'Um CKEditor',help:'Kekka $1 fyri hjálp.',userGuide:'CKEditor Brúkaravegleiðing',moreInfo:'Licens upplýsingar finnast á heimasíðu okkara:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maksimera',minimize:'Minimera',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Fjaldur teigur',unknown:'Ókent Object'},resize:'Drag fyri at broyta stødd',colordialog:{title:'Vel lit',options:'Litmøguleikar',highlight:'Framheva',selected:'Valdur litur',clear:'Strika'},toolbarCollapse:'Lat Toolbar aftur',toolbarExpand:'Vís Toolbar',toolbarGroups:{document:'Dokument',clipboard:'Clipboard/Undo',editing:'Editering',forms:'Formar',basicstyles:'Grundleggjandi Styles',paragraph:'Reglubrot',links:'Leinkjur',insert:'Set inn',styles:'Styles',colors:'Litir',tools:'Tól'},bidi:{ltr:'Tekstkós frá vinstru til høgru',rtl:'Tekstkós frá høgru til vinstru'},docprops:{label:'Eginleikar fyri dokument',title:'Eginleikar fyri dokument',design:'Design',meta:'META-upplýsingar',chooseColor:'Vel',other:'<annað>',docTitle:'Síðuheiti',charset:'Teknsett koda',charsetOther:'Onnur teknsett koda',charsetASCII:'ASCII',charsetCE:'Miðeuropa',charsetCT:'Kinesiskt traditionelt (Big5)',charsetCR:'Cyrilliskt',charsetGR:'Grikst',charsetJP:'Japanskt',charsetKR:'Koreanskt',charsetTR:'Turkiskt',charsetUN:'Unicode (UTF-8)',charsetWE:'Vestureuropa',docType:'Dokumentslag yvirskrift',docTypeOther:'Annað dokumentslag yvirskrift',xhtmlDec:'Viðfest XHTML deklaratiónir',bgColor:'Bakgrundslitur',bgImage:'Leið til bakgrundsmynd (URL)',bgFixed:'Læst bakgrund (rullar ikki)',txtColor:'Tekstlitur',margin:'Síðubreddar',marginTop:'Ovast',marginLeft:'Vinstra',marginRight:'Høgra',marginBottom:'Niðast',metaKeywords:'Dokument index lyklaorð (sundurbýtt við komma)',metaDescription:'Dokumentlýsing',metaAuthor:'Høvundur',metaCopyright:'Upphavsrættindi',previewHtml:'<p>Hetta er ein <strong>royndartekstur</strong>. Tygum brúka <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fr.js
new file mode 100755
index 0000000..f1b3ce4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fr={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:"Barre d'outils de l'éditeur",editor:'Éditeur de Texte Enrichi',source:'Source',newPage:'Nouvelle page',save:'Enregistrer',preview:'Aperçu',cut:'Couper',copy:'Copier',paste:'Coller',print:'Imprimer',underline:'Souligné',bold:'Gras',italic:'Italique',selectAll:'Tout sélectionner',removeFormat:'Supprimer la mise en forme',strike:'Barré',subscript:'Indice',superscript:'Exposant',horizontalrule:'Ligne horizontale',pagebreak:'Saut de page',pagebreakAlt:'Saut de page',unlink:'Supprimer le lien',undo:'Annuler',redo:'Rétablir',common:{browseServer:'Explorer le serveur',url:'URL',protocol:'Protocole',upload:'Envoyer',uploadSubmit:'Envoyer sur le serveur',image:'Image',flash:'Flash',form:'Formulaire',checkbox:'Case à cocher',radio:'Bouton Radio',textField:'Champ texte',textarea:'Zone de texte',hiddenField:'Champ caché',button:'Bouton',select:'Liste déroulante',imageButton:'Bouton image',notSet:'<non défini>',id:'Id',name:'Nom',langDir:"Sens d'écriture",langDirLtr:'Gauche à droite (LTR)',langDirRtl:'Droite à gauche (RTL)',langCode:'Code de langue',longDescr:'URL de description longue (longdesc => malvoyant)',cssClass:'Classe CSS',advisoryTitle:'Description (title)',cssStyle:'Style',ok:'OK',cancel:'Annuler',close:'Fermer',preview:'Aperçu',generalTab:'Général',advancedTab:'Avancé',validateNumberFailed:"Cette valeur n'est pas un nombre.",confirmNewPage:'Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page?',confirmCancel:'Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer?',options:'Options',target:'Cible (Target)',targetNew:'Nouvelle fenêtre (_blank)',targetTop:'Fenêtre supérieure (_top)',targetSelf:'Même fenêtre (_self)',targetParent:'Fenêtre parent (_parent)',langDirLTR:'Gauche à Droite (LTR)',langDirRTL:'Droite à Gauche (RTL)',styles:'Style',cssClasses:'Classes de style',width:'Largeur',height:'Hauteur',align:'Alignement',alignLeft:'Gauche',alignRight:'Droite',alignCenter:'Centré',alignTop:'Haut',alignMiddle:'Milieu',alignBottom:'Bas',invalidHeight:'La hauteur doit être un nombre.',invalidWidth:'La largeur doit être un nombre.',invalidCssLength:'La valeur spécifiée pour le champ "%1" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'La valeur spécifiée pour le champ "%1" doit être un nombre positif avec ou sans unité de mesure HTML valide (px or %).',invalidInlineStyle:'La valeur spécifiée pour le style inline doit être composée d\'un ou plusieurs couples de valeur au format "nom : valeur", separés par des points-virgules.',cssLengthTooltip:'Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, Indisponible</span>'},contextmenu:{options:'Options du menu contextuel'},specialChar:{toolbar:'Insérer un caractère spécial',title:'Sélectionnez un caractère',options:'Options des caractères spéciaux'},link:{toolbar:'Lien',other:'<autre>',menu:'Editer le lien',title:'Lien',info:'Infos sur le lien',target:'Cible',upload:'Envoyer',advanced:'Avancé',type:'Type de lien',toUrl:'URL',toAnchor:'Transformer le lien en ancre dans le texte',toEmail:'E-mail',targetFrame:'<cadre>',targetPopup:'<fenêtre popup>',targetFrameName:'Nom du Cadre destination',targetPopupName:'Nom de la fenêtre popup',popupFeatures:'Options de la fenêtre popup',popupResizable:'Redimensionnable',popupStatusBar:'Barre de status',popupLocationBar:"Barre d'adresse",popupToolbar:"Barre d'outils",popupMenuBar:'Barre de menu',popupFullScreen:'Plein écran (IE)',popupScrollBars:'Barres de défilement',popupDependent:'Dépendante (Netscape)',popupLeft:'Position gauche',popupTop:'Position haute',id:'Id',langDir:"Sens d'écriture",langDirLTR:'Gauche à droite',langDirRTL:'Droite à gauche',acccessKey:"Touche d'accessibilité",name:'Nom',langCode:'Code de langue',tabIndex:'Index de tabulation',advisoryTitle:'Description (title)',advisoryContentType:'Type de contenu (ex: text/html)',cssClasses:'Classe CSS',charset:'Charset de la cible',styles:'Style',rel:'Relation',selectAnchor:"Sélectionner l'ancre",anchorName:"Par nom d'ancre",anchorId:"Par ID d'élément",emailAddress:'Adresse E-Mail',emailSubject:'Sujet du message',emailBody:'Corps du message',noAnchors:'(Aucune ancre disponible dans ce document)',noUrl:"Veuillez entrer l'adresse du lien",noEmail:"Veuillez entrer l'adresse e-mail"},anchor:{toolbar:'Ancre',menu:"Editer l'ancre",title:"Propriétés de l'ancre",name:"Nom de l'ancre",errorName:"Veuillez entrer le nom de l'ancre.",remove:"Supprimer l'ancre"},list:{numberedTitle:'Propriétés de la liste numérotée',bulletedTitle:'Propriétés de la liste à puces',type:'Type',start:'Début',validateStartNumber:'Le premier élément de la liste doit être un nombre entier.',circle:'Cercle',disc:'Disque',square:'Carré',none:'Aucun',notset:'<Non défini>',armenian:'Numération arménienne',georgian:'Numération géorgienne (an, ban, gan, etc.)',lowerRoman:'Nombres romains minuscules (i, ii, iii, iv, v, etc.)',upperRoman:'Nombres romains majuscules (I, II, III, IV, V, etc.)',lowerAlpha:'Alphabétique minuscules (a, b, c, d, e, etc.)',upperAlpha:'Alphabétique majuscules (A, B, C, D, E, etc.)',lowerGreek:'Grec minuscule (alpha, beta, gamma, etc.)',decimal:'Décimal (1, 2, 3, etc.)',decimalLeadingZero:'Décimal précédé par un 0 (01, 02, 03, etc.)'},findAndReplace:{title:'Trouver et remplacer',find:'Trouver',replace:'Remplacer',findWhat:'Expression à trouver: ',replaceWith:'Remplacer par: ',notFoundMsg:'Le texte spécifié ne peut être trouvé.',findOptions:'Options de recherche',matchCase:'Respecter la casse',matchWord:'Mot entier uniquement',matchCyclic:'Boucler',replaceAll:'Remplacer tout',replaceSuccessMsg:'%1 occurrence(s) replacée(s).'},table:{toolbar:'Tableau',title:'Propriétés du tableau',menu:'Propriétés du tableau',deleteTable:'Supprimer le tableau',rows:'Lignes',columns:'Colonnes',border:'Taille de la bordure',widthPx:'pixels',widthPc:'% pourcents',widthUnit:'unité de largeur',cellSpace:'Espacement des cellules',cellPad:'Marge interne des cellules',caption:'Titre du tableau',summary:'Résumé (description)',headers:'En-Têtes',headersNone:'Aucunes',headersColumn:'Première colonne',headersRow:'Première ligne',headersBoth:'Les deux',invalidRows:'Le nombre de lignes doit être supérieur à 0.',invalidCols:'Le nombre de colonnes doit être supérieur à 0.',invalidBorder:'La taille de la bordure doit être un nombre.',invalidWidth:'La largeur du tableau doit être un nombre.',invalidHeight:'La hauteur du tableau doit être un nombre.',invalidCellSpacing:"L'espacement des cellules doit être un nombre positif.",invalidCellPadding:'La marge intérieure des cellules doit être un nombre positif.',cell:{menu:'Cellule',insertBefore:'Insérer une cellule avant',insertAfter:'Insérer une cellule après',deleteCell:'Supprimer les cellules',merge:'Fusionner les cellules',mergeRight:'Fusionner à droite',mergeDown:'Fusionner en bas',splitHorizontal:'Fractionner horizontalement',splitVertical:'Fractionner verticalement',title:'Propriétés de la cellule',cellType:'Type de cellule',rowSpan:'Fusion de lignes',colSpan:'Fusion de colonnes',wordWrap:'Césure',hAlign:'Alignement Horizontal',vAlign:'Alignement Vertical',alignBaseline:'Bas du texte',bgColor:"Couleur d'arrière-plan",borderColor:'Couleur de Bordure',data:'Données',header:'Entête',yes:'Oui',no:'Non',invalidWidth:'La Largeur de Cellule doit être un nombre.',invalidHeight:'La Hauteur de Cellule doit être un nombre.',invalidRowSpan:'La fusion de lignes doit être un nombre entier.',invalidColSpan:'La fusion de colonnes doit être un nombre entier.',chooseColor:'Choisissez'},row:{menu:'Ligne',insertBefore:'Insérer une ligne avant',insertAfter:'Insérer une ligne après',deleteRow:'Supprimer les lignes'},column:{menu:'Colonnes',insertBefore:'Insérer une colonne avant',insertAfter:'Insérer une colonne après',deleteColumn:'Supprimer les colonnes'}},button:{title:'Propriétés du bouton',text:'Texte (Value)',type:'Type',typeBtn:'Bouton',typeSbm:'Validation (submit)',typeRst:'Remise à zéro'},checkboxAndRadio:{checkboxTitle:'Propriétés de la case à cocher',radioTitle:'Propriétés du bouton Radio',value:'Valeur',selected:'Sélectionné'},form:{title:'Propriétés du formulaire',menu:'Propriétés du formulaire',action:'Action',method:'Méthode',encoding:'Encodage'},select:{title:'Propriétés du menu déroulant',selectInfo:'Informations sur le menu déroulant',opAvail:'Options disponibles',value:'Valeur',size:'Taille',lines:'Lignes',chkMulti:'Permettre les sélections multiples',opText:'Texte',opValue:'Valeur',btnAdd:'Ajouter',btnModify:'Modifier',btnUp:'Haut',btnDown:'Bas',btnSetValue:'Définir comme valeur sélectionnée',btnDelete:'Supprimer'},textarea:{title:'Propriétés de la zone de texte',cols:'Colonnes',rows:'Lignes'},textfield:{title:'Propriétés du champ texte',name:'Nom',value:'Valeur',charWidth:'Taille des caractères',maxChars:'Nombre maximum de caractères',type:'Type',typeText:'Texte',typePass:'Mot de passe'},hidden:{title:'Propriétés du champ caché',name:'Nom',value:'Valeur'},image:{title:"Propriétés de l'image",titleButton:'Propriétés du bouton image',menu:"Propriétés de l'image",infoTab:"Informations sur l'image",btnUpload:'Envoyer sur le serveur',upload:'Envoyer',alt:'Texte de remplacement',lockRatio:'Conserver les proportions',resetSize:"Taille d'origine",border:'Bordure',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',alertUrl:"Veuillez entrer l'adresse de l'image",linkTab:'Lien',button2Img:'Voulez-vous transformer le bouton image sélectionné en simple image?',img2Button:"Voulez-vous transformer l'image en bouton image?",urlMissing:"L'adresse source de l'image est manquante.",validateBorder:'Bordure doit être un entier.',validateHSpace:'HSpace doit être un entier.',validateVSpace:'VSpace doit être un entier.'},flash:{properties:'Propriétés du Flash',propertiesTab:'Propriétés',title:'Propriétés du Flash',chkPlay:'Jouer automatiquement',chkLoop:'Boucle',chkMenu:'Activer le menu Flash',chkFull:'Permettre le plein écran',scale:'Echelle',scaleAll:'Afficher tout',scaleNoBorder:'Pas de bordure',scaleFit:"Taille d'origine",access:'Accès aux scripts',accessAlways:'Toujours',accessSameDomain:'Même domaine',accessNever:'Jamais',alignAbsBottom:'Bas absolu',alignAbsMiddle:'Milieu absolu',alignBaseline:'Bas du texte',alignTextTop:'Haut du texte',quality:'Qualité',qualityBest:'Meilleure',qualityHigh:'Haute',qualityAutoHigh:'Haute Auto',qualityMedium:'Moyenne',qualityAutoLow:'Basse Auto',qualityLow:'Basse',windowModeWindow:'Fenêtre',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Mode fenêtre',flashvars:'Variables du Flash',bgcolor:"Couleur d'arrière-plan",hSpace:'Espacement horizontal',vSpace:'Espacement vertical',validateSrc:"L'adresse ne doit pas être vide.",validateHSpace:"L'espacement horizontal doit être un nombre.",validateVSpace:"L'espacement vertical doit être un nombre."},spellCheck:{toolbar:"Vérifier l'orthographe",title:"Vérifier l'orthographe",notAvailable:'Désolé, le service est indisponible actuellement.',errorLoading:"Erreur du chargement du service depuis l'hôte : %s.",notInDic:"N'existe pas dans le dictionnaire.",changeTo:'Modifier pour',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer tout',btnReplace:'Remplacer',btnReplaceAll:'Remplacer tout',btnUndo:'Annuler',noSuggestions:'- Aucune suggestion -',progress:"Vérification de l'orthographe en cours...",noMispell:"Vérification de l'orthographe terminée : aucune erreur trouvée.",noChanges:"Vérification de l'orthographe terminée : Aucun mot corrigé.",oneChange:"Vérification de l'orthographe terminée : Un seul mot corrigé.",manyChanges:"Vérification de l'orthographe terminée : %1 mots corrigés.",ieSpellDownload:"La vérification d'orthographe n'est pas installée. Voulez-vous la télécharger maintenant?"},smiley:{toolbar:'Émoticones',title:'Insérer un émoticone',options:'Options des émoticones'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 éléments'},numberedlist:'Insérer/Supprimer la liste numérotée',bulletedlist:'Insérer/Supprimer la liste à puces',indent:'Augmenter le retrait (tabulation)',outdent:'Diminuer le retrait (tabulation)',justify:{left:'Aligner à gauche',center:'Centrer',right:'Aligner à droite',block:'Justifier'},blockquote:'Citation',clipboard:{title:'Coller',cutError:"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement l'opération \"couper\". Veuillez utiliser le raccourci clavier (Ctrl/Cmd+X).",copyError:"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl/Cmd+C).",pasteMsg:'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (<strong>Ctrl/Cmd+V</strong>) et cliquez sur OK.',securityMsg:"A cause des paramètres de sécurité de votre navigateur, l'éditeur n'est pas en mesure d'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.",pasteArea:'Coller la zone'},pastefromword:{confirmCleanup:'Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?',toolbar:'Coller depuis Word',title:'Coller depuis Word',error:"Il n'a pas été possible de nettoyer les données collées à la suite d'une erreur interne."},pasteText:{button:'Coller comme texte sans mise en forme',title:'Coller comme texte sans mise en forme'},templates:{button:'Modèles',title:'Contenu des modèles',options:'Options des modèles',insertOption:'Remplacer le contenu actuel',selectPromptMsg:"Veuillez sélectionner le modèle pour l'ouvrir dans l'éditeur",emptyListMsg:'(Aucun modèle disponible)'},showBlocks:'Afficher les blocs',stylesCombo:{label:'Styles',panelTitle:'Styles de mise en page',panelTitle1:'Styles de blocs',panelTitle2:'Styles en ligne',panelTitle3:"Styles d'objet"},format:{label:'Format',panelTitle:'Format de paragraphe',tag_p:'Normal',tag_pre:'Formaté',tag_address:'Adresse',tag_h1:'Titre 1',tag_h2:'Titre 2',tag_h3:'Titre 3',tag_h4:'Titre 4',tag_h5:'Titre 5',tag_h6:'Titre 6',tag_div:'Normal (DIV)'},div:{title:'Créer un container DIV',toolbar:'Créer un container DIV',cssClassInputLabel:'Classe CSS',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:'Code de langue',inlineStyleInputLabel:'Style en ligne',advisoryTitleInputLabel:'Advisory Title',langDirLabel:"Sens d'écriture",langDirLTRLabel:'Gauche à droite (LTR)',langDirRTLLabel:'Droite à gauche (RTL)',edit:'Éditer la DIV',remove:'Enlever la DIV'},iframe:{title:'Propriétés de la IFrame',toolbar:'IFrame',noUrl:"Veuillez entrer l'adresse du lien de la IFrame",scrolling:'Permettre à la barre de défilement',border:'Afficher une bordure de la IFrame'},font:{label:'Police',voiceLabel:'Police',panelTitle:'Style de police'},fontSize:{label:'Taille',voiceLabel:'Taille de police',panelTitle:'Taille de police'},colorButton:{textColorTitle:'Couleur de texte',bgColorTitle:"Couleur d'arrière plan",panelTitle:'Couleurs',auto:'Automatique',more:'Plus de couleurs...'},colors:{'000':'Noir',800000:'Marron','8B4513':'Brun moyen','2F4F4F':'Vert sombre','008080':'Canard','000080':'Bleu marine','4B0082':'Indigo',696969:'Gris foncé',B22222:'Rouge brique',A52A2A:'Brun',DAA520:'Or terni','006400':'Vert foncé','40E0D0':'Turquoise','0000CD':'Bleu royal',800080:'Pourpre',808080:'Gris',F00:'Rouge',FF8C00:'Orange foncé',FFD700:'Or','008000':'Vert','0FF':'Cyan','00F':'Bleu',EE82EE:'Violet',A9A9A9:'Gris moyen',FFA07A:'Saumon',FFA500:'Orange',FFFF00:'Jaune','00FF00':'Lime',AFEEEE:'Turquoise clair',ADD8E6:'Bleu clair',DDA0DD:'Prune',D3D3D3:'Gris clair',FFF0F5:'Fard Lavande',FAEBD7:'Blanc antique',FFFFE0:'Jaune clair',F0FFF0:'Honeydew',F0FFFF:'Azur',F0F8FF:'Bleu Alice',E6E6FA:'Lavande',FFF:'Blanc'},scayt:{title:"Vérification de l'Orthographe en Cours de Frappe (SCAYT)",opera_title:'Non supporté par Opera',enable:'Activer SCAYT',disable:'Désactiver SCAYT',about:'A propos de SCAYT',toggle:'Activer/Désactiver SCAYT',options:'Options',langs:'Langues',moreSuggestions:'Plus de suggestions',ignore:'Ignorer',ignoreAll:'Ignorer Tout',addWord:'Ajouter le mot',emptyDic:'Le nom du dictionnaire ne devrait pas être vide.',optionsTab:'Options',allCaps:'Ignorer les mots entièrement en majuscules',ignoreDomainNames:'Ignorer les noms de domaines',mixedCase:'Ignorer les mots à casse multiple',mixedWithDigits:'Ignorer les mots contenant des chiffres',languagesTab:'Langues',dictionariesTab:'Dictionnaires',dic_field_name:'Nom du dictionnaire',dic_create:'Créer',dic_restore:'Restaurer',dic_delete:'Effacer',dic_rename:'Renommer',dic_info:"Initialement, le dictionnaire de l'utilisateur est stocké dans un cookie. Cependant, les cookies sont limités en taille. Quand le dictionnaire atteint une taille qu'il n'est plus possible de stocker dans un cookie, il peut alors être stocké sur nos serveurs. Afin de stocker votre dictionnaire personnel sur nos serveurs, vous devez spécifier un nom pour ce dictionnaire. Si vous avez déjà un dictionnaire stocké, merci de taper son nom puis cliquer sur Restaurer pour le récupérer.",aboutTab:'À propos de'},about:{title:'À propos de CKEditor',dlgTitle:'À propos de CKEditor',help:"Consulter $1 pour l'aide.",userGuide:"Guide de l'utilisateur CKEditor en anglais",moreInfo:'Pour les informations de licence, veuillez visiter notre site web:',copy:'Copyright © $1. Tous droits réservés.'},maximize:'Agrandir',minimize:'Minimiser',fakeobjects:{anchor:'Ancre',flash:'Animation Flash',iframe:'IFrame',hiddenfield:'Champ caché',unknown:'Objet inconnu'},resize:'Déplacer pour modifier la taille',colordialog:{title:'Choisir une couleur',options:'Option des couleurs',highlight:'Détails',selected:'Couleur choisie',clear:'Effacer'},toolbarCollapse:"Enrouler la barre d'outils",toolbarExpand:"Dérouler la barre d'outils",toolbarGroups:{document:'Document',clipboard:'Presse-papier/Défaire',editing:'Editer',forms:'Formulaires',basicstyles:'Styles de base',paragraph:'Paragraphe',links:'Liens',insert:'Insérer',styles:'Styles',colors:'Couleurs',tools:'Outils'},bidi:{ltr:'Direction du texte de la gauche vers la droite',rtl:'Direction du texte de la droite vers la gauche'},docprops:{label:'Propriétés du document',title:'Propriétés du document',design:'Design',meta:'Métadonnées',chooseColor:'Choisissez',other:'<autre>',docTitle:'Titre de la page',charset:'Encodage de caractère',charsetOther:'Autre encodage de caractère',charsetASCII:'ASCII',charsetCE:'Europe Centrale',charsetCT:'Chinois Traditionnel (Big5)',charsetCR:'Cyrillique',charsetGR:'Grec',charsetJP:'Japonais',charsetKR:'Coréen',charsetTR:'Turc',charsetUN:'Unicode (UTF-8)',charsetWE:'Occidental',docType:'Type de document',docTypeOther:'Autre type de document',xhtmlDec:'Inclure les déclarations XHTML',bgColor:'Couleur de fond',bgImage:'Image de fond',bgFixed:'Image fixe sans défilement',txtColor:'Couleur de texte',margin:'Marges',marginTop:'Haut',marginLeft:'Gauche',marginRight:'Droite',marginBottom:'Bas',metaKeywords:'Mots-clés (séparés par des virgules)',metaDescription:'Description',metaAuthor:'Auteur',metaCopyright:'Copyright',previewHtml:'<p>Ceci est un <strong>texte d\'exemple</strong>. Vous utilisez <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fr-ca.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fr-ca.js
new file mode 100755
index 0000000..09e9922
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/fr-ca.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['fr-ca']={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Source',newPage:'Nouvelle page',save:'Sauvegarder',preview:'Previsualiser',cut:'Couper',copy:'Copier',paste:'Coller',print:'Imprimer',underline:'Souligné',bold:'Gras',italic:'Italique',selectAll:'Tout sélectionner',removeFormat:'Supprimer le formatage',strike:'Barrer',subscript:'Indice',superscript:'Exposant',horizontalrule:'Insérer un séparateur',pagebreak:'Insérer un saut de page',pagebreakAlt:'Page Break',unlink:'Supprimer le lien',undo:'Annuler',redo:'Refaire',common:{browseServer:'Parcourir le serveur',url:'URL',protocol:'Protocole',upload:'Télécharger',uploadSubmit:'Envoyer sur le serveur',image:'Image',flash:'Animation Flash',form:'Formulaire',checkbox:'Case à cocher',radio:'Bouton radio',textField:'Champ texte',textarea:'Zone de texte',hiddenField:'Champ caché',button:'Bouton',select:'Champ de sélection',imageButton:'Bouton image',notSet:'<Par défaut>',id:'Id',name:'Nom',langDir:"Sens d'écriture",langDirLtr:'De gauche à droite (LTR)',langDirRtl:'De droite à gauche (RTL)',langCode:'Code langue',longDescr:'URL de description longue',cssClass:'Classes de feuilles de style',advisoryTitle:'Titre',cssStyle:'Style',ok:'OK',cancel:'Annuler',close:'Close',preview:'Preview',generalTab:'Général',advancedTab:'Avancée',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Largeur',height:'Hauteur',align:'Alignement',alignLeft:'Gauche',alignRight:'Droite',alignCenter:'Centré',alignTop:'Haut',alignMiddle:'Milieu',alignBottom:'Bas',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insérer un caractère spécial',title:'Insérer un caractère spécial',options:'Special Character Options'},link:{toolbar:'Insérer/modifier le lien',other:'<other>',menu:'Modifier le lien',title:'Propriétés du lien',info:'Informations sur le lien',target:'Destination',upload:'Télécharger',advanced:'Avancée',type:'Type de lien',toUrl:'URL',toAnchor:'Ancre dans cette page',toEmail:'E-Mail',targetFrame:'<Cadre>',targetPopup:'<fenêtre popup>',targetFrameName:'Nom du cadre de destination',targetPopupName:'Nom de la fenêtre popup',popupFeatures:'Caractéristiques de la fenêtre popup',popupResizable:'Resizable',popupStatusBar:"Barre d'état",popupLocationBar:"Barre d'adresses",popupToolbar:"Barre d'outils",popupMenuBar:'Barre de menu',popupFullScreen:'Plein écran (IE)',popupScrollBars:'Barres de défilement',popupDependent:'Dépendante (Netscape)',popupLeft:'Position à partir de la gauche',popupTop:'Position à partir du haut',id:'Id',langDir:"Sens d'écriture",langDirLTR:'De gauche à droite (LTR)',langDirRTL:'De droite à gauche (RTL)',acccessKey:'Équivalent clavier',name:'Nom',langCode:"Sens d'écriture",tabIndex:'Ordre de tabulation',advisoryTitle:'Titre',advisoryContentType:'Type de contenu',cssClasses:'Classes de feuilles de style',charset:'Encodage de caractère',styles:'Style',rel:'Relationship',selectAnchor:'Sélectionner une ancre',anchorName:'Par nom',anchorId:'Par id',emailAddress:'Adresse E-Mail',emailSubject:'Sujet du message',emailBody:'Corps du message',noAnchors:"(Pas d'ancre disponible dans le document)",noUrl:"Veuillez saisir l'URL",noEmail:"Veuillez saisir l'adresse e-mail"},anchor:{toolbar:"Insérer/modifier l'ancre",menu:"Propriétés de l'ancre",title:"Propriétés de l'ancre",name:"Nom de l'ancre",errorName:"Veuillez saisir le nom de l'ancre",remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Chercher et Remplacer',find:'Chercher',replace:'Remplacer',findWhat:'Rechercher:',replaceWith:'Remplacer par:',notFoundMsg:'Le texte indiqué est introuvable.',findOptions:'Find Options',matchCase:'Respecter la casse',matchWord:'Mot entier',matchCyclic:'Match cyclic',replaceAll:'Tout remplacer',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tableau',title:'Propriétés du tableau',menu:'Propriétés du tableau',deleteTable:'Supprimer le tableau',rows:'Lignes',columns:'Colonnes',border:'Taille de la bordure',widthPx:'pixels',widthPc:'pourcentage',widthUnit:'width unit',cellSpace:'Espacement',cellPad:'Contour',caption:'Titre',summary:'Résumé',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cellule',insertBefore:'Insérer une cellule avant',insertAfter:'Insérer une cellule après',deleteCell:'Supprimer des cellules',merge:'Fusionner les cellules',mergeRight:'Fusionner à droite',mergeDown:'Fusionner en bas',splitHorizontal:'Scinder la cellule horizontalement',splitVertical:'Scinder la cellule verticalement',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Ligne',insertBefore:'Insérer une ligne avant',insertAfter:'Insérer une ligne après',deleteRow:'Supprimer des lignes'},column:{menu:'Colonne',insertBefore:'Insérer une colonne avant',insertAfter:'Insérer une colonne après',deleteColumn:'Supprimer des colonnes'}},button:{title:'Propriétés du bouton',text:'Texte (Valeur)',type:'Type',typeBtn:'Bouton',typeSbm:'Soumettre',typeRst:'Réinitialiser'},checkboxAndRadio:{checkboxTitle:'Propriétés de la case à cocher',radioTitle:'Propriétés du bouton radio',value:'Valeur',selected:'Sélectionné'},form:{title:'Propriétés du formulaire',menu:'Propriétés du formulaire',action:'Action',method:'Méthode',encoding:'Encoding'},select:{title:'Propriétés de la liste/du menu',selectInfo:'Info',opAvail:'Options disponibles',value:'Valeur',size:'Taille',lines:'lignes',chkMulti:'Sélection multiple',opText:'Texte',opValue:'Valeur',btnAdd:'Ajouter',btnModify:'Modifier',btnUp:'Monter',btnDown:'Descendre',btnSetValue:'Valeur sélectionnée',btnDelete:'Supprimer'},textarea:{title:'Propriétés de la zone de texte',cols:'Colonnes',rows:'Lignes'},textfield:{title:'Propriétés du champ texte',name:'Nom',value:'Valeur',charWidth:'Largeur en caractères',maxChars:'Nombre maximum de caractères',type:'Type',typeText:'Texte',typePass:'Mot de passe'},hidden:{title:'Propriétés du champ caché',name:'Nom',value:'Valeur'},image:{title:"Propriétés de l'image",titleButton:'Propriétés du bouton image',menu:"Propriétés de l'image",infoTab:"Informations sur l'image",btnUpload:'Envoyer sur le serveur',upload:'Télécharger',alt:'Texte de remplacement',lockRatio:'Garder les proportions',resetSize:'Taille originale',border:'Bordure',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',alertUrl:"Veuillez saisir l'URL de l'image",linkTab:'Lien',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:"Propriétés de l'animation Flash",propertiesTab:'Properties',title:"Propriétés de l'animation Flash",chkPlay:'Lecture automatique',chkLoop:'Boucle',chkMenu:'Activer le menu Flash',chkFull:'Allow Fullscreen',scale:'Affichage',scaleAll:'Par défaut (tout montrer)',scaleNoBorder:'Sans bordure',scaleFit:'Ajuster aux dimensions',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs Bas',alignAbsMiddle:'Abs Milieu',alignBaseline:'Bas du texte',alignTextTop:'Haut du texte',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Couleur de fond',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',validateSrc:"Veuillez saisir l'URL",validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Orthographe',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Pas dans le dictionnaire',changeTo:'Changer en',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer tout',btnReplace:'Remplacer',btnReplaceAll:'Remplacer tout',btnUndo:'Annuler',noSuggestions:'- Pas de suggestion -',progress:"Vérification d'orthographe en cours...",noMispell:"Vérification d'orthographe terminée: pas d'erreur trouvée",noChanges:"Vérification d'orthographe terminée: Pas de modifications",oneChange:"Vérification d'orthographe terminée: Un mot modifié",manyChanges:"Vérification d'orthographe terminée: %1 mots modifiés",ieSpellDownload:"Le Correcteur d'orthographe n'est pas installé. Souhaitez-vous le télécharger maintenant?"},smiley:{toolbar:'Emoticon',title:'Insérer un Emoticon',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Liste numérotée',bulletedlist:'Liste à puces',indent:'Augmenter le retrait',outdent:'Diminuer le retrait',justify:{left:'Aligner à gauche',center:'Centrer',right:'Aligner à Droite',block:'Texte justifié'},blockquote:'Citation',clipboard:{title:'Coller',cutError:"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).",copyError:"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).",pasteMsg:'Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl/Cmd+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.',securityMsg:"A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.",pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Coller en tant que Word (formaté)',title:'Coller en tant que Word (formaté)',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Coller comme texte',title:'Coller comme texte'},templates:{button:'Modèles',title:'Modèles de contenu',options:'Template Options',insertOption:'Remplacer tout le contenu actuel',selectPromptMsg:"Sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",emptyListMsg:'(Aucun modèle disponible)'},showBlocks:'Afficher les blocs',stylesCombo:{label:'Style',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formaté',tag_address:'Adresse',tag_h1:'En-tête 1',tag_h2:'En-tête 2',tag_h3:'En-tête 3',tag_h4:'En-tête 4',tag_h5:'En-tête 5',tag_h6:'En-tête 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Police',voiceLabel:'Font',panelTitle:'Police'},fontSize:{label:'Taille',voiceLabel:'Font Size',panelTitle:'Taille'},colorButton:{textColorTitle:'Couleur de caractère',bgColorTitle:'Couleur de fond',panelTitle:'Colors',auto:'Automatique',more:'Plus de couleurs...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Propriétés du document',title:'Propriétés du document',design:'Design',meta:'Méta-Données',chooseColor:'Choose',other:'<other>',docTitle:'Titre de la page',charset:'Encodage de caractère',charsetOther:'Autre encodage de caractère',charsetASCII:'ASCII',charsetCE:'Europe Centrale',charsetCT:'Chinois Traditionnel (Big5)',charsetCR:'Cyrillique',charsetGR:'Grecque',charsetJP:'Japonais',charsetKR:'Coréen',charsetTR:'Turcque',charsetUN:'Unicode (UTF-8)',charsetWE:'Occidental',docType:'Type de document',docTypeOther:'Autre type de document',xhtmlDec:'Inclure les déclarations XHTML',bgColor:'Couleur de fond',bgImage:'Image de fond',bgFixed:'Image fixe sans défilement',txtColor:'Couleur de caractère',margin:'Marges',marginTop:'Haut',marginLeft:'Gauche',marginRight:'Droite',marginBottom:'Bas',metaKeywords:'Mots-clés (séparés par des virgules)',metaDescription:'Description',metaAuthor:'Auteur',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/gl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/gl.js
new file mode 100755
index 0000000..fce8547
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/gl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.gl={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Código Fonte',newPage:'Nova Páxina',save:'Gardar',preview:'Vista Previa',cut:'Cortar',copy:'Copiar',paste:'Pegar',print:'Imprimir',underline:'Sub-raiado',bold:'Negrita',italic:'Cursiva',selectAll:'Seleccionar todo',removeFormat:'Eliminar Formato',strike:'Tachado',subscript:'Subíndice',superscript:'Superíndice',horizontalrule:'Inserir Liña Horizontal',pagebreak:'Inserir Salto de Páxina',pagebreakAlt:'Page Break',unlink:'Eliminar Ligazón',undo:'Desfacer',redo:'Refacer',common:{browseServer:'Navegar no Servidor',url:'URL',protocol:'Protocolo',upload:'Carregar',uploadSubmit:'Enviar ó Servidor',image:'Imaxe',flash:'Flash',form:'Formulario',checkbox:'Cadro de Verificación',radio:'Botón de Radio',textField:'Campo de Texto',textarea:'Área de Texto',hiddenField:'Campo Oculto',button:'Botón',select:'Campo de Selección',imageButton:'Botón de Imaxe',notSet:'<non definido>',id:'Id',name:'Nome',langDir:'Orientación do Idioma',langDirLtr:'Esquerda a Dereita (LTR)',langDirRtl:'Dereita a Esquerda (RTL)',langCode:'Código do Idioma',longDescr:'Descrición Completa da URL',cssClass:'Clases da Folla de Estilos',advisoryTitle:'Título',cssStyle:'Estilo',ok:'OK',cancel:'Cancelar',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanzado',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Largura',height:'Altura',align:'Aliñamento',alignLeft:'Esquerda',alignRight:'Dereita',alignCenter:'Centro',alignTop:'Tope',alignMiddle:'Centro',alignBottom:'Pé',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Inserir Carácter Especial',title:'Seleccione Caracter Especial',options:'Special Character Options'},link:{toolbar:'Inserir/Editar Ligazón',other:'<outro>',menu:'Editar Ligazón',title:'Ligazón',info:'Información da Ligazón',target:'Destino',upload:'Carregar',advanced:'Advanzado',type:'Tipo de Ligazón',toUrl:'URL',toAnchor:'Referencia nesta páxina',toEmail:'E-Mail',targetFrame:'<frame>',targetPopup:'<Xanela Emerxente>',targetFrameName:'Nome do Marco Destino',targetPopupName:'Nome da Xanela Emerxente',popupFeatures:'Características da Xanela Emerxente',popupResizable:'Resizable',popupStatusBar:'Barra de Estado',popupLocationBar:'Barra de Localización',popupToolbar:'Barra de Ferramentas',popupMenuBar:'Barra de Menú',popupFullScreen:'A Toda Pantalla (IE)',popupScrollBars:'Barras de Desplazamento',popupDependent:'Dependente (Netscape)',popupLeft:'Posición Esquerda',popupTop:'Posición dende Arriba',id:'Id',langDir:'Orientación do Idioma',langDirLTR:'Esquerda a Dereita (LTR)',langDirRTL:'Dereita a Esquerda (RTL)',acccessKey:'Chave de Acceso',name:'Nome',langCode:'Orientación do Idioma',tabIndex:'Índice de Tabulación',advisoryTitle:'Título',advisoryContentType:'Tipo de Contido',cssClasses:'Clases da Folla de Estilos',charset:'Fonte de Caracteres Vinculado',styles:'Estilo',rel:'Relationship',selectAnchor:'Seleccionar unha Referencia',anchorName:'Por Nome de Referencia',anchorId:'Por Element Id',emailAddress:'Enderezo de E-Mail',emailSubject:'Asunto do Mensaxe',emailBody:'Corpo do Mensaxe',noAnchors:'(Non hai referencias disponibles no documento)',noUrl:'Por favor, escriba a ligazón URL',noEmail:'Por favor, escriba o enderezo de e-mail'},anchor:{toolbar:'Inserir/Editar Referencia',menu:'Propriedades da Referencia',title:'Propriedades da Referencia',name:'Nome da Referencia',errorName:'Por favor, escriba o nome da referencia',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Procurar',replace:'Substituir',findWhat:'Texto a procurar:',replaceWith:'Substituir con:',notFoundMsg:'Non te atopou o texto indicado.',findOptions:'Find Options',matchCase:'Coincidir Mai./min.',matchWord:'Coincidir con toda a palabra',matchCyclic:'Match cyclic',replaceAll:'Substitiur Todo',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabla',title:'Propiedades da Táboa',menu:'Propiedades da Táboa',deleteTable:'Borrar Táboa',rows:'Filas',columns:'Columnas',border:'Tamaño do Borde',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',cellSpace:'Marxe entre Celas',cellPad:'Marxe interior',caption:'Título',summary:'Sumario',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cela',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Borrar Cela',merge:'Unir Celas',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Fila',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Borrar Filas'},column:{menu:'Columna',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Borrar Columnas'}},button:{title:'Propriedades do Botón',text:'Texto (Valor)',type:'Tipo',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Propriedades do Cadro de Verificación',radioTitle:'Propriedades do Botón de Radio',value:'Valor',selected:'Seleccionado'},form:{title:'Propriedades do Formulario',menu:'Propriedades do Formulario',action:'Acción',method:'Método',encoding:'Encoding'},select:{title:'Propriedades do Campo de Selección',selectInfo:'Info',opAvail:'Opcións Disponibles',value:'Valor',size:'Tamaño',lines:'liñas',chkMulti:'Permitir múltiples seleccións',opText:'Texto',opValue:'Valor',btnAdd:'Engadir',btnModify:'Modificar',btnUp:'Subir',btnDown:'Baixar',btnSetValue:'Definir como valor por defecto',btnDelete:'Borrar'},textarea:{title:'Propriedades da Área de Texto',cols:'Columnas',rows:'Filas'},textfield:{title:'Propriedades do Campo de Texto',name:'Nome',value:'Valor',charWidth:'Tamaño do Caracter',maxChars:'Máximo de Caracteres',type:'Tipo',typeText:'Texto',typePass:'Chave'},hidden:{title:'Propriedades do Campo Oculto',name:'Nome',value:'Valor'},image:{title:'Propriedades da Imaxe',titleButton:'Propriedades do Botón de Imaxe',menu:'Propriedades da Imaxe',infoTab:'Información da Imaxe',btnUpload:'Enviar ó Servidor',upload:'Carregar',alt:'Texto Alternativo',lockRatio:'Proporcional',resetSize:'Tamaño Orixinal',border:'Límite',hSpace:'Esp. Horiz.',vSpace:'Esp. Vert.',alertUrl:'Por favor, escriba a URL da imaxe',linkTab:'Ligazón',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Propriedades Flash',propertiesTab:'Properties',title:'Propriedades Flash',chkPlay:'Auto Execución',chkLoop:'Bucle',chkMenu:'Activar Menú Flash',chkFull:'Allow Fullscreen',scale:'Escalar',scaleAll:'Amosar Todo',scaleNoBorder:'Sen Borde',scaleFit:'Encaixar axustando',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs Inferior',alignAbsMiddle:'Abs Centro',alignBaseline:'Liña Base',alignTextTop:'Tope do Texto',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Cor do Fondo',hSpace:'Esp. Horiz.',vSpace:'Esp. Vert.',validateSrc:'Por favor, escriba a ligazón URL',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Corrección Ortográfica',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Non está no diccionario',changeTo:'Cambiar a',btnIgnore:'Ignorar',btnIgnoreAll:'Ignorar Todas',btnReplace:'Substituir',btnReplaceAll:'Substituir Todas',btnUndo:'Desfacer',noSuggestions:'- Sen candidatos -',progress:'Corrección ortográfica en progreso...',noMispell:'Corrección ortográfica rematada: Non se atoparon erros',noChanges:'Corrección ortográfica rematada: Non se substituiu nengunha verba',oneChange:'Corrección ortográfica rematada: Unha verba substituida',manyChanges:'Corrección ortográfica rematada: %1 verbas substituidas',ieSpellDownload:'O corrector ortográfico non está instalado. ¿Quere descargalo agora?'},smiley:{toolbar:'Smiley',title:'Inserte un Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Lista Numerada',bulletedlist:'Marcas',indent:'Aumentar Sangría',outdent:'Disminuir Sangría',justify:{left:'Aliñar á Esquerda',center:'Centrado',right:'Aliñar á Dereita',block:'Xustificado'},blockquote:'Block Quote',clipboard:{title:'Pegar',cutError:'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl/Cmd+X).',copyError:'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl/Cmd+C).',pasteMsg:'Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl/Cmd+V</STRONG>) e pulse <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Pegar dende Word',title:'Pegar dende Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Pegar como texto plano',title:'Pegar como texto plano'},templates:{button:'Plantillas',title:'Plantillas de Contido',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Por favor, seleccione a plantilla a abrir no editor<br>(o contido actual perderase):',emptyListMsg:'(Non hai plantillas definidas)'},showBlocks:'Show Blocks',stylesCombo:{label:'Estilo',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formato',panelTitle:'Formato',tag_p:'Normal',tag_pre:'Formateado',tag_address:'Enderezo',tag_h1:'Enacabezado 1',tag_h2:'Encabezado 2',tag_h3:'Encabezado 3',tag_h4:'Encabezado 4',tag_h5:'Encabezado 5',tag_h6:'Encabezado 6',tag_div:'Paragraph (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Tipo',voiceLabel:'Font',panelTitle:'Tipo'},fontSize:{label:'Tamaño',voiceLabel:'Font Size',panelTitle:'Tamaño'},colorButton:{textColorTitle:'Cor do Texto',bgColorTitle:'Cor do Fondo',panelTitle:'Colors',auto:'Automático',more:'Máis Cores...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Propriedades do Documento',title:'Propriedades do Documento',design:'Design',meta:'Meta Tags',chooseColor:'Choose',other:'<outro>',docTitle:'Título da Páxina',charset:'Codificación do Xogo de Caracteres',charsetOther:'Outra Codificación do Xogo de Caracteres',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Encabezado do Tipo de Documento',docTypeOther:'Outro Encabezado do Tipo de Documento',xhtmlDec:'Incluir Declaracións XHTML',bgColor:'Cor de Fondo',bgImage:'URL da Imaxe de Fondo',bgFixed:'Fondo Fixo',txtColor:'Cor do Texto',margin:'Marxes da Páxina',marginTop:'Arriba',marginLeft:'Esquerda',marginRight:'Dereita',marginBottom:'Abaixo',metaKeywords:'Palabras Chave de Indexación do Documento (separadas por comas)',metaDescription:'Descripción do Documento',metaAuthor:'Autor',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/gu.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/gu.js
new file mode 100755
index 0000000..0cb6076
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/gu.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.gu={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'એડીટર ટૂલ બાર',editor:'રીચ ટેક્ષ્ત્ એડીટર',source:'મૂળ કે પ્રાથમિક દસ્તાવેજ',newPage:'નવુ પાનું',save:'સેવ',preview:'પૂર્વદર્શન',cut:'કાપવું',copy:'નકલ',paste:'પેસ્ટ',print:'પ્રિન્ટ',underline:'અન્ડર્લાઇન, નીચે લીટી',bold:'બોલ્ડ/સ્પષ્ટ',italic:'ઇટેલિક, ત્રાંસા',selectAll:'બઘું પસંદ કરવું',removeFormat:'ફૉર્મટ કાઢવું',strike:'છેકી નાખવું',subscript:'એક ચિહ્નની નીચે કરેલું બીજું ચિહ્ન',superscript:'એક ચિહ્ન ઉપર કરેલું બીજું ચિહ્ન.',horizontalrule:'સમસ્તરીય રેખા ઇન્સર્ટ/દાખલ કરવી',pagebreak:'ઇન્સર્ટ પેજબ્રેક/પાનાને અલગ કરવું/દાખલ કરવું',pagebreakAlt:'નવું પાનું',unlink:'લિંક કાઢવી',undo:'રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી',redo:'રિડૂ; પછી હતી એવી સ્થિતિ પાછી લાવવી',common:{browseServer:'સર્વર બ્રાઉઝ કરો',url:'URL',protocol:'પ્રોટોકૉલ',upload:'અપલોડ',uploadSubmit:'આ સર્વરને મોકલવું',image:'ચિત્ર',flash:'ફ્લૅશ',form:'ફૉર્મ/પત્રક',checkbox:'ચેક બોક્સ',radio:'રેડિઓ બટન',textField:'ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્ર',textarea:'ટેક્સ્ટ એરિઆ, શબ્દ વિસ્તાર',hiddenField:'ગુપ્ત ક્ષેત્ર',button:'બટન',select:'પસંદગી ક્ષેત્ર',imageButton:'ચિત્ર બટન',notSet:'<સેટ નથી>',id:'Id',name:'નામ',langDir:'ભાષા લેખવાની પદ્ધતિ',langDirLtr:'ડાબે થી જમણે (LTR)',langDirRtl:'જમણે થી ડાબે (RTL)',langCode:'ભાષા કોડ',longDescr:'વધારે માહિતી માટે URL',cssClass:'સ્ટાઇલ-શીટ ક્લાસ',advisoryTitle:'મુખ્ય મથાળું',cssStyle:'સ્ટાઇલ',ok:'ઠીક છે',cancel:'રદ કરવું',close:'બંધ કરવું',preview:'જોવું',generalTab:'જનરલ',advancedTab:'અડ્વાન્સડ',validateNumberFailed:'આ રકમ આકડો નથી.',confirmNewPage:'સવે કાર્ય વગરનું ફકરો ખોવાઈ જશે. તમને ખાતરી છે કે તમને નવું પાનું ખોલવું છે?',confirmCancel:'ઘણા વિકલ્પો બદલાયા છે. તમારે આ બોક્ષ્ બંધ કરવું છે?',options:'વિકલ્પો',target:'લક્ષ્ય',targetNew:'નવી વિન્ડો (_blank)',targetTop:'ઉપરની વિન્ડો (_top)',targetSelf:'એજ વિન્ડો (_self)',targetParent:'પેરનટ વિન્ડો (_parent)',langDirLTR:'ડાબે થી જમણે (LTR)',langDirRTL:'જમણે થી ડાબે (RTL)',styles:'શૈલી',cssClasses:'શૈલી કલાસીસ',width:'પહોળાઈ',height:'ઊંચાઈ',align:'લાઇનદોરીમાં ગોઠવવું',alignLeft:'ડાબી બાજુ ગોઠવવું',alignRight:'જમણી',alignCenter:'મધ્ય સેન્ટર',alignTop:'ઉપર',alignMiddle:'વચ્ચે',alignBottom:'નીચે',invalidHeight:'ઉંચાઈ એક આંકડો હોવો જોઈએ.',invalidWidth:'પોહળ ઈ એક આંકડો હોવો જોઈએ.',invalidCssLength:'"%1" ની વેલ્યુ એક પોસીટીવ આંકડો હોવો જોઈએ અથવા CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc) વગર.',invalidHtmlLength:'"%1" ની વેલ્યુ એક પોસીટીવ આંકડો હોવો જોઈએ અથવા HTML measurement unit (px or %) વગર.',invalidInlineStyle:'ઈનલાઈન સ્ટાઈલ ની વેલ્યુ "name : value" ના ફોર્મેટ માં હોવી જોઈએ, વચ્ચે સેમી-કોલોન જોઈએ.',cssLengthTooltip:'પિક્ષ્લ્ નો આંકડો CSS unit (px, %, in, cm, mm, em, ex, pt, or pc) માં નાખો.',unavailable:'%1<span class="cke_accessibility">, નથી મળતું</span>'},contextmenu:{options:'કોન્તેક્ષ્ત્ મેનુના વિકલ્પો'},specialChar:{toolbar:'વિશિષ્ટ અક્ષર ઇન્સર્ટ/દાખલ કરવું',title:'સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો',options:'સ્પેશિઅલ કરેક્ટરના વિકલ્પો'},link:{toolbar:'લિંક ઇન્સર્ટ/દાખલ કરવી',other:'<other> <અન્ય>',menu:' લિંક એડિટ/માં ફેરફાર કરવો',title:'લિંક',info:'લિંક ઇન્ફૉ ટૅબ',target:'ટાર્ગેટ/લક્ષ્ય',upload:'અપલોડ',advanced:'અડ્વાન્સડ',type:'લિંક પ્રકાર',toUrl:'URL',toAnchor:'આ પેજનો ઍંકર',toEmail:'ઈ-મેલ',targetFrame:'<ફ્રેમ>',targetPopup:'<પૉપ-અપ વિન્ડો>',targetFrameName:'ટાર્ગેટ ફ્રેમ નું નામ',targetPopupName:'પૉપ-અપ વિન્ડો નું નામ',popupFeatures:'પૉપ-અપ વિન્ડો ફીચરસૅ',popupResizable:'રીસાઈઝએબલ',popupStatusBar:'સ્ટૅટસ બાર',popupLocationBar:'લોકેશન બાર',popupToolbar:'ટૂલ બાર',popupMenuBar:'મેન્યૂ બાર',popupFullScreen:'ફુલ સ્ક્રીન (IE)',popupScrollBars:'સ્ક્રોલ બાર',popupDependent:'ડિપેન્ડન્ટ (Netscape)',popupLeft:'ડાબી બાજુ',popupTop:'જમણી બાજુ',id:'Id',langDir:'ભાષા લેખવાની પદ્ધતિ',langDirLTR:'ડાબે થી જમણે (LTR)',langDirRTL:'જમણે થી ડાબે (RTL)',acccessKey:'ઍક્સેસ કી',name:'નામ',langCode:'ભાષા લેખવાની પદ્ધતિ',tabIndex:'ટૅબ ઇન્ડેક્સ',advisoryTitle:'મુખ્ય મથાળું',advisoryContentType:'મુખ્ય કન્ટેન્ટ પ્રકાર',cssClasses:'સ્ટાઇલ-શીટ ક્લાસ',charset:'લિંક રિસૉર્સ કૅરિક્ટર સેટ',styles:'સ્ટાઇલ',rel:'સંબંધની સ્થિતિ',selectAnchor:'ઍંકર પસંદ કરો',anchorName:'ઍંકર નામથી પસંદ કરો',anchorId:'ઍંકર એલિમન્ટ Id થી પસંદ કરો',emailAddress:'ઈ-મેલ સરનામું',emailSubject:'ઈ-મેલ વિષય',emailBody:'સંદેશ',noAnchors:'(ડૉક્યુમન્ટમાં ઍંકરની સંખ્યા)',noUrl:'લિંક URL ટાઇપ કરો',noEmail:'ઈ-મેલ સરનામું ટાઇપ કરો'},anchor:{toolbar:'ઍંકર ઇન્સર્ટ/દાખલ કરવી',menu:'ઍંકરના ગુણ',title:'ઍંકરના ગુણ',name:'ઍંકરનું નામ',errorName:'ઍંકરનું નામ ટાઈપ કરો',remove:'સ્થિર નકરવું'},list:{numberedTitle:'આંકડાના લીસ્ટના ગુણ',bulletedTitle:'બુલેટેડ લીસ્ટના ગુણ',type:'પ્રકાર',start:'શરુ કરવું',validateStartNumber:'લીસ્ટના સરુઆતનો આંકડો પુરો હોવો જોઈએ.',circle:'વર્તુળ',disc:'ડિસ્ક',square:'ચોરસ',none:'કસુ ',notset:'<સેટ નથી>',armenian:'અરમેનિયન આંકડા પદ્ધતિ',georgian:'ગેઓર્ગિયન આંકડા પદ્ધતિ (an, ban, gan, etc.)',lowerRoman:'રોમન નાના (i, ii, iii, iv, v, etc.)',upperRoman:'રોમન મોટા (I, II, III, IV, V, etc.)',lowerAlpha:'આલ્ફા નાના (a, b, c, d, e, etc.)',upperAlpha:'આલ્ફા મોટા (A, B, C, D, E, etc.)',lowerGreek:'ગ્રીક નાના (alpha, beta, gamma, etc.)',decimal:'આંકડા (1, 2, 3, etc.)',decimalLeadingZero:'સુન્ય આગળ આંકડા (01, 02, 03, etc.)'},findAndReplace:{title:'શોધવું અને બદલવું',find:'શોધવું',replace:'રિપ્લેસ/બદલવું',findWhat:'આ શોધો',replaceWith:'આનાથી બદલો',notFoundMsg:'તમે શોધેલી ટેક્સ્ટ નથી મળી',findOptions:'વીકલ્પ શોધો',matchCase:'કેસ સરખા રાખો',matchWord:'બઘા શબ્દ સરખા રાખો',matchCyclic:'સરખાવવા બધા',replaceAll:'બઘા બદલી ',replaceSuccessMsg:'%1 ફેરફારો બાદલાયા છે.'},table:{toolbar:'ટેબલ, કોઠો',title:'ટેબલ, કોઠાનું મથાળું',menu:'ટેબલ, કોઠાનું મથાળું',deleteTable:'કોઠો ડિલીટ/કાઢી નાખવું',rows:'પંક્તિના ખાના',columns:'કૉલમ/ઊભી કટાર',border:'કોઠાની બાજુ(બોર્ડર) સાઇઝ',widthPx:'પિકસલ',widthPc:'પ્રતિશત',widthUnit:'પોહાલાઈ એકમ',cellSpace:'સેલ અંતર',cellPad:'સેલ પૅડિંગ',caption:'મથાળું/કૅપ્શન ',summary:'ટૂંકો એહેવાલ',headers:'મથાળા',headersNone:'નથી ',headersColumn:'પહેલી ઊભી કટાર',headersRow:'પહેલી કટાર',headersBoth:'બેવું',invalidRows:'આડી કટાર, 0 કરતા વધારે હોવી જોઈએ.',invalidCols:'ઉભી કટાર, 0 કરતા વધારે હોવી જોઈએ.',invalidBorder:'બોર્ડર એક આંકડો હોવો જોઈએ',invalidWidth:'ટેબલની પોહલાઈ આંકડો હોવો જોઈએ.',invalidHeight:'ટેબલની ઊંચાઈ આંકડો હોવો જોઈએ.',invalidCellSpacing:'સેલ વચ્ચેની જગ્યા સુન્ય કરતા વધારે હોવી જોઈએ.',invalidCellPadding:'સેલની અંદરની જગ્યા સુન્ય કરતા વધારે હોવી જોઈએ.',cell:{menu:'કોષના ખાના',insertBefore:'પહેલાં કોષ ઉમેરવો',insertAfter:'પછી કોષ ઉમેરવો',deleteCell:'કોષ ડિલીટ/કાઢી નાખવો',merge:'કોષ ભેગા કરવા',mergeRight:'જમણી બાજુ ભેગા કરવા',mergeDown:'નીચે ભેગા કરવા',splitHorizontal:'કોષને સમસ્તરીય વિભાજન કરવું',splitVertical:'કોષને સીધું ને ઊભું વિભાજન કરવું',title:'સેલના ગુણ',cellType:'સેલનો પ્રકાર',rowSpan:'આડી કટારની જગ્યા',colSpan:'ઊભી કતારની જગ્યા',wordWrap:'વર્ડ રેપ',hAlign:'સપાટ લાઈનદોરી',vAlign:'ઊભી લાઈનદોરી',alignBaseline:'બસે લાઈન',bgColor:'પાછાળનો રંગ',borderColor:'બોર્ડેર રંગ',data:'સ્વીકૃત માહિતી',header:'મથાળું',yes:'હા',no:'ના',invalidWidth:'સેલની પોહલાઈ આંકડો હોવો જોઈએ.',invalidHeight:'સેલની ઊંચાઈ આંકડો હોવો જોઈએ.',invalidRowSpan:'રો સ્પાન આંકડો હોવો જોઈએ.',invalidColSpan:'કોલમ સ્પાન આંકડો હોવો જોઈએ.',chooseColor:'પસંદ કરવું'},row:{menu:'પંક્તિના ખાના',insertBefore:'પહેલાં પંક્તિ ઉમેરવી',insertAfter:'પછી પંક્તિ ઉમેરવી',deleteRow:'પંક્તિઓ ડિલીટ/કાઢી નાખવી'},column:{menu:'કૉલમ/ઊભી કટાર',insertBefore:'પહેલાં કૉલમ/ઊભી કટાર ઉમેરવી',insertAfter:'પછી કૉલમ/ઊભી કટાર ઉમેરવી',deleteColumn:'કૉલમ/ઊભી કટાર ડિલીટ/કાઢી નાખવી'}},button:{title:'બટનના ગુણ',text:'ટેક્સ્ટ (વૅલ્યૂ)',type:'પ્રકાર',typeBtn:'બટન',typeSbm:'સબ્મિટ',typeRst:'રિસેટ'},checkboxAndRadio:{checkboxTitle:'ચેક બોક્સ ગુણ',radioTitle:'રેડિઓ બટનના ગુણ',value:'વૅલ્યૂ',selected:'સિલેક્ટેડ'},form:{title:'ફૉર્મ/પત્રકના ગુણ',menu:'ફૉર્મ/પત્રકના ગુણ',action:'ક્રિયા',method:'પદ્ધતિ',encoding:'અન્કોડીન્ગ'},select:{title:'પસંદગી ક્ષેત્રના ગુણ',selectInfo:'સૂચના',opAvail:'ઉપલબ્ધ વિકલ્પ',value:'વૅલ્યૂ',size:'સાઇઝ',lines:'લીટીઓ',chkMulti:'એકથી વધારે પસંદ કરી શકો',opText:'ટેક્સ્ટ',opValue:'વૅલ્યૂ',btnAdd:'ઉમેરવું',btnModify:'બદલવું',btnUp:'ઉપર',btnDown:'નીચે',btnSetValue:'પસંદ કરલી વૅલ્યૂ સેટ કરો',btnDelete:'રદ કરવું'},textarea:{title:'ટેક્સ્ટ એઅરિઆ, શબ્દ વિસ્તારના ગુણ',cols:'કૉલમ/ઊભી કટાર',rows:'પંક્તિઓ'},textfield:{title:'ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્રના ગુણ',name:'નામ',value:'વૅલ્યૂ',charWidth:'કેરેક્ટરની પહોળાઈ',maxChars:'અધિકતમ કેરેક્ટર',type:'ટાઇપ',typeText:'ટેક્સ્ટ',typePass:'પાસવર્ડ'},hidden:{title:'ગુપ્ત ક્ષેત્રના ગુણ',name:'નામ',value:'વૅલ્યૂ'},image:{title:'ચિત્રના ગુણ',titleButton:'ચિત્ર બટનના ગુણ',menu:'ચિત્રના ગુણ',infoTab:'ચિત્ર ની જાણકારી',btnUpload:'આ સર્વરને મોકલવું',upload:'અપલોડ',alt:'ઑલ્ટર્નટ ટેક્સ્ટ',lockRatio:'લૉક ગુણોત્તર',resetSize:'રીસેટ સાઇઝ',border:'બોર્ડર',hSpace:'સમસ્તરીય જગ્યા',vSpace:'લંબરૂપ જગ્યા',alertUrl:'ચિત્રની URL ટાઇપ કરો',linkTab:'લિંક',button2Img:'તમારે ઈમેજ બટનને સાદી ઈમેજમાં બદલવું છે.',img2Button:'તમારે સાદી ઈમેજને ઈમેજ બટનમાં બદલવું છે.',urlMissing:'ઈમેજની મૂળ URL છે નહી.',validateBorder:'બોર્ડેર આંકડો હોવો જોઈએ.',validateHSpace:'HSpaceઆંકડો હોવો જોઈએ.',validateVSpace:'VSpace આંકડો હોવો જોઈએ. '},flash:{properties:'ફ્લૅશના ગુણ',propertiesTab:'ગુણ',title:'ફ્લૅશ ગુણ',chkPlay:'ઑટો/સ્વયં પ્લે',chkLoop:'લૂપ',chkMenu:'ફ્લૅશ મેન્યૂ નો પ્રયોગ કરો',chkFull:'ફૂલ સ્ક્રીન કરવું',scale:'સ્કેલ',scaleAll:'સ્કેલ ઓલ/બધુ બતાવો',scaleNoBorder:'સ્કેલ બોર્ડર વગર',scaleFit:'સ્કેલ એકદમ ફીટ',access:'સ્ક્રીપ્ટ એક્સેસ',accessAlways:'હમેશાં',accessSameDomain:'એજ ડોમેન',accessNever:'નહી',alignAbsBottom:'Abs નીચે',alignAbsMiddle:'Abs ઉપર',alignBaseline:'આધાર લીટી',alignTextTop:'ટેક્સ્ટ ઉપર',quality:'ગુણધર્મ',qualityBest:'શ્રેષ્ઠ',qualityHigh:'ઊંચું',qualityAutoHigh:'ઓટો ઊંચું',qualityMedium:'મધ્યમ',qualityAutoLow:'ઓટો નીચું',qualityLow:'નીચું',windowModeWindow:'વિન્ડો',windowModeOpaque:'અપારદર્શક',windowModeTransparent:'પારદર્શક',windowMode:'વિન્ડો મોડ',flashvars:'ફલેશ ના વિકલ્પો',bgcolor:'બૅકગ્રાઉન્ડ રંગ,',hSpace:'સમસ્તરીય જગ્યા',vSpace:'લંબરૂપ જગ્યા',validateSrc:'લિંક URL ટાઇપ કરો',validateHSpace:'HSpace આંકડો હોવો જોઈએ.',validateVSpace:'VSpace આંકડો હોવો જોઈએ.'},spellCheck:{toolbar:'જોડણી (સ્પેલિંગ) તપાસવી',title:'સ્પેલ ',notAvailable:'માફ કરશો, આ સુવિધા ઉપલબ્ધ નથી',errorLoading:'સર્વિસ એપ્લીકેશન લોડ નથી થ: %s.',notInDic:'શબ્દકોશમાં નથી',changeTo:'આનાથી બદલવું',btnIgnore:'ઇગ્નોર/અવગણના કરવી',btnIgnoreAll:'બધાની ઇગ્નોર/અવગણના કરવી',btnReplace:'બદલવું',btnReplaceAll:'બધા બદલી કરો',btnUndo:'અન્ડૂ',noSuggestions:'- કઇ સજેશન નથી -',progress:'શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...',noMispell:'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી',noChanges:'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી',oneChange:'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે',manyChanges:'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે',ieSpellDownload:'સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?'},smiley:{toolbar:'સ્માઇલી',title:'સ્માઇલી પસંદ કરો',options:'સમ્ય્લી વિકલ્પો'},elementsPath:{eleLabel:'એલીમેન્ટ્સ નો ',eleTitle:'એલીમેન્ટ %1'},numberedlist:'સંખ્યાંકન સૂચિ',bulletedlist:'બુલેટ સૂચિ',indent:'ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી',outdent:'ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી',justify:{left:'ડાબી બાજુએ/બાજુ તરફ',center:'સંકેંદ્રણ/સેંટરિંગ',right:'જમણી બાજુએ/બાજુ તરફ',block:'બ્લૉક, અંતરાય જસ્ટિફાઇ'},blockquote:'બ્લૉક-કોટ, અવતરણચિહ્નો',clipboard:{title:'પેસ્ટ',cutError:'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.',copyError:'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का प्रयोग करें।',pasteMsg:'Ctrl/Cmd+V નો પ્રયોગ કરી પેસ્ટ કરો',securityMsg:'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.',pasteArea:'પેસ્ટ કરવાની જગ્યા'},pastefromword:{confirmCleanup:'તમે જે ટેક્ષ્ત્ કોપી કરી રહ્યા છો ટે વર્ડ ની છે. કોપી કરતા પેહલા સાફ કરવી છે?',toolbar:'પેસ્ટ (વડૅ ટેક્સ્ટ)',title:'પેસ્ટ (વડૅ ટેક્સ્ટ)',error:'પેસ્ટ કરેલો ડેટા ઇન્ટરનલ એરર ના લીથે સાફ કરી શકાયો નથી.'},pasteText:{button:'પેસ્ટ (ટેક્સ્ટ)',title:'પેસ્ટ (ટેક્સ્ટ)'},templates:{button:'ટેમ્પ્લેટ',title:'કન્ટેન્ટ ટેમ્પ્લેટ',options:'ટેમ્પ્લેટના વિકલ્પો',insertOption:'મૂળ શબ્દને બદલો',selectPromptMsg:'એડિટરમાં ઓપન કરવા ટેમ્પ્લેટ પસંદ કરો (વર્તમાન કન્ટેન્ટ સેવ નહીં થાય):',emptyListMsg:'(કોઈ ટેમ્પ્લેટ ડિફાઇન નથી)'},showBlocks:'બ્લૉક બતાવવું',stylesCombo:{label:'શૈલી/રીત',panelTitle:'ફોર્મેટ ',panelTitle1:'બ્લોક ',panelTitle2:'ઈનલાઈન ',panelTitle3:'ઓબ્જેક્ટ પદ્ધતિ'},format:{label:'ફૉન્ટ ફૉર્મટ, રચનાની શૈલી',panelTitle:'ફૉન્ટ ફૉર્મટ, રચનાની શૈલી',tag_p:'સામાન્ય',tag_pre:'ફૉર્મટેડ',tag_address:'સરનામું',tag_h1:'શીર્ષક 1',tag_h2:'શીર્ષક 2',tag_h3:'શીર્ષક 3',tag_h4:'શીર્ષક 4',tag_h5:'શીર્ષક 5',tag_h6:'શીર્ષક 6',tag_div:'શીર્ષક (DIV)'},div:{title:'Div કન્ટેનર બનાવુંવું',toolbar:'Div કન્ટેનર બનાવુંવું',cssClassInputLabel:'સ્ટાઈલશીટ કલાસીસ',styleSelectLabel:'સ્ટાઈલ',IdInputLabel:'Id',languageCodeInputLabel:'ભાષાનો કોડ',inlineStyleInputLabel:'ઈનલાઈન પદ્ધતિ',advisoryTitleInputLabel:'એડવાઈઝર શીર્ષક',langDirLabel:'ભાષાની દિશા',langDirLTRLabel:'ડાબે થી જમણે (LTR)',langDirRTLLabel:'જમણે થી ડાબે (RTL)',edit:'ડીવીમાં ફેરફાર કરવો',remove:'ડીવી કાઢી કાઢવું'},iframe:{title:'IFrame વિકલ્પો',toolbar:'IFrame',noUrl:'iframe URL ટાઈપ્ કરો',scrolling:'સ્ક્રોલબાર ચાલુ કરવા',border:'ફ્રેમ બોર્ડેર બતાવવી'},font:{label:'ફૉન્ટ',voiceLabel:'ફોન્ટ',panelTitle:'ફૉન્ટ'},fontSize:{label:'ફૉન્ટ સાઇઝ/કદ',voiceLabel:'ફોન્ટ સાઈઝ',panelTitle:'ફૉન્ટ સાઇઝ/કદ'},colorButton:{textColorTitle:'શબ્દનો રંગ',bgColorTitle:'બૅકગ્રાઉન્ડ રંગ,',panelTitle:'રંગ',auto:'સ્વચાલિત',more:'ઔર રંગ...'},colors:{'000':'કાળો',800000:'મરુન','8B4513':'છીક','2F4F4F':'ડાર્ક સ્લેટ ગ્રે ','008080':'ટીલ','000080':'નેવી','4B0082':'જામલી',696969:'ડાર્ક ગ્રે',B22222:'ઈટ',A52A2A:'બ્રાઉન',DAA520:'ગોલ્ડન રોડ','006400':'ડાર્ક લીલો','40E0D0':'ટ્રકોઈસ','0000CD':'મધ્યમ વાદળી',800080:'પર્પલ',808080:'ગ્રે',F00:'લાલ',FF8C00:'ડાર્ક ઓરંજ',FFD700:'ગોલ્ડ','008000':'ગ્રીન','0FF':'સાયન','00F':'વાદળી',EE82EE:'વાયોલેટ',A9A9A9:'ડીમ ',FFA07A:'લાઈટ સાલમન',FFA500:'ઓરંજ',FFFF00:'પીળો','00FF00':'લાઈમ',AFEEEE:'પેલ કોઈસ',ADD8E6:'લાઈટ બ્લુ',DDA0DD:'પલ્મ',D3D3D3:'લાઈટ ગ્રે',FFF0F5:'લવંડર ',FAEBD7:'એન્ટીક સફેદ',FFFFE0:'લાઈટ પીળો',F0FFF0:'હનીડઉય',F0FFFF:'અઝુરે',F0F8FF:'એલીસ બ્લુ',E6E6FA:'લવંડર',FFF:'સફેદ'},scayt:{title:'ટાઈપ કરતા સ્પેલ તપાસો',opera_title:'ઓપેરામાં સપોર્ટ નથી',enable:'SCAYT એનેબલ કરવું',disable:'SCAYT ડિસેબલ કરવું',about:'SCAYT વિષે',toggle:'SCAYT ટોગલ',options:'વિકલ્પો',langs:'ભાષાઓ',moreSuggestions:'વધારે વિકલ્પો',ignore:'ઇગ્નોર',ignoreAll:'બધા ઇગ્નોર ',addWord:'શબ્દ ઉમેરવો',emptyDic:'ડિક્સનરીનું નામ ખાલી ના હોય.',optionsTab:'વિકલ્પો',allCaps:'ઓલ-કેપ્સ વર્ડ છોડી દો.',ignoreDomainNames:'ડોમેન નામ છોડી દો.',mixedCase:'મિક્સ કેસ વર્ડ છોડી દો.',mixedWithDigits:'આંકડા વાળા શબ્દ છોડી દો.',languagesTab:'ભાષા',dictionariesTab:'શબ્દકોશ',dic_field_name:'શબ્દકોશ નામ',dic_create:'બનાવવું',dic_restore:'પાછું ',dic_delete:'કાઢી નાખવું',dic_rename:'નવું નામ આપવું',dic_info:'પેહલા User Dictionary, Cookie તરીકે સ્ટોર થાય છે. પણ Cookie ની સમતા ઓછી છે. જયારે User Dictionary, Cookie તરીકે સ્ટોર ના કરી શકાય, ત્યારે તે અમારા સર્વર પર સ્ટોર થાય છે. તમારી વ્યતિગત ડીકસ્નરી ને સર્વર પર સ્ટોર કરવા માટે તમારે તેનું નામ આપવું પડશે. જો તમે તમારી ડીકસ્નરી નું નામ આપેલું હોય તો તમે રિસ્ટોર બટન ક્લીક કરી શકો.',aboutTab:'વિષે'},about:{title:'CKEditor વિષે',dlgTitle:'CKEditor વિષે',help:'મદદ માટે $1 તપાસો',userGuide:'CKEditor યુઝર્સ ગાઈડ',moreInfo:'લાયસનસની માહિતી માટે અમારી વેબ સાઈટ',copy:'કોપીરાઈટ © $1. ઓલ રાઈટ્સ '},maximize:'મોટું કરવું',minimize:'નાનું કરવું',fakeobjects:{anchor:'અનકર',flash:'ફ્લેશ ',iframe:'IFrame',hiddenfield:'હિડન ',unknown:'અનનોન ઓબ્જેક્ટ'},resize:'ખેંચી ને યોગ્ય કરવું',colordialog:{title:'રંગ પસંદ કરો',options:'રંગના વિકલ્પ',highlight:'હાઈઈટ',selected:'પસંદ કરેલો રંગ',clear:'સાફ કરવું'},toolbarCollapse:'ટૂલબાર નાનું કરવું',toolbarExpand:'ટૂલબાર મોટું કરવું',toolbarGroups:{document:'દસ્તાવેજ',clipboard:'ક્લિપબોર્ડ/અન',editing:'એડીટ કરવું',forms:'ફોર્મ',basicstyles:'બેસિક્ સ્ટાઇલ',paragraph:'ફકરો',links:'લીંક',insert:'ઉમેરવું',styles:'સ્ટાઇલ',colors:'રંગ',tools:'ટૂલ્સ'},bidi:{ltr:'ટેક્ષ્ત્ ની દિશા ડાબે થી જમણે',rtl:'ટેક્ષ્ત્ ની દિશા જમણે થી ડાબે'},docprops:{label:'ડૉક્યુમન્ટ ગુણ/પ્રૉપર્ટિઝ',title:'ડૉક્યુમન્ટ ગુણ/પ્રૉપર્ટિઝ',design:'ડીસા',meta:'મેટાડૅટા',chooseColor:'વિકલ્પ',other:'<other>',docTitle:'પેજ મથાળું/ટાઇટલ',charset:'કેરેક્ટર સેટ એન્કોડિંગ',charsetOther:'અન્ય કેરેક્ટર સેટ એન્કોડિંગ',charsetASCII:'ASCII',charsetCE:'મધ્ય યુરોપિઅન (Central European)',charsetCT:'ચાઇનીઝ (Chinese Traditional Big5)',charsetCR:'સિરીલિક (Cyrillic)',charsetGR:'ગ્રીક (Greek)',charsetJP:'જાપાનિઝ (Japanese)',charsetKR:'કોરીયન (Korean)',charsetTR:'ટર્કિ (Turkish)',charsetUN:'યૂનિકોડ (UTF-8)',charsetWE:'પશ્ચિમ યુરોપિઅન (Western European)',docType:'ડૉક્યુમન્ટ પ્રકાર શીર્ષક',docTypeOther:'અન્ય ડૉક્યુમન્ટ પ્રકાર શીર્ષક',xhtmlDec:'XHTML સૂચના સમાવિષ્ટ કરવી',bgColor:'બૅકગ્રાઉન્ડ રંગ',bgImage:'બૅકગ્રાઉન્ડ ચિત્ર URL',bgFixed:'સ્ક્રોલ ન થાય તેવું બૅકગ્રાઉન્ડ',txtColor:'શબ્દનો રંગ',margin:'પેજ માર્જિન',marginTop:'ઉપર',marginLeft:'ડાબી',marginRight:'જમણી',marginBottom:'નીચે',metaKeywords:'ડૉક્યુમન્ટ ઇન્ડેક્સ સંકેતશબ્દ (અલ્પવિરામ (,) થી અલગ કરો)',metaDescription:'ડૉક્યુમન્ટ વર્ણન',metaAuthor:'લેખક',metaCopyright:'કૉપિરાઇટ',previewHtml:'<p>આ એક <strong>સેમ્પલ ટેક્ષ્ત્</strong> છે. તમે <a href="javascript:void(0)">CKEditor</a> વાપરો છો.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/he.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/he.js
new file mode 100755
index 0000000..93ffb37
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/he.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.he={dir:'rtl',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'סרגלי כלים של העורך',editor:'עורך טקסט עשיר',source:'מקור',newPage:'דף חדש',save:'שמירה',preview:'תצוגה מקדימה',cut:'גזירה',copy:'העתקה',paste:'הדבקה',print:'הדפסה',underline:'קו תחתון',bold:'מודגש',italic:'נטוי',selectAll:'בחירת הכל',removeFormat:'הסרת העיצוב',strike:'כתיב מחוק',subscript:'כתיב תחתון',superscript:'כתיב עליון',horizontalrule:'הוספת קו אופקי',pagebreak:'הוספת שבירת דף',pagebreakAlt:'שבירת דף',unlink:'הסרת הקישור',undo:'ביטול צעד אחרון',redo:'חזרה על צעד אחרון',common:{browseServer:'סייר השרת',url:'כתובת (URL)',protocol:'פרוטוקול',upload:'העלאה',uploadSubmit:'שליחה לשרת',image:'תמונה',flash:'פלאש',form:'טופס',checkbox:'תיבת סימון',radio:'לחצן אפשרויות',textField:'שדה טקסט',textarea:'איזור טקסט',hiddenField:'שדה חבוי',button:'כפתור',select:'שדה בחירה',imageButton:'כפתור תמונה',notSet:'<לא נקבע>',id:'זיהוי (ID)',name:'שם',langDir:'כיוון שפה',langDirLtr:'שמאל לימין (LTR)',langDirRtl:'ימין לשמאל (RTL)',langCode:'קוד שפה',longDescr:'קישור לתיאור מפורט',cssClass:'מחלקת עיצוב (CSS Class)',advisoryTitle:'כותרת מוצעת',cssStyle:'סגנון',ok:'אישור',cancel:'ביטול',close:'סגירה',preview:'תצוגה מקדימה',generalTab:'כללי',advancedTab:'אפשרויות מתקדמות',validateNumberFailed:'הערך חייב להיות מספרי.',confirmNewPage:'כל השינויים שלא נשמרו יאבדו. האם להעלות דף חדש?',confirmCancel:'חלק מהאפשרויות שונו, האם לסגור את הדיאלוג?',options:'אפשרויות',target:'מטרה',targetNew:'חלון חדש (_blank)',targetTop:'החלון העליון ביותר (_top)',targetSelf:'אותו חלון (_self)',targetParent:'חלון האב (_parent)',langDirLTR:'שמאל לימין (LTR)',langDirRTL:'ימין לשמאל (RTL)',styles:'סגנון',cssClasses:'מחלקות גליונות סגנון',width:'רוחב',height:'גובה',align:'יישור',alignLeft:'לשמאל',alignRight:'לימין',alignCenter:'מרכז',alignTop:'למעלה',alignMiddle:'לאמצע',alignBottom:'לתחתית',invalidHeight:'הגובה חייב להיות מספר.',invalidWidth:'הרוחב חייב להיות מספר.',invalidCssLength:'הערך שצוין לשדה "%1" חייב להיות מספר חיובי עם או ללא יחידת מידה חוקית של CSS (px, %, in, cm, mm, em, ex, pt, או pc).',invalidHtmlLength:'הערך שצוין לשדה "%1" חייב להיות מספר חיובי עם או ללא יחידת מידה חוקית של HTML (px או %).',invalidInlineStyle:'הערך שצויין לשדה הסגנון חייב להכיל זוג ערכים אחד או יותר בפורמט "שם : ערך", מופרדים על ידי נקודה-פסיק.',cssLengthTooltip:'יש להכניס מספר המייצג פיקסלים או מספר עם יחידת גליונות סגנון תקינה (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, לא זמין</span>'},contextmenu:{options:'אפשרויות תפריט ההקשר'},specialChar:{toolbar:'הוספת תו מיוחד',title:'בחירת תו מיוחד',options:'אפשרויות תווים מיוחדים'},link:{toolbar:'הוספת/עריכת קישור',other:'<אחר>',menu:'מאפייני קישור',title:'קישור',info:'מידע על הקישור',target:'מטרה',upload:'העלאה',advanced:'אפשרויות מתקדמות',type:'סוג קישור',toUrl:'כתובת (URL)',toAnchor:'עוגן בעמוד זה',toEmail:'דוא"ל',targetFrame:'<מסגרת>',targetPopup:'<חלון קופץ>',targetFrameName:'שם מסגרת היעד',targetPopupName:'שם החלון הקופץ',popupFeatures:'תכונות החלון הקופץ',popupResizable:'שינוי גודל',popupStatusBar:'סרגל חיווי',popupLocationBar:'סרגל כתובת',popupToolbar:'סרגל הכלים',popupMenuBar:'סרגל תפריט',popupFullScreen:'מסך מלא (IE)',popupScrollBars:'ניתן לגלילה',popupDependent:'תלוי (Netscape)',popupLeft:'מיקום צד שמאל',popupTop:'מיקום צד עליון',id:'זיהוי (ID)',langDir:'כיוון שפה',langDirLTR:'שמאל לימין (LTR)',langDirRTL:'ימין לשמאל (RTL)',acccessKey:'מקש גישה',name:'שם',langCode:'קוד שפה',tabIndex:'מספר טאב',advisoryTitle:'כותרת מוצעת',advisoryContentType:'Content Type מוצע',cssClasses:'גיליונות עיצוב קבוצות',charset:'קידוד המשאב המקושר',styles:'סגנון',rel:'קשר גומלין',selectAnchor:'בחירת עוגן',anchorName:'עפ"י שם העוגן',anchorId:'עפ"י זיהוי (ID) האלמנט',emailAddress:'כתובת הדוא"ל',emailSubject:'נושא ההודעה',emailBody:'גוף ההודעה',noAnchors:'(אין עוגנים זמינים בדף)',noUrl:'יש להקליד את כתובת הקישור (URL)',noEmail:'יש להקליד את כתובת הדוא"ל'},anchor:{toolbar:'הוספת/עריכת נקודת עיגון',menu:'מאפייני נקודת עיגון',title:'מאפייני נקודת עיגון',name:'שם לנקודת עיגון',errorName:'יש להקליד שם לנקודת עיגון',remove:'מחיקת נקודת עיגון'},list:{numberedTitle:'תכונות רשימה ממוספרת',bulletedTitle:'תכונות רשימת תבליטים',type:'סוג',start:'תחילת מספור',validateStartNumber:'שדה תחילת המספור חייב להכיל מספר שלם.',circle:'עיגול ריק',disc:'עיגול מלא',square:'ריבוע',none:'ללא',notset:'<לא נקבע>',armenian:'ספרות ארמניות',georgian:"ספרות גיאורגיות (an, ban, gan וכו')",lowerRoman:"ספירה רומית באותיות קטנות (i, ii, iii, iv, v וכו')",upperRoman:"ספירה רומיות באותיות גדולות (I, II, III, IV, V וכו')",lowerAlpha:"אותיות אנגליות קטנות (a, b, c, d, e וכו')",upperAlpha:"אותיות אנגליות גדולות (A, B, C, D, E וכו')",lowerGreek:"אותיות יווניות קטנות (alpha, beta, gamma וכו')",decimal:"ספרות (1, 2, 3 וכו')",decimalLeadingZero:"ספרות עם 0 בהתחלה (01, 02, 03 וכו')"},findAndReplace:{title:'חיפוש והחלפה',find:'חיפוש',replace:'החלפה',findWhat:'חיפוש מחרוזת:',replaceWith:'החלפה במחרוזת:',notFoundMsg:'הטקסט המבוקש לא נמצא.',findOptions:'אפשרויות חיפוש',matchCase:'הבחנה בין אותיות רשיות לקטנות (Case)',matchWord:'התאמה למילה המלאה',matchCyclic:'התאמה מחזורית',replaceAll:'החלפה בכל העמוד',replaceSuccessMsg:'%1 טקסטים הוחלפו.'},table:{toolbar:'טבלה',title:'מאפייני טבלה',menu:'מאפייני טבלה',deleteTable:'מחק טבלה',rows:'שורות',columns:'עמודות',border:'גודל מסגרת',widthPx:'פיקסלים',widthPc:'אחוז',widthUnit:'יחידת רוחב',cellSpace:'מרווח תא',cellPad:'ריפוד תא',caption:'כיתוב',summary:'תקציר',headers:'כותרות',headersNone:'אין',headersColumn:'עמודה ראשונה',headersRow:'שורה ראשונה',headersBoth:'שניהם',invalidRows:'שדה מספר השורות חייב להיות מספר גדול מ 0.',invalidCols:'שדה מספר העמודות חייב להיות מספר גדול מ 0.',invalidBorder:'שדה גודל המסגרת חייב להיות מספר.',invalidWidth:'שדה רוחב הטבלה חייב להיות מספר.',invalidHeight:'שדה גובה הטבלה חייב להיות מספר.',invalidCellSpacing:'שדה ריווח התאים חייב להיות מספר חיובי.',invalidCellPadding:'שדה ריפוד התאים חייב להיות מספר חיובי.',cell:{menu:'מאפייני תא',insertBefore:'הוספת תא לפני',insertAfter:'הוספת תא אחרי',deleteCell:'מחיקת תאים',merge:'מיזוג תאים',mergeRight:'מזג ימינה',mergeDown:'מזג למטה',splitHorizontal:'פיצול תא אופקית',splitVertical:'פיצול תא אנכית',title:'תכונות התא',cellType:'סוג התא',rowSpan:'מתיחת השורות',colSpan:'מתיחת התאים',wordWrap:'מניעת גלישת שורות',hAlign:'יישור אופקי',vAlign:'יישור אנכי',alignBaseline:'שורת בסיס',bgColor:'צבע רקע',borderColor:'צבע מסגרת',data:'מידע',header:'כותרת',yes:'כן',no:'לא',invalidWidth:'שדה רוחב התא חייב להיות מספר.',invalidHeight:'שדה גובה התא חייב להיות מספר.',invalidRowSpan:'שדה מתיחת השורות חייב להיות מספר שלם.',invalidColSpan:'שדה מתיחת העמודות חייב להיות מספר שלם.',chooseColor:'בחר'},row:{menu:'שורה',insertBefore:'הוספת שורה לפני',insertAfter:'הוספת שורה אחרי',deleteRow:'מחיקת שורות'},column:{menu:'עמודה',insertBefore:'הוספת עמודה לפני',insertAfter:'הוספת עמודה אחרי',deleteColumn:'מחיקת עמודות'}},button:{title:'מאפייני כפתור',text:'טקסט (ערך)',type:'סוג',typeBtn:'כפתור',typeSbm:'שליחה',typeRst:'איפוס'},checkboxAndRadio:{checkboxTitle:'מאפייני תיבת סימון',radioTitle:'מאפייני לחצן אפשרויות',value:'ערך',selected:'מסומן'},form:{title:'מאפיני טופס',menu:'מאפיני טופס',action:'שלח אל',method:'סוג שליחה',encoding:'קידוד'},select:{title:'מאפייני שדה בחירה',selectInfo:'מידע',opAvail:'אפשרויות זמינות',value:'ערך',size:'גודל',lines:'שורות',chkMulti:'איפשור בחירות מרובות',opText:'טקסט',opValue:'ערך',btnAdd:'הוספה',btnModify:'שינוי',btnUp:'למעלה',btnDown:'למטה',btnSetValue:'קביעה כברירת מחדל',btnDelete:'מחיקה'},textarea:{title:'מאפייני איזור טקסט',cols:'עמודות',rows:'שורות'},textfield:{title:'מאפייני שדה טקסט',name:'שם',value:'ערך',charWidth:'רוחב לפי תווים',maxChars:'מקסימום תווים',type:'סוג',typeText:'טקסט',typePass:'סיסמה'},hidden:{title:'מאפיני שדה חבוי',name:'שם',value:'ערך'},image:{title:'מאפייני התמונה',titleButton:'מאפיני כפתור תמונה',menu:'תכונות התמונה',infoTab:'מידע על התמונה',btnUpload:'שליחה לשרת',upload:'העלאה',alt:'טקסט חלופי',lockRatio:'נעילת היחס',resetSize:'איפוס הגודל',border:'מסגרת',hSpace:'מרווח אופקי',vSpace:'מרווח אנכי',alertUrl:'יש להקליד את כתובת התמונה',linkTab:'קישור',button2Img:'האם להפוך את תמונת הכפתור לתמונה פשוטה?',img2Button:'האם להפוך את התמונה לכפתור תמונה?',urlMissing:'כתובת התמונה חסרה.',validateBorder:'שדה המסגרת חייב להיות מספר שלם.',validateHSpace:'שדה המרווח האופקי חייב להיות מספר שלם.',validateVSpace:'שדה המרווח האנכי חייב להיות מספר שלם.'},flash:{properties:'מאפייני פלאש',propertiesTab:'מאפיינים',title:'מאפיני פלאש',chkPlay:'ניגון אוטומטי',chkLoop:'לולאה',chkMenu:'אפשר תפריט פלאש',chkFull:'אפשר חלון מלא',scale:'גודל',scaleAll:'הצג הכל',scaleNoBorder:'ללא גבולות',scaleFit:'התאמה מושלמת',access:'גישת סקריפט',accessAlways:'תמיד',accessSameDomain:'דומיין זהה',accessNever:'אף פעם',alignAbsBottom:'לתחתית האבסולוטית',alignAbsMiddle:'מרכוז אבסולוטי',alignBaseline:'לקו התחתית',alignTextTop:'לראש הטקסט',quality:'איכות',qualityBest:'מעולה',qualityHigh:'גבוהה',qualityAutoHigh:'גבוהה אוטומטית',qualityMedium:'ממוצעת',qualityAutoLow:'נמוכה אוטומטית',qualityLow:'נמוכה',windowModeWindow:'חלון',windowModeOpaque:'אטום',windowModeTransparent:'שקוף',windowMode:'מצב חלון',flashvars:'משתנים לפלאש',bgcolor:'צבע רקע',hSpace:'מרווח אופקי',vSpace:'מרווח אנכי',validateSrc:'יש להקליד את כתובת סרטון הפלאש (URL)',validateHSpace:'המרווח האופקי חייב להיות מספר.',validateVSpace:'המרווח האנכי חייב להיות מספר.'},spellCheck:{toolbar:'בדיקת איות',title:'בדיקת איות',notAvailable:'לא נמצא שירות זמין.',errorLoading:'שגיאה בהעלאת השירות: %s.',notInDic:'לא נמצא במילון',changeTo:'שינוי ל',btnIgnore:'התעלמות',btnIgnoreAll:'התעלמות מהכל',btnReplace:'החלפה',btnReplaceAll:'החלפת הכל',btnUndo:'החזרה',noSuggestions:'- אין הצעות -',progress:'בודק האיות בתהליך בדיקה....',noMispell:'בדיקות איות הסתיימה: לא נמצאו שגיאות כתיב',noChanges:'בדיקות איות הסתיימה: לא שונתה אף מילה',oneChange:'בדיקות איות הסתיימה: שונתה מילה אחת',manyChanges:'בדיקות איות הסתיימה: %1 מילים שונו',ieSpellDownload:'בודק האיות לא מותקן, האם להורידו?'},smiley:{toolbar:'סמיילי',title:'הוספת סמיילי',options:'אפשרויות סמיילים'},elementsPath:{eleLabel:'עץ האלמנטים',eleTitle:'%1 אלמנט'},numberedlist:'רשימה ממוספרת',bulletedlist:'רשימת נקודות',indent:'הגדלת הזחה',outdent:'הקטנת הזחה',justify:{left:'יישור לשמאל',center:'מרכוז',right:'יישור לימין',block:'יישור לשוליים'},blockquote:'בלוק ציטוט',clipboard:{title:'הדבקה',cutError:'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).',copyError:'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+C).',pasteMsg:'נא להדביק בתוך הקופסה באמצעות (<b>Ctrl/Cmd+V</b>) וללחוץ על <b>אישור</b>.',securityMsg:'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (Clipboard) בצורה ישירה. נא להדביק שוב בחלון זה.',pasteArea:'איזור הדבקה'},pastefromword:{confirmCleanup:'נראה הטקסט שבכוונתך להדביק מקורו בקובץ וורד. האם ברצונך לנקות אותו טרם ההדבקה?',toolbar:'הדבקה מ-Word',title:'הדבקה מ-Word',error:'לא ניתן היה לנקות את המידע בשל תקלה פנימית.'},pasteText:{button:'הדבקה כטקסט פשוט',title:'הדבקה כטקסט פשוט'},templates:{button:'תבניות',title:'תביות תוכן',options:'אפשרויות התבניות',insertOption:'החלפת תוכן ממשי',selectPromptMsg:'יש לבחור תבנית לפתיחה בעורך.<br />התוכן המקורי ימחק:',emptyListMsg:'(לא הוגדרו תבניות)'},showBlocks:'הצגת בלוקים',stylesCombo:{label:'סגנון',panelTitle:'סגנונות פורמט',panelTitle1:'סגנונות בלוק',panelTitle2:'סגנונות רצף',panelTitle3:'סגנונות אובייקט'},format:{label:'עיצוב',panelTitle:'עיצוב',tag_p:'נורמלי',tag_pre:'קוד',tag_address:'כתובת',tag_h1:'כותרת',tag_h2:'כותרת 2',tag_h3:'כותרת 3',tag_h4:'כותרת 4',tag_h5:'כותרת 5',tag_h6:'כותרת 6',tag_div:'נורמלי (DIV)'},div:{title:'יצירת מיכל (Div)',toolbar:'יצירת מיכל (Div)',cssClassInputLabel:'מחלקת עיצוב',styleSelectLabel:'סגנון',IdInputLabel:'מזהה (ID)',languageCodeInputLabel:'קוד שפה',inlineStyleInputLabel:'סגנון פנימי',advisoryTitleInputLabel:'כותרת מוצעת',langDirLabel:'כיוון שפה',langDirLTRLabel:'שמאל לימין (LTR)',langDirRTLLabel:'ימין לשמאל (RTL)',edit:'עריכת מיכל (Div)',remove:'הסרת מיכל (Div)'},iframe:{title:'מאפייני חלון פנימי (iframe)',toolbar:'חלון פנימי (iframe)',noUrl:'יש להכניס כתובת לחלון.',scrolling:'אפשר פסי גלילה',border:'הראה מסגרת לחלון'},font:{label:'גופן',voiceLabel:'גופן',panelTitle:'גופן'},fontSize:{label:'גודל',voiceLabel:'גודל',panelTitle:'גודל'},colorButton:{textColorTitle:'צבע טקסט',bgColorTitle:'צבע רקע',panelTitle:'צבעים',auto:'אוטומטי',more:'צבעים נוספים...'},colors:{'000':'שחור',800000:'סגול כהה','8B4513':'חום בהיר','2F4F4F':'אפור צפחה','008080':'כחול-ירוק','000080':'כחול-סגול','4B0082':'אינדיגו',696969:'אפור מעומעם',B22222:'אדום-חום',A52A2A:'חום',DAA520:'כתום זהב','006400':'ירוק כהה','40E0D0':'טורקיז','0000CD':'כחול בינוני',800080:'סגול',808080:'אפור',F00:'אדום',FF8C00:'כתום כהה',FFD700:'זהב','008000':'ירוק','0FF':'ציאן','00F':'כחול',EE82EE:'סגלגל',A9A9A9:'אפור כהה',FFA07A:'כתום-וורוד',FFA500:'כתום',FFFF00:'צהוב','00FF00':'ליים',AFEEEE:'טורקיז בהיר',ADD8E6:'כחול בהיר',DDA0DD:'שזיף',D3D3D3:'אפור בהיר',FFF0F5:'לבנדר מסמיק',FAEBD7:'לבן עתיק',FFFFE0:'צהוב בהיר',F0FFF0:'טל דבש',F0FFFF:'תכלת',F0F8FF:'כחול טיפת מים',E6E6FA:'לבנדר',FFF:'לבן'},scayt:{title:'בדיקת איות בזמן כתיבה (SCAYT)',opera_title:'לא זמין בדפדפן אופרה',enable:'אפשר SCAYT',disable:'בטל SCAYT',about:'אודות SCAYT',toggle:'שינוי SCAYT',options:'אפשרויות',langs:'שפות',moreSuggestions:'הצעות נוספות',ignore:'התעלמות',ignoreAll:'התעלמות מהכל',addWord:'הוספת מילה',emptyDic:'יש לבחור מילון.',optionsTab:'אפשרויות',allCaps:'התעלם ממילים שכל אותיותיהן גדולות',ignoreDomainNames:'התעלם משמות מתחם',mixedCase:'התעלם ממילים עם אותיות גדולות וקטנות ביחד',mixedWithDigits:'התעלם ממילים עם מספרים',languagesTab:'שפות',dictionariesTab:'מילון',dic_field_name:'שם המילון',dic_create:'יצירה',dic_restore:'שחזור',dic_delete:'מחיקה',dic_rename:'שינוי שם',dic_info:'בהתחלה מילון המשתמש מאוחסן בעוגיה, אך עוגיות מוגבלות במקום. כאשר המילון מגיע לגודל בו הוא אינו יכול להתאכסן בעוגיה, המילון צריך להתאכסן בשרתנו. לשם כך עליך לתת שם למילון. אם כבר יש לך מילון מאוחסן, יש להכניס את שמו וללחוץ על כפתור השחזור.',aboutTab:'אודות'},about:{title:'אודות CKEditor',dlgTitle:'אודות CKEditor',help:'היכנסו ל$1 לעזרה.',userGuide:'מדריך המשתמש של CKEditor',moreInfo:'למידע נוסף בקרו באתרנו:',copy:'Copyright © $1. כל הזכויות שמורות.'},maximize:'הגדלה למקסימום',minimize:'הקטנה למינימום',fakeobjects:{anchor:'עוגן',flash:'סרטון פלאש',iframe:'חלון פנימי (iframe)',hiddenfield:'שדה חבוי',unknown:'אובייקט לא ידוע'},resize:'יש לגרור בכדי לשנות את הגודל',colordialog:{title:'בחירת צבע',options:'אפשרויות צבע',highlight:'סימון',selected:'בחירה',clear:'ניקוי'},toolbarCollapse:'מזעור סרגל כלים',toolbarExpand:'הרחבת סרגל כלים',toolbarGroups:{document:'מסמך',clipboard:'לוח הגזירים (Clipboard)/צעד אחרון',editing:'עריכה',forms:'טפסים',basicstyles:'עיצוב בסיסי',paragraph:'פסקה',links:'קישורים',insert:'הכנסה',styles:'עיצוב',colors:'צבעים',tools:'כלים'},bidi:{ltr:'כיוון טקסט משמאל לימין (LTR)',rtl:'כיוון טקסט מימין לשמאל (RTL)'},docprops:{label:'מאפייני מסמך',title:'מאפייני מסמך',design:'עיצוב',meta:'תגי Meta',chooseColor:'בחירה',other:'אחר...',docTitle:'כותרת עמוד',charset:'קידוד תווים',charsetOther:'קידוד תווים אחר',charsetASCII:'ASCII',charsetCE:'מרכז אירופאי',charsetCT:'סיני מסורתי (Big5)',charsetCR:'קירילי',charsetGR:'יווני',charsetJP:'יפני',charsetKR:'קוריאני',charsetTR:'טורקי',charsetUN:'יוניקוד (UTF-8)',charsetWE:'מערב אירופאי',docType:'כותר סוג מסמך',docTypeOther:'כותר סוג מסמך אחר',xhtmlDec:'כלול הכרזות XHTML',bgColor:'צבע רקע',bgImage:'כתובת של תמונת רקע',bgFixed:'רקע לא נגלל (צמוד)',txtColor:'צבע טקסט',margin:'מרווחי עמוד',marginTop:'עליון',marginLeft:'שמאלי',marginRight:'ימני',marginBottom:'תחתון',metaKeywords:'מילות מפתח של המסמך (מופרדות בפסיק)',metaDescription:'תיאור המסמך',metaAuthor:'מחבר/ת',metaCopyright:'זכויות יוצרים',previewHtml:'<p>זהו <strong>טקסט הדגמה</strong>. את/ה משתמש/ת ב<a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/hi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/hi.js
new file mode 100755
index 0000000..158d9c4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/hi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.hi={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'एडिटर टूलबार',editor:'रिच टेक्स्ट एडिटर',source:'सोर्स',newPage:'नया पेज',save:'सेव',preview:'प्रीव्यू',cut:'कट',copy:'कॉपी',paste:'पेस्ट',print:'प्रिन्ट',underline:'रेखांकण',bold:'बोल्ड',italic:'इटैलिक',selectAll:'सब सॅलॅक्ट करें',removeFormat:'फ़ॉर्मैट हटायें',strike:'स्ट्राइक थ्रू',subscript:'अधोलेख',superscript:'अभिलेख',horizontalrule:'हॉरिज़ॉन्टल रेखा इन्सर्ट करें',pagebreak:'पेज ब्रेक इन्सर्ट् करें',pagebreakAlt:'पेज ब्रेक',unlink:'लिंक हटायें',undo:'अन्डू',redo:'रीडू',common:{browseServer:'सर्वर ब्राउज़ करें',url:'URL',protocol:'प्रोटोकॉल',upload:'अपलोड',uploadSubmit:'इसे सर्वर को भेजें',image:'तस्वीर',flash:'फ़्लैश',form:'फ़ॉर्म',checkbox:'चॅक बॉक्स',radio:'रेडिओ बटन',textField:'टेक्स्ट फ़ील्ड',textarea:'टेक्स्ट एरिया',hiddenField:'गुप्त फ़ील्ड',button:'बटन',select:'चुनाव फ़ील्ड',imageButton:'तस्वीर बटन',notSet:'<सॅट नहीं>',id:'Id',name:'नाम',langDir:'भाषा लिखने की दिशा',langDirLtr:'बायें से दायें (LTR)',langDirRtl:'दायें से बायें (RTL)',langCode:'भाषा कोड',longDescr:'अधिक विवरण के लिए URL',cssClass:'स्टाइल-शीट क्लास',advisoryTitle:'परामर्श शीर्शक',cssStyle:'स्टाइल',ok:'ठीक है',cancel:'रद्द करें',close:'Close',preview:'Preview',generalTab:'सामान्य',advancedTab:'ऍड्वान्स्ड',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'चौड़ाई',height:'ऊँचाई',align:'ऍलाइन',alignLeft:'दायें',alignRight:'दायें',alignCenter:'बीच में',alignTop:'ऊपर',alignMiddle:'मध्य',alignBottom:'नीचे',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'विशेष करॅक्टर इन्सर्ट करें',title:'विशेष करॅक्टर चुनें',options:'Special Character Options'},link:{toolbar:'लिंक इन्सर्ट/संपादन',other:'<अन्य>',menu:'लिंक संपादन',title:'लिंक',info:'लिंक ',target:'टार्गेट',upload:'अपलोड',advanced:'ऍड्वान्स्ड',type:'लिंक प्रकार',toUrl:'URL',toAnchor:'इस पेज का ऐंकर',toEmail:'ई-मेल',targetFrame:'<फ़्रेम>',targetPopup:'<पॉप-अप विन्डो>',targetFrameName:'टार्गेट फ़्रेम का नाम',targetPopupName:'पॉप-अप विन्डो का नाम',popupFeatures:'पॉप-अप विन्डो फ़ीचर्स',popupResizable:'Resizable',popupStatusBar:'स्टेटस बार',popupLocationBar:'लोकेशन बार',popupToolbar:'टूल बार',popupMenuBar:'मॅन्यू बार',popupFullScreen:'फ़ुल स्क्रीन (IE)',popupScrollBars:'स्क्रॉल बार',popupDependent:'डिपेन्डॅन्ट (Netscape)',popupLeft:'बायीं तरफ',popupTop:'दायीं तरफ',id:'Id',langDir:'भाषा लिखने की दिशा',langDirLTR:'बायें से दायें (LTR)',langDirRTL:'दायें से बायें (RTL)',acccessKey:'ऍक्सॅस की',name:'नाम',langCode:'भाषा लिखने की दिशा',tabIndex:'टैब इन्डॅक्स',advisoryTitle:'परामर्श शीर्शक',advisoryContentType:'परामर्श कन्टॅन्ट प्रकार',cssClasses:'स्टाइल-शीट क्लास',charset:'लिंक रिसोर्स करॅक्टर सॅट',styles:'स्टाइल',rel:'Relationship',selectAnchor:'ऐंकर चुनें',anchorName:'ऐंकर नाम से',anchorId:'ऍलीमॅन्ट Id से',emailAddress:'ई-मेल पता',emailSubject:'संदेश विषय',emailBody:'संदेश',noAnchors:'(डॉक्यूमॅन्ट में ऐंकर्स की संख्या)',noUrl:'लिंक URL टाइप करें',noEmail:'ई-मेल पता टाइप करें'},anchor:{toolbar:'ऐंकर इन्सर्ट/संपादन',menu:'ऐंकर प्रॉपर्टीज़',title:'ऐंकर प्रॉपर्टीज़',name:'ऐंकर का नाम',errorName:'ऐंकर का नाम टाइप करें',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'खोजें और बदलें',find:'खोजें',replace:'रीप्लेस',findWhat:'यह खोजें:',replaceWith:'इससे रिप्लेस करें:',notFoundMsg:'आपके द्वारा दिया गया टेक्स्ट नहीं मिला',findOptions:'Find Options',matchCase:'केस मिलायें',matchWord:'पूरा शब्द मिलायें',matchCyclic:'Match cyclic',replaceAll:'सभी रिप्लेस करें',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'टेबल',title:'टेबल प्रॉपर्टीज़',menu:'टेबल प्रॉपर्टीज़',deleteTable:'टेबल डिलीट करें',rows:'पंक्तियाँ',columns:'कालम',border:'बॉर्डर साइज़',widthPx:'पिक्सैल',widthPc:'प्रतिशत',widthUnit:'width unit',cellSpace:'सैल अंतर',cellPad:'सैल पैडिंग',caption:'शीर्षक',summary:'सारांश',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'खाना',insertBefore:'पहले सैल डालें',insertAfter:'बाद में सैल डालें',deleteCell:'सैल डिलीट करें',merge:'सैल मिलायें',mergeRight:'बाँया विलय',mergeDown:'नीचे विलय करें',splitHorizontal:'सैल को क्षैतिज स्थिति में विभाजित करें',splitVertical:'सैल को लम्बाकार में विभाजित करें',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'पंक्ति',insertBefore:'पहले पंक्ति डालें',insertAfter:'बाद में पंक्ति डालें',deleteRow:'पंक्तियाँ डिलीट करें'},column:{menu:'कालम',insertBefore:'पहले कालम डालें',insertAfter:'बाद में कालम डालें',deleteColumn:'कालम डिलीट करें'}},button:{title:'बटन प्रॉपर्टीज़',text:'टेक्स्ट (वैल्यू)',type:'प्रकार',typeBtn:'बटन',typeSbm:'सब्मिट',typeRst:'रिसेट'},checkboxAndRadio:{checkboxTitle:'चॅक बॉक्स प्रॉपर्टीज़',radioTitle:'रेडिओ बटन प्रॉपर्टीज़',value:'वैल्यू',selected:'सॅलॅक्टॅड'},form:{title:'फ़ॉर्म प्रॉपर्टीज़',menu:'फ़ॉर्म प्रॉपर्टीज़',action:'क्रिया',method:'तरीका',encoding:'Encoding'},select:{title:'चुनाव फ़ील्ड प्रॉपर्टीज़',selectInfo:'सूचना',opAvail:'उपलब्ध विकल्प',value:'वैल्यू',size:'साइज़',lines:'पंक्तियाँ',chkMulti:'एक से ज्यादा विकल्प चुनने दें',opText:'टेक्स्ट',opValue:'वैल्यू',btnAdd:'जोड़ें',btnModify:'बदलें',btnUp:'ऊपर',btnDown:'नीचे',btnSetValue:'चुनी गई वैल्यू सॅट करें',btnDelete:'डिलीट'},textarea:{title:'टेक्स्त एरिया प्रॉपर्टीज़',cols:'कालम',rows:'पंक्तियां'},textfield:{title:'टेक्स्ट फ़ील्ड प्रॉपर्टीज़',name:'नाम',value:'वैल्यू',charWidth:'करॅक्टर की चौढ़ाई',maxChars:'अधिकतम करॅक्टर',type:'टाइप',typeText:'टेक्स्ट',typePass:'पास्वर्ड'},hidden:{title:'गुप्त फ़ील्ड प्रॉपर्टीज़',name:'नाम',value:'वैल्यू'},image:{title:'तस्वीर प्रॉपर्टीज़',titleButton:'तस्वीर बटन प्रॉपर्टीज़',menu:'तस्वीर प्रॉपर्टीज़',infoTab:'तस्वीर की जानकारी',btnUpload:'इसे सर्वर को भेजें',upload:'अपलोड',alt:'वैकल्पिक टेक्स्ट',lockRatio:'लॉक अनुपात',resetSize:'रीसॅट साइज़',border:'बॉर्डर',hSpace:'हॉरिज़ॉन्टल स्पेस',vSpace:'वर्टिकल स्पेस',alertUrl:'तस्वीर का URL टाइप करें ',linkTab:'लिंक',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'फ़्लैश प्रॉपर्टीज़',propertiesTab:'Properties',title:'फ़्लैश प्रॉपर्टीज़',chkPlay:'ऑटो प्ले',chkLoop:'लूप',chkMenu:'फ़्लैश मॅन्यू का प्रयोग करें',chkFull:'Allow Fullscreen',scale:'स्केल',scaleAll:'सभी दिखायें',scaleNoBorder:'कोई बॉर्डर नहीं',scaleFit:'बिल्कुल फ़िट',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs नीचे',alignAbsMiddle:'Abs ऊपर',alignBaseline:'मूल रेखा',alignTextTop:'टेक्स्ट ऊपर',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'बैक्ग्राउन्ड रंग',hSpace:'हॉरिज़ॉन्टल स्पेस',vSpace:'वर्टिकल स्पेस',validateSrc:'लिंक URL टाइप करें',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'वर्तनी (स्पेलिंग) जाँच',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'शब्दकोश में नहीं',changeTo:'इसमें बदलें',btnIgnore:'इग्नोर',btnIgnoreAll:'सभी इग्नोर करें',btnReplace:'रिप्लेस',btnReplaceAll:'सभी रिप्लेस करें',btnUndo:'अन्डू',noSuggestions:'- कोई सुझाव नहीं -',progress:'वर्तनी की जाँच (स्पॅल-चॅक) जारी है...',noMispell:'वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई',noChanges:'वर्तनी की जाँच :कोई शब्द नहीं बदला गया',oneChange:'वर्तनी की जाँच : एक शब्द बदला गया',manyChanges:'वर्तनी की जाँच : %1 शब्द बदले गये',ieSpellDownload:'स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डाउनलोड करना चाहेंगे?'},smiley:{toolbar:'स्माइली',title:'स्माइली इन्सर्ट करें',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'अंकीय सूची',bulletedlist:'बुलॅट सूची',indent:'इन्डॅन्ट बढ़ायें',outdent:'इन्डॅन्ट कम करें',justify:{left:'बायीं तरफ',center:'बीच में',right:'दायीं तरफ',block:'ब्लॉक जस्टीफ़ाई'},blockquote:'ब्लॉक-कोट',clipboard:{title:'पेस्ट',cutError:'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।',copyError:'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+C) का प्रयोग करें।',pasteMsg:'Ctrl/Cmd+V का प्रयोग करके पेस्ट करें और ठीक है करें.',securityMsg:'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'पेस्ट (वर्ड से)',title:'पेस्ट (वर्ड से)',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'पेस्ट (सादा टॅक्स्ट)',title:'पेस्ट (सादा टॅक्स्ट)'},templates:{button:'टॅम्प्लेट',title:'कन्टेन्ट टॅम्प्लेट',options:'Template Options',insertOption:'मूल शब्दों को बदलें',selectPromptMsg:'ऍडिटर में ओपन करने हेतु टॅम्प्लेट चुनें(वर्तमान कन्टॅन्ट सेव नहीं होंगे):',emptyListMsg:'(कोई टॅम्प्लेट डिफ़ाइन नहीं किया गया है)'},showBlocks:'ब्लॉक दिखायें',stylesCombo:{label:'स्टाइल',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'फ़ॉर्मैट',panelTitle:'फ़ॉर्मैट',tag_p:'साधारण',tag_pre:'फ़ॉर्मैटॅड',tag_address:'पता',tag_h1:'शीर्षक 1',tag_h2:'शीर्षक 2',tag_h3:'शीर्षक 3',tag_h4:'शीर्षक 4',tag_h5:'शीर्षक 5',tag_h6:'शीर्षक 6',tag_div:'शीर्षक (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'फ़ॉन्ट',voiceLabel:'Font',panelTitle:'फ़ॉन्ट'},fontSize:{label:'साइज़',voiceLabel:'Font Size',panelTitle:'साइज़'},colorButton:{textColorTitle:'टेक्स्ट रंग',bgColorTitle:'बैक्ग्राउन्ड रंग',panelTitle:'Colors',auto:'स्वचालित',more:'और रंग...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'मेक्सिमाईज़',minimize:'मिनिमाईज़',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'डॉक्यूमॅन्ट प्रॉपर्टीज़',title:'डॉक्यूमॅन्ट प्रॉपर्टीज़',design:'Design',meta:'मॅटाडेटा',chooseColor:'Choose',other:'<अन्य>',docTitle:'पेज शीर्षक',charset:'करेक्टर सॅट ऍन्कोडिंग',charsetOther:'अन्य करेक्टर सॅट ऍन्कोडिंग',charsetASCII:'ASCII',charsetCE:'मध्य यूरोपीय (Central European)',charsetCT:'चीनी (Chinese Traditional Big5)',charsetCR:'सिरीलिक (Cyrillic)',charsetGR:'यवन (Greek)',charsetJP:'जापानी (Japanese)',charsetKR:'कोरीयन (Korean)',charsetTR:'तुर्की (Turkish)',charsetUN:'यूनीकोड (UTF-8)',charsetWE:'पश्चिम यूरोपीय (Western European)',docType:'डॉक्यूमॅन्ट प्रकार शीर्षक',docTypeOther:'अन्य डॉक्यूमॅन्ट प्रकार शीर्षक',xhtmlDec:'XHTML सूचना सम्मिलित करें',bgColor:'बैक्ग्राउन्ड रंग',bgImage:'बैक्ग्राउन्ड तस्वीर URL',bgFixed:'स्क्रॉल न करने वाला बैक्ग्राउन्ड',txtColor:'टेक्स्ट रंग',margin:'पेज मार्जिन',marginTop:'ऊपर',marginLeft:'बायें',marginRight:'दायें',marginBottom:'नीचे',metaKeywords:'डॉक्युमॅन्ट इन्डेक्स संकेतशब्द (अल्पविराम से अलग करें)',metaDescription:'डॉक्यूमॅन्ट करॅक्टरन',metaAuthor:'लेखक',metaCopyright:'कॉपीराइट',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/hr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/hr.js
new file mode 100755
index 0000000..56167cf
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/hr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.hr={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Alatne trake uređivača teksta',editor:'Bogati uređivač teksta',source:'Kôd',newPage:'Nova stranica',save:'Snimi',preview:'Pregledaj',cut:'Izreži',copy:'Kopiraj',paste:'Zalijepi',print:'Ispiši',underline:'Potcrtano',bold:'Podebljaj',italic:'Ukosi',selectAll:'Odaberi sve',removeFormat:'Ukloni formatiranje',strike:'Precrtano',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Ubaci vodoravnu liniju',pagebreak:'Ubaci prijelom stranice',pagebreakAlt:'Prijelom stranice',unlink:'Ukloni link',undo:'Poništi',redo:'Ponovi',common:{browseServer:'Pretraži server',url:'URL',protocol:'Protokol',upload:'Pošalji',uploadSubmit:'Pošalji na server',image:'Slika',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<nije postavljeno>',id:'Id',name:'Naziv',langDir:'Smjer jezika',langDirLtr:'S lijeva na desno (LTR)',langDirRtl:'S desna na lijevo (RTL)',langCode:'Kôd jezika',longDescr:'Dugački opis URL',cssClass:'Stylesheet klase',advisoryTitle:'Advisory naslov',cssStyle:'Stil',ok:'OK',cancel:'Poništi',close:'Zatvori',preview:'Pregledaj',generalTab:'Općenito',advancedTab:'Napredno',validateNumberFailed:'Ova vrijednost nije broj.',confirmNewPage:'Sve napravljene promjene će biti izgubljene ukoliko ih niste snimili. Sigurno želite učitati novu stranicu?',confirmCancel:'Neke od opcija su promjenjene. Sigurno želite zatvoriti ovaj prozor?',options:'Opcije',target:'Odredište',targetNew:'Novi prozor (_blank)',targetTop:'Vršni prozor (_top)',targetSelf:'Isti prozor (_self)',targetParent:'Roditeljski prozor (_parent)',langDirLTR:'S lijeva na desno (LTR)',langDirRTL:'S desna na lijevo (RTL)',styles:'Stil',cssClasses:'Klase stilova',width:'Širina',height:'Visina',align:'Poravnaj',alignLeft:'Lijevo',alignRight:'Desno',alignCenter:'Središnje',alignTop:'Vrh',alignMiddle:'Sredina',alignBottom:'Dolje',invalidHeight:'Visina mora biti broj.',invalidWidth:'Širina mora biti broj.',invalidCssLength:'Vrijednost određena za "%1" polje mora biti pozitivni broj sa ili bez važećih CSS mjernih jedinica (px, %, in, cm, mm, em, ex, pt ili pc).',invalidHtmlLength:'Vrijednost određena za "%1" polje mora biti pozitivni broj sa ili bez važećih HTML mjernih jedinica (px ili %).',invalidInlineStyle:'Vrijednost za linijski stil mora sadržavati jednu ili više definicija s formatom "naziv:vrijednost", odvojenih točka-zarezom.',cssLengthTooltip:'Unesite broj za vrijednost u pikselima ili broj s važećim CSS mjernim jedinicama (px, %, in, cm, mm, em, ex, pt ili pc).',unavailable:'%1<span class="cke_accessibility">, nedostupno</span>'},contextmenu:{options:'Opcije izbornika'},specialChar:{toolbar:'Ubaci posebne znakove',title:'Odaberite posebni karakter',options:'Opcije specijalnih znakova'},link:{toolbar:'Ubaci/promijeni link',other:'<drugi>',menu:'Promijeni link',title:'Link',info:'Link Info',target:'Meta',upload:'Pošalji',advanced:'Napredno',type:'Link vrsta',toUrl:'URL',toAnchor:'Sidro na ovoj stranici',toEmail:'E-Mail',targetFrame:'<okvir>',targetPopup:'<popup prozor>',targetFrameName:'Ime ciljnog okvira',targetPopupName:'Naziv popup prozora',popupFeatures:'Mogućnosti popup prozora',popupResizable:'Promjenjiva veličina',popupStatusBar:'Statusna traka',popupLocationBar:'Traka za lokaciju',popupToolbar:'Traka s alatima',popupMenuBar:'Izborna traka',popupFullScreen:'Cijeli ekran (IE)',popupScrollBars:'Scroll traka',popupDependent:'Ovisno (Netscape)',popupLeft:'Lijeva pozicija',popupTop:'Gornja pozicija',id:'Id',langDir:'Smjer jezika',langDirLTR:'S lijeva na desno (LTR)',langDirRTL:'S desna na lijevo (RTL)',acccessKey:'Pristupna tipka',name:'Naziv',langCode:'Smjer jezika',tabIndex:'Tab Indeks',advisoryTitle:'Advisory naslov',advisoryContentType:'Advisory vrsta sadržaja',cssClasses:'Stylesheet klase',charset:'Kodna stranica povezanih resursa',styles:'Stil',rel:'Veza',selectAnchor:'Odaberi sidro',anchorName:'Po nazivu sidra',anchorId:'Po Id elementa',emailAddress:'E-Mail adresa',emailSubject:'Naslov',emailBody:'Sadržaj poruke',noAnchors:'(Nema dostupnih sidra)',noUrl:'Molimo upišite URL link',noEmail:'Molimo upišite e-mail adresu'},anchor:{toolbar:'Ubaci/promijeni sidro',menu:'Svojstva sidra',title:'Svojstva sidra',name:'Ime sidra',errorName:'Molimo unesite ime sidra',remove:'Ukloni sidro'},list:{numberedTitle:'Svojstva brojčane liste',bulletedTitle:'Svojstva liste',type:'Vrsta',start:'Početak',validateStartNumber:'Početak brojčane liste mora biti cijeli broj.',circle:'Krug',disc:'Disk',square:'Kvadrat',none:'Bez',notset:'<nije određen>',armenian:'Armenijska numeracija',georgian:'Gruzijska numeracija(an, ban, gan, etc.)',lowerRoman:'Romanska numeracija mala slova (i, ii, iii, iv, v, itd.)',upperRoman:'Romanska numeracija velika slova (I, II, III, IV, V, itd.)',lowerAlpha:'Znakovi mala slova (a, b, c, d, e, itd.)',upperAlpha:'Znakovi velika slova (A, B, C, D, E, itd.)',lowerGreek:'Grčka numeracija mala slova (alfa, beta, gama, itd).',decimal:'Decimalna numeracija (1, 2, 3, itd.)',decimalLeadingZero:'Decimalna s vodećom nulom (01, 02, 03, itd)'},findAndReplace:{title:'Pronađi i zamijeni',find:'Pronađi',replace:'Zamijeni',findWhat:'Pronađi:',replaceWith:'Zamijeni s:',notFoundMsg:'Traženi tekst nije pronađen.',findOptions:'Opcije traženja',matchCase:'Usporedi mala/velika slova',matchWord:'Usporedi cijele riječi',matchCyclic:'Usporedi kružno',replaceAll:'Zamijeni sve',replaceSuccessMsg:'Zamijenjeno %1 pojmova.'},table:{toolbar:'Tablica',title:'Svojstva tablice',menu:'Svojstva tablice',deleteTable:'Izbriši tablicu',rows:'Redova',columns:'Kolona',border:'Veličina okvira',widthPx:'piksela',widthPc:'postotaka',widthUnit:'jedinica širine',cellSpace:'Prostornost ćelija',cellPad:'Razmak ćelija',caption:'Naslov',summary:'Sažetak',headers:'Zaglavlje',headersNone:'Ništa',headersColumn:'Prva kolona',headersRow:'Prvi red',headersBoth:'Oba',invalidRows:'Broj redova mora biti broj veći od 0.',invalidCols:'Broj kolona mora biti broj veći od 0.',invalidBorder:'Debljina ruba mora biti broj.',invalidWidth:'Širina tablice mora biti broj.',invalidHeight:'Visina tablice mora biti broj.',invalidCellSpacing:'Prostornost ćelija mora biti broj.',invalidCellPadding:'Razmak ćelija mora biti broj.',cell:{menu:'Ćelija',insertBefore:'Ubaci ćeliju prije',insertAfter:'Ubaci ćeliju poslije',deleteCell:'Izbriši ćelije',merge:'Spoji ćelije',mergeRight:'Spoji desno',mergeDown:'Spoji dolje',splitHorizontal:'Podijeli ćeliju vodoravno',splitVertical:'Podijeli ćeliju okomito',title:'Svojstva ćelije',cellType:'Vrsta ćelije',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Prelazak u novi red',hAlign:'Vodoravno poravnanje',vAlign:'Okomito poravnanje',alignBaseline:'Osnovna linija',bgColor:'Boja pozadine',borderColor:'Boja ruba',data:'Podatak',header:'Zaglavlje',yes:'Da',no:'ne',invalidWidth:'Širina ćelije mora biti broj.',invalidHeight:'Visina ćelije mora biti broj.',invalidRowSpan:'Rows span mora biti cijeli broj.',invalidColSpan:'Columns span mora biti cijeli broj.',chooseColor:'Odaberi'},row:{menu:'Red',insertBefore:'Ubaci red prije',insertAfter:'Ubaci red poslije',deleteRow:'Izbriši redove'},column:{menu:'Kolona',insertBefore:'Ubaci kolonu prije',insertAfter:'Ubaci kolonu poslije',deleteColumn:'Izbriši kolone'}},button:{title:'Image Button svojstva',text:'Tekst (vrijednost)',type:'Vrsta',typeBtn:'Gumb',typeSbm:'Pošalji',typeRst:'Poništi'},checkboxAndRadio:{checkboxTitle:'Checkbox svojstva',radioTitle:'Radio Button svojstva',value:'Vrijednost',selected:'Odabrano'},form:{title:'Form svojstva',menu:'Form svojstva',action:'Akcija',method:'Metoda',encoding:'Encoding'},select:{title:'Selection svojstva',selectInfo:'Info',opAvail:'Dostupne opcije',value:'Vrijednost',size:'Veličina',lines:'linija',chkMulti:'Dozvoli višestruki odabir',opText:'Tekst',opValue:'Vrijednost',btnAdd:'Dodaj',btnModify:'Promijeni',btnUp:'Gore',btnDown:'Dolje',btnSetValue:'Postavi kao odabranu vrijednost',btnDelete:'Obriši'},textarea:{title:'Textarea svojstva',cols:'Kolona',rows:'Redova'},textfield:{title:'Text Field svojstva',name:'Ime',value:'Vrijednost',charWidth:'Širina',maxChars:'Najviše karaktera',type:'Vrsta',typeText:'Tekst',typePass:'Šifra'},hidden:{title:'Hidden Field svojstva',name:'Ime',value:'Vrijednost'},image:{title:'Svojstva slika',titleButton:'Image Button svojstva',menu:'Svojstva slika',infoTab:'Info slike',btnUpload:'Pošalji na server',upload:'Pošalji',alt:'Alternativni tekst',lockRatio:'Zaključaj odnos',resetSize:'Obriši veličinu',border:'Okvir',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Unesite URL slike',linkTab:'Link',button2Img:'Želite li promijeniti odabrani gumb u jednostavnu sliku?',img2Button:'Želite li promijeniti odabranu sliku u gumb?',urlMissing:'Nedostaje URL slike.',validateBorder:'Okvir mora biti cijeli broj.',validateHSpace:'HSpace mora biti cijeli broj',validateVSpace:'VSpace mora biti cijeli broj.'},flash:{properties:'Flash svojstva',propertiesTab:'Svojstva',title:'Flash svojstva',chkPlay:'Auto Play',chkLoop:'Ponavljaj',chkMenu:'Omogući Flash izbornik',chkFull:'Omogući Fullscreen',scale:'Omjer',scaleAll:'Prikaži sve',scaleNoBorder:'Bez okvira',scaleFit:'Točna veličina',access:'Script Access',accessAlways:'Uvijek',accessSameDomain:'Ista domena',accessNever:'Nikad',alignAbsBottom:'Abs dolje',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignTextTop:'Vrh teksta',quality:'Kvaliteta',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Vrsta prozora',flashvars:'Varijable za Flash',bgcolor:'Boja pozadine',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Molimo upišite URL link',validateHSpace:'HSpace mora biti broj.',validateVSpace:'VSpace mora biti broj.'},spellCheck:{toolbar:'Provjeri pravopis',title:'Provjera pravopisa',notAvailable:'Žao nam je, ali usluga trenutno nije dostupna.',errorLoading:'Greška učitavanja aplikacije: %s.',notInDic:'Nije u rječniku',changeTo:'Promijeni u',btnIgnore:'Zanemari',btnIgnoreAll:'Zanemari sve',btnReplace:'Zamijeni',btnReplaceAll:'Zamijeni sve',btnUndo:'Vrati',noSuggestions:'-Nema preporuke-',progress:'Provjera u tijeku...',noMispell:'Provjera završena: Nema grešaka',noChanges:'Provjera završena: Nije napravljena promjena',oneChange:'Provjera završena: Jedna riječ promjenjena',manyChanges:'Provjera završena: Promijenjeno %1 riječi',ieSpellDownload:'Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?'},smiley:{toolbar:'Smješko',title:'Ubaci smješka',options:'Opcije smješka'},elementsPath:{eleLabel:'Putanja elemenata',eleTitle:'%1 element'},numberedlist:'Brojčana lista',bulletedlist:'Obična lista',indent:'Pomakni udesno',outdent:'Pomakni ulijevo',justify:{left:'Lijevo poravnanje',center:'Središnje poravnanje',right:'Desno poravnanje',block:'Blok poravnanje'},blockquote:'Blockquote',clipboard:{title:'Zalijepi',cutError:'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).',copyError:'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).',pasteMsg:'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl/Cmd+V</STRONG>) i kliknite <STRONG>OK</STRONG>.',securityMsg:'Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.',pasteArea:'Prostor za ljepljenje'},pastefromword:{confirmCleanup:'Tekst koji želite zalijepiti čini se da je kopiran iz Worda. Želite li prije očistiti tekst?',toolbar:'Zalijepi iz Worda',title:'Zalijepi iz Worda',error:'Nije moguće očistiti podatke za ljepljenje zbog interne greške'},pasteText:{button:'Zalijepi kao čisti tekst',title:'Zalijepi kao čisti tekst'},templates:{button:'Predlošci',title:'Predlošci sadržaja',options:'Opcije predložaka',insertOption:'Zamijeni trenutne sadržaje',selectPromptMsg:'Molimo odaberite predložak koji želite otvoriti<br>(stvarni sadržaj će biti izgubljen):',emptyListMsg:'(Nema definiranih predložaka)'},showBlocks:'Prikaži blokove',stylesCombo:{label:'Stil',panelTitle:'Stilovi formatiranja',panelTitle1:'Block stilovi',panelTitle2:'Inline stilovi',panelTitle3:'Object stilovi'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatirano',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Napravi DIV kontejner',toolbar:'Napravi DIV kontejner',cssClassInputLabel:'Klase stilova',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:'Jezični kod',inlineStyleInputLabel:'Stil u liniji',advisoryTitleInputLabel:'Savjetodavni naslov',langDirLabel:'Smjer jezika',langDirLTRLabel:'S lijeva na desno (LTR)',langDirRTLLabel:'S desna na lijevo (RTL)',edit:'Uredi DIV',remove:'Ukloni DIV'},iframe:{title:'IFrame svojstva',toolbar:'IFrame',noUrl:'Unesite URL iframe-a',scrolling:'Omogući trake za skrolanje',border:'Prikaži okvir IFrame-a'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'Veličina',voiceLabel:'Veličina slova',panelTitle:'Veličina'},colorButton:{textColorTitle:'Boja teksta',bgColorTitle:'Boja pozadine',panelTitle:'Boje',auto:'Automatski',more:'Više boja...'},colors:{'000':'Crna',800000:'Kesten','8B4513':'Smeđa','2F4F4F':'Tamno siva','008080':'Teal','000080':'Mornarska','4B0082':'Indigo',696969:'Tamno siva',B22222:'Vatrena cigla',A52A2A:'Smeđa',DAA520:'Zlatna','006400':'Tamno zelena','40E0D0':'Tirkizna','0000CD':'Srednje plava',800080:'Ljubičasta',808080:'Siva',F00:'Crvena',FF8C00:'Tamno naranđasta',FFD700:'Zlatna','008000':'Zelena','0FF':'Cijan','00F':'Plava',EE82EE:'Ljubičasta',A9A9A9:'Mutno siva',FFA07A:'Svijetli losos',FFA500:'Naranđasto',FFFF00:'Žuto','00FF00':'Limun',AFEEEE:'Blijedo tirkizna',ADD8E6:'Svijetlo plava',DDA0DD:'Šljiva',D3D3D3:'Svijetlo siva',FFF0F5:'Lavanda rumeno',FAEBD7:'Antikno bijela',FFFFE0:'Svijetlo žuta',F0FFF0:'Med',F0FFFF:'Azurna',F0F8FF:'Alice plava',E6E6FA:'Lavanda',FFF:'Bijela'},scayt:{title:'Provjeri pravopis tijekom tipkanja (SCAYT)',opera_title:'Nije podržano u Operi',enable:'Omogući SCAYT',disable:'Onemogući SCAYT',about:'O SCAYT',toggle:'Omoguću/Onemogući SCAYT',options:'Opcije',langs:'Jezici',moreSuggestions:'Više prijedloga',ignore:'Zanemari',ignoreAll:'Zanemari sve',addWord:'Dodaj riječ',emptyDic:'Naziv rječnika ne smije biti prazno.',optionsTab:'Opcije',allCaps:'Ignoriraj riječi s velikim slovima',ignoreDomainNames:'Ignoriraj nazive domena',mixedCase:'Ignoriraj riječi s miješanim slovima',mixedWithDigits:'Ignoriraj riječi s brojevima',languagesTab:'Jezici',dictionariesTab:'Rječnici',dic_field_name:'Naziv riječnika',dic_create:'Napravi',dic_restore:'Povrati',dic_delete:'Obriši',dic_rename:'Promijeni naziv',dic_info:'Na početku se korisnički Riječnik sprema u Cookie. Nažalost, veličina im je ograničena. Kada korisnički Riječnik naraste preko te veličine, Riječnik će biti smješten na naš server. Kako bi se korisnički Riječnik spremio na naš server morate odabrati naziv Vašeg Riječnika. Ukoliko ste već prije spremali Riječnik na naše servere, unesite naziv Riječnika i pritisnite na Povrati.',aboutTab:'O SCAYT'},about:{title:'O CKEditoru',dlgTitle:'O CKEditoru',help:'Provjeri $1 za pomoć.',userGuide:'Vodič za CKEditor korisnike',moreInfo:'Za informacije o licencama posjetite našu web stranicu:',copy:'Copyright © $1. All rights reserved.'},maximize:'Povećaj',minimize:'Smanji',fakeobjects:{anchor:'Sidro',flash:'Flash animacija',iframe:'IFrame',hiddenfield:'Sakriveno polje',unknown:'Nepoznati objekt'},resize:'Povuci za promjenu veličine',colordialog:{title:'Odaberi boju',options:'Opcije boje',highlight:'Istaknuto',selected:'Odabrana boja',clear:'Očisti'},toolbarCollapse:'Smanji alatnu traku',toolbarExpand:'Proširi alatnu traku',toolbarGroups:{document:'Dokument',clipboard:'Međuspremnik/Poništi',editing:'Uređivanje',forms:'Forme',basicstyles:'Osnovni stilovi',paragraph:'Paragraf',links:'Veze',insert:'Umetni',styles:'Stilovi',colors:'Boje',tools:'Alatke'},bidi:{ltr:'Smjer teksta s lijeva na desno',rtl:'Smjer teksta s desna na lijevo'},docprops:{label:'Svojstva dokumenta',title:'Svojstva dokumenta',design:'Dizajn',meta:'Meta Data',chooseColor:'Odaberi',other:'<drugi>',docTitle:'Naslov stranice',charset:'Enkodiranje znakova',charsetOther:'Ostalo enkodiranje znakova',charsetASCII:'ASCII',charsetCE:'Središnja Europa',charsetCT:'Tradicionalna kineska (Big5)',charsetCR:'Ćirilica',charsetGR:'Grčka',charsetJP:'Japanska',charsetKR:'Koreanska',charsetTR:'Turska',charsetUN:'Unicode (UTF-8)',charsetWE:'Zapadna Europa',docType:'Zaglavlje vrste dokumenta',docTypeOther:'Ostalo zaglavlje vrste dokumenta',xhtmlDec:'Ubaci XHTML deklaracije',bgColor:'Boja pozadine',bgImage:'URL slike pozadine',bgFixed:'Pozadine se ne pomiče',txtColor:'Boja teksta',margin:'Margine stranice',marginTop:'Vrh',marginLeft:'Lijevo',marginRight:'Desno',marginBottom:'Dolje',metaKeywords:'Ključne riječi dokumenta (odvojene zarezom)',metaDescription:'Opis dokumenta',metaAuthor:'Autor',metaCopyright:'Autorska prava',previewHtml:'<p>Ovo je neki <strong>primjer teksta</strong>. Vi koristite <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/hu.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/hu.js
new file mode 100755
index 0000000..4a33899
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/hu.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.hu={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Szerkesztő Eszköztár',editor:'HTML szerkesztő',source:'Forráskód',newPage:'Új oldal',save:'Mentés',preview:'Előnézet',cut:'Kivágás',copy:'Másolás',paste:'Beillesztés',print:'Nyomtatás',underline:'Aláhúzott',bold:'Félkövér',italic:'Dőlt',selectAll:'Mindent kijelöl',removeFormat:'Formázás eltávolítása',strike:'Áthúzott',subscript:'Alsó index',superscript:'Felső index',horizontalrule:'Elválasztóvonal beillesztése',pagebreak:'Oldaltörés beillesztése',pagebreakAlt:'Oldaltörés',unlink:'Hivatkozás törlése',undo:'Visszavonás',redo:'Ismétlés',common:{browseServer:'Böngészés a szerveren',url:'Hivatkozás',protocol:'Protokoll',upload:'Feltöltés',uploadSubmit:'Küldés a szerverre',image:'Kép',flash:'Flash',form:'Űrlap',checkbox:'Jelölőnégyzet',radio:'Választógomb',textField:'Szövegmező',textarea:'Szövegterület',hiddenField:'Rejtettmező',button:'Gomb',select:'Legördülő lista',imageButton:'Képgomb',notSet:'<nincs beállítva>',id:'Azonosító',name:'Név',langDir:'Írás iránya',langDirLtr:'Balról jobbra',langDirRtl:'Jobbról balra',langCode:'Nyelv kódja',longDescr:'Részletes leírás webcíme',cssClass:'Stíluskészlet',advisoryTitle:'Súgócimke',cssStyle:'Stílus',ok:'Rendben',cancel:'Mégsem',close:'Bezárás',preview:'Előnézet',generalTab:'Általános',advancedTab:'További opciók',validateNumberFailed:'A mezőbe csak számokat írhat.',confirmNewPage:'Minden nem mentett változás el fog veszni! Biztosan be szeretné tölteni az oldalt?',confirmCancel:'Az űrlap tartalma megváltozott, ám a változásokat nem rögzítette. Biztosan be szeretné zárni az űrlapot?',options:'Beállítások',target:'Cél',targetNew:'Új ablak (_blank)',targetTop:'Legfelső ablak (_top)',targetSelf:'Aktuális ablakban (_self)',targetParent:'Szülő ablak (_parent)',langDirLTR:'Balról jobbra (LTR)',langDirRTL:'Jobbról balra (RTL)',styles:'Stílus',cssClasses:'Stíluslap osztály',width:'Szélesség',height:'Magasság',align:'Igazítás',alignLeft:'Bal',alignRight:'Jobbra',alignCenter:'Középre',alignTop:'Tetejére',alignMiddle:'Középre',alignBottom:'Aljára',invalidHeight:'A magasság mezőbe csak számokat írhat.',invalidWidth:'A szélesség mezőbe csak számokat írhat.',invalidCssLength:'"%1"-hez megadott érték csakis egy pozitív szám lehet, esetleg egy érvényes CSS egységgel megjelölve(px, %, in, cm, mm, em, ex, pt vagy pc).',invalidHtmlLength:'"%1"-hez megadott érték csakis egy pozitív szám lehet, esetleg egy érvényes HTML egységgel megjelölve(px vagy %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, nem elérhető</span>'},contextmenu:{options:'Helyi menü opciók'},specialChar:{toolbar:'Speciális karakter beillesztése',title:'Speciális karakter választása',options:'Speciális karakter opciók'},link:{toolbar:'Hivatkozás beillesztése/módosítása',other:'<más>',menu:'Hivatkozás módosítása',title:'Hivatkozás tulajdonságai',info:'Alaptulajdonságok',target:'Tartalom megjelenítése',upload:'Feltöltés',advanced:'További opciók',type:'Hivatkozás típusa',toUrl:'URL',toAnchor:'Horgony az oldalon',toEmail:'E-Mail',targetFrame:'<keretben>',targetPopup:'<felugró ablakban>',targetFrameName:'Keret neve',targetPopupName:'Felugró ablak neve',popupFeatures:'Felugró ablak jellemzői',popupResizable:'Átméretezés',popupStatusBar:'Állapotsor',popupLocationBar:'Címsor',popupToolbar:'Eszköztár',popupMenuBar:'Menü sor',popupFullScreen:'Teljes képernyő (csak IE)',popupScrollBars:'Gördítősáv',popupDependent:'Szülőhöz kapcsolt (csak Netscape)',popupLeft:'Bal pozíció',popupTop:'Felső pozíció',id:'Id',langDir:'Írás iránya',langDirLTR:'Balról jobbra',langDirRTL:'Jobbról balra',acccessKey:'Billentyűkombináció',name:'Név',langCode:'Írás iránya',tabIndex:'Tabulátor index',advisoryTitle:'Súgócimke',advisoryContentType:'Súgó tartalomtípusa',cssClasses:'Stíluskészlet',charset:'Hivatkozott tartalom kódlapja',styles:'Stílus',rel:'Kapcsolat típusa',selectAnchor:'Horgony választása',anchorName:'Horgony név szerint',anchorId:'Azonosító szerint',emailAddress:'E-Mail cím',emailSubject:'Üzenet tárgya',emailBody:'Üzenet',noAnchors:'(Nincs horgony a dokumentumban)',noUrl:'Adja meg a hivatkozás webcímét',noEmail:'Adja meg az E-Mail címet'},anchor:{toolbar:'Horgony beillesztése/szerkesztése',menu:'Horgony tulajdonságai',title:'Horgony tulajdonságai',name:'Horgony neve',errorName:'Kérem adja meg a horgony nevét',remove:'Horgony eltávolítása'},list:{numberedTitle:'Sorszámozott lista tulajdonságai',bulletedTitle:'Pontozott lista tulajdonságai',type:'Típus',start:'Kezdőszám',validateStartNumber:'A kezdőszám nem lehet tört érték.',circle:'Kör',disc:'Korong',square:'Négyzet',none:'Nincs',notset:'<Nincs beállítva>',armenian:'Örmény számozás',georgian:'Grúz számozás (an, ban, gan, stb.)',lowerRoman:'Római kisbetűs (i, ii, iii, iv, v, stb.)',upperRoman:'Római nagybetűs (I, II, III, IV, V, stb.)',lowerAlpha:'Kisbetűs (a, b, c, d, e, stb.)',upperAlpha:'Nagybetűs (A, B, C, D, E, stb.)',lowerGreek:'Görög (alpha, beta, gamma, stb.)',decimal:'Arab számozás (1, 2, 3, stb.)',decimalLeadingZero:'Számozás bevezető nullákkal (01, 02, 03, stb.)'},findAndReplace:{title:'Keresés és csere',find:'Keresés',replace:'Csere',findWhat:'Keresett szöveg:',replaceWith:'Csere erre:',notFoundMsg:'A keresett szöveg nem található.',findOptions:'Find Options',matchCase:'kis- és nagybetű megkülönböztetése',matchWord:'csak ha ez a teljes szó',matchCyclic:'Ciklikus keresés',replaceAll:'Az összes cseréje',replaceSuccessMsg:'%1 egyezőség cserélve.'},table:{toolbar:'Táblázat',title:'Táblázat tulajdonságai',menu:'Táblázat tulajdonságai',deleteTable:'Táblázat törlése',rows:'Sorok',columns:'Oszlopok',border:'Szegélyméret',widthPx:'képpont',widthPc:'százalék',widthUnit:'Szélesség egység',cellSpace:'Cella térköz',cellPad:'Cella belső margó',caption:'Felirat',summary:'Leírás',headers:'Fejlécek',headersNone:'Nincsenek',headersColumn:'Első oszlop',headersRow:'Első sor',headersBoth:'Mindkettő',invalidRows:'A sorok számának nagyobbnak kell lenni mint 0.',invalidCols:'Az oszlopok számának nagyobbnak kell lenni mint 0.',invalidBorder:'A szegélyméret mezőbe csak számokat írhat.',invalidWidth:'A szélesség mezőbe csak számokat írhat.',invalidHeight:'A magasság mezőbe csak számokat írhat.',invalidCellSpacing:'A cella térköz mezőbe csak számokat írhat.',invalidCellPadding:'A cella belső margó mezőbe csak számokat írhat.',cell:{menu:'Cella',insertBefore:'Beszúrás balra',insertAfter:'Beszúrás jobbra',deleteCell:'Cellák törlése',merge:'Cellák egyesítése',mergeRight:'Cellák egyesítése jobbra',mergeDown:'Cellák egyesítése lefelé',splitHorizontal:'Cellák szétválasztása vízszintesen',splitVertical:'Cellák szétválasztása függőlegesen',title:'Cella tulajdonságai',cellType:'Cella típusa',rowSpan:'Függőleges egyesítés',colSpan:'Vízszintes egyesítés',wordWrap:'Hosszú sorok törése',hAlign:'Vízszintes igazítás',vAlign:'Függőleges igazítás',alignBaseline:'Alapvonalra',bgColor:'Háttér színe',borderColor:'Keret színe',data:'Adat',header:'Fejléc',yes:'Igen',no:'Nem',invalidWidth:'A szélesség mezőbe csak számokat írhat.',invalidHeight:'A magasság mezőbe csak számokat írhat.',invalidRowSpan:'A függőleges egyesítés mezőbe csak számokat írhat.',invalidColSpan:'A vízszintes egyesítés mezőbe csak számokat írhat.',chooseColor:'Válasszon'},row:{menu:'Sor',insertBefore:'Beszúrás fölé',insertAfter:'Beszúrás alá',deleteRow:'Sorok törlése'},column:{menu:'Oszlop',insertBefore:'Beszúrás balra',insertAfter:'Beszúrás jobbra',deleteColumn:'Oszlopok törlése'}},button:{title:'Gomb tulajdonságai',text:'Szöveg (Érték)',type:'Típus',typeBtn:'Gomb',typeSbm:'Küldés',typeRst:'Alaphelyzet'},checkboxAndRadio:{checkboxTitle:'Jelölőnégyzet tulajdonságai',radioTitle:'Választógomb tulajdonságai',value:'Érték',selected:'Kiválasztott'},form:{title:'Űrlap tulajdonságai',menu:'Űrlap tulajdonságai',action:'Adatfeldolgozást végző hivatkozás',method:'Adatküldés módja',encoding:'Kódolás'},select:{title:'Legördülő lista tulajdonságai',selectInfo:'Alaptulajdonságok',opAvail:'Elérhető opciók',value:'Érték',size:'Méret',lines:'sor',chkMulti:'több sor is kiválasztható',opText:'Szöveg',opValue:'Érték',btnAdd:'Hozzáad',btnModify:'Módosít',btnUp:'Fel',btnDown:'Le',btnSetValue:'Legyen az alapértelmezett érték',btnDelete:'Töröl'},textarea:{title:'Szövegterület tulajdonságai',cols:'Karakterek száma egy sorban',rows:'Sorok száma'},textfield:{title:'Szövegmező tulajdonságai',name:'Név',value:'Érték',charWidth:'Megjelenített karakterek száma',maxChars:'Maximális karakterszám',type:'Típus',typeText:'Szöveg',typePass:'Jelszó'},hidden:{title:'Rejtett mező tulajdonságai',name:'Név',value:'Érték'},image:{title:'Kép tulajdonságai',titleButton:'Képgomb tulajdonságai',menu:'Kép tulajdonságai',infoTab:'Alaptulajdonságok',btnUpload:'Küldés a szerverre',upload:'Feltöltés',alt:'Buborék szöveg',lockRatio:'Arány megtartása',resetSize:'Eredeti méret',border:'Keret',hSpace:'Vízsz. táv',vSpace:'Függ. táv',alertUrl:'Töltse ki a kép webcímét',linkTab:'Hivatkozás',button2Img:'A kiválasztott képgombból sima képet szeretne csinálni?',img2Button:'A kiválasztott képből képgombot szeretne csinálni?',urlMissing:'Hiányzik a kép URL-je',validateBorder:'A keret méretének egész számot kell beírni!',validateHSpace:'Vízszintes távolságnak egész számot kell beírni!',validateVSpace:'Függőleges távolságnak egész számot kell beírni!'},flash:{properties:'Flash tulajdonságai',propertiesTab:'Tulajdonságok',title:'Flash tulajdonságai',chkPlay:'Automata lejátszás',chkLoop:'Folyamatosan',chkMenu:'Flash menü engedélyezése',chkFull:'Teljes képernyő engedélyezése',scale:'Méretezés',scaleAll:'Mindent mutat',scaleNoBorder:'Keret nélkül',scaleFit:'Teljes kitöltés',access:'Szkript hozzáférés',accessAlways:'Mindig',accessSameDomain:'Azonos domainről',accessNever:'Soha',alignAbsBottom:'Legaljára',alignAbsMiddle:'Közepére',alignBaseline:'Alapvonalhoz',alignTextTop:'Szöveg tetejére',quality:'Minőség',qualityBest:'Legjobb',qualityHigh:'Jó',qualityAutoHigh:'Automata jó',qualityMedium:'Közepes',qualityAutoLow:'Automata gyenge',qualityLow:'Gyenge',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Ablak mód',flashvars:'Flash változók',bgcolor:'Háttérszín',hSpace:'Vízsz. táv',vSpace:'Függ. táv',validateSrc:'Adja meg a hivatkozás webcímét',validateHSpace:'A vízszintes távolsűág mezőbe csak számokat írhat.',validateVSpace:'A függőleges távolsűág mezőbe csak számokat írhat.'},spellCheck:{toolbar:'Helyesírás-ellenőrzés',title:'Helyesírás ellenörző',notAvailable:'Sajnálom, de a szolgáltatás jelenleg nem elérhető.',errorLoading:'Hiba a szolgáltatás host betöltése közben: %s.',notInDic:'Nincs a szótárban',changeTo:'Módosítás',btnIgnore:'Kihagyja',btnIgnoreAll:'Mindet kihagyja',btnReplace:'Csere',btnReplaceAll:'Összes cseréje',btnUndo:'Visszavonás',noSuggestions:'Nincs javaslat',progress:'Helyesírás-ellenőrzés folyamatban...',noMispell:'Helyesírás-ellenőrzés kész: Nem találtam hibát',noChanges:'Helyesírás-ellenőrzés kész: Nincs változtatott szó',oneChange:'Helyesírás-ellenőrzés kész: Egy szó cserélve',manyChanges:'Helyesírás-ellenőrzés kész: %1 szó cserélve',ieSpellDownload:'A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?'},smiley:{toolbar:'Hangulatjelek',title:'Hangulatjel beszúrása',options:'Hangulatjel opciók'},elementsPath:{eleLabel:'Elem utak',eleTitle:'%1 elem'},numberedlist:'Számozás',bulletedlist:'Felsorolás',indent:'Behúzás növelése',outdent:'Behúzás csökkentése',justify:{left:'Balra',center:'Középre',right:'Jobbra',block:'Sorkizárt'},blockquote:'Idézet blokk',clipboard:{title:'Beillesztés',cutError:'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).',copyError:'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).',pasteMsg:'Másolja be az alábbi mezőbe a <STRONG>Ctrl/Cmd+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.',securityMsg:'A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.',pasteArea:'Beszúrás mező'},pastefromword:{confirmCleanup:'Úgy tűnik a beillesztett szöveget Word-ből másolt át. Meg szeretné tisztítani a szöveget? (ajánlott)',toolbar:'Beillesztés Word-ből',title:'Beillesztés Word-ből',error:'Egy belső hiba miatt nem sikerült megtisztítani a szöveget'},pasteText:{button:'Beillesztés formázatlan szövegként',title:'Beillesztés formázatlan szövegként'},templates:{button:'Sablonok',title:'Elérhető sablonok',options:'Sablon opciók',insertOption:'Kicseréli a jelenlegi tartalmat',selectPromptMsg:'Válassza ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):',emptyListMsg:'(Nincs sablon megadva)'},showBlocks:'Blokkok megjelenítése',stylesCombo:{label:'Stílus',panelTitle:'Formázási stílusok',panelTitle1:'Blokk stílusok',panelTitle2:'Inline stílusok',panelTitle3:'Objektum stílusok'},format:{label:'Formátum',panelTitle:'Formátum',tag_p:'Normál',tag_pre:'Formázott',tag_address:'Címsor',tag_h1:'Fejléc 1',tag_h2:'Fejléc 2',tag_h3:'Fejléc 3',tag_h4:'Fejléc 4',tag_h5:'Fejléc 5',tag_h6:'Fejléc 6',tag_div:'Bekezdés (DIV)'},div:{title:'DIV tároló létrehozása',toolbar:'DIV tároló létrehozása',cssClassInputLabel:'Stíluslap osztály',styleSelectLabel:'Stílus',IdInputLabel:'Azonosító',languageCodeInputLabel:' Nyelv kódja',inlineStyleInputLabel:'Inline stílus',advisoryTitleInputLabel:'Tipp szöveg',langDirLabel:'Nyelvi irány',langDirLTRLabel:'Balról jobbra (LTR)',langDirRTLLabel:'Jobbról balra (RTL)',edit:'DIV szerkesztése',remove:'DIV eltávolítása'},iframe:{title:'IFrame Tulajdonságok',toolbar:'IFrame',noUrl:'Kérem írja be a iframe URL-t',scrolling:'Gördítősáv bekapcsolása',border:'Legyen keret'},font:{label:'Betűtípus',voiceLabel:'Betűtípus',panelTitle:'Betűtípus'},fontSize:{label:'Méret',voiceLabel:'Betűméret',panelTitle:'Méret'},colorButton:{textColorTitle:'Betűszín',bgColorTitle:'Háttérszín',panelTitle:'Színek',auto:'Automatikus',more:'További színek...'},colors:{'000':'Fekete',800000:'Bordó','8B4513':'Barna','2F4F4F':'Sötét türkiz','008080':'Türkiz','000080':'Király kék','4B0082':'Indigó kék',696969:'Szürke',B22222:'Tégla vörös',A52A2A:'Vörös',DAA520:'Arany sárga','006400':'Sötét zöld','40E0D0':'Türkiz','0000CD':'Kék',800080:'Lila',808080:'Szürke',F00:'Piros',FF8C00:'Sötét narancs',FFD700:'Arany','008000':'Zöld','0FF':'Türkiz','00F':'Kék',EE82EE:'Rózsaszín',A9A9A9:'Sötét szürke',FFA07A:'Lazac',FFA500:'Narancs',FFFF00:'Citromsárga','00FF00':'Neon zöld',AFEEEE:'Világos türkiz',ADD8E6:'Világos kék',DDA0DD:'Világos lila',D3D3D3:'Világos szürke',FFF0F5:'Lavender Blush',FAEBD7:'Törtfehér',FFFFE0:'Világos sárga',F0FFF0:'Menta',F0FFFF:'Azúr kék',F0F8FF:'Halvány kék',E6E6FA:'Lavender',FFF:'Fehér'},scayt:{title:'Helyesírás ellenőrzés gépelés közben',opera_title:'Az Opera nem támogatja',enable:'SCAYT engedélyezése',disable:'SCAYT letiltása',about:'SCAYT névjegy',toggle:'SCAYT kapcsolása',options:'Beállítások',langs:'Nyelvek',moreSuggestions:'További javaslatok',ignore:'Kihagy',ignoreAll:'Összes kihagyása',addWord:'Szó hozzáadása',emptyDic:'A szótár nevét meg kell adni.',optionsTab:'Beállítások',allCaps:'Nagybetűs szavak kihagyása',ignoreDomainNames:'Domain nevek kihagyása',mixedCase:'Kis és nagybetűt is tartalmazó szavak kihagyása',mixedWithDigits:'Számokat tartalmazó szavak kihagyása',languagesTab:'Nyelvek',dictionariesTab:'Szótár',dic_field_name:'Szótár neve',dic_create:'Létrehozás',dic_restore:'Visszaállítás',dic_delete:'Törlés',dic_rename:'Átnevezés',dic_info:'Kezdetben a felhasználói szótár böngésző sütiben tárolódik. Azonban a sütik maximális mérete korlátozott. Amikora a szótár akkora lesz, hogy már sütiben nem lehet tárolni, akkor a szótárat tárolhatja a szerveren is. Ehhez egy nevet kell megadni a szótárhoz. Amennyiben már van szerveren tárolt szótára, adja meg a nevét és kattintson a visszaállítás gombra.',aboutTab:'Névjegy'},about:{title:'CKEditor névjegy',dlgTitle:'CKEditor névjegy',help:'Itt találsz segítséget: $1',userGuide:'CKEditor Felhasználói útmutató',moreInfo:'Licenszelési információkért kérjük látogassa meg weboldalunkat:',copy:'Copyright © $1. Minden jog fenntartva.'},maximize:'Teljes méret',minimize:'Kis méret',fakeobjects:{anchor:'Horgony',flash:'Flash animáció',iframe:'IFrame',hiddenfield:'Rejtett mezõ',unknown:'Ismeretlen objektum'},resize:'Húzza az átméretezéshez',colordialog:{title:'Válasszon színt',options:'Szín opciók',highlight:'Nagyítás',selected:'Kiválasztott',clear:'Ürítés'},toolbarCollapse:'Eszköztár összecsukása',toolbarExpand:'Eszköztár szétnyitása',toolbarGroups:{document:'Dokumentum',clipboard:'Vágólap/Visszavonás',editing:'Szerkesztés',forms:'Űrlapok',basicstyles:'Alapstílusok',paragraph:'Bekezdés',links:'Hivatkozások',insert:'Beszúrás',styles:'Stílusok',colors:'Színek',tools:'Eszközök'},bidi:{ltr:'Szöveg iránya balról jobbra',rtl:'Szöveg iránya jobbról balra'},docprops:{label:'Dokumentum tulajdonságai',title:'Dokumentum tulajdonságai',design:'Design',meta:'Meta adatok',chooseColor:'Válasszon',other:'<más>',docTitle:'Oldalcím',charset:'Karakterkódolás',charsetOther:'Más karakterkódolás',charsetASCII:'ASCII',charsetCE:'Közép-Európai',charsetCT:'Kínai Tradicionális (Big5)',charsetCR:'Cyrill',charsetGR:'Görög',charsetJP:'Japán',charsetKR:'Koreai',charsetTR:'Török',charsetUN:'Unicode (UTF-8)',charsetWE:'Nyugat-Európai',docType:'Dokumentum típus fejléc',docTypeOther:'Más dokumentum típus fejléc',xhtmlDec:'XHTML deklarációk beillesztése',bgColor:'Háttérszín',bgImage:'Háttérkép cím',bgFixed:'Nem gördíthető háttér',txtColor:'Betűszín',margin:'Oldal margók',marginTop:'Felső',marginLeft:'Bal',marginRight:'Jobb',marginBottom:'Alsó',metaKeywords:'Dokumentum keresőszavak (vesszővel elválasztva)',metaDescription:'Dokumentum leírás',metaAuthor:'Szerző',metaCopyright:'Szerzői jog',previewHtml:'<p>Ez itt egy <strong>példa</strong>. A <a href="javascript:void(0)">CKEditor</a>-t használod.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/id.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/id.js
new file mode 100755
index 0000000..7ac08a3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/id.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.id={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Width',height:'Height',align:'Alignment',alignLeft:'Left',alignRight:'Right',alignCenter:'Center',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupLeft:'Left Position',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',rel:'Relationship',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',findOptions:'Find Options',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignTextTop:'Text Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background color',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Align Left',center:'Center',right:'Align Right',block:'Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Color',bgColorTitle:'Background Color',panelTitle:'Colors',auto:'Automatic',more:'More Colors...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Document Properties',title:'Document Properties',design:'Design',meta:'Meta Tags',chooseColor:'Choose',other:'Other...',docTitle:'Page Title',charset:'Character Set Encoding',charsetOther:'Other Character Set Encoding',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Document Type Heading',docTypeOther:'Other Document Type Heading',xhtmlDec:'Include XHTML Declarations',bgColor:'Background Color',bgImage:'Background Image URL',bgFixed:'Non-scrolling (Fixed) Background',txtColor:'Text Color',margin:'Page Margins',marginTop:'Top',marginLeft:'Left',marginRight:'Right',marginBottom:'Bottom',metaKeywords:'Document Indexing Keywords (comma separated)',metaDescription:'Document Description',metaAuthor:'Author',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/is.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/is.js
new file mode 100755
index 0000000..6b1829d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/is.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.is={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Kóði',newPage:'Ný síða',save:'Vista',preview:'Forskoða',cut:'Klippa',copy:'Afrita',paste:'Líma',print:'Prenta',underline:'Undirstrikað',bold:'Feitletrað',italic:'Skáletrað',selectAll:'Velja allt',removeFormat:'Fjarlægja snið',strike:'Yfirstrikað',subscript:'Niðurskrifað',superscript:'Uppskrifað',horizontalrule:'Lóðrétt lína',pagebreak:'Setja inn síðuskil',pagebreakAlt:'Page Break',unlink:'Fjarlægja stiklu',undo:'Afturkalla',redo:'Hætta við afturköllun',common:{browseServer:'Fletta í skjalasafni',url:'Vefslóð',protocol:'Samskiptastaðall',upload:'Senda upp',uploadSubmit:'Hlaða upp',image:'Setja inn mynd',flash:'Flash',form:'Setja inn innsláttarform',checkbox:'Setja inn hökunarreit',radio:'Setja inn valhnapp',textField:'Setja inn textareit',textarea:'Setja inn textasvæði',hiddenField:'Setja inn falið svæði',button:'Setja inn hnapp',select:'Setja inn lista',imageButton:'Setja inn myndahnapp',notSet:'<ekkert valið>',id:'Auðkenni',name:'Nafn',langDir:'Lesstefna',langDirLtr:'Frá vinstri til hægri (LTR)',langDirRtl:'Frá hægri til vinstri (RTL)',langCode:'Tungumálakóði',longDescr:'Nánari lýsing',cssClass:'Stílsniðsflokkur',advisoryTitle:'Titill',cssStyle:'Stíll',ok:'Í lagi',cancel:'Hætta við',close:'Close',preview:'Preview',generalTab:'Almennt',advancedTab:'Tæknilegt',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Breidd',height:'Hæð',align:'Jöfnun',alignLeft:'Vinstri',alignRight:'Hægri',alignCenter:'Miðjað',alignTop:'Efst',alignMiddle:'Miðjuð',alignBottom:'Neðst',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Setja inn merki',title:'Velja tákn',options:'Special Character Options'},link:{toolbar:'Stofna/breyta stiklu',other:'<annar>',menu:'Breyta stiklu',title:'Stikla',info:'Almennt',target:'Mark',upload:'Senda upp',advanced:'Tæknilegt',type:'Stikluflokkur',toUrl:'URL',toAnchor:'Bókamerki á þessari síðu',toEmail:'Netfang',targetFrame:'<rammi>',targetPopup:'<sprettigluggi>',targetFrameName:'Nafn markglugga',targetPopupName:'Nafn sprettiglugga',popupFeatures:'Eigindi sprettiglugga',popupResizable:'Resizable',popupStatusBar:'Stöðustika',popupLocationBar:'Fanglína',popupToolbar:'Verkfærastika',popupMenuBar:'Vallína',popupFullScreen:'Heilskjár (IE)',popupScrollBars:'Skrunstikur',popupDependent:'Háð venslum (Netscape)',popupLeft:'Fjarlægð frá vinstri',popupTop:'Fjarlægð frá efri brún',id:'Id',langDir:'Lesstefna',langDirLTR:'Frá vinstri til hægri (LTR)',langDirRTL:'Frá hægri til vinstri (RTL)',acccessKey:'Skammvalshnappur',name:'Nafn',langCode:'Lesstefna',tabIndex:'Raðnúmer innsláttarreits',advisoryTitle:'Titill',advisoryContentType:'Tegund innihalds',cssClasses:'Stílsniðsflokkur',charset:'Táknróf',styles:'Stíll',rel:'Relationship',selectAnchor:'Veldu akkeri',anchorName:'Eftir akkerisnafni',anchorId:'Eftir auðkenni einingar',emailAddress:'Netfang',emailSubject:'Efni',emailBody:'Meginmál',noAnchors:'<Engin bókamerki á skrá>',noUrl:'Sláðu inn veffang stiklunnar!',noEmail:'Sláðu inn netfang!'},anchor:{toolbar:'Stofna/breyta kaflamerki',menu:'Eigindi kaflamerkis',title:'Eigindi kaflamerkis',name:'Nafn bókamerkis',errorName:'Sláðu inn nafn bókamerkis!',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Finna og skipta',find:'Leita',replace:'Skipta út',findWhat:'Leita að:',replaceWith:'Skipta út fyrir:',notFoundMsg:'Leitartexti fannst ekki!',findOptions:'Find Options',matchCase:'Gera greinarmun á¡ há¡- og lágstöfum',matchWord:'Aðeins heil orð',matchCyclic:'Match cyclic',replaceAll:'Skipta út allsstaðar',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tafla',title:'Eigindi töflu',menu:'Eigindi töflu',deleteTable:'Fella töflu',rows:'Raðir',columns:'Dálkar',border:'Breidd ramma',widthPx:'myndeindir',widthPc:'prósent',widthUnit:'width unit',cellSpace:'Bil milli reita',cellPad:'Reitaspássía',caption:'Titill',summary:'Áfram',headers:'Fyrirsagnir',headersNone:'Engar',headersColumn:'Fyrsti dálkur',headersRow:'Fyrsta röð',headersBoth:'Hvort tveggja',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Reitur',insertBefore:'Skjóta inn reiti fyrir aftan',insertAfter:'Skjóta inn reiti fyrir framan',deleteCell:'Fella reit',merge:'Sameina reiti',mergeRight:'Sameina til hægri',mergeDown:'Sameina niður á við',splitHorizontal:'Kljúfa reit lárétt',splitVertical:'Kljúfa reit lóðrétt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Röð',insertBefore:'Skjóta inn röð fyrir ofan',insertAfter:'Skjóta inn röð fyrir neðan',deleteRow:'Eyða röð'},column:{menu:'Dálkur',insertBefore:'Skjóta inn dálki vinstra megin',insertAfter:'Skjóta inn dálki hægra megin',deleteColumn:'Fella dálk'}},button:{title:'Eigindi hnapps',text:'Texti',type:'Gerð',typeBtn:'Hnappur',typeSbm:'Staðfesta',typeRst:'Hreinsa'},checkboxAndRadio:{checkboxTitle:'Eigindi markreits',radioTitle:'Eigindi valhnapps',value:'Gildi',selected:'Valið'},form:{title:'Eigindi innsláttarforms',menu:'Eigindi innsláttarforms',action:'Aðgerð',method:'Aðferð',encoding:'Encoding'},select:{title:'Eigindi lista',selectInfo:'Upplýsingar',opAvail:'Kostir',value:'Gildi',size:'Stærð',lines:'línur',chkMulti:'Leyfa fleiri kosti',opText:'Texti',opValue:'Gildi',btnAdd:'Bæta við',btnModify:'Breyta',btnUp:'Upp',btnDown:'Niður',btnSetValue:'Merkja sem valið',btnDelete:'Eyða'},textarea:{title:'Eigindi textasvæðis',cols:'Dálkar',rows:'Línur'},textfield:{title:'Eigindi textareits',name:'Nafn',value:'Gildi',charWidth:'Breidd (leturtákn)',maxChars:'Hámarksfjöldi leturtákna',type:'Gerð',typeText:'Texti',typePass:'Lykilorð'},hidden:{title:'Eigindi falins svæðis',name:'Nafn',value:'Gildi'},image:{title:'Eigindi myndar',titleButton:'Eigindi myndahnapps',menu:'Eigindi myndar',infoTab:'Almennt',btnUpload:'Hlaða upp',upload:'Hlaða upp',alt:'Baklægur texti',lockRatio:'Festa stærðarhlutfall',resetSize:'Reikna stærð',border:'Rammi',hSpace:'Vinstri bil',vSpace:'Hægri bil',alertUrl:'Sláðu inn slóðina að myndinni',linkTab:'Stikla',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Eigindi Flash',propertiesTab:'Properties',title:'Eigindi Flash',chkPlay:'Sjálfvirk spilun',chkLoop:'Endurtekning',chkMenu:'Sýna Flash-valmynd',chkFull:'Allow Fullscreen',scale:'Skali',scaleAll:'Sýna allt',scaleNoBorder:'Án ramma',scaleFit:'Fella skala að stærð',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs neðst',alignAbsMiddle:'Abs miðjuð',alignBaseline:'Grunnlína',alignTextTop:'Efri brún texta',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Bakgrunnslitur',hSpace:'Vinstri bil',vSpace:'Hægri bil',validateSrc:'Sláðu inn veffang stiklunnar!',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Villuleit',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ekki í orðabókinni',changeTo:'Tillaga',btnIgnore:'Hunsa',btnIgnoreAll:'Hunsa allt',btnReplace:'Skipta',btnReplaceAll:'Skipta öllu',btnUndo:'Til baka',noSuggestions:'- engar tillögur -',progress:'Villuleit í gangi...',noMispell:'Villuleit lokið: Engin villa fannst',noChanges:'Villuleit lokið: Engu orði breytt',oneChange:'Villuleit lokið: Einu orði breytt',manyChanges:'Villuleit lokið: %1 orðum breytt',ieSpellDownload:'Villuleit ekki sett upp.<br>Viltu setja hana upp?'},smiley:{toolbar:'Svipur',title:'Velja svip',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Númeraður listi',bulletedlist:'Punktalisti',indent:'Minnka inndrátt',outdent:'Auka inndrátt',justify:{left:'Vinstrijöfnun',center:'Miðja texta',right:'Hægrijöfnun',block:'Jafna báðum megin'},blockquote:'Inndráttur',clipboard:{title:'Líma',cutError:'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).',copyError:'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).',pasteMsg:'Límdu í svæðið hér að neðan og (<STRONG>Ctrl/Cmd+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.',securityMsg:'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Líma úr Word',title:'Líma úr Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Líma sem ósniðinn texta',title:'Líma sem ósniðinn texta'},templates:{button:'Sniðmát',title:'Innihaldssniðmát',options:'Template Options',insertOption:'Skipta út raunverulegu innihaldi',selectPromptMsg:'Veldu sniðmát til að opna í ritlinum.<br>(Núverandi innihald víkur fyrir því!):',emptyListMsg:'(Ekkert sniðmát er skilgreint!)'},showBlocks:'Sýna blokkir',stylesCombo:{label:'Stílflokkur',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Stílsnið',panelTitle:'Stílsnið',tag_p:'Venjulegt letur',tag_pre:'Forsniðið',tag_address:'Vistfang',tag_h1:'Fyrirsögn 1',tag_h2:'Fyrirsögn 2',tag_h3:'Fyrirsögn 3',tag_h4:'Fyrirsögn 4',tag_h5:'Fyrirsögn 5',tag_h6:'Fyrirsögn 6',tag_div:'Venjulegt (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Leturgerð ',voiceLabel:'Font',panelTitle:'Leturgerð '},fontSize:{label:'Leturstærð ',voiceLabel:'Font Size',panelTitle:'Leturstærð '},colorButton:{textColorTitle:'Litur texta',bgColorTitle:'Bakgrunnslitur',panelTitle:'Colors',auto:'Sjálfval',more:'Fleiri liti...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Eigindi skjals',title:'Eigindi skjals',design:'Design',meta:'Lýsigögn',chooseColor:'Choose',other:'<annar>',docTitle:'Titill síðu',charset:'Letursett',charsetOther:'Annað letursett',charsetASCII:'ASCII',charsetCE:'Mið-evrópskt',charsetCT:'Kínverskt, hefðbundið (Big5)',charsetCR:'Kýrilskt',charsetGR:'Grískt',charsetJP:'Japanskt',charsetKR:'Kóreskt',charsetTR:'Tyrkneskt',charsetUN:'Unicode (UTF-8)',charsetWE:'Vestur-evrópst',docType:'Flokkur skjalategunda',docTypeOther:'Annar flokkur skjalategunda',xhtmlDec:'Fella inn XHTML lýsingu',bgColor:'Bakgrunnslitur',bgImage:'Slóð bakgrunnsmyndar',bgFixed:'Læstur bakgrunnur',txtColor:'Litur texta',margin:'Hliðarspássía',marginTop:'Efst',marginLeft:'Vinstri',marginRight:'Hægri',marginBottom:'Neðst',metaKeywords:'Lykilorð efnisorðaskrár (aðgreind með kommum)',metaDescription:'Lýsing skjals',metaAuthor:'Höfundur',metaCopyright:'Höfundarréttur',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/it.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/it.js
new file mode 100755
index 0000000..67eb31f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/it.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.it={dir:'ltr',editorTitle:'Editor di testo Rich Text, %1',editorHelp:'Premi ALT 0 per aiuto',toolbars:'Editor toolbar',editor:'Rich Text Editor',source:'Codice Sorgente',newPage:'Nuova pagina vuota',save:'Salva',preview:'Anteprima',cut:'Taglia',copy:'Copia',paste:'Incolla',print:'Stampa',underline:'Sottolineato',bold:'Grassetto',italic:'Corsivo',selectAll:'Seleziona tutto',removeFormat:'Elimina formattazione',strike:'Barrato',subscript:'Pedice',superscript:'Apice',horizontalrule:'Inserisci riga orizzontale',pagebreak:'Inserisci interruzione di pagina',pagebreakAlt:'Interruzione di pagina',unlink:'Elimina collegamento',undo:'Annulla',redo:'Ripristina',common:{browseServer:'Cerca sul server',url:'URL',protocol:'Protocollo',upload:'Carica',uploadSubmit:'Invia al server',image:'Immagine',flash:'Oggetto Flash',form:'Modulo',checkbox:'Checkbox',radio:'Radio Button',textField:'Campo di testo',textarea:'Area di testo',hiddenField:'Campo nascosto',button:'Bottone',select:'Menu di selezione',imageButton:'Bottone immagine',notSet:'<non impostato>',id:'Id',name:'Nome',langDir:'Direzione scrittura',langDirLtr:'Da Sinistra a Destra (LTR)',langDirRtl:'Da Destra a Sinistra (RTL)',langCode:'Codice Lingua',longDescr:'URL descrizione estesa',cssClass:'Nome classe CSS',advisoryTitle:'Titolo',cssStyle:'Stile',ok:'OK',cancel:'Annulla',close:'Chiudi',preview:'Anteprima',generalTab:'Generale',advancedTab:'Avanzate',validateNumberFailed:'Il valore inserito non è un numero.',confirmNewPage:'Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?',confirmCancel:'Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?',options:'Opzioni',target:'Destinazione',targetNew:'Nuova finestra (_blank)',targetTop:'Finestra in primo piano (_top)',targetSelf:'Stessa finestra (_self)',targetParent:'Finestra Padre (_parent)',langDirLTR:'Da sinistra a destra (LTR)',langDirRTL:'Da destra a sinistra (RTL)',styles:'Stile',cssClasses:'Classi di stile',width:'Larghezza',height:'Altezza',align:'Allineamento',alignLeft:'Sinistra',alignRight:'Destra',alignCenter:'Centrato',alignTop:'In Alto',alignMiddle:'Centrato',alignBottom:'In Basso',invalidHeight:"L'altezza dev'essere un numero",invalidWidth:"La Larghezza dev'essere un numero",invalidCssLength:'Il valore indicato per il campo "%1" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le classi CSS (px, %, in, cm, mm, em, ex, pt, o pc).',invalidHtmlLength:'Il valore indicato per il campo "%1" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le pagine HTML (px o %).',invalidInlineStyle:'Il valore specificato per lo stile inline deve consistere in una o più tuple con il formato di "name : value", separati da semicolonne.',cssLengthTooltip:'Inserisci un numero per il valore in pixel oppure un numero con una valida unità CSS (px, %, in, cm, mm, ex, pt, o pc).',unavailable:'%1<span class="cke_accessibility">, non disponibile</span>'},contextmenu:{options:'Opzioni del menù contestuale'},specialChar:{toolbar:'Inserisci carattere speciale',title:'Seleziona carattere speciale',options:'Opzioni carattere speciale'},link:{toolbar:'Inserisci/Modifica collegamento',other:'<altro>',menu:'Modifica collegamento',title:'Collegamento',info:'Informazioni collegamento',target:'Destinazione',upload:'Carica',advanced:'Avanzate',type:'Tipo di Collegamento',toUrl:'URL',toAnchor:'Ancora nella pagina',toEmail:'E-Mail',targetFrame:'<riquadro>',targetPopup:'<finestra popup>',targetFrameName:'Nome del riquadro di destinazione',targetPopupName:'Nome finestra popup',popupFeatures:'Caratteristiche finestra popup',popupResizable:'Ridimensionabile',popupStatusBar:'Barra di stato',popupLocationBar:'Barra degli indirizzi',popupToolbar:'Barra degli strumenti',popupMenuBar:'Barra del menu',popupFullScreen:'A tutto schermo (IE)',popupScrollBars:'Barre di scorrimento',popupDependent:'Dipendente (Netscape)',popupLeft:'Posizione da sinistra',popupTop:"Posizione dall'alto",id:'Id',langDir:'Direzione scrittura',langDirLTR:'Da Sinistra a Destra (LTR)',langDirRTL:'Da Destra a Sinistra (RTL)',acccessKey:'Scorciatoia<br />da tastiera',name:'Nome',langCode:'Direzione scrittura',tabIndex:'Ordine di tabulazione',advisoryTitle:'Titolo',advisoryContentType:'Tipo della risorsa collegata',cssClasses:'Nome classe CSS',charset:'Set di caretteri della risorsa collegata',styles:'Stile',rel:'Relazioni',selectAnchor:'Scegli Ancora',anchorName:'Per Nome',anchorId:'Per id elemento',emailAddress:'Indirizzo E-Mail',emailSubject:'Oggetto del messaggio',emailBody:'Corpo del messaggio',noAnchors:'(Nessuna ancora disponibile nel documento)',noUrl:"Devi inserire l'URL del collegamento",noEmail:"Devi inserire un'indirizzo e-mail"},anchor:{toolbar:'Inserisci/Modifica Ancora',menu:'Proprietà ancora',title:'Proprietà ancora',name:'Nome ancora',errorName:"Inserici il nome dell'ancora",remove:"Rimuovi l'ancora"},list:{numberedTitle:'Proprietà liste numerate',bulletedTitle:'Proprietà liste puntate',type:'Tipo',start:'Inizio',validateStartNumber:'Il numero di inizio di una lista numerata deve essere un numero intero.',circle:'Cerchio',disc:'Disco',square:'Quadrato',none:'Nessuno',notset:'<non impostato>',armenian:'Numerazione Armena',georgian:'Numerazione Georgiana (an, ban, gan, ecc.)',lowerRoman:'Numerazione Romana minuscola (i, ii, iii, iv, v, ecc.)',upperRoman:'Numerazione Romana maiuscola (I, II, III, IV, V, ecc.)',lowerAlpha:'Alfabetico minuscolo (a, b, c, d, e, ecc.)',upperAlpha:'Alfabetico maiuscolo (A, B, C, D, E, ecc.)',lowerGreek:'Greco minuscolo (alpha, beta, gamma, ecc.)',decimal:'Decimale (1, 2, 3, ecc.)',decimalLeadingZero:'Decimale preceduto da 0 (01, 02, 03, ecc.)'},findAndReplace:{title:'Cerca e Sostituisci',find:'Trova',replace:'Sostituisci',findWhat:'Trova:',replaceWith:'Sostituisci con:',notFoundMsg:"L'elemento cercato non è stato trovato.",findOptions:'Opzioni di ricerca',matchCase:'Maiuscole/minuscole',matchWord:'Solo parole intere',matchCyclic:'Ricerca ciclica',replaceAll:'Sostituisci tutto',replaceSuccessMsg:'%1 occorrenza(e) sostituite.'},table:{toolbar:'Tabella',title:'Proprietà tabella',menu:'Proprietà tabella',deleteTable:'Cancella Tabella',rows:'Righe',columns:'Colonne',border:'Dimensione bordo',widthPx:'pixel',widthPc:'percento',widthUnit:'unità larghezza',cellSpace:'Spaziatura celle',cellPad:'Padding celle',caption:'Intestazione',summary:'Indice',headers:'Intestazione',headersNone:'Nessuna',headersColumn:'Prima Colonna',headersRow:'Prima Riga',headersBoth:'Entrambe',invalidRows:"Il numero di righe dev'essere un numero maggiore di 0.",invalidCols:"Il numero di colonne dev'essere un numero maggiore di 0.",invalidBorder:"La dimensione del bordo dev'essere un numero.",invalidWidth:"La larghezza della tabella dev'essere un numero.",invalidHeight:"L'altezza della tabella dev'essere un numero.",invalidCellSpacing:"La spaziatura tra le celle dev'essere un numero.",invalidCellPadding:"Il paging delle celle dev'essere un numero",cell:{menu:'Cella',insertBefore:'Inserisci Cella Prima',insertAfter:'Inserisci Cella Dopo',deleteCell:'Elimina celle',merge:'Unisce celle',mergeRight:'Unisci a Destra',mergeDown:'Unisci in Basso',splitHorizontal:'Dividi Cella Orizzontalmente',splitVertical:'Dividi Cella Verticalmente',title:'Proprietà della cella',cellType:'Tipo di cella',rowSpan:'Su più righe',colSpan:'Su più colonne',wordWrap:'Ritorno a capo',hAlign:'Allineamento orizzontale',vAlign:'Allineamento verticale',alignBaseline:'Linea Base',bgColor:'Colore di Sfondo',borderColor:'Colore del Bordo',data:'Dati',header:'Intestazione',yes:'Si',no:'No',invalidWidth:"La larghezza della cella dev'essere un numero.",invalidHeight:"L'altezza della cella dev'essere un numero.",invalidRowSpan:"Il numero di righe dev'essere un numero intero.",invalidColSpan:"Il numero di colonne dev'essere un numero intero.",chooseColor:'Scegli'},row:{menu:'Riga',insertBefore:'Inserisci Riga Prima',insertAfter:'Inserisci Riga Dopo',deleteRow:'Elimina righe'},column:{menu:'Colonna',insertBefore:'Inserisci Colonna Prima',insertAfter:'Inserisci Colonna Dopo',deleteColumn:'Elimina colonne'}},button:{title:'Proprietà bottone',text:'Testo (Valore)',type:'Tipo',typeBtn:'Bottone',typeSbm:'Invio',typeRst:'Annulla'},checkboxAndRadio:{checkboxTitle:'Proprietà checkbox',radioTitle:'Proprietà radio button',value:'Valore',selected:'Selezionato'},form:{title:'Proprietà modulo',menu:'Proprietà modulo',action:'Azione',method:'Metodo',encoding:'Codifica'},select:{title:'Proprietà menu di selezione',selectInfo:'Info',opAvail:'Opzioni disponibili',value:'Valore',size:'Dimensione',lines:'righe',chkMulti:'Permetti selezione multipla',opText:'Testo',opValue:'Valore',btnAdd:'Aggiungi',btnModify:'Modifica',btnUp:'Su',btnDown:'Gi',btnSetValue:'Imposta come predefinito',btnDelete:'Rimuovi'},textarea:{title:'Proprietà area di testo',cols:'Colonne',rows:'Righe'},textfield:{title:'Proprietà campo di testo',name:'Nome',value:'Valore',charWidth:'Larghezza',maxChars:'Numero massimo di caratteri',type:'Tipo',typeText:'Testo',typePass:'Password'},hidden:{title:'Proprietà campo nascosto',name:'Nome',value:'Valore'},image:{title:'Proprietà immagine',titleButton:'Proprietà bottone immagine',menu:'Proprietà immagine',infoTab:'Informazioni immagine',btnUpload:'Invia al server',upload:'Carica',alt:'Testo alternativo',lockRatio:'Blocca rapporto',resetSize:'Reimposta dimensione',border:'Bordo',hSpace:'HSpace',vSpace:'VSpace',alertUrl:"Devi inserire l'URL per l'immagine",linkTab:'Collegamento',button2Img:"Vuoi trasformare il bottone immagine selezionato in un'immagine semplice?",img2Button:"Vuoi trasferomare l'immagine selezionata in un bottone immagine?",urlMissing:"Manca l'URL dell'immagine.",validateBorder:'Il campo Bordo deve essere un numero intero.',validateHSpace:'Il campo HSpace deve essere un numero intero.',validateVSpace:'Il campo VSpace deve essere un numero intero.'},flash:{properties:'Proprietà Oggetto Flash',propertiesTab:'Proprietà',title:'Proprietà Oggetto Flash',chkPlay:'Avvio Automatico',chkLoop:'Riavvio automatico',chkMenu:'Abilita Menu di Flash',chkFull:'Permetti la modalità tutto schermo',scale:'Ridimensiona',scaleAll:'Mostra Tutto',scaleNoBorder:'Senza Bordo',scaleFit:'Dimensione Esatta',access:'Accesso Script',accessAlways:'Sempre',accessSameDomain:'Solo stesso dominio',accessNever:'Mai',alignAbsBottom:'In basso assoluto',alignAbsMiddle:'Centrato assoluto',alignBaseline:'Linea base',alignTextTop:'In alto al testo',quality:'Qualità',qualityBest:'Massima',qualityHigh:'Alta',qualityAutoHigh:'Alta Automatica',qualityMedium:'Intermedia',qualityAutoLow:'Bassa Automatica',qualityLow:'Bassa',windowModeWindow:'Finestra',windowModeOpaque:'Opaca',windowModeTransparent:'Trasparente',windowMode:'Modalità finestra',flashvars:'Variabili per Flash',bgcolor:'Colore sfondo',hSpace:'HSpace',vSpace:'VSpace',validateSrc:"Devi inserire l'URL del collegamento",validateHSpace:"L'HSpace dev'essere un numero.",validateVSpace:"Il VSpace dev'essere un numero."},spellCheck:{toolbar:'Correttore ortografico',title:'Controllo ortografico',notAvailable:'Il servizio non è momentaneamente disponibile.',errorLoading:"Errore nel caricamento dell'host col servizio applicativo: %s.",notInDic:'Non nel dizionario',changeTo:'Cambia in',btnIgnore:'Ignora',btnIgnoreAll:'Ignora tutto',btnReplace:'Cambia',btnReplaceAll:'Cambia tutto',btnUndo:'Annulla',noSuggestions:'- Nessun suggerimento -',progress:'Controllo ortografico in corso',noMispell:'Controllo ortografico completato: nessun errore trovato',noChanges:'Controllo ortografico completato: nessuna parola cambiata',oneChange:'Controllo ortografico completato: 1 parola cambiata',manyChanges:'Controllo ortografico completato: %1 parole cambiate',ieSpellDownload:'Contollo ortografico non installato. Lo vuoi scaricare ora?'},smiley:{toolbar:'Emoticon',title:'Inserisci emoticon',options:'Opzioni Smiley'},elementsPath:{eleLabel:'Percorso degli elementi',eleTitle:'%1 elemento'},numberedlist:'Elenco numerato',bulletedlist:'Elenco puntato',indent:'Aumenta rientro',outdent:'Riduci rientro',justify:{left:'Allinea a sinistra',center:'Centra',right:'Allinea a destra',block:'Giustifica'},blockquote:'Citazione',clipboard:{title:'Incolla',cutError:'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).',copyError:'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).',pasteMsg:"Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl/Cmd+V</STRONG>) e premi <STRONG>OK</STRONG>.",securityMsg:"A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.",pasteArea:'Incolla'},pastefromword:{confirmCleanup:'Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?',toolbar:'Incolla da Word',title:'Incolla da Word',error:'Non è stato possibile eliminarre il testo incollato a causa di un errore interno.'},pasteText:{button:'Incolla come testo semplice',title:'Incolla come testo semplice'},templates:{button:'Modelli',title:'Contenuto dei modelli',options:'Opzioni del Modello',insertOption:'Cancella il contenuto corrente',selectPromptMsg:"Seleziona il modello da aprire nell'editor<br />(il contenuto attuale verrà eliminato):",emptyListMsg:'(Nessun modello definito)'},showBlocks:'Visualizza Blocchi',stylesCombo:{label:'Stile',panelTitle:'Stili di formattazione',panelTitle1:'Stili per blocchi',panelTitle2:'Stili in linea',panelTitle3:'Stili per oggetti'},format:{label:'Formato',panelTitle:'Formato',tag_p:'Normale',tag_pre:'Formattato',tag_address:'Indirizzo',tag_h1:'Titolo 1',tag_h2:'Titolo 2',tag_h3:'Titolo 3',tag_h4:'Titolo 4',tag_h5:'Titolo 5',tag_h6:'Titolo 6',tag_div:'Paragrafo (DIV)'},div:{title:'Crea DIV contenitore',toolbar:'Crea DIV contenitore',cssClassInputLabel:'Classi di stile',styleSelectLabel:'Stile',IdInputLabel:'Id',languageCodeInputLabel:'Codice lingua',inlineStyleInputLabel:'Stile Inline',advisoryTitleInputLabel:'Titolo Avviso',langDirLabel:'Direzione di scrittura',langDirLTRLabel:'Da sinistra a destra (LTR)',langDirRTLLabel:'Da destra a sinistra (RTL)',edit:'Modifica DIV',remove:'Rimuovi DIV'},iframe:{title:'Proprietà IFrame',toolbar:'IFrame',noUrl:"Inserire l'URL del campo IFrame",scrolling:'Abilita scrollbar',border:'Mostra il bordo'},font:{label:'Carattere',voiceLabel:'Carattere',panelTitle:'Carattere'},fontSize:{label:'Dimensione',voiceLabel:'Dimensione Carattere',panelTitle:'Dimensione'},colorButton:{textColorTitle:'Colore testo',bgColorTitle:'Colore sfondo',panelTitle:'Colori',auto:'Automatico',more:'Altri colori...'},colors:{'000':'Nero',800000:'Marrone Castagna','8B4513':'Marrone Cuoio','2F4F4F':'Grigio Fumo di Londra','008080':'Acquamarina','000080':'Blu Oceano','4B0082':'Indigo',696969:'Grigio Scuro',B22222:'Giallo Fiamma',A52A2A:'Marrone',DAA520:'Giallo Mimosa','006400':'Verde Scuro','40E0D0':'Turchese','0000CD':'Blue Scuro',800080:'Viola',808080:'Grigio',F00:'Rosso',FF8C00:'Arancio Scuro',FFD700:'Oro','008000':'Verde','0FF':'Ciano','00F':'Blu',EE82EE:'Violetto',A9A9A9:'Grigio Scuro',FFA07A:'Salmone',FFA500:'Arancio',FFFF00:'Giallo','00FF00':'Lime',AFEEEE:'Turchese Chiaro',ADD8E6:'Blu Chiaro',DDA0DD:'Rosso Ciliegia',D3D3D3:'Grigio Chiaro',FFF0F5:'Lavanda Chiara',FAEBD7:'Bianco Antico',FFFFE0:'Giallo Chiaro',F0FFF0:'Verde Mela',F0FFFF:'Azzurro',F0F8FF:'Celeste',E6E6FA:'Lavanda',FFF:'Bianco'},scayt:{title:'Controllo Ortografico Mentre Scrivi',opera_title:'Non supportato da Opera',enable:'Abilita COMS',disable:'Disabilita COMS',about:'About COMS',toggle:'Inverti abilitazione SCOMS',options:'Opzioni',langs:'Lingue',moreSuggestions:'Altri suggerimenti',ignore:'Ignora',ignoreAll:'Ignora tutti',addWord:'Aggiungi Parola',emptyDic:'Il nome del dizionario non può essere vuoto.',optionsTab:'Opzioni',allCaps:'Ignora Parole in maiuscolo',ignoreDomainNames:'Ignora nomi di dominio',mixedCase:'Ignora parole con maiuscole e minuscole',mixedWithDigits:'Ignora parole con numeri',languagesTab:'Lingue',dictionariesTab:'Dizionari',dic_field_name:'Nome del dizionario',dic_create:'Crea',dic_restore:'Ripristina',dic_delete:'Cancella',dic_rename:'Rinomina',dic_info:'Inizialmente il dizionario utente è memorizzato in un Cookie. I Cookie però hanno una dimensioni massima limitata. Quando il dizionario utente creasce a tal punto da non poter più essere memorizzato in un Cookie, allora il dizionario può essere memorizzato sul nostro server. Per memorizzare il proprio dizionario personale sul nostro server, è necessario specificare un nome per il proprio dizionario. Se avete già memorizzato un dizionario, inserite il nome che gli avete dato e premete il pulsante Ripristina.',aboutTab:'Info'},about:{title:'Riguardo CKEditor',dlgTitle:'Riguardo CKEditor',help:"Vedi $1 per l'aiuto.",userGuide:'Guida Utente CKEditor',moreInfo:'Per le informazioni sulla licenza si prega di visitare il nostro sito:',copy:'Copyright © $1. Tutti i diritti riservati.'},maximize:'Massimizza',minimize:'Minimizza',fakeobjects:{anchor:'Ancora',flash:'Animazione Flash',iframe:'IFrame',hiddenfield:'Campo Nascosto',unknown:'Oggetto sconosciuto'},resize:'Trascina per ridimensionare',colordialog:{title:'Selezionare il colore',options:'Opzioni colore',highlight:'Evidenzia',selected:'Seleziona il colore',clear:'cancella'},toolbarCollapse:'Minimizza Toolbar',toolbarExpand:'Espandi Toolbar',toolbarGroups:{document:'Documento',clipboard:'Copia negli appunti/Indietro',editing:'Modifica',forms:'Form',basicstyles:'Stili di base',paragraph:'Paragrafo',links:'Link',insert:'Inserisci',styles:'Stili',colors:'Colori',tools:'Strumenti'},bidi:{ltr:'Direzione del testo da sinistra verso destra',rtl:'Direzione del testo da destra verso sinistra'},docprops:{label:'Proprietà del Documento',title:'Proprietà del Documento',design:'Disegna',meta:'Meta Data',chooseColor:'Scegli',other:'<altro>',docTitle:'Titolo pagina',charset:'Set di caretteri',charsetOther:'Altro set di caretteri',charsetASCII:'ASCII',charsetCE:'Europa Centrale',charsetCT:'Cinese Tradizionale (Big5)',charsetCR:'Cirillico',charsetGR:'Greco',charsetJP:'Giapponese',charsetKR:'Coreano',charsetTR:'Turco',charsetUN:'Unicode (UTF-8)',charsetWE:'Europa Occidentale',docType:'Intestazione DocType',docTypeOther:'Altra intestazione DocType',xhtmlDec:'Includi dichiarazione XHTML',bgColor:'Colore di sfondo',bgImage:'Immagine di sfondo',bgFixed:'Sfondo fissato',txtColor:'Colore testo',margin:'Margini',marginTop:'In Alto',marginLeft:'A Sinistra',marginRight:'A Destra',marginBottom:'In Basso',metaKeywords:'Chiavi di indicizzazione documento (separate da virgola)',metaDescription:'Descrizione documento',metaAuthor:'Autore',metaCopyright:'Copyright',previewHtml:'<p>Questo è un <strong>testo di esempio</strong>. State usando <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ja.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ja.js
new file mode 100755
index 0000000..48cdb54
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ja.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ja={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'リッチテキストエディタ',source:'ソース',newPage:'新しいページ',save:'保存',preview:'プレビュー',cut:'切り取り',copy:'コピー',paste:'貼り付け',print:'印刷',underline:'下線',bold:'太字',italic:'斜体',selectAll:'すべて選択',removeFormat:'フォーマット削除',strike:'打ち消し線',subscript:'添え字',superscript:'上付き文字',horizontalrule:'横罫線',pagebreak:'改ページ挿入',pagebreakAlt:'Page Break',unlink:'リンク削除',undo:'元に戻す',redo:'やり直し',common:{browseServer:'サーバーブラウザー',url:'URL',protocol:'プロトコル',upload:'アップロード',uploadSubmit:'サーバーに送信',image:'イメージ',flash:'Flash',form:'フォーム',checkbox:'チェックボックス',radio:'ラジオボタン',textField:'1行テキスト',textarea:'テキストエリア',hiddenField:'不可視フィールド',button:'ボタン',select:'選択フィールド',imageButton:'画像ボタン',notSet:'<なし>',id:'Id',name:'Name属性',langDir:'文字表記の方向',langDirLtr:'左から右 (LTR)',langDirRtl:'右から左 (RTL)',langCode:'言語コード',longDescr:'longdesc属性(長文説明)',cssClass:'スタイルシートクラス',advisoryTitle:'Title属性',cssStyle:'スタイルシート',ok:'OK',cancel:'キャンセル',close:'閉じる',preview:'プレビュー',generalTab:'全般',advancedTab:'高度な設定',validateNumberFailed:'値が数ではありません',confirmNewPage:'変更内容を保存せず、 新しいページを開いてもよろしいでしょうか?',confirmCancel:'オプション設定を変更しました。ダイアログを閉じてもよろしいでしょうか?',options:'オプション',target:'ターゲット',targetNew:'新しいウィンドウ (_空白)',targetTop:'最上部ウィンドウ (_トップ)',targetSelf:'同じウィンドウ (_同一)',targetParent:'親ウィンドウ (_親)',langDirLTR:'左から右 (LTR)',langDirRTL:'右から左 (RTL)',styles:'スタイル',cssClasses:'スタイルシートクラス',width:'幅',height:'高さ',align:'行揃え',alignLeft:'左',alignRight:'右',alignCenter:'中央',alignTop:'上',alignMiddle:'中央',alignBottom:'下',invalidHeight:'高さは数値で入力してください。',invalidWidth:'幅は数値で入力してください。',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, 利用不可能</span>'},contextmenu:{options:'コンテキストメニューオプション'},specialChar:{toolbar:'特殊文字挿入',title:'特殊文字選択',options:'特殊文字オプション'},link:{toolbar:'リンク挿入/編集',other:'<その他の>',menu:'リンク編集',title:'ハイパーリンク',info:'ハイパーリンク 情報',target:'ターゲット',upload:'アップロード',advanced:'高度な設定',type:'リンクタイプ',toUrl:'URL',toAnchor:'このページのアンカー',toEmail:'E-Mail',targetFrame:'<フレーム>',targetPopup:'<ポップアップウィンドウ>',targetFrameName:'目的のフレーム名',targetPopupName:'ポップアップウィンドウ名',popupFeatures:'ポップアップウィンドウ特徴',popupResizable:'サイズ可変',popupStatusBar:'ステータスバー',popupLocationBar:'ロケーションバー',popupToolbar:'ツールバー',popupMenuBar:'メニューバー',popupFullScreen:'全画面モード(IE)',popupScrollBars:'スクロールバー',popupDependent:'開いたウィンドウに連動して閉じる (Netscape)',popupLeft:'左端からの座標で指定',popupTop:'上端からの座標で指定',id:'Id',langDir:'文字表記の方向',langDirLTR:'左から右 (LTR)',langDirRTL:'右から左 (RTL)',acccessKey:'アクセスキー',name:'Name属性',langCode:'言語コード',tabIndex:'タブインデックス',advisoryTitle:'Title属性',advisoryContentType:'Content Type属性',cssClasses:'スタイルシートクラス',charset:'リンクcharset属性',styles:'スタイルシート',rel:'Relationship',selectAnchor:'アンカーを選択',anchorName:'アンカー名',anchorId:'エレメントID',emailAddress:'E-Mail アドレス',emailSubject:'件名',emailBody:'本文',noAnchors:'(ドキュメントにおいて利用可能なアンカーはありません。)',noUrl:'リンクURLを入力してください。',noEmail:'メールアドレスを入力してください。'},anchor:{toolbar:'アンカー挿入/編集',menu:'アンカー プロパティ',title:'アンカー プロパティ',name:'アンカー名',errorName:'アンカー名を必ず入力してください。',remove:'Remove Anchor'},list:{numberedTitle:'段落番号 プロパティ',bulletedTitle:'箇条書き プロパティ',type:'タイプ',start:'開始',validateStartNumber:'リスト開始番号は数値で入力してください。',circle:'白丸',disc:'黒丸',square:'四角',none:'なし',notset:'<なし>',armenian:'アルメニア数字',georgian:'グルジア数字 (an, ban, gan, etc.)',lowerRoman:'小文字ローマ数字 (i, ii, iii, iv, v, etc.)',upperRoman:'大文字ローマ数字 (I, II, III, IV, V, etc.)',lowerAlpha:'小文字アルファベット (a, b, c, d, e, etc.)',upperAlpha:'大文字アルファベット (A, B, C, D, E, etc.)',lowerGreek:'小文字ギリシャ文字 (alpha, beta, gamma, etc.)',decimal:'数字 (1, 2, 3, etc.)',decimalLeadingZero:'上位桁に0をつけた数字 (01, 02, 03, etc.)'},findAndReplace:{title:'検索して置換',find:'検索',replace:'置き換え',findWhat:'検索する文字列:',replaceWith:'置換えする文字列:',notFoundMsg:'指定された文字列は見つかりませんでした。',findOptions:'Find Options',matchCase:'大文字と小文字を区別する',matchWord:'単語単位で探す',matchCyclic:'一周する',replaceAll:'すべて置換え',replaceSuccessMsg:'%1 個置換しました。'},table:{toolbar:'テーブル',title:'テーブル プロパティ',menu:'テーブル プロパティ',deleteTable:'テーブル削除',rows:'行',columns:'列',border:'ボーダーサイズ',widthPx:'ピクセル',widthPc:'パーセント',widthUnit:'ユニット',cellSpace:'セル内余白',cellPad:'セル内間隔',caption:'キャプション',summary:'テーブルの概要',headers:'テーブルヘッダ(th)',headersNone:'なし',headersColumn:'初めの列のみ',headersRow:'初めの行のみ',headersBoth:'両方',invalidRows:'行は0より大きな数値で入力してください。',invalidCols:'列は0より大きな数値で入力してください。',invalidBorder:'ボーダーサイズは数値で入力してください。',invalidWidth:'幅は数値で入力してください。',invalidHeight:'高さは数値で入力してください。',invalidCellSpacing:'セル内余白は数値で入力してください。',invalidCellPadding:'セル内間隔は数値で入力してください。',cell:{menu:'セル',insertBefore:'セルの前に挿入',insertAfter:'セルの後に挿入',deleteCell:'セル削除',merge:'セル結合',mergeRight:'右に結合',mergeDown:'下に結合',splitHorizontal:'セルを水平方向分割',splitVertical:'セルを垂直方向に分割',title:'セルプロパティ',cellType:'セルタイプ',rowSpan:'縦幅(行数)',colSpan:'横幅(列数)',wordWrap:'折り返し',hAlign:'セル横の整列',vAlign:'セル縦の整列',alignBaseline:'ベースライン',bgColor:'背景色',borderColor:'ボーダーカラー',data:'テーブルデータ(td)',header:'テーブルヘッダ(th)',yes:'Yes',no:'No',invalidWidth:'セル幅は数値で入力してください。',invalidHeight:'セル高さは数値で入力してください。',invalidRowSpan:'縦幅(行数)は数値で入力してください。',invalidColSpan:'横幅(列数)は数値で入力してください。',chooseColor:'色の選択'},row:{menu:'行',insertBefore:'行の前に挿入',insertAfter:'行の後に挿入',deleteRow:'行削除'},column:{menu:'カラム',insertBefore:'カラムの前に挿入',insertAfter:'カラムの後に挿入',deleteColumn:'列削除'}},button:{title:'ボタン プロパティ',text:'テキスト (値)',type:'タイプ',typeBtn:'ボタン',typeSbm:'送信',typeRst:'リセット'},checkboxAndRadio:{checkboxTitle:'チェックボックス プロパティ',radioTitle:'ラジオボタン プロパティ',value:'値',selected:'選択済み'},form:{title:'フォーム プロパティ',menu:'フォーム プロパティ',action:'アクション',method:'メソッド',encoding:'エンコーディング'},select:{title:'選択フィールド プロパティ',selectInfo:'情報',opAvail:'利用可能なオプション',value:'選択項目値',size:'サイズ',lines:'行',chkMulti:'複数項目選択を許可',opText:'選択項目名',opValue:'値',btnAdd:'追加',btnModify:'編集',btnUp:'上へ',btnDown:'下へ',btnSetValue:'選択した値を設定',btnDelete:'削除'},textarea:{title:'テキストエリア プロパティ',cols:'列',rows:'行'},textfield:{title:'1行テキスト プロパティ',name:'名前',value:'値',charWidth:'サイズ',maxChars:'最大長',type:'タイプ',typeText:'テキスト',typePass:'パスワード入力'},hidden:{title:'不可視フィールド プロパティ',name:'名前',value:'値'},image:{title:'イメージ プロパティ',titleButton:'画像ボタン プロパティ',menu:'イメージ プロパティ',infoTab:'イメージ 情報',btnUpload:'サーバーに送信',upload:'アップロード',alt:'代替テキスト',lockRatio:'ロック比率',resetSize:'サイズリセット',border:'ボーダー',hSpace:'横間隔',vSpace:'縦間隔',alertUrl:'イメージのURLを入力してください。',linkTab:'リンク',button2Img:'選択したボタンを画像に置き換えますか?',img2Button:'選択した画像をボタンに置き換えますか?',urlMissing:'イメージのURLを入力してください。',validateBorder:'ボーダーは数値で入力してください。',validateHSpace:'横間隔は数値で入力してください。',validateVSpace:'縦間隔は数値で入力してください。'},flash:{properties:'Flash プロパティ',propertiesTab:'プロパティ',title:'Flash プロパティ',chkPlay:'再生',chkLoop:'ループ再生',chkMenu:'Flashメニュー可能',chkFull:'フルスクリーン許可',scale:'拡大縮小設定',scaleAll:'すべて表示',scaleNoBorder:'外が見えない様に拡大',scaleFit:'上下左右にフィット',access:'スプリクトアクセス(AllowScriptAccess)',accessAlways:'すべての場合に通信可能(Always)',accessSameDomain:'同一ドメインのみに通信可能(Same domain)',accessNever:'すべての場合に通信不可能(Never)',alignAbsBottom:'下部(絶対的)',alignAbsMiddle:'中央(絶対的)',alignBaseline:'ベースライン',alignTextTop:'テキスト上部',quality:'画質',qualityBest:'品質優先',qualityHigh:'高',qualityAutoHigh:'自動/高',qualityMedium:'中',qualityAutoLow:'自動/低',qualityLow:'低',windowModeWindow:'標準',windowModeOpaque:'背景を不透明設定',windowModeTransparent:'背景を透過設定',windowMode:'ウィンドウモード',flashvars:'フラッシュに渡す変数(FlashVars)',bgcolor:'背景色',hSpace:'横間隔',vSpace:'縦間隔',validateSrc:'リンクURLを入力してください。',validateHSpace:'横間隔は数値で入力してください。',validateVSpace:'縦間隔は数値で入力してください。'},spellCheck:{toolbar:'スペルチェック',title:'スペルチェック',notAvailable:'申し訳ありません、現在サービスを利用することができません',errorLoading:'アプリケーションサービスホスト読込みエラー: %s.',notInDic:'辞書にありません',changeTo:'変更',btnIgnore:'無視',btnIgnoreAll:'すべて無視',btnReplace:'置換',btnReplaceAll:'すべて置換',btnUndo:'やり直し',noSuggestions:'- 該当なし -',progress:'スペルチェック処理中...',noMispell:'スペルチェック完了: スペルの誤りはありませんでした',noChanges:'スペルチェック完了: 語句は変更されませんでした',oneChange:'スペルチェック完了: 1語句変更されました',manyChanges:'スペルチェック完了: %1 語句変更されました',ieSpellDownload:'スペルチェッカーがインストールされていません。今すぐダウンロードしますか?'},smiley:{toolbar:'絵文字',title:'顔文字挿入',options:'絵文字オプション'},elementsPath:{eleLabel:'エレメントパス',eleTitle:'%1 エレメント'},numberedlist:'段落番号',bulletedlist:'箇条書き',indent:'インデント',outdent:'インデント解除',justify:{left:'左揃え',center:'中央揃え',right:'右揃え',block:'両端揃え'},blockquote:'ブロック引用',clipboard:{title:'貼り付け',cutError:'ブラウザーのセキュリティ設定によりエディタの切り取り操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。',copyError:'ブラウザーのセキュリティ設定によりエディタのコピー操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+C)を使用してください。',pasteMsg:'キーボード(<STRONG>Ctrl/Cmd+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。',securityMsg:'ブラウザのセキュリティ設定により、エディタはクリップボード・データに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。',pasteArea:'貼り付け場所'},pastefromword:{confirmCleanup:'貼り付けを行うテキストは、ワード文章からコピーされようとしています。貼り付ける前にクリーニングを行いますか?',toolbar:'ワード文章から貼り付け',title:'ワード文章から貼り付け',error:'内部エラーにより貼り付けたデータがクリアできませんでした'},pasteText:{button:'プレーンテキスト貼り付け',title:'プレーンテキスト貼り付け'},templates:{button:'テンプレート(雛形)',title:'テンプレート内容',options:'テンプレートオプション',insertOption:'現在のエディタの内容と置換えをします',selectPromptMsg:'エディターで使用するテンプレートを選択してください。<br>(現在のエディタの内容は失われます):',emptyListMsg:'(テンプレートが定義されていません)'},showBlocks:'ブロック表示',stylesCombo:{label:'スタイル',panelTitle:'スタイル',panelTitle1:'ブロックスタイル',panelTitle2:'インラインスタイル',panelTitle3:'オブジェクトスタイル'},format:{label:'フォーマット',panelTitle:'フォーマット',tag_p:'標準',tag_pre:'書式付き',tag_address:'アドレス',tag_h1:'見出し 1',tag_h2:'見出し 2',tag_h3:'見出し 3',tag_h4:'見出し 4',tag_h5:'見出し 5',tag_h6:'見出し 6',tag_div:'標準 (DIV)'},div:{title:'Divコンテナ',toolbar:'Divコンテナ',cssClassInputLabel:'スタイルシートクラス',styleSelectLabel:'スタイル',IdInputLabel:'Id',languageCodeInputLabel:' 言語コード',inlineStyleInputLabel:'インラインスタイル',advisoryTitleInputLabel:'Title属性',langDirLabel:'文字表記の方向',langDirLTRLabel:'左から右 (LTR)',langDirRTLLabel:'右から左 (RTL)',edit:'Divコンテナ 編集',remove:'Divコンテナ 削除'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'フォント',voiceLabel:'フォント',panelTitle:'フォント'},fontSize:{label:'サイズ',voiceLabel:'フォントサイズ',panelTitle:'サイズ'},colorButton:{textColorTitle:'テキスト色',bgColorTitle:'背景色',panelTitle:'色',auto:'自動',more:'その他の色...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'スペルチェック設定(SCAYT)',opera_title:'Operaではサポートされません',enable:'SCAYT有効',disable:'SCAYT無効',about:'SCAYTバージョン',toggle:'SCAYT切替',options:'オプション',langs:'言語',moreSuggestions:'他の候補',ignore:'無視',ignoreAll:'すべて無視',addWord:'語句追加',emptyDic:'辞書名は必ず入力してください',optionsTab:'オプション',allCaps:'全て大文字の単語を無視',ignoreDomainNames:'ドメイン名を無視',mixedCase:'大文字小文字混在の単語を無視',mixedWithDigits:'数字付き単語を無視',languagesTab:'言語',dictionariesTab:'辞書',dic_field_name:'辞書名',dic_create:'登録',dic_restore:'元に戻す',dic_delete:'削除',dic_rename:'名前変更',dic_info:'始めユーザーディレクトリは、Cookieに保存されます。但し Cookie はサイズに制限があります。ユーザーディレクトリがCookieに保存できないサイズに到達するとディレクトリはサーバー上に保存されます。個人のディレクトリをサーバー上に保存するには、ディレクトリ名を明示する必要があります。もし既に保存されたディレクトリがある場合、その名前を入力し、元に戻すボタンを押してください。',aboutTab:'バージョン情報'},about:{title:'CKEditorバージョン情報',dlgTitle:'CKEditorバージョン情報',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'ライセンス情報の詳細はウェブサイトにて確認してください:',copy:'Copyright © $1. All rights reserved.'},maximize:'最大化',minimize:'最小化',fakeobjects:{anchor:'アンカー',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'ドラッグしてリサイズ',colordialog:{title:'色選択',options:'カラーオプション',highlight:'ハイライト',selected:'選択された色',clear:'クリア'},toolbarCollapse:'ツールバーを閉じる',toolbarExpand:'ツールバーを開く',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'テキストの向き : 左から右へ',rtl:'テキストの向き : 右から左へ'},docprops:{label:'文書 プロパティ',title:'文書 プロパティ',design:'Design',meta:'メタデータ',chooseColor:'色の選択',other:'<その他の>',docTitle:'ページタイトル',charset:'文字セット符号化',charsetOther:'他の文字セット符号化',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'文書タイプヘッダー',docTypeOther:'その他文書タイプヘッダー',xhtmlDec:'XHTML宣言をインクルード',bgColor:'背景色',bgImage:'背景画像 URL',bgFixed:'スクロールしない背景',txtColor:'テキスト色',margin:'ページ・マージン',marginTop:'上部',marginLeft:'左',marginRight:'右',marginBottom:'下部',metaKeywords:'文書のキーワード(カンマ区切り)',metaDescription:'文書の概要',metaAuthor:'文書の作者',metaCopyright:'文書の著作権',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ka.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ka.js
new file mode 100755
index 0000000..6d671bd
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ka.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ka={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'ტექსტის რედაქტორი',source:'კოდები',newPage:'ახალი გვერდი',save:'ჩაწერა',preview:'გადახედვა',cut:'ამოჭრა',copy:'ასლი',paste:'ჩასმა',print:'ბეჭდვა',underline:'გახაზული',bold:'მსხვილი',italic:'დახრილი',selectAll:'ყველაფრის მონიშნვა',removeFormat:'ფორმატირების მოხსნა',strike:'გადახაზული',subscript:'ინდექსი',superscript:'ხარისხი',horizontalrule:'ჰორიზონტალური ხაზის ჩასმა',pagebreak:'გვერდის წყვეტა ბეჭდვისთვის',pagebreakAlt:'გვერდის წყვეტა',unlink:'ბმულის მოხსნა',undo:'გაუქმება',redo:'გამეორება',common:{browseServer:'სერვერზე დათვალიერება',url:'URL',protocol:'პროტოკოლი',upload:'ატვირთვა',uploadSubmit:'სერვერზე გაგზავნა',image:'სურათი',flash:'Flash',form:'ფორმა',checkbox:'მონიშვნის ღილაკი',radio:'ამორჩევის ღილაკი',textField:'ტექსტური ველი',textarea:'ტექსტური არე',hiddenField:'მალული ველი',button:'ღილაკი',select:'არჩევის ველი',imageButton:'სურათიანი ღილაკი',notSet:'<არაფერი>',id:'Id',name:'სახელი',langDir:'ენის მიმართულება',langDirLtr:'მარცხნიდან მარჯვნივ (LTR)',langDirRtl:'მარჯვნიდან მარცხნივ (RTL)',langCode:'ენის კოდი',longDescr:'დიდი აღწერის URL',cssClass:'CSS კლასი',advisoryTitle:'სათაური',cssStyle:'CSS სტილი',ok:'დიახ',cancel:'გაუქმება',close:'დახურვა',preview:'გადახედვა',generalTab:'ინფორმაცია',advancedTab:'გაფართოებული',validateNumberFailed:'ეს მნიშვნელობა არაა რიცხვი.',confirmNewPage:'ამ დოკუმენტში ყველა ჩაუწერელი ცვლილება დაიკარგება. დარწმუნებული ხართ რომ ახალი გვერდის ჩატვირთვა გინდათ?',confirmCancel:'ზოგიერთი პარამეტრი შეცვლილია, დარწმუნებულილ ხართ რომ ფანჯრის დახურვა გსურთ?',options:'პარამეტრები',target:'გახსნის ადგილი',targetNew:'ახალი ფანჯარა (_blank)',targetTop:'ზედა ფანჯარა (_top)',targetSelf:'იგივე ფანჯარა (_self)',targetParent:'მშობელი ფანჯარა (_parent)',langDirLTR:'მარცხნიდან მარჯვნივ (LTR)',langDirRTL:'მარჯვნიდან მარცხნივ (RTL)',styles:'სტილი',cssClasses:'CSS კლასი',width:'სიგანე',height:'სიმაღლე',align:'სწორება',alignLeft:'მარცხენა',alignRight:'მარჯვენა',alignCenter:'შუა',alignTop:'ზემოთა',alignMiddle:'შუა',alignBottom:'ქვემოთა',invalidHeight:'სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.',invalidWidth:'სიგანე რიცხვით უნდა იყოს წარმოდგენილი.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, მიუწვდომელია</span>'},contextmenu:{options:'კონტექსტური მენიუს პარამეტრები'},specialChar:{toolbar:'სპეციალური სიმბოლოს ჩასმა',title:'სპეციალური სიმბოლოს არჩევა',options:'სპეციალური სიმბოლოს პარამეტრები'},link:{toolbar:'ბმული',other:'<სხვა>',menu:'ბმულის რედაქტირება',title:'ბმული',info:'ბმულის ინფორმაცია',target:'გახსნის ადგილი',upload:'აქაჩვა',advanced:'დაწვრილებით',type:'ბმულის ტიპი',toUrl:'URL',toAnchor:'ბმული ტექსტში ღუზაზე',toEmail:'ელფოსტა',targetFrame:'<frame>',targetPopup:'<popup ფანჯარა>',targetFrameName:'Frame-ის სახელი',targetPopupName:'Popup ფანჯრის სახელი',popupFeatures:'Popup ფანჯრის პარამეტრები',popupResizable:'ცვალებადი ზომით',popupStatusBar:'სტატუსის ზოლი',popupLocationBar:'ნავიგაციის ზოლი',popupToolbar:'ხელსაწყოთა ზოლი',popupMenuBar:'მენიუს ზოლი',popupFullScreen:'მთელი ეკრანი (IE)',popupScrollBars:'გადახვევის ზოლები',popupDependent:'დამოკიდებული (Netscape)',popupLeft:'მარცხენა პოზიცია',popupTop:'ზედა პოზიცია',id:'Id',langDir:'ენის მიმართულება',langDirLTR:'მარცხნიდან მარჯვნივ (LTR)',langDirRTL:'მარჯვნიდან მარცხნივ (RTL)',acccessKey:'წვდომის ღილაკი',name:'სახელი',langCode:'ენის კოდი',tabIndex:'Tab-ის ინდექსი',advisoryTitle:'სათაური',advisoryContentType:'შიგთავსის ტიპი',cssClasses:'CSS კლასი',charset:'კოდირება',styles:'CSS სტილი',rel:'კავშირი',selectAnchor:'აირჩიეთ ღუზა',anchorName:'ღუზის სახელით',anchorId:'ელემენტის Id-თ',emailAddress:'ელფოსტის მისამართები',emailSubject:'წერილის სათაური',emailBody:'წერილის ტექსტი',noAnchors:'(ამ დოკუმენტში ღუზა არაა)',noUrl:'აკრიფეთ ბმულის URL',noEmail:'აკრიფეთ ელფოსტის მისამართი'},anchor:{toolbar:'ღუზა',menu:'ღუზის რედაქტირება',title:'ღუზის პარამეტრები',name:'ღუზუს სახელი',errorName:'აკრიფეთ ღუზის სახელი',remove:'Remove Anchor'},list:{numberedTitle:'გადანომრილი სიის პარამეტრები',bulletedTitle:'ღილებიანი სიის პარამეტრები',type:'ტიპი',start:'საწყისი',validateStartNumber:'სიის საწყისი მთელი რიცხვი უნდა იყოს.',circle:'წრეწირი',disc:'წრე',square:'კვადრატი',none:'არაფერი',notset:'<არაფერი>',armenian:'სომხური გადანომრვა',georgian:'ქართული გადანომრვა (ან, ბან, გან, ..)',lowerRoman:'რომაული გადანომრვცა პატარა ციფრებით (i, ii, iii, iv, v, ..)',upperRoman:'რომაული გადანომრვა დიდი ციფრებით (I, II, III, IV, V, etc.)',lowerAlpha:'პატარა ლათინური ასოებით (a, b, c, d, e, ..)',upperAlpha:'დიდი ლათინური ასოებით (A, B, C, D, E, ..)',lowerGreek:'პატარა ბერძნული ასოებით (ალფა, ბეტა, გამა, ..)',decimal:'რიცხვებით (1, 2, 3, ..)',decimalLeadingZero:'ნულით დაწყებული რიცხვებით (01, 02, 03, ..)'},findAndReplace:{title:'ძებნა და შეცვლა',find:'ძებნა',replace:'შეცვლა',findWhat:'საძიებელი ტექსტი:',replaceWith:'შეცვლის ტექსტი:',notFoundMsg:'მითითებული ტექსტი არ მოიძებნა.',findOptions:'Find Options',matchCase:'დიდი და პატარა ასოების დამთხვევა',matchWord:'მთელი სიტყვის დამთხვევა',matchCyclic:'დოკუმენტის ბოლოში გასვლის მერე თავიდან დაწყება',replaceAll:'ყველას შეცვლა',replaceSuccessMsg:'%1 მოძებნილი შეიცვალა.'},table:{toolbar:'ცხრილი',title:'ცხრილის პარამეტრები',menu:'ცხრილის პარამეტრები',deleteTable:'ცხრილის წაშლა',rows:'სტრიქონი',columns:'სვეტი',border:'ჩარჩოს ზომა',widthPx:'წერტილი',widthPc:'პროცენტი',widthUnit:'საზომი ერთეული',cellSpace:'უჯრის სივრცე (spacing)',cellPad:'უჯრის კიდე (padding)',caption:'სათაური',summary:'შეჯამება',headers:'სათაურები',headersNone:'არაფერი',headersColumn:'პირველი სვეტი',headersRow:'პირველი სტრიქონი',headersBoth:'ორივე',invalidRows:'სტრიქონების რაოდენობა დადებითი რიცხვი უნდა იყოს.',invalidCols:'სვეტების რაოდენობა დადებითი რიცხვი უნდა იყოს.',invalidBorder:'ჩარჩოს ზომა რიცხვით უდნა იყოს წარმოდგენილი.',invalidWidth:'ცხრილის სიგანე რიცხვით უნდა იყოს წარმოდგენილი.',invalidHeight:'ცხრილის სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.',invalidCellSpacing:'უჯრის სივრცე (spacing) რიცხვით უნდა იყოს წარმოდგენილი.',invalidCellPadding:'უჯრის კიდე (padding) რიცხვით უნდა იყოს წარმოდგენილი.',cell:{menu:'უჯრა',insertBefore:'უჯრის ჩასმა მანამდე',insertAfter:'უჯრის ჩასმა მერე',deleteCell:'უჯრების წაშლა',merge:'უჯრების შეერთება',mergeRight:'შეერთება მარჯვენასთან',mergeDown:'შეერთება ქვემოთასთან',splitHorizontal:'გაყოფა ჰორიზონტალურად',splitVertical:'გაყოფა ვერტიკალურად',title:'უჯრის პარამეტრები',cellType:'უჯრის ტიპი',rowSpan:'სტრიქონების ოდენობა',colSpan:'სვეტების ოდენობა',wordWrap:'სტრიქონის გადატანა (Word Wrap)',hAlign:'ჰორიზონტალური სწორება',vAlign:'ვერტიკალური სწორება',alignBaseline:'ძირითადი ხაზის გასწვრივ',bgColor:'ფონის ფერი',borderColor:'ჩარჩოს ფერი',data:'მონაცემები',header:'სათაური',yes:'დიახ',no:'არა',invalidWidth:'უჯრის სიგანე რიცხვით უნდა იყოს წარმოდგენილი.',invalidHeight:'უჯრის სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.',invalidRowSpan:'სტრიქონების რაოდენობა მთელი რიცხვი უნდა იყოს.',invalidColSpan:'სვეტების რაოდენობა მთელი რიცხვი უნდა იყოს.',chooseColor:'არჩევა'},row:{menu:'სტრიქონი',insertBefore:'სტრიქონის ჩამატება წინ',insertAfter:'სტრიქონის ჩამატება მერე',deleteRow:'სტრიქონების წაშლა'},column:{menu:'სვეტი',insertBefore:'სვეტის ჩამატება წინ',insertAfter:'სვეტის ჩამატება მერე',deleteColumn:'სვეტების წაშლა'}},button:{title:'ღილაკის პარამეტრები',text:'ტექსტი',type:'ტიპი',typeBtn:'ღილაკი',typeSbm:'გაგზავნა',typeRst:'გასუფთავება'},checkboxAndRadio:{checkboxTitle:'მონიშვნის ღილაკის (Checkbox) პარამეტრები',radioTitle:'ასარჩევი ღილაკის (Radio) პარამეტრები',value:'ტექსტი',selected:'არჩეული'},form:{title:'ფორმის პარამეტრები',menu:'ფორმის პარამეტრები',action:'ქმედება',method:'მეთოდი',encoding:'კოდირება'},select:{title:'არჩევის ველის პარამეტრები',selectInfo:'ინფორმაცია',opAvail:'შესაძლებელი ვარიანტები',value:'მნიშვნელობა',size:'ზომა',lines:'ხაზები',chkMulti:'მრავლობითი არჩევანის საშუალება',opText:'ტექსტი',opValue:'მნიშვნელობა',btnAdd:'დამატება',btnModify:'შეცვლა',btnUp:'ზემოთ',btnDown:'ქვემოთ',btnSetValue:'ამორჩეულ მნიშვნელოვნად დაყენება',btnDelete:'წაშლა'},textarea:{title:'ტექსტური არის პარამეტრები',cols:'სვეტები',rows:'სტრიქონები'},textfield:{title:'ტექსტური ველის პარამეტრები',name:'სახელი',value:'მნიშვნელობა',charWidth:'სიმბოლოს ზომა',maxChars:'ასოების მაქსიმალური ოდენობა',type:'ტიპი',typeText:'ტექსტი',typePass:'პაროლი'},hidden:{title:'მალული ველის პარამეტრები',name:'სახელი',value:'მნიშვნელობა'},image:{title:'სურათის პარამეტრები',titleButton:'სურათიანი ღილაკის პარამეტრები',menu:'სურათის პარამეტრები',infoTab:'სურათის ინფორმცია',btnUpload:'სერვერისთვის გაგზავნა',upload:'ატვირთვა',alt:'სანაცვლო ტექსტი',lockRatio:'პროპორციის შენარჩუნება',resetSize:'ზომის დაბრუნება',border:'ჩარჩო',hSpace:'ჰორიზონტალური სივრცე',vSpace:'ვერტიკალური სივრცე',alertUrl:'აკრიფეთ სურათის URL',linkTab:'ბმული',button2Img:'გსურთ არჩეული სურათიანი ღილაკის გადაქცევა ჩვეულებრივ ღილაკად?',img2Button:'გსურთ არჩეული ჩვეულებრივი ღილაკის გადაქცევა სურათიან ღილაკად?',urlMissing:'სურათის URL არაა შევსებული.',validateBorder:'ჩარჩო მთელი რიცხვი უნდა იყოს.',validateHSpace:'ჰორიზონტალური სივრცე მთელი რიცხვი უნდა იყოს.',validateVSpace:'ვერტიკალური სივრცე მთელი რიცხვი უნდა იყოს.'},flash:{properties:'Flash-ის პარამეტრები',propertiesTab:'პარამეტრები',title:'Flash-ის პარამეტრები',chkPlay:'ავტო გაშვება',chkLoop:'ჩაციკლვა',chkMenu:'Flash-ის მენიუს დაშვება',chkFull:'მთელი ეკრანის დაშვება',scale:'მასშტაბირება',scaleAll:'ყველაფრის ჩვენება',scaleNoBorder:'ჩარჩოს გარეშე',scaleFit:'ზუსტი ჩასმა',access:'სკრიპტის წვდომა',accessAlways:'ყოველთვის',accessSameDomain:'იგივე დომენი',accessNever:'არასდროს',alignAbsBottom:'ჩარჩოს ქვემოთა ნაწილის სწორება ტექსტისთვის',alignAbsMiddle:'ჩარჩოს შუა ნაწილის სწორება ტექსტისთვის',alignBaseline:'საბაზისო ხაზის სწორება',alignTextTop:'ტექსტი ზემოდან',quality:'ხარისხი',qualityBest:'საუკეთესო',qualityHigh:'მაღალი',qualityAutoHigh:'მაღალი (ავტომატური)',qualityMedium:'საშუალო',qualityAutoLow:'ძალიან დაბალი',qualityLow:'დაბალი',windowModeWindow:'ფანჯარა',windowModeOpaque:'გაუმჭვირვალე',windowModeTransparent:'გამჭვირვალე',windowMode:'ფანჯრის რეჟიმი',flashvars:'ცვლადები Flash-ისთვის',bgcolor:'ფონის ფერი',hSpace:'ჰორიზ. სივრცე',vSpace:'ვერტ. სივრცე',validateSrc:'URL არ უნდა იყოს ცარიელი.',validateHSpace:'ჰორიზონტალური სივრცე არ უნდა იყოს ცარიელი.',validateVSpace:'ვერტიკალური სივრცე არ უნდა იყოს ცარიელი.'},spellCheck:{toolbar:'მართლწერა',title:'მართლწერა',notAvailable:'უკაცრავად, ეს სერვისი ამჟამად მიუწვდომელია.',errorLoading:'სერვისის გამოძახების შეცდომა: %s.',notInDic:'არაა ლექსიკონში',changeTo:'შეცვლელი',btnIgnore:'უგულებელყოფა',btnIgnoreAll:'ყველას უგულებელყოფა',btnReplace:'შეცვლა',btnReplaceAll:'ყველას შეცვლა',btnUndo:'გაუქმება',noSuggestions:'- არაა შემოთავაზება -',progress:'მიმდინარეობს მართლწერის შემოწმება...',noMispell:'მართლწერის შემოწმება: შეცდომა არ მოიძებნა',noChanges:'მართლწერის შემოწმება: არაფერი შეცვლილა',oneChange:'მართლწერის შემოწმება: ერთი სიტყვა შეიცვალა',manyChanges:'მართლწერის შემოწმება: %1 სიტყვა შეიცვალა',ieSpellDownload:'მართლწერის შემოწმება არაა დაინსტალირებული. ჩამოვქაჩოთ ინტერნეტიდან?'},smiley:{toolbar:'სიცილაკები',title:'სიცილაკის ჩასმა',options:'სიცილაკის პარამეტრები'},elementsPath:{eleLabel:'ელემეტის გზა',eleTitle:'%1 ელემენტი'},numberedlist:'გადანომრილი სია',bulletedlist:'ღილიანი სია',indent:'მეტად შეწევა',outdent:'ნაკლებად შეწევა',justify:{left:'მარცხნივ სწორება',center:'შუაში სწორება',right:'მარჯვნივ სწორება',block:'გადასწორება'},blockquote:'ციტატა',clipboard:{title:'ჩასმა',cutError:'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ამოჭრის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+X).',copyError:'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ასლის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+C).',pasteMsg:'ჩასვით ამ არის შიგნით კლავიატურის გამოყენებით (<strong>Ctrl/Cmd+V</strong>) და დააჭირეთ OK-ს',securityMsg:'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა clipboard-ის მონაცემების წვდომის უფლებას. კიდევ უნდა ჩასვათ ტექსტი ამ ფანჯარაში.',pasteArea:'ჩასმის არე'},pastefromword:{confirmCleanup:'ჩასასმელი ტექსტი ვორდიდან გადმოტანილს გავს - გინდათ მისი წინასწარ გაწმენდა?',toolbar:'ვორდიდან ჩასმა',title:'ვორდიდან ჩასმა',error:'შიდა შეცდომის გამო ვერ მოხერხდა ტექსტის გაწმენდა'},pasteText:{button:'მხოლოდ ტექსტის ჩასმა',title:'მხოლოდ ტექსტის ჩასმა'},templates:{button:'თარგები',title:'თარგები',options:'თარგების პარამეტრები',insertOption:'მიმდინარე შეგთავსის შეცვლა',selectPromptMsg:'აირჩიეთ თარგი რედაქტორისთვის',emptyListMsg:'(თარგი არაა განსაზღვრული)'},showBlocks:'არეების ჩვენება',stylesCombo:{label:'სტილები',panelTitle:'ფორმატირების სტილები',panelTitle1:'არის სტილები',panelTitle2:'თანდართული სტილები',panelTitle3:'ობიექტის სტილები'},format:{label:'ფიორმატირება',panelTitle:'ფორმატირება',tag_p:'ჩვეულებრივი',tag_pre:'ფორმატირებული',tag_address:'მისამართი',tag_h1:'სათაური 1',tag_h2:'სათაური 2',tag_h3:'სათაური 3',tag_h4:'სათაური 4',tag_h5:'სათაური 5',tag_h6:'სათაური 6',tag_div:'ჩვეულებრივი (DIV)'},div:{title:'Div კონტეინერის შექმნა',toolbar:'Div კონტეინერის შექმნა',cssClassInputLabel:'CSS კლასები',styleSelectLabel:'სტილი',IdInputLabel:'Id',languageCodeInputLabel:'ენის კოდი',inlineStyleInputLabel:'თანდართული სტილი',advisoryTitleInputLabel:'სათაური',langDirLabel:'ენის მინართულება',langDirLTRLabel:'მარცხნიდან მარჯვნიც (LTR)',langDirRTLLabel:'მარჯვნიდან მარცხნივ (RTL)',edit:'Div-ის რედაქტირება',remove:'Div-ის წაშლა'},iframe:{title:'IFrame-ის პარამეტრები',toolbar:'IFrame',noUrl:'აკრიფეთ iframe-ის URL',scrolling:'გადახვევის ზოლების დაშვება',border:'ჩარჩოს გამოჩენა'},font:{label:'ფონტი',voiceLabel:'ფონტი',panelTitle:'ფონტის სახელი'},fontSize:{label:'ზომა',voiceLabel:'ტექსტის ზომა',panelTitle:'ტექსტის ზომა'},colorButton:{textColorTitle:'ტექსტის ფერი',bgColorTitle:'ფონის ფერი',panelTitle:'ფერები',auto:'ავტომატური',more:'მეტი ფერი...'},colors:{'000':'შავი',800000:'მუქი შინდისფერი','8B4513':'ყავისფერი','2F4F4F':'მოლურჯო ნაცრისფერი','008080':'ჩამქრალი ლურჯი','000080':'მუქი ლურჯი','4B0082':'იასამნისფერი',696969:'მუქი ნაცრისფერი',B22222:'აგურისფერი',A52A2A:'მუქი ყავისფერი',DAA520:'მოყვითალო','006400':'მუქი მწვანე','40E0D0':'ცისფერი','0000CD':'ზომიერად ლურჯი',800080:'იისფერი',808080:'ნაცრისფერი',F00:'წითელი',FF8C00:'მუქი სტაფილოსფერი',FFD700:'ოქროსფერი','008000':'მწვანე','0FF':'ღია ცისფერი','00F':'ლურჯი',EE82EE:'იისფერი',A9A9A9:'ბაცი ნაცრისფერი',FFA07A:'ჩამქრალი ვარდისფერი',FFA500:'სტაფილოსფერი',FFFF00:'ყვითელი','00FF00':'ლურჯი',AFEEEE:'ცისფერი',ADD8E6:'ღია ლურჯი',DDA0DD:'ღია იისფერი',D3D3D3:'ღია ნაცრისფერი',FFF0F5:'ღია ვარდისფერი',FAEBD7:'ღია ყავისფერი',FFFFE0:'ნათელი ყვითელი',F0FFF0:'ღია მწვანე',F0FFFF:'ღია ცისფერი 2',F0F8FF:'ღია ცისფერი 3',E6E6FA:'ღია იისფერი 2',FFF:'თეთრი'},scayt:{title:'მართლწერის შემოწმება კრეფისას',opera_title:'არაა მხარდაჭერილი Opera-ს მიერ',enable:'SCAYT-ის ჩართვა',disable:'SCAYT-ის გამორთვა',about:'SCAYT-ის შესახებ',toggle:'SCAYT-ის გადართვა',options:'პარამეტრები',langs:'ენები',moreSuggestions:'მეტი შემოთავაზება',ignore:'უგულებელყოფა',ignoreAll:'ყველას უგულებელყოფა',addWord:'სიტყვის დამატება',emptyDic:'ლექსიკონის სიტყვა არ უნდა იყოს ცარიელი.',optionsTab:'პარამეტრები',allCaps:'დიდი ასოებით დაწერილი სიტყვების უგულებელყოფა',ignoreDomainNames:'დომენური სახელების უგულებელყოფა',mixedCase:'შერეული ასოებანი სიტყვების უგულებელყოფა',mixedWithDigits:'ციფრებიანი სიტყვების უგულებელყოფა',languagesTab:'ენები',dictionariesTab:'ლექსიკონები',dic_field_name:'ლექსიკონის სახელი',dic_create:'შექმნა',dic_restore:'დაბრუნება',dic_delete:'წაშლა',dic_rename:'გადარქმევა',dic_info:'თავდაპირველად მომხმარებლის ლექსიკონი ინახება Cookie-ში. თუმცა Cookie შეზღუდულია ზომაში. როცა ლექსიკონის ზომა გაიზრდება საკმაოდ ის შეიძლება შევინახოთ ჩვენს სერვერზე. ჩვენს სერვერზე ლექსიკონს შესანახად უნდა მიუთითოთ მისი სახელი. თუ უკე გაქვთ ლექსიკონი, აკრიფეთ მისი სახელი და დააჭირეთ "დაბრუნების" ღილაკს.',aboutTab:'ინფორმაცია'},about:{title:'CKEditor-ის შესახებ',dlgTitle:'CKEditor-ის შესახებ',help:'დახმარებისთვის იხილეთ $1.',userGuide:'CKEditor-ის მომხმარებლის სახელმძღვანელო',moreInfo:'ლიცენზიის ინფორმაციისთვის ეწვიეთ ჩვენს საიტს:',copy:'Copyright © $1. ყველა უფლება დაცულია.'},maximize:'გადიდება',minimize:'დაპატარავება',fakeobjects:{anchor:'ღუზა',flash:'Flash ანიმაცია',iframe:'IFrame',hiddenfield:'მალული ველი',unknown:'უცნობი ობიექტი'},resize:'გაწიე ზომის შესაცვლელად',colordialog:{title:'ფერის შეცვლა',options:'ფერის პარამეტრები',highlight:'ჩვენება',selected:'არჩეული ფერი',clear:'გასუფთავება'},toolbarCollapse:'ხელსაწყოთა ზოლის შეწევა',toolbarExpand:'ხელსაწყოთა ზოლის გამოწევა',toolbarGroups:{document:'დოკუმენტი',clipboard:'Clipboard/გაუქმება',editing:'რედაქტირება',forms:'ფორმები',basicstyles:'ძირითადი სტილები',paragraph:'აბზაცი',links:'ბმულები',insert:'ჩასმა',styles:'სტილები',colors:'ფერები',tools:'ხელსაწყოები'},bidi:{ltr:'ტექსტის მიმართულება მარცხნიდან მარჯვნივ',rtl:'ტექსტის მიმართულება მარჯვნიდან მარცხნივ'},docprops:{label:'დოკუმენტის პარამეტრები',title:'დოკუმენტის პარამეტრები',design:'დიზაინი',meta:'მეტაTag-ები',chooseColor:'არჩევა',other:'სხვა...',docTitle:'გვერდის სათაური',charset:'კოდირება',charsetOther:'სხვა კოდირებები',charsetASCII:'ამერიკული (ASCII)',charsetCE:'ცენტრალურ ევროპული',charsetCT:'ტრადიციული ჩინური (Big5)',charsetCR:'კირილური',charsetGR:'ბერძნული',charsetJP:'იაპონური',charsetKR:'კორეული',charsetTR:'თურქული',charsetUN:'უნიკოდი (UTF-8)',charsetWE:'დასავლეთ ევროპული',docType:'დოკუმენტის ტიპი',docTypeOther:'სხვა ტიპის დოკუმენტი',xhtmlDec:'XHTML დეკლარაციების ჩართვა',bgColor:'ფონის ფერი',bgImage:'ფონური სურათის URL',bgFixed:'უმოძრაო (ფიქსირებული) ფონი',txtColor:'ტექსტის ფერი',margin:'გვერდის კიდეები',marginTop:'ზედა',marginLeft:'მარცხენა',marginRight:'მარჯვენა',marginBottom:'ქვედა',metaKeywords:'დოკუმენტის საკვანძო სიტყვები (მძიმით გამოყოფილი)',metaDescription:'დოკუმენტის აღწერა',metaAuthor:'ავტორი',metaCopyright:'Copyright',previewHtml:'<p>ეს არის <strong>საცდელი ტექსტი</strong>. თქვენ <a href="javascript:void(0)">CKEditor</a>-ით სარგებლობთ.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/km.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/km.js
new file mode 100755
index 0000000..b24faea
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/km.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.km={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'កូត',newPage:'ទំព័រថ្មី',save:'រក្សាទុក',preview:'មើលសាកល្បង',cut:'កាត់យក',copy:'ចំលងយក',paste:'ចំលងដាក់',print:'បោះពុម្ភ',underline:'ដិតបន្ទាត់ពីក្រោមអក្សរ',bold:'អក្សរដិតធំ',italic:'អក្សរផ្តេក',selectAll:'ជ្រើសរើសទាំងអស់',removeFormat:'លប់ចោល ការរចនា',strike:'ដិតបន្ទាត់ពាក់កណ្តាលអក្សរ',subscript:'អក្សរតូចក្រោម',superscript:'អក្សរតូចលើ',horizontalrule:'បន្ថែមបន្ទាត់ផ្តេក',pagebreak:'បន្ថែម ការផ្តាច់ទំព័រ',pagebreakAlt:'Page Break',unlink:'លប់ឈ្នាប់',undo:'សារឡើងវិញ',redo:'ធ្វើឡើងវិញ',common:{browseServer:'មើល',url:'URL',protocol:'ប្រូតូកូល',upload:'ទាញយក',uploadSubmit:'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា',image:'រូបភាព',flash:'Flash',form:'បែបបទ',checkbox:'ប្រអប់ជ្រើសរើស',radio:'ប៉ូតុនរង្វង់មូល',textField:'ជួរសរសេរអត្ថបទ',textarea:'តំបន់សរសេរអត្ថបទ',hiddenField:'ជួរលាក់',button:'ប៉ូតុន',select:'ជួរជ្រើសរើស',imageButton:'ប៉ូតុនរូបភាព',notSet:'<មិនមែន>',id:'Id',name:'ឈ្មោះ',langDir:'ទិសដៅភាសា',langDirLtr:'ពីឆ្វេងទៅស្តាំ(LTR)',langDirRtl:'ពីស្តាំទៅឆ្វេង(RTL)',langCode:'លេខកូតភាសា',longDescr:'អធិប្បាយ URL វែង',cssClass:'Stylesheet Classes',advisoryTitle:'ចំណងជើង ប្រឹក្សា',cssStyle:'ម៉ូត',ok:'យល់ព្រម',cancel:'មិនយល់ព្រម',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'កំរិតខ្ពស់',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'ទទឹង',height:'កំពស់',align:'កំណត់ទីតាំង',alignLeft:'ខាងឆ្វង',alignRight:'ខាងស្តាំ',alignCenter:'កណ្តាល',alignTop:'ខាងលើ',alignMiddle:'កណ្តាល',alignBottom:'ខាងក្រោម',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'បន្ថែមអក្សរពិសេស',title:'តូអក្សរពិសេស',options:'Special Character Options'},link:{toolbar:'បន្ថែម/កែប្រែ ឈ្នាប់',other:'<other>',menu:'កែប្រែឈ្នាប់',title:'ឈ្នាប់',info:'ពត៌មានអំពីឈ្នាប់',target:'គោលដៅ',upload:'ទាញយក',advanced:'កំរិតខ្ពស់',type:'ប្រភេទឈ្នាប់',toUrl:'URL',toAnchor:'យុថ្កានៅក្នុងទំព័រនេះ',toEmail:'អ៊ីមែល',targetFrame:'<ហ្វ្រេម>',targetPopup:'<វីនដូវ លោត>',targetFrameName:'ឈ្មោះហ្រ្វេមដែលជាគោលដៅ',targetPopupName:'ឈ្មោះវីនដូវលោត',popupFeatures:'លក្ខណះរបស់វីនដូលលោត',popupResizable:'Resizable',popupStatusBar:'របា ពត៌មាន',popupLocationBar:'របា ទីតាំង',popupToolbar:'របា ឩបករណ៍',popupMenuBar:'របា មឺនុយ',popupFullScreen:'អេក្រុងពេញ(IE)',popupScrollBars:'របា ទាញ',popupDependent:'អាស្រ័យលើ (Netscape)',popupLeft:'ទីតាំងខាងឆ្វេង',popupTop:'ទីតាំងខាងលើ',id:'Id',langDir:'ទិសដៅភាសា',langDirLTR:'ពីឆ្វេងទៅស្តាំ(LTR)',langDirRTL:'ពីស្តាំទៅឆ្វេង(RTL)',acccessKey:'ឃី សំរាប់ចូល',name:'ឈ្មោះ',langCode:'ទិសដៅភាសា',tabIndex:'លេខ Tab',advisoryTitle:'ចំណងជើង ប្រឹក្សា',advisoryContentType:'ប្រភេទអត្ថបទ ប្រឹក្សា',cssClasses:'Stylesheet Classes',charset:'លេខកូតអក្សររបស់ឈ្នាប់',styles:'ម៉ូត',rel:'Relationship',selectAnchor:'ជ្រើសរើសយុថ្កា',anchorName:'តាមឈ្មោះរបស់យុថ្កា',anchorId:'តាម Id',emailAddress:'អ៊ីមែល',emailSubject:'ចំណងជើងអត្ថបទ',emailBody:'អត្ថបទ',noAnchors:'(No anchors available in the document)',noUrl:'សូមសរសេរ អាស័យដ្ឋាន URL',noEmail:'សូមសរសេរ អាស័យដ្ឋាន អ៊ីមែល'},anchor:{toolbar:'បន្ថែម/កែប្រែ យុថ្កា',menu:'ការកំណត់យុថ្កា',title:'ការកំណត់យុថ្កា',name:'ឈ្មោះយុទ្ធថ្កា',errorName:'សូមសរសេរ ឈ្មោះយុទ្ធថ្កា',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'ស្វែងរក',replace:'ជំនួស',findWhat:'ស្វែងរកអ្វី:',replaceWith:'ជំនួសជាមួយ:',notFoundMsg:'ពាក្យនេះ រកមិនឃើញទេ ។',findOptions:'Find Options',matchCase:'ករណ៉ត្រូវរក',matchWord:'ត្រូវពាក្យទាំងអស់',matchCyclic:'Match cyclic',replaceAll:'ជំនួសទាំងអស់',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'តារាង',title:'ការកំណត់ តារាង',menu:'ការកំណត់ តារាង',deleteTable:'លប់តារាង',rows:'ជួរផ្តេក',columns:'ជួរឈរ',border:'ទំហំស៊ុម',widthPx:'ភីកសែល',widthPc:'ភាគរយ',widthUnit:'width unit',cellSpace:'គំលាតសែល',cellPad:'គែមសែល',caption:'ចំណងជើង',summary:'សេចក្តីសង្ខេប',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'លប់សែល',merge:'បញ្ជូលសែល',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'លប់ជួរផ្តេក'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'លប់ជួរឈរ'}},button:{title:'ការកំណត់ ប៉ូតុន',text:'អត្ថបទ(តំលៃ)',type:'ប្រភេទ',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'ការកំណត់ប្រអប់ជ្រើសរើស',radioTitle:'ការកំណត់ប៉ូតុនរង្វង់',value:'តំលៃ',selected:'បានជ្រើសរើស'},form:{title:'ការកំណត់បែបបទ',menu:'ការកំណត់បែបបទ',action:'សកម្មភាព',method:'វិធី',encoding:'Encoding'},select:{title:'ការកំណត់ជួរជ្រើសរើស',selectInfo:'ពត៌មាន',opAvail:'ការកំណត់ជ្រើសរើស ដែលអាចកំណត់បាន',value:'តំលៃ',size:'ទំហំ',lines:'បន្ទាត់',chkMulti:'អនុញ្ញាតអោយជ្រើសរើសច្រើន',opText:'ពាក្យ',opValue:'តំលៃ',btnAdd:'បន្ថែម',btnModify:'ផ្លាស់ប្តូរ',btnUp:'លើ',btnDown:'ក្រោម',btnSetValue:'Set as selected value',btnDelete:'លប់'},textarea:{title:'ការកំណត់កន្លែងសរសេរអត្ថបទ',cols:'ជូរឈរ',rows:'ជូរផ្តេក'},textfield:{title:'ការកំណត់ជួរអត្ថបទ',name:'ឈ្មោះ',value:'តំលៃ',charWidth:'ទទឹង អក្សរ',maxChars:'អក្សរអតិបរិមា',type:'ប្រភេទ',typeText:'ពាក្យ',typePass:'ពាក្យសំងាត់'},hidden:{title:'ការកំណត់ជួរលាក់',name:'ឈ្មោះ',value:'តំលៃ'},image:{title:'ការកំណត់រូបភាព',titleButton:'ការកំណត់ប៉ូតុនរូបភាព',menu:'ការកំណត់រូបភាព',infoTab:'ពត៌មានអំពីរូបភាព',btnUpload:'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា',upload:'ទាញយក',alt:'អត្ថបទជំនួស',lockRatio:'អត្រាឡុក',resetSize:'កំណត់ទំហំឡើងវិញ',border:'ស៊ុម',hSpace:'គំលាតទទឹង',vSpace:'គំលាតបណ្តោយ',alertUrl:'សូមសរសេរងាស័យដ្ឋានរបស់រូបភាព',linkTab:'ឈ្នាប់',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'ការកំណត់ Flash',propertiesTab:'Properties',title:'ការកំណត់ Flash',chkPlay:'លេងដោយស្វ័យប្រវត្ត',chkLoop:'ចំនួនដង',chkMenu:'បង្ហាញ មឺនុយរបស់ Flash',chkFull:'Allow Fullscreen',scale:'ទំហំ',scaleAll:'បង្ហាញទាំងអស់',scaleNoBorder:'មិនបង្ហាញស៊ុម',scaleFit:'ត្រូវល្មម',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'បន្ទាត់ជាមូលដ្ឋាន',alignTextTop:'លើអត្ថបទ',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'ពណ៌ផ្ទៃខាងក្រោយ',hSpace:'គំលាតទទឹង',vSpace:'គំលាតបណ្តោយ',validateSrc:'សូមសរសេរ អាស័យដ្ឋាន URL',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'ពិនិត្យអក្ខរាវិរុទ្ធ',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'គ្មានក្នុងវចនានុក្រម',changeTo:'ផ្លាស់ប្តូរទៅ',btnIgnore:'មិនផ្លាស់ប្តូរ',btnIgnoreAll:'មិនផ្លាស់ប្តូរ ទាំងអស់',btnReplace:'ជំនួស',btnReplaceAll:'ជំនួសទាំងអស់',btnUndo:'សារឡើងវិញ',noSuggestions:'- គ្មានសំណើរ -',progress:'កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...',noMispell:'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស',noChanges:'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ',oneChange:'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ',manyChanges:'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ',ieSpellDownload:'ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?'},smiley:{toolbar:'រូបភាព',title:'បញ្ជូលរូបភាព',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'បញ្ជីជាអក្សរ',bulletedlist:'បញ្ជីជារង្វង់មូល',indent:'បន្ថែមការចូលបន្ទាត់',outdent:'បន្ថយការចូលបន្ទាត់',justify:{left:'តំរឹមឆ្វេង',center:'តំរឹមកណ្តាល',right:'តំរឹមស្តាំ',block:'តំរឹមសងខាង'},blockquote:'Block Quote',clipboard:{title:'ចំលងដាក់',cutError:'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+X) ។',copyError:'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+C)។',pasteMsg:'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី (<STRONG>Ctrl/Cmd+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'ចំលងដាក់ពី Word',title:'ចំលងដាក់ពី Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'ចំលងដាក់អត្ថបទធម្មតា',title:'ចំលងដាក់អត្ថបទធម្មតា'},templates:{button:'ឯកសារគំរូ',title:'ឯកសារគំរូ របស់អត្ថន័យ',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីតាក់តែងអត្ថបទ<br>(អត្ថបទនឹងបាត់បង់):',emptyListMsg:'(ពុំមានឯកសារគំរូត្រូវបានកំណត់)'},showBlocks:'Show Blocks',stylesCombo:{label:'ម៉ូត',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'រចនា',panelTitle:'រចនា',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'ហ្វុង',voiceLabel:'Font',panelTitle:'ហ្វុង'},fontSize:{label:'ទំហំ',voiceLabel:'Font Size',panelTitle:'ទំហំ'},colorButton:{textColorTitle:'ពណ៌អក្សរ',bgColorTitle:'ពណ៌ផ្ទៃខាងក្រោយ',panelTitle:'Colors',auto:'ស្វ័យប្រវត្ត',more:'ពណ៌ផ្សេងទៀត..'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'ការកំណត់ ឯកសារ',title:'ការកំណត់ ឯកសារ',design:'Design',meta:'ទិន្នន័យមេ',chooseColor:'Choose',other:'<other>',docTitle:'ចំណងជើងទំព័រ',charset:'កំណត់លេខកូតភាសា',charsetOther:'កំណត់លេខកូតភាសាផ្សេងទៀត',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'ប្រភេទក្បាលទំព័រ',docTypeOther:'ប្រភេទក្បាលទំព័រផ្សេងទៀត',xhtmlDec:'បញ្ជូល XHTML',bgColor:'ពណ៌ខាងក្រោម',bgImage:'URL របស់រូបភាពខាងក្រោម',bgFixed:'ទំព័រក្រោមមិនប្តូរ',txtColor:'ពណ៌អក្សរ',margin:'ស៊ុមទំព័រ',marginTop:'លើ',marginLeft:'ឆ្វេង',marginRight:'ស្ដាំ',marginBottom:'ក្រោម',metaKeywords:'ពាក្យនៅក្នុងឯកសារ (ផ្តាច់ពីគ្នាដោយក្បៀស)',metaDescription:'សេចក្តីអត្ថាធិប្បាយអំពីឯកសារ',metaAuthor:'អ្នកនិពន្ធ',metaCopyright:'រក្សាសិទ្ធិ៏',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ko.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ko.js
new file mode 100755
index 0000000..ab4be57
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ko.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ko={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'소스',newPage:'새 문서',save:'저장하기',preview:'미리보기',cut:'잘라내기',copy:'복사하기',paste:'붙여넣기',print:'인쇄하기',underline:'밑줄',bold:'진하게',italic:'이텔릭',selectAll:'전체선택',removeFormat:'포맷 지우기',strike:'취소선',subscript:'아래 첨자',superscript:'위 첨자',horizontalrule:'수평선 삽입',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'링크 삭제',undo:'취소',redo:'재실행',common:{browseServer:'서버 보기',url:'URL',protocol:'프로토콜',upload:'업로드',uploadSubmit:'서버로 전송',image:'이미지',flash:'플래쉬',form:'폼',checkbox:'체크박스',radio:'라디오버튼',textField:'입력필드',textarea:'입력영역',hiddenField:'숨김필드',button:'버튼',select:'펼침목록',imageButton:'이미지버튼',notSet:'<설정되지 않음>',id:'ID',name:'Name',langDir:'쓰기 방향',langDirLtr:'왼쪽에서 오른쪽 (LTR)',langDirRtl:'오른쪽에서 왼쪽 (RTL)',langCode:'언어 코드',longDescr:'URL 설명',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'예',cancel:'아니오',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'자세히',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'너비',height:'높이',align:'정렬',alignLeft:'왼쪽',alignRight:'오른쪽',alignCenter:'가운데',alignTop:'위',alignMiddle:'중간',alignBottom:'아래',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'특수문자 삽입',title:'특수문자 선택',options:'Special Character Options'},link:{toolbar:'링크 삽입/변경',other:'<기타>',menu:'링크 수정',title:'링크',info:'링크 정보',target:'타겟',upload:'업로드',advanced:'자세히',type:'링크 종류',toUrl:'URL',toAnchor:'책갈피',toEmail:'이메일',targetFrame:'<프레임>',targetPopup:'<팝업창>',targetFrameName:'타겟 프레임 이름',targetPopupName:'팝업창 이름',popupFeatures:'팝업창 설정',popupResizable:'Resizable',popupStatusBar:'상태바',popupLocationBar:'주소표시줄',popupToolbar:'툴바',popupMenuBar:'메뉴바',popupFullScreen:'전체화면 (IE)',popupScrollBars:'스크롤바',popupDependent:'Dependent (Netscape)',popupLeft:'왼쪽 위치',popupTop:'윗쪽 위치',id:'Id',langDir:'쓰기 방향',langDirLTR:'왼쪽에서 오른쪽 (LTR)',langDirRTL:'오른쪽에서 왼쪽 (RTL)',acccessKey:'엑세스 키',name:'Name',langCode:'쓰기 방향',tabIndex:'탭 순서',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',rel:'Relationship',selectAnchor:'책갈피 선택',anchorName:'책갈피 이름',anchorId:'책갈피 ID',emailAddress:'이메일 주소',emailSubject:'제목',emailBody:'내용',noAnchors:'(문서에 책갈피가 없습니다.)',noUrl:'링크 URL을 입력하십시요.',noEmail:'이메일주소를 입력하십시요.'},anchor:{toolbar:'책갈피 삽입/변경',menu:'책갈피 속성',title:'책갈피 속성',name:'책갈피 이름',errorName:'책갈피 이름을 입력하십시요.',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'찾기 & 바꾸기',find:'찾기',replace:'바꾸기',findWhat:'찾을 문자열:',replaceWith:'바꿀 문자열:',notFoundMsg:'문자열을 찾을 수 없습니다.',findOptions:'Find Options',matchCase:'대소문자 구분',matchWord:'온전한 단어',matchCyclic:'Match cyclic',replaceAll:'모두 바꾸기',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'표',title:'표 설정',menu:'표 설정',deleteTable:'표 삭제',rows:'가로줄',columns:'세로줄',border:'테두리 크기',widthPx:'픽셀',widthPc:'퍼센트',widthUnit:'width unit',cellSpace:'셀 간격',cellPad:'셀 여백',caption:'캡션',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'셀/칸(Cell)',insertBefore:'앞에 셀/칸 삽입',insertAfter:'뒤에 셀/칸 삽입',deleteCell:'셀 삭제',merge:'셀 합치기',mergeRight:'오른쪽 뭉치기',mergeDown:'왼쪽 뭉치기',splitHorizontal:'수평 나누기',splitVertical:'수직 나누기',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'행(Row)',insertBefore:'앞에 행 삽입',insertAfter:'뒤에 행 삽입',deleteRow:'가로줄 삭제'},column:{menu:'열(Column)',insertBefore:'앞에 열 삽입',insertAfter:'뒤에 열 삽입',deleteColumn:'세로줄 삭제'}},button:{title:'버튼 속성',text:'버튼글자(값)',type:'버튼종류',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'체크박스 속성',radioTitle:'라디오버튼 속성',value:'값',selected:'선택됨'},form:{title:'폼 속성',menu:'폼 속성',action:'실행경로(Action)',method:'방법(Method)',encoding:'Encoding'},select:{title:'펼침목록 속성',selectInfo:'정보',opAvail:'선택옵션',value:'값',size:'세로크기',lines:'줄',chkMulti:'여러항목 선택 허용',opText:'이름',opValue:'값',btnAdd:'추가',btnModify:'변경',btnUp:'위로',btnDown:'아래로',btnSetValue:'선택된것으로 설정',btnDelete:'삭제'},textarea:{title:'입력영역 속성',cols:'칸수',rows:'줄수'},textfield:{title:'입력필드 속성',name:'이름',value:'값',charWidth:'글자 너비',maxChars:'최대 글자수',type:'종류',typeText:'문자열',typePass:'비밀번호'},hidden:{title:'숨김필드 속성',name:'이름',value:'값'},image:{title:'이미지 설정',titleButton:'이미지버튼 속성',menu:'이미지 설정',infoTab:'이미지 정보',btnUpload:'서버로 전송',upload:'업로드',alt:'이미지 설명',lockRatio:'비율 유지',resetSize:'원래 크기로',border:'테두리',hSpace:'수평여백',vSpace:'수직여백',alertUrl:'이미지 URL을 입력하십시요',linkTab:'링크',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'플래쉬 속성',propertiesTab:'Properties',title:'플래쉬 등록정보',chkPlay:'자동재생',chkLoop:'반복',chkMenu:'플래쉬메뉴 가능',chkFull:'Allow Fullscreen',scale:'영역',scaleAll:'모두보기',scaleNoBorder:'경계선없음',scaleFit:'영역자동조절',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'줄아래(Abs Bottom)',alignAbsMiddle:'줄중간(Abs Middle)',alignBaseline:'기준선',alignTextTop:'글자상단',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'배경 색상',hSpace:'수평여백',vSpace:'수직여백',validateSrc:'링크 URL을 입력하십시요.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'철자검사',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'사전에 없는 단어',changeTo:'변경할 단어',btnIgnore:'건너뜀',btnIgnoreAll:'모두 건너뜀',btnReplace:'변경',btnReplaceAll:'모두 변경',btnUndo:'취소',noSuggestions:'- 추천단어 없음 -',progress:'철자검사를 진행중입니다...',noMispell:'철자검사 완료: 잘못된 철자가 없습니다.',noChanges:'철자검사 완료: 변경된 단어가 없습니다.',oneChange:'철자검사 완료: 단어가 변경되었습니다.',manyChanges:'철자검사 완료: %1 단어가 변경되었습니다.',ieSpellDownload:'철자 검사기가 철치되지 않았습니다. 지금 다운로드하시겠습니까?'},smiley:{toolbar:'아이콘',title:'아이콘 삽입',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'순서있는 목록',bulletedlist:'순서없는 목록',indent:'들여쓰기',outdent:'내어쓰기',justify:{left:'왼쪽 정렬',center:'가운데 정렬',right:'오른쪽 정렬',block:'양쪽 맞춤'},blockquote:'Block Quote',clipboard:{title:'붙여넣기',cutError:'브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+X).',copyError:'브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+C).',pasteMsg:'키보드의 (<STRONG>Ctrl/Cmd+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.',securityMsg:'브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'MS Word 형식에서 붙여넣기',title:'MS Word 형식에서 붙여넣기',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'텍스트로 붙여넣기',title:'텍스트로 붙여넣기'},templates:{button:'템플릿',title:'내용 템플릿',options:'Template Options',insertOption:'현재 내용 바꾸기',selectPromptMsg:'에디터에서 사용할 템플릿을 선택하십시요.<br>(지금까지 작성된 내용은 사라집니다.):',emptyListMsg:'(템플릿이 없습니다.)'},showBlocks:'Show Blocks',stylesCombo:{label:'스타일',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'포맷',panelTitle:'포맷',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'폰트',voiceLabel:'Font',panelTitle:'폰트'},fontSize:{label:'글자 크기',voiceLabel:'Font Size',panelTitle:'글자 크기'},colorButton:{textColorTitle:'글자 색상',bgColorTitle:'배경 색상',panelTitle:'Colors',auto:'기본색상',more:'색상선택...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'문서 속성',title:'문서 속성',design:'Design',meta:'메타데이터',chooseColor:'Choose',other:'<기타>',docTitle:'페이지명',charset:'캐릭터셋 인코딩',charsetOther:'다른 캐릭터셋 인코딩',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'문서 헤드',docTypeOther:'다른 문서헤드',xhtmlDec:'XHTML 문서정의 포함',bgColor:'배경색상',bgImage:'배경이미지 URL',bgFixed:'스크롤되지않는 배경',txtColor:'글자 색상',margin:'페이지 여백',marginTop:'위',marginLeft:'왼쪽',marginRight:'오른쪽',marginBottom:'아래',metaKeywords:'문서 키워드 (콤마로 구분)',metaDescription:'문서 설명',metaAuthor:'작성자',metaCopyright:'저작권',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/lt.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/lt.js
new file mode 100755
index 0000000..1f870c1
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/lt.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.lt={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Redaktoriaus įrankiai',editor:'Pilnas redaktorius',source:'Šaltinis',newPage:'Naujas puslapis',save:'Išsaugoti',preview:'Peržiūra',cut:'Iškirpti',copy:'Kopijuoti',paste:'Įdėti',print:'Spausdinti',underline:'Pabrauktas',bold:'Pusjuodis',italic:'Kursyvas',selectAll:'Pažymėti viską',removeFormat:'Panaikinti formatą',strike:'Perbrauktas',subscript:'Apatinis indeksas',superscript:'Viršutinis indeksas',horizontalrule:'Įterpti horizontalią liniją',pagebreak:'Įterpti puslapių skirtuką',pagebreakAlt:'Puslapio skirtukas',unlink:'Panaikinti nuorodą',undo:'Atšaukti',redo:'Atstatyti',common:{browseServer:'Naršyti po serverį',url:'URL',protocol:'Protokolas',upload:'Siųsti',uploadSubmit:'Siųsti į serverį',image:'Vaizdas',flash:'Flash',form:'Forma',checkbox:'Žymimasis langelis',radio:'Žymimoji akutė',textField:'Teksto laukas',textarea:'Teksto sritis',hiddenField:'Nerodomas laukas',button:'Mygtukas',select:'Atrankos laukas',imageButton:'Vaizdinis mygtukas',notSet:'<nėra nustatyta>',id:'Id',name:'Vardas',langDir:'Teksto kryptis',langDirLtr:'Iš kairės į dešinę (LTR)',langDirRtl:'Iš dešinės į kairę (RTL)',langCode:'Kalbos kodas',longDescr:'Ilgas aprašymas URL',cssClass:'Stilių lentelės klasės',advisoryTitle:'Konsultacinė antraštė',cssStyle:'Stilius',ok:'OK',cancel:'Nutraukti',close:'Uždaryti',preview:'Peržiūrėti',generalTab:'Bendros savybės',advancedTab:'Papildomas',validateNumberFailed:'Ši reikšmė nėra skaičius.',confirmNewPage:'Visas neišsaugotas turinys bus prarastas. Ar tikrai norite įkrauti naują puslapį?',confirmCancel:'Kai kurie parametrai pasikeitė. Ar tikrai norite užverti langą?',options:'Parametrai',target:'Tikslinė nuoroda',targetNew:'Naujas langas (_blank)',targetTop:'Viršutinis langas (_top)',targetSelf:'Esamas langas (_self)',targetParent:'Paskutinis langas (_parent)',langDirLTR:'Iš kairės į dešinę (LTR)',langDirRTL:'Iš dešinės į kairę (RTL)',styles:'Stilius',cssClasses:'Stilių klasės',width:'Plotis',height:'Aukštis',align:'Lygiuoti',alignLeft:'Kairę',alignRight:'Dešinę',alignCenter:'Centrą',alignTop:'Viršūnę',alignMiddle:'Vidurį',alignBottom:'Apačią',invalidHeight:'Aukštis turi būti nurodytas skaičiais.',invalidWidth:'Plotis turi būti nurodytas skaičiais.',invalidCssLength:'Reikšmė nurodyta "%1" laukui, turi būti teigiamas skaičius su arba be tinkamo CSS matavimo vieneto (px, %, in, cm, mm, em, ex, pt arba pc).',invalidHtmlLength:'Reikšmė nurodyta "%1" laukui, turi būti teigiamas skaičius su arba be tinkamo HTML matavimo vieneto (px arba %).',invalidInlineStyle:'Reikšmė nurodyta vidiniame stiliuje turi būti sudaryta iš vieno šių reikšmių "vardas : reikšmė", atskirta kabliataškiais.',cssLengthTooltip:'Įveskite reikšmę pikseliais arba skaičiais su tinkamu CSS vienetu (px, %, in, cm, mm, em, ex, pt arba pc).',unavailable:'%1<span class="cke_accessibility">, netinkamas</span>'},contextmenu:{options:'Kontekstinio meniu parametrai'},specialChar:{toolbar:'Įterpti specialų simbolį',title:'Pasirinkite specialų simbolį',options:'Specialaus simbolio nustatymai'},link:{toolbar:'Įterpti/taisyti nuorodą',other:'<kitas>',menu:'Taisyti nuorodą',title:'Nuoroda',info:'Nuorodos informacija',target:'Paskirties vieta',upload:'Siųsti',advanced:'Papildomas',type:'Nuorodos tipas',toUrl:'Nuoroda',toAnchor:'Žymė šiame puslapyje',toEmail:'El.paštas',targetFrame:'<kadras>',targetPopup:'<išskleidžiamas langas>',targetFrameName:'Paskirties kadro vardas',targetPopupName:'Paskirties lango vardas',popupFeatures:'Išskleidžiamo lango savybės',popupResizable:'Kintamas dydis',popupStatusBar:'Būsenos juosta',popupLocationBar:'Adreso juosta',popupToolbar:'Mygtukų juosta',popupMenuBar:'Meniu juosta',popupFullScreen:'Visas ekranas (IE)',popupScrollBars:'Slinkties juostos',popupDependent:'Priklausomas (Netscape)',popupLeft:'Kairė pozicija',popupTop:'Viršutinė pozicija',id:'Id',langDir:'Teksto kryptis',langDirLTR:'Iš kairės į dešinę (LTR)',langDirRTL:'Iš dešinės į kairę (RTL)',acccessKey:'Prieigos raktas',name:'Vardas',langCode:'Teksto kryptis',tabIndex:'Tabuliavimo indeksas',advisoryTitle:'Konsultacinė antraštė',advisoryContentType:'Konsultacinio turinio tipas',cssClasses:'Stilių lentelės klasės',charset:'Susietų išteklių simbolių lentelė',styles:'Stilius',rel:'Sąsajos',selectAnchor:'Pasirinkite žymę',anchorName:'Pagal žymės vardą',anchorId:'Pagal žymės Id',emailAddress:'El.pašto adresas',emailSubject:'Žinutės tema',emailBody:'Žinutės turinys',noAnchors:'(Šiame dokumente žymių nėra)',noUrl:'Prašome įvesti nuorodos URL',noEmail:'Prašome įvesti el.pašto adresą'},anchor:{toolbar:'Įterpti/modifikuoti žymę',menu:'Žymės savybės',title:'Žymės savybės',name:'Žymės vardas',errorName:'Prašome įvesti žymės vardą',remove:'Pašalinti žymę'},list:{numberedTitle:'Skaitmeninio sąrašo nustatymai',bulletedTitle:'Ženklelinio sąrašo nustatymai',type:'Rūšis',start:'Pradžia',validateStartNumber:'Sąrašo pradžios skaitmuo turi būti sveikas skaičius.',circle:'Apskritimas',disc:'Diskas',square:'Kvadratas',none:'Niekas',notset:'<nenurodytas>',armenian:'Armėniški skaitmenys',georgian:'Gruziniški skaitmenys (an, ban, gan, t.t)',lowerRoman:'Mažosios Romėnų (i, ii, iii, iv, v, t.t)',upperRoman:'Didžiosios Romėnų (I, II, III, IV, V, t.t)',lowerAlpha:'Mažosios Alpha (a, b, c, d, e, t.t)',upperAlpha:'Didžiosios Alpha (A, B, C, D, E, t.t)',lowerGreek:'Mažosios Graikų (alpha, beta, gamma, t.t)',decimal:'Dešimtainis (1, 2, 3, t.t)',decimalLeadingZero:'Dešimtainis su nuliu priekyje (01, 02, 03, t.t)'},findAndReplace:{title:'Surasti ir pakeisti',find:'Rasti',replace:'Pakeisti',findWhat:'Surasti tekstą:',replaceWith:'Pakeisti tekstu:',notFoundMsg:'Nurodytas tekstas nerastas.',findOptions:'Paieškos nustatymai',matchCase:'Skirti didžiąsias ir mažąsias raides',matchWord:'Atitikti pilną žodį',matchCyclic:'Sutampantis cikliškumas',replaceAll:'Pakeisti viską',replaceSuccessMsg:'%1 sutapimas(ų) buvo pakeisti.'},table:{toolbar:'Lentelė',title:'Lentelės savybės',menu:'Lentelės savybės',deleteTable:'Šalinti lentelę',rows:'Eilutės',columns:'Stulpeliai',border:'Rėmelio dydis',widthPx:'taškais',widthPc:'procentais',widthUnit:'pločio vienetas',cellSpace:'Tarpas tarp langelių',cellPad:'Trapas nuo langelio rėmo iki teksto',caption:'Antraštė',summary:'Santrauka',headers:'Antraštės',headersNone:'Nėra',headersColumn:'Pirmas stulpelis',headersRow:'Pirma eilutė',headersBoth:'Abu',invalidRows:'Skaičius turi būti didesnis nei 0.',invalidCols:'Skaičius turi būti didesnis nei 0.',invalidBorder:'Reikšmė turi būti nurodyta skaičiumi.',invalidWidth:'Reikšmė turi būti nurodyta skaičiumi.',invalidHeight:'Reikšmė turi būti nurodyta skaičiumi.',invalidCellSpacing:'Reikšmė turi būti nurodyta skaičiumi.',invalidCellPadding:'Reikšmė turi būti nurodyta skaičiumi.',cell:{menu:'Langelis',insertBefore:'Įterpti langelį prieš',insertAfter:'Įterpti langelį po',deleteCell:'Šalinti langelius',merge:'Sujungti langelius',mergeRight:'Sujungti su dešine',mergeDown:'Sujungti su apačia',splitHorizontal:'Skaidyti langelį horizontaliai',splitVertical:'Skaidyti langelį vertikaliai',title:'Cell nustatymai',cellType:'Cell rūšis',rowSpan:'Eilučių Span',colSpan:'Stulpelių Span',wordWrap:'Sutraukti raides',hAlign:'Horizontalus lygiavimas',vAlign:'Vertikalus lygiavimas',alignBaseline:'Apatinė linija',bgColor:'Fono spalva',borderColor:'Rėmelio spalva',data:'Data',header:'Antraštė',yes:'Taip',no:'Ne',invalidWidth:'Reikšmė turi būti skaičius.',invalidHeight:'Reikšmė turi būti skaičius.',invalidRowSpan:'Reikšmė turi būti skaičius.',invalidColSpan:'Reikšmė turi būti skaičius.',chooseColor:'Pasirinkite'},row:{menu:'Eilutė',insertBefore:'Įterpti eilutę prieš',insertAfter:'Įterpti eilutę po',deleteRow:'Šalinti eilutes'},column:{menu:'Stulpelis',insertBefore:'Įterpti stulpelį prieš',insertAfter:'Įterpti stulpelį po',deleteColumn:'Šalinti stulpelius'}},button:{title:'Mygtuko savybės',text:'Tekstas (Reikšmė)',type:'Tipas',typeBtn:'Mygtukas',typeSbm:'Siųsti',typeRst:'Išvalyti'},checkboxAndRadio:{checkboxTitle:'Žymimojo langelio savybės',radioTitle:'Žymimosios akutės savybės',value:'Reikšmė',selected:'Pažymėtas'},form:{title:'Formos savybės',menu:'Formos savybės',action:'Veiksmas',method:'Metodas',encoding:'Kodavimas'},select:{title:'Atrankos lauko savybės',selectInfo:'Informacija',opAvail:'Galimos parinktys',value:'Reikšmė',size:'Dydis',lines:'eilučių',chkMulti:'Leisti daugeriopą atranką',opText:'Tekstas',opValue:'Reikšmė',btnAdd:'Įtraukti',btnModify:'Modifikuoti',btnUp:'Aukštyn',btnDown:'Žemyn',btnSetValue:'Laikyti pažymėta reikšme',btnDelete:'Trinti'},textarea:{title:'Teksto srities savybės',cols:'Ilgis',rows:'Plotis'},textfield:{title:'Teksto lauko savybės',name:'Vardas',value:'Reikšmė',charWidth:'Ilgis simboliais',maxChars:'Maksimalus simbolių skaičius',type:'Tipas',typeText:'Tekstas',typePass:'Slaptažodis'},hidden:{title:'Nerodomo lauko savybės',name:'Vardas',value:'Reikšmė'},image:{title:'Vaizdo savybės',titleButton:'Vaizdinio mygtuko savybės',menu:'Vaizdo savybės',infoTab:'Vaizdo informacija',btnUpload:'Siųsti į serverį',upload:'Nusiųsti',alt:'Alternatyvus Tekstas',lockRatio:'Išlaikyti proporciją',resetSize:'Atstatyti dydį',border:'Rėmelis',hSpace:'Hor.Erdvė',vSpace:'Vert.Erdvė',alertUrl:'Prašome įvesti vaizdo URL',linkTab:'Nuoroda',button2Img:'Ar norite mygtuką paversti paprastu paveiksliuku?',img2Button:'Ar norite paveiksliuką paversti mygtuku?',urlMissing:'Paveiksliuko nuorodos nėra.',validateBorder:'Reikšmė turi būti sveikas skaičius.',validateHSpace:'Reikšmė turi būti sveikas skaičius.',validateVSpace:'Reikšmė turi būti sveikas skaičius.'},flash:{properties:'Flash savybės',propertiesTab:'Nustatymai',title:'Flash savybės',chkPlay:'Automatinis paleidimas',chkLoop:'Ciklas',chkMenu:'Leisti Flash meniu',chkFull:'Leisti per visą ekraną',scale:'Mastelis',scaleAll:'Rodyti visą',scaleNoBorder:'Be rėmelio',scaleFit:'Tikslus atitikimas',access:'Skripto priėjimas',accessAlways:'Visada',accessSameDomain:'Tas pats domenas',accessNever:'Niekada',alignAbsBottom:'Absoliučią apačią',alignAbsMiddle:'Absoliutų vidurį',alignBaseline:'Apatinę liniją',alignTextTop:'Teksto viršūnę',quality:'Kokybė',qualityBest:'Geriausia',qualityHigh:'Gera',qualityAutoHigh:'Automatiškai Gera',qualityMedium:'Vidutinė',qualityAutoLow:'Automatiškai Žema',qualityLow:'Žema',windowModeWindow:'Langas',windowModeOpaque:'Nepermatomas',windowModeTransparent:'Permatomas',windowMode:'Lango režimas',flashvars:'Flash kintamieji',bgcolor:'Fono spalva',hSpace:'Hor.Erdvė',vSpace:'Vert.Erdvė',validateSrc:'Prašome įvesti nuorodos URL',validateHSpace:'HSpace turi būti skaičius.',validateVSpace:'VSpace turi būti skaičius.'},spellCheck:{toolbar:'Rašybos tikrinimas',title:'Tikrinti klaidas',notAvailable:'Atleiskite, šiuo metu servisas neprieinamas.',errorLoading:'Klaida įkraunant servisą: %s.',notInDic:'Žodyne nerastas',changeTo:'Pakeisti į',btnIgnore:'Ignoruoti',btnIgnoreAll:'Ignoruoti visus',btnReplace:'Pakeisti',btnReplaceAll:'Pakeisti visus',btnUndo:'Atšaukti',noSuggestions:'- Nėra pasiūlymų -',progress:'Vyksta rašybos tikrinimas...',noMispell:'Rašybos tikrinimas baigtas: Nerasta rašybos klaidų',noChanges:'Rašybos tikrinimas baigtas: Nėra pakeistų žodžių',oneChange:'Rašybos tikrinimas baigtas: Vienas žodis pakeistas',manyChanges:'Rašybos tikrinimas baigtas: Pakeista %1 žodžių',ieSpellDownload:'Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?'},smiley:{toolbar:'Veideliai',title:'Įterpti veidelį',options:'Šypsenėlių nustatymai'},elementsPath:{eleLabel:'Elemento kelias',eleTitle:'%1 elementas'},numberedlist:'Numeruotas sąrašas',bulletedlist:'Suženklintas sąrašas',indent:'Padidinti įtrauką',outdent:'Sumažinti įtrauką',justify:{left:'Lygiuoti kairę',center:'Centruoti',right:'Lygiuoti dešinę',block:'Lygiuoti abi puses'},blockquote:'Citata',clipboard:{title:'Įdėti',cutError:'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+X).',copyError:'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+C).',pasteMsg:'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl/Cmd+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.',securityMsg:'Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.',pasteArea:'Įkelti dalį'},pastefromword:{confirmCleanup:'Tekstas, kurį įkeliate yra kopijuojamas iš Word. Ar norite jį išvalyti prieš įkeliant?',toolbar:'Įdėti iš Word',title:'Įdėti iš Word',error:'Dėl vidinių sutrikimų, nepavyko išvalyti įkeliamo teksto'},pasteText:{button:'Įdėti kaip gryną tekstą',title:'Įdėti kaip gryną tekstą'},templates:{button:'Šablonai',title:'Turinio šablonai',options:'Template Options',insertOption:'Pakeisti dabartinį turinį pasirinktu šablonu',selectPromptMsg:'Pasirinkite norimą šabloną<br>(<b>Dėmesio!</b> esamas turinys bus prarastas):',emptyListMsg:'(Šablonų sąrašas tuščias)'},showBlocks:'Rodyti blokus',stylesCombo:{label:'Stilius',panelTitle:'Stilių formatavimas',panelTitle1:'Blokų stiliai',panelTitle2:'Vidiniai stiliai',panelTitle3:'Objektų stiliai'},format:{label:'Šrifto formatas',panelTitle:'Šrifto formatas',tag_p:'Normalus',tag_pre:'Formuotas',tag_address:'Kreipinio',tag_h1:'Antraštinis 1',tag_h2:'Antraštinis 2',tag_h3:'Antraštinis 3',tag_h4:'Antraštinis 4',tag_h5:'Antraštinis 5',tag_h6:'Antraštinis 6',tag_div:'Normalus (DIV)'},div:{title:'Sukurti Div elementą',toolbar:'Sukurti Div elementą',cssClassInputLabel:'Stilių klasės',styleSelectLabel:'Stilius',IdInputLabel:'Id',languageCodeInputLabel:' Kalbos kodas',inlineStyleInputLabel:'Vidiniai stiliai',advisoryTitleInputLabel:'Patariamas pavadinimas',langDirLabel:'Kalbos nurodymai',langDirLTRLabel:'Iš kairės į dešinę (LTR)',langDirRTLLabel:'Iš dešinės į kairę (RTL)',edit:'Redaguoti Div',remove:'Pašalinti Div'},iframe:{title:'IFrame nustatymai',toolbar:'IFrame',noUrl:'Nurodykite iframe nuorodą',scrolling:'Įjungti slankiklius',border:'Rodyti rėmelį'},font:{label:'Šriftas',voiceLabel:'Šriftas',panelTitle:'Šriftas'},fontSize:{label:'Šrifto dydis',voiceLabel:'Šrifto dydis',panelTitle:'Šrifto dydis'},colorButton:{textColorTitle:'Teksto spalva',bgColorTitle:'Fono spalva',panelTitle:'Spalva',auto:'Automatinis',more:'Daugiau spalvų...'},colors:{'000':'Juoda',800000:'Kaštoninė','8B4513':'Tamsiai ruda','2F4F4F':'Pilka tamsaus šiferio','008080':'Teal','000080':'Karinis','4B0082':'Indigo',696969:'Tamsiai pilka',B22222:'Ugnies',A52A2A:'Ruda',DAA520:'Aukso','006400':'Tamsiai žalia','40E0D0':'Turquoise','0000CD':'Vidutinė mėlyna',800080:'Violetinė',808080:'Pilka',F00:'Raudona',FF8C00:'Tamsiai oranžinė',FFD700:'Auksinė','008000':'Žalia','0FF':'Žydra','00F':'Mėlyna',EE82EE:'Violetinė',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Oranžinė',FFFF00:'Geltona','00FF00':'Citrinų',AFEEEE:'Pale Turquoise',ADD8E6:'Šviesiai mėlyna',DDA0DD:'Plum',D3D3D3:'Šviesiai pilka',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Šviesiai geltona',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'Balta'},scayt:{title:'Tikrinti klaidas kai rašoma',opera_title:'Nepalaikoma naršyklėje Opera',enable:'Įjungti SCAYT',disable:'Išjungti SCAYT',about:'Apie SCAYT',toggle:'Perjungti SCAYT',options:'Parametrai',langs:'Kalbos',moreSuggestions:'Daugiau patarimų',ignore:'Ignoruoti',ignoreAll:'Ignoruoti viską',addWord:'Pridėti žodį',emptyDic:'Žodyno vardas neturėtų būti tuščias.',optionsTab:'Parametrai',allCaps:'Ignoruoti visas didžiąsias raides',ignoreDomainNames:'Ignoruoti domenų vardus',mixedCase:'Ignoruoti maišyto dydžio raides',mixedWithDigits:'Ignoruoti raides su skaičiais',languagesTab:'Kalbos',dictionariesTab:'Žodynai',dic_field_name:'Žodyno pavadinimas',dic_create:'Sukurti',dic_restore:'Atstatyti',dic_delete:'Ištrinti',dic_rename:'Pervadinti',dic_info:'Paprastai žodynas yra saugojamas sausainėliuose (cookies), kurių dydis, bet kokiu atveju, yra apribotas. Esant sausainėlių apimties pervišiui, viskas bus saugoma serveryje. Jei norite iš kart viską saugoti serveryje, turite sugalvoti žodynui pavadinimą. Jei jau turite žodyną, įrašykite pavadinimą ir nuspauskite Atstatyti mygtuką.',aboutTab:'Apie'},about:{title:'Apie CKEditor',dlgTitle:'Apie CKEditor',help:'Patikrinkite $1 dėl pagalbos.',userGuide:'CKEditor Vartotojo Gidas',moreInfo:'Dėl licencijavimo apsilankykite mūsų svetainėje:',copy:'Copyright © $1. Visos teiss saugomos.'},maximize:'Išdidinti',minimize:'Sumažinti',fakeobjects:{anchor:'Žymė',flash:'Flash animacija',iframe:'IFrame',hiddenfield:'Paslėptas laukas',unknown:'Nežinomas objektas'},resize:'Pavilkite, kad pakeistumėte dydį',colordialog:{title:'Pasirinkite spalvą',options:'Spalvos nustatymai',highlight:'Paryškinti',selected:'Pasirinkta spalva',clear:'Išvalyti'},toolbarCollapse:'Apjungti įrankių juostą',toolbarExpand:'Išplėsti įrankių juostą',toolbarGroups:{document:'Dokumentas',clipboard:'Atmintinė/Atgal',editing:'Redagavimas',forms:'Formos',basicstyles:'Pagrindiniai stiliai',paragraph:'Paragrafas',links:'Nuorodos',insert:'Įterpti',styles:'Stiliai',colors:'Spalvos',tools:'Įrankiai'},bidi:{ltr:'Tekstas iš kairės į dešinę',rtl:'Tekstas iš dešinės į kairę'},docprops:{label:'Dokumento savybės',title:'Dokumento savybės',design:'Išdėstymas',meta:'Meta duomenys',chooseColor:'Pasirinkite',other:'<kitas>',docTitle:'Puslapio antraštė',charset:'Simbolių kodavimo lentelė',charsetOther:'Kita simbolių kodavimo lentelė',charsetASCII:'ASCII',charsetCE:'Centrinės Europos',charsetCT:'Tradicinės kinų (Big5)',charsetCR:'Kirilica',charsetGR:'Graikų',charsetJP:'Japonų',charsetKR:'Korėjiečių',charsetTR:'Turkų',charsetUN:'Unikodas (UTF-8)',charsetWE:'Vakarų Europos',docType:'Dokumento tipo antraštė',docTypeOther:'Kita dokumento tipo antraštė',xhtmlDec:'Įtraukti XHTML deklaracijas',bgColor:'Fono spalva',bgImage:'Fono paveikslėlio nuoroda (URL)',bgFixed:'Neslenkantis fonas',txtColor:'Teksto spalva',margin:'Puslapio kraštinės',marginTop:'Viršuje',marginLeft:'Kairėje',marginRight:'Dešinėje',marginBottom:'Apačioje',metaKeywords:'Dokumento indeksavimo raktiniai žodžiai (atskirti kableliais)',metaDescription:'Dokumento apibūdinimas',metaAuthor:'Autorius',metaCopyright:'Autorinės teisės',previewHtml:'<p>Tai yra <strong>pavyzdinis tekstas</strong>. Jūs naudojate <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/lv.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/lv.js
new file mode 100755
index 0000000..f81fd19
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/lv.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.lv={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'HTML kods',newPage:'Jauna lapa',save:'Saglabāt',preview:'Pārskatīt',cut:'Izgriezt',copy:'Kopēt',paste:'Ievietot',print:'Drukāt',underline:'Apakšsvītra',bold:'Treknu šriftu',italic:'Slīprakstā',selectAll:'Iezīmēt visu',removeFormat:'Noņemt stilus',strike:'Pārsvītrots',subscript:'Zemrakstā',superscript:'Augšrakstā',horizontalrule:'Ievietot horizontālu Atdalītājsvītru',pagebreak:'Ievietot lapas pārtraukumu',pagebreakAlt:'Page Break',unlink:'Noņemt hipersaiti',undo:'Atcelt',redo:'Atkārtot',common:{browseServer:'Skatīt servera saturu',url:'URL',protocol:'Protokols',upload:'Augšupielādēt',uploadSubmit:'Nosūtīt serverim',image:'Attēls',flash:'Flash',form:'Forma',checkbox:'Atzīmēšanas kastīte',radio:'Izvēles poga',textField:'Teksta rinda',textarea:'Teksta laukums',hiddenField:'Paslēpta teksta rinda',button:'Poga',select:'Iezīmēšanas lauks',imageButton:'Attēlpoga',notSet:'<nav iestatīts>',id:'Id',name:'Nosaukums',langDir:'Valodas lasīšanas virziens',langDirLtr:'No kreisās uz labo (LTR)',langDirRtl:'No labās uz kreiso (RTL)',langCode:'Valodas kods',longDescr:'Gara apraksta Hipersaite',cssClass:'Stilu saraksta klases',advisoryTitle:'Konsultatīvs virsraksts',cssStyle:'Stils',ok:'Darīts!',cancel:'Atcelt',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Izvērstais',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Platums',height:'Augstums',align:'Nolīdzināt',alignLeft:'Pa kreisi',alignRight:'Pa labi',alignCenter:'Centrēti',alignTop:'Augšā',alignMiddle:'Vertikāli centrēts',alignBottom:'Apakšā',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Ievietot speciālo simbolu',title:'Ievietot īpašu simbolu',options:'Special Character Options'},link:{toolbar:'Ievietot/Labot hipersaiti',other:'<cits>',menu:'Labot hipersaiti',title:'Hipersaite',info:'Hipersaites informācija',target:'Mērķis',upload:'Augšupielādēt',advanced:'Izvērstais',type:'Hipersaites tips',toUrl:'URL',toAnchor:'Iezīme šajā lapā',toEmail:'E-pasts',targetFrame:'<ietvars>',targetPopup:'<uznirstošā logā>',targetFrameName:'Mērķa ietvara nosaukums',targetPopupName:'Uznirstošā loga nosaukums',popupFeatures:'Uznirstošā loga nosaukums īpašības',popupResizable:'Resizable',popupStatusBar:'Statusa josla',popupLocationBar:'Atrašanās vietas josla',popupToolbar:'Rīku josla',popupMenuBar:'Izvēlnes josla',popupFullScreen:'Pilnā ekrānā (IE)',popupScrollBars:'Ritjoslas',popupDependent:'Atkarīgs (Netscape)',popupLeft:'Kreisā koordināte',popupTop:'Augšējā koordināte',id:'Id',langDir:'Valodas lasīšanas virziens',langDirLTR:'No kreisās uz labo (LTR)',langDirRTL:'No labās uz kreiso (RTL)',acccessKey:'Pieejas kods',name:'Nosaukums',langCode:'Valodas lasīšanas virziens',tabIndex:'Ciļņu indekss',advisoryTitle:'Konsultatīvs virsraksts',advisoryContentType:'Konsultatīvs satura tips',cssClasses:'Stilu saraksta klases',charset:'Pievienotā resursa kodu tabula',styles:'Stils',rel:'Relationship',selectAnchor:'Izvēlēties iezīmi',anchorName:'Pēc iezīmes nosaukuma',anchorId:'Pēc elementa ID',emailAddress:'E-pasta adrese',emailSubject:'Ziņas tēma',emailBody:'Ziņas saturs',noAnchors:'(Šajā dokumentā nav iezīmju)',noUrl:'Lūdzu norādi hipersaiti',noEmail:'Lūdzu norādi e-pasta adresi'},anchor:{toolbar:'Ievietot/Labot iezīmi',menu:'Iezīmes īpašības',title:'Iezīmes īpašības',name:'Iezīmes nosaukums',errorName:'Lūdzu norādiet iezīmes nosaukumu',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Meklēt',replace:'Nomainīt',findWhat:'Meklēt:',replaceWith:'Nomainīt uz:',notFoundMsg:'Norādītā frāze netika atrasta.',findOptions:'Find Options',matchCase:'Reģistrjūtīgs',matchWord:'Jāsakrīt pilnībā',matchCyclic:'Match cyclic',replaceAll:'Aizvietot visu',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabula',title:'Tabulas īpašības',menu:'Tabulas īpašības',deleteTable:'Dzēst tabulu',rows:'Rindas',columns:'Kolonnas',border:'Rāmja izmērs',widthPx:'pikseļos',widthPc:'procentuāli',widthUnit:'width unit',cellSpace:'Rūtiņu atstatums',cellPad:'Rūtiņu nobīde',caption:'Leģenda',summary:'Anotācija',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Šūna',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Dzēst rūtiņas',merge:'Apvienot rūtiņas',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rinda',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Dzēst rindas'},column:{menu:'Kolonna',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Dzēst kolonnas'}},button:{title:'Pogas īpašības',text:'Teksts (vērtība)',type:'Tips',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Atzīmēšanas kastītes īpašības',radioTitle:'Izvēles poga īpašības',value:'Vērtība',selected:'Iezīmēts'},form:{title:'Formas īpašības',menu:'Formas īpašības',action:'Darbība',method:'Metode',encoding:'Encoding'},select:{title:'Iezīmēšanas lauka īpašības',selectInfo:'Informācija',opAvail:'Pieejamās iespējas',value:'Vērtība',size:'Izmērs',lines:'rindas',chkMulti:'Atļaut vairākus iezīmējumus',opText:'Teksts',opValue:'Vērtība',btnAdd:'Pievienot',btnModify:'Veikt izmaiņas',btnUp:'Augšup',btnDown:'Lejup',btnSetValue:'Noteikt kā iezīmēto vērtību',btnDelete:'Dzēst'},textarea:{title:'Teksta laukuma īpašības',cols:'Kolonnas',rows:'Rindas'},textfield:{title:'Teksta rindas īpašības',name:'Nosaukums',value:'Vērtība',charWidth:'Simbolu platums',maxChars:'Simbolu maksimālais daudzums',type:'Tips',typeText:'Teksts',typePass:'Parole'},hidden:{title:'Paslēptās teksta rindas īpašības',name:'Nosaukums',value:'Vērtība'},image:{title:'Attēla īpašības',titleButton:'Attēlpogas īpašības',menu:'Attēla īpašības',infoTab:'Informācija par attēlu',btnUpload:'Nosūtīt serverim',upload:'Augšupielādēt',alt:'Alternatīvais teksts',lockRatio:'Nemainīga Augstuma/Platuma attiecība',resetSize:'Atjaunot sākotnējo izmēru',border:'Rāmis',hSpace:'Horizontālā telpa',vSpace:'Vertikālā telpa',alertUrl:'Lūdzu norādīt attēla hipersaiti',linkTab:'Hipersaite',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash īpašības',propertiesTab:'Properties',title:'Flash īpašības',chkPlay:'Automātiska atskaņošana',chkLoop:'Nepārtraukti',chkMenu:'Atļaut Flash izvēlni',chkFull:'Allow Fullscreen',scale:'Mainīt izmēru',scaleAll:'Rādīt visu',scaleNoBorder:'Bez rāmja',scaleFit:'Precīzs izmērs',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Absolūti apakšā',alignAbsMiddle:'Absolūti vertikāli centrēts',alignBaseline:'Pamatrindā',alignTextTop:'Teksta augšā',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Fona krāsa',hSpace:'Horizontālā telpa',vSpace:'Vertikālā telpa',validateSrc:'Lūdzu norādi hipersaiti',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Pareizrakstības pārbaude',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Netika atrasts vārdnīcā',changeTo:'Nomainīt uz',btnIgnore:'Ignorēt',btnIgnoreAll:'Ignorēt visu',btnReplace:'Aizvietot',btnReplaceAll:'Aizvietot visu',btnUndo:'Atcelt',noSuggestions:'- Nav ieteikumu -',progress:'Notiek pareizrakstības pārbaude...',noMispell:'Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas',noChanges:'Pareizrakstības pārbaude pabeigta: nekas netika labots',oneChange:'Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts',manyChanges:'Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti',ieSpellDownload:'Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?'},smiley:{toolbar:'Smaidiņi',title:'Ievietot smaidiņu',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Numurēts saraksts',bulletedlist:'Izcelts saraksts',indent:'Palielināt atkāpi',outdent:'Samazināt atkāpi',justify:{left:'Izlīdzināt pa kreisi',center:'Izlīdzināt pret centru',right:'Izlīdzināt pa labi',block:'Izlīdzināt malas'},blockquote:'Block Quote',clipboard:{title:'Ievietot',cutError:'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+X, lai veiktu šo darbību.',copyError:'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+C), lai veiktu šo darbību.',pasteMsg:'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl/Cmd+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Ievietot no Worda',title:'Ievietot no Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Ievietot kā vienkāršu tekstu',title:'Ievietot kā vienkāršu tekstu'},templates:{button:'Sagataves',title:'Satura sagataves',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Lūdzu, norādiet sagatavi, ko atvērt editorā<br>(patreizējie dati tiks zaudēti):',emptyListMsg:'(Nav norādītas sagataves)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stils',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formāts',panelTitle:'Formāts',tag_p:'Normāls teksts',tag_pre:'Formatēts teksts',tag_address:'Adrese',tag_h1:'Virsraksts 1',tag_h2:'Virsraksts 2',tag_h3:'Virsraksts 3',tag_h4:'Virsraksts 4',tag_h5:'Virsraksts 5',tag_h6:'Virsraksts 6',tag_div:'Rindkopa (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Šrifts',voiceLabel:'Font',panelTitle:'Šrifts'},fontSize:{label:'Izmērs',voiceLabel:'Font Size',panelTitle:'Izmērs'},colorButton:{textColorTitle:'Teksta krāsa',bgColorTitle:'Fona krāsa',panelTitle:'Colors',auto:'Automātiska',more:'Plašāka palete...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Dokumenta īpašības',title:'Dokumenta īpašības',design:'Design',meta:'META dati',chooseColor:'Choose',other:'<cits>',docTitle:'Dokumenta virsraksts <Title>',charset:'Simbolu kodējums',charsetOther:'Cits simbolu kodējums',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Dokumenta tips',docTypeOther:'Cits dokumenta tips',xhtmlDec:'Ietvert XHTML deklarācijas',bgColor:'Fona krāsa',bgImage:'Fona attēla hipersaite',bgFixed:'Fona attēls ir fiksēts',txtColor:'Teksta krāsa',margin:'Lapas robežas',marginTop:'Augšā',marginLeft:'Pa kreisi',marginRight:'Pa labi',marginBottom:'Apakšā',metaKeywords:'Dokumentu aprakstoši atslēgvārdi (atdalīti ar komatu)',metaDescription:'Dokumenta apraksts',metaAuthor:'Autors',metaCopyright:'Autortiesības',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/mk.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/mk.js
new file mode 100755
index 0000000..e390d48
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/mk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.mk={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Width',height:'Height',align:'Alignment',alignLeft:'Left',alignRight:'Right',alignCenter:'Center',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupLeft:'Left Position',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',rel:'Relationship',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',findOptions:'Find Options',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignTextTop:'Text Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background color',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Align Left',center:'Center',right:'Align Right',block:'Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Color',bgColorTitle:'Background Color',panelTitle:'Colors',auto:'Automatic',more:'More Colors...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Document Properties',title:'Document Properties',design:'Design',meta:'Meta Tags',chooseColor:'Choose',other:'Other...',docTitle:'Page Title',charset:'Character Set Encoding',charsetOther:'Other Character Set Encoding',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Document Type Heading',docTypeOther:'Other Document Type Heading',xhtmlDec:'Include XHTML Declarations',bgColor:'Background Color',bgImage:'Background Image URL',bgFixed:'Non-scrolling (Fixed) Background',txtColor:'Text Color',margin:'Page Margins',marginTop:'Top',marginLeft:'Left',marginRight:'Right',marginBottom:'Bottom',metaKeywords:'Document Indexing Keywords (comma separated)',metaDescription:'Document Description',metaAuthor:'Author',metaCopyright:'Copyright',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/mn.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/mn.js
new file mode 100755
index 0000000..197cef3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/mn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.mn={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Код',newPage:'Шинэ хуудас',save:'Хадгалах',preview:'Уридчлан харах',cut:'Хайчлах',copy:'Хуулах',paste:'Буулгах',print:'Хэвлэх',underline:'Доогуур нь зураастай болгох',bold:'Тод бүдүүн',italic:'Налуу',selectAll:'Бүгдийг нь сонгох',removeFormat:'Формат авч хаях',strike:'Дундуур нь зураастай болгох',subscript:'Суурь болгох',superscript:'Зэрэг болгох',horizontalrule:'Хөндлөн зураас оруулах',pagebreak:'Хуудас тусгаарлагч оруулах',pagebreakAlt:'Page Break',unlink:'Линк авч хаях',undo:'Хүчингүй болгох',redo:'Өмнөх үйлдлээ сэргээх',common:{browseServer:'Сервер харуулах',url:'URL',protocol:'Протокол',upload:'Хуулах',uploadSubmit:'Үүнийг сервэррүү илгээ',image:'Зураг',flash:'Флаш',form:'Форм',checkbox:'Чекбокс',radio:'Радио товч',textField:'Техт талбар',textarea:'Техт орчин',hiddenField:'Нууц талбар',button:'Товч',select:'Сонгогч талбар',imageButton:'Зурагтай товч',notSet:'<Оноохгүй>',id:'Id',name:'Нэр',langDir:'Хэлний чиглэл',langDirLtr:'Зүүнээс баруун (LTR)',langDirRtl:'Баруунаас зүүн (RTL)',langCode:'Хэлний код',longDescr:'URL-ын тайлбар',cssClass:'Stylesheet классууд',advisoryTitle:'Зөвлөлдөх гарчиг',cssStyle:'Загвар',ok:'OK',cancel:'Болих',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Нэмэлт',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Өргөн',height:'Өндөр',align:'Эгнээ',alignLeft:'Зүүн',alignRight:'Баруун',alignCenter:'Төвд',alignTop:'Дээд талд',alignMiddle:'Дунд талд',alignBottom:'Доод талд',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Онцгой тэмдэгт оруулах',title:'Онцгой тэмдэгт сонгох',options:'Special Character Options'},link:{toolbar:'Линк Оруулах/Засварлах',other:'<other>',menu:'Холбоос засварлах',title:'Линк',info:'Линкийн мэдээлэл',target:'Байрлал',upload:'Хуулах',advanced:'Нэмэлт',type:'Линкийн төрөл',toUrl:'URL',toAnchor:'Энэ хуудасандах холбоос',toEmail:'E-Mail',targetFrame:'<Агуулах хүрээ>',targetPopup:'<popup цонх>',targetFrameName:'Очих фремын нэр',targetPopupName:'Popup цонхны нэр',popupFeatures:'Popup цонхны онцлог',popupResizable:'Resizable',popupStatusBar:'Статус хэсэг',popupLocationBar:'Location хэсэг',popupToolbar:'Багажны хэсэг',popupMenuBar:'Meню хэсэг',popupFullScreen:'Цонх дүүргэх (IE)',popupScrollBars:'Скрол хэсэгүүд',popupDependent:'Хамаатай (Netscape)',popupLeft:'Зүүн байрлал',popupTop:'Дээд байрлал',id:'Id',langDir:'Хэлний чиглэл',langDirLTR:'Зүүнээс баруун (LTR)',langDirRTL:'Баруунаас зүүн (RTL)',acccessKey:'Холбох түлхүүр',name:'Нэр',langCode:'Хэлний чиглэл',tabIndex:'Tab индекс',advisoryTitle:'Зөвлөлдөх гарчиг',advisoryContentType:'Зөвлөлдөх төрлийн агуулга',cssClasses:'Stylesheet классууд',charset:'Тэмдэгт оноох нөөцөд холбогдсон',styles:'Загвар',rel:'Relationship',selectAnchor:'Холбоос сонгох',anchorName:'Холбоосын нэрээр',anchorId:'Элемэнт Id-гаар',emailAddress:'E-Mail Хаяг',emailSubject:'Message гарчиг',emailBody:'Message-ийн агуулга',noAnchors:'(Баримт бичиг холбоосгүй байна)',noUrl:'Линк URL-ээ төрөлжүүлнэ үү',noEmail:'Е-mail хаягаа төрөлжүүлнэ үү'},anchor:{toolbar:'Холбоос Оруулах/Засварлах',menu:'Холбоос шинж чанар',title:'Холбоос шинж чанар',name:'Холбоос нэр',errorName:'Холбоос төрөл оруулна уу',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Хай мөн Дарж бич',find:'Хайх',replace:'Солих',findWhat:'Хайх үг/үсэг:',replaceWith:'Солих үг:',notFoundMsg:'Хайсан текст олсонгүй.',findOptions:'Find Options',matchCase:'Тэнцэх төлөв',matchWord:'Тэнцэх бүтэн үг',matchCyclic:'Match cyclic',replaceAll:'Бүгдийг нь Солих',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Хүснэгт',title:'Хүснэгт',menu:'Хүснэгт',deleteTable:'Хүснэгт устгах',rows:'Мөр',columns:'Багана',border:'Хүрээний хэмжээ',widthPx:'цэг',widthPc:'хувь',widthUnit:'width unit',cellSpace:'Нүх хоорондын зай (spacing)',cellPad:'Нүх доторлох(padding)',caption:'Тайлбар',summary:'Тайлбар',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Нүх/зай',insertBefore:'Нүх/зай өмнө нь оруулах',insertAfter:'Нүх/зай дараа нь оруулах',deleteCell:'Нүх устгах',merge:'Нүх нэгтэх',mergeRight:'Баруун тийш нэгтгэх',mergeDown:'Доош нэгтгэх',splitHorizontal:'Нүх/зайг босоогоор нь тусгаарлах',splitVertical:'Нүх/зайг хөндлөнгөөр нь тусгаарлах',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Мөр',insertBefore:'Мөр өмнө нь оруулах',insertAfter:'Мөр дараа нь оруулах',deleteRow:'Мөр устгах'},column:{menu:'Багана',insertBefore:'Багана өмнө нь оруулах',insertAfter:'Багана дараа нь оруулах',deleteColumn:'Багана устгах'}},button:{title:'Товчны шинж чанар',text:'Тэкст (Утга)',type:'Төрөл',typeBtn:'Товч',typeSbm:'Submit',typeRst:'Болих'},checkboxAndRadio:{checkboxTitle:'Чекбоксны шинж чанар',radioTitle:'Радио товчны шинж чанар',value:'Утга',selected:'Сонгогдсон'},form:{title:'Форм шинж чанар',menu:'Форм шинж чанар',action:'Үйлдэл',method:'Арга',encoding:'Encoding'},select:{title:'Согогч талбарын шинж чанар',selectInfo:'Мэдээлэл',opAvail:'Идвэхтэй сонголт',value:'Утга',size:'Хэмжээ',lines:'Мөр',chkMulti:'Олон сонголт зөвшөөрөх',opText:'Тэкст',opValue:'Утга',btnAdd:'Нэмэх',btnModify:'Өөрчлөх',btnUp:'Дээш',btnDown:'Доош',btnSetValue:'Сонгогдсан утга оноох',btnDelete:'Устгах'},textarea:{title:'Текст орчны шинж чанар',cols:'Багана',rows:'Мөр'},textfield:{title:'Текст талбарын шинж чанар',name:'Нэр',value:'Утга',charWidth:'Тэмдэгтын өргөн',maxChars:'Хамгийн их тэмдэгт',type:'Төрөл',typeText:'Текст',typePass:'Нууц үг'},hidden:{title:'Нууц талбарын шинж чанар',name:'Нэр',value:'Утга'},image:{title:'Зураг',titleButton:'Зурган товчны шинж чанар',menu:'Зураг',infoTab:'Зурагны мэдээлэл',btnUpload:'Үүнийг сервэррүү илгээ',upload:'Хуулах',alt:'Тайлбар текст',lockRatio:'Радио түгжих',resetSize:'хэмжээ дахин оноох',border:'Хүрээ',hSpace:'Хөндлөн зай',vSpace:'Босоо зай',alertUrl:'Зурагны URL-ын төрлийн сонгоно уу',linkTab:'Линк',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Флаш шинж чанар',propertiesTab:'Properties',title:'Флаш шинж чанар',chkPlay:'Автоматаар тоглох',chkLoop:'Давтах',chkMenu:'Флаш цэс идвэхжүүлэх',chkFull:'Allow Fullscreen',scale:'Өргөгтгөх',scaleAll:'Бүгдийг харуулах',scaleNoBorder:'Хүрээгүй',scaleFit:'Яг тааруулах',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs доод талд',alignAbsMiddle:'Abs Дунд талд',alignBaseline:'Baseline',alignTextTop:'Текст дээр',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Фонны өнгө',hSpace:'Хөндлөн зай',vSpace:'Босоо зай',validateSrc:'Линк URL-ээ төрөлжүүлнэ үү',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Үгийн дүрэх шалгах',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Толь бичиггүй',changeTo:'Өөрчлөх',btnIgnore:'Зөвшөөрөх',btnIgnoreAll:'Бүгдийг зөвшөөрөх',btnReplace:'Дарж бичих',btnReplaceAll:'Бүгдийг Дарж бичих',btnUndo:'Буцаах',noSuggestions:'- Тайлбаргүй -',progress:'Дүрэм шалгаж байгаа үйл явц...',noMispell:'Дүрэм шалгаад дууссан: Алдаа олдсонгүй',noChanges:'Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй',oneChange:'Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн',manyChanges:'Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн',ieSpellDownload:'Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?'},smiley:{toolbar:'Тодорхойлолт',title:'Тодорхойлолт оруулах',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Дугаарлагдсан жагсаалт',bulletedlist:'Цэгтэй жагсаалт',indent:'Догол мөр хасах',outdent:'Догол мөр нэмэх',justify:{left:'Зүүн талд байрлуулах',center:'Төвд байрлуулах',right:'Баруун талд байрлуулах',block:'Блок хэлбэрээр байрлуулах'},blockquote:'Хайрцаглах',clipboard:{title:'Буулгах',cutError:'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.',copyError:'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хослолыг ашиглана уу.',pasteMsg:'(<strong>Ctrl/Cmd+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.',securityMsg:'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Word-оос буулгах',title:'Word-оос буулгах',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Plain Text-ээс буулгах',title:'Plain Text-ээс буулгах'},templates:{button:'Загварууд',title:'Загварын агуулга',options:'Template Options',insertOption:'Одоогийн агууллагыг дарж бичих',selectPromptMsg:'Загварыг нээж editor-рүү сонгож оруулна уу<br />(Одоогийн агууллагыг устаж магадгүй):',emptyListMsg:'(Загвар тодорхойлогдоогүй байна)'},showBlocks:'Block-уудыг үзүүлэх',stylesCombo:{label:'Загвар',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Формат',panelTitle:'Формат',tag_p:'Хэвийн',tag_pre:'Formatted',tag_address:'Хаяг',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Paragraph (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Фонт',voiceLabel:'Font',panelTitle:'Фонт'},fontSize:{label:'Хэмжээ',voiceLabel:'Font Size',panelTitle:'Хэмжээ'},colorButton:{textColorTitle:'Фонтны өнгө',bgColorTitle:'Фонны өнгө',panelTitle:'Colors',auto:'Автоматаар',more:'Нэмэлт өнгөнүүд...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Баримт бичиг шинж чанар',title:'Баримт бичиг шинж чанар',design:'Design',meta:'Meta өгөгдөл',chooseColor:'Choose',other:'<other>',docTitle:'Хуудасны гарчиг',charset:'Encoding тэмдэгт',charsetOther:'Encoding-д өөр тэмдэгт оноох',charsetASCII:'ASCII',charsetCE:'Төв европ',charsetCT:'Хятадын уламжлалт (Big5)',charsetCR:'Крил',charsetGR:'Гред',charsetJP:'Япон',charsetKR:'Солонгос',charsetTR:'Tурк',charsetUN:'Юникод (UTF-8)',charsetWE:'Баруун европ',docType:'Баримт бичгийн төрөл Heading',docTypeOther:'Бусад баримт бичгийн төрөл Heading',xhtmlDec:'XHTML агуулж зарлах',bgColor:'Фоно өнгө',bgImage:'Фоно зурагны URL',bgFixed:'Гүйдэггүй фоно',txtColor:'Фонтны өнгө',margin:'Хуудасны захын зай',marginTop:'Дээд тал',marginLeft:'Зүүн тал',marginRight:'Баруун тал',marginBottom:'Доод тал',metaKeywords:'Баримт бичгийн индекс түлхүүр үг (таслалаар тусгаарлагдана)',metaDescription:'Баримт бичгийн тайлбар',metaAuthor:'Зохиогч',metaCopyright:'Зохиогчийн эрх',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ms.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ms.js
new file mode 100755
index 0000000..90ab943
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ms.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ms={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Sumber',newPage:'Helaian Baru',save:'Simpan',preview:'Prebiu',cut:'Potong',copy:'Salin',paste:'Tampal',print:'Cetak',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Pilih Semua',removeFormat:'Buang Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Masukkan Garisan Membujur',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Buang Sambungan',undo:'Batalkan',redo:'Ulangkan',common:{browseServer:'Browse Server',url:'URL',protocol:'Protokol',upload:'Muat Naik',uploadSubmit:'Hantar ke Server',image:'Gambar',flash:'Flash',form:'Borang',checkbox:'Checkbox',radio:'Butang Radio',textField:'Text Field',textarea:'Textarea',hiddenField:'Field Tersembunyi',button:'Butang',select:'Field Pilihan',imageButton:'Butang Bergambar',notSet:'<tidak di set>',id:'Id',name:'Nama',langDir:'Arah Tulisan',langDirLtr:'Kiri ke Kanan (LTR)',langDirRtl:'Kanan ke Kiri (RTL)',langCode:'Kod Bahasa',longDescr:'Butiran Panjang URL',cssClass:'Kelas-kelas Stylesheet',advisoryTitle:'Tajuk Makluman',cssStyle:'Stail',ok:'OK',cancel:'Batal',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Lebar',height:'Tinggi',align:'Jajaran',alignLeft:'Kiri',alignRight:'Kanan',alignCenter:'Tengah',alignTop:'Atas',alignMiddle:'Pertengahan',alignBottom:'Bawah',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Masukkan Huruf Istimewa',title:'Sila pilih huruf istimewa',options:'Special Character Options'},link:{toolbar:'Masukkan/Sunting Sambungan',other:'<lain>',menu:'Sunting Sambungan',title:'Sambungan',info:'Butiran Sambungan',target:'Sasaran',upload:'Muat Naik',advanced:'Advanced',type:'Jenis Sambungan',toUrl:'URL',toAnchor:'Pautan dalam muka surat ini',toEmail:'E-Mail',targetFrame:'<bingkai>',targetPopup:'<tetingkap popup>',targetFrameName:'Nama Bingkai Sasaran',targetPopupName:'Nama Tetingkap Popup',popupFeatures:'Ciri Tetingkap Popup',popupResizable:'Resizable',popupStatusBar:'Bar Status',popupLocationBar:'Bar Lokasi',popupToolbar:'Toolbar',popupMenuBar:'Bar Menu',popupFullScreen:'Skrin Penuh (IE)',popupScrollBars:'Bar-bar skrol',popupDependent:'Bergantungan (Netscape)',popupLeft:'Posisi Kiri',popupTop:'Posisi Atas',id:'Id',langDir:'Arah Tulisan',langDirLTR:'Kiri ke Kanan (LTR)',langDirRTL:'Kanan ke Kiri (RTL)',acccessKey:'Kunci Akses',name:'Nama',langCode:'Arah Tulisan',tabIndex:'Indeks Tab ',advisoryTitle:'Tajuk Makluman',advisoryContentType:'Jenis Kandungan Makluman',cssClasses:'Kelas-kelas Stylesheet',charset:'Linked Resource Charset',styles:'Stail',rel:'Relationship',selectAnchor:'Sila pilih pautan',anchorName:'dengan menggunakan nama pautan',anchorId:'dengan menggunakan ID elemen',emailAddress:'Alamat E-Mail',emailSubject:'Subjek Mesej',emailBody:'Isi Kandungan Mesej',noAnchors:'(Tiada pautan terdapat dalam dokumen ini)',noUrl:'Sila taip sambungan URL',noEmail:'Sila taip alamat e-mail'},anchor:{toolbar:'Masukkan/Sunting Pautan',menu:'Ciri-ciri Pautan',title:'Ciri-ciri Pautan',name:'Nama Pautan',errorName:'Sila taip nama pautan',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Cari',replace:'Ganti',findWhat:'Perkataan yang dicari:',replaceWith:'Diganti dengan:',notFoundMsg:'Text yang dicari tidak dijumpai.',findOptions:'Find Options',matchCase:'Padanan case huruf',matchWord:'Padana Keseluruhan perkataan',matchCyclic:'Match cyclic',replaceAll:'Ganti semua',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Jadual',title:'Ciri-ciri Jadual',menu:'Ciri-ciri Jadual',deleteTable:'Delete Table',rows:'Barisan',columns:'Jaluran',border:'Saiz Border',widthPx:'piksel-piksel',widthPc:'peratus',widthUnit:'width unit',cellSpace:'Ruangan Antara Sel',cellPad:'Tambahan Ruang Sel',caption:'Keterangan',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Buangkan Sel-sel',merge:'Cantumkan Sel-sel',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Buangkan Baris'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Buangkan Lajur'}},button:{title:'Ciri-ciri Butang',text:'Teks (Nilai)',type:'Jenis',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Ciri-ciri Checkbox',radioTitle:'Ciri-ciri Butang Radio',value:'Nilai',selected:'Dipilih'},form:{title:'Ciri-ciri Borang',menu:'Ciri-ciri Borang',action:'Tindakan borang',method:'Cara borang dihantar',encoding:'Encoding'},select:{title:'Ciri-ciri Selection Field',selectInfo:'Select Info',opAvail:'Pilihan sediada',value:'Nilai',size:'Saiz',lines:'garisan',chkMulti:'Benarkan pilihan pelbagai',opText:'Teks',opValue:'Nilai',btnAdd:'Tambah Pilihan',btnModify:'Ubah Pilihan',btnUp:'Naik ke atas',btnDown:'Turun ke bawah',btnSetValue:'Set sebagai nilai terpilih',btnDelete:'Padam'},textarea:{title:'Ciri-ciri Textarea',cols:'Lajur',rows:'Baris'},textfield:{title:'Ciri-ciri Text Field',name:'Nama',value:'Nilai',charWidth:'Lebar isian',maxChars:'Isian Maksimum',type:'Jenis',typeText:'Teks',typePass:'Kata Laluan'},hidden:{title:'Ciri-ciri Field Tersembunyi',name:'Nama',value:'Nilai'},image:{title:'Ciri-ciri Imej',titleButton:'Ciri-ciri Butang Bergambar',menu:'Ciri-ciri Imej',infoTab:'Info Imej',btnUpload:'Hantar ke Server',upload:'Muat Naik',alt:'Text Alternatif',lockRatio:'Tetapkan Nisbah',resetSize:'Saiz Set Semula',border:'Border',hSpace:'Ruang Melintang',vSpace:'Ruang Menegak',alertUrl:'Sila taip URL untuk fail gambar',linkTab:'Sambungan',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Bawah Mutlak',alignAbsMiddle:'Pertengahan Mutlak',alignBaseline:'Garis Dasar',alignTextTop:'Atas Text',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Warna Latarbelakang',hSpace:'Ruang Melintang',vSpace:'Ruang Menegak',validateSrc:'Sila taip sambungan URL',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Semak Ejaan',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Tidak terdapat didalam kamus',changeTo:'Tukarkan kepada',btnIgnore:'Biar',btnIgnoreAll:'Biarkan semua',btnReplace:'Ganti',btnReplaceAll:'Gantikan Semua',btnUndo:'Batalkan',noSuggestions:'- Tiada cadangan -',progress:'Pemeriksaan ejaan sedang diproses...',noMispell:'Pemeriksaan ejaan siap: Tiada salah ejaan',noChanges:'Pemeriksaan ejaan siap: Tiada perkataan diubah',oneChange:'Pemeriksaan ejaan siap: Satu perkataan telah diubah',manyChanges:'Pemeriksaan ejaan siap: %1 perkataan diubah',ieSpellDownload:'Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?'},smiley:{toolbar:'Smiley',title:'Masukkan Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Senarai bernombor',bulletedlist:'Senarai tidak bernombor',indent:'Tambahkan Inden',outdent:'Kurangkan Inden',justify:{left:'Jajaran Kiri',center:'Jajaran Tengah',right:'Jajaran Kanan',block:'Jajaran Blok'},blockquote:'Block Quote',clipboard:{title:'Tampal',cutError:'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).',copyError:'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).',pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Tampal dari Word',title:'Tampal dari Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Tampal sebagai text biasa',title:'Tampal sebagai text biasa'},templates:{button:'Templat',title:'Templat Kandungan',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Sila pilih templat untuk dibuka oleh editor<br>(kandungan sebenar akan hilang):',emptyListMsg:'(Tiada Templat Disimpan)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stail',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Telah Diformat',tag_address:'Alamat',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Perenggan (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'Saiz',voiceLabel:'Font Size',panelTitle:'Saiz'},colorButton:{textColorTitle:'Warna Text',bgColorTitle:'Warna Latarbelakang',panelTitle:'Colors',auto:'Otomatik',more:'Warna lain-lain...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Ciri-ciri dokumen',title:'Ciri-ciri dokumen',design:'Design',meta:'Data Meta',chooseColor:'Choose',other:'<lain>',docTitle:'Tajuk Muka Surat',charset:'Enkod Set Huruf',charsetOther:'Enkod Set Huruf yang Lain',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Jenis Kepala Dokumen',docTypeOther:'Jenis Kepala Dokumen yang Lain',xhtmlDec:'Masukkan pemula kod XHTML',bgColor:'Warna Latarbelakang',bgImage:'URL Gambar Latarbelakang',bgFixed:'Imej Latarbelakang tanpa Skrol',txtColor:'Warna Text',margin:'Margin Muka Surat',marginTop:'Atas',marginLeft:'Kiri',marginRight:'Kanan',marginBottom:'Bawah',metaKeywords:'Kata Kunci Indeks Dokumen (dipisahkan oleh koma)',metaDescription:'Keterangan Dokumen',metaAuthor:'Penulis',metaCopyright:'Hakcipta',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/nb.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/nb.js
new file mode 100755
index 0000000..0c335ff
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/nb.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.nb={dir:'ltr',editorTitle:'Rikteksteditor, %1',editorHelp:'Trykk ALT 0 for hjelp',toolbars:'Verktøylinjer for editor',editor:'Rikteksteditor',source:'Kilde',newPage:'Ny side',save:'Lagre',preview:'Forhåndsvis',cut:'Klipp ut',copy:'Kopier',paste:'Lim inn',print:'Skriv ut',underline:'Understreking',bold:'Fet',italic:'Kursiv',selectAll:'Merk alt',removeFormat:'Fjern formatering',strike:'Gjennomstreking',subscript:'Senket skrift',superscript:'Hevet skrift',horizontalrule:'Sett inn horisontal linje',pagebreak:'Sett inn sideskift for utskrift',pagebreakAlt:'Sideskift',unlink:'Fjern lenke',undo:'Angre',redo:'Gjør om',common:{browseServer:'Bla igjennom server',url:'URL',protocol:'Protokoll',upload:'Last opp',uploadSubmit:'Send det til serveren',image:'Bilde',flash:'Flash',form:'Skjema',checkbox:'Avmerkingsboks',radio:'Alternativknapp',textField:'Tekstboks',textarea:'Tekstområde',hiddenField:'Skjult felt',button:'Knapp',select:'Rullegardinliste',imageButton:'Bildeknapp',notSet:'<ikke satt>',id:'Id',name:'Navn',langDir:'Språkretning',langDirLtr:'Venstre til høyre (VTH)',langDirRtl:'Høyre til venstre (HTV)',langCode:'Språkkode',longDescr:'Utvidet beskrivelse',cssClass:'Stilarkklasser',advisoryTitle:'Tittel',cssStyle:'Stil',ok:'OK',cancel:'Avbryt',close:'Lukk',preview:'Forhåndsvis',generalTab:'Generelt',advancedTab:'Avansert',validateNumberFailed:'Denne verdien er ikke et tall.',confirmNewPage:'Alle ulagrede endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?',confirmCancel:'Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?',options:'Valg',target:'Mål',targetNew:'Nytt vindu (_blank)',targetTop:'Hele vindu (_top)',targetSelf:'Samme vindu (_self)',targetParent:'Foreldrevindu (_parent)',langDirLTR:'Venstre til høyre (VTH)',langDirRTL:'Høyre til venstre (HTV)',styles:'Stil',cssClasses:'Stilarkklasser',width:'Bredde',height:'Høyde',align:'Juster',alignLeft:'Venstre',alignRight:'Høyre',alignCenter:'Midtjuster',alignTop:'Topp',alignMiddle:'Midten',alignBottom:'Bunn',invalidHeight:'Høyde må være et tall.',invalidWidth:'Bredde må være et tall.',invalidCssLength:'Den angitte verdien for feltet "%1" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).',invalidHtmlLength:'Den angitte verdien for feltet "%1" må være et positivt tall med eller uten en gyldig HTML-målingsenhet (px eller %).',invalidInlineStyle:'Verdi angitt for inline stil må bestå av en eller flere sett med formatet "navn : verdi", separert med semikolon',cssLengthTooltip:'Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).',unavailable:'%1<span class="cke_accessibility">, utilgjenglig</span>'},contextmenu:{options:'Alternativer for høyreklikkmeny'},specialChar:{toolbar:'Sett inn spesialtegn',title:'Velg spesialtegn',options:'Alternativer for spesialtegn'},link:{toolbar:'Sett inn/Rediger lenke',other:'<annen>',menu:'Rediger lenke',title:'Lenke',info:'Lenkeinfo',target:'Mål',upload:'Last opp',advanced:'Avansert',type:'Lenketype',toUrl:'URL',toAnchor:'Lenke til anker i teksten',toEmail:'E-post',targetFrame:'<ramme>',targetPopup:'<popup-vindu>',targetFrameName:'Målramme',targetPopupName:'Navn på popup-vindu',popupFeatures:'Egenskaper for popup-vindu',popupResizable:'Skalerbar',popupStatusBar:'Statuslinje',popupLocationBar:'Adresselinje',popupToolbar:'Verktøylinje',popupMenuBar:'Menylinje',popupFullScreen:'Fullskjerm (IE)',popupScrollBars:'Scrollbar',popupDependent:'Avhenging (Netscape)',popupLeft:'Venstre posisjon',popupTop:'Topp-posisjon',id:'Id',langDir:'Språkretning',langDirLTR:'Venstre til høyre (VTH)',langDirRTL:'Høyre til venstre (HTV)',acccessKey:'Aksessknapp',name:'Navn',langCode:'Språkkode',tabIndex:'Tabindeks',advisoryTitle:'Tittel',advisoryContentType:'Type',cssClasses:'Stilarkklasser',charset:'Lenket tegnsett',styles:'Stil',rel:'Relasjon (rel)',selectAnchor:'Velg et anker',anchorName:'Anker etter navn',anchorId:'Element etter ID',emailAddress:'E-postadresse',emailSubject:'Meldingsemne',emailBody:'Melding',noAnchors:'(Ingen anker i dokumentet)',noUrl:'Vennligst skriv inn lenkens URL',noEmail:'Vennligst skriv inn e-postadressen'},anchor:{toolbar:'Sett inn/Rediger anker',menu:'Egenskaper for anker',title:'Egenskaper for anker',name:'Ankernavn',errorName:'Vennligst skriv inn ankernavnet',remove:'Fjern anker'},list:{numberedTitle:'Egenskaper for nummerert liste',bulletedTitle:'Egenskaper for punktmerket liste',type:'Type',start:'Start',validateStartNumber:'Starten på listen må være et heltall.',circle:'Sirkel',disc:'Disk',square:'Firkant',none:'Ingen',notset:'<ikke satt>',armenian:'Armensk nummerering',georgian:'Georgisk nummerering (an, ban, gan, osv.)',lowerRoman:'Romertall, små (i, ii, iii, iv, v, osv.)',upperRoman:'Romertall, store (I, II, III, IV, V, osv.)',lowerAlpha:'Alfabetisk, små (a, b, c, d, e, osv.)',upperAlpha:'Alfabetisk, store (A, B, C, D, E, osv.)',lowerGreek:'Gresk, små (alpha, beta, gamma, osv.)',decimal:'Tall (1, 2, 3, osv.)',decimalLeadingZero:'Tall, med førstesiffer null (01, 02, 03, osv.)'},findAndReplace:{title:'Søk og erstatt',find:'Søk',replace:'Erstatt',findWhat:'Søk etter:',replaceWith:'Erstatt med:',notFoundMsg:'Fant ikke søketeksten.',findOptions:'Søkealternativer',matchCase:'Skill mellom store og små bokstaver',matchWord:'Bare hele ord',matchCyclic:'Søk i hele dokumentet',replaceAll:'Erstatt alle',replaceSuccessMsg:'%1 tilfelle(r) erstattet.'},table:{toolbar:'Tabell',title:'Egenskaper for tabell',menu:'Egenskaper for tabell',deleteTable:'Slett tabell',rows:'Rader',columns:'Kolonner',border:'Rammestørrelse',widthPx:'piksler',widthPc:'prosent',widthUnit:'Bredde-enhet',cellSpace:'Cellemarg',cellPad:'Cellepolstring',caption:'Tittel',summary:'Sammendrag',headers:'Overskrifter',headersNone:'Ingen',headersColumn:'Første kolonne',headersRow:'Første rad',headersBoth:'Begge',invalidRows:'Antall rader må være et tall større enn 0.',invalidCols:'Antall kolonner må være et tall større enn 0.',invalidBorder:'Rammestørrelse må være et tall.',invalidWidth:'Tabellbredde må være et tall.',invalidHeight:'Tabellhøyde må være et tall.',invalidCellSpacing:'Cellemarg må være et positivt tall.',invalidCellPadding:'Cellepolstring må være et positivt tall.',cell:{menu:'Celle',insertBefore:'Sett inn celle før',insertAfter:'Sett inn celle etter',deleteCell:'Slett celler',merge:'Slå sammen celler',mergeRight:'Slå sammen høyre',mergeDown:'Slå sammen ned',splitHorizontal:'Del celle horisontalt',splitVertical:'Del celle vertikalt',title:'Celleegenskaper',cellType:'Celletype',rowSpan:'Radspenn',colSpan:'Kolonnespenn',wordWrap:'Tekstbrytning',hAlign:'Horisontal justering',vAlign:'Vertikal justering',alignBaseline:'Grunnlinje',bgColor:'Bakgrunnsfarge',borderColor:'Rammefarge',data:'Data',header:'Overskrift',yes:'Ja',no:'Nei',invalidWidth:'Cellebredde må være et tall.',invalidHeight:'Cellehøyde må være et tall.',invalidRowSpan:'Radspenn må være et heltall.',invalidColSpan:'Kolonnespenn må være et heltall.',chooseColor:'Velg'},row:{menu:'Rader',insertBefore:'Sett inn rad før',insertAfter:'Sett inn rad etter',deleteRow:'Slett rader'},column:{menu:'Kolonne',insertBefore:'Sett inn kolonne før',insertAfter:'Sett inn kolonne etter',deleteColumn:'Slett kolonner'}},button:{title:'Egenskaper for knapp',text:'Tekst (verdi)',type:'Type',typeBtn:'Knapp',typeSbm:'Send',typeRst:'Nullstill'},checkboxAndRadio:{checkboxTitle:'Egenskaper for avmerkingsboks',radioTitle:'Egenskaper for alternativknapp',value:'Verdi',selected:'Valgt'},form:{title:'Egenskaper for skjema',menu:'Egenskaper for skjema',action:'Handling',method:'Metode',encoding:'Encoding'},select:{title:'Egenskaper for rullegardinliste',selectInfo:'Info',opAvail:'Tilgjenglige alternativer',value:'Verdi',size:'Størrelse',lines:'Linjer',chkMulti:'Tillat flervalg',opText:'Tekst',opValue:'Verdi',btnAdd:'Legg til',btnModify:'Endre',btnUp:'Opp',btnDown:'Ned',btnSetValue:'Sett som valgt',btnDelete:'Slett'},textarea:{title:'Egenskaper for tekstområde',cols:'Kolonner',rows:'Rader'},textfield:{title:'Egenskaper for tekstfelt',name:'Navn',value:'Verdi',charWidth:'Tegnbredde',maxChars:'Maks antall tegn',type:'Type',typeText:'Tekst',typePass:'Passord'},hidden:{title:'Egenskaper for skjult felt',name:'Navn',value:'Verdi'},image:{title:'Bildeegenskaper',titleButton:'Egenskaper for bildeknapp',menu:'Bildeegenskaper',infoTab:'Bildeinformasjon',btnUpload:'Send det til serveren',upload:'Last opp',alt:'Alternativ tekst',lockRatio:'Lås forhold',resetSize:'Tilbakestill størrelse',border:'Ramme',hSpace:'HMarg',vSpace:'VMarg',alertUrl:'Vennligst skriv bilde-urlen',linkTab:'Lenke',button2Img:'Vil du endre den valgte bildeknappen til et vanlig bilde?',img2Button:'Vil du endre det valgte bildet til en bildeknapp?',urlMissing:'Bildets adresse mangler.',validateBorder:'Ramme må være et heltall.',validateHSpace:'HMarg må være et heltall.',validateVSpace:'VMarg må være et heltall.'},flash:{properties:'Egenskaper for Flash-objekt',propertiesTab:'Egenskaper',title:'Flash-egenskaper',chkPlay:'Autospill',chkLoop:'Loop',chkMenu:'Slå på Flash-meny',chkFull:'Tillat fullskjerm',scale:'Skaler',scaleAll:'Vis alt',scaleNoBorder:'Ingen ramme',scaleFit:'Skaler til å passe',access:'Scripttilgang',accessAlways:'Alltid',accessSameDomain:'Samme domene',accessNever:'Aldri',alignAbsBottom:'Abs bunn',alignAbsMiddle:'Abs midten',alignBaseline:'Bunnlinje',alignTextTop:'Tekst topp',quality:'Kvalitet',qualityBest:'Best',qualityHigh:'Høy',qualityAutoHigh:'Auto høy',qualityMedium:'Medium',qualityAutoLow:'Auto lav',qualityLow:'Lav',windowModeWindow:'Vindu',windowModeOpaque:'Opaque',windowModeTransparent:'Gjennomsiktig',windowMode:'Vindumodus',flashvars:'Variabler for flash',bgcolor:'Bakgrunnsfarge',hSpace:'HMarg',vSpace:'VMarg',validateSrc:'Vennligst skriv inn lenkens url.',validateHSpace:'HMarg må være et tall.',validateVSpace:'VMarg må være et tall.'},spellCheck:{toolbar:'Stavekontroll',title:'Stavekontroll',notAvailable:'Beklager, tjenesten er utilgjenglig nå.',errorLoading:'Feil under lasting av applikasjonstjenestetjener: %s.',notInDic:'Ikke i ordboken',changeTo:'Endre til',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer alle',btnReplace:'Erstatt',btnReplaceAll:'Erstatt alle',btnUndo:'Angre',noSuggestions:'- Ingen forslag -',progress:'Stavekontroll pågår...',noMispell:'Stavekontroll fullført: ingen feilstavinger funnet',noChanges:'Stavekontroll fullført: ingen ord endret',oneChange:'Stavekontroll fullført: Ett ord endret',manyChanges:'Stavekontroll fullført: %1 ord endret',ieSpellDownload:'Stavekontroll er ikke installert. Vil du laste den ned nå?'},smiley:{toolbar:'Smil',title:'Sett inn smil',options:'Alternativer for smil'},elementsPath:{eleLabel:'Element-sti',eleTitle:'%1 element'},numberedlist:'Legg til/Fjern nummerert liste',bulletedlist:'Legg til/Fjern punktmerket liste',indent:'Øk innrykk',outdent:'Reduser innrykk',justify:{left:'Venstrejuster',center:'Midtstill',right:'Høyrejuster',block:'Blokkjuster'},blockquote:'Sitatblokk',clipboard:{title:'Lim inn',cutError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).',copyError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).',pasteMsg:'Vennligst lim inn i følgende boks med tastaturet (<STRONG>Ctrl/Cmd+V</STRONG>) og trykk <STRONG>OK</STRONG>.',securityMsg:'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.',pasteArea:'Innlimingsområde'},pastefromword:{confirmCleanup:'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?',toolbar:'Lim inn fra Word',title:'Lim inn fra Word',error:'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil'},pasteText:{button:'Lim inn som ren tekst',title:'Lim inn som ren tekst'},templates:{button:'Maler',title:'Innholdsmaler',options:'Alternativer for mal',insertOption:'Erstatt gjeldende innhold',selectPromptMsg:'Velg malen du vil åpne i redigeringsverktøyet:',emptyListMsg:'(Ingen maler definert)'},showBlocks:'Vis blokker',stylesCombo:{label:'Stil',panelTitle:'Stilformater',panelTitle1:'Blokkstiler',panelTitle2:'Inlinestiler',panelTitle3:'Objektstiler'},format:{label:'Format',panelTitle:'Avsnittsformat',tag_p:'Normal',tag_pre:'Formatert',tag_address:'Adresse',tag_h1:'Overskrift 1',tag_h2:'Overskrift 2',tag_h3:'Overskrift 3',tag_h4:'Overskrift 4',tag_h5:'Overskrift 5',tag_h6:'Overskrift 6',tag_div:'Normal (DIV)'},div:{title:'Sett inn Div Container',toolbar:'Sett inn Div Container',cssClassInputLabel:'Stilark-klasser',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:' Språkkode',inlineStyleInputLabel:'Inlinestiler',advisoryTitleInputLabel:'Tittel',langDirLabel:'Språkretning',langDirLTRLabel:'Venstre til høyre (VTH)',langDirRTLLabel:'Høyre til venstre (HTV)',edit:'Rediger Div',remove:'Fjern Div'},iframe:{title:'Egenskaper for IFrame',toolbar:'IFrame',noUrl:'Vennligst skriv inn URL for iframe',scrolling:'Aktiver scrollefelt',border:'Viss ramme rundt iframe'},font:{label:'Skrift',voiceLabel:'Font',panelTitle:'Skrift'},fontSize:{label:'Størrelse',voiceLabel:'Font Størrelse',panelTitle:'Størrelse'},colorButton:{textColorTitle:'Tekstfarge',bgColorTitle:'Bakgrunnsfarge',panelTitle:'Farger',auto:'Automatisk',more:'Flere farger...'},colors:{'000':'Svart',800000:'Rødbrun','8B4513':'Salbrun','2F4F4F':'Grønnsvart','008080':'Blågrønn','000080':'Marineblått','4B0082':'Indigo',696969:'Mørk grå',B22222:'Mørkerød',A52A2A:'Brun',DAA520:'Lys brun','006400':'Mørk grønn','40E0D0':'Turkis','0000CD':'Medium blå',800080:'Purpur',808080:'Grå',F00:'Rød',FF8C00:'Mørk oransje',FFD700:'Gull','008000':'Grønn','0FF':'Cyan','00F':'Blå',EE82EE:'Fiolett',A9A9A9:'Svak grå',FFA07A:'Rosa-oransje',FFA500:'Oransje',FFFF00:'Gul','00FF00':'Lime',AFEEEE:'Svak turkis',ADD8E6:'Lys Blå',DDA0DD:'Plomme',D3D3D3:'Lys grå',FFF0F5:'Svak lavendelrosa',FAEBD7:'Antikk-hvit',FFFFE0:'Lys gul',F0FFF0:'Honningmelon',F0FFFF:'Svakt asurblått',F0F8FF:'Svak cyan',E6E6FA:'Lavendel',FFF:'Hvit'},scayt:{title:'Stavekontroll mens du skriver',opera_title:'Ikke støttet av Opera',enable:'Slå på SCAYT',disable:'Slå av SCAYT',about:'Om SCAYT',toggle:'Veksle SCAYT',options:'Valg',langs:'Språk',moreSuggestions:'Flere forslag',ignore:'Ignorer',ignoreAll:'Ignorer Alle',addWord:'Legg til ord',emptyDic:'Ordboknavn bør ikke være tom.',optionsTab:'Valg',allCaps:'Ikke kontroller ord med kun store bokstaver',ignoreDomainNames:'Ikke kontroller domenenavn',mixedCase:'Ikke kontroller ord med blandet små og store bokstaver',mixedWithDigits:'Ikke kontroller ord som inneholder tall',languagesTab:'Språk',dictionariesTab:'Ordbøker',dic_field_name:'Ordboknavn',dic_create:'Opprett',dic_restore:'Gjenopprett',dic_delete:'Slett',dic_rename:'Gi nytt navn',dic_info:'Brukerordboken lagres først i en informasjonskapsel på din maskin, men det er en begrensning på hvor mye som kan lagres her. Når ordboken blir for stor til å lagres i en informasjonskapsel, vil vi i stedet lagre ordboken på vår server. For å lagre din personlige ordbok på vår server, burde du velge et navn for ordboken din. Hvis du allerede har lagret en ordbok, vennligst skriv inn ordbokens navn og klikk på Gjenopprett-knappen.',aboutTab:'Om'},about:{title:'Om CKEditor',dlgTitle:'Om CKEditor',help:'Se $1 for hjelp.',userGuide:'CKEditors brukerveiledning',moreInfo:'For lisensieringsinformasjon, vennligst besøk vårt nettsted:',copy:'Copyright © $1. Alle rettigheter reservert.'},maximize:'Maksimer',minimize:'Minimer',fakeobjects:{anchor:'Anker',flash:'Flash-animasjon',iframe:'IFrame',hiddenfield:'Skjult felt',unknown:'Ukjent objekt'},resize:'Dra for å skalere',colordialog:{title:'Velg farge',options:'Alternativer for farge',highlight:'Merk',selected:'Valgt',clear:'Tøm'},toolbarCollapse:'Skjul verktøylinje',toolbarExpand:'Vis verktøylinje',toolbarGroups:{document:'Dokument',clipboard:'Utklippstavle/Angre',editing:'Redigering',forms:'Skjema',basicstyles:'Basisstiler',paragraph:'Avsnitt',links:'Lenker',insert:'Innsetting',styles:'Stiler',colors:'Farger',tools:'Verktøy'},bidi:{ltr:'Tekstretning fra venstre til høyre',rtl:'Tekstretning fra høyre til venstre'},docprops:{label:'Dokumentegenskaper',title:'Dokumentegenskaper',design:'Design',meta:'Meta-data',chooseColor:'Velg',other:'<annen>',docTitle:'Sidetittel',charset:'Tegnsett',charsetOther:'Annet tegnsett',charsetASCII:'ASCII',charsetCE:'Sentraleuropeisk',charsetCT:'Tradisonell kinesisk(Big5)',charsetCR:'Kyrillisk',charsetGR:'Gresk',charsetJP:'Japansk',charsetKR:'Koreansk',charsetTR:'Tyrkisk',charsetUN:'Unicode (UTF-8)',charsetWE:'Vesteuropeisk',docType:'Dokumenttype header',docTypeOther:'Annet dokumenttype header',xhtmlDec:'Inkluder XHTML-deklarasjon',bgColor:'Bakgrunnsfarge',bgImage:'URL for bakgrunnsbilde',bgFixed:'Lås bakgrunnsbilde',txtColor:'Tekstfarge',margin:'Sidemargin',marginTop:'Topp',marginLeft:'Venstre',marginRight:'Høyre',marginBottom:'Bunn',metaKeywords:'Dokument nøkkelord (kommaseparert)',metaDescription:'Dokumentbeskrivelse',metaAuthor:'Forfatter',metaCopyright:'Kopirett',previewHtml:'<p>Dette er en <strong>eksempeltekst</strong>. Du bruker <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/nl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/nl.js
new file mode 100755
index 0000000..582310a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/nl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.nl={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Werkbalken',editor:'Tekstverwerker',source:'Code',newPage:'Nieuwe pagina',save:'Opslaan',preview:'Voorbeeld',cut:'Knippen',copy:'Kopiëren',paste:'Plakken',print:'Printen',underline:'Onderstreept',bold:'Vet',italic:'Cursief',selectAll:'Alles selecteren',removeFormat:'Opmaak verwijderen',strike:'Doorhalen',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Horizontale lijn invoegen',pagebreak:'Pagina-einde invoegen',pagebreakAlt:'Pagina-einde',unlink:'Link verwijderen',undo:'Ongedaan maken',redo:'Opnieuw uitvoeren',common:{browseServer:'Bladeren op server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Naar server verzenden',image:'Afbeelding',flash:'Flash',form:'Formulier',checkbox:'Aanvinkvakje',radio:'Selectievakje',textField:'Tekstveld',textarea:'Tekstvak',hiddenField:'Verborgen veld',button:'Knop',select:'Selectieveld',imageButton:'Afbeeldingsknop',notSet:'<niet ingevuld>',id:'Id',name:'Naam',langDir:'Schrijfrichting',langDirLtr:'Links naar rechts (LTR)',langDirRtl:'Rechts naar links (RTL)',langCode:'Taalcode',longDescr:'Lange URL-omschrijving',cssClass:'Stylesheet-klassen',advisoryTitle:'Adviserende titel',cssStyle:'Stijl',ok:'OK',cancel:'Annuleren',close:'Sluiten',preview:'Voorbeeld',generalTab:'Algemeen',advancedTab:'Geavanceerd',validateNumberFailed:'Deze waarde is geen geldig getal.',confirmNewPage:'Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?',confirmCancel:'Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?',options:'Opties',target:'Doelvenster',targetNew:'Nieuw venster (_blank)',targetTop:'Hele venster (_top)',targetSelf:'Zelfde venster (_self)',targetParent:'Origineel venster (_parent)',langDirLTR:'Links naar rechts (LTR)',langDirRTL:'Rechts naar links (RTL)',styles:'Stijl',cssClasses:'Stylesheet klassen',width:'Breedte',height:'Hoogte',align:'Uitlijning',alignLeft:'Links',alignRight:'Rechts',alignCenter:'Centreren',alignTop:'Boven',alignMiddle:'Midden',alignBottom:'Onder',invalidHeight:'De hoogte moet een getal zijn.',invalidWidth:'De breedte moet een getal zijn.',invalidCssLength:'Waarde in veld "%1" moet een positief nummer zijn, met of zonder een geldige CSS meeteenheid (px, %, in, cm, mm, em, ex, pt of pc).',invalidHtmlLength:'Waarde in veld "%1" moet een positief nummer zijn, met of zonder een geldige HTML meeteenheid (px of %).',invalidInlineStyle:'Waarde voor de online stijl moet bestaan uit een of meerdere tupels met het formaat "naam : waarde", gescheiden door puntkomma\'s.',cssLengthTooltip:'Geef een nummer in voor een waarde in pixels of geef een nummer in met een geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).',unavailable:'%1<span class="cke_accessibility">, niet beschikbaar</span>'},contextmenu:{options:'Contextmenu opties'},specialChar:{toolbar:'Speciaal teken invoegen',title:'Selecteer speciaal teken',options:'Speciale tekens opties'},link:{toolbar:'Link invoegen/wijzigen',other:'<ander>',menu:'Link wijzigen',title:'Link',info:'Linkomschrijving',target:'Doelvenster',upload:'Upload',advanced:'Geavanceerd',type:'Linktype',toUrl:'URL',toAnchor:'Interne link in pagina',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popupvenster>',targetFrameName:'Naam doelframe',targetPopupName:'Naam popupvenster',popupFeatures:'Instellingen popupvenster',popupResizable:'Herschaalbaar',popupStatusBar:'Statusbalk',popupLocationBar:'Locatiemenu',popupToolbar:'Werkbalk',popupMenuBar:'Menubalk',popupFullScreen:'Volledig scherm (IE)',popupScrollBars:'Schuifbalken',popupDependent:'Afhankelijk (Netscape)',popupLeft:'Positie links',popupTop:'Positie boven',id:'Id',langDir:'Schrijfrichting',langDirLTR:'Links naar rechts (LTR)',langDirRTL:'Rechts naar links (RTL)',acccessKey:'Toegangstoets',name:'Naam',langCode:'Taalcode',tabIndex:'Tabvolgorde',advisoryTitle:'Adviserende titel',advisoryContentType:'Aanbevolen content-type',cssClasses:'Stylesheet-klassen',charset:'Karakterset van gelinkte bron',styles:'Stijl',rel:'Relatie',selectAnchor:'Kies een interne link',anchorName:'Op naam interne link',anchorId:'Op kenmerk interne link',emailAddress:'E-mailadres',emailSubject:'Onderwerp bericht',emailBody:'Inhoud bericht',noAnchors:'(Geen interne links in document gevonden)',noUrl:'Geef de link van de URL',noEmail:'Geef een e-mailadres'},anchor:{toolbar:'Interne link',menu:'Eigenschappen interne link',title:'Eigenschappen interne link',name:'Naam interne link',errorName:'Geef de naam van de interne link op',remove:'Interne link verwijderen'},list:{numberedTitle:'Eigenschappen genummerde lijst',bulletedTitle:'Eigenschappen lijst met opsommingstekens',type:'Type',start:'Start',validateStartNumber:'Startnummer van de lijst moet een heel nummer zijn.',circle:'Cirkel',disc:'Schijf',square:'Vierkant',none:'Geen',notset:'<niet gezet>',armenian:'Armeense nummering',georgian:'Georgische nummering (an, ban, gan, etc.)',lowerRoman:'Romeins kleine letters (i, ii, iii, iv, v, etc.)',upperRoman:'Romeinse hoofdletters (I, II, III, IV, V, etc.)',lowerAlpha:'Kleine letters (a, b, c, d, e, etc.)',upperAlpha:'Hoofdletters (A, B, C, D, E, etc.)',lowerGreek:'Grieks kleine letters (alpha, beta, gamma, etc.)',decimal:'Cijfers (1, 2, 3, etc.)',decimalLeadingZero:'Cijfers beginnen met nul (01, 02, 03, etc.)'},findAndReplace:{title:'Zoeken en vervangen',find:'Zoeken',replace:'Vervangen',findWhat:'Zoeken naar:',replaceWith:'Vervangen met:',notFoundMsg:'De opgegeven tekst is niet gevonden.',findOptions:'Zoekopties',matchCase:'Hoofdlettergevoelig',matchWord:'Hele woord moet voorkomen',matchCyclic:'Doorlopend zoeken',replaceAll:'Alles vervangen',replaceSuccessMsg:'%1 resultaten vervangen.'},table:{toolbar:'Tabel',title:'Eigenschappen tabel',menu:'Eigenschappen tabel',deleteTable:'Tabel verwijderen',rows:'Rijen',columns:'Kolommen',border:'Breedte rand',widthPx:'pixels',widthPc:'procent',widthUnit:'eenheid breedte',cellSpace:'Afstand tussen cellen',cellPad:'Ruimte in de cel',caption:'Naam',summary:'Samenvatting',headers:'Koppen',headersNone:'Geen',headersColumn:'Eerste kolom',headersRow:'Eerste rij',headersBoth:'Beide',invalidRows:'Het aantal rijen moet een getal zijn groter dan 0.',invalidCols:'Het aantal kolommen moet een getal zijn groter dan 0.',invalidBorder:'De rand breedte moet een getal zijn.',invalidWidth:'De tabelbreedte moet een getal zijn.',invalidHeight:'De tabelhoogte moet een getal zijn.',invalidCellSpacing:'Afstand tussen cellen moet een getal zijn.',invalidCellPadding:'Ruimte in de cel moet een getal zijn.',cell:{menu:'Cel',insertBefore:'Voeg cel in voor',insertAfter:'Voeg cel in achter',deleteCell:'Cellen verwijderen',merge:'Cellen samenvoegen',mergeRight:'Voeg samen naar rechts',mergeDown:'Voeg samen naar beneden',splitHorizontal:'Splits cellen horizontaal',splitVertical:'Splits cellen verticaal',title:'Cel eigenschappen',cellType:'Cel type',rowSpan:'Rijen samenvoegen',colSpan:'Kolommen samenvoegen',wordWrap:'Automatische terugloop',hAlign:'Horizontale uitlijning',vAlign:'Verticale uitlijning',alignBaseline:'Basislijn',bgColor:'Achtergrondkleur',borderColor:'Kleur rand',data:'Inhoud',header:'Kop',yes:'Ja',no:'Nee',invalidWidth:'De celbreedte moet een getal zijn.',invalidHeight:'De celhoogte moet een getal zijn.',invalidRowSpan:'Rijen samenvoegen moet een heel getal zijn.',invalidColSpan:'Kolommen samenvoegen moet een heel getal zijn.',chooseColor:'Kies'},row:{menu:'Rij',insertBefore:'Voeg rij in voor',insertAfter:'Voeg rij in achter',deleteRow:'Rijen verwijderen'},column:{menu:'Kolom',insertBefore:'Voeg kolom in voor',insertAfter:'Voeg kolom in achter',deleteColumn:'Kolommen verwijderen'}},button:{title:'Eigenschappen knop',text:'Tekst (waarde)',type:'Soort',typeBtn:'Knop',typeSbm:'Versturen',typeRst:'Leegmaken'},checkboxAndRadio:{checkboxTitle:'Eigenschappen aanvinkvakje',radioTitle:'Eigenschappen selectievakje',value:'Waarde',selected:'Geselecteerd'},form:{title:'Eigenschappen formulier',menu:'Eigenschappen formulier',action:'Actie',method:'Methode',encoding:'Codering'},select:{title:'Eigenschappen selectieveld',selectInfo:'Informatie',opAvail:'Beschikbare opties',value:'Waarde',size:'Grootte',lines:'Regels',chkMulti:'Gecombineerde selecties toestaan',opText:'Tekst',opValue:'Waarde',btnAdd:'Toevoegen',btnModify:'Wijzigen',btnUp:'Omhoog',btnDown:'Omlaag',btnSetValue:'Als geselecteerde waarde instellen',btnDelete:'Verwijderen'},textarea:{title:'Eigenschappen tekstvak',cols:'Kolommen',rows:'Rijen'},textfield:{title:'Eigenschappen tekstveld',name:'Naam',value:'Waarde',charWidth:'Breedte (tekens)',maxChars:'Maximum aantal tekens',type:'Soort',typeText:'Tekst',typePass:'Wachtwoord'},hidden:{title:'Eigenschappen verborgen veld',name:'Naam',value:'Waarde'},image:{title:'Eigenschappen afbeelding',titleButton:'Eigenschappen afbeeldingsknop',menu:'Eigenschappen afbeelding',infoTab:'Informatie afbeelding',btnUpload:'Naar server verzenden',upload:'Upload',alt:'Alternatieve tekst',lockRatio:'Afmetingen vergrendelen',resetSize:'Afmetingen resetten',border:'Rand',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Geef de URL van de afbeelding',linkTab:'Link',button2Img:'Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?',img2Button:'Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?',urlMissing:'De URL naar de afbeelding ontbreekt.',validateBorder:'Rand moet een heel nummer zijn.',validateHSpace:'HSpace moet een heel nummer zijn.',validateVSpace:'VSpace moet een heel nummer zijn.'},flash:{properties:'Eigenschappen Flash',propertiesTab:'Eigenschappen',title:'Eigenschappen Flash',chkPlay:'Automatisch afspelen',chkLoop:'Herhalen',chkMenu:"Flashmenu's inschakelen",chkFull:'Schermvullend toestaan',scale:'Schaal',scaleAll:'Alles tonen',scaleNoBorder:'Geen rand',scaleFit:'Precies passend',access:'Script toegang',accessAlways:'Altijd',accessSameDomain:'Zelfde domeinnaam',accessNever:'Nooit',alignAbsBottom:'Absoluut-onder',alignAbsMiddle:'Absoluut-midden',alignBaseline:'Basislijn',alignTextTop:'Boven tekst',quality:'Kwaliteit',qualityBest:'Beste',qualityHigh:'Hoog',qualityAutoHigh:'Automatisch hoog',qualityMedium:'Gemiddeld',qualityAutoLow:'Automatisch laag',qualityLow:'Laag',windowModeWindow:'Venster',windowModeOpaque:'Ondoorzichtig',windowModeTransparent:'Doorzichtig',windowMode:'Venster modus',flashvars:'Variabelen voor Flash',bgcolor:'Achtergrondkleur',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'De URL mag niet leeg zijn.',validateHSpace:'De HSpace moet een getal zijn.',validateVSpace:'De VSpace moet een getal zijn.'},spellCheck:{toolbar:'Spellingscontrole',title:'Spellingscontrole',notAvailable:'Excuses, deze dienst is momenteel niet beschikbaar.',errorLoading:'Er is een fout opgetreden bij het laden van de dienst: %s.',notInDic:'Niet in het woordenboek',changeTo:'Wijzig in',btnIgnore:'Negeren',btnIgnoreAll:'Alles negeren',btnReplace:'Vervangen',btnReplaceAll:'Alles vervangen',btnUndo:'Ongedaan maken',noSuggestions:'- Geen suggesties -',progress:'Bezig met spellingscontrole...',noMispell:'Klaar met spellingscontrole: geen fouten gevonden',noChanges:'Klaar met spellingscontrole: geen woorden aangepast',oneChange:'Klaar met spellingscontrole: één woord aangepast',manyChanges:'Klaar met spellingscontrole: %1 woorden aangepast',ieSpellDownload:'De spellingscontrole is niet geïnstalleerd. Wilt u deze nu downloaden?'},smiley:{toolbar:'Smiley',title:'Smiley invoegen',options:'Smiley opties'},elementsPath:{eleLabel:'Elementenpad',eleTitle:'%1 element'},numberedlist:'Genummerde lijst',bulletedlist:'Opsomming',indent:'Inspringing vergroten',outdent:'Inspringing verkleinen',justify:{left:'Links uitlijnen',center:'Centreren',right:'Rechts uitlijnen',block:'Uitvullen'},blockquote:'Citaatblok',clipboard:{title:'Plakken',cutError:'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.',copyError:'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.',pasteMsg:'Plak de tekst in het volgende vak gebruikmakend van uw toetsenbord (<strong>Ctrl/Cmd+V</strong>) en klik op OK.',securityMsg:'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.',pasteArea:'Plakgebied'},pastefromword:{confirmCleanup:'De tekst die u plakte lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?',toolbar:'Plakken als Word-gegevens',title:'Plakken als Word-gegevens',error:'Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout'},pasteText:{button:'Plakken als platte tekst',title:'Plakken als platte tekst'},templates:{button:'Sjablonen',title:'Inhoud sjablonen',options:'Template opties',insertOption:'Vervang de huidige inhoud',selectPromptMsg:'Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):',emptyListMsg:'(Geen sjablonen gedefinieerd)'},showBlocks:'Toon blokken',stylesCombo:{label:'Stijl',panelTitle:'Opmaakstijlen',panelTitle1:'Blok stijlen',panelTitle2:'Inline stijlen',panelTitle3:'Object stijlen'},format:{label:'Opmaak',panelTitle:'Opmaak',tag_p:'Normaal',tag_pre:'Met opmaak',tag_address:'Adres',tag_h1:'Kop 1',tag_h2:'Kop 2',tag_h3:'Kop 3',tag_h4:'Kop 4',tag_h5:'Kop 5',tag_h6:'Kop 6',tag_div:'Normaal (DIV)'},div:{title:'Div aanmaken',toolbar:'Div aanmaken',cssClassInputLabel:'Stylesheet klassen',styleSelectLabel:'Stijl',IdInputLabel:'Id',languageCodeInputLabel:' Taalcode',inlineStyleInputLabel:'Inline stijl',advisoryTitleInputLabel:'Adviserende titel',langDirLabel:'Schrijfrichting',langDirLTRLabel:'Links naar rechts (LTR)',langDirRTLLabel:'Rechts naar links (RTL)',edit:'Div wijzigen',remove:'Div verwijderen'},iframe:{title:'IFrame eigenschappen',toolbar:'IFrame',noUrl:'Geef de IFrame URL in',scrolling:'Scrollbalken inschakelen',border:'Framerand tonen'},font:{label:'Lettertype',voiceLabel:'Lettertype',panelTitle:'Lettertype'},fontSize:{label:'Lettergrootte',voiceLabel:'Lettergrootte',panelTitle:'Lettergrootte'},colorButton:{textColorTitle:'Tekstkleur',bgColorTitle:'Achtergrondkleur',panelTitle:'Kleuren',auto:'Automatisch',more:'Meer kleuren...'},colors:{'000':'Zwart',800000:'Kastanjebruin','8B4513':'Chocoladebruin','2F4F4F':'Donkerleigrijs','008080':'Blauwgroen','000080':'Marine','4B0082':'Indigo',696969:'Donkergrijs',B22222:'Baksteen',A52A2A:'Bruin',DAA520:'Donkergeel','006400':'Donkergroen','40E0D0':'Turquoise','0000CD':'Middenblauw',800080:'Paars',808080:'Grijs',F00:'Rood',FF8C00:'Donkeroranje',FFD700:'Goud','008000':'Groen','0FF':'Cyaan','00F':'Blauw',EE82EE:'Violet',A9A9A9:'Donkergrijs',FFA07A:'Lichtzalm',FFA500:'Oranje',FFFF00:'Geel','00FF00':'Felgroen',AFEEEE:'Lichtturquoise',ADD8E6:'Lichtblauw',DDA0DD:'Pruim',D3D3D3:'Lichtgrijs',FFF0F5:'Linnen',FAEBD7:'Ivoor',FFFFE0:'Lichtgeel',F0FFF0:'Honingdauw',F0FFFF:'Azuur',F0F8FF:'Licht hemelsblauw',E6E6FA:'Lavendel',FFF:'Wit'},scayt:{title:'Controleer de spelling tijdens het typen',opera_title:'Niet ondersteund door Opera',enable:'SCAYT inschakelen',disable:'SCAYT uitschakelen',about:'Over SCAYT',toggle:'SCAYT in/uitschakelen',options:'Opties',langs:'Talen',moreSuggestions:'Meer suggesties',ignore:'Negeren',ignoreAll:'Alles negeren',addWord:'Woord toevoegen',emptyDic:'De naam van het woordenboek mag niet leeg zijn.',optionsTab:'Opties',allCaps:'Negeer woorden helemaal in hoofdletters',ignoreDomainNames:'Negeer domeinnamen',mixedCase:'Negeer woorden met hoofd- en kleine letters',mixedWithDigits:'Negeer woorden met cijfers',languagesTab:'Talen',dictionariesTab:'Woordenboeken',dic_field_name:'Naam woordenboek',dic_create:'Aanmaken',dic_restore:'Terugzetten',dic_delete:'Verwijderen',dic_rename:'Hernoemen',dic_info:'Initieel wordt het gebruikerswoordenboek opgeslagen in een cookie. Cookies zijn echter beperkt in grootte. Zodra het gebruikerswoordenboek het punt bereikt waarop het niet meer in een cookie opgeslagen kan worden, dan wordt het woordenboek op de server opgeslagen. Om je persoonlijke woordenboek op je eigen server op te slaan, moet je een mapnaam opgeven. Indien je al een woordenboek hebt opgeslagen, typ dan de naam en klik op de Terugzetten knop.',aboutTab:'Over'},about:{title:'Over CKEditor',dlgTitle:'Over CKEditor',help:'Bekijk de $1 voor hulp.',userGuide:'CKEditor gebruiksaanwijzing',moreInfo:'Voor licentie informatie, bezoek onze website:',copy:'Copyright © $1. Alle rechten voorbehouden.'},maximize:'Maximaliseren',minimize:'Minimaliseren',fakeobjects:{anchor:'Interne link',flash:'Flash animatie',iframe:'IFrame',hiddenfield:'Verborgen veld',unknown:'Onbekend object'},resize:'Sleep om te herschalen',colordialog:{title:'Selecteer kleur',options:'Kleuropties',highlight:'Actief',selected:'Geselecteerde kleur',clear:'Wissen'},toolbarCollapse:'Werkbalk inklappen',toolbarExpand:'Werkbalk uitklappen',toolbarGroups:{document:'Document',clipboard:'Klembord/Ongedaan maken',editing:'Bewerken',forms:'Formulieren',basicstyles:'Basisstijlen',paragraph:'Paragraaf',links:'Links',insert:'Invoegen',styles:'Stijlen',colors:'Kleuren',tools:'Toepassingen'},bidi:{ltr:'Schrijfrichting van links naar rechts',rtl:'Schrijfrichting van rechts naar links'},docprops:{label:'Documenteigenschappen',title:'Documenteigenschappen',design:'Ontwerp',meta:'Meta tags',chooseColor:'Kies',other:'Anders...',docTitle:'Paginatitel',charset:'Tekencodering',charsetOther:'Andere tekencodering',charsetASCII:'ASCII',charsetCE:'Centraal Europees',charsetCT:'Traditioneel Chinees (Big5)',charsetCR:'Cyrillisch',charsetGR:'Grieks',charsetJP:'Japans',charsetKR:'Koreaans',charsetTR:'Turks',charsetUN:'Unicode (UTF-8)',charsetWE:'West Europees',docType:'Documenttype-definitie',docTypeOther:'Andere documenttype-definitie',xhtmlDec:'XHTML declaratie invoegen',bgColor:'Achtergrondkleur',bgImage:'Achtergrondafbeelding URL',bgFixed:'Niet-scrollend (gefixeerde) achtergrond',txtColor:'Tekstkleur',margin:'Pagina marges',marginTop:'Boven',marginLeft:'Links',marginRight:'Rechts',marginBottom:'Onder',metaKeywords:'Trefwoorden voor indexering (komma-gescheiden)',metaDescription:'Documentbeschrijving',metaAuthor:'Auteur',metaCopyright:'Auteursrechten',previewHtml:'<p>Dit is <strong>voorbeeld tekst</strong>. Je gebruikt <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/no.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/no.js
new file mode 100755
index 0000000..368b1e7
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/no.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.no={dir:'ltr',editorTitle:'Rikteksteditor, %1',editorHelp:'Trykk ALT 0 for hjelp',toolbars:'Verktøylinjer for editor',editor:'Rikteksteditor',source:'Kilde',newPage:'Ny side',save:'Lagre',preview:'Forhåndsvis',cut:'Klipp ut',copy:'Kopier',paste:'Lim inn',print:'Skriv ut',underline:'Understreking',bold:'Fet',italic:'Kursiv',selectAll:'Merk alt',removeFormat:'Fjern formatering',strike:'Gjennomstreking',subscript:'Senket skrift',superscript:'Hevet skrift',horizontalrule:'Sett inn horisontal linje',pagebreak:'Sett inn sideskift for utskrift',pagebreakAlt:'Sideskift',unlink:'Fjern lenke',undo:'Angre',redo:'Gjør om',common:{browseServer:'Bla igjennom server',url:'URL',protocol:'Protokoll',upload:'Last opp',uploadSubmit:'Send det til serveren',image:'Bilde',flash:'Flash',form:'Skjema',checkbox:'Avmerkingsboks',radio:'Alternativknapp',textField:'Tekstboks',textarea:'Tekstområde',hiddenField:'Skjult felt',button:'Knapp',select:'Rullegardinliste',imageButton:'Bildeknapp',notSet:'<ikke satt>',id:'Id',name:'Navn',langDir:'Språkretning',langDirLtr:'Venstre til høyre (VTH)',langDirRtl:'Høyre til venstre (HTV)',langCode:'Språkkode',longDescr:'Utvidet beskrivelse',cssClass:'Stilarkklasser',advisoryTitle:'Tittel',cssStyle:'Stil',ok:'OK',cancel:'Avbryt',close:'Lukk',preview:'Forhåndsvis',generalTab:'Generelt',advancedTab:'Avansert',validateNumberFailed:'Denne verdien er ikke et tall.',confirmNewPage:'Alle ulagrede endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?',confirmCancel:'Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?',options:'Valg',target:'Mål',targetNew:'Nytt vindu (_blank)',targetTop:'Hele vindu (_top)',targetSelf:'Samme vindu (_self)',targetParent:'Foreldrevindu (_parent)',langDirLTR:'Venstre til høyre (VTH)',langDirRTL:'Høyre til venstre (HTV)',styles:'Stil',cssClasses:'Stilarkklasser',width:'Bredde',height:'Høyde',align:'Juster',alignLeft:'Venstre',alignRight:'Høyre',alignCenter:'Midtjuster',alignTop:'Topp',alignMiddle:'Midten',alignBottom:'Bunn',invalidHeight:'Høyde må være et tall.',invalidWidth:'Bredde må være et tall.',invalidCssLength:'Den angitte verdien for feltet "%1" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).',invalidHtmlLength:'Den angitte verdien for feltet "%1" må være et positivt tall med eller uten en gyldig HTML-målingsenhet (px eller %).',invalidInlineStyle:'Verdi angitt for inline stil må bestå av en eller flere sett med formatet "navn : verdi", separert med semikolon',cssLengthTooltip:'Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).',unavailable:'%1<span class="cke_accessibility">, utilgjenglig</span>'},contextmenu:{options:'Alternativer for høyreklikkmeny'},specialChar:{toolbar:'Sett inn spesialtegn',title:'Velg spesialtegn',options:'Alternativer for spesialtegn'},link:{toolbar:'Sett inn/Rediger lenke',other:'<annen>',menu:'Rediger lenke',title:'Lenke',info:'Lenkeinfo',target:'Mål',upload:'Last opp',advanced:'Avansert',type:'Lenketype',toUrl:'URL',toAnchor:'Lenke til anker i teksten',toEmail:'E-post',targetFrame:'<ramme>',targetPopup:'<popup-vindu>',targetFrameName:'Målramme',targetPopupName:'Navn på popup-vindu',popupFeatures:'Egenskaper for popup-vindu',popupResizable:'Skalerbar',popupStatusBar:'Statuslinje',popupLocationBar:'Adresselinje',popupToolbar:'Verktøylinje',popupMenuBar:'Menylinje',popupFullScreen:'Fullskjerm (IE)',popupScrollBars:'Scrollbar',popupDependent:'Avhenging (Netscape)',popupLeft:'Venstre posisjon',popupTop:'Topp-posisjon',id:'Id',langDir:'Språkretning',langDirLTR:'Venstre til høyre (VTH)',langDirRTL:'Høyre til venstre (HTV)',acccessKey:'Aksessknapp',name:'Navn',langCode:'Språkkode',tabIndex:'Tabindeks',advisoryTitle:'Tittel',advisoryContentType:'Type',cssClasses:'Stilarkklasser',charset:'Lenket tegnsett',styles:'Stil',rel:'Relasjon (rel)',selectAnchor:'Velg et anker',anchorName:'Anker etter navn',anchorId:'Element etter ID',emailAddress:'E-postadresse',emailSubject:'Meldingsemne',emailBody:'Melding',noAnchors:'(Ingen anker i dokumentet)',noUrl:'Vennligst skriv inn lenkens URL',noEmail:'Vennligst skriv inn e-postadressen'},anchor:{toolbar:'Sett inn/Rediger anker',menu:'Egenskaper for anker',title:'Egenskaper for anker',name:'Ankernavn',errorName:'Vennligst skriv inn ankernavnet',remove:'Fjern anker'},list:{numberedTitle:'Egenskaper for nummerert liste',bulletedTitle:'Egenskaper for punktmerket liste',type:'Type',start:'Start',validateStartNumber:'Starten på listen må være et heltall.',circle:'Sirkel',disc:'Disk',square:'Firkant',none:'Ingen',notset:'<ikke satt>',armenian:'Armensk nummerering',georgian:'Georgisk nummerering (an, ban, gan, osv.)',lowerRoman:'Romertall, små (i, ii, iii, iv, v, osv.)',upperRoman:'Romertall, store (I, II, III, IV, V, osv.)',lowerAlpha:'Alfabetisk, små (a, b, c, d, e, osv.)',upperAlpha:'Alfabetisk, store (A, B, C, D, E, osv.)',lowerGreek:'Gresk, små (alpha, beta, gamma, osv.)',decimal:'Tall (1, 2, 3, osv.)',decimalLeadingZero:'Tall, med førstesiffer null (01, 02, 03, osv.)'},findAndReplace:{title:'Søk og erstatt',find:'Søk',replace:'Erstatt',findWhat:'Søk etter:',replaceWith:'Erstatt med:',notFoundMsg:'Fant ikke søketeksten.',findOptions:'Søkealternativer',matchCase:'Skill mellom store og små bokstaver',matchWord:'Bare hele ord',matchCyclic:'Søk i hele dokumentet',replaceAll:'Erstatt alle',replaceSuccessMsg:'%1 tilfelle(r) erstattet.'},table:{toolbar:'Tabell',title:'Egenskaper for tabell',menu:'Egenskaper for tabell',deleteTable:'Slett tabell',rows:'Rader',columns:'Kolonner',border:'Rammestørrelse',widthPx:'piksler',widthPc:'prosent',widthUnit:'Bredde-enhet',cellSpace:'Cellemarg',cellPad:'Cellepolstring',caption:'Tittel',summary:'Sammendrag',headers:'Overskrifter',headersNone:'Ingen',headersColumn:'Første kolonne',headersRow:'Første rad',headersBoth:'Begge',invalidRows:'Antall rader må være et tall større enn 0.',invalidCols:'Antall kolonner må være et tall større enn 0.',invalidBorder:'Rammestørrelse må være et tall.',invalidWidth:'Tabellbredde må være et tall.',invalidHeight:'Tabellhøyde må være et tall.',invalidCellSpacing:'Cellemarg må være et positivt tall.',invalidCellPadding:'Cellepolstring må være et positivt tall.',cell:{menu:'Celle',insertBefore:'Sett inn celle før',insertAfter:'Sett inn celle etter',deleteCell:'Slett celler',merge:'Slå sammen celler',mergeRight:'Slå sammen høyre',mergeDown:'Slå sammen ned',splitHorizontal:'Del celle horisontalt',splitVertical:'Del celle vertikalt',title:'Celleegenskaper',cellType:'Celletype',rowSpan:'Radspenn',colSpan:'Kolonnespenn',wordWrap:'Tekstbrytning',hAlign:'Horisontal justering',vAlign:'Vertikal justering',alignBaseline:'Grunnlinje',bgColor:'Bakgrunnsfarge',borderColor:'Rammefarge',data:'Data',header:'Overskrift',yes:'Ja',no:'Nei',invalidWidth:'Cellebredde må være et tall.',invalidHeight:'Cellehøyde må være et tall.',invalidRowSpan:'Radspenn må være et heltall.',invalidColSpan:'Kolonnespenn må være et heltall.',chooseColor:'Velg'},row:{menu:'Rader',insertBefore:'Sett inn rad før',insertAfter:'Sett inn rad etter',deleteRow:'Slett rader'},column:{menu:'Kolonne',insertBefore:'Sett inn kolonne før',insertAfter:'Sett inn kolonne etter',deleteColumn:'Slett kolonner'}},button:{title:'Egenskaper for knapp',text:'Tekst (verdi)',type:'Type',typeBtn:'Knapp',typeSbm:'Send',typeRst:'Nullstill'},checkboxAndRadio:{checkboxTitle:'Egenskaper for avmerkingsboks',radioTitle:'Egenskaper for alternativknapp',value:'Verdi',selected:'Valgt'},form:{title:'Egenskaper for skjema',menu:'Egenskaper for skjema',action:'Handling',method:'Metode',encoding:'Encoding'},select:{title:'Egenskaper for rullegardinliste',selectInfo:'Info',opAvail:'Tilgjenglige alternativer',value:'Verdi',size:'Størrelse',lines:'Linjer',chkMulti:'Tillat flervalg',opText:'Tekst',opValue:'Verdi',btnAdd:'Legg til',btnModify:'Endre',btnUp:'Opp',btnDown:'Ned',btnSetValue:'Sett som valgt',btnDelete:'Slett'},textarea:{title:'Egenskaper for tekstområde',cols:'Kolonner',rows:'Rader'},textfield:{title:'Egenskaper for tekstfelt',name:'Navn',value:'Verdi',charWidth:'Tegnbredde',maxChars:'Maks antall tegn',type:'Type',typeText:'Tekst',typePass:'Passord'},hidden:{title:'Egenskaper for skjult felt',name:'Navn',value:'Verdi'},image:{title:'Bildeegenskaper',titleButton:'Egenskaper for bildeknapp',menu:'Bildeegenskaper',infoTab:'Bildeinformasjon',btnUpload:'Send det til serveren',upload:'Last opp',alt:'Alternativ tekst',lockRatio:'Lås forhold',resetSize:'Tilbakestill størrelse',border:'Ramme',hSpace:'HMarg',vSpace:'VMarg',alertUrl:'Vennligst skriv bilde-urlen',linkTab:'Lenke',button2Img:'Vil du endre den valgte bildeknappen til et vanlig bilde?',img2Button:'Vil du endre det valgte bildet til en bildeknapp?',urlMissing:'Bildets adresse mangler.',validateBorder:'Ramme må være et heltall.',validateHSpace:'HMarg må være et heltall.',validateVSpace:'VMarg må være et heltall.'},flash:{properties:'Egenskaper for Flash-objekt',propertiesTab:'Egenskaper',title:'Flash-egenskaper',chkPlay:'Autospill',chkLoop:'Loop',chkMenu:'Slå på Flash-meny',chkFull:'Tillat fullskjerm',scale:'Skaler',scaleAll:'Vis alt',scaleNoBorder:'Ingen ramme',scaleFit:'Skaler til å passe',access:'Scripttilgang',accessAlways:'Alltid',accessSameDomain:'Samme domene',accessNever:'Aldri',alignAbsBottom:'Abs bunn',alignAbsMiddle:'Abs midten',alignBaseline:'Bunnlinje',alignTextTop:'Tekst topp',quality:'Kvalitet',qualityBest:'Best',qualityHigh:'Høy',qualityAutoHigh:'Auto høy',qualityMedium:'Medium',qualityAutoLow:'Auto lav',qualityLow:'Lav',windowModeWindow:'Vindu',windowModeOpaque:'Opaque',windowModeTransparent:'Gjennomsiktig',windowMode:'Vindumodus',flashvars:'Variabler for flash',bgcolor:'Bakgrunnsfarge',hSpace:'HMarg',vSpace:'VMarg',validateSrc:'Vennligst skriv inn lenkens url.',validateHSpace:'HMarg må være et tall.',validateVSpace:'VMarg må være et tall.'},spellCheck:{toolbar:'Stavekontroll',title:'Stavekontroll',notAvailable:'Beklager, tjenesten er utilgjenglig nå.',errorLoading:'Feil under lasting av applikasjonstjenestetjener: %s.',notInDic:'Ikke i ordboken',changeTo:'Endre til',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer alle',btnReplace:'Erstatt',btnReplaceAll:'Erstatt alle',btnUndo:'Angre',noSuggestions:'- Ingen forslag -',progress:'Stavekontroll pågår...',noMispell:'Stavekontroll fullført: ingen feilstavinger funnet',noChanges:'Stavekontroll fullført: ingen ord endret',oneChange:'Stavekontroll fullført: Ett ord endret',manyChanges:'Stavekontroll fullført: %1 ord endret',ieSpellDownload:'Stavekontroll er ikke installert. Vil du laste den ned nå?'},smiley:{toolbar:'Smil',title:'Sett inn smil',options:'Alternativer for smil'},elementsPath:{eleLabel:'Element-sti',eleTitle:'%1 element'},numberedlist:'Legg til/Fjern nummerert liste',bulletedlist:'Legg til/Fjern punktmerket liste',indent:'Øk innrykk',outdent:'Reduser innrykk',justify:{left:'Venstrejuster',center:'Midtstill',right:'Høyrejuster',block:'Blokkjuster'},blockquote:'Sitatblokk',clipboard:{title:'Lim inn',cutError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).',copyError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).',pasteMsg:'Vennligst lim inn i følgende boks med tastaturet (<STRONG>Ctrl/Cmd+V</STRONG>) og trykk <STRONG>OK</STRONG>.',securityMsg:'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.',pasteArea:'Innlimingsområde'},pastefromword:{confirmCleanup:'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?',toolbar:'Lim inn fra Word',title:'Lim inn fra Word',error:'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil'},pasteText:{button:'Lim inn som ren tekst',title:'Lim inn som ren tekst'},templates:{button:'Maler',title:'Innholdsmaler',options:'Alternativer for mal',insertOption:'Erstatt gjeldende innhold',selectPromptMsg:'Velg malen du vil åpne i redigeringsverktøyet:',emptyListMsg:'(Ingen maler definert)'},showBlocks:'Vis blokker',stylesCombo:{label:'Stil',panelTitle:'Stilformater',panelTitle1:'Blokkstiler',panelTitle2:'Inlinestiler',panelTitle3:'Objektstiler'},format:{label:'Format',panelTitle:'Avsnittsformat',tag_p:'Normal',tag_pre:'Formatert',tag_address:'Adresse',tag_h1:'Overskrift 1',tag_h2:'Overskrift 2',tag_h3:'Overskrift 3',tag_h4:'Overskrift 4',tag_h5:'Overskrift 5',tag_h6:'Overskrift 6',tag_div:'Normal (DIV)'},div:{title:'Sett inn Div Container',toolbar:'Sett inn Div Container',cssClassInputLabel:'Stilark-klasser',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:' Språkkode',inlineStyleInputLabel:'Inlinestiler',advisoryTitleInputLabel:'Tittel',langDirLabel:'Språkretning',langDirLTRLabel:'Venstre til høyre (VTH)',langDirRTLLabel:'Høyre til venstre (HTV)',edit:'Rediger Div',remove:'Fjern Div'},iframe:{title:'Egenskaper for IFrame',toolbar:'IFrame',noUrl:'Vennligst skriv inn URL for iframe',scrolling:'Aktiver scrollefelt',border:'Viss ramme rundt iframe'},font:{label:'Skrift',voiceLabel:'Font',panelTitle:'Skrift'},fontSize:{label:'Størrelse',voiceLabel:'Font Størrelse',panelTitle:'Størrelse'},colorButton:{textColorTitle:'Tekstfarge',bgColorTitle:'Bakgrunnsfarge',panelTitle:'Farger',auto:'Automatisk',more:'Flere farger...'},colors:{'000':'Svart',800000:'Rødbrun','8B4513':'Salbrun','2F4F4F':'Grønnsvart','008080':'Blågrønn','000080':'Marineblått','4B0082':'Indigo',696969:'Mørk grå',B22222:'Mørkerød',A52A2A:'Brun',DAA520:'Lys brun','006400':'Mørk grønn','40E0D0':'Turkis','0000CD':'Medium blå',800080:'Purpur',808080:'Grå',F00:'Rød',FF8C00:'Mørk oransje',FFD700:'Gull','008000':'Grønn','0FF':'Cyan','00F':'Blå',EE82EE:'Fiolett',A9A9A9:'Svak grå',FFA07A:'Rosa-oransje',FFA500:'Oransje',FFFF00:'Gul','00FF00':'Lime',AFEEEE:'Svak turkis',ADD8E6:'Lys Blå',DDA0DD:'Plomme',D3D3D3:'Lys grå',FFF0F5:'Svak lavendelrosa',FAEBD7:'Antikk-hvit',FFFFE0:'Lys gul',F0FFF0:'Honningmelon',F0FFFF:'Svakt asurblått',F0F8FF:'Svak cyan',E6E6FA:'Lavendel',FFF:'Hvit'},scayt:{title:'Stavekontroll mens du skriver',opera_title:'Ikke støttet av Opera',enable:'Slå på SCAYT',disable:'Slå av SCAYT',about:'Om SCAYT',toggle:'Veksle SCAYT',options:'Valg',langs:'Språk',moreSuggestions:'Flere forslag',ignore:'Ignorer',ignoreAll:'Ignorer Alle',addWord:'Legg til ord',emptyDic:'Ordboknavn bør ikke være tom.',optionsTab:'Valg',allCaps:'Ikke kontroller ord med kun store bokstaver',ignoreDomainNames:'Ikke kontroller domenenavn',mixedCase:'Ikke kontroller ord med blandet små og store bokstaver',mixedWithDigits:'Ikke kontroller ord som inneholder tall',languagesTab:'Språk',dictionariesTab:'Ordbøker',dic_field_name:'Ordboknavn',dic_create:'Opprett',dic_restore:'Gjenopprett',dic_delete:'Slett',dic_rename:'Gi nytt navn',dic_info:'Brukerordboken lagres først i en informasjonskapsel på din maskin, men det er en begrensning på hvor mye som kan lagres her. Når ordboken blir for stor til å lagres i en informasjonskapsel, vil vi i stedet lagre ordboken på vår server. For å lagre din personlige ordbok på vår server, burde du velge et navn for ordboken din. Hvis du allerede har lagret en ordbok, vennligst skriv inn ordbokens navn og klikk på Gjenopprett-knappen.',aboutTab:'Om'},about:{title:'Om CKEditor',dlgTitle:'Om CKEditor',help:'Se $1 for hjelp.',userGuide:'CKEditors brukerveiledning',moreInfo:'For lisensieringsinformasjon, vennligst besøk vårt nettsted:',copy:'Copyright © $1. Alle rettigheter reservert.'},maximize:'Maksimer',minimize:'Minimer',fakeobjects:{anchor:'Anker',flash:'Flash-animasjon',iframe:'IFrame',hiddenfield:'Skjult felt',unknown:'Ukjent objekt'},resize:'Dra for å skalere',colordialog:{title:'Velg farge',options:'Alternativer for farge',highlight:'Merk',selected:'Valgt',clear:'Tøm'},toolbarCollapse:'Skjul verktøylinje',toolbarExpand:'Vis verktøylinje',toolbarGroups:{document:'Dokument',clipboard:'Utklippstavle/Angre',editing:'Redigering',forms:'Skjema',basicstyles:'Basisstiler',paragraph:'Avsnitt',links:'Lenker',insert:'Innsetting',styles:'Stiler',colors:'Farger',tools:'Verktøy'},bidi:{ltr:'Tekstretning fra venstre til høyre',rtl:'Tekstretning fra høyre til venstre'},docprops:{label:'Dokumentegenskaper',title:'Dokumentegenskaper',design:'Design',meta:'Meta-data',chooseColor:'Velg',other:'<annen>',docTitle:'Sidetittel',charset:'Tegnsett',charsetOther:'Annet tegnsett',charsetASCII:'ASCII',charsetCE:'Sentraleuropeisk',charsetCT:'Tradisonell kinesisk(Big5)',charsetCR:'Kyrillisk',charsetGR:'Gresk',charsetJP:'Japansk',charsetKR:'Koreansk',charsetTR:'Tyrkisk',charsetUN:'Unicode (UTF-8)',charsetWE:'Vesteuropeisk',docType:'Dokumenttype header',docTypeOther:'Annet dokumenttype header',xhtmlDec:'Inkluder XHTML-deklarasjon',bgColor:'Bakgrunnsfarge',bgImage:'URL for bakgrunnsbilde',bgFixed:'Lås bakgrunnsbilde',txtColor:'Tekstfarge',margin:'Sidemargin',marginTop:'Topp',marginLeft:'Venstre',marginRight:'Høyre',marginBottom:'Bunn',metaKeywords:'Dokument nøkkelord (kommaseparert)',metaDescription:'Dokumentbeskrivelse',metaAuthor:'Forfatter',metaCopyright:'Kopirett',previewHtml:'<p>Dette er en <strong>eksempeltekst</strong>. Du bruker <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/pl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/pl.js
new file mode 100755
index 0000000..5cf7cd9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/pl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.pl={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Paski narzędzi edytora',editor:'Edytor tekstu sformatowanego',source:'Źródło dokumentu',newPage:'Nowa strona',save:'Zapisz',preview:'Podgląd',cut:'Wytnij',copy:'Kopiuj',paste:'Wklej',print:'Drukuj',underline:'Podkreślenie',bold:'Pogrubienie',italic:'Kursywa',selectAll:'Zaznacz wszystko',removeFormat:'Usuń formatowanie',strike:'Przekreślenie',subscript:'Indeks dolny',superscript:'Indeks górny',horizontalrule:'Wstaw poziomą linię',pagebreak:'Wstaw podział strony',pagebreakAlt:'Wstaw podział strony',unlink:'Usuń odnośnik',undo:'Cofnij',redo:'Ponów',common:{browseServer:'Przeglądaj',url:'Adres URL',protocol:'Protokół',upload:'Wyślij',uploadSubmit:'Wyślij',image:'Obrazek',flash:'Flash',form:'Formularz',checkbox:'Pole wyboru (checkbox)',radio:'Przycisk opcji (radio)',textField:'Pole tekstowe',textarea:'Obszar tekstowy',hiddenField:'Pole ukryte',button:'Przycisk',select:'Lista wyboru',imageButton:'Przycisk graficzny',notSet:'<nie ustawiono>',id:'Id',name:'Nazwa',langDir:'Kierunek tekstu',langDirLtr:'Od lewej do prawej (LTR)',langDirRtl:'Od prawej do lewej (RTL)',langCode:'Kod języka',longDescr:'Adres URL długiego opisu',cssClass:'Nazwa klasy CSS',advisoryTitle:'Opis obiektu docelowego',cssStyle:'Styl',ok:'OK',cancel:'Anuluj',close:'Zamknij',preview:'Podgląd',generalTab:'Ogólne',advancedTab:'Zaawansowane',validateNumberFailed:'Ta wartość nie jest liczbą.',confirmNewPage:'Wszystkie niezapisane zmiany zostaną utracone. Czy na pewno wczytać nową stronę?',confirmCancel:'Pewne opcje zostały zmienione. Czy na pewno zamknąć okno dialogowe?',options:'Opcje',target:'Obiekt docelowy',targetNew:'Nowe okno (_blank)',targetTop:'Okno najwyżej w hierarchii (_top)',targetSelf:'To samo okno (_self)',targetParent:'Okno nadrzędne (_parent)',langDirLTR:'Od lewej do prawej (LTR)',langDirRTL:'Od prawej do lewej (RTL)',styles:'Style',cssClasses:'Klasy arkusza stylów',width:'Szerokość',height:'Wysokość',align:'Wyrównaj',alignLeft:'Do lewej',alignRight:'Do prawej',alignCenter:'Do środka',alignTop:'Do góry',alignMiddle:'Do środka',alignBottom:'Do dołu',invalidHeight:'Wysokość musi być liczbą.',invalidWidth:'Szerokość musi być liczbą.',invalidCssLength:'Wartość podana dla pola "%1" musi być liczbą dodatnią bez jednostki lub z poprawną jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).',invalidHtmlLength:'Wartość podana dla pola "%1" musi być liczbą dodatnią bez jednostki lub z poprawną jednostką długości zgodną z HTML (px lub %).',invalidInlineStyle:'Wartość podana dla stylu musi składać się z jednej lub większej liczby krotek w formacie "nazwa : wartość", rozdzielonych średnikami.',cssLengthTooltip:'Wpisz liczbę dla wartości w pikselach lub liczbę wraz z jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).',unavailable:'%1<span class="cke_accessibility">, niedostępne</span>'},contextmenu:{options:'Opcje menu kontekstowego'},specialChar:{toolbar:'Wstaw znak specjalny',title:'Wybierz znak specjalny',options:'Opcje znaków specjalnych'},link:{toolbar:'Wstaw/edytuj odnośnik',other:'<inny>',menu:'Edytuj odnośnik',title:'Odnośnik',info:'Informacje ',target:'Obiekt docelowy',upload:'Wyślij',advanced:'Zaawansowane',type:'Typ odnośnika',toUrl:'Adres URL',toAnchor:'Odnośnik wewnątrz strony (kotwica)',toEmail:'Adres e-mail',targetFrame:'<ramka>',targetPopup:'<wyskakujące okno>',targetFrameName:'Nazwa ramki docelowej',targetPopupName:'Nazwa wyskakującego okna',popupFeatures:'Właściwości wyskakującego okna',popupResizable:'Skalowalny',popupStatusBar:'Pasek statusu',popupLocationBar:'Pasek adresu',popupToolbar:'Pasek narzędzi',popupMenuBar:'Pasek menu',popupFullScreen:'Pełny ekran (IE)',popupScrollBars:'Paski przewijania',popupDependent:'Okno zależne (Netscape)',popupLeft:'Pozycja w poziomie',popupTop:'Pozycja w pionie',id:'Id',langDir:'Kierunek tekstu',langDirLTR:'Od lewej do prawej (LTR)',langDirRTL:'Od prawej do lewej (RTL)',acccessKey:'Klawisz dostępu',name:'Nazwa',langCode:'Kod języka',tabIndex:'Indeks kolejności',advisoryTitle:'Opis obiektu docelowego',advisoryContentType:'Typ MIME obiektu docelowego',cssClasses:'Nazwa klasy CSS',charset:'Kodowanie znaków obiektu docelowego',styles:'Styl',rel:'Relacja',selectAnchor:'Wybierz kotwicę',anchorName:'Wg nazwy',anchorId:'Wg identyfikatora',emailAddress:'Adres e-mail',emailSubject:'Temat',emailBody:'Treść',noAnchors:'(W dokumencie nie zdefiniowano żadnych kotwic)',noUrl:'Podaj adres URL',noEmail:'Podaj adres e-mail'},anchor:{toolbar:'Wstaw/edytuj kotwicę',menu:'Właściwości kotwicy',title:'Właściwości kotwicy',name:'Nazwa kotwicy',errorName:'Wpisz nazwę kotwicy',remove:'Usuń kotwicę'},list:{numberedTitle:'Właściwości list numerowanych',bulletedTitle:'Właściwości list wypunktowanych',type:'Typ punktora',start:'Początek',validateStartNumber:'Listę musi rozpoczynać liczba całkowita.',circle:'Koło',disc:'Okrąg',square:'Kwadrat',none:'Brak',notset:'<nie ustawiono>',armenian:'Numerowanie armeńskie',georgian:'Numerowanie gruzińskie (an, ban, gan itd.)',lowerRoman:'Małe cyfry rzymskie (i, ii, iii, iv, v itd.)',upperRoman:'Duże cyfry rzymskie (I, II, III, IV, V itd.)',lowerAlpha:'Małe litery (a, b, c, d, e itd.)',upperAlpha:'Duże litery (A, B, C, D, E itd.)',lowerGreek:'Małe litery greckie (alpha, beta, gamma itd.)',decimal:'Liczby (1, 2, 3 itd.)',decimalLeadingZero:'Liczby z początkowym zerem (01, 02, 03 itd.)'},findAndReplace:{title:'Znajdź i zamień',find:'Znajdź',replace:'Zamień',findWhat:'Znajdź:',replaceWith:'Zastąp przez:',notFoundMsg:'Nie znaleziono szukanego hasła.',findOptions:'Opcje wyszukiwania',matchCase:'Uwzględnij wielkość liter',matchWord:'Całe słowa',matchCyclic:'Cykliczne dopasowanie',replaceAll:'Zamień wszystko',replaceSuccessMsg:'%1 wystąpień zastąpionych.'},table:{toolbar:'Tabela',title:'Właściwości tabeli',menu:'Właściwości tabeli',deleteTable:'Usuń tabelę',rows:'Liczba wierszy',columns:'Liczba kolumn',border:'Grubość obramowania',widthPx:'piksele',widthPc:'%',widthUnit:'jednostka szerokości',cellSpace:'Odstęp pomiędzy komórkami',cellPad:'Dopełnienie komórek',caption:'Tytuł',summary:'Podsumowanie',headers:'Nagłówki',headersNone:'Brak',headersColumn:'Pierwsza kolumna',headersRow:'Pierwszy wiersz',headersBoth:'Oba',invalidRows:'Liczba wierszy musi być większa niż 0.',invalidCols:'Liczba kolumn musi być większa niż 0.',invalidBorder:'Wartość obramowania musi być liczbą.',invalidWidth:'Szerokość tabeli musi być liczbą.',invalidHeight:'Wysokość tabeli musi być liczbą.',invalidCellSpacing:'Odstęp pomiędzy komórkami musi być liczbą dodatnią.',invalidCellPadding:'Dopełnienie komórek musi być liczbą dodatnią.',cell:{menu:'Komórka',insertBefore:'Wstaw komórkę z lewej',insertAfter:'Wstaw komórkę z prawej',deleteCell:'Usuń komórki',merge:'Połącz komórki',mergeRight:'Połącz z komórką z prawej',mergeDown:'Połącz z komórką poniżej',splitHorizontal:'Podziel komórkę poziomo',splitVertical:'Podziel komórkę pionowo',title:'Właściwości komórki',cellType:'Typ komórki',rowSpan:'Scalenie wierszy',colSpan:'Scalenie komórek',wordWrap:'Zawijanie słów',hAlign:'Wyrównanie poziome',vAlign:'Wyrównanie pionowe',alignBaseline:'Linia bazowa',bgColor:'Kolor tła',borderColor:'Kolor obramowania',data:'Dane',header:'Nagłówek',yes:'Tak',no:'Nie',invalidWidth:'Szerokość komórki musi być liczbą.',invalidHeight:'Wysokość komórki musi być liczbą.',invalidRowSpan:'Scalenie wierszy musi być liczbą całkowitą.',invalidColSpan:'Scalenie komórek musi być liczbą całkowitą.',chooseColor:'Wybierz'},row:{menu:'Wiersz',insertBefore:'Wstaw wiersz powyżej',insertAfter:'Wstaw wiersz poniżej',deleteRow:'Usuń wiersze'},column:{menu:'Kolumna',insertBefore:'Wstaw kolumnę z lewej',insertAfter:'Wstaw kolumnę z prawej',deleteColumn:'Usuń kolumny'}},button:{title:'Właściwości przycisku',text:'Tekst (Wartość)',type:'Typ',typeBtn:'Przycisk',typeSbm:'Wyślij',typeRst:'Wyczyść'},checkboxAndRadio:{checkboxTitle:'Właściwości pola wyboru (checkbox)',radioTitle:'Właściwości przycisku opcji (radio)',value:'Wartość',selected:'Zaznaczone'},form:{title:'Właściwości formularza',menu:'Właściwości formularza',action:'Akcja',method:'Metoda',encoding:'Kodowanie'},select:{title:'Właściwości listy wyboru',selectInfo:'Informacje',opAvail:'Dostępne opcje',value:'Wartość',size:'Rozmiar',lines:'wierszy',chkMulti:'Wielokrotny wybór',opText:'Tekst',opValue:'Wartość',btnAdd:'Dodaj',btnModify:'Zmień',btnUp:'Do góry',btnDown:'Do dołu',btnSetValue:'Ustaw jako zaznaczoną',btnDelete:'Usuń'},textarea:{title:'Właściwości obszaru tekstowego',cols:'Liczba kolumn',rows:'Liczba wierszy'},textfield:{title:'Właściwości pola tekstowego',name:'Nazwa',value:'Wartość',charWidth:'Szerokość w znakach',maxChars:'Szerokość maksymalna',type:'Typ',typeText:'Tekst',typePass:'Hasło'},hidden:{title:'Właściwości pola ukrytego',name:'Nazwa',value:'Wartość'},image:{title:'Właściwości obrazka',titleButton:'Właściwości przycisku graficznego',menu:'Właściwości obrazka',infoTab:'Informacje o obrazku',btnUpload:'Wyślij',upload:'Wyślij',alt:'Tekst zastępczy',lockRatio:'Zablokuj proporcje',resetSize:'Przywróć rozmiar',border:'Obramowanie',hSpace:'Odstęp poziomy',vSpace:'Odstęp pionowy',alertUrl:'Podaj adres obrazka.',linkTab:'Hiperłącze',button2Img:'Czy chcesz przekonwertować zaznaczony przycisk graficzny do zwykłego obrazka?',img2Button:'Czy chcesz przekonwertować zaznaczony obrazek do przycisku graficznego?',urlMissing:'Podaj adres URL obrazka.',validateBorder:'Wartość obramowania musi być liczbą całkowitą.',validateHSpace:'Wartość odstępu poziomego musi być liczbą całkowitą.',validateVSpace:'Wartość odstępu pionowego musi być liczbą całkowitą.'},flash:{properties:'Właściwości obiektu Flash',propertiesTab:'Właściwości',title:'Właściwości obiektu Flash',chkPlay:'Autoodtwarzanie',chkLoop:'Pętla',chkMenu:'Włącz menu',chkFull:'Zezwól na pełny ekran',scale:'Skaluj',scaleAll:'Pokaż wszystko',scaleNoBorder:'Bez obramowania',scaleFit:'Dokładne dopasowanie',access:'Dostęp skryptów',accessAlways:'Zawsze',accessSameDomain:'Ta sama domena',accessNever:'Nigdy',alignAbsBottom:'Do dołu',alignAbsMiddle:'Do środka w pionie',alignBaseline:'Do linii bazowej',alignTextTop:'Do góry tekstu',quality:'Jakość',qualityBest:'Najlepsza',qualityHigh:'Wysoka',qualityAutoHigh:'Auto wysoka',qualityMedium:'Średnia',qualityAutoLow:'Auto niska',qualityLow:'Niska',windowModeWindow:'Okno',windowModeOpaque:'Nieprzezroczyste',windowModeTransparent:'Przezroczyste',windowMode:'Tryb okna',flashvars:'Zmienne obiektu Flash',bgcolor:'Kolor tła',hSpace:'Odstęp poziomy',vSpace:'Odstęp pionowy',validateSrc:'Podaj adres URL',validateHSpace:'Odstęp poziomy musi być liczbą.',validateVSpace:'Odstęp pionowy musi być liczbą.'},spellCheck:{toolbar:'Sprawdź pisownię',title:'Sprawdź pisownię',notAvailable:'Przepraszamy, ale usługa jest obecnie niedostępna.',errorLoading:'Błąd wczytywania hosta aplikacji usługi: %s.',notInDic:'Słowa nie ma w słowniku',changeTo:'Zmień na',btnIgnore:'Ignoruj',btnIgnoreAll:'Ignoruj wszystkie',btnReplace:'Zmień',btnReplaceAll:'Zmień wszystkie',btnUndo:'Cofnij',noSuggestions:'- Brak sugestii -',progress:'Trwa sprawdzanie...',noMispell:'Sprawdzanie zakończone: nie znaleziono błędów',noChanges:'Sprawdzanie zakończone: nie zmieniono żadnego słowa',oneChange:'Sprawdzanie zakończone: zmieniono jedno słowo',manyChanges:'Sprawdzanie zakończone: zmieniono %l słów',ieSpellDownload:'Słownik nie jest zainstalowany. Czy chcesz go pobrać?'},smiley:{toolbar:'Emotikony',title:'Wstaw emotikona',options:'Opcje emotikonów'},elementsPath:{eleLabel:'Ścieżka elementów',eleTitle:'element %1'},numberedlist:'Lista numerowana',bulletedlist:'Lista wypunktowana',indent:'Zwiększ wcięcie',outdent:'Zmniejsz wcięcie',justify:{left:'Wyrównaj do lewej',center:'Wyśrodkuj',right:'Wyrównaj do prawej',block:'Wyjustuj'},blockquote:'Cytat',clipboard:{title:'Wklej',cutError:'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.',copyError:'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.',pasteMsg:'Wklej tekst w poniższym polu, używając skrótu klawiaturowego (<STRONG>Ctrl/Cmd+V</STRONG>), i kliknij <STRONG>OK</STRONG>.',securityMsg:'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę ponownie wkleić dane w tym oknie.',pasteArea:'Obszar wklejania'},pastefromword:{confirmCleanup:'Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Microsoft Word. Czy chcesz go wyczyścić przed wklejeniem?',toolbar:'Wklej z programu MS Word',title:'Wklej z programu MS Word',error:'Wyczyszczenie wklejonych danych nie było możliwe z powodu wystąpienia błędu.'},pasteText:{button:'Wklej jako czysty tekst',title:'Wklej jako czysty tekst'},templates:{button:'Szablony',title:'Szablony zawartości',options:'Opcje szablonów',insertOption:'Zastąp obecną zawartość',selectPromptMsg:'Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):',emptyListMsg:'(Brak zdefiniowanych szablonów)'},showBlocks:'Pokaż bloki',stylesCombo:{label:'Styl',panelTitle:'Style formatujące',panelTitle1:'Style blokowe',panelTitle2:'Style liniowe',panelTitle3:'Style obiektowe'},format:{label:'Format',panelTitle:'Format',tag_p:'Normalny',tag_pre:'Tekst sformatowany',tag_address:'Adres',tag_h1:'Nagłówek 1',tag_h2:'Nagłówek 2',tag_h3:'Nagłówek 3',tag_h4:'Nagłówek 4',tag_h5:'Nagłówek 5',tag_h6:'Nagłówek 6',tag_div:'Normalny (DIV)'},div:{title:'Utwórz pojemnik Div',toolbar:'Utwórz pojemnik Div',cssClassInputLabel:'Klasy arkusza stylów',styleSelectLabel:'Styl',IdInputLabel:'Id',languageCodeInputLabel:'Kod języka',inlineStyleInputLabel:'Style liniowe',advisoryTitleInputLabel:'Opis obiektu docelowego',langDirLabel:'Kierunek tekstu',langDirLTRLabel:'Od lewej do prawej (LTR)',langDirRTLLabel:'Od prawej do lewej (RTL)',edit:'Edytuj pojemnik Div',remove:'Usuń pojemnik Div'},iframe:{title:'Właściwości elementu IFrame',toolbar:'IFrame',noUrl:'Podaj adres URL elementu IFrame',scrolling:'Włącz paski przewijania',border:'Pokaż obramowanie obiektu IFrame'},font:{label:'Czcionka',voiceLabel:'Czcionka',panelTitle:'Czcionka'},fontSize:{label:'Rozmiar',voiceLabel:'Rozmiar czcionki',panelTitle:'Rozmiar'},colorButton:{textColorTitle:'Kolor tekstu',bgColorTitle:'Kolor tła',panelTitle:'Kolory',auto:'Automatycznie',more:'Więcej kolorów...'},colors:{'000':'Czarny',800000:'Kasztanowy','8B4513':'Czekoladowy','2F4F4F':'Ciemnografitowy','008080':'Morski','000080':'Granatowy','4B0082':'Indygo',696969:'Ciemnoszary',B22222:'Czerwień żelazowa',A52A2A:'Brązowy',DAA520:'Ciemnozłoty','006400':'Ciemnozielony','40E0D0':'Turkusowy','0000CD':'Ciemnoniebieski',800080:'Purpurowy',808080:'Szary',F00:'Czerwony',FF8C00:'Ciemnopomarańczowy',FFD700:'Złoty','008000':'Zielony','0FF':'Cyjan','00F':'Niebieski',EE82EE:'Fioletowy',A9A9A9:'Przygaszony szary',FFA07A:'Łososiowy',FFA500:'Pomarańczowy',FFFF00:'Żółty','00FF00':'Limonkowy',AFEEEE:'Bladoturkusowy',ADD8E6:'Jasnoniebieski',DDA0DD:'Śliwkowy',D3D3D3:'Jasnoszary',FFF0F5:'Jasnolawendowy',FAEBD7:'Kremowobiały',FFFFE0:'Jasnożółty',F0FFF0:'Bladozielony',F0FFFF:'Jasnolazurowy',F0F8FF:'Jasnobłękitny',E6E6FA:'Lawendowy',FFF:'Biały'},scayt:{title:'Sprawdź pisownię podczas pisania (SCAYT)',opera_title:'Funkcja nie jest obsługiwana przez przeglądarkę Opera',enable:'Włącz SCAYT',disable:'Wyłącz SCAYT',about:'Informacje o SCAYT',toggle:'Przełącz SCAYT',options:'Opcje',langs:'Języki',moreSuggestions:'Więcej sugestii',ignore:'Ignoruj',ignoreAll:'Ignoruj wszystkie',addWord:'Dodaj słowo',emptyDic:'Nazwa słownika nie może być pusta.',optionsTab:'Opcje',allCaps:'Ignoruj wyrazy pisane dużymi literami',ignoreDomainNames:'Ignoruj nazwy domen',mixedCase:'Ignoruj wyrazy pisane dużymi i małymi literami',mixedWithDigits:'Ignoruj wyrazy zawierające cyfry',languagesTab:'Języki',dictionariesTab:'Słowniki',dic_field_name:'Nazwa słownika',dic_create:'Utwórz',dic_restore:'Przywróć',dic_delete:'Usuń',dic_rename:'Zmień nazwę',dic_info:'Początkowo słownik użytkownika przechowywany jest w cookie. Pliki cookie mają jednak ograniczoną pojemność. Jeśli słownik użytkownika przekroczy wielkość dopuszczalną dla pliku cookie, możliwe jest przechowanie go na naszym serwerze. W celu zapisania słownika na serwerze niezbędne jest nadanie mu nazwy. Jeśli słownik został już zapisany na serwerze, wystarczy podać jego nazwę i nacisnąć przycisk Przywróć.',aboutTab:'Informacje o SCAYT'},about:{title:'Informacje o programie CKEditor',dlgTitle:'Informacje o programie CKEditor',help:'Pomoc znajdziesz w $1.',userGuide:'podręczniku użytkownika programu CKEditor',moreInfo:'Informacje na temat licencji można znaleźć na naszej stronie:',copy:'Copyright © $1. Wszelkie prawa zastrzeżone.'},maximize:'Maksymalizuj',minimize:'Minimalizuj',fakeobjects:{anchor:'Kotwica',flash:'Animacja Flash',iframe:'IFrame',hiddenfield:'Pole ukryte',unknown:'Nieznany obiekt'},resize:'Przeciągnij, aby zmienić rozmiar',colordialog:{title:'Wybierz kolor',options:'Opcje koloru',highlight:'Zaznacz',selected:'Wybrany',clear:'Wyczyść'},toolbarCollapse:'Zwiń pasek narzędzi',toolbarExpand:'Rozwiń pasek narzędzi',toolbarGroups:{document:'Dokument',clipboard:'Schowek/Wstecz',editing:'Edycja',forms:'Formularze',basicstyles:'Style podstawowe',paragraph:'Akapit',links:'Hiperłącza',insert:'Wstawianie',styles:'Style',colors:'Kolory',tools:'Narzędzia'},bidi:{ltr:'Kierunek tekstu od lewej strony do prawej',rtl:'Kierunek tekstu od prawej strony do lewej'},docprops:{label:'Właściwości dokumentu',title:'Właściwości dokumentu',design:'Projekt strony',meta:'Znaczniki meta',chooseColor:'Wybierz',other:'Inne',docTitle:'Tytuł strony',charset:'Kodowanie znaków',charsetOther:'Inne kodowanie znaków',charsetASCII:'ASCII',charsetCE:'Środkowoeuropejskie',charsetCT:'Chińskie tradycyjne (Big5)',charsetCR:'Cyrylica',charsetGR:'Greckie',charsetJP:'Japońskie',charsetKR:'Koreańskie',charsetTR:'Tureckie',charsetUN:'Unicode (UTF-8)',charsetWE:'Zachodnioeuropejskie',docType:'Definicja typu dokumentu',docTypeOther:'Inna definicja typu dokumentu',xhtmlDec:'Uwzględnij deklaracje XHTML',bgColor:'Kolor tła',bgImage:'Adres URL obrazka tła',bgFixed:'Tło nieruchome (nieprzewijające się)',txtColor:'Kolor tekstu',margin:'Marginesy strony',marginTop:'Górny',marginLeft:'Lewy',marginRight:'Prawy',marginBottom:'Dolny',metaKeywords:'Słowa kluczowe dokumentu (oddzielone przecinkami)',metaDescription:'Opis dokumentu',metaAuthor:'Autor',metaCopyright:'Prawa autorskie',previewHtml:'<p>To jest <strong>przykładowy tekst</strong>. Korzystasz z programu <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/pt.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/pt.js
new file mode 100755
index 0000000..1956677
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/pt.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.pt={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor de barras de ferramentas',editor:'Editor de texto enriquecido',source:'Fonte',newPage:'Nova Página',save:'Guardar',preview:'Pré-visualizar',cut:'Cortar',copy:'Copiar',paste:'Colar',print:'Imprimir',underline:'Sublinhado',bold:'Negrito',italic:'Itálico',selectAll:'Seleccionar Tudo',removeFormat:'Eliminar Formato',strike:'Rasurado',subscript:'Superior à Linha',superscript:'Inferior à Linha',horizontalrule:'Inserir Linha Horizontal',pagebreak:'Inserir Quebra de Página',pagebreakAlt:'Quebra de página',unlink:'Eliminar Hiperligação',undo:'Anular',redo:'Repetir',common:{browseServer:'Navegar no Servidor',url:'URL',protocol:'Protocolo',upload:'Carregar',uploadSubmit:'Enviar para o Servidor',image:'Imagem',flash:'Flash',form:'Formulário',checkbox:'Caixa de Verificação',radio:'Botão de Opção',textField:'Campo de Texto',textarea:'Área de Texto',hiddenField:'Campo Escondido',button:'Botão',select:'Caixa de Combinação',imageButton:'Botão de Imagem',notSet:'<Não definido>',id:'Id',name:'Nome',langDir:'Orientação de idioma',langDirLtr:'Esquerda à Direita (LTR)',langDirRtl:'Direita a Esquerda (RTL)',langCode:'Código de Idioma',longDescr:'Descrição Completa do URL',cssClass:'Classes de Estilo de Folhas Classes',advisoryTitle:'Título',cssStyle:'Estilo',ok:'OK',cancel:'Cancelar',close:'Fechar',preview:'Pré-visualização',generalTab:'Geral',advancedTab:'Avançado',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Opções',target:'Alvo',targetNew:'Nova Janela (_blank)',targetTop:'Janela superior (_top)',targetSelf:'Mesma janela (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Direita para Esquerda (RTL)',styles:'Estilo',cssClasses:'Stylesheet Classes',width:'Largura',height:'Altura',align:'Alinhamento',alignLeft:'Esquerda',alignRight:'Direita',alignCenter:'Centrado',alignTop:'Topo',alignMiddle:'Centro',alignBottom:'Fundo',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Menu de opções de contexto'},specialChar:{toolbar:'Inserir Caracter Especial',title:'Seleccione um caracter especial',options:'Special Character Options'},link:{toolbar:'Inserir/Editar Hiperligação',other:'<outro>',menu:'Editar Hiperligação',title:'Hiperligação',info:'Informação de Hiperligação',target:'Destino',upload:'Carregar',advanced:'Avançado',type:'Tipo de Hiperligação',toUrl:'URL',toAnchor:'Referência a esta página',toEmail:'E-Mail',targetFrame:'<Frame>',targetPopup:'<Janela de popup>',targetFrameName:'Nome do Frame Destino',targetPopupName:'Nome da Janela de Popup',popupFeatures:'Características de Janela de Popup',popupResizable:'Redimensionável',popupStatusBar:'Barra de Estado',popupLocationBar:'Barra de localização',popupToolbar:'Barra de Ferramentas',popupMenuBar:'Barra de Menu',popupFullScreen:'Janela Completa (IE)',popupScrollBars:'Barras de deslocamento',popupDependent:'Dependente (Netscape)',popupLeft:'Posição Esquerda',popupTop:'Posição Direita',id:'ID',langDir:'Orientação de idioma',langDirLTR:'Esquerda à Direita (LTR)',langDirRTL:'Direita a Esquerda (RTL)',acccessKey:'Chave de Acesso',name:'Nome',langCode:'Orientação de idioma',tabIndex:'Índice de Tubulação',advisoryTitle:'Título',advisoryContentType:'Tipo de Conteúdo',cssClasses:'Classes de Estilo de Folhas Classes',charset:'Fonte de caracteres vinculado',styles:'Estilo',rel:'Relação',selectAnchor:'Seleccionar una referência',anchorName:'Por Nome de Referência',anchorId:'Por ID de elemento',emailAddress:'Endereço de E-Mail',emailSubject:'Título de Mensagem',emailBody:'Corpo da Mensagem',noAnchors:'(Não há referências disponíveis no documento)',noUrl:'Por favor introduza a hiperligação URL',noEmail:'Por favor introduza o endereço de e-mail'},anchor:{toolbar:' Inserir/Editar Âncora',menu:'Propriedades da Âncora',title:'Propriedades da Âncora',name:'Nome da Âncora',errorName:'Por favor, introduza o nome da âncora',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Tipo',start:'Iniciar',validateStartNumber:'List start number must be a whole number.',circle:'Círculo',disc:'Disco',square:'Quadrado',none:'Nenhum',notset:'<not set>',armenian:'Numeração armênia',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Procurar',replace:'Substituir',findWhat:'Texto a Procurar:',replaceWith:'Substituir por:',notFoundMsg:'O texto especificado não foi encontrado.',findOptions:'Find Options',matchCase:'Maiúsculas/Minúsculas',matchWord:'Coincidir com toda a palavra',matchCyclic:'Match cyclic',replaceAll:'Substituir Tudo',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Propriedades da Tabela',menu:'Propriedades da Tabela',deleteTable:'Eliminar Tabela',rows:'Linhas',columns:'Colunas',border:'Tamanho do Limite',widthPx:'pixeis',widthPc:'percentagem',widthUnit:'width unit',cellSpace:'Esp. e/células',cellPad:'Esp. interior',caption:'Título',summary:'Sumário',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Célula',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Eliminar Célula',merge:'Unir Células',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Linha',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Eliminar Linhas'},column:{menu:'Coluna',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Eliminar Coluna'}},button:{title:'Propriedades do Botão',text:'Texto (Valor)',type:'Tipo',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Propriedades da Caixa de Verificação',radioTitle:'Propriedades do Botão de Opção',value:'Valor',selected:'Seleccionado'},form:{title:'Propriedades do Formulário',menu:'Propriedades do Formulário',action:'Acção',method:'Método',encoding:'Encoding'},select:{title:'Propriedades da Caixa de Combinação',selectInfo:'Informação',opAvail:'Opções Possíveis',value:'Valor',size:'Tamanho',lines:'linhas',chkMulti:'Permitir selecções múltiplas',opText:'Texto',opValue:'Valor',btnAdd:'Adicionar',btnModify:'Modificar',btnUp:'Para cima',btnDown:'Para baixo',btnSetValue:'Definir um valor por defeito',btnDelete:'Apagar'},textarea:{title:'Propriedades da Área de Texto',cols:'Colunas',rows:'Linhas'},textfield:{title:'Propriedades do Campo de Texto',name:'Nome',value:'Valor',charWidth:'Tamanho do caracter',maxChars:'Nr. Máximo de Caracteres',type:'Tipo',typeText:'Texto',typePass:'Palavra-chave'},hidden:{title:'Propriedades do Campo Escondido',name:'Nome',value:'Valor'},image:{title:'Propriedades da Imagem',titleButton:'Propriedades do Botão de imagens',menu:'Propriedades da Imagem',infoTab:'Informação da Imagem',btnUpload:'Enviar para o Servidor',upload:'Carregar',alt:'Texto Alternativo',lockRatio:'Proporcional',resetSize:'Tamanho Original',border:'Limite',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',alertUrl:'Por favor introduza o URL da imagem',linkTab:'Hiperligação',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Propriedades do Flash',propertiesTab:'Properties',title:'Propriedades do Flash',chkPlay:'Reproduzir automaticamente',chkLoop:'Loop',chkMenu:'Permitir Menu do Flash',chkFull:'Allow Fullscreen',scale:'Escala',scaleAll:'Mostrar tudo',scaleNoBorder:'Sem Limites',scaleFit:'Tamanho Exacto',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs inferior',alignAbsMiddle:'Abs centro',alignBaseline:'Linha de base',alignTextTop:'Topo do texto',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Cor de Fundo',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',validateSrc:'Por favor introduza a hiperligação URL',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Verificação Ortográfica',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Não está num directório',changeTo:'Mudar para',btnIgnore:'Ignorar',btnIgnoreAll:'Ignorar Tudo',btnReplace:'Substituir',btnReplaceAll:'Substituir Tudo',btnUndo:'Anular',noSuggestions:'- Sem sugestões -',progress:'Verificação ortográfica em progresso…',noMispell:'Verificação ortográfica completa: não foram encontrados erros',noChanges:'Verificação ortográfica completa: não houve alteração de palavras',oneChange:'Verificação ortográfica completa: uma palavra alterada',manyChanges:'Verificação ortográfica completa: %1 palavras alteradas',ieSpellDownload:' Verificação ortográfica não instalada. Quer descarregar agora?'},smiley:{toolbar:'Emoticons',title:'Inserir um Emoticon',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Numeração',bulletedlist:'Marcas',indent:'Aumentar Avanço',outdent:'Diminuir Avanço',justify:{left:'Alinhar à Esquerda',center:'Alinhar ao Centro',right:'Alinhar à Direita',block:'Justificado'},blockquote:'Bloco de citação',clipboard:{title:'Colar',cutError:'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).',copyError:'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).',pasteMsg:'Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl/Cmd+V</STRONG>) e prima <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Colar do Word',title:'Colar do Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Colar como Texto Simples',title:'Colar como Texto Simples'},templates:{button:'Modelos',title:'Modelo de Conteúdo',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Por favor, seleccione o modelo a abrir no editor<br>(o conteúdo actual será perdido):',emptyListMsg:'(Sem modelos definidos)'},showBlocks:'Exibir blocos',stylesCombo:{label:'Estilo',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formato',panelTitle:'Formato',tag_p:'Normal',tag_pre:'Formatado',tag_address:'Endereço',tag_h1:'Título 1',tag_h2:'Título 2',tag_h3:'Título 3',tag_h4:'Título 4',tag_h5:'Título 5',tag_h6:'Título 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Tipo de Letra',voiceLabel:'Font',panelTitle:'Tipo de Letra'},fontSize:{label:'Tamanho',voiceLabel:'Font Size',panelTitle:'Tamanho'},colorButton:{textColorTitle:'Cor do Texto',bgColorTitle:'Cor de Fundo',panelTitle:'Colors',auto:'Automático',more:'Mais Cores...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximizar',minimize:'Minimizar',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Arraste para redimensionar',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Colapsar Barra',toolbarExpand:'Expandir Barra',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Propriedades do Documento',title:'Propriedades do Documento',design:'Design',meta:'Meta Data',chooseColor:'Choose',other:'<outro>',docTitle:'Título da Página',charset:'Codificação de Caracteres',charsetOther:'Outra Codificação de Caracteres',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Tipo de Cabeçalho do Documento',docTypeOther:'Outro Tipo de Cabeçalho do Documento',xhtmlDec:'Incluir Declarações XHTML',bgColor:'Cor de Fundo',bgImage:'Caminho para a Imagem de Fundo',bgFixed:'Fundo Fixo',txtColor:'Cor do Texto',margin:'Margem das Páginas',marginTop:'Topo',marginLeft:'Esquerda',marginRight:'Direita',marginBottom:'Fundo',metaKeywords:'Palavras de Indexação do Documento (separadas por virgula)',metaDescription:'Descrição do Documento',metaAuthor:'Autor',metaCopyright:'Direitos de Autor',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/pt-br.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/pt-br.js
new file mode 100755
index 0000000..1a09d40
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/pt-br.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['pt-br']={dir:'ltr',editorTitle:'Editor de texto rico, %1',editorHelp:'Pressione ALT+0 para ajuda',toolbars:'Barra de Ferramentas do Editor',editor:'Editor de Texto',source:'Código-Fonte',newPage:'Novo',save:'Salvar',preview:'Visualizar',cut:'Recortar',copy:'Copiar',paste:'Colar',print:'Imprimir',underline:'Sublinhado',bold:'Negrito',italic:'Itálico',selectAll:'Selecionar Tudo',removeFormat:'Remover Formatação',strike:'Tachado',subscript:'Subscrito',superscript:'Sobrescrito',horizontalrule:'Inserir Linha Horizontal',pagebreak:'Inserir Quebra de Página',pagebreakAlt:'Quebra de Página',unlink:'Remover Link',undo:'Desfazer',redo:'Refazer',common:{browseServer:'Localizar no Servidor',url:'URL',protocol:'Protocolo',upload:'Enviar ao Servidor',uploadSubmit:'Enviar para o Servidor',image:'Imagem',flash:'Flash',form:'Formulário',checkbox:'Caixa de Seleção',radio:'Botão de Opção',textField:'Caixa de Texto',textarea:'Área de Texto',hiddenField:'Campo Oculto',button:'Botão',select:'Caixa de Listagem',imageButton:'Botão de Imagem',notSet:'<não ajustado>',id:'Id',name:'Nome',langDir:'Direção do idioma',langDirLtr:'Esquerda para Direita (LTR)',langDirRtl:'Direita para Esquerda (RTL)',langCode:'Idioma',longDescr:'Descrição da URL',cssClass:'Classe de CSS',advisoryTitle:'Título',cssStyle:'Estilos',ok:'OK',cancel:'Cancelar',close:'Fechar',preview:'Visualizar',generalTab:'Geral',advancedTab:'Avançado',validateNumberFailed:'Este valor não é um número.',confirmNewPage:'Todas as mudanças não salvas serão perdidas. Tem certeza de que quer abrir uma nova página?',confirmCancel:'Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?',options:'Opções',target:'Destino',targetNew:'Nova Janela (_blank)',targetTop:'Janela de Cima (_top)',targetSelf:'Mesma Janela (_self)',targetParent:'Janela Pai (_parent)',langDirLTR:'Esquerda para Direita (LTR)',langDirRTL:'Direita para Esquerda (RTL)',styles:'Estilo',cssClasses:'Classes',width:'Largura',height:'Altura',align:'Alinhamento',alignLeft:'Esquerda',alignRight:'Direita',alignCenter:'Centralizado',alignTop:'Superior',alignMiddle:'Centralizado',alignBottom:'Inferior',invalidHeight:'A altura tem que ser um número',invalidWidth:'A largura tem que ser um número.',invalidCssLength:'O valor do campo "%1" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'O valor do campo "%1" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de HTML (px or %).',invalidInlineStyle:'O valor válido para estilo deve conter uma ou mais tuplas no formato "nome : valor", separados por ponto e vírgula.',cssLengthTooltip:'Insira um número para valor em pixels ou um número seguido de uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, indisponível</span>'},contextmenu:{options:'Opções Menu de Contexto'},specialChar:{toolbar:'Inserir Caractere Especial',title:'Selecione um Caractere Especial',options:'Opções de Caractere Especial'},link:{toolbar:'Inserir/Editar Link',other:'<outro>',menu:'Editar Link',title:'Editar Link',info:'Informações',target:'Destino',upload:'Enviar ao Servidor',advanced:'Avançado',type:'Tipo de hiperlink',toUrl:'URL',toAnchor:'Âncora nesta página',toEmail:'E-Mail',targetFrame:'<frame>',targetPopup:'<janela popup>',targetFrameName:'Nome do Frame de Destino',targetPopupName:'Nome da Janela Pop-up',popupFeatures:'Propriedades da Janela Pop-up',popupResizable:'Redimensionável',popupStatusBar:'Barra de Status',popupLocationBar:'Barra de Endereços',popupToolbar:'Barra de Ferramentas',popupMenuBar:'Barra de Menus',popupFullScreen:'Modo Tela Cheia (IE)',popupScrollBars:'Barras de Rolagem',popupDependent:'Dependente (Netscape)',popupLeft:'Esquerda',popupTop:'Topo',id:'Id',langDir:'Direção do idioma',langDirLTR:'Esquerda para Direita (LTR)',langDirRTL:'Direita para Esquerda (RTL)',acccessKey:'Chave de Acesso',name:'Nome',langCode:'Direção do idioma',tabIndex:'Índice de Tabulação',advisoryTitle:'Título',advisoryContentType:'Tipo de Conteúdo',cssClasses:'Classe de CSS',charset:'Charset do Link',styles:'Estilos',rel:'Tipo de Relação',selectAnchor:'Selecione uma âncora',anchorName:'Nome da âncora',anchorId:'Id da âncora',emailAddress:'Endereço E-Mail',emailSubject:'Assunto da Mensagem',emailBody:'Corpo da Mensagem',noAnchors:'(Não há âncoras no documento)',noUrl:'Por favor, digite o endereço do Link',noEmail:'Por favor, digite o endereço de e-mail'},anchor:{toolbar:'Inserir/Editar Âncora',menu:'Formatar Âncora',title:'Formatar Âncora',name:'Nome da Âncora',errorName:'Por favor, digite o nome da âncora',remove:'Remover Âncora'},list:{numberedTitle:'Propriedades da Lista Numerada',bulletedTitle:'Propriedades da Lista sem Numeros',type:'Tipo',start:'Início',validateStartNumber:'O número inicial da lista deve ser um número inteiro.',circle:'Círculo',disc:'Disco',square:'Quadrado',none:'Nenhum',notset:'<não definido>',armenian:'Numeração Armêna',georgian:'Numeração da Geórgia (an, ban, gan, etc.)',lowerRoman:'Numeração Romana minúscula (i, ii, iii, iv, v, etc.)',upperRoman:'Numeração Romana maiúscula (I, II, III, IV, V, etc.)',lowerAlpha:'Numeração Alfabética minúscula (a, b, c, d, e, etc.)',upperAlpha:'Numeração Alfabética Maiúscula (A, B, C, D, E, etc.)',lowerGreek:'Numeração Grega minúscula (alpha, beta, gamma, etc.)',decimal:'Numeração Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Numeração Decimal com zeros (01, 02, 03, etc.)'},findAndReplace:{title:'Localizar e Substituir',find:'Localizar',replace:'Substituir',findWhat:'Procurar por:',replaceWith:'Substituir por:',notFoundMsg:'O texto especificado não foi encontrado.',findOptions:'Opções',matchCase:'Coincidir Maiúsculas/Minúsculas',matchWord:'Coincidir a palavra inteira',matchCyclic:'Coincidir cíclico',replaceAll:'Substituir Tudo',replaceSuccessMsg:'%1 ocorrência(s) substituída(s).'},table:{toolbar:'Tabela',title:'Formatar Tabela',menu:'Formatar Tabela',deleteTable:'Apagar Tabela',rows:'Linhas',columns:'Colunas',border:'Borda',widthPx:'pixels',widthPc:'%',widthUnit:'unidade largura',cellSpace:'Espaçamento',cellPad:'Margem interna',caption:'Legenda',summary:'Resumo',headers:'Cabeçalho',headersNone:'Nenhum',headersColumn:'Primeira coluna',headersRow:'Primeira linha',headersBoth:'Ambos',invalidRows:'O número de linhas tem que ser um número maior que 0.',invalidCols:'O número de colunas tem que ser um número maior que 0.',invalidBorder:'O tamanho da borda tem que ser um número.',invalidWidth:'A largura da tabela tem que ser um número.',invalidHeight:'A altura da tabela tem que ser um número.',invalidCellSpacing:'O espaçamento das células tem que ser um número.',invalidCellPadding:'A margem interna das células tem que ser um número.',cell:{menu:'Célula',insertBefore:'Inserir célula a esquerda',insertAfter:'Inserir célula a direita',deleteCell:'Remover Células',merge:'Mesclar Células',mergeRight:'Mesclar com célula a direita',mergeDown:'Mesclar com célula abaixo',splitHorizontal:'Dividir célula horizontalmente',splitVertical:'Dividir célula verticalmente',title:'Propriedades da célula',cellType:'Tipo de célula',rowSpan:'Linhas cobertas',colSpan:'Colunas cobertas',wordWrap:'Quebra de palavra',hAlign:'Alinhamento horizontal',vAlign:'Alinhamento vertical',alignBaseline:'Patamar de alinhamento',bgColor:'Cor de fundo',borderColor:'Cor das bordas',data:'Dados',header:'Cabeçalho',yes:'Sim',no:'Não',invalidWidth:'A largura da célula tem que ser um número.',invalidHeight:'A altura da célula tem que ser um número.',invalidRowSpan:'Linhas cobertas tem que ser um número inteiro.',invalidColSpan:'Colunas cobertas tem que ser um número inteiro.',chooseColor:'Escolher'},row:{menu:'Linha',insertBefore:'Inserir linha acima',insertAfter:'Inserir linha abaixo',deleteRow:'Remover Linhas'},column:{menu:'Coluna',insertBefore:'Inserir coluna a esquerda',insertAfter:'Inserir coluna a direita',deleteColumn:'Remover Colunas'}},button:{title:'Formatar Botão',text:'Texto (Valor)',type:'Tipo',typeBtn:'Botão',typeSbm:'Enviar',typeRst:'Limpar'},checkboxAndRadio:{checkboxTitle:'Formatar Caixa de Seleção',radioTitle:'Formatar Botão de Opção',value:'Valor',selected:'Selecionado'},form:{title:'Formatar Formulário',menu:'Formatar Formulário',action:'Ação',method:'Método',encoding:'Codificação'},select:{title:'Formatar Caixa de Listagem',selectInfo:'Informações',opAvail:'Opções disponíveis',value:'Valor',size:'Tamanho',lines:'linhas',chkMulti:'Permitir múltiplas seleções',opText:'Texto',opValue:'Valor',btnAdd:'Adicionar',btnModify:'Modificar',btnUp:'Para cima',btnDown:'Para baixo',btnSetValue:'Definir como selecionado',btnDelete:'Remover'},textarea:{title:'Formatar Área de Texto',cols:'Colunas',rows:'Linhas'},textfield:{title:'Formatar Caixa de Texto',name:'Nome',value:'Valor',charWidth:'Comprimento (em caracteres)',maxChars:'Número Máximo de Caracteres',type:'Tipo',typeText:'Texto',typePass:'Senha'},hidden:{title:'Formatar Campo Oculto',name:'Nome',value:'Valor'},image:{title:'Formatar Imagem',titleButton:'Formatar Botão de Imagem',menu:'Formatar Imagem',infoTab:'Informações da Imagem',btnUpload:'Enviar para o Servidor',upload:'Enviar',alt:'Texto Alternativo',lockRatio:'Travar Proporções',resetSize:'Redefinir para o Tamanho Original',border:'Borda',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Por favor, digite a URL da imagem.',linkTab:'Link',button2Img:'Deseja transformar o botão de imagem em uma imagem comum?',img2Button:'Deseja transformar a imagem em um botão de imagem?',urlMissing:'URL da imagem está faltando.',validateBorder:'A borda deve ser um número inteiro.',validateHSpace:'O HSpace deve ser um número inteiro.',validateVSpace:'O VSpace deve ser um número inteiro.'},flash:{properties:'Propriedades do Flash',propertiesTab:'Propriedades',title:'Propriedades do Flash',chkPlay:'Tocar Automaticamente',chkLoop:'Tocar Infinitamente',chkMenu:'Habilita Menu Flash',chkFull:'Permitir tela cheia',scale:'Escala',scaleAll:'Mostrar tudo',scaleNoBorder:'Sem Borda',scaleFit:'Escala Exata',access:'Acesso ao script',accessAlways:'Sempre',accessSameDomain:'Acessar Mesmo Domínio',accessNever:'Nunca',alignAbsBottom:'Inferior Absoluto',alignAbsMiddle:'Centralizado Absoluto',alignBaseline:'Baseline',alignTextTop:'Superior Absoluto',quality:'Qualidade',qualityBest:'Qualidade Melhor',qualityHigh:'Qualidade Alta',qualityAutoHigh:'Qualidade Alta Automática',qualityMedium:'Qualidade Média',qualityAutoLow:'Qualidade Baixa Automática',qualityLow:'Qualidade Baixa',windowModeWindow:'Janela',windowModeOpaque:'Opaca',windowModeTransparent:'Transparente',windowMode:'Modo da janela',flashvars:'Variáveis do Flash',bgcolor:'Cor do Plano de Fundo',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Por favor, digite o endereço do link',validateHSpace:'O HSpace tem que ser um número',validateVSpace:'O VSpace tem que ser um número.'},spellCheck:{toolbar:'Verificar Ortografia',title:'Corretor Ortográfico',notAvailable:'Desculpe, o serviço não está disponível no momento.',errorLoading:'Erro carregando servidor de aplicação: %s.',notInDic:'Não encontrada',changeTo:'Alterar para',btnIgnore:'Ignorar uma vez',btnIgnoreAll:'Ignorar Todas',btnReplace:'Alterar',btnReplaceAll:'Alterar Todas',btnUndo:'Desfazer',noSuggestions:'-sem sugestões de ortografia-',progress:'Verificação ortográfica em andamento...',noMispell:'Verificação encerrada: Não foram encontrados erros de ortografia',noChanges:'Verificação ortográfica encerrada: Não houve alterações',oneChange:'Verificação ortográfica encerrada: Uma palavra foi alterada',manyChanges:'Verificação ortográfica encerrada: %1 palavras foram alteradas',ieSpellDownload:'A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?'},smiley:{toolbar:'Emoticon',title:'Inserir Emoticon',options:'Opções de Emoticons'},elementsPath:{eleLabel:'Caminho dos Elementos',eleTitle:'Elemento %1'},numberedlist:'Lista numerada',bulletedlist:'Lista sem números',indent:'Aumentar Recuo',outdent:'Diminuir Recuo',justify:{left:'Alinhar Esquerda',center:'Centralizar',right:'Alinhar Direita',block:'Justificado'},blockquote:'Citação',clipboard:{title:'Colar',cutError:'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).',copyError:'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).',pasteMsg:'Transfira o link usado na caixa usando o teclado com (<STRONG>Ctrl/Cmd+V</STRONG>) e <STRONG>OK</STRONG>.',securityMsg:'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo manualmente nesta janela.',pasteArea:'Área para Colar'},pastefromword:{confirmCleanup:'O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?',toolbar:'Colar do Word',title:'Colar do Word',error:'Não foi possível limpar os dados colados devido a um erro interno'},pasteText:{button:'Colar como Texto sem Formatação',title:'Colar como Texto sem Formatação'},templates:{button:'Modelos de layout',title:'Modelo de layout de conteúdo',options:'Opções de Template',insertOption:'Substituir o conteúdo atual',selectPromptMsg:'Selecione um modelo de layout para ser aberto no editor<br>(o conteúdo atual será perdido):',emptyListMsg:'(Não foram definidos modelos de layout)'},showBlocks:'Mostrar blocos de código',stylesCombo:{label:'Estilo',panelTitle:'Estilos de Formatação',panelTitle1:'Estilos de bloco',panelTitle2:'Estilos de texto corrido',panelTitle3:'Estilos de objeto'},format:{label:'Formatação',panelTitle:'Formatação',tag_p:'Normal',tag_pre:'Formatado',tag_address:'Endereço',tag_h1:'Título 1',tag_h2:'Título 2',tag_h3:'Título 3',tag_h4:'Título 4',tag_h5:'Título 5',tag_h6:'Título 6',tag_div:'Normal (DIV)'},div:{title:'Criar Container de DIV',toolbar:'Criar Container de DIV',cssClassInputLabel:'Classes de CSS',styleSelectLabel:'Estilo',IdInputLabel:'Id',languageCodeInputLabel:'Código de Idioma',inlineStyleInputLabel:'Estilo Inline',advisoryTitleInputLabel:'Título Consulta',langDirLabel:'Direção da Escrita',langDirLTRLabel:'Esquerda para Direita (LTR)',langDirRTLLabel:'Direita para Esquerda (RTL)',edit:'Editar Div',remove:'Remover Div'},iframe:{title:'Propriedade do IFrame',toolbar:'IFrame',noUrl:'Insira a URL do iframe',scrolling:'Abilita scrollbars',border:'Mostra borda do iframe'},font:{label:'Fonte',voiceLabel:'Fonte',panelTitle:'Fonte'},fontSize:{label:'Tamanho',voiceLabel:'Tamanho da fonte',panelTitle:'Tamanho'},colorButton:{textColorTitle:'Cor do Texto',bgColorTitle:'Cor do Plano de Fundo',panelTitle:'Cores',auto:'Automático',more:'Mais Cores...'},colors:{'000':'Preto',800000:'Foquete','8B4513':'Marrom 1','2F4F4F':'Cinza 1','008080':'Cerceta','000080':'Azul Marinho','4B0082':'Índigo',696969:'Cinza 2',B22222:'Tijolo de Fogo',A52A2A:'Marrom 2',DAA520:'Vara Dourada','006400':'Verde Escuro','40E0D0':'Turquesa','0000CD':'Azul Médio',800080:'Roxo',808080:'Cinza 3',F00:'Vermelho',FF8C00:'Laranja Escuro',FFD700:'Dourado','008000':'Verde','0FF':'Ciano','00F':'Azul',EE82EE:'Violeta',A9A9A9:'Cinza Escuro',FFA07A:'Salmão Claro',FFA500:'Laranja',FFFF00:'Amarelo','00FF00':'Lima',AFEEEE:'Turquesa Pálido',ADD8E6:'Azul Claro',DDA0DD:'Ameixa',D3D3D3:'Cinza Claro',FFF0F5:'Lavanda 1',FAEBD7:'Branco Antiguidade',FFFFE0:'Amarelo Claro',F0FFF0:'Orvalho',F0FFFF:'Azure',F0F8FF:'Azul Alice',E6E6FA:'Lavanda 2',FFF:'Branco'},scayt:{title:'Correção ortográfica durante a digitação',opera_title:'Não suportado no Opera',enable:'Habilitar correção ortográfica durante a digitação',disable:'Desabilitar correção ortográfica durante a digitação',about:'Sobre a correção ortográfica durante a digitação',toggle:'Ativar/desativar correção ortográfica durante a digitação',options:'Opções',langs:'Idiomas',moreSuggestions:'Mais sugestões',ignore:'Ignorar',ignoreAll:'Ignorar todas',addWord:'Adicionar palavra',emptyDic:'O nome do dicionário não deveria estar vazio.',optionsTab:'Opções',allCaps:'Ignorar palavras maiúsculas',ignoreDomainNames:'Ignorar nomes de domínio',mixedCase:'Ignorar palavras com maiúsculas e minúsculas misturadas',mixedWithDigits:'Ignorar palavras com números',languagesTab:'Idiomas',dictionariesTab:'Dicionários',dic_field_name:'Nome do Dicionário',dic_create:'Criar',dic_restore:'Restaurar',dic_delete:'Excluir',dic_rename:'Renomear',dic_info:'Inicialmente, o dicionário do usuário fica armazenado em um Cookie. Porém, Cookies tem tamanho limitado, portanto quand o dicionário do usuário atingir o tamanho limite poderá ser armazenado no nosso servidor. Para armazenar seu dicionário pessoal no nosso servidor deverá especificar um nome para ele. Se já tiver um dicionário armazenado por favor especifique o seu nome e clique em Restaurar.',aboutTab:'Sobre'},about:{title:'Sobre o CKEditor',dlgTitle:'Sobre o CKEditor',help:'Verifique o $1 para obter ajuda.',userGuide:'Guia do Usuário do CKEditor',moreInfo:'Para informações sobre a licença por favor visite o nosso site:',copy:'Copyright © $1. Todos os direitos reservados.'},maximize:'Maximizar',minimize:'Minimize',fakeobjects:{anchor:'Âncora',flash:'Animação em Flash',iframe:'IFrame',hiddenfield:'Campo Oculto',unknown:'Objeto desconhecido'},resize:'Arraste para redimensionar',colordialog:{title:'Selecione uma Cor',options:'Opções de Cor',highlight:'Grifar',selected:'Cor Selecionada',clear:'Limpar'},toolbarCollapse:'Diminuir Barra de Ferramentas',toolbarExpand:'Aumentar Barra de Ferramentas',toolbarGroups:{document:'Documento',clipboard:'Clipboard/Desfazer',editing:'Edição',forms:'Formulários',basicstyles:'Estilos Básicos',paragraph:'Paragrafo',links:'Links',insert:'Inserir',styles:'Estilos',colors:'Cores',tools:'Ferramentas'},bidi:{ltr:'Direção do texto da esquerda para a direita',rtl:'Direção do texto da direita para a esquerda'},docprops:{label:'Propriedades Documento',title:'Propriedades Documento',design:'Design',meta:'Meta Dados',chooseColor:'Escolher',other:'<outro>',docTitle:'Título da Página',charset:'Codificação de Caracteres',charsetOther:'Outra Codificação de Caracteres',charsetASCII:'ASCII',charsetCE:'Europa Central',charsetCT:'Chinês Tradicional (Big5)',charsetCR:'Cirílico',charsetGR:'Grego',charsetJP:'Japonês',charsetKR:'Coreano',charsetTR:'Turco',charsetUN:'Unicode (UTF-8)',charsetWE:'Europa Ocidental',docType:'Cabeçalho Tipo de Documento',docTypeOther:'Outro Tipo de Documento',xhtmlDec:'Incluir Declarações XHTML',bgColor:'Cor do Plano de Fundo',bgImage:'URL da Imagem de Plano de Fundo',bgFixed:'Plano de Fundo Fixo',txtColor:'Cor do Texto',margin:'Margens da Página',marginTop:'Superior',marginLeft:'Inferior',marginRight:'Direita',marginBottom:'Inferior',metaKeywords:'Palavras-chave de Indexação do Documento (separadas por vírgula)',metaDescription:'Descrição do Documento',metaAuthor:'Autor',metaCopyright:'Direitos Autorais',previewHtml:'<p>Este é um <strong>texto de exemplo</strong>. Você está usando <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ro.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ro.js
new file mode 100755
index 0000000..9d29578
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ro.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ro={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editează bara de unelte',editor:'Rich Text Editor',source:'Sursa',newPage:'Pagină nouă',save:'Salvează',preview:'Previzualizare',cut:'Taie',copy:'Copiază',paste:'Adaugă',print:'Printează',underline:'Subliniat (underline)',bold:'Îngroşat (bold)',italic:'Înclinat (italic)',selectAll:'Selectează tot',removeFormat:'Înlătură formatarea',strike:'Tăiat (strike through)',subscript:'Indice (subscript)',superscript:'Putere (superscript)',horizontalrule:'Inserează linie orizontală',pagebreak:'Inserează separator de pagină (Page Break)',pagebreakAlt:'Page Break',unlink:'Înlătură link (legătură web)',undo:'Starea anterioară (undo)',redo:'Starea ulterioară (redo)',common:{browseServer:'Răsfoieşte server',url:'URL',protocol:'Protocol',upload:'Încarcă',uploadSubmit:'Trimite la server',image:'Imagine',flash:'Flash',form:'Formular (Form)',checkbox:'Bifă (Checkbox)',radio:'Buton radio (RadioButton)',textField:'Câmp text (TextField)',textarea:'Suprafaţă text (Textarea)',hiddenField:'Câmp ascuns (HiddenField)',button:'Buton',select:'Câmp selecţie (SelectionField)',imageButton:'Buton imagine (ImageButton)',notSet:'<nesetat>',id:'Id',name:'Nume',langDir:'Direcţia cuvintelor',langDirLtr:'stânga-dreapta (LTR)',langDirRtl:'dreapta-stânga (RTL)',langCode:'Codul limbii',longDescr:'Descrierea lungă URL',cssClass:'Clasele cu stilul paginii (CSS)',advisoryTitle:'Titlul consultativ',cssStyle:'Stil',ok:'OK',cancel:'Anulare',close:'Închide',preview:'Previzualizare',generalTab:'General',advancedTab:'Avansat',validateNumberFailed:'Această valoare nu este un număr.',confirmNewPage:'Orice modificări nesalvate ale acestui conținut, vor fi pierdute. Sigur doriți încărcarea unei noi pagini?',confirmCancel:'Câteva opțiuni au fost schimbate. Sigur doriți să închideți dialogul?',options:'Opțiuni',target:'Țintă',targetNew:'Fereastră nouă (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'În aceeași fereastră (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Stânga spre Dreapta (LTR)',langDirRTL:'Dreapta spre Stânga (RTL)',styles:'Stil',cssClasses:'Stylesheet Classes',width:'Lăţime',height:'Înălţime',align:'Aliniere',alignLeft:'Mărește Bara',alignRight:'Dreapta',alignCenter:'Centru',alignTop:'Sus',alignMiddle:'Mijloc',alignBottom:'Jos',invalidHeight:'Înălțimea trebuie să fie un număr.',invalidWidth:'Lățimea trebuie să fie un număr.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Opțiuni Meniu Contextual'},specialChar:{toolbar:'Inserează caracter special',title:'Selectează caracter special',options:'Opțiuni caractere speciale'},link:{toolbar:'Inserează/Editează link (legătură web)',other:'<alt>',menu:'Editează Link',title:'Link (Legătură web)',info:'Informaţii despre link (Legătură web)',target:'Ţintă (Target)',upload:'Încarcă',advanced:'Avansat',type:'Tipul link-ului (al legăturii web)',toUrl:'URL',toAnchor:'Ancoră în această pagină',toEmail:'E-Mail',targetFrame:'<frame>',targetPopup:'<fereastra popup>',targetFrameName:'Numele frameului ţintă',targetPopupName:'Numele ferestrei popup',popupFeatures:'Proprietăţile ferestrei popup',popupResizable:'Redimensionabil',popupStatusBar:'Bara de status',popupLocationBar:'Bara de locaţie',popupToolbar:'Bara de opţiuni',popupMenuBar:'Bara de meniu',popupFullScreen:'Tot ecranul (Full Screen)(IE)',popupScrollBars:'Bare de derulare',popupDependent:'Dependent (Netscape)',popupLeft:'Poziţia la stânga',popupTop:'Poziţia la dreapta',id:'Id',langDir:'Direcţia cuvintelor',langDirLTR:'stânga-dreapta (LTR)',langDirRTL:'dreapta-stânga (RTL)',acccessKey:'Tasta de acces',name:'Nume',langCode:'Direcţia cuvintelor',tabIndex:'Indexul tabului',advisoryTitle:'Titlul consultativ',advisoryContentType:'Tipul consultativ al titlului',cssClasses:'Clasele cu stilul paginii (CSS)',charset:'Setul de caractere al resursei legate',styles:'Stil',rel:'Relație',selectAnchor:'Selectaţi o ancoră',anchorName:'după numele ancorei',anchorId:'după Id-ul elementului',emailAddress:'Adresă de e-mail',emailSubject:'Subiectul mesajului',emailBody:'Opțiuni Meniu Contextual',noAnchors:'(Nicio ancoră disponibilă în document)',noUrl:'Vă rugăm să scrieţi URL-ul',noEmail:'Vă rugăm să scrieţi adresa de e-mail'},anchor:{toolbar:'Inserează/Editează ancoră',menu:'Proprietăţi ancoră',title:'Proprietăţi ancoră',name:'Numele ancorei',errorName:'Vă rugăm scrieţi numele ancorei',remove:'Elimină ancora'},list:{numberedTitle:'Proprietățile listei numerotate',bulletedTitle:'Proprietățile listei cu simboluri',type:'Tip',start:'Start',validateStartNumber:'Începutul listei trebuie să fie un număr întreg.',circle:'Cerc',disc:'Disc',square:'Pătrat',none:'Nimic',notset:'<nesetat>',armenian:'Numerotare armeniană',georgian:'Numerotare georgiană (an, ban, gan, etc.)',lowerRoman:'Cifre romane mici (i, ii, iii, iv, v, etc.)',upperRoman:'Cifre romane mari (I, II, III, IV, V, etc.)',lowerAlpha:'Litere mici (a, b, c, d, e, etc.)',upperAlpha:'Litere mari (A, B, C, D, E, etc.)',lowerGreek:'Litere grecești mici (alpha, beta, gamma, etc.)',decimal:'Decimale (1, 2, 3, etc.)',decimalLeadingZero:'Decimale cu zero în față (01, 02, 03, etc.)'},findAndReplace:{title:'Găseşte şi înlocuieşte',find:'Găseşte',replace:'Înlocuieşte',findWhat:'Găseşte:',replaceWith:'Înlocuieşte cu:',notFoundMsg:'Textul specificat nu a fost găsit.',findOptions:'Find Options',matchCase:'Deosebeşte majuscule de minuscule (Match case)',matchWord:'Doar cuvintele întregi',matchCyclic:'Potrivește ciclic',replaceAll:'Înlocuieşte tot',replaceSuccessMsg:'%1 căutări înlocuite.'},table:{toolbar:'Tabel',title:'Proprietăţile tabelului',menu:'Proprietăţile tabelului',deleteTable:'Şterge tabel',rows:'Rânduri',columns:'Coloane',border:'Mărimea marginii',widthPx:'pixeli',widthPc:'procente',widthUnit:'unitate lățime',cellSpace:'Spaţiu între celule',cellPad:'Spaţiu în cadrul celulei',caption:'Titlu (Caption)',summary:'Rezumat',headers:'Antente',headersNone:'Nimic',headersColumn:'Prima coloană',headersRow:'Primul rând',headersBoth:'Ambele',invalidRows:'Numărul rândurilor trebuie să fie mai mare decât 0.',invalidCols:'Numărul coloanelor trebuie să fie mai mare decât 0.',invalidBorder:'Dimensiunea bordurii trebuie să aibe un număr.',invalidWidth:'Lățimea tabelului trebuie să fie un număr.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Spațierea celului trebuie să fie un număr pozitiv.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Celulă',insertBefore:'Inserează celulă înainte',insertAfter:'Inserează celulă după',deleteCell:'Şterge celule',merge:'Uneşte celule',mergeRight:'Uneşte la dreapta',mergeDown:'Uneşte jos',splitHorizontal:'Împarte celula pe orizontală',splitVertical:'Împarte celula pe verticală',title:'Proprietăți celulă',cellType:'Tipul celulei',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Aliniament orizontal',vAlign:'Aliniament vertical',alignBaseline:'Baseline',bgColor:'Culoare fundal',borderColor:'Culoare bordură',data:'Data',header:'Antet',yes:'Da',no:'Nu',invalidWidth:'Lățimea celulei trebuie să fie un număr.',invalidHeight:'Înălțimea celulei trebuie să fie un număr.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Alege'},row:{menu:'Rând',insertBefore:'Inserează rând înainte',insertAfter:'Inserează rând după',deleteRow:'Şterge rânduri'},column:{menu:'Coloană',insertBefore:'Inserează coloană înainte',insertAfter:'Inserează coloană după',deleteColumn:'Şterge celule'}},button:{title:'Proprietăţi buton',text:'Text (Valoare)',type:'Tip',typeBtn:'Buton',typeSbm:'Trimite',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Proprietăţi bifă (Checkbox)',radioTitle:'Proprietăţi buton radio (Radio Button)',value:'Valoare',selected:'Selectat'},form:{title:'Proprietăţi formular (Form)',menu:'Proprietăţi formular (Form)',action:'Acţiune',method:'Metodă',encoding:'Encodare'},select:{title:'Proprietăţi câmp selecţie (Selection Field)',selectInfo:'Informaţii',opAvail:'Opţiuni disponibile',value:'Valoare',size:'Mărime',lines:'linii',chkMulti:'Permite selecţii multiple',opText:'Text',opValue:'Valoare',btnAdd:'Adaugă',btnModify:'Modifică',btnUp:'Sus',btnDown:'Jos',btnSetValue:'Setează ca valoare selectată',btnDelete:'Şterge'},textarea:{title:'Proprietăţi suprafaţă text (Textarea)',cols:'Coloane',rows:'Linii'},textfield:{title:'Proprietăţi câmp text (Text Field)',name:'Nume',value:'Valoare',charWidth:'Lărgimea caracterului',maxChars:'Caractere maxime',type:'Tip',typeText:'Text',typePass:'Parolă'},hidden:{title:'Proprietăţi câmp ascuns (Hidden Field)',name:'Nume',value:'Valoare'},image:{title:'Proprietăţile imaginii',titleButton:'Proprietăţi buton imagine (Image Button)',menu:'Proprietăţile imaginii',infoTab:'Informaţii despre imagine',btnUpload:'Trimite la server',upload:'Încarcă',alt:'Text alternativ',lockRatio:'Păstrează proporţiile',resetSize:'Resetează mărimea',border:'Margine',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Vă rugăm să scrieţi URL-ul imaginii',linkTab:'Link (Legătură web)',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Sursa URL a imaginii lipsește.',validateBorder:'Bordura trebuie să fie un număr întreg.',validateHSpace:'Hspace trebuie să fie un număr întreg.',validateVSpace:'Vspace trebuie să fie un număr întreg.'},flash:{properties:'Proprietăţile flashului',propertiesTab:'Proprietăți',title:'Proprietăţile flashului',chkPlay:'Rulează automat',chkLoop:'Repetă (Loop)',chkMenu:'Activează meniul flash',chkFull:'Permite pe tot ecranul',scale:'Scală',scaleAll:'Arată tot',scaleNoBorder:'Fără bordură (No border)',scaleFit:'Potriveşte',access:'Acces script',accessAlways:'Întotdeauna',accessSameDomain:'Același domeniu',accessNever:'Niciodată',alignAbsBottom:'Jos absolut (Abs Bottom)',alignAbsMiddle:'Mijloc absolut (Abs Middle)',alignBaseline:'Linia de jos (Baseline)',alignTextTop:'Text sus',quality:'Calitate',qualityBest:'Cea mai bună',qualityHigh:'Înaltă',qualityAutoHigh:'Auto înaltă',qualityMedium:'Medie',qualityAutoLow:'Auto Joasă',qualityLow:'Joasă',windowModeWindow:'Fereastră',windowModeOpaque:'Opacă',windowModeTransparent:'Transparentă',windowMode:'Mod fereastră',flashvars:'Variabile pentru flash',bgcolor:'Coloarea fundalului',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Vă rugăm să scrieţi URL-ul',validateHSpace:'Hspace trebuie să fie un număr.',validateVSpace:'VSpace trebuie să fie un număr'},spellCheck:{toolbar:'Verifică scrierea textului',title:'Spell Check',notAvailable:'Scuzați, dar serviciul nu este disponibil momentan.',errorLoading:'Eroare în lansarea aplicației service host %s.',notInDic:'Nu e în dicţionar',changeTo:'Schimbă în',btnIgnore:'Ignoră',btnIgnoreAll:'Ignoră toate',btnReplace:'Înlocuieşte',btnReplaceAll:'Înlocuieşte tot',btnUndo:'Starea anterioară (undo)',noSuggestions:'- Fără sugestii -',progress:'Verificarea textului în desfăşurare...',noMispell:'Verificarea textului terminată: Nicio greşeală găsită',noChanges:'Verificarea textului terminată: Niciun cuvânt modificat',oneChange:'Verificarea textului terminată: Un cuvânt modificat',manyChanges:'Verificarea textului terminată: 1% cuvinte modificate',ieSpellDownload:'Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?'},smiley:{toolbar:'Figură expresivă (Emoticon)',title:'Inserează o figură expresivă (Emoticon)',options:'Opțiuni figuri expresive'},elementsPath:{eleLabel:'Calea elementelor',eleTitle:'%1 element'},numberedlist:'Inserează / Elimină Listă numerotată',bulletedlist:'Inserează / Elimină Listă cu puncte',indent:'Creşte indentarea',outdent:'Scade indentarea',justify:{left:'Aliniere la stânga',center:'Aliniere centrală',right:'Aliniere la dreapta',block:'Aliniere în bloc (Block Justify)'},blockquote:'Citat',clipboard:{title:'Adaugă',cutError:'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+X).',copyError:'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+C).',pasteMsg:'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<strong>Ctrl/Cmd+V</strong>) şi apăsaţi OK',securityMsg:'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.',pasteArea:'Suprafața de adăugare'},pastefromword:{confirmCleanup:'Textul pe care doriți să-l lipiți este din Word. Doriți curățarea textului înante de a-l adăuga?',toolbar:'Adaugă din Word',title:'Adaugă din Word',error:'Nu a fost posibilă curățarea datelor adăugate datorită unei erori interne'},pasteText:{button:'Adaugă ca text simplu (Plain Text)',title:'Adaugă ca text simplu (Plain Text)'},templates:{button:'Template-uri (şabloane)',title:'Template-uri (şabloane) de conţinut',options:'Opțiuni șabloane',insertOption:'Înlocuieşte cuprinsul actual',selectPromptMsg:'Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):',emptyListMsg:'(Niciun template (şablon) definit)'},showBlocks:'Arată blocurile',stylesCombo:{label:'Stil',panelTitle:'Formatarea stilurilor',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formatare',panelTitle:'Formatare',tag_p:'Normal',tag_pre:'Formatat',tag_address:'Adresă',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:'Codul limbii',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'Mărime',voiceLabel:'Font Size',panelTitle:'Mărime'},colorButton:{textColorTitle:'Culoarea textului',bgColorTitle:'Coloarea fundalului',panelTitle:'Colors',auto:'Automatic',more:'Mai multe culori...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Mărește',minimize:'Micșorează',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Trage pentru a redimensiona',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Micșorează Bara',toolbarExpand:'Mărește Bara',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Proprietăţile documentului',title:'Proprietăţile documentului',design:'Design',meta:'Meta Tags',chooseColor:'Choose',other:'<alt>',docTitle:'Titlul paginii',charset:'Encoding setului de caractere',charsetOther:'Alt encoding al setului de caractere',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinezesc tradiţional (Big5)',charsetCR:'Chirilic',charsetGR:'Grecesc',charsetJP:'Japonez',charsetKR:'Corean',charsetTR:'Turcesc',charsetUN:'Unicode (UTF-8)',charsetWE:'Vest european',docType:'Document Type Heading',docTypeOther:'Alt Document Type Heading',xhtmlDec:'Include declaraţii XHTML',bgColor:'Culoarea fundalului (Background Color)',bgImage:'URL-ul imaginii din fundal (Background Image URL)',bgFixed:'Fundal neflotant, fix (Non-scrolling Background)',txtColor:'Culoarea textului',margin:'Marginile paginii',marginTop:'Sus',marginLeft:'Stânga',marginRight:'Dreapta',marginBottom:'Jos',metaKeywords:'Cuvinte cheie după care se va indexa documentul (separate prin virgulă)',metaDescription:'Descrierea documentului',metaAuthor:'Autor',metaCopyright:'Drepturi de autor',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ru.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ru.js
new file mode 100755
index 0000000..c1299b3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ru.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ru={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Панели инструментов редактора',editor:'Визуальный редактор текста',source:'Источник',newPage:'Новая страница',save:'Сохранить',preview:'Предварительный просмотр',cut:'Вырезать',copy:'Копировать',paste:'Вставить',print:'Печать',underline:'Подчеркнутый',bold:'Полужирный',italic:'Курсив',selectAll:'Выделить все',removeFormat:'Убрать форматирование',strike:'Зачеркнутый',subscript:'Подстрочный индекс',superscript:'Надстрочный индекс',horizontalrule:'Вставить горизонтальную линию',pagebreak:'Вставить разрыв страницы для печати',pagebreakAlt:'Разрыв страницы',unlink:'Убрать ссылку',undo:'Отменить',redo:'Повторить',common:{browseServer:'Выбор на сервере',url:'Ссылка',protocol:'Протокол',upload:'Загрузка',uploadSubmit:'Загрузить на сервер',image:'Изображение',flash:'Flash',form:'Форма',checkbox:'Флаговая кнопка',radio:'Кнопка выбора',textField:'Текстовое поле',textarea:'Многострочное текстовое поле',hiddenField:'Скрытое поле',button:'Кнопка',select:'Список выбора',imageButton:'Изображение-кнопка',notSet:'<не указано>',id:'Идентификатор',name:'Имя',langDir:'Направление текста',langDirLtr:'Слева направо (LTR)',langDirRtl:'Справа налево (RTL)',langCode:'Код языка',longDescr:'Длинное описание ссылки',cssClass:'Класс CSS',advisoryTitle:'Заголовок',cssStyle:'Стиль',ok:'ОК',cancel:'Отмена',close:'Закрыть',preview:'Предпросмотр',generalTab:'Основное',advancedTab:'Дополнительно',validateNumberFailed:'Это значение не является числом.',confirmNewPage:'Несохранённые изменения будут потеряны! Вы действительно желаете перейти на другую страницу?',confirmCancel:'Некоторые параметры были изменены. Вы уверены, что желаете закрыть без сохранения?',options:'Параметры',target:'Цель',targetNew:'Новое окно (_blank)',targetTop:'Главное окно (_top)',targetSelf:'Текущее окно (_self)',targetParent:'Родительское окно (_parent)',langDirLTR:'Слева направо (LTR)',langDirRTL:'Справа налево (RTL)',styles:'Стиль',cssClasses:'Классы CSS',width:'Ширина',height:'Высота',align:'Выравнивание',alignLeft:'По левому краю',alignRight:'По правому краю',alignCenter:'По центру',alignTop:'По верху',alignMiddle:'По середине',alignBottom:'По низу',invalidHeight:'Высота задается числом.',invalidWidth:'Ширина задается числом.',invalidCssLength:'Значение, указанное в поле "%1", должно быть положительным целым числом. Допускается указание единиц меры CSS (px, %, in, cm, mm, em, ex, pt или pc).',invalidHtmlLength:'Значение, указанное в поле "%1", должно быть положительным целым числом. Допускается указание единиц меры HTML (px или %).',invalidInlineStyle:'Значение, указанное для стиля элемента, должно состоять из одной или нескольких пар данных в формате "параметр : значение", разделённых точкой с запятой.',cssLengthTooltip:'Введите значение в пикселях, либо число с корректной единицей меры CSS (px, %, in, cm, mm, em, ex, pt или pc).',unavailable:'%1<span class="cke_accessibility">, недоступно</span>'},contextmenu:{options:'Параметры контекстного меню'},specialChar:{toolbar:'Вставить специальный символ',title:'Выберите специальный символ',options:'Выбор специального символа'},link:{toolbar:'Вставить/Редактировать ссылку',other:'<другой>',menu:'Редактировать ссылку',title:'Ссылка',info:'Информация о ссылке',target:'Цель',upload:'Загрузка',advanced:'Дополнительно',type:'Тип ссылки',toUrl:'Ссылка',toAnchor:'Ссылка на якорь в тексте',toEmail:'Email',targetFrame:'<фрейм>',targetPopup:'<всплывающее окно>',targetFrameName:'Имя целевого фрейма',targetPopupName:'Имя всплывающего окна',popupFeatures:'Параметры всплывающего окна',popupResizable:'Изменяемый размер',popupStatusBar:'Строка состояния',popupLocationBar:'Панель адреса',popupToolbar:'Панель инструментов',popupMenuBar:'Панель меню',popupFullScreen:'Полноэкранное (IE)',popupScrollBars:'Полосы прокрутки',popupDependent:'Зависимое (Netscape)',popupLeft:'Отступ слева',popupTop:'Отступ сверху',id:'Идентификатор',langDir:'Направление текста',langDirLTR:'Слева направо (LTR)',langDirRTL:'Справа налево (RTL)',acccessKey:'Клавиша доступа',name:'Имя',langCode:'Код языка',tabIndex:'Последовательность перехода',advisoryTitle:'Заголовок',advisoryContentType:'Тип содержимого',cssClasses:'Классы CSS',charset:'Кодировка ресурса',styles:'Стиль',rel:'Отношение',selectAnchor:'Выберите якорь',anchorName:'По имени',anchorId:'По идентификатору',emailAddress:'Email адрес',emailSubject:'Тема сообщения',emailBody:'Текст сообщения',noAnchors:'(В документе нет ни одного якоря)',noUrl:'Пожалуйста, введите ссылку',noEmail:'Пожалуйста, введите email адрес'},anchor:{toolbar:'Вставить / редактировать якорь',menu:'Изменить якорь',title:'Свойства якоря',name:'Имя якоря',errorName:'Пожалуйста, введите имя якоря',remove:'Удалить якорь'},list:{numberedTitle:'Свойства нумерованного списка',bulletedTitle:'Свойства маркированного списка',type:'Тип',start:'Начиная с',validateStartNumber:'Первый номер списка должен быть задан обычным целым числом.',circle:'Круг',disc:'Окружность',square:'Квадрат',none:'Нет',notset:'<не указано>',armenian:'Армянская нумерация',georgian:'Грузинская нумерация (ани, бани, гани, и т.д.)',lowerRoman:'Строчные римские (i, ii, iii, iv, v, и т.д.)',upperRoman:'Заглавные римские (I, II, III, IV, V, и т.д.)',lowerAlpha:'Строчные латинские (a, b, c, d, e, и т.д.)',upperAlpha:'Заглавные латинские (A, B, C, D, E, и т.д.)',lowerGreek:'Строчные греческие (альфа, бета, гамма, и т.д.)',decimal:'Десятичные (1, 2, 3, и т.д.)',decimalLeadingZero:'Десятичные с ведущим нулём (01, 02, 03, и т.д.)'},findAndReplace:{title:'Поиск и замена',find:'Найти',replace:'Заменить',findWhat:'Найти:',replaceWith:'Заменить на:',notFoundMsg:'Искомый текст не найден.',findOptions:'Опции поиска',matchCase:'Учитывать регистр',matchWord:'Только слово целиком',matchCyclic:'По всему тексту',replaceAll:'Заменить всё',replaceSuccessMsg:'Успешно заменено %1 раз(а).'},table:{toolbar:'Таблица',title:'Свойства таблицы',menu:'Свойства таблицы',deleteTable:'Удалить таблицу',rows:'Строки',columns:'Колонки',border:'Размер границ',widthPx:'пикселей',widthPc:'процентов',widthUnit:'единица измерения',cellSpace:'Внешний отступ ячеек',cellPad:'Внутренний отступ ячеек',caption:'Заголовок',summary:'Итоги',headers:'Заголовки',headersNone:'Без заголовков',headersColumn:'Левая колонка',headersRow:'Верхняя строка',headersBoth:'Сверху и слева',invalidRows:'Количество строк должно быть больше 0.',invalidCols:'Количество столбцов должно быть больше 0.',invalidBorder:'Размер границ должен быть числом.',invalidWidth:'Ширина таблицы должна быть числом.',invalidHeight:'Высота таблицы должна быть числом.',invalidCellSpacing:'Внешний отступ ячеек (cellspacing) должен быть числом.',invalidCellPadding:'Внутренний отступ ячеек (cellpadding) должен быть числом.',cell:{menu:'Ячейка',insertBefore:'Вставить ячейку слева',insertAfter:'Вставить ячейку справа',deleteCell:'Удалить ячейки',merge:'Объединить ячейки',mergeRight:'Объединить с правой',mergeDown:'Объединить с нижней',splitHorizontal:'Разделить ячейку по горизонтали',splitVertical:'Разделить ячейку по вертикали',title:'Свойства ячейки',cellType:'Тип ячейки',rowSpan:'Объединяет строк',colSpan:'Объединяет колонок',wordWrap:'Перенос по словам',hAlign:'Горизонтальное выравнивание',vAlign:'Вертикальное выравнивание',alignBaseline:'По базовой линии',bgColor:'Цвет фона',borderColor:'Цвет границ',data:'Данные',header:'Заголовок',yes:'Да',no:'Нет',invalidWidth:'Ширина ячейки должна быть числом.',invalidHeight:'Высота ячейки должна быть числом.',invalidRowSpan:'Количество объединяемых строк должно быть задано числом.',invalidColSpan:'Количество объединяемых колонок должно быть задано числом.',chooseColor:'Выберите'},row:{menu:'Строка',insertBefore:'Вставить строку сверху',insertAfter:'Вставить строку снизу',deleteRow:'Удалить строки'},column:{menu:'Колонка',insertBefore:'Вставить колонку слева',insertAfter:'Вставить колонку справа',deleteColumn:'Удалить колонки'}},button:{title:'Свойства кнопки',text:'Текст (Значение)',type:'Тип',typeBtn:'Кнопка',typeSbm:'Отправка',typeRst:'Сброс'},checkboxAndRadio:{checkboxTitle:'Свойства флаговой кнопки',radioTitle:'Свойства кнопки выбора',value:'Значение',selected:'Выбрано'},form:{title:'Свойства формы',menu:'Свойства формы',action:'Действие',method:'Метод',encoding:'Кодировка'},select:{title:'Свойства списка выбора',selectInfo:'Информация о списке выбора',opAvail:'Доступные варианты',value:'Значение',size:'Размер',lines:'строк(и)',chkMulti:'Разрешить выбор нескольких вариантов',opText:'Текст',opValue:'Значение',btnAdd:'Добавить',btnModify:'Изменить',btnUp:'Поднять',btnDown:'Опустить',btnSetValue:'Пометить как выбранное',btnDelete:'Удалить'},textarea:{title:'Свойства многострочного текстового поля',cols:'Колонок',rows:'Строк'},textfield:{title:'Свойства текстового поля',name:'Имя',value:'Значение',charWidth:'Ширина поля (в символах)',maxChars:'Макс. количество символов',type:'Тип содержимого',typeText:'Текст',typePass:'Пароль'},hidden:{title:'Свойства скрытого поля',name:'Имя',value:'Значение'},image:{title:'Свойства изображения',titleButton:'Свойства изображения-кнопки',menu:'Свойства изображения',infoTab:'Данные об изображении',btnUpload:'Загрузить на сервер',upload:'Загрузить',alt:'Альтернативный текст',lockRatio:'Сохранять пропорции',resetSize:'Вернуть обычные размеры',border:'Граница',hSpace:'Гориз. отступ',vSpace:'Вертик. отступ',alertUrl:'Пожалуйста, введите ссылку на изображение',linkTab:'Ссылка',button2Img:'Вы желаете преобразовать это изображение-кнопку в обычное изображение?',img2Button:'Вы желаете преобразовать это обычное изображение в изображение-кнопку?',urlMissing:'Не указана ссылка на изображение.',validateBorder:'Размер границ должен быть задан числом.',validateHSpace:'Горизонтальный отступ должен быть задан числом.',validateVSpace:'Вертикальный отступ должен быть задан числом.'},flash:{properties:'Свойства Flash',propertiesTab:'Свойства',title:'Свойства Flash',chkPlay:'Автоматическое воспроизведение',chkLoop:'Повторять',chkMenu:'Включить меню Flash',chkFull:'Разрешить полноэкранный режим',scale:'Масштабировать',scaleAll:'Пропорционально',scaleNoBorder:'Заходить за границы',scaleFit:'Заполнять',access:'Доступ к скриптам',accessAlways:'Всегда',accessSameDomain:'В том же домене',accessNever:'Никогда',alignAbsBottom:'По низу текста',alignAbsMiddle:'По середине текста',alignBaseline:'По базовой линии',alignTextTop:'По верху текста',quality:'Качество',qualityBest:'Лучшее',qualityHigh:'Высокое',qualityAutoHigh:'Запуск на высоком',qualityMedium:'Среднее',qualityAutoLow:'Запуск на низком',qualityLow:'Низкое',windowModeWindow:'Обычный',windowModeOpaque:'Непрозрачный',windowModeTransparent:'Прозрачный',windowMode:'Взаимодействие с окном',flashvars:'Переменные для Flash',bgcolor:'Цвет фона',hSpace:'Гориз. отступ',vSpace:'Вертик. отступ',validateSrc:'Вы должны ввести ссылку',validateHSpace:'Горизонтальный отступ задается числом.',validateVSpace:'Вертикальный отступ задается числом.'},spellCheck:{toolbar:'Проверить орфографию',title:'Проверка орфографии',notAvailable:'Извините, но в данный момент сервис недоступен.',errorLoading:'Произошла ошибка при подключении к серверу проверки орфографии: %s.',notInDic:'Отсутствует в словаре',changeTo:'Изменить на',btnIgnore:'Пропустить',btnIgnoreAll:'Пропустить всё',btnReplace:'Заменить',btnReplaceAll:'Заменить всё',btnUndo:'Отменить',noSuggestions:'- Варианты отсутствуют -',progress:'Орфография проверяется...',noMispell:'Проверка орфографии завершена. Ошибок не найдено',noChanges:'Проверка орфографии завершена. Не изменено ни одного слова',oneChange:'Проверка орфографии завершена. Изменено одно слово',manyChanges:'Проверка орфографии завершена. Изменено слов: %1',ieSpellDownload:'Модуль проверки орфографии не установлен. Хотите скачать его?'},smiley:{toolbar:'Смайлы',title:'Вставить смайл',options:'Выбор смайла'},elementsPath:{eleLabel:'Путь элементов',eleTitle:'Элемент %1'},numberedlist:'Вставить / удалить нумерованный список',bulletedlist:'Вставить / удалить маркированный список',indent:'Увеличить отступ',outdent:'Уменьшить отступ',justify:{left:'По левому краю',center:'По центру',right:'По правому краю',block:'По ширине'},blockquote:'Цитата',clipboard:{title:'Вставить',cutError:'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по вырезке текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+X).',copyError:'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по копированию текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+C).',pasteMsg:'Пожалуйста, вставьте текст в зону ниже, используя клавиатуру (<strong>Ctrl/Cmd+V</strong>) и нажмите кнопку "OK".',securityMsg:'Настройки безопасности вашего браузера не разрешают редактору напрямую обращаться к буферу обмена. Вы должны вставить текст снова в это окно.',pasteArea:'Зона для вставки'},pastefromword:{confirmCleanup:'Текст, который вы желаете вставить, по всей видимости, был скопирован из Word. Следует ли очистить его перед вставкой?',toolbar:'Вставить из Word',title:'Вставить из Word',error:'Невозможно очистить вставленные данные из-за внутренней ошибки'},pasteText:{button:'Вставить только текст',title:'Вставить только текст'},templates:{button:'Шаблоны',title:'Шаблоны содержимого',options:'Параметры шаблона',insertOption:'Заменить текущее содержимое',selectPromptMsg:'Пожалуйста, выберите, какой шаблон следует открыть в редакторе',emptyListMsg:'(не определено ни одного шаблона)'},showBlocks:'Отображать блоки',stylesCombo:{label:'Стили',panelTitle:'Стили форматирования',panelTitle1:'Стили блока',panelTitle2:'Стили элемента',panelTitle3:'Стили объекта'},format:{label:'Форматирование',panelTitle:'Форматирование',tag_p:'Обычное',tag_pre:'Моноширинное',tag_address:'Адрес',tag_h1:'Заголовок 1',tag_h2:'Заголовок 2',tag_h3:'Заголовок 3',tag_h4:'Заголовок 4',tag_h5:'Заголовок 5',tag_h6:'Заголовок 6',tag_div:'Обычное (div)'},div:{title:'Создать Div-контейнер',toolbar:'Создать Div-контейнер',cssClassInputLabel:'Классы CSS',styleSelectLabel:'Стиль',IdInputLabel:'Идентификатор',languageCodeInputLabel:'Код языка',inlineStyleInputLabel:'Стиль элемента',advisoryTitleInputLabel:'Заголовок',langDirLabel:'Направление текста',langDirLTRLabel:'Слева направо (LTR)',langDirRTLLabel:'Справа налево (RTL)',edit:'Редактировать контейнер',remove:'Удалить контейнер'},iframe:{title:'Свойства iFrame',toolbar:'iFrame',noUrl:'Пожалуйста, введите ссылку фрейма',scrolling:'Отображать полосы прокрутки',border:'Показать границы фрейма'},font:{label:'Шрифт',voiceLabel:'Шрифт',panelTitle:'Шрифт'},fontSize:{label:'Размер',voiceLabel:'Размер шрифта',panelTitle:'Размер шрифта'},colorButton:{textColorTitle:'Цвет текста',bgColorTitle:'Цвет фона',panelTitle:'Цвета',auto:'Автоматически',more:'Ещё цвета...'},colors:{'000':'Чёрный',800000:'Бордовый','8B4513':'Кожано-коричневый','2F4F4F':'Темный синевато-серый','008080':'Сине-зелёный','000080':'Тёмно-синий','4B0082':'Индиго',696969:'Тёмно-серый',B22222:'Кирпичный',A52A2A:'Коричневый',DAA520:'Золотисто-берёзовый','006400':'Темно-зелёный','40E0D0':'Бирюзовый','0000CD':'Умеренно синий',800080:'Пурпурный',808080:'Серый',F00:'Красный',FF8C00:'Темно-оранжевый',FFD700:'Золотистый','008000':'Зелёный','0FF':'Васильковый','00F':'Синий',EE82EE:'Фиолетовый',A9A9A9:'Тускло-серый',FFA07A:'Светло-лососевый',FFA500:'Оранжевый',FFFF00:'Жёлтый','00FF00':'Лайма',AFEEEE:'Бледно-синий',ADD8E6:'Свелто-голубой',DDA0DD:'Сливовый',D3D3D3:'Светло-серый',FFF0F5:'Розово-лавандовый',FAEBD7:'Античный белый',FFFFE0:'Светло-жёлтый',F0FFF0:'Медвяной росы',F0FFFF:'Лазурный',F0F8FF:'Бледно-голубой',E6E6FA:'Лавандовый',FFF:'Белый'},scayt:{title:'Проверка орфографии по мере ввода (SCAYT)',opera_title:'Не поддерживается Opera',enable:'Включить SCAYT',disable:'Отключить SCAYT',about:'О SCAYT',toggle:'Переключить SCAYT',options:'Настройки',langs:'Языки',moreSuggestions:'Ещё варианты',ignore:'Пропустить',ignoreAll:'Пропустить всё',addWord:'Добавить слово',emptyDic:'Вы должны указать название словаря.',optionsTab:'Параметры',allCaps:'Игнорировать слова из заглавных букв',ignoreDomainNames:'Игнорировать доменные имена',mixedCase:'Игнорировать слова из букв в разном регистре',mixedWithDigits:'Игнорировать слова, содержащие цифры',languagesTab:'Языки',dictionariesTab:'Словари',dic_field_name:'Название словаря',dic_create:'Создать',dic_restore:'Восстановить',dic_delete:'Удалить',dic_rename:'Переименовать',dic_info:'Изначально, пользовательский словарь хранится в cookie, которые ограничены в размере. Когда словарь пользователя вырастает до размеров, что его невозможно хранить в cookie, он переносится на хранение на наш сервер. Чтобы сохранить ваш словарь на нашем сервере, вам следует указать название вашего словаря. Если у вас уже был словарь, который вы сохраняли на нашем сервере, то укажите здесь его название и нажмите кнопку Восстановить.',aboutTab:'О SCAYT'},about:{title:'О CKEditor',dlgTitle:'О CKEditor',help:'$1 содержит подробную справку по использованию.',userGuide:'Руководство пользователя CKEditor',moreInfo:'Для получения информации о лицензии, пожалуйста, перейдите на наш сайт:',copy:'Copyright © $1. Все права защищены.'},maximize:'Развернуть',minimize:'Свернуть',fakeobjects:{anchor:'Якорь',flash:'Flash анимация',iframe:'iFrame',hiddenfield:'Скрытое поле',unknown:'Неизвестный объект'},resize:'Перетащите для изменения размера',colordialog:{title:'Выберите цвет',options:'Настройки цвета',highlight:'Под курсором',selected:'Выбранный цвет',clear:'Очистить'},toolbarCollapse:'Свернуть панель инструментов',toolbarExpand:'Развернуть панель инструментов',toolbarGroups:{document:'Документ',clipboard:'Буфер обмена / Отмена действий',editing:'Корректировка',forms:'Формы',basicstyles:'Простые стили',paragraph:'Абзац',links:'Ссылки',insert:'Вставка',styles:'Стили',colors:'Цвета',tools:'Инструменты'},bidi:{ltr:'Направление текста слева направо',rtl:'Направление текста справа налево'},docprops:{label:'Свойства документа',title:'Свойства документа',design:'Дизайн',meta:'Метаданные',chooseColor:'Выберите',other:'Другой ...',docTitle:'Заголовок страницы',charset:'Кодировка набора символов',charsetOther:'Другая кодировка набора символов',charsetASCII:'ASCII',charsetCE:'Центрально-европейская',charsetCT:'Китайская традиционная (Big5)',charsetCR:'Кириллица',charsetGR:'Греческая',charsetJP:'Японская',charsetKR:'Корейская',charsetTR:'Турецкая',charsetUN:'Юникод (UTF-8)',charsetWE:'Западно-европейская',docType:'Заголовок типа документа',docTypeOther:'Другой заголовок типа документа',xhtmlDec:'Включить объявления XHTML',bgColor:'Цвет фона',bgImage:'Ссылка на фоновое изображение',bgFixed:'Фон прикреплён (не проматывается)',txtColor:'Цвет текста',margin:'Отступы страницы',marginTop:'Верхний',marginLeft:'Левый',marginRight:'Правый',marginBottom:'Нижний',metaKeywords:'Ключевые слова документа (через запятую)',metaDescription:'Описание документа',metaAuthor:'Автор',metaCopyright:'Авторские права',previewHtml:'<p>Это <strong>пример</strong> текста, написанного с помощью <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sk.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sk.js
new file mode 100755
index 0000000..3e8a02e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sk={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Zdroj',newPage:'Nová stránka',save:'Uložiť',preview:'Náhľad',cut:'Vystrihnúť',copy:'Kopírovať',paste:'Vložiť',print:'Tlač',underline:'Podčiarknuté',bold:'Tučné',italic:'Kurzíva',selectAll:'Vybrať všetko',removeFormat:'Odstrániť formátovanie',strike:'Prečiarknuté',subscript:'Dolný index',superscript:'Horný index',horizontalrule:'Vložiť vodorovnú čiaru',pagebreak:'Vložiť oddeľovač stránky',pagebreakAlt:'Zalomenie strany',unlink:'Odstrániť odkaz',undo:'Späť',redo:'Znovu',common:{browseServer:'Prechádzať server',url:'URL',protocol:'Protokol',upload:'Odoslať',uploadSubmit:'Odoslať na server',image:'Obrázok',flash:'Flash',form:'Formulár',checkbox:'Zaškrtávacie políčko',radio:'Prepínač',textField:'Textové pole',textarea:'Textová oblasť',hiddenField:'Skryté pole',button:'Tlačidlo',select:'Rozbaľovací zoznam',imageButton:'Obrázkové tlačidlo',notSet:'<nenastavené>',id:'Id',name:'Meno',langDir:'Orientácia jazyka',langDirLtr:'Zľava doprava (LTR)',langDirRtl:'Sprava doľava (RTL)',langCode:'Kód jazyka',longDescr:'Dlhý popis URL',cssClass:'Trieda štýlu',advisoryTitle:'Pomocný titulok',cssStyle:'Štýl',ok:'OK',cancel:'Zrušiť',close:'Zatvorit',preview:'Náhľad',generalTab:'Hlavné',advancedTab:'Rozšírené',validateNumberFailed:'Hodnota nieje číslo.',confirmNewPage:'Prajete si načítat novú stránku? Všetky neuložené zmeny budú stratené. ',confirmCancel:'Niektore možnosti boli zmenené. Naozaj chcete zavrieť okno?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Šírka',height:'Výška',align:'Zarovnanie',alignLeft:'Vľavo',alignRight:'Vpravo',alignCenter:'Na stred',alignTop:'Nahor',alignMiddle:'Na stred',alignBottom:'Dole',invalidHeight:'Výška musí byť číslo.',invalidWidth:'Šírka musí byť číslo.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Vložiť špeciálne znaky',title:'Výber špeciálneho znaku',options:'Možnosti špecíalneho znaku'},link:{toolbar:'Vložiť/zmeniť odkaz',other:'<iný>',menu:'Zmeniť odkaz',title:'Odkaz',info:'Informácie o odkaze',target:'Cieľ',upload:'Odoslať',advanced:'Rozšírené',type:'Typ odkazu',toUrl:'URL',toAnchor:'Kotva v tejto stránke',toEmail:'E-Mail',targetFrame:'<rámec>',targetPopup:'<vyskakovacie okno>',targetFrameName:'Meno rámu cieľa',targetPopupName:'Názov vyskakovacieho okna',popupFeatures:'Vlastnosti vyskakovacieho okna',popupResizable:'Meniteľná veľkosť',popupStatusBar:'Stavový riadok',popupLocationBar:'Panel umiestnenia',popupToolbar:'Panel nástrojov',popupMenuBar:'Panel ponuky',popupFullScreen:'Celá obrazovka (IE)',popupScrollBars:'Posuvníky',popupDependent:'Závislosť (Netscape)',popupLeft:'Ľavý okraj',popupTop:'Horný okraj',id:'Id',langDir:'Orientácia jazyka',langDirLTR:'Zľava doprava (LTR)',langDirRTL:'Sprava doľava (RTL)',acccessKey:'Prístupový kľúč',name:'Meno',langCode:'Orientácia jazyka',tabIndex:'Poradie prvku',advisoryTitle:'Pomocný titulok',advisoryContentType:'Pomocný typ obsahu',cssClasses:'Trieda štýlu',charset:'Priradená znaková sada',styles:'Štýl',rel:'Relationship',selectAnchor:'Vybrať kotvu',anchorName:'Podľa mena kotvy',anchorId:'Podľa Id objektu',emailAddress:'E-Mailová adresa',emailSubject:'Predmet správy',emailBody:'Telo správy',noAnchors:'(V stránke nie je definovaná žiadna kotva)',noUrl:'Zadajte prosím URL odkazu',noEmail:'Zadajte prosím e-mailovú adresu'},anchor:{toolbar:'Vložiť/zmeniť kotvu',menu:'Vlastnosti kotvy',title:'Vlastnosti kotvy',name:'Meno kotvy',errorName:'Zadajte prosím meno kotvy',remove:'Remove Anchor'},list:{numberedTitle:'Vlastnosti číselného zoznamu',bulletedTitle:'Bulleted List Properties',type:'Druh',start:'Začiatok',validateStartNumber:'Začiatočné číslo číselného zoznamu musí byť celé číslo.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Nájsť a nahradiť',find:'Hľadať',replace:'Nahradiť',findWhat:'Čo hľadať:',replaceWith:'Čím nahradiť:',notFoundMsg:'Hľadaný text nebol nájdený.',findOptions:'Find Options',matchCase:'Rozlišovať malé/veľké písmená',matchWord:'Len celé slová',matchCyclic:'Match cyclic',replaceAll:'Nahradiť všetko',replaceSuccessMsg:'%1 výskyt(ov) nahradených.'},table:{toolbar:'Tabuľka',title:'Vlastnosti tabuľky',menu:'Vlastnosti tabuľky',deleteTable:'Vymazať tabuľku',rows:'Riadky',columns:'Stĺpce',border:'Ohraničenie',widthPx:'pixelov',widthPc:'percent',widthUnit:'width unit',cellSpace:'Vzdialenosť buniek',cellPad:'Odsadenie obsahu',caption:'Popis',summary:'Prehľad',headers:'Hlavička',headersNone:'Žiadne',headersColumn:'Prvý stĺpec',headersRow:'Prvý riadok',headersBoth:'Obe',invalidRows:'Počet riadkov musí byť číslo väčšie ako 0.',invalidCols:'Počet stĺpcov musí byť číslo väčšie ako 0.',invalidBorder:'Širka rámu musí byť celé číslo.',invalidWidth:'Širka tabuľky musí byť číslo.',invalidHeight:'Výška tabuľky musí byť číslo.',invalidCellSpacing:'Medzera mädzi bunkami (spacing) musí byť číslo.',invalidCellPadding:'Odsadenie v bunkách (padding) musí byť číslo.',cell:{menu:'Bunka',insertBefore:'Vložiť bunku pred',insertAfter:'Vložiť bunku za',deleteCell:'Vymazať bunky',merge:'Zlúčiť bunky',mergeRight:'Zlúčiť doprava',mergeDown:'Zlúčiť dole',splitHorizontal:'Rozdeliť bunky horizontálne',splitVertical:'Rozdeliť bunky vertikálne',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Riadok',insertBefore:'Vložiť riadok za',insertAfter:'Vložiť riadok pred',deleteRow:'Vymazať riadok'},column:{menu:'Stĺpec',insertBefore:'Vložiť stĺpec za',insertAfter:'Vložiť stĺpec pred',deleteColumn:'Zmazať stĺpec'}},button:{title:'Vlastnosti tlačidla',text:'Text',type:'Typ',typeBtn:'Tlačidlo',typeSbm:'Odoslať',typeRst:'Vymazať'},checkboxAndRadio:{checkboxTitle:'Vlastnosti zaškrtávacieho políčka',radioTitle:'Vlastnosti prepínača',value:'Hodnota',selected:'Vybrané'},form:{title:'Vlastnosti formulára',menu:'Vlastnosti formulára',action:'Akcie',method:'Metóda',encoding:'Kódovanie'},select:{title:'Vlastnosti rozbaľovacieho zoznamu',selectInfo:'Info',opAvail:'Dostupné možnosti',value:'Hodnota',size:'Veľkosť',lines:'riadkov',chkMulti:'Povoliť viacnásobný výber',opText:'Text',opValue:'Hodnota',btnAdd:'Pridať',btnModify:'Zmeniť',btnUp:'Hore',btnDown:'Dole',btnSetValue:'Nastaviť ako vybranú hodnotu',btnDelete:'Zmazať'},textarea:{title:'Vlastnosti textovej oblasti',cols:'Stĺpce',rows:'Riadky'},textfield:{title:'Vlastnosti textového poľa',name:'Názov',value:'Hodnota',charWidth:'Šírka pola (znakov)',maxChars:'Maximálny počet znakov',type:'Typ',typeText:'Text',typePass:'Heslo'},hidden:{title:'Vlastnosti skrytého poľa',name:'Názov',value:'Hodnota'},image:{title:'Vlastnosti obrázku',titleButton:'Vlastnosti obrázkového tlačidla',menu:'Vlastnosti obrázku',infoTab:'Informácie o obrázku',btnUpload:'Odoslať na server',upload:'Odoslať',alt:'Alternatívny text',lockRatio:'Zámok',resetSize:'Pôvodná veľkosť',border:'Okraje',hSpace:'H-medzera',vSpace:'V-medzera',alertUrl:'Zadajte prosím URL obrázku',linkTab:'Odkaz',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Vlastnosti Flashu',propertiesTab:'Properties',title:'Vlastnosti Flashu',chkPlay:'Automatické prehrávanie',chkLoop:'Opakovanie',chkMenu:'Povoliť Flash Menu',chkFull:'Allow Fullscreen',scale:'Mierka',scaleAll:'Zobraziť mierku',scaleNoBorder:'Bez okrajov',scaleFit:'Roztiahnuť na celé',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Úplne dole',alignAbsMiddle:'Do stredu',alignBaseline:'Na základňu',alignTextTop:'Na horný okraj textu',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Farba pozadia',hSpace:'H-medzera',vSpace:'V-medzera',validateSrc:'Zadajte prosím URL odkazu',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Kontrola pravopisu',title:'Spell Check',notAvailable:'Služba práve nieje dostupná.',errorLoading:'Chyba pri načítaní slovníka z adresy: %s.',notInDic:'Nie je v slovníku',changeTo:'Zmeniť na',btnIgnore:'Ignorovať',btnIgnoreAll:'Ignorovať všetko',btnReplace:'Prepísat',btnReplaceAll:'Prepísat všetko',btnUndo:'Späť',noSuggestions:'- Žiadny návrh -',progress:'Prebieha kontrola pravopisu...',noMispell:'Kontrola pravopisu dokončená: bez chýb',noChanges:'Kontrola pravopisu dokončená: žiadne slová nezmenené',oneChange:'Kontrola pravopisu dokončená: zmenené jedno slovo',manyChanges:'Kontrola pravopisu dokončená: zmenených %1 slov',ieSpellDownload:'Kontrola pravopisu nie je naištalovaná. Chcete ju hneď stiahnuť?'},smiley:{toolbar:'Smajlíky',title:'Vkladanie smajlíkov',options:'Možnosti smajlíkov'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Číslovanie',bulletedlist:'Odrážky',indent:'Zväčšiť odsadenie',outdent:'Zmenšiť odsadenie',justify:{left:'Zarovnať vľavo',center:'Zarovnať na stred',right:'Zarovnať vpravo',block:'Zarovnať do bloku'},blockquote:'Citácia',clipboard:{title:'Vložiť',cutError:'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl/Cmd+X).',copyError:'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl/Cmd+C).',pasteMsg:'Prosím vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl/Cmd+V</STRONG>) a stlačte <STRONG>OK</STRONG>.',securityMsg:'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru pristupovať priamo k datám v schránke. Musíte ich vložiť znovu do tohto okna.',pasteArea:'Vložiť pole'},pastefromword:{confirmCleanup:'Vkladaný text vyzerá byť skopírovaný z Wordu. Chcete ho automaticky vyčistiť pred vkladaním?',toolbar:'Vložiť z Wordu',title:'Vložiť z Wordu',error:'Nastala chyba pri čistení údajov. Nie je možné vyčistiť vložené údaje.'},pasteText:{button:'Vložiť ako čistý text',title:'Vložiť ako čistý text'},templates:{button:'Šablóny',title:'Šablóny obsahu',options:'Vlastnosti šablóny',insertOption:'Nahradiť aktuálny obsah',selectPromptMsg:'Prosím vyberte šablóny na otvorenie v editore<br>(súšasný obsah bude stratený):',emptyListMsg:'(žiadne šablóny nenájdené)'},showBlocks:'Ukázať bloky',stylesCombo:{label:'Štýl',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formát',panelTitle:'Formát',tag_p:'Normálny',tag_pre:'Formátovaný',tag_address:'Adresa',tag_h1:'Nadpis 1',tag_h2:'Nadpis 2',tag_h3:'Nadpis 3',tag_h4:'Nadpis 4',tag_h5:'Nadpis 5',tag_h6:'Nadpis 6',tag_div:'Odsek (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame - vlastnosti',toolbar:'IFrame',noUrl:'Vložte URL pre iframe',scrolling:'Povoliť skrolovanie',border:'Zobraziť orámovanie'},font:{label:'Písmo',voiceLabel:'Font',panelTitle:'Písmo'},fontSize:{label:'Veľkosť',voiceLabel:'Veľkosť písma',panelTitle:'Veľkosť'},colorButton:{textColorTitle:'Farba textu',bgColorTitle:'Farba pozadia',panelTitle:'Farby',auto:'Automaticky',more:'Viac farieb...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximalizovať',minimize:'Minimalizovať',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Vlastnosti dokumentu',title:'Vlastnosti dokumentu',design:'Design',meta:'Meta Data',chooseColor:'Choose',other:'<iný>',docTitle:'Titulok',charset:'Kódová stránka',charsetOther:'Iná kódová stránka',charsetASCII:'ASCII',charsetCE:'Stredoeurópske',charsetCT:'Čínština tradičná (Big5)',charsetCR:'Cyrillika',charsetGR:'Gréčtina',charsetJP:'Japončina',charsetKR:'Korejčina',charsetTR:'Turečtina',charsetUN:'Unicode (UTF-8)',charsetWE:'Západná európa',docType:'Typ záhlavia dokumentu',docTypeOther:'Iný typ záhlavia dokumentu',xhtmlDec:'Obsahuje deklarácie XHTML',bgColor:'Farba pozadia',bgImage:'URL adresa obrázku na pozadí',bgFixed:'Fixné pozadie',txtColor:'Farba textu',margin:'Okraje stránky',marginTop:'Horný',marginLeft:'Ľavý',marginRight:'Pravý',marginBottom:'Dolný',metaKeywords:'Kľúčové slová pre indexovanie (oddelené čiarkou)',metaDescription:'Popis stránky',metaAuthor:'Autor',metaCopyright:'Autorské práva',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sl.js
new file mode 100755
index 0000000..5d7f491
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sl={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Izvorna koda',newPage:'Nova stran',save:'Shrani',preview:'Predogled',cut:'Izreži',copy:'Kopiraj',paste:'Prilepi',print:'Natisni',underline:'Podčrtano',bold:'Krepko',italic:'Ležeče',selectAll:'Izberi vse',removeFormat:'Odstrani oblikovanje',strike:'Prečrtano',subscript:'Podpisano',superscript:'Nadpisano',horizontalrule:'Vstavi vodoravno črto',pagebreak:'Vstavi prelom strani',pagebreakAlt:'Page Break',unlink:'Odstrani povezavo',undo:'Razveljavi',redo:'Ponovi',common:{browseServer:'Prebrskaj na strežniku',url:'URL',protocol:'Protokol',upload:'Prenesi',uploadSubmit:'Pošlji na strežnik',image:'Slika',flash:'Flash',form:'Obrazec',checkbox:'Potrditveno polje',radio:'Izbirno polje',textField:'Vnosno polje',textarea:'Vnosno območje',hiddenField:'Skrito polje',button:'Gumb',select:'Spustni seznam',imageButton:'Gumb s sliko',notSet:'<ni postavljen>',id:'Id',name:'Ime',langDir:'Smer jezika',langDirLtr:'Od leve proti desni (LTR)',langDirRtl:'Od desne proti levi (RTL)',langCode:'Oznaka jezika',longDescr:'Dolg opis URL-ja',cssClass:'Razred stilne predloge',advisoryTitle:'Predlagani naslov',cssStyle:'Slog',ok:'V redu',cancel:'Prekliči',close:'Close',preview:'Preview',generalTab:'Splošno',advancedTab:'Napredno',validateNumberFailed:'Ta vrednost ni število.',confirmNewPage:'Vse neshranjene spremembe te vsebine bodo izgubljene. Ali gotovo želiš naložiti novo stran?',confirmCancel:'Nekaj možnosti je bilo spremenjenih. Ali gotovo želiš zapreti okno?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Širina',height:'Višina',align:'Poravnava',alignLeft:'Levo',alignRight:'Desno',alignCenter:'Sredinsko',alignTop:'Na vrh',alignMiddle:'V sredino',alignBottom:'Na dno',invalidHeight:'Višina mora biti število.',invalidWidth:'Širina mora biti število.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, nedosegljiv</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Vstavi posebni znak',title:'Izberi posebni znak',options:'Special Character Options'},link:{toolbar:'Vstavi/uredi povezavo',other:'<drug>',menu:'Uredi povezavo',title:'Povezava',info:'Podatki o povezavi',target:'Cilj',upload:'Prenesi',advanced:'Napredno',type:'Vrsta povezave',toUrl:'URL',toAnchor:'Zaznamek na tej strani',toEmail:'Elektronski naslov',targetFrame:'<okvir>',targetPopup:'<pojavno okno>',targetFrameName:'Ime ciljnega okvirja',targetPopupName:'Ime pojavnega okna',popupFeatures:'Značilnosti pojavnega okna',popupResizable:'Spremenljive velikosti',popupStatusBar:'Vrstica stanja',popupLocationBar:'Naslovna vrstica',popupToolbar:'Orodna vrstica',popupMenuBar:'Menijska vrstica',popupFullScreen:'Celozaslonska slika (IE)',popupScrollBars:'Drsniki',popupDependent:'Podokno (Netscape)',popupLeft:'Lega levo',popupTop:'Lega na vrhu',id:'Id',langDir:'Smer jezika',langDirLTR:'Od leve proti desni (LTR)',langDirRTL:'Od desne proti levi (RTL)',acccessKey:'Vstopno geslo',name:'Ime',langCode:'Smer jezika',tabIndex:'Številka tabulatorja',advisoryTitle:'Predlagani naslov',advisoryContentType:'Predlagani tip vsebine (content-type)',cssClasses:'Razred stilne predloge',charset:'Kodna tabela povezanega vira',styles:'Slog',rel:'Relationship',selectAnchor:'Izberi zaznamek',anchorName:'Po imenu zaznamka',anchorId:'Po ID-ju elementa',emailAddress:'Elektronski naslov',emailSubject:'Predmet sporočila',emailBody:'Vsebina sporočila',noAnchors:'(V tem dokumentu ni zaznamkov)',noUrl:'Vnesite URL povezave',noEmail:'Vnesite elektronski naslov'},anchor:{toolbar:'Vstavi/uredi zaznamek',menu:'Lastnosti zaznamka',title:'Lastnosti zaznamka',name:'Ime zaznamka',errorName:'Prosim vnesite ime zaznamka',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Najdi in zamenjaj',find:'Najdi',replace:'Zamenjaj',findWhat:'Najdi:',replaceWith:'Zamenjaj z:',notFoundMsg:'Navedeno besedilo ni bilo najdeno.',findOptions:'Find Options',matchCase:'Razlikuj velike in male črke',matchWord:'Samo cele besede',matchCyclic:'Primerjaj znake v cirilici',replaceAll:'Zamenjaj vse',replaceSuccessMsg:'%1 pojavitev je bilo zamenjano.'},table:{toolbar:'Tabela',title:'Lastnosti tabele',menu:'Lastnosti tabele',deleteTable:'Izbriši tabelo',rows:'Vrstice',columns:'Stolpci',border:'Velikost obrobe',widthPx:'pik',widthPc:'procentov',widthUnit:'width unit',cellSpace:'Razmik med celicami',cellPad:'Polnilo med celicami',caption:'Naslov',summary:'Povzetek',headers:'Glave',headersNone:'Brez',headersColumn:'Prvi stolpec',headersRow:'Prva vrstica',headersBoth:'Oboje',invalidRows:'Število vrstic mora biti večje od 0.',invalidCols:'Število stolpcev mora biti večje od 0.',invalidBorder:'Širina obrobe mora biti število.',invalidWidth:'Širina tabele mora biti število.',invalidHeight:'Višina tabele mora biti število.',invalidCellSpacing:'Razmik med celicami mora biti število.',invalidCellPadding:'Zamik celic mora biti število',cell:{menu:'Celica',insertBefore:'Vstavi celico pred',insertAfter:'Vstavi celico za',deleteCell:'Izbriši celice',merge:'Združi celice',mergeRight:'Združi desno',mergeDown:'Druži navzdol',splitHorizontal:'Razdeli celico vodoravno',splitVertical:'Razdeli celico navpično',title:'Lastnosti celice',cellType:'Vrsta celice',rowSpan:'Razpon vrstic',colSpan:'Razpon stolpcev',wordWrap:'Prelom besedila',hAlign:'Vodoravna poravnava',vAlign:'Navpična poravnava',alignBaseline:'Osnovnica',bgColor:'Barva ozadja',borderColor:'Barva obrobe',data:'Podatki',header:'Glava',yes:'Da',no:'Ne',invalidWidth:'Širina celice mora biti število.',invalidHeight:'Višina celice mora biti število.',invalidRowSpan:'Razpon vrstic mora biti celo število.',invalidColSpan:'Razpon stolpcev mora biti celo število.',chooseColor:'Izberi'},row:{menu:'Vrstica',insertBefore:'Vstavi vrstico pred',insertAfter:'Vstavi vrstico za',deleteRow:'Izbriši vrstice'},column:{menu:'Stolpec',insertBefore:'Vstavi stolpec pred',insertAfter:'Vstavi stolpec za',deleteColumn:'Izbriši stolpce'}},button:{title:'Lastnosti gumba',text:'Besedilo (Vrednost)',type:'Tip',typeBtn:'Gumb',typeSbm:'Potrdi',typeRst:'Ponastavi'},checkboxAndRadio:{checkboxTitle:'Lastnosti potrditvenega polja',radioTitle:'Lastnosti izbirnega polja',value:'Vrednost',selected:'Izbrano'},form:{title:'Lastnosti obrazca',menu:'Lastnosti obrazca',action:'Akcija',method:'Metoda',encoding:'Kodiranje znakov'},select:{title:'Lastnosti spustnega seznama',selectInfo:'Podatki',opAvail:'Razpoložljive izbire',value:'Vrednost',size:'Velikost',lines:'vrstic',chkMulti:'Dovoli izbor večih vrstic',opText:'Besedilo',opValue:'Vrednost',btnAdd:'Dodaj',btnModify:'Spremeni',btnUp:'Gor',btnDown:'Dol',btnSetValue:'Postavi kot privzeto izbiro',btnDelete:'Izbriši'},textarea:{title:'Lastnosti vnosnega območja',cols:'Stolpcev',rows:'Vrstic'},textfield:{title:'Lastnosti vnosnega polja',name:'Ime',value:'Vrednost',charWidth:'Dolžina',maxChars:'Največje število znakov',type:'Tip',typeText:'Besedilo',typePass:'Geslo'},hidden:{title:'Lastnosti skritega polja',name:'Ime',value:'Vrednost'},image:{title:'Lastnosti slike',titleButton:'Lastnosti gumba s sliko',menu:'Lastnosti slike',infoTab:'Podatki o sliki',btnUpload:'Pošlji na strežnik',upload:'Pošlji',alt:'Nadomestno besedilo',lockRatio:'Zakleni razmerje',resetSize:'Ponastavi velikost',border:'Obroba',hSpace:'Vodoravni razmik',vSpace:'Navpični razmik',alertUrl:'Vnesite URL slike',linkTab:'Povezava',button2Img:'Želiš pretvoriti izbrani gumb s sliko v preprosto sliko?',img2Button:'Želiš pretvoriti izbrano sliko v gumb s sliko?',urlMissing:'Manjka vir (URL) slike.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Lastnosti Flash',propertiesTab:'Lastnosti',title:'Lastnosti Flash',chkPlay:'Samodejno predvajaj',chkLoop:'Ponavljanje',chkMenu:'Omogoči Flash Meni',chkFull:'Dovoli celozaslonski način',scale:'Povečava',scaleAll:'Pokaži vse',scaleNoBorder:'Brez obrobe',scaleFit:'Natančno prileganje',access:'Dostop skript',accessAlways:'Vedno',accessSameDomain:'Samo ista domena',accessNever:'Nikoli',alignAbsBottom:'Popolnoma na dno',alignAbsMiddle:'Popolnoma v sredino',alignBaseline:'Na osnovno črto',alignTextTop:'Besedilo na vrh',quality:'Kakovost',qualityBest:'Najvišja',qualityHigh:'Visoka',qualityAutoHigh:'Samodejno visoka',qualityMedium:'Srednja',qualityAutoLow:'Samodejno nizka',qualityLow:'Nizka',windowModeWindow:'Okno',windowModeOpaque:'Motno',windowModeTransparent:'Prosojno',windowMode:'Vrsta okna',flashvars:'Spremenljivke za Flash',bgcolor:'Barva ozadja',hSpace:'Vodoravni razmik',vSpace:'Navpični razmik',validateSrc:'Vnesite URL povezave',validateHSpace:'Vodoravni razmik mora biti število.',validateVSpace:'Navpični razmik mora biti število.'},spellCheck:{toolbar:'Preveri črkovanje',title:'Črkovalnik',notAvailable:'Oprostite, storitev trenutno ni dosegljiva.',errorLoading:'Napaka pri nalaganju storitve programa na naslovu %s.',notInDic:'Ni v slovarju',changeTo:'Spremeni v',btnIgnore:'Prezri',btnIgnoreAll:'Prezri vse',btnReplace:'Zamenjaj',btnReplaceAll:'Zamenjaj vse',btnUndo:'Razveljavi',noSuggestions:'- Ni predlogov -',progress:'Preverjanje črkovanja se izvaja...',noMispell:'Črkovanje je končano: Brez napak',noChanges:'Črkovanje je končano: Nobena beseda ni bila spremenjena',oneChange:'Črkovanje je končano: Spremenjena je bila ena beseda',manyChanges:'Črkovanje je končano: Spremenjenih je bilo %1 besed',ieSpellDownload:'Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?'},smiley:{toolbar:'Smeško',title:'Vstavi smeška',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Oštevilčen seznam',bulletedlist:'Označen seznam',indent:'Povečaj zamik',outdent:'Zmanjšaj zamik',justify:{left:'Leva poravnava',center:'Sredinska poravnava',right:'Desna poravnava',block:'Obojestranska poravnava'},blockquote:'Citat',clipboard:{title:'Prilepi',cutError:'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).',copyError:'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).',pasteMsg:'Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl/Cmd+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.',securityMsg:'Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Prilepi iz Worda',title:'Prilepi iz Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Prilepi kot golo besedilo',title:'Prilepi kot golo besedilo'},templates:{button:'Predloge',title:'Vsebinske predloge',options:'Template Options',insertOption:'Zamenjaj trenutno vsebino',selectPromptMsg:'Izberite predlogo, ki jo želite odpreti v urejevalniku<br>(trenutna vsebina bo izgubljena):',emptyListMsg:'(Ni pripravljenih predlog)'},showBlocks:'Prikaži ograde',stylesCombo:{label:'Slog',panelTitle:'Formatting Styles',panelTitle1:'Slogi odstavkov',panelTitle2:'Slogi besedila',panelTitle3:'Slogi objektov'},format:{label:'Oblika',panelTitle:'Oblika',tag_p:'Navaden',tag_pre:'Oblikovan',tag_address:'Napis',tag_h1:'Naslov 1',tag_h2:'Naslov 2',tag_h3:'Naslov 3',tag_h4:'Naslov 4',tag_h5:'Naslov 5',tag_h6:'Naslov 6',tag_div:'Navaden (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Pisava',voiceLabel:'Pisava',panelTitle:'Pisava'},fontSize:{label:'Velikost',voiceLabel:'Velikost',panelTitle:'Velikost'},colorButton:{textColorTitle:'Barva besedila',bgColorTitle:'Barva ozadja',panelTitle:'Colors',auto:'Samodejno',more:'Več barv...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Črkovanje med tipkanjem',opera_title:'Not supported by Opera',enable:'Omogoči SCAYT',disable:'Onemogoči SCAYT',about:'O storitvi SCAYT',toggle:'Preklopi SCAYT',options:'Možnosti',langs:'Jeziki',moreSuggestions:'Več predlogov',ignore:'Prezri',ignoreAll:'Prezri vse',addWord:'Dodaj besedo',emptyDic:'Ime slovarja ne more biti prazno.',optionsTab:'Možnosti',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Jeziki',dictionariesTab:'Slovarji',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'O storitvi'},about:{title:'O programu CKEditor',dlgTitle:'O programu CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'Za informacijo o licenci prostim obiščite našo spletno stran:',copy:'Copyright © $1. Vse pravice pridržane.'},maximize:'Maksimiraj',minimize:'Minimiraj',fakeobjects:{anchor:'Sidro',flash:'Flash animacija',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Neznan objekt'},resize:'Potegni za spremembo velikosti',colordialog:{title:'Izberi barvo',options:'Color Options',highlight:'Poudarjeno',selected:'Izbrano',clear:'Počisti'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Lastnosti dokumenta',title:'Lastnosti dokumenta',design:'Design',meta:'Meta podatki',chooseColor:'Izberi',other:'<drug>',docTitle:'Naslov strani',charset:'Kodna tabela',charsetOther:'Druga kodna tabela',charsetASCII:'ASCII',charsetCE:'Srednjeevropsko',charsetCT:'Tradicionalno Kitajsko (Big5)',charsetCR:'Cirilica',charsetGR:'Grško',charsetJP:'Japonsko',charsetKR:'Korejsko',charsetTR:'Turško',charsetUN:'Unicode (UTF-8)',charsetWE:'Zahodnoevropsko',docType:'Glava tipa dokumenta',docTypeOther:'Druga glava tipa dokumenta',xhtmlDec:'Vstavi XHTML deklaracije',bgColor:'Barva ozadja',bgImage:'URL slike za ozadje',bgFixed:'Nepremično ozadje',txtColor:'Barva besedila',margin:'Zamiki strani',marginTop:'Na vrhu',marginLeft:'Levo',marginRight:'Desno',marginBottom:'Spodaj',metaKeywords:'Ključne besede (ločene z vejicami)',metaDescription:'Opis strani',metaAuthor:'Avtor',metaCopyright:'Avtorske pravice',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sr.js
new file mode 100755
index 0000000..963a233
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sr={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Kôд',newPage:'Нова страница',save:'Сачувај',preview:'Изглед странице',cut:'Исеци',copy:'Копирај',paste:'Залепи',print:'Штампа',underline:'Подвучено',bold:'Подебљано',italic:'Курзив',selectAll:'Означи све',removeFormat:'Уклони форматирање',strike:'Прецртано',subscript:'Индекс',superscript:'Степен',horizontalrule:'Унеси хоризонталну линију',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Уклони линк',undo:'Поништи акцију',redo:'Понови акцију',common:{browseServer:'Претражи сервер',url:'УРЛ',protocol:'Протокол',upload:'Пошаљи',uploadSubmit:'Пошаљи на сервер',image:'Слика',flash:'Флеш елемент',form:'Форма',checkbox:'Поље за потврду',radio:'Радио-дугме',textField:'Текстуално поље',textarea:'Зона текста',hiddenField:'Скривено поље',button:'Дугме',select:'Изборно поље',imageButton:'Дугме са сликом',notSet:'<није постављено>',id:'Ид',name:'Назив',langDir:'Смер језика',langDirLtr:'С лева на десно (LTR)',langDirRtl:'С десна на лево (RTL)',langCode:'Kôд језика',longDescr:'Пун опис УРЛ',cssClass:'Stylesheet класе',advisoryTitle:'Advisory наслов',cssStyle:'Стил',ok:'OK',cancel:'Oткажи',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Напредни тагови',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Ширина',height:'Висина',align:'Равнање',alignLeft:'Лево',alignRight:'Десно',alignCenter:'Средина',alignTop:'Врх',alignMiddle:'Средина',alignBottom:'Доле',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Унеси специјални карактер',title:'Одаберите специјални карактер',options:'Special Character Options'},link:{toolbar:'Унеси/измени линк',other:'<other>',menu:'Промени линк',title:'Линк',info:'Линк инфо',target:'Meтa',upload:'Пошаљи',advanced:'Напредни тагови',type:'Врста линка',toUrl:'URL',toAnchor:'Сидро на овој страници',toEmail:'Eлектронска пошта',targetFrame:'<оквир>',targetPopup:'<искачући прозор>',targetFrameName:'Назив одредишног фрејма',targetPopupName:'Назив искачућег прозора',popupFeatures:'Могућности искачућег прозора',popupResizable:'Resizable',popupStatusBar:'Статусна линија',popupLocationBar:'Локација',popupToolbar:'Toolbar',popupMenuBar:'Контекстни мени',popupFullScreen:'Приказ преко целог екрана (ИE)',popupScrollBars:'Скрол бар',popupDependent:'Зависно (Netscape)',popupLeft:'Од леве ивице екрана (пиксела)',popupTop:'Од врха екрана (пиксела)',id:'Id',langDir:'Смер језика',langDirLTR:'С лева на десно (LTR)',langDirRTL:'С десна на лево (RTL)',acccessKey:'Приступни тастер',name:'Назив',langCode:'Смер језика',tabIndex:'Таб индекс',advisoryTitle:'Advisory наслов',advisoryContentType:'Advisory врста садржаја',cssClasses:'Stylesheet класе',charset:'Linked Resource Charset',styles:'Стил',rel:'Relationship',selectAnchor:'Одабери сидро',anchorName:'По називу сидра',anchorId:'Пo Ид-jу елемента',emailAddress:'Адреса електронске поште',emailSubject:'Наслов',emailBody:'Садржај поруке',noAnchors:'(Нема доступних сидра)',noUrl:'Унесите УРЛ линка',noEmail:'Откуцајте адресу електронске поште'},anchor:{toolbar:'Унеси/измени сидро',menu:'Особине сидра',title:'Особине сидра',name:'Име сидра',errorName:'Молимо Вас да унесете име сидра',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Претрага',replace:'Замена',findWhat:'Пронађи:',replaceWith:'Замени са:',notFoundMsg:'Тражени текст није пронађен.',findOptions:'Find Options',matchCase:'Разликуј велика и мала слова',matchWord:'Упореди целе речи',matchCyclic:'Match cyclic',replaceAll:'Замени све',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Табела',title:'Особине табеле',menu:'Особине табеле',deleteTable:'Delete Table',rows:'Редова',columns:'Kолона',border:'Величина оквира',widthPx:'пиксела',widthPc:'процената',widthUnit:'width unit',cellSpace:'Ћелијски простор',cellPad:'Размак ћелија',caption:'Наслов табеле',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Обриши ћелије',merge:'Спој ћелије',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Обриши редове'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Обриши колоне'}},button:{title:'Особине дугмета',text:'Текст (вредност)',type:'Tип',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Особине поља за потврду',radioTitle:'Особине радио-дугмета',value:'Вредност',selected:'Означено'},form:{title:'Особине форме',menu:'Особине форме',action:'Aкција',method:'Mетода',encoding:'Encoding'},select:{title:'Особине изборног поља',selectInfo:'Инфо',opAvail:'Доступне опције',value:'Вредност',size:'Величина',lines:'линија',chkMulti:'Дозволи вишеструку селекцију',opText:'Текст',opValue:'Вредност',btnAdd:'Додај',btnModify:'Измени',btnUp:'Горе',btnDown:'Доле',btnSetValue:'Подеси као означену вредност',btnDelete:'Обриши'},textarea:{title:'Особине зоне текста',cols:'Број колона',rows:'Број редова'},textfield:{title:'Особине текстуалног поља',name:'Назив',value:'Вредност',charWidth:'Ширина (карактера)',maxChars:'Максимално карактера',type:'Тип',typeText:'Текст',typePass:'Лозинка'},hidden:{title:'Особине скривеног поља',name:'Назив',value:'Вредност'},image:{title:'Особине слика',titleButton:'Особине дугмета са сликом',menu:'Особине слика',infoTab:'Инфо слике',btnUpload:'Пошаљи на сервер',upload:'Пошаљи',alt:'Алтернативни текст',lockRatio:'Закључај однос',resetSize:'Ресетуј величину',border:'Оквир',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Унесите УРЛ слике',linkTab:'Линк',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Особине Флеша',propertiesTab:'Properties',title:'Особине флеша',chkPlay:'Аутоматски старт',chkLoop:'Понављај',chkMenu:'Укључи флеш мени',chkFull:'Allow Fullscreen',scale:'Скалирај',scaleAll:'Прикажи све',scaleNoBorder:'Без ивице',scaleFit:'Попуни површину',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs доле',alignAbsMiddle:'Abs средина',alignBaseline:'Базно',alignTextTop:'Врх текста',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Боја позадине',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Унесите УРЛ линка',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Провери спеловање',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Није у речнику',changeTo:'Измени',btnIgnore:'Игнориши',btnIgnoreAll:'Игнориши све',btnReplace:'Замени',btnReplaceAll:'Замени све',btnUndo:'Врати акцију',noSuggestions:'- Без сугестија -',progress:'Провера спеловања у току...',noMispell:'Провера спеловања завршена: грешке нису пронађене',noChanges:'Провера спеловања завршена: Није измењена ниједна реч',oneChange:'Провера спеловања завршена: Измењена је једна реч',manyChanges:'Провера спеловања завршена: %1 реч(и) је измењено',ieSpellDownload:'Провера спеловања није инсталирана. Да ли желите да је скинете са Интернета?'},smiley:{toolbar:'Смајли',title:'Унеси смајлија',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Набројиву листу',bulletedlist:'Ненабројива листа',indent:'Увећај леву маргину',outdent:'Смањи леву маргину',justify:{left:'Лево равнање',center:'Центриран текст',right:'Десно равнање',block:'Обострано равнање'},blockquote:'Block Quote',clipboard:{title:'Залепи',cutError:'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).',copyError:'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+C).',pasteMsg:'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl/Cmd+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Залепи из Worda',title:'Залепи из Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Залепи као чист текст',title:'Залепи као чист текст'},templates:{button:'Обрасци',title:'Обрасци за садржај',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Молимо Вас да одаберете образац који ће бити примењен на страницу (тренутни садржај ће бити обрисан):',emptyListMsg:'(Нема дефинисаних образаца)'},showBlocks:'Show Blocks',stylesCombo:{label:'Стил',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Формат',panelTitle:'Формат',tag_p:'Normal',tag_pre:'Formatirano',tag_address:'Adresa',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Фонт',voiceLabel:'Font',panelTitle:'Фонт'},fontSize:{label:'Величина фонта',voiceLabel:'Font Size',panelTitle:'Величина фонта'},colorButton:{textColorTitle:'Боја текста',bgColorTitle:'Боја позадине',panelTitle:'Colors',auto:'Аутоматски',more:'Више боја...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Особине документа',title:'Особине документа',design:'Design',meta:'Метаподаци',chooseColor:'Choose',other:'<other>',docTitle:'Наслов странице',charset:'Кодирање скупа карактера',charsetOther:'Остала кодирања скупа карактера',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Заглавље типа документа',docTypeOther:'Остала заглавља типа документа',xhtmlDec:'Улључи XHTML декларације',bgColor:'Боја позадине',bgImage:'УРЛ позадинске слике',bgFixed:'Фиксирана позадина',txtColor:'Боја текста',margin:'Маргине странице',marginTop:'Горња',marginLeft:'Лева',marginRight:'Десна',marginBottom:'Доња',metaKeywords:'Кључне речи за индексирање документа (раздвојене зарезом)',metaDescription:'Опис документа',metaAuthor:'Аутор',metaCopyright:'Ауторска права',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sr-latn.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sr-latn.js
new file mode 100755
index 0000000..a20361c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sr-latn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['sr-latn']={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Kôd',newPage:'Nova stranica',save:'Sačuvaj',preview:'Izgled stranice',cut:'Iseci',copy:'Kopiraj',paste:'Zalepi',print:'Štampa',underline:'Podvučeno',bold:'Podebljano',italic:'Kurziv',selectAll:'Označi sve',removeFormat:'Ukloni formatiranje',strike:'Precrtano',subscript:'Indeks',superscript:'Stepen',horizontalrule:'Unesi horizontalnu liniju',pagebreak:'Insert Page Break for Printing',pagebreakAlt:'Page Break',unlink:'Ukloni link',undo:'Poni�ti akciju',redo:'Ponovi akciju',common:{browseServer:'Pretraži server',url:'URL',protocol:'Protokol',upload:'Pošalji',uploadSubmit:'Pošalji na server',image:'Slika',flash:'Fleš',form:'Forma',checkbox:'Polje za potvrdu',radio:'Radio-dugme',textField:'Tekstualno polje',textarea:'Zona teksta',hiddenField:'Skriveno polje',button:'Dugme',select:'Izborno polje',imageButton:'Dugme sa slikom',notSet:'<nije postavljeno>',id:'Id',name:'Naziv',langDir:'Smer jezika',langDirLtr:'S leva na desno (LTR)',langDirRtl:'S desna na levo (RTL)',langCode:'Kôd jezika',longDescr:'Pun opis URL',cssClass:'Stylesheet klase',advisoryTitle:'Advisory naslov',cssStyle:'Stil',ok:'OK',cancel:'Otkaži',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Napredni tagovi',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'Širina',height:'Visina',align:'Ravnanje',alignLeft:'Levo',alignRight:'Desno',alignCenter:'Sredina',alignTop:'Vrh',alignMiddle:'Sredina',alignBottom:'Dole',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Unesi specijalni karakter',title:'Odaberite specijalni karakter',options:'Special Character Options'},link:{toolbar:'Unesi/izmeni link',other:'<остало>',menu:'Izmeni link',title:'Link',info:'Link Info',target:'Meta',upload:'Pošalji',advanced:'Napredni tagovi',type:'Vrsta linka',toUrl:'URL',toAnchor:'Sidro na ovoj stranici',toEmail:'E-Mail',targetFrame:'<okvir>',targetPopup:'<popup prozor>',targetFrameName:'Naziv odredišnog frejma',targetPopupName:'Naziv popup prozora',popupFeatures:'Mogućnosti popup prozora',popupResizable:'Resizable',popupStatusBar:'Statusna linija',popupLocationBar:'Lokacija',popupToolbar:'Toolbar',popupMenuBar:'Kontekstni meni',popupFullScreen:'Prikaz preko celog ekrana (IE)',popupScrollBars:'Scroll bar',popupDependent:'Zavisno (Netscape)',popupLeft:'Od leve ivice ekrana (px)',popupTop:'Od vrha ekrana (px)',id:'Id',langDir:'Smer jezika',langDirLTR:'S leva na desno (LTR)',langDirRTL:'S desna na levo (RTL)',acccessKey:'Pristupni taster',name:'Naziv',langCode:'Smer jezika',tabIndex:'Tab indeks',advisoryTitle:'Advisory naslov',advisoryContentType:'Advisory vrsta sadržaja',cssClasses:'Stylesheet klase',charset:'Linked Resource Charset',styles:'Stil',rel:'Relationship',selectAnchor:'Odaberi sidro',anchorName:'Po nazivu sidra',anchorId:'Po Id-ju elementa',emailAddress:'E-Mail adresa',emailSubject:'Naslov',emailBody:'Sadržaj poruke',noAnchors:'(Nema dostupnih sidra)',noUrl:'Unesite URL linka',noEmail:'Otkucajte adresu elektronske pote'},anchor:{toolbar:'Unesi/izmeni sidro',menu:'Osobine sidra',title:'Osobine sidra',name:'Ime sidra',errorName:'Unesite ime sidra',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Pretraga',replace:'Zamena',findWhat:'Pronadi:',replaceWith:'Zameni sa:',notFoundMsg:'Traženi tekst nije pronađen.',findOptions:'Find Options',matchCase:'Razlikuj mala i velika slova',matchWord:'Uporedi cele reci',matchCyclic:'Match cyclic',replaceAll:'Zameni sve',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Osobine tabele',menu:'Osobine tabele',deleteTable:'Delete Table',rows:'Redova',columns:'Kolona',border:'Veličina okvira',widthPx:'piksela',widthPc:'procenata',widthUnit:'width unit',cellSpace:'Ćelijski prostor',cellPad:'Razmak ćelija',caption:'Naslov tabele',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Obriši ćelije',merge:'Spoj celije',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Obriši redove'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Obriši kolone'}},button:{title:'Osobine dugmeta',text:'Tekst (vrednost)',type:'Tip',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Osobine polja za potvrdu',radioTitle:'Osobine radio-dugmeta',value:'Vrednost',selected:'Označeno'},form:{title:'Osobine forme',menu:'Osobine forme',action:'Akcija',method:'Metoda',encoding:'Encoding'},select:{title:'Osobine izbornog polja',selectInfo:'Info',opAvail:'Dostupne opcije',value:'Vrednost',size:'Veličina',lines:'linija',chkMulti:'Dozvoli višestruku selekciju',opText:'Tekst',opValue:'Vrednost',btnAdd:'Dodaj',btnModify:'Izmeni',btnUp:'Gore',btnDown:'Dole',btnSetValue:'Podesi kao označenu vrednost',btnDelete:'Obriši'},textarea:{title:'Osobine zone teksta',cols:'Broj kolona',rows:'Broj redova'},textfield:{title:'Osobine tekstualnog polja',name:'Naziv',value:'Vrednost',charWidth:'Širina (karaktera)',maxChars:'Maksimalno karaktera',type:'Tip',typeText:'Tekst',typePass:'Lozinka'},hidden:{title:'Osobine skrivenog polja',name:'Naziv',value:'Vrednost'},image:{title:'Osobine slika',titleButton:'Osobine dugmeta sa slikom',menu:'Osobine slika',infoTab:'Info slike',btnUpload:'Pošalji na server',upload:'Pošalji',alt:'Alternativni tekst',lockRatio:'Zaključaj odnos',resetSize:'Resetuj veličinu',border:'Okvir',hSpace:'HSpace',vSpace:'VSpace',alertUrl:'Unesite URL slike',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Osobine fleša',propertiesTab:'Properties',title:'Osobine fleša',chkPlay:'Automatski start',chkLoop:'Ponavljaj',chkMenu:'Uključi fleš meni',chkFull:'Allow Fullscreen',scale:'Skaliraj',scaleAll:'Prikaži sve',scaleNoBorder:'Bez ivice',scaleFit:'Popuni površinu',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'Abs dole',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignTextTop:'Vrh teksta',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Boja pozadine',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Unesite URL linka',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Proveri spelovanje',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nije u rečniku',changeTo:'Izmeni',btnIgnore:'Ignoriši',btnIgnoreAll:'Ignoriši sve',btnReplace:'Zameni',btnReplaceAll:'Zameni sve',btnUndo:'Vrati akciju',noSuggestions:'- Bez sugestija -',progress:'Provera spelovanja u toku...',noMispell:'Provera spelovanja završena: greške nisu pronadene',noChanges:'Provera spelovanja završena: Nije izmenjena nijedna rec',oneChange:'Provera spelovanja završena: Izmenjena je jedna reč',manyChanges:'Provera spelovanja završena: %1 reč(i) je izmenjeno',ieSpellDownload:'Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?'},smiley:{toolbar:'Smajli',title:'Unesi smajlija',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Nabrojiva lista',bulletedlist:'Nenabrojiva lista',indent:'Uvećaj levu marginu',outdent:'Smanji levu marginu',justify:{left:'Levo ravnanje',center:'Centriran tekst',right:'Desno ravnanje',block:'Obostrano ravnanje'},blockquote:'Block Quote',clipboard:{title:'Zalepi',cutError:'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+X).',copyError:'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+C).',pasteMsg:'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl/Cmd+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Zalepi iz Worda',title:'Zalepi iz Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Zalepi kao čist tekst',title:'Zalepi kao čist tekst'},templates:{button:'Obrasci',title:'Obrasci za sadržaj',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):',emptyListMsg:'(Nema definisanih obrazaca)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stil',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatirano',tag_address:'Adresa',tag_h1:'Naslov 1',tag_h2:'Naslov 2',tag_h3:'Naslov 3',tag_h4:'Naslov 4',tag_h5:'Naslov 5',tag_h6:'Naslov 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'Veličina fonta',voiceLabel:'Font Size',panelTitle:'Veličina fonta'},colorButton:{textColorTitle:'Boja teksta',bgColorTitle:'Boja pozadine',panelTitle:'Colors',auto:'Automatski',more:'Više boja...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'Osobine dokumenta',title:'Osobine dokumenta',design:'Design',meta:'Metapodaci',chooseColor:'Choose',other:'<остало>',docTitle:'Naslov stranice',charset:'Kodiranje skupa karaktera',charsetOther:'Ostala kodiranja skupa karaktera',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'Zaglavlje tipa dokumenta',docTypeOther:'Ostala zaglavlja tipa dokumenta',xhtmlDec:'Ukljuci XHTML deklaracije',bgColor:'Boja pozadine',bgImage:'URL pozadinske slike',bgFixed:'Fiksirana pozadina',txtColor:'Boja teksta',margin:'Margine stranice',marginTop:'Gornja',marginLeft:'Leva',marginRight:'Desna',marginBottom:'Donja',metaKeywords:'Ključne reci za indeksiranje dokumenta (razdvojene zarezima)',metaDescription:'Opis dokumenta',metaAuthor:'Autor',metaCopyright:'Autorska prava',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sv.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sv.js
new file mode 100755
index 0000000..a9caecd
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/sv.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sv={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'Källa',newPage:'Ny sida',save:'Spara',preview:'Förhandsgranska',cut:'Klipp ut',copy:'Kopiera',paste:'Klistra in',print:'Skriv ut',underline:'Understruken',bold:'Fet',italic:'Kursiv',selectAll:'Markera allt',removeFormat:'Radera formatering',strike:'Genomstruken',subscript:'Nedsänkta tecken',superscript:'Upphöjda tecken',horizontalrule:'Infoga horisontal linje',pagebreak:'Infoga sidbrytning',pagebreakAlt:'Sidbrytning',unlink:'Radera länk',undo:'Ångra',redo:'Gör om',common:{browseServer:'Bläddra på server',url:'URL',protocol:'Protokoll',upload:'Ladda upp',uploadSubmit:'Skicka till server',image:'Bild',flash:'Flash',form:'Formulär',checkbox:'Kryssruta',radio:'Alternativknapp',textField:'Textfält',textarea:'Textruta',hiddenField:'Dolt fält',button:'Knapp',select:'Flervalslista',imageButton:'Bildknapp',notSet:'<ej angivet>',id:'Id',name:'Namn',langDir:'Språkriktning',langDirLtr:'Vänster till Höger (VTH)',langDirRtl:'Höger till Vänster (HTV)',langCode:'Språkkod',longDescr:'URL-beskrivning',cssClass:'Stilmall',advisoryTitle:'Titel',cssStyle:'Stilmall',ok:'OK',cancel:'Avbryt',close:'Stäng',preview:'Förhandsgranska',generalTab:'Allmänt',advancedTab:'Avancerad',validateNumberFailed:'Värdet är inte ett nummer.',confirmNewPage:'Alla ändringar i innehållet kommer att förloras. Är du säker på att du vill ladda en ny sida?',confirmCancel:'Några av de alternativ har ändrats. Är du säker på att stänga dialogrutan?',options:'Alternativ',target:'Mål',targetNew:'Nytt fönster (_blank)',targetTop:'Översta fönstret (_top)',targetSelf:'Samma fönster (_self)',targetParent:'Föregående fönster (_parent)',langDirLTR:'Vänster till höger (LTR)',langDirRTL:'Höger till vänster (RTL)',styles:'Stil',cssClasses:'Stilmallar',width:'Bredd',height:'Höjd',align:'Justering',alignLeft:'Vänster',alignRight:'Höger',alignCenter:'Centrerad',alignTop:'Överkant',alignMiddle:'Mitten',alignBottom:'Nederkant',invalidHeight:'Höjd måste vara ett nummer.',invalidWidth:'Bredd måste vara ett nummer.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, Ej tillgänglig</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Klistra in utökat tecken',title:'Välj utökat tecken',options:'Special Character Options'},link:{toolbar:'Infoga/Redigera länk',other:'<annan>',menu:'Redigera länk',title:'Länk',info:'Länkinformation',target:'Mål',upload:'Ladda upp',advanced:'Avancerad',type:'Länktyp',toUrl:'URL',toAnchor:'Ankare i sidan',toEmail:'E-post',targetFrame:'<ram>',targetPopup:'<popup-fönster>',targetFrameName:'Målets ramnamn',targetPopupName:'Popup-fönstrets namn',popupFeatures:'Popup-fönstrets egenskaper',popupResizable:'Resizable',popupStatusBar:'Statusfält',popupLocationBar:'Adressfält',popupToolbar:'Verktygsfält',popupMenuBar:'Menyfält',popupFullScreen:'Helskärm (endast IE)',popupScrollBars:'Scrolllista',popupDependent:'Beroende (endast Netscape)',popupLeft:'Position från vänster',popupTop:'Position från sidans topp',id:'Id',langDir:'Språkriktning',langDirLTR:'Vänster till höger (VTH)',langDirRTL:'Höger till vänster (HTV)',acccessKey:'Behörighetsnyckel',name:'Namn',langCode:'Språkriktning',tabIndex:'Tabindex',advisoryTitle:'Titel',advisoryContentType:'Innehållstyp',cssClasses:'Stylesheet class',charset:'Teckenuppställning',styles:'Stilmall',rel:'Relationship',selectAnchor:'Välj ett ankare',anchorName:'efter ankarnamn',anchorId:'efter objektid',emailAddress:'E-postadress',emailSubject:'Ämne',emailBody:'Innehåll',noAnchors:'(Inga ankare kunde hittas)',noUrl:'Var god ange länkens URL',noEmail:'Var god ange E-postadress'},anchor:{toolbar:'Infoga/Redigera ankarlänk',menu:'Egenskaper för ankarlänk',title:'Egenskaper för ankarlänk',name:'Ankarnamn',errorName:'Var god ange ett ankarnamn',remove:'Remove Anchor'},list:{numberedTitle:'Egenskaper för punktlista',bulletedTitle:'Egenskaper för punktlista',type:'Typ',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Cirkel',disc:'Disk',square:'Fyrkant',none:'Ingen',notset:'<ej angiven>',armenian:'Armenisk numrering',georgian:'Georgisk numrering (an, ban, gan, etc.)',lowerRoman:'Romerska gemener (i, ii, iii, iv, v, etc.)',upperRoman:'Romerska versaler (I, II, III, IV, V, etc.)',lowerAlpha:'Alpha gemener (a, b, c, d, e, etc.)',upperAlpha:'Alpha versaler (A, B, C, D, E, etc.)',lowerGreek:'Grekiska gemener (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal nolla (01, 02, 03, etc.)'},findAndReplace:{title:'Sök och ersätt',find:'Sök',replace:'Ersätt',findWhat:'Sök efter:',replaceWith:'Ersätt med:',notFoundMsg:'Angiven text kunde ej hittas.',findOptions:'Find Options',matchCase:'Skiftläge',matchWord:'Inkludera hela ord',matchCyclic:'Matcha cykliska',replaceAll:'Ersätt alla',replaceSuccessMsg:'%1 förekomst(er) ersatta.'},table:{toolbar:'Tabell',title:'Tabellegenskaper',menu:'Tabellegenskaper',deleteTable:'Radera tabell',rows:'Rader',columns:'Kolumner',border:'Kantstorlek',widthPx:'pixlar',widthPc:'procent',widthUnit:'enhet bredd',cellSpace:'Cellavstånd',cellPad:'Cellutfyllnad',caption:'Rubrik',summary:'Sammanfattning',headers:'Ruberiker',headersNone:'Ingen',headersColumn:'Första kolumnen',headersRow:'Första raden',headersBoth:'Båda',invalidRows:'Antal rader måste vara större än 0.',invalidCols:'Antal kolumner måste vara ett nummer större än 0.',invalidBorder:'Ram måste vara ett nummer.',invalidWidth:'Tabell måste vara ett nummer.',invalidHeight:'Tabellens höjd måste vara ett nummer.',invalidCellSpacing:'Luft i cell måste vara ett nummer.',invalidCellPadding:'Luft i cell måste vara ett nummer.',cell:{menu:'Cell',insertBefore:'Lägg till cell före',insertAfter:'Lägg till cell efter',deleteCell:'Radera celler',merge:'Sammanfoga celler',mergeRight:'Sammanfoga höger',mergeDown:'Sammanfoga ner',splitHorizontal:'Dela cell horisontellt',splitVertical:'Dela cell vertikalt',title:'Egenskaper för cell',cellType:'Celltyp',rowSpan:'Rad spann',colSpan:'Kolumnen spann',wordWrap:'Radbrytning',hAlign:'Horisontell justering',vAlign:'Vertikal justering',alignBaseline:'Baslinje',bgColor:'Bakgrundsfärg',borderColor:'Ramfärg',data:'Data',header:'Rubrik',yes:'Ja',no:'Nej',invalidWidth:'Cellens bredd måste vara ett nummer.',invalidHeight:'Cellens höjd måste vara ett nummer.',invalidRowSpan:'Radutvidgning måste vara ett heltal.',invalidColSpan:'Kolumn måste vara ett heltal.',chooseColor:'Välj'},row:{menu:'Rad',insertBefore:'Lägg till Rad Före',insertAfter:'Lägg till rad efter',deleteRow:'Radera rad'},column:{menu:'Kolumn',insertBefore:'Lägg till kolumn före',insertAfter:'Lägg till kolumn efter',deleteColumn:'Radera kolumn'}},button:{title:'Egenskaper för knapp',text:'Text (värde)',type:'Typ',typeBtn:'Knapp',typeSbm:'Skicka',typeRst:'Återställ'},checkboxAndRadio:{checkboxTitle:'Egenskaper för kryssruta',radioTitle:'Egenskaper för alternativknapp',value:'Värde',selected:'Vald'},form:{title:'Egenskaper för formulär',menu:'Egenskaper för formulär',action:'Funktion',method:'Metod',encoding:'Kodning'},select:{title:'Egenskaper för flervalslista',selectInfo:'Information',opAvail:'Befintliga val',value:'Värde',size:'Storlek',lines:'Linjer',chkMulti:'Tillåt flerval',opText:'Text',opValue:'Värde',btnAdd:'Lägg till',btnModify:'Redigera',btnUp:'Upp',btnDown:'Ner',btnSetValue:'Markera som valt värde',btnDelete:'Radera'},textarea:{title:'Egenskaper för textruta',cols:'Kolumner',rows:'Rader'},textfield:{title:'Egenskaper för textfält',name:'Namn',value:'Värde',charWidth:'Teckenbredd',maxChars:'Max antal tecken',type:'Typ',typeText:'Text',typePass:'Lösenord'},hidden:{title:'Egenskaper för dolt fält',name:'Namn',value:'Värde'},image:{title:'Bildegenskaper',titleButton:'Egenskaper för bildknapp',menu:'Bildegenskaper',infoTab:'Bildinformation',btnUpload:'Skicka till server',upload:'Ladda upp',alt:'Alternativ text',lockRatio:'Lås höjd/bredd förhållanden',resetSize:'Återställ storlek',border:'Kant',hSpace:'Horis. marginal',vSpace:'Vert. marginal',alertUrl:'Var god och ange bildens URL',linkTab:'Länk',button2Img:'Vill du omvandla den valda bildknappen på en enkel bild?',img2Button:'Vill du omvandla den valda bildknappen på en enkel bild?',urlMissing:'Bildkällans URL saknas.',validateBorder:'Kantlinje måste vara ett heltal.',validateHSpace:'HSpace måste vara ett heltal.',validateVSpace:'VSpace måste vara ett heltal.'},flash:{properties:'Flashegenskaper',propertiesTab:'Egenskaper',title:'Flashegenskaper',chkPlay:'Automatisk uppspelning',chkLoop:'Upprepa/Loopa',chkMenu:'Aktivera Flashmeny',chkFull:'Tillåt helskärm',scale:'Skala',scaleAll:'Visa allt',scaleNoBorder:'Ingen ram',scaleFit:'Exakt passning',access:'Script-tillgång',accessAlways:'Alltid',accessSameDomain:'Samma domän',accessNever:'Aldrig',alignAbsBottom:'Absolut nederkant',alignAbsMiddle:'Absolut centrering',alignBaseline:'Baslinje',alignTextTop:'Text överkant',quality:'Kvalitet',qualityBest:'Bäst',qualityHigh:'Hög',qualityAutoHigh:'Auto Hög',qualityMedium:'Medium',qualityAutoLow:'Auto Låg',qualityLow:'Låg',windowModeWindow:'Fönster',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Fönsterläge',flashvars:'Variabler för Flash',bgcolor:'Bakgrundsfärg',hSpace:'Horis. marginal',vSpace:'Vert. marginal',validateSrc:'Var god ange länkens URL',validateHSpace:'HSpace måste vara ett nummer.',validateVSpace:'VSpace måste vara ett nummer.'},spellCheck:{toolbar:'Stavningskontroll',title:'Kontrollera stavning',notAvailable:'Tyvärr är tjänsten ej tillgänglig nu',errorLoading:'Tjänsten är ej tillgänglig: %s.',notInDic:'Saknas i ordlistan',changeTo:'Ändra till',btnIgnore:'Ignorera',btnIgnoreAll:'Ignorera alla',btnReplace:'Ersätt',btnReplaceAll:'Ersätt alla',btnUndo:'Ångra',noSuggestions:'- Förslag saknas -',progress:'Stavningskontroll pågår...',noMispell:'Stavningskontroll slutförd: Inga stavfel påträffades.',noChanges:'Stavningskontroll slutförd: Inga ord rättades.',oneChange:'Stavningskontroll slutförd: Ett ord rättades.',manyChanges:'Stavningskontroll slutförd: %1 ord rättades.',ieSpellDownload:'Stavningskontrollen är ej installerad. Vill du göra det nu?'},smiley:{toolbar:'Smiley',title:'Infoga smiley',options:'Smileyinställningar'},elementsPath:{eleLabel:'Elementets sökväg',eleTitle:'%1 element'},numberedlist:'Numrerad lista',bulletedlist:'Punktlista',indent:'Öka indrag',outdent:'Minska indrag',justify:{left:'Vänsterjustera',center:'Centrera',right:'Högerjustera',block:'Justera till marginaler'},blockquote:'Blockcitat',clipboard:{title:'Klistra in',cutError:'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl/Cmd+X) istället.',copyError:'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl/Cmd+C) istället',pasteMsg:'Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl/Cmd+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.',securityMsg:'På grund av din webbläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Texten du vill klistra in verkar vara kopierad från Word. Vill du rensa innan du klistrar?',toolbar:'Klistra in från Word',title:'Klistra in från Word',error:'Det var inte möjligt att städa upp den inklistrade data på grund av ett internt fel'},pasteText:{button:'Klistra in som vanlig text',title:'Klistra in som vanlig text'},templates:{button:'Sidmallar',title:'Sidmallar',options:'Inställningar för mall',insertOption:'Ersätt aktuellt innehåll',selectPromptMsg:'Var god välj en mall att använda med editorn<br>(allt nuvarande innehåll raderas):',emptyListMsg:'(Ingen mall är vald)'},showBlocks:'Visa block',stylesCombo:{label:'Anpassad stil',panelTitle:'Formatmallar',panelTitle1:'Blockstil',panelTitle2:'Inbäddad stil',panelTitle3:'Objektets stil'},format:{label:'Teckenformat',panelTitle:'Teckenformat',tag_p:'Normal',tag_pre:'Formaterad',tag_address:'Adress',tag_h1:'Rubrik 1',tag_h2:'Rubrik 2',tag_h3:'Rubrik 3',tag_h4:'Rubrik 4',tag_h5:'Rubrik 5',tag_h6:'Rubrik 6',tag_div:'Normal (DIV)'},div:{title:'Skapa Div container',toolbar:'Skapa Div container',cssClassInputLabel:'Stilmallar',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:' Språkkod',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Rådgivande titel',langDirLabel:'Språkriktning',langDirLTRLabel:'Vänster till Höger (LTR)',langDirRTLLabel:'Höger till vänster (RTL)',edit:'Redigera Div',remove:'Ta bort Div'},iframe:{title:'iFrame Egenskaper',toolbar:'iFrame',noUrl:'Skriv in URL för iFrame',scrolling:'Aktivera rullningslister',border:'Visa ramkant'},font:{label:'Typsnitt',voiceLabel:'Typsnitt',panelTitle:'Typsnitt'},fontSize:{label:'Storlek',voiceLabel:'Teckenstorlek',panelTitle:'Storlek'},colorButton:{textColorTitle:'Textfärg',bgColorTitle:'Bakgrundsfärg',panelTitle:'Färger',auto:'Automatisk',more:'Fler färger...'},colors:{'000':'Svart',800000:'Rödbrun','8B4513':'Mörkbrun','2F4F4F':'Skiffergrå','008080':'Kricka','000080':'Marinblå','4B0082':'Indigo',696969:'Mörkgrå',B22222:'Tegelsten',A52A2A:'Brun',DAA520:'Mörk guld','006400':'Mörkgrön','40E0D0':'Turkos','0000CD':'Medium blå',800080:'Lila',808080:'Grå',F00:'Röd',FF8C00:'Mörkorange',FFD700:'Guld','008000':'Grön','0FF':'Turkos','00F':'Blå',EE82EE:'Violett',A9A9A9:'Matt grå',FFA07A:'Laxrosa',FFA500:'Orange',FFFF00:'Gul','00FF00':'Lime',AFEEEE:'Ljusturkos',ADD8E6:'Ljusblå',DDA0DD:'Plommon',D3D3D3:'Ljusgrå',FFF0F5:'Ljus lavender',FAEBD7:'Antikvit',FFFFE0:'Ljusgul',F0FFF0:'Honung',F0FFFF:'Azurblå',F0F8FF:'Aliceblå',E6E6FA:'Lavender',FFF:'Vit'},scayt:{title:'Stavningskontroll medan du skriver',opera_title:'Stöds ej av Opera',enable:'Aktivera SCAYT',disable:'Inaktivera SCAYT',about:'Om SCAYT',toggle:'Växla SCAYT',options:'Inställningar',langs:'Språk',moreSuggestions:'Fler förslag',ignore:'Ignorera',ignoreAll:'Ignorera alla',addWord:'Lägg till ord',emptyDic:'Ordlistans namn får ej vara tomt.',optionsTab:'Inställningar',allCaps:'Ignorera alla ord med enbart versaler',ignoreDomainNames:'Ignorera domännamn',mixedCase:'Ignorera ord med blandat shiftläge',mixedWithDigits:'Ignorera ord med nummer',languagesTab:'Språk',dictionariesTab:'Ordlistor',dic_field_name:'Ordlistans namn',dic_create:'Skapa',dic_restore:'Återställ',dic_delete:'Ta bort',dic_rename:'Byt namn',dic_info:'Inledningsvis lagras ordlistan i en cookie. När ordlista växer till en punkt där det inte kan lagras i en cookie, lagras den på vår server. För att lagra din personliga ordlista på vår server du ska ange ett namn för din ordbok. Om du redan har en lagrad ordbok, skriv namnet och klicka på knappen Återställ.',aboutTab:'Om'},about:{title:'Om CKEditor',dlgTitle:'Om CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'För information av licenciering besök vår hemsida:',copy:'Copyright © $1. Alla rättigheter reserverade.'},maximize:'Maximera',minimize:'Minimera',fakeobjects:{anchor:'Ankare',flash:'Flashanimation',iframe:'iFrame',hiddenfield:'Gömt fält',unknown:'Okänt objekt'},resize:'Dra för att ändra storlek',colordialog:{title:'Välj färg',options:'Färgalternativ',highlight:'Markera',selected:'Vald färg',clear:'Rensa'},toolbarCollapse:'Dölj verktygsfält',toolbarExpand:'Visa verktygsfält',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text riktning från vänster till höger',rtl:'Text riktning från höger till vänster'},docprops:{label:'Dokumentegenskaper',title:'Dokumentegenskaper',design:'Design',meta:'Metadata',chooseColor:'Välj',other:'<annan>',docTitle:'Sidtitel',charset:'Teckenuppsättningar',charsetOther:'Övriga teckenuppsättningar',charsetASCII:'ASCII',charsetCE:'Central Europa',charsetCT:'Traditionell Kinesisk (Big5)',charsetCR:'Kyrillisk',charsetGR:'Grekiska',charsetJP:'Japanska',charsetKR:'Koreanska',charsetTR:'Turkiska',charsetUN:'Unicode (UTF-8)',charsetWE:'Väst Europa',docType:'Sidhuvud',docTypeOther:'Övriga sidhuvuden',xhtmlDec:'Inkludera XHTML deklaration',bgColor:'Bakgrundsfärg',bgImage:'Bakgrundsbildens URL',bgFixed:'Fast bakgrund',txtColor:'Textfärg',margin:'Sidmarginal',marginTop:'Topp',marginLeft:'Vänster',marginRight:'Höger',marginBottom:'Botten',metaKeywords:'Sidans nyckelord',metaDescription:'Sidans beskrivning',metaAuthor:'Författare',metaCopyright:'Upphovsrätt',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/th.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/th.js
new file mode 100755
index 0000000..a6718db
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/th.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.th={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Editor toolbars',editor:'Rich Text Editor',source:'ดูรหัส HTML',newPage:'สร้างหน้าเอกสารใหม่',save:'บันทึก',preview:'ดูหน้าเอกสารตัวอย่าง',cut:'ตัด',copy:'สำเนา',paste:'วาง',print:'สั่งพิมพ์',underline:'ตัวขีดเส้นใต้',bold:'ตัวหนา',italic:'ตัวเอียง',selectAll:'เลือกทั้งหมด',removeFormat:'ล้างรูปแบบ',strike:'ตัวขีดเส้นทับ',subscript:'ตัวห้อย',superscript:'ตัวยก',horizontalrule:'แทรกเส้นคั่นบรรทัด',pagebreak:'แทรกตัวแบ่งหน้า Page Break',pagebreakAlt:'Page Break',unlink:'ลบ ลิงค์',undo:'ยกเลิกคำสั่ง',redo:'ทำซ้ำคำสั่ง',common:{browseServer:'เปิดหน้าต่างจัดการไฟล์อัพโหลด',url:'ที่อยู่อ้างอิง URL',protocol:'โปรโตคอล',upload:'อัพโหลดไฟล์',uploadSubmit:'อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)',image:'รูปภาพ',flash:'ไฟล์ Flash',form:'แบบฟอร์ม',checkbox:'เช็คบ๊อก',radio:'เรดิโอบัตตอน',textField:'เท็กซ์ฟิลด์',textarea:'เท็กซ์แอเรีย',hiddenField:'ฮิดเดนฟิลด์',button:'ปุ่ม',select:'แถบตัวเลือก',imageButton:'ปุ่มแบบรูปภาพ',notSet:'<ไม่ระบุ>',id:'ไอดี',name:'ชื่อ',langDir:'การเขียน-อ่านภาษา',langDirLtr:'จากซ้ายไปขวา (LTR)',langDirRtl:'จากขวามาซ้าย (RTL)',langCode:'รหัสภาษา',longDescr:'คำอธิบายประกอบ URL',cssClass:'คลาสของไฟล์กำหนดลักษณะการแสดงผล',advisoryTitle:'คำเกริ่นนำ',cssStyle:'ลักษณะการแสดงผล',ok:'ตกลง',cancel:'ยกเลิก',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'ขั้นสูง',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'ความกว้าง',height:'ความสูง',align:'การจัดวาง',alignLeft:'ชิดซ้าย',alignRight:'ชิดขวา',alignCenter:'กึ่งกลาง',alignTop:'บนสุด',alignMiddle:'กึ่งกลางแนวตั้ง',alignBottom:'ชิดด้านล่าง',invalidHeight:'Height must be a number.',invalidWidth:'Width must be a number.',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'แทรกตัวอักษรพิเศษ',title:'แทรกตัวอักษรพิเศษ',options:'Special Character Options'},link:{toolbar:'แทรก/แก้ไข ลิงค์',other:'<อื่น ๆ>',menu:'แก้ไข ลิงค์',title:'ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ',info:'รายละเอียด',target:'การเปิดหน้าลิงค์',upload:'อัพโหลดไฟล์',advanced:'ขั้นสูง',type:'ประเภทของลิงค์',toUrl:'URL',toAnchor:'จุดเชื่อมโยง (Anchor)',toEmail:'ส่งอีเมล์ (E-Mail)',targetFrame:'<เปิดในเฟรม>',targetPopup:'<เปิดหน้าจอเล็ก (Pop-up)>',targetFrameName:'ชื่อทาร์เก็ตเฟรม',targetPopupName:'ระบุชื่อหน้าจอเล็ก (Pop-up)',popupFeatures:'คุณสมบัติของหน้าจอเล็ก (Pop-up)',popupResizable:'Resizable',popupStatusBar:'แสดงแถบสถานะ',popupLocationBar:'แสดงที่อยู่ของไฟล์',popupToolbar:'แสดงแถบเครื่องมือ',popupMenuBar:'แสดงแถบเมนู',popupFullScreen:'แสดงเต็มหน้าจอ (IE5.5++ เท่านั้น)',popupScrollBars:'แสดงแถบเลื่อน',popupDependent:'แสดงเต็มหน้าจอ (Netscape)',popupLeft:'พิกัดซ้าย (Left Position)',popupTop:'พิกัดบน (Top Position)',id:'Id',langDir:'การเขียน-อ่านภาษา',langDirLTR:'จากซ้ายไปขวา (LTR)',langDirRTL:'จากขวามาซ้าย (RTL)',acccessKey:'แอคเซส คีย์',name:'ชื่อ',langCode:'การเขียน-อ่านภาษา',tabIndex:'ลำดับของ แท็บ',advisoryTitle:'คำเกริ่นนำ',advisoryContentType:'ชนิดของคำเกริ่นนำ',cssClasses:'คลาสของไฟล์กำหนดลักษณะการแสดงผล',charset:'ลิงค์เชื่อมโยงไปยังชุดตัวอักษร',styles:'ลักษณะการแสดงผล',rel:'Relationship',selectAnchor:'ระบุข้อมูลของจุดเชื่อมโยง (Anchor)',anchorName:'ชื่อ',anchorId:'ไอดี',emailAddress:'อีเมล์ (E-Mail)',emailSubject:'หัวเรื่อง',emailBody:'ข้อความ',noAnchors:'(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้)',noUrl:'กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)',noEmail:'กรุณาระบุอีเมล์ (E-mail)'},anchor:{toolbar:'แทรก/แก้ไข Anchor',menu:'รายละเอียด Anchor',title:'รายละเอียด Anchor',name:'ชื่อ Anchor',errorName:'กรุณาระบุชื่อของ Anchor',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'ค้นหา',replace:'ค้นหาและแทนที่',findWhat:'ค้นหาคำว่า:',replaceWith:'แทนที่ด้วย:',notFoundMsg:'ไม่พบคำที่ค้นหา.',findOptions:'Find Options',matchCase:'ตัวโหญ่-เล็ก ต้องตรงกัน',matchWord:'ต้องตรงกันทุกคำ',matchCyclic:'Match cyclic',replaceAll:'แทนที่ทั้งหมดที่พบ',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'ตาราง',title:'คุณสมบัติของ ตาราง',menu:'คุณสมบัติของ ตาราง',deleteTable:'ลบตาราง',rows:'แถว',columns:'สดมน์',border:'ขนาดเส้นขอบ',widthPx:'จุดสี',widthPc:'เปอร์เซ็น',widthUnit:'width unit',cellSpace:'ระยะแนวนอนน',cellPad:'ระยะแนวตั้ง',caption:'หัวเรื่องของตาราง',summary:'สรุปความ',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a positive number.',invalidCellPadding:'Cell padding must be a positive number.',cell:{menu:'ช่องตาราง',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'ลบช่อง',merge:'ผสานช่อง',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'แถว',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'ลบแถว'},column:{menu:'คอลัมน์',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'ลบสดมน์'}},button:{title:'รายละเอียดของ ปุ่ม',text:'ข้อความ (ค่าตัวแปร)',type:'ข้อความ',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'คุณสมบัติของ เช็คบ๊อก',radioTitle:'คุณสมบัติของ เรดิโอบัตตอน',value:'ค่าตัวแปร',selected:'เลือกเป็นค่าเริ่มต้น'},form:{title:'คุณสมบัติของ แบบฟอร์ม',menu:'คุณสมบัติของ แบบฟอร์ม',action:'แอคชั่น',method:'เมธอด',encoding:'Encoding'},select:{title:'คุณสมบัติของ แถบตัวเลือก',selectInfo:'อินโฟ',opAvail:'รายการตัวเลือก',value:'ค่าตัวแปร',size:'ขนาด',lines:'บรรทัด',chkMulti:'เลือกหลายค่าได้',opText:'ข้อความ',opValue:'ค่าตัวแปร',btnAdd:'เพิ่ม',btnModify:'แก้ไข',btnUp:'บน',btnDown:'ล่าง',btnSetValue:'เลือกเป็นค่าเริ่มต้น',btnDelete:'ลบ'},textarea:{title:'คุณสมบัติของ เท็กแอเรีย',cols:'สดมภ์',rows:'แถว'},textfield:{title:'คุณสมบัติของ เท็กซ์ฟิลด์',name:'ชื่อ',value:'ค่าตัวแปร',charWidth:'ความกว้าง',maxChars:'จำนวนตัวอักษรสูงสุด',type:'ชนิด',typeText:'ข้อความ',typePass:'รหัสผ่าน'},hidden:{title:'คุณสมบัติของ ฮิดเดนฟิลด์',name:'ชื่อ',value:'ค่าตัวแปร'},image:{title:'คุณสมบัติของ รูปภาพ',titleButton:'คุณสมบัติของ ปุ่มแบบรูปภาพ',menu:'คุณสมบัติของ รูปภาพ',infoTab:'ข้อมูลของรูปภาพ',btnUpload:'อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)',upload:'อัพโหลดไฟล์',alt:'คำประกอบรูปภาพ',lockRatio:'กำหนดอัตราส่วน กว้าง-สูง แบบคงที่',resetSize:'กำหนดรูปเท่าขนาดจริง',border:'ขนาดขอบรูป',hSpace:'ระยะแนวนอน',vSpace:'ระยะแนวตั้ง',alertUrl:'กรุณาระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)',linkTab:'ลิ้งค์',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'คุณสมบัติของไฟล์ Flash',propertiesTab:'Properties',title:'คุณสมบัติของไฟล์ Flash',chkPlay:'เล่นอัตโนมัติ Auto Play',chkLoop:'เล่นวนรอบ Loop',chkMenu:'ให้ใช้งานเมนูของ Flash',chkFull:'Allow Fullscreen',scale:'อัตราส่วน Scale',scaleAll:'แสดงให้เห็นทั้งหมด Show all',scaleNoBorder:'ไม่แสดงเส้นขอบ No Border',scaleFit:'แสดงให้พอดีกับพื้นที่ Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',alignAbsBottom:'ชิดด้านล่างสุด',alignAbsMiddle:'กึ่งกลาง',alignBaseline:'ชิดบรรทัด',alignTextTop:'ใต้ตัวอักษร',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'สีพื้นหลัง',hSpace:'ระยะแนวนอน',vSpace:'ระยะแนวตั้ง',validateSrc:'กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'ตรวจการสะกดคำ',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'ไม่พบในดิกชันนารี',changeTo:'แก้ไขเป็น',btnIgnore:'ยกเว้น',btnIgnoreAll:'ยกเว้นทั้งหมด',btnReplace:'แทนที่',btnReplaceAll:'แทนที่ทั้งหมด',btnUndo:'ยกเลิก',noSuggestions:'- ไม่มีคำแนะนำใดๆ -',progress:'กำลังตรวจสอบคำสะกด...',noMispell:'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่พบคำสะกดผิด',noChanges:'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่มีการแก้คำใดๆ',oneChange:'ตรวจสอบคำสะกดเสร็จสิ้น: แก้ไข1คำ',manyChanges:'ตรวจสอบคำสะกดเสร็จสิ้น:: แก้ไข %1 คำ',ieSpellDownload:'ไม่ได้ติดตั้งระบบตรวจสอบคำสะกด. ต้องการติดตั้งไหมครับ?'},smiley:{toolbar:'รูปสื่ออารมณ์',title:'แทรกสัญลักษณ์สื่ออารมณ์',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'ลำดับรายการแบบตัวเลข',bulletedlist:'ลำดับรายการแบบสัญลักษณ์',indent:'เพิ่มระยะย่อหน้า',outdent:'ลดระยะย่อหน้า',justify:{left:'จัดชิดซ้าย',center:'จัดกึ่งกลาง',right:'จัดชิดขวา',block:'จัดพอดีหน้ากระดาษ'},blockquote:'Block Quote',clipboard:{title:'วาง',cutError:'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).',copyError:'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว C พร้อมกัน).',pasteMsg:'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl/Cmd และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'วางสำเนาจากตัวอักษรเวิร์ด',title:'วางสำเนาจากตัวอักษรเวิร์ด',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'วางแบบตัวอักษรธรรมดา',title:'วางแบบตัวอักษรธรรมดา'},templates:{button:'เทมเพลต',title:'เทมเพลตของส่วนเนื้อหาเว็บไซต์',options:'Template Options',insertOption:'แทนที่เนื้อหาเว็บไซต์ที่เลือก',selectPromptMsg:'กรุณาเลือก เทมเพลต เพื่อนำไปแก้ไขในอีดิตเตอร์<br />(เนื้อหาส่วนนี้จะหายไป):',emptyListMsg:'(ยังไม่มีการกำหนดเทมเพลต)'},showBlocks:'Show Blocks',stylesCombo:{label:'ลักษณะ',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'รูปแบบ',panelTitle:'รูปแบบ',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Paragraph (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'แบบอักษร',voiceLabel:'Font',panelTitle:'แบบอักษร'},fontSize:{label:'ขนาด',voiceLabel:'Font Size',panelTitle:'ขนาด'},colorButton:{textColorTitle:'สีตัวอักษร',bgColorTitle:'สีพื้นหลัง',panelTitle:'Colors',auto:'สีอัตโนมัติ',more:'เลือกสีอื่นๆ...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'For licensing information please visit our web site:',copy:'Copyright © $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'คุณสมบัติของเอกสาร',title:'คุณสมบัติของเอกสาร',design:'Design',meta:'ข้อมูลสำหรับเสิร์ชเอนจิ้น',chooseColor:'Choose',other:'<อื่น ๆ>',docTitle:'ชื่อไตเติ้ล',charset:'ชุดตัวอักษร',charsetOther:'ชุดตัวอักษรอื่นๆ',charsetASCII:'ASCII',charsetCE:'Central European',charsetCT:'Chinese Traditional (Big5)',charsetCR:'Cyrillic',charsetGR:'Greek',charsetJP:'Japanese',charsetKR:'Korean',charsetTR:'Turkish',charsetUN:'Unicode (UTF-8)',charsetWE:'Western European',docType:'ประเภทของเอกสาร',docTypeOther:'ประเภทเอกสารอื่นๆ',xhtmlDec:'รวมเอา XHTML Declarations ไว้ด้วย',bgColor:'สีพื้นหลัง',bgImage:'ที่อยู่อ้างอิงออนไลน์ของรูปพื้นหลัง (Image URL)',bgFixed:'พื้นหลังแบบไม่มีแถบเลื่อน',txtColor:'สีตัวอักษร',margin:'ระยะขอบของหน้าเอกสาร',marginTop:'ด้านบน',marginLeft:'ด้านซ้าย',marginRight:'ด้านขวา',marginBottom:'ด้านล่าง',metaKeywords:'คำสำคัญอธิบายเอกสาร (คั่นคำด้วย คอมม่า)',metaDescription:'ประโยคอธิบายเกี่ยวกับเอกสาร',metaAuthor:'ผู้สร้างเอกสาร',metaCopyright:'สงวนลิขสิทธิ์',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/tr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/tr.js
new file mode 100755
index 0000000..6cc8491
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/tr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.tr={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Araç çubukları Editörü',editor:'Zengin Metin Editörü',source:'Kaynak',newPage:'Yeni Sayfa',save:'Kaydet',preview:'Ön İzleme',cut:'Kes',copy:'Kopyala',paste:'Yapıştır',print:'Yazdır',underline:'Altı Çizgili',bold:'Kalın',italic:'İtalik',selectAll:'Tümünü Seç',removeFormat:'Biçimi Kaldır',strike:'Üstü Çizgili',subscript:'Alt Simge',superscript:'Üst Simge',horizontalrule:'Yatay Satır Ekle',pagebreak:'Sayfa Sonu Ekle',pagebreakAlt:'Sayfa Sonu',unlink:'Köprü Kaldır',undo:'Geri Al',redo:'Tekrarla',common:{browseServer:'Sunucuyu Gez',url:'URL',protocol:'Protokol',upload:'Karşıya Yükle',uploadSubmit:'Sunucuya Yolla',image:'Resim',flash:'Flash',form:'Form',checkbox:'Onay Kutusu',radio:'Seçenek Düğmesi',textField:'Metin Girişi',textarea:'Çok Satırlı Metin',hiddenField:'Gizli Veri',button:'Düğme',select:'Seçim Menüsü',imageButton:'Resimli Düğme',notSet:'<tanımlanmamış>',id:'Kimlik',name:'Ad',langDir:'Dil Yönü',langDirLtr:'Soldan Sağa (LTR)',langDirRtl:'Sağdan Sola (RTL)',langCode:'Dil Kodlaması',longDescr:'Uzun Tanımlı URL',cssClass:'Biçem Sayfası Sınıfları',advisoryTitle:'Danışma Başlığı',cssStyle:'Biçem',ok:'Tamam',cancel:'İptal',close:'Kapat',preview:'Ön gösterim',generalTab:'Genel',advancedTab:'Gelişmiş',validateNumberFailed:'Bu değer sayı değildir.',confirmNewPage:'İceriğiniz kayıt edilmediğinden dolayı kaybolacaktır. Yeni bir sayfa yüklemek istediğinize eminsiniz?',confirmCancel:'Bazı seçenekler değişmiştir. Dialog penceresini kapatmak istediğinize eminmisiniz?',options:'Seçenekler',target:'Hedef',targetNew:'Yeni Pencere (_blank)',targetTop:'Enüst Pencere (_top)',targetSelf:'Aynı Pencere (_self)',targetParent:'Ana Pencere (_parent)',langDirLTR:'Soldan Sağa (LTR)',langDirRTL:'Sağdan Sola (RTL)',styles:'Stil',cssClasses:'Stil sayfası Sınıfı',width:'Genişlik',height:'Yükseklik',align:'Hizalama',alignLeft:'Sol',alignRight:'Sağ',alignCenter:'Merkez',alignTop:'Tepe',alignMiddle:'Orta',alignBottom:'Alt',invalidHeight:'Yükseklik sayı olmalıdır.',invalidWidth:'Genişlik bir sayı olmalıdır.',invalidCssLength:'Belirttiğiniz sayı "%1" alanı için pozitif bir sayı CSS birim değeri olmalıdır (px, %, in, cm, mm, em, ex, pt, veya pc).',invalidHtmlLength:'Belirttiğiniz sayı "%1" alanı için pozitif bir sayı HTML birim değeri olmalıdır (px veya %).',invalidInlineStyle:'Noktalı virgülle ayrılmış: "değer adı," inline stil için belirtilen değer biçiminde bir veya daha fazla dizilerden oluşmalıdır.',cssLengthTooltip:'Pikseller için bir numara girin veya geçerli bir CSS numarası (px, %, in, cm, mm, em, ex, pt, veya pc).',unavailable:'%1<span class="cke_accessibility">, hazır değildir</span>'},contextmenu:{options:'İçerik Menüsü Seçenekleri'},specialChar:{toolbar:'Özel Karakter Ekle',title:'Özel Karakter Seç',options:'Özel Karakter Seçenekleri'},link:{toolbar:'Link Ekle/Düzenle',other:'<diğer>',menu:'Link Düzenle',title:'Link',info:'Link Bilgisi',target:'Hedef',upload:'Karşıya Yükle',advanced:'Gelişmiş',type:'Link Türü',toUrl:'URL',toAnchor:'Bu sayfada çapa',toEmail:'E-Posta',targetFrame:'<çerçeve>',targetPopup:'<yeni açılan pencere>',targetFrameName:'Hedef Çerçeve Adı',targetPopupName:'Yeni Açılan Pencere Adı',popupFeatures:'Yeni Açılan Pencere Özellikleri',popupResizable:'Resizable',popupStatusBar:'Durum Çubuğu',popupLocationBar:'Yer Çubuğu',popupToolbar:'Araç Çubuğu',popupMenuBar:'Menü Çubuğu',popupFullScreen:'Tam Ekran (IE)',popupScrollBars:'Kaydırma Çubukları',popupDependent:'Bağımlı (Netscape)',popupLeft:'Sola Göre Konum',popupTop:'Yukarıya Göre Konum',id:'Id',langDir:'Dil Yönü',langDirLTR:'Soldan Sağa (LTR)',langDirRTL:'Sağdan Sola (RTL)',acccessKey:'Erişim Tuşu',name:'Ad',langCode:'Dil Yönü',tabIndex:'Sekme İndeksi',advisoryTitle:'Danışma Başlığı',advisoryContentType:'Danışma İçerik Türü',cssClasses:'Biçem Sayfası Sınıfları',charset:'Bağlı Kaynak Karakter Gurubu',styles:'Biçem',rel:'İlişki',selectAnchor:'Bağlantı Seç',anchorName:'Bağlantı Adı ile',anchorId:'Eleman Kimlik Numarası ile',emailAddress:'E-Posta Adresi',emailSubject:'İleti Konusu',emailBody:'İleti Gövdesi',noAnchors:'(Bu belgede hiç çapa yok)',noUrl:"Lütfen Link URL'sini yazın",noEmail:'Lütfen E-posta adresini yazın'},anchor:{toolbar:'Bağlantı Ekle/Düzenle',menu:'Bağlantı Özellikleri',title:'Bağlantı Özellikleri',name:'Bağlantı Adı',errorName:'Lütfen bağlantı için ad giriniz',remove:'Bağlantıyı Kaldır'},list:{numberedTitle:'Sayılandırılmış Liste Özellikleri',bulletedTitle:'Simgeli Liste Özellikleri',type:'Tipi',start:'Başla',validateStartNumber:'Liste başlangıcı tam sayı olmalıdır.',circle:'Daire',disc:'Disk',square:'Kare',none:'Yok',notset:'<ayarlanmamış>',armenian:'Ermenice sayılandırma',georgian:'Gürcüce numaralandırma (an, ban, gan, vs.)',lowerRoman:'Küçük Roman (i, ii, iii, iv, v, vs.)',upperRoman:'Büyük Roman (I, II, III, IV, V, vs.)',lowerAlpha:'Küçük Alpha (a, b, c, d, e, vs.)',upperAlpha:'Büyük Alpha (A, B, C, D, E, vs.)',lowerGreek:'Küçük Greek (alpha, beta, gamma, vs.)',decimal:'Ondalık (1, 2, 3, vs.)',decimalLeadingZero:'Başı sıfırlı ondalık (01, 02, 03, vs.)'},findAndReplace:{title:'Bul ve Değiştir',find:'Bul',replace:'Değiştir',findWhat:'Aranan:',replaceWith:'Bununla değiştir:',notFoundMsg:'Belirtilen yazı bulunamadı.',findOptions:'Seçenekleri Bul',matchCase:'Büyük/küçük harf duyarlı',matchWord:'Kelimenin tamamı uysun',matchCyclic:'Eşleşen döngü',replaceAll:'Tümünü Değiştir',replaceSuccessMsg:'%1 bulunanlardan değiştirildi.'},table:{toolbar:'Tablo',title:'Tablo Özellikleri',menu:'Tablo Özellikleri',deleteTable:'Tabloyu Sil',rows:'Satırlar',columns:'Sütunlar',border:'Kenar Kalınlığı',widthPx:'piksel',widthPc:'yüzde',widthUnit:'genişlik birimi',cellSpace:'Izgara kalınlığı',cellPad:'Izgara yazı arası',caption:'Başlık',summary:'Özet',headers:'Başlıklar',headersNone:'Yok',headersColumn:'İlk Sütun',headersRow:'İlk Satır',headersBoth:'Her İkisi',invalidRows:'Satır sayısı 0 sayısından büyük olmalıdır.',invalidCols:'Sütün sayısı 0 sayısından büyük olmalıdır.',invalidBorder:'Çerceve büyüklüklüğü sayı olmalıdır.',invalidWidth:'Tablo genişliği sayı olmalıdır.',invalidHeight:'Tablo yüksekliği sayı olmalıdır.',invalidCellSpacing:'Hücre boşluğu (spacing) sayı olmalıdır.',invalidCellPadding:'Hücre aralığı (padding) sayı olmalıdır.',cell:{menu:'Hücre',insertBefore:'Hücre Ekle - Önce',insertAfter:'Hücre Ekle - Sonra',deleteCell:'Hücre Sil',merge:'Hücreleri Birleştir',mergeRight:'Birleştir - Sağdaki İle ',mergeDown:'Birleştir - Aşağıdaki İle ',splitHorizontal:'Hücreyi Yatay Böl',splitVertical:'Hücreyi Dikey Böl',title:'Hücre Özellikleri',cellType:'Hücre Tipi',rowSpan:'Satırlar Mesafesi (Span)',colSpan:'Sütünlar Mesafesi (Span)',wordWrap:'Kelime Kaydırma',hAlign:'Düşey Hizalama',vAlign:'Yataş Hizalama',alignBaseline:'Tabana',bgColor:'Arkaplan Rengi',borderColor:'Çerçeve Rengi',data:'Veri',header:'Başlık',yes:'Evet',no:'Hayır',invalidWidth:'Hücre genişliği sayı olmalıdır.',invalidHeight:'Hücre yüksekliği sayı olmalıdır.',invalidRowSpan:'Satırların mesafesi tam sayı olmalıdır.',invalidColSpan:'Sütünların mesafesi tam sayı olmalıdır.',chooseColor:'Seçiniz'},row:{menu:'Satır',insertBefore:'Satır Ekle - Önce',insertAfter:'Satır Ekle - Sonra',deleteRow:'Satır Sil'},column:{menu:'Sütun',insertBefore:'Kolon Ekle - Önce',insertAfter:'Kolon Ekle - Sonra',deleteColumn:'Sütun Sil'}},button:{title:'Düğme Özellikleri',text:'Metin (Değer)',type:'Tip',typeBtn:'Düğme',typeSbm:'Gönder',typeRst:'Sıfırla'},checkboxAndRadio:{checkboxTitle:'Onay Kutusu Özellikleri',radioTitle:'Seçenek Düğmesi Özellikleri',value:'Değer',selected:'Seçili'},form:{title:'Form Özellikleri',menu:'Form Özellikleri',action:'İşlem',method:'Yöntem',encoding:'Kodlama'},select:{title:'Seçim Menüsü Özellikleri',selectInfo:'Bilgi',opAvail:'Mevcut Seçenekler',value:'Değer',size:'Boyut',lines:'satır',chkMulti:'Çoklu seçime izin ver',opText:'Metin',opValue:'Değer',btnAdd:'Ekle',btnModify:'Düzenle',btnUp:'Yukarı',btnDown:'Aşağı',btnSetValue:'Seçili değer olarak ata',btnDelete:'Sil'},textarea:{title:'Çok Satırlı Metin Özellikleri',cols:'Sütunlar',rows:'Satırlar'},textfield:{title:'Metin Girişi Özellikleri',name:'Ad',value:'Değer',charWidth:'Karakter Genişliği',maxChars:'En Fazla Karakter',type:'Tür',typeText:'Metin',typePass:'Şifre'},hidden:{title:'Gizli Veri Özellikleri',name:'Ad',value:'Değer'},image:{title:'Resim Özellikleri',titleButton:'Resimli Düğme Özellikleri',menu:'Resim Özellikleri',infoTab:'Resim Bilgisi',btnUpload:'Sunucuya Yolla',upload:'Karşıya Yükle',alt:'Alternatif Yazı',lockRatio:'Oranı Kilitle',resetSize:'Boyutu Başa Döndür',border:'Kenar',hSpace:'Yatay Boşluk',vSpace:'Dikey Boşluk',alertUrl:"Lütfen resmin URL'sini yazınız",linkTab:'Köprü',button2Img:'Seçili resim butonunu basit resime çevirmek istermisiniz?',img2Button:'Seçili olan resimi, resimli butona çevirmek istermisiniz?',urlMissing:'Resmin URL kaynağı eksiktir.',validateBorder:'Çerçeve tam sayı olmalıdır.',validateHSpace:'HSpace tam sayı olmalıdır.',validateVSpace:'VSpace tam sayı olmalıdır.'},flash:{properties:'Flash Özellikleri',propertiesTab:'Özellikler',title:'Flash Özellikleri',chkPlay:'Otomatik Oynat',chkLoop:'Döngü',chkMenu:'Flash Menüsünü Kullan',chkFull:'Tam ekrana İzinver',scale:'Boyutlandır',scaleAll:'Hepsini Göster',scaleNoBorder:'Kenar Yok',scaleFit:'Tam Sığdır',access:'Kod İzni',accessAlways:'Herzaman',accessSameDomain:'Aynı domain',accessNever:'Asla',alignAbsBottom:'Tam Altı',alignAbsMiddle:'Tam Ortası',alignBaseline:'Taban Çizgisi',alignTextTop:'Yazı Tepeye',quality:'Kalite',qualityBest:'En iyi',qualityHigh:'Yüksek',qualityAutoHigh:'Otomatik Yükseklik',qualityMedium:'Orta',qualityAutoLow:'Otomatik Düşüklük',qualityLow:'Düşük',windowModeWindow:'Pencere',windowModeOpaque:'Opak',windowModeTransparent:'Şeffaf',windowMode:'Pencere modu',flashvars:'Flash Değerleri',bgcolor:'Arka Renk',hSpace:'Yatay Boşluk',vSpace:'Dikey Boşluk',validateSrc:"Lütfen köprü URL'sini yazın",validateHSpace:'HSpace sayı olmalıdır.',validateVSpace:'VSpace sayı olmalıdır.'},spellCheck:{toolbar:'Yazım Denetimi',title:'Yazımı Denetle',notAvailable:'Üzügünüz, bu servis şuanda hizmet dışıdır.',errorLoading:'Uygulamada yüklerken hata oluştu: %s.',notInDic:'Sözlükte Yok',changeTo:'Şuna değiştir:',btnIgnore:'Yoksay',btnIgnoreAll:'Tümünü Yoksay',btnReplace:'Değiştir',btnReplaceAll:'Tümünü Değiştir',btnUndo:'Geri Al',noSuggestions:'- Öneri Yok -',progress:'Yazım denetimi işlemde...',noMispell:'Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı',noChanges:'Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi',oneChange:'Yazım denetimi tamamlandı: Bir kelime değiştirildi',manyChanges:'Yazım denetimi tamamlandı: %1 kelime değiştirildi',ieSpellDownload:'Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?'},smiley:{toolbar:'İfade',title:'İfade Ekle',options:'İfade Seçenekleri'},elementsPath:{eleLabel:'Elementlerin yolu',eleTitle:'%1 elementi'},numberedlist:'Numaralı Liste',bulletedlist:'Simgeli Liste',indent:'Sekme Arttır',outdent:'Sekme Azalt',justify:{left:'Sola Dayalı',center:'Ortalanmış',right:'Sağa Dayalı',block:'İki Kenara Yaslanmış'},blockquote:'Blok Oluştur',clipboard:{title:'Yapıştır',cutError:'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl/Cmd+X) tuşlarını kullanın.',copyError:'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl/Cmd+C) tuşlarını kullanın.',pasteMsg:'Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl/Cmd+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.',securityMsg:'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..',pasteArea:'Yapıştırma Alanı'},pastefromword:{confirmCleanup:"Yapıştırmaya çalıştığınız metin Word'den kopyalanmıştır. Yapıştırmadan önce silmek istermisiniz?",toolbar:"Word'den Yapıştır",title:"Word'den Yapıştır",error:'Yapıştırmadaki veri bilgisi hata düzelene kadar silinmeyecektir'},pasteText:{button:'Düz Metin Olarak Yapıştır',title:'Düz Metin Olarak Yapıştır'},templates:{button:'Şablonlar',title:'İçerik Şablonları',options:'Şablon Seçenekleri',insertOption:'Mevcut içerik ile değiştir',selectPromptMsg:'Düzenleyicide açmak için lütfen bir şablon seçin.<br>(hali hazırdaki içerik kaybolacaktır.):',emptyListMsg:'(Belirli bir şablon seçilmedi)'},showBlocks:'Blokları Göster',stylesCombo:{label:'Biçem',panelTitle:'Stilleri Düzenliyor',panelTitle1:'Blok Stilleri',panelTitle2:'Inline Stilleri',panelTitle3:'Nesne Stilleri'},format:{label:'Biçim',panelTitle:'Biçim',tag_p:'Normal',tag_pre:'Biçimli',tag_address:'Adres',tag_h1:'Başlık 1',tag_h2:'Başlık 2',tag_h3:'Başlık 3',tag_h4:'Başlık 4',tag_h5:'Başlık 5',tag_h6:'Başlık 6',tag_div:'Paragraf (DIV)'},div:{title:'Div İçeriği Oluştur',toolbar:'Div İçeriği Oluştur',cssClassInputLabel:'Stilltipi Sınıfı',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:' Dil Kodu',inlineStyleInputLabel:'Inline Stili',advisoryTitleInputLabel:'Tavsiye Başlığı',langDirLabel:'Dil Yönü',langDirLTRLabel:'Soldan sağa (LTR)',langDirRTLLabel:'Sağdan sola (RTL)',edit:'Div Düzenle',remove:'Div Kaldır'},iframe:{title:'IFrame Özellikleri',toolbar:'IFrame',noUrl:'Lütfen IFrame köprü (URL) bağlantısını yazın',scrolling:'Kaydırma çubuklarını aktif et',border:'Çerceve sınırlarını göster'},font:{label:'Yazı Türü',voiceLabel:'Font',panelTitle:'Yazı Türü'},fontSize:{label:'Boyut',voiceLabel:'Font Size',panelTitle:'Boyut'},colorButton:{textColorTitle:'Yazı Rengi',bgColorTitle:'Arka Renk',panelTitle:'Renkler',auto:'Otomatik',more:'Diğer renkler...'},colors:{'000':'Siyah',800000:'Kestane','8B4513':'Koyu Kahverengi','2F4F4F':'Koyu Kurşuni Gri','008080':'Teal','000080':'Mavi','4B0082':'Çivit Mavisi',696969:'Silik Gri',B22222:'Ateş Tuğlası',A52A2A:'Kahverengi',DAA520:'Altun Sırık','006400':'Koyu Yeşil','40E0D0':'Turkuaz','0000CD':'Orta Mavi',800080:'Pembe',808080:'Gri',F00:'Kırmızı',FF8C00:'Koyu Portakal',FFD700:'Altın','008000':'Yeşil','0FF':'Ciyan','00F':'Mavi',EE82EE:'Menekşe',A9A9A9:'Koyu Gri',FFA07A:'Açık Sarımsı',FFA500:'Portakal',FFFF00:'Sarı','00FF00':'Açık Yeşil',AFEEEE:'Sönük Turkuaz',ADD8E6:'Açık Mavi',DDA0DD:'Mor',D3D3D3:'Açık Gri',FFF0F5:'Eflatun Pembe',FAEBD7:'Antik Beyaz',FFFFE0:'Açık Sarı',F0FFF0:'Balsarısı',F0FFFF:'Gök Mavisi',F0F8FF:'Reha Mavi',E6E6FA:'Eflatun',FFF:'Beyaz'},scayt:{title:'Girmiş olduğunuz kelime denetimi',opera_title:'Opera tarafından desteklenmemektedir',enable:"SCAYT'ı etkinleştir",disable:"SCAYT'ı pasifleştir",about:"SCAYT'ı hakkında",toggle:"SCAYT'ı değiştir",options:'Seçenekler',langs:'Diller',moreSuggestions:'Daha fazla öneri',ignore:'Yoksay',ignoreAll:'Tümünü Yoksay',addWord:'Kelime Ekle',emptyDic:'Sözlük adı boş olamaz.',optionsTab:'Seçenekler',allCaps:'Tüm büyük küçük kelimeleri yoksay',ignoreDomainNames:'Domain adlarını yoksay',mixedCase:'Karışık büyüklük ile Sözcükler yoksay',mixedWithDigits:'Sayılarla Kelimeler yoksay',languagesTab:'Diller',dictionariesTab:'Sözlükler',dic_field_name:'Sözlük adı',dic_create:'Oluştur',dic_restore:'Geri al',dic_delete:'Sil',dic_rename:'Yeniden adlandır',dic_info:'Başlangıçta Kullanıcı Sözlüğü bir çerezde saklanır. Ancak, Çerezler boyutu sınırlıdır. Kullanıcı Sözlüğü, çerezin içinde saklanamayacağı bir noktada, bizim sunucularımızın içindeki sözlükte saklanabilir. Bizim sunucu üzerinde kişisel Sözlük saklamanız için, Sözlüğe bir ad belirtmelisiniz. Eğer zaten bir saklı Sözlük varsa, lütfen adını yazın ve Geri Yükle düğmesini tıklayın.',aboutTab:'Hakkında'},about:{title:'CKEditor Hakkında',dlgTitle:'CKEditor Hakkında',help:'Yardım için $1 kontrol edin.',userGuide:'CKEditor Kullanıcı Kılavuzu',moreInfo:'Lisanslama hakkında daha fazla bilgi almak için lütfen sitemizi ziyaret edin:',copy:'Copyright © $1. Tüm hakları saklıdır.'},maximize:'Büyült',minimize:'Küçült',fakeobjects:{anchor:'Bağlantı',flash:'Flash Animasyonu',iframe:'IFrame',hiddenfield:'Gizli Alan',unknown:'Bilinmeyen Nesne'},resize:'Boyutlandırmak için sürükle',colordialog:{title:'Renk seç',options:'Renk Seçenekleri',highlight:'İşaretle',selected:'Seçilmiş',clear:'Temizle'},toolbarCollapse:'Araç çubuklarını topla',toolbarExpand:'Araç çubuklarını aç',toolbarGroups:{document:'Belge',clipboard:'Pano/Geri al',editing:'Düzenleme',forms:'Formlar',basicstyles:'Temel Stiller',paragraph:'Paragraf',links:'Bağlantılar',insert:'Ekle',styles:'Stiller',colors:'Renkler',tools:'Araçlar'},bidi:{ltr:'Metin yönü soldan sağa',rtl:'Metin yönü sağdan sola'},docprops:{label:'Belge Özellikleri',title:'Belge Özellikleri',design:'Dizayn',meta:'Tanım Bilgisi (Meta)',chooseColor:'Seçiniz',other:'<diğer>',docTitle:'Sayfa Başlığı',charset:'Karakter Kümesi Kodlaması',charsetOther:'Diğer Karakter Kümesi Kodlaması',charsetASCII:'ASCII',charsetCE:'Orta Avrupa',charsetCT:'Geleneksel Çince (Big5)',charsetCR:'Kiril',charsetGR:'Yunanca',charsetJP:'Japonca',charsetKR:'Korece',charsetTR:'Türkçe',charsetUN:'Evrensel Kod (UTF-8)',charsetWE:'Batı Avrupa',docType:'Belge Türü Başlığı',docTypeOther:'Diğer Belge Türü Başlığı',xhtmlDec:'XHTML Bildirimlerini Dahil Et',bgColor:'Arka Plan Rengi',bgImage:'Arka Plan Resim URLsi',bgFixed:'Sabit Arka Plan',txtColor:'Yazı Rengi',margin:'Kenar Boşlukları',marginTop:'Tepe',marginLeft:'Sol',marginRight:'Sağ',marginBottom:'Alt',metaKeywords:'Belge Dizinleme Anahtar Kelimeleri (virgülle ayrılmış)',metaDescription:'Belge Tanımı',metaAuthor:'Yazar',metaCopyright:'Telif',previewHtml:'<p>Bu bir <strong>örnek metindir</strong>. <a href="javascript:void(0)">CKEditor</a> kullanıyorsunuz.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ug.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ug.js
new file mode 100755
index 0000000..03e87a4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/ug.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ug={dir:'rtl',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'قورال بالداق',editor:'تەھرىرلىگۈچ',source:'مەنبە',newPage:'يېڭى بەت',save:'ساقلا',preview:'ئالدىن كۆزەت',cut:'كەس',copy:'نەشر ھوقۇقىغا ئىگە بەلگىسى',paste:'چاپلا',print:'باس ',underline:'ئاستى سىزىق',bold:'توم',italic:'يانتۇ',selectAll:'ھەممىنى تاللا',removeFormat:'پىچىمنى چىقىرىۋەت',strike:'ئۆچۈرۈش سىزىقى',subscript:'تۆۋەن ئىندېكس',superscript:'يۇقىرى ئىندېكس',horizontalrule:'توغرا سىزىق قىستۇر',pagebreak:'بەت ئايرىغۇچ قىستۇر',pagebreakAlt:'بەت ئايرىغۇچ',unlink:'ئۇلانما بىكار قىل',undo:'يېنىۋال',redo:'قايتىلا ',common:{browseServer:'كۆرسىتىش مۇلازىمېتىر',url:'ئەسلى ھۆججەت',protocol:'كېلىشىم',upload:'يۈكلە',uploadSubmit:'مۇلازىمېتىرغا يۈكلە',image:'سۈرەت',flash:'Flash',form:'جەدۋەل',checkbox:'كۆپ تاللاش رامكىسى',radio:'يەككە تاللاش توپچىسى',textField:'يەككە قۇر تېكىست',textarea:'كۆپ قۇر تېكىست',hiddenField:'يوشۇرۇن دائىرە',button:'توپچا',select:'تىزىم/تىزىملىك',imageButton:'سۈرەت دائىرە',notSet:'‹تەڭشەلمىگەن›',id:'ID',name:'ئات',langDir:'تىل يۆنىلىشى',langDirLtr:'سولدىن ئوڭغا (LTR)',langDirRtl:'ئوڭدىن سولغا (RTL)',langCode:'تىل كودى',longDescr:'تەپسىلىي چۈشەندۈرۈش ئادرېسى',cssClass:'ئۇسلۇب خىلىنىڭ ئاتى',advisoryTitle:'ماۋزۇ',cssStyle:'قۇر ئىچىدىكى ئۇسلۇبى',ok:'جەزملە',cancel:'ۋاز كەچ',close:'تاقا',preview:'ئالدىن كۆزەت',generalTab:'ئادەتتىكى',advancedTab:'ئالىي',validateNumberFailed:'سان پىچىمىدا كىرگۈزۈش زۆرۈر',confirmNewPage:'نۆۋەتتىكى پۈتۈك مەزمۇنى ساقلانمىدى، يېڭى پۈتۈك قۇرامسىز؟',confirmCancel:'قىسمەن ئۆزگەرتىش ساقلانمىدى، بۇ سۆزلەشكۈنى تاقامسىز؟',options:'تاللانما',target:'نىشان كۆزنەك',targetNew:'يېڭى كۆزنەك (_blank)',targetTop:'پۈتۈن بەت (_top)',targetSelf:'مەزكۇر كۆزنەك (_self)',targetParent:'ئاتا كۆزنەك (_parent)',langDirLTR:'سولدىن ئوڭغا (LTR)',langDirRTL:'ئوڭدىن سولغا (RTL)',styles:'ئۇسلۇبلار',cssClasses:'ئۇسلۇب خىللىرى',width:'كەڭلىك',height:'ئېگىزلىك',align:'توغرىلىنىشى',alignLeft:'سول',alignRight:'ئوڭ',alignCenter:'ئوتتۇرا',alignTop:'ئۈستى',alignMiddle:'ئوتتۇرا',alignBottom:'ئاستى',invalidHeight:'ئېگىزلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر',invalidWidth:'كەڭلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر',invalidCssLength:'بۇ سۆز بۆلىكى چوقۇم مۇۋاپىق بولغان CSS ئۇزۇنلۇق قىممىتى بولۇشى زۆرۈر، بىرلىكى (px, %, in, cm, mm, em, ex, pt ياكى pc)',invalidHtmlLength:'بۇ سۆز بۆلىكى چوقۇم بىرىكمە HTML ئۇزۇنلۇق قىممىتى بولۇشى كېرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px ياكى %)',invalidInlineStyle:'ئىچكى باغلانما ئۇسلۇبى چوقۇم چېكىتلىك پەش بىلەن ئايرىلغان بىر ياكى كۆپ «خاسلىق ئاتى:خاسلىق قىممىتى» پىچىمىدا بولۇشى لازىم',cssLengthTooltip:'بۇ سۆز بۆلىكى بىرىكمە CSS ئۇزۇنلۇق قىممىتى بولۇشى كېرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px, %, in, cm, mm, em, ex, pt ياكى pc)',unavailable:'%1<span class=\\\\"cke_accessibility\\\\">، ئىشلەتكىلى بولمايدۇ</span>'},contextmenu:{options:'قىسقا يول تىزىملىك تاللانمىسى'},specialChar:{toolbar:'ئالاھىدە ھەرپ قىستۇر',title:'ئالاھىدە ھەرپ تاللاڭ',options:'ئالاھىدە ھەرپ تاللانمىسى'},link:{toolbar:'ئۇلانما قىستۇر/تەھرىرلە',other:'‹باشقا›',menu:'ئۇلانما تەھرىر',title:'ئۇلانما',info:'ئۇلانما ئۇچۇرى',target:'نىشان',upload:'يۈكلە',advanced:'ئالىي',type:'ئۇلانما تىپى',toUrl:'ئادرېس',toAnchor:'بەت ئىچىدىكى لەڭگەرلىك نۇقتا ئۇلانمىسى',toEmail:'ئېلخەت',targetFrame:'‹كاندۇك›',targetPopup:'‹قاڭقىش كۆزنەك›',targetFrameName:'نىشان كاندۇك ئاتى',targetPopupName:'قاڭقىش كۆزنەك ئاتى',popupFeatures:'قاڭقىش كۆزنەك خاسلىقى',popupResizable:'چوڭلۇقى ئۆزگەرتىشچان',popupStatusBar:'ھالەت بالداق',popupLocationBar:'ئادرېس بالداق',popupToolbar:'قورال بالداق',popupMenuBar:'تىزىملىك بالداق',popupFullScreen:'پۈتۈن ئېكران (IE)',popupScrollBars:'دومىلىما سۈرگۈچ',popupDependent:'تەۋە (NS)',popupLeft:'سول',popupTop:'ئوڭ',id:'ID',langDir:'تىل يۆنىلىشى',langDirLTR:'سولدىن ئوڭغا (LTR)',langDirRTL:'ئوڭدىن سولغا (RTL)',acccessKey:'زىيارەت كۇنۇپكا',name:'ئات',langCode:'تىل كودى',tabIndex:'Tab تەرتىپى',advisoryTitle:'ماۋزۇ',advisoryContentType:'مەزمۇن تىپى',cssClasses:'ئۇسلۇب خىلى ئاتى',charset:'ھەرپ كودلىنىشى',styles:'قۇر ئىچىدىكى ئۇسلۇبى',rel:'باغلىنىش',selectAnchor:'بىر لەڭگەرلىك نۇقتا تاللاڭ',anchorName:'لەڭگەرلىك نۇقتا ئاتى بويىچە',anchorId:'لەڭگەرلىك نۇقتا ID سى بويىچە',emailAddress:'ئادرېس',emailSubject:'ماۋزۇ',emailBody:'مەزمۇن',noAnchors:'(بۇ پۈتۈكتە ئىشلەتكىلى بولىدىغان لەڭگەرلىك نۇقتا يوق)',noUrl:'ئۇلانما ئادرېسىنى كىرگۈزۈڭ',noEmail:'ئېلخەت ئادرېسىنى كىرگۈزۈڭ'},anchor:{toolbar:'لەڭگەرلىك نۇقتا ئۇلانمىسى قىستۇر/تەھرىرلە',menu:'لەڭگەرلىك نۇقتا ئۇلانما خاسلىقى',title:'لەڭگەرلىك نۇقتا ئۇلانما خاسلىقى',name:'لەڭگەرلىك نۇقتا ئاتى',errorName:'لەڭگەرلىك نۇقتا ئاتىنى كىرگۈزۈڭ',remove:'لەڭگەرلىك نۇقتا ئۆچۈر'},list:{numberedTitle:'تەرتىپ نومۇر تىزىم خاسلىقى',bulletedTitle:'تۈر بەلگە تىزىم خاسلىقى',type:'بەلگە تىپى',start:'باشلىنىش نومۇرى',validateStartNumber:'تىزىم باشلىنىش تەرتىپ نومۇرى چوقۇم پۈتۈن سان پىچىمىدا بولۇشى لازىم',circle:'بوش چەمبەر',disc:'تولدۇرۇلغان چەمبەر',square:'تولدۇرۇلغان تۆت چاسا',none:'بەلگە يوق',notset:'‹تەڭشەلمىگەن›',armenian:'قەدىمكى ئەرمىنىيە تەرتىپ نومۇرى شەكلى',georgian:'قەدىمكى جورجىيە تەرتىپ نومۇرى شەكلى (an, ban, gan قاتارلىق)',lowerRoman:'كىچىك ھەرپلىك رىم رەقىمى (i, ii, iii, iv, v قاتارلىق)',upperRoman:'چوڭ ھەرپلىك رىم رەقىمى (I, II, III, IV, V قاتارلىق)',lowerAlpha:'ئىنگلىزچە كىچىك ھەرپ (a, b, c, d, e قاتارلىق)',upperAlpha:'ئىنگلىزچە چوڭ ھەرپ (A, B, C, D, E قاتارلىق)',lowerGreek:'گرېكچە كىچىك ھەرپ (alpha, beta, gamma قاتارلىق)',decimal:'سان (1, 2, 3 قاتارلىق)',decimalLeadingZero:'نۆلدىن باشلانغان سان بەلگە (01, 02, 03 قاتارلىق)'},findAndReplace:{title:'ئىزدەپ ئالماشتۇر',find:'ئىزدە',replace:'ئالماشتۇر',findWhat:'ئىزدە:',replaceWith:'ئالماشتۇر:',notFoundMsg:'بەلگىلەنگەن تېكىستنى تاپالمىدى',findOptions:'ئىزدەش تاللانمىسى',matchCase:'چوڭ كىچىك ھەرپنى پەرقلەندۈر',matchWord:'پۈتۈن سۆز ماسلىشىش',matchCyclic:'ئايلانما ماسلىشىش',replaceAll:'ھەممىنى ئالماشتۇر',replaceSuccessMsg:'جەمئى %1 جايدىكى ئالماشتۇرۇش تاماملاندى'},table:{toolbar:'جەدۋەل',title:'جەدۋەل خاسلىقى',menu:'جەدۋەل خاسلىقى',deleteTable:'جەدۋەل ئۆچۈر',rows:'قۇر سانى',columns:'ئىستون سانى',border:'گىرۋەك',widthPx:'پىكسېل',widthPc:'پىرسەنت',widthUnit:'كەڭلىك بىرلىكى',cellSpace:'ئارىلىق',cellPad:'يان ئارىلىق',caption:'ماۋزۇ',summary:'ئۈزۈندە',headers:'ماۋزۇ كاتەكچە',headersNone:'يوق',headersColumn:'بىرىنچى ئىستون',headersRow:'بىرىنچى قۇر',headersBoth:'بىرىنچى ئىستون ۋە بىرىنچى قۇر',invalidRows:'بەلگىلەنگەن ئىستون سانى چوقۇم نۆلدىن چوڭ بولىدۇ',invalidCols:'بەلگىلەنگەن قۇر سانى چوقۇم نۆلدىن چوڭ بولىدۇ',invalidBorder:'گىرۋەك توملۇقى چوقۇم سان بولىدۇ',invalidWidth:'جەدۋەل كەڭلىكى چوقۇم سان بولىدۇ',invalidHeight:'جەدۋەل ئېگىزلىكى چوقۇم سان بولىدۇ',invalidCellSpacing:'كاتەكچە ئارىلىقى چوقۇم سان بولىدۇ',invalidCellPadding:'كاتەكچىگە چوقۇم سان تولدۇرۇلىدۇ',cell:{menu:'كاتەكچە',insertBefore:'سولغا كاتەكچە قىستۇر',insertAfter:'ئوڭغا كاتەكچە قىستۇر',deleteCell:'كەتەكچە ئۆچۈر',merge:'كاتەكچە بىرلەشتۈر',mergeRight:'كاتەكچىنى ئوڭغا بىرلەشتۈر',mergeDown:'كاتەكچىنى ئاستىغا بىرلەشتۈر',splitHorizontal:'كاتەكچىنى توغرىسىغا بىرلەشتۈر',splitVertical:'كاتەكچىنى بويىغا بىرلەشتۈر',title:'كاتەكچە خاسلىقى',cellType:'كاتەكچە تىپى',rowSpan:'بويىغا چات ئارىسى قۇر سانى',colSpan:'توغرىسىغا چات ئارىسى ئىستون سانى',wordWrap:'ئۆزلۈكىدىن قۇر قاتلا',hAlign:'توغرىسىغا توغرىلا',vAlign:'بويىغا توغرىلا',alignBaseline:'ئاساسىي سىزىق',bgColor:'تەگلىك رەڭگى',borderColor:'گىرۋەك رەڭگى',data:'سانلىق مەلۇمات',header:'جەدۋەل باشى',yes:'ھەئە',no:'ياق',invalidWidth:'كاتەكچە كەڭلىكى چوقۇم سان بولىدۇ',invalidHeight:'كاتەكچە ئېگىزلىكى چوقۇم سان بولىدۇ',invalidRowSpan:'قۇر چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ ',invalidColSpan:'ئىستون چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ',chooseColor:'تاللاڭ'},row:{menu:'قۇر',insertBefore:'ئۈستىگە قۇر قىستۇر',insertAfter:'ئاستىغا قۇر قىستۇر',deleteRow:'قۇر ئۆچۈر'},column:{menu:'ئىستون',insertBefore:'سولغا ئىستون قىستۇر',insertAfter:'ئوڭغا ئىستون قىستۇر',deleteColumn:'ئىستون ئۆچۈر'}},button:{title:'توپچا خاسلىقى',text:'بەلگە (قىممەت)',type:'تىپى',typeBtn:'توپچا',typeSbm:'تاپشۇر',typeRst:'ئەسلىگە قايتۇر'},checkboxAndRadio:{checkboxTitle:'كۆپ تاللاش خاسلىقى',radioTitle:'تاق تاللاش توپچا خاسلىقى',value:'تاللىغان قىممەت',selected:'تاللانغان'},form:{title:'جەدۋەل خاسلىقى',menu:'جەدۋەل خاسلىقى',action:'مەشغۇلات',method:'ئۇسۇل',encoding:'جەدۋەل كودلىنىشى'},select:{title:'جەدۋەل/تىزىم خاسلىقى',selectInfo:'ئۇچۇر تاللاڭ',opAvail:'تاللاش تۈرلىرى',value:'قىممەت',size:'ئېگىزلىكى',lines:'قۇر',chkMulti:'كۆپ تاللاشچان',opText:'تاللانما تېكىستى',opValue:'تاللانما قىممىتى',btnAdd:'قوش',btnModify:'ئۆزگەرت',btnUp:'ئۈستىگە',btnDown:'ئاستىغا',btnSetValue:'دەسلەپكى تاللانما قىممىتىگە تەڭشە',btnDelete:'ئۆچۈر'},textarea:{title:' كۆپ قۇرلۇق تېكىست خاسلىقى',cols:'ھەرپ كەڭلىكى',rows:'قۇر سانى'},textfield:{title:'تاق قۇرلۇق تېكىست خاسلىقى',name:'ئات',value:'دەسلەپكى قىممىتى',charWidth:'ھەرپ كەڭلىكى',maxChars:'ئەڭ كۆپ ھەرپ سانى',type:'تىپى',typeText:'تېكىست',typePass:'ئىم'},hidden:{title:'يوشۇرۇن دائىرە خاسلىقى',name:'ئات',value:'دەسلەپكى قىممىتى'},image:{title:'سۈرەت خاسلىقى',titleButton:'سۈرەت دائىرە خاسلىقى',menu:'سۈرەت خاسلىقى',infoTab:'سۈرەت',btnUpload:'مۇلازىمېتىرغا يۈكلە',upload:'يۈكلە',alt:'تېكىست ئالماشتۇر',lockRatio:'نىسبەتنى قۇلۇپلا',resetSize:'ئەسلى چوڭلۇق',border:'گىرۋەك چوڭلۇقى',hSpace:'توغرىسىغا ئارىلىقى',vSpace:'بويىغا ئارىلىقى',alertUrl:'سۈرەت ئادرېسىنى كىرگۈزۈڭ',linkTab:'ئۇلانما',button2Img:'نۆۋەتتىكى توپچىنى سۈرەتكە ئۆزگەرتەمسىز؟',img2Button:'نۆۋەتتىكى سۈرەتنى توپچىغا ئۆزگەرتەمسىز؟',urlMissing:'سۈرەتنىڭ ئەسلى ھۆججەت ئادرېسى كەم',validateBorder:'گىرۋەك چوڭلۇقى چوقۇم سان بولىدۇ',validateHSpace:'توغرىسىغا ئارىلىق چوقۇم پۈتۈن سان بولىدۇ',validateVSpace:'بويىغا ئارىلىق چوقۇم پۈتۈن سان بولىدۇ'},flash:{properties:'Flash خاسلىق',propertiesTab:'خاسلىق',title:'ماۋزۇ',chkPlay:'ئۆزلۈكىدىن چال',chkLoop:'دەۋرىي',chkMenu:'Flash تىزىملىكنى قوزغات',chkFull:'پۈتۈن ئېكراننى قوزغات',scale:'نىسبىتى',scaleAll:'ھەممىنى كۆرسەت',scaleNoBorder:'گىرۋەك يوق',scaleFit:'قەتئىي ماسلىشىش',access:'قوليازما زىيارەتكە يول قوي',accessAlways:'ھەمىشە',accessSameDomain:'ئوخشاش دائىرىدە',accessNever:'ھەرگىز',alignAbsBottom:'مۇتلەق ئاستى',alignAbsMiddle:'مۇتلەق ئوتتۇرا',alignBaseline:'ئاساسىي سىزىق',alignTextTop:'تېكىست ئۈستىدە',quality:'سۈپەت',qualityBest:'ئەڭ ياخشى',qualityHigh:'يۇقىرى',qualityAutoHigh:'يۇقىرى (ئاپتوماتىك)',qualityMedium:'ئوتتۇرا (ئاپتوماتىك)',qualityAutoLow:'تۆۋەن (ئاپتوماتىك)',qualityLow:'تۆۋەن',windowModeWindow:'كۆزنەك گەۋدىسى',windowModeOpaque:'خىرە',windowModeTransparent:'سۈزۈك',windowMode:'كۆزنەك ھالىتى',flashvars:'Flash ئۆزگەرگۈچى',bgcolor:'تەگلىك رەڭگى',hSpace:'توغرىسىغا ئارىلىق',vSpace:'بويىغا ئارىلىق',validateSrc:'ئەسلى ھۆججەت ئادرېسىنى كىرگۈزۈڭ',validateHSpace:'توغرىسىغا ئارىلىق چوقۇم سان بولىدۇ',validateVSpace:'بويىغا ئارىلىق چوقۇم سان بولىدۇ'},spellCheck:{toolbar:'ئىملا تەكشۈر',title:'ئىملا تەكشۈر',notAvailable:'كەچۈرۈڭ، مۇلازىمېتىرنى ۋاقتىنچە ئىشلەتكىلى بولمايدۇ',errorLoading:'لازىملىق مۇلازىمېتىرنى يۈكلىگەندە خاتالىق كۆرۈلدى: %s.',notInDic:'لۇغەتتە يوق',changeTo:'ئۆزگەرت',btnIgnore:'پەرۋا قىلما',btnIgnoreAll:'ھەممىگە پەرۋا قىلما',btnReplace:'ئالماشتۇر',btnReplaceAll:'ھەممىنى ئالماشتۇر',btnUndo:'يېنىۋال',noSuggestions:'-تەكلىپ يوق-',progress:'ئىملا تەكشۈرۈۋاتىدۇ…',noMispell:'ئىملا تەكشۈرۈش تامام: ئىملا خاتالىقى بايقالمىدى',noChanges:'ئىملا تەكشۈرۈش تامام: ھېچقانداق سۆزنى ئۆزگەرتمىدى',oneChange:'ئىملا تەكشۈرۈش تامام: بىر سۆزنى ئۆزگەرتتى',manyChanges:'ئىملا تەكشۈرۈش تامام: %1 سۆزنى ئۆزگەرتتى',ieSpellDownload:'ئىملا تەكشۈرۈش قىستۇرمىسى تېخى ئورنىتىلمىغان، ھازىرلا چۈشۈرەمسىز؟'},smiley:{toolbar:'چىراي ئىپادە',title:'چىراي ئىپادە سىنبەلگە قىستۇر',options:'چىراي ئىپادە سىنبەلگە تاللانمىسى'},elementsPath:{eleLabel:'ئېلېمېنت يولى',eleTitle:'%1 ئېلېمېنت'},numberedlist:'تەرتىپ نومۇر تىزىمى',bulletedlist:'تۈر بەلگە تىزىمى',indent:'تارايت',outdent:'كەڭەيت',justify:{left:'سولغا توغرىلا',center:'ئوتتۇرىغا توغرىلا',right:'ئوڭغا توغرىلا',block:'ئىككى تەرەپتىن توغرىلا'},blockquote:'بۆلەك نەقىل',clipboard:{title:'چاپلا',cutError:'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كەس مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاڭ',copyError:'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كۆچۈر مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاڭ',pasteMsg:'ھەرپتاختا تېز كۇنۇپكا (<STRONG>Ctrl/Cmd+V</STRONG>) نى ئىشلىتىپ مەزمۇننى تۆۋەندىكى رامكىغا كۆچۈرۈڭ، ئاندىن <STRONG>جەزملە</STRONG>نى بېسىڭ',securityMsg:'توركۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى سەۋەبىدىن بۇ تەھرىرلىگۈچ چاپلاش تاختىسىدىكى مەزمۇننى بىۋاستە زىيارەت قىلالمايدۇ، بۇ كۆزنەكتە قايتا بىر قېتىم چاپلىشىڭىز كېرەك.',pasteArea:'چاپلاش دائىرىسى'},pastefromword:{confirmCleanup:'سىز چاپلىماقچى بولغان مەزمۇن MS Word تىن كەلگەندەك قىلىدۇ، MS Word پىچىمىنى تازىلىۋەتكەندىن كېيىن ئاندىن چاپلامدۇ؟',toolbar:'MS Word تىن چاپلا',title:'MS Word تىن چاپلا',error:'ئىچكى خاتالىق سەۋەبىدىن چاپلايدىغان سانلىق مەلۇماتنى تازىلىيالمايدۇ'},pasteText:{button:'پىچىمى يوق تېكىست سۈپىتىدە چاپلا',title:'پىچىمى يوق تېكىست سۈپىتىدە چاپلا'},templates:{button:'قېلىپ',title:'مەزمۇن قېلىپى',options:'قېلىپ تاللانمىسى',insertOption:'نۆۋەتتىكى مەزمۇننى ئالماشتۇر',selectPromptMsg:'تەھرىرلىگۈچنىڭ مەزمۇن قېلىپىنى تاللاڭ:',emptyListMsg:'(قېلىپ يوق)'},showBlocks:'بۆلەكنى كۆرسەت',stylesCombo:{label:'ئۇسلۇب',panelTitle:'ئۇسلۇب',panelTitle1:'بۆلەك دەرىجىسىدىكى ئېلېمېنت ئۇسلۇبى',panelTitle2:'ئىچكى باغلانما ئېلېمېنت ئۇسلۇبى',panelTitle3:'نەڭ (Object) ئېلېمېنت ئۇسلۇبى'},format:{label:'پىچىم',panelTitle:'پىچىم',tag_p:'ئادەتتىكى',tag_pre:'تىزىلغان پىچىم',tag_address:'ئادرېس',tag_h1:'ماۋزۇ 1',tag_h2:'ماۋزۇ 2',tag_h3:'ماۋزۇ 3',tag_h4:'ماۋزۇ 4',tag_h5:'ماۋزۇ 5',tag_h6:'ماۋزۇ 6',tag_div:'ئابزاس (DIV)'},div:{title:'DIV قاچا قۇر',toolbar:'DIV قاچا قۇر',cssClassInputLabel:'ئۇسلۇب تىپىنىڭ ئاتى',styleSelectLabel:'ئۇسلۇب',IdInputLabel:'ID',languageCodeInputLabel:'تىل كودى',inlineStyleInputLabel:'قۇر ئىچىدىكى ئۇسلۇبى',advisoryTitleInputLabel:'ماۋزۇ',langDirLabel:'تىل يۆنىلىشى',langDirLTRLabel:'سولدىن ئوڭغا (LTR)',langDirRTLLabel:'ئوڭدىن سولغا (RTL)',edit:'DIV تەھرىر',remove:'DIV چىقىرىۋەت'},iframe:{title:'IFrame خاسلىق',toolbar:'IFrame ',noUrl:'كاندۇكنىڭ ئادرېسى(Url)نى كىرگۈزۈڭ',scrolling:'دومىلىما سۈرگۈچكە يول قوي',border:'كاندۇك گىرۋەكلىرىنى كۆرسەت'},font:{label:'خەت نۇسخا',voiceLabel:'خەت نۇسخا',panelTitle:'خەت نۇسخا'},fontSize:{label:'چوڭلۇقى',voiceLabel:'خەت چوڭلۇقى',panelTitle:'چوڭلۇقى'},colorButton:{textColorTitle:'تېكىست رەڭگى',bgColorTitle:'تەگلىك رەڭگى',panelTitle:'رەڭ',auto:'ئۆزلۈكىدىن',more:'باشقا رەڭ'},colors:{'000':'قارا',800000:'قىزغۇچ سېرىق','8B4513':'توق قوڭۇر','2F4F4F':'قارامتۇل يېشىل','008080':'كۆكۈش يېشىل','000080':'قارامتۇل كۆك','4B0082':'كۆكۈش كۈلرەڭ',696969:'قارامتۇل كۈلرەڭ',B22222:'خىش قىزىل',A52A2A:'قوڭۇر',DAA520:'ئالتۇن سېرىق','006400':'توق يېشىل','40E0D0':'كۆكۈچ يېشىل','0000CD':'ئوتتۇراھال كۆك',800080:'بىنەپشە',808080:'كۈلرەڭ',F00:'قىزىل',FF8C00:'توق قىزغۇچ سېرىق',FFD700:'ئالتۇن','008000':'يېشىل','0FF':'يېشىل كۆك','00F':'كۆك',EE82EE:'قىزغۇچ بىنەپشە',A9A9A9:'توق كۈلرەڭ',FFA07A:'كاۋا چېچىكى سېرىق',FFA500:'قىزغۇچ سېرىق',FFFF00:'سېرىق','00FF00':'Lime',AFEEEE:'سۇس ھاۋا رەڭ',ADD8E6:'ئوچۇق كۆك',DDA0DD:'قىزغۇچ بىنەپشە',D3D3D3:'سۇس كۆكۈچ كۈلرەڭ',FFF0F5:'سۇس قىزغۇچ بىنەپشە',FAEBD7:'Antique White',FFFFE0:'سۇس سېرىق',F0FFF0:'Honeydew',F0FFFF:'ئاسمان كۆكى',F0F8FF:'سۇس كۆك',E6E6FA:'سۇس بىنەپشە',FFF:'ئاق'},scayt:{title:'شۇئان ئىملا تەكشۈر',opera_title:'Opera توركۆرگۈنى قوللىمايدۇ',enable:'شۇئان ئىملا تەكشۈرۈشنى قوزغات',disable:'شۇئان ئىملا تەكشۈرۈشنى چەكلە',about:'شۇئان ئىملا تەكشۈرۈش ھەققىدە',toggle:'شۇئان ئىملا تەكشۈرۈشنى ۋاقىتلىق توختات/قوزغات',options:'تاللانما',langs:'تىل',moreSuggestions:'تېخىمۇ كۆپ ئىملا تەۋسىيەسى',ignore:'پەرۋا قىلما',ignoreAll:'ھەممىسىگە پەرۋا قىلما',addWord:'سۆز قوش',emptyDic:'لۇغەت ئاتى بوش قالمايدۇ',optionsTab:'تاللانما',allCaps:'چوڭ ھەرپتە يېزىلغان ھەممە سۆزگە پەرۋا قىلما',ignoreDomainNames:'دائىرە ئاتىغا پەرۋا قىلما',mixedCase:'چوڭ كىچىك ھەرپ بىلەن ئارىلاش يېزىلغان سۆزگە پەرۋا قىلما',mixedWithDigits:'سان بار سۆزگە پەرۋا قىلما',languagesTab:'تىل',dictionariesTab:'لۇغەت',dic_field_name:'لۇغەت ئاتى',dic_create:'قۇر',dic_restore:'ئەسلىگە كەلتۈر',dic_delete:'ئۆچۈر',dic_rename:'ئات ئۆزگەرت',dic_info:'باشلىنىشتا ئىشلەتكۈچى لۇغىتى Cookie غا ساقلىنىدۇ ئەمما Cookie نىڭ سىغىمى چەكلىك بولغاچقا، ئىشلەتكۈچى لۇغىتى كۆپىيىپ Cookie چەكلىمىسىدىن ئېشىپ كەتكەندە ساقلىغىلى بولمايدۇ، بۇ چاغدا لۇغىتىڭىزنى مۇلازىمېتىرىمىزغا ساقلىسىڭىز بولىدۇ. شەخسىي لۇغىتىڭىزنى مۇلازىمېتىرىمىزغا ساقلىماقچى بولسىڭىز لۇغىتىڭىزگە ئاتتىن بىرنى قويۇڭ، ئەگەر مۇلازىمتېرىمىزدا سىزنىڭ لۇغىتىڭىزدىن بىرسى بولسا لۇغەت ئاتىنى كىرگۈزۈپ ئەسلىگە قايتۇر توپچىسىنى بېسىڭ.',aboutTab:'ھەققىدە'},about:{title:'CKEditor ھەققىدە',dlgTitle:'CKEditor ھەققىدە',help:'$1 نى زىيارەت قىلىپ ياردەمگە ئېرىشىڭ',userGuide:'CKEditor ئىشلەتكۈچى قوللانمىسى',moreInfo:'تور تۇرايىمىزنى زىيارەت قىلىپ كېلىشىمگە ئائىت تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىڭ',copy:'Copyright © $1. نەشر ھوقۇقىغا ئىگە'},maximize:'چوڭايت',minimize:'كىچىكلەت',fakeobjects:{anchor:'لەڭگەرلىك نۇقتا',flash:'Flash جانلاندۇرۇم',iframe:'IFrame',hiddenfield:'يوشۇرۇن دائىرە',unknown:'يوچۇن نەڭ'},resize:'چوڭلۇقىنى ئۆزگەرت',colordialog:{title:'رەڭ تاللاڭ',options:'رەڭ تاللانمىسى',highlight:'يورۇت',selected:'رەڭ تاللاڭ',clear:'تازىلا'},toolbarCollapse:'قورال بالداقنى قاتلا',toolbarExpand:'قورال بالداقنى ياي',toolbarGroups:{document:'پۈتۈك',clipboard:'چاپلاش تاختىسى/يېنىۋال',editing:'تەھرىر',forms:'جەدۋەل',basicstyles:'ئاساسىي ئۇسلۇب',paragraph:'ئابزاس',links:'ئۇلانما',insert:'قىستۇر',styles:'ئۇسلۇب',colors:'رەڭ',tools:'قورال'},bidi:{ltr:'تېكىست يۆنىلىشى سولدىن ئوڭغا',rtl:'تېكىست يۆنىلىشى ئوڭدىن سولغا'},docprops:{label:'بەت خاسلىقى',title:'بەت خاسلىقى',design:'لايىھە',meta:'مېتا سانلىق مەلۇمات',chooseColor:'تاللاڭ',other:'باشقا',docTitle:'بەت ماۋزۇسى',charset:'ھەرپ كودلىنىشى',charsetOther:'باشقا ھەرپ كودلىنىشى',charsetASCII:'ASCII',charsetCE:'ئوتتۇرا ياۋرۇپا',charsetCT:'مۇرەككەپ خەنزۇچە (Big5)',charsetCR:'سىلاۋيانچە',charsetGR:'گىرېكچە',charsetJP:'ياپونچە',charsetKR:'كۆرىيەچە',charsetTR:'تۈركچە',charsetUN:'يۇنىكود (UTF-8)',charsetWE:'غەربىي ياۋرۇپا',docType:'پۈتۈك تىپى',docTypeOther:'باشقا پۈتۈك تىپى',xhtmlDec:'XHTML ئېنىقلىمىسىنى ئۆز ئىچىگە ئالىدۇ',bgColor:'تەگلىك رەڭگى',bgImage:'تەگلىك سۈرەت',bgFixed:'تەگلىك سۈرەتنى دومىلاتما',txtColor:'تېكىست رەڭگى',margin:'بەت گىرۋەك',marginTop:'ئۈستى',marginLeft:'سول',marginRight:'ئوڭ',marginBottom:'ئاستى',metaKeywords:'بەت يۈزى ئىندېكىس ھالقىلىق سۆزى (ئىنگلىزچە پەش [,] بىلەن ئايرىلىدۇ)',metaDescription:'بەت يۈزى چۈشەندۈرۈشى',metaAuthor:'يازغۇچى',metaCopyright:'نەشر ھوقۇقى',previewHtml:'<p>بۇ بىر قىسىم <strong>كۆرسەتمىگە ئىشلىتىدىغان تېكىست </strong>سىز نۆۋەتتە <a href=\\\\"javascript:void(0)\\\\">CKEditor</a>.نى ئىشلىتىۋاتىسىز.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/uk.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/uk.js
new file mode 100755
index 0000000..0541f85
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/uk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.uk={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'Панель інструментів редактора',editor:'Текстовий редактор',source:'Джерело',newPage:'Нова сторінка',save:'Зберегти',preview:'Попередній перегляд',cut:'Вирізати',copy:'Копіювати',paste:'Вставити',print:'Друк',underline:'Підкреслений',bold:'Жирний',italic:'Курсив',selectAll:'Виділити все',removeFormat:'Очистити форматування',strike:'Закреслений',subscript:'Нижній індекс',superscript:'Верхній індекс',horizontalrule:'Горизонтальна лінія',pagebreak:'Вставити розрив сторінки',pagebreakAlt:'Розрив Сторінки',unlink:'Видалити посилання',undo:'Повернути',redo:'Повторити',common:{browseServer:'Огляд',url:'URL',protocol:'Протокол',upload:'Надіслати',uploadSubmit:'Надіслати на сервер',image:'Зображення',flash:'Flash',form:'Форма',checkbox:'Галочка',radio:'Кнопка вибору',textField:'Текстове поле',textarea:'Текстова область',hiddenField:'Приховане поле',button:'Кнопка',select:'Список',imageButton:'Кнопка із зображенням',notSet:'<не визначено>',id:'Ідентифікатор',name:"Ім'я",langDir:'Напрямок мови',langDirLtr:'Зліва направо (LTR)',langDirRtl:'Справа наліво (RTL)',langCode:'Код мови',longDescr:'Довгий опис URL',cssClass:'Клас CSS',advisoryTitle:'Заголовок',cssStyle:'Стиль CSS',ok:'ОК',cancel:'Скасувати',close:'Закрити',preview:'Попередній перегляд',generalTab:'Основне',advancedTab:'Додаткове',validateNumberFailed:'Значення не є цілим числом.',confirmNewPage:'Всі незбережені зміни будуть втрачені. Ви впевнені, що хочете завантажити нову сторінку?',confirmCancel:'Деякі опції змінено. Закрити вікно без збереження змін?',options:'Опції',target:'Ціль',targetNew:'Нове вікно (_blank)',targetTop:'Поточне вікно (_top)',targetSelf:'Поточний фрейм/вікно (_self)',targetParent:'Батьківський фрейм/вікно (_parent)',langDirLTR:'Зліва направо (LTR)',langDirRTL:'Справа наліво (RTL)',styles:'Стиль CSS',cssClasses:'Клас CSS',width:'Ширина',height:'Висота',align:'Вирівнювання',alignLeft:'По лівому краю',alignRight:'По правому краю',alignCenter:'По центру',alignTop:'По верхньому краю',alignMiddle:'По середині',alignBottom:'По нижньому краю',invalidHeight:'Висота повинна бути цілим числом.',invalidWidth:'Ширина повинна бути цілим числом.',invalidCssLength:'Значення, вказане для "%1" в полі повинно бути позитивним числом або без дійсного виміру CSS блоку (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Значення, вказане для "%1" в полі повинно бути позитивним числом або без дійсного виміру HTML блоку (px or %).',invalidInlineStyle:'Значення, вказане для вбудованого стилю повинне складатися з одного чи кількох кортежів у форматі "ім\'я : значення", розділених крапкою з комою.',cssLengthTooltip:'Введіть номер значення в пікселях або число з дійсною одиниці CSS (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, не доступне</span>'},contextmenu:{options:'Опції контекстного меню'},specialChar:{toolbar:'Спеціальний символ',title:'Оберіть спеціальний символ',options:'Опції'},link:{toolbar:'Вставити/Редагувати посилання',other:'<інший>',menu:'Вставити посилання',title:'Посилання',info:'Інформація посилання',target:'Ціль',upload:'Надіслати',advanced:'Додаткове',type:'Тип посилання',toUrl:'URL',toAnchor:'Якір на цю сторінку',toEmail:'Ел. пошта',targetFrame:'<фрейм>',targetPopup:'<випливаюче вікно>',targetFrameName:"Ім'я цільового фрейму",targetPopupName:"Ім'я випливаючого вікна",popupFeatures:'Властивості випливаючого вікна',popupResizable:'Масштабоване',popupStatusBar:'Рядок статусу',popupLocationBar:'Панель локації',popupToolbar:'Панель інструментів',popupMenuBar:'Панель меню',popupFullScreen:'Повний екран (IE)',popupScrollBars:'Стрічки прокрутки',popupDependent:'Залежний (Netscape)',popupLeft:'Позиція зліва',popupTop:'Позиція зверху',id:'Ідентифікатор',langDir:'Напрямок мови',langDirLTR:'Зліва направо (LTR)',langDirRTL:'Справа наліво (RTL)',acccessKey:'Гаряча клавіша',name:"Ім'я",langCode:'Код мови',tabIndex:'Послідовність переходу',advisoryTitle:'Заголовок',advisoryContentType:'Тип вмісту',cssClasses:'Клас CSS',charset:'Кодування',styles:'Стиль CSS',rel:"Зв'язок",selectAnchor:'Оберіть якір',anchorName:"За ім'ям елементу",anchorId:'За ідентифікатором елементу',emailAddress:'Адреса ел. пошти',emailSubject:'Тема листа',emailBody:'Тіло повідомлення',noAnchors:'(В цьому документі немає якорів)',noUrl:'Будь ласка, вкажіть URL посилання',noEmail:'Будь ласка, вкажіть адрес ел. пошти'},anchor:{toolbar:'Вставити/Редагувати якір',menu:'Властивості якоря',title:'Властивості якоря',name:"Ім'я якоря",errorName:"Будь ласка, вкажіть ім'я якоря",remove:'Прибрати якір'},list:{numberedTitle:'Опції нумерованого списку',bulletedTitle:'Опції маркованого списку',type:'Тип',start:'Почати з...',validateStartNumber:'Початковий номер списку повинен бути цілим числом.',circle:'Кільце',disc:'Кружечок',square:'Квадратик',none:'Нема',notset:'<не вказано>',armenian:'Вірменська нумерація',georgian:'Грузинська нумерація (an, ban, gan і т.д.)',lowerRoman:'Малі римські (i, ii, iii, iv, v і т.д.)',upperRoman:'Великі римські (I, II, III, IV, V і т.д.)',lowerAlpha:'Малі лат. букви (a, b, c, d, e і т.д.)',upperAlpha:'Великі лат. букви (A, B, C, D, E і т.д.)',lowerGreek:'Малі гр. букви (альфа, бета, гамма і т.д.)',decimal:'Десяткові (1, 2, 3 і т.д.)',decimalLeadingZero:'Десяткові з нулем (01, 02, 03 і т.д.)'},findAndReplace:{title:'Знайти і замінити',find:'Пошук',replace:'Заміна',findWhat:'Шукати:',replaceWith:'Замінити на:',notFoundMsg:'Вказаний текст не знайдено.',findOptions:'Параметри Пошуку',matchCase:'Враховувати регістр',matchWord:'Збіг цілих слів',matchCyclic:'Циклічна заміна',replaceAll:'Замінити все',replaceSuccessMsg:'%1 співпадінь(ня) замінено.'},table:{toolbar:'Таблиця',title:'Властивості таблиці',menu:'Властивості таблиці',deleteTable:'Видалити таблицю',rows:'Рядки',columns:'Стовбці',border:'Розмір рамки',widthPx:'пікселів',widthPc:'відсотків',widthUnit:'Одиниці вимір.',cellSpace:'Проміжок',cellPad:'Внутр. відступ',caption:'Заголовок таблиці',summary:'Детальний опис заголовку таблиці',headers:'Заголовки стовбців/рядків',headersNone:'Без заголовків',headersColumn:'Стовбці',headersRow:'Рядки',headersBoth:'Стовбці і рядки',invalidRows:'Кількість рядків повинна бути більшою 0.',invalidCols:'Кількість стовбців повинна бути більшою 0.',invalidBorder:'Розмір рамки повинен бути цілим числом.',invalidWidth:'Ширина таблиці повинна бути цілим числом.',invalidHeight:'Висота таблиці повинна бути цілим числом.',invalidCellSpacing:'Проміжок між комірками повинен бути цілим числом.',invalidCellPadding:'Внутр. відступ комірки повинен бути цілим числом.',cell:{menu:'Комірки',insertBefore:'Вставити комірку перед',insertAfter:'Вставити комірку після',deleteCell:'Видалити комірки',merge:"Об'єднати комірки",mergeRight:"Об'єднати справа",mergeDown:"Об'єднати донизу",splitHorizontal:'Розділити комірку по горизонталі',splitVertical:'Розділити комірку по вертикалі',title:'Властивості комірки',cellType:'Тип комірки',rowSpan:"Об'єднання рядків",colSpan:"Об'єднання стовпців",wordWrap:'Автоперенесення тексту',hAlign:'Гориз. вирівнювання',vAlign:'Верт. вирівнювання',alignBaseline:'По базовій лінії',bgColor:'Колір фону',borderColor:'Колір рамки',data:'Дані',header:'Заголовок',yes:'Так',no:'Ні',invalidWidth:'Ширина комірки повинна бути цілим числом.',invalidHeight:'Висота комірки повинна бути цілим числом.',invalidRowSpan:"Кількість об'єднуваних рядків повинна бути цілим числом.",invalidColSpan:"Кількість об'єднуваних стовбців повинна бути цілим числом.",chooseColor:'Обрати'},row:{menu:'Рядки',insertBefore:'Вставити рядок перед',insertAfter:'Вставити рядок після',deleteRow:'Видалити рядки'},column:{menu:'Стовбці',insertBefore:'Вставити стовбець перед',insertAfter:'Вставити стовбець після',deleteColumn:'Видалити стовбці'}},button:{title:'Властивості кнопки',text:'Значення',type:'Тип',typeBtn:'Кнопка (button)',typeSbm:'Надіслати (submit)',typeRst:'Очистити (reset)'},checkboxAndRadio:{checkboxTitle:'Властивості галочки',radioTitle:'Властивості кнопки вибору',value:'Значення',selected:'Обрана'},form:{title:'Властивості форми',menu:'Властивості форми',action:'Дія',method:'Метод',encoding:'Кодування'},select:{title:'Властивості списку',selectInfo:'Інфо',opAvail:'Доступні варіанти',value:'Значення',size:'Кількість',lines:'видимих позицій у списку',chkMulti:'Список з мультивибором',opText:'Текст',opValue:'Значення',btnAdd:'Добавити',btnModify:'Змінити',btnUp:'Вгору',btnDown:'Вниз',btnSetValue:'Встановити як обране значення',btnDelete:'Видалити'},textarea:{title:'Властивості текстової області',cols:'Стовбці',rows:'Рядки'},textfield:{title:'Властивості текстового поля',name:"Ім'я",value:'Значення',charWidth:'Ширина',maxChars:'Макс. к-ть символів',type:'Тип',typeText:'Текст',typePass:'Пароль'},hidden:{title:'Властивості прихованого поля',name:"Ім'я",value:'Значення'},image:{title:'Властивості зображення',titleButton:'Властивості кнопки із зображенням',menu:'Властивості зображення',infoTab:'Інформація про зображення',btnUpload:'Надіслати на сервер',upload:'Надіслати',alt:'Альтернативний текст',lockRatio:'Зберегти пропорції',resetSize:'Очистити поля розмірів',border:'Рамка',hSpace:'Гориз. відступ',vSpace:'Верт. відступ',alertUrl:'Будь ласка, вкажіть URL зображення',linkTab:'Посилання',button2Img:'Бажаєте перетворити обрану кнопку-зображення на просте зображення?',img2Button:'Бажаєте перетворити обране зображення на кнопку-зображення?',urlMissing:'Вкажіть URL зображення.',validateBorder:'Ширина рамки повинна бути цілим числом.',validateHSpace:'Гориз. відступ повинен бути цілим числом.',validateVSpace:'Верт. відступ повинен бути цілим числом.'},flash:{properties:'Властивості Flash',propertiesTab:'Властивості',title:'Властивості Flash',chkPlay:'Автопрогравання',chkLoop:'Циклічно',chkMenu:'Дозволити меню Flash',chkFull:'Дозволити повноекранний перегляд',scale:'Масштаб',scaleAll:'Показати все',scaleNoBorder:'Без рамки',scaleFit:'Поч. розмір',access:'Доступ до скрипта',accessAlways:'Завжди',accessSameDomain:'З того ж домена',accessNever:'Ніколи',alignAbsBottom:'По нижньому краю (abs)',alignAbsMiddle:'По середині (abs)',alignBaseline:'По базовій лінії',alignTextTop:'Текст по верхньому краю',quality:'Якість',qualityBest:'Відмінна',qualityHigh:'Висока',qualityAutoHigh:'Автом. відмінна',qualityMedium:'Середня',qualityAutoLow:'Автом. низька',qualityLow:'Низька',windowModeWindow:'Вікно',windowModeOpaque:'Непрозорість',windowModeTransparent:'Прозорість',windowMode:'Віконний режим',flashvars:'Змінні Flash',bgcolor:'Колір фону',hSpace:'Гориз. відступ',vSpace:'Верт. відступ',validateSrc:'Будь ласка, вкажіть URL посилання',validateHSpace:'Гориз. відступ повинен бути цілим числом.',validateVSpace:'Верт. відступ повинен бути цілим числом.'},spellCheck:{toolbar:'Перевірити орфографію',title:'Перевірка орфографії',notAvailable:'Вибачте, але сервіс наразі недоступний.',errorLoading:'Помилка завантаження : %s.',notInDic:'Немає в словнику',changeTo:'Замінити на',btnIgnore:'Пропустити',btnIgnoreAll:'Пропустити все',btnReplace:'Замінити',btnReplaceAll:'Замінити все',btnUndo:'Назад',noSuggestions:'- немає варіантів -',progress:'Виконується перевірка орфографії...',noMispell:'Перевірку орфографії завершено: помилок не знайдено',noChanges:'Перевірку орфографії завершено: жодне слово не змінено',oneChange:'Перевірку орфографії завершено: змінено одне слово',manyChanges:'Перевірку орфографії завершено: 1% слів(ова) змінено',ieSpellDownload:'Модуль перевірки орфографії не встановлено. Бажаєте завантажити його зараз?'},smiley:{toolbar:'Смайлик',title:'Вставити смайлик',options:'Опції смайликів'},elementsPath:{eleLabel:'Шлях',eleTitle:'%1 елемент'},numberedlist:'Нумерований список',bulletedlist:'Маркірований список',indent:'Збільшити відступ',outdent:'Зменшити відступ',justify:{left:'По лівому краю',center:'По центру',right:'По правому краю',block:'По ширині'},blockquote:'Цитата',clipboard:{title:'Вставити',cutError:'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X)',copyError:'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+C).',pasteMsg:'Будь ласка, вставте інформацію з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl/Cmd+V</STRONG>), та натисніть <STRONG>OK</STRONG>.',securityMsg:"Редактор не може отримати прямий доступ до буферу обміну у зв'язку з налаштуваннями Вашого браузера. Вам потрібно вставити інформацію в це вікно.",pasteArea:'Область вставки'},pastefromword:{confirmCleanup:'Текст, що Ви намагаєтесь вставити, схожий на скопійований з Word. Бажаєте очистити його форматування перед вставлянням?',toolbar:'Вставити з Word',title:'Вставити з Word',error:'Неможливо очистити форматування через внутрішню помилку.'},pasteText:{button:'Вставити тільки текст',title:'Вставити тільки текст'},templates:{button:'Шаблони',title:'Шаблони змісту',options:'Опції шаблону',insertOption:'Замінити поточний вміст',selectPromptMsg:'Оберіть, будь ласка, шаблон для відкриття в редакторі<br>(поточний зміст буде втрачено):',emptyListMsg:'(Не знайдено жодного шаблону)'},showBlocks:'Показувати блоки',stylesCombo:{label:'Стиль',panelTitle:'Стилі форматування',panelTitle1:'Блочні стилі',panelTitle2:'Рядкові стилі',panelTitle3:"Об'єктні стилі"},format:{label:'Форматування',panelTitle:'Форматування параграфа',tag_p:'Нормальний',tag_pre:'Форматований',tag_address:'Адреса',tag_h1:'Заголовок 1',tag_h2:'Заголовок 2',tag_h3:'Заголовок 3',tag_h4:'Заголовок 4',tag_h5:'Заголовок 5',tag_h6:'Заголовок 6',tag_div:'Нормальний (div)'},div:{title:'Створити блок-контейнер',toolbar:'Створити блок-контейнер',cssClassInputLabel:'Клас CSS',styleSelectLabel:'Стиль CSS',IdInputLabel:'Ідентифікатор',languageCodeInputLabel:'Код мови',inlineStyleInputLabel:'Вписаний стиль',advisoryTitleInputLabel:'Зміст випливаючої підказки',langDirLabel:'Напрямок мови',langDirLTRLabel:'Зліва направо (LTR)',langDirRTLLabel:'Справа наліво (RTL)',edit:'Редагувати блок',remove:'Видалити блок'},iframe:{title:'Налаштування для IFrame',toolbar:'IFrame',noUrl:'Будь ласка введіть посилання для IFrame',scrolling:'Увімкнути прокрутку',border:'Показати рамки фрейму'},font:{label:'Шрифт',voiceLabel:'Шрифт',panelTitle:'Шрифт'},fontSize:{label:'Розмір',voiceLabel:'Розмір шрифту',panelTitle:'Розмір'},colorButton:{textColorTitle:'Колір тексту',bgColorTitle:'Колір фону',panelTitle:'Кольори',auto:'Авто',more:'Кольори...'},colors:{'000':'Чорний',800000:'Бордовий','8B4513':'Коричневий','2F4F4F':'Темний сіро-зелений','008080':'Морської хвилі','000080':'Сливовий','4B0082':'Індиго',696969:'Темносірий',B22222:'Темночервоний',A52A2A:'Каштановий',DAA520:'Бежевий','006400':'Темнозелений','40E0D0':'Бірюзовий','0000CD':'Темносиній',800080:'Пурпурний',808080:'Сірий',F00:'Червоний',FF8C00:'Темнооранжевий',FFD700:'Жовтий','008000':'Зелений','0FF':'Синьо-зелений','00F':'Синій',EE82EE:'Фіолетовий',A9A9A9:'Світлосірий',FFA07A:'Рожевий',FFA500:'Оранжевий',FFFF00:'Яскравожовтий','00FF00':'Салатовий',AFEEEE:'Світлобірюзовий',ADD8E6:'Блакитний',DDA0DD:'Світлофіолетовий',D3D3D3:'Сріблястий',FFF0F5:'Світлорожевий',FAEBD7:'Світлооранжевий',FFFFE0:'Світложовтий',F0FFF0:'Світлозелений',F0FFFF:'Світлий синьо-зелений',F0F8FF:'Світлоблакитний',E6E6FA:'Лавандовий',FFF:'Білий'},scayt:{title:'Перефірка орфографії по мірі набору',opera_title:'Не підтримується в Opera',enable:'Ввімкнути SCAYT',disable:'Вимкнути SCAYT',about:'Про SCAYT',toggle:'Перемкнути SCAYT',options:'Опції',langs:'Мови',moreSuggestions:'Більше варіантів',ignore:'Пропустити',ignoreAll:'Пропустити всі',addWord:'Додати слово',emptyDic:'Назва словника повинна бути вказана.',optionsTab:'Опції',allCaps:'Пропустити прописні слова',ignoreDomainNames:'Пропустити доменні назви',mixedCase:'Пропустити слова зі змішаним регістром',mixedWithDigits:'Пропустити слова, що містять цифри',languagesTab:'Мови',dictionariesTab:'Словники',dic_field_name:'Назва словника',dic_create:'Створити',dic_restore:'Відновити',dic_delete:'Видалити',dic_rename:'Перейменувати',dic_info:'Як правило, користувацькі словники зберігаються у cookie-файлах. Однак, cookie-файли мають обмеження на розмір. Якщо користувацький словник зростає в обсязі настільки, що вже не може бути збережений у cookie-файлі, тоді його можна зберегти на нашому сервері. Щоб зберегти Ваш персональний словник на нашому сервері необхідно вказати назву словника. Якщо Ви вже зберігали словник на сервері, будь ласка, вкажіть назву збереженого словника і натисніть кнопку Відновити.',aboutTab:'Про SCAYT'},about:{title:'Про CKEditor',dlgTitle:'Про CKEditor',help:'Перевірте $1 для допомоги.',userGuide:'Інструкція Користувача для CKEditor',moreInfo:'Щодо інформації з ліцензування завітайте на наш сайт:',copy:'Copyright © $1. Всі права застережено.'},maximize:'Максимізувати',minimize:'Мінімізувати',fakeobjects:{anchor:'Якір',flash:'Flash-анімація',iframe:'IFrame',hiddenfield:'Приховані Поля',unknown:"Невідомий об'єкт"},resize:'Потягніть для зміни розмірів',colordialog:{title:'Обрати колір',options:'Опції кольорів',highlight:'Колір, на який вказує курсор',selected:'Обраний колір',clear:'Очистити'},toolbarCollapse:'Згорнути панель інструментів',toolbarExpand:'Розгорнути панель інструментів',toolbarGroups:{document:'Документ',clipboard:'Буфер обміну / Скасувати',editing:'Редагування',forms:'Форми',basicstyles:'Основний Стиль',paragraph:'Параграф',links:'Посилання',insert:'Вставити',styles:'Стилі',colors:'Кольори',tools:'Інструменти'},bidi:{ltr:'Напрямок тексту зліва направо',rtl:'Напрямок тексту справа наліво'},docprops:{label:'Властивості документа',title:'Властивості документа',design:'Дизайн',meta:'Мета дані',chooseColor:'Обрати',other:'<інший>',docTitle:'Заголовок сторінки',charset:'Кодування набору символів',charsetOther:'Інше кодування набору символів',charsetASCII:'ASCII',charsetCE:'Центрально-європейська',charsetCT:'Китайська традиційна (Big5)',charsetCR:'Кирилиця',charsetGR:'Грецька',charsetJP:'Японська',charsetKR:'Корейська',charsetTR:'Турецька',charsetUN:'Юнікод (UTF-8)',charsetWE:'Західно-европейская',docType:'Заголовок типу документу',docTypeOther:'Інший заголовок типу документу',xhtmlDec:'Ввімкнути XHTML оголошення',bgColor:'Колір тла',bgImage:'URL зображення тла',bgFixed:'Тло без прокрутки',txtColor:'Колір тексту',margin:'Відступи сторінки',marginTop:'Верхній',marginLeft:'Лівий',marginRight:'Правий',marginBottom:'Нижній',metaKeywords:'Ключові слова документа (розділені комами)',metaDescription:'Опис документа',metaAuthor:'Автор',metaCopyright:'Авторські права',previewHtml:'<p>Це приклад<strong>тексту</strong>. Ви використовуєте<a href="javascript:void(0)"> CKEditor </a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/vi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/vi.js
new file mode 100755
index 0000000..6c597af
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/vi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.vi={dir:'trái-qua-phải',editorTitle:'Trình soạn thảo phong phú, %1',editorHelp:'Nhấn ALT + 0 để được giúp đỡ',toolbars:'Thanh công cụ',editor:'Bộ soạn thảo',source:'Mã HTML',newPage:'Trang mới',save:'Lưu',preview:'Xem trước',cut:'Cắt',copy:'Sao chép',paste:'Dán',print:'In',underline:'Gạch chân',bold:'Đậm',italic:'Nghiêng',selectAll:'Chọn tất cả',removeFormat:'Xoá định dạng',strike:'Gạch xuyên ngang',subscript:'Chỉ số dưới',superscript:'Chỉ số trên',horizontalrule:'Chèn đường phân cách ngang',pagebreak:'Chèn ngắt trang',pagebreakAlt:'Ngắt trang',unlink:'Xoá liên kết',undo:'Khôi phục thao tác',redo:'Làm lại thao tác',common:{browseServer:'Duyệt trên máy chủ',url:'URL',protocol:'Giao thức',upload:'Tải lên',uploadSubmit:'Tải lên máy chủ',image:'Hình ảnh',flash:'Flash',form:'Biểu mẫu',checkbox:'Nút kiểm',radio:'Nút chọn',textField:'Trường văn bản',textarea:'Vùng văn bản',hiddenField:'Trường ẩn',button:'Nút',select:'Ô chọn',imageButton:'Nút hình ảnh',notSet:'<không thiết lập>',id:'Định danh',name:'Tên',langDir:'Hướng ngôn ngữ',langDirLtr:'Trái sang phải (LTR)',langDirRtl:'Phải sang trái (RTL)',langCode:'Mã ngôn ngữ',longDescr:'Mô tả URL',cssClass:'Lớp Stylesheet',advisoryTitle:'Nhan đề hướng dẫn',cssStyle:'Kiểu (style)',ok:'Đồng ý',cancel:'Bỏ qua',close:'Đóng',preview:'Xem trước',generalTab:'Tab chung',advancedTab:'Tab mở rộng',validateNumberFailed:'Giá trị này không phải là số.',confirmNewPage:'Mọi thay đổi không được lưu lại, nội dung này sẽ bị mất. Bạn có chắc chắn muốn tải một trang mới?',confirmCancel:'Một vài tùy chọn đã bị thay đổi. Bạn có chắc chắn muốn đóng hộp thoại?',options:'Tùy chọn',target:'Đích đến',targetNew:'Cửa sổ mới (_blank)',targetTop:'Cửa sổ trên cùng (_top)',targetSelf:'Tại trang (_self)',targetParent:'Cửa sổ cha (_parent)',langDirLTR:'Trái sang phải (LTR)',langDirRTL:'Phải sang trái (RTL)',styles:'Kiểu',cssClasses:'Lớp CSS',width:'Chiều rộng',height:'chiều cao',align:'Vị trí',alignLeft:'Trái',alignRight:'Phải',alignCenter:'Giữa',alignTop:'Trên',alignMiddle:'Giữa',alignBottom:'Dưới',invalidHeight:'Chiều cao phải là số nguyên.',invalidWidth:'Chiều rộng phải là số nguyên.',invalidCssLength:'Giá trị quy định cho trường "%1" phải là một số dương có hoặc không có một đơn vị đo CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).',invalidHtmlLength:'Giá trị quy định cho trường "%1" phải là một số dương có hoặc không có một đơn vị đo HTML hợp lệ (px hoặc %).',invalidInlineStyle:'Giá trị quy định cho kiểu nội tuyến phải bao gồm một hoặc nhiều dữ liệu với định dạng "tên:giá trị", cách nhau bằng dấu chấm phẩy.',cssLengthTooltip:'Nhập một giá trị theo pixel hoặc một số với một đơn vị CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).',unavailable:'%1<span class="cke_accessibility">, không có</span>'},contextmenu:{options:'Tùy chọn menu bổ xung'},specialChar:{toolbar:'Chèn ký tự đặc biệt',title:'Hãy chọn ký tự đặc biệt',options:'Tùy chọn các ký tự đặc biệt'},link:{toolbar:'Chèn/Sửa liên kết',other:'<khác>',menu:'Sửa liên kết',title:'Liên kết',info:'Thông tin liên kết',target:'Đích',upload:'Tải lên',advanced:'Mở rộng',type:'Kiểu liên kết',toUrl:'URL',toAnchor:'Neo trong trang này',toEmail:'Thư điện tử',targetFrame:'<khung>',targetPopup:'<cửa sổ popup>',targetFrameName:'Tên khung đích',targetPopupName:'Tên cửa sổ Popup',popupFeatures:'Đặc điểm của cửa sổ Popup',popupResizable:'Có thể thay đổi kích cỡ',popupStatusBar:'Thanh trạng thái',popupLocationBar:'Thanh vị trí',popupToolbar:'Thanh công cụ',popupMenuBar:'Thanh Menu',popupFullScreen:'Toàn màn hình (IE)',popupScrollBars:'Thanh cuộn',popupDependent:'Phụ thuộc (Netscape)',popupLeft:'Vị trí bên trái',popupTop:'Vị trí phía trên',id:'Định danh',langDir:'Hướng ngôn ngữ',langDirLTR:'Trái sang phải (LTR)',langDirRTL:'Phải sang trái (RTL)',acccessKey:'Phím hỗ trợ truy cập',name:'Tên',langCode:'Mã ngôn ngữ',tabIndex:'Chỉ số của Tab',advisoryTitle:'Nhan đề hướng dẫn',advisoryContentType:'Nội dung hướng dẫn',cssClasses:'Lớp Stylesheet',charset:'Bảng mã của tài nguyên được liên kết đến',styles:'Kiểu (style)',rel:'Quan hệ',selectAnchor:'Chọn một điểm neo',anchorName:'Theo tên điểm neo',anchorId:'Theo định danh thành phần',emailAddress:'Thư điện tử',emailSubject:'Tiêu đề thông điệp',emailBody:'Nội dung thông điệp',noAnchors:'(Không có điểm neo nào trong tài liệu)',noUrl:'Hãy đưa vào đường dẫn liên kết (URL)',noEmail:'Hãy đưa vào địa chỉ thư điện tử'},anchor:{toolbar:'Chèn/Sửa điểm neo',menu:'Thuộc tính điểm neo',title:'Thuộc tính điểm neo',name:'Tên của điểm neo',errorName:'Hãy nhập vào tên của điểm neo',remove:'Xóa neo'},list:{numberedTitle:'Thuộc tính danh sách có thứ tự',bulletedTitle:'Thuộc tính danh sách không thứ tự',type:'Kiểu loại',start:'Bắt đầu',validateStartNumber:'Số bắt đầu danh sách phải là một số nguyên.',circle:'Khuyên tròn',disc:'Hình đĩa',square:'Hình vuông',none:'Không gì cả',notset:'<không thiết lập>',armenian:'Số theo kiểu Armenian',georgian:'Số theo kiểu Georgian (an, ban, gan...)',lowerRoman:'Số La Mã kiểu thường (i, ii, iii, iv, v...)',upperRoman:'Số La Mã kiểu HOA (I, II, III, IV, V...)',lowerAlpha:'Kiểu abc thường (a, b, c, d, e...)',upperAlpha:'Kiểu ABC HOA (A, B, C, D, E...)',lowerGreek:'Kiểu Hy Lạp (alpha, beta, gamma...)',decimal:'Kiểu số (1, 2, 3 ...)',decimalLeadingZero:'Kiểu số (01, 02, 03...)'},findAndReplace:{title:'Tìm kiếm và thay thế',find:'Tìm kiếm',replace:'Thay thế',findWhat:'Tìm chuỗi:',replaceWith:'Thay bằng:',notFoundMsg:'Không tìm thấy chuỗi cần tìm.',findOptions:'Tìm tùy chọn',matchCase:'Phân biệt chữ hoa/thường',matchWord:'Giống toàn bộ từ',matchCyclic:'Giống một phần',replaceAll:'Thay thế tất cả',replaceSuccessMsg:'%1 vị trí đã được thay thế.'},table:{toolbar:'Bảng',title:'Thuộc tính bảng',menu:'Thuộc tính bảng',deleteTable:'Xóa bảng',rows:'Số hàng',columns:'Số cột',border:'Kích thước đường viền',widthPx:'Điểm ảnh (px)',widthPc:'Phần trăm (%)',widthUnit:'Đơn vị',cellSpace:'Khoảng cách giữa các ô',cellPad:'Khoảng đệm giữ ô và nội dung',caption:'Đầu đề',summary:'Tóm lược',headers:'Đầu đề',headersNone:'Không có',headersColumn:'Cột đầu tiên',headersRow:'Hàng đầu tiên',headersBoth:'Cả hai',invalidRows:'Số lượng hàng phải là một số lớn hơn 0.',invalidCols:'Số lượng cột phải là một số lớn hơn 0.',invalidBorder:'Kích cỡ của đường biên phải là một số nguyên.',invalidWidth:'Chiều rộng của bảng phải là một số nguyên.',invalidHeight:'Chiều cao của bảng phải là một số nguyên.',invalidCellSpacing:'Khoảng cách giữa các ô phải là một số nguyên.',invalidCellPadding:'Khoảng đệm giữa ô và nội dung phải là một số nguyên.',cell:{menu:'Ô',insertBefore:'Chèn ô Phía trước',insertAfter:'Chèn ô Phía sau',deleteCell:'Xoá ô',merge:'Kết hợp ô',mergeRight:'Kết hợp sang phải',mergeDown:'Kết hợp xuống dưới',splitHorizontal:'Phân tách ô theo chiều ngang',splitVertical:'Phân tách ô theo chiều dọc',title:'Thuộc tính của ô',cellType:'Kiểu của ô',rowSpan:'Kết hợp hàng',colSpan:'Kết hợp cột',wordWrap:'Chữ liền hàng',hAlign:'Canh lề ngang',vAlign:'Canh lề dọc',alignBaseline:'Đường cơ sở',bgColor:'Màu nền',borderColor:'Màu viền',data:'Dữ liệu',header:'Đầu đề',yes:'Có',no:'Không',invalidWidth:'Chiều rộng của ô phải là một số nguyên.',invalidHeight:'Chiều cao của ô phải là một số nguyên.',invalidRowSpan:'Số hàng kết hợp phải là một số nguyên.',invalidColSpan:'Số cột kết hợp phải là một số nguyên.',chooseColor:'Chọn màu'},row:{menu:'Hàng',insertBefore:'Chèn hàng phía trước',insertAfter:'Chèn hàng phía sau',deleteRow:'Xoá hàng'},column:{menu:'Cột',insertBefore:'Chèn cột phía trước',insertAfter:'Chèn cột phía sau',deleteColumn:'Xoá cột'}},button:{title:'Thuộc tính của nút',text:'Chuỗi hiển thị (giá trị)',type:'Kiểu',typeBtn:'Nút bấm',typeSbm:'Nút gửi',typeRst:'Nút nhập lại'},checkboxAndRadio:{checkboxTitle:'Thuộc tính nút kiểm',radioTitle:'Thuộc tính nút chọn',value:'Giá trị',selected:'Được chọn'},form:{title:'Thuộc tính biểu mẫu',menu:'Thuộc tính biểu mẫu',action:'Hành động',method:'Phương thức',encoding:'Bảng mã'},select:{title:'Thuộc tính ô chọn',selectInfo:'Thông tin',opAvail:'Các tùy chọn có thể sử dụng',value:'Giá trị',size:'Kích cỡ',lines:'dòng',chkMulti:'Cho phép chọn nhiều',opText:'Văn bản',opValue:'Giá trị',btnAdd:'Thêm',btnModify:'Thay đổi',btnUp:'Lên',btnDown:'Xuống',btnSetValue:'Giá trị được chọn',btnDelete:'Nút xoá'},textarea:{title:'Thuộc tính vùng văn bản',cols:'Số cột',rows:'Số hàng'},textfield:{title:'Thuộc tính trường văn bản',name:'Tên',value:'Giá trị',charWidth:'Độ rộng của ký tự',maxChars:'Số ký tự tối đa',type:'Kiểu',typeText:'Ký tự',typePass:'Mật khẩu'},hidden:{title:'Thuộc tính trường ẩn',name:'Tên',value:'Giá trị'},image:{title:'Thuộc tính của ảnh',titleButton:'Thuộc tính nút của ảnh',menu:'Thuộc tính của ảnh',infoTab:'Thông tin của ảnh',btnUpload:'Tải lên máy chủ',upload:'Tải lên',alt:'Chú thích ảnh',lockRatio:'Giữ nguyên tỷ lệ',resetSize:'Kích thước gốc',border:'Đường viền',hSpace:'Khoảng đệm ngang',vSpace:'Khoảng đệm dọc',alertUrl:'Hãy đưa vào đường dẫn của ảnh',linkTab:'Tab liên kết',button2Img:'Bạn có muốn chuyển nút bấm bằng ảnh được chọn thành ảnh?',img2Button:'Bạn có muốn chuyển đổi ảnh được chọn thành nút bấm bằng ảnh?',urlMissing:'Thiếu đường dẫn hình ảnh',validateBorder:'Chiều rộng của đường viền phải là một số nguyên dương',validateHSpace:'Khoảng đệm ngang phải là một số nguyên dương',validateVSpace:'Khoảng đệm dọc phải là một số nguyên dương'},flash:{properties:'Thuộc tính Flash',propertiesTab:'Thuộc tính',title:'Thuộc tính Flash',chkPlay:'Tự động chạy',chkLoop:'Lặp',chkMenu:'Cho phép bật menu của Flash',chkFull:'Cho phép toàn màn hình',scale:'Tỷ lệ',scaleAll:'Hiển thị tất cả',scaleNoBorder:'Không đường viền',scaleFit:'Vừa vặn',access:'Truy cập mã',accessAlways:'Luôn luôn',accessSameDomain:'Cùng tên miền',accessNever:'Không bao giờ',alignAbsBottom:'Dưới tuyệt đối',alignAbsMiddle:'Giữa tuyệt đối',alignBaseline:'Đường cơ sở',alignTextTop:'Phía trên chữ',quality:'Chất lượng',qualityBest:'Tốt nhất',qualityHigh:'Cao',qualityAutoHigh:'Cao tự động',qualityMedium:'Trung bình',qualityAutoLow:'Thấp tự động',qualityLow:'Thấp',windowModeWindow:'Cửa sổ',windowModeOpaque:'Mờ đục',windowModeTransparent:'Trong suốt',windowMode:'Chế độ cửa sổ',flashvars:'Các biến số dành cho Flash',bgcolor:'Màu nền',hSpace:'Khoảng đệm ngang',vSpace:'Khoảng đệm dọc',validateSrc:'Hãy đưa vào đường dẫn liên kết',validateHSpace:'Khoảng đệm ngang phải là số nguyên.',validateVSpace:'Khoảng đệm dọc phải là số nguyên.'},spellCheck:{toolbar:'Kiểm tra chính tả',title:'Kiểm tra chính tả',notAvailable:'Xin lỗi, dịch vụ này hiện tại không có.',errorLoading:'Lỗi khi đang nạp dịch vụ ứng dụng: %s.',notInDic:'Không có trong từ điển',changeTo:'Chuyển thành',btnIgnore:'Bỏ qua',btnIgnoreAll:'Bỏ qua tất cả',btnReplace:'Thay thế',btnReplaceAll:'Thay thế tất cả',btnUndo:'Phục hồi lại',noSuggestions:'- Không đưa ra gợi ý về từ -',progress:'Đang tiến hành kiểm tra chính tả...',noMispell:'Hoàn tất kiểm tra chính tả: Không có lỗi chính tả',noChanges:'Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi',oneChange:'Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi',manyChanges:'Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi',ieSpellDownload:'Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?'},smiley:{toolbar:'Hình biểu lộ cảm xúc (mặt cười)',title:'Chèn hình biểu lộ cảm xúc (mặt cười)',options:'Tùy chọn hình biểu lộ cảm xúc'},elementsPath:{eleLabel:'Nhãn thành phần',eleTitle:'%1 thành phần'},numberedlist:'Chèn/Xoá Danh sách có thứ tự',bulletedlist:'Chèn/Xoá Danh sách không thứ tự',indent:'Dịch vào trong',outdent:'Dịch ra ngoài',justify:{left:'Canh trái',center:'Canh giữa',right:'Canh phải',block:'Canh đều'},blockquote:'Khối trích dẫn',clipboard:{title:'Dán',cutError:'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+X).',copyError:'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+C).',pasteMsg:'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl/Cmd+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.',securityMsg:'Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.',pasteArea:'Khu vực dán'},pastefromword:{confirmCleanup:'Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỏ định dạng Word trước khi dán?',toolbar:'Dán với định dạng Word',title:'Dán với định dạng Word',error:'Không thể để làm sạch các dữ liệu dán do một lỗi nội bộ'},pasteText:{button:'Dán theo định dạng văn bản thuần',title:'Dán theo định dạng văn bản thuần'},templates:{button:'Mẫu dựng sẵn',title:'Nội dung Mẫu dựng sẵn',options:'Tùy chọn mẫu dựng sẵn',insertOption:'Thay thế nội dung hiện tại',selectPromptMsg:'Hãy chọn mẫu dựng sẵn để mở trong trình biên tập<br>(nội dung hiện tại sẽ bị mất):',emptyListMsg:'(Không có mẫu dựng sẵn nào được định nghĩa)'},showBlocks:'Hiển thị các khối',stylesCombo:{label:'Kiểu',panelTitle:'Phong cách định dạng',panelTitle1:'Kiểu khối',panelTitle2:'Kiểu trực tiếp',panelTitle3:'Kiểu đối tượng'},format:{label:'Định dạng',panelTitle:'Định dạng',tag_p:'Bình thường (P)',tag_pre:'Đã thiết lập',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Bình thường (DIV)'},div:{title:'Tạo khối các thành phần',toolbar:'Tạo khối các thành phần',cssClassInputLabel:'Các lớp CSS',styleSelectLabel:'Kiểu (style)',IdInputLabel:'Định danh (id)',languageCodeInputLabel:'Mã ngôn ngữ',inlineStyleInputLabel:'Kiểu nội dòng',advisoryTitleInputLabel:'Nhan đề hướng dẫn',langDirLabel:'Hướng ngôn ngữ',langDirLTRLabel:'Trái sang phải (LTR)',langDirRTLLabel:'Phải qua trái (RTL)',edit:'Chỉnh sửa',remove:'Xóa bỏ'},iframe:{title:'Thuộc tính iframe',toolbar:'Iframe',noUrl:'Vui lòng nhập địa chỉ iframe',scrolling:'Kích hoạt thanh cuộn',border:'Hiển thị viền khung'},font:{label:'Phông',voiceLabel:'Phông',panelTitle:'Phông'},fontSize:{label:'Cỡ chữ',voiceLabel:'Kích cỡ phông',panelTitle:'Cỡ chữ'},colorButton:{textColorTitle:'Màu chữ',bgColorTitle:'Màu nền',panelTitle:'Màu sắc',auto:'Tự động',more:'Màu khác...'},colors:{'000':'Đen',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Nâu',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Xám',F00:'Đỏ',FF8C00:'Dark Orange',FFD700:'Vàng','008000':'Xanh lá cây','0FF':'Cyan','00F':'Xanh da trời',EE82EE:'Tím',A9A9A9:'Xám tối',FFA07A:'Light Salmon',FFA500:'Màu cam',FFFF00:'Vàng','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'Trắng'},scayt:{title:'Kiểm tra chính tả ngay khi gõ chữ (SCAYT)',opera_title:'Không hỗ trợ trên trình duyệt Opera',enable:'Bật SCAYT',disable:'Tắt SCAYT',about:'Thông tin về SCAYT',toggle:'Bật tắt SCAYT',options:'Tùy chọn',langs:'Ngôn ngữ',moreSuggestions:'Đề xuất thêm',ignore:'Bỏ qua',ignoreAll:'Bỏ qua tất cả',addWord:'Thêm từ',emptyDic:'Tên của từ điển không được để trống.',optionsTab:'Tùy chọn',allCaps:'Không phân biệt chữ HOA chữ thường',ignoreDomainNames:'Bỏ qua tên miền',mixedCase:'Không phân biệt loại chữ',mixedWithDigits:'Không phân biệt chữ và số',languagesTab:'Tab ngôn ngữ',dictionariesTab:'Từ điển',dic_field_name:'Tên từ điển',dic_create:'Tạo',dic_restore:'Phục hồi',dic_delete:'Xóa',dic_rename:'Thay tên',dic_info:'Ban đầu, từ điển người dùng được lưu trữ trong một cookie. Tuy nhiên, kích thước cookie bị giới hạn. Khi người sử dụng từ điển phát triển đến điểm không thể được lưu trữ trong cookie, từ điển sẽ được lưu trữ trên máy chủ của chúng tôi. Để lưu trữ từ điển cá nhân của bạn trên máy chủ của chúng tôi, bạn nên xác định một tên cho từ điển của bạn. Nếu bạn đã có một cuốn từ điển được lưu trữ, xin vui lòng gõ tên của nó và nhấn vào nút Khôi phục.',aboutTab:'Thông tin'},about:{title:'Thông tin về CKEditor',dlgTitle:'Thông tin về CKEditor',help:'Kiểm tra $1 để được giúp đỡ.',userGuide:'Hướng dẫn sử dụng CKEditor',moreInfo:'Vui lòng ghé thăm trang web của chúng tôi để có thông tin về giấy phép:',copy:'Bản quyền © $1. Giữ toàn quyền.'},maximize:'Phóng to tối đa',minimize:'Thu nhỏ',fakeobjects:{anchor:'Điểm neo',flash:'Flash',iframe:'IFrame',hiddenfield:'Trường ẩn',unknown:'Đối tượng không rõ ràng'},resize:'Kéo rê để thay đổi kích cỡ',colordialog:{title:'Chọn màu',options:'Tùy chọn màu',highlight:'Màu chọn',selected:'Màu đã chọn',clear:'Xóa bỏ'},toolbarCollapse:'Thu gọn thanh công cụ',toolbarExpand:'Mở rộng thnah công cụ',toolbarGroups:{document:'Tài liệu',clipboard:'Clipboard/Undo',editing:'Chỉnh sửa',forms:'Bảng biểu',basicstyles:'Kiểu cơ bản',paragraph:'Đoạn',links:'Liên kết',insert:'Chèn',styles:'Kiểu',colors:'Màu sắc',tools:'Công cụ'},bidi:{ltr:'Văn bản hướng từ trái sang phải',rtl:'Văn bản hướng từ phải sang trái'},docprops:{label:'Thuộc tính Tài liệu',title:'Thuộc tính Tài liệu',design:'Thiết kế',meta:'Siêu dữ liệu',chooseColor:'Chọn màu',other:'<khác>',docTitle:'Tiêu đề Trang',charset:'Bảng mã ký tự',charsetOther:'Bảng mã ký tự khác',charsetASCII:'ASCII',charsetCE:'Trung Âu',charsetCT:'Tiếng Trung Quốc (Big5)',charsetCR:'Tiếng Kirin',charsetGR:'Tiếng Hy Lạp',charsetJP:'Tiếng Nhật',charsetKR:'Tiếng Hàn',charsetTR:'Tiếng Thổ Nhĩ Kỳ',charsetUN:'Unicode (UTF-8)',charsetWE:'Tây Âu',docType:'Kiểu Đề mục Tài liệu',docTypeOther:'Kiểu Đề mục Tài liệu khác',xhtmlDec:'Bao gồm cả định nghĩa XHTML',bgColor:'Màu nền',bgImage:'URL của Hình ảnh nền',bgFixed:'Không cuộn nền',txtColor:'Màu chữ',margin:'Đường biên của Trang',marginTop:'Trên',marginLeft:'Trái',marginRight:'Phải',marginBottom:'Dưới',metaKeywords:'Các từ khóa chỉ mục tài liệu (phân cách bởi dấu phẩy)',metaDescription:'Mô tả tài liệu',metaAuthor:'Tác giả',metaCopyright:'Bản quyền',previewHtml:'<p>Đây là một số <strong>văn bản mẫu</strong>. Bạn đang sử dụng <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/zh.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/zh.js
new file mode 100755
index 0000000..4779130
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/zh.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.zh={dir:'ltr',editorTitle:'Rich text editor, %1',editorHelp:'Press ALT 0 for help',toolbars:'編輯器工具欄',editor:'富文本編輯器',source:'原始碼',newPage:'開新檔案',save:'儲存',preview:'預覽',cut:'剪下',copy:'複製',paste:'貼上',print:'列印',underline:'底線',bold:'粗體',italic:'斜體',selectAll:'全選',removeFormat:'清除格式',strike:'刪除線',subscript:'下標',superscript:'上標',horizontalrule:'插入水平線',pagebreak:'插入分頁符號',pagebreakAlt:'分頁符號',unlink:'移除超連結',undo:'復原',redo:'重複',common:{browseServer:'瀏覽伺服器端',url:'URL',protocol:'通訊協定',upload:'上傳',uploadSubmit:'上傳至伺服器',image:'影像',flash:'Flash',form:'表單',checkbox:'核取方塊',radio:'選項按鈕',textField:'文字方塊',textarea:'文字區域',hiddenField:'隱藏欄位',button:'按鈕',select:'清單/選單',imageButton:'影像按鈕',notSet:'<尚未設定>',id:'ID',name:'名稱',langDir:'語言方向',langDirLtr:'由左而右 (LTR)',langDirRtl:'由右而左 (RTL)',langCode:'語言代碼',longDescr:'詳細 URL',cssClass:'樣式表類別',advisoryTitle:'標題',cssStyle:'樣式',ok:'確定',cancel:'取消',close:'关闭',preview:'预览',generalTab:'一般',advancedTab:'進階',validateNumberFailed:'需要輸入數字格式',confirmNewPage:'現存的修改尚未儲存,要開新檔案?',confirmCancel:'部份選項尚未儲存,要關閉對話盒?',options:'选项',target:'目标',targetNew:'新窗口(_blank)',targetTop:'整页(_top)',targetSelf:'本窗口(_self)',targetParent:'父窗口(_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',width:'寬度',height:'高度',align:'對齊',alignLeft:'靠左對齊',alignRight:'靠右對齊',alignCenter:'置中',alignTop:'靠上對齊',alignMiddle:'置中對齊',alignBottom:'靠下對齊',invalidHeight:'高度必須為數字格式',invalidWidth:'寬度必須為數字格式',invalidCssLength:'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',invalidHtmlLength:'Value specified for the "%1" field must be a positive number with or without a valid HTML measurement unit (px or %).',invalidInlineStyle:'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.',cssLengthTooltip:'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',unavailable:'%1<span class="cke_accessibility">, 已關閉</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'插入特殊符號',title:'請選擇特殊符號',options:'Special Character Options'},link:{toolbar:'插入/編輯超連結',other:'<其他>',menu:'編輯超連結',title:'超連結',info:'超連結資訊',target:'目標',upload:'上傳',advanced:'進階',type:'超連接類型',toUrl:'URL',toAnchor:'本頁錨點',toEmail:'電子郵件',targetFrame:'<框架>',targetPopup:'<快顯視窗>',targetFrameName:'目標框架名稱',targetPopupName:'快顯視窗名稱',popupFeatures:'快顯視窗屬性',popupResizable:'可縮放',popupStatusBar:'狀態列',popupLocationBar:'網址列',popupToolbar:'工具列',popupMenuBar:'選單列',popupFullScreen:'全螢幕 (IE)',popupScrollBars:'捲軸',popupDependent:'從屬 (NS)',popupLeft:'左',popupTop:'右',id:'ID',langDir:'語言方向',langDirLTR:'由左而右 (LTR)',langDirRTL:'由右而左 (RTL)',acccessKey:'存取鍵',name:'名稱',langCode:'語言方向',tabIndex:'定位順序',advisoryTitle:'標題',advisoryContentType:'內容類型',cssClasses:'樣式表類別',charset:'連結資源之編碼',styles:'樣式',rel:'Relationship',selectAnchor:'請選擇錨點',anchorName:'依錨點名稱',anchorId:'依元件 ID',emailAddress:'電子郵件',emailSubject:'郵件主旨',emailBody:'郵件內容',noAnchors:'(本文件尚無可用之錨點)',noUrl:'請輸入欲連結的 URL',noEmail:'請輸入電子郵件位址'},anchor:{toolbar:'插入/編輯錨點',menu:'錨點屬性',title:'錨點屬性',name:'錨點名稱',errorName:'請輸入錨點名稱',remove:'Remove Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'尋找與取代',find:'尋找',replace:'取代',findWhat:'尋找:',replaceWith:'取代:',notFoundMsg:'未找到指定的文字。',findOptions:'Find Options',matchCase:'大小寫須相符',matchWord:'全字相符',matchCyclic:'循環搜索',replaceAll:'全部取代',replaceSuccessMsg:'共完成 %1 次取代'},table:{toolbar:'表格',title:'表格屬性',menu:'表格屬性',deleteTable:'刪除表格',rows:'列數',columns:'欄數',border:'邊框',widthPx:'像素',widthPc:'百分比',widthUnit:'width unit',cellSpace:'間距',cellPad:'內距',caption:'標題',summary:'摘要',headers:'標題',headersNone:'無標題',headersColumn:'第一欄',headersRow:'第一列',headersBoth:'第一欄和第一列',invalidRows:'必須有一或更多的列',invalidCols:'必須有一或更多的欄',invalidBorder:'邊框大小必須為數字格式',invalidWidth:'表格寬度必須為數字格式',invalidHeight:'表格高度必須為數字格式',invalidCellSpacing:'儲存格間距必須為數字格式',invalidCellPadding:'儲存格內距必須為數字格式',cell:{menu:'儲存格',insertBefore:'向左插入儲存格',insertAfter:'向右插入儲存格',deleteCell:'刪除儲存格',merge:'合併儲存格',mergeRight:'向右合併儲存格',mergeDown:'向下合併儲存格',splitHorizontal:'橫向分割儲存格',splitVertical:'縱向分割儲存格',title:'儲存格屬性',cellType:'儲存格類別',rowSpan:'儲存格列數',colSpan:'儲存格欄數',wordWrap:'自動換行',hAlign:'水平對齊',vAlign:'垂直對齊',alignBaseline:'基線對齊',bgColor:'背景顏色',borderColor:'邊框顏色',data:'數據',header:'標題',yes:'是',no:'否',invalidWidth:'儲存格寬度必須為數字格式',invalidHeight:'儲存格高度必須為數字格式',invalidRowSpan:'儲存格列數必須為整數格式',invalidColSpan:'儲存格欄數度必須為整數格式',chooseColor:'Choose'},row:{menu:'列',insertBefore:'向上插入列',insertAfter:'向下插入列',deleteRow:'刪除列'},column:{menu:'欄',insertBefore:'向左插入欄',insertAfter:'向右插入欄',deleteColumn:'刪除欄'}},button:{title:'按鈕屬性',text:'顯示文字 (值)',type:'類型',typeBtn:'按鈕 (Button)',typeSbm:'送出 (Submit)',typeRst:'重設 (Reset)'},checkboxAndRadio:{checkboxTitle:'核取方塊屬性',radioTitle:'選項按鈕屬性',value:'選取值',selected:'已選取'},form:{title:'表單屬性',menu:'表單屬性',action:'動作',method:'方法',encoding:'表單編碼'},select:{title:'清單/選單屬性',selectInfo:'資訊',opAvail:'可用選項',value:'值',size:'大小',lines:'行',chkMulti:'可多選',opText:'顯示文字',opValue:'選取值',btnAdd:'新增',btnModify:'修改',btnUp:'上移',btnDown:'下移',btnSetValue:'設為預設值',btnDelete:'刪除'},textarea:{title:'文字區域屬性',cols:'字元寬度',rows:'列數'},textfield:{title:'文字方塊屬性',name:'名稱',value:'值',charWidth:'字元寬度',maxChars:'最多字元數',type:'類型',typeText:'文字',typePass:'密碼'},hidden:{title:'隱藏欄位屬性',name:'名稱',value:'值'},image:{title:'影像屬性',titleButton:'影像按鈕屬性',menu:'影像屬性',infoTab:'影像資訊',btnUpload:'上傳至伺服器',upload:'上傳',alt:'替代文字',lockRatio:'等比例',resetSize:'重設為原大小',border:'邊框',hSpace:'水平距離',vSpace:'垂直距離',alertUrl:'請輸入影像 URL',linkTab:'超連結',button2Img:'要把影像按鈕改成影像嗎?',img2Button:'要把影像改成影像按鈕嗎?',urlMissing:'Image source URL is missing.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash 屬性',propertiesTab:'屬性',title:'Flash 屬性',chkPlay:'自動播放',chkLoop:'重複',chkMenu:'開啟選單',chkFull:'啟動全螢幕顯示',scale:'縮放',scaleAll:'全部顯示',scaleNoBorder:'無邊框',scaleFit:'精確符合',access:'允許腳本訪問',accessAlways:'永遠',accessSameDomain:'相同域名',accessNever:'永不',alignAbsBottom:'絕對下方',alignAbsMiddle:'絕對中間',alignBaseline:'基準線',alignTextTop:'文字上方',quality:'質素',qualityBest:'最好',qualityHigh:'高',qualityAutoHigh:'高(自動)',qualityMedium:'中(自動)',qualityAutoLow:'低(自動)',qualityLow:'低',windowModeWindow:'視窗',windowModeOpaque:'不透明',windowModeTransparent:'透明',windowMode:'視窗模式',flashvars:'Flash 變數',bgcolor:'背景顏色',hSpace:'水平距離',vSpace:'垂直距離',validateSrc:'請輸入欲連結的 URL',validateHSpace:'水平間距必須為數字格式',validateVSpace:'垂直間距必須為數字格式'},spellCheck:{toolbar:'拼字檢查',title:'拼字檢查',notAvailable:'抱歉,服務目前暫不可用',errorLoading:'無法聯系侍服器: %s.',notInDic:'不在字典中',changeTo:'更改為',btnIgnore:'忽略',btnIgnoreAll:'全部忽略',btnReplace:'取代',btnReplaceAll:'全部取代',btnUndo:'復原',noSuggestions:'- 無建議值 -',progress:'進行拼字檢查中…',noMispell:'拼字檢查完成:未發現拼字錯誤',noChanges:'拼字檢查完成:未更改任何單字',oneChange:'拼字檢查完成:更改了 1 個單字',manyChanges:'拼字檢查完成:更改了 %1 個單字',ieSpellDownload:'尚未安裝拼字檢查元件。您是否想要現在下載?'},smiley:{toolbar:'表情符號',title:'插入表情符號',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 元素'},numberedlist:'編號清單',bulletedlist:'項目清單',indent:'增加縮排',outdent:'減少縮排',justify:{left:'靠左對齊',center:'置中',right:'靠右對齊',block:'左右對齊'},blockquote:'引用文字',clipboard:{title:'貼上',cutError:'瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl/Cmd+X) 剪下。',copyError:'瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl/Cmd+C) 複製。',pasteMsg:'請使用快捷鍵 (<strong>Ctrl/Cmd+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>',securityMsg:'因為瀏覽器的安全性設定,本編輯器無法直接存取您的剪貼簿資料,請您自行在本視窗進行貼上動作。',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'您想貼上的文字似乎是自 Word 複製而來,請問您是否要先清除 Word 的格式後再行貼上?',toolbar:'自 Word 貼上',title:'自 Word 貼上',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'貼為純文字格式',title:'貼為純文字格式'},templates:{button:'樣版',title:'內容樣版',options:'Template Options',insertOption:'取代原有內容',selectPromptMsg:'請選擇欲開啟的樣版<br> (原有的內容將會被清除):',emptyListMsg:'(無樣版)'},showBlocks:'顯示區塊',stylesCombo:{label:'樣式',panelTitle:'Formatting Styles',panelTitle1:'塊級元素樣式',panelTitle2:'內聯元素樣式',panelTitle3:'物件元素樣式'},format:{label:'格式',panelTitle:'格式',tag_p:'一般',tag_pre:'已格式化',tag_address:'位址',tag_h1:'標題 1',tag_h2:'標題 2',tag_h3:'標題 3',tag_h4:'標題 4',tag_h5:'標題 5',tag_h6:'標題 6',tag_div:'一般 (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},iframe:{title:'IFrame Properties',toolbar:'IFrame',noUrl:'Please type the iframe URL',scrolling:'Enable scrollbars',border:'Show frame border'},font:{label:'字體',voiceLabel:'字體',panelTitle:'字體'},fontSize:{label:'大小',voiceLabel:'文字大小',panelTitle:'大小'},colorButton:{textColorTitle:'文字顏色',bgColorTitle:'背景顏色',panelTitle:'Colors',auto:'自動',more:'更多顏色…'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'即時拼寫檢查',opera_title:'Not supported by Opera',enable:'啟用即時拼寫檢查',disable:'關閉即時拼寫檢查',about:'關於即時拼寫檢查',toggle:'啟用/關閉即時拼寫檢查',options:'選項',langs:'語言',moreSuggestions:'更多拼寫建議',ignore:'忽略',ignoreAll:'全部忽略',addWord:'添加單詞',emptyDic:'字典名不應為空.',optionsTab:'選項',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'語言',dictionariesTab:'字典',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'關於'},about:{title:'關於 CKEditor',dlgTitle:'關於 CKEditor',help:'Check $1 for help.',userGuide:"CKEditor User's Guide",moreInfo:'訪問我們的網站以獲取更多關於協議的信息',copy:'Copyright © $1. All rights reserved.'},maximize:'最大化',minimize:'最小化',fakeobjects:{anchor:'錨點',flash:'Flash 動畫',iframe:'IFrame',hiddenfield:'Hidden Field',unknown:'不明物件'},resize:'拖拽改變大小',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'折叠工具栏',toolbarExpand:'展开工具栏',toolbarGroups:{document:'Document',clipboard:'Clipboard/Undo',editing:'Editing',forms:'Forms',basicstyles:'Basic Styles',paragraph:'Paragraph',links:'Links',insert:'Insert',styles:'Styles',colors:'Colors',tools:'Tools'},bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'},docprops:{label:'文件屬性',title:'文件屬性',design:'Design',meta:'Meta 資料',chooseColor:'Choose',other:'<其他>',docTitle:'頁面標題',charset:'字元編碼',charsetOther:'其他字元編碼',charsetASCII:'ASCII',charsetCE:'中歐語系',charsetCT:'正體中文 (Big5)',charsetCR:'斯拉夫文',charsetGR:'希臘文',charsetJP:'日文',charsetKR:'韓文',charsetTR:'土耳其文',charsetUN:'Unicode (UTF-8)',charsetWE:'西歐語系',docType:'文件類型',docTypeOther:'其他文件類型',xhtmlDec:'包含 XHTML 定義',bgColor:'背景顏色',bgImage:'背景影像',bgFixed:'浮水印',txtColor:'文字顏色',margin:'頁面邊界',marginTop:'上',marginLeft:'左',marginRight:'右',marginBottom:'下',metaKeywords:'文件索引關鍵字 (用半形逗號[,]分隔)',metaDescription:'文件說明',metaAuthor:'作者',metaCopyright:'版權所有',previewHtml:'<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/lang/zh-cn.js b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/zh-cn.js
new file mode 100755
index 0000000..e0f7bad
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/lang/zh-cn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['zh-cn']={dir:'ltr',editorTitle:'富文本编辑器,%1',editorHelp:'按 ALT+0 获得帮助',toolbars:'工具栏',editor:'所见即所得编辑器',source:'源码',newPage:'新建',save:'保存',preview:'预览',cut:'剪切',copy:'复制',paste:'粘贴',print:'打印',underline:'下划线',bold:'加粗',italic:'倾斜',selectAll:'全选',removeFormat:'清除格式',strike:'删除线',subscript:'下标',superscript:'上标',horizontalrule:'插入水平线',pagebreak:'插入分页符',pagebreakAlt:'分页符',unlink:'取消超链接',undo:'撤消',redo:'重做',common:{browseServer:'浏览服务器',url:'源文件',protocol:'协议',upload:'上传',uploadSubmit:'上传到服务器上',image:'图象',flash:'Flash',form:'表单',checkbox:'复选框',radio:'单选按钮',textField:'单行文本',textarea:'多行文本',hiddenField:'隐藏域',button:'按钮',select:'列表/菜单',imageButton:'图像域',notSet:'<没有设置>',id:'ID',name:'名称',langDir:'语言方向',langDirLtr:'从左到右 (LTR)',langDirRtl:'从右到左 (RTL)',langCode:'语言代码',longDescr:'详细说明地址',cssClass:'样式类名称',advisoryTitle:'标题',cssStyle:'行内样式',ok:'确定',cancel:'取消',close:'关闭',preview:'预览',generalTab:'常规',advancedTab:'高级',validateNumberFailed:'需要输入数字格式',confirmNewPage:'当前文档内容未保存,是否确认新建文档?',confirmCancel:'部分修改尚未保存,是否确认关闭对话框?',options:'选项',target:'目标窗口',targetNew:'新窗口 (_blank)',targetTop:'整页 (_top)',targetSelf:'本窗口 (_self)',targetParent:'父窗口 (_parent)',langDirLTR:'从左到右 (LTR)',langDirRTL:'从右到左 (RTL)',styles:'样式',cssClasses:'样式类',width:'宽度',height:'高度',align:'对齐方式',alignLeft:'左对齐',alignRight:'右对齐',alignCenter:'居中',alignTop:'顶端',alignMiddle:'居中',alignBottom:'底部',invalidHeight:'高度必须为数字格式',invalidWidth:'宽度必须为数字格式',invalidCssLength:'该字段必须为合式的CSS长度值,包括单位(px, %, in, cm, mm, em, ex, pt 或 pc)',invalidHtmlLength:'该字段必须为合式的HTML长度值,包括单位(px 或 %)',invalidInlineStyle:'内联样式必须为格式是以分号分隔的一个或多个“属性名 : 属性值”',cssLengthTooltip:'该字段必须为合式的CSS长度值,包括单位(px, %, in, cm, mm, em, ex, pt 或 pc)',unavailable:'%1<span class="cke_accessibility">, 不可用</span>'},contextmenu:{options:'快捷菜单选项'},specialChar:{toolbar:'插入特殊符号',title:'选择特殊符号',options:'特殊符号选项'},link:{toolbar:'插入/编辑超链接',other:'<其他>',menu:'编辑超链接',title:'超链接',info:'超链接信息',target:'目标',upload:'上传',advanced:'高级',type:'超链接类型',toUrl:'地址',toAnchor:'页内锚点链接',toEmail:'电子邮件',targetFrame:'<框架>',targetPopup:'<弹出窗口>',targetFrameName:'目标框架名称',targetPopupName:'弹出窗口名称',popupFeatures:'弹出窗口属性',popupResizable:'可缩放',popupStatusBar:'状态栏',popupLocationBar:'地址栏',popupToolbar:'工具栏',popupMenuBar:'菜单栏',popupFullScreen:'全屏 (IE)',popupScrollBars:'滚动条',popupDependent:'依附 (NS)',popupLeft:'左',popupTop:'右',id:'ID',langDir:'语言方向',langDirLTR:'从左到右 (LTR)',langDirRTL:'从右到左 (RTL)',acccessKey:'访问键',name:'名称',langCode:'语言代码',tabIndex:'Tab 键次序',advisoryTitle:'标题',advisoryContentType:'内容类型',cssClasses:'样式类名称',charset:'字符编码',styles:'行内样式',rel:'关联',selectAnchor:'选择一个锚点',anchorName:'按锚点名称',anchorId:'按锚点 ID',emailAddress:'地址',emailSubject:'主题',emailBody:'内容',noAnchors:'(此文档没有可用的锚点)',noUrl:'请输入超链接地址',noEmail:'请输入电子邮件地址'},anchor:{toolbar:'插入/编辑锚点链接',menu:'锚点链接属性',title:'锚点链接属性',name:'锚点名称',errorName:'请输入锚点名称',remove:'删除锚点'},list:{numberedTitle:'编号列表属性',bulletedTitle:'项目列表属性',type:'标记类型',start:'开始序号',validateStartNumber:'列表开始序号必须为整数格式',circle:'空心圆',disc:'实心圆',square:'实心方块',none:'无标记',notset:'<没有设置>',armenian:'传统的亚美尼亚编号方式',georgian:'传统的乔治亚编号方式(an, ban, gan, 等)',lowerRoman:'小写罗马数字(i, ii, iii, iv, v, 等)',upperRoman:'大写罗马数字(I, II, III, IV, V, 等)',lowerAlpha:'小写英文字母(a, b, c, d, e, 等)',upperAlpha:'大写英文字母(A, B, C, D, E, 等)',lowerGreek:'小写希腊字母(alpha, beta, gamma, 等)',decimal:'数字 (1, 2, 3, 等)',decimalLeadingZero:'0开头的数字标记(01, 02, 03, 等)'},findAndReplace:{title:'查找和替换',find:'查找',replace:'替换',findWhat:'查找:',replaceWith:'替换:',notFoundMsg:'指定文本没有找到',findOptions:'查找选项',matchCase:'区分大小写',matchWord:'全字匹配',matchCyclic:'循环匹配',replaceAll:'全部替换',replaceSuccessMsg:'共完成 %1 处替换.'},table:{toolbar:'表格',title:'表格属性',menu:'表格属性',deleteTable:'删除表格',rows:'行数',columns:'列数',border:'边框',widthPx:'像素',widthPc:'百分比',widthUnit:'宽度单位',cellSpace:'间距',cellPad:'边距',caption:'标题',summary:'摘要',headers:'标题单元格',headersNone:'无',headersColumn:'第一列',headersRow:'第一行',headersBoth:'第一列和第一行',invalidRows:'指定的列数必须大于零',invalidCols:'指定的行数必须大于零',invalidBorder:'边框粗细必须为数字格式',invalidWidth:'表格宽度必须为数字格式',invalidHeight:'表格高度必须为数字格式',invalidCellSpacing:'单元格间距必须为数字格式',invalidCellPadding:'单元格填充必须为数字格式',cell:{menu:'单元格',insertBefore:'在左侧插入单元格',insertAfter:'在右侧插入单元格',deleteCell:'删除单元格',merge:'合并单元格',mergeRight:'向右合并单元格',mergeDown:'向下合并单元格',splitHorizontal:'水平拆分单元格',splitVertical:'垂直拆分单元格',title:'单元格属性',cellType:'单元格类型',rowSpan:'纵跨行数',colSpan:'横跨列数',wordWrap:'自动换行',hAlign:'水平对齐',vAlign:'垂直对齐',alignBaseline:'基线',bgColor:'背景颜色',borderColor:'边框颜色',data:'数据',header:'表头',yes:'是',no:'否',invalidWidth:'单元格宽度必须为数字格式',invalidHeight:'单元格高度必须为数字格式',invalidRowSpan:'行跨度必须为整数格式',invalidColSpan:'列跨度必须为整数格式',chooseColor:'选择'},row:{menu:'行',insertBefore:'在上方插入行',insertAfter:'在下方插入行',deleteRow:'删除行'},column:{menu:'列',insertBefore:'在左侧插入列',insertAfter:'在右侧插入列',deleteColumn:'删除列'}},button:{title:'按钮属性',text:'标签(值)',type:'类型',typeBtn:'按钮',typeSbm:'提交',typeRst:'重设'},checkboxAndRadio:{checkboxTitle:'复选框属性',radioTitle:'单选按钮属性',value:'选定值',selected:'已勾选'},form:{title:'表单属性',menu:'表单属性',action:'动作',method:'方法',encoding:'表单编码'},select:{title:'菜单/列表属性',selectInfo:'选择信息',opAvail:'可选项',value:'值',size:'高度',lines:'行',chkMulti:'允许多选',opText:'选项文本',opValue:'选项值',btnAdd:'添加',btnModify:'修改',btnUp:'上移',btnDown:'下移',btnSetValue:'设为初始选定',btnDelete:'删除'},textarea:{title:'多行文本属性',cols:'字符宽度',rows:'行数'},textfield:{title:'单行文本属性',name:'名称',value:'初始值',charWidth:'字符宽度',maxChars:'最多字符数',type:'类型',typeText:'文本',typePass:'密码'},hidden:{title:'隐藏域属性',name:'名称',value:'初始值'},image:{title:'图象属性',titleButton:'图像域属性',menu:'图象属性',infoTab:'图象',btnUpload:'上传到服务器上',upload:'上传',alt:'替换文本',lockRatio:'锁定比例',resetSize:'原始尺寸',border:'边框大小',hSpace:'水平间距',vSpace:'垂直间距',alertUrl:'请输入图象地址',linkTab:'链接',button2Img:'确定要把当前按钮改变为图像吗?',img2Button:'确定要把当前图像改变为按钮吗?',urlMissing:'缺少图像源文件地址',validateBorder:'边框大小必须为整数格式',validateHSpace:'水平间距必须为整数格式',validateVSpace:'垂直间距必须为整数格式'},flash:{properties:'Flash 属性',propertiesTab:'属性',title:'标题',chkPlay:'自动播放',chkLoop:'循环',chkMenu:'启用 Flash 菜单',chkFull:'启用全屏',scale:'缩放',scaleAll:'全部显示',scaleNoBorder:'无边框',scaleFit:'严格匹配',access:'允许脚本访问',accessAlways:'总是',accessSameDomain:'同域',accessNever:'从不',alignAbsBottom:'绝对底部',alignAbsMiddle:'绝对居中',alignBaseline:'基线',alignTextTop:'文本上方',quality:'质量',qualityBest:'最好',qualityHigh:'高',qualityAutoHigh:'高(自动)',qualityMedium:'中(自动)',qualityAutoLow:'低(自动)',qualityLow:'低',windowModeWindow:'窗体',windowModeOpaque:'不透明',windowModeTransparent:'透明',windowMode:'窗体模式',flashvars:'Flash 变量',bgcolor:'背景颜色',hSpace:'水平间距',vSpace:'垂直间距',validateSrc:'请输入源文件地址',validateHSpace:'水平间距必须为数字格式',validateVSpace:'垂直间距必须为数字格式'},spellCheck:{toolbar:'拼写检查',title:'拼写检查',notAvailable:'抱歉, 服务目前暂不可用',errorLoading:'加载应该服务主机时出错: %s.',notInDic:'没有在字典里',changeTo:'更改为',btnIgnore:'忽略',btnIgnoreAll:'全部忽略',btnReplace:'替换',btnReplaceAll:'全部替换',btnUndo:'撤消',noSuggestions:'- 没有建议 -',progress:'正在进行拼写检查...',noMispell:'拼写检查完成: 没有发现拼写错误',noChanges:'拼写检查完成: 没有更改任何单词',oneChange:'拼写检查完成: 更改了一个单词',manyChanges:'拼写检查完成: 更改了 %1 个单词',ieSpellDownload:'拼写检查插件还没安装, 你是否想现在就下载?'},smiley:{toolbar:'表情符',title:'插入表情图标',options:'表情图标选项'},elementsPath:{eleLabel:'元素路径',eleTitle:'%1 元素'},numberedlist:'编号列表',bulletedlist:'项目列表',indent:'增加缩进量',outdent:'减少缩进量',justify:{left:'左对齐',center:'居中',right:'右对齐',block:'两端对齐'},blockquote:'块引用',clipboard:{title:'粘贴',cutError:'您的浏览器安全设置不允许编辑器自动执行剪切操作, 请使用键盘快捷键(Ctrl/Cmd+X)来完成',copyError:'您的浏览器安全设置不允许编辑器自动执行复制操作, 请使用键盘快捷键(Ctrl/Cmd+C)来完成',pasteMsg:'请使用键盘快捷键(<STRONG>Ctrl/Cmd+V</STRONG>)把内容粘贴到下面的方框里,再按 <STRONG>确定</STRONG>',securityMsg:'因为你的浏览器的安全设置原因, 本编辑器不能直接访问你的剪贴板内容, 你需要在本窗口重新粘贴一次',pasteArea:'粘贴区域'},pastefromword:{confirmCleanup:'您要粘贴的内容好像是来自 MS Word, 是否要清除 MS Word 格式后再粘贴?',toolbar:'从 MS Word 粘贴',title:'从 MS Word 粘贴',error:'由于内部错误无法清理要粘贴的数据'},pasteText:{button:'粘贴为无格式文本',title:'粘贴为无格式文本'},templates:{button:'模板',title:'内容模板',options:'模板选项',insertOption:'替换当前内容',selectPromptMsg:'请选择编辑器内容模板:',emptyListMsg:'(没有模板)'},showBlocks:'显示区块',stylesCombo:{label:'样式',panelTitle:'样式',panelTitle1:'块级元素样式',panelTitle2:'内联元素样式',panelTitle3:'对象元素样式'},format:{label:'格式',panelTitle:'格式',tag_p:'普通',tag_pre:'已编排格式',tag_address:'地址',tag_h1:'标题 1',tag_h2:'标题 2',tag_h3:'标题 3',tag_h4:'标题 4',tag_h5:'标题 5',tag_h6:'标题 6',tag_div:'段落(DIV)'},div:{title:'创建 DIV 容器',toolbar:'创建 DIV 容器',cssClassInputLabel:'样式类名称',styleSelectLabel:'样式',IdInputLabel:'ID',languageCodeInputLabel:'语言代码',inlineStyleInputLabel:'行内样式',advisoryTitleInputLabel:'标题',langDirLabel:'语言方向',langDirLTRLabel:'从左到右 (LTR)',langDirRTLLabel:'从右到左 (RTL)',edit:'编辑 DIV',remove:'移除 DIV'},iframe:{title:'IFrame 属性',toolbar:'IFrame',noUrl:'请输入框架的 URL',scrolling:'允许滚动条',border:'显示框架边框'},font:{label:'字体',voiceLabel:'字体',panelTitle:'字体'},fontSize:{label:'大小',voiceLabel:'文字大小',panelTitle:'大小'},colorButton:{textColorTitle:'文本颜色',bgColorTitle:'背景颜色',panelTitle:'颜色',auto:'自动',more:'其它颜色...'},colors:{'000':'黑',800000:'褐红','8B4513':'深褐','2F4F4F':'墨绿','008080':'绿松石','000080':'海军蓝','4B0082':'靛蓝',696969:'暗灰',B22222:'砖红',A52A2A:'褐',DAA520:'金黄','006400':'深绿','40E0D0':'蓝绿','0000CD':'中蓝',800080:'紫',808080:'灰',F00:'红',FF8C00:'深橙',FFD700:'金','008000':'绿','0FF':'青','00F':'蓝',EE82EE:'紫罗兰',A9A9A9:'深灰',FFA07A:'亮橙',FFA500:'橙',FFFF00:'黄','00FF00':'水绿',AFEEEE:'粉蓝',ADD8E6:'亮蓝',DDA0DD:'梅红',D3D3D3:'淡灰',FFF0F5:'淡紫红',FAEBD7:'古董白',FFFFE0:'淡黄',F0FFF0:'蜜白',F0FFFF:'天蓝',F0F8FF:'淡蓝',E6E6FA:'淡紫',FFF:'白'},scayt:{title:'即时拼写检查',opera_title:'不支持 Opera 浏览器',enable:'启用即时拼写检查',disable:'禁用即时拼写检查',about:'关于即时拼写检查',toggle:'暂停/启用即时拼写检查',options:'选项',langs:'语言',moreSuggestions:'更多拼写建议',ignore:'忽略',ignoreAll:'全部忽略',addWord:'添加单词',emptyDic:'字典名不应为空.',optionsTab:'选项',allCaps:'忽略所有大写单词',ignoreDomainNames:'忽略域名',mixedCase:'忽略大小写混合的单词',mixedWithDigits:'忽略带数字的单词',languagesTab:'语言',dictionariesTab:'字典',dic_field_name:'字典名称',dic_create:'创建',dic_restore:'还原',dic_delete:'删除',dic_rename:'重命名',dic_info:'一开始用户词典储存在 Cookie 中, 但是 Cookies 的容量是有限的, 当用户词典增长到超出 Cookie 限制时就无法再储存了, 这时您可以将词典储存到我们的服务器上. 要把您的个人词典到储存到我们的服务器上的话, 需要为您的词典指定一个名称, 如果您在我们的服务器上已经有储存有一个词典, 请输入词典名称并按还原按钮.',aboutTab:'关于'},about:{title:'关于CKEditor',dlgTitle:'关于CKEditor',help:'请访问 $1 以获取帮助.',userGuide:'CKEditor 用户向导',moreInfo:'访问我们的网站以获取更多关于协议的信息',copy:'Copyright © $1. 版权所有。'},maximize:'全屏',minimize:'最小化',fakeobjects:{anchor:'锚点',flash:'Flash 动画',iframe:'IFrame',hiddenfield:'隐藏域',unknown:'未知对象'},resize:'拖拽以改变尺寸',colordialog:{title:'选择颜色',options:'颜色选项',highlight:'高亮',selected:'选择颜色',clear:'清除'},toolbarCollapse:'折叠工具栏',toolbarExpand:'展开工具栏',toolbarGroups:{document:'文档',clipboard:'剪贴板/撤销',editing:'编辑',forms:'表单',basicstyles:'基本格式',paragraph:'段落',links:'链接',insert:'插入',styles:'样式',colors:'颜色',tools:'工具'},bidi:{ltr:'文字方向为从左至右',rtl:'文字方向为从右至左'},docprops:{label:'页面属性',title:'页面属性',design:'设计',meta:'Meta 数据',chooseColor:'选择',other:'<其他>',docTitle:'页面标题',charset:'字符编码',charsetOther:'其它字符编码',charsetASCII:'ASCII',charsetCE:'中欧',charsetCT:'繁体中文 (Big5)',charsetCR:'西里尔文',charsetGR:'希腊文',charsetJP:'日文',charsetKR:'韩文',charsetTR:'土耳其文',charsetUN:'Unicode (UTF-8)',charsetWE:'西欧',docType:'文档类型',docTypeOther:'其它文档类型',xhtmlDec:'包含 XHTML 声明',bgColor:'背景颜色',bgImage:'背景图像',bgFixed:'不滚动背景图像',txtColor:'文本颜色',margin:'页面边距',marginTop:'上',marginLeft:'左',marginRight:'右',marginBottom:'下',metaKeywords:'页面索引关键字 (用半角逗号[,]分隔)',metaDescription:'页面说明',metaAuthor:'作者',metaCopyright:'版权',previewHtml:'<p>这是一些<strong>演示用文字</strong>。你当前正在使用<a href="javascript:void(0)">CKEditor</a>。</p>'}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js
new file mode 100755
index 0000000..e4bd208
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('a11yHelp',function(a){var b=a.lang.accessibilityHelp,c=CKEDITOR.tools.getNextId(),d={8:'BACKSPACE',9:'TAB',13:'ENTER',16:'SHIFT',17:'CTRL',18:'ALT',19:'PAUSE',20:'CAPSLOCK',27:'ESCAPE',33:'PAGE UP',34:'PAGE DOWN',35:'END',36:'HOME',37:'LEFT ARROW',38:'UP ARROW',39:'RIGHT ARROW',40:'DOWN ARROW',45:'INSERT',46:'DELETE',91:'LEFT WINDOW KEY',92:'RIGHT WINDOW KEY',93:'SELECT KEY',96:'NUMPAD 0',97:'NUMPAD 1',98:'NUMPAD 2',99:'NUMPAD 3',100:'NUMPAD 4',101:'NUMPAD 5',102:'NUMPAD 6',103:'NUMPAD 7',104:'NUMPAD 8',105:'NUMPAD 9',106:'MULTIPLY',107:'ADD',109:'SUBTRACT',110:'DECIMAL POINT',111:'DIVIDE',112:'F1',113:'F2',114:'F3',115:'F4',116:'F5',117:'F6',118:'F7',119:'F8',120:'F9',121:'F10',122:'F11',123:'F12',144:'NUM LOCK',145:'SCROLL LOCK',186:'SEMI-COLON',187:'EQUAL SIGN',188:'COMMA',189:'DASH',190:'PERIOD',191:'FORWARD SLASH',192:'GRAVE ACCENT',219:'OPEN BRACKET',220:'BACK SLASH',221:'CLOSE BRAKET',222:'SINGLE QUOTE'};d[CKEDITOR.ALT]='ALT';d[CKEDITOR.SHIFT]='SHIFT';d[CKEDITOR.CTRL]='CTRL';var e=[CKEDITOR.ALT,CKEDITOR.SHIFT,CKEDITOR.CTRL];function f(j){var k,l,m=[];for(var n=0;n<e.length;n++){l=e[n];k=j/e[n];if(k>1&&k<=2){j-=l;m.push(d[l]);}}m.push(d[j]||String.fromCharCode(j));return m.join('+');};var g=/\$\{(.*?)\}/g;function h(j,k){var l=a.config.keystrokes,m,n=l.length;for(var o=0;o<n;o++){m=l[o];if(m[1]==k)break;}return f(m[0]);};function i(){var j='<div class="cke_accessibility_legend" role="document" aria-labelledby="'+c+'_arialbl" tabIndex="-1">%1</div>'+'<span id="'+c+'_arialbl" class="cke_voice_label">'+b.contents+' </span>',k='<h1>%1</h1><dl>%2</dl>',l='<dt>%1</dt><dd>%2</dd>',m=[],n=b.legend,o=n.length;for(var p=0;p<o;p++){var q=n[p],r=[],s=q.items,t=s.length;for(var u=0;u<t;u++){var v=s[u],w;w=l.replace('%1',v.name).replace('%2',v.legend.replace(g,h));r.push(w);}m.push(k.replace('%1',q.name).replace('%2',r.join('')));}return j.replace('%1',m.join(''));};return{title:b.title,minWidth:600,minHeight:400,contents:[{id:'info',label:a.lang.common.generalTab,expand:true,elements:[{type:'html',id:'legends',style:'white-space:normal;',focus:function(){},html:i()+'<style type="text/css">'+'.cke_accessibility_legend'+'{'+'width:600px;'+'height:400px;'+'padding-right:5px;'+'overflow-y:auto;'+'overflow-x:hidden;'+'}'+'.cke_browser_quirks .cke_accessibility_legend,'+'.cke_browser_ie6 .cke_accessibility_legend'+'{'+'height:390px'+'}'+'.cke_accessibility_legend *'+'{'+'white-space:normal;'+'}'+'.cke_accessibility_legend h1'+'{'+'font-size: 20px;'+'border-bottom: 1px solid #AAA;'+'margin: 5px 0px 15px;'+'}'+'.cke_accessibility_legend dl'+'{'+'margin-left: 5px;'+'}'+'.cke_accessibility_legend dt'+'{'+'font-size: 13px;'+'font-weight: bold;'+'}'+'.cke_accessibility_legend dd'+'{'+'margin:10px'+'}'+'</style>'}]}],buttons:[CKEDITOR.dialog.cancelButton]};
+});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt
new file mode 100755
index 0000000..7a490f9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt
@@ -0,0 +1,25 @@
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+
+cs.js Found: 30 Missing: 0
+cy.js Found: 30 Missing: 0
+da.js Found: 12 Missing: 18
+de.js Found: 30 Missing: 0
+el.js Found: 25 Missing: 5
+eo.js Found: 30 Missing: 0
+fa.js Found: 30 Missing: 0
+fi.js Found: 30 Missing: 0
+fr.js Found: 30 Missing: 0
+gu.js Found: 12 Missing: 18
+he.js Found: 30 Missing: 0
+it.js Found: 30 Missing: 0
+mk.js Found: 5 Missing: 25
+nb.js Found: 30 Missing: 0
+nl.js Found: 30 Missing: 0
+no.js Found: 30 Missing: 0
+pt-br.js Found: 30 Missing: 0
+ro.js Found: 6 Missing: 24
+tr.js Found: 30 Missing: 0
+ug.js Found: 27 Missing: 3
+vi.js Found: 6 Missing: 24
+zh-cn.js Found: 30 Missing: 0
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/cs.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/cs.js
new file mode 100755
index 0000000..a8de6d6
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/cs.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','cs',{accessibilityHelp:{title:'Instrukce pro přístupnost',contents:'Obsah nápovědy. Pro uzavření tohoto dialogu stiskněte klávesu ESC.',legend:[{name:'Obecné',items:[{name:'Panel nástrojů editoru',legend:'Stiskněte${toolbarFocus} k procházení panelu nástrojů. Přejděte na další a předchozí skupiny pomocí TAB a SHIFT-TAB. Přechod na další a předchozí tlačítko panelu nástrojů je pomocí ŠIPKA VPRAVO nebo ŠIPKA VLEVO. Stisknutím mezerníku nebo klávesy ENTER tlačítko aktivujete.'},{name:'Dialogové okno editoru',legend:'Uvnitř dialogového okna stiskněte TAB pro přesunutí na další pole, stiskněte SHIFT + TAB pro přesun na předchozí pole, stiskněte ENTER pro odeslání dialogu, stiskněte ESC pro jeho zrušení. Pro dialogová okna, která mají mnoho karet stiskněte ALT + F10 pr oprocházení seznamu karet. Pak se přesuňte na další kartu pomocí TAB nebo ŠIPKA VPRAVO. Pro přesun na předchozí stiskněte SHIFT + TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání stránky karet.'},{name:'Kontextové menu editoru',legend:'Stiskněte ${contextMenu} nebo klávesu APPLICATION k otevření kontextového menu. Pak se přesuňte na další možnost menu pomocí TAB nebo ŠIPKY DOLŮ. Přesuňte se na předchozí možnost pomocí SHIFT+TAB nebo ŠIPKY NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti menu. Podmenu současné možnosti otevřete pomocí MEZERNÍKU nebo ENTER či ŠIPKY DOLEVA. Kontextové menu uzavřete stiskem ESC.'},{name:'Rámeček seznamu editoru',legend:'Uvnitř rámečku seznamu se přesunete na další položku menu pomocí TAB nebo ŠIPKA DOLŮ. Na předchozí položku se přesunete SHIFT + TAB nebo ŠIPKA NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti seznamu. Stiskněte ESC pro uzavření seznamu.'},{name:'Lišta cesty prvku v editoru',legend:'Stiskněte ${elementsPathFocus} pro procházení lišty cesty prvku. Na další tlačítko prvku se přesunete pomocí TAB nebo ŠIPKA VPRAVO. Na předchozí položku se přesunete pomocí SHIFT + TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání prvku v editoru.'}]},{name:'Příkazy',items:[{name:' Příkaz Zpět',legend:'Stiskněte ${undo}'},{name:' Příkaz Znovu',legend:'Stiskněte ${redo}'},{name:' Příkaz Tučné',legend:'Stiskněte ${bold}'},{name:' Příkaz Kurzíva',legend:'Stiskněte ${italic}'},{name:' Příkaz Podtržení',legend:'Stiskněte ${underline}'},{name:' Příkaz Odkaz',legend:'Stiskněte ${link}'},{name:' Příkaz Skrýt panel nástrojů',legend:'Stiskněte ${toolbarCollapse}'},{name:' Nápověda přístupnosti',legend:'Stiskněte ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/cy.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/cy.js
new file mode 100755
index 0000000..ffc4bc5
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/cy.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','cy',{accessibilityHelp:{title:'Canllawiau Hygyrchedd',contents:'Cynnwys Cymorth. I gau y deialog hwn, pwyswch ESC.',legend:[{name:'Cyffredinol',items:[{name:'Bar Offer y Golygydd',legend:"Pwyswch $ {toolbarFocus} i fynd at y bar offer. Symudwch i'r grŵp bar offer nesaf a blaenorol gyda TAB a SHIFT-TAB. Symudwch i'r botwm bar offer nesaf a blaenorol gyda SAETH DDE neu SAETH CHWITH. Pwyswch SPACE neu ENTER i wneud botwm y bar offer yn weithredol."},{name:'Deialog y Golygydd',legend:"Tu mewn i'r deialog, pwyswch TAB i fynd i'r maes nesaf ar y deialog, pwyswch SHIFT + TAB i symud i faes blaenorol, pwyswch ENTER i gyflwyno'r deialog, pwyswch ESC i ddiddymu'r deialog. Ar gyfer deialogau sydd â thudalennau aml-tab, pwyswch ALT + F10 i lywio'r tab-restr. Yna symudwch i'r tab nesaf gyda TAB neu SAETH DDE. Symudwch i dab blaenorol gyda SHIFT + TAB neu'r SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis y dudalen tab."},{name:'Dewislen Cyd-destun y Golygydd',legend:"Pwyswch $ {contextMenu} neu'r ALLWEDD 'APPLICATION' i agor y ddewislen cyd-destun. Yna symudwch i'r opsiwn ddewislen nesaf gyda'r TAB neu'r SAETH I LAWR. Symudwch i'r opsiwn blaenorol gyda SHIFT + TAB neu'r SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn ddewislen. Agorwch is-dewislen yr opsiwn cyfredol gyda SPACE neu ENTER neu SAETH DDE. Ewch yn ôl i'r eitem ar y ddewislen uwch gydag ESC neu SAETH CHWITH. Ceuwch y ddewislen cyd-destun gydag ESC."},{name:'Blwch Rhestr y Golygydd',legend:"Tu mewn rhestr-bocs, ewch i'r eitem rhestr nesaf gyda TAB neu'r SAETH I LAWR. Symudwch i restr eitem flaenorol gyda SHIFT + TAB neu SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn o'r rhestr. Pwyswch ESC i gau'r rhestr."},{name:'Bar Llwybr Elfen y Golygydd',legend:"Pwyswch $ {elementsPathFocus} i fynd i'r elfennau llwybr bar. Symudwch i fotwm yr elfen nesaf gyda TAB neu SAETH DDE. Symudwch i fotwm blaenorol gyda SHIFT + TAB neu SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis yr elfen yn y golygydd."}]},{name:'Gorchmynion',items:[{name:'Gorchymyn dadwneud',legend:'Pwyswch ${undo}'},{name:'Gorchymyn ailadrodd',legend:'Pwyswch ${redo}'},{name:'Gorchymyn Bras',legend:'Pwyswch ${bold}'},{name:'Gorchymyn italig',legend:'Pwyswch ${italig}'},{name:'Gorchymyn tanlinellu',legend:'Pwyso ${underline}'},{name:'Gorchymyn dolen',legend:'Pwyswch ${link}'},{name:"Gorchymyn Cwympo'r Dewislen",legend:'Pwyswch ${toolbarCollapse}'},{name:'Cymorth Hygyrchedd',legend:'Pwyswch ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/da.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/da.js
new file mode 100755
index 0000000..0fca0cf
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/da.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','da',{accessibilityHelp:{title:'Tilgængelighedsinstrukser',contents:'Help Contents. To close this dialog press ESC.',legend:[{name:'Generelt',items:[{name:'Editor værktøjslinje',legend:'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.'},{name:'Editor Dialog',legend:'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.'},{name:'Editor Context Menu',legend:'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.'},{name:'Editor List Box',legend:'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'Editor Element Path Bar',legend:'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.'}]},{name:'Kommandoer',items:[{name:'Fortryd kommando',legend:'Klik på ${undo}'},{name:'Gentag kommando',legend:'Klik ${redo}'},{name:' Bold command',legend:'Klik ${bold}'},{name:' Italic command',legend:'Press ${italic}'},{name:' Underline command',legend:'Klik ${underline}'},{name:' Link command',legend:'Klik ${link}'},{name:' Toolbar Collapse command',legend:'Press ${toolbarCollapse}'},{name:' Accessibility Help',legend:'Kilk ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/de.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/de.js
new file mode 100755
index 0000000..9a648bd
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/de.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','de',{accessibilityHelp:{title:'Barrierefreiheitinformationen',contents:"Hilfeinhalt. Um den Dialog zu schliessen die Taste 'ESC' drücken.",legend:[{name:'Allgemein',items:[{name:'Editor Symbolleiste',legend:'Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT-TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren.'},{name:'Editor Dialog',legend:'Innerhalb des Dialogs drücken Sie TAB um zum nächsten Dialogfeld zu gelangen, drücken Sie SHIFT-TAG um zum vorherigen Feld zu wechseln, drücken Sie ENTER um den Dialog abzusenden und ESC um den Dialog zu abzubrechen. Um zwischen den Reitern innerhalb eines Dialogs zu wechseln drücken sie ALT-F10. Um zum nächsten Reiter zu gelangen können Sie TAB oder die rechte Pfeiltaste. Zurück gelangt man mit SHIFT-TAB oder der linken Pfeiltaste. Mit der Leertaste oder Enter kann man den Reiter auswählen.'},{name:'Editor Kontextmenü',legend:'Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste.'},{name:'Editor Listen',legend:'Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der Shift-TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs.'},{name:'Editor Elementpfadleiste',legend:'Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT-TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen.'}]},{name:'Befehle',items:[{name:'Wiederholen Befehl',legend:'Drücken Sie ${undo}'},{name:'Rückgängig Befehl',legend:'Drücken Sie ${redo}'},{name:'Fettschrift Befehl',legend:'Drücken Sie ${bold}'},{name:'Italic Befehl',legend:'Drücken Sie ${italic}'},{name:'Unterstreichung Befehl',legend:'Drücken Sie ${underline}'},{name:'Link Befehl',legend:'Drücken Sie ${link}'},{name:'Symbolleiste zuammenklappen Befehl',legend:'Drücken Sie ${toolbarCollapse}'},{name:'Eingabehilfen',legend:'Drücken Sie ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/el.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/el.js
new file mode 100755
index 0000000..acbde00
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/el.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','el',{accessibilityHelp:{title:'Οδηγίες Προσβασιμότητας',contents:'Περιεχόμενα Βοήθειας. Πατήστε ESC για κλείσιμο.',legend:[{name:'Γενικά',items:[{name:'Εργαλειοθήκη Επεξεργαστή',legend:'Πατήστε ${toolbarFocus} για να περιηγηθείτε στην γραμμή εργαλείων. Μετακινηθείτε ανάμεσα στις ομάδες της γραμμής εργαλείων με TAB και Shift-TAB. Μετακινηθείτε ανάμεσα στα κουμπία εργαλείων με ΔΕΞΙ και ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΚΕΝΟ ή ENTER για να ενεργοποιήσετε το ενεργό κουμπί εργαλείου.'},{name:'Παράθυρο Διαλόγου Επεξεργαστή',legend:'Μέσα σε ένα παράθυρο διαλόγου, πατήστε TAB για να μεταβείτε στο επόμενο πεδίο ή SHIFT + TAB για να μεταβείτε στο προηγούμενο. Πατήστε ENTER για να υποβάλετε την φόρμα. Πατήστε ESC για να ακυρώσετε την διαδικασία της φόρμας. Για παράθυρα διαλόγων που έχουν πολλές σελίδες σε καρτέλες πατήστε ALT + F10 για να μεταβείτε στην λίστα των καρτέλων. Στην συνέχεια μπορείτε να μεταβείτε στην επόμενη καρτέλα πατώντας TAB ή RIGHT ARROW. Μπορείτε να μεταβείτε στην προηγούμενη καρτέλα πατώντας SHIFT + TAB ή LEFT ARROW. Πατήστε SPACE ή ENTER για να επιλέξετε την καρτέλα για προβολή.'},{name:'Αναδυόμενο Μενού Επεξεργαστή',legend:'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.'},{name:'Editor List Box',legend:'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'Editor Element Path Bar',legend:'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.'}]},{name:'Εντολές',items:[{name:' Εντολή αναίρεσης',legend:'Πατήστε ${undo}'},{name:' Εντολή επανάληψης',legend:'Πατήστε ${redo}'},{name:' Εντολή έντονης γραφής',legend:'Πατήστε ${bold}'},{name:' Εντολή πλάγιας γραφής',legend:'Πατήστε ${italic}'},{name:' Εντολή υπογράμμισης',legend:'Πατήστε ${underline}'},{name:' Εντολή συνδέσμου',legend:'Πατήστε ${link}'},{name:' Εντολή Σύμπτηξης Εργαλειοθήκης',legend:'Πατήστε ${toolbarCollapse}'},{name:' Βοήθεια Προσβασιμότητας',legend:'Πατήστε ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/en.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/en.js
new file mode 100755
index 0000000..073f43a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/en.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','en',{accessibilityHelp:{title:'Accessibility Instructions',contents:'Help Contents. To close this dialog press ESC.',legend:[{name:'General',items:[{name:'Editor Toolbar',legend:'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.'},{name:'Editor Dialog',legend:'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.'},{name:'Editor Context Menu',legend:'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.'},{name:'Editor List Box',legend:'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'Editor Element Path Bar',legend:'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.'}]},{name:'Commands',items:[{name:' Undo command',legend:'Press ${undo}'},{name:' Redo command',legend:'Press ${redo}'},{name:' Bold command',legend:'Press ${bold}'},{name:' Italic command',legend:'Press ${italic}'},{name:' Underline command',legend:'Press ${underline}'},{name:' Link command',legend:'Press ${link}'},{name:' Toolbar Collapse command',legend:'Press ${toolbarCollapse}'},{name:' Accessibility Help',legend:'Press ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/eo.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/eo.js
new file mode 100755
index 0000000..af45796
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/eo.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','eo',{accessibilityHelp:{title:'Uzindikoj pri atingeblo',contents:'Helpilenhavo. Por fermi tiun dialogon, premu la ESKAPAN klavon.',legend:[{name:'Ĝeneralaĵoj',items:[{name:'Ilbreto de la redaktilo',legend:'Premu ${toolbarFocus} por atingi la ilbreton. Moviĝu al la sekva aŭ antaŭa grupoj de la ilbreto per la klavoj TABA kaj MAJUSKLIGA-TABA. Moviĝu al la sekva aŭ antaŭa butonoj de la ilbreto per la klavoj SAGO DEKSTREN kaj SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por aktivigi la ilbretbutonon.'},{name:'Redaktildialogo',legend:'En dialogo, premu la TABAN klavon por navigi al la sekva dialogkampo, premu la MAJUSKLIGAN + TABAN klavojn por reveni al la antaŭa kampo, premu la ENENklavon por sendi la dialogon, premu la ESKAPAN klavon por nuligi la dialogon. Por dialogoj kun pluraj retpaĝoj sub langetoj, premu ALT + F10 por navigi al la langetlisto. Poste moviĝu al la sekva langeto per la klavo TABA aŭ SAGO DEKSTREN. Moviĝu al la antaŭa langeto per la klavoj MAJUSKLIGA + TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por selekti la langetretpaĝon.'},{name:'Kunteksta menuo de la redaktilo',legend:'Premu ${contextMenu} aŭ entajpu la KLAVKOMBINAĴON por malfermi la kuntekstan menuon. Poste moviĝu al la sekva opcio de la menuo per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa opcio per la klavoj MAJUSKLGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la menuopcion. Malfermu la submenuon de la kuranta opcio per la SPACETklavo aŭ la ENENklavo aŭ la SAGO DEKSTREN. Revenu al la elemento de la patra menuo per la klavoj ESKAPA aŭ SAGO MALDEKSTREN. Fermu la kuntekstan menuon per la ESKAPA klavo.'},{name:'Fallisto de la redaktilo',legend:'En fallisto, moviĝu al la sekva listelemento per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa listelemento per la klavoj MAJUSKLIGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la opcion en la listo. Premu la ESKAPAN klavon por fermi la falmenuon.'},{name:'Breto indikanta la vojon al la redaktilelementoj',legend:'Premu ${elementsPathFocus} por navigi al la breto indikanta la vojon al la redaktilelementoj. Moviĝu al la butono de la sekva elemento per la klavoj TABA aŭ SAGO DEKSTREN. Moviĝu al la butono de la antaŭa elemento per la klavoj MAJUSKLIGA + TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ ENENklavon por selekti la elementon en la redaktilo.'}]},{name:'Komandoj',items:[{name:'Komando malfari',legend:'Premu ${undo}'},{name:'Komando refari',legend:'Premu ${redo}'},{name:'Komando grasa',legend:'Premu ${bold}'},{name:'Komando kursiva',legend:'Premu ${italic}'},{name:'Komando substreki',legend:'Premu ${underline}'},{name:'Komando ligilo',legend:'Premu ${link}'},{name:'Komando faldi la ilbreton',legend:'Premu ${toolbarCollapse}'},{name:'Helpilo pri atingeblo',legend:'Premu ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/fa.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/fa.js
new file mode 100755
index 0000000..61bb10c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/fa.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','fa',{accessibilityHelp:{title:'دستورالعملهای دسترسی',contents:'راهنمای فهرست مطالب. برای بستن این کادر محاورهای ESC را فشار دهید.',legend:[{name:'عمومی',items:[{name:'نوار ابزار ویرایشگر',legend:'${toolbarFocus} را برای باز کردن نوار ابزار بفشارید. با کلید Tab و Shif-Tab در مجموعه نوار ابزار بعدی و قبلی حرکت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهتنمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید.'},{name:'پنجره محاورهای ویرایشگر',legend:'در داخل یک پنجره محاورهای، کلید Tab را بفشارید تا به پنجرهی بعدی بروید، Shift+Tab برای حرکت به فیلد قبلی، فشردن Enter برای ثبت اطلاعات پنجره، فشردن Esc برای لغو پنجره محاورهای و برای پنجرههایی که چندین برگه دارند، فشردن Alt+F10 جهت رفتن به Tab-List. در نهایت حرکت به برگه بعدی با Tab یا کلید جهتنمای راست. حرکت به برگه قبلی با Shift+Tab یا کلید جهتنمای چپ. فشردن Space یا Enter برای انتخاب یک برگه.'},{name:'منوی متنی ویرایشگر',legend:'${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc.'},{name:'جعبه فهرست ویرایشگر',legend:'در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید.'},{name:'ویرایشگر عنصر نوار راه',legend:'برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا کلید جهتنمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهتنمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر.'}]},{name:'فرمانها',items:[{name:'بازگشت فرمان',legend:'فشردن ${undo}'},{name:'انجام مجدد فرمان',legend:'فشردن ${redo}'},{name:'فرمان متن درشت',legend:'فشردن ${bold}'},{name:'فرمان متن کج',legend:'فشردن ${italic}'},{name:'فرمان متن زیرخطدار',legend:'فشردن ${underline}'},{name:'فرمان پیوند',legend:'فشردن ${link}'},{name:'بستن نوار ابزار فرمان',legend:'فشردن ${toolbarCollapse}'},{name:'راهنمای دسترسی',legend:'فشردن ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/fi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/fi.js
new file mode 100755
index 0000000..af5f894
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/fi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','fi',{accessibilityHelp:{title:'Saavutettavuus ohjeet',contents:'Ohjeen sisällöt. Sulkeaksesi tämän dialogin paina ESC.',legend:[{name:'Yleinen',items:[{name:'Editorin työkalupalkki',legend:'Paina ${toolbarFocus} siirtyäksesi työkalupalkkiin. Siirry seuraavaan ja edelliseen työkalupalkin ryhmään TAB ja SHIFT-TAB näppäimillä. Siirry seuraavaan ja edelliseen työkalupainikkeeseen käyttämällä NUOLI OIKEALLE tai NUOLI VASEMMALLE näppäimillä. Paina VÄLILYÖNTI tai ENTER näppäintä aktivoidaksesi työkalupainikkeen.'},{name:'Editorin dialogi',legend:'Dialogin sisällä, painamalla TAB siirryt seuraavaan dialogin kenttään, painamalla SHIFT+TAB siirryt aiempaan kenttään, painamalla ENTER lähetät dialogin, painamalla ESC peruutat dialogin. Dialogeille joissa on useita välilehtiä, paina ALT+F10 siirtyäksesi välillehtilistaan. Siirtyäksesi seuraavaan välilehteen paina TAB tai NUOLI OIKEALLE. Siirry edelliseen välilehteen painamalla SHIFT+TAB tai nuoli vasemmalle. Paina VÄLILYÖNTI tai ENTER valitaksesi välilehden.'},{name:'Editorin oheisvalikko',legend:'Paina ${contextMenu} tai SOVELLUSPAINIKETTA avataksesi oheisvalikon. Liiku seuraavaan valikon vaihtoehtoon TAB tai NUOLI ALAS näppäimillä. Siirry edelliseen vaihtoehtoon SHIFT+TAB tai NUOLI YLÖS näppäimillä. Paina VÄLILYÖNTI tai ENTER valitaksesi valikon kohdan. Avataksesi nykyisen kohdan alivalikon paina VÄLILYÖNTI tai ENTER tai NUOLI OIKEALLE painiketta. Siirtyäksesi takaisin valikon ylemmälle tasolle paina ESC tai NUOLI vasemmalle. Oheisvalikko suljetaan ESC painikkeella.'},{name:'Editorin listalaatikko',legend:'Listalaatikon sisällä siirry seuraavaan listan kohtaan TAB tai NUOLI ALAS painikkeilla. Siirry edelliseen listan kohtaan SHIFT+TAB tai NUOLI YLÖS painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi listan vaihtoehdon. Paina ESC sulkeaksesi listalaatikon.'},{name:'Editorin elementtipolun palkki',legend:'Paina ${elementsPathFocus} siirtyäksesi elementtipolun palkkiin. Siirry seuraavaan elementtipainikkeeseen TAB tai NUOLI OIKEALLE painikkeilla. Siirry aiempaan painikkeeseen SHIFT+TAB tai NUOLI VASEMMALLE painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi elementin editorissa.'}]},{name:'Komennot',items:[{name:'Peruuta komento',legend:'Paina ${undo}'},{name:'Tee uudelleen komento',legend:'Paina ${redo}'},{name:'Lihavoi komento',legend:'Paina ${bold}'},{name:'Kursivoi komento',legend:'Paina ${italic}'},{name:'Alleviivaa komento',legend:'Paina ${underline}'},{name:'Linkki komento',legend:'Paina ${link}'},{name:'Pienennä työkalupalkki komento',legend:'Paina ${toolbarCollapse}'},{name:'Saavutettavuus ohjeet',legend:'Paina ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/fr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/fr.js
new file mode 100755
index 0000000..e2f20a0
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/fr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','fr',{accessibilityHelp:{title:"Instructions pour l'accessibilité",contents:"Contenu de l'aide. Pour fermer ce dialogue, appuyez sur la touche ESC (Echappement).",legend:[{name:'Général',items:[{name:"Barre d'outils de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches TAB et SHIFT-TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour activer le bouton de barre d'outils."},{name:'Dialogue de léditeur',legend:"A l'intérieur d'un dialogue, appuyer sur la touche TAB pour naviguer jusqu'au champ de dalogue suivant, appuyez sur les touches SHIFT + TAB pour revenir au champ précédent, appuyez sur la touche ENTRER pour soumettre le dialogue, appuyer sur la touche ESC pour annuler le dialogue. Pour les dialogues avec plusieurs pages d'onglets, appuyer sur ALT + F10 pour naviguer jusqu'à la liste des onglets. Puis se déplacer vers l'onglet suivant avec la touche TAB ou FLECHE DROITE. Se déplacer vers l'onglet précédent avec les touches SHIFT + TAB ou FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour sélectionner la page de l'onglet."},{name:"Menu contextuel de l'éditeur",legend:"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTREE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l'élément de menu parent avec les touches ESC ou FLECHE GAUCHE. Fermer le menu contextuel avec ESC."},{name:"Zone de liste en menu déroulant de l'éditeur",legend:"A l'intérieur d'une liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches SHIFT + TAB ou FLECHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant."},{name:"Barre d'emplacement des éléments de léditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de léditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches SHIFT+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'élément dans l'éditeur."}]},{name:'Commandes',items:[{name:' Commande défaire',legend:'Appuyer sur ${undo}'},{name:' Commande refaire',legend:'Appuyer sur ${redo}'},{name:' Commande gras',legend:'Appuyer sur ${bold}'},{name:' Commande italique',legend:'Appuyer sur ${italic}'},{name:' Commande souligné',legend:'Appuyer sur ${underline}'},{name:' Commande lien',legend:'Appuyer sur ${link}'},{name:" Commande enrouler la barre d'outils",legend:'Appuyer sur ${toolbarCollapse}'},{name:' Aide Accessibilité',legend:'Appuyer sur ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/gu.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/gu.js
new file mode 100755
index 0000000..ae09189
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/gu.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','gu',{accessibilityHelp:{title:'એક્ક્ષેબિલિટી ની વિગતો',contents:'હેલ્પ. આ બંધ કરવા ESC દબાવો.',legend:[{name:'જનરલ',items:[{name:'એડિટર ટૂલબાર',legend:'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.'},{name:'એડિટર ડાયલોગ',legend:'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.'},{name:'Editor Context Menu',legend:'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.'},{name:'Editor List Box',legend:'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'Editor Element Path Bar',legend:'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.'}]},{name:'કમાંડસ',items:[{name:'અન્ડું કમાંડ',legend:'$ દબાવો {undo}'},{name:'ફરી કરો કમાંડ',legend:'$ દબાવો {redo}'},{name:'બોલ્દનો કમાંડ',legend:'$ દબાવો {bold}'},{name:' Italic command',legend:'Press ${italic}'},{name:' Underline command',legend:'Press ${underline}'},{name:' Link command',legend:'Press ${link}'},{name:' Toolbar Collapse command',legend:'Press ${toolbarCollapse}'},{name:' Accessibility Help',legend:'Press ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/he.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/he.js
new file mode 100755
index 0000000..5d93805
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/he.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','he',{accessibilityHelp:{title:'הוראות נגישות',contents:'הוראות נגישות. לסגירה לחץ אסקייפ (ESC).',legend:[{name:'כללי',items:[{name:'סרגל הכלים',legend:'לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר.'},{name:'דיאלוגים (חלונות תשאול)',legend:'בתוך דיאלוג, לחץ טאב (TAB) כדי לנווט לשדה הבא, לחץ שיפט (SHIFT) + טאב (TAB) כדי לנווט לשדה הקודם, לחץ אנטר (ENTER) כדי לשלוח את הדיאלוג, לחץ אסקייפ (ESC) כדי לבטל. בתוך דיאלוגים בעלי מספר טאבים (לשוניות), לחץ אלט (ALT) + F10 כדי לנווט לשורת הטאבים. נווט לטאב הבא עם טאב (TAB) או חץ שמאלי. עבור לטאב הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי להיכנס לטאב.'},{name:'תפריט ההקשר (Context Menu)',legend:'לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. סגור את תפריט ההקשר עם אסקייפ (ESC).'},{name:'תפריטים צפים (List boxes)',legend:'בתוך תפריט צף, עבור לפריט הבא עם טאב (TAB) או חץ למטה. עבור לתפריט הקודם עם שיפט (SHIFT) + טאב (TAB) or חץ עליון. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'עץ אלמנטים (Elements Path)',legend:'לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. עבור לפריט הבא עם טאב (TAB) או חץ ימני. עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך.'}]},{name:'פקודות',items:[{name:' ביטול צעד אחרון',legend:'לחץ ${undo}'},{name:' חזרה על צעד אחרון',legend:'לחץ ${redo}'},{name:' הדגשה',legend:'לחץ ${bold}'},{name:' הטייה',legend:'לחץ ${italic}'},{name:' הוספת קו תחתון',legend:'לחץ ${underline}'},{name:' הוספת לינק',legend:'לחץ ${link}'},{name:' כיווץ סרגל הכלים',legend:'לחץ ${toolbarCollapse}'},{name:' הוראות נגישות',legend:'לחץ ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/it.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/it.js
new file mode 100755
index 0000000..07e6f47
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/it.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','it',{accessibilityHelp:{title:'Istruzioni di Accessibilità',contents:'Contenuti di Aiuto. Per chiudere questa finestra premi ESC.',legend:[{name:'Generale',items:[{name:'Barra degli strumenti Editor',legend:'Premi ${toolbarFocus} per navigare fino alla barra degli strumenti. Muoviti tra i gruppi della barra degli strumenti con i tasti Tab e Maiusc-Tab. Spostati tra il successivo ed il precedente pulsante della barra degli strumenti usando le frecce direzionali Destra e Sinistra. Premi Spazio o Invio per attivare il pulsante della barra degli strumenti.'},{name:'Finestra Editor',legend:"All'interno di una finestra di dialogo, premi Tab per navigare fino al campo successivo della finestra di dialogo, premi Maiusc-Tab per tornare al campo precedente, premi Invio per inviare la finestra di dialogo, premi Esc per uscire. Per le finestre che hanno schede multiple, premi Alt+F10 per navigare nella lista delle schede. Quindi spostati alla scheda successiva con il tasto Tab oppure con la Freccia Destra. Torna alla scheda precedente con Maiusc+Tab oppure con la Freccia Sinistra. Premi Spazio o Invio per scegliere la scheda."},{name:'Menù contestuale Editor',legend:"Premi ${contextMenu} o TASTO APPLICAZIONE per aprire il menu contestuale. Dunque muoviti all'opzione successiva del menu con il tasto TAB o con la Freccia Sotto. Muoviti all'opzione precedente con MAIUSC+TAB o con Freccia Sopra. Premi SPAZIO o INVIO per scegliere l'opzione di menu. Apri il sottomenu dell'opzione corrente con SPAZIO o INVIO oppure con la Freccia Destra. Torna indietro al menu superiore con ESC oppure Freccia Sinistra. Chiudi il menu contestuale con ESC."},{name:'Box Lista Editor',legend:"Dentro un box-lista, muoviti al prossimo elemento della lista con TAB o con la Freccia direzionale giù. Spostati all'elemento precedente con MAIUSC+TAB oppure con Freccia direzionale sopra. Premi SPAZIO o INVIO per scegliere l'opzione della lista. Premi ESC per chiudere il box-lista."},{name:'Barra percorso elementi editor',legend:"Premi ${elementsPathFocus} per navigare tra gli elementi della barra percorso. Muoviti al prossimo pulsante di elemento con TAB o la Freccia direzionale destra. Muoviti al pulsante precedente con MAIUSC+TAB o la Freccia Direzionale Sinistra. Premi SPAZIO o INVIO per scegliere l'elemento nell'editor."}]},{name:'Comandi',items:[{name:' Annulla comando',legend:'Premi ${undo}'},{name:' Ripeti comando',legend:'Premi ${redo}'},{name:' Comando Grassetto',legend:'Premi ${bold}'},{name:' Comando Corsivo',legend:'Premi ${italic}'},{name:' Comando Sottolineato',legend:'Premi ${underline}'},{name:' Comando Link',legend:'Premi ${link}'},{name:' Comando riduci barra degli strumenti',legend:'Premi ${toolbarCollapse}'},{name:' Aiuto Accessibilità',legend:'Premi ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/mk.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/mk.js
new file mode 100755
index 0000000..1629670
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/mk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','mk',{accessibilityHelp:{title:'Инструкции за пристапност',contents:'Содржина на делот за помош. За да го затворите овој дијалот притиснете ESC.',legend:[{name:'Општо',items:[{name:'Мени за едиторот',legend:'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.'},{name:'Дијалот за едиторот',legend:'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.'},{name:'Editor Context Menu',legend:'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.'},{name:'Editor List Box',legend:'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'Editor Element Path Bar',legend:'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.'}]},{name:'Commands',items:[{name:' Undo command',legend:'Press ${undo}'},{name:' Redo command',legend:'Press ${redo}'},{name:' Bold command',legend:'Press ${bold}'},{name:' Italic command',legend:'Press ${italic}'},{name:' Underline command',legend:'Press ${underline}'},{name:' Link command',legend:'Press ${link}'},{name:' Toolbar Collapse command',legend:'Press ${toolbarCollapse}'},{name:' Accessibility Help',legend:'Press ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/nb.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/nb.js
new file mode 100755
index 0000000..030962a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/nb.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','nb',{accessibilityHelp:{title:'Instruksjoner for tilgjengelighet',contents:'Innhold for hjelp. Trykk ESC for å lukke denne dialogen.',legend:[{name:'Generelt',items:[{name:'Verktøylinje for editor',legend:'Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT-TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen.'},{name:'Dialog for editor',legend:'Mens du er i en dialog, trykk TAB for å navigere til neste dialogfelt, press SHIFT + TAB for å flytte til forrige felt, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. For dialoger med flere faner, trykk ALT + F10 for å navigere til listen over faner. Gå til neste fane med TAB eller HØYRE PILTAST. Gå til forrige fane med SHIFT + TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge fanen.'},{name:'Kontekstmeny for editor',legend:'Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC.'},{name:'Listeboks for editor',legend:'I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT + TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen.'},{name:'Verktøylinje for elementsti',legend:'Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren.'}]},{name:'Kommandoer',items:[{name:'Angre',legend:'Trykk ${undo}'},{name:'Gjør om',legend:'Trykk ${redo}'},{name:'Fet tekst',legend:'Trykk ${bold}'},{name:'Kursiv tekst',legend:'Trykk ${italic}'},{name:'Understreking',legend:'Trykk ${underline}'},{name:'Link',legend:'Trykk ${link}'},{name:'Skjul verktøylinje',legend:'Trykk ${toolbarCollapse}'},{name:'Hjelp for tilgjengelighet',legend:'Trykk ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/nl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/nl.js
new file mode 100755
index 0000000..9dd8401
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/nl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','nl',{accessibilityHelp:{title:'Toegankelijkheidsinstructies',contents:'Help inhoud. Druk op ESC om dit dialoog te sluiten.',legend:[{name:'Algemeen',items:[{name:'Werkbalk tekstverwerker',legend:'Druk op ${toolbarFocus} om naar de werkbalk te navigeren. Om te schakelen naar de volgende en vorige werkbalkgroep, gebruik TAB en SHIFT+TAB. Om te schakelen naar de volgende en vorige werkbalkknop, gebruik de PIJL RECHTS en PIJL LINKS. Druk op SPATIE of ENTER om een werkbalkknop te activeren.'},{name:'Dialoog tekstverwerker',legend:'In een dialoogvenster, druk op TAB om te navigeren naar het volgende veld. Druk op SHIFT+TAB om naar het vorige veld te navigeren. Druk op ENTER om het dialoogvenster te verzenden. Druk op ESC om het dialoogvenster te sluiten. Voor dialoogvensters met meerdere tabbladen, druk op ALT+F10 om naar de tabset te navigeren. Schakel naar het volgende tabblad met TAB of PIJL RECHTS. Schakel naar het vorige tabblad met SHIFT+TAB of PIJL LINKS. Druk op SPATIE of ENTER om het tabblad te selecteren.'},{name:'Contextmenu tekstverwerker',legend:'Druk op ${contextMenu} of APPLICATION KEY om het contextmenu te openen. Schakel naar de volgende menuoptie met TAB of PIJL OMLAAG. Schakel naar de vorige menuoptie met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om een menuoptie te selecteren. Op een submenu van de huidige optie met SPATIE, ENTER of PIJL RECHTS. Ga terug naar de bovenliggende menuoptie met ESC of PIJL LINKS. Sluit het contextmenu met ESC.'},{name:'Keuzelijst tekstverwerker',legend:'In een keuzelijst, schakel naar het volgende item met TAB of PIJL OMLAAG. Schakel naar het vorige item met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om het item te selecteren. Druk op ESC om de keuzelijst te sluiten.'},{name:'Elementenpad werkbalk tekstverwerker',legend:'Druk op ${elementsPathFocus} om naar het elementenpad te navigeren. Om te schakelen naar het volgende element, gebruik TAB of PIJL RECHTS. Om te schakelen naar het vorige element, gebruik SHIFT+TAB or PIJL LINKS. Druk op SPATIE of ENTER om een element te selecteren in de tekstverwerker.'}]},{name:'Opdrachten',items:[{name:'Ongedaan maken opdracht',legend:'Druk op ${undo}'},{name:'Opnieuw uitvoeren opdracht',legend:'Druk op ${redo}'},{name:'Vetgedrukt opdracht',legend:'Druk up ${bold}'},{name:'Cursief opdracht',legend:'Druk op ${italic}'},{name:'Onderstrepen opdracht',legend:'Druk op ${underline}'},{name:'Link opdracht',legend:'Druk op ${link}'},{name:'Werkbalk inklappen opdracht',legend:'Druk op ${toolbarCollapse}'},{name:'Toegankelijkheidshulp',legend:'Druk op ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/no.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/no.js
new file mode 100755
index 0000000..6208999
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/no.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','no',{accessibilityHelp:{title:'Instruksjoner for tilgjengelighet',contents:'Innhold for hjelp. Trykk ESC for å lukke denne dialogen.',legend:[{name:'Generelt',items:[{name:'Verktøylinje for editor',legend:'Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT-TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen.'},{name:'Dialog for editor',legend:'Mens du er i en dialog, trykk TAB for å navigere til neste dialogfelt, press SHIFT + TAB for å flytte til forrige felt, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. For dialoger med flere faner, trykk ALT + F10 for å navigere til listen over faner. Gå til neste fane med TAB eller HØYRE PILTAST. Gå til forrige fane med SHIFT + TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge fanen.'},{name:'Kontekstmeny for editor',legend:'Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC.'},{name:'Listeboks for editor',legend:'I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT + TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen.'},{name:'Verktøylinje for elementsti',legend:'Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren.'}]},{name:'Kommandoer',items:[{name:'Angre',legend:'Trykk ${undo}'},{name:'Gjør om',legend:'Trykk ${redo}'},{name:'Fet tekst',legend:'Trykk ${bold}'},{name:'Kursiv tekst',legend:'Trykk ${italic}'},{name:'Understreking',legend:'Trykk ${underline}'},{name:'Link',legend:'Trykk ${link}'},{name:'Skjul verktøylinje',legend:'Trykk ${toolbarCollapse}'},{name:'Hjelp for tilgjengelighet',legend:'Trykk ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/pt-br.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/pt-br.js
new file mode 100755
index 0000000..8e6e28f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/pt-br.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','pt-br',{accessibilityHelp:{title:'Instruções de Acessibilidade',contents:'Conteúdo da Ajuda. Para fechar este diálogo pressione ESC.',legend:[{name:'Geral',items:[{name:'Barra de Ferramentas do Editor',legend:'Pressione ${toolbarFocus} para navegar para a barra de ferramentas. Mova para o anterior ou próximo grupo de ferramentas com TAB e SHIFT-TAB. Mova para o anterior ou próximo botão com SETA PARA DIREITA or SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas.'},{name:'Diálogo do Editor',legend:'Dentro de um diálogo, pressione TAB para navegar para o próximo campo, pressione SHIFT + TAB para mover para o campo anterior, pressione ENTER para enviar o diálogo, pressione ESC para cancelar o diálogo. Para diálogos que tem múltiplas abas, pressione ALT + F10 para navegar para a lista de abas, então mova para a próxima aba com SHIFT + TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar a aba.'},{name:'Menu de Contexto do Editor',legend:'Pressione ${contextMenu} ou TECLA DE MENU para abrir o menu de contexto, então mova para a próxima opção com TAB ou SETA PARA BAIXO. Mova para a anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO ou ENTER ou SETA PARA DIREITA. Volte para o menu pai com ESC ou SETA PARA ESQUERDA. Feche o menu de contexto com ESC.'},{name:'Caixa de Lista do Editor',legend:'Dentro de uma caixa de lista, mova para o próximo item com TAB ou SETA PARA BAIXO. Mova para o item anterior com SHIFT + TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar uma opção na lista. Pressione ESC para fechar a caixa de lista.'},{name:'Barra de Caminho do Elementos do Editor',legend:'Pressione ${elementsPathFocus} para a barra de caminho dos elementos. Mova para o próximo botão de elemento com TAB ou SETA PARA DIREITA. Mova para o botão anterior com SHIFT+TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor.'}]},{name:'Comandos',items:[{name:' Comando Desfazer',legend:'Pressione ${undo}'},{name:' Comando Refazer',legend:'Pressione ${redo}'},{name:' Comando Negrito',legend:'Pressione ${bold}'},{name:' Comando Itálico',legend:'Pressione ${italic}'},{name:' Comando Sublinhado',legend:'Pressione ${underline}'},{name:' Comando Link',legend:'Pressione ${link}'},{name:' Comando Fechar Barra de Ferramentas',legend:'Pressione ${toolbarCollapse}'},{name:' Ajuda de Acessibilidade',legend:'Pressione ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/ro.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/ro.js
new file mode 100755
index 0000000..c68e128
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/ro.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','ro',{accessibilityHelp:{title:'Instrucțiuni de accesibilitate',contents:'Cuprins. Pentru a închide acest dialog, apăsați tasta ESC.',legend:[{name:'General',items:[{name:'Editează bara.',legend:'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.'},{name:'Dialog editor',legend:'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.'},{name:'Editor meniu contextual',legend:'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.'},{name:'Editor List Box',legend:'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'Editor Element Path Bar',legend:'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.'}]},{name:'Commands',items:[{name:' Undo command',legend:'Press ${undo}'},{name:' Redo command',legend:'Press ${redo}'},{name:' Bold command',legend:'Press ${bold}'},{name:' Italic command',legend:'Press ${italic}'},{name:' Underline command',legend:'Press ${underline}'},{name:' Link command',legend:'Press ${link}'},{name:' Toolbar Collapse command',legend:'Press ${toolbarCollapse}'},{name:' Accessibility Help',legend:'Press ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/tr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/tr.js
new file mode 100755
index 0000000..a733888
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/tr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','tr',{accessibilityHelp:{title:'Erişilebilirlik Talimatları',contents:'Yardım içeriği. Bu pencereyi kapatmak için ESC tuşuna basın.',legend:[{name:'Genel',items:[{name:'Araç Çubuğu Editörü',legend:'Araç çubuğunda gezinmek için ${toolbarFocus} basın. TAB ve SHIFT-TAB ile önceki ve sonraki araç çubuğu grubuna taşıyın. SAĞ OK veya SOL OK ile önceki ve sonraki bir araç çubuğu düğmesini hareket ettirin. SPACE tuşuna basın veya araç çubuğu düğmesini etkinleştirmek için ENTER tuşna basın.'},{name:'Dialog Editörü',legend:'Dialog penceresi içinde, sonraki iletişim alanına gitmek için SEKME tuşuna basın, önceki alana geçmek için SHIFT + TAB tuşuna basın, pencereyi göndermek için ENTER tuşuna basın, dialog penceresini iptal etmek için ESC tuşuna basın. Birden çok sekme sayfaları olan diyalogların, sekme listesine gitmek için ALT + F10 tuşlarına basın. Sonra TAB veya SAĞ OK sonraki sekmeye taşıyın. SHIFT + TAB veya SOL OK ile önceki sekmeye geçin. Sekme sayfayı seçmek için SPACE veya ENTER tuşuna basın.'},{name:'İçerik Menü Editörü',legend:"İçerik menüsünü açmak için ${contextMenu} veya UYGULAMA TUŞU'na basın. Daha sonra SEKME veya AŞAĞI OK ile bir sonraki menü seçeneği taşıyın. SHIFT + TAB veya YUKARI OK ile önceki seçeneğe gider. Menü seçeneğini seçmek için SPACE veya ENTER tuşuna basın. Seçili seçeneğin alt menüsünü SPACE ya da ENTER veya SAĞ OK açın. Üst menü öğesini geçmek için ESC veya SOL OK ile geri dönün. ESC ile bağlam menüsünü kapatın."},{name:'Liste Kutusu Editörü',legend:'Liste kutusu içinde, bir sonraki liste öğesine SEKME VEYA AŞAĞI OK ile taşıyın. SHIFT + TAB veya YUKARI önceki liste öğesi taşıyın. Liste seçeneği seçmek için SPACE veya ENTER tuşuna basın. Liste kutusunu kapatmak için ESC tuşuna basın.'},{name:'Element Yol Çubuğu Editörü',legend:'Elementlerin yol çubuğunda gezinmek için ${ElementsPathFocus} basın. SEKME veya SAĞ OK ile sonraki element düğmesine taşıyın. SHIFT + TAB veya SOL OK önceki düğmeye hareket ettirin. Editör içindeki elementi seçmek için ENTER veya SPACE tuşuna basın.'}]},{name:'Komutlar',items:[{name:'Komutu geri al',legend:'${undo} basın'},{name:' Tekrar komutu uygula',legend:'${redo} basın'},{name:' Kalın komut',legend:'${bold} basın'},{name:' İtalik komutu',legend:'${italic} basın'},{name:' Alttan çizgi komutu',legend:'${underline} basın'},{name:' Bağlantı komutu',legend:'${link} basın'},{name:' Araç çubuğu Toplama komutu',legend:'${toolbarCollapse} basın'},{name:'Erişilebilirlik Yardımı',legend:'${a11yHelp} basın'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/ug.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/ug.js
new file mode 100755
index 0000000..e37e8d2
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/ug.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','ug',{accessibilityHelp:{title:'قوشۇمچە چۈشەندۈرۈش',contents:'ياردەم مەزمۇنى. بۇ سۆزلەشكۈنى ياپماقچى بولسىڭىز ESC نى بېسىڭ.',legend:[{name:'ئادەتتىكى',items:[{name:'قورال بالداق تەھرىر',legend:'${toolbarFocus} بېسىلسا قورال بالداققا يېتەكلەيدۇ، TAB ياكى SHIFT+TAB ئارقىلىق قورال بالداق گۇرۇپپىسى تاللىنىدۇ، ئوڭ سول يا ئوقتا توپچا تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تاللانغان توپچىنى قوللىنىدۇ.'},{name:'تەھرىرلىگۈچ سۆزلەشكۈسى',legend:'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.'},{name:'تەھرىرلىگۈچ تىل مۇھىت تىزىملىكى',legend:'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.'},{name:'تەھرىرلىگۈچ تىزىمى',legend:'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'تەھرىرلىگۈچ ئېلېمېنت يول بالداق',legend:'${elementsPathFocus} بېسىلسا ئېلېمېنت يول بالداققا يېتەكلەيدۇ، TAB ياكى ئوڭ يا ئوقتا كېيىنكى ئېلېمېنت تاللىنىدۇ، SHIFT+TAB ياكى سول يا ئوقتا ئالدىنقى ئېلېمېنت تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تەھرىرلىگۈچتىكى ئېلېمېنت تاللىنىدۇ.'}]},{name:'بۇيرۇق',items:[{name:'بۇيرۇقتىن يېنىۋال',legend:'${undo} نى بېسىڭ'},{name:'قايتىلاش بۇيرۇقى',legend:'${redo} نى بېسىڭ'},{name:'توملىتىش بۇيرۇقى',legend:'${bold} نى بېسىڭ'},{name:'يانتۇ بۇيرۇقى',legend:'${italic} نى بېسىڭ'},{name:'ئاستى سىزىق بۇيرۇقى',legend:'${underline} نى بېسىڭ'},{name:'ئۇلانما بۇيرۇقى',legend:'${link} نى بېسىڭ'},{name:'قورال بالداق قاتلاش بۇيرۇقى',legend:'${toolbarCollapse} نى بېسىڭ'},{name:'توسالغۇسىز لايىھە چۈشەندۈرۈشى',legend:'${a11yHelp} نى بېسىڭ'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/vi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/vi.js
new file mode 100755
index 0000000..94b3381
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/vi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','vi',{accessibilityHelp:{title:'Accessibility Instructions',contents:'Nội dung Hỗ trợ. Nhấn ESC để đóng hộp thoại.',legend:[{name:'Chung',items:[{name:'Thanh công cụ soạn th',legend:'Nhấn ${toolbarFocus} để điều hướng đến thanh công cụ. Nhấn TAB và SHIFT-TAB để chuyển đến nhóm thanh công cụ khác. Nhấn MŨI TÊN PHẢI hoặc MŨI TÊN TRÁI để chuyển sang nút khác trên thanh công cụ. Nhấn PHÍM CÁCH hoặc ENTER để kích hoạt nút trên thanh công c.'},{name:'Hộp thoại Biên t',legend:'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.'},{name:'Trình đơn Ngữ cảnh cBộ soạn thảo',legend:'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.'},{name:'Editor List Box',legend:'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'Editor Element Path Bar',legend:'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.'}]},{name:'Commands',items:[{name:' Undo command',legend:'Press ${undo}'},{name:' Redo command',legend:'Press ${redo}'},{name:' Bold command',legend:'Press ${bold}'},{name:' Italic command',legend:'Press ${italic}'},{name:' Underline command',legend:'Press ${underline}'},{name:' Link command',legend:'Press ${link}'},{name:' Toolbar Collapse command',legend:'Press ${toolbarCollapse}'},{name:' Accessibility Help',legend:'Press ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/zh-cn.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/zh-cn.js
new file mode 100755
index 0000000..29cec26
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/a11yhelp/lang/zh-cn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','zh-cn',{accessibilityHelp:{title:'辅助说明',contents:'帮助内容。要关闭此对话框请按 ESC 键。',legend:[{name:'常规',items:[{name:'编辑器工具栏',legend:'按 ${toolbarFocus} 以导航到工具栏,使用 TAB 键或 SHIFT+TAB 组合键以选择工具栏组,使用左右箭头键以选择按钮,按空格键或回车键以应用选中的按钮。'},{name:'编辑器对话框',legend:'在对话框内,TAB键移动到下一个字段,SHIFT + TAB 移动到上一个字段,ENTER键提交对话框,ESC键取消对话框。对于有多标签的对话框,用ALT + F10来移到标签列表。然后用TAB键或者向右箭头来移动到下一个标签;SHIFT + TAB或者向左箭头移动到上一个标签。用SPACE或者ENTER选择标签。'},{name:'编辑器上下文菜单',legend:'用 ${contextMenu}或者 应用程序键 打开上下文菜单。然后用TAB键或者向下箭头来移动到下一个菜单项;SHIFT + TAB或者向上箭头移动到上一个菜单项。用SPACE或者ENTER选择菜单项。用SPACE,ENTER或者向右箭头打开子菜单。返回菜单用ESC键或者向左箭头。用ESC关闭上下文菜单。'},{name:'编辑器列表框',legend:'在列表框中,移到下一列表项用TAB键或者向下箭头。移到上一列表项用SHIFT + TAB或者向上箭头,用SPACE或者ENTER选择列表项。用ESC收起列表框。'},{name:'编辑器元素路径栏',legend:'按 ${elementsPathFocus} 以导航到元素路径栏,使用 TAB 键或右箭头键选择下一个元素,使用 SHIFT+TAB 组合键或左箭头键选择上一个元素,按空格键或回车键以选定编辑器里的元素。'}]},{name:'命令',items:[{name:' 撤消命令',legend:'按 ${undo}'},{name:' 重做命令',legend:'按 ${redo}'},{name:' 加粗命令',legend:'按 ${bold}'},{name:' 倾斜命令',legend:'按 ${italic}'},{name:' 下划线命令',legend:'按 ${underline}'},{name:' 链接命令',legend:'按 ${link}'},{name:' 工具栏折叠命令',legend:'按 ${toolbarCollapse}'},{name:' 无障碍设计说明',legend:'按 ${a11yHelp}'}]}]}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/about/dialogs/about.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/about/dialogs/about.js
new file mode 100755
index 0000000..77c1334
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/about/dialogs/about.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('about',function(a){var b=a.lang.about;return{title:CKEDITOR.env.ie?b.dlgTitle:b.title,minWidth:390,minHeight:230,contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[{type:'html',html:'<style type="text/css">.cke_about_container{color:#000 !important;padding:10px 10px 0;margin-top:5px}.cke_about_container p{margin: 0 0 10px;}.cke_about_container .cke_about_logo{height:81px;background-color:#fff;background-image:url('+CKEDITOR.plugins.get('about').path+'dialogs/logo_ckeditor.png);'+'background-position:center; '+'background-repeat:no-repeat;'+'margin-bottom:10px;'+'}'+'.cke_about_container a'+'{'+'cursor:pointer !important;'+'color:blue !important;'+'text-decoration:underline !important;'+'}'+'</style>'+'<div class="cke_about_container">'+'<div class="cke_about_logo"></div>'+'<p>'+'CKEditor '+CKEDITOR.version+' (revision '+CKEDITOR.revision+')<br>'+'<a href="http://ckeditor.com/">http://ckeditor.com</a>'+'</p>'+'<p>'+b.help.replace('$1','<a href="http://docs.cksource.com/CKEditor_3.x/Users_Guide/Quick_Reference">'+b.userGuide+'</a>')+'</p>'+'<p>'+b.moreInfo+'<br>'+'<a href="http://ckeditor.com/license">http://ckeditor.com/license</a>'+'</p>'+'<p>'+b.copy.replace('$1','<a href="http://cksource.com/">CKSource</a> - Frederico Knabben')+'</p>'+'</div>'}]}],buttons:[CKEDITOR.dialog.cancelButton]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/about/dialogs/logo_ckeditor.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/about/dialogs/logo_ckeditor.png
new file mode 100755
index 0000000..ad01902
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/about/dialogs/logo_ckeditor.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/adobeair/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/adobeair/plugin.js
new file mode 100755
index 0000000..b312e93
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/adobeair/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=['click','keydown','mousedown','keypress','mouseover','mouseout'];function b(c){var d=c.getElementsByTag('*'),e=d.count(),f;for(var g=0;g<e;g++){f=d.getItem(g);(function(h){for(var i=0;i<a.length;i++)(function(j){var k=h.getAttribute('on'+j);if(h.hasAttribute('on'+j)){h.removeAttribute('on'+j);h.on(j,function(l){var m=/(return\s*)?CKEDITOR\.tools\.callFunction\(([^)]+)\)/.exec(k),n=m&&m[1],o=m&&m[2].split(','),p=/return false;/.test(k);if(o){var q=o.length,r;for(var s=0;s<q;s++){o[s]=r=CKEDITOR.tools.trim(o[s]);var t=r.match(/^(["'])([^"']*?)\1$/);if(t){o[s]=t[2];continue;}if(r.match(/\d+/)){o[s]=parseInt(r,10);continue;}switch(r){case 'this':o[s]=h.$;break;case 'event':o[s]=l.data.$;break;case 'null':o[s]=null;break;}}var u=CKEDITOR.tools.callFunction.apply(window,o);if(n&&u===false)p=1;}if(p)l.data.preventDefault();});}})(a[i]);})(f);}};CKEDITOR.plugins.add('adobeair',{init:function(c){if(!CKEDITOR.env.air)return;c.addCss('body { padding: 8px }');c.on('uiReady',function(){b(c.container);if(c.sharedSpaces)for(var d in c.sharedSpaces)b(c.sharedSpaces[d]);c.on('elementsPathUpdate',function(e){b(e.data.space);});});c.on('contentDom',function(){c.document.on('click',function(d){d.data.preventDefault(true);});});}});CKEDITOR.ui.on('ready',function(c){var d=c.data;if(d._.panel){var e=d._.panel._.panel,f;(function(){if(!e.isLoaded){setTimeout(arguments.callee,30);return;}f=e._.holder;b(f);})();}else if(d instanceof CKEDITOR.dialog)b(d._.element);});})();CKEDITOR.dom.document.prototype.write=CKEDITOR.tools.override(CKEDITOR.dom.document.prototype.write,function(a){function b(c,d,e,f){var g=c.append(d),h=CKEDITOR.htmlParser.fragment.fromHtml(e).children[0].attributes;h&&g.setAttributes(h);f&&g.append(c.getDocument().createText(f));};return function(c,d){if(this.getBody()){var e=this,f=this.getHead();c=c.replace(/(<style[^>]*>)([\s\S]*?)<\/style>/gi,function(g,h,i){b(f,'style',h,i);return '';});c=c.replace(/<base\b[^>]*\/>/i,function(g){b(f,'base',g);return '';});c=c.replace(/<title>([\s\S]*)<\/title>/i,function(g,h){e.$.title=h;return '';});c=c.replace(/<head>([\s\S]*)<\/head>/i,function(g){var h=new CKEDITOR.dom.element('div',e);h.setHtml(g);h.moveChildren(f);return '';});c.replace(/(<body[^>]*>)([\s\S]*)(?=$|<\/body>)/i,function(g,h,i){e.getBody().setHtml(i);var j=CKEDITOR.htmlParser.fragment.fromHtml(h).children[0].attributes;j&&e.getBody().setAttributes(j);});}else a.apply(this,arguments);};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/ajax/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/ajax/plugin.js
new file mode 100755
index 0000000..1c205f0
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/ajax/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.plugins.add('ajax',{requires:['xml']});CKEDITOR.ajax=(function(){var a=function(){if(!CKEDITOR.env.ie||location.protocol!='file:')try{return new XMLHttpRequest();}catch(f){}try{return new ActiveXObject('Msxml2.XMLHTTP');}catch(g){}try{return new ActiveXObject('Microsoft.XMLHTTP');}catch(h){}return null;},b=function(f){return f.readyState==4&&(f.status>=200&&f.status<300||f.status==304||f.status===0||f.status==1223);},c=function(f){if(b(f))return f.responseText;return null;},d=function(f){if(b(f)){var g=f.responseXML;return new CKEDITOR.xml(g&&g.firstChild?g:f.responseText);}return null;},e=function(f,g,h){var i=!!g,j=a();if(!j)return null;j.open('GET',f,i);if(i)j.onreadystatechange=function(){if(j.readyState==4){g(h(j));j=null;}};j.send(null);return i?'':h(j);};return{load:function(f,g){return e(f,g,c);},loadXml:function(f,g){return e(f,g,d);}};})();})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/autogrow/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/autogrow/plugin.js
new file mode 100755
index 0000000..e40289b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/autogrow/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(c){var d=c.getStyle('overflow-y'),e=c.getDocument(),f=CKEDITOR.dom.element.createFromHtml('<span style="margin:0;padding:0;border:0;clear:both;width:1px;height:1px;display:block;">'+(CKEDITOR.env.webkit?' ':'')+'</span>',e);e[CKEDITOR.env.ie?'getBody':'getDocumentElement']().append(f);var g=f.getDocumentPosition(e).y+f.$.offsetHeight;f.remove();c.setStyle('overflow-y',d);return g;};var b=function(c){if(!c.window)return;var d=c.document,e=new CKEDITOR.dom.element(d.getWindow().$.frameElement),f=d.getBody(),g=d.getDocumentElement(),h=c.window.getViewPaneSize().height,i=d.$.compatMode=='BackCompat'?f:g,j=a(i);j+=c.config.autoGrow_bottomSpace||0;var k=c.config.autoGrow_minHeight!=undefined?c.config.autoGrow_minHeight:200,l=c.config.autoGrow_maxHeight||Infinity;j=Math.max(j,k);j=Math.min(j,l);if(j!=h){j=c.fire('autoGrow',{currentHeight:h,newHeight:j}).newHeight;c.resize(c.container.getStyle('width'),j,true);}if(i.$.scrollHeight>i.$.clientHeight&&j<l)i.setStyle('overflow-y','hidden');else i.removeStyle('overflow-y');};CKEDITOR.plugins.add('autogrow',{init:function(c){c.addCommand('autogrow',{exec:b,modes:{wysiwyg:1},readOnly:1,canUndo:false,editorFocus:false});var d={contentDom:1,key:1,selectionChange:1,insertElement:1,mode:1};c.config.autoGrow_onStartup&&(d.instanceReady=1);for(var e in d)c.on(e,function(f){var g=c.getCommand('maximize');if(f.editor.mode=='wysiwyg'&&(!g||g.state!=CKEDITOR.TRISTATE_ON))setTimeout(function(){b(f.editor);b(f.editor);},100);});}});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/bbcode/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/bbcode/plugin.js
new file mode 100755
index 0000000..598a4bb
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/bbcode/plugin.js
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.on('dialogDefinition',function(r){var s,t=r.data.name,u=r.data.definition;if(t=='link'){u.removeContents('target');u.removeContents('upload');u.removeContents('advanced');s=u.getContents('info');s.remove('emailSubject');s.remove('emailBody');}else if(t=='image'){u.removeContents('advanced');s=u.getContents('Link');s.remove('cmbTarget');s=u.getContents('info');s.remove('txtAlt');s.remove('basic');}});var a={b:'strong',u:'u',i:'em',color:'span',size:'span',quote:'blockquote',code:'code',url:'a',email:'span',img:'span','*':'li',list:'ol'},b={strong:'b',b:'b',u:'u',em:'i',i:'i',code:'code',li:'*'},c={strong:'b',em:'i',u:'u',li:'*',ul:'list',ol:'list',code:'code',a:'link',img:'img',blockquote:'quote'},d={color:'color',size:'font-size'},e={url:'href',email:'mailhref',quote:'cite',list:'listType'},f=CKEDITOR.dtd,g=CKEDITOR.tools.extend({table:1},f.$block,f.$listItem,f.$tableContent,f.$list),h=/\s*(?:;\s*|$)/;function i(r){var s='';for(var t in r){var u=r[t],v=(t+':'+u).replace(h,';');s+=v;}return s;};function j(r){var s={};(r||'').replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(t,u,v){s[u.toLowerCase()]=v;});return s;};function k(r){return r.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi,function(s,t,u,v){t=parseInt(t,10).toString(16);u=parseInt(u,10).toString(16);v=parseInt(v,10).toString(16);var w=[t,u,v];for(var x=0;x<w.length;x++)w[x]=String('0'+w[x]).slice(-2);return '#'+w.join('');});};var l={smiley:':)',sad:':(',wink:';)',laugh:':D',cheeky:':P',blush:':*)',surprise:':-o',indecision:':|',angry:'>:(',angel:'o:)',cool:'8-)',devil:'>:-)',crying:';(',kiss:':-*'},m={},n=[];for(var o in l){m[l[o]]=o;n.push(l[o].replace(/\(|\)|\:|\/|\*|\-|\|/g,function(r){return '\\'+r;}));}n=new RegExp(n.join('|'),'g');var p=(function(){var r=[],s={nbsp:'\xa0',shy:'',gt:'>',lt:'<'};for(var t in s)r.push(t);r=new RegExp('&('+r.join('|')+');','g');return function(u){return u.replace(r,function(v,w){return s[w];});};})();CKEDITOR.BBCodeParser=function(){this._={bbcPartsRegex:/(?:\[([^\/\]=]*?)(?:=([^\]]*?))?\])|(?:\[\/([a-z]{1,16})\])/ig};};CKEDITOR.BBCodeParser.prototype={parse:function(r){var B=this;var s,t,u=0;while(s=B._.bbcPartsRegex.exec(r)){var v=s.index;if(v>u){var w=r.substring(u,v);B.onText(w,1);}u=B._.bbcPartsRegex.lastIndex;t=(s[1]||s[3]||'').toLowerCase();if(t&&!a[t]){B.onText(s[0]);continue;}if(s[1]){var x=a[t],y={},z={},A=s[2];if(A){if(t=='list')if(!isNaN(A))A='decimal';else if(/^[a-z]+$/.test(A))A='lower-alpha';
+else if(/^[A-Z]+$/.test(A))A='upper-alpha';if(d[t]){if(t=='size')A+='%';z[d[t]]=A;y.style=i(z);}else if(e[t])y[e[t]]=A;}if(t=='email'||t=='img')y.bbcode=t;B.onTagOpen(x,y,CKEDITOR.dtd.$empty[x]);}else if(s[3])B.onTagClose(a[t]);}if(r.length>u)B.onText(r.substring(u,r.length),1);}};CKEDITOR.htmlParser.fragment.fromBBCode=function(r){var s=new CKEDITOR.BBCodeParser(),t=new CKEDITOR.htmlParser.fragment(),u=[],v=0,w=t,x;function y(D){if(u.length>0)for(var E=0;E<u.length;E++){var F=u[E],G=F.name,H=CKEDITOR.dtd[G],I=w.name&&CKEDITOR.dtd[w.name];if((!I||I[G])&&(!D||!H||H[D]||!CKEDITOR.dtd[D])){F=F.clone();F.parent=w;w=F;u.splice(E,1);E--;}}};function z(D,E){var F=w.children.length,G=F>0&&w.children[F-1],H=!G&&q.getRule(c[w.name],'breakAfterOpen'),I=G&&G.type==CKEDITOR.NODE_ELEMENT&&q.getRule(c[G.name],'breakAfterClose'),J=D&&q.getRule(c[D],E?'breakBeforeClose':'breakBeforeOpen');if(v&&(H||I||J))v--;if(v&&D in g)v++;while(v&&v--)w.children.push(G=new CKEDITOR.htmlParser.element('br'));};function A(D,E){z(D.name,1);E=E||w||t;var F=E.children.length,G=F>0&&E.children[F-1]||null;D.previous=G;D.parent=E;E.children.push(D);if(D.returnPoint){w=D.returnPoint;delete D.returnPoint;}};s.onTagOpen=function(D,E,F){var G=new CKEDITOR.htmlParser.element(D,E);if(CKEDITOR.dtd.$removeEmpty[D]){u.push(G);return;}var H=w.name,I=H&&(CKEDITOR.dtd[H]||(w._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span));if(I&&!I[D]){var J=false,K;if(D==H)A(w,w.parent);else if(D in CKEDITOR.dtd.$listItem){s.onTagOpen('ul',{});K=w;J=true;}else{A(w,w.parent);u.unshift(w);J=true;}if(K)w=K;else w=w.returnPoint||w.parent;if(J){s.onTagOpen.apply(this,arguments);return;}}y(D);z(D);G.parent=w;G.returnPoint=x;x=0;if(G.isEmpty)A(G);else w=G;};s.onTagClose=function(D){for(var E=u.length-1;E>=0;E--){if(D==u[E].name){u.splice(E,1);return;}}var F=[],G=[],H=w;while(H.type&&H.name!=D){if(!H._.isBlockLike)G.unshift(H);F.push(H);H=H.parent;}if(H.type){for(E=0;E<F.length;E++){var I=F[E];A(I,I.parent);}w=H;A(H,H.parent);if(H==w)w=w.parent;u=u.concat(G);}};s.onText=function(D){var E=CKEDITOR.dtd[w.name];if(!E||E['#']){z();y();D.replace(/([\r\n])|[^\r\n]*/g,function(F,G){if(G!==undefined&&G.length)v++;else if(F.length){var H=0;F.replace(n,function(I,J){A(new CKEDITOR.htmlParser.text(F.substring(H,J)),w);A(new CKEDITOR.htmlParser.element('smiley',{desc:m[I]}),w);H=J+I.length;});if(H!=F.length)A(new CKEDITOR.htmlParser.text(F.substring(H,F.length)),w);}});}};s.parse(CKEDITOR.tools.htmlEncode(r));while(w.type){var B=w.parent,C=w;
+A(C,B);w=B;}return t;};CKEDITOR.htmlParser.BBCodeWriter=CKEDITOR.tools.createClass({$:function(){var r=this;r._={output:[],rules:[]};r.setRules('list',{breakBeforeOpen:1,breakAfterOpen:1,breakBeforeClose:1,breakAfterClose:1});r.setRules('*',{breakBeforeOpen:1,breakAfterOpen:0,breakBeforeClose:1,breakAfterClose:0});r.setRules('quote',{breakBeforeOpen:1,breakAfterOpen:0,breakBeforeClose:0,breakAfterClose:1});},proto:{setRules:function(r,s){var t=this._.rules[r];if(t)CKEDITOR.tools.extend(t,s,true);else this._.rules[r]=s;},getRule:function(r,s){return this._.rules[r]&&this._.rules[r][s];},openTag:function(r,s){var u=this;if(r in a){if(u.getRule(r,'breakBeforeOpen'))u.lineBreak(1);u.write('[',r);var t=s.option;t&&u.write('=',t);u.write(']');if(u.getRule(r,'breakAfterOpen'))u.lineBreak(1);}else if(r=='br')u._.output.push('\n');},openTagClose:function(){},attribute:function(){},closeTag:function(r){var s=this;if(r in a){if(s.getRule(r,'breakBeforeClose'))s.lineBreak(1);r!='*'&&s.write('[/',r,']');if(s.getRule(r,'breakAfterClose'))s.lineBreak(1);}},text:function(r){this.write(r);},comment:function(){},lineBreak:function(){var r=this;if(!r._.hasLineBreak&&r._.output.length){r.write('\n');r._.hasLineBreak=1;}},write:function(){this._.hasLineBreak=0;var r=Array.prototype.join.call(arguments,'');this._.output.push(r);},reset:function(){this._.output=[];this._.hasLineBreak=0;},getHtml:function(r){var s=this._.output.join('');if(r)this.reset();return p(s);}}});var q=new CKEDITOR.htmlParser.BBCodeWriter();CKEDITOR.plugins.add('bbcode',{requires:['htmldataprocessor','entities'],beforeInit:function(r){var s=r.config;CKEDITOR.tools.extend(s,{enterMode:CKEDITOR.ENTER_BR,basicEntities:false,entities:false,fillEmptyBlocks:false},true);},init:function(r){var s=r.config;function t(v){var w=CKEDITOR.htmlParser.fragment.fromBBCode(v),x=new CKEDITOR.htmlParser.basicWriter();w.writeHtml(x,u);return x.getHtml(true);};var u=new CKEDITOR.htmlParser.filter();u.addRules({elements:{blockquote:function(v){var w=new CKEDITOR.htmlParser.element('div');w.children=v.children;v.children=[w];var x=v.attributes.cite;if(x){var y=new CKEDITOR.htmlParser.element('cite');y.add(new CKEDITOR.htmlParser.text(x.replace(/^"|"$/g,'')));delete v.attributes.cite;v.children.unshift(y);}},span:function(v){var w;if(w=v.attributes.bbcode){if(w=='img'){v.name='img';v.attributes.src=v.children[0].value;v.children=[];}else if(w=='email'){v.name='a';v.attributes.href='mailto:'+v.children[0].value;}delete v.attributes.bbcode;
+}},ol:function(v){if(v.attributes.listType){if(v.attributes.listType!='decimal')v.attributes.style='list-style-type:'+v.attributes.listType;}else v.name='ul';delete v.attributes.listType;},a:function(v){if(!v.attributes.href)v.attributes.href=v.children[0].value;},smiley:function(v){v.name='img';var w=v.attributes.desc,x=s.smiley_images[CKEDITOR.tools.indexOf(s.smiley_descriptions,w)],y=CKEDITOR.tools.htmlEncode(s.smiley_path+x);v.attributes={src:y,'data-cke-saved-src':y,title:w,alt:w};}}});r.dataProcessor.htmlFilter.addRules({elements:{$:function(v){var w=v.attributes,x=j(w.style),y,z=v.name;if(z in b)z=b[z];else if(z=='span'){if(y=x.color){z='color';y=k(y);}else if(y=x['font-size']){var A=y.match(/(\d+)%$/);if(A){y=A[1];z='size';}}}else if(z=='ol'||z=='ul'){if(y=x['list-style-type']){switch(y){case 'lower-alpha':y='a';break;case 'upper-alpha':y='A';break;}}else if(z=='ol')y=1;z='list';}else if(z=='blockquote'){try{var B=v.children[0],C=v.children[1],D=B.name=='cite'&&B.children[0].value;if(D){y='"'+D+'"';v.children=C.children;}}catch(G){}z='quote';}else if(z=='a'){if(y=w.href)if(y.indexOf('mailto:')!==-1){z='email';v.children=[new CKEDITOR.htmlParser.text(y.replace('mailto:',''))];y='';}else{var E=v.children.length==1&&v.children[0];if(E&&E.type==CKEDITOR.NODE_TEXT&&E.value==y)y='';z='url';}}else if(z=='img'){v.isEmpty=0;var F=w['data-cke-saved-src'];if(F&&F.indexOf(r.config.smiley_path)!=-1)return new CKEDITOR.htmlParser.text(l[w.alt]);else v.children=[new CKEDITOR.htmlParser.text(F)];}v.name=z;y&&(v.attributes.option=y);return null;},br:function(v){var w=v.next;if(w&&w.name in g)return false;}}},1);r.dataProcessor.writer=q;r.on('beforeSetMode',function(v){v.removeListener();var w=r._.modes.wysiwyg;w.loadData=CKEDITOR.tools.override(w.loadData,function(x){return function(y){return x.call(this,t(y));};});});},afterInit:function(r){var s;if(r._.elementsPath)if(s=r._.elementsPath.filters)s.push(function(t){var u=t.getName(),v=c[u]||false;if(v=='link'&&t.getAttribute('href').indexOf('mailto:')===0)v='email';else if(u=='span'){if(t.getStyle('font-size'))v='size';else if(t.getStyle('color'))v='color';}else if(v=='img'){var w=t.data('cke-saved-src');if(w&&w.indexOf(r.config.smiley_path)===0)v='smiley';}return v;});}});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/clipboard/dialogs/paste.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/clipboard/dialogs/paste.js
new file mode 100755
index 0000000..ed1a423
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/clipboard/dialogs/paste.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('paste',function(a){var b=a.lang.clipboard,c=CKEDITOR.env.isCustomDomain();function d(e){var f=new CKEDITOR.dom.document(e.document),g=f.$,h=f.getById('cke_actscrpt');h&&h.remove();CKEDITOR.env.ie?g.body.contentEditable='true':g.designMode='on';if(CKEDITOR.env.ie&&CKEDITOR.env.version<8)f.getWindow().on('blur',function(){g.selection.empty();});f.on('keydown',function(i){var j=i.data,k=j.getKeystroke(),l;switch(k){case 27:this.hide();l=1;break;case 9:case CKEDITOR.SHIFT+9:this.changeFocus(1);l=1;}l&&j.preventDefault();},this);a.fire('ariaWidget',new CKEDITOR.dom.element(e.frameElement));};return{title:b.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?370:350,minHeight:CKEDITOR.env.quirks?250:245,onShow:function(){this.parts.dialog.$.offsetHeight;this.setupContent();},onHide:function(){if(CKEDITOR.env.ie)this.getParentEditor().document.getBody().$.contentEditable='true';},onLoad:function(){if((CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&a.lang.dir=='rtl')this.parts.contents.setStyle('overflow','hidden');},onOk:function(){this.commitContent();},contents:[{id:'general',label:a.lang.common.generalTab,elements:[{type:'html',id:'securityMsg',html:'<div style="white-space:normal;width:340px;">'+b.securityMsg+'</div>'},{type:'html',id:'pasteMsg',html:'<div style="white-space:normal;width:340px;">'+b.pasteMsg+'</div>'},{type:'html',id:'editing_area',style:'width: 100%; height: 100%;',html:'',focus:function(){var e=this.getInputElement().$.contentWindow;setTimeout(function(){e.focus();},500);},setup:function(){var e=this.getDialog(),f='<html dir="'+a.config.contentsLangDirection+'"'+' lang="'+(a.config.contentsLanguage||a.langCode)+'">'+'<head><style>body { margin: 3px; height: 95%; } </style></head><body>'+'<script id="cke_actscrpt" type="text/javascript">'+'window.parent.CKEDITOR.tools.callFunction( '+CKEDITOR.tools.addFunction(d,e)+', this );'+'</script></body>'+'</html>',g=CKEDITOR.env.air?'javascript:void(0)':c?"javascript:void((function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})())"':'',h=CKEDITOR.dom.element.createFromHtml('<iframe class="cke_pasteframe" frameborder="0" allowTransparency="true" src="'+g+'"'+' role="region"'+' aria-label="'+b.pasteArea+'"'+' aria-describedby="'+e.getContentElement('general','pasteMsg').domId+'"'+' aria-multiple="true"'+'></iframe>');h.on('load',function(k){k.removeListener();var l=h.getFrameDocument();l.write(f);if(CKEDITOR.env.air)d.call(this,l.getWindow().$);
+},e);h.setCustomData('dialog',e);var i=this.getElement();i.setHtml('');i.append(h);if(CKEDITOR.env.ie){var j=CKEDITOR.dom.element.createFromHtml('<span tabindex="-1" style="position:absolute;" role="presentation"></span>');j.on('focus',function(){h.$.contentWindow.focus();});i.append(j);this.focus=function(){j.focus();this.fire('focus');};}this.getInputElement=function(){return h;};if(CKEDITOR.env.ie){i.setStyle('display','block');i.setStyle('height',h.$.offsetHeight+2+'px');}},commit:function(e){var f=this.getElement(),g=this.getDialog().getParentEditor(),h=this.getInputElement().getFrameDocument().getBody(),i=h.getBogus(),j;i&&i.remove();j=h.getHtml();setTimeout(function(){g.fire('paste',{html:j});},0);}}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/colordialog/dialogs/colordialog.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/colordialog/dialogs/colordialog.js
new file mode 100755
index 0000000..e908269
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/colordialog/dialogs/colordialog.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('colordialog',function(a){var b=CKEDITOR.dom.element,c=CKEDITOR.document,d=a.lang.colordialog,e,f={type:'html',html:' '},g;function h(){c.getById(u).removeStyle('background-color');e.getContentElement('picker','selectedColor').setValue('');g&&g.removeAttribute('aria-selected');g=null;};function i(w){var x=w.data.getTarget(),y;if(x.getName()=='td'&&(y=x.getChild(0).getHtml())){g=x;g.setAttribute('aria-selected',true);e.getContentElement('picker','selectedColor').setValue(y);}};function j(w){w=w.replace(/^#/,'');for(var x=0,y=[];x<=2;x++)y[x]=parseInt(w.substr(x*2,2),16);var z=0.2126*y[0]+0.7152*y[1]+0.0722*y[2];return '#'+(z>=165?'000':'fff');};var k,l;function m(w){!w.name&&(w=new CKEDITOR.event(w));var x=!/mouse/.test(w.name),y=w.data.getTarget(),z;if(y.getName()=='td'&&(z=y.getChild(0).getHtml())){o(w);x?k=y:l=y;if(x){y.setStyle('border-color',j(z));y.setStyle('border-style','dotted');}c.getById(s).setStyle('background-color',z);c.getById(t).setHtml(z);}};function n(){var w=k.getChild(0).getHtml();k.setStyle('border-color',w);k.setStyle('border-style','solid');c.getById(s).removeStyle('background-color');c.getById(t).setHtml(' ');k=null;};function o(w){var x=!/mouse/.test(w.name),y=x&&k;if(y){var z=y.getChild(0).getHtml();y.setStyle('border-color',z);y.setStyle('border-style','solid');}if(!(k||l)){c.getById(s).removeStyle('background-color');c.getById(t).setHtml(' ');}};function p(w){var x=w.data,y=x.getTarget(),z,A,B=x.getKeystroke(),C=a.lang.dir=='rtl';switch(B){case 38:if(z=y.getParent().getPrevious()){A=z.getChild([y.getIndex()]);A.focus();}x.preventDefault();break;case 40:if(z=y.getParent().getNext()){A=z.getChild([y.getIndex()]);if(A&&A.type==1)A.focus();}x.preventDefault();break;case 32:case 13:i(w);x.preventDefault();break;case C?37:39:if(A=y.getNext()){if(A.type==1){A.focus();x.preventDefault(true);}}else if(z=y.getParent().getNext()){A=z.getChild([0]);if(A&&A.type==1){A.focus();x.preventDefault(true);}}break;case C?39:37:if(A=y.getPrevious()){A.focus();x.preventDefault(true);}else if(z=y.getParent().getPrevious()){A=z.getLast();A.focus();x.preventDefault(true);}break;default:return;}};function q(){v=CKEDITOR.dom.element.createFromHtml('<table tabIndex="-1" aria-label="'+d.options+'"'+' role="grid" style="border-collapse:separate;" cellspacing="0">'+'<caption class="cke_voice_label">'+d.options+'</caption>'+'<tbody role="presentation"></tbody></table>');v.on('mouseover',m);v.on('mouseout',o);var w=['00','33','66','99','cc','ff'];
+function x(C,D){for(var E=C;E<C+3;E++){var F=new b(v.$.insertRow(-1));F.setAttribute('role','row');for(var G=D;G<D+3;G++)for(var H=0;H<6;H++)y(F.$,'#'+w[G]+w[H]+w[E]);}};function y(C,D){var E=new b(C.insertCell(-1));E.setAttribute('class','ColorCell');E.setAttribute('tabIndex',-1);E.setAttribute('role','gridcell');E.on('keydown',p);E.on('click',i);E.on('focus',m);E.on('blur',o);E.setStyle('background-color',D);E.setStyle('border','1px solid '+D);E.setStyle('width','14px');E.setStyle('height','14px');var F=r('color_table_cell');E.setAttribute('aria-labelledby',F);E.append(CKEDITOR.dom.element.createFromHtml('<span id="'+F+'" class="cke_voice_label">'+D+'</span>',CKEDITOR.document));};x(0,0);x(3,0);x(0,3);x(3,3);var z=new b(v.$.insertRow(-1));z.setAttribute('role','row');for(var A=0;A<6;A++)y(z.$,'#'+w[A]+w[A]+w[A]);for(var B=0;B<12;B++)y(z.$,'#000000');};var r=function(w){return CKEDITOR.tools.getNextId()+'_'+w;},s=r('hicolor'),t=r('hicolortext'),u=r('selhicolor'),v;q();return{title:d.title,minWidth:360,minHeight:220,onLoad:function(){e=this;},onHide:function(){h();n();},contents:[{id:'picker',label:d.title,accessKey:'I',elements:[{type:'hbox',padding:0,widths:['70%','10%','30%'],children:[{type:'html',html:'<div></div>',onLoad:function(){CKEDITOR.document.getById(this.domId).append(v);},focus:function(){(k||this.getElement().getElementsByTag('td').getItem(0)).focus();}},f,{type:'vbox',padding:0,widths:['70%','5%','25%'],children:[{type:'html',html:'<span>'+d.highlight+'</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="'+s+'" style="border: 1px solid; height: 74px; width: 74px;"></div>\t\t\t\t\t\t\t\t\t\t\t\t<div id="'+t+'"> </div><span>'+d.selected+'</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="'+u+'" style="border: 1px solid; height: 20px; width: 74px;"></div>'},{type:'text',label:d.selected,labelStyle:'display:none',id:'selectedColor',style:'width: 74px',onChange:function(){try{c.getById(u).setStyle('background-color',this.getValue());}catch(w){h();}}},f,{type:'button',id:'clear',style:'margin-top: 5px',label:d.clear,onClick:h}]}]}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/_translationstatus.txt b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/_translationstatus.txt
new file mode 100755
index 0000000..abb9832
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/_translationstatus.txt
@@ -0,0 +1,28 @@
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+
+bg.js Found: 5 Missing: 0
+cs.js Found: 5 Missing: 0
+cy.js Found: 5 Missing: 0
+da.js Found: 5 Missing: 0
+de.js Found: 5 Missing: 0
+el.js Found: 5 Missing: 0
+eo.js Found: 5 Missing: 0
+et.js Found: 5 Missing: 0
+fa.js Found: 5 Missing: 0
+fi.js Found: 5 Missing: 0
+fr.js Found: 5 Missing: 0
+gu.js Found: 5 Missing: 0
+he.js Found: 5 Missing: 0
+hr.js Found: 5 Missing: 0
+it.js Found: 5 Missing: 0
+nb.js Found: 5 Missing: 0
+nl.js Found: 5 Missing: 0
+no.js Found: 5 Missing: 0
+pl.js Found: 5 Missing: 0
+pt-br.js Found: 5 Missing: 0
+tr.js Found: 5 Missing: 0
+ug.js Found: 5 Missing: 0
+uk.js Found: 5 Missing: 0
+vi.js Found: 5 Missing: 0
+zh-cn.js Found: 5 Missing: 0
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/bg.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/bg.js
new file mode 100755
index 0000000..c8713d0
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/bg.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','bg',{devTools:{title:'Информация за елемента',dialogName:'Име на диалоговия прозорец',tabName:'Име на таб',elementId:'ID на елемента',elementType:'Тип на елемента'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/cs.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/cs.js
new file mode 100755
index 0000000..10c9699
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/cs.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','cs',{devTools:{title:'Informace o prvku',dialogName:'Název dialogového okna',tabName:'Název karty',elementId:'ID prvku',elementType:'Typ prvku'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/cy.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/cy.js
new file mode 100755
index 0000000..3514ec6
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/cy.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','cy',{devTools:{title:'Gwybodaeth am yr Elfen',dialogName:'Enw ffenestr y deialog',tabName:"Enw'r tab",elementId:'ID yr Elfen',elementType:'Math yr elfen'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/da.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/da.js
new file mode 100755
index 0000000..d882612
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/da.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','da',{devTools:{title:'Information på elementet',dialogName:'Dialogboks',tabName:'Tab beskrivelse',elementId:'ID på element',elementType:'Type af element'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/de.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/de.js
new file mode 100755
index 0000000..953bf97
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/de.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','de',{devTools:{title:'Elementinformation',dialogName:'Dialogfenstername',tabName:'Reitername',elementId:'Element ID',elementType:'Elementtyp'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/el.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/el.js
new file mode 100755
index 0000000..32168b7
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/el.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','el',{devTools:{title:'Πληροφορίες Στοιχείου',dialogName:'Όνομα παραθύρου διαλόγου',tabName:'Όνομα καρτέλας',elementId:'ID Στοιχείου',elementType:'Τύπος στοιχείου'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/en.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/en.js
new file mode 100755
index 0000000..467126d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/en.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','en',{devTools:{title:'Element Information',dialogName:'Dialog window name',tabName:'Tab name',elementId:'Element ID',elementType:'Element type'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/eo.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/eo.js
new file mode 100755
index 0000000..70ae814
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/eo.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','eo',{devTools:{title:'Informo pri la elemento',dialogName:'Nomo de la dialogfenestro',tabName:'Langetnomo',elementId:'ID de la elemento',elementType:'Tipo de la elemento'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/et.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/et.js
new file mode 100755
index 0000000..3d73164
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/et.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','et',{devTools:{title:'Elemendi andmed',dialogName:'Dialoogiakna nimi',tabName:'Saki nimi',elementId:'Elemendi ID',elementType:'Elemendi liik'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/fa.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/fa.js
new file mode 100755
index 0000000..e6133b2
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/fa.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','fa',{devTools:{title:'اطلاعات عنصر',dialogName:'نام پنجره محاورهای',tabName:'نام برگه',elementId:'ID عنصر',elementType:'نوع عنصر'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/fi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/fi.js
new file mode 100755
index 0000000..37884d3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/fi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','fi',{devTools:{title:'Elementin tiedot',dialogName:'Dialogi-ikkunan nimi',tabName:'Välilehden nimi',elementId:'Elementin ID',elementType:'Elementin tyyppi'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/fr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/fr.js
new file mode 100755
index 0000000..c44813f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/fr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','fr',{devTools:{title:"Information sur l'élément",dialogName:'Nom de la fenêtre de dialogue',tabName:"Nom de l'onglet",elementId:"ID de l'élément",elementType:"Type de l'élément"}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/gu.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/gu.js
new file mode 100755
index 0000000..553e7a0
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/gu.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','gu',{devTools:{title:'પ્રાથમિક માહિતી',dialogName:'વિન્ડોનું નામ',tabName:'ટેબનું નામ',elementId:'પ્રાથમિક આઈડી',elementType:'પ્રાથમિક પ્રકાર'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/he.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/he.js
new file mode 100755
index 0000000..52a36b9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/he.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','he',{devTools:{title:'מידע על האלמנט',dialogName:'שם הדיאלוג',tabName:'שם הטאב',elementId:'ID של האלמנט',elementType:'סוג האלמנט'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/hr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/hr.js
new file mode 100755
index 0000000..3112625
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/hr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','hr',{devTools:{title:'Informacije elementa',dialogName:'Naziv prozora za dijalog',tabName:'Naziva jahača',elementId:'ID elementa',elementType:'Vrsta elementa'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/it.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/it.js
new file mode 100755
index 0000000..8410af0
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/it.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','it',{devTools:{title:'Informazioni elemento',dialogName:'Nome finestra di dialogo',tabName:'Nome Tab',elementId:'ID Elemento',elementType:'Tipo elemento'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/nb.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/nb.js
new file mode 100755
index 0000000..fd561a7
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/nb.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','nb',{devTools:{title:'Elementinformasjon',dialogName:'Navn på dialogvindu',tabName:'Navn på fane',elementId:'Element-ID',elementType:'Elementtype'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/nl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/nl.js
new file mode 100755
index 0000000..affe32a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/nl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','nl',{devTools:{title:'Elementinformatie',dialogName:'Naam dialoogvenster',tabName:'Tabnaam',elementId:'Element ID',elementType:'Elementtype'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/no.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/no.js
new file mode 100755
index 0000000..e93f861
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/no.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','no',{devTools:{title:'Elementinformasjon',dialogName:'Navn på dialogvindu',tabName:'Navn på fane',elementId:'Element-ID',elementType:'Elementtype'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/pl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/pl.js
new file mode 100755
index 0000000..886a941
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/pl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','pl',{devTools:{title:'Informacja o elemencie',dialogName:'Nazwa okna dialogowego',tabName:'Nazwa zakładki',elementId:'ID elementu',elementType:'Typ elementu'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/pt-br.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/pt-br.js
new file mode 100755
index 0000000..32e1e2e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/pt-br.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','pt-br',{devTools:{title:'Informação do Elemento',dialogName:'Nome da janela de diálogo',tabName:'Nome da aba',elementId:'ID do elemento',elementType:'Tipo do elemento'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/tr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/tr.js
new file mode 100755
index 0000000..7982d17
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/tr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','tr',{devTools:{title:'Eleman Bilgisi',dialogName:'İletişim pencere ismi',tabName:'Sekme adı',elementId:'Eleman ID',elementType:'Eleman türü'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/ug.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/ug.js
new file mode 100755
index 0000000..6cfb991
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/ug.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','ug',{devTools:{title:'ئېلېمېنت ئۇچۇرى',dialogName:'سۆزلەشكۈ كۆزنەك ئاتى',tabName:'Tab ئاتى',elementId:'ئېلېمېنت كىملىكى',elementType:'ئېلېمېنت تىپى'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/uk.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/uk.js
new file mode 100755
index 0000000..4d80d6d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/uk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','uk',{devTools:{title:'Відомості про Елемент',dialogName:'Заголовок діалогового вікна',tabName:'Назва вкладки',elementId:'Ідентифікатор Елемента',elementType:'Тип Елемента'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/vi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/vi.js
new file mode 100755
index 0000000..4be8437
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/vi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','vi',{devTools:{title:'Thông tin thành ph',dialogName:'Tên hộp tho',tabName:'Tên th',elementId:'Mã thành ph',elementType:'Loại thành ph'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/zh-cn.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/zh-cn.js
new file mode 100755
index 0000000..3f599be
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/lang/zh-cn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('devtools','zh-cn',{devTools:{title:'元素信息',dialogName:'对话框窗口名称',tabName:'Tab 名称',elementId:'元素 ID',elementType:'元素类型'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/plugin.js
new file mode 100755
index 0000000..efc4e22
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/devtools/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('devtools',{lang:['en','bg','cs','cy','da','de','el','eo','et','fa','fi','fr','gu','he','hr','it','nb','nl','no','pl','pt-br','tr','ug','uk','vi','zh-cn'],init:function(a){a._.showDialogDefinitionTooltips=1;},onLoad:function(){CKEDITOR.document.appendStyleText(CKEDITOR.config.devtools_styles||'#cke_tooltip { padding: 5px; border: 2px solid #333; background: #ffffff }#cke_tooltip h2 { font-size: 1.1em; border-bottom: 1px solid; margin: 0; padding: 1px; }#cke_tooltip ul { padding: 0pt; list-style-type: none; }');}});(function(){function a(d,e,f,g){var h=d.lang.devTools,i='<a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.definition.'+(f?f.type=='text'?'textInput':f.type:'content')+'.html" target="_blank">'+(f?f.type:'content')+'</a>',j='<h2>'+h.title+'</h2>'+'<ul>'+'<li><strong>'+h.dialogName+'</strong> : '+e.getName()+'</li>'+'<li><strong>'+h.tabName+'</strong> : '+g+'</li>';if(f)j+='<li><strong>'+h.elementId+'</strong> : '+f.id+'</li>';j+='<li><strong>'+h.elementType+'</strong> : '+i+'</li>';return j+'</ul>';};function b(d,e,f,g,h,i){var j=e.getDocumentPosition(),k={'z-index':CKEDITOR.dialog._.currentZIndex+10,top:j.y+e.getSize('height')+'px'};c.setHtml(d(f,g,h,i));c.show();if(f.lang.dir=='rtl'){var l=CKEDITOR.document.getWindow().getViewPaneSize();k.right=l.width-j.x-e.getSize('width')+'px';}else k.left=j.x+'px';c.setStyles(k);};var c;CKEDITOR.on('reset',function(){c&&c.remove();c=null;});CKEDITOR.on('dialogDefinition',function(d){var e=d.editor;if(e._.showDialogDefinitionTooltips){if(!c){c=CKEDITOR.dom.element.createFromHtml('<div id="cke_tooltip" tabindex="-1" style="position: absolute"></div>',CKEDITOR.document);c.hide();c.on('mouseover',function(){this.show();});c.on('mouseout',function(){this.hide();});c.appendTo(CKEDITOR.document.getBody());}var f=d.data.definition.dialog,g=e.config.devtools_textCallback||a;f.on('load',function(){var h=f.parts.tabs.getChildren(),i;for(var j=0,k=h.count();j<k;j++){i=h.getItem(j);i.on('mouseover',function(){var l=this.$.id;b(g,this,e,f,null,l.substring(4,l.lastIndexOf('_')));});i.on('mouseout',function(){c.hide();});}f.foreach(function(l){if(l.type in {hbox:1,vbox:1})return;var m=l.getElement();if(m){m.on('mouseover',function(){b(g,this,e,f,l,f._.currentTabId);});m.on('mouseout',function(){c.hide();});}});});}});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/dialog/dialogDefinition.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/dialog/dialogDefinition.js
new file mode 100755
index 0000000..a2c9d6d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/dialog/dialogDefinition.js
@@ -0,0 +1,4 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/div/dialogs/div.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/div/dialogs/div.js
new file mode 100755
index 0000000..e9cae67
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/div/dialogs/div.js
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(d,e,f){if(!e.is||!e.getCustomData('block_processed')){e.is&&CKEDITOR.dom.element.setMarker(f,e,'block_processed',true);d.push(e);}};function b(d){var e=[],f=d.getChildren();for(var g=0;g<f.count();g++){var h=f.getItem(g);if(!(h.type===CKEDITOR.NODE_TEXT&&/^[ \t\n\r]+$/.test(h.getText())))e.push(h);}return e;};function c(d,e){var f=(function(){var p=CKEDITOR.tools.extend({},CKEDITOR.dtd.$blockLimit);delete p.div;if(d.config.div_wrapTable){delete p.td;delete p.th;}return p;})(),g=CKEDITOR.dtd.div;function h(p){var q=new CKEDITOR.dom.elementPath(p).elements,r;for(var s=0;s<q.length;s++){if(q[s].getName() in f){r=q[s];break;}}return r;};function i(){this.foreach(function(p){if(/^(?!vbox|hbox)/.test(p.type)){if(!p.setup)p.setup=function(q){p.setValue(q.getAttribute(p.id)||'');};if(!p.commit)p.commit=function(q){var r=this.getValue();if('dir'==p.id&&q.getComputedStyle('direction')==r)return;if(r)q.setAttribute(p.id,r);else q.removeAttribute(p.id);};}});};function j(p){var q=[],r={},s=[],t,u=p.document.getSelection(),v=u.getRanges(),w=u.createBookmarks(),x,y,z=p.config.enterMode==CKEDITOR.ENTER_DIV?'div':'p';for(x=0;x<v.length;x++){y=v[x].createIterator();while(t=y.getNextParagraph()){if(t.getName() in f){var A,B=t.getChildren();for(A=0;A<B.count();A++)a(s,B.getItem(A),r);}else{while(!g[t.getName()]&&t.getName()!='body')t=t.getParent();a(s,t,r);}}}CKEDITOR.dom.element.clearAllMarkers(r);var C=l(s),D,E,F;for(x=0;x<C.length;x++){var G=C[x][0];D=G.getParent();for(A=1;A<C[x].length;A++)D=D.getCommonAncestor(C[x][A]);F=new CKEDITOR.dom.element('div',p.document);for(A=0;A<C[x].length;A++){G=C[x][A];while(!G.getParent().equals(D))G=G.getParent();C[x][A]=G;}var H=null;for(A=0;A<C[x].length;A++){G=C[x][A];if(!(G.getCustomData&&G.getCustomData('block_processed'))){G.is&&CKEDITOR.dom.element.setMarker(r,G,'block_processed',true);if(!A)F.insertBefore(G);F.append(G);}}CKEDITOR.dom.element.clearAllMarkers(r);q.push(F);}u.selectBookmarks(w);return q;};function k(p){var q=new CKEDITOR.dom.elementPath(p.getSelection().getStartElement()),r=q.blockLimit,s=r&&r.getAscendant('div',true);return s;};function l(p){var q=[],r=null,s,t;for(var u=0;u<p.length;u++){t=p[u];var v=h(t);if(!v.equals(r)){r=v;q.push([]);}q[q.length-1].push(t);}return q;};function m(p){var q=this.getDialog(),r=q._element&&q._element.clone()||new CKEDITOR.dom.element('div',d.document);this.commit(r,true);p=[].concat(p);var s=p.length,t;for(var u=0;u<s;u++){t=q.getContentElement.apply(q,p[u].split(':'));
+t&&t.setup&&t.setup(r,true);}};var n={},o=[];return{title:d.lang.div.title,minWidth:400,minHeight:165,contents:[{id:'info',label:d.lang.common.generalTab,title:d.lang.common.generalTab,elements:[{type:'hbox',widths:['50%','50%'],children:[{id:'elementStyle',type:'select',style:'width: 100%;',label:d.lang.div.styleSelectLabel,'default':'',items:[[d.lang.common.notSet,'']],onChange:function(){m.call(this,['info:class','advanced:dir','advanced:style']);},setup:function(p){for(var q in n)n[q].checkElementRemovable(p,true)&&this.setValue(q);},commit:function(p){var q;if(q=this.getValue()){var r=n[q],s=p.getCustomData('elementStyle')||'';r.applyToObject(p);p.setCustomData('elementStyle',s+r._.definition.attributes.style);}}},{id:'class',type:'text',label:d.lang.common.cssClass,'default':''}]}]},{id:'advanced',label:d.lang.common.advancedTab,title:d.lang.common.advancedTab,elements:[{type:'vbox',padding:1,children:[{type:'hbox',widths:['50%','50%'],children:[{type:'text',id:'id',label:d.lang.common.id,'default':''},{type:'text',id:'lang',label:d.lang.link.langCode,'default':''}]},{type:'hbox',children:[{type:'text',id:'style',style:'width: 100%;',label:d.lang.common.cssStyle,'default':'',commit:function(p){var q=this.getValue()+(p.getCustomData('elementStyle')||'');p.setAttribute('style',q);}}]},{type:'hbox',children:[{type:'text',id:'title',style:'width: 100%;',label:d.lang.common.advisoryTitle,'default':''}]},{type:'select',id:'dir',style:'width: 100%;',label:d.lang.common.langDir,'default':'',items:[[d.lang.common.notSet,''],[d.lang.common.langDirLtr,'ltr'],[d.lang.common.langDirRtl,'rtl']]}]}]}],onLoad:function(){i.call(this);var p=this,q=this.getContentElement('info','elementStyle');d.getStylesSet(function(r){var s;if(r)for(var t=0;t<r.length;t++){var u=r[t];if(u.element&&u.element=='div'){s=u.name;n[s]=new CKEDITOR.style(u);q.items.push([s,s]);q.add(s,s);}}q[q.items.length>1?'enable':'disable']();setTimeout(function(){q.setup(p._element);},0);});},onShow:function(){if(e=='editdiv'){var p=k(d);p&&this.setupContent(this._element=p);}},onOk:function(){if(e=='editdiv')o=[this._element];else o=j(d,true);var p=o.length;for(var q=0;q<p;q++){this.commitContent(o[q]);!o[q].getAttribute('style')&&o[q].removeAttribute('style');}this.hide();},onHide:function(){if(e=='editdiv')this._element.removeCustomData('elementStyle');delete this._element;}};};CKEDITOR.dialog.add('creatediv',function(d){return c(d,'creatediv');});CKEDITOR.dialog.add('editdiv',function(d){return c(d,'editdiv');
+});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/docprops/dialogs/docprops.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/docprops/dialogs/docprops.js
new file mode 100755
index 0000000..80029ec
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/docprops/dialogs/docprops.js
@@ -0,0 +1,10 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('docProps',function(a){var b=a.lang.docprops,c=a.lang.common,d={};function e(n,o){var p=function(){q(this);o(this,this._.parentDialog);},q=function(s){s.removeListener('ok',p);s.removeListener('cancel',q);},r=function(s){s.on('ok',p);s.on('cancel',q);};a.execCommand(n);if(a._.storedDialogs.colordialog)r(a._.storedDialogs.colordialog);else CKEDITOR.on('dialogDefinition',function(s){if(s.data.name!=n)return;var t=s.data.definition;s.removeListener();t.onLoad=CKEDITOR.tools.override(t.onLoad,function(u){return function(){r(this);t.onLoad=u;if(typeof u=='function')u.call(this);};});});};function f(){var n=this.getDialog(),o=n.getContentElement('general',this.id+'Other');if(!o)return;if(this.getValue()=='other'){o.getInputElement().removeAttribute('readOnly');o.focus();o.getElement().removeClass('cke_disabled');}else{o.getInputElement().setAttribute('readOnly',true);o.getElement().addClass('cke_disabled');}};function g(n,o,p){return function(q,r,s){var t=d,u=typeof p!='undefined'?p:this.getValue();if(!u&&n in t)t[n].remove();else if(u&&n in t)t[n].setAttribute('content',u);else if(u){var v=new CKEDITOR.dom.element('meta',a.document);v.setAttribute(o?'http-equiv':'name',n);v.setAttribute('content',u);s.append(v);}};};function h(n,o){return function(){var p=d,q=n in p?p[n].getAttribute('content')||'':'';if(o)return q;this.setValue(q);return null;};};function i(n){return function(o,p,q,r){r.removeAttribute('margin'+n);var s=this.getValue();if(s!=='')r.setStyle('margin-'+n,CKEDITOR.tools.cssLength(s));else r.removeStyle('margin-'+n);};};function j(n){var o={},p=n.getElementsByTag('meta'),q=p.count();for(var r=0;r<q;r++){var s=p.getItem(r);o[s.getAttribute(s.hasAttribute('http-equiv')?'http-equiv':'name').toLowerCase()]=s;}return o;};function k(n,o,p){n.removeStyle(o);if(n.getComputedStyle(o)!=p)n.setStyle(o,p);};var l=function(n,o,p){return{type:'hbox',padding:0,widths:['60%','40%'],children:[CKEDITOR.tools.extend({type:'text',id:n,label:b[o]},p||{},1),{type:'button',id:n+'Choose',label:b.chooseColor,className:'colorChooser',onClick:function(){var q=this;e('colordialog',function(r){var s=q.getDialog();s.getContentElement(s._.currentTabId,n).setValue(r.getContentElement('picker','selectedColor').getValue());});}}]};},m='javascript:void((function(){'+encodeURIComponent('document.open();'+(CKEDITOR.env.isCustomDomain()?"document.domain='"+document.domain+"';":'')+'document.write( \'<html style="background-color: #ffffff; height: 100%"><head></head><body style="width: 100%; height: 100%; margin: 0px">'+b.previewHtml+"</body></html>' );"+'document.close();')+'})())';
+return{title:b.title,minHeight:330,minWidth:500,onShow:function(){var n=a.document,o=n.getElementsByTag('html').getItem(0),p=n.getHead(),q=n.getBody();d=j(n);this.setupContent(n,o,p,q);},onHide:function(){d={};},onOk:function(){var n=a.document,o=n.getElementsByTag('html').getItem(0),p=n.getHead(),q=n.getBody();this.commitContent(n,o,p,q);},contents:[{id:'general',label:c.generalTab,elements:[{type:'text',id:'title',label:b.docTitle,setup:function(n){this.setValue(n.getElementsByTag('title').getItem(0).data('cke-title'));},commit:function(n,o,p,q,r){if(r)return;n.getElementsByTag('title').getItem(0).data('cke-title',this.getValue());}},{type:'hbox',children:[{type:'select',id:'dir',label:c.langDir,style:'width: 100%',items:[[c.notSet,''],[c.langDirLtr,'ltr'],[c.langDirRtl,'rtl']],setup:function(n,o,p,q){this.setValue(q.getDirection()||'');},commit:function(n,o,p,q){var r=this.getValue();if(r)q.setAttribute('dir',r);else q.removeAttribute('dir');q.removeStyle('direction');}},{type:'text',id:'langCode',label:c.langCode,setup:function(n,o){this.setValue(o.getAttribute('xml:lang')||o.getAttribute('lang')||'');},commit:function(n,o,p,q,r){if(r)return;var s=this.getValue();if(s)o.setAttributes({'xml:lang':s,lang:s});else o.removeAttributes({'xml:lang':1,lang:1});}}]},{type:'hbox',children:[{type:'select',id:'charset',label:b.charset,style:'width: 100%',items:[[c.notSet,''],[b.charsetASCII,'us-ascii'],[b.charsetCE,'iso-8859-2'],[b.charsetCT,'big5'],[b.charsetCR,'iso-8859-5'],[b.charsetGR,'iso-8859-7'],[b.charsetJP,'iso-2022-jp'],[b.charsetKR,'iso-2022-kr'],[b.charsetTR,'iso-8859-9'],[b.charsetUN,'utf-8'],[b.charsetWE,'iso-8859-1'],[b.other,'other']],'default':'',onChange:function(){var n=this;n.getDialog().selectedCharset=n.getValue()!='other'?n.getValue():'';f.call(n);},setup:function(){var q=this;q.metaCharset='charset' in d;var n=h(q.metaCharset?'charset':'content-type',1,1),o=n.call(q);!q.metaCharset&&o.match(/charset=[^=]+$/)&&(o=o.substring(o.indexOf('=')+1));if(o){q.setValue(o.toLowerCase());if(!q.getValue()){q.setValue('other');var p=q.getDialog().getContentElement('general','charsetOther');p&&p.setValue(o);}q.getDialog().selectedCharset=o;}f.call(q);},commit:function(n,o,p,q,r){var v=this;if(r)return;var s=v.getValue(),t=v.getDialog().getContentElement('general','charsetOther');s=='other'&&(s=t?t.getValue():'');s&&!v.metaCharset&&(s=(d['content-type']?d['content-type'].getAttribute('content').split(';')[0]:'text/html')+'; charset='+s);var u=g(v.metaCharset?'charset':'content-type',1,s);
+u.call(v,n,o,p);}},{type:'text',id:'charsetOther',label:b.charsetOther,onChange:function(){this.getDialog().selectedCharset=this.getValue();}}]},{type:'hbox',children:[{type:'select',id:'docType',label:b.docType,style:'width: 100%',items:[[c.notSet,''],['XHTML 1.1','<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'],['XHTML 1.0 Transitional','<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'],['XHTML 1.0 Strict','<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'],['XHTML 1.0 Frameset','<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'],['HTML 5','<!DOCTYPE html>'],['HTML 4.01 Transitional','<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'],['HTML 4.01 Strict','<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'],['HTML 4.01 Frameset','<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'],['HTML 3.2','<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'],['HTML 2.0','<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'],[b.other,'other']],onChange:f,setup:function(){var o=this;if(a.docType){o.setValue(a.docType);if(!o.getValue()){o.setValue('other');var n=o.getDialog().getContentElement('general','docTypeOther');n&&n.setValue(a.docType);}}f.call(o);},commit:function(n,o,p,q,r){if(r)return;var s=this.getValue(),t=this.getDialog().getContentElement('general','docTypeOther');a.docType=s=='other'?t?t.getValue():'':s;}},{type:'text',id:'docTypeOther',label:b.docTypeOther}]},{type:'checkbox',id:'xhtmlDec',label:b.xhtmlDec,setup:function(){this.setValue(!!a.xmlDeclaration);},commit:function(n,o,p,q,r){if(r)return;if(this.getValue()){a.xmlDeclaration='<?xml version="1.0" encoding="'+(this.getDialog().selectedCharset||'utf-8')+'"?>';o.setAttribute('xmlns','http://www.w3.org/1999/xhtml');}else{a.xmlDeclaration='';o.removeAttribute('xmlns');}}}]},{id:'design',label:b.design,elements:[{type:'hbox',widths:['60%','40%'],children:[{type:'vbox',children:[l('txtColor','txtColor',{setup:function(n,o,p,q){this.setValue(q.getComputedStyle('color'));},commit:function(n,o,p,q,r){if(this.isChanged()||r){q.removeAttribute('text');var s=this.getValue();if(s)q.setStyle('color',s);else q.removeStyle('color');}}}),l('bgColor','bgColor',{setup:function(n,o,p,q){var r=q.getComputedStyle('background-color')||'';
+this.setValue(r=='transparent'?'':r);},commit:function(n,o,p,q,r){if(this.isChanged()||r){q.removeAttribute('bgcolor');var s=this.getValue();if(s)q.setStyle('background-color',s);else k(q,'background-color','transparent');}}}),{type:'hbox',widths:['60%','40%'],padding:1,children:[{type:'text',id:'bgImage',label:b.bgImage,setup:function(n,o,p,q){var r=q.getComputedStyle('background-image')||'';if(r=='none')r='';else r=r.replace(/url\(\s*(["']?)\s*([^\)]*)\s*\1\s*\)/i,function(s,t,u){return u;});this.setValue(r);},commit:function(n,o,p,q){q.removeAttribute('background');var r=this.getValue();if(r)q.setStyle('background-image','url('+r+')');else k(q,'background-image','none');}},{type:'button',id:'bgImageChoose',label:c.browseServer,style:'display:inline-block;margin-top:10px;',hidden:true,filebrowser:'design:bgImage'}]},{type:'checkbox',id:'bgFixed',label:b.bgFixed,setup:function(n,o,p,q){this.setValue(q.getComputedStyle('background-attachment')=='fixed');},commit:function(n,o,p,q){if(this.getValue())q.setStyle('background-attachment','fixed');else k(q,'background-attachment','scroll');}}]},{type:'vbox',children:[{type:'html',id:'marginTitle',html:'<div style="text-align: center; margin: 0px auto; font-weight: bold">'+b.margin+'</div>'},{type:'text',id:'marginTop',label:b.marginTop,style:'width: 80px; text-align: center',align:'center',inputStyle:'text-align: center',setup:function(n,o,p,q){this.setValue(q.getStyle('margin-top')||q.getAttribute('margintop')||'');},commit:i('top')},{type:'hbox',children:[{type:'text',id:'marginLeft',label:b.marginLeft,style:'width: 80px; text-align: center',align:'center',inputStyle:'text-align: center',setup:function(n,o,p,q){this.setValue(q.getStyle('margin-left')||q.getAttribute('marginleft')||'');},commit:i('left')},{type:'text',id:'marginRight',label:b.marginRight,style:'width: 80px; text-align: center',align:'center',inputStyle:'text-align: center',setup:function(n,o,p,q){this.setValue(q.getStyle('margin-right')||q.getAttribute('marginright')||'');},commit:i('right')}]},{type:'text',id:'marginBottom',label:b.marginBottom,style:'width: 80px; text-align: center',align:'center',inputStyle:'text-align: center',setup:function(n,o,p,q){this.setValue(q.getStyle('margin-bottom')||q.getAttribute('marginbottom')||'');},commit:i('bottom')}]}]}]},{id:'meta',label:b.meta,elements:[{type:'textarea',id:'metaKeywords',label:b.metaKeywords,setup:h('keywords'),commit:g('keywords')},{type:'textarea',id:'metaDescription',label:b.metaDescription,setup:h('description'),commit:g('description')},{type:'text',id:'metaAuthor',label:b.metaAuthor,setup:h('author'),commit:g('author')},{type:'text',id:'metaCopyright',label:b.metaCopyright,setup:h('copyright'),commit:g('copyright')}]},{id:'preview',label:c.preview,elements:[{type:'html',id:'previewHtml',html:'<iframe src="'+m+'" style="width: 100%; height: 310px" hidefocus="true" frameborder="0" '+'id="cke_docProps_preview_iframe"></iframe>',onLoad:function(){this.getDialog().on('selectPage',function(n){if(n.data.page=='preview'){var o=this;
+setTimeout(function(){var p=CKEDITOR.document.getById('cke_docProps_preview_iframe').getFrameDocument(),q=p.getElementsByTag('html').getItem(0),r=p.getHead(),s=p.getBody();o.commitContent(p,q,r,s,1);},50);}});CKEDITOR.document.getById('cke_docProps_preview_iframe').getAscendant('table').setStyle('height','100%');}}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/docprops/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/docprops/plugin.js
new file mode 100755
index 0000000..807d2e9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/docprops/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('docprops',{init:function(a){var b=new CKEDITOR.dialogCommand('docProps');b.modes={wysiwyg:a.config.fullPage};a.addCommand('docProps',b);CKEDITOR.dialog.add('docProps',this.path+'dialogs/docprops.js');a.ui.addButton('DocProps',{label:a.lang.docprops.label,command:'docProps'});}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/find/dialogs/find.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/find/dialogs/find.js
new file mode 100755
index 0000000..f95a13a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/find/dialogs/find.js
@@ -0,0 +1,10 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a;function b(i){return i.type==CKEDITOR.NODE_TEXT&&i.getLength()>0&&(!a||!i.isReadOnly());};function c(i){return!(i.type==CKEDITOR.NODE_ELEMENT&&i.isBlockBoundary(CKEDITOR.tools.extend({},CKEDITOR.dtd.$empty,CKEDITOR.dtd.$nonEditable)));};var d=function(){var i=this;return{textNode:i.textNode,offset:i.offset,character:i.textNode?i.textNode.getText().charAt(i.offset):null,hitMatchBoundary:i._.matchBoundary};},e=['find','replace'],f=[['txtFindFind','txtFindReplace'],['txtFindCaseChk','txtReplaceCaseChk'],['txtFindWordChk','txtReplaceWordChk'],['txtFindCyclic','txtReplaceCyclic']];function g(i){var j,k,l,m;j=i==='find'?1:0;k=1-j;var n,o=f.length;for(n=0;n<o;n++){l=this.getContentElement(e[j],f[n][j]);m=this.getContentElement(e[k],f[n][k]);m.setValue(l.getValue());}};var h=function(i,j){var k=new CKEDITOR.style(CKEDITOR.tools.extend({attributes:{'data-cke-highlight':1},fullMatch:1,ignoreReadonly:1,childRule:function(){return 0;}},i.config.find_highlight,true)),l=function(y,z){var A=this,B=new CKEDITOR.dom.walker(y);B.guard=z?c:function(C){!c(C)&&(A._.matchBoundary=true);};B.evaluator=b;B.breakOnFalse=1;if(y.startContainer.type==CKEDITOR.NODE_TEXT){this.textNode=y.startContainer;this.offset=y.startOffset-1;}this._={matchWord:z,walker:B,matchBoundary:false};};l.prototype={next:function(){return this.move();},back:function(){return this.move(true);},move:function(y){var A=this;var z=A.textNode;if(z===null)return d.call(A);A._.matchBoundary=false;if(z&&y&&A.offset>0){A.offset--;return d.call(A);}else if(z&&A.offset<z.getLength()-1){A.offset++;return d.call(A);}else{z=null;while(!z){z=A._.walker[y?'previous':'next'].call(A._.walker);if(A._.matchWord&&!z||A._.walker._.end)break;}A.textNode=z;if(z)A.offset=y?z.getLength()-1:0;else A.offset=0;}return d.call(A);}};var m=function(y,z){this._={walker:y,cursors:[],rangeLength:z,highlightRange:null,isMatched:0};};m.prototype={toDomRange:function(){var y=new CKEDITOR.dom.range(i.document),z=this._.cursors;if(z.length<1){var A=this._.walker.textNode;if(A)y.setStartAfter(A);else return null;}else{var B=z[0],C=z[z.length-1];y.setStart(B.textNode,B.offset);y.setEnd(C.textNode,C.offset+1);}return y;},updateFromDomRange:function(y){var B=this;var z,A=new l(y);B._.cursors=[];do{z=A.next();if(z.character)B._.cursors.push(z);}while(z.character);B._.rangeLength=B._.cursors.length;},setMatched:function(){this._.isMatched=true;},clearMatched:function(){this._.isMatched=false;},isMatched:function(){return this._.isMatched;
+},highlight:function(){var B=this;if(B._.cursors.length<1)return;if(B._.highlightRange)B.removeHighlight();var y=B.toDomRange(),z=y.createBookmark();k.applyToRange(y);y.moveToBookmark(z);B._.highlightRange=y;var A=y.startContainer;if(A.type!=CKEDITOR.NODE_ELEMENT)A=A.getParent();A.scrollIntoView();B.updateFromDomRange(y);},removeHighlight:function(){var z=this;if(!z._.highlightRange)return;var y=z._.highlightRange.createBookmark();k.removeFromRange(z._.highlightRange);z._.highlightRange.moveToBookmark(y);z.updateFromDomRange(z._.highlightRange);z._.highlightRange=null;},isReadOnly:function(){if(!this._.highlightRange)return 0;return this._.highlightRange.startContainer.isReadOnly();},moveBack:function(){var A=this;var y=A._.walker.back(),z=A._.cursors;if(y.hitMatchBoundary)A._.cursors=z=[];z.unshift(y);if(z.length>A._.rangeLength)z.pop();return y;},moveNext:function(){var A=this;var y=A._.walker.next(),z=A._.cursors;if(y.hitMatchBoundary)A._.cursors=z=[];z.push(y);if(z.length>A._.rangeLength)z.shift();return y;},getEndCharacter:function(){var y=this._.cursors;if(y.length<1)return null;return y[y.length-1].character;},getNextCharacterRange:function(y){var z,A,B=this._.cursors;if((z=B[B.length-1])&&z.textNode)A=new l(n(z));else A=this._.walker;return new m(A,y);},getCursors:function(){return this._.cursors;}};function n(y,z){var A=new CKEDITOR.dom.range();A.setStart(y.textNode,z?y.offset:y.offset+1);A.setEndAt(i.document.getBody(),CKEDITOR.POSITION_BEFORE_END);return A;};function o(y){var z=new CKEDITOR.dom.range();z.setStartAt(i.document.getBody(),CKEDITOR.POSITION_AFTER_START);z.setEnd(y.textNode,y.offset);return z;};var p=0,q=1,r=2,s=function(y,z){var A=[-1];if(z)y=y.toLowerCase();for(var B=0;B<y.length;B++){A.push(A[B]+1);while(A[B+1]>0&&y.charAt(B)!=y.charAt(A[B+1]-1))A[B+1]=A[A[B+1]-1]+1;}this._={overlap:A,state:0,ignoreCase:!!z,pattern:y};};s.prototype={feedCharacter:function(y){var z=this;if(z._.ignoreCase)y=y.toLowerCase();for(;;){if(y==z._.pattern.charAt(z._.state)){z._.state++;if(z._.state==z._.pattern.length){z._.state=0;return r;}return q;}else if(!z._.state)return p;else z._.state=z._.overlap[z._.state];}return null;},reset:function(){this._.state=0;}};var t=/[.,"'?!;: \u0085\u00a0\u1680\u280e\u2028\u2029\u202f\u205f\u3000]/,u=function(y){if(!y)return true;var z=y.charCodeAt(0);return z>=9&&z<=13||z>=8192&&z<=8202||t.test(y);},v={searchRange:null,matchRange:null,find:function(y,z,A,B,C,D){var O=this;if(!O.matchRange)O.matchRange=new m(new l(O.searchRange),y.length);
+else{O.matchRange.removeHighlight();O.matchRange=O.matchRange.getNextCharacterRange(y.length);}var E=new s(y,!z),F=p,G='%';while(G!==null){O.matchRange.moveNext();while(G=O.matchRange.getEndCharacter()){F=E.feedCharacter(G);if(F==r)break;if(O.matchRange.moveNext().hitMatchBoundary)E.reset();}if(F==r){if(A){var H=O.matchRange.getCursors(),I=H[H.length-1],J=H[0],K=o(J),L=n(I);K.trim();L.trim();var M=new l(K,true),N=new l(L,true);if(!(u(M.back().character)&&u(N.next().character)))continue;}O.matchRange.setMatched();if(C!==false)O.matchRange.highlight();return true;}}O.matchRange.clearMatched();O.matchRange.removeHighlight();if(B&&!D){O.searchRange=w(1);O.matchRange=null;return arguments.callee.apply(O,Array.prototype.slice.call(arguments).concat([true]));}return false;},replaceCounter:0,replace:function(y,z,A,B,C,D,E){var J=this;a=1;var F=0;if(J.matchRange&&J.matchRange.isMatched()&&!J.matchRange._.isReplaced&&!J.matchRange.isReadOnly()){J.matchRange.removeHighlight();var G=J.matchRange.toDomRange(),H=i.document.createText(A);if(!E){var I=i.getSelection();I.selectRanges([G]);i.fire('saveSnapshot');}G.deleteContents();G.insertNode(H);if(!E){I.selectRanges([G]);i.fire('saveSnapshot');}J.matchRange.updateFromDomRange(G);if(!E)J.matchRange.highlight();J.matchRange._.isReplaced=true;J.replaceCounter++;F=1;}else F=J.find(z,B,C,D,!E);a=0;return F;}};function w(y){var z,A=i.getSelection(),B=i.document.getBody();if(A&&!y){z=A.getRanges()[0].clone();z.collapse(true);}else{z=new CKEDITOR.dom.range();z.setStartAt(B,CKEDITOR.POSITION_AFTER_START);}z.setEndAt(B,CKEDITOR.POSITION_BEFORE_END);return z;};var x=i.lang.findAndReplace;return{title:x.title,resizable:CKEDITOR.DIALOG_RESIZE_NONE,minWidth:350,minHeight:170,buttons:[CKEDITOR.dialog.cancelButton],contents:[{id:'find',label:x.find,title:x.find,accessKey:'',elements:[{type:'hbox',widths:['230px','90px'],children:[{type:'text',id:'txtFindFind',label:x.findWhat,isChanged:false,labelLayout:'horizontal',accessKey:'F'},{type:'button',id:'btnFind',align:'left',style:'width:100%',label:x.find,onClick:function(){var y=this.getDialog();if(!v.find(y.getValueOf('find','txtFindFind'),y.getValueOf('find','txtFindCaseChk'),y.getValueOf('find','txtFindWordChk'),y.getValueOf('find','txtFindCyclic')))alert(x.notFoundMsg);}}]},{type:'fieldset',label:CKEDITOR.tools.htmlEncode(x.findOptions),style:'margin-top:29px',children:[{type:'vbox',padding:0,children:[{type:'checkbox',id:'txtFindCaseChk',isChanged:false,label:x.matchCase},{type:'checkbox',id:'txtFindWordChk',isChanged:false,label:x.matchWord},{type:'checkbox',id:'txtFindCyclic',isChanged:false,'default':true,label:x.matchCyclic}]}]}]},{id:'replace',label:x.replace,accessKey:'M',elements:[{type:'hbox',widths:['230px','90px'],children:[{type:'text',id:'txtFindReplace',label:x.findWhat,isChanged:false,labelLayout:'horizontal',accessKey:'F'},{type:'button',id:'btnFindReplace',align:'left',style:'width:100%',label:x.replace,onClick:function(){var y=this.getDialog();
+if(!v.replace(y,y.getValueOf('replace','txtFindReplace'),y.getValueOf('replace','txtReplace'),y.getValueOf('replace','txtReplaceCaseChk'),y.getValueOf('replace','txtReplaceWordChk'),y.getValueOf('replace','txtReplaceCyclic')))alert(x.notFoundMsg);}}]},{type:'hbox',widths:['230px','90px'],children:[{type:'text',id:'txtReplace',label:x.replaceWith,isChanged:false,labelLayout:'horizontal',accessKey:'R'},{type:'button',id:'btnReplaceAll',align:'left',style:'width:100%',label:x.replaceAll,isChanged:false,onClick:function(){var y=this.getDialog(),z;v.replaceCounter=0;v.searchRange=w(1);if(v.matchRange){v.matchRange.removeHighlight();v.matchRange=null;}i.fire('saveSnapshot');while(v.replace(y,y.getValueOf('replace','txtFindReplace'),y.getValueOf('replace','txtReplace'),y.getValueOf('replace','txtReplaceCaseChk'),y.getValueOf('replace','txtReplaceWordChk'),false,true)){}if(v.replaceCounter){alert(x.replaceSuccessMsg.replace(/%1/,v.replaceCounter));i.fire('saveSnapshot');}else alert(x.notFoundMsg);}}]},{type:'fieldset',label:CKEDITOR.tools.htmlEncode(x.findOptions),children:[{type:'vbox',padding:0,children:[{type:'checkbox',id:'txtReplaceCaseChk',isChanged:false,label:x.matchCase},{type:'checkbox',id:'txtReplaceWordChk',isChanged:false,label:x.matchWord},{type:'checkbox',id:'txtReplaceCyclic',isChanged:false,'default':true,label:x.matchCyclic}]}]}]}],onLoad:function(){var y=this,z,A,B=0;this.on('hide',function(){B=0;});this.on('show',function(){B=1;});this.selectPage=CKEDITOR.tools.override(this.selectPage,function(C){return function(D){C.call(y,D);var E=y._.tabs[D],F,G,H;G=D==='find'?'txtFindFind':'txtFindReplace';H=D==='find'?'txtFindWordChk':'txtReplaceWordChk';z=y.getContentElement(D,G);A=y.getContentElement(D,H);if(!E.initialized){F=CKEDITOR.document.getById(z._.inputId);E.initialized=true;}if(B)g.call(this,D);};});},onShow:function(){var B=this;v.searchRange=w();var y=B.getParentEditor().getSelection().getSelectedText(),z=j=='find'?'txtFindFind':'txtFindReplace',A=B.getContentElement(j,z);A.setValue(y);A.select();B.selectPage(j);B[(j=='find'&&B._.editor.readOnly?'hide':'show')+'Page']('replace');},onHide:function(){var y;if(v.matchRange&&v.matchRange.isMatched()){v.matchRange.removeHighlight();i.focus();y=v.matchRange.toDomRange();if(y)i.getSelection().selectRanges([y]);}delete v.matchRange;},onFocus:function(){if(j=='replace')return this.getContentElement('replace','txtFindReplace');else return this.getContentElement('find','txtFindFind');}};};CKEDITOR.dialog.add('find',function(i){return h(i,'find');
+});CKEDITOR.dialog.add('replace',function(i){return h(i,'replace');});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/flash/dialogs/flash.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/flash/dialogs/flash.js
new file mode 100755
index 0000000..604c346
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/flash/dialogs/flash.js
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=1,b=2,c=4,d={id:[{type:a,name:'id'}],classid:[{type:a,name:'classid'}],codebase:[{type:a,name:'codebase'}],pluginspage:[{type:c,name:'pluginspage'}],src:[{type:b,name:'movie'},{type:c,name:'src'},{type:a,name:'data'}],name:[{type:c,name:'name'}],align:[{type:a,name:'align'}],'class':[{type:a,name:'class'},{type:c,name:'class'}],width:[{type:a,name:'width'},{type:c,name:'width'}],height:[{type:a,name:'height'},{type:c,name:'height'}],hSpace:[{type:a,name:'hSpace'},{type:c,name:'hSpace'}],vSpace:[{type:a,name:'vSpace'},{type:c,name:'vSpace'}],style:[{type:a,name:'style'},{type:c,name:'style'}],type:[{type:c,name:'type'}]},e=['play','loop','menu','quality','scale','salign','wmode','bgcolor','base','flashvars','allowScriptAccess','allowFullScreen'];for(var f=0;f<e.length;f++)d[e[f]]=[{type:c,name:e[f]},{type:b,name:e[f]}];e=['allowFullScreen','play','loop','menu'];for(f=0;f<e.length;f++)d[e[f]][0]['default']=d[e[f]][1]['default']=true;var g=CKEDITOR.tools.cssLength;function h(j,k,l){var r=this;var m=d[r.id];if(!m)return;var n=r instanceof CKEDITOR.ui.dialog.checkbox;for(var o=0;o<m.length;o++){var p=m[o];switch(p.type){case a:if(!j)continue;if(j.getAttribute(p.name)!==null){var q=j.getAttribute(p.name);if(n)r.setValue(q.toLowerCase()=='true');else r.setValue(q);return;}else if(n)r.setValue(!!p['default']);break;case b:if(!j)continue;if(p.name in l){q=l[p.name];if(n)r.setValue(q.toLowerCase()=='true');else r.setValue(q);return;}else if(n)r.setValue(!!p['default']);break;case c:if(!k)continue;if(k.getAttribute(p.name)){q=k.getAttribute(p.name);if(n)r.setValue(q.toLowerCase()=='true');else r.setValue(q);return;}else if(n)r.setValue(!!p['default']);}}};function i(j,k,l){var t=this;var m=d[t.id];if(!m)return;var n=t.getValue()==='',o=t instanceof CKEDITOR.ui.dialog.checkbox;for(var p=0;p<m.length;p++){var q=m[p];switch(q.type){case a:if(!j||q.name=='data'&&k&&!j.hasAttribute('data'))continue;var r=t.getValue();if(n||o&&r===q['default'])j.removeAttribute(q.name);else j.setAttribute(q.name,r);break;case b:if(!j)continue;r=t.getValue();if(n||o&&r===q['default']){if(q.name in l)l[q.name].remove();}else if(q.name in l)l[q.name].setAttribute('value',r);else{var s=CKEDITOR.dom.element.createFromHtml('<cke:param></cke:param>',j.getDocument());s.setAttributes({name:q.name,value:r});if(j.getChildCount()<1)s.appendTo(j);else s.insertBefore(j.getFirst());}break;case c:if(!k)continue;r=t.getValue();if(n||o&&r===q['default'])k.removeAttribute(q.name);else k.setAttribute(q.name,r);
+}}};CKEDITOR.dialog.add('flash',function(j){var k=!j.config.flashEmbedTagOnly,l=j.config.flashAddEmbedTag||j.config.flashEmbedTagOnly,m,n='<div>'+CKEDITOR.tools.htmlEncode(j.lang.common.preview)+'<br>'+'<div id="cke_FlashPreviewLoader'+CKEDITOR.tools.getNextNumber()+'" style="display:none"><div class="loading"> </div></div>'+'<div id="cke_FlashPreviewBox'+CKEDITOR.tools.getNextNumber()+'" class="FlashPreviewBox"></div></div>';return{title:j.lang.flash.title,minWidth:420,minHeight:310,onShow:function(){var A=this;A.fakeImage=A.objectNode=A.embedNode=null;m=new CKEDITOR.dom.element('embed',j.document);var o=A.getSelectedElement();if(o&&o.data('cke-real-element-type')&&o.data('cke-real-element-type')=='flash'){A.fakeImage=o;var p=j.restoreRealElement(o),q=null,r=null,s={};if(p.getName()=='cke:object'){q=p;var t=q.getElementsByTag('embed','cke');if(t.count()>0)r=t.getItem(0);var u=q.getElementsByTag('param','cke');for(var v=0,w=u.count();v<w;v++){var x=u.getItem(v),y=x.getAttribute('name'),z=x.getAttribute('value');s[y]=z;}}else if(p.getName()=='cke:embed')r=p;A.objectNode=q;A.embedNode=r;A.setupContent(q,r,s,o);}},onOk:function(){var y=this;var o=null,p=null,q=null;if(!y.fakeImage){if(k){o=CKEDITOR.dom.element.createFromHtml('<cke:object></cke:object>',j.document);var r={classid:'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',codebase:'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'};o.setAttributes(r);}if(l){p=CKEDITOR.dom.element.createFromHtml('<cke:embed></cke:embed>',j.document);p.setAttributes({type:'application/x-shockwave-flash',pluginspage:'http://www.macromedia.com/go/getflashplayer'});if(o)p.appendTo(o);}}else{o=y.objectNode;p=y.embedNode;}if(o){q={};var s=o.getElementsByTag('param','cke');for(var t=0,u=s.count();t<u;t++)q[s.getItem(t).getAttribute('name')]=s.getItem(t);}var v={},w={};y.commitContent(o,p,q,v,w);var x=j.createFakeElement(o||p,'cke_flash','flash',true);x.setAttributes(w);x.setStyles(v);if(y.fakeImage){x.replace(y.fakeImage);j.getSelection().selectElement(x);}else j.insertElement(x);},onHide:function(){if(this.preview)this.preview.setHtml('');},contents:[{id:'info',label:j.lang.common.generalTab,accessKey:'I',elements:[{type:'vbox',padding:0,children:[{type:'hbox',widths:['280px','110px'],align:'right',children:[{id:'src',type:'text',label:j.lang.common.url,required:true,validate:CKEDITOR.dialog.validate.notEmpty(j.lang.flash.validateSrc),setup:h,commit:i,onLoad:function(){var o=this.getDialog(),p=function(q){m.setAttribute('src',q);
+o.preview.setHtml('<embed height="100%" width="100%" src="'+CKEDITOR.tools.htmlEncode(m.getAttribute('src'))+'" type="application/x-shockwave-flash"></embed>');};o.preview=o.getContentElement('info','preview').getElement().getChild(3);this.on('change',function(q){if(q.data&&q.data.value)p(q.data.value);});this.getInputElement().on('change',function(q){p(this.getValue());},this);}},{type:'button',id:'browse',filebrowser:'info:src',hidden:true,style:'display:inline-block;margin-top:10px;',label:j.lang.common.browseServer}]}]},{type:'hbox',widths:['25%','25%','25%','25%','25%'],children:[{type:'text',id:'width',style:'width:95px',label:j.lang.common.width,validate:CKEDITOR.dialog.validate.htmlLength(j.lang.common.invalidHtmlLength.replace('%1',j.lang.common.width)),setup:h,commit:i},{type:'text',id:'height',style:'width:95px',label:j.lang.common.height,validate:CKEDITOR.dialog.validate.htmlLength(j.lang.common.invalidHtmlLength.replace('%1',j.lang.common.height)),setup:h,commit:i},{type:'text',id:'hSpace',style:'width:95px',label:j.lang.flash.hSpace,validate:CKEDITOR.dialog.validate.integer(j.lang.flash.validateHSpace),setup:h,commit:i},{type:'text',id:'vSpace',style:'width:95px',label:j.lang.flash.vSpace,validate:CKEDITOR.dialog.validate.integer(j.lang.flash.validateVSpace),setup:h,commit:i}]},{type:'vbox',children:[{type:'html',id:'preview',style:'width:95%;',html:n}]}]},{id:'Upload',hidden:true,filebrowser:'uploadButton',label:j.lang.common.upload,elements:[{type:'file',id:'upload',label:j.lang.common.upload,size:38},{type:'fileButton',id:'uploadButton',label:j.lang.common.uploadSubmit,filebrowser:'info:src','for':['Upload','upload']}]},{id:'properties',label:j.lang.flash.propertiesTab,elements:[{type:'hbox',widths:['50%','50%'],children:[{id:'scale',type:'select',label:j.lang.flash.scale,'default':'',style:'width : 100%;',items:[[j.lang.common.notSet,''],[j.lang.flash.scaleAll,'showall'],[j.lang.flash.scaleNoBorder,'noborder'],[j.lang.flash.scaleFit,'exactfit']],setup:h,commit:i},{id:'allowScriptAccess',type:'select',label:j.lang.flash.access,'default':'',style:'width : 100%;',items:[[j.lang.common.notSet,''],[j.lang.flash.accessAlways,'always'],[j.lang.flash.accessSameDomain,'samedomain'],[j.lang.flash.accessNever,'never']],setup:h,commit:i}]},{type:'hbox',widths:['50%','50%'],children:[{id:'wmode',type:'select',label:j.lang.flash.windowMode,'default':'',style:'width : 100%;',items:[[j.lang.common.notSet,''],[j.lang.flash.windowModeWindow,'window'],[j.lang.flash.windowModeOpaque,'opaque'],[j.lang.flash.windowModeTransparent,'transparent']],setup:h,commit:i},{id:'quality',type:'select',label:j.lang.flash.quality,'default':'high',style:'width : 100%;',items:[[j.lang.common.notSet,''],[j.lang.flash.qualityBest,'best'],[j.lang.flash.qualityHigh,'high'],[j.lang.flash.qualityAutoHigh,'autohigh'],[j.lang.flash.qualityMedium,'medium'],[j.lang.flash.qualityAutoLow,'autolow'],[j.lang.flash.qualityLow,'low']],setup:h,commit:i}]},{type:'hbox',widths:['50%','50%'],children:[{id:'align',type:'select',label:j.lang.common.align,'default':'',style:'width : 100%;',items:[[j.lang.common.notSet,''],[j.lang.common.alignLeft,'left'],[j.lang.flash.alignAbsBottom,'absBottom'],[j.lang.flash.alignAbsMiddle,'absMiddle'],[j.lang.flash.alignBaseline,'baseline'],[j.lang.common.alignBottom,'bottom'],[j.lang.common.alignMiddle,'middle'],[j.lang.common.alignRight,'right'],[j.lang.flash.alignTextTop,'textTop'],[j.lang.common.alignTop,'top']],setup:h,commit:function(o,p,q,r,s){var t=this.getValue();
+i.apply(this,arguments);t&&(s.align=t);}},{type:'html',html:'<div></div>'}]},{type:'fieldset',label:CKEDITOR.tools.htmlEncode(j.lang.flash.flashvars),children:[{type:'vbox',padding:0,children:[{type:'checkbox',id:'menu',label:j.lang.flash.chkMenu,'default':true,setup:h,commit:i},{type:'checkbox',id:'play',label:j.lang.flash.chkPlay,'default':true,setup:h,commit:i},{type:'checkbox',id:'loop',label:j.lang.flash.chkLoop,'default':true,setup:h,commit:i},{type:'checkbox',id:'allowFullScreen',label:j.lang.flash.chkFull,'default':true,setup:h,commit:i}]}]}]},{id:'advanced',label:j.lang.common.advancedTab,elements:[{type:'hbox',children:[{type:'text',id:'id',label:j.lang.common.id,setup:h,commit:i}]},{type:'hbox',widths:['45%','55%'],children:[{type:'text',id:'bgcolor',label:j.lang.flash.bgcolor,setup:h,commit:i},{type:'text',id:'class',label:j.lang.common.cssClass,setup:h,commit:i}]},{type:'text',id:'style',validate:CKEDITOR.dialog.validate.inlineStyle(j.lang.common.invalidInlineStyle),label:j.lang.common.cssStyle,setup:h,commit:i}]}]};});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/flash/images/placeholder.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/flash/images/placeholder.png
new file mode 100755
index 0000000..0bc6caa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/flash/images/placeholder.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/button.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/button.js
new file mode 100755
index 0000000..6030fd4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/button.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('button',function(a){function b(c){var e=this;var d=e.getValue();if(d){c.attributes[e.id]=d;if(e.id=='name')c.attributes['data-cke-saved-name']=d;}else{delete c.attributes[e.id];if(e.id=='name')delete c.attributes['data-cke-saved-name'];}};return{title:a.lang.button.title,minWidth:350,minHeight:150,onShow:function(){var e=this;delete e.button;var c=e.getParentEditor().getSelection().getSelectedElement();if(c&&c.is('input')){var d=c.getAttribute('type');if(d in {button:1,reset:1,submit:1}){e.button=c;e.setupContent(c);}}},onOk:function(){var c=this.getParentEditor(),d=this.button,e=!d,f=d?CKEDITOR.htmlParser.fragment.fromHtml(d.getOuterHtml()).children[0]:new CKEDITOR.htmlParser.element('input');this.commitContent(f);var g=new CKEDITOR.htmlParser.basicWriter();f.writeHtml(g);var h=CKEDITOR.dom.element.createFromHtml(g.getHtml(),c.document);if(e)c.insertElement(h);else{h.replace(d);c.getSelection().selectElement(h);}},contents:[{id:'info',label:a.lang.button.title,title:a.lang.button.title,elements:[{id:'name',type:'text',label:a.lang.common.name,'default':'',setup:function(c){this.setValue(c.data('cke-saved-name')||c.getAttribute('name')||'');},commit:b},{id:'value',type:'text',label:a.lang.button.text,accessKey:'V','default':'',setup:function(c){this.setValue(c.getAttribute('value')||'');},commit:b},{id:'type',type:'select',label:a.lang.button.type,'default':'button',accessKey:'T',items:[[a.lang.button.typeBtn,'button'],[a.lang.button.typeSbm,'submit'],[a.lang.button.typeRst,'reset']],setup:function(c){this.setValue(c.getAttribute('type')||'');},commit:b}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/checkbox.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/checkbox.js
new file mode 100755
index 0000000..45c8760
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/checkbox.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('checkbox',function(a){return{title:a.lang.checkboxAndRadio.checkboxTitle,minWidth:350,minHeight:140,onShow:function(){var c=this;delete c.checkbox;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getAttribute('type')=='checkbox'){c.checkbox=b;c.setupContent(b);}},onOk:function(){var b,c=this.checkbox,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');c.setAttribute('type','checkbox');b.insertElement(c);}this.commitContent({element:c});},contents:[{id:'info',label:a.lang.checkboxAndRadio.checkboxTitle,title:a.lang.checkboxAndRadio.checkboxTitle,startupFocus:'txtName',elements:[{id:'txtName',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.data('cke-saved-name')||b.getAttribute('name')||'');},commit:function(b){var c=b.element;if(this.getValue())c.data('cke-saved-name',this.getValue());else{c.data('cke-saved-name',false);c.removeAttribute('name');}}},{id:'txtValue',type:'text',label:a.lang.checkboxAndRadio.value,'default':'',accessKey:'V',setup:function(b){var c=b.getAttribute('value');this.setValue(CKEDITOR.env.ie&&c=='on'?'':c);},commit:function(b){var c=b.element,d=this.getValue();if(d&&!(CKEDITOR.env.ie&&d=='on'))c.setAttribute('value',d);else if(CKEDITOR.env.ie){var e=new CKEDITOR.dom.element('input',c.getDocument());c.copyAttributes(e,{value:1});e.replace(c);a.getSelection().selectElement(e);b.element=e;}else c.removeAttribute('value');}},{id:'cmbSelected',type:'checkbox',label:a.lang.checkboxAndRadio.selected,'default':'',accessKey:'S',value:'checked',setup:function(b){this.setValue(b.getAttribute('checked'));},commit:function(b){var c=b.element;if(CKEDITOR.env.ie){var d=!!c.getAttribute('checked'),e=!!this.getValue();if(d!=e){var f=CKEDITOR.dom.element.createFromHtml('<input type="checkbox"'+(e?' checked="checked"':'')+'/>',a.document);c.copyAttributes(f,{type:1,checked:1});f.replace(c);a.getSelection().selectElement(f);b.element=f;}}else{var g=this.getValue();if(g)c.setAttribute('checked','checked');else c.removeAttribute('checked');}}}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/form.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/form.js
new file mode 100755
index 0000000..8b4e90f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/form.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('form',function(a){var b={action:1,id:1,method:1,enctype:1,target:1};return{title:a.lang.form.title,minWidth:350,minHeight:200,onShow:function(){var e=this;delete e.form;var c=e.getParentEditor().getSelection().getStartElement(),d=c&&c.getAscendant('form',true);if(d){e.form=d;e.setupContent(d);}},onOk:function(){var c,d=this.form,e=!d;if(e){c=this.getParentEditor();d=c.document.createElement('form');!CKEDITOR.env.ie&&d.append(c.document.createElement('br'));}if(e)c.insertElement(d);this.commitContent(d);},onLoad:function(){function c(e){this.setValue(e.getAttribute(this.id)||'');};function d(e){var f=this;if(f.getValue())e.setAttribute(f.id,f.getValue());else e.removeAttribute(f.id);};this.foreach(function(e){if(b[e.id]){e.setup=c;e.commit=d;}});},contents:[{id:'info',label:a.lang.form.title,title:a.lang.form.title,elements:[{id:'txtName',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(c){this.setValue(c.data('cke-saved-name')||c.getAttribute('name')||'');},commit:function(c){if(this.getValue())c.data('cke-saved-name',this.getValue());else{c.data('cke-saved-name',false);c.removeAttribute('name');}}},{id:'action',type:'text',label:a.lang.form.action,'default':'',accessKey:'T'},{type:'hbox',widths:['45%','55%'],children:[{id:'id',type:'text',label:a.lang.common.id,'default':'',accessKey:'I'},{id:'enctype',type:'select',label:a.lang.form.encoding,style:'width:100%',accessKey:'E','default':'',items:[[''],['text/plain'],['multipart/form-data'],['application/x-www-form-urlencoded']]}]},{type:'hbox',widths:['45%','55%'],children:[{id:'target',type:'select',label:a.lang.common.target,style:'width:100%',accessKey:'M','default':'',items:[[a.lang.common.notSet,''],[a.lang.common.targetNew,'_blank'],[a.lang.common.targetTop,'_top'],[a.lang.common.targetSelf,'_self'],[a.lang.common.targetParent,'_parent']]},{id:'method',type:'select',label:a.lang.form.method,accessKey:'M','default':'GET',items:[['GET','get'],['POST','post']]}]}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/hiddenfield.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/hiddenfield.js
new file mode 100755
index 0000000..0bce0cf
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/hiddenfield.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('hiddenfield',function(a){return{title:a.lang.hidden.title,hiddenField:null,minWidth:350,minHeight:110,onShow:function(){var e=this;delete e.hiddenField;var b=e.getParentEditor(),c=b.getSelection(),d=c.getSelectedElement();if(d&&d.data('cke-real-element-type')&&d.data('cke-real-element-type')=='hiddenfield'){e.hiddenField=d;d=b.restoreRealElement(e.hiddenField);e.setupContent(d);c.selectElement(e.hiddenField);}},onOk:function(){var g=this;var b=g.getValueOf('info','_cke_saved_name'),c=g.getValueOf('info','value'),d=g.getParentEditor(),e=CKEDITOR.env.ie&&!(CKEDITOR.document.$.documentMode>=8)?d.document.createElement('<input name="'+CKEDITOR.tools.htmlEncode(b)+'">'):d.document.createElement('input');e.setAttribute('type','hidden');g.commitContent(e);var f=d.createFakeElement(e,'cke_hidden','hiddenfield');if(!g.hiddenField)d.insertElement(f);else{f.replace(g.hiddenField);d.getSelection().selectElement(f);}return true;},contents:[{id:'info',label:a.lang.hidden.title,title:a.lang.hidden.title,elements:[{id:'_cke_saved_name',type:'text',label:a.lang.hidden.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.data('cke-saved-name')||b.getAttribute('name')||'');},commit:function(b){if(this.getValue())b.setAttribute('name',this.getValue());else b.removeAttribute('name');}},{id:'value',type:'text',label:a.lang.hidden.value,'default':'',accessKey:'V',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){if(this.getValue())b.setAttribute('value',this.getValue());else b.removeAttribute('value');}}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/radio.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/radio.js
new file mode 100755
index 0000000..4a05d9b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/radio.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('radio',function(a){return{title:a.lang.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,onShow:function(){var c=this;delete c.radioButton;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='input'&&b.getAttribute('type')=='radio'){c.radioButton=b;c.setupContent(b);}},onOk:function(){var b,c=this.radioButton,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');c.setAttribute('type','radio');}if(d)b.insertElement(c);this.commitContent({element:c});},contents:[{id:'info',label:a.lang.checkboxAndRadio.radioTitle,title:a.lang.checkboxAndRadio.radioTitle,elements:[{id:'name',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.data('cke-saved-name')||b.getAttribute('name')||'');},commit:function(b){var c=b.element;if(this.getValue())c.data('cke-saved-name',this.getValue());else{c.data('cke-saved-name',false);c.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.checkboxAndRadio.value,'default':'',accessKey:'V',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('value',this.getValue());else c.removeAttribute('value');}},{id:'checked',type:'checkbox',label:a.lang.checkboxAndRadio.selected,'default':'',accessKey:'S',value:'checked',setup:function(b){this.setValue(b.getAttribute('checked'));},commit:function(b){var c=b.element;if(!(CKEDITOR.env.ie||CKEDITOR.env.opera)){if(this.getValue())c.setAttribute('checked','checked');else c.removeAttribute('checked');}else{var d=c.getAttribute('checked'),e=!!this.getValue();if(d!=e){var f=CKEDITOR.dom.element.createFromHtml('<input type="radio"'+(e?' checked="checked"':'')+'></input>',a.document);c.copyAttributes(f,{type:1,checked:1});f.replace(c);a.getSelection().selectElement(f);b.element=f;}}}}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/select.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/select.js
new file mode 100755
index 0000000..37ec6d4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/select.js
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('select',function(a){function b(k,l,m,n,o){k=j(k);var p;if(n)p=n.createElement('OPTION');else p=document.createElement('OPTION');if(k&&p&&p.getName()=='option'){if(CKEDITOR.env.ie){if(!isNaN(parseInt(o,10)))k.$.options.add(p.$,o);else k.$.options.add(p.$);p.$.innerHTML=l.length>0?l:'';p.$.value=m;}else{if(o!==null&&o<k.getChildCount())k.getChild(o<0?0:o).insertBeforeMe(p);else k.append(p);p.setText(l.length>0?l:'');p.setValue(m);}}else return false;return p;};function c(k){k=j(k);var l=g(k);for(var m=k.getChildren().count()-1;m>=0;m--){if(k.getChild(m).$.selected)k.getChild(m).remove();}h(k,l);};function d(k,l,m,n){k=j(k);if(l<0)return false;var o=k.getChild(l);o.setText(m);o.setValue(n);return o;};function e(k){k=j(k);while(k.getChild(0)&&k.getChild(0).remove()){}};function f(k,l,m){k=j(k);var n=g(k);if(n<0)return false;var o=n+l;o=o<0?0:o;o=o>=k.getChildCount()?k.getChildCount()-1:o;if(n==o)return false;var p=k.getChild(n),q=p.getText(),r=p.getValue();p.remove();p=b(k,q,r,!m?null:m,o);h(k,o);return p;};function g(k){k=j(k);return k?k.$.selectedIndex:-1;};function h(k,l){k=j(k);if(l<0)return null;var m=k.getChildren().count();k.$.selectedIndex=l>=m?m-1:l;return k;};function i(k){k=j(k);return k?k.getChildren():false;};function j(k){if(k&&k.domId&&k.getInputElement().$)return k.getInputElement();else if(k&&k.$)return k;return false;};return{title:a.lang.select.title,minWidth:CKEDITOR.env.ie?460:395,minHeight:CKEDITOR.env.ie?320:300,onShow:function(){var n=this;delete n.selectBox;n.setupContent('clear');var k=n.getParentEditor().getSelection().getSelectedElement();if(k&&k.getName()=='select'){n.selectBox=k;n.setupContent(k.getName(),k);var l=i(k);for(var m=0;m<l.count();m++)n.setupContent('option',l.getItem(m));}},onOk:function(){var k=this.getParentEditor(),l=this.selectBox,m=!l;if(m)l=k.document.createElement('select');this.commitContent(l);if(m){k.insertElement(l);if(CKEDITOR.env.ie){var n=k.getSelection(),o=n.createBookmarks();setTimeout(function(){n.selectBookmarks(o);},0);}}},contents:[{id:'info',label:a.lang.select.selectInfo,title:a.lang.select.selectInfo,accessKey:'',elements:[{id:'txtName',type:'text',widths:['25%','75%'],labelLayout:'horizontal',label:a.lang.common.name,'default':'',accessKey:'N',style:'width:350px',setup:function(k,l){if(k=='clear')this.setValue(this['default']||'');else if(k=='select')this.setValue(l.data('cke-saved-name')||l.getAttribute('name')||'');},commit:function(k){if(this.getValue())k.data('cke-saved-name',this.getValue());
+else{k.data('cke-saved-name',false);k.removeAttribute('name');}}},{id:'txtValue',type:'text',widths:['25%','75%'],labelLayout:'horizontal',label:a.lang.select.value,style:'width:350px','default':'',className:'cke_disabled',onLoad:function(){this.getInputElement().setAttribute('readOnly',true);},setup:function(k,l){if(k=='clear')this.setValue('');else if(k=='option'&&l.getAttribute('selected'))this.setValue(l.$.value);}},{type:'hbox',widths:['175px','170px'],children:[{id:'txtSize',type:'text',labelLayout:'horizontal',label:a.lang.select.size,'default':'',accessKey:'S',style:'width:175px',validate:function(){var k=CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed);return this.getValue()===''||k.apply(this);},setup:function(k,l){if(k=='select')this.setValue(l.getAttribute('size')||'');if(CKEDITOR.env.webkit)this.getInputElement().setStyle('width','86px');},commit:function(k){if(this.getValue())k.setAttribute('size',this.getValue());else k.removeAttribute('size');}},{type:'html',html:'<span>'+CKEDITOR.tools.htmlEncode(a.lang.select.lines)+'</span>'}]},{type:'html',html:'<span>'+CKEDITOR.tools.htmlEncode(a.lang.select.opAvail)+'</span>'},{type:'hbox',widths:['115px','115px','100px'],children:[{type:'vbox',children:[{id:'txtOptName',type:'text',label:a.lang.select.opText,style:'width:115px',setup:function(k,l){if(k=='clear')this.setValue('');}},{type:'select',id:'cmbName',label:'',title:'',size:5,style:'width:115px;height:75px',items:[],onChange:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbValue'),m=k.getContentElement('info','txtOptName'),n=k.getContentElement('info','txtOptValue'),o=g(this);h(l,o);m.setValue(this.getValue());n.setValue(l.getValue());},setup:function(k,l){if(k=='clear')e(this);else if(k=='option')b(this,l.getText(),l.getText(),this.getDialog().getParentEditor().document);},commit:function(k){var l=this.getDialog(),m=i(this),n=i(l.getContentElement('info','cmbValue')),o=l.getContentElement('info','txtValue').getValue();e(k);for(var p=0;p<m.count();p++){var q=b(k,m.getItem(p).getValue(),n.getItem(p).getValue(),l.getParentEditor().document);if(n.getItem(p).getValue()==o){q.setAttribute('selected','selected');q.selected=true;}}}}]},{type:'vbox',children:[{id:'txtOptValue',type:'text',label:a.lang.select.opValue,style:'width:115px',setup:function(k,l){if(k=='clear')this.setValue('');}},{type:'select',id:'cmbValue',label:'',size:5,style:'width:115px;height:75px',items:[],onChange:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','txtOptName'),n=k.getContentElement('info','txtOptValue'),o=g(this);
+h(l,o);m.setValue(l.getValue());n.setValue(this.getValue());},setup:function(k,l){var n=this;if(k=='clear')e(n);else if(k=='option'){var m=l.getValue();b(n,m,m,n.getDialog().getParentEditor().document);if(l.getAttribute('selected')=='selected')n.getDialog().getContentElement('info','txtValue').setValue(m);}}}]},{type:'vbox',padding:5,children:[{type:'button',id:'btnAdd',style:'',label:a.lang.select.btnAdd,title:a.lang.select.btnAdd,style:'width:100%;',onClick:function(){var k=this.getDialog(),l=k.getParentEditor(),m=k.getContentElement('info','txtOptName'),n=k.getContentElement('info','txtOptValue'),o=k.getContentElement('info','cmbName'),p=k.getContentElement('info','cmbValue');b(o,m.getValue(),m.getValue(),k.getParentEditor().document);b(p,n.getValue(),n.getValue(),k.getParentEditor().document);m.setValue('');n.setValue('');}},{type:'button',id:'btnModify',label:a.lang.select.btnModify,title:a.lang.select.btnModify,style:'width:100%;',onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','txtOptName'),m=k.getContentElement('info','txtOptValue'),n=k.getContentElement('info','cmbName'),o=k.getContentElement('info','cmbValue'),p=g(n);if(p>=0){d(n,p,l.getValue(),l.getValue());d(o,p,m.getValue(),m.getValue());}}},{type:'button',id:'btnUp',style:'width:100%;',label:a.lang.select.btnUp,title:a.lang.select.btnUp,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','cmbValue');f(l,-1,k.getParentEditor().document);f(m,-1,k.getParentEditor().document);}},{type:'button',id:'btnDown',style:'width:100%;',label:a.lang.select.btnDown,title:a.lang.select.btnDown,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','cmbValue');f(l,1,k.getParentEditor().document);f(m,1,k.getParentEditor().document);}}]}]},{type:'hbox',widths:['40%','20%','40%'],children:[{type:'button',id:'btnSetValue',label:a.lang.select.btnSetValue,title:a.lang.select.btnSetValue,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbValue'),m=k.getContentElement('info','txtValue');m.setValue(l.getValue());}},{type:'button',id:'btnDelete',label:a.lang.select.btnDelete,title:a.lang.select.btnDelete,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','cmbValue'),n=k.getContentElement('info','txtOptName'),o=k.getContentElement('info','txtOptValue');c(l);c(m);n.setValue('');o.setValue('');}},{id:'chkMulti',type:'checkbox',label:a.lang.select.chkMulti,'default':'',accessKey:'M',value:'checked',setup:function(k,l){if(k=='select')this.setValue(l.getAttribute('multiple'));
+if(CKEDITOR.env.webkit)this.getElement().getParent().setStyle('vertical-align','middle');},commit:function(k){if(this.getValue())k.setAttribute('multiple',this.getValue());else k.removeAttribute('multiple');}}]}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/textarea.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/textarea.js
new file mode 100755
index 0000000..0ea4e72
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/textarea.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('textarea',function(a){return{title:a.lang.textarea.title,minWidth:350,minHeight:220,onShow:function(){var c=this;delete c.textarea;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='textarea'){c.textarea=b;c.setupContent(b);}},onOk:function(){var b,c=this.textarea,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('textarea');}this.commitContent(c);if(d)b.insertElement(c);},contents:[{id:'info',label:a.lang.textarea.title,title:a.lang.textarea.title,elements:[{id:'_cke_saved_name',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.data('cke-saved-name')||b.getAttribute('name')||'');},commit:function(b){if(this.getValue())b.data('cke-saved-name',this.getValue());else{b.data('cke-saved-name',false);b.removeAttribute('name');}}},{type:'hbox',widths:['50%','50%'],children:[{id:'cols',type:'text',label:a.lang.textarea.cols,'default':'',accessKey:'C',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed),setup:function(b){var c=b.hasAttribute('cols')&&b.getAttribute('cols');this.setValue(c||'');},commit:function(b){if(this.getValue())b.setAttribute('cols',this.getValue());else b.removeAttribute('cols');}},{id:'rows',type:'text',label:a.lang.textarea.rows,'default':'',accessKey:'R',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed),setup:function(b){var c=b.hasAttribute('rows')&&b.getAttribute('rows');this.setValue(c||'');},commit:function(b){if(this.getValue())b.setAttribute('rows',this.getValue());else b.removeAttribute('rows');}}]},{id:'value',type:'textarea',label:a.lang.textfield.value,'default':'',setup:function(b){this.setValue(b.$.defaultValue);},commit:function(b){b.$.value=b.$.defaultValue=this.getValue();}}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/textfield.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/textfield.js
new file mode 100755
index 0000000..23ee866
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/dialogs/textfield.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('textfield',function(a){var b={value:1,size:1,maxLength:1},c={text:1,password:1};return{title:a.lang.textfield.title,minWidth:350,minHeight:150,onShow:function(){var e=this;delete e.textField;var d=e.getParentEditor().getSelection().getSelectedElement();if(d&&d.getName()=='input'&&(c[d.getAttribute('type')]||!d.getAttribute('type'))){e.textField=d;e.setupContent(d);}},onOk:function(){var d,e=this.textField,f=!e;if(f){d=this.getParentEditor();e=d.document.createElement('input');e.setAttribute('type','text');}if(f)d.insertElement(e);this.commitContent({element:e});},onLoad:function(){var d=function(f){var g=f.hasAttribute(this.id)&&f.getAttribute(this.id);this.setValue(g||'');},e=function(f){var g=f.element,h=this.getValue();if(h)g.setAttribute(this.id,h);else g.removeAttribute(this.id);};this.foreach(function(f){if(b[f.id]){f.setup=d;f.commit=e;}});},contents:[{id:'info',label:a.lang.textfield.title,title:a.lang.textfield.title,elements:[{type:'hbox',widths:['50%','50%'],children:[{id:'_cke_saved_name',type:'text',label:a.lang.textfield.name,'default':'',accessKey:'N',setup:function(d){this.setValue(d.data('cke-saved-name')||d.getAttribute('name')||'');},commit:function(d){var e=d.element;if(this.getValue())e.data('cke-saved-name',this.getValue());else{e.data('cke-saved-name',false);e.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.textfield.value,'default':'',accessKey:'V'}]},{type:'hbox',widths:['50%','50%'],children:[{id:'size',type:'text',label:a.lang.textfield.charWidth,'default':'',accessKey:'C',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed)},{id:'maxLength',type:'text',label:a.lang.textfield.maxChars,'default':'',accessKey:'M',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed)}],onLoad:function(){if(CKEDITOR.env.ie7Compat)this.getElement().setStyle('zoom','100%');}},{id:'type',type:'select',label:a.lang.textfield.type,'default':'text',accessKey:'M',items:[[a.lang.textfield.typeText,'text'],[a.lang.textfield.typePass,'password']],setup:function(d){this.setValue(d.getAttribute('type'));},commit:function(d){var e=d.element;if(CKEDITOR.env.ie){var f=e.getAttribute('type'),g=this.getValue();if(f!=g){var h=CKEDITOR.dom.element.createFromHtml('<input type="'+g+'"></input>',a.document);e.copyAttributes(h,{type:1});h.replace(e);a.getSelection().selectElement(h);d.element=h;}}else e.setAttribute('type',this.getValue());}}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/images/hiddenfield.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/images/hiddenfield.gif
new file mode 100755
index 0000000..953f643
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/forms/images/hiddenfield.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/iframe/dialogs/iframe.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/iframe/dialogs/iframe.js
new file mode 100755
index 0000000..06ac17a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/iframe/dialogs/iframe.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={scrolling:{'true':'yes','false':'no'},frameborder:{'true':'1','false':'0'}};function b(d){var g=this;var e=g instanceof CKEDITOR.ui.dialog.checkbox;if(d.hasAttribute(g.id)){var f=d.getAttribute(g.id);if(e)g.setValue(a[g.id]['true']==f.toLowerCase());else g.setValue(f);}};function c(d){var h=this;var e=h.getValue()==='',f=h instanceof CKEDITOR.ui.dialog.checkbox,g=h.getValue();if(e)d.removeAttribute(h.att||h.id);else if(f)d.setAttribute(h.id,a[h.id][g]);else d.setAttribute(h.att||h.id,g);};CKEDITOR.dialog.add('iframe',function(d){var e=d.lang.iframe,f=d.lang.common,g=d.plugins.dialogadvtab;return{title:e.title,minWidth:350,minHeight:260,onShow:function(){var j=this;j.fakeImage=j.iframeNode=null;var h=j.getSelectedElement();if(h&&h.data('cke-real-element-type')&&h.data('cke-real-element-type')=='iframe'){j.fakeImage=h;var i=d.restoreRealElement(h);j.iframeNode=i;j.setupContent(i);}},onOk:function(){var l=this;var h;if(!l.fakeImage)h=new CKEDITOR.dom.element('iframe');else h=l.iframeNode;var i={},j={};l.commitContent(h,i,j);var k=d.createFakeElement(h,'cke_iframe','iframe',true);k.setAttributes(j);k.setStyles(i);if(l.fakeImage){k.replace(l.fakeImage);d.getSelection().selectElement(k);}else d.insertElement(k);},contents:[{id:'info',label:f.generalTab,accessKey:'I',elements:[{type:'vbox',padding:0,children:[{id:'src',type:'text',label:f.url,required:true,validate:CKEDITOR.dialog.validate.notEmpty(e.noUrl),setup:b,commit:c}]},{type:'hbox',children:[{id:'width',type:'text',style:'width:100%',labelLayout:'vertical',label:f.width,validate:CKEDITOR.dialog.validate.htmlLength(f.invalidHtmlLength.replace('%1',f.width)),setup:b,commit:c},{id:'height',type:'text',style:'width:100%',labelLayout:'vertical',label:f.height,validate:CKEDITOR.dialog.validate.htmlLength(f.invalidHtmlLength.replace('%1',f.height)),setup:b,commit:c},{id:'align',type:'select','default':'',items:[[f.notSet,''],[f.alignLeft,'left'],[f.alignRight,'right'],[f.alignTop,'top'],[f.alignMiddle,'middle'],[f.alignBottom,'bottom']],style:'width:100%',labelLayout:'vertical',label:f.align,setup:function(h,i){b.apply(this,arguments);if(i){var j=i.getAttribute('align');this.setValue(j&&j.toLowerCase()||'');}},commit:function(h,i,j){c.apply(this,arguments);if(this.getValue())j.align=this.getValue();}}]},{type:'hbox',widths:['50%','50%'],children:[{id:'scrolling',type:'checkbox',label:e.scrolling,setup:b,commit:c},{id:'frameborder',type:'checkbox',label:e.border,setup:b,commit:c}]},{type:'hbox',widths:['50%','50%'],children:[{id:'name',type:'text',label:f.name,setup:b,commit:c},{id:'title',type:'text',label:f.advisoryTitle,setup:b,commit:c}]},{id:'longdesc',type:'text',label:f.longDescr,setup:b,commit:c}]},g&&g.createAdvancedTab(d,{id:1,classes:1,styles:1})]};
+});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/iframe/images/placeholder.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/iframe/images/placeholder.png
new file mode 100755
index 0000000..b40c7b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/iframe/images/placeholder.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/iframedialog/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/iframedialog/plugin.js
new file mode 100755
index 0000000..52edc08
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/iframedialog/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('iframedialog',{requires:['dialog'],onLoad:function(){CKEDITOR.dialog.addIframe=function(a,b,c,d,e,f,g){var h={type:'iframe',src:c,width:'100%',height:'100%'};if(typeof f=='function')h.onContentLoad=f;else h.onContentLoad=function(){var k=this.getElement(),l=k.$.contentWindow;if(l.onDialogEvent){var m=this.getDialog(),n=function(o){return l.onDialogEvent(o);};m.on('ok',n);m.on('cancel',n);m.on('resize',n);m.on('hide',function(o){m.removeListener('ok',n);m.removeListener('cancel',n);m.removeListener('resize',n);o.removeListener();});l.onDialogEvent({name:'load',sender:this,editor:m._.editor});}};var i={title:b,minWidth:d,minHeight:e,contents:[{id:'iframe',label:b,expand:true,elements:[h]}]};for(var j in g)i[j]=g[j];this.add(a,function(){return i;});};(function(){var a=function(b,c,d){if(arguments.length<3)return;var e=this._||(this._={}),f=c.onContentLoad&&CKEDITOR.tools.bind(c.onContentLoad,this),g=CKEDITOR.tools.cssLength(c.width),h=CKEDITOR.tools.cssLength(c.height);e.frameId=CKEDITOR.tools.getNextId()+'_iframe';b.on('load',function(){var k=CKEDITOR.document.getById(e.frameId),l=k.getParent();l.setStyles({width:g,height:h});});var i={src:'%2',id:e.frameId,frameborder:0,allowtransparency:true},j=[];if(typeof c.onContentLoad=='function')i.onload='CKEDITOR.tools.callFunction(%1);';CKEDITOR.ui.dialog.uiElement.call(this,b,c,j,'iframe',{width:g,height:h},i,'');d.push('<div style="width:'+g+';height:'+h+';" id="'+this.domId+'"></div>');j=j.join('');b.on('show',function(){var k=CKEDITOR.document.getById(e.frameId),l=k.getParent(),m=CKEDITOR.tools.addFunction(f),n=j.replace('%1',m).replace('%2',CKEDITOR.tools.htmlEncode(c.src));l.setHtml(n);});};a.prototype=new CKEDITOR.ui.dialog.uiElement();CKEDITOR.dialog.addUIElement('iframe',{build:function(b,c,d){return new a(b,c,d);}});})();}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/image/dialogs/image.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/image/dialogs/image.js
new file mode 100755
index 0000000..0410b95
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/image/dialogs/image.js
@@ -0,0 +1,13 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=function(b,c){var d=1,e=2,f=4,g=8,h=/^\s*(\d+)((px)|\%)?\s*$/i,i=/(^\s*(\d+)((px)|\%)?\s*$)|^$/i,j=/^\d+px$/,k=function(){var B=this.getValue(),C=this.getDialog(),D=B.match(h);if(D){if(D[2]=='%')p(C,false);B=D[1];}if(C.lockRatio){var E=C.originalElement;if(E.getCustomData('isReady')=='true')if(this.id=='txtHeight'){if(B&&B!='0')B=Math.round(E.$.width*(B/E.$.height));if(!isNaN(B))C.setValueOf('info','txtWidth',B);}else{if(B&&B!='0')B=Math.round(E.$.height*(B/E.$.width));if(!isNaN(B))C.setValueOf('info','txtHeight',B);}}l(C);},l=function(B){if(!B.originalElement||!B.preview)return 1;B.commitContent(f,B.preview);return 0;};function m(){var B=arguments,C=this.getContentElement('advanced','txtdlgGenStyle');C&&C.commit.apply(C,B);this.foreach(function(D){if(D.commit&&D.id!='txtdlgGenStyle')D.commit.apply(D,B);});};var n;function o(B){if(n)return;n=1;var C=this.getDialog(),D=C.imageElement;if(D){this.commit(d,D);B=[].concat(B);var E=B.length,F;for(var G=0;G<E;G++){F=C.getContentElement.apply(C,B[G].split(':'));F&&F.setup(d,D);}}n=0;};var p=function(B,C){if(!B.getContentElement('info','ratioLock'))return null;var D=B.originalElement;if(!D)return null;if(C=='check'){if(!B.userlockRatio&&D.getCustomData('isReady')=='true'){var E=B.getValueOf('info','txtWidth'),F=B.getValueOf('info','txtHeight'),G=D.$.width*1000/D.$.height,H=E*1000/F;B.lockRatio=false;if(!E&&!F)B.lockRatio=true;else if(!isNaN(G)&&!isNaN(H))if(Math.round(G)==Math.round(H))B.lockRatio=true;}}else if(C!=undefined)B.lockRatio=C;else{B.userlockRatio=1;B.lockRatio=!B.lockRatio;}var I=CKEDITOR.document.getById(w);if(B.lockRatio)I.removeClass('cke_btn_unlocked');else I.addClass('cke_btn_unlocked');I.setAttribute('aria-checked',B.lockRatio);if(CKEDITOR.env.hc){var J=I.getChild(0);J.setHtml(B.lockRatio?CKEDITOR.env.ie?'■':'▣':CKEDITOR.env.ie?'□':'▢');}return B.lockRatio;},q=function(B){var C=B.originalElement;if(C.getCustomData('isReady')=='true'){var D=B.getContentElement('info','txtWidth'),E=B.getContentElement('info','txtHeight');D&&D.setValue(C.$.width);E&&E.setValue(C.$.height);}l(B);},r=function(B,C){if(B!=d)return;function D(I,J){var K=I.match(h);if(K){if(K[2]=='%'){K[1]+='%';p(E,false);}return K[1];}return J;};var E=this.getDialog(),F='',G=this.id=='txtWidth'?'width':'height',H=C.getAttribute(G);if(H)F=D(H,F);F=D(C.getStyle(G),F);this.setValue(F);},s,t=function(){var B=this.originalElement;B.setCustomData('isReady','true');B.removeListener('load',t);B.removeListener('error',u);B.removeListener('abort',u);
+CKEDITOR.document.getById(y).setStyle('display','none');if(!this.dontResetSize)q(this);if(this.firstLoad)CKEDITOR.tools.setTimeout(function(){p(this,'check');},0,this);this.firstLoad=false;this.dontResetSize=false;},u=function(){var D=this;var B=D.originalElement;B.removeListener('load',t);B.removeListener('error',u);B.removeListener('abort',u);var C=CKEDITOR.getUrl(b.skinPath+'images/noimage.png');if(D.preview)D.preview.setAttribute('src',C);CKEDITOR.document.getById(y).setStyle('display','none');p(D,false);},v=function(B){return CKEDITOR.tools.getNextId()+'_'+B;},w=v('btnLockSizes'),x=v('btnResetSize'),y=v('ImagePreviewLoader'),z=v('previewLink'),A=v('previewImage');return{title:b.lang.image[c=='image'?'title':'titleButton'],minWidth:420,minHeight:360,onShow:function(){var H=this;H.imageElement=false;H.linkElement=false;H.imageEditMode=false;H.linkEditMode=false;H.lockRatio=true;H.userlockRatio=0;H.dontResetSize=false;H.firstLoad=true;H.addLink=false;var B=H.getParentEditor(),C=B.getSelection(),D=C&&C.getSelectedElement(),E=D&&D.getAscendant('a');CKEDITOR.document.getById(y).setStyle('display','none');s=new CKEDITOR.dom.element('img',B.document);H.preview=CKEDITOR.document.getById(A);H.originalElement=B.document.createElement('img');H.originalElement.setAttribute('alt','');H.originalElement.setCustomData('isReady','false');if(E){H.linkElement=E;H.linkEditMode=true;var F=E.getChildren();if(F.count()==1){var G=F.getItem(0).getName();if(G=='img'||G=='input'){H.imageElement=F.getItem(0);if(H.imageElement.getName()=='img')H.imageEditMode='img';else if(H.imageElement.getName()=='input')H.imageEditMode='input';}}if(c=='image')H.setupContent(e,E);}if(D&&D.getName()=='img'&&!D.data('cke-realelement')||D&&D.getName()=='input'&&D.getAttribute('type')=='image'){H.imageEditMode=D.getName();H.imageElement=D;}if(H.imageEditMode){H.cleanImageElement=H.imageElement;H.imageElement=H.cleanImageElement.clone(true,true);H.setupContent(d,H.imageElement);}else H.imageElement=B.document.createElement('img');p(H,true);if(!CKEDITOR.tools.trim(H.getValueOf('info','txtUrl'))){H.preview.removeAttribute('src');H.preview.setStyle('display','none');}},onOk:function(){var C=this;if(C.imageEditMode){var B=C.imageEditMode;if(c=='image'&&B=='input'&&confirm(b.lang.image.button2Img)){B='img';C.imageElement=b.document.createElement('img');C.imageElement.setAttribute('alt','');b.insertElement(C.imageElement);}else if(c!='image'&&B=='img'&&confirm(b.lang.image.img2Button)){B='input';C.imageElement=b.document.createElement('input');
+C.imageElement.setAttributes({type:'image',alt:''});b.insertElement(C.imageElement);}else{C.imageElement=C.cleanImageElement;delete C.cleanImageElement;}}else{if(c=='image')C.imageElement=b.document.createElement('img');else{C.imageElement=b.document.createElement('input');C.imageElement.setAttribute('type','image');}C.imageElement.setAttribute('alt','');}if(!C.linkEditMode)C.linkElement=b.document.createElement('a');C.commitContent(d,C.imageElement);C.commitContent(e,C.linkElement);if(!C.imageElement.getAttribute('style'))C.imageElement.removeAttribute('style');if(!C.imageEditMode){if(C.addLink){if(!C.linkEditMode){b.insertElement(C.linkElement);C.linkElement.append(C.imageElement,false);}else b.insertElement(C.imageElement);}else b.insertElement(C.imageElement);}else if(!C.linkEditMode&&C.addLink){b.insertElement(C.linkElement);C.imageElement.appendTo(C.linkElement);}else if(C.linkEditMode&&!C.addLink){b.getSelection().selectElement(C.linkElement);b.insertElement(C.imageElement);}},onLoad:function(){var C=this;if(c!='image')C.hidePage('Link');var B=C._.element.getDocument();if(C.getContentElement('info','ratioLock')){C.addFocusable(B.getById(x),5);C.addFocusable(B.getById(w),5);}C.commitContent=m;},onHide:function(){var B=this;if(B.preview)B.commitContent(g,B.preview);if(B.originalElement){B.originalElement.removeListener('load',t);B.originalElement.removeListener('error',u);B.originalElement.removeListener('abort',u);B.originalElement.remove();B.originalElement=false;}delete B.imageElement;},contents:[{id:'info',label:b.lang.image.infoTab,accessKey:'I',elements:[{type:'vbox',padding:0,children:[{type:'hbox',widths:['280px','110px'],align:'right',children:[{id:'txtUrl',type:'text',label:b.lang.common.url,required:true,onChange:function(){var B=this.getDialog(),C=this.getValue();if(C.length>0){B=this.getDialog();var D=B.originalElement;B.preview.removeStyle('display');D.setCustomData('isReady','false');var E=CKEDITOR.document.getById(y);if(E)E.setStyle('display','');D.on('load',t,B);D.on('error',u,B);D.on('abort',u,B);D.setAttribute('src',C);s.setAttribute('src',C);B.preview.setAttribute('src',s.$.src);l(B);}else if(B.preview){B.preview.removeAttribute('src');B.preview.setStyle('display','none');}},setup:function(B,C){if(B==d){var D=C.data('cke-saved-src')||C.getAttribute('src'),E=this;this.getDialog().dontResetSize=true;E.setValue(D);E.setInitValue();}},commit:function(B,C){var D=this;if(B==d&&(D.getValue()||D.isChanged())){C.data('cke-saved-src',D.getValue());
+C.setAttribute('src',D.getValue());}else if(B==g){C.setAttribute('src','');C.removeAttribute('src');}},validate:CKEDITOR.dialog.validate.notEmpty(b.lang.image.urlMissing)},{type:'button',id:'browse',style:'display:inline-block;margin-top:10px;',align:'center',label:b.lang.common.browseServer,hidden:true,filebrowser:'info:txtUrl'}]}]},{id:'txtAlt',type:'text',label:b.lang.image.alt,accessKey:'T','default':'',onChange:function(){l(this.getDialog());},setup:function(B,C){if(B==d)this.setValue(C.getAttribute('alt'));},commit:function(B,C){var D=this;if(B==d){if(D.getValue()||D.isChanged())C.setAttribute('alt',D.getValue());}else if(B==f)C.setAttribute('alt',D.getValue());else if(B==g)C.removeAttribute('alt');}},{type:'hbox',children:[{id:'basic',type:'vbox',children:[{type:'hbox',widths:['50%','50%'],children:[{type:'vbox',padding:1,children:[{type:'text',width:'40px',id:'txtWidth',label:b.lang.common.width,onKeyUp:k,onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:function(){var B=this.getValue().match(i),C=!!(B&&parseInt(B[1],10)!==0);if(!C)alert(b.lang.common.invalidWidth);return C;},setup:r,commit:function(B,C,D){var E=this.getValue();if(B==d){if(E)C.setStyle('width',CKEDITOR.tools.cssLength(E));else C.removeStyle('width');!D&&C.removeAttribute('width');}else if(B==f){var F=E.match(h);if(!F){var G=this.getDialog().originalElement;if(G.getCustomData('isReady')=='true')C.setStyle('width',G.$.width+'px');}else C.setStyle('width',CKEDITOR.tools.cssLength(E));}else if(B==g){C.removeAttribute('width');C.removeStyle('width');}}},{type:'text',id:'txtHeight',width:'40px',label:b.lang.common.height,onKeyUp:k,onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:function(){var B=this.getValue().match(i),C=!!(B&&parseInt(B[1],10)!==0);if(!C)alert(b.lang.common.invalidHeight);return C;},setup:r,commit:function(B,C,D){var E=this.getValue();if(B==d){if(E)C.setStyle('height',CKEDITOR.tools.cssLength(E));else C.removeStyle('height');!D&&C.removeAttribute('height');}else if(B==f){var F=E.match(h);if(!F){var G=this.getDialog().originalElement;if(G.getCustomData('isReady')=='true')C.setStyle('height',G.$.height+'px');}else C.setStyle('height',CKEDITOR.tools.cssLength(E));}else if(B==g){C.removeAttribute('height');C.removeStyle('height');}}}]},{id:'ratioLock',type:'html',style:'margin-top:30px;width:40px;height:40px;',onLoad:function(){var B=CKEDITOR.document.getById(x),C=CKEDITOR.document.getById(w);if(B){B.on('click',function(D){q(this);D.data&&D.data.preventDefault();
+},this.getDialog());B.on('mouseover',function(){this.addClass('cke_btn_over');},B);B.on('mouseout',function(){this.removeClass('cke_btn_over');},B);}if(C){C.on('click',function(D){var I=this;var E=p(I),F=I.originalElement,G=I.getValueOf('info','txtWidth');if(F.getCustomData('isReady')=='true'&&G){var H=F.$.height/F.$.width*G;if(!isNaN(H)){I.setValueOf('info','txtHeight',Math.round(H));l(I);}}D.data&&D.data.preventDefault();},this.getDialog());C.on('mouseover',function(){this.addClass('cke_btn_over');},C);C.on('mouseout',function(){this.removeClass('cke_btn_over');},C);}},html:'<div><a href="javascript:void(0)" tabindex="-1" title="'+b.lang.image.lockRatio+'" class="cke_btn_locked" id="'+w+'" role="checkbox"><span class="cke_icon"></span><span class="cke_label">'+b.lang.image.lockRatio+'</span></a>'+'<a href="javascript:void(0)" tabindex="-1" title="'+b.lang.image.resetSize+'" class="cke_btn_reset" id="'+x+'" role="button"><span class="cke_label">'+b.lang.image.resetSize+'</span></a>'+'</div>'}]},{type:'vbox',padding:1,children:[{type:'text',id:'txtBorder',width:'60px',label:b.lang.image.border,'default':'',onKeyUp:function(){l(this.getDialog());},onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:CKEDITOR.dialog.validate.integer(b.lang.image.validateBorder),setup:function(B,C){if(B==d){var D,E=C.getStyle('border-width');E=E&&E.match(/^(\d+px)(?: \1 \1 \1)?$/);D=E&&parseInt(E[1],10);isNaN(parseInt(D,10))&&(D=C.getAttribute('border'));this.setValue(D);}},commit:function(B,C,D){var E=parseInt(this.getValue(),10);if(B==d||B==f){if(!isNaN(E)){C.setStyle('border-width',CKEDITOR.tools.cssLength(E));C.setStyle('border-style','solid');}else if(!E&&this.isChanged()){C.removeStyle('border-width');C.removeStyle('border-style');C.removeStyle('border-color');}if(!D&&B==d)C.removeAttribute('border');}else if(B==g){C.removeAttribute('border');C.removeStyle('border-width');C.removeStyle('border-style');C.removeStyle('border-color');}}},{type:'text',id:'txtHSpace',width:'60px',label:b.lang.image.hSpace,'default':'',onKeyUp:function(){l(this.getDialog());},onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:CKEDITOR.dialog.validate.integer(b.lang.image.validateHSpace),setup:function(B,C){if(B==d){var D,E,F,G=C.getStyle('margin-left'),H=C.getStyle('margin-right');G=G&&G.match(j);H=H&&H.match(j);E=parseInt(G,10);F=parseInt(H,10);D=E==F&&E;isNaN(parseInt(D,10))&&(D=C.getAttribute('hspace'));this.setValue(D);}},commit:function(B,C,D){var E=parseInt(this.getValue(),10);
+if(B==d||B==f){if(!isNaN(E)){C.setStyle('margin-left',CKEDITOR.tools.cssLength(E));C.setStyle('margin-right',CKEDITOR.tools.cssLength(E));}else if(!E&&this.isChanged()){C.removeStyle('margin-left');C.removeStyle('margin-right');}if(!D&&B==d)C.removeAttribute('hspace');}else if(B==g){C.removeAttribute('hspace');C.removeStyle('margin-left');C.removeStyle('margin-right');}}},{type:'text',id:'txtVSpace',width:'60px',label:b.lang.image.vSpace,'default':'',onKeyUp:function(){l(this.getDialog());},onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:CKEDITOR.dialog.validate.integer(b.lang.image.validateVSpace),setup:function(B,C){if(B==d){var D,E,F,G=C.getStyle('margin-top'),H=C.getStyle('margin-bottom');G=G&&G.match(j);H=H&&H.match(j);E=parseInt(G,10);F=parseInt(H,10);D=E==F&&E;isNaN(parseInt(D,10))&&(D=C.getAttribute('vspace'));this.setValue(D);}},commit:function(B,C,D){var E=parseInt(this.getValue(),10);if(B==d||B==f){if(!isNaN(E)){C.setStyle('margin-top',CKEDITOR.tools.cssLength(E));C.setStyle('margin-bottom',CKEDITOR.tools.cssLength(E));}else if(!E&&this.isChanged()){C.removeStyle('margin-top');C.removeStyle('margin-bottom');}if(!D&&B==d)C.removeAttribute('vspace');}else if(B==g){C.removeAttribute('vspace');C.removeStyle('margin-top');C.removeStyle('margin-bottom');}}},{id:'cmbAlign',type:'select',widths:['35%','65%'],style:'width:90px',label:b.lang.common.align,'default':'',items:[[b.lang.common.notSet,''],[b.lang.common.alignLeft,'left'],[b.lang.common.alignRight,'right']],onChange:function(){l(this.getDialog());o.call(this,'advanced:txtdlgGenStyle');},setup:function(B,C){if(B==d){var D=C.getStyle('float');switch(D){case 'inherit':case 'none':D='';}!D&&(D=(C.getAttribute('align')||'').toLowerCase());this.setValue(D);}},commit:function(B,C,D){var E=this.getValue();if(B==d||B==f){if(E)C.setStyle('float',E);else C.removeStyle('float');if(!D&&B==d){E=(C.getAttribute('align')||'').toLowerCase();switch(E){case 'left':case 'right':C.removeAttribute('align');}}}else if(B==g)C.removeStyle('float');}}]}]},{type:'vbox',height:'250px',children:[{type:'html',id:'htmlPreview',style:'width:95%;',html:'<div>'+CKEDITOR.tools.htmlEncode(b.lang.common.preview)+'<br>'+'<div id="'+y+'" class="ImagePreviewLoader" style="display:none"><div class="loading"> </div></div>'+'<div class="ImagePreviewBox"><table><tr><td>'+'<a href="javascript:void(0)" target="_blank" onclick="return false;" id="'+z+'">'+'<img id="'+A+'" alt="" /></a>'+(b.config.image_previewText||'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.')+'</td></tr></table></div></div>'}]}]}]},{id:'Link',label:b.lang.link.title,padding:0,elements:[{id:'txtUrl',type:'text',label:b.lang.common.url,style:'width: 100%','default':'',setup:function(B,C){if(B==e){var D=C.data('cke-saved-href');
+if(!D)D=C.getAttribute('href');this.setValue(D);}},commit:function(B,C){var E=this;if(B==e)if(E.getValue()||E.isChanged()){var D=decodeURI(E.getValue());C.data('cke-saved-href',D);C.setAttribute('href',D);if(E.getValue()||!b.config.image_removeLinkByEmptyURL)E.getDialog().addLink=true;}}},{type:'button',id:'browse',filebrowser:{action:'Browse',target:'Link:txtUrl',url:b.config.filebrowserImageBrowseLinkUrl},style:'float:right',hidden:true,label:b.lang.common.browseServer},{id:'cmbTarget',type:'select',label:b.lang.common.target,'default':'',items:[[b.lang.common.notSet,''],[b.lang.common.targetNew,'_blank'],[b.lang.common.targetTop,'_top'],[b.lang.common.targetSelf,'_self'],[b.lang.common.targetParent,'_parent']],setup:function(B,C){if(B==e)this.setValue(C.getAttribute('target')||'');},commit:function(B,C){if(B==e)if(this.getValue()||this.isChanged())C.setAttribute('target',this.getValue());}}]},{id:'Upload',hidden:true,filebrowser:'uploadButton',label:b.lang.image.upload,elements:[{type:'file',id:'upload',label:b.lang.image.btnUpload,style:'height:40px',size:38},{type:'fileButton',id:'uploadButton',filebrowser:'info:txtUrl',label:b.lang.image.btnUpload,'for':['Upload','upload']}]},{id:'advanced',label:b.lang.common.advancedTab,elements:[{type:'hbox',widths:['50%','25%','25%'],children:[{type:'text',id:'linkId',label:b.lang.common.id,setup:function(B,C){if(B==d)this.setValue(C.getAttribute('id'));},commit:function(B,C){if(B==d)if(this.getValue()||this.isChanged())C.setAttribute('id',this.getValue());}},{id:'cmbLangDir',type:'select',style:'width : 100px;',label:b.lang.common.langDir,'default':'',items:[[b.lang.common.notSet,''],[b.lang.common.langDirLtr,'ltr'],[b.lang.common.langDirRtl,'rtl']],setup:function(B,C){if(B==d)this.setValue(C.getAttribute('dir'));},commit:function(B,C){if(B==d)if(this.getValue()||this.isChanged())C.setAttribute('dir',this.getValue());}},{type:'text',id:'txtLangCode',label:b.lang.common.langCode,'default':'',setup:function(B,C){if(B==d)this.setValue(C.getAttribute('lang'));},commit:function(B,C){if(B==d)if(this.getValue()||this.isChanged())C.setAttribute('lang',this.getValue());}}]},{type:'text',id:'txtGenLongDescr',label:b.lang.common.longDescr,setup:function(B,C){if(B==d)this.setValue(C.getAttribute('longDesc'));},commit:function(B,C){if(B==d)if(this.getValue()||this.isChanged())C.setAttribute('longDesc',this.getValue());}},{type:'hbox',widths:['50%','50%'],children:[{type:'text',id:'txtGenClass',label:b.lang.common.cssClass,'default':'',setup:function(B,C){if(B==d)this.setValue(C.getAttribute('class'));
+},commit:function(B,C){if(B==d)if(this.getValue()||this.isChanged())C.setAttribute('class',this.getValue());}},{type:'text',id:'txtGenTitle',label:b.lang.common.advisoryTitle,'default':'',onChange:function(){l(this.getDialog());},setup:function(B,C){if(B==d)this.setValue(C.getAttribute('title'));},commit:function(B,C){var D=this;if(B==d){if(D.getValue()||D.isChanged())C.setAttribute('title',D.getValue());}else if(B==f)C.setAttribute('title',D.getValue());else if(B==g)C.removeAttribute('title');}}]},{type:'text',id:'txtdlgGenStyle',label:b.lang.common.cssStyle,validate:CKEDITOR.dialog.validate.inlineStyle(b.lang.common.invalidInlineStyle),'default':'',setup:function(B,C){if(B==d){var D=C.getAttribute('style');if(!D&&C.$.style.cssText)D=C.$.style.cssText;this.setValue(D);var E=C.$.style.height,F=C.$.style.width,G=(E?E:'').match(h),H=(F?F:'').match(h);this.attributesInStyle={height:!!G,width:!!H};}},onChange:function(){o.call(this,['info:cmbFloat','info:cmbAlign','info:txtVSpace','info:txtHSpace','info:txtBorder','info:txtWidth','info:txtHeight']);l(this);},commit:function(B,C){if(B==d&&(this.getValue()||this.isChanged()))C.setAttribute('style',this.getValue());}}]}]};};CKEDITOR.dialog.add('image',function(b){return a(b,'image');});CKEDITOR.dialog.add('imagebutton',function(b){return a(b,'imagebutton');});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/link/dialogs/anchor.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/link/dialogs/anchor.js
new file mode 100755
index 0000000..716dc7f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/link/dialogs/anchor.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('anchor',function(a){var b=function(d){this._.selectedElement=d;var e=d.data('cke-saved-name');this.setValueOf('info','txtName',e||'');};function c(d,e){return d.createFakeElement(e,'cke_anchor','anchor');};return{title:a.lang.anchor.title,minWidth:300,minHeight:60,onOk:function(){var k=this;var d=CKEDITOR.tools.trim(k.getValueOf('info','txtName')),e={name:d,'data-cke-saved-name':d};if(k._.selectedElement){if(k._.selectedElement.data('cke-realelement')){var f=c(a,a.document.createElement('a',{attributes:e}));f.replace(k._.selectedElement);}else k._.selectedElement.setAttributes(e);}else{var g=a.getSelection(),h=g&&g.getRanges()[0];if(h.collapsed){if(CKEDITOR.plugins.link.synAnchorSelector)e['class']='cke_anchor_empty';if(CKEDITOR.plugins.link.emptyAnchorFix){e.contenteditable='false';e['data-cke-editable']=1;}var i=a.document.createElement('a',{attributes:e});if(CKEDITOR.plugins.link.fakeAnchor)i=c(a,i);h.insertNode(i);}else{if(CKEDITOR.env.ie&&CKEDITOR.env.version<9)e['class']='cke_anchor';var j=new CKEDITOR.style({element:'a',attributes:e});j.type=CKEDITOR.STYLE_INLINE;j.apply(a.document);}}},onHide:function(){delete this._.selectedElement;},onShow:function(){var h=this;var d=a.getSelection(),e=d.getSelectedElement(),f;if(e){if(CKEDITOR.plugins.link.fakeAnchor){var g=CKEDITOR.plugins.link.tryRestoreFakeAnchor(a,e);g&&b.call(h,g);h._.selectedElement=e;}else if(e.is('a')&&e.hasAttribute('name'))b.call(h,e);}else{f=CKEDITOR.plugins.link.getSelectedLink(a);if(f){b.call(h,f);d.selectElement(f);}}h.getContentElement('info','txtName').focus();},contents:[{id:'info',label:a.lang.anchor.title,accessKey:'I',elements:[{type:'text',id:'txtName',label:a.lang.anchor.name,required:true,validate:function(){if(!this.getValue()){alert(a.lang.anchor.errorName);return false;}return true;}}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/link/dialogs/link.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/link/dialogs/link.js
new file mode 100755
index 0000000..c0d32c8
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/link/dialogs/link.js
@@ -0,0 +1,12 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('link',function(a){var b=CKEDITOR.plugins.link,c=function(){var F=this.getDialog(),G=F.getContentElement('target','popupFeatures'),H=F.getContentElement('target','linkTargetName'),I=this.getValue();if(!G||!H)return;G=G.getElement();G.hide();H.setValue('');switch(I){case 'frame':H.setLabel(a.lang.link.targetFrameName);H.getElement().show();break;case 'popup':G.show();H.setLabel(a.lang.link.targetPopupName);H.getElement().show();break;default:H.setValue(I);H.getElement().hide();break;}},d=function(){var F=this.getDialog(),G=['urlOptions','anchorOptions','emailOptions'],H=this.getValue(),I=F.definition.getContents('upload'),J=I&&I.hidden;if(H=='url'){if(a.config.linkShowTargetTab)F.showPage('target');if(!J)F.showPage('upload');}else{F.hidePage('target');if(!J)F.hidePage('upload');}for(var K=0;K<G.length;K++){var L=F.getContentElement('info',G[K]);if(!L)continue;L=L.getElement().getParent().getParent();if(G[K]==H+'Options')L.show();else L.hide();}F.layout();},e=/^javascript:/,f=/^mailto:([^?]+)(?:\?(.+))?$/,g=/subject=([^;?:@&=$,\/]*)/,h=/body=([^;?:@&=$,\/]*)/,i=/^#(.*)$/,j=/^((?:http|https|ftp|news):\/\/)?(.*)$/,k=/^(_(?:self|top|parent|blank))$/,l=/^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,m=/^javascript:([^(]+)\(([^)]+)\)$/,n=/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,o=/(?:^|,)([^=]+)=(\d+|yes|no)/gi,p=function(F,G){var H=G&&(G.data('cke-saved-href')||G.getAttribute('href'))||'',I,J,K,L,M={};if(I=H.match(e))if(y=='encode')H=H.replace(l,function(ae,af,ag){return 'mailto:'+String.fromCharCode.apply(String,af.split(','))+(ag&&w(ag));});else if(y)H.replace(m,function(ae,af,ag){if(af==z.name){M.type='email';var ah=M.email={},ai=/[^,\s]+/g,aj=/(^')|('$)/g,ak=ag.match(ai),al=ak.length,am,an;for(var ao=0;ao<al;ao++){an=decodeURIComponent(w(ak[ao].replace(aj,'')));am=z.params[ao].toLowerCase();ah[am]=an;}ah.address=[ah.name,ah.domain].join('@');}});if(!M.type)if(K=H.match(i)){M.type='anchor';M.anchor={};M.anchor.name=M.anchor.id=K[1];}else if(J=H.match(f)){var N=H.match(g),O=H.match(h);M.type='email';var P=M.email={};P.address=J[1];N&&(P.subject=decodeURIComponent(N[1]));O&&(P.body=decodeURIComponent(O[1]));}else if(H&&(L=H.match(j))){M.type='url';M.url={};M.url.protocol=L[1];M.url.url=L[2];}else M.type='url';if(G){var Q=G.getAttribute('target');M.target={};M.adv={};if(!Q){var R=G.data('cke-pa-onclick')||G.getAttribute('onclick'),S=R&&R.match(n);
+if(S){M.target.type='popup';M.target.name=S[1];var T;while(T=o.exec(S[2])){if((T[2]=='yes'||T[2]=='1')&&!(T[1] in {height:1,width:1,top:1,left:1}))M.target[T[1]]=true;else if(isFinite(T[2]))M.target[T[1]]=T[2];}}}else{var U=Q.match(k);if(U)M.target.type=M.target.name=Q;else{M.target.type='frame';M.target.name=Q;}}var V=this,W=function(ae,af){var ag=G.getAttribute(af);if(ag!==null)M.adv[ae]=ag||'';};W('advId','id');W('advLangDir','dir');W('advAccessKey','accessKey');M.adv.advName=G.data('cke-saved-name')||G.getAttribute('name')||'';W('advLangCode','lang');W('advTabIndex','tabindex');W('advTitle','title');W('advContentType','type');CKEDITOR.plugins.link.synAnchorSelector?M.adv.advCSSClasses=C(G):W('advCSSClasses','class');W('advCharset','charset');W('advStyles','style');W('advRel','rel');}var X=M.anchors=[],Y,Z,aa;if(CKEDITOR.plugins.link.emptyAnchorFix){var ab=F.document.getElementsByTag('a');for(Y=0,Z=ab.count();Y<Z;Y++){aa=ab.getItem(Y);if(aa.data('cke-saved-name')||aa.hasAttribute('name'))X.push({name:aa.data('cke-saved-name')||aa.getAttribute('name'),id:aa.getAttribute('id')});}}else{var ac=new CKEDITOR.dom.nodeList(F.document.$.anchors);for(Y=0,Z=ac.count();Y<Z;Y++){aa=ac.getItem(Y);X[Y]={name:aa.getAttribute('name'),id:aa.getAttribute('id')};}}if(CKEDITOR.plugins.link.fakeAnchor){var ad=F.document.getElementsByTag('img');for(Y=0,Z=ad.count();Y<Z;Y++){if(aa=CKEDITOR.plugins.link.tryRestoreFakeAnchor(F,ad.getItem(Y)))X.push({name:aa.getAttribute('name'),id:aa.getAttribute('id')});}}this._.selectedElement=G;return M;},q=function(F,G){if(G[F])this.setValue(G[F][this.id]||'');},r=function(F){return q.call(this,'target',F);},s=function(F){return q.call(this,'adv',F);},t=function(F,G){if(!G[F])G[F]={};G[F][this.id]=this.getValue()||'';},u=function(F){return t.call(this,'target',F);},v=function(F){return t.call(this,'adv',F);};function w(F){return F.replace(/\\'/g,"'");};function x(F){return F.replace(/'/g,'\\$&');};var y=a.config.emailProtection||'';if(y&&y!='encode'){var z={};y.replace(/^([^(]+)\(([^)]+)\)$/,function(F,G,H){z.name=G;z.params=[];H.replace(/[^,\s]+/g,function(I){z.params.push(I);});});}function A(F){var G,H=z.name,I=z.params,J,K;G=[H,'('];for(var L=0;L<I.length;L++){J=I[L].toLowerCase();K=F[J];L>0&&G.push(',');G.push("'",K?x(encodeURIComponent(F[J])):'',"'");}G.push(')');return G.join('');};function B(F){var G,H=F.length,I=[];for(var J=0;J<H;J++){G=F.charCodeAt(J);I.push(G);}return 'String.fromCharCode('+I.join(',')+')';};function C(F){var G=F.getAttribute('class');
+return G?G.replace(/\s*(?:cke_anchor_empty|cke_anchor)(?:\s*$)?/g,''):'';};var D=a.lang.common,E=a.lang.link;return{title:E.title,minWidth:350,minHeight:230,contents:[{id:'info',label:E.info,title:E.info,elements:[{id:'linkType',type:'select',label:E.type,'default':'url',items:[[E.toUrl,'url'],[E.toAnchor,'anchor'],[E.toEmail,'email']],onChange:d,setup:function(F){if(F.type)this.setValue(F.type);},commit:function(F){F.type=this.getValue();}},{type:'vbox',id:'urlOptions',children:[{type:'hbox',widths:['25%','75%'],children:[{id:'protocol',type:'select',label:D.protocol,'default':'http://',items:[['http://','http://'],['https://','https://'],['ftp://','ftp://'],['news://','news://'],[E.other,'']],setup:function(F){if(F.url)this.setValue(F.url.protocol||'');},commit:function(F){if(!F.url)F.url={};F.url.protocol=this.getValue();}},{type:'text',id:'url',label:D.url,required:true,onLoad:function(){this.allowOnChange=true;},onKeyUp:function(){var K=this;K.allowOnChange=false;var F=K.getDialog().getContentElement('info','protocol'),G=K.getValue(),H=/^(http|https|ftp|news):\/\/(?=.)/i,I=/^((javascript:)|[#\/\.\?])/i,J=H.exec(G);if(J){K.setValue(G.substr(J[0].length));F.setValue(J[0].toLowerCase());}else if(I.test(G))F.setValue('');K.allowOnChange=true;},onChange:function(){if(this.allowOnChange)this.onKeyUp();},validate:function(){var F=this.getDialog();if(F.getContentElement('info','linkType')&&F.getValueOf('info','linkType')!='url')return true;if(this.getDialog().fakeObj)return true;var G=CKEDITOR.dialog.validate.notEmpty(E.noUrl);return G.apply(this);},setup:function(F){this.allowOnChange=false;if(F.url)this.setValue(F.url.url);this.allowOnChange=true;},commit:function(F){this.onChange();if(!F.url)F.url={};F.url.url=this.getValue();this.allowOnChange=false;}}],setup:function(F){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().show();}},{type:'button',id:'browse',hidden:'true',filebrowser:'info:url',label:D.browseServer}]},{type:'vbox',id:'anchorOptions',width:260,align:'center',padding:0,children:[{type:'fieldset',id:'selectAnchorText',label:E.selectAnchor,setup:function(F){if(F.anchors.length>0)this.getElement().show();else this.getElement().hide();},children:[{type:'hbox',id:'selectAnchor',children:[{type:'select',id:'anchorName','default':'',label:E.anchorName,style:'width: 100%;',items:[['']],setup:function(F){var I=this;I.clear();I.add('');for(var G=0;G<F.anchors.length;G++){if(F.anchors[G].name)I.add(F.anchors[G].name);}if(F.anchor)I.setValue(F.anchor.name);
+var H=I.getDialog().getContentElement('info','linkType');if(H&&H.getValue()=='email')I.focus();},commit:function(F){if(!F.anchor)F.anchor={};F.anchor.name=this.getValue();}},{type:'select',id:'anchorId','default':'',label:E.anchorId,style:'width: 100%;',items:[['']],setup:function(F){var H=this;H.clear();H.add('');for(var G=0;G<F.anchors.length;G++){if(F.anchors[G].id)H.add(F.anchors[G].id);}if(F.anchor)H.setValue(F.anchor.id);},commit:function(F){if(!F.anchor)F.anchor={};F.anchor.id=this.getValue();}}],setup:function(F){if(F.anchors.length>0)this.getElement().show();else this.getElement().hide();}}]},{type:'html',id:'noAnchors',style:'text-align: center;',html:'<div role="note" tabIndex="-1">'+CKEDITOR.tools.htmlEncode(E.noAnchors)+'</div>',focus:true,setup:function(F){if(F.anchors.length<1)this.getElement().show();else this.getElement().hide();}}],setup:function(F){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().hide();}},{type:'vbox',id:'emailOptions',padding:1,children:[{type:'text',id:'emailAddress',label:E.emailAddress,required:true,validate:function(){var F=this.getDialog();if(!F.getContentElement('info','linkType')||F.getValueOf('info','linkType')!='email')return true;var G=CKEDITOR.dialog.validate.notEmpty(E.noEmail);return G.apply(this);},setup:function(F){if(F.email)this.setValue(F.email.address);var G=this.getDialog().getContentElement('info','linkType');if(G&&G.getValue()=='email')this.select();},commit:function(F){if(!F.email)F.email={};F.email.address=this.getValue();}},{type:'text',id:'emailSubject',label:E.emailSubject,setup:function(F){if(F.email)this.setValue(F.email.subject);},commit:function(F){if(!F.email)F.email={};F.email.subject=this.getValue();}},{type:'textarea',id:'emailBody',label:E.emailBody,rows:3,'default':'',setup:function(F){if(F.email)this.setValue(F.email.body);},commit:function(F){if(!F.email)F.email={};F.email.body=this.getValue();}}],setup:function(F){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().hide();}}]},{id:'target',label:E.target,title:E.target,elements:[{type:'hbox',widths:['50%','50%'],children:[{type:'select',id:'linkTargetType',label:D.target,'default':'notSet',style:'width : 100%;',items:[[D.notSet,'notSet'],[E.targetFrame,'frame'],[E.targetPopup,'popup'],[D.targetNew,'_blank'],[D.targetTop,'_top'],[D.targetSelf,'_self'],[D.targetParent,'_parent']],onChange:c,setup:function(F){if(F.target)this.setValue(F.target.type||'notSet');c.call(this);},commit:function(F){if(!F.target)F.target={};
+F.target.type=this.getValue();}},{type:'text',id:'linkTargetName',label:E.targetFrameName,'default':'',setup:function(F){if(F.target)this.setValue(F.target.name);},commit:function(F){if(!F.target)F.target={};F.target.name=this.getValue().replace(/\W/gi,'');}}]},{type:'vbox',width:'100%',align:'center',padding:2,id:'popupFeatures',children:[{type:'fieldset',label:E.popupFeatures,children:[{type:'hbox',children:[{type:'checkbox',id:'resizable',label:E.popupResizable,setup:r,commit:u},{type:'checkbox',id:'status',label:E.popupStatusBar,setup:r,commit:u}]},{type:'hbox',children:[{type:'checkbox',id:'location',label:E.popupLocationBar,setup:r,commit:u},{type:'checkbox',id:'toolbar',label:E.popupToolbar,setup:r,commit:u}]},{type:'hbox',children:[{type:'checkbox',id:'menubar',label:E.popupMenuBar,setup:r,commit:u},{type:'checkbox',id:'fullscreen',label:E.popupFullScreen,setup:r,commit:u}]},{type:'hbox',children:[{type:'checkbox',id:'scrollbars',label:E.popupScrollBars,setup:r,commit:u},{type:'checkbox',id:'dependent',label:E.popupDependent,setup:r,commit:u}]},{type:'hbox',children:[{type:'text',widths:['50%','50%'],labelLayout:'horizontal',label:D.width,id:'width',setup:r,commit:u},{type:'text',labelLayout:'horizontal',widths:['50%','50%'],label:E.popupLeft,id:'left',setup:r,commit:u}]},{type:'hbox',children:[{type:'text',labelLayout:'horizontal',widths:['50%','50%'],label:D.height,id:'height',setup:r,commit:u},{type:'text',labelLayout:'horizontal',label:E.popupTop,widths:['50%','50%'],id:'top',setup:r,commit:u}]}]}]}]},{id:'upload',label:E.upload,title:E.upload,hidden:true,filebrowser:'uploadButton',elements:[{type:'file',id:'upload',label:D.upload,style:'height:40px',size:29},{type:'fileButton',id:'uploadButton',label:D.uploadSubmit,filebrowser:'info:url','for':['upload','upload']}]},{id:'advanced',label:E.advanced,title:E.advanced,elements:[{type:'vbox',padding:1,children:[{type:'hbox',widths:['45%','35%','20%'],children:[{type:'text',id:'advId',label:E.id,setup:s,commit:v},{type:'select',id:'advLangDir',label:E.langDir,'default':'',style:'width:110px',items:[[D.notSet,''],[E.langDirLTR,'ltr'],[E.langDirRTL,'rtl']],setup:s,commit:v},{type:'text',id:'advAccessKey',width:'80px',label:E.acccessKey,maxLength:1,setup:s,commit:v}]},{type:'hbox',widths:['45%','35%','20%'],children:[{type:'text',label:E.name,id:'advName',setup:s,commit:v},{type:'text',label:E.langCode,id:'advLangCode',width:'110px','default':'',setup:s,commit:v},{type:'text',label:E.tabIndex,id:'advTabIndex',width:'80px',maxLength:5,setup:s,commit:v}]}]},{type:'vbox',padding:1,children:[{type:'hbox',widths:['45%','55%'],children:[{type:'text',label:E.advisoryTitle,'default':'',id:'advTitle',setup:s,commit:v},{type:'text',label:E.advisoryContentType,'default':'',id:'advContentType',setup:s,commit:v}]},{type:'hbox',widths:['45%','55%'],children:[{type:'text',label:E.cssClasses,'default':'',id:'advCSSClasses',setup:s,commit:v},{type:'text',label:E.charset,'default':'',id:'advCharset',setup:s,commit:v}]},{type:'hbox',widths:['45%','55%'],children:[{type:'text',label:E.rel,'default':'',id:'advRel',setup:s,commit:v},{type:'text',label:E.styles,'default':'',id:'advStyles',validate:CKEDITOR.dialog.validate.inlineStyle(a.lang.common.invalidInlineStyle),setup:s,commit:v}]}]}]}],onShow:function(){var F=this.getParentEditor(),G=F.getSelection(),H=null;
+if((H=b.getSelectedLink(F))&&H.hasAttribute('href'))G.selectElement(H);else H=null;this.setupContent(p.apply(this,[F,H]));},onOk:function(){var F={},G=[],H={},I=this,J=this.getParentEditor();this.commitContent(H);switch(H.type||'url'){case 'url':var K=H.url&&H.url.protocol!=undefined?H.url.protocol:'http://',L=H.url&&CKEDITOR.tools.trim(H.url.url)||'';F['data-cke-saved-href']=L.indexOf('/')===0?L:K+L;break;case 'anchor':var M=H.anchor&&H.anchor.name,N=H.anchor&&H.anchor.id;F['data-cke-saved-href']='#'+(M||N||'');break;case 'email':var O,P=H.email,Q=P.address;switch(y){case '':case 'encode':var R=encodeURIComponent(P.subject||''),S=encodeURIComponent(P.body||''),T=[];R&&T.push('subject='+R);S&&T.push('body='+S);T=T.length?'?'+T.join('&'):'';if(y=='encode'){O=["javascript:void(location.href='mailto:'+",B(Q)];T&&O.push("+'",x(T),"'");O.push(')');}else O=['mailto:',Q,T];break;default:var U=Q.split('@',2);P.name=U[0];P.domain=U[1];O=['javascript:',A(P)];}F['data-cke-saved-href']=O.join('');break;}if(H.target)if(H.target.type=='popup'){var V=["window.open(this.href, '",H.target.name||'',"', '"],W=['resizable','status','location','toolbar','menubar','fullscreen','scrollbars','dependent'],X=W.length,Y=function(ai){if(H.target[ai])W.push(ai+'='+H.target[ai]);};for(var Z=0;Z<X;Z++)W[Z]=W[Z]+(H.target[W[Z]]?'=yes':'=no');Y('width');Y('left');Y('height');Y('top');V.push(W.join(','),"'); return false;");F['data-cke-pa-onclick']=V.join('');G.push('target');}else{if(H.target.type!='notSet'&&H.target.name)F.target=H.target.name;else G.push('target');G.push('data-cke-pa-onclick','onclick');}if(H.adv){var aa=function(ai,aj){var ak=H.adv[ai];if(ak)F[aj]=ak;else G.push(aj);};aa('advId','id');aa('advLangDir','dir');aa('advAccessKey','accessKey');if(H.adv.advName)F.name=F['data-cke-saved-name']=H.adv.advName;else G=G.concat(['data-cke-saved-name','name']);aa('advLangCode','lang');aa('advTabIndex','tabindex');aa('advTitle','title');aa('advContentType','type');aa('advCSSClasses','class');aa('advCharset','charset');aa('advStyles','style');aa('advRel','rel');}var ab=J.getSelection();F.href=F['data-cke-saved-href'];if(!this._.selectedElement){var ac=ab.getRanges(true);if(ac.length==1&&ac[0].collapsed){var ad=new CKEDITOR.dom.text(H.type=='email'?H.email.address:F['data-cke-saved-href'],J.document);ac[0].insertNode(ad);ac[0].selectNodeContents(ad);ab.selectRanges(ac);}var ae=new CKEDITOR.style({element:'a',attributes:F});ae.type=CKEDITOR.STYLE_INLINE;ae.apply(J.document);}else{var af=this._.selectedElement,ag=af.data('cke-saved-href'),ah=af.getHtml();
+af.setAttributes(F);af.removeAttributes(G);if(H.adv&&H.adv.advName&&CKEDITOR.plugins.link.synAnchorSelector)af.addClass(af.getChildCount()?'cke_anchor':'cke_anchor_empty');if(ag==ah||H.type=='email'&&ah.indexOf('@')!=-1)af.setHtml(H.type=='email'?H.email.address:F['data-cke-saved-href']);ab.selectElement(af);delete this._.selectedElement;}},onLoad:function(){if(!a.config.linkShowAdvancedTab)this.hidePage('advanced');if(!a.config.linkShowTargetTab)this.hidePage('target');},onFocus:function(){var F=this.getContentElement('info','linkType'),G;if(F&&F.getValue()=='url'){G=this.getContentElement('info','url');G.select();}}};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/link/images/anchor.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/link/images/anchor.gif
new file mode 100755
index 0000000..5aa797b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/link/images/anchor.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/liststyle/dialogs/liststyle.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/liststyle/dialogs/liststyle.js
new file mode 100755
index 0000000..5bf1c7f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/liststyle/dialogs/liststyle.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(e,f){var g;try{g=e.getSelection().getRanges()[0];}catch(h){return null;}g.shrink(CKEDITOR.SHRINK_TEXT);return g.getCommonAncestor().getAscendant(f,1);};var b=function(e){return e.type==CKEDITOR.NODE_ELEMENT&&e.is('li');},c={a:'lower-alpha',A:'upper-alpha',i:'lower-roman',I:'upper-roman',1:'decimal',disc:'disc',circle:'circle',square:'square'};function d(e,f){var g=e.lang.list;if(f=='bulletedListStyle')return{title:g.bulletedTitle,minWidth:300,minHeight:50,contents:[{id:'info',accessKey:'I',elements:[{type:'select',label:g.type,id:'type',align:'center',style:'width:150px',items:[[g.notset,''],[g.circle,'circle'],[g.disc,'disc'],[g.square,'square']],setup:function(i){var j=i.getStyle('list-style-type')||c[i.getAttribute('type')]||i.getAttribute('type')||'';this.setValue(j);},commit:function(i){var j=this.getValue();if(j)i.setStyle('list-style-type',j);else i.removeStyle('list-style-type');}}]}],onShow:function(){var i=this.getParentEditor(),j=a(i,'ul');j&&this.setupContent(j);},onOk:function(){var i=this.getParentEditor(),j=a(i,'ul');j&&this.commitContent(j);}};else if(f=='numberedListStyle'){var h=[[g.notset,''],[g.lowerRoman,'lower-roman'],[g.upperRoman,'upper-roman'],[g.lowerAlpha,'lower-alpha'],[g.upperAlpha,'upper-alpha'],[g.decimal,'decimal']];if(!CKEDITOR.env.ie||CKEDITOR.env.version>7)h.concat([[g.armenian,'armenian'],[g.decimalLeadingZero,'decimal-leading-zero'],[g.georgian,'georgian'],[g.lowerGreek,'lower-greek']]);return{title:g.numberedTitle,minWidth:300,minHeight:50,contents:[{id:'info',accessKey:'I',elements:[{type:'hbox',widths:['25%','75%'],children:[{label:g.start,type:'text',id:'start',validate:CKEDITOR.dialog.validate.integer(g.validateStartNumber),setup:function(i){var j=i.getFirst(b).getAttribute('value')||i.getAttribute('start')||1;j&&this.setValue(j);},commit:function(i){var j=i.getFirst(b),k=j.getAttribute('value')||i.getAttribute('start')||1;i.getFirst(b).removeAttribute('value');var l=parseInt(this.getValue(),10);if(isNaN(l))i.removeAttribute('start');else i.setAttribute('start',l);var m=j,n=k,o=isNaN(l)?1:l;while((m=m.getNext(b))&&n++){if(m.getAttribute('value')==n)m.setAttribute('value',o+n-k);}}},{type:'select',label:g.type,id:'type',style:'width: 100%;',items:h,setup:function(i){var j=i.getStyle('list-style-type')||c[i.getAttribute('type')]||i.getAttribute('type')||'';this.setValue(j);},commit:function(i){var j=this.getValue();if(j)i.setStyle('list-style-type',j);else i.removeStyle('list-style-type');}}]}]}],onShow:function(){var i=this.getParentEditor(),j=a(i,'ol');
+j&&this.setupContent(j);},onOk:function(){var i=this.getParentEditor(),j=a(i,'ol');j&&this.commitContent(j);}};}};CKEDITOR.dialog.add('numberedListStyle',function(e){return d(e,'numberedListStyle');});CKEDITOR.dialog.add('bulletedListStyle',function(e){return d(e,'bulletedListStyle');});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/pagebreak/images/pagebreak.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/pagebreak/images/pagebreak.gif
new file mode 100755
index 0000000..8d1cffd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/pagebreak/images/pagebreak.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/pastefromword/filter/default.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/pastefromword/filter/default.js
new file mode 100755
index 0000000..e424034
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/pastefromword/filter/default.js
@@ -0,0 +1,11 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=CKEDITOR.htmlParser.fragment.prototype,b=CKEDITOR.htmlParser.element.prototype;a.onlyChild=b.onlyChild=function(){var u=this.children,v=u.length,w=v==1&&u[0];return w||null;};b.removeAnyChildWithName=function(u){var v=this.children,w=[],x;for(var y=0;y<v.length;y++){x=v[y];if(!x.name)continue;if(x.name==u){w.push(x);v.splice(y--,1);}w=w.concat(x.removeAnyChildWithName(u));}return w;};b.getAncestor=function(u){var v=this.parent;while(v&&!(v.name&&v.name.match(u)))v=v.parent;return v;};a.firstChild=b.firstChild=function(u){var v;for(var w=0;w<this.children.length;w++){v=this.children[w];if(u(v))return v;else if(v.name){v=v.firstChild(u);if(v)return v;}}return null;};b.addStyle=function(u,v,w){var A=this;var x,y='';if(typeof v=='string')y+=u+':'+v+';';else{if(typeof u=='object')for(var z in u){if(u.hasOwnProperty(z))y+=z+':'+u[z]+';';}else y+=u;w=v;}if(!A.attributes)A.attributes={};x=A.attributes.style||'';x=(w?[y,x]:[x,y]).join(';');A.attributes.style=x.replace(/^;|;(?=;)/,'');};CKEDITOR.dtd.parentOf=function(u){var v={};for(var w in this){if(w.indexOf('$')==-1&&this[w][u])v[w]=1;}return v;};function c(u){var v=u.children,w,x,y=u.children.length,z,A,B=/list-style-type:(.*?)(?:;|$)/,C=CKEDITOR.plugins.pastefromword.filters.stylesFilter;x=u.attributes;if(B.exec(x.style))return;for(var D=0;D<y;D++){w=v[D];if(w.attributes.value&&Number(w.attributes.value)==D+1)delete w.attributes.value;z=B.exec(w.attributes.style);if(z)if(z[1]==A||!A)A=z[1];else{A=null;break;}}if(A){for(D=0;D<y;D++){x=v[D].attributes;x.style&&(x.style=C([['list-style-type']])(x.style)||'');}u.addStyle('list-style-type',A);}};var d=/^([.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i,e=/^(?:\b0[^\s]*\s*){1,4}$/,f='^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$',g=new RegExp(f),h=new RegExp(f.toUpperCase()),i={decimal:/\d+/,'lower-roman':g,'upper-roman':h,'lower-alpha':/^[a-z]+$/,'upper-alpha':/^[A-Z]+$/},j={disc:/[l\u00B7\u2002]/,circle:/[\u006F\u00D8]/,square:/[\u006E\u25C6]/},k={ol:i,ul:j},l=[[1000,'M'],[900,'CM'],[500,'D'],[400,'CD'],[100,'C'],[90,'XC'],[50,'L'],[40,'XL'],[10,'X'],[9,'IX'],[5,'V'],[4,'IV'],[1,'I']],m='ABCDEFGHIJKLMNOPQRSTUVWXYZ';function n(u){u=u.toUpperCase();var v=l.length,w=0;for(var x=0;x<v;++x)for(var y=l[x],z=y[1].length;u.substr(0,z)==y[1];u=u.substr(z))w+=y[0];return w;};function o(u){u=u.toUpperCase();var v=m.length,w=1;for(var x=1;u.length>0;x*=v){w+=m.indexOf(u.charAt(u.length-1))*x;u=u.substr(0,u.length-1);}return w;
+};var p=0,q=null,r,s=CKEDITOR.plugins.pastefromword={utils:{createListBulletMarker:function(u,v){var w=new CKEDITOR.htmlParser.element('cke:listbullet');w.attributes={'cke:listsymbol':u[0]};w.add(new CKEDITOR.htmlParser.text(v));return w;},isListBulletIndicator:function(u){var v=u.attributes&&u.attributes.style;if(/mso-list\s*:\s*Ignore/i.test(v))return true;},isContainingOnlySpaces:function(u){var v;return(v=u.onlyChild())&&/^(:?\s| )+$/.test(v.value);},resolveList:function(u){var v=u.attributes,w;if((w=u.removeAnyChildWithName('cke:listbullet'))&&w.length&&(w=w[0])){u.name='cke:li';if(v.style)v.style=s.filters.stylesFilter([['text-indent'],['line-height'],[/^margin(:?-left)?$/,null,function(x){var y=x.split(' ');x=CKEDITOR.tools.convertToPx(y[3]||y[1]||y[0]);if(!p&&q!==null&&x>q)p=x-q;q=x;v['cke:indent']=p&&Math.ceil(x/p)+1||1;}],[/^mso-list$/,null,function(x){x=x.split(' ');var y=Number(x[0].match(/\d+/)),z=Number(x[1].match(/\d+/));if(z==1){y!==r&&(v['cke:reset']=1);r=y;}v['cke:indent']=z;}]])(v.style,u)||'';if(!v['cke:indent']){q=0;v['cke:indent']=1;}CKEDITOR.tools.extend(v,w.attributes);return true;}else r=q=p=null;return false;},getStyleComponents:(function(){var u=CKEDITOR.dom.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(u);return function(v,w,x){u.setStyle(v,w);var y={},z=x.length;for(var A=0;A<z;A++)y[x[A]]=u.getStyle(x[A]);return y;};})(),listDtdParents:CKEDITOR.dtd.parentOf('ol')},filters:{flattenList:function(u,v){v=typeof v=='number'?v:1;var w=u.attributes,x;switch(w.type){case 'a':x='lower-alpha';break;case '1':x='decimal';break;}var y=u.children,z;for(var A=0;A<y.length;A++){z=y[A];if(z.name in CKEDITOR.dtd.$listItem){var B=z.attributes,C=z.children,D=C.length,E=C[D-1];if(E.name in CKEDITOR.dtd.$list){u.add(E,A+1);if(!--C.length)y.splice(A--,1);}z.name='cke:li';w.start&&!A&&(B.value=w.start);s.filters.stylesFilter([['tab-stops',null,function(H){var I=H.split(' ')[1].match(d);I&&(q=CKEDITOR.tools.convertToPx(I[0]));}],v==1?['mso-list',null,function(H){H=H.split(' ');var I=Number(H[0].match(/\d+/));I!==r&&(B['cke:reset']=1);r=I;}]:null])(B.style);B['cke:indent']=v;B['cke:listtype']=u.name;B['cke:list-style-type']=x;}else if(z.name in CKEDITOR.dtd.$list){arguments.callee.apply(this,[z,v+1]);y=y.slice(0,A).concat(z.children).concat(y.slice(A+1));u.children=[];for(var F=0,G=y.length;F<G;F++)u.add(y[F]);}}delete u.name;w['cke:list']=1;},assembleList:function(u){var v=u.children,w,x,y,z,A,B,C,D=[],E,F,G,H,I,J;
+for(var K=0;K<v.length;K++){w=v[K];if('cke:li'==w.name){w.name='li';x=w;y=x.attributes;G=y['cke:listsymbol'];G=G&&G.match(/^(?:[(]?)([^\s]+?)([.)]?)$/);H=I=J=null;if(y['cke:ignored']){v.splice(K--,1);continue;}y['cke:reset']&&(C=A=B=null);z=Number(y['cke:indent']);if(z!=A)F=E=null;if(!G){H=y['cke:listtype']||'ol';I=y['cke:list-style-type'];}else{if(F&&k[F][E].test(G[1])){H=F;I=E;}else for(var L in k)for(var M in k[L]){if(k[L][M].test(G[1]))if(L=='ol'&&/alpha|roman/.test(M)){var N=/roman/.test(M)?n(G[1]):o(G[1]);if(!J||N<J){J=N;H=L;I=M;}}else{H=L;I=M;break;}}!H&&(H=G[2]?'ol':'ul');}F=H;E=I||(H=='ol'?'decimal':'disc');if(I&&I!=(H=='ol'?'decimal':'disc'))x.addStyle('list-style-type',I);if(H=='ol'&&G){switch(I){case 'decimal':J=Number(G[1]);break;case 'lower-roman':case 'upper-roman':J=n(G[1]);break;case 'lower-alpha':case 'upper-alpha':J=o(G[1]);break;}x.attributes.value=J;}if(!C){D.push(C=new CKEDITOR.htmlParser.element(H));C.add(x);v[K]=C;}else{if(z>A){D.push(C=new CKEDITOR.htmlParser.element(H));C.add(x);B.add(C);}else if(z<A){var O=A-z,P;while(O--&&(P=C.parent))C=P.parent;C.add(x);}else C.add(x);v.splice(K--,1);}B=x;A=z;}else if(C)C=A=B=null;}for(K=0;K<D.length;K++)c(D[K]);C=A=B=r=q=p=null;},falsyFilter:function(u){return false;},stylesFilter:function(u,v){return function(w,x){var y=[];(w||'').replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(A,B,C){B=B.toLowerCase();B=='font-family'&&(C=C.replace(/["']/g,''));var D,E,F,G;for(var H=0;H<u.length;H++){if(u[H]){D=u[H][0];E=u[H][1];F=u[H][2];G=u[H][3];if(B.match(D)&&(!E||C.match(E))){B=G||B;v&&(F=F||C);if(typeof F=='function')F=F(C,x,B);if(F&&F.push)B=F[0],F=F[1];if(typeof F=='string')y.push([B,F]);return;}}}!v&&y.push([B,C]);});for(var z=0;z<y.length;z++)y[z]=y[z].join(':');return y.length?y.join(';')+';':false;};},elementMigrateFilter:function(u,v){return function(w){var x=v?new CKEDITOR.style(u,v)._.definition:u;w.name=x.element;CKEDITOR.tools.extend(w.attributes,CKEDITOR.tools.clone(x.attributes));w.addStyle(CKEDITOR.style.getStyleText(x));};},styleMigrateFilter:function(u,v){var w=this.elementMigrateFilter;return function(x,y){var z=new CKEDITOR.htmlParser.element(null),A={};A[v]=x;w(u,A)(z);z.children=y.children;y.children=[z];};},bogusAttrFilter:function(u,v){if(v.name.indexOf('cke:')==-1)return false;},applyStyleFilter:null},getRules:function(u){var v=CKEDITOR.dtd,w=CKEDITOR.tools.extend({},v.$block,v.$listItem,v.$tableContent),x=u.config,y=this.filters,z=y.falsyFilter,A=y.stylesFilter,B=y.elementMigrateFilter,C=CKEDITOR.tools.bind(this.filters.styleMigrateFilter,this.filters),D=this.utils.createListBulletMarker,E=y.flattenList,F=y.assembleList,G=this.utils.isListBulletIndicator,H=this.utils.isContainingOnlySpaces,I=this.utils.resolveList,J=function(O){O=CKEDITOR.tools.convertToPx(O);
+return isNaN(O)?O:O+'px';},K=this.utils.getStyleComponents,L=this.utils.listDtdParents,M=x.pasteFromWordRemoveFontStyles!==false,N=x.pasteFromWordRemoveStyles!==false;return{elementNames:[[/meta|link|script/,'']],root:function(O){O.filterChildren();F(O);},elements:{'^':function(O){var P;if(CKEDITOR.env.gecko&&(P=y.applyStyleFilter))P(O);},$:function(O){var P=O.name||'',Q=O.attributes;if(P in w&&Q.style)Q.style=A([[/^(:?width|height)$/,null,J]])(Q.style)||'';if(P.match(/h\d/)){O.filterChildren();if(I(O))return;B(x['format_'+P])(O);}else if(P in v.$inline){O.filterChildren();if(H(O))delete O.name;}else if(P.indexOf(':')!=-1&&P.indexOf('cke')==-1){O.filterChildren();if(P=='v:imagedata'){var R=O.attributes['o:href'];if(R)O.attributes.src=R;O.name='img';return;}delete O.name;}if(P in L){O.filterChildren();F(O);}},style:function(O){if(CKEDITOR.env.gecko){var P=O.onlyChild().value.match(/\/\* Style Definitions \*\/([\s\S]*?)\/\*/),Q=P&&P[1],R={};if(Q){Q.replace(/[\n\r]/g,'').replace(/(.+?)\{(.+?)\}/g,function(S,T,U){T=T.split(',');var V=T.length,W;for(var X=0;X<V;X++)CKEDITOR.tools.trim(T[X]).replace(/^(\w+)(\.[\w-]+)?$/g,function(Y,Z,aa){Z=Z||'*';aa=aa.substring(1,aa.length);if(aa.match(/MsoNormal/))return;if(!R[Z])R[Z]={};if(aa)R[Z][aa]=U;else R[Z]=U;});});y.applyStyleFilter=function(S){var T=R['*']?'*':S.name,U=S.attributes&&S.attributes['class'],V;if(T in R){V=R[T];if(typeof V=='object')V=V[U];V&&S.addStyle(V,true);}};}}return false;},p:function(O){if(/MsoListParagraph/.exec(O.attributes['class'])){var P=O.firstChild(function(S){return S.type==CKEDITOR.NODE_TEXT&&!H(S.parent);}),Q=P&&P.parent,R=Q&&Q.attributes;R&&!R.style&&(R.style='mso-list: Ignore;');}O.filterChildren();if(I(O))return;if(x.enterMode==CKEDITOR.ENTER_BR){delete O.name;O.add(new CKEDITOR.htmlParser.element('br'));}else B(x['format_'+(x.enterMode==CKEDITOR.ENTER_P?'p':'div')])(O);},div:function(O){var P=O.onlyChild();if(P&&P.name=='table'){var Q=O.attributes;P.attributes=CKEDITOR.tools.extend(P.attributes,Q);Q.style&&P.addStyle(Q.style);var R=new CKEDITOR.htmlParser.element('div');R.addStyle('clear','both');O.add(R);delete O.name;}},td:function(O){if(O.getAncestor('thead'))O.name='th';},ol:E,ul:E,dl:E,font:function(O){if(G(O.parent)){delete O.name;return;}O.filterChildren();var P=O.attributes,Q=P.style,R=O.parent;if('font'==R.name){CKEDITOR.tools.extend(R.attributes,O.attributes);Q&&R.addStyle(Q);delete O.name;}else{Q=Q||'';if(P.color){P.color!='#000000'&&(Q+='color:'+P.color+';');delete P.color;
+}if(P.face){Q+='font-family:'+P.face+';';delete P.face;}if(P.size){Q+='font-size:'+(P.size>3?'large':P.size<3?'small':'medium')+';';delete P.size;}O.name='span';O.addStyle(Q);}},span:function(O){if(G(O.parent))return false;O.filterChildren();if(H(O)){delete O.name;return null;}if(G(O)){var P=O.firstChild(function(Y){return Y.value||Y.name=='img';}),Q=P&&(P.value||'l.'),R=Q&&Q.match(/^(?:[(]?)([^\s]+?)([.)]?)$/);if(R){var S=D(R,Q),T=O.getAncestor('span');if(T&&/ mso-hide:\s*all|display:\s*none /.test(T.attributes.style))S.attributes['cke:ignored']=1;return S;}}var U=O.children,V=O.attributes,W=V&&V.style,X=U&&U[0];if(W)V.style=A([['line-height'],[/^font-family$/,null,!M?C(x.font_style,'family'):null],[/^font-size$/,null,!M?C(x.fontSize_style,'size'):null],[/^color$/,null,!M?C(x.colorButton_foreStyle,'color'):null],[/^background-color$/,null,!M?C(x.colorButton_backStyle,'color'):null]])(W,O)||'';return null;},b:B(x.coreStyles_bold),i:B(x.coreStyles_italic),u:B(x.coreStyles_underline),s:B(x.coreStyles_strike),sup:B(x.coreStyles_superscript),sub:B(x.coreStyles_subscript),a:function(O){var P=O.attributes;if(P&&!P.href&&P.name)delete O.name;else if(CKEDITOR.env.webkit&&P.href&&P.href.match(/file:\/\/\/[\S]+#/i))P.href=P.href.replace(/file:\/\/\/[^#]+/i,'');},'cke:listbullet':function(O){if(O.getAncestor(/h\d/)&&!x.pasteFromWordNumberedHeadingToList)delete O.name;}},attributeNames:[[/^onmouse(:?out|over)/,''],[/^onload$/,''],[/(?:v|o):\w+/,''],[/^lang/,'']],attributes:{style:A(N?[[/^list-style-type$/,null],[/^margin$|^margin-(?!bottom|top)/,null,function(O,P,Q){if(P.name in {p:1,div:1}){var R=x.contentsLangDirection=='ltr'?'margin-left':'margin-right';if(Q=='margin')O=K(Q,O,[R])[R];else if(Q!=R)return null;if(O&&!e.test(O))return[R,O];}return null;}],[/^clear$/],[/^border.*|margin.*|vertical-align|float$/,null,function(O,P){if(P.name=='img')return O;}],[/^width|height$/,null,function(O,P){if(P.name in {table:1,td:1,th:1,img:1})return O;}]]:[[/^mso-/],[/-color$/,null,function(O){if(O=='transparent')return false;if(CKEDITOR.env.gecko)return O.replace(/-moz-use-text-color/g,'transparent');}],[/^margin$/,e],['text-indent','0cm'],['page-break-before'],['tab-stops'],['display','none'],M?[/font-?/]:null],N),width:function(O,P){if(P.name in v.$tableContent)return false;},border:function(O,P){if(P.name in v.$tableContent)return false;},'class':z,bgcolor:z,valign:N?z:function(O,P){P.addStyle('vertical-align',O);return false;}},comment:!CKEDITOR.env.ie?function(O,P){var Q=O.match(/<img.*?>/),R=O.match(/^\[if !supportLists\]([\s\S]*?)\[endif\]$/);
+if(R){var S=R[1]||Q&&'l.',T=S&&S.match(/>(?:[(]?)([^\s]+?)([.)]?)</);return D(T,S);}if(CKEDITOR.env.gecko&&Q){var U=CKEDITOR.htmlParser.fragment.fromHtml(Q[0]).children[0],V=P.previous,W=V&&V.value.match(/<v:imagedata[^>]*o:href=['"](.*?)['"]/),X=W&&W[1];X&&(U.attributes.src=X);return U;}return false;}:z};}},t=function(){this.dataFilter=new CKEDITOR.htmlParser.filter();};t.prototype={toHtml:function(u){var v=CKEDITOR.htmlParser.fragment.fromHtml(u,false),w=new CKEDITOR.htmlParser.basicWriter();v.writeHtml(w,this.dataFilter);return w.getHtml(true);}};CKEDITOR.cleanWord=function(u,v){if(CKEDITOR.env.gecko)u=u.replace(/(<!--\[if[^<]*?\])-->([\S\s]*?)<!--(\[endif\]-->)/gi,'$1$2$3');var w=new t(),x=w.dataFilter;x.addRules(CKEDITOR.plugins.pastefromword.getRules(v));v.fire('beforeCleanWord',{filter:x});try{u=w.toHtml(u,false);}catch(y){alert(v.lang.pastefromword.error);}u=u.replace(/cke:.*?".*?"/g,'');u=u.replace(/style=""/g,'');u=u.replace(/<span>/g,'');return u;};})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/pastetext/dialogs/pastetext.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/pastetext/dialogs/pastetext.js
new file mode 100755
index 0000000..6d87d47
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/pastetext/dialogs/pastetext.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.dialog.add('pastetext',function(a){return{title:a.lang.pasteText.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?368:350,minHeight:240,onShow:function(){this.setupContent();},onOk:function(){this.commitContent();},contents:[{label:a.lang.common.generalTab,id:'general',elements:[{type:'html',id:'pasteMsg',html:'<div style="white-space:normal;width:340px;">'+a.lang.clipboard.pasteMsg+'</div>'},{type:'textarea',id:'content',className:'cke_pastetext',onLoad:function(){var b=this.getDialog().getContentElement('general','pasteMsg').getElement(),c=this.getElement().getElementsByTag('textarea').getItem(0);c.setAttribute('aria-labelledby',b.$.id);c.setStyle('direction',a.config.contentsLangDirection);},focus:function(){this.getElement().focus();},setup:function(){this.setValue('');},commit:function(){var b=this.getValue();setTimeout(function(){a.fire('paste',{text:b});},0);}}]}]};});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/dialogs/placeholder.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/dialogs/placeholder.js
new file mode 100755
index 0000000..650aaa4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/dialogs/placeholder.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(b,c){var d=b.lang.placeholder,e=b.lang.common.generalTab;return{title:d.title,minWidth:300,minHeight:80,contents:[{id:'info',label:e,title:e,elements:[{id:'text',type:'text',style:'width: 100%;',label:d.text,'default':'',required:true,validate:CKEDITOR.dialog.validate.notEmpty(d.textMissing),setup:function(f){if(c)this.setValue(f.getText().slice(2,-2));},commit:function(f){var g='[['+this.getValue()+']]';CKEDITOR.plugins.placeholder.createPlaceholder(b,f,g);}}]}],onShow:function(){if(c)this._element=CKEDITOR.plugins.placeholder.getSelectedPlaceHoder(b);this.setupContent(this._element);},onOk:function(){this.commitContent(this._element);delete this._element;}};};CKEDITOR.dialog.add('createplaceholder',function(b){return a(b);});CKEDITOR.dialog.add('editplaceholder',function(b){return a(b,1);});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/_translationstatus.txt b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/_translationstatus.txt
new file mode 100755
index 0000000..0485f8e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/_translationstatus.txt
@@ -0,0 +1,27 @@
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+
+bg.js Found: 5 Missing: 0
+cs.js Found: 5 Missing: 0
+cy.js Found: 5 Missing: 0
+da.js Found: 5 Missing: 0
+de.js Found: 5 Missing: 0
+el.js Found: 5 Missing: 0
+eo.js Found: 5 Missing: 0
+et.js Found: 5 Missing: 0
+fa.js Found: 5 Missing: 0
+fi.js Found: 5 Missing: 0
+fr.js Found: 5 Missing: 0
+he.js Found: 5 Missing: 0
+hr.js Found: 5 Missing: 0
+it.js Found: 5 Missing: 0
+nb.js Found: 5 Missing: 0
+nl.js Found: 5 Missing: 0
+no.js Found: 5 Missing: 0
+pl.js Found: 5 Missing: 0
+pt-br.js Found: 5 Missing: 0
+tr.js Found: 5 Missing: 0
+ug.js Found: 5 Missing: 0
+uk.js Found: 5 Missing: 0
+vi.js Found: 4 Missing: 1
+zh-cn.js Found: 5 Missing: 0
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/bg.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/bg.js
new file mode 100755
index 0000000..2101055
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/bg.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','bg',{placeholder:{title:'Настройки на контейнера',toolbar:'Нов контейнер',text:'Текст за контейнера',edit:'Промяна на контейнер',textMissing:'Контейнера трябва да съдържа текст.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/cs.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/cs.js
new file mode 100755
index 0000000..ec9d50a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/cs.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','cs',{placeholder:{title:'Vlastnosti vyhrazeného prostoru',toolbar:'Vytvořit vyhrazený prostor',text:'Vyhrazený text',edit:'Upravit vyhrazený prostor',textMissing:'Vyhrazený prostor musí obsahovat text.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/cy.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/cy.js
new file mode 100755
index 0000000..67ea981
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/cy.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','cy',{placeholder:{title:"Priodweddau'r Daliwr Geiriau",toolbar:'Creu Daliwr Geiriau',text:'Testun y Daliwr Geiriau',edit:"Golygu'r Dailwr Geiriau",textMissing:"Mae'n rhaid i'r daliwr geiriau gynnwys testun."}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/da.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/da.js
new file mode 100755
index 0000000..41b9729
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/da.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','da',{placeholder:{title:'Egenskaber for pladsholder',toolbar:'Opret pladsholder',text:'Tekst til pladsholder',edit:'Redigér pladsholder',textMissing:'Pladsholder skal indeholde tekst'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/de.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/de.js
new file mode 100755
index 0000000..c95c303
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/de.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','de',{placeholder:{title:'Platzhalter Einstellungen',toolbar:'Platzhalter erstellen',text:'Platzhalter Text',edit:'Platzhalter bearbeiten',textMissing:'Der Platzhalter muss einen Text beinhalten.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/el.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/el.js
new file mode 100755
index 0000000..74a40ba
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/el.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','el',{placeholder:{title:'Ιδιότητες Υποκατάστατου Κειμένου',toolbar:'Δημιουργία Υποκατάσταστου Κειμένου',text:'Υποκαθιστόμενο Κείμενο',edit:'Επεξεργασία Υποκατάσταστου Κειμένου',textMissing:'Πρέπει να υπάρχει υποκαθιστόμενο κείμενο.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/en.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/en.js
new file mode 100755
index 0000000..83e64f9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/en.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','en',{placeholder:{title:'Placeholder Properties',toolbar:'Create Placeholder',text:'Placeholder Text',edit:'Edit Placeholder',textMissing:'The placeholder must contain text.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/eo.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/eo.js
new file mode 100755
index 0000000..228fbe8
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/eo.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','eo',{placeholder:{title:'Atributoj de la rezervita spaco',toolbar:'Krei la rezervitan spacon',text:'Texto de la rezervita spaco',edit:'Modifi la rezervitan spacon',textMissing:'La rezervita spaco devas enteni tekston.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/et.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/et.js
new file mode 100755
index 0000000..b527e1d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/et.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','et',{placeholder:{title:'Kohahoidja omadused',toolbar:'Kohahoidja loomine',text:'Kohahoidja tekst',edit:'Kohahoidja muutmine',textMissing:'Kohahoidja peab sisaldama teksti.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/fa.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/fa.js
new file mode 100755
index 0000000..e4ca062
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/fa.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','fa',{placeholder:{title:'ویژگیهای محل نگهداری',toolbar:'ایجاد یک محل نگهداری',text:'متن محل نگهداری',edit:'ویرایش محل نگهداری',textMissing:'محل نگهداری باید محتوی متن باشد.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/fi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/fi.js
new file mode 100755
index 0000000..90eafea
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/fi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','fi',{placeholder:{title:'Paikkamerkin ominaisuudet',toolbar:'Luo paikkamerkki',text:'Paikkamerkin teksti',edit:'Muokkaa paikkamerkkiä',textMissing:'Paikkamerkin täytyy sisältää tekstiä'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/fr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/fr.js
new file mode 100755
index 0000000..a177460
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/fr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','fr',{placeholder:{title:"Propriétés de l'Espace réservé",toolbar:"Créer l'Espace réservé",text:"Texte de l'Espace réservé",edit:"Modifier l'Espace réservé",textMissing:"L'Espace réservé doit contenir du texte."}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/he.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/he.js
new file mode 100755
index 0000000..fadfcbd
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/he.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','he',{placeholder:{title:'מאפייני שומר מקום',toolbar:'צור שומר מקום',text:'תוכן שומר המקום',edit:'ערוך שומר מקום',textMissing:'שומר המקום חייב להכיל טקסט.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/hr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/hr.js
new file mode 100755
index 0000000..8c195ce
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/hr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','hr',{placeholder:{title:'Svojstva rezerviranog mjesta',toolbar:'Napravi rezervirano mjesto',text:'Tekst rezerviranog mjesta',edit:'Uredi rezervirano mjesto',textMissing:'Rezervirano mjesto mora sadržavati tekst.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/it.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/it.js
new file mode 100755
index 0000000..86346eb
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/it.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','it',{placeholder:{title:'Proprietà segnaposto',toolbar:'Crea segnaposto',text:'Testo segnaposto',edit:'Modifica segnaposto',textMissing:'Il segnaposto deve contenere del testo.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/nb.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/nb.js
new file mode 100755
index 0000000..27f8410
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/nb.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','nb',{placeholder:{title:'Egenskaper for plassholder',toolbar:'Opprett plassholder',text:'Tekst for plassholder',edit:'Rediger plassholder',textMissing:'Plassholderen må inneholde tekst.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/nl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/nl.js
new file mode 100755
index 0000000..89b9a3e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/nl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','nl',{placeholder:{title:'Eigenschappen placeholder',toolbar:'Placeholder aanmaken',text:'Placeholder tekst',edit:'Placeholder wijzigen',textMissing:'De placeholder moet tekst bevatten.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/no.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/no.js
new file mode 100755
index 0000000..5aa1c5c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/no.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','no',{placeholder:{title:'Egenskaper for plassholder',toolbar:'Opprett plassholder',text:'Tekst for plassholder',edit:'Rediger plassholder',textMissing:'Plassholderen må inneholde tekst.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/pl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/pl.js
new file mode 100755
index 0000000..f859f09
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/pl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','pl',{placeholder:{title:'Właściwości wypełniacza',toolbar:'Utwórz wypełniacz',text:'Tekst wypełnienia',edit:'Edytuj wypełnienie',textMissing:'Wypełnienie musi posiadać jakiś tekst.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/pt-br.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/pt-br.js
new file mode 100755
index 0000000..c395d95
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/pt-br.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','pt-br',{placeholder:{title:'Propriedades do Espaço Reservado',toolbar:'Criar Espaço Reservado',text:'Texto do Espaço Reservado',edit:'Editar Espaço Reservado',textMissing:'O espaço reservado deve conter texto.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/tr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/tr.js
new file mode 100755
index 0000000..328092c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/tr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','tr',{placeholder:{title:'Yer tutucu özellikleri',toolbar:'Yer tutucu oluşturun',text:'Yer tutucu metini',edit:'Yer tutucuyu düzenle',textMissing:'Yer tutucu metin içermelidir.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/ug.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/ug.js
new file mode 100755
index 0000000..25a3049
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/ug.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','ug',{placeholder:{title:'ئورۇن بەلگە خاسلىقى',toolbar:'ئورۇن بەلگە قۇر',text:'ئورۇن بەلگە تېكىستى',edit:'ئورۇن بەلگە تەھرىر',textMissing:'ئورۇن بەلگىسىدە چوقۇم تېكىست بولۇشى لازىم'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/uk.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/uk.js
new file mode 100755
index 0000000..aefe4ab
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/uk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','uk',{placeholder:{title:'Налаштування Заповнювача',toolbar:'Створити Заповнювач',text:'Текст Заповнювача',edit:'Редагувати Заповнювач',textMissing:'Заповнювач повинен містити текст.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/vi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/vi.js
new file mode 100755
index 0000000..efcd578
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/vi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','vi',{placeholder:{title:'Thuộc tính đặt chỗ',toolbar:'Tạo đặt chỗ',text:'Văn bản đặt chỗ',edit:'Chỉnh sửa ',textMissing:'The placeholder must contain text.'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/zh-cn.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/zh-cn.js
new file mode 100755
index 0000000..a6dcfca
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/lang/zh-cn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('placeholder','zh-cn',{placeholder:{title:'占位符属性',toolbar:'创建占位符',text:'占位符文字',edit:'编辑占位符',textMissing:'占位符必需包含有文字'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/placeholder.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/placeholder.gif
new file mode 100755
index 0000000..c07078c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/placeholder.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/plugin.js
new file mode 100755
index 0000000..3087993
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/placeholder/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=/\[\[[^\]]+\]\]/g;CKEDITOR.plugins.add('placeholder',{requires:['dialog'],lang:['bg','cs','cy','da','de','el','en','eo','et','fa','fi','fr','he','hr','it','nb','nl','no','pl','pt-br','tr','ug','uk','vi','zh-cn'],init:function(b){var c=b.lang.placeholder;b.addCommand('createplaceholder',new CKEDITOR.dialogCommand('createplaceholder'));b.addCommand('editplaceholder',new CKEDITOR.dialogCommand('editplaceholder'));b.ui.addButton('CreatePlaceholder',{label:c.toolbar,command:'createplaceholder',icon:this.path+'placeholder.gif'});if(b.addMenuItems){b.addMenuGroup('placeholder',20);b.addMenuItems({editplaceholder:{label:c.edit,command:'editplaceholder',group:'placeholder',order:1,icon:this.path+'placeholder.gif'}});if(b.contextMenu)b.contextMenu.addListener(function(d,e){if(!d||!d.data('cke-placeholder'))return null;return{editplaceholder:CKEDITOR.TRISTATE_OFF};});}b.on('doubleclick',function(d){if(CKEDITOR.plugins.placeholder.getSelectedPlaceHoder(b))d.data.dialog='editplaceholder';});b.addCss('.cke_placeholder{background-color: #ffff00;'+(CKEDITOR.env.gecko?'cursor: default;':'')+'}');b.on('contentDom',function(){b.document.getBody().on('resizestart',function(d){if(b.getSelection().getSelectedElement().data('cke-placeholder'))d.data.preventDefault();});});CKEDITOR.dialog.add('createplaceholder',this.path+'dialogs/placeholder.js');CKEDITOR.dialog.add('editplaceholder',this.path+'dialogs/placeholder.js');},afterInit:function(b){var c=b.dataProcessor,d=c&&c.dataFilter,e=c&&c.htmlFilter;if(d)d.addRules({text:function(f){return f.replace(a,function(g){return CKEDITOR.plugins.placeholder.createPlaceholder(b,null,g,1);});}});if(e)e.addRules({elements:{span:function(f){if(f.attributes&&f.attributes['data-cke-placeholder'])delete f.name;}}});}});})();CKEDITOR.plugins.placeholder={createPlaceholder:function(a,b,c,d){var e=new CKEDITOR.dom.element('span',a.document);e.setAttributes({contentEditable:'false','data-cke-placeholder':1,'class':'cke_placeholder'});c&&e.setText(c);if(d)return e.getOuterHtml();if(b){if(CKEDITOR.env.ie){e.insertAfter(b);setTimeout(function(){b.remove();e.focus();},10);}else e.replace(b);}else a.insertElement(e);return null;},getSelectedPlaceHoder:function(a){var b=a.getSelection().getRanges()[0];b.shrink(CKEDITOR.SHRINK_TEXT);var c=b.startContainer;while(c&&!(c.type==CKEDITOR.NODE_ELEMENT&&c.data('cke-placeholder')))c=c.getParent();return c;}};
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/preview/preview.html b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/preview/preview.html
new file mode 100755
index 0000000..d6c4937
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/preview/preview.html
@@ -0,0 +1,10 @@
+<script>
+
+var doc = document;
+doc.open();
+doc.write( window.opener._cke_htmlToLoad );
+doc.close();
+
+delete window.opener._cke_htmlToLoad;
+
+</script>
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/scayt/dialogs/options.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/scayt/dialogs/options.js
new file mode 100755
index 0000000..d428963
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/scayt/dialogs/options.js
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('scaytcheck',function(a){var b=true,c,d=CKEDITOR.document,e=a.name,f=CKEDITOR.plugins.scayt.getUiTabs(a),g,h=[],i=0,j=['dic_create_'+e+',dic_restore_'+e,'dic_rename_'+e+',dic_delete_'+e],k=['mixedCase','mixedWithDigits','allCaps','ignoreDomainNames'];function l(){if(typeof document.forms['optionsbar_'+e]!='undefined')return document.forms['optionsbar_'+e].options;return[];};function m(){if(typeof document.forms['languagesbar_'+e]!='undefined')return document.forms['languagesbar_'+e].scayt_lang;return[];};function n(z,A){if(!z)return;var B=z.length;if(B==undefined){z.checked=z.value==A.toString();return;}for(var C=0;C<B;C++){z[C].checked=false;if(z[C].value==A.toString())z[C].checked=true;}};var o=a.lang.scayt,p=[{id:'options',label:o.optionsTab,elements:[{type:'html',id:'options',html:'<form name="optionsbar_'+e+'"><div class="inner_options">'+'\t<div class="messagebox"></div>'+'\t<div style="display:none;">'+'\t\t<input type="checkbox" name="options" id="allCaps_'+e+'" />'+'\t\t<label for="allCaps" id="label_allCaps_'+e+'"></label>'+'\t</div>'+'\t<div style="display:none;">'+'\t\t<input name="options" type="checkbox" id="ignoreDomainNames_'+e+'" />'+'\t\t<label for="ignoreDomainNames" id="label_ignoreDomainNames_'+e+'"></label>'+'\t</div>'+'\t<div style="display:none;">'+'\t<input name="options" type="checkbox" id="mixedCase_'+e+'" />'+'\t\t<label for="mixedCase" id="label_mixedCase_'+e+'"></label>'+'\t</div>'+'\t<div style="display:none;">'+'\t\t<input name="options" type="checkbox" id="mixedWithDigits_'+e+'" />'+'\t\t<label for="mixedWithDigits" id="label_mixedWithDigits_'+e+'"></label>'+'\t</div>'+'</div></form>'}]},{id:'langs',label:o.languagesTab,elements:[{type:'html',id:'langs',html:'<form name="languagesbar_'+e+'"><div class="inner_langs">'+'\t<div class="messagebox"></div>\t'+' <div style="float:left;width:45%;margin-left:5px;" id="scayt_lcol_'+e+'" ></div>'+' <div style="float:left;width:45%;margin-left:15px;" id="scayt_rcol_'+e+'"></div>'+'</div></form>'}]},{id:'dictionaries',label:o.dictionariesTab,elements:[{type:'html',style:'',id:'dictionaries',html:'<form name="dictionarybar_'+e+'"><div class="inner_dictionary" style="text-align:left; white-space:normal; width:320px; overflow: hidden;">'+'\t<div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message_'+e+'"> </div>'+'\t<div style="margin:5px auto; width:80%;white-space:normal;"> '+' <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>'+'\t\t<span class="cke_dialog_ui_labeled_content" >'+'\t\t\t<div class="cke_dialog_ui_input_text">'+'\t\t\t\t<input id="dic_name_'+e+'" type="text" class="cke_dialog_ui_input_text"/>'+'\t\t</div></span></div>'+'\t\t<div style="margin:5px auto; width:80%;white-space:normal;">'+'\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create_'+e+'">'+'\t\t\t\t</a>'+'\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete_'+e+'">'+'\t\t\t\t</a>'+'\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename_'+e+'">'+'\t\t\t\t</a>'+'\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore_'+e+'">'+'\t\t\t\t</a>'+'\t\t</div>'+'\t<div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info_'+e+'"></div>'+'</div></form>'}]},{id:'about',label:o.aboutTab,elements:[{type:'html',id:'about',style:'margin: 5px 5px;',html:'<div id="scayt_about_'+e+'"></div>'}]}],q={title:o.title,minWidth:360,minHeight:220,onShow:function(){var z=this;
+z.data=a.fire('scaytDialog',{});z.options=z.data.scayt_control.option();z.chosed_lang=z.sLang=z.data.scayt_control.sLang;if(!z.data||!z.data.scayt||!z.data.scayt_control){alert('Error loading application service');z.hide();return;}var A=0;if(b)z.data.scayt.getCaption(a.langCode||'en',function(B){if(A++>0)return;c=B;s.apply(z);t.apply(z);b=false;});else t.apply(z);z.selectPage(z.data.tab);},onOk:function(){var z=this.data.scayt_control;z.option(this.options);var A=this.chosed_lang;z.setLang(A);z.refresh();},onCancel:function(){var z=l();for(var A in z)z[A].checked=false;n(m(),'');},contents:h},r=CKEDITOR.plugins.scayt.getScayt(a);for(g=0;g<f.length;g++){if(f[g]==1)h[h.length]=p[g];}if(f[2]==1)i=1;var s=function(){var z=this,A=z.data.scayt.getLangList(),B=['dic_create','dic_delete','dic_rename','dic_restore'],C=[],D=[],E=k,F;if(i){for(F=0;F<B.length;F++){C[F]=B[F]+'_'+e;d.getById(C[F]).setHtml('<span class="cke_dialog_ui_button">'+c['button_'+B[F]]+'</span>');}d.getById('dic_info_'+e).setHtml(c.dic_info);}if(f[0]==1)for(F in E){var G='label_'+E[F],H=G+'_'+e,I=d.getById(H);if('undefined'!=typeof I&&'undefined'!=typeof c[G]&&'undefined'!=typeof z.options[E[F]]){I.setHtml(c[G]);var J=I.getParent();J.$.style.display='block';}}var K='<p><img src="'+window.scayt.getAboutInfo().logoURL+'" /></p>'+'<p>'+c.version+window.scayt.getAboutInfo().version.toString()+'</p>'+'<p>'+c.about_throwt_copy+'</p>';d.getById('scayt_about_'+e).setHtml(K);var L=function(U,V){var W=d.createElement('label');W.setAttribute('for','cke_option'+U);W.setHtml(V[U]);if(z.sLang==U)z.chosed_lang=U;var X=d.createElement('div'),Y=CKEDITOR.dom.element.createFromHtml('<input id="cke_option'+U+'" type="radio" '+(z.sLang==U?'checked="checked"':'')+' value="'+U+'" name="scayt_lang" />');Y.on('click',function(){this.$.checked=true;z.chosed_lang=U;});X.append(Y);X.append(W);return{lang:V[U],code:U,radio:X};};if(f[1]==1){for(F in A.rtl)D[D.length]=L(F,A.ltr);for(F in A.ltr)D[D.length]=L(F,A.ltr);D.sort(function(U,V){return V.lang>U.lang?-1:1;});var M=d.getById('scayt_lcol_'+e),N=d.getById('scayt_rcol_'+e);for(F=0;F<D.length;F++){var O=F<D.length/2?M:N;O.append(D[F].radio);}}var P={};P.dic_create=function(U,V,W){var X=W[0]+','+W[1],Y=c.err_dic_create,Z=c.succ_dic_create;window.scayt.createUserDictionary(V,function(aa){x(X);w(W[1]);Z=Z.replace('%s',aa.dname);v(Z);},function(aa){Y=Y.replace('%s',aa.dname);u(Y+'( '+(aa.message||'')+')');});};P.dic_rename=function(U,V){var W=c.err_dic_rename||'',X=c.succ_dic_rename||'';
+window.scayt.renameUserDictionary(V,function(Y){X=X.replace('%s',Y.dname);y(V);v(X);},function(Y){W=W.replace('%s',Y.dname);y(V);u(W+'( '+(Y.message||'')+' )');});};P.dic_delete=function(U,V,W){var X=W[0]+','+W[1],Y=c.err_dic_delete,Z=c.succ_dic_delete;window.scayt.deleteUserDictionary(function(aa){Z=Z.replace('%s',aa.dname);x(X);w(W[0]);y('');v(Z);},function(aa){Y=Y.replace('%s',aa.dname);u(Y);});};P.dic_restore=z.dic_restore||(function(U,V,W){var X=W[0]+','+W[1],Y=c.err_dic_restore,Z=c.succ_dic_restore;window.scayt.restoreUserDictionary(V,function(aa){Z=Z.replace('%s',aa.dname);x(X);w(W[1]);v(Z);},function(aa){Y=Y.replace('%s',aa.dname);u(Y);});});function Q(U){var V=d.getById('dic_name_'+e).getValue();if(!V){u(' Dictionary name should not be empty. ');return false;}try{var W=U.data.getTarget().getParent(),X=/(dic_\w+)_[\w\d]+/.exec(W.getId())[1];P[X].apply(null,[W,V,j]);}catch(Y){u(' Dictionary error. ');}return true;};var R=(j[0]+','+j[1]).split(','),S;for(F=0,S=R.length;F<S;F+=1){var T=d.getById(R[F]);if(T)T.on('click',Q,this);}},t=function(){var z=this;if(f[0]==1){var A=l();for(var B=0,C=A.length;B<C;B++){var D=A[B].id,E=d.getById(D);if(E){A[B].checked=false;if(z.options[D.split('_')[0]]==1)A[B].checked=true;if(b)E.on('click',function(){z.options[this.getId().split('_')[0]]=this.$.checked?1:0;});}}}if(f[1]==1){var F=d.getById('cke_option'+z.sLang);n(F.$,z.sLang);}if(i){window.scayt.getNameUserDictionary(function(G){var H=G.dname;x(j[0]+','+j[1]);if(H){d.getById('dic_name_'+e).setValue(H);w(j[1]);}else w(j[0]);},function(){d.getById('dic_name_'+e).setValue('');});v('');}};function u(z){d.getById('dic_message_'+e).setHtml('<span style="color:red;">'+z+'</span>');};function v(z){d.getById('dic_message_'+e).setHtml('<span style="color:blue;">'+z+'</span>');};function w(z){z=String(z);var A=z.split(',');for(var B=0,C=A.length;B<C;B+=1)d.getById(A[B]).$.style.display='inline';};function x(z){z=String(z);var A=z.split(',');for(var B=0,C=A.length;B<C;B+=1)d.getById(A[B]).$.style.display='none';};function y(z){d.getById('dic_name_'+e).$.value=z;};return q;});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/scayt/dialogs/toolbar.css b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/scayt/dialogs/toolbar.css
new file mode 100755
index 0000000..dcbed3c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/scayt/dialogs/toolbar.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+a{text-decoration:none;padding:2px 4px 4px 6px;display:block;border-width:1px;border-style:solid;margin:0;}a.cke_scayt_toogle:hover,a.cke_scayt_toogle:focus,a.cke_scayt_toogle:active{border-color:#316ac5;background-color:#dff1ff;color:#000;cursor:pointer;margin:0;}a.cke_scayt_toogle{color:#316ac5;border-color:#fff;}.scayt_enabled a.cke_scayt_item{color:#316ac5;border-color:#fff;margin:0;}.scayt_disabled a.cke_scayt_item{color:gray;border-color:#fff;}.scayt_enabled a.cke_scayt_item:hover,.scayt_enabled a.cke_scayt_item:focus,.scayt_enabled a.cke_scayt_item:active{border-color:#316ac5;background-color:#dff1ff;color:#000;cursor:pointer;}.scayt_disabled a.cke_scayt_item:hover,.scayt_disabled a.cke_scayt_item:focus,.scayt_disabled a.cke_scayt_item:active{border-color:gray;background-color:#dff1ff;color:gray;cursor:no-drop;}.cke_scayt_set_on,.cke_scayt_set_off{display:none;}.scayt_enabled .cke_scayt_set_on{display:none;}.scayt_disabled .cke_scayt_set_on{display:inline;}.scayt_disabled .cke_scayt_set_off{display:none;}.scayt_enabled .cke_scayt_set_off{display:inline;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_address.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_address.png
new file mode 100755
index 0000000..1ee67aa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_address.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_blockquote.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_blockquote.png
new file mode 100755
index 0000000..cae3aec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_blockquote.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_div.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_div.png
new file mode 100755
index 0000000..c71f397
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_div.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h1.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h1.png
new file mode 100755
index 0000000..3a64347
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h1.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h2.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h2.png
new file mode 100755
index 0000000..8062ebe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h2.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h3.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h3.png
new file mode 100755
index 0000000..5b6a403
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h3.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h4.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h4.png
new file mode 100755
index 0000000..6c7f795
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h4.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h5.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h5.png
new file mode 100755
index 0000000..e153de0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h5.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h6.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h6.png
new file mode 100755
index 0000000..c8d993a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_h6.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_p.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_p.png
new file mode 100755
index 0000000..4e6035d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_p.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_pre.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_pre.png
new file mode 100755
index 0000000..d11a0ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/showblocks/images/block_pre.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/dialogs/smiley.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/dialogs/smiley.js
new file mode 100755
index 0000000..a1a1968
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/dialogs/smiley.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('smiley',function(a){var b=a.config,c=a.lang.smiley,d=b.smiley_images,e=b.smiley_columns||8,f,g,h=function(o){var p=o.data.getTarget(),q=p.getName();if(q=='a')p=p.getChild(0);else if(q!='img')return;var r=p.getAttribute('cke_src'),s=p.getAttribute('title'),t=a.document.createElement('img',{attributes:{src:r,'data-cke-saved-src':r,title:s,alt:s,width:p.$.width,height:p.$.height}});a.insertElement(t);g.hide();o.data.preventDefault();},i=CKEDITOR.tools.addFunction(function(o,p){o=new CKEDITOR.dom.event(o);p=new CKEDITOR.dom.element(p);var q,r,s=o.getKeystroke(),t=a.lang.dir=='rtl';switch(s){case 38:if(q=p.getParent().getParent().getPrevious()){r=q.getChild([p.getParent().getIndex(),0]);r.focus();}o.preventDefault();break;case 40:if(q=p.getParent().getParent().getNext()){r=q.getChild([p.getParent().getIndex(),0]);if(r)r.focus();}o.preventDefault();break;case 32:h({data:o});o.preventDefault();break;case t?37:39:case 9:if(q=p.getParent().getNext()){r=q.getChild(0);r.focus();o.preventDefault(true);}else if(q=p.getParent().getParent().getNext()){r=q.getChild([0,0]);if(r)r.focus();o.preventDefault(true);}break;case t?39:37:case CKEDITOR.SHIFT+9:if(q=p.getParent().getPrevious()){r=q.getChild(0);r.focus();o.preventDefault(true);}else if(q=p.getParent().getParent().getPrevious()){r=q.getLast().getChild(0);r.focus();o.preventDefault(true);}break;default:return;}}),j=CKEDITOR.tools.getNextId()+'_smiley_emtions_label',k=['<div><span id="'+j+'" class="cke_voice_label">'+c.options+'</span>','<table role="listbox" aria-labelledby="'+j+'" style="width:100%;height:100%" cellspacing="2" cellpadding="2"',CKEDITOR.env.ie&&CKEDITOR.env.quirks?' style="position:absolute;"':'','><tbody>'],l=d.length;for(f=0;f<l;f++){if(f%e===0)k.push('<tr>');var m='cke_smile_label_'+f+'_'+CKEDITOR.tools.getNextNumber();k.push('<td class="cke_dark_background cke_centered" style="vertical-align: middle;"><a href="javascript:void(0)" role="option"',' aria-posinset="'+(f+1)+'"',' aria-setsize="'+l+'"',' aria-labelledby="'+m+'"',' class="cke_smile cke_hand" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ',i,', event, this );">','<img class="cke_hand" title="',b.smiley_descriptions[f],'" cke_src="',CKEDITOR.tools.htmlEncode(b.smiley_path+d[f]),'" alt="',b.smiley_descriptions[f],'"',' src="',CKEDITOR.tools.htmlEncode(b.smiley_path+d[f]),'"',CKEDITOR.env.ie?" onload=\"this.setAttribute('width', 2); this.removeAttribute('width');\" ":'','><span id="'+m+'" class="cke_voice_label">'+b.smiley_descriptions[f]+'</span>'+'</a>','</td>');
+if(f%e==e-1)k.push('</tr>');}if(f<e-1){for(;f<e-1;f++)k.push('<td></td>');k.push('</tr>');}k.push('</tbody></table></div>');var n={type:'html',id:'smileySelector',html:k.join(''),onLoad:function(o){g=o.sender;},focus:function(){var o=this;setTimeout(function(){var p=o.getElement().getElementsByTag('a').getItem(0);p.focus();},0);},onClick:h,style:'width: 100%; border-collapse: separate;'};return{title:a.lang.smiley.title,minWidth:270,minHeight:120,contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[n]}],buttons:[CKEDITOR.dialog.cancelButton]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/angel_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/angel_smile.gif
new file mode 100755
index 0000000..2cf4894
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/angel_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/angry_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/angry_smile.gif
new file mode 100755
index 0000000..40b52d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/angry_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/broken_heart.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/broken_heart.gif
new file mode 100755
index 0000000..b6d0166
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/broken_heart.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/confused_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/confused_smile.gif
new file mode 100755
index 0000000..a52db7a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/confused_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/cry_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/cry_smile.gif
new file mode 100755
index 0000000..1ef6ba4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/cry_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/devil_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/devil_smile.gif
new file mode 100755
index 0000000..bfb2507
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/devil_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/embaressed_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/embaressed_smile.gif
new file mode 100755
index 0000000..d9cedc5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/embaressed_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/envelope.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/envelope.gif
new file mode 100755
index 0000000..94e0b1f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/envelope.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/heart.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/heart.gif
new file mode 100755
index 0000000..680ae2f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/heart.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/kiss.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/kiss.gif
new file mode 100755
index 0000000..70e5255
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/kiss.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/lightbulb.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/lightbulb.gif
new file mode 100755
index 0000000..d44c2ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/lightbulb.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/omg_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/omg_smile.gif
new file mode 100755
index 0000000..ab7ea69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/omg_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/regular_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/regular_smile.gif
new file mode 100755
index 0000000..e5bc34b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/regular_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/sad_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/sad_smile.gif
new file mode 100755
index 0000000..ae4cf1e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/sad_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/shades_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/shades_smile.gif
new file mode 100755
index 0000000..b454017
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/shades_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/teeth_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/teeth_smile.gif
new file mode 100755
index 0000000..7d734d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/teeth_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/thumbs_down.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/thumbs_down.gif
new file mode 100755
index 0000000..90b9978
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/thumbs_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/thumbs_up.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/thumbs_up.gif
new file mode 100755
index 0000000..b633284
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/thumbs_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/tounge_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/tounge_smile.gif
new file mode 100755
index 0000000..b2e657f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/tounge_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif
new file mode 100755
index 0000000..7709882
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/wink_smile.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/wink_smile.gif
new file mode 100755
index 0000000..b210295
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/smiley/images/wink_smile.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/dialogs/specialchar.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/dialogs/specialchar.js
new file mode 100755
index 0000000..ac19d18
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/dialogs/specialchar.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('specialchar',function(a){var b,c=a.lang.specialChar,d=function(j){var k,l;if(j.data)k=j.data.getTarget();else k=new CKEDITOR.dom.element(j);if(k.getName()=='a'&&(l=k.getChild(0).getHtml())){k.removeClass('cke_light_background');b.hide();var m=a.document.createElement('span');m.setHtml(l);a.insertText(m.getText());}},e=CKEDITOR.tools.addFunction(d),f,g=function(j,k){var l;k=k||j.data.getTarget();if(k.getName()=='span')k=k.getParent();if(k.getName()=='a'&&(l=k.getChild(0).getHtml())){if(f)h(null,f);var m=b.getContentElement('info','htmlPreview').getElement();b.getContentElement('info','charPreview').getElement().setHtml(l);m.setHtml(CKEDITOR.tools.htmlEncode(l));k.getParent().addClass('cke_light_background');f=k;}},h=function(j,k){k=k||j.data.getTarget();if(k.getName()=='span')k=k.getParent();if(k.getName()=='a'){b.getContentElement('info','charPreview').getElement().setHtml(' ');b.getContentElement('info','htmlPreview').getElement().setHtml(' ');k.getParent().removeClass('cke_light_background');f=undefined;}},i=CKEDITOR.tools.addFunction(function(j){j=new CKEDITOR.dom.event(j);var k=j.getTarget(),l,m,n=j.getKeystroke(),o=a.lang.dir=='rtl';switch(n){case 38:if(l=k.getParent().getParent().getPrevious()){m=l.getChild([k.getParent().getIndex(),0]);m.focus();h(null,k);g(null,m);}j.preventDefault();break;case 40:if(l=k.getParent().getParent().getNext()){m=l.getChild([k.getParent().getIndex(),0]);if(m&&m.type==1){m.focus();h(null,k);g(null,m);}}j.preventDefault();break;case 32:d({data:j});j.preventDefault();break;case o?37:39:case 9:if(l=k.getParent().getNext()){m=l.getChild(0);if(m.type==1){m.focus();h(null,k);g(null,m);j.preventDefault(true);}else h(null,k);}else if(l=k.getParent().getParent().getNext()){m=l.getChild([0,0]);if(m&&m.type==1){m.focus();h(null,k);g(null,m);j.preventDefault(true);}else h(null,k);}break;case o?39:37:case CKEDITOR.SHIFT+9:if(l=k.getParent().getPrevious()){m=l.getChild(0);m.focus();h(null,k);g(null,m);j.preventDefault(true);}else if(l=k.getParent().getParent().getPrevious()){m=l.getLast().getChild(0);m.focus();h(null,k);g(null,m);j.preventDefault(true);}else h(null,k);break;default:return;}});return{title:c.title,minWidth:430,minHeight:280,buttons:[CKEDITOR.dialog.cancelButton],charColumns:17,onLoad:function(){var j=this.definition.charColumns,k=a.config.extraSpecialChars,l=a.config.specialChars,m=CKEDITOR.tools.getNextId()+'_specialchar_table_label',n=['<table role="listbox" aria-labelledby="'+m+'"'+' style="width: 320px; height: 100%; border-collapse: separate;"'+' align="center" cellspacing="2" cellpadding="2" border="0">'],o=0,p=l.length,q,r;
+while(o<p){n.push('<tr>');for(var s=0;s<j;s++,o++){if(q=l[o]){r='';if(q instanceof Array){r=q[1];q=q[0];}else{var t=q.replace('&','').replace(';','').replace('#','');r=c[t]||q;}var u='cke_specialchar_label_'+o+'_'+CKEDITOR.tools.getNextNumber();n.push('<td class="cke_dark_background" style="cursor: default" role="presentation"><a href="javascript: void(0);" role="option" aria-posinset="'+(o+1)+'"',' aria-setsize="'+p+'"',' aria-labelledby="'+u+'"',' style="cursor: inherit; display: block; height: 1.25em; margin-top: 0.25em; text-align: center;" title="',CKEDITOR.tools.htmlEncode(r),'" onkeydown="CKEDITOR.tools.callFunction( '+i+', event, this )"'+' onclick="CKEDITOR.tools.callFunction('+e+', this); return false;"'+' tabindex="-1">'+'<span style="margin: 0 auto;cursor: inherit">'+q+'</span>'+'<span class="cke_voice_label" id="'+u+'">'+r+'</span></a>');}else n.push('<td class="cke_dark_background"> ');n.push('</td>');}n.push('</tr>');}n.push('</tbody></table>','<span id="'+m+'" class="cke_voice_label">'+c.options+'</span>');this.getContentElement('info','charContainer').getElement().setHtml(n.join(''));},contents:[{id:'info',label:a.lang.common.generalTab,title:a.lang.common.generalTab,padding:0,align:'top',elements:[{type:'hbox',align:'top',widths:['320px','90px'],children:[{type:'html',id:'charContainer',html:'',onMouseover:g,onMouseout:h,focus:function(){var j=this.getElement().getElementsByTag('a').getItem(0);setTimeout(function(){j.focus();g(null,j);},0);},onShow:function(){var j=this.getElement().getChild([0,0,0,0,0]);setTimeout(function(){j.focus();g(null,j);},0);},onLoad:function(j){b=j.sender;}},{type:'hbox',align:'top',widths:['100%'],children:[{type:'vbox',align:'top',children:[{type:'html',html:'<div></div>'},{type:'html',id:'charPreview',className:'cke_dark_background',style:"border:1px solid #eeeeee;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;",html:'<div> </div>'},{type:'html',id:'htmlPreview',className:'cke_dark_background',style:"border:1px solid #eeeeee;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;",html:'<div> </div>'}]}]}]}]}]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/_translationstatus.txt b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/_translationstatus.txt
new file mode 100755
index 0000000..82369b2
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/_translationstatus.txt
@@ -0,0 +1,22 @@
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+
+cs.js Found: 118 Missing: 0
+cy.js Found: 118 Missing: 0
+de.js Found: 118 Missing: 0
+el.js Found: 16 Missing: 102
+eo.js Found: 118 Missing: 0
+et.js Found: 31 Missing: 87
+fa.js Found: 24 Missing: 94
+fi.js Found: 23 Missing: 95
+fr.js Found: 118 Missing: 0
+he.js Found: 1 Missing: 117
+hr.js Found: 23 Missing: 95
+it.js Found: 118 Missing: 0
+nb.js Found: 118 Missing: 0
+nl.js Found: 118 Missing: 0
+no.js Found: 118 Missing: 0
+pt-br.js Found: 118 Missing: 0
+tr.js Found: 118 Missing: 0
+ug.js Found: 39 Missing: 79
+zh-cn.js Found: 118 Missing: 0
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/cs.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/cs.js
new file mode 100755
index 0000000..9617ea4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/cs.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','cs',{euro:'Znak eura',lsquo:'Počáteční uvozovka jednoduchá',rsquo:'Koncová uvozovka jednoduchá',ldquo:'Počáteční uvozovka dvojitá',rdquo:'Koncová uvozovka dvojitá',ndash:'En pomlčka',mdash:'Em pomlčka',iexcl:'Obrácený vykřičník',cent:'Znak centu',pound:'Znak libry',curren:'Znak měny',yen:'Znak jenu',brvbar:'Přerušená svislá čára',sect:'Znak oddílu',uml:'Přehláska',copy:'Znak copyrightu',ordf:'Ženský indikátor rodu',laquo:'Znak dvojitých lomených uvozovek vlevo',not:'Logistický zápor',reg:'Znak registrace',macr:'Pomlčka nad',deg:'Znak stupně',sup2:'Dvojka jako horní index',sup3:'Trojka jako horní index',acute:'Čárka nad vpravo',micro:'Znak mikro',para:'Znak odstavce',middot:'Tečka uprostřed',cedil:'Ocásek vlevo',sup1:'Jednička jako horní index',ordm:'Mužský indikátor rodu',raquo:'Znak dvojitých lomených uvozovek vpravo',frac14:'Obyčejný zlomek jedna čtvrtina',frac12:'Obyčejný zlomek jedna polovina',frac34:'Obyčejný zlomek tři čtvrtiny',iquest:'Znak obráceného otazníku',Agrave:'Velké písmeno latinky A s čárkou nad vlevo',Aacute:'Velké písmeno latinky A s čárkou nad vpravo',Acirc:'Velké písmeno latinky A s vokáněm',Atilde:'Velké písmeno latinky A s tildou',Auml:'Velké písmeno latinky A s dvěma tečkami',Aring:'Velké písmeno latinky A s kroužkem nad',AElig:'Velké písmeno latinky Ae',Ccedil:'Velké písmeno latinky C s ocáskem vlevo',Egrave:'Velké písmeno latinky E s čárkou nad vlevo',Eacute:'Velké písmeno latinky E s čárkou nad vpravo',Ecirc:'Velké písmeno latinky E s vokáněm',Euml:'Velké písmeno latinky E s dvěma tečkami',Igrave:'Velké písmeno latinky I s čárkou nad vlevo',Iacute:'Velké písmeno latinky I s čárkou nad vpravo',Icirc:'Velké písmeno latinky I s vokáněm',Iuml:'Velké písmeno latinky I s dvěma tečkami',ETH:'Velké písmeno latinky Eth',Ntilde:'Velké písmeno latinky N s tildou',Ograve:'Velké písmeno latinky O s čárkou nad vlevo',Oacute:'Velké písmeno latinky O s čárkou nad vpravo',Ocirc:'Velké písmeno latinky O s vokáněm',Otilde:'Velké písmeno latinky O s tildou',Ouml:'Velké písmeno latinky O s dvěma tečkami',times:'Znak násobení',Oslash:'Velké písmeno latinky O přeškrtnuté',Ugrave:'Velké písmeno latinky U s čárkou nad vlevo',Uacute:'Velké písmeno latinky U s čárkou nad vpravo',Ucirc:'Velké písmeno latinky U s vokáněm',Uuml:'Velké písmeno latinky U s dvěma tečkami',Yacute:'Velké písmeno latinky Y s čárkou nad vpravo',THORN:'Velké písmeno latinky Thorn',szlig:'Malé písmeno latinky ostré s',agrave:'Malé písmeno latinky a s čárkou nad vlevo',aacute:'Malé písmeno latinky a s čárkou nad vpravo',acirc:'Malé písmeno latinky a s vokáněm',atilde:'Malé písmeno latinky a s tildou',auml:'Malé písmeno latinky a s dvěma tečkami',aring:'Malé písmeno latinky a s kroužkem nad',aelig:'Malé písmeno latinky ae',ccedil:'Malé písmeno latinky c s ocáskem vlevo',egrave:'Malé písmeno latinky e s čárkou nad vlevo',eacute:'Malé písmeno latinky e s čárkou nad vpravo',ecirc:'Malé písmeno latinky e s vokáněm',euml:'Malé písmeno latinky e s dvěma tečkami',igrave:'Malé písmeno latinky i s čárkou nad vlevo',iacute:'Malé písmeno latinky i s čárkou nad vpravo',icirc:'Malé písmeno latinky i s vokáněm',iuml:'Malé písmeno latinky i s dvěma tečkami',eth:'Malé písmeno latinky eth',ntilde:'Malé písmeno latinky n s tildou',ograve:'Malé písmeno latinky o s čárkou nad vlevo',oacute:'Malé písmeno latinky o s čárkou nad vpravo',ocirc:'Malé písmeno latinky o s vokáněm',otilde:'Malé písmeno latinky o s tildou',ouml:'Malé písmeno latinky o s dvěma tečkami',divide:'Znak dělení',oslash:'Malé písmeno latinky o přeškrtnuté',ugrave:'Malé písmeno latinky u s čárkou nad vlevo',uacute:'Malé písmeno latinky u s čárkou nad vpravo',ucirc:'Malé písmeno latinky u s vokáněm',uuml:'Malé písmeno latinky u s dvěma tečkami',yacute:'Malé písmeno latinky y s čárkou nad vpravo',thorn:'Malé písmeno latinky thorn',yuml:'Malé písmeno latinky y s dvěma tečkami',OElig:'Velká ligatura latinky OE',oelig:'Malá ligatura latinky OE',372:'Velké písmeno latinky W s vokáněm',374:'Velké písmeno latinky Y s vokáněm',373:'Malé písmeno latinky w s vokáněm',375:'Malé písmeno latinky y s vokáněm',sbquo:'Dolní 9 uvozovka jednoduchá',8219:'Horní obrácená 9 uvozovka jednoduchá',bdquo:'Dolní 9 uvozovka dvojitá',hellip:'Trojtečkový úvod',trade:'Obchodní značka',9658:'Černý ukazatel směřující vpravo',bull:'Kolečko',rarr:'Šipka vpravo',rArr:'Dvojitá šipka vpravo',hArr:'Dvojitá šipka vlevo a vpravo',diams:'Černé piky',asymp:'Téměř se rovná'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/cy.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/cy.js
new file mode 100755
index 0000000..8dbafae
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/cy.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','cy',{euro:'Arwydd yr Ewro',lsquo:'Dyfynnod chwith unigol',rsquo:'Dyfynnod dde unigol',ldquo:'Dyfynnod chwith dwbl',rdquo:'Dyfynnod dde dwbl',ndash:'Cysylltnod en',mdash:'Cysylltnod em',iexcl:'Ebychnod gwrthdro',cent:'Arwydd sent',pound:'Arwydd punt',curren:'Arwydd arian cyfred',yen:'Arwydd yen',brvbar:'Bar toriedig',sect:'Arwydd adran',uml:'Didolnod',copy:'Arwydd hawlfraint',ordf:'Dangosydd benywaidd',laquo:"Dyfynnod dwbl ar ongl i'r chwith",not:'Arwydd Nid',reg:'Arwydd cofrestredig',macr:'Macron',deg:'Arwydd gradd',sup2:'Dau uwchsgript',sup3:'Tri uwchsgript',acute:'Acen ddyrchafedig',micro:'Arwydd micro',para:'Arwydd pilcrow',middot:'Dot canol',cedil:'Sedila',sup1:'Un uwchsgript',ordm:'Dangosydd gwrywaidd',raquo:"Dyfynnod dwbl ar ongl i'r dde",frac14:'Ffracsiwn cyffredin un cwarter',frac12:'Ffracsiwn cyffredin un hanner',frac34:'Ffracsiwn cyffredin tri chwarter',iquest:'Marc cwestiwn gwrthdroëdig',Agrave:'Priflythyren A Lladinaidd gydag acen ddisgynedig',Aacute:'Priflythyren A Lladinaidd gydag acen ddyrchafedig',Acirc:'Priflythyren A Lladinaidd gydag acen grom',Atilde:'Priflythyren A Lladinaidd gyda thild',Auml:'Priflythyren A Lladinaidd gyda didolnod',Aring:'Priflythyren A Lladinaidd gyda chylch uwchben',AElig:'Priflythyren Æ Lladinaidd',Ccedil:'Priflythyren C Lladinaidd gyda sedila',Egrave:'Priflythyren E Lladinaidd gydag acen ddisgynedig',Eacute:'Priflythyren E Lladinaidd gydag acen ddyrchafedig',Ecirc:'Priflythyren E Lladinaidd gydag acen grom',Euml:'Priflythyren E Lladinaidd gyda didolnod',Igrave:'Priflythyren I Lladinaidd gydag acen ddisgynedig',Iacute:'Priflythyren I Lladinaidd gydag acen ddyrchafedig',Icirc:'Priflythyren I Lladinaidd gydag acen grom',Iuml:'Priflythyren I Lladinaidd gyda didolnod',ETH:'Priflythyren Eth',Ntilde:'Priflythyren N Lladinaidd gyda thild',Ograve:'Priflythyren O Lladinaidd gydag acen ddisgynedig',Oacute:'Priflythyren O Lladinaidd gydag acen ddyrchafedig',Ocirc:'Priflythyren O Lladinaidd gydag acen grom',Otilde:'Priflythyren O Lladinaidd gyda thild',Ouml:'Priflythyren O Lladinaidd gyda didolnod',times:'Arwydd lluosi',Oslash:'Priflythyren O Lladinaidd gyda strôc',Ugrave:'Priflythyren U Lladinaidd gydag acen ddisgynedig',Uacute:'Priflythyren U Lladinaidd gydag acen ddyrchafedig',Ucirc:'Priflythyren U Lladinaidd gydag acen grom',Uuml:'Priflythyren U Lladinaidd gyda didolnod',Yacute:'Priflythyren Y Lladinaidd gydag acen ddyrchafedig',THORN:'Priflythyren Thorn',szlig:'Llythyren s fach Lladinaidd siarp ',agrave:'Llythyren a fach Lladinaidd gydag acen ddisgynedig',aacute:'Llythyren a fach Lladinaidd gydag acen ddyrchafedig',acirc:'Llythyren a fach Lladinaidd gydag acen grom',atilde:'Llythyren a fach Lladinaidd gyda thild',auml:'Llythyren a fach Lladinaidd gyda didolnod',aring:'Llythyren a fach Lladinaidd gyda chylch uwchben',aelig:'Llythyren æ fach Lladinaidd',ccedil:'Llythyren c fach Lladinaidd gyda sedila',egrave:'Llythyren e fach Lladinaidd gydag acen ddisgynedig',eacute:'Llythyren e fach Lladinaidd gydag acen ddyrchafedig',ecirc:'Llythyren e fach Lladinaidd gydag acen grom',euml:'Llythyren e fach Lladinaidd gyda didolnod',igrave:'Llythyren i fach Lladinaidd gydag acen ddisgynedig',iacute:'Llythyren i fach Lladinaidd gydag acen ddyrchafedig',icirc:'Llythyren i fach Lladinaidd gydag acen grom',iuml:'Llythyren i fach Lladinaidd gyda didolnod',eth:'Llythyren eth fach',ntilde:'Llythyren n fach Lladinaidd gyda thild',ograve:'Llythyren o fach Lladinaidd gydag acen ddisgynedig',oacute:'Llythyren o fach Lladinaidd gydag acen ddyrchafedig',ocirc:'Llythyren o fach Lladinaidd gydag acen grom',otilde:'Llythyren o fach Lladinaidd gyda thild',ouml:'Llythyren o fach Lladinaidd gyda didolnod',divide:'Arwydd rhannu',oslash:'Llyth',ugrave:'Llythyren u fach Lladinaidd gydag acen ddisgynedig',uacute:'Llythyren u fach Lladinaidd gydag acen ddyrchafedig',ucirc:'Llythyren u fach Lladinaidd gydag acen grom',uuml:'Llythyren u fach Lladinaidd gyda didolnod',yacute:'Llythyren y fach Lladinaidd gydag acen ddisgynedig',thorn:'Llythyren o fach Lladinaidd gyda strôc',yuml:'Llythyren y fach Lladinaidd gyda didolnod',OElig:'Priflythyren cwlwm OE Lladinaidd ',oelig:'Priflythyren cwlwm oe Lladinaidd ',372:'Priflythyren W gydag acen grom',374:'Priflythyren Y gydag acen grom',373:'Llythyren w fach gydag acen grom',375:'Llythyren y fach gydag acen grom',sbquo:'Dyfynnod sengl 9-isel',8219:'Dyfynnod sengl 9-uchel cildro',bdquo:'Dyfynnod dwbl 9-isel',hellip:'Coll geiriau llorweddol',trade:'Arwydd marc masnachol',9658:"Pwyntydd du i'r dde",bull:'Bwled',rarr:"Saeth i'r dde",rArr:"Saeth ddwbl i'r dde",hArr:"Saeth ddwbl i'r chwith",diams:'Siwt diemwnt du',asymp:'Bron yn hafal iddo'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/de.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/de.js
new file mode 100755
index 0000000..ee03cb8
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/de.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','de',{euro:'Euro Zeichen',lsquo:'Hochkomma links',rsquo:'Hochkomma rechts',ldquo:'Anführungszeichen links',rdquo:'Anführungszeichen rechts',ndash:'kleiner Strich',mdash:'mittlerer Strich',iexcl:'invertiertes Ausrufezeichen',cent:'Cent',pound:'Pfund',curren:'Währung',yen:'Yen',brvbar:'gestrichelte Linie',sect:'§ Zeichen',uml:'Diäresis',copy:'Copyright',ordf:'Feminine ordinal Anzeige',laquo:'Nach links zeigenden Doppel-Winkel Anführungszeichen',not:'Not-Zeichen',reg:'Registriert',macr:'Längezeichen',deg:'Grad',sup2:'Hoch 2',sup3:'Hoch 3',acute:'Akzentzeichen ',micro:'Micro',para:'Pilcrow-Zeichen',middot:'Mittelpunkt',cedil:'Cedilla',sup1:'Hoch 1',ordm:'Männliche Ordnungszahl Anzeige',raquo:'Nach rechts zeigenden Doppel-Winkel Anführungszeichen',frac14:'ein Viertel',frac12:'Hälfte',frac34:'Dreiviertel',iquest:'Umgekehrtes Fragezeichen',Agrave:'Lateinischer Buchstabe A mit AkzentGrave',Aacute:'Lateinischer Buchstabe A mit Akutakzent',Acirc:'Lateinischer Buchstabe A mit Zirkumflex',Atilde:'Lateinischer Buchstabe A mit Tilde',Auml:'Lateinischer Buchstabe A mit Trema',Aring:'Lateinischer Buchstabe A mit Ring oben',AElig:'Lateinischer Buchstabe Æ',Ccedil:'Lateinischer Buchstabe C mit Cedille',Egrave:'Lateinischer Buchstabe E mit AkzentGrave',Eacute:'Lateinischer Buchstabe E mit Akutakzent',Ecirc:'Lateinischer Buchstabe E mit Zirkumflex',Euml:'Lateinischer Buchstabe E Trema',Igrave:'Lateinischer Buchstabe I mit AkzentGrave',Iacute:'Lateinischer Buchstabe I mit Akutakzent',Icirc:'Lateinischer Buchstabe I mit Zirkumflex',Iuml:'Lateinischer Buchstabe I mit Trema',ETH:'Lateinischer Buchstabe Eth',Ntilde:'Lateinischer Buchstabe N mit Tilde',Ograve:'Lateinischer Buchstabe O mit AkzentGrave',Oacute:'Lateinischer Buchstabe O mit Akutakzent',Ocirc:'Lateinischer Buchstabe O mit Zirkumflex',Otilde:'Lateinischer Buchstabe O mit Tilde',Ouml:'Lateinischer Buchstabe O mit Trema',times:'Multiplikation',Oslash:'Lateinischer Buchstabe O durchgestrichen',Ugrave:'Lateinischer Buchstabe U mit Akzentgrave',Uacute:'Lateinischer Buchstabe U mit Akutakzent',Ucirc:'Lateinischer Buchstabe U mit Zirkumflex',Uuml:'Lateinischer Buchstabe a mit Trema',Yacute:'Lateinischer Buchstabe a mit Akzent',THORN:'Lateinischer Buchstabe mit Dorn',szlig:'Kleiner lateinischer Buchstabe scharfe s',agrave:'Kleiner lateinischer Buchstabe a mit Accent grave',aacute:'Kleiner lateinischer Buchstabe a mit Akut',acirc:'Lateinischer Buchstabe a mit Zirkumflex',atilde:'Lateinischer Buchstabe a mit Tilde',auml:'Kleiner lateinischer Buchstabe a mit Trema',aring:'Kleiner lateinischer Buchstabe a mit Ring oben',aelig:'Lateinischer Buchstabe æ',ccedil:'Kleiner lateinischer Buchstabe c mit Cedille',egrave:'Kleiner lateinischer Buchstabe e mit Accent grave',eacute:'Kleiner lateinischer Buchstabe e mit Akut',ecirc:'Kleiner lateinischer Buchstabe e mit Zirkumflex',euml:'Kleiner lateinischer Buchstabe e mit Trema',igrave:'Kleiner lateinischer Buchstabe i mit AkzentGrave',iacute:'Kleiner lateinischer Buchstabe i mit Akzent',icirc:'Kleiner lateinischer Buchstabe i mit Zirkumflex',iuml:'Kleiner lateinischer Buchstabe i mit Trema',eth:'Kleiner lateinischer Buchstabe eth',ntilde:'Kleiner lateinischer Buchstabe n mit Tilde',ograve:'Kleiner lateinischer Buchstabe o mit Accent grave',oacute:'Kleiner lateinischer Buchstabe o mit Akzent',ocirc:'Kleiner lateinischer Buchstabe o mit Zirkumflex',otilde:'Lateinischer Buchstabe i mit Tilde',ouml:'Kleiner lateinischer Buchstabe o mit Trema',divide:'Divisionszeichen',oslash:'Kleiner lateinischer Buchstabe o durchgestrichen',ugrave:'Kleiner lateinischer Buchstabe u mit Accent grave',uacute:'Kleiner lateinischer Buchstabe u mit Akut',ucirc:'Kleiner lateinischer Buchstabe u mit Zirkumflex',uuml:'Kleiner lateinischer Buchstabe u mit Trema',yacute:'Kleiner lateinischer Buchstabe y mit Akut',thorn:'Kleiner lateinischer Buchstabe Dorn',yuml:'Kleiner lateinischer Buchstabe y mit Trema',OElig:'Lateinischer Buchstabe Ligatur OE',oelig:'Kleiner lateinischer Buchstabe Ligatur OE',372:'Lateinischer Buchstabe W mit Zirkumflex',374:'Lateinischer Buchstabe Y mit Zirkumflex',373:'Kleiner lateinischer Buchstabe w mit Zirkumflex',375:'Kleiner lateinischer Buchstabe y mit Zirkumflex',sbquo:'Tiefergestelltes Komma',8219:'Rumgedrehtes Komma',bdquo:'Doppeltes Anführungszeichen unten',hellip:'horizontale Auslassungspunkte',trade:'Handelszeichen',9658:'Dreickspfeil rechts',bull:'Bullet',rarr:'Pfeil rechts',rArr:'Doppelpfeil rechts',hArr:'Doppelpfeil links',diams:'Karo',asymp:'Ungefähr'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/el.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/el.js
new file mode 100755
index 0000000..4e9df1e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/el.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','el',{euro:'Σύμβολο Ευρώ',lsquo:'Αριστερός χαρακτήρας μονού εισαγωγικού',rsquo:'Δεξιός χαρακτήρας μονού εισαγωγικού',ldquo:'Αριστερός χαρακτήρας διπλού εισαγωγικού',rdquo:'Δεξιός χαρακτήρας διπλού εισαγωγικού',ndash:'Παύλα en',mdash:'Παύλα em',iexcl:'Ανάποδο θαυμαστικό',cent:'Σύμβολο Σεντ',pound:'Σύμβολο λίρας',curren:'Σύμβολο συναλλαγματικής μονάδας',yen:'Σύμβολο Γιέν',brvbar:'Σπασμένη μπάρα',sect:'Σύμβολο τμήματος',uml:'Διαίρεση',copy:'Σύμβολο πνευματικών δικαιωμάτων',ordf:'Feminine ordinal indicator',laquo:'Left-pointing double angle quotation mark',not:'Not sign',reg:'Registered sign',macr:'Macron',deg:'Degree sign',sup2:'Superscript two',sup3:'Superscript three',acute:'Acute accent',micro:'Micro sign',para:'Pilcrow sign',middot:'Middle dot',cedil:'Cedilla',sup1:'Superscript one',ordm:'Masculine ordinal indicator',raquo:'Right-pointing double angle quotation mark',frac14:'Vulgar fraction one quarter',frac12:'Vulgar fraction one half',frac34:'Vulgar fraction three quarters',iquest:'Inverted question mark',Agrave:'Latin capital letter A with grave accent',Aacute:'Latin capital letter A with acute accent',Acirc:'Latin capital letter A with circumflex',Atilde:'Latin capital letter A with tilde',Auml:'Latin capital letter A with diaeresis',Aring:'Latin capital letter A with ring above',AElig:'Latin Capital letter Æ',Ccedil:'Latin capital letter C with cedilla',Egrave:'Latin capital letter E with grave accent',Eacute:'Latin capital letter E with acute accent',Ecirc:'Latin capital letter E with circumflex',Euml:'Latin capital letter E with diaeresis',Igrave:'Latin capital letter I with grave accent',Iacute:'Latin capital letter I with acute accent',Icirc:'Latin capital letter I with circumflex',Iuml:'Latin capital letter I with diaeresis',ETH:'Latin capital letter Eth',Ntilde:'Latin capital letter N with tilde',Ograve:'Latin capital letter O with grave accent',Oacute:'Latin capital letter O with acute accent',Ocirc:'Latin capital letter O with circumflex',Otilde:'Latin capital letter O with tilde',Ouml:'Latin capital letter O with diaeresis',times:'Multiplication sign',Oslash:'Latin capital letter O with stroke',Ugrave:'Latin capital letter U with grave accent',Uacute:'Latin capital letter U with acute accent',Ucirc:'Latin capital letter U with circumflex',Uuml:'Latin capital letter U with diaeresis',Yacute:'Latin capital letter Y with acute accent',THORN:'Latin capital letter Thorn',szlig:'Latin small letter sharp s',agrave:'Latin small letter a with grave accent',aacute:'Latin small letter a with acute accent',acirc:'Latin small letter a with circumflex',atilde:'Latin small letter a with tilde',auml:'Latin small letter a with diaeresis',aring:'Latin small letter a with ring above',aelig:'Latin small letter æ',ccedil:'Latin small letter c with cedilla',egrave:'Latin small letter e with grave accent',eacute:'Latin small letter e with acute accent',ecirc:'Latin small letter e with circumflex',euml:'Latin small letter e with diaeresis',igrave:'Latin small letter i with grave accent',iacute:'Latin small letter i with acute accent',icirc:'Latin small letter i with circumflex',iuml:'Latin small letter i with diaeresis',eth:'Latin small letter eth',ntilde:'Latin small letter n with tilde',ograve:'Latin small letter o with grave accent',oacute:'Latin small letter o with acute accent',ocirc:'Latin small letter o with circumflex',otilde:'Latin small letter o with tilde',ouml:'Latin small letter o with diaeresis',divide:'Division sign',oslash:'Latin small letter o with stroke',ugrave:'Latin small letter u with grave accent',uacute:'Latin small letter u with acute accent',ucirc:'Latin small letter u with circumflex',uuml:'Latin small letter u with diaeresis',yacute:'Latin small letter y with acute accent',thorn:'Latin small letter thorn',yuml:'Latin small letter y with diaeresis',OElig:'Latin capital ligature OE',oelig:'Latin small ligature oe',372:'Latin capital letter W with circumflex',374:'Latin capital letter Y with circumflex',373:'Latin small letter w with circumflex',375:'Latin small letter y with circumflex',sbquo:'Single low-9 quotation mark',8219:'Single high-reversed-9 quotation mark',bdquo:'Double low-9 quotation mark',hellip:'Horizontal ellipsis',trade:'Trade mark sign',9658:'Black right-pointing pointer',bull:'Bullet',rarr:'Rightwards arrow',rArr:'Rightwards double arrow',hArr:'Left right double arrow',diams:'Black diamond suit',asymp:'Almost equal to'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/en.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/en.js
new file mode 100755
index 0000000..575001f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/en.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','en',{euro:'Euro sign',lsquo:'Left single quotation mark',rsquo:'Right single quotation mark',ldquo:'Left double quotation mark',rdquo:'Right double quotation mark',ndash:'En dash',mdash:'Em dash',iexcl:'Inverted exclamation mark',cent:'Cent sign',pound:'Pound sign',curren:'Currency sign',yen:'Yen sign',brvbar:'Broken bar',sect:'Section sign',uml:'Diaeresis',copy:'Copyright sign',ordf:'Feminine ordinal indicator',laquo:'Left-pointing double angle quotation mark',not:'Not sign',reg:'Registered sign',macr:'Macron',deg:'Degree sign',sup2:'Superscript two',sup3:'Superscript three',acute:'Acute accent',micro:'Micro sign',para:'Pilcrow sign',middot:'Middle dot',cedil:'Cedilla',sup1:'Superscript one',ordm:'Masculine ordinal indicator',raquo:'Right-pointing double angle quotation mark',frac14:'Vulgar fraction one quarter',frac12:'Vulgar fraction one half',frac34:'Vulgar fraction three quarters',iquest:'Inverted question mark',Agrave:'Latin capital letter A with grave accent',Aacute:'Latin capital letter A with acute accent',Acirc:'Latin capital letter A with circumflex',Atilde:'Latin capital letter A with tilde',Auml:'Latin capital letter A with diaeresis',Aring:'Latin capital letter A with ring above',AElig:'Latin Capital letter Æ',Ccedil:'Latin capital letter C with cedilla',Egrave:'Latin capital letter E with grave accent',Eacute:'Latin capital letter E with acute accent',Ecirc:'Latin capital letter E with circumflex',Euml:'Latin capital letter E with diaeresis',Igrave:'Latin capital letter I with grave accent',Iacute:'Latin capital letter I with acute accent',Icirc:'Latin capital letter I with circumflex',Iuml:'Latin capital letter I with diaeresis',ETH:'Latin capital letter Eth',Ntilde:'Latin capital letter N with tilde',Ograve:'Latin capital letter O with grave accent',Oacute:'Latin capital letter O with acute accent',Ocirc:'Latin capital letter O with circumflex',Otilde:'Latin capital letter O with tilde',Ouml:'Latin capital letter O with diaeresis',times:'Multiplication sign',Oslash:'Latin capital letter O with stroke',Ugrave:'Latin capital letter U with grave accent',Uacute:'Latin capital letter U with acute accent',Ucirc:'Latin capital letter U with circumflex',Uuml:'Latin capital letter U with diaeresis',Yacute:'Latin capital letter Y with acute accent',THORN:'Latin capital letter Thorn',szlig:'Latin small letter sharp s',agrave:'Latin small letter a with grave accent',aacute:'Latin small letter a with acute accent',acirc:'Latin small letter a with circumflex',atilde:'Latin small letter a with tilde',auml:'Latin small letter a with diaeresis',aring:'Latin small letter a with ring above',aelig:'Latin small letter æ',ccedil:'Latin small letter c with cedilla',egrave:'Latin small letter e with grave accent',eacute:'Latin small letter e with acute accent',ecirc:'Latin small letter e with circumflex',euml:'Latin small letter e with diaeresis',igrave:'Latin small letter i with grave accent',iacute:'Latin small letter i with acute accent',icirc:'Latin small letter i with circumflex',iuml:'Latin small letter i with diaeresis',eth:'Latin small letter eth',ntilde:'Latin small letter n with tilde',ograve:'Latin small letter o with grave accent',oacute:'Latin small letter o with acute accent',ocirc:'Latin small letter o with circumflex',otilde:'Latin small letter o with tilde',ouml:'Latin small letter o with diaeresis',divide:'Division sign',oslash:'Latin small letter o with stroke',ugrave:'Latin small letter u with grave accent',uacute:'Latin small letter u with acute accent',ucirc:'Latin small letter u with circumflex',uuml:'Latin small letter u with diaeresis',yacute:'Latin small letter y with acute accent',thorn:'Latin small letter thorn',yuml:'Latin small letter y with diaeresis',OElig:'Latin capital ligature OE',oelig:'Latin small ligature oe',372:'Latin capital letter W with circumflex',374:'Latin capital letter Y with circumflex',373:'Latin small letter w with circumflex',375:'Latin small letter y with circumflex',sbquo:'Single low-9 quotation mark',8219:'Single high-reversed-9 quotation mark',bdquo:'Double low-9 quotation mark',hellip:'Horizontal ellipsis',trade:'Trade mark sign',9658:'Black right-pointing pointer',bull:'Bullet',rarr:'Rightwards arrow',rArr:'Rightwards double arrow',hArr:'Left right double arrow',diams:'Black diamond suit',asymp:'Almost equal to'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/eo.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/eo.js
new file mode 100755
index 0000000..e9cdb39
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/eo.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','eo',{euro:'Eŭrosigno',lsquo:'Supra 6-citilo',rsquo:'Supra 9-citilo',ldquo:'Supra 66-citilo',rdquo:'Supra 99-citilo',ndash:'Streketo',mdash:'Substreko',iexcl:'Renversita krisigno',cent:'Cendosigno',pound:'Pundosigno',curren:'Monersigno',yen:'Enosigno',brvbar:'Rompita vertikala streko',sect:'Kurba paragrafo',uml:'Tremao',copy:'Kopirajtosigno',ordf:'Adjektiva numerfinaĵo',laquo:'Duobla malplio-citilo',not:'Negohoko',reg:'Registrita marko',macr:'Superstreko',deg:'Gradosigno',sup2:'Supra indico 2',sup3:'Supra indico 3',acute:'Dekstra korno',micro:'Mikrosigno',para:'Rekta paragrafo',middot:'Meza punkto',cedil:'Zoeto',sup1:'Supra indico 1',ordm:'Substantiva numerfinaĵo',raquo:'Duobla plio-citilo',frac14:'Kvaronosigno',frac12:'Duonosigno',frac34:'Trikvaronosigno',iquest:'renversita demandosigno',Agrave:'Latina ĉeflitero A kun liva korno',Aacute:'Latina ĉeflitero A kun dekstra korno',Acirc:'Latina ĉeflitero A kun ĉapelo',Atilde:'Latina ĉeflitero A kun tildo',Auml:'Latina ĉeflitero A kun tremao',Aring:'Latina ĉeflitero A kun superringo',AElig:'Latina ĉeflitera ligaturo Æ',Ccedil:'Latina ĉeflitero C kun zoeto',Egrave:'Latina ĉeflitero E kun liva korno',Eacute:'Latina ĉeflitero E kun dekstra korno',Ecirc:'Latina ĉeflitero E kun ĉapelo',Euml:'Latina ĉeflitero E kun tremao',Igrave:'Latina ĉeflitero I kun liva korno',Iacute:'Latina ĉeflitero I kun dekstra korno',Icirc:'Latina ĉeflitero I kun ĉapelo',Iuml:'Latina ĉeflitero I kun tremao',ETH:'Latina ĉeflitero islanda edo',Ntilde:'Latina ĉeflitero N kun tildo',Ograve:'Latina ĉeflitero O kun liva korno',Oacute:'Latina ĉeflitero O kun dekstra korno',Ocirc:'Latina ĉeflitero O kun ĉapelo',Otilde:'Latina ĉeflitero O kun tildo',Ouml:'Latina ĉeflitero O kun tremao',times:'Multipliko',Oslash:'Latina ĉeflitero O trastrekita',Ugrave:'Latina ĉeflitero U kun liva korno',Uacute:'Latina ĉeflitero U kun dekstra korno',Ucirc:'Latina ĉeflitero U kun ĉapelo',Uuml:'Latina ĉeflitero U kun tremao',Yacute:'Latina ĉeflitero Y kun dekstra korno',THORN:'Latina ĉeflitero islanda dorno',szlig:'Latina etlitero germana sozo (akra s)',agrave:'Latina etlitero a kun liva korno',aacute:'Latina etlitero a kun dekstra korno',acirc:'Latina etlitero a kun ĉapelo',atilde:'Latina etlitero a kun tildo',auml:'Latina etlitero a kun tremao',aring:'Latina etlitero a kun superringo',aelig:'Latina etlitera ligaturo æ',ccedil:'Latina etlitero c kun zoeto',egrave:'Latina etlitero e kun liva korno',eacute:'Latina etlitero e kun dekstra korno',ecirc:'Latina etlitero e kun ĉapelo',euml:'Latina etlitero e kun tremao',igrave:'Latina etlitero i kun liva korno',iacute:'Latina etlitero i kun dekstra korno',icirc:'Latina etlitero i kun ĉapelo',iuml:'Latina etlitero i kun tremao',eth:'Latina etlitero islanda edo',ntilde:'Latina etlitero n kun tildo',ograve:'Latina etlitero o kun liva korno',oacute:'Latina etlitero o kun dekstra korno',ocirc:'Latina etlitero o kun ĉapelo',otilde:'Latina etlitero o kun tildo',ouml:'Latina etlitero o kun tremao',divide:'Dividosigno',oslash:'Latina etlitero o trastrekita',ugrave:'Latina etlitero u kun liva korno',uacute:'Latina etlitero u kun dekstra korno',ucirc:'Latina etlitero u kun ĉapelo',uuml:'Latina etlitero u kun tremao',yacute:'Latina etlitero y kun dekstra korno',thorn:'Latina etlitero islanda dorno',yuml:'Latina etlitero y kun tremao',OElig:'Latina ĉeflitera ligaturo Œ',oelig:'Latina etlitera ligaturo œ',372:'Latina ĉeflitero W kun ĉapelo',374:'Latina ĉeflitero Y kun ĉapelo',373:'Latina etlitero w kun ĉapelo',375:'Latina etlitero y kun ĉapelo',sbquo:'Suba 9-citilo',8219:'Supra renversita 9-citilo',bdquo:'Suba 99-citilo',hellip:'Tripunkto',trade:'Varmarka signo',9658:'Nigra sago dekstren',bull:'Bulmarko',rarr:'Sago dekstren',rArr:'Duobla sago dekstren',hArr:'Duobla sago maldekstren',diams:'Nigra kvadrato',asymp:'Preskaŭ egala'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/et.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/et.js
new file mode 100755
index 0000000..b0f71c4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/et.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','et',{euro:'Euromärk',lsquo:'Alustav ühekordne jutumärk',rsquo:'Lõpetav ühekordne jutumärk',ldquo:'Alustav kahekordne jutumärk',rdquo:'Lõpetav kahekordne jutumärk',ndash:'Enn-kriips',mdash:'Emm-kriips',iexcl:'Pööratud hüüumärk',cent:'Sendimärk',pound:'Naela märk',curren:'Valuutamärk',yen:'Jeeni märk',brvbar:'Katkestatud kriips',sect:'Lõigu märk',uml:'Täpid',copy:'Autoriõiguse märk',ordf:'Feminine ordinal indicator',laquo:'Left-pointing double angle quotation mark',not:'Ei-märk',reg:'Registered sign',macr:'Macron',deg:'Kraadimärk',sup2:'Ülaindeks kaks',sup3:'Ülaindeks kolm',acute:'Acute accent',micro:'Mikro-märk',para:'Pilcrow sign',middot:'Keskpunkt',cedil:'Cedilla',sup1:'Ülaindeks üks',ordm:'Masculine ordinal indicator',raquo:'Right-pointing double angle quotation mark',frac14:'Vulgar fraction one quarter',frac12:'Vulgar fraction one half',frac34:'Vulgar fraction three quarters',iquest:'Inverted question mark',Agrave:'Latin capital letter A with grave accent',Aacute:'Latin capital letter A with acute accent',Acirc:'Latin capital letter A with circumflex',Atilde:'Ladina suur A tildega',Auml:'Latin capital letter A with diaeresis',Aring:'Latin capital letter A with ring above',AElig:'Latin Capital letter Æ',Ccedil:'Latin capital letter C with cedilla',Egrave:'Latin capital letter E with grave accent',Eacute:'Latin capital letter E with acute accent',Ecirc:'Latin capital letter E with circumflex',Euml:'Latin capital letter E with diaeresis',Igrave:'Latin capital letter I with grave accent',Iacute:'Latin capital letter I with acute accent',Icirc:'Latin capital letter I with circumflex',Iuml:'Latin capital letter I with diaeresis',ETH:'Latin capital letter Eth',Ntilde:'Latin capital letter N with tilde',Ograve:'Latin capital letter O with grave accent',Oacute:'Latin capital letter O with acute accent',Ocirc:'Latin capital letter O with circumflex',Otilde:'Latin capital letter O with tilde',Ouml:'Täppidega ladina suur O',times:'Multiplication sign',Oslash:'Latin capital letter O with stroke',Ugrave:'Latin capital letter U with grave accent',Uacute:'Latin capital letter U with acute accent',Ucirc:'Kandilise katusega suur ladina U',Uuml:'Täppidega ladina suur U',Yacute:'Latin capital letter Y with acute accent',THORN:'Latin capital letter Thorn',szlig:'Ladina väike terav s',agrave:'Latin small letter a with grave accent',aacute:'Latin small letter a with acute accent',acirc:'Kandilise katusega ladina väike a',atilde:'Tildega ladina väike a',auml:'Täppidega ladina väike a',aring:'Latin small letter a with ring above',aelig:'Latin small letter æ',ccedil:'Latin small letter c with cedilla',egrave:'Latin small letter e with grave accent',eacute:'Latin small letter e with acute accent',ecirc:'Latin small letter e with circumflex',euml:'Latin small letter e with diaeresis',igrave:'Latin small letter i with grave accent',iacute:'Latin small letter i with acute accent',icirc:'Latin small letter i with circumflex',iuml:'Latin small letter i with diaeresis',eth:'Latin small letter eth',ntilde:'Latin small letter n with tilde',ograve:'Latin small letter o with grave accent',oacute:'Latin small letter o with acute accent',ocirc:'Latin small letter o with circumflex',otilde:'Latin small letter o with tilde',ouml:'Latin small letter o with diaeresis',divide:'Division sign',oslash:'Latin small letter o with stroke',ugrave:'Latin small letter u with grave accent',uacute:'Latin small letter u with acute accent',ucirc:'Latin small letter u with circumflex',uuml:'Latin small letter u with diaeresis',yacute:'Latin small letter y with acute accent',thorn:'Latin small letter thorn',yuml:'Latin small letter y with diaeresis',OElig:'Latin capital ligature OE',oelig:'Latin small ligature oe',372:'Latin capital letter W with circumflex',374:'Latin capital letter Y with circumflex',373:'Latin small letter w with circumflex',375:'Latin small letter y with circumflex',sbquo:'Single low-9 quotation mark',8219:'Single high-reversed-9 quotation mark',bdquo:'Double low-9 quotation mark',hellip:'Horizontal ellipsis',trade:'Trade mark sign',9658:'Black right-pointing pointer',bull:'Bullet',rarr:'Rightwards arrow',rArr:'Rightwards double arrow',hArr:'Left right double arrow',diams:'Black diamond suit',asymp:'Almost equal to'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/fa.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/fa.js
new file mode 100755
index 0000000..25c8792
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/fa.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','fa',{euro:'نشان یورو',lsquo:'علامت نقل قول تکی چپ',rsquo:'علامت نقل قول تکی راست',ldquo:'علامت دوتایی نقل قول چپ',rdquo:'علامت دوتایی نقل قول راست',ndash:'En dash',mdash:'Em dash',iexcl:'علامت گذاری به عنوان علامت تعجب وارونه',cent:'نشان سنت',pound:'نشان پوند',curren:'نشان ارز',yen:'نشان ین',brvbar:'نوار شکسته',sect:'نشان بخش',uml:'Diaeresis',copy:'نشان کپی رایت',ordf:'Feminine ordinal indicator',laquo:'Left-pointing double angle quotation mark',not:'علامت ثبت نشده',reg:'علامت ثبت شده',macr:'Macron',deg:'نشان درجه',sup2:'بالانویس دو',sup3:'بالانویس سه',acute:'لهجه غلیظ',micro:'نشان مایکرو',para:'Pilcrow sign',middot:'نقطه میانی',cedil:'Cedilla',sup1:'Superscript one',ordm:'Masculine ordinal indicator',raquo:'نشان زاویهدار دوتایی نقل قول راست چین',frac14:'Vulgar fraction one quarter',frac12:'Vulgar fraction one half',frac34:'Vulgar fraction three quarters',iquest:'Inverted question mark',Agrave:'Latin capital letter A with grave accent',Aacute:'Latin capital letter A with acute accent',Acirc:'Latin capital letter A with circumflex',Atilde:'Latin capital letter A with tilde',Auml:'Latin capital letter A with diaeresis',Aring:'Latin capital letter A with ring above',AElig:'Latin Capital letter Æ',Ccedil:'Latin capital letter C with cedilla',Egrave:'Latin capital letter E with grave accent',Eacute:'Latin capital letter E with acute accent',Ecirc:'Latin capital letter E with circumflex',Euml:'Latin capital letter E with diaeresis',Igrave:'Latin capital letter I with grave accent',Iacute:'Latin capital letter I with acute accent',Icirc:'Latin capital letter I with circumflex',Iuml:'Latin capital letter I with diaeresis',ETH:'Latin capital letter Eth',Ntilde:'Latin capital letter N with tilde',Ograve:'Latin capital letter O with grave accent',Oacute:'Latin capital letter O with acute accent',Ocirc:'Latin capital letter O with circumflex',Otilde:'Latin capital letter O with tilde',Ouml:'Latin capital letter O with diaeresis',times:'Multiplication sign',Oslash:'Latin capital letter O with stroke',Ugrave:'Latin capital letter U with grave accent',Uacute:'Latin capital letter U with acute accent',Ucirc:'Latin capital letter U with circumflex',Uuml:'Latin capital letter U with diaeresis',Yacute:'Latin capital letter Y with acute accent',THORN:'Latin capital letter Thorn',szlig:'Latin small letter sharp s',agrave:'Latin small letter a with grave accent',aacute:'Latin small letter a with acute accent',acirc:'Latin small letter a with circumflex',atilde:'Latin small letter a with tilde',auml:'Latin small letter a with diaeresis',aring:'Latin small letter a with ring above',aelig:'Latin small letter æ',ccedil:'Latin small letter c with cedilla',egrave:'Latin small letter e with grave accent',eacute:'Latin small letter e with acute accent',ecirc:'Latin small letter e with circumflex',euml:'Latin small letter e with diaeresis',igrave:'Latin small letter i with grave accent',iacute:'Latin small letter i with acute accent',icirc:'Latin small letter i with circumflex',iuml:'Latin small letter i with diaeresis',eth:'Latin small letter eth',ntilde:'Latin small letter n with tilde',ograve:'Latin small letter o with grave accent',oacute:'Latin small letter o with acute accent',ocirc:'Latin small letter o with circumflex',otilde:'Latin small letter o with tilde',ouml:'Latin small letter o with diaeresis',divide:'Division sign',oslash:'Latin small letter o with stroke',ugrave:'Latin small letter u with grave accent',uacute:'Latin small letter u with acute accent',ucirc:'Latin small letter u with circumflex',uuml:'Latin small letter u with diaeresis',yacute:'Latin small letter y with acute accent',thorn:'Latin small letter thorn',yuml:'Latin small letter y with diaeresis',OElig:'Latin capital ligature OE',oelig:'Latin small ligature oe',372:'Latin capital letter W with circumflex',374:'Latin capital letter Y with circumflex',373:'Latin small letter w with circumflex',375:'Latin small letter y with circumflex',sbquo:'Single low-9 quotation mark',8219:'Single high-reversed-9 quotation mark',bdquo:'Double low-9 quotation mark',hellip:'Horizontal ellipsis',trade:'Trade mark sign',9658:'Black right-pointing pointer',bull:'Bullet',rarr:'Rightwards arrow',rArr:'Rightwards double arrow',hArr:'جهتنمای دوتایی چپ به راست',diams:'Black diamond suit',asymp:'تقریبا برابر با'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/fi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/fi.js
new file mode 100755
index 0000000..f710025
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/fi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','fi',{euro:'Euron merkki',lsquo:'Vasen yksittäinen lainausmerkki',rsquo:'Oikea yksittäinen lainausmerkki',ldquo:'Vasen kaksoislainausmerkki',rdquo:'Oikea kaksoislainausmerkki',ndash:'En dash',mdash:'Em dash',iexcl:'Inverted exclamation mark',cent:'Sentin merkki',pound:'Punnan merkki',curren:'Valuuttamerkki',yen:'Yenin merkki',brvbar:'Broken bar',sect:'Section sign',uml:'Diaeresis',copy:'Copyright sign',ordf:'Feminine ordinal indicator',laquo:'Left-pointing double angle quotation mark',not:'Not sign',reg:'Rekisteröity merkki',macr:'Macron',deg:'Asteen merkki',sup2:'Yläindeksi kaksi',sup3:'Yläindeksi kolme',acute:'Acute accent',micro:'Mikron merkki',para:'Pilcrow sign',middot:'Middle dot',cedil:'Cedilla',sup1:'Yläindeksi yksi',ordm:'Masculine ordinal indicator',raquo:'Right-pointing double angle quotation mark',frac14:'Vulgar fraction one quarter',frac12:'Vulgar fraction one half',frac34:'Vulgar fraction three quarters',iquest:'Ylösalaisin oleva kysymysmerkki',Agrave:'Latin capital letter A with grave accent',Aacute:'Latin capital letter A with acute accent',Acirc:'Latin capital letter A with circumflex',Atilde:'Latin capital letter A with tilde',Auml:'Latin capital letter A with diaeresis',Aring:'Latin capital letter A with ring above',AElig:'Latin Capital letter Æ',Ccedil:'Latin capital letter C with cedilla',Egrave:'Latin capital letter E with grave accent',Eacute:'Latin capital letter E with acute accent',Ecirc:'Latin capital letter E with circumflex',Euml:'Latin capital letter E with diaeresis',Igrave:'Latin capital letter I with grave accent',Iacute:'Latin capital letter I with acute accent',Icirc:'Latin capital letter I with circumflex',Iuml:'Latin capital letter I with diaeresis',ETH:'Latin capital letter Eth',Ntilde:'Latin capital letter N with tilde',Ograve:'Latin capital letter O with grave accent',Oacute:'Latin capital letter O with acute accent',Ocirc:'Latin capital letter O with circumflex',Otilde:'Latin capital letter O with tilde',Ouml:'Latin capital letter O with diaeresis',times:'Kertomerkki',Oslash:'Latin capital letter O with stroke',Ugrave:'Latin capital letter U with grave accent',Uacute:'Latin capital letter U with acute accent',Ucirc:'Latin capital letter U with circumflex',Uuml:'Latin capital letter U with diaeresis',Yacute:'Latin capital letter Y with acute accent',THORN:'Latin capital letter Thorn',szlig:'Latin small letter sharp s',agrave:'Latin small letter a with grave accent',aacute:'Latin small letter a with acute accent',acirc:'Latin small letter a with circumflex',atilde:'Latin small letter a with tilde',auml:'Latin small letter a with diaeresis',aring:'Latin small letter a with ring above',aelig:'Latin small letter æ',ccedil:'Latin small letter c with cedilla',egrave:'Latin small letter e with grave accent',eacute:'Latin small letter e with acute accent',ecirc:'Latin small letter e with circumflex',euml:'Latin small letter e with diaeresis',igrave:'Latin small letter i with grave accent',iacute:'Latin small letter i with acute accent',icirc:'Latin small letter i with circumflex',iuml:'Latin small letter i with diaeresis',eth:'Latin small letter eth',ntilde:'Latin small letter n with tilde',ograve:'Latin small letter o with grave accent',oacute:'Latin small letter o with acute accent',ocirc:'Latin small letter o with circumflex',otilde:'Latin small letter o with tilde',ouml:'Latin small letter o with diaeresis',divide:'Jakomerkki',oslash:'Latin small letter o with stroke',ugrave:'Latin small letter u with grave accent',uacute:'Latin small letter u with acute accent',ucirc:'Latin small letter u with circumflex',uuml:'Latin small letter u with diaeresis',yacute:'Latin small letter y with acute accent',thorn:'Latin small letter thorn',yuml:'Latin small letter y with diaeresis',OElig:'Latin capital ligature OE',oelig:'Latin small ligature oe',372:'Latin capital letter W with circumflex',374:'Latin capital letter Y with circumflex',373:'Latin small letter w with circumflex',375:'Latin small letter y with circumflex',sbquo:'Single low-9 quotation mark',8219:'Single high-reversed-9 quotation mark',bdquo:'Double low-9 quotation mark',hellip:'Horizontal ellipsis',trade:'Tavaramerkki merkki',9658:'Black right-pointing pointer',bull:'Bullet',rarr:'Nuoli oikealle',rArr:'Kaksoisnuoli oikealle',hArr:'Kaksoisnuoli oikealle ja vasemmalle',diams:'Black diamond suit',asymp:'Noin'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/fr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/fr.js
new file mode 100755
index 0000000..b128113
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/fr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','fr',{euro:'Symbole Euro',lsquo:'Guillemet simple ouvrant',rsquo:'Guillemet simple fermant',ldquo:'Guillemet double ouvrant',rdquo:'Guillemet double fermant',ndash:'Tiret haut',mdash:'Tiret bas underscore',iexcl:"Point d'exclamation inversé",cent:'Symbole Cent',pound:'Symbole Livre Sterling',curren:'Symbole monétaire',yen:'Symbole Yen',brvbar:'Barre verticale scindée',sect:'Section',uml:'Tréma',copy:'Symbole Copyright',ordf:'Indicateur ordinal féminin',laquo:'Guillemet français ouvrant',not:'Crochet de négation',reg:'Marque déposée',macr:'Macron',deg:'Degré',sup2:'Exposant 2',sup3:'\\tExposant 3',acute:'Accent aigu',micro:'Omicron',para:'Paragraphe',middot:'Point médian',cedil:'Cédille',sup1:'\\tExposant 1',ordm:'Indicateur ordinal masculin',raquo:'Guillemet français fermant',frac14:'Un quart',frac12:'Un demi',frac34:'Trois quarts',iquest:"Point d'interrogation inversé",Agrave:'A majuscule accent grave',Aacute:'A majuscule accent aigu',Acirc:'A majuscule accent circonflexe',Atilde:'A majuscule avec caron',Auml:'A majuscule tréma',Aring:'A majuscule avec un rond au-dessus',AElig:'Æ majuscule ligaturés',Ccedil:'C majuscule cédille',Egrave:'E majuscule accent grave',Eacute:'E majuscule accent aigu',Ecirc:'E majuscule accent circonflexe',Euml:'E majuscule tréma',Igrave:'I majuscule accent grave',Iacute:'I majuscule accent aigu',Icirc:'I majuscule accent circonflexe',Iuml:'I majuscule tréma',ETH:'Lettre majuscule islandaise ED',Ntilde:'N majuscule avec caron',Ograve:'O majuscule accent grave',Oacute:'O majuscule accent aigu',Ocirc:'O majuscule accent circonflexe',Otilde:'O majuscule avec caron',Ouml:'O majuscule tréma',times:'Multiplication',Oslash:'O majuscule barré',Ugrave:'U majuscule accent grave',Uacute:'U majuscule accent aigu',Ucirc:'U majuscule accent circonflexe',Uuml:'U majuscule tréma',Yacute:'Y majuscule accent aigu',THORN:'Lettre islandaise Thorn majuscule',szlig:'Lettre minuscule allemande s dur',agrave:'a minuscule accent grave',aacute:'a minuscule accent aigu',acirc:'a minuscule accent circonflexe',atilde:'a minuscule avec caron',auml:'a minuscule tréma',aring:'a minuscule avec un rond au-dessus',aelig:'æ minuscule ligaturés',ccedil:'c minuscule cédille',egrave:'e minuscule accent grave',eacute:'e minuscule accent aigu',ecirc:'e minuscule accent circonflexe',euml:'e minuscule tréma',igrave:'i minuscule accent grave',iacute:'i minuscule accent aigu',icirc:'i minuscule accent circonflexe',iuml:'i minuscule tréma',eth:'Lettre minuscule islandaise ED',ntilde:'n minuscule avec caron',ograve:'o minuscule accent grave',oacute:'o minuscule accent aigu',ocirc:'o minuscule accent circonflexe',otilde:'o minuscule avec caron',ouml:'o minuscule tréma',divide:'Division',oslash:'o minuscule barré',ugrave:'u minuscule accent grave',uacute:'u minuscule accent aigu',ucirc:'u minuscule accent circonflexe',uuml:'u minuscule tréma',yacute:'y minuscule accent aigu',thorn:'Lettre islandaise thorn minuscule',yuml:'y minuscule tréma',OElig:'ligature majuscule latine Œ',oelig:'ligature minuscule latine œ',372:'W majuscule accent circonflexe',374:'Y majuscule accent circonflexe',373:'w minuscule accent circonflexe',375:'y minuscule accent circonflexe',sbquo:'Guillemet simple fermant (anglais)',8219:'Guillemet-virgule supérieur culbuté',bdquo:'Guillemet-virgule double inférieur',hellip:'Points de suspension',trade:'Marque commerciale (trade mark)',9658:'Flèche noire pointant vers la droite',bull:'Gros point médian',rarr:'Flèche vers la droite',rArr:'Double flèche vers la droite',hArr:'Double flèche vers la gauche',diams:'Carreau noir',asymp:'Presque égal'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/he.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/he.js
new file mode 100755
index 0000000..a2899fe
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/he.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','he',{euro:'יורו',lsquo:'Left single quotation mark',rsquo:'Right single quotation mark',ldquo:'Left double quotation mark',rdquo:'Right double quotation mark',ndash:'En dash',mdash:'Em dash',iexcl:'Inverted exclamation mark',cent:'Cent sign',pound:'Pound sign',curren:'Currency sign',yen:'Yen sign',brvbar:'Broken bar',sect:'Section sign',uml:'Diaeresis',copy:'Copyright sign',ordf:'Feminine ordinal indicator',laquo:'Left-pointing double angle quotation mark',not:'Not sign',reg:'Registered sign',macr:'Macron',deg:'Degree sign',sup2:'Superscript two',sup3:'Superscript three',acute:'Acute accent',micro:'Micro sign',para:'Pilcrow sign',middot:'Middle dot',cedil:'Cedilla',sup1:'Superscript one',ordm:'Masculine ordinal indicator',raquo:'Right-pointing double angle quotation mark',frac14:'Vulgar fraction one quarter',frac12:'Vulgar fraction one half',frac34:'Vulgar fraction three quarters',iquest:'Inverted question mark',Agrave:'Latin capital letter A with grave accent',Aacute:'Latin capital letter A with acute accent',Acirc:'Latin capital letter A with circumflex',Atilde:'Latin capital letter A with tilde',Auml:'Latin capital letter A with diaeresis',Aring:'Latin capital letter A with ring above',AElig:'Latin Capital letter Æ',Ccedil:'Latin capital letter C with cedilla',Egrave:'Latin capital letter E with grave accent',Eacute:'Latin capital letter E with acute accent',Ecirc:'Latin capital letter E with circumflex',Euml:'Latin capital letter E with diaeresis',Igrave:'Latin capital letter I with grave accent',Iacute:'Latin capital letter I with acute accent',Icirc:'Latin capital letter I with circumflex',Iuml:'Latin capital letter I with diaeresis',ETH:'Latin capital letter Eth',Ntilde:'Latin capital letter N with tilde',Ograve:'Latin capital letter O with grave accent',Oacute:'Latin capital letter O with acute accent',Ocirc:'Latin capital letter O with circumflex',Otilde:'Latin capital letter O with tilde',Ouml:'Latin capital letter O with diaeresis',times:'Multiplication sign',Oslash:'Latin capital letter O with stroke',Ugrave:'Latin capital letter U with grave accent',Uacute:'Latin capital letter U with acute accent',Ucirc:'Latin capital letter U with circumflex',Uuml:'Latin capital letter U with diaeresis',Yacute:'Latin capital letter Y with acute accent',THORN:'Latin capital letter Thorn',szlig:'Latin small letter sharp s',agrave:'Latin small letter a with grave accent',aacute:'Latin small letter a with acute accent',acirc:'Latin small letter a with circumflex',atilde:'Latin small letter a with tilde',auml:'Latin small letter a with diaeresis',aring:'Latin small letter a with ring above',aelig:'Latin small letter æ',ccedil:'Latin small letter c with cedilla',egrave:'Latin small letter e with grave accent',eacute:'Latin small letter e with acute accent',ecirc:'Latin small letter e with circumflex',euml:'Latin small letter e with diaeresis',igrave:'Latin small letter i with grave accent',iacute:'Latin small letter i with acute accent',icirc:'Latin small letter i with circumflex',iuml:'Latin small letter i with diaeresis',eth:'Latin small letter eth',ntilde:'Latin small letter n with tilde',ograve:'Latin small letter o with grave accent',oacute:'Latin small letter o with acute accent',ocirc:'Latin small letter o with circumflex',otilde:'Latin small letter o with tilde',ouml:'Latin small letter o with diaeresis',divide:'Division sign',oslash:'Latin small letter o with stroke',ugrave:'Latin small letter u with grave accent',uacute:'Latin small letter u with acute accent',ucirc:'Latin small letter u with circumflex',uuml:'Latin small letter u with diaeresis',yacute:'Latin small letter y with acute accent',thorn:'Latin small letter thorn',yuml:'Latin small letter y with diaeresis',OElig:'Latin capital ligature OE',oelig:'Latin small ligature oe',372:'Latin capital letter W with circumflex',374:'Latin capital letter Y with circumflex',373:'Latin small letter w with circumflex',375:'Latin small letter y with circumflex',sbquo:'Single low-9 quotation mark',8219:'Single high-reversed-9 quotation mark',bdquo:'Double low-9 quotation mark',hellip:'Horizontal ellipsis',trade:'Trade mark sign',9658:'Black right-pointing pointer',bull:'Bullet',rarr:'Rightwards arrow',rArr:'Rightwards double arrow',hArr:'Left right double arrow',diams:'Black diamond suit',asymp:'Almost equal to'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/hr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/hr.js
new file mode 100755
index 0000000..bd5629f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/hr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','hr',{euro:'Euro znak',lsquo:'Lijevi jednostruki navodnik',rsquo:'Desni jednostruki navodnik',ldquo:'Lijevi dvostruki navodnik',rdquo:'Desni dvostruki navodnik',ndash:'En crtica',mdash:'Em crtica',iexcl:'Naopaki uskličnik',cent:'Cent znak',pound:'Funta znak',curren:'Znak valute',yen:'Yen znak',brvbar:'Potrgana prečka',sect:'Znak odjeljka',uml:'Diaeresis',copy:'Copyright znak',ordf:'Feminine ordinal indicator',laquo:'Lijevi dvostruki uglati navodnik',not:'Not znak',reg:'Registered znak',macr:'Macron',deg:'Stupanj znak',sup2:'Superscript two',sup3:'Superscript three',acute:'Acute accent',micro:'Micro sign',para:'Pilcrow sign',middot:'Srednja točka',cedil:'Cedilla',sup1:'Superscript one',ordm:'Masculine ordinal indicator',raquo:'Desni dvostruku uglati navodnik',frac14:'Vulgar fraction one quarter',frac12:'Vulgar fraction one half',frac34:'Vulgar fraction three quarters',iquest:'Naopaki upitnik',Agrave:'Veliko latinsko slovo A s akcentom',Aacute:'Latin capital letter A with acute accent',Acirc:'Latin capital letter A with circumflex',Atilde:'Latin capital letter A with tilde',Auml:'Latin capital letter A with diaeresis',Aring:'Latin capital letter A with ring above',AElig:'Latin Capital letter Æ',Ccedil:'Latin capital letter C with cedilla',Egrave:'Latin capital letter E with grave accent',Eacute:'Latin capital letter E with acute accent',Ecirc:'Latin capital letter E with circumflex',Euml:'Latin capital letter E with diaeresis',Igrave:'Latin capital letter I with grave accent',Iacute:'Latin capital letter I with acute accent',Icirc:'Latin capital letter I with circumflex',Iuml:'Latin capital letter I with diaeresis',ETH:'Latin capital letter Eth',Ntilde:'Latin capital letter N with tilde',Ograve:'Latin capital letter O with grave accent',Oacute:'Latin capital letter O with acute accent',Ocirc:'Latin capital letter O with circumflex',Otilde:'Latin capital letter O with tilde',Ouml:'Latin capital letter O with diaeresis',times:'Multiplication sign',Oslash:'Latin capital letter O with stroke',Ugrave:'Latin capital letter U with grave accent',Uacute:'Latin capital letter U with acute accent',Ucirc:'Latin capital letter U with circumflex',Uuml:'Latin capital letter U with diaeresis',Yacute:'Latin capital letter Y with acute accent',THORN:'Latin capital letter Thorn',szlig:'Latin small letter sharp s',agrave:'Latin small letter a with grave accent',aacute:'Latin small letter a with acute accent',acirc:'Latin small letter a with circumflex',atilde:'Latin small letter a with tilde',auml:'Latin small letter a with diaeresis',aring:'Latin small letter a with ring above',aelig:'Latin small letter æ',ccedil:'Latin small letter c with cedilla',egrave:'Latin small letter e with grave accent',eacute:'Latin small letter e with acute accent',ecirc:'Latin small letter e with circumflex',euml:'Latin small letter e with diaeresis',igrave:'Latin small letter i with grave accent',iacute:'Latin small letter i with acute accent',icirc:'Latin small letter i with circumflex',iuml:'Latin small letter i with diaeresis',eth:'Latin small letter eth',ntilde:'Latin small letter n with tilde',ograve:'Latin small letter o with grave accent',oacute:'Latin small letter o with acute accent',ocirc:'Latin small letter o with circumflex',otilde:'Latin small letter o with tilde',ouml:'Latin small letter o with diaeresis',divide:'Division sign',oslash:'Latin small letter o with stroke',ugrave:'Latin small letter u with grave accent',uacute:'Latin small letter u with acute accent',ucirc:'Latin small letter u with circumflex',uuml:'Latin small letter u with diaeresis',yacute:'Latin small letter y with acute accent',thorn:'Latin small letter thorn',yuml:'Latin small letter y with diaeresis',OElig:'Latin capital ligature OE',oelig:'Latin small ligature oe',372:'Latin capital letter W with circumflex',374:'Latin capital letter Y with circumflex',373:'Latin small letter w with circumflex',375:'Latin small letter y with circumflex',sbquo:'Single low-9 quotation mark',8219:'Single high-reversed-9 quotation mark',bdquo:'Double low-9 quotation mark',hellip:'Horizontal ellipsis',trade:'Trade mark sign',9658:'Black right-pointing pointer',bull:'Bullet',rarr:'Rightwards arrow',rArr:'Rightwards double arrow',hArr:'Left right double arrow',diams:'Black diamond suit',asymp:'Almost equal to'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/it.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/it.js
new file mode 100755
index 0000000..735a91f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/it.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','it',{euro:'Simbolo Euro',lsquo:'Virgoletta singola sinistra',rsquo:'Virgoletta singola destra',ldquo:'Virgolette aperte',rdquo:'Virgolette chiuse',ndash:'Trattino',mdash:'Trattino lungo',iexcl:'Punto esclavamativo invertito',cent:'Simbolo Cent',pound:'Simbolo Sterlina',curren:'Simbolo Moneta',yen:'Simbolo Yen',brvbar:'Barra interrotta',sect:'Simbolo di sezione',uml:'Dieresi',copy:'Simbolo Copyright',ordf:'Indicatore ordinale femminile',laquo:'Virgolette basse aperte',not:'Nessun segno',reg:'Simbolo Registrato',macr:'Macron',deg:'Simbolo Grado',sup2:'Apice Due',sup3:'Apice Tre',acute:'Accento acuto',micro:'Simbolo Micro',para:'Simbolo Paragrafo',middot:'Punto centrale',cedil:'Cediglia',sup1:'Apice Uno',ordm:'Indicatore ordinale maschile',raquo:'Virgolette basse chiuse',frac14:'Frazione volgare un quarto',frac12:'Frazione volgare un mezzo',frac34:'Frazione volgare tre quarti',iquest:'Punto interrogativo invertito',Agrave:'Lettera maiuscola latina A con accento grave',Aacute:'Lettera maiuscola latina A con accento acuto',Acirc:'Lettera maiuscola latina A con accento circonflesso',Atilde:'Lettera maiuscola latina A con tilde',Auml:'Lettera maiuscola latina A con dieresi',Aring:'Lettera maiuscola latina A con anello sopra',AElig:'Lettera maiuscola latina AE',Ccedil:'Lettera maiuscola latina C con cediglia',Egrave:'Lettera maiuscola latina E con accento grave',Eacute:'Lettera maiuscola latina E con accento acuto',Ecirc:'Lettera maiuscola latina E con accento circonflesso',Euml:'Lettera maiuscola latina E con dieresi',Igrave:'Lettera maiuscola latina I con accento grave',Iacute:'Lettera maiuscola latina I con accento acuto',Icirc:'Lettera maiuscola latina I con accento circonflesso',Iuml:'Lettera maiuscola latina I con dieresi',ETH:'Lettera maiuscola latina Eth',Ntilde:'Lettera maiuscola latina N con tilde',Ograve:'Lettera maiuscola latina O con accento grave',Oacute:'Lettera maiuscola latina O con accento acuto',Ocirc:'Lettera maiuscola latina O con accento circonflesso',Otilde:'Lettera maiuscola latina O con tilde',Ouml:'Lettera maiuscola latina O con dieresi',times:'Simbolo di moltiplicazione',Oslash:'Lettera maiuscola latina O barrata',Ugrave:'Lettera maiuscola latina U con accento grave',Uacute:'Lettera maiuscola latina U con accento acuto',Ucirc:'Lettera maiuscola latina U con accento circonflesso',Uuml:'Lettera maiuscola latina U con accento circonflesso',Yacute:'Lettera maiuscola latina Y con accento acuto',THORN:'Lettera maiuscola latina Thorn',szlig:'Lettera latina minuscola doppia S',agrave:'Lettera minuscola latina a con accento grave',aacute:'Lettera minuscola latina a con accento acuto',acirc:'Lettera minuscola latina a con accento circonflesso',atilde:'Lettera minuscola latina a con tilde',auml:'Lettera minuscola latina a con dieresi',aring:'Lettera minuscola latina a con anello superiore',aelig:'Lettera minuscola latina ae',ccedil:'Lettera minuscola latina c con cediglia',egrave:'Lettera minuscola latina e con accento grave',eacute:'Lettera minuscola latina e con accento acuto',ecirc:'Lettera minuscola latina e con accento circonflesso',euml:'Lettera minuscola latina e con dieresi',igrave:'Lettera minuscola latina i con accento grave',iacute:'Lettera minuscola latina i con accento acuto',icirc:'Lettera minuscola latina i con accento circonflesso',iuml:'Lettera minuscola latina i con dieresi',eth:'Lettera minuscola latina eth',ntilde:'Lettera minuscola latina n con tilde',ograve:'Lettera minuscola latina o con accento grave',oacute:'Lettera minuscola latina o con accento acuto',ocirc:'Lettera minuscola latina o con accento circonflesso',otilde:'Lettera minuscola latina o con tilde',ouml:'Lettera minuscola latina o con dieresi',divide:'Simbolo di divisione',oslash:'Lettera minuscola latina o barrata',ugrave:'Lettera minuscola latina u con accento grave',uacute:'Lettera minuscola latina u con accento acuto',ucirc:'Lettera minuscola latina u con accento circonflesso',uuml:'Lettera minuscola latina u con dieresi',yacute:'Lettera minuscola latina y con accento acuto',thorn:'Lettera minuscola latina thorn',yuml:'Lettera minuscola latina y con dieresi',OElig:'Legatura maiuscola latina OE',oelig:'Legatura minuscola latina oe',372:'Lettera maiuscola latina W con accento circonflesso',374:'Lettera maiuscola latina Y con accento circonflesso',373:'Lettera minuscola latina w con accento circonflesso',375:'Lettera minuscola latina y con accento circonflesso',sbquo:'Singola virgoletta bassa low-9',8219:'Singola virgoletta bassa low-9 inversa',bdquo:'Doppia virgoletta bassa low-9',hellip:'Ellissi orizzontale',trade:'Simbolo TM',9658:'Puntatore nero rivolto verso destra',bull:'Punto',rarr:'Freccia verso destra',rArr:'Doppia freccia verso destra',hArr:'Doppia freccia sinistra destra',diams:'Simbolo nero diamante',asymp:'Quasi uguale a'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/nb.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/nb.js
new file mode 100755
index 0000000..86910bf
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/nb.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','nb',{euro:'Eurosymbol',lsquo:'Venstre enkelt anførselstegn',rsquo:'Høyre enkelt anførselstegn',ldquo:'Venstre dobbelt anførselstegn',rdquo:'Høyre anførsesltegn',ndash:'Kort tankestrek',mdash:'Lang tankestrek',iexcl:'Omvendt utropstegn',cent:'Centsymbol',pound:'Pundsymbol',curren:'Valutategn',yen:'Yensymbol',brvbar:'Brutt loddrett strek',sect:'Paragraftegn',uml:'Tøddel',copy:'Copyrighttegn',ordf:'Feminin ordensindikator',laquo:'Venstre anførselstegn',not:'Negasjonstegn',reg:'Registrert varemerke-tegn',macr:'Makron',deg:'Gradsymbol',sup2:'Hevet totall',sup3:'Hevet tretall',acute:'Akutt aksent',micro:'Mikrosymbol',para:'Avsnittstegn',middot:'Midtstilt prikk',cedil:'Cedille',sup1:'Hevet ettall',ordm:'Maskulin ordensindikator',raquo:'Høyre anførselstegn',frac14:'Fjerdedelsbrøk',frac12:'Halvbrøk',frac34:'Tre fjerdedelers brøk',iquest:'Omvendt spørsmålstegn',Agrave:'Stor A med grav aksent',Aacute:'Stor A med akutt aksent',Acirc:'Stor A med cirkumfleks',Atilde:'Stor A med tilde',Auml:'Stor A med tøddel',Aring:'Stor Å',AElig:'Stor Æ',Ccedil:'Stor C med cedille',Egrave:'Stor E med grav aksent',Eacute:'Stor E med akutt aksent',Ecirc:'Stor E med cirkumfleks',Euml:'Stor E med tøddel',Igrave:'Stor I med grav aksent',Iacute:'Stor I med akutt aksent',Icirc:'Stor I med cirkumfleks',Iuml:'Stor I med tøddel',ETH:'Stor Edd/stungen D',Ntilde:'Stor N med tilde',Ograve:'Stor O med grav aksent',Oacute:'Stor O med akutt aksent',Ocirc:'Stor O med cirkumfleks',Otilde:'Stor O med tilde',Ouml:'Stor O med tøddel',times:'Multiplikasjonstegn',Oslash:'Stor Ø',Ugrave:'Stor U med grav aksent',Uacute:'Stor U med akutt aksent',Ucirc:'Stor U med cirkumfleks',Uuml:'Stor U med tøddel',Yacute:'Stor Y med akutt aksent',THORN:'Stor Thorn',szlig:'Liten dobbelt-s/Eszett',agrave:'Liten a med grav aksent',aacute:'Liten a med akutt aksent',acirc:'Liten a med cirkumfleks',atilde:'Liten a med tilde',auml:'Liten a med tøddel',aring:'Liten å',aelig:'Liten æ',ccedil:'Liten c med cedille',egrave:'Liten e med grav aksent',eacute:'Liten e med akutt aksent',ecirc:'Liten e med cirkumfleks',euml:'Liten e med tøddel',igrave:'Liten i med grav aksent',iacute:'Liten i med akutt aksent',icirc:'Liten i med cirkumfleks',iuml:'Liten i med tøddel',eth:'Liten edd/stungen d',ntilde:'Liten n med tilde',ograve:'Liten o med grav aksent',oacute:'Liten o med akutt aksent',ocirc:'Liten o med cirkumfleks',otilde:'Liten o med tilde',ouml:'Liten o med tøddel',divide:'Divisjonstegn',oslash:'Liten ø',ugrave:'Liten u med grav aksent',uacute:'Liten u med akutt aksent',ucirc:'Liten u med cirkumfleks',uuml:'Liten u med tøddel',yacute:'Liten y med akutt aksent',thorn:'Liten thorn',yuml:'Liten y med tøddel',OElig:'Stor ligatur av O og E',oelig:'Liten ligatur av o og e',372:'Stor W med cirkumfleks',374:'Stor Y med cirkumfleks',373:'Liten w med cirkumfleks',375:'Liten y med cirkumfleks',sbquo:'Enkelt lavt 9-anførselstegn',8219:'Enkelt høyt reversert 9-anførselstegn',bdquo:'Dobbelt lavt 9-anførselstegn',hellip:'Ellipse',trade:'Varemerkesymbol',9658:'Svart høyrevendt peker',bull:'Tykk interpunkt',rarr:'Høyrevendt pil',rArr:'Dobbel høyrevendt pil',hArr:'Dobbel venstrevendt pil',diams:'Svart ruter',asymp:'Omtrent likhetstegn'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/nl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/nl.js
new file mode 100755
index 0000000..56876fb
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/nl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','nl',{euro:'Euro-teken',lsquo:'Linker enkel aanhalingsteken',rsquo:'Rechter enkel aanhalingsteken',ldquo:'Linker dubbel aanhalingsteken',rdquo:'Rechter dubbel aanhalingsteken',ndash:'En dash',mdash:'Em dash',iexcl:'Omgekeerd uitroepteken',cent:'Cent-teken',pound:'Pond-teken',curren:'Valuta-teken',yen:'Yen-teken',brvbar:'Gebroken streep',sect:'Paragraaf-teken',uml:'Trema',copy:'Copyright-teken',ordf:'Vrouwelijk ordinaal',laquo:'Linker guillemet',not:'Ongelijk-teken',reg:'Geregistreerd handelsmerk-teken',macr:'Macron',deg:'Graden-teken',sup2:'Superscript twee',sup3:'Superscript drie',acute:'Accent aigu',micro:'Mico-teken',para:'Alinea-teken',middot:'Halfhoge punt',cedil:'Cedille',sup1:'Superscript een',ordm:'Mannelijk ordinaal',raquo:'Rechter guillemet',frac14:'Breuk kwart',frac12:'Breuk half',frac34:'Breuk driekwart',iquest:'Omgekeerd vraagteken',Agrave:'Latijnse hoofdletter A met een accent grave',Aacute:'Latijnse hoofdletter A met een accent aigu',Acirc:'Latijnse hoofdletter A met een circonflexe',Atilde:'Latijnse hoofdletter A met een tilde',Auml:'Latijnse hoofdletter A met een trema',Aring:'Latijnse hoofdletter A met een corona',AElig:'Latijnse hoofdletter Æ',Ccedil:'Latijnse hoofdletter C met een cedille',Egrave:'Latijnse hoofdletter E met een accent grave',Eacute:'Latijnse hoofdletter E met een accent aigu',Ecirc:'Latijnse hoofdletter E met een circonflexe',Euml:'Latijnse hoofdletter E met een trema',Igrave:'Latijnse hoofdletter I met een accent grave',Iacute:'Latijnse hoofdletter I met een accent aigu',Icirc:'Latijnse hoofdletter I met een circonflexe',Iuml:'Latijnse hoofdletter I met een trema',ETH:'Latijnse hoofdletter Eth',Ntilde:'Latijnse hoofdletter N met een tilde',Ograve:'Latijnse hoofdletter O met een accent grave',Oacute:'Latijnse hoofdletter O met een accent aigu',Ocirc:'Latijnse hoofdletter O met een circonflexe',Otilde:'Latijnse hoofdletter O met een tilde',Ouml:'Latijnse hoofdletter O met een trema',times:'Maal-teken',Oslash:'Latijnse hoofdletter O met een schuine streep',Ugrave:'Latijnse hoofdletter U met een accent grave',Uacute:'Latijnse hoofdletter U met een accent aigu',Ucirc:'Latijnse hoofdletter U met een circonflexe',Uuml:'Latijnse hoofdletter U met een trema',Yacute:'Latijnse hoofdletter Y met een accent aigu',THORN:'Latijnse hoofdletter Thorn',szlig:'Latijnse kleine ringel-s',agrave:'Latijnse kleine letter a met een accent grave',aacute:'Latijnse kleine letter a met een accent aigu',acirc:'Latijnse kleine letter a met een circonflexe',atilde:'Latijnse kleine letter a met een tilde',auml:'Latijnse kleine letter a met een trema',aring:'Latijnse kleine letter a met een corona',aelig:'Latijnse kleine letter æ',ccedil:'Latijnse kleine letter c met een cedille',egrave:'Latijnse kleine letter e met een accent grave',eacute:'Latijnse kleine letter e met een accent aigu',ecirc:'Latijnse kleine letter e met een circonflexe',euml:'Latijnse kleine letter e met een trema',igrave:'Latijnse kleine letter i met een accent grave',iacute:'Latijnse kleine letter i met een accent aigu',icirc:'Latijnse kleine letter i met een circonflexe',iuml:'Latijnse kleine letter i met een trema',eth:'Latijnse kleine letter eth',ntilde:'Latijnse kleine letter n met een tilde',ograve:'Latijnse kleine letter o met een accent grave',oacute:'Latijnse kleine letter o met een accent aigu',ocirc:'Latijnse kleine letter o met een circonflexe',otilde:'Latijnse kleine letter o met een tilde',ouml:'Latijnse kleine letter o met een trema',divide:'Deel-teken',oslash:'Latijnse kleine letter o met een schuine streep',ugrave:'Latijnse kleine letter u met een accent grave',uacute:'Latijnse kleine letter u met een accent aigu',ucirc:'Latijnse kleine letter u met een circonflexe',uuml:'Latijnse kleine letter u met een trema',yacute:'Latijnse kleine letter y met een accent aigu',thorn:'Latijnse kleine letter thorn',yuml:'Latijnse kleine letter y met een trema',OElig:'Latijnse hoofdletter Œ',oelig:'Latijnse kleine letter œ',372:'Latijnse hoofdletter W met een circonflexe',374:'Latijnse hoofdletter Y met een circonflexe',373:'Latijnse kleine letter w met een circonflexe',375:'Latijnse kleine letter y met een circonflexe',sbquo:'Lage enkele aanhalingsteken',8219:'Hoge omgekeerde enkele aanhalingsteken',bdquo:'Lage dubbele aanhalingsteken',hellip:'Beletselteken',trade:'Trademark-teken',9658:'Zwarte driehoek naar rechts',bull:'Bullet',rarr:'Pijl naar rechts',rArr:'Dubbele pijl naar rechts',hArr:'Dubbele pijl naar links',diams:'Zwart ruitje',asymp:'Benaderingsteken'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/no.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/no.js
new file mode 100755
index 0000000..2ced887
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/no.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','no',{euro:'Eurosymbol',lsquo:'Venstre enkelt anførselstegn',rsquo:'Høyre enkelt anførselstegn',ldquo:'Venstre dobbelt anførselstegn',rdquo:'Høyre anførsesltegn',ndash:'Kort tankestrek',mdash:'Lang tankestrek',iexcl:'Omvendt utropstegn',cent:'Centsymbol',pound:'Pundsymbol',curren:'Valutategn',yen:'Yensymbol',brvbar:'Brutt loddrett strek',sect:'Paragraftegn',uml:'Tøddel',copy:'Copyrighttegn',ordf:'Feminin ordensindikator',laquo:'Venstre anførselstegn',not:'Negasjonstegn',reg:'Registrert varemerke-tegn',macr:'Makron',deg:'Gradsymbol',sup2:'Hevet totall',sup3:'Hevet tretall',acute:'Akutt aksent',micro:'Mikrosymbol',para:'Avsnittstegn',middot:'Midtstilt prikk',cedil:'Cedille',sup1:'Hevet ettall',ordm:'Maskulin ordensindikator',raquo:'Høyre anførselstegn',frac14:'Fjerdedelsbrøk',frac12:'Halvbrøk',frac34:'Tre fjerdedelers brøk',iquest:'Omvendt spørsmålstegn',Agrave:'Stor A med grav aksent',Aacute:'Stor A med akutt aksent',Acirc:'Stor A med cirkumfleks',Atilde:'Stor A med tilde',Auml:'Stor A med tøddel',Aring:'Stor Å',AElig:'Stor Æ',Ccedil:'Stor C med cedille',Egrave:'Stor E med grav aksent',Eacute:'Stor E med akutt aksent',Ecirc:'Stor E med cirkumfleks',Euml:'Stor E med tøddel',Igrave:'Stor I med grav aksent',Iacute:'Stor I med akutt aksent',Icirc:'Stor I med cirkumfleks',Iuml:'Stor I med tøddel',ETH:'Stor Edd/stungen D',Ntilde:'Stor N med tilde',Ograve:'Stor O med grav aksent',Oacute:'Stor O med akutt aksent',Ocirc:'Stor O med cirkumfleks',Otilde:'Stor O med tilde',Ouml:'Stor O med tøddel',times:'Multiplikasjonstegn',Oslash:'Stor Ø',Ugrave:'Stor U med grav aksent',Uacute:'Stor U med akutt aksent',Ucirc:'Stor U med cirkumfleks',Uuml:'Stor U med tøddel',Yacute:'Stor Y med akutt aksent',THORN:'Stor Thorn',szlig:'Liten dobbelt-s/Eszett',agrave:'Liten a med grav aksent',aacute:'Liten a med akutt aksent',acirc:'Liten a med cirkumfleks',atilde:'Liten a med tilde',auml:'Liten a med tøddel',aring:'Liten å',aelig:'Liten æ',ccedil:'Liten c med cedille',egrave:'Liten e med grav aksent',eacute:'Liten e med akutt aksent',ecirc:'Liten e med cirkumfleks',euml:'Liten e med tøddel',igrave:'Liten i med grav aksent',iacute:'Liten i med akutt aksent',icirc:'Liten i med cirkumfleks',iuml:'Liten i med tøddel',eth:'Liten edd/stungen d',ntilde:'Liten n med tilde',ograve:'Liten o med grav aksent',oacute:'Liten o med akutt aksent',ocirc:'Liten o med cirkumfleks',otilde:'Liten o med tilde',ouml:'Liten o med tøddel',divide:'Divisjonstegn',oslash:'Liten ø',ugrave:'Liten u med grav aksent',uacute:'Liten u med akutt aksent',ucirc:'Liten u med cirkumfleks',uuml:'Liten u med tøddel',yacute:'Liten y med akutt aksent',thorn:'Liten thorn',yuml:'Liten y med tøddel',OElig:'Stor ligatur av O og E',oelig:'Liten ligatur av o og e',372:'Stor W med cirkumfleks',374:'Stor Y med cirkumfleks',373:'Liten w med cirkumfleks',375:'Liten y med cirkumfleks',sbquo:'Enkelt lavt 9-anførselstegn',8219:'Enkelt høyt reversert 9-anførselstegn',bdquo:'Dobbelt lavt 9-anførselstegn',hellip:'Ellipse',trade:'Varemerkesymbol',9658:'Svart høyrevendt peker',bull:'Tykk interpunkt',rarr:'Høyrevendt pil',rArr:'Dobbel høyrevendt pil',hArr:'Dobbel venstrevendt pil',diams:'Svart ruter',asymp:'Omtrent likhetstegn'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/pt-br.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/pt-br.js
new file mode 100755
index 0000000..119f397
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/pt-br.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','pt-br',{euro:'Euro',lsquo:'Aspas simples esquerda',rsquo:'Aspas simples direita',ldquo:'Aspas duplas esquerda',rdquo:'Aspas duplas direita',ndash:'Traço',mdash:'Travessão',iexcl:'Ponto de exclamação invertido',cent:'Cent',pound:'Cerquilha',curren:'Dinheiro',yen:'Yen',brvbar:'Bara interrompida',sect:'Símbolo de Parágrafo',uml:'Trema',copy:'Direito de Cópia',ordf:'Indicador ordinal feminino',laquo:'Aspas duplas angulares esquerda',not:'Negação',reg:'Marca Registrada',macr:'Mácron',deg:'Grau',sup2:'2 Superscrito',sup3:'3 Superscrito',acute:'Acento agudo',micro:'Micro',para:'Pé de mosca',middot:'Ponto mediano',cedil:'Cedilha',sup1:'1 Superscrito',ordm:'Indicador ordinal masculino',raquo:'Aspas duplas angulares direita',frac14:'Um quarto',frac12:'Um meio',frac34:'Três quartos',iquest:'Interrogação invertida',Agrave:'A maiúsculo com acento grave',Aacute:'A maiúsculo com acento agudo',Acirc:'A maiúsculo com acento circunflexo',Atilde:'A maiúsculo com til',Auml:'A maiúsculo com trema',Aring:'A maiúsculo com anel acima',AElig:'Æ maiúsculo',Ccedil:'Ç maiúlculo',Egrave:'E maiúsculo com acento grave',Eacute:'E maiúsculo com acento agudo',Ecirc:'E maiúsculo com acento circumflexo',Euml:'E maiúsculo com trema',Igrave:'I maiúsculo com acento grave',Iacute:'I maiúsculo com acento agudo',Icirc:'I maiúsculo com acento circunflexo',Iuml:'I maiúsculo com crase',ETH:'Eth maiúsculo',Ntilde:'N maiúsculo com til',Ograve:'O maiúsculo com acento grave',Oacute:'O maiúsculo com acento agudo',Ocirc:'O maiúsculo com acento circunflexo',Otilde:'O maiúsculo com til',Ouml:'O maiúsculo com trema',times:'Multiplicação',Oslash:'Diâmetro',Ugrave:'U maiúsculo com acento grave',Uacute:'U maiúsculo com acento agudo',Ucirc:'U maiúsculo com acento circunflexo',Uuml:'U maiúsculo com trema',Yacute:'Y maiúsculo com acento agudo',THORN:'Thorn maiúsculo',szlig:'Eszett minúsculo',agrave:'a minúsculo com acento grave',aacute:'a minúsculo com acento agudo',acirc:'a minúsculo com acento circunflexo',atilde:'a minúsculo com til',auml:'a minúsculo com trema',aring:'a minúsculo com anel acima',aelig:'æ minúsculo',ccedil:'ç minúsculo',egrave:'e minúsculo com acento grave',eacute:'e minúsculo com acento agudo',ecirc:'e minúsculo com acento circunflexo',euml:'e minúsculo com trema',igrave:'i minúsculo com acento grave',iacute:'i minúsculo com acento agudo',icirc:'i minúsculo com acento circunflexo',iuml:'i minúsculo com trema',eth:'eth minúsculo',ntilde:'n minúsculo com til',ograve:'o minúsculo com acento grave',oacute:'o minúsculo com acento agudo',ocirc:'o minúsculo com acento circunflexo',otilde:'o minúsculo com til',ouml:'o minúsculo com trema',divide:'Divisão',oslash:'o minúsculo com cortado ou diâmetro',ugrave:'u minúsculo com acento grave',uacute:'u minúsculo com acento agudo',ucirc:'u minúsculo com acento circunflexo',uuml:'u minúsculo com trema',yacute:'y minúsculo com acento agudo',thorn:'thorn minúsculo',yuml:'y minúsculo com trema',OElig:'Ligação tipográfica OE maiúscula',oelig:'Ligação tipográfica oe minúscula',372:'W maiúsculo com acento circunflexo',374:'Y maiúsculo com acento circunflexo',373:'w minúsculo com acento circunflexo',375:'y minúsculo com acento circunflexo',sbquo:'Aspas simples inferior direita',8219:'Aspas simples superior esquerda',bdquo:'Aspas duplas inferior direita',hellip:'Reticências',trade:'Trade mark',9658:'Ponta de seta preta para direita',bull:'Ponto lista',rarr:'Seta para direita',rArr:'Seta dupla para direita',hArr:'Seta dupla direita e esquerda',diams:'Ouros',asymp:'Aproximadamente'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/tr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/tr.js
new file mode 100755
index 0000000..8384241
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/tr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','tr',{euro:'Euro işareti',lsquo:'Sol tek tırnak işareti',rsquo:'Sağ tek tırnak işareti',ldquo:'Sol çift tırnak işareti',rdquo:'Sağ çift tırnak işareti',ndash:'En tire',mdash:'Em tire',iexcl:'Ters ünlem işareti',cent:'Cent işareti',pound:'Pound işareti',curren:'Para birimi işareti',yen:'Yen işareti',brvbar:'Kırık bar',sect:'Bölüm işareti',uml:'İki sesli harfin ayrılması',copy:'Telif hakkı işareti',ordf:'Dişil sıralı gösterge',laquo:'Sol-işaret çift açı tırnak işareti',not:'Not işareti',reg:'Kayıtlı işareti',macr:'Makron',deg:'Derece işareti',sup2:'İkili üstsimge',sup3:'Üçlü üstsimge',acute:'Aksan işareti',micro:'Mikro işareti',para:'Pilcrow işareti',middot:'Orta nokta',cedil:'Kedilla',sup1:'Üstsimge',ordm:'Eril sıralı gösterge',raquo:'Sağ işaret çift açı tırnak işareti',frac14:'Bayağı kesrin dörtte biri',frac12:'Bayağı kesrin bir yarım',frac34:'Bayağı kesrin dörtte üç',iquest:'Ters soru işareti',Agrave:'Aksanlı latin harfi',Aacute:'Aşırı aksanıyla Latin harfi',Acirc:'Çarpık Latin harfi',Atilde:'Tilde latin harfi',Auml:'Sesli harf ayrılımlıı latin harfi',Aring:'Halkalı latin büyük A harfi',AElig:'Latin büyük Æ harfi',Ccedil:'Latin büyük C harfi ile kedilla',Egrave:'Aksanlı latin büyük E harfi',Eacute:'Aşırı vurgulu latin büyük E harfi',Ecirc:'Çarpık latin büyük E harfi',Euml:'Sesli harf ayrılımlıı latin büyük E harfi',Igrave:'Aksanlı latin büyük I harfi',Iacute:'Aşırı aksanlı latin büyük I harfi',Icirc:'Çarpık latin büyük I harfi',Iuml:'Sesli harf ayrılımlıı latin büyük I harfi',ETH:'Latin büyük Eth harfi',Ntilde:'Tildeli latin büyük N harfi',Ograve:'Aksanlı latin büyük O harfi',Oacute:'Aşırı aksanlı latin büyük O harfi',Ocirc:'Çarpık latin büyük O harfi',Otilde:'Tildeli latin büyük O harfi',Ouml:'Sesli harf ayrılımlı latin büyük O harfi',times:'Çarpma işareti',Oslash:'Vurgulu latin büyük O harfi',Ugrave:'Aksanlı latin büyük U harfi',Uacute:'Aşırı aksanlı latin büyük U harfi',Ucirc:'Çarpık latin büyük U harfi',Uuml:'Sesli harf ayrılımlı latin büyük U harfi',Yacute:'Aşırı aksanlı latin büyük Y harfi',THORN:'Latin büyük Thorn harfi',szlig:'Latin küçük keskin s harfi',agrave:'Aksanlı latin küçük a harfi',aacute:'Aşırı aksanlı latin küçük a harfi',acirc:'Çarpık latin küçük a harfi',atilde:'Tildeli latin küçük a harfi',auml:'Sesli harf ayrılımlı latin küçük a harfi',aring:'Halkalı latin küçük a harfi',aelig:'Latin büyük æ harfi',ccedil:'Kedillalı latin küçük c harfi',egrave:'Aksanlı latin küçük e harfi',eacute:'Aşırı aksanlı latin küçük e harfi',ecirc:'Çarpık latin küçük e harfi',euml:'Sesli harf ayrılımlı latin küçük e harfi',igrave:'Aksanlı latin küçük i harfi',iacute:'Aşırı aksanlı latin küçük i harfi',icirc:'Çarpık latin küçük i harfi',iuml:'Sesli harf ayrılımlı latin küçük i harfi',eth:'Latin küçük eth harfi',ntilde:'Tildeli latin küçük n harfi',ograve:'Aksanlı latin küçük o harfi',oacute:'Aşırı aksanlı latin küçük o harfi',ocirc:'Çarpık latin küçük o harfi',otilde:'Tildeli latin küçük o harfi',ouml:'Sesli harf ayrılımlı latin küçük o harfi',divide:'Bölme işareti',oslash:'Vurgulu latin küçük o harfi',ugrave:'Aksanlı latin küçük u harfi',uacute:'Aşırı aksanlı latin küçük u harfi',ucirc:'Çarpık latin küçük u harfi',uuml:'Sesli harf ayrılımlı latin küçük u harfi',yacute:'Aşırı aksanlı latin küçük y harfi',thorn:'Latin küçük thorn harfi',yuml:'Sesli harf ayrılımlı latin küçük y harfi',OElig:'Latin büyük bağlı OE harfi',oelig:'Latin küçük bağlı oe harfi',372:'Çarpık latin büyük W harfi',374:'Çarpık latin büyük Y harfi',373:'Çarpık latin küçük w harfi',375:'Çarpık latin küçük y harfi',sbquo:'Tek düşük-9 tırnak işareti',8219:'Tek yüksek-ters-9 tırnak işareti',bdquo:'Çift düşük-9 tırnak işareti',hellip:'Yatay elips',trade:'Marka tescili işareti',9658:'Siyah sağ işaret işaretçisi',bull:'Koyu nokta',rarr:'Sağa doğru ok',rArr:'Sağa doğru çift ok',hArr:'Sol, sağ çift ok',diams:'Siyah elmas takımı',asymp:'Hemen hemen eşit'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/ug.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/ug.js
new file mode 100755
index 0000000..f42a167
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/ug.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','ug',{euro:'ياۋرو بەلگىسى',lsquo:'يالاڭ پەش سول',rsquo:'يالاڭ پەش ئوڭ',ldquo:'قوش پەش سول',rdquo:'قوش پەش ئوڭ',ndash:'سىزىقچە',mdash:'سىزىق',iexcl:'ئۈندەش',cent:'تىيىن بەلگىسى',pound:'فوند ستېرلىڭ',curren:'پۇل بەلگىسى',yen:'ياپونىيە يىنى',brvbar:'ئۈزۈك بالداق',sect:'پاراگراف بەلگىسى',uml:'تاۋۇش ئايرىش بەلگىسى',copy:'نەشر ھوقۇقى بەلگىسى',ordf:'Feminine ordinal indicator',laquo:'قوش تىرناق سول',not:'غەيرى بەلگە',reg:'خەتلەتكەن تاۋار ماركىسى',macr:'سوزۇش بەلگىسى',deg:'گىرادۇس بەلگىسى',sup2:'يۇقىرى ئىندېكىس 2',sup3:'يۇقىرى ئىندېكىس 3',acute:'ئۇرغۇ بەلگىسى',micro:'Micro sign',para:'ئابزاس بەلگىسى',middot:'ئوتتۇرا چېكىت',cedil:'ئاستىغا قوشۇلىدىغان بەلگە',sup1:'يۇقىرى ئىندېكىس 1',ordm:'Masculine ordinal indicator',raquo:'قوش تىرناق ئوڭ',frac14:'ئاددىي كەسىر تۆتتىن بىر',frac12:'ئاددىي كەسىر ئىككىدىن بىر',frac34:'ئاددىي كەسىر ئۈچتىن تۆرت',iquest:'Inverted question mark',Agrave:'Latin capital letter A with grave accent',Aacute:'Latin capital letter A with acute accent',Acirc:'Latin capital letter A with circumflex',Atilde:'Latin capital letter A with tilde',Auml:'Latin capital letter A with diaeresis',Aring:'Latin capital letter A with ring above',AElig:'Latin Capital letter Æ',Ccedil:'Latin capital letter C with cedilla',Egrave:'Latin capital letter E with grave accent',Eacute:'Latin capital letter E with acute accent',Ecirc:'Latin capital letter E with circumflex',Euml:'Latin capital letter E with diaeresis',Igrave:'Latin capital letter I with grave accent',Iacute:'Latin capital letter I with acute accent',Icirc:'Latin capital letter I with circumflex',Iuml:'Latin capital letter I with diaeresis',ETH:'Latin capital letter Eth',Ntilde:'Latin capital letter N with tilde',Ograve:'قوش پەش ئوڭ',Oacute:'Latin capital letter O with acute accent',Ocirc:'Latin capital letter O with circumflex',Otilde:'Latin capital letter O with tilde',Ouml:'Latin capital letter O with diaeresis',times:'Multiplication sign',Oslash:'Latin capital letter O with stroke',Ugrave:'Latin capital letter U with grave accent',Uacute:'Latin capital letter U with acute accent',Ucirc:'Latin capital letter U with circumflex',Uuml:'Latin capital letter U with diaeresis',Yacute:'Latin capital letter Y with acute accent',THORN:'Latin capital letter Thorn',szlig:'Latin small letter sharp s',agrave:'Latin small letter a with grave accent',aacute:'Latin small letter a with acute accent',acirc:'Latin small letter a with circumflex',atilde:'Latin small letter a with tilde',auml:'Latin small letter a with diaeresis',aring:'Latin small letter a with ring above',aelig:'Latin small letter æ',ccedil:'Latin small letter c with cedilla',egrave:'Latin small letter e with grave accent',eacute:'Latin small letter e with acute accent',ecirc:'Latin small letter e with circumflex',euml:'Latin small letter e with diaeresis',igrave:'Latin small letter i with grave accent',iacute:'Latin small letter i with acute accent',icirc:'Latin small letter i with circumflex',iuml:'Latin small letter i with diaeresis',eth:'Latin small letter eth',ntilde:'تىك موللاق سوئال بەلگىسى',ograve:'Latin small letter o with grave accent',oacute:'Latin small letter o with acute accent',ocirc:'Latin small letter o with circumflex',otilde:'Latin small letter o with tilde',ouml:'Latin small letter o with diaeresis',divide:'Division sign',oslash:'Latin small letter o with stroke',ugrave:'Latin small letter u with grave accent',uacute:'Latin small letter u with acute accent',ucirc:'Latin small letter u with circumflex',uuml:'Latin small letter u with diaeresis',yacute:'Latin small letter y with acute accent',thorn:'Latin small letter thorn',yuml:'Latin small letter y with diaeresis',OElig:'Latin capital ligature OE',oelig:'Latin small ligature oe',372:'Latin capital letter W with circumflex',374:'Latin capital letter Y with circumflex',373:'Latin small letter w with circumflex',375:'Latin small letter y with circumflex',sbquo:'Single low-9 quotation mark',8219:'Single high-reversed-9 quotation mark',bdquo:'Double low-9 quotation mark',hellip:'Horizontal ellipsis',trade:'Trade mark sign',9658:'Black right-pointing pointer',bull:'Bullet',rarr:'ئوڭ يا ئوق',rArr:'ئوڭ قوش سىزىق يا ئوق',hArr:'ئوڭ سول قوش سىزىق يا ئوق',diams:'ئۇيۇل غىچ',asymp:'تەخمىنەن تەڭ'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/zh-cn.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/zh-cn.js
new file mode 100755
index 0000000..3848cbf
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/specialchar/lang/zh-cn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('specialchar','zh-cn',{euro:'欧元符号',lsquo:'左单引号',rsquo:'右单引号',ldquo:'左双引号',rdquo:'右双引号',ndash:'短划线',mdash:'破折号',iexcl:'竖翻叹号',cent:'分币标记',pound:'英镑标记',curren:'货币标记',yen:'日元标记',brvbar:'间断条',sect:'节标记',uml:'分音符',copy:'版权所有标记',ordf:'阴性顺序指示符',laquo:'左指双尖引号',not:'非标记',reg:'注册标记',macr:'长音符',deg:'度标记',sup2:'上标二',sup3:'上标三',acute:'锐音符',micro:'微符',para:'段落标记',middot:'中间点',cedil:'下加符',sup1:'上标一',ordm:'阳性顺序指示符',raquo:'右指双尖引号',frac14:'普通分数四分之一',frac12:'普通分数二分之一',frac34:'普通分数四分之三',iquest:'竖翻问号',Agrave:'带抑音符的拉丁文大写字母 A',Aacute:'带锐音符的拉丁文大写字母 A',Acirc:'带扬抑符的拉丁文大写字母 A',Atilde:'带颚化符的拉丁文大写字母 A',Auml:'带分音符的拉丁文大写字母 A',Aring:'带上圆圈的拉丁文大写字母 A',AElig:'拉丁文大写字母 Ae',Ccedil:'带下加符的拉丁文大写字母 C',Egrave:'带抑音符的拉丁文大写字母 E',Eacute:'带锐音符的拉丁文大写字母 E',Ecirc:'带扬抑符的拉丁文大写字母 E',Euml:'带分音符的拉丁文大写字母 E',Igrave:'带抑音符的拉丁文大写字母 I',Iacute:'带锐音符的拉丁文大写字母 I',Icirc:'带扬抑符的拉丁文大写字母 I',Iuml:'带分音符的拉丁文大写字母 I',ETH:'拉丁文大写字母 Eth',Ntilde:'带颚化符的拉丁文大写字母 N',Ograve:'带抑音符的拉丁文大写字母 O',Oacute:'带锐音符的拉丁文大写字母 O',Ocirc:'带扬抑符的拉丁文大写字母 O',Otilde:'带颚化符的拉丁文大写字母 O',Ouml:'带分音符的拉丁文大写字母 O',times:'乘号',Oslash:'带粗线的拉丁文大写字母 O',Ugrave:'带抑音符的拉丁文大写字母 U',Uacute:'带锐音符的拉丁文大写字母 U',Ucirc:'带扬抑符的拉丁文大写字母 U',Uuml:'带分音符的拉丁文大写字母 U',Yacute:'带抑音符的拉丁文大写字母 Y',THORN:'拉丁文大写字母 Thorn',szlig:'拉丁文小写字母清音 S',agrave:'带抑音符的拉丁文小写字母 A',aacute:'带锐音符的拉丁文小写字母 A',acirc:'带扬抑符的拉丁文小写字母 A',atilde:'带颚化符的拉丁文小写字母 A',auml:'带分音符的拉丁文小写字母 A',aring:'带上圆圈的拉丁文小写字母 A',aelig:'拉丁文小写字母 Ae',ccedil:'带下加符的拉丁文小写字母 C',egrave:'带抑音符的拉丁文小写字母 E',eacute:'带锐音符的拉丁文小写字母 E',ecirc:'带扬抑符的拉丁文小写字母 E',euml:'带分音符的拉丁文小写字母 E',igrave:'带抑音符的拉丁文小写字母 I',iacute:'带锐音符的拉丁文小写字母 I',icirc:'带扬抑符的拉丁文小写字母 I',iuml:'带分音符的拉丁文小写字母 I',eth:'拉丁文小写字母 Eth',ntilde:'带颚化符的拉丁文小写字母 N',ograve:'带抑音符的拉丁文小写字母 O',oacute:'带锐音符的拉丁文小写字母 O',ocirc:'带扬抑符的拉丁文小写字母 O',otilde:'带颚化符的拉丁文小写字母 O',ouml:'带分音符的拉丁文小写字母 O',divide:'除号',oslash:'带粗线的拉丁文小写字母 O',ugrave:'带抑音符的拉丁文小写字母 U',uacute:'带锐音符的拉丁文小写字母 U',ucirc:'带扬抑符的拉丁文小写字母 U',uuml:'带分音符的拉丁文小写字母 U',yacute:'带抑音符的拉丁文小写字母 Y',thorn:'拉丁文小写字母 Thorn',yuml:'带分音符的拉丁文小写字母 Y',OElig:'拉丁文大写连字 Oe',oelig:'拉丁文小写连字 Oe',372:'带扬抑符的拉丁文大写字母 W',374:'带扬抑符的拉丁文大写字母 Y',373:'带扬抑符的拉丁文小写字母 W',375:'带扬抑符的拉丁文小写字母 Y',sbquo:'单下 9 形引号',8219:'单高横翻 9 形引号',bdquo:'双下 9 形引号',hellip:'水平省略号',trade:'商标标志',9658:'实心右指指针',bull:'加重号',rarr:'向右箭头',rArr:'向右双线箭头',hArr:'左右双线箭头',diams:'实心方块纸牌',asymp:'约等于'});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/styles/styles/default.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/styles/styles/default.js
new file mode 100755
index 0000000..6aa58f3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/styles/styles/default.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.stylesSet.add('default',[{name:'Blue Title',element:'h3',styles:{color:'Blue'}},{name:'Red Title',element:'h3',styles:{color:'Red'}},{name:'Marker: Yellow',element:'span',styles:{'background-color':'Yellow'}},{name:'Marker: Green',element:'span',styles:{'background-color':'Lime'}},{name:'Big',element:'big'},{name:'Small',element:'small'},{name:'Typewriter',element:'tt'},{name:'Computer Code',element:'code'},{name:'Keyboard Phrase',element:'kbd'},{name:'Sample Text',element:'samp'},{name:'Variable',element:'var'},{name:'Deleted Text',element:'del'},{name:'Inserted Text',element:'ins'},{name:'Cited Work',element:'cite'},{name:'Inline Quotation',element:'q'},{name:'Language: RTL',element:'span',attributes:{dir:'rtl'}},{name:'Language: LTR',element:'span',attributes:{dir:'ltr'}},{name:'Image on Left',element:'img',attributes:{style:'padding: 5px; margin-right: 5px',border:'2',align:'left'}},{name:'Image on Right',element:'img',attributes:{style:'padding: 5px; margin-left: 5px',border:'2',align:'right'}},{name:'Borderless Table',element:'table',styles:{'border-style':'hidden','background-color':'#E6E6FA'}},{name:'Square Bulleted List',element:'ul',styles:{'list-style-type':'square'}}]);
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/stylesheetparser/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/stylesheetparser/plugin.js
new file mode 100755
index 0000000..e773bf6
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/stylesheetparser/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(c,d,e){var f=c.join(' ');f=f.replace(/(,|>|\+|~)/g,' ');f=f.replace(/\[[^\]]*/g,'');f=f.replace(/#[^\s]*/g,'');f=f.replace(/\:{1,2}[^\s]*/g,'');f=f.replace(/\s+/g,' ');var g=f.split(' '),h=[];for(var i=0;i<g.length;i++){var j=g[i];if(e.test(j)&&!d.test(j))if(CKEDITOR.tools.indexOf(h,j)==-1)h.push(j);}return h;};function b(c,d,e){var f=[],g=[],h;for(h=0;h<c.styleSheets.length;h++){var i=c.styleSheets[h],j=i.ownerNode||i.owningElement;if(j.getAttribute('data-cke-temp'))continue;if(i.href&&i.href.substr(0,9)=='chrome://')continue;var k=i.cssRules||i.rules;for(var l=0;l<k.length;l++)g.push(k[l].selectorText);}var m=a(g,d,e);for(h=0;h<m.length;h++){var n=m[h].split('.'),o=n[0].toLowerCase(),p=n[1];f.push({name:o+'.'+p,element:o,attributes:{'class':p}});}return f;};CKEDITOR.plugins.add('stylesheetparser',{requires:['styles'],onLoad:function(){var c=CKEDITOR.editor.prototype;c.getStylesSet=CKEDITOR.tools.override(c.getStylesSet,function(d){return function(e){var f=this;d.call(this,function(g){var h=f.config.stylesheetParser_skipSelectors||/(^body\.|^\.)/i,i=f.config.stylesheetParser_validSelectors||/\w+\.\w+/;e(f._.stylesDefinitions=g.concat(b(f.document.$,h,i)));});};});}});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/table/dialogs/table.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/table/dialogs/table.js
new file mode 100755
index 0000000..6c48c20
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/table/dialogs/table.js
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=CKEDITOR.tools.cssLength,b=function(f){var g=this.id;if(!f.info)f.info={};f.info[g]=this.getValue();};function c(f){var g=0,h=0;for(var i=0,j,k=f.$.rows.length;i<k;i++){j=f.$.rows[i],g=0;for(var l=0,m,n=j.cells.length;l<n;l++){m=j.cells[l];g+=m.colSpan;}g>h&&(h=g);}return h;};function d(f){return function(){var g=this.getValue(),h=!!(CKEDITOR.dialog.validate.integer()(g)&&g>0);if(!h){alert(f);this.select();}return h;};};function e(f,g){var h=function(j){return new CKEDITOR.dom.element(j,f.document);},i=f.plugins.dialogadvtab;return{title:f.lang.table.title,minWidth:310,minHeight:CKEDITOR.env.ie?310:280,onLoad:function(){var j=this,k=j.getContentElement('advanced','advStyles');if(k)k.on('change',function(l){var m=this.getStyle('width',''),n=j.getContentElement('info','txtWidth');n&&n.setValue(m,true);var o=this.getStyle('height',''),p=j.getContentElement('info','txtHeight');p&&p.setValue(o,true);});},onShow:function(){var r=this;var j=f.getSelection(),k=j.getRanges(),l=null,m=r.getContentElement('info','txtRows'),n=r.getContentElement('info','txtCols'),o=r.getContentElement('info','txtWidth'),p=r.getContentElement('info','txtHeight');if(g=='tableProperties'){if(l=j.getSelectedElement())l=l.getAscendant('table',true);else if(k.length>0){if(CKEDITOR.env.webkit)k[0].shrink(CKEDITOR.NODE_ELEMENT);var q=k[0].getCommonAncestor(true);l=q.getAscendant('table',true);}r._.selectedElement=l;}if(l){r.setupContent(l);m&&m.disable();n&&n.disable();}else{m&&m.enable();n&&n.enable();}o&&o.onChange();p&&p.onChange();},onOk:function(){var j=f.getSelection(),k=this._.selectedElement&&j.createBookmarks(),l=this._.selectedElement||h('table'),m=this,n={};this.commitContent(n,l);if(n.info){var o=n.info;if(!this._.selectedElement){var p=l.append(h('tbody')),q=parseInt(o.txtRows,10)||0,r=parseInt(o.txtCols,10)||0;for(var s=0;s<q;s++){var t=p.append(h('tr'));for(var u=0;u<r;u++){var v=t.append(h('td'));if(!CKEDITOR.env.ie)v.append(h('br'));}}}var w=o.selHeaders;if(!l.$.tHead&&(w=='row'||w=='both')){var x=new CKEDITOR.dom.element(l.$.createTHead());p=l.getElementsByTag('tbody').getItem(0);var y=p.getElementsByTag('tr').getItem(0);for(s=0;s<y.getChildCount();s++){var z=y.getChild(s);if(z.type==CKEDITOR.NODE_ELEMENT&&!z.data('cke-bookmark')){z.renameNode('th');z.setAttribute('scope','col');}}x.append(y.remove());}if(l.$.tHead!==null&&!(w=='row'||w=='both')){x=new CKEDITOR.dom.element(l.$.tHead);p=l.getElementsByTag('tbody').getItem(0);var A=p.getFirst();while(x.getChildCount()>0){y=x.getFirst();
+for(s=0;s<y.getChildCount();s++){var B=y.getChild(s);if(B.type==CKEDITOR.NODE_ELEMENT){B.renameNode('td');B.removeAttribute('scope');}}y.insertBefore(A);}x.remove();}if(!this.hasColumnHeaders&&(w=='col'||w=='both'))for(t=0;t<l.$.rows.length;t++){B=new CKEDITOR.dom.element(l.$.rows[t].cells[0]);B.renameNode('th');B.setAttribute('scope','row');}if(this.hasColumnHeaders&&!(w=='col'||w=='both'))for(s=0;s<l.$.rows.length;s++){t=new CKEDITOR.dom.element(l.$.rows[s]);if(t.getParent().getName()=='tbody'){B=new CKEDITOR.dom.element(t.$.cells[0]);B.renameNode('td');B.removeAttribute('scope');}}o.txtHeight?l.setStyle('height',o.txtHeight):l.removeStyle('height');o.txtWidth?l.setStyle('width',o.txtWidth):l.removeStyle('width');if(!l.getAttribute('style'))l.removeAttribute('style');}if(!this._.selectedElement){f.insertElement(l);setTimeout(function(){var C=new CKEDITOR.dom.element(l.$.rows[0].cells[0]),D=new CKEDITOR.dom.range(f.document);D.moveToPosition(C,CKEDITOR.POSITION_AFTER_START);D.select(1);},0);}else try{j.selectBookmarks(k);}catch(C){}},contents:[{id:'info',label:f.lang.table.title,elements:[{type:'hbox',widths:[null,null],styles:['vertical-align:top'],children:[{type:'vbox',padding:0,children:[{type:'text',id:'txtRows','default':3,label:f.lang.table.rows,required:true,controlStyle:'width:5em',validate:d(f.lang.table.invalidRows),setup:function(j){this.setValue(j.$.rows.length);},commit:b},{type:'text',id:'txtCols','default':2,label:f.lang.table.columns,required:true,controlStyle:'width:5em',validate:d(f.lang.table.invalidCols),setup:function(j){this.setValue(c(j));},commit:b},{type:'html',html:' '},{type:'select',id:'selHeaders','default':'',label:f.lang.table.headers,items:[[f.lang.table.headersNone,''],[f.lang.table.headersRow,'row'],[f.lang.table.headersColumn,'col'],[f.lang.table.headersBoth,'both']],setup:function(j){var k=this.getDialog();k.hasColumnHeaders=true;for(var l=0;l<j.$.rows.length;l++){var m=j.$.rows[l].cells[0];if(m&&m.nodeName.toLowerCase()!='th'){k.hasColumnHeaders=false;break;}}if(j.$.tHead!==null)this.setValue(k.hasColumnHeaders?'both':'row');else this.setValue(k.hasColumnHeaders?'col':'');},commit:b},{type:'text',id:'txtBorder','default':1,label:f.lang.table.border,controlStyle:'width:3em',validate:CKEDITOR.dialog.validate.number(f.lang.table.invalidBorder),setup:function(j){this.setValue(j.getAttribute('border')||'');},commit:function(j,k){if(this.getValue())k.setAttribute('border',this.getValue());else k.removeAttribute('border');
+}},{id:'cmbAlign',type:'select','default':'',label:f.lang.common.align,items:[[f.lang.common.notSet,''],[f.lang.common.alignLeft,'left'],[f.lang.common.alignCenter,'center'],[f.lang.common.alignRight,'right']],setup:function(j){this.setValue(j.getAttribute('align')||'');},commit:function(j,k){if(this.getValue())k.setAttribute('align',this.getValue());else k.removeAttribute('align');}}]},{type:'vbox',padding:0,children:[{type:'hbox',widths:['5em'],children:[{type:'text',id:'txtWidth',controlStyle:'width:5em',label:f.lang.common.width,title:f.lang.common.cssLengthTooltip,'default':500,getValue:a,validate:CKEDITOR.dialog.validate.cssLength(f.lang.common.invalidCssLength.replace('%1',f.lang.common.width)),onChange:function(){var j=this.getDialog().getContentElement('advanced','advStyles');j&&j.updateStyle('width',this.getValue());},setup:function(j){var k=j.getStyle('width');k&&this.setValue(k);},commit:b}]},{type:'hbox',widths:['5em'],children:[{type:'text',id:'txtHeight',controlStyle:'width:5em',label:f.lang.common.height,title:f.lang.common.cssLengthTooltip,'default':'',getValue:a,validate:CKEDITOR.dialog.validate.cssLength(f.lang.common.invalidCssLength.replace('%1',f.lang.common.height)),onChange:function(){var j=this.getDialog().getContentElement('advanced','advStyles');j&&j.updateStyle('height',this.getValue());},setup:function(j){var k=j.getStyle('height');k&&this.setValue(k);},commit:b}]},{type:'html',html:' '},{type:'text',id:'txtCellSpace',controlStyle:'width:3em',label:f.lang.table.cellSpace,'default':1,validate:CKEDITOR.dialog.validate.number(f.lang.table.invalidCellSpacing),setup:function(j){this.setValue(j.getAttribute('cellSpacing')||'');},commit:function(j,k){if(this.getValue())k.setAttribute('cellSpacing',this.getValue());else k.removeAttribute('cellSpacing');}},{type:'text',id:'txtCellPad',controlStyle:'width:3em',label:f.lang.table.cellPad,'default':1,validate:CKEDITOR.dialog.validate.number(f.lang.table.invalidCellPadding),setup:function(j){this.setValue(j.getAttribute('cellPadding')||'');},commit:function(j,k){if(this.getValue())k.setAttribute('cellPadding',this.getValue());else k.removeAttribute('cellPadding');}}]}]},{type:'html',align:'right',html:''},{type:'vbox',padding:0,children:[{type:'text',id:'txtCaption',label:f.lang.table.caption,setup:function(j){var n=this;n.enable();var k=j.getElementsByTag('caption');if(k.count()>0){var l=k.getItem(0),m=l.getFirst(CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT));if(m&&!m.equals(l.getBogus())){n.disable();
+n.setValue(l.getText());return;}l=CKEDITOR.tools.trim(l.getText());n.setValue(l);}},commit:function(j,k){if(!this.isEnabled())return;var l=this.getValue(),m=k.getElementsByTag('caption');if(l){if(m.count()>0){m=m.getItem(0);m.setHtml('');}else{m=new CKEDITOR.dom.element('caption',f.document);if(k.getChildCount())m.insertBefore(k.getFirst());else m.appendTo(k);}m.append(new CKEDITOR.dom.text(l,f.document));}else if(m.count()>0)for(var n=m.count()-1;n>=0;n--)m.getItem(n).remove();}},{type:'text',id:'txtSummary',label:f.lang.table.summary,setup:function(j){this.setValue(j.getAttribute('summary')||'');},commit:function(j,k){if(this.getValue())k.setAttribute('summary',this.getValue());else k.removeAttribute('summary');}}]}]},i&&i.createAdvancedTab(f)]};};CKEDITOR.dialog.add('table',function(f){return e(f,'table');});CKEDITOR.dialog.add('tableProperties',function(f){return e(f,'tableProperties');});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/tableresize/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/tableresize/plugin.js
new file mode 100755
index 0000000..a787b46
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/tableresize/plugin.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=CKEDITOR.tools.cssLength,b=CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks||CKEDITOR.env.version<7);function c(k){return CKEDITOR.env.ie?k.$.clientWidth:parseInt(k.getComputedStyle('width'),10);};function d(k,l){var m=k.getComputedStyle('border-'+l+'-width'),n={thin:'0px',medium:'1px',thick:'2px'};if(m.indexOf('px')<0)if(m in n&&k.getComputedStyle('border-style')!='none')m=n[m];else m=0;return parseInt(m,10);};function e(k){var l=k.$.rows,m=0,n,o,p;for(var q=0,r=l.length;q<r;q++){p=l[q];n=p.cells.length;if(n>m){m=n;o=p;}}return o;};function f(k){var l=[],m=-1,n=k.getComputedStyle('direction')=='rtl',o=e(k),p=new CKEDITOR.dom.element(k.$.tBodies[0]),q=p.getDocumentPosition();for(var r=0,s=o.cells.length;r<s;r++){var t=new CKEDITOR.dom.element(o.cells[r]),u=o.cells[r+1]&&new CKEDITOR.dom.element(o.cells[r+1]);m+=t.$.colSpan||1;var v,w,x,y=t.getDocumentPosition().x;n?w=y+d(t,'left'):v=y+t.$.offsetWidth-d(t,'right');if(u){y=u.getDocumentPosition().x;n?v=y+u.$.offsetWidth-d(u,'right'):w=y+d(u,'left');}else{y=k.getDocumentPosition().x;n?v=y:w=y+k.$.offsetWidth;}x=Math.max(w-v,3);l.push({table:k,index:m,x:v,y:q.y,width:x,height:p.$.offsetHeight,rtl:n});}return l;};function g(k,l){for(var m=0,n=k.length;m<n;m++){var o=k[m];if(l>=o.x&&l<=o.x+o.width)return o;}return null;};function h(k){(k.data||k).preventDefault();};function i(k){var l,m,n,o,p,q,r,s,t,u;function v(){l=null;q=0;o=0;m.removeListener('mouseup',A);n.removeListener('mousedown',z);n.removeListener('mousemove',B);m.getBody().setStyle('cursor','auto');b?n.remove():n.hide();};function w(){var D=l.index,E=CKEDITOR.tools.buildTableMap(l.table),F=[],G=[],H=Number.MAX_VALUE,I=H,J=l.rtl;for(var K=0,L=E.length;K<L;K++){var M=E[K],N=M[D+(J?1:0)],O=M[D+(J?0:1)];N=N&&new CKEDITOR.dom.element(N);O=O&&new CKEDITOR.dom.element(O);if(!N||!O||!N.equals(O)){N&&(H=Math.min(H,c(N)));O&&(I=Math.min(I,c(O)));F.push(N);G.push(O);}}r=F;s=G;t=l.x-H;u=l.x+I;n.setOpacity(0.5);p=parseInt(n.getStyle('left'),10);q=0;o=1;n.on('mousemove',B);m.on('dragstart',h);};function x(){o=0;n.setOpacity(0);q&&y();var D=l.table;setTimeout(function(){D.removeCustomData('_cke_table_pillars');},0);m.removeListener('dragstart',h);};function y(){var D=l.rtl,E=D?s.length:r.length;for(var F=0;F<E;F++){var G=r[F],H=s[F],I=l.table;CKEDITOR.tools.setTimeout(function(J,K,L,M,N,O){J&&J.setStyle('width',a(Math.max(K+O,0)));L&&L.setStyle('width',a(Math.max(M-O,0)));if(N)I.setStyle('width',a(N+O*(D?-1:1)));},0,this,[G,G&&c(G),H,H&&c(H),(!G||!H)&&c(I)+d(I,'left')+d(I,'right'),q]);
+}};function z(D){h(D);w();m.on('mouseup',A,this);};function A(D){D.removeListener();x();};function B(D){C(D.data.$.clientX);};m=k.document;n=CKEDITOR.dom.element.createFromHtml('<div data-cke-temp=1 contenteditable=false unselectable=on style="position:absolute;cursor:col-resize;filter:alpha(opacity=0);opacity:0;padding:0;background-color:#004;background-image:none;border:0px none;z-index:10"></div>',m);if(!b)m.getDocumentElement().append(n);this.attachTo=function(D){if(o)return;if(b){m.getBody().append(n);q=0;}l=D;n.setStyles({width:a(D.width),height:a(D.height),left:a(D.x),top:a(D.y)});b&&n.setOpacity(0.25);n.on('mousedown',z,this);m.getBody().setStyle('cursor','col-resize');n.show();};var C=this.move=function(D){if(!l)return 0;if(!o&&(D<l.x||D>l.x+l.width)){v();return 0;}var E=D-Math.round(n.$.offsetWidth/2);if(o){if(E==t||E==u)return 1;E=Math.max(E,t);E=Math.min(E,u);q=E-p;}n.setStyle('left',a(E));return 1;};};function j(k){var l=k.data.getTarget();if(k.name=='mouseout'){if(!l.is('table'))return;var m=new CKEDITOR.dom.element(k.data.$.relatedTarget||k.data.$.toElement);while(m&&m.$&&!m.equals(l)&&!m.is('body'))m=m.getParent();if(!m||m.equals(l))return;}l.getAscendant('table',1).removeCustomData('_cke_table_pillars');k.removeListener();};CKEDITOR.plugins.add('tableresize',{requires:['tabletools'],init:function(k){k.on('contentDom',function(){var l;k.document.getBody().on('mousemove',function(m){m=m.data;if(l&&l.move(m.$.clientX)){h(m);return;}var n=m.getTarget(),o,p;if(!n.is('table')&&!n.getAscendant('tbody',1))return;o=n.getAscendant('table',1);if(!(p=o.getCustomData('_cke_table_pillars'))){o.setCustomData('_cke_table_pillars',p=f(o));o.on('mouseout',j);o.on('mousedown',j);}var q=g(p,m.$.clientX);if(q){!l&&(l=new i(k));l.attachTo(q);}});});}});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/tabletools/dialogs/tableCell.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/tabletools/dialogs/tableCell.js
new file mode 100755
index 0000000..7ea2004
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/tabletools/dialogs/tableCell.js
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('cellProperties',function(a){var b=a.lang.table,c=b.cell,d=a.lang.common,e=CKEDITOR.dialog.validate,f=/^(\d+(?:\.\d+)?)(px|%)$/,g=/^(\d+(?:\.\d+)?)px$/,h=CKEDITOR.tools.bind,i={type:'html',html:' '},j=a.lang.dir=='rtl';function k(l,m){var n=function(){var r=this;p(r);m(r,r._.parentDialog);r._.parentDialog.changeFocus();},o=function(){p(this);this._.parentDialog.changeFocus();},p=function(r){r.removeListener('ok',n);r.removeListener('cancel',o);},q=function(r){r.on('ok',n);r.on('cancel',o);};a.execCommand(l);if(a._.storedDialogs.colordialog)q(a._.storedDialogs.colordialog);else CKEDITOR.on('dialogDefinition',function(r){if(r.data.name!=l)return;var s=r.data.definition;r.removeListener();s.onLoad=CKEDITOR.tools.override(s.onLoad,function(t){return function(){q(this);s.onLoad=t;if(typeof t=='function')t.call(this);};});});};return{title:c.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?450:410,minHeight:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?230:220,contents:[{id:'info',label:c.title,accessKey:'I',elements:[{type:'hbox',widths:['40%','5%','40%'],children:[{type:'vbox',padding:0,children:[{type:'hbox',widths:['70%','30%'],children:[{type:'text',id:'width',width:'100px',label:d.width,validate:e.number(c.invalidWidth),onLoad:function(){var l=this.getDialog().getContentElement('info','widthType'),m=l.getElement(),n=this.getInputElement(),o=n.getAttribute('aria-labelledby');n.setAttribute('aria-labelledby',[o,m.$.id].join(' '));},setup:function(l){var m=parseInt(l.getAttribute('width'),10),n=parseInt(l.getStyle('width'),10);!isNaN(m)&&this.setValue(m);!isNaN(n)&&this.setValue(n);},commit:function(l){var m=parseInt(this.getValue(),10),n=this.getDialog().getValueOf('info','widthType');if(!isNaN(m))l.setStyle('width',m+n);else l.removeStyle('width');l.removeAttribute('width');},'default':''},{type:'select',id:'widthType',label:a.lang.table.widthUnit,labelStyle:'visibility:hidden','default':'px',items:[[b.widthPx,'px'],[b.widthPc,'%']],setup:function(l){var m=f.exec(l.getStyle('width')||l.getAttribute('width'));if(m)this.setValue(m[2]);}}]},{type:'hbox',widths:['70%','30%'],children:[{type:'text',id:'height',label:d.height,width:'100px','default':'',validate:e.number(c.invalidHeight),onLoad:function(){var l=this.getDialog().getContentElement('info','htmlHeightType'),m=l.getElement(),n=this.getInputElement(),o=n.getAttribute('aria-labelledby');n.setAttribute('aria-labelledby',[o,m.$.id].join(' '));},setup:function(l){var m=parseInt(l.getAttribute('height'),10),n=parseInt(l.getStyle('height'),10);
+!isNaN(m)&&this.setValue(m);!isNaN(n)&&this.setValue(n);},commit:function(l){var m=parseInt(this.getValue(),10);if(!isNaN(m))l.setStyle('height',CKEDITOR.tools.cssLength(m));else l.removeStyle('height');l.removeAttribute('height');}},{id:'htmlHeightType',type:'html',html:'<br />'+b.widthPx}]},i,{type:'select',id:'wordWrap',label:c.wordWrap,'default':'yes',items:[[c.yes,'yes'],[c.no,'no']],setup:function(l){var m=l.getAttribute('noWrap'),n=l.getStyle('white-space');if(n=='nowrap'||m)this.setValue('no');},commit:function(l){if(this.getValue()=='no')l.setStyle('white-space','nowrap');else l.removeStyle('white-space');l.removeAttribute('noWrap');}},i,{type:'select',id:'hAlign',label:c.hAlign,'default':'',items:[[d.notSet,''],[d.alignLeft,'left'],[d.alignCenter,'center'],[d.alignRight,'right']],setup:function(l){var m=l.getAttribute('align'),n=l.getStyle('text-align');this.setValue(n||m||'');},commit:function(l){var m=this.getValue();if(m)l.setStyle('text-align',m);else l.removeStyle('text-align');l.removeAttribute('align');}},{type:'select',id:'vAlign',label:c.vAlign,'default':'',items:[[d.notSet,''],[d.alignTop,'top'],[d.alignMiddle,'middle'],[d.alignBottom,'bottom'],[c.alignBaseline,'baseline']],setup:function(l){var m=l.getAttribute('vAlign'),n=l.getStyle('vertical-align');switch(n){case 'top':case 'middle':case 'bottom':case 'baseline':break;default:n='';}this.setValue(n||m||'');},commit:function(l){var m=this.getValue();if(m)l.setStyle('vertical-align',m);else l.removeStyle('vertical-align');l.removeAttribute('vAlign');}}]},i,{type:'vbox',padding:0,children:[{type:'select',id:'cellType',label:c.cellType,'default':'td',items:[[c.data,'td'],[c.header,'th']],setup:function(l){this.setValue(l.getName());},commit:function(l){l.renameNode(this.getValue());}},i,{type:'text',id:'rowSpan',label:c.rowSpan,'default':'',validate:e.integer(c.invalidRowSpan),setup:function(l){var m=parseInt(l.getAttribute('rowSpan'),10);if(m&&m!=1)this.setValue(m);},commit:function(l){var m=parseInt(this.getValue(),10);if(m&&m!=1)l.setAttribute('rowSpan',this.getValue());else l.removeAttribute('rowSpan');}},{type:'text',id:'colSpan',label:c.colSpan,'default':'',validate:e.integer(c.invalidColSpan),setup:function(l){var m=parseInt(l.getAttribute('colSpan'),10);if(m&&m!=1)this.setValue(m);},commit:function(l){var m=parseInt(this.getValue(),10);if(m&&m!=1)l.setAttribute('colSpan',this.getValue());else l.removeAttribute('colSpan');}},i,{type:'hbox',padding:0,widths:['60%','40%'],children:[{type:'text',id:'bgColor',label:c.bgColor,'default':'',setup:function(l){var m=l.getAttribute('bgColor'),n=l.getStyle('background-color');
+this.setValue(n||m);},commit:function(l){var m=this.getValue();if(m)l.setStyle('background-color',this.getValue());else l.removeStyle('background-color');l.removeAttribute('bgColor');}},{type:'button',id:'bgColorChoose','class':'colorChooser',label:c.chooseColor,onLoad:function(){this.getElement().getParent().setStyle('vertical-align','bottom');},onClick:function(){var l=this;k('colordialog',function(m){l.getDialog().getContentElement('info','bgColor').setValue(m.getContentElement('picker','selectedColor').getValue());});}}]},i,{type:'hbox',padding:0,widths:['60%','40%'],children:[{type:'text',id:'borderColor',label:c.borderColor,'default':'',setup:function(l){var m=l.getAttribute('borderColor'),n=l.getStyle('border-color');this.setValue(n||m);},commit:function(l){var m=this.getValue();if(m)l.setStyle('border-color',this.getValue());else l.removeStyle('border-color');l.removeAttribute('borderColor');}},{type:'button',id:'borderColorChoose','class':'colorChooser',label:c.chooseColor,style:(j?'margin-right':'margin-left')+': 10px',onLoad:function(){this.getElement().getParent().setStyle('vertical-align','bottom');},onClick:function(){var l=this;k('colordialog',function(m){l.getDialog().getContentElement('info','borderColor').setValue(m.getContentElement('picker','selectedColor').getValue());});}}]}]}]}]}],onShow:function(){var l=this;l.cells=CKEDITOR.plugins.tabletools.getSelectedCells(l._.editor.getSelection());l.setupContent(l.cells[0]);},onOk:function(){var p=this;var l=p._.editor.getSelection(),m=l.createBookmarks(),n=p.cells;for(var o=0;o<n.length;o++)p.commitContent(n[o]);p._.editor.forceNextSelectionCheck();l.selectBookmarks(m);p._.editor.selectionChange();}};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/dialogs/templates.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/dialogs/templates.js
new file mode 100755
index 0000000..6e761e0
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/dialogs/templates.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=CKEDITOR.document;CKEDITOR.dialog.add('templates',function(b){function c(k,l){k.setHtml('');for(var m=0,n=l.length;m<n;m++){var o=CKEDITOR.getTemplates(l[m]),p=o.imagesPath,q=o.templates,r=q.length;for(var s=0;s<r;s++){var t=q[s],u=d(t,p);u.setAttribute('aria-posinset',s+1);u.setAttribute('aria-setsize',r);k.append(u);}}};function d(k,l){var m=CKEDITOR.dom.element.createFromHtml('<a href="javascript:void(0)" tabIndex="-1" role="option" ><div class="cke_tpl_item"></div></a>'),n='<table style="width:350px;" class="cke_tpl_preview" role="presentation"><tr>';if(k.image&&l)n+='<td class="cke_tpl_preview_img"><img src="'+CKEDITOR.getUrl(l+k.image)+'"'+(CKEDITOR.env.ie6Compat?' onload="this.width=this.width"':'')+' alt="" title=""></td>';n+='<td style="white-space:normal;"><span class="cke_tpl_title">'+k.title+'</span><br/>';if(k.description)n+='<span>'+k.description+'</span>';n+='</td></tr></table>';m.getFirst().setHtml(n);m.on('click',function(){e(k.html);});return m;};function e(k){var l=CKEDITOR.dialog.getCurrent(),m=l.getValueOf('selectTpl','chkInsertOpt');if(m){b.on('contentDom',function(n){n.removeListener();l.hide();var o=new CKEDITOR.dom.range(b.document);o.moveToElementEditStart(b.document.getBody());o.select(1);setTimeout(function(){b.fire('saveSnapshot');},0);});b.fire('saveSnapshot');b.setData(k);}else{b.insertHtml(k);l.hide();}};function f(k){var l=k.data.getTarget(),m=g.equals(l);if(m||g.contains(l)){var n=k.data.getKeystroke(),o=g.getElementsByTag('a'),p;if(o){if(m)p=o.getItem(0);else switch(n){case 40:p=l.getNext();break;case 38:p=l.getPrevious();break;case 13:case 32:l.fire('click');}if(p){p.focus();k.data.preventDefault();}}}};CKEDITOR.skins.load(b,'templates');var g,h='cke_tpl_list_label_'+CKEDITOR.tools.getNextNumber(),i=b.lang.templates,j=b.config;return{title:b.lang.templates.title,minWidth:CKEDITOR.env.ie?440:400,minHeight:340,contents:[{id:'selectTpl',label:i.title,elements:[{type:'vbox',padding:5,children:[{id:'selectTplText',type:'html',html:'<span>'+i.selectPromptMsg+'</span>'},{id:'templatesList',type:'html',focus:true,html:'<div class="cke_tpl_list" tabIndex="-1" role="listbox" aria-labelledby="'+h+'">'+'<div class="cke_tpl_loading"><span></span></div>'+'</div>'+'<span class="cke_voice_label" id="'+h+'">'+i.options+'</span>'},{id:'chkInsertOpt',type:'checkbox',label:i.insertOption,'default':j.templates_replaceContent}]}]}],buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var k=this.getContentElement('selectTpl','templatesList');
+g=k.getElement();CKEDITOR.loadTemplates(j.templates_files,function(){var l=(j.templates||'default').split(',');if(l.length){c(g,l);k.focus();}else g.setHtml('<div class="cke_tpl_empty"><span>'+i.emptyListMsg+'</span>'+'</div>');});this._.element.on('keydown',f);},onHide:function(){this._.element.removeListener('keydown',f);}};});})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/default.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/default.js
new file mode 100755
index 0000000..f1bb531
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/default.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.addTemplates('default',{imagesPath:CKEDITOR.getUrl(CKEDITOR.plugins.getPath('templates')+'templates/images/'),templates:[{title:'Image and Title',image:'template1.gif',description:'One main image with a title and text that surround the image.',html:'<h3><img style="margin-right: 10px" height="100" width="100" align="left"/>Type the title here</h3><p>Type the text here</p>'},{title:'Strange Template',image:'template2.gif',description:'A template that defines two colums, each one with a title, and some text.',html:'<table cellspacing="0" cellpadding="0" style="width:100%" border="0"><tr><td style="width:50%"><h3>Title 1</h3></td><td></td><td style="width:50%"><h3>Title 2</h3></td></tr><tr><td>Text 1</td><td></td><td>Text 2</td></tr></table><p>More text goes here.</p>'},{title:'Text and Table',image:'template3.gif',description:'A title with some text and a table.',html:'<div style="width: 80%"><h3>Title goes here</h3><table style="width:150px;float: right" cellspacing="0" cellpadding="0" border="1"><caption style="border:solid 1px black"><strong>Table title</strong></caption></tr><tr><td> </td><td> </td><td> </td></tr><tr><td> </td><td> </td><td> </td></tr><tr><td> </td><td> </td><td> </td></tr></table><p>Type the text here</p></div>'}]});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template1.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template1.gif
new file mode 100755
index 0000000..efdabbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template1.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template2.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template2.gif
new file mode 100755
index 0000000..d1cebb3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template2.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template3.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template3.gif
new file mode 100755
index 0000000..db41cb4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/templates/templates/images/template3.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/dialogs/uicolor.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/dialogs/uicolor.js
new file mode 100755
index 0000000..aad14fb
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/dialogs/uicolor.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('uicolor',function(a){var b,c,d,e=a.getUiColor(),f='cke_uicolor_picker'+CKEDITOR.tools.getNextNumber();function g(j){if(/^#/.test(j))j=window.YAHOO.util.Color.hex2rgb(j.substr(1));c.setValue(j,true);c.refresh(f);};function h(j,k){if(k||b._.contents.tab1.livePeview.getValue())a.setUiColor(j);b._.contents.tab1.configBox.setValue('config.uiColor = "#'+c.get('hex')+'"');};d={id:'yuiColorPicker',type:'html',html:"<div id='"+f+"' class='cke_uicolor_picker' style='width: 360px; height: 200px; position: relative;'></div>",onLoad:function(j){var k=CKEDITOR.getUrl('plugins/uicolor/yui/');c=new window.YAHOO.widget.ColorPicker(f,{showhsvcontrols:true,showhexcontrols:true,images:{PICKER_THUMB:k+'assets/picker_thumb.png',HUE_THUMB:k+'assets/hue_thumb.png'}});if(e)g(e);c.on('rgbChange',function(){b._.contents.tab1.predefined.setValue('');h('#'+c.get('hex'));});var l=new CKEDITOR.dom.nodeList(c.getElementsByTagName('input'));for(var m=0;m<l.count();m++)l.getItem(m).addClass('cke_dialog_ui_input_text');}};var i=true;return{title:a.lang.uicolor.title,minWidth:360,minHeight:320,onLoad:function(){b=this;this.setupContent();if(CKEDITOR.env.ie7Compat)b.parts.contents.setStyle('overflow','hidden');},contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[d,{id:'tab1',type:'vbox',children:[{id:'livePeview',type:'checkbox',label:a.lang.uicolor.preview,'default':1,onLoad:function(){i=true;},onChange:function(){if(i)return;var j=this.getValue(),k=j?'#'+c.get('hex'):e;h(k,true);}},{type:'hbox',children:[{id:'predefined',type:'select','default':'',label:a.lang.uicolor.predefined,items:[[''],['Light blue','#9AB8F3'],['Sand','#D2B48C'],['Metallic','#949AAA'],['Purple','#C2A3C7'],['Olive','#A2C980'],['Happy green','#9BD446'],['Jezebel Blue','#14B8C4'],['Burn','#FF893A'],['Easy red','#FF6969'],['Pisces 3','#48B4F2'],['Aquarius 5','#487ED4'],['Absinthe','#A8CF76'],['Scrambled Egg','#C7A622'],['Hello monday','#8E8D80'],['Lovely sunshine','#F1E8B1'],['Recycled air','#B3C593'],['Down','#BCBCA4'],['Mark Twain','#CFE91D'],['Specks of dust','#D1B596'],['Lollipop','#F6CE23']],onChange:function(){var j=this.getValue();if(j){g(j);h(j);CKEDITOR.document.getById('predefinedPreview').setStyle('background',j);}else CKEDITOR.document.getById('predefinedPreview').setStyle('background','');},onShow:function(){var j=a.getUiColor();if(j)this.setValue(j);}},{id:'predefinedPreview',type:'html',html:'<div id="cke_uicolor_preview" style="border: 1px solid black; padding: 3px; width: 30px;"><div id="predefinedPreview" style="width: 30px; height: 30px;"> </div></div>'}]},{id:'configBox',type:'text',label:a.lang.uicolor.config,onShow:function(){var j=a.getUiColor();
+if(j)this.setValue('config.uiColor = "'+j+'"');}}]}]}],buttons:[CKEDITOR.dialog.okButton]};});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/_translationstatus.txt b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/_translationstatus.txt
new file mode 100755
index 0000000..f268477
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/_translationstatus.txt
@@ -0,0 +1,28 @@
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+
+bg.js Found: 4 Missing: 0
+cs.js Found: 4 Missing: 0
+cy.js Found: 4 Missing: 0
+da.js Found: 4 Missing: 0
+de.js Found: 4 Missing: 0
+el.js Found: 4 Missing: 0
+eo.js Found: 4 Missing: 0
+et.js Found: 4 Missing: 0
+fa.js Found: 4 Missing: 0
+fi.js Found: 4 Missing: 0
+fr.js Found: 4 Missing: 0
+he.js Found: 4 Missing: 0
+hr.js Found: 4 Missing: 0
+it.js Found: 4 Missing: 0
+mk.js Found: 4 Missing: 0
+nb.js Found: 4 Missing: 0
+nl.js Found: 4 Missing: 0
+no.js Found: 4 Missing: 0
+pl.js Found: 4 Missing: 0
+pt-br.js Found: 4 Missing: 0
+tr.js Found: 4 Missing: 0
+ug.js Found: 4 Missing: 0
+uk.js Found: 4 Missing: 0
+vi.js Found: 4 Missing: 0
+zh-cn.js Found: 4 Missing: 0
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/bg.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/bg.js
new file mode 100755
index 0000000..104d664
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/bg.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','bg',{uicolor:{title:'ПИ избор на цвят',preview:'Преглед',config:'Вмъкнете този низ във Вашия config.js fajl',predefined:'Предефинирани цветови палитри'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/cs.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/cs.js
new file mode 100755
index 0000000..6e68075
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/cs.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','cs',{uicolor:{title:'Výběr barvy rozhraní',preview:'Živý náhled',config:'Vložte tento řetězec do Vašeho souboru config.js',predefined:'Přednastavené sady barev'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/cy.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/cy.js
new file mode 100755
index 0000000..c7ede5a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/cy.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','cy',{uicolor:{title:"Dewisydd Lliwiau'r UI",preview:'Rhagolwg Byw',config:"Gludwch y llinyn hwn i'ch ffeil config.js",predefined:"Setiau lliw wedi'u cyn-ddiffinio"}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/da.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/da.js
new file mode 100755
index 0000000..eb3832c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/da.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','da',{uicolor:{title:'Brugerflade på farvevælger',preview:'Vis liveeksempel',config:'Indsæt denne streng i din config.js fil',predefined:'Prædefinerede farveskemaer'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/de.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/de.js
new file mode 100755
index 0000000..0cd7697
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/de.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','de',{uicolor:{title:'UI Pipette',preview:'Live-Vorschau',config:"Fügen Sie diese Zeichenfolge in die 'config.js' Datei.",predefined:'Vordefinierte Farbsätze'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/el.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/el.js
new file mode 100755
index 0000000..b3ed514
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/el.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','el',{uicolor:{title:'Διεπαφή Επιλογέα Χρωμάτων',preview:'Ζωντανή Προεπισκόπηση',config:'Επικολλήστε αυτό το κείμενο στο αρχείο config.js',predefined:'Προκαθορισμένα σύνολα χρωμάτων'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/en.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/en.js
new file mode 100755
index 0000000..604123a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/en.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','en',{uicolor:{title:'UI Color Picker',preview:'Live preview',config:'Paste this string into your config.js file',predefined:'Predefined color sets'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/eo.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/eo.js
new file mode 100755
index 0000000..4651525
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/eo.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','eo',{uicolor:{title:'UI Kolorselektilo',preview:'Vidigi la aspekton',config:'Gluu tiun signoĉenon en vian dosieron config.js',predefined:'Antaŭdifinita koloraro'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/et.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/et.js
new file mode 100755
index 0000000..dcbf18f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/et.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','et',{uicolor:{title:'Värvivalija kasutajaliides',preview:'Automaatne eelvaade',config:'Aseta see sõne oma config.js faili.',predefined:'Eelmääratud värvikomplektid'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/fa.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/fa.js
new file mode 100755
index 0000000..764ef4a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/fa.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','fa',{uicolor:{title:'انتخاب رنگ UI',preview:'پیشنمایش زنده',config:'این رشته را در فایل config.js خود بچسبانید.',predefined:'مجموعه رنگ از پیش تعریف شده'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/fi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/fi.js
new file mode 100755
index 0000000..db2caee
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/fi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','fi',{uicolor:{title:'Käyttöliittymän värivalitsin',preview:'Esikatsele',config:'Liitä tämä merkkijono config.js tiedostoosi',predefined:'Esimääritellyt värijoukot'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/fr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/fr.js
new file mode 100755
index 0000000..bccd2a2
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/fr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','fr',{uicolor:{title:'UI Sélecteur de couleur',preview:'Aperçu',config:'Collez cette chaîne de caractères dans votre fichier config.js',predefined:'Palettes de couleurs prédéfinies'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/he.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/he.js
new file mode 100755
index 0000000..acfc344
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/he.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','he',{uicolor:{title:'בחירת צבע ממשק משתמש',preview:'תצוגה מקדימה',config:'הדבק את הטקסט הבא לתוך הקובץ config.js',predefined:'קבוצות צבעים מוגדרות מראש'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/hr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/hr.js
new file mode 100755
index 0000000..84c87a3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/hr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','hr',{uicolor:{title:'UI odabir boja',preview:'Pregled uživo',config:'Zalijepite ovaj tekst u Vašu config.js datoteku.',predefined:'Već postavljeni setovi boja'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/it.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/it.js
new file mode 100755
index 0000000..567a301
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/it.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','it',{uicolor:{title:'Selettore Colore UI',preview:'Anteprima Live',config:'Incolla questa stringa nel tuo file config.js',predefined:'Set di colori predefiniti'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/mk.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/mk.js
new file mode 100755
index 0000000..d8eec07
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/mk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','mk',{uicolor:{title:'Палета со бои',preview:'Преглед',config:'Залепи го овој текст во config.js датотеката',predefined:'Предефинирани множества на бои'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/nb.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/nb.js
new file mode 100755
index 0000000..2fd7002
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/nb.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','nb',{uicolor:{title:'Fargevelger for brukergrensesnitt',preview:'Forhåndsvisning i sanntid',config:'Lim inn følgende tekst i din config.js-fil',predefined:'Forhåndsdefinerte fargesett'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/nl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/nl.js
new file mode 100755
index 0000000..bd9b7e9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/nl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','nl',{uicolor:{title:'UI Kleurenkiezer',preview:'Live voorbeeld',config:'Plak deze tekst in jouw config.js bestand',predefined:'Voorgedefinieerde kleurensets'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/no.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/no.js
new file mode 100755
index 0000000..09b2140
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/no.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','no',{uicolor:{title:'Fargevelger for brukergrensesnitt',preview:'Forhåndsvisning i sanntid',config:'Lim inn følgende tekst i din config.js-fil',predefined:'Forhåndsdefinerte fargesett'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/pl.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/pl.js
new file mode 100755
index 0000000..4620b9c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/pl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','pl',{uicolor:{title:'Wybór koloru interfejsu',preview:'Podgląd na żywo',config:'Wklej poniższy łańcuch znaków do pliku config.js:',predefined:'Predefiniowane zestawy kolorów'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/pt-br.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/pt-br.js
new file mode 100755
index 0000000..e1a5689
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/pt-br.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','pt-br',{uicolor:{title:'Paleta de Cores',preview:'Visualização ao vivo',config:'Cole o texto no seu arquivo config.js',predefined:'Conjuntos de cores predefinidos'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/tr.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/tr.js
new file mode 100755
index 0000000..2ee697c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/tr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','tr',{uicolor:{title:'UI Renk Seçicisi',preview:'Canlı önizleme',config:'Bu dizeyi config.js dosyasının içine yapıştırın',predefined:'Önceden tanımlanmış renk kümeleri'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/ug.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/ug.js
new file mode 100755
index 0000000..e1652ff
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/ug.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','ug',{uicolor:{title:'ئىشلەتكۈچى ئارايۈزى رەڭ تاللىغۇچ',preview:'شۇئان ئالدىن كۆزىتىش',config:'بۇ ھەرپ تىزىقىنى config.js ھۆججەتكە چاپلايدۇ',predefined:'ئالدىن بەلگىلەنگەن رەڭلەر'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/uk.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/uk.js
new file mode 100755
index 0000000..a6ba80f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/uk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','uk',{uicolor:{title:'Color Picker Інтерфейс',preview:'Перегляд наживо',config:'Вставте цей рядок у файл config.js',predefined:'Стандартний набір кольорів'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/vi.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/vi.js
new file mode 100755
index 0000000..eff2da5
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/vi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','vi',{uicolor:{title:'Giao diện người dùng Color Picker',preview:'Xem trước trực tiếp',config:'Dán chuỗi này vào tập tin config.js của bạn',predefined:'Tập màu định nghĩa sẵn'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/zh-cn.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/zh-cn.js
new file mode 100755
index 0000000..1ab773a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/lang/zh-cn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','zh-cn',{uicolor:{title:'用户界面颜色选择器',preview:'即时预览',config:'粘贴此字符串到你的 config.js 文件',predefined:'预定义颜色集'}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/plugin.js
new file mode 100755
index 0000000..9dc67dc
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('uicolor',{requires:['dialog'],lang:['bg','cs','cy','da','de','el','en','eo','et','fa','fi','fr','he','hr','it','mk','nb','nl','no','pl','pt-br','tr','ug','uk','vi','zh-cn'],init:function(a){if(CKEDITOR.env.ie6Compat)return;a.addCommand('uicolor',new CKEDITOR.dialogCommand('uicolor'));a.ui.addButton('UIColor',{label:a.lang.uicolor.title,command:'uicolor',icon:this.path+'uicolor.gif'});CKEDITOR.dialog.add('uicolor',this.path+'dialogs/uicolor.js');CKEDITOR.scriptLoader.load(CKEDITOR.getUrl('plugins/uicolor/yui/yui.js'));a.element.getDocument().appendStyleSheet(CKEDITOR.getUrl('plugins/uicolor/yui/assets/yui.css'));}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/uicolor.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/uicolor.gif
new file mode 100755
index 0000000..ec33de6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/uicolor.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/hue_bg.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/hue_bg.png
new file mode 100755
index 0000000..d9bcdeb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/hue_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png
new file mode 100755
index 0000000..14d5db4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/picker_mask.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/picker_mask.png
new file mode 100755
index 0000000..f8d9193
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/picker_mask.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png
new file mode 100755
index 0000000..78445a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/yui.css b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/yui.css
new file mode 100755
index 0000000..7621d14
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/assets/yui.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.yui-h-slider,.yui-v-slider{position:relative;}.yui-h-slider .yui-slider-thumb,.yui-v-slider .yui-slider-thumb{position:absolute;cursor:default;}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px;}.yui-skin-sam .yui-h-slider .yui-slider-thumb{top:4px;}.yui-skin-sam .yui-v-slider{background:url(bg-v.gif) no-repeat 12px 0;height:228px;width:48px;}.cke_uicolor_picker .yui-picker-panel{background:#e3e3e3;border-color:#888;}.cke_uicolor_picker .yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}.cke_uicolor_picker .yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}.cke_uicolor_picker .yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}.cke_uicolor_picker .yui-picker{position:relative;}.cke_uicolor_picker .yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}.cke_uicolor_picker .yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}.cke_uicolor_picker .yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html .cke_uicolor_picker .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='picker_mask.png',sizingMethod='scale');}.cke_uicolor_picker .yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}.cke_uicolor_picker .yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}.cke_uicolor_picker .yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}.cke_uicolor_picker .yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}.cke_uicolor_picker .yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}.cke_uicolor_picker .yui-picker-controls .hd{background:transparent;border-width:0!important;}.cke_uicolor_picker .yui-picker-controls .bd{height:100px;border-width:0!important;}.cke_uicolor_picker .yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}.cke_uicolor_picker .yui-picker-controls li{padding:2px;list-style:none;margin:0;}.cke_uicolor_picker .yui-picker-controls input{font-size:.85em;width:2.4em;}.cke_uicolor_picker .yui-picker-hex-controls{clear:both;padding:2px;}.cke_uicolor_picker .yui-picker-hex-controls input{width:4.6em;}.cke_uicolor_picker .yui-picker-controls a{font:1em arial,helvetica,clean,sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/yui.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/yui.js
new file mode 100755
index 0000000..86f5484
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/uicolor/yui/yui.js
@@ -0,0 +1,76 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/*jsl:ignoreall*/
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=(""+A[C]).split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]={versions:[],builds:[]};}B=I[A];H=D.version;G=D.build;F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var C={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:0},B=navigator.userAgent,A;if((/KHTML/).test(B)){C.webkit=1;}A=B.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=parseFloat(A[1]);if(/ Mobile\//.test(B)){C.mobile="Apple";}else{A=B.match(/NokiaN[^\/]*/);if(A){C.mobile=A[0];}}A=B.match(/AdobeAIR\/([^\s]*)/);if(A){C.air=A[0];}}if(!C.webkit){A=B.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=parseFloat(A[1]);A=B.match(/Opera Mini[^;]*/);if(A){C.mobile=A[0];}}else{A=B.match(/MSIE\s([^;]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}else{A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}}}}A=B.match(/Caja\/([^\s]*)/);if(A&&A[1]){C.caja=parseFloat(A[1]);}return C;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C=C+1){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var B=YAHOO.lang,F="[object Array]",C="[object Function]",A=Object.prototype,E=["toString","valueOf"],D={isArray:function(G){return A.toString.apply(G)===F;},isBoolean:function(G){return typeof G==="boolean";},isFunction:function(G){return A.toString.apply(G)===C;},isNull:function(G){return G===null;},isNumber:function(G){return typeof G==="number"&&isFinite(G);},isObject:function(G){return(G&&(typeof G==="object"||B.isFunction(G)))||false;},isString:function(G){return typeof G==="string";},isUndefined:function(G){return typeof G==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(I,H){var G,K,J;for(G=0;G<E.length;G=G+1){K=E[G];J=H[K];if(B.isFunction(J)&&J!=A[K]){I[K]=J;}}}:function(){},extend:function(J,K,I){if(!K||!J){throw new Error("extend failed, please check that "+"all dependencies are included.");}var H=function(){},G;H.prototype=K.prototype;J.prototype=new H();J.prototype.constructor=J;J.superclass=K.prototype;if(K.prototype.constructor==A.constructor){K.prototype.constructor=K;}if(I){for(G in I){if(B.hasOwnProperty(I,G)){J.prototype[G]=I[G];}}B._IEEnumFix(J.prototype,I);}},augmentObject:function(K,J){if(!J||!K){throw new Error("Absorb failed, verify dependencies.");}var G=arguments,I,L,H=G[2];if(H&&H!==true){for(I=2;I<G.length;I=I+1){K[G[I]]=J[G[I]];}}else{for(L in J){if(H||!(L in K)){K[L]=J[L];}}B._IEEnumFix(K,J);}},augmentProto:function(J,I){if(!I||!J){throw new Error("Augment failed, verify dependencies.");}var G=[J.prototype,I.prototype],H;for(H=2;H<arguments.length;H=H+1){G.push(arguments[H]);}B.augmentObject.apply(this,G);},dump:function(G,L){var I,K,N=[],O="{...}",H="f(){...}",M=", ",J=" => ";if(!B.isObject(G)){return G+"";}else{if(G instanceof Date||("nodeType" in G&&"tagName" in G)){return G;}else{if(B.isFunction(G)){return H;}}}L=(B.isNumber(L))?L:3;if(B.isArray(G)){N.push("[");for(I=0,K=G.length;I<K;I=I+1){if(B.isObject(G[I])){N.push((L>0)?B.dump(G[I],L-1):O);}else{N.push(G[I]);}N.push(M);}if(N.length>1){N.pop();}N.push("]");}else{N.push("{");for(I in G){if(B.hasOwnProperty(G,I)){N.push(I+J);if(B.isObject(G[I])){N.push((L>0)?B.dump(G[I],L-1):O);}else{N.push(G[I]);}N.push(M);}}if(N.length>1){N.pop();}N.push("}");}return N.join("");},substitute:function(V,H,O){var L,K,J,R,S,U,Q=[],I,M="dump",P=" ",G="{",T="}",N;for(;;){L=V.lastIndexOf(G);if(L<0){break;}K=V.indexOf(T,L);if(L+1>=K){break;}I=V.substring(L+1,K);R=I;U=null;J=R.indexOf(P);if(J>-1){U=R.substring(J+1);R=R.substring(0,J);}S=H[R];if(O){S=O(R,S,U);}if(B.isObject(S)){if(B.isArray(S)){S=B.dump(S,parseInt(U,10));}else{U=U||"";N=U.indexOf(M);if(N>-1){U=U.substring(4);}if(S.toString===A.toString||N>-1){S=B.dump(S,parseInt(U,10));}else{S=S.toString();}}}else{if(!B.isString(S)&&!B.isNumber(S)){S="~-"+Q.length+"-~";Q[Q.length]=I;}}V=V.substring(0,L)+S+V.substring(K+1);}for(L=Q.length-1;L>=0;L=L-1){V=V.replace(new RegExp("~-"+L+"-~"),"{"+Q[L]+"}","g");}return V;},trim:function(G){try{return G.replace(/^\s+|\s+$/g,"");}catch(H){return G;}},merge:function(){var J={},H=arguments,G=H.length,I;for(I=0;I<G;I=I+1){B.augmentObject(J,H[I],true);}return J;},later:function(N,H,O,J,K){N=N||0;H=H||{};var I=O,M=J,L,G;if(B.isString(O)){I=H[O];}if(!I){throw new TypeError("method undefined");}if(!B.isArray(M)){M=[J];}L=function(){I.apply(H,M);};G=(K)?setInterval(L,N):setTimeout(L,N);return{interval:K,cancel:function(){if(this.interval){clearInterval(G);}else{clearTimeout(G);}}};},isValue:function(G){return(B.isObject(G)||B.isString(G)||B.isNumber(G)||B.isBoolean(G));}};B.hasOwnProperty=(A.hasOwnProperty)?function(G,H){return G&&G.hasOwnProperty(H);}:function(G,H){return !B.isUndefined(G[H])&&G.constructor.prototype[H]!==G[H];};D.augmentObject(B,D,true);YAHOO.util.Lang=B;B.augment=B.augmentProto;YAHOO.augment=B.augmentProto;YAHOO.extend=B.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.7.0",build:"1796"});(function(){YAHOO.env._id_counter=YAHOO.env._id_counter||0;var E=YAHOO.util,L=YAHOO.lang,m=YAHOO.env.ua,A=YAHOO.lang.trim,d={},h={},N=/^t(?:able|d|h)$/i,X=/color$/i,K=window.document,W=K.documentElement,e="ownerDocument",n="defaultView",v="documentElement",t="compatMode",b="offsetLeft",P="offsetTop",u="offsetParent",Z="parentNode",l="nodeType",C="tagName",O="scrollLeft",i="scrollTop",Q="getBoundingClientRect",w="getComputedStyle",a="currentStyle",M="CSS1Compat",c="BackCompat",g="class",F="className",J="",B=" ",s="(?:^|\\s)",k="(?= |$)",U="g",p="position",f="fixed",V="relative",j="left",o="top",r="medium",q="borderLeftWidth",R="borderTopWidth",D=m.opera,I=m.webkit,H=m.gecko,T=m.ie;E.Dom={CUSTOM_ATTRIBUTES:(!W.hasAttribute)?{"for":"htmlFor","class":F}:{"htmlFor":"for","className":g},get:function(y){var AA,Y,z,x,G;if(y){if(y[l]||y.item){return y;}if(typeof y==="string"){AA=y;y=K.getElementById(y);if(y&&y.id===AA){return y;}else{if(y&&K.all){y=null;Y=K.all[AA];for(x=0,G=Y.length;x<G;++x){if(Y[x].id===AA){return Y[x];}}}}return y;}if(y.DOM_EVENTS){y=y.get("element");}if("length" in y){z=[];for(x=0,G=y.length;x<G;++x){z[z.length]=E.Dom.get(y[x]);}return z;}return y;}return null;},getComputedStyle:function(G,Y){if(window[w]){return G[e][n][w](G,null)[Y];}else{if(G[a]){return E.Dom.IE_ComputedStyle.get(G,Y);}}},getStyle:function(G,Y){return E.Dom.batch(G,E.Dom._getStyle,Y);},_getStyle:function(){if(window[w]){return function(G,y){y=(y==="float")?y="cssFloat":E.Dom._toCamel(y);var x=G.style[y],Y;if(!x){Y=G[e][n][w](G,null);if(Y){x=Y[y];}}return x;};}else{if(W[a]){return function(G,y){var x;switch(y){case"opacity":x=100;try{x=G.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(z){try{x=G.filters("alpha").opacity;}catch(Y){}}return x/100;case"float":y="styleFloat";default:y=E.Dom._toCamel(y);x=G[a]?G[a][y]:null;return(G.style[y]||x);}};}}}(),setStyle:function(G,Y,x){E.Dom.batch(G,E.Dom._setStyle,{prop:Y,val:x});},_setStyle:function(){if(T){return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){switch(x){case"opacity":if(L.isString(Y.style.filter)){Y.style.filter="alpha(opacity="+y*100+")";if(!Y[a]||!Y[a].hasLayout){Y.style.zoom=1;}}break;case"float":x="styleFloat";default:Y.style[x]=y;}}else{}};}else{return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){if(x=="float"){x="cssFloat";}Y.style[x]=y;}else{}};}}(),getXY:function(G){return E.Dom.batch(G,E.Dom._getXY);},_canPosition:function(G){return(E.Dom._getStyle(G,"display")!=="none"&&E.Dom._inDoc(G));},_getXY:function(){if(K[v][Q]){return function(y){var z,Y,AA,AF,AE,AD,AC,G,x,AB=Math.floor,AG=false;if(E.Dom._canPosition(y)){AA=y[Q]();AF=y[e];z=E.Dom.getDocumentScrollLeft(AF);Y=E.Dom.getDocumentScrollTop(AF);AG=[AB(AA[j]),AB(AA[o])];if(T&&m.ie<8){AE=2;AD=2;AC=AF[t];G=S(AF[v],q);x=S(AF[v],R);if(m.ie===6){if(AC!==c){AE=0;AD=0;}}if((AC==c)){if(G!==r){AE=parseInt(G,10);}if(x!==r){AD=parseInt(x,10);}}AG[0]-=AE;AG[1]-=AD;}if((Y||z)){AG[0]+=z;AG[1]+=Y;}AG[0]=AB(AG[0]);AG[1]=AB(AG[1]);}else{}return AG;};}else{return function(y){var x,Y,AA,AB,AC,z=false,G=y;if(E.Dom._canPosition(y)){z=[y[b],y[P]];x=E.Dom.getDocumentScrollLeft(y[e]);Y=E.Dom.getDocumentScrollTop(y[e]);AC=((H||m.webkit>519)?true:false);while((G=G[u])){z[0]+=G[b];z[1]+=G[P];if(AC){z=E.Dom._calcBorders(G,z);}}if(E.Dom._getStyle(y,p)!==f){G=y;while((G=G[Z])&&G[C]){AA=G[i];AB=G[O];if(H&&(E.Dom._getStyle(G,"overflow")!=="visible")){z=E.Dom._calcBorders(G,z);}if(AA||AB){z[0]-=AB;z[1]-=AA;}}z[0]+=x;z[1]+=Y;}else{if(D){z[0]-=x;z[1]-=Y;}else{if(I||H){z[0]+=x;z[1]+=Y;}}}z[0]=Math.floor(z[0]);z[1]=Math.floor(z[1]);}else{}return z;};}}(),getX:function(G){var Y=function(x){return E.Dom.getXY(x)[0];};return E.Dom.batch(G,Y,E.Dom,true);},getY:function(G){var Y=function(x){return E.Dom.getXY(x)[1];};return E.Dom.batch(G,Y,E.Dom,true);},setXY:function(G,x,Y){E.Dom.batch(G,E.Dom._setXY,{pos:x,noRetry:Y});},_setXY:function(G,z){var AA=E.Dom._getStyle(G,p),y=E.Dom.setStyle,AD=z.pos,Y=z.noRetry,AB=[parseInt(E.Dom.getComputedStyle(G,j),10),parseInt(E.Dom.getComputedStyle(G,o),10)],AC,x;if(AA=="static"){AA=V;y(G,p,AA);}AC=E.Dom._getXY(G);if(!AD||AC===false){return false;}if(isNaN(AB[0])){AB[0]=(AA==V)?0:G[b];}if(isNaN(AB[1])){AB[1]=(AA==V)?0:G[P];}if(AD[0]!==null){y(G,j,AD[0]-AC[0]+AB[0]+"px");}if(AD[1]!==null){y(G,o,AD[1]-AC[1]+AB[1]+"px");}if(!Y){x=E.Dom._getXY(G);if((AD[0]!==null&&x[0]!=AD[0])||(AD[1]!==null&&x[1]!=AD[1])){E.Dom._setXY(G,{pos:AD,noRetry:true});}}},setX:function(Y,G){E.Dom.setXY(Y,[G,null]);},setY:function(G,Y){E.Dom.setXY(G,[null,Y]);},getRegion:function(G){var Y=function(x){var y=false;if(E.Dom._canPosition(x)){y=E.Region.getRegion(x);}else{}return y;};return E.Dom.batch(G,Y,E.Dom,true);},getClientWidth:function(){return E.Dom.getViewportWidth();},getClientHeight:function(){return E.Dom.getViewportHeight();},getElementsByClassName:function(AB,AF,AC,AE,x,AD){AB=L.trim(AB);AF=AF||"*";AC=(AC)?E.Dom.get(AC):null||K;if(!AC){return[];}var Y=[],G=AC.getElementsByTagName(AF),z=E.Dom.hasClass;for(var y=0,AA=G.length;y<AA;++y){if(z(G[y],AB)){Y[Y.length]=G[y];}}if(AE){E.Dom.batch(Y,AE,x,AD);}return Y;},hasClass:function(Y,G){return E.Dom.batch(Y,E.Dom._hasClass,G);},_hasClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom.getAttribute(x,F)||J;if(Y.exec){G=Y.test(y);}else{G=Y&&(B+y+B).indexOf(B+Y+B)>-1;}}else{}return G;},addClass:function(Y,G){return E.Dom.batch(Y,E.Dom._addClass,G);},_addClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom.getAttribute(x,F)||J;if(!E.Dom._hasClass(x,Y)){E.Dom.setAttribute(x,F,A(y+B+Y));G=true;}}else{}return G;},removeClass:function(Y,G){return E.Dom.batch(Y,E.Dom._removeClass,G);},_removeClass:function(y,x){var Y=false,AA,z,G;if(y&&x){AA=E.Dom.getAttribute(y,F)||J;E.Dom.setAttribute(y,F,AA.replace(E.Dom._getClassRegex(x),J));z=E.Dom.getAttribute(y,F);if(AA!==z){E.Dom.setAttribute(y,F,A(z));Y=true;if(E.Dom.getAttribute(y,F)===""){G=(y.hasAttribute&&y.hasAttribute(g))?g:F;y.removeAttribute(G);}}}else{}return Y;},replaceClass:function(x,Y,G){return E.Dom.batch(x,E.Dom._replaceClass,{from:Y,to:G});
+},_replaceClass:function(y,x){var Y,AB,AA,G=false,z;if(y&&x){AB=x.from;AA=x.to;if(!AA){G=false;}else{if(!AB){G=E.Dom._addClass(y,x.to);}else{if(AB!==AA){z=E.Dom.getAttribute(y,F)||J;Y=(B+z.replace(E.Dom._getClassRegex(AB),B+AA)).split(E.Dom._getClassRegex(AA));Y.splice(1,0,B+AA);E.Dom.setAttribute(y,F,A(Y.join(J)));G=true;}}}}else{}return G;},generateId:function(G,x){x=x||"yui-gen";var Y=function(y){if(y&&y.id){return y.id;}var z=x+YAHOO.env._id_counter++;if(y){if(y[e].getElementById(z)){return E.Dom.generateId(y,z+x);}y.id=z;}return z;};return E.Dom.batch(G,Y,E.Dom,true)||Y.apply(E.Dom,arguments);},isAncestor:function(Y,x){Y=E.Dom.get(Y);x=E.Dom.get(x);var G=false;if((Y&&x)&&(Y[l]&&x[l])){if(Y.contains&&Y!==x){G=Y.contains(x);}else{if(Y.compareDocumentPosition){G=!!(Y.compareDocumentPosition(x)&16);}}}else{}return G;},inDocument:function(G,Y){return E.Dom._inDoc(E.Dom.get(G),Y);},_inDoc:function(Y,x){var G=false;if(Y&&Y[C]){x=x||Y[e];G=E.Dom.isAncestor(x[v],Y);}else{}return G;},getElementsBy:function(Y,AF,AB,AD,y,AC,AE){AF=AF||"*";AB=(AB)?E.Dom.get(AB):null||K;if(!AB){return[];}var x=[],G=AB.getElementsByTagName(AF);for(var z=0,AA=G.length;z<AA;++z){if(Y(G[z])){if(AE){x=G[z];break;}else{x[x.length]=G[z];}}}if(AD){E.Dom.batch(x,AD,y,AC);}return x;},getElementBy:function(x,G,Y){return E.Dom.getElementsBy(x,G,Y,null,null,null,true);},batch:function(x,AB,AA,z){var y=[],Y=(z)?AA:window;x=(x&&(x[C]||x.item))?x:E.Dom.get(x);if(x&&AB){if(x[C]||x.length===undefined){return AB.call(Y,x,AA);}for(var G=0;G<x.length;++G){y[y.length]=AB.call(Y,x[G],AA);}}else{return false;}return y;},getDocumentHeight:function(){var Y=(K[t]!=M||I)?K.body.scrollHeight:W.scrollHeight,G=Math.max(Y,E.Dom.getViewportHeight());return G;},getDocumentWidth:function(){var Y=(K[t]!=M||I)?K.body.scrollWidth:W.scrollWidth,G=Math.max(Y,E.Dom.getViewportWidth());return G;},getViewportHeight:function(){var G=self.innerHeight,Y=K[t];if((Y||T)&&!D){G=(Y==M)?W.clientHeight:K.body.clientHeight;}return G;},getViewportWidth:function(){var G=self.innerWidth,Y=K[t];if(Y||T){G=(Y==M)?W.clientWidth:K.body.clientWidth;}return G;},getAncestorBy:function(G,Y){while((G=G[Z])){if(E.Dom._testElement(G,Y)){return G;}}return null;},getAncestorByClassName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return E.Dom.hasClass(y,G);};return E.Dom.getAncestorBy(Y,x);},getAncestorByTagName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return y[C]&&y[C].toUpperCase()==G.toUpperCase();};return E.Dom.getAncestorBy(Y,x);},getPreviousSiblingBy:function(G,Y){while(G){G=G.previousSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getPreviousSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getPreviousSiblingBy(G);},getNextSiblingBy:function(G,Y){while(G){G=G.nextSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getNextSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getNextSiblingBy(G);},getFirstChildBy:function(G,x){var Y=(E.Dom._testElement(G.firstChild,x))?G.firstChild:null;return Y||E.Dom.getNextSiblingBy(G.firstChild,x);},getFirstChild:function(G,Y){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getFirstChildBy(G);},getLastChildBy:function(G,x){if(!G){return null;}var Y=(E.Dom._testElement(G.lastChild,x))?G.lastChild:null;return Y||E.Dom.getPreviousSiblingBy(G.lastChild,x);},getLastChild:function(G){G=E.Dom.get(G);return E.Dom.getLastChildBy(G);},getChildrenBy:function(Y,y){var x=E.Dom.getFirstChildBy(Y,y),G=x?[x]:[];E.Dom.getNextSiblingBy(x,function(z){if(!y||y(z)){G[G.length]=z;}return false;});return G;},getChildren:function(G){G=E.Dom.get(G);if(!G){}return E.Dom.getChildrenBy(G);},getDocumentScrollLeft:function(G){G=G||K;return Math.max(G[v].scrollLeft,G.body.scrollLeft);},getDocumentScrollTop:function(G){G=G||K;return Math.max(G[v].scrollTop,G.body.scrollTop);},insertBefore:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}return G[Z].insertBefore(Y,G);},insertAfter:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}if(G.nextSibling){return G[Z].insertBefore(Y,G.nextSibling);}else{return G[Z].appendChild(Y);}},getClientRegion:function(){var x=E.Dom.getDocumentScrollTop(),Y=E.Dom.getDocumentScrollLeft(),y=E.Dom.getViewportWidth()+Y,G=E.Dom.getViewportHeight()+x;return new E.Region(x,y,G,Y);},setAttribute:function(Y,G,x){G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;Y.setAttribute(G,x);},getAttribute:function(Y,G){G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;return Y.getAttribute(G);},_toCamel:function(Y){var x=d;function G(y,z){return z.toUpperCase();}return x[Y]||(x[Y]=Y.indexOf("-")===-1?Y:Y.replace(/-([a-z])/gi,G));},_getClassRegex:function(Y){var G;if(Y!==undefined){if(Y.exec){G=Y;}else{G=h[Y];if(!G){Y=Y.replace(E.Dom._patterns.CLASS_RE_TOKENS,"\\$1");G=h[Y]=new RegExp(s+Y+k,U);}}}return G;},_patterns:{ROOT_TAG:/^body|html$/i,CLASS_RE_TOKENS:/([\.\(\)\^\$\*\+\?\|\[\]\{\}])/g},_testElement:function(G,Y){return G&&G[l]==1&&(!Y||Y(G));},_calcBorders:function(x,y){var Y=parseInt(E.Dom[w](x,R),10)||0,G=parseInt(E.Dom[w](x,q),10)||0;if(H){if(N.test(x[C])){Y=0;G=0;}}y[0]+=G;y[1]+=Y;return y;}};var S=E.Dom[w];if(m.opera){E.Dom[w]=function(Y,G){var x=S(Y,G);if(X.test(G)){x=E.Dom.Color.toRGB(x);}return x;};}if(m.webkit){E.Dom[w]=function(Y,G){var x=S(Y,G);if(x==="rgba(0, 0, 0, 0)"){x="transparent";}return x;};}})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this.y=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this.x=B;this[0]=B;this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top),D=Math.min(this.right,E.right),A=Math.min(this.bottom,E.bottom),B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);
+}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top),D=Math.max(this.right,E.right),A=Math.max(this.bottom,E.bottom),B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D),C=F[1],E=F[0]+D.offsetWidth,A=F[1]+D.offsetHeight,B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}YAHOO.util.Point.superclass.constructor.call(this,B,A,B,A);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var B=YAHOO.util,A="clientTop",F="clientLeft",J="parentNode",K="right",W="hasLayout",I="px",U="opacity",L="auto",D="borderLeftWidth",G="borderTopWidth",P="borderRightWidth",V="borderBottomWidth",S="visible",Q="transparent",N="height",E="width",H="style",T="currentStyle",R=/^width|height$/,O=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,M={get:function(X,Z){var Y="",a=X[T][Z];if(Z===U){Y=B.Dom.getStyle(X,U);}else{if(!a||(a.indexOf&&a.indexOf(I)>-1)){Y=a;}else{if(B.Dom.IE_COMPUTED[Z]){Y=B.Dom.IE_COMPUTED[Z](X,Z);}else{if(O.test(a)){Y=B.Dom.IE.ComputedStyle.getPixel(X,Z);}else{Y=a;}}}}return Y;},getOffset:function(Z,e){var b=Z[T][e],X=e.charAt(0).toUpperCase()+e.substr(1),c="offset"+X,Y="pixel"+X,a="",d;if(b==L){d=Z[c];if(d===undefined){a=0;}a=d;if(R.test(e)){Z[H][e]=d;if(Z[c]>d){a=d-(Z[c]-d);}Z[H][e]=L;}}else{if(!Z[H][Y]&&!Z[H][e]){Z[H][e]=b;}a=Z[H][Y];}return a+I;},getBorderWidth:function(X,Z){var Y=null;if(!X[T][W]){X[H].zoom=1;}switch(Z){case G:Y=X[A];break;case V:Y=X.offsetHeight-X.clientHeight-X[A];break;case D:Y=X[F];break;case P:Y=X.offsetWidth-X.clientWidth-X[F];break;}return Y+I;},getPixel:function(Y,X){var a=null,b=Y[T][K],Z=Y[T][X];Y[H][K]=Z;a=Y[H].pixelRight;Y[H][K]=b;return a+I;},getMargin:function(Y,X){var Z;if(Y[T][X]==L){Z=0+I;}else{Z=B.Dom.IE.ComputedStyle.getPixel(Y,X);}return Z;},getVisibility:function(Y,X){var Z;while((Z=Y[T])&&Z[X]=="inherit"){Y=Y[J];}return(Z)?Z[X]:S;},getColor:function(Y,X){return B.Dom.Color.toRGB(Y[T][X])||Q;},getBorderColor:function(Y,X){var Z=Y[T],a=Z[X]||Z.color;return B.Dom.Color.toRGB(B.Dom.Color.toHex(a));}},C={};C.top=C.right=C.bottom=C.left=C[E]=C[N]=M.getOffset;C.color=M.getColor;C[G]=C[P]=C[V]=C[D]=M.getBorderWidth;C.marginTop=C.marginRight=C.marginBottom=C.marginLeft=M.getMargin;C.visibility=M.getVisibility;C.borderColor=C.borderTopColor=C.borderRightColor=C.borderBottomColor=C.borderLeftColor=M.getBorderColor;B.Dom.IE_COMPUTED=C;B.Dom.IE_ComputedStyle=M;})();(function(){var C="toString",A=parseInt,B=RegExp,D=YAHOO.util;D.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(E){if(!D.Dom.Color.re_RGB.test(E)){E=D.Dom.Color.toHex(E);}if(D.Dom.Color.re_hex.exec(E)){E="rgb("+[A(B.$1,16),A(B.$2,16),A(B.$3,16)].join(", ")+")";}return E;},toHex:function(H){H=D.Dom.Color.KEYWORDS[H]||H;if(D.Dom.Color.re_RGB.exec(H)){var G=(B.$1.length===1)?"0"+B.$1:Number(B.$1),F=(B.$2.length===1)?"0"+B.$2:Number(B.$2),E=(B.$3.length===1)?"0"+B.$3:Number(B.$3);H=[G[C](16),F[C](16),E[C](16)].join("");}if(H.length<6){H=H.replace(D.Dom.Color.re_hex3,"$1$1");}if(H!=="transparent"&&H.indexOf("#")<0){H="#"+H;}return H.toLowerCase();}};}());YAHOO.register("dom",YAHOO.util.Dom,{version:"2.7.0",build:"1796"});YAHOO.util.CustomEvent=function(D,C,B,A){this.type=D;this.scope=C||window;this.silent=B;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var E="_YUICEOnSubscribe";if(D!==E){this.subscribeEvent=new YAHOO.util.CustomEvent(E,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(A,B,C){if(!A){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(A,B,C);}this.subscribers.push(new YAHOO.util.Subscriber(A,B,C));},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){this.lastError=null;var K=[],E=this.subscribers.length;if(!E&&this.silent){return true;}var I=[].slice.call(arguments,0),G=true,D,J=false;if(!this.silent){}var C=this.subscribers.slice(),A=YAHOO.util.Event.throwErrors;for(D=0;D<E;++D){var M=C[D];if(!M){J=true;}else{if(!this.silent){}var L=M.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var B=null;if(I.length>0){B=I[0];}try{G=M.fn.call(L,B,M.obj);}catch(F){this.lastError=F;if(A){throw F;}}}else{try{G=M.fn.call(L,this.type,I,M.obj);}catch(H){this.lastError=H;if(A){throw H;}}}if(false===G){if(!this.silent){}break;}}}return(G!==false);},unsubscribeAll:function(){var A=this.subscribers.length,B;for(B=A-1;B>-1;B--){this._delete(B);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(A,B,C){this.fn=A;this.obj=YAHOO.lang.isUndefined(B)?null:B;this.overrideContext=C;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var H=false;var I=[];var J=[];var G=[];var E=[];var C=0;var F=[];var B=[];var A=0;var D={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};var K=YAHOO.env.ua.ie?"focusin":"focus";var L=YAHOO.env.ua.ie?"focusout":"blur";return{POLL_RETRYS:2000,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){var M=this;var N=function(){M._tryPreloadAttach();};this._interval=setInterval(N,this.POLL_INTERVAL);}},onAvailable:function(S,O,Q,R,P){var M=(YAHOO.lang.isString(S))?[S]:S;for(var N=0;N<M.length;N=N+1){F.push({id:M[N],fn:O,obj:Q,overrideContext:R,checkReady:P});}C=this.POLL_RETRYS;this.startInterval();},onContentReady:function(P,M,N,O){this.onAvailable(P,M,N,O,true);},onDOMReady:function(M,N,O){if(this.DOMReady){setTimeout(function(){var P=window;if(O){if(O===true){P=N;}else{P=O;}}M.call(P,"DOMReady",[],N);},0);}else{this.DOMReadyEvent.subscribe(M,N,O);}},_addListener:function(O,M,Y,S,W,b){if(!Y||!Y.call){return false;}if(this._isValidCollection(O)){var Z=true;for(var T=0,V=O.length;T<V;++T){Z=this.on(O[T],M,Y,S,W)&&Z;}return Z;}else{if(YAHOO.lang.isString(O)){var R=this.getEl(O);if(R){O=R;}else{this.onAvailable(O,function(){YAHOO.util.Event.on(O,M,Y,S,W);});return true;}}}if(!O){return false;}if("unload"==M&&S!==this){J[J.length]=[O,M,Y,S,W];return true;}var N=O;if(W){if(W===true){N=S;}else{N=W;}}var P=function(c){return Y.call(N,YAHOO.util.Event.getEvent(c,O),S);};var a=[O,M,Y,P,N,S,W];var U=I.length;I[U]=a;if(this.useLegacyEvent(O,M)){var Q=this.getLegacyIndex(O,M);if(Q==-1||O!=G[Q][0]){Q=G.length;B[O.id+M]=Q;G[Q]=[O,M,O["on"+M]];E[Q]=[];O["on"+M]=function(c){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(c),Q);};}E[Q].push(a);}else{try{this._simpleAdd(O,M,P,b);}catch(X){this.lastError=X;this.removeListener(O,M,Y);return false;}}return true;},addListener:function(N,Q,M,O,P){return this._addListener(N,Q,M,O,P,false);},addFocusListener:function(N,M,O,P){return this._addListener(N,K,M,O,P,true);},removeFocusListener:function(N,M){return this.removeListener(N,K,M);},addBlurListener:function(N,M,O,P){return this._addListener(N,L,M,O,P,true);},removeBlurListener:function(N,M){return this.removeListener(N,L,M);},fireLegacyEvent:function(R,P){var T=true,M,V,U,N,S;V=E[P].slice();for(var O=0,Q=V.length;O<Q;++O){U=V[O];if(U&&U[this.WFN]){N=U[this.ADJ_SCOPE];S=U[this.WFN].call(N,R);T=(T&&S);}}M=G[P];if(M&&M[2]){M[2](R);}return T;},getLegacyIndex:function(N,O){var M=this.generateId(N)+O;if(typeof B[M]=="undefined"){return -1;}else{return B[M];}},useLegacyEvent:function(M,N){return(this.webkit&&this.webkit<419&&("click"==N||"dblclick"==N));},removeListener:function(N,M,V){var Q,T,X;if(typeof N=="string"){N=this.getEl(N);}else{if(this._isValidCollection(N)){var W=true;for(Q=N.length-1;Q>-1;Q--){W=(this.removeListener(N[Q],M,V)&&W);}return W;}}if(!V||!V.call){return this.purgeElement(N,false,M);}if("unload"==M){for(Q=J.length-1;Q>-1;Q--){X=J[Q];if(X&&X[0]==N&&X[1]==M&&X[2]==V){J.splice(Q,1);return true;}}return false;}var R=null;var S=arguments[3];if("undefined"===typeof S){S=this._getCacheIndex(N,M,V);}if(S>=0){R=I[S];}if(!N||!R){return false;}if(this.useLegacyEvent(N,M)){var P=this.getLegacyIndex(N,M);var O=E[P];if(O){for(Q=0,T=O.length;Q<T;++Q){X=O[Q];if(X&&X[this.EL]==N&&X[this.TYPE]==M&&X[this.FN]==V){O.splice(Q,1);break;}}}}else{try{this._simpleRemove(N,M,R[this.WFN],false);}catch(U){this.lastError=U;return false;}}delete I[S][this.WFN];delete I[S][this.FN];
+I.splice(S,1);return true;},getTarget:function(O,N){var M=O.target||O.srcElement;return this.resolveTextNode(M);},resolveTextNode:function(N){try{if(N&&3==N.nodeType){return N.parentNode;}}catch(M){}return N;},getPageX:function(N){var M=N.pageX;if(!M&&0!==M){M=N.clientX||0;if(this.isIE){M+=this._getScrollLeft();}}return M;},getPageY:function(M){var N=M.pageY;if(!N&&0!==N){N=M.clientY||0;if(this.isIE){N+=this._getScrollTop();}}return N;},getXY:function(M){return[this.getPageX(M),this.getPageY(M)];},getRelatedTarget:function(N){var M=N.relatedTarget;if(!M){if(N.type=="mouseout"){M=N.toElement;}else{if(N.type=="mouseover"){M=N.fromElement;}}}return this.resolveTextNode(M);},getTime:function(O){if(!O.time){var N=new Date().getTime();try{O.time=N;}catch(M){this.lastError=M;return N;}}return O.time;},stopEvent:function(M){this.stopPropagation(M);this.preventDefault(M);},stopPropagation:function(M){if(M.stopPropagation){M.stopPropagation();}else{M.cancelBubble=true;}},preventDefault:function(M){if(M.preventDefault){M.preventDefault();}else{M.returnValue=false;}},getEvent:function(O,M){var N=O||window.event;if(!N){var P=this.getEvent.caller;while(P){N=P.arguments[0];if(N&&Event==N.constructor){break;}P=P.caller;}}return N;},getCharCode:function(N){var M=N.keyCode||N.charCode||0;if(YAHOO.env.ua.webkit&&(M in D)){M=D[M];}return M;},_getCacheIndex:function(Q,R,P){for(var O=0,N=I.length;O<N;O=O+1){var M=I[O];if(M&&M[this.FN]==P&&M[this.EL]==Q&&M[this.TYPE]==R){return O;}}return -1;},generateId:function(M){var N=M.id;if(!N){N="yuievtautoid-"+A;++A;M.id=N;}return N;},_isValidCollection:function(N){try{return(N&&typeof N!=="string"&&N.length&&!N.tagName&&!N.alert&&typeof N[0]!=="undefined");}catch(M){return false;}},elCache:{},getEl:function(M){return(typeof M==="string")?document.getElementById(M):M;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(N){if(!H){H=true;var M=YAHOO.util.Event;M._ready();M._tryPreloadAttach();}},_ready:function(N){var M=YAHOO.util.Event;if(!M.DOMReady){M.DOMReady=true;M.DOMReadyEvent.fire();M._simpleRemove(document,"DOMContentLoaded",M._ready);}},_tryPreloadAttach:function(){if(F.length===0){C=0;if(this._interval){clearInterval(this._interval);this._interval=null;}return;}if(this.locked){return;}if(this.isIE){if(!this.DOMReady){this.startInterval();return;}}this.locked=true;var S=!H;if(!S){S=(C>0&&F.length>0);}var R=[];var T=function(V,W){var U=V;if(W.overrideContext){if(W.overrideContext===true){U=W.obj;}else{U=W.overrideContext;}}W.fn.call(U,W.obj);};var N,M,Q,P,O=[];for(N=0,M=F.length;N<M;N=N+1){Q=F[N];if(Q){P=this.getEl(Q.id);if(P){if(Q.checkReady){if(H||P.nextSibling||!S){O.push(Q);F[N]=null;}}else{T(P,Q);F[N]=null;}}else{R.push(Q);}}}for(N=0,M=O.length;N<M;N=N+1){Q=O[N];T(this.getEl(Q.id),Q);}C--;if(S){for(N=F.length-1;N>-1;N--){Q=F[N];if(!Q||!Q.id){F.splice(N,1);}}this.startInterval();}else{if(this._interval){clearInterval(this._interval);this._interval=null;}}this.locked=false;},purgeElement:function(Q,R,T){var O=(YAHOO.lang.isString(Q))?this.getEl(Q):Q;var S=this.getListeners(O,T),P,M;if(S){for(P=S.length-1;P>-1;P--){var N=S[P];this.removeListener(O,N.type,N.fn);}}if(R&&O&&O.childNodes){for(P=0,M=O.childNodes.length;P<M;++P){this.purgeElement(O.childNodes[P],R,T);}}},getListeners:function(O,M){var R=[],N;if(!M){N=[I,J];}else{if(M==="unload"){N=[J];}else{N=[I];}}var T=(YAHOO.lang.isString(O))?this.getEl(O):O;for(var Q=0;Q<N.length;Q=Q+1){var V=N[Q];if(V){for(var S=0,U=V.length;S<U;++S){var P=V[S];if(P&&P[this.EL]===T&&(!M||M===P[this.TYPE])){R.push({type:P[this.TYPE],fn:P[this.FN],obj:P[this.OBJ],adjust:P[this.OVERRIDE],scope:P[this.ADJ_SCOPE],index:S});}}}}return(R.length)?R:null;},_unload:function(T){var N=YAHOO.util.Event,Q,P,O,S,R,U=J.slice(),M;for(Q=0,S=J.length;Q<S;++Q){O=U[Q];if(O){M=window;if(O[N.ADJ_SCOPE]){if(O[N.ADJ_SCOPE]===true){M=O[N.UNLOAD_OBJ];}else{M=O[N.ADJ_SCOPE];}}O[N.FN].call(M,N.getEvent(T,O[N.EL]),O[N.UNLOAD_OBJ]);U[Q]=null;}}O=null;M=null;J=null;if(I){for(P=I.length-1;P>-1;P--){O=I[P];if(O){N.removeListener(O[N.EL],O[N.TYPE],O[N.FN],P);}}O=null;}G=null;N._simpleRemove(window,"unload",N._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var M=document.documentElement,N=document.body;if(M&&(M.scrollTop||M.scrollLeft)){return[M.scrollTop,M.scrollLeft];}else{if(N){return[N.scrollTop,N.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(O,P,N,M){O.addEventListener(P,N,(M));};}else{if(window.attachEvent){return function(O,P,N,M){O.attachEvent("on"+P,N);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(O,P,N,M){O.removeEventListener(P,N,(M));};}else{if(window.detachEvent){return function(N,O,M){N.detachEvent("on"+O,M);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener;
+/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */
+if(EU.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);
+}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,overrideContext:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=this.__yui_events||{};var A=D||{};var I=this.__yui_events;if(I[G]){}else{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var F=this.__yui_subscribers[G];if(F){for(var C=0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].overrideContext);}}}return I[G];},fireEvent:function(E,D,A,C){this.__yui_events=this.__yui_events||{};var G=this.__yui_events[E];if(!G){return null;}var B=[];for(var F=1;F<arguments.length;++F){B.push(arguments[F]);}return G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};(function(){var A=YAHOO.util.Event,C=YAHOO.lang;YAHOO.util.KeyListener=function(D,I,E,F){if(!D){}else{if(!I){}else{if(!E){}}}if(!F){F=YAHOO.util.KeyListener.KEYDOWN;}var G=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(C.isString(D)){D=document.getElementById(D);}if(C.isFunction(E)){G.subscribe(E);}else{G.subscribe(E.fn,E.scope,E.correctScope);}function H(O,N){if(!I.shift){I.shift=false;}if(!I.alt){I.alt=false;}if(!I.ctrl){I.ctrl=false;}if(O.shiftKey==I.shift&&O.altKey==I.alt&&O.ctrlKey==I.ctrl){var J,M=I.keys,L;if(YAHOO.lang.isArray(M)){for(var K=0;K<M.length;K++){J=M[K];L=A.getCharCode(O);if(J==L){G.fire(L,O);break;}}}else{L=A.getCharCode(O);if(M==L){G.fire(L,O);}}}}this.enable=function(){if(!this.enabled){A.on(D,F,H);this.enabledEvent.fire(I);}this.enabled=true;};this.disable=function(){if(this.enabled){A.removeListener(D,F,H);this.disabledEvent.fire(I);}this.enabled=false;};this.toString=function(){return"KeyListener ["+I.keys+"] "+D.tagName+(D.id?"["+D.id+"]":"");};};var B=YAHOO.util.KeyListener;B.KEYDOWN="keydown";B.KEYUP="keyup";B.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};})();YAHOO.register("event",YAHOO.util.Event,{version:"2.7.0",build:"1796"});YAHOO.register("yahoo-dom-event", YAHOO, {version: "2.7.0", build: "1796"});
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var A=YAHOO.util.Event,B=YAHOO.util.Dom;return{useShim:false,_shimActive:false,_shimState:false,_debugShim:false,_createShim:function(){var C=document.createElement("div");C.id="yui-ddm-shim";if(document.body.firstChild){document.body.insertBefore(C,document.body.firstChild);}else{document.body.appendChild(C);}C.style.display="none";C.style.backgroundColor="red";C.style.position="absolute";C.style.zIndex="99999";B.setStyle(C,"opacity","0");this._shim=C;A.on(C,"mouseup",this.handleMouseUp,this,true);A.on(C,"mousemove",this.handleMouseMove,this,true);A.on(window,"scroll",this._sizeShim,this,true);},_sizeShim:function(){if(this._shimActive){var C=this._shim;C.style.height=B.getDocumentHeight()+"px";C.style.width=B.getDocumentWidth()+"px";C.style.top="0";C.style.left="0";}},_activateShim:function(){if(this.useShim){if(!this._shim){this._createShim();}this._shimActive=true;var C=this._shim,D="0";if(this._debugShim){D=".5";}B.setStyle(C,"opacity",D);this._sizeShim();C.style.display="block";}},_deactivateShim:function(){this._shim.style.display="none";this._shimActive=false;},_shim:null,ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,interactionInfo:null,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,STRICT_INTERSECT:2,mode:0,_execOnAll:function(E,D){for(var F in this.ids){for(var C in this.ids[F]){var G=this.ids[F][C];if(!this.isTypeOfDD(G)){continue;}G[E].apply(G,D);}}},_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.on(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._onResize,this,true);},_onResize:function(C){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,fromTimeout:false,regDragDrop:function(D,C){if(!this.initialized){this.init();}if(!this.ids[C]){this.ids[C]={};}this.ids[C][D.id]=D;},removeDDFromGroup:function(E,C){if(!this.ids[C]){this.ids[C]={};}var D=this.ids[C];if(D&&D[E.id]){delete D[E.id];}},_remove:function(E){for(var D in E.groups){if(D){var C=this.ids[D];if(C&&C[E.id]){delete C[E.id];}}}delete this.handleIds[E.id];},regHandle:function(D,C){if(!this.handleIds[D]){this.handleIds[D]={};}this.handleIds[D][C]=C;},isDragDrop:function(C){return(this.getDDById(C))?true:false;},getRelated:function(H,D){var G=[];for(var F in H.groups){for(var E in this.ids[F]){var C=this.ids[F][E];if(!this.isTypeOfDD(C)){continue;}if(!D||C.isTarget){G[G.length]=C;}}}return G;},isLegalTarget:function(G,F){var D=this.getRelated(G,true);for(var E=0,C=D.length;E<C;++E){if(D[E].id==F.id){return true;}}return false;},isTypeOfDD:function(C){return(C&&C.__ygDragDrop);},isHandle:function(D,C){return(this.handleIds[D]&&this.handleIds[D][C]);},getDDById:function(D){for(var C in this.ids){if(this.ids[C][D]){return this.ids[C][D];}}return null;},handleMouseDown:function(E,D){this.currentTarget=YAHOO.util.Event.getTarget(E);this.dragCurrent=D;var C=D.getEl();this.startX=YAHOO.util.Event.getPageX(E);this.startY=YAHOO.util.Event.getPageY(E);this.deltaX=this.startX-C.offsetLeft;this.deltaY=this.startY-C.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var F=YAHOO.util.DDM;F.startDrag(F.startX,F.startY);F.fromTimeout=true;},this.clickTimeThresh);},startDrag:function(C,E){if(this.dragCurrent&&this.dragCurrent.useShim){this._shimState=this.useShim;this.useShim=true;}this._activateShim();clearTimeout(this.clickTimeout);var D=this.dragCurrent;if(D&&D.events.b4StartDrag){D.b4StartDrag(C,E);D.fireEvent("b4StartDragEvent",{x:C,y:E});}if(D&&D.events.startDrag){D.startDrag(C,E);D.fireEvent("startDragEvent",{x:C,y:E});}this.dragThreshMet=true;},handleMouseUp:function(C){if(this.dragCurrent){clearTimeout(this.clickTimeout);if(this.dragThreshMet){if(this.fromTimeout){this.fromTimeout=false;this.handleMouseMove(C);}this.fromTimeout=false;this.fireEvents(C,true);}else{}this.stopDrag(C);this.stopEvent(C);}},stopEvent:function(C){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(C);}if(this.preventDefault){YAHOO.util.Event.preventDefault(C);}},stopDrag:function(E,D){var C=this.dragCurrent;if(C&&!D){if(this.dragThreshMet){if(C.events.b4EndDrag){C.b4EndDrag(E);C.fireEvent("b4EndDragEvent",{e:E});}if(C.events.endDrag){C.endDrag(E);C.fireEvent("endDragEvent",{e:E});}}if(C.events.mouseUp){C.onMouseUp(E);C.fireEvent("mouseUpEvent",{e:E});}}if(this._shimActive){this._deactivateShim();if(this.dragCurrent&&this.dragCurrent.useShim){this.useShim=this._shimState;this._shimState=false;}}this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(F){var C=this.dragCurrent;if(C){if(YAHOO.util.Event.isIE&&!F.button){this.stopEvent(F);return this.handleMouseUp(F);}else{if(F.clientX<0||F.clientY<0){}}if(!this.dragThreshMet){var E=Math.abs(this.startX-YAHOO.util.Event.getPageX(F));var D=Math.abs(this.startY-YAHOO.util.Event.getPageY(F));if(E>this.clickPixelThresh||D>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){if(C&&C.events.b4Drag){C.b4Drag(F);C.fireEvent("b4DragEvent",{e:F});}if(C&&C.events.drag){C.onDrag(F);C.fireEvent("dragEvent",{e:F});}if(C){this.fireEvents(F,false);}}this.stopEvent(F);}},fireEvents:function(V,L){var a=this.dragCurrent;if(!a||a.isLocked()||a.dragOnly){return;}var N=YAHOO.util.Event.getPageX(V),M=YAHOO.util.Event.getPageY(V),P=new YAHOO.util.Point(N,M),K=a.getTargetCoord(P.x,P.y),F=a.getDragEl(),E=["out","over","drop","enter"],U=new YAHOO.util.Region(K.y,K.x+F.offsetWidth,K.y+F.offsetHeight,K.x),I=[],D={},Q=[],c={outEvts:[],overEvts:[],dropEvts:[],enterEvts:[]};for(var S in this.dragOvers){var d=this.dragOvers[S];if(!this.isTypeOfDD(d)){continue;
+}if(!this.isOverTarget(P,d,this.mode,U)){c.outEvts.push(d);}I[S]=true;delete this.dragOvers[S];}for(var R in a.groups){if("string"!=typeof R){continue;}for(S in this.ids[R]){var G=this.ids[R][S];if(!this.isTypeOfDD(G)){continue;}if(G.isTarget&&!G.isLocked()&&G!=a){if(this.isOverTarget(P,G,this.mode,U)){D[R]=true;if(L){c.dropEvts.push(G);}else{if(!I[G.id]){c.enterEvts.push(G);}else{c.overEvts.push(G);}this.dragOvers[G.id]=G;}}}}}this.interactionInfo={out:c.outEvts,enter:c.enterEvts,over:c.overEvts,drop:c.dropEvts,point:P,draggedRegion:U,sourceRegion:this.locationCache[a.id],validDrop:L};for(var C in D){Q.push(C);}if(L&&!c.dropEvts.length){this.interactionInfo.validDrop=false;if(a.events.invalidDrop){a.onInvalidDrop(V);a.fireEvent("invalidDropEvent",{e:V});}}for(S=0;S<E.length;S++){var Y=null;if(c[E[S]+"Evts"]){Y=c[E[S]+"Evts"];}if(Y&&Y.length){var H=E[S].charAt(0).toUpperCase()+E[S].substr(1),X="onDrag"+H,J="b4Drag"+H,O="drag"+H+"Event",W="drag"+H;if(this.mode){if(a.events[J]){a[J](V,Y,Q);a.fireEvent(J+"Event",{event:V,info:Y,group:Q});}if(a.events[W]){a[X](V,Y,Q);a.fireEvent(O,{event:V,info:Y,group:Q});}}else{for(var Z=0,T=Y.length;Z<T;++Z){if(a.events[J]){a[J](V,Y[Z].id,Q[0]);a.fireEvent(J+"Event",{event:V,info:Y[Z].id,group:Q[0]});}if(a.events[W]){a[X](V,Y[Z].id,Q[0]);a.fireEvent(O,{event:V,info:Y[Z].id,group:Q[0]});}}}}}},getBestMatch:function(E){var G=null;var D=E.length;if(D==1){G=E[0];}else{for(var F=0;F<D;++F){var C=E[F];if(this.mode==this.INTERSECT&&C.cursorIsOver){G=C;break;}else{if(!G||!G.overlap||(C.overlap&&G.overlap.getArea()<C.overlap.getArea())){G=C;}}}}return G;},refreshCache:function(D){var F=D||this.ids;for(var C in F){if("string"!=typeof C){continue;}for(var E in this.ids[C]){var G=this.ids[C][E];if(this.isTypeOfDD(G)){var H=this.getLocation(G);if(H){this.locationCache[G.id]=H;}else{delete this.locationCache[G.id];}}}}},verifyEl:function(D){try{if(D){var C=D.offsetParent;if(C){return true;}}}catch(E){}return false;},getLocation:function(H){if(!this.isTypeOfDD(H)){return null;}var F=H.getEl(),K,E,D,M,L,N,C,J,G;try{K=YAHOO.util.Dom.getXY(F);}catch(I){}if(!K){return null;}E=K[0];D=E+F.offsetWidth;M=K[1];L=M+F.offsetHeight;N=M-H.padding[0];C=D+H.padding[1];J=L+H.padding[2];G=E-H.padding[3];return new YAHOO.util.Region(N,C,J,G);},isOverTarget:function(K,C,E,F){var G=this.locationCache[C.id];if(!G||!this.useCache){G=this.getLocation(C);this.locationCache[C.id]=G;}if(!G){return false;}C.cursorIsOver=G.contains(K);var J=this.dragCurrent;if(!J||(!E&&!J.constrainX&&!J.constrainY)){return C.cursorIsOver;}C.overlap=null;if(!F){var H=J.getTargetCoord(K.x,K.y);var D=J.getDragEl();F=new YAHOO.util.Region(H.y,H.x+D.offsetWidth,H.y+D.offsetHeight,H.x);}var I=F.intersect(G);if(I){C.overlap=I;return(E)?true:C.cursorIsOver;}else{return false;}},_onUnload:function(D,C){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);this.ids={};},elementCache:{},getElWrapper:function(D){var C=this.elementCache[D];if(!C||!C.el){C=this.elementCache[D]=new this.ElementWrapper(YAHOO.util.Dom.get(D));}return C;},getElement:function(C){return YAHOO.util.Dom.get(C);},getCss:function(D){var C=YAHOO.util.Dom.get(D);return(C)?C.style:null;},ElementWrapper:function(C){this.el=C||null;this.id=this.el&&C.id;this.css=this.el&&C.style;},getPosX:function(C){return YAHOO.util.Dom.getX(C);},getPosY:function(C){return YAHOO.util.Dom.getY(C);},swapNode:function(E,C){if(E.swapNode){E.swapNode(C);}else{var F=C.parentNode;var D=C.nextSibling;if(D==E){F.insertBefore(E,C);}else{if(C==E.nextSibling){F.insertBefore(C,E);}else{E.parentNode.replaceChild(C,E);F.insertBefore(E,D);}}}},getScroll:function(){var E,C,F=document.documentElement,D=document.body;if(F&&(F.scrollTop||F.scrollLeft)){E=F.scrollTop;C=F.scrollLeft;}else{if(D){E=D.scrollTop;C=D.scrollLeft;}else{}}return{top:E,left:C};},getStyle:function(D,C){return YAHOO.util.Dom.getStyle(D,C);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(C,E){var D=YAHOO.util.Dom.getXY(E);YAHOO.util.Dom.setXY(C,D);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(D,C){return(D-C);},_timeoutCount:0,_addListeners:function(){var C=YAHOO.util.DDM;if(YAHOO.util.Event&&document){C._onLoad();}else{if(C._timeoutCount>2000){}else{setTimeout(C._addListeners,10);if(document&&document.body){C._timeoutCount+=1;}}}},handleWasClicked:function(C,E){if(this.isHandle(E,C.id)){return true;}else{var D=C.parentNode;while(D){if(this.isHandle(E,D.id)){return true;}else{D=D.parentNode;}}}return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}(function(){var A=YAHOO.util.Event;var B=YAHOO.util.Dom;YAHOO.util.DragDrop=function(E,C,D){if(E){this.init(E,C,D);}};YAHOO.util.DragDrop.prototype={events:null,on:function(){this.subscribe.apply(this,arguments);},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,dragOnly:false,useShim:false,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,deltaX:0,deltaY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,cursorIsOver:false,overlap:null,b4StartDrag:function(C,D){},startDrag:function(C,D){},b4Drag:function(C){},onDrag:function(C){},onDragEnter:function(C,D){},b4DragOver:function(C){},onDragOver:function(C,D){},b4DragOut:function(C){},onDragOut:function(C,D){},b4DragDrop:function(C){},onDragDrop:function(C,D){},onInvalidDrop:function(C){},b4EndDrag:function(C){},endDrag:function(C){},b4MouseDown:function(C){},onMouseDown:function(C){},onMouseUp:function(C){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=B.get(this.id);
+}return this._domRef;},getDragEl:function(){return B.get(this.dragElId);},init:function(F,C,D){this.initTarget(F,C,D);A.on(this._domRef||this.id,"mousedown",this.handleMouseDown,this,true);for(var E in this.events){this.createEvent(E+"Event");}},initTarget:function(E,C,D){this.config=D||{};this.events={};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof E!=="string"){this._domRef=E;E=B.generateId(E);}this.id=E;this.addToGroup((C)?C:"default");this.handleElId=E;A.onAvailable(E,this.handleOnAvailable,this,true);this.setDragElId(E);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.events={mouseDown:true,b4MouseDown:true,mouseUp:true,b4StartDrag:true,startDrag:true,b4EndDrag:true,endDrag:true,drag:true,b4Drag:true,invalidDrop:true,b4DragOut:true,dragOut:true,dragEnter:true,b4DragOver:true,dragOver:true,b4DragDrop:true,dragDrop:true};if(this.config.events){for(var C in this.config.events){if(this.config.events[C]===false){this.events[C]=false;}}}this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);this.dragOnly=((this.config.dragOnly===true)?true:false);this.useShim=((this.config.useShim===true)?true:false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(E,C,F,D){if(!C&&0!==C){this.padding=[E,E,E,E];}else{if(!F&&0!==F){this.padding=[E,C,E,C];}else{this.padding=[E,C,F,D];}}},setInitPosition:function(F,E){var G=this.getEl();if(!this.DDM.verifyEl(G)){if(G&&G.style&&(G.style.display=="none")){}else{}return;}var D=F||0;var C=E||0;var H=B.getXY(G);this.initPageX=H[0]-D;this.initPageY=H[1]-C;this.lastPageX=H[0];this.lastPageY=H[1];this.setStartPosition(H);},setStartPosition:function(D){var C=D||B.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=C[0];this.startPageY=C[1];},addToGroup:function(C){this.groups[C]=true;this.DDM.regDragDrop(this,C);},removeFromGroup:function(C){if(this.groups[C]){delete this.groups[C];}this.DDM.removeDDFromGroup(this,C);},setDragElId:function(C){this.dragElId=C;},setHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.handleElId=C;this.DDM.regHandle(this.id,C);},setOuterHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}A.on(C,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(C);this.hasOuterHandles=true;},unreg:function(){A.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return(this.DDM.isLocked()||this.locked);},handleMouseDown:function(J,I){var D=J.which||J.button;if(this.primaryButtonOnly&&D>1){return;}if(this.isLocked()){return;}var C=this.b4MouseDown(J),F=true;if(this.events.b4MouseDown){F=this.fireEvent("b4MouseDownEvent",J);}var E=this.onMouseDown(J),H=true;if(this.events.mouseDown){H=this.fireEvent("mouseDownEvent",J);}if((C===false)||(E===false)||(F===false)||(H===false)){return;}this.DDM.refreshCache(this.groups);var G=new YAHOO.util.Point(A.getPageX(J),A.getPageY(J));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(G,this)){}else{if(this.clickValidator(J)){this.setStartPosition();this.DDM.handleMouseDown(J,this);this.DDM.stopEvent(J);}else{}}},clickValidator:function(D){var C=YAHOO.util.Event.getTarget(D);return(this.isValidHandleChild(C)&&(this.id==this.handleElId||this.DDM.handleWasClicked(C,this.id)));},getTargetCoord:function(E,D){var C=E-this.deltaX;var F=D-this.deltaY;if(this.constrainX){if(C<this.minX){C=this.minX;}if(C>this.maxX){C=this.maxX;}}if(this.constrainY){if(F<this.minY){F=this.minY;}if(F>this.maxY){F=this.maxY;}}C=this.getTick(C,this.xTicks);F=this.getTick(F,this.yTicks);return{x:C,y:F};},addInvalidHandleType:function(C){var D=C.toUpperCase();this.invalidHandleTypes[D]=D;},addInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.invalidHandleIds[C]=C;},addInvalidHandleClass:function(C){this.invalidHandleClasses.push(C);},removeInvalidHandleType:function(C){var D=C.toUpperCase();delete this.invalidHandleTypes[D];},removeInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}delete this.invalidHandleIds[C];},removeInvalidHandleClass:function(D){for(var E=0,C=this.invalidHandleClasses.length;E<C;++E){if(this.invalidHandleClasses[E]==D){delete this.invalidHandleClasses[E];}}},isValidHandleChild:function(F){var E=true;var H;try{H=F.nodeName.toUpperCase();}catch(G){H=F.nodeName;}E=E&&!this.invalidHandleTypes[H];E=E&&!this.invalidHandleIds[F.id];for(var D=0,C=this.invalidHandleClasses.length;E&&D<C;++D){E=!B.hasClass(F,this.invalidHandleClasses[D]);}return E;},setXTicks:function(F,C){this.xTicks=[];this.xTickSize=C;var E={};for(var D=this.initPageX;D>=this.minX;D=D-C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}for(D=this.initPageX;D<=this.maxX;D=D+C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(F,C){this.yTicks=[];this.yTickSize=C;var E={};for(var D=this.initPageY;D>=this.minY;D=D-C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}for(D=this.initPageY;D<=this.maxY;D=D+C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(E,D,C){this.leftConstraint=parseInt(E,10);this.rightConstraint=parseInt(D,10);this.minX=this.initPageX-this.leftConstraint;this.maxX=this.initPageX+this.rightConstraint;if(C){this.setXTicks(this.initPageX,C);}this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(C,E,D){this.topConstraint=parseInt(C,10);this.bottomConstraint=parseInt(E,10);this.minY=this.initPageY-this.topConstraint;this.maxY=this.initPageY+this.bottomConstraint;if(D){this.setYTicks(this.initPageY,D);
+}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var D=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var C=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(D,C);}else{this.setInitPosition();}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(I,F){if(!F){return I;}else{if(F[0]>=I){return F[0];}else{for(var D=0,C=F.length;D<C;++D){var E=D+1;if(F[E]&&F[E]>=I){var H=I-F[D];var G=F[E]-I;return(G>H)?F[D]:F[E];}}return F[F.length-1];}}},toString:function(){return("DragDrop "+this.id);}};YAHOO.augment(YAHOO.util.DragDrop,YAHOO.util.EventProvider);})();YAHOO.util.DD=function(C,A,B){if(C){this.init(C,A,B);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(C,B){var A=C-this.startPageX;var D=B-this.startPageY;this.setDelta(A,D);},setDelta:function(B,A){this.deltaX=B;this.deltaY=A;},setDragElPos:function(C,B){var A=this.getDragEl();this.alignElWithMouse(A,C,B);},alignElWithMouse:function(C,G,F){var E=this.getTargetCoord(G,F);if(!this.deltaSetXY){var H=[E.x,E.y];YAHOO.util.Dom.setXY(C,H);var D=parseInt(YAHOO.util.Dom.getStyle(C,"left"),10);var B=parseInt(YAHOO.util.Dom.getStyle(C,"top"),10);this.deltaSetXY=[D-E.x,B-E.y];}else{YAHOO.util.Dom.setStyle(C,"left",(E.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(C,"top",(E.y+this.deltaSetXY[1])+"px");}this.cachePosition(E.x,E.y);var A=this;setTimeout(function(){A.autoScroll.call(A,E.x,E.y,C.offsetHeight,C.offsetWidth);},0);},cachePosition:function(B,A){if(B){this.lastPageX=B;this.lastPageY=A;}else{var C=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=C[0];this.lastPageY=C[1];}},autoScroll:function(J,I,E,K){if(this.scroll){var L=this.DDM.getClientHeight();var B=this.DDM.getClientWidth();var N=this.DDM.getScrollTop();var D=this.DDM.getScrollLeft();var H=E+I;var M=K+J;var G=(L+N-I-this.deltaY);var F=(B+D-J-this.deltaX);var C=40;var A=(document.all)?80:30;if(H>L&&G<C){window.scrollTo(D,N+A);}if(I<N&&N>0&&I-N<C){window.scrollTo(D,N-A);}if(M>B&&F<C){window.scrollTo(D+A,N);}if(J<D&&D>0&&J-D<C){window.scrollTo(D-A,N);}}},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(A){this.setStartPosition();this.autoOffset(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},b4Drag:function(A){this.setDragElPos(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},toString:function(){return("DD "+this.id);}});YAHOO.util.DDProxy=function(C,A,B){if(C){this.init(C,A,B);this.initFrame();}};YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var B=this,A=document.body;if(!A||!A.firstChild){setTimeout(function(){B.createFrame();},50);return;}var F=this.getDragEl(),E=YAHOO.util.Dom;if(!F){F=document.createElement("div");F.id=this.dragElId;var D=F.style;D.position="absolute";D.visibility="hidden";D.cursor="move";D.border="2px solid #aaa";D.zIndex=999;D.height="25px";D.width="25px";var C=document.createElement("div");E.setStyle(C,"height","100%");E.setStyle(C,"width","100%");E.setStyle(C,"background-color","#ccc");E.setStyle(C,"opacity","0");F.appendChild(C);A.insertBefore(F,A.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:function(E,D){var C=this.getEl();var A=this.getDragEl();var B=A.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2));}this.setDragElPos(E,D);YAHOO.util.Dom.setStyle(A,"visibility","visible");},_resizeProxy:function(){if(this.resizeFrame){var H=YAHOO.util.Dom;var B=this.getEl();var C=this.getDragEl();var G=parseInt(H.getStyle(C,"borderTopWidth"),10);var I=parseInt(H.getStyle(C,"borderRightWidth"),10);var F=parseInt(H.getStyle(C,"borderBottomWidth"),10);var D=parseInt(H.getStyle(C,"borderLeftWidth"),10);if(isNaN(G)){G=0;}if(isNaN(I)){I=0;}if(isNaN(F)){F=0;}if(isNaN(D)){D=0;}var E=Math.max(0,B.offsetWidth-I-D);var A=Math.max(0,B.offsetHeight-G-F);H.setStyle(C,"width",E+"px");H.setStyle(C,"height",A+"px");}},b4MouseDown:function(B){this.setStartPosition();var A=YAHOO.util.Event.getPageX(B);var C=YAHOO.util.Event.getPageY(B);this.autoOffset(A,C);},b4StartDrag:function(A,B){this.showFrame(A,B);},b4EndDrag:function(A){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endDrag:function(D){var C=YAHOO.util.Dom;var B=this.getEl();var A=this.getDragEl();C.setStyle(A,"visibility","");C.setStyle(B,"visibility","hidden");YAHOO.util.DDM.moveToEl(B,A);C.setStyle(A,"visibility","hidden");C.setStyle(B,"visibility","");},toString:function(){return("DDProxy "+this.id);}});YAHOO.util.DDTarget=function(C,A,B){if(C){this.initTarget(C,A,B);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){return("DDTarget "+this.id);}});YAHOO.register("dragdrop",YAHOO.util.DragDropMgr,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+(function(){var B=YAHOO.util.Dom.getXY,A=YAHOO.util.Event,D=Array.prototype.slice;function C(G,E,F,H){C.ANIM_AVAIL=(!YAHOO.lang.isUndefined(YAHOO.util.Anim));if(G){this.init(G,E,true);this.initSlider(H);this.initThumb(F);}}YAHOO.lang.augmentObject(C,{getHorizSlider:function(F,G,I,H,E){return new C(F,F,new YAHOO.widget.SliderThumb(G,F,I,H,0,0,E),"horiz");},getVertSlider:function(G,H,E,I,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,0,0,E,I,F),"vert");},getSliderRegion:function(G,H,J,I,E,K,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,J,I,E,K,F),"region");},SOURCE_UI_EVENT:1,SOURCE_SET_VALUE:2,SOURCE_KEY_EVENT:3,ANIM_AVAIL:false},true);YAHOO.extend(C,YAHOO.util.DragDrop,{_mouseDown:false,dragOnly:true,initSlider:function(E){this.type=E;this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);this.isTarget=false;this.animate=C.ANIM_AVAIL;this.backgroundEnabled=true;this.tickPause=40;this.enableKeys=true;this.keyIncrement=20;this.moveComplete=true;this.animationDuration=0.2;this.SOURCE_UI_EVENT=1;this.SOURCE_SET_VALUE=2;this.valueChangeSource=0;this._silent=false;this.lastOffset=[0,0];},initThumb:function(F){var E=this;this.thumb=F;F.cacheBetweenDrags=true;if(F._isHoriz&&F.xTicks&&F.xTicks.length){this.tickPause=Math.round(360/F.xTicks.length);}else{if(F.yTicks&&F.yTicks.length){this.tickPause=Math.round(360/F.yTicks.length);}}F.onAvailable=function(){return E.setStartSliderState();};F.onMouseDown=function(){E._mouseDown=true;return E.focus();};F.startDrag=function(){E._slideStart();};F.onDrag=function(){E.fireEvents(true);};F.onMouseUp=function(){E.thumbMouseUp();};},onAvailable:function(){this._bindKeyEvents();},_bindKeyEvents:function(){A.on(this.id,"keydown",this.handleKeyDown,this,true);A.on(this.id,"keypress",this.handleKeyPress,this,true);},handleKeyPress:function(F){if(this.enableKeys){var E=A.getCharCode(F);switch(E){case 37:case 38:case 39:case 40:case 36:case 35:A.preventDefault(F);break;default:}}},handleKeyDown:function(J){if(this.enableKeys){var G=A.getCharCode(J),F=this.thumb,H=this.getXValue(),E=this.getYValue(),I=true;switch(G){case 37:H-=this.keyIncrement;break;case 38:E-=this.keyIncrement;break;case 39:H+=this.keyIncrement;break;case 40:E+=this.keyIncrement;break;case 36:H=F.leftConstraint;E=F.topConstraint;break;case 35:H=F.rightConstraint;E=F.bottomConstraint;break;default:I=false;}if(I){if(F._isRegion){this._setRegionValue(C.SOURCE_KEY_EVENT,H,E,true);}else{this._setValue(C.SOURCE_KEY_EVENT,(F._isHoriz?H:E),true);}A.stopEvent(J);}}},setStartSliderState:function(){this.setThumbCenterPoint();this.baselinePos=B(this.getEl());this.thumb.startOffset=this.thumb.getOffsetFromParent(this.baselinePos);if(this.thumb._isRegion){if(this.deferredSetRegionValue){this._setRegionValue.apply(this,this.deferredSetRegionValue);this.deferredSetRegionValue=null;}else{this.setRegionValue(0,0,true,true,true);}}else{if(this.deferredSetValue){this._setValue.apply(this,this.deferredSetValue);this.deferredSetValue=null;}else{this.setValue(0,true,true,true);}}},setThumbCenterPoint:function(){var E=this.thumb.getEl();if(E){this.thumbCenterPoint={x:parseInt(E.offsetWidth/2,10),y:parseInt(E.offsetHeight/2,10)};}},lock:function(){this.thumb.lock();this.locked=true;},unlock:function(){this.thumb.unlock();this.locked=false;},thumbMouseUp:function(){this._mouseDown=false;if(!this.isLocked()&&!this.moveComplete){this.endMove();}},onMouseUp:function(){this._mouseDown=false;if(this.backgroundEnabled&&!this.isLocked()&&!this.moveComplete){this.endMove();}},getThumb:function(){return this.thumb;},focus:function(){this.valueChangeSource=C.SOURCE_UI_EVENT;var E=this.getEl();if(E.focus){try{E.focus();}catch(F){}}this.verifyOffset();return !this.isLocked();},onChange:function(E,F){},onSlideStart:function(){},onSlideEnd:function(){},getValue:function(){return this.thumb.getValue();},getXValue:function(){return this.thumb.getXValue();},getYValue:function(){return this.thumb.getYValue();},setValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setValue.apply(this,E);},_setValue:function(I,L,G,H,E){var F=this.thumb,K,J;if(!F.available){this.deferredSetValue=arguments;return false;}if(this.isLocked()&&!H){return false;}if(isNaN(L)){return false;}if(F._isRegion){return false;}this._silent=E;this.valueChangeSource=I||C.SOURCE_SET_VALUE;F.lastOffset=[L,L];this.verifyOffset(true);this._slideStart();if(F._isHoriz){K=F.initPageX+L+this.thumbCenterPoint.x;this.moveThumb(K,F.initPageY,G);}else{J=F.initPageY+L+this.thumbCenterPoint.y;this.moveThumb(F.initPageX,J,G);}return true;},setRegionValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setRegionValue.apply(this,E);},_setRegionValue:function(F,J,H,I,G,K){var L=this.thumb,E,M;if(!L.available){this.deferredSetRegionValue=arguments;return false;}if(this.isLocked()&&!G){return false;}if(isNaN(J)){return false;}if(!L._isRegion){return false;}this._silent=K;this.valueChangeSource=F||C.SOURCE_SET_VALUE;L.lastOffset=[J,H];this.verifyOffset(true);this._slideStart();E=L.initPageX+J+this.thumbCenterPoint.x;M=L.initPageY+H+this.thumbCenterPoint.y;this.moveThumb(E,M,I);return true;},verifyOffset:function(F){var G=B(this.getEl()),E=this.thumb;if(!this.thumbCenterPoint||!this.thumbCenterPoint.x){this.setThumbCenterPoint();}if(G){if(G[0]!=this.baselinePos[0]||G[1]!=this.baselinePos[1]){this.setInitPosition();this.baselinePos=G;E.initPageX=this.initPageX+E.startOffset[0];E.initPageY=this.initPageY+E.startOffset[1];E.deltaSetXY=null;this.resetThumbConstraints();return false;}}return true;},moveThumb:function(K,J,I,G){var L=this.thumb,M=this,F,E,H;if(!L.available){return;}L.setDelta(this.thumbCenterPoint.x,this.thumbCenterPoint.y);E=L.getTargetCoord(K,J);F=[Math.round(E.x),Math.round(E.y)];if(this.animate&&L._graduated&&!I){this.lock();this.curCoord=B(this.thumb.getEl());this.curCoord=[Math.round(this.curCoord[0]),Math.round(this.curCoord[1])];setTimeout(function(){M.moveOneTick(F);
+},this.tickPause);}else{if(this.animate&&C.ANIM_AVAIL&&!I){this.lock();H=new YAHOO.util.Motion(L.id,{points:{to:F}},this.animationDuration,YAHOO.util.Easing.easeOut);H.onComplete.subscribe(function(){M.unlock();if(!M._mouseDown){M.endMove();}});H.animate();}else{L.setDragElPos(K,J);if(!G&&!this._mouseDown){this.endMove();}}}},_slideStart:function(){if(!this._sliding){if(!this._silent){this.onSlideStart();this.fireEvent("slideStart");}this._sliding=true;}},_slideEnd:function(){if(this._sliding&&this.moveComplete){var E=this._silent;this._sliding=false;this._silent=false;this.moveComplete=false;if(!E){this.onSlideEnd();this.fireEvent("slideEnd");}}},moveOneTick:function(F){var H=this.thumb,G=this,I=null,E,J;if(H._isRegion){I=this._getNextX(this.curCoord,F);E=(I!==null)?I[0]:this.curCoord[0];I=this._getNextY(this.curCoord,F);J=(I!==null)?I[1]:this.curCoord[1];I=E!==this.curCoord[0]||J!==this.curCoord[1]?[E,J]:null;}else{if(H._isHoriz){I=this._getNextX(this.curCoord,F);}else{I=this._getNextY(this.curCoord,F);}}if(I){this.curCoord=I;this.thumb.alignElWithMouse(H.getEl(),I[0]+this.thumbCenterPoint.x,I[1]+this.thumbCenterPoint.y);if(!(I[0]==F[0]&&I[1]==F[1])){setTimeout(function(){G.moveOneTick(F);},this.tickPause);}else{this.unlock();if(!this._mouseDown){this.endMove();}}}else{this.unlock();if(!this._mouseDown){this.endMove();}}},_getNextX:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[0]>F[0]){J=H.tickSize-this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]-J,E[1]);I=[G.x,G.y];}else{if(E[0]<F[0]){J=H.tickSize+this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]+J,E[1]);I=[G.x,G.y];}else{}}return I;},_getNextY:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[1]>F[1]){J=H.tickSize-this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]-J);I=[G.x,G.y];}else{if(E[1]<F[1]){J=H.tickSize+this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]+J);I=[G.x,G.y];}else{}}return I;},b4MouseDown:function(E){if(!this.backgroundEnabled){return false;}this.thumb.autoOffset();this.resetThumbConstraints();},onMouseDown:function(F){if(!this.backgroundEnabled||this.isLocked()){return false;}this._mouseDown=true;var E=A.getPageX(F),G=A.getPageY(F);this.focus();this._slideStart();this.moveThumb(E,G);},onDrag:function(F){if(this.backgroundEnabled&&!this.isLocked()){var E=A.getPageX(F),G=A.getPageY(F);this.moveThumb(E,G,true,true);this.fireEvents();}},endMove:function(){this.unlock();this.fireEvents();this.moveComplete=true;this._slideEnd();},resetThumbConstraints:function(){var E=this.thumb;E.setXConstraint(E.leftConstraint,E.rightConstraint,E.xTickSize);E.setYConstraint(E.topConstraint,E.bottomConstraint,E.xTickSize);},fireEvents:function(G){var F=this.thumb,I,H,E;if(!G){F.cachePosition();}if(!this.isLocked()){if(F._isRegion){I=F.getXValue();H=F.getYValue();if(I!=this.previousX||H!=this.previousY){if(!this._silent){this.onChange(I,H);this.fireEvent("change",{x:I,y:H});}}this.previousX=I;this.previousY=H;}else{E=F.getValue();if(E!=this.previousVal){if(!this._silent){this.onChange(E);this.fireEvent("change",E);}}this.previousVal=E;}}},toString:function(){return("Slider ("+this.type+") "+this.id);}});YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);YAHOO.widget.Slider=C;})();YAHOO.widget.SliderThumb=function(G,B,E,D,A,F,C){if(G){YAHOO.widget.SliderThumb.superclass.constructor.call(this,G,B);this.parentElId=B;}this.isTarget=false;this.tickSize=C;this.maintainOffset=true;this.initSlider(E,D,A,F,C);this.scroll=false;};YAHOO.extend(YAHOO.widget.SliderThumb,YAHOO.util.DD,{startOffset:null,dragOnly:true,_isHoriz:false,_prevVal:0,_graduated:false,getOffsetFromParent0:function(C){var A=YAHOO.util.Dom.getXY(this.getEl()),B=C||YAHOO.util.Dom.getXY(this.parentElId);return[(A[0]-B[0]),(A[1]-B[1])];},getOffsetFromParent:function(H){var A=this.getEl(),E,I,F,B,K,D,C,J,G;if(!this.deltaOffset){I=YAHOO.util.Dom.getXY(A);F=H||YAHOO.util.Dom.getXY(this.parentElId);E=[(I[0]-F[0]),(I[1]-F[1])];B=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);K=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);D=B-E[0];C=K-E[1];if(isNaN(D)||isNaN(C)){}else{this.deltaOffset=[D,C];}}else{J=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);G=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);E=[J+this.deltaOffset[0],G+this.deltaOffset[1]];}return E;},initSlider:function(D,C,A,E,B){this.initLeft=D;this.initRight=C;this.initUp=A;this.initDown=E;this.setXConstraint(D,C,B);this.setYConstraint(A,E,B);if(B&&B>1){this._graduated=true;}this._isHoriz=(D||C);this._isVert=(A||E);this._isRegion=(this._isHoriz&&this._isVert);},clearTicks:function(){YAHOO.widget.SliderThumb.superclass.clearTicks.call(this);this.tickSize=0;this._graduated=false;},getValue:function(){return(this._isHoriz)?this.getXValue():this.getYValue();},getXValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[0])){this.lastOffset=A;return(A[0]-this.startOffset[0]);}else{return(this.lastOffset[0]-this.startOffset[0]);}},getYValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[1])){this.lastOffset=A;return(A[1]-this.startOffset[1]);}else{return(this.lastOffset[1]-this.startOffset[1]);}},toString:function(){return"SliderThumb "+this.id;},onChange:function(A,B){}});(function(){var A=YAHOO.util.Event,B=YAHOO.widget;function C(I,F,H,D){var G=this,J={min:false,max:false},E,K;this.minSlider=I;this.maxSlider=F;this.activeSlider=I;this.isHoriz=I.thumb._isHoriz;E=this.minSlider.thumb.onMouseDown;K=this.maxSlider.thumb.onMouseDown;this.minSlider.thumb.onMouseDown=function(){G.activeSlider=G.minSlider;E.apply(this,arguments);};this.maxSlider.thumb.onMouseDown=function(){G.activeSlider=G.maxSlider;K.apply(this,arguments);};this.minSlider.thumb.onAvailable=function(){I.setStartSliderState();J.min=true;if(J.max){G.fireEvent("ready",G);}};this.maxSlider.thumb.onAvailable=function(){F.setStartSliderState();J.max=true;if(J.min){G.fireEvent("ready",G);}};I.onMouseDown=F.onMouseDown=function(L){return this.backgroundEnabled&&G._handleMouseDown(L);
+};I.onDrag=F.onDrag=function(L){G._handleDrag(L);};I.onMouseUp=F.onMouseUp=function(L){G._handleMouseUp(L);};I._bindKeyEvents=function(){G._bindKeyEvents(this);};F._bindKeyEvents=function(){};I.subscribe("change",this._handleMinChange,I,this);I.subscribe("slideStart",this._handleSlideStart,I,this);I.subscribe("slideEnd",this._handleSlideEnd,I,this);F.subscribe("change",this._handleMaxChange,F,this);F.subscribe("slideStart",this._handleSlideStart,F,this);F.subscribe("slideEnd",this._handleSlideEnd,F,this);this.createEvent("ready",this);this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);D=YAHOO.lang.isArray(D)?D:[0,H];D[0]=Math.min(Math.max(parseInt(D[0],10)|0,0),H);D[1]=Math.max(Math.min(parseInt(D[1],10)|0,H),0);if(D[0]>D[1]){D.splice(0,2,D[1],D[0]);}this.minVal=D[0];this.maxVal=D[1];this.minSlider.setValue(this.minVal,true,true,true);this.maxSlider.setValue(this.maxVal,true,true,true);}C.prototype={minVal:-1,maxVal:-1,minRange:0,_handleSlideStart:function(E,D){this.fireEvent("slideStart",D);},_handleSlideEnd:function(E,D){this.fireEvent("slideEnd",D);},_handleDrag:function(D){B.Slider.prototype.onDrag.call(this.activeSlider,D);},_handleMinChange:function(){this.activeSlider=this.minSlider;this.updateValue();},_handleMaxChange:function(){this.activeSlider=this.maxSlider;this.updateValue();},_bindKeyEvents:function(D){A.on(D.id,"keydown",this._handleKeyDown,this,true);A.on(D.id,"keypress",this._handleKeyPress,this,true);},_handleKeyDown:function(D){this.activeSlider.handleKeyDown.apply(this.activeSlider,arguments);},_handleKeyPress:function(D){this.activeSlider.handleKeyPress.apply(this.activeSlider,arguments);},setValues:function(H,K,I,E,J){var F=this.minSlider,M=this.maxSlider,D=F.thumb,L=M.thumb,N=this,G={min:false,max:false};if(D._isHoriz){D.setXConstraint(D.leftConstraint,L.rightConstraint,D.tickSize);L.setXConstraint(D.leftConstraint,L.rightConstraint,L.tickSize);}else{D.setYConstraint(D.topConstraint,L.bottomConstraint,D.tickSize);L.setYConstraint(D.topConstraint,L.bottomConstraint,L.tickSize);}this._oneTimeCallback(F,"slideEnd",function(){G.min=true;if(G.max){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});this._oneTimeCallback(M,"slideEnd",function(){G.max=true;if(G.min){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});F.setValue(H,I,E,false);M.setValue(K,I,E,false);},setMinValue:function(F,H,I,E){var G=this.minSlider,D=this;this.activeSlider=G;D=this;this._oneTimeCallback(G,"slideEnd",function(){D.updateValue(E);setTimeout(function(){D._cleanEvent(G,"slideEnd");},0);});G.setValue(F,H,I);},setMaxValue:function(D,H,I,F){var G=this.maxSlider,E=this;this.activeSlider=G;this._oneTimeCallback(G,"slideEnd",function(){E.updateValue(F);setTimeout(function(){E._cleanEvent(G,"slideEnd");},0);});G.setValue(D,H,I);},updateValue:function(J){var E=this.minSlider.getValue(),K=this.maxSlider.getValue(),F=false,D,M,H,I,L,G;if(E!=this.minVal||K!=this.maxVal){F=true;D=this.minSlider.thumb;M=this.maxSlider.thumb;H=this.isHoriz?"x":"y";G=this.minSlider.thumbCenterPoint[H]+this.maxSlider.thumbCenterPoint[H];I=Math.max(K-G-this.minRange,0);L=Math.min(-E-G-this.minRange,0);if(this.isHoriz){I=Math.min(I,M.rightConstraint);D.setXConstraint(D.leftConstraint,I,D.tickSize);M.setXConstraint(L,M.rightConstraint,M.tickSize);}else{I=Math.min(I,M.bottomConstraint);D.setYConstraint(D.leftConstraint,I,D.tickSize);M.setYConstraint(L,M.bottomConstraint,M.tickSize);}}this.minVal=E;this.maxVal=K;if(F&&!J){this.fireEvent("change",this);}},selectActiveSlider:function(H){var E=this.minSlider,D=this.maxSlider,J=E.isLocked()||!E.backgroundEnabled,G=D.isLocked()||!E.backgroundEnabled,F=YAHOO.util.Event,I;if(J||G){this.activeSlider=J?D:E;}else{if(this.isHoriz){I=F.getPageX(H)-E.thumb.initPageX-E.thumbCenterPoint.x;}else{I=F.getPageY(H)-E.thumb.initPageY-E.thumbCenterPoint.y;}this.activeSlider=I*2>D.getValue()+E.getValue()?D:E;}},_handleMouseDown:function(D){if(!D._handled){D._handled=true;this.selectActiveSlider(D);return B.Slider.prototype.onMouseDown.call(this.activeSlider,D);}else{return false;}},_handleMouseUp:function(D){B.Slider.prototype.onMouseUp.apply(this.activeSlider,arguments);},_oneTimeCallback:function(F,D,E){F.subscribe(D,function(){F.unsubscribe(D,arguments.callee);E.apply({},[].slice.apply(arguments));});},_cleanEvent:function(K,E){var J,I,D,G,H,F;if(K.__yui_events&&K.events[E]){for(I=K.__yui_events.length;I>=0;--I){if(K.__yui_events[I].type===E){J=K.__yui_events[I];break;}}if(J){H=J.subscribers;F=[];G=0;for(I=0,D=H.length;I<D;++I){if(H[I]){F[G++]=H[I];}}J.subscribers=F;}}}};YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);B.Slider.getHorizDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,G,0,0,F),E=new B.SliderThumb(K,H,0,G,0,0,F);return new C(new B.Slider(H,H,I,"horiz"),new B.Slider(H,H,E,"horiz"),G,D);};B.Slider.getVertDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,0,0,G,F),E=new B.SliderThumb(K,H,0,0,0,G,F);return new B.DualSlider(new B.Slider(H,H,I,"vert"),new B.Slider(H,H,E,"vert"),G,D);};YAHOO.widget.DualSlider=C;})();YAHOO.register("slider",YAHOO.widget.Slider,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+YAHOO.util.Attribute=function(B,A){if(A){this.owner=A;this.configure(B,true);}};YAHOO.util.Attribute.prototype={name:undefined,value:null,owner:null,readOnly:false,writeOnce:false,_initialConfig:null,_written:false,method:null,setter:null,getter:null,validator:null,getValue:function(){var A=this.value;if(this.getter){A=this.getter.call(this.owner,this.name);}return A;},setValue:function(F,B){var E,A=this.owner,C=this.name;var D={type:C,prevValue:this.getValue(),newValue:F};if(this.readOnly||(this.writeOnce&&this._written)){return false;}if(this.validator&&!this.validator.call(A,F)){return false;}if(!B){E=A.fireBeforeChangeEvent(D);if(E===false){return false;}}if(this.setter){F=this.setter.call(A,F,this.name);if(F===undefined){}}if(this.method){this.method.call(A,F,this.name);}this.value=F;this._written=true;D.type=C;if(!B){this.owner.fireChangeEvent(D);}return true;},configure:function(B,C){B=B||{};if(C){this._written=false;}this._initialConfig=this._initialConfig||{};for(var A in B){if(B.hasOwnProperty(A)){this[A]=B[A];if(C){this._initialConfig[A]=B[A];}}}},resetValue:function(){return this.setValue(this._initialConfig.value);},resetConfig:function(){this.configure(this._initialConfig,true);},refresh:function(A){this.setValue(this.value,A);}};(function(){var A=YAHOO.util.Lang;YAHOO.util.AttributeProvider=function(){};YAHOO.util.AttributeProvider.prototype={_configs:null,get:function(C){this._configs=this._configs||{};var B=this._configs[C];if(!B||!this._configs.hasOwnProperty(C)){return null;}return B.getValue();},set:function(D,E,B){this._configs=this._configs||{};var C=this._configs[D];if(!C){return false;}return C.setValue(E,B);},getAttributeKeys:function(){this._configs=this._configs;var C=[],B;for(B in this._configs){if(A.hasOwnProperty(this._configs,B)&&!A.isUndefined(this._configs[B])){C[C.length]=B;}}return C;},setAttributes:function(D,B){for(var C in D){if(A.hasOwnProperty(D,C)){this.set(C,D[C],B);}}},resetValue:function(C,B){this._configs=this._configs||{};if(this._configs[C]){this.set(C,this._configs[C]._initialConfig.value,B);return true;}return false;},refresh:function(E,C){this._configs=this._configs||{};var F=this._configs;E=((A.isString(E))?[E]:E)||this.getAttributeKeys();for(var D=0,B=E.length;D<B;++D){if(F.hasOwnProperty(E[D])){this._configs[E[D]].refresh(C);}}},register:function(B,C){this.setAttributeConfig(B,C);},getAttributeConfig:function(C){this._configs=this._configs||{};var B=this._configs[C]||{};var D={};for(C in B){if(A.hasOwnProperty(B,C)){D[C]=B[C];}}return D;},setAttributeConfig:function(B,C,D){this._configs=this._configs||{};C=C||{};if(!this._configs[B]){C.name=B;this._configs[B]=this.createAttribute(C);}else{this._configs[B].configure(C,D);}},configureAttribute:function(B,C,D){this.setAttributeConfig(B,C,D);},resetAttributeConfig:function(B){this._configs=this._configs||{};this._configs[B].resetConfig();},subscribe:function(B,C){this._events=this._events||{};if(!(B in this._events)){this._events[B]=this.createEvent(B);}YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){this.subscribe.apply(this,arguments);},addListener:function(){this.subscribe.apply(this,arguments);},fireBeforeChangeEvent:function(C){var B="before";B+=C.type.charAt(0).toUpperCase()+C.type.substr(1)+"Change";C.type=B;return this.fireEvent(C.type,C);},fireChangeEvent:function(B){B.type+="Change";return this.fireEvent(B.type,B);},createAttribute:function(B){return new YAHOO.util.Attribute(B,this);}};YAHOO.augment(YAHOO.util.AttributeProvider,YAHOO.util.EventProvider);})();(function(){var B=YAHOO.util.Dom,C=YAHOO.util.AttributeProvider;var A=function(D,E){this.init.apply(this,arguments);};A.DOM_EVENTS={"click":true,"dblclick":true,"keydown":true,"keypress":true,"keyup":true,"mousedown":true,"mousemove":true,"mouseout":true,"mouseover":true,"mouseup":true,"focus":true,"blur":true,"submit":true,"change":true};A.prototype={DOM_EVENTS:null,DEFAULT_HTML_SETTER:function(F,D){var E=this.get("element");if(E){E[D]=F;}},DEFAULT_HTML_GETTER:function(D){var E=this.get("element"),F;if(E){F=E[D];}return F;},appendChild:function(D){D=D.get?D.get("element"):D;return this.get("element").appendChild(D);},getElementsByTagName:function(D){return this.get("element").getElementsByTagName(D);},hasChildNodes:function(){return this.get("element").hasChildNodes();},insertBefore:function(D,E){D=D.get?D.get("element"):D;E=(E&&E.get)?E.get("element"):E;return this.get("element").insertBefore(D,E);},removeChild:function(D){D=D.get?D.get("element"):D;return this.get("element").removeChild(D);},replaceChild:function(D,E){D=D.get?D.get("element"):D;E=E.get?E.get("element"):E;return this.get("element").replaceChild(D,E);},initAttributes:function(D){},addListener:function(H,G,I,F){var E=this.get("element")||this.get("id");F=F||this;var D=this;if(!this._events[H]){if(E&&this.DOM_EVENTS[H]){YAHOO.util.Event.addListener(E,H,function(J){if(J.srcElement&&!J.target){J.target=J.srcElement;}D.fireEvent(H,J);},I,F);}this.createEvent(H,this);}return YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){return this.addListener.apply(this,arguments);},subscribe:function(){return this.addListener.apply(this,arguments);},removeListener:function(E,D){return this.unsubscribe.apply(this,arguments);},addClass:function(D){B.addClass(this.get("element"),D);},getElementsByClassName:function(E,D){return B.getElementsByClassName(E,D,this.get("element"));},hasClass:function(D){return B.hasClass(this.get("element"),D);},removeClass:function(D){return B.removeClass(this.get("element"),D);},replaceClass:function(E,D){return B.replaceClass(this.get("element"),E,D);},setStyle:function(E,D){return B.setStyle(this.get("element"),E,D);},getStyle:function(D){return B.getStyle(this.get("element"),D);},fireQueue:function(){var E=this._queue;for(var F=0,D=E.length;F<D;++F){this[E[F][0]].apply(this,E[F][1]);}},appendTo:function(E,F){E=(E.get)?E.get("element"):B.get(E);this.fireEvent("beforeAppendTo",{type:"beforeAppendTo",target:E});
+F=(F&&F.get)?F.get("element"):B.get(F);var D=this.get("element");if(!D){return false;}if(!E){return false;}if(D.parent!=E){if(F){E.insertBefore(D,F);}else{E.appendChild(D);}}this.fireEvent("appendTo",{type:"appendTo",target:E});return D;},get:function(D){var F=this._configs||{},E=F.element;if(E&&!F[D]&&!YAHOO.lang.isUndefined(E.value[D])){this._setHTMLAttrConfig(D);}return C.prototype.get.call(this,D);},setAttributes:function(J,G){var E={},H=this._configOrder;for(var I=0,D=H.length;I<D;++I){if(J[H[I]]!==undefined){E[H[I]]=true;this.set(H[I],J[H[I]],G);}}for(var F in J){if(J.hasOwnProperty(F)&&!E[F]){this.set(F,J[F],G);}}},set:function(E,G,D){var F=this.get("element");if(!F){this._queue[this._queue.length]=["set",arguments];if(this._configs[E]){this._configs[E].value=G;}return;}if(!this._configs[E]&&!YAHOO.lang.isUndefined(F[E])){this._setHTMLAttrConfig(E);}return C.prototype.set.apply(this,arguments);},setAttributeConfig:function(D,E,F){this._configOrder.push(D);C.prototype.setAttributeConfig.apply(this,arguments);},createEvent:function(E,D){this._events[E]=true;return C.prototype.createEvent.apply(this,arguments);},init:function(E,D){this._initElement(E,D);},destroy:function(){var D=this.get("element");YAHOO.util.Event.purgeElement(D,true);this.unsubscribeAll();if(D&&D.parentNode){D.parentNode.removeChild(D);}this._queue=[];this._events={};this._configs={};this._configOrder=[];},_initElement:function(F,E){this._queue=this._queue||[];this._events=this._events||{};this._configs=this._configs||{};this._configOrder=[];E=E||{};E.element=E.element||F||null;var H=false;var D=A.DOM_EVENTS;this.DOM_EVENTS=this.DOM_EVENTS||{};for(var G in D){if(D.hasOwnProperty(G)){this.DOM_EVENTS[G]=D[G];}}if(typeof E.element==="string"){this._setHTMLAttrConfig("id",{value:E.element});}if(B.get(E.element)){H=true;this._initHTMLElement(E);this._initContent(E);}YAHOO.util.Event.onAvailable(E.element,function(){if(!H){this._initHTMLElement(E);}this.fireEvent("available",{type:"available",target:B.get(E.element)});},this,true);YAHOO.util.Event.onContentReady(E.element,function(){if(!H){this._initContent(E);}this.fireEvent("contentReady",{type:"contentReady",target:B.get(E.element)});},this,true);},_initHTMLElement:function(D){this.setAttributeConfig("element",{value:B.get(D.element),readOnly:true});},_initContent:function(D){this.initAttributes(D);this.setAttributes(D,true);this.fireQueue();},_setHTMLAttrConfig:function(D,F){var E=this.get("element");F=F||{};F.name=D;F.setter=F.setter||this.DEFAULT_HTML_SETTER;F.getter=F.getter||this.DEFAULT_HTML_GETTER;F.value=F.value||E[D];this._configs[D]=new YAHOO.util.Attribute(F,this);}};YAHOO.augment(A,C);YAHOO.util.Element=A;})();YAHOO.register("element",YAHOO.util.Element,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+YAHOO.util.Color=function(){var A="0",B=YAHOO.lang.isArray,C=YAHOO.lang.isNumber;return{real2dec:function(D){return Math.min(255,Math.round(D*256));},hsv2rgb:function(H,O,M){if(B(H)){return this.hsv2rgb.call(this,H[0],H[1],H[2]);}var D,I,L,G=Math.floor((H/60)%6),J=(H/60)-G,F=M*(1-O),E=M*(1-J*O),N=M*(1-(1-J)*O),K;switch(G){case 0:D=M;I=N;L=F;break;case 1:D=E;I=M;L=F;break;case 2:D=F;I=M;L=N;break;case 3:D=F;I=E;L=M;break;case 4:D=N;I=F;L=M;break;case 5:D=M;I=F;L=E;break;}K=this.real2dec;return[K(D),K(I),K(L)];},rgb2hsv:function(D,H,I){if(B(D)){return this.rgb2hsv.apply(this,D);}D/=255;H/=255;I/=255;var G,L,E=Math.min(Math.min(D,H),I),J=Math.max(Math.max(D,H),I),K=J-E,F;switch(J){case E:G=0;break;case D:G=60*(H-I)/K;if(H<I){G+=360;}break;case H:G=(60*(I-D)/K)+120;break;case I:G=(60*(D-H)/K)+240;break;}L=(J===0)?0:1-(E/J);F=[Math.round(G),L,J];return F;},rgb2hex:function(F,E,D){if(B(F)){return this.rgb2hex.apply(this,F);}var G=this.dec2hex;return G(F)+G(E)+G(D);},dec2hex:function(D){D=parseInt(D,10)|0;D=(D>255||D<0)?0:D;return(A+D.toString(16)).slice(-2).toUpperCase();},hex2dec:function(D){return parseInt(D,16);},hex2rgb:function(D){var E=this.hex2dec;return[E(D.slice(0,2)),E(D.slice(2,4)),E(D.slice(4,6))];},websafe:function(F,E,D){if(B(F)){return this.websafe.apply(this,F);}var G=function(H){if(C(H)){H=Math.min(Math.max(0,H),255);var I,J;for(I=0;I<256;I=I+51){J=I+51;if(H>=I&&H<=J){return(H-I>25)?J:I;}}}return H;};return[G(F),G(E),G(D)];}};}();(function(){var J=0,F=YAHOO.util,C=YAHOO.lang,D=YAHOO.widget.Slider,B=F.Color,E=F.Dom,I=F.Event,A=C.substitute,H="yui-picker";function G(L,K){J=J+1;K=K||{};if(arguments.length===1&&!YAHOO.lang.isString(L)&&!L.nodeName){K=L;L=K.element||null;}if(!L&&!K.element){L=this._createHostElement(K);}G.superclass.constructor.call(this,L,K);this.initPicker();}YAHOO.extend(G,YAHOO.util.Element,{ID:{R:H+"-r",R_HEX:H+"-rhex",G:H+"-g",G_HEX:H+"-ghex",B:H+"-b",B_HEX:H+"-bhex",H:H+"-h",S:H+"-s",V:H+"-v",PICKER_BG:H+"-bg",PICKER_THUMB:H+"-thumb",HUE_BG:H+"-hue-bg",HUE_THUMB:H+"-hue-thumb",HEX:H+"-hex",SWATCH:H+"-swatch",WEBSAFE_SWATCH:H+"-websafe-swatch",CONTROLS:H+"-controls",RGB_CONTROLS:H+"-rgb-controls",HSV_CONTROLS:H+"-hsv-controls",HEX_CONTROLS:H+"-hex-controls",HEX_SUMMARY:H+"-hex-summary",CONTROLS_LABEL:H+"-controls-label"},TXT:{ILLEGAL_HEX:"Illegal hex value entered",SHOW_CONTROLS:"Show color details",HIDE_CONTROLS:"Hide color details",CURRENT_COLOR:"Currently selected color: {rgb}",CLOSEST_WEBSAFE:"Closest websafe color: {rgb}. Click to select.",R:"R",G:"G",B:"B",H:"H",S:"S",V:"V",HEX:"#",DEG:"\u00B0",PERCENT:"%"},IMAGE:{PICKER_THUMB:"../../build/colorpicker/assets/picker_thumb.png",HUE_THUMB:"../../build/colorpicker/assets/hue_thumb.png"},DEFAULT:{PICKER_SIZE:180},OPT:{HUE:"hue",SATURATION:"saturation",VALUE:"value",RED:"red",GREEN:"green",BLUE:"blue",HSV:"hsv",RGB:"rgb",WEBSAFE:"websafe",HEX:"hex",PICKER_SIZE:"pickersize",SHOW_CONTROLS:"showcontrols",SHOW_RGB_CONTROLS:"showrgbcontrols",SHOW_HSV_CONTROLS:"showhsvcontrols",SHOW_HEX_CONTROLS:"showhexcontrols",SHOW_HEX_SUMMARY:"showhexsummary",SHOW_WEBSAFE:"showwebsafe",CONTAINER:"container",IDS:"ids",ELEMENTS:"elements",TXT:"txt",IMAGES:"images",ANIMATE:"animate"},skipAnim:true,_createHostElement:function(){var K=document.createElement("div");if(this.CSS.BASE){K.className=this.CSS.BASE;}return K;},_updateHueSlider:function(){var K=this.get(this.OPT.PICKER_SIZE),L=this.get(this.OPT.HUE);L=K-Math.round(L/360*K);if(L===K){L=0;}this.hueSlider.setValue(L,this.skipAnim);},_updatePickerSlider:function(){var L=this.get(this.OPT.PICKER_SIZE),M=this.get(this.OPT.SATURATION),K=this.get(this.OPT.VALUE);M=Math.round(M*L/100);K=Math.round(L-(K*L/100));this.pickerSlider.setRegionValue(M,K,this.skipAnim);},_updateSliders:function(){this._updateHueSlider();this._updatePickerSlider();},setValue:function(L,K){K=(K)||false;this.set(this.OPT.RGB,L,K);this._updateSliders();},hueSlider:null,pickerSlider:null,_getH:function(){var K=this.get(this.OPT.PICKER_SIZE),L=(K-this.hueSlider.getValue())/K;L=Math.round(L*360);return(L===360)?0:L;},_getS:function(){return this.pickerSlider.getXValue()/this.get(this.OPT.PICKER_SIZE);},_getV:function(){var K=this.get(this.OPT.PICKER_SIZE);return(K-this.pickerSlider.getYValue())/K;},_updateSwatch:function(){var M=this.get(this.OPT.RGB),O=this.get(this.OPT.WEBSAFE),N=this.getElement(this.ID.SWATCH),L=M.join(","),K=this.get(this.OPT.TXT);E.setStyle(N,"background-color","rgb("+L+")");N.title=A(K.CURRENT_COLOR,{"rgb":"#"+this.get(this.OPT.HEX)});N=this.getElement(this.ID.WEBSAFE_SWATCH);L=O.join(",");E.setStyle(N,"background-color","rgb("+L+")");N.title=A(K.CLOSEST_WEBSAFE,{"rgb":"#"+B.rgb2hex(O)});},_getValuesFromSliders:function(){this.set(this.OPT.RGB,B.hsv2rgb(this._getH(),this._getS(),this._getV()));},_updateFormFields:function(){this.getElement(this.ID.H).value=this.get(this.OPT.HUE);this.getElement(this.ID.S).value=this.get(this.OPT.SATURATION);this.getElement(this.ID.V).value=this.get(this.OPT.VALUE);this.getElement(this.ID.R).value=this.get(this.OPT.RED);this.getElement(this.ID.R_HEX).innerHTML=B.dec2hex(this.get(this.OPT.RED));this.getElement(this.ID.G).value=this.get(this.OPT.GREEN);this.getElement(this.ID.G_HEX).innerHTML=B.dec2hex(this.get(this.OPT.GREEN));this.getElement(this.ID.B).value=this.get(this.OPT.BLUE);this.getElement(this.ID.B_HEX).innerHTML=B.dec2hex(this.get(this.OPT.BLUE));this.getElement(this.ID.HEX).value=this.get(this.OPT.HEX);},_onHueSliderChange:function(N){var L=this._getH(),K=B.hsv2rgb(L,1,1),M="rgb("+K.join(",")+")";this.set(this.OPT.HUE,L,true);E.setStyle(this.getElement(this.ID.PICKER_BG),"background-color",M);if(this.hueSlider.valueChangeSource!==D.SOURCE_SET_VALUE){this._getValuesFromSliders();}this._updateFormFields();this._updateSwatch();},_onPickerSliderChange:function(M){var L=this._getS(),K=this._getV();this.set(this.OPT.SATURATION,Math.round(L*100),true);this.set(this.OPT.VALUE,Math.round(K*100),true);if(this.pickerSlider.valueChangeSource!==D.SOURCE_SET_VALUE){this._getValuesFromSliders();
+}this._updateFormFields();this._updateSwatch();},_getCommand:function(K){var L=I.getCharCode(K);if(L===38){return 3;}else{if(L===13){return 6;}else{if(L===40){return 4;}else{if(L>=48&&L<=57){return 1;}else{if(L>=97&&L<=102){return 2;}else{if(L>=65&&L<=70){return 2;}else{if("8, 9, 13, 27, 37, 39".indexOf(L)>-1||K.ctrlKey||K.metaKey){return 5;}else{return 0;}}}}}}}},_useFieldValue:function(L,K,N){var M=K.value;if(N!==this.OPT.HEX){M=parseInt(M,10);}if(M!==this.get(N)){this.set(N,M);}},_rgbFieldKeypress:function(M,K,O){var N=this._getCommand(M),L=(M.shiftKey)?10:1;switch(N){case 6:this._useFieldValue.apply(this,arguments);break;case 3:this.set(O,Math.min(this.get(O)+L,255));this._updateFormFields();break;case 4:this.set(O,Math.max(this.get(O)-L,0));this._updateFormFields();break;default:}},_hexFieldKeypress:function(L,K,N){var M=this._getCommand(L);if(M===6){this._useFieldValue.apply(this,arguments);}},_hexOnly:function(L,K){var M=this._getCommand(L);switch(M){case 6:case 5:case 1:break;case 2:if(K!==true){break;}default:I.stopEvent(L);return false;}},_numbersOnly:function(K){return this._hexOnly(K,true);},getElement:function(K){return this.get(this.OPT.ELEMENTS)[this.get(this.OPT.IDS)[K]];},_createElements:function(){var N,M,P,O,L,K=this.get(this.OPT.IDS),Q=this.get(this.OPT.TXT),S=this.get(this.OPT.IMAGES),R=function(U,V){var W=document.createElement(U);if(V){C.augmentObject(W,V,true);}return W;},T=function(U,V){var W=C.merge({autocomplete:"off",value:"0",size:3,maxlength:3},V);W.name=W.id;return new R(U,W);};L=this.get("element");N=new R("div",{id:K[this.ID.PICKER_BG],className:"yui-picker-bg",tabIndex:-1,hideFocus:true});M=new R("div",{id:K[this.ID.PICKER_THUMB],className:"yui-picker-thumb"});P=new R("img",{src:S.PICKER_THUMB});M.appendChild(P);N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.HUE_BG],className:"yui-picker-hue-bg",tabIndex:-1,hideFocus:true});M=new R("div",{id:K[this.ID.HUE_THUMB],className:"yui-picker-hue-thumb"});P=new R("img",{src:S.HUE_THUMB});M.appendChild(P);N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.CONTROLS],className:"yui-picker-controls"});L.appendChild(N);L=N;N=new R("div",{className:"hd"});M=new R("a",{id:K[this.ID.CONTROLS_LABEL],href:"#"});N.appendChild(M);L.appendChild(N);N=new R("div",{className:"bd"});L.appendChild(N);L=N;N=new R("ul",{id:K[this.ID.RGB_CONTROLS],className:"yui-picker-rgb-controls"});M=new R("li");M.appendChild(document.createTextNode(Q.R+" "));O=new T("input",{id:K[this.ID.R],className:"yui-picker-r"});M.appendChild(O);N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.G+" "));O=new T("input",{id:K[this.ID.G],className:"yui-picker-g"});M.appendChild(O);N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.B+" "));O=new T("input",{id:K[this.ID.B],className:"yui-picker-b"});M.appendChild(O);N.appendChild(M);L.appendChild(N);N=new R("ul",{id:K[this.ID.HSV_CONTROLS],className:"yui-picker-hsv-controls"});M=new R("li");M.appendChild(document.createTextNode(Q.H+" "));O=new T("input",{id:K[this.ID.H],className:"yui-picker-h"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.DEG));N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.S+" "));O=new T("input",{id:K[this.ID.S],className:"yui-picker-s"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.PERCENT));N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.V+" "));O=new T("input",{id:K[this.ID.V],className:"yui-picker-v"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.PERCENT));N.appendChild(M);L.appendChild(N);N=new R("ul",{id:K[this.ID.HEX_SUMMARY],className:"yui-picker-hex_summary"});M=new R("li",{id:K[this.ID.R_HEX]});N.appendChild(M);M=new R("li",{id:K[this.ID.G_HEX]});N.appendChild(M);M=new R("li",{id:K[this.ID.B_HEX]});N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.HEX_CONTROLS],className:"yui-picker-hex-controls"});N.appendChild(document.createTextNode(Q.HEX+" "));M=new T("input",{id:K[this.ID.HEX],className:"yui-picker-hex",size:6,maxlength:6});N.appendChild(M);L.appendChild(N);L=this.get("element");N=new R("div",{id:K[this.ID.SWATCH],className:"yui-picker-swatch"});L.appendChild(N);N=new R("div",{id:K[this.ID.WEBSAFE_SWATCH],className:"yui-picker-websafe-swatch"});L.appendChild(N);},_attachRGBHSV:function(L,K){I.on(this.getElement(L),"keydown",function(N,M){M._rgbFieldKeypress(N,this,K);},this);I.on(this.getElement(L),"keypress",this._numbersOnly,this,true);I.on(this.getElement(L),"blur",function(N,M){M._useFieldValue(N,this,K);},this);},_updateRGB:function(){var K=[this.get(this.OPT.RED),this.get(this.OPT.GREEN),this.get(this.OPT.BLUE)];this.set(this.OPT.RGB,K);this._updateSliders();},_initElements:function(){var O=this.OPT,N=this.get(O.IDS),L=this.get(O.ELEMENTS),K,M,P;for(K in this.ID){if(C.hasOwnProperty(this.ID,K)){N[this.ID[K]]=N[K];}}M=E.get(N[this.ID.PICKER_BG]);if(!M){this._createElements();}else{}for(K in N){if(C.hasOwnProperty(N,K)){M=E.get(N[K]);P=E.generateId(M);N[K]=P;N[N[K]]=P;L[P]=M;}}},initPicker:function(){this._initSliders();this._bindUI();this.syncUI(true);},_initSliders:function(){var K=this.ID,L=this.get(this.OPT.PICKER_SIZE);this.hueSlider=D.getVertSlider(this.getElement(K.HUE_BG),this.getElement(K.HUE_THUMB),0,L);this.pickerSlider=D.getSliderRegion(this.getElement(K.PICKER_BG),this.getElement(K.PICKER_THUMB),0,L,0,L);this.set(this.OPT.ANIMATE,this.get(this.OPT.ANIMATE));},_bindUI:function(){var K=this.ID,L=this.OPT;this.hueSlider.subscribe("change",this._onHueSliderChange,this,true);this.pickerSlider.subscribe("change",this._onPickerSliderChange,this,true);I.on(this.getElement(K.WEBSAFE_SWATCH),"click",function(M){this.setValue(this.get(L.WEBSAFE));},this,true);I.on(this.getElement(K.CONTROLS_LABEL),"click",function(M){this.set(L.SHOW_CONTROLS,!this.get(L.SHOW_CONTROLS));I.preventDefault(M);},this,true);this._attachRGBHSV(K.R,L.RED);this._attachRGBHSV(K.G,L.GREEN);this._attachRGBHSV(K.B,L.BLUE);this._attachRGBHSV(K.H,L.HUE);
+this._attachRGBHSV(K.S,L.SATURATION);this._attachRGBHSV(K.V,L.VALUE);I.on(this.getElement(K.HEX),"keydown",function(N,M){M._hexFieldKeypress(N,this,L.HEX);},this);I.on(this.getElement(this.ID.HEX),"keypress",this._hexOnly,this,true);I.on(this.getElement(this.ID.HEX),"blur",function(N,M){M._useFieldValue(N,this,L.HEX);},this);},syncUI:function(K){this.skipAnim=K;this._updateRGB();this.skipAnim=false;},_updateRGBFromHSV:function(){var L=[this.get(this.OPT.HUE),this.get(this.OPT.SATURATION)/100,this.get(this.OPT.VALUE)/100],K=B.hsv2rgb(L);this.set(this.OPT.RGB,K);this._updateSliders();},_updateHex:function(){var N=this.get(this.OPT.HEX),K=N.length,O,M,L;if(K===3){O=N.split("");for(M=0;M<K;M=M+1){O[M]=O[M]+O[M];}N=O.join("");}if(N.length!==6){return false;}L=B.hex2rgb(N);this.setValue(L);},_hideShowEl:function(M,K){var L=(C.isString(M)?this.getElement(M):M);E.setStyle(L,"display",(K)?"":"none");},initAttributes:function(K){K=K||{};G.superclass.initAttributes.call(this,K);this.setAttributeConfig(this.OPT.PICKER_SIZE,{value:K.size||this.DEFAULT.PICKER_SIZE});this.setAttributeConfig(this.OPT.HUE,{value:K.hue||0,validator:C.isNumber});this.setAttributeConfig(this.OPT.SATURATION,{value:K.saturation||0,validator:C.isNumber});this.setAttributeConfig(this.OPT.VALUE,{value:C.isNumber(K.value)?K.value:100,validator:C.isNumber});this.setAttributeConfig(this.OPT.RED,{value:C.isNumber(K.red)?K.red:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.GREEN,{value:C.isNumber(K.green)?K.green:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.BLUE,{value:C.isNumber(K.blue)?K.blue:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.HEX,{value:K.hex||"FFFFFF",validator:C.isString});this.setAttributeConfig(this.OPT.RGB,{value:K.rgb||[255,255,255],method:function(O){this.set(this.OPT.RED,O[0],true);this.set(this.OPT.GREEN,O[1],true);this.set(this.OPT.BLUE,O[2],true);var Q=B.websafe(O),P=B.rgb2hex(O),N=B.rgb2hsv(O);this.set(this.OPT.WEBSAFE,Q,true);this.set(this.OPT.HEX,P,true);if(N[1]){this.set(this.OPT.HUE,N[0],true);}this.set(this.OPT.SATURATION,Math.round(N[1]*100),true);this.set(this.OPT.VALUE,Math.round(N[2]*100),true);},readonly:true});this.setAttributeConfig(this.OPT.CONTAINER,{value:null,method:function(N){if(N){N.showEvent.subscribe(function(){this.pickerSlider.focus();},this,true);}}});this.setAttributeConfig(this.OPT.WEBSAFE,{value:K.websafe||[255,255,255]});var M=K.ids||C.merge({},this.ID),L;if(!K.ids&&J>1){for(L in M){if(C.hasOwnProperty(M,L)){M[L]=M[L]+J;}}}this.setAttributeConfig(this.OPT.IDS,{value:M,writeonce:true});this.setAttributeConfig(this.OPT.TXT,{value:K.txt||this.TXT,writeonce:true});this.setAttributeConfig(this.OPT.IMAGES,{value:K.images||this.IMAGE,writeonce:true});this.setAttributeConfig(this.OPT.ELEMENTS,{value:{},readonly:true});this.setAttributeConfig(this.OPT.SHOW_CONTROLS,{value:C.isBoolean(K.showcontrols)?K.showcontrols:true,method:function(N){var O=E.getElementsByClassName("bd","div",this.getElement(this.ID.CONTROLS))[0];this._hideShowEl(O,N);this.getElement(this.ID.CONTROLS_LABEL).innerHTML=(N)?this.get(this.OPT.TXT).HIDE_CONTROLS:this.get(this.OPT.TXT).SHOW_CONTROLS;}});this.setAttributeConfig(this.OPT.SHOW_RGB_CONTROLS,{value:C.isBoolean(K.showrgbcontrols)?K.showrgbcontrols:true,method:function(N){this._hideShowEl(this.ID.RGB_CONTROLS,N);}});this.setAttributeConfig(this.OPT.SHOW_HSV_CONTROLS,{value:C.isBoolean(K.showhsvcontrols)?K.showhsvcontrols:false,method:function(N){this._hideShowEl(this.ID.HSV_CONTROLS,N);if(N&&this.get(this.OPT.SHOW_HEX_SUMMARY)){this.set(this.OPT.SHOW_HEX_SUMMARY,false);}}});this.setAttributeConfig(this.OPT.SHOW_HEX_CONTROLS,{value:C.isBoolean(K.showhexcontrols)?K.showhexcontrols:false,method:function(N){this._hideShowEl(this.ID.HEX_CONTROLS,N);}});this.setAttributeConfig(this.OPT.SHOW_WEBSAFE,{value:C.isBoolean(K.showwebsafe)?K.showwebsafe:true,method:function(N){this._hideShowEl(this.ID.WEBSAFE_SWATCH,N);}});this.setAttributeConfig(this.OPT.SHOW_HEX_SUMMARY,{value:C.isBoolean(K.showhexsummary)?K.showhexsummary:true,method:function(N){this._hideShowEl(this.ID.HEX_SUMMARY,N);if(N&&this.get(this.OPT.SHOW_HSV_CONTROLS)){this.set(this.OPT.SHOW_HSV_CONTROLS,false);}}});this.setAttributeConfig(this.OPT.ANIMATE,{value:C.isBoolean(K.animate)?K.animate:true,method:function(N){if(this.pickerSlider){this.pickerSlider.animate=N;this.hueSlider.animate=N;}}});this.on(this.OPT.HUE+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.SATURATION+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.VALUE+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.RED+"Change",this._updateRGB,this,true);this.on(this.OPT.GREEN+"Change",this._updateRGB,this,true);this.on(this.OPT.BLUE+"Change",this._updateRGB,this,true);this.on(this.OPT.HEX+"Change",this._updateHex,this,true);this._initElements();}});YAHOO.widget.ColorPicker=G;})();YAHOO.register("colorpicker",YAHOO.widget.ColorPicker,{version:"2.7.0",build:"1796"});
+
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+(function(){var B=YAHOO.util;var A=function(D,C,E,F){if(!D){}this.init(D,C,E,F);};A.NAME="Anim";A.prototype={toString:function(){var C=this.getEl()||{};var D=C.id||C.tagName;return(this.constructor.NAME+": "+D);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(C,E,D){return this.method(this.currentFrame,E,D-E,this.totalFrames);},setAttribute:function(C,F,E){var D=this.getEl();if(this.patterns.noNegatives.test(C)){F=(F>0)?F:0;}if("style" in D){B.Dom.setStyle(D,C,F+E);}else{if(C in D){D[C]=F;}}},getAttribute:function(C){var E=this.getEl();var G=B.Dom.getStyle(E,C);if(G!=="auto"&&!this.patterns.offsetUnit.test(G)){return parseFloat(G);}var D=this.patterns.offsetAttribute.exec(C)||[];var H=!!(D[3]);var F=!!(D[2]);if("style" in E){if(F||(B.Dom.getStyle(E,"position")=="absolute"&&H)){G=E["offset"+D[0].charAt(0).toUpperCase()+D[0].substr(1)];}else{G=0;}}else{if(C in E){G=E[C];}}return G;},getDefaultUnit:function(C){if(this.patterns.defaultUnit.test(C)){return"px";}return"";},setRuntimeAttribute:function(D){var I;var E;var F=this.attributes;this.runtimeAttributes[D]={};var H=function(J){return(typeof J!=="undefined");};if(!H(F[D]["to"])&&!H(F[D]["by"])){return false;}I=(H(F[D]["from"]))?F[D]["from"]:this.getAttribute(D);if(H(F[D]["to"])){E=F[D]["to"];}else{if(H(F[D]["by"])){if(I.constructor==Array){E=[];for(var G=0,C=I.length;G<C;++G){E[G]=I[G]+F[D]["by"][G]*1;}}else{E=I+F[D]["by"]*1;}}}this.runtimeAttributes[D].start=I;this.runtimeAttributes[D].end=E;this.runtimeAttributes[D].unit=(H(F[D].unit))?F[D]["unit"]:this.getDefaultUnit(D);return true;},init:function(E,J,I,C){var D=false;var F=null;var H=0;E=B.Dom.get(E);this.attributes=J||{};this.duration=!YAHOO.lang.isUndefined(I)?I:1;this.method=C||B.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=B.AnimMgr.fps;this.setEl=function(M){E=B.Dom.get(M);};this.getEl=function(){return E;};this.isAnimated=function(){return D;};this.getStartTime=function(){return F;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(B.AnimMgr.fps*this.duration):this.duration;if(this.duration===0&&this.useSeconds){this.totalFrames=1;}B.AnimMgr.registerElement(this);return true;};this.stop=function(M){if(!this.isAnimated()){return false;}if(M){this.currentFrame=this.totalFrames;this._onTween.fire();}B.AnimMgr.stop(this);};var L=function(){this.onStart.fire();this.runtimeAttributes={};for(var M in this.attributes){this.setRuntimeAttribute(M);}D=true;H=0;F=new Date();};var K=function(){var O={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};O.toString=function(){return("duration: "+O.duration+", currentFrame: "+O.currentFrame);};this.onTween.fire(O);var N=this.runtimeAttributes;for(var M in N){this.setAttribute(M,this.doMethod(M,N[M].start,N[M].end),N[M].unit);}H+=1;};var G=function(){var M=(new Date()-F)/1000;var N={duration:M,frames:H,fps:H/M};N.toString=function(){return("duration: "+N.duration+", frames: "+N.frames+", fps: "+N.fps);};D=false;H=0;this.onComplete.fire(N);};this._onStart=new B.CustomEvent("_start",this,true);this.onStart=new B.CustomEvent("start",this);this.onTween=new B.CustomEvent("tween",this);this._onTween=new B.CustomEvent("_tween",this,true);this.onComplete=new B.CustomEvent("complete",this);this._onComplete=new B.CustomEvent("_complete",this,true);this._onStart.subscribe(L);this._onTween.subscribe(K);this._onComplete.subscribe(G);}};B.Anim=A;})();YAHOO.util.AnimMgr=new function(){var C=null;var B=[];var A=0;this.fps=1000;this.delay=1;this.registerElement=function(F){B[B.length]=F;A+=1;F._onStart.fire();this.start();};this.unRegister=function(G,F){F=F||E(G);if(!G.isAnimated()||F==-1){return false;}G._onComplete.fire();B.splice(F,1);A-=1;if(A<=0){this.stop();}return true;};this.start=function(){if(C===null){C=setInterval(this.run,this.delay);}};this.stop=function(H){if(!H){clearInterval(C);for(var G=0,F=B.length;G<F;++G){this.unRegister(B[0],0);}B=[];C=null;A=0;}else{this.unRegister(H);}};this.run=function(){for(var H=0,F=B.length;H<F;++H){var G=B[H];if(!G||!G.isAnimated()){continue;}if(G.currentFrame<G.totalFrames||G.totalFrames===null){G.currentFrame+=1;if(G.useSeconds){D(G);}G._onTween.fire();}else{YAHOO.util.AnimMgr.stop(G,H);}}};var E=function(H){for(var G=0,F=B.length;G<F;++G){if(B[G]==H){return G;}}return -1;};var D=function(G){var J=G.totalFrames;var I=G.currentFrame;var H=(G.currentFrame*G.duration*1000/G.totalFrames);var F=(new Date()-G.getStartTime());var K=0;if(F<G.duration*1000){K=Math.round((F/H-1)*G.currentFrame);}else{K=J-(I+1);}if(K>0&&isFinite(K)){if(G.currentFrame+K>=J){K=J-(I+1);}G.currentFrame+=K;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(E,D){var F=E.length;var C=[];for(var B=0;B<F;++B){C[B]=[E[B][0],E[B][1]];}for(var A=1;A<F;++A){for(B=0;B<F-A;++B){C[B][0]=(1-D)*C[B][0]+D*C[parseInt(B+1,10)][0];C[B][1]=(1-D)*C[B][1]+D*C[parseInt(B+1,10)][1];}}return[C[0][0],C[0][1]];};};(function(){var A=function(F,E,G,H){A.superclass.constructor.call(this,F,E,G,H);};A.NAME="ColorAnim";A.DEFAULT_BGCOLOR="#fff";var C=YAHOO.util;YAHOO.extend(A,C.Anim);var D=A.superclass;var B=A.prototype;B.patterns.color=/color$/i;B.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;B.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;B.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;B.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;B.parseColor=function(E){if(E.length==3){return E;}var F=this.patterns.hex.exec(E);if(F&&F.length==4){return[parseInt(F[1],16),parseInt(F[2],16),parseInt(F[3],16)];}F=this.patterns.rgb.exec(E);if(F&&F.length==4){return[parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10)];}F=this.patterns.hex3.exec(E);if(F&&F.length==4){return[parseInt(F[1]+F[1],16),parseInt(F[2]+F[2],16),parseInt(F[3]+F[3],16)];
+}return null;};B.getAttribute=function(E){var G=this.getEl();if(this.patterns.color.test(E)){var I=YAHOO.util.Dom.getStyle(G,E);var H=this;if(this.patterns.transparent.test(I)){var F=YAHOO.util.Dom.getAncestorBy(G,function(J){return !H.patterns.transparent.test(I);});if(F){I=C.Dom.getStyle(F,E);}else{I=A.DEFAULT_BGCOLOR;}}}else{I=D.getAttribute.call(this,E);}return I;};B.doMethod=function(F,J,G){var I;if(this.patterns.color.test(F)){I=[];for(var H=0,E=J.length;H<E;++H){I[H]=D.doMethod.call(this,F,J[H],G[H]);}I="rgb("+Math.floor(I[0])+","+Math.floor(I[1])+","+Math.floor(I[2])+")";}else{I=D.doMethod.call(this,F,J,G);}return I;};B.setRuntimeAttribute=function(F){D.setRuntimeAttribute.call(this,F);if(this.patterns.color.test(F)){var H=this.attributes;var J=this.parseColor(this.runtimeAttributes[F].start);var G=this.parseColor(this.runtimeAttributes[F].end);if(typeof H[F]["to"]==="undefined"&&typeof H[F]["by"]!=="undefined"){G=this.parseColor(H[F].by);for(var I=0,E=J.length;I<E;++I){G[I]=J[I]+G[I];}}this.runtimeAttributes[F].start=J;this.runtimeAttributes[F].end=G;}};C.ColorAnim=A;})();
+/*
+TERMS OF USE - EASING EQUATIONS
+Open source under the BSD License.
+Copyright 2001 Robert Penner All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+YAHOO.util.Easing={easeNone:function(B,A,D,C){return D*B/C+A;},easeIn:function(B,A,D,C){return D*(B/=C)*B+A;},easeOut:function(B,A,D,C){return -D*(B/=C)*(B-2)+A;},easeBoth:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B+A;}return -D/2*((--B)*(B-2)-1)+A;},easeInStrong:function(B,A,D,C){return D*(B/=C)*B*B*B+A;},easeOutStrong:function(B,A,D,C){return -D*((B=B/C-1)*B*B*B-1)+A;},easeBothStrong:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B*B*B+A;}return -D/2*((B-=2)*B*B*B-2)+A;},elasticIn:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return -(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;},elasticOut:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return B*Math.pow(2,-10*C)*Math.sin((C*F-D)*(2*Math.PI)/E)+G+A;},elasticBoth:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F/2)==2){return A+G;}if(!E){E=F*(0.3*1.5);}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}if(C<1){return -0.5*(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;}return B*Math.pow(2,-10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E)*0.5+G+A;},backIn:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*(B/=D)*B*((C+1)*B-C)+A;},backOut:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*((B=B/D-1)*B*((C+1)*B+C)+1)+A;},backBoth:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}if((B/=D/2)<1){return E/2*(B*B*(((C*=(1.525))+1)*B-C))+A;}return E/2*((B-=2)*B*(((C*=(1.525))+1)*B+C)+2)+A;},bounceIn:function(B,A,D,C){return D-YAHOO.util.Easing.bounceOut(C-B,0,D,C)+A;},bounceOut:function(B,A,D,C){if((B/=C)<(1/2.75)){return D*(7.5625*B*B)+A;}else{if(B<(2/2.75)){return D*(7.5625*(B-=(1.5/2.75))*B+0.75)+A;}else{if(B<(2.5/2.75)){return D*(7.5625*(B-=(2.25/2.75))*B+0.9375)+A;}}}return D*(7.5625*(B-=(2.625/2.75))*B+0.984375)+A;},bounceBoth:function(B,A,D,C){if(B<C/2){return YAHOO.util.Easing.bounceIn(B*2,0,D,C)*0.5+A;}return YAHOO.util.Easing.bounceOut(B*2-C,0,D,C)*0.5+D*0.5+A;}};(function(){var A=function(H,G,I,J){if(H){A.superclass.constructor.call(this,H,G,I,J);}};A.NAME="Motion";var E=YAHOO.util;YAHOO.extend(A,E.ColorAnim);var F=A.superclass;var C=A.prototype;C.patterns.points=/^points$/i;C.setAttribute=function(G,I,H){if(this.patterns.points.test(G)){H=H||"px";F.setAttribute.call(this,"left",I[0],H);F.setAttribute.call(this,"top",I[1],H);}else{F.setAttribute.call(this,G,I,H);}};C.getAttribute=function(G){if(this.patterns.points.test(G)){var H=[F.getAttribute.call(this,"left"),F.getAttribute.call(this,"top")];}else{H=F.getAttribute.call(this,G);}return H;};C.doMethod=function(G,K,H){var J=null;if(this.patterns.points.test(G)){var I=this.method(this.currentFrame,0,100,this.totalFrames)/100;J=E.Bezier.getPosition(this.runtimeAttributes[G],I);}else{J=F.doMethod.call(this,G,K,H);}return J;};C.setRuntimeAttribute=function(P){if(this.patterns.points.test(P)){var H=this.getEl();var J=this.attributes;var G;var L=J["points"]["control"]||[];var I;var M,O;if(L.length>0&&!(L[0] instanceof Array)){L=[L];}else{var K=[];for(M=0,O=L.length;M<O;++M){K[M]=L[M];}L=K;}if(E.Dom.getStyle(H,"position")=="static"){E.Dom.setStyle(H,"position","relative");}if(D(J["points"]["from"])){E.Dom.setXY(H,J["points"]["from"]);
+}else{E.Dom.setXY(H,E.Dom.getXY(H));}G=this.getAttribute("points");if(D(J["points"]["to"])){I=B.call(this,J["points"]["to"],G);var N=E.Dom.getXY(this.getEl());for(M=0,O=L.length;M<O;++M){L[M]=B.call(this,L[M],G);}}else{if(D(J["points"]["by"])){I=[G[0]+J["points"]["by"][0],G[1]+J["points"]["by"][1]];for(M=0,O=L.length;M<O;++M){L[M]=[G[0]+L[M][0],G[1]+L[M][1]];}}}this.runtimeAttributes[P]=[G];if(L.length>0){this.runtimeAttributes[P]=this.runtimeAttributes[P].concat(L);}this.runtimeAttributes[P][this.runtimeAttributes[P].length]=I;}else{F.setRuntimeAttribute.call(this,P);}};var B=function(G,I){var H=E.Dom.getXY(this.getEl());G=[G[0]-H[0]+I[0],G[1]-H[1]+I[1]];return G;};var D=function(G){return(typeof G!=="undefined");};E.Motion=A;})();(function(){var D=function(F,E,G,H){if(F){D.superclass.constructor.call(this,F,E,G,H);}};D.NAME="Scroll";var B=YAHOO.util;YAHOO.extend(D,B.ColorAnim);var C=D.superclass;var A=D.prototype;A.doMethod=function(E,H,F){var G=null;if(E=="scroll"){G=[this.method(this.currentFrame,H[0],F[0]-H[0],this.totalFrames),this.method(this.currentFrame,H[1],F[1]-H[1],this.totalFrames)];}else{G=C.doMethod.call(this,E,H,F);}return G;};A.getAttribute=function(E){var G=null;var F=this.getEl();if(E=="scroll"){G=[F.scrollLeft,F.scrollTop];}else{G=C.getAttribute.call(this,E);}return G;};A.setAttribute=function(E,H,G){var F=this.getEl();if(E=="scroll"){F.scrollLeft=H[0];F.scrollTop=H[1];}else{C.setAttribute.call(this,E,H,G);}};B.Scroll=D;})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.7.0",build:"1799"});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/ciframe.html b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/ciframe.html
new file mode 100755
index 0000000..292297d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/ciframe.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html>
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript">
+
+function gup( name )
+{
+ name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
+ var regexS = '[\\?&]' + name + '=([^&#]*)' ;
+ var regex = new RegExp( regexS ) ;
+ var results = regex.exec( window.location.href ) ;
+
+ if ( results )
+ return results[ 1 ] ;
+ else
+ return '' ;
+}
+
+var interval;
+
+function sendData2Master()
+{
+ var destination = window.parent.parent ;
+ try
+ {
+ if ( destination.XDTMaster )
+ {
+ var t = destination.XDTMaster.read( [ gup( 'cmd' ), gup( 'data' ) ] ) ;
+ window.clearInterval( interval ) ;
+ }
+ }
+ catch (e) {}
+}
+
+function onLoad()
+{
+ interval = window.setInterval( sendData2Master, 100 );
+}
+
+</script>
+</head>
+<body onload="onLoad()"><p></p></body>
+</html>
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/tmpFrameset.html b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/tmpFrameset.html
new file mode 100755
index 0000000..88e1afe
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/tmpFrameset.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html>
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript">
+
+function doLoadScript( url )
+{
+ if ( !url )
+ return false ;
+
+ var s = document.createElement( "script" ) ;
+ s.type = "text/javascript" ;
+ s.src = url ;
+ document.getElementsByTagName( "head" )[ 0 ].appendChild( s ) ;
+
+ return true ;
+}
+
+var opener;
+function tryLoad()
+{
+ opener = window.parent;
+
+ // get access to global parameters
+ var oParams = window.opener.oldFramesetPageParams;
+
+ // make frameset rows string prepare
+ var sFramesetRows = ( parseInt( oParams.firstframeh, 10 ) || '30') + ",*," + ( parseInt( oParams.thirdframeh, 10 ) || '150' ) + ',0' ;
+ document.getElementById( 'itFrameset' ).rows = sFramesetRows ;
+
+ // dynamic including init frames and crossdomain transport code
+ // from config sproxy_js_frameset url
+ var addScriptUrl = oParams.sproxy_js_frameset ;
+ doLoadScript( addScriptUrl ) ;
+}
+
+ </script>
+</head>
+
+<frameset id="itFrameset" onload="tryLoad();" border="0" rows="30,*,*,0">
+ <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="2" src="" name="navbar"></frame>
+ <frame scrolling="auto" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="0" src="" name="mid"></frame>
+ <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="bot"></frame>
+ <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="spellsuggestall"></frame>
+</frameset>
+</html>
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/wsc.css b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/wsc.css
new file mode 100755
index 0000000..74dd4e1
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/wsc.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+html,body{background-color:transparent;margin:0;padding:0;}body{padding:10px;}body,td,input,select,textarea{font-size:11px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;}.midtext{padding:0;margin:10px;}.midtext p{padding:0;margin:10px;}.Button{border:#737357 1px solid;color:#3b3b1f;background-color:#c7c78f;}.PopupTabArea{color:#737357;background-color:#e3e3c7;}.PopupTitleBorder{border-bottom:#d5d59d 1px solid;}.PopupTabEmptyArea{padding-left:10px;border-bottom:#d5d59d 1px solid;}.PopupTab,.PopupTabSelected{border-right:#d5d59d 1px solid;border-top:#d5d59d 1px solid;border-left:#d5d59d 1px solid;padding:3px 5px 3px 5px;color:#737357;}.PopupTab{margin-top:1px;border-bottom:#d5d59d 1px solid;cursor:pointer;}.PopupTabSelected{font-weight:bold;cursor:default;padding-top:4px;border-bottom:#f1f1e3 1px solid;background-color:#f1f1e3;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/wsc.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/wsc.js
new file mode 100755
index 0000000..8ca567b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/wsc/dialogs/wsc.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('checkspell',function(a){var b=CKEDITOR.tools.getNextNumber(),c='cke_frame_'+b,d='cke_data_'+b,e='cke_error_'+b,f,g=document.location.protocol||'http:',h=a.lang.spellCheck.notAvailable,i='<textarea style="display: none" id="'+d+'"'+' rows="10"'+' cols="40">'+' </textarea><div'+' id="'+e+'"'+' style="display:none;color:red;font-size:16px;font-weight:bold;padding-top:160px;text-align:center;z-index:11;">'+'</div><iframe'+' src=""'+' style="width:100%;background-color:#f1f1e3;"'+' frameborder="0"'+' name="'+c+'"'+' id="'+c+'"'+' allowtransparency="1">'+'</iframe>',j=a.config.wsc_customLoaderScript||g+'//loader.webspellchecker.net/sproxy_fck/sproxy.php'+'?plugin=fck2'+'&customerid='+a.config.wsc_customerId+'&cmd=script&doc=wsc&schema=22';if(a.config.wsc_customLoaderScript)h+='<p style="color:#000;font-size:11px;font-weight: normal;text-align:center;padding-top:10px">'+a.lang.spellCheck.errorLoading.replace(/%s/g,a.config.wsc_customLoaderScript)+'</p>';function k(m,n){var o=0;return function(){if(typeof window.doSpell=='function'){if(typeof f!='undefined')window.clearInterval(f);l(m);}else if(o++==180)window._cancelOnError(n);};};window._cancelOnError=function(m){if(typeof window.WSC_Error=='undefined'){CKEDITOR.document.getById(c).setStyle('display','none');var n=CKEDITOR.document.getById(e);n.setStyle('display','block');n.setHtml(m||a.lang.spellCheck.notAvailable);}};function l(m){var n=new window._SP_FCK_LangCompare(),o=CKEDITOR.getUrl(a.plugins.wsc.path+'dialogs/'),p=o+'tmpFrameset.html';window.gFCKPluginName='wsc';n.setDefaulLangCode(a.config.defaultLanguage);window.doSpell({ctrl:d,lang:a.config.wsc_lang||n.getSPLangCode(a.langCode),intLang:a.config.wsc_uiLang||n.getSPLangCode(a.langCode),winType:c,onCancel:function(){m.hide();},onFinish:function(q){a.focus();m.getParentEditor().setData(q.value);m.hide();},staticFrame:p,framesetPath:p,iframePath:o+'ciframe.html',schemaURI:o+'wsc.css',userDictionaryName:a.config.wsc_userDictionaryName,customDictionaryName:a.config.wsc_customDictionaryIds&&a.config.wsc_customDictionaryIds.split(','),domainName:a.config.wsc_domainName});CKEDITOR.document.getById(e).setStyle('display','none');CKEDITOR.document.getById(c).setStyle('display','block');};return{title:a.config.wsc_dialogTitle||a.lang.spellCheck.title,minWidth:485,minHeight:380,buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var m=this.getContentElement('general','content').getElement();m.setHtml(i);m.getChild(2).setStyle('height',this._.contentSize.height+'px');
+if(typeof window.doSpell!='function')CKEDITOR.document.getHead().append(CKEDITOR.document.createElement('script',{attributes:{type:'text/javascript',src:j}}));var n=a.getData();CKEDITOR.document.getById(d).setValue(n);f=window.setInterval(k(this,h),250);},onHide:function(){window.ooo=undefined;window.int_framsetLoaded=undefined;window.framesetLoaded=undefined;window.is_window_opened=false;},contents:[{id:'general',label:a.config.wsc_dialogTitle||a.lang.spellCheck.title,padding:0,elements:[{type:'html',id:'content',html:''}]}]};});CKEDITOR.dialog.on('resize',function(a){var b=a.data,c=b.dialog;if(c._.name=='checkspell'){var d=c.getContentElement('general','content').getElement(),e=d&&d.getChild(2);e&&e.setSize('height',b.height);e&&e.setSize('width',b.width);}});
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/xml/plugin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/xml/plugin.js
new file mode 100755
index 0000000..d1dc6a2
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/plugins/xml/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.plugins.add('xml',{});CKEDITOR.xml=function(a){var b=null;if(typeof a=='object')b=a;else{var c=(a||'').replace(/ /g,'\xa0');if(window.DOMParser)b=new DOMParser().parseFromString(c,'text/xml');else if(window.ActiveXObject){try{b=new ActiveXObject('MSXML2.DOMDocument');}catch(d){try{b=new ActiveXObject('Microsoft.XmlDom');}catch(d){}}if(b){b.async=false;b.resolveExternals=false;b.validateOnParse=false;b.loadXML(c);}}}this.baseXml=b;};CKEDITOR.xml.prototype={selectSingleNode:function(a,b){var c=this.baseXml;if(b||(b=c))if(CKEDITOR.env.ie||b.selectSingleNode)return b.selectSingleNode(a);else if(c.evaluate){var d=c.evaluate(a,b,null,9,null);return d&&d.singleNodeValue||null;}return null;},selectNodes:function(a,b){var c=this.baseXml,d=[];if(b||(b=c))if(CKEDITOR.env.ie||b.selectNodes)return b.selectNodes(a);else if(c.evaluate){var e=c.evaluate(a,b,null,5,null);if(e){var f;while(f=e.iterateNext())d.push(f);}}return d;},getInnerXml:function(a,b){var c=this.selectSingleNode(a,b),d=[];if(c){c=c.firstChild;while(c){if(c.xml)d.push(c.xml);else if(window.XMLSerializer)d.push(new XMLSerializer().serializeToString(c));c=c.nextSibling;}}return d.length?d.join(''):null;}};})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/dialog.css b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/dialog.css
new file mode 100755
index 0000000..0ce353e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/dialog.css
@@ -0,0 +1,10 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body .cke_dialog{visibility:visible;}.cke_skin_kama table.cke_dialog.cke_browser_gecko{display:block;}.cke_skin_kama .cke_dialog_body{z-index:1;border:solid 1px #ddd;padding:5px;background-color:#fff;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;_position:static;}.cke_skin_kama .cke_dialog_tl,.cke_skin_kama .cke_dialog_tr,.cke_skin_kama .cke_dialog_tc,.cke_skin_kama .cke_dialog_bl,.cke_skin_kama .cke_dialog_br,.cke_skin_kama .cke_dialog_bc,.cke_skin_kama .cke_dialog_ml,.cke_skin_kama .cke_dialog_mr{display:none;}.cke_skin_kama .cke_dialog_title{font-weight:bold;font-size:14px;padding:3px 3px 8px;cursor:move;position:relative;border-bottom:1px solid #eee;}.cke_skin_kama .cke_browser_iequirks .cke_dialog_title,.cke_skin_kama .cke_browser_ie6 .cke_dialog_title,.cke_skin_kama .cke_browser_ie7 .cke_dialog_title{margin-bottom:22px;}.cke_skin_kama .cke_browser_iequirks.cke_single_page .cke_dialog_title,.cke_skin_kama .cke_browser_ie6.cke_single_page .cke_dialog_title,.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_title{margin-bottom:10px;}.cke_skin_kama .cke_dialog_contents{background-color:#ebebeb;border:solid 1px #fff;border-bottom:none;overflow:auto;padding:17px 10px 5px 10px;-moz-border-radius-topleft:5px;-moz-border-radius-topright:5px;-webkit-border-top-left-radius:5px;-webkit-border-top-right-radius:5px;border-top-left-radius:5px;border-top-right-radius:5px;margin-top:22px;}.cke_skin_kama .cke_dialog_footer{text-align:right;background-color:#ebebeb;border:solid 1px #fff;border-bottom:none;-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-left-radius:5px;-webkit-border-bottom-right-radius:5px;border-bottom-left-radius:5px;border-bottom-right-radius:5px;}.cke_skin_kama .cke_rtl .cke_dialog_footer{text-align:left;}.cke_skin_kama .cke_dialog_footer .cke_resizer{margin-top:20px;}.cke_skin_kama .cke_browser_iequirks .cke_dialog_footer .cke_resizer,.cke_skin_kama .cke_browser_ie6 .cke_dialog_footer .cke_resizer{margin-top:27px;}.cke_skin_kama .cke_dialog_tabs{height:23px;display:inline-block;_display:block;margin-left:10px;margin-right:10px;margin-top:11px;position:absolute;z-index:2;}.cke_skin_kama .cke_browser_iequirks .cke_dialog_tabs,.cke_skin_kama .cke_browser_ie6 .cke_dialog_tabs,.cke_skin_kama .cke_browser_ie7 .cke_dialog_tabs{top:33px;}.cke_skin_kama .cke_rtl .cke_dialog_tabs{right:10px;}.cke_skin_kama a.cke_dialog_tab,.cke_skin_kama a:link.cke_dialog_tab,.cke_skin_kama a:active.cke_dialog_tab,.cke_skin_kama a:hover.cke_dialog_tab,.cke_skin_kama a:visited.cke_dialog_tab{background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1323px;background-color:#ebebeb;height:14px;padding:4px 8px;display:inline-block;cursor:pointer;}.cke_skin_kama .cke_browser_gecko18 a.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:link.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:active.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:hover.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:visited.cke_dialog_tab{display:inline;position:relative;top:6px;}.cke_skin_kama a:hover.cke_dialog_tab{background-color:#f1f1e3;}.cke_skin_kama .cke_hc a:hover.cke_dialog_tab{padding:2px 6px!important;border-width:3px;}.cke_skin_kama a.cke_dialog_tab_selected,.cke_skin_kama a:link.cke_dialog_tab_selected,.cke_skin_kama a:active.cke_dialog_tab_selected,.cke_skin_kama a:hover.cke_dialog_tab_selected,.cke_skin_kama a:visited.cke_dialog_tab_selected{background-position:0 -1279px;cursor:default;}.cke_skin_kama .cke_hc a.cke_dialog_tab_selected,.cke_skin_kama .cke_hc a:link.cke_dialog_tab_selected,.cke_skin_kama .cke_hc a:active.cke_dialog_tab_selected,.cke_skin_kama .cke_hc a:hover.cke_dialog_tab_selected,.cke_skin_kama .cke_hc a:visited.cke_dialog_tab_selected{padding:2px 6px!important;border-width:3px;}.cke_skin_kama .cke_single_page .cke_dialog_tabs{display:none;}.cke_skin_kama .cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:10px;}.cke_skin_kama .cke_dialog_ui_vbox table,.cke_skin_kama .cke_dialog_ui_hbox table{margin:auto;}
+.cke_skin_kama .cke_dialog_ui_vbox_child{padding:5px 0;}.cke_skin_kama input.cke_dialog_ui_input_text,.cke_skin_kama input.cke_dialog_ui_input_password{background-color:white;border:none;padding:0;width:100%;height:14px;}.cke_skin_kama div.cke_dialog_ui_input_text,.cke_skin_kama div.cke_dialog_ui_input_password{background-color:white;border:1px solid #a0a0a0;padding:1px 0;_width:99.9%;}.cke_skin_kama .cke_browser_ie7 input.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_ie7 input.cke_dialog_ui_input_password{position:absolute;}.cke_skin_kama .cke_browser_ie7 div.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_ie7 div.cke_dialog_ui_input_password{height:14px;position:relative;}.cke_skin_kama .cke_browser_ie.cke_rtl input.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_opera.cke_rtl input.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_ie.cke_rtl input.cke_dialog_ui_input_password,.cke_skin_kama .cke_browser_opera.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px;}.cke_skin_kama .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_opera.cke_rtl div.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_password,.cke_skin_kama .cke_browser_opera.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px;}.cke_skin_kama .cke_browser_ie.cke_rtl .cke_dialog_ui_vbox_child,.cke_skin_kama .cke_browser_ie.cke_rtl .cke_dialog_ui_hbox_child,.cke_skin_kama .cke_browser_ie.cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_browser_ie.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important;}.cke_skin_kama .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px;}.cke_skin_kama .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_password{border-width:0;}.cke_skin_kama .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_password{border-width:1px;}.cke_skin_kama textarea.cke_dialog_ui_input_textarea{background-color:white;border:none;padding:0;width:100%;_width:99%;overflow:auto;resize:none;}.cke_skin_kama div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_kama div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default;}.cke_skin_kama .cke_rtl .cke_dialog_ui_labeled_content{_width:95%;}.cke_skin_kama .cke_dialog_ui_hbox{width:100%;}.cke_skin_kama .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_dialog_ui_hbox_child,.cke_skin_kama .cke_dialog_ui_hbox_last{vertical-align:top;}.cke_skin_kama .cke_ltr .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px;}.cke_skin_kama .cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px;}.cke_skin_kama a.cke_dialog_ui_button{border-collapse:separate;cursor:default;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background:transparent url(images/sprites.png) repeat-x scroll 0 -1069px;_background:none;padding:5px 0;text-align:center;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button{padding:0;}.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button span{width:70px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span{width:100px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button span{padding:5px 15px;text-align:center;color:#3b3b1f;background:#53D9F0 none;display:inline-block;cursor:default;}.cke_skin_kama .cke_browser_webkit a.cke_dialog_ui_button span.cke_dialog_ui_button{margin:0;}.cke_skin_kama .cke_browser_webkit a.cke_dialog_ui_button{display:inline-block;padding-top:3px;padding-bottom:2px;margin:2px 0;}.cke_skin_kama a.cke_dialog_ui_button_ok span,.cke_skin_kama a.cke_dialog_ui_button_cancel span{width:60px;padding-right:20px;padding-left:20px;}.cke_skin_kama a.cke_dialog_ui_button_ok{background-position:0 -1143px;}
+.cke_skin_kama a.cke_dialog_ui_button_ok span{background:transparent url(images/sprites.png) no-repeat scroll right -1219px;}.cke_skin_kama .cke_rtl a.cke_dialog_ui_button_ok span{background-position:left -1219px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_ok span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_ok span{background-color:#B8E834;margin-right:0;}.cke_skin_kama a.cke_dialog_ui_button_cancel{background-position:0 -1104px;}.cke_skin_kama a.cke_dialog_ui_button_cancel span{background:transparent url(images/sprites.png) no-repeat scroll right -1245px;}.cke_skin_kama .cke_rtl a.cke_dialog_ui_button_cancel span{background-position:left -1245px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_cancel span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_cancel span{background-color:#F65D20;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_cancel span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_cancel span,.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_ok span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_ok span{background-image:none;}.cke_skin_kama span.cke_dialog_ui_button{padding:2px 10px;text-align:center;color:#222;display:inline-block;cursor:default;min-width:60px;+margin:2px 0;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{display:block;}.cke_skin_kama a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3;}.cke_skin_kama a:hover.cke_dialog_ui_button,.cke_skin_kama a:focus.cke_dialog_ui_button,.cke_skin_kama a:active.cke_dialog_ui_button{background-position:0 -1180px;}.cke_skin_kama .cke_hc a:hover.cke_dialog_ui_button,.cke_skin_kama .cke_hc a:focus.cke_dialog_ui_button,.cke_skin_kama .cke_hc a:active.cke_dialog_ui_button{border-width:2px;}.cke_skin_kama .cke_browser_iequirks a:hover.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a:focus.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a:active.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a:hover.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a:focus.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a:active.cke_dialog_ui_button span{background-image:none;background:#F7A922;}.cke_skin_kama .cke_dialog_footer_buttons{display:inline-table;margin-right:12px;margin-left:12px;width:auto;position:relative;}.cke_skin_kama .cke_browser_ie7 .cke_dialog_footer_buttons{position:static;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons{display:inline;}.cke_skin_kama .cke_dialog_footer_buttons span.cke_dialog_ui_button{margin:7px 0;text-align:center;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons a.cke_dialog_ui_button{display:block;padding:0;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{padding-bottom:5px;padding-top:6px;margin-bottom:0;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons .cke_dialog_ui_button_ok .cke_dialog_ui_button{background-position:right -1214px;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons .cke_dialog_ui_button_cancel .cke_dialog_ui_button{background-position:right -1242px;}.cke_skin_kama .cke_browser_ie9.cke_rtl .cke_dialog_footer_buttons td{padding-left:2px;}.cke_skin_kama strong{font-weight:bold;}.cke_skin_kama .cke_dialog .cke_dialog_body .cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;_background-image:url(images/sprites_ie6.png);}.cke_skin_kama .cke_dialog_close_button span{display:none;}.cke_skin_kama .cke_dialog_close_button:hover{background-position:0 -1045px;}.cke_skin_kama .cke_ltr .cke_dialog_close_button{right:10px;}.cke_skin_kama .cke_browser_ie8.cke_rtl .cke_dialog_close_button{left:8px;}.cke_skin_kama .cke_rtl .cke_dialog_close_button{left:10px;}.cke_skin_kama .cke_browser_ie7.cke_rtl .cke_dialog_close_button{left:16px;top:0;}.cke_skin_kama .cke_browser_ie7.cke_rtl .cke_dialog_close_button{position:absolute;left:10px;top:5px;}
+.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_footer{margin-top:22px;}.cke_skin_kama .cke_browser_ie6 .cke_dialog_close_button,.cke_skin_kama .cke_browser_iequirks .cke_dialog_close_button{top:7px;}.cke_skin_kama .cke_browser_ie7.cke_ltr .cke_dialog_close_button{margin-top:0;}.cke_skin_kama .cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white;}.cke_skin_kama .cke_dialog_ui_input_file{width:100%;height:25px;}.cke_skin_kama .cke_dialog .cke_dark_background{background-color:#eaead1;}.cke_skin_kama .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_kama .cke_dialog .cke_centered{text-align:center;}.cke_skin_kama .cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px;}.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_reset{float:left;}.cke_skin_kama .cke_dialog a.cke_btn_locked,.cke_skin_kama .cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px;}.cke_skin_kama .cke_dialog a.cke_btn_locked .cke_icon{display:none;}.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_locked,.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_unlocked{float:right;}.cke_skin_kama .cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif);}.cke_skin_kama .cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer;}.cke_skin_kama .cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white;}.cke_skin_kama .cke_dialog .ImagePreviewBox table td{white-space:normal;}.cke_skin_kama .cke_browser_iequirks .cke_dialog_page_contents{_position:absolute;}.cke_skin_kama .cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4;}.cke_skin_kama .cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white;}.cke_skin_kama .cke_dialog .cke_pastetext{width:346px;height:170px;}.cke_skin_kama .cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none;}.cke_skin_kama .cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black;}.cke_skin_kama .cke_dialog .cke_dark_background{text-align:center;background-color:#eaead1;font-size:14px;}.cke_skin_kama .cke_dialog .cke_light_background{text-align:center;background-color:#ffffbe;}.cke_skin_kama .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_kama .cke_disabled{color:#a0a0a0;}.cke_skin_kama .cke_hc .cke_dialog_title,.cke_skin_kama .cke_hc .cke_dialog_tabs,.cke_skin_kama .cke_hc .cke_dialog_contents,.cke_skin_kama .cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid;}.cke_skin_kama .cke_hc .cke_dialog_title{border-top:1px solid;}.cke_skin_kama .cke_hc .cke_dialog_footer{border-bottom:1px solid;}.cke_skin_kama .cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px;}.cke_skin_kama .cke_dialog_body .cke_label{display:none;}.cke_skin_kama .cke_dialog_body label.cke_required{font-weight:bold;}.cke_skin_kama .cke_hc .cke_dialog_body .cke_label{display:inline;cursor:inherit;}.cke_skin_kama .cke_hc a.cke_btn_locked,.cke_skin_kama .cke_hc a.cke_btn_unlocked,.cke_skin_kama .cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;padding:0 2px;}.cke_skin_kama .cke_rtl.cke_hc a.cke_btn_locked,.cke_skin_kama .cke_rtl.cke_hc a.cke_btn_unlocked,.cke_skin_kama .cke_rtl.cke_hc a.cke_btn_reset{float:right;}.cke_skin_kama .cke_hc a.cke_btn_locked .cke_icon{display:inline;}.cke_skin_kama a.cke_smile img{border:2px solid #eaead1;}.cke_skin_kama a.cke_smile:focus img,.cke_skin_kama a.cke_smile:active img,.cke_skin_kama a.cke_smile:hover img{border-color:#C7C78F;}.cke_skin_kama .cke_hc .cke_dialog_tabs a,.cke_skin_kama .cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white;}
+.cke_skin_kama .cke_hc .ImagePreviewBox{width:260px;}.cke_skin_kama .cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px;}.cke_skin_kama .cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px;}.cke_skin_kama .cke_browser_gecko .cke_dialog_ui_checkbox_input:focus,.cke_skin_kama .cke_browser_gecko .cke_dialog_ui_radio_input:focus,.cke_skin_kama .cke_browser_opera .cke_dialog_ui_checkbox_input:focus,.cke_skin_kama .cke_browser_opera .cke_dialog_ui_radio_input:focus,.cke_skin_kama .cke_browser_gecko .cke_dialog_ui_input_select:focus,.cke_skin_kama .cke_browser_gecko .cke_btn_over,.cke_skin_kama .cke_browser_opera .cke_btn_over,.cke_skin_kama .cke_browser_ie .cke_btn_over{outline:1px dotted #696969;}.cke_skin_kama .cke_browser_ie .cke_dialog_ui_checkbox_input,.cke_skin_kama .cke_browser_ie .cke_dialog_ui_ratio_input,.cke_skin_kama .cke_browser_ie .cke_btn_reset,.cke_skin_kama .cke_browser_ie .cke_btn_locked,.cke_skin_kama .cke_browser_ie .cke_btn_unlocked{*border:1px solid transparent!important;-border:1px solid red!important;-filter:chroma(color=red);}.cke_skin_kama .cke_browser_ie .cke_dialog_ui_focused,.cke_skin_kama .cke_browser_ie .cke_btn_over{*border:1px dotted #696969!important;}.cke_skin_kama .cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity=0);width:100%;height:100%;}.cke_dialog label{display:inline;margin-bottom:auto;cursor:default;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/editor.css b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/editor.css
new file mode 100755
index 0000000..71d3499
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/editor.css
@@ -0,0 +1,13 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama *,.cke_skin_kama a:hover,.cke_skin_kama a:link,.cke_skin_kama a:visited,.cke_skin_kama a:active{margin:0;padding:0;border:0;background:transparent;text-decoration:none;font:normal normal normal 100% Sans-Serif;width:auto;height:auto;border-collapse:collapse;text-align:left;vertical-align:baseline;white-space:nowrap;cursor:auto;color:#000;float:none;font-size:12px;font-family:Arial,Helvetica,Tahoma,Verdana,Sans-Serif;}.cke_skin_kama .cke_rtl *,.cke_skin_kama .cke_rtl a:hover,.cke_skin_kama .cke_rtl a:link,.cke_skin_kama .cke_rtl a:visited,.cke_skin_kama .cke_rtl a:active,.cke_rtl .cke_skin_kama *,.cke_rtl .cke_skin_kama a:hover,.cke_rtl .cke_skin_kama a:link,.cke_rtl .cke_skin_kama a:visited,.cke_rtl .cke_skin_kama a:active{text-align:right;}.cke_skin_kama iframe{vertical-align:inherit;}.cke_skin_kama textarea{white-space:pre;}.cke_skin_kama .cke_browser_gecko textarea{cursor:text;}.cke_skin_kama .cke_browser_gecko textarea[disabled]{cursor:default;}.cke_skin_kama input[type="text"],.cke_skin_kama input[type="password"]{cursor:text;}.cke_skin_kama input[type="text"][disabled],.cke_skin_kama input[type="password"][disabled]{cursor:default;}.cke_skin_kama fieldset{padding:10px;border:2px groove #E0DFE3;}.cke_skin_kama{display:block;}span.cke_skin_kama{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:1px solid #D3D3D3;padding:5px;}.cke_skin_kama span.cke_browser_webkit,.cke_skin_kama span.cke_browser_gecko18{display:block;}.cke_skin_kama .cke_wrapper{-moz-border-radius:5px;-webkit-border-radius:5px;-webkit-touch-callout:none;border-radius:5px;background-color:#d3d3d3;background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1950px;display:block;_display:inline-block;padding:5px;}.cke_shared .cke_skin_kama .cke_wrapper{padding-bottom:0;}.cke_skin_kama .cke_browser_ie6 .cke_wrapper,.cke_skin_kama .cke_browser_iequirks .cke_wrapper{background-image:none;}.cke_skin_kama .cke_editor{display:inline-table;width:100%;}.cke_skin_kama .cke_browser_ie .cke_editor,.cke_skin_kama .cke_browser_webkit .cke_editor{display:table;}.cke_skin_kama .ltr .cke_browser_ie iframe{margin-right:-10px;}.cke_skin_kama .rtl .cke_browser_ie iframe{margin-left:-10px;}.cke_skin_kama .cke_browser_opera .cke_editor.cke_skin_kama .cke_resizer{display:table;}.cke_skin_kama .cke_contents{margin:5px;}.cke_skin_kama .cke_hc .cke_contents{border:1px solid black;}.cke_skin_kama .cke_contents iframe{background-color:#fff;}.cke_skin_kama .cke_focus{outline:auto 5px -webkit-focus-ring-color;}.cke_skin_kama textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre;}.cke_skin_kama .cke_browser_iequirks textarea.cke_source{_white-space:normal;}.cke_skin_kama .cke_resizer{width:12px;height:12px;margin-top:9px;display:block;float:right;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1428px;background-repeat:no-repeat;cursor:se-resize;}.cke_skin_kama .cke_browser_air .cke_resizer,.cke_skin_kama .cke_browser_air .cke_rtl .cke_resizer{cursor:move;}.cke_skin_kama .cke_resizer_rtl{cursor:sw-resize;background-position:0 -1455px;float:left;}.cke_skin_kama .cke_resizer_horizontal,.cke_skin_kama .cke_rtl .cke_resizer_horizontal{cursor:e-resize;}.cke_skin_kama .cke_resizer_vertical,.cke_skin_kama .cke_rtl .cke_resizer_vertical{cursor:n-resize;}.cke_skin_kama .cke_maximized .cke_resizer{display:none;}.cke_skin_kama .cke_browser_ie6 .cke_contents textarea,.cke_skin_kama .cke_browser_ie7 .cke_contents textarea{position:absolute;}.cke_skin_kama .cke_browser_ie.cke_browser_quirks .cke_contents iframe{position:absolute;top:0;}.cke_skin_kama .cke_browser_ie6 .cke_editor,.cke_skin_kama .cke_browser_ie7 .cke_editor{display:inline-block;}.cke_skin_kama .cke_browser_ie6 .cke_editor,.cke_shared .cke_skin_kama .cke_browser_ie7 .cke_wrapper{padding-bottom:5px;}.cke_skin_kama .cke_voice_label{display:none;}.cke_skin_kama legend.cke_voice_label{display:none;}.cke_skin_kama .cke_browser_ie legend.cke_voice_label{position:absolute;display:block;width:0;height:0;overflow:hidden;}
+.cke_skin_kama .cke_panel{border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.cke_skin_kama .cke_contextmenu{margin:0;}.cke_skin_kama .cke_panel iframe{width:100%;height:100%;}html.cke_skin_kama_container{overflow:auto;overflow-x:hidden;}body.cke_panel_frame{overflow:auto;}.cke_panel_frame .cke_label{display:none;}ul.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap;}li.cke_panel_listItem{margin:0;}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;}* html .cke_panel_listItem a{width:100%;color:#000;}*:first-child+html .cke_panel_listItem a{color:#000;}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff;}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff;}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0;}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px;}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px;}.cke_skin_kama .cke_button_textcolor_panel,.cke_skin_kama .cke_button_bgcolor_panel{width:150px;height:135px;}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000;}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left;}.cke_rtl span.cke_colorbox{float:right;}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;}.cke_rtl a.cke_colorbox{float:right;}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff;}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer;}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff;}@media print{.cke_skin_kama .cke_toolbox{display:none;}}.cke_skin_kama .cke_browser_webkit .cke_toolbox,.cke_skin_kama .cke_browser_webkit .cke_toolbox>span{white-space:normal;}.cke_skin_kama .cke_toolbox{clear:both;padding-bottom:1px;}.cke_skin_kama a.cke_toolbox_collapser,.cke_skin_kama a:hover.cke_toolbox_collapser{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:3px -1366px;background-repeat:no-repeat;width:11px;height:11px;float:right;border:1px outset #D3D3D3;margin:11px 0 2px;cursor:pointer;}.cke_skin_kama .cke_rtl a.cke_toolbox_collapser,.cke_skin_kama .cke_rtl a:hover.cke_toolbox_collapser{float:left;}.cke_skin_kama a.cke_toolbox_collapser span{display:none;}.cke_skin_kama .cke_hc a.cke_toolbox_collapser span{font-size:10px;font-weight:bold;font-family:Arial;display:inline;}.cke_skin_kama a.cke_toolbox_collapser_min,.cke_skin_kama a:hover.cke_toolbox_collapser_min{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:4px -1387px;background-repeat:no-repeat;margin:2px 4px;}.cke_skin_kama .cke_rtl a.cke_toolbox_collapser_min,.cke_skin_kama .cke_rtl a:hover.cke_toolbox_collapser_min{background-position:4px -1408px;}.cke_skin_kama .cke_separator{display:inline-block;border-left:solid 1px #D3D3D3;margin:3px 2px 0;height:16px;vertical-align:top;}.cke_skin_kama .cke_break{font-size:0;clear:left;}.cke_skin_kama .cke_rtl .cke_break{clear:right;}.cke_skin_kama .cke_toolbar_start{display:none;}.cke_skin_kama .cke_toolgroup{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:repeat-x;background-position:0 -500px;float:left;margin-right:6px;margin-bottom:5px;padding:2px;display:inline;}
+.cke_skin_kama .cke_rtl .cke_toolgroup{float:right;margin-right:0;margin-left:6px;}.cke_skin_kama .cke_button a,.cke_skin_kama .cke_button a:hover,.cke_skin_kama .cke_button a:focus,.cke_skin_kama .cke_button a:active,.cke_skin_kama .cke_button a.cke_off{border-radius:3px;outline:none;padding:2px 4px;height:18px;display:inline-block;cursor:default;}.cke_skin_kama .cke_button a,.cke_skin_kama .cke_button a.cke_off{filter:alpha(opacity=70);opacity:.70;-moz-border-radius:3px;-webkit-border-radius:3px;}.cke_skin_kama .cke_hc .cke_button a,.cke_skin_kama .cke_hc .cke_button a.cke_off{opacity:1.0;filter:alpha(opacity=100);border:1px solid white;}.cke_skin_kama .cke_button a.cke_on{background-color:#a3d7ff;filter:alpha(opacity=100);opacity:1;padding:2px 4px;}.cke_skin_kama .cke_hc .cke_button a.cke_on{padding:0 2px!important;border-width:3px;}.cke_skin_kama .cke_button a.cke_disabled *{filter:alpha(opacity=30);opacity:.3;}.cke_skin_kama .cke_browser_ie .cke_button a.cke_disabled *,.cke_skin_kama .cke_browser_ie a:hover.cke_button .cke_disabled *{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);}.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button a.cke_disabled *,.cke_skin_kama .cke_browser_ie .cke_rtl a:hover.cke_button .cke_disabled *{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);}.cke_skin_kama .cke_browser_ie6 .cke_button a.cke_disabled *,.cke_skin_kama .cke_browser_ie6 a:hover.cke_button .cke_disabled *,.cke_skin_kama .cke_browser_ie .cke_button.cke_noalphafix a.cke_disabled *{filter:alpha(opacity=30);}.cke_skin_kama .cke_hc .cke_button a.cke_disabled *,.cke_skin_kama .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled *{filter:alpha(opacity=60);opacity:.6;}.cke_skin_kama .cke_button a:hover.cke_on,.cke_skin_kama .cke_button a:focus.cke_on,.cke_skin_kama .cke_button a:active.cke_on,.cke_skin_kama .cke_button a:hover.cke_off,.cke_skin_kama .cke_button a:focus.cke_off,.cke_skin_kama .cke_button a:active.cke_off{filter:alpha(opacity=100);opacity:1;padding:2px 4px;}.cke_skin_kama .cke_button a:hover,.cke_skin_kama .cke_button a:focus,.cke_skin_kama .cke_button a:active{background-color:#dff1ff;}.cke_skin_kama .cke_button a:hover.cke_on,.cke_skin_kama .cke_button a:focus.cke_on,.cke_skin_kama .cke_button a:active.cke_on{background-color:#86caff;}.cke_skin_kama .cke_hc .cke_button a:hover,.cke_skin_kama .cke_hc .cke_button a:focus,.cke_skin_kama .cke_hc .cke_button a:active{padding:0 2px!important;border-width:3px;}.cke_skin_kama .cke_button .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;display:inline-block;cursor:default;}.cke_skin_kama .cke_rtl .cke_button .cke_icon{background-image:url(icons_rtl.png);}.cke_skin_kama .cke_browser_ie .cke_button .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_skin_kama .cke_browser_ie6 .cke_button .cke_icon,.cke_skin_kama .cke_browser_ie6 .cke_rtl .cke_button .cke_icon,.cke_skin_kama .cke_browser_ie .cke_button.cke_noalphafix .cke_icon,.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button.cke_noalphafix .cke_icon{filter:;}.cke_skin_kama .cke_button .cke_label{cursor:default;display:none;padding-left:3px;line-height:18px;vertical-align:middle;}.cke_skin_kama .cke_hc .cke_button .cke_label{padding:0;display:inline-block;}.cke_skin_kama .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_kama .cke_accessibility{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_kama .cke_button .cke_buttonarrow{display:inline-block;height:17px;width:8px;background-position:2px -1469px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;cursor:default;}.cke_skin_kama .cke_browser_ie .cke_button .cke_buttonarrow{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}
+.cke_skin_kama .cke_browser_ie6 .cke_button .cke_buttonarrow{filter:;}.cke_skin_kama .cke_browser_gecko .cke_toolbar,.cke_skin_kama .cke_browser_gecko .cke_button a,.cke_skin_kama .cke_browser_gecko .cke_button a.cke_off,.cke_skin_kama .cke_browser_gecko .cke_button .cke_icon,.cke_skin_kama .cke_browser_gecko .cke_button .cke_buttonarrow,.cke_skin_kama .cke_browser_gecko .cke_separator,.cke_skin_kama .cke_browser_gecko .cke_toolbar_start{display:block;float:left;}.cke_skin_kama .cke_browser_gecko.cke_hc .cke_button .cke_icon{display:none;}.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_toolbar,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button a,.cke_skin_kama .cke_browser_gecko .cke_rtl.cke_button a.cke_off,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_icon,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_buttonarrow,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_separator,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_toolbar_start{float:right;}.cke_skin_kama .cke_browser_gecko .cke_button .cke_label,.cke_skin_kama .cke_browser_gecko .cke_break{float:left;}.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_label,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_break{float:right;}.cke_skin_kama .cke_browser_webkit .cke_toolbar{float:left;}.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_toolbar{float:right;}.cke_skin_kama .cke_browser_ie .cke_button .cke_label{line-height:16px;}.cke_skin_kama .cke_browser_ie .cke_rcombo,.cke_skin_kama .cke_browser_ie .cke_rcombo *{cursor:default;}.cke_skin_kama .cke_browser_ie .cke_toolbox{padding-bottom:5px;_padding-bottom:6px;}.cke_shared .cke_skin_kama .cke_browser_ie .cke_toolbox{padding-bottom:0;}.cke_skin_kama .cke_contextmenu{padding:2px;}.cke_skin_kama .cke_menuitem a{display:block;}.cke_skin_kama .cke_menuitem span{cursor:default;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{background-color:#D3D3D3;display:block;}.cke_hc .cke_menuitem a:hover,.cke_hc .cke_menuitem a:focus,.cke_hc .cke_menuitem a:active{border:2px solid;}.cke_skin_kama .cke_menuitem .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;background-color:transparent;width:16px;height:16px;float:left;}.cke_rtl .cke_skin_kama .cke_menuitem .cke_icon{background-image:url(icons_rtl.png);}.cke_browser_ie .cke_skin_kama .cke_menuitem .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie.cke_rtl .cke_skin_kama .cke_menuitem .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie6 .cke_skin_kama .cke_menuitem .cke_icon,.cke_browser_ie .cke_skin_kama .cke_menuitem.cke_noalphafix .cke_icon{filter:;}.cke_skin_kama .cke_menuitem .cke_disabled .cke_icon{filter:alpha(opacity=70);opacity:.70;}.cke_browser_ie .cke_skin_kama .cke_menuitem .cke_disabled .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie.cke_rtl .cke_skin_kama .cke_menuitem .cke_disabled .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie6 .cke_skin_kama .cke_menuitem .cke_disabled .cke_icon,.cke_browser_ie .cke_skin_kama .cke_menuitem.cke_noalphafix .cke_disabled .cke_icon{filter:;}.cke_skin_kama .cke_menuitem .cke_icon_wrapper{background-color:#D3D3D3;border:solid 4px #D3D3D3;width:16px;height:16px;float:left;filter:alpha(opacity=70);opacity:.70;clear:both;}.cke_rtl .cke_skin_kama .cke_menuitem .cke_icon_wrapper{float:right;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{background-color:#9d9d9d;border:solid 4px #9d9d9d;filter:alpha(opacity=70);opacity:.70;}.cke_skin_kama .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active.cke_disabled .cke_icon_wrapper{background-color:#D3D3D3;border:solid 4px #D3D3D3;}
+.cke_skin_kama .cke_menuitem .cke_label{display:block;padding-right:3px;padding-top:5px;padding-left:4px;height:19px;margin-left:24px;background-color:#fff;}.cke_skin_kama .cke_frameLoaded .cke_menuitem .cke_label{filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_kama .cke_menuitem .cke_label{padding-right:0;margin-left:0;padding-left:3px;margin-right:28px;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.30;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{background-color:#D3D3D3;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{background-color:transparent;}.cke_skin_kama .cke_menuseparator{background-color:#D3D3D3;height:2px;filter:alpha(opacity=70);opacity:.70;_font-size:0;}.cke_skin_kama .cke_menuarrow{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1411px;background-repeat:no-repeat;height:5px;width:3px;float:right;margin-right:2px;margin-top:3px;}.cke_rtl .cke_skin_kama .cke_menuarrow{float:left;margin-right:0;margin-left:2px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1390px;background-repeat:no-repeat;}.cke_skin_kama .cke_menuarrow span{display:none;}.cke_hc .cke_skin_kama .cke_menuarrow{width:auto;margin-top:0;}.cke_hc .cke_skin_kama .cke_menuarrow span{display:inline;}.cke_browser_ie.cke_ltr .cke_skin_kama .cke_menuarrow{position:absolute;right:2px;}.cke_browser_ie.cke_rtl .cke_skin_kama .cke_menuarrow{position:absolute;left:2px;}.cke_skin_kama .cke_rcombo{display:inline;}.cke_skin_kama .cke_rcombopanel{border:1px solid #8F8F73;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;height:auto;_height:100px;}.cke_skin_kama .cke_rcombo a,.cke_skin_kama .cke_rcombo a:active,.cke_skin_kama .cke_rcombo a:hover{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:repeat-x;background-position:0 -100px;border-bottom:1px solid #DAD9D9;border-right:1px solid #DAD9D9;float:left;padding:2px;height:21px;margin-right:6px;margin-bottom:5px;}.cke_skin_kama .cke_rtl .cke_rcombo a,.cke_skin_kama .cke_rtl .cke_rcombo a:active,.cke_skin_kama .cke_rtl .cke_rcombo a:hover{float:right;margin-right:0;margin-left:6px;}.cke_skin_kama .cke_hc .cke_rcombo a{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_kama .cke_rcombo .cke_label{display:none;line-height:26px;vertical-align:top;margin-right:5px;filter:alpha(opacity=70);opacity:.70;}.cke_skin_kama .cke_rtl .cke_rcombo .cke_label{margin-right:0;margin-left:5px;}.cke_skin_kama .cke_rcombo .cke_inline_label{line-height:21px;font-style:italic;color:#666;}.cke_skin_kama .cke_hc .cke_rcombo .cke_openbutton{vertical-align:top;}.cke_skin_kama .cke_hc .cke_rcombo .cke_label{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_kama .cke_rcombo .cke_text{filter:alpha(opacity=70);opacity:.70;height:21px;line-height:21px;width:60px;text-overflow:ellipsis;overflow:hidden;display:inline-block;margin:0 2px 0 4px;cursor:default;}.cke_skin_kama .cke_rtl .cke_rcombo .cke_text{margin:0 4px 0 2px;}.cke_skin_kama .cke_rcombo .cke_openbutton{display:inline-block;}.cke_skin_kama .cke_rcombo .cke_openbutton .cke_icon{display:inline-block;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -68px;background-repeat:no-repeat;width:17px;height:19px;margin:1px 2px;}.cke_skin_kama .cke_hc .cke_rcombo .cke_openbutton .cke_icon{background:none;}.cke_skin_kama .cke_browser_iequirks .cke_rcombo .cke_openbutton{margin-bottom:0;}.cke_skin_kama .cke_rcombo .cke_off a:hover .cke_text,.cke_skin_kama .cke_rcombo .cke_off a:focus .cke_text,.cke_skin_kama .cke_rcombo .cke_off a:active .cke_text,.cke_skin_kama .cke_rcombo .cke_on .cke_text{border-color:#316ac5;filter:alpha(opacity=100);opacity:1;}
+.cke_skin_kama .cke_rcombo .cke_off a:hover .cke_openbutton,.cke_skin_kama .cke_rcombo .cke_off a:focus .cke_openbutton,.cke_skin_kama .cke_rcombo .cke_off a:active .cke_openbutton,.cke_skin_kama .cke_rcombo .cke_on .cke_openbutton{border-color:#316ac5;background-color:#dff1ff;}.cke_skin_kama .cke_rcombo .cke_on .cke_text{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}.cke_skin_kama .cke_rcombo .cke_on .cke_openbutton{-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}.cke_skin_kama .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.3;}.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=70);opacity:.7;}.cke_skin_kama .cke_rcombo .cke_disabled .cke_text,.cke_skin_kama .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);opacity:.5;}.cke_skin_kama .cke_browser_ie .cke_rcombo .cke_disabled .cke_openbutton{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=50);}.cke_skin_kama .cke_browser_ie6 .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);}.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_text,.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=80);opacity:.8;}.cke_skin_kama .cke_rcombo .cke_disabled .cke_text{color:#fff;}.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_openbutton,.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_openbutton{display:block;float:left;}.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_label,.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_label{float:left;}.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_label,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_openbutton,.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton{float:right;}.cke_skin_kama .cke_browser_ie7 .cke_rcombo .cke_text{line-height:18px;}.cke_skin_kama .cke_browser_ie6 .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_iequirks .cke_rcombo .cke_text{height:auto;line-height:17px;}.cke_skin_kama .cke_rtl .cke_rcombo .cke_font .cke_text,.cke_skin_kama .cke_rtl .cke_rcombo .cke_fontSize .cke_text{direction:ltr;}@media print{.cke_path{display:none;}}.cke_skin_kama .cke_path{display:inline-block;float:left;margin-top:5px;}.cke_skin_kama .cke_rtl .cke_path{float:right;}.cke_shared .cke_skin_kama .cke_path{_width:100%;margin:0 0 5px;}.cke_skin_kama .cke_path a,.cke_skin_kama .cke_path .cke_empty{display:inline-block;float:left;padding:1px 4px 0;color:#60676a;cursor:default;}.cke_skin_kama .cke_path .cke_empty{visibility:hidden;}.cke_skin_kama .cke_rtl .cke_path a,.cke_skin_kama .cke_rtl .cke_path cke_empty{float:right;}.cke_skin_kama .cke_path a:hover,.cke_skin_kama .cke_path a:focus,.cke_skin_kama .cke_path a:active{background-color:#dff1ff;padding:1px 4px 0;outline:none;color:#000;}.cke_skin_kama .cke_browser_ie .cke_rtl .cke_path a,.cke_skin_kama .cke_browser_ie .cke_rtl .cke_path .cke_empty{float:none;}.cke_skin_kama .cke_path .cke_label{display:none;}.cke_skin_kama .cke_button_source .cke_icon{background-position:0 0;}.cke_skin_kama .cke_button_docProps .cke_icon{background-position:0 -16px;}.cke_skin_kama .cke_button_newpage .cke_icon{background-position:0 -48px;}.cke_skin_kama .cke_button_preview .cke_icon{background-position:0 -64px;}.cke_skin_kama .cke_button_cut .cke_icon{background-position:0 -96px;}.cke_skin_kama .cke_button_copy .cke_icon{background-position:0 -112px;}.cke_skin_kama .cke_button_paste .cke_icon{background-position:0 -128px;}.cke_skin_kama .cke_button_pastetext .cke_icon{background-position:0 -144px;}.cke_skin_kama .cke_button_find .cke_icon{background-position:0 -240px;}.cke_skin_kama .cke_button_replace .cke_icon{background-position:0 -256px;}
+.cke_skin_kama .cke_button_selectAll .cke_icon{background-position:0 -272px;}.cke_skin_kama .cke_button_removeFormat .cke_icon{background-position:0 -288px;}.cke_skin_kama .cke_button_bold .cke_icon{background-position:0 -304px;}.cke_skin_kama .cke_button_italic .cke_icon{background-position:0 -320px;}.cke_skin_kama .cke_button_underline .cke_icon{background-position:0 -336px;}.cke_skin_kama .cke_button_strike .cke_icon{background-position:0 -352px;}.cke_skin_kama .cke_button_subscript .cke_icon{background-position:0 -368px;}.cke_skin_kama .cke_button_superscript .cke_icon{background-position:0 -384px;}.cke_skin_kama .cke_button_table .cke_icon{background-position:0 -608px;}.cke_skin_kama .cke_button_horizontalrule .cke_icon{background-position:0 -624px;}.cke_skin_kama .cke_button_smiley .cke_icon{background-position:0 -640px;}.cke_skin_kama .cke_button_link .cke_icon{background-position:0 -528px;}.cke_skin_kama .cke_button_unlink .cke_icon{background-position:0 -544px;}.cke_skin_kama .cke_button_anchor .cke_icon{background-position:0 -560px;}.cke_skin_kama .cke_button_image .cke_icon{background-position:0 -576px;}.cke_skin_kama .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_kama .cke_button_specialchar .cke_icon{background-position:0 -656px;}.cke_skin_kama .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_kama .cke_button_print .cke_icon{background-position:0 -176px;}.cke_skin_kama .cke_button_checkspell .cke_icon,.cke_skin_kama .cke_button_scayt .cke_icon{background-position:0 -192px;}.cke_skin_kama .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_kama .cke_button_textcolor .cke_icon{background-position:0 -704px;}.cke_skin_kama .cke_button_bgcolor .cke_icon{background-position:0 -720px;}.cke_skin_kama .cke_button_form .cke_icon{background-position:0 -752px;}.cke_skin_kama .cke_button_checkbox .cke_icon{background-position:0 -768px;}.cke_skin_kama .cke_button_radio .cke_icon{background-position:0 -784px;}.cke_skin_kama .cke_button_textfield .cke_icon{background-position:0 -800px;}.cke_skin_kama .cke_button_textarea .cke_icon{background-position:0 -816px;}.cke_skin_kama .cke_button_showblocks .cke_icon{background-position:0 -1136px;}.cke_skin_kama .cke_button_select .cke_icon{background-position:0 -832px;}.cke_skin_kama .cke_button_button .cke_icon{background-position:0 -848px;}.cke_skin_kama .cke_button_imagebutton .cke_icon{background-position:0 -864px;}.cke_skin_kama .cke_button_hiddenfield .cke_icon{background-position:0 -880px;}.cke_skin_kama .cke_button_undo .cke_icon{background-position:0 -208px;}.cke_skin_kama .cke_rtl .cke_button_undo .cke_icon{background-position:0 -224px;}.cke_skin_kama .cke_button_redo .cke_icon{background-position:0 -224px;}.cke_skin_kama .cke_rtl .cke_button_redo .cke_icon{background-position:0 -208px;}.cke_skin_kama .cke_button_templates .cke_icon{background-position:0 -80px;}.cke_skin_kama .cke_button_numberedlist .cke_icon{background-position:0 -400px;}.cke_skin_kama .cke_button_bulletedlist .cke_icon{background-position:0 -416px;}.cke_skin_kama .cke_mixed_dir_content .cke_button_numberedlist .cke_icon{background-position:0 -1217px;}.cke_skin_kama .cke_mixed_dir_content .cke_button_bulletedlist .cke_icon{background-position:0 -1233px;}.cke_skin_kama .cke_button_outdent .cke_icon{background-position:0 -432px;}.cke_skin_kama .cke_button_indent .cke_icon{background-position:0 -448px;}.cke_skin_kama .cke_mixed_dir_content .cke_button_indent .cke_icon{background-position:0 -1265px;}.cke_skin_kama .cke_mixed_dir_content .cke_button_outdent .cke_icon{background-position:0 -1249px;}.cke_skin_kama .cke_button_justifyleft .cke_icon{background-position:0 -464px;}.cke_skin_kama .cke_button_justifycenter .cke_icon{background-position:0 -480px;}.cke_skin_kama .cke_button_justifyright .cke_icon{background-position:0 -496px;}.cke_skin_kama .cke_button_justifyblock .cke_icon{background-position:0 -512px;}.cke_skin_kama .cke_button_blockquote .cke_icon{background-position:0 -1152px;}.cke_skin_kama .cke_button_creatediv .cke_icon{background-position:0 -1168px;}
+.cke_skin_kama .cke_button_editdiv .cke_icon{background-position:0 -1184px;}.cke_skin_kama .cke_button_removediv .cke_icon{background-position:0 -1200px;}.cke_skin_kama .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_kama .cke_button_pastefromword .cke_icon{background-position:0 -160px;}.cke_skin_kama .cke_button_save .cke_icon{background-position:0 -32px;}.cke_skin_kama .cke_button_about .cke_icon{background-position:0 -736px;}.cke_skin_kama .cke_button_maximize .cke_icon{background-position:0 -1040px;}.cke_skin_kama .cke_button_editdiv .cke_icon{background-position:0 -1184px;}.cke_skin_kama .cke_button_bidirtl .cke_icon{background-position:0 -1072px;}.cke_skin_kama .cke_button_bidiltr .cke_icon{background-position:0 -1056px;}.cke_skin_kama .cke_button_iframe .cke_icon{background-position:0 -1279px;}.cke_skin_kama .cke_button_source .cke_label{display:inline;}.cke_skin_kama .cke_styles_panel{width:150px;height:170px;}.cke_skin_kama .cke_format_panel{width:150px;height:170px;}.cke_skin_kama .cke_font_panel{width:150px;height:170px;}.cke_skin_kama .cke_fontSize_panel{height:170px;}.cke_skin_kama .cke_fontSize .cke_text{width:25px;}.cke_skin_kama .cke_browser_iequirks .cke_fontSize .cke_text{width:32px;}html .cke_skin_kama{visibility:inherit;}html.cke_skin_kama_container{visibility:visible;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/icons.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/icons.png
new file mode 100755
index 0000000..7c3bf19
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/icons.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/icons_rtl.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/icons_rtl.png
new file mode 100755
index 0000000..83eee28
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/icons_rtl.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/dialog_sides.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/dialog_sides.gif
new file mode 100755
index 0000000..8f91b47
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/dialog_sides.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/dialog_sides.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/dialog_sides.png
new file mode 100755
index 0000000..1042a61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/dialog_sides.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/dialog_sides_rtl.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/dialog_sides_rtl.png
new file mode 100755
index 0000000..d7f7b49
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/dialog_sides_rtl.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/mini.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/mini.gif
new file mode 100755
index 0000000..54d9107
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/mini.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/noimage.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/noimage.png
new file mode 100755
index 0000000..1598113
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/noimage.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/sprites.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/sprites.png
new file mode 100755
index 0000000..0cb4e1c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/sprites.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/sprites_ie6.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/sprites_ie6.png
new file mode 100755
index 0000000..5bb305c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/sprites_ie6.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/toolbar_start.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/toolbar_start.gif
new file mode 100755
index 0000000..1774246
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/images/toolbar_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/skin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/skin.js
new file mode 100755
index 0000000..b675094
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/skin.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add('kama',(function(){var a='cke_ui_color';return{editor:{css:['editor.css']},dialog:{css:['dialog.css']},richcombo:{canGroup:false},templates:{css:['templates.css']},margins:[0,0,0,0],init:function(b){if(b.config.width&&!isNaN(b.config.width))b.config.width-=12;var c=[],d=/\$color/g,e='/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';if(CKEDITOR.env.webkit){e=e.split('}').slice(0,-1);for(var f=0;f<e.length;f++)e[f]=e[f].split('{');}function g(j){var k=j.getById(a);if(!k){k=j.getHead().append('style');k.setAttribute('id',a);k.setAttribute('type','text/css');}return k;};function h(j,k,l){var m,n,o;for(var p=0;p<j.length;p++){if(CKEDITOR.env.webkit)for(n=0;n<k.length;n++){o=k[n][1];for(m=0;m<l.length;m++)o=o.replace(l[m][0],l[m][1]);j[p].$.sheet.addRule(k[n][0],o);}else{o=k;for(m=0;m<l.length;m++)o=o.replace(l[m][0],l[m][1]);if(CKEDITOR.env.ie)j[p].$.styleSheet.cssText+=o;else j[p].$.innerHTML+=o;}}};var i=/\$color/g;CKEDITOR.tools.extend(b,{uiColor:null,getUiColor:function(){return this.uiColor;},setUiColor:function(j){var k,l=g(CKEDITOR.document),m='.'+b.id,n=[m+' .cke_wrapper',m+'_dialog .cke_dialog_contents',m+'_dialog a.cke_dialog_tab',m+'_dialog .cke_dialog_footer'].join(','),o='background-color: $color !important;';
+if(CKEDITOR.env.webkit)k=[[n,o]];else k=n+'{'+o+'}';return(this.setUiColor=function(p){var q=[[i,p]];b.uiColor=p;h([l],k,q);h(c,e,q);})(j);}});b.on('menuShow',function(j){var k=j.data[0],l=k.element.getElementsByTag('iframe').getItem(0).getFrameDocument();if(!l.getById('cke_ui_color')){var m=g(l);c.push(m);var n=b.getUiColor();if(n)h([m],e,[[i,n]]);}});if(b.config.uiColor)b.setUiColor(b.config.uiColor);}};})());(function(){CKEDITOR.dialog?a():CKEDITOR.on('dialogPluginReady',a);function a(){CKEDITOR.dialog.on('resize',function(b){var c=b.data,d=c.width,e=c.height,f=c.dialog,g=f.parts.contents;if(c.skin!='kama')return;g.setStyles({width:d+'px',height:e+'px'});});};})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/templates.css b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/templates.css
new file mode 100755
index 0000000..e8af77b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/kama/templates.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama .cke_tpl_list{border:#dcdcdc 2px solid;background-color:#fff;overflow-y:auto;overflow-x:hidden;width:100%;height:220px;}.cke_skin_kama .cke_tpl_item{margin:5px;padding:7px;border:#eee 1px solid;*width:88%;}.cke_skin_kama .cke_tpl_preview{border-collapse:separate;text-indent:0;width:100%;}.cke_skin_kama .cke_tpl_preview td{padding:2px;vertical-align:middle;}.cke_skin_kama .cke_tpl_preview .cke_tpl_preview_img{width:100px;}.cke_skin_kama .cke_tpl_preview span{white-space:normal;}.cke_skin_kama .cke_tpl_title{font-weight:bold;}.cke_skin_kama .cke_tpl_list a:active .cke_tpl_item,.cke_skin_kama .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_kama .cke_tpl_list a:focus .cke_tpl_item{border:#f93 1px solid;background-color:#fffacd;}.cke_skin_kama .cke_tpl_list a:active *,.cke_skin_kama .cke_tpl_list a:hover *,.cke_skin_kama .cke_tpl_list a:focus *{cursor:pointer;}.cke_skin_kama .cke_browser_ie6 .cke_tpl_list a:active,.cke_skin_kama .cke_browser_ie6 .cke_tpl_list a:hover,.cke_skin_kama .cke_browser_ie6 .cke_tpl_list a:focus{background-position:0 0;}.cke_skin_kama .cke_hc .cke_tpl_list a:active .cke_tpl_item,.cke_skin_kama .cke_hc .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_kama .cke_hc .cke_tpl_list a:focus .cke_tpl_item{border-width:3px;}.cke_skin_kama .cke_tpl_empty,.cke_tpl_loading{text-align:center;padding:5px;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/dialog.css b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/dialog.css
new file mode 100755
index 0000000..c70abb2
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/dialog.css
@@ -0,0 +1,10 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body .cke_dialog{visibility:visible;}.cke_skin_office2003 table.cke_dialog.cke_browser_gecko{display:block;}.cke_skin_office2003 .cke_dialog_body{margin-left:16px;margin-right:16px;margin-top:2px;margin-bottom:20px;z-index:1;_position:static;}.cke_skin_office2003 .cke_dialog_tl,.cke_skin_office2003 .cke_dialog_tr,.cke_skin_office2003 .cke_dialog_tc,.cke_skin_office2003 .cke_dialog_bl,.cke_skin_office2003 .cke_dialog_br,.cke_skin_office2003 .cke_dialog_bc{background-image:url(images/sprites.png);background-repeat:no-repeat;position:absolute;_background-image:url(images/sprites_ie6.png);z-index:-1;}.cke_skin_office2003 .cke_dialog_tl{background-position:-16px -16px;height:16px;width:16px;top:0;left:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_tl{background-position:-16px -397px;}.cke_skin_office2003 .cke_dialog_tr{background-position:-16px -76px;height:16px;width:16px;top:0;right:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_tr{background-position:-16px -457px;}.cke_skin_office2003 .cke_dialog_tc{background-position:0 -136px;background-repeat:repeat-x;height:16px;top:0;left:16px;right:16px;}.cke_skin_office2003 .cke_dialog_bl{background-position:-16px -196px;height:51px;width:30px;bottom:0;left:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_bl{background-position:-16px -517px;}.cke_skin_office2003 .cke_dialog_br{background-position:-16px -263px;height:51px;width:30px;bottom:0;right:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_br{background-position:-16px -584px;}.cke_skin_office2003 .cke_dialog_bc{background-position:0 -330px;background-repeat:repeat-x;height:51px;bottom:0;left:30px;right:30px;}.cke_skin_office2003 .cke_dialog_ml,.cke_skin_office2003 .cke_dialog_mr{background-image:url(images/dialog_sides.png);background-repeat:repeat-y;position:absolute;width:16px;top:16px;bottom:51px;_background-image:url(images/dialog_sides.gif);_top:auto;}.cke_skin_office2003 .cke_rtl .cke_dialog_ml,.cke_skin_office2003 .cke_rtl .cke_dialog_mr{background-image:url(images/dialog_sides_rtl.png);_background-image:url(images/dialog_sides.gif);}.cke_skin_office2003 .cke_dialog_ml{background-position:0 0;left:0;}.cke_skin_office2003 .cke_dialog_mr{background-position:-16px 0;right:0;}.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_ml,.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_mr{margin-top:3px;}.cke_skin_office2003 .cke_dialog_title{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -678px;background-repeat:repeat-x;font-weight:bold;font-size:14pt;color:#0E3460;background-color:#8db1ff;padding:3px 10px 26px 10px;cursor:move;position:relative;}.cke_skin_office2003 .cke_browser_ie.cke_rtl .cke_dialog_title{position:static;}.cke_skin_office2003 .cke_dialog_contents{background-color:#f7f8fd;border:#2b66c9 1px solid;overflow:auto;padding:5px 10px;}.cke_skin_office2003 .cke_dialog_footer{background-color:#8db1ff;text-align:right;}.cke_skin_office2003 .cke_rtl .cke_dialog_footer{text-align:left;}.cke_skin_office2003 .cke_dialog_footer .cke_resizer{margin-top:21px;}.cke_skin_office2003 .cke_dialog_tabs{height:23px;background-color:#8db1ff;display:inline-block;margin-left:10px;margin-right:10px;margin-top:-23px;position:absolute;z-index:2;}.cke_skin_office2003 .cke_rtl .cke_dialog_tabs{right:10px;}.cke_skin_office2003 a.cke_dialog_tab,.cke_skin_office2003 a:link.cke_dialog_tab,.cke_skin_office2003 a:active.cke_dialog_tab,.cke_skin_office2003 a:hover.cke_dialog_tab,.cke_skin_office2003 a:visited.cke_dialog_tab{color:#0E3460;border-left:1px solid #2b66c9;border-right:1px solid #2b66c9;border-top:1px solid #2b66c9;height:14px;padding:4px 5px;display:inline-block;cursor:pointer;}.cke_skin_office2003 .cke_browser_gecko18 a.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:link.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:active.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:hover.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:visited.cke_dialog_tab{display:inline;position:relative;top:6px;}.cke_skin_office2003 a:hover.cke_dialog_tab{background-color:#f7f8fd;}
+.cke_skin_office2003 .cke_hc a:hover.cke_dialog_tab{padding:2px 3px!important;border-width:3px;}.cke_skin_office2003 a.cke_dialog_tab_selected,.cke_skin_office2003 a:link.cke_dialog_tab_selected,.cke_skin_office2003 a:active.cke_dialog_tab_selected,.cke_skin_office2003 a:hover.cke_dialog_tab_selected,.cke_skin_office2003 a:visited.cke_dialog_tab_selected{border-bottom:1px solid #f7f8fd;background-color:#f7f8fd;font-weight:bold;cursor:default;}.cke_skin_office2003 .cke_hc a.cke_dialog_tab_selected,.cke_skin_office2003 .cke_hc a:link.cke_dialog_tab_selected,.cke_skin_office2003 .cke_hc a:active.cke_dialog_tab_selected,.cke_skin_office2003 .cke_hc a:hover.cke_dialog_tab_selected,.cke_skin_office2003 .cke_hc a:visited.cke_dialog_tab_selected{padding:2px 3px!important;border-width:3px;}.cke_skin_office2003 .cke_single_page .cke_dialog_tabs{display:none;}.cke_skin_office2003 .cke_hc .cke_dialog_tabs a,.cke_skin_office2003 .cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white;}.cke_skin_office2003 .cke_single_page .cke_dialog_title{padding-bottom:3px;}.cke_skin_office2003 .cke_dialog_ui_vbox table,.cke_skin_office2003 .cke_dialog_ui_hbox table{margin:auto;}.cke_skin_office2003 .cke_dialog_ui_vbox_child{padding:5px 0;}.cke_skin_office2003 input.cke_dialog_ui_input_text,.cke_skin_office2003 input.cke_dialog_ui_input_password{background-color:white;border:none;padding:0;width:100%;height:14px;}.cke_skin_office2003 div.cke_dialog_ui_input_text,.cke_skin_office2003 div.cke_dialog_ui_input_password{background-color:white;border:1px solid #a0a0a0;padding:1px 0;_width:99.9%;}.cke_skin_office2003 .cke_browser_ie7 input.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_ie7 input.cke_dialog_ui_input_password{position:absolute;}.cke_skin_office2003 .cke_browser_ie7 div.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_ie7 div.cke_dialog_ui_input_password{height:14px;position:relative;}.cke_skin_office2003 .cke_browser_ie.cke_rtl input.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_opera.cke_rtl input.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_ie.cke_rtl input.cke_dialog_ui_input_password,.cke_skin_office2003 .cke_browser_opera.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px;}.cke_skin_office2003 .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_opera.cke_rtl div.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_password,.cke_skin_office2003 .cke_browser_opera.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px;}.cke_skin_office2003 .cke_browser_ie.cke_rtl .cke_dialog_ui_vbox_child,.cke_skin_office2003 .cke_browser_ie.cke_rtl .cke_dialog_ui_hbox_child,.cke_skin_office2003 .cke_browser_ie.cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_browser_ie.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important;}.cke_skin_office2003 .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px;}.cke_skin_office2003 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_password{border-width:0;}.cke_skin_office2003 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_password{border-width:1px;}.cke_skin_office2003 textarea.cke_dialog_ui_input_textarea{background-color:white;border:none;padding:0;width:100%;_width:99%;overflow:auto;resize:none;}.cke_skin_office2003 div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_office2003 .cke_rtl .cke_dialog_ui_labeled_content{_width:95%;}.cke_skin_office2003 div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default;}.cke_skin_office2003 .cke_dialog_ui_hbox{width:100%;}.cke_skin_office2003 .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_dialog_ui_hbox_child,.cke_skin_office2003 .cke_dialog_ui_hbox_last{vertical-align:top;}.cke_skin_office2003 .cke_ltr .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px;}
+.cke_skin_office2003 .cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px;}.cke_skin_office2003 a.cke_dialog_ui_button{border-collapse:separate;cursor:default;}.cke_skin_office2003 a.cke_dialog_ui_button_ok span,.cke_skin_office2003 a.cke_dialog_ui_button_cancel span{width:60px;}.cke_skin_office2003 span.cke_dialog_ui_button{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -678px;background-repeat:repeat-x;border:#0E3460 1px solid;padding:2px 10px;text-align:center;color:#0E3460;background-color:#8db1ff;display:inline-block;cursor:default;}.cke_skin_office2003 .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{display:block;}.cke_skin_office2003 a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3;}.cke_skin_office2003 a:focus span.cke_dialog_ui_button,.cke_skin_office2003 a:active span.cke_dialog_ui_button{background-color:#8db1ff;}.cke_skin_office2003 .cke_hc a:focus span.cke_dialog_ui_button,.cke_skin_office2003 .cke_hc a:active span.cke_dialog_ui_button{border-width:2px;}.cke_skin_office2003 .cke_dialog_footer_buttons{display:inline-table;margin-right:12px;margin-left:12px;width:auto;position:relative;}.cke_skin_office2003 .cke_browser_gecko18 .cke_dialog_footer_buttons{display:inline;}.cke_skin_office2003 .cke_dialog_footer_buttons span.cke_dialog_ui_button{margin:7px 0;}.cke_skin_office2003 .cke_browser_ie7 .cke_dialog_footer_buttons{position:static;}.cke_skin_office2003 strong{font-weight:bold;}.cke_skin_office2003 a.cke_dialog_close_button,.cke_skin_office2003 a:hover.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_ie6 a.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_ie6 a:hover.cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:-20px -655px;position:absolute;cursor:pointer;text-align:center;height:21px;width:21px;top:4px;_background-image:url(images/sprites_ie6.png);}.cke_skin_office2003 a.cke_dialog_close_button span{display:none;}.cke_skin_office2003 .cke_ltr a.cke_dialog_close_button{right:22px;}.cke_skin_office2003 .cke_rtl a.cke_dialog_close_button,.cke_skin_office2003 .cke_rtl a:hover.cke_dialog_close_button{left:16px;_top:6px;}.cke_skin_office2003 .cke_browser_ie6.cke_rtl a.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_ie6.cke_rtl a:hover.cke_dialog_close_button{position:relative;float:left;margin-top:-55px;margin-left:-7px;}.cke_skin_office2003 .cke_browser_iequirks.cke_rtl.cke_single_page a.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_iequirks.cke_rtl.cke_single_page a:hover.cke_dialog_close_button{margin-top:-32px;}.cke_skin_office2003 .cke_browser_iequirks.cke_ltr a.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_iequirks.cke_ltr a:hover.cke_dialog_close_button{margin-top:0;}.cke_skin_office2003 .cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white;}.cke_skin_office2003 .cke_dialog_ui_input_file{width:100%;height:25px;}.cke_skin_office2003 .cke_dialog .cke_dark_background{background-color:#eaead1;}.cke_skin_office2003 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_office2003 .cke_dialog .cke_centered{text-align:center;}.cke_skin_office2003 .cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px;}.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_reset{float:left;}.cke_skin_office2003 .cke_dialog a.cke_btn_locked,.cke_skin_office2003 .cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px;}.cke_skin_office2003 .cke_dialog a.cke_btn_locked .cke_icon{display:none;}.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_locked,.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_unlocked{float:right;}.cke_skin_office2003 .cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif);}
+.cke_skin_office2003 .cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer;}.cke_skin_office2003 .cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:210px;width:230px;padding:2px;background-color:white;}.cke_skin_office2003 .cke_dialog .ImagePreviewBox table td{white-space:normal;}.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_page_contents{_position:absolute;}.cke_skin_office2003 .cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4;}.cke_skin_office2003 .cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white;}.cke_skin_office2003 .cke_dialog .cke_pastetext{width:346px;height:170px;}.cke_skin_office2003 .cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none;}.cke_skin_office2003 .cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black;}.cke_skin_office2003 .cke_dialog .cke_dark_background{text-align:center;background-color:#eaead1;font-size:14px;}.cke_skin_office2003 .cke_dialog .cke_light_background{text-align:center;background-color:#ffffbe;}.cke_skin_office2003 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_office2003 .cke_disabled{color:#a0a0a0;}.cke_skin_office2003 .cke_hc .cke_dialog_title,.cke_skin_office2003 .cke_hc .cke_dialog_tabs,.cke_skin_office2003 .cke_hc .cke_dialog_contents,.cke_skin_office2003 .cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid;}.cke_skin_office2003 .cke_hc .cke_dialog_title{border-top:1px solid;}.cke_skin_office2003 .cke_hc .cke_dialog_footer{border-bottom:1px solid;}.cke_skin_office2003 .cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px;}.cke_skin_office2003 .cke_dialog_body .cke_label{display:none;}.cke_skin_office2003 .cke_dialog_body label.cke_required{font-weight:bold;}.cke_skin_office2003 .cke_hc .cke_dialog_body .cke_label{display:inline;cursor:inherit;}.cke_skin_office2003 .cke_hc a.cke_btn_locked,.cke_skin_office2003 .cke_hc a.cke_btn_unlocked,.cke_skin_office2003 .cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;padding:0 2px;}.cke_skin_office2003 .cke_hc a.cke_btn_locked .cke_icon{display:inline;}.cke_skin_office2003 .cke_rtl.cke_hc a.cke_btn_locked,.cke_skin_office2003 .cke_rtl.cke_hc a.cke_btn_unlocked,.cke_skin_office2003 .cke_rtl.cke_hc a.cke_btn_reset{float:right;}.cke_skin_office2003 .cke_dialog_contents a.colorChooser{display:block;margin-top:12px;margin-left:10px;width:40px;}.cke_skin_office2003 .cke_dialog_contents a.colorChooser .cke_dialog_ui_button{width:100%;}.cke_skin_office2003 .cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px;}.cke_skin_office2003 .cke_browser_gecko .cke_dialog_ui_checkbox_input:focus,.cke_skin_office2003 .cke_browser_gecko .cke_dialog_ui_radio_input:focus,.cke_skin_office2003 .cke_browser_opera .cke_dialog_ui_checkbox_input:focus,.cke_skin_office2003 .cke_browser_opera .cke_dialog_ui_radio_input:focus,.cke_skin_office2003 .cke_browser_gecko .cke_dialog_ui_input_select:focus,.cke_skin_office2003 .cke_browser_gecko .cke_btn_over,.cke_skin_office2003 .cke_browser_opera .cke_btn_over,.cke_skin_office2003 .cke_browser_ie .cke_btn_over{outline:1px dotted #696969;}.cke_skin_office2003 .cke_browser_ie .cke_dialog_ui_checkbox_input,.cke_skin_office2003 .cke_browser_ie .cke_dialog_ui_ratio_input,.cke_skin_office2003 .cke_browser_ie .cke_btn_reset,.cke_skin_office2003 .cke_browser_ie .cke_btn_locked,.cke_skin_office2003 .cke_browser_ie .cke_btn_unlocked{*border:1px solid transparent!important;-border:1px solid red!important;-filter:chroma(color=red);}.cke_skin_office2003 .cke_browser_ie .cke_dialog_ui_focused,.cke_skin_office2003 .cke_browser_ie .cke_btn_over{*border:1px dotted #696969!important;}.cke_skin_office2003 .cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity=0);width:100%;height:100%;}
+.cke_dialog label{display:inline;margin-bottom:auto;cursor:default;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/editor.css b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/editor.css
new file mode 100755
index 0000000..632191c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/editor.css
@@ -0,0 +1,14 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 *,.cke_skin_office2003 a:hover,.cke_skin_office2003 a:link,.cke_skin_office2003 a:visited,.cke_skin_office2003 a:active{margin:0;padding:0;border:0;background:transparent;text-decoration:none;font:normal normal normal 100% Sans-Serif;width:auto;height:auto;border-collapse:collapse;text-align:left;vertical-align:baseline;white-space:nowrap;cursor:auto;color:#000;float:none;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_skin_office2003 .cke_rtl *,.cke_skin_office2003 .cke_rtl a:hover,.cke_skin_office2003 .cke_rtl a:link,.cke_skin_office2003 .cke_rtl a:visited,.cke_skin_office2003 .cke_rtl a:active,.cke_rtl .cke_skin_office2003 *,.cke_rtl .cke_skin_office2003 a:hover,.cke_rtl .cke_skin_office2003 a:link,.cke_rtl .cke_skin_office2003 a:visited,.cke_rtl .cke_skin_office2003 a:active{text-align:right;}.cke_skin_office2003 iframe{vertical-align:inherit;}.cke_skin_office2003 textarea{white-space:pre;}.cke_skin_office2003 .cke_browser_gecko textarea{cursor:text;}.cke_skin_office2003 .cke_browser_gecko textarea[disabled]{cursor:default;}.cke_skin_office2003 input[type="text"],.cke_skin_office2003 input[type="password"]{cursor:text;}.cke_skin_office2003 input[type="text"][disabled],.cke_skin_office2003 input[type="password"][disabled]{cursor:default;}.cke_skin_office2003 fieldset{padding:10px;border:2px groove #E0DFE3;}.cke_skin_office2003 .cke_editor{display:inline-table;width:100%;}.cke_skin_office2003 .cke_browser_webkit .cke_editor{display:table;}.cke_skin_office2003 span.cke_browser_webkit,.cke_skin_office2003 span.cke_browser_gecko18{display:block;}.cke_skin_office2003,.cke_skin_office2003 .cke_wrapper{display:block;}.cke_skin_office2003 .cke_top,.cke_skin_office2003 .cke_bottom,.cke_shared .cke_skin_office2003{background-color:#f7f8fd;}.cke_skin_office2003 .cke_top{border-top:solid 1px #fafaf5;border-left:solid 1px #fafaf5;border-right:solid 1px #696969;border-bottom:solid 2px #696969;}.cke_skin_office2003 .cke_rtl .cke_top{border-left:solid 1px #696969;border-right:solid 1px #fafaf5;}.cke_skin_office2003 .cke_bottom{border-left:solid 1px #696969;border-right:solid 1px #696969;border-bottom:solid 1px #696969;}.cke_skin_office2003 .cke_contents{border:solid 1px #696969;background-color:white;}.cke_skin_office2003 .cke_focus{outline:auto 5px -webkit-focus-ring-color;}.cke_skin_office2003 textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;white-space:pre;background-color:#fff;}.cke_skin_office2003 .cke_browser_iequirks textarea.cke_source{_white-space:normal;}.cke_skin_office2003 .cke_resizer{width:12px;height:12px;margin-top:16px;display:block;float:right;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1088px;background-repeat:no-repeat;cursor:se-resize;}.cke_skin_office2003 .cke_browser_air .cke_resizer,.cke_skin_office2003 .cke_browser_air .cke_rtl .cke_resizer{cursor:move;}.cke_skin_office2003 .cke_resizer_rtl{cursor:sw-resize;background-position:0 -1115px;float:left;}.cke_skin_office2003 .cke_resizer_horizontal,.cke_skin_office2003 .cke_rtl .cke_resizer_horizontal{cursor:e-resize;}.cke_skin_office2003 .cke_resizer_vertical,.cke_skin_office2003 .cke_rtl .cke_resizer_vertical{cursor:n-resize;}.cke_skin_office2003 .cke_maximized .cke_resizer{display:none;}.cke_skin_office2003 .cke_browser_ie6 .cke_contents textarea,.cke_skin_office2003 .cke_browser_ie7 .cke_contents textarea{position:absolute;}.cke_skin_office2003 .cke_voice_label{display:none;}.cke_skin_office2003 legend.cke_voice_label{display:none;}.cke_skin_office2003 .cke_browser_ie legend.cke_voice_label{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_office2003 .cke_panel{border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.cke_skin_office2003 .cke_panel iframe{width:100%;height:100%;}cke_skin_office2003 .cke_panel_frame .cke_label{display:none;}html.cke_skin_office2003_container{overflow:auto;overflow-x:hidden;}
+body.cke_panel_frame{overflow:auto;}ul.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap;}li.cke_panel_listItem{margin:0;}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;}* html .cke_panel_listItem a{width:100%;color:#000;}*:first-child+html .cke_panel_listItem a{color:#000;}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff;}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff;}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0;}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px;}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px;}.cke_skin_office2003 .cke_button_textcolor_panel,.cke_skin_office2003 .cke_button_bgcolor_panel{width:150px;height:135px;}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000;}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left;}.cke_rtl span.cke_colorbox{float:right;}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;}.cke_rtl a.cke_colorbox{float:right;}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff;}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer;}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff;}@media print{.cke_skin_office2003 .cke_toolbox{display:none;}}.cke_skin_office2003 .cke_browser_webkit .cke_toolbox,.cke_skin_office2003 .cke_browser_webkit .cke_toolbox>span{white-space:normal;}.cke_skin_office2003 .cke_toolbox{clear:both;padding-bottom:1px;}.cke_skin_office2003 a.cke_toolbox_collapser,.cke_skin_office2003 a:hover.cke_toolbox_collapser{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:3px -1026px;background-repeat:no-repeat;width:11px;height:11px;float:right;border:outset 1px;margin:11px 2px 2px;cursor:pointer;}.cke_skin_office2003 .cke_rtl a.cke_toolbox_collapser,.cke_skin_office2003 .cke_rtl a:hover.cke_toolbox_collapser{float:left;}.cke_skin_office2003 a.cke_toolbox_collapser span{display:none;}.cke_skin_office2003 .cke_hc a.cke_toolbox_collapser span{font-size:10px;font-weight:bold;font-family:Arial;display:inline;}.cke_skin_office2003 a.cke_toolbox_collapser_min,.cke_skin_office2003 a:hover.cke_toolbox_collapser_min{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:4px -1047px;background-repeat:no-repeat;margin:2px;}.cke_skin_office2003 .cke_rtl a.cke_toolbox_collapser_min,.cke_skin_office2003 .cke_rtl a:hover.cke_toolbox_collapser_min{background-position:4px -1068px;}.cke_skin_office2003 .cke_toolbar{background-color:#d6dff7;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -962px;background-repeat:repeat-x;display:inline-block;float:left;!height:28px;!line-height:28px;}.cke_skin_office2003 .cke_rtl .cke_toolbar{float:right;}.cke_skin_office2003 .cke_toolgroup{display:inline-block;float:left;height:28px;}.cke_skin_office2003 .cke_browser_ie .cke_toolgroup{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_toolgroup{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolgroup{#float:none;}.cke_skin_office2003 .cke_separator{display:inline-block;float:left;border-left:solid 1px #B2CBFF;margin:6px 2px;height:16px;}
+.cke_skin_office2003 .cke_browser_ie .cke_separator{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_separator{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_separator{#float:none;}.cke_skin_office2003 .cke_break{clear:left;}.cke_skin_office2003 .cke_rtl .cke_break{clear:right;}.cke_skin_office2003 .cke_toolbar_start{display:inline-block;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;background-position:-27px -765px;width:10px;height:28px;float:left;}.cke_skin_office2003 .cke_browser_ie .cke_toolbar_start{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_toolbar_start{background-position:-27px -816px;float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_start{#float:none;}.cke_skin_office2003 .cke_toolbar_end{display:inline-block;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;background-position:-29px -861px;width:4px;height:28px;float:left;}.cke_skin_office2003 .cke_browser_ie .cke_toolbar_end{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_toolbar_end{background-position:-29px -907px;float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_end{#float:none;}.cke_skin_office2003 .cke_browser_ie9 .cke_rtl .cke_separator,.cke_skin_office2003 .cke_browser_ie9 .cke_rtl .cke_toolbar_start,.cke_skin_office2003 .cke_browser_ie9 .cke_rtl .cke_toolbar_end{vertical-align:middle;}.cke_skin_office2003 .cke_button a,.cke_skin_office2003 .cke_button a:hover,.cke_skin_office2003 .cke_button a:focus,.cke_skin_office2003 .cke_button a:active,.cke_skin_office2003 .cke_button a.cke_off{border:solid 1px transparent;border-radius:3px;outline:none;padding-top:2px;padding-left:4px;padding-right:4px;padding-bottom:2px;margin-top:2px;height:18px;vertical-align:top;_border:none;_margin:3px 1px 1px 1px;cursor:default;display:inline-block;}.cke_skin_office2003 .cke_button a,.cke_skin_office2003 .cke_button a.cke_off{filter:alpha(opacity=70);opacity:.70;-moz-border-radius:3px;-webkit-border-radius:3px;}.cke_skin_office2003 .cke_hc .cke_button a,.cke_skin_office2003 .cke_hc .cke_button a.cke_off{opacity:1.0;filter:alpha(opacity=100);_border:1px solid transparent;}.cke_skin_office2003 .cke_button a.cke_on{border:solid 1px #316ac5;background-color:#c1d2ee;filter:alpha(opacity=100);opacity:1;_margin:2px 0 0 0;}.cke_skin_office2003 .cke_hc .cke_button a:hover,.cke_skin_office2003 .cke_hc .cke_button a:focus,.cke_skin_office2003 .cke_hc .cke_button a:active{padding:0 2px!important;border-width:3px;}.cke_skin_office2003 .cke_button a.cke_disabled *{filter:alpha(opacity=30);opacity:.3;}.cke_skin_office2003 .cke_browser_ie .cke_button a.cke_disabled *,.cke_skin_office2003 .cke_browser_ie a:hover.cke_button .cke_disabled *{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_button a.cke_disabled *,.cke_skin_office2003 .cke_browser_ie .cke_rtl a:hover.cke_button .cke_disabled *{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);}.cke_skin_office2003 .cke_browser_ie6 .cke_button a.cke_disabled *,.cke_skin_office2003 .cke_browser_ie6 a:hover.cke_button .cke_disabled *,.cke_skin_office2003 .cke_browser_ie .cke_button.cke_noalphafix a.cke_disabled *{filter:alpha(opacity=30);}.cke_skin_office2003 .cke_hc .cke_button a.cke_disabled *,.cke_skin_office2003 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled *{filter:alpha(opacity=60);opacity:.6;}.cke_skin_office2003 .cke_button a:hover,.cke_skin_office2003 .cke_button a:focus,.cke_skin_office2003 .cke_button a:active{border:solid 1px #316ac5;background-color:#dff1ff;filter:alpha(opacity=100);opacity:1;vertical-align:top;_margin:2px 0 0 0;padding:2px 4px;}.cke_skin_office2003 .cke_button .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;display:inline-block;cursor:default;}
+.cke_skin_office2003 .cke_rtl .cke_button .cke_icon{background-image:url(icons_rtl.png);}.cke_skin_office2003 .cke_browser_ie .cke_button .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_button .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_skin_office2003 .cke_browser_ie6 .cke_button .cke_icon,.cke_skin_office2003 .cke_browser_ie6 .cke_rtl .cke_button .cke_icon,.cke_skin_office2003 .cke_browser_ie .cke_button.cke_noalphafix .cke_icon,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_button.cke_noalphafix .cke_icon{filter:;}.cke_skin_office2003 .cke_button .cke_label{display:none;padding-left:3px;cursor:default;vertical-align:middle;_background-image:url(images/sprites_ie6.png);_background-position:0 -970px;_background-repeat:repeat-x;}.cke_skin_office2003 .cke_button a:hover .cke_label{_background-color:#dff1ff;_background-image:none;}.cke_skin_office2003 .cke_button a.cke_on .cke_label{_background-color:#c1d2ee;_background-image:none;}.cke_skin_office2003 .cke_hc .cke_button .cke_label{padding:0;display:inline-block;}.cke_skin_office2003 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_office2003 .cke_accessibility{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_office2003 .cke_button .cke_buttonarrow{display:inline-block;height:18px;width:8px;background-position:2px -1004px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;cursor:default;}.cke_skin_office2003 .cke_browser_ie .cke_button .cke_buttonarrow{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_skin_office2003 .cke_browser_ie6 .cke_button .cke_buttonarrow{filter:;}.cke_skin_office2003 .cke_rtl .cke_button .cke_buttonarrow{background-position:0 -1004px;}.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar,.cke_skin_office2003 .cke_browser_gecko18 .cke_button a,.cke_skin_office2003 .cke_browser_gecko18 .cke_button a.cke_off,.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_icon,.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_buttonarrow,.cke_skin_office2003 .cke_browser_gecko18 .cke_separator,.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar_start,.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar_end{display:block;float:left;}.cke_skin_office2003 .cke_browser_gecko18 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button a,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button a.cke_off,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_icon,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_buttonarrow,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_separator,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar_start,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar_end{float:right;}.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_break{float:left;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl span.cke_inline_label{float:right;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_break{float:right;}.cke_skin_office2003 .cke_browser_gecko18 .cke_separator{margin-top:4px;}.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_label{padding-top:3px;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolgroup,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_separator,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_start,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_end{float:none;}.cke_skin_office2003 .cke_browser_ie8 .cke_toolbar,.cke_skin_office2003 .cke_browser_ie8 .cke_toolgroup{vertical-align:top;}.cke_skin_office2003 .cke_browser_iequirks.cke_browser_ie8 .cke_toolbar,.cke_skin_office2003 .cke_browser_iequirks.cke_browser_ie8 .cke_toolgroup{vertical-align:baseline;}
+.cke_skin_office2003 .cke_browser_iequirks .cke_separator{vertical-align:text-bottom;}.cke_skin_office2003 .cke_browser_ie .cke_rcombo,.cke_skin_office2003 .cke_browser_ie .cke_rcombo *{cursor:default;}.cke_skin_office2003 .cke_contextmenu{padding:2px;}.cke_skin_office2003 .cke_menuitem a{display:block;}.cke_skin_office2003 .cke_menuitem span{cursor:default;}.cke_skin_office2003 .cke_menuitem a:hover,.cke_skin_office2003 .cke_menuitem a:focus,.cke_skin_office2003 .cke_menuitem a:active{background-color:#8db1ff;display:block;}.cke_hc .cke_menuitem a:hover,.cke_hc .cke_menuitem a:focus,.cke_hc .cke_menuitem a:active{border:2px solid;}.cke_skin_office2003 .cke_menuitem .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;background-color:transparent;width:16px;height:16px;float:left;}.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_icon{background-image:url(icons_rtl.png);}.cke_browser_ie .cke_skin_office2003 .cke_menuitem .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie6 .cke_skin_office2003 .cke_menuitem .cke_icon,.cke_browser_ie .cke_skin_office2003 .cke_menuitem.cke_noalphafix .cke_icon{filter:;}.cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon{filter:alpha(opacity=70);opacity:.70;}.cke_browser_ie .cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie6 .cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon,.cke_browser_ie .cke_skin_office2003 .cke_menuitem.cke_noalphafix .cke_disabled .cke_icon{filter:;}.cke_skin_office2003 .cke_menuitem .cke_icon_wrapper{background-color:#f7f8fd;border:solid 4px #f7f8fd;width:16px;height:16px;float:left;filter:alpha(opacity=70);opacity:.70;clear:both;}.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_icon_wrapper{float:right;}.cke_skin_office2003 .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:active .cke_icon_wrapper{background-color:#9d9d9d;border:solid 4px #9d9d9d;filter:alpha(opacity=70);opacity:.70;}.cke_skin_office2003 .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:active.cke_disabled .cke_icon_wrapper{background-color:#f7f8fd;border:solid 4px #f7f8fd;}.cke_skin_office2003 .cke_menuitem .cke_label{display:block;padding-right:3px;padding-top:5px;padding-left:4px;height:19px;margin-left:24px;background-color:#fff;}.cke_skin_office2003 .cke_frameLoaded .cke_menuitem .cke_label{filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_label{padding-right:0;margin-left:0;padding-left:3px;margin-right:28px;}.cke_skin_office2003 .cke_menuitem a.cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.30;}.cke_skin_office2003 .cke_menuitem a:hover .cke_label,.cke_skin_office2003 .cke_menuitem a:focus .cke_label,.cke_skin_office2003 .cke_menuitem a:active .cke_label{background-color:#8db1ff;}.cke_skin_office2003 .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_office2003 .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_office2003 .cke_menuitem a.cke_disabled:active .cke_label{background-color:transparent;}.cke_skin_office2003 .cke_menuseparator{background-color:#f7f8fd;height:2px;filter:alpha(opacity=70);opacity:.70;_font-size:0;}.cke_skin_office2003 .cke_menuarrow{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1071px;background-repeat:no-repeat;height:5px;width:3px;float:right;margin-right:2px;margin-top:3px;}.cke_rtl .cke_skin_office2003 .cke_menuarrow{float:left;margin-right:0;margin-left:2px;background-position:0 -1050px;}
+.cke_skin_office2003 .cke_menuarrow span{display:none;}.cke_hc .cke_skin_office2003 .cke_menuarrow{width:auto;margin-top:0;}.cke_hc .cke_skin_office2003 .cke_menuarrow span{display:inline;}.cke_browser_ie.cke_ltr .cke_skin_office2003 .cke_menuarrow{position:absolute;right:2px;}.cke_browser_ie.cke_rtl .cke_skin_office2003 .cke_menuarrow{position:absolute;left:2px;}.cke_skin_office2003 .cke_rcombo{display:inline-block;margin-left:2px;margin-right:2px;margin-top:2px;vertical-align:top;}.cke_skin_office2003 .cke_browser_ie .cke_rcombo{#display:inline;}.cke_skin_office2003 .cke_rcombopanel{border:1px solid #316ac5;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;}.cke_skin_office2003 .cke_rcombo a{display:inline-block;float:left;filter:alpha(opacity=70);opacity:.70;}.cke_skin_office2003 .cke_rtl .cke_rcombo a{float:right;}.cke_skin_office2003 .cke_hc .cke_rcombo a{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_office2003 .cke_rcombo .cke_label{display:inline-block;float:left;cursor:default;line-height:24px;height:24px;vertical-align:top;padding-left:4px;padding-right:5px;filter:alpha(opacity=70);opacity:.70;_background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);_background-position:0 -962px;_background-repeat:repeat-x;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_label{float:right;padding-right:4px;padding-left:5px;}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_label{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_office2003 .cke_rcombo .cke_inline_label{color:#fff;}.cke_skin_office2003 .cke_rcombo .cke_text{border:1px solid #8f8f73;background-color:#fff;height:14px;width:60px;padding-top:4px;padding-bottom:4px;padding-left:5px;padding-right:5px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:top;cursor:default;}.cke_skin_office2003 .cke_ltr .cke_rcombo .cke_text{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_text{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_office2003 .cke_browser_iequirks .cke_rcombo .cke_text{height:22px;}.cke_skin_office2003 .cke_rcombo .cke_openbutton{display:inline-block;border-top:1px solid #8f8f73;border-bottom:1px solid #8f8f73;}.cke_skin_office2003 .cke_rcombo .cke_openbutton .cke_icon{display:inline-block;background-position:5px -1002px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;width:14px;height:22px;}.cke_skin_office2003 .cke_browser_iequirks .cke_rcombo .cke_openbutton .cke_icon{height:20px;}.cke_skin_office2003 .cke_browser_ie .cke_rcombo .cke_openbutton .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_skin_office2003 .cke_browser_ie6 .cke_rcombo .cke_openbutton .cke_icon{filter:;}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_openbutton .cke_icon{background:none;filter:;}.cke_skin_office2003 .cke_ltr .cke_rcombo .cke_openbutton{border-right:1px solid #8f8f73;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_openbutton{border-left:1px solid #8f8f73;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_office2003 .cke_rcombo .cke_off a:hover,.cke_skin_office2003 .cke_rcombo .cke_off a:focus,.cke_skin_office2003 .cke_rcombo .cke_off a:active,.cke_skin_office2003 .cke_rcombo .cke_on a{filter:alpha(opacity=100);opacity:1;}.cke_skin_office2003 .cke_rcombo .cke_off a:hover .cke_text,.cke_skin_office2003 .cke_rcombo .cke_off a:focus .cke_text,.cke_skin_office2003 .cke_rcombo .cke_off a:active .cke_text,.cke_skin_office2003 .cke_rcombo .cke_on .cke_text{border-color:#316ac5;}
+.cke_skin_office2003 .cke_rcombo .cke_off a:hover .cke_openbutton,.cke_skin_office2003 .cke_rcombo .cke_off a:focus .cke_openbutton,.cke_skin_office2003 .cke_rcombo .cke_off a:active .cke_openbutton,.cke_skin_office2003 .cke_rcombo .cke_on .cke_openbutton{border-color:#316ac5;background-color:#dff1ff;}.cke_skin_office2003 .cke_rcombo .cke_on .cke_text{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}.cke_skin_office2003 .cke_rcombo .cke_on .cke_openbutton{-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.3;}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=70);opacity:.7;}.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text,.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);opacity:.5;}.cke_skin_office2003 .cke_browser_ie .cke_rcombo .cke_disabled .cke_openbutton{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=50);}.cke_skin_office2003 .cke_browser_ie6 .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_text,.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=80);opacity:.8;}.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text{color:#fff;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo,.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_openbutton,.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_openbutton{display:block;float:left;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_openbutton,.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo a,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo .cke_label{float:none;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_font .cke_text,.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_fontSize .cke_text{direction:ltr;}@media print{.cke_path{display:none;}}.cke_skin_office2003 .cke_path{padding:3px 3px 0 3px;display:inline-block;float:left;}.cke_skin_office2003 .cke_rtl .cke_path{float:right;}.cke_skin_office2003 .cke_path a,.cke_skin_office2003 .cke_path .cke_empty{display:inline-block;float:left;border:solid 1px #f7f8fd;background-color:#f7f8fd;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;margin-bottom:3px;cursor:default;}.cke_skin_office2003 .cke_path .cke_empty{visibility:hidden;}.cke_skin_office2003 .cke_rtl .cke_path a,.cke_skin_office2003 .cke_rtl .cke_path cke_empty{float:right;}.cke_skin_office2003 .cke_path a:hover,.cke_skin_office2003 .cke_path a:focus,.cke_skin_office2003 .cke_path a:active{border:solid 1px #316ac5;background-color:#dff1ff;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;outline:none;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_path a,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_path .cke_empty{float:none;}.cke_skin_office2003 .cke_path .cke_label{display:none;}.cke_skin_office2003 .cke_button_source .cke_icon{background-position:0 0;}.cke_skin_office2003 .cke_button_docProps .cke_icon{background-position:0 -16px;}.cke_skin_office2003 .cke_button_newpage .cke_icon{background-position:0 -48px;}
+.cke_skin_office2003 .cke_button_preview .cke_icon{background-position:0 -64px;}.cke_skin_office2003 .cke_button_cut .cke_icon{background-position:0 -96px;}.cke_skin_office2003 .cke_button_copy .cke_icon{background-position:0 -112px;}.cke_skin_office2003 .cke_button_paste .cke_icon{background-position:0 -128px;}.cke_skin_office2003 .cke_button_pastetext .cke_icon{background-position:0 -144px;}.cke_skin_office2003 .cke_button_find .cke_icon{background-position:0 -240px;}.cke_skin_office2003 .cke_button_replace .cke_icon{background-position:0 -256px;}.cke_skin_office2003 .cke_button_selectAll .cke_icon{background-position:0 -272px;}.cke_skin_office2003 .cke_button_removeFormat .cke_icon{background-position:0 -288px;}.cke_skin_office2003 .cke_button_bold .cke_icon{background-position:0 -304px;}.cke_skin_office2003 .cke_button_italic .cke_icon{background-position:0 -320px;}.cke_skin_office2003 .cke_button_underline .cke_icon{background-position:0 -336px;}.cke_skin_office2003 .cke_button_strike .cke_icon{background-position:0 -352px;}.cke_skin_office2003 .cke_button_subscript .cke_icon{background-position:0 -368px;}.cke_skin_office2003 .cke_button_superscript .cke_icon{background-position:0 -384px;}.cke_skin_office2003 .cke_button_table .cke_icon{background-position:0 -608px;}.cke_skin_office2003 .cke_button_horizontalrule .cke_icon{background-position:0 -624px;}.cke_skin_office2003 .cke_button_smiley .cke_icon{background-position:0 -640px;}.cke_skin_office2003 .cke_button_link .cke_icon{background-position:0 -528px;}.cke_skin_office2003 .cke_button_unlink .cke_icon{background-position:0 -544px;}.cke_skin_office2003 .cke_button_anchor .cke_icon{background-position:0 -560px;}.cke_skin_office2003 .cke_button_image .cke_icon{background-position:0 -576px;}.cke_skin_office2003 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_office2003 .cke_button_specialchar .cke_icon{background-position:0 -656px;}.cke_skin_office2003 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_office2003 .cke_button_print .cke_icon{background-position:0 -176px;}.cke_skin_office2003 .cke_button_checkspell .cke_icon,.cke_skin_office2003 .cke_button_scayt .cke_icon{background-position:0 -192px;}.cke_skin_office2003 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_office2003 .cke_button_textcolor .cke_icon{background-position:0 -704px;}.cke_skin_office2003 .cke_button_bgcolor .cke_icon{background-position:0 -720px;}.cke_skin_office2003 .cke_button_form .cke_icon{background-position:0 -752px;}.cke_skin_office2003 .cke_button_checkbox .cke_icon{background-position:0 -768px;}.cke_skin_office2003 .cke_button_radio .cke_icon{background-position:0 -784px;}.cke_skin_office2003 .cke_button_textfield .cke_icon{background-position:0 -800px;}.cke_skin_office2003 .cke_button_textarea .cke_icon{background-position:0 -816px;}.cke_skin_office2003 .cke_button_showblocks .cke_icon{background-position:0 -1136px;}.cke_skin_office2003 .cke_button_select .cke_icon{background-position:0 -832px;}.cke_skin_office2003 .cke_button_button .cke_icon{background-position:0 -848px;}.cke_skin_office2003 .cke_button_imagebutton .cke_icon{background-position:0 -864px;}.cke_skin_office2003 .cke_button_hiddenfield .cke_icon{background-position:0 -880px;}.cke_skin_office2003 .cke_button_undo .cke_icon{background-position:0 -208px;}.cke_skin_office2003 .cke_rtl .cke_button_undo .cke_icon{background-position:0 -224px;}.cke_skin_office2003 .cke_button_redo .cke_icon{background-position:0 -224px;}.cke_skin_office2003 .cke_rtl .cke_button_redo .cke_icon{background-position:0 -208px;}.cke_skin_office2003 .cke_button_templates .cke_icon{background-position:0 -80px;}.cke_skin_office2003 .cke_button_numberedlist .cke_icon{background-position:0 -400px;}.cke_skin_office2003 .cke_button_bulletedlist .cke_icon{background-position:0 -416px;}.cke_skin_office2003 .cke_mixed_dir_content .cke_button_numberedlist .cke_icon{background-position:0 -1217px;}.cke_skin_office2003 .cke_mixed_dir_content .cke_button_bulletedlist .cke_icon{background-position:0 -1233px;}
+.cke_skin_office2003 .cke_button_outdent .cke_icon{background-position:0 -432px;}.cke_skin_office2003 .cke_button_indent .cke_icon{background-position:0 -448px;}.cke_skin_office2003 .cke_mixed_dir_content .cke_button_indent .cke_icon{background-position:0 -1265px;}.cke_skin_office2003 .cke_mixed_dir_content .cke_button_outdent .cke_icon{background-position:0 -1249px;}.cke_skin_office2003 .cke_button_justifyleft .cke_icon{background-position:0 -464px;}.cke_skin_office2003 .cke_button_justifycenter .cke_icon{background-position:0 -480px;}.cke_skin_office2003 .cke_button_justifyright .cke_icon{background-position:0 -496px;}.cke_skin_office2003 .cke_button_justifyblock .cke_icon{background-position:0 -512px;}.cke_skin_office2003 .cke_button_blockquote .cke_icon{background-position:0 -1152px;}.cke_skin_office2003 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_office2003 .cke_button_pastefromword .cke_icon{background-position:0 -160px;}.cke_skin_office2003 .cke_button_save .cke_icon{background-position:0 -32px;}.cke_skin_office2003 .cke_button_about .cke_icon{background-position:0 -736px;}.cke_skin_office2003 .cke_button_maximize .cke_icon{background-position:0 -1040px;}.cke_skin_office2003 .cke_button_creatediv .cke_icon{background-position:0 -1168px;}.cke_skin_office2003 .cke_button_editdiv .cke_icon{background-position:0 -1184px;}.cke_skin_office2003 .cke_button_removediv .cke_icon{background-position:0 -1200px;}.cke_skin_office2003 .cke_button_bidirtl .cke_icon{background-position:0 -1072px;}.cke_skin_office2003 .cke_button_bidiltr .cke_icon{background-position:0 -1056px;}.cke_skin_office2003 .cke_button_iframe .cke_icon{background-position:0 -1279px;}.cke_skin_office2003 .cke_button_source .cke_label{display:inline;}.cke_skin_office2003 .cke_styles_panel{width:150px;height:170px;}.cke_skin_office2003 .cke_format_panel{width:150px;height:170px;}.cke_skin_office2003 .cke_font_panel{width:150px;height:170px;}.cke_skin_office2003 .cke_fontSize_panel{height:170px;}.cke_skin_office2003 .cke_fontSize .cke_text{width:20px;}.cke_skin_office2003 .cke_browser_iequirks .cke_fontSize .cke_text{width:32px;}html .cke_skin_office2003{visibility:inherit;}html.cke_skin_office2003_container{visibility:visible;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/icons.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/icons.png
new file mode 100755
index 0000000..7c3bf19
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/icons.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/icons_rtl.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/icons_rtl.png
new file mode 100755
index 0000000..83eee28
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/icons_rtl.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/dialog_sides.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/dialog_sides.gif
new file mode 100755
index 0000000..5840d01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/dialog_sides.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/dialog_sides.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/dialog_sides.png
new file mode 100755
index 0000000..7da9821
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/dialog_sides.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/dialog_sides_rtl.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/dialog_sides_rtl.png
new file mode 100755
index 0000000..24fe13a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/dialog_sides_rtl.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/mini.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/mini.gif
new file mode 100755
index 0000000..54d9107
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/mini.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/noimage.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/noimage.png
new file mode 100755
index 0000000..1598113
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/noimage.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/sprites.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/sprites.png
new file mode 100755
index 0000000..a6d3a72
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/sprites.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/sprites_ie6.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/sprites_ie6.png
new file mode 100755
index 0000000..94073b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/images/sprites_ie6.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/skin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/skin.js
new file mode 100755
index 0000000..89a944d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/skin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add('office2003',(function(){return{editor:{css:['editor.css']},dialog:{css:['dialog.css']},separator:{canGroup:false},templates:{css:['templates.css']},margins:[0,14,18,14]};})());(function(){CKEDITOR.dialog?a():CKEDITOR.on('dialogPluginReady',a);function a(){CKEDITOR.dialog.on('resize',function(b){var c=b.data,d=c.width,e=c.height,f=c.dialog,g=f.parts.contents;if(c.skin!='office2003')return;g.setStyles({width:d+'px',height:e+'px'});if(!CKEDITOR.env.ie||CKEDITOR.env.ie9Compat)return;var h=function(){var i=f.parts.dialog.getChild([0,0,0]),j=i.getChild(0),k=j.getSize('width');e+=j.getChild(0).getSize('height')+1;var l=i.getChild(2);l.setSize('width',k);l=i.getChild(7);l.setSize('width',k-28);l=i.getChild(4);l.setSize('height',e);l=i.getChild(5);l.setSize('height',e);};setTimeout(h,100);if(b.editor.lang.dir=='rtl')setTimeout(h,1000);});};})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/templates.css b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/templates.css
new file mode 100755
index 0000000..34067a0
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/office2003/templates.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 .cke_tpl_list{border:#dcdcdc 2px solid;background-color:#fff;overflow:auto;width:100%;height:220px;}.cke_skin_office2003 .cke_tpl_item{margin:5px;padding:7px;border:#eee 1px solid;*width:88%;}.cke_skin_office2003 .cke_tpl_preview{border-collapse:separate;text-indent:0;width:100%;}.cke_skin_office2003 .cke_tpl_preview td{padding:2px;vertical-align:middle;}.cke_skin_office2003 .cke_tpl_preview .cke_tpl_preview_img{width:100px;}.cke_skin_office2003 .cke_tpl_preview span{white-space:normal;}.cke_skin_office2003 .cke_tpl_title{font-weight:bold;}.cke_skin_office2003 .cke_tpl_list a:active .cke_tpl_item,.cke_skin_office2003 .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_office2003 .cke_tpl_list a:focus .cke_tpl_item{border:#f93 1px solid!important;background-color:#fffacd!important;}.cke_skin_office2003 .cke_tpl_list a:active *,.cke_skin_office2003 .cke_tpl_list a:hover *,.cke_skin_office2003 .cke_tpl_list a:focus *{cursor:pointer;}.cke_skin_office2003 .cke_browser_ie6 .cke_tpl_list a:active,.cke_skin_office2003 .cke_browser_ie6 .cke_tpl_list a:hover,.cke_skin_office2003 .cke_browser_ie6 .cke_tpl_list a:focus{background-position:0 0;}.cke_skin_office2003 .cke_tpl_list a:active .cke_tpl_item,.cke_skin_office2003 .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_office2003 .cke_tpl_list a:focus .cke_tpl_item{border-width:3px;}.cke_skin_office2003 .cke_tpl_empty,.cke_tpl_loading{text-align:center;padding:5px;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/dialog.css b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/dialog.css
new file mode 100755
index 0000000..873d100
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/dialog.css
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body .cke_dialog{visibility:visible;}.cke_skin_v2 table.cke_dialog.cke_browser_gecko{display:block;}.cke_skin_v2 .cke_dialog_body{margin-left:16px;margin-right:16px;margin-top:2px;margin-bottom:20px;z-index:1;_position:static;}.cke_skin_v2 .cke_dialog_tl,.cke_skin_v2 .cke_dialog_tr,.cke_skin_v2 .cke_dialog_tc,.cke_skin_v2 .cke_dialog_bl,.cke_skin_v2 .cke_dialog_br,.cke_skin_v2 .cke_dialog_bc{background-image:url(images/sprites.png);background-repeat:no-repeat;position:absolute;_background-image:url(images/sprites_ie6.png);z-index:-1;}.cke_skin_v2 .cke_dialog_tl{background-position:-16px -16px;height:16px;width:16px;top:0;left:0;}.cke_skin_v2 .cke_rtl .cke_dialog_tl{background-position:-16px -397px;}.cke_skin_v2 .cke_dialog_tr{background-position:-16px -76px;height:16px;width:16px;top:0;right:0;}.cke_skin_v2 .cke_rtl .cke_dialog_tr{background-position:-16px -457px;}.cke_skin_v2 .cke_dialog_tc{background-position:0 -136px;background-repeat:repeat-x;height:16px;top:0;left:16px;right:16px;}.cke_skin_v2 .cke_dialog_bl{background-position:-16px -196px;height:51px;width:30px;bottom:0;left:0;}.cke_skin_v2 .cke_rtl .cke_dialog_bl{background-position:-16px -517px;}.cke_skin_v2 .cke_dialog_br{background-position:-16px -263px;height:51px;width:30px;bottom:0;right:0;}.cke_skin_v2 .cke_rtl .cke_dialog_br{background-position:-16px -584px;}.cke_skin_v2 .cke_dialog_bc{background-position:0 -330px;background-repeat:repeat-x;height:51px;bottom:0;left:30px;right:30px;}.cke_skin_v2 .cke_dialog_ml,.cke_skin_v2 .cke_dialog_mr{background-image:url(images/dialog_sides.png);background-repeat:repeat-y;position:absolute;width:16px;top:16px;bottom:51px;_background-image:url(images/dialog_sides.gif);_top:auto;}.cke_skin_v2 .cke_rtl .cke_dialog_ml,.cke_skin_v2 .cke_rtl .cke_dialog_mr{background-image:url(images/dialog_sides_rtl.png);_background-image:url(images/dialog_sides.gif);}.cke_skin_v2 .cke_dialog_ml{background-position:0 0;left:0;}.cke_skin_v2 .cke_dialog_mr{background-position:-16px 0;right:0;}.cke_skin_v2 .cke_browser_iequirks .cke_dialog_ml,.cke_skin_v2 .cke_browser_iequirks .cke_dialog_mr{margin-top:3px;}.cke_skin_v2 .cke_dialog_title{font-weight:bold;font-size:14pt;color:#737357;background-color:#e3e3c7;padding:3px 10px 26px 10px;cursor:move;position:relative;}.cke_skin_v2 .cke_browser_ie.cke_rtl .cke_dialog_title{position:static;}.cke_skin_v2 .cke_dialog_contents{background-color:#f1f1e3;border:#d5d59d 1px solid;overflow:auto;padding:5px 10px;}.cke_skin_v2 .cke_dialog_footer{background-color:#e3e3c7;text-align:right;}.cke_skin_v2 .cke_rtl .cke_dialog_footer{text-align:left;}.cke_skin_v2 .cke_dialog_footer .cke_resizer{margin-top:21px;}.cke_skin_v2 .cke_dialog_tabs{height:23px;background-color:#e3e3c7;display:inline-block;margin-left:10px;margin-right:10px;margin-top:-23px;position:absolute;z-index:2;}.cke_skin_v2 .cke_rtl .cke_dialog_tabs{right:10px;}.cke_skin_v2 a.cke_dialog_tab,.cke_skin_v2 a:link.cke_dialog_tab,.cke_skin_v2 a:active.cke_dialog_tab,.cke_skin_v2 a:hover.cke_dialog_tab,.cke_skin_v2 a:visited.cke_dialog_tab{color:#737357;border-left:1px solid #d5d59d;border-right:1px solid #d5d59d;border-top:1px solid #d5d59d;height:14px;padding:4px 5px;display:inline-block;cursor:pointer;}.cke_skin_v2 .cke_browser_gecko18 a.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:link.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:active.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:hover.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:visited.cke_dialog_tab{display:inline;position:relative;top:6px;}.cke_skin_v2 a:hover.cke_dialog_tab{background-color:#f1f1e3;}.cke_skin_v2 .cke_hc a:hover.cke_dialog_tab{padding:2px 3px!important;border-width:3px;}.cke_skin_v2 a.cke_dialog_tab_selected,.cke_skin_v2 a:link.cke_dialog_tab_selected,.cke_skin_v2 a:active.cke_dialog_tab_selected,.cke_skin_v2 a:hover.cke_dialog_tab_selected,.cke_skin_v2 a:visited.cke_dialog_tab_selected{border-bottom:1px solid #f1f1e3;background-color:#f1f1e3;font-weight:bold;cursor:default;}.cke_skin_v2 .cke_hc a.cke_dialog_tab_selected,.cke_skin_v2 .cke_hc a:link.cke_dialog_tab_selected,.cke_skin_v2 .cke_hc a:active.cke_dialog_tab_selected,.cke_skin_v2 .cke_hc a:hover.cke_dialog_tab_selected,.cke_skin_v2 .cke_hc a:visited.cke_dialog_tab_selected{padding:2px 3px!important;border-width:3px;}
+.cke_skin_v2 .cke_hc .cke_dialog_tabs a,.cke_skin_v2 .cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white;}.cke_skin_v2 .cke_single_page .cke_dialog_tabs{display:none;}.cke_skin_v2 .cke_single_page .cke_dialog_title{padding-bottom:3px;}.cke_skin_v2 .cke_dialog_ui_vbox table,.cke_skin_v2 .cke_dialog_ui_hbox table{margin:auto;}.cke_skin_v2 .cke_dialog_ui_vbox_child{padding:5px 0;}.cke_skin_v2 input.cke_dialog_ui_input_text,.cke_skin_v2 input.cke_dialog_ui_input_password{background-color:white;border:none;padding:0;width:100%;height:14px;}.cke_skin_v2 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_password{border-width:0;}.cke_skin_v2 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_password{border-width:1px;}.cke_skin_v2 .cke_browser_ie.cke_rtl input.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_opera.cke_rtl input.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_ie.cke_rtl input.cke_dialog_ui_input_password,.cke_skin_v2 .cke_browser_opera.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px;}.cke_skin_v2 .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_opera.cke_rtl div.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_password,.cke_skin_v2 .cke_browser_opera.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px;}.cke_skin_v2 .cke_browser_ie.cke_rtl .cke_dialog_ui_vbox_child,.cke_skin_v2 .cke_browser_ie.cke_rtl .cke_dialog_ui_hbox_child,.cke_skin_v2 .cke_browser_ie.cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_browser_ie.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important;}.cke_skin_v2 div.cke_dialog_ui_input_text,.cke_skin_v2 div.cke_dialog_ui_input_password{background-color:white;border:1px solid #a0a0a0;padding:1px 0;_width:99.9%;}.cke_skin_v2 .cke_browser_ie7 input.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_ie7 input.cke_dialog_ui_input_password{position:absolute;}.cke_skin_v2 .cke_browser_ie7 div.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_ie7 div.cke_dialog_ui_input_password{height:14px;position:relative;}.cke_skin_v2 .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px;}.cke_skin_v2 textarea.cke_dialog_ui_input_textarea{background-color:white;border:none;padding:0;width:100%;_width:99%;overflow:auto;resize:none;}.cke_skin_v2 div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_v2 .cke_rtl .cke_dialog_ui_labeled_content{_width:95%;}.cke_skin_v2 div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default;}.cke_skin_v2 .cke_dialog_ui_hbox{width:100%;}.cke_skin_v2 .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_dialog_ui_hbox_child,.cke_skin_v2 .cke_dialog_ui_hbox_last{vertical-align:top;}.cke_skin_v2 .cke_ltr .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px;}.cke_skin_v2 .cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px;}.cke_skin_v2 a.cke_dialog_ui_button{border-collapse:separate;cursor:default;}.cke_skin_v2 a.cke_dialog_ui_button_ok span,.cke_skin_v2 a.cke_dialog_ui_button_cancel span{width:60px;}.cke_skin_v2 span.cke_dialog_ui_button{border:#737357 1px solid;padding:2px 10px;text-align:center;color:#3b3b1f;background-color:#c7c78f;display:inline-block;cursor:default;}.cke_skin_v2 .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{display:block;}.cke_skin_v2 a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3;}.cke_skin_v2 a:focus span.cke_dialog_ui_button,.cke_skin_v2 a:active span.cke_dialog_ui_button{background-color:#e3e3c7;}.cke_skin_v2 .cke_hc a:focus span.cke_dialog_ui_button,.cke_skin_v2 .cke_hc a:active span.cke_dialog_ui_button{border-width:2px;}.cke_skin_v2 .cke_dialog_footer_buttons{display:inline-table;margin-right:12px;margin-left:12px;width:auto;position:relative;}
+.cke_skin_v2 .cke_browser_gecko18 .cke_dialog_footer_buttons{display:inline;}.cke_skin_v2 .cke_dialog_footer_buttons span.cke_dialog_ui_button{margin:7px 0;}.cke_skin_v2 .cke_browser_ie7 .cke_dialog_footer_buttons{position:static;}.cke_skin_v2 strong{font-weight:bold;}.cke_skin_v2 a.cke_dialog_close_button,.cke_skin_v2 a:hover.cke_dialog_close_button,.cke_skin_v2 .cke_browser_ie6 a.cke_dialog_close_button,.cke_skin_v2 .cke_browser_ie6 a:hover.cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:-16px -651px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;_background-image:url(images/sprites_ie6.png);}.cke_skin_v2 a.cke_dialog_close_button span{display:none;}.cke_skin_v2 a:hover.cke_dialog_close_button{background-position:-16px -687px;}.cke_skin_v2 .cke_ltr a.cke_dialog_close_button,.cke_skin_v2 .cke_ltr a:hover.cke_dialog_close_button{right:22px;}.cke_skin_v2 .cke_rtl a.cke_dialog_close_button,.cke_skin_v2 .cke_rtl a:hover.cke_dialog_close_button{left:16px;_top:7px;}.cke_skin_v2 .cke_browser_ie6.cke_rtl a.cke_dialog_close_button,.cke_skin_v2 .cke_browser_ie6.cke_rtl a:hover.cke_dialog_close_button{position:relative;float:left;margin-top:-55px;margin-left:-7px;}.cke_skin_v2 .cke_browser_iequirks.cke_rtl.cke_single_page a.cke_dialog_close_button,.cke_skin_v2 .cke_browser_iequirks.cke_rtl.cke_single_page a:hover.cke_dialog_close_button{margin-top:-32px;}.cke_skin_v2 .cke_browser_iequirks.cke_ltr a.cke_dialog_close_button,.cke_skin_v2 .cke_browser_iequirks.cke_ltr a:hover.cke_dialog_close_button{margin-top:0;}.cke_skin_v2 .cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white;}.cke_skin_v2 .cke_dialog_ui_input_file{width:100%;height:25px;}.cke_skin_v2 .cke_dialog .cke_dark_background{background-color:#eaead1;}.cke_skin_v2 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_v2 .cke_dialog .cke_centered{text-align:center;}.cke_skin_v2 .cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px;}.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_reset{float:left;}.cke_skin_v2 .cke_dialog a.cke_btn_locked,.cke_skin_v2 .cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px;}.cke_skin_v2 .cke_dialog a.cke_btn_locked .cke_icon{display:none;}.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_locked,.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_unlocked{float:right;}.cke_skin_v2 .cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif);}.cke_skin_v2 .cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer;}.cke_skin_v2 .cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:210px;width:230px;padding:2px;background-color:white;}.cke_skin_v2 .cke_dialog .ImagePreviewBox table td{white-space:normal;}.cke_skin_v2 .cke_browser_iequirks .cke_dialog_page_contents{_position:absolute;}.cke_skin_v2 .cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4;}.cke_skin_v2 .cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white;}.cke_skin_v2 .cke_dialog .cke_pastetext{width:346px;height:170px;}.cke_skin_v2 .cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none;}.cke_skin_v2 .cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black;}.cke_skin_v2 .cke_dialog .cke_dark_background{text-align:center;background-color:#eaead1;font-size:14px;}.cke_skin_v2 .cke_dialog .cke_light_background{text-align:center;background-color:#ffffbe;}.cke_skin_v2 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_v2 .cke_disabled{color:#a0a0a0;}.cke_skin_v2 .cke_hc .cke_dialog_title,.cke_skin_v2 .cke_hc .cke_dialog_tabs,.cke_skin_v2 .cke_hc .cke_dialog_contents,.cke_skin_v2 .cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid;}
+.cke_skin_v2 .cke_hc .cke_dialog_title{border-top:1px solid;}.cke_skin_v2 .cke_hc .cke_dialog_footer{border-bottom:1px solid;}.cke_skin_v2 .cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px;}.cke_skin_v2 .cke_dialog_body .cke_label{display:none;}.cke_skin_v2 .cke_dialog_body label.cke_required{font-weight:bold;}.cke_skin_v2 .cke_hc .cke_dialog_body .cke_label{display:inline;cursor:inherit;}.cke_skin_v2 .cke_hc a.cke_btn_locked,.cke_skin_v2 .cke_hc a.cke_btn_unlocked,.cke_skin_v2 .cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;padding:0 2px;}.cke_skin_v2 .cke_hc a.cke_btn_locked .cke_icon{display:inline;}.cke_skin_v2 .cke_rtl.cke_hc a.cke_btn_locked,.cke_skin_v2 .cke_rtl.cke_hc a.cke_btn_unlocked,.cke_skin_v2 .cke_rtl.cke_hc a.cke_btn_reset{float:right;}.cke_skin_v2 a.cke_smile img{border:2px solid #eaead1;}.cke_skin_v2 a.cke_smile:focus img,.cke_skin_v2 a.cke_smile:active img,.cke_skin_v2 a.cke_smile:hover img{border-color:#C7C78F;}.cke_skin_v2 .cke_dialog_contents a.colorChooser{display:block;margin-top:12px;margin-left:10px;width:40px;}.cke_skin_v2 .cke_dialog_contents a.colorChooser .cke_dialog_ui_button{width:100%;}.cke_skin_v2 .cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px;}.cke_skin_v2 .cke_browser_gecko .cke_dialog_ui_checkbox_input:focus,.cke_skin_v2 .cke_browser_gecko .cke_dialog_ui_radio_input:focus,.cke_skin_v2 .cke_browser_opera .cke_dialog_ui_checkbox_input:focus,.cke_skin_v2 .cke_browser_opera .cke_dialog_ui_radio_input:focus,.cke_skin_v2 .cke_browser_gecko .cke_dialog_ui_input_select:focus,.cke_skin_v2 .cke_browser_gecko .cke_btn_over,.cke_skin_v2 .cke_browser_opera .cke_btn_over,.cke_skin_v2 .cke_browser_ie .cke_btn_over{outline:1px dotted #696969;}.cke_skin_v2 .cke_browser_ie .cke_dialog_ui_checkbox_input,.cke_skin_v2 .cke_browser_ie .cke_dialog_ui_ratio_input,.cke_skin_v2 .cke_browser_ie .cke_btn_reset,.cke_skin_v2 .cke_browser_ie .cke_btn_locked,.cke_skin_v2 .cke_browser_ie .cke_btn_unlocked{*border:1px solid transparent!important;-border:1px solid red!important;-filter:chroma(color=red);}.cke_skin_v2 .cke_browser_ie .cke_dialog_ui_focused,.cke_skin_v2 .cke_browser_ie .cke_btn_over{*border:1px dotted #696969!important;}.cke_skin_v2 .cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity=0);width:100%;height:100%;}.cke_dialog label{display:inline;margin-bottom:auto;cursor:default;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/editor.css b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/editor.css
new file mode 100755
index 0000000..9e8fda8
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/editor.css
@@ -0,0 +1,13 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 *,.cke_skin_v2 a:hover,.cke_skin_v2 a:link,.cke_skin_v2 a:visited,.cke_skin_v2 a:active{margin:0;padding:0;border:0;background:transparent;text-decoration:none;font:normal normal normal 100% Sans-Serif;width:auto;height:auto;border-collapse:collapse;text-align:left;vertical-align:baseline;white-space:nowrap;cursor:auto;color:#000;float:none;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_skin_v2 .cke_rtl *,.cke_skin_v2 .cke_rtl a:hover,.cke_skin_v2 .cke_rtl a:link,.cke_skin_v2 .cke_rtl a:visited,.cke_skin_v2 .cke_rtl a:active,.cke_rtl .cke_skin_v2 *,.cke_rtl .cke_skin_v2 a:hover,.cke_rtl .cke_skin_v2 a:link,.cke_rtl .cke_skin_v2 a:visited,.cke_rtl .cke_skin_v2 a:active{text-align:right;}.cke_skin_v2 iframe{vertical-align:inherit;}.cke_skin_v2 textarea{white-space:pre;}.cke_skin_v2 .cke_browser_gecko textarea{cursor:text;}.cke_skin_v2 .cke_browser_gecko textarea[disabled]{cursor:default;}.cke_skin_v2 input[type="text"],.cke_skin_v2 input[type="password"]{cursor:text;}.cke_skin_v2 input[type="text"][disabled],.cke_skin_v2 input[type="password"][disabled]{cursor:default;}.cke_skin_v2 fieldset{padding:10px;border:2px groove #E0DFE3;}.cke_skin_v2 .cke_editor{display:inline-table;width:100%;}.cke_skin_v2 .cke_browser_webkit .cke_editor{display:table;}.cke_skin_v2{display:block;}.cke_skin_v2 span.cke_browser_webkit,.cke_skin_v2 span.cke_browser_gecko18{display:block;}.cke_skin_v2 .cke_wrapper{display:block;}.cke_skin_v2 .cke_browser_opera .cke_editor{display:table;}.cke_skin_v2 .cke_top,.cke_skin_v2 .cke_bottom,.cke_shared .cke_skin_v2{background-color:#efefde;}.cke_skin_v2 .cke_top{border-top:solid 1px #fafaf5;border-left:solid 1px #fafaf5;border-right:solid 1px #696969;border-bottom:solid 2px #696969;}.cke_skin_v2 .cke_rtl .cke_top{border-left:solid 1px #696969;border-right:solid 1px #fafaf5;}.cke_skin_v2 .cke_bottom{border-left:solid 1px #696969;border-right:solid 1px #696969;border-bottom:solid 1px #696969;}.cke_skin_v2 .cke_contents{border:solid 1px #696969;background-color:white;}.cke_skin_v2 .cke_focus{outline:auto 5px -webkit-focus-ring-color;}.cke_skin_v2 textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre;}.cke_skin_v2 .cke_browser_iequirks textarea.cke_source{_white-space:normal;}.cke_skin_v2 .cke_resizer{width:12px;height:12px;margin-top:16px;display:block;float:right;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -801px;background-repeat:no-repeat;cursor:se-resize;}.cke_skin_v2 .cke_browser_air .cke_resizer,.cke_skin_v2 .cke_browser_air .cke_rtl .cke_resizer{cursor:move;}.cke_skin_v2 .cke_resizer_rtl{cursor:sw-resize;background-position:0 -828px;float:left;}.cke_skin_v2 .cke_resizer_horizontal,.cke_skin_v2 .cke_rtl .cke_resizer_horizontal{cursor:e-resize;}.cke_skin_v2 .cke_resizer_vertical,.cke_skin_v2 .cke_rtl .cke_resizer_vertical{cursor:n-resize;}.cke_skin_v2 .cke_maximized .cke_resizer{display:none;}.cke_skin_v2 .cke_browser_ie6 .cke_contents textarea,.cke_skin_v2 .cke_browser_ie7 .cke_contents textarea{position:absolute;}.cke_skin_v2 .cke_voice_label{display:none;}.cke_skin_v2 legend.cke_voice_label{display:none;}.cke_skin_v2 .cke_browser_ie legend.cke_voice_label{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_v2 .cke_panel{border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.cke_skin_v2 .cke_panel iframe{width:100%;height:100%;}.cke_skin_v2 .cke_panel_frame .cke_label{display:none;}html.cke_skin_v2_container{overflow:auto;overflow-x:hidden;}body.cke_panel_frame{overflow:auto;}ul.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap;}li.cke_panel_listItem{margin:0;}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;}* html .cke_panel_listItem a{width:100%;color:#000;}*:first-child+html .cke_panel_listItem a{color:#000;}
+.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff;}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff;}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0;}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px;}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px;}.cke_skin_v2 .cke_button_textcolor_panel,.cke_skin_v2 .cke_button_bgcolor_panel{width:150px;height:135px;}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000;}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left;}.cke_rtl span.cke_colorbox{float:right;}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;}.cke_rtl a.cke_colorbox{float:right;}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff;}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer;}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff;}@media print{.cke_skin_v2 .cke_toolbox{display:none;}}.cke_skin_v2 .cke_browser_webkit .cke_toolbox,.cke_skin_v2 .cke_browser_webkit .cke_toolbox>span{white-space:normal;}.cke_skin_v2 .cke_toolbox{clear:both;padding-bottom:1px;}.cke_skin_v2 a.cke_toolbox_collapser,.cke_skin_v2 a:hover.cke_toolbox_collapser{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:3px -739px;background-repeat:no-repeat;width:11px;height:11px;float:right;border:outset 1px;margin:11px 2px 2px;cursor:pointer;}.cke_skin_v2 a.cke_toolbox_collapser span{display:none;}.cke_skin_v2 .cke_hc a.cke_toolbox_collapser span{font-size:10px;font-weight:bold;font-family:Arial;display:inline;}.cke_skin_v2 .cke_rtl a.cke_toolbox_collapser,.cke_skin_v2 .cke_rtl a:hover.cke_toolbox_collapser{float:left;}.cke_skin_v2 a.cke_toolbox_collapser_min,.cke_skin_v2 a:hover.cke_toolbox_collapser_min{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:4px -760px;background-repeat:no-repeat;margin:2px;}.cke_skin_v2 .cke_rtl a.cke_toolbox_collapser_min,.cke_skin_v2 .cke_rtl a:hover.cke_toolbox_collapser_min{background-position:4px -781px;}.cke_skin_v2 .cke_toolbar{padding-top:1px;padding-bottom:1px;display:inline-block;float:left;}.cke_skin_v2 .cke_rtl .cke_toolbar{float:right;}.cke_skin_v2 .cke_toolgroup{display:inline-block;float:left;}.cke_skin_v2 .cke_browser_ie .cke_toolgroup{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_toolgroup{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolgroup{#float:none;}.cke_skin_v2 .cke_separator{display:inline-block;float:left;border-left:solid 1px #999;margin:4px 2px;height:16px;}.cke_skin_v2 .cke_browser_ie .cke_separator{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_separator{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_separator{#float:none;}.cke_skin_v2 .cke_break{clear:left;}.cke_skin_v2 .cke_rtl .cke_break{clear:right;}.cke_skin_v2 .cke_toolbar_start{display:inline-block;background-image:url(images/toolbar_start.gif);background-repeat:no-repeat;margin:4px 2px 0 2px;width:3px;height:20px;float:left;}.cke_skin_v2 .cke_browser_ie .cke_toolbar_start{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_toolbar_start{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_start{#float:none;}.cke_skin_v2 .cke_toolbar_end{display:inline-block;float:left;}
+.cke_skin_v2 .cke_browser_ie .cke_toolbar_end{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_toolbar_end{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_end{#float:none;}.cke_skin_v2 .cke_browser_ie9 .cke_rtl .cke_separator,.cke_skin_v2 .cke_browser_ie9 .cke_rtl .cke_toolbar_start,.cke_skin_v2 .cke_browser_ie9 .cke_rtl .cke_toolbar_end{vertical-align:middle;}.cke_skin_v2 .cke_button a,.cke_skin_v2 .cke_button a:hover,.cke_skin_v2 .cke_button a:focus,.cke_skin_v2 .cke_button a:active,.cke_skin_v2 .cke_button a.cke_off{border:solid 1px #efefde;display:inline-block;border-radius:3px;outline:none;padding-top:2px;padding-left:4px;padding-right:4px;padding-bottom:2px;height:18px;cursor:default;}.cke_skin_v2 .cke_button a,.cke_skin_v2 .cke_button a.cke_off{background-color:#efefde;filter:alpha(opacity=70);opacity:.70;-moz-border-radius:3px;-webkit-border-radius:3px;}.cke_skin_v2 .cke_hc .cke_button a,.cke_skin_v2 .cke_hc .cke_button a.cke_off{opacity:1.0;filter:alpha(opacity=100);}.cke_skin_v2 .cke_button a.cke_on{border:solid 1px #316ac5;background-color:#a3d7ff;filter:alpha(opacity=100);opacity:1;}.cke_skin_v2 .cke_button a.cke_disabled *{filter:alpha(opacity=30);opacity:.3;}.cke_skin_v2 .cke_browser_ie .cke_button a.cke_disabled *,.cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled *{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_button a.cke_disabled *,.cke_skin_v2 .cke_browser_ie .cke_rtl a:hover.cke_button .cke_disabled *{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);}.cke_skin_v2 .cke_browser_ie6 .cke_button a.cke_disabled *,.cke_skin_v2 .cke_browser_ie6 a:hover.cke_button .cke_disabled *,.cke_skin_v2 .cke_browser_ie .cke_button.cke_noalphafix a.cke_disabled *{filter:alpha(opacity=30);}.cke_skin_v2 .cke_hc .cke_button a.cke_disabled *,.cke_skin_v2 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled *{filter:alpha(opacity=60);opacity:.6;}.cke_skin_v2 .cke_button a:hover,.cke_skin_v2 .cke_button a:focus,.cke_skin_v2 .cke_button a:active{border:solid 1px #316ac5;background-color:#dff1ff;padding:2px 4px;}.cke_skin_v2 .cke_hc .cke_button a:hover,.cke_skin_v2 .cke_hc .cke_button a:focus,.cke_skin_v2 .cke_hc .cke_button a:active{padding:0 2px!important;border-width:3px;}.cke_skin_v2 .cke_button .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;display:inline-block;cursor:default;}.cke_skin_v2 .cke_rtl .cke_button .cke_icon{background-image:url(icons_rtl.png);}.cke_skin_v2 .cke_browser_ie .cke_button .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_button .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_skin_v2 .cke_browser_ie6 .cke_button .cke_icon,.cke_skin_v2 .cke_browser_ie6 .cke_rtl .cke_button .cke_icon,.cke_skin_v2 .cke_browser_ie .cke_button.cke_noalphafix .cke_icon,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_button.cke_noalphafix .cke_icon{filter:;}.cke_skin_v2 .cke_button .cke_label{cursor:default;display:none;padding-left:3px;vertical-align:middle;}.cke_skin_v2 .cke_hc .cke_button .cke_label{padding:0;display:inline-block;}.cke_skin_v2 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_v2 .cke_accessibility{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_v2 .cke_button .cke_buttonarrow{display:inline-block;height:17px;width:8px;background-position:2px -717px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;cursor:default;}.cke_skin_v2 .cke_rtl .cke_button .cke_buttonarrow{background-position:0 -717px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);}.cke_skin_v2 .cke_browser_gecko18 .cke_toolbar,.cke_skin_v2 .cke_browser_gecko18 .cke_button a,.cke_skin_v2 .cke_browser_gecko18 .cke_button a.cke_off,.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_icon,.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_buttonarrow,.cke_skin_v2 .cke_browser_gecko18 .cke_separator,.cke_skin_v2 .cke_browser_gecko18 .cke_toolbar_start{display:block;float:left;}
+.cke_skin_v2 .cke_browser_gecko18 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_toolbar,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button a,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button a.cke_off,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_icon,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_buttonarrow,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_separator,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_toolbar_start{float:right;}.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_break{float:left;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl span.cke_inline_label{float:right;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_break{float:right;}.cke_skin_v2 .cke_browser_gecko18 .cke_separator{margin-top:4px;}.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_label{padding-top:3px;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolgroup,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_separator,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_start,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_end{float:none;}.cke_skin_v2 .cke_browser_ie8 .cke_toolbar,.cke_skin_v2 .cke_browser_ie8 .cke_toolgroup{vertical-align:top;}.cke_skin_v2 .cke_browser_iequirks.cke_browser_ie8 .cke_toolbar,.cke_skin_v2 .cke_browser_iequirks.cke_browser_ie8 .cke_toolgroup{vertical-align:baseline;}.cke_skin_v2 .cke_browser_ie .cke_rcombo,.cke_skin_v2 .cke_browser_ie .cke_rcombo *{cursor:default;}.cke_skin_v2 .cke_contextmenu{padding:2px;}.cke_skin_v2 .cke_menuitem a{display:block;}.cke_skin_v2 .cke_menuitem span{cursor:default;}.cke_skin_v2 .cke_menuitem a:hover,.cke_skin_v2 .cke_menuitem a:focus,.cke_skin_v2 .cke_menuitem a:active{background-color:#8f8f73;display:block;}.cke_hc .cke_menuitem a:hover,.cke_hc .cke_menuitem a:focus,.cke_hc .cke_menuitem a:active{border:2px solid;}.cke_skin_v2 .cke_menuitem .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;background-color:transparent;width:16px;height:16px;float:left;}.cke_rtl .cke_skin_v2 .cke_menuitem .cke_icon{background-image:url(icons_rtl.png);}.cke_browser_ie .cke_skin_v2 .cke_menuitem .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie.cke_rtl .cke_skin_v2 .cke_menuitem .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie6 .cke_skin_v2 .cke_menuitem .cke_icon,.cke_browser_ie .cke_skin_v2 .cke_menuitem.cke_noalphafix .cke_icon{filter:;}.cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon{filter:alpha(opacity=70);opacity:.70;}.cke_browser_ie .cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie.cke_rtl .cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_browser_ie6 .cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon,.cke_browser_ie .cke_skin_v2 .cke_menuitem.cke_noalphafix .cke_disabled .cke_icon{filter:;}.cke_skin_v2 .cke_menuitem .cke_icon_wrapper{background-color:#e3e3c7;border:solid 4px #e3e3c7;width:16px;height:16px;float:left;filter:alpha(opacity=70);opacity:.70;clear:both;}.cke_rtl .cke_skin_v2 .cke_menuitem .cke_icon_wrapper{float:right;}.cke_skin_v2 .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:active .cke_icon_wrapper{background-color:#9d9d9d;border:solid 4px #9d9d9d;filter:alpha(opacity=70);opacity:.70;}.cke_skin_v2 .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:active.cke_disabled .cke_icon_wrapper{background-color:#e3e3c7;border:solid 4px #e3e3c7;}.cke_skin_v2 .cke_menuitem .cke_label{display:block;padding-right:3px;padding-top:5px;padding-left:4px;height:19px;margin-left:24px;background-color:#fff;}
+.cke_skin_v2 .cke_frameLoaded .cke_menuitem .cke_label{filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_v2 .cke_menuitem .cke_label{padding-right:0;margin-left:0;padding-left:3px;margin-right:28px;}.cke_skin_v2 .cke_menuitem a.cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.30;}.cke_skin_v2 .cke_menuitem a:hover .cke_label,.cke_skin_v2 .cke_menuitem a:focus .cke_label,.cke_skin_v2 .cke_menuitem a:active .cke_label{background-color:#8f8f73;color:white;}.cke_skin_v2 .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_v2 .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_v2 .cke_menuitem a.cke_disabled:active .cke_label{background-color:transparent;color:black;}.cke_skin_v2 .cke_menuseparator{background-color:#e3e3c7;height:2px;filter:alpha(opacity=70);opacity:.70;_font-size:0;}.cke_skin_v2 .cke_menuarrow{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -784px;background-repeat:no-repeat;height:5px;width:3px;float:right;margin-right:2px;margin-top:3px;}.cke_rtl .cke_skin_v2 .cke_menuarrow{float:left;margin-right:0;margin-left:2px;background-position:0 -763px;}.cke_skin_v2 .cke_menuarrow span{display:none;}.cke_hc .cke_skin_v2 .cke_menuarrow{width:auto;margin-top:0;}.cke_hc .cke_skin_v2 .cke_menuarrow span{display:inline;}.cke_browser_ie.cke_ltr .cke_skin_v2 .cke_menuarrow{position:absolute;right:2px;}.cke_browser_ie.cke_rtl .cke_skin_v2 .cke_menuarrow{position:absolute;left:2px;}.cke_skin_v2 .cke_rcombo{display:inline-block;margin-left:2px;margin-right:2px;margin-top:2px;vertical-align:top;}.cke_skin_v2 .cke_browser_ie .cke_rcombo{#display:inline;}.cke_skin_v2 .cke_rcombopanel{border:1px solid #316ac5;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;}.cke_skin_v2 .cke_rcombo a{display:inline-block;float:left;filter:alpha(opacity=70);opacity:.70;}.cke_skin_v2 .cke_rtl .cke_rcombo a{float:right;}.cke_skin_v2 .cke_hc .cke_rcombo a{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_v2 .cke_rcombo .cke_label{float:left;line-height:20px;line-height:22px\9;height:22px;padding-left:4px;padding-right:5px;filter:alpha(opacity=70);opacity:.70;background-color:#f1f1e3;cursor:default;}.cke_skin_v2 .cke_rtl .cke_rcombo .cke_label{float:right;padding-right:4px;padding-left:5px;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_label{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_v2 .cke_rcombo .cke_inline_label{color:#fff;}.cke_skin_v2 .cke_rcombo .cke_text{border:1px solid #8f8f73;background-color:#fff;height:12px;width:60px;padding-top:4px;padding-bottom:4px;padding-left:5px;padding-right:5px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:top;cursor:default;}.cke_skin_v2 .cke_ltr .cke_rcombo .cke_text{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_v2 .cke_rtl .cke_rcombo .cke_text{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_v2 .cke_browser_iequirks .cke_rcombo .cke_text{height:22px;}.cke_skin_v2 .cke_rcombo .cke_openbutton{display:inline-block;border-top:1px solid #8f8f73;border-bottom:1px solid #8f8f73;}.cke_skin_v2 .cke_rcombo .cke_openbutton .cke_icon{display:inline-block;background-position:5px -715px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;width:14px;height:20px;}.cke_skin_v2 .cke_browser_ie .cke_rcombo .cke_openbutton .cke_icon{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');}.cke_skin_v2 .cke_browser_ie6 .cke_rcombo .cke_openbutton .cke_icon{filter:;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_openbutton .cke_icon{background:none;filter:;}.cke_skin_v2 .cke_ltr .cke_rcombo .cke_openbutton{border-right:1px solid #8f8f73;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}
+.cke_skin_v2 .cke_rtl .cke_rcombo .cke_openbutton{border-left:1px solid #8f8f73;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_v2 .cke_rcombo .cke_off a:hover,.cke_skin_v2 .cke_rcombo .cke_off a:focus,.cke_skin_v2 .cke_rcombo .cke_off a:active,.cke_skin_v2 .cke_rcombo .cke_on a{filter:alpha(opacity=100);opacity:1;}.cke_skin_v2 .cke_rcombo .cke_off a:hover .cke_text,.cke_skin_v2 .cke_rcombo .cke_off a:focus .cke_text,.cke_skin_v2 .cke_rcombo .cke_off a:active .cke_text,.cke_skin_v2 .cke_rcombo .cke_on .cke_text{border-color:#316ac5;}.cke_skin_v2 .cke_rcombo .cke_off a:hover .cke_openbutton,.cke_skin_v2 .cke_rcombo .cke_off a:focus .cke_openbutton,.cke_skin_v2 .cke_rcombo .cke_off a:active .cke_openbutton,.cke_skin_v2 .cke_rcombo .cke_on .cke_openbutton{border-color:#316ac5;background-color:#dff1ff;}.cke_skin_v2 .cke_rcombo .cke_on .cke_text{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}.cke_skin_v2 .cke_rcombo .cke_on .cke_openbutton{-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}.cke_skin_v2 .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.3;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=70);opacity:.7;}.cke_skin_v2 .cke_rcombo .cke_disabled .cke_text,.cke_skin_v2 .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);opacity:.5;}.cke_skin_v2 .cke_browser_ie .cke_rcombo .cke_disabled .cke_openbutton{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=50);}.cke_skin_v2 .cke_browser_ie6 .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);}.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_text,.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=80);opacity:.8;}.cke_skin_v2 .cke_rcombo .cke_disabled .cke_text{color:#fff;}.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo,.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_openbutton,.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_openbutton{display:block;float:left;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_openbutton,.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo a,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo .cke_label{float:none;}.cke_skin_v2 .cke_browser_iequirks .cke_rcombo .cke_openbutton{height:22px;}.cke_skin_v2 .cke_rtl .cke_rcombo .cke_font .cke_text,.cke_skin_v2 .cke_rtl .cke_rcombo .cke_fontSize .cke_text{direction:ltr;}@media print{.cke_path{display:none;}}.cke_skin_v2 .cke_path{padding:3px 3px 0 3px;display:inline-block;float:left;}.cke_skin_v2 .cke_rtl .cke_path{float:right;}.cke_skin_v2 .cke_path a,.cke_skin_v2 .cke_path .cke_empty{display:inline-block;float:left;border:solid 1px #efefde;background-color:#efefde;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;margin-bottom:3px;cursor:default;}.cke_skin_v2 .cke_path .cke_empty{visibility:hidden;}.cke_skin_v2 .cke_rtl .cke_path a,.cke_skin_v2 .cke_rtl .cke_path cke_empty{float:right;}.cke_skin_v2 .cke_path a:hover,.cke_skin_v2 .cke_path a:focus,.cke_skin_v2 .cke_path a:active{border:solid 1px #316ac5;background-color:#dff1ff;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;outline:none;}
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_path a,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_path .cke_empty{float:none;}.cke_skin_v2 .cke_path .cke_label{display:none;}.cke_skin_v2 .cke_button_source .cke_icon{background-position:0 0;}.cke_skin_v2 .cke_button_docProps .cke_icon{background-position:0 -16px;}.cke_skin_v2 .cke_button_newpage .cke_icon{background-position:0 -48px;}.cke_skin_v2 .cke_button_preview .cke_icon{background-position:0 -64px;}.cke_skin_v2 .cke_button_cut .cke_icon{background-position:0 -96px;}.cke_skin_v2 .cke_button_copy .cke_icon{background-position:0 -112px;}.cke_skin_v2 .cke_button_paste .cke_icon{background-position:0 -128px;}.cke_skin_v2 .cke_button_pastetext .cke_icon{background-position:0 -144px;}.cke_skin_v2 .cke_button_find .cke_icon{background-position:0 -240px;}.cke_skin_v2 .cke_button_replace .cke_icon{background-position:0 -256px;}.cke_skin_v2 .cke_button_selectAll .cke_icon{background-position:0 -272px;}.cke_skin_v2 .cke_button_removeFormat .cke_icon{background-position:0 -288px;}.cke_skin_v2 .cke_button_bold .cke_icon{background-position:0 -304px;}.cke_skin_v2 .cke_button_italic .cke_icon{background-position:0 -320px;}.cke_skin_v2 .cke_button_underline .cke_icon{background-position:0 -336px;}.cke_skin_v2 .cke_button_strike .cke_icon{background-position:0 -352px;}.cke_skin_v2 .cke_button_subscript .cke_icon{background-position:0 -368px;}.cke_skin_v2 .cke_button_superscript .cke_icon{background-position:0 -384px;}.cke_skin_v2 .cke_button_table .cke_icon{background-position:0 -608px;}.cke_skin_v2 .cke_button_horizontalrule .cke_icon{background-position:0 -624px;}.cke_skin_v2 .cke_button_smiley .cke_icon{background-position:0 -640px;}.cke_skin_v2 .cke_button_link .cke_icon{background-position:0 -528px;}.cke_skin_v2 .cke_button_unlink .cke_icon{background-position:0 -544px;}.cke_skin_v2 .cke_button_anchor .cke_icon{background-position:0 -560px;}.cke_skin_v2 .cke_button_image .cke_icon{background-position:0 -576px;}.cke_skin_v2 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_v2 .cke_button_specialchar .cke_icon{background-position:0 -656px;}.cke_skin_v2 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_v2 .cke_button_print .cke_icon{background-position:0 -176px;}.cke_skin_v2 .cke_button_checkspell .cke_icon,.cke_skin_v2 .cke_button_scayt .cke_icon{background-position:0 -192px;}.cke_skin_v2 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_v2 .cke_button_textcolor .cke_icon{background-position:0 -704px;}.cke_skin_v2 .cke_button_bgcolor .cke_icon{background-position:0 -720px;}.cke_skin_v2 .cke_button_form .cke_icon{background-position:0 -752px;}.cke_skin_v2 .cke_button_checkbox .cke_icon{background-position:0 -768px;}.cke_skin_v2 .cke_button_radio .cke_icon{background-position:0 -784px;}.cke_skin_v2 .cke_button_textfield .cke_icon{background-position:0 -800px;}.cke_skin_v2 .cke_button_textarea .cke_icon{background-position:0 -816px;}.cke_skin_v2 .cke_button_showblocks .cke_icon{background-position:0 -1136px;}.cke_skin_v2 .cke_button_select .cke_icon{background-position:0 -832px;}.cke_skin_v2 .cke_button_button .cke_icon{background-position:0 -848px;}.cke_skin_v2 .cke_button_imagebutton .cke_icon{background-position:0 -864px;}.cke_skin_v2 .cke_button_hiddenfield .cke_icon{background-position:0 -880px;}.cke_skin_v2 .cke_button_undo .cke_icon{background-position:0 -208px;}.cke_skin_v2 .cke_rtl .cke_button_undo .cke_icon{background-position:0 -224px;}.cke_skin_v2 .cke_button_redo .cke_icon{background-position:0 -224px;}.cke_skin_v2 .cke_rtl .cke_button_redo .cke_icon{background-position:0 -208px;}.cke_skin_v2 .cke_button_templates .cke_icon{background-position:0 -80px;}.cke_skin_v2 .cke_button_numberedlist .cke_icon{background-position:0 -400px;}.cke_skin_v2 .cke_button_bulletedlist .cke_icon{background-position:0 -416px;}.cke_skin_v2 .cke_mixed_dir_content .cke_button_numberedlist .cke_icon{background-position:0 -1217px;}.cke_skin_v2 .cke_mixed_dir_content .cke_button_bulletedlist .cke_icon{background-position:0 -1233px;}.cke_skin_v2 .cke_button_outdent .cke_icon{background-position:0 -432px;}
+.cke_skin_v2 .cke_button_indent .cke_icon{background-position:0 -448px;}.cke_skin_v2 .cke_mixed_dir_content .cke_button_indent .cke_icon{background-position:0 -1265px;}.cke_skin_v2 .cke_mixed_dir_content .cke_button_outdent .cke_icon{background-position:0 -1249px;}.cke_skin_v2 .cke_button_justifyleft .cke_icon{background-position:0 -464px;}.cke_skin_v2 .cke_button_justifycenter .cke_icon{background-position:0 -480px;}.cke_skin_v2 .cke_button_justifyright .cke_icon{background-position:0 -496px;}.cke_skin_v2 .cke_button_justifyblock .cke_icon{background-position:0 -512px;}.cke_skin_v2 .cke_button_blockquote .cke_icon{background-position:0 -1152px;}.cke_skin_v2 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_v2 .cke_button_pastefromword .cke_icon{background-position:0 -160px;}.cke_skin_v2 .cke_button_save .cke_icon{background-position:0 -32px;}.cke_skin_v2 .cke_button_about .cke_icon{background-position:0 -736px;}.cke_skin_v2 .cke_button_maximize .cke_icon{background-position:0 -1040px;}.cke_skin_v2 .cke_button_creatediv .cke_icon{background-position:0 -1168px;}.cke_skin_v2 .cke_button_editdiv .cke_icon{background-position:0 -1184px;}.cke_skin_v2 .cke_button_removediv .cke_icon{background-position:0 -1200px;}.cke_skin_v2 .cke_button_bidirtl .cke_icon{background-position:0 -1072px;}.cke_skin_v2 .cke_button_bidiltr .cke_icon{background-position:0 -1056px;}.cke_skin_v2 .cke_button_iframe .cke_icon{background-position:0 -1279px;}.cke_skin_v2 .cke_button_source .cke_label{display:inline;display:inline-block;}.cke_skin_v2 .cke_styles_panel{width:150px;height:170px;}.cke_skin_v2 .cke_format_panel{width:150px;height:170px;}.cke_skin_v2 .cke_font_panel{width:150px;height:170px;}.cke_skin_v2 .cke_fontSize_panel{height:170px;}.cke_skin_v2 .cke_fontSize .cke_text{width:20px;}.cke_skin_v2 .cke_browser_iequirks .cke_fontSize .cke_text{width:32px;}html .cke_skin_v2{visibility:inherit;}html.cke_skin_v2_container{visibility:visible;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/icons.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/icons.png
new file mode 100755
index 0000000..7c3bf19
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/icons.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/icons_rtl.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/icons_rtl.png
new file mode 100755
index 0000000..83eee28
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/icons_rtl.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/dialog_sides.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/dialog_sides.gif
new file mode 100755
index 0000000..8f91b47
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/dialog_sides.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/dialog_sides.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/dialog_sides.png
new file mode 100755
index 0000000..1042a61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/dialog_sides.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/dialog_sides_rtl.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/dialog_sides_rtl.png
new file mode 100755
index 0000000..d7f7b49
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/dialog_sides_rtl.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/mini.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/mini.gif
new file mode 100755
index 0000000..54d9107
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/mini.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/noimage.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/noimage.png
new file mode 100755
index 0000000..1598113
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/noimage.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/sprites.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/sprites.png
new file mode 100755
index 0000000..982717b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/sprites.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/sprites_ie6.png b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/sprites_ie6.png
new file mode 100755
index 0000000..4389b65
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/sprites_ie6.png differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/toolbar_start.gif b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/toolbar_start.gif
new file mode 100755
index 0000000..1774246
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/images/toolbar_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/skin.js b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/skin.js
new file mode 100755
index 0000000..9421e2f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/skin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add('v2',(function(){return{editor:{css:['editor.css']},dialog:{css:['dialog.css']},separator:{canGroup:false},templates:{css:['templates.css']},margins:[0,14,18,14]};})());(function(){CKEDITOR.dialog?a():CKEDITOR.on('dialogPluginReady',a);function a(){CKEDITOR.dialog.on('resize',function(b){var c=b.data,d=c.width,e=c.height,f=c.dialog,g=f.parts.contents;if(c.skin!='v2')return;g.setStyles({width:d+'px',height:e+'px'});if(!CKEDITOR.env.ie||CKEDITOR.env.ie9Compat)return;setTimeout(function(){var h=f.parts.dialog.getChild([0,0,0]),i=h.getChild(0),j=i.getSize('width');e+=i.getChild(0).getSize('height')+1;var k=h.getChild(2);k.setSize('width',j);k=h.getChild(7);k.setSize('width',j-28);k=h.getChild(4);k.setSize('height',e);k=h.getChild(5);k.setSize('height',e);},100);});};})();
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/templates.css b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/templates.css
new file mode 100755
index 0000000..2fa56c1
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/skins/v2/templates.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 .cke_tpl_list{border:#dcdcdc 2px solid;background-color:#fff;overflow:auto;width:100%;height:220px;}.cke_skin_v2 .cke_tpl_item{margin:5px;padding:7px;border:#eee 1px solid;*width:88%;}.cke_skin_v2 .cke_tpl_preview{border-collapse:separate;text-indent:0;width:100%;}.cke_skin_v2 .cke_tpl_preview td{padding:2px;vertical-align:middle;}.cke_skin_v2 .cke_tpl_preview .cke_tpl_preview_img{width:100px;}.cke_skin_v2 .cke_tpl_preview span{white-space:normal;}.cke_skin_v2 .cke_tpl_title{font-weight:bold;}.cke_skin_v2 .cke_tpl_list a:active .cke_tpl_item,.cke_skin_v2 .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_v2 .cke_tpl_list a:focus .cke_tpl_item{border:#f93 1px solid!important;background-color:#fffacd!important;}.cke_skin_v2 .cke_tpl_list a:active *,.cke_skin_v2 .cke_tpl_list a:hover *,.cke_skin_v2 .cke_tpl_list a:focus *{cursor:pointer;}.cke_skin_v2 .cke_browser_ie6 .cke_tpl_list a:active,.cke_skin_v2 .cke_browser_ie6 .cke_tpl_list a:hover,.cke_skin_v2 .cke_browser_ie6 .cke_tpl_list a:focus{background-position:0 0;}.cke_skin_v2 .cke_tpl_list a:active .cke_tpl_item,.cke_skin_v2 .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_v2 .cke_tpl_list a:focus .cke_tpl_item{border-width:3px;}.cke_skin_v2 .cke_tpl_empty,.cke_tpl_loading{text-align:center;padding:5px;}
diff --git a/sm-shop/src/main/webapp/resources/js/ckeditor/themes/default/theme.js b/sm-shop/src/main/webapp/resources/js/ckeditor/themes/default/theme.js
new file mode 100755
index 0000000..e508b4c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/ckeditor/themes/default/theme.js
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.themes.add('default',(function(){var a={};function b(c,d){var e,f;f=c.config.sharedSpaces;f=f&&f[d];f=f&&CKEDITOR.document.getById(f);if(f){var g='<span class="cke_shared " dir="'+c.lang.dir+'"'+'>'+'<span class="'+c.skinClass+' '+c.id+' cke_editor_'+c.name+'">'+'<span class="'+CKEDITOR.env.cssClass+'">'+'<span class="cke_wrapper cke_'+c.lang.dir+'">'+'<span class="cke_editor">'+'<div class="cke_'+d+'">'+'</div></span></span></span></span></span>',h=f.append(CKEDITOR.dom.element.createFromHtml(g,f.getDocument()));if(f.getCustomData('cke_hasshared'))h.hide();else f.setCustomData('cke_hasshared',1);e=h.getChild([0,0,0,0]);!c.sharedSpaces&&(c.sharedSpaces={});c.sharedSpaces[d]=e;c.on('focus',function(){for(var i=0,j,k=f.getChildren();j=k.getItem(i);i++){if(j.type==CKEDITOR.NODE_ELEMENT&&!j.equals(h)&&j.hasClass('cke_shared'))j.hide();}h.show();});c.on('destroy',function(){h.remove();});}return e;};return{build:function(c,d){var e=c.name,f=c.element,g=c.elementMode;if(!f||g==CKEDITOR.ELEMENT_MODE_NONE)return;if(g==CKEDITOR.ELEMENT_MODE_REPLACE)f.hide();var h=c.fire('themeSpace',{space:'top',html:''}).html,i=c.fire('themeSpace',{space:'contents',html:''}).html,j=c.fireOnce('themeSpace',{space:'bottom',html:''}).html,k=i&&c.config.height,l=c.config.tabIndex||c.element.getAttribute('tabindex')||0;if(!i)k='auto';else if(!isNaN(k))k+='px';var m='',n=c.config.width;if(n){if(!isNaN(n))n+='px';m+='width: '+n+';';}var o=h&&b(c,'top'),p=b(c,'bottom');o&&(o.setHtml(h),h='');p&&(p.setHtml(j),j='');var q='<style>.'+c.skinClass+'{visibility:hidden;}</style>';if(a[c.skinClass])q='';else a[c.skinClass]=1;var r=CKEDITOR.dom.element.createFromHtml(['<span id="cke_',e,'" class="',c.skinClass,' ',c.id,' cke_editor_',e,'" dir="',c.lang.dir,'" title="',CKEDITOR.env.gecko?' ':'','" lang="',c.langCode,'"'+(CKEDITOR.env.webkit?' tabindex="'+l+'"':'')+' role="application"'+' aria-labelledby="cke_',e,'_arialbl"'+(m?' style="'+m+'"':'')+'>'+'<span id="cke_',e,'_arialbl" class="cke_voice_label">'+c.lang.editor+'</span>'+'<span class="',CKEDITOR.env.cssClass,'" role="presentation"><span class="cke_wrapper cke_',c.lang.dir,'" role="presentation"><table class="cke_editor" border="0" cellspacing="0" cellpadding="0" role="presentation"><tbody><tr',h?'':' style="display:none"',' role="presentation"><td id="cke_top_',e,'" class="cke_top" role="presentation">',h,'</td></tr><tr',i?'':' style="display:none"',' role="presentation"><td id="cke_contents_',e,'" class="cke_contents" style="height:',k,'" role="presentation">',i,'</td></tr><tr',j?'':' style="display:none"',' role="presentation"><td id="cke_bottom_',e,'" class="cke_bottom" role="presentation">',j,'</td></tr></tbody></table>'+q+'</span>'+'</span>'+'</span>'].join(''));
+r.getChild([1,0,0,0,0]).unselectable();r.getChild([1,0,0,0,2]).unselectable();if(g==CKEDITOR.ELEMENT_MODE_REPLACE)r.insertAfter(f);else f.append(r);c.container=r;r.disableContextMenu();c.on('contentDirChanged',function(s){var t=(c.lang.dir!=s.data?'add':'remove')+'Class';r.getChild(1)[t]('cke_mixed_dir_content');var u=this.sharedSpaces&&this.sharedSpaces[this.config.toolbarLocation];u&&u.getParent().getParent()[t]('cke_mixed_dir_content');});c.fireOnce('themeLoaded');c.fireOnce('uiReady');},buildDialog:function(c){var d=CKEDITOR.tools.getNextNumber(),e=CKEDITOR.dom.element.createFromHtml(['<div class="',c.id,'_dialog cke_editor_',c.name.replace('.','\\.'),'_dialog cke_skin_',c.skinName,'" dir="',c.lang.dir,'" lang="',c.langCode,'" role="dialog" aria-labelledby="%title#"><table class="cke_dialog',' '+CKEDITOR.env.cssClass,' cke_',c.lang.dir,'" style="position:absolute" role="presentation"><tr><td role="presentation"><div class="%body" role="presentation"><div id="%title#" class="%title" role="presentation"></div><a id="%close_button#" class="%close_button" href="javascript:void(0)" title="'+c.lang.common.close+'" role="button"><span class="cke_label">X</span></a>'+'<div id="%tabs#" class="%tabs" role="tablist"></div>'+'<table class="%contents" role="presentation">'+'<tr>'+'<td id="%contents#" class="%contents" role="presentation"></td>'+'</tr>'+'<tr>'+'<td id="%footer#" class="%footer" role="presentation"></td>'+'</tr>'+'</table>'+'</div>'+'<div id="%tl#" class="%tl"></div>'+'<div id="%tc#" class="%tc"></div>'+'<div id="%tr#" class="%tr"></div>'+'<div id="%ml#" class="%ml"></div>'+'<div id="%mr#" class="%mr"></div>'+'<div id="%bl#" class="%bl"></div>'+'<div id="%bc#" class="%bc"></div>'+'<div id="%br#" class="%br"></div>'+'</td></tr>'+'</table>',CKEDITOR.env.ie?'':'<style>.cke_dialog{visibility:hidden;}</style>','</div>'].join('').replace(/#/g,'_'+d).replace(/%/g,'cke_dialog_')),f=e.getChild([0,0,0,0,0]),g=f.getChild(0),h=f.getChild(1);if(CKEDITOR.env.ie&&!CKEDITOR.env.ie6Compat){var i=CKEDITOR.env.isCustomDomain(),j='javascript:void(function(){'+encodeURIComponent('document.open();'+(i?'document.domain="'+document.domain+'";':'')+'document.close();')+'}())',k=CKEDITOR.dom.element.createFromHtml('<iframe frameBorder="0" class="cke_iframe_shim" src="'+j+'"'+' tabIndex="-1"'+'></iframe>');k.appendTo(f.getParent());}g.unselectable();h.unselectable();return{element:e,parts:{dialog:e.getChild(0),title:g,close:h,tabs:f.getChild(2),contents:f.getChild([3,0,0,0]),footer:f.getChild([3,0,1,0])}};
+},destroy:function(c){var d=c.container,e=c.element;if(d){d.clearCustomData();d.remove();}if(e){e.clearCustomData();c.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&e.show();delete c.element;}}};})());CKEDITOR.editor.prototype.getThemeSpace=function(a){var b='cke_'+a,c=this._[b]||(this._[b]=CKEDITOR.document.getById(b+'_'+this.name));return c;};CKEDITOR.editor.prototype.resize=function(a,b,c,d){var j=this;var e=j.container,f=CKEDITOR.document.getById('cke_contents_'+j.name),g=CKEDITOR.env.webkit&&j.document&&j.document.getWindow().$.frameElement,h=d?e.getChild(1):e;h.setSize('width',a,true);g&&(g.style.width='1%');var i=c?0:(h.$.offsetHeight||0)-(f.$.clientHeight||0);f.setStyle('height',Math.max(b-i,0)+'px');g&&(g.style.width='100%');j.fire('resize');};CKEDITOR.editor.prototype.getResizable=function(a){return a?CKEDITOR.document.getById('cke_contents_'+this.name):this.container;};
sm-shop/src/main/webapp/resources/js/functions.jsp 107(+107 -0)
diff --git a/sm-shop/src/main/webapp/resources/js/functions.jsp b/sm-shop/src/main/webapp/resources/js/functions.jsp
new file mode 100644
index 0000000..ec754c5
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/functions.jsp
@@ -0,0 +1,107 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+<%@ taglib uri="/WEB-INF/shopizer-tags.tld" prefix="sm" %>
+
+<%@ page session="false" %>
+
+<script>
+
+function getContextPath() {
+ return "${pageContext.request.contextPath}";
+}
+
+function getMerchantStore() {
+ return "${requestScope.MERCHANT_STORE.id}";
+}
+
+function getMerchantStoreCode() {
+ return "${requestScope.MERCHANT_STORE.code}";
+}
+
+function getLanguageCode() {
+ return "${requestScope.LANGUAGE.code}";
+}
+
+function getItemLabel(quantity) {
+ var labelItem = '<s:message code="label.generic.item" text="item" />';
+ if (quantity > 1) {
+ labelItem = '<s:message code="label.generic.items" text="items" />';
+ }
+ return labelItem;
+}
+
+function getLoginErrorLabel() {
+ return '<s:message code="message.username.password" text="Login Failed. Username or Password is incorrect."/>';
+}
+
+function emptyCartLabel(){
+ $("#cartMessage").html('<s:message code="cart.empty" text="Your Shopping cart is empty" />');
+ var labelItem = '<s:message code="label.generic.item" text="item" />';
+ $("#cartinfo").html('<span id="cartqty">(' + 0 + ' ' + labelItem + ')</span> <span id="cartprice"></span>');
+ $('#shoppingcart').hide();
+ $('#cartMessage').show();
+}
+
+function getInvalidEmailMessage() {
+ return '<s:message code="messages.invalid.email" text="Invalid email address"/>';
+}
+
+function getInvalidUserNameMessage() {
+ return '<s:message code="registration.username.length.invalid" text="User name must be at least 6 characters long"/>';
+}
+
+
+function getInvalidPasswordMessage() {
+ return '<s:message code="message.password.length" text="Password must be at least 6 characters long"/>';
+}
+
+function getInvalidCheckPasswordMessage() {
+ return '<s:message code="message.password.checkpassword.identical" text="Both password must match"/>';
+}
+
+function cartInfoLabel(cart){
+ var labelItem = getItemLabel(cart.quantity);
+ $("#cartinfo").html('<span id="cartqty">(' + cart.quantity + ' ' + labelItem + ')</span> <span id="cartprice">' + cart.total + '</span>');
+}
+
+function cartSubTotal(cart) {
+ return '<div class="pull-right"><font class="total-box-label"><s:message code="label.subtotal" text="Sub-total" /> : <font class="total-box-price"><strong><span id="checkout-total">' + cart.subTotal + '</span></strong></font></font></div>';
+}
+
+
+/**
+* Builds the product container div from the product list
+**/
+function buildProductsList(productList, divProductsContainer) {
+
+
+ for (var i = 0; i < productList.products.length; i++) {
+ var productHtml = '<li itemscope itemtype="http://schema.org/Enumeration" class="item listing-item" data-id="' + productList.products[i].id + '" item-price="' + productList.products[i].price +'" item-name="' + productList.products[i].description.name +'" item-order="' + productList.products[i].sortOrder +'">';
+ productHtml = productHtml + '<div class="product-box"><a href="<c:url value="/shop/product/" />' + productList.products[i].description.friendlyUrl + '.html<sm:breadcrumbParam/>">';
+ productHtml = productHtml + '<h4 class="name" itemprop="name">' + productList.products[i].description.name +'</h4></a>';
+ if(productList.products[i].discounted) {
+ productHtml = productHtml + '<h3><del>' + productList.products[i].originalPrice +'</del> <span class="specialPrice">' + productList.products[i].finalPrice + '</span></h3>';
+ } else {
+ productHtml = productHtml + '<h3>' + productList.products[i].finalPrice +'</h3>';
+ }
+ var productUrl = '<c:url value="/shop/product/" />' + productList.products[i].description.friendlyUrl + '.html<sm:breadcrumbParam/>';
+ //if(ref!=null) {
+ //productUrl = productUrl + '/ref=' + ref;
+ //}
+ if(productList.products[i].image!=null) {
+ productHtml = productHtml + '<a href="' + productUrl + '"><img src="<c:url value="/"/>' + productList.products[i].image.imageUrl +'" itemprop="image"></a>';
+ }
+ productHtml = productHtml + '<div class="bottom"><a href="' + productUrl + '" class="view"><s:message code="button.label.view" text="View" /></a> / <a productid="' + productList.products[i].id + '" href="#" class="addToCart"><s:message code="button.label.addToCart" text="Add to cart" /></a></div>';
+ productHtml = productHtml + '</div>'
+ productHtml = productHtml + '</li>'
+ $(divProductsContainer).append(productHtml);
+
+ }
+
+ initBindings();
+
+}
+
+</script>
\ No newline at end of file
sm-shop/src/main/webapp/resources/js/hogan.js 575(+575 -0)
diff --git a/sm-shop/src/main/webapp/resources/js/hogan.js b/sm-shop/src/main/webapp/resources/js/hogan.js
new file mode 100644
index 0000000..2b16a6f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/hogan.js
@@ -0,0 +1,575 @@
+/*
+ * Copyright 2011 Twitter, Inc.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+var Hogan = {};
+
+(function (Hogan, useArrayBuffer) {
+ Hogan.Template = function (renderFunc, text, compiler, options) {
+ this.r = renderFunc || this.r;
+ this.c = compiler;
+ this.options = options;
+ this.text = text || '';
+ this.buf = (useArrayBuffer) ? [] : '';
+ }
+
+ Hogan.Template.prototype = {
+ // render: replaced by generated code.
+ r: function (context, partials, indent) { return ''; },
+
+ // variable escaping
+ v: hoganEscape,
+
+ // triple stache
+ t: coerceToString,
+
+ render: function render(context, partials, indent) {
+ return this.ri([context], partials || {}, indent);
+ },
+
+ // render internal -- a hook for overrides that catches partials too
+ ri: function (context, partials, indent) {
+ return this.r(context, partials, indent);
+ },
+
+ // tries to find a partial in the curent scope and render it
+ rp: function(name, context, partials, indent) {
+ var partial = partials[name];
+
+ if (!partial) {
+ return '';
+ }
+
+ if (this.c && typeof partial == 'string') {
+ partial = this.c.compile(partial, this.options);
+ }
+
+ return partial.ri(context, partials, indent);
+ },
+
+ // render a section
+ rs: function(context, partials, section) {
+ var tail = context[context.length - 1];
+
+ if (!isArray(tail)) {
+ section(context, partials, this);
+ return;
+ }
+
+ for (var i = 0; i < tail.length; i++) {
+ context.push(tail[i]);
+ section(context, partials, this);
+ context.pop();
+ }
+ },
+
+ // maybe start a section
+ s: function(val, ctx, partials, inverted, start, end, tags) {
+ var pass;
+
+ if (isArray(val) && val.length === 0) {
+ return false;
+ }
+
+ if (typeof val == 'function') {
+ val = this.ls(val, ctx, partials, inverted, start, end, tags);
+ }
+
+ pass = (val === '') || !!val;
+
+ if (!inverted && pass && ctx) {
+ ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]);
+ }
+
+ return pass;
+ },
+
+ // find values with dotted names
+ d: function(key, ctx, partials, returnFound) {
+ var names = key.split('.'),
+ val = this.f(names[0], ctx, partials, returnFound),
+ cx = null;
+
+ if (key === '.' && isArray(ctx[ctx.length - 2])) {
+ return ctx[ctx.length - 1];
+ }
+
+ for (var i = 1; i < names.length; i++) {
+ if (val && typeof val == 'object' && names[i] in val) {
+ cx = val;
+ val = val[names[i]];
+ } else {
+ val = '';
+ }
+ }
+
+ if (returnFound && !val) {
+ return false;
+ }
+
+ if (!returnFound && typeof val == 'function') {
+ ctx.push(cx);
+ val = this.lv(val, ctx, partials);
+ ctx.pop();
+ }
+
+ return val;
+ },
+
+ // find values with normal names
+ f: function(key, ctx, partials, returnFound) {
+ var val = false,
+ v = null,
+ found = false;
+
+ for (var i = ctx.length - 1; i >= 0; i--) {
+ v = ctx[i];
+ if (v && typeof v == 'object' && key in v) {
+ val = v[key];
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ return (returnFound) ? false : "";
+ }
+
+ if (!returnFound && typeof val == 'function') {
+ val = this.lv(val, ctx, partials);
+ }
+
+ return val;
+ },
+
+ // higher order templates
+ ho: function(val, cx, partials, text, tags) {
+ var compiler = this.c;
+ var options = this.options;
+ options.delimiters = tags;
+ var text = val.call(cx, text);
+ text = (text == null) ? String(text) : text.toString();
+ this.b(compiler.compile(text, options).render(cx, partials));
+ return false;
+ },
+
+ // template result buffering
+ b: (useArrayBuffer) ? function(s) { this.buf.push(s); } :
+ function(s) { this.buf += s; },
+ fl: (useArrayBuffer) ? function() { var r = this.buf.join(''); this.buf = []; return r; } :
+ function() { var r = this.buf; this.buf = ''; return r; },
+
+ // lambda replace section
+ ls: function(val, ctx, partials, inverted, start, end, tags) {
+ var cx = ctx[ctx.length - 1],
+ t = null;
+
+ if (!inverted && this.c && val.length > 0) {
+ return this.ho(val, cx, partials, this.text.substring(start, end), tags);
+ }
+
+ t = val.call(cx);
+
+ if (typeof t == 'function') {
+ if (inverted) {
+ return true;
+ } else if (this.c) {
+ return this.ho(t, cx, partials, this.text.substring(start, end), tags);
+ }
+ }
+
+ return t;
+ },
+
+ // lambda replace variable
+ lv: function(val, ctx, partials) {
+ var cx = ctx[ctx.length - 1];
+ var result = val.call(cx);
+
+ if (typeof result == 'function') {
+ result = coerceToString(result.call(cx));
+ if (this.c && ~result.indexOf("{\u007B")) {
+ return this.c.compile(result, this.options).render(cx, partials);
+ }
+ }
+
+ return coerceToString(result);
+ }
+
+ };
+
+ var rAmp = /&/g,
+ rLt = /</g,
+ rGt = />/g,
+ rApos =/\'/g,
+ rQuot = /\"/g,
+ hChars =/[&<>\"\']/;
+
+
+ function coerceToString(val) {
+ return String((val === null || val === undefined) ? '' : val);
+ }
+
+ function hoganEscape(str) {
+ str = coerceToString(str);
+ return hChars.test(str) ?
+ str
+ .replace(rAmp,'&')
+ .replace(rLt,'<')
+ .replace(rGt,'>')
+ .replace(rApos,''')
+ .replace(rQuot, '"') :
+ str;
+ }
+
+ var isArray = Array.isArray || function(a) {
+ return Object.prototype.toString.call(a) === '[object Array]';
+ };
+
+})(typeof exports !== 'undefined' ? exports : Hogan);
+
+
+
+
+(function (Hogan) {
+ // Setup regex assignments
+ // remove whitespace according to Mustache spec
+ var rIsWhitespace = /\S/,
+ rQuot = /\"/g,
+ rNewline = /\n/g,
+ rCr = /\r/g,
+ rSlash = /\\/g,
+ tagTypes = {
+ '#': 1, '^': 2, '/': 3, '!': 4, '>': 5,
+ '<': 6, '=': 7, '_v': 8, '{': 9, '&': 10
+ };
+
+ Hogan.scan = function scan(text, delimiters) {
+ var len = text.length,
+ IN_TEXT = 0,
+ IN_TAG_TYPE = 1,
+ IN_TAG = 2,
+ state = IN_TEXT,
+ tagType = null,
+ tag = null,
+ buf = '',
+ tokens = [],
+ seenTag = false,
+ i = 0,
+ lineStart = 0,
+ otag = '{{',
+ ctag = '}}';
+
+ function addBuf() {
+ if (buf.length > 0) {
+ tokens.push(new String(buf));
+ buf = '';
+ }
+ }
+
+ function lineIsWhitespace() {
+ var isAllWhitespace = true;
+ for (var j = lineStart; j < tokens.length; j++) {
+ isAllWhitespace =
+ (tokens[j].tag && tagTypes[tokens[j].tag] < tagTypes['_v']) ||
+ (!tokens[j].tag && tokens[j].match(rIsWhitespace) === null);
+ if (!isAllWhitespace) {
+ return false;
+ }
+ }
+
+ return isAllWhitespace;
+ }
+
+ function filterLine(haveSeenTag, noNewLine) {
+ addBuf();
+
+ if (haveSeenTag && lineIsWhitespace()) {
+ for (var j = lineStart, next; j < tokens.length; j++) {
+ if (!tokens[j].tag) {
+ if ((next = tokens[j+1]) && next.tag == '>') {
+ // set indent to token value
+ next.indent = tokens[j].toString()
+ }
+ tokens.splice(j, 1);
+ }
+ }
+ } else if (!noNewLine) {
+ tokens.push({tag:'\n'});
+ }
+
+ seenTag = false;
+ lineStart = tokens.length;
+ }
+
+ function changeDelimiters(text, index) {
+ var close = '=' + ctag,
+ closeIndex = text.indexOf(close, index),
+ delimiters = trim(
+ text.substring(text.indexOf('=', index) + 1, closeIndex)
+ ).split(' ');
+
+ otag = delimiters[0];
+ ctag = delimiters[1];
+
+ return closeIndex + close.length - 1;
+ }
+
+ if (delimiters) {
+ delimiters = delimiters.split(' ');
+ otag = delimiters[0];
+ ctag = delimiters[1];
+ }
+
+ for (i = 0; i < len; i++) {
+ if (state == IN_TEXT) {
+ if (tagChange(otag, text, i)) {
+ --i;
+ addBuf();
+ state = IN_TAG_TYPE;
+ } else {
+ if (text.charAt(i) == '\n') {
+ filterLine(seenTag);
+ } else {
+ buf += text.charAt(i);
+ }
+ }
+ } else if (state == IN_TAG_TYPE) {
+ i += otag.length - 1;
+ tag = tagTypes[text.charAt(i + 1)];
+ tagType = tag ? text.charAt(i + 1) : '_v';
+ if (tagType == '=') {
+ i = changeDelimiters(text, i);
+ state = IN_TEXT;
+ } else {
+ if (tag) {
+ i++;
+ }
+ state = IN_TAG;
+ }
+ seenTag = i;
+ } else {
+ if (tagChange(ctag, text, i)) {
+ tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag,
+ i: (tagType == '/') ? seenTag - ctag.length : i + otag.length});
+ buf = '';
+ i += ctag.length - 1;
+ state = IN_TEXT;
+ if (tagType == '{') {
+ if (ctag == '}}') {
+ i++;
+ } else {
+ cleanTripleStache(tokens[tokens.length - 1]);
+ }
+ }
+ } else {
+ buf += text.charAt(i);
+ }
+ }
+ }
+
+ filterLine(seenTag, true);
+
+ return tokens;
+ }
+
+ function cleanTripleStache(token) {
+ if (token.n.substr(token.n.length - 1) === '}') {
+ token.n = token.n.substring(0, token.n.length - 1);
+ }
+ }
+
+ function trim(s) {
+ if (s.trim) {
+ return s.trim();
+ }
+
+ return s.replace(/^\s*|\s*$/g, '');
+ }
+
+ function tagChange(tag, text, index) {
+ if (text.charAt(index) != tag.charAt(0)) {
+ return false;
+ }
+
+ for (var i = 1, l = tag.length; i < l; i++) {
+ if (text.charAt(index + i) != tag.charAt(i)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function buildTree(tokens, kind, stack, customTags) {
+ var instructions = [],
+ opener = null,
+ token = null;
+
+ while (tokens.length > 0) {
+ token = tokens.shift();
+ if (token.tag == '#' || token.tag == '^' || isOpener(token, customTags)) {
+ stack.push(token);
+ token.nodes = buildTree(tokens, token.tag, stack, customTags);
+ instructions.push(token);
+ } else if (token.tag == '/') {
+ if (stack.length === 0) {
+ throw new Error('Closing tag without opener: /' + token.n);
+ }
+ opener = stack.pop();
+ if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {
+ throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);
+ }
+ opener.end = token.i;
+ return instructions;
+ } else {
+ instructions.push(token);
+ }
+ }
+
+ if (stack.length > 0) {
+ throw new Error('missing closing tag: ' + stack.pop().n);
+ }
+
+ return instructions;
+ }
+
+ function isOpener(token, tags) {
+ for (var i = 0, l = tags.length; i < l; i++) {
+ if (tags[i].o == token.n) {
+ token.tag = '#';
+ return true;
+ }
+ }
+ }
+
+ function isCloser(close, open, tags) {
+ for (var i = 0, l = tags.length; i < l; i++) {
+ if (tags[i].c == close && tags[i].o == open) {
+ return true;
+ }
+ }
+ }
+
+ Hogan.generate = function (tree, text, options) {
+ var code = 'var _=this;_.b(i=i||"");' + walk(tree) + 'return _.fl();';
+ if (options.asString) {
+ return 'function(c,p,i){' + code + ';}';
+ }
+
+ return new Hogan.Template(new Function('c', 'p', 'i', code), text, Hogan, options);
+ }
+
+ function esc(s) {
+ return s.replace(rSlash, '\\\\')
+ .replace(rQuot, '\\\"')
+ .replace(rNewline, '\\n')
+ .replace(rCr, '\\r');
+ }
+
+ function chooseMethod(s) {
+ return (~s.indexOf('.')) ? 'd' : 'f';
+ }
+
+ function walk(tree) {
+ var code = '';
+ for (var i = 0, l = tree.length; i < l; i++) {
+ var tag = tree[i].tag;
+ if (tag == '#') {
+ code += section(tree[i].nodes, tree[i].n, chooseMethod(tree[i].n),
+ tree[i].i, tree[i].end, tree[i].otag + " " + tree[i].ctag);
+ } else if (tag == '^') {
+ code += invertedSection(tree[i].nodes, tree[i].n,
+ chooseMethod(tree[i].n));
+ } else if (tag == '<' || tag == '>') {
+ code += partial(tree[i]);
+ } else if (tag == '{' || tag == '&') {
+ code += tripleStache(tree[i].n, chooseMethod(tree[i].n));
+ } else if (tag == '\n') {
+ code += text('"\\n"' + (tree.length-1 == i ? '' : ' + i'));
+ } else if (tag == '_v') {
+ code += variable(tree[i].n, chooseMethod(tree[i].n));
+ } else if (tag === undefined) {
+ code += text('"' + esc(tree[i]) + '"');
+ }
+ }
+ return code;
+ }
+
+ function section(nodes, id, method, start, end, tags) {
+ return 'if(_.s(_.' + method + '("' + esc(id) + '",c,p,1),' +
+ 'c,p,0,' + start + ',' + end + ',"' + tags + '")){' +
+ '_.rs(c,p,' +
+ 'function(c,p,_){' +
+ walk(nodes) +
+ '});c.pop();}';
+ }
+
+ function invertedSection(nodes, id, method) {
+ return 'if(!_.s(_.' + method + '("' + esc(id) + '",c,p,1),c,p,1,0,0,"")){' +
+ walk(nodes) +
+ '};';
+ }
+
+ function partial(tok) {
+ return '_.b(_.rp("' + esc(tok.n) + '",c,p,"' + (tok.indent || '') + '"));';
+ }
+
+ function tripleStache(id, method) {
+ return '_.b(_.t(_.' + method + '("' + esc(id) + '",c,p,0)));';
+ }
+
+ function variable(id, method) {
+ return '_.b(_.v(_.' + method + '("' + esc(id) + '",c,p,0)));';
+ }
+
+ function text(id) {
+ return '_.b(' + id + ');';
+ }
+
+ Hogan.parse = function(tokens, text, options) {
+ options = options || {};
+ return buildTree(tokens, '', [], options.sectionTags || []);
+ },
+
+ Hogan.cache = {};
+
+ Hogan.compile = function(text, options) {
+ // options
+ //
+ // asString: false (default)
+ //
+ // sectionTags: [{o: '_foo', c: 'foo'}]
+ // An array of object with o and c fields that indicate names for custom
+ // section tags. The example above allows parsing of {{_foo}}{{/foo}}.
+ //
+ // delimiters: A string that overrides the default delimiters.
+ // Example: "<% %>"
+ //
+ options = options || {};
+
+ var key = text + '||' + !!options.asString;
+
+ var t = this.cache[key];
+
+ if (t) {
+ return t;
+ }
+
+ t = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options);
+ return this.cache[key] = t;
+ };
+})(typeof exports !== 'undefined' ? exports : Hogan);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.alphanumeric.pack.js b/sm-shop/src/main/webapp/resources/js/jquery.alphanumeric.pack.js
new file mode 100644
index 0000000..26aba80
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.alphanumeric.pack.js
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(2($){$.c.f=2(p){p=$.d({g:"!@#$%^&*()+=[]\\\\\\\';,/{}|\\":<>?~`.- ",4:"",9:""},p);7 3.b(2(){5(p.G)p.4+="Q";5(p.w)p.4+="n";s=p.9.z(\'\');x(i=0;i<s.y;i++)5(p.g.h(s[i])!=-1)s[i]="\\\\"+s[i];p.9=s.O(\'|\');6 l=N M(p.9,\'E\');6 a=p.g+p.4;a=a.H(l,\'\');$(3).J(2(e){5(!e.r)k=o.q(e.K);L k=o.q(e.r);5(a.h(k)!=-1)e.j();5(e.u&&k==\'v\')e.j()});$(3).B(\'D\',2(){7 F})})};$.c.I=2(p){6 8="n";8+=8.P();p=$.d({4:8},p);7 3.b(2(){$(3).f(p)})};$.c.t=2(p){6 m="A";p=$.d({4:m},p);7 3.b(2(){$(3).f(p)})}})(C);',53,53,'||function|this|nchars|if|var|return|az|allow|ch|each|fn|extend||alphanumeric|ichars|indexOf||preventDefault||reg|nm|abcdefghijklmnopqrstuvwxyz|String||fromCharCode|charCode||alpha|ctrlKey||allcaps|for|length|split|1234567890|bind|jQuery|contextmenu|gi|false|nocaps|replace|numeric|keypress|which|else|RegExp|new|join|toUpperCase|ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('|'),0,{}));
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.creditCardValidator.js b/sm-shop/src/main/webapp/resources/js/jquery.creditCardValidator.js
new file mode 100644
index 0000000..afc832c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.creditCardValidator.js
@@ -0,0 +1,181 @@
+// Generated by CoffeeScript 1.4.0
+
+/*
+jQuery Credit Card Validator
+
+Copyright 2012 Pawel Decowski
+
+This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
+Unported License. To view a copy of this license, visit:
+
+http://creativecommons.org/licenses/by-sa/3.0/
+
+or send a letter to:
+
+Creative Commons, 444 Castro Street, Suite 900,
+Mountain View, California, 94041, USA.
+*/
+
+
+(function() {
+ var $,
+ __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
+
+ $ = jQuery;
+
+ $.fn.validateCreditCard = function(callback, options) {
+ var card, card_type, card_types, get_card_type, is_valid_length, is_valid_luhn, normalize, validate, validate_number, _i, _len, _ref, _ref1;
+ card_types = [
+ {
+ name: 'amex',
+ pattern: /^3[47]/,
+ valid_length: [15]
+ }, {
+ name: 'diners_club_carte_blanche',
+ pattern: /^30[0-5]/,
+ valid_length: [14]
+ }, {
+ name: 'diners_club_international',
+ pattern: /^36/,
+ valid_length: [14]
+ }, {
+ name: 'jcb',
+ pattern: /^35(2[89]|[3-8][0-9])/,
+ valid_length: [16]
+ }, {
+ name: 'laser',
+ pattern: /^(6304|670[69]|6771)/,
+ valid_length: [16, 17, 18, 19]
+ }, {
+ name: 'visa_electron',
+ pattern: /^(4026|417500|4508|4844|491(3|7))/,
+ valid_length: [16]
+ }, {
+ name: 'visa',
+ pattern: /^4/,
+ valid_length: [16]
+ }, {
+ name: 'mastercard',
+ pattern: /^5[1-5]/,
+ valid_length: [16]
+ }, {
+ name: 'maestro',
+ pattern: /^(5018|5020|5038|6304|6759|676[1-3])/,
+ valid_length: [12, 13, 14, 15, 16, 17, 18, 19]
+ }, {
+ name: 'discover',
+ pattern: /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,
+ valid_length: [16]
+ }
+ ];
+ if (options == null) {
+ options = {};
+ }
+ if ((_ref = options.accept) == null) {
+ options.accept = (function() {
+ var _i, _len, _results;
+ _results = [];
+ for (_i = 0, _len = card_types.length; _i < _len; _i++) {
+ card = card_types[_i];
+ _results.push(card.name);
+ }
+ return _results;
+ })();
+ }
+ _ref1 = options.accept;
+ for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+ card_type = _ref1[_i];
+ if (__indexOf.call((function() {
+ var _j, _len1, _results;
+ _results = [];
+ for (_j = 0, _len1 = card_types.length; _j < _len1; _j++) {
+ card = card_types[_j];
+ _results.push(card.name);
+ }
+ return _results;
+ })(), card_type) < 0) {
+ throw "Credit card type '" + card_type + "' is not supported";
+ }
+ }
+ get_card_type = function(number) {
+ var _j, _len1, _ref2;
+ _ref2 = (function() {
+ var _k, _len1, _ref2, _results;
+ _results = [];
+ for (_k = 0, _len1 = card_types.length; _k < _len1; _k++) {
+ card = card_types[_k];
+ if (_ref2 = card.name, __indexOf.call(options.accept, _ref2) >= 0) {
+ _results.push(card);
+ }
+ }
+ return _results;
+ })();
+ for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
+ card_type = _ref2[_j];
+ if (number.match(card_type.pattern)) {
+ return card_type;
+ }
+ }
+ return null;
+ };
+ is_valid_luhn = function(number) {
+ var digit, n, sum, _j, _len1, _ref2;
+ sum = 0;
+ _ref2 = number.split('').reverse();
+ for (n = _j = 0, _len1 = _ref2.length; _j < _len1; n = ++_j) {
+ digit = _ref2[n];
+ digit = +digit;
+ if (n % 2) {
+ digit *= 2;
+ if (digit < 10) {
+ sum += digit;
+ } else {
+ sum += digit - 9;
+ }
+ } else {
+ sum += digit;
+ }
+ }
+ return sum % 10 === 0;
+ };
+ is_valid_length = function(number, card_type) {
+ var _ref2;
+ return _ref2 = number.length, __indexOf.call(card_type.valid_length, _ref2) >= 0;
+ };
+ validate_number = function(number) {
+ var length_valid, luhn_valid;
+ card_type = get_card_type(number);
+ luhn_valid = false;
+ length_valid = false;
+ if (card_type != null) {
+ luhn_valid = is_valid_luhn(number);
+ length_valid = is_valid_length(number, card_type);
+ }
+ return callback({
+ card_type: card_type,
+ luhn_valid: luhn_valid,
+ length_valid: length_valid
+ });
+ };
+ validate = function() {
+ var number;
+ number = normalize($(this).val());
+ return validate_number(number);
+ };
+ normalize = function(number) {
+ return number.replace(/[ -]/g, '');
+ };
+ this.bind('input', function() {
+ $(this).unbind('keyup');
+ return validate.call(this);
+ });
+ this.bind('keyup', function() {
+ return validate.call(this);
+ });
+ if (this.length !== 0) {
+ validate.call(this);
+ }
+ return this;
+ };
+
+}).call(this);
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.easing.1.3.js b/sm-shop/src/main/webapp/resources/js/jquery.easing.1.3.js
new file mode 100644
index 0000000..ef74321
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.easing.1.3.js
@@ -0,0 +1,205 @@
+/*
+ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
+ *
+ * Uses the built in easing capabilities added In jQuery 1.1
+ * to offer multiple easing options
+ *
+ * TERMS OF USE - jQuery Easing
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright © 2008 George McGinley Smith
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the author nor the names of contributors may be used to endorse
+ * or promote products derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+*/
+
+// t: current time, b: begInnIng value, c: change In value, d: duration
+jQuery.easing['jswing'] = jQuery.easing['swing'];
+
+jQuery.extend( jQuery.easing,
+{
+ def: 'easeOutQuad',
+ swing: function (x, t, b, c, d) {
+ //alert(jQuery.easing.default);
+ return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
+ },
+ easeInQuad: function (x, t, b, c, d) {
+ return c*(t/=d)*t + b;
+ },
+ easeOutQuad: function (x, t, b, c, d) {
+ return -c *(t/=d)*(t-2) + b;
+ },
+ easeInOutQuad: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return c/2*t*t + b;
+ return -c/2 * ((--t)*(t-2) - 1) + b;
+ },
+ easeInCubic: function (x, t, b, c, d) {
+ return c*(t/=d)*t*t + b;
+ },
+ easeOutCubic: function (x, t, b, c, d) {
+ return c*((t=t/d-1)*t*t + 1) + b;
+ },
+ easeInOutCubic: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return c/2*t*t*t + b;
+ return c/2*((t-=2)*t*t + 2) + b;
+ },
+ easeInQuart: function (x, t, b, c, d) {
+ return c*(t/=d)*t*t*t + b;
+ },
+ easeOutQuart: function (x, t, b, c, d) {
+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
+ },
+ easeInOutQuart: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
+ },
+ easeInQuint: function (x, t, b, c, d) {
+ return c*(t/=d)*t*t*t*t + b;
+ },
+ easeOutQuint: function (x, t, b, c, d) {
+ return c*((t=t/d-1)*t*t*t*t + 1) + b;
+ },
+ easeInOutQuint: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
+ return c/2*((t-=2)*t*t*t*t + 2) + b;
+ },
+ easeInSine: function (x, t, b, c, d) {
+ return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
+ },
+ easeOutSine: function (x, t, b, c, d) {
+ return c * Math.sin(t/d * (Math.PI/2)) + b;
+ },
+ easeInOutSine: function (x, t, b, c, d) {
+ return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
+ },
+ easeInExpo: function (x, t, b, c, d) {
+ return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
+ },
+ easeOutExpo: function (x, t, b, c, d) {
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
+ },
+ easeInOutExpo: function (x, t, b, c, d) {
+ if (t==0) return b;
+ if (t==d) return b+c;
+ if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
+ return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
+ },
+ easeInCirc: function (x, t, b, c, d) {
+ return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
+ },
+ easeOutCirc: function (x, t, b, c, d) {
+ return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
+ },
+ easeInOutCirc: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
+ return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
+ },
+ easeInElastic: function (x, t, b, c, d) {
+ var s=1.70158;var p=0;var a=c;
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
+ },
+ easeOutElastic: function (x, t, b, c, d) {
+ var s=1.70158;var p=0;var a=c;
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
+ },
+ easeInOutElastic: function (x, t, b, c, d) {
+ var s=1.70158;var p=0;var a=c;
+ if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
+ if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
+ return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
+ },
+ easeInBack: function (x, t, b, c, d, s) {
+ if (s == undefined) s = 1.70158;
+ return c*(t/=d)*t*((s+1)*t - s) + b;
+ },
+ easeOutBack: function (x, t, b, c, d, s) {
+ if (s == undefined) s = 1.70158;
+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
+ },
+ easeInOutBack: function (x, t, b, c, d, s) {
+ if (s == undefined) s = 1.70158;
+ if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
+ },
+ easeInBounce: function (x, t, b, c, d) {
+ return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
+ },
+ easeOutBounce: function (x, t, b, c, d) {
+ if ((t/=d) < (1/2.75)) {
+ return c*(7.5625*t*t) + b;
+ } else if (t < (2/2.75)) {
+ return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
+ } else if (t < (2.5/2.75)) {
+ return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
+ } else {
+ return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
+ }
+ },
+ easeInOutBounce: function (x, t, b, c, d) {
+ if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
+ return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
+ }
+});
+
+/*
+ *
+ * TERMS OF USE - EASING EQUATIONS
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright © 2001 Robert Penner
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the author nor the names of contributors may be used to endorse
+ * or promote products derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.elevateZoom-3.0.8.min.js b/sm-shop/src/main/webapp/resources/js/jquery.elevateZoom-3.0.8.min.js
new file mode 100644
index 0000000..1e0b9b4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.elevateZoom-3.0.8.min.js
@@ -0,0 +1,66 @@
+/* jQuery elevateZoom 3.0.8 - Demo's and documentation: - www.elevateweb.co.uk/image-zoom - Copyright (c) 2013 Andrew Eades - www.elevateweb.co.uk - Dual licensed under the LGPL licenses. - http://en.wikipedia.org/wiki/MIT_License - http://en.wikipedia.org/wiki/GNU_General_Public_License */
+"function"!==typeof Object.create&&(Object.create=function(d){function h(){}h.prototype=d;return new h});
+(function(d,h,l,m){var k={init:function(b,a){var c=this;c.elem=a;c.$elem=d(a);c.imageSrc=c.$elem.data("zoom-image")?c.$elem.data("zoom-image"):c.$elem.attr("src");c.options=d.extend({},d.fn.elevateZoom.options,b);c.options.tint&&(c.options.lensColour="none",c.options.lensOpacity="1");"inner"==c.options.zoomType&&(c.options.showLens=!1);c.$elem.parent().removeAttr("title").removeAttr("alt");c.zoomImage=c.imageSrc;c.refresh(1);d("#"+c.options.gallery+" a").click(function(a){c.options.galleryActiveClass&&
+(d("#"+c.options.gallery+" a").removeClass(c.options.galleryActiveClass),d(this).addClass(c.options.galleryActiveClass));a.preventDefault();d(this).data("zoom-image")?c.zoomImagePre=d(this).data("zoom-image"):c.zoomImagePre=d(this).data("image");c.swaptheimage(d(this).data("image"),c.zoomImagePre);return!1})},refresh:function(b){var a=this;setTimeout(function(){a.fetch(a.imageSrc)},b||a.options.refresh)},fetch:function(b){var a=this,c=new Image;c.onload=function(){a.largeWidth=c.width;a.largeHeight=
+c.height;a.startZoom();a.currentImage=a.imageSrc;a.options.onZoomedImageLoaded(a.$elem)};c.src=b},startZoom:function(){var b=this;b.nzWidth=b.$elem.width();b.nzHeight=b.$elem.height();b.isWindowActive=!1;b.isLensActive=!1;b.isTintActive=!1;b.overWindow=!1;b.options.imageCrossfade&&(b.zoomWrap=b.$elem.wrap('<div style="height:'+b.nzHeight+"px;width:"+b.nzWidth+'px;" class="zoomWrapper" />'),b.$elem.css("position","absolute"));b.zoomLock=1;b.scrollingLock=!1;b.changeBgSize=!1;b.currentZoomLevel=b.options.zoomLevel;
+b.nzOffset=b.$elem.offset();b.widthRatio=b.largeWidth/b.currentZoomLevel/b.nzWidth;b.heightRatio=b.largeHeight/b.currentZoomLevel/b.nzHeight;"window"==b.options.zoomType&&(b.zoomWindowStyle="overflow: hidden;background-position: 0px 0px;text-align:center;background-color: "+String(b.options.zoomWindowBgColour)+";width: "+String(b.options.zoomWindowWidth)+"px;height: "+String(b.options.zoomWindowHeight)+"px;float: left;background-size: "+b.largeWidth/b.currentZoomLevel+"px "+b.largeHeight/b.currentZoomLevel+
+"px;display: none;z-index:100;border: "+String(b.options.borderSize)+"px solid "+b.options.borderColour+";background-repeat: no-repeat;position: absolute;");if("inner"==b.options.zoomType){var a=b.$elem.css("border-left-width");b.zoomWindowStyle="overflow: hidden;margin-left: "+String(a)+";margin-top: "+String(a)+";background-position: 0px 0px;width: "+String(b.nzWidth)+"px;height: "+String(b.nzHeight)+"px;float: left;display: none;cursor:"+b.options.cursor+";px solid "+b.options.borderColour+";background-repeat: no-repeat;position: absolute;"}"window"==
+b.options.zoomType&&(lensHeight=b.nzHeight<b.options.zoomWindowWidth/b.widthRatio?b.nzHeight:String(b.options.zoomWindowHeight/b.heightRatio),lensWidth=b.largeWidth<b.options.zoomWindowWidth?b.nzWidth:b.options.zoomWindowWidth/b.widthRatio,b.lensStyle="background-position: 0px 0px;width: "+String(b.options.zoomWindowWidth/b.widthRatio)+"px;height: "+String(b.options.zoomWindowHeight/b.heightRatio)+"px;float: right;display: none;overflow: hidden;z-index: 999;-webkit-transform: translateZ(0);opacity:"+
+b.options.lensOpacity+";filter: alpha(opacity = "+100*b.options.lensOpacity+"); zoom:1;width:"+lensWidth+"px;height:"+lensHeight+"px;background-color:"+b.options.lensColour+";cursor:"+b.options.cursor+";border: "+b.options.lensBorderSize+"px solid "+b.options.lensBorderColour+";background-repeat: no-repeat;position: absolute;");b.tintStyle="display: block;position: absolute;background-color: "+b.options.tintColour+";filter:alpha(opacity=0);opacity: 0;width: "+b.nzWidth+"px;height: "+b.nzHeight+"px;";
+b.lensRound="";"lens"==b.options.zoomType&&(b.lensStyle="background-position: 0px 0px;float: left;display: none;border: "+String(b.options.borderSize)+"px solid "+b.options.borderColour+";width:"+String(b.options.lensSize)+"px;height:"+String(b.options.lensSize)+"px;background-repeat: no-repeat;position: absolute;");"round"==b.options.lensShape&&(b.lensRound="border-top-left-radius: "+String(b.options.lensSize/2+b.options.borderSize)+"px;border-top-right-radius: "+String(b.options.lensSize/2+b.options.borderSize)+
+"px;border-bottom-left-radius: "+String(b.options.lensSize/2+b.options.borderSize)+"px;border-bottom-right-radius: "+String(b.options.lensSize/2+b.options.borderSize)+"px;");b.zoomContainer=d('<div class="zoomContainer" style="-webkit-transform: translateZ(0);position:absolute;left:'+b.nzOffset.left+"px;top:"+b.nzOffset.top+"px;height:"+b.nzHeight+"px;width:"+b.nzWidth+'px;"></div>');d("body").append(b.zoomContainer);b.options.containLensZoom&&"lens"==b.options.zoomType&&b.zoomContainer.css("overflow",
+"hidden");"inner"!=b.options.zoomType&&(b.zoomLens=d("<div class='zoomLens' style='"+b.lensStyle+b.lensRound+"'> </div>").appendTo(b.zoomContainer).click(function(){b.$elem.trigger("click")}),b.options.tint&&(b.tintContainer=d("<div/>").addClass("tintContainer"),b.zoomTint=d("<div class='zoomTint' style='"+b.tintStyle+"'></div>"),b.zoomLens.wrap(b.tintContainer),b.zoomTintcss=b.zoomLens.after(b.zoomTint),b.zoomTintImage=d('<img style="position: absolute; left: 0px; top: 0px; max-width: none; width: '+
+b.nzWidth+"px; height: "+b.nzHeight+'px;" src="'+b.imageSrc+'">').appendTo(b.zoomLens).click(function(){b.$elem.trigger("click")})));isNaN(b.options.zoomWindowPosition)?b.zoomWindow=d("<div style='z-index:999;left:"+b.windowOffsetLeft+"px;top:"+b.windowOffsetTop+"px;"+b.zoomWindowStyle+"' class='zoomWindow'> </div>").appendTo("body").click(function(){b.$elem.trigger("click")}):b.zoomWindow=d("<div style='z-index:999;left:"+b.windowOffsetLeft+"px;top:"+b.windowOffsetTop+"px;"+b.zoomWindowStyle+
+"' class='zoomWindow'> </div>").appendTo(b.zoomContainer).click(function(){b.$elem.trigger("click")});b.zoomWindowContainer=d("<div/>").addClass("zoomWindowContainer").css("width",b.options.zoomWindowWidth);b.zoomWindow.wrap(b.zoomWindowContainer);"lens"==b.options.zoomType&&b.zoomLens.css({backgroundImage:"url('"+b.imageSrc+"')"});"window"==b.options.zoomType&&b.zoomWindow.css({backgroundImage:"url('"+b.imageSrc+"')"});"inner"==b.options.zoomType&&b.zoomWindow.css({backgroundImage:"url('"+b.imageSrc+
+"')"});b.$elem.bind("touchmove",function(a){a.preventDefault();b.setPosition(a.originalEvent.touches[0]||a.originalEvent.changedTouches[0])});b.zoomContainer.bind("touchmove",function(a){"inner"==b.options.zoomType&&b.showHideWindow("show");a.preventDefault();b.setPosition(a.originalEvent.touches[0]||a.originalEvent.changedTouches[0])});b.zoomContainer.bind("touchend",function(a){b.showHideWindow("hide");b.options.showLens&&b.showHideLens("hide");b.options.tint&&"inner"!=b.options.zoomType&&b.showHideTint("hide")});
+b.$elem.bind("touchend",function(a){b.showHideWindow("hide");b.options.showLens&&b.showHideLens("hide");b.options.tint&&"inner"!=b.options.zoomType&&b.showHideTint("hide")});b.options.showLens&&(b.zoomLens.bind("touchmove",function(a){a.preventDefault();b.setPosition(a.originalEvent.touches[0]||a.originalEvent.changedTouches[0])}),b.zoomLens.bind("touchend",function(a){b.showHideWindow("hide");b.options.showLens&&b.showHideLens("hide");b.options.tint&&"inner"!=b.options.zoomType&&b.showHideTint("hide")}));
+b.$elem.bind("mousemove",function(a){!1==b.overWindow&&b.setElements("show");if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});b.zoomContainer.bind("mousemove",function(a){!1==b.overWindow&&b.setElements("show");if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});"inner"!=b.options.zoomType&&b.zoomLens.bind("mousemove",function(a){if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),
+b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});b.options.tint&&"inner"!=b.options.zoomType&&b.zoomTint.bind("mousemove",function(a){if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});"inner"==b.options.zoomType&&b.zoomWindow.bind("mousemove",function(a){if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});b.zoomContainer.add(b.$elem).mouseenter(function(){!1==b.overWindow&&
+b.setElements("show")}).mouseleave(function(){b.scrollLock||b.setElements("hide")});"inner"!=b.options.zoomType&&b.zoomWindow.mouseenter(function(){b.overWindow=!0;b.setElements("hide")}).mouseleave(function(){b.overWindow=!1});b.minZoomLevel=b.options.minZoomLevel?b.options.minZoomLevel:2*b.options.scrollZoomIncrement;b.options.scrollZoom&&b.zoomContainer.add(b.$elem).bind("mousewheel DOMMouseScroll MozMousePixelScroll",function(a){b.scrollLock=!0;clearTimeout(d.data(this,"timer"));d.data(this,"timer",
+setTimeout(function(){b.scrollLock=!1},250));var e=a.originalEvent.wheelDelta||-1*a.originalEvent.detail;a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();0<e/120?b.currentZoomLevel>=b.minZoomLevel&&b.changeZoomLevel(b.currentZoomLevel-b.options.scrollZoomIncrement):b.options.maxZoomLevel?b.currentZoomLevel<=b.options.maxZoomLevel&&b.changeZoomLevel(parseFloat(b.currentZoomLevel)+b.options.scrollZoomIncrement):b.changeZoomLevel(parseFloat(b.currentZoomLevel)+b.options.scrollZoomIncrement);
+return!1})},setElements:function(b){if(!this.options.zoomEnabled)return!1;"show"==b&&this.isWindowSet&&("inner"==this.options.zoomType&&this.showHideWindow("show"),"window"==this.options.zoomType&&this.showHideWindow("show"),this.options.showLens&&this.showHideLens("show"),this.options.tint&&"inner"!=this.options.zoomType&&this.showHideTint("show"));"hide"==b&&("window"==this.options.zoomType&&this.showHideWindow("hide"),this.options.tint||this.showHideWindow("hide"),this.options.showLens&&this.showHideLens("hide"),
+this.options.tint&&this.showHideTint("hide"))},setPosition:function(b){if(!this.options.zoomEnabled)return!1;this.nzHeight=this.$elem.height();this.nzWidth=this.$elem.width();this.nzOffset=this.$elem.offset();this.options.tint&&"inner"!=this.options.zoomType&&(this.zoomTint.css({top:0}),this.zoomTint.css({left:0}));this.options.responsive&&!this.options.scrollZoom&&this.options.showLens&&(lensHeight=this.nzHeight<this.options.zoomWindowWidth/this.widthRatio?this.nzHeight:String(this.options.zoomWindowHeight/
+this.heightRatio),lensWidth=this.largeWidth<this.options.zoomWindowWidth?this.nzWidth:this.options.zoomWindowWidth/this.widthRatio,this.widthRatio=this.largeWidth/this.nzWidth,this.heightRatio=this.largeHeight/this.nzHeight,"lens"!=this.options.zoomType&&(lensHeight=this.nzHeight<this.options.zoomWindowWidth/this.widthRatio?this.nzHeight:String(this.options.zoomWindowHeight/this.heightRatio),lensWidth=this.options.zoomWindowWidth<this.options.zoomWindowWidth?this.nzWidth:this.options.zoomWindowWidth/
+this.widthRatio,this.zoomLens.css("width",lensWidth),this.zoomLens.css("height",lensHeight),this.options.tint&&(this.zoomTintImage.css("width",this.nzWidth),this.zoomTintImage.css("height",this.nzHeight))),"lens"==this.options.zoomType&&this.zoomLens.css({width:String(this.options.lensSize)+"px",height:String(this.options.lensSize)+"px"}));this.zoomContainer.css({top:this.nzOffset.top});this.zoomContainer.css({left:this.nzOffset.left});this.mouseLeft=parseInt(b.pageX-this.nzOffset.left);this.mouseTop=
+parseInt(b.pageY-this.nzOffset.top);"window"==this.options.zoomType&&(this.Etoppos=this.mouseTop<this.zoomLens.height()/2,this.Eboppos=this.mouseTop>this.nzHeight-this.zoomLens.height()/2-2*this.options.lensBorderSize,this.Eloppos=this.mouseLeft<0+this.zoomLens.width()/2,this.Eroppos=this.mouseLeft>this.nzWidth-this.zoomLens.width()/2-2*this.options.lensBorderSize);"inner"==this.options.zoomType&&(this.Etoppos=this.mouseTop<this.nzHeight/2/this.heightRatio,this.Eboppos=this.mouseTop>this.nzHeight-
+this.nzHeight/2/this.heightRatio,this.Eloppos=this.mouseLeft<0+this.nzWidth/2/this.widthRatio,this.Eroppos=this.mouseLeft>this.nzWidth-this.nzWidth/2/this.widthRatio-2*this.options.lensBorderSize);0>=this.mouseLeft||0>this.mouseTop||this.mouseLeft>this.nzWidth||this.mouseTop>this.nzHeight?this.setElements("hide"):(this.options.showLens&&(this.lensLeftPos=String(this.mouseLeft-this.zoomLens.width()/2),this.lensTopPos=String(this.mouseTop-this.zoomLens.height()/2)),this.Etoppos&&(this.lensTopPos=0),
+this.Eloppos&&(this.tintpos=this.lensLeftPos=this.windowLeftPos=0),"window"==this.options.zoomType&&(this.Eboppos&&(this.lensTopPos=Math.max(this.nzHeight-this.zoomLens.height()-2*this.options.lensBorderSize,0)),this.Eroppos&&(this.lensLeftPos=this.nzWidth-this.zoomLens.width()-2*this.options.lensBorderSize)),"inner"==this.options.zoomType&&(this.Eboppos&&(this.lensTopPos=Math.max(this.nzHeight-2*this.options.lensBorderSize,0)),this.Eroppos&&(this.lensLeftPos=this.nzWidth-this.nzWidth-2*this.options.lensBorderSize)),
+"lens"==this.options.zoomType&&(this.windowLeftPos=String(-1*((b.pageX-this.nzOffset.left)*this.widthRatio-this.zoomLens.width()/2)),this.windowTopPos=String(-1*((b.pageY-this.nzOffset.top)*this.heightRatio-this.zoomLens.height()/2)),this.zoomLens.css({backgroundPosition:this.windowLeftPos+"px "+this.windowTopPos+"px"}),this.changeBgSize&&(this.nzHeight>this.nzWidth?("lens"==this.options.zoomType&&this.zoomLens.css({"background-size":this.largeWidth/this.newvalueheight+"px "+this.largeHeight/this.newvalueheight+
+"px"}),this.zoomWindow.css({"background-size":this.largeWidth/this.newvalueheight+"px "+this.largeHeight/this.newvalueheight+"px"})):("lens"==this.options.zoomType&&this.zoomLens.css({"background-size":this.largeWidth/this.newvaluewidth+"px "+this.largeHeight/this.newvaluewidth+"px"}),this.zoomWindow.css({"background-size":this.largeWidth/this.newvaluewidth+"px "+this.largeHeight/this.newvaluewidth+"px"})),this.changeBgSize=!1),this.setWindowPostition(b)),this.options.tint&&"inner"!=this.options.zoomType&&
+this.setTintPosition(b),"window"==this.options.zoomType&&this.setWindowPostition(b),"inner"==this.options.zoomType&&this.setWindowPostition(b),this.options.showLens&&(this.fullwidth&&"lens"!=this.options.zoomType&&(this.lensLeftPos=0),this.zoomLens.css({left:this.lensLeftPos+"px",top:this.lensTopPos+"px"})))},showHideWindow:function(b){"show"!=b||this.isWindowActive||(this.options.zoomWindowFadeIn?this.zoomWindow.stop(!0,!0,!1).fadeIn(this.options.zoomWindowFadeIn):this.zoomWindow.show(),this.isWindowActive=
+!0);"hide"==b&&this.isWindowActive&&(this.options.zoomWindowFadeOut?this.zoomWindow.stop(!0,!0).fadeOut(this.options.zoomWindowFadeOut):this.zoomWindow.hide(),this.isWindowActive=!1)},showHideLens:function(b){"show"!=b||this.isLensActive||(this.options.lensFadeIn?this.zoomLens.stop(!0,!0,!1).fadeIn(this.options.lensFadeIn):this.zoomLens.show(),this.isLensActive=!0);"hide"==b&&this.isLensActive&&(this.options.lensFadeOut?this.zoomLens.stop(!0,!0).fadeOut(this.options.lensFadeOut):this.zoomLens.hide(),
+this.isLensActive=!1)},showHideTint:function(b){"show"!=b||this.isTintActive||(this.options.zoomTintFadeIn?this.zoomTint.css({opacity:this.options.tintOpacity}).animate().stop(!0,!0).fadeIn("slow"):(this.zoomTint.css({opacity:this.options.tintOpacity}).animate(),this.zoomTint.show()),this.isTintActive=!0);"hide"==b&&this.isTintActive&&(this.options.zoomTintFadeOut?this.zoomTint.stop(!0,!0).fadeOut(this.options.zoomTintFadeOut):this.zoomTint.hide(),this.isTintActive=!1)},setLensPostition:function(b){},
+setWindowPostition:function(b){var a=this;if(isNaN(a.options.zoomWindowPosition))a.externalContainer=d("#"+a.options.zoomWindowPosition),a.externalContainerWidth=a.externalContainer.width(),a.externalContainerHeight=a.externalContainer.height(),a.externalContainerOffset=a.externalContainer.offset(),a.windowOffsetTop=a.externalContainerOffset.top,a.windowOffsetLeft=a.externalContainerOffset.left;else switch(a.options.zoomWindowPosition){case 1:a.windowOffsetTop=a.options.zoomWindowOffety;a.windowOffsetLeft=
++a.nzWidth;break;case 2:a.options.zoomWindowHeight>a.nzHeight&&(a.windowOffsetTop=-1*(a.options.zoomWindowHeight/2-a.nzHeight/2),a.windowOffsetLeft=a.nzWidth);break;case 3:a.windowOffsetTop=a.nzHeight-a.zoomWindow.height()-2*a.options.borderSize;a.windowOffsetLeft=a.nzWidth;break;case 4:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=a.nzWidth;break;case 5:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=a.nzWidth-a.zoomWindow.width()-2*a.options.borderSize;break;case 6:a.options.zoomWindowHeight>
+a.nzHeight&&(a.windowOffsetTop=a.nzHeight,a.windowOffsetLeft=-1*(a.options.zoomWindowWidth/2-a.nzWidth/2+2*a.options.borderSize));break;case 7:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=0;break;case 8:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 9:a.windowOffsetTop=a.nzHeight-a.zoomWindow.height()-2*a.options.borderSize;a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 10:a.options.zoomWindowHeight>a.nzHeight&&
+(a.windowOffsetTop=-1*(a.options.zoomWindowHeight/2-a.nzHeight/2),a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize));break;case 11:a.windowOffsetTop=a.options.zoomWindowOffety;a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 12:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 13:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=
+0;break;case 14:a.options.zoomWindowHeight>a.nzHeight&&(a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize),a.windowOffsetLeft=-1*(a.options.zoomWindowWidth/2-a.nzWidth/2+2*a.options.borderSize));break;case 15:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=a.nzWidth-a.zoomWindow.width()-2*a.options.borderSize;break;case 16:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=a.nzWidth;break;default:a.windowOffsetTop=
+a.options.zoomWindowOffety,a.windowOffsetLeft=a.nzWidth}a.isWindowSet=!0;a.windowOffsetTop+=a.options.zoomWindowOffety;a.windowOffsetLeft+=a.options.zoomWindowOffetx;a.zoomWindow.css({top:a.windowOffsetTop});a.zoomWindow.css({left:a.windowOffsetLeft});"inner"==a.options.zoomType&&(a.zoomWindow.css({top:0}),a.zoomWindow.css({left:0}));a.windowLeftPos=String(-1*((b.pageX-a.nzOffset.left)*a.widthRatio-a.zoomWindow.width()/2));a.windowTopPos=String(-1*((b.pageY-a.nzOffset.top)*a.heightRatio-a.zoomWindow.height()/
+2));a.Etoppos&&(a.windowTopPos=0);a.Eloppos&&(a.windowLeftPos=0);a.Eboppos&&(a.windowTopPos=-1*(a.largeHeight/a.currentZoomLevel-a.zoomWindow.height()));a.Eroppos&&(a.windowLeftPos=-1*(a.largeWidth/a.currentZoomLevel-a.zoomWindow.width()));a.fullheight&&(a.windowTopPos=0);a.fullwidth&&(a.windowLeftPos=0);if("window"==a.options.zoomType||"inner"==a.options.zoomType)1==a.zoomLock&&(1>=a.widthRatio&&(a.windowLeftPos=0),1>=a.heightRatio&&(a.windowTopPos=0)),a.largeHeight<a.options.zoomWindowHeight&&(a.windowTopPos=
+0),a.largeWidth<a.options.zoomWindowWidth&&(a.windowLeftPos=0),a.options.easing?(a.xp||(a.xp=0),a.yp||(a.yp=0),a.loop||(a.loop=setInterval(function(){a.xp+=(a.windowLeftPos-a.xp)/a.options.easingAmount;a.yp+=(a.windowTopPos-a.yp)/a.options.easingAmount;a.scrollingLock?(clearInterval(a.loop),a.xp=a.windowLeftPos,a.yp=a.windowTopPos,a.xp=-1*((b.pageX-a.nzOffset.left)*a.widthRatio-a.zoomWindow.width()/2),a.yp=-1*((b.pageY-a.nzOffset.top)*a.heightRatio-a.zoomWindow.height()/2),a.changeBgSize&&(a.nzHeight>
+a.nzWidth?("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"})):("lens"!=a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"})),
+a.changeBgSize=!1),a.zoomWindow.css({backgroundPosition:a.windowLeftPos+"px "+a.windowTopPos+"px"}),a.scrollingLock=!1,a.loop=!1):(a.changeBgSize&&(a.nzHeight>a.nzWidth?("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"})):("lens"!=a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvaluewidth+
+"px "+a.largeHeight/a.newvaluewidth+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"})),a.changeBgSize=!1),a.zoomWindow.css({backgroundPosition:a.xp+"px "+a.yp+"px"}))},16))):(a.changeBgSize&&(a.nzHeight>a.nzWidth?("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/
+a.newvalueheight+"px"})):("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"}),a.largeHeight/a.newvaluewidth<a.options.zoomWindowHeight?a.zoomWindow.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"}):a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"})),a.changeBgSize=!1),a.zoomWindow.css({backgroundPosition:a.windowLeftPos+
+"px "+a.windowTopPos+"px"}))},setTintPosition:function(b){this.nzOffset=this.$elem.offset();this.tintpos=String(-1*(b.pageX-this.nzOffset.left-this.zoomLens.width()/2));this.tintposy=String(-1*(b.pageY-this.nzOffset.top-this.zoomLens.height()/2));this.Etoppos&&(this.tintposy=0);this.Eloppos&&(this.tintpos=0);this.Eboppos&&(this.tintposy=-1*(this.nzHeight-this.zoomLens.height()-2*this.options.lensBorderSize));this.Eroppos&&(this.tintpos=-1*(this.nzWidth-this.zoomLens.width()-2*this.options.lensBorderSize));
+this.options.tint&&(this.fullheight&&(this.tintposy=0),this.fullwidth&&(this.tintpos=0),this.zoomTintImage.css({left:this.tintpos+"px"}),this.zoomTintImage.css({top:this.tintposy+"px"}))},swaptheimage:function(b,a){var c=this,e=new Image;c.options.loadingIcon&&(c.spinner=d("<div style=\"background: url('"+c.options.loadingIcon+"') no-repeat center;height:"+c.nzHeight+"px;width:"+c.nzWidth+'px;z-index: 2000;position: absolute; background-position: center center;"></div>'),c.$elem.after(c.spinner));
+c.options.onImageSwap(c.$elem);e.onload=function(){c.largeWidth=e.width;c.largeHeight=e.height;c.zoomImage=a;c.zoomWindow.css({"background-size":c.largeWidth+"px "+c.largeHeight+"px"});c.zoomWindow.css({"background-size":c.largeWidth+"px "+c.largeHeight+"px"});c.swapAction(b,a)};e.src=a},swapAction:function(b,a){var c=this,e=new Image;e.onload=function(){c.nzHeight=e.height;c.nzWidth=e.width;c.options.onImageSwapComplete(c.$elem);c.doneCallback()};e.src=b;c.currentZoomLevel=c.options.zoomLevel;c.options.maxZoomLevel=
+!1;"lens"==c.options.zoomType&&c.zoomLens.css({backgroundImage:"url('"+a+"')"});"window"==c.options.zoomType&&c.zoomWindow.css({backgroundImage:"url('"+a+"')"});"inner"==c.options.zoomType&&c.zoomWindow.css({backgroundImage:"url('"+a+"')"});c.currentImage=a;if(c.options.imageCrossfade){var f=c.$elem,g=f.clone();c.$elem.attr("src",b);c.$elem.after(g);g.stop(!0).fadeOut(c.options.imageCrossfade,function(){d(this).remove()});c.$elem.width("auto").removeAttr("width");c.$elem.height("auto").removeAttr("height");
+f.fadeIn(c.options.imageCrossfade);c.options.tint&&"inner"!=c.options.zoomType&&(f=c.zoomTintImage,g=f.clone(),c.zoomTintImage.attr("src",a),c.zoomTintImage.after(g),g.stop(!0).fadeOut(c.options.imageCrossfade,function(){d(this).remove()}),f.fadeIn(c.options.imageCrossfade),c.zoomTint.css({height:c.$elem.height()}),c.zoomTint.css({width:c.$elem.width()}));c.zoomContainer.css("height",c.$elem.height());c.zoomContainer.css("width",c.$elem.width());"inner"!=c.options.zoomType||c.options.constrainType||
+(c.zoomWrap.parent().css("height",c.$elem.height()),c.zoomWrap.parent().css("width",c.$elem.width()),c.zoomWindow.css("height",c.$elem.height()),c.zoomWindow.css("width",c.$elem.width()))}else c.$elem.attr("src",b),c.options.tint&&(c.zoomTintImage.attr("src",a),c.zoomTintImage.attr("height",c.$elem.height()),c.zoomTintImage.css({height:c.$elem.height()}),c.zoomTint.css({height:c.$elem.height()})),c.zoomContainer.css("height",c.$elem.height()),c.zoomContainer.css("width",c.$elem.width());c.options.imageCrossfade&&
+(c.zoomWrap.css("height",c.$elem.height()),c.zoomWrap.css("width",c.$elem.width()));c.options.constrainType&&("height"==c.options.constrainType&&(c.zoomContainer.css("height",c.options.constrainSize),c.zoomContainer.css("width","auto"),c.options.imageCrossfade?(c.zoomWrap.css("height",c.options.constrainSize),c.zoomWrap.css("width","auto"),c.constwidth=c.zoomWrap.width()):(c.$elem.css("height",c.options.constrainSize),c.$elem.css("width","auto"),c.constwidth=c.$elem.width()),"inner"==c.options.zoomType&&
+(c.zoomWrap.parent().css("height",c.options.constrainSize),c.zoomWrap.parent().css("width",c.constwidth),c.zoomWindow.css("height",c.options.constrainSize),c.zoomWindow.css("width",c.constwidth)),c.options.tint&&(c.tintContainer.css("height",c.options.constrainSize),c.tintContainer.css("width",c.constwidth),c.zoomTint.css("height",c.options.constrainSize),c.zoomTint.css("width",c.constwidth),c.zoomTintImage.css("height",c.options.constrainSize),c.zoomTintImage.css("width",c.constwidth))),"width"==
+c.options.constrainType&&(c.zoomContainer.css("height","auto"),c.zoomContainer.css("width",c.options.constrainSize),c.options.imageCrossfade?(c.zoomWrap.css("height","auto"),c.zoomWrap.css("width",c.options.constrainSize),c.constheight=c.zoomWrap.height()):(c.$elem.css("height","auto"),c.$elem.css("width",c.options.constrainSize),c.constheight=c.$elem.height()),"inner"==c.options.zoomType&&(c.zoomWrap.parent().css("height",c.constheight),c.zoomWrap.parent().css("width",c.options.constrainSize),c.zoomWindow.css("height",
+c.constheight),c.zoomWindow.css("width",c.options.constrainSize)),c.options.tint&&(c.tintContainer.css("height",c.constheight),c.tintContainer.css("width",c.options.constrainSize),c.zoomTint.css("height",c.constheight),c.zoomTint.css("width",c.options.constrainSize),c.zoomTintImage.css("height",c.constheight),c.zoomTintImage.css("width",c.options.constrainSize))))},doneCallback:function(){this.options.loadingIcon&&this.spinner.hide();this.nzOffset=this.$elem.offset();this.nzWidth=this.$elem.width();
+this.nzHeight=this.$elem.height();this.currentZoomLevel=this.options.zoomLevel;this.widthRatio=this.largeWidth/this.nzWidth;this.heightRatio=this.largeHeight/this.nzHeight;"window"==this.options.zoomType&&(lensHeight=this.nzHeight<this.options.zoomWindowWidth/this.widthRatio?this.nzHeight:String(this.options.zoomWindowHeight/this.heightRatio),lensWidth=this.options.zoomWindowWidth<this.options.zoomWindowWidth?this.nzWidth:this.options.zoomWindowWidth/this.widthRatio,this.zoomLens&&(this.zoomLens.css("width",
+lensWidth),this.zoomLens.css("height",lensHeight)))},getCurrentImage:function(){return this.zoomImage},getGalleryList:function(){var b=this;b.gallerylist=[];b.options.gallery?d("#"+b.options.gallery+" a").each(function(){var a="";d(this).data("zoom-image")?a=d(this).data("zoom-image"):d(this).data("image")&&(a=d(this).data("image"));a==b.zoomImage?b.gallerylist.unshift({href:""+a+"",title:d(this).find("img").attr("title")}):b.gallerylist.push({href:""+a+"",title:d(this).find("img").attr("title")})}):
+b.gallerylist.push({href:""+b.zoomImage+"",title:d(this).find("img").attr("title")});return b.gallerylist},changeZoomLevel:function(b){this.scrollingLock=!0;this.newvalue=parseFloat(b).toFixed(2);newvalue=parseFloat(b).toFixed(2);maxheightnewvalue=this.largeHeight/(this.options.zoomWindowHeight/this.nzHeight*this.nzHeight);maxwidthtnewvalue=this.largeWidth/(this.options.zoomWindowWidth/this.nzWidth*this.nzWidth);"inner"!=this.options.zoomType&&(maxheightnewvalue<=newvalue?(this.heightRatio=this.largeHeight/
+maxheightnewvalue/this.nzHeight,this.newvalueheight=maxheightnewvalue,this.fullheight=!0):(this.heightRatio=this.largeHeight/newvalue/this.nzHeight,this.newvalueheight=newvalue,this.fullheight=!1),maxwidthtnewvalue<=newvalue?(this.widthRatio=this.largeWidth/maxwidthtnewvalue/this.nzWidth,this.newvaluewidth=maxwidthtnewvalue,this.fullwidth=!0):(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=newvalue,this.fullwidth=!1),"lens"==this.options.zoomType&&(maxheightnewvalue<=newvalue?
+(this.fullwidth=!0,this.newvaluewidth=maxheightnewvalue):(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=newvalue,this.fullwidth=!1)));"inner"==this.options.zoomType&&(maxheightnewvalue=parseFloat(this.largeHeight/this.nzHeight).toFixed(2),maxwidthtnewvalue=parseFloat(this.largeWidth/this.nzWidth).toFixed(2),newvalue>maxheightnewvalue&&(newvalue=maxheightnewvalue),newvalue>maxwidthtnewvalue&&(newvalue=maxwidthtnewvalue),maxheightnewvalue<=newvalue?(this.heightRatio=this.largeHeight/
+newvalue/this.nzHeight,this.newvalueheight=newvalue>maxheightnewvalue?maxheightnewvalue:newvalue,this.fullheight=!0):(this.heightRatio=this.largeHeight/newvalue/this.nzHeight,this.newvalueheight=newvalue>maxheightnewvalue?maxheightnewvalue:newvalue,this.fullheight=!1),maxwidthtnewvalue<=newvalue?(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=newvalue>maxwidthtnewvalue?maxwidthtnewvalue:newvalue,this.fullwidth=!0):(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=
+newvalue,this.fullwidth=!1));scrcontinue=!1;"inner"==this.options.zoomType&&(this.nzWidth>this.nzHeight&&(this.newvaluewidth<=maxwidthtnewvalue?scrcontinue=!0:(scrcontinue=!1,this.fullwidth=this.fullheight=!0)),this.nzHeight>this.nzWidth&&(this.newvaluewidth<=maxwidthtnewvalue?scrcontinue=!0:(scrcontinue=!1,this.fullwidth=this.fullheight=!0)));"inner"!=this.options.zoomType&&(scrcontinue=!0);scrcontinue&&(this.zoomLock=0,this.changeZoom=!0,this.options.zoomWindowHeight/this.heightRatio<=this.nzHeight&&
+(this.currentZoomLevel=this.newvalueheight,"lens"!=this.options.zoomType&&"inner"!=this.options.zoomType&&(this.changeBgSize=!0,this.zoomLens.css({height:String(this.options.zoomWindowHeight/this.heightRatio)+"px"})),"lens"==this.options.zoomType||"inner"==this.options.zoomType)&&(this.changeBgSize=!0),this.options.zoomWindowWidth/this.widthRatio<=this.nzWidth&&("inner"!=this.options.zoomType&&this.newvaluewidth>this.newvalueheight&&(this.currentZoomLevel=this.newvaluewidth),"lens"!=this.options.zoomType&&
+"inner"!=this.options.zoomType&&(this.changeBgSize=!0,this.zoomLens.css({width:String(this.options.zoomWindowWidth/this.widthRatio)+"px"})),"lens"==this.options.zoomType||"inner"==this.options.zoomType)&&(this.changeBgSize=!0),"inner"==this.options.zoomType&&(this.changeBgSize=!0,this.nzWidth>this.nzHeight&&(this.currentZoomLevel=this.newvaluewidth),this.nzHeight>this.nzWidth&&(this.currentZoomLevel=this.newvaluewidth)));this.setPosition(this.currentLoc)},closeAll:function(){self.zoomWindow&&self.zoomWindow.hide();
+self.zoomLens&&self.zoomLens.hide();self.zoomTint&&self.zoomTint.hide()},changeState:function(b){"enable"==b&&(this.options.zoomEnabled=!0);"disable"==b&&(this.options.zoomEnabled=!1)}};d.fn.elevateZoom=function(b){return this.each(function(){var a=Object.create(k);a.init(b,this);d.data(this,"elevateZoom",a)})};d.fn.elevateZoom.options={zoomActivation:"hover",zoomEnabled:!0,preloading:1,zoomLevel:1,scrollZoom:!1,scrollZoomIncrement:0.1,minZoomLevel:!1,maxZoomLevel:!1,easing:!1,easingAmount:12,lensSize:200,
+zoomWindowWidth:400,zoomWindowHeight:400,zoomWindowOffetx:0,zoomWindowOffety:0,zoomWindowPosition:1,zoomWindowBgColour:"#fff",lensFadeIn:!1,lensFadeOut:!1,debug:!1,zoomWindowFadeIn:!1,zoomWindowFadeOut:!1,zoomWindowAlwaysShow:!1,zoomTintFadeIn:!1,zoomTintFadeOut:!1,borderSize:4,showLens:!0,borderColour:"#888",lensBorderSize:1,lensBorderColour:"#000",lensShape:"square",zoomType:"window",containLensZoom:!1,lensColour:"white",lensOpacity:0.4,lenszoom:!1,tint:!1,tintColour:"#333",tintOpacity:0.4,gallery:!1,
+galleryActiveClass:"zoomGalleryActive",imageCrossfade:!1,constrainType:!1,constrainSize:!1,loadingIcon:!1,cursor:"default",responsive:!0,onComplete:d.noop,onZoomedImageLoaded:function(){},onImageSwap:d.noop,onImageSwapComplete:d.noop}})(jQuery,window,document);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.formatCurrency-1.4.0.js b/sm-shop/src/main/webapp/resources/js/jquery.formatCurrency-1.4.0.js
new file mode 100644
index 0000000..71225ee
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.formatCurrency-1.4.0.js
@@ -0,0 +1,244 @@
+// This file is part of the jQuery formatCurrency Plugin.
+//
+// The jQuery formatCurrency Plugin is free software: you can redistribute it
+// and/or modify it under the terms of the GNU General Public License as published
+// by the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// The jQuery formatCurrency Plugin is distributed in the hope that it will
+// be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along with
+// the jQuery formatCurrency Plugin. If not, see <http://www.gnu.org/licenses/>.
+
+(function($) {
+
+ $.formatCurrency = {};
+
+ $.formatCurrency.regions = [];
+
+ // default Region is en
+ $.formatCurrency.regions[''] = {
+ symbol: '$',
+ positiveFormat: '%s%n',
+ negativeFormat: '(%s%n)',
+ decimalSymbol: '.',
+ digitGroupSymbol: ',',
+ groupDigits: true
+ };
+
+ $.fn.formatCurrency = function(destination, settings) {
+
+ if (arguments.length == 1 && typeof destination !== "string") {
+ settings = destination;
+ destination = false;
+ }
+
+ // initialize defaults
+ var defaults = {
+ name: "formatCurrency",
+ colorize: false,
+ region: '',
+ global: true,
+ roundToDecimalPlace: 2, // roundToDecimalPlace: -1; for no rounding; 0 to round to the dollar; 1 for one digit cents; 2 for two digit cents; 3 for three digit cents; ...
+ eventOnDecimalsEntered: false
+ };
+ // initialize default region
+ defaults = $.extend(defaults, $.formatCurrency.regions['']);
+ // override defaults with settings passed in
+ settings = $.extend(defaults, settings);
+
+ // check for region setting
+ if (settings.region.length > 0) {
+ settings = $.extend(settings, getRegionOrCulture(settings.region));
+ }
+ settings.regex = generateRegex(settings);
+
+ return this.each(function() {
+ $this = $(this);
+
+ // get number
+ var num = '0';
+ num = $this[$this.is('input, select, textarea') ? 'val' : 'html']();
+
+ //identify '(123)' as a negative number
+ if (num.search('\\(') >= 0) {
+ num = '-' + num;
+ }
+
+ if (num === '' || (num === '-' && settings.roundToDecimalPlace === -1)) {
+ return;
+ }
+
+ // if the number is valid use it, otherwise clean it
+ if (isNaN(num)) {
+ // clean number
+ num = num.replace(settings.regex, '');
+
+ if (num === '' || (num === '-' && settings.roundToDecimalPlace === -1)) {
+ return;
+ }
+
+ if (settings.decimalSymbol != '.') {
+ num = num.replace(settings.decimalSymbol, '.'); // reset to US decimal for arithmetic
+ }
+ if (isNaN(num)) {
+ num = '0';
+ }
+ }
+
+ // evalutate number input
+ var numParts = String(num).split('.');
+ var isPositive = (num == Math.abs(num));
+ var hasDecimals = (numParts.length > 1);
+ var decimals = (hasDecimals ? numParts[1].toString() : '0');
+ var originalDecimals = decimals;
+
+ // format number
+ num = Math.abs(numParts[0]);
+ num = isNaN(num) ? 0 : num;
+ if (settings.roundToDecimalPlace >= 0) {
+ decimals = parseFloat('1.' + decimals); // prepend "0."; (IE does NOT round 0.50.toFixed(0) up, but (1+0.50).toFixed(0)-1
+ decimals = decimals.toFixed(settings.roundToDecimalPlace); // round
+ if (decimals.substring(0, 1) == '2') {
+ num = Number(num) + 1;
+ }
+ decimals = decimals.substring(2); // remove "0."
+ }
+ num = String(num);
+
+ if (settings.groupDigits) {
+ for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
+ num = num.substring(0, num.length - (4 * i + 3)) + settings.digitGroupSymbol + num.substring(num.length - (4 * i + 3));
+ }
+ }
+
+ if ((hasDecimals && settings.roundToDecimalPlace == -1) || settings.roundToDecimalPlace > 0) {
+ num += settings.decimalSymbol + decimals;
+ }
+
+ // format symbol/negative
+ var format = isPositive ? settings.positiveFormat : settings.negativeFormat;
+ var money = format.replace(/%s/g, settings.symbol);
+ money = money.replace(/%n/g, num);
+
+ // setup destination
+ var $destination = $([]);
+ if (!destination) {
+ $destination = $this;
+ } else {
+ $destination = $(destination);
+ }
+ // set destination
+ $destination[$destination.is('input, select, textarea') ? 'val' : 'html'](money);
+
+ if (
+ hasDecimals &&
+ settings.eventOnDecimalsEntered &&
+ originalDecimals.length > settings.roundToDecimalPlace
+ ) {
+ $destination.trigger('decimalsEntered', originalDecimals);
+ }
+
+ // colorize
+ if (settings.colorize) {
+ $destination.css('color', isPositive ? 'black' : 'red');
+ }
+ });
+ };
+
+ // Remove all non numbers from text
+ $.fn.toNumber = function(settings) {
+ var defaults = $.extend({
+ name: "toNumber",
+ region: '',
+ global: true
+ }, $.formatCurrency.regions['']);
+
+ settings = jQuery.extend(defaults, settings);
+ if (settings.region.length > 0) {
+ settings = $.extend(settings, getRegionOrCulture(settings.region));
+ }
+ settings.regex = generateRegex(settings);
+
+ return this.each(function() {
+ var method = $(this).is('input, select, textarea') ? 'val' : 'html';
+ $(this)[method]($(this)[method]().replace('(', '(-').replace(settings.regex, ''));
+ });
+ };
+
+ // returns the value from the first element as a number
+ $.fn.asNumber = function(settings) {
+ var defaults = $.extend({
+ name: "asNumber",
+ region: '',
+ parse: true,
+ parseType: 'Float',
+ global: true
+ }, $.formatCurrency.regions['']);
+ settings = jQuery.extend(defaults, settings);
+ if (settings.region.length > 0) {
+ settings = $.extend(settings, getRegionOrCulture(settings.region));
+ }
+ settings.regex = generateRegex(settings);
+ settings.parseType = validateParseType(settings.parseType);
+
+ var method = $(this).is('input, select, textarea') ? 'val' : 'html';
+ var num = $(this)[method]();
+ num = num ? num : "";
+ num = num.replace('(', '(-');
+ num = num.replace(settings.regex, '');
+ if (!settings.parse) {
+ return num;
+ }
+
+ if (num.length == 0) {
+ num = '0';
+ }
+
+ if (settings.decimalSymbol != '.') {
+ num = num.replace(settings.decimalSymbol, '.'); // reset to US decimal for arthmetic
+ }
+
+ return window['parse' + settings.parseType](num);
+ };
+
+ function getRegionOrCulture(region) {
+ var regionInfo = $.formatCurrency.regions[region];
+ if (regionInfo) {
+ return regionInfo;
+ }
+ else {
+ if (/(\w+)-(\w+)/g.test(region)) {
+ var culture = region.replace(/(\w+)-(\w+)/g, "$1");
+ return $.formatCurrency.regions[culture];
+ }
+ }
+ // fallback to extend(null) (i.e. nothing)
+ return null;
+ }
+
+ function validateParseType(parseType) {
+ switch (parseType.toLowerCase()) {
+ case 'int':
+ return 'Int';
+ case 'float':
+ return 'Float';
+ default:
+ throw 'invalid parseType';
+ }
+ }
+
+ function generateRegex(settings) {
+ if (settings.symbol === '') {
+ return new RegExp("[^\\d" + settings.decimalSymbol + "-]", "g");
+ }
+ else {
+ var symbol = settings.symbol.replace('$', '\\$').replace('.', '\\.');
+ return new RegExp(symbol + "|[^\\d" + settings.decimalSymbol + "-]", "g");
+ }
+ }
+
+})(jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.friendurl.min.js b/sm-shop/src/main/webapp/resources/js/jquery.friendurl.min.js
new file mode 100644
index 0000000..8d63ca9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.friendurl.min.js
@@ -0,0 +1 @@
+(function($){$.fn.friendurl=function(options){var defaults={divider:"-"};var options=$.extend(defaults,options);return this.each(function(){$(this).keyup(function(){var url=$(this).val().toLowerCase().replace(/^\s+|\s+$/g,"").replace(/[_|\s]+/g,"-").replace(/[^a-z\u0400-\u04FF0-9-]+/g,"").replace(/[-]+/g,"-").replace(/^-+|-+$/g,"").replace(/[-]+/g,options.divider);$("#"+options.id).val(url)})})}})(jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.maskedinput.min.js b/sm-shop/src/main/webapp/resources/js/jquery.maskedinput.min.js
new file mode 100644
index 0000000..0d9ce6e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.maskedinput.min.js
@@ -0,0 +1,7 @@
+/*
+ Masked Input plugin for jQuery
+ Copyright (c) 2007-2013 Josh Bush (digitalbush.com)
+ Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
+ Version: 1.3.1
+*/
+(function(e){function t(){var e=document.createElement("input"),t="onpaste";return e.setAttribute(t,""),"function"==typeof e[t]?"paste":"input"}var n,a=t()+".mask",r=navigator.userAgent,i=/iphone/i.test(r),o=/android/i.test(r);e.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},dataName:"rawMaskFn",placeholder:"_"},e.fn.extend({caret:function(e,t){var n;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof e?(t="number"==typeof t?t:e,this.each(function(){this.setSelectionRange?this.setSelectionRange(e,t):this.createTextRange&&(n=this.createTextRange(),n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",e),n.select())})):(this[0].setSelectionRange?(e=this[0].selectionStart,t=this[0].selectionEnd):document.selection&&document.selection.createRange&&(n=document.selection.createRange(),e=0-n.duplicate().moveStart("character",-1e5),t=e+n.text.length),{begin:e,end:t})},unmask:function(){return this.trigger("unmask")},mask:function(t,r){var c,l,s,u,f,h;return!t&&this.length>0?(c=e(this[0]),c.data(e.mask.dataName)()):(r=e.extend({placeholder:e.mask.placeholder,completed:null},r),l=e.mask.definitions,s=[],u=h=t.length,f=null,e.each(t.split(""),function(e,t){"?"==t?(h--,u=e):l[t]?(s.push(RegExp(l[t])),null===f&&(f=s.length-1)):s.push(null)}),this.trigger("unmask").each(function(){function c(e){for(;h>++e&&!s[e];);return e}function d(e){for(;--e>=0&&!s[e];);return e}function m(e,t){var n,a;if(!(0>e)){for(n=e,a=c(t);h>n;n++)if(s[n]){if(!(h>a&&s[n].test(R[a])))break;R[n]=R[a],R[a]=r.placeholder,a=c(a)}b(),x.caret(Math.max(f,e))}}function p(e){var t,n,a,i;for(t=e,n=r.placeholder;h>t;t++)if(s[t]){if(a=c(t),i=R[t],R[t]=n,!(h>a&&s[a].test(i)))break;n=i}}function g(e){var t,n,a,r=e.which;8===r||46===r||i&&127===r?(t=x.caret(),n=t.begin,a=t.end,0===a-n&&(n=46!==r?d(n):a=c(n-1),a=46===r?c(a):a),k(n,a),m(n,a-1),e.preventDefault()):27==r&&(x.val(S),x.caret(0,y()),e.preventDefault())}function v(t){var n,a,i,l=t.which,u=x.caret();t.ctrlKey||t.altKey||t.metaKey||32>l||l&&(0!==u.end-u.begin&&(k(u.begin,u.end),m(u.begin,u.end-1)),n=c(u.begin-1),h>n&&(a=String.fromCharCode(l),s[n].test(a)&&(p(n),R[n]=a,b(),i=c(n),o?setTimeout(e.proxy(e.fn.caret,x,i),0):x.caret(i),r.completed&&i>=h&&r.completed.call(x))),t.preventDefault())}function k(e,t){var n;for(n=e;t>n&&h>n;n++)s[n]&&(R[n]=r.placeholder)}function b(){x.val(R.join(""))}function y(e){var t,n,a=x.val(),i=-1;for(t=0,pos=0;h>t;t++)if(s[t]){for(R[t]=r.placeholder;pos++<a.length;)if(n=a.charAt(pos-1),s[t].test(n)){R[t]=n,i=t;break}if(pos>a.length)break}else R[t]===a.charAt(pos)&&t!==u&&(pos++,i=t);return e?b():u>i+1?(x.val(""),k(0,h)):(b(),x.val(x.val().substring(0,i+1))),u?t:f}var x=e(this),R=e.map(t.split(""),function(e){return"?"!=e?l[e]?r.placeholder:e:void 0}),S=x.val();x.data(e.mask.dataName,function(){return e.map(R,function(e,t){return s[t]&&e!=r.placeholder?e:null}).join("")}),x.attr("readonly")||x.one("unmask",function(){x.unbind(".mask").removeData(e.mask.dataName)}).bind("focus.mask",function(){clearTimeout(n);var e;S=x.val(),e=y(),n=setTimeout(function(){b(),e==t.length?x.caret(0,e):x.caret(e)},10)}).bind("blur.mask",function(){y(),x.val()!=S&&x.change()}).bind("keydown.mask",g).bind("keypress.mask",v).bind(a,function(){setTimeout(function(){var e=y(!0);x.caret(e),r.completed&&e==x.val().length&&r.completed.call(x)},0)}),y()}))}})})(jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.printElement.min.js b/sm-shop/src/main/webapp/resources/js/jquery.printElement.min.js
new file mode 100644
index 0000000..d1aba53
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.printElement.min.js
@@ -0,0 +1,28 @@
+/// <reference path="http://code.jquery.com/jquery-1.4.1-vsdoc.js" />
+/*
+* Print Element Plugin 1.2
+*
+* Copyright (c) 2010 Erik Zaadi
+*
+* Inspired by PrintArea (http://plugins.jquery.com/project/PrintArea) and
+* http://stackoverflow.com/questions/472951/how-do-i-print-an-iframe-from-javascript-in-safari-chrome
+*
+* Home Page : http://projects.erikzaadi/jQueryPlugins/jQuery.printElement
+* Issues (bug reporting) : http://github.com/erikzaadi/jQueryPlugins/issues/labels/printElement
+* jQuery plugin page : http://plugins.jquery.com/project/printElement
+*
+* Thanks to David B (http://github.com/ungenio) and icgJohn (http://www.blogger.com/profile/11881116857076484100)
+* For their great contributions!
+*
+* Dual licensed under the MIT and GPL licenses:
+* http://www.opensource.org/licenses/mit-license.php
+* http://www.gnu.org/licenses/gpl.html
+*
+* Note, Iframe Printing is not supported in Opera and Chrome 3.0, a popup window will be shown instead
+*/
+;(function(g){function k(c){c&&c.printPage?c.printPage():setTimeout(function(){k(c)},50)}function l(c){c=a(c);a(":checked",c).each(function(){this.setAttribute("checked","checked")});a("input[type='text']",c).each(function(){this.setAttribute("value",a(this).val())});a("select",c).each(function(){var b=a(this);a("option",b).each(function(){b.val()==a(this).val()&&this.setAttribute("selected","selected")})});a("textarea",c).each(function(){var b=a(this).attr("value");if(a.browser.b&&this.firstChild)this.firstChild.textContent=
+b;else this.innerHTML=b});return a("<div></div>").append(c.clone()).html()}function m(c,b){var i=a(c);c=l(c);var d=[];d.push("<html><head><title>"+b.pageTitle+"</title>");if(b.overrideElementCSS){if(b.overrideElementCSS.length>0)for(var f=0;f<b.overrideElementCSS.length;f++){var e=b.overrideElementCSS[f];typeof e=="string"?d.push('<link type="text/css" rel="stylesheet" href="'+e+'" >'):d.push('<link type="text/css" rel="stylesheet" href="'+e.href+'" media="'+e.media+'" >')}}else a("link",j).filter(function(){return a(this).attr("rel").toLowerCase()==
+"stylesheet"}).each(function(){d.push('<link type="text/css" rel="stylesheet" href="'+a(this).attr("href")+'" media="'+a(this).attr("media")+'" >')});d.push('<base href="'+(g.location.protocol+"//"+g.location.hostname+(g.location.port?":"+g.location.port:"")+g.location.pathname)+'" />');d.push('</head><body style="'+b.printBodyOptions.styleToAdd+'" class="'+b.printBodyOptions.classNameToAdd+'">');d.push('<div class="'+i.attr("class")+'">'+c+"</div>");d.push('<script type="text/javascript">function printPage(){focus();print();'+
+(!a.browser.opera&&!b.leaveOpen&&b.printMode.toLowerCase()=="popup"?"close();":"")+"}<\/script>");d.push("</body></html>");return d.join("")}var j=g.document,a=g.jQuery;a.fn.printElement=function(c){var b=a.extend({},a.fn.printElement.defaults,c);if(b.printMode=="iframe")if(a.browser.opera||/chrome/.test(navigator.userAgent.toLowerCase()))b.printMode="popup";a("[id^='printElement_']").remove();return this.each(function(){var i=a.a?a.extend({},b,a(this).data()):b,d=a(this);d=m(d,i);var f=null,e=null;
+if(i.printMode.toLowerCase()=="popup"){f=g.open("about:blank","printElementWindow","width=650,height=440,scrollbars=yes");e=f.document}else{f="printElement_"+Math.round(Math.random()*99999).toString();var h=j.createElement("IFRAME");a(h).attr({style:i.iframeElementOptions.styleToAdd,id:f,className:i.iframeElementOptions.classNameToAdd,frameBorder:0,scrolling:"no",src:"about:blank"});j.body.appendChild(h);e=h.contentWindow||h.contentDocument;if(e.document)e=e.document;h=j.frames?j.frames[f]:j.getElementById(f);
+f=h.contentWindow||h}focus();e.open();e.write(d);e.close();k(f)})};a.fn.printElement.defaults={printMode:"iframe",pageTitle:"",overrideElementCSS:null,printBodyOptions:{styleToAdd:"padding:10px;margin:10px;",classNameToAdd:""},leaveOpen:false,iframeElementOptions:{styleToAdd:"border:none;position:absolute;width:0px;height:0px;bottom:0px;left:0px;",classNameToAdd:""}};a.fn.printElement.cssElement={href:"",media:""}})(window);
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.quicksand.js b/sm-shop/src/main/webapp/resources/js/jquery.quicksand.js
new file mode 100644
index 0000000..48cfd53
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.quicksand.js
@@ -0,0 +1,443 @@
+/*
+
+Quicksand 1.3
+
+Reorder and filter items with a nice shuffling animation.
+
+Copyright (c) 2010 Jacek Galanciak (razorjack.net) and agilope.com
+Big thanks for Piotr Petrus (riddle.pl) for deep code review and wonderful docs & demos.
+
+Dual licensed under the MIT and GPL version 2 licenses.
+http://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt
+http://github.com/jquery/jquery/blob/master/GPL-LICENSE.txt
+
+Project site: http://razorjack.net/quicksand
+Github site: http://github.com/razorjack/quicksand
+
+ */
+
+(function($) {
+ $.fn.quicksand = function(collection, customOptions) {
+ var options = {
+ duration : 750,
+ easing : 'swing',
+ attribute : 'data-id', // attribute to recognize same items within source and dest
+ adjustHeight : 'auto', // 'dynamic' animates height during shuffling (slow), 'auto' adjusts it
+ // before or after the animation, false leaves height constant
+ adjustWidth : 'auto', // 'dynamic' animates width during shuffling (slow),
+ // 'auto' adjusts it before or after the animation, false leaves width constant
+ useScaling : false, // enable it if you're using scaling effect
+ enhancement : function(c) {}, // Visual enhacement (eg. font replacement) function for cloned elements
+ selector : '> *',
+ atomic : false,
+ dx : 0,
+ dy : 0,
+ maxWidth : 0,
+ retainExisting : true // disable if you want the collection of items to be replaced completely by incoming items.
+ };
+ $.extend(options, customOptions);
+
+ // Got IE and want scaling effect? Kiss my ass.
+ if (navigator.userAgent.match(/msie [6]/i) || (typeof ($.fn.scale) == 'undefined')) {
+ options.useScaling = false;
+ }
+
+ var callbackFunction;
+ if (typeof (arguments[1]) == 'function') {
+ callbackFunction = arguments[1];
+ } else if (typeof (arguments[2] == 'function')) {
+ callbackFunction = arguments[2];
+ }
+
+ return this.each(function(i) {
+ var val;
+ var animationQueue = []; // used to store all the animation params before starting the animation;
+ // solves initial animation slowdowns
+ var $collection;
+ if (typeof(options.attribute) == 'function') {
+ $collection = $(collection);
+ } else {
+ $collection = $(collection).filter('[' + options.attribute + ']').clone(); // destination (target) collection
+ }
+ var $sourceParent = $(this); // source, the visible container of source collection
+ var sourceHeight = $(this).css('height'); // used to keep height and document flow during the animation
+ var sourceWidth = $(this).css('width'); // used to keep width and document flow during the animation
+ var destHeight, destWidth;
+ var adjustHeightOnCallback = false;
+ var adjustWidthOnCallback = false;
+ var offset = $($sourceParent).offset(); // offset of visible container, used in animation calculations
+ var offsets = []; // coordinates of every source collection item
+ var $source = $(this).find(options.selector); // source collection items
+ var width = $($source).innerWidth(); // need for the responsive design
+
+ // Replace the collection and quit if IE6
+ if (navigator.userAgent.match(/msie [6]/i) && parseInt($.browser.version, 10) < 7) {
+ $sourceParent.html('').append($collection);
+ return;
+ }
+
+ // Gets called when any animation is finished
+ var postCallbackPerformed = 0; // prevents the function from being called more than one time
+ var postCallback = function() {
+ $(this).css('margin', '').css('position', '').css('top', '').css('left', '').css('opacity', '');
+ if (!postCallbackPerformed) {
+ postCallbackPerformed = 1;
+
+ if (!options.atomic) {
+ // hack: used to be: $sourceParent.html($dest.html());
+ // put target HTML into visible source container
+ // but new webkit builds cause flickering when replacing the collections
+ var $toDelete = $sourceParent.find(options.selector);
+ if (!options.retainExisting) {
+ $sourceParent.prepend($dest.find(options.selector));
+ $toDelete.remove();
+ } else {
+ // Avoid replacing elements because we may have already altered items in significant
+ // ways and it would be bad to have to do it again. (i.e. lazy load images)
+ // But $dest holds the correct ordering. So we must re-sequence items in $sourceParent to match.
+ var $keepElements = $([]);
+ $dest.find(options.selector).each(function(i) {
+ var $matchedElement = $([]);
+ if (typeof (options.attribute) == 'function') {
+ var val = options.attribute($(this));
+ $toDelete.each(function() {
+ if (options.attribute(this) == val) {
+ $matchedElement = $(this);
+ return false;
+ }
+ });
+ } else {
+ $matchedElement = $toDelete.filter(
+ '[' + options.attribute + '="'+
+ $(this).attr(options.attribute) + '"]');
+ }
+ if ($matchedElement.length > 0) {
+ // There is a matching element in the $toDelete list and in $dest
+ // list, so make sure it is in the right location within $sourceParent
+ // and put it in the list of elements we need to not delete.
+ $keepElements = $keepElements.add($matchedElement);
+ if (i === 0) {
+ $sourceParent.prepend($matchedElement);
+ } else {
+ $matchedElement.insertAfter($sourceParent.find(options.selector).get(i - 1));
+ }
+ }
+ });
+ // Remove whatever is remaining from the DOM
+ $toDelete.not($keepElements).remove();
+ }
+
+ if (adjustHeightOnCallback) {
+ $sourceParent.css('height', destHeight);
+ }
+ if (adjustWidthOnCallback) {
+ $sourceParent.css('width', sourceWidth);
+ }
+ }
+ options.enhancement($sourceParent); // Perform custom visual enhancements on a newly replaced collection
+ if (typeof callbackFunction == 'function') {
+ callbackFunction.call(this);
+ }
+ }
+
+ if (false === options.adjustHeight) {
+ $sourceParent.css('height', 'auto');
+ }
+
+ if (false === options.adjustWidth) {
+ $sourceParent.css('width', 'auto');
+ }
+ };
+
+ // Position: relative situations
+ var $correctionParent = $sourceParent.offsetParent();
+ var correctionOffset = $correctionParent.offset();
+ if ($correctionParent.css('position') == 'relative') {
+ if ($correctionParent.get(0).nodeName.toLowerCase() != 'body') {
+ correctionOffset.top += (parseFloat($correctionParent.css('border-top-width')) || 0);
+ correctionOffset.left += (parseFloat($correctionParent.css('border-left-width')) || 0);
+ }
+ } else {
+ correctionOffset.top -= (parseFloat($correctionParent.css('border-top-width')) || 0);
+ correctionOffset.left -= (parseFloat($correctionParent.css('border-left-width')) || 0);
+ correctionOffset.top -= (parseFloat($correctionParent.css('margin-top')) || 0);
+ correctionOffset.left -= (parseFloat($correctionParent.css('margin-left')) || 0);
+ }
+
+ // perform custom corrections from options (use when Quicksand fails to detect proper correction)
+ if (isNaN(correctionOffset.left)) {
+ correctionOffset.left = 0;
+ }
+ if (isNaN(correctionOffset.top)) {
+ correctionOffset.top = 0;
+ }
+
+ correctionOffset.left -= options.dx;
+ correctionOffset.top -= options.dy;
+
+ // keeps nodes after source container, holding their position
+ $sourceParent.css('height', $(this).height());
+ $sourceParent.css('width', $(this).width());
+
+ // get positions of source collections
+ $source.each(function(i) {
+ offsets[i] = $(this).offset();
+ });
+
+ // stops previous animations on source container
+ $(this).stop();
+ var dx = 0;
+ var dy = 0;
+ $source.each(function(i) {
+ $(this).stop(); // stop animation of collection items
+ var rawObj = $(this).get(0);
+ if (rawObj.style.position == 'absolute') {
+ dx = -options.dx;
+ dy = -options.dy;
+ } else {
+ dx = options.dx;
+ dy = options.dy;
+ }
+
+ rawObj.style.position = 'absolute';
+ rawObj.style.margin = '0';
+
+ if (!options.adjustWidth) {
+ rawObj.style.width = (width + 'px'); // sets the width to the current element
+ // with even if it has been changed
+ // by a responsive design
+ }
+
+ rawObj.style.top = (offsets[i].top- parseFloat(rawObj.style.marginTop) - correctionOffset.top + dy) + 'px';
+ rawObj.style.left = (offsets[i].left- parseFloat(rawObj.style.marginLeft) - correctionOffset.left + dx) + 'px';
+
+ if (options.maxWidth > 0 && offsets[i].left > options.maxWidth) {
+ rawObj.style.display = 'none';
+ }
+ });
+
+ // create temporary container with destination collection
+ var $dest = $($sourceParent).clone();
+ var rawDest = $dest.get(0);
+ rawDest.innerHTML = '';
+ rawDest.setAttribute('id', '');
+ rawDest.style.height = 'auto';
+ rawDest.style.width = $sourceParent.width() + 'px';
+ $dest.append($collection);
+ // Inserts node into HTML. Note that the node is under visible source container in the exactly same position
+ // The browser render all the items without showing them (opacity: 0.0) No offset calculations are needed,
+ // the browser just extracts position from underlayered destination items and sets animation to destination positions.
+ $dest.insertBefore($sourceParent);
+ $dest.css('opacity', 0.0);
+ rawDest.style.zIndex = -1;
+
+ rawDest.style.margin = '0';
+ rawDest.style.position = 'absolute';
+ rawDest.style.top = offset.top - correctionOffset.top + 'px';
+ rawDest.style.left = offset.left - correctionOffset.left + 'px';
+
+ if (options.adjustHeight === 'dynamic') {
+ // If destination container has different height than source container the height can be animated,
+ // adjusting it to destination height
+ $sourceParent.animate({ height : $dest.height() }, options.duration, options.easing);
+ } else if (options.adjustHeight === 'auto') {
+ destHeight = $dest.height();
+ if (parseFloat(sourceHeight) < parseFloat(destHeight)) {
+ // Adjust the height now so that the items don't move out of the container
+ $sourceParent.css('height', destHeight);
+ } else {
+ // Adjust later, on callback
+ adjustHeightOnCallback = true;
+ }
+ }
+
+ if (options.adjustWidth === 'dynamic') {
+ // If destination container has different width than source container the width can be animated,
+ // adjusting it to destination width
+ $sourceParent.animate({ width : $dest.width() }, options.duration, options.easing);
+ } else if (options.adjustWidth === 'auto') {
+ destWidth = $dest.width();
+ if (parseFloat(sourceWidth) < parseFloat(destWidth)) {
+ // Adjust the height now so that the items don't move out of the container
+ $sourceParent.css('width', destWidth);
+ } else {
+ // Adjust later, on callback
+ adjustWidthOnCallback = true;
+ }
+ }
+
+ // Now it's time to do shuffling animation. First of all, we need to identify same elements within
+ // source and destination collections
+ $source.each(function(i) {
+ var destElement = [];
+ if (typeof (options.attribute) == 'function') {
+ val = options.attribute($(this));
+ $collection.each(function() {
+ if (options.attribute(this) == val) {
+ destElement = $(this);
+ return false;
+ }
+ });
+ } else {
+ destElement = $collection.filter('[' + options.attribute + '="' + $(this).attr(options.attribute) + '"]');
+ }
+ if (destElement.length) {
+ // The item is both in source and destination collections. It it's under different position, let's move it
+ if (!options.useScaling) {
+ animationQueue.push({
+ element : $(this), dest : destElement,
+ style : {
+ top : $(this).offset().top,
+ left : $(this).offset().left,
+ opacity : ""
+ },
+ animation : {
+ top : destElement.offset().top - correctionOffset.top,
+ left : destElement.offset().left - correctionOffset.left,
+ opacity : 1.0
+ }
+ });
+ } else {
+ animationQueue.push({
+ element : $(this), dest : destElement,
+ style : {
+ top : $(this).offset().top,
+ left : $(this).offset().left,
+ opacity : ""
+ },
+ animation : {
+ top : destElement.offset().top - correctionOffset.top,
+ left : destElement.offset().left - correctionOffset.left,
+ opacity : 1.0,
+ scale : '1.0'
+ }
+ });
+ }
+ } else {
+ // The item from source collection is not present in destination collections. Let's remove it
+ if (!options.useScaling) {
+ animationQueue.push({
+ element : $(this),
+ style : {
+ top : $(this).offset().top,
+ left : $(this).offset().left,
+ opacity : ""
+ },
+ animation : {
+ opacity : '0.0'
+ }
+ });
+ } else {
+ animationQueue.push({
+ element : $(this),
+ animation : {
+ opacity : '0.0',
+ style : {
+ top : $(this).offset().top,
+ left : $(this).offset().left,
+ opacity : ""
+ },
+ scale : '0.0'
+ }
+ });
+ }
+ }
+ });
+
+ $collection.each(function(i) {
+ // Grab all items from target collection not present in visible source collection
+ var sourceElement = [];
+ var destElement = [];
+ if (typeof (options.attribute) == 'function') {
+ val = options.attribute($(this));
+ $source.each(function() {
+ if (options.attribute(this) == val) {
+ sourceElement = $(this);
+ return false;
+ }
+ });
+
+ $collection.each(function() {
+ if (options.attribute(this) == val) {
+ destElement = $(this);
+ return false;
+ }
+ });
+ } else {
+ sourceElement = $source.filter('[' + options.attribute + '="' + $(this).attr(options.attribute) + '"]');
+ destElement = $collection.filter('[' + options.attribute + '="' + $(this).attr(options.attribute) + '"]');
+ }
+
+ var animationOptions;
+ if (sourceElement.length === 0 && destElement.length > 0) {
+
+ // No such element in source collection...
+ if (!options.useScaling) {
+ animationOptions = {opacity : '1.0'};
+ } else {
+ animationOptions = {opacity : '1.0', scale : '1.0'};
+ }
+
+ // Let's create it
+ var d = destElement.clone();
+ var rawDestElement = d.get(0);
+ rawDestElement.style.position = 'absolute';
+ rawDestElement.style.margin = '0';
+
+ if (!options.adjustWidth) {
+ // sets the width to the current element with even if it has been changed by a responsive design
+ rawDestElement.style.width = width + 'px';
+ }
+
+ rawDestElement.style.top = destElement.offset().top - correctionOffset.top + 'px';
+ rawDestElement.style.left = destElement.offset().left - correctionOffset.left + 'px';
+
+ d.css('opacity', 0.0); // IE
+
+ if (options.useScaling) {
+ d.css('transform', 'scale(0.0)');
+ }
+ d.appendTo($sourceParent);
+
+ if (options.maxWidth === 0 || destElement.offset().left < options.maxWidth) {
+ animationQueue.push({element : $(d), dest : destElement,animation : animationOptions});
+ }
+ }
+ });
+
+ $dest.remove();
+ if (!options.atomic) {
+ options.enhancement($sourceParent); // Perform custom visual enhancements during the animation
+ for (i = 0; i < animationQueue.length; i++) {
+ animationQueue[i].element.animate(animationQueue[i].animation, options.duration, options.easing, postCallback);
+ }
+ } else {
+ $toDelete = $sourceParent.find(options.selector);
+ $sourceParent.prepend($dest.find(options.selector));
+ for (i = 0; i < animationQueue.length; i++) {
+ if (animationQueue[i].dest && animationQueue[i].style) {
+ var destElement = animationQueue[i].dest;
+ var destOffset = destElement.offset();
+
+ destElement.css({
+ position : 'relative',
+ top : (animationQueue[i].style.top - destOffset.top),
+ left : (animationQueue[i].style.left - destOffset.left)
+ });
+
+ destElement.animate({top : "0", left : "0"},
+ options.duration,
+ options.easing,
+ postCallback);
+ } else {
+ animationQueue[i].element.animate(animationQueue[i].animation,
+ options.duration,
+ options.easing,
+ postCallback);
+ }
+ }
+ $toDelete.remove();
+ }
+ });
+ };
+})(jQuery);
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.raty.min.js b/sm-shop/src/main/webapp/resources/js/jquery.raty.min.js
new file mode 100644
index 0000000..6ddb40d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.raty.min.js
@@ -0,0 +1,12 @@
+/*!
+ * jQuery Raty - A Star Rating Plugin
+ *
+ * Licensed under The MIT License
+ *
+ * @version 2.5.2
+ * @author Washington Botelho
+ * @documentation wbotelhos.com/raty
+ *
+ */
+
+;(function(b){var a={init:function(c){return this.each(function(){a.destroy.call(this);this.opt=b.extend(true,{},b.fn.raty.defaults,c);var e=b(this),g=["number","readOnly","score","scoreName"];a._callback.call(this,g);if(this.opt.precision){a._adjustPrecision.call(this);}this.opt.number=a._between(this.opt.number,0,this.opt.numberMax);this.opt.path=this.opt.path||"";if(this.opt.path&&this.opt.path.slice(this.opt.path.length-1,this.opt.path.length)!=="/"){this.opt.path+="/";}this.stars=a._createStars.call(this);this.score=a._createScore.call(this);a._apply.call(this,this.opt.score);var f=this.opt.space?4:0,d=this.opt.width||(this.opt.number*this.opt.size+this.opt.number*f);if(this.opt.cancel){this.cancel=a._createCancel.call(this);d+=(this.opt.size+f);}if(this.opt.readOnly){a._lock.call(this);}else{e.css("cursor","pointer");a._binds.call(this);}if(this.opt.width!==false){e.css("width",d);}a._target.call(this,this.opt.score);e.data({settings:this.opt,raty:true});});},_adjustPrecision:function(){this.opt.targetType="score";this.opt.half=true;},_apply:function(c){if(c&&c>0){c=a._between(c,0,this.opt.number);this.score.val(c);}a._fill.call(this,c);if(c){a._roundStars.call(this,c);}},_between:function(e,d,c){return Math.min(Math.max(parseFloat(e),d),c);},_binds:function(){if(this.cancel){a._bindCancel.call(this);}a._bindClick.call(this);a._bindOut.call(this);a._bindOver.call(this);},_bindCancel:function(){a._bindClickCancel.call(this);a._bindOutCancel.call(this);a._bindOverCancel.call(this);},_bindClick:function(){var c=this,d=b(c);c.stars.on("click.raty",function(e){c.score.val((c.opt.half||c.opt.precision)?d.data("score"):this.alt);if(c.opt.click){c.opt.click.call(c,parseFloat(c.score.val()),e);}});},_bindClickCancel:function(){var c=this;c.cancel.on("click.raty",function(d){c.score.removeAttr("value");if(c.opt.click){c.opt.click.call(c,null,d);}});},_bindOut:function(){var c=this;b(this).on("mouseleave.raty",function(d){var e=parseFloat(c.score.val())||undefined;a._apply.call(c,e);a._target.call(c,e,d);if(c.opt.mouseout){c.opt.mouseout.call(c,e,d);}});},_bindOutCancel:function(){var c=this;c.cancel.on("mouseleave.raty",function(d){b(this).attr("src",c.opt.path+c.opt.cancelOff);if(c.opt.mouseout){c.opt.mouseout.call(c,c.score.val()||null,d);}});},_bindOverCancel:function(){var c=this;c.cancel.on("mouseover.raty",function(d){b(this).attr("src",c.opt.path+c.opt.cancelOn);c.stars.attr("src",c.opt.path+c.opt.starOff);a._target.call(c,null,d);if(c.opt.mouseover){c.opt.mouseover.call(c,null);}});},_bindOver:function(){var c=this,d=b(c),e=c.opt.half?"mousemove.raty":"mouseover.raty";c.stars.on(e,function(g){var h=parseInt(this.alt,10);if(c.opt.half){var f=parseFloat((g.pageX-b(this).offset().left)/c.opt.size),j=(f>0.5)?1:0.5;h=h-1+j;a._fill.call(c,h);if(c.opt.precision){h=h-j+f;}a._roundStars.call(c,h);d.data("score",h);}else{a._fill.call(c,h);}a._target.call(c,h,g);if(c.opt.mouseover){c.opt.mouseover.call(c,h,g);}});},_callback:function(c){for(i in c){if(typeof this.opt[c[i]]==="function"){this.opt[c[i]]=this.opt[c[i]].call(this);}}},_createCancel:function(){var e=b(this),c=this.opt.path+this.opt.cancelOff,d=b("<img />",{src:c,alt:"x",title:this.opt.cancelHint,"class":"raty-cancel"});if(this.opt.cancelPlace=="left"){e.prepend(" ").prepend(d);}else{e.append(" ").append(d);}return d;},_createScore:function(){return b("<input />",{type:"hidden",name:this.opt.scoreName}).appendTo(this);},_createStars:function(){var e=b(this);for(var c=1;c<=this.opt.number;c++){var f=a._getHint.call(this,c),d=(this.opt.score&&this.opt.score>=c)?"starOn":"starOff";d=this.opt.path+this.opt[d];b("<img />",{src:d,alt:c,title:f}).appendTo(this);if(this.opt.space){e.append((c<this.opt.number)?" ":"");}}return e.children("img");},_error:function(c){b(this).html(c);b.error(c);},_fill:function(d){var m=this,e=0;for(var f=1;f<=m.stars.length;f++){var g=m.stars.eq(f-1),l=m.opt.single?(f==d):(f<=d);if(m.opt.iconRange&&m.opt.iconRange.length>e){var j=m.opt.iconRange[e],h=j.on||m.opt.starOn,c=j.off||m.opt.starOff,k=l?h:c;if(f<=j.range){g.attr("src",m.opt.path+k);}if(f==j.range){e++;}}else{var k=l?"starOn":"starOff";g.attr("src",this.opt.path+this.opt[k]);}}},_getHint:function(d){var c=this.opt.hints[d-1];return(c==="")?"":(c||d);},_lock:function(){var d=parseInt(this.score.val(),10),c=d?a._getHint.call(this,d):this.opt.noRatedMsg;b(this).data("readonly",true).css("cursor","").attr("title",c);this.score.attr("readonly","readonly");this.stars.attr("title",c);if(this.cancel){this.cancel.hide();}},_roundStars:function(e){var d=(e-Math.floor(e)).toFixed(2);if(d>this.opt.round.down){var c="starOn";if(this.opt.halfShow&&d<this.opt.round.up){c="starHalf";}else{if(d<this.opt.round.full){c="starOff";}}this.stars.eq(Math.ceil(e)-1).attr("src",this.opt.path+this.opt[c]);}},_target:function(f,d){if(this.opt.target){var e=b(this.opt.target);if(e.length===0){a._error.call(this,"Target selector invalid or missing!");}if(this.opt.targetFormat.indexOf("{score}")<0){a._error.call(this,'Template "{score}" missing!');}var c=d&&d.type=="mouseover";if(f===undefined){f=this.opt.targetText;}else{if(f===null){f=c?this.opt.cancelHint:this.opt.targetText;}else{if(this.opt.targetType=="hint"){f=a._getHint.call(this,Math.ceil(f));}else{if(this.opt.precision){f=parseFloat(f).toFixed(1);}}if(!c&&!this.opt.targetKeep){f=this.opt.targetText;}}}if(f){f=this.opt.targetFormat.toString().replace("{score}",f);}if(e.is(":input")){e.val(f);}else{e.html(f);}}},_unlock:function(){b(this).data("readonly",false).css("cursor","pointer").removeAttr("title");this.score.removeAttr("readonly","readonly");for(var c=0;c<this.opt.number;c++){this.stars.eq(c).attr("title",a._getHint.call(this,c+1));}if(this.cancel){this.cancel.css("display","");}},cancel:function(c){return this.each(function(){if(b(this).data("readonly")!==true){a[c?"click":"score"].call(this,null);this.score.removeAttr("value");}});},click:function(c){return b(this).each(function(){if(b(this).data("readonly")!==true){a._apply.call(this,c);if(!this.opt.click){a._error.call(this,'You must add the "click: function(score, evt) { }" callback.');}this.opt.click.call(this,c,{type:"click"});a._target.call(this,c);}});},destroy:function(){return b(this).each(function(){var d=b(this),c=d.data("raw");if(c){d.off(".raty").empty().css({cursor:c.style.cursor,width:c.style.width}).removeData("readonly");}else{d.data("raw",d.clone()[0]);}});},getScore:function(){var d=[],c;b(this).each(function(){c=this.score.val();d.push(c?parseFloat(c):undefined);});return(d.length>1)?d:d[0];},readOnly:function(c){return this.each(function(){var d=b(this);if(d.data("readonly")!==c){if(c){d.off(".raty").children("img").off(".raty");a._lock.call(this);}else{a._binds.call(this);a._unlock.call(this);}d.data("readonly",c);}});},reload:function(){return a.set.call(this,{});},score:function(){return arguments.length?a.setScore.apply(this,arguments):a.getScore.call(this);},set:function(c){return this.each(function(){var e=b(this),f=e.data("settings"),d=b.extend({},f,c);e.raty(d);});},setScore:function(c){return b(this).each(function(){if(b(this).data("readonly")!==true){a._apply.call(this,c);a._target.call(this,c);}});}};b.fn.raty=function(c){if(a[c]){return a[c].apply(this,Array.prototype.slice.call(arguments,1));}else{if(typeof c==="object"||!c){return a.init.apply(this,arguments);}else{b.error("Method "+c+" does not exist!");}}};b.fn.raty.defaults={cancel:false,cancelHint:"Cancel this rating!",cancelOff:"cancel-off.png",cancelOn:"cancel-on.png",cancelPlace:"left",click:undefined,half:false,halfShow:true,hints:["bad","poor","regular","good","gorgeous"],iconRange:undefined,mouseout:undefined,mouseover:undefined,noRatedMsg:"Not rated yet!",number:5,numberMax:20,path:"",precision:false,readOnly:false,round:{down:0.25,full:0.6,up:0.76},score:undefined,scoreName:"score",single:false,size:16,space:true,starHalf:"star-half.png",starOff:"star-off.png",starOn:"star-on.png",target:undefined,targetFormat:"{score}",targetKeep:false,targetText:"",targetType:"hint",width:undefined};})(jQuery);
diff --git a/sm-shop/src/main/webapp/resources/js/jquery.showLoading.min.js b/sm-shop/src/main/webapp/resources/js/jquery.showLoading.min.js
new file mode 100644
index 0000000..703d095
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery.showLoading.min.js
@@ -0,0 +1,34 @@
+/*
+ * jQuery showLoading plugin v1.0
+ *
+ * Copyright (c) 2009 Jim Keller
+ * Context - http://www.contextllc.com
+ *
+ * Dual licensed under the MIT and GPL licenses.
+ *
+ */
+jQuery.fn.showLoading=function(options){var indicatorID;var settings={'addClass':'','beforeShow':'','afterShow':'','hPos':'center','vPos':'center','indicatorZIndex':5001,'overlayZIndex':5000,'parent':'','marginTop':0,'marginLeft':0,'overlayWidth':null,'overlayHeight':null};jQuery.extend(settings,options);var loadingDiv=jQuery('<div></div>');var overlayDiv=jQuery('<div></div>');if(settings.indicatorID){indicatorID=settings.indicatorID;}
+else{indicatorID=jQuery(this).attr('id');}
+jQuery(loadingDiv).attr('id','loading-indicator-'+indicatorID);jQuery(loadingDiv).addClass('loading-indicator');if(settings.addClass){jQuery(loadingDiv).addClass(settings.addClass);}
+jQuery(overlayDiv).css('display','none');jQuery(document.body).append(overlayDiv);jQuery(overlayDiv).attr('id','loading-indicator-'+indicatorID+'-overlay');jQuery(overlayDiv).addClass('loading-indicator-overlay');if(settings.addClass){jQuery(overlayDiv).addClass(settings.addClass+'-overlay');}
+var overlay_width;var overlay_height;var border_top_width=jQuery(this).css('border-top-width');var border_left_width=jQuery(this).css('border-left-width');border_top_width=isNaN(parseInt(border_top_width))?0:border_top_width;border_left_width=isNaN(parseInt(border_left_width))?0:border_left_width;var overlay_left_pos=jQuery(this).offset().left+parseInt(border_left_width);var overlay_top_pos=jQuery(this).offset().top+parseInt(border_top_width);if(settings.overlayWidth!==null){overlay_width=settings.overlayWidth;}
+else{overlay_width=parseInt(jQuery(this).width())+parseInt(jQuery(this).css('padding-right'))+parseInt(jQuery(this).css('padding-left'));}
+if(settings.overlayHeight!==null){overlay_height=settings.overlayWidth;}
+else{overlay_height=parseInt(jQuery(this).height())+parseInt(jQuery(this).css('padding-top'))+parseInt(jQuery(this).css('padding-bottom'));}
+jQuery(overlayDiv).css('width',overlay_width.toString()+'px');jQuery(overlayDiv).css('height',overlay_height.toString()+'px');jQuery(overlayDiv).css('left',overlay_left_pos.toString()+'px');jQuery(overlayDiv).css('position','absolute');jQuery(overlayDiv).css('top',overlay_top_pos.toString()+'px');jQuery(overlayDiv).css('z-index',settings.overlayZIndex);if(settings.overlayCSS){jQuery(overlayDiv).css(settings.overlayCSS);}
+jQuery(loadingDiv).css('display','none');jQuery(document.body).append(loadingDiv);jQuery(loadingDiv).css('position','absolute');jQuery(loadingDiv).css('z-index',settings.indicatorZIndex);var indicatorTop=overlay_top_pos;if(settings.marginTop){indicatorTop+=parseInt(settings.marginTop);}
+var indicatorLeft=overlay_left_pos;if(settings.marginLeft){indicatorLeft+=parseInt(settings.marginTop);}
+if(settings.hPos.toString().toLowerCase()=='center'){jQuery(loadingDiv).css('left',(indicatorLeft+((jQuery(overlayDiv).width()-parseInt(jQuery(loadingDiv).width()))/2)).toString()+'px');}
+else if(settings.hPos.toString().toLowerCase()=='left'){jQuery(loadingDiv).css('left',(indicatorLeft+parseInt(jQuery(overlayDiv).css('margin-left'))).toString()+'px');}
+else if(settings.hPos.toString().toLowerCase()=='right'){jQuery(loadingDiv).css('left',(indicatorLeft+(jQuery(overlayDiv).width()-parseInt(jQuery(loadingDiv).width()))).toString()+'px');}
+else{jQuery(loadingDiv).css('left',(indicatorLeft+parseInt(settings.hPos)).toString()+'px');}
+if(settings.vPos.toString().toLowerCase()=='center'){jQuery(loadingDiv).css('top',(indicatorTop+((jQuery(overlayDiv).height()-parseInt(jQuery(loadingDiv).height()))/2)).toString()+'px');}
+else if(settings.vPos.toString().toLowerCase()=='top'){jQuery(loadingDiv).css('top',indicatorTop.toString()+'px');}
+else if(settings.vPos.toString().toLowerCase()=='bottom'){jQuery(loadingDiv).css('top',(indicatorTop+(jQuery(overlayDiv).height()-parseInt(jQuery(loadingDiv).height()))).toString()+'px');}
+else{jQuery(loadingDiv).css('top',(indicatorTop+parseInt(settings.vPos)).toString()+'px');}
+if(settings.css){jQuery(loadingDiv).css(settings.css);}
+var callback_options={'overlay':overlayDiv,'indicator':loadingDiv,'element':this};if(typeof(settings.beforeShow)=='function'){settings.beforeShow(callback_options);}
+jQuery(overlayDiv).show();jQuery(loadingDiv).show();if(typeof(settings.afterShow)=='function'){settings.afterShow(callback_options);}
+return this;};jQuery.fn.hideLoading=function(options){var settings={};jQuery.extend(settings,options);if(settings.indicatorID){indicatorID=settings.indicatorID;}
+else{indicatorID=jQuery(this).attr('id');}
+jQuery(document.body).find('#loading-indicator-'+indicatorID).remove();jQuery(document.body).find('#loading-indicator-'+indicatorID+'-overlay').remove();return this;};
diff --git a/sm-shop/src/main/webapp/resources/js/jquery-1.10.2.min.js b/sm-shop/src/main/webapp/resources/js/jquery-1.10.2.min.js
new file mode 100644
index 0000000..da41706
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery-1.10.2.min.js
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
diff --git a/sm-shop/src/main/webapp/resources/js/jquery-cookie.js b/sm-shop/src/main/webapp/resources/js/jquery-cookie.js
new file mode 100644
index 0000000..6739e3a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery-cookie.js
@@ -0,0 +1,81 @@
+/*jslint browser: true */ /*global jQuery: true */
+/**
+* jQuery Cookie plugin
+*
+* Copyright (c) 2010 Klaus Hartl (stilbuero.de)
+* Dual licensed under the MIT and GPL licenses:
+* http://www.opensource.org/licenses/mit-license.php
+* http://www.gnu.org/licenses/gpl.html
+*
+*/
+// TODO JsDoc
+/**
+* Create a cookie with the given key and value and other optional parameters.
+*
+* @example $.cookie('the_cookie', 'the_value');
+* @desc Set the value of a cookie.
+* @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+* @desc Create a cookie with all available options.
+* @example $.cookie('the_cookie', 'the_value');
+* @desc Create a session cookie.
+* @example $.cookie('the_cookie', null);
+* @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+* used when the cookie was set.
+*
+* @param String key The key of the cookie.
+* @param String value The value of the cookie.
+* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+* If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+* If set to null or omitted, the cookie will be a session cookie and will not be retained
+* when the the browser exits.
+* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+* require a secure protocol (like HTTPS).
+* @type undefined
+*
+* @name $.cookie
+* @cat Plugins/Cookie
+* @author Klaus Hartl/klaus.hartl@stilbuero.de
+*/
+/**
+* Get the value of a cookie with the given key.
+*
+* @example $.cookie('the_cookie');
+* @desc Get the value of a cookie.
+*
+* @param String key The key of the cookie.
+* @return The value of the cookie.
+* @type String
+*
+* @name $.cookie
+* @cat Plugins/Cookie
+* @author Klaus Hartl/klaus.hartl@stilbuero.de
+*/
+jQuery.cookie = function (key, value, options) {
+// key and at least value given, set cookie...
+if (arguments.length > 1 && String(value) !== "[object Object]") {
+options = jQuery.extend({}, options);
+if (value === null || value === undefined) {
+options.expires = -1;
+}
+if (typeof options.expires === 'number') {
+var days = options.expires, t = options.expires = new Date();
+t.setDate(t.getDate() + days);
+}
+value = String(value);
+return (document.cookie = [
+encodeURIComponent(key), '=',
+options.raw ? value : encodeURIComponent(value),
+options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
+options.path ? '; path=' + options.path : '',
+options.domain ? '; domain=' + options.domain : '',
+options.secure ? '; secure' : ''
+].join(''));
+}
+// key and possibly options given, get cookie...
+options = value || {};
+var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
+return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
+};
diff --git a/sm-shop/src/main/webapp/resources/js/jquery-sort-filter-plugin.js b/sm-shop/src/main/webapp/resources/js/jquery-sort-filter-plugin.js
new file mode 100644
index 0000000..0c74934
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/jquery-sort-filter-plugin.js
@@ -0,0 +1,21 @@
+(function($) {
+ $.fn.sorted = function(customOptions) {
+ var options = {
+ reversed: false,
+ by: function(a) { return a.text(); }
+ };
+ $.extend(options, customOptions);
+ $data = $(this);
+ arr = $data.get();
+ arr.sort(function(a, b) {
+ var valA = options.by($(a));
+ var valB = options.by($(b));
+ if (options.reversed) {
+ return (valA < valB) ? 1 : (valA > valB) ? -1 : 0;
+ } else {
+ return (valA < valB) ? -1 : (valA > valB) ? 1 : 0;
+ }
+ });
+ return $(arr);
+ };
+})(jQuery);
\ No newline at end of file
sm-shop/src/main/webapp/resources/js/json2.js 482(+482 -0)
diff --git a/sm-shop/src/main/webapp/resources/js/json2.js b/sm-shop/src/main/webapp/resources/js/json2.js
new file mode 100755
index 0000000..a1a3b17
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/json2.js
@@ -0,0 +1,482 @@
+/*
+ http://www.JSON.org/json2.js
+ 2010-03-20
+
+ Public Domain.
+
+ NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+ See http://www.JSON.org/js.html
+
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or ' '),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the value
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+*/
+
+/*jslint evil: true, strict: false */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, prototype, push, replace, slice, stringify,
+ test, toJSON, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (!this.JSON) {
+ this.JSON = {};
+}
+
+(function () {
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ if (typeof Date.prototype.toJSON !== 'function') {
+
+ Date.prototype.toJSON = function (key) {
+
+ return isFinite(this.valueOf()) ?
+ this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z' : null;
+ };
+
+ String.prototype.toJSON =
+ Number.prototype.toJSON =
+ Boolean.prototype.toJSON = function (key) {
+ return this.valueOf();
+ };
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ?
+ '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string' ? c :
+ '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' :
+ '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0 ? '[]' :
+ gap ? '[\n' + gap +
+ partial.join(',\n' + gap) + '\n' +
+ mind + ']' :
+ '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+ if (typeof k === 'string') {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0 ? '{}' :
+ gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
+ mind + '}' : '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ text = String(text);
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/.
+test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
+replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
+replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function' ?
+ walk({'': j}, '') : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+}());
diff --git a/sm-shop/src/main/webapp/resources/js/login.js b/sm-shop/src/main/webapp/resources/js/login.js
new file mode 100644
index 0000000..ae98d05
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/login.js
@@ -0,0 +1,54 @@
+ $(function() {
+
+ $("#signinDrop").click(function(e){
+ $("#loginError").hide();
+ e.preventDefault();
+ });
+
+ $("#login").submit(function(e) {
+ e.preventDefault();//do not submit form
+
+ $("#loginError").hide();
+
+ var userName = $(this).find('#userName').val();
+ var password = $(this).find('#password').val();
+ var storeCode = $(this).find('#storeCode').val();
+ if(userName=='' || password=='') {
+ $("#loginError").html(getLoginErrorLabel());
+ $("#loginError").show();
+ return;
+ }
+
+ $('#signinPane').showLoading();
+
+ $.ajax({
+ type: "POST",
+ //my version
+ url: getContextPath() + "/shop/customer/logon.html",
+ data: "userName=" + userName + "&password=" + password + "&storeCode=" + storeCode,
+ cache:false,
+ dataType:'json',
+ 'success': function(response) {
+ $('#signinPane').hideLoading();
+ //console.log(response);
+ if (response.response.status==0) {//success
+ //SHOPPING_CART
+ console.log(response.response.SHOPPING_CART);
+ if(response.response.SHOPPING_CART!=null && response.response.SHOPPING_CART != ""){
+ //console.log('saving cart ' + response.response.SHOPPING_CART);
+ /** save cart in cookie **/
+ var cartCode = buildCartCode(response.response.SHOPPING_CART);
+ $.cookie('cart',cartCode, { expires: 1024, path:'/' });
+
+ }
+ //console.log('href -> ' + $(location).attr('href'));
+ location.href= $(location).attr('href');
+ } else {
+ $("#loginError").html(getLoginErrorLabel());
+ $("#loginError").show();
+ }
+ }
+ });
+ return false;
+ });
+ });
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/product.js b/sm-shop/src/main/webapp/resources/js/product.js
new file mode 100644
index 0000000..1123f45
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/product.js
@@ -0,0 +1,84 @@
+
+ function initProduct(productId, div) {
+
+ calculatePrice(productId, div);
+
+ $(div + ' select').change(function(e) { // select element changed
+ calculatePrice(productId, div);
+ });
+
+ $(div + ' :radio').change(function(e) { // radio changed
+ calculatePrice(productId, div);
+ });
+
+ $(div + ' :checkbox').change(function(e) { // radio changed
+ calculatePrice(productId, div);
+ });
+
+ }
+
+
+ function calculatePrice(productId, div) {
+
+
+ var values = new Array();
+ i = 0;
+ $(div).find(':input').each(function(){
+ if($(this).hasClass('attribute')) {
+ if($(this).is(':checkbox')) {
+ var checkboxSelected = $(this).is(':checked');
+ if(checkboxSelected==true) {
+ values[i] = $(this).val();
+ //console.log('checkbox ' + values[i]);
+ i++;
+ }
+
+ } else if ($(this).is(':radio')) {
+ var radioChecked = $(this).is(':checked');
+ if(radioChecked==true) {
+ values[i] = $(this).val();
+ //console.log('radio ' + values[i]);
+ i++;
+ }
+ } else {
+ if($(this).val()) {
+ values[i] = $(this).val();
+ //console.log('select ' + values[i]);
+ i++;
+ }
+
+ }
+ }
+
+ });
+
+ if(values.length==0) {
+ return;
+ }
+
+ $(div).showLoading();
+
+ $.ajax({
+ type: 'POST',
+ url: getContextPath() + '/shop/product/' + productId + '/calculatePrice.html',
+ dataType: 'json',
+ data:{"attributeIds":values},
+ cache:false,
+ error: function(e) {
+ $(div).hideLoading();
+ console.log('Error while loading price');
+
+ },
+ success: function(price) {
+ $(div).hideLoading();
+ //console.log('product price ' + price.finalPrice);
+ var displayPrice = '<span itemprop="price">' + price.finalPrice + '</span>';
+ if(price.discounted) {
+ displayPrice = '<del>' + price.originalPrice + '</del> <span class="specialPrice"><span itemprop="price">' + price.finalPrice + '</span></span>';
+ }
+ $('#productPrice').html(displayPrice);
+ }
+ });
+
+
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/registration.js b/sm-shop/src/main/webapp/resources/js/registration.js
new file mode 100644
index 0000000..3de7790
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/registration.js
@@ -0,0 +1,64 @@
+ /**
+ * registration functionality for storefront
+ */
+
+
+$.fn.addZoneItems = function(div, data, defaultValue) {
+ //console.log('Populating div ' + div + ' defaultValue ' + defaultValue);
+ var selector = div + ' > option';
+ var defaultExist = false;
+ $(selector).remove();
+ return this.each(function() {
+ var list = this;
+ $.each(data, function(index, itemData) {
+ //console.log(itemData.code + ' ' + defaultValue);
+ if(itemData.code==defaultValue) {
+ defaultExist = true;
+ }
+ var option = new Option(itemData.name, itemData.code);
+ list.add(option);
+ });
+ if(defaultExist && (defaultValue!=null && defaultValue!='')) {
+ $(div).val(defaultValue);
+ }
+ });
+};
+
+
+function getZones(countryCode, zoneCode){
+ $("#registration_zones option").remove();
+ var url=getContextPath() + '/shop/reference/provinces.html';
+ var data='countryCode=' + countryCode + '&lang=' + getLanguageCode();
+
+ $.ajax({
+ type: 'POST',
+ url: url,
+ data: data,
+ dataType: 'json',
+ success: function(responseObj){
+
+ if((responseObj.response.status == 0 || responseObj.response.status ==9999) && responseObj.response.data){
+ $("#registration_zones option").remove();
+ $('#registration_zones').show();
+ $('#hidden_registration_zones').hide();
+
+ //var zone = $('#registration_zones');
+ $('#registration_zones').addZoneItems('#registration_zones', responseObj.response.data, zoneCode);
+
+ } else {
+ $('#registration_zones').hide();
+ $('#hidden_registration_zones').show();
+ }
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ alert('error ' + errorThrown);
+ }
+
+
+ });
+
+}
+
+
+
+
diff --git a/sm-shop/src/main/webapp/resources/js/shop-customer.js b/sm-shop/src/main/webapp/resources/js/shop-customer.js
new file mode 100644
index 0000000..1013615
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/shop-customer.js
@@ -0,0 +1,101 @@
+ function isCustomerFormValid(formId) {
+ var $inputs = $(formId).find(':input');
+ var errorMessage = null;
+ $inputs.each(function() {
+ if($(this).hasClass('required')) {
+
+ //console.log($(this).attr('id') + ' - ' + $(this).css('display'));
+
+ var fieldValid = isFieldValid($(this));
+ if(!fieldValid) {
+ if(errorMessage==null) {
+ if($(this).attr('title')) {
+ errorMessage = $(this).attr('title');
+ }
+ }
+ }
+ }
+
+ //if has class email
+ if($(this).hasClass('email')) {
+ var emailValid = validateEmail($(this).val());
+ //console.log('Email is valid ? ' + emailValid);
+ if(!emailValid) {
+ if(errorMessage==null) {
+ errorMessage = getInvalidEmailMessage();
+ }
+ }
+ }
+
+ //user name
+ if($(this).hasClass('userName')) {
+ if($(this).val().length<6) {
+ if(errorMessage==null) {
+ errorMessage = getInvalidUserNameMessage();
+ }
+ }
+ }
+
+ //password rules
+ if($(this).hasClass('password')) {
+ //console.log('check password ' + $(this).val().length);
+ if($(this).val().length<6) {
+ if(errorMessage==null) {
+ errorMessage = getInvalidPasswordMessage();
+ }
+ }
+ }
+
+ //repeat password
+ if($(this).hasClass('checkPassword')) {
+ //console.log('In check p[assword ' + + $(this).val().length)
+ var pass = $('.password').val();
+ if($(this).val().length<6 || ($(this).val()!=pass)) {
+ if(errorMessage==null) {
+ errorMessage = getInvalidCheckPasswordMessage();
+ }
+ }
+ }
+ });
+
+ return errorMessage;
+ }
+
+
+ function isFieldValid(field) {
+ if(field.is(":hidden")) {
+ return true;
+ }
+ var value = field.val();
+ if(!emptyString(value)) {
+ field.css('background-color', '#FFF');
+ return true;
+ } else {
+ field.css('background-color', '#FFC');
+ return false;
+ }
+}
+
+ function setCountrySettings(prefix, countryCode) {
+ //add masks to your country
+ //console.log('Apply mask ' + countryCode);
+
+ var phoneSelector = '.' + prefix + '-phone';
+ var postalCodeSelector = '.' + prefix + '-postalCode';
+
+ if(countryCode=='CA') {//mask for canada
+ $(phoneSelector).mask("?(999) 999-9999");
+ $(postalCodeSelector).mask("?*** ***");
+ return;
+ }
+ if(countryCode=='US') {// mask for united states
+ $(phoneSelector).mask("?(999) 999-9999");
+ $(postalCodeSelector).mask("?99999");
+ return;
+ }
+
+ $(phoneSelector).unmask();
+ $(postalCodeSelector).unmask();
+
+
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/js/shop-functions.js b/sm-shop/src/main/webapp/resources/js/shop-functions.js
new file mode 100644
index 0000000..3df6a1c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/shop-functions.js
@@ -0,0 +1,91 @@
+function validateEmail($email) {
+ var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
+ if ( $email.length > 0 && emailReg.test($email)) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function emptyString($value) {
+ return !$value || !/[^\s]+/.test($value);
+}
+
+function loadProducts(url,divProductsContainer) {
+ $(divProductsContainer).showLoading();
+
+ $.ajax({
+ type: 'POST',
+ dataType: "json",
+ url: url,
+ success: function(productList) {
+
+ buildProductsList(productList,divProductsContainer);
+ callBackLoadProducts(productList);
+
+
+ },
+ error: function(jqXHR,textStatus,errorThrown) {
+ $(divProductsContainer).hideLoading();
+ alert('Error ' + jqXHR + "-" + textStatus + "-" + errorThrown);
+ }
+
+ });
+
+
+
+}
+
+
+function searchProducts(url,divProductsContainer,q,filter) {
+
+ $(divProductsContainer).showLoading();
+
+ if(q==null || q=='') {
+ return;
+ }
+
+ //category facets
+ var facets = '\"facets\" : { \"categories\" : { \"terms\" : {\"field\" : \"categories\"}}}';
+ var highlights = null;
+ var queryStart = '{';
+
+ var query = '\"query\":{\"query_string\" : {\"fields\" : [\"name^3\", \"description\", \"tags\"], \"query\" : \"*' + q + '*", \"use_dis_max\" : true }}';
+ if(filter!=null && filter!='') {
+ //query = '\"query\":{\"filtered\":{\"query\":{\"text\":{\"_all\":\"' + q + '\"}},' + filter + '}}';
+ query = query + ',' + filter + '}}';
+ }
+
+ if(facets!=null && facets!='') {
+ query = query + ',' + facets;
+ }
+
+ var queryEnd = '}';
+
+ query = queryStart + query + queryEnd;
+
+ $.ajax({
+ cache: false,
+ type:"POST",
+ dataType:"json",
+ url:url,
+ data:query,
+ contentType:"application/json;charset=UTF-8",
+ success: function(productList) {
+
+ buildProductsList(productList,divProductsContainer, null);
+ callBackSearchProducts(productList);
+
+
+ },
+ error: function(jqXHR,textStatus,errorThrown) {
+ $(divProductsContainer).hideLoading();
+ alert('Error ' + jqXHR + "-" + textStatus + "-" + errorThrown);
+ }
+
+ });
+
+
+
+}
+
diff --git a/sm-shop/src/main/webapp/resources/js/shopping-cart.js b/sm-shop/src/main/webapp/resources/js/shopping-cart.js
new file mode 100644
index 0000000..d579f39
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/shopping-cart.js
@@ -0,0 +1,392 @@
+
+
+
+ $(function(){
+
+ initBindings();
+ initMiniCart();
+
+ });
+
+ function initMiniCart() {
+ var cartCode = getCartCode();
+ //console.log('Cart code ' + cartCode);
+ if(cartCode!=null) {
+ displayMiniCartSummary(cartCode);
+ }
+
+ }
+
+ function removeCart() {
+
+ var cartCode = getCartCode();
+ if(cartCode!=null) {
+ emptyCartLabel();
+ $.cookie('cart',null, { expires: 1, path:'/' });
+ }
+
+ }
+
+ function initBindings() {
+
+ /** add to cart **/
+ $(".addToCart").click(function(){
+ addToCart($(this).attr("productId"));
+ });
+
+ $("#open-cart").click(function(e) {
+ displayMiniCart();
+ });
+
+ }
+
+ /**
+ * Function used for adding a product to the Shopping Cart
+ */
+ function addToCart(sku) {
+ $('#pageContainer').showLoading();
+ var qty = '#qty-productId-'+ sku;
+ var quantity = $(qty).val();
+ if(!quantity || quantity==null || quantity==0) {
+ quantity = 1;
+ }
+
+ var formId = '#input-' + sku;
+ //var $inputs = $(formId);
+ var $inputs = $(formId).find(':input');
+
+ var values = new Array();
+ if($inputs.length>0) {//check for attributes
+ i = 0;
+ $inputs.each(function() { //attributes
+ if($(this).hasClass('attribute')) {
+ //if($(this).hasClass('required') && !$(this).is(':checked')) {
+ // $(this).parent().css('border', '1px solid red');
+ //}
+ if($(this).is(':checkbox')) {
+ var checkboxSelected = $(this).is(':checked');
+ if(checkboxSelected==true) {
+ values[i] = $(this).val();
+ //console.log('checkbox ' + values[i]);
+ i++;
+ }
+
+ } else if ($(this).is(':radio')) {
+ var radioChecked = $(this).is(':checked');
+ if(radioChecked==true) {
+ values[i] = $(this).val();
+ //console.log('radio ' + values[i]);
+ i++;
+ }
+ } else {
+ if($(this).val()) {
+ values[i] = $(this).val();
+ //console.log('select ' + values[i]);
+ i++;
+ }
+ }
+ }
+ });
+ }
+
+ var cartCode = getCartCode();
+
+
+ /**
+ * shopping cart code identifier is <cart>_<storeId>
+ * need to check if the cookie is for the appropriate store
+ */
+
+ //cart item
+ var prefix = "{";
+ var suffix = "}";
+ var shoppingCartItem = '';
+
+ if(cartCode!=null && cartCode != '') {
+ shoppingCartItem = '"code":' + '"' + cartCode + '"'+',';
+ }
+ var shoppingCartItem = shoppingCartItem + '"quantity":' + quantity + ',';
+ var shoppingCartItem = shoppingCartItem + '"productId":' + sku;
+
+
+ var attributes = null;
+ //cart attributes
+ if(values.length>0) {
+ attributes = '[';
+ for (var i = 0; i < values.length; i++) {
+ var shoppingAttribute= prefix + '"attributeId":' + values[i] + suffix ;
+ if(values.length>1 && i < values.length-1){
+ shoppingAttribute = shoppingAttribute + ',';
+ }
+ attributes = attributes + shoppingAttribute;
+ }
+ attributes = attributes + ']';
+ }
+
+ if(attributes!=null) {
+ shoppingCartItem = shoppingCartItem + ',"shoppingCartAttributes":' + attributes;
+ }
+
+ var scItem = prefix + shoppingCartItem + suffix;
+
+ /** debug add to cart **/
+ //console.log(scItem);
+
+
+ $.ajax({
+ type: 'POST',
+ url: getContextPath() + '/shop/cart/addShoppingCartItem.html',
+ data: scItem,
+ contentType: 'application/json;charset=utf-8',
+ dataType: 'json',
+ cache:false,
+ error: function(e) {
+ console.log('Error while adding to cart');
+ $('#pageContainer').hideLoading();
+ alert('failure');
+
+ },
+ success: function(cart) {
+
+ saveCart(cart.code);
+
+ if(cart.message!=null) {
+ //TODO error message
+ console.log('Error while adding to cart ' + cart.message);
+ }
+
+ displayShoppigCartItems(cart,'#shoppingcartProducts');
+ displayTotals(cart);
+ $('#pageContainer').hideLoading();
+ }
+ });
+
+ }
+
+function removeLineItem(lineItemId){
+ $( "#shoppingCartRemoveLineitem_"+lineItemId).submit();
+}
+
+function updateLineItem(lineItemId,actionURL){
+ $("#shoppingCartLineitem_"+lineItemId).attr('action', actionURL);
+ $( "#shoppingCartLineitem_"+lineItemId).submit();
+}
+
+//update full cart
+function updateCart(cartDiv) {
+ $('.alert-error').hide();
+ $('.quantity').removeClass('required');
+ $('#mainCartTable').showLoading();
+ var inputs = $(cartDiv).find('.quantity');
+ var cartCode = getCartCode();
+ if(inputs !=null && cartCode!=null) {
+ var items = new Array();
+ for(var i = 0; i< inputs.length; i++) {
+ var item = new Object();
+ var qty = inputs[i].value;
+ if(qty =='' || qty<1) {
+ $('#' + inputs[i].id).addClass('required');
+ $('#mainCartTable').hideLoading();
+ return;
+ }
+ var id = inputs[i].id;
+
+ item.id = id;
+ item.quantity = qty;
+ item.code=cartCode;
+ items[i] = item;
+ }
+ //update cart
+ json_data = JSON.stringify(items);
+
+ $.ajax({
+ type: 'POST',
+ url: getContextPath() + '/shop/cart/updateShoppingCartItem.html',
+ data: json_data,
+ contentType: 'application/json;charset=utf-8',
+ dataType: 'json',
+ cache:false,
+ error: function(e) {
+ console.log('error ' + e);
+ $('#mainCartTable').hideLoading();
+ },
+ success: function(response) {
+ $('#mainCartTable').hideLoading();
+ if(response.response.status==-1) {
+ $('.alert-error').show();
+ } else {
+ location.href= getContextPath() + '/shop/cart/shoppingCart.html';
+ }
+ }
+ });
+
+ }
+}
+
+function displayMiniCart(){
+ var cartCode = getCartCode();
+
+ if(cartCode==null) {
+ emptyCartLabel();
+ return;
+ }
+
+
+
+
+ $('#shoppingcartProducts').html('');
+ $('#cart-box').addClass('loading-indicator-overlay');/** manage manually cart loading**/
+ $('#cartShowLoading').show();
+
+ $.ajax({
+ type: 'GET',
+ url: getContextPath() + '/shop/cart/displayMiniCartByCode.html?shoppingCartCode='+cartCode,
+ cache:false,
+ error: function(e) {
+ $('#cart-box').removeClass('loading-indicator-overlay');/** manage manually cart loading**/
+ $('#cartShowLoading').hide();
+ console.log('error ' + e);
+ //nothing
+
+ },
+ success: function(miniCart) {
+ if($.isEmptyObject(miniCart)){
+ emptyCartLabel();
+ }
+ else{
+ displayShoppigCartItems(miniCart,'#shoppingcartProducts');//cart content
+ displayTotals(miniCart);//header
+ }
+ $('#cart-box').removeClass('loading-indicator-overlay');/** manage manually cart loading**/
+ $('#cartShowLoading').hide();
+ }
+ });
+}
+
+
+
+ /**
+ * JS function responsible for removing give line item from
+ * the Cart.
+ * For more details see MiniCartController.
+ *
+ * Controller will return JSON as response and it will be parsed to update
+ * mini-cart section.
+ * @param lineItemId
+ */
+function removeItemFromMinicart(lineItemId){
+
+ shoppingCartCode = getCartCode();
+ $.ajax({
+ type: 'GET',
+ cache:false,
+ url: getContextPath() + '/shop/cart/removeMiniShoppingCartItem.html?lineItemId='+lineItemId + '&shoppingCartCode=' + shoppingCartCode,
+ error: function(e) {
+ console.log('error ' + e);
+
+ },
+ success: function(miniCart) {
+ if(miniCart==null) {
+ emptyCartLabel();
+ } else {
+ if(miniCart.shoppingCartItems!=null) {
+ displayShoppigCartItems(miniCart,'#shoppingcartProducts');
+ displayTotals(miniCart);
+ } else {
+ emptyCartLabel();
+ }
+ }
+ }
+ });
+}
+
+function displayMiniCartSummary(code){
+ $.ajax({
+ type: 'GET',
+ url: getContextPath() + '/shop/cart/displayMiniCartByCode.html?shoppingCartCode='+code,
+ error: function(e) {
+ // do nothing
+ console('error while getting cart');
+
+ },
+ success: function(cart) {
+ if(cart==null || cart=='') {
+ emptyCartLabel();
+ $.cookie('cart',null, { expires: 1, path:'/' });
+ } else {
+ displayTotals(cart);
+ }
+ }
+ });
+}
+
+
+
+
+
+function viewShoppingCartPage(){
+ window.location.href=getContextPath() + '/shop/cart/shoppingCart.html';
+
+}
+
+
+function displayShoppigCartItems(cart, div) {
+
+
+ //set cart contextPath
+ cart.contextPath=getContextPath();
+ var template = Hogan.compile(document.getElementById("miniShoppingCartTemplate").innerHTML);
+
+
+ $(div).html('');
+ if(cart.shoppingCartItems==null) {
+ emptyCartLabel();
+ return;
+ }
+
+ $('#cartMessage').hide();
+ $('#shoppingcart').show();
+
+ //call template defined in template directory
+ $(div).append(template.render(cart));
+
+
+}
+
+function displayTotals(cart) {
+ if(cart.quantity==0) {
+ emptyCartLabel();
+ } else {
+ cartInfoLabel(cart);
+ $('#total-box').html(cartSubTotal(cart));
+ }
+
+
+}
+
+
+/** returns the cart code **/
+function getCartCode() {
+
+ var cart = $.cookie('cart'); //should be [storecode_cartid]
+ var code = new Array();
+
+ if(cart!=null) {
+ code = cart.split('_');
+ if(code[0]==getMerchantStoreCode()) {
+ return code[1];
+ }
+ }
+}
+
+function buildCartCode(code) {
+ var cartCode = getMerchantStoreCode() + '_' + code;
+ return cartCode;
+}
+
+function saveCart(code) {
+ var cartCode = buildCartCode(code);
+ $.cookie('cart',cartCode, { expires: 1024, path:'/' });
+}
+
+
diff --git a/sm-shop/src/main/webapp/resources/js/typeahead.min.js b/sm-shop/src/main/webapp/resources/js/typeahead.min.js
new file mode 100644
index 0000000..c085f8a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/js/typeahead.min.js
@@ -0,0 +1,7 @@
+/*!
+ * typeahead.js 0.9.3
+ * https://github.com/twitter/typeahead
+ * Copyright 2013 Twitter, Inc. and other contributors; Licensed MIT
+ */
+
+!function(a){var b="0.9.3",c={isMsie:function(){var a=/(msie) ([\w.]+)/i.exec(navigator.userAgent);return a?parseInt(a[2],10):!1},isBlankString:function(a){return!a||/^\s*$/.test(a)},escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(a){return"string"==typeof a},isNumber:function(a){return"number"==typeof a},isArray:a.isArray,isFunction:a.isFunction,isObject:a.isPlainObject,isUndefined:function(a){return"undefined"==typeof a},bind:a.proxy,bindAll:function(b){var c;for(var d in b)a.isFunction(c=b[d])&&(b[d]=a.proxy(c,b))},indexOf:function(a,b){for(var c=0;c<a.length;c++)if(a[c]===b)return c;return-1},each:a.each,map:a.map,filter:a.grep,every:function(b,c){var d=!0;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?void 0:!1}),!!d):d},some:function(b,c){var d=!1;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?!1:void 0}),!!d):d},mixin:a.extend,getUniqueId:function(){var a=0;return function(){return a++}}(),defer:function(a){setTimeout(a,0)},debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},throttle:function(a,b){var c,d,e,f,g,h;return g=0,h=function(){g=new Date,e=null,f=a.apply(c,d)},function(){var i=new Date,j=b-(i-g);return c=this,d=arguments,0>=j?(clearTimeout(e),e=null,g=i,f=a.apply(c,d)):e||(e=setTimeout(h,j)),f}},tokenizeQuery:function(b){return a.trim(b).toLowerCase().split(/[\s]+/)},tokenizeText:function(b){return a.trim(b).toLowerCase().split(/[\s\-_]+/)},getProtocol:function(){return location.protocol},noop:function(){}},d=function(){var a=/\s+/;return{on:function(b,c){var d;if(!c)return this;for(this._callbacks=this._callbacks||{},b=b.split(a);d=b.shift();)this._callbacks[d]=this._callbacks[d]||[],this._callbacks[d].push(c);return this},trigger:function(b,c){var d,e;if(!this._callbacks)return this;for(b=b.split(a);d=b.shift();)if(e=this._callbacks[d])for(var f=0;f<e.length;f+=1)e[f].call(this,{type:d,data:c});return this}}}(),e=function(){function b(b){b&&b.el||a.error("EventBus initialized without el"),this.$el=a(b.el)}var d="typeahead:";return c.mixin(b.prototype,{trigger:function(a){var b=[].slice.call(arguments,1);this.$el.trigger(d+a,b)}}),b}(),f=function(){function a(a){this.prefix=["__",a,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+this.prefix)}function b(){return(new Date).getTime()}function d(a){return JSON.stringify(c.isUndefined(a)?null:a)}function e(a){return JSON.parse(a)}var f,g;try{f=window.localStorage,f.setItem("~~~","!"),f.removeItem("~~~")}catch(h){f=null}return g=f&&window.JSON?{_prefix:function(a){return this.prefix+a},_ttlKey:function(a){return this._prefix(a)+this.ttlKey},get:function(a){return this.isExpired(a)&&this.remove(a),e(f.getItem(this._prefix(a)))},set:function(a,e,g){return c.isNumber(g)?f.setItem(this._ttlKey(a),d(b()+g)):f.removeItem(this._ttlKey(a)),f.setItem(this._prefix(a),d(e))},remove:function(a){return f.removeItem(this._ttlKey(a)),f.removeItem(this._prefix(a)),this},clear:function(){var a,b,c=[],d=f.length;for(a=0;d>a;a++)(b=f.key(a)).match(this.keyMatcher)&&c.push(b.replace(this.keyMatcher,""));for(a=c.length;a--;)this.remove(c[a]);return this},isExpired:function(a){var d=e(f.getItem(this._ttlKey(a)));return c.isNumber(d)&&b()>d?!0:!1}}:{get:c.noop,set:c.noop,remove:c.noop,clear:c.noop,isExpired:c.noop},c.mixin(a.prototype,g),a}(),g=function(){function a(a){c.bindAll(this),a=a||{},this.sizeLimit=a.sizeLimit||10,this.cache={},this.cachedKeysByAge=[]}return c.mixin(a.prototype,{get:function(a){return this.cache[a]},set:function(a,b){var c;this.cachedKeysByAge.length===this.sizeLimit&&(c=this.cachedKeysByAge.shift(),delete this.cache[c]),this.cache[a]=b,this.cachedKeysByAge.push(a)}}),a}(),h=function(){function b(a){c.bindAll(this),a=c.isString(a)?{url:a}:a,i=i||new g,h=c.isNumber(a.maxParallelRequests)?a.maxParallelRequests:h||6,this.url=a.url,this.wildcard=a.wildcard||"%QUERY",this.filter=a.filter,this.replace=a.replace,this.ajaxSettings={type:"get",cache:a.cache,timeout:a.timeout,dataType:a.dataType||"json",beforeSend:a.beforeSend},this._get=(/^throttle$/i.test(a.rateLimitFn)?c.throttle:c.debounce)(this._get,a.rateLimitWait||300)}function d(){j++}function e(){j--}function f(){return h>j}var h,i,j=0,k={};return c.mixin(b.prototype,{_get:function(a,b){function c(c){var e=d.filter?d.filter(c):c;b&&b(e),i.set(a,c)}var d=this;f()?this._sendRequest(a).done(c):this.onDeckRequestArgs=[].slice.call(arguments,0)},_sendRequest:function(b){function c(){e(),k[b]=null,f.onDeckRequestArgs&&(f._get.apply(f,f.onDeckRequestArgs),f.onDeckRequestArgs=null)}var f=this,g=k[b];return g||(d(),g=k[b]=a.ajax(b,this.ajaxSettings).always(c)),g},get:function(a,b){var d,e,f=this,g=encodeURIComponent(a||"");return b=b||c.noop,d=this.replace?this.replace(this.url,g):this.url.replace(this.wildcard,g),(e=i.get(d))?c.defer(function(){b(f.filter?f.filter(e):e)}):this._get(d,b),!!e}}),b}(),i=function(){function d(b){c.bindAll(this),c.isString(b.template)&&!b.engine&&a.error("no template engine specified"),b.local||b.prefetch||b.remote||a.error("one of local, prefetch, or remote is required"),this.name=b.name||c.getUniqueId(),this.limit=b.limit||5,this.minLength=b.minLength||1,this.header=b.header,this.footer=b.footer,this.valueKey=b.valueKey||"value",this.template=e(b.template,b.engine,this.valueKey),this.local=b.local,this.prefetch=b.prefetch,this.remote=b.remote,this.itemHash={},this.adjacencyList={},this.storage=b.name?new f(b.name):null}function e(a,b,d){var e,f;return c.isFunction(a)?e=a:c.isString(a)?(f=b.compile(a),e=c.bind(f.render,f)):e=function(a){return"<p>"+a[d]+"</p>"},e}var g={thumbprint:"thumbprint",protocol:"protocol",itemHash:"itemHash",adjacencyList:"adjacencyList"};return c.mixin(d.prototype,{_processLocalData:function(a){this._mergeProcessedData(this._processData(a))},_loadPrefetchData:function(d){function e(a){var b=d.filter?d.filter(a):a,e=m._processData(b),f=e.itemHash,h=e.adjacencyList;m.storage&&(m.storage.set(g.itemHash,f,d.ttl),m.storage.set(g.adjacencyList,h,d.ttl),m.storage.set(g.thumbprint,n,d.ttl),m.storage.set(g.protocol,c.getProtocol(),d.ttl)),m._mergeProcessedData(e)}var f,h,i,j,k,l,m=this,n=b+(d.thumbprint||"");return this.storage&&(f=this.storage.get(g.thumbprint),h=this.storage.get(g.protocol),i=this.storage.get(g.itemHash),j=this.storage.get(g.adjacencyList)),k=f!==n||h!==c.getProtocol(),d=c.isString(d)?{url:d}:d,d.ttl=c.isNumber(d.ttl)?d.ttl:864e5,i&&j&&!k?(this._mergeProcessedData({itemHash:i,adjacencyList:j}),l=a.Deferred().resolve()):l=a.getJSON(d.url).done(e),l},_transformDatum:function(a){var b=c.isString(a)?a:a[this.valueKey],d=a.tokens||c.tokenizeText(b),e={value:b,tokens:d};return c.isString(a)?(e.datum={},e.datum[this.valueKey]=a):e.datum=a,e.tokens=c.filter(e.tokens,function(a){return!c.isBlankString(a)}),e.tokens=c.map(e.tokens,function(a){return a.toLowerCase()}),e},_processData:function(a){var b=this,d={},e={};return c.each(a,function(a,f){var g=b._transformDatum(f),h=c.getUniqueId(g.value);d[h]=g,c.each(g.tokens,function(a,b){var d=b.charAt(0),f=e[d]||(e[d]=[h]);!~c.indexOf(f,h)&&f.push(h)})}),{itemHash:d,adjacencyList:e}},_mergeProcessedData:function(a){var b=this;c.mixin(this.itemHash,a.itemHash),c.each(a.adjacencyList,function(a,c){var d=b.adjacencyList[a];b.adjacencyList[a]=d?d.concat(c):c})},_getLocalSuggestions:function(a){var b,d=this,e=[],f=[],g=[];return c.each(a,function(a,b){var d=b.charAt(0);!~c.indexOf(e,d)&&e.push(d)}),c.each(e,function(a,c){var e=d.adjacencyList[c];return e?(f.push(e),(!b||e.length<b.length)&&(b=e),void 0):!1}),f.length<e.length?[]:(c.each(b,function(b,e){var h,i,j=d.itemHash[e];h=c.every(f,function(a){return~c.indexOf(a,e)}),i=h&&c.every(a,function(a){return c.some(j.tokens,function(b){return 0===b.indexOf(a)})}),i&&g.push(j)}),g)},initialize:function(){var b;return this.local&&this._processLocalData(this.local),this.transport=this.remote?new h(this.remote):null,b=this.prefetch?this._loadPrefetchData(this.prefetch):a.Deferred().resolve(),this.local=this.prefetch=this.remote=null,this.initialize=function(){return b},b},getSuggestions:function(a,b){function d(a){f=f.slice(0),c.each(a,function(a,b){var d,e=g._transformDatum(b);return d=c.some(f,function(a){return e.value===a.value}),!d&&f.push(e),f.length<g.limit}),b&&b(f)}var e,f,g=this,h=!1;a.length<this.minLength||(e=c.tokenizeQuery(a),f=this._getLocalSuggestions(e).slice(0,this.limit),f.length<this.limit&&this.transport&&(h=this.transport.get(a,d)),!h&&b&&b(f))}}),d}(),j=function(){function b(b){var d=this;c.bindAll(this),this.specialKeyCodeMap={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"},this.$hint=a(b.hint),this.$input=a(b.input).on("blur.tt",this._handleBlur).on("focus.tt",this._handleFocus).on("keydown.tt",this._handleSpecialKeyEvent),c.isMsie()?this.$input.on("keydown.tt keypress.tt cut.tt paste.tt",function(a){d.specialKeyCodeMap[a.which||a.keyCode]||c.defer(d._compareQueryToInputValue)}):this.$input.on("input.tt",this._compareQueryToInputValue),this.query=this.$input.val(),this.$overflowHelper=e(this.$input)}function e(b){return a("<span></span>").css({position:"absolute",left:"-9999px",visibility:"hidden",whiteSpace:"nowrap",fontFamily:b.css("font-family"),fontSize:b.css("font-size"),fontStyle:b.css("font-style"),fontVariant:b.css("font-variant"),fontWeight:b.css("font-weight"),wordSpacing:b.css("word-spacing"),letterSpacing:b.css("letter-spacing"),textIndent:b.css("text-indent"),textRendering:b.css("text-rendering"),textTransform:b.css("text-transform")}).insertAfter(b)}function f(a,b){return a=(a||"").replace(/^\s*/g,"").replace(/\s{2,}/g," "),b=(b||"").replace(/^\s*/g,"").replace(/\s{2,}/g," "),a===b}return c.mixin(b.prototype,d,{_handleFocus:function(){this.trigger("focused")},_handleBlur:function(){this.trigger("blured")},_handleSpecialKeyEvent:function(a){var b=this.specialKeyCodeMap[a.which||a.keyCode];b&&this.trigger(b+"Keyed",a)},_compareQueryToInputValue:function(){var a=this.getInputValue(),b=f(this.query,a),c=b?this.query.length!==a.length:!1;c?this.trigger("whitespaceChanged",{value:this.query}):b||this.trigger("queryChanged",{value:this.query=a})},destroy:function(){this.$hint.off(".tt"),this.$input.off(".tt"),this.$hint=this.$input=this.$overflowHelper=null},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(a){this.query=a},getInputValue:function(){return this.$input.val()},setInputValue:function(a,b){this.$input.val(a),!b&&this._compareQueryToInputValue()},getHintValue:function(){return this.$hint.val()},setHintValue:function(a){this.$hint.val(a)},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},isOverflow:function(){return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>this.$input.width()},isCursorAtEnd:function(){var a,b=this.$input.val().length,d=this.$input[0].selectionStart;return c.isNumber(d)?d===b:document.selection?(a=document.selection.createRange(),a.moveStart("character",-b),b===a.text.length):!0}}),b}(),k=function(){function b(b){c.bindAll(this),this.isOpen=!1,this.isEmpty=!0,this.isMouseOverDropdown=!1,this.$menu=a(b.menu).on("mouseenter.tt",this._handleMouseenter).on("mouseleave.tt",this._handleMouseleave).on("click.tt",".tt-suggestion",this._handleSelection).on("mouseover.tt",".tt-suggestion",this._handleMouseover)}function e(a){return a.data("suggestion")}var f={suggestionsList:'<span class="tt-suggestions"></span>'},g={suggestionsList:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"}};return c.mixin(b.prototype,d,{_handleMouseenter:function(){this.isMouseOverDropdown=!0},_handleMouseleave:function(){this.isMouseOverDropdown=!1},_handleMouseover:function(b){var c=a(b.currentTarget);this._getSuggestions().removeClass("tt-is-under-cursor"),c.addClass("tt-is-under-cursor")},_handleSelection:function(b){var c=a(b.currentTarget);this.trigger("suggestionSelected",e(c))},_show:function(){this.$menu.css("display","block")},_hide:function(){this.$menu.hide()},_moveCursor:function(a){var b,c,d,f;if(this.isVisible()){if(b=this._getSuggestions(),c=b.filter(".tt-is-under-cursor"),c.removeClass("tt-is-under-cursor"),d=b.index(c)+a,d=(d+1)%(b.length+1)-1,-1===d)return this.trigger("cursorRemoved"),void 0;-1>d&&(d=b.length-1),f=b.eq(d).addClass("tt-is-under-cursor"),this._ensureVisibility(f),this.trigger("cursorMoved",e(f))}},_getSuggestions:function(){return this.$menu.find(".tt-suggestions > .tt-suggestion")},_ensureVisibility:function(a){var b=this.$menu.height()+parseInt(this.$menu.css("paddingTop"),10)+parseInt(this.$menu.css("paddingBottom"),10),c=this.$menu.scrollTop(),d=a.position().top,e=d+a.outerHeight(!0);0>d?this.$menu.scrollTop(c+d):e>b&&this.$menu.scrollTop(c+(e-b))},destroy:function(){this.$menu.off(".tt"),this.$menu=null},isVisible:function(){return this.isOpen&&!this.isEmpty},closeUnlessMouseIsOverDropdown:function(){this.isMouseOverDropdown||this.close()},close:function(){this.isOpen&&(this.isOpen=!1,this.isMouseOverDropdown=!1,this._hide(),this.$menu.find(".tt-suggestions > .tt-suggestion").removeClass("tt-is-under-cursor"),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,!this.isEmpty&&this._show(),this.trigger("opened"))},setLanguageDirection:function(a){var b={left:"0",right:"auto"},c={left:"auto",right:" 0"};"ltr"===a?this.$menu.css(b):this.$menu.css(c)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getSuggestionUnderCursor:function(){var a=this._getSuggestions().filter(".tt-is-under-cursor").first();return a.length>0?e(a):null},getFirstSuggestion:function(){var a=this._getSuggestions().first();return a.length>0?e(a):null},renderSuggestions:function(b,d){var e,h,i,j,k,l="tt-dataset-"+b.name,m='<div class="tt-suggestion">%body</div>',n=this.$menu.find("."+l);0===n.length&&(h=a(f.suggestionsList).css(g.suggestionsList),n=a("<div></div>").addClass(l).append(b.header).append(h).append(b.footer).appendTo(this.$menu)),d.length>0?(this.isEmpty=!1,this.isOpen&&this._show(),i=document.createElement("div"),j=document.createDocumentFragment(),c.each(d,function(c,d){d.dataset=b.name,e=b.template(d.datum),i.innerHTML=m.replace("%body",e),k=a(i.firstChild).css(g.suggestion).data("suggestion",d),k.children().each(function(){a(this).css(g.suggestionChild)}),j.appendChild(k[0])}),n.show().find(".tt-suggestions").html(j)):this.clearSuggestions(b.name),this.trigger("suggestionsRendered")},clearSuggestions:function(a){var b=a?this.$menu.find(".tt-dataset-"+a):this.$menu.find('[class^="tt-dataset-"]'),c=b.find(".tt-suggestions");b.hide(),c.empty(),0===this._getSuggestions().length&&(this.isEmpty=!0,this._hide())}}),b}(),l=function(){function b(a){var b,d,f;c.bindAll(this),this.$node=e(a.input),this.datasets=a.datasets,this.dir=null,this.eventBus=a.eventBus,b=this.$node.find(".tt-dropdown-menu"),d=this.$node.find(".tt-query"),f=this.$node.find(".tt-hint"),this.dropdownView=new k({menu:b}).on("suggestionSelected",this._handleSelection).on("cursorMoved",this._clearHint).on("cursorMoved",this._setInputValueToSuggestionUnderCursor).on("cursorRemoved",this._setInputValueToQuery).on("cursorRemoved",this._updateHint).on("suggestionsRendered",this._updateHint).on("opened",this._updateHint).on("closed",this._clearHint).on("opened closed",this._propagateEvent),this.inputView=new j({input:d,hint:f}).on("focused",this._openDropdown).on("blured",this._closeDropdown).on("blured",this._setInputValueToQuery).on("enterKeyed tabKeyed",this._handleSelection).on("queryChanged",this._clearHint).on("queryChanged",this._clearSuggestions).on("queryChanged",this._getSuggestions).on("whitespaceChanged",this._updateHint).on("queryChanged whitespaceChanged",this._openDropdown).on("queryChanged whitespaceChanged",this._setLanguageDirection).on("escKeyed",this._closeDropdown).on("escKeyed",this._setInputValueToQuery).on("tabKeyed upKeyed downKeyed",this._managePreventDefault).on("upKeyed downKeyed",this._moveDropdownCursor).on("upKeyed downKeyed",this._openDropdown).on("tabKeyed leftKeyed rightKeyed",this._autocomplete)}function e(b){var c=a(g.wrapper),d=a(g.dropdown),e=a(b),f=a(g.hint);c=c.css(h.wrapper),d=d.css(h.dropdown),f.css(h.hint).css({backgroundAttachment:e.css("background-attachment"),backgroundClip:e.css("background-clip"),backgroundColor:e.css("background-color"),backgroundImage:e.css("background-image"),backgroundOrigin:e.css("background-origin"),backgroundPosition:e.css("background-position"),backgroundRepeat:e.css("background-repeat"),backgroundSize:e.css("background-size")}),e.data("ttAttrs",{dir:e.attr("dir"),autocomplete:e.attr("autocomplete"),spellcheck:e.attr("spellcheck"),style:e.attr("style")}),e.addClass("tt-query").attr({autocomplete:"off",spellcheck:!1}).css(h.query);try{!e.attr("dir")&&e.attr("dir","auto")}catch(i){}return e.wrap(c).parent().prepend(f).append(d)}function f(a){var b=a.find(".tt-query");c.each(b.data("ttAttrs"),function(a,d){c.isUndefined(d)?b.removeAttr(a):b.attr(a,d)}),b.detach().removeData("ttAttrs").removeClass("tt-query").insertAfter(a),a.remove()}var g={wrapper:'<span class="twitter-typeahead"></span>',hint:'<input class="tt-hint" type="text" autocomplete="off" spellcheck="off" disabled>',dropdown:'<span class="tt-dropdown-menu"></span>'},h={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none"},query:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"}};return c.isMsie()&&c.mixin(h.query,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),c.isMsie()&&c.isMsie()<=7&&(c.mixin(h.wrapper,{display:"inline",zoom:"1"}),c.mixin(h.query,{marginTop:"-1px"})),c.mixin(b.prototype,d,{_managePreventDefault:function(a){var b,c,d=a.data,e=!1;switch(a.type){case"tabKeyed":b=this.inputView.getHintValue(),c=this.inputView.getInputValue(),e=b&&b!==c;break;case"upKeyed":case"downKeyed":e=!d.shiftKey&&!d.ctrlKey&&!d.metaKey}e&&d.preventDefault()},_setLanguageDirection:function(){var a=this.inputView.getLanguageDirection();a!==this.dir&&(this.dir=a,this.$node.css("direction",a),this.dropdownView.setLanguageDirection(a))},_updateHint:function(){var a,b,d,e,f,g=this.dropdownView.getFirstSuggestion(),h=g?g.value:null,i=this.dropdownView.isVisible(),j=this.inputView.isOverflow();h&&i&&!j&&(a=this.inputView.getInputValue(),b=a.replace(/\s{2,}/g," ").replace(/^\s+/g,""),d=c.escapeRegExChars(b),e=new RegExp("^(?:"+d+")(.*$)","i"),f=e.exec(h),this.inputView.setHintValue(a+(f?f[1]:"")))},_clearHint:function(){this.inputView.setHintValue("")},_clearSuggestions:function(){this.dropdownView.clearSuggestions()},_setInputValueToQuery:function(){this.inputView.setInputValue(this.inputView.getQuery())},_setInputValueToSuggestionUnderCursor:function(a){var b=a.data;this.inputView.setInputValue(b.value,!0)},_openDropdown:function(){this.dropdownView.open()},_closeDropdown:function(a){this.dropdownView["blured"===a.type?"closeUnlessMouseIsOverDropdown":"close"]()},_moveDropdownCursor:function(a){var b=a.data;b.shiftKey||b.ctrlKey||b.metaKey||this.dropdownView["upKeyed"===a.type?"moveCursorUp":"moveCursorDown"]()},_handleSelection:function(a){var b="suggestionSelected"===a.type,d=b?a.data:this.dropdownView.getSuggestionUnderCursor();d&&(this.inputView.setInputValue(d.value),b?this.inputView.focus():a.data.preventDefault(),b&&c.isMsie()?c.defer(this.dropdownView.close):this.dropdownView.close(),this.eventBus.trigger("selected",d.datum,d.dataset))},_getSuggestions:function(){var a=this,b=this.inputView.getQuery();c.isBlankString(b)||c.each(this.datasets,function(c,d){d.getSuggestions(b,function(c){b===a.inputView.getQuery()&&a.dropdownView.renderSuggestions(d,c)})})},_autocomplete:function(a){var b,c,d,e,f;("rightKeyed"!==a.type&&"leftKeyed"!==a.type||(b=this.inputView.isCursorAtEnd(),c="ltr"===this.inputView.getLanguageDirection()?"leftKeyed"===a.type:"rightKeyed"===a.type,b&&!c))&&(d=this.inputView.getQuery(),e=this.inputView.getHintValue(),""!==e&&d!==e&&(f=this.dropdownView.getFirstSuggestion(),this.inputView.setInputValue(f.value),this.eventBus.trigger("autocompleted",f.datum,f.dataset)))},_propagateEvent:function(a){this.eventBus.trigger(a.type)},destroy:function(){this.inputView.destroy(),this.dropdownView.destroy(),f(this.$node),this.$node=null},setQuery:function(a){this.inputView.setQuery(a),this.inputView.setInputValue(a),this._clearHint(),this._clearSuggestions(),this._getSuggestions()}}),b}();!function(){var b,d={},f="ttView";b={initialize:function(b){function g(){var b,d=a(this),g=new e({el:d});b=c.map(h,function(a){return a.initialize()}),d.data(f,new l({input:d,eventBus:g=new e({el:d}),datasets:h})),a.when.apply(a,b).always(function(){c.defer(function(){g.trigger("initialized")})})}var h;return b=c.isArray(b)?b:[b],0===b.length&&a.error("no datasets provided"),h=c.map(b,function(a){var b=d[a.name]?d[a.name]:new i(a);return a.name&&(d[a.name]=b),b}),this.each(g)},destroy:function(){function b(){var b=a(this),c=b.data(f);c&&(c.destroy(),b.removeData(f))}return this.each(b)},setQuery:function(b){function c(){var c=a(this).data(f);c&&c.setQuery(b)}return this.each(c)}},jQuery.fn.typeahead=function(a){return b[a]?b[a].apply(this,[].slice.call(arguments,1)):b.initialize.apply(this,arguments)}}()}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/messages/error.png b/sm-shop/src/main/webapp/resources/messages/error.png
new file mode 100755
index 0000000..296415e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/messages/error.png differ
diff --git a/sm-shop/src/main/webapp/resources/messages/info.png b/sm-shop/src/main/webapp/resources/messages/info.png
new file mode 100755
index 0000000..83de654
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/messages/info.png differ
diff --git a/sm-shop/src/main/webapp/resources/messages/messages.css b/sm-shop/src/main/webapp/resources/messages/messages.css
new file mode 100755
index 0000000..103489c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/messages/messages.css
@@ -0,0 +1,54 @@
+div.info,div.success,div.warning,div.error {
+ border: 1px solid;
+ margin: 10px 0px;
+ padding: 15px 10px 15px 50px;
+ background-repeat: no-repeat;
+ background-position: 10px center;
+}
+
+div.info {
+ color: #00529B;
+ background-color: #BDE5F8;
+ background-image: url('info.png');
+}
+
+div.success {
+ color: #4F8A10;
+ background-color: #DFF2BF;
+ background-image: url('success.png');
+}
+
+div.warning {
+ color: #9F6000;
+ background-color: #FEEFB3;
+ background-image: url('warning.png');
+}
+
+div.error {
+ color: #D8000C;
+ background-color: #FFBABA;
+ background-image: url('error.png');
+}
+
+span {
+ margin: 5px 5px 5px 5px;
+}
+
+span.success {
+ color: #4F8A10;
+}
+
+span.error {
+ color: #D8000C;
+}
+
+body {
+ font-family: Lucida Grande, sans-serif;
+ font-size: .75em;
+ margin: 1em auto;
+ width: 763px;
+}
+
+ul li {
+ padding: 5px;
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/messages/success.png b/sm-shop/src/main/webapp/resources/messages/success.png
new file mode 100755
index 0000000..743ef89
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/messages/success.png differ
diff --git a/sm-shop/src/main/webapp/resources/messages/warning.png b/sm-shop/src/main/webapp/resources/messages/warning.png
new file mode 100755
index 0000000..1c6b8eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/messages/warning.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/backButton.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/backButton.html
new file mode 100755
index 0000000..a3d890a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/backButton.html
@@ -0,0 +1,116 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_History.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ TabSet initialization example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient SDK
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+DynamicForm.create({
+ ID:"pane1",
+ autoDraw:false,
+ titleOrientation:"top",
+ itemChange : function () {
+ Page.setUnloadMessage("Exiting the page now will lose changes");
+ },
+ fields:[
+ {name:"firstName", title:"First Name"},
+ {name:"lastName", title:"Last Name"}
+ ]
+});
+
+DynamicForm.create({
+ ID:"pane2",
+ autoDraw:false,
+ titleOrientation:"top",
+ itemChange : function () {
+ Page.setUnloadMessage("Exiting the page now will lose changes");
+ },
+ fields:[
+ {name:"officeNumber", title:"Office Number"},
+ {name:"mobileNumber", title:"Mobile Number"}
+ ]
+});
+
+DynamicForm.create({
+ ID:"pane3",
+ autoDraw:false,
+ titleOrientation:"top",
+ itemChange : function () {
+ Page.setUnloadMessage("Exiting the page now will lose changes");
+ },
+ fields:[
+ {name:"address", title:"Street Address"},
+ {name:"city", title:"City"},
+ {name:"state", title:"State"},
+ {name:"zip", title:"Zip"}
+ ]
+});
+
+
+// whenever history is navigated, call this callback
+isc.History.registerCallback("historyCallback(id)");
+
+// on page load, restore tabset state
+isc.Page.setEvent("load", "restoreTabSetState()");
+
+function restoreTabSetState() {
+ isc.Log.logWarn("restoring state");
+ // if we have history state, our callback will fire. Otherwise, we need to inspect the URL
+ // to see if there's history ID in there - this is what happens when the user bookmarks one
+ // of the history URLs, closes the browser, opens a new one and then navigates to the bookmark.
+ if (!isc.History.haveHistoryState()) {
+ tabSet.jumpToTab(isc.History.getCurrentHistoryId() || 0);
+ }
+}
+
+function historyCallback(id) {
+ // the id is the tabNum and null is initial state - which is the first tab.
+ tabSet.jumpToTab(id == null ? 0 : id);
+}
+
+TabSet.create({
+ ID:"tabSet",
+ top:50,
+ left:50,
+ width:600,
+ height:400,
+ rememberHistory : true,
+ jumpToTab : function (tabNum) {
+ this.noHistory = true;
+ // convert string to number
+ this.selectTab(new Number(tabNum));
+ this.noHistory = false;
+ },
+ tabSelected : function (tabNum) {
+ if (!this.noHistory && isc.Page.isLoaded()) isc.History.addHistoryEntry(tabNum);
+ },
+ tabs:[{title:"red", pane:pane1, width:70},
+ {title:"green", pane:pane2, width:70},
+ {title:"blue", pane:pane3, width:70}]
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/button_selection.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/button_selection.html
new file mode 100755
index 0000000..21e8f9b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/button_selection.html
@@ -0,0 +1,137 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Button selection example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Label.create({
+ ID:"results",
+ height:20,
+ width:200,
+ top:300,
+ left:35
+})
+function showClicked(name) {
+ results.setContents(name + ' clicked');
+}
+
+
+Button.create({
+ ID:"b1",
+ left:20,
+ top:45,
+ height:50,
+ title:"Button",
+ click:"showClicked(this.title)"
+});
+
+
+Button.create({
+ ID:"b2",
+ left:140,
+ top:45,
+ height:50,
+ title:"Disabled",
+ click:"showClicked(this.title)",
+ disabled:true
+});
+
+
+Button.create({
+ ID:"cb1",
+ left:20,
+ top:125,
+ height:50,
+ title:"Checkbox 1",
+ click:"showClicked(this.title);",
+ selected:true,
+ actionType:"checkbox"
+});
+
+
+Button.create({
+ ID:"cb2",
+ left:140,
+ top:125,
+ height:50,
+ title:"Checkbox 2",
+ click:"showClicked(this.title)",
+ actionType:"checkbox"
+});
+
+
+Button.create({
+ ID:"cb3",
+ left:260,
+ top:125,
+ height:50,
+ title:"Selected & Disabled",
+ wrap:true,
+ click:"showClicked(this.title)",
+ disabled:true,
+ selected:true,
+ actionType:"checkbox"
+});
+
+
+Button.create({
+ ID:"rb1",
+ left:20,
+ top:205,
+ height:50,
+ title:"Radio 1",
+ click:"if (selectedButton != this) {selectedButton.deselect(); selectedButton=this}; showClicked(this.title)",
+ selected:true,
+ actionType:"radio"
+});
+
+
+Button.create({
+ ID:"rb2",
+ left:140,
+ top:205,
+ height:50,
+ title:"Radio 2",
+ click:"if (selectedButton != this) {selectedButton.deselect(); selectedButton=this}; showClicked(this.title)",
+ actionType:"radio"
+});
+
+
+Button.create({
+ ID:"rb3",
+ left:260,
+ top:205,
+ height:50,
+ title:"Radio 3",
+ click:"if (selectedButton != this) {selectedButton.deselect(); selectedButton=this}; showClicked(this.title)",
+ actionType:"radio"
+});
+
+
+var selectedButton = rb1;
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/canvas_clip_scroll.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/canvas_clip_scroll.html
new file mode 100755
index 0000000..ba61c4a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/canvas_clip_scroll.html
@@ -0,0 +1,79 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Dynamic clipping and scrolling example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+// HTML for the image to use in all of the canvas widgets below
+var theImage = Canvas.imgHTML("yinyang.gif", 200, 200);
+
+
+// overflow: visible
+Canvas.create({ overflow:"visible", left:20, top:45, width:100, height:100, contents:theImage });
+Label.create({ left:20, top:245, width:200, height:20, contents:"overflow:'visible'", align:"center" });
+
+
+
+// overflow: clipH
+Canvas.create({ overflow:"clip-h", left:270, top:45, width:100, height:100, contents:theImage });
+Label.create({ left:270, top:245, width:200, height:20, contents:"overflow:'clip-h'", align:"center" });
+
+
+
+// overflow: clipV
+Canvas.create({ overflow:"clip-v", left:520, top:45, width:100, height:100, contents:theImage });
+Label.create({ left:520, top:245, width:200, height:20, contents:"overflow:'clip-v'", align:"center" });
+
+
+
+// overflow: hidden
+Canvas.create({ overflow:"hidden", ID:"hiddenCanvas", left:20, top:345, width:100, height:100, contents:theImage });
+Label.create({ left:20, top:545, width:200, height:20, contents:"overflow:'hidden'", align:"center" });
+
+// buttons for scrolling content of the hiddenCanvas
+Button.create({ left:45, top:465, width:50, height:20, title:"TL", click:"hiddenCanvas.scrollTo(0,0)" });
+Button.create({ left:145, top:465, width:50, height:20, title:"TR", click:"hiddenCanvas.scrollTo(100,0)" });
+Button.create({ left:95, top:485, width:50, height:20, title:"Center", click:"hiddenCanvas.scrollTo(50,50)" });
+Button.create({ left:45, top:505, width:50, height:20, title:"BL", click:"hiddenCanvas.scrollTo(0,100)" });
+Button.create({ left:145, top:505, width:50, height:20, title:"BR", click:"hiddenCanvas.scrollTo(100,100)" });
+
+
+// overflow: scroll
+Canvas.create({ overflow:"scroll", left:270, top:345, width:116, height:116, contents:theImage });
+Label.create({ left:270, top:545, width:200, height:20, contents:"overflow:'scroll'", align:"center" });
+
+
+// note that the width of this last widget is 217, allowing for all
+// of the image's width PLUS the width of the vertical scrollbar, so
+// the horizontal scrollbar is unnecessary
+
+// overflow: auto
+Canvas.create({ overflow:"auto", left:520, top:345, width:217, height:100, contents:theImage });
+Label.create({ left:520, top:545, width:200, height:20, contents:"overflow:'auto'<BR>(width = 217)", align:"center" });
+
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/detailViewer_init.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/detailViewer_init.html
new file mode 100755
index 0000000..35d3ba4
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/detailViewer_init.html
@@ -0,0 +1,52 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ DetailViewer initialization example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+var animalData = [
+ {commonName:'Elephant (African)',scientificName:'Loxodonta africana',diet:'Herbivore',lifeSpan:' 40-60 years',information:'The African Elephant is the largest of all land animals and also has the biggest brain of any land animal. Both males and females have ivory tusks. Elephants are also wonderful swimmers. Man is the only real enemy of the elephant. Man threatens the elephant by killing it for its tusks and by destroying its habitat.',status:'Threatened'},
+ {commonName:'Alligator (American)',scientificName:'Allligator mississippiensis',diet:'Carnivore',lifeSpan:'50 years',information:'In the 16th century, Spanish explorers in what is now Florida encountered a large formidable animal which they called "el largo" meaning "the lizard". The name "el largo" gradually became pronounced "alligator".',status:'Not Endangered'}
+],
+
+animalFields = [
+ {name:"commonName", type:"text", title:"Animal"},
+ {name:"scientificName", type:"text", title:"Scientific Name"},
+ {name:"diet", type:"text", title:"Diet"},
+ {name:"lifeSpan", type:"text", title:"Average Life Span"},
+ {name:"information", type:"text", title:"Interesting Information"}
+];
+
+DetailViewer.create({
+ data:animalData,
+ fields:animalFields,
+ left:20,
+ top:45,
+ width:500
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/dialog_globals.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/dialog_globals.html
new file mode 100755
index 0000000..b4bd345
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/dialog_globals.html
@@ -0,0 +1,91 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Global dialog methods
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient SDK
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Button.create({
+ ID:"askButton",
+ title:"launch ISC ask()",
+ left:100,
+ top:100,
+ width:200,
+ height:25,
+ click:"ask('This is an ask() dialog.', \
+ {yesClick: function () { \
+ outputLabel.setContents('ask() dialog - [YES] clicked'); \
+ return this.Super('yesClick', arguments); \
+ }, \
+ noClick: function () { \
+ outputLabel.setContents('ask() dialog - [NO] clicked'); \
+ return this.Super('noClick', arguments); \
+ } \
+ } \
+ );"
+});
+
+Button.create({
+ ID:"warnButton",
+ title:"launch ISC warn()",
+ left:100,
+ top:150,
+ width:200,
+ height:25,
+ click:"warn('This is a warn() dialog.', \
+ {okClick: function () { \
+ outputLabel.setContents('warn() dialog - [OK] clicked'); \
+ return this.Super('okClick', arguments); \
+ } \
+ } \
+ );"
+});
+
+Button.create({
+ ID:"promptButton",
+ title:"launch ISC showPrompt()",
+ left:100,
+ top:200,
+ width:200,
+ height:25,
+ click:"showPrompt('This is a prompt() dialog.'); \
+ outputLabel.setContents('Showing prompt() dialog for 3 seconds.'); \
+ Timer.setTimeout('clearPrompt(); outputLabel.setContents(\"prompt() dialog hidden.\")',3000);"
+});
+
+Label.create({
+ ID:"outputLabel",
+ contents:"Dialog test output.",
+ padding:2,
+ left:350,
+ top:100,
+ width:250,
+ height:20,
+ backgroundColor:"white",
+ border:"1px solid black"
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_annotations.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_annotations.html
new file mode 100755
index 0000000..aca7e4e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_annotations.html
@@ -0,0 +1,81 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Form item annotations example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+var formItems = [
+ {type:"header", defaultValue:"Item title and hint"},
+ {type:"rowSpacer"},
+ {name:"titleHint", title:"title text", hint:"hint text"},
+ {type:"rowSpacer"},
+
+ {type:"header", defaultValue:"Item title and hint (required field)"},
+ {type:"rowSpacer"},
+ {name:"titleHintReq", title:"title text", hint:"hint text", required:true},
+ {type:"rowSpacer"},
+
+ {type:"header", defaultValue:"Item title, hint, and error"},
+ {type:"rowSpacer"},
+ {name:"titleHintError", title:"title text", hint:"hint text"},
+ {type:"rowSpacer"},
+ {type:"rowSpacer"},
+
+ {type:"header", defaultValue:"Item title and hint example (required field)"},
+ {type:"rowSpacer"},
+ {name:"titleHintExample", title:"Password", type:"password", hint:"4-12 alphanumeric characters", required:true},
+ {type:"rowSpacer"},
+
+ {type:"header", defaultValue:"Item title, hint, and error example (required field)"},
+ {type:"rowSpacer"},
+ {name:"titleHintErrorExample", title:"Password", type:"password", hint:"4-12 alphanumeric characters", required:true}
+ ],
+
+ formValues = {
+ titleHint:"value",
+ titleHintReq:"value",
+ titleHintError:"value",
+ titleHintExample:"xxx",
+ titleHintErrorExample:"xxx"
+ },
+
+ formErrors = {
+ titleHintError:"error text",
+ titleHintErrorExample:"Your password must be at least 4 characters long."
+ };
+
+DynamicForm.create({
+ ID:"dynform",
+ left:20,
+ top:45,
+ width:600,
+ items:formItems,
+ values:formValues,
+ errors:formErrors
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_init.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_init.html
new file mode 100755
index 0000000..7fc2e3d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_init.html
@@ -0,0 +1,61 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Form initialization example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+var formItems = [
+ {name:"commonName", title:"Animal", type:"text"},
+ {name:"scientificName", title:"Scientific Name", type:"text"},
+ {name:"diet", title:"Diet", type:"text"},
+ {name:"lifeSpan", title:"Life Span", type:"text"},
+ {name:"status", title:"Endangered Species Status", type:"text"},
+ {title:"Submit Form", type:"submit"}
+ ],
+
+ formValues = {
+ commonName:"Nurse Shark",
+ scientificName:"Ginglymostoma cirratum"
+ },
+
+ formErrors = {
+ commonName:"error 1"
+ }
+;
+
+DynamicForm.create({
+ ID:"simpleForm",
+ left:20,
+ top:45,
+ items:formItems,
+ values:formValues,
+ errors:formErrors,
+ canSubmit:true
+});
+
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_item_types.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_item_types.html
new file mode 100755
index 0000000..fc82377
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_item_types.html
@@ -0,0 +1,79 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Form item types example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+//----- options for select, selectOther, radioGroup items -----
+var abcdArray = ["a", "b", "c", "d"],
+ abcdList = {a:"option a", b:"option b", c:"option c", d:"option d"},
+
+
+ formItems = [
+
+ //----- display items -----\\
+ {name:"item1", type:"header", defaultValue:"header value"},
+ {name:"item2", type:"blurb", defaultValue:"blurb value"},
+ {type:"rowSpacer"},
+ {name:"item3", title:"staticText", type:"staticText", defaultValue:"staticText value"},
+
+ //----- data items -----\\
+ {name:"item4", title:"text", type:"text", defaultValue:"text value"},
+ {name:"item5", title:"password", type:"password", defaultValue:"password value"},
+ {name:"item6", title:"upload", type:"upload"},
+ {name:"item7", title:"textArea", type:"textArea", defaultValue:"textArea value"},
+ {name:"item8", title:"checkbox", type:"checkbox", defaultValue:true},
+ {name:"item9", title:"radioGroup", type:"radioGroup", valueMap:abcdList, defaultValue:"a"},
+ {name:"item10", title:"select", type:"select", valueMap:abcdList, defaultValue:"b"},
+ {name:"item11", title:"select multiple", type:"select", multiple:true, height:60, valueMap:abcdList, defaultValue:"c"},
+ {name:"item12", title:"selectOther", type:"selectOther", valueMap:abcdList, defaultValue:"d"},
+
+ {name:"item13", title:"date", type:"date", defaultValue:"10/11/2001"},
+ {name:"item14", title:"time", type:"time", defaultValue:"4:20pm"},
+ {name:"item15", type:"hidden", defaultValue:"hidden value"},
+
+ //----- button items -----\\
+ {title:"button", type:"button"},
+ {title:"submit", type:"submit"},
+ {title:"reset", type:"reset"},
+ {type:"toolbar", buttons:[
+ {title:"toolbar 1", click:"alert(1)"},
+ {title:"toolbar 2", click:"alert(2)"},
+ {title:"toolbar 3", click:"alert(3)"}]}
+
+ ];
+
+DynamicForm.create({
+ ID:"itemsForm",
+ left:20,
+ top:40,
+ width:400,
+ items:formItems,
+ canSubmit:true // Required for the submit button to be operative
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_layout.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_layout.html
new file mode 100755
index 0000000..9d5a5f7
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_layout.html
@@ -0,0 +1,63 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Form layout example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+var formItems = [
+ {name:"item1", title:"field 1", width:100, height:50, rowSpan:2, type:"textArea"},
+ {name:"item2", title:"field 2", width:80},
+ {name:"item3", title:"field 3", width:80, align:"right"},
+ {name:"item4", title:"field 4", width:308, colSpan:4},
+ {name:"item5", title:"field 5", width:100, endRow:true},
+ {name:"item6", title:"field 6", width:100},
+ {name:"item7", title:"field 7", width:100, startRow:true},
+ {name:"item8", title:"field 8", width:100}
+ ],
+
+ formValues = {
+ item1:"rowSpan:2",
+ item2:"width:80",
+ item3:"align:right",
+ item4:"colSpan:4",
+ item5:"endRow:true",
+ item6:"",
+ item7:"startRow:true",
+ item8:""
+ };
+
+DynamicForm.create({
+ ID:"layoutForm",
+ left:20,
+ top:40,
+ width:400,
+ numCols:4,
+ items:formItems,
+ values:formValues
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_validators.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_validators.html
new file mode 100755
index 0000000..977c120
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/dynamicForm_validators.html
@@ -0,0 +1,183 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Form item validation example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+var formItems = [
+ {name:"required", title:"required", required:true},
+
+ {name:"custom", title:"custom - confirm dialog",
+ validators:[
+ {condition:"confirm('Accept the value \"'+value+'\" for custom field?')",
+ errorMessage:"Custom Field Value Rejected", clientOnly:true}
+ ]
+ },
+
+ {name:"requiredIf", title:"requiredIf - true",
+ validators:[
+ {type:"requiredIf", errorMessage:"Value must be non-empty.", expression:"true"}
+ ]
+ },
+
+ {name:"isBoolean", title:"isBoolean",
+ validators:[
+ {type:"isBoolean", errorMessage:"Value must be boolean."}
+ ]
+ },
+
+ {name:"isInteger", title:"isInteger",
+ validators:[
+ {type:"isInteger", errorMessage:"Value must be an integer."}
+ ]
+ },
+
+ {name:"boundedIntegerRange", type:"integer", title:"integerRange 10-100",
+ validators:[
+ {type:"integerRange", errorMessage:"Value must be between 10 and 100.", min:10, max:100}
+ ]
+ },
+
+ {name:"lowerBoundedIntegerRange", type:"integer", title:"integerRange 10-",
+ validators:[
+ {type:"integerRange", errorMessage:"Value must be >= 10.", min:10}
+ ]
+ },
+
+ {name:"upperBoundedIntegerRange", type:"integer", title:"integerRange -100",
+ validators:[
+ {type:"integerRange", errorMessage:"Value must be <= 100.", max:100}
+ ]
+ },
+
+ {name:"boundedLengthRange", title:"lengthRange 4-8",
+ validators:[
+ {type:"lengthRange", errorMessage:"Value must be 4-8 characters long.", min:4, max:8}
+ ]
+ },
+
+ {name:"lowerBoundedLengthRange", title:"lengthRange 4-",
+ validators:[
+ {type:"lengthRange", errorMessage:"Value must be 4 or more characters long.", min:4}
+ ]
+ },
+
+ {name:"upperBoundedLengthRange", title:"lengthRange -8",
+ validators:[
+ {type:"lengthRange", errorMessage:"Value must be 8 or fewer characters long.", max:8}
+ ]
+ },
+
+ {name:"matchesField", title:"matchesField - field 1",
+ validators:[
+ {type:"matchesField", errorMessage:"Value must match value of first field.", otherField:"required"}
+ ]
+ },
+
+ {name:"isOneOf", title:"isOneOf ['a','b','c']",
+ validators:[
+ {type:"isOneOf", errorMessage:"Value must be one of ['a','b','c'].", list:['a','b','c']}
+ ]
+ },
+
+ {name:"contains", title:"contains 'abc'",
+ validators:[
+ {type:"contains", errorMessage:"Value must contain the substring 'abc'.", substring:"abc"}
+ ]
+ },
+
+ {name:"doesntContain", title:"doesntContain ' '",
+ validators:[
+ {type:"doesntContain", errorMessage:"Value must not contain any spaces.", substring:" "}
+ ]
+ },
+
+ {name:"substringCount", title:"substringCount '.' == 3",
+ validators:[
+ {type:"substringCount", errorMessage:"Value must contain exactly three dots.", substring:".",
+ operator:"==", count:3}
+ ]
+ },
+
+ {name:"regexp", title:"regexp zipcode format",
+ validators:[
+ {type:"regexp", errorMessage:"Value must be in zipcode format.", expression:/^\d{5}(-\d{4}){0,1}$/}
+ ]
+ },
+
+ {type:"rowSpacer"},
+
+ // Submit button for form - will perform automatic client side validation before submission
+ // Note: we would have to set canSubmit to true on the DymamicForm to allow form submission.
+ // {title:"Submit Form", type:"submit", align:"center"}
+
+ // Button to call validation demonstration function
+ {title:"Validate Form", type:"button", click:"validateForm()", align:"center"}
+
+ ],
+
+
+ formValues = {
+ custom:"x",
+ isBoolean:"x",
+ isInteger:"x",
+ boundedIntegerRange:"x",
+ lowerBoundedIntegerRange:"x",
+ upperBoundedIntegerRange:"x",
+ boundedLengthRange:"x",
+ lowerBoundedLengthRange:"x",
+ upperBoundedLengthRange:"xxxxxxxxx",
+ matchesField:"x",
+ isOneOf:"x",
+ contains:"x",
+ doesntContain:"x x",
+ substringCount:"x",
+ regexp:"x"
+ };
+
+DynamicForm.create({
+ ID:"simpleForm",
+ left:20,
+ top:40,
+ items:formItems,
+ values:formValues,
+ width:600,
+ titleWidth:200
+});
+
+
+// A function to demonstrate form validation, and alert on success
+// Note: Validation is performed automatically on form submission -
+// no explicit call to the form.validate() function usually required.
+function validateForm(){
+ if(simpleForm.validate()){
+ alert ("Form validation was successful!");
+ simpleForm.redraw();
+ };
+};
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/editableListGrid_init.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/editableListGrid_init.html
new file mode 100755
index 0000000..a4f551d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/editableListGrid_init.html
@@ -0,0 +1,63 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Editable ListGrid example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+// Data to be displayed
+var animalData = [
+ {commonName:'Elephant (African)',scientificName:'Loxodonta africana',diet:'H',lifeSpan:' 40-60 years',information:'The African Elephant is the largest of all land animals and also has the biggest brain of any land animal. Both males and females have ivory tusks. Elephants are also wonderful swimmers. Man is the only real enemy of the elephant. Man threatens the elephant by killing it for its tusks and by destroying its habitat.',status:'Threatened'},
+ {enabled:false, commonName:'(disabled) Alligator (American)',scientificName:'Alligator mississippiensis',diet:'C',lifeSpan:'50 years',information:'In the 16th century, Spanish explorers in what is now Florida encountered a large formidable animal which they called "el largo" meaning "the lizard". The name "el largo" gradually became pronounced "alligator".',status:'Not Endangered'},
+ {commonName:'Anteater',scientificName:'Myrmecophaga tridactyla',diet:'C',lifeSpan:'25 years',information:'Anteaters can eat up to 35,000 ants daily. Tongue is around 2 feet long and is not sticky but rather covered with saliva. They have very strong sharp claws used for digging up anthills and termite mounds.',status:'Not Endangered'},
+ {commonName:'Camel (Arabian Dromedary)',scientificName:'Camelus dromedarius',diet:'H',lifeSpan:'20-50 years',information:'Can eat any vegetation including thorns. Has one hump for fat storage. Is well known as a beast of burden.',status:'Not Endangered'},
+ {commonName:'Bald Eagle',scientificName:'southern subspecies: Haliaeetus leucocephalus leuc',diet:'C',lifeSpan:'Up to 50 years',information:' Females lay one to three eggs. Visual acuity is 3-4 times greater than a human. Bald eagles build the largest nest of any North American bird. The largest nest found was 3.2 yds (2.9 m) in diameter and 6.7 yds (6.1 m) tall. Protection of the Bald Eagle is afforded by three federal laws: (1) the Endangered Species Act, (2) the Bald Eagle and Golden Eagle Protection Act, and (3) the Migratory Bird Treaty Act.',status:'Endangered'},
+ {commonName:'Black Spider Monkey',scientificName:'Ateles panicus',diet:'H',lifeSpan:'20 years',information:'They can perform remarkable feats with their tails.',status:'Not Endangered'},
+ {commonName:'Bottlenosed Dolphin',scientificName:'Tursiops truncatus',diet:'C',lifeSpan:'35 years',information:'The bottlenosed dolphin is classified as a toothed whale. They are excellent hunters. They use sound waves to "see" their environment and where they are going through a process known as echolocation.',status:'Dolphins are vulnerable to commercial fishing practices and ocean pollution.'}
+];
+
+var animalFields = [
+ {name:"commonName", title:"Animal"},
+ {name:"scientificName", title:"Sci. Name (not editable)", canEdit:false, width:150},
+ {name:"diet", title:"Diet", valueMap:{O:"Omnivore", C:"Carnivore", H:"Herbivore",I:"Insectivore",P:"Pescivore"}},
+ {name:"information", title:"Interesting Facts", editorType:"textArea"}
+];
+
+ListGrid.create({
+ ID:"animalList",
+ canEdit:true,
+ data:animalData,
+ fields:animalFields,
+ canReorderRecords:true,
+ left:50,
+ top:75,
+ width:500,
+ height:300,
+ alternateRecordStyles:true
+});
+
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/event_details.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/event_details.html
new file mode 100755
index 0000000..a7a1055
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/event_details.html
@@ -0,0 +1,105 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Getting event details
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Canvas.create({
+ ID:"redWidget",
+ left:50,
+ top:75,
+ width:100,
+ height:100,
+ contents:"show mouseDown details",
+ backgroundColor:"red",
+ mouseDown:"showEventInfo('mouseDown', this)",
+ mouseOut:"clearEventInfo()"
+});
+
+Canvas.create({
+ ID:"blueWidget",
+ left:100,
+ top:125,
+ width:100,
+ height:100,
+ contents:"show mouseUp details",
+ backgroundColor:"blue",
+ mouseUp:"showEventInfo('mouseUp', this)",
+ // showContextMenu event triggered by right mouse button coming up.
+ // Note: We return false to prevent the native browser context menu from being displayed.
+ showContextMenu:"showEventInfo('showContextMenu', this); return false;",
+ mouseOut:"clearEventInfo()"
+});
+
+Canvas.create({
+ ID:"greenWidget",
+ left:150,
+ top:175,
+ width:100,
+ height:100,
+ contents:"show mouseMove details",
+ backgroundColor:"green",
+ mouseMove:"showEventInfo('mouseMove', this)",
+ mouseOut:"clearEventInfo()"
+});
+
+Label.create({
+ ID:"statusArea",
+ top:100,
+ left:300,
+ width:250,
+ height:125,
+ overflow:"hidden",
+ backgroundColor:"white",
+ border:"1px solid black",
+ valign:"top",
+ padding:3
+});
+
+
+function showEventInfo(eventName, obj) {
+ var result = "<b>" + eventName + ":</b><br>" +
+ "Global: " + EventHandler.getX() + "," + EventHandler.getY() + "<br>" +
+ "Local: " + obj.getOffsetX() + "," + obj.getOffsetY() + "<br>"
+ ;
+ if (EventHandler.rightButtonDown()) result += " (Right Button)";
+ if (EventHandler.leftButtonDown()) result += " (Left Button)";
+ if (EventHandler.shiftKeyDown()) result += " (Shift)";
+ if (EventHandler.ctrlKeyDown()) result += " (Ctrl)";
+ if (EventHandler.altKeyDown()) result += " (Alt)";
+ result += "<br><br>";
+ if (redWidget.containsEvent()) result+= " <i>(red widget contains event)</i><br>";
+ if (blueWidget.containsEvent()) result+= " <i>(blue widget contains event)</i><br>";
+ if (greenWidget.containsEvent()) result+= " <i>(green widget contains event)</i><br>";
+ statusArea.setContents(result);
+}
+
+function clearEventInfo () {
+ statusArea.setContents("");
+}
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/event_logger.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/event_logger.html
new file mode 100755
index 0000000..a27e7fb
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/event_logger.html
@@ -0,0 +1,317 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Event logging example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<!-- HTML form containing event log fields and controls -->
+<DIV STYLE='padding:0px 0px 0px 20px' CLASS='normal'>
+<form action="" method="POST" name="f">
+<table><tr>
+<td CLASS="normal"><textarea name="eventlog" cols="25" rows="20"></textarea></td>
+<td valign=bottom CLASS="normal"><input type="Button" name="clearlog" value="Clear Log" onClick="clearEventLog()"> </td>
+<td valign=bottom CLASS="normal"><A HREF="javascript:void alert('click -> anchor')" ONMOUSEOVER='if (isc.Page.isLoaded()) logEvent("mouseover -> anchor");'>An anchor</A></td>
+</tr></table>
+<br><br>
+<input name="mousemovelog" size="40"> Last mouseMove/dragMove event<br><br>
+<input name="mousestilldownlog" size="40"> Last mouseStillDown event<br><br>
+<input type="Checkbox" name="logPageEvents">Log page events
+<input type="Checkbox" name="disableDragWidget" onclick="this.checked ? green.disable() : green.enable()">Disable green widget
+<input type="Checkbox" name="disableDropWidget" onclick="this.checked ? blue.disable() : blue.enable()">Disable blue widget<br><br>
+<input name="pageeventlog" size="40"> Last page level mouse event
+</form>
+</DIV>
+
+<SCRIPT>
+
+// --------------------------------------------------
+// drag & drop widgets with event handlers
+// --------------------------------------------------
+
+// pink widget -- normal widget, no dragging properties
+Canvas.create({
+ ID:"pink",
+
+ // visual properties
+ left: 340,
+ top:50,
+ width:80,
+ height:80,
+ contents:"normal widget",
+ backgroundColor:"pink",
+
+ // event handlers
+ mouseDown:"logEvent('mouseDown -> pink')",
+ mouseStillDown:"mouseStillDownField.value='mouseStillDown -> pink ('+timeStamp()+')'",
+ mouseUp:"logEvent('mouseUp -> pink')",
+ click:"logEvent('click -> pink')",
+ doubleClick:"logEvent('doubleClick -> pink')",
+ mouseOver:"logEvent('mouseOver -> pink')",
+ mouseMove:"mouseMoveField.value='mouseMove -> pink '+this.getOffsetX()+','+this.getOffsetY()",
+ mouseOut:"logEvent('mouseOut -> pink')",
+ dragStart:"logEvent('dragStart -> pink')",
+ dragStop:"logEvent('dragStop -> pink')"
+});
+
+
+// green widget: draggable with 'drag target' drag style
+Canvas.create({
+ ID:"green",
+ // visual properties
+ left: 440,
+ top:50,
+ width:80,
+ height:80,
+ contents:"drag me (canDrag)",
+ backgroundColor:"lightgreen",
+
+ // drag & drop properties
+ canDrag:true,
+ canDrop:true,
+ dragAppearance:"tracker",
+ setDragTracker:function(){EventHandler.setDragTracker(this.imgHTML('yinyang_icon.gif',20,20),20,20)},
+
+ // event handlers
+ mouseDown:"logEvent('mouseDown -> green')",
+ mouseStillDown:"mouseStillDownField.value='mouseStillDown -> green ('+timeStamp()+')'",
+ mouseUp:"logEvent('mouseUp -> green')",
+ click:"logEvent('click -> green')",
+ doubleClick:"logEvent('doubleClick -> green')",
+ mouseOver:"logEvent('mouseOver -> green')",
+ mouseMove:"mouseMoveField.value='mouseMove -> green '+this.getOffsetX()+','+this.getOffsetY()",
+ mouseOut:"logEvent('mouseOut -> green')",
+ dragStart:"logEvent('dragStart -> green')",
+ dragMove:"mouseMoveField.value='dragMove -> green '+this.getOffsetX()+','+this.getOffsetY()",
+ dragStop:"logEvent('dragStop -> green')"
+});
+
+
+
+
+// blue widget: accepts drop of other widgets
+Canvas.create({
+ ID:"blue",
+ // visual properties
+ left: 340,
+ top:150,
+ width:80,
+ height:80,
+ contents:"drop on me (canAcceptDrop)",
+ backgroundColor:"skyblue",
+
+ // drag & drop properties
+ canAcceptDrop:true,
+
+ // event handlers
+ mouseDown:"logEvent('mouseDown -> blue')",
+ mouseStillDown:"mouseStillDownField.value='mouseStillDown -> blue ('+timeStamp()+')'",
+ mouseUp:"logEvent('mouseUp -> blue')",
+ click:"logEvent('click -> blue')",
+ doubleClick:"logEvent('doubleClick -> blue')",
+ mouseOver:"logEvent('mouseOver -> blue')",
+ mouseMove:"mouseMoveField.value='mouseMove -> blue '+this.getOffsetX()+','+this.getOffsetY()",
+ mouseOut:"logEvent('mouseOut -> blue')",
+ dropOver:"logEvent('dropOver -> blue')",
+ dropMove:"mouseMoveField.value='dropMove -> blue '+this.getOffsetX()+','+this.getOffsetY()",
+ dropOut:"logEvent('dropOut -> blue')",
+ drop:"logEvent('drop -> blue')"
+});
+
+
+// yellow widget: can drag reposition, can drop
+Canvas.create({
+ ID:"yellow",
+ // visual properties
+ left: 540,
+ top:50,
+ width:80,
+ height:80,
+ contents:"drag reposition me (canDragReposition, canDrop)",
+ backgroundColor:"yellow",
+
+ // drag & drop properties
+ canDragReposition:true,
+ canDrop:true,
+ dragAppearance:"target",
+
+
+ // event handlers
+ mouseDown:"logEvent('mouseDown -> yellow')",
+ mouseStillDown:"mouseStillDownField.value='mouseStillDown -> yellow ('+timeStamp()+')'",
+ mouseUp:"logEvent('mouseUp -> yellow')",
+ click:"logEvent('click -> yellow')",
+ doubleClick:"logEvent('doubleClick -> yellow')",
+ mouseOver:"logEvent('mouseOver -> yellow')",
+ mouseMove:"mouseMoveField.value='mouseMove -> yellow '+this.getOffsetX()+','+this.getOffsetY()",
+ mouseOut:"logEvent('mouseOut -> yellow')",
+ dragRepositionStart:"logEvent('dragRepositionStart -> yellow');",
+ dragRepositionMove:"mouseMoveField.value='dragRepositionMove -> yellow '+this.getOffsetX()+','+this.getOffsetY()",
+ dragRepositionStop:"logEvent('dragRepositionStop -> yellow')"
+});
+
+
+// purple widget: can resize and move, can't drop
+Canvas.create({
+ ID:"purple",
+ // visual properties
+ left: 540,
+ top:150,
+ width:150,
+ height:100,
+ contents:"resize and move me (canDragResize, canDragReposition)",
+ backgroundColor:"orchid",
+ overflow:"hidden",
+
+ // drag & drop properties
+ canDragResize:true,
+ canDragReposition:true,
+
+ // event handlers
+ mouseDown:"logEvent('mouseDown -> purple')",
+ mouseStillDown:"mouseStillDownField.value='mouseStillDown -> purple ('+timeStamp()+')'",
+ mouseUp:"logEvent('mouseUp -> purple')",
+ click:"logEvent('click -> purple')",
+ doubleClick:"logEvent('doubleClick -> purple')",
+ mouseOver:"logEvent('mouseOver -> purple')",
+ mouseMove:"mouseMoveField.value='mouseMove -> purple '+this.getOffsetX()+','+this.getOffsetY()",
+ mouseOut:"logEvent('mouseOut -> purple')",
+ dragResizeStart:"logEvent('dragResizeStart -> purple')",
+ dragResizeMove:"mouseMoveField.value='dragResizeMove -> purple '+this.getOffsetX()+','+this.getOffsetY()",
+ dragResizeStop:"logEvent('dragResizeStop -> purple')",
+ dragRepositionStart:"logEvent('dragRepositionStart -> purple')",
+ dragRepositionMove:"mouseMoveField.value='dragRepositionMove -> purple '+this.getOffsetX()+','+this.getOffsetY()",
+ dragRepositionStop:"logEvent('dragRepositionStop -> purple')"
+});
+
+
+
+// button
+Button.create({
+ ID:"button",
+ // visual properties
+ left: 340,
+ top:250,
+ width:150,
+ title:"A Button",
+ overflow:"hidden",
+ showDown:true,
+
+ // drag & drop properties
+
+ // event handlers
+ mouseDown:"this.Super('mouseDown');logEvent('mouseDown -> button')",
+ mouseStillDown:"this.Super('mouseStillDown');mouseStillDownField.value='mouseStillDown -> button ('+timeStamp()+')'",
+ mouseUp:"this.Super('mouseUp');logEvent('mouseUp -> button')",
+ click:"this.Super('click');logEvent('click -> button')",
+ doubleClick:"this.Super('doubleClick');logEvent('doubleClick -> button')",
+ mouseOver:"this.Super('mouseOver');logEvent('mouseOver -> button')",
+ mouseMove:"this.Super('mouseMove');mouseMoveField.value='mouseMove -> button '+this.getOffsetX()+','+this.getOffsetY()",
+ mouseOut:"this.Super('mouseOut');logEvent('mouseOut -> button')"
+});
+
+
+// --------------------------------------------------
+// global event handlers
+// --------------------------------------------------
+
+Page.setEvent("load", "initializeForm()");
+
+// set global handlers to log page events
+Page.setEvent("load", "logPageEvent('load')");
+Page.setEvent("unload", "if (pageEvents.checked) alert('unload')");
+Page.setEvent("resize", "logPageEvent('resize')");
+Page.setEvent("showContextMenu", "logPageEvent('showContextMenu')");
+
+// set global handlers to log mouse events
+Page.setEvent("mouseOver", "logPageEvent('mouseOver')");
+Page.setEvent("mouseMove", "if (pageEvents.checked) pageEventField.value = 'mouseMove -> Page '+EventHandler.getX()+','+EventHandler.getY()");
+Page.setEvent("mouseOut", "logPageEvent('mouseOut')");
+Page.setEvent("mouseDown", "logPageEvent('mouseDown')");
+Page.setEvent("mouseUp", "logPageEvent('mouseUp')");
+Page.setEvent("click", "logPageEvent('click')");
+Page.setEvent("doubleClick", "logPageEvent('doubleClick')");
+
+// set global handlers to log drag-and-drop events
+Page.setEvent("dragStart", "logPageEvent('dragStart')");
+Page.setEvent("dragOver", "logPageEvent('dragOver')");
+Page.setEvent("dragMove", "if (pageEvents.checked) pageEventField.value = 'dragMove -> Page '+EventHandler.getX()+','+EventHandler.getY()");
+Page.setEvent("dragOut", "logPageEvent('dragOut')");
+Page.setEvent("dragStop", "logPageEvent('dragStop')");
+
+// set global handlers to log drag-and-drop events
+Page.setEvent("dragRepositionStart", "logPageEvent('dragRepositionStart')");
+Page.setEvent("dragRepositionMove", "if (pageEvents.checked) pageEventField.value = 'dragRepositionMove -> Page '+EventHandler.getX()+','+EventHandler.getY()");
+Page.setEvent("dragRepositionStop", "logPageEvent('dragRepositionStop')");
+
+// set global handlers to log drag-and-drop events
+Page.setEvent("dragResizeStart", "logPageEvent('dragResizeStart')");
+Page.setEvent("dragResizeMove", "if (pageEvents.checked) pageEventField.value = 'dragResizeMove -> Page '+EventHandler.getX()+','+EventHandler.getY()");
+Page.setEvent("dragResizeStop", "logPageEvent('dragResizeStop')");
+
+// set global handlers to log drag-and-drop events
+Page.setEvent("dropOver", "logPageEvent('dropOver')");
+Page.setEvent("dropMove", "if (pageEvents.checked) pageEventField.value = 'dropMove -> Page '+EventHandler.getX()+','+EventHandler.getY()");
+Page.setEvent("dropOut", "logPageEvent('dropOut')");
+Page.setEvent("drop", "logPageEvent('drop')");
+
+
+// --------------------------------------------------
+// scripts for working with the HTML form
+// --------------------------------------------------
+
+// shortcut references to form elements
+var eventLog = document.f.eventlog;
+var mouseMoveField = document.f.mousemovelog;
+var pageEventField = document.f.pageeventlog;
+var mouseStillDownField = document.f.mousestilldownlog;
+var pageEvents = document.f.logPageEvents;
+
+// add a new line to the event log
+function logEvent(msg) {
+ eventLog.value += msg+(Browser.isMac ? '\r' : '\n');
+}
+
+// log a page event if the logPageEvents checkbox is ticked
+function logPageEvent(msg) {
+ if (pageEvents.checked) logEvent(msg+" -> Page");
+}
+
+// clear the event log
+function clearEventLog() {
+ eventLog.value = "--- Event Log ---\n";
+ mouseMoveField.value = "";
+ mouseStillDownField.value = "";
+ pageEventField.value = "";
+}
+
+// initialize the form
+function initializeForm() {
+ clearEventLog();
+ pageEvents.checked = false;
+ document.f.disableDragWidget.checked = false;
+ document.f.disableDropWidget.checked = false;
+}
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/event_propagation.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/event_propagation.html
new file mode 100755
index 0000000..2142a80
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/event_propagation.html
@@ -0,0 +1,119 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Event propagation example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Page.setEvent("click","return confirm('Page received click event. Continue?');");
+
+// Declaration Method 1:
+// Instantiating children separately and attaching them to their parents.
+// The autoDraw property must be set to false for each child.
+
+Canvas.create({
+ ID:"topWidget",
+ left:50,
+ top:75,
+ width:300,
+ height:300,
+ contents:"top",
+ backgroundColor:"skyblue",
+ click:"return confirm('top received click event. Continue?')"
+});
+
+Canvas.create({
+ ID:"parentWidget",
+ autoDraw:false,
+ left:50,
+ top:50,
+ width:200,
+ height:200,
+ contents:"parent",
+ backgroundColor:"khaki",
+ click:"return confirm('parent received click event. Continue?')"
+});
+topWidget.addChild(parentWidget);
+
+
+Canvas.create({
+ ID:"targetWidget",
+ autoDraw:false,
+ left:50,
+ top:50,
+ width:100,
+ height:100,
+ contents:"target",
+ backgroundColor:"lightgreen",
+ click:"return confirm('target received click event. Continue?')"
+});
+parentWidget.addChild(targetWidget);
+
+/*
+// Declaration Method 2:
+// Nesting children in a parent widget's declaration.
+// The constructor property must be given for each child.
+
+Canvas.create({
+ ID:"topWidget",
+ left:50,
+ top:75,
+ width:300,
+ height:300,
+ contents:"top",
+ backgroundColor:"skyblue",
+ click:"return confirm('top received click event. Continue?')",
+ children:[
+ Canvas.create({
+ ID:"parentWidget",
+ autoDraw:false,
+ left:50,
+ top:50,
+ width:200,
+ height:200,
+ contents:"parent",
+ backgroundColor:"khaki",
+ click:"return confirm('parent received click event. Continue?')",
+ children:[
+ Canvas.create({
+ ID:"targetWidget",
+ autoDraw:false,
+ left:50,
+ top:50,
+ width:100,
+ height:100,
+ contents:"target",
+ backgroundColor:"lightgreen",
+ click:"return confirm('target received click event. Continue?')"
+ })
+
+ ]
+ })
+ ]
+});
+*/
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/blank.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/blank.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/blank.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/greenlight.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/greenlight.gif
new file mode 100755
index 0000000..fb9146c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/greenlight.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button.gif
new file mode 100755
index 0000000..bcdefc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Disabled.gif
new file mode 100755
index 0000000..b1ef245
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Down.gif
new file mode 100755
index 0000000..2d43ae2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Over.gif
new file mode 100755
index 0000000..d34ecb6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected.gif
new file mode 100755
index 0000000..873749c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Disabled.gif
new file mode 100755
index 0000000..fd8c8ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Down.gif
new file mode 100755
index 0000000..dcfc12b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Over.gif
new file mode 100755
index 0000000..bb579a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/imgButton/button_Selected_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_corner.gif
new file mode 100755
index 0000000..178779e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_corner.gif
new file mode 100755
index 0000000..2627432
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_end.gif
new file mode 100755
index 0000000..b0f509f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_start.gif
new file mode 100755
index 0000000..2d1a4f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_track.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_track.gif
new file mode 100755
index 0000000..3c53111
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Disabled_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_corner.gif
new file mode 100755
index 0000000..178779e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_end.gif
new file mode 100755
index 0000000..7d11dc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_start.gif
new file mode 100755
index 0000000..021ff42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_track.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_track.gif
new file mode 100755
index 0000000..e57bf6d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_Down_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_end.gif
new file mode 100755
index 0000000..9f7bbdd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_start.gif
new file mode 100755
index 0000000..b09e26b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_track.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_track.gif
new file mode 100755
index 0000000..e57bf6d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hscroll_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_end.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_start.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_stretch.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_end.gif
new file mode 100755
index 0000000..62125f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_start.gif
new file mode 100755
index 0000000..a6a6234
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_stretch.gif
new file mode 100755
index 0000000..4b201c1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_end.gif
new file mode 100755
index 0000000..6b1c8f0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_start.gif
new file mode 100755
index 0000000..e88a7b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_stretch.gif
new file mode 100755
index 0000000..00fd2f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/hthumb_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_corner.gif
new file mode 100755
index 0000000..8c80a9d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_corner.gif
new file mode 100755
index 0000000..9bbbab6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_end.gif
new file mode 100755
index 0000000..7134217
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_start.gif
new file mode 100755
index 0000000..a96c39f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_track.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_track.gif
new file mode 100755
index 0000000..74f35f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Disabled_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_corner.gif
new file mode 100755
index 0000000..8c80a9d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_end.gif
new file mode 100755
index 0000000..1bb2a72
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_start.gif
new file mode 100755
index 0000000..7a16f67
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_track.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_track.gif
new file mode 100755
index 0000000..7195134
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_Down_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_end.gif
new file mode 100755
index 0000000..d00b057
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_start.gif
new file mode 100755
index 0000000..855712c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_track.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_track.gif
new file mode 100755
index 0000000..7195134
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vscroll_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_end.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_start.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_stretch.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_end.gif
new file mode 100755
index 0000000..41f9c45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_start.gif
new file mode 100755
index 0000000..5dd0b2a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_stretch.gif
new file mode 100755
index 0000000..3806491
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_end.gif
new file mode 100755
index 0000000..5c86565
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_start.gif
new file mode 100755
index 0000000..48c406e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_stretch.gif
new file mode 100755
index 0000000..f2a566f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/MacScrollbars/vthumb_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/redlight.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/redlight.gif
new file mode 100755
index 0000000..9958a71
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/redlight.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_end.gif
new file mode 100755
index 0000000..8f20270
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_start.gif
new file mode 100755
index 0000000..bce2b7d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_stretch.gif
new file mode 100755
index 0000000..d4b7c22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_end.gif
new file mode 100755
index 0000000..9a3ed3c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_start.gif
new file mode 100755
index 0000000..0cea66e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_stretch.gif
new file mode 100755
index 0000000..53e784f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_end.gif
new file mode 100755
index 0000000..374d726
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_end.gif
new file mode 100755
index 0000000..921a45f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_start.gif
new file mode 100755
index 0000000..ef5b558
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_stretch.gif
new file mode 100755
index 0000000..727e6c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_end.gif
new file mode 100755
index 0000000..358b233
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_start.gif
new file mode 100755
index 0000000..fd788d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_stretch.gif
new file mode 100755
index 0000000..fae81c8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_end.gif
new file mode 100755
index 0000000..1f3d3e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_start.gif
new file mode 100755
index 0000000..eecb9d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_stretch.gif
new file mode 100755
index 0000000..f6e32bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_end.gif
new file mode 100755
index 0000000..a8a7442
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_end.gif
new file mode 100755
index 0000000..7f2f3cd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_start.gif
new file mode 100755
index 0000000..b58780f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_stretch.gif
new file mode 100755
index 0000000..d8c2b24
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_start.gif
new file mode 100755
index 0000000..ddbf4d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_stretch.gif
new file mode 100755
index 0000000..7c940c1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_Selected_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_start.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_start.gif
new file mode 100755
index 0000000..b2ca215
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_stretch.gif
new file mode 100755
index 0000000..a586d95
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/stretchImgButton/button_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang.gif
new file mode 100755
index 0000000..24aa3df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_icon.gif
new file mode 100755
index 0000000..24ab2d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_inverted.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_inverted.gif
new file mode 100755
index 0000000..4f937ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_inverted.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_small.gif b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_small.gif
new file mode 100755
index 0000000..fa3ec88
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/components/components/images/yinyang_small.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/img_rollover.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/img_rollover.html
new file mode 100755
index 0000000..737a960
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/img_rollover.html
@@ -0,0 +1,41 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Img rollover example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Img.create({
+ left:75,
+ top:100,
+ width:200,
+ height:200,
+ src:"yinyang.gif",
+ mouseOver:"this.setState('inverted')",
+ mouseOut:"this.setState('')"
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/imgButton_selection.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/imgButton_selection.html
new file mode 100755
index 0000000..931e307
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/imgButton_selection.html
@@ -0,0 +1,173 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ ImgButton selection example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient SDK
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Label.create({
+ ID:"results",
+ height:20,
+ width:200,
+ top:350,
+ left:35
+})
+function showClicked(name) {
+ results.setContents(name + ' clicked');
+}
+
+// Labels
+Label.create({
+ left:20,
+ top:50,
+ width:300,
+ height:20,
+ align:"Canvas.RIGHT",
+ contents:"Buttons (Normal/Disabled):"
+});
+
+Label.create({
+ left:20,
+ top:150,
+ width:400,
+ height:20,
+ align:"Canvas.RIGHT",
+ contents:"Checkboxes (Selected/Unselected/Selected and Disabled):"
+});
+
+Label.create({
+ left:20,
+ top:250,
+ width:300,
+ height:20,
+ align:"Canvas.RIGHT",
+ contents:"Radio Buttons:"
+});
+
+// Buttons
+ImgButton.create({
+ ID:"b1",
+ left:20,
+ top:80,
+ width:33,
+ height:33,
+ src:"[APPIMG]imgButton/button.gif",
+ click:"showClicked(this.getID())"
+});
+
+
+ImgButton.create({
+ ID:"b2",
+ left:140,
+ top:80,
+ width:33,
+ height:33,
+ src:"[APPIMG]imgButton/button.gif",
+ click:"showClicked(this.getID())",
+ disabled:true
+});
+
+
+ImgButton.create({
+ ID:"cb1",
+ left:20,
+ top:180,
+ width:33,
+ height:33,
+ src:"[APPIMG]imgButton/button.gif",
+ click:"showClicked(this.getID())",
+ selected:true,
+ actionType:"checkbox"
+});
+
+
+ImgButton.create({
+ ID:"cb2",
+ left:140,
+ top:180,
+ width:33,
+ height:33,
+ src:"[APPIMG]imgButton/button.gif",
+ click:"showClicked(this.getID())",
+ actionType:"checkbox"
+});
+
+
+ImgButton.create({
+ ID:"cb3",
+ left:260,
+ top:180,
+ width:33,
+ height:33,
+ src:"[APPIMG]imgButton/button.gif",
+ click:"showClicked(this.getID())",
+ disabled:true,
+ selected:true,
+ actionType:"checkbox"
+});
+
+
+ImgButton.create({
+ ID:"rb1",
+ left:20,
+ top:280,
+ width:33,
+ height:33,
+ src:"[APPIMG]imgButton/button.gif",
+ click:"if (selectedImgButton != this) {selectedImgButton.deselect(); selectedImgButton=this}; showClicked(this.getID())",
+ selected:true,
+ actionType:"radio"
+});
+
+
+ImgButton.create({
+ ID:"rb2",
+ left:140,
+ top:280,
+ width:33,
+ height:33,
+ src:"[APPIMG]imgButton/button.gif",
+ click:"if (selectedImgButton != this) {selectedImgButton.deselect(); selectedImgButton=this}; showClicked(this.getID())",
+ actionType:"radio"
+});
+
+
+ImgButton.create({
+ ID:"rb3",
+ left:260,
+ top:280,
+ width:33,
+ height:33,
+ src:"[APPIMG]imgButton/button.gif",
+ click:"if (selectedImgButton != this) {selectedImgButton.deselect(); selectedImgButton=this}; showClicked(this.getID())",
+ actionType:"radio"
+});
+
+
+var selectedImgButton = rb1;
+
+</SCRIPT>
+
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/index.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/index.html
new file mode 100755
index 0000000..191e8a9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/index.html
@@ -0,0 +1,101 @@
+<HTML>
+<HEAD>
+<STYLE>
+.normal {font-family:Verdana; font-size:12px;}
+.pageHeader {font-family:Verdana; font-size:24px; font-weight:bold;}
+</STYLE>
+<TITLE>SmartClient™ SDK - Visual Component Examples</TITLE>
+</HEAD>
+<BODY BGCOLOR='white' CLASS=normal>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0>
+ <TR>
+ <TD HEIGHT=100><a href="http://www.isomorphic.com"><IMG SRC="http://www.isomorphic.com/images/iso_top_logo.gif" WIDTH="256" HEIGHT="100" ALT="Isomorphic Software Logo" border="0"></a></TD>
+ <TD VALIGN=MIDDLE ALIGN=RIGHT><SPAN CLASS=pageHeader>SmartClient™ SDK<br>Visual Component Examples</SPAN><BR>
+ <SPAN WIDTH=100% CLASS=normal ALIGN=RIGHT>Version v8.2p_2012-06-03/LGPL Deployment (2012-06-03)</SPAN>
+ </TD>
+ </TR>
+</TABLE>
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+
+<table width=100% class="normal"><tr>
+<td valign=top>
+
+<b>Containment and Attachment</b><ul>
+<li><a href="widget_attachment.html">Widget containment and attachment</a></li>
+</ul>
+
+<b>Drawing Widgets</b><ul>
+<li><a href="widget_position_size.html">Dynamic positioning and sizing</a></li>
+<li><a href="widget_layering.html">Dynamic layering</a></li>
+<li><a href="canvas_clip_scroll.html">Widget overflow</a></li>
+</ul>
+
+<b>Handling Events</b><ul>
+<li><a href="event_propagation.html">Event propagation</a></li>
+<li><a href="widget_drag_appearance.html">Drag appearance</a></li>
+<li><a href="widget_drag_resize.html">Drag resize</a></li>
+<li><a href="event_details.html">Getting event details</a></li>
+<li><a href="keypress_handling.html">Keypress handling</a></li>
+<li><a href="event_logger.html">Event logger</a></li>
+</ul>
+
+<b>Images and Skins</b><ul>
+<li><a href="img_rollover.html">Img rollover</a></li>
+<li><a href="skin_custom.html">Custom Skin</a></li>
+</ul>
+
+<b>Labels, Buttons and Bars</b><ul>
+<li><a href="label.html">Label widget</a></li>
+<li><a href="button_selection.html">Button selection</a></li>
+<li><a href="scrollBar_custom.html">Custom scrollbars</a></li>
+<li><a href="progressbar.html">Progressbar</a></li>
+</ul>
+
+<b>Forms</b><ul>
+<li><a href="dynamicForm_init.html">Form initialization</a></li>
+<li><a href="dynamicForm_item_types.html">Form items</a></li>
+<li><a href="dynamicForm_annotations.html">Form item annotations</a></li>
+<li><a href="dynamicForm_layout.html">Form layout</a></li>
+<li><a href="dynamicForm_validators.html">Form item validation</a></li>
+</ul>
+
+</td><td valign=top>
+
+<b>ListGrids and DetailViewers</b><ul>
+<li><a href="listGrid_init.html">ListGrid initialization</a></li>
+<li><a href="detailViewer_init.html">DetailViewer initialization</a></li>
+<li><a href="listGrid_drag.html">ListGrid drag-and-drop</a></li>
+<li><a href="editableListGrid_init.html">Editable ListGrid initialization</a></li>
+</ul>
+
+<b>TreeGrids</b><ul>
+<li><a href="treeGrid_init.html">TreeGrid initialization</a></li>
+</ul>
+
+<b>Menus, Toolbars, and Menubars</b><ul>
+<li><a href="menu_init.html">Menu initialization</a></li>
+<li><a href="menu_features.html">Visual properties menu</a></li>
+<li><a href="toolbar_features.html">Visual properties toolbar</a></li>
+<li><a href="menubar_features.html">Visual properties menubar</a></li>
+</ul>
+
+<!-- -->
+
+<br><b>Other Components & Features</b><ul>
+<li><a href="imgButton_selection.html">ImgButton</a></li>
+<li><a href="stretchImgButton_selection.html">StretchImgButton</a></li>
+<li><a href="slider_colormixer.html">Slider</a></li>
+<li><a href="tabSet_init.html">TabSet</a></li>
+<li><a href="window_init.html">Window</a></li>
+<li><a href="dialog_globals.html">Dialog</a></li>
+<br>
+<br>
+<li><a href="refreshFromServer.html">In-place component refresh from server</a></li>
+<li><a href="replaceFromServer.html">In-place component replace from server</a></li>
+</ul>
+
+</tr></table>
+<br>
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+©2005 Isomorphic Software, Inc. All rights reserved. <a href="../../docs/license.html">License agreement.</a>
+</body></html>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/keypress_handling.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/keypress_handling.html
new file mode 100755
index 0000000..0664407
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/keypress_handling.html
@@ -0,0 +1,51 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Keypress handling example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Canvas.create({
+ ID:"widget",
+ left:200,
+ top:200,
+ width:100,
+ height:100,
+ backgroundImage:"yinyang_small.gif"
+});
+
+
+Page.registerKey("I", "target.moveBy(0,-20)", widget);
+Page.registerKey("J", "target.moveBy(-20,0)", widget);
+Page.registerKey("K", "target.moveBy(0,20)", widget);
+Page.registerKey("L", "target.moveBy(20,0)", widget);
+
+Page.registerKey("Arrow_Up", "target.moveBy(0, -20)", widget);
+Page.registerKey("Arrow_Left", "target.moveBy(-20,0)", widget);
+Page.registerKey("Arrow_Down", "target.moveBy(0,20)", widget);
+Page.registerKey("Arrow_Right", "target.moveBy(20,0)", widget);
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/label.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/label.html
new file mode 100755
index 0000000..95e18c2
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/label.html
@@ -0,0 +1,42 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Label example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Label.create({
+ ID:"myLabel",
+ left:50,
+ top:75,
+ height:50,
+ contents:"<B>This label is centered</B>",
+ align:"center",
+ border:"groove blue 4px",
+ backgroundColor:"lightgrey"
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/listGrid_drag.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/listGrid_drag.html
new file mode 100755
index 0000000..bed4330
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/listGrid_drag.html
@@ -0,0 +1,130 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ ListGrid drag-and-drop example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+// Data to be displayed
+var animalData1 = [
+ {canAcceptDrop:false, commonName:"Anaconda *", scientificName:'Eunectes murinus',diet:'Carnivore',lifeSpan:'unknown',information:"The anaconda is an excellent swimmer, but it also climbs on branches to dry off. It uses the water to rapidly escape predators and to conceal itself while searching for food. The anaconda is the world's longest, heaviest, and most powerful snake.",status:'Not currently listed'},
+ {commonName:'Elephant (African)',scientificName:'Loxodonta africana',diet:'Herbivore',lifeSpan:'40-60 years',information:'The African Elephant is the largest of all land animals and also has the biggest brain of any land animal. Both males and females have ivory tusks. Elephants are also wonderful swimmers. Man is the only real enemy of the elephant. Man threatens the elephant by killing it for its tusks and by destroying its habitat.',status:'Threatened'},
+ {commonName:'Alligator (American)',scientificName:'Allligator mississippiensis',diet:'Carnivore',lifeSpan:'50 years',information:'In the 16th century, Spanish explorers in what is now Florida encountered a large formidable animal which they called "el largo" meaning "the lizard". The name "el largo" gradually became pronounced "alligator".',status:'Not Endangered'},
+ {commonName:'Anteater',scientificName:'Myrmecophaga tridactyla',diet:'Ground dwelling ants/termites',lifeSpan:'25 years',information:'Anteaters can eat up to 35,000 ants daily. Tongue is around 2 feet long and is not sticky but rather covered with saliva. They have very strong sharp claws used for digging up anthills and termite mounds.',status:'Not Endangered'},
+ {commonName:'Camel (Arabian Dromedary)',scientificName:'Camelus dromedarius',diet:'Herbivore',lifeSpan:'20-50 years',information:'Can eat any vegetation including thorns. Has one hump for fat storage. Is well known as a beast of burden.',status:'Not Endangered'},
+ {commonName:'Bald Eagle',scientificName:'southern subspecies: Haliaeetus leucocephalus leuc',diet:'Carnivore',lifeSpan:'Up to 50 years',information:' Females lay one to three eggs. Visual acuity is 3-4 times greater than a human. Bald eagles build the largest nest of any North American bird. The largest nest found was 3.2 yds (2.9 m) in diameter and 6.7 yds (6.1 m) tall. Protection of the Bald Eagle is afforded by three federal laws: (1) the Endangered Species Act, (2) the Bald Eagle and Golden Eagle Protection Act, and (3) the Migratory Bird Treaty Act.',status:'Endangered'},
+ {commonName:'Black Spider Monkey',scientificName:'Ateles panicus',diet:'Herbivore',lifeSpan:'20 years',information:'They can perform remarkable feats with their tails.',status:'Not Endangered'},
+ {commonName:'Bottlenosed Dolphin',scientificName:'Tursiops truncatus',diet:'Fish shrimp eels and squid',lifeSpan:'35 years',information:'The bottlenosed dolphin is classified as a toothed whale. They are excellent hunters. They use sound waves to "see" their environment and where they are going through a process known as echolocation.',status:'Dolphins are vulnerable to commercial fishing practices and ocean pollution.'},
+ {commonName:'Boa Constrictor(Common)',scientificName:'Boa constrictor constrictor',diet:'Carnivore',lifeSpan:'40 years',information:'Boas kill by constriction, actually suffocating rather than crushing their prey. Spend time in trees but are primarily ground dwellers.',status:'Not Endangered'},
+ {commonName:'Screech Owl(Common)',scientificName:'Otus asio',diet:'Carnivore',lifeSpan:'10 years',information:' Generally does not migrate, most common in North America. Three color phases: red, grey and brown.',status:'Not Endangered'},
+ {commonName:'Costas Hummingbird',scientificName:'Calypte costae',diet:'Nectar and small insects',lifeSpan:'Up to 12 years',information:'Costas habit of soaring between flower beds is helpful in distinguishing it. Has a preference for red flowers. Males do not participate in nesting or raising young. Of the seven major species breeding in the West, the Costas prefers the driest climates. Nests are frequently held together with spider webs.',status:'Not Endangered'}
+ ],
+
+ animalData2 = [
+ {commonName:'Baboon (Guinea Baboon)',scientificName:'Papio papio',diet:'Omnivore',lifeSpan:'25-30 years',information:'These baboons live in large groups which consist of a hierarchical group structure based on a dominating male while breeding occurs; after breeding, the male leaves and a dominant female leads the troop. Much of their time is spent in feeding, grooming, and sleeping.',status:'May become threatened'},
+ {commonName:'Howler Monkey',scientificName:'Alouatta spp.',diet:'Herbivore',lifeSpan:'Over 20 years',information:' These animals produce a low growling sound that has been compared to the roar of a lion. These calls can be heard up to 3 km through the forest and are used to communicate danger as well as keeping the troop together.',status:'Endangered'},
+ {commonName:'Indian Rock Python',scientificName:'Python molurus molurus',diet:'Carnivore',lifeSpan:'20-30 years',information:'Can become very tame. The Python species are covered by import regulations and are therefore most available as captive bred specimens. Frightening numbers of these snakes have been killed for the leather trade.',status:'Not Endangered'},
+ {commonName:'Koala',scientificName:'Phascolarctos cinereus',diet:'Herbivore (Eucalyptus leaves)',lifeSpan:'10-15 years',information:'Koalas do not require water. Males larger than females. Noctural/crepuscular, sleeps up to 19 hours a day. Young are carried on mothers back after leaving pouch.',status:'Protected'},
+ {commonName:'Lion',scientificName:'Panthera leo - various subspecies',diet:'Carnivore',lifeSpan:'15 years',information:'Males have manes on cheeks and throat, some species have manes on shoulders and bellies. Young lions have leopard like markings. A pride usually consists of 4-12 related adult females, their offspring and 1-6 adult males. Lions eat animals weighing 110 or 1100 lbs.',status:'Endangered (Asiatic Lion only)'},
+ {commonName:'Salamander (Marbled Salamander)',scientificName:'Ambystoma opacum',diet:'Carnivore',lifeSpan:'5 to 8 years',information:'It is a beautiful animal, black with white or silvery bands. Lives well in captivity.',status:'Not Endangered.'},
+ {commonName:'Orangutan',scientificName:'Pongo pygmaeus',diet:'Fruits, Vegetation and Birds eggs',lifeSpan:'Up to 50 years',information:'Orangutan means "man of the forest". Enemies include tigers, clouded leopard, humans.',status:'Endangered'},
+ {commonName:'Ostrich',scientificName:'Struthio camelus',diet:'Insects, Fruit, seeds and grasses',lifeSpan:'40-50 years',information:'Largest of living birds. Adult males may exceed 8 feet in height and 300 lbs. in weight. In Egypt, the ostrich was the emblem of the Goddess of Truth and Justice.',status:'Endangered'},
+ {commonName:'Piranha',scientificName:'Plecostomus - Hypostomus plecostomus',diet:'Carnivore (mainly smaller fish)',lifeSpan:'Unknown',information:'Afraid of nothing; will attack any animal regardless of size. Is attracted by the smell of blood. Considered the most dangerous fish in the Amazon',status:'Not Endangered'},
+ {commonName:'Platypus',scientificName:'Ornithorhynchus Anatinus',diet:'Insects and Larvae',lifeSpan:'10-15 years',information:'Were thought to be a hoax when first discovered. The male has a venemous spur on his hind legs. Capable of many vocalizations including sounds like a growling puppy and a brooding hen.', status:'Not Endangered'},
+ {commonName:'Polar Bear',scientificName:'Ursus maritimus',diet:'Carnivore',lifeSpan:'30-40 years',information:'The polar bear is the largest non-aquatic carnivore. Its stomach can hold more than 150 lbs of food. The polar bears fur is water repellant and the individual hairs are clear due to hollow hair shafts. The feet of the polar bear serve as snow boots and as paddles when they are in the water.',status:'Protected in Russia'}
+ ],
+
+ briefAnimalFields = [
+ // Note: Columns not included in this list will not show up in the List viewer
+ {name:"commonName", title:"Animal"},
+ {name:"scientificName", title:"Scientific Name"}
+ // {name:"lifeSpan", title:"Life Span"},
+ // {name:"status",title:"Endangered Species Status"}
+ // {name:"diet", title:"Diet"},
+ // {name:"information", title:"Interesting Fact"}
+ ],
+
+ verboseAnimalFields = [
+ {name:"commonName", title:"Animal"},
+ {name:"scientificName", title:"Scientific Name"},
+ {name:"lifeSpan", title:"Life Span"},
+ {name:"diet", title:"Diet"},
+ {name:"status", title:"Endangered Status"}
+ ];
+
+ListGrid.create({
+ ID:"list1",
+ data:animalData1,
+ fields:briefAnimalFields,
+ left:50,
+ top:75,
+ width:300,
+ height:300,
+ cellPadding:3,
+ alternateRecordStyles:true,
+ canDragRecordsOut:true,
+ canAcceptDroppedRecords:true,
+ canReorderRecords:true,
+ canReorderFields:true,
+ canResizeFields:true
+});
+
+ListGrid.create({
+ ID:"list2",
+ autoDraw:false,
+ data:animalData2,
+ fields:verboseAnimalFields,
+ left:25,
+ top:25,
+ width:500,
+ height:300,
+ cellPadding:3,
+ alternateRecordStyles:true,
+ canDragRecordsOut:true,
+ canAcceptDroppedRecords:true,
+ canReorderRecords:false,
+ canReorderFields:true,
+ canResizeFields:true
+});
+Canvas.create({
+ ID:"list2Canvas",
+ left:400,
+ top:50,
+ width:550,
+ height:350,
+ backgroundColor:"pink",
+ children:[list2]
+});
+
+Label.create({
+ ID:"footnote",
+ left:75,
+ top:375,
+ width:300,
+ contents:"* - canAcceptDrop property set to <b>false</b>"
+
+});
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/listGrid_init.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/listGrid_init.html
new file mode 100755
index 0000000..dce07d1
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/listGrid_init.html
@@ -0,0 +1,88 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ ListGrid initialization example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+// Data to be displayed
+var animalData = [
+ {commonName:'Elephant (African)',scientificName:'Loxodonta africana',diet:'Herbivore',lifeSpan:'40-60 years',information:'The African Elephant is the largest of all land animals and also has the biggest brain of any land animal. Both males and females have ivory tusks. Elephants are also wonderful swimmers. Man is the only real enemy of the elephant. Man threatens the elephant by killing it for its tusks and by destroying its habitat.',status:'Threatened'},
+ {commonName:'Alligator (American)',scientificName:'Allligator mississippiensis',diet:'Carnivore',lifeSpan:'50 years',information:'In the 16th century, Spanish explorers in what is now Florida encountered a large formidable animal which they called "el largo" meaning "the lizard". The name "el largo" gradually became pronounced "alligator".',status:'Not Endangered'},
+ {commonName:'Anteater',scientificName:'Myrmecophaga tridactyla',diet:'Ground dwelling ants/termites',lifeSpan:'25 years',information:'Anteaters can eat up to 35,000 ants daily. Tongue is around 2 feet long and is not sticky but rather covered with saliva. They have very strong sharp claws used for digging up anthills and termite mounds.',status:'Not Endangered'},
+ {commonName:'Camel (Arabian Dromedary)',scientificName:'Camelus dromedarius',diet:'Herbivore',lifeSpan:'20-50 years',information:'Can eat any vegetation including thorns. Has one hump for fat storage. Is well known as a beast of burden.',status:'Not Endangered'},
+ {commonName:'Bald Eagle',scientificName:'southern subspecies: Haliaeetus leucocephalus leuc',diet:'Carnivore',lifeSpan:'Up to 50 years',information:'Females lay one to three eggs. Visual acuity is 3-4 times greater than a human. Bald eagles build the largest nest of any North American bird. The largest nest found was 3.2 yds (2.9 m) in diameter and 6.7 yds (6.1 m) tall. Protection of the Bald Eagle is afforded by three federal laws: (1) the Endangered Species Act, (2) the Bald Eagle and Golden Eagle Protection Act, and (3) the Migratory Bird Treaty Act.',status:'Endangered'},
+ {commonName:'Black Spider Monkey',scientificName:'Ateles panicus',diet:'Herbivore',lifeSpan:'20 years',information:'They can perform remarkable feats with their tails.',status:'Not Endangered'},
+ {commonName:'Bottlenosed Dolphin',scientificName:'Tursiops truncatus',diet:'Fish shrimp eels and squid',lifeSpan:'35 years',information:'The bottlenosed dolphin is classified as a toothed whale. They are excellent hunters. They use sound waves to "see" their environment and where they are going through a process known as echolocation.',status:'Dolphins are vulnerable to commercial fishing practices and ocean pollution.'},
+ {commonName:'Boa Constrictor(Common)',scientificName:'Boa constrictor constrictor',diet:'Carnivore',lifeSpan:'40 years',information:'Boas kill by constriction, actually suffocating rather than crushing their prey. Spend time in trees but are primarily ground dwellers.',status:'Not Endangered'},
+ {commonName:'Screech Owl(Common)',scientificName:'Otus asio',diet:'Carnivore',lifeSpan:'10 years',information:'Generally does not migrate, most common in North America. Three color phases: red, grey and brown.',status:'Not Endangered'},
+ {commonName:'Costas Hummingbird',scientificName:'Calypte costae',diet:'Nectar and small insects',lifeSpan:'Up to 12 years',information:'Costas habit of soaring between flower beds is helpful in distinguishing it. Has a preference for red flowers. Males do not participate in nesting or raising young. Of the seven major species breeding in the West, the Costas prefers the driest climates. Nests are frequently held together with spider webs.',status:'Not Endangered'},
+ {commonName:'Iguana (Cuban Ground Iguana)',scientificName:'Cyclura nubila nubila',diet:'Fruit and small vertebrates',lifeSpan:'10 years',information:'Easily become obese in captivity so must be fed sparingly. The ability to store up fat helps them to survive during times of drought.',status:'Threatened'},
+ {commonName:'Iguana (Desert Iguana)',scientificName:'Dipsosaurus dorsalis',diet:'Plants and insects',lifeSpan:'10 years',information:'Require much heat during the day. When in danger they flee by running in part on hind legs only. Able to remain active up to 115 degrees F; cool off by climbing into low shrubs.',status:'Not Endangered'},
+ {commonName:'Emu',scientificName:'Dromaius novaehollandiae',diet:'Herbivore',lifeSpan:'10-20 years',information:'The Emu is Australias largest bird and is second in size only to the ostrich. The Emu does not fly, but can run up to 30 mph (50 kph).',status:'Not currently listed; however, these birds are often exterminated by humans for destroying crops.'},
+ {commonName:'Stingray (Freshwater)',scientificName:'Potamotrygen motoro',diet:'Crustaceans worms and mollusks',lifeSpan:'Unknown',information:'Locate their prey by using the digging motion of their pectoral fins to excavate the substrate to expose the animals buried in the sand.',status:'Not Endangered'},
+ {commonName:'Octopus (Giant Pacific)',scientificName:'Octopus dofleini',diet:'Carnivore',lifeSpan:'1 to 3 years',information:'This is one of the largest known species of Octopus. Its diet will include almost anything it can overpower. Octopuses constantly flash many colors to blend in instantly with their surroundings. The female dies shortly after laying her eggs.',status:'Not endangered'},
+ {commonName:'Zebra (Grants Zebra)',scientificName:'Equus burchelli bohmi',diet:'Herbivore',lifeSpan:'20 years',information:'The stripe patterns of a zebra distinguish one subspecies from another. Zebras have a high resistance to the effects of drought, and they can eat dried grasses. The young are weaned at 6-8 months. Lions and hyenas are enemies.',status:'Not currently listed'},
+ {commonName:'Baboon (Guinea Baboon)',scientificName:'Papio papio',diet:'Omnivore',lifeSpan:'25-30 years',information:'These baboons live in large groups which consist of a hierarchical group structure based on a dominating male while breeding occurs; after breeding, the male leaves and a dominant female leads the troop. Much of their time is spent in feeding, grooming, and sleeping.',status:'May become threatened'},
+ {commonName:'Howler Monkey',scientificName:'Alouatta spp.',diet:'Herbivore',lifeSpan:'Over 20 years',information:'These animals produce a low growling sound that has been compared to the roar of a lion. These calls can be heard up to 3 km through the forest and are used to communicate danger as well as keeping the troop together.',status:'Endangered'},
+ {commonName:'Indian Rock Python',scientificName:'Python molurus molurus',diet:'Carnivore',lifeSpan:'20-30 years',information:'Can become very tame. The Python species are covered by import regulations and are therefore most available as captive bred specimens. Frightening numbers of these snakes have been killed for the leather trade.',status:'Not Endangered'},
+ {commonName:'Koala',scientificName:'Phascolarctos cinereus',diet:'Herbivore (Eucalyptus leaves)',lifeSpan:'10-15 years',information:'Koalas do not require water. Males larger than females. Noctural/crepuscular, sleeps up to 19 hours a day. Young are carried on mothers back after leaving pouch.',status:'Protected'},
+ {commonName:'Lion',scientificName:'Panthera leo - various subspecies',diet:'Carnivore',lifeSpan:'15 years',information:'Males have manes on cheeks and throat, some species have manes on shoulders and bellies. Young lions have leopard like markings. A pride usually consists of 4-12 related adult females, their offspring and 1-6 adult males. Lions eat animals weighing 110 or 1100 lbs.',status:'Endangered (Asiatic Lion only)'},
+ {commonName:'Salamander (Marbled Salamander)',scientificName:'Ambystoma opacum',diet:'Carnivore',lifeSpan:'5 to 8 years',information:'It is a beautiful animal, black with white or silvery bands. Lives well in captivity.',status:'Not Endangered.'},
+ {commonName:'Orangutan',scientificName:'Pongo pygmaeus',diet:'Fruits, Vegetation and Birds eggs',lifeSpan:'Up to 50 years',information:'Orangutan means "man of the forest". Enemies include tigers, clouded leopard, humans.',status:'Endangered'},
+ {commonName:'Ostrich',scientificName:'Struthio camelus',diet:'Insects, Fruit, seeds and grasses',lifeSpan:'40-50 years',information:'Largest of living birds. Adult males may exceed 8 feet in height and 300 lbs. in weight. In Egypt, the ostrich was the emblem of the Goddess of Truth and Justice.',status:'Endangered'},
+ {commonName:'Piranha',scientificName:'Plecostomus - Hypostomus plecostomus',diet:'Carnivore (mainly smaller fish)',lifeSpan:'Unknown',information:'Afraid of nothing; will attack any animal regardless of size. Is attracted by the smell of blood. Considered the most dangerous fish in the Amazon',status:'Not Endangered'},
+ {commonName:'Platypus',scientificName:'Ornithorhynchus Anatinus',diet:'Insects and Larvae',lifeSpan:'10-15 years',information:'Were thought to be a hoax when first discovered. The male has a venemous spur on his hind legs. Capable of many vocalizations including sounds like a growling puppy and a brooding hen.', status:'Not Endangered'},
+ {commonName:'Polar Bear',scientificName:'Ursus maritimus',diet:'Carnivore',lifeSpan:'30-40 years',information:'The polar bear is the largest non-aquatic carnivore. Its stomach can hold more than 150 lbs of food. The polar bears fur is water repellant and the individual hairs are clear due to hollow hair shafts. The feet of the polar bear serve as snow boots and as paddles when they are in the water.',status:'Protected in Russia'},
+ {commonName:'Tarantula (Red Legged Tarantula AKA Orange Knee Tarantula)',scientificName:'Brachypelma smithi',diet:'Insects, small reptiles and mammals',lifeSpan:'Males - 11 years, Females - 20 years',information:'Tarantulas shed their skin about once a month as hatchlings and will slow down to about once every year or two as adults. Their number one enemy is the Spider Hunting Wasp.',status:'Not Endangered'},
+ {commonName:'Gazelle (Thomsons Gazelle)',scientificName:'Gazella thomsoni',diet:'Herbivore',lifeSpan:'10 years',information:'The stiff-legged bouncing movement common to gazelles is called stotting or pronking. They can run quickly, 36 mph (57.6 km/hr), and if fleeing from an enemy, they can run as fast as 48 mph (76.8 km/hr).',status:'Not Currently Listed'}
+];
+
+var animalFields = [
+ {name:"commonName", hidden:true, title:"Animal"},
+ {name:"scientificName", title:"Scientific Name"},
+ // Note: Fields not included in this list will not show up in the ListGrid
+ //{name:"lifeSpan", title:"Life Span"},
+ //{name:"status",title:"Endangered Species Status"}
+ {name:"diet", title:"Diet"},
+ {name:"information", title:"Interesting Facts"}
+];
+
+ListGrid.create({
+ ID:"animalList",
+ data:animalData,
+sortFieldNum:2,
+
+ fields:animalFields,
+ canReorderRecords:true,
+ left:50,
+ top:75,
+ width:500,
+ height:300,
+ alternateRecordStyles:true
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/menu_features.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/menu_features.html
new file mode 100755
index 0000000..c40b28d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/menu_features.html
@@ -0,0 +1,103 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Visual properties menu example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Img.create({
+ ID:"widget",
+ left:300,
+ top:75,
+ width:100,
+ height:100,
+ src:"yinyang.gif"
+});
+
+Menu.create({
+ ID:"sizeMenu",
+ autoDraw:false,
+ data:[
+ {title:"Small", checkIf:"widget.width == 50",
+ click:"widget.setWidth(50);widget.setHeight(50)", keys:"S"},
+ {title:"Medium", checkIf:"widget.width == 100",
+ click:"widget.setWidth(100);widget.setHeight(100)", keys:"M"},
+ {title:"Large", checkIf:"widget.width == 200",
+ click:"widget.setWidth(200);widget.setHeight(200)", keys:"L"}
+ ],
+ width:150
+});
+
+
+Menu.create({
+ ID:"moveMenu",
+ autoDraw:false,
+ width:150,
+ data:[
+ {title:"Up", click:"widget.moveBy(0,-20)", keys:"U"},
+ {title:"Right", click:"widget.moveBy(20,0)", keys:"K"},
+ {title:"Down", click:"widget.moveBy(0,20)", keys:"J"},
+ {title:"Left", click:"widget.moveBy(-20,0)", keys:"H"}
+ ]
+});
+
+
+Menu.create({
+ ID:"mainMenu",
+ width:150,
+ data:[
+ {title:"Visible", keys:"V",
+ checkIf:"widget.isVisible()",
+ click:"widget.isVisible() ? widget.hide() : widget.show()"
+ },
+ {isSeparator:true},
+ {title:"Size", submenu:sizeMenu, enableIf:"widget.isVisible()" },
+ {title:"Move", submenu:moveMenu, enableIf:"widget.isVisible()" },
+ {isSeparator:true},
+ {title:"Reset",
+ click:"widget.setRect(300,75,100,100); widget.show()",
+ icon:"yinyang_icon.gif",
+ iconWidth:20,
+ iconHeight:20,
+ keys:{keyName:"R", shiftKey:true},
+ keyTitle:"Shift-R"
+ }
+ ]
+});
+
+MenuButton.create({
+ ID:"mainMenuButton",
+ title:"Widget",
+ left:50,
+ top:75,
+ width:150,
+ menu:mainMenu
+});
+
+// Set the menu as a context menu for the widget.
+widget.contextMenu = mainMenu;
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/menu_init.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/menu_init.html
new file mode 100755
index 0000000..53ba5a8
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/menu_init.html
@@ -0,0 +1,72 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Menu initialization example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+var recentMenuItems = [
+ {title:"File 1"},
+ {title:"File 2"},
+ {title:"File 3"}
+];
+
+Menu.create({
+ ID:"recentMenu",
+ autoDraw:false,
+ width:100,
+ data:recentMenuItems
+});
+
+
+var fileMenuItems = [
+ {title:"New..."},
+ {isSeparator:true},
+ {title:"Open..."},
+ {title:"Recent Files", submenu:recentMenu},
+ {isSeparator:true},
+ {title:"Save..."},
+ {title:"Save As..."},
+ {isSeparator:true},
+ {title:"Exit"}
+];
+
+Menu.create({
+ ID:"fileMenu",
+ width:150,
+ data:fileMenuItems
+});
+
+MenuButton.create({
+ left:50,
+ top:75,
+ width:150,
+ title:"File",
+ menu:fileMenu
+});
+
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/menubar_features.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/menubar_features.html
new file mode 100755
index 0000000..cfe57d5
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/menubar_features.html
@@ -0,0 +1,136 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Visual properties menubar example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Img.create({
+ ID:"widget",
+ autoDraw:false,
+ left:200,
+ top:60,
+ width:100,
+ height:100,
+ src:"yinyang.gif"
+});
+
+Canvas.create({
+ ID:"boundingBox",
+ autoDraw:false,
+ height:260,
+ backgroundColor:"white",
+ children:[widget]
+});
+
+Menu.create({
+ ID:"imageMenu",
+ autoDraw:false,
+ cellHeight:18,
+ menuButtonWidth:60,
+ data:[
+ {title:"Visible", keys:"V",
+ checkIf:"widget.isVisible()",
+ click:"widget.isVisible() ? widget.hide() : widget.show()"
+ },
+ {title:"Reset",
+ click:"widget.setRect(200,60,100,100); widget.show()",
+ icon:"yinyang_icon.gif",
+ iconWidth:20,
+ iconHeight:20,
+ keys:{keyName:"R", shiftKey:true},
+ keyTitle:"Shift-R"
+ }
+ ],
+ title:"Image"
+});
+
+Menu.create({
+ ID:"sizeMenu",
+ autoDraw:false,
+ cellHeight:18,
+ menuButtonWidth:60,
+ data: [
+ {title:"Small", checkIf:"widget.getWidth() == 50",
+ click:"widget.resizeTo(50, 50);widget.moveTo(225, 100);",
+ keys:"S", enableIf:"widget.isVisible()"},
+ {title:"Medium", checkIf:"widget.getWidth() == 100",
+ click:"widget.resizeTo(100, 100);widget.moveTo(200, 80);",
+ keys:"M", enableIf:"widget.isVisible()"},
+ {title:"Large", checkIf:"widget.getWidth() == 200",
+ click:"widget.resizeTo(200, 200);widget.moveTo(150, 25);",
+ keys:"L", enableIf:"widget.isVisible()"}
+ ],
+ title:"Size"
+});
+
+Menu.create({
+ ID:"positionMenu",
+ autoDraw:false,
+ cellHeight:18,
+ menuButtonWidth:60,
+ data:[
+ {title:"Up", click:"moveUp()", keys:"U", enableIf:"widget.isVisible()"},
+ {title:"Right", click:"moveRight()", keys:"K", enableIf:"widget.isVisible()"},
+ {title:"Down", click:"moveDown()", keys:"J", enableIf:"widget.isVisible()"},
+ {title:"Left", click:"moveLeft()", keys:"H", enableIf:"widget.isVisible()"}
+ ],
+ title:"Position"
+});
+
+Menubar.create({
+ ID:"menuBar",
+ autoDraw:false,
+ backgroundColor:"#CCCCCC",
+ menus:[imageMenu, sizeMenu, positionMenu]
+});
+
+VStack.create({
+ top:75, left:50, width:500,
+ members:[menuBar, boundingBox]
+});
+
+function moveUp() {
+ if (widget.getTop() >= 20)
+ widget.moveBy(0,-20);
+}
+
+function moveRight() {
+ if (widget.getLeft() <= (480 - widget.getWidth()))
+ widget.moveBy(20,0);
+}
+
+function moveDown() {
+ if (widget.getTop() <= (240 - widget.getHeight()))
+ widget.moveBy(0,20);
+}
+
+function moveLeft() {
+ if (widget.getLeft() >= 20)
+ widget.moveBy(-20,0);
+}
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/progressbar.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/progressbar.html
new file mode 100755
index 0000000..b90b505
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/progressbar.html
@@ -0,0 +1,43 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Progressbar example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Progressbar.create({
+ ID:"pb",
+ left:20,
+ top:45,
+ length:200,
+ percentDone:50
+});
+
+
+Page.setEvent("mouseMove", "pb.setPercentDone(Math.round(100*(pb.getOffsetX()/pb.getWidth())))");
+
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/refresh_response.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/refresh_response.html
new file mode 100755
index 0000000..9cc1402
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/refresh_response.html
@@ -0,0 +1,12 @@
+<HTML><BODY><SCRIPT>
+
+
+var refresh = {
+ width:300,
+ height:200,
+ backgroundColor:"lightblue",
+ contents:"After refreshFromServer<br><br>I am a bigger, blue, draggable canvas"
+};
+
+
+</SCRIPT></BODY></HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/refreshFromServer.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/refreshFromServer.html
new file mode 100755
index 0000000..01cb162
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/refreshFromServer.html
@@ -0,0 +1,48 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ RefreshFromServer example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient SDK
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Canvas.create({
+ ID:"refreshMe",
+ left:100, top:100,
+ canDragReposition:true,
+ backgroundColor:"silver",
+ contents:"Before refreshFromServer<br><br>I am a small, silver, draggable canvas"
+
+});
+
+Button.create({
+ title:"refreshFromServer",
+ left:100, top:400, width:200,
+ click: function () {
+ refreshMe.refreshFromServer('refresh_response.html', null, 'Refreshing...');
+ }
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/replace_response.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/replace_response.html
new file mode 100755
index 0000000..bbea185
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/replace_response.html
@@ -0,0 +1,12 @@
+<HTML><BODY><SCRIPT>
+
+
+var refresh = {
+ _constructor:"Button",
+ ID:"replaceMe",
+ left:100, top:100, width:300, height:200,
+ title:"After replaceFromServer, I am a big button"
+};
+
+
+</SCRIPT></BODY></HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/replaceFromServer.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/replaceFromServer.html
new file mode 100755
index 0000000..8dbce4f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/replaceFromServer.html
@@ -0,0 +1,47 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ ReplaceFromServer example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient SDK
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Canvas.create({
+ ID:"replaceMe",
+ left:100, top:100,
+ backgroundColor:"silver",
+ contents:"Before replaceFromServer, I am a small canvas"
+});
+
+
+Button.create({
+ title:"replaceFromServer",
+ left:100, top:400, width:200,
+ click: function () {
+ replaceMe.replaceFromServer('replace_response.html', null, 'Replacing...');
+ }
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/scrollBar_custom.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/scrollBar_custom.html
new file mode 100755
index 0000000..c00b3eb
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/scrollBar_custom.html
@@ -0,0 +1,114 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Custom scrollbars example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+// set the scrollbar's skinImgDir to point to our custom scrollbar images
+Scrollbar.setSkinImgDir("[APP]images/MacScrollbars/");
+ScrollThumb.setSkinImgDir("[APP]images/MacScrollbars/");
+
+// this skin uses the thumb down state
+Scrollbar.setProperties({
+ allowThumbDownState:true
+});
+
+Canvas.create({
+ ID:"scrolledWidget",
+ left:150,
+ top:225,
+ width:100,
+ height:100,
+ contents:Canvas.imgHTML("yinyang.gif", 200, 200),
+ overflow:"hidden"
+});
+
+
+var scrollbarWidth = 32;
+
+
+Scrollbar.create({
+ ID:"hscrollbar",
+ left:16,
+ top:41,
+ width:400,
+ vertical:false,
+ btnSize:scrollbarWidth,
+ showCorner:true,
+ imageType:"stretch",
+ scrollTarget:scrolledWidget,
+ autoEnable:false
+});
+
+
+Scrollbar.create({
+ ID:"vscrollbar",
+ left:hscrollbar.left + hscrollbar.width - scrollbarWidth,
+ top:hscrollbar.top + scrollbarWidth - 2,
+ height:400,
+ btnSize:scrollbarWidth,
+ imageType:"stretch",
+ scrollTarget:scrolledWidget,
+ autoEnable:false
+});
+
+
+Button.create({
+ left:60,
+ top:395,
+ width:130,
+ click:"hscrollbar.enable();vscrollbar.enable()",
+ title:"Enable scrollbars"
+});
+
+
+Button.create({
+ left:200,
+ top:395,
+ width:130,
+ click:"hscrollbar.disable();vscrollbar.disable()",
+ title:"Disable scrollbars"
+});
+
+Button.create({
+ left:60,
+ top:435,
+ width:130,
+ click:"scrolledWidget.scrollTo(50)",
+ title:"Scroll horizontal to 50"
+});
+
+Button.create({
+ left:200,
+ top:435,
+ width:130,
+ click:"scrolledWidget.scrollTo(null,50)",
+ title:"Scroll vertical to 50"
+});
+
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/skin_custom.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/skin_custom.html
new file mode 100755
index 0000000..1163998
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/skin_custom.html
@@ -0,0 +1,83 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Custom skin example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Tree.create({
+ ID:"animalTree",
+ root:
+ {name:"Zoo/", children:[
+ {name:"Aquarium/", children:[
+ {name:"Salt Water/", children:[
+ {name:"Bottlenose Dolphin", quantity:5, scientificName:'Tursiops truncatus'},
+ {name:"Giant Pacific Octopus", quantity:1, scientificName:'Octopus dofleini'}
+ ]},
+ {name:"Fresh Water/", children:[
+ {name:"Freshwater Stingray", quantity:7, scientificName:'Potamotrygen motoro'}
+ ]}
+ ]},
+ {name:"Reptile House/", children:[
+ {name:"Lizard House/", children:[
+ {name:"Cuban Ground Iguana", quantity:29, scientificName:'Cyclura nubila nubila'},
+ {name:"Desert Iguana", quantity:14, scientificName:'Dipsosaurus dorsalis'},
+ {name:"Marbled Salamander", quantity:6, scientificName:'Ambystoma opacum'}
+ ]},
+ {name:"Snake House/", children:[
+ {name:"Indian Rock Python", quantity:1, scientificName:'Python molurus molurus'}
+ ]}
+ ]},
+ {name:"Monkey House/", children:[
+ {name:"Howler Monkey", quantity:15, scientificName:'Alouatta spp.'},
+ {name:"Orangutan", quantity:7, scientificName:'Pongo pygmaeus'},
+ {name:"Guinea Baboon", quantity:3, scientificName:'Papio papio'}
+ ]},
+ {name:"Lion Enclosure/", children:[
+ {name:"Lion", quantity:12, scientificName:'Panthera leo'}
+ ]}
+ ]}
+});
+
+// Show the contents of some nodes
+animalTree.openFolder(animalTree.find("Zoo/Aquarium/"));
+animalTree.openFolder(animalTree.find("Zoo/Aquarium/Salt Water/"));
+animalTree.openFolder(animalTree.find("Zoo/Monkey House/"));
+animalTree.openFolder(animalTree.find("Zoo/Reptile House/"));
+
+TreeGrid.create({
+ ID:"animalViewer",
+ data:animalTree,
+ left:50,
+ top:50,
+ width:300,
+ height:250,
+ showAllRecords:true,
+ canDragRecordsOut:true,
+ canAcceptDroppedRecords:true
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/slider_colormixer.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/slider_colormixer.html
new file mode 100755
index 0000000..2e788c0
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/slider_colormixer.html
@@ -0,0 +1,122 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='powderblue' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Slider color mixer example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient SDK
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+function num2hex(num) {
+ var lowWord = num%16,
+ highWord = (num-lowWord)/16;
+ return num2hexdigit(highWord)+""+num2hexdigit(lowWord);
+}
+
+function num2hexdigit(num) {
+ if (num == 10) return "A";
+ else if (num == 11) return "B";
+ else if (num == 12) return "C";
+ else if (num == 13) return "D";
+ else if (num == 14) return "E";
+ else if (num == 15) return "F";
+ else return ""+num;
+}
+
+var colorBox = Canvas.newInstance({
+ left:400,
+ top:115,
+ width:200,
+ height:200,
+ red:"77",
+ green:"77",
+ blue:"77",
+ backgroundColor:"777777",
+ sliderMove:function(event,slider){
+ var newColor = num2hex(Math.round(slider.value));
+ if (slider.ID == "sliderRed") this.red = newColor;
+ else if (slider.ID == "sliderGreen") this.green = newColor;
+ else if (slider.ID == "sliderBlue") this.blue = newColor;
+ this.setBackgroundColor(this.red+""+this.green+""+this.blue);
+ return false;
+ }
+});
+
+Slider.newInstance({
+ ID:"sliderRed",
+ title:"Red",
+ left:60,
+ top:90,
+ sliderTarget:colorBox,
+ value:128,
+ minValue:0,
+ maxValue:255
+});
+
+
+Slider.newInstance({
+ ID:"sliderGreen",
+ title:"Green",
+ left:155,
+ top:90,
+ //sliderTarget:colorBox,
+ value:128,
+ minValue:0,
+ maxValue:255
+});
+
+
+Slider.newInstance({
+ ID:"sliderBlue",
+ title:"Blue",
+ left:250,
+ top:90,
+ //sliderTarget:colorBox,
+ value:128,
+ minValue:0,
+ maxValue:255
+});
+
+
+Slider.newInstance({
+ ID:"sliderSize",
+ title:"Size",
+ left:350,
+ top:330,
+ vertical:false,
+ value:200,
+ minValue:20,
+ minValueLabel:"Small",
+ maxValue:200,
+ maxValueLabel:"Big",
+ numValues:10
+});
+
+
+//colorBox.observe(sliderRed, "valueChanged", "observer.sliderMove(null,observed)");
+colorBox.observe(sliderGreen, "valueChanged", "observer.sliderMove(null,observed)");
+colorBox.observe(sliderBlue, "valueChanged", "observer.sliderMove(null,observed)");
+colorBox.observe(sliderSize, "valueChanged", "observer.resizeTo(observed.value,observed.value)");
+
+</SCRIPT>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/stretchImgButton_selection.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/stretchImgButton_selection.html
new file mode 100755
index 0000000..9218057
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/stretchImgButton_selection.html
@@ -0,0 +1,169 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ StretchImgButton selection example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient SDK
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Label.create({
+ ID:"results",
+ height:20,
+ width:200,
+ top:300,
+ left:35
+})
+function showClicked(name) {
+ results.setContents(name + ' clicked');
+}
+
+// Buttons
+StretchImgButton.create({
+ ID:"b1",
+ left:20,
+ top:80,
+ width:80,
+ height:33,
+ vertical:false,
+ capSize:16,
+ title:"Button",
+ src:"[APPIMG]stretchImgButton/button.gif",
+ click:"showClicked(this.title)"
+});
+
+
+StretchImgButton.create({
+ ID:"b2",
+ left:120,
+ top:80,
+ width:80,
+ height:33,
+ vertical:false,
+ capSize:16,
+ title:"Disabled",
+ src:"[APPIMG]stretchImgButton/button.gif",
+ click:"showClicked(this.title)",
+ disabled:true
+});
+
+
+StretchImgButton.create({
+ ID:"cb1",
+ left:20,
+ top:140,
+ width:100,
+ height:33,
+ vertical:false,
+ capSize:16,
+ title:"Checkbox 1",
+ src:"[APPIMG]stretchImgButton/button.gif",
+ click:"showClicked(this.title)",
+ selected:true,
+ actionType:"checkbox"
+});
+
+
+StretchImgButton.create({
+ ID:"cb2",
+ left:140,
+ top:140,
+ width:100,
+ height:33,
+ vertical:false,
+ capSize:16,
+ title:"Checkbox 2",
+ src:"[APPIMG]stretchImgButton/button.gif",
+ click:"showClicked(this.title)",
+ actionType:"checkbox"
+});
+
+
+StretchImgButton.create({
+ ID:"cb3",
+ left:260,
+ top:140,
+ width:150,
+ height:33,
+ vertical:false,
+ capSize:16,
+ title:"Selected & Disabled",
+ src:"[APPIMG]stretchImgButton/button.gif",
+ click:"showClicked(this.title)",
+ disabled:true,
+ selected:true,
+ actionType:"checkbox"
+});
+
+
+StretchImgButton.create({
+ ID:"rb1",
+ left:20,
+ top:200,
+ width:120,
+ height:33,
+ vertical:false,
+ capSize:16,
+ title:"Radio Button 1",
+ src:"[APPIMG]stretchImgButton/button.gif",
+ click:"if (selectedStretchImgButton != this) {selectedStretchImgButton.deselect(); selectedStretchImgButton=this}; showClicked(this.title)",
+ selected:true,
+ actionType:"radio"
+});
+
+
+StretchImgButton.create({
+ ID:"rb2",
+ left:160,
+ top:200,
+ width:120,
+ height:33,
+ vertical:false,
+ capSize:16,
+ title:"Radio Button 2",
+ src:"[APPIMG]stretchImgButton/button.gif",
+ click:"if (selectedStretchImgButton != this) {selectedStretchImgButton.deselect(); selectedStretchImgButton=this}; showClicked(this.title)",
+ actionType:"radio"
+});
+
+
+StretchImgButton.create({
+ ID:"rb3",
+ left:300,
+ top:200,
+ width:120,
+ height:33,
+ vertical:false,
+ capSize:16,
+ title:"Radio Button 3",
+ src:"[APPIMG]stretchImgButton/button.gif",
+ click:"if (selectedStretchImgButton != this) {selectedStretchImgButton.deselect(); selectedStretchImgButton=this}; showClicked(this.title)",
+ actionType:"radio"
+});
+
+
+var selectedStretchImgButton = rb1;
+
+</SCRIPT>
+
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/tabSet_init.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/tabSet_init.html
new file mode 100755
index 0000000..4995e49
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/tabSet_init.html
@@ -0,0 +1,75 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ TabSet initialization example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient SDK
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Canvas.create({
+ ID:"pane1",
+ backgroundColor:"red",
+ left:10,
+ top:10,
+ width:200,
+ height:200,
+ autoDraw:false
+});
+
+Canvas.create({
+ ID:"pane2",
+ backgroundColor:"green",
+ left:10,
+ top:10,
+ width:200,
+ height:200,
+ autoDraw:false
+});
+
+Canvas.create({
+ ID:"pane3",
+ backgroundColor:"blue",
+ left:10,
+ top:10,
+ width:200,
+ height:200,
+ autoDraw:false
+});
+
+
+TabSet.create({
+ ID:"tabSet",
+ top:50,
+ left:50,
+ width:600,
+ height:400,
+ selectedTab:0,
+ tabBarPosition:"top",
+ tabs:[{title:"red", pane:pane1, width:70},
+ {title:"green", pane:pane2, width:70},
+ {title:"blue", pane:pane3, width:70}]
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/toolbar_features.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/toolbar_features.html
new file mode 100755
index 0000000..d6204d8
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/toolbar_features.html
@@ -0,0 +1,68 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Visual properties toolbar example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Img.create({
+ ID:"widget",
+ left:250,
+ top:180,
+ width:100,
+ height:100,
+ src:"yinyang.gif"
+});
+
+Toolbar.create({
+ ID:"widgetToolbar",
+ left:50,
+ top:50,
+ width:600,
+ membersMargin:2,
+ buttons:[
+ // Note: both 'click' and 'doubleClick' events are defined here - double clicking will execute the click event
+ // handler once, and the doubleClick event handler once.
+ // The state of the checkbox button (checked vs unchecked) will be changed twice - once on each mouseUp event.
+ {title:"Visible", actionType:"checkbox", selected:true,
+ click:"widget.isVisible() ? widget.hide() : widget.show()",
+ doubleClick:"widget.isVisible() ? widget.hide() : widget.show()",
+ extraSpace:10},
+ {title:"Small", actionType:"radio", click:"widget.setWidth(50);widget.setHeight(50)"},
+ {title:"Medium", actionType:"radio", selected:true, click:"widget.setWidth(100);widget.setHeight(100)"},
+ {title:"Large", actionType:"radio", click:"widget.setWidth(200);widget.setHeight(200)",
+ extraSpace:10},
+ {title:"Up", click:"widget.moveBy(0,-20)"},
+ {title:"Right", click:"widget.moveBy(20,0)"},
+ {title:"Down", click:"widget.moveBy(0,20)"},
+ {title:"Left", click:"widget.moveBy(-20,0)",
+ extraSpace:10},
+ {title:"Reset", click:"widget.setRect(250,180,100,100); widget.show(); this.parentElement.selectButton(0); this.parentElement.selectButton(2)", width:100}
+
+ ]
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/treeGrid_init.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/treeGrid_init.html
new file mode 100755
index 0000000..fba8b6c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/treeGrid_init.html
@@ -0,0 +1,123 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ TreeGrid initialization example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Tree.create({
+ ID:"animalTree",
+ root:
+ {name:"Zoo", children:[
+ {name:"Aquarium", children:[
+ {name:"Salt Water", children:[
+ {name:"Bottlenose Dolphin", quantity:5, scientificName:'Tursiops truncatus'},
+ {name:"Giant Pacific Octopus", quantity:1, scientificName:'Octopus dofleini'}
+ ]},
+ {name:"Fresh Water", children:[
+ {name:"Freshwater Stingray", quantity:7, scientificName:'Potamotrygen motoro'}
+ ]}
+ ]},
+ {name:"Reptile House", children:[
+ {name:"Lizard House", children:[
+ {name:"Cuban Ground Iguana", quantity:29, scientificName:'Cyclura nubila nubila'},
+ {name:"Desert Iguana", quantity:14, scientificName:'Dipsosaurus dorsalis'},
+ {name:"Marbled Salamander", quantity:6, scientificName:'Ambystoma opacum'}
+ ]},
+ {name:"Snake House", children:[
+ {name:"Indian Rock Python", quantity:1, scientificName:'Python molurus molurus'}
+ ]}
+ ]},
+ {name:"Monkey House", children:[
+ {name:"Howler Monkey", quantity:15, scientificName:'Alouatta spp.'},
+ {name:"Orangutan", quantity:7, scientificName:'Pongo pygmaeus'},
+ {name:"Guinea Baboon", quantity:3, scientificName:'Papio papio'}
+ ]},
+ {name:"Lion Enclosure", children:[
+ {name:"Lion", quantity:12, scientificName:'Panthera leo'}
+ ]}
+ ]}
+});
+
+var saltWaterTank = animalTree.find("Zoo/Aquarium/Salt Water");
+var orangutanNode = animalTree.find("Zoo/Monkey House/Orangutan");
+
+// Show the contents of some nodes
+animalTree.openFolder(animalTree.find("Zoo/Aquarium"));
+animalTree.openFolder(animalTree.find("Zoo/Aquarium/Salt Water"));
+animalTree.openFolder(animalTree.find("Zoo/Monkey House"));
+
+var animalFields = [
+ {name:"name", title:"Animal Name", width:250},
+ {name:"scientificName", title:"Scientific Name", width:150},
+ {name:"quantity", title:"Number", width:50}
+];
+TreeGrid.create({
+ ID:"animalViewer",
+ data:animalTree,
+ fields:animalFields,
+ left:50,
+ top:50,
+ width:500,
+ height:275,
+ canDragRecordsOut:true,
+ canAcceptDroppedRecords:true
+});
+
+
+Button.create({
+ left:50,
+ top:400,
+ width:150,
+ title:"Add Nurse Shark",
+ click:"animalTree.add({name:'Nurse Shark', quantity:1, scientificName:'Ginglymostoma cirratum'}, saltWaterTank); this.disable()"
+});
+
+Button.create({
+ left:300,
+ top:400,
+ width:150,
+ title:"Remove Orangutan",
+ click:"animalTree.remove(orangutanNode); this.disable()"
+});
+
+Button.create({
+ left:50,
+ top:450,
+ width:150,
+ title:"Open all nodes",
+ click:"animalTree.openAll()"
+});
+
+Button.create({
+ left:300,
+ top:450,
+ width:150,
+ title:"Close all nodes",
+ click:"animalTree.closeAll()"
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/treeGrid_init_connectors.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/treeGrid_init_connectors.html
new file mode 100755
index 0000000..8c06aa1
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/treeGrid_init_connectors.html
@@ -0,0 +1,138 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ TreeGrid initialization example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<STYLE>
+.tgcell {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:black; background-color:#FFFFFF;}
+.tgcellOver {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:black; background-color:#EFEFEF;}
+.tgcellSelected {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:black; background-color:#A9B2CA;}
+.tgcellSelectedOver {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:black; background-color:#99A2BA;}
+.tgcellDisabled {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:#666666; background-color:#FFFFFF;}
+.tgcellDark {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:black; background-color:#EEEEEE;}
+.tgcellOverDark {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:black; background-color:#DEDEDE;}
+.tgcellSelectedDark {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:black; background-color:#A9B2CA;}
+.tgcellSelectedOverDark {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:black; background-color:#99A2BA;}
+.tgcellDisabledDark {font-family:Verdana,Helvetica,sans-serif; font-size:11px; color:#666666; background-color:#FFFFFF;}
+</STYLE>
+
+<SCRIPT>
+
+Tree.create({
+ ID:"animalTree",
+ root:
+ {name:"Zoo/", children:[
+ {name:"Aquarium/", children:[
+ {name:"Salt Water/", children:[
+ {name:"Bottlenose Dolphin", quantity:5, scientificName:'Tursiops truncatus'},
+ {name:"Giant Pacific Octopus", quantity:1, scientificName:'Octopus dofleini'}
+ ]},
+ {name:"Fresh Water/", children:[
+ {name:"Freshwater Stingray", quantity:7, scientificName:'Potamotrygen motoro'}
+ ]}
+ ]},
+ {name:"Reptile House/", children:[
+ {name:"Lizard House/", children:[
+ {name:"Cuban Ground Iguana", quantity:29, scientificName:'Cyclura nubila nubila'},
+ {name:"Desert Iguana", quantity:14, scientificName:'Dipsosaurus dorsalis'},
+ {name:"Marbled Salamander", quantity:6, scientificName:'Ambystoma opacum'}
+ ]},
+ {name:"Snake House/", children:[
+ {name:"Indian Rock Python", quantity:1, scientificName:'Python molurus molurus'}
+ ]}
+ ]},
+ {name:"Monkey House/", children:[
+ {name:"Howler Monkey", quantity:15, scientificName:'Alouatta spp.'},
+ {name:"Orangutan", quantity:7, scientificName:'Pongo pygmaeus'},
+ {name:"Guinea Baboon", quantity:3, scientificName:'Papio papio'}
+ ]},
+ {name:"Lion Enclosure/", children:[
+ {name:"Lion", quantity:12, scientificName:'Panthera leo'}
+ ]}
+ ]}
+});
+
+var saltWaterTank = animalTree.find("Zoo/Aquarium/Salt Water/");
+var orangutanNode = animalTree.find("Zoo/Monkey House/Orangutan");
+
+// Show the contents of some nodes
+animalTree.openFolder(animalTree.find("Zoo/Aquarium/"));
+animalTree.openFolder(animalTree.find("Zoo/Aquarium/Salt Water/"));
+animalTree.openFolder(animalTree.find("Zoo/Monkey House/"));
+
+var animalFields = [
+ TreeGrid.TREE_FIELD,
+ {name:"scientificName", title:"Scientific Name", width:150},
+ {name:"quantity", title:"Number", width:50}
+];
+
+TreeGrid.create({
+ ID:"animalViewer",
+ data:animalTree,
+ fields:animalFields,
+ left:50,
+ top:50,
+ width:500,
+ height:275,
+ canDragRecordsOut:true,
+ canAcceptDroppedRecords:true,
+ showConnectors:true,
+ baseStyle:"tgcell"
+});
+
+Button.create({
+ left:50,
+ top:400,
+ width:150,
+ title:"Add Nurse Shark",
+ click:"animalTree.add({name:'Nurse Shark', quantity:1, scientificName:'Ginglymostoma cirratum'}, saltWaterTank); this.disable()"
+});
+
+Button.create({
+ left:300,
+ top:400,
+ width:150,
+ title:"Remove Orangutan",
+ click:"animalTree.remove(orangutanNode); this.disable()"
+});
+
+Button.create({
+ left:50,
+ top:450,
+ width:150,
+ title:"Open all nodes",
+ click:"animalTree.openAll()"
+});
+
+Button.create({
+ left:300,
+ top:450,
+ width:150,
+ title:"Close all nodes",
+ click:"animalTree.closeAll()"
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_attachment.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_attachment.html
new file mode 100755
index 0000000..1ef567a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_attachment.html
@@ -0,0 +1,150 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Dynamic containment and attachment example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+//
+// widgets you manipulate on the page
+//
+
+// the big gray fields
+Canvas.create({
+ ID:"P1",
+ left:300,
+ top:50,
+ width:200,
+ height:200,
+ overflow:"hidden",
+ canDragReposition:true,
+ dragAppearance:"target",
+ backgroundColor:"lightgrey",
+ contents:"P1"
+});
+
+Canvas.create({
+ ID:"P2",
+ left:550,
+ top:50,
+ width:200,
+ height:200,
+ overflow:"hidden",
+ canDragReposition:true,
+ dragAppearance:"target",
+ backgroundColor:"lightslategray",
+ contents:"P2"
+});
+
+
+// the smaller colored boxes
+Canvas.create({
+ ID:"M1",
+ left:75,
+ top:100,
+ width:50,
+ height:50,
+ canDragReposition:true,
+ dragAppearance:"target",
+ backgroundColor:"khaki",
+ contents:"M1"
+});
+
+Canvas.create({
+ ID:"A1",
+ left:25,
+ top:50,
+ width:50,
+ height:50,
+ canDragReposition:true,
+ dragAppearance:"target",
+ backgroundColor:"lightseagreen",
+ contents:"A1"
+});
+
+Canvas.create({
+ ID:"A2",
+ left:125,
+ top:50,
+ width:50,
+ height:50,
+ canDragReposition:true,
+ dragAppearance:"target",
+ backgroundColor:"lightskyblue",
+ contents:"A2"
+});
+
+Canvas.create({
+ ID:"B1",
+ left:25,
+ top:150,
+ width:50,
+ height:50,
+ canDragReposition:true,
+ dragAppearance:"target",
+ backgroundColor:"lightsalmon",
+ contents:"B1"
+});
+
+Canvas.create({
+ ID:"B2",
+ left:125,
+ top:150,
+ width:50,
+ height:50,
+ canDragReposition:true,
+ dragAppearance:"target",
+ backgroundColor:"yellow",
+ contents:"B2"
+});
+//B1.addPeer(B2);
+
+
+//
+// labels and buttons to manipulate the above
+//
+
+Label.create({ left:80, top:295, width:150, height:20, contents:"<B>A1 Parent/Peer:</B>", align:"center" });
+Button.create({ left:80, top:325, width:150, height:30, title:"P1.addChild(A1)", click:"P1.addChild(A1)" });
+Button.create({ left:80, top:365, width:150, height:30, title:"P2.addChild(A1)", click:"P2.addChild(A1)" });
+Button.create({ left:80, top:405, width:150, height:30, title:"M1.addPeer(A1)", click:"M1.addPeer(A1)" });
+
+Label.create({ left:240, top:295, width:150, height:20, contents:"<B>B1 Parent/Peer:</B>", align:"center" });
+Button.create({ left:240, top:325, width:150, height:30, title:"P2.addChild(B1)", click:"P2.addChild(B1)" });
+Button.create({ left:240, top:365, width:150, height:30, title:"P1.addChild(B1)", click:"P1.addChild(B1)" });
+Button.create({ left:240, top:405, width:150, height:30, title:"M1.addPeer(B1)", click:"M1.addPeer(B1)" });
+
+Label.create({ left:400, top:295, width:150, height:20, contents:"<B>A2 Peer:</B>", align:"center" });
+Button.create({ left:400, top:325, width:150, height:30, title:"A1.addPeer(A2)", click:"A1.addPeer(A2)" });
+Button.create({ left:400, top:365, width:150, height:30, title:"B1.addPeer(A2)", click:"B1.addPeer(A2)" });
+Button.create({ left:400, top:405, width:150, height:30, title:"M1.addPeer(A2)", click:"M1.addPeer(A2)" });
+
+Label.create({ left:560, top:295, width:150, height:20, contents:"<B>B2 Peer:</B>", align:"center" });
+Button.create({ left:560, top:325, width:150, height:30, title:"B1.addPeer(B2)", click:"B1.addPeer(B2)" });
+Button.create({ left:560, top:365, width:150, height:30, title:"A1.addPeer(B2)", click:"A1.addPeer(B2)" });
+Button.create({ left:560, top:405, width:150, height:30, title:"M1.addPeer(B2)", click:"M1.addPeer(B2)" });
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_drag_appearance.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_drag_appearance.html
new file mode 100755
index 0000000..6d238a2
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_drag_appearance.html
@@ -0,0 +1,191 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Drag appearance example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<!-- HTML form containing two checkbox controls -->
+<DIV STYLE='padding:0px 0px 0px 20px' CLASS='normal'>
+<form action="" method="POST" name="f">
+<input type="Checkbox" name="intersect" onclick="setIntersectStyles(this.checked)">dropOver on widget intersection<br>
+<input type="Checkbox" name="resetPos">reset widget position on dragRepositionStop
+</form>
+</DIV>
+
+<SCRIPT>
+
+// --------------------------------------------------
+// canDragReposition widget with TARGET dragAppearance
+// --------------------------------------------------
+
+Canvas.create({
+ ID:"dragReposition",
+ left:50,
+ top:125,
+ width:100,
+ height:100,
+ contents:"Target Drag",
+ backgroundColor:"violet",
+ canDragReposition:true,
+ canDrop:true,
+ dragAppearance:"target",
+ dragRepositionStop:"if (resetPosition.checked) return false;"
+});
+
+
+// --------------------------------------------------
+// Outline Drag widget...
+// --------------------------------------------------
+Canvas.create({
+ ID:"dragOutline",
+ left:310,
+ top:125,
+ width:100,
+ height:100,
+ canDragReposition:true,
+ canDrop:true,
+ contents:"Outline Drag",
+ backgroundColor:"gold",
+ dragAppearance:"outline",
+ dragRepositionStop:"if (resetPosition.checked) return false;"
+});
+
+// --------------------------------------------------
+// canDrag widget with TRACKER dragAppearance
+// --------------------------------------------------
+Canvas.create({
+ ID:"dragTracked",
+ left:50,
+ top:385,
+ width:100,
+ height:100,
+ contents:"Use Drag Tracker",
+ backgroundColor:"lightgreen",
+ canDragReposition:true,
+ canDrop:true,
+ dragAppearance:"tracker",
+ setDragTracker:"EventHandler.setDragTracker(this.imgHTML('yinyang_icon.gif',20,20))",
+ dragRepositionStop:"if (resetPosition.checked) return false;"
+});
+
+
+// --------------------------------------------------
+// Parent of next widget
+// --------------------------------------------------
+Canvas.create({
+ ID:"topParent",
+ left:310,
+ top:385,
+ width:100,
+ height:100,
+ canDrop:true,
+ contents:"parent",
+ backgroundColor:"salmon",
+ dragRepositionStop:"if (resetPosition.checked) return false;",
+ dragAppearance:"outline"
+
+});
+// --------------------------------------------------
+// canDragReposition child widget with dragTarget set to "top"
+// --------------------------------------------------
+Canvas.create({
+ ID:"dragRepositionTop",
+ autoDraw:false,
+ left:20,
+ top:20,
+ width:60,
+ height:60,
+ contents:"Drag Reposition Top",
+ backgroundColor:"mediumpurple",
+ canDragReposition:true,
+ dragTarget:"top"
+});
+topParent.addChild(dragRepositionTop);
+
+
+// --------------------------------------------------
+// canAcceptDrop widget
+// --------------------------------------------------
+Canvas.create({
+ ID:"dropZone",
+ left:180,
+ top:255,
+ width:100,
+ height:100,
+ contents:"Drop Zone",
+ backgroundColor:"skyblue",
+ canAcceptDrop:true,
+ dropOver:"this.setBackgroundColor('powderblue')",
+ dropOut:"this.setBackgroundColor('skyblue')",
+ drop:"alert('drop')"
+});
+//dropZone.sendToBack();
+
+
+
+// --------------------------------------------------
+// scripts for working with the HTML form
+// --------------------------------------------------
+
+// shortcut references to form elements
+var resetPosition = document.f.resetPos;
+
+// switch dragIntersectStyles
+function setIntersectStyles(on) {
+ if (on) {
+ dragTracked.dragIntersectStyle="rect";
+ dragTracked.setContents("Use Drag Tracker (intersect rect)");
+ dragReposition.dragIntersectStyle="rect";
+ dragReposition.setContents("Drag Reposition (intersect rect)");
+ dragOutline.dragIntersectStyle="rect";
+ dragOutline.setContents("Outline Drag (intersect rect)");
+ // NOTE: you need to change the dragIntersectStyle of the topParent,
+ // since that ends up being the dragTarget
+ topParent.dragIntersectStyle="rect";
+ dragRepositionTop.setContents("Drag Reposition Top (intersect rect)");
+ }
+ else {
+ dragTracked.dragIntersectStyle="mouse";
+ dragTracked.setContents("Use Drag Tracker");
+ dragReposition.dragIntersectStyle="mouse";
+ dragReposition.setContents("Drag Reposition");
+ dragOutline.dragIntersectStyle="mouse";
+ dragOutline.setContents("Outline Drag");
+ // NOTE: you need to change the dragIntersectStyle of the topParent,
+ // since that ends up being the dragTarget
+ topParent.dragIntersectStyle="mouse";
+ dragRepositionTop.setContents("Drag Reposition Top");
+ }
+}
+
+// initialize the form
+function initializeForm() {
+ document.f.intersect.checked = false;
+ resetPosition.checked = true;
+}
+
+Page.setEvent("load", "initializeForm()");
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_drag_resize.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_drag_resize.html
new file mode 100755
index 0000000..5e982bf
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_drag_resize.html
@@ -0,0 +1,158 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Drag resize example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<!-- HTML form containing reset button -->
+<DIV STYLE='padding:0px 0px 0px 20px'>
+<form action="" method="POST" name="f">
+<input type="Button" name="reset" onclick="resetWidgets()" value="Reset Widgets">
+</form>
+</DIV>
+
+<SCRIPT>
+
+// --------------------------------------------------
+// A Function for the HTML form to reset the widgets
+// --------------------------------------------------
+
+function resetWidgets(){
+ dragTargetResize.moveTo(50,125);
+ dragTargetResize.resizeTo(100,100);
+
+ dragOutlineResize.moveTo(250,125);
+ dragOutlineResize.resizeTo(100,100);
+
+ dragLeftRightResize.moveTo(50,325);
+ dragLeftRightResize.resizeTo(100,100);
+
+ topParent.moveTo(250,325);
+ topParent.resizeTo(100,100);
+
+}
+
+// --------------------------------------------------
+// A Widget showing dragTargetResize on all edges
+// --------------------------------------------------
+
+Canvas.create({
+ ID:"dragTargetResize",
+ left:50,
+ top:125,
+ width:100,
+ height:100,
+ minHeight:50,
+ minWidth:50,
+ overflow:"hidden",
+ contents:"dragAppearance set to <i>Target<\/i>.<br>Can Resize from all corners and sides.",
+ backgroundColor:"violet",
+ canDragResize:true,
+ resizeFrom:null, // All corners/edges
+ dragAppearance:"target"
+});
+
+
+// --------------------------------------------------
+// Outline Resize widget...
+// --------------------------------------------------
+Canvas.create({
+ ID:"dragOutlineResize",
+ left:250,
+ top:125,
+ width:100,
+ height:100,
+ minHeight:50,
+ minWidth:50,
+ overflow:"hidden",
+ contents:"dragAppearance set to <i>Outline<\/i>.<br>Can Resize from all corners and sides.",
+ backgroundColor:"gold",
+ canDragResize:true,
+ resizeFrom:null, //All corners/edges
+ dragAppearance:"outline"
+
+});
+
+// --------------------------------------------------
+// Resize from Left and Right only
+// --------------------------------------------------
+Canvas.create({
+ ID:"dragLeftRightResize",
+ left:50,
+ top:325,
+ width:100,
+ height:100,
+ minWidth:50,
+ overflow:"hidden",
+ contents:"dragAppearance unspecified.<br>Can Resize from left and right sides.",
+ backgroundColor:"lightgreen",
+ canDragResize:true,
+ resizeFrom:["L","R"]
+
+});
+
+
+// --------------------------------------------------
+// Parent of next widget
+// --------------------------------------------------
+Canvas.create({
+ ID:"topParent",
+ left:250,
+ top:325,
+ width:100,
+ height:100,
+ minWidth:50,
+ minHeight:50,
+ overflow:"hidden",
+ dragAppearance:"target",
+ contents:"Widget resized by a child widget.",
+ backgroundColor:"salmon",
+ layoutChildren:function() {
+ this.Super("layoutChildren", arguments);
+ var resizeBox = this.children[0];
+ resizeBox.moveTo(this.getWidth()-resizeBox.getVisibleWidth(),
+ this.getHeight()-resizeBox.getVisibleHeight());
+ }
+});
+
+// --------------------------------------------------
+// child widget used as a 'handle' to resize its parent
+// --------------------------------------------------
+Canvas.create({
+ ID:"dragResizeBox",
+ autoDraw:false,
+ left:50,
+ top:75,
+ width:50,
+ height:25,
+ contents:"Resize Box",
+ backgroundColor:"mediumpurple",
+ canDragResize:true,
+ dragTarget:"top",
+ getEventEdge:function(){return "BR"}
+});
+topParent.addChild(dragResizeBox);
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_layering.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_layering.html
new file mode 100755
index 0000000..9aa85cf
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_layering.html
@@ -0,0 +1,95 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Dynamic layering example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Canvas.create({
+ ID:"red",
+ left:50,
+ top:75,
+ width:100,
+ height:100,
+ backgroundColor:"red"
+});
+
+Canvas.create({
+ ID:"green",
+ left:100,
+ top:125,
+ width:100,
+ height:100,
+ backgroundColor:"green"
+});
+
+
+Canvas.create({
+ ID:"blue",
+ left:150,
+ top:175,
+ width:100,
+ height:100,
+ backgroundColor:"blue"
+});
+
+Canvas.create({
+ ID:"widget",
+ left:200,
+ top:225,
+ width:100,
+ height:100,
+ backgroundColor:"khaki",
+ contents:"widget<BR>(drag me)",
+ canDragReposition:true,
+ dragAppearance:"target"
+});
+
+
+//
+// buttons to manipulate the above
+//
+
+Button.create({ left:350, top:75, width:175, height:30,
+ title:"widget.bringToFront()",click:"widget.bringToFront()"
+});
+
+
+Button.create({ left:350, top:125, width:175, height:30,
+ title:"widget.sendToBack()", click:"widget.sendToBack()"
+});
+
+
+Button.create({ left:350, top:175, width:175, height:30,
+ title:"widget.moveAbove(green)", click:"widget.moveAbove(green)"
+});
+
+
+Button.create({ left:350, top:225, width:175, height:30,
+ title:"widget.moveBelow(green)", click:"widget.moveBelow(green)"
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_position_size.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_position_size.html
new file mode 100755
index 0000000..73e08e9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/widget_position_size.html
@@ -0,0 +1,126 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Dynamic positioning and sizing example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+// --------------------------------------------------
+// target canvas for move/grow/shrink operations
+// --------------------------------------------------
+
+Canvas.create({
+ ID:"widget",
+ left:200,
+ top:225,
+ width:100,
+ height:100,
+ overflow:"hidden",
+ backgroundImage:"yinyang_small.gif"
+});
+
+
+// --------------------------------------------------
+// top move/grow/shrink buttons
+// --------------------------------------------------
+
+Button.create({ left:150, top:75, width:50, height:50, title:"Move",
+ //mouseStillDown:function(){widget.setTop(widget.getTop()-20)}
+ mouseStillDown:function(){widget.moveBy(0,-20)}
+});
+
+Button.create({ left:225, top:75, width:50, height:50, title:"Grow",
+ //mouseStillDown:function(){widget.setRect(null, widget.getTop()-20, null, widget.getHeight()+20)}
+ mouseStillDown:function(){widget.moveBy(0,-20); widget.resizeBy(0,20);}
+});
+
+Button.create({ left:300, top:75, width:50, height:50, title:"Shrink",
+ //mouseStillDown:function(){widget.setRect(null, widget.getHeight() > 0 ? widget.getTop()+20 : null, null, Math.max(widget.getHeight()-20,0))}
+ mouseStillDown:function(){widget.moveBy(0, widget.getHeight() > 0 ? 20 : 0); widget.setHeight(Math.max(widget.getHeight()-20,0));}
+});
+
+
+// --------------------------------------------------
+// bottom move/grow/shrink buttons
+// --------------------------------------------------
+
+Button.create({ left:150, top:425, width:50, height:50, title:"Move",
+ //mouseStillDown:function(){widget.setTop(widget.getTop()+20)}
+ mouseStillDown:function(){widget.moveBy(0,20)}
+});
+
+Button.create({ left:225, top:425, width:50, height:50, title:"Grow",
+ //mouseStillDown:function(){widget.setBottom(widget.getBottom()+20);}
+ mouseStillDown:function(){widget.resizeBy(0,20)}
+});
+
+Button.create({ left:300, top:425, width:50, height:50, title:"Shrink",
+ //mouseStillDown:function(){widget.setBottom(Math.max(widget.getBottom()-20,widget.getTop()));}
+ mouseStillDown:function(){widget.setHeight(Math.max(widget.getHeight()-20,0))}
+});
+
+
+// --------------------------------------------------
+// left move/grow/shrink buttons
+// --------------------------------------------------
+
+Button.create({ left:50, top:175, width:50, height:50, title:"Move",
+ //mouseStillDown:function(){widget.setLeft(widget.getLeft()-20)}
+ mouseStillDown:function(){widget.moveBy(-20,0)}
+});
+
+Button.create({ left:50, top:250, width:50, height:50, title:"Grow",
+ //mouseStillDown:function(){widget.setRect(widget.getLeft()-20, null, widget.getWidth()+20, null)}
+ mouseStillDown:function(){widget.moveBy(-20,0); widget.resizeBy(20,0);}
+});
+
+Button.create({ left:50, top:325, width:50, height:50, title:"Shrink",
+ //mouseStillDown:function(){widget.setRect(widget.getWidth() > 0 ? widget.getLeft()+20 : null, null, Math.max(widget.getWidth()-20,0), null)}
+ mouseStillDown:function(){widget.moveBy(widget.getWidth() > 0 ? 20 : 0, 0); widget.setWidth(Math.max(widget.getWidth()-20,0));}
+});
+
+
+// --------------------------------------------------
+// right move/grow/shrink buttons
+// --------------------------------------------------
+
+Button.create({ left:400, top:175, width:50, height:50, title:"Move",
+ //mouseStillDown:function(){widget.setLeft(widget.getLeft()+20)}
+ mouseStillDown:function(){widget.moveBy(20,0)}
+});
+
+Button.create({ left:400, top:250, width:50, height:50, title:"Grow",
+ //mouseStillDown:function(){widget.setRight(widget.getRight()+20);}
+ mouseStillDown:function(){widget.resizeBy(20,0)}
+});
+
+Button.create({ left:400, top:325, width:50, height:50, title:"Shrink",
+ //mouseStillDown:function(){widget.setRight(Math.max(widget.getRight()-20,widget.getLeft()));}
+ mouseStillDown:function(){widget.setWidth(Math.max(widget.getWidth()-20,0))}
+});
+
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/components/components/window_init.html b/sm-shop/src/main/webapp/resources/smart-client/components/components/window_init.html
new file mode 100755
index 0000000..b6bcc1d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/components/components/window_init.html
@@ -0,0 +1,120 @@
+<HTML><HEAD>
+ <SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
+ <SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
+</HEAD><BODY BGCOLOR='papayawhip' MARGINHEIGHT=0 MARGINWIDTH=0 LEFTMARGIN=0 TOPMARGIN=0>
+<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0><TR><TD CLASS=pageHeader BGCOLOR=WHITE>
+
+ Window initialization example
+
+</TD><TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>
+
+ Isomorphic SmartClient SDK
+
+</TD></TR></TABLE><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
+<TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
+
+
+<!--------------------------
+ Example code starts here
+---------------------------->
+
+<SCRIPT>
+
+Button.create({
+ left:50, top:50, width:150,
+ title:"Show Window 1",
+ click:"window1.show()"
+});
+Button.create({
+ left:50, top:80, width:150,
+ title:"Set Window 1 Status",
+ click:"window1.setStatus('setStatus at '+timeStamp())"
+});
+
+Button.create({
+ left:250, top:50, width:150,
+ title:"Show Window 2",
+ click:"window2.show()"
+});
+
+Button.create({
+ left:450, top:50, width:150,
+ title:"Show Window 3",
+ click:"window3.show()"
+});
+
+
+Window.create({
+ ID:"window1",
+ title:"Window 1",
+ showShadow:true,
+
+ left:100, top:150, width:212, height:252,
+ items:[
+ Img.create({
+ autoDraw:false,
+ width:200, height:200,
+ src:"yinyang.gif",
+ autoDraw:false
+ })
+ ]
+});
+
+
+Window.create({
+ ID:"window2",
+ title:"Window 2",
+ left:350, top:150, width:150, height:150,
+ autoDraw:false,
+ showHeaderIcon:false,
+ showCloseButton:false,
+ showMinimizeButton:false,
+ showMaximizeButton:false,
+ showFooter:false,
+ showShadow:false,
+ items:[
+ Label.create({
+ autoDraw:false,
+ height:75,
+ contents:"This is a window with no header icon, header buttons, footer, or shadow."
+ }),
+ Button.create({
+ autoDraw:false,
+ title:"Close Me",
+ click:"window2.closeClick()"
+ })
+ ]
+});
+
+
+Window.create({
+ ID:"window3",
+ title:"Window 3",
+ width:150, height:150,
+ autoDraw:false,
+ isModal:true,
+ canDragResize:false,
+ autoCenter:true,
+ showHeaderIcon:false,
+ showMinimizeButton:false,
+ showMaximizeButton:false,
+ showFooter:false,
+ items:[
+ Label.create({
+ autoDraw:false,
+ height:50,
+ contents:"This is an auto-centered modal window.<br><br>" +
+ "You cannot interact with other UI components while this window is open."
+ })
+ ]
+});
+
+</SCRIPT>
+</BODY>
+</HTML>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/accept.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/accept.png
new file mode 100755
index 0000000..89c8129
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/accept.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/add.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/add.png
new file mode 100755
index 0000000..6332fef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/add.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/add_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/add_Disabled.png
new file mode 100755
index 0000000..244af57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/add_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/approve.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/approve.png
new file mode 100755
index 0000000..e250606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/approve.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/back.png
new file mode 100755
index 0000000..8b5a272
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/back_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/back_Disabled.png
new file mode 100755
index 0000000..09c7ec7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/back_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close.png
new file mode 100755
index 0000000..5345e45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Disabled.png
new file mode 100755
index 0000000..4c10c47
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Down.png
new file mode 100755
index 0000000..4993917
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Over.png
new file mode 100755
index 0000000..4993917
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/color_swatch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/color_swatch.png
new file mode 100755
index 0000000..6e6e852
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/color_swatch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/column_preferences.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/column_preferences.png
new file mode 100755
index 0000000..b25350f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/column_preferences.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/configure.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/configure.png
new file mode 100755
index 0000000..ab54a83
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/configure.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/download.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/download.png
new file mode 100755
index 0000000..16bc94e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/download.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/edit.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/edit.png
new file mode 100755
index 0000000..115b8f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/edit.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/edit_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/edit_Disabled.png
new file mode 100755
index 0000000..1bdcde8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/edit_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/exclamation.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/exclamation.png
new file mode 100755
index 0000000..c37bd06
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/exclamation.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/filter.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/filter.png
new file mode 100755
index 0000000..149ae78
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/filter.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/first.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/first.png
new file mode 100755
index 0000000..e0d0021
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/first.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/forward.png
new file mode 100755
index 0000000..3d38d63
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/forward_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/forward_Disabled.png
new file mode 100755
index 0000000..558d3ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/forward_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/freezeLeft.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/freezeLeft.png
new file mode 100755
index 0000000..8b3d44f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/freezeLeft.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/freezeRight.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/freezeRight.png
new file mode 100755
index 0000000..724397d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/freezeRight.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/groupby.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/groupby.png
new file mode 100755
index 0000000..29dd2ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/groupby.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/help.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/help.png
new file mode 100755
index 0000000..25ce508
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/help.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/last.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/last.png
new file mode 100755
index 0000000..45c0431
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/last.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/next.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/next.png
new file mode 100755
index 0000000..4f94812
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/next.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/ok.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/ok.png
new file mode 100755
index 0000000..deefc12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/ok.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/plus.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/plus.png
new file mode 100755
index 0000000..4a7ea12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/plus.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/plus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/plus_Disabled.png
new file mode 100755
index 0000000..2c607b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/plus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/prev.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/prev.png
new file mode 100755
index 0000000..627f82d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/prev.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/print.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/print.png
new file mode 100755
index 0000000..a350d18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/print.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/redo.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/redo.png
new file mode 100755
index 0000000..c7a23fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/redo.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/refresh.png
new file mode 100755
index 0000000..870adb5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/remove.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/remove.png
new file mode 100755
index 0000000..08f2493
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/remove.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/remove_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/remove_Disabled.png
new file mode 100755
index 0000000..f44069b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/remove_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/save.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/save.png
new file mode 100755
index 0000000..a018fac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/save.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/search.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/search.png
new file mode 100755
index 0000000..d70e4ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/search.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/sort_ascending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/sort_ascending.png
new file mode 100755
index 0000000..8907478
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/sort_ascending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/sort_descending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/sort_descending.png
new file mode 100755
index 0000000..850d28b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/sort_descending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/text_linespacing.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/text_linespacing.png
new file mode 100755
index 0000000..1a91cbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/text_linespacing.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/undo.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/undo.png
new file mode 100755
index 0000000..69520e1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/undo.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/unfreeze.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/unfreeze.png
new file mode 100755
index 0000000..39c66a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/unfreeze.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/ungroup.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/ungroup.png
new file mode 100755
index 0000000..e140cd7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/ungroup.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/view.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/view.png
new file mode 100755
index 0000000..15f056c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/actions/view.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/black.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/black.gif
new file mode 100755
index 0000000..639e5f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/black.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/blank.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/blank.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/blank.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_end.png
new file mode 100755
index 0000000..bd2b022
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_start.png
new file mode 100755
index 0000000..06f557a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_stretch.png
new file mode 100755
index 0000000..5aae9d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_end.png
new file mode 100755
index 0000000..8e84055
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_start.png
new file mode 100755
index 0000000..017bda5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_stretch.png
new file mode 100755
index 0000000..4663cb8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_end.png
new file mode 100755
index 0000000..2fccefa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_end.png
new file mode 100755
index 0000000..c4e41bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_start.png
new file mode 100755
index 0000000..1f19c91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_stretch.png
new file mode 100755
index 0000000..0740acb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_end.png
new file mode 100755
index 0000000..c4e41bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_start.png
new file mode 100755
index 0000000..1f19c91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..0740acb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_end.png
new file mode 100755
index 0000000..0de1d9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_start.png
new file mode 100755
index 0000000..017bda5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_stretch.png
new file mode 100755
index 0000000..de20659
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_end.png
new file mode 100755
index 0000000..c75a4a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_end.png
new file mode 100755
index 0000000..7a0fed1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_start.png
new file mode 100755
index 0000000..1f19c91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_stretch.png
new file mode 100755
index 0000000..1734d8b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_start.png
new file mode 100755
index 0000000..1f19c91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_stretch.png
new file mode 100755
index 0000000..a353d55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_start.png
new file mode 100755
index 0000000..db669c0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_stretch.png
new file mode 100755
index 0000000..1bdbe71
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/button/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ColorPicker/crosshair.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ColorPicker/crosshair.png
new file mode 100755
index 0000000..0e850c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ColorPicker/crosshair.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ColorPicker/spectrum.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ColorPicker/spectrum.png
new file mode 100755
index 0000000..5ab45a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ColorPicker/spectrum.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Disabled_stretch.png
new file mode 100755
index 0000000..0882512
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Down_stretch.png
new file mode 100755
index 0000000..a43dab6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Over_stretch.png
new file mode 100755
index 0000000..4e6778d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Selected_stretch.png
new file mode 100755
index 0000000..ff9ac0c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_stretch.png
new file mode 100755
index 0000000..71b6090
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/cssButton/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_down.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_left.gif
new file mode 100755
index 0000000..9761ae9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_right.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_closed_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open.gif
new file mode 100755
index 0000000..ca674eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_down.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_left.gif
new file mode 100755
index 0000000..aaf1b1d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_right.gif
new file mode 100755
index 0000000..03e0b21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_up.gif
new file mode 100755
index 0000000..ca674eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_open_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_opening.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_opening.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/arrow_opening.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/close.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/close.gif
new file mode 100755
index 0000000..f404e13
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/close.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/close_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/close_over.gif
new file mode 100755
index 0000000..67eb946
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/close_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeader.gif
new file mode 100755
index 0000000..e328587
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderDisabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderDisabled.gif
new file mode 100755
index 0000000..8e31489
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderDisabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderLabel.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderLabel.gif
new file mode 100755
index 0000000..276df64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderLabel.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderLabelDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderLabelDown.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderLabelDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderOver.gif
new file mode 100755
index 0000000..c074368
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderSelected.gif
new file mode 100755
index 0000000..dad4dcf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderSelectedOver.gif
new file mode 100755
index 0000000..f8a7d7c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/colHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/header_handle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/header_handle.gif
new file mode 100755
index 0000000..253c281
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/header_handle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/header_handle_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/header_handle_over.gif
new file mode 100755
index 0000000..33cdc51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/header_handle_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeader.gif
new file mode 100755
index 0000000..acf497c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderDown.gif
new file mode 100755
index 0000000..33679f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderSelected.gif
new file mode 100755
index 0000000..3674069
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderSelectedOver.gif
new file mode 100755
index 0000000..51f4876
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/innerHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/maximize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/maximize.gif
new file mode 100755
index 0000000..28a9b11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/maximize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/maximize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/maximize_over.gif
new file mode 100755
index 0000000..fb68ee9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/maximize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/minimize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/minimize.gif
new file mode 100755
index 0000000..dd98884
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/minimize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/minimize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/minimize_over.gif
new file mode 100755
index 0000000..e10091e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/minimize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeader.gif
new file mode 100755
index 0000000..5f3f9e8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderDisabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderDisabled.gif
new file mode 100755
index 0000000..8e31489
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderDisabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabel.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabel.gif
new file mode 100755
index 0000000..276df64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabel.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabelDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabelDown.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabelDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabelSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabelSelected.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderLabelSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderOver.gif
new file mode 100755
index 0000000..7087eb1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderSelected.gif
new file mode 100755
index 0000000..f4b8f1b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderSelectedOver.gif
new file mode 100755
index 0000000..47870df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/rowHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down.gif
new file mode 100755
index 0000000..2c128f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_over.gif
new file mode 100755
index 0000000..1284789
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_selected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_selected.gif
new file mode 100755
index 0000000..2c128f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_selected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_selected_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_selected_over.gif
new file mode 100755
index 0000000..ef333e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_down_selected_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up.gif
new file mode 100755
index 0000000..8c202a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_over.gif
new file mode 100755
index 0000000..4566c0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_selected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_selected.gif
new file mode 100755
index 0000000..8c202a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_selected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_selected_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_selected_over.gif
new file mode 100755
index 0000000..424a762
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/CubeGrid/sort_up_selected_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DatabaseBrowser/column.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DatabaseBrowser/column.png
new file mode 100755
index 0000000..bc0d8d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DatabaseBrowser/column.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DatabaseBrowser/data.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DatabaseBrowser/data.png
new file mode 100755
index 0000000..9bb17ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DatabaseBrowser/data.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/arrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/arrow_left.png
new file mode 100755
index 0000000..6175635
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/arrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/arrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/arrow_right.png
new file mode 100755
index 0000000..d70064f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/arrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/doubleArrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/doubleArrow_left.png
new file mode 100755
index 0000000..5208823
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/doubleArrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/doubleArrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/doubleArrow_right.png
new file mode 100755
index 0000000..478fb46
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DateChooser/doubleArrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/ask.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/ask.png
new file mode 100755
index 0000000..4831985
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/ask.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/confirm.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/confirm.png
new file mode 100755
index 0000000..0e32c96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/confirm.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/error.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/error.png
new file mode 100755
index 0000000..7854ed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/error.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/notify.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/notify.png
new file mode 100755
index 0000000..0e32c96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/notify.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/say.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/say.png
new file mode 100755
index 0000000..1b6b285
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/say.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/stop.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/stop.png
new file mode 100755
index 0000000..f4123c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/stop.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/warn copy.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/warn copy.png
new file mode 100755
index 0000000..7b79430
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/warn copy.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/warn.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/warn.png
new file mode 100755
index 0000000..7b79430
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Dialog/warn.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked.png
new file mode 100755
index 0000000..74bd6b6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked_Disabled.png
new file mode 100755
index 0000000..1b2b594
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked_Down.png
new file mode 100755
index 0000000..3269b01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/checked_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/ColorPicker_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/ColorPicker_icon.png
new file mode 100755
index 0000000..0661cf6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/ColorPicker_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/ColorPicker_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/ColorPicker_icon_Disabled.png
new file mode 100755
index 0000000..148a1af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/ColorPicker_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/date_control.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/date_control.png
new file mode 100755
index 0000000..628eec0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/date_control.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/date_control_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/date_control_Disabled.png
new file mode 100755
index 0000000..6d07b51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/date_control_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon.png
new file mode 100755
index 0000000..0687dd3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon_Disabled.png
new file mode 100755
index 0000000..94029ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon_Over.png
new file mode 100755
index 0000000..fdf4946
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/default_formItem_icon_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/partialcheck.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/partialcheck.png
new file mode 100755
index 0000000..4b431dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/partialcheck.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PopUpTextAreaEditor_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PopUpTextAreaEditor_icon.gif
new file mode 100755
index 0000000..38495fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PopUpTextAreaEditor_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_ColorPicker_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_ColorPicker_icon.png
new file mode 100755
index 0000000..c66f57a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_ColorPicker_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_pickbutton.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_pickbutton.gif
new file mode 100755
index 0000000..2267e52
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_pickbutton.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_pickbutton_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_pickbutton_Disabled.gif
new file mode 100755
index 0000000..192b347
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/PropSheet_pickbutton_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon.png
new file mode 100755
index 0000000..cc04d85
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon_Disabled.png
new file mode 100755
index 0000000..55dba3f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon_Over.png
new file mode 100755
index 0000000..3ad5f40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/Remove_icon_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease.png
new file mode 100755
index 0000000..0c972d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease_Disabled.png
new file mode 100755
index 0000000..edb7b12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease_Focused.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease_Focused.png
new file mode 100755
index 0000000..62bcbb7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_decrease_Focused.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase.png
new file mode 100755
index 0000000..8c08182
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase_Disabled.png
new file mode 100755
index 0000000..7bb3936
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase_Focused.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase_Focused.png
new file mode 100755
index 0000000..3a6a4f5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/spinner_control_increase_Focused.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control.gif
new file mode 100755
index 0000000..cd548eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control_Disabled.gif
new file mode 100755
index 0000000..15266ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control_Over.gif
new file mode 100755
index 0000000..c8f6a0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/text_control_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked.png
new file mode 100755
index 0000000..9af19ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked_Disabled.png
new file mode 100755
index 0000000..daf858e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked_Down.png
new file mode 100755
index 0000000..f73752f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unchecked_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck.png
new file mode 100755
index 0000000..e697fe1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Disabled.png
new file mode 100755
index 0000000..57d861e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Down.png
new file mode 100755
index 0000000..ddf797b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Over.png
new file mode 100755
index 0000000..9e60d88
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/DynamicForm/unsetcheck_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_B.png
new file mode 100755
index 0000000..ac7bcbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_BL.png
new file mode 100755
index 0000000..32b5297
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_BR.png
new file mode 100755
index 0000000..5c32f8a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_L.png
new file mode 100755
index 0000000..2c735aa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_R.png
new file mode 100755
index 0000000..2c735aa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_T.png
new file mode 100755
index 0000000..ac7bcbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_TL.png
new file mode 100755
index 0000000..77b2bf2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_TR.png
new file mode 100755
index 0000000..acdbfd6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/edges/edge_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/createNewFolder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/createNewFolder.png
new file mode 100755
index 0000000..c8375bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/createNewFolder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/file.png
new file mode 100755
index 0000000..da793cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/folder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/folder.png
new file mode 100755
index 0000000..caad126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/folder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/previousFolder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/previousFolder.png
new file mode 100755
index 0000000..69eb4c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/previousFolder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/refresh.png
new file mode 100755
index 0000000..9ce1bb3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/upOneLevel.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/upOneLevel.png
new file mode 100755
index 0000000..6a84350
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/FileBrowser/upOneLevel.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down.png
new file mode 100755
index 0000000..93db851
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down_Disabled.png
new file mode 100755
index 0000000..9d68995
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down_Over.png
new file mode 100755
index 0000000..a67b58b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left.png
new file mode 100755
index 0000000..196e5e0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left_Disabled.png
new file mode 100755
index 0000000..5a0a5c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left_Over.png
new file mode 100755
index 0000000..5a67ff2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right.png
new file mode 100755
index 0000000..b8d0a36
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right_Disabled.png
new file mode 100755
index 0000000..a235ee8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right_Over.png
new file mode 100755
index 0000000..ea00dc4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up.png
new file mode 100755
index 0000000..19e3da2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up_Disabled.png
new file mode 100755
index 0000000..2f14321
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up_Over.png
new file mode 100755
index 0000000..60807ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/arrow_up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator.png
new file mode 100755
index 0000000..f54c274
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator_Disabled.png
new file mode 100755
index 0000000..2f15a81
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator_Over.png
new file mode 100755
index 0000000..0c5b798
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/calculator_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart.png
new file mode 100755
index 0000000..000f473
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart_Disabled.png
new file mode 100755
index 0000000..f839f1a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart_Over.png
new file mode 100755
index 0000000..d3c49d0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cart_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade.png
new file mode 100755
index 0000000..5a01ee4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade_Disabled.png
new file mode 100755
index 0000000..a0852fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade_Over.png
new file mode 100755
index 0000000..63841e7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/cascade_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard.png
new file mode 100755
index 0000000..3e74056
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard_Disabled.png
new file mode 100755
index 0000000..7148d9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard_Over.png
new file mode 100755
index 0000000..b0362e8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clipboard_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock.png
new file mode 100755
index 0000000..1fe0eac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock_Disabled.png
new file mode 100755
index 0000000..06459a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock_Over.png
new file mode 100755
index 0000000..3a37421
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/clock_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close.png
new file mode 100755
index 0000000..5345e45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close_Disabled.png
new file mode 100755
index 0000000..4c10c47
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close_Over.png
new file mode 100755
index 0000000..4993917
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment.png
new file mode 100755
index 0000000..421e3da
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment_Disabled.png
new file mode 100755
index 0000000..a095151
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment_Over.png
new file mode 100755
index 0000000..db8e595
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/comment_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/document.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/document.png
new file mode 100755
index 0000000..397fa01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/document.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/document_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/document_Over.png
new file mode 100755
index 0000000..6a3e697
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/document_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down.png
new file mode 100755
index 0000000..aa3d217
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down_Disabled.png
new file mode 100755
index 0000000..93e1d0a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down_Over.png
new file mode 100755
index 0000000..aafdb94
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left.png
new file mode 100755
index 0000000..b81372d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left_Disabled.png
new file mode 100755
index 0000000..1f9cfa6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left_Over.png
new file mode 100755
index 0000000..0136dd9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right.png
new file mode 100755
index 0000000..fbe67a4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right_Disabled.png
new file mode 100755
index 0000000..2e8009e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right_Over.png
new file mode 100755
index 0000000..1a2e93d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up.png
new file mode 100755
index 0000000..21e3626
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up_Disabled.png
new file mode 100755
index 0000000..a931f31
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up_Over.png
new file mode 100755
index 0000000..80c58c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/double_arrow_up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite.png
new file mode 100755
index 0000000..a11099f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite_Disabled.png
new file mode 100755
index 0000000..78e25ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite_Over.png
new file mode 100755
index 0000000..981e50c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/favourite_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find.png
new file mode 100755
index 0000000..79823cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find_Disabled.png
new file mode 100755
index 0000000..7b28089
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find_Over.png
new file mode 100755
index 0000000..0dc89cb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/find_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help.png
new file mode 100755
index 0000000..1993984
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help_Disabled.png
new file mode 100755
index 0000000..bbcdf42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help_Over.png
new file mode 100755
index 0000000..3acf634
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/help_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home.png
new file mode 100755
index 0000000..01fb84f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home_Disabled.png
new file mode 100755
index 0000000..607d427
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home_Over.png
new file mode 100755
index 0000000..6e39c16
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/home_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail.png
new file mode 100755
index 0000000..c5f4d41
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail_Disabled.png
new file mode 100755
index 0000000..95a5286
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail_Over.png
new file mode 100755
index 0000000..ca27d9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/mail_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize.png
new file mode 100755
index 0000000..1580163
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize_Disabled.png
new file mode 100755
index 0000000..c165b77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize_Over.png
new file mode 100755
index 0000000..8a64607
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/maximize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize.png
new file mode 100755
index 0000000..f844735
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize_Disabled.png
new file mode 100755
index 0000000..cef73ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize_Over.png
new file mode 100755
index 0000000..18750c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minimize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus.png
new file mode 100755
index 0000000..2c06a72
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus_Disabled.png
new file mode 100755
index 0000000..8347a04
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus_Over.png
new file mode 100755
index 0000000..57e3442
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/minus_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person.png
new file mode 100755
index 0000000..201c443
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person_Disabled.png
new file mode 100755
index 0000000..2d72a01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person_Over.png
new file mode 100755
index 0000000..e9cd2d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/person_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down.png
new file mode 100755
index 0000000..d0750ec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down_Disabled.png
new file mode 100755
index 0000000..d0884d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down_Over.png
new file mode 100755
index 0000000..5cd1989
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left.png
new file mode 100755
index 0000000..09e2b0b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left_Disabled.png
new file mode 100755
index 0000000..5b21788
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left_Over.png
new file mode 100755
index 0000000..d8776de
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/pin_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus.png
new file mode 100755
index 0000000..5928154
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus_Disabled.png
new file mode 100755
index 0000000..219acec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus_Over.png
new file mode 100755
index 0000000..336debc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/plus_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print.png
new file mode 100755
index 0000000..3bd1de0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print_Disabled.png
new file mode 100755
index 0000000..f98c608
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print_Over.png
new file mode 100755
index 0000000..abc774d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/print_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh.png
new file mode 100755
index 0000000..c1af195
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_Disabled.png
new file mode 100755
index 0000000..10d1e26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_Over.png
new file mode 100755
index 0000000..320f3f5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin.png
new file mode 100755
index 0000000..e9fb5fe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin_Disabled.png
new file mode 100755
index 0000000..2944986
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin_Over.png
new file mode 100755
index 0000000..bb5e55e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/refresh_thin_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save.png
new file mode 100755
index 0000000..11ed2ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save_Disabled.png
new file mode 100755
index 0000000..95a8d20
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save_Over.png
new file mode 100755
index 0000000..4654fc0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/save_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings.png
new file mode 100755
index 0000000..dc19d99
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings_Disabled.png
new file mode 100755
index 0000000..5a33a42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings_Over.png
new file mode 100755
index 0000000..e5767ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/settings_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer.png
new file mode 100755
index 0000000..0d96704
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer_Disabled.png
new file mode 100755
index 0000000..2401c9f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer_Over.png
new file mode 100755
index 0000000..d3f51f6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/transfer_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash.png
new file mode 100755
index 0000000..350cdd3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash_Disabled.png
new file mode 100755
index 0000000..40998f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash_Over.png
new file mode 100755
index 0000000..d3df3b6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/trash_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom.png
new file mode 100755
index 0000000..61fc03f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom_Disabled.png
new file mode 100755
index 0000000..51fb3b9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom_Over.png
new file mode 100755
index 0000000..ef99a04
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/headerIcons/zoom_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button.png
new file mode 100755
index 0000000..2ec691b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Disabled.png
new file mode 100755
index 0000000..2de9676
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Down.png
new file mode 100755
index 0000000..0de7eb0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Over.png
new file mode 100755
index 0000000..6126a67
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ImgButton/button_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/expander_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/expander_closed.png
new file mode 100755
index 0000000..4ccd33e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/expander_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/expander_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/expander_opened.png
new file mode 100755
index 0000000..53c8bf2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/expander_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/formula_menuItem.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/formula_menuItem.png
new file mode 100755
index 0000000..0250515
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/formula_menuItem.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/group_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/group_closed.png
new file mode 100755
index 0000000..b183509
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/group_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/group_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/group_opened.png
new file mode 100755
index 0000000..ac9d6f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/group_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header.png
new file mode 100755
index 0000000..b05318d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Disabled.png
new file mode 100755
index 0000000..ea090be
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Down.png
new file mode 100755
index 0000000..c79dadf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_menu.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_menu.png
new file mode 100755
index 0000000..0f74ec2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_menu.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Over.png
new file mode 100755
index 0000000..2cd5bf9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected.png
new file mode 100755
index 0000000..23734bf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected_Disabled.png
new file mode 100755
index 0000000..52cfffb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected_Over.png
new file mode 100755
index 0000000..c473400
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/header_Selected_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/headerSprite.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/headerSprite.png
new file mode 100755
index 0000000..332d119
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/headerSprite.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row.png
new file mode 100755
index 0000000..de57c6b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_collapsed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_collapsed.png
new file mode 100755
index 0000000..3f9ae1b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_collapsed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_expanded.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_expanded.png
new file mode 100755
index 0000000..d8a3cd0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_expanded.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Over.png
new file mode 100755
index 0000000..2df53bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Over_Selected.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Over_Selected.png
new file mode 100755
index 0000000..c5f2a90
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Over_Selected.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Selected.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Selected.png
new file mode 100755
index 0000000..7a30de9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/row_Selected.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/sort_ascending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/sort_ascending.png
new file mode 100755
index 0000000..5cf3412
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/sort_ascending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/sort_descending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/sort_descending.png
new file mode 100755
index 0000000..c19d0fe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ListGrid/sort_descending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/loading.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/loading.gif
new file mode 100755
index 0000000..19d5500
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/loading.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/loadingSmall.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/loadingSmall.gif
new file mode 100755
index 0000000..d0bce15
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/loadingSmall.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/check.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/check.png
new file mode 100755
index 0000000..0f5eead
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/check.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/check_disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/check_disabled.png
new file mode 100755
index 0000000..a77c532
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/check_disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_background.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_background.png
new file mode 100755
index 0000000..d61422e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_background.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button.png
new file mode 100755
index 0000000..a6895e0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_Disabled.png
new file mode 100755
index 0000000..1b90feb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_up.png
new file mode 100755
index 0000000..287e467
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_up_Disabled.png
new file mode 100755
index 0000000..e6ef59f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_button_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_end.png
new file mode 100755
index 0000000..1145a4d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_right.png
new file mode 100755
index 0000000..1145a4d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_rollover.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_rollover.png
new file mode 100755
index 0000000..d1fc0cd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_rollover.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_start.png
new file mode 100755
index 0000000..fed8ffa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_stretch.png
new file mode 100755
index 0000000..2773c57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/menu_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu.png
new file mode 100755
index 0000000..486dd89
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_disabled.png
new file mode 100755
index 0000000..b61ddc8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_disabled_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_disabled_left.png
new file mode 100755
index 0000000..c5060bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_disabled_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_down.png
new file mode 100755
index 0000000..aa56d7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_left.png
new file mode 100755
index 0000000..74d8097
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Menu/submenu_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_add_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_add_files.png
new file mode 100755
index 0000000..6db0919
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_add_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_add_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_add_files_Disabled.png
new file mode 100755
index 0000000..9b7fa17
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_add_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_remove_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_remove_files.png
new file mode 100755
index 0000000..bd45928
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_remove_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_remove_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_remove_files_Disabled.png
new file mode 100755
index 0000000..e1edd8c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/MultiUploadItem/icon_remove_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/opacity.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/opacity.png
new file mode 100755
index 0000000..0d0a764
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/opacity.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Panel/panel_header.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Panel/panel_header.png
new file mode 100755
index 0000000..8b806f3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Panel/panel_header.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker.png
new file mode 100755
index 0000000..52b4fdc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Disabled.png
new file mode 100755
index 0000000..42b87f3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Down.png
new file mode 100755
index 0000000..5bd21e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Normal.png
new file mode 100755
index 0000000..3c73645
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Over.png
new file mode 100755
index 0000000..18df3e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/clear_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker.png
new file mode 100755
index 0000000..f7e253c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker_Disabled.png
new file mode 100755
index 0000000..6c0e5c1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker_Over.png
new file mode 100755
index 0000000..1adcc02
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/comboBoxPicker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker.png
new file mode 100755
index 0000000..cfd2580
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Disabled.png
new file mode 100755
index 0000000..f90ac24
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Down.png
new file mode 100755
index 0000000..509efaa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Normal.png
new file mode 100755
index 0000000..41046c1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Over.png
new file mode 100755
index 0000000..73c9a33
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/date_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker.png
new file mode 100755
index 0000000..9f3ff23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Disabled.png
new file mode 100755
index 0000000..2d9a64f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Down.png
new file mode 100755
index 0000000..f765ad8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Normal.png
new file mode 100755
index 0000000..a34a75f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Over.png
new file mode 100755
index 0000000..f6f4b95
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/refresh_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker.png
new file mode 100755
index 0000000..2877494
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Disabled.png
new file mode 100755
index 0000000..370f230
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Down.png
new file mode 100755
index 0000000..4f0ffbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Normal.png
new file mode 100755
index 0000000..f562395
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Over.png
new file mode 100755
index 0000000..5378556
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/pickers/search_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_end.gif
new file mode 100755
index 0000000..ee1f9d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_start.gif
new file mode 100755
index 0000000..36fd795
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif
new file mode 100755
index 0000000..5bbd82b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_end.gif
new file mode 100755
index 0000000..15a8daf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_start.gif
new file mode 100755
index 0000000..38daec8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_stretch.gif
new file mode 100755
index 0000000..cc5f1ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_h_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_end.gif
new file mode 100755
index 0000000..47252dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_start.gif
new file mode 100755
index 0000000..9666c1e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif
new file mode 100755
index 0000000..5467b67
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_end.gif
new file mode 100755
index 0000000..47252dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_start.gif
new file mode 100755
index 0000000..f8ca939
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_stretch.gif
new file mode 100755
index 0000000..b53fd45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_Disabled_v_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_end.gif
new file mode 100755
index 0000000..5133304
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_start.gif
new file mode 100755
index 0000000..649b3c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_stretch.gif
new file mode 100755
index 0000000..fb9da5f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_end.gif
new file mode 100755
index 0000000..06cd29f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_start.gif
new file mode 100755
index 0000000..024d1c2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_stretch.gif
new file mode 100755
index 0000000..4f5094d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_h_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_end.gif
new file mode 100755
index 0000000..e819cb8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_start.gif
new file mode 100755
index 0000000..08c0711
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_stretch.gif
new file mode 100755
index 0000000..d002108
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_end.gif
new file mode 100755
index 0000000..cbe2ef8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_start.gif
new file mode 100755
index 0000000..38a815c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_stretch.gif
new file mode 100755
index 0000000..e809c66
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Progressbar/progressbar_v_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/readme.txt b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/readme.txt
new file mode 100755
index 0000000..e134386
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/readme.txt
@@ -0,0 +1,2 @@
+Some of the icons used are from the FAMFAMFAM Silk Icon Collection (http://www.famfamfam.com/lab/icons/silk/)
+and are licensed under Creative Commons Attribution 2.5 License.
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add.png
new file mode 100755
index 0000000..4a7ea12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add_Disabled.png
new file mode 100755
index 0000000..93e0ad0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add_Over.png
new file mode 100755
index 0000000..6a4e1bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/add_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/check.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/check.gif
new file mode 100755
index 0000000..2465d1c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/check.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter.png
new file mode 100755
index 0000000..149ae78
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter_Disabled.png
new file mode 100755
index 0000000..b46239e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter_Over.png
new file mode 100755
index 0000000..d2fa7e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/filter_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/query.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/query.gif
new file mode 100755
index 0000000..2b2bd19
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RecordEditor/query.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/background_color.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/background_color.gif
new file mode 100755
index 0000000..8b464c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/background_color.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/background_color_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/background_color_Disabled.gif
new file mode 100755
index 0000000..4f35753
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/background_color_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/copy.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/copy.png
new file mode 100755
index 0000000..87cf5c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/copy.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/copy_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/copy_Disabled.png
new file mode 100755
index 0000000..bbb93c1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/copy_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/cut.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/cut.png
new file mode 100755
index 0000000..bb62377
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/cut.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/cut_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/cut_Disabled.png
new file mode 100755
index 0000000..79bdf22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/cut_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/indent.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/indent.png
new file mode 100755
index 0000000..c16f938
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/indent.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/indent_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/indent_Disabled.png
new file mode 100755
index 0000000..a93daa4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/indent_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/link_new.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/link_new.png
new file mode 100755
index 0000000..a87f732
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/link_new.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/outdent.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/outdent.png
new file mode 100755
index 0000000..70730e6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/outdent.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/outdent_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/outdent_Disabled.png
new file mode 100755
index 0000000..0dc1840
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/outdent_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/paste.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/paste.png
new file mode 100755
index 0000000..e3397b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/paste.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/paste_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/paste_Disabled.png
new file mode 100755
index 0000000..5b89a74
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/paste_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/separator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/separator.png
new file mode 100755
index 0000000..7e10cc2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/separator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/separator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/separator_Disabled.png
new file mode 100755
index 0000000..05f0487
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/separator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_center.png
new file mode 100755
index 0000000..57beb38
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_center_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_center_Disabled.png
new file mode 100755
index 0000000..06750d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_center_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_justified.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_justified.png
new file mode 100755
index 0000000..2fbdd69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_justified.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_justified_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_justified_Disabled.png
new file mode 100755
index 0000000..6792e35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_justified_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_left.png
new file mode 100755
index 0000000..6c8fcc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_left_Disabled.png
new file mode 100755
index 0000000..4f6a8e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_right.png
new file mode 100755
index 0000000..a150257
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_right_Disabled.png
new file mode 100755
index 0000000..f859b47
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_align_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_bold.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_bold.png
new file mode 100755
index 0000000..889ae80
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_bold.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_color.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_color.gif
new file mode 100755
index 0000000..44af9c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_color.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_color_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_color_Disabled.gif
new file mode 100755
index 0000000..a1d324a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_color_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_italic.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_italic.png
new file mode 100755
index 0000000..8482ac8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_italic.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_underline.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_underline.png
new file mode 100755
index 0000000..90d0df2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/RichTextEditor/text_underline.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/complexType.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/complexType.gif
new file mode 100755
index 0000000..1c0743c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/complexType.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/operation.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/operation.png
new file mode 100755
index 0000000..a018fac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/operation.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/simpleType.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/simpleType.png
new file mode 100755
index 0000000..2b6c5a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SchemaViewer/simpleType.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_end.png
new file mode 100755
index 0000000..b593dba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_start.png
new file mode 100755
index 0000000..4f7cce9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_stretch.png
new file mode 100755
index 0000000..e112cd4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_track.png
new file mode 100755
index 0000000..dae5846
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Disabled_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_end.png
new file mode 100755
index 0000000..c537324
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_start.png
new file mode 100755
index 0000000..e4fd8bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_stretch.png
new file mode 100755
index 0000000..685732b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_track.png
new file mode 100755
index 0000000..f54343c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Down_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_end.png
new file mode 100755
index 0000000..102cf35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_end.png
new file mode 100755
index 0000000..102cf35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_start.png
new file mode 100755
index 0000000..1d58a40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_stretch.png
new file mode 100755
index 0000000..430f2b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_track.png
new file mode 100755
index 0000000..84eb04e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_Over_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_start.png
new file mode 100755
index 0000000..1d58a40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_stretch.png
new file mode 100755
index 0000000..b3e3a6d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_track.png
new file mode 100755
index 0000000..dae5846
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hscroll_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_end.png
new file mode 100755
index 0000000..010e073
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_start.png
new file mode 100755
index 0000000..4e2a388
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_stretch.png
new file mode 100755
index 0000000..94b5cac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_end.png
new file mode 100755
index 0000000..7583d01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_start.png
new file mode 100755
index 0000000..8da1ad4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_stretch.png
new file mode 100755
index 0000000..2d74864
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_end.png
new file mode 100755
index 0000000..45db553
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip.png
new file mode 100755
index 0000000..fad4ae4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip_Disabled.png
new file mode 100755
index 0000000..fad4ae4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip_Down.png
new file mode 100755
index 0000000..818ae80
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_grip_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_end.png
new file mode 100755
index 0000000..486d414
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_start.png
new file mode 100755
index 0000000..8da1ad4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_stretch.png
new file mode 100755
index 0000000..7a5ecf7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_start.png
new file mode 100755
index 0000000..4e2a388
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_stretch.png
new file mode 100755
index 0000000..94b5cac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/hthumb_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_end.png
new file mode 100755
index 0000000..f116048
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_start.png
new file mode 100755
index 0000000..6305449
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_track.png
new file mode 100755
index 0000000..856eb01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Disabled_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_end.png
new file mode 100755
index 0000000..dc305ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_start.png
new file mode 100755
index 0000000..3066b93
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_track.png
new file mode 100755
index 0000000..856eb01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Down_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_end.png
new file mode 100755
index 0000000..7a78d21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_end.png
new file mode 100755
index 0000000..7a78d21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_start.png
new file mode 100755
index 0000000..d711ccb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_track.png
new file mode 100755
index 0000000..856eb01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_Over_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_start.png
new file mode 100755
index 0000000..d711ccb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_track.png
new file mode 100755
index 0000000..856eb01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vscroll_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_end.png
new file mode 100755
index 0000000..771f00c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_start.png
new file mode 100755
index 0000000..d4219d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_stretch.png
new file mode 100755
index 0000000..a63202c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_end.png
new file mode 100755
index 0000000..88b826e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_start.png
new file mode 100755
index 0000000..1cf8d77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_stretch.png
new file mode 100755
index 0000000..a04438f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_end.png
new file mode 100755
index 0000000..8c01fd0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip.png
new file mode 100755
index 0000000..b0f8258
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip_Disabled.png
new file mode 100755
index 0000000..f5ee60f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip_Down.png
new file mode 100755
index 0000000..a5efad8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_grip_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_end.png
new file mode 100755
index 0000000..88b826e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_start.png
new file mode 100755
index 0000000..1cf8d77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_stretch.png
new file mode 100755
index 0000000..a04438f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_start.png
new file mode 100755
index 0000000..e24891a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_stretch.png
new file mode 100755
index 0000000..a626863
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Scrollbar/vthumb_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_end.png
new file mode 100755
index 0000000..260a751
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_start.png
new file mode 100755
index 0000000..cd28fcc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_stretch.png
new file mode 100755
index 0000000..f4c0fda
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_end.png
new file mode 100755
index 0000000..98e8ef6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_start.png
new file mode 100755
index 0000000..98e8ef6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_stretch.png
new file mode 100755
index 0000000..565efd2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_end.png
new file mode 100755
index 0000000..0a7aefb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_start.png
new file mode 100755
index 0000000..5208423
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_stretch.png
new file mode 100755
index 0000000..17e5fa2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Disabled_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_end.png
new file mode 100755
index 0000000..d0531fa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_start.png
new file mode 100755
index 0000000..d0531fa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_stretch.png
new file mode 100755
index 0000000..6163a08
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_end.png
new file mode 100755
index 0000000..403974d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_start.png
new file mode 100755
index 0000000..403974d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_stretch.png
new file mode 100755
index 0000000..a3690ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_end.png
new file mode 100755
index 0000000..a0a5b78
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_start.png
new file mode 100755
index 0000000..b112119
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_stretch.png
new file mode 100755
index 0000000..37595d0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/header_Over_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_closed.png
new file mode 100755
index 0000000..c0052b8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened.png
new file mode 100755
index 0000000..ba170a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_end.png
new file mode 100755
index 0000000..7dfc6ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_start.png
new file mode 100755
index 0000000..2ee0df5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_stretch.png
new file mode 100755
index 0000000..9dcb804
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/SectionHeader/opener_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/background.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/background.gif
new file mode 100755
index 0000000..bfa6c37
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/background.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/progressCursorTracker.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/progressCursorTracker.gif
new file mode 100755
index 0000000..aa9b38a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/progressCursorTracker.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds_center.png
new file mode 100755
index 0000000..3b3884e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_B.png
new file mode 100755
index 0000000..7cb1db0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_BL.png
new file mode 100755
index 0000000..bcf40a6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_BR.png
new file mode 100755
index 0000000..319264a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_L.png
new file mode 100755
index 0000000..fef2646
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_R.png
new file mode 100755
index 0000000..0547498
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_T.png
new file mode 100755
index 0000000..f508b51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_TL.png
new file mode 100755
index 0000000..f24b2ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_TR.png
new file mode 100755
index 0000000..73f73bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds1_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_B.png
new file mode 100755
index 0000000..05b1d11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_BL.png
new file mode 100755
index 0000000..0ee4dcd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_BR.png
new file mode 100755
index 0000000..c92b858
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_L.png
new file mode 100755
index 0000000..97ee80e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_R.png
new file mode 100755
index 0000000..962ecb3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_T.png
new file mode 100755
index 0000000..ebf1e26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_TL.png
new file mode 100755
index 0000000..86fad24
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_TR.png
new file mode 100755
index 0000000..52f2305
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_B.png
new file mode 100755
index 0000000..e55ed42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_BL.png
new file mode 100755
index 0000000..735e95e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_BR.png
new file mode 100755
index 0000000..95acd7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_L.png
new file mode 100755
index 0000000..7136873
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_R.png
new file mode 100755
index 0000000..72d50b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_T.png
new file mode 100755
index 0000000..070bfa5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_TL.png
new file mode 100755
index 0000000..95a7413
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_TR.png
new file mode 100755
index 0000000..e03f78f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds2_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_B.png
new file mode 100755
index 0000000..8950af8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_BL.png
new file mode 100755
index 0000000..a6194eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_BR.png
new file mode 100755
index 0000000..4daf18d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_L.png
new file mode 100755
index 0000000..5c1d8f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_R.png
new file mode 100755
index 0000000..e4d9851
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_T.png
new file mode 100755
index 0000000..42360a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_TL.png
new file mode 100755
index 0000000..39732c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_TR.png
new file mode 100755
index 0000000..3b9aa40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_B.png
new file mode 100755
index 0000000..3d6fc26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_BL.png
new file mode 100755
index 0000000..6007253
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_BR.png
new file mode 100755
index 0000000..8e9c7ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_L.png
new file mode 100755
index 0000000..a6f9737
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_R.png
new file mode 100755
index 0000000..44efd2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_T.png
new file mode 100755
index 0000000..ad8bf68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_TL.png
new file mode 100755
index 0000000..185ba1f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_TR.png
new file mode 100755
index 0000000..3afd869
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_B.png
new file mode 100755
index 0000000..e2879ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_BL.png
new file mode 100755
index 0000000..50468f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_BR.png
new file mode 100755
index 0000000..96f7b07
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_L.png
new file mode 100755
index 0000000..0ee6a62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_R.png
new file mode 100755
index 0000000..cd2177d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_T.png
new file mode 100755
index 0000000..3541504
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_TL.png
new file mode 100755
index 0000000..c85e2bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_TR.png
new file mode 100755
index 0000000..43dd30f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_B.png
new file mode 100755
index 0000000..73e9525
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_BL.png
new file mode 100755
index 0000000..cf1f5f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_BR.png
new file mode 100755
index 0000000..92b1852
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_L.png
new file mode 100755
index 0000000..f97fd86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_R.png
new file mode 100755
index 0000000..b48626e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_T.png
new file mode 100755
index 0000000..6324087
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_TL.png
new file mode 100755
index 0000000..a90a94b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_TR.png
new file mode 100755
index 0000000..44c6bc5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_B.png
new file mode 100755
index 0000000..670c1f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_BL.png
new file mode 100755
index 0000000..9325baf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_BR.png
new file mode 100755
index 0000000..5e0a63f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_L.png
new file mode 100755
index 0000000..2c63fbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_R.png
new file mode 100755
index 0000000..44f0eb6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_T.png
new file mode 100755
index 0000000..f77a361
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_TL.png
new file mode 100755
index 0000000..21da49e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_TR.png
new file mode 100755
index 0000000..9c9c8d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_B.png
new file mode 100755
index 0000000..84c839f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_BL.png
new file mode 100755
index 0000000..e8fa038
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_BR.png
new file mode 100755
index 0000000..dca921d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_L.png
new file mode 100755
index 0000000..121e4d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_R.png
new file mode 100755
index 0000000..21f8877
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_T.png
new file mode 100755
index 0000000..a6f5188
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_TL.png
new file mode 100755
index 0000000..c530634
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_TR.png
new file mode 100755
index 0000000..e325b9c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_B.png
new file mode 100755
index 0000000..5166a75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_BL.png
new file mode 100755
index 0000000..bcb45c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_BR.png
new file mode 100755
index 0000000..d248538
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_L.png
new file mode 100755
index 0000000..ec633c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_R.png
new file mode 100755
index 0000000..56b8f57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_T.png
new file mode 100755
index 0000000..5973074
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_TL.png
new file mode 100755
index 0000000..c7d315e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_TR.png
new file mode 100755
index 0000000..a904325
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/shared/shadows/ds9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb.png
new file mode 100755
index 0000000..718884f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb_Disabled.png
new file mode 100755
index 0000000..567f674
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb_down.png
new file mode 100755
index 0000000..718884f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/hthumb_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_end.png
new file mode 100755
index 0000000..6caeb58
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_start.png
new file mode 100755
index 0000000..0af4d42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_stretch.png
new file mode 100755
index 0000000..5b836d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_end.png
new file mode 100755
index 0000000..203e322
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_start.png
new file mode 100755
index 0000000..6e76806
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_stretch.png
new file mode 100755
index 0000000..9661196
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/htrack_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb.png
new file mode 100755
index 0000000..75f098d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb_Disabled.png
new file mode 100755
index 0000000..78e482b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb_down.png
new file mode 100755
index 0000000..c6cb112
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vthumb_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_end.png
new file mode 100755
index 0000000..37c82a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_start.png
new file mode 100755
index 0000000..302ebe6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_stretch.png
new file mode 100755
index 0000000..9e1304e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_end.png
new file mode 100755
index 0000000..90ec7d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_start.png
new file mode 100755
index 0000000..48c0b0b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_stretch.png
new file mode 100755
index 0000000..ca67b34
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Slider/vtrack_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_bg.png
new file mode 100755
index 0000000..ba58fb8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_Disabled_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_Disabled_bg.png
new file mode 100755
index 0000000..f135ec9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_Disabled_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_snap.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_snap.png
new file mode 100755
index 0000000..8718bec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_snap.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_snap_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_snap_Disabled.png
new file mode 100755
index 0000000..8718bec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/hsplit_snap_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_bg.png
new file mode 100755
index 0000000..57c5679
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_Disabled_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_Disabled_bg.png
new file mode 100755
index 0000000..295a76f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_Disabled_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_snap.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_snap.png
new file mode 100755
index 0000000..85d7ac8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_snap.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_snap_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_snap_Disabled.png
new file mode 100755
index 0000000..85d7ac8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Splitbar/vsplit_snap_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_end.png
new file mode 100755
index 0000000..42dac75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_start.png
new file mode 100755
index 0000000..42dac75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_stretch.png
new file mode 100755
index 0000000..0075c07
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_end.png
new file mode 100755
index 0000000..e709e70
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_start.png
new file mode 100755
index 0000000..d597ed6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_stretch.png
new file mode 100755
index 0000000..f60cf9c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_end.png
new file mode 100755
index 0000000..10d935d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_end.png
new file mode 100755
index 0000000..e9b632f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_start.png
new file mode 100755
index 0000000..1593e92
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_stretch.png
new file mode 100755
index 0000000..c59e839
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..ce4dd0f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..d847993
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..6d6cea7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_end.png
new file mode 100755
index 0000000..2f6c973
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_end.png
new file mode 100755
index 0000000..7c59eea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_start.png
new file mode 100755
index 0000000..a688532
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..a2e68ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_start.png
new file mode 100755
index 0000000..c2a2077
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_stretch.png
new file mode 100755
index 0000000..29fe0ab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_start.png
new file mode 100755
index 0000000..1bc552f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_stretch.png
new file mode 100755
index 0000000..b92d974
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/bottom/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/close.png
new file mode 100755
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/close_Over.png
new file mode 100755
index 0000000..880f62c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_end.png
new file mode 100755
index 0000000..ed7a510
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_start.png
new file mode 100755
index 0000000..3e7b953
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_stretch.png
new file mode 100755
index 0000000..31858a0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_end.png
new file mode 100755
index 0000000..7ae9916
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_end.png
new file mode 100755
index 0000000..4936ea9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_start.png
new file mode 100755
index 0000000..dd32e32
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_stretch.png
new file mode 100755
index 0000000..a1c2872
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..0b1b448
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..ba2ce07
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..5878c0f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_end.png
new file mode 100755
index 0000000..4266cb9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_end.png
new file mode 100755
index 0000000..c1877eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_start.png
new file mode 100755
index 0000000..57a58bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..c3a975a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_start.png
new file mode 100755
index 0000000..9b52867
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_stretch.png
new file mode 100755
index 0000000..3ea330f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_start.png
new file mode 100755
index 0000000..221fcef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_stretch.png
new file mode 100755
index 0000000..83df9c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/left/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_end.png
new file mode 100755
index 0000000..74c3e18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_start.png
new file mode 100755
index 0000000..6f2dcf4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_stretch.png
new file mode 100755
index 0000000..386c62d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/close.png
new file mode 100755
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/close_Over.png
new file mode 100755
index 0000000..880f62c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_end.png
new file mode 100755
index 0000000..8763841
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_start.png
new file mode 100755
index 0000000..4911fc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_stretch.png
new file mode 100755
index 0000000..3312702
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_end.png
new file mode 100755
index 0000000..e1ec665
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_end.png
new file mode 100755
index 0000000..d9a4217
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_start.png
new file mode 100755
index 0000000..166c8b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_stretch.png
new file mode 100755
index 0000000..2facb88
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..c68bb99
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..d0dd884
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..b60849c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_end.png
new file mode 100755
index 0000000..2268bd3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_end.png
new file mode 100755
index 0000000..efcc205
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_start.png
new file mode 100755
index 0000000..fa3f924
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..447b467
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_start.png
new file mode 100755
index 0000000..a5c554a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_stretch.png
new file mode 100755
index 0000000..d263462
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_start.png
new file mode 100755
index 0000000..50af991
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_stretch.png
new file mode 100755
index 0000000..bc72d22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/right/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_end.png
new file mode 100755
index 0000000..069cb23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_start.png
new file mode 100755
index 0000000..069cb23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_stretch.png
new file mode 100755
index 0000000..41b2e92
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/close.png
new file mode 100755
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/close_Over.png
new file mode 100755
index 0000000..880f62c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_end.png
new file mode 100755
index 0000000..dab64bf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_start.png
new file mode 100755
index 0000000..184579d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_stretch.png
new file mode 100755
index 0000000..d0ed70e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_end.png
new file mode 100755
index 0000000..18b83c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_end.png
new file mode 100755
index 0000000..60ba130
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_start.png
new file mode 100755
index 0000000..056757a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_stretch.png
new file mode 100755
index 0000000..ca1f2bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..65b07f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..b9312ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..6dd5ee8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_end.png
new file mode 100755
index 0000000..3639462
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_end.png
new file mode 100755
index 0000000..cd18935
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_start.png
new file mode 100755
index 0000000..9745382
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..416a70a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_start.png
new file mode 100755
index 0000000..f57d3a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_stretch.png
new file mode 100755
index 0000000..b359a01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_start.png
new file mode 100755
index 0000000..5c24af3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_stretch.png
new file mode 100755
index 0000000..8a31379
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Tab/top/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/close.png
new file mode 100755
index 0000000..5794b0a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/close_Over.png
new file mode 100755
index 0000000..0fc104e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_bottom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_bottom.png
new file mode 100755
index 0000000..16aafc4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_bottom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_bottom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_bottom.png
new file mode 100755
index 0000000..99390a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_bottom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_left.png
new file mode 100755
index 0000000..5087af4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_right.png
new file mode 100755
index 0000000..454c419
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_top.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_top.png
new file mode 100755
index 0000000..e1b7184
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Disabled_top.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_bottom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_bottom.png
new file mode 100755
index 0000000..6edd504
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_bottom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_left.png
new file mode 100755
index 0000000..1940cd6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_right.png
new file mode 100755
index 0000000..0237e01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_top.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_top.png
new file mode 100755
index 0000000..d045c2c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_Down_top.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_left.png
new file mode 100755
index 0000000..1c9cb8b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_right.png
new file mode 100755
index 0000000..808a8af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_top.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_top.png
new file mode 100755
index 0000000..60941f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/picker_top.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_bottom_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_bottom_back.png
new file mode 100755
index 0000000..93d7d84
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_bottom_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_bottom_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_bottom_forward.png
new file mode 100755
index 0000000..40bab71
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_bottom_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_bottom_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_bottom_back.png
new file mode 100755
index 0000000..674d001
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_bottom_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_bottom_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_bottom_forward.png
new file mode 100755
index 0000000..153af20
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_bottom_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_left_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_left_back.png
new file mode 100755
index 0000000..a03a92c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_left_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_left_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_left_forward.png
new file mode 100755
index 0000000..8ef3657
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_left_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_right_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_right_back.png
new file mode 100755
index 0000000..65fef50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_right_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_right_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_right_forward.png
new file mode 100755
index 0000000..64454ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_right_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_top_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_top_back.png
new file mode 100755
index 0000000..3d28b84
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_top_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_top_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_top_forward.png
new file mode 100755
index 0000000..0a78d62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Disabled_top_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_bottom_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_bottom_back.png
new file mode 100755
index 0000000..874ab1a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_bottom_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_bottom_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_bottom_forward.png
new file mode 100755
index 0000000..7106096
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_bottom_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_left_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_left_back.png
new file mode 100755
index 0000000..a3dc26e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_left_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_left_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_left_forward.png
new file mode 100755
index 0000000..a7dc075
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_left_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_right_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_right_back.png
new file mode 100755
index 0000000..83386ab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_right_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_right_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_right_forward.png
new file mode 100755
index 0000000..d321809
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_right_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_top_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_top_back.png
new file mode 100755
index 0000000..66d0770
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_top_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_top_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_top_forward.png
new file mode 100755
index 0000000..202584f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_Down_top_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_left_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_left_back.png
new file mode 100755
index 0000000..b15d28f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_left_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_left_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_left_forward.png
new file mode 100755
index 0000000..185d02c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_left_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_right_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_right_back.png
new file mode 100755
index 0000000..522028a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_right_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_right_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_right_forward.png
new file mode 100755
index 0000000..a0df139
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_right_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_top_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_top_back.png
new file mode 100755
index 0000000..6b41b49
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_top_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_top_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_top_forward.png
new file mode 100755
index 0000000..b1f6a26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TabSet/scroll_top_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TileGrid/tileOver.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TileGrid/tileOver.png
new file mode 100755
index 0000000..d2975d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TileGrid/tileOver.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/background.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/background.png
new file mode 100755
index 0000000..396b97b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/background.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/background_vertical.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/background_vertical.png
new file mode 100755
index 0000000..59ece4c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/background_vertical.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_end.png
new file mode 100755
index 0000000..bf0c751
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_start.png
new file mode 100755
index 0000000..f35d6de
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_stretch.png
new file mode 100755
index 0000000..e8acf13
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_end.png
new file mode 100755
index 0000000..bbe930b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_start.png
new file mode 100755
index 0000000..4c60405
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_stretch.png
new file mode 100755
index 0000000..003c93b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_end.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_end.png
new file mode 100755
index 0000000..94687a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_start.png
new file mode 100755
index 0000000..b289630
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_stretch.png
new file mode 100755
index 0000000..192b248
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_end.png
new file mode 100755
index 0000000..d6354da
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_start.png
new file mode 100755
index 0000000..c2b979f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..1dd38d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_end.png
new file mode 100755
index 0000000..716525d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_start.png
new file mode 100755
index 0000000..a4f2b4f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_stretch.png
new file mode 100755
index 0000000..d97c6f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_end.png
new file mode 100755
index 0000000..2f4d744
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_end.png
new file mode 100755
index 0000000..29dd118
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_start.png
new file mode 100755
index 0000000..c5a4b9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_stretch.png
new file mode 100755
index 0000000..32bf39f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_start.png
new file mode 100755
index 0000000..db5a0b6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_stretch.png
new file mode 100755
index 0000000..f5d75a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_start.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_stretch.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/button/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hresizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hresizer.png
new file mode 100755
index 0000000..0b76602
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hresizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hresizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hresizer_Disabled.png
new file mode 100755
index 0000000..44bdca3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hresizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hseparator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hseparator.png
new file mode 100755
index 0000000..366273a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hseparator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hseparator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hseparator_Disabled.png
new file mode 100755
index 0000000..a1c0416
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/hseparator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/resizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/resizer.png
new file mode 100755
index 0000000..1616a2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/resizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/resizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/resizer_Disabled.png
new file mode 100755
index 0000000..65eb50b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/resizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/separator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/separator.png
new file mode 100755
index 0000000..e3c3c29
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/separator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/separator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/separator_Disabled.png
new file mode 100755
index 0000000..f560b29
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/ToolStrip/separator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete.png
new file mode 100755
index 0000000..a606eed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete_Disabled.png
new file mode 100755
index 0000000..d8db3b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete_Over.png
new file mode 100755
index 0000000..bc4ca97
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/delete_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down.png
new file mode 100755
index 0000000..0c94ffc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_Disabled.png
new file mode 100755
index 0000000..ea84538
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last.png
new file mode 100755
index 0000000..8d3ef90
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last_Disabled.png
new file mode 100755
index 0000000..c8e690e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last_Over.png
new file mode 100755
index 0000000..27b0151
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_last_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_Over.png
new file mode 100755
index 0000000..705ef86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left.png
new file mode 100755
index 0000000..b020b1c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all.png
new file mode 100755
index 0000000..86daf50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all_Disabled.png
new file mode 100755
index 0000000..5cbc987
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all_Over.png
new file mode 100755
index 0000000..90adcb1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_all_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_Disabled.png
new file mode 100755
index 0000000..598530f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_Over.png
new file mode 100755
index 0000000..b09f054
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right.png
new file mode 100755
index 0000000..e24639e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all.png
new file mode 100755
index 0000000..6ef2c0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all_Disabled.png
new file mode 100755
index 0000000..25cf84d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all_Over.png
new file mode 100755
index 0000000..6cc2e89
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_all_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_Disabled.png
new file mode 100755
index 0000000..1707634
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_Over.png
new file mode 100755
index 0000000..bcc9713
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up.png
new file mode 100755
index 0000000..e8618bf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_Disabled.png
new file mode 100755
index 0000000..8c21a54
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first.png
new file mode 100755
index 0000000..1311754
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first_Disabled.png
new file mode 100755
index 0000000..893e228
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first_Over.png
new file mode 100755
index 0000000..4966c2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_first_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_Over.png
new file mode 100755
index 0000000..eb6419b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TransferIcons/up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_ancestor.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_ancestor.gif
new file mode 100755
index 0000000..dbada7a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_ancestor.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_end.gif
new file mode 100755
index 0000000..2fa53c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_middle.gif
new file mode 100755
index 0000000..f9e30bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_single.gif
new file mode 100755
index 0000000..280c88e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_start.gif
new file mode 100755
index 0000000..ef9b383
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_closed_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_end.gif
new file mode 100755
index 0000000..9283790
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_middle.gif
new file mode 100755
index 0000000..80d1b95
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_end.gif
new file mode 100755
index 0000000..6d76aa3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_middle.gif
new file mode 100755
index 0000000..47c4663
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_single.gif
new file mode 100755
index 0000000..5e2737a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_start.gif
new file mode 100755
index 0000000..95e1837
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_opened_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_single.gif
new file mode 100755
index 0000000..be0757c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_start.gif
new file mode 100755
index 0000000..3928bcf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/connector_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/file.png
new file mode 100755
index 0000000..da793cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_closed.png
new file mode 100755
index 0000000..caad126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_drop.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_drop.png
new file mode 100755
index 0000000..af9c5a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_drop.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_file.png
new file mode 100755
index 0000000..dff701f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_open.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_open.png
new file mode 100755
index 0000000..c5df8d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_open.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_opened.png
new file mode 100755
index 0000000..c5df8d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/folder_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/opener_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/opener_closed.png
new file mode 100755
index 0000000..910f960
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/opener_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/opener_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/opener_opened.png
new file mode 100755
index 0000000..adbb6ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/TreeGrid/opener_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/headerIcon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/headerIcon.png
new file mode 100755
index 0000000..d22860a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/headerIcon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/resizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/resizer.png
new file mode 100755
index 0000000..af075d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/resizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/resizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/resizer_Disabled.png
new file mode 100755
index 0000000..af075d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/resizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_B.png
new file mode 100755
index 0000000..ac7bcbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_BL.png
new file mode 100755
index 0000000..32b5297
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_BR.png
new file mode 100755
index 0000000..5c32f8a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_L.png
new file mode 100755
index 0000000..2c735aa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_R.png
new file mode 100755
index 0000000..955c1cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_T.png
new file mode 100755
index 0000000..24bb672
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_TL.png
new file mode 100755
index 0000000..f6a5549
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_TR.png
new file mode 100755
index 0000000..838fdd0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/images/Window/window_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/load_skin.js b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/load_skin.js
new file mode 100755
index 0000000..ffb8cab
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/load_skin.js
@@ -0,0 +1,995 @@
+isc.loadSkin = function (theWindow) {
+if (theWindow == null) theWindow = window;
+with (theWindow) {
+
+
+//----------------------------------------
+// Specify skin directory
+//----------------------------------------
+ // must be relative to your application file or isomorphicDir
+ isc.Page.setSkinDir("[ISOMORPHIC]/skins/Enterprise/")
+
+
+//----------------------------------------
+// Load skin style sheet(s)
+//----------------------------------------
+ isc.Page.loadStyleSheet("[SKIN]/skin_styles.css", theWindow)
+
+
+
+//============================================================
+// Component Skinning
+//============================================================
+// 1) Scrollbars
+// 2) Buttons
+// 3) Resizebars
+// 4) Sections
+// 5) Progressbars
+// 6) TabSets
+// 7) Windows
+// 8) Dialogs
+// 9) Pickers
+// 10) Menus
+// 11) Hovers
+// 12) ListGrids
+// 13) TreeGrids
+// 14) Form controls
+// 15) Drag & Drop
+// 16) Edges
+// 17) Sliders
+// 18) TileList
+// 19) CubeGrid
+// 20) FilterBuilder
+// 21) Printing
+// 22) ToolStrip
+//============================================================
+
+
+ isc.Canvas.addProperties({
+ groupBorderCSS: "1px solid #A7ABB4"
+ });
+
+ if(isc.Browser.isIE && isc.Browser.version >= 7) {
+ isc.Canvas.setAllowExternalFilters(false);
+ isc.Canvas.setNeverUseFilters(true);
+ if(isc.Window) {
+ isc.Window.addProperties({
+ modalMaskOpacity:null,
+ modalMaskStyle:"normal"
+ });
+ isc.Window.changeDefaults("modalMaskDefaults", { src : "[SKIN]opacity.png" });
+ }
+ }
+
+ if(isc.RPCManager) {
+ isc.RPCManager.addClassProperties({ promptStyle:"cursor" });
+ }
+
+//----------------------------------------
+// 1) Scrollbars
+//----------------------------------------
+ isc.Canvas.addProperties({
+ showCustomScrollbars:true,
+ scrollbarSize:16,
+ cornerSize: 16
+ })
+ isc.ScrollThumb.addProperties({
+ capSize:2,
+ vSrc:"[SKIN]vthumb.png",
+ hSrc:"[SKIN]hthumb.png",
+ showGrip:true,
+ gripLength:10,
+ gripBreadth:10,
+ showRollOver: true,
+ //showDown: true,
+ backgroundColor:"transparent"
+ })
+ isc.Scrollbar.addProperties({
+ btnSize:18,
+ showRollOver:true,
+ //showDown: true,
+ thumbMinSize:20,
+ thumbInset:0,
+ thumbOverlap:2,
+ backgroundColor:"#FFFFFF",
+ vSrc:"[SKIN]vscroll.png",
+ hSrc:"[SKIN]hscroll.png"
+ })
+
+
+//----------------------------------------
+// 2) Buttons
+//----------------------------------------
+
+ // "IButton" is the new standard button class for SmartClient applications. Application
+ // code should use IButton instead of Button for all standalone buttons. Other skins may
+ // map IButton directly to Button, so this single class will work everywhere. Button remains
+ // for internal and advanced uses (eg if you need to mix both CSS-based and image-based
+ // standalone buttons in the same application).
+ isc.defineClass("IButton", "StretchImgButton").addProperties({
+ src:"[SKIN]button/button.png",
+ height:22,
+ width:100,
+ capSize:4,
+ vertical:false,
+ titleStyle:"buttonTitle",
+ showFocused:true,
+ showFocusedAsOver:true
+ });
+ if (isc.IButton.markAsFrameworkClass != null) isc.IButton.markAsFrameworkClass();
+
+ isc.defineClass("IAutoFitButton", "IButton").addProperties({
+ autoFit: true,
+ autoFitDirection: isc.Canvas.HORIZONTAL
+ });
+ if (isc.IAutoFitButton.markAsFrameworkClass != null) isc.IAutoFitButton.markAsFrameworkClass();
+
+
+ isc.ImgButton.addProperties({
+ showFocused: true,
+ showFocusedAsOver:true
+
+ });
+
+ isc.defineClass("HeaderImgButton", "ImgButton").addProperties({
+ showFocused: false,
+ showRollOver:false,
+ showFocusedAsOver: false,
+ showDown:false
+ });
+
+ isc.Button.addProperties({
+ height:22,
+ showFocused: true,
+ showFocusedAsOver: false
+ });
+
+ isc.Label.addProperties({
+ showFocused: false
+ });
+
+
+
+//----------------------------------------
+// 3) Resizebars
+//----------------------------------------
+ // StretchImgSplitbar class renders as resize bar with
+ // end caps, body, grip
+ isc.StretchImgSplitbar.addProperties({
+ // modify vSrc / hSrc for custom appearance
+ //vSrc:"[SKIN]vsplit.gif",
+ //hSrc:"[SKIN]hsplit.gif",
+ capSize:10,
+ showGrip:true
+ })
+
+ // ImgSplitbar renders as resizebar with resize grip only
+ isc.ImgSplitbar.addProperties({
+ // modify these properties for custom appearance
+ //vSrc:"[SKIN]vgrip.png",
+ //hSrc:"[SKIN]hgrip.png",
+ //showDown:true,
+ //styleName:"splitbar"
+ })
+
+ isc.Snapbar.addProperties({
+ vSrc:"[SKIN]vsplit.png",
+ hSrc:"[SKIN]hsplit.png",
+ baseStyle:"splitbar",
+ /*items : [
+ {name:"blank", width:"capSize", height:"capSize"},
+ {name:"blank", width:"*", height:"*"},
+ {name:"blank", width:"capSize", height:"capSize"}
+ ],*/
+ items : [
+ {name:"bg", width:"*", height:"*"}
+ ],
+ showDownGrip:false,
+ showClosedGrip:false,
+ showRollOver:false,
+ showDown:false,
+ gripBreadth:3,
+ gripLength:20
+ //capSize:8
+ })
+
+ isc.Layout.addProperties({
+ resizeBarSize:5,
+ // Use the Snapbar as a resizeBar by default - subclass of Splitbar that
+ // shows interactive (closed/open) grip images
+ // Other options include the Splitbar, StretchImgSplitbar or ImgSplitbar
+ resizeBarClass:"Snapbar"
+ })
+
+
+//----------------------------------------
+// 4) Sections
+//----------------------------------------
+ if (isc.SectionItem) {
+ isc.SectionItem.addProperties({
+ sectionHeaderClass:"ImgSectionHeader",
+ height:26
+ })
+ }
+ if (isc.SectionStack) {
+
+ isc.SectionStack.addProperties({
+ backgroundColor:null,
+ sectionHeaderClass:"ImgSectionHeader",
+ headerHeight:26
+ })
+ isc.ImgSectionHeader.changeDefaults("backgroundDefaults", {
+ showRollOver:false,
+ showDown:false,
+ showDisabledIcon:false,
+ showRollOverIcon:false,
+ src:"[SKIN]SectionHeader/header.png",
+ icon:"[SKIN]SectionHeader/opener.png",
+ iconSize: 16,
+ capSize:2,
+ titleStyle:"imgSectionHeaderTitle",
+ baseStyle:"imgSectionHeader",
+ backgroundColor:"transparent"
+ })
+ isc.SectionHeader.addProperties({
+ icon:"[SKIN]SectionHeader/opener.png",
+ iconSize: 16
+ })
+ }
+
+
+//----------------------------------------
+// 5) Progressbars
+//----------------------------------------
+ if (isc.Progressbar) {
+ isc.Progressbar.addProperties({
+ horizontalItems: [
+ {name:"h_start",size:2},
+ {name:"h_stretch",size:0},
+ {name:"h_end",size:2},
+ {name:"h_empty_start",size:2},
+ {name:"h_empty_stretch",size:0},
+ {name:"h_empty_end",size:2}
+ ],
+ verticalItems: [
+ {name:"v_empty_start",size:2},
+ {name:"v_empty_stretch",size:0},
+ {name:"v_empty_end",size:0},
+ {name:"v_start",size:2},
+ {name:"v_stretch",size:0},
+ {name:"v_end",size:2}
+ ],
+ breadth:24,
+ length : 300
+ })
+ }
+
+
+//----------------------------------------
+// 6) TabSets
+//----------------------------------------
+ if (isc.TabSet) {
+ isc.TabSet.addProperties({
+ tabBarThickness:24,
+ scrollerButtonSize:19,
+ pickerButtonSize:20,
+
+ symmetricScroller:false,
+ symmetricPickerButton:false,
+
+ scrollerSrc:"[SKIN]scroll.png",
+ pickerButtonSrc:"[SKIN]picker.png",
+
+ closeTabIconSize:10,
+
+ showEdges:false,
+ paneContainerClassName:"tabSetContainer",
+
+ paneMargin:5,
+
+ showScrollerRollOver: false
+ });
+ isc.TabSet.changeDefaults("paneContainerDefaults", {
+ showEdges:false
+ })
+ isc.TabBar.addProperties({
+ membersMargin:1,
+
+ // keep the tabs from reaching the curved edge of the pane (regardless of align)
+ layoutStartMargin:5,
+ layoutEndMargin:5,
+
+ styleName:"tabBar",
+
+ // have the baseline overlap the top edge of the TabSet, using rounded media
+ baseLineConstructor:"Canvas",
+ baseLineProperties : {
+ backgroundColor: "#C0C3C7",
+ overflow:"hidden",
+ height:1
+ }
+
+ /*baseLineSrc:"[SKIN]baseline.png",
+ baseLineThickness:3,
+ baseLineCapSize:4*/
+
+ })
+ }
+ if (isc.ImgTab) {
+ isc.ImgTab.addProperties({
+ src:"[SKIN]tab.png",
+ capSize:6,
+ showRollOver:true,
+ showDown:false,
+ showDisabled:true,
+ showDisabledIcon:false,
+ titleStyle:"tabTitle"
+ })
+ }
+
+
+//----------------------------------------
+// 7) Windows
+//----------------------------------------
+ if (isc.Window) {
+ isc.Window.addProperties({
+ // rounded frame edges
+ showEdges:true,
+ edgeImage: "[SKINIMG]Window/window.png",
+ customEdges:null,
+ edgeSize:6,
+ edgeTop:23,
+ edgeBottom:6,
+ edgeOffsetTop:2,
+ edgeOffsetRight:5,
+ edgeOffsetBottom:5,
+ minimizeHeight:29,
+ showHeaderBackground:false, // part of edges
+ showHeaderIcon:true,
+
+ // clear backgroundColor and style since corners are rounded
+ backgroundColor:null,
+ border: null,
+ styleName:"normal",
+ edgeCenterBackgroundColor:"#FFFFFF",
+ bodyColor:"transparent",
+ bodyStyle:"windowBody",
+
+ layoutMargin:0,
+ membersMargin:0,
+
+ showFooter:false,
+
+ showShadow:false,
+ shadowDepth:5
+ })
+
+ isc.Window.changeDefaults("headerDefaults", {
+ layoutMargin:0,
+ height:20
+ })
+ isc.Window.changeDefaults("resizerDefaults", {
+ src:"[SKIN]/Window/resizer.png"
+ })
+
+ isc.Window.changeDefaults("headerIconDefaults", {
+ width:15,
+ height:15,
+ src:"[SKIN]/Window/headerIcon.png"
+ })
+ isc.Window.changeDefaults("restoreButtonDefaults", {
+ src:"[SKIN]/headerIcons/cascade.png",
+ showRollOver:true,
+ showDown:false,
+ width:15,
+ height:15
+ })
+ isc.Window.changeDefaults("closeButtonDefaults", {
+ src:"[SKIN]/headerIcons/close.png",
+ showRollOver:true,
+ showDown:false,
+ width:15,
+ height:15
+ })
+ isc.Window.changeDefaults("maximizeButtonDefaults", {
+ src:"[SKIN]/headerIcons/maximize.png",
+ showRollOver:true,
+ width:15,
+ height:15
+ })
+ isc.Window.changeDefaults("minimizeButtonDefaults", {
+ src:"[SKIN]/headerIcons/minimize.png",
+ showRollOver:true,
+ showDown:false,
+ width:15,
+ height:15
+ })
+ isc.Window.changeDefaults("toolbarDefaults", {
+ buttonConstructor: "IButton"
+ })
+
+
+ if (isc.ColorPicker) {
+ isc.ColorPicker.addProperties({
+ layoutMargin:0
+ })
+ }
+
+//----------------------------------------
+// 8) Dialogs
+//----------------------------------------
+ if (isc.Dialog) {
+ isc.Dialog.addProperties({
+ bodyColor:"transparent",
+ hiliteBodyColor:"transparent"
+ })
+ // even though Dialog inherits from Window, we need a separate changeDefaults block
+ // because Dialog defines its own toolbarDefaults
+ isc.Dialog.changeDefaults("toolbarDefaults", {
+ buttonConstructor: "IButton",
+ height:42, // 10px margins + 22px button
+ membersMargin:10
+ })
+ if (isc.Dialog.Warn && isc.Dialog.Warn.toolbarDefaults) {
+ isc.addProperties(isc.Dialog.Warn.toolbarDefaults, {
+ buttonConstructor: "IButton",
+ height:42,
+ membersMargin:10
+ })
+ }
+ }
+
+ } // end isc.Window
+
+
+//----------------------------------------
+// 9) Pickers
+//----------------------------------------
+ // add bevels and shadows to all pickers
+ isc.__pickerDefaults = {
+ showEdges:true,
+ edgeSize:6,
+ edgeImage: "[SKINIMG]Window/window.png",
+ backgroundColor:"#FFFFFF",
+ showShadow:false,
+ shadowDepth:6,
+ shadowOffset:5
+ }
+ if (isc.ButtonTable) {
+ isc.ButtonTable.addProperties({
+ backgroundColor:"#FFFFFF"
+ })
+ }
+ if (isc.FormItem) {
+ isc.FormItem.changeDefaults("pickerDefaults", isc.__pickerDefaults)
+ isc.FormItem.addProperties({
+ defaultIconSrc:"[SKIN]/DynamicForm/default_formItem_icon.png"
+ });
+ }
+ if (isc.CheckboxItem) {
+ isc.CheckboxItem.addProperties({
+ checkedImage:"[SKINIMG]/DynamicForm/checked.png",
+ uncheckedImage:"[SKINIMG]/DynamicForm/unchecked.png",
+ unsetImage:"[SKINIMG]/DynamicForm/unsetcheck.png",
+ partialSelectedImage:"[SKINIMG]/DynamicForm/partialcheck.png",
+ valueIconWidth:13,
+ valueIconHeight:13,
+ showValueIconOver:false,
+ showValueIconFocused:false
+ })
+ }
+ if(isc.RelationItem) {
+ isc.RelationItem.changeDefaults("removeButtonDefaults", {
+ src: "[SKIN]DynamicForm/Remove_icon.png"
+ });
+ }
+
+ if (isc.DateChooser) {
+ isc.DateChooser.addProperties({
+ headerStyle:"dateChooserButton",
+ weekendHeaderStyle:"dateChooserWeekendButton",
+ baseNavButtonStyle:"dateChooserNavButton",
+ baseWeekdayStyle:"dateChooserWeekday",
+ baseWeekendStyle:"dateChooserWeekend",
+ baseBottomButtonStyle:"dateChooserBottomButton",
+ alternateWeekStyles:false,
+
+ showEdges:true,
+
+ edgeImage: "[SKINIMG]Window/window.png",
+ edgeSize:6,
+ edgeTop:26,
+ edgeBottom:5,
+ edgeOffsetTop:1,
+ edgeOffsetRight:5,
+ edgeOffsetLeft:5,
+ edgeOffsetBottom:5,
+
+ todayButtonHeight:20,
+
+ headerHeight:24,
+
+ edgeCenterBackgroundColor:"#FFFFFF",
+ backgroundColor:null,
+
+ showShadow:false,
+ shadowDepth:6,
+ shadowOffset:5,
+
+ showDoubleYearIcon:false,
+ skinImgDir:"images/DateChooser/",
+ prevYearIcon:"[SKIN]doubleArrow_left.png",
+ prevYearIconWidth:16,
+ prevYearIconHeight:16,
+ nextYearIcon:"[SKIN]doubleArrow_right.png",
+ nextYearIconWidth:16,
+ nextYearIconHeight:16,
+ prevMonthIcon:"[SKIN]arrow_left.png",
+ prevMonthIconWidth:16,
+ prevMonthIconHeight:16,
+ nextMonthIcon:"[SKIN]arrow_right.png",
+ nextMonthIconWidth:16,
+ nextMonthIconHeight:16
+ });
+ }
+ if (isc.MultiFilePicker) {
+ isc.MultiFilePicker.addProperties({
+ backgroundColor:"#C7C7C7"
+ })
+ }
+ if (isc.RelationPicker) {
+ isc.RelationPicker.addProperties({
+ backgroundColor:"#C7C7C7"
+ })
+ }
+
+ // Native FILE INPUT items are rendered differently in Safari from other browsers
+ // Don't show standard textbox styling around them as it looks odd
+ if (isc.UploadItem && isc.Browser.isSafari) {
+ isc.UploadItem.addProperties({
+ textBoxStyle:"normal"
+ });
+ }
+//----------------------------------------
+// 10) Menus
+//----------------------------------------
+ if (isc.Menu) {
+ isc.Menu.addProperties({
+ cellHeight:22,
+ fastCellUpdates:false,
+ showShadow:false,
+ shadowDepth:5,
+ showEdges:false,
+ submenuImage:{src:"[SKIN]submenu.png", height:7, width:4},
+ submenuDisabledImage:{src:"[SKIN]submenu_disabled.png", height:7, width:4},
+ checkmarkImage:{src:"[SKIN]check.png", width:9, height:8},
+ checkmarkDisabledImage:{src:"[SKIN]check_disabled.png", width:7, height:6},
+ bodyStyleName:"gridBody",
+ iconBodyStyleName:"menuMain",
+ bodyBackgroundColor:null
+ });
+ isc.addProperties(isc.Menu.ICON_FIELD, {
+ width:24,
+ baseStyle:"menuIconField"
+ });
+ isc.Menu.TITLE_FIELD.baseStyle = "menuTitleField";
+ }
+
+ if (isc.MenuButton) {
+ isc.MenuButton.addProperties({
+ baseStyle: "menuButton",
+ menuButtonImage:"[SKIN]menu_button.png",
+ menuButtonImageUp:"[SKIN]menu_button_up.png",
+ iconWidth:7,
+ iconHeight:4,
+ showFocusedAsOver:true
+ });
+ }
+ if (isc.IMenuButton) {
+ isc.IMenuButton.addProperties({
+
+ menuButtonImage:"[SKIN]menu_button.png",
+ menuButtonImageUp:"[SKIN]menu_button_up.png",
+ iconWidth:7,
+ iconHeight:4,
+
+ // Other properties (match IButton)
+ src:"[SKIN]button/button.png",
+ height:22,
+ capSize:4,
+ titleStyle:"buttonTitle",
+ showFocused:true,
+ showFocusedAsOver:true
+ });
+ }
+
+ if (isc.SelectionTreeMenu) {
+ isc.SelectionTreeMenu.addProperties({
+ showIcons:false,
+ showKeys:false,
+ bodyStyleName:"treeMenuBody",
+ bodyBackgroundColor:null
+ });
+ }
+
+//----------------------------------------
+// 11) Hovers
+//----------------------------------------
+ if (isc.Hover) {
+ isc.addProperties(isc.Hover.hoverCanvasDefaults, {
+ showShadow:false,
+ shadowDepth:5
+ })
+ }
+
+
+//----------------------------------------
+// 12) ListGrids
+//----------------------------------------
+ if (isc.ListGrid) {
+ isc.ListGrid.addProperties({
+ alternateRecordStyles : true,
+
+ editFailedCSSText:"color:FF6347;",
+ errorIconSrc : "[SKINIMG]actions/exclamation.png",
+ tallBaseStyle: "tallCell",
+
+ headerButtonConstructor:"Button",
+ sorterConstructor:"ImgButton",
+
+ sortAscendingImage:{src:"[SKIN]sort_ascending.png", width:9, height:6},
+ sortDescendingImage:{src:"[SKIN]sort_descending.png", width:9, height:6},
+
+ backgroundColor:null, bodyBackgroundColor:null,
+
+ headerHeight:23,
+ summaryRowHeight:21,
+ cellHeight:22,
+ normalCellHeight:22,
+ headerBackgroundColor:null,
+ headerBaseStyle:"headerButton",
+ bodyStyleName:"gridBody",
+ alternateBodyStyleName:null,
+
+ summaryRowStyle:"gridSummaryCell",
+ groupSummaryStyle:"groupSummaryCell",
+
+ showHeaderMenuButton:true,
+ headerMenuButtonConstructor:"HeaderImgButton",
+ headerMenuButtonWidth:17,
+ headerMenuButtonSrc:"[SKIN]/ListGrid/header_menu.png",
+ headerMenuButtonIcon:"[SKINIMG]/ListGrid/sort_descending.png",
+ headerMenuButtonIconWidth: 9,
+ headerMenuButtonIconHeight: 6,
+
+ groupLeadingIndent : 1,
+ groupIconPadding : 3,
+ groupIcon: "[SKINIMG]/ListGrid/group.png",
+
+ expansionFieldTrueImage : "[SKINIMG]/ListGrid/row_expanded.png",
+ expansionFieldFalseImage: "[SKINIMG]/ListGrid/row_collapsed.png",
+ expansionFieldImageWidth : 16,
+ expansionFieldImageHeight : 16,
+ checkboxFieldImageWidth : 13,
+ checkboxFieldImageHeight : 13
+ })
+ isc.ListGrid.changeDefaults("sorterDefaults", {
+ // baseStyle / titleStyle is auto-assigned from headerBaseStyle
+ showFocused:false,
+ src:"[SKIN]ListGrid/header.png",
+ baseStyle:"sorterButton"
+ })
+ isc.ListGrid.changeDefaults("headerButtonDefaults", {
+ showRollOver:true,
+ showDown:false,
+ showFocused:false,
+ baseStyle:"headerButton"
+ })
+ isc.ListGrid.changeDefaults("headerMenuButtonDefaults", {
+ showDown:false,
+ showTitle:true,
+ src:"[SKIN]ListGrid/header.png"
+ })
+ isc.ListGrid.changeDefaults("summaryRowDefaults", {
+ bodyBackgroundColor:null,
+ bodyStyleName:"summaryRowBody"
+ });
+ }
+
+ if (isc.TreeGrid) {
+ isc.TreeGrid.addProperties({
+ alternateRecordStyles : false,
+ tallBaseStyle: "treeTallCell",
+ normalBaseStyle: "treeCell",
+ openerImage:"[SKIN]opener.png",
+ sortAscendingImage:{src:"[SKINIMG]ListGrid/sort_ascending.png", width:9, height:6},
+ sortDescendingImage:{src:"[SKINIMG]ListGrid/sort_descending.png", width:9, height:6}
+ })
+ }
+
+ if(isc.MultiSortPanel) {
+ isc.MultiSortPanel.changeDefaults("levelUpButtonDefaults", {
+ src: "[SKINIMG]TransferIcons/up.png",
+ height: 22,
+ width: 24
+ });
+ isc.MultiSortPanel.changeDefaults("levelDownButtonDefaults", {
+ src: "[SKINIMG]TransferIcons/down.png",
+ height: 22,
+ width: 24
+ });
+ }
+//----------------------------------------
+// 13) TreeGrids
+//----------------------------------------
+ if (isc.TreeGrid) {
+ isc.TreeGrid.addProperties({
+ openerIconSize: 22,
+ folderIcon:"[SKIN]folder.png",
+ nodeIcon:"[SKIN]file.png",
+ manyItemsImage:"[SKIN]folder_file.png"
+ });
+ }
+ if (isc.ColumnTree) {
+ isc.ColumnTree.addProperties({
+ folderIcon:"[SKIN]folder.png",
+ nodeIcon:"[SKIN]file.png"
+ });
+ }
+
+
+//----------------------------------------
+// 14) Form controls
+//----------------------------------------
+ if (isc.FormItem) {isc.FormItem.addProperties({
+ defaultIconSrc:"[SKIN]/DynamicForm/default_formItem_icon.png",
+ errorIconSrc : "[SKINIMG]actions/exclamation.png",
+ iconHeight:18,
+ iconWidth:18,
+ iconVAlign:"middle"
+
+ })}
+
+ if (isc.PickTreeItem) {isc.PickTreeItem.addProperties({
+ buttonDefaults: {
+ height:21
+ }
+ })}
+
+ if (isc.TextItem) {isc.TextItem.addProperties({
+ height:22,
+ showFocused: true
+ })}
+
+ if (isc.TextAreaItem) {isc.TextAreaItem.addProperties({
+ showFocused: true
+ })}
+ if (isc.SelectItem) {isc.SelectItem.addProperties({
+ pickListTallBaseStyle:"tallPickListCell",
+ textBoxStyle:"selectItemText",
+ showFocusedPickerIcon:false,
+ pickerIconSrc:"[SKIN]/pickers/comboBoxPicker.png",
+ height:22,
+ pickerIconWidth:18
+ })}
+
+ if (isc.ComboBoxItem) {isc.ComboBoxItem.addProperties({
+ pickListTallBaseStyle:"tallPickListCell",
+ textBoxStyle:"selectItemText",
+ pendingTextBoxStyle:"comboBoxItemPendingText",
+ showFocusedPickerIcon:false,
+ pickerIconSrc:"[SKIN]/pickers/comboBoxPicker.png",
+ height:22,
+ pickerIconWidth:18
+ })}
+ // used by SelectItem and ComboBoxItem for picklist
+ if (isc.ScrollingMenu) {isc.ScrollingMenu.addProperties({
+ showShadow:false,
+ shadowDepth:5
+ })}
+ if (isc.DateItem) {
+ isc.DateItem.addProperties({
+ height:22,
+ pickerIconWidth:16,
+ pickerIconHeight:14,
+ pickerIconSrc:"[SKIN]/DynamicForm/date_control.png"
+ })
+ }
+ if (isc.SpinnerItem) {
+ isc.SpinnerItem.addProperties({
+ textBoxStyle:"selectItemText",
+ height:22
+ })
+ isc.SpinnerItem.INCREASE_ICON = isc.addProperties(isc.SpinnerItem.INCREASE_ICON, {
+ width:16,
+ height:11,
+ showRollOver:true,
+ showFocused:true,
+ showDown:true,
+ imgOnly:true,
+ src:"[SKIN]/DynamicForm/spinner_control_increase.png"
+ })
+ isc.SpinnerItem.DECREASE_ICON = isc.addProperties(isc.SpinnerItem.DECREASE_ICON, {
+ width:16,
+ height:11,
+ showRollOver:true,
+ showFocused:true,
+ showDown:true,
+ imgOnly:true,
+ src:"[SKIN]/DynamicForm/spinner_control_decrease.png"
+ })
+ }
+
+
+
+ if (isc.PopUpTextAreaItem) {isc.PopUpTextAreaItem.addProperties({
+ popUpIconSrc: "[SKIN]/DynamicForm/text_control.gif",
+ popUpIconWidth:16,
+ popUpIconHeight:16
+ })}
+ if (isc.ButtonItem && isc.IButton) {isc.ButtonItem.addProperties({
+ showFocused:true,
+ showFocusAsOver:false,
+ buttonConstructor:isc.IButton,
+ height:22
+ })}
+
+ if (isc.ToolbarItem && isc.IAutoFitButton) {isc.ToolbarItem.addProperties({
+ buttonConstructor:isc.IAutoFitButton,
+ buttonProperties: {
+ autoFitDirection: isc.Canvas.BOTH
+ }
+ })}
+
+ if(isc.DateRangeDialog) {
+ isc.DateRangeDialog.changeDefaults("headerIconProperties", {
+ src: "[SKIN]/DynamicForm/date_control.png"
+ });
+ }
+ if(isc.MiniDateRangeItem) {
+ isc.MiniDateRangeItem.changeDefaults("pickerIconDefaults", {
+ src: "[SKIN]/DynamicForm/date_control.png"
+ });
+ }
+ if(isc.RelativeDateItem) {
+ isc.RelativeDateItem.changeDefaults("pickerIconDefaults", {
+ src: "[SKIN]/DynamicForm/date_control.png"
+ });
+ }
+//----------------------------------------
+// 15) Drag & Drop
+//----------------------------------------
+ // drag tracker drop shadow (disabled by default because many trackers are irregular shape)
+ //isc.addProperties(isc.EH.dragTrackerDefaults, {
+ // showShadow:false,
+ // shadowDepth:4
+ //});
+ // drag target shadow and opacity
+ isc.EH.showTargetDragShadow = true;
+ isc.EH.targetDragOpacity = 50;
+
+
+
+//----------------------------------------
+// 16) Edges
+//----------------------------------------
+ // default edge style serves as a pretty component frame/border - just set showEdges:true
+ if (isc.EdgedCanvas) {
+ isc.EdgedCanvas.addProperties({
+ edgeSize:6,
+ edgeImage: "[SKINIMG]edges/edge.png"
+ })
+ }
+
+
+//----------------------------------------
+// 17) Sliders
+//----------------------------------------
+ if (isc.Slider) {
+ isc.Slider.addProperties({
+ thumbThickWidth:14,
+ thumbThinWidth:14,
+ trackWidth:5,
+ trackCapSize:2,
+ thumbSrc:"thumb.png",
+ trackSrc:"track.png"
+ })
+ }
+
+//----------------------------------------
+// 18) TileList
+//----------------------------------------
+ if (isc.TileGrid) {
+ isc.TileGrid.addProperties({
+ valuesShowRollOver: true,
+ styleName:null,
+ showEdges:true
+ })
+ }
+
+// ----------------------------------------
+// 19) CubeGrid
+//----------------------------------------
+ if (isc.CubeGrid) {
+ isc.CubeGrid.addProperties({
+ bodyStyleName:"cubeGridBody",
+ alternateBodyStyleName:"alternateCubeGridBody"
+ });
+ }
+
+// ----------------------------------------
+// 20) FilterBuilder
+//----------------------------------------
+ if (isc.FilterBuilder) {
+ isc.FilterBuilder.changeDefaults("addButtonDefaults", {
+ showFocused: false
+ });
+ isc.FilterBuilder.changeDefaults("removeButtonDefaults", {
+ showFocused: false
+ });
+ }
+
+// -------------------------------------------
+// 21) Printing
+// -------------------------------------------
+ if (isc.PrintWindow) {
+ isc.PrintWindow.changeDefaults("printButtonDefaults", {
+ height: 18
+ });
+ }
+
+// -------------------------------------------
+// 21) Printing
+// -------------------------------------------
+ if (isc.Calendar) {
+ isc.Calendar.changeDefaults("datePickerButtonDefaults", {
+ showDown:false,
+ showOver : false,
+ src:"[SKIN]/DynamicForm/date_control.png"
+ });
+
+ isc.Calendar.changeDefaults("controlsBarDefaults", {
+ height:10,
+ layoutBottomMargin :10
+ });
+ isc.Calendar.changeDefaults("addEventButtonDefaults", {
+ src:"[SKINIMG]actions/plus.png"
+ });
+
+ isc.EventWindow.changeDefaults("resizerDefaults", {
+ src:"[SKIN]/Window/resizer.png"
+ })
+ }
+
+// -------------------------------------------
+// 22) ToolStrip
+// -------------------------------------------
+ if(isc.ToolStrip) {
+ isc.ToolStrip.addProperties({
+ height:30,
+ defaultLayoutAlign:"center",
+ verticalStyleName:"toolStripVertical"
+ });
+
+ isc.ToolStrip.changeDefaults("formWrapperDefaults",
+ {cellPadding:3}
+ );
+ }
+
+// -------------------------------------------
+// ExampleViewPane - used in the feature explorer
+// -------------------------------------------
+ if (isc.ExampleViewPane) {
+ isc.ExampleViewPane.addProperties({
+ styleName:"normal"
+ });
+ }
+
+// specify where the browser should redirect if not supported
+isc.Page.checkBrowserAndRedirect("[SKIN]/unsupported_browser.html");
+
+} // end with()
+} // end loadSkin()
+alert('here');
+isc.loadSkin()
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/load_skin.js.gz b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/load_skin.js.gz
new file mode 100755
index 0000000..3e4212f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/load_skin.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/skin_styles.css b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/skin_styles.css
new file mode 100755
index 0000000..1573af6
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/skin_styles.css
@@ -0,0 +1,2425 @@
+/*============================================================
+ "Enterprise" theme CSS styles
+ Copyright 2001 and beyond, Isomorphic Software
+
+ :: Contents ::
+
+ 1) General
+ default text
+ default border
+ drop indicator
+ hover canvas
+ 2) Buttons
+ Button
+ ImgButton
+ StretchImgButton
+ 3) Menu
+ MenuButton
+ 4) Window
+ Dialog
+ 5) Layout
+ drop line
+ drag placeholder
+ splitbar (resizebar)
+ 6) TabSet
+ tab titles
+ 7) SectionStack
+ image SectionHeaders
+ CSS SectionHeaders
+ 8) Forms
+ general
+ headerItem
+ text items
+ selectItem
+ checkbox & radioButton
+ ColorChooser
+ DateChooser
+ 9) Slider & Rangebar
+ 10) DetailViewer
+ 11) ListGrid
+ parts
+ headers
+ cells
+ 12) ToolStrip
+ 12a) ToolStripGroup and IconButton
+ 13) Tools
+ 14) TileGrid
+ ------------
+ internal/unused styles
+============================================================*/
+
+
+/*============================================================
+ 1) General
+============================================================*/
+
+.pageBackground {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ background:#FAFAFA;
+}
+
+/* default text */
+.normal {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+}
+
+.defaultBorder {
+ border:1px solid #A7ABB4;
+}
+
+/* drag outline */
+.dragOutline {
+ border:1px dashed #0B70F9;
+}
+
+/* drop indicator */
+.dropBorder {
+ background-color:#808080;
+}
+
+
+/* hover canvas */
+.canvasHover,
+.gridHover,
+.formHover {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:black;
+ background-color:#FFFFD0; border:1px solid #808080; padding:5px;
+}
+
+/* group label */
+.groupLabel {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ padding-left:5px; padding-right:5px;
+}
+/*============================================================
+ 2) Button
+ button.baseStyle
+ buttonStrip.baseStyle
+ buttonTable.baseButtonStyle
+ listBar.labelStyle
+ listGrid.headerBaseStyle (not in this skin)
+============================================================*/
+.button,
+.buttonOver,
+.buttonFocused,
+.buttonFocusedOver,
+.buttonDown,
+.buttonFocusedDown,
+.buttonSelected,
+.buttonSelectedFocused,
+.buttonSelectedDown,
+.buttonSelectedFocusedDown,
+.buttonSelectedOver,
+.buttonSelectedFocusedOver,
+.buttonDisabled,
+.buttonSelectedDisabled {
+ padding:2px;
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ background:#DDDDDD url(./images/cssButton/button_stretch.png) repeat-x;
+ color:#000000;
+ border:1px solid #A6ABB4;
+}
+.buttonDisabled {
+ background:#E9E9E9 url(./images/cssButton/button_Disabled_stretch.png) repeat-x;
+ border-left:1px solid #A7ABB4;
+ border-right:1px solid #A6AAB3;
+ border-top:1px solid #BABDC4;
+ border-bottom:1px solid #B4B8C1;
+}
+.buttonDisabled,
+.buttonSelectedDisabled {
+ font-weight:normal;
+ color:#AAAAAA;
+}
+
+.buttonFocused,
+.buttonFocusedOver,
+.buttonSelectedFocused,
+.buttonSelectedFocusedOver,
+.buttonSelectedFocusedDown {
+ border-left:1px solid #9BC8FF;
+ border-right:1px solid #9BC8FF;
+ border-top:1px solid #B2D3FC;
+ border-bottom:1px solid #AACBF6;
+}
+
+.buttonOver,
+.buttonFocusedOver,
+.buttonSelectedFocused,
+.buttonSelectedFocusedOver {
+ background:#B2D7FF url(./images/cssButton/button_Over_stretch.png) repeat-x;
+ border:1px solid #577CB0;
+}
+
+.buttonDown,
+.buttonFocusedDown,
+.buttonSelectedDown,
+.buttonSelectedFocusedDown {
+ background:#BEDDFF url(./images/cssButton/button_Down_stretch.png) repeat-x;
+ border-left:1px solid #577cb0;
+ border-right:1px solid #577cb0;
+ border-top:1px solid #577cb0;
+ border-bottom:1px solid #577cb0;
+}
+
+.buttonSelected,
+.buttonSelectedFocused,
+.buttonSelectedOver,
+.buttonSelectedFocusedOver,
+.buttonSelectedDisabled {
+ background:#B2D7FF url(./images/cssButton/button_Over_stretch.png) repeat-x;
+ border:1px solid #577CB0;
+}
+
+
+
+/* ImgButton */
+.imgButton,
+.imgButtonOver,
+.imgButtonSelected,
+.imgButtonSelectedDisabled,
+.imgButtonSelectedOver,
+.imgButtonDown,
+.imgButtonSelectedDown,
+.imgButtonDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+}
+.imgButtonDisabled {
+ color:#666666;
+}
+
+/* StretchImgButton */
+.stretchImgButton,
+.stretchImgButtonSelected,
+.stretchImgButtonSelectedOver,
+.stretchImgButtonOver,
+.stretchImgButtonDown,
+.stretchImgButtonSelectedDown,
+.stretchImgButtonSelectedDisabled,
+.stretchImgButtonDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+}
+.stretchImgButtonOver {
+ font-weight:normal;
+}
+.stretchImgButtonSelectedDisabled,
+.stretchImgButtonDisabled {
+ font-weight:normal;
+ color:#AAAAAA;
+}
+
+/* Button Title */
+.buttonTitle,
+.buttonTitleOver,
+.buttonTitleDown,
+.buttonTitleSelected,
+.buttonTitleFocused,
+.buttonTitleSelectedFocused,
+.buttonTitleSelectedOver,
+.buttonTitleFocusedOver,
+.buttonTitleSelectedFocusedOver,
+.buttonTitleSelectedDown,
+.buttonTitleFocusedDown,
+.buttonTitleSelectedFocusedDown,
+.buttonTitleDisabled,
+.buttonTitleSelectedDisabled {
+ font-family:Tahoma,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:#000000;
+}
+.buttonTitleDisabled,
+.buttonTitleSelectedDisabled {
+ font-weight:normal;
+ color:#AAAAAA;
+}
+
+
+/*============================================================
+ 3) Menus
+============================================================
+ */
+
+.menuMain {
+ border: 1px solid #93A9C0;
+ background:#FFFFFF url(./images/Menu/menu_background.png) repeat-y scroll;
+}
+.treeMenuBody {
+ border: 1px solid #93A9C0;
+ background: #FFFFFF;
+}
+.menu,
+.menuSelected,
+.menuOver,
+.menuSelectedOver,
+.menuDisabled,
+.menuTitleField,
+.menuTitleFieldDark,
+.menuTitleFieldSelected,
+.menuTitleFieldSelectedDark,
+.menuTitleFieldOver,
+.menuTitleFieldOverDark,
+.menuTitleFieldSelectedOver,
+.menuTitleFieldSelectedOverDark,
+.menuTitleFieldDisabled,
+.menuIconField,
+.menuIconFieldOver,
+.menuIconFieldSelected,
+.menuIconFieldSelectedOver,
+.menuIconFieldDisabled,
+.treeMenuSelected,
+.treeMenuSelectedOver,
+.treeMenuSelectedSelected,
+.treeMenuSelectedSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ padding-top:2px; padding-bottom:2px;
+}
+.menu,
+.menuSelected {
+}
+.menuOver,
+.menuOverDark,
+.menuSelectedOver,
+.menuSelectedOverDark,
+.menuTitleFieldOver,
+.menuTitleFieldOverDark,
+.menuTitleFieldSelectedOver,
+.menuTitleFieldSelectedOverDark,
+.menuIconFieldOver,
+.menuIconFieldOverDark,
+.menuIconFieldSelectedOver,
+.menuIconFieldSelectedOverDark,
+.treeMenuSelected,
+.treeMenuSelectedDark,
+.treeMenuSelectedOver,
+.treeMenuSelectedOverDark,
+.treeMenuSelectedSelected,
+.treeMenuSelectedSelectedOver {
+ background:#FFFFFF url(./images/ListGrid/row_Over.png) repeat-x scroll 0px 1px;
+}
+
+.menuTitleField,
+.menuTitleFieldDark,
+.menuTitleFieldSelected,
+.menuTitleFieldSelectedDark,
+.menuTitleFieldOver,
+.menuTitleFieldOverDark,
+.menuTitleFieldSelectedOver,
+.menuTitleFieldSelectedOverDark,
+.menuTitleFieldDisabled {
+ padding-left:4px;
+}
+
+.menuIconField,
+.menuIconFieldDark,
+.menuIconFieldOver,
+.menuIconFieldOverDark,
+.menuIconFieldSelected,
+.menuIconFieldSelectedDark,
+.menuIconFieldSelectedOver,
+.menuIconFieldSelectedOverDark,
+.menuIconFieldDisabled {
+ padding-left:4px; padding-right:4px;
+}
+.menuDisabled ,
+.menuTitleFieldDisabled,
+.menuIconFieldDisabled {
+ color:#AAAAAA;
+}
+
+/* menu header buttons */
+.menuButton,
+.menuButtonOver,
+.menuButtonDown,
+.menuButtonDisabled,
+.menuButtonFocused,
+.menuButtonFocusedDown,
+.menuButtonFocusedOver,
+.menuButtonSelected,
+.menuButtonSelectedDown,
+.menuButtonSelectedOver,
+.menuButtonSelectedDisabled {
+ font-family:Arial,sans-serif; font-size:11px;
+ color: #000000;
+ background:#DDDDDD url(./images/cssButton/button_stretch.png) repeat-x scroll;
+ padding-left:4px; padding-right:4px;
+ border:1px solid #A6ABB4;
+}
+
+.menuButtonOver {
+background:#B2D7FF url(./images/cssButton/button_Over_stretch.png) repeat-x;
+}
+
+.menuButtonDown,
+.menuButtonFocusedDown,
+.menuButtonFocusedOver,
+.menuButtonSelected,
+.menuButtonSelectedDown,
+.menuButtonSelectedOver {
+ background:#BEDDFF url(./images/cssButton/button_Down_stretch.png) repeat-x;
+ border:1px solid #A6ABB4;
+}
+.menuButtonDisabled,
+.menuButtonSelectedDisabled {
+ color:#AAAAAA;
+ border:1px solid #A6ABB4;
+}
+
+/*============================================================
+ 4) Window
+ window.styleName - windowBackground
+ window.bodyStyle - windowBody
+ window.headerStyle - windowHeader
+ window.hiliteHeaderStyle - windowHeaderHilite
+ window.headerLabelDefaults.styleName - windowHeaderText
+ window.statusBarDefaults.styleName - windowStatusBar
+
+ Dialog
+ dialog.styleName - dialogBackground
+ dialog.bodyStyle - dialogBody
+ dialog.headerStyle - dialogHeader
+ dialog.hiliteHeaderStyle - dialogHeaderHilite
+ dialog.headerLabelDefaults.styleName - dialogHeaderText
+============================================================*/
+
+.windowBackground,
+.dialogBackground {}
+
+.windowBody,
+.dialogBody {
+ background-color:#FFFFFF;
+}
+.promptBody {
+}
+
+.windowHeader,
+.dialogHeader {
+}
+
+.windowHeaderHilite,
+.dialogHeaderHilite {
+}
+
+.windowHeaderText,
+.dialogHeaderText {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ font-weight:bold;
+ color:#4C4C4C;
+ padding-left:2px; padding-right:2px; padding-bottom:2px;
+}
+.windowStatusBar {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:black;
+ border-top: 1px solid #999999; border-left: 1px solid #999999;
+ border-right: 1px solid #FFFFFF; border-bottom: 1px solid #FFFFFF;
+}
+.modalMask {
+ background-color:black;
+}
+
+/*============================================================
+ 5) Layout
+============================================================*/
+
+.layoutDropLine {
+ background-color:#3366FF;
+
+}
+.layoutPlaceHolder {
+ border:1px solid black;
+}
+.splitbar {
+
+}
+.splitbarDown {
+ border:1px solid rgb(50,135,185);
+}
+
+.vSnapBar,
+.vSnapBarOver {
+}
+.hSnapBar,
+.hSnapBarOver {
+}
+
+/*============================================================
+ 6) TabSet and tab titles
+============================================================*/
+
+.tabSetContainer {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:#D9D9D9;
+ border: 1px solid #C0C3C7;
+ background-color:#FFFFFF
+}
+
+.tabBar {
+}
+
+.tabBaseline {
+ z-index:10000000;
+}
+
+.tab,
+.tabOver,
+.tabSelected,
+.tabSelectedOver,
+.tabDown,
+.tabSelectedDown,
+.tabSelectedDisabled,
+.tabDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+}
+
+.tabTitle,
+.tabTitleDown,
+.tabTitleOver,
+.tabTitleDisabled,
+.tabTitleSelected,
+.tabTitleSelectedDown,
+.tabTitleSelectedOver,
+.tabTitleSelectedDisabled,
+.vtabTitle,
+.vtabTitleSelected,
+.vtabTitleOver,
+.vtabTitleDown,
+.vtabTitleSelectedOver,
+.vtabTitleSelectedDown,
+.vtabTitleDisabled,
+.vtabTitleSelectedDisabled {
+ color: black;
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ padding-bottom:1px;
+}
+.tabTitleOver,
+.vtabTitleOver {
+ color:#15428b;
+}
+
+.tabTitleSelected,
+.vtabTitleSelected {
+ color:black;
+ font-weight:bold;
+}
+
+.tabTitleSelectedOver,
+.vtabTitleSelectedOver {
+ color:#15428b;
+ font-weight:bold;
+}
+
+
+.tabTitleDisabled,
+.tabTitleSelectedDisabled,
+.vtabTitleDisabled,
+.vtabTitleSelectedDisabled {
+ color: #AAAAAA;
+ padding-bottom:1px;
+}
+
+/*============================================================
+ 7) SectionStack
+============================================================*/
+
+.sectionStack {
+ border-left:1px solid #A6ABB4;
+ border-right:1px solid #A6ABB4;
+ border-bottom:1px solid #A6ABB4;
+}
+
+/* SectionStack headers - image based */
+.imgSectionHeaderclosed,
+.imgSectionHeaderopened,
+.imgSectionHeaderDisabledclosed,
+.imgSectionHeaderDisabledopened {
+}
+.imgSectionHeaderTitleclosed,
+.imgSectionHeaderTitleopened,
+.imgSectionHeaderTitleOverclosed,
+.imgSectionHeaderTitleOveropened {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ border-left:5px;
+}
+
+.imgSectionHeaderTitleDisabledopened,
+.imgSectionHeaderTitleDisabledclosed {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:gray;
+ border-left:5px;
+}
+
+.sectionHeaderTitleopened,
+.sectionHeaderTitleclosed {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:white;
+}
+.sectionHeaderTitleDisabledopened,
+.sectionHeaderTitleDisabledclosed {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#808080;
+}
+/* SectionStack headers - css based */
+.sectionHeaderopened,
+.sectionHeaderclosed {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ padding:3px;
+ border: 1px solid #A6ABB4;
+}
+
+.sectionHeaderopened {
+ background: url(./images/SectionHeader/header_opened_stretch.png) repeat-x scroll;
+}
+.sectionHeaderclosed {
+ background: url(./images/SectionHeader/header_closed_stretch.png) repeat-x scroll;
+}
+
+
+.cellopened {
+ background-color:red;
+}
+.cellclosed {
+ background-color:pink;
+}
+
+/*============================================================
+ 8) Forms
+============================================================*/
+
+/* general form styles */
+.formRow {}
+.formCell,
+.formCellFocused,
+.formCellDisabled,
+.nestedFormContainer,
+.nestedFormContainerFocused,
+.nestedFormContainerDisabled {
+ font-family:Arial,sans-serif; font-size:11px;
+}
+.formTitle,
+.formTitleFocused,
+.formTitleDisabled,
+.formCellError,
+.formTitleError,
+.formHint,
+.headerItem,
+.headerItemDisabled,
+.headerItemError,
+.staticTextItem,
+.staticTextItemDisabled,
+.staticTextItemError,
+.textItem,
+.textItemFocused,
+.textItemDisabled,
+.textItemError,
+.textItemHint,
+.selectItemControl,
+.selectItemControlError,
+.selectItemControlFocused,
+.selectItemText,
+.selectItemTextError,
+.selectItemTextDisabled,
+.selectItemTextFocused,
+.comboBoxItemPendingText,
+.pickListCell,
+.pickListCellSelected,
+.pickListCellDisabled,
+.pickListCellDark,
+.pickListCellSelectedDark,
+.tallPickListCell,
+.tallPickListCellSelected,
+.tallPickListCellDisabled,
+.tallPickListCellDark,
+.tallPickListCellSelectedDark,
+.labelAnchor,
+.labelAnchorDisabled,
+.labelAnchorError,
+.labelAnchorFocused {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+}
+
+.comboBoxItemPendingText {
+ color:#0066CC;
+}
+
+.formTitle,
+.formTitleFocused {
+ color:#003168;
+}
+
+.formTitleDisabled {
+ color:#AAAAAA;
+}
+.formCellError,
+.formTitleError {
+ font-weight:bold; color:#204268;
+}
+.formHint {
+ color:#455668;
+ padding:3px;
+}
+
+/* Allow for nested forms to lie flush against the left-hand edge of the containing form */
+.nestedFormContainer,
+.nestedFormContainerFocused,
+.nestedFormContainerDisabled {
+ padding-left: 0px;
+}
+
+
+/* headerItem */
+.headerItem,
+.headerItemDisabled,
+.headerItemError {
+ font-family:Arial,sans-serif; font-size:14px; font-weight:bold;
+ color:#4C4C4C;
+}
+
+/* text-based items common props */
+.textItem,
+.textItemFocused,
+.textItemDisabled,
+.textItemError,
+.textItemHint,
+.selectItemText,
+.selectItemTextError,
+.selectItemTextFocused,
+.selectItemTextDisabled,
+.selectItemTextHint {
+ padding:2px;
+ border:1px solid #aaacb2;
+ background:#FFFFFF;
+ color:black;
+}
+
+
+.textItem {
+border-top:1px solid #abadb3;
+ border-left:1px solid #dbdfe5;
+ border-right:1px solid #dbdfe5;
+ border-bottom:1px solid #dbdfe5;
+}
+
+.textItemDisabled,
+.selectItemTextDisabled {
+ color:#AAAAAA;
+ background-color:#FFFFFF;
+ border:1px solid #A6ABB4;
+}
+
+.textItemHint,
+.selectItemTextHint {
+ color:#204268;
+}
+
+
+/* selectItem */
+
+.selectItemTextFocused {
+ color:black;
+ -moz-outline-offset:-1;
+ border:1px solid #5678ac;
+}
+
+.textItemFocused,
+.selectItemTextFocused {
+ color:black;
+ -moz-outline-offset:-1;
+ border-top:1px solid #5678ac;
+ border-left:1px solid #bccde6;
+ border-right:1px solid #afc6e2;
+ border-bottom:1px solid #c0d7ec;
+}
+
+.selectItemText,
+.selectItemTextError,
+.selectItemTextFocused,
+.selectItemTextDisabled {
+ border-right:0px none;
+}
+
+.selectItemPickerIcon,
+.selectItemPickerIconFocused,
+.selectItemPickerIconDisabled,
+.selectItemPickerIconError {
+ padding:0px;
+}
+
+.pickListMenuBody {
+ border:1px solid #90A6BD;
+ background-color:#FFFFFF;
+}
+
+.pickListCell,
+.pickListCellDark,
+.tallPickListCell,
+.tallPickListCellDark {
+ color:black;
+}
+.pickListCellSelected,
+.pickListCellSelectedDark {
+ color:black;
+ background:#FFFFFF url(./images/Menu/menu_rollover.png) repeat-x scroll;
+}
+
+.tallPickListCellSelected,
+.tallPickListCellSelectedDark {
+ color:black;
+ background-color:#B2DFEE;;
+}
+
+.pickListCellDisabled,
+.tallPickListCellDisabled {
+ color:#595959;
+ background-color:#C0C0C0;
+}
+
+/* checkbox and radioButton */
+.labelAnchor,
+.labelAnchorDisabled,
+.labelAnchorError,
+.labelAnchorFocused {
+ font-family:Arial; color:black; text-decoration:none;
+}
+.labelAnchorDisabled {
+ font-family:Arial; color:#AAAAAA;
+}
+
+/* ColorChooser */
+.colorChooserCell,
+.colorChooserCellOver {
+ background-color:#EFEFEF;
+ border-left:1px solid #EFEFEF; border-top:1px solid #EFEFEF;
+ border-right:1px solid #EFEFEF; border-bottom:1px solid #EFEFEF;
+}
+.colorChooserCellOver {
+ border-left:1px solid black; border-top:1px solid black;
+ border-right:1px solid black; border-bottom:1px solid black;
+}
+
+/* FilterBuilder */
+.bracketBorders {
+ border-left: 1px solid rgb(50,135,185);
+ border-top: 1px solid rgb(50,135,185);
+ border-bottom: 1px solid rgb(50,135,185);
+}
+/*============================================================
+ DateChooser
+============================================================*/
+
+/* Defaults for all days and controls */
+.dateChooserButton,
+.dateChooserButtonOver,
+.dateChooserButtonDown,
+.dateChooserButtonDisabled,
+.dateChooserButtonSelected,
+.dateChooserButtonSelectedDown,
+.dateChooserButtonSelectedOver,
+.dateChooserButtonSelectedDisabled,
+.dateChooserWeekendButton,
+.dateChooserWeekendButtonOver,
+.dateChooserWeekendButtonDown,
+.dateChooserWeekendButtonDisabled,
+.dateChooserWeekendButtonSelected,
+.dateChooserWeekendButtonSelectedDown,
+.dateChooserWeekendButtonSelectedOver,
+.dateChooserWeekendButtonSelectedDisabled,
+.dateChooserBottomButton,
+.dateChooserBottomButtonOver,
+.dateChooserBottomButtonDown,
+.dateChooserBottomButtonSelected,
+.dateChooserBottomButtonSelectedOver,
+.dateChooserBottomButtonSelectedDown,
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown,
+.dateChooserWeekday,
+.dateChooserWeekdayOver,
+.dateChooserWeekdayDown,
+.dateChooserWeekdaySelected,
+.dateChooserWeekdaySelectedOver,
+.dateChooserWeekdaySelectedDown,
+.dateChooserWeekdayDisabled,
+.dateChooserWeekend,
+.dateChooserWeekendOver,
+.dateChooserWeekendDown,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedOver,
+.dateChooserWeekendSelectedDown,
+.dateChooserWeekendSelectedDisabled,
+.dateChooserWeekendDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ background-color:transparent;
+ color:black;
+}
+
+/* year/month buttons */
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ padding:0px;
+ border-top:0px none;
+ border-bottom:0px none;
+}
+
+/* for all buttons, plus weekday headers (dateChooserButton) */
+.dateChooserButton,
+.dateChooserButtonOver,
+.dateChooserButtonDown,
+.dateChooserButtonSelected,
+.dateChooserButtonSelectedOver,
+.dateChooserButtonSelectedDown,
+.dateChooserWeekendButton,
+.dateChooserWeekendButtonOver,
+.dateChooserWeekendButtonDown,
+.dateChooserWeekendButtonSelected,
+.dateChooserWeekendButtonSelectedOver,
+.dateChooserWeekendButtonSelectedDown,
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ font-weight:bold;
+ color:#4C4C4C;
+}
+
+.dateChooserButtonOver,
+.dateChooserButtonDown {
+ cursor:pointer;
+ color:#467DCD;
+}
+
+.dateChooserWeekendButton,
+.dateChooserWeekendButtonOver,
+.dateChooserWeekendButtonDown,
+.dateChooserWeekendButtonSelected,
+.dateChooserWeekendButtonSelectedOver,
+.dateChooserWeekendButtonSelectedDown {
+ background-color:#D6E8FF;
+}
+
+
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ cursor:pointer;
+ padding:2px;
+}
+
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown {
+ color:#467DCD;
+}
+
+/* Today, Cancel buttons */
+.dateChooserBottomButton,
+.dateChooserBottomButtonOver,
+.dateChooserBottomButtonDown {
+ cursor:pointer;
+ font-weight:bold;
+ color:#4C4C4C;
+ border-left:1px solid #ACB1B9;
+ border-top:1px solid #ACB1B9;
+}
+.dateChooserBottomButtonOver {
+ color:#467DCD;
+}
+
+
+/* weekday and weekend cells */
+
+.dateChooserWeekday,
+.dateChooserWeekdayOver,
+.dateChooserWeekdayDown,
+.dateChooserWeekdaySelected,
+.dateChooserWeekdaySelectedOver,
+.dateChooserWeekdaySelectedDown,
+.dateChooserWeekdayDisabled,
+.dateChooserWeekend,
+.dateChooserWeekendOver,
+.dateChooserWeekendDown,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedOver,
+.dateChooserWeekendSelectedDown,
+.dateChooserWeekendDisabled {
+ cursor:pointer;
+ color:black;
+ border:2px solid white;
+ background-color:white;
+}
+
+.dateChooserWeekdayDisabled,
+.dateChooserWeekendDisabled {
+ color:#C0C3CA;
+}
+
+.dateChooserWeekend,
+.dateChooserWeekendOver,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedDisabled,
+.dateChooserWeekendDisabled {
+ border:2px solid #D6E8FF;
+ background-color:#D6E8FF;
+}
+
+.dateChooserWeekdayOver,
+.dateChooserWeekendOver {
+ border:2px solid #71B5FE;
+}
+
+.dateChooserWeekdaySelected,
+.dateChooserWeekdaySelectedOver,
+.dateChooserWeekdayDown,
+.dateChooserWeekdaySelectedDown,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedDisabled,
+.dateChooserWeekendSelectedOver,
+.dateChooserWeekendDown,
+.dateChooserWeekendSelectedDown {
+ font-weight:bold;
+ color:#4C4C4C;
+ border:2px solid #96C7FF;
+ background-color:#D6E8FF;
+}
+
+.dateChooserWeekdayDown,
+.dateChooserWeekendDown {
+ font-weight:normal;
+}
+
+/* year and month pop-up menus */
+.dateChooserYearMenu,
+.dateChooserMonthMenu {
+ border: 2px solid #4C4C4C;
+ background-color:#FFFFFF;
+}
+
+/*============================================================
+ 9) Slider & Rangebar
+============================================================*/
+
+/* slider and rangebar labels */
+.sliderTitle,
+.sliderRange,
+.sliderValue,
+.rangebarTitle,
+.rangebarRange,
+.rangebarValue {
+ color:black;
+ font-family:Arial,Verdana,sans-serif; font-size:10px;
+}
+.sliderTitle,
+.rangebarTitle {
+ color:#4C4C4C;
+ font-weight:bold;
+}
+.sliderRange,
+.rangebarRange {
+ color:black;
+}
+
+
+
+/*============================================================
+ 10) DetailViewer
+============================================================*/
+
+.detailBlock {
+ border-left:1px solid #A7ABB4;
+ border-top:1px solid #A7ABB4;
+}
+
+.detail,
+.detailLabel,
+.detailHeader {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:white;
+ color:black;
+ border-right:1px solid #A7ABB4;
+ border-bottom:1px solid #A7ABB4;
+}
+
+.detailLabel {
+ font-weight:bold;
+ color:#4C4C4C;
+ background-color:#F6F7F9;
+ text-align:right;
+}
+
+.detailHeader {
+ font-family:Arial,sans-serif; font-size:14px; font-weight:bold;
+ color:#4C4C4C;
+ background-color:#BBDAFA;
+}
+
+
+
+/*============================================================
+ 11) ListGrid
+============================================================*/
+
+/*============================================================
+ ListGrid parts
+ styleName - listGrid
+ headerBarStyle - headerBar
+ bodyStyleName - gridBody
+============================================================*/
+
+.listGrid {
+ border: 1px solid #A7ABB4;
+}
+.headerBar {
+ background:#FFFFFF url(./images/ListGrid/header.png) repeat-x bottom left scroll;
+}
+
+.gridBody {
+ background-color:#FFFFFF;
+}
+.alternateGridBody {
+ background-color:#FFFFFF;
+}
+
+.loadingDataMessage,
+.offlineMessage,
+.emptyMessage {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; padding:10px;
+ color:black;
+}
+.gridDragTracker {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ padding:1px;
+ border:1px dotted gray;
+}
+.dragLine {
+ border-bottom:2px dotted #75adff;
+}
+
+.listTable {
+}
+/* for filterEditor */
+.recordEditorCell {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:black; background-color:#f4f4f4;
+}
+
+
+
+/*============================================================
+ ListGrid headers
+ listGrid.headerBaseStyle - headerButton (in skin)
+ listGrid.headerDefaults.titleStyle - headerTitle (in skin)
+ listGrid.sorterDefaults.titleStyle - headerTitle (in skin)
+
+============================================================*/
+
+/* ListGrid column header buttons */
+.headerButton,
+.headerButtonSelected,
+.headerButtonDisabled,
+.headerButtonSelectedDisabled,
+.headerButtonOver,
+.headerButtonDown,
+.headerButtonSelectedOver,
+.headerButtonSelectedDown {
+ background-color:#FFFFFF;
+ border-left:1px solid rgb(246,247,249);
+ border-right:1px solid rgb(200,204,207);
+ font-family:Arial, Verdana, sans-serif; font-size:11px;
+ padding-left:4px; padding-right:4px;
+ color: black;
+ background: url('images/ListGrid/headerSprite.png') repeat-x top left;
+}
+.headerButtonOver,
+.headerButtonDown,
+.headerButtonSelectedOver,
+.headerButtonSelectedDown {
+ border-left:1px solid rgb(228,242,255);
+ border-right:1px solid rgb(200,204,208);
+}
+
+.headerButton {
+ background-position: 0px -210px;
+ border-bottom:1px solid #BAC2CD;
+}
+
+.headerButtonOver {
+ background-position: 0px -420px;
+ border-bottom: 1px solid #98B5D4;
+}
+
+.headerButtonDown {
+ background-position: 0px -350px;
+ border-bottom: 1px solid #ABB6C4;
+}
+
+.headerButtonDisabled {
+ background-position: 0px -280px;
+ border-bottom: 1px solid #BCC4CF;
+ color: #AAAAAA;
+}
+
+.headerButtonSelected,
+.headerButtonSelectedDown{
+ background-position: 0px 0px;
+ border-bottom: 1px solid #98B5D4;
+}
+
+.headerButtonSelectedOver {
+ background-position: 0px -140px;
+ border-bottom: 1px solid #A5B3C4;
+}
+
+.headerButtonSelectedDisabled {
+ background-position: 0px -70px;
+ border-bottom: 1px solid #A6B9CD;
+ color: #AAAAAA;
+}
+
+.sorterButton,
+.sorterButtonSelected,
+.sorterButtonDisabled,
+.sorterButtonSelectedDisabled,
+.sorterButtonOver,
+.sorterButtonDown,
+.sorterButtonSelectedOver,
+.sorterButtonSelectedDown {
+ background-color:#FFFFFF;
+ border-left:1px solid rgb(246,247,249);
+ background-image:url("images/ListGrid/headerSprite.png");
+ background-position: 0px -210px;
+}
+
+.sorterButtonOver,
+.sorterButtonDown,
+.sorterButtonSelectedOver,
+.sorterButtonSelectedDown {
+ border-left:1px solid rgb(228,242,255);
+ background-image:url("images/ListGrid/headerSprite.png");
+ background-position: 0px -420px;
+}
+
+/* ListGrid column header titles */
+.headerTitle,
+.headerTitleOver,
+.headerTitleDown,
+.headerTitleSelected,
+.headerTitleSelectedOver,
+.headerTitleSelectedDown,
+.headerTitleDisabled,
+.headerTitleSelectedDisabled {
+ font-family:Arial, Verdana, sans-serif; font-size:11px;
+ padding-left:4px; padding-right:4px;
+ color: black;
+}
+.headerTitleDown,
+.headerTitleSelected,
+.headerTitleSelectedOver,
+.headerTitleSelectedDown,
+.headerTitleSelectedDisabled {
+ color:black;
+}
+.headerTitleDisabled,
+.headerTitleSelectedDisabled {
+ color: #AAAAAA;
+}
+
+
+/*============================================================
+ ListGrid cells
+ listGrid.baseStyle
+============================================================*/
+
+/*------------------------------------------------------------
+ listGrid.baseStyle
+------------------------------------------------------------*/
+.cell,
+.cellDark,
+.cellOver,
+.cellOverDark,
+.cellSelected,
+.cellSelectedDark,
+.cellSelectedOver,
+.cellSelectedOverDark,
+.cellDisabled,
+.cellDisabledDark,
+.tallCell,
+.tallCellDark,
+.tallCellOver,
+.tallCellOverDark,
+.tallCellSelected,
+.tallCellSelectedDark,
+.tallCellSelectedOver,
+.tallCellSelectedOverDark,
+.tallCellDisabled,
+.tallCellDisabledDark,
+.gridSummaryCell,
+.gridSummaryCellDisabled,
+.groupSummaryCell,
+.groupSummaryCellDisabled,
+.recordSummaryCell,
+.recordSummaryCellDark,
+.recordSummaryCellOver,
+.recordSummaryCellOverDark,
+.recordSummaryCellSelected,
+.recordSummaryCellSelectedDark,
+.recordSummaryCellSelectedOver,
+.recordSummaryCellSelectedOverDark,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark,
+.expansionCellCell,
+.expansionCellCellDark,
+.expansionCellCellOver,
+.expansionCellCellOverDark,
+.expansionCellCellSelected,
+.expansionCellCellSelectedDark,
+.expansionCellCellSelectedOver,
+.expansionCellCellSelectedOverDark,
+.expansionCellCellDisabled,
+.expansionCellCellDisabledDark,
+.specialCol,
+.specialColOver,
+.specialColSelected,
+.specialColSelectedOver,
+.specialColDisabled,
+.groupNode {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; text-overflow:ellipsis;
+ color:black;
+ border-top: 1px solid #FAFAFA;
+ border-bottom:1px solid #EDEDED;
+}
+
+.specialCol {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; text-overflow:ellipsis;
+ color:black;
+ background-color:#fafafa;
+}
+
+.tallCell,
+.tallCellDark,
+.tallCellOver,
+.tallCellOverDark,
+.tallCellSelected,
+.tallCellSelectedDark,
+.tallCellSelectedOver,
+.tallCellSelectedOverDark,
+.tallCellDisabled,
+.tallCellDisabledDark {
+
+ }
+.cellDark,
+.recordSummaryCell,
+.recordSummaryCellDark {
+ background-color:#fafafa;
+}
+.groupSummaryCell,
+.groupSummaryCellDisabled {
+ border-top:1px solid gray;
+ border-bottom:1px solid gray;
+ background-color:#ececec;
+}
+
+.gridSummaryCell,
+.gridSummaryCellDisabled {
+ border-top-width:0px;
+ border-bottom-width:0px;
+ background-color:#ececec;
+}
+.summaryRowBody {
+ background-color:#ececec;
+}
+
+.tallCellDark {
+ border-top: 1px solid #FAFAFA;
+ background-color:#fafafa;
+}
+.cellOver,
+.cellOverDark,
+.specialColOver,
+.recordSummaryCellOver,
+.recordSummaryCellOverDark {
+ background:#FFFFFF url(./images/ListGrid/row_Over.png) repeat-x bottom left scroll;
+}
+.tallCellOver,
+.tallCellOverDark {
+ background-color:#daecff;
+ border-top: 1px dotted #c5e0ff;
+ border-bottom: 1px dotted #c5e0ff;
+}
+
+.cellSelected,
+.cellSelectedDark,
+.specialColSelected,
+.recordSummaryCellSelected,
+.recordSummaryCellSelectedDark {
+ background:#d9e4f6;
+ border-top: 1px dotted #9fb7e9;
+ border-bottom: 1px dotted #9fb7e9;
+}
+
+.tallCellSelected,
+.tallCellSelectedDark {
+ background:#d9e4f6;
+ border-top: 1px dotted #9fb7e9;
+ border-bottom: 1px dotted #9fb7e9;
+}
+.cellSelectedOver,
+.cellSelectedOverDark,
+.specialColSelectedOver,
+.recordSummaryCellSelectedOver,
+.recordSummaryCellSelectedOverDark {
+ background:#d0dff6 url(images/ListGrid/row_Over_Selected.png) repeat-x bottom left scroll;
+ border-top: 1px dotted #9fb7e9;
+ border-bottom: 1px dotted #9fb7e9;
+}
+
+.tallCellSelectedOver,
+.tallCellSelectedOverDark {
+ background-color:#bfdcf9;
+ border-top: 1px dotted #c5e0ff;
+ border-bottom: 1px dotted #c5e0ff;
+}
+.groupSummaryCell,
+.groupSummaryCellDisabled,
+.gridSummaryCell,
+.gridSummaryCellDisabled {
+ font-weight:bold;
+}
+
+.cellDisabled,
+.cellDisabledDark,
+.specialColDisabled,
+.tallCellDisabled,
+.tallCellDisabledDark,
+.groupSummaryCellDisabled,
+.gridSummaryCellDisabled,
+.specialColDisabled,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark {
+ color:#AAAAAA;
+ background-color:#FFFFFF;
+}
+
+/* for grouping */
+.groupNode {
+ font-weight:bold;
+ font-family:Tahoma,Verdana,sans-serif;
+ color:#3764a3;
+ border-bottom: 1px solid #8299b8;
+}
+
+/*Tree styling*/
+/*------------------------------------------------------------
+ treeGrid.baseStyle
+------------------------------------------------------------*/
+.treeCell,
+.treeCellDark,
+.treeCellOver,
+.treeCellOverDark,
+.treeCellSelected,
+.treeCellSelectedDark,
+.treeCellSelectedOver,
+.treeCellSelectedOverDark,
+.treeCellDisabled,
+.treeCellDisabledDark,
+.treeTallCell,
+.treeTallCellDark,
+.treeTallCellOver,
+.treeTallCellOverDark,
+.treeTallCellSelected,
+.treeTallCellSelectedDark,
+.treeTallCellSelectedOver,
+.treeTallCellSelectedOverDark,
+.treeTallCellDisabled,
+.treeTallCellDisabledDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; text-overflow:ellipsis;
+ color:black;
+}
+
+
+.treeTallCell,
+.treeTallCellDark,
+.treeTallCellOver,
+.treeTallCellOverDark,
+.treeTallCellSelected,
+.treeTallCellSelectedDark,
+.treeTallCellSelectedOver,
+.treeTallCellSelectedOverDark,
+.treeTallCellDisabled,
+.treeTallCellDisabledDark {
+
+ }
+
+.treeCellDark,
+.treeTallCellDark {
+ background-color:#fafafa;
+}
+.treeCellOver,
+.treeCellOverDark {
+ background:#FFFFFF url(./images/ListGrid/row_Over.png) repeat-x bottom left scroll;
+}
+.treeTallCellOver,
+.treeTallCellOverDark {
+ background-color:#e5e5e5;
+}
+.treeCellSelected,
+.treeCellSelectedDark {
+ background:#d9e4f6;
+
+}
+.treeTallCellSelected,
+.treeTallCellSelectedDark {
+ background-color:#d9e4f6;
+}
+.treeCellSelectedOver,
+.treeCellSelectedOverDark {
+ background:#d0dff6 url(images/ListGrid/row_Over_Selected.png) repeat-x bottom left scroll;
+}
+.treeTallCellSelectedOver,
+.treeTallCellSelectedOverDark {
+ background-color:#d0dff6;
+}
+
+
+.treeCellDisabled,
+.treeCellDisabledDark,
+.treeTallCellDisabled,
+.treeTallCellDisabledDark {
+ color:#AAAAAA;
+ background-color:#FFFFFF;
+}
+
+
+/* Field builders (Formula/Summary) */
+.sampleOutput {
+ border: 2px solid #D9D9D9;
+ padding: 3px;
+}
+
+/* Multi-sort - sort-index appearing next to sort-arrows in field headers */
+.sortNumeral {
+ font-size:7px;
+}
+
+/*============================================================
+ 12) ToolStrip
+============================================================*/
+.toolStrip {
+ border: 1px solid #A7ABB4;
+ background-color:#FFFFFF;
+ background-image:url("images/ToolStrip/background.png");
+}
+
+.toolStripVertical {
+ border: 1px solid #A7ABB4;
+ background-color:#FFFFFF;
+ background-image:url("images/ToolStrip/background_vertical.png");
+}
+
+
+/*============================================================
+ 12a) ToolStripGroup and IconButton
+==============================================================*/
+.toolStripGroup,
+.toolStripGroupOver,
+.toolStripGroupSelected,
+.toolStripGroupSelectedDisabled,
+.toolStripGroupSelectedOver,
+.toolStripGroupDown,
+.toolStripGroupSelectedDown,
+.toolStripGroupDisabled {
+ background: #f9f9f9;
+ background: -moz-linear-gradient(top, #f9f9f9 0%, #f9f9f9 1%, #f4f4f4 1%, #e9e9e9 31%, #e1e1e1 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f9f9f9), color-stop(1%,#f9f9f9), color-stop(1%,#f4f4f4), color-stop(31%,#e9e9e9), color-stop(100%,#e1e1e1));
+ background: -webkit-linear-gradient(top, #f9f9f9 0%,#f9f9f9 1%,#f4f4f4 1%,#e9e9e9 31%,#e1e1e1 100%);
+ background: -o-linear-gradient(top, #f9f9f9 0%,#f9f9f9 1%,#f4f4f4 1%,#e9e9e9 31%,#e1e1e1 100%);
+ background: -ms-linear-gradient(top, #f9f9f9 0%,#f9f9f9 1%,#f4f4f4 1%,#e9e9e9 31%,#e1e1e1 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f9f9f9', endColorstr='#e1e1e1',GradientType=0 );
+ background: linear-gradient(top, #f9f9f9 0%,#f9f9f9 1%,#f4f4f4 1%,#e9e9e9 31%,#e1e1e1 100%);
+ border: 1px solid #C2C2C2;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.toolStripGroupTitle,
+.toolStripGroupTitleOver,
+.toolStripGroupTitleSelected,
+.toolStripGroupTitleSelectedDisabled,
+.toolStripGroupTitleSelectedOver,
+.toolStripGroupTitleDown,
+.toolStripGroupTitleSelectedDown,
+.toolStripGroupTitleDisabled {
+ background: #D6D6D6;
+ border: 0px;
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+ -khtml-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ color: #4D4D4D;
+ font-family: Helvetica, Arial, Verdana, "Bitstream Vera Sans", sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 3px;
+}
+
+.iconButton,
+.iconButtonOver,
+.iconButtonFocused,
+.iconButtonFocusedOver,
+.iconButtonDown,
+.iconButtonFocusedDown,
+.iconButtonSelected,
+.iconButtonSelectedFocused,
+.iconButtonSelectedDown,
+.iconButtonSelectedFocusedDown,
+.iconButtonSelectedOver,
+.iconButtonSelectedFocusedOver,
+.iconButtonDisabled,
+.iconButtonSelectedDisabled {
+ background-color: transparent;
+ border: 1px solid transparent;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+ padding: 4px;
+ font-family: Helvetica, Arial, Verdana, "Bitstream Vera Sans", sans-serif;
+ font-size: 11px;
+ color: #4D4D4D;
+}
+
+.iconButtonOver,
+.iconButtonSelectedOver,
+.iconButtonFocusedOver,
+.iconButtonSelectedFocusedOver {
+ background: #F4F4F4;
+ border: 1px solid #A6ABB4;
+}
+
+.iconButtonSelected,
+.iconButtonSelectedFocused,
+.iconButtonSelectedDown,
+.iconButtonSelectedFocusedDown,
+.iconButtonSelectedOver,
+.iconButtonSelectedFocusedOver {
+ background-color: #aacefd;
+}
+
+.iconButtonDisabled {
+ color: #AAAAAA;
+}
+
+/*============================================================
+ 13) Tools
+============================================================*/
+.resizeThumb {
+ background-color:#009999;
+}
+
+/*============================================================
+ 14) TileGrid
+==============================================================*/
+
+.tileGrid {
+ border:1px solid #808080;
+
+}
+
+.tileValue,
+.tileValueDown,
+.tileValueSelected,
+.tileValueOver,
+.tileValueSelectedOver,
+.tileValueSelectedDown {
+ font-size: 8pt;
+ text-overflow:ellipsis;
+}
+
+.tileValueOver {
+ color:black;
+}
+
+.tileValueSelected {
+ color: black;
+}
+
+.tileValueSelectedOver {
+ color: black;
+}
+
+.simpleTile,
+.simpleTileOver,
+.simpleTileSelected,
+.simpleTileSelectedOver {
+ font-size: 8pt;
+ padding:3px
+}
+
+.simpleTile {
+ border:1px solid transparent;
+
+}
+.simpleTileOver {
+ background-image:url("images/TileGrid/tileOver.png");
+ border:1px solid #CFCFCF;
+}
+
+.simpleTileSelected {
+ border:1px solid #CFCFCF;
+ background-image:url("images/TileGrid/tileOver.png");
+}
+
+/*#cfcec9*/
+.simpleTileSelectedOver {
+ background-color:#CFCFCF;
+ background-image:url("images/TileGrid/tileOver.png");
+ border:1px solid #CFCFCF;
+
+}
+
+
+
+
+/*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+
+ Styles below this comment are not used by default in this skin
+
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
+
+
+/*============================================================
+ TabSet CSS tabs
+ tabSet.simpleTabBaseStyle
+============================================================*/
+/* styles for simple css-styled tabs*/
+/* left */
+.tabButtonLeft {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white; border-bottom:1px solid #808080;
+}
+.tabButtonLeftOver,
+.tabButtonLeftFocused,
+.tabButtonLeftSelected,
+.tabButtonLeftSelectedFocused,
+.tabButtonLeftSelectedFocusedOver,
+.tabButtonLeftSelectedOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-left:1px solid white; border-top:1px solid white; border-bottom:1px solid #808080;
+}
+.tabButtonLeftDown,
+.tabButtonLeftSelectedDown {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-left:1px solid #808080; border-top:1px solid #808080; border-bottom:1px solid white;
+}
+.tabButtonLeftSelectedDisabled,
+.tabButtonLeftDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-top:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;
+}
+/* right */
+.tabButtonRight {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-top:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonRightOver,
+.tabButtonRightSelected,
+.tabButtonRightFocused,
+.tabButtonRightSelectedFocused,
+.tabButtonRightSelectedFocusedOver,
+.tabButtonRightSelectedOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-top:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonRightDown,
+.tabButtonRightSelectedDown {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-top:1px solid #808080; border-bottom:1px solid white; border-right:1px solid white;
+}
+
+.tabButtonRightSelectedDisabled,
+.tabButtonRightDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-top:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC; border-right:1px solid #CCCCCC;
+}
+
+/* top */
+.tabButtonTop {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white; border-right:1px solid #808080;
+}
+.tabButtonTopOver,
+.tabButtonTopSelected,
+.tabButtonTopFocused,
+.tabButtonTopSelectedFocused,
+.tabButtonTopSelectedFocusedOver,
+.tabButtonTopSelectedOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-left:1px solid white; border-top:1px solid white; border-right:1px solid #808080;
+}
+.tabButtonTopDown,
+.tabButtonTopSelectedDown {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-left:1px solid #808080; border-top:1px solid #808080; border-right:1px solid white;
+}
+.tabButtonTopSelectedDisabled,
+.tabButtonTopDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-top:1px solid #CCCCCC; border-right:1px solid #CCCCCC;
+}
+
+/* bottom */
+.tabButtonBottom {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonBottomOver,
+.tabButtonBottomSelected,
+.tabButtonBottomFocused,
+.tabButtonBottomSelectedFocused,
+.tabButtonBottomSelectedFocusedOver,
+.tabButtonBottomSelectedOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-left:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonBottomDown,
+.tabButtonBottomSelectedDown {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-left:1px solid #808080; border-bottom:1px solid white; border-right:1px solid white;
+}
+.tabButtonBottomSelectedDisabled,
+.tabButtonBottomDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC; border-right:1px solid #CCCCCC;
+}
+
+
+
+
+
+
+/*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+
+ Styles below this comment are used by optional modules only
+
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
+
+
+
+/*============================================================
+ CubeGrid - Analytics Module only
+ cubeGrid.baseStyle - cubeCell
+ headerGrid.baseStyle - rowHeader
+ reportHeaderBar.button.baseStyle - rowHeader
+ reportHeaderBar.button.baseStyle - innerHeader/colHeader
+ reportHeaderBar.button.baseStyle - rowHeaderLabel
+ reportHeaderBar.button.baseStyle - colHeaderLabel
+============================================================*/
+.cubeGridBody {}
+.cubeCell {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black; text-overflow:ellipsis;
+ background-color:#FFFFFF;
+ border-top:1px solid white; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid white; border-right:1px solid #AAAAAA;
+}
+
+.cubeCellDark {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black; text-overflow:ellipsis;
+ background-color:#EEEEEE;
+ border-top:1px solid #EEEEEE; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid #EEEEEE; border-right:1px solid #AAAAAA;
+}
+
+.cubeCellDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#666666; text-overflow:ellipsis;
+ background-color:#FFFFFF;
+ border-top:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ border-left:1px solid #FFFFFF; border-right:1px solid #FFFFFF;
+}
+
+/* partial styles */
+.cubeCellOver {
+ background-color:#B8D1EE;
+ border-top:1px solid #B8D1EE; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid #B8D1EE; border-right:1px solid #AAAAAA;
+}
+
+.cubeCellSelected {
+ background-color:#FFE781;
+ border-top:1px solid #FFE781; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid #FFE781; border-right:1px solid #AAAAAA;
+}
+
+.cubeCellSelectedOver {
+ background-color:#B8D1EE;
+ border-top:1px solid #B8D1EE; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid #B8D1EE; border-right:1px solid #AAAAAA;
+}
+
+/* row headers */
+.rowHeader {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #264260; border-bottom:1px solid #264260;
+ background-image:url("images/CubeGrid/rowHeader.gif");
+}
+.rowHeaderOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderOver.gif");
+}
+.rowHeaderDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderOver.gif");
+}
+.rowHeaderDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#6682A0;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.rowHeaderSelected,
+.rowHeaderSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ background-image:url("images/CubeGrid/rowHeaderSelected.gif");
+
+}
+.rowHeaderSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/rowHeaderSelectedOver.gif");
+}
+.rowHeaderSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#3E74B3;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* row label */
+.rowHeaderLabel {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #000B3A; border-bottom:1px solid #000B3A;
+ background-image:url("images/CubeGrid/rowHeaderLabel.gif");
+}
+.rowHeaderLabelOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #000B3A; border-top:1px solid #000B3A;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderLabel.gif");
+}
+.rowHeaderLabelDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #000B3A; border-top:1px solid #000B3A;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderLabelDown.gif");
+}
+.rowHeaderLabelDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.rowHeaderLabelSelected,
+.rowHeaderLabelSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid black; border-top:1px solid black;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/rowHeaderDown.gif");
+}
+.rowHeaderLabelSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/rowHeaderDown.gif");
+}
+.rowHeaderLabelSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* column headers */
+.colHeader {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #264260; border-bottom:1px solid #264260;
+ background-image:url("images/CubeGrid/colHeader.gif");
+}
+.colHeaderOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/colHeaderOver.gif");
+}
+.colHeaderDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/colHeader.gif");
+}
+.colHeaderDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#6682A0;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.colHeaderSelected,
+.colHeaderSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ background-image:url("images/CubeGrid/colHeaderSelected.gif");
+}
+.colHeaderSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/colHeaderSelectedOver.gif");
+}
+.colHeaderSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#3E74B3;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* column label */
+.colHeaderLabel {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderLabel.gif");
+}
+.colHeaderLabelOver,
+.colHeaderLabelDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #000B3A; border-top:1px solid #000B3A;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderLabelDown.gif");
+}
+.colHeaderLabelDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.colHeaderLabelSelected,
+.colHeaderLabelSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid black; border-top:1px solid black;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderLabelDown.gif");
+}
+.colHeaderLabelSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderDown.gif");
+}
+.colHeaderLabelSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* inner header */
+.innerHeader {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+ background-image:url("images/CubeGrid/innerHeader.gif");
+}
+.innerHeaderOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid white; border-bottom:1px solid white;
+ background-image:url("images/CubeGrid/innerHeader.gif");
+}
+.innerHeaderDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid white; border-bottom:1px solid white;
+ background-image:url("images/CubeGrid/innerHeader.gif");
+}
+.innerHeaderDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.innerHeaderSelected,
+.innerHeaderSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ background-image:url("images/CubeGrid/innerHeaderSelected.gif");
+}
+.innerHeaderSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/innerHeaderSelectedOver.gif");
+}
+.innerHeaderSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+
+
+/*============================================================
+ BarChart
+ internal, charting/visualization module only
+ styleName - chart
+ barStyle - chartBar
+ others are currently fixed
+============================================================*/
+
+.chart {
+ background-color:#CCCCCC;
+}
+.chartTitle {
+ color:black;
+ font-family: Verdana,sans-serif;;
+ font-size:14px;
+ font-weight: bold;
+ text-align:center
+}
+.chartAxisTitle {
+ color:green;
+ font-family: Verdana,sans-serif;;
+ font-weight: bold;
+ font-size:12px;
+}
+.chartValueTitle {
+ color:black;
+ font-family: Verdana,sans-serif;;
+ font-size:10px;
+}
+.chartTotal {
+ color:black;
+ font-family:Arial,Verdana,sans-serif;;
+ font-size:12px;
+ background-color:linen;
+}
+.chartBody {
+ border-left:1px solid black;
+ border-top:1px dashed blue;
+ border-right:1px solid black;
+ background-color:#DDDDDD
+}
+.chartBar1 {
+ background-color:red;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#990000, endColorStr=#FF0000)";
+}
+.chartBar2 {
+ background-color:blue;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#000099, endColorStr=#0000FF)";
+}
+.chartBar3 {
+ background-color:green;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#009900, endColorStr=#00FF00)";
+}
+
+
+/*============================================================
+ Printing
+ printHeader - general print style for header elements including:
+ - ListGrid header cells
+ - SectionStack headers
+============================================================*/
+.printHeader {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ border:1px solid black;
+ font-weight:bold;
+}
+
+/*============================================================
+ Calendar
+
+============================================================*/
+.calendar,
+.calendarDisabled,
+.calendarWorkday,
+.calendarDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#ffffff;
+}
+
+.calendarDisabled {
+ background-color:#F6F7F9;
+}
+
+.calendarWorkday {
+ background-color:#ffffcc;
+}
+
+.calendarOver,
+.calendarOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#c0ffc0;
+}
+.calendarCellSelected {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#CCCCCC;
+}
+.labelColumn {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#F6F7F9;
+}
+/* ----month---- */
+/* calMonthDayHeader and Body */
+
+.calMonthDayHeader,
+.calMonthDayHeaderDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#F6F7F9;
+}
+
+.calMonthDayHeaderOver,
+.calMonthDayHeaderOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #c0ffc0;
+}
+.calMonthDayBody,
+.calMonthDayBodyDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#ffffff;
+}
+.calMonthDayBodyOver,
+.calMonthDayBodyOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#c0ffc0;
+}
+
+.calMonthDayBodyDisabled,
+.calMonthDayBodyDisabledOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#F6F7F9;
+}
+/* calMonthOtherDayHeader and Body */
+
+.calMonthOtherDayHeader,
+.calMonthOtherDayHeaderDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:#444444;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #aaaaaa;
+}
+.calMonthOtherDayHeaderOver,
+.calMonthOtherDayHeaderOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:#444444;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #c0ffc0;
+}
+.calMonthOtherDayBody,
+.calMonthOtherDayBodyDark,
+.calMonthOtherDayBodyDisabled,
+.calMonthOtherDayBodyDisabledOver{
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#F6F7F9;
+}
+.calMonthOtherDayBodyOver,
+.calMonthOtherDayBodyOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#c0ffc0;
+}
+/* calMonthOtherDayBlank */
+
+.calMonthOtherDayBlank,
+.calMonthOtherDayBlankDark,
+.calMonthOtherDayBlankOver,
+.calMonthOtherDayBlankOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:#444444;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #F6F7F9;
+}
+
+/* calMonthEventLink */
+
+a.calMonthEventLink:link {color:blue; text-decoration:none}
+a.calMonthEventLink:visited {color:blue; text-decoration:none}
+a.calMonthEventLink:hover {color:blue; text-decoration:underline}
+a.calMonthEventLink:active {color:blue; text-decoration:none}
+
+/* ----event window---- */
+
+.eventWindow {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size: 9px;
+ background-color:#EBF4FF;
+ border: 1px solid #d0dff6;
+}
+
+.eventWindowHeader {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size: 9px;
+ color:#4C4C4C;
+ background-color:#d0dff6;
+}
+
+.eventWindowBody {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size: 9px;
+ color:black;
+ background-color:#EBF4FF;
+ padding: 3px;
+}
+
+.eventWindowResizer {
+ border-top:1px solid white;
+ border-bottom: 1px solid white;
+}
+
+/*============================================================
+ PropertySheet
+ internal, used by Visual SmartClient tools
+ propertySheet.autoChildDefaults.cellStyle - propSheetValue
+ propertySheet.autoChildDefaults.titleStyle - propSheetTitle
+ propertySheet.TextItemDefaults.textBoxStyle - propSheetField
+ propertySheet.SelectItemDefaults.controlStyle - propSheetSelectControl
+ propertySheet.ColorItemDefaults.textBoxStyle - propSheetField
+ propertySheet.HeaderItemDefaults.textBoxStyle - propSheetHeading
+ propertySheet.SectionHeaderItemDefaults.cellStyle - propSheetSectionItemCell
+============================================================*/
+
+.propSheetValue,
+.propSheetValueFocused,
+.propSheetDisabled {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ border-bottom:1px solid #AAAAAA;
+ border-right:1px solid #AAAAAA;
+ padding:0px;
+ margin:0px;
+}
+.propSheetTitle,
+.propSheetTitleFocused,
+.propSheetTitleDisabled {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ border-bottom:1px solid #AAAAAA;
+ border-right:1px solid #AAAAAA;
+ background-color:#DDDDDD;
+ padding-left:4px;
+ padding-right:4px;
+}
+.propSheetTitleError,
+.propSheetValueError {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px; color:#204268;
+ background-color:#CFD9F2
+}
+.propSheetField,
+.propSheetFieldDisabled {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ background-color:#FFFFFF;
+ border:0px;
+ padding:0px;
+ padding-left:4px;
+ padding-right:4px;
+ margin-top:3px;
+}
+.propSheetHeading,
+.propSheetHeadingDisabled {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ font-weight:bold;
+ color:black;
+ background-color:#CCCCCC;
+ padding:4px;
+ border-bottom:1px solid #AAAAAA;
+}
+.propSheetSelectControl,
+.propSheetSelectControlFocused,
+.propSheetSelectControlDisabled {
+ padding-left:3px;
+ padding-right:3px;
+}
+
+.propSheetSectionItemCell,
+.propSheetSectionItemDisabled {
+}
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/skin_styles.css.gz b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/skin_styles.css.gz
new file mode 100755
index 0000000..9260323
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/skin_styles.css.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/unsupported_browser.html b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/unsupported_browser.html
new file mode 100755
index 0000000..567483f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/Enterprise/unsupported_browser.html
@@ -0,0 +1,89 @@
+<HTML>
+<HEAD>
+<STYLE>
+.normal {font-family:Verdana; font-size:12px;}
+.pageHeader {font-family:Verdana; font-size:24px; font-weight:bold;}
+</STYLE>
+<TITLE>Isomorphic SmartClient - Unsupported Browser</TITLE>
+</HEAD>
+<BODY BGCOLOR='white' CLASS=normal>
+<SCRIPT>
+var libs = [];
+</SCRIPT>
+<SPAN CLASS=pageHeader>Unsupported Browser Version</SPAN><br>
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+
+This page uses the <a href="http://www.isomorphic.com">Isomorphic SmartClient</a> web presentation layer (Version 7.1/LGPL Deployment - 2009-10-30), which requires one of the following supported DHTML web browsers:<br><br>
+
+<table class="normal" cellPadding=5>
+
+<tr><td width=40></td><td width=200>
+<b>Browser/Version</b>
+</td><td width=240>
+<b>Operating System(s)</b>
+</td><td>
+<b>Download Latest</b>
+</td></tr>
+
+<tr><td></td><td>
+<i>Internet Explorer 5.5-8.0</i>
+</td><td>
+Windows
+</td><td>
+<a href="http://www.microsoft.com/windows/ie/downloads/default.asp">Internet Explorer</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Netscape 7.2</i>
+</td><td>
+Windows/MacOS
+</td><td>
+<a href="http://channels.netscape.com/ns/browsers/download.jsp">Netscape</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Mozilla 1.4-1.8</i>
+</td><td>
+Windows/MacOS/Linux
+</td><td>
+<a href="http://www.mozilla.org/products/mozilla1.x/">Mozilla</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Firefox 1.0-3.5</i>
+</td><td>
+Windows/MacOS/Linux
+</td><td>
+<a href="http://www.mozilla.com/">Firefox</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Safari 1.2-4.0</i>
+</td><td>
+MacOS/Windows
+</td><td>
+<a href="http://www.apple.com/safari/download">Safari</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Chrome 1.0-2.0</i>
+</td><td>
+Windows
+</td><td>
+<a href="http://www.google.com/chrome">Safari</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Opera Beta: 9.x</i>
+</td><td>
+Beta: Windows/MacOS/Linux
+</td><td>
+<a href="http://www.opera.com/download/">Opera</a>
+</td></tr>
+
+</table><br>
+
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+<p>Last updated September 7, 2007.</p>
+
+</body></html>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/accept.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/accept.png
new file mode 100755
index 0000000..89c8129
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/accept.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/add.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/add.png
new file mode 100755
index 0000000..6332fef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/add.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/add_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/add_Disabled.png
new file mode 100755
index 0000000..244af57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/add_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/approve.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/approve.png
new file mode 100755
index 0000000..e250606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/approve.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/back.png
new file mode 100755
index 0000000..18f9cc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/back_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/back_Disabled.png
new file mode 100755
index 0000000..09c7ec7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/back_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close.png
new file mode 100755
index 0000000..60b6f7d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Disabled.png
new file mode 100755
index 0000000..57886ce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Down.png
new file mode 100755
index 0000000..9dac58c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Over.png
new file mode 100755
index 0000000..9dac58c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/color_swatch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/color_swatch.png
new file mode 100755
index 0000000..6e6e852
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/color_swatch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/column_preferences.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/column_preferences.png
new file mode 100755
index 0000000..b25350f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/column_preferences.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/configure.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/configure.png
new file mode 100755
index 0000000..ab54a83
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/configure.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/download.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/download.png
new file mode 100755
index 0000000..16bc94e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/download.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/edit.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/edit.png
new file mode 100755
index 0000000..115b8f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/edit.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/edit_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/edit_Disabled.png
new file mode 100755
index 0000000..1bdcde8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/edit_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/exclamation.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/exclamation.png
new file mode 100755
index 0000000..c37bd06
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/exclamation.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/filter.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/filter.png
new file mode 100755
index 0000000..149ae78
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/filter.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/first.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/first.png
new file mode 100755
index 0000000..b03eaf8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/first.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/forward.png
new file mode 100755
index 0000000..e252606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/forward_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/forward_Disabled.png
new file mode 100755
index 0000000..558d3ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/forward_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/freezeLeft.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/freezeLeft.png
new file mode 100755
index 0000000..8b3d44f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/freezeLeft.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/freezeRight.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/freezeRight.png
new file mode 100755
index 0000000..724397d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/freezeRight.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/groupby.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/groupby.png
new file mode 100755
index 0000000..29dd2ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/groupby.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/help.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/help.png
new file mode 100755
index 0000000..12cd1ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/help.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/last.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/last.png
new file mode 100755
index 0000000..8ec8947
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/last.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/next.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/next.png
new file mode 100755
index 0000000..e252606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/next.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/ok.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/ok.png
new file mode 100755
index 0000000..deefc12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/ok.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/plus.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/plus.png
new file mode 100755
index 0000000..4a7ea12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/plus.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/plus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/plus_Disabled.png
new file mode 100755
index 0000000..2c607b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/plus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/prev.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/prev.png
new file mode 100755
index 0000000..18f9cc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/prev.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/print.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/print.png
new file mode 100755
index 0000000..a350d18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/print.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/redo.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/redo.png
new file mode 100755
index 0000000..c7a23fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/redo.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/refresh.png
new file mode 100755
index 0000000..870adb5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/remove.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/remove.png
new file mode 100755
index 0000000..08f2493
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/remove.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/remove_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/remove_Disabled.png
new file mode 100755
index 0000000..f44069b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/remove_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/save.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/save.png
new file mode 100755
index 0000000..99d532e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/save.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/search.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/search.png
new file mode 100755
index 0000000..1547479
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/search.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/sort_ascending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/sort_ascending.png
new file mode 100755
index 0000000..8907478
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/sort_ascending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/sort_descending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/sort_descending.png
new file mode 100755
index 0000000..850d28b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/sort_descending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/text_linespacing.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/text_linespacing.png
new file mode 100755
index 0000000..1a91cbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/text_linespacing.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/undo.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/undo.png
new file mode 100755
index 0000000..69520e1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/undo.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/unfreeze.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/unfreeze.png
new file mode 100755
index 0000000..39c66a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/unfreeze.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/ungroup.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/ungroup.png
new file mode 100755
index 0000000..e140cd7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/ungroup.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/view.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/view.png
new file mode 100755
index 0000000..cf3d97f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/actions/view.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/black.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/black.gif
new file mode 100755
index 0000000..639e5f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/black.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/blank.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/blank.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/blank.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_end.png
new file mode 100755
index 0000000..bd2b022
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_start.png
new file mode 100755
index 0000000..06f557a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_stretch.png
new file mode 100755
index 0000000..dd22d0c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_end.png
new file mode 100755
index 0000000..0de1d9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_start.png
new file mode 100755
index 0000000..017bda5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_stretch.png
new file mode 100755
index 0000000..3eb0f2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_end.png
new file mode 100755
index 0000000..2fccefa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_end.png
new file mode 100755
index 0000000..7a0fed1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_start.png
new file mode 100755
index 0000000..e08acae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_stretch.png
new file mode 100755
index 0000000..f7cbcf8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_end.png
new file mode 100755
index 0000000..7a0fed1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_start.png
new file mode 100755
index 0000000..1f19c91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..f7cbcf8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_end.png
new file mode 100755
index 0000000..8e84055
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_start.png
new file mode 100755
index 0000000..017bda5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_stretch.png
new file mode 100755
index 0000000..3eb0f2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_end.png
new file mode 100755
index 0000000..7a0fed1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_end.png
new file mode 100755
index 0000000..7a0fed1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_start.png
new file mode 100755
index 0000000..1f19c91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_stretch.png
new file mode 100755
index 0000000..f7cbcf8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_start.png
new file mode 100755
index 0000000..e08acae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_stretch.png
new file mode 100755
index 0000000..f4b0a59
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_start.png
new file mode 100755
index 0000000..db669c0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_stretch.png
new file mode 100755
index 0000000..fdc93d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/button/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ColorPicker/crosshair.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ColorPicker/crosshair.png
new file mode 100755
index 0000000..0e850c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ColorPicker/crosshair.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ColorPicker/spectrum.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ColorPicker/spectrum.png
new file mode 100755
index 0000000..5ab45a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ColorPicker/spectrum.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Disabled_stretch.png
new file mode 100755
index 0000000..c1cfd8e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Down_stretch.png
new file mode 100755
index 0000000..a43dab6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Over_stretch.png
new file mode 100755
index 0000000..4e6778d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Selected_stretch.png
new file mode 100755
index 0000000..ff9ac0c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_stretch.png
new file mode 100755
index 0000000..d9f4e7d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/cssButton/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_down.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_left.gif
new file mode 100755
index 0000000..9761ae9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_right.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_closed_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open.gif
new file mode 100755
index 0000000..ca674eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_down.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_left.gif
new file mode 100755
index 0000000..aaf1b1d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_right.gif
new file mode 100755
index 0000000..03e0b21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_up.gif
new file mode 100755
index 0000000..ca674eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_open_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_opening.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_opening.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/arrow_opening.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/close.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/close.gif
new file mode 100755
index 0000000..f404e13
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/close.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/close_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/close_over.gif
new file mode 100755
index 0000000..67eb946
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/close_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeader.gif
new file mode 100755
index 0000000..e328587
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderDisabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderDisabled.gif
new file mode 100755
index 0000000..8e31489
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderDisabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderLabel.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderLabel.gif
new file mode 100755
index 0000000..276df64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderLabel.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderLabelDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderLabelDown.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderLabelDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderOver.gif
new file mode 100755
index 0000000..c074368
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderSelected.gif
new file mode 100755
index 0000000..dad4dcf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderSelectedOver.gif
new file mode 100755
index 0000000..f8a7d7c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/colHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/header_handle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/header_handle.gif
new file mode 100755
index 0000000..253c281
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/header_handle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/header_handle_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/header_handle_over.gif
new file mode 100755
index 0000000..33cdc51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/header_handle_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeader.gif
new file mode 100755
index 0000000..acf497c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderDown.gif
new file mode 100755
index 0000000..33679f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderSelected.gif
new file mode 100755
index 0000000..3674069
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderSelectedOver.gif
new file mode 100755
index 0000000..51f4876
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/innerHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/maximize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/maximize.gif
new file mode 100755
index 0000000..28a9b11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/maximize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/maximize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/maximize_over.gif
new file mode 100755
index 0000000..fb68ee9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/maximize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/minimize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/minimize.gif
new file mode 100755
index 0000000..dd98884
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/minimize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/minimize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/minimize_over.gif
new file mode 100755
index 0000000..e10091e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/minimize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeader.gif
new file mode 100755
index 0000000..5f3f9e8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderDisabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderDisabled.gif
new file mode 100755
index 0000000..8e31489
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderDisabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabel.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabel.gif
new file mode 100755
index 0000000..276df64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabel.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabelDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabelDown.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabelDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabelSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabelSelected.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderLabelSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderOver.gif
new file mode 100755
index 0000000..7087eb1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderSelected.gif
new file mode 100755
index 0000000..f4b8f1b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderSelectedOver.gif
new file mode 100755
index 0000000..47870df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/rowHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down.gif
new file mode 100755
index 0000000..2c128f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_over.gif
new file mode 100755
index 0000000..1284789
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_selected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_selected.gif
new file mode 100755
index 0000000..2c128f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_selected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_selected_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_selected_over.gif
new file mode 100755
index 0000000..ef333e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_down_selected_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up.gif
new file mode 100755
index 0000000..8c202a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_over.gif
new file mode 100755
index 0000000..4566c0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_selected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_selected.gif
new file mode 100755
index 0000000..8c202a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_selected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_selected_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_selected_over.gif
new file mode 100755
index 0000000..424a762
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/CubeGrid/sort_up_selected_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DatabaseBrowser/column.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DatabaseBrowser/column.png
new file mode 100755
index 0000000..bc0d8d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DatabaseBrowser/column.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DatabaseBrowser/data.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DatabaseBrowser/data.png
new file mode 100755
index 0000000..9bb17ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DatabaseBrowser/data.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/arrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/arrow_left.png
new file mode 100755
index 0000000..60d0fe8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/arrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/arrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/arrow_right.png
new file mode 100755
index 0000000..d70064f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/arrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/doubleArrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/doubleArrow_left.png
new file mode 100755
index 0000000..6f9753e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/doubleArrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/doubleArrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/doubleArrow_right.png
new file mode 100755
index 0000000..259cb40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DateChooser/doubleArrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/ask.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/ask.png
new file mode 100755
index 0000000..4831985
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/ask.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/confirm.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/confirm.png
new file mode 100755
index 0000000..0e32c96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/confirm.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/error.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/error.png
new file mode 100755
index 0000000..7854ed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/error.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/notify.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/notify.png
new file mode 100755
index 0000000..0e32c96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/notify.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/say.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/say.png
new file mode 100755
index 0000000..1b6b285
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/say.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/stop.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/stop.png
new file mode 100755
index 0000000..f4123c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/stop.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/warn.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/warn.png
new file mode 100755
index 0000000..7b79430
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Dialog/warn.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked.png
new file mode 100755
index 0000000..74bd6b6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked_Disabled.png
new file mode 100755
index 0000000..07d90e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked_Down.png
new file mode 100755
index 0000000..4246c4c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/checked_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/ColorPicker_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/ColorPicker_icon.png
new file mode 100755
index 0000000..6e6e852
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/ColorPicker_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/ColorPicker_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/ColorPicker_icon_Disabled.png
new file mode 100755
index 0000000..148a1af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/ColorPicker_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/date_control.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/date_control.png
new file mode 100755
index 0000000..628eec0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/date_control.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/date_control_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/date_control_Disabled.png
new file mode 100755
index 0000000..6d07b51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/date_control_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon.png
new file mode 100755
index 0000000..319ea9f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon_Disabled.png
new file mode 100755
index 0000000..1f99747
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon_Over.png
new file mode 100755
index 0000000..1cf8c76
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/default_formItem_icon_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/partialcheck.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/partialcheck.png
new file mode 100755
index 0000000..4b431dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/partialcheck.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PopUpTextAreaEditor_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PopUpTextAreaEditor_icon.gif
new file mode 100755
index 0000000..38495fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PopUpTextAreaEditor_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_ColorPicker_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_ColorPicker_icon.png
new file mode 100755
index 0000000..c66f57a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_ColorPicker_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_pickbutton.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_pickbutton.gif
new file mode 100755
index 0000000..2267e52
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_pickbutton.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_pickbutton_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_pickbutton_Disabled.gif
new file mode 100755
index 0000000..192b347
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/PropSheet_pickbutton_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon.png
new file mode 100755
index 0000000..4ae92e7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon_Disabled.png
new file mode 100755
index 0000000..f0dc870
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon_Over.png
new file mode 100755
index 0000000..0bf76fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/Remove_icon_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease.png
new file mode 100755
index 0000000..0c972d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease_Disabled.png
new file mode 100755
index 0000000..edb7b12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease_Focused.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease_Focused.png
new file mode 100755
index 0000000..62bcbb7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_decrease_Focused.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase.png
new file mode 100755
index 0000000..8c08182
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase_Disabled.png
new file mode 100755
index 0000000..10d84a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase_Focused.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase_Focused.png
new file mode 100755
index 0000000..3a6a4f5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/spinner_control_increase_Focused.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control.gif
new file mode 100755
index 0000000..cd548eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control_Disabled.gif
new file mode 100755
index 0000000..15266ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control_Over.gif
new file mode 100755
index 0000000..c8f6a0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/text_control_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked.png
new file mode 100755
index 0000000..607894e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked_Disabled.png
new file mode 100755
index 0000000..ba56316
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked_Down.png
new file mode 100755
index 0000000..9e4a463
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unchecked_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck.png
new file mode 100755
index 0000000..15e4abb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Disabled.png
new file mode 100755
index 0000000..68d5fb8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Down.png
new file mode 100755
index 0000000..941a183
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Over.png
new file mode 100755
index 0000000..1c0e6f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/DynamicForm/unsetcheck_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_B.png
new file mode 100755
index 0000000..11e78fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_BL.png
new file mode 100755
index 0000000..6a11153
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_BR.png
new file mode 100755
index 0000000..ab4f7d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_L.png
new file mode 100755
index 0000000..76a4b8d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_R.png
new file mode 100755
index 0000000..76a4b8d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_T.png
new file mode 100755
index 0000000..9a68073
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_TL.png
new file mode 100755
index 0000000..ca77cea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_TR.png
new file mode 100755
index 0000000..221154a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/edges/edge_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/createNewFolder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/createNewFolder.png
new file mode 100755
index 0000000..c8375bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/createNewFolder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/file.png
new file mode 100755
index 0000000..da793cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/folder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/folder.png
new file mode 100755
index 0000000..caad126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/folder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/previousFolder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/previousFolder.png
new file mode 100755
index 0000000..69eb4c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/previousFolder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/refresh.png
new file mode 100755
index 0000000..9ce1bb3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/upOneLevel.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/upOneLevel.png
new file mode 100755
index 0000000..6a84350
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/FileBrowser/upOneLevel.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down.png
new file mode 100755
index 0000000..f02fd9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down_Disabled.png
new file mode 100755
index 0000000..bdd837d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down_Over.png
new file mode 100755
index 0000000..b018362
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left.png
new file mode 100755
index 0000000..af15a5f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left_Disabled.png
new file mode 100755
index 0000000..7ab48d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left_Over.png
new file mode 100755
index 0000000..79c4772
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right.png
new file mode 100755
index 0000000..b1a3f60
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right_Disabled.png
new file mode 100755
index 0000000..371d886
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right_Over.png
new file mode 100755
index 0000000..922c328
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up.png
new file mode 100755
index 0000000..87b182b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up_Disabled.png
new file mode 100755
index 0000000..89b7774
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up_Over.png
new file mode 100755
index 0000000..447de89
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/arrow_up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator.png
new file mode 100755
index 0000000..04fd126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator_Disabled.png
new file mode 100755
index 0000000..3544478
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator_Over.png
new file mode 100755
index 0000000..7b5617f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/calculator_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart.png
new file mode 100755
index 0000000..b9e27b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart_Disabled.png
new file mode 100755
index 0000000..9a4ee3c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart_Over.png
new file mode 100755
index 0000000..3702547
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cart_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade.png
new file mode 100755
index 0000000..df4c59c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade_Disabled.png
new file mode 100755
index 0000000..0607e22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade_Over.png
new file mode 100755
index 0000000..6940c7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/cascade_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard.png
new file mode 100755
index 0000000..37c13bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard_Disabled.png
new file mode 100755
index 0000000..e8b31a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard_Over.png
new file mode 100755
index 0000000..964b1f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clipboard_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock.png
new file mode 100755
index 0000000..3714018
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock_Disabled.png
new file mode 100755
index 0000000..d63d689
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock_Over.png
new file mode 100755
index 0000000..0cce010
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/clock_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close.png
new file mode 100755
index 0000000..60b6f7d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close_Disabled.png
new file mode 100755
index 0000000..57886ce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close_Over.png
new file mode 100755
index 0000000..9dac58c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment.png
new file mode 100755
index 0000000..77e9dab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment_Disabled.png
new file mode 100755
index 0000000..9fff133
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment_Over.png
new file mode 100755
index 0000000..ce9112f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/comment_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/document.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/document.png
new file mode 100755
index 0000000..f858efa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/document.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/document_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/document_Over.png
new file mode 100755
index 0000000..35bafdb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/document_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down.png
new file mode 100755
index 0000000..0a46532
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down_Disabled.png
new file mode 100755
index 0000000..403aa21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down_Over.png
new file mode 100755
index 0000000..9bdba9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left.png
new file mode 100755
index 0000000..89a97ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left_Disabled.png
new file mode 100755
index 0000000..59deca4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left_Over.png
new file mode 100755
index 0000000..fe88c79
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right.png
new file mode 100755
index 0000000..a72346e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right_Disabled.png
new file mode 100755
index 0000000..6058abf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right_Over.png
new file mode 100755
index 0000000..934441c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up.png
new file mode 100755
index 0000000..a270366
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up_Disabled.png
new file mode 100755
index 0000000..2f0dd50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up_Over.png
new file mode 100755
index 0000000..3189ffa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/double_arrow_up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite.png
new file mode 100755
index 0000000..e8f49a5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite_Disabled.png
new file mode 100755
index 0000000..9207b53
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite_Over.png
new file mode 100755
index 0000000..cc2a83f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/favourite_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find.png
new file mode 100755
index 0000000..0407b57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find_Disabled.png
new file mode 100755
index 0000000..322a419
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find_Over.png
new file mode 100755
index 0000000..6967908
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/find_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help.png
new file mode 100755
index 0000000..3d1077f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help_Disabled.png
new file mode 100755
index 0000000..97a3088
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help_Over.png
new file mode 100755
index 0000000..8aaa126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/help_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home.png
new file mode 100755
index 0000000..3fd7b74
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home_Disabled.png
new file mode 100755
index 0000000..101d15b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home_Over.png
new file mode 100755
index 0000000..1d7e56b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/home_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail.png
new file mode 100755
index 0000000..c620ade
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail_Disabled.png
new file mode 100755
index 0000000..f2cf954
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail_Over.png
new file mode 100755
index 0000000..7f6f649
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/mail_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize.png
new file mode 100755
index 0000000..272fe2a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize_Disabled.png
new file mode 100755
index 0000000..c4e454d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize_Over.png
new file mode 100755
index 0000000..71c73ab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/maximize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize.png
new file mode 100755
index 0000000..e41f1e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize_Disabled.png
new file mode 100755
index 0000000..5c203f3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize_Over.png
new file mode 100755
index 0000000..e13b7b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minimize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus.png
new file mode 100755
index 0000000..c412172
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus_Disabled.png
new file mode 100755
index 0000000..030018a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus_Over.png
new file mode 100755
index 0000000..5f4fc8e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/minus_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person.png
new file mode 100755
index 0000000..e2eaf6a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person_Disabled.png
new file mode 100755
index 0000000..d443073
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person_Over.png
new file mode 100755
index 0000000..0b53068
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/person_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down.png
new file mode 100755
index 0000000..539d757
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down_Disabled.png
new file mode 100755
index 0000000..2e35d11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down_Over.png
new file mode 100755
index 0000000..c6b42be
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left.png
new file mode 100755
index 0000000..d8daf48
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left_Disabled.png
new file mode 100755
index 0000000..ffa0e00
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left_Over.png
new file mode 100755
index 0000000..953a8bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/pin_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus.png
new file mode 100755
index 0000000..26b74c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus_Disabled.png
new file mode 100755
index 0000000..3902a32
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus_Over.png
new file mode 100755
index 0000000..475578e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/plus_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print.png
new file mode 100755
index 0000000..f29b57d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print_Disabled.png
new file mode 100755
index 0000000..1acb9eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print_Over.png
new file mode 100755
index 0000000..6410317
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/print_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh.png
new file mode 100755
index 0000000..0dfc318
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_Disabled.png
new file mode 100755
index 0000000..0c1b6bf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_Over.png
new file mode 100755
index 0000000..bbb0324
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin.png
new file mode 100755
index 0000000..732e0a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin_Disabled.png
new file mode 100755
index 0000000..436455b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin_Over.png
new file mode 100755
index 0000000..2e50677
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/refresh_thin_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save.png
new file mode 100755
index 0000000..bbc57ac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save_Disabled.png
new file mode 100755
index 0000000..87347b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save_Over.png
new file mode 100755
index 0000000..84dd098
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/save_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings.png
new file mode 100755
index 0000000..c603cc4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings_Disabled.png
new file mode 100755
index 0000000..d7332b7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings_Over.png
new file mode 100755
index 0000000..bae2b56
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/settings_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer.png
new file mode 100755
index 0000000..b57bc88
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer_Disabled.png
new file mode 100755
index 0000000..a412123
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer_Over.png
new file mode 100755
index 0000000..894a71a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/transfer_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash.png
new file mode 100755
index 0000000..1e0bd7c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash_Disabled.png
new file mode 100755
index 0000000..9c02eba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash_Over.png
new file mode 100755
index 0000000..7e6f4a6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/trash_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom.png
new file mode 100755
index 0000000..be330ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom_Disabled.png
new file mode 100755
index 0000000..8be6ecb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom_Over.png
new file mode 100755
index 0000000..9811638
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/headerIcons/zoom_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button.png
new file mode 100755
index 0000000..2ec691b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Disabled.png
new file mode 100755
index 0000000..2de9676
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Down.png
new file mode 100755
index 0000000..c87e269
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Over.png
new file mode 100755
index 0000000..5af5e6e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ImgButton/button_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/expander_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/expander_closed.png
new file mode 100755
index 0000000..7355dfd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/expander_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/expander_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/expander_opened.png
new file mode 100755
index 0000000..f18121f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/expander_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/formula_menuItem.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/formula_menuItem.png
new file mode 100755
index 0000000..0250515
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/formula_menuItem.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/group_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/group_closed.png
new file mode 100755
index 0000000..b6229cd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/group_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/group_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/group_opened.png
new file mode 100755
index 0000000..ac9d6f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/group_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header.png
new file mode 100755
index 0000000..41695d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Disabled.png
new file mode 100755
index 0000000..ea090be
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Down.png
new file mode 100755
index 0000000..5d63a58
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_menu.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_menu.png
new file mode 100755
index 0000000..0f74ec2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_menu.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Over.png
new file mode 100755
index 0000000..2cd5bf9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected.png
new file mode 100755
index 0000000..9fb48d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected_Disabled.png
new file mode 100755
index 0000000..a6dd1d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected_Over.png
new file mode 100755
index 0000000..d83c664
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/header_Selected_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row.png
new file mode 100755
index 0000000..de57c6b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_collapsed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_collapsed.png
new file mode 100755
index 0000000..3f9ae1b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_collapsed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_expanded.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_expanded.png
new file mode 100755
index 0000000..530b79a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_expanded.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Over.png
new file mode 100755
index 0000000..7772517
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Over_Selected.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Over_Selected.png
new file mode 100755
index 0000000..fb44de1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Over_Selected.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Selected.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Selected.png
new file mode 100755
index 0000000..d388cfc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Selected.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Selected_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Selected_Over.png
new file mode 100755
index 0000000..49b3ac3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/row_Selected_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/sort_ascending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/sort_ascending.png
new file mode 100755
index 0000000..39f2f75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/sort_ascending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/sort_descending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/sort_descending.png
new file mode 100755
index 0000000..c19d0fe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ListGrid/sort_descending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/loading.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/loading.gif
new file mode 100755
index 0000000..19d5500
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/loading.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/loadingSmall.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/loadingSmall.gif
new file mode 100755
index 0000000..d0bce15
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/loadingSmall.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/check.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/check.png
new file mode 100755
index 0000000..0f5eead
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/check.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/check_disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/check_disabled.png
new file mode 100755
index 0000000..a77c532
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/check_disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_background.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_background.png
new file mode 100755
index 0000000..d61422e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_background.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button.png
new file mode 100755
index 0000000..a6895e0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_Disabled.png
new file mode 100755
index 0000000..1b90feb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_up.png
new file mode 100755
index 0000000..287e467
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_up_Disabled.png
new file mode 100755
index 0000000..e6ef59f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_button_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_end.png
new file mode 100755
index 0000000..1145a4d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_right.png
new file mode 100755
index 0000000..1145a4d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_rollover.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_rollover.png
new file mode 100755
index 0000000..d1fc0cd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_rollover.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_start.png
new file mode 100755
index 0000000..fed8ffa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_stretch.png
new file mode 100755
index 0000000..2773c57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/menu_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu.png
new file mode 100755
index 0000000..486dd89
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_disabled.png
new file mode 100755
index 0000000..b61ddc8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_disabled_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_disabled_left.png
new file mode 100755
index 0000000..c5060bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_disabled_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_down.png
new file mode 100755
index 0000000..aa56d7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_left.png
new file mode 100755
index 0000000..74d8097
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Menu/submenu_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_add_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_add_files.png
new file mode 100755
index 0000000..6db0919
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_add_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_add_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_add_files_Disabled.png
new file mode 100755
index 0000000..9b7fa17
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_add_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_remove_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_remove_files.png
new file mode 100755
index 0000000..bd45928
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_remove_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_remove_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_remove_files_Disabled.png
new file mode 100755
index 0000000..e1edd8c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/MultiUploadItem/icon_remove_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/opacity.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/opacity.png
new file mode 100755
index 0000000..0d0a764
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/opacity.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Panel/panel_header.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Panel/panel_header.png
new file mode 100755
index 0000000..9a222f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Panel/panel_header.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker.png
new file mode 100755
index 0000000..52b4fdc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Disabled.png
new file mode 100755
index 0000000..42b87f3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Down.png
new file mode 100755
index 0000000..5bd21e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Over.png
new file mode 100755
index 0000000..18df3e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/clear_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker.png
new file mode 100755
index 0000000..6acc113
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker_Disabled.png
new file mode 100755
index 0000000..00603e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker_Over.png
new file mode 100755
index 0000000..16f01c1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/comboBoxPicker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker.png
new file mode 100755
index 0000000..cfd2580
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Disabled.png
new file mode 100755
index 0000000..f90ac24
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Down.png
new file mode 100755
index 0000000..509efaa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Over.png
new file mode 100755
index 0000000..73c9a33
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/date_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker.png
new file mode 100755
index 0000000..9f3ff23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Disabled.png
new file mode 100755
index 0000000..2d9a64f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Down.png
new file mode 100755
index 0000000..f765ad8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Over.png
new file mode 100755
index 0000000..f6f4b95
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/refresh_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker.png
new file mode 100755
index 0000000..2877494
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Disabled.png
new file mode 100755
index 0000000..370f230
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Down.png
new file mode 100755
index 0000000..4f0ffbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Over.png
new file mode 100755
index 0000000..5378556
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/pickers/search_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_end.gif
new file mode 100755
index 0000000..ee1f9d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_start.gif
new file mode 100755
index 0000000..36fd795
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif
new file mode 100755
index 0000000..5bbd82b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_end.gif
new file mode 100755
index 0000000..15a8daf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_start.gif
new file mode 100755
index 0000000..38daec8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_stretch.gif
new file mode 100755
index 0000000..cc5f1ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_h_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_end.gif
new file mode 100755
index 0000000..47252dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_start.gif
new file mode 100755
index 0000000..9666c1e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif
new file mode 100755
index 0000000..5467b67
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_end.gif
new file mode 100755
index 0000000..47252dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_start.gif
new file mode 100755
index 0000000..f8ca939
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_stretch.gif
new file mode 100755
index 0000000..b53fd45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_Disabled_v_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_end.gif
new file mode 100755
index 0000000..5133304
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_start.gif
new file mode 100755
index 0000000..4469e9f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_stretch.gif
new file mode 100755
index 0000000..b2f3eb4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_end.gif
new file mode 100755
index 0000000..06cd29f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_start.gif
new file mode 100755
index 0000000..28da8a5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_stretch.gif
new file mode 100755
index 0000000..d8c075c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_h_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_end.gif
new file mode 100755
index 0000000..4b6e96e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_start.gif
new file mode 100755
index 0000000..3bb4076
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_stretch.gif
new file mode 100755
index 0000000..52fff69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_end.gif
new file mode 100755
index 0000000..15827eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_start.gif
new file mode 100755
index 0000000..23a4dd2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_stretch.gif
new file mode 100755
index 0000000..d09c617
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Progressbar/progressbar_v_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/readme.txt b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/readme.txt
new file mode 100755
index 0000000..e134386
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/readme.txt
@@ -0,0 +1,2 @@
+Some of the icons used are from the FAMFAMFAM Silk Icon Collection (http://www.famfamfam.com/lab/icons/silk/)
+and are licensed under Creative Commons Attribution 2.5 License.
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add.png
new file mode 100755
index 0000000..4a7ea12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add_Disabled.png
new file mode 100755
index 0000000..93e0ad0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add_Over.png
new file mode 100755
index 0000000..6a4e1bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/add_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/check.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/check.gif
new file mode 100755
index 0000000..2465d1c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/check.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter.png
new file mode 100755
index 0000000..149ae78
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter_Disabled.png
new file mode 100755
index 0000000..b46239e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter_Over.png
new file mode 100755
index 0000000..d2fa7e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/filter_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/query.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/query.gif
new file mode 100755
index 0000000..2b2bd19
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RecordEditor/query.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/background_color.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/background_color.gif
new file mode 100755
index 0000000..8b464c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/background_color.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/background_color_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/background_color_Disabled.gif
new file mode 100755
index 0000000..4f35753
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/background_color_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/copy.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/copy.png
new file mode 100755
index 0000000..87cf5c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/copy.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/copy_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/copy_Disabled.png
new file mode 100755
index 0000000..bbb93c1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/copy_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/cut.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/cut.png
new file mode 100755
index 0000000..bb62377
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/cut.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/cut_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/cut_Disabled.png
new file mode 100755
index 0000000..79bdf22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/cut_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/indent.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/indent.png
new file mode 100755
index 0000000..c16f938
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/indent.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/indent_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/indent_Disabled.png
new file mode 100755
index 0000000..a93daa4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/indent_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/link_new.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/link_new.png
new file mode 100755
index 0000000..a87f732
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/link_new.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/outdent.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/outdent.png
new file mode 100755
index 0000000..70730e6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/outdent.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/outdent_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/outdent_Disabled.png
new file mode 100755
index 0000000..0dc1840
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/outdent_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/paste.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/paste.png
new file mode 100755
index 0000000..e3397b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/paste.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/paste_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/paste_Disabled.png
new file mode 100755
index 0000000..5b89a74
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/paste_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/separator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/separator.png
new file mode 100755
index 0000000..7e10cc2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/separator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/separator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/separator_Disabled.png
new file mode 100755
index 0000000..05f0487
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/separator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_center.png
new file mode 100755
index 0000000..57beb38
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_center_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_center_Disabled.png
new file mode 100755
index 0000000..06750d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_center_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_justified.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_justified.png
new file mode 100755
index 0000000..2fbdd69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_justified.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_justified_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_justified_Disabled.png
new file mode 100755
index 0000000..6792e35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_justified_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_left.png
new file mode 100755
index 0000000..6c8fcc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_left_Disabled.png
new file mode 100755
index 0000000..4f6a8e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_right.png
new file mode 100755
index 0000000..a150257
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_right_Disabled.png
new file mode 100755
index 0000000..f859b47
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_align_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_bold.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_bold.png
new file mode 100755
index 0000000..889ae80
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_bold.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_color.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_color.gif
new file mode 100755
index 0000000..44af9c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_color.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_color_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_color_Disabled.gif
new file mode 100755
index 0000000..a1d324a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_color_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_italic.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_italic.png
new file mode 100755
index 0000000..8482ac8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_italic.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_underline.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_underline.png
new file mode 100755
index 0000000..90d0df2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/RichTextEditor/text_underline.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/complexType.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/complexType.gif
new file mode 100755
index 0000000..1c0743c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/complexType.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/operation.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/operation.png
new file mode 100755
index 0000000..a018fac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/operation.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/simpleType.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/simpleType.png
new file mode 100755
index 0000000..2b6c5a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SchemaViewer/simpleType.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_end.png
new file mode 100755
index 0000000..b593dba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_start.png
new file mode 100755
index 0000000..4f7cce9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_stretch.png
new file mode 100755
index 0000000..e112cd4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_track.png
new file mode 100755
index 0000000..dae5846
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Disabled_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_end.png
new file mode 100755
index 0000000..c537324
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_start.png
new file mode 100755
index 0000000..03315b5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_stretch.png
new file mode 100755
index 0000000..685732b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_track.png
new file mode 100755
index 0000000..dae5846
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Down_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_end.png
new file mode 100755
index 0000000..102cf35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_end.png
new file mode 100755
index 0000000..102cf35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_start.png
new file mode 100755
index 0000000..1d58a40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_stretch.png
new file mode 100755
index 0000000..430f2b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_track.png
new file mode 100755
index 0000000..dae5846
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_Over_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_start.png
new file mode 100755
index 0000000..1d58a40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_stretch.png
new file mode 100755
index 0000000..b3e3a6d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_track.png
new file mode 100755
index 0000000..dae5846
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hscroll_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_end.png
new file mode 100755
index 0000000..45db553
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_start.png
new file mode 100755
index 0000000..4e2a388
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_stretch.png
new file mode 100755
index 0000000..94b5cac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_end.png
new file mode 100755
index 0000000..79a2a14
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_start.png
new file mode 100755
index 0000000..fb4f6b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_stretch.png
new file mode 100755
index 0000000..73f90cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_end.png
new file mode 100755
index 0000000..010e073
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_grip.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_grip.png
new file mode 100755
index 0000000..fad4ae4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_grip.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_grip_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_grip_Disabled.png
new file mode 100755
index 0000000..fad4ae4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_grip_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_end.png
new file mode 100755
index 0000000..f1a3523
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_start.png
new file mode 100755
index 0000000..fb4f6b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_stretch.png
new file mode 100755
index 0000000..a9a5736
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_start.png
new file mode 100755
index 0000000..4e2a388
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_stretch.png
new file mode 100755
index 0000000..94b5cac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/hthumb_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_end.png
new file mode 100755
index 0000000..5f93c1b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_start.png
new file mode 100755
index 0000000..6305449
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_track.png
new file mode 100755
index 0000000..856eb01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Disabled_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_end.png
new file mode 100755
index 0000000..dc305ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_start.png
new file mode 100755
index 0000000..3066b93
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_track.png
new file mode 100755
index 0000000..856eb01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Down_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_end.png
new file mode 100755
index 0000000..7a78d21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_end.png
new file mode 100755
index 0000000..7a78d21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_start.png
new file mode 100755
index 0000000..d711ccb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_track.png
new file mode 100755
index 0000000..856eb01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_Over_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_start.png
new file mode 100755
index 0000000..d711ccb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_track.png
new file mode 100755
index 0000000..856eb01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vscroll_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_end.png
new file mode 100755
index 0000000..771f00c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_start.png
new file mode 100755
index 0000000..d4219d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_stretch.png
new file mode 100755
index 0000000..a63202c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_end.png
new file mode 100755
index 0000000..88b826e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_start.png
new file mode 100755
index 0000000..1cf8d77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_stretch.png
new file mode 100755
index 0000000..a04438f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_end.png
new file mode 100755
index 0000000..771f00c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_grip.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_grip.png
new file mode 100755
index 0000000..f5ee60f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_grip.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_grip_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_grip_Disabled.png
new file mode 100755
index 0000000..f5ee60f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_grip_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_end.png
new file mode 100755
index 0000000..88b826e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_start.png
new file mode 100755
index 0000000..1cf8d77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_stretch.png
new file mode 100755
index 0000000..a04438f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_start.png
new file mode 100755
index 0000000..d4219d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_stretch.png
new file mode 100755
index 0000000..a63202c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Scrollbar/vthumb_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_end.png
new file mode 100755
index 0000000..76eafa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_start.png
new file mode 100755
index 0000000..76eafa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_stretch.png
new file mode 100755
index 0000000..0fa11bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_end.png
new file mode 100755
index 0000000..1c79a53
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_start.png
new file mode 100755
index 0000000..1c79a53
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_stretch.png
new file mode 100755
index 0000000..394bd03
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_end.png
new file mode 100755
index 0000000..1c79a53
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_start.png
new file mode 100755
index 0000000..1c79a53
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_stretch.png
new file mode 100755
index 0000000..394bd03
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Disabled_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_end.png
new file mode 100755
index 0000000..2e56021
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_start.png
new file mode 100755
index 0000000..2e56021
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_stretch.png
new file mode 100755
index 0000000..99cbc84
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_end.png
new file mode 100755
index 0000000..6f88035
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_start.png
new file mode 100755
index 0000000..6f88035
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_stretch.png
new file mode 100755
index 0000000..5d3a4d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_end.png
new file mode 100755
index 0000000..4a6a9f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_start.png
new file mode 100755
index 0000000..97d0e3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_stretch.png
new file mode 100755
index 0000000..a0347fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/header_Over_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_closed.png
new file mode 100755
index 0000000..68baf0b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened.png
new file mode 100755
index 0000000..8312160
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_end.png
new file mode 100755
index 0000000..7dfc6ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_start.png
new file mode 100755
index 0000000..2ee0df5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_stretch.png
new file mode 100755
index 0000000..9dcb804
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/SectionHeader/opener_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/background.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/background.gif
new file mode 100755
index 0000000..bfa6c37
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/background.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/progressCursorTracker.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/progressCursorTracker.gif
new file mode 100755
index 0000000..aa9b38a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/progressCursorTracker.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds_center.png
new file mode 100755
index 0000000..3b3884e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_B.png
new file mode 100755
index 0000000..7cb1db0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_BL.png
new file mode 100755
index 0000000..bcf40a6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_BR.png
new file mode 100755
index 0000000..319264a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_L.png
new file mode 100755
index 0000000..fef2646
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_R.png
new file mode 100755
index 0000000..0547498
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_T.png
new file mode 100755
index 0000000..f508b51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_TL.png
new file mode 100755
index 0000000..f24b2ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_TR.png
new file mode 100755
index 0000000..73f73bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds1_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_B.png
new file mode 100755
index 0000000..05b1d11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_BL.png
new file mode 100755
index 0000000..0ee4dcd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_BR.png
new file mode 100755
index 0000000..c92b858
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_L.png
new file mode 100755
index 0000000..97ee80e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_R.png
new file mode 100755
index 0000000..962ecb3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_T.png
new file mode 100755
index 0000000..ebf1e26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_TL.png
new file mode 100755
index 0000000..86fad24
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_TR.png
new file mode 100755
index 0000000..52f2305
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_B.png
new file mode 100755
index 0000000..e55ed42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_BL.png
new file mode 100755
index 0000000..735e95e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_BR.png
new file mode 100755
index 0000000..95acd7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_L.png
new file mode 100755
index 0000000..7136873
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_R.png
new file mode 100755
index 0000000..72d50b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_T.png
new file mode 100755
index 0000000..070bfa5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_TL.png
new file mode 100755
index 0000000..95a7413
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_TR.png
new file mode 100755
index 0000000..e03f78f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds2_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_B.png
new file mode 100755
index 0000000..8950af8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_BL.png
new file mode 100755
index 0000000..a6194eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_BR.png
new file mode 100755
index 0000000..4daf18d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_L.png
new file mode 100755
index 0000000..5c1d8f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_R.png
new file mode 100755
index 0000000..e4d9851
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_T.png
new file mode 100755
index 0000000..42360a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_TL.png
new file mode 100755
index 0000000..39732c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_TR.png
new file mode 100755
index 0000000..3b9aa40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_B.png
new file mode 100755
index 0000000..3d6fc26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_BL.png
new file mode 100755
index 0000000..6007253
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_BR.png
new file mode 100755
index 0000000..8e9c7ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_L.png
new file mode 100755
index 0000000..a6f9737
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_R.png
new file mode 100755
index 0000000..44efd2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_T.png
new file mode 100755
index 0000000..ad8bf68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_TL.png
new file mode 100755
index 0000000..185ba1f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_TR.png
new file mode 100755
index 0000000..3afd869
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_B.png
new file mode 100755
index 0000000..e2879ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_BL.png
new file mode 100755
index 0000000..50468f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_BR.png
new file mode 100755
index 0000000..96f7b07
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_L.png
new file mode 100755
index 0000000..0ee6a62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_R.png
new file mode 100755
index 0000000..cd2177d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_T.png
new file mode 100755
index 0000000..3541504
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_TL.png
new file mode 100755
index 0000000..c85e2bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_TR.png
new file mode 100755
index 0000000..43dd30f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_B.png
new file mode 100755
index 0000000..73e9525
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_BL.png
new file mode 100755
index 0000000..cf1f5f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_BR.png
new file mode 100755
index 0000000..92b1852
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_L.png
new file mode 100755
index 0000000..f97fd86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_R.png
new file mode 100755
index 0000000..b48626e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_T.png
new file mode 100755
index 0000000..6324087
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_TL.png
new file mode 100755
index 0000000..a90a94b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_TR.png
new file mode 100755
index 0000000..44c6bc5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_B.png
new file mode 100755
index 0000000..670c1f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_BL.png
new file mode 100755
index 0000000..9325baf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_BR.png
new file mode 100755
index 0000000..5e0a63f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_L.png
new file mode 100755
index 0000000..2c63fbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_R.png
new file mode 100755
index 0000000..44f0eb6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_T.png
new file mode 100755
index 0000000..f77a361
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_TL.png
new file mode 100755
index 0000000..21da49e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_TR.png
new file mode 100755
index 0000000..9c9c8d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_B.png
new file mode 100755
index 0000000..84c839f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_BL.png
new file mode 100755
index 0000000..e8fa038
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_BR.png
new file mode 100755
index 0000000..dca921d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_L.png
new file mode 100755
index 0000000..121e4d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_R.png
new file mode 100755
index 0000000..21f8877
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_T.png
new file mode 100755
index 0000000..a6f5188
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_TL.png
new file mode 100755
index 0000000..c530634
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_TR.png
new file mode 100755
index 0000000..e325b9c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_B.png
new file mode 100755
index 0000000..5166a75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_BL.png
new file mode 100755
index 0000000..bcb45c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_BR.png
new file mode 100755
index 0000000..d248538
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_L.png
new file mode 100755
index 0000000..ec633c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_R.png
new file mode 100755
index 0000000..56b8f57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_T.png
new file mode 100755
index 0000000..5973074
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_TL.png
new file mode 100755
index 0000000..c7d315e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_TR.png
new file mode 100755
index 0000000..a904325
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/shared/shadows/ds9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb.png
new file mode 100755
index 0000000..81d732d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb_Disabled.png
new file mode 100755
index 0000000..1f1de93
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb_down.png
new file mode 100755
index 0000000..c20cd1a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/hthumb_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_end.png
new file mode 100755
index 0000000..6caeb58
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_start.png
new file mode 100755
index 0000000..0af4d42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_stretch.png
new file mode 100755
index 0000000..5b836d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_end.png
new file mode 100755
index 0000000..203e322
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_start.png
new file mode 100755
index 0000000..6e76806
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_stretch.png
new file mode 100755
index 0000000..9661196
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/htrack_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb.png
new file mode 100755
index 0000000..c1c99a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb_Disabled.png
new file mode 100755
index 0000000..78e482b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb_down.png
new file mode 100755
index 0000000..45790f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vthumb_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_end.png
new file mode 100755
index 0000000..37c82a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_start.png
new file mode 100755
index 0000000..302ebe6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_stretch.png
new file mode 100755
index 0000000..9e1304e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_end.png
new file mode 100755
index 0000000..90ec7d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_start.png
new file mode 100755
index 0000000..48c0b0b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_stretch.png
new file mode 100755
index 0000000..ca67b34
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Slider/vtrack_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_bg.png
new file mode 100755
index 0000000..338b350
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_Disabled_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_Disabled_bg.png
new file mode 100755
index 0000000..f135ec9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_Disabled_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_snap.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_snap.png
new file mode 100755
index 0000000..06058c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_snap.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_snap_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_snap_Disabled.png
new file mode 100755
index 0000000..06058c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/hsplit_snap_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_bg.png
new file mode 100755
index 0000000..e8e27a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_Disabled_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_Disabled_bg.png
new file mode 100755
index 0000000..295a76f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_Disabled_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_snap.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_snap.png
new file mode 100755
index 0000000..750d349
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_snap.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_snap_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_snap_Disabled.png
new file mode 100755
index 0000000..750d349
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Splitbar/vsplit_snap_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_end.png
new file mode 100755
index 0000000..42dac75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_start.png
new file mode 100755
index 0000000..42dac75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_stretch.png
new file mode 100755
index 0000000..0075c07
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_end.png
new file mode 100755
index 0000000..57bde03
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_start.png
new file mode 100755
index 0000000..75bff09
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_stretch.png
new file mode 100755
index 0000000..f2f6e6a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_end.png
new file mode 100755
index 0000000..13d4d67
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_end.png
new file mode 100755
index 0000000..bd779c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_start.png
new file mode 100755
index 0000000..08c759f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_stretch.png
new file mode 100755
index 0000000..5c975b4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..9ecc6a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..50999c8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..b1b841c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_end.png
new file mode 100755
index 0000000..115bc98
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_end.png
new file mode 100755
index 0000000..3187fe1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_start.png
new file mode 100755
index 0000000..10a8f35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..454f254
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_start.png
new file mode 100755
index 0000000..ab6f671
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_stretch.png
new file mode 100755
index 0000000..c8009bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_start.png
new file mode 100755
index 0000000..f55634a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_stretch.png
new file mode 100755
index 0000000..849a201
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/bottom/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/close.png
new file mode 100755
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/close_Over.png
new file mode 100755
index 0000000..880f62c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_end.png
new file mode 100755
index 0000000..53da22b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_start.png
new file mode 100755
index 0000000..83cd9a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_stretch.png
new file mode 100755
index 0000000..c1e2e61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_end.png
new file mode 100755
index 0000000..274cca0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_end.png
new file mode 100755
index 0000000..da71474
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_start.png
new file mode 100755
index 0000000..b26e8df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_stretch.png
new file mode 100755
index 0000000..21b0406
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..e542775
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..0607ff3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..6eae7d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_end.png
new file mode 100755
index 0000000..a96948b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_end.png
new file mode 100755
index 0000000..039fe88
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_start.png
new file mode 100755
index 0000000..f4098f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..8528ca4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_start.png
new file mode 100755
index 0000000..d62e539
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_stretch.png
new file mode 100755
index 0000000..3df97a4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_start.png
new file mode 100755
index 0000000..dc03d52
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_stretch.png
new file mode 100755
index 0000000..b0a7b8a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/left/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_end.png
new file mode 100755
index 0000000..74c3e18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_start.png
new file mode 100755
index 0000000..6f2dcf4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_stretch.png
new file mode 100755
index 0000000..386c62d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/close.png
new file mode 100755
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/close_Over.png
new file mode 100755
index 0000000..880f62c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_end.png
new file mode 100755
index 0000000..9e6b049
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_start.png
new file mode 100755
index 0000000..eccd023
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_stretch.png
new file mode 100755
index 0000000..a075b11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_end.png
new file mode 100755
index 0000000..de381ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_end.png
new file mode 100755
index 0000000..422f435
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_start.png
new file mode 100755
index 0000000..4dbfdb1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_stretch.png
new file mode 100755
index 0000000..c46d2bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..1296bb0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..398e13b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..51ade26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_end.png
new file mode 100755
index 0000000..f4af713
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_end.png
new file mode 100755
index 0000000..cb41d51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_start.png
new file mode 100755
index 0000000..db77363
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..959f927
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_start.png
new file mode 100755
index 0000000..c564005
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_stretch.png
new file mode 100755
index 0000000..0366803
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_start.png
new file mode 100755
index 0000000..f6d21b4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_stretch.png
new file mode 100755
index 0000000..b261d4c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/right/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_end.png
new file mode 100755
index 0000000..069cb23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_start.png
new file mode 100755
index 0000000..069cb23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_stretch.png
new file mode 100755
index 0000000..41b2e92
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/close.png
new file mode 100755
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/close_Over.png
new file mode 100755
index 0000000..880f62c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_end.png
new file mode 100755
index 0000000..52f6284
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_start.png
new file mode 100755
index 0000000..330abb1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_stretch.png
new file mode 100755
index 0000000..e669d52
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_end.png
new file mode 100755
index 0000000..741f707
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_end.png
new file mode 100755
index 0000000..a29e069
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_start.png
new file mode 100755
index 0000000..7d3cf88
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_stretch.png
new file mode 100755
index 0000000..fee02a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..e3f6cfe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..c5e1e25
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..73aa134
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_end.png
new file mode 100755
index 0000000..d409f83
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_end.png
new file mode 100755
index 0000000..9ccd8bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_start.png
new file mode 100755
index 0000000..40897b6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..5f794eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_start.png
new file mode 100755
index 0000000..f39149a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_stretch.png
new file mode 100755
index 0000000..f1ecdd7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_start.png
new file mode 100755
index 0000000..efffa79
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_stretch.png
new file mode 100755
index 0000000..687a589
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Tab/top/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/close.png
new file mode 100755
index 0000000..574bf85
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/close_Over.png
new file mode 100755
index 0000000..f02a753
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_bottom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_bottom.png
new file mode 100755
index 0000000..05359d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_bottom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_bottom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_bottom.png
new file mode 100755
index 0000000..a18ee13
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_bottom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_left.png
new file mode 100755
index 0000000..c77dd74
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_right.png
new file mode 100755
index 0000000..2de90f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_top.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_top.png
new file mode 100755
index 0000000..f7593cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Disabled_top.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_bottom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_bottom.png
new file mode 100755
index 0000000..a723c18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_bottom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_left.png
new file mode 100755
index 0000000..06ab651
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_right.png
new file mode 100755
index 0000000..2cfc17c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_top.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_top.png
new file mode 100755
index 0000000..3cc0eea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_Down_top.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_left.png
new file mode 100755
index 0000000..32ce2d4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_right.png
new file mode 100755
index 0000000..dfd6d50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_top.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_top.png
new file mode 100755
index 0000000..37ee98f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/picker_top.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_bottom_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_bottom_back.png
new file mode 100755
index 0000000..4dec10b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_bottom_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_bottom_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_bottom_forward.png
new file mode 100755
index 0000000..70e8c45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_bottom_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_bottom_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_bottom_back.png
new file mode 100755
index 0000000..c3f37dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_bottom_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_bottom_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_bottom_forward.png
new file mode 100755
index 0000000..7b31c1d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_bottom_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_left_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_left_back.png
new file mode 100755
index 0000000..4158cab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_left_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_left_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_left_forward.png
new file mode 100755
index 0000000..bd6643b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_left_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_right_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_right_back.png
new file mode 100755
index 0000000..b1b766c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_right_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_right_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_right_forward.png
new file mode 100755
index 0000000..f81236d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_right_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_top_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_top_back.png
new file mode 100755
index 0000000..40c76ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_top_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_top_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_top_forward.png
new file mode 100755
index 0000000..b169615
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Disabled_top_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_bottom_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_bottom_back.png
new file mode 100755
index 0000000..b48888d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_bottom_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_bottom_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_bottom_forward.png
new file mode 100755
index 0000000..c73b5a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_bottom_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_left_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_left_back.png
new file mode 100755
index 0000000..9d29ddb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_left_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_left_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_left_forward.png
new file mode 100755
index 0000000..447f213
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_left_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_right_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_right_back.png
new file mode 100755
index 0000000..e8ec0b5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_right_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_right_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_right_forward.png
new file mode 100755
index 0000000..1061a97
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_right_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_top_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_top_back.png
new file mode 100755
index 0000000..85f6738
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_top_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_top_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_top_forward.png
new file mode 100755
index 0000000..14cca2e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_Down_top_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_left_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_left_back.png
new file mode 100755
index 0000000..af5dcac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_left_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_left_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_left_forward.png
new file mode 100755
index 0000000..a54bde6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_left_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_right_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_right_back.png
new file mode 100755
index 0000000..c414639
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_right_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_right_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_right_forward.png
new file mode 100755
index 0000000..9336ac0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_right_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_top_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_top_back.png
new file mode 100755
index 0000000..85408c8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_top_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_top_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_top_forward.png
new file mode 100755
index 0000000..1b084f5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TabSet/scroll_top_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TileGrid/tileOver.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TileGrid/tileOver.png
new file mode 100755
index 0000000..1ac72fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TileGrid/tileOver.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/background.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/background.png
new file mode 100755
index 0000000..2417932
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/background.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/background_vertical.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/background_vertical.png
new file mode 100755
index 0000000..719978e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/background_vertical.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_end.png
new file mode 100755
index 0000000..acc36cb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_start.png
new file mode 100755
index 0000000..f35d6de
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_stretch.png
new file mode 100755
index 0000000..76e61df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_end.png
new file mode 100755
index 0000000..4032480
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_start.png
new file mode 100755
index 0000000..5a6fdeb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_stretch.png
new file mode 100755
index 0000000..dc66e64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_end.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_end.png
new file mode 100755
index 0000000..73d8227
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_start.png
new file mode 100755
index 0000000..19b2fd6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_stretch.png
new file mode 100755
index 0000000..51fe916
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_end.png
new file mode 100755
index 0000000..1cf34df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_start.png
new file mode 100755
index 0000000..7189653
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_stretch.png
new file mode 100755
index 0000000..16f7897
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_end.png
new file mode 100755
index 0000000..4032480
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_end.png
new file mode 100755
index 0000000..e63380d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_start.png
new file mode 100755
index 0000000..1897c7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_stretch.png
new file mode 100755
index 0000000..63d545b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_start.png
new file mode 100755
index 0000000..bf36c8b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_stretch.png
new file mode 100755
index 0000000..dc66e64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_start.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_stretch.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/button/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hresizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hresizer.png
new file mode 100755
index 0000000..22c22f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hresizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hresizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hresizer_Disabled.png
new file mode 100755
index 0000000..290e052
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hresizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hseparator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hseparator.png
new file mode 100755
index 0000000..3dcbd3e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hseparator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hseparator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hseparator_Disabled.png
new file mode 100755
index 0000000..a1c0416
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/hseparator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/resizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/resizer.png
new file mode 100755
index 0000000..9236887
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/resizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/resizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/resizer_Disabled.png
new file mode 100755
index 0000000..e5391f6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/resizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/separator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/separator.png
new file mode 100755
index 0000000..a7cad23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/separator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/separator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/separator_Disabled.png
new file mode 100755
index 0000000..f560b29
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/ToolStrip/separator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete.png
new file mode 100755
index 0000000..a606eed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete_Disabled.png
new file mode 100755
index 0000000..a7a8f62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete_Over.png
new file mode 100755
index 0000000..bc4ca97
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/delete_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down.png
new file mode 100755
index 0000000..4b838cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_Disabled.png
new file mode 100755
index 0000000..ea84538
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last.png
new file mode 100755
index 0000000..899a948
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last_Disabled.png
new file mode 100755
index 0000000..34beae1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last_Over.png
new file mode 100755
index 0000000..17a1c75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_last_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_Over.png
new file mode 100755
index 0000000..507100a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left.png
new file mode 100755
index 0000000..92386f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all.png
new file mode 100755
index 0000000..9845e38
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all_Disabled.png
new file mode 100755
index 0000000..5cbc987
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all_Over.png
new file mode 100755
index 0000000..90adcb1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_all_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_Disabled.png
new file mode 100755
index 0000000..ad65330
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_Over.png
new file mode 100755
index 0000000..345e028
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right.png
new file mode 100755
index 0000000..e4920ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all.png
new file mode 100755
index 0000000..a3760fe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all_Disabled.png
new file mode 100755
index 0000000..18ca253
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all_Over.png
new file mode 100755
index 0000000..6cc2e89
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_all_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_Disabled.png
new file mode 100755
index 0000000..1707634
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_Over.png
new file mode 100755
index 0000000..16a6169
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up.png
new file mode 100755
index 0000000..6e8b021
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_Disabled.png
new file mode 100755
index 0000000..7aff67b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first.png
new file mode 100755
index 0000000..8907d72
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first_Disabled.png
new file mode 100755
index 0000000..893e228
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first_Over.png
new file mode 100755
index 0000000..acf1a4d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_first_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_Over.png
new file mode 100755
index 0000000..eb6419b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TransferIcons/up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_ancestor.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_ancestor.gif
new file mode 100755
index 0000000..dbada7a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_ancestor.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_end.gif
new file mode 100755
index 0000000..2fa53c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_middle.gif
new file mode 100755
index 0000000..f9e30bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_single.gif
new file mode 100755
index 0000000..280c88e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_start.gif
new file mode 100755
index 0000000..ef9b383
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_closed_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_end.gif
new file mode 100755
index 0000000..9283790
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_middle.gif
new file mode 100755
index 0000000..80d1b95
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_end.gif
new file mode 100755
index 0000000..6d76aa3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_middle.gif
new file mode 100755
index 0000000..47c4663
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_single.gif
new file mode 100755
index 0000000..5e2737a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_start.gif
new file mode 100755
index 0000000..95e1837
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_opened_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_single.gif
new file mode 100755
index 0000000..be0757c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_start.gif
new file mode 100755
index 0000000..3928bcf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/connector_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/file.png
new file mode 100755
index 0000000..da793cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_closed.png
new file mode 100755
index 0000000..caad126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_drop.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_drop.png
new file mode 100755
index 0000000..af9c5a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_drop.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_file.png
new file mode 100755
index 0000000..dff701f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_open.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_open.png
new file mode 100755
index 0000000..c5df8d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_open.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_opened.png
new file mode 100755
index 0000000..c5df8d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/folder_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/opener_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/opener_closed.png
new file mode 100755
index 0000000..910f960
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/opener_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/opener_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/opener_opened.png
new file mode 100755
index 0000000..adbb6ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/TreeGrid/opener_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/headerIcon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/headerIcon.png
new file mode 100755
index 0000000..d22860a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/headerIcon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/resizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/resizer.png
new file mode 100755
index 0000000..af075d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/resizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/resizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/resizer_Disabled.png
new file mode 100755
index 0000000..af075d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/resizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_B.png
new file mode 100755
index 0000000..11e78fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_BL.png
new file mode 100755
index 0000000..e8b8b0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_BR.png
new file mode 100755
index 0000000..85da585
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_L.png
new file mode 100755
index 0000000..05bdf54
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_R.png
new file mode 100755
index 0000000..73193ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_T.png
new file mode 100755
index 0000000..c6f269c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_TL.png
new file mode 100755
index 0000000..9c60ffe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_TR.png
new file mode 100755
index 0000000..556c4ec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/images/Window/window_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/load_skin.js b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/load_skin.js
new file mode 100755
index 0000000..29129b3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/load_skin.js
@@ -0,0 +1,1654 @@
+/*============================================================
+ "Enterprise" theme programmatic settings
+ Copyright 2003 and beyond, Isomorphic Software
+============================================================*/
+
+
+isc.loadSkin = function (theWindow) {
+
+ if (theWindow == null) theWindow = window;
+
+ with (theWindow) {
+
+ //----------------------------------------
+ // Specify skin directory
+ //----------------------------------------
+ // must be relative to your application file or isomorphicDir
+ isc.Page.setSkinDir("[ISOMORPHIC]/skins/EnterpriseBlue/");
+
+ //----------------------------------------
+ // Load skin style sheet(s)
+ //----------------------------------------
+ isc.Page.loadStyleSheet("[SKIN]/skin_styles.css", theWindow)
+
+ //TODO: For development purposes, useCSS3 as false. Later on the boolean value will be
+ var useCSS3 = false;
+ //determined by checking browser if it is CSS3 compliant.
+
+ if (useCSS3) {
+
+ isc.Canvas.setProperties({
+ // this skin uses custom scrollbars
+ groupBorderCSS:"1px solid #165fa7",
+ showCustomScrollbars:true
+ });
+
+
+ if (isc.Browser.isIE && isc.Browser.version >= 7) {
+ isc.Canvas.setAllowExternalFilters(false);
+ isc.Canvas.setNeverUseFilters(true);
+
+ if (isc.Window) {
+ isc.Window.addProperties({
+ modalMaskOpacity:null,
+ modalMaskStyle:"normal"
+ });
+ isc.Window.changeDefaults("modalMaskDefaults", { src:"[SKIN]opacity.png" });
+ }
+ }
+
+ if (isc.RPCManager) {
+ isc.RPCManager.addClassProperties({
+ promptStyle:"cursor"
+ });
+ }
+
+ //----------------------------------------
+ // 1) Scrollbars
+ //----------------------------------------
+ isc.SimpleScrollThumb.addProperties({
+ baseStyle:"scrollThumb",
+ hSrc:"[SKIN]hthumb_grip.png",
+ vSrc:"[SKIN]vthumb_grip.png"
+ });
+
+ isc.Scrollbar.addProperties({
+ baseStyle:"scrollbar",
+ btnSize:18,
+ hSrc:"[SKIN]hscroll.png",
+ hThumbClass:isc.HSimpleScrollThumb,
+ showRollOver:true,
+ thumbInset:0,
+ thumbMinSize:20,
+ thumbOverlap:2,
+ vSrc:"[SKIN]vscroll.png",
+ vThumbClass:isc.VSimpleScrollThumb
+ });
+
+
+ //----------------------------------------
+ // 2) Buttons
+ //----------------------------------------
+ isc.Button.addProperties({
+ height:22,
+ baseStyle:"button"
+ });
+
+ // define IButton so examples that support the new SmartClient skin image-based
+ // button will fall back on the CSS-based Button with this skin
+ isc.ClassFactory.defineClass("IButton", "Button").addProperties({
+ baseStyle:"buttonRounded"
+ });
+ isc.ClassFactory.defineClass("IAutoFitButton", "AutoFitButton").addProperties({
+ baseStyle:"buttonRounded"
+ });
+
+ if (isc.IButton.markAsFrameworkClass != null) isc.IButton.markAsFrameworkClass();
+ if (isc.IAutoFitButton.markAsFrameworkClass != null) isc.IAutoFitButton.markAsFrameworkClass();
+
+ isc.ClassFactory.defineClass("HeaderMenuButton", "IButton").addProperties({
+ baseStyle:"headerButton"
+ });
+
+ // Have IMenuButton be just a synonym for IMenuButton
+ if (isc.MenuButton) {
+ isc.ClassFactory.overwriteClass("IMenuButton", "MenuButton");
+
+ if (isc.IMenuButton.markAsFrameworkClass != null) isc.IMenuButton.markAsFrameworkClass();
+
+ isc.MenuButton.addProperties({
+ // copy the header (.button) background-color to match when sort arrow is hidden
+ baseStyle:"button"
+ });
+ }
+
+ if (isc.MenuButton) {
+ isc.MenuButton.addProperties({
+ baseStyle:"menuButton",
+ iconHeight:4,
+ iconWidth:7,
+ menuButtonImage:"[SKIN]menu_button.png",
+ menuButtonImageUp:"[SKIN]menu_button_up.png",
+ showFocusedAsOver:true
+ });
+ }
+
+ if (isc.IMenuButton) {
+ isc.IMenuButton.addProperties({
+ capSize:4,
+ height:22,
+ iconWidth:7,
+ iconHeight:4,
+ menuButtonImage:"[SKIN]menu_button.png",
+ menuButtonImageUp:"[SKIN]menu_button_up.png",
+ showFocused:true,
+ showFocusedAsOver:true,
+ src:"[SKIN]button/button.png",
+ titleStyle:"buttonTitle",
+ vertical:false,
+ width:100
+ });
+ }
+
+ if (isc.Menu) {
+ isc.Menu.addProperties({
+ bodyBackgroundColor:null,
+ bodyStyleName:"gridBody",
+ cellHeight:22,
+ checkmarkDisabledImage:{src:"[SKIN]check_disabled.png", width:7, height:6},
+ checkmarkImage:{src:"[SKIN]check.png", width:9, height:8},
+ fastCellUpdates:false,
+ iconBodyStyleName:"menuMain",
+ shadowDepth:5,
+ showEdges:false,
+ showShadow:false,
+ submenuDisabledImage:{src:"[SKIN]submenu_disabled.png", height:7, width:4},
+ submenuImage:{src:"[SKIN]submenu.png", height:7, width:4}
+ });
+
+ isc.addProperties(isc.Menu.ICON_FIELD, {
+ baseStyle:"menuIconField",
+ width:24
+ });
+
+ isc.Menu.TITLE_FIELD.baseStyle = "menuTitleField";
+ }
+
+ if (isc.PickTreeItem) {
+ isc.PickTreeItem.addProperties({
+ buttonDefaults:{ height:21 }
+ });
+ }
+
+ isc.Label.addProperties({
+ showFocused:false
+ });
+
+ //----------------------------------------
+ // 3) Resizebars
+ //----------------------------------------
+ // StretchImgSplitbar class renders as resize bar
+ isc.StretchImgSplitbar.addProperties({
+ capSize:10,
+ showGrip:true,
+ showOver:false
+ });
+
+ isc.Snapbar.addProperties({
+ hBaseStyle:"hSplitbar",
+ vBaseStyle:"vSplitbar",
+ gripBreadth:3,
+ gripLength:20,
+ hSrc:"[SKIN]hsplit.png",
+ items:[
+ {name:"blank", width:"*", height:"*"}
+ ],
+ showClosedGrip:false,
+ showDown:false,
+ showDownGrip:false,
+ showRollOver:false,
+ vSrc:"[SKIN]vsplit.png"
+ });
+
+ isc.Layout.addProperties({
+ resizeBarSize:5,
+ // Use the Snapbar as a resizeBar by default - subclass of Splitbar that
+ // shows interactive (closed/open) grip images
+ // Other options include the Splitbar, StretchImgSplitbar or ImgSplitbar
+ resizeBarClass:"Snapbar"
+ })
+
+ if (isc.SectionItem) {
+ isc.SectionItem.addProperties({
+ height:26
+ });
+ }
+ if (isc.SectionStack) {
+ isc.SectionStack.addProperties({
+ headerHeight:26
+ });
+ }
+
+ if (isc.ListGrid) {
+ isc.ListGrid.addProperties({
+ alternateRecordStyles:true,
+ alternateBodyStyleName:null,
+ backgroundColor:"#e7e7e7",
+ cellHeight:22,
+ checkboxFieldImageHeight:13,
+ checkboxFieldImageWidth:13,
+ editFailedCSSText:"color:FF6347;",
+ errorIconSrc:"[SKINIMG]actions/exclamation.png",
+ expansionFieldImageHeight:16,
+ expansionFieldImageWidth:16,
+ expansionFieldFalseImage:"[SKINIMG]/ListGrid/row_collapsed.png",
+ expansionFieldTrueImage:"[SKINIMG]/ListGrid/row_expanded.png",
+ expansionFieldImageWidth: 16,
+ expansionFieldImageHeight: 16,
+ groupIcon:"[SKINIMG]/ListGrid/group.png",
+ groupIconPadding:3,
+ groupLeadingIndent:1,
+ headerBackgroundColor:null,
+ headerBaseStyle:"headerButton",
+ headerHeight:23,
+ headerMenuButtonIcon:"[SKINIMG]ListGrid/sort_descending.png",
+ headerMenuButtonConstructor:"HeaderMenuButton",
+ headerMenuButtonWidth:17,
+ normalCellHeight:22,
+ showHeaderMenuButton:true,
+ sortAscendingImage:{src:"[SKINIMG]ListGrid/sort_ascending.png", width:9, height:6},
+ sortDescendingImage:{src:"[SKINIMG]ListGrid/sort_descending.png", width:9, height:6},
+ summaryRowHeight:21,
+ tallBaseStyle:"tallCell"
+ });
+ }
+
+ if (isc.TreeGrid) {
+ isc.TreeGrid.addProperties({
+ alternateRecordStyles:false,
+ folderIcon:"[SKIN]folder.png",
+ manyItemsImage:"[SKIN]folder_file.png",
+ nodeIcon:"[SKIN]file.png",
+ normalBaseStyle:"treeCell",
+ openerIconSize:22,
+ openerImage:"[SKIN]opener.png",
+ sortAscendingImage:{src:"[SKINIMG]ListGrid/sort_ascending.png", width:9, height:6},
+ sortDescendingImage:{src:"[SKINIMG]ListGrid/sort_descending.png", width:9, height:6},
+ tallBaseStyle:"treeTallCell"
+ });
+ }
+
+ if (isc.TabSet) {
+ isc.TabSet.addProperties({
+ closeTabIconSize:12,
+ paneContainerClassName:"tabSetContainer",
+ paneMargin:5,
+ pickerButtonSize:20,
+ pickerButtonSrc:"[SKIN]picker.png",
+ showScrollerRollOver:false,
+ scrollerButtonSize:19,
+ scrollerSrc:"[SKIN]scroll.png",
+ showEdges:false,
+ symmetricScroller:false,
+ symmetricPickerButton:false,
+ tabBarThickness:24,
+ useSimpleTabs:true
+ });
+
+ // In Netscape Navigator 4.7x, set the backgroundColor directly since the css
+ // background colors are not reliable
+ if (isc.Browser.isNav) {
+ isc.TabSet.addProperties({paneContainerDefaults:{backgroundColor:"#FFFFFF"}});
+ }
+
+ isc.TabBar.addProperties({
+ baseLineConstructor:"Canvas",
+ baseLineProperties:{ backgroundColor:"#C0C3C7", height:1, overflow:"hidden" },
+ baseLineThickness:1,
+ bottomStyleName:"tabBarBottom",
+ layoutEndMargin:5,
+ layoutStartMargin:5,
+ leadingMargin:5,
+ leftStyleName:"tabBarLeft",
+ membersMargin:1,
+ rightStyleName:"tabBarRight",
+ styleName:"tabBar",
+ topStyleName:"tabBarTop"
+ });
+ }
+
+ if (isc.ImgTab) isc.ImgTab.addProperties({capSize:6});
+
+ if (isc.Window) {
+ isc.Window.addProperties({
+ backgroundColor:null,
+ bodyStyle:"windowBody",
+ layoutBottomMargin:4,
+ layoutLeftMargin:4,
+ layoutRightMargin:4,
+ layoutTopMargin:1,
+ modalMaskOpacity:10,
+ membersMargin:0,
+ styleName:"windowBackground",
+ showHeaderBackground:false,
+ showFooter:false
+ });
+
+ isc.Window.changeDefaults("headerDefaults", {
+ height:20,
+ layoutMargin:0
+ });
+
+ isc.Window.changeDefaults("resizerDefaults", { src:"[SKIN]/Window/resizer.png" });
+
+ isc.Window.changeDefaults("headerIconDefaults", {
+ height:15,
+ src:"[SKIN]/Window/headerIcon.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("restoreButtonDefaults", {
+ height:15,
+ showDown:false,
+ showRollOver:true,
+ src:"[SKIN]/headerIcons/cascade.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("closeButtonDefaults", {
+ height:15,
+ showDown:false,
+ showRollOver:true,
+ src:"[SKIN]/headerIcons/close.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("maximizeButtonDefaults", {
+ height:15,
+ showRollOver:true,
+ src:"[SKIN]/headerIcons/maximize.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("minimizeButtonDefaults", {
+ height:15,
+ showDown:false,
+ showRollOver:true,
+ src:"[SKIN]/headerIcons/minimize.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("toolbarDefaults", { buttonConstructor:"IButton" });
+
+ if (isc.ColorPicker) {
+ isc.ColorPicker.addProperties({
+ layoutMargin:2
+ });
+ }
+ }
+
+ if (isc.Dialog) {
+ isc.Dialog.addProperties({
+ bodyColor:"#FFFFFF",
+ bodyStyle:"windowBody",
+ layoutBottomMargin:4,
+ layoutLeftMargin:4,
+ layoutRightMargin:4,
+ layoutTopMargin:1,
+ modalMaskOpacity:10,
+ membersMargin:0,
+ styleName:"windowBackground",
+ showHeaderBackground:false,
+ showFooter:false
+ });
+
+ // even though Dialog inherits from Window, we need a separate changeDefaults block
+ // because Dialog defines its own toolbarDefaults
+ isc.Dialog.changeDefaults("toolbarDefaults", {
+ buttonConstructor:"IButton",
+ height:42, // 10px margins + 22px button
+ membersMargin:10
+ });
+
+ if (isc.Dialog.Warn && isc.Dialog.Warn.toolbarDefaults) {
+ isc.addProperties(isc.Dialog.Warn.toolbarDefaults, {
+ buttonConstructor:"IButton",
+ height:42,
+ membersMargin:10
+ });
+ }
+ }
+
+ // Dynamic form skinning
+ if (isc.SectionHeader) {
+ isc.SectionHeader.addProperties({
+ icon:"[SKIN]/SectionHeader/opener.png"
+ });
+ }
+
+ if (isc.FormItem) {
+ isc.FormItem.addProperties({
+ defaultIconSrc:"[SKIN]/DynamicForm/default_formItem_icon.png",
+ errorIconSrc:"[SKINIMG]actions/exclamation.png",
+ iconHeight:18,
+ iconVAlign:"middle",
+ iconWidth:18
+ });
+ }
+
+ if (isc.CheckboxItem) {
+ isc.CheckboxItem.addProperties({
+ checkedImage:"[SKINIMG]/DynamicForm/checked.png",
+ partialSelectedImage:"[SKINIMG]/DynamicForm/partialcheck.png",
+ showValueIconFocused:false,
+ showValueIconOver:false,
+ uncheckedImage:"[SKINIMG]/DynamicForm/unchecked.png",
+ unsetImage:"[SKINIMG]/DynamicForm/unsetcheck.png",
+ valueIconWidth:13,
+ valueIconHeight:13
+ });
+ }
+
+ if (isc.TextItem) {
+ isc.TextItem.addProperties({
+ height:22,
+ showFocused:true
+ });
+ }
+
+ if (isc.TextAreaItem) {
+ isc.TextAreaItem.addProperties({
+ showFocused:true
+ });
+ }
+
+ if (isc.SelectItem) {
+ isc.SelectItem.addProperties({
+ height:22,
+ pickerIconSrc:"[SKIN]/pickers/comboBoxPicker.png",
+ pickerIconWidth:18,
+ showFocusedPickerIcon:false,
+ textBoxStyle:"selectItemText"
+ });
+ }
+
+ if (isc.ComboBoxItem) {
+ isc.ComboBoxItem.addProperties({
+ height:22,
+ pendingTextBoxStyle:"comboBoxItemPendingText",
+ pickerIconSrc:"[SKIN]/pickers/comboBoxPicker.png",
+ pickerIconWidth:18,
+ showFocusedPickerIcon:false,
+ textBoxStyle:"selectItemText"
+ });
+ }
+
+ // used by SelectItem and ComboBoxItem for picklist
+ if (isc.ScrollingMenu) {
+ isc.ScrollingMenu.addProperties({
+ shadowDepth:5,
+ showShadow:false
+ });
+ }
+
+ if (isc.DateItem) {
+ isc.DateItem.addProperties({
+ height:22,
+ pickerIconHeight:14,
+ pickerIconSrc:"[SKIN]/DynamicForm/date_control.png",
+ pickerIconWidth:16
+ });
+ }
+
+ if (isc.SpinnerItem) {
+ isc.SpinnerItem.addProperties({
+ height:22,
+ textBoxStyle:"selectItemText"
+ });
+
+ isc.SpinnerItem.INCREASE_ICON = isc.addProperties(isc.SpinnerItem.INCREASE_ICON,
+ {
+ height:11,
+ imgOnly:true,
+ showDown:false,
+ showFocused:false,
+ showRollOver:false,
+ src:"[SKIN]/DynamicForm/spinner_control_increase.png",
+ width:16
+ });
+
+ isc.SpinnerItem.DECREASE_ICON = isc.addProperties(isc.SpinnerItem.DECREASE_ICON,
+ {
+ height:11,
+ imgOnly:true,
+ showDown:false,
+ showFocused:false,
+ showRollOver:false,
+ src:"[SKIN]/DynamicForm/spinner_control_decrease.png",
+ width:16
+ });
+ }
+
+ if (isc.PopUpTextAreaItem) {
+ isc.PopUpTextAreaItem.addProperties({
+ popUpIconHeight:16,
+ popUpIconSrc:"[SKIN]/DynamicForm/text_control.png",
+ popUpIconWidth:16
+ });
+ }
+
+ if (isc.ToolbarItem && isc.IAutoFitButton) {
+ isc.ToolbarItem.addProperties({
+ buttonConstructor:isc.IAutoFitButton,
+ buttonProperties:{ autoFitDirection:isc.Canvas.BOTH }
+ });
+ }
+
+ if (isc.DateRangeDialog) {
+ isc.DateRangeDialog.changeDefaults("headerIconProperties", { src:"[SKIN]/DynamicForm/date_control.png" });
+ }
+
+ if (isc.MiniDateRangeItem) {
+ isc.MiniDateRangeItem.changeDefaults("pickerIconDefaults", { src:"[SKIN]/DynamicForm/date_control.png" });
+ }
+
+ if (isc.RelativeDateItem) {
+ isc.RelativeDateItem.changeDefaults("pickerIconDefaults", { src:"[SKIN]/DynamicForm/date_control.png" });
+ }
+
+ // Native FILE INPUT items are rendered differently in Safari from other browsers
+ // Don't show standard textbox styling around them as it looks odd
+ if (isc.UploadItem && isc.Browser.isSafari) {
+ isc.UploadItem.addProperties({
+ textBoxStyle:"normal"
+ });
+ }
+
+ if (isc.DateChooser) {
+ isc.DateChooser.addProperties({
+ alternateWeekStyles:false,
+ backgroundColor:"#FFFFFF",
+ baseNavButtonStyle:"dateChooserNavButton",
+ baseWeekdayStyle:"dateChooserWeekday",
+ baseWeekendStyle:"dateChooserWeekend",
+ baseBottomButtonStyle:"dateChooserBottomButton",
+ edgeCenterBackgroundColor:"#FFFFFF",
+ headerStyle:"dateChooserButton",
+ nextMonthIcon:"[SKINIMG]/DateChooser/arrow_right.png",
+ nextMonthIconHeight:16,
+ nextMonthIconWidth:16,
+ nextYearIcon:"[SKINIMG]/DateChooser/doubleArrow_right.png",
+ nextYearIconHeight:16,
+ nextYearIconWidth:16,
+ prevMonthIcon:"[SKINIMG]/DateChooser/arrow_left.png",
+ prevMonthIconHeight:16,
+ prevMonthIconWidth:16,
+ prevYearIcon:"[SKINIMG]/DateChooser/doubleArrow_left.png",
+ prevYearIconHeight:16,
+ prevYearIconWidth:16,
+ showDoubleYearIcon:false,
+ showEdges:false,
+ skinImgDir:"images/DateChooser/",
+ todayButtonHeight:20,
+ weekendHeaderStyle:"dateChooserWeekendButton",
+ styleName:"dateChooserBorder"
+ });
+ }
+
+ if (isc.ToolStrip) {
+ isc.ToolStrip.addProperties({
+ defaultLayoutAlign:"center",
+ height:30
+ });
+
+ isc.ToolStripResizer.addProperties({
+ backgroundColor:"#f6f6f6"
+ });
+
+ isc.ToolStrip.changeDefaults("formWrapperDefaults",{cellPadding:3});
+ }
+
+ if (isc.ToolStripMenuButton) {
+
+ isc.overwriteClass("ToolStripMenuButton", "MenuButton").addProperties({
+ autoFit:true,
+ baseStyle:"toolbarButton",
+ height:22,
+ labelVPad:0,
+ showDown:true,
+ showRollOver:true,
+ showTitle:false
+ });
+ }
+
+ if (isc.ToolStripButton) {
+
+ isc.overwriteClass("ToolStripButton", "Button").addProperties({
+ autoFit:true,
+ baseStyle:"toolbarButton",
+ height:22,
+ labelVPad:0,
+ showTitle:false,
+ showRollOver:true,
+ showDown:true,
+ title:null
+ });
+ }
+
+ if (isc.RichTextEditor) {
+ isc.RichTextEditor.addProperties({
+ showEdges:false,
+ styleName:"richTextEditorBorder"
+ });
+ }
+
+ if (isc.Slider) {
+ isc.Slider.addProperties({
+ hThumbStyle:"hSliderThumb",
+ hTrackStyle:"hSliderTrack",
+ thumbConstructor:"StatefulCanvas",
+ thumbThickWidth:14,
+ thumbThinWidth:14,
+ trackConstructor:"Canvas",
+ trackWidth:5,
+ vThumbStyle:"vSliderThumb",
+ vTrackStyle:"vSliderTrack"
+ });
+ }
+
+
+ if (isc.TileGrid) {
+ isc.TileGrid.addProperties({
+ showEdges:false,
+ styleName:null,
+ valuesShowRollOver:true
+ });
+ }
+
+ if (isc.Calendar) {
+ isc.Calendar.changeDefaults("datePickerButtonDefaults", {
+ showDown:false,
+ showOver:false,
+ src:"[SKIN]/DynamicForm/date_control.png"
+ });
+
+ isc.Calendar.changeDefaults("controlsBarDefaults", {
+ height:10,
+ layoutBottomMargin:10
+ });
+ }
+
+ if (isc.Hover) {
+ isc.addProperties(isc.Hover.hoverCanvasDefaults, {
+ shadowDepth:5,
+ showShadow:false
+ });
+ }
+
+ //indicate type of media used for various icon types
+ isc.pickerImgType = "gif";
+ isc.transferImgType = "gif";
+ isc.headerImgType = "gif";
+
+ isc.Page.checkBrowserAndRedirect("[SKIN]/unsupported_browser.html");
+
+ } else {
+
+ //============================================================
+ // Component Skinning
+ //============================================================
+ // 1) Scrollbars
+ // 2) Buttons
+ // 3) Resizebars
+ // 4) Sections
+ // 5) Progressbars
+ // 6) TabSets
+ // 7) Windows
+ // 8) Dialogs
+ // 9) Pickers
+ // 10) Menus
+ // 11) Hovers
+ // 12) ListGrids
+ // 13) TreeGrids
+ // 14) Form controls
+ // 15) Drag & Drop
+ // 16) Edges
+ // 17) Sliders
+ // 18) TileList
+ // 19) CubeGrid
+ // 20) FilterBuilder
+ // 21) Printing
+ // 22) ToolStrip
+ //============================================================
+
+ isc.Canvas.addProperties({
+ groupBorderCSS:"1px solid #A7ABB4"
+ });
+
+ if(isc.Browser.isIE && isc.Browser.version >= 7) {
+ isc.Canvas.setAllowExternalFilters(false);
+ isc.Canvas.setNeverUseFilters(true);
+
+ if(isc.Window) {
+ isc.Window.addProperties({
+ modalMaskOpacity:null,
+ modalMaskStyle:"normal"
+ });
+
+ isc.Window.changeDefaults("modalMaskDefaults", { src:"[SKIN]opacity.png" });
+ }
+ }
+
+ if(isc.RPCManager) {
+ isc.RPCManager.addClassProperties({ promptStyle:"cursor" });
+ }
+
+ //----------------------------------------
+ // 1) Scrollbars
+ //----------------------------------------
+ isc.Canvas.addProperties({
+ cornerSize:16,
+ scrollbarSize:16,
+ showCustomScrollbars:true
+ });
+
+ isc.ScrollThumb.addProperties({
+ backgroundColor:"transparent",
+ capSize:2,
+ gripBreadth:10,
+ gripLength:10,
+ hSrc:"[SKIN]hthumb.png",
+ showGrip:true,
+ showRollOver:true,
+ vSrc:"[SKIN]vthumb.png"
+ });
+
+ isc.Scrollbar.addProperties({
+ backgroundColor:"#FFFFFF",
+ btnSize:18,
+ hSrc:"[SKIN]hscroll.png",
+ showRollOver:true,
+ thumbInset:0,
+ thumbMinSize:20,
+ thumbOverlap:2,
+ vSrc:"[SKIN]vscroll.png"
+ });
+
+ //----------------------------------------
+ // 2) Buttons
+ //----------------------------------------
+
+ // "IButton" is the new standard button class for SmartClient applications. Application
+ // code should use IButton instead of Button for all standalone buttons. Other skins may
+ // map IButton directly to Button, so this single class will work everywhere. Button remains
+ // for internal and advanced uses (eg if you need to mix both CSS-based and image-based
+ // standalone buttons in the same application).
+ isc.defineClass("IButton", "StretchImgButton").addProperties({
+ capSize:4,
+ height:22,
+ showFocused:true,
+ showFocusedAsOver:true,
+ src:"[SKIN]button/button.png",
+ titleStyle:"buttonTitle",
+ vertical:false,
+ width:100
+ });
+
+ isc.defineClass("IAutoFitButton", "IButton").addProperties({
+ autoFit:true,
+ autoFitDirection:isc.Canvas.HORIZONTAL
+ });
+
+ if (isc.IButton.markAsFrameworkClass != null) isc.IButton.markAsFrameworkClass();
+ if (isc.IAutoFitButton.markAsFrameworkClass != null) isc.IAutoFitButton.markAsFrameworkClass();
+
+ isc.ImgButton.addProperties({
+ showFocused:true,
+ showFocusedAsOver:true
+ });
+
+ isc.defineClass("HeaderImgButton", "ImgButton").addProperties({
+ showDown:false,
+ showFocused:false,
+ showFocusedAsOver:false,
+ showRollOver:false
+ });
+
+ isc.Button.addProperties({
+ height:22,
+ showFocused:true,
+ showFocusedAsOver:false
+ });
+
+ isc.Label.addProperties({
+ showFocused:false
+ });
+
+ //----------------------------------------
+ // 3) Resizebars
+ //----------------------------------------
+ // StretchImgSplitbar class renders as resize bar with
+ // end caps, body, grip
+ isc.StretchImgSplitbar.addProperties({
+ capSize:10,
+ showGrip:true
+ });
+
+ // ImgSplitbar renders as resizebar with resize grip only
+ isc.ImgSplitbar.addProperties({
+
+ });
+
+ isc.Snapbar.addProperties({
+ gripBreadth:3,
+ gripLength:20,
+ hSrc:"[SKIN]hsplit.png",
+ items:[
+ {name:"bg", width:"*", height:"*"}
+ ],
+ showClosedGrip:false,
+ showDown:false,
+ showDownGrip:false,
+ showRollOver:false,
+ vSrc:"[SKIN]vsplit.png"
+ });
+
+ isc.Layout.addProperties({
+ resizeBarSize:5,
+ // Use the Snapbar as a resizeBar by default - subclass of Splitbar that
+ // shows interactive (closed/open) grip images
+ // Other options include the Splitbar, StretchImgSplitbar or ImgSplitbar
+ resizeBarClass:"Snapbar"
+ });
+
+
+ //----------------------------------------
+ // 4) Sections
+ //----------------------------------------
+ if (isc.SectionItem) {
+ isc.SectionItem.addProperties({
+ height:26,
+ sectionHeaderClass:"ImgSectionHeader"
+ });
+ }
+ if (isc.SectionStack) {
+ isc.SectionStack.addProperties({
+ backgroundColor:null,
+ headerHeight:26,
+ sectionHeaderClass:"ImgSectionHeader"
+ });
+
+ isc.ImgSectionHeader.changeDefaults("backgroundDefaults", {
+ baseStyle:"imgSectionHeader",
+ backgroundColor:"transparent",
+ capSize:2,
+ icon:"[SKIN]SectionHeader/opener.png",
+ iconSize:16,
+ showDisabledIcon:false,
+ showDown:false,
+ showRollOver:false,
+ showRollOverIcon:false,
+ src:"[SKIN]SectionHeader/header.png",
+ titleStyle:"imgSectionHeaderTitle"
+ });
+
+ isc.SectionHeader.addProperties({
+ icon:"[SKIN]SectionHeader/opener.png",
+ iconSize:16
+ });
+ }
+
+ //----------------------------------------
+ // 5) Progressbars
+ //----------------------------------------
+ if (isc.Progressbar) {
+ isc.Progressbar.addProperties({
+ breadth:24,
+ horizontalItems:[
+ {name:"h_start",size:2},
+ {name:"h_stretch",size:0},
+ {name:"h_end",size:2},
+ {name:"h_empty_start",size:2},
+ {name:"h_empty_stretch",size:0},
+ {name:"h_empty_end",size:2}
+ ],
+ length:300,
+ verticalItems:[
+ {name:"v_empty_start",size:2},
+ {name:"v_empty_stretch",size:0},
+ {name:"v_empty_end",size:0},
+ {name:"v_start",size:2},
+ {name:"v_stretch",size:0},
+ {name:"v_end",size:2}
+ ]
+ });
+ }
+
+ //----------------------------------------
+ // 6) TabSets
+ //----------------------------------------
+ if (isc.TabSet) {
+ isc.TabSet.addProperties({
+ closeTabIconSize:12,
+ paneContainerClassName:"tabSetContainer",
+ paneMargin:5,
+ pickerButtonSize:20,
+ pickerButtonSrc:"[SKIN]picker.png",
+ scrollerSrc:"[SKIN]scroll.png",
+ scrollerButtonSize:19,
+ showEdges:false,
+ showScrollerRollOver:false,
+ symmetricPickerButton:false,
+ symmetricScroller:false,
+ tabBarThickness:24
+ });
+
+ isc.TabSet.changeDefaults("paneContainerDefaults", {
+ showEdges:false
+ });
+
+ isc.TabBar.addProperties({
+ baseLineConstructor:"Canvas",
+ baseLineProperties:{
+ backgroundColor:"#C0C3C7",
+ height:1,
+ overflow:"hidden"
+ },
+ layoutEndMargin:5,
+ layoutStartMargin:5,
+ membersMargin:1,
+ styleName:"tabBar"
+ });
+ }
+
+ if (isc.ImgTab) {
+ isc.ImgTab.addProperties({
+ capSize:6,
+ showDisabled:true,
+ showDisabledIcon:false,
+ showDown:false,
+ showRollOver:true,
+ src:"[SKIN]tab.png",
+ titleStyle:"tabTitle"
+ });
+ }
+
+
+ //----------------------------------------
+ // 7) Windows
+ //----------------------------------------
+ if (isc.Window) {
+ isc.Window.addProperties({
+ backgroundColor:null,
+ bodyColor:"transparent",
+ bodyStyle:"windowBody",
+ border:null,
+ customEdges:null,
+ edgeBottom:6,
+ edgeCenterBackgroundColor:"#FFFFFF",
+ edgeImage:"[SKINIMG]Window/window.png",
+ edgeOffsetBottom:5,
+ edgeOffsetLeft:5,
+ edgeOffsetRight:5,
+ edgeOffsetTop:2,
+ edgeSize:6,
+ edgeTop:23,
+ minimizeHeight:29,
+ layoutMargin:0,
+ membersMargin:0,
+ shadowDepth:5,
+ showEdges:true,
+ showFooter:false,
+ showHeaderBackground:false, // part of edges
+ showHeaderIcon:true,
+ showShadow:false,
+ styleName:"normal"
+ });
+
+ isc.Window.changeDefaults("headerDefaults", {
+ layoutMargin:0,
+ height:20
+ });
+
+ isc.Window.changeDefaults("resizerDefaults", {
+ src:"[SKIN]/Window/resizer.png"
+ });
+
+ isc.Window.changeDefaults("headerIconDefaults", {
+ height:15,
+ src:"[SKIN]/Window/headerIcon.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("restoreButtonDefaults", {
+ height:15,
+ showDown:false,
+ showRollOver:true,
+ src:"[SKIN]/headerIcons/cascade.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("closeButtonDefaults", {
+ height:15,
+ showDown:false,
+ showRollOver:true,
+ src:"[SKIN]/headerIcons/close.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("maximizeButtonDefaults", {
+ height:15,
+ showRollOver:true,
+ src:"[SKIN]/headerIcons/maximize.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("minimizeButtonDefaults", {
+ height:15,
+ showDown:false,
+ showRollOver:true,
+ src:"[SKIN]/headerIcons/minimize.png",
+ width:15
+ });
+
+ isc.Window.changeDefaults("toolbarDefaults", {
+ buttonConstructor:"IButton"
+ });
+
+ if (isc.ColorPicker) {
+ isc.ColorPicker.addProperties({
+ layoutMargin:0
+ });
+ }
+
+ //----------------------------------------
+ // 8) Dialogs
+ //----------------------------------------
+ if (isc.Dialog) {
+ isc.Dialog.addProperties({
+ backgroundColor:null,
+ bodyColor:"transparent",
+ bodyStyle:"windowBody",
+ border:null,
+ customEdges:null,
+ edgeBottom:6,
+ edgeCenterBackgroundColor:"#FFFFFF",
+ edgeImage:"[SKINIMG]Window/window.png",
+ edgeOffsetBottom:5,
+ edgeOffsetRight:5,
+ edgeOffsetTop:2,
+ edgeSize:6,
+ edgeTop:23,
+ layoutMargin:0,
+ membersMargin:0,
+ shadowDepth:5,
+ showEdges:true,
+ showFooter:false,
+ showHeaderBackground:false, // part of edges
+ showShadow:false,
+ styleName:"normal"
+ });
+
+ // even though Dialog inherits from Window, we need a separate changeDefaults block
+ // because Dialog defines its own toolbarDefaults
+ isc.Dialog.changeDefaults("toolbarDefaults", {
+ buttonConstructor:"IButton",
+ height:42, // 10px margins + 22px button
+ membersMargin:10
+ });
+
+ if (isc.Dialog.Warn && isc.Dialog.Warn.toolbarDefaults) {
+ isc.addProperties(isc.Dialog.Warn.toolbarDefaults, {
+ buttonConstructor:"IButton",
+ height:42,
+ membersMargin:10
+ });
+ }
+ }
+ } // end isc.Window
+
+ //----------------------------------------
+ // 9) Pickers
+ //----------------------------------------
+ // add bevels and shadows to all pickers
+ isc.__pickerDefaults = {
+ backgroundColor:"#FFFFFF",
+ edgeImage:"[SKINIMG]Window/window.png",
+ edgeSize:6,
+ shadowDepth:6,
+ shadowOffset:5,
+ showEdges:true,
+ showShadow:false
+ }
+
+ if (isc.ButtonTable) {
+ isc.ButtonTable.addProperties({
+ backgroundColor:"#FFFFFF"
+ });
+ }
+
+ if (isc.FormItem) {
+ isc.FormItem.changeDefaults("pickerDefaults", isc.__pickerDefaults);
+
+ isc.FormItem.addProperties({
+ defaultIconSrc:"[SKIN]/DynamicForm/default_formItem_icon.png"
+ });
+ }
+
+ if (isc.CheckboxItem) {
+ isc.CheckboxItem.addProperties({
+ checkedImage:"[SKINIMG]/DynamicForm/checked.png",
+ partialSelectedImage:"[SKINIMG]/DynamicForm/partialcheck.png",
+ showValueIconFocused:false,
+ showValueIconOver:false,
+ uncheckedImage:"[SKINIMG]/DynamicForm/unchecked.png",
+ unsetImage:"[SKINIMG]/DynamicForm/unsetcheck.png",
+ valueIconHeight:13,
+ valueIconWidth:13
+ });
+ }
+
+ if(isc.RelationItem) {
+ isc.RelationItem.changeDefaults("removeButtonDefaults", {
+ src:"[SKIN]DynamicForm/Remove_icon.png"
+ });
+ }
+
+ if (isc.DateChooser) {
+ isc.DateChooser.addProperties({
+ alternateWeekStyles:false,
+ backgroundColor:null,
+ baseBottomButtonStyle:"dateChooserBottomButton",
+ baseNavButtonStyle:"dateChooserNavButton",
+ baseWeekdayStyle:"dateChooserWeekday",
+ baseWeekendStyle:"dateChooserWeekend",
+ edgeBottom:5,
+ edgeCenterBackgroundColor:"#FFFFFF",
+ edgeImage:"[SKINIMG]Window/window.png",
+ edgeOffsetTop:1,
+ edgeOffsetRight:5,
+ edgeOffsetLeft:5,
+ edgeOffsetBottom:5,
+ edgeSize:6,
+ edgeTop:26,
+ headerHeight:24,
+ headerStyle:"dateChooserButton",
+ nextMonthIcon:"[SKIN]arrow_right.png",
+ nextMonthIconHeight:16,
+ nextMonthIconWidth:16,
+ nextYearIcon:"[SKIN]doubleArrow_right.png",
+ nextYearIconHeight:16,
+ nextYearIconWidth:16,
+ prevMonthIcon:"[SKIN]arrow_left.png",
+ prevMonthIconHeight:16,
+ prevMonthIconWidth:16,
+ prevYearIcon:"[SKIN]doubleArrow_left.png",
+ prevYearIconHeight:16,
+ prevYearIconWidth:16,
+ shadowDepth:6,
+ shadowOffset:5,
+ showDoubleYearIcon:false,
+ showEdges:true,
+ showShadow:false,
+ skinImgDir:"images/DateChooser/",
+ todayButtonHeight:20,
+ weekendHeaderStyle:"dateChooserWeekendButton"
+ });
+ }
+
+ if (isc.MultiFilePicker) {
+ isc.MultiFilePicker.addProperties({
+ backgroundColor:"#C7C7C7"
+ });
+ }
+
+ if (isc.RelationPicker) {
+ isc.RelationPicker.addProperties({
+ backgroundColor:"#C7C7C7"
+ });
+ }
+
+ // Native FILE INPUT items are rendered differently in Safari from other browsers
+ // Don't show standard textbox styling around them as it looks odd
+ if (isc.UploadItem && isc.Browser.isSafari) {
+ isc.UploadItem.addProperties({
+ textBoxStyle:"normal"
+ });
+ }
+
+ //----------------------------------------
+ // 10) Menus
+ //----------------------------------------
+ if (isc.Menu) {
+ isc.Menu.addProperties({
+ bodyStyleName:"gridBody",
+ bodyBackgroundColor:null,
+ cellHeight:22,
+ checkmarkDisabledImage:{src:"[SKIN]check_disabled.png", width:7, height:6},
+ checkmarkImage:{src:"[SKIN]check.png", width:9, height:8},
+ fastCellUpdates:false,
+ iconBodyStyleName:"menuMain",
+ shadowDepth:5,
+ showEdges:false,
+ showShadow:false,
+ submenuDisabledImage:{src:"[SKIN]submenu_disabled.png", height:7, width:4},
+ submenuImage:{src:"[SKIN]submenu.png", height:7, width:4}
+ });
+
+ isc.addProperties(isc.Menu.ICON_FIELD, {
+ baseStyle:"menuIconField",
+ width:24
+ });
+
+ isc.Menu.TITLE_FIELD.baseStyle = "menuTitleField";
+ }
+
+ if (isc.MenuButton) {
+ isc.MenuButton.addProperties({
+ baseStyle:"menuButton",
+ iconHeight:4,
+ iconWidth:7,
+ menuButtonImage:"[SKIN]menu_button.png",
+ menuButtonImageUp:"[SKIN]menu_button_up.png",
+ showFocusedAsOver:true
+ });
+ }
+
+ if (isc.IMenuButton) {
+ isc.IMenuButton.addProperties({
+ capSize:4,
+ height:22,
+ iconHeight:4,
+ iconWidth:7,
+ menuButtonImage:"[SKIN]menu_button.png",
+ menuButtonImageUp:"[SKIN]menu_button_up.png",
+ showFocused:true,
+ showFocusedAsOver:true,
+ src:"[SKIN]button/button.png",
+ titleStyle:"buttonTitle",
+ vertical:false,
+ width:100
+ });
+ }
+
+ if (isc.SelectionTreeMenu) {
+ isc.SelectionTreeMenu.addProperties({
+ bodyBackgroundColor:null,
+ bodyStyleName:"treeMenuBody",
+ showIcons:false,
+ showKeys:false
+ });
+ }
+
+ //----------------------------------------
+ // 11) Hovers
+ //----------------------------------------
+ if (isc.Hover) {
+ isc.addProperties(isc.Hover.hoverCanvasDefaults, {
+ shadowDepth:5,
+ showShadow:false
+ });
+ }
+
+ //----------------------------------------
+ // 12) ListGrids
+ //----------------------------------------
+ if (isc.ListGrid) {
+ isc.ListGrid.addProperties({
+ alternateBodyStyleName:null,
+ alternateRecordStyles:true,
+ backgroundColor:null,
+ bodyBackgroundColor:null,
+ bodyStyleName:"gridBody",
+ cellHeight:22,
+ checkboxFieldImageHeight:13,
+ checkboxFieldImageWidth:13,
+ editFailedCSSText:"color:FF6347;",
+ errorIconSrc:"[SKINIMG]actions/exclamation.png",
+ expansionFieldTrueImage:"[SKINIMG]/ListGrid/row_expanded.png",
+ expansionFieldFalseImage:"[SKINIMG]/ListGrid/row_collapsed.png",
+ groupIcon:"[SKINIMG]/ListGrid/group.png",
+ groupIconPadding:3,
+ groupLeadingIndent:1,
+ headerBackgroundColor:null,
+ headerBarStyle:"headerBar",
+ headerBaseStyle:"headerButton", // bgcolor tint and borders
+ headerButtonConstructor:"ImgButton",
+ headerHeight:23,
+ headerMenuButtonConstructor:"HeaderImgButton",
+ headerMenuButtonIcon:"[SKINIMG]/ListGrid/sort_descending.png",
+ headerMenuButtonIconWidth: 9,
+ headerMenuButtonIconHeight: 6,
+ headerMenuButtonSrc:"[SKIN]/ListGrid/header_menu.png",
+ headerMenuButtonWidth:17,
+ headerTitleStyle:"headerTitle",
+ normalCellHeight:22,
+ sortAscendingImage:{src:"[SKIN]sort_ascending.png", width:9, height:6},
+ sortDescendingImage:{src:"[SKIN]sort_descending.png", width:9, height:6},
+ sorterConstructor:"ImgButton",
+ showHeaderMenuButton:true,
+ summaryRowHeight:21,
+ tallBaseStyle:"tallCell"
+ });
+
+ isc.ListGrid.changeDefaults("sorterDefaults", {
+ baseStyle:"sorterButton",
+ showFocused:false,
+ src:"[SKIN]ListGrid/header.png"
+ });
+
+ isc.ListGrid.changeDefaults("headerButtonDefaults", {
+ showDown:false,
+ showFocused:false,
+ showTitle:true,
+ src:"[SKIN]ListGrid/header.png"
+ });
+
+ isc.ListGrid.changeDefaults("headerMenuButtonDefaults", {
+ showDown:false,
+ showTitle:true,
+ src:"[SKIN]ListGrid/header.png"
+ });
+ }
+
+ if (isc.TreeGrid) {
+ isc.TreeGrid.addProperties({
+ alternateRecordStyles:false,
+ normalBaseStyle:"treeCell",
+ openerImage:"[SKIN]opener.png",
+ sortAscendingImage:{src:"[SKINIMG]ListGrid/sort_ascending.png", width:9, height:6},
+ sortDescendingImage:{src:"[SKINIMG]ListGrid/sort_descending.png", width:9, height:6},
+ tallBaseStyle:"treeTallCell"
+ });
+ }
+
+ if(isc.MultiSortPanel) {
+ isc.MultiSortPanel.changeDefaults("levelUpButtonDefaults", {
+ height:22,
+ src:"[SKINIMG]TransferIcons/up.png",
+ width:24
+ });
+ isc.MultiSortPanel.changeDefaults("levelDownButtonDefaults", {
+ height:22,
+ src:"[SKINIMG]TransferIcons/down.png",
+ width:24
+ });
+ }
+
+ //----------------------------------------
+ // 13) TreeGrids
+ //----------------------------------------
+ if (isc.TreeGrid) {
+ isc.TreeGrid.addProperties({
+ folderIcon:"[SKIN]folder.png",
+ manyItemsImage:"[SKIN]folder_file.png",
+ nodeIcon:"[SKIN]file.png",
+ openerIconSize:22
+ });
+ }
+
+ if (isc.ColumnTree) {
+ isc.ColumnTree.addProperties({
+ folderIcon:"[SKIN]folder.png",
+ nodeIcon:"[SKIN]file.png"
+ });
+ }
+
+ //----------------------------------------
+ // 14) Form controls
+ //----------------------------------------
+ if (isc.FormItem) {
+ isc.FormItem.addProperties({
+ defaultIconSrc:"[SKIN]/DynamicForm/default_formItem_icon.png",
+ errorIconSrc:"[SKINIMG]actions/exclamation.png",
+ iconHeight:18,
+ iconVAlign:"middle",
+ iconWidth:18
+ });
+ }
+
+ if (isc.PickTreeItem) {
+ isc.PickTreeItem.addProperties({
+ buttonDefaults:{ height:21 }
+ });
+ }
+
+ if (isc.TextItem) {
+ isc.TextItem.addProperties({
+ height:22,
+ showFocused:true
+ });
+ }
+
+ if (isc.TextAreaItem) {
+ isc.TextAreaItem.addProperties({
+ showFocused:true
+ });
+ }
+
+ if (isc.SelectItem) {
+ isc.SelectItem.addProperties({
+ height:22,
+ pickerIconSrc:"[SKIN]/pickers/comboBoxPicker.png",
+ pickerIconWidth:18,
+ pickListTallBaseStyle:"tallPickListCell",
+ showFocusedPickerIcon:false,
+ textBoxStyle:"selectItemText"
+ });
+ }
+
+ if (isc.ComboBoxItem) {
+ isc.ComboBoxItem.addProperties({
+ height:22,
+ pendingTextBoxStyle:"comboBoxItemPendingText",
+ pickerIconSrc:"[SKIN]/pickers/comboBoxPicker.png",
+ pickerIconWidth:18,
+ pickListTallBaseStyle:"tallPickListCell",
+ showFocusedPickerIcon:false,
+ textBoxStyle:"selectItemText"
+ });
+ }
+
+ // used by SelectItem and ComboBoxItem for picklist
+ if (isc.ScrollingMenu) {
+ isc.ScrollingMenu.addProperties({
+ shadowDepth:5,
+ showShadow:false
+ });
+ }
+
+ if (isc.DateItem) {
+ isc.DateItem.addProperties({
+ height:22,
+ pickerIconHeight:14,
+ pickerIconSrc:"[SKIN]/DynamicForm/date_control.png",
+ pickerIconWidth:16
+ });
+ }
+
+ if (isc.SpinnerItem) {
+ isc.SpinnerItem.addProperties({
+ height:22,
+ textBoxStyle:"selectItemText"
+ });
+
+ isc.SpinnerItem.INCREASE_ICON = isc.addProperties(isc.SpinnerItem.INCREASE_ICON, {
+ height:11,
+ imgOnly:true,
+ showDown:true,
+ showFocused:true,
+ showRollOver:true,
+ src:"[SKIN]/DynamicForm/spinner_control_increase.png",
+ width:16
+ });
+
+ isc.SpinnerItem.DECREASE_ICON = isc.addProperties(isc.SpinnerItem.DECREASE_ICON, {
+ height:11,
+ imgOnly:true,
+ showDown:true,
+ showFocused:true,
+ showRollOver:true,
+ src:"[SKIN]/DynamicForm/spinner_control_decrease.png",
+ width:16
+ });
+ }
+
+ if (isc.PopUpTextAreaItem) {
+ isc.PopUpTextAreaItem.addProperties({
+ popUpIconHeight:16,
+ popUpIconSrc:"[SKIN]/DynamicForm/text_control.gif",
+ popUpIconWidth:16
+ });
+ }
+
+ if (isc.ButtonItem && isc.IButton) {
+ isc.ButtonItem.addProperties({
+ buttonConstructor:isc.IButton,
+ height:22,
+ showFocusAsOver:false,
+ showFocused:true
+ });
+ }
+
+ if (isc.ToolbarItem && isc.IAutoFitButton) {
+ isc.ToolbarItem.addProperties({
+ buttonConstructor:isc.IAutoFitButton,
+ buttonProperties:{ autoFitDirection:isc.Canvas.BOTH }
+ });
+ }
+
+ if(isc.DateRangeDialog) {
+ isc.DateRangeDialog.changeDefaults("headerIconProperties", { src:"[SKIN]/DynamicForm/date_control.png" });
+ }
+
+ if(isc.MiniDateRangeItem) {
+ isc.MiniDateRangeItem.changeDefaults("pickerIconDefaults", { src:"[SKIN]/DynamicForm/date_control.png" });
+ }
+
+ if(isc.RelativeDateItem) {
+ isc.RelativeDateItem.changeDefaults("pickerIconDefaults", { src:"[SKIN]/DynamicForm/date_control.png" });
+ }
+
+ //----------------------------------------
+ // 15) Drag & Drop
+ //----------------------------------------
+ // drag tracker drop shadow (disabled by default because many trackers are irregular shape)
+ //isc.addProperties(isc.EH.dragTrackerDefaults, {
+ // showShadow:false,
+ // shadowDepth:4
+ //});
+ // drag target shadow and opacity
+ isc.EH.showTargetDragShadow = true;
+ isc.EH.targetDragOpacity = 50;
+
+ //----------------------------------------
+ // 16) Edges
+ //----------------------------------------
+ // default edge style serves as a pretty component frame/border - just set showEdges:true
+ if (isc.EdgedCanvas) {
+ isc.EdgedCanvas.addProperties({
+ edgeImage:"[SKINIMG]edges/edge.png",
+ edgeSize:6
+ });
+ }
+
+ //----------------------------------------
+ // 17) Sliders
+ //----------------------------------------
+ if (isc.Slider) {
+ isc.Slider.addProperties({
+ thumbSrc:"thumb.png",
+ thumbThickWidth:14,
+ thumbThinWidth:14,
+ trackCapSize:2,
+ trackSrc:"track.png",
+ trackWidth:5
+ });
+ }
+
+ //----------------------------------------
+ // 18) TileList
+ //----------------------------------------
+ if (isc.TileGrid) {
+ isc.TileGrid.addProperties({
+ showEdges:true,
+ styleName:null,
+ valuesShowRollOver:true
+ });
+ }
+
+ // ----------------------------------------
+ // 19) CubeGrid
+ //----------------------------------------
+ if (isc.CubeGrid) {
+ isc.CubeGrid.addProperties({
+ alternateBodyStyleName:"alternateCubeGridBody",
+ bodyStyleName:"cubeGridBody"
+ });
+ }
+
+ // ----------------------------------------
+ // 20) FilterBuilder
+ //----------------------------------------
+ if (isc.FilterBuilder) {
+ isc.FilterBuilder.changeDefaults("addButtonDefaults", { showFocused:false });
+ isc.FilterBuilder.changeDefaults("removeButtonDefaults", { showFocused:false });
+ }
+
+ // -------------------------------------------
+ // 21) Printing
+ // -------------------------------------------
+ if (isc.PrintWindow) {
+ isc.PrintWindow.changeDefaults("printButtonDefaults", { height:18 });
+ }
+
+ // -------------------------------------------
+ // 21) Printing
+ // -------------------------------------------
+ if (isc.Calendar) {
+ isc.Calendar.changeDefaults("datePickerButtonDefaults", {
+ showDown:false,
+ showOver:false,
+ src:"[SKIN]/DynamicForm/date_control.png"
+ });
+
+ isc.Calendar.changeDefaults("controlsBarDefaults", {
+ height:10,
+ layoutBottomMargin:10
+ });
+
+ isc.Calendar.changeDefaults("addEventButtonDefaults", {
+ src:"[SKINIMG]actions/plus.png"
+ });
+ }
+
+ // -------------------------------------------
+ // 22) ToolStrip
+ // -------------------------------------------
+ if(isc.ToolStrip) {
+ isc.ToolStrip.addProperties({
+ defaultLayoutAlign:"center",
+ height:30,
+ verticalStyleName:"toolStripVertical"
+ });
+
+ isc.ToolStrip.changeDefaults("formWrapperDefaults", {cellPadding:3} );
+ }
+
+ // -------------------------------------------
+ // 23) RichTextEditor
+ // -------------------------------------------
+ if (isc.RichTextEditor) {
+ isc.RichTextEditor.addProperties({
+ showEdges:true
+ });
+ }
+
+ // -------------------------------------------
+ // ExampleViewPane - used in the feature explorer
+ // -------------------------------------------
+ if (isc.ExampleViewPane) {
+ isc.ExampleViewPane.addProperties({
+ styleName:"normal"
+ });
+ }
+
+ // specify where the browser should redirect if not supported
+ isc.Page.checkBrowserAndRedirect("[SKIN]/unsupported_browser.html");
+
+ } //end useCSS3 else block
+
+ } // end with()
+} // end loadSkin()
+
+isc.loadSkin()
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/load_skin.js.gz b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/load_skin.js.gz
new file mode 100755
index 0000000..ad260af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/load_skin.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/skin_styles.css b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/skin_styles.css
new file mode 100755
index 0000000..3bb14ce
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/skin_styles.css
@@ -0,0 +1,4486 @@
+/*============================================================
+This CSS file is generated by skins/EnterpriseSeries/sass/_base.scss
+
+This file should NOT be edited directly, unless renamed to
+something other than skin_styles.css otherwise it may get
+overwritten by _base.scss.
+==============================================================*/
+/*============================================================
+ "Enterprise" theme CSS styles
+ Copyright 2001 and beyond, Isomorphic Software
+
+ :: Contents ::
+
+ 1) General
+ default text
+ default border
+ drop indicator
+ hover canvas
+ 2) Buttons
+ Button
+ ImgButton
+ StretchImgButton
+ 3) Menu
+ MenuButton
+ 4) Window
+ Dialog
+ 5) Layout
+ drop line
+ drag placeholder
+ splitbar (resizebar)
+ 6) TabSet
+ tab titles
+ 7) SectionStack
+ image SectionHeaders
+ CSS SectionHeaders
+ 8) Forms
+ general
+ headerItem
+ text items
+ selectItem
+ checkbox & radioButton
+ ColorChooser
+ DateChooser
+ 9) Slider & Rangebar
+ 10) DetailViewer
+ 11) ListGrid
+ parts
+ headers
+ cells
+ 12) ToolStrip
+ 12a) ToolStripGroup and IconButton
+ 13) Tools
+ 14) TileGrid
+ 15) Scrollbars
+ ------------
+ internal/unused styles
+============================================================*/
+/*============================================================
+ 1) General
+============================================================*/
+/* line 75, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.pageBackground {
+ background: #fafafa;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* default text */
+/* line 85, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.normal {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 93, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.defaultBorder {
+ border: 1px solid #ababab;
+}
+
+/* drag outline */
+/* line 98, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dragOutline {
+ border: 1px dashed #0b6ef9;
+}
+
+/* drop indicator */
+/* line 103, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dropBorder {
+ background-color: gray;
+}
+
+/* hover canvas */
+/* line 110, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.canvasHover,
+.gridHover,
+.formHover {
+ background-color: white;
+ border: 1px solid gray;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 5px;
+}
+
+/* group label */
+/* line 122, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.groupLabel {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+/* CSS3 Mode */
+/* line 135, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.richTextEditorBorder {
+ border-top: 3px solid #c4ddfd;
+ border-bottom: 4px solid #c4ddfd;
+ border-left: 4px solid #c4ddfd;
+ border-right: 4px solid #c4ddfd;
+ -moz-box-shadow: 0 1px #8fa7c7, 0 -1px #e7f5fe, 0 -2px #8fa7c7, 1px 0 #8fa7c7, -1px 0 #8fa7c7;
+ -webkit-box-shadow: 0 1px #8fa7c7, 0 -1px #e7f5fe, 0 -2px #8fa7c7, 1px 0 #8fa7c7, -1px 0 #8fa7c7;
+ -o-box-shadow: 0 1px #8fa7c7, 0 -1px #e7f5fe, 0 -2px #8fa7c7, 1px 0 #8fa7c7, -1px 0 #8fa7c7;
+ box-shadow: 0 1px #8fa7c7, 0 -1px #e7f5fe, 0 -2px #8fa7c7, 1px 0 #8fa7c7, -1px 0 #8fa7c7;
+}
+
+/*============================================================
+ 2) Button
+ button.baseStyle
+ buttonStrip.baseStyle
+ buttonTable.baseButtonStyle
+ listBar.labelStyle
+ listGrid.headerBaseStyle (not in this skin)
+============================================================*/
+/* line 166, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.button,
+.buttonOver,
+.buttonFocused,
+.buttonFocusedOver,
+.buttonDown,
+.buttonFocusedDown,
+.buttonSelected,
+.buttonSelectedFocused,
+.buttonSelectedDown,
+.buttonSelectedFocusedDown,
+.buttonSelectedOver,
+.buttonSelectedFocusedOver,
+.buttonDisabled,
+.buttonSelectedDisabled {
+ background-color: #f0f0f0;
+ background-image: url("./images/cssButton/button_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #e0e0e0));
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='white', endColorstr='#e0e0e0');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='white', endColorstr='#e0e0e0')";
+ border: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 2px;
+}
+
+/* CSS3 Mode */
+/* line 197, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonRounded,
+.buttonRoundedOver,
+.buttonRoundedFocused,
+.buttonRoundedFocusedOver,
+.buttonRoundedDown,
+.buttonRoundedFocusedDown,
+.buttonRoundedSelected,
+.buttonRoundedSelectedFocused,
+.buttonRoundedSelectedDown,
+.buttonRoundedSelectedFocusedDown,
+.buttonRoundedSelectedOver,
+.buttonRoundedSelectedFocusedOver,
+.buttonRoundedDisabled,
+.buttonRoundedSelectedDisabled {
+ background-color: #f0f0f0;
+ background-image: url("./images/cssButton/button_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #e0e0e0));
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='white', endColorstr='#e0e0e0');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='white', endColorstr='#e0e0e0')";
+ border: 1px solid #597db1;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 0 3px;
+}
+
+/* line 214, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonRounded {
+ border: 1px solid #ababab;
+ -moz-box-shadow: inset white 0 -1px 1px, inset white -1px 0 1px, inset white 1px 0 1px;
+ -webkit-box-shadow: inset white 0 -1px 1px, inset white -1px 0 1px, inset white 1px 0 1px;
+ -o-box-shadow: inset white 0 -1px 1px, inset white -1px 0 1px, inset white 1px 0 1px;
+ box-shadow: inset white 0 -1px 1px, inset white -1px 0 1px, inset white 1px 0 1px;
+}
+
+/* CSS3 Mode */
+/* line 220, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonRoundedDisabled {
+ background-color: #e8e8e8;
+ background-image: url("./images/cssButton/button_Disabled_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f0f0f0));
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='white', endColorstr='#f0f0f0');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='white', endColorstr='#f0f0f0')";
+ border-bottom: 1px solid #b6bdc9;
+ border-left: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ border-top: 1px solid #bfbfbf;
+}
+
+/* line 236, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonDisabled {
+ background-color: #e8e8e8;
+ background-image: url("./images/cssButton/button_Disabled_stretch.png");
+ background-repeat: repeat-x;
+ border-bottom: 1px solid #b6bdc9;
+ border-left: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ border-top: 1px solid #bfbfbf;
+}
+
+/* line 251, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonDisabled,
+.buttonSelectedDisabled {
+ color: #ababab;
+ font-weight: normal;
+}
+
+/* CSS3 Mode */
+/* line 258, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonRoundedDisabled,
+.buttonRoundedSelectedDisabled {
+ color: #ababab;
+ font-weight: normal;
+}
+
+/* line 267, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonFocused,
+.buttonFocusedOver,
+.buttonSelectedFocused,
+.buttonSelectedFocusedOver,
+.buttonSelectedFocusedDown {
+ border-bottom: 1px solid #c4ddfd;
+ border-left: 1px solid #99c7ff;
+ border-right: 1px solid #99c7ff;
+ border-top: 1px solid #b4d4fd;
+}
+
+/* CSS3 Mode */
+/* line 281, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonRoundedFocused,
+.buttonRoundedFocusedOver,
+.buttonRoundedSelectedFocused,
+.buttonRoundedSelectedFocusedOver,
+.buttonRoundedSelectedFocusedDown {
+ border: 1px solid #ababab;
+}
+
+/* line 288, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonOver,
+.buttonFocusedOver,
+.buttonSelectedFocused,
+.buttonSelectedFocusedOver {
+ background-color: #b4d4fd;
+ background-image: url("./images/cssButton/button_Over_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(52%, #deeffc), color-stop(57%, #c9e3fd), color-stop(100%, #b7d7f5));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#b7d7f5');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#b7d7f5')";
+}
+
+/* CSS3 Mode */
+/* line 302, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonRoundedOver,
+.buttonRoundedFocusedOver,
+.buttonRoundedSelectedFocused,
+.buttonRoundedSelectedFocusedOver {
+ background-color: #b4d4fd;
+ background-image: url("./images/cssButton/button_Over_stretch.png");
+ background-repeat: repeat-x;
+ border: 1px solid #597db1;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf6fd), color-stop(11%, #fafeff), color-stop(22%, #fafeff), color-stop(39%, #f0faff), color-stop(94%, #c2e0ff), color-stop(100%, #c8e4fe));
+ background-image: -webkit-linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ background-image: -moz-linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ background-image: -o-linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ background-image: -ms-linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ background-image: linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#edf6fd', endColorstr='#c8e4fe');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#edf6fd', endColorstr='#c8e4fe')";
+ -moz-box-shadow: inset #d8eafd 0 -1px 1px, inset #d8eafd -1px 0 1px, inset #d8eafd 1px 0 1px;
+ -webkit-box-shadow: inset #d8eafd 0 -1px 1px, inset #d8eafd -1px 0 1px, inset #d8eafd 1px 0 1px;
+ -o-box-shadow: inset #d8eafd 0 -1px 1px, inset #d8eafd -1px 0 1px, inset #d8eafd 1px 0 1px;
+ box-shadow: inset #d8eafd 0 -1px 1px, inset #d8eafd -1px 0 1px, inset #d8eafd 1px 0 1px;
+}
+
+/* line 317, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonDown,
+.buttonFocusedDown,
+.buttonSelectedDown,
+.buttonSelectedFocusedDown {
+ background-color: #bdddff;
+ background-image: url("./images/cssButton/button_Down_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f1f2f3), color-stop(41%, #f1f2f3), color-stop(100%, #b1d7f6));
+ background-image: -webkit-linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ background-image: -moz-linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ background-image: -o-linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ background-image: -ms-linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ background-image: linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#addbf5', endColorstr='#92cef7');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#addbf5', endColorstr='#92cef7')";
+ border: 1px solid #597db1;
+ -moz-box-shadow: inset 0 1px 2px #addbf5, inset 0 -1px 2px #addbf5, inset 2px 0 2px #addbf5, inset -2px 0 2px #addbf5;
+ -webkit-box-shadow: inset 0 1px 2px #addbf5, inset 0 -1px 2px #addbf5, inset 2px 0 2px #addbf5, inset -2px 0 2px #addbf5;
+ -o-box-shadow: inset 0 1px 2px #addbf5, inset 0 -1px 2px #addbf5, inset 2px 0 2px #addbf5, inset -2px 0 2px #addbf5;
+ box-shadow: inset 0 1px 2px #addbf5, inset 0 -1px 2px #addbf5, inset 2px 0 2px #addbf5, inset -2px 0 2px #addbf5;
+}
+
+/* CSS3 Mode */
+/* line 333, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonRoundedDown,
+.buttonRoundedFocusedDown,
+.buttonRoundedSelectedDown,
+.buttonRoundedSelectedFocusedDown {
+ background-color: #bdddff;
+ background-image: url("./images/cssButton/button_Down_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f1f2f3), color-stop(41%, #f1f2f3), color-stop(100%, #b1d7f6));
+ background-image: -webkit-linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ background-image: -moz-linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ background-image: -o-linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ background-image: -ms-linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ background-image: linear-gradient(top, #f1f2f3 0%, #f1f2f3 41%, #b1d7f6 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#addbf5', endColorstr='#92cef7');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#addbf5', endColorstr='#92cef7')";
+ border: 1px solid #597db1;
+ -moz-box-shadow: inset 0 1px 2px #addbf5, inset 0 -1px 2px #addbf5, inset 2px 0 2px #addbf5, inset -2px 0 2px #addbf5;
+ -webkit-box-shadow: inset 0 1px 2px #addbf5, inset 0 -1px 2px #addbf5, inset 2px 0 2px #addbf5, inset -2px 0 2px #addbf5;
+ -o-box-shadow: inset 0 1px 2px #addbf5, inset 0 -1px 2px #addbf5, inset 2px 0 2px #addbf5, inset -2px 0 2px #addbf5;
+ box-shadow: inset 0 1px 2px #addbf5, inset 0 -1px 2px #addbf5, inset 2px 0 2px #addbf5, inset -2px 0 2px #addbf5;
+}
+
+/* line 349, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonSelected,
+.buttonSelectedFocused,
+.buttonSelectedOver,
+.buttonSelectedFocusedOver,
+.buttonSelectedDisabled {
+ background-color: #b4d4fd;
+ background-image: url("./images/cssButton/button_Over_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(52%, #deeffc), color-stop(57%, #c9e3fd), color-stop(100%, #b7d7f5));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#b7d7f5');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#b7d7f5')";
+}
+
+/* CSS3 Mode */
+/* line 364, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonRoundedSelected,
+.buttonRoundedSelectedFocused,
+.buttonRoundedSelectedOver,
+.buttonRoundedSelectedFocusedOver,
+.buttonRoundedSelectedDisabled {
+ background-color: #b4d4fd;
+ background-image: url("./images/cssButton/button_Over_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf6fd), color-stop(11%, #fafeff), color-stop(22%, #fafeff), color-stop(39%, #f0faff), color-stop(94%, #c2e0ff), color-stop(100%, #c8e4fe));
+ background-image: -webkit-linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ background-image: -moz-linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ background-image: -o-linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ background-image: -ms-linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ background-image: linear-gradient(top, #edf6fd 0%, #fafeff 11%, #fafeff 22%, #f0faff 39%, #c2e0ff 94%, #c8e4fe 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#edf6fd', endColorstr='#c8e4fe');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#edf6fd', endColorstr='#c8e4fe')";
+ -moz-box-shadow: inset #d8eafd 0 -1px 1px, inset #d8eafd -1px 0 1px, inset #d8eafd 1px 0 1px;
+ -webkit-box-shadow: inset #d8eafd 0 -1px 1px, inset #d8eafd -1px 0 1px, inset #d8eafd 1px 0 1px;
+ -o-box-shadow: inset #d8eafd 0 -1px 1px, inset #d8eafd -1px 0 1px, inset #d8eafd 1px 0 1px;
+ box-shadow: inset #d8eafd 0 -1px 1px, inset #d8eafd -1px 0 1px, inset #d8eafd 1px 0 1px;
+}
+
+/* ImgButton */
+/* line 383, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.imgButton,
+.imgButtonOver,
+.imgButtonSelected,
+.imgButtonSelectedDisabled,
+.imgButtonSelectedOver,
+.imgButtonDown,
+.imgButtonSelectedDown,
+.imgButtonDisabled {
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 390, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.imgButtonDisabled {
+ color: #666666;
+}
+
+/* StretchImgButton */
+/* line 402, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.stretchImgButton,
+.stretchImgButtonSelected,
+.stretchImgButtonSelectedOver,
+.stretchImgButtonOver,
+.stretchImgButtonDown,
+.stretchImgButtonSelectedDown,
+.stretchImgButtonSelectedDisabled,
+.stretchImgButtonDisabled {
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 409, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.stretchImgButtonOver {
+ font-weight: normal;
+}
+
+/* line 414, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.stretchImgButtonSelectedDisabled,
+.stretchImgButtonDisabled {
+ color: #ababab;
+ font-weight: normal;
+}
+
+/* Button Title */
+/* line 433, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonTitle,
+.buttonTitleOver,
+.buttonTitleDown,
+.buttonTitleSelected,
+.buttonTitleFocused,
+.buttonTitleSelectedFocused,
+.buttonTitleSelectedOver,
+.buttonTitleFocusedOver,
+.buttonTitleSelectedFocusedOver,
+.buttonTitleSelectedDown,
+.buttonTitleFocusedDown,
+.buttonTitleSelectedFocusedDown,
+.buttonTitleDisabled,
+.buttonTitleSelectedDisabled {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 442, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.buttonTitleDisabled,
+.buttonTitleSelectedDisabled {
+ color: #ababab;
+ font-weight: normal;
+}
+
+/*============================================================
+ 3) Menus
+============================================================*/
+/* line 452, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuMain {
+ background-color: white;
+ background-image: url("./images/Menu/menu_background.png");
+ background-repeat: repeat-y;
+ background-attachment: scroll;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #fafafa), color-stop(17%, #dbdbdb), color-stop(17%, #ffffff), color-stop(100%, #ffffff));
+ background-image: -webkit-linear-gradient(left, #fafafa 0%, #dbdbdb 17%, #ffffff 17%, #ffffff 100%);
+ background-image: -moz-linear-gradient(left, #fafafa 0%, #dbdbdb 17%, #ffffff 17%, #ffffff 100%);
+ background-image: -o-linear-gradient(left, #fafafa 0%, #dbdbdb 17%, #ffffff 17%, #ffffff 100%);
+ background-image: -ms-linear-gradient(left, #fafafa 0%, #dbdbdb 17%, #ffffff 17%, #ffffff 100%);
+ background-image: linear-gradient(left, #fafafa 0%, #dbdbdb 17%, #ffffff 17%, #ffffff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#fafafa', endColorstr='white');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#fafafa', endColorstr='white')";
+ border: 1px solid #8fa7c7;
+}
+
+/* line 464, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuTable {
+ border: 1px solid #8fa7c7;
+}
+
+/* line 468, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeMenuBody {
+ background: white;
+ border: 1px solid #8fa7c7;
+}
+
+/* line 495, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menu,
+.menuSelected,
+.menuOver,
+.menuSelectedOver,
+.menuDisabled,
+.menuTitleField,
+.menuTitleFieldDark,
+.menuTitleFieldSelected,
+.menuTitleFieldSelectedDark,
+.menuTitleFieldOver,
+.menuTitleFieldOverDark,
+.menuTitleFieldSelectedOver,
+.menuTitleFieldSelectedOverDark,
+.menuTitleFieldDisabled,
+.menuIconField,
+.menuIconFieldOver,
+.menuIconFieldSelected,
+.menuIconFieldSelectedOver,
+.menuIconFieldDisabled,
+.treeMenuSelected,
+.treeMenuSelectedOver,
+.treeMenuSelectedSelected,
+.treeMenuSelectedSelectedOver {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding-bottom: 2px;
+ padding-top: 2px;
+}
+
+/* line 529, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuOver,
+.menuOverDark,
+.menuSelectedOver,
+.menuSelectedOverDark,
+.menuTitleFieldOver,
+.menuTitleFieldOverDark,
+.menuTitleFieldSelectedOver,
+.menuTitleFieldSelectedOverDark,
+.menuIconFieldOver,
+.menuIconFieldOverDark,
+.menuIconFieldSelectedOver,
+.menuIconFieldSelectedOverDark,
+.treeMenuSelected,
+.treeMenuSelectedDark,
+.treeMenuSelectedOver,
+.treeMenuSelectedOverDark,
+.treeMenuSelectedSelected,
+.treeMenuSelectedSelectedOver {
+ background-color: #c4ddfd;
+ background-image: url("./images/ListGrid/row_Over.png");
+ background-repeat: repeat-x;
+ background-attachment: scroll;
+ background-position: 0px 1px;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c4ddfd), color-stop(9%, #f0f8ff), color-stop(14%, #e5f3ff), color-stop(86%, #cce5ff), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#c4ddfd', endColorstr='#cce5ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c4ddfd', endColorstr='#cce5ff')";
+}
+
+/* line 549, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuTitleField,
+.menuTitleFieldDark,
+.menuTitleFieldSelected,
+.menuTitleFieldSelectedDark,
+.menuTitleFieldOver,
+.menuTitleFieldOverDark,
+.menuTitleFieldSelectedOver,
+.menuTitleFieldSelectedOverDark,
+.menuTitleFieldDisabled {
+ padding-left: 4px;
+}
+
+/* line 561, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuIconField,
+.menuIconFieldDark,
+.menuIconFieldOver,
+.menuIconFieldOverDark,
+.menuIconFieldSelected,
+.menuIconFieldSelectedDark,
+.menuIconFieldSelectedOver,
+.menuIconFieldSelectedOverDark,
+.menuIconFieldDisabled {
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+/* line 569, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuDisabled,
+.menuTitleFieldDisabled,
+.menuIconFieldDisabled {
+ color: #ababab;
+}
+
+/* menu header buttons */
+/* line 584, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuButton,
+.menuButtonOver,
+.menuButtonDown,
+.menuButtonDisabled,
+.menuButtonFocused,
+.menuButtonFocusedDown,
+.menuButtonFocusedOver,
+.menuButtonSelected,
+.menuButtonSelectedDown,
+.menuButtonSelectedOver,
+.menuButtonSelectedDisabled {
+ background-color: #dedede;
+ background-image: url("./images/cssButton/button_stretch.png");
+ background-repeat: repeat-x;
+ background-attachment: scroll;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #e0e0e0));
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='white', endColorstr='#e0e0e0');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='white', endColorstr='#e0e0e0')";
+ border: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+/* line 605, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuButtonOver {
+ background-color: #b4d4fd;
+ background-image: url("./images/cssButton/button_Over_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(52%, #deeffc), color-stop(57%, #c9e3fd), color-stop(100%, #b7d7f5));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #deeffc 52%, #c9e3fd 57%, #b7d7f5 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#b7d7f5');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#b7d7f5')";
+}
+
+/* line 620, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuButtonDown,
+.menuButtonFocusedDown,
+.menuButtonFocusedOver,
+.menuButtonSelected,
+.menuButtonSelectedDown,
+.menuButtonSelectedOver {
+ background-color: #bdddff;
+ background-image: url("./images/cssButton/button_Down_stretch.png");
+ background-repeat: repeat-x;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #addbf5), color-stop(9%, #addbf5), color-stop(13%, #c3e1f4), color-stop(17%, #e2ecf3), color-stop(22%, #f1f2f3), color-stop(78%, #bcdaf6), color-stop(83%, #b1d7f6), color-stop(87%, #a2d3f6), color-stop(100%, #92cef7));
+ background-image: -webkit-linear-gradient(top, #addbf5 0%, #addbf5 9%, #c3e1f4 13%, #e2ecf3 17%, #f1f2f3 22%, #bcdaf6 78%, #b1d7f6 83%, #a2d3f6 87%, #92cef7 100%);
+ background-image: -moz-linear-gradient(top, #addbf5 0%, #addbf5 9%, #c3e1f4 13%, #e2ecf3 17%, #f1f2f3 22%, #bcdaf6 78%, #b1d7f6 83%, #a2d3f6 87%, #92cef7 100%);
+ background-image: -o-linear-gradient(top, #addbf5 0%, #addbf5 9%, #c3e1f4 13%, #e2ecf3 17%, #f1f2f3 22%, #bcdaf6 78%, #b1d7f6 83%, #a2d3f6 87%, #92cef7 100%);
+ background-image: -ms-linear-gradient(top, #addbf5 0%, #addbf5 9%, #c3e1f4 13%, #e2ecf3 17%, #f1f2f3 22%, #bcdaf6 78%, #b1d7f6 83%, #a2d3f6 87%, #92cef7 100%);
+ background-image: linear-gradient(top, #addbf5 0%, #addbf5 9%, #c3e1f4 13%, #e2ecf3 17%, #f1f2f3 22%, #bcdaf6 78%, #b1d7f6 83%, #a2d3f6 87%, #92cef7 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#addbf5', endColorstr='#92cef7');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#addbf5', endColorstr='#92cef7')";
+ border: 1px solid #ababab;
+}
+
+/* line 632, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.menuButtonDisabled,
+.menuButtonSelectedDisabled {
+ color: #ababab;
+ border: 1px solid #ababab;
+}
+
+/*============================================================
+ 4) Window
+ window.styleName - windowBackground
+ window.bodyStyle - windowBody
+ window.headerStyle - windowHeader
+ window.hiliteHeaderStyle - windowHeaderHilite
+ window.headerLabelDefaults.styleName - windowHeaderText
+ window.statusBarDefaults.styleName - windowStatusBar
+
+ Dialog
+ dialog.styleName - dialogBackground
+ dialog.bodyStyle - dialogBody
+ dialog.headerStyle - dialogHeader
+ dialog.hiliteHeaderStyle - dialogHeaderHilite
+ dialog.headerLabelDefaults.styleName - dialogHeaderText
+============================================================*/
+/* line 655, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.windowBackground,
+.dialogBackground {
+ background: #f0f8ff;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(1%, #f0f8ff), color-stop(1%, #e7f0fe), color-stop(15%, #c4ddfd), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 15%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 15%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 15%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 15%, #c4ddfd 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 15%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#c4ddfd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#c4ddfd')";
+ border: 1px solid #9cb2ce;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+}
+
+/* line 668, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.windowBody,
+.dialogBody {
+ background-color: white;
+ border: 1px solid #9cb2ce;
+ -moz-box-shadow: 0 1px #f0f8ff, 0 -1px #f0f8ff;
+ -webkit-box-shadow: 0 1px #f0f8ff, 0 -1px #f0f8ff;
+ -o-box-shadow: 0 1px #f0f8ff, 0 -1px #f0f8ff;
+ box-shadow: 0 1px #f0f8ff, 0 -1px #f0f8ff;
+}
+
+/* line 679, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.windowHeader,
+.dialogHeader {
+ padding: 0;
+}
+
+/* line 689, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.windowHeaderText,
+.dialogHeaderText {
+ color: #4d4d4d;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding-bottom: 2px;
+ padding-left: 2px;
+ padding-right: 2px;
+}
+
+/* line 703, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.windowStatusBar {
+ border-bottom: 1px solid white;
+ border-left: 1px solid #999999;
+ border-right: 1px solid white;
+ border-top: 1px solid #999999;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 717, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.modalMask {
+ background-color: black;
+}
+
+/*============================================================
+ 5) Layout
+============================================================*/
+/* line 725, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.layoutDropLine {
+ background-color: #c4ddfd;
+}
+
+/* line 729, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.layoutPlaceHolder {
+ border: 1px solid black;
+}
+
+/* line 733, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.hSplitbar {
+ background: #c4ddfd;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b3c6db), color-stop(20%, #b3c6db), color-stop(20%, #d7e7fe), color-stop(40%, #d7e7fe), color-stop(40%, #c4ddfd), color-stop(60%, #c4ddfd), color-stop(60%, #aacefd), color-stop(80%, #aacefd), color-stop(80%, #90b0da), color-stop(100%, #90b0da));
+ background-image: -webkit-linear-gradient(top, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ background-image: -moz-linear-gradient(top, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ background-image: -o-linear-gradient(top, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ background-image: -ms-linear-gradient(top, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ background-image: linear-gradient(top, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#b3c6db', endColorstr='#90b0da');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b3c6db', endColorstr='#90b0da')";
+}
+
+/* line 739, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.hSplitbarDown {
+ border: 1px solid #3287b8;
+}
+
+/* line 743, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.vSplitbar {
+ background: #c4ddfd;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #b3c6db), color-stop(20%, #b3c6db), color-stop(20%, #d7e7fe), color-stop(40%, #d7e7fe), color-stop(40%, #c4ddfd), color-stop(60%, #c4ddfd), color-stop(60%, #aacefd), color-stop(80%, #aacefd), color-stop(80%, #90b0da), color-stop(100%, #90b0da));
+ background-image: -webkit-linear-gradient(left, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ background-image: -moz-linear-gradient(left, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ background-image: -o-linear-gradient(left, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ background-image: -ms-linear-gradient(left, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ background-image: linear-gradient(left, #b3c6db 0%, #b3c6db 20%, #d7e7fe 20%, #d7e7fe 40%, #c4ddfd 40%, #c4ddfd 60%, #aacefd 60%, #aacefd 80%, #90b0da 80%, #90b0da 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#b3c6db', endColorstr='#90b0da');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#b3c6db', endColorstr='#90b0da')";
+}
+
+/* line 749, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.vSplitbarDown {
+ border: 1px solid #3287b8;
+}
+
+/*============================================================
+ 6) TabSet and tab titles
+============================================================*/
+/* line 765, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabSetContainer {
+ background-color: white;
+ border: 1px solid #bfbfbf;
+ color: #d6d6d6;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 779, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabBaseline {
+ z-index: 10000000;
+}
+
+/* line 790, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tab,
+.tabOver,
+.tabSelected,
+.tabSelectedOver,
+.tabDown,
+.tabSelectedDown,
+.tabSelectedDisabled,
+.tabDisabled {
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 812, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabTitle,
+.tabTitleDown,
+.tabTitleOver,
+.tabTitleDisabled,
+.tabTitleSelected,
+.tabTitleSelectedDown,
+.tabTitleSelectedOver,
+.tabTitleSelectedDisabled,
+.vtabTitle,
+.vtabTitleSelected,
+.vtabTitleOver,
+.vtabTitleDown,
+.vtabTitleSelectedOver,
+.vtabTitleSelectedDown,
+.vtabTitleDisabled,
+.vtabTitleSelectedDisabled {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding-bottom: 1px;
+}
+
+/* line 822, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabTitleOver,
+.vtabTitleOver {
+ color: #153e8a;
+}
+
+/* line 827, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabTitleSelected,
+.vtabTitleSelected {
+ color: black;
+ font-weight: bold;
+}
+
+/* line 833, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabTitleSelectedOver,
+.vtabTitleSelectedOver {
+ color: #153e8a;
+ font-weight: bold;
+}
+
+/* line 841, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabTitleDisabled,
+.tabTitleSelectedDisabled,
+.vtabTitleDisabled,
+.vtabTitleSelectedDisabled {
+ color: #ababab;
+ padding-bottom: 1px;
+}
+
+/*============================================================
+ 7) SectionStack
+============================================================*/
+/* line 850, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sectionStack {
+ border-bottom: 1px solid #ababab;
+ border-left: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+}
+
+/* SectionStack headers - image based */
+/* line 869, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.imgSectionHeaderTitleclosed,
+.imgSectionHeaderTitleopened,
+.imgSectionHeaderTitleOverclosed,
+.imgSectionHeaderTitleOveropened {
+ border-left: 5px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 878, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.imgSectionHeaderTitleDisabledopened,
+.imgSectionHeaderTitleDisabledclosed {
+ border-left: 5px;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 888, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sectionHeaderTitleopened,
+.sectionHeaderTitleclosed {
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 896, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sectionHeaderTitleDisabledopened,
+.sectionHeaderTitleDisabledclosed {
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* SectionStack headers - css based */
+/* line 905, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sectionHeaderopened,
+.sectionHeaderclosed {
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 2px;
+}
+
+/* line 914, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sectionHeaderopened {
+ background-color: #b4d4fd;
+ background-image: url(./images/SectionHeader/header_opened_stretch.png);
+ background-repeat: repeat-x;
+ background-attachment: scroll;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #9cadc4), color-stop(4%, #9cadc4), color-stop(4%, #f0fbff), color-stop(8%, #f0fbff), color-stop(8%, #e7f1fe), color-stop(96%, #b4d4fd), color-stop(96%, #9cadc4), color-stop(100%, #9cadc4));
+ background-image: -webkit-linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #f0fbff 4%, #f0fbff 8%, #e7f1fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ background-image: -moz-linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #f0fbff 4%, #f0fbff 8%, #e7f1fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ background-image: -o-linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #f0fbff 4%, #f0fbff 8%, #e7f1fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ background-image: -ms-linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #f0fbff 4%, #f0fbff 8%, #e7f1fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ background-image: linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #f0fbff 4%, #f0fbff 8%, #e7f1fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0fbff', endColorstr='#b4d4fd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbff', endColorstr='#b4d4fd')";
+}
+
+/* line 930, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sectionHeaderclosed {
+ background-color: #b4d4fd;
+ background-image: url(./images/SectionHeader/header_closed_stretch.png);
+ background-repeat: repeat-x;
+ background-attachment: scroll;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #9cadc4), color-stop(4%, #9cadc4), color-stop(4%, #ebf9ff), color-stop(8%, #ebf9ff), color-stop(8%, #d2e5fe), color-stop(96%, #b4d4fd), color-stop(96%, #9cadc4), color-stop(100%, #9cadc4));
+ background-image: -webkit-linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #ebf9ff 4%, #ebf9ff 8%, #d2e5fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ background-image: -moz-linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #ebf9ff 4%, #ebf9ff 8%, #d2e5fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ background-image: -o-linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #ebf9ff 4%, #ebf9ff 8%, #d2e5fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ background-image: -ms-linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #ebf9ff 4%, #ebf9ff 8%, #d2e5fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ background-image: linear-gradient(top, #9cadc4 0%, #9cadc4 4%, #ebf9ff 4%, #ebf9ff 8%, #d2e5fe 8%, #b4d4fd 96%, #9cadc4 96%, #9cadc4 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#ebf9ff', endColorstr='#b4d4fd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ebf9ff', endColorstr='#b4d4fd')";
+}
+
+/* line 946, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cellopened {
+ background-color: #FF0000;
+}
+
+/* line 950, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cellclosed {
+ background-color: #FF00AA;
+}
+
+/*============================================================
+ 8) Forms
+============================================================*/
+/* general form styles */
+/* line 965, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.formCell,
+.formCellFocused,
+.formCellDisabled,
+.nestedFormContainer,
+.nestedFormContainerFocused,
+.nestedFormContainerDisabled {
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 1010, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.formTitle,
+.formTitleFocused,
+.formTitleDisabled,
+.formCellError,
+.formTitleError,
+.formHint,
+.headerItem,
+.headerItemDisabled,
+.headerItemError,
+.staticTextItem,
+.staticTextItemDisabled,
+.staticTextItemError,
+.textItem,
+.textItemFocused,
+.textItemDisabled,
+.textItemError,
+.textItemHint,
+.selectItemControl,
+.selectItemControlError,
+.selectItemControlFocused,
+.selectItemText,
+.selectItemTextError,
+.selectItemTextDisabled,
+.selectItemTextFocused,
+.comboBoxItemPendingText,
+.pickListCell,
+.pickListCellSelected,
+.pickListCellDisabled,
+.pickListCellDark,
+.pickListCellSelectedDark,
+.tallPickListCell,
+.tallPickListCellSelected,
+.tallPickListCellDisabled,
+.tallPickListCellDark,
+.tallPickListCellSelectedDark,
+.labelAnchor,
+.labelAnchorDisabled,
+.labelAnchorError,
+.labelAnchorFocused {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 1018, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.comboBoxItemPendingText {
+ color: #0066cc;
+}
+
+/* line 1023, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.formTitle,
+.formTitleFocused {
+ color: #003066;
+}
+
+/* line 1027, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.formTitleDisabled {
+ color: #ababab;
+}
+
+/* line 1032, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.formCellError,
+.formTitleError {
+ color: #204269;
+ font-weight: bold;
+}
+
+/* line 1037, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.formHint {
+ color: #455668;
+ padding: 3px;
+}
+
+/* Allow for nested forms to lie flush against the left-hand edge of the containing form */
+/* line 1045, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.nestedFormContainer,
+.nestedFormContainerFocused,
+.nestedFormContainerDisabled {
+ padding-left: 0px;
+}
+
+/* headerItem */
+/* line 1052, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerItem,
+.headerItemDisabled,
+.headerItemError {
+ color: #4d4d4d;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 14px;
+ font-weight: bold;
+}
+
+/* text-based items common props */
+/* line 1071, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.textItem,
+.textItemFocused,
+.textItemDisabled,
+.textItemError,
+.textItemHint,
+.selectItemText,
+.selectItemTextError,
+.selectItemTextFocused,
+.selectItemTextDisabled,
+.selectItemTextHint {
+ background: white;
+ border: 1px solid #ababab;
+ color: black;
+ padding: 2px;
+}
+
+/* line 1078, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.textItem {
+ border-bottom: 1px solid #dedede;
+ border-left: 1px solid #dedede;
+ border-right: 1px solid #dedede;
+ border-top: 1px solid #ababab;
+}
+
+/* line 1088, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.textItemDisabled,
+.selectItemTextDisabled {
+ background-color: white;
+ border: 1px solid #ababab;
+ color: #ababab;
+}
+
+/* line 1095, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.textItemHint,
+.selectItemTextHint {
+ color: #204269;
+}
+
+/* selectItem */
+/* line 1100, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.selectItemTextFocused {
+ border: 1px solid #587aad;
+ color: black;
+ -moz-outline-offset: -1;
+}
+
+/* line 1107, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.textItemFocused,
+.selectItemTextFocused {
+ color: black;
+ border-bottom: 1px solid #c0d8ec;
+ border-left: 1px solid #b8cfef;
+ border-right: 1px solid #b3c6db;
+ border-top: 1px solid #587aad;
+ -moz-outline-offset: -1;
+}
+
+/* line 1121, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.selectItemText,
+.selectItemTextError,
+.selectItemTextFocused,
+.selectItemTextDisabled {
+ border-right: 0;
+}
+
+/* line 1128, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.selectItemPickerIcon,
+.selectItemPickerIconFocused,
+.selectItemPickerIconDisabled,
+.selectItemPickerIconError {
+ padding: 0px;
+}
+
+/* line 1132, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.pickListMenuBody {
+ background-color: white;
+ border: 1px solid #8fa7c7;
+}
+
+/* line 1140, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.pickListCell,
+.pickListCellDark,
+.tallPickListCell,
+.tallPickListCellDark {
+ color: black;
+}
+
+/* line 1145, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.pickListCellSelected,
+.pickListCellSelectedDark {
+ background-color: #c4ddfd;
+ background-image: url("./images/Menu/menu_rollover.png");
+ background-repeat: repeat-x;
+ background-attachment: scroll;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #c4ddfd), color-stop(5%, #c4ddfd), color-stop(5%, #e5f8ff), color-stop(95%, #d1e7ff), color-stop(95%, #c4ddfd), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(top, #c4ddfd 1%, #c4ddfd 5%, #e5f8ff 5%, #d1e7ff 95%, #c4ddfd 95%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(top, #c4ddfd 1%, #c4ddfd 5%, #e5f8ff 5%, #d1e7ff 95%, #c4ddfd 95%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(top, #c4ddfd 1%, #c4ddfd 5%, #e5f8ff 5%, #d1e7ff 95%, #c4ddfd 95%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(top, #c4ddfd 1%, #c4ddfd 5%, #e5f8ff 5%, #d1e7ff 95%, #c4ddfd 95%, #c4ddfd 100%);
+ background-image: linear-gradient(top, #c4ddfd 1%, #c4ddfd 5%, #e5f8ff 5%, #d1e7ff 95%, #c4ddfd 95%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#e5f8ff', endColorstr='#d1e7ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#e5f8ff', endColorstr='#d1e7ff')";
+ color: black;
+}
+
+/* line 1158, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tallPickListCellSelected,
+.tallPickListCellSelectedDark {
+ background: #b4d4fd;
+ color: black;
+}
+
+/* line 1164, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.pickListCellDisabled,
+.tallPickListCellDisabled {
+ background-color: #bfbfbf;
+ color: #545454;
+}
+
+/* checkbox and radioButton */
+/* line 1173, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.labelAnchor,
+.labelAnchorDisabled,
+.labelAnchorError,
+.labelAnchorFocused {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+}
+
+/* line 1179, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.labelAnchorDisabled {
+ color: #ababab;
+ font-family: Arial, Verdana, sans-serif;
+}
+
+/* ColorChooser */
+/* line 1186, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colorChooserCell,
+.colorChooserCellOver {
+ background-color: #f0f0f0;
+ border-bottom: 1px solid #f0f0f0;
+ border-left: 1px solid #f0f0f0;
+ border-right: 1px solid #f0f0f0;
+ border-top: 1px solid #f0f0f0;
+}
+
+/* line 1196, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colorChooserCellOver {
+ border: 1px solid black;
+}
+
+/* FilterBuilder */
+/* line 1201, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.bracketBorders {
+ border-bottom: 1px solid #3287b8;
+ border-left: 1px solid #3287b8;
+ border-top: 1px solid #3287b8;
+}
+
+/*============================================================
+ DateChooser
+============================================================*/
+/* Defaults for all days and controls */
+/* line 1248, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserButton,
+.dateChooserButtonOver,
+.dateChooserButtonDown,
+.dateChooserButtonDisabled,
+.dateChooserButtonSelected,
+.dateChooserButtonSelectedDown,
+.dateChooserButtonSelectedOver,
+.dateChooserButtonSelectedDisabled,
+.dateChooserWeekendButton,
+.dateChooserWeekendButtonOver,
+.dateChooserWeekendButtonDown,
+.dateChooserWeekendButtonDisabled,
+.dateChooserWeekendButtonSelected,
+.dateChooserWeekendButtonSelectedDown,
+.dateChooserWeekendButtonSelectedOver,
+.dateChooserWeekendButtonSelectedDisabled,
+.dateChooserBottomButton,
+.dateChooserBottomButtonOver,
+.dateChooserBottomButtonDown,
+.dateChooserBottomButtonSelected,
+.dateChooserBottomButtonSelectedOver,
+.dateChooserBottomButtonSelectedDown,
+.dateChooserWeekday,
+.dateChooserWeekdayOver,
+.dateChooserWeekdayDown,
+.dateChooserWeekdaySelected,
+.dateChooserWeekdaySelectedOver,
+.dateChooserWeekdaySelectedDown,
+.dateChooserWeekdayDisabled,
+.dateChooserWeekend,
+.dateChooserWeekendOver,
+.dateChooserWeekendDown,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedOver,
+.dateChooserWeekendSelectedDown,
+.dateChooserWeekendDisabled {
+ background-color: white;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 1262, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ background: #e7f0fe;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fe), color-stop(4%, #e7f2fe), color-stop(9%, #e6f0fe), color-stop(65%, #c9dffd), color-stop(96%, #c4ddfd), color-stop(100%, #bbd5f6));
+ background-image: -webkit-linear-gradient(top, #e7f0fe 0%, #e7f2fe 4%, #e6f0fe 9%, #c9dffd 65%, #c4ddfd 96%, #bbd5f6 100%);
+ background-image: -moz-linear-gradient(top, #e7f0fe 0%, #e7f2fe 4%, #e6f0fe 9%, #c9dffd 65%, #c4ddfd 96%, #bbd5f6 100%);
+ background-image: -o-linear-gradient(top, #e7f0fe 0%, #e7f2fe 4%, #e6f0fe 9%, #c9dffd 65%, #c4ddfd 96%, #bbd5f6 100%);
+ background-image: -ms-linear-gradient(top, #e7f0fe 0%, #e7f2fe 4%, #e6f0fe 9%, #c9dffd 65%, #c4ddfd 96%, #bbd5f6 100%);
+ background-image: linear-gradient(top, #e7f0fe 0%, #e7f2fe 4%, #e6f0fe 9%, #c9dffd 65%, #c4ddfd 96%, #bbd5f6 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#bbd5f6');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#bbd5f6')";
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* year/month buttons */
+/* line 1279, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ border-bottom: 0px none;
+ border-top: 0px none;
+ padding: 0px;
+}
+
+/* for all buttons, plus weekday headers (dateChooserButton) */
+/* line 1305, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserButton,
+.dateChooserButtonOver,
+.dateChooserButtonDown,
+.dateChooserButtonSelected,
+.dateChooserButtonSelectedOver,
+.dateChooserButtonSelectedDown,
+.dateChooserWeekendButton,
+.dateChooserWeekendButtonOver,
+.dateChooserWeekendButtonDown,
+.dateChooserWeekendButtonSelected,
+.dateChooserWeekendButtonSelectedOver,
+.dateChooserWeekendButtonSelectedDown,
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ color: #4d4d4d;
+ font-weight: bold;
+}
+
+/* line 1311, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserButtonOver,
+.dateChooserButtonDown {
+ color: #477ccd;
+ cursor: pointer;
+}
+
+/* line 1321, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserWeekendButton,
+.dateChooserWeekendButtonOver,
+.dateChooserWeekendButtonDown,
+.dateChooserWeekendButtonSelected,
+.dateChooserWeekendButtonSelectedOver,
+.dateChooserWeekendButtonSelectedDown {
+ background-color: #d6e8ff;
+}
+
+/* line 1330, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ cursor: pointer;
+ padding: 2px;
+}
+
+/* line 1336, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown {
+ color: #477ccd;
+}
+
+/* Today, Cancel buttons */
+/* line 1343, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserBottomButton,
+.dateChooserBottomButtonOver,
+.dateChooserBottomButtonDown {
+ border-left: 1px solid #ababab;
+ border-top: 1px solid #ababab;
+ color: #4d4d4d;
+ cursor: pointer;
+ font-weight: bold;
+}
+
+/* line 1353, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserBottomButtonOver {
+ color: #477ccd;
+}
+
+/* weekday and weekend cells */
+/* line 1371, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserWeekday,
+.dateChooserWeekdayOver,
+.dateChooserWeekdayDown,
+.dateChooserWeekdaySelected,
+.dateChooserWeekdaySelectedOver,
+.dateChooserWeekdaySelectedDown,
+.dateChooserWeekdayDisabled,
+.dateChooserWeekend,
+.dateChooserWeekendOver,
+.dateChooserWeekendDown,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedOver,
+.dateChooserWeekendSelectedDown,
+.dateChooserWeekendDisabled {
+ background-color: white;
+ border: 2px solid white;
+ color: black;
+ cursor: pointer;
+}
+
+/* line 1379, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserWeekdayDisabled,
+.dateChooserWeekendDisabled {
+ color: #bfbfbf;
+}
+
+/* line 1386, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserWeekend,
+.dateChooserWeekendOver,
+.dateChooserWeekendSelected,
+.dateChooserWeekendDisabled {
+ background-color: #d6e8ff;
+ border: 2px solid #d6e8ff;
+}
+
+/* line 1392, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserWeekdayOver,
+.dateChooserWeekendOver {
+ border: 2px solid #75acff;
+}
+
+/* line 1403, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserWeekdaySelected,
+.dateChooserWeekdaySelectedOver,
+.dateChooserWeekdayDown,
+.dateChooserWeekdaySelectedDown,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedOver,
+.dateChooserWeekendDown,
+.dateChooserWeekendSelectedDown {
+ background-color: #d6e8ff;
+ border: 2px solid #94c6ff;
+ color: #4d4d4d;
+ font-weight: bold;
+}
+
+/* line 1411, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserWeekdayDown,
+.dateChooserWeekendDown {
+ font-weight: normal;
+}
+
+/* year and month pop-up menus */
+/* line 1417, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserYearMenu,
+.dateChooserMonthMenu {
+ background-color: white;
+ border: 2px solid #4d4d4d;
+}
+
+/* CSS3 Mode
+ Canvas border around calendar */
+/* line 1424, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dateChooserBorder {
+ border: 1px solid #8fa7c7;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ -o-border-radius: 5px;
+ -ms-border-radius: 5px;
+ -khtml-border-radius: 5px;
+ border-radius: 5px;
+}
+
+/*============================================================
+ 9) Slider & Rangebar
+============================================================*/
+/* slider and rangebar labels */
+/* line 1439, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sliderTitle,
+.sliderRange,
+.sliderValue,
+.rangebarTitle,
+.rangebarRange,
+.rangebarValue {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 1448, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sliderTitle,
+.rangebarTitle {
+ color: #4d4d4d;
+ font-weight: bold;
+}
+
+/* line 1454, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sliderRange,
+.rangebarRange {
+ color: black;
+}
+
+/* CSS3 Mode */
+/* line 1460, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.hSliderTrack,
+.vSliderTrack {
+ background: #f5f5f5;
+ border: 1px solid #d4d4d4;
+}
+
+/* CSS3 Mode */
+/* line 1467, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.hSliderTrackDisabled,
+.vSliderTrackDisabled {
+ background: white;
+ border: 1px solid #e3e3e3;
+}
+
+/* CSS3 Mode */
+/* line 1474, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.hSliderThumbdown,
+.hSliderThumb {
+ background: #c4ddfd;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e2eefd), color-stop(9%, #e2eefd), color-stop(82%, #afd1fd), color-stop(91%, #abcdfc), color-stop(100%, #a0c4f3));
+ background-image: -webkit-linear-gradient(top, #e2eefd 0%, #e2eefd 9%, #afd1fd 82%, #abcdfc 91%, #a0c4f3 100%);
+ background-image: -moz-linear-gradient(top, #e2eefd 0%, #e2eefd 9%, #afd1fd 82%, #abcdfc 91%, #a0c4f3 100%);
+ background-image: -o-linear-gradient(top, #e2eefd 0%, #e2eefd 9%, #afd1fd 82%, #abcdfc 91%, #a0c4f3 100%);
+ background-image: -ms-linear-gradient(top, #e2eefd 0%, #e2eefd 9%, #afd1fd 82%, #abcdfc 91%, #a0c4f3 100%);
+ background-image: linear-gradient(top, #e2eefd 0%, #e2eefd 9%, #afd1fd 82%, #abcdfc 91%, #a0c4f3 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#e2eefd', endColorstr='#a0c4f3');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#e2eefd', endColorstr='#a0c4f3')";
+ border: 1px solid #8fa7c7;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+}
+
+/* CSS3 Mode */
+/* line 1489, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.vSliderThumbdown,
+.vSliderThumb {
+ background: #c4ddfd;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #a0c4f3), color-stop(9%, #abcdfc), color-stop(18%, #afd1fd), color-stop(91%, #e2eefd), color-stop(100%, #e2eefd));
+ background-image: -webkit-linear-gradient(left, #a0c4f3 0%, #abcdfc 9%, #afd1fd 18%, #e2eefd 91%, #e2eefd 100%);
+ background-image: -moz-linear-gradient(left, #a0c4f3 0%, #abcdfc 9%, #afd1fd 18%, #e2eefd 91%, #e2eefd 100%);
+ background-image: -o-linear-gradient(left, #a0c4f3 0%, #abcdfc 9%, #afd1fd 18%, #e2eefd 91%, #e2eefd 100%);
+ background-image: -ms-linear-gradient(left, #a0c4f3 0%, #abcdfc 9%, #afd1fd 18%, #e2eefd 91%, #e2eefd 100%);
+ background-image: linear-gradient(left, #a0c4f3 0%, #abcdfc 9%, #afd1fd 18%, #e2eefd 91%, #e2eefd 100%);
+ -moz-box-shadow: inset 0 1px 0 #eaf4fb;
+ -webkit-box-shadow: inset 0 1px 0 #eaf4fb;
+ -o-box-shadow: inset 0 1px 0 #eaf4fb;
+ box-shadow: inset 0 1px 0 #eaf4fb;
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#a0c4f3', endColorstr='#e2eefd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#a0c4f3', endColorstr='#e2eefd')";
+ border: 1px solid #8fa7c7;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+}
+
+/* CSS3 Mode */
+/* line 1505, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.hSliderThumbDisabled,
+.vSliderThumbDisabled {
+ background: #e8e8e8;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #fafafa), color-stop(46%, #f0f0f0), color-stop(50%, #e3e3e3), color-stop(100%, #fafafa));
+ background-image: -webkit-linear-gradient(top, #fafafa 1%, #f0f0f0 46%, #e3e3e3 50%, #fafafa 100%);
+ background-image: -moz-linear-gradient(top, #fafafa 1%, #f0f0f0 46%, #e3e3e3 50%, #fafafa 100%);
+ background-image: -o-linear-gradient(top, #fafafa 1%, #f0f0f0 46%, #e3e3e3 50%, #fafafa 100%);
+ background-image: -ms-linear-gradient(top, #fafafa 1%, #f0f0f0 46%, #e3e3e3 50%, #fafafa 100%);
+ background-image: linear-gradient(top, #fafafa 1%, #f0f0f0 46%, #e3e3e3 50%, #fafafa 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#e3e3e3');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#e3e3e3')";
+ border: 1px solid #c2c5cb;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+ -moz-box-shadow: inset 0 1px 1px white;
+ -webkit-box-shadow: inset 0 1px 1px white;
+ -o-box-shadow: inset 0 1px 1px white;
+ box-shadow: inset 0 1px 1px white;
+}
+
+/* line 1514, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.vSliderThumbDisabled {
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #fafafa), color-stop(50%, #e3e3e3), color-stop(54%, #f0f0f0), color-stop(99%, #fafafa));
+ background-image: -webkit-linear-gradient(left, #fafafa 0%, #e3e3e3 50%, #f0f0f0 54%, #fafafa 99%);
+ background-image: -moz-linear-gradient(left, #fafafa 0%, #e3e3e3 50%, #f0f0f0 54%, #fafafa 99%);
+ background-image: -o-linear-gradient(left, #fafafa 0%, #e3e3e3 50%, #f0f0f0 54%, #fafafa 99%);
+ background-image: -ms-linear-gradient(left, #fafafa 0%, #e3e3e3 50%, #f0f0f0 54%, #fafafa 99%);
+ background-image: linear-gradient(left, #fafafa 0%, #e3e3e3 50%, #f0f0f0 54%, #fafafa 99%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#fafafa', endColorstr='#e3e3e3');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#fafafa', endColorstr='#e3e3e3')";
+ border: 1px solid #c2c5cb;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+ -moz-box-shadow: inset 0 0px 2px white, inset 0 0px 2px white;
+ -webkit-box-shadow: inset 0 0px 2px white, inset 0 0px 2px white;
+ -o-box-shadow: inset 0 0px 2px white, inset 0 0px 2px white;
+ box-shadow: inset 0 0px 2px white, inset 0 0px 2px white;
+}
+
+/*============================================================
+ 10) DetailViewer
+============================================================*/
+/* line 1526, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.detailBlock {
+ border-left: 1px solid #ababab;
+ border-top: 1px solid #ababab;
+}
+
+/* line 1535, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.detail,
+.detailLabel,
+.detailHeader {
+ background-color: white;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 1548, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.detailLabel {
+ background-color: #fafafa;
+ color: #4d4d4d;
+ font-weight: bold;
+ text-align: right;
+}
+
+/* line 1555, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.detailHeader {
+ background-color: #bdddff;
+ color: #4d4d4d;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 14px;
+ font-weight: bold;
+}
+
+/*============================================================
+ 11) ListGrid
+============================================================*/
+/*============================================================
+ ListGrid parts
+ styleName - listGrid
+ headerBarStyle - headerBar
+ bodyStyleName - gridBody
+============================================================*/
+/* line 1576, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.listGrid {
+ border: 1px solid #ababab;
+}
+
+/* line 1580, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerBar {
+ background-color: #b6bdc9;
+ background-image: url(./images/ListGrid/header.png);
+ background-repeat: repeat-x;
+ background-position: bottom left;
+ background-attachment: scroll;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(96%, #d6d6d6), color-stop(96%, #b6bdc9), color-stop(100%, #b6bdc9));
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #d6d6d6 96%, #b6bdc9 96%, #b6bdc9 100%);
+ background-image: -moz-linear-gradient(top, #fafafa 0%, #d6d6d6 96%, #b6bdc9 96%, #b6bdc9 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #d6d6d6 96%, #b6bdc9 96%, #b6bdc9 100%);
+ background-image: -ms-linear-gradient(top, #fafafa 0%, #d6d6d6 96%, #b6bdc9 96%, #b6bdc9 100%);
+ background-image: linear-gradient(top, #fafafa 0%, #d6d6d6 96%, #b6bdc9 96%, #b6bdc9 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#b6bdc9');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#b6bdc9')";
+}
+
+/* line 1592, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.gridBody {
+ background-color: white;
+}
+
+/* line 1596, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.alternateGridBody {
+ background-color: white;
+}
+
+/* line 1602, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.loadingDataMessage,
+.offlineMessage,
+.emptyMessage {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 11px;
+}
+
+/* line 1611, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.gridDragTracker {
+ border: 1px dotted gray;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 1px;
+}
+
+/* line 1621, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.dragLine {
+ border-bottom: 2px dotted #75acff;
+}
+
+/* for filterEditor */
+/* line 1629, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.recordEditorCell {
+ background-color: #fafafa;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/*============================================================
+ ListGrid headers
+ listGrid.headerBaseStyle - headerButton (in skin)
+ listGrid.headerDefaults.titleStyle - headerTitle (in skin)
+ listGrid.sorterDefaults.titleStyle - headerTitle (in skin)
+
+============================================================*/
+/* ListGrid column header buttons */
+/* line 1647, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerButton {
+ background: #fafafa;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fcfcfc), color-stop(24%, #f7f7f7), color-stop(86%, #dedede), color-stop(100%, #d9d9d9));
+ background-image: -webkit-linear-gradient(top, #fcfcfc 0%, #f7f7f7 24%, #dedede 86%, #d9d9d9 100%);
+ background-image: -moz-linear-gradient(top, #fcfcfc 0%, #f7f7f7 24%, #dedede 86%, #d9d9d9 100%);
+ background-image: -o-linear-gradient(top, #fcfcfc 0%, #f7f7f7 24%, #dedede 86%, #d9d9d9 100%);
+ background-image: -ms-linear-gradient(top, #fcfcfc 0%, #f7f7f7 24%, #dedede 86%, #d9d9d9 100%);
+ background-image: linear-gradient(top, #fcfcfc 0%, #f7f7f7 24%, #dedede 86%, #d9d9d9 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#d6d6d6');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#d6d6d6')";
+ border-bottom: 1px solid #b6bfc9;
+ border-left: 1px solid #fafafa;
+ border-right: 1px solid #cccccc;
+ font-size: 11px;
+ padding-left: 3px;
+ padding-right: 3px;
+}
+
+/* line 1663, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerButtonSelected {
+ background: #f0f8ff;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(100%, #a2ccf6));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #a2ccf6 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #a2ccf6 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #a2ccf6 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #a2ccf6 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #a2ccf6 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#a2ccf6');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#a2ccf6')";
+ border-bottom: 1px solid #97b4d3;
+ font-size: 11px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+/* line 1678, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerButtonDisabled,
+.headerButtonSelectedDisabled {
+ background-color: white;
+ border-left: 1px solid #fafafa;
+ border-right: 1px solid #cccccc;
+}
+
+/* line 1689, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerButtonOver,
+.headerButtonDown,
+.headerButtonSelectedOver,
+.headerButtonSelectedDown {
+ background-color: white;
+ border-bottom: 1px solid #97b4d3;
+ border-left: 1px solid #fafafa;
+ border-right: 1px solid #cccccc;
+}
+
+/* line 1699, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerButtonOver,
+.headerButtonDown {
+ background: #fafafa;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #a2ccf6));
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #a2ccf6 100%);
+ background-image: -moz-linear-gradient(top, #fafafa 0%, #a2ccf6 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #a2ccf6 100%);
+ background-image: -ms-linear-gradient(top, #fafafa 0%, #a2ccf6 100%);
+ background-image: linear-gradient(top, #fafafa 0%, #a2ccf6 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#a2ccf6');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#a2ccf6')";
+ font-size: 11px;
+ padding-left: 3px;
+ padding-right: 3px;
+}
+
+/* line 1711, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerButtonSelectedOver,
+.headerButtonSelectedDown {
+ background: #f0f8ff;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(48%, #deeffc), color-stop(48%, #c9dffd), color-stop(100%, #a2ccf6));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #deeffc 48%, #c9dffd 48%, #a2ccf6 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #deeffc 48%, #c9dffd 48%, #a2ccf6 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #deeffc 48%, #c9dffd 48%, #a2ccf6 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #deeffc 48%, #c9dffd 48%, #a2ccf6 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #deeffc 48%, #c9dffd 48%, #a2ccf6 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#a2ccf6');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#a2ccf6')";
+ font-size: 11px;
+ padding-left: 3px;
+ padding-right: 3px;
+}
+
+/* line 1729, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sorterButton,
+.sorterButtonSelected,
+.sorterButtonDisabled,
+.sorterButtonSelectedDisabled,
+.sorterButtonOver,
+.sorterButtonDown,
+.sorterButtonSelectedOver,
+.sorterButtonSelectedDown {
+ background-color: white;
+ border-left: 1px solid #fafafa;
+}
+
+/* line 1737, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sorterButtonOver,
+.sorterButtonDown,
+.sorterButtonSelectedOver,
+.sorterButtonSelectedDown {
+ border-left: 1px solid #e7f0fe;
+}
+
+/* ListGrid column header titles */
+/* line 1749, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerTitle,
+.headerTitleOver,
+.headerTitleDown,
+.headerTitleSelected,
+.headerTitleSelectedOver,
+.headerTitleSelectedDown,
+.headerTitleDisabled,
+.headerTitleSelectedDisabled {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+/* line 1765, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerTitleDown,
+.headerTitleSelected,
+.headerTitleSelectedOver,
+.headerTitleSelectedDown,
+.headerTitleSelectedDisabled {
+ color: black;
+}
+
+/* line 1770, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.headerTitleDisabled,
+.headerTitleSelectedDisabled {
+ color: #ababab;
+}
+
+/*============================================================
+ ListGrid cells
+ listGrid.baseStyle
+============================================================*/
+/*------------------------------------------------------------
+ listGrid.baseStyle
+------------------------------------------------------------*/
+/* line 1830, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cell,
+.cellDark,
+.cellOver,
+.cellOverDark,
+.cellSelected,
+.cellSelectedDark,
+.cellSelectedOver,
+.cellSelectedOverDark,
+.cellDisabled,
+.cellDisabledDark,
+.tallCell,
+.tallCellDark,
+.tallCellOver,
+.tallCellOverDark,
+.tallCellSelected,
+.tallCellSelectedDark,
+.tallCellSelectedOver,
+.tallCellSelectedOverDark,
+.tallCellDisabled,
+.tallCellDisabledDark,
+.gridSummaryCell,
+.gridSummaryCellDisabled,
+.recordSummaryCell,
+.recordSummaryCellDark,
+.recordSummaryCellOver,
+.recordSummaryCellOverDark,
+.recordSummaryCellSelected,
+.recordSummaryCellSelectedDark,
+.recordSummaryCellSelectedOver,
+.recordSummaryCellSelectedOverDark,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark,
+.expansionCellCell,
+.expansionCellCellDark,
+.expansionCellCellOver,
+.expansionCellCellOverDark,
+.expansionCellCellSelected,
+.expansionCellCellSelectedDark,
+.expansionCellCellSelectedOver,
+.expansionCellCellSelectedOverDark,
+.expansionCellCellDisabled,
+.expansionCellCellDisabledDark,
+.specialCol,
+.specialColOver,
+.specialColSelected,
+.specialColSelectedOver,
+.specialColDisabled,
+.groupNode {
+ border-top: 1px solid #fafafa;
+ border-bottom: 1px solid #f0f0f0;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ text-overflow: ellipsis;
+}
+
+/* line 1843, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.specialCol {
+ background-color: #fafafa;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ text-overflow: ellipsis;
+}
+
+/* line 1868, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cellDark,
+.recordSummaryCell,
+.recordSummaryCellDark {
+ background-color: #fafafa;
+}
+
+/* line 1873, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.gridSummaryCell,
+.gridSummaryCellDisabled {
+ background-color: #f0f0f0;
+ border-bottom: 1px solid gray;
+ border-top: 1px solid gray;
+}
+
+/* line 1881, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tallCellDark {
+ background-color: #fafafa;
+ border-top: 1px solid #fafafa;
+}
+
+/* line 1890, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cellOver,
+.cellOverDark,
+.specialColOver,
+.recordSummaryCellOver,
+.recordSummaryCellOverDark {
+ background-color: #c4ddfd;
+ background-image: url(./images/ListGrid/row_Over.png);
+ background-repeat: repeat-x;
+ background-position: bottom left;
+ background-attachment: scroll;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c4ddfd), color-stop(9%, #f0f8ff), color-stop(14%, #e5f3ff), color-stop(86%, #cce5ff), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#c4ddfd', endColorstr='#cce5ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c4ddfd', endColorstr='#cce5ff')";
+}
+
+/* line 1903, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tallCellOver,
+.tallCellOverDark {
+ background-color: #e8e8e8;
+ border-top: 1px solid #e8e8e8;
+}
+
+/* line 1912, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cellSelected,
+.cellSelectedDark,
+.specialColSelected,
+.recordSummaryCellSelected,
+.recordSummaryCellSelectedDark {
+ background: #d6e8ff;
+ border-bottom: 1px dotted #9fb7e9;
+ border-top: 1px dotted #9fb7e9;
+}
+
+/* line 1921, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tallCellSelected,
+.tallCellSelectedDark {
+ background: #d6e8ff;
+ border-bottom: 1px dotted #9fb7e9;
+ border-top: 1px dotted #9fb7e9;
+}
+
+/* line 1933, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cellSelectedOver,
+.cellSelectedOverDark,
+.specialColSelectedOver,
+.recordSummaryCellSelectedOver,
+.recordSummaryCellSelectedOverDark {
+ background-color: #c4ddfd;
+ background-image: url(images/ListGrid/row_Over_Selected.png);
+ background-repeat: repeat-x;
+ background-position: bottom left;
+ background-attachment: scroll;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c4ddfd), color-stop(4%, #c4ddfd), color-stop(4%, #edf4fd), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ background-image: linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#edf4fd', endColorstr='#c4ddfd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#edf4fd', endColorstr='#c4ddfd')";
+ border-bottom: 1px dotted #9fb7e9;
+ border-top: 1px dotted #9fb7e9;
+}
+
+/* line 1950, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tallCellSelectedOver,
+.tallCellSelectedOverDark {
+ background-color: #d0dff6;
+ border-bottom: 1px dotted #9fb7e9;
+ border-top: 1px dotted #9fb7e9;
+}
+
+/* line 1959, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.gridSummaryCell,
+.gridSummaryCellDisabled {
+ font-weight: bold;
+}
+
+/* line 1971, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cellDisabled,
+.cellDisabledDark,
+.specialColDisabled,
+.tallCellDisabled,
+.tallCellDisabledDark,
+.gridSummaryCellDisabled,
+.specialColDisabled,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark {
+ background-color: white;
+ color: #ababab;
+}
+
+/* for grouping */
+/* line 1977, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.groupNode {
+ border-bottom: 1px solid #8fa7c7;
+ color: #3765a4;
+ font-family: Arial, Verdana, sans-serif;
+ font-weight: bold;
+}
+
+/*Tree styling*/
+/*------------------------------------------------------------
+ treeGrid.baseStyle
+------------------------------------------------------------*/
+/* line 2009, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeCell,
+.treeCellDark,
+.treeCellOver,
+.treeCellOverDark,
+.treeCellSelected,
+.treeCellSelectedDark,
+.treeCellSelectedOver,
+.treeCellSelectedOverDark,
+.treeCellDisabled,
+.treeCellDisabledDark,
+.treeTallCell,
+.treeTallCellDark,
+.treeTallCellOver,
+.treeTallCellOverDark,
+.treeTallCellSelected,
+.treeTallCellSelectedDark,
+.treeTallCellSelectedOver,
+.treeTallCellSelectedOverDark,
+.treeTallCellDisabled,
+.treeTallCellDisabledDark {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ text-overflow: ellipsis;
+}
+
+/* line 2032, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeCellDark,
+.treeTallCellDark {
+ background-color: #fafafa;
+}
+
+/* line 2037, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeCellOver,
+.treeCellOverDark {
+ background-color: #c4ddfd;
+ background-image: url(./images/ListGrid/row_Over.png);
+ background-repeat: repeat-x;
+ background-attachment: scroll;
+ background-position: bottom left;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c4ddfd), color-stop(9%, #f0f8ff), color-stop(14%, #e5f3ff), color-stop(86%, #cce5ff), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ background-image: linear-gradient(top, #c4ddfd 0%, #f0f8ff 9%, #e5f3ff 14%, #cce5ff 86%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#cce5ff', endColorstr='#c4ddfd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#cce5ff', endColorstr='#c4ddfd')";
+}
+
+/* line 2050, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeTallCellOver,
+.treeTallCellOverDark {
+ background-color: #e8e8e8;
+}
+
+/* line 2055, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeCellSelected,
+.treeCellSelectedDark {
+ background: #d6e8ff;
+}
+
+/* line 2060, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeTallCellSelected,
+.treeTallCellSelectedDark {
+ background-color: #d6e8ff;
+}
+
+/* line 2065, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeCellSelectedOver,
+.treeCellSelectedOverDark {
+ background-color: #c4ddfd;
+ background-image: url(images/ListGrid/row_Over_Selected.png);
+ background-repeat: repeat-x;
+ background-position: bottom left;
+ background-attachment: scroll;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c4ddfd), color-stop(4%, #c4ddfd), color-stop(4%, #edf4fd), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ background-image: linear-gradient(top, #c4ddfd 0%, #c4ddfd 4%, #edf4fd 4%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#edf4fd', endColorstr='#c4ddfd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#edf4fd', endColorstr='#c4ddfd')";
+}
+
+/* line 2078, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeTallCellSelectedOver,
+.treeTallCellSelectedOverDark {
+ background-color: #d0dff6;
+}
+
+/* line 2085, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.treeCellDisabled,
+.treeCellDisabledDark,
+.treeTallCellDisabled,
+.treeTallCellDisabledDark {
+ background-color: white;
+ color: #ababab;
+}
+
+/* Field builders (Formula/Summary) */
+/* line 2091, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sampleOutput {
+ border: 2px solid #d6d6d6;
+ padding: 3px;
+}
+
+/* Multi-sort - sort-index appearing next to sort-arrows in field headers */
+/* line 2097, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.sortNumeral {
+ font-size: 7px;
+}
+
+/*============================================================
+ 12) ToolStrip
+============================================================*/
+/* line 2104, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.toolStrip {
+ background-color: #e7f0fe;
+ background-image: url(images/ToolStrip/background.png);
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f7fb), color-stop(2%, #f4f7fb), color-stop(2%, #e7f0fe), color-stop(100%, #cdddf4));
+ background-image: -webkit-linear-gradient(top, #f4f7fb 0%, #f4f7fb 2%, #e7f0fe 2%, #cdddf4 100%);
+ background-image: -moz-linear-gradient(top, #f4f7fb 0%, #f4f7fb 2%, #e7f0fe 2%, #cdddf4 100%);
+ background-image: -o-linear-gradient(top, #f4f7fb 0%, #f4f7fb 2%, #e7f0fe 2%, #cdddf4 100%);
+ background-image: -ms-linear-gradient(top, #f4f7fb 0%, #f4f7fb 2%, #e7f0fe 2%, #cdddf4 100%);
+ background-image: linear-gradient(top, #f4f7fb 0%, #f4f7fb 2%, #e7f0fe 2%, #cdddf4 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f4f7fb', endColorstr='#cdddf4');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f4f7fb', endColorstr='#cdddf4')";
+ border: 1px solid #9abdef;
+}
+
+/* line 2114, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.toolStripVertical {
+ background-color: white;
+ background-image: url(images/ToolStrip/background_vertical.png);
+ border: 1px solid #9abdef;
+}
+
+/*============================================================
+ 12a) ToolStripGroup and IconButton
+==============================================================*/
+/* line 2132, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.toolStripGroup,
+.toolStripGroupOver,
+.toolStripGroupSelected,
+.toolStripGroupSelectedDisabled,
+.toolStripGroupSelectedOver,
+.toolStripGroupDown,
+.toolStripGroupSelectedDown,
+.toolStripGroupDisabled {
+ background: #f0f8ff;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(1%, #f0f8ff), color-stop(1%, #e7f0fe), color-stop(31%, #c4ddfd), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 31%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 31%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 31%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 31%, #c4ddfd 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #f0f8ff 1%, #e7f0fe 1%, #c4ddfd 31%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#c4ddfd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#c4ddfd')";
+ border: 1px solid #9cb2ce;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+}
+
+/* line 2147, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.toolStripGroupTitle,
+.toolStripGroupTitleOver,
+.toolStripGroupTitleSelected,
+.toolStripGroupTitleSelectedDisabled,
+.toolStripGroupTitleSelectedOver,
+.toolStripGroupTitleDown,
+.toolStripGroupTitleSelectedDown,
+.toolStripGroupTitleDisabled {
+ background-color: #aacefd;
+ border: 0;
+ -moz-border-radius-topleft: 2px;
+ -webkit-border-top-left-radius: 2px;
+ -o-border-top-left-radius: 2px;
+ -ms-border-top-left-radius: 2px;
+ -khtml-border-top-left-radius: 2px;
+ border-top-left-radius: 2px;
+ -moz-border-radius-topright: 2px;
+ -webkit-border-top-right-radius: 2px;
+ -o-border-top-right-radius: 2px;
+ -ms-border-top-right-radius: 2px;
+ -khtml-border-top-right-radius: 2px;
+ border-top-right-radius: 2px;
+ color: #4d4d4d;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 3px;
+}
+
+/* line 2175, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.iconButton,
+.iconButtonOver,
+.iconButtonFocused,
+.iconButtonFocusedOver,
+.iconButtonDown,
+.iconButtonFocusedDown,
+.iconButtonSelected,
+.iconButtonSelectedFocused,
+.iconButtonSelectedDown,
+.iconButtonSelectedFocusedDown,
+.iconButtonSelectedOver,
+.iconButtonSelectedFocusedOver,
+.iconButtonDisabled,
+.iconButtonSelectedDisabled {
+ background-color: transparent;
+ border: 1px solid transparent;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+ padding: 4px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ color: #4d4d4d;
+}
+
+/* line 2192, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.iconButtonOver,
+.iconButtonSelectedOver,
+.iconButtonFocusedOver,
+.iconButtonSelectedFocusedOver {
+ background-color: #e8effd;
+ border: 1px solid #a6abb5;
+}
+
+/* line 2204, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.iconButtonSelected,
+.iconButtonSelectedFocused,
+.iconButtonSelectedDown,
+.iconButtonSelectedFocusedDown,
+.iconButtonSelectedOver,
+.iconButtonSelectedFocusedOver {
+ background-color: #aacefd;
+}
+
+/* line 2210, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.iconButtonDisabled {
+ color: #ababab;
+}
+
+/*============================================================
+ 13) Tools
+============================================================*/
+/* line 2217, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.resizeThumb {
+ background-color: #009999;
+}
+
+/*============================================================
+ 14) TileGrid
+==============================================================*/
+/* line 2225, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tileGrid {
+ border: 1px solid gray;
+}
+
+/* line 2234, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tileValue,
+.tileValueDown,
+.tileValueSelected,
+.tileValueOver,
+.tileValueSelectedOver,
+.tileValueSelectedDown {
+ font-size: 8pt;
+ text-overflow: ellipsis;
+}
+
+/* line 2239, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tileValueOver {
+ color: black;
+}
+
+/* line 2243, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tileValueSelected {
+ color: black;
+}
+
+/* line 2247, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tileValueSelectedOver {
+ color: black;
+}
+
+/* line 2254, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.simpleTile,
+.simpleTileOver,
+.simpleTileSelected,
+.simpleTileSelectedOver {
+ font-size: 8pt;
+ padding: 3px;
+}
+
+/* line 2259, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.simpleTile {
+ border: 1px solid transparent;
+}
+
+/* line 2263, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.simpleTileOver {
+ background-color: #fafafa;
+ background-image: url(images/TileGrid/tileOver.png);
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #e3e3e3));
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ background-image: -moz-linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ background-image: -ms-linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ background-image: linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#e3e3e3');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#e3e3e3')";
+ border: 1px solid #cfcfcf;
+}
+
+/* line 2274, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.simpleTileSelected,
+.simpleTileSelectedOver {
+ background-color: #fafafa;
+ background-image: url(images/TileGrid/tileOver.png);
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #e3e3e3));
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ background-image: -moz-linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ background-image: -ms-linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ background-image: linear-gradient(top, #fafafa 0%, #e3e3e3 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#e3e3e3');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#e3e3e3')";
+ border: 1px solid #cfcfcf;
+}
+
+/*============================================================
+ 15) Scrollbars
+============================================================*/
+/* CSS3 Mode */
+/*.scrollbar,
+.scrollbarDisabled,
+.scrollbarOver,
+.scrollbarDown {
+ background-color: isc-color-control(hsl($base_gray_hue, 0%, 94%));
+ border: 1px solid #FF8000;
+}
+
+.scrollbarFocused,
+.scrollbarFocusedDisabled,
+.scrollbarFocusedOver,
+.scrollbarFocusedDown {
+ background-color: isc-color-control(hsl($base_gray_hue, 0%, 94%));
+ border: 1px solid #0000ff;
+}
+
+.scrollbarSelected,
+.scrollbarSelectedDisabled,
+.scrollbarSelectedOver,
+.scrollbarSelectedDown {
+ background-color: isc-color-control(hsl($base_gray_hue, 0%, 94%));
+ border: 1px solid #0000FF;
+}
+
+.scrollbarSelectedFocused,
+.scrollbarSelectedFocusedDisabled,
+.scrollbarSelectedFocusedOver,
+.scrollbarSelectedFocusedDown {
+ background-color: isc-color-control(hsl($base_gray_hue, 0%, 94%));
+ border: 1px solid #ffff00;
+}*/
+/* CSS3 Mode */
+/* line 2321, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.vScrollThumb {
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f5f5f5), color-stop(50%, #e9e8e8), color-stop(50%, #dad7d7), color-stop(82%, #cecaca), color-stop(100%, #c4c0c0));
+ background-image: -webkit-linear-gradient(left, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ background-image: -moz-linear-gradient(left, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ background-image: -o-linear-gradient(left, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ background-image: -ms-linear-gradient(left, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ background-image: linear-gradient(left, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#f5f5f5', endColorstr='#c4c0c0');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#f5f5f5', endColorstr='#c4c0c0')";
+ border: 1px solid #969696;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ -ms-border-radius: 2px;
+ -khtml-border-radius: 2px;
+ border-radius: 2px;
+ -moz-box-shadow: inset -1px -1px 0 0 #dcdada, inset 0 1px 0 0 #ededed;
+ -webkit-box-shadow: inset -1px -1px 0 0 #dcdada, inset 0 1px 0 0 #ededed;
+ -o-box-shadow: inset -1px -1px 0 0 #dcdada, inset 0 1px 0 0 #ededed;
+ box-shadow: inset -1px -1px 0 0 #dcdada, inset 0 1px 0 0 #ededed;
+ margin-right: 1px;
+}
+
+/* line 2330, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.vScrollThumbOver {
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e3f4fc), color-stop(20%, #d5eefb), color-stop(50%, #d5eefb), color-stop(50%, #a7daf6), color-stop(80%, #a7daf6), color-stop(90%, #a4d5ef), color-stop(100%, #9ccae2));
+ background-image: -webkit-linear-gradient(left, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ background-image: -moz-linear-gradient(left, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ background-image: -o-linear-gradient(left, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ background-image: -ms-linear-gradient(left, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ background-image: linear-gradient(left, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#e3f4fc', endColorstr='#9ccae2');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#e3f4fc', endColorstr='#9ccae2')";
+ border: 1px solid #3c7daf;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ -ms-border-radius: 2px;
+ -khtml-border-radius: 2px;
+ border-radius: 2px;
+ -moz-box-shadow: inset -1px -1px 0 0 #dcdee0, inset 1px 1px 0 0 white;
+ -webkit-box-shadow: inset -1px -1px 0 0 #dcdee0, inset 1px 1px 0 0 white;
+ -o-box-shadow: inset -1px -1px 0 0 #dcdee0, inset 1px 1px 0 0 white;
+ box-shadow: inset -1px -1px 0 0 #dcdee0, inset 1px 1px 0 0 white;
+ margin-right: 1px;
+}
+
+/* line 2339, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.hScrollThumb {
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f5f5f5), color-stop(50%, #e9e8e8), color-stop(50%, #dad7d7), color-stop(82%, #cecaca), color-stop(100%, #c4c0c0));
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ background-image: -ms-linear-gradient(top, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ background-image: linear-gradient(top, #f5f5f5 0%, #e9e8e8 50%, #dad7d7 50%, #cecaca 82%, #c4c0c0 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f5f5f5', endColorstr='#c4c0c0');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f5f5f5', endColorstr='#c4c0c0')";
+ border: 1px solid #969696;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ -ms-border-radius: 2px;
+ -khtml-border-radius: 2px;
+ border-radius: 2px;
+ -moz-box-shadow: inset 1px -1px 0 0 #dcdada, inset 0 1px 0 1px #ededed;
+ -webkit-box-shadow: inset 1px -1px 0 0 #dcdada, inset 0 1px 0 1px #ededed;
+ -o-box-shadow: inset 1px -1px 0 0 #dcdada, inset 0 1px 0 1px #ededed;
+ box-shadow: inset 1px -1px 0 0 #dcdada, inset 0 1px 0 1px #ededed;
+ margin-bottom: 1px;
+}
+
+/* line 2348, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.hScrollThumbOver {
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e3f4fc), color-stop(20%, #d5eefb), color-stop(50%, #d5eefb), color-stop(50%, #a7daf6), color-stop(80%, #a7daf6), color-stop(90%, #a4d5ef), color-stop(100%, #9ccae2));
+ background-image: -webkit-linear-gradient(top, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ background-image: -moz-linear-gradient(top, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ background-image: -o-linear-gradient(top, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ background-image: -ms-linear-gradient(top, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ background-image: linear-gradient(top, #e3f4fc 0%, #d5eefb 20%, #d5eefb 50%, #a7daf6 50%, #a7daf6 80%, #a4d5ef 90%, #9ccae2 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#e3f4fc', endColorstr='#9ccae2');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#e3f4fc', endColorstr='#9ccae2')";
+ border: 1px solid #3c7daf;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ -ms-border-radius: 2px;
+ -khtml-border-radius: 2px;
+ border-radius: 2px;
+ -moz-box-shadow: inset 1px -1px 0 0 #dcdee0, inset -1px 1px 0 0 white;
+ -webkit-box-shadow: inset 1px -1px 0 0 #dcdee0, inset -1px 1px 0 0 white;
+ -o-box-shadow: inset 1px -1px 0 0 #dcdee0, inset -1px 1px 0 0 white;
+ box-shadow: inset 1px -1px 0 0 #dcdee0, inset -1px 1px 0 0 white;
+ margin-bottom: 1px;
+}
+
+/*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+
+ Styles below this comment are not used by default in this skin
+
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
+/*============================================================
+ TabSet CSS tabs
+ tabSet.simpleTabBaseStyle
+============================================================*/
+/* styles for simple css-styled tabs*/
+/* left */
+/* line 2373, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonLeft {
+ background: #f0f8ff;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f0f8ff), color-stop(4%, #f0f8ff), color-stop(4%, #e7f0fe), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ background-image: linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#f0f8ff', endColorstr='#c4ddfd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#f0f8ff', endColorstr='#c4ddfd')";
+ border-bottom: 1px solid #8fa7c7;
+ border-left: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ color: #153e8a;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 2391, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonLeftOver {
+ background: #e7f0fe;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e7f0fe), color-stop(4%, #e7f0fe), color-stop(4%, #c4ddfd), color-stop(100%, #e7f0fe));
+ background-image: -webkit-linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ background-image: -moz-linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ background-image: -o-linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ background-image: -ms-linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ background-image: linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#e7f0fe', endColorstr='#e7f0fe');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#e7f0fe', endColorstr='#e7f0fe')";
+ border-bottom: 1px solid #8fa7c7;
+ border-left: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ color: #153e8a;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 2411, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonLeftSelected {
+ background: #f0f8ff;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f0f8ff), color-stop(4%, #f0f8ff), color-stop(4%, #e7f0fe), color-stop(100%, #fafafa));
+ background-image: -webkit-linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #fafafa 100%);
+ background-image: -moz-linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #fafafa 100%);
+ background-image: -o-linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #fafafa 100%);
+ background-image: -ms-linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #fafafa 100%);
+ background-image: linear-gradient(left, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #fafafa 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#f0f8ff', endColorstr='#fafafa');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#f0f8ff', endColorstr='#fafafa')";
+ border-bottom: 1px solid #8fa7c7;
+ border-left: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 2432, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonLeftDown,
+.tabButtonLeftFocused,
+.tabButtonLeftSelectedFocused,
+.tabButtonLeftSelectedFocusedOver {
+ background-color: #d6d6d6;
+ border-bottom: 1px solid #8fa7c7;
+ border-left: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 2447, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonLeftSelectedDown,
+.tabButtonLeftSelectedOver {
+ background: #e7f0fe;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e7f0fe), color-stop(4%, #e7f0fe), color-stop(4%, #c9dffd), color-stop(49%, #fafafa), color-stop(100%, #fafafa));
+ background-image: -webkit-linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #fafafa 49%, #fafafa 100%);
+ background-image: -moz-linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #fafafa 49%, #fafafa 100%);
+ background-image: -o-linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #fafafa 49%, #fafafa 100%);
+ background-image: -ms-linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #fafafa 49%, #fafafa 100%);
+ background-image: linear-gradient(left, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #fafafa 49%, #fafafa 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#e7f0fe', endColorstr='#fafafa');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#e7f0fe', endColorstr='#fafafa')";
+ border-bottom: 1px solid #8fa7c7;
+ border-left: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 2466, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonLeftSelectedDisabled,
+.tabButtonLeftDisabled {
+ background: #fafafa;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #fafafa), color-stop(4%, #fafafa), color-stop(4%, #e7f0fe), color-stop(100%, #f0f8ff));
+ background-image: -webkit-linear-gradient(left, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ background-image: -moz-linear-gradient(left, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ background-image: -o-linear-gradient(left, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ background-image: -ms-linear-gradient(left, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ background-image: linear-gradient(left, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#fafafa', endColorstr='#f0f8ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#fafafa', endColorstr='#f0f8ff')";
+ border-bottom: 1px solid #c3ceda;
+ border-left: 1px solid #c3ceda;
+ border-top: 1px solid #c3ceda;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ color: #666666;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* right */
+/* line 2485, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonRight {
+ background: #f0f8ff;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #c4ddfd), color-stop(96%, #e7f0fe), color-stop(96%, #f0f8ff), color-stop(100%, #f0f8ff));
+ background-image: -webkit-linear-gradient(left, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -moz-linear-gradient(left, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -o-linear-gradient(left, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -ms-linear-gradient(left, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: linear-gradient(left, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#c4ddfd', endColorstr='#f0f8ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#c4ddfd', endColorstr='#f0f8ff')";
+ border-bottom: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ color: #153e8a;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 2504, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonRightOver {
+ background: #e7f0fe;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e7f0fe), color-stop(96%, #c4ddfd), color-stop(96%, #e7f0fe), color-stop(100%, #e7f0fe));
+ background-image: -webkit-linear-gradient(left, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -moz-linear-gradient(left, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -o-linear-gradient(left, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -ms-linear-gradient(left, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: linear-gradient(left, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#e7f0fe', endColorstr='#e7f0fe');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#e7f0fe', endColorstr='#e7f0fe')";
+ border-bottom: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ color: #153e8a;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 2523, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonRightSelected {
+ background-color: #f0f8ff;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #fafafa), color-stop(96%, #e7f0fe), color-stop(96%, #f0f8ff), color-stop(100%, #f0f8ff));
+ background-image: -webkit-linear-gradient(left, #fafafa 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -moz-linear-gradient(left, #fafafa 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -o-linear-gradient(left, #fafafa 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -ms-linear-gradient(left, #fafafa 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: linear-gradient(left, #fafafa 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#fafafa', endColorstr='#f0f8ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#fafafa', endColorstr='#f0f8ff')";
+ border-bottom: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 2544, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonRightDown,
+.tabButtonRightFocused,
+.tabButtonRightSelectedFocused,
+.tabButtonRightSelectedFocusedOver {
+ background-color: #d6d6d6;
+ border-bottom: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 2559, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonRightSelectedDown,
+.tabButtonRightSelectedOver {
+ background: #e7f0fe;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #fafafa), color-stop(51%, #fafafa), color-stop(96%, #c9dffd), color-stop(96%, #e7f0fe), color-stop(100%, #e7f0fe));
+ background-image: -webkit-linear-gradient(left, #fafafa 0%, #fafafa 51%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -moz-linear-gradient(left, #fafafa 0%, #fafafa 51%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -o-linear-gradient(left, #fafafa 0%, #fafafa 51%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -ms-linear-gradient(left, #fafafa 0%, #fafafa 51%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: linear-gradient(left, #fafafa 0%, #fafafa 51%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#fafafa', endColorstr='#e7f0fe');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#fafafa', endColorstr='#e7f0fe')";
+ border-bottom: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 2578, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonRightSelectedDisabled,
+.tabButtonRightDisabled {
+ background-color: #fafafa;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f0f8ff), color-stop(96%, #e7f0fe), color-stop(96%, #fafafa), color-stop(100%, #fafafa));
+ background-image: -webkit-linear-gradient(left, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ background-image: -moz-linear-gradient(left, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ background-image: -o-linear-gradient(left, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ background-image: -ms-linear-gradient(left, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ background-image: linear-gradient(left, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#f0f8ff', endColorstr='#fafafa');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#f0f8ff', endColorstr='#fafafa')";
+ border-bottom: 1px solid #c3ceda;
+ border-right: 1px solid #c3ceda;
+ border-top: 1px solid #c3ceda;
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ color: #666666;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* top */
+/* line 2597, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonTop {
+ background-color: #c4ddfd;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(4%, #f0f8ff), color-stop(4%, #e7f0fe), color-stop(100%, #c4ddfd));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #c4ddfd 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#c4ddfd');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#c4ddfd')";
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 0 6px 1px 11px;
+}
+
+/* line 2615, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonTopOver {
+ background-color: #c4ddfd;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fe), color-stop(4%, #e7f0fe), color-stop(4%, #c4ddfd), color-stop(100%, #e7f0fe));
+ background-image: -webkit-linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ background-image: -moz-linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ background-image: -o-linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ background-image: -ms-linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ background-image: linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c4ddfd 4%, #e7f0fe 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#e7f0fe');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#e7f0fe')";
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ color: #153e8a;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 0 6px 1px 11px;
+}
+
+/* line 2635, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonTopSelectedOver,
+.tabButtonTopSelectedDown {
+ background-color: #d0dff6;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fe), color-stop(4%, #e7f0fe), color-stop(4%, #c9dffd), color-stop(35%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #ffffff 35%);
+ background-image: -moz-linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #ffffff 35%);
+ background-image: -o-linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #ffffff 35%);
+ background-image: -ms-linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #ffffff 35%);
+ background-image: linear-gradient(top, #e7f0fe 0%, #e7f0fe 4%, #c9dffd 4%, #ffffff 35%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#fafafa');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#fafafa')";
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ color: #153e8a;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 0 6px 1px 7px;
+}
+
+/* line 2657, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonTopFocused,
+.tabButtonTopSelectedFocused,
+.tabButtonTopSelectedFocusedOver {
+ background-color: #d6d6d6;
+ border-left: 1px solid gray;
+ border-right: 1px solid gray;
+ border-top: 1px solid gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 0 6px 1px 7px;
+}
+
+/* line 2671, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonTopSelected {
+ background-color: #f0f8ff;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(4%, #f0f8ff), color-stop(4%, #e7f0fe), color-stop(100%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='white');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='white')";
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 0 6px 1px 7px;
+}
+
+/* line 2690, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonTopDown {
+ background-color: #f0f8ff;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(4%, #f0f8ff), color-stop(4%, #e7f0fe), color-stop(100%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #f0f8ff 4%, #e7f0fe 4%, #ffffff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='white');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='white')";
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ color: #153e8a;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 0 6px 1px 7px;
+}
+
+/* line 2711, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonTopSelectedDisabled,
+.tabButtonTopDisabled {
+ background-color: #e7f0fe;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(4%, #fafafa), color-stop(4%, #e7f0fe), color-stop(100%, #f0f8ff));
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ background-image: -moz-linear-gradient(top, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ background-image: -ms-linear-gradient(top, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ background-image: linear-gradient(top, #fafafa 0%, #fafafa 4%, #e7f0fe 4%, #f0f8ff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#f0f8ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#f0f8ff')";
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -o-border-top-right-radius: 5px;
+ -ms-border-top-right-radius: 5px;
+ -khtml-border-top-right-radius: 5px;
+ border-top-right-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ -o-border-top-left-radius: 5px;
+ -ms-border-top-left-radius: 5px;
+ -khtml-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ border-left: 1px solid #cccccc;
+ border-right: 1px solid #cccccc;
+ border-top: 1px solid #cccccc;
+ color: #ababab;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 0 6px 1px 7px;
+}
+
+/* bottom */
+/* line 2731, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonBottom {
+ background-color: #c4ddfd;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c4ddfd), color-stop(96%, #e7f0fe), color-stop(96%, #f0f8ff), color-stop(100%, #f0f8ff));
+ background-image: -webkit-linear-gradient(top, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -moz-linear-gradient(top, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -o-linear-gradient(top, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -ms-linear-gradient(top, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: linear-gradient(top, #c4ddfd 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#c4ddfd', endColorstr='#f0f8ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c4ddfd', endColorstr='#f0f8ff')";
+ border-bottom: 1px solid #8fa7c7;
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 0 6px 0 11px;
+}
+
+/* line 2749, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonBottomOver {
+ background-color: #c4ddfd;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fe), color-stop(96%, #c4ddfd), color-stop(96%, #e7f0fe), color-stop(100%, #e7f0fe));
+ background-image: -webkit-linear-gradient(top, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -moz-linear-gradient(top, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -o-linear-gradient(top, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -ms-linear-gradient(top, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: linear-gradient(top, #e7f0fe 0%, #c4ddfd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#e7f0fe');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#e7f0fe', endColorstr='#e7f0fe')";
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-bottom: 1px solid #8fa7c7;
+ color: #153e8a;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 0 6px 0 11px;
+}
+
+/* line 2769, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonBottomSelectedOver,
+.tabButtonBottomSelectedDown {
+ background-color: #d0dff6;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(65%, #fafafa), color-stop(96%, #c9dffd), color-stop(96%, #e7f0fe), color-stop(100%, #e7f0fe));
+ background-image: -webkit-linear-gradient(top, #fafafa 65%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -moz-linear-gradient(top, #fafafa 65%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -o-linear-gradient(top, #fafafa 65%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: -ms-linear-gradient(top, #fafafa 65%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ background-image: linear-gradient(top, #fafafa 65%, #c9dffd 96%, #e7f0fe 96%, #e7f0fe 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#e7f0fe');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#fafafa', endColorstr='#e7f0fe')";
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-bottom: 1px solid #8fa7c7;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 0 6px 0 7px;
+}
+
+/* line 2790, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonBottomFocused,
+.tabButtonBottomSelectedFocused,
+.tabButtonBottomSelectedFocusedOver {
+ background-color: #d6d6d6;
+ border-bottom: 1px solid gray;
+ border-left: 1px solid gray;
+ border-right: 1px solid gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 0 6px 0 7px;
+}
+
+/* line 2805, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonBottomSelected {
+ background-color: #f0f8ff;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(96%, #e7f0fe), color-stop(96%, #f0f8ff), color-stop(100%, #f0f8ff));
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='white', endColorstr='#f0f8ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='white', endColorstr='#f0f8ff')";
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ border-bottom: 1px solid #8fa7c7;
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 0 6px 0 7px;
+}
+
+/* line 2824, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonBottomDown {
+ background-color: #f0f8ff;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(96%, #e7f0fe), color-stop(96%, #f0f8ff), color-stop(100%, #f0f8ff));
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #e7f0fe 96%, #f0f8ff 96%, #f0f8ff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='white', endColorstr='#f0f8ff');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='white', endColorstr='#f0f8ff')";
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ border-left: 1px solid #8fa7c7;
+ border-right: 1px solid #8fa7c7;
+ border-top: 1px solid #8fa7c7;
+ color: #153e8a;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 0 6px 0 7px;
+}
+
+/* line 2845, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.tabButtonBottomSelectedDisabled,
+.tabButtonBottomDisabled {
+ background-color: #e7f0fe;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f8ff), color-stop(96%, #e7f0fe), color-stop(96%, #fafafa), color-stop(100%, #fafafa));
+ background-image: -webkit-linear-gradient(top, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ background-image: -moz-linear-gradient(top, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ background-image: -o-linear-gradient(top, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ background-image: -ms-linear-gradient(top, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ background-image: linear-gradient(top, #f0f8ff 0%, #e7f0fe 96%, #fafafa 96%, #fafafa 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#fafafa');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0f8ff', endColorstr='#fafafa')";
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -o-border-bottom-right-radius: 5px;
+ -ms-border-bottom-right-radius: 5px;
+ -khtml-border-bottom-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -o-border-bottom-left-radius: 5px;
+ -ms-border-bottom-left-radius: 5px;
+ -khtml-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ border-bottom: 1px solid #cccccc;
+ border-left: 1px solid #cccccc;
+ border-right: 1px solid #cccccc;
+ color: #ababab;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding: 0 6px 0 7px;
+}
+
+/*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+
+ Styles below this comment are used by optional modules only
+
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
+/*============================================================
+ CubeGrid - Analytics Module only
+ cubeGrid.baseStyle - cubeCell
+ headerGrid.baseStyle - rowHeader
+ reportHeaderBar.button.baseStyle - rowHeader
+ reportHeaderBar.button.baseStyle - innerHeader/colHeader
+ reportHeaderBar.button.baseStyle - rowHeaderLabel
+ reportHeaderBar.button.baseStyle - colHeaderLabel
+============================================================*/
+/* line 2884, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cubeCell {
+ background-color: white;
+ border-bottom: 1px solid #ababab;
+ border-left: 1px solid white;
+ border-right: 1px solid #ababab;
+ border-top: 1px solid white;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ text-overflow: ellipsis;
+}
+
+/* line 2900, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cubeCellDark {
+ background-color: #f0f0f0;
+ border-bottom: 1px solid #ababab;
+ border-left: 1px solid #f0f0f0;
+ border-right: 1px solid #ababab;
+ border-top: 1px solid #f0f0f0;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ text-overflow: ellipsis;
+}
+
+/* line 2916, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cubeCellDisabled {
+ background-color: white;
+ border-bottom: 1px solid white;
+ border-left: 1px solid white;
+ border-right: 1px solid white;
+ border-top: 1px solid white;
+ color: #666666;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ text-overflow: ellipsis;
+}
+
+/* partial styles */
+/* line 2933, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cubeCellOver {
+ background-color: #b8cfef;
+ border-bottom: 1px solid #ababab;
+ border-left: 1px solid #b8cfef;
+ border-right: 1px solid #ababab;
+ border-top: 1px solid #b8cfef;
+}
+
+/* line 2943, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cubeCellSelected {
+ background-color: #FFE781;
+ border-bottom: 1px solid #ababab;
+ border-left: 1px solid #FFE781;
+ border-right: 1px solid #ababab;
+ border-top: 1px solid #FFE781;
+}
+
+/* line 2953, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.cubeCellSelectedOver {
+ background-color: #b8cfef;
+ border-bottom: 1px solid #ababab;
+ border-left: 1px solid #b8cfef;
+ border-right: 1px solid #ababab;
+ border-top: 1px solid #b8cfef;
+}
+
+/* row headers */
+/* line 2964, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeader {
+ background-color: #56728a;
+ background-image: url(images/CubeGrid/rowHeader.gif);
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #56728a), color-stop(50%, #7590ae), color-stop(100%, #56728a));
+ background-image: -webkit-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: -moz-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: -o-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: -ms-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#56728a', endColorstr='#7590ae');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#56728a', endColorstr='#7590ae')";
+ border-bottom: 1px solid #204269;
+ border-left: 1px solid white;
+ border-right: 1px solid #204269;
+ border-top: 1px solid white;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 2984, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderOver {
+ background-color: #65819f;
+ background-image: url(images/CubeGrid/rowHeaderOver.gif);
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #56728a), color-stop(50%, #7590ae), color-stop(100%, #56728a));
+ background-image: -webkit-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: -moz-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: -o-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: -ms-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#56728a', endColorstr='#7590ae');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#56728a', endColorstr='#7590ae')";
+ border-bottom: 1px solid white;
+ border-left: 1px solid #204269;
+ border-right: 1px solid white;
+ border-top: 1px solid #204269;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3004, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderDown {
+ background-color: #65819f;
+ background-image: url("images/CubeGrid/rowHeaderOver.gif");
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #56728a), color-stop(50%, #7590ae), color-stop(100%, #56728a));
+ background-image: -webkit-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: -moz-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: -o-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: -ms-linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ background-image: linear-gradient(left, #56728a 0%, #7590ae 50%, #56728a 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#56728a', endColorstr='#7590ae');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#56728a', endColorstr='#7590ae')";
+ border-bottom: 1px solid white;
+ border-left: 1px solid #204269;
+ border-right: 1px solid white;
+ border-top: 1px solid #204269;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3024, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderDisabled {
+ background-color: #65819f;
+ border: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3035, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderSelected,
+.rowHeaderSelectedDown {
+ background-color: #3d74b3;
+ background-image: url("images/CubeGrid/rowHeaderSelected.gif");
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #1d4191), color-stop(50%, #5e95d4), color-stop(100%, #1d4391));
+ background-image: -webkit-linear-gradient(left, #1d4191 0%, #5e95d4 50%, #1d4391 100%);
+ background-image: -moz-linear-gradient(left, #1d4191 0%, #5e95d4 50%, #1d4391 100%);
+ background-image: -o-linear-gradient(left, #1d4191 0%, #5e95d4 50%, #1d4391 100%);
+ background-image: -ms-linear-gradient(left, #1d4191 0%, #5e95d4 50%, #1d4391 100%);
+ background-image: linear-gradient(left, #1d4191 0%, #5e95d4 50%, #1d4391 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#1d4191', endColorstr='#1d4391');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#1d4191', endColorstr='#1d4391')";
+ border-bottom: 1px solid #f0f8ff;
+ border-left: 1px solid #000099;
+ border-right: 1px solid #f0f8ff;
+ border-top: 1px solid #000099;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3055, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderSelectedOver {
+ background-color: #5e95d4;
+ background-image: url("images/CubeGrid/rowHeaderSelectedOver.gif");
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #5e95d4), color-stop(50%, #1d4391), color-stop(100%, #5e95d4));
+ background-image: -webkit-linear-gradient(left, #5e95d4 0%, #1d4391 50%, #5e95d4 100%);
+ background-image: -moz-linear-gradient(left, #5e95d4 0%, #1d4391 50%, #5e95d4 100%);
+ background-image: -o-linear-gradient(left, #5e95d4 0%, #1d4391 50%, #5e95d4 100%);
+ background-image: -ms-linear-gradient(left, #5e95d4 0%, #1d4391 50%, #5e95d4 100%);
+ background-image: linear-gradient(left, #5e95d4 0%, #1d4391 50%, #5e95d4 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#5e95d4', endColorstr='#1d4391');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#5e95d4', endColorstr='#1d4391')";
+ border: 1px solid white;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3070, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderSelectedDisabled {
+ background-color: #3d74b3;
+ border: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* row label */
+/* line 3081, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderLabel {
+ background-color: #204b79;
+ background-image: url("images/CubeGrid/rowHeaderLabel.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #224e7c), color-stop(2%, #3f6a97), color-stop(98%, #3f6a97), color-stop(100%, #224e7c));
+ background-image: -webkit-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: -moz-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: -o-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: -ms-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97')";
+ border-bottom: 1px solid #000a38;
+ border-left: 1px solid white;
+ border-right: 1px solid #000a38;
+ border-top: 1px solid white;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3102, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderLabelOver {
+ background-color: #204b79;
+ background-image: url("images/CubeGrid/rowHeaderLabel.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #224e7c), color-stop(2%, #3f6a97), color-stop(98%, #3f6a97), color-stop(100%, #224e7c));
+ background-image: -webkit-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: -moz-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: -o-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: -ms-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97')";
+ border-bottom: 1px solid white;
+ border-left: 1px solid #000a38;
+ border-right: 1px solid white;
+ border-top: 1px solid #000a38;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3123, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderLabelDown {
+ background-color: #204b79;
+ background-image: url("images/CubeGrid/rowHeaderLabelDown.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #224e7c), color-stop(2%, #3f6a97), color-stop(98%, #3f6a97), color-stop(100%, #224e7c));
+ background-image: -webkit-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: -moz-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: -o-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: -ms-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ background-image: linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 98%, #224e7c 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97')";
+ border-bottom: 1px solid white;
+ border-left: 1px solid #000a38;
+ border-right: 1px solid white;
+ border-top: 1px solid #000a38;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3144, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderLabelDisabled {
+ background-color: gray;
+ border: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3156, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderLabelSelected,
+.rowHeaderLabelSelectedDown {
+ background-color: #3d74b3;
+ background-image: url("images/CubeGrid/rowHeaderDown.gif");
+ border-bottom: 1px solid #545454;
+ border-left: 1px solid black;
+ border-right: 1px solid #545454;
+ border-top: 1px solid black;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3175, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderLabelSelectedOver {
+ background-color: #3d74b3;
+ background-image: url("images/CubeGrid/rowHeaderDown.gif");
+ border-bottom: 1px solid white;
+ border-left: 1px solid white;
+ border-right: 1px solid white;
+ border-top: 1px solid white;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3194, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.rowHeaderLabelSelectedDisabled {
+ background-color: gray;
+ border: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* column headers */
+/* line 3206, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeader {
+ background-color: #65819f;
+ background-image: url("images/CubeGrid/colHeader.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #47637b), color-stop(2%, #819ebb), color-stop(98%, #819ebb), color-stop(100%, #47637b));
+ background-image: -webkit-linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ background-image: -moz-linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ background-image: -o-linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ background-image: -ms-linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ background-image: linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#819ebb', endColorstr='#47637b');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#819ebb', endColorstr='#47637b')";
+ border-bottom: 1px solid #204269;
+ border-left: 1px solid white;
+ border-right: 1px solid #204269;
+ border-top: 1px solid white;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3226, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderOver {
+ background-color: #65819f;
+ background-image: url("images/CubeGrid/colHeaderOver.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #87a2c0), color-stop(2%, #4b6781), color-stop(98%, #4b6781), color-stop(100%, #87a2c0));
+ background-image: -webkit-linear-gradient(top, #87a2c0 0%, #4b6781 2%, #4b6781 98%, #87a2c0 100%);
+ background-image: -moz-linear-gradient(top, #87a2c0 0%, #4b6781 2%, #4b6781 98%, #87a2c0 100%);
+ background-image: -o-linear-gradient(top, #87a2c0 0%, #4b6781 2%, #4b6781 98%, #87a2c0 100%);
+ background-image: -ms-linear-gradient(top, #87a2c0 0%, #4b6781 2%, #4b6781 98%, #87a2c0 100%);
+ background-image: linear-gradient(top, #87a2c0 0%, #4b6781 2%, #4b6781 98%, #87a2c0 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#87a2c0', endColorstr='#4b6781');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#87a2c0', endColorstr='#4b6781')";
+ border-bottom: 1px solid white;
+ border-left: 1px solid #204269;
+ border-right: 1px solid white;
+ border-top: 1px solid #204269;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3246, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderDown {
+ background-color: #65819f;
+ background-image: url("images/CubeGrid/colHeader.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #47637b), color-stop(2%, #819ebb), color-stop(98%, #819ebb), color-stop(100%, #47637b));
+ background-image: -webkit-linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ background-image: -moz-linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ background-image: -o-linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ background-image: -ms-linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ background-image: linear-gradient(top, #47637b 0%, #819ebb 2%, #819ebb 98%, #47637b 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#819ebb', endColorstr='#47637b');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#819ebb', endColorstr='#47637b')";
+ border-bottom: 1px solid white;
+ border-left: 1px solid #204269;
+ border-right: 1px solid white;
+ border-top: 1px solid #204269;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3266, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderDisabled {
+ background-color: #65819f;
+ border-bottom: 1px solid gray;
+ border-left: 1px solid gray;
+ border-right: 1px solid gray;
+ border-top: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3282, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderSelected,
+.colHeaderSelectedDown {
+ background-color: #3d74b3;
+ background-image: url("images/CubeGrid/colHeaderSelected.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1f4693), color-stop(2%, #598ecf), color-stop(98%, #598ecf), color-stop(100%, #1f4693));
+ background-image: -webkit-linear-gradient(top, #1f4693 0%, #598ecf 2%, #598ecf 98%, #1f4693 100%);
+ background-image: -moz-linear-gradient(top, #1f4693 0%, #598ecf 2%, #598ecf 98%, #1f4693 100%);
+ background-image: -o-linear-gradient(top, #1f4693 0%, #598ecf 2%, #598ecf 98%, #1f4693 100%);
+ background-image: -ms-linear-gradient(top, #1f4693 0%, #598ecf 2%, #598ecf 98%, #1f4693 100%);
+ background-image: linear-gradient(top, #1f4693 0%, #598ecf 2%, #598ecf 98%, #1f4693 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#1f4693', endColorstr='#598ecf');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#1f4693', endColorstr='#598ecf')";
+ border-bottom: 1px solid #f0f8ff;
+ border-left: 1px solid #000099;
+ border-right: 1px solid #f0f8ff;
+ border-top: 1px solid #000099;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3303, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderSelectedOver {
+ background-color: #3d74b3;
+ background-image: url("images/CubeGrid/colHeaderSelectedOver.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5f95d3), color-stop(4%, #214897), color-stop(5%, #234b9a), color-stop(95%, #234b9a), color-stop(96%, #214897), color-stop(100%, #5f95d3));
+ background-image: -webkit-linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ background-image: -moz-linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ background-image: -o-linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ background-image: -ms-linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ background-image: linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#5f95d3', endColorstr='#234b9a');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#5f95d3', endColorstr='#234b9a')";
+ border: 1px solid white;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3319, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderSelectedDisabled {
+ background-color: #3d74b3;
+ border: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* column label */
+/* line 3331, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderLabel {
+ background-color: #204b79;
+ background-image: url("images/CubeGrid/colHeaderLabel.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #224e7c), color-stop(2%, #3f6a97), color-stop(50%, #3f6a97), color-stop(98%, #3f6a97), color-stop(100%, #224e7c));
+ background-image: -webkit-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 50%, #3f6a97 98%, #224e7c 100%);
+ background-image: -moz-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 50%, #3f6a97 98%, #224e7c 100%);
+ background-image: -o-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 50%, #3f6a97 98%, #224e7c 100%);
+ background-image: -ms-linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 50%, #3f6a97 98%, #224e7c 100%);
+ background-image: linear-gradient(top, #224e7c 0%, #3f6a97 2%, #3f6a97 50%, #3f6a97 98%, #224e7c 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97')";
+ border-bottom: 1px solid #545454;
+ border-left: 1px solid white;
+ border-right: 1px solid #545454;
+ border-top: 1px solid white;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3353, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderLabelOver,
+.colHeaderLabelDown {
+ background-color: #204b79;
+ background-image: url("images/CubeGrid/colHeaderLabelDown.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #224e7c), color-stop(50%, #3f6a97), color-stop(100%, #224e7c));
+ background-image: -webkit-linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ background-image: -moz-linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ background-image: -o-linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ background-image: -ms-linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ background-image: linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97')";
+ border-bottom: 1px solid #545454;
+ border-left: 1px solid #000a38;
+ border-right: 1px solid #545454;
+ border-top: 1px solid #000a38;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3374, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderLabelDisabled {
+ background-color: gray;
+ border: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3386, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderLabelSelected,
+.colHeaderLabelSelectedDown {
+ background-color: #3d74b3;
+ background-image: url("images/CubeGrid/colHeaderLabelDown.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #224e7c), color-stop(50%, #3f6a97), color-stop(100%, #224e7c));
+ background-image: -webkit-linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ background-image: -moz-linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ background-image: -o-linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ background-image: -ms-linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ background-image: linear-gradient(top, #224e7c 0%, #3f6a97 50%, #224e7c 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#224e7c', endColorstr='#3f6a97')";
+ border-bottom: 1px solid #545454;
+ border-left: 1px solid black;
+ border-right: 1px solid #545454;
+ border-top: 1px solid black;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3407, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderLabelSelectedOver {
+ background-color: #3d74b3;
+ background-image: url("images/CubeGrid/colHeaderDown.gif");
+ border-bottom: 1px solid #545454;
+ border-left: 1px solid white;
+ border-right: 1px solid #545454;
+ border-top: 1px solid white;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3426, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.colHeaderLabelSelectedDisabled {
+ background-color: gray;
+ border-bottom: 1px solid gray;
+ border-left: 1px solid gray;
+ border-right: 1px solid gray;
+ border-top: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* inner header */
+/* line 3443, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.innerHeader {
+ background-color: #cccccc;
+ background-image: url("images/CubeGrid/innerHeader.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ababab), color-stop(1%, #bababa), color-stop(2%, #cccccc), color-stop(3%, #d6d6d6), color-stop(4%, #e8e8e8), color-stop(96%, #e8e8e8), color-stop(97%, #d4d4d4), color-stop(98%, #cccccc), color-stop(99%, #bababa), color-stop(100%, #ababab));
+ background-image: -webkit-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: -moz-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: -o-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: -ms-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#ababab', endColorstr='#e8e8e8');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ababab', endColorstr='#e8e8e8')";
+ border-bottom: 1px solid gray;
+ border-left: 1px solid white;
+ border-right: 1px solid gray;
+ border-top: 1px solid white;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3463, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.innerHeaderOver {
+ background-color: #cccccc;
+ background-image: url("images/CubeGrid/innerHeader.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ababab), color-stop(1%, #bababa), color-stop(2%, #cccccc), color-stop(3%, #d6d6d6), color-stop(4%, #e8e8e8), color-stop(96%, #e8e8e8), color-stop(97%, #d4d4d4), color-stop(98%, #cccccc), color-stop(99%, #bababa), color-stop(100%, #ababab));
+ background-image: -webkit-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: -moz-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: -o-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: -ms-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#ababab', endColorstr='#e8e8e8');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ababab', endColorstr='#e8e8e8')";
+ border-bottom: 1px solid white;
+ border-left: 1px solid gray;
+ border-right: 1px solid white;
+ border-top: 1px solid gray;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3483, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.innerHeaderDown {
+ background-color: #cccccc;
+ background-image: url("images/CubeGrid/innerHeader.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ababab), color-stop(1%, #bababa), color-stop(2%, #cccccc), color-stop(3%, #d6d6d6), color-stop(4%, #e8e8e8), color-stop(96%, #e8e8e8), color-stop(97%, #d4d4d4), color-stop(98%, #cccccc), color-stop(99%, #bababa), color-stop(100%, #ababab));
+ background-image: -webkit-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: -moz-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: -o-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: -ms-linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ background-image: linear-gradient(top, #ababab 0%, #bababa 1%, #cccccc 2%, #d6d6d6 3%, #e8e8e8 4%, #e8e8e8 96%, #d4d4d4 97%, #cccccc 98%, #bababa 99%, #ababab 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#ababab', endColorstr='#e8e8e8');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ababab', endColorstr='#e8e8e8')";
+ border-bottom: 1px solid white;
+ border-left: 1px solid gray;
+ border-right: 1px solid white;
+ border-top: 1px solid gray;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3503, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.innerHeaderDisabled {
+ background-color: #cccccc;
+ border-bottom: 1px solid gray;
+ border-left: 1px solid gray;
+ border-right: 1px solid gray;
+ border-top: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3519, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.innerHeaderSelected,
+.innerHeaderSelectedDown {
+ background-color: #3d74b3;
+ background-image: url("images/CubeGrid/innerHeaderSelected.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1d4191), color-stop(4%, #5990cf), color-stop(96%, #5990cf), color-stop(100%, #1d4191));
+ background-image: -webkit-linear-gradient(top, #1d4191 0%, #5990cf 4%, #5990cf 96%, #1d4191 100%);
+ background-image: -moz-linear-gradient(top, #1d4191 0%, #5990cf 4%, #5990cf 96%, #1d4191 100%);
+ background-image: -o-linear-gradient(top, #1d4191 0%, #5990cf 4%, #5990cf 96%, #1d4191 100%);
+ background-image: -ms-linear-gradient(top, #1d4191 0%, #5990cf 4%, #5990cf 96%, #1d4191 100%);
+ background-image: linear-gradient(top, #1d4191 0%, #5990cf 4%, #5990cf 96%, #1d4191 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#5f95d3', endColorstr='#5990cf');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#5f95d3', endColorstr='#5990cf')";
+ border-bottom: 1px solid #f0f8ff;
+ border-left: 1px solid #000099;
+ border-right: 1px solid #f0f8ff;
+ border-top: 1px solid #000099;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3540, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.innerHeaderSelectedOver {
+ background-color: #3d74b3;
+ background-image: url("images/CubeGrid/innerHeaderSelectedOver.gif");
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5f95d3), color-stop(4%, #214897), color-stop(5%, #234b9a), color-stop(95%, #234b9a), color-stop(96%, #214897), color-stop(100%, #5f95d3));
+ background-image: -webkit-linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ background-image: -moz-linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ background-image: -o-linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ background-image: -ms-linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ background-image: linear-gradient(top, #5f95d3 0%, #214897 4%, #234b9a 5%, #234b9a 95%, #214897 96%, #5f95d3 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#5f95d3', endColorstr='#234b9a');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#5f95d3', endColorstr='#234b9a')";
+ border-bottom: 1px solid white;
+ border-left: 1px solid white;
+ border-right: 1px solid white;
+ border-top: 1px solid white;
+ color: white;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/* line 3561, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.innerHeaderSelectedDisabled {
+ background-color: #cccccc;
+ border: 1px solid gray;
+ color: gray;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/*============================================================
+ BarChart
+ internal, charting/visualization module only
+ styleName - chart
+ barStyle - chartBar
+ others are currently fixed
+============================================================*/
+/* line 3578, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.chart {
+ background-color: #cccccc;
+}
+
+/* line 3582, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.chartTitle {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 14px;
+ font-weight: bold;
+ text-align: center;
+}
+
+/* line 3592, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.chartAxisTitle {
+ color: #0000ff;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 12px;
+ font-weight: bold;
+}
+
+/* line 3601, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.chartValueTitle {
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3609, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.chartTotal {
+ background-color: linen;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 12px;
+}
+
+/* line 3618, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.chartBody {
+ background-color: #dedede;
+ border-left: 1px solid black;
+ border-right: 1px solid black;
+ border-top: 1px dashed #0000FF;
+}
+
+/* line 3627, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.chartBar1 {
+ background-color: #FF0000;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #990000), color-stop(100%, #ff0000));
+ background-image: -webkit-linear-gradient(left, #990000 0%, #ff0000 100%);
+ background-image: -moz-linear-gradient(left, #990000 0%, #ff0000 100%);
+ background-image: -o-linear-gradient(left, #990000 0%, #ff0000 100%);
+ background-image: -ms-linear-gradient(left, #990000 0%, #ff0000 100%);
+ background-image: linear-gradient(left, #990000 0%, #ff0000 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#990000', endColorstr='red');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#990000', endColorstr='red')";
+}
+
+/* line 3633, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.chartBar2 {
+ background-color: #0000FF;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #000099), color-stop(100%, #0000ff));
+ background-image: -webkit-linear-gradient(left, #000099 0%, #0000ff 100%);
+ background-image: -moz-linear-gradient(left, #000099 0%, #0000ff 100%);
+ background-image: -o-linear-gradient(left, #000099 0%, #0000ff 100%);
+ background-image: -ms-linear-gradient(left, #000099 0%, #0000ff 100%);
+ background-image: linear-gradient(left, #000099 0%, #0000ff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#000099', endColorstr='blue');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#000099', endColorstr='blue')";
+}
+
+/* line 3639, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.chartBar3 {
+ background-color: #0000ff;
+ background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #009900), color-stop(100%, #0000ff));
+ background-image: -webkit-linear-gradient(left, #009900 0%, #0000ff 100%);
+ background-image: -moz-linear-gradient(left, #009900 0%, #0000ff 100%);
+ background-image: -o-linear-gradient(left, #009900 0%, #0000ff 100%);
+ background-image: -ms-linear-gradient(left, #009900 0%, #0000ff 100%);
+ background-image: linear-gradient(left, #009900 0%, #0000ff 100%);
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#009900', endColorstr='blue');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#009900', endColorstr='blue')";
+}
+
+/*============================================================
+ Printing
+ printHeader - general print style for header elements including:
+ - ListGrid header cells
+ - SectionStack headers
+============================================================*/
+/* line 3652, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.printHeader {
+ border: 1px solid black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+/*============================================================
+ Calendar
+============================================================*/
+/* line 3667, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calendar,
+.calendarDisabled,
+.calendarWorkday,
+.calendarDark {
+ background-color: white;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3680, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calendarDisabled {
+ background-color: #fafafa;
+}
+
+/* line 3684, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calendarWorkday {
+ background-color: white;
+}
+
+/* line 3689, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calendarOver,
+.calendarOverDark {
+ background-color: #c0d8ec;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3702, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calendarCellSelected {
+ background-color: #cccccc;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3715, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.labelColumn {
+ background-color: #fafafa;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* ----month---- */
+/* calMonthDayHeader and Body */
+/* line 3731, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthDayHeader,
+.calMonthDayHeaderDark {
+ background-color: #fafafa;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3745, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthDayHeaderOver,
+.calMonthDayHeaderOverDark {
+ background-color: #c0d8ec;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3759, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthDayBody,
+.calMonthDayBodyDark {
+ background-color: white;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3773, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthDayBodyOver,
+.calMonthDayBodyOverDark {
+ background-color: #c0d8ec;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3787, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthDayBodyDisabled,
+.calMonthDayBodyDisabledOver {
+ background-color: #fafafa;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* calMonthOtherDayHeader and Body */
+/* line 3802, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthOtherDayHeader,
+.calMonthOtherDayHeaderDark {
+ background-color: #ababab;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: #454545;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3816, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthOtherDayHeaderOver,
+.calMonthOtherDayHeaderOverDark {
+ background-color: #c0d8ec;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: #454545;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3832, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthOtherDayBody,
+.calMonthOtherDayBodyDark,
+.calMonthOtherDayBodyDisabled,
+.calMonthOtherDayBodyDisabledOver {
+ background-color: #fafafa;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3846, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthOtherDayBodyOver,
+.calMonthOtherDayBodyOverDark {
+ background-color: #c0d8ec;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* calMonthOtherDayBlank */
+/* line 3863, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.calMonthOtherDayBlank,
+.calMonthOtherDayBlankDark,
+.calMonthOtherDayBlankOver,
+.calMonthOtherDayBlankOverDark {
+ background-color: #fafafa;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ color: #454545;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* calMonthEventLink */
+/* line 3877, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+a.calMonthEventLink:link {
+ color: #0000FF;
+ text-decoration: none;
+}
+
+/* line 3882, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+a.calMonthEventLink:visited {
+ color: #0000FF;
+ text-decoration: none;
+}
+
+/* line 3887, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+a.calMonthEventLink:hover {
+ color: #0000FF;
+ text-decoration: underline;
+}
+
+/* line 3892, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+a.calMonthEventLink:active {
+ color: #0000FF;
+ text-decoration: none;
+}
+
+/* ----event window---- */
+/* line 3898, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.eventWindow {
+ background-color: #f0f8ff;
+ border: 1px solid #d0dff6;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 9px;
+}
+
+/* line 3907, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.eventWindowHeader {
+ background-color: #d0dff6;
+ color: #4d4d4d;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 9px;
+}
+
+/* line 3916, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.eventWindowBody {
+ background-color: #f0f8ff;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 9px;
+ padding: 3px;
+}
+
+/* line 3926, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.eventWindowResizer {
+ border-bottom: 1px solid white;
+ border-top: 1px solid white;
+}
+
+/*============================================================
+ PropertySheet
+ internal, used by Visual SmartClient tools
+ propertySheet.autoChildDefaults.cellStyle - propSheetValue
+ propertySheet.autoChildDefaults.titleStyle - propSheetTitle
+ propertySheet.TextItemDefaults.textBoxStyle - propSheetField
+ propertySheet.SelectItemDefaults.controlStyle - propSheetSelectControl
+ propertySheet.ColorItemDefaults.textBoxStyle - propSheetField
+ propertySheet.HeaderItemDefaults.textBoxStyle - propSheetHeading
+ propertySheet.SectionHeaderItemDefaults.cellStyle - propSheetSectionItemCell
+============================================================*/
+/* line 3947, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.propSheetValue,
+.propSheetValueFocused,
+.propSheetDisabled {
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ margin: 0px;
+ padding: 0px;
+}
+
+/* line 3962, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.propSheetTitle,
+.propSheetTitleFocused,
+.propSheetTitleDisabled {
+ background-color: #dedede;
+ border-bottom: 1px solid #ababab;
+ border-right: 1px solid #ababab;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+/* line 3979, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.propSheetTitleError,
+.propSheetValueError {
+ background-color: #cfd9f2;
+ color: #204269;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+}
+
+/* line 3989, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.propSheetField,
+.propSheetFieldDisabled {
+ background-color: white;
+ border: 0px;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ margin-top: 3px;
+ padding-bottom: 0px;
+ padding-top: 0px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+/* line 4006, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.propSheetHeading,
+.propSheetHeadingDisabled {
+ background-color: #cccccc;
+ border-bottom: 1px solid #ababab;
+ color: black;
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 4px;
+}
+
+/* line 4020, ../_internalSource/EnterpriseSeries/sass/_base.scss */
+.propSheetSelectControl,
+.propSheetSelectControlFocused,
+.propSheetSelectControlDisabled {
+ padding-left: 3px;
+ padding-right: 3px;
+}
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/skin_styles.css.gz b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/skin_styles.css.gz
new file mode 100755
index 0000000..fa6850e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/skin_styles.css.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/unsupported_browser.html b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/unsupported_browser.html
new file mode 100755
index 0000000..567483f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/EnterpriseBlue/unsupported_browser.html
@@ -0,0 +1,89 @@
+<HTML>
+<HEAD>
+<STYLE>
+.normal {font-family:Verdana; font-size:12px;}
+.pageHeader {font-family:Verdana; font-size:24px; font-weight:bold;}
+</STYLE>
+<TITLE>Isomorphic SmartClient - Unsupported Browser</TITLE>
+</HEAD>
+<BODY BGCOLOR='white' CLASS=normal>
+<SCRIPT>
+var libs = [];
+</SCRIPT>
+<SPAN CLASS=pageHeader>Unsupported Browser Version</SPAN><br>
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+
+This page uses the <a href="http://www.isomorphic.com">Isomorphic SmartClient</a> web presentation layer (Version 7.1/LGPL Deployment - 2009-10-30), which requires one of the following supported DHTML web browsers:<br><br>
+
+<table class="normal" cellPadding=5>
+
+<tr><td width=40></td><td width=200>
+<b>Browser/Version</b>
+</td><td width=240>
+<b>Operating System(s)</b>
+</td><td>
+<b>Download Latest</b>
+</td></tr>
+
+<tr><td></td><td>
+<i>Internet Explorer 5.5-8.0</i>
+</td><td>
+Windows
+</td><td>
+<a href="http://www.microsoft.com/windows/ie/downloads/default.asp">Internet Explorer</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Netscape 7.2</i>
+</td><td>
+Windows/MacOS
+</td><td>
+<a href="http://channels.netscape.com/ns/browsers/download.jsp">Netscape</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Mozilla 1.4-1.8</i>
+</td><td>
+Windows/MacOS/Linux
+</td><td>
+<a href="http://www.mozilla.org/products/mozilla1.x/">Mozilla</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Firefox 1.0-3.5</i>
+</td><td>
+Windows/MacOS/Linux
+</td><td>
+<a href="http://www.mozilla.com/">Firefox</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Safari 1.2-4.0</i>
+</td><td>
+MacOS/Windows
+</td><td>
+<a href="http://www.apple.com/safari/download">Safari</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Chrome 1.0-2.0</i>
+</td><td>
+Windows
+</td><td>
+<a href="http://www.google.com/chrome">Safari</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Opera Beta: 9.x</i>
+</td><td>
+Beta: Windows/MacOS/Linux
+</td><td>
+<a href="http://www.opera.com/download/">Opera</a>
+</td></tr>
+
+</table><br>
+
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+<p>Last updated September 7, 2007.</p>
+
+</body></html>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/accept.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/accept.png
new file mode 100755
index 0000000..89c8129
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/accept.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/add.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/add.png
new file mode 100755
index 0000000..6332fef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/add.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/add_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/add_Disabled.png
new file mode 100755
index 0000000..244af57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/add_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/approve.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/approve.png
new file mode 100755
index 0000000..e250606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/approve.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/back.png
new file mode 100755
index 0000000..18f9cc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/back_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/back_Disabled.png
new file mode 100755
index 0000000..09c7ec7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/back_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close.png
new file mode 100755
index 0000000..34455d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Disabled.png
new file mode 100755
index 0000000..e5a6c8e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Down.png
new file mode 100755
index 0000000..09200c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Over.png
new file mode 100755
index 0000000..09200c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/color_swatch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/color_swatch.png
new file mode 100755
index 0000000..6e6e852
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/color_swatch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/column_preferences.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/column_preferences.png
new file mode 100755
index 0000000..b25350f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/column_preferences.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/configure.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/configure.png
new file mode 100755
index 0000000..ab54a83
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/configure.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/download.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/download.png
new file mode 100755
index 0000000..16bc94e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/download.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/edit.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/edit.png
new file mode 100755
index 0000000..115b8f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/edit.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/edit_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/edit_Disabled.png
new file mode 100755
index 0000000..1bdcde8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/edit_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/exclamation.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/exclamation.png
new file mode 100755
index 0000000..c37bd06
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/exclamation.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/filter.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/filter.png
new file mode 100755
index 0000000..149ae78
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/filter.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/first.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/first.png
new file mode 100755
index 0000000..b03eaf8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/first.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/forward.png
new file mode 100755
index 0000000..e252606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/forward_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/forward_Disabled.png
new file mode 100755
index 0000000..558d3ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/forward_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/freezeLeft.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/freezeLeft.png
new file mode 100755
index 0000000..8b3d44f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/freezeLeft.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/freezeRight.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/freezeRight.png
new file mode 100755
index 0000000..724397d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/freezeRight.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/groupby.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/groupby.png
new file mode 100755
index 0000000..29dd2ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/groupby.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/help.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/help.png
new file mode 100755
index 0000000..12cd1ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/help.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/last.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/last.png
new file mode 100755
index 0000000..8ec8947
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/last.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/next.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/next.png
new file mode 100755
index 0000000..e252606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/next.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/ok.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/ok.png
new file mode 100755
index 0000000..deefc12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/ok.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/plus.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/plus.png
new file mode 100755
index 0000000..4a7ea12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/plus.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/plus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/plus_Disabled.png
new file mode 100755
index 0000000..2c607b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/plus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/prev.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/prev.png
new file mode 100755
index 0000000..18f9cc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/prev.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/print.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/print.png
new file mode 100755
index 0000000..a350d18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/print.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/redo.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/redo.png
new file mode 100755
index 0000000..c7a23fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/redo.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/refresh.png
new file mode 100755
index 0000000..870adb5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/remove.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/remove.png
new file mode 100755
index 0000000..08f2493
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/remove.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/remove_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/remove_Disabled.png
new file mode 100755
index 0000000..f44069b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/remove_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/save.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/save.png
new file mode 100755
index 0000000..99d532e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/save.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/search.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/search.png
new file mode 100755
index 0000000..1547479
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/search.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/sort_ascending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/sort_ascending.png
new file mode 100755
index 0000000..8907478
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/sort_ascending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/sort_descending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/sort_descending.png
new file mode 100755
index 0000000..850d28b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/sort_descending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/text_linespacing.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/text_linespacing.png
new file mode 100755
index 0000000..1a91cbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/text_linespacing.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/undo.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/undo.png
new file mode 100755
index 0000000..69520e1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/undo.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/unfreeze.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/unfreeze.png
new file mode 100755
index 0000000..39c66a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/unfreeze.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/ungroup.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/ungroup.png
new file mode 100755
index 0000000..e140cd7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/ungroup.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/view.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/view.png
new file mode 100755
index 0000000..cf3d97f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/actions/view.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/black.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/black.gif
new file mode 100755
index 0000000..639e5f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/black.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/blank.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/blank.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/blank.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_end.png
new file mode 100755
index 0000000..bd2b022
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_start.png
new file mode 100755
index 0000000..06f557a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_stretch.png
new file mode 100755
index 0000000..0cfa96f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_end.png
new file mode 100755
index 0000000..7737ec1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_start.png
new file mode 100755
index 0000000..80cf669
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_stretch.png
new file mode 100755
index 0000000..e76a600
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_end.png
new file mode 100755
index 0000000..4dc18ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_end.png
new file mode 100755
index 0000000..c4380c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_start.png
new file mode 100755
index 0000000..a39d6a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_stretch.png
new file mode 100755
index 0000000..988ee10
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_end.png
new file mode 100755
index 0000000..7737ec1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_start.png
new file mode 100755
index 0000000..80cf669
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_stretch.png
new file mode 100755
index 0000000..e76a600
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_end.png
new file mode 100755
index 0000000..c4380c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_end.png
new file mode 100755
index 0000000..c4380c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_start.png
new file mode 100755
index 0000000..a39d6a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_stretch.png
new file mode 100755
index 0000000..988ee10
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_start.png
new file mode 100755
index 0000000..a39d6a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_stretch.png
new file mode 100755
index 0000000..988ee10
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_start.png
new file mode 100755
index 0000000..6884872
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_stretch.png
new file mode 100755
index 0000000..f494f9d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/button/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ColorPicker/crosshair.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ColorPicker/crosshair.png
new file mode 100755
index 0000000..0e850c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ColorPicker/crosshair.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ColorPicker/spectrum.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ColorPicker/spectrum.png
new file mode 100755
index 0000000..5ab45a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ColorPicker/spectrum.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker.png
new file mode 100755
index 0000000..3749f74
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker_Disabled.png
new file mode 100755
index 0000000..f1a4251
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker_Over.png
new file mode 100755
index 0000000..c5558a0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/comboBoxPicker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/date_control.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/date_control.png
new file mode 100755
index 0000000..f976971
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/date_control.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/date_control_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/date_control_Disabled.png
new file mode 100755
index 0000000..8d35aff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/date_control_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease.png
new file mode 100755
index 0000000..200fa8a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease_Disabled.png
new file mode 100755
index 0000000..c9d13d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease_Focused.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease_Focused.png
new file mode 100755
index 0000000..44c5a2b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_decrease_Focused.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase.png
new file mode 100755
index 0000000..012128b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase_Disabled.png
new file mode 100755
index 0000000..fadd855
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase_Focused.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase_Focused.png
new file mode 100755
index 0000000..878b5a5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/controls/spinner_control_increase_Focused.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Disabled_stretch.png
new file mode 100755
index 0000000..d163613
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Down_stretch.png
new file mode 100755
index 0000000..ed797da
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Over_stretch.png
new file mode 100755
index 0000000..b2bba42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Selected_stretch.png
new file mode 100755
index 0000000..ff9ac0c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_stretch.png
new file mode 100755
index 0000000..52b35df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/cssButton/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_down.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_left.gif
new file mode 100755
index 0000000..9761ae9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_right.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_closed_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open.gif
new file mode 100755
index 0000000..ca674eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_down.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_left.gif
new file mode 100755
index 0000000..aaf1b1d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_right.gif
new file mode 100755
index 0000000..03e0b21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_up.gif
new file mode 100755
index 0000000..ca674eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_open_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_opening.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_opening.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/arrow_opening.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/close.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/close.gif
new file mode 100755
index 0000000..f404e13
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/close.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/close_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/close_over.gif
new file mode 100755
index 0000000..67eb946
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/close_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeader.gif
new file mode 100755
index 0000000..e328587
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderDisabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderDisabled.gif
new file mode 100755
index 0000000..8e31489
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderDisabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderLabel.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderLabel.gif
new file mode 100755
index 0000000..276df64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderLabel.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderLabelDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderLabelDown.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderLabelDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderOver.gif
new file mode 100755
index 0000000..c074368
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderSelected.gif
new file mode 100755
index 0000000..dad4dcf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderSelectedOver.gif
new file mode 100755
index 0000000..f8a7d7c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/colHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/header_handle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/header_handle.gif
new file mode 100755
index 0000000..253c281
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/header_handle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/header_handle_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/header_handle_over.gif
new file mode 100755
index 0000000..33cdc51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/header_handle_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeader.gif
new file mode 100755
index 0000000..acf497c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderDown.gif
new file mode 100755
index 0000000..33679f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderSelected.gif
new file mode 100755
index 0000000..3674069
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderSelectedOver.gif
new file mode 100755
index 0000000..51f4876
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/innerHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/maximize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/maximize.gif
new file mode 100755
index 0000000..28a9b11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/maximize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/maximize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/maximize_over.gif
new file mode 100755
index 0000000..fb68ee9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/maximize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/minimize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/minimize.gif
new file mode 100755
index 0000000..dd98884
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/minimize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/minimize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/minimize_over.gif
new file mode 100755
index 0000000..e10091e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/minimize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeader.gif
new file mode 100755
index 0000000..5f3f9e8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderDisabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderDisabled.gif
new file mode 100755
index 0000000..8e31489
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderDisabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabel.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabel.gif
new file mode 100755
index 0000000..276df64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabel.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabelDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabelDown.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabelDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabelSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabelSelected.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderLabelSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderOver.gif
new file mode 100755
index 0000000..7087eb1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderSelected.gif
new file mode 100755
index 0000000..f4b8f1b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderSelectedOver.gif
new file mode 100755
index 0000000..47870df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/rowHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down.gif
new file mode 100755
index 0000000..2c128f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_over.gif
new file mode 100755
index 0000000..1284789
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_selected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_selected.gif
new file mode 100755
index 0000000..2c128f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_selected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_selected_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_selected_over.gif
new file mode 100755
index 0000000..ef333e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_down_selected_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up.gif
new file mode 100755
index 0000000..8c202a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_over.gif
new file mode 100755
index 0000000..4566c0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_selected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_selected.gif
new file mode 100755
index 0000000..8c202a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_selected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_selected_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_selected_over.gif
new file mode 100755
index 0000000..424a762
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/CubeGrid/sort_up_selected_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DatabaseBrowser/column.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DatabaseBrowser/column.png
new file mode 100755
index 0000000..bc0d8d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DatabaseBrowser/column.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DatabaseBrowser/data.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DatabaseBrowser/data.png
new file mode 100755
index 0000000..9bb17ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DatabaseBrowser/data.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/arrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/arrow_left.png
new file mode 100755
index 0000000..27e51c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/arrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/arrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/arrow_right.png
new file mode 100755
index 0000000..f3abb70
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/arrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/doubleArrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/doubleArrow_left.png
new file mode 100755
index 0000000..bcce7cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/doubleArrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/doubleArrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/doubleArrow_right.png
new file mode 100755
index 0000000..fe9e612
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DateChooser/doubleArrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/ask.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/ask.png
new file mode 100755
index 0000000..4831985
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/ask.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/confirm.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/confirm.png
new file mode 100755
index 0000000..0e32c96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/confirm.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/error.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/error.png
new file mode 100755
index 0000000..7854ed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/error.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/notify.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/notify.png
new file mode 100755
index 0000000..0e32c96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/notify.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/say.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/say.png
new file mode 100755
index 0000000..1b6b285
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/say.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/stop.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/stop.png
new file mode 100755
index 0000000..f4123c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/stop.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/warn copy.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/warn copy.png
new file mode 100755
index 0000000..7b79430
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/warn copy.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/warn.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/warn.png
new file mode 100755
index 0000000..7b79430
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Dialog/warn.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked.png
new file mode 100755
index 0000000..cc508f0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked_Disabled.png
new file mode 100755
index 0000000..7db2c82
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked_Down.png
new file mode 100755
index 0000000..e0acb4a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/checked_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/ColorPicker_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/ColorPicker_icon.png
new file mode 100755
index 0000000..6e6e852
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/ColorPicker_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/ColorPicker_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/ColorPicker_icon_Disabled.png
new file mode 100755
index 0000000..148a1af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/ColorPicker_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/date_control.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/date_control.png
new file mode 100755
index 0000000..628eec0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/date_control.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/date_control_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/date_control_Disabled.png
new file mode 100755
index 0000000..6d07b51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/date_control_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon.png
new file mode 100755
index 0000000..95bd5f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon_Disabled.png
new file mode 100755
index 0000000..ce5f46e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon_Over.png
new file mode 100755
index 0000000..a438bc4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/default_formItem_icon_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/partialcheck.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/partialcheck.png
new file mode 100755
index 0000000..74a71bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/partialcheck.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PopUpTextAreaEditor_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PopUpTextAreaEditor_icon.gif
new file mode 100755
index 0000000..38495fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PopUpTextAreaEditor_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_ColorPicker_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_ColorPicker_icon.png
new file mode 100755
index 0000000..c66f57a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_ColorPicker_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_pickbutton.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_pickbutton.gif
new file mode 100755
index 0000000..2267e52
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_pickbutton.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_pickbutton_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_pickbutton_Disabled.gif
new file mode 100755
index 0000000..192b347
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/PropSheet_pickbutton_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon.png
new file mode 100755
index 0000000..2e630c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon_Disabled.png
new file mode 100755
index 0000000..c4442f5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon_Over.png
new file mode 100755
index 0000000..6df322f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/Remove_icon_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease.png
new file mode 100755
index 0000000..200fa8a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease_Disabled.png
new file mode 100755
index 0000000..c9d13d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease_Focused.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease_Focused.png
new file mode 100755
index 0000000..44c5a2b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_decrease_Focused.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase.png
new file mode 100755
index 0000000..012128b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase_Disabled.png
new file mode 100755
index 0000000..fadd855
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase_Focused.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase_Focused.png
new file mode 100755
index 0000000..4ee34da
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/spinner_control_increase_Focused.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control.gif
new file mode 100755
index 0000000..cd548eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control_Disabled.gif
new file mode 100755
index 0000000..15266ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control_Over.gif
new file mode 100755
index 0000000..c8f6a0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/text_control_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked.png
new file mode 100755
index 0000000..c605f5e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked_Disabled.png
new file mode 100755
index 0000000..f7ccd2b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked_Down.png
new file mode 100755
index 0000000..f51db7c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unchecked_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck.png
new file mode 100755
index 0000000..be951fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Disabled.png
new file mode 100755
index 0000000..26c7805
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Down.png
new file mode 100755
index 0000000..0127a50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Over.png
new file mode 100755
index 0000000..09774f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/DynamicForm/unsetcheck_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_B.png
new file mode 100755
index 0000000..3c28e4e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_BL.png
new file mode 100755
index 0000000..745cd8c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_BR.png
new file mode 100755
index 0000000..a3c562d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_L.png
new file mode 100755
index 0000000..6f84628
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_R.png
new file mode 100755
index 0000000..6f84628
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_T.png
new file mode 100755
index 0000000..3c28e4e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_TL.png
new file mode 100755
index 0000000..bf273b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_TR.png
new file mode 100755
index 0000000..c780969
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/edges/edge_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/createNewFolder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/createNewFolder.png
new file mode 100755
index 0000000..c8375bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/createNewFolder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/file.png
new file mode 100755
index 0000000..da793cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/folder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/folder.png
new file mode 100755
index 0000000..caad126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/folder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/previousFolder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/previousFolder.png
new file mode 100755
index 0000000..69eb4c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/previousFolder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/refresh.png
new file mode 100755
index 0000000..9ce1bb3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/upOneLevel.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/upOneLevel.png
new file mode 100755
index 0000000..6a84350
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/FileBrowser/upOneLevel.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down.png
new file mode 100755
index 0000000..c641530
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down_Disabled.png
new file mode 100755
index 0000000..f5db1f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down_Over.png
new file mode 100755
index 0000000..71ad48f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left.png
new file mode 100755
index 0000000..48eb636
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left_Disabled.png
new file mode 100755
index 0000000..9cfbf6a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left_Over.png
new file mode 100755
index 0000000..576a70a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right.png
new file mode 100755
index 0000000..d4ee817
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right_Disabled.png
new file mode 100755
index 0000000..23f3092
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right_Over.png
new file mode 100755
index 0000000..4cfa4e7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up.png
new file mode 100755
index 0000000..44e9d70
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up_Disabled.png
new file mode 100755
index 0000000..9aca1c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up_Over.png
new file mode 100755
index 0000000..5f277d4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/arrow_up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator.png
new file mode 100755
index 0000000..19d626c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator_Disabled.png
new file mode 100755
index 0000000..b022234
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator_Over.png
new file mode 100755
index 0000000..ccce7c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/calculator_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart.png
new file mode 100755
index 0000000..8024c4c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart_Disabled.png
new file mode 100755
index 0000000..06c2959
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart_Over.png
new file mode 100755
index 0000000..a99eaea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cart_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade.png
new file mode 100755
index 0000000..4d487a6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade_Disabled.png
new file mode 100755
index 0000000..9eb0d1d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade_Over.png
new file mode 100755
index 0000000..8a15595
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/cascade_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard.png
new file mode 100755
index 0000000..28bf88a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard_Disabled.png
new file mode 100755
index 0000000..ef8f909
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard_Over.png
new file mode 100755
index 0000000..cc07b04
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clipboard_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock.png
new file mode 100755
index 0000000..52a2f79
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock_Disabled.png
new file mode 100755
index 0000000..6777ba1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock_Over.png
new file mode 100755
index 0000000..f90a3bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/clock_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close.png
new file mode 100755
index 0000000..34455d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close_Disabled.png
new file mode 100755
index 0000000..e5a6c8e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close_Over.png
new file mode 100755
index 0000000..09200c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment.png
new file mode 100755
index 0000000..ff71cd9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment_Disabled.png
new file mode 100755
index 0000000..58c4e67
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment_Over.png
new file mode 100755
index 0000000..c9ec8e0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/comment_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document
new file mode 100755
index 0000000..3d81bd2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document.png
new file mode 100755
index 0000000..533012a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document_Over.png
new file mode 100755
index 0000000..d3f454c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/document_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down.png
new file mode 100755
index 0000000..90d7b22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down_Disabled.png
new file mode 100755
index 0000000..640abc0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down_Over.png
new file mode 100755
index 0000000..a0d9f96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left.png
new file mode 100755
index 0000000..697f985
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left_Disabled.png
new file mode 100755
index 0000000..2bf937d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left_Over.png
new file mode 100755
index 0000000..3b26818
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right.png
new file mode 100755
index 0000000..e0c035e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right_Disabled.png
new file mode 100755
index 0000000..e294cca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right_Over.png
new file mode 100755
index 0000000..500083f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up.png
new file mode 100755
index 0000000..c135f85
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up_Disabled.png
new file mode 100755
index 0000000..1ef3b9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up_Over.png
new file mode 100755
index 0000000..890fcf7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/double_arrow_up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite.png
new file mode 100755
index 0000000..78f07d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite_Disabled.png
new file mode 100755
index 0000000..2a64697
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite_Over.png
new file mode 100755
index 0000000..1fc64db
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/favourite_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find.png
new file mode 100755
index 0000000..13776f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find_Disabled.png
new file mode 100755
index 0000000..e577d16
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find_Over.png
new file mode 100755
index 0000000..d08e2f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/find_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help.png
new file mode 100755
index 0000000..4e83eb9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help_Disabled.png
new file mode 100755
index 0000000..50d0165
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help_Over.png
new file mode 100755
index 0000000..ba878b8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/help_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home.png
new file mode 100755
index 0000000..4f9521d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home_Disabled.png
new file mode 100755
index 0000000..222e767
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home_Over.png
new file mode 100755
index 0000000..e8f6542
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/home_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail.png
new file mode 100755
index 0000000..0b6f2d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail_Disabled.png
new file mode 100755
index 0000000..b52057c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail_Over.png
new file mode 100755
index 0000000..f82af65
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/mail_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize.png
new file mode 100755
index 0000000..d55b0f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize_Disabled.png
new file mode 100755
index 0000000..e179363
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize_Over.png
new file mode 100755
index 0000000..40b0a39
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/maximize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize.png
new file mode 100755
index 0000000..21ed3b6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize_Disabled.png
new file mode 100755
index 0000000..385bffe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize_Over.png
new file mode 100755
index 0000000..075d86c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minimize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus.png
new file mode 100755
index 0000000..a163490
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus_Disabled.png
new file mode 100755
index 0000000..2304d5f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus_Over.png
new file mode 100755
index 0000000..7198170
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/minus_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person.png
new file mode 100755
index 0000000..d0298ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person_Disabled.png
new file mode 100755
index 0000000..88270ce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person_Over.png
new file mode 100755
index 0000000..8e886f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/person_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down.png
new file mode 100755
index 0000000..13bbff3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down_Disabled.png
new file mode 100755
index 0000000..bd16129
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down_Over.png
new file mode 100755
index 0000000..8683379
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left.png
new file mode 100755
index 0000000..3e2745e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left_Disabled.png
new file mode 100755
index 0000000..f37e66a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left_Over.png
new file mode 100755
index 0000000..ef3bcd3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/pin_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus.png
new file mode 100755
index 0000000..bf583d0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus_Disabled.png
new file mode 100755
index 0000000..bab7745
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus_Over.png
new file mode 100755
index 0000000..310328e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/plus_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print.png
new file mode 100755
index 0000000..fdd007c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print_Disabled.png
new file mode 100755
index 0000000..6b4a7fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print_Over.png
new file mode 100755
index 0000000..2f1c7f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/print_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh.png
new file mode 100755
index 0000000..35ea2d4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_Disabled.png
new file mode 100755
index 0000000..e535f91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_Over.png
new file mode 100755
index 0000000..d238f75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin.png
new file mode 100755
index 0000000..ca0e25a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin_Disabled.png
new file mode 100755
index 0000000..2c56916
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin_Over.png
new file mode 100755
index 0000000..25a8c51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/refresh_thin_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save.png
new file mode 100755
index 0000000..e49af29
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save_Disabled.png
new file mode 100755
index 0000000..2fb7a50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save_Over.png
new file mode 100755
index 0000000..3c3573c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/save_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings.png
new file mode 100755
index 0000000..f7470d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings_Disabled.png
new file mode 100755
index 0000000..fd24028
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings_Over.png
new file mode 100755
index 0000000..ef2598a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/settings_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer.png
new file mode 100755
index 0000000..7a21f5a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer_Disabled.png
new file mode 100755
index 0000000..060af3f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer_Over.png
new file mode 100755
index 0000000..d63c8f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/transfer_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash.png
new file mode 100755
index 0000000..7c1dcc2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash_Disabled.png
new file mode 100755
index 0000000..9e3a1b1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash_Over.png
new file mode 100755
index 0000000..fff9d94
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/trash_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom.png
new file mode 100755
index 0000000..bf3a1de
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom_Disabled.png
new file mode 100755
index 0000000..d67f34a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom_Over.png
new file mode 100755
index 0000000..46a97ec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/headerIcons/zoom_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button.png
new file mode 100755
index 0000000..18b200d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Disabled.png
new file mode 100755
index 0000000..b67f6e1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Down.png
new file mode 100755
index 0000000..44bc022
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Over.png
new file mode 100755
index 0000000..b5d14bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ImgButton/button_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/expander_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/expander_closed.png
new file mode 100755
index 0000000..87ac172
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/expander_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/expander_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/expander_opened.png
new file mode 100755
index 0000000..1420a73
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/expander_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/formula_menuItem.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/formula_menuItem.png
new file mode 100755
index 0000000..0250515
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/formula_menuItem.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/group_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/group_closed.png
new file mode 100755
index 0000000..b6229cd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/group_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/group_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/group_opened.png
new file mode 100755
index 0000000..4e325f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/group_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header.png
new file mode 100755
index 0000000..ca32ca4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Disabled.png
new file mode 100755
index 0000000..adc6204
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Down.png
new file mode 100755
index 0000000..d335ec9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_menu.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_menu.png
new file mode 100755
index 0000000..54338a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_menu.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Over.png
new file mode 100755
index 0000000..8a3db2e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected.png
new file mode 100755
index 0000000..e8d1eaf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected_Disabled.png
new file mode 100755
index 0000000..f8452a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected_Over.png
new file mode 100755
index 0000000..de5f798
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/header_Selected_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/headerSprite.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/headerSprite.png
new file mode 100755
index 0000000..c5d8d1b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/headerSprite.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row.png
new file mode 100755
index 0000000..de57c6b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_collapsed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_collapsed.png
new file mode 100755
index 0000000..618a04e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_collapsed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_expanded.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_expanded.png
new file mode 100755
index 0000000..dd87cbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_expanded.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Over.png
new file mode 100755
index 0000000..1dd85ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Over_Selected.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Over_Selected.png
new file mode 100755
index 0000000..17ce652
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Over_Selected.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Selected.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Selected.png
new file mode 100755
index 0000000..04b3861
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Selected.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Selected_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Selected_Over.png
new file mode 100755
index 0000000..49b3ac3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/row_Selected_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/sort_ascending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/sort_ascending.png
new file mode 100755
index 0000000..09582f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/sort_ascending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/sort_descending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/sort_descending.png
new file mode 100755
index 0000000..3ae1029
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ListGrid/sort_descending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/loading.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/loading.gif
new file mode 100755
index 0000000..19d5500
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/loading.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/loadingSmall.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/loadingSmall.gif
new file mode 100755
index 0000000..d0bce15
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/loadingSmall.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/check.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/check.png
new file mode 100755
index 0000000..0f5eead
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/check.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/check_disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/check_disabled.png
new file mode 100755
index 0000000..a77c532
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/check_disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_background.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_background.png
new file mode 100755
index 0000000..d61422e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_background.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button.png
new file mode 100755
index 0000000..a6895e0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_Disabled.png
new file mode 100755
index 0000000..1b90feb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_up.png
new file mode 100755
index 0000000..287e467
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_up_Disabled.png
new file mode 100755
index 0000000..e6ef59f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_button_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_end.png
new file mode 100755
index 0000000..1145a4d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_right.png
new file mode 100755
index 0000000..1145a4d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_rollover.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_rollover.png
new file mode 100755
index 0000000..2e2137c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_rollover.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_start.png
new file mode 100755
index 0000000..fed8ffa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_stretch.png
new file mode 100755
index 0000000..2773c57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/menu_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu.png
new file mode 100755
index 0000000..486dd89
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_disabled.png
new file mode 100755
index 0000000..b61ddc8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_disabled_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_disabled_left.png
new file mode 100755
index 0000000..c5060bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_disabled_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_down.png
new file mode 100755
index 0000000..aa56d7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_left.png
new file mode 100755
index 0000000..74d8097
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Menu/submenu_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_add_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_add_files.png
new file mode 100755
index 0000000..6db0919
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_add_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_add_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_add_files_Disabled.png
new file mode 100755
index 0000000..9b7fa17
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_add_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_remove_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_remove_files.png
new file mode 100755
index 0000000..bd45928
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_remove_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_remove_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_remove_files_Disabled.png
new file mode 100755
index 0000000..e1edd8c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/MultiUploadItem/icon_remove_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/opacity.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/opacity.png
new file mode 100755
index 0000000..0d0a764
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/opacity.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Panel/panel_header.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Panel/panel_header.png
new file mode 100755
index 0000000..0b78778
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Panel/panel_header.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker.png
new file mode 100755
index 0000000..3766872
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Disabled.png
new file mode 100755
index 0000000..04849dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Down.png
new file mode 100755
index 0000000..b2062e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Over.png
new file mode 100755
index 0000000..3b82b67
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/clear_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker.png
new file mode 100755
index 0000000..e9a0259
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker_Disabled.png
new file mode 100755
index 0000000..f1a4251
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker_Over.png
new file mode 100755
index 0000000..5b240db
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/comboBoxPicker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker.png
new file mode 100755
index 0000000..3636c2e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Disabled.png
new file mode 100755
index 0000000..a819996
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Down.png
new file mode 100755
index 0000000..b1cf83f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Over.png
new file mode 100755
index 0000000..5b47408
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/date_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker.png
new file mode 100755
index 0000000..b902cf4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Disabled.png
new file mode 100755
index 0000000..883fa83
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Down.png
new file mode 100755
index 0000000..76e738c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Over.png
new file mode 100755
index 0000000..277c0db
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/refresh_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker.png
new file mode 100755
index 0000000..11ab562
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Disabled.png
new file mode 100755
index 0000000..5ae1c8d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Down.png
new file mode 100755
index 0000000..f3d8cdd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Over.png
new file mode 100755
index 0000000..1a6bf22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/pickers/search_picker_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_end.gif
new file mode 100755
index 0000000..ee1f9d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_start.gif
new file mode 100755
index 0000000..36fd795
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif
new file mode 100755
index 0000000..5bbd82b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_end.gif
new file mode 100755
index 0000000..15a8daf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_start.gif
new file mode 100755
index 0000000..38daec8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_stretch.gif
new file mode 100755
index 0000000..cc5f1ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_h_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_end.gif
new file mode 100755
index 0000000..47252dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_start.gif
new file mode 100755
index 0000000..9666c1e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif
new file mode 100755
index 0000000..5467b67
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_end.gif
new file mode 100755
index 0000000..47252dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_start.gif
new file mode 100755
index 0000000..f8ca939
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_stretch.gif
new file mode 100755
index 0000000..b53fd45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_Disabled_v_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_end.gif
new file mode 100755
index 0000000..5133304
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_start.gif
new file mode 100755
index 0000000..4469e9f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_stretch.gif
new file mode 100755
index 0000000..b2f3eb4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_end.gif
new file mode 100755
index 0000000..06cd29f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_start.gif
new file mode 100755
index 0000000..28da8a5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_stretch.gif
new file mode 100755
index 0000000..d8c075c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_h_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_end.gif
new file mode 100755
index 0000000..4b6e96e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_start.gif
new file mode 100755
index 0000000..3bb4076
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_stretch.gif
new file mode 100755
index 0000000..52fff69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_end.gif
new file mode 100755
index 0000000..15827eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_start.gif
new file mode 100755
index 0000000..23a4dd2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_stretch.gif
new file mode 100755
index 0000000..d09c617
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Progressbar/progressbar_v_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/readme.txt b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/readme.txt
new file mode 100755
index 0000000..e134386
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/readme.txt
@@ -0,0 +1,2 @@
+Some of the icons used are from the FAMFAMFAM Silk Icon Collection (http://www.famfamfam.com/lab/icons/silk/)
+and are licensed under Creative Commons Attribution 2.5 License.
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add.png
new file mode 100755
index 0000000..4a7ea12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add_Disabled.png
new file mode 100755
index 0000000..93e0ad0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add_Over.png
new file mode 100755
index 0000000..6a4e1bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/add_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/check.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/check.gif
new file mode 100755
index 0000000..2465d1c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/check.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter.png
new file mode 100755
index 0000000..149ae78
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter_Disabled.png
new file mode 100755
index 0000000..b46239e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter_Over.png
new file mode 100755
index 0000000..d2fa7e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/filter_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/query.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/query.gif
new file mode 100755
index 0000000..2b2bd19
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RecordEditor/query.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/background_color.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/background_color.gif
new file mode 100755
index 0000000..8b464c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/background_color.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/background_color_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/background_color_Disabled.gif
new file mode 100755
index 0000000..4f35753
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/background_color_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/copy.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/copy.png
new file mode 100755
index 0000000..87cf5c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/copy.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/copy_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/copy_Disabled.png
new file mode 100755
index 0000000..bbb93c1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/copy_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/cut.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/cut.png
new file mode 100755
index 0000000..bb62377
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/cut.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/cut_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/cut_Disabled.png
new file mode 100755
index 0000000..79bdf22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/cut_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/indent.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/indent.png
new file mode 100755
index 0000000..c16f938
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/indent.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/indent_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/indent_Disabled.png
new file mode 100755
index 0000000..a93daa4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/indent_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/link_new.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/link_new.png
new file mode 100755
index 0000000..a87f732
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/link_new.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/outdent.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/outdent.png
new file mode 100755
index 0000000..70730e6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/outdent.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/outdent_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/outdent_Disabled.png
new file mode 100755
index 0000000..0dc1840
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/outdent_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/paste.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/paste.png
new file mode 100755
index 0000000..e3397b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/paste.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/paste_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/paste_Disabled.png
new file mode 100755
index 0000000..5b89a74
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/paste_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/separator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/separator.png
new file mode 100755
index 0000000..7e10cc2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/separator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/separator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/separator_Disabled.png
new file mode 100755
index 0000000..05f0487
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/separator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_center.png
new file mode 100755
index 0000000..57beb38
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_center_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_center_Disabled.png
new file mode 100755
index 0000000..06750d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_center_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_justified.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_justified.png
new file mode 100755
index 0000000..2fbdd69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_justified.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_justified_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_justified_Disabled.png
new file mode 100755
index 0000000..6792e35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_justified_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_left.png
new file mode 100755
index 0000000..6c8fcc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_left_Disabled.png
new file mode 100755
index 0000000..4f6a8e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_right.png
new file mode 100755
index 0000000..a150257
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_right_Disabled.png
new file mode 100755
index 0000000..f859b47
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_align_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_bold.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_bold.png
new file mode 100755
index 0000000..889ae80
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_bold.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_color.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_color.gif
new file mode 100755
index 0000000..44af9c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_color.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_color_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_color_Disabled.gif
new file mode 100755
index 0000000..a1d324a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_color_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_italic.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_italic.png
new file mode 100755
index 0000000..8482ac8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_italic.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_underline.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_underline.png
new file mode 100755
index 0000000..90d0df2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/RichTextEditor/text_underline.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/complexType.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/complexType.gif
new file mode 100755
index 0000000..1c0743c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/complexType.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/operation.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/operation.png
new file mode 100755
index 0000000..a018fac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/operation.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/simpleType.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/simpleType.png
new file mode 100755
index 0000000..2b6c5a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SchemaViewer/simpleType.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_end.png
new file mode 100755
index 0000000..abb2904
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_start.png
new file mode 100755
index 0000000..32bc456
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_stretch.png
new file mode 100755
index 0000000..e112cd4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_track.png
new file mode 100755
index 0000000..32209c0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Disabled_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_end.png
new file mode 100755
index 0000000..51fd042
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_start.png
new file mode 100755
index 0000000..be5dec1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_stretch.png
new file mode 100755
index 0000000..685732b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_track.png
new file mode 100755
index 0000000..eee9275
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Down_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_end.png
new file mode 100755
index 0000000..0934523
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_end.png
new file mode 100755
index 0000000..ea1087c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_start.png
new file mode 100755
index 0000000..3c43ca0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_stretch.png
new file mode 100755
index 0000000..430f2b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_track.png
new file mode 100755
index 0000000..eee9275
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_Over_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_start.png
new file mode 100755
index 0000000..7861bb7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_stretch.png
new file mode 100755
index 0000000..b3e3a6d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_track.png
new file mode 100755
index 0000000..eee9275
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hscroll_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_end.png
new file mode 100755
index 0000000..f800b0c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_start.png
new file mode 100755
index 0000000..3ae2ba5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_stretch.png
new file mode 100755
index 0000000..266cb1a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_end.png
new file mode 100755
index 0000000..3c032f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_start.png
new file mode 100755
index 0000000..a90e763
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_stretch.png
new file mode 100755
index 0000000..9a150ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_end.png
new file mode 100755
index 0000000..5260d3e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_grip.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_grip.png
new file mode 100755
index 0000000..6cca99a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_grip.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_grip_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_grip_Disabled.png
new file mode 100755
index 0000000..5fe74a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_grip_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_end.png
new file mode 100755
index 0000000..3c032f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_start.png
new file mode 100755
index 0000000..a90e763
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_stretch.png
new file mode 100755
index 0000000..9a150ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_start.png
new file mode 100755
index 0000000..45795ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_stretch.png
new file mode 100755
index 0000000..18f208c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/hthumb_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_end.png
new file mode 100755
index 0000000..b073dc8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_start.png
new file mode 100755
index 0000000..568931d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_track.png
new file mode 100755
index 0000000..a9fbbc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Disabled_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_end.png
new file mode 100755
index 0000000..ebfa8dd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_start.png
new file mode 100755
index 0000000..a512520
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_track.png
new file mode 100755
index 0000000..d90d78d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Down_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_end.png
new file mode 100755
index 0000000..af54b6f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_corner.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_corner.png
new file mode 100755
index 0000000..f0eef61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_corner.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_end.png
new file mode 100755
index 0000000..0462415
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_start.png
new file mode 100755
index 0000000..fe33210
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_track.png
new file mode 100755
index 0000000..d90d78d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_Over_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_start.png
new file mode 100755
index 0000000..98f3709
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_stretch.png
new file mode 100755
index 0000000..943f2df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_track.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_track.png
new file mode 100755
index 0000000..d90d78d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vscroll_track.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_end.png
new file mode 100755
index 0000000..6770975
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_start.png
new file mode 100755
index 0000000..81a3a3e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_stretch.png
new file mode 100755
index 0000000..5e7cd37
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_end.png
new file mode 100755
index 0000000..6234d66
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_start.png
new file mode 100755
index 0000000..89d48cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_stretch.png
new file mode 100755
index 0000000..c4b3128
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_end.png
new file mode 100755
index 0000000..8904643
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_grip.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_grip.png
new file mode 100755
index 0000000..86bc182
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_grip.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_grip_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_grip_Disabled.png
new file mode 100755
index 0000000..a2f5d41
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_grip_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_end.png
new file mode 100755
index 0000000..6234d66
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_start.png
new file mode 100755
index 0000000..89d48cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_stretch.png
new file mode 100755
index 0000000..c4b3128
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_start.png
new file mode 100755
index 0000000..eb21d73
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_stretch.png
new file mode 100755
index 0000000..a99682b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Scrollbar/vthumb_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_end.png
new file mode 100755
index 0000000..9e4bfbf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_start.png
new file mode 100755
index 0000000..9e4bfbf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_stretch.png
new file mode 100755
index 0000000..8eb6dcb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_end.png
new file mode 100755
index 0000000..e1b7b86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_start.png
new file mode 100755
index 0000000..e1b7b86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_stretch.png
new file mode 100755
index 0000000..41d02fa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_end.png
new file mode 100755
index 0000000..53b4786
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_start.png
new file mode 100755
index 0000000..291fc04
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_stretch.png
new file mode 100755
index 0000000..c3865bf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Disabled_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_end.png
new file mode 100755
index 0000000..80360d4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_start.png
new file mode 100755
index 0000000..80360d4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_stretch.png
new file mode 100755
index 0000000..1671c48
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_end.png
new file mode 100755
index 0000000..275aa43
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_start.png
new file mode 100755
index 0000000..48237ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_stretch.png
new file mode 100755
index 0000000..84f61ec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_end.png
new file mode 100755
index 0000000..48458c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_start.png
new file mode 100755
index 0000000..48458c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_stretch.png
new file mode 100755
index 0000000..2be512f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/header_Over_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_closed.png
new file mode 100755
index 0000000..001f621
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened.png
new file mode 100755
index 0000000..7178026
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_end.png
new file mode 100755
index 0000000..7dfc6ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_start.png
new file mode 100755
index 0000000..2ee0df5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_stretch.png
new file mode 100755
index 0000000..9dcb804
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/SectionHeader/opener_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/background.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/background.gif
new file mode 100755
index 0000000..bfa6c37
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/background.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/progressCursorTracker.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/progressCursorTracker.gif
new file mode 100755
index 0000000..aa9b38a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/progressCursorTracker.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds_center.png
new file mode 100755
index 0000000..3b3884e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_B.png
new file mode 100755
index 0000000..7cb1db0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_BL.png
new file mode 100755
index 0000000..bcf40a6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_BR.png
new file mode 100755
index 0000000..319264a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_L.png
new file mode 100755
index 0000000..fef2646
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_R.png
new file mode 100755
index 0000000..0547498
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_T.png
new file mode 100755
index 0000000..f508b51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_TL.png
new file mode 100755
index 0000000..f24b2ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_TR.png
new file mode 100755
index 0000000..73f73bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds1_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_B.png
new file mode 100755
index 0000000..05b1d11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_BL.png
new file mode 100755
index 0000000..0ee4dcd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_BR.png
new file mode 100755
index 0000000..c92b858
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_L.png
new file mode 100755
index 0000000..97ee80e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_R.png
new file mode 100755
index 0000000..962ecb3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_T.png
new file mode 100755
index 0000000..ebf1e26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_TL.png
new file mode 100755
index 0000000..86fad24
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_TR.png
new file mode 100755
index 0000000..52f2305
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_B.png
new file mode 100755
index 0000000..e55ed42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_BL.png
new file mode 100755
index 0000000..735e95e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_BR.png
new file mode 100755
index 0000000..95acd7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_L.png
new file mode 100755
index 0000000..7136873
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_R.png
new file mode 100755
index 0000000..72d50b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_T.png
new file mode 100755
index 0000000..070bfa5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_TL.png
new file mode 100755
index 0000000..95a7413
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_TR.png
new file mode 100755
index 0000000..e03f78f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds2_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_B.png
new file mode 100755
index 0000000..8950af8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_BL.png
new file mode 100755
index 0000000..a6194eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_BR.png
new file mode 100755
index 0000000..4daf18d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_L.png
new file mode 100755
index 0000000..5c1d8f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_R.png
new file mode 100755
index 0000000..e4d9851
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_T.png
new file mode 100755
index 0000000..42360a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_TL.png
new file mode 100755
index 0000000..39732c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_TR.png
new file mode 100755
index 0000000..3b9aa40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_B.png
new file mode 100755
index 0000000..3d6fc26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_BL.png
new file mode 100755
index 0000000..6007253
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_BR.png
new file mode 100755
index 0000000..8e9c7ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_L.png
new file mode 100755
index 0000000..a6f9737
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_R.png
new file mode 100755
index 0000000..44efd2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_T.png
new file mode 100755
index 0000000..ad8bf68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_TL.png
new file mode 100755
index 0000000..185ba1f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_TR.png
new file mode 100755
index 0000000..3afd869
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_B.png
new file mode 100755
index 0000000..e2879ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_BL.png
new file mode 100755
index 0000000..50468f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_BR.png
new file mode 100755
index 0000000..96f7b07
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_L.png
new file mode 100755
index 0000000..0ee6a62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_R.png
new file mode 100755
index 0000000..cd2177d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_T.png
new file mode 100755
index 0000000..3541504
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_TL.png
new file mode 100755
index 0000000..c85e2bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_TR.png
new file mode 100755
index 0000000..43dd30f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_B.png
new file mode 100755
index 0000000..73e9525
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_BL.png
new file mode 100755
index 0000000..cf1f5f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_BR.png
new file mode 100755
index 0000000..92b1852
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_L.png
new file mode 100755
index 0000000..f97fd86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_R.png
new file mode 100755
index 0000000..b48626e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_T.png
new file mode 100755
index 0000000..6324087
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_TL.png
new file mode 100755
index 0000000..a90a94b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_TR.png
new file mode 100755
index 0000000..44c6bc5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_B.png
new file mode 100755
index 0000000..670c1f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_BL.png
new file mode 100755
index 0000000..9325baf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_BR.png
new file mode 100755
index 0000000..5e0a63f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_L.png
new file mode 100755
index 0000000..2c63fbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_R.png
new file mode 100755
index 0000000..44f0eb6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_T.png
new file mode 100755
index 0000000..f77a361
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_TL.png
new file mode 100755
index 0000000..21da49e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_TR.png
new file mode 100755
index 0000000..9c9c8d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_B.png
new file mode 100755
index 0000000..84c839f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_BL.png
new file mode 100755
index 0000000..e8fa038
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_BR.png
new file mode 100755
index 0000000..dca921d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_L.png
new file mode 100755
index 0000000..121e4d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_R.png
new file mode 100755
index 0000000..21f8877
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_T.png
new file mode 100755
index 0000000..a6f5188
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_TL.png
new file mode 100755
index 0000000..c530634
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_TR.png
new file mode 100755
index 0000000..e325b9c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_B.png
new file mode 100755
index 0000000..5166a75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_BL.png
new file mode 100755
index 0000000..bcb45c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_BR.png
new file mode 100755
index 0000000..d248538
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_L.png
new file mode 100755
index 0000000..ec633c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_R.png
new file mode 100755
index 0000000..56b8f57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_T.png
new file mode 100755
index 0000000..5973074
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_TL.png
new file mode 100755
index 0000000..c7d315e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_TR.png
new file mode 100755
index 0000000..a904325
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/shared/shadows/ds9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb.png
new file mode 100755
index 0000000..a368ecb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb_Disabled.png
new file mode 100755
index 0000000..52554ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb_down.png
new file mode 100755
index 0000000..36439af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/hthumb_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_end.png
new file mode 100755
index 0000000..6caeb58
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_start.png
new file mode 100755
index 0000000..0af4d42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_stretch.png
new file mode 100755
index 0000000..5b836d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_end.png
new file mode 100755
index 0000000..dcd5929
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_start.png
new file mode 100755
index 0000000..a7deb98
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_stretch.png
new file mode 100755
index 0000000..7d16034
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/htrack_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb.png
new file mode 100755
index 0000000..a368ecb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb_Disabled.png
new file mode 100755
index 0000000..e79e0bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb_down.png
new file mode 100755
index 0000000..36439af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vthumb_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_end.png
new file mode 100755
index 0000000..37c82a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_start.png
new file mode 100755
index 0000000..302ebe6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_stretch.png
new file mode 100755
index 0000000..9e1304e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_end.png
new file mode 100755
index 0000000..9a86299
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_start.png
new file mode 100755
index 0000000..d2b4c15
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_stretch.png
new file mode 100755
index 0000000..e847a22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Slider/vtrack_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_bg.png
new file mode 100755
index 0000000..fa41993
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_Disabled_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_Disabled_bg.png
new file mode 100755
index 0000000..f135ec9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_Disabled_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_snap.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_snap.png
new file mode 100755
index 0000000..1bdae1d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_snap.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_snap_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_snap_Disabled.png
new file mode 100755
index 0000000..1bdae1d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/hsplit_snap_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_bg.png
new file mode 100755
index 0000000..b9881d0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_Disabled_bg.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_Disabled_bg.png
new file mode 100755
index 0000000..1862bde
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_Disabled_bg.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_snap.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_snap.png
new file mode 100755
index 0000000..1aaf621
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_snap.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_snap_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_snap_Disabled.png
new file mode 100755
index 0000000..1aaf621
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Splitbar/vsplit_snap_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_end.png
new file mode 100755
index 0000000..42dac75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_start.png
new file mode 100755
index 0000000..42dac75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_stretch.png
new file mode 100755
index 0000000..0075c07
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_end.png
new file mode 100755
index 0000000..8d5852e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_start.png
new file mode 100755
index 0000000..ce4f72c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_stretch.png
new file mode 100755
index 0000000..4a9e090
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_end.png
new file mode 100755
index 0000000..257d032
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_end.png
new file mode 100755
index 0000000..50ed9c2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_start.png
new file mode 100755
index 0000000..47cd218
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_stretch.png
new file mode 100755
index 0000000..d460156
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..898f9dd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..2e3898c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..1e6e22f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_end.png
new file mode 100755
index 0000000..7703dcf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_end.png
new file mode 100755
index 0000000..0a16273
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_start.png
new file mode 100755
index 0000000..4005ce1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..85e8a43
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_start.png
new file mode 100755
index 0000000..30040cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_stretch.png
new file mode 100755
index 0000000..5a85982
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_start.png
new file mode 100755
index 0000000..1d04d68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_stretch.png
new file mode 100755
index 0000000..6d3900d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/bottom/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/close.png
new file mode 100755
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/close_Over.png
new file mode 100755
index 0000000..880f62c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_end.png
new file mode 100755
index 0000000..b40e9e0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_start.png
new file mode 100755
index 0000000..b5658b1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_stretch.png
new file mode 100755
index 0000000..9308708
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_end.png
new file mode 100755
index 0000000..9ffb828
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_end.png
new file mode 100755
index 0000000..e4c17dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_start.png
new file mode 100755
index 0000000..172d45e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_stretch.png
new file mode 100755
index 0000000..ff7ccf4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..017fc1a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..0a22d6a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..b83f54a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_end.png
new file mode 100755
index 0000000..d4bc284
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_end.png
new file mode 100755
index 0000000..1634d7a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_start.png
new file mode 100755
index 0000000..f1ec719
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..c41fe20
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_start.png
new file mode 100755
index 0000000..6d1e3e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_stretch.png
new file mode 100755
index 0000000..780b71b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_start.png
new file mode 100755
index 0000000..10ad846
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_stretch.png
new file mode 100755
index 0000000..b1df28f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/left/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_end.png
new file mode 100755
index 0000000..74c3e18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_start.png
new file mode 100755
index 0000000..6f2dcf4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_stretch.png
new file mode 100755
index 0000000..386c62d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/close.png
new file mode 100755
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/close_Over.png
new file mode 100755
index 0000000..880f62c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_end.png
new file mode 100755
index 0000000..64a3750
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_start.png
new file mode 100755
index 0000000..0f85c1c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_stretch.png
new file mode 100755
index 0000000..c0a7481
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_end.png
new file mode 100755
index 0000000..7195954
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_end.png
new file mode 100755
index 0000000..ef6b039
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_start.png
new file mode 100755
index 0000000..ffe6cc8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_stretch.png
new file mode 100755
index 0000000..d8c07fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..113bc67
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..13b968b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..4320d56
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_end.png
new file mode 100755
index 0000000..ac42bbf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_end.png
new file mode 100755
index 0000000..2cb2ec0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_start.png
new file mode 100755
index 0000000..d698170
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..6ff388a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_start.png
new file mode 100755
index 0000000..4562ba1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_stretch.png
new file mode 100755
index 0000000..3b18243
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_start.png
new file mode 100755
index 0000000..bfff0d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_stretch.png
new file mode 100755
index 0000000..707523c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/right/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_end.png
new file mode 100755
index 0000000..069cb23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_start.png
new file mode 100755
index 0000000..069cb23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_stretch.png
new file mode 100755
index 0000000..41b2e92
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/close.png
new file mode 100755
index 0000000..fdd0df9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/close_Over.png
new file mode 100755
index 0000000..880f62c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_end.png
new file mode 100755
index 0000000..ea8e32b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_start.png
new file mode 100755
index 0000000..af76919
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_stretch.png
new file mode 100755
index 0000000..0bacd7d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_end.png
new file mode 100755
index 0000000..9469269
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_end.png
new file mode 100755
index 0000000..76d679d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_start.png
new file mode 100755
index 0000000..172cdd3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_stretch.png
new file mode 100755
index 0000000..d45ce6b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..93af359
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..3b0532c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..da0e223
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_end.png
new file mode 100755
index 0000000..9f6766e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_end.png
new file mode 100755
index 0000000..643b753
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_start.png
new file mode 100755
index 0000000..06031dd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..95d13de
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_start.png
new file mode 100755
index 0000000..44efee2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_stretch.png
new file mode 100755
index 0000000..f583479
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_start.png
new file mode 100755
index 0000000..47b9253
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_stretch.png
new file mode 100755
index 0000000..1070a2f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Tab/top/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/close.png
new file mode 100755
index 0000000..53ddef9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/close_Over.png
new file mode 100755
index 0000000..f02a753
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_bottom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_bottom.png
new file mode 100755
index 0000000..4899057
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_bottom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_bottom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_bottom.png
new file mode 100755
index 0000000..b9b0776
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_bottom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_left.png
new file mode 100755
index 0000000..5dc2cae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_right.png
new file mode 100755
index 0000000..bc60a56
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_top.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_top.png
new file mode 100755
index 0000000..7d29d00
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Disabled_top.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_bottom.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_bottom.png
new file mode 100755
index 0000000..90194f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_bottom.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_left.png
new file mode 100755
index 0000000..0b37f08
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_right.png
new file mode 100755
index 0000000..299b399
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_top.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_top.png
new file mode 100755
index 0000000..4b4b7eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_Down_top.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_left.png
new file mode 100755
index 0000000..064724c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_right.png
new file mode 100755
index 0000000..fc3d3b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_top.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_top.png
new file mode 100755
index 0000000..53bc341
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/picker_top.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_bottom_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_bottom_back.png
new file mode 100755
index 0000000..d06bc81
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_bottom_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_bottom_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_bottom_forward.png
new file mode 100755
index 0000000..2f86400
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_bottom_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_bottom_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_bottom_back.png
new file mode 100755
index 0000000..ea6f492
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_bottom_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_bottom_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_bottom_forward.png
new file mode 100755
index 0000000..c93119e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_bottom_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_left_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_left_back.png
new file mode 100755
index 0000000..6cf20d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_left_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_left_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_left_forward.png
new file mode 100755
index 0000000..a5a1829
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_left_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_right_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_right_back.png
new file mode 100755
index 0000000..59cc974
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_right_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_right_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_right_forward.png
new file mode 100755
index 0000000..63998a0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_right_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_top_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_top_back.png
new file mode 100755
index 0000000..dd5b314
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_top_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_top_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_top_forward.png
new file mode 100755
index 0000000..f0d5f56
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Disabled_top_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_bottom_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_bottom_back.png
new file mode 100755
index 0000000..6a07e8b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_bottom_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_bottom_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_bottom_forward.png
new file mode 100755
index 0000000..1d523a6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_bottom_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_left_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_left_back.png
new file mode 100755
index 0000000..78bfec8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_left_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_left_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_left_forward.png
new file mode 100755
index 0000000..c31018c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_left_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_right_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_right_back.png
new file mode 100755
index 0000000..964ba3f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_right_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_right_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_right_forward.png
new file mode 100755
index 0000000..70a5a86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_right_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_top_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_top_back.png
new file mode 100755
index 0000000..65efc6d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_top_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_top_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_top_forward.png
new file mode 100755
index 0000000..04224ce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_Down_top_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_left_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_left_back.png
new file mode 100755
index 0000000..c385591
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_left_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_left_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_left_forward.png
new file mode 100755
index 0000000..8777b51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_left_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_right_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_right_back.png
new file mode 100755
index 0000000..9bf50c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_right_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_right_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_right_forward.png
new file mode 100755
index 0000000..c51fa82
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_right_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_top_back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_top_back.png
new file mode 100755
index 0000000..60eccd2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_top_back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_top_forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_top_forward.png
new file mode 100755
index 0000000..476d7f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TabSet/scroll_top_forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TileGrid/tileOver.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TileGrid/tileOver.png
new file mode 100755
index 0000000..10b3cfd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TileGrid/tileOver.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/background.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/background.png
new file mode 100755
index 0000000..ed80daf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/background.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/background_vertical.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/background_vertical.png
new file mode 100755
index 0000000..2361432
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/background_vertical.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_end.png
new file mode 100755
index 0000000..a608ddb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_start.png
new file mode 100755
index 0000000..7563d25
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_stretch.png
new file mode 100755
index 0000000..188f7a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_end.png
new file mode 100755
index 0000000..cbc823b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_start.png
new file mode 100755
index 0000000..4183208
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_stretch.png
new file mode 100755
index 0000000..883a09d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_end.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_end.png
new file mode 100755
index 0000000..10dc00d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_start.png
new file mode 100755
index 0000000..21bbe7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_stretch.png
new file mode 100755
index 0000000..6ac9cd7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_end.png
new file mode 100755
index 0000000..279b713
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_start.png
new file mode 100755
index 0000000..d7e11d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..ab3e70c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_end.png
new file mode 100755
index 0000000..eb36a7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_start.png
new file mode 100755
index 0000000..c878c7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_stretch.png
new file mode 100755
index 0000000..d47d160
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_end.png
new file mode 100755
index 0000000..779264b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_end.png
new file mode 100755
index 0000000..6bb7fd2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_start.png
new file mode 100755
index 0000000..6fd9066
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_stretch.png
new file mode 100755
index 0000000..4846481
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_start.png
new file mode 100755
index 0000000..5a0f755
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_stretch.png
new file mode 100755
index 0000000..2cc08ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_start.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_stretch.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/button/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hresizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hresizer.png
new file mode 100755
index 0000000..6c9ad7b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hresizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hresizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hresizer_Disabled.png
new file mode 100755
index 0000000..eb0e75d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hresizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hseparator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hseparator.png
new file mode 100755
index 0000000..4c90f22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hseparator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hseparator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hseparator_Disabled.png
new file mode 100755
index 0000000..a1c0416
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/hseparator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/resizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/resizer.png
new file mode 100755
index 0000000..279a044
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/resizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/resizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/resizer_Disabled.png
new file mode 100755
index 0000000..73f5c50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/resizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/separator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/separator.png
new file mode 100755
index 0000000..ffed1b9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/separator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/separator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/separator_Disabled.png
new file mode 100755
index 0000000..f560b29
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/ToolStrip/separator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete.png
new file mode 100755
index 0000000..1af94c2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete_Disabled.png
new file mode 100755
index 0000000..a93da3c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete_Over.png
new file mode 100755
index 0000000..43e9f87
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/delete_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down.png
new file mode 100755
index 0000000..8f68e4a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_Disabled.png
new file mode 100755
index 0000000..ebbbd21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last.png
new file mode 100755
index 0000000..80a02fa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last_Disabled.png
new file mode 100755
index 0000000..3904929
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last_Over.png
new file mode 100755
index 0000000..065e0ec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_last_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_Over.png
new file mode 100755
index 0000000..abe8298
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left.png
new file mode 100755
index 0000000..b2b4a1f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all.png
new file mode 100755
index 0000000..024e862
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all_Disabled.png
new file mode 100755
index 0000000..54c3a4c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all_Over.png
new file mode 100755
index 0000000..36c0d63
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_all_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_Disabled.png
new file mode 100755
index 0000000..14f0965
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_Over.png
new file mode 100755
index 0000000..7d1dc99
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right.png
new file mode 100755
index 0000000..ceb88e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all.png
new file mode 100755
index 0000000..efc0a8d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all_Disabled.png
new file mode 100755
index 0000000..ff93603
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all_Over.png
new file mode 100755
index 0000000..1db782b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_all_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_Disabled.png
new file mode 100755
index 0000000..984274c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_Over.png
new file mode 100755
index 0000000..e546025
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up.png
new file mode 100755
index 0000000..22e5c26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_Disabled.png
new file mode 100755
index 0000000..2741e43
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first.png
new file mode 100755
index 0000000..a70cd8d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first_Disabled.png
new file mode 100755
index 0000000..9144644
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first_Over.png
new file mode 100755
index 0000000..f498e11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_first_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_Over.png
new file mode 100755
index 0000000..4488042
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TransferIcons/up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_ancestor.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_ancestor.gif
new file mode 100755
index 0000000..dbada7a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_ancestor.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_end.gif
new file mode 100755
index 0000000..2fa53c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_middle.gif
new file mode 100755
index 0000000..f9e30bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_single.gif
new file mode 100755
index 0000000..280c88e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_start.gif
new file mode 100755
index 0000000..ef9b383
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_closed_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_end.gif
new file mode 100755
index 0000000..9283790
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_middle.gif
new file mode 100755
index 0000000..80d1b95
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_end.gif
new file mode 100755
index 0000000..6d76aa3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_middle.gif
new file mode 100755
index 0000000..47c4663
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_single.gif
new file mode 100755
index 0000000..5e2737a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_start.gif
new file mode 100755
index 0000000..95e1837
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_opened_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_single.gif
new file mode 100755
index 0000000..be0757c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_start.gif
new file mode 100755
index 0000000..3928bcf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/connector_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/file.png
new file mode 100755
index 0000000..da793cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_closed.png
new file mode 100755
index 0000000..caad126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_drop.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_drop.png
new file mode 100755
index 0000000..af9c5a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_drop.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_file.png
new file mode 100755
index 0000000..dff701f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_open.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_open.png
new file mode 100755
index 0000000..c5df8d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_open.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_opened.png
new file mode 100755
index 0000000..c5df8d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/folder_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/opener_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/opener_closed.png
new file mode 100755
index 0000000..910f960
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/opener_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/opener_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/opener_opened.png
new file mode 100755
index 0000000..adbb6ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/TreeGrid/opener_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close.png
new file mode 100755
index 0000000..e31d582
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close_Disabled.png
new file mode 100755
index 0000000..41d086e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close_Over.png
new file mode 100755
index 0000000..ea87d17
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/headerIcon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/headerIcon.png
new file mode 100755
index 0000000..d22860a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/headerIcon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Disabled.png
new file mode 100755
index 0000000..3d4b898
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Normal.png
new file mode 100755
index 0000000..ce5ca9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Over.png
new file mode 100755
index 0000000..b149a27
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_alldown_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Disabled.png
new file mode 100755
index 0000000..e9bb428
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Normal.png
new file mode 100755
index 0000000..dddcaea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Over.png
new file mode 100755
index 0000000..709cc16
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allleft_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Disabled.png
new file mode 100755
index 0000000..4706bb2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Normal.png
new file mode 100755
index 0000000..7e0dbbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Over.png
new file mode 100755
index 0000000..b2260bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allright_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Disabled.png
new file mode 100755
index 0000000..c1fcda2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Normal.png
new file mode 100755
index 0000000..4bec043
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Over.png
new file mode 100755
index 0000000..2eb1f52
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_allup_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Disabled.png
new file mode 100755
index 0000000..c14c9ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Normal.png
new file mode 100755
index 0000000..092d6b4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Over.png
new file mode 100755
index 0000000..79d2485
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_automate_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Disabled.png
new file mode 100755
index 0000000..c271f5f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Normal.png
new file mode 100755
index 0000000..cee1a61
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Over.png
new file mode 100755
index 0000000..1bfac64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_calculator_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Disabled.png
new file mode 100755
index 0000000..27a95aa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Normal.png
new file mode 100755
index 0000000..cc55f62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Over.png
new file mode 100755
index 0000000..862fea0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cart_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Disabled.png
new file mode 100755
index 0000000..9eb0d1d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Normal.png
new file mode 100755
index 0000000..ddd496a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Over.png
new file mode 100755
index 0000000..870f4eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_cascade_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Disabled.png
new file mode 100755
index 0000000..8e20d7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Normal.png
new file mode 100755
index 0000000..46f2e7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Over.png
new file mode 100755
index 0000000..0aa9e86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clipboard_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Disabled.png
new file mode 100755
index 0000000..ed5d851
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Normal.png
new file mode 100755
index 0000000..69558e0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Over.png
new file mode 100755
index 0000000..9b31bd7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_clock_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Disabled.png
new file mode 100755
index 0000000..2116088
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Normal.png
new file mode 100755
index 0000000..3f75083
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Over.png
new file mode 100755
index 0000000..d48ce4f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_comment_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Disabled.png
new file mode 100755
index 0000000..d389568
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Normal.png
new file mode 100755
index 0000000..71405a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Over.png
new file mode 100755
index 0000000..bbcde12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_document_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Disabled.png
new file mode 100755
index 0000000..87e31a4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Normal.png
new file mode 100755
index 0000000..5ea6157
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Over.png
new file mode 100755
index 0000000..4ac2de5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_down_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Disabled.png
new file mode 100755
index 0000000..73e9b7c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Normal.png
new file mode 100755
index 0000000..73b9614
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Over.png
new file mode 100755
index 0000000..a6d88f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_downpin_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Disabled.png
new file mode 100755
index 0000000..7971d91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Normal.png
new file mode 100755
index 0000000..9bc0be7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Over.png
new file mode 100755
index 0000000..3cd3456
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_find_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Disabled.png
new file mode 100755
index 0000000..341fe23
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Normal.png
new file mode 100755
index 0000000..41bede3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Over.png
new file mode 100755
index 0000000..5e53d11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_heart_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Disabled.png
new file mode 100755
index 0000000..d8e20d6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Normal.png
new file mode 100755
index 0000000..8df06e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Over.png
new file mode 100755
index 0000000..f3a0141
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_help_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Disabled.png
new file mode 100755
index 0000000..e352557
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Normal.png
new file mode 100755
index 0000000..7c83aa6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Over.png
new file mode 100755
index 0000000..73b127c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_home_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Disabled.png
new file mode 100755
index 0000000..426059b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Normal.png
new file mode 100755
index 0000000..a4177e1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Over.png
new file mode 100755
index 0000000..140eeb5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_left_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Disabled.png
new file mode 100755
index 0000000..a54bbd1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Normal.png
new file mode 100755
index 0000000..bb3782e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Over.png
new file mode 100755
index 0000000..e2b15cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_leftpin_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Disabled.png
new file mode 100755
index 0000000..64c9cc5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Normal.png
new file mode 100755
index 0000000..7d69d2f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Over.png
new file mode 100755
index 0000000..133ba79
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_mail_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Disabled.png
new file mode 100755
index 0000000..6f627e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Normal.png
new file mode 100755
index 0000000..818fcea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Over.png
new file mode 100755
index 0000000..4b1fd37
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_minus_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Disabled.png
new file mode 100755
index 0000000..bf1d34d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Normal.png
new file mode 100755
index 0000000..70f3ed7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Over.png
new file mode 100755
index 0000000..a3b30b7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_person_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Disabled.png
new file mode 100755
index 0000000..7b01abb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Normal.png
new file mode 100755
index 0000000..36be2fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Over.png
new file mode 100755
index 0000000..ee9162a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_plus_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Disabled.png
new file mode 100755
index 0000000..c55920d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Normal.png
new file mode 100755
index 0000000..e891b4d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Over.png
new file mode 100755
index 0000000..e672fc3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_print_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Disabled.png
new file mode 100755
index 0000000..3e60438
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Normal.png
new file mode 100755
index 0000000..8ec39ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Over.png
new file mode 100755
index 0000000..82b756f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thick_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Disabled.png
new file mode 100755
index 0000000..ca94ea7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Normal.png
new file mode 100755
index 0000000..acb4aef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Over.png
new file mode 100755
index 0000000..dd4ee9c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_reset_thin_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Disabled.png
new file mode 100755
index 0000000..7512d35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Normal.png
new file mode 100755
index 0000000..1e50e62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Over.png
new file mode 100755
index 0000000..995cb96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_right_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Disabled.png
new file mode 100755
index 0000000..8c9932c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Normal.png
new file mode 100755
index 0000000..b088a73
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Over.png
new file mode 100755
index 0000000..942dfdb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_save_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Disabled.png
new file mode 100755
index 0000000..a385244
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Normal.png
new file mode 100755
index 0000000..7ae752d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Over.png
new file mode 100755
index 0000000..40c36d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_transfer_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Disabled.png
new file mode 100755
index 0000000..48f15f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Normal.png
new file mode 100755
index 0000000..f185fa0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Over.png
new file mode 100755
index 0000000..277620c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_trash_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Disabled.png
new file mode 100755
index 0000000..00f6d66
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Normal.png
new file mode 100755
index 0000000..b01510f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Over.png
new file mode 100755
index 0000000..2a78209
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_up_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Disabled.png
new file mode 100755
index 0000000..611c988
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Normal.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Normal.png
new file mode 100755
index 0000000..dade3a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Normal.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Over.png
new file mode 100755
index 0000000..71cdae4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/icons/window_icon_zoom_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize.png
new file mode 100755
index 0000000..0612499
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize_Disabled.png
new file mode 100755
index 0000000..05e75f3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize_Over.png
new file mode 100755
index 0000000..f8ace29
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/maximize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize.png
new file mode 100755
index 0000000..0d98cd1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize_Disabled.png
new file mode 100755
index 0000000..2e6e3d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize_Over.png
new file mode 100755
index 0000000..2c914bf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/minimize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/resizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/resizer.png
new file mode 100755
index 0000000..af075d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/resizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/resizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/resizer_Disabled.png
new file mode 100755
index 0000000..af075d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/resizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_B.png
new file mode 100755
index 0000000..e6f4faa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_BL.png
new file mode 100755
index 0000000..8712c12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_BR.png
new file mode 100755
index 0000000..8ca0d84
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_L.png
new file mode 100755
index 0000000..ef4e4d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_R.png
new file mode 100755
index 0000000..fe526f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_T.png
new file mode 100755
index 0000000..d738386
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_TL.png
new file mode 100755
index 0000000..0f10628
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_TR.png
new file mode 100755
index 0000000..5e2fde1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/images/Window/window_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/load_skin.js b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/load_skin.js
new file mode 100755
index 0000000..26331f3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/load_skin.js
@@ -0,0 +1,1002 @@
+/*============================================================
+ "Enterprise" theme programmatic settings
+ Copyright 2003 and beyond, Isomorphic Software
+============================================================*/
+
+
+isc.loadSkin = function (theWindow) {
+if (theWindow == null) theWindow = window;
+with (theWindow) {
+
+
+//----------------------------------------
+// Specify skin directory
+//----------------------------------------
+ // must be relative to your application file or isomorphicDir
+ isc.Page.setSkinDir("[ISOMORPHIC]/skins/Graphite/")
+
+
+//----------------------------------------
+// Load skin style sheet(s)
+//----------------------------------------
+ isc.Page.loadStyleSheet("[SKIN]/skin_styles.css", theWindow)
+
+
+
+//============================================================
+// Component Skinning
+//============================================================
+// 1) Scrollbars
+// 2) Buttons
+// 3) Resizebars
+// 4) Sections
+// 5) Progressbars
+// 6) TabSets
+// 7) Windows
+// 8) Dialogs
+// 9) Pickers
+// 10) Menus
+// 11) Hovers
+// 12) ListGrids
+// 13) TreeGrids
+// 14) Form controls
+// 15) Drag & Drop
+// 16) Edges
+// 17) Sliders
+// 18) TileList
+// 19) CubeGrid
+// 20) FilterBuilder
+// 21) Printing
+// 22) ToolStrip
+//============================================================
+
+
+ isc.Canvas.addProperties({
+ groupBorderCSS: "1px solid #A7ABB4"
+ });
+
+ if(isc.Browser.isIE && isc.Browser.version >= 7) {
+ isc.Canvas.setAllowExternalFilters(false);
+ isc.Canvas.setNeverUseFilters(true);
+ if(isc.Window) {
+ isc.Window.addProperties({
+ modalMaskOpacity:null,
+ modalMaskStyle:"normal"
+ });
+ isc.Window.changeDefaults("modalMaskDefaults", { src : "[SKIN]opacity.png" });
+ }
+ }
+
+ if(isc.RPCManager) {
+ isc.RPCManager.addClassProperties({ promptStyle:"cursor" });
+ }
+
+//----------------------------------------
+// 1) Scrollbars
+//----------------------------------------
+ isc.Canvas.addProperties({
+ showCustomScrollbars:true,
+ scrollbarSize:16,
+ cornerSize: 16
+ })
+ isc.ScrollThumb.addProperties({
+ capSize:2,
+ vSrc:"[SKIN]vthumb.png",
+ hSrc:"[SKIN]hthumb.png",
+ showGrip:true,
+ gripLength:10,
+ gripBreadth:10,
+ showRollOver: true,
+ //showDown: true,
+ backgroundColor:"transparent"
+ })
+ isc.Scrollbar.addProperties({
+ btnSize:18,
+ showRollOver:true,
+ //showDown: true,
+ thumbMinSize:20,
+ thumbInset:0,
+ thumbOverlap:2,
+ backgroundColor:"#FFFFFF",
+ vSrc:"[SKIN]vscroll.png",
+ hSrc:"[SKIN]hscroll.png"
+ })
+
+
+//----------------------------------------
+// 2) Buttons
+//----------------------------------------
+
+ // "IButton" is the new standard button class for SmartClient applications. Application
+ // code should use IButton instead of Button for all standalone buttons. Other skins may
+ // map IButton directly to Button, so this single class will work everywhere. Button remains
+ // for internal and advanced uses (eg if you need to mix both CSS-based and image-based
+ // standalone buttons in the same application).
+ isc.defineClass("IButton", "StretchImgButton").addProperties({
+ src:"[SKIN]button/button.png",
+ height:22,
+ width:100,
+ capSize:4,
+ vertical:false,
+ titleStyle:"buttonTitle",
+ showFocused:true,
+ showFocusedAsOver:true
+ });
+
+ isc.defineClass("IAutoFitButton", "IButton").addProperties({
+ autoFit: true,
+ autoFitDirection: isc.Canvas.HORIZONTAL
+ });
+ if (isc.IButton.markAsFrameworkClass != null) isc.IButton.markAsFrameworkClass();
+ if (isc.IAutoFitButton.markAsFrameworkClass != null) isc.IAutoFitButton.markAsFrameworkClass();
+
+
+ isc.ImgButton.addProperties({
+ showFocused: true,
+ showFocusedAsOver:true
+
+ });
+
+ isc.defineClass("HeaderImgButton", "ImgButton").addProperties({
+ showFocused: false,
+ showRollOver:false,
+ showFocusedAsOver: false,
+ showDown:false
+ });
+
+ isc.Button.addProperties({
+ height:22,
+ showFocused: true,
+ showFocusedAsOver: false
+ });
+
+ isc.Label.addProperties({
+ showFocused: false
+ });
+
+
+
+//----------------------------------------
+// 3) Resizebars
+//----------------------------------------
+ // StretchImgSplitbar class renders as resize bar with
+ // end caps, body, grip
+ isc.StretchImgSplitbar.addProperties({
+ // modify vSrc / hSrc for custom appearance
+ //vSrc:"[SKIN]vsplit.gif",
+ //hSrc:"[SKIN]hsplit.gif",
+ capSize:10,
+ showGrip:true
+ })
+
+ // ImgSplitbar renders as resizebar with resize grip only
+ isc.ImgSplitbar.addProperties({
+ // modify these properties for custom appearance
+ //vSrc:"[SKIN]vgrip.png",
+ //hSrc:"[SKIN]hgrip.png",
+ //showDown:true,
+ //styleName:"splitbar"
+ })
+
+ isc.Snapbar.addProperties({
+ vSrc:"[SKIN]vsplit.png",
+ hSrc:"[SKIN]hsplit.png",
+ baseStyle:"splitbar",
+ /*items : [
+ {name:"blank", width:"capSize", height:"capSize"},
+ {name:"blank", width:"*", height:"*"},
+ {name:"blank", width:"capSize", height:"capSize"}
+ ],*/
+ items : [
+ {name:"bg", width:"*", height:"*"}
+ ],
+ showDownGrip:false,
+ showClosedGrip:false,
+ showRollOver:false,
+ showDown:false,
+ gripBreadth:3,
+ gripLength:20
+ //capSize:8
+ })
+
+ isc.Layout.addProperties({
+ resizeBarSize:5,
+ // Use the Snapbar as a resizeBar by default - subclass of Splitbar that
+ // shows interactive (closed/open) grip images
+ // Other options include the Splitbar, StretchImgSplitbar or ImgSplitbar
+ resizeBarClass:"Snapbar"
+ })
+
+
+//----------------------------------------
+// 4) Sections
+//----------------------------------------
+ if (isc.SectionItem) {
+ isc.SectionItem.addProperties({
+ sectionHeaderClass:"ImgSectionHeader",
+ height:24
+ })
+ }
+ if (isc.SectionStack) {
+
+ isc.SectionStack.addProperties({
+ backgroundColor:null,
+ sectionHeaderClass:"ImgSectionHeader",
+ headerHeight:24
+ })
+ isc.ImgSectionHeader.changeDefaults("backgroundDefaults", {
+ showRollOver:false,
+ showDown:false,
+ showDisabledIcon:false,
+ showRollOverIcon:false,
+ src:"[SKIN]SectionHeader/header.png",
+ icon:"[SKIN]SectionHeader/opener.png",
+ iconSize: 16,
+ capSize:2,
+ titleStyle:"imgSectionHeaderTitle",
+ baseStyle:"imgSectionHeader",
+ backgroundColor:"transparent"
+ })
+ isc.SectionHeader.addProperties({
+ icon:"[SKIN]SectionHeader/opener.png",
+ iconSize: 16
+ })
+ }
+
+
+//----------------------------------------
+// 5) Progressbars
+//----------------------------------------
+ if (isc.Progressbar) {
+ isc.Progressbar.addProperties({
+ horizontalItems: [
+ {name:"h_start",size:2},
+ {name:"h_stretch",size:0},
+ {name:"h_end",size:2},
+ {name:"h_empty_start",size:2},
+ {name:"h_empty_stretch",size:0},
+ {name:"h_empty_end",size:2}
+ ],
+ verticalItems: [
+ {name:"v_empty_start",size:2},
+ {name:"v_empty_stretch",size:0},
+ {name:"v_empty_end",size:0},
+ {name:"v_start",size:2},
+ {name:"v_stretch",size:0},
+ {name:"v_end",size:2}
+ ],
+ breadth:24,
+ length : 300
+ })
+ }
+
+
+//----------------------------------------
+// 6) TabSets
+//----------------------------------------
+ if (isc.TabSet) {
+ isc.TabSet.addProperties({
+ tabBarThickness:28,
+ scrollerButtonSize:19,
+ pickerButtonSize:20,
+
+ symmetricScroller:false,
+ symmetricPickerButton:false,
+
+ scrollerSrc:"[SKIN]scroll.png",
+ pickerButtonSrc:"[SKIN]picker.png",
+
+ closeTabIconSize:12,
+ iconOrientation:"right",
+
+ showEdges:false,
+ paneContainerClassName:"tabSetContainer",
+
+ paneMargin:5,
+
+ showScrollerRollOver: false
+ });
+ isc.TabSet.changeDefaults("paneContainerDefaults", {
+ showEdges:false
+ })
+ isc.TabBar.addProperties({
+ membersMargin:3,
+
+ // keep the tabs from reaching the curved edge of the pane (regardless of align)
+ layoutStartMargin:5,
+ layoutEndMargin:5,
+
+ styleName:"tabBar",
+ leftStyleName:"tabBarLeft",
+ topStyleName:"tabBarTop",
+ rightStyleName:"tabBarRight",
+ bottomStyleName:"tabBarBottom",
+
+ // have the baseline overlap the top edge of the TabSet, using rounded media
+ baseLineConstructor:"Canvas",
+ baseLineProperties : {
+ backgroundColor: "#767F92",
+ overflow:"hidden",
+ height:5
+ },
+ baseLineThickness:3
+ })
+ }
+ if (isc.ImgTab) {
+ isc.ImgTab.addProperties({
+ src:"[SKIN]tab.png",
+ capSize:6,
+ showRollOver:true,
+ showDown:false,
+ showDisabled:true,
+ showDisabledIcon:false,
+ titleStyle:"tabTitle"
+ })
+ }
+
+
+//----------------------------------------
+// 7) Windows
+//----------------------------------------
+ if (isc.Window) {
+
+ isc._edgeOpacity = isc.Browser.isChrome ? 100 : 90;
+
+ isc.Window.addProperties({
+ edgeOpacity:isc._edgeOpacity,
+ maskEdgeCenterOnly: isc._edgeOpacity < 100,
+ // rounded frame edges
+ showEdges:true,
+ edgeImage: "[SKINIMG]Window/window.png",
+ customEdges:null,
+ edgeSize:3,
+ edgeTop:23,
+ edgeBottom:3,
+ edgeOffsetTop:2,
+ edgeOffsetRight:3,
+ edgeOffsetBottom:3,
+ showHeaderBackground:false, // part of edges
+ showHeaderIcon:true,
+ modalMaskOpacity:10,
+ // clear backgroundColor and style since corners are rounded
+ backgroundColor:null,
+ border: null,
+ styleName:"normal",
+ edgeCenterBackgroundColor:"#FFFFFF",
+ //bodyColor:null,
+ bodyColor:"transparent",
+ bodyStyle:"windowBody",
+
+ layoutMargin:0,
+ membersMargin:0,
+
+ showFooter:false,
+
+ showShadow:false,
+ shadowDepth:5
+ })
+
+ isc.Window.changeDefaults("headerDefaults", {
+ layoutMargin:0,
+ height:21
+ })
+ isc.Window.changeDefaults("resizerDefaults", {
+ src:"[SKIN]/Window/resizer.png"
+ })
+
+ isc.Window.changeDefaults("headerIconDefaults", {
+ width:15,
+ height:15,
+ src:"[SKIN]/Window/headerIcon.png"
+ })
+ isc.Window.changeDefaults("restoreButtonDefaults", {
+ src:"[SKIN]/headerIcons/cascade.png",
+ showRollOver:true,
+ showDown:false,
+ width:15,
+ height:15
+ })
+ isc.Window.changeDefaults("closeButtonDefaults", {
+ src:"[SKIN]/headerIcons/close.png",
+ showRollOver:true,
+ showDown:false,
+ width:15,
+ height:15
+ })
+ isc.Window.changeDefaults("maximizeButtonDefaults", {
+ src:"[SKIN]/headerIcons/maximize.png",
+ showRollOver:true,
+ width:15,
+ height:15
+ })
+ isc.Window.changeDefaults("minimizeButtonDefaults", {
+ src:"[SKIN]/headerIcons/minimize.png",
+ showRollOver:true,
+ showDown:false,
+ width:15,
+ height:15
+ })
+ isc.Window.changeDefaults("toolbarDefaults", {
+ buttonConstructor: "IButton"
+ })
+
+ if (isc.ColorPicker) {
+ isc.ColorPicker.addProperties({
+ layoutMargin:0
+ })
+ }
+
+//----------------------------------------
+// 8) Dialogs
+//----------------------------------------
+ if (isc.Dialog) {
+ isc.Dialog.addProperties({
+ bodyColor:"transparent",
+ hiliteBodyColor:"transparent"
+ })
+ // even though Dialog inherits from Window, we need a separate changeDefaults block
+ // because Dialog defines its own toolbarDefaults
+ isc.Dialog.changeDefaults("toolbarDefaults", {
+ buttonConstructor: "IButton",
+ height:42, // 10px margins + 22px button
+ membersMargin:10
+ })
+ if (isc.Dialog.Warn && isc.Dialog.Warn.toolbarDefaults) {
+ isc.addProperties(isc.Dialog.Warn.toolbarDefaults, {
+ buttonConstructor: "IButton",
+ height:42,
+ membersMargin:10
+ })
+ }
+ }
+
+ } // end isc.Window
+
+
+//----------------------------------------
+// 9) Pickers
+//----------------------------------------
+ // add bevels and shadows to all pickers
+ isc.__pickerDefaults = {
+ showEdges:true,
+ edgeSize:6,
+ edgeImage: "[SKINIMG]Window/window.png",
+ backgroundColor:"#FFFFFF",
+ showShadow:false,
+ shadowDepth:6,
+ shadowOffset:5
+ }
+ if (isc.ButtonTable) {
+ isc.ButtonTable.addProperties({
+ backgroundColor:"#FFFFFF"
+ })
+ }
+ if (isc.FormItem) {
+ isc.FormItem.changeDefaults("pickerDefaults", isc.__pickerDefaults)
+ isc.FormItem.addProperties({
+ defaultIconSrc:"[SKIN]/DynamicForm/default_formItem_icon.png"
+ });
+ }
+ if (isc.CheckboxItem) {
+ isc.CheckboxItem.addProperties({
+ checkedImage:"[SKINIMG]/DynamicForm/checked.png",
+ uncheckedImage:"[SKINIMG]/DynamicForm/unchecked.png",
+ unsetImage:"[SKINIMG]/DynamicForm/unsetcheck.png",
+ partialSelectedImage:"[SKINIMG]/DynamicForm/partialcheck.png",
+ valueIconWidth:13,
+ valueIconHeight:13,
+ showValueIconOver:false,
+ showValueIconFocused:false
+ })
+ }
+ if(isc.RelationItem) {
+ isc.RelationItem.changeDefaults("removeButtonDefaults", {
+ src: "[SKIN]DynamicForm/Remove_icon.png"
+ });
+ }
+
+ if (isc.DateChooser) {
+ isc.DateChooser.addProperties({
+ headerStyle:"dateChooserButton",
+ weekendHeaderStyle:"dateChooserWeekendButton",
+ baseNavButtonStyle:"dateChooserNavButton",
+ baseWeekdayStyle:"dateChooserWeekday",
+ baseWeekendStyle:"dateChooserWeekend",
+ baseBottomButtonStyle:"dateChooserBottomButton",
+ alternateWeekStyles:false,
+
+ showEdges:true,
+
+ edgeImage: "[SKINIMG]Window/window.png",
+ edgeSize:3,
+ edgeTop:26,
+ edgeBottom:3,
+ edgeOffsetTop:1,
+ edgeOffsetRight:3,
+ edgeOffsetLeft:3,
+ edgeOffsetBottom:5,
+
+ todayButtonHeight:20,
+
+ headerHeight:24,
+
+ edgeCenterBackgroundColor:"#FFFFFF",
+ backgroundColor:null,
+
+ showShadow:false,
+ shadowDepth:6,
+ shadowOffset:5,
+
+ showDoubleYearIcon:false,
+ skinImgDir:"images/DateChooser/",
+ prevYearIcon:"[SKIN]doubleArrow_left.png",
+ prevYearIconWidth:16,
+ prevYearIconHeight:16,
+ nextYearIcon:"[SKIN]doubleArrow_right.png",
+ nextYearIconWidth:16,
+ nextYearIconHeight:16,
+ prevMonthIcon:"[SKIN]arrow_left.png",
+ prevMonthIconWidth:16,
+ prevMonthIconHeight:16,
+ nextMonthIcon:"[SKIN]arrow_right.png",
+ nextMonthIconWidth:16,
+ nextMonthIconHeight:16
+ });
+ }
+ if (isc.MultiFilePicker) {
+ isc.MultiFilePicker.addProperties({
+ backgroundColor:"#C7C7C7"
+ })
+ }
+ if (isc.RelationPicker) {
+ isc.RelationPicker.addProperties({
+ backgroundColor:"#C7C7C7"
+ })
+ }
+
+ // Native FILE INPUT items are rendered differently in Safari from other browsers
+ // Don't show standard textbox styling around them as it looks odd
+ if (isc.UploadItem && isc.Browser.isSafari) {
+ isc.UploadItem.addProperties({
+ textBoxStyle:"normal"
+ });
+ }
+//----------------------------------------
+// 10) Menus
+//----------------------------------------
+ if (isc.Menu) {
+ isc.Menu.addProperties({
+ cellHeight:22,
+ fastCellUpdates:false,
+ showShadow:false,
+ shadowDepth:5,
+ showEdges:false,
+ submenuImage:{src:"[SKIN]submenu.png", height:7, width:4},
+ submenuDisabledImage:{src:"[SKIN]submenu_disabled.png", height:7, width:4},
+ checkmarkImage:{src:"[SKIN]check.png", width:9, height:8},
+ checkmarkDisabledImage:{src:"[SKIN]check_disabled.png", width:7, height:6},
+ bodyStyleName:"gridBody",
+ iconBodyStyleName:"menuMain",
+ bodyBackgroundColor:null
+ });
+ isc.addProperties(isc.Menu.ICON_FIELD, {
+ width:24,
+ baseStyle:"menuIconField"
+ });
+ isc.Menu.TITLE_FIELD.baseStyle = "menuTitleField";
+ }
+
+ if (isc.MenuButton) {
+ isc.MenuButton.addProperties({
+ baseStyle: "menuButton",
+ menuButtonImage:"[SKIN]menu_button.png",
+ menuButtonImageUp:"[SKIN]menu_button_up.png",
+ iconWidth:7,
+ iconHeight:4,
+ showFocusedAsOver:true
+ });
+ }
+ if (isc.IMenuButton) {
+ isc.IMenuButton.addProperties({
+ src:"[SKIN]button/button.png",
+ height:22,
+ capSize:4,
+ vertical:false,
+ titleStyle:"buttonTitle",
+ showFocused:true,
+ showFocusedAsOver:true,
+
+ menuButtonImage:"[SKIN]menu_button.png",
+ menuButtonImageUp:"[SKIN]menu_button_up.png",
+ iconWidth:7,
+ iconHeight:4
+ });
+ }
+
+ if (isc.SelectionTreeMenu) {
+ isc.SelectionTreeMenu.addProperties({
+ showIcons:false,
+ showKeys:false,
+ bodyStyleName:"treeMenuBody",
+ bodyBackgroundColor:null
+ });
+ }
+
+//----------------------------------------
+// 11) Hovers
+//----------------------------------------
+ if (isc.Hover) {
+ isc.addProperties(isc.Hover.hoverCanvasDefaults, {
+ showShadow:false,
+ shadowDepth:5
+ })
+ }
+
+
+//----------------------------------------
+// 12) ListGrids
+//----------------------------------------
+ if (isc.ListGrid) {
+ isc.ListGrid.addProperties({
+ alternateRecordStyles : true,
+ editFailedCSSText:"color:FF6347;",
+ errorIconSrc : "[SKINIMG]actions/exclamation.png",
+ tallBaseStyle: "tallCell",
+
+ headerButtonConstructor:"Button",
+ sorterConstructor:"ImgButton",
+ headerMenuButtonConstructor:"ImgButton",
+
+ sortAscendingImage:{src:"[SKIN]sort_ascending.png", width:9, height:6},
+ sortDescendingImage:{src:"[SKIN]sort_descending.png", width:9, height:6},
+
+ backgroundColor:null, bodyBackgroundColor:null,
+
+ headerHeight:23,
+ summaryRowHeight:21,
+ cellHeight:22,
+ normalCellHeight:22,
+ headerBackgroundColor:null,
+ headerBaseStyle:"headerButton",
+
+ bodyStyleName:"gridBody",
+ alternateBodyStyleName:null,
+
+ summaryRowStyle:"gridSummaryCell",
+ groupSummaryStyle:"groupSummaryCell",
+
+ showHeaderMenuButton:true,
+ headerMenuButtonConstructor:"HeaderImgButton",
+ headerMenuButtonWidth:17,
+ headerMenuButtonSrc:"[SKIN]/ListGrid/header_menu.png",
+ headerMenuButtonIcon:"[SKINIMG]/ListGrid/sort_descending.png",
+ headerMenuButtonIconWidth: 9,
+ headerMenuButtonIconHeight: 6,
+
+ groupLeadingIndent : 1,
+ groupIconPadding : 3,
+ groupIcon: "[SKINIMG]/ListGrid/group.png",
+
+ expansionFieldTrueImage : "[SKINIMG]/ListGrid/row_expanded.png",
+ expansionFieldFalseImage: "[SKINIMG]/ListGrid/row_collapsed.png",
+ expansionFieldImageWidth : 16,
+ expansionFieldImageHeight : 16,
+ checkboxFieldImageWidth : 13,
+ checkboxFieldImageHeight : 13
+
+ })
+ isc.ListGrid.changeDefaults("sorterDefaults", {
+ // baseStyle / titleStyle is auto-assigned from headerBaseStyle
+ showFocused:false,
+ src:"[SKIN]ListGrid/header.png",
+ baseStyle:"sorterButton"
+ })
+ isc.ListGrid.changeDefaults("headerButtonDefaults", {
+ showRollOver:true,
+ showDown:false,
+ showFocused:false,
+ // baseStyle / titleStyle is auto-assigned from headerBaseStyle
+ baseStyle:"headerButton"
+ })
+ isc.ListGrid.changeDefaults("headerMenuButtonDefaults", {
+ showDown:false,
+ showTitle:true,
+ src:"[SKIN]ListGrid/header.png"
+ })
+ isc.ListGrid.changeDefaults("summaryRowDefaults", {
+ bodyBackgroundColor:null,
+ bodyStyleName:"summaryRowBody"
+ });
+
+ }
+
+ if (isc.TreeGrid) {
+ isc.TreeGrid.addProperties({
+ alternateRecordStyles : false,
+ tallBaseStyle: "treeTallCell",
+ normalBaseStyle: "treeCell",
+ openerImage:"[SKIN]opener.png",
+ sortAscendingImage:{src:"[SKINIMG]ListGrid/sort_ascending.png", width:9, height:6},
+ sortDescendingImage:{src:"[SKINIMG]ListGrid/sort_descending.png", width:9, height:6}
+ })
+ }
+
+ if(isc.MultiSortPanel) {
+ isc.MultiSortPanel.changeDefaults("levelUpButtonDefaults", {
+ src: "[SKINIMG]TransferIcons/up.png",
+ height: 22,
+ width: 24
+ });
+ isc.MultiSortPanel.changeDefaults("levelDownButtonDefaults", {
+ src: "[SKINIMG]TransferIcons/down.png",
+ height: 22,
+ width: 24
+ });
+ }
+//----------------------------------------
+// 13) TreeGrids
+//----------------------------------------
+ if (isc.TreeGrid) {
+ isc.TreeGrid.addProperties({
+ openerIconSize: 22,
+ folderIcon:"[SKIN]folder.png",
+ nodeIcon:"[SKIN]file.png",
+ manyItemsImage:"[SKIN]folder_file.png"
+ })
+ }
+ if (isc.ColumnTree) {
+ isc.ColumnTree.addProperties({
+ folderIcon:"[SKIN]folder.png",
+ nodeIcon:"[SKIN]file.png"
+ });
+ }
+
+
+//----------------------------------------
+// 14) Form controls
+//----------------------------------------
+ if (isc.FormItem) {isc.FormItem.addProperties({
+ defaultIconSrc:"[SKIN]/DynamicForm/default_formItem_icon.png",
+ errorIconSrc : "[SKINIMG]actions/exclamation.png",
+ iconHeight:18,
+ iconWidth:18,
+ iconVAlign:"middle"
+
+ })}
+
+ if (isc.PickTreeItem) {isc.PickTreeItem.addProperties({
+ buttonDefaults: {
+ height:21
+ }
+ })}
+
+ if (isc.TextItem) {isc.TextItem.addProperties({
+ height:22,
+ showFocused: true
+ })}
+
+ if (isc.TextAreaItem) {isc.TextAreaItem.addProperties({
+ showFocused: true
+ })}
+
+ if (isc.SelectItem) {isc.SelectItem.addProperties({
+ textBoxStyle:"selectItemText",
+ showFocusedPickerIcon:false,
+ pickerIconSrc:"[SKIN]/pickers/comboBoxPicker.png",
+ height:22,
+ pickerIconWidth:18
+ })}
+
+ if (isc.ComboBoxItem) {isc.ComboBoxItem.addProperties({
+ textBoxStyle:"selectItemText",
+ showFocusedPickerIcon:false,
+ pendingTextBoxStyle:"comboBoxItemPendingText",
+ pickerIconSrc:"[SKIN]/pickers/comboBoxPicker.png",
+ height:22,
+ pickerIconWidth:18
+ })}
+ // used by SelectItem and ComboBoxItem for picklist
+ if (isc.ScrollingMenu) {isc.ScrollingMenu.addProperties({
+ showShadow:false,
+ shadowDepth:5
+ })}
+ if (isc.DateItem) {
+ isc.DateItem.addProperties({
+ height:22,
+ pickerIconWidth:16,
+ pickerIconHeight:14,
+ pickerIconSrc:"[SKIN]/DynamicForm/date_control.png"
+ })
+ }
+ if (isc.SpinnerItem) {
+ isc.SpinnerItem.addProperties({
+ textBoxStyle:"selectItemText",
+ height:22
+ })
+ isc.SpinnerItem.INCREASE_ICON = isc.addProperties(isc.SpinnerItem.INCREASE_ICON, {
+ width:16,
+ height:11,
+ showRollOver:true,
+ showFocused:true,
+ showDown:true,
+ imgOnly:true,
+ src:"[SKIN]/DynamicForm/spinner_control_increase.png"
+ })
+ isc.SpinnerItem.DECREASE_ICON = isc.addProperties(isc.SpinnerItem.DECREASE_ICON, {
+ width:16,
+ height:11,
+ showRollOver:true,
+ showFocused:true,
+ showDown:true,
+ imgOnly:true,
+ src:"[SKIN]/DynamicForm/spinner_control_decrease.png"
+ })
+ }
+
+
+
+ if (isc.PopUpTextAreaItem) {isc.PopUpTextAreaItem.addProperties({
+ popUpIconSrc: "[SKIN]/DynamicForm/text_control.gif",
+ popUpIconWidth:16,
+ popUpIconHeight:16
+ })}
+ if (isc.ButtonItem && isc.IButton) {isc.ButtonItem.addProperties({
+ showFocused:true,
+ showFocusAsOver:false,
+ buttonConstructor:isc.IButton,
+ height:22
+ })}
+
+ if (isc.ToolbarItem && isc.IAutoFitButton) {isc.ToolbarItem.addProperties({
+ buttonConstructor:isc.IAutoFitButton,
+ buttonProperties: {
+ autoFitDirection: isc.Canvas.BOTH
+ }
+ })}
+
+ if(isc.DateRangeDialog) {
+ isc.DateRangeDialog.changeDefaults("headerIconProperties", {
+ src: "[SKIN]/DynamicForm/date_control.png"
+ });
+ }
+ if(isc.MiniDateRangeItem) {
+ isc.MiniDateRangeItem.changeDefaults("pickerIconDefaults", {
+ src: "[SKIN]/DynamicForm/date_control.png"
+ });
+ }
+ if(isc.RelativeDateItem) {
+ isc.RelativeDateItem.changeDefaults("pickerIconDefaults", {
+ src: "[SKIN]/DynamicForm/date_control.png"
+ });
+ }
+
+
+//----------------------------------------
+// 15) Drag & Drop
+//----------------------------------------
+ // drag tracker drop shadow (disabled by default because many trackers are irregular shape)
+ //isc.addProperties(isc.EH.dragTrackerDefaults, {
+ // showShadow:false,
+ // shadowDepth:4
+ //});
+ // drag target shadow and opacity
+ isc.EH.showTargetDragShadow = true;
+ isc.EH.targetDragOpacity = 50;
+
+
+
+//----------------------------------------
+// 16) Edges
+//----------------------------------------
+ // default edge style serves as a pretty component frame/border - just set showEdges:true
+ if (isc.EdgedCanvas) {
+ isc.EdgedCanvas.addProperties({
+ edgeSize:3,
+ edgeImage: "[SKINIMG]edges/edge.png"
+ })
+ }
+
+
+//----------------------------------------
+// 17) Sliders
+//----------------------------------------
+ if (isc.Slider) {
+ isc.Slider.addProperties({
+ thumbThickWidth:14,
+ thumbThinWidth:14,
+ trackWidth:5,
+ trackCapSize:2,
+ thumbSrc:"thumb.png",
+ trackSrc:"track.png"
+ })
+ }
+
+//----------------------------------------
+// 18) TileList
+//----------------------------------------
+ if (isc.TileGrid) {
+ isc.TileGrid.addProperties({
+ valuesShowRollOver: true,
+ styleName:null,
+ showEdges:true
+ })
+ }
+
+// ----------------------------------------
+// 19) CubeGrid
+//----------------------------------------
+ if (isc.CubeGrid) {
+ isc.CubeGrid.addProperties({
+ bodyStyleName:"cubeGridBody",
+ alternateBodyStyleName:"alternateCubeGridBody"
+ });
+ }
+
+// ----------------------------------------
+// 20) FilterBuilder
+//----------------------------------------
+ if (isc.FilterBuilder) {
+ isc.FilterBuilder.changeDefaults("addButtonDefaults", {
+ showFocused: false
+ });
+ isc.FilterBuilder.changeDefaults("removeButtonDefaults", {
+ showFocused: false
+ });
+ }
+
+// -------------------------------------------
+// 21) Printing
+// -------------------------------------------
+ if (isc.PrintWindow) {
+ isc.PrintWindow.changeDefaults("printButtonDefaults", {
+ height: 18
+ });
+ }
+
+// -------------------------------------------
+// 21) Printing
+// -------------------------------------------
+ if (isc.Calendar) {
+ isc.Calendar.changeDefaults("datePickerButtonDefaults", {
+ showDown:false,
+ showOver : false,
+ src:"[SKIN]/DynamicForm/date_control.png"
+ });
+
+ isc.Calendar.changeDefaults("controlsBarDefaults", {
+ height:10,
+ layoutTopMargin :5
+ });
+ isc.Calendar.changeDefaults("addEventButtonDefaults", {
+ src:"[SKINIMG]actions/plus.png"
+ });
+ }
+
+// -------------------------------------------
+// 22) ToolStrip
+// -------------------------------------------
+ if(isc.ToolStrip) {
+ isc.ToolStrip.addProperties({
+ height:30,
+ defaultLayoutAlign:"center",
+ verticalStyleName:"toolStripVertical"
+ })
+ }
+
+// -------------------------------------------
+// ExampleViewPane - used in the feature explorer
+// -------------------------------------------
+ if (isc.ExampleViewPane) {
+ isc.ExampleViewPane.addProperties({
+ styleName:"normal"
+ });
+ }
+
+// specify where the browser should redirect if not supported
+isc.Page.checkBrowserAndRedirect("[SKIN]/unsupported_browser.html");
+
+} // end with()
+} // end loadSkin()
+
+isc.loadSkin()
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/load_skin.js.gz b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/load_skin.js.gz
new file mode 100755
index 0000000..d55c8f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/load_skin.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/skin_styles.css b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/skin_styles.css
new file mode 100755
index 0000000..5181e18
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/skin_styles.css
@@ -0,0 +1,2387 @@
+/*============================================================
+ "Enterprise" theme CSS styles
+ Copyright 2001 and beyond, Isomorphic Software
+
+ :: Contents ::
+
+ 1) General
+ default text
+ default border
+ drop indicator
+ hover canvas
+ 2) Buttons
+ Button
+ ImgButton
+ StretchImgButton
+ 3) Menu
+ MenuButton
+ 4) Window
+ Dialog
+ 5) Layout
+ drop line
+ drag placeholder
+ splitbar (resizebar)
+ 6) TabSet
+ tab titles
+ 7) SectionStack
+ image SectionHeaders
+ CSS SectionHeaders
+ 8) Forms
+ general
+ headerItem
+ text items
+ selectItem
+ checkbox & radioButton
+ ColorChooser
+ DateChooser
+ 9) Slider & Rangebar
+ 10) DetailViewer
+ 11) ListGrid
+ parts
+ headers
+ cells
+ 12) ToolStrip
+ 12a) ToolStripGroup and IconButton
+ 13) Tools
+ 14) TileGrid
+ ------------
+ internal/unused styles
+============================================================*/
+
+/*
+
+*/
+
+
+
+/*============================================================
+ 1) General
+============================================================*/
+
+.pageBackground {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ background:#FAFAFA;
+}
+
+/* default text */
+.normal {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+}
+
+.defaultBorder {
+ border:1px solid #A7ABB4;
+}
+
+/* drag outline */
+.dragOutline {
+ border:1px dashed #0B70F9;
+}
+
+/* drop indicator */
+.dropBorder {
+ background-color:#808080;
+}
+
+
+/* hover canvas */
+.canvasHover,
+.gridHover,
+.formHover {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:black;
+ background-color:#fceeaf; border:1px solid #808080; padding:5px;
+}
+
+/* group label */
+.groupLabel {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ padding-left:5px; padding-right:5px;
+}
+/*============================================================
+ 2) Button
+ button.baseStyle
+ buttonStrip.baseStyle
+ buttonTable.baseButtonStyle
+ listBar.labelStyle
+ listGrid.headerBaseStyle (not in this skin)
+============================================================*/
+.button,
+.buttonOver,
+.buttonFocused,
+.buttonFocusedOver,
+.buttonDown,
+.buttonFocusedDown,
+.buttonSelected,
+.buttonSelectedFocused,
+.buttonSelectedDown,
+.buttonSelectedFocusedDown,
+.buttonSelectedOver,
+.buttonSelectedFocusedOver,
+.buttonDisabled,
+.buttonSelectedDisabled {
+ padding:2px;
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ background:#DDDDDD url(./images/cssButton/button_stretch.png) repeat-x;
+ color:#000000;
+ border:1px solid #A6ABB4;
+}
+.buttonDisabled {
+ background:#E9E9E9 url(./images/cssButton/button_Disabled_stretch.png) repeat-x;
+ border-left:1px solid #A7ABB4;
+ border-right:1px solid #A6AAB3;
+ border-top:1px solid #BABDC4;
+ border-bottom:1px solid #B4B8C1;
+}
+.buttonDisabled,
+.buttonSelectedDisabled {
+ font-weight:normal;
+ color:#AAAAAA;
+}
+
+.buttonFocused,
+.buttonFocusedOver,
+.buttonSelectedFocused,
+.buttonSelectedFocusedOver,
+.buttonSelectedFocusedDown {
+ border:1px solid #898d96;
+}
+
+.buttonOver,
+.buttonFocusedOver,
+.buttonSelectedFocused,
+.buttonSelectedFocusedOver {
+ background:#898d96 url(./images/cssButton/button_Over_stretch.png) repeat-x;
+}
+
+.buttonDown,
+.buttonFocusedDown,
+.buttonSelectedDown,
+.buttonSelectedFocusedDown {
+ background:#898d96 url(./images/cssButton/button_Down_stretch.png) repeat-x;
+ border:1px solid #898d96;
+}
+
+.buttonSelected,
+.buttonSelectedFocused,
+.buttonSelectedOver,
+.buttonSelectedFocusedOver,
+.buttonSelectedDisabled {
+ background:#A6AAB3 url(./images/cssButton/button_Over_stretch.png) repeat-x;
+}
+
+/* ImgButton */
+.imgButton,
+.imgButtonOver,
+.imgButtonSelected,
+.imgButtonSelectedDisabled,
+.imgButtonSelectedOver,
+.imgButtonDown,
+.imgButtonSelectedDown,
+.imgButtonDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+}
+.imgButtonDisabled {
+ color:#666666;
+}
+
+/* StretchImgButton */
+.stretchImgButton,
+.stretchImgButtonSelected,
+.stretchImgButtonSelectedOver,
+.stretchImgButtonOver,
+.stretchImgButtonDown,
+.stretchImgButtonSelectedDown,
+.stretchImgButtonSelectedDisabled,
+.stretchImgButtonDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+}
+.stretchImgButtonOver {
+}
+.stretchImgButtonSelectedDisabled,
+.stretchImgButtonDisabled {
+ font-weight:normal;
+ color:#AAAAAA;
+}
+
+/* Button Title */
+.buttonTitle,
+.buttonTitleOver,
+.buttonTitleDown,
+.buttonTitleSelected,
+.buttonTitleFocused,
+.buttonTitleSelectedFocused,
+.buttonTitleSelectedOver,
+.buttonTitleFocusedOver,
+.buttonTitleSelectedFocusedOver,
+.buttonTitleSelectedDown,
+.buttonTitleFocusedDown,
+.buttonTitleSelectedFocusedDown,
+.buttonTitleDisabled,
+.buttonTitleSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:#000000;
+}
+.buttonTitleDisabled,
+.buttonTitleSelectedDisabled {
+ font-weight:normal;
+ color:#AAAAAA;
+}
+
+
+/*============================================================
+ 3) Menus
+============================================================
+ */
+
+.menuMain {
+ border: 1px solid #93A9C0;
+ background:#FFFFFF url(./images/Menu/menu_background.png) repeat-y scroll;
+}
+.treeMenuBody {
+ border: 1px solid #93A9C0;
+ background: #FFFFFF;
+}
+.menu,
+.menuSelected,
+.menuOver,
+.menuSelectedOver,
+.menuDisabled,
+.menuTitleField,
+.menuTitleFieldDark,
+.menuTitleFieldSelected,
+.menuTitleFieldSelectedDark,
+.menuTitleFieldOver,
+.menuTitleFieldOverDark,
+.menuTitleFieldSelectedOver,
+.menuTitleFieldSelectedOverDark,
+.menuTitleFieldDisabled,
+.menuIconField,
+.menuIconFieldOver,
+.menuIconFieldSelected,
+.menuIconFieldSelectedOver,
+.menuIconFieldDisabled,
+.treeMenuSelected,
+.treeMenuSelectedOver,
+.treeMenuSelectedSelected,
+.treeMenuSelectedSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ padding-top:2px; padding-bottom:2px;
+}
+.menu,
+.menuSelected {
+}
+.menuOver,
+.menuOverDark,
+.menuSelectedOver,
+.menuSelectedOverDark,
+.menuTitleFieldOver,
+.menuTitleFieldOverDark,
+.menuTitleFieldSelectedOver,
+.menuTitleFieldSelectedOverDark,
+.menuIconFieldOver,
+.menuIconFieldOverDark,
+.menuIconFieldSelectedOver,
+.menuIconFieldSelectedOverDark,
+.treeMenuSelected,
+.treeMenuSelectedDark,
+.treeMenuSelectedOver,
+.treeMenuSelectedOverDark,
+.treeMenuSelectedSelected,
+.treeMenuSelectedSelectedOver {
+ background:#FFFFFF url(./images/ListGrid/row_Over.png) repeat-x scroll 0px 1px;
+}
+
+.menuTitleField,
+.menuTitleFieldDark,
+.menuTitleFieldSelected,
+.menuTitleFieldSelectedDark,
+.menuTitleFieldOver,
+.menuTitleFieldOverDark,
+.menuTitleFieldSelectedOver,
+.menuTitleFieldSelectedOverDark,
+.menuTitleFieldDisabled {
+ padding-left:4px;
+}
+
+.menuIconField,
+.menuIconFieldDark,
+.menuIconFieldOver,
+.menuIconFieldOverDark,
+.menuIconFieldSelected,
+.menuIconFieldSelectedDark,
+.menuIconFieldSelectedOver,
+.menuIconFieldSelectedOverDark,
+.menuIconFieldDisabled {
+ padding-left:4px; padding-right:4px;
+}
+.menuDisabled ,
+.menuTitleFieldDisabled,
+.menuIconFieldDisabled {
+ color:#AAAAAA;
+}
+
+
+/* menu header buttons */
+.menuButton,
+.menuButtonOver,
+.menuButtonDown,
+.menuButtonDisabled,
+.menuButtonFocused,
+.menuButtonFocusedDown,
+.menuButtonFocusedOver,
+.menuButtonSelected,
+.menuButtonSelectedDown,
+.menuButtonSelectedOver,
+.menuButtonSelectedDisabled {
+ font-family:Arial,sans-serif; font-size:11px;
+ background:#DDDDDD url(./images/cssButton/button_stretch.png) repeat-x scroll;
+ padding-left:4px; padding-right:4px;
+ color:#000000;
+ border:1px solid #A6ABB4;
+}
+
+.menuButtonOver {
+background:#A6ABB4 url(./images/cssButton/button_Over_stretch.png) repeat-x;
+}
+
+.menuButtonDown,
+.menuButtonFocusedDown,
+.menuButtonFocusedOver,
+.menuButtonSelected,
+.menuButtonSelectedDown,
+.menuButtonSelectedOver {
+ background:#A6ABB4 url(./images/cssButton/button_Down_stretch.png) repeat-x;
+ border:1px solid #A6ABB4;
+}
+.menuButtonDisabled,
+.menuButtonSelectedDisabled {
+ color:#AAAAAA;
+ border:1px solid #A6ABB4;
+}
+
+
+/*============================================================
+ 4) Window
+ window.styleName - windowBackground
+ window.bodyStyle - windowBody
+ window.headerStyle - windowHeader
+ window.hiliteHeaderStyle - windowHeaderHilite
+ window.headerLabelDefaults.styleName - windowHeaderText
+ window.statusBarDefaults.styleName - windowStatusBar
+
+ Dialog
+ dialog.styleName - dialogBackground
+ dialog.bodyStyle - dialogBody
+ dialog.headerStyle - dialogHeader
+ dialog.hiliteHeaderStyle - dialogHeaderHilite
+ dialog.headerLabelDefaults.styleName - dialogHeaderText
+============================================================*/
+
+.windowBackground,
+.dialogBackground {}
+
+.windowBody,
+.dialogBody {
+ background:#FFFFFF;
+}
+.promptBody {
+}
+
+.windowHeader,
+.dialogHeader {
+}
+
+.windowHeaderHilite,
+.dialogHeaderHilite {
+}
+
+.windowHeaderText,
+.dialogHeaderText {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ font-weight:bold;
+ color:#FFFFFF;
+ padding-left:2px; padding-right:2px; padding-bottom:2px;
+}
+.windowStatusBar {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:black;
+ border-top: 1px solid #999999; border-left: 1px solid #999999;
+ border-right: 1px solid #FFFFFF; border-bottom: 1px solid #FFFFFF;
+}
+.modalMask {
+ background-color:black;
+}
+
+/*============================================================
+ 5) Layout
+============================================================*/
+
+.layoutDropLine {
+ background-color:#3366FF;
+
+}
+.layoutPlaceHolder {
+ border:1px solid black;
+}
+.splitbar {
+
+}
+.splitbarDown {
+ border:1px solid rgb(50,135,185);
+}
+
+.vSnapBar,
+.vSnapBarOver {
+}
+.hSnapBar,
+.hSnapBarOver {
+}
+
+/*============================================================
+ 6) TabSet and tab titles
+============================================================*/
+
+.tabSetContainer {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:#D9D9D9;
+ border: 1px solid #8f9ca0;
+ background-color:#fff;
+}
+
+.tabBarTop {
+ padding-top:2px;
+}
+
+.tabBarLeft {
+ padding-left:2px;
+}
+
+.tabBarRight {
+ padding-right:2px;
+}
+
+.tabBarBottom {
+ padding-bottom:2px;
+}
+
+.tabBaseline {
+ z-index:1;
+ height:24px;
+ background-color:#000;
+}
+
+.tab,
+.tabOver,
+.tabSelected,
+.tabSelectedOver,
+.tabDown,
+.tabSelectedDown,
+.tabSelectedDisabled,
+.tabDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+}
+
+.tabTitle,
+.tabTitleDown,
+.tabTitleOver,
+.tabTitleDisabled,
+.tabTitleSelected,
+.tabTitleSelectedDown,
+.tabTitleSelectedOver,
+.tabTitleSelectedDisabled,
+.vtabTitle,
+.vtabTitleSelected,
+.vtabTitleOver,
+.vtabTitleDown,
+.vtabTitleSelectedOver,
+.vtabTitleSelectedDown,
+.vtabTitleDisabled,
+.vtabTitleSelectedDisabled {
+ color: #29333c;
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ padding-bottom:4px;
+}
+.tabTitleOver,
+.vtabTitleOver {
+ color:#29333c;
+}
+
+.tabTitleSelected,
+.vtabTitleSelected {
+ color:#FFF;
+ padding-bottom:4px;
+}
+
+.tabTitleSelectedOver,
+.vtabTitleSelectedOver {
+ color:#353f46;
+ padding-bottom:4px;
+}
+
+
+.tabTitleDisabled,
+.tabTitleSelectedDisabled,
+.vtabTitleDisabled,
+.vtabTitleSelectedDisabled {
+ color: #AAAAAA;
+ padding-bottom:2px;
+}
+
+
+
+/*============================================================
+ 7) SectionStack
+============================================================*/
+
+.sectionStack {
+ border-left:1px solid #A6ABB4;
+ border-right:1px solid #A6ABB4;
+ border-bottom:1px solid #A6ABB4;
+}
+
+/* SectionStack headers - image based */
+.imgSectionHeaderclosed,
+.imgSectionHeaderopened,
+.imgSectionHeaderDisabledclosed,
+.imgSectionHeaderDisabledopened {
+}
+.imgSectionHeaderTitleclosed,
+.imgSectionHeaderTitleopened,
+.imgSectionHeaderTitleOverclosed,
+.imgSectionHeaderTitleOveropened {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:#fffaf8;
+ border-left:5px;
+}
+
+.imgSectionHeaderTitleDisabledopened,
+.imgSectionHeaderTitleDisabledclosed {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:gray;
+ border-left:5px;
+}
+
+.sectionHeaderTitleopened,
+.sectionHeaderTitleclosed {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:white;
+}
+.sectionHeaderTitleDisabledopened,
+.sectionHeaderTitleDisabledclosed {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#808080;
+}
+/* SectionStack headers - css based */
+.sectionHeaderopened,
+.sectionHeaderclosed {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:black;
+ padding:3px;
+ border: 1px solid #A6ABB4;
+}
+
+.sectionHeaderopened {
+ background: url(./images/SectionHeader/header_closed_stretch.png) repeat-x scroll;
+}
+.sectionHeaderclosed {
+ background: url(./images/SectionHeader/header_closed_stretch.png) repeat-x scroll;
+}
+
+
+.cellopened {
+ background-color:red;
+}
+.cellclosed {
+ background-color:pink;
+}
+
+/*============================================================
+ 8) Forms
+============================================================*/
+
+/* general form styles */
+.formRow {}
+.formCell,
+.formCellFocused,
+.formCellDisabled,
+.nestedFormContainer,
+.nestedFormContainerFocused,
+.nestedFormContainerDisabled {
+ font-family:Arial,sans-serif; font-size:11px;
+}
+.formTitle,
+.formTitleFocused,
+.formTitleDisabled,
+.formCellError,
+.formTitleError,
+.formHint,
+.headerItem,
+.headerItemDisabled,
+.headerItemError,
+.staticTextItem,
+.staticTextItemDisabled,
+.staticTextItemError,
+.textItem,
+.textItemFocused,
+.textItemDisabled,
+.textItemError,
+.textItemHint,
+.selectItemControl,
+.selectItemControlError,
+.selectItemControlFocused,
+.selectItemText,
+.selectItemTextError,
+.selectItemTextDisabled,
+.selectItemTextFocused,
+.comboBoxItemPendingText,
+.pickListCell,
+.pickListCellSelected,
+.pickListCellDisabled,
+.pickListCellDark,
+.pickListCellSelectedDark,
+.tallPickListCell,
+.tallPickListCellSelected,
+.tallPickListCellDisabled,
+.tallPickListCellDark,
+.tallPickListCellSelectedDark,
+.labelAnchor,
+.labelAnchorDisabled,
+.labelAnchorError,
+.labelAnchorFocused {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+}
+
+.formTitle,
+.formTitleFocused {
+ color:#003168;
+}
+
+.formTitleDisabled {
+ color:#AAAAAA;
+}
+.formCellError,
+.formTitleError {
+ font-weight:bold; color:#204268;
+}
+.formHint {
+ color:#455668; padding:3px;
+}
+
+/* Allow for nested forms to lie flush against the left-hand edge of the containing form */
+.nestedFormContainer,
+.nestedFormContainerFocused,
+.nestedFormContainerDisabled {
+ padding-left: 0px;
+}
+
+
+/* headerItem */
+.headerItem,
+.headerItemDisabled,
+.headerItemError {
+ font-family:Arial,sans-serif; font-size:14px; font-weight:bold;
+ color:#4C4C4C;
+}
+
+/* text-based items common props */
+.textItem,
+.textItemFocused,
+.textItemDisabled,
+.textItemError,
+.textItemHint,
+.selectItemText,
+.selectItemTextError,
+.selectItemTextFocused,
+.selectItemTextDisabled,
+.comboBoxItemPendingText,
+.selectItemTextHint {
+ padding:2px;
+ border:1px solid #898d96;
+ background:#FFFFFF;
+ color:black;
+}
+
+.textItem {
+ border-top:1px solid #abadb3;
+ border-left:1px solid #dbdfe5;
+ border-right:1px solid #dbdfe5;
+ border-bottom:1px solid #dbdfe5;
+}
+
+.textItemDisabled,
+.selectItemTextDisabled {
+ color:#666666;
+ background-color:#FFFFFF;
+ border:1px solid #A6ABB4;
+}
+
+.textItemHint,
+.selectItemTextHint {
+ color:#204268;
+}
+
+.comboBoxItemPendingText {
+ color:#0066CC;
+}
+
+/* selectItem */
+
+.selectItemTextFocused {
+ color:black;
+ -moz-outline-offset:-1;
+ border:1px solid #5678ac;
+}
+
+.textItemFocused,
+.selectItemTextFocused {
+ color:black;
+ -moz-outline-offset:-1;
+ border-top:1px solid #5678ac;
+ border-left:1px solid #bccde6;
+ border-right:1px solid #afc6e2;
+ border-bottom:1px solid #c0d7ec;
+}
+
+.selectItemText,
+.selectItemTextError,
+.selectItemTextFocused,
+.selectItemTextDisabled {
+ border-right:0px none;
+}
+
+.selectItemPickerIcon,
+.selectItemPickerIconFocused,
+.selectItemPickerIconDisabled,
+.selectItemPickerIconError {
+ padding:0px;
+}
+
+.pickListMenuBody {
+ border:1px solid #90A6BD;
+ background-color:#FFFFFF;
+}
+
+.pickListCell,
+.pickListCellDark,
+.tallPickListCell,
+.tallPickListCellDark {
+ color:black;
+}
+.pickListCellSelected,
+.pickListCellSelectedDark {
+ color:black;
+ background:#faebb5;
+}
+.tallPickListCellSelected,
+.tallPickListCellSelectedDark {
+ color:black;
+ background:#B2DFEE;
+}
+.pickListCellDisabled,
+.tallPickListCellDisabled {
+ color:#595959;
+ background-color:#C0C0C0;
+}
+
+/* checkbox and radioButton */
+.labelAnchor,
+.labelAnchorDisabled,
+.labelAnchorError,
+.labelAnchorFocused {
+ font-family:Arial; color:black; text-decoration:none;
+}
+.labelAnchorDisabled {
+ font-family:Arial; color:#AAAAAA;
+}
+
+/* ColorChooser */
+.colorChooserCell,
+.colorChooserCellOver {
+ background-color:#EFEFEF;
+ border-left:1px solid #EFEFEF; border-top:1px solid #EFEFEF;
+ border-right:1px solid #EFEFEF; border-bottom:1px solid #EFEFEF;
+}
+.colorChooserCellOver {
+ border-left:1px solid black; border-top:1px solid black;
+ border-right:1px solid black; border-bottom:1px solid black;
+}
+
+/* FilterBuilder */
+.bracketBorders {
+ border-left: 1px solid rgb(50,135,185);
+ border-top: 1px solid rgb(50,135,185);
+ border-bottom: 1px solid rgb(50,135,185);
+}
+/*============================================================
+ DateChooser
+============================================================*/
+
+/* Defaults for all days and controls */
+.dateChooserButton,
+.dateChooserButtonOver,
+.dateChooserButtonDown,
+.dateChooserButtonDisabled,
+.dateChooserButtonSelected,
+.dateChooserButtonSelectedDown,
+.dateChooserButtonSelectedOver,
+.dateChooserButtonSelectedDisabled,
+.dateChooserWeekendButton,
+.dateChooserWeekendButtonOver,
+.dateChooserWeekendButtonDown,
+.dateChooserWeekendButtonDisabled,
+.dateChooserWeekendButtonSelected,
+.dateChooserWeekendButtonSelectedDown,
+.dateChooserWeekendButtonSelectedOver,
+.dateChooserWeekendButtonSelectedDisabled,
+.dateChooserBottomButton,
+.dateChooserBottomButtonOver,
+.dateChooserBottomButtonDown,
+.dateChooserBottomButtonSelected,
+.dateChooserBottomButtonSelectedOver,
+.dateChooserBottomButtonSelectedDown,
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown,
+.dateChooserWeekday,
+.dateChooserWeekdayOver,
+.dateChooserWeekdayDown,
+.dateChooserWeekdaySelected,
+.dateChooserWeekdaySelectedOver,
+.dateChooserWeekdaySelectedDown,
+.dateChooserWeekdayDisabled,
+.dateChooserWeekend,
+.dateChooserWeekendOver,
+.dateChooserWeekendDown,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedOver,
+.dateChooserWeekendSelectedDown,
+.dateChooserWeekendDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ background-color:transparent;
+ color:black;
+}
+
+/* year/month buttons */
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ padding:0px;
+ border-top:0px none;
+ border-bottom:0px none;
+}
+
+/* for all buttons, plus weekday headers (dateChooserButton) */
+.dateChooserButton,
+.dateChooserButtonOver,
+.dateChooserButtonDown,
+.dateChooserButtonSelected,
+.dateChooserButtonSelectedOver,
+.dateChooserButtonSelectedDown,
+.dateChooserWeekendButton,
+.dateChooserWeekendButtonOver,
+.dateChooserWeekendButtonDown,
+.dateChooserWeekendButtonSelected,
+.dateChooserWeekendButtonSelectedOver,
+.dateChooserWeekendButtonSelectedDown,
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ font-weight:bold;
+ color:#a3afbe;
+}
+
+.dateChooserButtonOver,
+.dateChooserButtonDown {
+ cursor:pointer;
+ color:#467DCD;
+}
+
+.dateChooserWeekendButton,
+.dateChooserWeekendButtonOver,
+.dateChooserWeekendButtonDown,
+.dateChooserWeekendButtonSelected,
+.dateChooserWeekendButtonSelectedOver,
+.dateChooserWeekendButtonSelectedDown {
+ background-color:#FFE49C;
+}
+
+
+.dateChooserNavButton,
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown,
+.dateChooserNavButtonSelected,
+.dateChooserNavButtonSelectedOver,
+.dateChooserNavButtonSelectedDown {
+ cursor:pointer;
+ padding:2px;
+}
+
+.dateChooserNavButtonOver,
+.dateChooserNavButtonDown {
+ color:#467DCD;
+}
+
+/* Today, Cancel buttons */
+.dateChooserBottomButton,
+.dateChooserBottomButtonOver,
+.dateChooserBottomButtonDown {
+ cursor:pointer;
+ font-weight:bold;
+ color:#242E27;
+ border-left:1px solid #ACB1B9;
+ border-top:1px solid #ACB1B9;
+}
+.dateChooserBottomButtonOver {
+ color:#616B82;
+}
+
+
+/* weekday and weekend cells */
+
+.dateChooserWeekday,
+.dateChooserWeekdayOver,
+.dateChooserWeekdayDown,
+.dateChooserWeekdaySelected,
+.dateChooserWeekdaySelectedOver,
+.dateChooserWeekdaySelectedDown,
+.dateChooserWeekdayDisabled,
+.dateChooserWeekend,
+.dateChooserWeekendOver,
+.dateChooserWeekendDown,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedOver,
+.dateChooserWeekendSelectedDown,
+.dateChooserWeekendDisabled {
+ cursor:pointer;
+ color:black;
+ border:2px solid white;
+ background-color:white;
+}
+
+.dateChooserWeekdayDisabled,
+.dateChooserWeekendDisabled {
+ color:#A5A7AD;
+}
+
+.dateChooserWeekend,
+.dateChooserWeekendOver,
+.dateChooserWeekendSelected,
+.dateChooserWeekendDisabled {
+ border:2px solid #FFE49C;
+ background-color:#FFE49C;
+}
+
+.dateChooserWeekdayOver,
+.dateChooserWeekendOver {
+ border:2px solid #536782;
+}
+
+.dateChooserWeekdaySelected,
+.dateChooserWeekdaySelectedOver,
+.dateChooserWeekdayDown,
+.dateChooserWeekdaySelectedDown,
+.dateChooserWeekendSelected,
+.dateChooserWeekendSelectedOver,
+.dateChooserWeekendDown,
+.dateChooserWeekendSelectedDown {
+ font-weight:bold;
+ color:#4C4C4C;
+ border:2px solid #536782;
+ background-color:#C2CCDE;
+}
+
+.dateChooserWeekdayDown,
+.dateChooserWeekendDown {
+ font-weight:normal;
+}
+
+/* year and month pop-up menus */
+.dateChooserYearMenu,
+.dateChooserMonthMenu {
+ border: 2px solid #4C4C4C;
+ background-color:#FFFFFF;
+}
+
+/*============================================================
+ 9) Slider & Rangebar
+============================================================*/
+
+/* slider and rangebar labels */
+.sliderTitle,
+.sliderRange,
+.sliderValue,
+.rangebarTitle,
+.rangebarRange,
+.rangebarValue {
+ color:black;
+ font-family:Arial,Verdana,sans-serif; font-size:10px;
+}
+.sliderTitle,
+.rangebarTitle {
+ color:#4C4C4C;
+ font-weight:bold;
+}
+.sliderRange,
+.rangebarRange {
+ color:black;
+}
+
+
+
+/*============================================================
+ 10) DetailViewer
+============================================================*/
+
+.detailBlock {
+ border-left:1px solid #A7ABB4;
+ border-top:1px solid #A7ABB4;
+}
+
+.detail,
+.detailLabel,
+.detailHeader {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:white;
+ color:black;
+ border-right:1px solid #A7ABB4;
+ border-bottom:1px solid #A7ABB4;
+}
+
+.detailLabel {
+ font-weight:bold;
+ color:#4C4C4C;
+ background-color:#F6F7F9;
+ text-align:right;
+}
+
+.detailHeader {
+ font-family:Arial,sans-serif; font-size:14px; font-weight:bold;
+ color:#4C4C4C;
+ background-color:#BBDAFA;
+}
+
+
+
+/*============================================================
+ 11) ListGrid
+============================================================*/
+
+/*============================================================
+ ListGrid parts
+ styleName - listGrid
+ headerBarStyle - headerBar
+ bodyStyleName - gridBody
+============================================================*/
+
+.listGrid {
+ border: 1px solid #aebdd4;
+}
+.headerBar {
+ background:#FFFFFF url(./images/ListGrid/header.png) repeat-x bottom left scroll;
+}
+
+.gridBody {
+ background-color:#FFFFFF;
+}
+.alternateGridBody {
+ background-color:#FFFFFF;
+}
+
+.loadingDataMessage,
+.offlineMessage,
+.emptyMessage {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; padding:10px;
+ color:black;
+}
+.gridDragTracker {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ padding:1px;
+ border:1px dotted gray;
+}
+.dragLine {
+ border-bottom:2px dotted #445566;
+}
+
+.listTable {
+}
+/* for filterEditor */
+.recordEditorCell {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:black; background-color:#f4f4f4;
+}
+
+
+
+/*============================================================
+ ListGrid headers
+ listGrid.headerBaseStyle - headerButton (in skin)
+ listGrid.headerDefaults.titleStyle - headerTitle (in skin)
+ listGrid.sorterDefaults.titleStyle - headerTitle (in skin)
+
+============================================================*/
+
+/* ListGrid column header buttons */
+.headerButton,
+.headerButtonSelected,
+.headerButtonDisabled,
+.headerButtonSelectedDisabled,
+.headerButtonOver,
+.headerButtonDown,
+.headerButtonSelectedOver,
+.headerButtonSelectedDown {
+ background-color:#FFFFFF;
+
+ border-left:1px solid rgb(246,247,249);
+ border-right:1px solid rgb(200,204,207);
+ font-family:Arial, Verdana, sans-serif; font-size:11px;
+ padding-left:4px; padding-right:4px;
+ background:url('images/ListGrid/headerSprite.png') repeat-x top left;
+}
+.headerButtonOver,
+.headerButtonDown,
+.headerButtonSelectedOver,
+.headerButtonSelectedDown {
+ border-left:1px solid rgb(228,242,255);
+ border-right:1px solid rgb(200,204,208);
+}
+
+.headerButton {
+ background-position: 0px -210px;
+ border-bottom:1px solid #AEBDD4;
+ }
+
+.headerButtonOver {
+ background-position: 0px -420px;
+ border-bottom: 1px solid #AEBDD4;
+}
+
+.headerButtonDown {
+ background-position: 0px -350px;
+ border-bottom: 1px solid #AEBDD4;
+}
+
+.headerButtonDisabled {
+ background-position: 0px -280px;
+ border-bottom: 1px solid #C2C9D3;
+ color: #AAAAAA;
+}
+
+.headerButtonSelected,
+.headerButtonSelectedDown{
+ background-position: 0px 0px;
+ border-bottom: 1px solid #AEBDD4;
+}
+
+.headerButtonSelectedOver {
+ background-position: 0px -140px;
+ border-bottom: 1px solid #AEBDD4;
+}
+
+.headerButtonSelectedDisabled {
+ background-position: 0px -70px;
+ border-bottom: 1px solid #D0D0CA;
+ color: #AAAAAA;
+}
+
+.sorterButton,
+.sorterButtonSelected,
+.sorterButtonDisabled,
+.sorterButtonSelectedDisabled,
+.sorterButtonOver,
+.sorterButtonDown,
+.sorterButtonSelectedOver,
+.sorterButtonSelectedDown {
+ background-color:#FFFFFF;
+ border-left:1px solid rgb(246,247,249);
+ background-image:url("images/ListGrid/headerSprite.png");
+ background-position:0px -210px;
+}
+.sorterButtonOver,
+.sorterButtonDown,
+.sorterButtonSelectedOver,
+.sorterButtonSelectedDown {
+ border-left:1px solid rgb(228,242,255);
+ background-image:url("images/ListGrid/headerSprite.png");
+ background-position:0px -420px;
+}
+/*============================================================
+ ListGrid cells
+ listGrid.baseStyle
+============================================================*/
+
+/*------------------------------------------------------------
+ listGrid.baseStyle
+------------------------------------------------------------*/
+.cell,
+.cellDark,
+.cellOver,
+.cellOverDark,
+.cellSelected,
+.cellSelectedDark,
+.cellSelectedOver,
+.cellSelectedOverDark,
+.cellDisabled,
+.cellDisabledDark,
+.tallCell,
+.tallCellDark,
+.tallCellOver,
+.tallCellOverDark,
+.tallCellSelected,
+.tallCellSelectedDark,
+.tallCellSelectedOver,
+.tallCellSelectedOverDark,
+.tallCellDisabled,
+.tallCellDisabledDark,
+.gridSummaryCell,
+.gridSummaryCellDisabled,
+.groupSummaryCell,
+.groupSummaryCellDisabled,
+.recordSummaryCell,
+.recordSummaryCellDark,
+.recordSummaryCellOver,
+.recordSummaryCellOverDark,
+.recordSummaryCellSelected,
+.recordSummaryCellSelectedDark,
+.recordSummaryCellSelectedOver,
+.recordSummaryCellSelectedOverDark,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark,
+.expansionCellCell,
+.expansionCellCellDark,
+.expansionCellCellOver,
+.expansionCellCellOverDark,
+.expansionCellCellSelected,
+.expansionCellCellSelectedDark,
+.expansionCellCellSelectedOver,
+.expansionCellCellSelectedOverDark,
+.expansionCellCellDisabled,
+.expansionCellCellDisabledDark,
+.specialCol,
+.specialColOver,
+.specialColSelected,
+.specialColSelectedOver,
+.specialColDisabled,
+.groupNode {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; text-overflow:ellipsis;
+ color:black;
+ border-bottom:1px solid;
+ border-bottom-color: #EDEDED;
+}
+
+.specialCol {
+ background-color:#e5e5e5;
+}
+
+.tallCell,
+.tallCellDark,
+.tallCellOver,
+.tallCellOverDark,
+.tallCellSelected,
+.tallCellSelectedDark,
+.tallCellSelectedOver,
+.tallCellSelectedOverDark,
+.tallCellDisabled,
+.tallCellDisabledDark {
+
+ }
+.cellDark,
+.recordSummaryCell,
+.recordSummaryCellDark {
+ background-color:#fafafa;
+}
+.groupSummaryCell,
+.groupSummaryCellDisabled {
+ border-top:1px solid gray;
+ border-bottom:1px solid gray;
+ background-color:#eff0f3;
+}
+.gridSummaryCell,
+.gridSummaryCellDisabled {
+ border-top-width:0px;
+ border-bottom-width:0px;
+ background-color:#eff0f3;
+}
+.summaryRowBody {
+ background-color:#eff0f3;
+}
+
+.tallCellDark {
+ background-color:#fafafa;
+}
+.cellOver,
+.cellOverDark,
+.specialColOver,
+.recordSummaryCellOver,
+.recordSummaryCellOverDark {
+ background:#FFFFFF url(./images/ListGrid/row_Over.png) repeat-x bottom left scroll;
+}
+.tallCellOver,
+.tallCellOverDark {
+ border-bottom: 1px solid #e5e5e5;
+ background-color:#e5e5e5;
+}
+
+.cellSelected,
+.cellSelectedDark,
+.specialColSelected,
+.recordSummaryCellSelected,
+.recordSummaryCellSelectedDark {
+ background:#fceeaf;
+}
+.tallCellSelected,
+.tallCellSelectedDark {
+ background:#fceeaf;
+}
+.cellSelectedOver,
+.cellSelectedOverDark,
+.specialColSelectedOver,
+.recordSummaryCellSelectedOver,
+.recordSummaryCellSelectedOverDark {
+ background:#fceeaf url(images/ListGrid/row_Over.png) repeat-x bottom left scroll;
+}
+.tallCellSelectedOver,
+.tallCellSelectedOverDark {
+ background-color:#fceeaf;
+}
+.groupSummaryCell,
+.groupSummaryCellDisabled,
+.gridSummaryCell,
+.gridSummaryCellDisabled {
+ font-weight:bold;
+}
+
+.cellDisabled,
+.cellDisabledDark,
+.specialColDisabled,
+.tallCellDisabled,
+.tallCellDisabledDark,
+.groupSummaryCellDisabled,
+.gridSummaryCellDisabled,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark {
+ color:#AAAAAA;
+ background-color:#FFFFFF;
+}
+
+/* for grouping */
+.groupNode {
+ font-weight:bold;
+ font-family:Arial,Verdana,sans-serif;
+ color:#465769;
+ border-bottom: 1px solid #aebebe;
+}
+
+/*Tree styling*/
+/*------------------------------------------------------------
+ treeGrid.baseStyle
+------------------------------------------------------------*/
+.treeCell,
+.treeCellDark,
+.treeCellOver,
+.treeCellOverDark,
+.treeCellSelected,
+.treeCellSelectedDark,
+.treeCellSelectedOver,
+.treeCellSelectedOverDark,
+.treeCellDisabled,
+.treeCellDisabledDark,
+.treeTallCell,
+.treeTallCellDark,
+.treeTallCellOver,
+.treeTallCellOverDark,
+.treeTallCellSelected,
+.treeTallCellSelectedDark,
+.treeTallCellSelectedOver,
+.treeTallCellSelectedOverDark,
+.treeTallCellDisabled,
+.treeTallCellDisabledDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; text-overflow:ellipsis;
+ color:black;
+}
+
+
+.treeTallCell,
+.treeTallCellDark,
+.treeTallCellOver,
+.treeTallCellOverDark,
+.treeTallCellSelected,
+.treeTallCellSelectedDark,
+.treeTallCellSelectedOver,
+.treeTallCellSelectedOverDark,
+.treeTallCellDisabled,
+.treeTallCellDisabledDark {
+ }
+
+.treeCellDark,
+.treeTallCellDark {
+ background-color:#fafafa;
+}
+.treeCellOver,
+.treeCellOverDark {
+ background:#FFFFFF url(./images/ListGrid/row_Over.png) repeat-x bottom left scroll;
+}
+.treeTallCellOver,
+.treeTallCellOverDark {
+ background-color:#e5e5e5;
+}
+.treeCellSelected,
+.treeCellSelectedDark {
+ background:#fceeaf;
+
+}
+.treeTallCellSelected,
+.treeTallCellSelectedDark {
+ background:#fceeaf;
+}
+.treeCellSelectedOver,
+.treeCellSelectedOverDark {
+ background:#fceeaf url(images/ListGrid/row_Over.png) repeat-x bottom left scroll;
+}
+.treeTallCellSelectedOver,
+.treeTallCellSelectedOverDark {
+ background-color:#fceeaf;
+}
+
+
+.treeCellDisabled,
+.treeCellDisabledDark,
+.treeTallCellDisabled,
+.treeTallCellDisabledDark {
+ color:#AAAAAA;
+ background-color:#FFFFFF;
+}
+
+
+/* Field builders (Formula/Summary) */
+.sampleOutput {
+ border: 2px solid #D9D9D9;
+ padding: 3px;
+}
+
+/* Multi-sort - sort-index appearing next to sort-arrows in field headers */
+.sortNumeral {
+ font-size:7px;
+}
+
+/*============================================================
+ 12) ToolStrip
+============================================================*/
+.toolStrip {
+ border: 1px solid #A7ABB4;
+ background-color:#FFFFFF;
+ background-image:url("images/ToolStrip/background.png");
+}
+
+.toolStripVertical {
+ border: 1px solid #A7ABB4;
+ background-color:#FFFFFF;
+ background-image:url("images/ToolStrip/background_vertical.png");
+}
+
+/*============================================================
+ 12a) ToolStripGroup and IconButton
+==============================================================*/
+.toolStripGroup,
+.toolStripGroupOver,
+.toolStripGroupSelected,
+.toolStripGroupSelectedDisabled,
+.toolStripGroupSelectedOver,
+.toolStripGroupDown,
+.toolStripGroupSelectedDown,
+.toolStripGroupDisabled {
+ background: #eaeff9;
+ background: -moz-linear-gradient(top, #eaeff9 0%, #d7dfed 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eaeff9), color-stop(100%,#d7dfed));
+ background: -webkit-linear-gradient(top, #eaeff9 0%,#d7dfed 100%);
+ background: -o-linear-gradient(top, #eaeff9 0%,#d7dfed 100%);
+ background: -ms-linear-gradient(top, #eaeff9 0%,#d7dfed 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eaeff9', endColorstr='#d7dfed',GradientType=0 );
+ background: linear-gradient(top, #eaeff9 0%,#d7dfed 100%);
+ border: 1px solid #A6ABB4;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.toolStripGroupTitle,
+.toolStripGroupTitleOver,
+.toolStripGroupTitleSelected,
+.toolStripGroupTitleSelectedDisabled,
+.toolStripGroupTitleSelectedOver,
+.toolStripGroupTitleDown,
+.toolStripGroupTitleSelectedDown,
+.toolStripGroupTitleDisabled {
+ background-color: #D2DCE5;
+ border: 0;
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ color: #394147;
+ font-family: Helvetica, Arial, Verdana, "Bitstream Vera Sans", sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 3px;
+}
+
+.iconButton,
+.iconButtonOver,
+.iconButtonSelected,
+.iconButtonSelectedFocused,
+.iconButtonSelectedDown,
+.iconButtonSelectedFocusedDown,
+.iconButtonSelectedOver,
+.iconButtonSelectedFocusedOver,
+.iconButtonDisabled,
+.iconButtonSelectedDisabled,
+.iconButtonFocused {
+ background-color: transparent;
+ border: 1px solid transparent;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+ color: #4D4D4D;
+ padding: 4px;
+ font-family: Helvetica, Arial, Verdana, "Bitstream Vera Sans", sans-serif;
+ font-size: 11px;
+}
+
+.iconButtonFocusedOver,
+.iconButtonDown,
+.iconButtonFocusedDown {
+ background: #F4D195;
+ border: 1px solid #A6ABB4;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ -ms-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ border-radius: 3px;
+ color: #4D4D4D;
+ padding: 4px;
+ font-family: Helvetica, Arial, Verdana, "Bitstream Vera Sans", sans-serif;
+ font-size: 11px;
+}
+
+.iconButtonOver,
+.iconButtonSelectedOver,
+.iconButtonFocusedOver,
+.iconButtonSelectedFocusedOver {
+ background: #FCEEAF;
+ border: 1px solid #A6ABB4;
+}
+
+.iconButtonSelected,
+.iconButtonSelectedFocused,
+.iconButtonSelectedDown,
+.iconButtonSelectedFocusedDown,
+.iconButtonSelectedOver,
+.iconButtonSelectedFocusedOver {
+ background-color: #aacefd;
+}
+
+.iconButtonDisabled {
+ color: #AAAAAA;
+}
+
+/*============================================================
+ 13) Tools
+============================================================*/
+.resizeThumb {
+ background-color:#009999;
+}
+
+/*============================================================
+ 14) TileGrid
+==============================================================*/
+
+.tileGrid {
+ border:1px solid #808080;
+
+}
+
+.tileValue,
+.tileValueDown,
+.tileValueSelected,
+.tileValueOver,
+.tileValueSelectedOver,
+.tileValueSelectedDown {
+ font-size: 8pt;
+ text-overflow:ellipsis;
+}
+
+.tileValueOver {
+ color:black;
+}
+
+.tileValueSelected {
+ color: black;
+}
+
+.tileValueSelectedOver {
+ color: black;
+}
+
+.simpleTile,
+.simpleTileOver,
+.simpleTileSelected,
+.simpleTileSelectedOver {
+ font-size: 8pt;
+ padding:3px
+}
+
+.simpleTile {
+ border:1px solid transparent;
+
+}
+.simpleTileOver {
+ background-image:url("images/TileGrid/tileOver.png");
+ border:1px solid #CFCFCF;
+}
+
+.simpleTileSelected {
+ border:1px solid #CFCFCF;
+ background-image:url("images/TileGrid/tileOver.png");
+}
+
+/*#cfcec9*/
+.simpleTileSelectedOver {
+ background-color:#CFCFCF;
+ background-image:url("images/TileGrid/tileOver.png");
+ border:1px solid #CFCFCF;
+
+}
+
+
+
+
+/*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+
+ Styles below this comment are not used by default in this skin
+
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
+
+
+/*============================================================
+ TabSet CSS tabs
+ tabSet.simpleTabBaseStyle
+============================================================*/
+/* styles for simple css-styled tabs*/
+/* left */
+.tabButtonLeft {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white; border-bottom:1px solid #808080;
+}
+.tabButtonLeftOver,
+.tabButtonLeftSelected,
+.tabButtonLeftSelectedOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-left:1px solid white; border-top:1px solid white; border-bottom:1px solid #808080;
+}
+.tabButtonLeftDown,
+.tabButtonLeftSelectedDown {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-left:1px solid #808080; border-top:1px solid #808080; border-bottom:1px solid white;
+}
+.tabButtonLeftSelectedDisabled,
+.tabButtonLeftDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-top:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;
+}
+/* right */
+.tabButtonRight {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-top:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonRightOver,
+.tabButtonRightSelected,
+.tabButtonRightSelectedOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-top:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonRightDown,
+.tabButtonRightSelectedDown {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-top:1px solid #808080; border-bottom:1px solid white; border-right:1px solid white;
+}
+
+.tabButtonRightSelectedDisabled,
+.tabButtonRightDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-top:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC; border-right:1px solid #CCCCCC;
+}
+
+/* top */
+.tabButtonTop {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white; border-right:1px solid #808080;
+}
+.tabButtonTopOver,
+.tabButtonTopSelected,
+.tabButtonTopSelectedOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-left:1px solid white; border-top:1px solid white; border-right:1px solid #808080;
+}
+.tabButtonTopDown,
+.tabButtonTopSelectedDown {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-left:1px solid #808080; border-top:1px solid #808080; border-right:1px solid white;
+}
+.tabButtonTopSelectedDisabled,
+.tabButtonTopDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-top:1px solid #CCCCCC; border-right:1px solid #CCCCCC;
+}
+
+/* bottom */
+.tabButtonBottom {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonBottomOver,
+.tabButtonBottomSelected,
+.tabButtonBottomSelectedOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-left:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonBottomDown,
+.tabButtonBottomSelectedDown {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-left:1px solid #808080; border-bottom:1px solid white; border-right:1px solid white;
+}
+.tabButtonBottomSelectedDisabled,
+.tabButtonBottomDisabled {
+ font-family:Arial,Verdana,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC; border-right:1px solid #CCCCCC;
+}
+
+
+
+
+
+
+/*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+
+ Styles below this comment are used by optional modules only
+
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
+
+
+
+/*============================================================
+ CubeGrid - Analytics Module only
+ cubeGrid.baseStyle - cubeCell
+ headerGrid.baseStyle - rowHeader
+ reportHeaderBar.button.baseStyle - rowHeader
+ reportHeaderBar.button.baseStyle - innerHeader/colHeader
+ reportHeaderBar.button.baseStyle - rowHeaderLabel
+ reportHeaderBar.button.baseStyle - colHeaderLabel
+============================================================*/
+.cubeGridBody {}
+.cubeCell {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black; text-overflow:ellipsis;
+ background-color:#FFFFFF;
+ border-top:1px solid white; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid white; border-right:1px solid #AAAAAA;
+}
+
+.cubeCellDark {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black; text-overflow:ellipsis;
+ background-color:#EEEEEE;
+ border-top:1px solid #EEEEEE; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid #EEEEEE; border-right:1px solid #AAAAAA;
+}
+
+.cubeCellDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#666666; text-overflow:ellipsis;
+ background-color:#FFFFFF;
+ border-top:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ border-left:1px solid #FFFFFF; border-right:1px solid #FFFFFF;
+}
+
+/* partial styles */
+.cubeCellOver {
+ background-color:#B8D1EE;
+ border-top:1px solid #B8D1EE; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid #B8D1EE; border-right:1px solid #AAAAAA;
+}
+
+.cubeCellSelected {
+ background-color:#FFE781;
+ border-top:1px solid #FFE781; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid #FFE781; border-right:1px solid #AAAAAA;
+}
+
+.cubeCellSelectedOver {
+ background-color:#B8D1EE;
+ border-top:1px solid #B8D1EE; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid #B8D1EE; border-right:1px solid #AAAAAA;
+}
+
+/* row headers */
+.rowHeader {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #264260; border-bottom:1px solid #264260;
+ background-image:url("images/CubeGrid/rowHeader.gif");
+}
+.rowHeaderOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderOver.gif");
+}
+.rowHeaderDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderOver.gif");
+}
+.rowHeaderDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#6682A0;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.rowHeaderSelected,
+.rowHeaderSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ background-image:url("images/CubeGrid/rowHeaderSelected.gif");
+
+}
+.rowHeaderSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/rowHeaderSelectedOver.gif");
+}
+.rowHeaderSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#3E74B3;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* row label */
+.rowHeaderLabel {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #000B3A; border-bottom:1px solid #000B3A;
+ background-image:url("images/CubeGrid/rowHeaderLabel.gif");
+}
+.rowHeaderLabelOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #000B3A; border-top:1px solid #000B3A;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderLabel.gif");
+}
+.rowHeaderLabelDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #000B3A; border-top:1px solid #000B3A;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderLabelDown.gif");
+}
+.rowHeaderLabelDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.rowHeaderLabelSelected,
+.rowHeaderLabelSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid black; border-top:1px solid black;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/rowHeaderDown.gif");
+}
+.rowHeaderLabelSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/rowHeaderDown.gif");
+}
+.rowHeaderLabelSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* column headers */
+.colHeader {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #264260; border-bottom:1px solid #264260;
+ background-image:url("images/CubeGrid/colHeader.gif");
+}
+.colHeaderOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/colHeaderOver.gif");
+}
+.colHeaderDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/colHeader.gif");
+}
+.colHeaderDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#6682A0;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.colHeaderSelected,
+.colHeaderSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ background-image:url("images/CubeGrid/colHeaderSelected.gif");
+}
+.colHeaderSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/colHeaderSelectedOver.gif");
+}
+.colHeaderSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#3E74B3;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* column label */
+.colHeaderLabel {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderLabel.gif");
+}
+.colHeaderLabelOver,
+.colHeaderLabelDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #000B3A; border-top:1px solid #000B3A;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderLabelDown.gif");
+}
+.colHeaderLabelDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.colHeaderLabelSelected,
+.colHeaderLabelSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid black; border-top:1px solid black;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderLabelDown.gif");
+}
+.colHeaderLabelSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderDown.gif");
+}
+.colHeaderLabelSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* inner header */
+.innerHeader {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+ background-image:url("images/CubeGrid/innerHeader.gif");
+}
+.innerHeaderOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid white; border-bottom:1px solid white;
+ background-image:url("images/CubeGrid/innerHeader.gif");
+}
+.innerHeaderDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid white; border-bottom:1px solid white;
+ background-image:url("images/CubeGrid/innerHeader.gif");
+}
+.innerHeaderDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.innerHeaderSelected,
+.innerHeaderSelectedDown {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ background-image:url("images/CubeGrid/innerHeaderSelected.gif");
+}
+.innerHeaderSelectedOver {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/innerHeaderSelectedOver.gif");
+}
+.innerHeaderSelectedDisabled {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+
+
+/*============================================================
+ BarChart
+ internal, charting/visualization module only
+ styleName - chart
+ barStyle - chartBar
+ others are currently fixed
+============================================================*/
+
+.chart {
+ background-color:#CCCCCC;
+}
+.chartTitle {
+ color:black;
+ font-family: Verdana,sans-serif;
+ font-size:14px;
+ font-weight: bold;
+ text-align:center
+}
+.chartAxisTitle {
+ color:green;
+ font-family: Verdana,sans-serif;
+ font-weight: bold;
+ font-size:12px;
+}
+.chartValueTitle {
+ color:black;
+ font-family: Verdana,sans-serif;
+ font-size:10px;
+}
+.chartTotal {
+ color:black;
+ font-family:Arial,Verdana,sans-serif;
+ font-size:12px;
+ background-color:linen;
+}
+.chartBody {
+ border-left:1px solid black;
+ border-top:1px dashed blue;
+ border-right:1px solid black;
+ background-color:#DDDDDD
+}
+.chartBar1 {
+ background-color:red;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#990000, endColorStr=#FF0000)";
+}
+.chartBar2 {
+ background-color:blue;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#000099, endColorStr=#0000FF)";
+}
+.chartBar3 {
+ background-color:green;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#009900, endColorStr=#00FF00)";
+}
+
+
+/*============================================================
+ Printing
+ printHeader - general print style for header elements including:
+ - ListGrid header cells
+ - SectionStack headers
+============================================================*/
+.printHeader {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ border:1px solid black;
+ font-weight:bold;
+}
+
+/*============================================================
+ Calendar
+
+============================================================*/
+.calendar,
+.calendarDisabled,
+.calendarWorkday,
+.calendarDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#ffffff;
+}
+
+.calendarDisabled {
+ background-color:#F6F7F9;
+}
+
+.calendarWorkday {
+ background-color:#ffffcc;
+}
+
+.calendarOver,
+.calendarOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#c0ffc0;
+}
+.calendarCellSelected {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#CCCCCC;
+}
+.labelColumn {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#F6F7F9;
+}
+/* ----month---- */
+/* calMonthDayHeader and Body */
+
+.calMonthDayHeader,
+.calMonthDayHeaderDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#F6F7F9;
+}
+
+.calMonthDayHeaderOver,
+.calMonthDayHeaderOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #c0ffc0;
+}
+.calMonthDayBody,
+.calMonthDayBodyDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#ffffff;
+}
+.calMonthDayBodyOver,
+.calMonthDayBodyOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#c0ffc0;
+}
+
+.calMonthDayBodyDisabled,
+.calMonthDayBodyDisabledOver {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#F6F7F9;
+}
+/* calMonthOtherDayHeader and Body */
+
+.calMonthOtherDayHeader,
+.calMonthOtherDayHeaderDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:#444444;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #aaaaaa;
+}
+.calMonthOtherDayHeaderOver,
+.calMonthOtherDayHeaderOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:#444444;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #c0ffc0;
+}
+.calMonthOtherDayBody,
+.calMonthOtherDayBodyDark,
+.calMonthOtherDayBodyDisabled,
+.calMonthOtherDayBodyDisabledOver{
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#F6F7F9;
+}
+.calMonthOtherDayBodyOver,
+.calMonthOtherDayBodyOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#c0ffc0;
+}
+/* calMonthOtherDayBlank */
+
+.calMonthOtherDayBlank,
+.calMonthOtherDayBlankDark,
+.calMonthOtherDayBlankOver,
+.calMonthOtherDayBlankOverDark {
+ font-family:Arial,Verdana,sans-serif; font-size:11px;
+ color:#444444;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #F6F7F9;
+}
+
+/* calMonthEventLink */
+
+a.calMonthEventLink:link {color:blue; text-decoration:none}
+a.calMonthEventLink:visited {color:blue; text-decoration:none}
+a.calMonthEventLink:hover {color:blue; text-decoration:underline}
+a.calMonthEventLink:active {color:blue; text-decoration:none}
+
+/* ----event window---- */
+
+.eventWindow {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size: 9px;
+ background-color:#EBF4FF;
+ border: 1px solid #A2CBFF;
+}
+
+.eventWindowHeader {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size: 9px;
+ color:#4C4C4C;
+ background-color:#63a2e1;
+}
+
+.eventWindowBody {
+ font-family:Arial,Verdana,Bitstream Vera Sans,sans-serif; font-size: 9px;
+ color:black;
+ background-color:#EBF4FF;
+ padding: 3px;
+}
+
+.eventWindowResizer {
+ border-top:1px solid white;
+ border-bottom: 1px solid white;
+}
+
+/*============================================================
+ PropertySheet
+ internal, used by Visual SmartClient tools
+ propertySheet.autoChildDefaults.cellStyle - propSheetValue
+ propertySheet.autoChildDefaults.titleStyle - propSheetTitle
+ propertySheet.TextItemDefaults.textBoxStyle - propSheetField
+ propertySheet.SelectItemDefaults.controlStyle - propSheetSelectControl
+ propertySheet.ColorItemDefaults.textBoxStyle - propSheetField
+ propertySheet.HeaderItemDefaults.textBoxStyle - propSheetHeading
+ propertySheet.SectionHeaderItemDefaults.cellStyle - propSheetSectionItemCell
+============================================================*/
+
+.propSheetValue,
+.propSheetValueFocused,
+.propSheetDisabled {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ border-bottom:1px solid #AAAAAA;
+ border-right:1px solid #AAAAAA;
+ padding:0px;
+ margin:0px;
+}
+.propSheetTitle,
+.propSheetTitleFocused,
+.propSheetTitleDisabled {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ border-bottom:1px solid #AAAAAA;
+ border-right:1px solid #AAAAAA;
+ background-color:#DDDDDD;
+ padding-left:4px;
+ padding-right:4px;
+}
+.propSheetTitleError,
+.propSheetValueError {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px; color:#204268;
+ background-color:#CFD9F2
+}
+.propSheetField,
+.propSheetFieldDisabled {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ background-color:#FFFFFF;
+ border:0px;
+ padding:0px;
+ padding-left:4px;
+ padding-right:4px;
+ margin-top:3px;
+}
+.propSheetHeading,
+.propSheetHeadingDisabled {
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ font-weight:bold;
+ color:black;
+ background-color:#CCCCCC;
+ padding:4px;
+ border-bottom:1px solid #AAAAAA;
+}
+.propSheetSelectControl,
+.propSheetSelectControlFocused,
+.propSheetSelectControlDisabled {
+ padding-left:3px;
+ padding-right:3px;
+}
+
+.propSheetSectionItemCell,
+.propSheetSectionItemDisabled {
+}
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/skin_styles.css.gz b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/skin_styles.css.gz
new file mode 100755
index 0000000..42cbed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/skin_styles.css.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/unsupported_browser.html b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/unsupported_browser.html
new file mode 100755
index 0000000..567483f
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/Graphite/unsupported_browser.html
@@ -0,0 +1,89 @@
+<HTML>
+<HEAD>
+<STYLE>
+.normal {font-family:Verdana; font-size:12px;}
+.pageHeader {font-family:Verdana; font-size:24px; font-weight:bold;}
+</STYLE>
+<TITLE>Isomorphic SmartClient - Unsupported Browser</TITLE>
+</HEAD>
+<BODY BGCOLOR='white' CLASS=normal>
+<SCRIPT>
+var libs = [];
+</SCRIPT>
+<SPAN CLASS=pageHeader>Unsupported Browser Version</SPAN><br>
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+
+This page uses the <a href="http://www.isomorphic.com">Isomorphic SmartClient</a> web presentation layer (Version 7.1/LGPL Deployment - 2009-10-30), which requires one of the following supported DHTML web browsers:<br><br>
+
+<table class="normal" cellPadding=5>
+
+<tr><td width=40></td><td width=200>
+<b>Browser/Version</b>
+</td><td width=240>
+<b>Operating System(s)</b>
+</td><td>
+<b>Download Latest</b>
+</td></tr>
+
+<tr><td></td><td>
+<i>Internet Explorer 5.5-8.0</i>
+</td><td>
+Windows
+</td><td>
+<a href="http://www.microsoft.com/windows/ie/downloads/default.asp">Internet Explorer</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Netscape 7.2</i>
+</td><td>
+Windows/MacOS
+</td><td>
+<a href="http://channels.netscape.com/ns/browsers/download.jsp">Netscape</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Mozilla 1.4-1.8</i>
+</td><td>
+Windows/MacOS/Linux
+</td><td>
+<a href="http://www.mozilla.org/products/mozilla1.x/">Mozilla</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Firefox 1.0-3.5</i>
+</td><td>
+Windows/MacOS/Linux
+</td><td>
+<a href="http://www.mozilla.com/">Firefox</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Safari 1.2-4.0</i>
+</td><td>
+MacOS/Windows
+</td><td>
+<a href="http://www.apple.com/safari/download">Safari</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Chrome 1.0-2.0</i>
+</td><td>
+Windows
+</td><td>
+<a href="http://www.google.com/chrome">Safari</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Opera Beta: 9.x</i>
+</td><td>
+Beta: Windows/MacOS/Linux
+</td><td>
+<a href="http://www.opera.com/download/">Opera</a>
+</td></tr>
+
+</table><br>
+
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+<p>Last updated September 7, 2007.</p>
+
+</body></html>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/add.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/add.png
new file mode 100755
index 0000000..4a7ea12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/add.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/approve.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/approve.png
new file mode 100755
index 0000000..e250606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/approve.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/back.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/back.png
new file mode 100755
index 0000000..8b5a272
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/back.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/cancel.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/cancel.png
new file mode 100755
index 0000000..0dbc6f3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/cancel.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/column_preferences.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/column_preferences.png
new file mode 100755
index 0000000..b25350f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/column_preferences.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/configure.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/configure.png
new file mode 100755
index 0000000..ab54a83
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/configure.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/download.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/download.png
new file mode 100755
index 0000000..16bc94e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/download.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/edit.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/edit.png
new file mode 100755
index 0000000..115b8f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/edit.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/filter.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/filter.png
new file mode 100755
index 0000000..149ae78
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/filter.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/find.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/find.png
new file mode 100755
index 0000000..d70e4ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/find.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/first.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/first.png
new file mode 100755
index 0000000..e0d0021
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/first.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/forward.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/forward.png
new file mode 100755
index 0000000..3d38d63
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/forward.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/freezeLeft.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/freezeLeft.png
new file mode 100755
index 0000000..8b3d44f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/freezeLeft.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/freezeRight.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/freezeRight.png
new file mode 100755
index 0000000..724397d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/freezeRight.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/groupby.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/groupby.png
new file mode 100755
index 0000000..b2b287b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/groupby.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/help.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/help.png
new file mode 100755
index 0000000..25ce508
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/help.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/last.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/last.png
new file mode 100755
index 0000000..45c0431
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/last.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/next.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/next.png
new file mode 100755
index 0000000..4f94812
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/next.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/ok.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/ok.png
new file mode 100755
index 0000000..deefc12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/ok.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/prev.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/prev.png
new file mode 100755
index 0000000..627f82d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/prev.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/redo.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/redo.png
new file mode 100755
index 0000000..c7a23fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/redo.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/refresh.png
new file mode 100755
index 0000000..870adb5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/remove.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/remove.png
new file mode 100755
index 0000000..1294132
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/remove.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/save.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/save.png
new file mode 100755
index 0000000..a018fac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/save.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/search.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/search.png
new file mode 100755
index 0000000..d70e4ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/search.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/sort_ascending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/sort_ascending.png
new file mode 100755
index 0000000..8907478
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/sort_ascending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/sort_descending.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/sort_descending.png
new file mode 100755
index 0000000..850d28b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/sort_descending.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/undo.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/undo.png
new file mode 100755
index 0000000..69520e1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/undo.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/unfreeze.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/unfreeze.png
new file mode 100755
index 0000000..39c66a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/unfreeze.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/ungroup.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/ungroup.png
new file mode 100755
index 0000000..f95495e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/ungroup.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/view.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/view.png
new file mode 100755
index 0000000..15f056c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/actions/view.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/AdvancedFilter/Remove_Row_disabled_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/AdvancedFilter/Remove_Row_disabled_icon.gif
new file mode 100755
index 0000000..b479327
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/AdvancedFilter/Remove_Row_disabled_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/AdvancedFilter/Remove_Row_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/AdvancedFilter/Remove_Row_icon.gif
new file mode 100755
index 0000000..1fe09ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/AdvancedFilter/Remove_Row_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/black.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/black.gif
new file mode 100755
index 0000000..639e5f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/black.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/blank.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/blank.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/blank.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_end.png
new file mode 100755
index 0000000..f7de6b7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_start.png
new file mode 100755
index 0000000..bd54668
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_stretch.png
new file mode 100755
index 0000000..034e01b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_end.png
new file mode 100755
index 0000000..0d7c0ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_start.png
new file mode 100755
index 0000000..df1aed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_stretch.png
new file mode 100755
index 0000000..a98cacb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_end.png
new file mode 100755
index 0000000..c93a161
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_end.png
new file mode 100755
index 0000000..c146f3e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_start.png
new file mode 100755
index 0000000..da14a8e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_stretch.png
new file mode 100755
index 0000000..c16801a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_end.png
new file mode 100755
index 0000000..0d7c0ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_start.png
new file mode 100755
index 0000000..df1aed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..a98cacb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_end.png
new file mode 100755
index 0000000..0d7c0ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_start.png
new file mode 100755
index 0000000..df1aed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_stretch.png
new file mode 100755
index 0000000..a98cacb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_end.png
new file mode 100755
index 0000000..0d7c0ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_end.png
new file mode 100755
index 0000000..0d7c0ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_start.png
new file mode 100755
index 0000000..df1aed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_stretch.png
new file mode 100755
index 0000000..a98cacb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_start.png
new file mode 100755
index 0000000..df1aed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_stretch.png
new file mode 100755
index 0000000..a98cacb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_start.png
new file mode 100755
index 0000000..66c3d71
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_stretch.png
new file mode 100755
index 0000000..35dbc22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/button/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorChooser/auto_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorChooser/auto_icon.png
new file mode 100755
index 0000000..3f5e157
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorChooser/auto_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorChooser/transparent_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorChooser/transparent_icon.png
new file mode 100755
index 0000000..e9a0a9c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorChooser/transparent_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorPicker/crosshair.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorPicker/crosshair.png
new file mode 100755
index 0000000..0e850c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorPicker/crosshair.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorPicker/spectrum.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorPicker/spectrum.png
new file mode 100755
index 0000000..5ab45a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ColorPicker/spectrum.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_down.gif
new file mode 100755
index 0000000..d386b41
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_left.gif
new file mode 100755
index 0000000..fd791ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_right.gif
new file mode 100755
index 0000000..4ec927c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_up.gif
new file mode 100755
index 0000000..a5230f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_disabled_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_down.gif
new file mode 100755
index 0000000..8fa63e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_left.gif
new file mode 100755
index 0000000..2af93cd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_right.gif
new file mode 100755
index 0000000..11bc4c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_up.gif
new file mode 100755
index 0000000..dda4fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrow_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrows.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrows.psd
new file mode 100755
index 0000000..ed9719d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/common/arrows.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control.gif
new file mode 100755
index 0000000..3baa7ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Disabled.gif
new file mode 100755
index 0000000..615f0a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Down.gif
new file mode 100755
index 0000000..fe605f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Over.gif
new file mode 100755
index 0000000..fe605f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/date_control_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control.gif
new file mode 100755
index 0000000..9670631
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_Disabled.gif
new file mode 100755
index 0000000..219a263
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_down.gif
new file mode 100755
index 0000000..38e0177
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside.gif
new file mode 100755
index 0000000..ec62cf5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_Disabled.gif
new file mode 100755
index 0000000..4be1df6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_down.gif
new file mode 100755
index 0000000..43e87db
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_Over.gif
new file mode 100755
index 0000000..5cfd9ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_inside_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_Over.gif
new file mode 100755
index 0000000..fcc724c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/dropdown_control_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control.gif
new file mode 100755
index 0000000..42dfe0b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control_Disabled.gif
new file mode 100755
index 0000000..a469fcd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control_Over.gif
new file mode 100755
index 0000000..658e3ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/helper_control_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease.gif
new file mode 100755
index 0000000..91028bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_Disabled.gif
new file mode 100755
index 0000000..4e2f4b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_down.gif
new file mode 100755
index 0000000..d9002b4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_Over.gif
new file mode 100755
index 0000000..f07a290
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_decrease_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase.gif
new file mode 100755
index 0000000..1b4ec5a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_Disabled.gif
new file mode 100755
index 0000000..8bd84fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_down.gif
new file mode 100755
index 0000000..ae2f7ac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_Over.gif
new file mode 100755
index 0000000..67f00f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/spinner_control_increase_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control.gif
new file mode 100755
index 0000000..cd548eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_Disabled.gif
new file mode 100755
index 0000000..15266ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_down.gif
new file mode 100755
index 0000000..c8f6a0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_Over.gif
new file mode 100755
index 0000000..c8f6a0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/controls/text_control_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_BL.gif
new file mode 100755
index 0000000..2339e22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_BR.gif
new file mode 100755
index 0000000..b99e8e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_TL.gif
new file mode 100755
index 0000000..c60509b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_TR.gif
new file mode 100755
index 0000000..84d49c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_808080_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_BL.gif
new file mode 100755
index 0000000..42393c8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_BR.gif
new file mode 100755
index 0000000..a899ecf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_TL.gif
new file mode 100755
index 0000000..d4719d6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_TR.gif
new file mode 100755
index 0000000..45ae5ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_8080FF_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_BL.gif
new file mode 100755
index 0000000..a1fbd5b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_BR.gif
new file mode 100755
index 0000000..83fd341
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_TL.gif
new file mode 100755
index 0000000..58f5504
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_TR.gif
new file mode 100755
index 0000000..0d734ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_D6D6D6_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_BL.gif
new file mode 100755
index 0000000..90f1705
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_BR.gif
new file mode 100755
index 0000000..4aa82ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_TL.gif
new file mode 100755
index 0000000..0f0e4a0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_TR.gif
new file mode 100755
index 0000000..5f5841b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_DDDDDD_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_BL.gif
new file mode 100755
index 0000000..e573462
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_BR.gif
new file mode 100755
index 0000000..c681762
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_TL.gif
new file mode 100755
index 0000000..331e6be
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_TR.gif
new file mode 100755
index 0000000..5587cd7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_EEEEEE_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_BL.gif
new file mode 100755
index 0000000..39cc6dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_BR.gif
new file mode 100755
index 0000000..56896df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_TL.gif
new file mode 100755
index 0000000..88ec280
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_TR.gif
new file mode 100755
index 0000000..c7231ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/corners/corner_FFFFFF_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_down.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_left.gif
new file mode 100755
index 0000000..9761ae9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_right.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_closed_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open.gif
new file mode 100755
index 0000000..ca674eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_down.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_left.gif
new file mode 100755
index 0000000..aaf1b1d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_right.gif
new file mode 100755
index 0000000..03e0b21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_up.gif
new file mode 100755
index 0000000..ca674eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_open_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_opening.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_opening.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/arrow_opening.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/close.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/close.gif
new file mode 100755
index 0000000..f404e13
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/close.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/close_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/close_over.gif
new file mode 100755
index 0000000..67eb946
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/close_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeader.gif
new file mode 100755
index 0000000..e328587
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderLabel.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderLabel.gif
new file mode 100755
index 0000000..276df64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderLabel.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderLabelDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderLabelDown.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderLabelDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderOver.gif
new file mode 100755
index 0000000..c074368
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderSelected.gif
new file mode 100755
index 0000000..dad4dcf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderSelectedOver.gif
new file mode 100755
index 0000000..f8a7d7c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/colHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/CubeGrid.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/CubeGrid.psd
new file mode 100755
index 0000000..6793ae4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/CubeGrid.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/header_handle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/header_handle.gif
new file mode 100755
index 0000000..253c281
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/header_handle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/header_handle_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/header_handle_over.gif
new file mode 100755
index 0000000..33cdc51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/header_handle_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeader.gif
new file mode 100755
index 0000000..acf497c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeaderSelected.gif
new file mode 100755
index 0000000..3674069
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeaderSelectedOver.gif
new file mode 100755
index 0000000..51f4876
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/innerHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/maximize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/maximize.gif
new file mode 100755
index 0000000..28a9b11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/maximize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/maximize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/maximize_over.gif
new file mode 100755
index 0000000..fb68ee9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/maximize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/minimize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/minimize.gif
new file mode 100755
index 0000000..dd98884
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/minimize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/minimize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/minimize_over.gif
new file mode 100755
index 0000000..e10091e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/minimize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeader.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeader.gif
new file mode 100755
index 0000000..5f3f9e8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeader.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderLabel.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderLabel.gif
new file mode 100755
index 0000000..276df64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderLabel.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderLabelDown.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderLabelDown.gif
new file mode 100755
index 0000000..ed77278
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderLabelDown.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderOver.gif
new file mode 100755
index 0000000..7087eb1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderSelected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderSelected.gif
new file mode 100755
index 0000000..f4b8f1b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderSelected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderSelectedOver.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderSelectedOver.gif
new file mode 100755
index 0000000..47870df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/rowHeaderSelectedOver.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down.gif
new file mode 100755
index 0000000..2c128f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_over.gif
new file mode 100755
index 0000000..1284789
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_selected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_selected.gif
new file mode 100755
index 0000000..2c128f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_selected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_selected_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_selected_over.gif
new file mode 100755
index 0000000..ef333e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_down_selected_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up.gif
new file mode 100755
index 0000000..8c202a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_over.gif
new file mode 100755
index 0000000..4566c0d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_selected.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_selected.gif
new file mode 100755
index 0000000..8c202a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_selected.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_selected_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_selected_over.gif
new file mode 100755
index 0000000..424a762
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/sort_up_selected_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/validation_error_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/validation_error_icon.png
new file mode 100755
index 0000000..56ad042
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/CubeGrid/validation_error_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DatabaseBrowser/column.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DatabaseBrowser/column.png
new file mode 100755
index 0000000..bc0d8d7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DatabaseBrowser/column.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DatabaseBrowser/data.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DatabaseBrowser/data.png
new file mode 100755
index 0000000..9bb17ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DatabaseBrowser/data.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/arrow_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/arrow_left.gif
new file mode 100755
index 0000000..2af93cd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/arrow_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/arrow_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/arrow_right.gif
new file mode 100755
index 0000000..11bc4c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/arrow_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/doubleArrow_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/doubleArrow_left.gif
new file mode 100755
index 0000000..e406f8a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/doubleArrow_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/doubleArrow_right.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/doubleArrow_right.gif
new file mode 100755
index 0000000..5f0a147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DateChooser/doubleArrow_right.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/ask.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/ask.png
new file mode 100755
index 0000000..4831985
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/ask.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/close.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/close.gif
new file mode 100755
index 0000000..9a9809a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/close.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/confirm.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/confirm.png
new file mode 100755
index 0000000..0e32c96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/confirm.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/Dialog.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/Dialog.psd
new file mode 100755
index 0000000..4d12e95
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/Dialog.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/error.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/error.png
new file mode 100755
index 0000000..7854ed8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/error.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/notify.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/notify.png
new file mode 100755
index 0000000..0e32c96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/notify.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/resizer.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/resizer.gif
new file mode 100755
index 0000000..9687020
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/resizer.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/say.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/say.png
new file mode 100755
index 0000000..1b6b285
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/say.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/stop.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/stop.png
new file mode 100755
index 0000000..f4123c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/stop.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/warn.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/warn.png
new file mode 100755
index 0000000..7b79430
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Dialog/warn.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked.gif
new file mode 100755
index 0000000..566edcc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Disabled.gif
new file mode 100755
index 0000000..419f729
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Disabled.png
new file mode 100755
index 0000000..1b2b594
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Down.gif
new file mode 100755
index 0000000..81f2b35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Over.gif
new file mode 100755
index 0000000..541f88a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/checked_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ColorPicker_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ColorPicker_icon.png
new file mode 100755
index 0000000..0661cf6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ColorPicker_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon.gif
new file mode 100755
index 0000000..4629e2c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon_Disabled.gif
new file mode 100755
index 0000000..1af1db4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon_Over.gif
new file mode 100755
index 0000000..59ebc84
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/ComboBoxItem_PickButton_icon_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/date_control.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/date_control.png
new file mode 100755
index 0000000..f976971
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/date_control.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/DatePicker_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/DatePicker_icon.gif
new file mode 100755
index 0000000..65aaa0e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/DatePicker_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/DatePicker_icon_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/DatePicker_icon_Disabled.gif
new file mode 100755
index 0000000..ddd2758
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/DatePicker_icon_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon.gif
new file mode 100755
index 0000000..6a167d6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon_Disabled.gif
new file mode 100755
index 0000000..d2137f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon_Over.gif
new file mode 100755
index 0000000..32e5e9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/default_formItem_icon_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PopUpTextAreaEditor_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PopUpTextAreaEditor_icon.gif
new file mode 100755
index 0000000..38495fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PopUpTextAreaEditor_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_ColorPicker_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_ColorPicker_icon.png
new file mode 100755
index 0000000..c66f57a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_ColorPicker_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_pickbutton.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_pickbutton.gif
new file mode 100755
index 0000000..2267e52
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_pickbutton.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_pickbutton_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_pickbutton_Disabled.gif
new file mode 100755
index 0000000..192b347
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/PropSheet_pickbutton_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon.gif
new file mode 100755
index 0000000..1fe09ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon_Disabled.gif
new file mode 100755
index 0000000..b479327
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon_Over.gif
new file mode 100755
index 0000000..1fe09ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Remove_icon_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon.gif
new file mode 100755
index 0000000..f7bb302
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon_Disabled.gif
new file mode 100755
index 0000000..2cd7b91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon_Over.gif
new file mode 100755
index 0000000..f1e2c77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/SelectItem_PickButton_icon_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon.png
new file mode 100755
index 0000000..6138ba5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon_Disabled.png
new file mode 100755
index 0000000..f306c52
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon_Over.png
new file mode 100755
index 0000000..a8eff30
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_decrease_icon_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon.png
new file mode 100755
index 0000000..61b7279
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon_Disabled.png
new file mode 100755
index 0000000..73af12c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon_Over.png
new file mode 100755
index 0000000..42d2037
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/Spinner_increase_icon_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked.gif
new file mode 100755
index 0000000..18ea85d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Disabled.gif
new file mode 100755
index 0000000..39e6ec1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Disabled.png
new file mode 100755
index 0000000..daf858e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Down.gif
new file mode 100755
index 0000000..8f35bbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Over.gif
new file mode 100755
index 0000000..4a879df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unchecked_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unsetcheck_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unsetcheck_Disabled.png
new file mode 100755
index 0000000..57d861e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/unsetcheck_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error.gif
new file mode 100755
index 0000000..1815d60
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error_icon.gif
new file mode 100755
index 0000000..b4bb04c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error_icon.png
new file mode 100755
index 0000000..56ad042
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/DynamicForm/validation_error_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_B.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_B.gif
new file mode 100755
index 0000000..927bed5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_B.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_B.png
new file mode 100755
index 0000000..677ecee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BL.gif
new file mode 100755
index 0000000..214302a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BL.png
new file mode 100755
index 0000000..fc74cdf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BR.gif
new file mode 100755
index 0000000..b2f8096
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BR.png
new file mode 100755
index 0000000..d798df0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_L.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_L.gif
new file mode 100755
index 0000000..2f90a17
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_L.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_L.png
new file mode 100755
index 0000000..677ecee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_R.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_R.gif
new file mode 100755
index 0000000..2f90a17
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_R.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_R.png
new file mode 100755
index 0000000..677ecee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_T.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_T.gif
new file mode 100755
index 0000000..927bed5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_T.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_T.png
new file mode 100755
index 0000000..677ecee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TL.gif
new file mode 100755
index 0000000..df380b4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TL.png
new file mode 100755
index 0000000..1d04de3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TR.gif
new file mode 100755
index 0000000..8e6593a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TR.png
new file mode 100755
index 0000000..8180ef2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_D6D6D6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_B.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_B.gif
new file mode 100755
index 0000000..6120b91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_B.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_B.png
new file mode 100755
index 0000000..448f5a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BL.gif
new file mode 100755
index 0000000..a3a4158
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BL.png
new file mode 100755
index 0000000..d66db4b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BR.gif
new file mode 100755
index 0000000..4d16b9b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BR.png
new file mode 100755
index 0000000..b5fca22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_L.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_L.gif
new file mode 100755
index 0000000..e8c18d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_L.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_L.png
new file mode 100755
index 0000000..448f5a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_R.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_R.gif
new file mode 100755
index 0000000..e8c18d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_R.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_R.png
new file mode 100755
index 0000000..448f5a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_T.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_T.gif
new file mode 100755
index 0000000..6120b91
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_T.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_T.png
new file mode 100755
index 0000000..448f5a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TL.gif
new file mode 100755
index 0000000..bd7edba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TL.png
new file mode 100755
index 0000000..3a18b49
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TR.gif
new file mode 100755
index 0000000..f5625a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TR.png
new file mode 100755
index 0000000..55499d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_DDDDDD_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_B.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_B.gif
new file mode 100755
index 0000000..4804ca1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_B.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_B.png
new file mode 100755
index 0000000..c2f476e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BL.gif
new file mode 100755
index 0000000..cebb35a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BL.png
new file mode 100755
index 0000000..19a11e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BR.gif
new file mode 100755
index 0000000..6405ebf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BR.png
new file mode 100755
index 0000000..ae52991
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_L.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_L.gif
new file mode 100755
index 0000000..1ba4a69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_L.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_L.png
new file mode 100755
index 0000000..2035293
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_R.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_R.gif
new file mode 100755
index 0000000..1ba4a69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_R.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_R.png
new file mode 100755
index 0000000..b06829b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_T.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_T.gif
new file mode 100755
index 0000000..4804ca1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_T.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_T.png
new file mode 100755
index 0000000..78c5c1c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TL.gif
new file mode 100755
index 0000000..6dc8d70
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TL.png
new file mode 100755
index 0000000..ff9a5d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TR.gif
new file mode 100755
index 0000000..a849cc6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TR.png
new file mode 100755
index 0000000..bcbe92e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_EEEEEE_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_B.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_B.gif
new file mode 100755
index 0000000..a446865
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_B.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_B.png
new file mode 100755
index 0000000..5664d68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BL.gif
new file mode 100755
index 0000000..1d7cb57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BL.png
new file mode 100755
index 0000000..f70e920
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BR.gif
new file mode 100755
index 0000000..8202e5f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BR.png
new file mode 100755
index 0000000..54ef8ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_L.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_L.gif
new file mode 100755
index 0000000..ebf0949
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_L.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_L.png
new file mode 100755
index 0000000..5664d68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_R.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_R.gif
new file mode 100755
index 0000000..ebf0949
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_R.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_R.png
new file mode 100755
index 0000000..5664d68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_T.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_T.gif
new file mode 100755
index 0000000..a446865
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_T.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_T.png
new file mode 100755
index 0000000..5664d68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TL.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TL.gif
new file mode 100755
index 0000000..ff6a9ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TL.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TL.png
new file mode 100755
index 0000000..037342e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TR.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TR.gif
new file mode 100755
index 0000000..0ee6cca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TR.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TR.png
new file mode 100755
index 0000000..dc18e73
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/edge_FFFFFF_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_B.png
new file mode 100755
index 0000000..9a19157
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_BL.png
new file mode 100755
index 0000000..2107bf6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_BR.png
new file mode 100755
index 0000000..5447d46
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_L.png
new file mode 100755
index 0000000..59365c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_R.png
new file mode 100755
index 0000000..7e874ac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_T.png
new file mode 100755
index 0000000..33acd66
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_TL.png
new file mode 100755
index 0000000..3960500
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_TR.png
new file mode 100755
index 0000000..16809ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_B.png
new file mode 100755
index 0000000..60608cb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_BL.png
new file mode 100755
index 0000000..fd1af3e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_BR.png
new file mode 100755
index 0000000..62b7b84
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_L.png
new file mode 100755
index 0000000..03dc6b4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_R.png
new file mode 100755
index 0000000..44ef55f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_T.png
new file mode 100755
index 0000000..afd8617
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_TL.png
new file mode 100755
index 0000000..f0c8030
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_TR.png
new file mode 100755
index 0000000..d92a435
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_B.png
new file mode 100755
index 0000000..82e7998
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_BL.png
new file mode 100755
index 0000000..dbed5b5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_BR.png
new file mode 100755
index 0000000..6b8fe99
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_L.png
new file mode 100755
index 0000000..3e9ebb0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_R.png
new file mode 100755
index 0000000..3e2ae55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_T.png
new file mode 100755
index 0000000..0a8b427
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_TL.png
new file mode 100755
index 0000000..55822df
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_TR.png
new file mode 100755
index 0000000..20a757a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_B.png
new file mode 100755
index 0000000..99487db
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_BL.png
new file mode 100755
index 0000000..127544f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_BR.png
new file mode 100755
index 0000000..0a04a08
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_L.png
new file mode 100755
index 0000000..437b714
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_R.png
new file mode 100755
index 0000000..77e9ee6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_T.png
new file mode 100755
index 0000000..ebaf7aa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_TL.png
new file mode 100755
index 0000000..6b59e42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_TR.png
new file mode 100755
index 0000000..912cdaa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_B.png
new file mode 100755
index 0000000..d1ab1a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_BL.png
new file mode 100755
index 0000000..4c56ad0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_BR.png
new file mode 100755
index 0000000..b6d65b1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_L.png
new file mode 100755
index 0000000..d4f632d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_R.png
new file mode 100755
index 0000000..7d671a4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_T.png
new file mode 100755
index 0000000..5eb725d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_TL.png
new file mode 100755
index 0000000..ce88002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_TR.png
new file mode 100755
index 0000000..a690bad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_B.png
new file mode 100755
index 0000000..6a7be96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_BL.png
new file mode 100755
index 0000000..2b21cfe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_BR.png
new file mode 100755
index 0000000..6749be8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_L.png
new file mode 100755
index 0000000..78f8dad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_R.png
new file mode 100755
index 0000000..42bc9c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_T.png
new file mode 100755
index 0000000..55fe667
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_TL.png
new file mode 100755
index 0000000..0a33586
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_TR.png
new file mode 100755
index 0000000..dd046da
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_B.png
new file mode 100755
index 0000000..10572f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_BL.png
new file mode 100755
index 0000000..772b0c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_BR.png
new file mode 100755
index 0000000..70c17f0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_L.png
new file mode 100755
index 0000000..3b8989e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_R.png
new file mode 100755
index 0000000..234ec17
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_T.png
new file mode 100755
index 0000000..fda6f50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_TL.png
new file mode 100755
index 0000000..6195661
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_TR.png
new file mode 100755
index 0000000..576c89a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_B.png
new file mode 100755
index 0000000..a851516
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_BL.png
new file mode 100755
index 0000000..840636a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_BR.png
new file mode 100755
index 0000000..f35e49e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_L.png
new file mode 100755
index 0000000..c018704
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_R.png
new file mode 100755
index 0000000..85e164c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_T.png
new file mode 100755
index 0000000..70da0b7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_TL.png
new file mode 100755
index 0000000..0db7430
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_TR.png
new file mode 100755
index 0000000..3586070
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/A3B2CC/9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_B.png
new file mode 100755
index 0000000..6cba92f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_BL.png
new file mode 100755
index 0000000..46f6703
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_BR.png
new file mode 100755
index 0000000..67c99fe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_L.png
new file mode 100755
index 0000000..45269bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_R.png
new file mode 100755
index 0000000..5170212
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_T.png
new file mode 100755
index 0000000..91d47cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_TL.png
new file mode 100755
index 0000000..7aae5cb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_TR.png
new file mode 100755
index 0000000..dead5cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_B.png
new file mode 100755
index 0000000..893a4ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_BL.png
new file mode 100755
index 0000000..bcea5af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_BR.png
new file mode 100755
index 0000000..f299beb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_L.png
new file mode 100755
index 0000000..dec21fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_R.png
new file mode 100755
index 0000000..193c4ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_T.png
new file mode 100755
index 0000000..576f425
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_TL.png
new file mode 100755
index 0000000..9c3ade5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_TR.png
new file mode 100755
index 0000000..5e9b9d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_B.png
new file mode 100755
index 0000000..7c63656
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_BL.png
new file mode 100755
index 0000000..a1780a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_BR.png
new file mode 100755
index 0000000..e1a1bb4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_L.png
new file mode 100755
index 0000000..b427d8f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_R.png
new file mode 100755
index 0000000..0a96e46
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_T.png
new file mode 100755
index 0000000..bf15b2e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_TL.png
new file mode 100755
index 0000000..d052a7b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_TR.png
new file mode 100755
index 0000000..e8ea18b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_B.png
new file mode 100755
index 0000000..527f6ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_BL.png
new file mode 100755
index 0000000..dcebfff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_BR.png
new file mode 100755
index 0000000..d32090e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_L.png
new file mode 100755
index 0000000..a67dc74
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_R.png
new file mode 100755
index 0000000..e1aa66c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_T.png
new file mode 100755
index 0000000..31128be
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_TL.png
new file mode 100755
index 0000000..f199e96
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_TR.png
new file mode 100755
index 0000000..45fedab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_B.png
new file mode 100755
index 0000000..07c29fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_BL.png
new file mode 100755
index 0000000..f44cbae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_BR.png
new file mode 100755
index 0000000..52bc661
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_L.png
new file mode 100755
index 0000000..8f29fc6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_R.png
new file mode 100755
index 0000000..2d781e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_T.png
new file mode 100755
index 0000000..e34a713
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_TL.png
new file mode 100755
index 0000000..b122ffc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_TR.png
new file mode 100755
index 0000000..9c66539
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_B.png
new file mode 100755
index 0000000..da4e71b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_BL.png
new file mode 100755
index 0000000..b6ee57a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_BR.png
new file mode 100755
index 0000000..38e8391
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_L.png
new file mode 100755
index 0000000..ebea8c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_R.png
new file mode 100755
index 0000000..a808f34
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_T.png
new file mode 100755
index 0000000..f806bc4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_TL.png
new file mode 100755
index 0000000..f4c64ce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_TR.png
new file mode 100755
index 0000000..43ce925
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_B.png
new file mode 100755
index 0000000..608663c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_BL.png
new file mode 100755
index 0000000..d78727a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_BR.png
new file mode 100755
index 0000000..1e7e4af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_L.png
new file mode 100755
index 0000000..31b8e27
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_R.png
new file mode 100755
index 0000000..ddf0b8d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_T.png
new file mode 100755
index 0000000..04f7817
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_TL.png
new file mode 100755
index 0000000..1ecf5bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_TR.png
new file mode 100755
index 0000000..9ebe77e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_B.png
new file mode 100755
index 0000000..a679ed2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_BL.png
new file mode 100755
index 0000000..652604e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_BR.png
new file mode 100755
index 0000000..28bf3ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_L.png
new file mode 100755
index 0000000..98e10ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_R.png
new file mode 100755
index 0000000..05906b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_T.png
new file mode 100755
index 0000000..9a1cb68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_TL.png
new file mode 100755
index 0000000..5e4a582
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_TR.png
new file mode 100755
index 0000000..a94f8d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/frame/FFFFFF/9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_B.png
new file mode 100755
index 0000000..c690c4b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_BL.png
new file mode 100755
index 0000000..07b4833
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_BR.png
new file mode 100755
index 0000000..7f523bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_L.png
new file mode 100755
index 0000000..1aaa35e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_R.png
new file mode 100755
index 0000000..78f27ec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_T.png
new file mode 100755
index 0000000..089962e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_TL.png
new file mode 100755
index 0000000..a31c439
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_TR.png
new file mode 100755
index 0000000..0bca74a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_B.png
new file mode 100755
index 0000000..7c85c7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_BL.png
new file mode 100755
index 0000000..22e5e98
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_BR.png
new file mode 100755
index 0000000..76ca467
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_L.png
new file mode 100755
index 0000000..f463b95
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_R.png
new file mode 100755
index 0000000..8fa929d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_T.png
new file mode 100755
index 0000000..5e71fff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_TL.png
new file mode 100755
index 0000000..326a958
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_TR.png
new file mode 100755
index 0000000..c283397
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_B.png
new file mode 100755
index 0000000..ed38b8a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_BL.png
new file mode 100755
index 0000000..bffd7c0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_BR.png
new file mode 100755
index 0000000..67eb18f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_L.png
new file mode 100755
index 0000000..8534610
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_R.png
new file mode 100755
index 0000000..66253c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_T.png
new file mode 100755
index 0000000..818de7b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_TL.png
new file mode 100755
index 0000000..118e380
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_TR.png
new file mode 100755
index 0000000..bef548b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_B.png
new file mode 100755
index 0000000..ce7202a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_BL.png
new file mode 100755
index 0000000..a35f5e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_BR.png
new file mode 100755
index 0000000..3b739a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_L.png
new file mode 100755
index 0000000..1d23450
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_R.png
new file mode 100755
index 0000000..e855c9f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_T.png
new file mode 100755
index 0000000..19ca4e1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_TL.png
new file mode 100755
index 0000000..68815bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_TR.png
new file mode 100755
index 0000000..3c5f08d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_B.png
new file mode 100755
index 0000000..9625899
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_BL.png
new file mode 100755
index 0000000..89f36a0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_BR.png
new file mode 100755
index 0000000..a8fb7ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_L.png
new file mode 100755
index 0000000..bca8bd3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_R.png
new file mode 100755
index 0000000..b607a00
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_T.png
new file mode 100755
index 0000000..6c7154c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_TL.png
new file mode 100755
index 0000000..5f081bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_TR.png
new file mode 100755
index 0000000..5379668
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_B.png
new file mode 100755
index 0000000..6cfd5f6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_BL.png
new file mode 100755
index 0000000..c5c9345
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_BR.png
new file mode 100755
index 0000000..a6abdf6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_L.png
new file mode 100755
index 0000000..4750c45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_R.png
new file mode 100755
index 0000000..401fc01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_T.png
new file mode 100755
index 0000000..9aefa44
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_TL.png
new file mode 100755
index 0000000..f841b98
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_TR.png
new file mode 100755
index 0000000..6450a38
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_B.png
new file mode 100755
index 0000000..5ac2932
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_BL.png
new file mode 100755
index 0000000..517029c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_BR.png
new file mode 100755
index 0000000..a86e38e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_L.png
new file mode 100755
index 0000000..c5902c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_R.png
new file mode 100755
index 0000000..74b1f58
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_T.png
new file mode 100755
index 0000000..5ac3684
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_TL.png
new file mode 100755
index 0000000..bf601c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_TR.png
new file mode 100755
index 0000000..7838d82
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_B.png
new file mode 100755
index 0000000..40e40fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_BL.png
new file mode 100755
index 0000000..b9d0d01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_BR.png
new file mode 100755
index 0000000..f3ced70
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_L.png
new file mode 100755
index 0000000..d27d927
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_R.png
new file mode 100755
index 0000000..ab3daf2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_T.png
new file mode 100755
index 0000000..0d2fc85
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_TL.png
new file mode 100755
index 0000000..72d5124
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_TR.png
new file mode 100755
index 0000000..3d0c51a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/rounded/raised/FFFFFF/9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_B.png
new file mode 100755
index 0000000..6cba92f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_BL.png
new file mode 100755
index 0000000..fe242e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_BR.png
new file mode 100755
index 0000000..a614e87
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_L.png
new file mode 100755
index 0000000..45269bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_R.png
new file mode 100755
index 0000000..5170212
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_T.png
new file mode 100755
index 0000000..91d47cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_TL.png
new file mode 100755
index 0000000..b38de90
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_TR.png
new file mode 100755
index 0000000..8d683ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_B.png
new file mode 100755
index 0000000..893a4ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_BL.png
new file mode 100755
index 0000000..0d7b96d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_BR.png
new file mode 100755
index 0000000..9db609d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_L.png
new file mode 100755
index 0000000..dec21fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_R.png
new file mode 100755
index 0000000..193c4ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_T.png
new file mode 100755
index 0000000..576f425
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_TL.png
new file mode 100755
index 0000000..d6948d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_TR.png
new file mode 100755
index 0000000..b9d14ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_B.png
new file mode 100755
index 0000000..7c63656
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_BL.png
new file mode 100755
index 0000000..1b13abf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_BR.png
new file mode 100755
index 0000000..5d9516b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_L.png
new file mode 100755
index 0000000..b427d8f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_R.png
new file mode 100755
index 0000000..0a96e46
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_T.png
new file mode 100755
index 0000000..bf15b2e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_TL.png
new file mode 100755
index 0000000..0837394
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_TR.png
new file mode 100755
index 0000000..07d587e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_B.png
new file mode 100755
index 0000000..527f6ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_BL.png
new file mode 100755
index 0000000..8946b83
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_BR.png
new file mode 100755
index 0000000..f0eb67a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_L.png
new file mode 100755
index 0000000..a67dc74
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_R.png
new file mode 100755
index 0000000..e1aa66c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_T.png
new file mode 100755
index 0000000..31128be
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_TL.png
new file mode 100755
index 0000000..c0341a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_TR.png
new file mode 100755
index 0000000..d8ada01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_B.png
new file mode 100755
index 0000000..07c29fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_BL.png
new file mode 100755
index 0000000..806eb05
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_BR.png
new file mode 100755
index 0000000..7d30dea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_L.png
new file mode 100755
index 0000000..8f29fc6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_R.png
new file mode 100755
index 0000000..2d781e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_T.png
new file mode 100755
index 0000000..e34a713
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_TL.png
new file mode 100755
index 0000000..9b4dba6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_TR.png
new file mode 100755
index 0000000..6138533
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_B.png
new file mode 100755
index 0000000..da4e71b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_BL.png
new file mode 100755
index 0000000..171a429
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_BR.png
new file mode 100755
index 0000000..549cd73
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_L.png
new file mode 100755
index 0000000..ebea8c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_R.png
new file mode 100755
index 0000000..a808f34
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_T.png
new file mode 100755
index 0000000..f806bc4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_TL.png
new file mode 100755
index 0000000..ab86b1b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_TR.png
new file mode 100755
index 0000000..5d07694
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_B.png
new file mode 100755
index 0000000..608663c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_BL.png
new file mode 100755
index 0000000..7258905
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_BR.png
new file mode 100755
index 0000000..95ffca1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_L.png
new file mode 100755
index 0000000..31b8e27
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_R.png
new file mode 100755
index 0000000..ddf0b8d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_T.png
new file mode 100755
index 0000000..04f7817
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_TL.png
new file mode 100755
index 0000000..9fa99ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_TR.png
new file mode 100755
index 0000000..08915ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_B.png
new file mode 100755
index 0000000..a679ed2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_BL.png
new file mode 100755
index 0000000..84f3d5c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_BR.png
new file mode 100755
index 0000000..1ff0323
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_L.png
new file mode 100755
index 0000000..98e10ed
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_R.png
new file mode 100755
index 0000000..05906b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_T.png
new file mode 100755
index 0000000..9a1cb68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_TL.png
new file mode 100755
index 0000000..e705d08
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_TR.png
new file mode 100755
index 0000000..710c916
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/FFFFFF/9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_B.png
new file mode 100755
index 0000000..473d572
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_BL.png
new file mode 100755
index 0000000..67c1f40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_BR.png
new file mode 100755
index 0000000..6cb5ccd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_L.png
new file mode 100755
index 0000000..31ba6a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_R.png
new file mode 100755
index 0000000..ab60761
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_T.png
new file mode 100755
index 0000000..8921831
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_TL.png
new file mode 100755
index 0000000..75852f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_TR.png
new file mode 100755
index 0000000..eefe084
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_B.png
new file mode 100755
index 0000000..0ab0898
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_BL.png
new file mode 100755
index 0000000..1f9ebe9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_BR.png
new file mode 100755
index 0000000..1f6572e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_L.png
new file mode 100755
index 0000000..db102b4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_R.png
new file mode 100755
index 0000000..7e4a14b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_T.png
new file mode 100755
index 0000000..e7f37a4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_TL.png
new file mode 100755
index 0000000..68e5da2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_TR.png
new file mode 100755
index 0000000..a96d9c0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_B.png
new file mode 100755
index 0000000..4a8ea15
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_BL.png
new file mode 100755
index 0000000..79b9d60
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_BR.png
new file mode 100755
index 0000000..034f5e0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_L.png
new file mode 100755
index 0000000..974cbfc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_R.png
new file mode 100755
index 0000000..4193183
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_T.png
new file mode 100755
index 0000000..2e7147e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_TL.png
new file mode 100755
index 0000000..4807162
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_TR.png
new file mode 100755
index 0000000..98c6eb9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_B.png
new file mode 100755
index 0000000..3213f1f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_BL.png
new file mode 100755
index 0000000..ca744aa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_BR.png
new file mode 100755
index 0000000..5c75a69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_L.png
new file mode 100755
index 0000000..e09b323
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_R.png
new file mode 100755
index 0000000..9d05f83
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_T.png
new file mode 100755
index 0000000..07bd89c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_TL.png
new file mode 100755
index 0000000..76d8897
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_TR.png
new file mode 100755
index 0000000..baa7238
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_B.png
new file mode 100755
index 0000000..c571798
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_BL.png
new file mode 100755
index 0000000..e59ef71
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_BR.png
new file mode 100755
index 0000000..6967f40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_L.png
new file mode 100755
index 0000000..99778ca
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_R.png
new file mode 100755
index 0000000..ae9a23b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_T.png
new file mode 100755
index 0000000..d00999f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_TL.png
new file mode 100755
index 0000000..0660b85
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_TR.png
new file mode 100755
index 0000000..3d2737f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_B.png
new file mode 100755
index 0000000..52f43ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_BL.png
new file mode 100755
index 0000000..c62f64c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_BR.png
new file mode 100755
index 0000000..2885eff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_L.png
new file mode 100755
index 0000000..b49b413
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_R.png
new file mode 100755
index 0000000..0a921f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_T.png
new file mode 100755
index 0000000..a1b0ba8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_TL.png
new file mode 100755
index 0000000..f1e264f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_TR.png
new file mode 100755
index 0000000..44d5913
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_B.png
new file mode 100755
index 0000000..27cd42b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_BL.png
new file mode 100755
index 0000000..a85c72b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_BR.png
new file mode 100755
index 0000000..79d32dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_L.png
new file mode 100755
index 0000000..e77b218
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_R.png
new file mode 100755
index 0000000..8eb0ee8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_T.png
new file mode 100755
index 0000000..ecd01f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_TL.png
new file mode 100755
index 0000000..bc534a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_TR.png
new file mode 100755
index 0000000..48ba8f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_B.png
new file mode 100755
index 0000000..57044d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_BL.png
new file mode 100755
index 0000000..81e75aa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_BR.png
new file mode 100755
index 0000000..98a6cd4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_L.png
new file mode 100755
index 0000000..c61e7b1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_R.png
new file mode 100755
index 0000000..2668225
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_T.png
new file mode 100755
index 0000000..62e1c16
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_TL.png
new file mode 100755
index 0000000..6c3f269
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_TR.png
new file mode 100755
index 0000000..d1f70c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/frame/tint/9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_B.png
new file mode 100755
index 0000000..c690c4b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_BL.png
new file mode 100755
index 0000000..4360d7c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_BR.png
new file mode 100755
index 0000000..f027f6a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_L.png
new file mode 100755
index 0000000..1aaa35e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_R.png
new file mode 100755
index 0000000..78f27ec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_T.png
new file mode 100755
index 0000000..089962e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_TL.png
new file mode 100755
index 0000000..7d59d9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_TR.png
new file mode 100755
index 0000000..67a91c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_B.png
new file mode 100755
index 0000000..7c85c7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_BL.png
new file mode 100755
index 0000000..48a4262
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_BR.png
new file mode 100755
index 0000000..6f5fa4f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_L.png
new file mode 100755
index 0000000..f463b95
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_R.png
new file mode 100755
index 0000000..8fa929d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_T.png
new file mode 100755
index 0000000..5e71fff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_TL.png
new file mode 100755
index 0000000..e269ff6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_TR.png
new file mode 100755
index 0000000..bd6daad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_B.png
new file mode 100755
index 0000000..ed38b8a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_BL.png
new file mode 100755
index 0000000..b773d8f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_BR.png
new file mode 100755
index 0000000..2d28260
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_L.png
new file mode 100755
index 0000000..8534610
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_R.png
new file mode 100755
index 0000000..66253c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_T.png
new file mode 100755
index 0000000..818de7b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_TL.png
new file mode 100755
index 0000000..bc83b8f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_TR.png
new file mode 100755
index 0000000..17ce16f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_B.png
new file mode 100755
index 0000000..ce7202a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_BL.png
new file mode 100755
index 0000000..4ecadb9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_BR.png
new file mode 100755
index 0000000..dceda4a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_L.png
new file mode 100755
index 0000000..1d23450
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_R.png
new file mode 100755
index 0000000..e855c9f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_T.png
new file mode 100755
index 0000000..19ca4e1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_TL.png
new file mode 100755
index 0000000..39a483c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_TR.png
new file mode 100755
index 0000000..0ee9896
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_B.png
new file mode 100755
index 0000000..9625899
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_BL.png
new file mode 100755
index 0000000..f2c8438
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_BR.png
new file mode 100755
index 0000000..01c0584
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_L.png
new file mode 100755
index 0000000..bca8bd3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_R.png
new file mode 100755
index 0000000..b607a00
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_T.png
new file mode 100755
index 0000000..6c7154c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_TL.png
new file mode 100755
index 0000000..a8c73f0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_TR.png
new file mode 100755
index 0000000..3641241
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_B.png
new file mode 100755
index 0000000..6cfd5f6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_BL.png
new file mode 100755
index 0000000..40f4471
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_BR.png
new file mode 100755
index 0000000..2ef0c05
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_L.png
new file mode 100755
index 0000000..4750c45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_R.png
new file mode 100755
index 0000000..401fc01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_T.png
new file mode 100755
index 0000000..9aefa44
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_TL.png
new file mode 100755
index 0000000..a694239
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_TR.png
new file mode 100755
index 0000000..5a06677
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_B.png
new file mode 100755
index 0000000..5ac2932
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_BL.png
new file mode 100755
index 0000000..04555d2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_BR.png
new file mode 100755
index 0000000..97909f6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_L.png
new file mode 100755
index 0000000..c5902c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_R.png
new file mode 100755
index 0000000..74b1f58
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_T.png
new file mode 100755
index 0000000..5ac3684
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_TL.png
new file mode 100755
index 0000000..78d8876
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_TR.png
new file mode 100755
index 0000000..346f5e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_B.png
new file mode 100755
index 0000000..40e40fb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_BL.png
new file mode 100755
index 0000000..1ae57fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_BR.png
new file mode 100755
index 0000000..84d95ce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_center.png
new file mode 100755
index 0000000..ea3e0fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_L.png
new file mode 100755
index 0000000..d27d927
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_R.png
new file mode 100755
index 0000000..ab3daf2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_T.png
new file mode 100755
index 0000000..0d2fc85
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_TL.png
new file mode 100755
index 0000000..c7c52a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_TR.png
new file mode 100755
index 0000000..1cd3c50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/FFFFFF/9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_B.png
new file mode 100755
index 0000000..8521cdf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_BL.png
new file mode 100755
index 0000000..39f0f40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_BR.png
new file mode 100755
index 0000000..475ba0a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_center.png
new file mode 100755
index 0000000..7dccfc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_L.png
new file mode 100755
index 0000000..ca9d811
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_R.png
new file mode 100755
index 0000000..2c7e667
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_T.png
new file mode 100755
index 0000000..2d0d954
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_TL.png
new file mode 100755
index 0000000..ded9505
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_TR.png
new file mode 100755
index 0000000..b2ea386
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_B.png
new file mode 100755
index 0000000..dbb9542
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_BL.png
new file mode 100755
index 0000000..ce93d81
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_BR.png
new file mode 100755
index 0000000..7b54553
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_center.png
new file mode 100755
index 0000000..7dccfc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_L.png
new file mode 100755
index 0000000..a37130e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_R.png
new file mode 100755
index 0000000..c8beca8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_T.png
new file mode 100755
index 0000000..da83cbf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_TL.png
new file mode 100755
index 0000000..414755d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_TR.png
new file mode 100755
index 0000000..7508cb4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_B.png
new file mode 100755
index 0000000..2ff98ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_BL.png
new file mode 100755
index 0000000..2489299
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_BR.png
new file mode 100755
index 0000000..87f09b4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_center.png
new file mode 100755
index 0000000..7dccfc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_L.png
new file mode 100755
index 0000000..b9944bf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_R.png
new file mode 100755
index 0000000..9a72b4c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_T.png
new file mode 100755
index 0000000..122c6e8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_TL.png
new file mode 100755
index 0000000..485d448
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_TR.png
new file mode 100755
index 0000000..a3ab6a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_B.png
new file mode 100755
index 0000000..879eeaa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_BL.png
new file mode 100755
index 0000000..9f56795
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_BR.png
new file mode 100755
index 0000000..01a5feb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_center.png
new file mode 100755
index 0000000..7dccfc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_L.png
new file mode 100755
index 0000000..53cfc5a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_R.png
new file mode 100755
index 0000000..7117d69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_T.png
new file mode 100755
index 0000000..3cc0144
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_TL.png
new file mode 100755
index 0000000..27d9719
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_TR.png
new file mode 100755
index 0000000..91aecb0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_B.png
new file mode 100755
index 0000000..0fd4cd7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_BL.png
new file mode 100755
index 0000000..611769c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_BR.png
new file mode 100755
index 0000000..2dec47c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_center.png
new file mode 100755
index 0000000..7dccfc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_L.png
new file mode 100755
index 0000000..12f7e7b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_R.png
new file mode 100755
index 0000000..3ee5a4a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_T.png
new file mode 100755
index 0000000..4da1edf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_TL.png
new file mode 100755
index 0000000..6b6360e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_TR.png
new file mode 100755
index 0000000..a64d7b8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_B.png
new file mode 100755
index 0000000..eb5bb56
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_BL.png
new file mode 100755
index 0000000..c5867d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_BR.png
new file mode 100755
index 0000000..afed846
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_center.png
new file mode 100755
index 0000000..7dccfc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_L.png
new file mode 100755
index 0000000..051b89c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_R.png
new file mode 100755
index 0000000..d9160b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_T.png
new file mode 100755
index 0000000..069330f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_TL.png
new file mode 100755
index 0000000..5b9e1e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_TR.png
new file mode 100755
index 0000000..fba1b4d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_B.png
new file mode 100755
index 0000000..0fe316a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_BL.png
new file mode 100755
index 0000000..547222e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_BR.png
new file mode 100755
index 0000000..679d108
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_center.png
new file mode 100755
index 0000000..7dccfc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_L.png
new file mode 100755
index 0000000..7b04b41
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_R.png
new file mode 100755
index 0000000..232049d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_T.png
new file mode 100755
index 0000000..596bc8e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_TL.png
new file mode 100755
index 0000000..089ecf1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_TR.png
new file mode 100755
index 0000000..d22a03c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_B.png
new file mode 100755
index 0000000..b61d166
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_BL.png
new file mode 100755
index 0000000..63d7f8c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_BR.png
new file mode 100755
index 0000000..8732ee6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_center.png
new file mode 100755
index 0000000..7dccfc7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_L.png
new file mode 100755
index 0000000..ed9b882
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_R.png
new file mode 100755
index 0000000..e7314a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_T.png
new file mode 100755
index 0000000..40868c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_TL.png
new file mode 100755
index 0000000..1ef7c90
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_TR.png
new file mode 100755
index 0000000..8444c55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/edges/square/raised/tint/9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/createNewFolder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/createNewFolder.png
new file mode 100755
index 0000000..c8375bd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/createNewFolder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/file.png
new file mode 100755
index 0000000..da793cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/folder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/folder.png
new file mode 100755
index 0000000..caad126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/folder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/previousFolder.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/previousFolder.png
new file mode 100755
index 0000000..69eb4c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/previousFolder.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/refresh.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/refresh.png
new file mode 100755
index 0000000..9ce1bb3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/refresh.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/upOneLevel.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/upOneLevel.png
new file mode 100755
index 0000000..6a84350
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/FileBrowser/upOneLevel.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/grid.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/grid.gif
new file mode 100755
index 0000000..139e048
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/grid.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button.png
new file mode 100755
index 0000000..8e04bf1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Disabled.png
new file mode 100755
index 0000000..58d5a0e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Down.png
new file mode 100755
index 0000000..8816f65
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Over.png
new file mode 100755
index 0000000..348bc21
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ImgButton/button_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/checked.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/checked.png
new file mode 100755
index 0000000..e250606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/checked.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/formula_menuItem.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/formula_menuItem.png
new file mode 100755
index 0000000..0250515
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/formula_menuItem.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_closed.gif
new file mode 100755
index 0000000..87039ab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_closed_rtl.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_closed_rtl.gif
new file mode 100755
index 0000000..87039ab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_closed_rtl.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_Disabled_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_Disabled_closed.gif
new file mode 100755
index 0000000..87039ab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_Disabled_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_Disabled_opened.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_Disabled_opened.gif
new file mode 100755
index 0000000..87039ab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_Disabled_opened.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_opened.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_opened.gif
new file mode 100755
index 0000000..52422a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_opened.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_opening.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_opening.gif
new file mode 100755
index 0000000..87039ab
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/group_opening.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_end.gif
new file mode 100755
index 0000000..564dbc3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_end.png
new file mode 100755
index 0000000..16fb96e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_start.gif
new file mode 100755
index 0000000..4e7fecc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_start.png
new file mode 100755
index 0000000..188881e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_stretch.gif
new file mode 100755
index 0000000..f463f60
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_stretch.png
new file mode 100755
index 0000000..5a04d00
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_end.gif
new file mode 100755
index 0000000..2809b76
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_end.png
new file mode 100755
index 0000000..bf19ab5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_start.gif
new file mode 100755
index 0000000..c77e177
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_start.png
new file mode 100755
index 0000000..6e128d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_stretch.gif
new file mode 100755
index 0000000..838347d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_stretch.png
new file mode 100755
index 0000000..60b3d2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_end.gif
new file mode 100755
index 0000000..564dbc3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_end.png
new file mode 100755
index 0000000..16fb96e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_end.gif
new file mode 100755
index 0000000..2dc6c0a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_end.png
new file mode 100755
index 0000000..16fb96e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_start.gif
new file mode 100755
index 0000000..6d5ae9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_start.png
new file mode 100755
index 0000000..188881e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_stretch.gif
new file mode 100755
index 0000000..50417f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_stretch.png
new file mode 100755
index 0000000..5a04d00
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_end.gif
new file mode 100755
index 0000000..7cf985a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_end.png
new file mode 100755
index 0000000..bf19ab5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_start.gif
new file mode 100755
index 0000000..64bf550
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_start.png
new file mode 100755
index 0000000..6e128d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_stretch.gif
new file mode 100755
index 0000000..0fcbd18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..60b3d2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_end.gif
new file mode 100755
index 0000000..2809b76
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_end.png
new file mode 100755
index 0000000..bf19ab5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_start.gif
new file mode 100755
index 0000000..c77e177
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_start.png
new file mode 100755
index 0000000..6e128d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_stretch.gif
new file mode 100755
index 0000000..838347d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_stretch.png
new file mode 100755
index 0000000..60b3d2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_end.gif
new file mode 100755
index 0000000..7cf985a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_end.png
new file mode 100755
index 0000000..bf19ab5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_end.gif
new file mode 100755
index 0000000..2809b76
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_end.png
new file mode 100755
index 0000000..bf19ab5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_start.gif
new file mode 100755
index 0000000..c77e177
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_start.png
new file mode 100755
index 0000000..6e128d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_stretch.gif
new file mode 100755
index 0000000..838347d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_stretch.png
new file mode 100755
index 0000000..60b3d2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_start.gif
new file mode 100755
index 0000000..64bf550
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_start.png
new file mode 100755
index 0000000..6e128d9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_stretch.gif
new file mode 100755
index 0000000..0fcbd18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_stretch.png
new file mode 100755
index 0000000..60b3d2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_start.gif
new file mode 100755
index 0000000..4e7fecc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_start.png
new file mode 100755
index 0000000..188881e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_stretch.gif
new file mode 100755
index 0000000..f463f60
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_stretch.png
new file mode 100755
index 0000000..5a04d00
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/header_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/headerMenuButton_icon.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/headerMenuButton_icon.gif
new file mode 100755
index 0000000..8fa63e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/headerMenuButton_icon.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/sort_ascending.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/sort_ascending.gif
new file mode 100755
index 0000000..dda4fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/sort_ascending.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/sort_descending.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/sort_descending.gif
new file mode 100755
index 0000000..8fa63e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/sort_descending.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/tracker.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/tracker.gif
new file mode 100755
index 0000000..553e898
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/tracker.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/validation_error_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/validation_error_icon.png
new file mode 100755
index 0000000..56ad042
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ListGrid/validation_error_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/loading.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/loading.gif
new file mode 100755
index 0000000..3d55f39
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/loading.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/loadingSmall.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/loadingSmall.gif
new file mode 100755
index 0000000..d0bce15
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/loadingSmall.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/check.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/check.gif
new file mode 100755
index 0000000..2465d1c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/check.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/check_disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/check_disabled.gif
new file mode 100755
index 0000000..7095f33
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/check_disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button.gif
new file mode 100755
index 0000000..8fa63e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_Disabled.gif
new file mode 100755
index 0000000..d386b41
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_up.gif
new file mode 100755
index 0000000..dda4fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_up_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_up_Disabled.gif
new file mode 100755
index 0000000..a5230f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/menu_button_up_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu.gif
new file mode 100755
index 0000000..11bc4c6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_disabled.gif
new file mode 100755
index 0000000..4ec927c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_disabled_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_disabled_left.gif
new file mode 100755
index 0000000..13a42d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_disabled_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_down.png
new file mode 100755
index 0000000..aa56d7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_left.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_left.gif
new file mode 100755
index 0000000..55656e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Menu/submenu_left.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_add_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_add_files.png
new file mode 100755
index 0000000..6db0919
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_add_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_add_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_add_files_Disabled.png
new file mode 100755
index 0000000..9b7fa17
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_add_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_remove_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_remove_files.png
new file mode 100755
index 0000000..bd45928
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_remove_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_remove_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_remove_files_Disabled.png
new file mode 100755
index 0000000..e1edd8c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiFileItem/icon_remove_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_add_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_add_files.png
new file mode 100755
index 0000000..6db0919
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_add_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_add_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_add_files_Disabled.png
new file mode 100755
index 0000000..9b7fa17
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_add_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_remove_files.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_remove_files.png
new file mode 100755
index 0000000..bd45928
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_remove_files.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_remove_files_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_remove_files_Disabled.png
new file mode 100755
index 0000000..e1edd8c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/MultiUploadItem/icon_remove_files_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/opacity.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/opacity.png
new file mode 100755
index 0000000..0d0a764
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/opacity.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close.gif
new file mode 100755
index 0000000..00a013d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_disabled.gif
new file mode 100755
index 0000000..ff7ea5e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_down.gif
new file mode 100755
index 0000000..00a013d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_over.gif
new file mode 100755
index 0000000..00a013d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/close_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize.gif
new file mode 100755
index 0000000..4af1ddd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_disabled.gif
new file mode 100755
index 0000000..07e189e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_down.gif
new file mode 100755
index 0000000..4af1ddd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_over.gif
new file mode 100755
index 0000000..4af1ddd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/customize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize.gif
new file mode 100755
index 0000000..70c6e58
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_disabled.gif
new file mode 100755
index 0000000..5f405bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_down.gif
new file mode 100755
index 0000000..70c6e58
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_over.gif
new file mode 100755
index 0000000..70c6e58
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/maximize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize.gif
new file mode 100755
index 0000000..fc7ba64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_disabled.gif
new file mode 100755
index 0000000..c20047e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_down.gif
new file mode 100755
index 0000000..fc7ba64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_over.gif
new file mode 100755
index 0000000..fc7ba64
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/minimize_over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/Portlet.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/Portlet.psd
new file mode 100755
index 0000000..e06e744
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Portlet/Portlet.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/Progressbar.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/Progressbar.psd
new file mode 100755
index 0000000..f1cdad6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/Progressbar.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_end.gif
new file mode 100755
index 0000000..db13525
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_start.gif
new file mode 100755
index 0000000..23a7b36
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_stretch.gif
new file mode 100755
index 0000000..8e5b886
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_bar_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_end.gif
new file mode 100755
index 0000000..b76d01d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_start.gif
new file mode 100755
index 0000000..31f4009
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_stretch.gif
new file mode 100755
index 0000000..41b9994
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/progressbar_empty_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/spacer.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/spacer.gif
new file mode 100755
index 0000000..5bfd67a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Progressbar/spacer.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add.png
new file mode 100755
index 0000000..4a7ea12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add_Disabled.png
new file mode 100755
index 0000000..93e0ad0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add_Over.png
new file mode 100755
index 0000000..6a4e1bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/add_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/check.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/check.gif
new file mode 100755
index 0000000..2465d1c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/check.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter.png
new file mode 100755
index 0000000..149ae78
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter_Disabled.png
new file mode 100755
index 0000000..b46239e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter_Over.png
new file mode 100755
index 0000000..d2fa7e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/filter_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/query.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/query.gif
new file mode 100755
index 0000000..2b2bd19
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RecordEditor/query.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/background_color.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/background_color.gif
new file mode 100755
index 0000000..8b464c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/background_color.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/background_color_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/background_color_Disabled.gif
new file mode 100755
index 0000000..4f35753
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/background_color_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/copy.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/copy.png
new file mode 100755
index 0000000..87cf5c9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/copy.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/copy_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/copy_Disabled.png
new file mode 100755
index 0000000..bbb93c1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/copy_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/cut.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/cut.png
new file mode 100755
index 0000000..bb62377
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/cut.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/cut_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/cut_Disabled.png
new file mode 100755
index 0000000..79bdf22
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/cut_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/indent.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/indent.png
new file mode 100755
index 0000000..c16f938
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/indent.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/indent_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/indent_Disabled.png
new file mode 100755
index 0000000..a93daa4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/indent_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/link_new.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/link_new.png
new file mode 100755
index 0000000..a87f732
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/link_new.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/outdent.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/outdent.png
new file mode 100755
index 0000000..70730e6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/outdent.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/outdent_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/outdent_Disabled.png
new file mode 100755
index 0000000..0dc1840
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/outdent_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/paste.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/paste.png
new file mode 100755
index 0000000..e3397b2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/paste.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/paste_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/paste_Disabled.png
new file mode 100755
index 0000000..5b89a74
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/paste_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/separator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/separator.png
new file mode 100755
index 0000000..7e10cc2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/separator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/separator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/separator_Disabled.png
new file mode 100755
index 0000000..05f0487
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/separator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_center.png
new file mode 100755
index 0000000..57beb38
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_center_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_center_Disabled.png
new file mode 100755
index 0000000..06750d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_center_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_justified.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_justified.png
new file mode 100755
index 0000000..2fbdd69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_justified.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_justified_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_justified_Disabled.png
new file mode 100755
index 0000000..6792e35
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_justified_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_left.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_left.png
new file mode 100755
index 0000000..6c8fcc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_left.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_left_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_left_Disabled.png
new file mode 100755
index 0000000..4f6a8e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_left_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_right.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_right.png
new file mode 100755
index 0000000..a150257
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_right.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_right_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_right_Disabled.png
new file mode 100755
index 0000000..f859b47
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_align_right_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_bold.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_bold.png
new file mode 100755
index 0000000..889ae80
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_bold.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_color.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_color.gif
new file mode 100755
index 0000000..44af9c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_color.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_color_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_color_Disabled.gif
new file mode 100755
index 0000000..a1d324a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_color_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_italic.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_italic.png
new file mode 100755
index 0000000..8482ac8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_italic.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_underline.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_underline.png
new file mode 100755
index 0000000..90d0df2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/RichTextEditor/text_underline.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/complexType.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/complexType.gif
new file mode 100755
index 0000000..1c0743c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/complexType.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/operation.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/operation.png
new file mode 100755
index 0000000..a018fac
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/operation.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/simpleType.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/simpleType.png
new file mode 100755
index 0000000..2b6c5a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SchemaViewer/simpleType.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_corner.gif
new file mode 100755
index 0000000..b9eaa4b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_corner.gif
new file mode 100755
index 0000000..e583cdb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_end.gif
new file mode 100755
index 0000000..aa9de4e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_start.gif
new file mode 100755
index 0000000..5738755
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_track.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_track.gif
new file mode 100755
index 0000000..f3030ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Disabled_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_corner.gif
new file mode 100755
index 0000000..b9eaa4b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_end.gif
new file mode 100755
index 0000000..44fefb7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_start.gif
new file mode 100755
index 0000000..839aebb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_track.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_track.gif
new file mode 100755
index 0000000..0b62088
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_Down_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_end.gif
new file mode 100755
index 0000000..22a75d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_start.gif
new file mode 100755
index 0000000..fc1e238
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_track.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_track.gif
new file mode 100755
index 0000000..0b62088
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hscroll_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_end.gif
new file mode 100755
index 0000000..ab2b258
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_start.gif
new file mode 100755
index 0000000..ab2b258
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_stretch.gif
new file mode 100755
index 0000000..f3030ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_end.gif
new file mode 100755
index 0000000..709f3dd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_start.gif
new file mode 100755
index 0000000..b62b5db
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_stretch.gif
new file mode 100755
index 0000000..a5024c0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_end.gif
new file mode 100755
index 0000000..0b5a25a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_start.gif
new file mode 100755
index 0000000..934d3e6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_stretch.gif
new file mode 100755
index 0000000..155e055
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/hthumb_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/scrollbar.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/scrollbar.psd
new file mode 100755
index 0000000..213f6e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/scrollbar.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_corner.gif
new file mode 100755
index 0000000..9400739
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_corner.gif
new file mode 100755
index 0000000..9400739
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_end.gif
new file mode 100755
index 0000000..6e888b6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_start.gif
new file mode 100755
index 0000000..d2c8bcf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_track.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_track.gif
new file mode 100755
index 0000000..2132799
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Disabled_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_corner.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_corner.gif
new file mode 100755
index 0000000..9400739
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_corner.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_end.gif
new file mode 100755
index 0000000..ae1dc01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_start.gif
new file mode 100755
index 0000000..0813b98
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_track.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_track.gif
new file mode 100755
index 0000000..3640ecb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_Down_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_end.gif
new file mode 100755
index 0000000..40fd0ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_start.gif
new file mode 100755
index 0000000..8c8ae5d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_track.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_track.gif
new file mode 100755
index 0000000..3640ecb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vscroll_track.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_end.gif
new file mode 100755
index 0000000..5429acc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_start.gif
new file mode 100755
index 0000000..5429acc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_stretch.gif
new file mode 100755
index 0000000..2132799
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_end.gif
new file mode 100755
index 0000000..87a5eb9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_start.gif
new file mode 100755
index 0000000..9a20195
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_stretch.gif
new file mode 100755
index 0000000..5de0de3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_end.gif
new file mode 100755
index 0000000..44fc425
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_start.gif
new file mode 100755
index 0000000..23fc12a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_stretch.gif
new file mode 100755
index 0000000..c7979b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Scrollbar/vthumb_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_end.png
new file mode 100755
index 0000000..15e0123
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_start.png
new file mode 100755
index 0000000..0473b1e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_stretch.png
new file mode 100755
index 0000000..fc55d77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_end.png
new file mode 100755
index 0000000..15e0123
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_start.png
new file mode 100755
index 0000000..0473b1e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_stretch.png
new file mode 100755
index 0000000..fc55d77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_closed_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_end.png
new file mode 100755
index 0000000..15e0123
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_start.png
new file mode 100755
index 0000000..0473b1e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_stretch.png
new file mode 100755
index 0000000..fc55d77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_Disabled_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_end.png
new file mode 100755
index 0000000..15e0123
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_start.png
new file mode 100755
index 0000000..0473b1e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_stretch.png
new file mode 100755
index 0000000..fc55d77
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/header_opened_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_closed.png
new file mode 100755
index 0000000..a7a839b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_Disabled_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_Disabled_closed.png
new file mode 100755
index 0000000..29f44b9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_Disabled_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_Disabled_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_Disabled_opened.png
new file mode 100755
index 0000000..1ac5174
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_Disabled_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_opened.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_opened.png
new file mode 100755
index 0000000..844c930
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionHeader/opener_opened.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_end.gif
new file mode 100755
index 0000000..1d8babf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_start.gif
new file mode 100755
index 0000000..757bf99
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_stretch.gif
new file mode 100755
index 0000000..a8fddce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_closed_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_end.gif
new file mode 100755
index 0000000..1d8babf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_start.gif
new file mode 100755
index 0000000..757bf99
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_stretch.gif
new file mode 100755
index 0000000..a8fddce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/blue/header_opened_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_end.gif
new file mode 100755
index 0000000..b7ed94a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_start.gif
new file mode 100755
index 0000000..319c777
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_stretch.gif
new file mode 100755
index 0000000..e2ac90a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_closed_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_end.gif
new file mode 100755
index 0000000..564dbc3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_start.gif
new file mode 100755
index 0000000..4e7fecc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_stretch.gif
new file mode 100755
index 0000000..f463f60
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_closed_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_end.gif
new file mode 100755
index 0000000..564dbc3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_start.gif
new file mode 100755
index 0000000..4e7fecc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_stretch.gif
new file mode 100755
index 0000000..f463f60
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_Disabled_opened_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_end.gif
new file mode 100755
index 0000000..b7ed94a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_start.gif
new file mode 100755
index 0000000..319c777
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_stretch.gif
new file mode 100755
index 0000000..e2ac90a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/SectionStack/header_opened_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/no_drop.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/no_drop.png
new file mode 100755
index 0000000..fd58248
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/no_drop.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/progressCursorTracker.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/progressCursorTracker.gif
new file mode 100755
index 0000000..aa9b38a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/progressCursorTracker.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds_center.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds_center.png
new file mode 100755
index 0000000..3b3884e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds_center.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_B.png
new file mode 100755
index 0000000..7cb1db0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_BL.png
new file mode 100755
index 0000000..bcf40a6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_BR.png
new file mode 100755
index 0000000..319264a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_L.png
new file mode 100755
index 0000000..fef2646
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_R.png
new file mode 100755
index 0000000..0547498
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_T.png
new file mode 100755
index 0000000..f508b51
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_TL.png
new file mode 100755
index 0000000..f24b2ae
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_TR.png
new file mode 100755
index 0000000..73f73bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds1_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_B.png
new file mode 100755
index 0000000..05b1d11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_BL.png
new file mode 100755
index 0000000..0ee4dcd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_BR.png
new file mode 100755
index 0000000..c92b858
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_L.png
new file mode 100755
index 0000000..97ee80e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_R.png
new file mode 100755
index 0000000..962ecb3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_T.png
new file mode 100755
index 0000000..ebf1e26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_TL.png
new file mode 100755
index 0000000..86fad24
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_TR.png
new file mode 100755
index 0000000..52f2305
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds10_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_B.png
new file mode 100755
index 0000000..e55ed42
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_BL.png
new file mode 100755
index 0000000..735e95e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_BR.png
new file mode 100755
index 0000000..95acd7f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_L.png
new file mode 100755
index 0000000..7136873
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_R.png
new file mode 100755
index 0000000..72d50b3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_T.png
new file mode 100755
index 0000000..070bfa5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_TL.png
new file mode 100755
index 0000000..95a7413
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_TR.png
new file mode 100755
index 0000000..e03f78f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds2_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_B.png
new file mode 100755
index 0000000..8950af8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_BL.png
new file mode 100755
index 0000000..a6194eb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_BR.png
new file mode 100755
index 0000000..4daf18d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_L.png
new file mode 100755
index 0000000..5c1d8f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_R.png
new file mode 100755
index 0000000..e4d9851
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_T.png
new file mode 100755
index 0000000..42360a9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_TL.png
new file mode 100755
index 0000000..39732c3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_TR.png
new file mode 100755
index 0000000..3b9aa40
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds3_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_B.png
new file mode 100755
index 0000000..3d6fc26
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_BL.png
new file mode 100755
index 0000000..6007253
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_BR.png
new file mode 100755
index 0000000..8e9c7ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_L.png
new file mode 100755
index 0000000..a6f9737
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_R.png
new file mode 100755
index 0000000..44efd2d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_T.png
new file mode 100755
index 0000000..ad8bf68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_TL.png
new file mode 100755
index 0000000..185ba1f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_TR.png
new file mode 100755
index 0000000..3afd869
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds4_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_B.png
new file mode 100755
index 0000000..e2879ff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_BL.png
new file mode 100755
index 0000000..50468f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_BR.png
new file mode 100755
index 0000000..96f7b07
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_L.png
new file mode 100755
index 0000000..0ee6a62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_R.png
new file mode 100755
index 0000000..cd2177d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_T.png
new file mode 100755
index 0000000..3541504
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_TL.png
new file mode 100755
index 0000000..c85e2bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_TR.png
new file mode 100755
index 0000000..43dd30f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds5_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_B.png
new file mode 100755
index 0000000..73e9525
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_BL.png
new file mode 100755
index 0000000..cf1f5f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_BR.png
new file mode 100755
index 0000000..92b1852
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_L.png
new file mode 100755
index 0000000..f97fd86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_R.png
new file mode 100755
index 0000000..b48626e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_T.png
new file mode 100755
index 0000000..6324087
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_TL.png
new file mode 100755
index 0000000..a90a94b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_TR.png
new file mode 100755
index 0000000..44c6bc5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds6_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_B.png
new file mode 100755
index 0000000..670c1f2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_BL.png
new file mode 100755
index 0000000..9325baf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_BR.png
new file mode 100755
index 0000000..5e0a63f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_L.png
new file mode 100755
index 0000000..2c63fbe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_R.png
new file mode 100755
index 0000000..44f0eb6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_T.png
new file mode 100755
index 0000000..f77a361
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_TL.png
new file mode 100755
index 0000000..21da49e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_TR.png
new file mode 100755
index 0000000..9c9c8d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds7_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_B.png
new file mode 100755
index 0000000..84c839f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_BL.png
new file mode 100755
index 0000000..e8fa038
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_BR.png
new file mode 100755
index 0000000..dca921d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_L.png
new file mode 100755
index 0000000..121e4d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_R.png
new file mode 100755
index 0000000..21f8877
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_T.png
new file mode 100755
index 0000000..a6f5188
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_TL.png
new file mode 100755
index 0000000..c530634
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_TR.png
new file mode 100755
index 0000000..e325b9c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds8_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_B.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_B.png
new file mode 100755
index 0000000..5166a75
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_B.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_BL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_BL.png
new file mode 100755
index 0000000..bcb45c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_BL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_BR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_BR.png
new file mode 100755
index 0000000..d248538
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_BR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_L.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_L.png
new file mode 100755
index 0000000..ec633c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_L.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_R.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_R.png
new file mode 100755
index 0000000..56b8f57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_R.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_T.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_T.png
new file mode 100755
index 0000000..5973074
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_T.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_TL.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_TL.png
new file mode 100755
index 0000000..c7d315e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_TL.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_TR.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_TR.png
new file mode 100755
index 0000000..a904325
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/shared/shadows/ds9_TR.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb.png
new file mode 100755
index 0000000..b69f4cd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb_Disabled.png
new file mode 100755
index 0000000..bbcb5aa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb_down.png
new file mode 100755
index 0000000..665adcb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/hthumb_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_end.png
new file mode 100755
index 0000000..d404160
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_start.png
new file mode 100755
index 0000000..0038428
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_stretch.png
new file mode 100755
index 0000000..5fd1198
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_end.png
new file mode 100755
index 0000000..a44ca57
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_start.png
new file mode 100755
index 0000000..1a02b15
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_stretch.png
new file mode 100755
index 0000000..b15e3dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/htrack_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb.png
new file mode 100755
index 0000000..8920cdc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb_Disabled.png
new file mode 100755
index 0000000..919e3f5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb_down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb_down.png
new file mode 100755
index 0000000..c4a38ad
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vthumb_down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_end.png
new file mode 100755
index 0000000..ff20fbf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_start.png
new file mode 100755
index 0000000..943b13d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_stretch.png
new file mode 100755
index 0000000..8c503a5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_end.png
new file mode 100755
index 0000000..c0a1bfe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_start.png
new file mode 100755
index 0000000..15d22bb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_stretch.png
new file mode 100755
index 0000000..0584cb9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Slider/vtrack_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_end.gif
new file mode 100755
index 0000000..dd370c8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_start.gif
new file mode 100755
index 0000000..1ec46d0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_stretch.gif
new file mode 100755
index 0000000..f67189b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_end.gif
new file mode 100755
index 0000000..dd370c8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip.gif
new file mode 100755
index 0000000..0743645
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip_Down.gif
new file mode 100755
index 0000000..0743645
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip_Over.gif
new file mode 100755
index 0000000..0743645
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_grip_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_end.gif
new file mode 100755
index 0000000..dd370c8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_start.gif
new file mode 100755
index 0000000..1ec46d0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_stretch.gif
new file mode 100755
index 0000000..f67189b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_start.gif
new file mode 100755
index 0000000..1ec46d0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_stretch.gif
new file mode 100755
index 0000000..f67189b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/hsplit_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_end.gif
new file mode 100755
index 0000000..084700c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_start.gif
new file mode 100755
index 0000000..cfc9373
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_stretch.gif
new file mode 100755
index 0000000..cfa425c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_end.gif
new file mode 100755
index 0000000..084700c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip.gif
new file mode 100755
index 0000000..b08afef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip_Down.gif
new file mode 100755
index 0000000..b08afef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip_Over.gif
new file mode 100755
index 0000000..b08afef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_grip_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_end.gif
new file mode 100755
index 0000000..084700c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_start.gif
new file mode 100755
index 0000000..cfc9373
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_stretch.gif
new file mode 100755
index 0000000..cfa425c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_start.gif
new file mode 100755
index 0000000..cfc9373
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_stretch.gif
new file mode 100755
index 0000000..cfa425c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/9FCFFF/vsplit_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hgrip.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hgrip.png
new file mode 100755
index 0000000..cfd806e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hgrip.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hgrip_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hgrip_Down.png
new file mode 100755
index 0000000..92e0a1f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hgrip_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit.gif
new file mode 100755
index 0000000..034bfd0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_end.gif
new file mode 100755
index 0000000..cf256de
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_start.gif
new file mode 100755
index 0000000..00d857e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_stretch.gif
new file mode 100755
index 0000000..a5912e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_end.gif
new file mode 100755
index 0000000..cf256de
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip.gif
new file mode 100755
index 0000000..36ee258
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip_Down.gif
new file mode 100755
index 0000000..36ee258
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip_Over.gif
new file mode 100755
index 0000000..36ee258
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_grip_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_end.gif
new file mode 100755
index 0000000..cf256de
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_start.gif
new file mode 100755
index 0000000..00d857e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_stretch.gif
new file mode 100755
index 0000000..a5912e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap.gif
new file mode 100755
index 0000000..2ef378a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_closed.gif
new file mode 100755
index 0000000..48dedd3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Down.gif
new file mode 100755
index 0000000..1ab403a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Down_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Down_closed.gif
new file mode 100755
index 0000000..029886c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Down_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Over.gif
new file mode 100755
index 0000000..b001cdc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Over_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Over_closed.gif
new file mode 100755
index 0000000..d05f8d3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_snap_Over_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_start.gif
new file mode 100755
index 0000000..00d857e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_stretch.gif
new file mode 100755
index 0000000..a5912e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/hsplit_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vgrip.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vgrip.png
new file mode 100755
index 0000000..40ba50b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vgrip.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vgrip_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vgrip_Down.png
new file mode 100755
index 0000000..92e0a1f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vgrip_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_end.gif
new file mode 100755
index 0000000..8af01e7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_start.gif
new file mode 100755
index 0000000..dcc70f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_stretch.gif
new file mode 100755
index 0000000..3475ac7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_end.gif
new file mode 100755
index 0000000..8af01e7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip.gif
new file mode 100755
index 0000000..16173f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip_Down.gif
new file mode 100755
index 0000000..16173f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip_Over.gif
new file mode 100755
index 0000000..16173f9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_grip_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_end.gif
new file mode 100755
index 0000000..8af01e7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_start.gif
new file mode 100755
index 0000000..dcc70f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_stretch.gif
new file mode 100755
index 0000000..3475ac7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap.gif
new file mode 100755
index 0000000..03cb528
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_closed.gif
new file mode 100755
index 0000000..69f9643
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Down.gif
new file mode 100755
index 0000000..6e88ffc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Down_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Down_closed.gif
new file mode 100755
index 0000000..9d7c105
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Down_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Over.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Over.gif
new file mode 100755
index 0000000..de18c83
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Over.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Over_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Over_closed.gif
new file mode 100755
index 0000000..0d72823
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_snap_Over_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_start.gif
new file mode 100755
index 0000000..dcc70f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_stretch.gif
new file mode 100755
index 0000000..3475ac7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Splitbar/vsplit_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_end.gif
new file mode 100755
index 0000000..0400bff
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_start.gif
new file mode 100755
index 0000000..0b48865
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_stretch.gif
new file mode 100755
index 0000000..4065053
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_end.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_end.gif
new file mode 100755
index 0000000..7e4b4e5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_start.gif
new file mode 100755
index 0000000..eab6204
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_stretch.gif
new file mode 100755
index 0000000..6cf4c56
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_start.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_stretch.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/hsplit_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_end.gif
new file mode 100755
index 0000000..7d4bb4c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_start.gif
new file mode 100755
index 0000000..e8228d1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_stretch.gif
new file mode 100755
index 0000000..61e8d8d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_end.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_end.gif
new file mode 100755
index 0000000..c193813
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_start.gif
new file mode 100755
index 0000000..8bb061f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_stretch.gif
new file mode 100755
index 0000000..c3e9c43
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_start.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_stretch.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Stretchbar/vsplit_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_end.gif
new file mode 100755
index 0000000..aa108c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_end.png
new file mode 100755
index 0000000..34b3aba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_start.gif
new file mode 100755
index 0000000..aa108c4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_start.png
new file mode 100755
index 0000000..859d6fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_stretch.gif
new file mode 100755
index 0000000..8bd129f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_stretch.png
new file mode 100755
index 0000000..0b6deb5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/Tab.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/Tab.psd
new file mode 100755
index 0000000..ff0064a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/Tab.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_end.gif
new file mode 100755
index 0000000..55124e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_end.png
new file mode 100755
index 0000000..2547d66
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_start.gif
new file mode 100755
index 0000000..595a81e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_start.png
new file mode 100755
index 0000000..c020a65
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_stretch.gif
new file mode 100755
index 0000000..3884b69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_stretch.png
new file mode 100755
index 0000000..d9904e0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_end.gif
new file mode 100755
index 0000000..55124e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_end.png
new file mode 100755
index 0000000..448768b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_start.gif
new file mode 100755
index 0000000..595a81e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_start.png
new file mode 100755
index 0000000..aefbabb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_stretch.gif
new file mode 100755
index 0000000..3884b69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_stretch.png
new file mode 100755
index 0000000..8b11993
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_end.gif
new file mode 100755
index 0000000..55124e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_end.png
new file mode 100755
index 0000000..8508fd2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_end.gif
new file mode 100755
index 0000000..55124e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_end.png
new file mode 100755
index 0000000..bbc9307
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_start.gif
new file mode 100755
index 0000000..595a81e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_start.png
new file mode 100755
index 0000000..8bb6442
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_stretch.gif
new file mode 100755
index 0000000..3884b69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_stretch.png
new file mode 100755
index 0000000..065d980
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_end.gif
new file mode 100755
index 0000000..55124e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..b217afe
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_start.gif
new file mode 100755
index 0000000..595a81e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..efd56e7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_stretch.gif
new file mode 100755
index 0000000..3884b69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..49e3eb6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_end.gif
new file mode 100755
index 0000000..55124e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_end.png
new file mode 100755
index 0000000..c087281
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_start.gif
new file mode 100755
index 0000000..595a81e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_start.png
new file mode 100755
index 0000000..b8df57e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_stretch.gif
new file mode 100755
index 0000000..3884b69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_stretch.png
new file mode 100755
index 0000000..3e85d63
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_end.gif
new file mode 100755
index 0000000..55124e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_end.png
new file mode 100755
index 0000000..37aa36d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_end.gif
new file mode 100755
index 0000000..55124e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_end.png
new file mode 100755
index 0000000..15567ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_start.gif
new file mode 100755
index 0000000..595a81e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_start.png
new file mode 100755
index 0000000..f9150af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_stretch.gif
new file mode 100755
index 0000000..3884b69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..4a84a9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_start.gif
new file mode 100755
index 0000000..595a81e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_start.png
new file mode 100755
index 0000000..a077865
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_stretch.gif
new file mode 100755
index 0000000..3884b69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_stretch.png
new file mode 100755
index 0000000..29ba9a2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_start.gif
new file mode 100755
index 0000000..595a81e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_start.png
new file mode 100755
index 0000000..1c6d991
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_stretch.gif
new file mode 100755
index 0000000..3884b69
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_stretch.png
new file mode 100755
index 0000000..e38701a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/bottom/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_end.gif
new file mode 100755
index 0000000..ee9e6d4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_end.png
new file mode 100755
index 0000000..e6522af
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_start.gif
new file mode 100755
index 0000000..ee9e6d4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_start.png
new file mode 100755
index 0000000..e88146e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_stretch.gif
new file mode 100755
index 0000000..2799b45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_stretch.png
new file mode 100755
index 0000000..bb08577
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_end.gif
new file mode 100755
index 0000000..a78cff1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_end.png
new file mode 100755
index 0000000..aacec4c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_start.gif
new file mode 100755
index 0000000..400e1b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_start.png
new file mode 100755
index 0000000..3dc9a2e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_stretch.gif
new file mode 100755
index 0000000..e1eb002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_stretch.png
new file mode 100755
index 0000000..9e0be9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_end.gif
new file mode 100755
index 0000000..a78cff1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_end.png
new file mode 100755
index 0000000..95edaf7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_start.gif
new file mode 100755
index 0000000..400e1b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_start.png
new file mode 100755
index 0000000..2b17b4a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_stretch.gif
new file mode 100755
index 0000000..e1eb002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_stretch.png
new file mode 100755
index 0000000..c47d48b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_end.gif
new file mode 100755
index 0000000..a78cff1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_end.png
new file mode 100755
index 0000000..56d0eaa
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_end.gif
new file mode 100755
index 0000000..a78cff1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_end.png
new file mode 100755
index 0000000..92bb216
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_start.gif
new file mode 100755
index 0000000..400e1b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_start.png
new file mode 100755
index 0000000..764d2e4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_stretch.gif
new file mode 100755
index 0000000..e1eb002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_stretch.png
new file mode 100755
index 0000000..9bc819b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_end.gif
new file mode 100755
index 0000000..a78cff1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..0a3e84f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_start.gif
new file mode 100755
index 0000000..400e1b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..ba44c7d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_stretch.gif
new file mode 100755
index 0000000..e1eb002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..50274d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_end.gif
new file mode 100755
index 0000000..a78cff1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_end.png
new file mode 100755
index 0000000..a52710d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_start.gif
new file mode 100755
index 0000000..400e1b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_start.png
new file mode 100755
index 0000000..5819bb7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_stretch.gif
new file mode 100755
index 0000000..e1eb002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_stretch.png
new file mode 100755
index 0000000..0bf6f12
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_end.gif
new file mode 100755
index 0000000..a78cff1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_end.png
new file mode 100755
index 0000000..341bd2e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_end.gif
new file mode 100755
index 0000000..a78cff1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_end.png
new file mode 100755
index 0000000..b94a9dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_start.gif
new file mode 100755
index 0000000..400e1b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_start.png
new file mode 100755
index 0000000..5bb67c8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_stretch.gif
new file mode 100755
index 0000000..e1eb002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..844f908
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_start.gif
new file mode 100755
index 0000000..400e1b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_start.png
new file mode 100755
index 0000000..78045c0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_stretch.gif
new file mode 100755
index 0000000..e1eb002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_stretch.png
new file mode 100755
index 0000000..6d0f254
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_start.gif
new file mode 100755
index 0000000..400e1b0
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_start.png
new file mode 100755
index 0000000..0971568
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_stretch.gif
new file mode 100755
index 0000000..e1eb002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_stretch.png
new file mode 100755
index 0000000..1d880cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/left/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_end.gif
new file mode 100755
index 0000000..5de91f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_end.png
new file mode 100755
index 0000000..74c3e18
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_start.gif
new file mode 100755
index 0000000..5de91f8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_start.png
new file mode 100755
index 0000000..6f2dcf4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_stretch.gif
new file mode 100755
index 0000000..8bd129f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_stretch.png
new file mode 100755
index 0000000..386c62d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_end.gif
new file mode 100755
index 0000000..e0c4d7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_end.png
new file mode 100755
index 0000000..110e330
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_start.gif
new file mode 100755
index 0000000..23372ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_start.png
new file mode 100755
index 0000000..f408e44
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_stretch.gif
new file mode 100755
index 0000000..0f2a7ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_stretch.png
new file mode 100755
index 0000000..cbcb1f1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_end.gif
new file mode 100755
index 0000000..e0c4d7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_end.png
new file mode 100755
index 0000000..f43da0a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_start.gif
new file mode 100755
index 0000000..23372ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_start.png
new file mode 100755
index 0000000..5e0b050
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_stretch.gif
new file mode 100755
index 0000000..0f2a7ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_stretch.png
new file mode 100755
index 0000000..35c5f7d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_end.gif
new file mode 100755
index 0000000..e0c4d7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_end.png
new file mode 100755
index 0000000..ffcf21f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_end.gif
new file mode 100755
index 0000000..e0c4d7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_end.png
new file mode 100755
index 0000000..ab4a4cf
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_start.gif
new file mode 100755
index 0000000..23372ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_start.png
new file mode 100755
index 0000000..79d285d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_stretch.gif
new file mode 100755
index 0000000..0f2a7ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_stretch.png
new file mode 100755
index 0000000..442110c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_end.gif
new file mode 100755
index 0000000..e0c4d7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..ae645c5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_start.gif
new file mode 100755
index 0000000..23372ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..761273a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_stretch.gif
new file mode 100755
index 0000000..0f2a7ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..b82298f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_end.gif
new file mode 100755
index 0000000..e0c4d7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_end.png
new file mode 100755
index 0000000..86d241d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_start.gif
new file mode 100755
index 0000000..23372ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_start.png
new file mode 100755
index 0000000..dca0dc1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_stretch.gif
new file mode 100755
index 0000000..0f2a7ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_stretch.png
new file mode 100755
index 0000000..ecc6d62
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_end.gif
new file mode 100755
index 0000000..e0c4d7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_end.png
new file mode 100755
index 0000000..c15a2ce
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_end.gif
new file mode 100755
index 0000000..e0c4d7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_end.png
new file mode 100755
index 0000000..d8c679a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_start.gif
new file mode 100755
index 0000000..23372ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_start.png
new file mode 100755
index 0000000..07ef470
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_stretch.gif
new file mode 100755
index 0000000..0f2a7ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..3536366
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_start.gif
new file mode 100755
index 0000000..23372ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_start.png
new file mode 100755
index 0000000..1fd1070
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_stretch.gif
new file mode 100755
index 0000000..0f2a7ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_stretch.png
new file mode 100755
index 0000000..9ea681a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_start.gif
new file mode 100755
index 0000000..23372ea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_start.png
new file mode 100755
index 0000000..5cdadfb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_stretch.gif
new file mode 100755
index 0000000..0f2a7ef
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_stretch.png
new file mode 100755
index 0000000..83d8e86
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/right/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_end.gif
new file mode 100755
index 0000000..7df0a6c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_end.png
new file mode 100755
index 0000000..73ab119
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_start.gif
new file mode 100755
index 0000000..7df0a6c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_start.png
new file mode 100755
index 0000000..34c41db
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_stretch.gif
new file mode 100755
index 0000000..2799b45
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_stretch.png
new file mode 100755
index 0000000..4669781
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/baseline_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/Tab.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/Tab.psd
new file mode 100755
index 0000000..082f5c2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/Tab.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_end.gif
new file mode 100755
index 0000000..8792147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_end.png
new file mode 100755
index 0000000..5bb8385
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_start.gif
new file mode 100755
index 0000000..1972c9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_start.png
new file mode 100755
index 0000000..d0c8090
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_stretch.gif
new file mode 100755
index 0000000..e6c4f01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_stretch.png
new file mode 100755
index 0000000..2d6fd7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_end.gif
new file mode 100755
index 0000000..8792147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_end.png
new file mode 100755
index 0000000..5bb8385
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_start.gif
new file mode 100755
index 0000000..1972c9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_start.png
new file mode 100755
index 0000000..d0c8090
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_stretch.gif
new file mode 100755
index 0000000..e6c4f01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_stretch.png
new file mode 100755
index 0000000..2d6fd7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_end.gif
new file mode 100755
index 0000000..8792147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_end.png
new file mode 100755
index 0000000..5bb8385
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_end.gif
new file mode 100755
index 0000000..8792147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_end.png
new file mode 100755
index 0000000..5bb8385
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_start.gif
new file mode 100755
index 0000000..1972c9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_start.png
new file mode 100755
index 0000000..d0c8090
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_stretch.gif
new file mode 100755
index 0000000..e6c4f01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_stretch.png
new file mode 100755
index 0000000..2d6fd7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_end.gif
new file mode 100755
index 0000000..8792147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_end.png
new file mode 100755
index 0000000..f880bbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_start.gif
new file mode 100755
index 0000000..1972c9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_start.png
new file mode 100755
index 0000000..d324f4b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_stretch.gif
new file mode 100755
index 0000000..e6c4f01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_stretch.png
new file mode 100755
index 0000000..573b7c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_end.gif
new file mode 100755
index 0000000..8792147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_end.png
new file mode 100755
index 0000000..f880bbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_start.gif
new file mode 100755
index 0000000..1972c9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_start.png
new file mode 100755
index 0000000..d324f4b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_stretch.gif
new file mode 100755
index 0000000..e6c4f01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_stretch.png
new file mode 100755
index 0000000..573b7c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_end.gif
new file mode 100755
index 0000000..8792147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_end.png
new file mode 100755
index 0000000..f880bbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_end.gif
new file mode 100755
index 0000000..8792147
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_end.png
new file mode 100755
index 0000000..f880bbd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_start.gif
new file mode 100755
index 0000000..1972c9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_start.png
new file mode 100755
index 0000000..d324f4b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_stretch.gif
new file mode 100755
index 0000000..e6c4f01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_stretch.png
new file mode 100755
index 0000000..573b7c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_start.gif
new file mode 100755
index 0000000..1972c9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_start.png
new file mode 100755
index 0000000..d324f4b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_stretch.gif
new file mode 100755
index 0000000..e6c4f01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_stretch.png
new file mode 100755
index 0000000..573b7c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_start.gif
new file mode 100755
index 0000000..1972c9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_start.png
new file mode 100755
index 0000000..d0c8090
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_stretch.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_stretch.gif
new file mode 100755
index 0000000..e6c4f01
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_stretch.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_stretch.png
new file mode 100755
index 0000000..2d6fd7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Tab/top/tab_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/close.png
new file mode 100755
index 0000000..1294132
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/close_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/close_Disabled.png
new file mode 100755
index 0000000..89d8824
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/close_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker.gif
new file mode 100755
index 0000000..247b223
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker_Disabled.gif
new file mode 100755
index 0000000..a430b5e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker_Down.gif
new file mode 100755
index 0000000..078bc07
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hpicker_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_back.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_back.gif
new file mode 100755
index 0000000..1517bcd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_back.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Disabled_back.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Disabled_back.gif
new file mode 100755
index 0000000..cd08245
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Disabled_back.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Disabled_forward.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Disabled_forward.gif
new file mode 100755
index 0000000..9238487
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Disabled_forward.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Down_back.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Down_back.gif
new file mode 100755
index 0000000..4310404
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Down_back.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Down_forward.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Down_forward.gif
new file mode 100755
index 0000000..20c0bc6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_Down_forward.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_forward.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_forward.gif
new file mode 100755
index 0000000..8805430
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/hscroll_forward.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker.gif
new file mode 100755
index 0000000..203d726
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker_Disabled.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker_Disabled.gif
new file mode 100755
index 0000000..ad0bc68
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker_Disabled.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker_Down.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker_Down.gif
new file mode 100755
index 0000000..49ef148
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vpicker_Down.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_back.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_back.gif
new file mode 100755
index 0000000..69df1da
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_back.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Disabled_back.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Disabled_back.gif
new file mode 100755
index 0000000..b373e5c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Disabled_back.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Disabled_forward.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Disabled_forward.gif
new file mode 100755
index 0000000..afca5a7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Disabled_forward.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Down_back.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Down_back.gif
new file mode 100755
index 0000000..d1bb622
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Down_back.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Down_forward.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Down_forward.gif
new file mode 100755
index 0000000..422b843
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_Down_forward.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_forward.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_forward.gif
new file mode 100755
index 0000000..6d61276
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TabSet/vscroll_forward.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_end.png
new file mode 100755
index 0000000..bf0c751
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_start.png
new file mode 100755
index 0000000..f35d6de
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_stretch.png
new file mode 100755
index 0000000..e8acf13
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Disabled_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_end.png
new file mode 100755
index 0000000..bbe930b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_start.png
new file mode 100755
index 0000000..4c60405
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_stretch.png
new file mode 100755
index 0000000..003c93b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_end.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_end.png
new file mode 100755
index 0000000..94687a3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_start.png
new file mode 100755
index 0000000..b289630
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_stretch.png
new file mode 100755
index 0000000..192b248
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_end.png
new file mode 100755
index 0000000..716525d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_start.png
new file mode 100755
index 0000000..a4f2b4f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_stretch.png
new file mode 100755
index 0000000..d97c6f7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Down_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_end.png
new file mode 100755
index 0000000..2f4d744
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_end.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_end.png
new file mode 100755
index 0000000..29dd118
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_end.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_start.png
new file mode 100755
index 0000000..c5a4b9a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_stretch.png
new file mode 100755
index 0000000..32bf39f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_Over_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_start.png
new file mode 100755
index 0000000..db5a0b6
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_stretch.png
new file mode 100755
index 0000000..f5d75a8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_Selected_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_start.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_start.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_start.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_stretch.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_stretch.png
new file mode 100755
index 0000000..e360a3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/button/button_stretch.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hresizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hresizer.png
new file mode 100755
index 0000000..9be0689
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hresizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hresizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hresizer_Disabled.png
new file mode 100755
index 0000000..90bfa9e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hresizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hseparator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hseparator.png
new file mode 100755
index 0000000..4354d32
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hseparator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hseparator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hseparator_Disabled.png
new file mode 100755
index 0000000..a1c0416
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/hseparator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/resizer.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/resizer.png
new file mode 100755
index 0000000..c127941
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/resizer.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/resizer_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/resizer_Disabled.png
new file mode 100755
index 0000000..62d7be7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/resizer_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/separator.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/separator.png
new file mode 100755
index 0000000..5eced5f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/separator.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/separator_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/separator_Disabled.png
new file mode 100755
index 0000000..f560b29
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/ToolStrip/separator_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/checked.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/checked.png
new file mode 100755
index 0000000..e250606
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/checked.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_ancestor.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_ancestor.gif
new file mode 100755
index 0000000..83bef08
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_ancestor.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_end.gif
new file mode 100755
index 0000000..7b8c8a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_middle.gif
new file mode 100755
index 0000000..901e2e3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_single.gif
new file mode 100755
index 0000000..d4055ba
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_start.gif
new file mode 100755
index 0000000..8550f76
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_closed_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_end.gif
new file mode 100755
index 0000000..234dd5f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_middle.gif
new file mode 100755
index 0000000..ab20aa8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_end.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_end.gif
new file mode 100755
index 0000000..5d985e9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_end.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_middle.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_middle.gif
new file mode 100755
index 0000000..dcb2b73
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_middle.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_single.gif
new file mode 100755
index 0000000..edcc0fc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_start.gif
new file mode 100755
index 0000000..aaef342
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_opened_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_single.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_single.gif
new file mode 100755
index 0000000..3345081
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_single.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_start.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_start.gif
new file mode 100755
index 0000000..ece613b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/connector_start.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/file.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/file.gif
new file mode 100755
index 0000000..b941ae8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/file.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/file.png
new file mode 100755
index 0000000..da793cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_closed.gif
new file mode 100755
index 0000000..d29d968
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_closed.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_closed.png
new file mode 100755
index 0000000..caad126
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_closed.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_drop.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_drop.gif
new file mode 100755
index 0000000..f124855
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_drop.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_drop.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_drop.png
new file mode 100755
index 0000000..af9c5a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_drop.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_file.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_file.gif
new file mode 100755
index 0000000..287e5bc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_file.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_file.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_file.png
new file mode 100755
index 0000000..dff701f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_file.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_open.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_open.gif
new file mode 100755
index 0000000..8de17b7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_open.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_open.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_open.png
new file mode 100755
index 0000000..c5df8d8
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_open.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_up.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_up.gif
new file mode 100755
index 0000000..425063a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/folder_up.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_closed.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_closed_rtl.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_closed_rtl.gif
new file mode 100755
index 0000000..9761ae9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_closed_rtl.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_Disabled_closed.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_Disabled_closed.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_Disabled_closed.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_Disabled_opened.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_Disabled_opened.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_Disabled_opened.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_opened.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_opened.gif
new file mode 100755
index 0000000..8f7005e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_opened.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_opening.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_opening.gif
new file mode 100755
index 0000000..3745e55
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/opener_opening.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/sort_ascending.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/sort_ascending.gif
new file mode 100755
index 0000000..bf9160f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/sort_ascending.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/sort_descending.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/sort_descending.gif
new file mode 100755
index 0000000..b06bb85
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/sort_descending.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/TreeGrid.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/TreeGrid.psd
new file mode 100755
index 0000000..bdf2d54
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/TreeGrid.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/validation_error_icon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/validation_error_icon.png
new file mode 100755
index 0000000..56ad042
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/TreeGrid/validation_error_icon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close.png
new file mode 100755
index 0000000..dd2b486
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Disabled.png
new file mode 100755
index 0000000..123eb79
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Down.png
new file mode 100755
index 0000000..dfda9fd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Over.png
new file mode 100755
index 0000000..827b900
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/close_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse.png
new file mode 100755
index 0000000..8eb5172
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Disabled.png
new file mode 100755
index 0000000..ca45ee1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Down.png
new file mode 100755
index 0000000..4174afd
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Over.png
new file mode 100755
index 0000000..a92896a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/collapse_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit.png
new file mode 100755
index 0000000..ba61b29
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Disabled.png
new file mode 100755
index 0000000..76a94e3
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Down.png
new file mode 100755
index 0000000..96a33b9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Over.png
new file mode 100755
index 0000000..4d90002
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/edit_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand.png
new file mode 100755
index 0000000..90177dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Disabled.png
new file mode 100755
index 0000000..b9c8355
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Down.png
new file mode 100755
index 0000000..9a407cc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Over.png
new file mode 100755
index 0000000..a0340a1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/expand_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient.gif
new file mode 100755
index 0000000..9aa23b5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient.psd
new file mode 100755
index 0000000..380e60b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient_hilite.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient_hilite.gif
new file mode 100755
index 0000000..599910c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerGradient_hilite.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerIcon.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerIcon.png
new file mode 100755
index 0000000..3241778
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/headerIcon.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help.png
new file mode 100755
index 0000000..0b2c22a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Disabled.png
new file mode 100755
index 0000000..845347f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Down.png
new file mode 100755
index 0000000..73d4db1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Over.png
new file mode 100755
index 0000000..8afd004
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/help_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize.png
new file mode 100755
index 0000000..c2de3ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Disabled.png
new file mode 100755
index 0000000..215305e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Down.png
new file mode 100755
index 0000000..1af249c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Over.png
new file mode 100755
index 0000000..8382066
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/maximize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize.png
new file mode 100755
index 0000000..79938e1
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Disabled.png
new file mode 100755
index 0000000..93aa036
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Down.png
new file mode 100755
index 0000000..3f94cec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Over.png
new file mode 100755
index 0000000..1577822
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/minimize_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin.png
new file mode 100755
index 0000000..2e78138
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Disabled.png
new file mode 100755
index 0000000..64deb11
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Down.png
new file mode 100755
index 0000000..108f35c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Over.png
new file mode 100755
index 0000000..4499629
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/pin_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/resizer.gif b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/resizer.gif
new file mode 100755
index 0000000..5252a25
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/resizer.gif differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore.png
new file mode 100755
index 0000000..af025d5
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Disabled.png
new file mode 100755
index 0000000..fd09b99
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Down.png
new file mode 100755
index 0000000..2c3568d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Over.png
new file mode 100755
index 0000000..cab81b4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/restore_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree.png
new file mode 100755
index 0000000..15c235c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Disabled.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Disabled.png
new file mode 100755
index 0000000..1197a6e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Disabled.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Down.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Down.png
new file mode 100755
index 0000000..df6a96a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Down.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Over.png b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Over.png
new file mode 100755
index 0000000..20308be
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/tree_Over.png differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/Window.psd b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/Window.psd
new file mode 100755
index 0000000..a055f3d
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/images/Window/Window.psd differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/load_skin.js b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/load_skin.js
new file mode 100755
index 0000000..4c99bac
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/load_skin.js
@@ -0,0 +1,615 @@
+/*============================================================
+ "SmartClient" theme programmatic settings
+ SmartClient v5.5
+ Copyright 2001-2007, Isomorphic Software
+============================================================*/
+
+
+isc.loadSkin = function (theWindow) {
+if (theWindow == null) theWindow = window;
+with (theWindow) {
+
+
+//----------------------------------------
+// Specify skin directory
+//----------------------------------------
+ // must be relative to your application file or isomorphicDir
+ isc.Page.setSkinDir("[ISOMORPHIC]/skins/SmartClient/")
+
+
+//----------------------------------------
+// Load skin style sheet(s)
+//----------------------------------------
+ isc.Page.loadStyleSheet("[SKIN]/skin_styles.css", theWindow)
+
+
+
+//============================================================
+// Component Skinning
+//============================================================
+// 1) Scrollbars
+// 2) Buttons
+// 3) Resizebars
+// 4) Sections
+// 5) Progressbars
+// 6) TabSets
+// 7) Windows
+// 8) Dialogs
+// 9) Pickers
+// 10) Menus
+// 11) Hovers
+// 12) ListGrids
+// 13) TreeGrids
+// 14) Form controls
+// 15) Drag & Drop
+// 16) Edges
+// 17) Sliders
+//============================================================
+
+
+//----------------------------------------
+// 1) Scrollbars
+//----------------------------------------
+ isc.Canvas.addProperties({
+ showCustomScrollbars:true
+ });
+
+ if(isc.Browser.isIE && isc.Browser.version >= 7) {
+ isc.Canvas.setAllowExternalFilters(false);
+ isc.Canvas.setNeverUseFilters(true);
+ if(isc.Window) {
+ isc.Window.addProperties({
+ modalMaskOpacity:null,
+ modalMaskStyle:"normal"
+ });
+ isc.Window.changeDefaults("modalMaskDefaults", { src : "[SKIN]opacity.png" });
+
+ // Dialog (prompt) shows no header in edge media - ensure message is centered.
+ isc.Dialog.changeDefaults("bodyDefaults",
+ {layoutTopMargin:15, layoutLeftMargin:15, layoutRightMargin:15, layoutBottomMargin:15});
+ isc.Dialog.changeDefaults("messageStackDefaults",
+ {layoutMargin:10, layoutBottomMargin:10});
+
+ isc.addProperties(isc.Dialog.Prompt.bodyDefaults,
+ {layoutTopMargin:15, layoutBottomMargin:15, layoutLeftMargin:15, layoutRightMargin:15});
+ isc.addProperties(isc.Dialog.Prompt.messageStackDefaults,
+ {layoutMargin:10, layoutBottomMargin:10});
+
+ }
+ }
+
+ isc.ScrollThumb.addProperties({
+ capSize:9
+ })
+ isc.Scrollbar.addProperties({
+ allowThumbDownState:true,
+ thumbMinSize:19,
+ thumbOverlap:0
+ })
+
+
+//----------------------------------------
+// 2) Buttons
+//----------------------------------------
+
+ // "IButton" is the new standard button class for SmartClient applications. Application
+ // code should use IButton instead of Button for all standalone buttons. Other skins may
+ // map IButton directly to Button, so this single class will work everywhere. Button remains
+ // for internal and advanced uses (eg if you need to mix both CSS-based and image-based
+ // standalone buttons in the same application).
+ isc.defineClass("IButton", "StretchImgButton").addProperties({
+ src:"[SKIN]button/button.png",
+ height:20,
+ width:100,
+ capSize:6,
+ vertical:false,
+ titleStyle:"headerTitle"
+ });
+
+ isc.defineClass("IAutoFitButton", "IButton").addProperties({
+ autoFit: true,
+ autoFitDirection: isc.Canvas.HORIZONTAL
+ });
+ if (isc.IButton.markAsFrameworkClass != null) isc.IButton.markAsFrameworkClass();
+ if (isc.IAutoFitButton.markAsFrameworkClass != null) isc.IAutoFitButton.markAsFrameworkClass();
+
+
+ if (isc.IMenuButton) {
+ isc.IMenuButton.addProperties({
+ src:"[SKIN]button/button.png",
+ capSize:6,
+ vertical:false,
+ titleStyle:"headerTitle"
+ });
+ if (isc.IMenuButton.markAsFrameworkClass != null) isc.IMenuButton.markAsFrameworkClass();
+
+ }
+
+
+
+//----------------------------------------
+// 3) Resizebars
+//----------------------------------------
+ // StretchImgSplitbar class renders as resize bar with
+ // end caps, body, grip
+ isc.StretchImgSplitbar.addProperties({
+ // modify vSrc / hSrc for custom appearance
+ //vSrc:"[SKIN]vsplit.gif",
+ //hSrc:"[SKIN]hsplit.gif",
+ capSize:10,
+ showGrip:true
+ })
+
+ // ImgSplitbar renders as resizebar with resize grip only
+ isc.ImgSplitbar.addProperties({
+ // modify these properties for custom appearance
+ //vSrc:"[SKIN]vgrip.png",
+ //hSrc:"[SKIN]hgrip.png",
+ //showDown:true,
+ //styleName:"splitbar"
+ })
+ isc.Layout.addProperties({
+ resizeBarSize:10,
+ // Use the Snapbar as a resizeBar by default - subclass of Splitbar that
+ // shows interactive (closed/open) grip images
+ // Other options include the Splitbar, StretchImgSplitbar or ImgSplitbar
+ resizeBarClass:"Snapbar"
+ })
+
+
+//----------------------------------------
+// 4) Sections
+//----------------------------------------
+ if (isc.SectionItem) {
+ isc.SectionItem.addProperties({
+ sectionHeaderClass:"ImgSectionHeader",
+ height:23
+ })
+ }
+ if (isc.SectionStack) {
+ isc.SectionStack.addProperties({
+ sectionHeaderClass:"ImgSectionHeader",
+ headerHeight:23
+ })
+ isc.ImgSectionHeader.changeDefaults("backgroundDefaults", {
+ showRollOver:false,
+ showDown:false,
+ showDisabledIcon:true,
+ src:"[SKIN]SectionHeader/header.png",
+ icon:"[SKIN]SectionHeader/opener.png",
+ capSize:6,
+ titleStyle:"imgSectionHeaderTitle",
+ baseStyle:"imgSectionHeader" // could set backgroundColor here instead
+ })
+ }
+
+
+//----------------------------------------
+// 5) Progressbars
+//----------------------------------------
+ if (isc.Progressbar) {
+ isc.Progressbar.addProperties({
+ horizontalItems: [
+ {name:"bar_start",size:3},
+ {name:"bar_stretch",size:0},
+ {name:"bar_end",size:4},
+ {name:"empty_start",size:2},
+ {name:"empty_stretch",size:0},
+ {name:"empty_end",size:2}
+ ],
+ breadth:12
+ })
+ }
+
+
+//----------------------------------------
+// 6) TabSets
+//----------------------------------------
+ if (isc.TabSet) {
+ isc.TabSet.addProperties({
+ tabBarThickness:28,
+ paneContainerClassName:"normal",
+ showPaneContainerEdges:true
+ });
+ isc.TabSet.changeDefaults("paneContainerDefaults", {
+ edgeSize:4,
+ edgeImage:"[SKIN]/rounded/raised/FFFFFF/4.png",
+ backgroundColor:"#C7C7C7"
+ })
+ isc.TabBar.addProperties({
+ // keep the tabs from reaching the curved edge of the pane (regardless of align)
+ layoutStartMargin:10,
+ layoutEndMargin:10,
+
+ // have the baseline overlap the top edge of the TabSet, using rounded media
+ baseLineSrc:"[SKIN]baseline.png",
+ baseLineThickness:4,
+ baseLineCapSize:4
+ })
+ }
+ if (isc.ImgTab) {
+ isc.ImgTab.addProperties({
+ src:"[SKIN]tab.png",
+ showRollOver:true,
+
+ titleStyle:"tabTitle",
+ capSize:4
+ })
+ }
+
+
+//----------------------------------------
+// 7) Windows
+//----------------------------------------
+ if (isc.Window) {
+
+ isc.Window.addProperties({
+ // rounded frame edges
+ showEdges:true,
+ customEdges:["T","B","L","R"],
+ edgeSize:6,
+ edgeImage:"[SKIN]/rounded/frame/A3B2CC/6.png",
+ // clear backgroundColor and style since corners are rounded
+ backgroundColor:null,
+
+ styleName:"normal",
+ edgeCenterBackgroundColor:"white",
+ bodyColor:"white",
+ // to float the header over the top edge and make it transparent:
+ /*
+ edgeOffsetTop:0,
+ showHeaderBackground:false,
+ headerStyle:null,
+ hiliteHeaderStyle:null,
+ */
+
+ layoutMargin:0,
+ membersMargin:0,
+ showFooter:false,
+ showShadow:true,
+ shadowDepth:6
+ })
+
+ isc.Window.changeDefaults("headerDefaults", {
+ layoutMargin:2,
+ height:24,
+ top:6
+ })
+ isc.Window.changeDefaults("headerIconDefaults", {
+ width:16,
+ height:16,
+ layoutAlign:"center",
+ src:"[SKIN]/Window/headerIcon.png"
+ })
+ isc.Window.changeDefaults("restoreButtonDefaults", {
+ src:"[SKIN]/Window/restore.png",
+ showRollOver:true,
+ width:18,
+ height:18
+ })
+ isc.Window.changeDefaults("closeButtonDefaults", {
+ src:"[SKIN]/Window/close.png",
+ showRollOver:true,
+ width:18,
+ height:18
+ })
+ isc.Window.changeDefaults("maximizeButtonDefaults", {
+ src:"[SKIN]/Window/maximize.png",
+ showRollOver:true,
+ width:18,
+ height:18
+ })
+ isc.Window.changeDefaults("minimizeButtonDefaults", {
+ src:"[SKIN]/Window/minimize.png",
+ showRollOver:true,
+ width:18,
+ height:18
+ })
+ isc.Window.changeDefaults("toolbarDefaults", {
+ buttonConstructor: "IButton"
+ })
+
+//----------------------------------------
+// 8) Dialogs
+//----------------------------------------
+ if (isc.Dialog) {
+ // even though Dialog inherits from Window, we need a separate changeDefaults block
+ // because Dialog defines its own toolbarDefaults
+ isc.Dialog.changeDefaults("toolbarDefaults", {
+ buttonConstructor: "IButton",
+ height:40, // 10px margins + 20px button
+ membersMargin:10
+ })
+ if (isc.Dialog.Warn && isc.Dialog.Warn.toolbarDefaults) {
+ isc.addProperties(isc.Dialog.Warn.toolbarDefaults, {
+ buttonConstructor: "IButton",
+ height:40,
+ membersMargin:10
+ })
+ }
+ }
+
+ } // end isc.Window
+
+
+//----------------------------------------
+// 9) Pickers
+//----------------------------------------
+ // add bevels and shadows to all pickers
+ isc.__pickerDefaults = {
+ showEdges:true,
+ edgeSize:6,
+ edgeImage:"[SKIN]/rounded/frame/FFFFFF/6.png",
+ //edgeShowCenter: true, // not available for ridge edges
+ backgroundColor:"#C7C7C7",
+ showShadow:true,
+ shadowDepth:6,
+ shadowOffset:5
+ }
+ if (isc.FormItem) {
+ isc.FormItem.changeDefaults("pickerDefaults", isc.__pickerDefaults)
+ }
+ if (isc.DateChooser) {
+ isc.DateChooser.addProperties(isc.__pickerDefaults, {
+ showDoubleYearIcon:false,
+ skinImgDir:"images/DateChooser/"
+ })
+
+ }
+ if (isc.MultiFilePicker) {
+ isc.MultiFilePicker.addProperties({
+ backgroundColor:"#C7C7C7"
+ })
+ }
+ if (isc.RelationPicker) {
+ isc.RelationPicker.addProperties({
+ backgroundColor:"#C7C7C7"
+ })
+ }
+
+
+
+//----------------------------------------
+// 10) Menus
+//----------------------------------------
+ if (isc.Menu) {
+ isc.Menu.addProperties({
+ // Increase cellHeight to accomodate text + borders in "over" state.
+ cellHeight:25,
+ showShadow:true,
+ shadowDepth:5,
+ showEdges:true,
+ edgeSize:4,
+ edgeImage:"[SKIN]/square/raised/FFFFFF/4.png",
+ edgeShowCenter:true,
+ // get rid of everything that could occlude center segment:
+ // borders around table
+ tableStyle:"normal",
+ // XXX unreachable from CSS
+ bodyBackgroundColor:"transparent"
+ // also: non-rollover cell styles for menu need to avoid setting bgColor
+ // for square/tinted edges only:
+ //edgeBackgroundColor:"#fff0ff"
+ }
+ )}
+
+
+//----------------------------------------
+// 11) Hovers
+//----------------------------------------
+ if (isc.Hover) {
+ isc.addProperties(isc.Hover.hoverCanvasDefaults, {
+ showShadow:true,
+ shadowDepth:5
+ })
+ }
+
+
+//----------------------------------------
+// 12) ListGrids
+//----------------------------------------
+ if (isc.ListGrid) {
+ isc.ListGrid.addProperties({
+ // Render header buttons out as StretchImgButtons
+ headerButtonConstructor:"StretchImgButton",
+ sorterConstructor:"StretchImgButton",
+ headerMenuButtonConstructor:"StretchImgButton",
+
+ backgroundColor:"#CCCCCC",
+ headerBackgroundColor:"#CCCCCC",
+ headerHeight:21,
+ headerBaseStyle:"headerButton", // bgcolor tint and borders
+ headerTitleStyle:"headerTitle",
+
+ headerBarStyle:"headerBar",
+ bodyStyleName:"gridBody",
+
+ summaryRowStyle:"gridSummaryCell",
+ groupSummaryStyle:"groupSummaryCell",
+
+ headerMenuButtonBaseStyle:"headerButton",
+ headerMenuButtonTitleStyle:"headerTitle",
+
+ expansionFieldImageWidth : 16,
+ expansionFieldImageHeight : 16
+
+ //,groupIcon:"[SKINIMG]/TreeGrid/folder.png"
+ })
+ isc.ListGrid.changeDefaults("sorterDefaults", {
+ capSize:5, // scaling down from 12; using GIFs
+ labelHPad:4, // arrow image needs to overlap the end caps to fit
+ // baseStyle / titleStyle is auto-assigned from headerBaseStyle
+ src:"[SKIN]ListGrid/header.gif"
+ })
+ isc.ListGrid.changeDefaults("headerButtonDefaults", {
+ capSize:5, // scaling down from 12; using GIFs
+ // baseStyle / titleStyle is auto-assigned from headerBaseStyle
+ src:"[SKIN]ListGrid/header.gif"
+ })
+ isc.ListGrid.changeDefaults("headerMenuButtonDefaults", {
+ capSize:5,
+ labelHPad:4,
+ src:"[SKIN]ListGrid/header.gif"
+ })
+ isc.ListGrid.changeDefaults("summaryRowDefaults", {
+ bodyBackgroundColor:null,
+ bodyStyleName:"summaryRowBody"
+ });
+
+ }
+
+//----------------------------------------
+// 13) TreeGrids
+//----------------------------------------
+ if (isc.TreeGrid) {
+ isc.TreeGrid.addProperties({
+ folderIcon:"[SKIN]folder.png",
+ nodeIcon:"[SKIN]file.png",
+ manyItemsImage:"[SKIN]folder_file.png"
+ })
+ }
+ if (isc.ColumnTree) {
+ isc.ColumnTree.addProperties({
+ folderIcon:"[SKIN]folder.png",
+ nodeIcon:"[SKIN]file.png"
+ });
+ }
+
+
+//----------------------------------------
+// 14) Form controls
+//----------------------------------------
+ if (isc.FormItem) {isc.FormItem.addProperties({
+ defaultIconSrc:"[SKIN]/controls/helper_control.gif",
+ iconHeight:18,
+ iconWidth:18,
+ iconVAlign:"middle"
+ })}
+
+ if (isc.TextItem) {isc.TextItem.addProperties({
+ height:isc.Browser.isSafari ? 22 : 20
+ })}
+
+ if (isc.SelectItem) {isc.SelectItem.addProperties({
+ pickerIconSrc:"[SKIN]/controls/dropdown_control_inside.gif",
+ height:20
+ })}
+
+ if (isc.ComboBoxItem) {isc.ComboBoxItem.addProperties({
+ pickerIconSrc:"[SKIN]/controls/dropdown_control.gif",
+ pendingTextBoxStyle:"comboBoxItemPendingText",
+ height:20, // pickerIcon automatically sizes to this height
+ pickerIconWidth:17
+ })}
+ // used by SelectItem and ComboBoxItem for picklist
+ if (isc.ScrollingMenu) {isc.ScrollingMenu.addProperties({
+ border:"1px solid #606060",
+ showShadow:true,
+ shadowDepth:5
+ })}
+ if (isc.DateItem) {
+ isc.DateItem.addProperties({
+ pickerIconWidth:19,
+ pickerIconHeight:16,
+ pickerIconSrc:"[SKIN]/controls/date_control.png"
+ })
+ }
+ if (isc.SpinnerItem) {
+ isc.SpinnerItem.addProperties({
+ height:20
+ })
+ isc.SpinnerItem.INCREASE_ICON = isc.addProperties(isc.SpinnerItem.INCREASE_ICON, {
+ width:17,
+ height:10,
+ src:"[SKIN]/controls/spinner_control_increase.gif"
+ })
+ isc.SpinnerItem.DECREASE_ICON = isc.addProperties(isc.SpinnerItem.DECREASE_ICON, {
+ width:17,
+ height:10,
+ src:"[SKIN]/controls/spinner_control_decrease.gif"
+ })
+ }
+ if (isc.PopUpTextAreaItem) {isc.PopUpTextAreaItem.addProperties({
+ popUpIconSrc: "[SKIN]/controls/text_control.gif",
+ popUpIconWidth:16,
+ popUpIconHeight:16
+ })}
+ if (isc.ButtonItem && isc.IButton) {isc.ButtonItem.addProperties({
+ buttonConstructor:isc.IButton
+ })}
+
+ if (isc.ToolbarItem && isc.IAutoFitButton) {isc.ToolbarItem.addProperties({
+ buttonConstructor:isc.IAutoFitButton,
+ buttonProperties: {
+ autoFitDirection: isc.Canvas.BOTH
+ }
+ })}
+ // Native FILE INPUT items are rendered differently in Safari from other browsers
+ // Don't show standard textbox styling around them as it looks odd
+ if (isc.UploadItem && isc.Browser.isSafari) {
+ isc.UploadItem.addProperties({
+ textBoxStyle:"normal"
+ });
+ }
+
+
+
+//----------------------------------------
+// 15) Drag & Drop
+//----------------------------------------
+ // drag tracker drop shadow (disabled by default because many trackers are irregular shape)
+ //isc.addProperties(isc.EH.dragTrackerDefaults, {
+ // showShadow:true,
+ // shadowDepth:4
+ //});
+ // drag target shadow and opacity
+ isc.EH.showTargetDragShadow = true;
+ isc.EH.targetDragOpacity = 50;
+
+
+
+//----------------------------------------
+// 16) Edges
+//----------------------------------------
+ // default edge style serves as a pretty component frame/border - just set showEdges:true
+ if (isc.EdgedCanvas) {
+ isc.EdgedCanvas.addProperties({
+ edgeSize:6,
+ edgeImage:"[SKIN]/rounded/frame/FFFFFF/6.png"
+ })
+ }
+
+
+//----------------------------------------
+// 17) Sliders
+//----------------------------------------
+ if (isc.Slider) {
+ isc.Slider.addProperties({
+ thumbThickWidth:24,
+ thumbThinWidth:14,
+ trackWidth:6,
+ trackCapSize:6,
+ thumbSrc:"thumb.png",
+ trackSrc:"track.png"
+ })
+ }
+
+// ----------------------------------------
+// 18) Calendar
+//----------------------------------------
+ if (isc.Calendar) {
+ isc.Calendar.changeDefaults("datePickerButtonDefaults", {
+ showDown:false,
+ showOver : false,
+ src:"[SKIN]/DynamicForm/date_control.png"
+ });
+ }
+
+// specify where the browser should redirect if not supported
+isc.Page.checkBrowserAndRedirect("[SKIN]/unsupported_browser.html");
+
+} // end with()
+} // end loadSkin()
+
+isc.loadSkin()
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/load_skin.js.gz b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/load_skin.js.gz
new file mode 100755
index 0000000..daafd4f
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/load_skin.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/skin_styles.css b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/skin_styles.css
new file mode 100755
index 0000000..c173651
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/skin_styles.css
@@ -0,0 +1,1872 @@
+/*============================================================
+ "SmartClient" theme CSS styles
+ Copyright 2001 and beyond, Isomorphic Software
+
+ :: Contents ::
+
+ 1) General
+ default text
+ default border
+ drop indicator
+ hover canvas
+ 2) Buttons
+ Button
+ ImgButton
+ StretchImgButton
+ 3) Menu
+ MenuButton
+ 4) Window
+ Dialog
+ 5) Layout
+ drop line
+ drag placeholder
+ splitbar (resizebar)
+ 6) TabSet
+ tab titles
+ 7) SectionStack
+ image SectionHeaders
+ CSS SectionHeaders
+ 8) Forms
+ general
+ headerItem
+ text items
+ selectItem
+ checkbox & radioButton
+ ColorChooser
+ DateChooser
+ 9) Slider & Rangebar
+ 10) DetailViewer
+ 11) ListGrid
+ parts
+ headers
+ cells
+ 12) ToolStrip
+ 12a) ToolStripGroup and IconButton
+ 13) TileGrid
+ ------------
+ internal/unused styles
+============================================================*/
+
+/*
+
+*/
+
+
+
+/*============================================================
+ 1) General
+============================================================*/
+
+/* default text */
+.normal {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+}
+
+.defaultBorder {
+ border:1px solid #606060;
+}
+
+/* drag outline */
+.dragOutline {
+ border:1px dashed #6600FF;
+}
+
+/* drop indicator */
+.dropBorder {
+ background-color:#808080;
+}
+
+
+/* hover canvas */
+.canvasHover,
+.gridHover,
+.formHover {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#FFFFD0; border:1px solid #808080; padding:5px;
+}
+
+/* group label */
+.groupLabel {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ padding-left:5px; padding-right:5px;
+}
+/*============================================================
+ 2) Button
+ button.baseStyle
+ buttonStrip.baseStyle
+ buttonTable.baseButtonStyle
+ listBar.labelStyle
+ listGrid.headerBaseStyle (not in this skin)
+============================================================*/
+.button,
+.buttonOver,
+.buttonDown,
+.buttonDisabled,
+.buttonSelected,
+.buttonSelectedDown,
+.buttonSelectedOver,
+.buttonSelectedDisabled {
+ padding:2px;
+ font-family:Tahoma,Verdana, Bitstream Vera Sans, sans-serif; font-size:10px; font-weight:bold;
+ background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#AAAAAA, endColorStr=#EEEEEE)";
+}
+
+.buttonOver,
+.buttonSelectedOver {
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid white; border-bottom:1px solid white;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#EEEEEE, endColorStr=#AAAAAA)";
+}
+.buttonDown {
+ background-color:#AAAAAA;
+ border-left:1px solid #666666; border-top:1px solid #666666;
+ border-right:1px solid white; border-bottom:1px solid white;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#CCCCCC, endColorStr=#888888)";
+}
+.buttonDisabled {
+ color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-top:1px solid #CCCCCC;
+ border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#888888, endColorStr=#CCCCCC)";
+}
+.buttonSelected,
+.buttonSelectedDown,
+.buttonSelectedDisabled {
+ color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#1C4190, endColorStr=#5F97D5)";
+}
+.buttonSelectedOver {
+ color:orange;
+ background-color:#3E74B3;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#5F97D5, endColorStr=#1C4190)";
+}
+.buttonSelectedDisabled {
+ color:#666666;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#CCCCCC, endColorStr=#888888)";
+}
+
+
+/* ImgButton */
+.imgButton,
+.imgButtonOver,
+.imgButtonSelected,
+.imgButtonSelectedDisabled,
+.imgButtonSelectedOver,
+.imgButtonDown,
+.imgButtonSelectedDown,
+.imgButtonDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:10px;
+}
+.imgButtonDisabled {
+ color:#666666;
+}
+
+/* StretchImgButton */
+.stretchImgButton,
+.stretchImgButtonSelected,
+.stretchImgButtonSelectedOver,
+.stretchImgButtonOver,
+.stretchImgButtonDown,
+.stretchImgButtonSelectedDown,
+.stretchImgButtonSelectedDisabled,
+.stretchImgButtonDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:10px;
+}
+.stretchImgButtonOver {
+ font-weight:bold;
+}
+.stretchImgButtonSelectedDisabled,
+.stretchImgButtonDisabled {
+ color:#666666;
+}
+
+
+
+/*============================================================
+ 3) Menus
+============================================================
+ */
+
+.menuTable {
+ border-top:2px outset white; border-bottom:2px outset white;
+ border-left:2px outset white; border-right:2px outset white;
+}
+.menu,
+.menuSelected,
+.menuOver,
+.menuSelectedOver,
+.menuDisabled,
+.treeMenuSelected,
+.treeMenuSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ background-color:transparent;
+ padding-top:2px; padding-bottom:2px;
+}
+.menu,
+.menuSelected {
+ padding-top:3px; padding-bottom:3px;
+}
+.menuOver,
+.menuSelectedOver {
+ color:white; background-color:#3E74B3;
+ border-top:1px solid #5E94D3; border-bottom:1px solid #1E5493;
+}
+.treeMenuSelected {
+ color:black; background-color:#A9B2CA;
+ border-top:1px solid #A9B2CA; border-bottom:1px solid #A9B2CA;
+}
+.treeMenuSelectedOver {
+ color:white; background-color:#0A246A;
+ border-top:1px solid #0A246A; border-bottom:1px solid #0A246A;
+}
+.menuDisabled {
+ color:#999999;
+ border-top:1px transparent; border-bottom:1px transparent;
+}
+
+/* menu header buttons */
+.menuButton,
+.menuButtonOver,
+.menuButtonDown,
+.menuButtonDisabled,
+.menuButtonSelected,
+.menuButtonSelectedDown,
+.menuButtonSelectedOver,
+.menuButtonSelectedDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+ padding-left:4px; padding-right:4px;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#CCCCCC, endColorStr=#888888)";
+}
+.menuButton {
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#AAAAAA, endColorStr=#EEEEEE)";
+}
+.menuButtonOver {
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid white; border-bottom:1px solid white;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#EEEEEE, endColorStr=#AAAAAA)";
+}
+.menuButtonDown {
+ background-color:#AAAAAA;
+ border-left:1px solid #666666; border-top:1px solid #666666;
+ border-right:1px solid white; border-bottom:1px solid white;
+}
+.menuButtonDisabled {
+ color:#666666;
+ border-left:1px solid #CCCCCC; border-top:1px solid #CCCCCC;
+ border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;
+}
+.menuButtonSelected,
+.menuButtonSelectedDown,
+.menuButtonSelectedOver,
+.menuButtonSelectedDisabled {
+ font-size:11px; color:white; font-weight:bold;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+}
+.menuButtonSelectedOver {
+ color:orange;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid white; border-bottom:1px solid white;
+}
+.menuButtonSelectedDisabled {
+ font-size:11px; color:#666666;
+}
+
+
+
+/*============================================================
+ 4) Window
+ window.styleName - windowBackground
+ window.bodyStyle - windowBody
+ window.headerStyle - windowHeader
+ window.hiliteHeaderStyle - windowHeaderHilite
+ window.headerLabelDefaults.styleName - windowHeaderText
+ window.statusBarDefaults.styleName - windowStatusBar
+
+ Dialog
+ dialog.styleName - dialogBackground
+ dialog.bodyStyle - dialogBody
+ dialog.headerStyle - dialogHeader
+ dialog.hiliteHeaderStyle - dialogHeaderHilite
+ dialog.headerLabelDefaults.styleName - dialogHeaderText
+============================================================*/
+
+.windowBackground,
+.dialogBackground {}
+
+.windowBody,
+.dialogBody {
+ border-top:2px solid #444967;
+}
+.promptBody {
+}
+
+.windowHeader,
+.dialogHeader {
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#444967, endColorStr=#B0B8CA)";
+}
+
+.windowHeaderHilite,
+.dialogHeaderHilite {
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#8289A6, endColorStr=#D0D8EA)";
+}
+
+.windowHeaderText,
+.dialogHeaderText {
+ font-family:Tahoma,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#FFFFFF;
+ font-weight:bold;
+ padding-left:2px; padding-right:2px;
+}
+.windowStatusBar {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ border-top: 1px solid #999999; border-left: 1px solid #999999;
+ border-right: 1px solid #FFFFFF; border-bottom: 1px solid #FFFFFF;
+}
+.dialogHeaderText {
+ color:#EEEEEE;
+}
+.modalMask {
+ background-color:black;
+}
+
+/*============================================================
+ 5) Layout
+============================================================*/
+
+.layoutDropLine {
+ background-color:#3366FF;
+
+}
+.layoutPlaceHolder {
+ border:1px solid black;
+}
+.splitbar {
+
+}
+.splitbarDown {
+ border:1px solid black;
+}
+
+/*============================================================
+ 6) TabSet and tab titles
+============================================================*/
+
+.tabSetContainer {
+ background-color: #D6D6D6;
+ border-left:1px solid white; border-top:1px solid white;
+ border-right:1px solid #636363; border-bottom:1px solid #636363;
+}
+.tab,
+.tabOver,
+.tabSelected,
+.tabSelectedOver,
+.tabDown,
+.tabSelectedDown,
+.tabSelectedDisabled,
+.tabDisabled {
+ font-family:Bitstream Vera Sans,Helvetica,Verdana,sans-serif; font-size:11px;
+}
+
+.tabTitle,
+.tabTitleDown,
+.tabTitleOver,
+.tabTitleDisabled,
+.tabTitleSelected,
+.tabTitleSelectedDown,
+.tabTitleSelectedOver,
+.tabTitleSelectedDisabled,
+.vtabTitle,
+.vtabTitleDown,
+.vtabTitleOver,
+.vtabTitleDisabled,
+.vtabTitleSelected,
+.vtabTitleSelectedDown,
+.vtabTitleSelectedOver,
+.vtabTitleSelectedDisabled {
+ font-family:Tahoma,Verdana, Bitstream Vera Sans, sans-serif; font-size:10px;
+ font-weight:bold;
+}
+.tabTitle,
+.tabTitleDown,
+.tabTitleOver,
+.tabTitleDisabled {
+ padding-top:2px;
+}
+.tabTitleSelected,
+.tabTitleSelectedDown,
+.tabTitleSelectedOver,
+.tabTitleSelectedDisabled {
+ padding-bottom:2px;
+}
+.vtabTitle,
+.vtabTitleDown,
+.vtabTitleOver,
+.vtabTitleDisabled {
+ padding-left:2px;
+}
+.vtabTitleSelected,
+.vtabTitleSelectedDown,
+.vtabTitleSelectedOver,
+.vtabTitleSelectedDisabled {
+ padding-right:2px;
+}
+.tabTitleOver,
+.tabTitleSelectedOver,
+.vtabTitleOver,
+.vtabTitleSelectedOver {
+ color:#006000;
+}
+.tabTitleDisabled,
+.tabTitleSelectedDisabled,
+.vtabTitleDisabled,
+.vtabTitleSelectedDisabled {
+ color:#666666;
+}
+
+
+/*============================================================
+ 7) SectionStack
+============================================================*/
+
+/* SectionStack headers - image based */
+.imgSectionHeaderclosed,
+.imgSectionHeaderopened,
+.imgSectionHeaderDisabledclosed,
+.imgSectionHeaderDisabledopened {
+}
+.imgSectionHeaderTitleclosed,
+.imgSectionHeaderTitleopened,
+.imgSectionHeaderTitleDisabledclosed,
+.imgSectionHeaderTitleDisabledopened {
+ font-family:Tahoma,Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold;
+ color:white;
+}
+.imgSectionHeaderTitleDisabledclosed,
+.imgSectionHeaderTitleDisabledopened {
+ color:#c8c8c8;
+}
+/*
+
+*/
+.sectionHeaderTitleopened,
+.sectionHeaderTitleclosed {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+}
+.sectionHeaderTitleDisabledopened,
+.sectionHeaderTitleDisabledclosed {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+}
+/* SectionStack headers - css based */
+.sectionHeaderopened,
+.sectionHeaderclosed {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white; background-color:#6682A0;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #264260; border-bottom:1px solid #264260;
+ padding:3px;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=0, startColorStr=#557189, endColorStr=#7793B1)";
+}
+
+
+
+/*============================================================
+ 8) Forms
+============================================================*/
+
+/* general form styles */
+.formRow {}
+.formCell,
+.formCellFocused,
+.formCellDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+}
+.formTitle,
+.formTitleFocused,
+.formTitleDisabled,
+.formCellError,
+.formTitleError,
+.formHint,
+.headerItem,
+.headerItemDisabled,
+.headerItemError,
+.staticTextItem,
+.staticTextItemDisabled,
+.staticTextItemError,
+.textItem,
+.textItemFocused,
+.textItemDisabled,
+.textItemError,
+.textItemHint,
+.selectItemControl,
+.selectItemControlError,
+.selectItemControlFocused,
+.selectItemText,
+.selectItemTextError,
+.selectItemTextDisabled,
+.selectItemTextFocused,
+.selectItemTextHint,
+.comboBoxItemPendingText,
+.pickListCell,
+.pickListCellSelected,
+.pickListCellDisabled,
+.labelAnchor,
+.labelAnchorDisabled,
+.labelAnchorError,
+.labelAnchorFocused {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+}
+.formCellError,
+.formTitleError {
+ font-weight:bold; color:#204268;
+ background-color:#CFD9F2
+}
+.formHint {
+ color:#666666; padding:3px;
+}
+
+/* headerItem */
+.headerItem,
+.headerItemDisabled,
+.headerItemError {
+ font-size:14px; font-weight:bold; color:#3E74B3;
+}
+
+/* text items */
+.textItem,
+.textItemFocused,
+.textItemDisabled,
+.textItemError,
+.textItemHint {
+ background-color:#FFFFFF;
+ padding:2px; border:1px solid #808080;
+}
+.textItemHint {
+ color:#666666;
+}
+
+.comboBoxItemPendingText {
+ color:#0066CC;
+}
+/* selectItem */
+
+.selectItemControl,
+.selectItemControlError,
+.selectItemControlFocused {
+ background-color:white; border:1px solid #808080;
+}
+
+.selectItemControlDisabled {
+ background-color:white; border:1px solid #A0A0A0;
+}
+
+.selectItemText,
+.selectItemTextError,
+.selectItemTextHint {
+ margin:2px;
+}
+
+.selectItemTextDisabled {
+ color:#ACA899; margin:2px;
+}
+
+.selectItemTextFocused {
+ background-color:#316AC5; color:white; margin:2px;
+}
+
+.selectItemTextHint {
+ color:#666666;
+}
+
+.selectItemPickerIcon,
+.selectItemPickerIconFocused,
+.selectItemPickerIconDisabled,
+.selectItemPickerIconError {
+ padding:0px;
+}
+
+.pickListMenuBody {
+ border:1px solid #808080;
+}
+
+.pickListCell {
+ color:black; background-color:#FFFFFF;
+}
+.pickListCellSelected {
+ color:white; background-color:#316AC5;
+}
+.pickListCellDisabled {
+ color:#666666; background-color:#FFFFFF;
+}
+
+/* checkbox and radioButton */
+.labelAnchor,
+.labelAnchorDisabled,
+.labelAnchorError,
+.labelAnchorFocused {
+ color:black; text-decoration:none;
+}
+
+/* ColorChooser */
+.colorChooserCell,
+.colorChooserCellOver {
+ background-color:#EFEFEF;
+ border-left:1px solid #EFEFEF; border-top:1px solid #EFEFEF;
+ border-right:1px solid #EFEFEF; border-bottom:1px solid #EFEFEF;
+}
+.colorChooserCellOver {
+ border-left:1px solid black; border-top:1px solid black;
+ border-right:1px solid black; border-bottom:1px solid black;
+}
+
+/* FilterBuilder */
+.bracketBorders {
+ border-left: 1px solid #808080;
+ border-top: 1px solid #808080;
+ border-bottom: 1px solid #808080;
+}
+
+/* DateChooser */
+.dateChooserButton,
+.dateChooserButtonOver,
+.dateChooserButtonDown,
+.dateChooserButtonDisabled,
+.dateChooserButtonSelected,
+.dateChooserButtonSelectedDown,
+.dateChooserButtonSelectedOver,
+.dateChooserButtonSelectedDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:10px; background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+}
+.dateChooserButton {
+ background-color:#CCCCCC;
+ border-left:1px solid #DDDDDD; border-top:1px solid #DDDDDD;
+ border-right:1px solid #BBBBBB; border-bottom:1px solid #BBBBBB;
+}
+.dateChooserButtonOver {
+ background-color:#DDDDDD; color:#006400;
+ border-left:1px solid white; border-top:1px solid white;
+ border-right:1px solid #666666; border-bottom:1px solid #666666;
+}
+.dateChooserButtonDown {
+ background-color:#AAAAAA;
+ border-left:1px solid #666666; border-top:1px solid #666666;
+ border-right:1px solid white; border-bottom:1px solid white;
+}
+.dateChooserButtonDisabled {
+ color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-top:1px solid #CCCCCC;
+ border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;
+}
+.dateChooserButtonSelected,
+.dateChooserButtonSelectedDown,
+.dateChooserButtonSelectedOver {
+ color:white; font-weight:bold;
+}
+.dateChooserButtonSelectedDisabled {
+ color:#666666;
+}
+
+
+
+/*============================================================
+ 9) Slider & Rangebar
+============================================================*/
+
+/* slider and rangebar labels */
+.sliderTitle,
+.sliderRange,
+.sliderValue,
+.rangebarTitle,
+.rangebarRange,
+.rangebarValue {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:10px;
+}
+.sliderTitle,
+.rangebarTitle {
+ font-weight:bold;
+}
+.sliderRange,
+.rangebarRange {
+ color:gray;
+}
+
+
+/*============================================================
+ 10) DetailViewer
+============================================================*/
+.detailBlock {
+ border-left:1px solid gray;
+ border-top:1px solid gray;
+}
+
+.detail,
+.detailLabel,
+.detailHeader {
+ border-right:1px solid gray;
+ border-bottom:1px solid gray;
+}
+
+.detail,
+.detailLabel,
+.detailHeader {
+ font-family:Bitstream Vera Sans, sans-serif; font-size:11px; background-color:white;
+}
+
+.detailLabel {
+ font-weight:bold;
+ background-color:#EEEEEE;
+ text-align:right;
+}
+
+.detailHeader {
+ font-size:14px; font-weight:bold;
+ background-color:#BBDAFA;
+}
+
+
+
+/*============================================================
+ 11) ListGrid
+============================================================*/
+
+/*============================================================
+ ListGrid parts
+ styleName - listGrid
+ headerBarStyle - headerBar
+ bodyStyleName - gridBody
+============================================================*/
+
+.listGrid {
+ border:1px solid #808080;
+}
+.headerBar {}
+.gridBody {
+ border-top:1px solid #808080;
+}
+.loadingDataMessage,
+.offlineMessage,
+.emptyMessage {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; padding:10px;
+}
+.gridDragTracker {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ background-color:white;
+ padding:1px;
+ border:1px dotted blue;
+}
+.dragLine {
+ background-color:#404040;
+}
+.listTable {}
+/* for filterEditor */
+.recordEditorCell {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black; background-color:#d0d0d0;
+}
+
+
+
+/*============================================================
+ ListGrid headers
+ listGrid.headerBaseStyle - headerButton (in skin)
+ listGrid.headerDefaults.titleStyle - headerTitle (in skin)
+ listGrid.sorterDefaults.titleStyle - headerTitle (in skin)
+
+============================================================*/
+
+/* ListGrid column header buttons */
+.headerButton,
+.headerButtonSelected,
+.headerButtonDisabled,
+.headerButtonSelectedDisabled {
+ background-color:#FFFFFF;
+ border-right:1px solid #606060;
+}
+.headerButtonOver,
+.headerButtonDown,
+.headerButtonSelectedOver,
+.headerButtonSelectedDown {
+ background-color:#E0FFE0;
+ border-right:1px solid #606060;
+}
+
+/* ListGrid column header titles */
+.headerTitle,
+.headerTitleOver,
+.headerTitleDown,
+.headerTitleSelected,
+.headerTitleSelectedOver,
+.headerTitleSelectedDown,
+.headerTitleDisabled,
+.headerTitleSelectedDisabled {
+ font-family:Tahoma,Verdana, Bitstream Vera Sans, sans-serif; font-size:10px; font-weight:bold;
+}
+.headerTitleDown,
+.headerTitleSelected,
+.headerTitleSelectedOver,
+.headerTitleSelectedDown,
+.headerTitleSelectedDisabled {
+ padding-left:1px; padding-top:2px;
+}
+.headerTitleDisabled,
+.headerTitleSelectedDisabled {
+ color:#666666;
+}
+
+
+/*============================================================
+ ListGrid cells
+ listGrid.baseStyle
+============================================================*/
+
+/*------------------------------------------------------------
+ listGrid.baseStyle
+------------------------------------------------------------*/
+.cell,
+.cellDark,
+.cellOver,
+.cellOverDark,
+.cellSelected,
+.cellSelectedDark,
+.cellSelectedOver,
+.cellSelectedOverDark,
+.cellDisabled,
+.cellDisabledDark,
+.groupSummaryCell,
+.groupSummaryCellDisabled,
+.gridSummaryCell,
+.gridSummaryCellDisabled,
+.recordSummaryCell,
+.recordSummaryCellDark,
+.recordSummaryCellOver,
+.recordSummaryCellOverDark,
+.recordSummaryCellSelected,
+.recordSummaryCellSelectedDark,
+.recordSummaryCellSelectedOver,
+.recordSummaryCellSelectedOverDark,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark,
+.specialCol,
+.specialColOver,
+.specialColSelected,
+.specialColSelectedOver,
+.specialColDisabled,
+.groupNode {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; text-overflow:ellipsis;
+ color:black;
+ border-bottom:1px solid #ffffff; border-top:1px solid #ffffff;
+ background-color:#ffffff;
+}
+
+.specialCol {
+ border-bottom:1px solid #f0f0e8; border-top:1px solid #f0f0e8;
+ background-color:#f0f0f0;
+}
+
+.cellDark,
+.groupSummaryCell,
+.gridSummaryCell {
+ border-bottom:1px solid #f0f0e8; border-top:1px solid #f0f0e8;
+ background-color:#f0f0f0;
+}
+.recordSummaryCell,
+.recordSummaryCellDark {
+ border-bottom:1px solid #c9c9e8; border-top:1px solid #c9c9e8;
+ background-color:#c9c9c9;
+}
+.cellOver,
+.cellOverDark,
+.specialColOver,
+.recordSummaryCellOver,
+.recordSummaryCellOverDark {
+ border-bottom:1px solid #c0c0c0; border-top:1px solid #c0c0c0;
+ background-color:#ffffc0;
+}
+.cellSelected,
+.cellSelectedDark,
+.specialColSelected,
+.recordSummaryCellSelected,
+.recordSummaryCellSelectedDark {
+ border-bottom:1px solid #b8d0ff; border-top:1px solid #b8d0ff;
+ background-color:#b8d0ff;
+}
+.cellSelectedOver,
+.cellSelectedOverDark,
+.specialColSelectedOver,
+.recordSummaryCellSelectedOver,
+.recordSummaryCellSelectedOverDark {
+ border-bottom:1px solid #a0a0a0; border-top:1px solid #a0a0a0;
+ background-color:#e0ebff;
+}
+.cellDisabled,
+.cellDisabledDark,
+.specialDisabled,
+.groupSummaryCellDisabled,
+.gridSummaryCellDisabled,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark {
+ color:#808080;
+}
+.cellDisabledDark,
+.groupSummaryCellDisabled,
+.gridSummaryCellDisabled,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark {
+ border-bottom:1px solid #f0f0e8; border-top:1px solid #f0f0e8;
+ background-color:#f0f0e8;
+}
+.recordSummaryCell,
+.recordSummaryCellDark,
+.recordSummaryCellOver,
+.recordSummaryCellOverDark,
+.recordSummaryCellSelected,
+.recordSummaryCellSelectedDark,
+.recordSummaryCellSelectedOver,
+.recordSummaryCellSelectedOverDark,
+.recordSummaryCellDisabled,
+.recordSummaryCellDisabledDark {
+ font-style:italic;
+}
+.groupSummaryCell,
+.groupSummaryCellDisabled,
+.gridSummaryCell,
+.gridSummaryCellDisabled {
+ font-weight:bold;
+ border-top: 1px solid #548EE0;
+}
+
+.gridSummaryCell {
+ border-top-width:0px;
+ border-bottom-width:0px;
+}
+
+.summaryRowBody {
+ background-color:#f0f0f0;
+}
+
+/* for grouping */
+.groupNode {
+ font-weight:bold;
+ border-bottom: 2px solid #548EE0;
+}
+
+/* Field builders (Formula/Summary) */
+.sampleOutput {
+ border: 2px solid #D9D9D9;
+ padding: 3px;
+}
+
+/* Multi-sort - sort-index appearing next to sort-arrows in field headers */
+.sortNumeral {
+ font-size:7px
+}
+
+/*============================================================
+ 12) ToolStrip
+============================================================*/
+.toolStrip {
+ background-color:#CCCCCC;
+}
+
+/*============================================================
+ 12a) ToolStripGroup and IconButton
+==============================================================*/
+.toolStripGroup,
+.toolStripGroupOver,
+.toolStripGroupSelected,
+.toolStripGroupSelectedDisabled,
+.toolStripGroupSelectedOver,
+.toolStripGroupDown,
+.toolStripGroupSelectedDown,
+.toolStripGroupDisabled {
+ background: #C7C7C7;
+ border: 1px solid #A7ABB4;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ -webkit-border-radius: 3px;
+}
+
+.toolStripGroupTitle,
+.toolStripGroupTitleOver,
+.toolStripGroupTitleSelected,
+.toolStripGroupTitleSelectedDisabled,
+.toolStripGroupTitleSelectedOver,
+.toolStripGroupTitleDown,
+.toolStripGroupTitleSelectedDown,
+.toolStripGroupTitleDisabled {
+ background-color: #B0B0B0;
+ border: 0;
+ color: #333333;
+ font-family: Arial, Verdana, Bitstream Vera Sans, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 3px;
+}
+
+.iconButton,
+.iconButtonOver,
+.iconButtonFocused,
+.iconButtonFocusedOver,
+.iconButtonDown,
+.iconButtonFocusedDown,
+.iconButtonSelected,
+.iconButtonSelectedFocused,
+.iconButtonSelectedDown,
+.iconButtonSelectedFocusedDown,
+.iconButtonSelectedOver,
+.iconButtonSelectedFocusedOver,
+.iconButtonDisabled,
+.iconButtonSelectedDisabled {
+ background: #CCCCCC;
+ border-bottom: 1px solid #808080;
+ border-left: 1px solid #FFFFFF;
+ border-right: 1px solid #808080;
+ border-top: 1px solid #FFFFFF;
+ color: #333333;
+ font-family: Arial, Verdana, Bitstream Vera Sans, sans-serif;
+ font-size:11px;
+ padding: 4px;
+}
+
+.iconButtonOver,
+.iconButtonSelectedOver,
+.iconButtonFocusedOver,
+.iconButtonSelectedFocusedOver {
+ background-color: #AAAAAA;
+ border-bottom: 1px solid #808080;
+ border-left: 1px solid #FFFFFF;
+ border-right: 1px solid #808080;
+ border-top: 1px solid #FFFFFF;
+ color: #333333;;
+}
+
+.iconButtonSelected,
+.iconButtonSelectedFocused,
+.iconButtonSelectedDown,
+.iconButtonSelectedFocusedDown,
+.iconButtonSelectedOver,
+.iconButtonSelectedFocusedOver {
+ background-color: pink;
+}
+
+.iconButtonDisabled {
+ color: #AAAAAA;
+}
+
+/*============================================================
+ 13) TileGrid
+==============================================================*/
+
+.tileGrid {
+ border:1px solid #808080;
+
+}
+.tileValue,
+.tileValueDown,
+.tileValueSelected,
+.tileValueOver,
+.tileValueSelectedOver,
+.tileValueSelectedDown {
+ font-size: 8pt;
+ text-overflow:ellipsis;
+}
+
+.tileValueSelected {
+ color: #004AE0
+}
+
+.tileValueSelectedOver {
+ color: #4D8CFF
+}
+
+.simpleTile,
+.simpleTileOver,
+.simpleTileSelected,
+.simpleTileSelectedOver {
+ padding:3px
+}
+.simpleTile {
+ border:1px solid transparent;
+}
+.simpleTileOver {
+ background-color:#ffffc0;
+ border:1px solid #EFF200;
+}
+
+.simpleTileSelected {
+ background-color:#b8d0ff;
+ border:1px solid #6598FF;
+}
+
+.simpleTileSelectedOver {
+ background-color:#e0ebff;
+ border:1px solid #A9C7FF;
+}
+
+/*============================================================
+ Unused? Review & Remove
+============================================================*/
+.selectedText {
+ background-color:darkblue; color:white;
+}
+.disabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#CCCCCC;
+}
+.pageHeader {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:12px; font-weight:bold; color:darkblue
+}
+.printPageHeader {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:14px; font-weight:bold; color:darkblue
+}
+.printCell {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:10px;
+}
+
+.cssdialogHeader,
+.cssdialogHeaderHilite {
+ border-left: 1px solid #FFFF52; border-top: 1px solid #FFFF52;
+ border-right: 1px solid #AD7B00; border-bottom: 1px solid #AD7B00;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#FFCE00, endColorStr=#FFF790)";
+}
+.cssdialogHeaderHilite {
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#FFE67F, endColorStr=#FFFBC6)";
+}
+.dialogStatusBar {
+ border-top: 1px solid #999999; border-left: 1px solid #999999;
+ border-right: 1px solid #FFFFFF; border-bottom: 1px solid #FFFFFF;
+}
+.dialogStatusBarText {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black; font-weight:bold;
+}
+
+
+
+
+
+
+/*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+
+ Styles below this comment are not used by default in this skin
+
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
+
+
+
+/*============================================================
+ TabSet CSS tabs
+ tabSet.simpleTabBaseStyle
+============================================================*/
+/* styles for simple css-styled tabs*/
+/* left */
+.tabButtonLeft {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white; border-bottom:1px solid #808080;
+}
+.tabButtonLeftOver,
+.tabButtonLeftSelected,
+.tabButtonLeftSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-left:1px solid white; border-top:1px solid white; border-bottom:1px solid #808080;
+}
+.tabButtonLeftDown,
+.tabButtonLeftSelectedDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-left:1px solid #808080; border-top:1px solid #808080; border-bottom:1px solid white;
+}
+.tabButtonLeftSelectedDisabled,
+.tabButtonLeftDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-top:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;
+}
+/* right */
+.tabButtonRight {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-top:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonRightOver,
+.tabButtonRightSelected,
+.tabButtonRightSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-top:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonRightDown,
+.tabButtonRightSelectedDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-top:1px solid #808080; border-bottom:1px solid white; border-right:1px solid white;
+}
+
+.tabButtonRightSelectedDisabled,
+.tabButtonRightDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-top:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC; border-right:1px solid #CCCCCC;
+}
+
+/* top */
+.tabButtonTop {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white; border-right:1px solid #808080;
+}
+.tabButtonTopOver,
+.tabButtonTopSelected,
+.tabButtonTopSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-left:1px solid white; border-top:1px solid white; border-right:1px solid #808080;
+}
+.tabButtonTopDown,
+.tabButtonTopSelectedDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-left:1px solid #808080; border-top:1px solid #808080; border-right:1px solid white;
+}
+.tabButtonTopSelectedDisabled,
+.tabButtonTopDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-top:1px solid #CCCCCC; border-right:1px solid #CCCCCC;
+}
+
+/* bottom */
+.tabButtonBottom {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color:#CCCCCC;
+ border-left:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonBottomOver,
+.tabButtonBottomSelected,
+.tabButtonBottomSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color:#D6D6D6;
+ border-left:1px solid white; border-bottom:1px solid #808080; border-right:1px solid #808080;
+}
+.tabButtonBottomDown,
+.tabButtonBottomSelectedDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; background-color: #D6D6D6;
+ border-left:1px solid #808080; border-bottom:1px solid white; border-right:1px solid white;
+}
+.tabButtonBottomSelectedDisabled,
+.tabButtonBottomDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#666666;
+ background-color:#CCCCCC;
+ border-left:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC; border-right:1px solid #CCCCCC;
+}
+
+
+
+
+
+/*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+
+ Styles below this comment are used by optional modules only
+
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
+
+
+
+/*============================================================
+ CubeGrid - Analytics Module only
+ cubeGrid.baseStyle - cubeCell
+ headerGrid.baseStyle - rowHeader
+ reportHeaderBar.button.baseStyle - rowHeader
+ reportHeaderBar.button.baseStyle - innerHeader/colHeader
+ reportHeaderBar.button.baseStyle - rowHeaderLabel
+ reportHeaderBar.button.baseStyle - colHeaderLabel
+============================================================*/
+.cubeGridBody {}
+.cubeCell,
+.cubeCellDark,
+.cubeCellDisabled,
+.cubeCellOver,
+.cubeCellSelected,
+.cubeCellSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black; text-overflow:ellipsis;
+ background-color:#FFFFFF;
+ border-top:1px solid white; border-bottom:1px solid #AAAAAA;
+ border-left:1px solid white; border-right:1px solid #AAAAAA;
+}
+
+.cubeCellDark {
+ background-color:#EEEEEE;
+ border-top:1px solid #EEEEEE;
+ border-left:1px solid #EEEEEE;
+}
+
+.cubeCellDisabled {
+ border-top:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ border-left:1px solid #FFFFFF; border-right:1px solid #FFFFFF;
+}
+
+/* partial styles */
+.cubeCellOver,
+.cubeCellSelectedOver {
+ background-color:#B8D1EE;
+ border-top:1px solid #B8D1EE;
+ border-left:1px solid #B8D1EE;
+}
+
+.cubeCellSelected {
+ background-color:#FFE781;
+ border-top:1px solid #FFE781;
+ border-left:1px solid #FFE781;
+}
+
+/* row headers */
+.rowHeader {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #264260; border-bottom:1px solid #264260;
+ background-image:url("images/CubeGrid/rowHeader.gif");
+}
+.rowHeaderOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderOver.gif");
+}
+.rowHeaderDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderOver.gif");
+}
+.rowHeaderDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#6682A0;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.rowHeaderSelected,
+.rowHeaderSelectedDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ background-image:url("images/CubeGrid/rowHeaderSelected.gif");
+
+}
+.rowHeaderSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/rowHeaderSelectedOver.gif");
+}
+.rowHeaderSelectedDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#3E74B3;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* row label */
+.rowHeaderLabel {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #000B3A; border-bottom:1px solid #000B3A;
+ background-image:url("images/CubeGrid/rowHeaderLabel.gif");
+}
+.rowHeaderLabelOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #000B3A; border-top:1px solid #000B3A;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderLabel.gif");
+}
+.rowHeaderLabelDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #000B3A; border-top:1px solid #000B3A;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/rowHeaderLabelDown.gif");
+}
+.rowHeaderLabelDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.rowHeaderLabelSelected,
+.rowHeaderLabelSelectedDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid black; border-top:1px solid black;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/rowHeaderDown.gif");
+}
+.rowHeaderLabelSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/rowHeaderDown.gif");
+}
+.rowHeaderLabelSelectedDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* column headers */
+.colHeader {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #264260; border-bottom:1px solid #264260;
+ background-image:url("images/CubeGrid/colHeader.gif");
+}
+.colHeaderOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/colHeaderOver.gif");
+}
+.colHeaderDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:white;
+ background-color:#6682A0;
+ border-left:1px solid #264260; border-top:1px solid #264260;
+ border-right:1px solid #FFFFFF; border-bottom:1px solid #FFFFFF;
+ background-image:url("images/CubeGrid/colHeader.gif");
+}
+.colHeaderDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#6682A0;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.colHeaderSelected,
+.colHeaderSelectedDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ background-image:url("images/CubeGrid/colHeaderSelected.gif");
+}
+.colHeaderSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/colHeaderSelectedOver.gif");
+}
+.colHeaderSelectedDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#3E74B3;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* column label */
+.colHeaderLabel {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderLabel.gif");
+}
+.colHeaderLabelOver,
+.colHeaderLabelDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#204B7A;
+ border-left:1px solid #000B3A; border-top:1px solid #000B3A;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderLabelDown.gif");
+}
+.colHeaderLabelDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.colHeaderLabelSelected,
+.colHeaderLabelSelectedDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid black; border-top:1px solid black;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderLabelDown.gif");
+}
+.colHeaderLabelSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-right:1px solid #555555; border-bottom:1px solid #555555;
+ background-image:url("images/CubeGrid/colHeaderDown.gif");
+}
+.colHeaderLabelSelectedDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:#808080;
+ background-color:#7D7D7D;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+/* inner header */
+.innerHeader {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#CCCCCC;
+ border-left:1px solid white; border-top:1px solid white;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+ background-image:url("images/CubeGrid/innerHeader.gif");
+}
+.innerHeaderOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid white; border-bottom:1px solid white;
+ background-image:url("images/CubeGrid/innerHeader.gif");
+}
+.innerHeaderDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:black;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid white; border-bottom:1px solid white;
+ background-image:url("images/CubeGrid/innerHeader.gif");
+}
+.innerHeaderDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+.innerHeaderSelected,
+.innerHeaderSelectedDown {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-left:1px solid #00008B; border-top:1px solid #00008B;
+ border-right:1px solid #F0F8FF; border-bottom:1px solid #F0F8FF;
+ background-image:url("images/CubeGrid/innerHeaderSelected.gif");
+}
+.innerHeaderSelectedOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; font-weight:bold; color:white;
+ background-color:#3E74B3;
+ border-top:1px solid white; border-bottom:1px solid white;
+ border-left:1px solid white; border-right:1px solid white;
+ background-image:url("images/CubeGrid/innerHeaderSelectedOver.gif");
+}
+.innerHeaderSelectedDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px; color:#808080;
+ background-color:#CCCCCC;
+ border-left:1px solid #808080; border-top:1px solid #808080;
+ border-right:1px solid #808080; border-bottom:1px solid #808080;
+}
+
+
+
+/*============================================================
+ BarChart
+ internal, charting/visualization module only
+ styleName - chart
+ barStyle - chartBar
+ others are currently fixed
+============================================================*/
+
+.chart {
+ background-color:#CCCCCC;
+}
+.chartTitle {
+ color:black;
+ font-family: Tahoma,sans-serif;
+ font-size:14px;
+ font-weight: bold;
+ text-align:center
+}
+.chartAxisTitle {
+ color:green;
+ font-family: Tahoma,sans-serif;
+ font-weight: bold;
+ font-size:12px;
+}
+.chartValueTitle {
+ color:black;
+ font-family: Tahoma,sans-serif;
+ font-size:10px;
+}
+.chartTotal {
+ color:black;
+ font-family:Bitstream Vera Sans, sans-serif;
+ font-size:12px;
+ background-color:linen;
+}
+.chartBody {
+ border-left:1px solid black;
+ border-top:1px dashed blue;
+ border-right:1px solid black;
+ background-color:#DDDDDD
+}
+.chartBar1 {
+ background-color:red;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#990000, endColorStr=#FF0000)";
+}
+.chartBar2 {
+ background-color:blue;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#000099, endColorStr=#0000FF)";
+}
+.chartBar3 {
+ background-color:green;
+ filter:"progid:dximagetransform.microsoft.gradient(gradientType=1, startColorStr=#009900, endColorStr=#00FF00)";
+}
+
+/*============================================================
+ Printing
+ printHeader - general print style for header elements including:
+ - ListGrid header cells
+ - SectionStack headers
+============================================================*/
+.printHeader {
+ font-family:Bitstream Vera Sans,Helvetica,Verdana,sans-serif; font-size:11px;
+ border:1px solid black;
+ font-weight:bold;
+}
+
+/*============================================================
+ Calendar
+
+============================================================*/
+.calendar,
+.calendarDisabled,
+.calendarWorkday,
+.calendarDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#ffffff;
+}
+
+.calendarDisabled {
+ background-color:gainsboro;
+}
+
+.calendarWorkday {
+ background-color:#ffffcc;
+}
+
+.calendarOver,
+.calendarOverDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#c0ffc0;
+}
+.calendarCellSelected {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#CCCCCC;
+}
+.labelColumn {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:gainsboro;
+}
+/* ----month---- */
+/* calMonthDayHeader and Body */
+
+.calMonthDayHeader,
+.calMonthDayHeaderDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: gainsboro;
+}
+
+.calMonthDayHeaderOver,
+.calMonthDayHeaderOverDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #c0ffc0;
+}
+.calMonthDayBody,
+.calMonthDayBodyDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#ffffff;
+}
+.calMonthDayBodyOver,
+.calMonthDayBodyOverDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#c0ffc0;
+}
+
+.calMonthDayBodyDisabled,
+.calMonthDayBodyDisabledOver {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#E6E6E6;
+}
+/* calMonthOtherDayHeader and Body */
+
+.calMonthOtherDayHeader,
+.calMonthOtherDayHeaderDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:#444444;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #aaaaaa;
+}
+.calMonthOtherDayHeaderOver,
+.calMonthOtherDayHeaderOverDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:#444444;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #c0ffc0;
+}
+.calMonthOtherDayBody,
+.calMonthOtherDayBodyDark,
+.calMonthOtherDayBodyDisabled,
+.calMonthOtherDayBodyDisabledOver{
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#E6E6E6;
+}
+.calMonthOtherDayBodyOver,
+.calMonthOtherDayBodyOverDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:black;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color:#c0ffc0;
+}
+/* calMonthOtherDayBlank */
+
+.calMonthOtherDayBlank,
+.calMonthOtherDayBlankDark,
+.calMonthOtherDayBlankOver,
+.calMonthOtherDayBlankOverDark {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif; font-size:11px;
+ color:#444444;
+ border-bottom:1px solid #a0a0a0; border-right:1px solid #a0a0a0;
+ background-color: #E6E6E6;
+}
+
+/* calMonthEventLink */
+
+a.calMonthEventLink:link {color:blue; text-decoration:none}
+a.calMonthEventLink:visited {color:blue; text-decoration:none}
+a.calMonthEventLink:hover {color:blue; text-decoration:underline}
+a.calMonthEventLink:active {color:blue; text-decoration:none}
+
+/* ----event window---- */
+
+.eventWindow {
+ font-size:9px;
+ background-color:#649ED8;
+ border: 1px solid #004D99;
+
+}
+
+.eventWindowHeader {
+ font-size:9px; color: white;
+ background-color:#004D99;
+
+}
+
+.eventWindowBody {
+ font-size: 9px;
+ background-color: #649ED8;
+ padding: 3px;
+
+}
+
+.eventWindowResizer{
+ border-top:1px solid white;
+ border-bottom: 1px solid white;
+}
+
+/*============================================================
+ PropertySheet
+ internal, used by Visual SmartClient tools
+ propertySheet.autoChildDefaults.cellStyle - propSheetValue
+ propertySheet.autoChildDefaults.titleStyle - propSheetTitle
+ propertySheet.TextItemDefaults.textBoxStyle - propSheetField
+ propertySheet.SelectItemDefaults.controlStyle - propSheetSelectControl
+ propertySheet.ColorItemDefaults.textBoxStyle - propSheetField
+ propertySheet.HeaderItemDefaults.textBoxStyle - propSheetHeading
+ propertySheet.SectionHeaderItemDefaults.cellStyle - propSheetSectionItemCell
+============================================================*/
+
+.propSheetValue,
+.propSheetValueFocused,
+.propSheetDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif;
+ font-size:11px;
+ border-bottom:1px solid #AAAAAA;
+ border-right:1px solid #AAAAAA;
+ padding:0px;
+ margin:0px;
+}
+.propSheetTitle,
+.propSheetTitleFocused,
+.propSheetTitleDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif;
+ font-size:11px;
+ border-bottom:1px solid #AAAAAA;
+ border-right:1px solid #AAAAAA;
+ background-color:#DDDDDD;
+ padding-left:4px;
+ padding-right:4px;
+}
+.propSheetTitleError,
+.propSheetValueError {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif;
+ font-size:11px; color:#204268;
+ background-color:#CFD9F2
+}
+.propSheetField,
+.propSheetFieldDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif;
+ font-size:11px;
+ background-color:#FFFFFF;
+ border:0px;
+ padding:0px;
+ padding-left:4px;
+ padding-right:4px;
+ margin-top:3px;
+}
+.propSheetHeading,
+.propSheetHeadingDisabled {
+ font-family:Verdana,Bitstream Vera Sans,sans-serif;
+ font-size:11px;
+ font-weight:bold;
+ color:black;
+ background-color:#CCCCCC;
+ padding:4px;
+ border-bottom:1px solid #AAAAAA;
+}
+.propSheetSelectControl,
+.propSheetSelectControlFocused,
+.propSheetSelectControlDisabled {
+ padding-left:3px;
+ padding-right:3px;
+}
+
+.propSheetSectionItemCell,
+.propSheetSectionItemDisabled {
+}
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/skin_styles.css.gz b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/skin_styles.css.gz
new file mode 100755
index 0000000..b03740b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/skin_styles.css.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/unsupported_browser.html b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/unsupported_browser.html
new file mode 100755
index 0000000..d0f14b1
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/skins/SmartClient/unsupported_browser.html
@@ -0,0 +1,89 @@
+<HTML>
+<HEAD>
+<STYLE>
+.normal {font-family:Verdana; font-size:12px;}
+.pageHeader {font-family:Verdana; font-size:24px; font-weight:bold;}
+</STYLE>
+<TITLE>Isomorphic SmartClient - Unsupported Browser</TITLE>
+</HEAD>
+<BODY BGCOLOR='white' CLASS=normal>
+<SCRIPT>
+var libs = [];
+</SCRIPT>
+<SPAN CLASS=pageHeader>Unsupported Browser Version</SPAN><br>
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+
+This page uses the <a href="http://www.isomorphic.com">Isomorphic SmartClient</a> web presentation layer (Version v8.2p_2012-06-03/LGPL Deployment - 2012-06-03), which requires one of the following supported DHTML web browsers:<br><br>
+
+<table class="normal" cellPadding=5>
+
+<tr><td width=40></td><td width=200>
+<b>Browser/Version</b>
+</td><td width=240>
+<b>Operating System(s)</b>
+</td><td>
+<b>Download Latest</b>
+</td></tr>
+
+<tr><td></td><td>
+<i>Internet Explorer 5.5-9.0</i>
+</td><td>
+Windows
+</td><td>
+<a href="http://www.microsoft.com/windows/ie/downloads/default.asp">Internet Explorer</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Netscape 7.2</i>
+</td><td>
+Windows/MacOS
+</td><td>
+<a href="http://channels.netscape.com/ns/browsers/download.jsp">Netscape</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Mozilla 1.4-1.8</i>
+</td><td>
+Windows/MacOS/Linux
+</td><td>
+<a href="http://www.mozilla.org/products/mozilla1.x/">Mozilla</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Firefox 1.0-5.0</i>
+</td><td>
+Windows/MacOS/Linux
+</td><td>
+<a href="http://www.mozilla.com/">Firefox</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Safari 1.2-5.0</i>
+</td><td>
+MacOS/Windows
+</td><td>
+<a href="http://www.apple.com/safari/download">Safari</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Chrome 1.0-11.0</i>
+</td><td>
+Windows/MacOS/Linux
+</td><td>
+<a href="http://www.google.com/chrome">Safari</a>
+</td></tr>
+
+<tr><td></td><td>
+<i>Opera Beta: 9.x-10.x</i>
+</td><td>
+Beta: Windows/MacOS/Linux
+</td><td>
+<a href="http://www.opera.com/download/">Opera</a>
+</td></tr>
+
+</table><br>
+
+<BR><TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE><BR><BR>
+<p>Last updated September 7, 2007.</p>
+
+</body></html>
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Calendar.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Calendar.js
new file mode 100755
index 0000000..6095d16
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Calendar.js
@@ -0,0 +1,461 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_Calendar){isc.module_Calendar=1;isc._moduleStart=isc._Calendar_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'Calendar load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.ClassFactory.defineClass("Calendar","Canvas","DataBoundComponent");isc.A=isc.Calendar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.defaultWidth="100%";isc.A.defaultHeight="100%";isc.A.year=new Date().getFullYear();isc.A.month=new Date().getMonth();isc.A.chosenDate=new Date();isc.A.firstDayOfWeek=0;isc.A.baseStyle="calendar";isc.A.dayHeaderBaseStyle="calMonthDayHeader";isc.A.dayBodyBaseStyle="calMonthDayBody";isc.A.otherDayHeaderBaseStyle="calMonthOtherDayHeader";isc.A.otherDayBodyBaseStyle="calMonthOtherDayBody";isc.A.otherDayBlankStyle="calMonthOtherDayBlank";isc.A.selectedCellStyle="calendarCellSelected";isc.A.eventWindowStyle="eventWindow";isc.A.calMonthEventLinkStyle="calMonthEventLink";isc.A.workdayBaseStyle="calendarWorkday";isc.A.workdayStart="9:00am";isc.A.workdayEnd="5:00pm";isc.A.showWorkday=false;isc.A.workdays=[1,2,3,4,5];isc.A.scrollToWorkday=false;isc.A.nameField="name";isc.A.descriptionField="description";isc.A.startDateField="startDate";isc.A.endDateField="endDate";isc.A.leadingDateField="leadingDate";isc.A.trailingDateField="trailingDate";isc.A.eventTypeField="type";isc.A.eventWindowStyleField="eventWindowStyle";isc.A.canEditField="canEdit";isc.A.canDragEventField="canDrag";isc.A.weekEventBorderOverlap=false;isc.A.eventSnapGap=30;isc.A.showQuickEventDialog=true;isc.A.canCreateEvents=true;isc.A.canEditEvents=true;isc.A.canDeleteEvents=true;isc.A.canDragEvents=true;isc.A.showDateChooser=false;isc.A.disableWeekends=true;isc.A.showWeekends=true;isc.A.showDayHeaders=true;isc.A.showOtherDays=true;isc.A.showControlsBar=true;isc.A.eventAutoArrange=true;isc.A.eventOverlap=true;isc.A.eventOverlapPercent=10;isc.A.showTimelineView=false;isc.A.renderEventsOnDemand=true;isc.A.timelineGranularity="day";isc.A.timelineUnitsPerColumn=1;isc.A.canResizeTimelineEvents=false;isc.A.allowEventOverlap=true;isc.A.sizeEventsToGrid=true;isc.A.dayViewTitle="Day";isc.A.weekViewTitle="Week";isc.A.monthViewTitle="Month";isc.A.timelineViewTitle="Timeline";isc.A.eventNameFieldTitle="Event Name";isc.A.saveButtonTitle="Save Event";isc.A.detailsButtonTitle="Edit Details";isc.A.cancelButtonTitle="Cancel";isc.A.previousButtonHoverText="Previous";isc.A.nextButtonHoverText="Next";isc.A.addEventButtonHoverText="Add an event";isc.A.datePickerHoverText="Choose a date";isc.A.invalidDateMessage="From must be before To";isc.A.dayViewConstructor="DaySchedule";isc.A.weekViewConstructor="WeekSchedule";isc.A.monthViewConstructor="MonthSchedule";isc.A.timelineViewConstructor="TimelineView";isc.A.mainViewDefaults={_constructor:isc.TabSet,defaultWidth:"80%",defaultHeight:"100%",tabBarAlign:"right",selectedTab:1};isc.A.dateChooserConstructor="DateChooser";isc.A.eventDialogDefaults={_constructor:isc.Window,showHeaderIcon:false,showMinimizeButton:false,showMaximumButton:false,canDragReposition:true,overflow:"visible",bodyProperties:{overflow:"visible"},width:400,height:100};isc.A.eventEditorDefaults={_constructor:isc.DynamicForm,padding:4,numCols:4,showInlineErrors:false,width:200};isc.A.eventEditorLayoutDefaults={_constructor:isc.Window,showHeaderIcon:false,showShadow:false,showMinimizeButton:false,showMaximumButton:false,canDragReposition:false};isc.A.addEventButtonDefaults={_constructor:isc.ImgButton,title:"",src:"[SKINIMG]actions/add.png",showRollOver:false,showDown:false,showFocused:false,width:16,height:16};isc.A.datePickerButtonDefaults={_constructor:isc.ImgButton,title:"",src:"[SKIN]/controls/date_control.gif",width:16,height:16,showRollOver:false,showFocused:false};isc.A.controlsBarDefaults={_constructor:isc.HLayout,defaultLayoutAlign:"center",height:25,membersMargin:5};isc.A.previousButtonDefaults={_constructor:isc.ImgButton,title:"",src:"[SKINIMG]actions/back.png",showFocused:false,width:16,height:16,click:"this.creator.previous()",showRollOver:false,showDown:false};isc.A.nextButtonDefaults={_constructor:isc.ImgButton,title:"",src:"[SKINIMG]actions/forward.png",showFocused:false,width:16,height:16,click:"this.creator.next()",showRollOver:false,showDown:false};isc.A.dateDisplayDefaults={_constructor:isc.Label,wrap:false,width:5,contents:"-"};isc.A.DAY="day";isc.A.WEEK="week";isc.A.MONTH="month";isc.A.rowHeight=isc.ListGrid.getInstanceProperty("cellHeight");isc.A.dateFormatter=null;isc.A.timeFormatter="toShortPaddedTime";isc.A.$81i=/^\d{4}.\d\d?.\d\d?$/;isc.A.$81j=/^\d\d?.\d\d.\d{4}?$/;isc.B.push(isc.A.initWidget=function isc_Calendar_initWidget(){if(this.chosenDate){this.year=this.chosenDate.getFullYear();this.month=this.chosenDate.getMonth()}
+if(!this.data)this.data=this.getDefaultData();this.previousButtonDefaults.prompt=this.previousButtonHoverText;this.nextButtonDefaults.prompt=this.nextButtonHoverText;this.datePickerButtonDefaults.prompt=this.datePickerHoverText;this.addEventButtonDefaults.prompt=this.addEventButtonHoverText;this.$529();this.createChildren();this.$53a();if(!this.initialCriteria&&this.autoFetchData)this.initialCriteria=this.getNewCriteria();this.setData(null);this.invokeSuper(isc.Calendar,"initWidget")}
+,isc.A.autoDetectFieldNames=function isc_Calendar_autoDetectFieldNames(){this.dataSource=isc.DS.getDataSource(this.dataSource);var _1=this.dataSource,_2=isc.getValues(_1.getFields()),_3=1024000,_4;if(this.fieldIsMissing(this.nameField,_1)){this.nameField=_1.getTitleField()}
+if(this.fieldIsMissing(this.descriptionField,_1)){_2.sortByProperties(["length"],[false]);_4={length:0};for(var i=0;i<_2.length;i++){var _6=_2.get(i);if(!_6.type||_6.type=="text"||_6.type=="string"){if(_6.length>255&&_6.length<_3){this.descriptionField=_6.name;break}else if(_6.length&&_6.length<_3&&_6.length>_4.length){_4=_6}else if(!_6.length){if(!_4)_4=_6}}}
+if(this.fieldIsMissing(this.descriptionField,_1)&&_4)
+this.descriptionField=_4.name}
+if(this.fieldIsMissing(this.startDateField,_1)){_4=null;for(var i=0;i<_2.length;i++){var _6=_2.get(i);if((_6.type=="date"||_6.type=="datetime")){if(_6.name.toLowerCase().indexOf("start")>=0||_6.name.toLowerCase().indexOf("begin")>=0)
+{this.startDateField=_6.name;break}else _4=_6}}
+if(this.fieldIsMissing(this.startDateField,_1)&&_4)
+this.startDateField=_4.name}
+if(this.fieldIsMissing(this.endDateField,_1)){_4=null;for(var i=0;i<_2.length;i++){var _6=_2.get(i);if((_6.type=="date"||_6.type=="datetime")){if(_6.name.toLowerCase().indexOf("end")>=0||_6.name.toLowerCase().indexOf("stop")>=0)
+{this.endDateField=_6.name;break}else if(_6.name!=this.startDateField)
+_4=_6}}
+if(this.fieldIsMissing(this.endDateField,_1)&&_4)
+this.endDateField=_4.name}}
+,isc.A.fieldIsMissing=function isc_Calendar_fieldIsMissing(_1,_2){return(!_1||_1==""||(_2&&!_2.getField(_1)))}
+,isc.A.getDefaultData=function isc_Calendar_getDefaultData(){return[]}
+,isc.A.setData=function isc_Calendar_setData(_1){if(this.data==_1)return;if(this.data){this.ignore(this.data,"dataChanged");if(this.data.$31k&&isc.isA.Function(this.data.destroy))
+this.data.destroy()}
+if(_1)this.data=_1;if(!this.data)return;this.observe(this.data,"dataChanged","observer.dataChanged()");if(this.hasData()){this.dataChanged()}}
+,isc.A.getData=function isc_Calendar_getData(){return this.data}
+,isc.A.hasData=function isc_Calendar_hasData(){if(!this.data||(isc.ResultSet&&isc.isA.ResultSet(this.data)&&!this.data.lengthIsKnown()))
+{return false}else{return true}}
+,isc.A.dataChanged=function isc_Calendar_dataChanged(){if(this.destroying||this.destroyed)return;if(this.$53e){this.logDebug('dataChanged, ignoring','calendar');this.$53e=false}else{this.logDebug('dataChanged, refreshing','calendar');this.refreshSelectedView()}}
+,isc.A.destroy=function isc_Calendar_destroy(){if(this.data)this.ignore(this.data,"dataChanged");this.Super("destroy",arguments)}
+,isc.A.refreshSelectedView=function isc_Calendar_refreshSelectedView(){if(this.dayViewSelected()){this.dayView.refreshEvents();if(this.monthView)this.monthView.refreshEvents()}else if(this.weekViewSelected()){this.weekView.refreshEvents();if(this.monthView)this.monthView.refreshEvents()}else if(this.monthViewSelected()){this.monthView.refreshEvents()}else if(this.timelineViewSelected()){this.timelineView.refreshEvents()}}
+,isc.A.getSelectedView=function isc_Calendar_getSelectedView(){if(this.dayViewSelected()){return this.dayView}else if(this.weekViewSelected()){return this.weekView}else if(this.monthViewSelected()){return this.monthView}else if(this.timelineViewSelected()){return this.timelineView}}
+,isc.A.getCurrentViewName=function isc_Calendar_getCurrentViewName(){return this.getSelectedView().viewName}
+,isc.A.setCurrentViewName=function isc_Calendar_setCurrentViewName(_1){var _2=this.mainView.tabs.find("viewName",_1);if(_2)this.mainView.selectTab(_2);return _1}
+,isc.A.getEventWindowID=function isc_Calendar_getEventWindowID(_1){if(!_1)return null;var _2=this.getDataSource();if(_2&&_2.getPrimaryKeyFieldNames().length>0){var _3=_2.getPrimaryKeyFields();var _4="";for(var _5 in _3){_4+=_1[_5]}
+return this.$65c[_4]}else{return _1.$65d}}
+,isc.A.setEventWindowID=function isc_Calendar_setEventWindowID(_1,_2){if(!this.$65c)this.$65c=[];var _3=this.getDataSource();if(_3&&_3.getPrimaryKeyFieldNames().length>0){var _4=_3.getPrimaryKeyFields();var _5="";for(var _6 in _4){_5+=_1[_6]}
+this.$65c[_5]=_2}else{_1.$65d=_2}}
+,isc.A.clearTimeSelection=function isc_Calendar_clearTimeSelection(){if(this.dayView)this.dayView.clearSelection();if(this.weekView)this.weekView.clearSelection()}
+,isc.A.getDayDiff=function isc_Calendar_getDayDiff(_1,_2,_3){var _4,_5;if(Date.compareDates(_1,_2)>0){_4=new Date(_1.getFullYear(),_1.getMonth(),_1.getDate());_5=new Date(_2.getFullYear(),_2.getMonth(),_2.getDate())}else{_4=new Date(_2.getFullYear(),_2.getMonth(),_2.getDate());_5=new Date(_1.getFullYear(),_1.getMonth(),_1.getDate())}
+var _6=Date.UTC(_5.getFullYear(),_5.getMonth(),_5.getDate(),0,0,0);var _7=Date.UTC(_4.getFullYear(),_4.getMonth(),_4.getDate(),0,0,0);var _8=_6-_7;if(_3){var _9=Math.floor(_8/(1000*60*60*24));var _10=Math.floor(_9/ 7);var _11=Date.getWeekendDays();var _12=_9%7,_13=0;var _14=_5.duplicate();_14.setDate(_14.getDate()-_12);for(var i=0;i<_12;i++){if(_11.contains(_14.getDay())){_13++}
+_14.setDate(_14.getDate()+1)}
+_9-=((_10*2)+_13);return _9}else{var _9=Math.floor(_8/(1000*60*60*24));return _9}}
+,isc.A.getEventLeft=function isc_Calendar_getEventLeft(_1,_2){var _3=(_2?this.weekView:this.dayView);var _4=(_3.showLabelColumn&&_3.labelColumnPosition=="left");var _5=_4?_3.labelColumnWidth:0;var _6=_3.getColumnWidth(_3.isLabelCol(0)?1:0);if(_3.$53i){var _7=this.getDayDiff(_1[this.startDateField],this.chosenWeekStart,(this.showWeekends==false));_5=(_7*_6)+(_4?_3.labelColumnWidth:0)}
+if(this.logIsDebugEnabled("calendar")){this.logDebug('calendar.getEventLeft() = '+_5+' for:'+isc.Log.echoFull(_1),'calendar')}
+return _5}
+,isc.A.setShowWeekends=function isc_Calendar_setShowWeekends(_1){this.showWeekends=_1;if(isc.isA.TabSet(this.mainView)){var _2=this.mainView.getSelectedTabNumber();this.mainView.removeTabs(this.mainView.tabs);if(this.dayView)this.dayView.destroy();if(this.weekView)this.weekView.destroy();if(this.monthView)this.monthView.destroy();var _3=this.$653();this.mainView.addTabs(_3);this.mainView.selectTab(_2)}else{var _4=this.children[0].members[1];var _5=_4.members[1];var _6=this.$653()[0].pane;_4.removeMember(_5);_5.destroy();_4.addMember(_6)}
+this.$53a();this.setDateLabel()}
+,isc.A.canEditEvent=function isc_Calendar_canEditEvent(_1){if(!_1)return false;else if(_1[this.canEditField]!=null)return _1[this.canEditField];else return this.canEditEvents}
+,isc.A.addEvent=function isc_Calendar_addEvent(_1,_2,_3,_4,_5,_6){if(_6==null)_6=true;if(!isc.isAn.Object(_5))_5={};var _7;if(isc.isA.Date(_1)){_7={};_7[this.startDateField]=_1;_7[this.endDateField]=_2;_7[this.nameField]=_3;_7[this.descriptionField]=_4;isc.addProperties(_7,_5)}else if(isc.isAn.Object(_1)){_7=_1}else{isc.logWarn('addEvent error: startDate parameter must be either a Date or an event record (Object)');return}
+var _8=this;var _9=function(_11,_12,_13){var _10;if(isc.isAn.Array(_12))_10=_12[0];else _10=_12;if(!_10)_10=_7;if(_8.logIsDebugEnabled("calendar")){_8.logDebug('event added:'+this.echo(_10),'calendar')}
+if(_8.$53b(_10[_8.startDateField],_10[_8.endDateField])){_8.dayView.addEvent(_10)}
+if(_8.$53c(_10[_8.startDateField],_10[_8.endDateField])){_8.weekView.addEvent(_10)}
+if(_8.$53d(_10[_8.startDateField],_10[_8.endDateField])){_8.monthView.refreshEvents()}
+if(_8.eventAdded)_8.eventAdded(_10)}
+if(_6)this.$53e=true;if(this.dataSource){isc.DataSource.get(this.dataSource).addData(_7,_9,{componentId:this.ID});return}else{this.$53e=true;this.data.add(_7);_9()}}
+,isc.A.removeEvent=function isc_Calendar_removeEvent(_1,_2){if(_2==null)_2=true;var _3=_1[this.startDateField],_4=_1[this.endDateField];var _5=this;var _6=function(){if(_5.$53b(_3,_4)){_5.dayView.removeEvent(_1)}
+if(_5.$53c(_3,_4)){_5.weekView.removeEvent(_1)}
+if(_5.$53d(_3,_4)){_5.monthView.refreshEvents()}
+if(_5.eventAutoArrange){if(_5.dayView)_5.dayView.refreshEvents();if(_5.weekView)_5.weekView.refreshEvents()}
+if(_5.eventRemoved)_5.eventRemoved(_1)}
+if(_2)this.$53e=true;if(this.dataSource){isc.DataSource.get(this.dataSource).removeData(_1,_6,{componentId:this.ID,oldValues:_1});return}else{this.data.remove(_1);_6()}}
+,isc.A.updateEvent=function isc_Calendar_updateEvent(_1,_2,_3,_4,_5,_6,_7){if(_7==null)_7=true;if(!isc.isAn.Object(_6))_6={};var _8=this;var _9=_1[this.startDateField];var _10=_1[this.endDateField];var _11=function(_17,_18,_19){var _12;if(isc.isAn.Array(_18))_12=_18[0];else _12=_18;if(!_12)_12=_1;if(_8.$53b(_9,_10)||_8.$53b(_2,_3)){_8.dayView.refreshEvents()}
+if(_8.$53c(_2,_3)){_8.weekView.updateEventWindow(_12)}
+if(_8.$53d(_2,_3)){_8.monthView.refreshEvents()}
+if(_8.$664(_2,_3)){_8.timelineView.updateEventWindow(_12)}
+if(_8.eventChanged)_8.eventChanged(_12)}
+if(_7)this.$53e=true;if(this.dataSource){var _13,_14=isc.DataSource.get(this.dataSource);var _15={};_15[this.startDateField]=_2;_15[this.endDateField]=_3;_15[this.descriptionField]=_5;_15[this.nameField]=_4;var _16=isc.addProperties({},_1,_15,_6);_14.updateData(_16,_11,{oldValues:_1,componentId:this.ID});return}else{_1[this.startDateField]=_2;_1[this.endDateField]=_3;_1[this.descriptionField]=_5;_1[this.nameField]=_4;isc.addProperties(_1,_6);_11()}}
+,isc.A.eventsAreSame=function isc_Calendar_eventsAreSame(_1,_2){if(this.dataSource){var _3=isc.DataSource.get(this.dataSource),_4=_3.getPrimaryKeyFieldNames(),_5=true;for(var i=0;i<_4.length;i++){var _7=_4[i];if(_1[_7]!=_2[_7]){_5=false;break}}
+return _5}else{return(_1===_2)}}
+,isc.A.getEventTitle=function isc_Calendar_getEventTitle(_1){return _1[this.nameField]}
+,isc.A.getEventHoverHTML=function isc_Calendar_getEventHoverHTML(_1,_2){var _3=this;var _4=_1[_3.startDateField].toShortDate(this.dateFormatter);var _5=isc.Time.toTime(_1[_3.startDateField],this.timeFormatter,true);var _6=isc.Time.toTime(_1[_3.endDateField],this.timeFormatter,true);return _4+" "+_5+" - "+_6+"</br></br>"+_1[_3.nameField]+"</br></br>"+_1[_3.descriptionField]}
+,isc.A.$53b=function isc_Calendar__shouldRefreshDay(_1,_2){if(!this.dayView)return false;var _3=new Date(this.year,this.month,this.chosenDate.getDate(),0,0);var _4=new Date(this.year,this.month,this.chosenDate.getDate(),23,59);if(this.dayView.body&&_3.getTime()<=_1.getTime()&&_4.getTime()>=_1.getTime()){return true}else return false}
+,isc.A.$53c=function isc_Calendar__shouldRefreshWeek(_1,_2){if(!this.weekView)return false;var _3=this.chosenWeekEnd.duplicate();_3.setMinutes(_3.getMinutes()+1);if(this.weekView.body&&this.chosenWeekStart.getTime()<=_1.getTime()&&_3.getTime()>=_2.getTime()){return true}else return false}
+,isc.A.$53d=function isc_Calendar__shouldRefreshMonth(_1,_2){if(!this.monthView)return false;var _3=new Date(this.year,this.month,-7);var _4=new Date(this.year,this.month,37);if(_3.getTime()<=_1.getTime()&&_4.getTime()>=_2.getTime()){return true}else return false}
+,isc.A.$664=function isc_Calendar__shouldRefreshTimelineView(_1,_2){if(this.showTimelineView)return true;else return false}
+,isc.A.$53f=function isc_Calendar__getNewEventWindow(_1){var _2=this.canEditEvent(_1);var _3=this.canDeleteEvents==null?_2:this.canDeleteEvents;var _4=_1[this.eventWindowStyleField]||this.eventWindowStyle;return this.createAutoChild("eventWindow",{calendar:this,className:_4,baseStyle:_4,canDragReposition:_2,canDragResize:_2,_redrawWithParent:false,showCloseButton:_3,event:_1,descriptionText:_1[this.descriptionField]},isc.EventWindow)}
+,isc.A.$53g=function isc_Calendar__getEventsInRange(_1,_2){var _3=[];var _4=Date.getWeekendDays();for(var i=0;i<this.data.getLength();i++){var _6=this.data.get(i);if(!_6||!_6[this.startDateField])return[];if(_6[this.startDateField].getTime()>=_1.getTime()&&_6[this.startDateField].getTime()<=_2.getTime()&&(this.showWeekends||!_4.contains(_6[this.startDateField].getDay()))){_3.add(_6)}}
+return _3}
+,isc.A.$64h=function isc_Calendar__getEventsTouchingRange(_1,_2,_3){var _4=[],_5=Date.getWeekendDays(),_6=_1.getTime(),_7=this.getDayEnd(_1),_8=_2.getHours()!=0?_2.getTime():_7.getTime(),_9=_6,_10=_8,_11=false;var _12=(_2.getHours()==0||Date.compareDates(_1,_2)<0)?_7:_2;while(!_11){for(var i=0;i<this.data.getLength();i++){var _14=this.data.get(i);var _15=_14[this.startDateField],_16=_14[this.endDateField];if(_16.getHours()==0||_16<_15){_16=_7}
+if(!_15)return[];var _17=_15.getTime(),_18=_15.getDay(),_19=_16.getTime(),_20=_16.getDay();var _21=(_17>=_6&&_17<_8&&_18==_1.getDay());var _22=(_19>_6&&_19<=_8&&_20==_1.getDay());var _23=(_17<=_6)&&(_19>=_8)&&(_18==_1.getDay());if((_21||_22||_23)&&(this.showWeekends||!_5.contains(_15.getDay())))
+{_4.add(_14);if(_3){if(_15.getTime()<_9){_9=_15.getTime()}
+if(_16.getTime()>_10){_10=_16.getTime()}}}}
+if(!_3||(_9==_6&&_10==_8)){_11=true}else{_6=_9;_8=_10;_4.clear()}}
+return _4}
+,isc.A.$64i=function isc_Calendar__findEventWindow(_1,_2){var _3=(_2?this.weekView:this.dayView);if(!_3.body||!_3.body.children)return;var _4=_3.body.children;if(this.dataSource)this.$53s=isc.DataSource.get(this.dataSource).getLocalPrimaryKeyFields();for(var i=0;i<_4.length;i++){if(isc.isAn.EventWindow(_4[i])&&_3.areSame(_4[i].event,_1)&&_4[i].$53i==_2){return _4[i]}}
+return false}
+,isc.A.$64j=function isc_Calendar__prepareAutoArrangeOffsets(_1,_2){var _3=[],_4=60/this.eventSnapGap,_5=24*_4,_6=[new Array(_5),new Array(_5),new Array(_5),new Array(_5),new Array(_5),new Array(_5),new Array(_5)];for(var i=0;i<_5;i++){_3.add({usedCol:[0,0,0,0,0,0,0],assignedCol:[0,0,0,0,0,0,0],exactTime:[0,0,0,0,0,0,0]})}
+for(var i=0;i<_1.getLength();i++){var _8=_1.get(i);var _9=_8[this.startDateField].getDay();var _10=_8[this.startDateField].getUTCHours(),_11=_8[this.startDateField].getUTCMinutes(),_12=_11%this.eventSnapGap;if(_12){_11=_11-_12}
+if(_10==24)_10=0;var _13=_8[this.endDateField].getDay(),_14=_8[this.endDateField].getUTCHours(),_15=_8[this.endDateField].getUTCMinutes(),_16=_15%this.eventSnapGap;if(_13>_9){_14=24;_15=0;_16=0}
+if(_16){_15=_15+(this.eventSnapGap-_16);if(_15==60){_15=0;_14++}}
+var _17=(_10*_4)+(_11/ this.eventSnapGap),_18=(_14*_4)+(_15/ this.eventSnapGap);_8.$64k=0;_8.$64l=0;_8.$85h=_17;_8.$85i=_18;for(var _19=_17;_19<_18;_19++){var _20=_3[_19];var _21=_3[_19].usedCol[_9];var _22=_3[_19].assignedCol[_9];var _23=_3[_19].exactTime[_9];if(_6[_9][_19]==null)_6[_9][_19]=0;if(_19==_17){var _24=_22!=0;_8.$64k=_22;if(this.eventOverlap){if(!this.eventOverlapIdenticalStartTimes){_8.$64m=_23==0}else{_8.$64m=true}
+_23=1}
+_22++;if(_22>_6[_9][_19]){_6[_9][_19]=_22}
+if(!_24&&_21!=0){_8.$64l=_21;_22=_21+1}else{if(_22<=_21){_8.$64l=_21;_22=_21+1}else{_8.$64l=_6[_9][_19]}}}else{if(_24){if(_22==0){if(_21==0){_21=_8.$64k}}else{if(_21==0){if(_8.$64k>_22){_21=_8.$64k}else{_22=_8.$64k+1}}else if(_22<_21){_22=_21+1}}}else{if(_22+1<_21){_22++}else{_22=_21+1}}}
+_3[_19].usedCol[_9]=_21;_3[_19].assignedCol[_9]=_22;_3[_19].exactTime[_9]=_23}}
+return _6}
+,isc.A.getDayEnd=function isc_Calendar_getDayEnd(_1){return new Date(_1.getFullYear(),_1.getMonth(),_1.getDate(),23,59,59)}
+,isc.A.$64n=function isc_Calendar__renderEventRange(_1,_2,_3){var _4=(_1?this.weekView:this.dayView);if(!_4.isDrawn())return;var _5=_4.getRowHeight(1),_6=_4.getColumnWidth(_4.isLabelCol(0)?1:0);var _7=_2,_8=_3;if(Date.compareDates(_7,_8)<0||(_8.getHours()==0)){_8=this.getDayEnd(_7)}
+var _9=this.$64h(_7,_8,true);_9.sortByProperties([this.startDateField,this.endDateField],[true,false]);var _10=this.$64j(_9,_4);for(var i=0;i<_10.length;i++){for(var j=0;j<_10[i].length;j++){if(_10[i][j]==0)_10[i][j]=1}}
+_9.unsort();_9.sortByProperties(["$64k"],[true]);for(var i=0;i<_9.getLength();i++){var _13=_9.get(i),_14=_13[this.startDateField],_15=_13[this.endDateField];var _16=_14.getDay();var _17=_10[_16];var _18=this.getTimeSlotsTouchedByEventRange(_13);var _19=_6/
+Math.max(1,_17.max(_18.min,_18.max-1));if(_13.$64l==0)_13.$64l=1;var _20=this.getEventLeft(_13,_1);_20+=(_13.$64k*_19);var _21=(_13.$64l-_13.$64k)*_19;if(this.eventOverlap&&_13.$64m){if(_13.$64k>0){_20-=_19*(this.eventOverlapPercent/ 100);_21+=_19*(this.eventOverlapPercent/ 100)}}
+var _22=_15.getHours(),_23=_15.getMinutes();if(_22==0&&(_23==0||_15.getDate()!=_14.getDate())){_22=24;_23=0}
+var _24=(_22-_14.getHours())*(_5*2)
+if(this.weekEventBorderOverlap&&_4.$53i)_21+=1;if(_14.getMinutes()>0){_24-=this.$54g(_14.getMinutes(),_5)}
+if(_23>0){_24+=this.$54g(_23,_5)}
+var _25=_14.getHours()*(_5*2);if(_14.getMinutes()>0){_25+=this.$54g(_14.getMinutes(),_5)}
+var _26=this.$64i(_13,_1);if(_26){_26.renderEvent(_25,_20,_21,_24)}}}
+,isc.A.getTimeSlotsTouchedByEventRange=function isc_Calendar_getTimeSlotsTouchedByEventRange(_1){var _2=this.$64h(_1[this.startDateField],_1[this.endDateField],true);var _3=_2.getProperty("$85h").min();var _4=_2.getProperty("$85i").max();return{min:_3,max:_4}}
+,isc.A.$529=function isc_Calendar__setChosenWeek(){var _1=this.chosenWeekStart=new Date(this.year,this.month,this.chosenDate.getDate()
+-this.chosenDate.getDay()+this.firstDayOfWeek);if(Date.compareDates(this.chosenDate,_1)==1){this.chosenWeekStart.setDate(this.chosenWeekStart.getDate()-7)}
+this.chosenWeekEnd=new Date(_1.getFullYear(),_1.getMonth(),_1.getDate()+6,23,59);if(Date.compareDates(this.chosenDate,this.chosenWeekEnd)==-1){this.chosenWeekStart.setDate(this.chosenWeekStart.getDate()+7);this.chosenWeekEnd.setDate(this.chosenWeekEnd.getDate()+7)}}
+,isc.A.setChosenDate=function isc_Calendar_setChosenDate(_1){this.year=_1.getFullYear();this.month=_1.getMonth();this.$53h=this.chosenDate;this.chosenDate=_1;this.$529();if(this.$53h.getFullYear()!=this.year||this.$53h.getMonth()!=this.month){if(this.monthView)this.monthView.refreshEvents()}
+var _2=new Date(this.$53h.getFullYear(),this.$53h.getMonth(),this.$53h.getDate()-this.$53h.getDay());var _3=new Date(_2.getFullYear(),_2.getMonth(),_2.getDate()+6);var _4=this.chosenDate.getTime();if(_4<_2.getTime()||_4>_3.getTime()){if(this.weekView){this.weekView.refreshEvents();this.$53a()}}
+if(_4!=this.$53h.getTime()){if(this.dayView){this.dayView.refreshStyle();this.dayView.refreshEvents()}}
+this.setDateLabel();this.dateChanged()}
+,isc.A.dateIsWorkday=function isc_Calendar_dateIsWorkday(_1){return this.workdays.contains(_1.getDay())}
+,isc.A.adjustCriteria=function isc_Calendar_adjustCriteria(_1){return _1}
+,isc.A.getNewCriteria=function isc_Calendar_getNewCriteria(){var _1={},_2;if(this.fetchMode=="timeline"){_2=this.timelineView;var _3={_constructor:"AdvancedCriteria",operator:"and",criteria:[{fieldName:this.startDateField,operator:"greaterThan",value:_2.startDate},{fieldName:this.endDateField,operator:"lessThan",value:_2.endDate}]};_1=this.adjustCriteria(_3)}
+return _1}
+,isc.A.$53a=function isc_Calendar__setWeekTitles(){if(!this.weekView)return;var _1=this.chosenWeekStart.duplicate();var _2=Date.getShortDayNames();var _3=Date.getWeekendDays();for(var i=1;i<8;i++){if(this.weekView.getFieldNum("day"+i)>=0){var _5=_1.toShortDate(this.dateFormatter);if(_5.match(this.$81i)!=null)_5=_5.substring(5);else if(_5.match(this.$81j))_5=_5.substring(0,_5.length-5)
+var _6=_2[_1.getDay()]+" "+_5;var _7={title:_6,align:"right",$654:_1.getDay(),$658:_1.getDate(),$659:_1.getMonth(),$66a:_1.getFullYear()}
+this.weekView.setFieldProperties("day"+i,_7);if(this.weekView.header)this.weekView.header.markForRedraw()}
+_1.setDate(_1.getDate()+1)}}
+,isc.A.next=function isc_Calendar_next(){var _1;if(this.dayViewSelected()){_1=new Date(this.year,this.month,this.chosenDate.getDate()+1);if(!this.showWeekends){var _2=Date.getWeekendDays();for(var i=0;i<_2.length;i++){if(_2.contains(_1.getDay()))_1.setDate(_1.getDate()+1)}}}else if(this.weekViewSelected()){_1=new Date(this.year,this.month,this.chosenDate.getDate()+7)}else if(this.monthViewSelected()){_1=new Date(this.year,this.month+1,1)}else if(this.timelineViewSelected()){_1=this.chosenDate.duplicate();this.timelineView.nextOrPrev(true)}
+this.dateChooser.setData(_1);this.setChosenDate(_1)}
+,isc.A.previous=function isc_Calendar_previous(){if(this.dayViewSelected()){var _1=new Date(this.year,this.month,this.chosenDate.getDate()-1);if(!this.showWeekends){var _2=Date.getWeekendDays();for(var i=0;i<_2.length;i++){if(_2.contains(_1.getDay()))_1.setDate(_1.getDate()-1)}}}else if(this.weekViewSelected()){var _1=new Date(this.year,this.month,this.chosenDate.getDate()-7)}else if(this.monthViewSelected()){var _1=new Date(this.year,this.month-1,1)}else if(this.timelineViewSelected()){_1=this.chosenDate.duplicate();this.timelineView.nextOrPrev(false)}
+this.dateChooser.setData(_1);this.setChosenDate(_1)}
+,isc.A.dataArrived=function isc_Calendar_dataArrived(){return true}
+,isc.A.draw=function isc_Calendar_draw(_1,_2,_3,_4){this.invokeSuper(isc.Calendar,"draw",_1,_2,_3,_4);if(isc.ResultSet&&isc.isA.ResultSet(this.data)&&this.dataSource){this.observe(this.data,"dataArrived","observer.dataArrived(arguments[0], arguments[1])")}
+if(this.mainView.isA("TabSet")){this.mainView.addChild(this.controlsBar);this.controlsBar.moveAbove(this.mainView.tabBar)}}
+,isc.A.$653=function isc_Calendar__getTabs(){var _1=[];if(this.showDayView!=false){this.dayView=this.createAutoChild("dayView",{baseStyle:this.baseStyle,viewName:"day",cellHeight:this.rowHeight});_1.add({title:this.dayViewTitle,pane:this.dayView,viewName:"day"})}
+if(this.showWeekView!=false){this.weekView=this.createAutoChild("weekView",{$53i:true,baseStyle:this.baseStyle,viewName:"week",cellHeight:this.rowHeight});_1.add({title:this.weekViewTitle,pane:this.weekView,viewName:"week"})}
+if(this.showMonthView!=false){this.monthView=this.createAutoChild("monthView",{baseStyle:this.baseStyle,viewName:"month",bodyConstructor:"MonthScheduleBody"});_1.add({title:this.monthViewTitle,pane:this.monthView,viewName:"month"})}
+if(this.showTimelineView!=false){this.timelineView=this.createAutoChild("timelineView",{baseStyle:this.baseStyle,viewName:"timeline"});_1.add({title:this.timelineViewTitle,pane:this.timelineView,viewName:"timeline"})}
+return _1}
+,isc.A.$655=function isc_Calendar__createTabSet(_1){if(_1.length>1){this.mainView=this.createAutoChild("mainView",{tabs:_1,tabSelected:function(_3,_4,_5,_6){this.creator.$567=_4.viewName;this.creator.setDateLabel()}});if(this.currentViewName){var _2=_1.find("viewName",this.currentViewName);if(_2)this.mainView.selectTab(_2)}}else{this.mainView=_1[0].pane}}
+,isc.A.createChildren=function isc_Calendar_createChildren(){var _1=this.$653();this.$655(_1);var _2=20;if(this.showControlsBar!=false){this.dateDisplay=this.createAutoChild("dateDisplay");this.addEventButton=this.createAutoChild("addEventButton",{click:function(){var _3=this.creator;var _4=_3.getCurrentViewName();_3.eventDialog.event=null;_3.eventDialog.items[0].createFields(false);var _5=new Date(),_6=_3.chosenDate.duplicate();if(_4=="day"){_5=_6}else if(_4=="week"){if(_3.chosenWeekStart.getTime()>_5.getTime()){_5=_3.chosenWeekStart.duplicate()}
+if(!this.showWeekends){var _7=Date.getWeekendDays();for(var i=0;i<_7.length;i++){if(_7.contains(_5.getDay()))_5.setDate(_5.getDate()+1)}}
+_5.setMinutes(0);if(_5.getHours()>22){_5.setDate(_5.getDate()+1);_5.setHours(0)}
+else _5.setHours(_5.getHours()+1)}else if(_4=="month"){_6.setDate(1);if(_6.getTime()>_5.getTime())_5=_6}
+_3.eventDialog.setDate(_5);_3.eventDialog.setPageLeft(_3.getPageLeft());_3.eventDialog.setPageTop(this.getPageTop()+this.getVisibleHeight());_3.eventDialog.show()}});this.datePickerButton=this.createAutoChild("datePickerButton",{click:function(){var _3=this.creator;if(this.$54x){this.$54x.setData(_3.chosenDate);this.$54x.draw()}else{this.$54x=isc.DateChooser.create({calendar:this.creator,autoDraw:false,showCancelButton:true,autoClose:true,disableWeekends:this.creator.disableWeekends,firstDayOfWeek:this.creator.firstDayOfWeek,showWeekends:this.creator.showWeekends,dateClick:function(_37,_38,_39){var _9=new Date(_37,_38,_39);this.setData(_9);this.calendar.dateChooser.dateClick(_37,_38,_39);this.close()}});this.$54x.setData(_3.chosenDate);_3.addChild(this.$54x);this.$54x.placeNextTo(this,"bottom",true)}}});this.previousButton=this.createAutoChild("previousButton",{});this.nextButton=this.createAutoChild("nextButton",{})}
+var _10=[];if(this.showPreviousButton!=false)_10.add(this.previousButton);if(this.showDateDisplay!=false)_10.add(this.dateDisplay);if(this.showDatePickerButton!=false)_10.add(this.datePickerButton);if(this.canCreateEvents&&this.showAddEventButton!=false)_10.add(this.addEventButton);if(this.showNextButton!=false)_10.add(this.nextButton);if(this.showControlsBar!=false){this.controlsBar=this.createAutoChild("controlsBar",{members:_10})}
+this.dateChooser=this.createAutoChild("dateChooser",{disableWeekends:this.disableWeekends,showWeekends:this.showWeekends,chosenDate:this.chosenDate,month:this.month,year:this.year,dateClick:function(_37,_38,_39){var _9=new Date(_37,_38,_39);this.setData(_9);this.creator.setChosenDate(_9)},showPrevYear:function(){this.year--;this.dateClick(this.year,this.month,this.chosenDate.getDate())},showNextYear:function(){this.year++;this.dateClick(this.year,this.month,this.chosenDate.getDate())},showPrevMonth:function(){if(--this.month==-1){this.month=11;this.year--}
+this.dateClick(this.year,this.month,1)},showNextMonth:function(){if(++this.month==12){this.month=0;this.year++}
+this.dateClick(this.year,this.month,1)}});this.eventDialog=this.createAutoChild("eventDialog",{items:[isc.DynamicForm.create({autoDraw:false,padding:4,calendar:this,saveOnEnter:true,useAllDataSourceFields:true,$642:["name"],getCustomValues:function(){if(!this.calendar.eventDialogFields)return;var _11=this.$642;var _12=this.calendar.eventDialogFields;var _13={}
+for(var i=0;i<_12.length;i++){var _14=_12[i];if(_14.name&&!_11.contains(_14.name)){_13[_14.name]=this.getValue(_14.name)}}
+return _13},setCustomValues:function(_37){if(!this.calendar.eventDialogFields)return;var _11=this.$642;var _12=this.calendar.eventDialogFields;for(var i=0;i<_12.length;i++){var _14=_12[i];if(_14.name&&!_11.contains(_14.name)){this.setValue(_14.name,_37[_14.name])}}},createFields:function(_37){var _15=_37?"staticText":"text";var _3=this.calendar;var _16=[{name:_3.nameField,title:_3.eventNameFieldTitle,type:_15,width:250},{name:"save",title:_3.saveButtonTitle,type:"SubmitItem",endRow:false},{name:"details",title:_3.detailsButtonTitle,type:"button",startRow:false,click:function(_25,_38){_25.calendar.$53j(_25.calendar.eventDialog.event)}}];if(_37)_16.removeAt(1);var _17=isc.DataSource.create({addGlobalId:false,fields:_16});this.setDataSource(_17);this.setFields(isc.shallowClone(this.calendar.eventDialogFields))},submit:function(){var _3=this.calendar,_18=_3.eventDialog.event,_19=_3.eventDialog.currentStart,_20=_3.eventDialog.currentEnd;if(!this.validate())return;if(_18){_3.updateEvent(_18,_19,_20,this.getItem(this.calendar.nameField).getValue(),_18[_3.descriptionField],this.getCustomValues(),true);_3.eventDialog.hide()}else{_3.addEvent(_19,_20,this.getItem(this.calendar.nameField).getValue(),"",this.getCustomValues(),true);_3.eventDialog.hide()}}})],setDate:function(_37,_38){if(!_38){if(_37.getHours()==23&&_37.getMinutes()==30){_38=new Date(_37.getFullYear(),_37.getMonth(),_37.getDate()+1)}else{_38=new Date(_37.getFullYear(),_37.getMonth(),_37.getDate(),_37.getHours()+1,_37.getMinutes())}}
+this.setTitle(this.creator.$53k(_37,_38));this.currentStart=_37;this.currentEnd=_38;this.items[0].getItem(this.creator.nameField).setValue("")},setEvent:function(_37){this.event=_37;var _21=this.items[0];if(this.creator.eventDialogFields){_21.clearErrors(true);_21.setCustomValues(_37)}
+this.setDate(_37[this.creator.startDateField],_37[this.creator.endDateField]);_21.getItem(this.creator.nameField).setValue(_37[this.creator.nameField])},closeClick:function(){this.Super('closeClick');this.creator.dayView.clearSelection();this.creator.weekView.clearSelection()},show:function(){if(this.creator.showQuickEventDialog){if(!this.isDrawn())this.draw();this.Super('show');this.items[0].getItem(this.creator.nameField).focusInItem()}else{this.creator.$53j(this.event)}},hide:function(){this.Super('hide');this.moveTo(0,0)}});this.eventEditor=this.createAutoChild("eventEditor",{useAllDataSourceFields:true,initWidget:function(){this.invokeSuper(isc.DynamicForm,"initWidget",arguments);this.timeFormat=this.creator.timeFormat;var _16=[{name:"startHours",title:"From",type:"select",width:60},{name:"startMinutes",showTitle:false,type:"select",width:60},{name:"startAMPM",showTitle:false,type:"select",width:60},{name:"invalidDate",type:"blurb",colSpan:4,visible:false,defaultValue:this.creator.invalidDateMessage},{name:"endHours",title:"To",type:"select",width:60},{name:"endMinutes",showTitle:false,type:"select",width:60},{name:"endAMPM",showTitle:false,type:"select",width:60},{name:"name",title:"Name",type:"text",colSpan:4},{name:"description",title:"Description",type:"textArea",colSpan:4,height:50}];_16[0].valueMap=this.getTimeValues("hours");_16[1].valueMap=this.getTimeValues("minutes");_16[2].valueMap=this.getTimeValues();_16[3].cellStyle=this.errorStyle||"formCellError";_16[4].valueMap=this.getTimeValues("hours");_16[5].valueMap=this.getTimeValues("minutes");_16[6].valueMap=this.getTimeValues();var _22=isc.DataSource.create({addGlobalId:false,fields:_16});this.setDataSource(_22);this.setFields(isc.shallowClone(this.creator.eventEditorFields))},getTimeValues:function(_37,_38){if(!_38)_38=0;var _23={};if(_37=="hours"){for(var i=_38;i<12;i++){_23[(i+1)+""]=(i+1)}}else if(_37=="minutes"){for(var i=0;i<60;i++){var _24=i<10?"0"+i:""+i;_23[i+""]=_24}}else{_23["am"]="am";_23["pm"]="pm"}
+return _23},$642:["startHours","startMinutes","startAMPM","endHours","endMinutes","endAMPM","name","description"],getCustomValues:function(){if(!this.creator.eventEditorFields)return;var _11=this.$642;var _12=this.creator.eventEditorFields;var _13={}
+for(var i=0;i<_12.length;i++){var _14=_12[i];if(_14.name&&!_11.contains(_14.name)){_13[_14.name]=this.getValue(_14.name)}}
+return _13},setCustomValues:function(_37){if(!this.creator.eventEditorFields)return;var _11=this.$642;var _12=this.creator.eventEditorFields;for(var i=0;i<_12.length;i++){var _14=_12[i];if(_14.name&&!_11.contains(_14.name)){this.setValue(_14.name,_37[_14.name])}}}});this.eventEditorLayout=this.createAutoChild("eventEditorLayout",{items:[this.eventEditor,isc.HLayout.create({membersMargin:10,layoutMargin:10,autoDraw:false,members:[isc.IButton.create({autoDraw:false,title:this.saveButtonTitle,calendar:this,click:function(){var _3=this.calendar,_18=_3.eventEditorLayout.event,_25=_3.eventEditor,_26=_25.getItem("startHours").getValue(),_27=_25.getItem("endHours").getValue(),_28=_25.getItem("startMinutes").getValue(),_29=_25.getItem("endMinutes").getValue();var _30,_31;if(!_3.twentyFourHourTime){_30=_25.getItem("startAMPM").getValue();_31=_25.getItem("endAMPM").getValue();_26=_3.$534(_26,_30);_27=_3.$534(_27,_31);if(_27==0)_27=24}
+if(!(_26<_27||(_26==_27&&_28<_29))){_25.showItem("invalidDate");return}
+if(!_25.validate())return;var _19=_3.eventEditorLayout.currentStart,_20=_3.eventEditorLayout.currentEnd;if(_20.getDate()>_19.getDate()){if(_27==24)_27=0;else{_20.setDate(_19.getDate())}}
+_19.setHours(_26);_19.setMinutes(_28);_20.setHours(_27);_20.setMinutes(_29);if(_18){var _32=_3.eventEditorLayout.originalStart,_33=_3.eventEditorLayout.originalEnd;_3.updateEvent(_18,_19,_20,_25.getItem("name").getValue(),_25.getItem("description").getValue(),_25.getCustomValues(),true);if(_3.eventAutoArrange){_3.$64n(_3.weekViewSelected(),_32,_33)}
+_3.eventEditorLayout.hide()}else{_3.addEvent(_19,_20,_25.getItem("name").getValue(),_25.getItem("description").getValue(),_25.getCustomValues(),true);_3.eventEditorLayout.hide()}}}),isc.IButton.create({autoDraw:false,title:this.cancelButtonTitle,calendar:this,click:function(){this.calendar.eventEditorLayout.hide()}})]})],setDate:function(_37,_38,_39){if(!_39)_39="";if(!_38){_38=new Date(_37.getFullYear(),_37.getMonth(),_37.getDate(),_37.getHours()+1,_37.getMinutes())}
+var _3=this.creator;this.setTitle(_3.$53k(_37,_38));this.currentStart=_37;this.currentEnd=_38;this.items[0].getItem("startHours").setValue(this.getHours(_37.getHours()));this.items[0].getItem("endHours").setValue(this.getHours(_38.getHours()));this.items[0].getItem("startMinutes").setValue(_37.getMinutes());this.items[0].getItem("endMinutes").setValue(_38.getMinutes());if(!_3.twentyFourHourTime){this.items[0].getItem("startAMPM").setValue(this.getAMPM(_37.getHours()));this.items[0].getItem("endAMPM").setValue(this.getAMPM(_38.getHours()))}
+this.items[0].getItem("name").setValue(_39);this.items[0].getItem("description").setValue("")},getHours:function(_37){if(this.creator.twentyFourHourTime)return _37;else return this.creator.$53n(_37)},getAMPM:function(_37){if(_37<12)return"am";else return"pm"},setEvent:function(_37){this.event=_37;if(this.creator.eventEditorFields){this.items[0].clearErrors(true);this.items[0].setCustomValues(_37)}
+this.setDate(_37[this.creator.startDateField],_37[this.creator.endDateField]);this.items[0].getItem("name").setValue(_37[this.creator.nameField]);this.items[0].getItem("description").setValue(_37[this.creator.descriptionField]);this.originalStart=isc.clone(this.currentStart);this.originalEnd=isc.clone(this.currentEnd)},hide:function(){this.Super('hide');if(this.creator.dayView)this.creator.dayView.clearSelection();if(this.creator.weekView)this.creator.weekView.clearSelection();this.creator.eventEditor.hideItem("invalidDate")},sizeMe:function(){this.setWidth(this.creator.mainView.getVisibleWidth());this.setHeight(this.creator.mainView.getVisibleHeight());this.setLeft(this.creator.mainView.getLeft())}});if(!this.children)this.children=[];var _34=[];var _35=[];_35.add(this.dateChooser);if(this.showDateChooser){_34.add(isc.VLayout.create({autoDraw:false,width:"20%",membersMargin:10,layoutTopMargin:10,members:_35}))}
+if(this.mainView.isA("TabSet")){_34.add(this.mainView)}else{if(this.showControlsBar!=false){var _36=isc.HLayout.create({autoDraw:false,height:this.controlsBar.getVisibleHeight(),width:"100%"});_36.addMember(isc.LayoutSpacer.create({autoDraw:false,width:"*"}));_36.addMember(this.controlsBar);_36.addMember(isc.LayoutSpacer.create({autoDraw:false,width:"*"}));_34.add(isc.VLayout.create({autoDraw:false,members:[_36,this.mainView]}))}else{_34.add(this.mainView)}}
+this.children.add(isc.HLayout.create({autoDraw:false,width:"100%",height:"100%",members:_34}));this.eventEditorLayout.hide();this.setDateLabel()}
+);isc.evalBoundary;isc.B.push(isc.A.setDateLabel=function isc_Calendar_setDateLabel(){if(!this.dateDisplay)return;if(this.dayViewSelected()){this.dateDisplay.setContents("<b>"+Date.getFormattedDateRangeString(this.chosenDate)+"</b>")}else if(this.weekViewSelected()){var _1=this.$656();var _2=_1[0];var _3=_1[1];this.dateDisplay.setContents("<b>"+Date.getFormattedDateRangeString(_2,_3)+"</b>")}else if(this.monthViewSelected()){this.dateDisplay.setContents("<b>"+this.chosenDate.getShortMonthName()+" "+this.chosenDate.getFullYear()+"</b>")}else if(this.timelineViewSelected()){var _4=this.timelineView,_5=_4.startDate,_6=_4.endDate;var _7="<b>"+_4.formatDateForDisplay(_5)+"</b> through <b>"+_4.formatDateForDisplay(_6)+"</b>";this.dateDisplay.setContents(_7)}}
+,isc.A.$656=function isc_Calendar__getWeekRange(){var _1=this.chosenWeekStart.duplicate();var _2=this.chosenWeekEnd.duplicate();if(!this.showWeekends){var _3=Date.getWeekendDays();var _4=7-_3.length;while(_3.contains(_1.getDay())){_1.setDate(_1.getDate()+1)}
+var _5=0,_6=_1.duplicate();for(var i=0;i<_4;i++){if(_3.contains(_6.getDay()))_5++;_6.setDate(_6.getDate()+1)}
+_2=_1.duplicate();_2.setDate(_2.getDate()+(_4-1)+_5)}
+return[_1,_2]}
+,isc.A.dayViewSelected=function isc_Calendar_dayViewSelected(){if(this.mainView&&!this.mainView.isA("TabSet"))return this.mainView.viewName=="day";else return this.$567=="day"}
+,isc.A.weekViewSelected=function isc_Calendar_weekViewSelected(){if(this.mainView&&!this.mainView.isA("TabSet"))return this.mainView.viewName=="week";else return this.$567=="week"}
+,isc.A.monthViewSelected=function isc_Calendar_monthViewSelected(){if(this.mainView&&!this.mainView.isA("TabSet"))return this.mainView.viewName=="month";else return this.$567=="month"}
+,isc.A.timelineViewSelected=function isc_Calendar_timelineViewSelected(){if(this.mainView&&!this.mainView.isA("TabSet"))return this.mainView.viewName=="timeline";else return this.$567=="timeline"}
+,isc.A.$53l=function isc_Calendar__showEventDialog(_1,_2,_3,_4){if(!_4){this.eventDialog.event=null;if(this.eventEditorLayout)this.eventEditorLayout.event=null;this.eventDialog.items[0].createFields(false);var _5,_6;_5=this.$53m(_1,_2);if(this.monthViewSelected()){var _7=new Date();_7=_7.getHours();if(_7>22)_7-=1;_5.setHours(_7)}
+if(_3&&_3>1){_6=this.$53m(_1+_3,_2)}
+this.eventDialog.setDate(_5,_6)}else{this.eventDialog.eventWindow=_4;this.eventDialog.items[0].createFields(true);this.eventDialog.setEvent(_4.event)}
+this.eventDialog.moveTo(0,-10000);this.eventDialog.show();var _8=this.getSelectedView().getCellPageRect(_1,_2);this.eventDialog.placeNear(_8[0],_8[1]);isc.Timer.setTimeout(this.ID+".eventDialog.bringToFront()")}
+,isc.A.$53j=function isc_Calendar__showEventEditor(_1){if(!this.eventEditorLayout.isDrawn())this.eventEditorLayout.draw();this.eventEditorLayout.setWidth(this.mainView.getVisibleWidth());this.eventEditorLayout.setHeight(this.mainView.getVisibleHeight());this.eventEditorLayout.setPageLeft(this.mainView.getPageLeft());this.eventEditorLayout.setPageTop(this.getPageTop());if(_1){this.eventEditorLayout.setEvent(_1)}else{this.eventEditor.clearValues();if(this.eventEditorFields){this.eventEditorLayout.items[0].setCustomValues(this.eventDialog.items[0].getCustomValues())}
+var _2=this.eventDialog.items[0].getValue(this.nameField);this.eventEditorLayout.setDate(this.eventDialog.currentStart,this.eventDialog.currentEnd,_2)}
+this.eventDialog.hide();this.eventEditorLayout.show()}
+,isc.A.$53k=function isc_Calendar__getEventDialogTitle(_1,_2){var _3=Date.getShortDayNames();var _4=Date.getShortMonthNames();var _5=isc.Time.toTime(_1,this.timeFormatter,true),_6=isc.Time.toTime(_2,this.timeFormatter,true);var _7=_5+" - "+_6;return _3[_1.getDay()]+", "+_4[_1.getMonth()]+" "+_1.getDate()+", "+_7}
+,isc.A.$53n=function isc_Calendar__to12HrNotation(_1){if(_1==0)return 12;else if(_1<13)return _1;else return _1-12}
+,isc.A.$534=function isc_Calendar__to24HourNotation(_1,_2){_1=parseInt(_1);if(_2.toLowerCase()=="am"&&_1==12){return 0}else if(_2.toLowerCase()=="pm"&&_1<12){return _1+12}else{return _1}}
+,isc.A.$53m=function isc_Calendar__getDateFromPoint(_1,_2){var _3;if(this.dayViewSelected()){_3=this.chosenDate.duplicate()}else if(this.weekViewSelected()){var _4=this.weekView.getField(_2);if(!_4.$66a)return;_3=new Date(_4.$66a,_4.$659,_4.$658)}else if(this.monthViewSelected()){var _5=this.monthView.data.get(_1);var _6=this.monthView.getField(_2).$66b;_3=_5["date"+_6].duplicate();_3.setHours(0);_3.setMinutes(0);_3.setSeconds(0)}else if(this.timelineViewSelected()){var _7=this.timelineView;_3=this.timelineStartDate.duplicate();if(_7.timelineGranularity=="day"){_3.setDate(_3.getDate()+_2)}else{_3.setHours(_3.getHours()+_2)}}else{return}
+if(this.dayViewSelected()||this.weekViewSelected()){var _8,_9=_1,_10=0;if(_1%2==1){_9=_1-1;_10=30}
+_3.setHours(_9/ 2,_10)}
+return _3}
+,isc.A.$54g=function isc_Calendar__getMinutePixels(_1,_2,_3){if(_3=="timeline"){var _4=_2;return Math.round(_4/ 60)*_1}else{return Math.round((_2/ 30)*_1)}}
+,isc.A.monthViewEventClick=function isc_Calendar_monthViewEventClick(_1,_2,_3){var _4=this.monthView.getEvents(_1,_2);var _5=_4[_3];if(this.eventClick(_5,"month"))this.$53j(_5)}
+,isc.A.getDayBodyHTML=function isc_Calendar_getDayBodyHTML(_1,_2,_3,_4,_5){var _6=_1.getDay();var _7=_2,_8=15,_9=this.monthView.data?this.monthView.data[1]:null,_10=this.monthView.getRowHeight(_9,1);var _11="";for(var i=0;i<_7.length;i++){var _13=isc.Time.toTime(_7[i][this.startDateField],this.timeFormatter,true)+" ";if(this.canEditEvent(_7[i])){var _14="<a href='javascript:"+this.ID+".monthViewEventClick("+_4+","+_5+","+i+");' class='"+this.calMonthEventLinkStyle+"'>";_11+=_14+_13+_7[i][this.nameField]+"</a><br/>"}else{_11+=_13+_7[i][this.nameField]+"<br/>"}
+if((i+3)*_8>_10)break}
+if(i<_7.length-1){_11+="+ "+(_7.length-1-i)+" more..."}
+return _11}
+,isc.A.getDayHeaderHTML=function isc_Calendar_getDayHeaderHTML(_1,_2,_3,_4,_5){return _1.getDate()}
+,isc.A.dayBodyClick=function isc_Calendar_dayBodyClick(_1,_2,_3,_4,_5){return true}
+,isc.A.dayHeaderClick=function isc_Calendar_dayHeaderClick(_1,_2,_3,_4,_5){return true}
+,isc.A.eventClick=function isc_Calendar_eventClick(){return true}
+,isc.A.eventRemoveClick=function isc_Calendar_eventRemoveClick(){return true}
+,isc.A.eventMoved=function isc_Calendar_eventMoved(){return true}
+,isc.A.eventResized=function isc_Calendar_eventResized(){return true}
+,isc.A.timelineEventMoved=function isc_Calendar_timelineEventMoved(){return true}
+,isc.A.timelineEventResized=function isc_Calendar_timelineEventResized(){return true}
+,isc.A.getValidSnapDate=function isc_Calendar_getValidSnapDate(_1,_2){var _3=this.eventSnapGap;var _4=((_1.getHours()*60)+_1.getMinutes())%_3;var _5=(_2.getHours()*60)+_2.getMinutes();var _6=Math.round((_5-_4)/_3);var _7=(_6*_3)+_4;var _8=Math.floor(_7/ 60),_9=_7%60;_2.setHours(_8);_2.setMinutes(_9);return _2}
+,isc.A.selectTab=function isc_Calendar_selectTab(_1){if(this.mainView&&this.mainView.isA("TabSet")&&this.mainView.tabs.getLength()>_1){this.mainView.selectTab(_1);this.refreshSelectedView();return true}else{return false}}
+,isc.A.parentResized=function isc_Calendar_parentResized(){this.Super('parentResized',arguments);if(this.eventEditorLayout.isVisible())this.eventEditorLayout.sizeMe()}
+,isc.A.dateChanged=function isc_Calendar_dateChanged(){return true}
+,isc.A.getActiveDay=function isc_Calendar_getActiveDay(){var _1=this.getActiveTime();if(_1)return _1.getDay()}
+,isc.A.getActiveTime=function isc_Calendar_getActiveTime(){var _1=this.ns.EH,_2=this.getSelectedView();var _3=_2.getEventColumn();var _4=_2.getEventRow();return this.$53m(_4,_3)}
+,isc.A.setTimelineRange=function isc_Calendar_setTimelineRange(_1,_2,_3,_4,_5){if(this.timelineView)this.timelineView.setTimelineRange(_1,_2,_3,_4);if(_5)this.fireCallback(_5)}
+);isc.B._maxIndex=isc.C+82;isc.ClassFactory.defineClass("DaySchedule","ListGrid");isc.DaySchedule.changeDefaults("bodyProperties",{childrenSnapToGrid:true,snapToCells:true,redrawOnResize:true});isc.A=isc.DaySchedule.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoDraw=false;isc.A.canSort=false;isc.A.canResizeFields=false;isc.A.canReorderFields=false;isc.A.showHeader=false;isc.A.showHeaderContextMenu=false;isc.A.showAllRecords=true;isc.A.fixedRecordHeights=true;isc.A.labelColumnWidth=60;isc.A.labelColumnAlign="right";isc.A.showLabelColumn=true;isc.A.labelColumnPosition="left";isc.A.labelColumnBaseStyle="labelColumn";isc.A.showRollOver=true;isc.A.useCellRollOvers=true;isc.A.canSelectCells=true;isc.B.push(isc.A.initWidget=function isc_DaySchedule_initWidget(){this.fields=[];var _1={width:this.labelColumnWidth,name:"label",title:" ",cellAlign:"right",formatCellValue:function(_9,_10,_11,_12,_13){if(_11%2==0){var _2=(_11/ 2);var _3=isc.Time.parseInput(_2);return isc.Time.toTime(_3,_13.creator.timeFormatter,true)}
+else{return""}}}
+if(this.showLabelColumn&&this.labelColumnPosition=="left"){this.fields.add(_1)}
+this.fields.add({name:"day1",align:"center"});if(this.$53i){var _4=8;for(var i=2;i<_4;i++){this.fields.add({name:"day"+i,align:"center"})}
+this.showHeader=true}
+if(this.$53i&&!this.creator.showWeekends){var _6=this.showLabelColumn&&this.labelColumnPosition=="left"?1:0;var _7=Date.getWeekendDays();for(var i=_6;i<this.fields.length;i++){var _8=((i-_6)+this.creator.firstDayOfWeek)%7;if(_7.contains(_8)){this.fields[i].showIf="return false;"}}}
+if(this.showLabelColumn&&this.labelColumnPosition=="right"){this.fields.add(_1)}
+this.data=isc.DaySchedule.$53o;this.Super("initWidget")}
+,isc.A.draw=function isc_DaySchedule_draw(_1,_2,_3,_4){this.invokeSuper(isc.DaySchedule,"draw",_1,_2,_3,_4);this.logDebug('draw','calendar');this.refreshEvents();this.setSnapGap();if(this.creator.scrollToWorkday)this.scrollToWorkdayStart()}
+,isc.A.setSnapGap=function isc_DaySchedule_setSnapGap(){var _1=this.creator.eventSnapGap;this.body.snapVGap=Math.round((_1/ 30)*this.body.getRowSize(0));this.body.snapHGap=null}
+,isc.A.scrollToWorkdayStart=function isc_DaySchedule_scrollToWorkdayStart(){var _1=isc.Time.parseInput(this.creator.workdayStart);var _2=_1.getHours()*2;if(_1.getMinutes()>0)_2++;var _3=this.getRowHeight(null,0)*_2;this.body.scrollTo(0,_3)}
+,isc.A.getRowHeight=function isc_DaySchedule_getRowHeight(_1,_2){if(this.creator.scrollToWorkday){var _3=isc.Time.parseInput(this.creator.workdayEnd).getHours()
+-isc.Time.parseInput(this.creator.workdayStart).getHours();if(_3<=0)return this.cellHeight;var _4=Math.floor(this.body.getViewportHeight()/(_3*2));return _4<this.cellHeight?this.cellHeight:_4}else{return this.cellHeight}}
+,isc.A.getDayFromCol=function isc_DaySchedule_getDayFromCol(_1){var _2=this.fields.get(_1).$654;return _2}
+,isc.A.getDateFromCol=function isc_DaySchedule_getDateFromCol(_1){var _2=this.fields.get(_1);var _3=new Date(_2.$66a,_2.$659,_2.$658);return _3}
+,isc.A.isLabelCol=function isc_DaySchedule_isLabelCol(_1){if(_1==0&&this.showLabelColumn&&this.labelColumnPosition=="left"){return true}else if(_1==this.fields.length-1&&this.showLabelColumn&&this.labelColumnPosition=="right"){return true}else{return false}}
+,isc.A.colDisabled=function isc_DaySchedule_colDisabled(_1){var _2=this.$53i?this.getDayFromCol(_1):this.creator.chosenDate.getDay();if(this.creator.disableWeekends&&Date.getWeekendDays().contains(_2)){return true}else{return false}}
+,isc.A.refreshStyle=function isc_DaySchedule_refreshStyle(){if(!this.body)return;for(var i=0;i<this.data.length;i++){this.body.refreshCellStyle(i,1)}}
+,isc.A.headerClick=function isc_DaySchedule_headerClick(_1,_2){if(this.isLabelCol(_1))return true;var _3=this.getField(_1);var _4=this.creator;_4.dateChooser.dateClick(_3.$66a,_3.$659,_3.$658);_4.selectTab(0);return true}
+,isc.A.getCellAlign=function isc_DaySchedule_getCellAlign(_1,_2,_3){return this.labelColumnAlign}
+,isc.A.cellMouseDown=function isc_DaySchedule_cellMouseDown(_1,_2,_3){if(this.isLabelCol(_3)||this.colDisabled(_3))return true;var _4=this.creator.$53m(this.getEventRow(),this.getEventColumn());if(this.creator.backgroundMouseDown&&this.creator.backgroundMouseDown(_4)==false)return;if(!this.creator.canCreateEvents)return true;this.clearSelection();this.$53q={};this.$53q.colNum=_3;this.$53q.startRowNum=_2;this.$53q.endRowNum=_2;this.$53r=true;this.refreshCellStyle(_2,_3)}
+,isc.A.cellOver=function isc_DaySchedule_cellOver(_1,_2,_3){if(this.$53r&&this.$53q){var _4;if(this.$53q.startRowNum<this.$53q.endRowNum){if(_2>this.$53q.endRowNum){_4=_2}else{_4=this.$53q.endRowNum}
+this.$53q.endRowNum=_2}else{if(_2<this.$53q.endRowNum){_4=_2}else{_4=this.$53q.endRowNum}
+this.$53q.endRowNum=_2}
+var _5=6;var _3=this.$53q.colNum;for(var i=_4-_5;i<_4+_5;i++){if(i>=0&&i<=47)this.refreshCellStyle(i,_3)}}}
+,isc.A.cellMouseUp=function isc_DaySchedule_cellMouseUp(_1,_2,_3){if(!this.$53q)return true;this.$53r=false;var _4,_5,_6;if(this.$53q.startRowNum>this.$53q.endRowNum){_4=this.$53q.endRowNum;_5=this.$53q.startRowNum}else{_5=this.$53q.endRowNum;_4=this.$53q.startRowNum}
+_6=_5-_4+1;if(this.creator.backgroundClick){var _7=this.creator.$53m(_4,_3);var _8=this.creator.$53m(_4+_6,_3);if(this.creator.backgroundClick(_7,_8)==false){this.clearSelection();return}}
+this.creator.$53l(_4,this.$53q.colNum,_6)}
+,isc.A.getCellStyle=function isc_DaySchedule_getCellStyle(_1,_2,_3){var _4=this.getBaseStyle(_1,_2,_3);if(this.isLabelCol(_3))return _4;if(this.colDisabled(_3))return this.baseStyle+"Disabled";if(this.$53q&&this.$53q.colNum==_3){var _5=this.$53q.startRowNum,_6=this.$53q.endRowNum;if(_2>=_5&&_2<=_6||_2>=_6&&_2<=_5){return this.creator.selectedCellStyle}else{return _4}}else{return _4}}
+,isc.A.getBaseStyle=function isc_DaySchedule_getBaseStyle(_1,_2,_3){if(this.isLabelCol(_3))return this.labelColumnBaseStyle;var _4=this.$53i?this.getDayFromCol(_3):this.creator.chosenDate.getDay();var _5=this.$53i?this.getDateFromCol(_3):this.creator.chosenDate.duplicate(),_6=_5.duplicate(),_7=_5.duplicate(),_8=isc.Time.parseInput(this.creator.workdayStart),_9=isc.Time.parseInput(this.creator.workdayEnd);_5.setHours(_8.getHours());_5.setMinutes(_8.getMinutes());_6.setHours(_9.getHours());_6.setMinutes(_9.getMinutes());_7.setHours(Math.floor(_2/ 2));if(_2%2==1)_7.setMinutes(30);else _7.setMinutes(0);var _10=this.creator.dateIsWorkday(_7);_7=_7.getTime();if(this.creator.showWorkday&&_5.getTime()<=_7&&_7<_6.getTime()&&_10){return this.creator.workdayBaseStyle}else{return this.baseStyle}}
+,isc.A.clearSelection=function isc_DaySchedule_clearSelection(){if(this.$53q){var _1,_2,_3=this.$53q.colNum;if(this.$53q.startRowNum<this.$53q.endRowNum){_1=this.$53q.startRowNum;_2=this.$53q.endRowNum}else{_1=this.$53q.endRowNum;_2=this.$53q.startRowNum}
+this.$53q=null;for(var i=_1;i<_2+1;i++){this.refreshCellStyle(i,_3)}}}
+,isc.A.refreshEvents=function isc_DaySchedule_refreshEvents(){if(!this.body||!this.creator.hasData())return;this.logDebug('refreshEvents:'+this.viewName,"calendar");this.clearEvents();var _1,_2,_3=this.creator;if(this.$53i){_1=_3.chosenWeekStart;_2=_3.chosenWeekEnd}else{_1=new Date(_3.year,_3.month,_3.chosenDate.getDate(),0,0);_2=new Date(_3.year,_3.month,_3.chosenDate.getDate(),23,59)}
+var _4=_3.$53g(_1,_2);for(var i=0;i<_4.length;i++){this.addEvent(_4[i])}}
+,isc.A.sizeEventWindow=function isc_DaySchedule_sizeEventWindow(_1){var _2=this.creator,_3=_1.event;if(!_1.$53v){if(_2.eventAutoArrange){_2.$64n(_1.$53i,_3[_2.startDateField],_3[_2.endDateField])}else{var _4=(_1.$53i?_2.weekView:_2.dayView);var _5=_4.getRowHeight(1),_6=_4.getColumnWidth(_4.isLabelCol(0)?1:0);var _7=_3[_2.endDateField].getHours()==0?24:_3[_2.endDateField].getHours();var _8=false;if(_3[_2.endDateField].getDate()>_3[_2.startDateField].getDate()){_8=true;_7=24}
+var _9=(_7-_3[_2.startDateField].getHours())*(_5*2),_10=_6;if(_2.weekEventBorderOverlap&&_1.$53i)_10+=1;if(_3[_2.startDateField].getMinutes()>0){_9-=_2.$54g(_3[_2.startDateField].getMinutes(),_5)}
+if(_3[_2.endDateField].getMinutes()>0&&!_8){_9+=_2.$54g(_3[_2.endDateField].getMinutes(),_5)}
+var _11=_3[_2.startDateField].getHours()*(_5*2);if(_3[_2.startDateField].getMinutes()>0){_11+=_2.$54g(_3[_2.startDateField].getMinutes(),_5)}
+var _12=_2.getEventLeft(_3,_1.$53i);_1.renderEvent(_11,_12,_10,_9)}}else{_1.$53v=false}}
+,isc.A.clearEvents=function isc_DaySchedule_clearEvents(){if(!this.body||!this.body.children)return;var _1=this.body.children;for(var i=_1.length-1;i>=0;i--){if(isc.isAn.EventWindow(_1[i]))this.body.removeChild(_1[i])}}
+,isc.A.addEvent=function isc_DaySchedule_addEvent(_1){this.clearSelection();var _2=this.creator.$53f(_1);_2.$643=this;if(this.$53i)_2.$53i=true;if(this.body)this.body.addChild(_2);this.sizeEventWindow(_2)}
+,isc.A.removeEvent=function isc_DaySchedule_removeEvent(_1){var _2=this.body.children;for(var i=0;i<_2.length;i++){if(isc.isAn.EventWindow(_2[i])&&_2[i].event===_1){var _4=_2[i];_4.parentElement.removeChild(_4);_4.destroy();return true}}
+return false}
+,isc.A.updateEventWindow=function isc_DaySchedule_updateEventWindow(_1){if(!this.body||!this.body.children)return;var _2=this.body.children,_3=this.creator;if(_3.dataSource)_3.$53s=_3.getDataSource().getLocalPrimaryKeyFields();for(var i=0;i<_2.length;i++){if(isc.isAn.EventWindow(_2[i])&&this.areSame(_2[i].event,_1)){_2[i].event=_1;this.sizeEventWindow(_2[i]);_2[i].setDescriptionText(_1[_3.descriptionField]);return true}}
+return false}
+,isc.A.areSame=function isc_DaySchedule_areSame(_1,_2){var _3=this.creator;if(_3.dataSource){var _4=_3.$53s,_5=true;for(var _6 in _4){if(_1[_6]!=_2[_6]){_5=false;break}}
+return _5}else{return(_1===_2)}}
+);isc.B._maxIndex=isc.C+25;isc.ClassFactory.defineClass("WeekSchedule","DaySchedule");isc.ClassFactory.defineClass("MonthSchedule","ListGrid");isc.ClassFactory.defineClass("MonthScheduleBody","GridBody");isc.MonthSchedule.changeDefaults("headerButtonProperties",{showRollOver:false,showDown:false,cursor:"default"});isc.MonthSchedule.changeDefaults("bodyProperties",{redrawOnResize:true});isc.A=isc.MonthSchedule.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoDraw=false;isc.A.leaveScrollbarGap=false;isc.A.showAllRecords=true;isc.A.fixedRecordHeights=true;isc.A.showHeader=true;isc.A.showHeaderContextMenu=false;isc.A.canSort=false;isc.A.canResizeFields=false;isc.A.canReorderFields=false;isc.A.canHover=true;isc.A.showHover=true;isc.A.hoverWrap=false;isc.A.showRollOver=true;isc.A.useCellRollOvers=true;isc.A.canSelectCells=true;isc.A.firstDayOfWeek=0;isc.A.dayHeaderHeight=20;isc.A.mimimumDayHeight=80;isc.A.alternateRecordStyles=false;isc.B.push(isc.A.initWidget=function isc_MonthSchedule_initWidget(){if(this.creator.data)this.data=this.getDayArray();this.fields=[{name:"day1",align:"center"},{name:"day2",align:"center"},{name:"day3",align:"center"},{name:"day4",align:"center"},{name:"day5",align:"center"},{name:"day6",align:"center"},{name:"day7",align:"center"}];this.firstDayOfWeek=this.creator.firstDayOfWeek;var _1=Date.getShortDayNames();var _2=Date.getWeekendDays();for(var i=0;i<7;i++){var _4=(i+this.firstDayOfWeek)%7;this.fields[i].title=_1[_4];this.fields[i].$654=_4;this.fields[i].$66b=i+1;if(!this.creator.showWeekends&&_2.contains(_4)){this.fields[i].showIf="return false;"}}
+this.Super("initWidget")}
+,isc.A.getDayArray=function isc_MonthSchedule_getDayArray(){var _1=[],_2,_3,_4=new Date(this.creator.year,this.creator.month,1);while(_4.getDay()!=this.creator.firstDayOfWeek){this.incrementDate(_4,-1)}
+if(!this.creator.showWeekends){var _5=Date.getWeekendDays();var _6=_4.duplicate();var _7=true;for(var i=0;i<7-_5.length;i++){if(_6.getMonth()==this.creator.month){_7=false;break}
+this.incrementDate(_6,1)}
+if(_7)this.incrementDate(_4,7)}
+_3=new Date(this.creator.year,this.creator.month,_4.getDate()+40);_2=this.creator.$53g(_4,_3);_2.sortByProperty("name",true,function(_9,_10,_11){return _9[_11.startDateField].getTime()},this.creator);this.$53t=0;for(var i=0;i<6;i++){if(this.creator.showDayHeaders)_1.add(this.getHeaderRowObject(_4));_1.add(this.getEventRowObject(_4,_2));this.incrementDate(_4,7);if(_4.getMonth()!=this.creator.month)break}
+return _1}
+,isc.A.getHeaderRowObject=function isc_MonthSchedule_getHeaderRowObject(_1){var _2={};var _3=_1.duplicate();for(var i=0;i<7;i++){_2["day"+(i+1)]=_3.getDate();_2["date"+(i+1)]=_3.duplicate();this.incrementDate(_3,1)}
+return _2}
+,isc.A.incrementDate=function isc_MonthSchedule_incrementDate(_1,_2){var _3=_1.getDate();_1.setDate(_3+_2);if(_1.getDate()==(_3+_2)-1){_1.setHours(_1.getHours()+1);_1.setDate(_3+_2)}
+return _1}
+,isc.A.getEventRowObject=function isc_MonthSchedule_getEventRowObject(_1,_2){var _3={};var _4=_1.duplicate();for(var i=0;i<7;i++){var _6=[];while(this.$53t<_2.length){var _7=_2[this.$53t];if(_7[this.creator.startDateField].getMonth()!=_4.getMonth()||_7[this.creator.startDateField].getDate()!=_4.getDate()){break}else{_6.add(_7);this.$53t+=1}}
+_3["day"+(i+1)]=_4.getDate();_3["date"+(i+1)]=_4.duplicate();_3["event"+(i+1)]=_6;this.incrementDate(_4,1)}
+return _3}
+,isc.A.getEvents=function isc_MonthSchedule_getEvents(_1,_2){var _3=this.getDayFromCol(_2);var _4=this.fields.get(_2).$66b
+var _5=this.data[_1]["event"+_4];return _5}
+,isc.A.getEventCell=function isc_MonthSchedule_getEventCell(_1){var _2=this.data;for(var _3=0;_3<this.fields.length;_3++){var _4=this.fields[_3].$66b,_5="event"+_4;for(var _6=0;_6<_2.length;_6++){var _7=_2.get(_6)[_5];if(_7!=null&&_7.contains(_1)){return[_6,_3]}}}}
+,isc.A.getDayFromCol=function isc_MonthSchedule_getDayFromCol(_1){var _2=this.fields.get(_1).$654;return _2}
+,isc.A.colDisabled=function isc_MonthSchedule_colDisabled(_1){if(this.creator.disableWeekends&&Date.getWeekendDays().contains(this.getDayFromCol(_1))){return true}else{return false}}
+,isc.A.refreshEvents=function isc_MonthSchedule_refreshEvents(){if(!this.creator.hasData())return;this.logDebug('refreshEvents: month','calendar');this.setData(this.getDayArray())}
+,isc.A.rowIsHeader=function isc_MonthSchedule_rowIsHeader(_1){var _2=this.creator;if(!_2.showDayHeaders||(_2.showDayHeaders&&_1%2==1))return false;else return true}
+,isc.A.formatCellValue=function isc_MonthSchedule_formatCellValue(_1,_2,_3,_4){var _5=this.creator,_6=this.fields.get(_4).$66b,_7=_2["event"+_6],_8=_2["date"+_6],_9=_8.getMonth()!=_5.chosenDate.getMonth();if(this.rowIsHeader(_3)){if(!_5.showOtherDays&&_9){return""}else{return _5.getDayHeaderHTML(_8,_7,_5,_3,_4)}}else{if(!_5.showOtherDays&&_9){return""}else{return _5.getDayBodyHTML(_8,_7,_5,_3,_4)}}}
+,isc.A.getRowHeight=function isc_MonthSchedule_getRowHeight(_1,_2){var _3=this.creator.showDayHeaders;if(this.rowIsHeader(_2)){return this.dayHeaderHeight}else{var _4=_3?this.data.length/ 2:this.data.length,_5=_3?this.body.getViewportHeight()
+-(this.dayHeaderHeight*_4):this.body.getViewportHeight(),_6=_3?this.mimimumDayHeight-this.dayHeaderHeight:this.minimumDayHeight;if(_5/ _4<=_6){return _6}else{var _7=_5%_4,_8=0,_9=_3?(_2-1)/2:_2;if(_9<_7)_8=1;return(Math.floor(_5/ _4)+_8)}}}
+,isc.A.getCellAlign=function isc_MonthSchedule_getCellAlign(_1,_2,_3){if(this.rowIsHeader(_2))return"right"
+else return"left"}
+,isc.A.getCellVAlign=function isc_MonthSchedule_getCellVAlign(_1,_2,_3){if(!this.rowIsHeader(_2))return"top";else return"center"}
+,isc.A.cellHoverHTML=function isc_MonthSchedule_cellHoverHTML(_1,_2,_3){var _4=this.fields.get(_3).$66b;if(!this.rowIsHeader(_2)&&_1["event"+_4]!=null){var _5=_1["event"+_4];var _6="";for(var i=0;i<_5.length;i++){var _8=isc.Time.toTime(_5[i][this.creator.startDateField],this.creator.timeFormatter,true);_6+=_8+" "+_5[i][this.creator.nameField]+"<br/>"}
+return _6}}
+,isc.A.getBaseStyle=function isc_MonthSchedule_getBaseStyle(_1,_2,_3){var _4=this.creator,_5=this.fields.get(_3).$66b;var _6;if(this.rowIsHeader(_2)){if((_2==0&&_1["day"+_5]>7)||(_2==this.data.length-2&&_1["day"+_5]<7)){if(!_4.showOtherDays)return _4.otherDayBlankStyle;else _6=_4.otherDayHeaderBaseStyle}else _6=_4.dayHeaderBaseStyle}else{var _7=this.colDisabled(_3),_8=_4.showDayHeaders?1:0,_9=this.data.length-1;if((_2==_8&&this.data[_8]["day"+_5]>7)||(_2==_9&&this.data[_9]["day"+_5]<7)){if(!_4.showOtherDays)return _4.otherDayBlankStyle;else _6=_7?_4.otherDayBodyBaseStyle+"Disabled":_4.otherDayBodyBaseStyle}else _6=_7?_4.dayBodyBaseStyle+"Disabled":_4.dayBodyBaseStyle}
+return _6}
+,isc.A.cellClick=function isc_MonthSchedule_cellClick(_1,_2,_3){var _4=this.creator,_5,_6,_7=this.fields.get(_3).$66b,_8=_1["date"+_7],_9=_1["event"+_7],_10=_4.chosenDate.getMonth()!=_8.getMonth(),_11=false;if(this.rowIsHeader(_2)){if(!(!this.creator.showOtherDays&&_10)){_11=_4.dayHeaderClick(_8,_9,_4,_2,_3)}
+if(_11){if(_2==0&&_1["day"+_7]>7){if(_4.month==0){_5=_4.year-1;_6=11}else{_5=_4.year;_6=_4.month-1}}else if(_2==this.data.length-2&&_1["day"+_7]<7){if(_4.month==11){_5=_4.year+1;_6=0}else{_5=_4.year;_6=_4.month+1}}else{_5=_4.year;_6=_4.month}
+_4.dateChooser.dateClick(_5,_6,_1["day"+_7]);_4.selectTab(0)}}else{if(!this.colDisabled(_3)&&!(!_4.showOtherDays&&_10)){_11=_4.dayBodyClick(_8,_9,_4,_2,_3);if(_11&&_4.canCreateEvents){_4.$53l(_2,_3)}}}}
+);isc.B._maxIndex=isc.C+18;isc.ClassFactory.defineClass("EventWindow","Window");isc.EventWindow.changeDefaults("resizerDefaults",{overflow:"hidden",height:3,snapTo:"B",canDragResize:true})
+isc.EventWindow.changeDefaults("headerDefaults",{layoutMargin:0,layoutLeftMargin:3,layoutRightMargin:3})
+isc.A=isc.EventWindow.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoDraw=false;isc.A.minHeight=5;isc.A.minWidth=5;isc.A.showHover=true;isc.A.canHover=true;isc.A.hoverWidth=200;isc.A.showHeaderIcon=false;isc.A.showMinimizeButton=false;isc.A.showMaximimumButton=false;isc.A.canDragResize=true;isc.A.canDragReposition=true;isc.A.resizeFrom=["B"];isc.A.showShadow=false;isc.A.showEdges=false;isc.A.showHeaderBackground=false;isc.A.useBackMask=false;isc.A.keepInParentRect=true;isc.A.headerProperties={height:14};isc.A.closeButtonProperties={height:10,width:10};isc.A.bodyColor=null;isc.A.showFooter=true;isc.A.footerProperties={overflow:"hidden",defaultLayoutAlign:"center",height:7};isc.A.bodyConstructor=isc.HTMLFlow;isc.B.push(isc.A.initWidget=function isc_EventWindow_initWidget(){this.bodyStyle=this.baseStyle+"Body";this.headerStyle=this.baseStyle+"Header";if(this.calendar.showDescription!=false){this.bodyProperties={contents:this.descriptionText,valign:"top",overflow:"hidden"}}
+if(this.calendar.showEventBody==false){this.showBody=false;this.showTitle=false}
+this.headerLabelProperties={styleName:this.className+"Header"};this.Super("initWidget",arguments)}
+,isc.A.makeFooter=function isc_EventWindow_makeFooter(){if(!this.showFooter||this.canDragResize==false)return;var _1=this.createAutoChild("resizer",{dragTarget:this,styleName:this.baseStyle+"Resizer"});this.addChild(_1);if(this.resizer)this.resizer.bringToFront()}
+,isc.A.setDescriptionText=function isc_EventWindow_setDescriptionText(_1){if(this.calendar.getDescriptionText){_1=this.calendar.getDescriptionText(this.event)}
+if(_1){if(this.body){this.descriptionText=_1;this.body.setContents(_1)}else{this.descriptionText=_1;if(this.$734){this.$734.setWidth("100%");this.$734.setContents(_1)}}}}
+,isc.A.click=function isc_EventWindow_click(){if(this.$53u)return;if(this.$67e){this.$67e=null;return}
+var _1=this.calendar;var _2=_1.eventClick(this.event,this.$53i?"week":"day");if(_2){if(!_1.canEditEvent(this.event))return;if(this.$53i)_1.weekView.clearSelection();else _1.dayView.clearSelection();var _3=_1.weekView.isLabelCol(0)?1:0;var _4=this.$53i?this.event[_1.startDateField].getDay()-
+_1.firstDayOfWeek+_3:_3;if(this.$53i&&_1.showWeekends==false)_4--;var _5=this.event[_1.startDateField].getHours()*2;_1.$53l(_5,_4,null,this)}}
+,isc.A.mouseDown=function isc_EventWindow_mouseDown(){this.calendar.eventDialog.hide();return isc.EH.STOP_BUBBLING}
+,isc.A.renderEvent=function isc_EventWindow_renderEvent(_1,_2,_3,_4){var _5=this.calendar,_6=this.event;if(isc.isA.Number(_3)&&isc.isA.Number(_4)){this.resizeTo(Math.round(_3),Math.round(_4))}
+if(isc.isA.Number(_1)&&isc.isA.Number(_2)){this.moveTo(Math.round(_2),Math.round(_1))}
+var _7=isc.Time.toTime(_6[_5.startDateField],this.calendar.timeFormatter,true);var _8=_7+" "+_6[_5.nameField];this.setTitle(_8);this.bringToFront()}
+,isc.A.getHoverHTML=function isc_EventWindow_getHoverHTML(){return this.calendar.getEventHoverHTML(this.event,this)}
+,isc.A.closeClick=function isc_EventWindow_closeClick(){var _1=this.calendar;if(_1.eventRemoveClick(this.event)==false){this.$67e=true;return}
+this.Super("closeClick",arguments);this.calendar.removeEvent(this.event,true);this.$53u=true}
+,isc.A.parentResized=function isc_EventWindow_parentResized(){this.Super('parentResized',arguments);this.$643.sizeEventWindow(this)}
+,isc.A.getEventLength=function isc_EventWindow_getEventLength(_1,_2){var _3=_1||this.event[this.calendar.startDateField];var _4=_2||this.event[this.calendar.endDateField];var _5=(_4.getTime()-_3.getTime())/(1000*60);return _5}
+,isc.A.dragRepositionStart=function isc_EventWindow_dragRepositionStart(){var _1=this.getTop()%this.parentElement.snapVGap;this.parentElement.VSnapOrigin=_1}
+,isc.A.dragRepositionStop=function isc_EventWindow_dragRepositionStop(){var _1=this.calendar;var _2=this.event[_1.startDateField],_3=this.event[_1.endDateField];this.Super('dragRepositionStop',arguments);var _4=this.ns.EH,_5=this.parentElement.getEventColumn(),_6=(_4.dragMoveTarget.getTop()-this.parentElement.getPageTop())+this.parentElement.getScrollTop(),_7=this.parentElement.getRowSize(1),_8=Math.floor(_6/ _7),_9=(this.$53i?_1.weekView:_1.dayView);if(_9.isLabelCol(_5)||_9.colDisabled(_5))return false;var _10=_1.$53m(_8,_5);var _11=Math.floor((_6-(_7*_8))*(30/_7));_10.setMinutes(_10.getMinutes()+_11);_10=_1.getValidSnapDate(this.event[_1.startDateField],_10);if(!_1.eventMoved(_10,this.event))return false;var _12=new Date(_10.getFullYear(),_10.getMonth(),_10.getDate(),_10.getHours(),_10.getMinutes());_12.setMinutes(_12.getMinutes()+this.getEventLength());_1.updateEvent(this.event,_10,_12,this.event[_1.nameField],this.event[_1.descriptionField],null,true);if(_1.eventAutoArrange){_1.$64n(this.$53i,_2,_3);_4.dragMoveTarget.setPageRect(this.getPageLeft(),this.getPageTop())}
+return true}
+,isc.A.dragResizeStart=function isc_EventWindow_dragResizeStart(){var _1=(this.getTop()+this.getVisibleHeight())%this.parentElement.snapVGap;this.parentElement.VSnapOrigin=_1}
+,isc.A.dragResizeStop=function isc_EventWindow_dragResizeStop(){var _1=this.calendar;var _2=this.event[_1.startDateField],_3=this.event[_1.endDateField];this.Super('dragResizeStop',arguments);var _4=this.ns.EH,_5=this.parentElement.getEventColumn(),_6=(_4.dragMoveTarget.getTop()-this.parentElement.getPageTop())+this.parentElement.getScrollTop()+_4.dragMoveTarget.getVisibleHeight(),_7=this.parentElement.getRowSize(1),_8=Math.floor(_6/ _7);var _9=_1.$53m(_8,_5);var _10=Math.floor((_6-(_7*_8))*(30/_7));_9.setMinutes(_9.getMinutes()+_10);_9=_1.getValidSnapDate(this.event[_1.endDateField],_9);if(_4.dragMoveTarget.getVisibleHeight()<_7)return false;if(!_1.eventResized(_9,this.event))return false;_1.updateEvent(this.event,this.event[_1.startDateField],_9,this.event[_1.nameField],this.event[_1.descriptionField],null,true);if(_1.eventAutoArrange){_1.$64n(this.$53i,_2,_3);_4.dragMoveTarget.setPageRect(this.getPageLeft(),this.getPageTop())}
+this.$54h=false}
+);isc.B._maxIndex=isc.C+14;isc.ClassFactory.defineClass("TimelineWindow","EventWindow");isc.A=isc.TimelineWindow.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.showFooter=false;isc.A.resizeFrom=["L","R"];isc.B.push(isc.A.initWidget=function isc_TimelineWindow_initWidget(){if(this.calendar.showEventWindowHeader==false){this.showBody=false;this.showTitle=false}
+this.Super("initWidget")}
+,isc.A.draw=function isc_TimelineWindow_draw(_1,_2,_3,_4){this.invokeSuper(isc.TimelineWindow,"draw",_1,_2,_3,_4);if(this.calendar.showEventWindowHeader==false){var _5=isc.Canvas.create({autoDraw:false,width:"100%",height:0,top:0,contents:(this.descriptionText?this.descriptionText:" ")});this.addMember(_5);_5.setHeight(0);_5.setTop(0);this.$734=_5}}
+,isc.A.click=function isc_TimelineWindow_click(){var _1=this.calendar;var _2=_1.eventClick(this.event,this.$53i?"week":"day");if(_2){if(!_1.canEditEvent(this.event))return;if(this.$53i)_1.weekView.clearSelection();else _1.dayView.clearSelection();var _3=_1.weekView.isLabelCol(0)?1:0;var _4=this.$53i?this.event[_1.startDateField].getDay()-
+_1.firstDayOfWeek+_3:_3;if(this.$53i&&_1.showWeekends==false)_4--;var _5=this.event[_1.startDateField].getHours()*2;_1.$53l(_5,_4,null,this)}}
+,isc.A.dragRepositionStart=function isc_TimelineWindow_dragRepositionStart(){this.$8l=this.parentElement.getEventRow();this.$644=this.parentElement.getEventColumn();var _1=0,_2=this.event;if(_2.$646&&_2.$646.slotNum>0){_1=(_2.$646.slotNum-1)*this.getVisibleHeight()}
+this.parentElement.VSnapOrigin=_1;this.parentElement.HSnapOrigin=0;this.hideLines();return true}
+,isc.A.dragRepositionStop=function isc_TimelineWindow_dragRepositionStop(){this.parentElement.HSnapOrigin=0;var _1=this.parentElement.getEventRow(),_2;if(_1!=this.$8l){if(this.calendar.canEditEventType){var _3=this.calendar.eventTypeData.get(_1);_2=_3[this.calendar.eventTypeField]}else{this.showLines();return false}}
+var _4=this.calendar,_5=this.event;_4=this.calendar,_5=this.event;var _6=[_5[_4.startDateField].duplicate(),_5[_4.endDateField].duplicate()];if(_5[_4.leadingDateField]&&_5[_4.trailingDateField]){_6.add(_5[_4.leadingDateField].duplicate());_6.add(_5[_4.trailingDateField].duplicate())}
+var _7=this.ns.EH;var _8=this.getPageLeft()-this.getLeft();var _9=_7.dragMoveTarget.getLeft()-_8;var _10=_4.timelineView.getDateFromPoint(_9);var _11=_10.duplicate();_11.setMinutes(_11.getMinutes()+this.getEventLength());_6[0]=_10;_6[1]=_11;var _12=Math.floor((_10.getTime()-_5[_4.startDateField].getTime())/(1000*60));if(_5[_4.leadingDateField])_6[2].setMinutes(_6[2].getMinutes()+_12);if(_5[_4.trailingDateField])_6[3].setMinutes(_6[3].getMinutes()+_12);var _13={}
+if(_2)_13[_4.eventTypeField]=_2;if(_5[_4.leadingDateField]&&_5[_4.trailingDateField]){_13[_4.leadingDateField]=_6[2];_13[_4.trailingDateField]=_6[3]}
+if(_2==null)_2=_5[_4.eventTypeField];if(_4.adjustEventTimes){var _14=_4.adjustEventTimes(_5,this,_6[0],_6[1],_2);if(_14){_6[0]=_14[0].duplicate();_6[1]=_14[1].duplicate()}}
+if(_4.allowEventOverlap==false){var _15=this.checkForOverlap(_5,_6[0],_6[1],_2);if(_15==true){if(_4.timelineEventOverlap){_4.timelineEventOverlap(false,_5,this,_6[0],_6[1],_2)}
+return false}else if(isc.isAn.Array(_15)){_6[0]=_15[0].duplicate();_6[1]=_15[1].duplicate();if(_4.timelineEventOverlap){_4.timelineEventOverlap(true,_5,this,_6[0],_6[1],_2)}}}
+if(!_4.timelineEventMoved(_5,this,_6[0],_6[1],_2))return false;this.calendar.updateEvent(_5,_6[0],_6[1],_5[_4.nameField],_5[_4.descriptionField],_13,true);return true}
+,isc.A.checkForOverlap=function isc_TimelineWindow_checkForOverlap(_1,_2,_3,_4){var _5={},_6=this.calendar;_5[_6.startDateField]=_2.duplicate();_5[_6.endDateField]=_3.duplicate();_5[_6.eventTypeField]=_4;var _7=_6.timelineView.findOverlappingEvents(_1,_5);if(_7.length==0){return false}else if(_7.length>1){isc.logWarn("overlap detected:"+_7.length);return true}else{var _8=_7[0];var _9=_6.startDateField,_10=_6.endDateField;if(Date.compareDates(_2,_8[_9])==1&&Date.compareDates(_3,_8[_9])==-1){_3=_8[_9].duplicate();_2=_3.duplicate();_2.setMinutes(_2.getMinutes()-this.getEventLength());isc.logWarn('left overlap:'+[_2]);return[_2,_3]}else if(Date.compareDates(_2,_8[_10])==1&&Date.compareDates(_3,_8[_10])==-1){_2=_8[_10].duplicate();_3=_2.duplicate();_3.setMinutes(_3.getMinutes()+this.getEventLength());isc.logWarn('rigth overlap:'+[_8.id,_8.end,_2,_3]);return[_2,_3]}else{return true}}}
+,isc.A.dragResizeStart=function isc_TimelineWindow_dragResizeStart(){var _1=(this.getTop()+this.getVisibleHeight())%this.parentElement.snapVGap;this.parentElement.VSnapOrigin=_1}
+,isc.A.dragResizeStop=function isc_TimelineWindow_dragResizeStop(){var _1=this.calendar,_2,_3,_4=this.ns.EH,_5,_6=this.getPageLeft()-this.getLeft(),_7=_4.dragMoveTarget.getLeft()-_6;if(_7==this.getLeft()){_2=this.event[_1.startDateField].duplicate();var _8=(_7+_4.dragMoveTarget.getVisibleWidth());_3=_1.timelineView.getDateFromPoint(_8);if(this.calendar.sizeEventsToGrid){var _9=this.calendar.timelineView.$731();_3.setMinutes(_3.getMinutes()-_9)}}else{_2=_1.timelineView.getDateFromPoint(_7);_3=this.event[_1.endDateField].duplicate()}
+if(!_1.timelineEventResized(this.event,this,_2,_3))return false;_1.updateEvent(this.event,_2,_3,this.event[_1.nameField],this.event[_1.descriptionField],null,true)}
+,isc.A.destroyLines=function isc_TimelineWindow_destroyLines(){if(this.$645){if(this.$645[0])this.$645[0].destroy();if(this.$645[1])this.$645[1].destroy();if(this.$645[2])this.$645[2].destroy();if(this.$645[3])this.$645[3].destroy()}}
+,isc.A.hideLines=function isc_TimelineWindow_hideLines(){if(this.$645){if(this.$645[0])this.$645[0].hide();if(this.$645[1])this.$645[1].hide();if(this.$645[2])this.$645[2].hide();if(this.$645[3])this.$645[3].hide()}}
+,isc.A.showLines=function isc_TimelineWindow_showLines(){if(this.$645){if(this.$645[0])this.$645[0].show();if(this.$645[1])this.$645[1].show();if(this.$645[2])this.$645[2].show();if(this.$645[3])this.$645[3].show()}}
+,isc.A.hide=function isc_TimelineWindow_hide(){this.invokeSuper(isc.TimelineWindow,"hide");this.hideLines()}
+,isc.A.show=function isc_TimelineWindow_show(){this.invokeSuper(isc.TimelineWindow,"show");this.showLines()}
+,isc.A.parentResized=function isc_TimelineWindow_parentResized(){this.invokeSuper(isc.EventWindow,"parentResized")}
+);isc.B._maxIndex=isc.C+14;isc.ClassFactory.defineClass("TimelineView","ListGrid");isc.TimelineView.changeDefaults("bodyProperties",{childrenSnapToGrid:true,snapToCells:false,suppressVSnapOffset:true});isc.A=isc.TimelineView.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canSort=false;isc.A.canResizeFields=false;isc.A.canReorderFields=false;isc.A.showHeaderContextMenu=false;isc.A.showAllRecords=true;isc.A.fixedRecordHeights=true;isc.A.alternateRecordStyles=true;isc.A.showRollOver=true;isc.A.useCellRollOvers=true;isc.A.canSelectCells=true;isc.A.eventTypeField="eventType";isc.A.eventWidth=60;isc.A.eventHeight=60;isc.A.labelColumnWidth=75;isc.A.labelColumnBaseStyle="labelColumn";isc.A.eventPageSize=30;isc.A.trailIconSize=16;isc.A.leadIconSize=16;isc.A.scrollToToday=false;isc.A.lineImage="[SKINIMG]Stretchbar/hsplit_over_stretch.gif";isc.A.trailingEndPointImage="[SKINIMG]actions/prev.png";isc.A.leadingEndPointImage="[SKINIMG]actions/next.png";isc.B.push(isc.A.initWidget=function isc_TimelineView_initWidget(){this.fields=[];if(this.creator.eventTypeField)this.eventTypeField=this.creator.eventTypeField;if(this.creator.timelineStartDate)this.startDate=this.creator.timelineStartDate;if(this.creator.timelineEndDate)this.endDate=this.creator.timelineEndDate;if(this.creator.renderEventsOnDemand)this.renderEventsOnDemand=this.creator.renderEventsOnDemand;this.cellHeight=this.eventHeight;this.fields=this.calcFields();this.data=this.creator.eventTypeData;this.$730();this.Super("initWidget")}
+,isc.A.$730=function isc_TimelineView__scrubDateRange(){var _1=this.creator.timelineGranularity;if(_1=="day"){this.startDate.setHours(0);this.startDate.setMinutes(0);this.startDate.setSeconds(0);this.startDate.setMilliseconds(0)}else if(_1=="hour"){this.startDate.setMinutes(0);this.startDate.setSeconds(0);this.startDate.setMilliseconds(0)}else if(_1=="minute"){this.startDate.setSeconds(0);this.startDate.setMilliseconds(0)}}
+,isc.A.scrollTimelineTo=function isc_TimelineView_scrollTimelineTo(_1){this.bodies[1].scrollTo(_1)}
+,isc.A.setEventHeight=function isc_TimelineView_setEventHeight(_1){this.eventHeight=_1;this.setCellHeight(_1);this.refreshEvents()}
+,isc.A.setEventWidth=function isc_TimelineView_setEventWidth(_1){this.eventWidth=_1;this.setFields(this.calcFields());this.refreshEvents()}
+,isc.A.setTimelineRange=function isc_TimelineView_setTimelineRange(_1,_2,_3,_4){this.startDate=_1.duplicate();this.creator.timelineStartDate=_1.duplicate();this.endDate=_2.duplicate();this.creator.timelineEndDate=_2.duplicate();if(_3)this.creator.timelineGranularity=_3;if(_4)this.creator.timelineUnitsPerColumn=_4;isc.logWarn('setTimelineRange:'+[_3,_4,this.creator.timelineGranularity,this.creator.timelineUnitsPerColumn]);var _5=this.calcFields();this.setFields(_5);this.$730();this.refreshVisibleEvents()}
+,isc.A.addUnits=function isc_TimelineView_addUnits(_1,_2){if(this.creator.timelineGranularity=="day"){_1.setDate(_1.getDate()+_2)}else if(this.creator.timelineGranularity=="hour"){_1.setHours(_1.getHours()+_2)}else if(this.creator.timelineGranularity=="minute"){_1.setMinutes(_1.getMinutes()+_2)}
+return _1}
+,isc.A.calcFields=function isc_TimelineView_calcFields(){var _1=[];if(this.creator.timelineLabelFields){var _2=this.creator.timelineLabelFields;for(var i=0;i<_2.length;i++){_1.add(_2[i])}}else{var _4={width:this.labelColumnWidth,name:this.eventTypeField,title:" ",frozen:true}
+_1.add(_4)}
+var _5=this.startDate.duplicate();var _6=this.endDate;var _7=0;var _8=this.creator.timelineUnitsPerColumn;while(_5.getTime()<=_6.getTime()){var _9=isc.addProperties({name:"f"+_7,title:this.getDayFieldTitle(_5),width:this.eventWidth},this.getFieldProperties(_5));_1.add(_9);_5=this.addUnits(_5,_8);_7++}
+return _1}
+,isc.A.getFieldProperties=function isc_TimelineView_getFieldProperties(_1){return null}
+,isc.A.getDayFieldTitle=function isc_TimelineView_getDayFieldTitle(_1){if(this.creator.timelineGranularity=="day"){return(_1.getMonth()+1)+"/"+_1.getDate()}else{var _2=_1.getMinutes().toString();if(_2.length==1)_2="0"+_2;return _1.getHours()+":"+_2}}
+,isc.A.draw=function isc_TimelineView_draw(_1,_2,_3,_4){this.invokeSuper(isc.TimelineView,"draw",_1,_2,_3,_4);var _5=this.creator.timelineSnapGap;if(_5){this.body.snapHGap=Math.round((_5/ 60)*this.eventWidth)}else{this.body.snapHGap=this.eventWidth}
+this.body.snapVGap=this.eventHeight;if(this.scrollToToday!=false){var _6=new Date();_6.setDate(_6.getDate()-this.scrollToToday);var _7=this.creator.getDayDiff(this.startDate,_6);var _8=_7*this.eventWidth;this.bodies[1].scrollTo(_8,0)}
+this.logDebug('draw','calendar');this.refreshEvents()}
+,isc.A.getCellCSSText=function isc_TimelineView_getCellCSSText(_1,_2,_3){var _4=this.startDate.duplicate();_4.setDate(_4.getDate()+_3-this.getLabelColCount());var _5=new Date();if(_4.toShortDate()==_5.toShortDate()&&this.creator.todayBackgroundColor){return"background-color:"+this.creator.todayBackgroundColor}else return null}
+,isc.A.formatDateForDisplay=function isc_TimelineView_formatDateForDisplay(_1){return _1.getShortMonthName()+" "+_1.getDate()+", "+_1.getFullYear()}
+,isc.A.getLabelColCount=function isc_TimelineView_getLabelColCount(){if(this.creator.timelineLabelFields){return this.creator.timelineLabelFields.length}else{return 1}}
+,isc.A.isLabelCol=function isc_TimelineView_isLabelCol(_1){if(_1<this.getLabelColCount())return true;else return false}
+,isc.A.getCellStyle=function isc_TimelineView_getCellStyle(_1,_2,_3){var _4=this.getBaseStyle(_1,_2,_3);if(this.isLabelCol(_3))return _4;else{return _4}}
+,isc.A.getBaseStyle=function isc_TimelineView_getBaseStyle(_1,_2,_3){if(this.isLabelCol(_3))return this.labelColumnBaseStyle;else{return this.baseStyle}}
+,isc.A.nextOrPrev=function isc_TimelineView_nextOrPrev(_1){var _2=_1?this.eventPageSize:0-this.eventPageSize;this.startDate.setDate(this.startDate.getDate()+_2);this.endDate.setDate(this.endDate.getDate()+_2);this.setFields(this.calcFields());if(this.creator.dataSource&&isc.ResultSet&&isc.isA.ResultSet(this.creator.data)){this.creator.data.invalidateCache();this.creator.filterData(this.creator.getNewCriteria())}else{this.creator.dataChanged()}}
+,isc.A.refreshEvents=function isc_TimelineView_refreshEvents(){if(!this.body||!this.creator.hasData())return;var _1=this.startDate,_2=this.endDate,_3=this.creator;var _4=_3.data.getRange(0,_3.data.getLength());this.logDebug('refreshing events','calendar');this.tagDataForOverlap(_4);this.refreshVisibleEvents()}
+,isc.A.getVisibleEvents=function isc_TimelineView_getVisibleEvents(){var _1=this.getVisibleDateRange();var _2=this.getVisibleRowRange();var _3=this.creator;var _4=_3.data;var _5=[];for(var i=0;i<_4.getLength();i++){var _7=_4.get(i);if(!_7){isc.logWarn('getVisibleEvents: potentially invalid index: '+i);break}
+var _8={};if(_7[_3.leadingDateField]&&_7[_3.trailingDateField]){_8[_3.leadingDateField]=_1[0];_8[_3.trailingDateField]=_1[1]}else{_8[_3.startDateField]=_1[0];_8[_3.endDateField]=_1[1]}
+var _9=this.data.findIndex(_3.eventTypeField,_7[_3.eventTypeField]);if(this.eventsOverlap(_8,_7)&&_2[0]<=_9&&_9<=_2[1]){_5.add(_7)}}
+return _5}
+,isc.A.findOverlappingEvents=function isc_TimelineView_findOverlappingEvents(_1,_2){var _3=this.creator;var _4=_3.data;var _5=[];for(var i=0;i<_4.getLength();i++){var _7=_4.get(i);if(!_7){isc.logWarn('getVisibleEvents: potentially invalid index: '+i);break}
+if(_3.eventsAreSame(_7,_1)){continue}
+var _8={};if(_7[_3.leadingDateField]&&_7[_3.trailingDateField]){_8[_3.leadingDateField]=_2[_3.leadingDateField];_8[_3.trailingDateField]=_2[_3.trailingDateField]}else{_8[_3.startDateField]=_2[_3.startDateField];_8[_3.endDateField]=_2[_3.endDateField]}
+if(_2[_3.eventTypeField]==_7[_3.eventTypeField]&&this.eventsOverlap(_8,_7)){_5.add(_7)}}
+return _5}
+,isc.A.refreshVisibleEvents=function isc_TimelineView_refreshVisibleEvents(){var _1=this.getVisibleEvents();var _2=_1.getLength();this.logDebug('refreshing visible events','calendar');for(var i=0;i<_2;i++){var _4=_1.get(i);if(_4.$646)_4.$646.visited=false;this.addEvent(_4,i)}
+this.clearEvents(_2)}
+,isc.A.tagDataForOverlap=function isc_TimelineView_tagDataForOverlap(_1,_2){if(_1.getLength()==0)return;var _3=this.creator,_4=[],_5=0,_6=0,_7=0,_8=_1.get(0)[_3.eventTypeField];_1.sort(function(_19,_20){var _9;if(_19[_3.leadingDateField]&&_20[_3.leadingDateField])_9=_3.leadingDateField;else _9=_3.startDateField;if(_19[_3.eventTypeField]<_20[_3.eventTypeField])return-1;else if(_19[_3.eventTypeField]>_20[_3.eventTypeField])return 1;else{if(_3.timelineView.secondarySort){return _3.timelineView.secondarySort(_19,_20)}else{if(_19[_9]<_20[_9])return-1;else if(_19[_9]>_20[_9])return 1;else return 0}}});var _10=0,_11=[];if(_2){while(_10<_1.getLength()&&_1.get(_10)[_3.eventTypeField]!=_2){_10++}}
+for(var i=_10;i<_1.getLength();i++){var _13=_1.get(i);if(_2&&_13[_3.eventTypeField]!=_2){break}else if(_2)_11.add(_13);if(_13[_3.eventTypeField]!=_8){_5=_6=_7=0;_4=[];_8=_13[_3.eventTypeField]}
+var _14=true;var _15=[];for(var j=0;j<_4.length;j++){var _17=_4[j];if(this.allEventsOverlap||this.eventsOverlap(_13,_17)){_15.add(_17)}else{_5--;if(_5==0)_6=1;_14=false}}
+_4=_15;_4.add(_13);_5++;if(_14&&_4.length>_6){_6++}
+for(var j=0;j<_4.length;j++){var _17=_4[j];if(!_17.$646)_17.$646={};if(!_17.$646.visited){_17.$646.slotNum=null;var _18=this.nextAvailSlot(_4,_6);if(_18<1){isc.logWarn("Calendar.timelineView.tagDataForOverlap, no slot for event:"+isc.Log.echoFull(_17))}
+_17.$646.slotNum=_18;_17.$646.visited=true}
+_17.$646.totalSlots=_6}
+if(_6>_7)_7++}
+return _11}
+,isc.A.nextAvailSlot=function isc_TimelineView_nextAvailSlot(_1,_2){var _3=[];for(var i=0;i<_2;i++){_3.add(false)}
+for(var i=0;i<_1.length;i++){var _5=_1[i];if(!_5.$646)continue;if(_5.$646.slotNum)_3[_5.$646.slotNum-1]=true}
+var _6=_3.indexOf(false)+1;return _6}
+,isc.A.eventsOverlap=function isc_TimelineView_eventsOverlap(_1,_2){var _3,_4,_5=this.creator;if(_1[_5.leadingDateField]&&_2[_5.leadingDateField])_3=_5.leadingDateField;else _3=_5.startDateField;if(_1[_5.trailingDateField]&&_2[_5.trailingDateField])_4=_5.trailingDateField;else _4=_5.endDateField;if(_5.equalDatesOverlap){if(_1[_4]<_2[_3]||_1[_3]>_2[_4])return false;else return true}else{if(_1[_4]<=_2[_3]||_1[_3]>=_2[_4])return false;else return true}}
+,isc.A.compareDates=function isc_TimelineView_compareDates(_1,_2,_3){if(_1.getFullYear()<_2.getFullYear()){return 1}else if(_1.getFullYear()>_2.getFullYear()){return-1}
+if(_1.getMonth()<_2.getMonth()){return 1}else if(_1.getMonth()>_2.getMonth()){return-1}
+if(_1.getDate()<_2.getDate()){return 1}else if(_1.getDate()>_2.getDate()){return-1}
+return 0}
+,isc.A.getDateFromPoint=function isc_TimelineView_getDateFromPoint(_1,_2){var _3=this.startDate.duplicate();var _4=this.eventWidth;var _5=this.$731();var _6=0;_6+=Math.floor(_1/ _4)*_5;if(!_2)_6+=((_1%_4)/_4)*_5;_3.setMinutes(_3.getMinutes()+_6);return _3}
+,isc.A.$731=function isc_TimelineView__getMinsInACell(){var _1=this.creator.timelineUnitsPerColumn;var _2=this.creator.timelineGranularity;var _3;var _4=0;if(_2=="day"){var _5=24*60;_3=_1*_5}else if(_2=="hour"){_3=_1*60}else if(_2=="minute"){_3=_1}
+return _3}
+,isc.A.$732=function isc_TimelineView__getEventBreadth(_1){var _2=this.$731();var _3,_4;if(_1.event[this.creator.startDateField].getTime()<this.startDate.getTime()){_3=this.startDate.duplicate()}else{_3=_1.event[this.creator.startDateField]}
+if(_1.event[this.creator.endDateField].getTime()>this.endDate.getTime()){_4=this.endDate.duplicate();_4.setMinutes(_4.getMinutes()+_2)}else{_4=_1.event[this.creator.endDateField].duplicate()}
+var _5=_1.getEventLength(_3,_4);var _6=this.eventWidth;var _7=0;var _8=Math.floor(_5/ _2);if(this.creator.sizeEventsToGrid){_8+=1}
+_7+=_8*_6;if(this.creator.sizeEventsToGrid==false){_7+=Math.floor(((_5%_2)/_2)*_6)}
+return _7}
+,isc.A.getEventLeft=function isc_TimelineView_getEventLeft(_1){var _2=(_1[this.creator.startDateField].getTime()-this.startDate.getTime())
+/ (1000 * 60); // Don't work with fractional min-diff as this could potentially introduce
+ // precision errors
+ _2 = Math.round(_2); var _3 = this.eventWidth; var _4 = this.$731(); var _5 = 0; // first get how many columns from range start the event is
+ _5 += Math.floor(_2 /_4)*_3;if(this.creator.sizeEventsToGrid==false){_5+=Math.round(((_2%_4)/_4)*_3)}
+if(_5<0)_5=0;return _5}
+,isc.A.sizeEventWindow=function isc_TimelineView_sizeEventWindow(_1,_2){var _3=this.creator,_4=_1.event,_5=this.eventWidth,_6=this.eventHeight;var _7=_4[_3.eventWindowStyleField]||_3.eventWindowStyle;if(_7){_1.setStyleName(_7);if(_3.showDescription==false&&_1.header){_1.header.setStyleName(_7)}}
+if(_4.eventWindowBackgroundColor){_1.setBackgroundColor(_4.eventWindowBackgroundColor)}else{_1.backgroundColor=null;if(_1.isDrawn()){_1.getStyleHandle().backgroundColor=null}}
+_5=this.$732(_1);var _8=this.getEventLeft(_4);_1.setTitle(_3.getEventTitle(_4));if(_2)_1.redraw();var _9=this.data.findIndex(this.eventTypeField,_4[this.eventTypeField]);var _10=_9*_6;this.adjustDimensionsForOverlap(_1,_8,_10,_5,_6);if(_3.showDescription!=false){_1.setDescriptionText(_4[_3.descriptionField])}
+if(_4[_3.leadingDateField]&&_4[_3.trailingDateField]){if(_1.$645)this.addLeadingAndTrailingLines(_1);else this.delayCall("addLeadingAndTrailingLines",[_1])}}
+,isc.A.adjustDimensionsForOverlap=function isc_TimelineView_adjustDimensionsForOverlap(_1,_2,_3,_4,_5){var _6=_1.event.$646;if(_6&&_6.totalSlots>0){_5=Math.floor(_5/ _6.totalSlots);_3=_3+Math.floor((_5*(_6.slotNum-1)))}
+_1.resizeTo(_4,_5);if(_1.$77n)_1.header.resizeTo(_4,_5);_1.moveTo(_2,_3)}
+,isc.A.addLeadingAndTrailingLines=function isc_TimelineView_addLeadingAndTrailingLines(_1){var _2,_3,_4,_5;if(_1.$645){_2=_1.$645[0];_3=_1.$645[1];_4=_1.$645[2];_5=_1.$645[3]}else{_2=this.$65r();_3=this.$65s(_1,"lead");_4=this.$65r();_5=this.$65s(_1,"trail")}
+var _6=this.$65t(_3,_2);var _7=this.$65t(_5,_4);if(!_1.$645){this.body.addChild(_2);this.body.addChild(_3);this.body.addChild(_4);this.body.addChild(_5);_1.$645=[_2,_3,_4,_5]}}
+,isc.A.$65t=function isc_TimelineView__positionIcon(_1,_2){var _3=this.creator,_4=_1.$65e,_5=_4.event,_6=_1.type,_7=this.eventWidth,_8=_4.getVisibleHeight(),_9=_4.getTop(),_10=_4.getLeft();var _11,_12,_13=true;if(_6=="trail"){if(this.compareDates(_5[_3.trailingDateField],this.endDate)<0){_11=_3.getDayDiff(this.endDate,_5[_3.startDateField]);if(_11<1)_11=1;_12=_11*_7;_13=false}else{_11=_3.getDayDiff(_5[_3.trailingDateField],_5[_3.startDateField]);_12=(_11*_7)-(Math.round(_7/ 2))}}else{if(this.compareDates(this.startDate,_5[_3.leadingDateField])<0){_11=_3.getDayDiff(this.startDate,_5[_3.startDateField]);if(_11<1)_11=1;_12=_11*_7;_13=false}else{_11=_3.getDayDiff(_5[_3.leadingDateField],_5[_3.startDateField]);_12=(_11*_7)-(Math.round(_7/ 2))}}
+var _14=(_6=="trail"?_10+_7:_10-_12);_2.moveTo(_14,_9+(Math.round(_8/ 2)));_2.setWidth(_12);var _15=0;if(_5.$646&&_5.$646.slotNum>0){_15=(_5.$646.slotNum-1)*_8}
+var _16=(_6=="trail"?this.trailIconSize:this.leadIconSize);var _17;if(_13==false)_17=-50;else if(_6=="trail")_17=_10+_7+_12-Math.round(_16/ 2);else _17=_10-_12-Math.round(_16/ 2);_1.moveTo(_17,_9+Math.round(_8/ 2)-Math.round(_16/ 2));_1.$647=Math.round(_8/ 2)-Math.round(_16/ 2)+_15;_1.$648=Math.round(_7/ 2)-Math.round(_16/ 2),_1.$65f=_3.getDayDiff(_5[_3.startDateField],this.startDate);return _13}
+,isc.A.$65s=function isc_TimelineView__makeIcon(_1,_2){var _3=(_2=="trail"?this.trailIconSize:this.leadIconSize);var _4=isc.Img.create({$65e:_1,type:_2,autoDraw:false,_redrawWithParent:false,src:(_2=="trail"?this.trailingEndPointImage:this.leadingEndPointImage),width:_3,height:_3,canDragReposition:(this.creator.canEditEvents==true),dragRepositionStart:function(){this.$8l=this.parentElement.getEventRow();this.$644=this.parentElement.getEventColumn();this.parentElement.VSnapOrigin=this.$647;this.parentElement.HSnapOrigin=this.$648},dragRepositionStop:function(){var _5=this.$65f,_6=this.$644,_7=this.parentElement.getEventColumn(),_8=_7-_6,_9=this.$65e.event,_10=this.$65e.calendar,_11=this.type=="trail"?_7-_5:_5-_7;if(_11<1)return false;var _12={};var _13=this.type=="trail"?_10.trailingDateField:_10.leadingDateField;var _14=_9[_13].duplicate();_14.setDate(_14.getDate()+_8);_12[_13]=_14;_10.updateEvent(_9,_9[_10.startDateField],_9[_10.endDateField],_9[_10.nameField],_9[_10.descriptionField],_12,true);return true}});return _4}
+,isc.A.$65r=function isc_TimelineView__makeLine(){var _1=isc.Canvas.create({autoDraw:false,_redrawWithParent:false,height:2,overflow:"hidden",styleName:"eventLine"});return _1}
+,isc.A.clearEvents=function isc_TimelineView_clearEvents(_1){if(!this.body||!this.body.children||!this.$65u)return;if(!_1)_1=0;for(var i=_1;i<this.$65u.length;i++){this.$65u[i].hide()}}
+,isc.A.addEvent=function isc_TimelineView_addEvent(_1,_2){if(!this.$65u)this.$65u=[];var _3,_4=false;if(this.renderEventsOnDemand&&this.$65u[_2]){_3=this.$65u[_2];this.creator.setEventWindowID(_1,_3.ID);_3.event=_1;_4=true}else{var _3=this.getNewEventWindow(_1);_3.$643=this;this.$65u.add(_3)}
+this.sizeEventWindow(_3,_4);if(this.body&&(!_4||_3.parentElement!=this.body)){this.body.addChild(_3)}
+if(!_3.isDrawn())_3.draw();if(_3.body)_3.body.show();_3.show()}
+,isc.A.removeEvent=function isc_TimelineView_removeEvent(_1){var _2=this.body.children;for(var i=0;i<_2.length;i++){if(isc.isAn.EventWindow(_2[i])&&_2[i].event===_1){var _4=_2[i];_4.parentElement.removeChild(_4);_4.destroy();return true}}
+return false}
+,isc.A.getNewEventWindow=function isc_TimelineView_getNewEventWindow(_1){var _2=_1[this.creator.eventWindowStyleField]||this.creator.eventWindowStyle;var _3,_4,_5=true;if(this.creator.showDescription==false){_5=false}
+var _6=(this.creator.canDragEvents==true&&_1[this.creator.canDragEventField]!=false);var _7={calendar:this.creator,_redrawWithParent:false,styleName:_2,canDragReposition:_6,canDragResize:this.creator.canResizeTimelineEvents,edgeMarginSize:10,showCloseButton:false,event:_1,descriptionText:_1[this.creator.descriptionField]||"",showHeader:_5,showBody:_5}
+if(_1.eventWindowBackgroundColor){_7.backgroundColor=_1.eventWindowBackgroundColor}
+var _8=isc.TimelineWindow.create(_7);if(!_5){var _8=isc.TimelineWindow.create(_7);var _9=isc.Label.create({autoDraw:false,styleName:_2,border:"0px",height:"*"});_8.addChild(_9);_8.header=_9;_8.$77n=true}
+this.creator.setEventWindowID(_1,_8.ID);return _8}
+,isc.A.updateEventWindow=function isc_TimelineView_updateEventWindow(_1){if(!this.body||!this.body.children)return;var _2=this.creator,_3=this.tagDataForOverlap(_2.data.getRange(0,_2.data.getLength()),_1[_2.eventTypeField]);if(this.renderEventsOnDemand){this.refreshVisibleEvents()}else{for(var i=0;i<_3.length;i++){var _1=_3.get(i),_5=_2.getEventWindowID(_1),_6=window[_5];if(_1.$646)_1.$646.visited=false;_6.event=_1;this.sizeEventWindow(_6)}}}
+,isc.A.areSame=function isc_TimelineView_areSame(_1,_2){var _3=this.creator;if(_3.dataSource){var _4=_3.$53s,_5=true;for(var _6 in _4){if(_1[_6]!=_2[_6]){_5=false;break}}
+return _5}else{return(_1===_2)}}
+,isc.A.resized=function isc_TimelineView_resized(){this.Super('resized',arguments);if(this.isDrawn()&&this.creator.hasData()&&this.renderEventsOnDemand){this.refreshVisibleEvents()}}
+,isc.A.scrolled=function isc_TimelineView_scrolled(){if(this.renderEventsOnDemand){if(this.$57s)isc.Timer.clear(this.$57s);this.$57s=isc.Timer.setTimeout(this.ID+".refreshVisibleEvents()")}}
+,isc.A.getVisibleDateRange=function isc_TimelineView_getVisibleDateRange(){if(!this.renderEventsOnDemand){return[this.startDate.duplicate(),this.endDate.duplicate()]}
+var _1=this.body.getScrollLeft();var _2=_1+this.body.getVisibleWidth();var _3=this.getDateFromPoint(_1,true);var _4=this.getDateFromPoint(_2);return[_3,_4]}
+,isc.A.getVisibleRowRange=function isc_TimelineView_getVisibleRowRange(){if(!this.renderEventsOnDemand){return[0,this.data.getLength()]}
+var _1=this.bodies[1].getScrollTop();var _2=this.eventHeight;var _3=this.bodies[1].getVisibleHeight();var _4=Math.floor(_1/ _2);var _5=Math.floor((_1+_3)/_2);return[_4,_5]}
+);isc.B._maxIndex=isc.C+46;isc.Calendar.registerStringMethods({getDayBodyHTML:"date,events,calendar,rowNum,colNum",getDayHeaderHTML:"date,events,calendar,rowNum,colNum",dayBodyClick:"date,events,calendar,rowNum,colNum",dayHeaderClick:"date,events,calendar,rowNum,colNum",eventClick:"event,viewName",eventChanged:"event",eventMoved:"newDate,event",eventResized:"newDate,event",backgroundClick:"startDate,endDate",backgroundMouseUp:"startDate"});isc.A=isc.DaySchedule;isc.A.$53o=[{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""},{label:"",day1:"",day2:"",day3:"",day4:"",day5:"",day6:"",day7:""}];isc.AutoTest.customizeCalendar();isc._moduleEnd=isc._Calendar_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Calendar module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Calendar'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Calendar.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Calendar.js.gz
new file mode 100755
index 0000000..964c7ee
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Calendar.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_ClassBrowser.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_ClassBrowser.js
new file mode 100755
index 0000000..3671d62
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_ClassBrowser.js
@@ -0,0 +1,64 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_ClassBrowser){isc.module_ClassBrowser=1;isc._moduleStart=isc._ClassBrowser_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'ClassBrowser load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.defineClass("JavaClassPane","VLayout");isc.A=isc.JavaClassPane.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.sourceViewDefaults={_constructor:"HTMLFlow",autoDraw:false,height:"*"};isc.B.push(isc.A.initWidget=function isc_JavaClassPane_initWidget(){this.Super("initWidget",arguments);this.sourceView=this.createAutoChild("sourceView",{contents:"Loading..."});this.addMember(this.sourceView);this.loadSource()}
+,isc.A.loadSource=function isc_JavaClassPane_loadSource(){isc.DMI.call("isc_builtin","com.isomorphic.tools.BuiltinRPC","getJavaSource",this.config.path,this.getID()+".loadSourceReply(data)")}
+,isc.A.loadSourceReply=function isc_JavaClassPane_loadSourceReply(_1){var _2=isc.JSSyntaxHiliter.create();this.sourceView.setContents(_2.hilite(_1))}
+);isc.B._maxIndex=isc.C+3;isc.DataSource.create({
+ID:"JVMClassTreeDS",
+fields:[
+{
+name:"name"
+},
+{
+name:"path",
+primaryKey:true
+},
+{
+foreignKey:"JVMClassTreeDS.path",
+hidden:true,
+name:"parentID"
+},
+{
+name:"isFolder",
+type:"boolean"
+}
+],
+operationBindings:[
+{
+language:"groovy",
+operationType:"fetch",
+script:"\n if (!com.isomorphic.auth.DevModeAuthFilter.devModeAuthorized(request)) throw new Exception(\"Not Authorized\");\n\n def namespace = criteria.parentID;\n def classLoader = Thread.currentThread().getContextClassLoader();\n\n if (namespace == null) {\n return classLoader.getPackages().collect{it.name}.collect{\n def dotIndex = it.indexOf(\".\");\n dotIndex != -1 ? it.substring(0, dotIndex) : it;\n }.unique().sort().collect{\n [name: it, path: it, parentID: namespace];\n }\n }\n\n // non-root\n def namespaces = classLoader.getPackages().collect{it.name}.findAll{ it.startsWith(namespace+\".\") }.collect{ it.substring(namespace.length()+1) }.collect{\n def dotIndex = it.indexOf(\".\");\n dotIndex != -1 ? it.substring(0, dotIndex) : it;\n }.unique().sort().collect{\n [name: it, path: namespace+\".\"+it, parentID: namespace];\n };\n\n // lookup classes for this namespace...\n def resources = classLoader.getResources(namespace.replace('.', '/'));\n def resource = resources.hasMoreElements() ? resources.nextElement() : null;\n def children;\n def url;\n if (resource) {\n url = resource.getFile();\n log.warn(url);\n if (url.startsWith(\"jar:\")) {\n \n } else {\n try {\n def file = new File(url);\n children = file.list().findAll{ it =~ /\\.class$/}.sort().collect{ \n def name = it.substring(0, it.length()-6);\n [name:name,path:namespace+\".\"+name,parentID:namespace,isFolder:false] \n };\n } catch (ignore) {}\n }\n }\n\n namespaces?.addAll(children?:[]);\n return namespaces;\n "
+}
+]
+})
+isc.defineClass("JVMClassTree","TreeGrid");isc.A=isc.JVMClassTree.getPrototype();isc.A.dataSource="JVMClassTreeDS";isc.A.animateFolders=false;isc.JVMClassTree.registerStringMethods({});isc.defineClass("ClassBrowser","VLayout");isc.A=isc.ClassBrowser;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.showWindow=function isc_c_ClassBrowser_showWindow(_1,_2){isc.Window.create({title:"Class Browser",width:"100%",height:"100%",canDragReposition:false,closeClick:function(){this.destroy()},items:[isc.ClassBrowser.create({autoDraw:false},_2)]},_1).show()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.ClassBrowser.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.classTreeDefaults={_constructor:"JVMClassTree",autoDraw:false,autoFetchData:true,recordDoubleClick:function(_1,_2){if(this.data.isLeaf(_2))this.creator.showClassPane(_2)}};isc.A.leftSectionDefaults={_constructor:"SectionStack",headerHeight:25,width:300,showResizeBar:true,animateSections:isc.Browser.isSafari,visibilityMode:"visible",autoParent:"mainLayout"};isc.A.mainLayoutDefaults={_constructor:"HLayout",height:"*"};isc.A.rightPaneDefaults={_constructor:"TabSet",tabs:[{name:"welcome",title:"Welcome",ID:"dsb_welcome_tab",canClose:true,pane:isc.Label.create({height:10,autoDraw:false,overflow:"visible",contents:"Select a class on the left..."})}]};isc.A.autoChildren=["mainLayout"];isc.A.classPaneDefaults={_constructor:"JavaClassPane"};isc.B.push(isc.A.initWidget=function isc_ClassBrowser_initWidget(){this.Super("initWidget",arguments);this.classTree=this.createAutoChild("classTree",{selectionChanged:"if (state) this.creator.classChanged(record)"});this.leftSection=this.createAutoChild("leftSection",{sections:[{name:"classes",title:"Classes",expanded:true,controls:[],items:[this.classTree]}]});this.addAutoChildren(this.autoChildren);this.mainLayout.addMember(this.leftSection);this.rightPane=this.createAutoChild("rightPane");this.mainLayout.addMember(this.rightPane)}
+,isc.A.classChanged=function isc_ClassBrowser_classChanged(_1){this.showClassPane(_1)}
+,isc.A.showClassPane=function isc_ClassBrowser_showClassPane(_1){var _2="class_"+this.escapeForId(_1.path);this.showPane({ID:_2,title:"Class: "+_1.name,paneClass:"classPane"},_1)}
+,isc.A.escapeForId=function isc_ClassBrowser_escapeForId(_1){return isc.isA.String(_1)?_1.replace(/(\/|\.)/g,'_'):_1}
+,isc.A.showPane=function isc_ClassBrowser_showPane(_1,_2){var _3=this.rightPane.getTab(_1.ID);if(_3){this.currentPane=_3.pane;this.rightPane.selectTab(_3);return}
+_3={};isc.addProperties(_3,_1,{canClose:true,pane:this.createAutoChild(_1.paneClass,{config:_2})});var _4=this.rightPane.getTab(0);if(_4&&_4.name=="welcome")this.rightPane.removeTab(0);this.rightPane.addTab(_3);this.rightPane.selectTab(_3);this.currentPane=_3.pane}
+);isc.B._maxIndex=isc.C+5;isc._moduleEnd=isc._ClassBrowser_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('ClassBrowser module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'ClassBrowser'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_ClassBrowser.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_ClassBrowser.js.gz
new file mode 100755
index 0000000..9ce9ac4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_ClassBrowser.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Containers.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Containers.js
new file mode 100755
index 0000000..f6bcb12
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Containers.js
@@ -0,0 +1,587 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_Containers){isc.module_Containers=1;isc._moduleStart=isc._Containers_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'Containers load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.ClassFactory.defineClass("ImgTab","StretchImgButton");isc.A=isc.ImgTab.getPrototype();isc.A.capSize=2;isc.A.skinImgDir="images/Tab/";isc.A.labelSkinImgDir="images/";isc.A.baseStyle="tab";isc.A.src="[SKIN]tab.gif";isc.A.showRollOver=false;isc.A.showFocused=true;isc.A.actionType=isc.Button.RADIO;isc.A.mozOutlineOffset="0px";isc.A=isc.ImgTab.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setPane=function isc_ImgTab_setPane(_1){this.parentElement.parentElement.updateTab(this,_1)}
+,isc.A.selectTab=function isc_ImgTab_selectTab(){this.parentElement.parentElement.selectTab(this)}
+,isc.A.initWidget=function isc_ImgTab_initWidget(_1,_2,_3,_4,_5,_6){if(this.vertical&&this.titleStyle)this.titleStyle="v"+this.titleStyle;return this.invokeSuper(isc.ImgTab,this.$oc,_1,_2,_3,_4,_5,_6)}
+);isc.B._maxIndex=isc.C+3;isc.ClassFactory.defineClass("TabBar","Toolbar");isc.A=isc.TabBar.getPrototype();isc.A.breadth=21;isc.A.buttonConstructor=isc.ImgTab;isc.A.tabWithinToolbar=false;isc.A.skinImgDir="images/Tab/";isc.A.moreTabCount=5;isc.A.baseLineThickness=1;isc.A.baseLineSrc="[SKIN]baseline.gif";isc.A.baseLineCapSize=2;isc.A.tabBarPosition=isc.Canvas.TOP;isc.A.selectedTab=0;isc.A.defaultTabSize=80;isc.A=isc.TabBar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_TabBar_initWidget(){for(var i=0;i<this.tabs.length;i++){var _2=this.tabs[i].pane;if(isc.isA.String(_2)&&isc.isA.Canvas(window[_2])){this.tabs[i].pane=window[_2]}}
+this.buttons=this.tabs;if(this.moreTab){this.$79t=this.buttons.length;this.buttons[this.$79t]=this.moreTab}
+this.skinImgDir=this.skinImgDir+this.tabBarPosition+"/";var _3=this.tabDefaults;if(_3==null)_3=this.tabDefaults={};if(isc.Browser.isSafari)_3.showFocusOutline=false;_3=this.buttonDefaults=isc.addProperties({},this.buttonDefaults,_3);_3.actionType=isc.StatefulCanvas.RADIO;if(this.vertical){_3.defaultHeight=this.defaultTabSize}else{_3.defaultWidth=this.defaultTabSize}
+_3.overflow=isc.Canvas.VISIBLE;_3.vertical=(this.tabBarPosition==isc.Canvas.LEFT||this.tabBarPosition==isc.Canvas.RIGHT);var _4=isc.ClassFactory.getClass(this.buttonConstructor);if(_4&&_4.isA("ImgTab")){_3.skinImgDir=_4.getInstanceProperty("skinImgDir")+this.tabBarPosition+"/"}
+_3.iconMouseDown=this.$42k;_3.handleDoubleClick=function(){var _5=this.parentElement.parentElement;if(_5&&_5.titleEditEvent=="doubleClick"&&_5.$798(this))return;return this.Super("handleDoubleClick",arguments)}
+_3.handleClick=function(){var _5=this.parentElement.parentElement;if(_5&&_5.titleEditEvent=="click"&&_5.$798(this))return;return this.Super("handleClick",arguments)},_3._generated=true;var _6=this.tabBarPosition+"StyleName";if(this[_6])this.setStyleName(this[_6]);this.Super(this.$oc);if(this._baseLine==null)this.makeBaseLine()}
+,isc.A.isShowingMoreTab=function isc_TabBar_isShowingMoreTab(){return(this.showMoreTab&&this.moreTab&&this.$79t>=0&&this.getMembers(this.$79t).isVisible&&this.getMembers(this.$79t).isVisible())}
+,isc.A.$42k=function isc_TabBar__tabIconClickHandler(){return this.parentElement.tabIconClick(this)}
+,isc.A.tabIconClick=function isc_TabBar_tabIconClick(_1){var _2=this.parentElement;return _2.$52a(_1)}
+,isc.A.setButtons=function isc_TabBar_setButtons(_1){this.Super("setButtons",arguments);if(isc.Browser.isSGWT){var _2=this.getMembers();for(var i=0;i<_2.length;i++){_2[i].__ref=null}}
+if(this.showMoreTab&&this.buttons.length-1>this.moreTabCount){for(var i=this.moreTabCount-1;i<this.buttons.length;i++){this.getMember(i).hide()}
+this.getMember(this.$79t).show()}else if(this.showMoreTab&&this.moreTab){this.getMember(this.$79t).hide()}}
+,isc.A.makeButton=function isc_TabBar_makeButton(_1,_2,_3,_4,_5){var _6=this.parentElement.canCloseTab(_1);isc.addProperties(_1,this.getCloseIconProperties(_1,_6));_1.locatorParent=this.parentElement;return this.invokeSuper("TabBar","makeButton",_1,_2,_3,_4,_5)}
+,isc.A.getCloseIconProperties=function isc_TabBar_getCloseIconProperties(_1,_2){var _3={};if(_1.canClose==true||(_1.canClose==null&&_2)){_3.icon=(_1.closeIcon||this.parentElement.closeTabIcon);_3.iconSize=(_1.closeIconSize||this.parentElement.closeTabIconSize);_3.iconOrientation=isc.Page.isRTL()?"left":"right";_3.iconAlign=_3.iconOrientation}else{_3.icon=(_1.icon);_3.iconSize=(_1.iconSize);_3.iconOrientation=_1.iconOrientation;_3.iconAlign=_1.iconAlign}
+return _3}
+,isc.A.addTabs=function isc_TabBar_addTabs(_1,_2){if(!_2&&this.tabBarPosition==isc.Canvas.LEFT)_2=0;this.addButtons(_1,_2);if(isc.Browser.isSGWT){var _3=this.getMembers();for(var i=0;i<_3.length;i++){_3[i].__ref=null}}
+if(this.showMoreTab&&this.moreTab){var _5=this.getMembers();if(_5.length-1>this.moreTabCount){for(var i=this.moreTabCount-1;i<_5.length;i++){_5[i].hide()}
+this.$79t=_5.length-1;_5[this.$79t].show()}}
+if(this._baseLine!=null){this._baseLine.bringToFront();var _6=this.getButton(this.getSelectedTab());if(_6)_6.bringToFront()}}
+,isc.A.removeTabs=function isc_TabBar_removeTabs(_1){if(_1==null)return;if(!isc.isAn.Array(_1))_1=[_1];var _2=this.map("getButton",_1);this.removeButtons(_1);if(this.showMoreTab&&this.moreTab&&this.$79t>0){var _3=this.getMembers();for(var i=0;i<_3.length;i++){if(i<this.moreTabCount)_3[i].show();else _3[i].hide()}
+if(_3.length-1<=this.moreTabCount){this.$79t=null;_3[_3.length-1].hide()}else{this.$79t=_3.length-1}}
+for(var i=0;i<_2.length;i++){if(_2[i]!=null)_2[i].destroy()}}
+,isc.A.draw=function isc_TabBar_draw(_1,_2,_3,_4){arguments.$cw=this;this.fixLayout();this.invokeSuper(isc.TabBar,"draw",_1,_2,_3,_4);this.bringToFront();var _5=this.getButton(this.selectedTab);if(_5){_5.setSelected(true)}}
+,isc.A.makeBaseLine=function isc_TabBar_makeBaseLine(){this._baseLine=this.addAutoChild("baseLine",{ID:this.getID()+"_baseLine",vertical:(this.tabBarPosition==isc.Canvas.LEFT||this.tabBarPosition==isc.Canvas.RIGHT),skinImgDir:this.skinImgDir,src:this.baseLineSrc,capSize:this.baseLineCapSize,imageType:isc.Img.STRETCH,overflow:"hidden",addAsChild:true,autoDraw:false},isc.StretchImg);this.ignoreMemberZIndex(this._baseline)}
+,isc.A.scrollTo=function isc_TabBar_scrollTo(_1,_2,_3,_4,_5,_6){this.invokeSuper(isc.TabBar,"scrollTo",_1,_2,_3,_4,_5,_6);if(this._baseLine)this.fixLayout()}
+,isc.A.fixLayout=function isc_TabBar_fixLayout(){var _1=this._baseLine;if(_1==null)return;var _2=this.parentElement,_3=0;if(this.tabBarPosition==isc.Canvas.TOP){_1.setRect(this.getScrollLeft(),this.getHeight()-this.baseLineThickness,this.parentElement.getWidth()-_3,this.baseLineThickness)}else if(this.tabBarPosition==isc.Canvas.BOTTOM){_1.setRect(this.getScrollLeft(),0,this.parentElement.getWidth()-_3,this.baseLineThickness)}else if(this.tabBarPosition==isc.Canvas.LEFT){_1.setRect(this.getWidth()-this.baseLineThickness,this.getScrollTop(),this.baseLineThickness,this.parentElement.getHeight()-_3)}else if(this.tabBarPosition==isc.Canvas.RIGHT){_1.setRect(0,this.getScrollTop(),this.baseLineThickness,this.parentElement.getHeight()-_3)}}
+,isc.A.layoutChildren=function isc_TabBar_layoutChildren(_1,_2,_3,_4){this.invokeSuper(isc.TabBar,"layoutChildren",_1,_2,_3,_4);this.fixLayout()}
+,isc.A.buttonSelected=function isc_TabBar_buttonSelected(_1){this.ignoreMemberZIndex(_1);_1.bringToFront();this.lastSelectedButton=_1;this.$6b(this.lastSelectedButton)}
+,isc.A.buttonDeselected=function isc_TabBar_buttonDeselected(_1){_1.sendToBack();this.stopIgnoringMemberZIndex(_1)}
+,isc.A.getSelectedTab=function isc_TabBar_getSelectedTab(){return this.getButtonNumber(this.getSelectedButton())}
+,isc.A.selectTab=function isc_TabBar_selectTab(_1){this.selectedTab=_1;this.selectButton(_1)}
+,isc.A.setupButtonFocusProperties=function isc_TabBar_setupButtonFocusProperties(){this.$6b(this.getButton(this.selectedTab));return this.Super("setupButtonFocusProperties",arguments)}
+,isc.A.$6b=function isc_TabBar__updateFocusButton(_1){if(!this.selectTabOnContextClick&&isc.EH.rightButtonDown()){if(this.$6g!=null&&this.getButton(_1)!=this.$6g)
+{var _2=this.getButtonNumber(this.$6g);this.$6g.focus();var _3=this;isc.Timer.setTimeout(function(){var _4=_3.getButton(_2);if(!_4)return;if(!isc.EH.targetIsMasked(_4)){_4.focus()}else{_3.selectTab(_2)}},0)}
+return}
+var _5=this.getButton(_1);if(_5)_5.focus();this.Super("$6b",arguments);if(this.$6g!=null&&!this.$6g.selected){this.selectTab(this.$6g)}}
+,isc.A.$7b=function isc_TabBar__scrollForward(_1,_2){if(this.overflow==isc.Canvas.VISIBLE||!this.members||this.members.length==0)return;var _3,_4;if(this.$7c!=null){_3=this.members[this.$7c+(_1?-1:1)];if(_3==null){return}
+_4=(_1?(this.vertical?_3.getTop():_3.getLeft()):(this.vertical?_3.getBottom():_3.getRight()))}else{var _5=(this.vertical?this.getScrollHeight():this.getScrollWidth());if(_5<=(this.vertical?this.getViewportHeight():this.getViewportWidth()))
+return;var _6=(this.vertical?this.getScrollTop():this.getScrollLeft()),_7=(this.vertical?this.getViewportHeight():this.getViewportWidth());var _8=5;for(var i=0;i<this.members.length;i++){_3=(_1?this.members[this.members.length-(i+1)]:this.members[i]);_4=(_1?(this.vertical?_3.getTop():_3.getLeft()):(this.vertical?_3.getBottom():_3.getRight()));var _10=_1?(_4+_8<_6):(_4-_8>(_6+_7));if(_10)break}}
+if(_2){this.$7c=this.members.indexOf(_3);this.scrollTabIntoView(_3,_1,true,"this.$7d("+this.$7c+")")}else this.scrollTabIntoView(_3,_1)}
+,isc.A.$7d=function isc_TabBar__completeScroll(_1){if(this.$7c==_1)delete this.$7c}
+,isc.A.scrollTabIntoView=function isc_TabBar_scrollTabIntoView(_1,_2,_3,_4){var _5;if(isc.isA.Number(_1)){_5=_1;_1=this.members[_1]}else{_5=this.members.indexOf(_1)}
+if(!_1)return;if(this.$3n||this.$2z){this.$67y=[_1,_2,_3,_4];return}
+var _6=_1.getRect(),_7,_8;var _9=this.vertical;if(_2==null){if(_5==0)_2=true;else if(_5==(this.members.getLength()-1))_2=false;else{if(_9){if(this.getScrollTop()>_6[1])_2=true;else _2=false}else{if(this.getScrollLeft()>_6[0])_2=true;else _2=false}}}
+if(_9){_8=(_2?"top":"bottom");_7="left";_6[2]=0}else{_7=(_2?"left":"right");_8="top";_6[3]=0}
+if(_5==0)_6[0]=_6[1]=0;this.scrollIntoView(_6[0],_6[1],_6[2],_6[3],_7,_8,_3,{target:this,methodName:"scrolledTabIntoView",args:[_1,_4]})}
+,isc.A.scrolledTabIntoView=function isc_TabBar_scrolledTabIntoView(_1,_2){if(_2!=null){this.fireCallback(_2,"tab",[_1])}}
+,isc.A.$3j=function isc_TabBar__layoutChildrenDone(_1,_2,_3,_4,_5){this.invokeSuper(isc.TabBar,"$3j",_1,_2,_3,_4,_5);if(this.$67y!=null){var _6=this.$67y;this.scrollTabIntoView(_6[0],_6[1],_6[2],_6[3]);delete this.$67y}}
+,isc.A.scrollForward=function isc_TabBar_scrollForward(_1){this.$7b(false,_1)}
+,isc.A.scrollBack=function isc_TabBar_scrollBack(_1){this.$7b(true,_1)}
+);isc.B._maxIndex=isc.C+27;isc.ClassFactory.defineClass("Window","Layout");isc.A=isc.Window.getPrototype();isc.A.styleName="windowBackground";isc.A.skinImgDir="images/Window/";isc.A.backgroundColor="#DDDDDD";isc.A.layoutMargin=2;isc.A.membersMargin=2;isc.A.orientation="vertical";isc.A.dragStartDistance=1;isc.A.canDragReposition=true;isc.A.dragAppearance=isc.EventHandler.OUTLINE;isc.A.canDragResize=false;isc.A.resizeFrom=["R","B","BR"];isc.A.minWidth=100;isc.A.minHeight=100;isc.A.useBackMask=isc.Browser.isIE&&isc.Browser.minorVersion>=5.5&&isc.Browser.version<9;isc.A.isModal=false;isc.A.modalMaskOpacity=50;isc.A.modalMaskStyle="modalMask";isc.A.modalMaskConstructor="ScreenSpan";isc.A.dismissOnOutsideClick=false;isc.A.showBody=true;isc.A.bodyStyle="windowBody";isc.A.bodyColor="#FFFFFF";isc.A.hiliteBodyColor="#EEEEEE";isc.A.contentsType="page";isc.A.bodyDefaults={layoutMargin:0};isc.A.contentLayout="vertical";isc.A.autoSize=false;isc.A.showHeader=true;isc.A.headerConstructor="HLayout";isc.A.showHeaderBackground=!(isc.Browser.isIE&&!isc.Browser.isStrict&&isc.Browser.minorVersion>=5.5);isc.A.headerBackgroundConstructor="Img";isc.A.headerBackgroundDefaults={width:"100%",height:"100%",addAsChild:true,vertical:false,capSize:10};isc.A.headerStyle="windowHeader";isc.A.headerSrc=(!(isc.Browser.isIE&&!isc.Browser.isStrict&&isc.Browser.minorVersion>=5.5)?"[SKIN]Window/headerGradient.gif":null);isc.A.headerDefaults={height:18,layoutMargin:1,membersMargin:2,overflow:isc.Canvas.HIDDEN};isc.A.headerControls=["headerIcon","headerLabel","minimizeButton","maximizeButton","closeButton"];isc.A.hiliteHeaderStyle="windowHeaderHilite";isc.A.hiliteHeaderSrc=(!(isc.Browser.isIE&&isc.Browser.minorVersion>=5.5)?"[SKIN]Window/headerGradient_hilite.gif":null);isc.A.showTitle=true;isc.A.title="Untitled Window";isc.A.headerLabelConstructor="Label";isc.A.headerLabelDefaults={wrap:false,align:isc.Canvas.LEFT,styleName:"windowHeaderText",width:10,inherentWidth:true};isc.A.showHeaderIcon=true;isc.A.headerIconConstructor="Img";isc.A.headerIconDefaults={width:16,height:16,layoutAlign:"center",src:"[SKIN]/Window/headerIcon.gif"};isc.A.canFocusInHeaderButtons=false;isc.A.showCloseButton=true;isc.A.closeButtonConstructor="ImgButton";isc.A.closeButtonDefaults={width:16,height:14,layoutAlign:"center",src:"[SKIN]/Window/close.gif",click:function(){return this.creator.$7e()}};isc.A.showMinimizeButton=true;isc.A.minimizeButtonConstructor="ImgButton";isc.A.minimizeButtonDefaults={width:16,height:14,layoutAlign:"center",src:"[SKIN]/Window/minimize.gif",click:function(){if(!this.creator.onMinimizeClick||(this.creator.onMinimizeClick()!=false)){this.creator.minimize()}
+return false}};isc.A.minimized=false;isc.A.defaultMinimizeHeight=16;isc.A.restoreButtonDefaults={width:16,height:14,src:"[SKIN]/Window/restore.gif",layoutAlign:"center",click:function(){if(!this.creator.onRestoreClick||(this.creator.onRestoreClick()!=false)){this.creator.restore()}
+return false}};isc.A.minimized=false;isc.A.showMaximizeButton=false;isc.A.maximizeButtonConstructor="ImgButton";isc.A.maximizeButtonDefaults={width:16,height:14,src:"[SKIN]/Window/maximize.gif",layoutAlign:"center",click:function(){if(!this.creator.onMaximizeClick||(this.creator.onMaximizeClick()!=false)){this.creator.maximize()}
+return false}};isc.A.showFooter=true;isc.A.footerConstructor="HLayout";isc.A.footerHeight=18;isc.A.footerControls=["spacer","resizer"];isc.A.showStatusBar=true;isc.A.statusBarConstructor="Canvas";isc.A.statusBarDefaults={overflow:isc.Canvas.HIDDEN,styleName:"windowStatusBar",addAsChild:true,width:"100%",wrap:false,leftPadding:5};isc.A.showResizer=true;isc.A.resizerConstructor="Img";isc.A.resizerDefaults={canDragResize:true,getEventEdge:function(){if(this.creator.resizeFrom.contains("BR")){return"BR"}else if(this.creator.resizeFrom.contains("B")){return"B"}else if(this.creator.resizeFrom.contains("R")){return"R"}},src:"[SKIN]/Window/resizer.gif",width:16,height:16};isc.A.showToolbar=false;isc.A.toolbarConstructor="Toolbar";isc.A.toolbarDefaults={height:40,layoutMargin:10,membersMargin:5,overflow:"visible"};isc.A.customEdges=["T","B"];isc.A.overflow="hidden";isc.A=isc.Window.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoChildParentMap={resizer:"footer",statusBar:"footer",headerBackground:"header",headerIcon:"header",headerLabel:"header",minimizeButton:"header",maximizeButton:"header",closeButton:"header",toolbar:"body"};isc.B.push(isc.A.initWidget=function isc_Window_initWidget(){if(this.minimized&&this.maximized){this.logWarn("Window initialized with maximized and minimized both set to true. "+"This is unsupported. The Window will be rendered minimized.");this.maximized=false}
+if(this.minimized){this.minimized=null;this.minimize()}else if(this.maximized){this.maximized=null;this.maximize()}
+if(this.autoSize){this.vPolicy="none";this.overflow="visible"}
+this.Super(this.$oc);if(!this.$7f&&this.items!=null){for(var i=0;i<this.items.length;i++){if(isc.isA.Canvas(this.items[i])&&this.items[i].isDrawn())this.items[i].clear()}}}
+,isc.A.createChildren=function isc_Window_createChildren(){this.makeHeader();this.makeBody();this.makeToolbar();this.makeFooter();this.$7f=true}
+,isc.A.makeToolbar=function isc_Window_makeToolbar(){this.addAutoChild("toolbar",{buttons:this.toolbarButtons,visibility:this.minimized?isc.Canvas.HIDDEN:isc.Canvas.INHERIT})}
+,isc.A.draw=function isc_Window_draw(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return this;if(!this.$7f)this.createChildren();return this.invokeSuper(isc.Window,"draw",_1,_2,_3,_4)}
+,isc.A.destroy=function isc_Window_destroy(){if(!this.$7f){var _1=this.items;if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){if(isc.isA.Canvas(_1[i]))_1[i].destroy()}}
+this.items=null;this.destroyModalMask();return this.Super("destroy",arguments)}
+,isc.A.mouseUp=function isc_Window_mouseUp(){this.bringToFront(true);this.Super("mouseUp",arguments)}
+,isc.A.makeHeader=function isc_Window_makeHeader(){var _1=this.addAutoChild("header",{styleName:this.headerStyle});if(_1==null)return;if(_1!=null){var _2=this.addAutoChild("headerBackground",{src:this.headerSrc});if(_2)_2.sendToBack();if(this.minimized){this.$42l=this.minimizeButtonDefaults;this.$42m=this.minimizeButtonProperties;this.minimizeButtonDefaults=this.restoreButtonDefaults;this.minimizeButtonProperties=this.restoreButtonProperties}else if(this.maximized){this.$42n=this.maximizeButtonDefaults;this.$42o=this.maximizeButtonProperties;this.maximizeButtonDefaults=this.restoreButtonDefaults;this.maximizeButtonProperties=this.restoreButtonProperties}
+this.addAutoChildren(this.headerControls,this.header);if(this.minimized){this.minimizeButtonDefaults=this.$42l;this.minimizeButtonProperties=this.$42m;this.$42l=this.$42p=null}else if(this.maximized){this.maximizeButtonDefaults=this.$42n;this.maximizeButtonProperties=this.$42o;this.$42n=this.$42q=null}}}
+,isc.A.setHeaderControls=function isc_Window_setHeaderControls(_1){if(this.headerControls==_1)return;var _2=this.headerControls,_3=[];this.headerControls=_1;if(this.header==null)return;for(var i=i;i<_2.length;i++){if(isc.isA.String(_2[i]))_3[i]=this[_2[i]]
+else _3[i]=_2[i]}
+this.header.removeMembers(_3);this.header.addMembers(_1)}
+,isc.A.setShowHeaderControl=function isc_Window_setShowHeaderControl(_1,_2,_3){var _4=this.headerControls;if(!_4.contains(_1)){this.logWarn("request to show/hide header control with name:"+_1+". No such control is present in this.headerControls - ignoring.");return}
+if(!_3)
+_3="show"+_1.substring(0,1).toUpperCase()+_1.substring(1);if(this[_3]==_2)return;this[_3]=_2;if(this.header==null)return;if(this[_1]){if(_2)this[_1].show();else this[_1].hide()}else if(_2){var _5=0;for(var i=0;i<_4.length;i++){if(_4[i]==_1)break;if(this[_4[i]])_5++}
+this.addAutoChild(_1,null,null,this.header,_5);this[_1].show()}}
+,isc.A.setShowCloseButton=function isc_Window_setShowCloseButton(_1){this.setShowHeaderControl("closeButton",_1,"showCloseButton")}
+,isc.A.setShowMinimizeButton=function isc_Window_setShowMinimizeButton(_1){this.setShowHeaderControl("minimizeButton",_1,"showMinimizeButton")}
+,isc.A.setShowMaximizeButton=function isc_Window_setShowMaximizeButton(_1){this.setShowHeaderControl("maximizeButton",_1,"showMaximizeButton")}
+,isc.A.setShowHeaderIcon=function isc_Window_setShowHeaderIcon(_1){this.setShowHeaderControl("headerIcon",_1,"showHeaderIcon")}
+,isc.A.getDynamicDefaults=function isc_Window_getDynamicDefaults(_1){if(isc.endsWith(_1,isc.Button.Class)){return{canFocus:this.canFocusInHeaderButtons}}}
+,isc.A.headerLabel_autoMaker=function isc_Window_headerLabel_autoMaker(){if(!this.showTitle){this.headerLabel=null;return}
+var _1=isc.Canvas.create({autoDraw:false,_generated:true,contents:isc.Canvas.blankImgHTML(1000,100),overflow:"hidden"});var _2=this.canDragReposition;if(_2){_1.canDragReposition=true;_1.dragTarget=this;this.canDragReposition=false}
+var _3=this.headerLabel=this.createAutoChild("headerLabel",{height:"100%",contents:this.title,dragTarget:this,getCurrentCursor:function(){if(this.parentElement)
+return this.parentElement.getCurrentCursor();return this.Super("getCurrentCursor",arguments)}});_1.addChild(_3);this.header.addMember(_1)}
+,isc.A.setTitle=function isc_Window_setTitle(_1){if(_1)this.title=_1;if(!this.header)return;if(this.headerLabel)this.headerLabel.setContents(this.title);else this.header.setContents(this.title)}
+,isc.A.setButtons=function isc_Window_setButtons(_1){return this.setToolbarButtons(_1)}
+,isc.A.setToolbarButtons=function isc_Window_setToolbarButtons(_1){this.toolbarButtons=_1;if(this.toolbar)this.toolbar.setButtons(_1)}
+,isc.A.makeFooter=function isc_Window_makeFooter(){if(!this.showFooter)return;this.addAutoChild("footer",{height:this.footerHeight});if(!this.footer)return;var _1=[];for(var i=0;i<this.footerControls.length;i++){var _3=this.footerControls[i],_4={};if(_3=="spacer")_3=isc.LayoutSpacer.create();if(_3=="resizer"){if(!this.canDragResize)continue;_4.dragTarget=this}
+_4.visibility=this.minimized?isc.Canvas.HIDDEN:isc.Canvas.INHERIT;if(isc.isA.String(_3)){this.addAutoChild(_3,_4,null,this.footer)}else{if(isc.isA.Canvas(_3))_3.setProperties(_4);else isc.addProperties(_3,_4);this.footer.addMember(_3)}}
+this.addAutoChild("statusBar",{height:this.footer.getHeight(),visibility:this.minimized?isc.Canvas.HIDDEN:isc.Canvas.INHERIT});if(this.status!=null)this.setStatus(this.status);this.statusBar.sendToBack()}
+,isc.A.setStatus=function isc_Window_setStatus(_1){this.status=_1;if(this.statusBar==null)return;if(_1==null)_1="";var _2=(this.statusBar.leftPadding?isc.Canvas.spacerHTML(this.statusBar.leftPadding,1):"");this.statusBar.setContents(_2+_1)}
+,isc.A.setSrc=function isc_Window_setSrc(_1){this.src=_1;if(this.body)this.body.setContentsURL(_1)}
+,isc.A.makeBody=function isc_Window_makeBody(){if(!this.showBody)return;var _1,_2,_3;if(this.src){_3=this.src}else{var _4=this.items;if(isc.isA.Array(_4)){_1=_4.duplicate()}else if(isc.isA.Canvas(_4)){_1=_4}else{_2=_4}
+if(!isc.isAn.Array(_4))_4=[_4];for(var i=0;i<_4.length;i++){if(isc.isAn.Object(_4[i])){_4[i].locatorParent=this;_4[i].$86x=this.ID}}}
+if(!this.bodyConstructor){if(_3){this.bodyConstructor="HTMLFlow"}else if(_2){this.bodyConstructor="Canvas"}else if(!this.autoSize){if(this.contentLayout!="none")this.bodyConstructor="Layout";else this.bodyConstructor="Canvas"}else{this.bodyConstructor="Layout";var _6={vPolicy:"none",hPolicy:"none"};if(!this.bodyProperties)this.bodyProperties=_6;else isc.addProperties(this.bodyProperties,_6)}}
+this.createCanvii(_1);if(isc.Browser.isMoz&&_3!=null){if(!this.body)this.body={};this.body.useClipDiv=false}
+var _7=("body",{contents:_2||" ",_generated:false,defaultHeight:this.autoSize?50:100,contentsURL:_3,contentsType:this.contentsType,hideUsingDisplayNone:(isc.Browser.isMoz&&_3?true:false),styleName:this.bodyStyle,backgroundColor:this.bodyColor,visibility:this.minimized?isc.Canvas.HIDDEN:isc.Canvas.INHERIT,vertical:(this.contentLayout==isc.Canvas.VERTICAL),overflow:this.autoSize?"visible":"auto"});var _8=isc.ClassFactory.getClass(this.bodyConstructor);if(_8&&_8.isA("Layout")){_7.members=_1}else{_7.children=_1}
+this.addAutoChild("body",_7)}
+,isc.A.setBodyColor=function isc_Window_setBodyColor(_1){this.bodyColor=_1;if(this.body)this.body.setBackgroundColor(_1)}
+,isc.A.hasInherentHeight=function isc_Window_hasInherentHeight(){return this.autoSize}
+,isc.A.hasInherentWidth=function isc_Window_hasInherentWidth(){return this.autoSize}
+,isc.A.addItem=function isc_Window_addItem(_1,_2){return this.addItems([_1],_2)}
+,isc.A.removeItem=function isc_Window_removeItem(_1){return this.removeItems([_1])}
+,isc.A.addItems=function isc_Window_addItems(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];if(!this.items)this.items=[];for(var i=0;i<_1.length;i++){if(!_1[i])continue;if(this.items.contains(_1[i]))continue;if(_2!=null)this.items.addAt(_1[i],_2+i);else this.items.add(_1[i]);_1[i].locatorParent=this;_1[i].$86x=this.ID;if(!this.$7f){if(isc.isA.Canvas(_1[i])&&_1[i].isDrawn())_1[i].clear()}else{if(this.body.addMember){this.body.addMember(_1[i],_2!=null?_2+i:null)}else{this.body.addChild(_1[i])}}}
+return _1}
+,isc.A.removeItems=function isc_Window_removeItems(_1){if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){delete _1[i].locatorParent}
+if(this.$7f){if(this.body.removeMembers)this.body.removeMembers(_1);else{for(var i=0;i<_1.length;i++){if(_1[i].parentElement==this.body)_1[i].deparent()}}}
+this.items.removeList(_1);return _1}
+,isc.A.locatorChildDestroyed=function isc_Window_locatorChildDestroyed(_1){if(this.items&&this.items.contains(_1))this.items.remove(_1)}
+,isc.A.replaceItem=function isc_Window_replaceItem(_1,_2){if(_1==_2)return _1;if(_2==null)return this.removeItem(_1);if(_1==null)return this.addItem(_2);for(var i=0;i<this.items.length;i++){if(this.items[i]==_1){this.items[i]=_2;if(!this.$7f){if(isc.isA.Canvas(_2)&&_2.isDrawn())_2.clear()}else{if(this.body.addMember){var _4=this.body.getMemberNumber(_1);this.body.removeMember(_1);this.body.addMember(_2,_4)}else{this.body.removeChild(_1);this.body.addChild(_2)}}
+break}}}
+,isc.A.layoutChildren=function isc_Window_layoutChildren(_1,_2,_3,_4){if(this.body==null)return;if(this.$7g){this.$7g=null;this.disableAutoSize()}
+if(this.autoSize)this.$7h();this.invokeSuper(isc.Window,"layoutChildren",_1,_2,_3,_4);var _5=this.edgesAsChild?this.$l0:null;if(_5)_5.setHeight(this.getVisibleHeight(true))}
+,isc.A.$7h=function isc_Window__matchBodyWidth(){if(this.minimized)return;if(this.$7i)return;this.$7i=true;var _1=this.edgesAsChild?this.$l0:null;if(!this.body.isDrawn())this.body.draw();this.body.inherentWidth=true;var _2=(this.getWidth()-this.getInnerWidth())+this.$tb+this.$tc;if(_1)_2+=_1.$tb+_1.$tc;var _3=this.body.getVisibleWidth()+_2;this.logInfo("edgeWidth is: "+_2+", setting window width to: "+_3,"layout");if(this.getWidth()!=_3)this.setWidth(_3);this.$7i=null}
+,isc.A.disableAutoSize=function isc_Window_disableAutoSize(){this.setAutoSize(false)}
+,isc.A.setAutoSize=function isc_Window_setAutoSize(_1){this.autoSize=_1;if(_1){if(this.body){if(isc.isA.Layout(this.body))this.body.vPolicy=this.body.hPolicy="none";this.body.setOverflow("visible")}
+this.vPolicy="none";this.setOverflow("visible")}else{if(this.body){if(isc.isA.Layout(this.body))this.body.vPolicy=this.body.hPolicy="fill";this.body.setOverflow("auto");this.body.inherentWidth=false}
+this.vPolicy="fill";this.setOverflow("hidden")}}
+,isc.A.dragResizeStart=function isc_Window_dragResizeStart(){if(this.Super("dragResizeStart",arguments)==false)return;if(this.autoSize&&isc.EH.dragTarget==this){this.autoSize=false;this.$7g=true}}
+,isc.A.returnValue=function isc_Window_returnValue(_1){if(this.isVisible())this.hide();if(this.callback){this.delayCall("fireCallback",[this.callback,"value",[_1]],50)}
+return _1}
+,isc.A.show=function isc_Window_show(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(this.isModal){if(this.modalTarget){if(!isc.isA.Canvas(this.modalTarget)||this.modalTarget.contains(this)){this.logWarn("Invalid modalTarget:"+this.modalTarget+". Should be a canvas, and not an ancestor of this Window.");delete this.modalTarget;this.isModal=false}else{this.modalTarget.showComponentMask(this.showModalMask?{styleName:this.modalMaskStyle,opacity:this.modalMaskOpacity}:null);this.observeModalTarget()}}else if(this.topElement!=null){this.logWarn("Window specified with 'isModal' set to true, but this window has a "+"parentElement. Only top level Windows can be shown modally.");this.isModal=false}else{this.showClickMask(this.getID()+(this.dismissOnOutsideClick?".handleCloseClick()":".flash()"),false,[this]);this.makeModalMask()}}
+if(this.autoCenter&&!this.parentElement){this.$7j=true;this.moveTo(0,-1000);this.$7j=false}
+this.invokeSuper(isc.Window,"show",_1,_2,_3,_4);if(this.autoCenter){this.centerInPage();if(!this.parentElement){isc.Page.setEvent(this.$nx,this,null,"parentResized")}}
+this.bringToFront(true)}
+,isc.A.makeModalMask=function isc_Window_makeModalMask(){if(!this.showModalMask)return;if(!this.modalMask)this.modalMask=this.createAutoChild("modalMask",{styleName:this.modalMaskStyle,opacity:this.modalMaskOpacity});this.modalMask.show()}
+,isc.A.hideModalMask=function isc_Window_hideModalMask(){if(this.modalMask)this.modalMask.hide()}
+,isc.A.destroyModalMask=function isc_Window_destroyModalMask(){if(this.modalMask){this.modalMask.destroy();this.modalMask=null}}
+,isc.A.observeModalTarget=function isc_Window_observeModalTarget(){if(this.$550)return;this.observe(this.modalTarget,"show","observer.modalTargetVisibilityChanged(observed)");this.observe(this.modalTarget,"hide","observer.modalTargetVisibilityChanged(observed)");this.observe(this.modalTarget,"clear","observer.modalTargetVisibilityChanged(observed)");this.observe(this.modalTarget,"draw","observer.modalTargetVisibilityChanged(observed)");this.observe(this.modalTarget,"parentVisibilityChanged","observer.modalTargetVisibilityChanged(observed)")}
+,isc.A.ignoreModalTarget=function isc_Window_ignoreModalTarget(){if(this.$550)return;this.ignore(this.modalTarget,"show");this.ignore(this.modalTarget,"hide");this.ignore(this.modalTarget,"draw");this.ignore(this.modalTarget,"clear");this.ignore(this.modalTarget,"parentVisibilityChanged")}
+,isc.A.modalTargetVisibilityChanged=function isc_Window_modalTargetVisibilityChanged(_1){this.$550=true;if(_1.isVisible()&&_1.isDrawn())this.show();else this.hide();delete this.$550}
+,isc.A.shouldDismissOnEscape=function isc_Window_shouldDismissOnEscape(){if(this.dismissOnEscape!=null)return this.dismissOnEscape;return this.showHeader&&this.headerControls&&this.showCloseButton&&this.headerControls.contains("closeButton")}
+,isc.A.handleKeyPress=function isc_Window_handleKeyPress(){var _1=isc.EH.getKey();if(_1=="Escape"&&this.shouldDismissOnEscape()){this.handleEscape();return false}
+return this.Super("handleKeyPress",arguments)}
+,isc.A.handleEscape=function isc_Window_handleEscape(){if(this.isMasked())return;this.handleCloseClick()}
+,isc.A.resized=function isc_Window_resized(_1,_2,_3,_4){this.invokeSuper(isc.Window,"resized",_1,_2,_3,_4);if(this.autoCenter)this.centerInPage()}
+,isc.A.hide=function isc_Window_hide(_1,_2,_3,_4){if(this.$7k)isc.Animation.finishAnimation(this.$7k);this.invokeSuper(isc.Window,"hide",_1,_2,_3,_4);if(this.isDrawn()&&this.isModal){if(this.modalTarget){this.modalTarget.hideComponentMask();this.ignoreModalTarget()}else{this.hideClickMask();this.hideModalMask()}}}
+,isc.A.clear=function isc_Window_clear(_1,_2,_3,_4){if(this.$7k)isc.Animation.finishAnimation(this.$7k);this.invokeSuper(isc.Window,"clear",_1,_2,_3,_4);if(!this.clearingWithModalTarget&&this.isVisible()&&this.isModal){if(this.modalTarget){this.ignoreModalTarget();this.modalTarget.hideComponentMask()}else{this.hideClickMask();this.hideModalMask()}}}
+,isc.A.parentResized=function isc_Window_parentResized(){this.Super("parentResized",arguments);if(this.autoCenter)this.centerInPage()}
+,isc.A.handleMoved=function isc_Window_handleMoved(){this.Super("handleMoved",arguments);if(this.isDrawn()&&!this.$7j)this.autoCenter=false}
+,isc.A.centerInPage=function isc_Window_centerInPage(){var _1=this.getVisibleWidth(),_2=this.getVisibleHeight(),_3=this.parentElement?this.parentElement:isc.Page,_4=((_3.getWidth()-_1)/2)+_3.getScrollLeft(),_5=((_3.getHeight()-_2)/2)+_3.getScrollTop();_4=Math.round(_4);_5=Math.max(Math.round(_5),0);this.$7j=true;this.moveTo(_4,_5);this.$7j=null}
+,isc.A.flash=function isc_Window_flash(_1){var _2=this.showHeader;if(_1==null){if(this.$7l)return false;this.$7l=true;_1=0;if(_2){this.$7m=this.header.getStateName();if(this.headerBackground){this.$7n=this.headerBackground.getStateName();this.$7o=this.headerBackground.src}}else{this.$7p=this.body.backgroundColor}}
+if(_2){var _3=(_1%2==0?this.hiliteHeaderStyle:this.$7m),_4=(_1%2==0?this.hiliteHeaderSrc:this.$7o),_5=(_1%2==0?this.hiliteHeaderStyle:this.$7n);this.header.setStyleName(_3)
+var _6=this.headerBackground;if(_6){this.headerBackground.setStyleName(_5)
+if(_6.setSrc)_6.setSrc(_4)}}else{var _7=(_1%2==0?this.hiliteBodyColor:this.$7p);this.body.setBackgroundColor(_7)}
+_1++;if(_1<4)this.delayCall("flash",[_1],100);else this.$7l=false;return false}
+,isc.A.minimize=function isc_Window_minimize(){if(this.$7k)isc.Animation.finishAnimation(this.$7k);if(this.minimized)return;if(!this.maximized){this.$7q=this.getHeight();this.$7r=this.getVisibleHeight();this.$7s=this.$po;this.$7t=this.canDragResize;this.canDragResize=false}else{if(this.maximizeButton){this.maximizeButton.addProperties(this.maximizeButtonDefaults);this.maximizeButton.redraw()}}
+var _1;if(this.minimizeHeight){_1=this.minimizeHeight}else if(this.showHeader){var _2;if(this.header){_2=this.header.getHeight()}else{var _3=this.headerDefaults;_2=_3.height||_3.defaultHeight}
+_1=_2+(this.layoutMargin*2)+this.getVMarginBorderPad()}else{_1=this.defaultMinimizeHeight}
+if(this.overflow==isc.Canvas.VISIBLE){this.setHeight(this.getVisibleHeight())}
+this.$7u=this.overflow;this.setOverflow("hidden");var _4=this.minimizeButton;if(_4){_4.addProperties(this.restoreButtonDefaults);_4.markForRedraw()}
+this.$7v=_1;if(this.animateMinimize&&this.isDrawn()&&this.isVisible()){if(_4){_4.disable();_4.redraw()}
+this.$7w();this.$7k=isc.Animation.registerAnimation(this.animateMinimizeStep,(this.minimizeTime||this.animateTime),this.minimizeAcceleration||this.animateAcceleration,this)}else{this.completeMinimize(_1)}}
+,isc.A.$7w=function isc_Window__storeContentRestoreStats(){if(this.body){this.$7x=this.body.getScrollTop();this.$7y=this.body.overflow;this.$7z=this.body.getHeight();this.$70=this.body.getWidth();this.$71=this.body.$po;this.$72=this.body.$pn;if(this.$7y==isc.Canvas.VISIBLE){this.body.resizeTo(this.body.getVisibleWidth(),this.body.getVisibleHeight())}
+this.body.setOverflow(isc.Canvas.HIDDEN)}
+if(this.footer){this.$73=this.footer.overflow;if(this.$73==isc.Canvas.VISIBLE){this.footer.setHeight(this.footer.getVisibleHeight())}
+this.footer.setOverflow(isc.Canvas.HIDDEN)}}
+,isc.A.$74=function isc_Window__resetContentRestoreStats(){if(this.body){this.body.scrollTo(null,this.$7x,"restore");this.body.resizeTo(this.$70,this.$7z);this.body.$po=this.$71;this.body.$pn=this.$72;this.body.setOverflow(this.$7y)}
+if(this.footer){this.footer.scrollTo(null,0,"restore");this.footer.setHeight(this.footerHeight);this.footer.setOverflow(this.$73)}
+delete this.$7x;delete this.$7z;delete this.$71;delete this.$70;delete this.$72;delete this.$7y;delete this.$73}
+,isc.A.animateMinimizeStep=function isc_Window_animateMinimizeStep(_1,_2,_3,_4,_5){var _6=(!_4&&!_5);if(this.maximized&&!this.$42u){this.$42v=(this.parentElement?this.parentElement.getInnerHeight():isc.Page.getHeight());this.$42w=(this.parentElement?this.parentElement.getInnerWidth():isc.Page.getWidth());this.$42u=true}
+var _7=this.minimized?this.$7v:this.maximized?this.$42v:this.$7r,_8=_4?this.$7r:_5?this.$42v:this.$7v,_9=this.maximized?this.$42w:this.$42x,_10=_5?this.$42w:this.$42x;var _11=Math.round(_7+(_1*(_8-_7))),_12=(_10==_9?_10:Math.round(_9+(_1*(_10-_9))));var _13=_11-this.getVMarginBorder()-(2*this.layoutMargin)-
+(this.showHeader?this.header.getHeight()+this.membersMargin:0),_14=(this.showBody?this.body:null),_15=(this.showFooter?this.footer:null),_16=0,_17=0,_18=(_15?this.footerHeight:0),_19=this.membersMargin||0;if(_15!=null){if(_13<=_18){_16=_13}else{_16=_18}}
+var _20=_15?_18+_19:0;if(_14!=null&&(_13>_20)){_17=_13-_20}
+if(_15){if(_16>0){if(_15.getHeight()!=_16){var _21=_15.getScrollTop()+_15.getViewportHeight();_15.resizeTo(null,_16);_15.scrollTo(null,_21-_15.getViewportHeight(),"animateMinimize")}
+if(!_15.isVisible())_15.show()}else if(_15.isVisible()){_15.hide()}}
+if(_14){if(_17>0){if(_14.getHeight()!=_17){var _21=_14.getScrollTop()+_14.getViewportHeight();_14.resizeTo(null,_17);_14.scrollTo(null,_21-_14.getViewportHeight(),"animateMinimize")}
+if(!_14.isVisible())_14.show()}else if(_14.isVisible()){_14.hide()}}
+if(_5||this.maximized){var _22=(_5?this.$42y:0),_23=(_5?this.$42z:0),_24=(_5?0:this.$42y),_25=(_5?0:this.$42z);this.moveTo(Math.round(_22+(_1*(_24-_22))),Math.round(_23+(_1*(_25-_23))),true)}
+this.resizeBy((_12-this.getWidth()),(_11-this.getHeight()),null,null,true);if(_1==1){delete this.$42u;this.$74();delete this.$7k
+if(_4)this.completeRestore(true);else if(_5)this.completeMaximize(true);else this.completeMinimize(this.$7v,true)}}
+,isc.A.animateRestoreStep=function isc_Window_animateRestoreStep(_1,_2,_3){this.animateMinimizeStep(_1,_2,_3,true)}
+,isc.A.animateMaximizeStep=function isc_Window_animateMaximizeStep(_1,_2,_3){this.animateMinimizeStep(_1,_2,_3,null,true)}
+,isc.A.isAnimating=function isc_Window_isAnimating(_1,_2,_3,_4,_5){if(this.invokeSuper(isc.Window,"isAnimating",_1,_2,_3,_4,_5))return true;if(_1&&!isc.isAn.Array(_1))_1=[_1];if(this.$7k&&((_1==null)||(_1.contains("minimize"))||(_1.contains("rect"))))return true;return false}
+,isc.A.completeMinimize=function isc_Window_completeMinimize(_1,_2){this.minimized=true;this.maximized=false;if(this.body&&this.body.isVisible())this.body.hide();if(this.footer&&this.footer.isVisible())this.footer.hide();this.$po=_1;if(this.$420!=null){if(!_2)this.setWidth(this.$420);this.$pn=this.$420}
+if(!_2){this.setHeight(_1);if(this.$42y!=null)this.setLeft(this.$42y);if(this.$42z!=null)this.setTop(this.$42z)}
+if(this.$421!=null)this.setShowShadow(this.$421);if(this.$422!=null&&this.headerLabel)
+this.headerLabel.parentElement.canDragReposition=this.$422;delete this.$422;delete this.$42z;delete this.$42y;delete this.$421;delete this.$420;if(this.minimizeButton)this.minimizeButton.enable()}
+,isc.A.restore=function isc_Window_restore(){if(this.$7k){isc.Animation.finishAnimation(this.$7k)}
+if(!this.minimized&&!this.maximized)return;if(!this.$7r)this.$7r=this.getVisibleHeight();var _1=(this.minimized?this.minimizeButton:this.maximizeButton);if(_1){_1.addProperties(this.minimized?this.minimizeButtonDefaults:this.maximizeButtonDefaults);_1.markForRedraw()}
+if(this.animateMinimize&&this.isDrawn()&&this.isVisible()){if(_1){_1.disable();_1.redraw()}
+this.$7w();this.$7k=isc.Animation.registerAnimation(this.animateRestoreStep,(this.minimizeTime||this.animateTime),this.minimizeAcceleration||this.animateAcceleration,this)}else{this.completeRestore()}}
+,isc.A.completeRestore=function isc_Window_completeRestore(_1){if(this.$7u!=null)this.setOverflow(this.$7u);if(this.$7q!=null)this.setHeight(this.$7q);if(this.$420!=null)this.setWidth(this.$420);if(!_1){if(this.$42y!=null)this.setLeft(this.$42y);if(this.$42z!=null)this.setTop(this.$42z)}
+if(this.$po!=null)this.$po=this.$7s;if(this.$pn!=null)this.$pn=this.$423;if(this.$421!=null)this.setShowShadow(this.$421);if(this.$7t!=null)this.canDragResize=this.$7t;if(this.$422!=null&&this.headerLabel)
+this.headerLabel.parentElement.canDragReposition=this.$422;var _2=this.minimized?this.minimizeButton:this.maximizeButton;this.minimized=false;this.maximized=false;this.$75();if(this.$424){this.reflowNow();this.setAutoSize(true)}
+delete this.$7q;delete this.$7s;delete this.$7r;delete this.$7t;delete this.$422;delete this.$7u;delete this.$420;delete this.$423;delete this.$421;delete this.$42y;delete this.$42z;delete this.$424;if(_2)_2.enable()}
+,isc.A.$75=function isc_Window__showComponents(){if(this.body&&!this.body.isVisible())this.body.show();if(this.footer&&!this.footer.isVisible())this.footer.show()}
+,isc.A.maximize=function isc_Window_maximize(){if(this.$7k)isc.Animation.finishAnimation(this.$7k);if(this.maximized)return;if(!this.minimized){this.$7q=this.getHeight();this.$7r=this.getVisibleHeight();this.$7s=this.$po;this.$7t=this.canDragResize;this.canDragResize=false}else{if(this.minimizeButton){this.minimizeButton.addProperties(this.minimizeButtonDefaults);this.minimizeButton.redraw()}}
+this.$42y=this.getLeft();this.$42z=this.getTop();this.$420=this.getWidth();this.$42x=this.getVisibleWidth();this.$423=this.$pn;if(this.headerLabel){this.$422=this.headerLabel.parentElement.canDragReposition;this.headerLabel.parentElement.canDragReposition=false}
+this.$421=this.showShadow;this.setShowShadow(false);if(this.autoSize){this.$424=true;this.setAutoSize(false)}
+var _1=this.maximizeButton;if(_1){_1.addProperties(this.restoreButtonDefaults);_1.markForRedraw()}
+if(this.animateMinimize&&this.isDrawn()&&this.isVisible()){if(_1){_1.disable();_1.redraw()}
+this.$42v=(this.parentElement?this.parentElement.getInnerHeight():isc.Page.getHeight());this.$42w=(this.parentElement?this.parentElement.getInnerWidth():isc.Page.getWidth());this.$7w();this.$7k=isc.Animation.registerAnimation(this.animateMaximizeStep,(this.minimizeTime||this.animateTime),this.minimizeAcceleration||this.animateAcceleration,this)}else{this.completeMaximize()}}
+,isc.A.completeMaximize=function isc_Window_completeMaximize(_1){if(!_1)this.moveTo(0,0);this.resizeTo("100%","100%");this.$75();this.minimized=false;this.maximized=true;if(this.maximizeButton)this.maximizeButton.enable()}
+,isc.A.resizeTo=function isc_Window_resizeTo(_1,_2,_3,_4,_5){if(!_5&&this.$7k){isc.Animation.finishAnimation(this.$7k)}
+return this.invokeSuper(isc.Window,"resizeTo",_1,_2,_3,_4,_5)}
+,isc.A.resizeBy=function isc_Window_resizeBy(_1,_2,_3,_4,_5){if(!_5&&this.$7k){isc.Animation.finishAnimation(this.$7k)}
+return this.invokeSuper(isc.Window,"resizeBy",_1,_2,_3,_4,_5)}
+,isc.A.$7e=function isc_Window__closeButtonClick(){return this.handleCloseClick()}
+,isc.A.handleCloseClick=function isc_Window_handleCloseClick(){if(this.onCloseClick&&this.onCloseClick()==false)return;return this.closeClick()}
+,isc.A.closeClick=function isc_Window_closeClick(){this.returnValue(null);this.hide();return false}
+);isc.B._maxIndex=isc.C+72;isc.Window.registerStringMethods({onMaximizeClick:"",onMinimizeClick:"",onRestoreClick:"",onCloseClick:""})
+if(isc.definePrintWindow)isc.definePrintWindow();isc.Window.registerDupProperties("items");isc.defineClass("Portlet","Window");isc.A=isc.Portlet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.showShadow=false;isc.A.animateMinimize=true;isc.A.dragAppearance="outline";isc.A.canDrop=true;isc.A.overflow="hidden";isc.A.minHeight=60;isc.A.minWidth=70;isc.A.resizeFrom=["T","B","L","R"];isc.A.showMaximizeButton=true;isc.A.headerControls=["headerLabel","minimizeButton","maximizeButton","closeButton"];isc.A.dragOpacity=30;isc.A.showCloseConfirmationMessage=true;isc.A.closeConfirmationMessage="Close portlet?";isc.B.push(isc.A.setMinHeight=function isc_Portlet_setMinHeight(_1){this.minHeight=_1;if(this.portalRow)this.portalRow.$87w()}
+,isc.A.setMinWidth=function isc_Portlet_setMinWidth(_1){if(this.minWidth==_1)return;this.minWidth=_1;if(this.portalRow)this.portalRow.reflow("Portlet minWidth changed")}
+,isc.A.setRowHeight=function isc_Portlet_setRowHeight(_1){this.rowHeight=_1;if(this.portalRow)this.portalRow.setHeight(_1)}
+,isc.A.closeClick=function isc_Portlet_closeClick(){if(this.showCloseConfirmationMessage){isc.confirm(this.closeConfirmationMessage,{target:this,methodName:"confirmedClosePortlet"})}else{this.confirmedClosePortlet(true)}}
+,isc.A.confirmedClosePortlet=function isc_Portlet_confirmedClosePortlet(_1){if(!_1)return;if(this.editContext&&this.editNode){this.editContext.removeNode(this.editNode)}else{if(this.portalRow){this.portalRow.removePortlets(this)}else{this.clear()}}
+if(this.destroyOnClose)this.markForDestroy()}
+,isc.A.maximize=function isc_Portlet_maximize(){var _1=this.getVisibleWidth(),_2=this.getVisibleHeight(),_3=this.getPageLeft(),_4=this.getPageTop();this.$55d=isc.Canvas.create({width:this.getVisibleWidth(),height:this.getVisibleHeight(),minHeight:this.getMinHeight(),minWidth:this.getMinWidth(),$858:this});this.masterLayout=this.parentElement;this.masterLayout.portletMaximizing=true;this.masterLayout.replaceMember(this,this.$55d,false);this.masterLayout.portletMaximizing=false;this.setWidth(_1);this.setHeight(_2);this.moveTo(_3,_4);this.bringToFront();this.draw();this.delayCall("doMaximize")}
+,isc.A.completeRestore=function isc_Portlet_completeRestore(){this.Super("completeRestore",arguments);this.masterLayout.portletMaximizing=true;this.masterLayout.replaceMember(this.$55d,this);this.masterLayout.portletMaximizing=false;this.$55d.$858=null;this.$55d.destroy();delete this.$55d;delete this.masterLayout}
+,isc.A.doMaximize=function isc_Portlet_doMaximize(){this.Super("maximize",arguments)}
+);isc.B._maxIndex=isc.C+8;isc.defineClass("PortalColumnHeader","HLayout");isc.A=isc.PortalColumnHeader.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.height=20;isc.A.noResizer=true;isc.A.border="1px solid #CCCCCC";isc.A.canDragReposition=true;isc.B.push(isc.A.initWidget=function isc_PortalColumnHeader_initWidget(){this.Super("initWidget",arguments);this.dragTarget=this.creator;this.addMember(isc.LayoutSpacer.create());this.menu=this.getMenuConstructor().create({width:150,portalColumn:this.creator,data:[{title:"Remove Column",click:"menu.portalColumn.removeSelf()",enableIf:function(_1,_2,_3){return _2.portalColumn.portalLayout.getMembers().length>1}},{title:"Add Column",click:"menu.portalColumn.addNewColumn()"}]});this.addMember(isc.MenuButton.create({title:"Column Properties",width:150,menu:this.menu}));this.addMember(isc.LayoutSpacer.create())}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("PortalRow","Layout");isc.A=isc.PortalRow.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.vertical=false;isc.A.respectSizeLimits=true;isc.A.overflow="auto";isc.A.membersMargin=3;isc.A.canAcceptDrop=true;isc.A.dropLineThickness=2;isc.A.dropLineProperties={backgroundColor:"blue"};isc.A.hDropOffset=15;isc.B.push(isc.A.initWidget=function isc_PortalRow_initWidget(){this.Super("initWidget",arguments);if(this.portlets)this.addPortlets(this.portlets);this.portlets=null}
+,isc.A.setCanResizePortlets=function isc_PortalRow_setCanResizePortlets(_1){this.canResizePortlets=_1;this.getPortlets().map(function(_2){_2.canDragResize=_1})}
+,isc.A.prepareForDragging=function isc_PortalRow_prepareForDragging(){var _1=this.ns.EH;if(this.hasMember(_1.dragTarget)&&_1.dragOperation==_1.DRAG_RESIZE){switch(_1.resizeEdge){case"B":_1.dragTarget=this;break;case"T":var _2=this.parentElement.getMemberNumber(this);if(_2>0){_1.dragTarget=this.parentElement.getMember(_2-1);_1.resizeEdge="B"}else{_1.dragTarget=null}
+break;case"L":var _2=this.getMemberNumber(_1.dragTarget);if(_2>0){_1.dragTarget=this.getMember(_2-1);_1.resizeEdge="R"}else{var _3=this.portalLayout.getPortalColumnNumber(this.portalColumn);if(_3==0){_1.dragTarget=null}}
+break;default:return this.Super("prepareForDragging",arguments)}}else{return this.Super("prepareForDragging",arguments)}}
+,isc.A.isHDrop=function isc_PortalRow_isHDrop(){var _1=this.getDropPosition();var _2=this.getMember(_1==0?0:_1-1);if(!_2.containsEvent()&&_1<this.members.length){_2=this.getMember(_1)}
+var _3=_2.getOffsetX();if(_3<this.hDropOffset||_3>_2.getVisibleWidth()-this.hDropOffset){return true}else{return false}}
+,isc.A.isPortalColumnDrop=function isc_PortalRow_isPortalColumnDrop(){var _1=this.ns.EH.dragTarget;var _2=_1.getDragType();if(_2=="PortalColumn")return true;if(_1.isA("Palette")){var _3=_1.getDragData(),_4=(isc.isAn.Array(_3)?_3[0]:_3);if(_4.className=="PortalColumn"||_4.type=="PortalColumn")return true}
+return false}
+,isc.A.dropMove=function isc_PortalRow_dropMove(){if(this.isHDrop()&&!this.isPortalColumnDrop()){this.Super("dropMove",arguments);this.parentElement.hideDropLine();return isc.EH.STOP_BUBBLING}else{this.hideDropLine()}}
+,isc.A.dropOver=function isc_PortalRow_dropOver(){if(this.isHDrop()&&!this.isPortalColumnDrop()){this.Super("dropOver",arguments);this.parentElement.hideDropLine();return isc.EH.STOP_BUBBLING}else{this.hideDropLine()}}
+,isc.A.getDropComponent=function isc_PortalRow_getDropComponent(_1,_2){var _3=this.portalLayout.getDropPortlet(_1,this.portalLayout.getPortalColumnNumber(this.portalColumn),this.portalColumn.getPortalRowNumber(this),_2);if(this.handleDroppedEditNode)_3=this.handleDroppedEditNode(_3,_2);if(_3){if(!isc.isA.Portlet(_3)){_3=isc.Portlet.create({autoDraw:false,title:"",items:_3,destroyOnClose:true})}}
+return _3}
+,isc.A.drop=function isc_PortalRow_drop(){if(this.isHDrop()&&!this.isPortalColumnDrop()){this.Super("drop",arguments);this.parentElement.hideDropLine();this.hideDropLine();return isc.EH.STOP_BUBBLING}else{this.hideDropLine()}}
+,isc.A.setMinHeight=function isc_PortalRow_setMinHeight(_1){if(this.minHeight==_1)return;this.minHeight=_1;this.portalColumn.rowLayout.reflow("PortalRow minHeight changed")}
+,isc.A.$87w=function isc_PortalRow__checkPortletMinHeight(){this.setMinHeight(this.getMembers().map("getMinHeight").max()+this.$2u()+this.getVMarginBorder())}
+,isc.A.reflow=function isc_PortalRow_reflow(){this.portalLayout.reflow();this.Super("reflow",arguments)}
+,isc.A.$87x=function isc_PortalRow__getDesiredMemberSpace(){return this.members.map(function(_1){if(isc.isA.Number(_1.$pn)){return Math.max(_1.$pn,_1.minWidth)}else{return _1.minWidth}}).sum()}
+,isc.A.getTotalMemberSpace=function isc_PortalRow_getTotalMemberSpace(){var _1=this.Super("getTotalMemberSpace",arguments);var _2=this.$87x();if(_1<_2){return _2}else{return _1}}
+,isc.A.membersChanged=function isc_PortalRow_membersChanged(){if(this.members.length==0){if(!this.portletMaximizing){if(this.editContext&&this.editNode)this.editContext.removeNode(this.editNode);this.destroy()}}else{this.$87w()}}
+,isc.A.addMembers=function isc_PortalRow_addMembers(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];var _3=this;_1.map(function(_6){if(_6.$858)return;_6.canDragResize=_3.canResizePortlets;var _4=_6.$po;if(_4){_6.$po=null;_6._percent_height=null;if(!_6.rowHeight)_6.rowHeight=_4}
+if(_6.rowHeight){if(!_3.$po){_3.setHeight(_6.rowHeight);_3.$po=_6.rowHeight}}});this.Super("addMembers",arguments);_1.map(function(_6){_6.portalRow=_3});if(this.editContext&&!this.$86r&&!this.portletMaximizing){for(var i=0;i<_1.length;i++){var _6=_1[i];if(_6.editNode){this.editContext.addNode(_6.editNode,this.editNode,_2+i,null,true)}}}}
+,isc.A.addPortlets=function isc_PortalRow_addPortlets(_1,_2){this.$86r=true;this.addMembers(_1,_2);delete this.$86r}
+,isc.A.addPortlet=function isc_PortalRow_addPortlet(_1,_2){this.addPortlets(_1,_2)}
+,isc.A.removeMembers=function isc_PortalRow_removeMembers(_1){this.Super("removeMembers",arguments);if(!isc.isAn.Array(_1))_1=[_1];if(!this.portletMaximizing){var _2=this;_1.map(function(_3){if(_3.portalRow)_3.portalRow=null;if(_2.editContext&&_3.editNode&&!_2.$86s){_2.editContext.removeNode(_3.editNode,true)}})}}
+,isc.A.removePortlets=function isc_PortalRow_removePortlets(_1){if(!isc.isAn.Array(_1))_1=[_1];var _2=this;_1.map(function(_4){var _3=_4.$55d;if(_3){_2.removeMembers(_3);delete _3.$858;delete _4.$55d;_3.destroy();_4.deparent();_4.clear();_4.portalRow=null}else{this.$86s=true;_2.removeMembers(_4);delete this.$86s}})}
+,isc.A.removePortlet=function isc_PortalRow_removePortlet(_1){this.removePortlets(_1)}
+,isc.A.getPortlet=function isc_PortalRow_getPortlet(_1){return this.getMember(_1)}
+,isc.A.getPortlets=function isc_PortalRow_getPortlets(){return this.getMembers().map(function(_1){if(_1.$858){return _1.$858}else{return _1}})}
+);isc.B._maxIndex=isc.C+23;isc.A=isc.PortalRow;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.applyStretchResizePolicy=function isc_c_PortalRow_applyStretchResizePolicy(_1,_2,_3,_4,_5){if(_5.portalLayout.preventRowUnderflow){if(_1&&_1.length>0){var _6=_1.map(function(_8){return isc.isA.Number(_8)}).and();if(_6){var _7=_1.sum();if(_7<_2){_1[_1.length-1]="*"}}}}
+return this.Super("applyStretchResizePolicy",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("PortalColumnBody","Layout");isc.A=isc.PortalColumnBody.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.vertical=true;isc.A.layoutMargin=3;isc.A.membersMargin=3;isc.A.defaultResizeBars="none";isc.A.canAcceptDrop=true;isc.A.canDrag=false;isc.A.dropLineThickness=2;isc.A.dropLineProperties={backgroundColor:"blue"};isc.A.width="100%";isc.A.respectSizeLimits=true;isc.B.push(isc.A.getTotalMemberSpace=function isc_PortalColumnBody_getTotalMemberSpace(){var _1=this.Super("getTotalMemberSpace",arguments);var _2=this.members.map(function(_3){if(isc.isA.Number(_3.$po)){return Math.max(_3.$po,_3.minHeight)}else{return _3.minHeight}}).sum();return Math.max(_1,_2)}
+,isc.A.isPortalColumnDrop=function isc_PortalColumnBody_isPortalColumnDrop(){var _1=this.ns.EH.dragTarget;var _2=_1.getDragType();if(_2=="PortalColumn")return true;if(_1.isA("Palette")){var _3=_1.getDragData(),_4=(isc.isAn.Array(_3)?_3[0]:_3);if(_4.className=="PortalColumn"||_4.type=="PortalColumn")return true}
+return false}
+,isc.A.dropMove=function isc_PortalColumnBody_dropMove(){if(this.isPortalColumnDrop()){this.hideDropLine()}else{this.Super("dropMove",arguments);return isc.EH.STOP_BUBBLING}}
+,isc.A.dropOver=function isc_PortalColumnBody_dropOver(){if(this.isPortalColumnDrop()){this.hideDropLine()}else{this.Super("dropOver",arguments);return isc.EH.STOP_BUBBLING}}
+,isc.A.drop=function isc_PortalColumnBody_drop(){if(this.isPortalColumnDrop()){this.hideDropLine()}else{this.Super("drop",arguments);return isc.EH.STOP_BUBBLING}}
+,isc.A.getDropComponent=function isc_PortalColumnBody_getDropComponent(_1,_2){var _3=this.creator.portalLayout.getDropPortlet(_1,this.creator.portalLayout.getPortalColumnNumber(this.creator),_2,null);if(this.handleDroppedEditNode)_3=this.handleDroppedEditNode(_3,_2);if(_3){if(!isc.isA.Portlet(_3)){_3=isc.Portlet.create({autoDraw:false,title:"",items:_3,destroyOnClose:true})}
+var _4=_3.portalRow;if(_4&&_4.parentElement==this&&_4.getMembers().length==1){return _4}else{this.creator.addPortlet(_3,_2);return null}}}
+);isc.B._maxIndex=isc.C+6;isc.A=isc.PortalColumnBody;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.applyStretchResizePolicy=function isc_c_PortalColumnBody_applyStretchResizePolicy(_1,_2,_3,_4,_5){if(_5.creator.portalLayout.preventColumnUnderflow){if(_1&&_1.length>0){var _6=_1.map(function(_8){return isc.isA.Number(_8)}).and();if(_6){var _7=_1.sum();if(_7<_2){_1[_1.length-1]="*"}}}}
+return this.Super("applyStretchResizePolicy",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("PortalColumn","Layout");isc.A=isc.PortalColumn.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.vertical=true;isc.A.minWidth=80;isc.A.dragAppearance="outline";isc.A.canAcceptDrop=false;isc.A.canDrop=true;isc.A.dragType="PortalColumn";isc.A.showColumnHeader=true;isc.A.columnHeaderConstructor="PortalColumnHeader";isc.A.columnHeaderDefaults={title:"Column"};isc.A.rowLayoutDefaults={_constructor:"PortalColumnBody"};isc.A.rowConstructor="PortalRow";isc.B.push(isc.A.setShowColumnHeader=function isc_PortalColumn_setShowColumnHeader(_1){if(_1){if(this.showColumnHeader)return;this.showColumnHeader=_1;this.addAutoChild("columnHeader",{autoParent:"none"});this.addMember(this.columnHeader,0)}else{if(!this.showColumnHeader)return;this.showColumnHeader=_1;this.removeMember(this.columnHeader)}}
+,isc.A.initWidget=function isc_PortalColumn_initWidget(){this.Super("initWidget",arguments);this.addAutoChild("columnHeader");this.addAutoChild("rowLayout");if(this.portalRows)this.addPortalRows(this.portalRows);this.portalRows=null}
+,isc.A.$87y=function isc_PortalColumn__getDesiredWidth(){var _1=this.getPortalRows();if(_1.length==0){return this.minWidth}else{var _2=_1.map(function(_3){return _3.$87x()+_3.getMarginSpace()+_3.getHMarginBorder()}).max();_2+=this.$2u()+this.getHMarginBorder()+this.rowLayout.$2u()+this.rowLayout.getHMarginBorder();if(this.rowLayout.vscrollOn)_2+=this.rowLayout.getScrollbarSize();return Math.max(_2,this.minWidth)}}
+,isc.A.addNewColumn=function isc_PortalColumn_addNewColumn(){this.portalLayout.addColumnAfter(this)}
+,isc.A.removeSelf=function isc_PortalColumn_removeSelf(){this.portalLayout.removeColumn(this.portalLayout.getMemberNumber(this))}
+,isc.A.makePortalRow=function isc_PortalColumn_makePortalRow(_1){if(_1==null)_1={};var _2={portalLayout:this.portalLayout,portalColumn:this,canResizePortlets:this.canResizePortlets};var _3;if(isc.isA.PortalRow(_1)){_1.setProperties(_2);_3=_1}else{isc.addProperties(_1,_2);_3=this.createAutoChild("row",_1)}
+return _3}
+,isc.A.setCanResizePortlets=function isc_PortalColumn_setCanResizePortlets(_1){this.canResizePortlets=_1;this.getPortalRows().map(function(_2){_2.setCanResizePortlets(_1)})}
+,isc.A.addPortalRows=function isc_PortalColumn_addPortalRows(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];var _3=this;_1=_1.map(function(_4){return _3.makePortalRow(_4)});this.rowLayout.addMembers(_1,_2)}
+,isc.A.addPortalRow=function isc_PortalColumn_addPortalRow(_1,_2){this.addPortalRows(_1,_2)}
+,isc.A.removePortalRows=function isc_PortalColumn_removePortalRows(_1){this.rowLayout.removeMembers(_1)}
+,isc.A.removePortalRow=function isc_PortalColumn_removePortalRow(_1){this.removePortalRows(_1)}
+,isc.A.getPortalRows=function isc_PortalColumn_getPortalRows(){return this.rowLayout.getMembers()}
+,isc.A.getPortalRowNumber=function isc_PortalColumn_getPortalRowNumber(_1){return this.rowLayout.getMemberNumber(_1)}
+,isc.A.getPortalRow=function isc_PortalColumn_getPortalRow(_1){return this.rowLayout.getMember(_1)}
+,isc.A.getPortlets=function isc_PortalColumn_getPortlets(){var _1=[];this.getPortalRows().map(function(_2){_1.addList(_2.getPortlets())});return _1}
+,isc.A.getPortletArray=function isc_PortalColumn_getPortletArray(){return this.getPortalRows().map(function(_1){return _1.getPortlets()})}
+,isc.A.getPortlet=function isc_PortalColumn_getPortlet(_1){var _2=this.getPortalRows();for(var x=0;x<_2.length;x++){var _4=_2[x].getPortlet(_1);if(_4)return _4}
+return null}
+,isc.A.addPortlets=function isc_PortalColumn_addPortlets(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];var _3=this;var _4=_1.map(function(_5){return _3.makePortalRow({portlets:_5})});this.addPortalRows(_4,_2)}
+,isc.A.addPortlet=function isc_PortalColumn_addPortlet(_1,_2){this.addPortlets(_1,_2)}
+,isc.A.addPortletToExistingRow=function isc_PortalColumn_addPortletToExistingRow(_1,_2,_3){var _4=this.rowLayout.getMembers();if(_4==null||_4.length<=_2){if(this.editContext&&this.editNode&&_1.editNode){this.addNode(_1.editNode,this.editNode,_4.length)}else{this.addPortlet(_1,_4.length)}}else{var _5=this.rowLayout.getMember(_2);if(_5.editContext&&_5.editNode&&_1.editNode){_5.editContext.addNode(_1.editNode,_5.editNode,_3)}else{_5.addPortlets(_1,_3)}}}
+);isc.B._maxIndex=isc.C+20;isc.defineClass("PortalLayout","Layout");isc.A=isc.PortalLayout.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.vertical=false;isc.A.overflow=isc.Canvas.AUTO;isc.A.columnOverflow=isc.Canvas.AUTO;isc.A.canStretchColumnWidths=true;isc.A.canShrinkColumnWidths=true;isc.A.preventUnderflow=true;isc.A.preventColumnUnderflow=true;isc.A.preventRowUnderflow=true;isc.A.numColumns=2;isc.A.showColumnMenus=true;isc.A.columnBorder="1px solid gray";isc.A.canResizeColumns=false;isc.A.canAcceptDrop=true;isc.A.dropTypes=["PortalColumn"];isc.A.dropLineThickness=2;isc.A.dropLineProperties={backgroundColor:"blue"};isc.A.rowConstructor=isc.PortalColumn.getInstanceProperty("rowConstructor");isc.A.rowLayoutDefaults=isc.PortalColumn.getInstanceProperty("rowLayoutDefaults");isc.A.columnConstructor="PortalColumn";isc.B.push(isc.A.setColumnOverflow=function isc_PortalLayout_setColumnOverflow(_1){this.columnOverflow=_1;this.rowLayoutDefaults.overflow=_1;this.getPortalColumns().map(function(_2){_2.rowLayout.setOverflow(_1)})}
+,isc.A.setCanStretchColumnWidths=function isc_PortalLayout_setCanStretchColumnWidths(_1){this.canStretchColumnWidths=_1;this.reflow("canStretchColumnWidths changed")}
+,isc.A.setCanShrinkColumnWidths=function isc_PortalLayout_setCanShrinkColumnWidths(_1){this.canShrinkColumnWidths=_1;this.reflow("canShrinkColumnWidths changed")}
+,isc.A.setStretchColumnWidthsProportionally=function isc_PortalLayout_setStretchColumnWidthsProportionally(_1){this.stretchColumnWidthsProportionally=_1;this.reflow("stretchColumnWidthsProportionally changed")}
+,isc.A.setPreventUnderflow=function isc_PortalLayout_setPreventUnderflow(_1){if(this.preventUnderflow==_1)return;this.preventUnderflow=_1;this.reflow("preventUndeflow changed")}
+,isc.A.setPreventColumnUnderflow=function isc_PortalLayout_setPreventColumnUnderflow(_1){if(this.preventColumnUnderflow==_1)return;this.preventColumnUnderflow=_1;this.getPortalColumns().map(function(_2){_2.rowLayout.reflow("preventColumnUnderflow changed")})}
+,isc.A.setPreventRowUnderflow=function isc_PortalLayout_setPreventRowUnderflow(_1){if(this.preventRowUnderflow==_1)return;this.preventRowUnderflow=_1;this.getPortalColumns().map(function(_2){_2.getPortalRows().map(function(_3){_3.reflow("preventRowUnderflow changed")})})}
+,isc.A.getNumColumns=function isc_PortalLayout_getNumColumns(){return this.getMembers().length}
+,isc.A.setShowColumnMenus=function isc_PortalLayout_setShowColumnMenus(_1){if(this.showColumnMenus==_1)return;this.showColumnMenus=_1;this.getPortalColumns().map(function(_2){_2.setShowColumnHeader(_1)})}
+,isc.A.setColumnBorder=function isc_PortalLayout_setColumnBorder(_1){this.columnBorder=_1;var _2=this.members||[];for(var i=0;i<_2.length;i++){_2[i].setBorder(_1)}}
+,isc.A.setCanResizeColumns=function isc_PortalLayout_setCanResizeColumns(_1){this.canResizeColumns=_1;this.setDefaultResizeBars(_1?"all":"none")}
+,isc.A.setCanResizeRows=function isc_PortalLayout_setCanResizeRows(_1){this.setCanResizePortlets(_1)}
+,isc.A.setCanResizePortlets=function isc_PortalLayout_setCanResizePortlets(_1){this.canResizePortlets=_1;this.getPortalColumns().map(function(_2){_2.setCanResizePortlets(_1)})}
+,isc.A.initWidget=function isc_PortalLayout_initWidget(){this.Super("initWidget",arguments);this.setCanResizeColumns(this.canResizeColumns);this.setColumnOverflow(this.columnOverflow);if(this.canResizeRows!=null)this.setCanResizePortlets(this.canResizeRows);if(this.portalColumns){this.addPortalColumns(this.portalColumns);delete this.portalColumns}else if(this.portlets){var _1=this;if(!isc.isAn.Array(this.portlets))this.portlets=[this.portlets];if(!isc.isAn.Array(this.portlets[0]))this.portlets=[this.portlets];this.portlets.map(function(_5){var _2=_1.makePortalColumn();_1.addPortalColumn(_2);if(!isc.isAn.Array(_5))_5=[_5];_5.map(function(_6){var _3=_2.makePortalRow();_2.addPortalRow(_3);_3.addPortlets(_6)})});delete this.portlets}else{if(this.numColumns){for(var x=0;x<this.numColumns;x++){this.addColumn()}}}}
+,isc.A.getDropPortlet=function isc_PortalLayout_getDropPortlet(_1,_2,_3,_4){return _1}
+,isc.A.makePortalColumn=function isc_PortalLayout_makePortalColumn(_1){if(_1==null)_1={};var _2={portalLayout:this,showColumnHeader:this.showColumnMenus,border:this.columnBorder,canResizePortlets:this.canResizePortlets,rowConstructor:this.rowConstructor,rowDefaults:this.rowDefaults,rowProperties:this.rowProperties,rowLayoutDefaults:this.rowLayoutDefaults,rowLayoutProperties:this.rowLayoutProperties}
+var _3;if(isc.isA.PortalColumn(_1)){_1.setProperties(_2);_3=_1}else{isc.addProperties(_1,_2);_3=this.createAutoChild("column",_1)}
+return _3}
+,isc.A.addMembers=function isc_PortalLayout_addMembers(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];var _3=this;_1=_1.map(function(_5){return _3.makePortalColumn(_5)});this.Super("addMembers",arguments);if(this.editContext&&!this.$86t){for(var i=0;i<_1.length;i++){var _5=_1[i];if(_5.editNode){this.editContext.addNode(_5.editNode,this.editNode,_2+i,null,true)}}}}
+,isc.A.addPortalColumns=function isc_PortalLayout_addPortalColumns(_1,_2){this.$86t=true;this.addMembers(_1,_2);delete this.$86t}
+,isc.A.addPortalColumn=function isc_PortalLayout_addPortalColumn(_1,_2){this.addPortalColumns(_1,_2)}
+,isc.A.removeMembers=function isc_PortalLayout_removeMembers(_1){this.Super("removeMembers",arguments);if(this.editContext&&!this.$86u){if(!isc.isAn.Array(_1))_1=[_1];var _2=this;_1.map(function(_3){if(_3.editNode){_2.editContext.removeNode(_3.editNode,true)}})}}
+,isc.A.removePortalColumns=function isc_PortalLayout_removePortalColumns(_1){this.$86u=true;this.removeMembers(_1);delete this.$86u}
+,isc.A.removePortalColumn=function isc_PortalLayout_removePortalColumn(_1){this.removePortalColumns(_1)}
+,isc.A.addColumn=function isc_PortalLayout_addColumn(_1){if(this.editContext){var _2=this.editContext.makeEditNode({type:this.columnConstructor});this.editContext.addNode(_2,this.editNode,_1)}else{var _3="";var _4=0;while(window[(_3="PortalColumn"+_4++)]){}
+this.addPortalColumn({ID:_3},_1)}}
+,isc.A.removeColumn=function isc_PortalLayout_removeColumn(_1){var _2=this.members[_1];if(_2!=null){if(this.editContext&&_2.editNode){this.editContext.removeNode(_2.editNode)}else{_2.destroy()}}}
+,isc.A.addColumnAfter=function isc_PortalLayout_addColumnAfter(_1){var _2=this.getMemberNumber(_1)+1;this.addColumn(_2)}
+,isc.A.getPortlets=function isc_PortalLayout_getPortlets(){var _1=[];this.getPortalColumns().map(function(_2){_1.addList(_2.getPortlets())});return _1}
+,isc.A.getPortletArray=function isc_PortalLayout_getPortletArray(){return this.getPortalColumns().map(function(_1){return _1.getPortletArray()})}
+,isc.A.addPortlet=function isc_PortalLayout_addPortlet(_1,_2,_3,_4){if(_3==null)_3=0;if(_2==null)_2=0;var _5=this.getMember(_2);if(_5!=null){if(_4==null){if(_5.editContext&&_5.editNode&&_1.editNode){_5.editContext.addNode(_1.editNode,_5.editNode,_3)}else{_5.addPortlet(_1,_3)}}else{_5.addPortletToExistingRow(_1,_3,_4)}}}
+,isc.A.getTotalMemberSpace=function isc_PortalLayout_getTotalMemberSpace(){var _1=this.Super("getTotalMemberSpace",arguments);var _2=this.members.map(function(_3){if(isc.isA.Number(_3.$pn)){return Math.max(_3.$pn,_3.minWidth)}else{return _3.minWidth}}).sum();return Math.max(_1,_2)}
+,isc.A.setColumnWidth=function isc_PortalLayout_setColumnWidth(_1,_2){var _3=this.getPortalColumn(_1);if(!_3)return;if(_3.editContext&&_3.editNode){_3.editContext.setNodeProperties(_3.editNode,{width:_2})}else{_3.setWidth(_2)}}
+,isc.A.getColumnWidth=function isc_PortalLayout_getColumnWidth(_1){var _2=this.getPortalColumn(_1);if(_2){return _2.getWidth()}else{return null}}
+,isc.A.getPortalColumns=function isc_PortalLayout_getPortalColumns(){return this.getMembers()}
+,isc.A.getPortalColumn=function isc_PortalLayout_getPortalColumn(_1){return this.getMember(_1)}
+,isc.A.getPortalColumnNumber=function isc_PortalLayout_getPortalColumnNumber(_1){return this.getMemberNumber(_1)}
+,isc.A.getColumn=function isc_PortalLayout_getColumn(_1){return this.getPortalColumn(_1)}
+,isc.A.removePortlet=function isc_PortalLayout_removePortlet(_1){if(this.editContext&&_1.editNode){this.editContext.removeNode(_1.editNode)}else{if(_1.portalRow)_1.portalRow.removePortlets(_1)}}
+);isc.B._maxIndex=isc.C+36;isc.A=isc.PortalLayout;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.applyStretchResizePolicy=function isc_c_PortalLayout_applyStretchResizePolicy(_1,_2,_3,_4,_5){if(_5.preventUnderflow){if(_1&&_1.length>0){var _6=_1.map(function(_16){return isc.isA.Number(_16)}).and();if(_6){var _7=_1.sum();if(_7<_2){_1[_1.length-1]="*"}}}}
+var _8=this.Super("applyStretchResizePolicy",arguments);if(_4)_8=_1;var _9=_5.getPortalColumns().map("$87y");var _10=0;if(_5.canStretchColumnWidths){if(_5.stretchColumnWidthsProportionally){var _11=1;for(var i=0;i<_8.length;i++){var _13=(_9[i]/_8[i]);_11=Math.max(_11,_13)}
+if(_11>1){for(var i=0;i<_8.length;i++){_8[i]=_8[i]*_11}}}else{for(var i=0;i<_8.length;i++){if(_9[i]>_8[i]){_10+=_9[i]-_8[i];_8[i]=_9[i]}else if(_10&&_5.canShrinkColumnWidths){var _14=_8[i]-_9[i];var _15=Math.min(_10,_14);_8[i]-=_15;_10-=_15}}
+if(_10&&_5.canShrinkColumnWidths){for(var i=0;i<_8.length;i++){if(_9[i]<_8[i]){var _14=_8[i]-_9[i];var _15=Math.min(_10,_14);_8[i]-=_15;_10-=_15;if(_10==0)break}}}}}
+return _8}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("Dialog","Window");isc.A=isc.Dialog;isc.A.$76=[];isc.A.OK_BUTTON_TITLE="OK";isc.A.APPLY_BUTTON_TITLE="Apply";isc.A.YES_BUTTON_TITLE="Yes";isc.A.NO_BUTTON_TITLE="No";isc.A.CANCEL_BUTTON_TITLE="Cancel";isc.A.DONE_BUTTON_TITLE="Done";isc.A.CONFIRM_TITLE="Confirm";isc.A.SAY_TITLE="Note";isc.A.WARN_TITLE="Warning";isc.A.ASK_TITLE="Question";isc.A.ASK_FOR_VALUE_TITLE="Please enter a value";isc.A.LOGIN_TITLE="Please log in";isc.A.USERNAME_TITLE="Username";isc.A.PASSWORD_TITLE="Password";isc.A.LOGIN_BUTTON_TITLE="Log in";isc.A.LOGIN_ERROR_MESSAGE="Invalid username or password";isc.A.OK={getTitle:function(){return isc.Dialog.OK_BUTTON_TITLE},width:75,click:function(){this.topElement.okClick()}};isc.A.APPLY={getTitle:function(){return isc.Dialog.APPLY_BUTTON_TITLE},width:75,click:function(){this.topElement.applyClick()}};isc.A.YES={getTitle:function(){return isc.Dialog.YES_BUTTON_TITLE},width:75,click:function(){this.topElement.yesClick()}};isc.A.NO={getTitle:function(){return isc.Dialog.NO_BUTTON_TITLE},width:75,click:function(){this.topElement.noClick()}};isc.A.CANCEL={getTitle:function(){return isc.Dialog.CANCEL_BUTTON_TITLE},width:75,click:function(){this.topElement.cancelClick()}};isc.A.DONE={getTitle:function(){return isc.Dialog.DONE_BUTTON_TITLE},width:75,click:function(){this.topElement.doneClick()}};isc.A=isc.Dialog.getPrototype();isc.A.defaultWidth=360;isc.A.title="Dialog";isc.A.styleName="dialogBackground";isc.A.skinImgDir="images/Dialog/";isc.A.canDragReposition=false;isc.A.canDragResize=false;isc.A.autoCenter=true;isc.A.bodyStyle="dialogBody";isc.A.bodyColor="#DDDDDD";isc.A.hiliteBodyColor="#FFFFFF";isc.A.bodyDefaults=isc.addProperties({},isc.Window.getInstanceProperty("bodyDefaults"),{layoutTopMargin:15,layoutLeftMargin:15,layoutRightMargin:15,layoutBottomMargin:5});isc.A.messageStyle="normal";isc.A.messageLabelDefaults={width:"100%",canSelectText:true};isc.A.messageIconDefaults={width:32,height:32};isc.A.messageStackDefaults={height:1,layoutMargin:10,layoutBottomMargin:5,membersMargin:10};isc.A.autoChildParentMap=isc.addProperties({},isc.Window.getInstanceProperty("autoChildParentMap"),{messageStack:"body",messageIcon:"messageStack",messageLabel:"messageStack"});isc.A.headerStyle="dialogHeader";isc.A.hiliteHeaderStyle="dialogHeaderHilite";isc.A.headerLabelDefaults=isc.addProperties({},isc.Window.getInstanceProperty("headerLabelDefaults"),{styleName:"dialogHeaderText"});isc.A.showHeaderIcon=false;isc.A.showMinimizeButton=false;isc.A.showMaximizeButton=false;isc.A.showFooter=false;isc.A.showToolbar=true;isc.A.autoFocus=true;isc.A.askIcon="[SKIN]ask.png";isc.A.sayIcon="[SKIN]say.png";isc.A.warnIcon="[SKIN]warn.png";isc.A.confirmIcon="[SKIN]confirm.png";isc.A.notifyIcon="[SKIN]notify.png";isc.A.errorIcon="[SKIN]error.png";isc.A.stopIcon="[SKIN]stop.png";isc.A.toolbarDefaults=isc.addProperties({},isc.Window.getInstanceProperty("toolbarDefaults"),{layoutAlign:"center",width:20,click:function(_1,_2){this.Super("click",arguments);var _3=isc.EH.getTarget(),_4=this.getMemberNumber(_3);if(_4==-1)return;this.topElement.buttonClick(_3,_4)}});isc.A=isc.Dialog.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.namedLocatorChildren=["okButton","applyButton","yesButton","noButton","cancelButton","doneButton"];isc.B.push(isc.A.initWidget=function isc_Dialog_initWidget(){if(this.message!=null){this.autoSize=true}
+this.Super("initWidget",arguments);if(this.buttons){this.toolbarButtons=this.buttons}}
+,isc.A.createChildren=function isc_Dialog_createChildren(){var _1=this.showToolbar;this.showToolbar=false;this.Super("createChildren");this.showToolbar=_1;if(this.message!=null){this.body.hPolicy="fill";this.addAutoChild("messageStack",null,isc.HStack);if(this.icon!=null){this.addAutoChild("messageIcon",{src:this.getImgURL(this.icon)},isc.Img)}
+var _2=this.message.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)});this.addAutoChild("messageLabel",{contents:_2,baseStyle:this.messageStyle},isc.Label)}
+if(this.showToolbar){this.makeToolbar()}}
+,isc.A.draw=function isc_Dialog_draw(){if(!this.readyToDraw())return this;this.Super("draw",arguments);if(this.toolbar&&this.autoFocus){var _1=this.toolbar.getMember(0);if(_1)_1.focus()}
+return this}
+,isc.A.saveData=function isc_Dialog_saveData(){}
+,isc.A.cancelClick=function isc_Dialog_cancelClick(){return this.closeClick()}
+,isc.A.$7e=function isc_Dialog__closeButtonClick(){return this.cancelClick()}
+,isc.A.okClick=function isc_Dialog_okClick(){this.saveData();this.clear();this.returnValue(true)}
+,isc.A.applyClick=function isc_Dialog_applyClick(){this.saveData()}
+,isc.A.yesClick=function isc_Dialog_yesClick(){this.returnValue(true)}
+,isc.A.noClick=function isc_Dialog_noClick(){this.returnValue(false)}
+,isc.A.doneClick=function isc_Dialog_doneClick(){this.clear();this.returnValue(true)}
+,isc.A.buttonClick=function isc_Dialog_buttonClick(_1,_2){}
+);isc.B._maxIndex=isc.C+12;isc.Dialog.changeDefaults("toolbarDefaults",{makeButton:function(_1){var _2=_1,_1=this.Super("makeButton",arguments);switch(_2)
+{case isc.Dialog.OK:this.creator.okButton=_1;_1.locatorParent=this.creator;break;case isc.Dialog.APPLY:this.creator.applyButton=_1;_1.locatorParent=this.creator;break;case isc.Dialog.YES:this.creator.yesButton=_1;_1.locatorParent=this.creator;break;case isc.Dialog.NO:this.creator.noButton=_1;_1.locatorParent=this.creator;break;case isc.Dialog.CANCEL:this.creator.cancelButton=_1;_1.locatorParent=this.creator;break;case isc.Dialog.DONE:this.creator.doneButton=_1;_1.locatorParent=this.creator;break}
+return _1}});isc.Dialog.Prompt={ID:"isc_globalPrompt",_generated:true,width:400,height:90,autoDraw:false,autoSize:true,isModal:true,showHeader:false,showFooter:false,showToolbar:false,dismissOnEscape:false,bodyStyle:"promptBody",bodyDefaults:isc.addProperties({},isc.Dialog.getInstanceProperty("bodyDefaults"),{height:"100%"}),message:"Loading... ${loadingImage}",messageStackDefaults:isc.addProperties({},isc.Dialog.getInstanceProperty("messageStackDefaults"),{height:"100%",width:"100%",layoutAlign:"center"}),messageLabelDefaults:isc.addProperties({},isc.Dialog.getInstanceProperty("messageLabelDefaults"),{width:"100%",align:isc.Canvas.CENTER,valign:isc.Canvas.CENTER}),layoutMargin:0,showMessage:function(_1,_2){this.setProperties(_2);if(_1==null)_1=" "
+this.message=_1.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)});if(!this.$7f)this.createChildren();this.messageLabel.setContents(this.message==null?" ":this.message);this.show()},clearMessage:function(){if(this.pendingFade){isc.Timer.clearTimeout(this.pendingFade);delete this.pendingFade}
+if(this.isAnimating(this.$zb)){this.finishAnimation(this.$zb)}
+this.clear();if(this.$89e){this.fireCallback(this.$89e);delete this.$89e}},fadeDuration:2000,fadeMessage:function(){delete this.pendingFade;this.animateHide("fade",{target:this,methodName:"clearMessage"})},destroy:function(){isc.Dialog.Prompt=this.$77;return this.Super("destroy",arguments)}};isc.addGlobal("showPrompt",function(_1,_2){var _3=isc.Dialog.Prompt;if(!isc.isA.Dialog(_3)){var _4=_3;_3=isc.Dialog.Prompt=isc.Dialog.create(_3);_3.$77=_4}
+isc.Dialog.Prompt.showMessage(_1,_2)});isc.addGlobal("clearPrompt",function(){if(!isc.isA.Dialog(isc.Dialog.Prompt))return;isc.Dialog.Prompt.clearMessage()});isc.addGlobal("showFadingPrompt",function(_1,_2,_3,_4){if(isc.isA.Canvas(isc.Dialog.Prompt)&&isc.Dialog.Prompt.isDrawn()){isc.clearPrompt()}
+isc.showPrompt(_1,_4);var _5=isc.Dialog.Prompt;if(_2==null)_2=_5.fadeDuration;_5.$89e=_3;_5.pendingFade=_5.delayCall("fadeMessage",[],_2)});isc.Dialog.Warn={ID:"isc_globalWarn",_generated:true,width:360,height:60,isModal:true,canDragReposition:true,keepInParentRect:true,autoDraw:false,autoSize:true,autoCenter:true,buttons:[isc.Dialog.OK],message:"Your message here!",showMessage:function(_1,_2){if(_1==null)_1=" ";this.message=_1;if(!this.icon&&_2.icon)this.icon=_2.icon;this.setProperties(_2);if(_2.callback==null)delete this.callback;if(!this.$7f)this.createChildren();this.messageLabel.setContents(this.message==null?" ":this.message);if(this.icon){if(this.messageIcon){this.messageIcon.setSrc(this.getImgURL(this.icon));this.messageIcon.show()}}else this.messageIcon.hide();this.toolbar.layoutChildren();if(this.messageLabel.isDirty())this.messageLabel.redraw();if(this.isDrawn()){this.messageStack.layoutChildren();this.body.layoutChildren();this.layoutChildren()}
+this.show();if(this.toolbar){var _3=this.toolbar.getMember(0);_3.focus()}}};isc.addGlobal("showMessage",function(_1,_2,_3,_4){if((isc.isA.String(_4)||isc.isA.Function(_4))||(_4==null&&isc.isAn.Object(_3)&&_3.methodName==null&&_3.action==null&&_3.method==null))
+{var _5=_4;_4=_3;_3=_5}
+if(!isc.isA.Dialog(isc.Dialog.Warn)||(isc.isA.Function(isc.Dialog.Warn.initialized)&&!isc.Dialog.Warn.initialized()))
+{isc.Dialog.Warn=isc.Dialog.create(isc.Dialog.Warn)}
+if(!_4)_4={};if(_4.toolbarButtons!=null){_4.buttons=_4.toolbarButtons;delete _4.toolbarButtons}
+if(!_4.buttons){if(_2=="confirm"){_4.buttons=[isc.Dialog.OK,isc.Dialog.CANCEL]}else if(_2=="ask"){_4.buttons=[isc.Dialog.YES,isc.Dialog.NO]}else{_4.buttons=[isc.Dialog.OK]}}
+if(!_4.title){if(_2=="confirm")_4.title=isc.Dialog.CONFIRM_TITLE;else if(_2=="ask")_4.title=isc.Dialog.ASK_TITLE;else if(_2=="warn")_4.title=isc.Dialog.WARN_TITLE;else _4.title=isc.Dialog.SAY_TITLE}
+isc.$78(_4);if(!_4.icon)_4.icon=isc.Dialog.getInstanceProperty(_2+"Icon");if(_3)_4.callback=_3;isc.Dialog.Warn.showMessage(_1,_4)});isc.addGlobal("getLastDialog",function(){return isc.Dialog.Warn});isc.addGlobal("dismissLastDialog",function(){if(isc.Dialog.Warn)isc.Dialog.Warn.hide()});isc.$78=function(_1){var _2=this.$79=this.$79||["okClick","yesClick","noClick","cancelClick","closeClick","applyClick"];for(var i=0;i<_2.length;i++){var _4=_2[i];if(!_1[_4]){_1[_4]=isc.Dialog.getInstanceProperty(_4)}}}
+isc.addGlobal("warn",function(_1,_2,_3){isc.showMessage(_1,"warn",_2,_3)});isc.addGlobal("say",function(_1,_2,_3){isc.showMessage(_1,"say",_2,_3)});isc.addGlobal("ask",function(_1,_2,_3){isc.showMessage(_1,"ask",_2,_3)});isc.confirm=function(_1,_2,_3){isc.showMessage(_1,"confirm",_2,_3)}
+isc.askForValue=function(_1,_2,_3){_3=_3||isc.emptyObject;var _4=isc.Dialog.Ask;if(!_4){var _5=isc.DynamicForm.create({numCols:1,padding:3,items:[{name:"message",type:"blurb"},{name:"value",showTitle:false,width:"*"}],saveOnEnter:true,submit:function(){this.askDialog.okClick()}});_4=isc.Dialog.Ask=isc.Dialog.create({items:[_5],askForm:_5,canDragReposition:true,isModal:true,bodyProperties:{overflow:"visible"},overflow:"visible"});_5.askDialog=_4;_4.$8a=function(){this.clear();this.returnValue(this.askForm.getValue("value"))}}
+var _6=_3.left!=null||_3.top!=null;if(_3.toolbarButtons!=null){_3.buttons=_3.toolbarButtons;delete _3.toolbarButtons}
+_3=isc.addProperties({callback:_2,title:_3.title||isc.Dialog.ASK_FOR_VALUE_TITLE,autoCenter:!_6,left:(_6?_3.left||"10%":null),top:(_6?_3.top||"20%":null),width:_3.width||"80%",height:_3.height||20,buttons:_3.buttons||[isc.Dialog.OK,isc.Dialog.CANCEL],okClick:_3.okClick||_4.$8a},_3);isc.$78(_3);_4.setProperties(_3);_4.askForm.setValues({message:_1||"Please enter a value:",value:_3.defaultValue||""});_4.show();_4.askForm.focusInItem("value")}
+isc.ClassFactory.defineClass("LoginDialog","Window");isc.LoginDialog.registerStringMethods({register:"values, form",lostPassword:"values, form"});isc.A=isc.LoginDialog;isc.A.firstTimeInit=true;isc.A=isc.LoginDialog.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dismissable=false;isc.A.allowBlankPassword=false;isc.A.showLostPasswordLink=false;isc.A.showRegistrationLink=false;isc.A.errorStyle="formCellError";isc.A.lostPasswordItemTitle="Lost Password?";isc.A.registrationItemTitle="Register";isc.A.autoCenter=true;isc.A.autoSize=true;isc.A.isModal=true;isc.A.showMinimizeButton=false;isc.A.items=["autoChild:loginForm"];isc.A.loginFormConstructor="DynamicForm";isc.A.loginFormDefaults={numCols:2,padding:4,autoDraw:false,saveOnEnter:true,submit:function(){var _1=this,_2=[{username:this.getValue("usernameItem"),password:this.getValue("passwordItem")}];_2[1]=function(_3,_4){if(_3){_1.complete()}else{if(_4!=null)
+_1.setValue("loginFailureItem",_4)
+_1.showItem("loginFailureItem");_1.focusInItem("passwordItem")}};this.fireCallback(this.loginDialog.loginFunc,"credentials,dialogCallback",_2)},complete:function(_1){this.loginDialog.hide();this.setValue("loginFailureItem",this.loginDialog.errorMessage);this.setValue("usernameItem","");this.setValue("passwordItem","");this.hideItem("loginFailureItem");if(_1){this.fireCallback(this.loginFunc,"credentials,dialogCallback")}else{var _2=isc.Cookie.get("loginRedirect");if(_2)window.location.replace(_2)}}};isc.A.formDSDefaults={clientOnly:true,useAllDataSourceFields:true};isc.A.formDefaultFields=[{name:"loginFailureItem",type:"blurb",colSpan:2,visible:false},{name:"usernameItem",required:true,browserSpellCheck:false,browserAutoCorrect:false,browserAutoCapitalize:false,keyPress:function(_1,_2,_3){if(_3=="Enter"){_2.focusInItem("passwordItem");return false}}},{name:"passwordItem",type:"password",required:true},{name:"loginButton",type:"button",type:"submit"},{name:"lostPasswordItem",type:"link",target:"javascript",canEdit:false,endRow:true,numCols:2,colSpan:2,showTitle:false,click:"form.loginDialog.lostPassword(form.getValues(), form)"},{name:"registrationItem",type:"link",target:"javascript",canEdit:false,endRow:true,numCols:2,colSpan:2,showTitle:false,click:"form.loginDialog.register(form.getValues(), form)"}];isc.B.push(isc.A.getDynamicDefaults=function isc_LoginDialog_getDynamicDefaults(_1){switch(_1){case"loginForm":var _2={loginDialog:this,values:{usernameItem:this.username||"",passwordItem:this.password||"",loginFailureItem:this.errorMessage},fields:this.formFields};var _3=isc.clone(this.formDefaultFields);for(var j=0;j<_3.length;j++){var _5=_3[j],_6=_5.name;isc.addProperties(_5,this[_6+"Defaults"],this[_6+"Properties"]);if(null!=this[_6+"Title"]){_5.title=this[_6+"Title"];if(_5.type=='link'&&!_5.showTitle)
+_5.linkTitle=this[_6+"Title"]}
+var _7=this["show"+_6.substr(0,1).toUpperCase()+_6.substr(1)];if(null!=_7)_5.visible=_7;switch(_6){case"registrationItem":_5.visible=this.showRegistrationLink;break;case"lostPasswordItem":_5.visible=this.showLostPasswordLink;break;case"loginFailureItem":_5.cellStyle=this.errorStyle;break;case"passwordItem":_5.required=!this.allowBlankPassword;break}
+_3[j]=_5}
+_2.dataSource=isc.DataSource.create(this.formDSDefaults,{fields:_3});return _2}
+return null}
+,isc.A.cancelClick=function isc_LoginDialog_cancelClick(){this.loginForm.complete(true)}
+,isc.A.init=function isc_LoginDialog_init(){if(isc.LoginDialog.firstTimeInit){isc.LoginDialog.firstTimeInit=false;isc.LoginDialog.addProperties({title:isc.Dialog.LOGIN_TITLE,usernameItemTitle:isc.Dialog.USERNAME_TITLE,passwordItemTitle:isc.Dialog.PASSWORD_TITLE,loginButtonTitle:isc.Dialog.LOGIN_BUTTON_TITLE,errorMessage:isc.Dialog.LOGIN_ERROR_MESSAGE})}
+this.dismissOnEscape=this.showCloseButton=this.dismissable;this.Super("init",arguments);this.loginForm.focusInItem("usernameItem");if(this.username)this.loginForm.setValue("usernameItem",this.username);if(this.password)this.loginForm.setValue("passwordItem",this.password)}
+);isc.B._maxIndex=isc.C+3;isc.showLoginDialog=function(_1,_2){return isc.LoginDialog.create(isc.addProperties({},_2,{autoDraw:true,loginFunc:_1}))}
+isc.defineClass("MultiSortPanel","Layout");isc.A=isc.MultiSortPanel.getPrototype();isc.A.vertical=true;isc.A.overflow="visible";isc.A.addLevelButtonTitle="Add Level";isc.A.deleteLevelButtonTitle="Delete Level";isc.A.copyLevelButtonTitle="Copy Level";isc.A.invalidListPrompt="Columns may only be used once: '\${title}' is used multiple times.";isc.A.propertyFieldTitle="Column";isc.A.directionFieldTitle="Order";isc.A.ascendingTitle="Ascending";isc.A.descendingTitle="Descending";isc.A.firstSortLevelTitle="Sort by";isc.A.otherSortLevelTitle="Then by";isc.A.topLayoutDefaults={_constructor:"HLayout",overflow:"visible",height:22,align:"left",membersMargin:5,extraSpace:5};isc.A.addLevelButtonDefaults={_constructor:"IButton",icon:"[SKINIMG]actions/add.png",autoFit:true,height:22,showDisabled:false,autoParent:"topLayout",click:"this.creator.addLevel()"};isc.A.deleteLevelButtonDefaults={_constructor:"IButton",icon:"[SKINIMG]actions/remove.png",autoFit:true,height:22,showDisabled:false,autoParent:"topLayout",click:"this.creator.deleteSelectedLevel()"};isc.A.copyLevelButtonDefaults={_constructor:"IButton",icon:"[SKINIMG]RichTextEditor/copy.png",autoFit:true,height:22,showDisabled:false,autoParent:"topLayout",click:"this.creator.copySelectedLevel()"};isc.A.levelUpButtonTitle="Move Level Up";isc.A.levelUpButtonDefaults={_constructor:"ImgButton",src:"[SKINIMG]common/arrow_up.gif",height:22,width:20,imageType:"center",showDisabled:false,showRollOver:false,showDown:false,showFocused:false,autoParent:"topLayout",click:"this.creator.moveSelectedLevelUp()"};isc.A.levelDownButtonTitle="Move Level Down";isc.A.levelDownButtonDefaults={_constructor:"ImgButton",src:"[SKINIMG]common/arrow_down.gif",height:22,width:20,imageType:"center",showDisabled:false,showRollOver:false,showDown:false,showFocused:false,autoParent:"topLayout",click:"this.creator.moveSelectedLevelDown()"};isc.A.optionsGridDefaults={_constructor:"ListGrid",width:"100%",height:"*",canSort:false,canReorderFields:false,canResizeFields:false,canEdit:true,canEditNew:true,selectionType:"single",selectionProperty:"$73s",fields:[{name:"sortSequence",title:" ",showTitle:false,canEdit:false,width:80,canHide:false,showHeaderContextMenuButton:false,formatCellValue:function(_1,_2,_3,_4,_5){return _3==0?_5.creator.firstSortLevelTitle:_5.creator.otherSortLevelTitle}},{name:"property",title:" ",type:"select",defaultToFirstOption:true,showHeaderContextMenuButton:false,changed:"item.grid.creator.fireChangeEvent()"},{name:"direction",title:" ",type:"select",showHeaderContextMenuButton:false,defaultToFirstOption:true,changed:"item.grid.creator.fireChangeEvent()"}],recordClick:function(_1,_2,_3){this.creator.setButtonStates()},bodyKeyPress:function(_1){if(_1.keyName=="Delete"&&this.anySelected())this.removeSelectedData();else this.Super("bodyKeyPress",arguments)},extraSpace:5};isc.A.propertyFieldNum=1;isc.A.directionFieldNum=2;isc.A.topAutoChildren=["topLayout","addLevelButton","deleteLevelButton","copyLevelButton"];isc.A=isc.MultiSortPanel.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getNumLevels=function isc_MultiSortPanel_getNumLevels(){return this.optionsGrid.data.length}
+,isc.A.getSortLevel=function isc_MultiSortPanel_getSortLevel(_1){return this.getSortSpecifier(this.data.get(_1))}
+,isc.A.getSort=function isc_MultiSortPanel_getSort(){var _1=this.optionsGrid,_2=_1.data.duplicate(),_3=_1.getEditRow(),_4=isc.isA.Number(_3)?_1.getEditValues(_3):null;if(_4)_2[_3]=isc.addProperties(_2[_3],_4);return this.getSortSpecifiers(_2)}
+,isc.A.setSort=function isc_MultiSortPanel_setSort(_1){this.optionsGrid.setData(_1)}
+,isc.A.validate=function isc_MultiSortPanel_validate(){var _1=this.optionsGrid,_2=_1.data,_3=[];for(var i=0;i<_2.length;i++){var _5=_2.get(i);if(_3.contains(_5.property)){var _6=this,_7=this.optionsGrid.getField("property").valueMap[_5.property],_8=this.invalidListPrompt.evalDynamicString(this,{title:_7});isc.warn(_8,function(){_6.recordFailedValidation(_5,i)});return false}
+_3.add(_5.property)}
+return true}
+,isc.A.recordFailedValidation=function isc_MultiSortPanel_recordFailedValidation(_1){var _2=this.optionsGrid,_3=(isc.isA.Number(_1)?_1:_2.getRecordIndex(_1)),_1=(!isc.isA.Number(_1)?_1:_2.data.get(_1));_2.selectSingleRecord(_1);_2.startEditing(_3,1)}
+,isc.A.getSortSpecifier=function isc_MultiSortPanel_getSortSpecifier(_1){if(isc.isA.Number(_1))_1=this.optionsGrid.data.get(_1);return this.optionsGrid.removeSelectionMarkers(_1)}
+,isc.A.getSortSpecifiers=function isc_MultiSortPanel_getSortSpecifiers(_1){return this.optionsGrid.removeSelectionMarkers(_1)}
+,isc.A.setSortSpecifiers=function isc_MultiSortPanel_setSortSpecifiers(_1){this.optionsGrid.setData(_1)}
+,isc.A.initWidget=function isc_MultiSortPanel_initWidget(){this.Super("initWidget",arguments);this.$74x=this.maxLevels;this.addAutoChildren(this.topAutoChildren);this.addAutoChild("levelUpButton",{prompt:this.levelUpButtonTitle});this.addAutoChild("levelDownButton",{prompt:this.levelDownButtonTitle});this.addAutoChild("optionsGrid");this.setSortFields();this.setSortDirections();this.setButtonTitles();this.addMember(this.topLayout);this.addMember(this.optionsGrid);this.setButtonStates();if(this.initialSort)this.setSortSpecifiers(this.initialSort);else this.addLevel()}
+,isc.A.setButtonTitles=function isc_MultiSortPanel_setButtonTitles(_1){if(this.addLevelButton)this.addLevelButton.setTitle(this.addLevelButtonTitle);if(this.deleteLevelButton)this.deleteLevelButton.setTitle(this.deleteLevelButtonTitle);if(this.copyLevelButton)this.copyLevelButton.setTitle(this.copyLevelButtonTitle)}
+,isc.A.setButtonStates=function isc_MultiSortPanel_setButtonStates(){var _1=this.getNumLevels(),_2=this.maxLevels,_3=this.optionsGrid,_4=_3.anySelected(),_5=_3.getRecordIndex(_3.getSelectedRecord());if(this.addLevelButton)this.addLevelButton.setDisabled(_1>=_2);if(this.deleteLevelButton)this.deleteLevelButton.setDisabled(!_4);if(this.copyLevelButton)this.copyLevelButton.setDisabled(!_4||_1>=_2);if(this.levelUpButton)this.levelUpButton.setDisabled(!_4||_5==0);if(this.levelDownButton)this.levelDownButton.setDisabled(!_4||_5==_1-1)}
+,isc.A.setFields=function isc_MultiSortPanel_setFields(_1){if(isc.DataSource&&isc.isA.DataSource(_1))_1=isc.getValues(_1.getFields());this.fields=_1;this.setSortFields();this.optionsGrid.refreshFields();this.setButtonStates()}
+,isc.A.setSortFields=function isc_MultiSortPanel_setSortFields(){var _1=[];this.optionsGrid.getField("property").title=this.propertyFieldTitle;if(!this.fields)return;for(var i=0;i<this.fields.length;i++){var _3=this.fields[i];if(_3.canSort!=false)_1.add(_3)}
+this.fields=_1;var _4=this.optionsGrid,_5=this.fields?this.fields.getValueMap(_4.fieldIdProperty,"title"):{none:"No fields"},_6=isc.getKeys(_5).length;for(var _7 in _5){if(isc.DataSource&&(!_5[_7]||isc.isAn.emptyString(_5[_7])))
+_5[_7]=isc.DataSource.getAutoTitle(_7)}
+this.optionsGrid.setValueMap("property",_5);if(!this.$74x||this.maxLevels>_6)this.maxLevels=_6}
+,isc.A.setSortDirections=function isc_MultiSortPanel_setSortDirections(){this.optionsGrid.getField("direction").title=this.directionFieldTitle;this.optionsGrid.getField("direction").valueMap={"ascending":this.ascendingTitle,"descending":this.descendingTitle}}
+,isc.A.addLevel=function isc_MultiSortPanel_addLevel(){var _1=this.optionsGrid,_2=_1.getRecordIndex(_1.getSelectedRecord()),_3=_1.getField("property"),_4=_1.getField("direction"),_5=_2>=0?_2+1:_1.data.length,_6={property:isc.firstKey(_3.valueMap),direction:isc.firstKey(_4.valueMap)};_1.data.addAt(_6,_5);this.editRecord(_5);this.setButtonStates();this.fireChangeEvent()}
+,isc.A.deleteSelectedLevel=function isc_MultiSortPanel_deleteSelectedLevel(){var _1=this.optionsGrid,_2=_1.getRecordIndex(_1.getSelectedRecord());if(_2>=0){_1.data.removeAt(_2);this.setButtonStates();this.fireChangeEvent()}}
+,isc.A.copySelectedLevel=function isc_MultiSortPanel_copySelectedLevel(){var _1=this.optionsGrid,_2=_1.getRecordIndex(_1.getSelectedRecord()),_3=isc.shallowClone(_1.getRecord(_2));if(_2>=0){_1.data.addAt(_3,_2+1);this.editRecord(_2+1);this.setButtonStates();this.fireChangeEvent()}}
+,isc.A.editRecord=function isc_MultiSortPanel_editRecord(_1){this.optionsGrid.selectSingleRecord(_1);this.optionsGrid.startEditing(_1,this.propertyFieldNum)}
+,isc.A.moveSelectedLevelUp=function isc_MultiSortPanel_moveSelectedLevelUp(){var _1=this.optionsGrid,_2=_1.getRecordIndex(_1.getSelectedRecord());if(_2>0){_1.data.slide(_2,_2-1);this.setButtonStates();this.fireChangeEvent();this.optionsGrid.selectSingleRecord(_2-1)}}
+,isc.A.moveSelectedLevelDown=function isc_MultiSortPanel_moveSelectedLevelDown(){var _1=this.optionsGrid,_2=_1.getRecordIndex(_1.getSelectedRecord());if(_2>=0&&_2<_1.data.length-1){_1.data.slide(_2,_2+1);this.setButtonStates();this.fireChangeEvent();this.optionsGrid.selectSingleRecord(_2+1)}}
+,isc.A.fireChangeEvent=function isc_MultiSortPanel_fireChangeEvent(){this.sortChanged(isc.shallowClone(this.getSort()))}
+,isc.A.sortChanged=function isc_MultiSortPanel_sortChanged(_1){}
+);isc.B._maxIndex=isc.C+23;isc.defineClass("MultiSortDialog","Window");isc.A=isc.MultiSortDialog;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.askForSort=function isc_c_MultiSortDialog_askForSort(_1,_2,_3){var _4=isc.isAn.Array(_1)?_1:isc.DataSource&&isc.isA.DataSource(_1)?isc.getValues(_1.getFields()):isc.isA.DataBoundComponent(_1)?_1.getFields():null;if(!_4)return;isc.MultiSortDialog.create({autoDraw:true,fields:_4,initialSort:_2,callback:_3})}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.MultiSortDialog.getPrototype();isc.A.isModal=true;isc.A.width=500;isc.A.height=250;isc.A.vertical=true;isc.A.autoCenter=true;isc.A.showMinimizeButton=false;isc.A.mainLayoutDefaults={_constructor:"VLayout",width:"100%",height:"100%",layoutMargin:5};isc.A.multiSortPanelDefaults={_constructor:"MultiSortPanel",width:"100%",height:"*",autoParent:"mainLayout"};isc.A.title="Sort";isc.A.applyButtonTitle="Apply";isc.A.cancelButtonTitle="Cancel";isc.A.bottomLayoutDefaults={_constructor:"HLayout",width:"100%",height:22,align:"right",membersMargin:5,autoParent:"mainLayout"};isc.A.applyButtonDefaults={_constructor:"IButton",autoFit:true,height:22,autoParent:"bottomLayout",click:"this.creator.apply()"};isc.A.cancelButtonDefaults={_constructor:"IButton",autoFit:true,height:22,autoParent:"bottomLayout",click:"this.creator.cancel()"};isc.A.bottomAutoChildren=["bottomLayout","applyButton","cancelButton"];isc.A=isc.MultiSortDialog.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$783=["fields","initialSort","maxLevels","invalidListPrompt","addLevelButtonTitle","addLevelButtonDefaults","addLevelButtonProperties","deleteLevelButtonTitle","deleteLevelButtonDefaults","deleteLevelButtonProperties","levelUpButtonTitle","levelDownButtonTitle","copyLevelButtonTitle","copyLevelButtonDefaults","copyLevelButtonProperties","optionsGridDefaults","optionsGridProperties","firstSortLevelTitle","propertyFieldTitle","directionFieldTitle","descendingTitle","ascendingTitle","otherSortLevelTitle"];isc.B.push(isc.A.initWidget=function isc_MultiSortDialog_initWidget(){this.Super("initWidget",arguments);this.addAutoChild("mainLayout");this.addAutoChild("multiSortPanel",this.getPassthroughProperties());this.addAutoChildren(this.bottomAutoChildren);this.addItem(this.mainLayout);this.optionsGrid=this.multiSortPanel.optionsGrid;this.setButtonStates()}
+,isc.A.getPassthroughProperties=function isc_MultiSortDialog_getPassthroughProperties(){var _1=this.$783,_2={};for(var i=0;i<_1.length;i++){var _4=_1[i];if(this[_4]!=null)_2[_4]=this[_4]}
+return _2}
+,isc.A.setButtonStates=function isc_MultiSortDialog_setButtonStates(){this.multiSortPanel.setButtonStates();this.applyButton.setTitle(this.applyButtonTitle);this.cancelButton.setTitle(this.cancelButtonTitle)}
+,isc.A.getNumLevels=function isc_MultiSortDialog_getNumLevels(){return this.multiSortPanel.getNumLevels()}
+,isc.A.getSortLevel=function isc_MultiSortDialog_getSortLevel(_1){return this.multiSortPanel.getSortLevel(_1)}
+,isc.A.getSort=function isc_MultiSortDialog_getSort(){return this.multiSortPanel.getSort()}
+,isc.A.validate=function isc_MultiSortDialog_validate(){return this.multiSortPanel.validate()}
+,isc.A.closeClick=function isc_MultiSortDialog_closeClick(){this.cancel();return false}
+,isc.A.cancel=function isc_MultiSortDialog_cancel(){if(this.callback)
+this.fireCallback(this.callback,["sortLevels"],[null]);this.hide();this.markForDestroy()}
+,isc.A.apply=function isc_MultiSortDialog_apply(){if(this.optionsGrid.getEditRow()!=null)this.optionsGrid.endEditing();if(!this.validate())return;if(this.callback){var _1=isc.shallowClone(this.getSort());this.fireCallback(this.callback,["sortLevels"],[_1])}
+this.hide();this.markForDestroy()}
+);isc.B._maxIndex=isc.C+10;isc.ClassFactory.defineClass("TabSet","Canvas");isc.A=isc.TabSet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.overflow="hidden";isc.A.tabProperties={};isc.A.simpleTabBaseStyle="tabButton";isc.A.tabBarPosition=isc.Canvas.TOP;isc.A.tabBarThickness=21;isc.A.selectedTab=0;isc.A.closeTabIcon="[SKIN]/TabSet/close.png";isc.A.closeTabIconSize=16;isc.A.moreTabCount=5;isc.A.moreTabTitle="More";isc.A.moreTabImage="[SKINIMG]/iOS/more.png";isc.A.moreTabDefaults={ariaRole:"tab"};isc.A.moreTabProperties={};isc.A.moreTabPaneProperties={};isc.A.moreTabPaneDefaults={_constructor:"VLayout",width:"100%",height:"100%",setData:function(_1){this.creator.moreTabPaneTable.setData(_1)}};isc.A.moreTabPaneNavBarDefaults={_constructor:"NavigationBar",controls:["titleLabel"],autoParent:"moreTabPane"};isc.A.moreTabPaneTableDefaults={_constructor:"TableView",width:"100%",height:"100%",recordNavigationClick:function(_1){this.creator.$8c(_1.button)},autoParent:"moreTabPane"};isc.A.tabBarControls=["tabScroller","tabPicker"];isc.A.showTabScroller=true;isc.A.showTabPicker=true;isc.A.tabBarControlLayoutConstructor="Layout";isc.A.tabBarControlLayoutDefaults={};isc.A.animateTabScrolling=true;isc.A.scrollerButtonSize=16;isc.A.pickerButtonSize=16;isc.A.skinImgDir="images/TabSet/";isc.A.symmetricScroller=true;isc.A.scrollerSrc="[SKIN]/scroll.gif";isc.A.scrollerHSrc="[SKIN]hscroll.gif";isc.A.scrollerVSrc="[SKIN]vscroll.gif";isc.A.symmetricPickerButton=true;isc.A.pickerButtonSrc="[SKIN]/picker.gif";isc.A.pickerButtonHSrc="[SKIN]hpicker.gif";isc.A.pickerButtonVSrc="[SKIN]vpicker.gif";isc.A.paneContainerConstructor="PaneContainer";isc.A.paneContainerClassName="tabSetContainer";isc.A.paneContainerOverflow=isc.Canvas.AUTO;isc.A.symmetricEdges=true;isc.A.titleEditorDefaults={name:"title",type:"text",showTitle:false};isc.B.push(isc.A.setPaneContainerOverflow=function isc_TabSet_setPaneContainerOverflow(_1){this.paneContainerOverflow=_1;if(this.paneContainer)this.paneContainer.setOverflow(_1)}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("SimpleTabButton","Button");isc.A=isc.SimpleTabButton.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setPane=function isc_SimpleTabButton_setPane(_1){this.parentElement.parentElement.updateTab(this,_1)}
+,isc.A.selectTab=function isc_SimpleTabButton_selectTab(){this.parentElement.parentElement.selectTab(this)}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.TabSet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.simpleTabButtonConstructor=isc.SimpleTabButton;isc.A.tabBarConstructor=isc.TabBar;isc.A.disablePaneWithTab=true;isc.A.$537={top:"topEdgeSizes",bottom:"bottomEdgeSizes",left:"leftEdgeSizes",right:"rightEdgeSizes"};isc.A.$538={top:"topEdgeOffsets",bottom:"bottomEdgeOffsets",left:"leftEdgeOffsets",right:"rightEdgeOffsets"};isc.A.namedLocatorChildren=["tabBarControlLayout"];isc.B.push(isc.A.initWidget=function isc_TabSet_initWidget(){this.showEdges=false;this.Super("initWidget",arguments);if(this.tabs==null)this.tabs=[];if(this.tabBarDefaults==null)this.tabBarDefaults={};this.tabProperties=this.tabProperties||this.tabInstanceDefaults||{};var _1=this.tabBarPosition;if(this.tabBarAlign==null){this.tabBarAlign=((_1=="left"||_1=="right")?"top":"left")}
+if(this.useSimpleTabs){this.tabProperties=isc.addProperties({},this.tabProperties);this.tabBarDefaults.buttonConstructor=this.simpleTabButtonConstructor;this.tabProperties.baseStyle=this.simpleTabBaseStyle+_1.substring(0,1).toUpperCase()+_1.substring(1);var _2=(this.tabBarPosition==isc.Canvas.LEFT||this.tabBarPosition==isc.Canvas.RIGHT);if(!_2)this.tabProperties.autoFit=true;if(_2)this.tabProperties.autoFitDirection=isc.Canvas.VERTICAL;else this.tabProperties.autoFitDirection=isc.Canvas.HORIZONTAL;this.tabProperties.ariaRole="tab"}
+this.makeTabBar();this.makePaneContainer();this.createPanes()}
+,isc.A.makeTabBar=function isc_TabSet_makeTabBar(){if(this.tabs==null)return;var _1=(this.tabBarPosition==isc.Canvas.LEFT||this.tabBarPosition==isc.Canvas.RIGHT),_2=this.tabBarAlign;var _3=this.tabs.duplicate(),_4;for(var i=0;i<_3.length;i++){for(var j in this.tabProperties){if(_3[i][j]===_4)_3[i][j]=this.tabProperties[j]}}
+var _7=isc.addProperties({selectTabOnContextClick:this.selectTabOnContextClick,ID:this.getID()+"_tabBar",width:(_1?this.tabBarThickness:"100%"),height:(_1?"100%":this.tabBarThickness),accessKey:this.accessKey,tabIndex:this.tabIndex,tabs:_3,align:this.tabBarAlign,vertical:_1?true:false,selectedTab:this.selectedTab,showMoreTab:this.showMoreTab,moreTabCount:this.moreTabCount,moreTab:this.createMoreTab(),allowButtonReselect:this.showMoreTab?true:false,buttonSelected:function(_11){this.Super("buttonSelected",arguments);if(this.parentElement!=null){this.parentElement.$8c(_11)}},childResized:function(){this.Super("childResized",arguments);if(this.parentElement!=null){this.parentElement.$54m()}},showContextMenu:function(){var _8=isc.EH.getTarget();if(this.getButtons().contains(_8)){var _9=this.parentElement,_10=_9.getTabObject(_8);if(_9.showTabContextMenu(_9,_10)==false)return false}
+return this.Super("showContextMenu",arguments)},tabBarPosition:this.tabBarPosition,tabBarAlign:this.tabBarAlign,autoDraw:false},this.tabBarDefaults,this.tabBarProperties);_7.creator=this;this.tabBar=this._tabBar=this.tabBarConstructor.create(_7);this.addChild(this._tabBar)}
+,isc.A.showTabContextMenu=function isc_TabSet_showTabContextMenu(){}
+,isc.A.createMoreTab=function isc_TabSet_createMoreTab(){if(!this.showMoreTab)return null;this.moreTabPane=this.createAutoChild("moreTabPane",this.moreTabPaneProperties);this.addAutoChild("moreTabPaneNavBar",{title:this.moreTabTitle});this.moreTabPaneTable=this.addAutoChild("moreTabPaneTable");var _1=isc.addProperties({title:this.moreTabTitle,icon:this.moreTabImage,pane:this.moreTabPane,moreTab:true},this.moreTabDefaults,this.moreTabProperties);var _2;for(var j in this.tabProperties){if(_1[j]===_2)_1[j]=this.tabProperties[j]}
+this.moreTab=_1;return _1}
+,isc.A.rebuildMorePane=function isc_TabSet_rebuildMorePane(){this.moreTabPane.setData(this.getMorePaneRecords())}
+,isc.A.getMorePaneRecords=function isc_TabSet_getMorePaneRecords(){var _1=this,_2=[];for(var i=0;i<this.tabs.length;i++){var _4=this.getTab(this.tabs[i]);if(_4.isVisible())continue;var _5=this.getTabObject(_4);var _6=(_5.icon!=null?isc.Page.getImgURL(_5.icon):null);_2[_2.length]={icon:_6,title:_5.title,pane:_5.pane,button:_4}}
+return _2}
+,isc.A.setTabIndex=function isc_TabSet_setTabIndex(_1){this.Super("setTabIndex",arguments)
+if(this._tabBar!=null)this._tabBar.setTabIndex(_1)}
+,isc.A.setAccessKey=function isc_TabSet_setAccessKey(_1){this.Super("setAccessKey",arguments);if(this._tabBar!=null)this._tabBar.setAccessKey(_1)}
+,isc.A.createPanes=function isc_TabSet_createPanes(){for(var i=0;i<this.tabs.length;i++){var _2=this.tabs[i],_3=_2.pane;if(_3==null)continue;_2.pane=this.createPane(_3,_2)}}
+,isc.A.createPane=function isc_TabSet_createPane(_1,_2){if(_1==null)return _1;if(!isc.isA.Canvas(_1))_1=this.createCanvas(_1);if(_1==null)return _1;_1.hide();if(this.disablePaneWithTab&&_2&&_2.disabled){_1.setDisabled(_2.disabled)}
+this.paneContainer.addMember(_1);_1.$86x=this.ID;return _1}
+,isc.A.makePaneContainer=function isc_TabSet_makePaneContainer(){var _1={ID:this.getID()+"_paneContainer",_generated:false,className:this.paneContainerClassName,layoutMargin:(this.paneMargin||0),overflow:this.paneContainerOverflow,$wn:function(){var _2=this.Super("$wn",arguments);_2.addMethods({$539:{top:"_top",left:"_left",bottom:"_bottom",right:"_right"},getEdgePrefix:function(_7){var _3=this.eventProxy,_4=_3?_3.creator:null;if(_4&&!_4.symmetricEdges){return this.$539[_4.tabBarPosition]}}});return _2}};if(this.showPaneContainerEdges!=null)_1.showEdges=this.showPaneContainerEdges;if(this.getPaneContainerEdges&&this.getPaneContainerEdges()!=null){_1.customEdges=this.getPaneContainerEdges()}
+if(!this.symmetricEdges){var _5=this[this.$537[this.tabBarPosition]];if(_5&&_5.defaultSize!=null)_1.edgeSize=_5.defaultSize;if(_5&&_5.bottom!=null)_1.edgeBottom=_5.bottom;if(_5&&_5.top!=null)_1.edgeTop=_5.top;if(_5&&_5.left!=null)_1.edgeLeft=_5.left;if(_5&&_5.right!=null)_1.edgeRight=_5.right;var _6=this[this.$538[this.tabBarPosition]];if(_6&&_6.defaultSize!=null)_1.edgeOffset=_6.defaultSize;if(_6&&_6.bottom!=null)_1.edgeOffsetBottom=_6.bottom;if(_6&&_6.top!=null)_1.edgeOffsetTop=_6.top;if(_6&&_6.left!=null)_1.edgeOffsetLeft=_6.left;if(_6&&_6.right!=null)_1.edgeOffsetRight=_6.right}
+this.addAutoChild("paneContainer",_1)}
+,isc.A.getPaneContainerEdges=function isc_TabSet_getPaneContainerEdges(){if(this.showPartialEdges){if(this.tabBarPosition=="bottom")return["T","L","R"];else if(this.tabBarPosition=="left")return["T","B","R"];else if(this.tabBarPosition=="right")return["T","B","L"];else return["B","L","R"]}
+return null}
+,isc.A.draw=function isc_TabSet_draw(_1,_2,_3,_4){if(this.tabs&&this.tabs.length>0){var _5=this.getSelectedTabNumber();if(!isc.isA.Number(_5)||_5<0)_5=this.selectedTab=0;this._tabBar.selectTab(_5)}
+this.invokeSuper(isc.TabSet,"draw",_1,_2,_3,_4);this.fixLayout()}
+,isc.A.setTabTitle=function isc_TabSet_setTabTitle(_1,_2){this.getTabObject(_1).title=_2;this.getTab(_1).setTitle(_2);this.resetTabPickerMenu()}
+,isc.A.setTabIcon=function isc_TabSet_setTabIcon(_1,_2){this.setTabProperties(_1,{icon:_2})}
+,isc.A.enableTab=function isc_TabSet_enableTab(_1){this.setTabDisabled(_1,false)}
+,isc.A.disableTab=function isc_TabSet_disableTab(_1){this.setTabDisabled(_1,true)}
+,isc.A.setTabProperties=function isc_TabSet_setTabProperties(_1,_2){if(!_2)return;if(_2.ID!=null){this.logWarn("setTabProperties(): Unable to modify ID for an existing tab - ignoring "+"this property");delete _2.ID}
+if(_2.pane!=null){this.updateTab(_1,_2.pane);delete _2.pane}
+if(_2.disabled!=null){this.setTabDisabled(_1,_2.disabled);delete _2.disabled}
+var _3=this.getTabObject(_1),_1=this.getTab(_1);if(!_3)return;isc.addProperties(_3,_2);if(_1){_1.setProperties(_2)}
+this.resetTabPickerMenu()}
+,isc.A.setTabDisabled=function isc_TabSet_setTabDisabled(_1,_2){var _3=this.getTabObject(_1);if(_3)_3.disabled=_2;var _1=this.getTab(_1);if(_1){_1.setDisabled(_2);var _4=_1.pane;if(_4&&this.disablePaneWithTab){if(isc.isA.Canvas(_4))_4.setDisabled(_2);else _4.disabled=_2}}
+this.resetTabPickerMenu()}
+,isc.A.addTab=function isc_TabSet_addTab(_1,_2){return this.addTabs(_1,_2)}
+,isc.A.addTabs=function isc_TabSet_addTabs(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];var _3=this.getTabObject(this.getSelectedTabNumber()),_4=(this.getSelectedTabNumber()==-1);if(_2==null||_2>this.tabs.length)_2=this.tabs.length;for(var i=0;i<_1.length;i++){_1[i].pane=this.createPane(_1[i].pane,_1[i]);var _6;for(var _7 in this.tabProperties){if(_1[i][_7]===_6){_1[i][_7]=this.tabProperties[_7]}}
+this.tabs.addAt(_1[i],(_2+i))}
+this._tabBar.addTabs(_1,_2);this.resetTabPickerMenu();this.delayCall("fixLayout");if(_4){this.selectTab(0)}else{this.selectedTab=this.getTabNumber(_3)}
+this.addTabsEditModeExtras(_1);return _2}
+,isc.A.setTabPane=function isc_TabSet_setTabPane(_1,_2){return this.updateTab(_1,_2)}
+,isc.A.removeTab=function isc_TabSet_removeTab(_1,_2){return this.removeTabs(_1,_2)}
+,isc.A.removeTabs=function isc_TabSet_removeTabs(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];_1=this.map("getTab",_1);var _3=false,_4=this.getSelectedTab(),_5=0;for(var i=0;i<_1.length;i++){var _7=_1[i],_8=this.getTabNumber(_7),_9=this.tabs[_8];if(_9==_4){_3=true;if(_8>0)_5=_8-1;else if(_8<this.tabs.length+1)_5=_8}else{if(_8<this.selectedTab){this.selectedTab-=1}}
+this.tabs.removeAt(_8);var _10=_9.pane;if(_10&&_10.parentElement==this.paneContainer){this.paneContainer.removeChild(_10);if(!_2&&this.destroyPanes!==false){_10.destroy()}}
+this._tabBar.removeTabs(_7)}
+if(_3&&this.tabs.length>0){if(_5>=this.tabs.length)_5=this.tabs.length-1;this.selectTab(_5)}
+this.resetTabPickerMenu();this.delayCall("fixLayout",0);this.removeTabsEditModeExtras()}
+,isc.A.canCloseTab=function isc_TabSet_canCloseTab(_1){_1=this.getTabObject(_1);if(_1&&_1.canClose!=null)return _1.canClose;return this.canCloseTabs}
+,isc.A.setCanCloseTab=function isc_TabSet_setCanCloseTab(_1,_2){_1=this.getTabObject(_1);var _3=this.getTab(_1);_1.canClose=_2;var _4=isc.addProperties({},_1,{canClose:_2});if(_3){_3.setProperties(this.getTabBar().getCloseIconProperties(_4))}}
+,isc.A.$52a=function isc_TabSet__tabIconClick(_1){var _2=this.canCloseTab(_1);if(_2){this.closeClick(_1);return false}else return this.tabIconClick(_1)}
+,isc.A.closeClick=function isc_TabSet_closeClick(_1){if(this.onCloseClick&&(this.onCloseClick(_1)==false)){return}
+this.removeTab(_1)}
+,isc.A.tabIconClick=function isc_TabSet_tabIconClick(_1){var _2=_1.icon;if(_2&&_2.click)return this.fireCallback(_2.click,'tab,tabSet',[_1,this])}
+,isc.A.getTabObject=function isc_TabSet_getTabObject(_1){_1=this.getTabNumber(_1);if(_1>=this.tabs.length){var _2=this.tabBar.getButton(_1);if(_2&&_2.moreTab)return this.moreTab}
+return this.tabs[_1]}
+,isc.A.getTab=function isc_TabSet_getTab(_1){if(isc.isAn.Canvas(_1))return _1;if(!this.tabs)return null;if(this.tabs.contains(_1))_1=this.tabs.indexOf(_1);_1=this.getTabBar().getButton(_1);return _1}
+,isc.A.getTabPane=function isc_TabSet_getTabPane(_1){return this.getTabObject(_1).pane}
+,isc.A.findTabObject=function isc_TabSet_findTabObject(_1,_2){return this.tabs.find(_1,_2)}
+,isc.A.getTabNumber=function isc_TabSet_getTabNumber(_1){if(isc.isA.Number(_1))return _1;if(!this.tabs)return null;var _2=this.tabs.indexOf(_1);if(_2!=-1)return _2;if(isc.isA.String(_1))return this.tabs.findIndex("ID",_1);return this.getTabBar().getButtonNumber(this.getTab(_1))}
+,isc.A.updateTab=function isc_TabSet_updateTab(_1,_2){if(isc.isAn.Object(_1)&&!isc.isA.Canvas(_1)&&this.tabs.indexOf(_1)==-1)
+{if(_2!=null)_1.pane=_2;return this.addTabs(_1)}
+var _3=this.getTabNumber(_1);if(_3==-1){this.logWarn("no such tab: "+this.echo(_1));return}
+var _4=this.getTabObject(_3),_5=_4?_4.pane:null;if(_4&&_4.pane==_2)return;if(_5!=null){_5.hide();_5.deparent()}
+var _6=this.getTab(_1);if(_2==null){if(_6!=null)_6.pane=null;return _4.pane=null}
+_2=_4.pane=this.createPane(_2,_4);if(_6!=null)_6.pane=_2;if(this.getSelectedTabNumber()==_3){if(!this.paneContainer.hasMember(_2))this.paneContainer.addMember(_2);_2.setVisibility(isc.Canvas.INHERIT)}}
+,isc.A.fixLayout=function isc_TabSet_fixLayout(){var _1=this._tabBar,_2=this.$l0||this.paneContainer;if(_1==null||_2==null)return;if(_2.getZIndex(true)>=_1.getZIndex(true))_2.moveBelow(_1);var _3=this.$du(this.tabBarOverlap,_1.borderThickness,_1.baseLineThickness);var _4;switch(this.tabBarPosition){case isc.Canvas.TOP:_4=false;_2.setRect(0,_1.getHeight()-_3,this.getWidth(),this.getHeight()-_1.getHeight()+_3);break;case isc.Canvas.BOTTOM:_4=false;_1.setTop(this.getHeight()-_1.getHeight());_2.setRect(0,0,this.getWidth(),this.getHeight()-_1.getHeight()+_3);break;case isc.Canvas.LEFT:_4=true;_2.setRect(_1.getWidth()-_3,0,this.getWidth()-_1.getWidth()+_3,this.getHeight());break;case isc.Canvas.RIGHT:_4=true;_1.setLeft(this.getWidth()-_1.getWidth());_2.setRect(0,0,this.getWidth()-_1.getWidth()+_3,this.getHeight());break}
+var _5=this.showControls();if(_5){if(_4)_1.setHeight(this.getViewportHeight()-this.tabBarControlLayout.getHeight());else _1.setWidth(this.getViewportWidth()-this.tabBarControlLayout.getWidth());this.tabBarControlLayout.bringToFront()}else{_1.resizeTo(_4?null:"100%",_4?"100%":null)}
+var _6=this.$8f();if(_4){if(_1.getScrollTop()>0&&_6<=_1.getViewportHeight())_1.scrollTo(null,0,"descrollTabs")}else{if(_1.getScrollLeft()>0&&_6<=_1.getViewportWidth())_1.scrollTo(0,null,"descrollTabs")}}
+,isc.A.shouldShowControl=function isc_TabSet_shouldShowControl(_1){if((_1=="tabScroller")||(_1=="tabPicker")){if(this.showMoreTab)return false;if(!this.showTabScroller&&_1=="tabScroller")return false;if(!this.showTabPicker&&_1=="tabPicker")return false;var _2=this.$8f();if(_2==0)return;var _3=0;for(var i=0;i<this.tabBarControls.length;i++){var _5=this.tabBarControls[i];if(_5=="tabScroller"||_5=="tabPicker")continue;if(this.shouldShowControl(_5)){if(!isc.isA.Canvas(_5))_5=this.getControl(_5);_3+=_6?_5.getVisibleHeight():_5.getVisibleWidth()}}
+var _6=(this._tabBar.orientation==isc.Layout.VERTICAL),_7=(_2>(_6?(this.getViewportHeight()-_3):(this.getViewportWidth()-_3)));return _7}
+var _1=this.getControl(_1);if(isc.isA.Canvas(_1)){if(_1.showIf)return _1.fireCallback(_1.showIf,[_1]);else return true}}
+,isc.A.$8f=function isc_TabSet__getTabSizes(){if(!this._tabBar)return 0;var _1=this._tabBar.getMemberSizes(),_2=this._tabBar.vertical;if(_1==null||_1.length==0)return 0;_1=_1.sum();var _3=(_2?(this._tabBar.$td||0)+(this._tabBar.$te||0):(this._tabBar.$tb||0)+(this._tabBar.$tc||0));return _1+_3}
+,isc.A.getControl=function isc_TabSet_getControl(_1){if(isc.isA.Canvas(_1))return _1;var _2=(this._tabBar.orientation==isc.Layout.VERTICAL);if(_1=="tabScroller"){if(!this.scroller){var _3=this.scrollerButtonSize;var _4;if(this.symmetricScroller){_4=_2?this.scrollerVSrc:this.scrollerHSrc}else{_4=this.scrollerSrc}
+var _5=this.symmetricScroller?"back":this.tabBarPosition+"_back",_6=this.symmetricScroller?"forward":this.tabBarPosition+"_forward";this.scroller=isc.StretchImgButton.create({noDoubleClicks:true,tabSet:this,vertical:_2,width:_2?(this.tabBarThickness-this._tabBar.baseLineThickness):(2*_3),height:_2?(2*_3):(this.tabBarThickness-this._tabBar.baseLineThickness),items:[{name:_5,width:_2?null:_3,height:_2?_3:null},{name:_6,width:_2?null:_3,height:_2?_3:null}],skinImgDir:this.skinImgDir,src:_4,showRollOver:false,showDown:false,backPartName:_5,forwardPartName:_6,mouseMove:function(){if(!this.tabSet.showScrollerRollOver)return;var _7=this.inWhichPart();var _8=_7==this.backPartName?this.forwardPartName:this.backPartName;this.setState(isc.StatefulCanvas.STATE_UP,_8);this.setState(isc.StatefulCanvas.STATE_OVER,_7)},mouseOut:function(){if(!this.tabSet.showScrollerRollOver)return;this.setState(isc.StatefulCanvas.STATE_UP,this.forwardPartName);this.setState(isc.StatefulCanvas.STATE_UP,this.backPartName)},mouseDown:function(){this.clickPart=this.inWhichPart();this.setState(isc.StatefulCanvas.STATE_DOWN,this.clickPart)},mouseUp:function(){this.setState(isc.StatefulCanvas.STATE_UP,this.clickPart)},mouseStillDown:function(){this.click()},click:function(){var _9=this.clickPart==this.backPartName;if(_9)this.tabSet.scrollBack();else this.tabSet.scrollForward();return false}},this.scrollerProperties)}
+return this.scroller}else if(_1=="tabPicker"){var _10=this.pickerButtonSize;if(!this.tabPicker){var _11;if(this.symmetricPickerButton){_11=_2?this.pickerButtonVSrc:this.pickerButtonHSrc}else{_11=this.pickerButtonSrc}
+this.tabPicker=isc.ImgButton.create({customState:this.symmetricPickerButton?null:this.tabBarPosition,tabSet:this,showRollOver:false,skinImgDir:this.skinImgDir,src:_11,height:(_2?_10:(this.tabBarThickness-this._tabBar.baseLineThickness)),width:(_2?(this.tabBarThickness-this._tabBar.baseLineThickness):_10),click:function(){this.tabSet.showTabPickerMenu()}},this.tabPickerProperties)}
+return this.tabPicker}
+if(isc.isA.String(_1)&&isc.isA.Canvas(window[_1]))return window[_1];this.logWarn("Unable to resolve specified tabBarControl:"+isc.Log.echo(_1)+" to a valid control. Not displaying.");return null}
+,isc.A.showControls=function isc_TabSet_showControls(){var _1=this.tabBarControls,_2=0,_3=this.tabBarPosition,_4=_3==isc.Canvas.RIGHT||_3==isc.Canvas.LEFT,_5=0;for(var i=0;i<_1.length;i++){var _7=_1[i];if(!this.shouldShowControl(_7))continue;_7=this.getControl(_7);if(!_7)continue;var _8=this.tabBarControlLayout;if(!_8){this.tabBarControlLayout=_8=this.createAutoChild("tabBarControlLayout",{styleName:this.tabBarControlLayoutDefaults.styleName||this.tabBar.styleName,childResized:function(){this.Super("childResized",arguments);this.creator.$510()},vertical:_4,locatorParent:this})}
+if(_8.getMemberNumber(_7)!=_5){_8.addMember(_7,_5)}
+_5++;_2+=_4?_7.getVisibleHeight():_7.getVisibleWidth()}
+if(_8&&_8.members){var _9=[];for(var i=_5;i<_8.members.length;i++){_9.add(i)}
+_8.removeMembers(_9)}
+if(_5==0){this.hideControls();return false}
+this.placeControlLayout(_2);if(!this.$8g){var _10=this._tabBar;this.$8g=this._tabBar.createAutoChild("baseLine",{vertical:(_3==isc.Canvas.LEFT||_3==isc.Canvas.RIGHT),_generated:true,skinImgDir:_10.skinImgDir,src:_10.baseLineSrc,capSize:_10.baseLineCapSize,imageType:isc.Img.STRETCH,overflow:"hidden",autoDraw:false});this.addChild(this.$8g)}
+var _10=this._tabBar,_11=(this.tabBarThickness-_10.baseLineThickness);if(_3==isc.Canvas.LEFT){this.$8g.setRect(_11,0,_10.baseLineThickness,this.getHeight())}else if(_3==isc.Canvas.RIGHT){this.$8g.setRect(this.getWidth()-this.tabBarThickness,0,_10.baseLineThickness,this.getHeight())}else if(_3==isc.Canvas.TOP){this.$8g.setRect(0,_11,this.getWidth(),_10.baseLineThickness)}else if(_3==isc.Canvas.BOTTOM){this.$8g.setRect(0,this.getHeight()-this.tabBarThickness,this.getWidth(),_10.baseLineThickness)}
+if(!_8.isVisible())_8.show();this.$8g.moveBelow(_10);if(!this.$8g.isVisible())this.$8g.show();return true}
+,isc.A.placeControlLayout=function isc_TabSet_placeControlLayout(_1){var _2,_3,_4,_5,_6=this._tabBar,_7=_6.getBreadth()-_6.baseLineThickness,_8=this.tabBarPosition;if(_8==isc.Canvas.LEFT){_2=0;_3=this.getHeight()-_1;_4=_7;_5=_1}else if(_8==isc.Canvas.RIGHT){_2=this.getWidth()-_7;_3=this.getHeight()-_1;_4=_7;_5=_1}else if(_8==isc.Canvas.BOTTOM){_4=_1;_2=this.getWidth()-_1;_3=this.getHeight()-_7;_5=_7}else{_4=_1;_2=this.getWidth()-_1;_3=0;_5=_7}
+this.tabBarControlLayout.setRect(_2,_3,_4,_5);if(!this.children.contains(this.tabBarControlLayout))this.addChild(this.tabBarControlLayout)}
+,isc.A.$510=function isc_TabSet__controlLayoutChildResized(){var _1=this.tabBarControlLayout;if(!_1||!_1.isDrawn()||!_1.isVisible())return;var _2=0;for(var i=0;i<_1.members.length;i++){if(_1.vertical)_2+=_1.members[i].getVisibleHeight();else _2+=_1.members[i].getVisibleWidth()}
+this.placeControlLayout(_2);var _4=this.tabBar;if(_4){var _5=(this.tabBarPosition==isc.Canvas.LEFT||this.tabBarPosition==isc.Canvas.RIGHT);if(_5){_4.setHeight(this.getViewportHeight()-this.tabBarControlLayout.getVisibleHeight())}else{_4.setWidth(this.getViewportWidth()-this.tabBarControlLayout.getVisibleWidth())}}}
+,isc.A.hideControls=function isc_TabSet_hideControls(){if(this.tabBarControlLayout&&this.tabBarControlLayout.isVisible())this.tabBarControlLayout.hide();if(this.$8g&&this.$8g.isVisible())this.$8g.hide()}
+,isc.A.scrollForward=function isc_TabSet_scrollForward(){this._tabBar.scrollForward(this.animateTabScrolling)}
+,isc.A.scrollBack=function isc_TabSet_scrollBack(){this._tabBar.scrollBack(this.animateTabScrolling)}
+,isc.A.showTabPickerMenu=function isc_TabSet_showTabPickerMenu(){if(!this.$8d){var _1=this.tabs,_2=[];for(var i=0;i<_1.length;i++){_2[i]={index:i,enabled:!this.tabs[i].disabled,checkIf:"this.tabSet.getSelectedTabNumber() == "+i,title:_1[i].pickerTitle||_1[i].title,icon:(this.canCloseTab(_1[i])?null:_1[i].icon),click:"menu.tabSet.selectTab(item.index)"}}
+this.$8d=this.getMenuConstructor().create({tabSet:this,data:_2})}
+this.$8d.$8h();this.$8d.placeNear(this.tabPicker.getPageLeft(),this.tabPicker.getPageBottom())
+this.$8d.show()}
+,isc.A.resetTabPickerMenu=function isc_TabSet_resetTabPickerMenu(){if(this.$8d){this.$8d.destroy();delete this.$8d}}
+,isc.A.layoutChildren=function isc_TabSet_layoutChildren(_1,_2,_3,_4){this.invokeSuper(isc.TabSet,"layoutChildren",_1,_2,_3,_4);this.fixLayout()}
+,isc.A.$54m=function isc_TabSet__tabResized(){this.fixLayout()}
+,isc.A.$8i=function isc_TabSet__showTab(_1){if(isc.isA.Canvas(_1))_1=this.getTabObject(_1);if(_1==this.moreTab){this.rebuildMorePane()}
+this.paneContainer.scrollTo(0,0,"showTab");if(_1&&_1.pane){if(!this.paneContainer.hasMember(_1.pane))this.paneContainer.addMember(_1.pane);_1.pane.show()}
+this.paneContainer.adjustOverflow()}
+,isc.A.$8c=function isc_TabSet__tabSelected(_1){var _2;var _3=this.getSelectedTab(),_4=this.getSelectedTabNumber(),_5=this._tabBar.getButtonNumber(_1),_6=this.getTabObject(_5),_7=(_3!=null)&&(_6!=_3);var _8=this.showMoreTab&&this.tabBar.isShowingMoreTab()&&_6==this.moreTab;if(!_8){if(_6==this.$80n)return;this.$80n=_6}
+if(_7&&!this.$767){if(_3.tabDeselected!=null){if(this.fireCallback(_3.tabDeselected,"tabSet,tabNum, tabPane, ID, tab, newTab",[this,this.selectedTab,_3.pane,_3.ID,_3,_6])==false)
+{_2=true}}
+if(!_2&&this.tabDeselected!=null){_2=(this.tabDeselected(this.selectedTab,_3.pane,_3.ID,_3,_6)==false)}
+if(!_2&&_3.pane){_3.pane.hide()}}
+if(_2){this.$767=true;var _1=this.getSelectedTab();this.selectTab(_1);var _9=this.getTab(this.getTabNumber(_1));if(isc.EH.clickMaskUp()&&isc.EH.targetIsMasked(_9)){var _10=isc.EH.clickMaskRegistry.last();isc.EH.setMaskedFocusCanvas(_9,_10)}
+delete this.$767;return}
+this.selectedTab=_5;if(!this.$767){var _11;if(_6.tabSelected!=null){this.fireCallback(_6.tabSelected,"tabSet,tabNum,tabPane,ID,tab",[this,_5,_6.pane,_6.ID,_6]);if(this.getSelectedTabNumber()!=_5){return}}
+if(this.tabSelected){this.tabSelected(_5,_6.pane,_6.ID,_6);if(this.getSelectedTabNumber()!=_5){return}}}
+this.$8i(_1);var _12=this._tabBar;var _13=this;_12.scrollTabIntoView(_5,null,this.animateTabScrolling,function(){if(isc.isA.Function(_13.tabScrolledIntoView))_13.tabScrolledIntoView()})}
+,isc.A.getSelectedTab=function isc_TabSet_getSelectedTab(){if(this.selectedTab>=this.tabs.length)return this.moreTab;return this.tabs[this.selectedTab]}
+,isc.A.getSelectedTabNumber=function isc_TabSet_getSelectedTabNumber(){if(!isc.isA.Number(this.selectedTab))this.selectedTab=this.getTabNumber(this.selectedTab);if(!this.tabs||!this.tabs[this.selectedTab])return-1;return this.selectedTab}
+,isc.A.selectTab=function isc_TabSet_selectTab(_1){var _2=this.getTabNumber(_1);if(_2!=-1){if(this._tabBar){this._tabBar.selectTab(_2)}
+if(this._tabBar==null||!this._tabBar.$6c){this.selectedTab=_2}}}
+,isc.A.tabForPane=function isc_TabSet_tabForPane(_1){if(this.tabs){for(var i=0;i<this.tabs.length;i++){if(this.tabs[i].pane==_1){return this.tabs[i]}}}}
+,isc.A.getTabBar=function isc_TabSet_getTabBar(){return this._tabBar}
+,isc.A.$798=function isc_TabSet__editTabTitle(_1){_1=this.getTab(_1);var _2;if(this.canEditTabTitles){if(_1.canEditTitle!==false){_2=true}}else{if(_1.canEditTitle===true){_2=true}}
+if(_2)this.editTabTitle(_1);return _2}
+,isc.A.editTabTitle=function isc_TabSet_editTabTitle(_1){_1=this.getTab(_1);if(_1==null||!this.tabBar)return;if(!isc.isA.DynamicForm(this.titleEditorForm)){var _2=isc.addProperties({},this.titleEditorDefaults,this.titleEditorProperties,{handleKeyPress:function(_8,_9){var _3=this.Super("handleKeyPress",arguments);var _4=_8.keyName;if(_4=="Escape"){this.form.targetTabSet.cancelTabTitleEditing()}else if(_4=="Enter"){this.form.targetTabSet.saveTabTitle()}
+return _3}});_2.name="title";this.titleEditorForm=isc.DynamicForm.create({autoDraw:false,margin:0,padding:0,cellPadding:0,fields:[_2]});this.titleEditor=this.titleEditorForm.getItem("title")}
+var _5=this.titleEditorForm;_5.setProperties({targetTabSet:this,targetTab:_1});var _6=_5.getItem("title");var _7=_1.title;_6.setValue(_7);this.tabBar.scrollTabIntoView(_1,null,this.animateTabScrolling,{target:this,methodName:"showTitleEditor"})}
+,isc.A.cancelTabTitleEditing=function isc_TabSet_cancelTabTitleEditing(){if(this.titleEditorForm!=null){this.clearTitleEditorForm()}}
+,isc.A.saveTabTitle=function isc_TabSet_saveTabTitle(){if(this.titleEditorForm!=null&&this.titleEditorForm.isVisible()&&this.titleEditorForm.isDrawn())
+{var _1=false,_2=this.titleEditorForm,_3=_2.targetTab,_4=_2.getValue("title");if(_4!=_3.title&&(this.titleChanged!=null)){if(this.fireCallback(this.titleChanged,"newTitle, oldTitle, tab",[_4,_3.title,_3])==false)
+{_1=true}}
+if(!_1)this.setTabTitle(_2.targetTab,_4)}
+this.clearTitleEditorForm()}
+,isc.A.clearTitleEditorForm=function isc_TabSet_clearTitleEditorForm(){if(this.titleEditorForm==null)return;this.titleEditorForm.clear();if(this.titleEditorForm.$803!=null){isc.Page.clearEvent(this.$803);delete this.$803}
+this.titleEditorForm.targetTab=null}
+,isc.A.showTitleEditor=function isc_TabSet_showTitleEditor(){var _1=this.titleEditorForm,_2=_1?_1.targetTab:null;if(_2==null||!this.getTabObject(_2)){return}
+var _3=this.tabBar.getLeft()+this.tabBar.getLeftMargin()-this.tabBar.getScrollLeft()+this.tabBar.getLeftBorderSize()+_2.getLeft()+_2.capSize,_4=_2.getVisibleWidth()-_2.capSize*2;if(this.titleEditorLeftOffset){_3+=this.titleEditorLeftOffset;_4-=this.titleEditorLeftOffset}
+if(this.titleEditorRightOffset){_4-=this.titleEditorRightOffset}
+var _5=_1.getItem("title");_5.setWidth(_4);var _6=this.getTop()+this.tabBar.getTop()+this.tabBar.getTopMargin()-this.tabBar.getScrollTop()+this.tabBar.getTopBorderSize()+_2.getTop();if(this.titleEditorTopOffset){_6+=this.titleEditorTopOffset}
+_1.setTop(_6);_1.setLeft(_3);var _5=_1.getItem("title");if(_1.masterElement!=this){_1.$ns=true;_1.$jo=false;_1.$jq=false;this.addPeer(_1)}else{_1.draw()}
+_5.focusInItem();_5.delayCall("selectValue",[],100);if(this.$803==null){var _7=this;var _8=function(){if(!_7.destroyed){_7.$804()}}
+this.$803=isc.Page.setEvent("mouseDown",_8)}}
+,isc.A.$804=function isc_TabSet__clickOutsideDuringTitleEdit(){if(isc.EH.getTarget()==this.titleEditorForm)return;this.saveTabTitle()}
+,isc.A.clear=function isc_TabSet_clear(_1,_2,_3,_4){if(this.titleEditorForm!=null&&this.titleEditorForm.isDrawn()){this.cancelTitleEditing()}
+this.invokeSuper("TabSet","clear",_1,_2,_3,_4)}
+,isc.A.setVisibility=function isc_TabSet_setVisibility(_1,_2,_3,_4,_5){this.invokeSuper("TabSet","setVisibility",_1,_2,_3,_4,_5);if(!this.isVisible()&&this.titleEditorForm!=null&&this.titleEditorForm.isDrawn()){this.cancelTitleEditing()}}
+,isc.A.parentVisibilityChanged=function isc_TabSet_parentVisibilityChanged(_1,_2,_3,_4,_5){this.invokeSuper("TabSet","parentVisibilityChanged",_1,_2,_3,_4,_5);if(!this.isVisible()&&this.titleEditorForm!=null&&this.titleEditorForm.isDrawn()){this.cancelTitleEditing()}}
+);isc.B._maxIndex=isc.C+66;isc.TabSet.registerStringMethods({tabSelected:"tabNum,tabPane,ID,tab",tabDeselected:"tabNum,tabPane,ID,tab,newTab",getPaneContainerEdges:"",onCloseClick:"tab",titleChanged:"newTitle,oldTitle,tab",showTabContextMenu:"tabSet,tab"});isc.defineClass("PaneContainer","VLayout");isc.A=isc.PaneContainer.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.handleKeyPress=function isc_PaneContainer_handleKeyPress(_1,_2){if(_1.keyName=="Tab"&&_1.ctrlKey){var _3=this.parentElement,_4=_3.tabs.length-1,_5=_3.getSelectedTabNumber();if(_1.shiftKey){if(_5>0)_5-=1;else _5=_4}else{if(_5<_4)_5+=1;else _5=0}
+_3.selectTab(_5);_3.getTabBar().getButton(_5).focus();return false}
+if(this.convertToMethod("keyPress"))return this.keyPress(_1,_2)}
+);isc.B._maxIndex=isc.C+1;isc.TabSet.registerDupProperties("tabs",["pane"]);isc._moduleEnd=isc._Containers_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Containers module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Containers'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Containers.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Containers.js.gz
new file mode 100755
index 0000000..f724c50
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Containers.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Core.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Core.js
new file mode 100755
index 0000000..cce509e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Core.js
@@ -0,0 +1,4299 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+var isc = window.isc ? window.isc : {};if(window.isc&&!window.isc.module_Core){isc.module_Core=1;isc._moduleStart=isc._Core_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'Core load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;var isc=window.isc?window.isc:{};isc.$d=new Date().getTime();isc.version="v8.2p_2012-06-03/LGPL Development Only";isc.versionNumber="v8.2p_2012-06-03";isc.buildDate="2012-06-03";isc.expirationDate="";isc.licenseType="LGPL";isc.licenseCompany="Isomorphic Software";isc.licenseSerialNumber="ISC_LGPL_NIGHTLY";isc.licensingPage="http://smartclient.com/product/";isc.$41r={SCServer:{present:"false",name:"SmartClient Server",serverOnly:true,isPro:true},Drawing:{present:"true",name:"Drawing Module"},PluginBridges:{present:"true",name:"PluginBridges Module"},RichTextEditor:{present:"true",name:"RichTextEditor Module"},Calendar:{present:"true",name:"Calendar Module"},Analytics:{present:"false",name:"Analytics Module"},Charts:{present:"false",name:"Charts Module"},Tools:{present:"${includeTools}",name:"Portal and Tools Module"},NetworkPerformance:{present:"false",name:"Network Performance Module"},FileLoader:{present:"false",name:"Network Performance Module"},RealtimeMessaging:{present:"false",name:"RealtimeMessaging Module"},serverCriteria:{present:"false",name:"Server Advanced Filtering",serverOnly:true,isFeature:true},customSQL:{present:"false",name:"SQL Templating",serverOnly:true,isFeature:true},chaining:{present:"false",name:"Transaction Chaining",serverOnly:true,isFeature:true},batchDSGenerator:{present:"false",name:"Batch DS-Generator",serverOnly:true,isFeature:true},batchUploader:{present:"false",name:"Batch Uploader",serverOnly:true,isFeature:true},transactions:{present:"false",name:"Automatic Transaction Management",serverOnly:true,isFeature:true}};isc.canonicalizeModules=function(_1){if(!_1)return null;if(isc.isA.String(_1)){if(_1.indexOf(",")!=-1){_1=_1.split(",");var _2=/^\s+/,_3=/\s+$/;for(var i=0;i<_1.length;i++){_1[i]=_1[i].replace(_2,"").replace(_3,"")}}else _1=[_1]}
+return _1};isc.hasOptionalModules=function(_1){if(!_1)return true;_1=isc.canonicalizeModules(_1);for(var i=0;i<_1.length;i++)if(!isc.hasOptionalModule(_1[i]))return false;return true};isc.getMissingModules=function(_1){var _2=[];_1=isc.canonicalizeModules(_1);for(var i=0;i<_1.length;i++){var _4=_1[i];if(!isc.hasOptionalModule(_4))_2.add(isc.$41r[_4])}
+return _2};isc.hasOptionalModule=function(_1){var v=isc.$41r[_1];if(!v){if(isc.Log)isc.Log.logWarn("isc.hasOptionalModule - unknown module: "+_1);return false}
+return v.present=="true"||v.present.charAt(0)=="$"};isc.getOptionalModule=function(_1){return isc.$41r[_1]};isc.$a=window.isc_useSimpleNames;if(isc.$a==null)isc.$a=true;if(window.OpenAjax){isc.$b=isc.versionNumber.replace(/[a-zA-Z_]+/,".0");OpenAjax.registerLibrary("SmartClient","http://smartclient.com/SmartClient",isc.$b,{namespacedMode:!isc.$a,iscVersion:isc.version,buildDate:isc.buildDate,licenseType:isc.licenseType,licenseCompany:isc.licenseCompany,licenseSerialNumber:isc.licenseSerialNumber});OpenAjax.registerGlobals("SmartClient",["isc"])}
+isc.$e=window.isc_useLongDOMIDs;isc.$f="isc.";isc.addGlobal=function(_1,_2){if(_1.indexOf(isc.$f)==0)_1=_1.substring(4);isc[_1]=_2;if(isc.$a)window[_1]=_2}
+isc.onLine=true;isc.isOffline=function(){return!isc.onLine};isc.goOffline=function(){isc.onLine=false};isc.goOnline=function(){isc.onLine=true};if(window.addEventListener){window.addEventListener("online",isc.goOnline,false);window.addEventListener("offline",isc.goOffline,false)}
+isc.addGlobal("Browser",{isSupported:false});isc.Browser.isOpera=(navigator.appName=="Opera"||navigator.userAgent.indexOf("Opera")!=-1);isc.Browser.isNS=(navigator.appName=="Netscape"&&!isc.Browser.isOpera);isc.Browser.isIE=(navigator.appName=="Microsoft Internet Explorer"&&!isc.Browser.isOpera);isc.Browser.isMSN=(isc.Browser.isIE&&navigator.userAgent.indexOf("MSN")!=-1);isc.Browser.minorVersion=parseFloat(isc.Browser.isIE?navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE")+5):navigator.appVersion);isc.Browser.version=parseInt(isc.Browser.minorVersion);isc.Browser.isIE6=isc.Browser.isIE&&isc.Browser.version<=6;isc.Browser.isMoz=(navigator.userAgent.indexOf("Gecko")!=-1)&&(navigator.userAgent.indexOf("Safari")==-1)&&(navigator.userAgent.indexOf("AppleWebKit")==-1);isc.Browser.isCamino=(isc.Browser.isMoz&&navigator.userAgent.indexOf("Camino/")!=-1);if(isc.Browser.isCamino){isc.Browser.caminoVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Camino/")+7)}
+isc.Browser.isFirefox=(isc.Browser.isMoz&&navigator.userAgent.indexOf("Firefox/")!=-1);if(isc.Browser.isFirefox){isc.Browser.firefoxVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox/")+8)}
+if(isc.Browser.isMoz){isc.Browser.$g=navigator.userAgent.indexOf("Gecko/")+6;isc.Browser.geckoVersion=parseInt(navigator.userAgent.substring(isc.Browser.$g,isc.Browser.$g+8));if(isc.Browser.isFirefox){if(isc.Browser.firefoxVersion.match(/^1\.0/))isc.Browser.geckoVersion=20050915;else if(isc.Browser.firefoxVersion.match(/^2\.0/))isc.Browser.geckoVersion=20071108}}
+isc.Browser.isStrict=document.compatMode=="CSS1Compat";if(isc.Browser.isStrict&&isc.Browser.isMoz){isc.Browser.$51p=document.doctype.publicId;isc.Browser.$51q=document.doctype.systemId}
+isc.Browser.isTransitional=/.*(Transitional|Frameset)/.test((document.all&&document.all[0]&&document.all[0].nodeValue)||(document.doctype&&document.doctype.publicId));isc.Browser.isIE7=isc.Browser.isIE&&isc.Browser.version==7;isc.Browser.isIE8=isc.Browser.isIE&&isc.Browser.version>=8&&document.documentMode==8
+isc.Browser.isIE8Strict=isc.Browser.isIE&&isc.Browser.isStrict&&document.documentMode>=8;isc.Browser.isIE9=isc.Browser.isIE&&isc.Browser.version>=9&&document.documentMode>=9;isc.Browser.isAIR=(navigator.userAgent.indexOf("AdobeAIR")!=-1);isc.Browser.AIRVersion=(isc.Browser.isAIR?navigator.userAgent.substring(navigator.userAgent.indexOf("AdobeAir/")+9):null);isc.Browser.isWebKit=navigator.userAgent.indexOf("WebKit")!=-1;isc.Browser.isSafari=isc.Browser.isAIR||navigator.userAgent.indexOf("Safari")!=-1||navigator.userAgent.indexOf("AppleWebKit")!=-1;isc.Browser.isChrome=isc.Browser.isSafari&&(navigator.userAgent.indexOf("Chrome/")!=-1);if(isc.Browser.isSafari){if(isc.Browser.isAIR){isc.Browser.safariVersion=530}else{if(navigator.userAgent.indexOf("Safari/")!=-1){isc.Browser.rawSafariVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Safari/")+7)}else if(navigator.userAgent.indexOf("AppleWebKit/")!=-1){isc.Browser.rawSafariVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("AppleWebKit/")+12)}else{isc.Browser.rawSafariVersion="530"}
+isc.Browser.safariVersion=(function(){var _1=isc.Browser.rawSafariVersion,_2=_1.indexOf(".");if(_2==-1)return parseInt(_1);var _3=_1.substring(0,_2+1),_4;while(_2!=-1){_2+=1;_4=_1.indexOf(".",_2);_3+=_1.substring(_2,(_4==-1?_1.length:_4));_2=_4}
+return parseFloat(_3)})()}}
+isc.Browser.isWin=navigator.platform.toLowerCase().indexOf("win")>-1;isc.Browser.isWin2k=navigator.userAgent.match(/NT 5.01?/)!=null;isc.Browser.isMac=navigator.platform.toLowerCase().indexOf("mac")>-1;isc.Browser.isUnix=(!isc.Browser.isMac&&!isc.Browser.isWin);isc.Browser.isAndroid=navigator.userAgent.indexOf("Android")>-1;isc.Browser.isRIM=isc.Browser.isBlackBerry=navigator.userAgent.indexOf("BlackBerry")>-1||navigator.userAgent.indexOf("PlayBook")>-1;isc.Browser.isMobileWebkit=(isc.Browser.isSafari&&navigator.userAgent.indexOf(" Mobile/")>-1||isc.Browser.isAndroid||isc.Browser.isBlackBerry);isc.Browser.isMobile=(isc.Browser.isMobileWebkit);isc.Browser.isTouch=(isc.Browser.isMobileWebkit);isc.Browser.isIPhone=(isc.Browser.isMobileWebkit&&navigator.userAgent.indexOf("AppleWebKit"));isc.Browser.isHandset=(isc.Browser.isMobileWebkit&&navigator.userAgent.indexOf("iPad")==-1);isc.Browser.isIPad=(isc.Browser.isIPhone&&navigator.userAgent.indexOf("iPad"));isc.Browser.isTablet=(isc.Browser.isIPad)||(isc.Browser.isRIM&&navigator.userAgent.indexOf("Tablet")>-1)
+isc.Browser.isBorderBox=(isc.Browser.isIE&&!isc.Browser.isStrict);isc.Browser.lineFeed=(isc.Browser.isWin?"\r\n":"\r");isc.Browser.$h=false;isc.Browser.isDOM=(isc.Browser.isMoz||isc.Browser.isOpera||isc.Browser.isSafari||(isc.Browser.isIE&&isc.Browser.version>=5));isc.Browser.isSupported=((isc.Browser.isIE&&isc.Browser.minorVersion>=5.5&&isc.Browser.isWin)||isc.Browser.isMoz||isc.Browser.isOpera||isc.Browser.isSafari||isc.Browser.isAIR);isc.Browser.allowsXSXHR=((isc.Browser.isFirefox&&isc.Browser.firefoxVersion>="3.5")||(isc.Browser.isChrome)||(isc.Browser.isSafari&&isc.Browser.safariVersion>=531));isc.noOp=function(){};isc.emptyObject={};isc.$ac=[];isc.emptyString=isc.$ad="";isc.dot=".";isc.semi=";";isc.colon=":";isc.slash="/";isc.star="*";isc.auto="auto";isc.px="px";isc.nbsp=" ";isc.xnbsp="&nbsp;";isc.$ae="false";isc.$af="FALSE";isc.$ag="_";isc.$75g="$";isc.$ah="_$observed_";isc.$ai="_$SuperProto_";isc.gwtRef="__ref";isc.logWarn=function(_1,_2){isc.Log.logWarn(_1,_2)}
+isc.echo=function(_1){return isc.Log.echo(_1)}
+isc.echoAll=function(_1){return isc.Log.echoAll(_1)}
+isc.echoLeaf=function(_1){return isc.Log.echoLeaf(_1)}
+isc.echoFull=function(_1){return isc.Log.echoFull(_1)}
+isc.logEcho=function(_1,_2){if(_2)_2+=": ";isc.Log.logWarn((_2||isc.$ad)+isc.echo(_1))}
+isc.logEchoAll=function(_1,_2){if(_2)_2+=": ";isc.Log.logWarn((_2||isc.$ad)+isc.echoAll(_1))}
+isc.$aq=function(_1,_2){var _3=_2||_1;return _2==null?new Function(_3):new Function(_1,_3)};isc.doEval=function(_1){if(isc.Browser.isMoz)return isc.$as(_1);if(!isc.$at)isc.$at=[];isc.$at[isc.$at.length]=_1;return null}
+isc.finalEval=function(){if(isc.$at){if(isc.Browser.isMoz){for(var i=0;i<isc.$at.length;i++){isc.eval(isc.$at[i])}}
+var _2=isc.$at.join("");if(isc.Browser.isSafari)_2=isc.$as(_2);if(isc.Browser.isIE)window.execScript(_2,"javascript");else isc.eval(_2)}
+isc.$at=null}
+isc.$au="//$0";isc.$av="//$1";isc.$aw=0;isc.$ax=true;isc.$as=function(_1){isc.$ar=true;var _2=isc.timeStamp?isc.timeStamp():new Date().getTime();var _3=isc.$aj,_4=isc.$ay;if(isc.$ax)_3=isc.$an+_3;var _5=_1.split(isc.$az),_6=[];var _5=_1.split(isc.$au);_1=_5.join(_3);_5=_1.split(isc.$av);_1=_5.join(_4);if(isc.$ax){_5=_1.split("//$2");_1=_5.join(isc.$ap)}
+var _7=isc.timeStamp?isc.timeStamp():new Date().getTime();isc.$aw+=(_7-_2);return _1}
+isc.$ay="}catch($al){isc.eval(isc.$a0(";isc.$a0=function(_1){var _2="var _ = {";if(_1!=""){var _3=_1.split(",");for(var i=0;i<_3.length;i++){var _5=_3[i];_2+=_5+":"+_5;if(i<_3.length-1)_2+=","}}
+_2+="};";_2+="if(isc.Log)isc.Log.$am($al,arguments,this,_);throw $al;";return _2}
+isc.fillList=function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27){if(_1==null)_1=[];else _1.length=0;var _28;if(_25===_28&&_26===_28&&_27===_28){_1[0]=_2;_1[1]=_3;_1[2]=_4;_1[3]=_5;_1[4]=_6;_1[5]=_7;_1[6]=_8;_1[7]=_9;_1[8]=_10;_1[9]=_11;_1[10]=_12;_1[11]=_13;_1[12]=_14;_1[13]=_15;_1[14]=_16;_1[15]=_17;_1[16]=_18;_1[17]=_19;_1[18]=_20;_1[19]=_21;_1[20]=_22;_1[21]=_23;_1[22]=_24}else{for(var i=1;i<arguments.length;i++){_1[i-1]=arguments[i]}}
+return _1}
+isc.$a1=[];isc.addGlobal("addProperties",function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27){var _28,_29=isc.$a1;if(_25===_28&&_26===_28&&_27===_28){isc.fillList(_29,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27)}else{_29.length=0;for(var i=1;i<arguments.length;i++){_29[i-1]=arguments[i]}}
+var _31=isc.addPropertyList(_1,_29);_29.length=0;return _31});isc.$a2={};isc.$a3={};isc.$a4=function(_1){var _2=_1.Class,_3;if(isc.isA.ClassObject(_1)){_3=isc.$a3[_2]=isc.$a3[_2]||[]}else if(isc.isAn.InstancePrototype(_1)){_3=isc.$a2[_2]=isc.$a2[_2]||[]}
+return _3}
+isc.addPropertyList=function(_1,_2){if(_1==null){if(isc.Log)isc.Log.logWarn("Attempt to add properties to a null object. "+"Creating a new object for the list of properties.");_1={}}
+var _3,_4=(isc.isA!=null),_5=(isc.isAn&&isc.isAn.Instance(_1)?_1.getClass()._stringMethodRegistry:_1._stringMethodRegistry);if(_5==null)_5=isc.emptyObject;var _6=_1.$a5?isc.$a4(_1):null;var _7;for(var i=0,l=_2.length;i<l;i++){var _10=_2[i];if(_10==null)continue;for(var _11 in _10){var _12=_10[_11];var _13=_4&&isc.isA.Function(_12);if(_5[_11]!==_7||_13)
+{if(_3==null)_3={};_3[_11]=_12}else{if(_6!=null)_6[_6.length]=_11;var _14=_1[_11];if(!_13&&_14!=null&&isc.isA.Function(_1[_11]))
+{if(isc.Log!=null){isc.Log.logWarn("method "+_11+" on "+_1+" overridden with non-function: '"+_12+"'")}}
+_1[_11]=_12}}}
+if(_3!=null)isc.addMethods(_1,_3);return _1}
+isc.$a6="string";isc.$a7="function";isc.$a8="constructor";isc.$bl="object";isc.addGlobal("addMethods",function(_1,_2){if(!_1||!_2)return _1;var _3=_1.$a5?isc.$a4(_1):null;if(!isc.$a9)isc.$a9={};for(var _4 in _2){if(_3!=null)_3[_3.length]=_4;var _5=_2[_4];if(isc.isAn.Instance!=null&&_5!=null&&(typeof _5==isc.$a6||typeof _5==isc.$bl))
+{var _6=(isc.isAn.Instance(_1)?_1.getClass()._stringMethodRegistry:_1._stringMethodRegistry);var _7;if(_6&&!(_6[_4]===_7)&&_4!=isc.$a8)
+{_5=isc.Func.expressionToFunction(_6[_4],_2[_4])}}
+var _8=_1.$ba,_9=(_8!=null&&_8[_4]!=null?isc.$ah+_4:_4);if(_5!==_1[_9]){if(_5!=null){this.$bb(_5,_4,_1)}
+_1[_9]=_5;if(_5!=null){if(isc.$a9[_4]){var _10=(_1.$ba!=null&&_1.$ba[isc.$a9[_4]]!=null?isc.$ah+isc.$a9[_4]:isc.$a9[_4]);_1[_10]=_5}}}}
+return _1});isc._allFuncs=[]
+isc._allFuncs._maxIndex=0;isc._funcClasses=new Array(5000);isc.$bb=function(_1,_2,_3){if(typeof _1!=isc.$a7)return;if(_3.Class==null)return _1.$bc=_2;if(isc.isA!=null&&isc.isAn.InstancePrototype!=null&&(isc.isAn.InstancePrototype(_3)||isc.isA.ClassObject(_3)))
+{var _4=isc._allFuncs;_4[_4._maxIndex]=_1;isc._funcClasses[_4._maxIndex]=_3.Class;_4._maxIndex++;return}
+var _5=(_3==isc.isA?"isA":_3.Class);_1.$bd=_5;if(isc[_3.Class]==null)_1.$bc=_2;if(isc.isA!=null&&isc.isAn.Instance!=null&&isc.isAn.Instance(_3)&&!isc.isAn.InstancePrototype(_3))
+{_1.$bc=_2;_1.$be=true;if(_3[_2]!=null)_1.$bf=true}}
+isc.addGlobal("getKeys",function(_1){var _2=[];if(_1!=null){for(var _3 in _1){_2[_2.length]=_3}}
+return _2});isc.addGlobal("firstKey",function(_1){for(var _2 in _1)return _2});isc.addGlobal("getValues",function(_1){var _2=[];if(_1!=null){for(var _3 in _1){_2[_2.length]=_1[_3]}}
+return _2});isc.addGlobal("sortObject",function(_1,_2){if(!isc.isA.Object(_1))return _1;if(isc.isAn.Array(_1)){if(_2!=null)return _1.sort(_2);return _1.sort()}
+var _3=isc.getKeys(_1);_3=(_2==null?_3.sort():_3.sort(_2));var _4={};for(var i=0;i<_3.length;i++){_4[_3[i]]=_1[_3[i]]}
+return _4});isc.addGlobal("sortObjectByProperties",function(_1,_2){if(!isc.isA.Object(_1))return _1;if(isc.isAn.Array(_1)){if(_2!=null)return _1.sort(_2);return _1.sort()}
+var _3=isc.getValues(_1);_3=(_2==null?_3.sort():_3.sort(_2));var _4={};for(var i=0;i<_3.length;i++){var _6=_3[i];for(var _7 in _1){if(_1[_7]===_6){_4[_7]=_1[_7];continue}}}
+return _4});isc.addGlobal("addDefaults",function(_1,_2){if(_1==null)return;var _3;for(var _4 in _2){if(_1[_4]===_3)_1[_4]=_2[_4]}
+return _1});isc.addGlobal("propertyDefined",function(_1,_2){if(_1==null)return false;var _3;if(_1[_2]!==_3)return true;var _4=isc.getKeys(_1);return(_4.contains(_2))});isc.$829="__ref";isc.addGlobal("objectsAreEqual",function(_1,_2){if(_1===_2)return true;else if(isc.isAn.Object(_1)&&isc.isAn.Object(_2)){if(isc.isA.Date(_1)){return isc.isA.Date(_2)&&(Date.compareDates(_1,_2)==0)}else if(isc.isAn.Array(_1)){if(isc.isAn.Array(_2)&&_1.length==_2.length){for(var i=0;i<_1.length;i++){if(!isc.objectsAreEqual(_1[i],_2[i]))return false}
+return true}
+return false}else{if(isc.isAn.Array(_2))return false;var _4=0;for(var _5 in _1){if(_5==isc.$829)continue;if(!isc.objectsAreEqual(_1[_5],_2[_5]))return false;_4++}
+var _6=0;for(var _7 in _2){if(_5==isc.$829)continue;_6++;if(_6>_4)return false}
+if(_6!=_4)return false;return true}}else{return false}});isc.addGlobal("combineObjects",function(_1,_2){if(_1==null||!isc.isAn.Object(_1))return _2;if(_2==null||!isc.isAn.Object(_2))return _1;for(var _3 in _2){var _4=_1[_3],_5=_2[_3];if(isc.isAn.Object(_4)&&!isc.isAn.Array(_4)&&!isc.isA.Date(_4)&&isc.isAn.Object(_5)&&!isc.isAn.Array(_5)&&!isc.isA.Date(_5))
+{isc.combineObjects(_4,_5)}else{_1[_3]=_5}}});isc.applyMask=function(_1,_2){var _3={};if(_1==null)return _3;if(_2==null){return isc.addProperties(_3,_1)}
+var _4=false;if(!isc.isAn.Array(_1)){_4=true;_1=[_1]}
+if(!isc.isAn.Array(_2))_2=isc.getKeys(_2);var _3=[],_5,_6,_7,_8;for(var i=0;i<_1.length;i++){_5=_1[i];_6=_3[i]={};for(var j=0;j<_2.length;j++){_7=_2[j];if(_5[_7]===_8)continue;_6[_7]=_5[_7]}}
+return(_4?_3[0]:_3)}
+isc.getProperties=function(_1,_2){if(_1==null)return null;var _3={};if(_2==null)return _3;for(var i=0;i<_2.length;i++){var _5=_2[i];_3[_5]=_1[_5]}
+return _3}
+isc.$bg={};isc.$bh=Math.floor;isc.$bi="-";for(isc.$bj=0;isc.$bj<10;isc.$bj++)
+isc.$bg[isc.$bj]=isc.$bj.toString();isc.$bk=function(_1,_2,_3,_4){var _5=_3+_4-1,_6=_2,_7=false,_8;if(_2<0){_8=true;_2=-_2;_1[_3]=this.$bi;_3+=1;_4-=1}
+while(_2>9){var _9=this.$bh(_2/ 10),_10=_2-(_9*10);_1[_5]=this.$bg[_10];_2=_9;if(_5==(_3+1)&&_2>9){isc.Log.logWarn("fillNumber: number too large: "+_6+isc.Log.getStackTrace());_7=true;break}
+_5-=1}
+if(_7){_5=_3+_4-1
+_1[_5--]=(!_8?_6:-_6)}else{_1[_5--]=this.$bg[_2]}
+for(var i=_5;i>=_3;i--){_1[i]=null}}
+isc.booleanValue=function(_1,_2){if(_1==null)return _2;if(isc.isA.String(_1))return _1!=isc.$ae&&_1!=isc.$af;return _1?true:false}
+isc.iscToLocaleString=function(_1){if(_1!=null){return _1.iscToLocaleString?_1.iscToLocaleString():(_1.toLocaleString?_1.toLocaleString():(_1.toString?_1.toString():isc.emptyString+_1))}
+return isc.emptyString+_1}
+isc.addGlobal("isA",{});isc.addGlobal("isAn",isc.isA);isc.addGlobal("is",isc.isA);isc.isA.Class="isA";isc.isA.isc=isc.isA;Function.$k=1;Array.$k=2;Date.$k=3;String.$k=4;Number.$k=5;Boolean.$k=6;RegExp.$k=7;Object.$k=8;Function.prototype.$k=1;isc.A=isc.isA;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.useTypeOf=isc.Browser.isMoz||isc.Browser.isSafari;isc.A.$bl="object";isc.A.$73x="String";isc.A.$a7="function";isc.A.$bm="text/xml";isc.A.$58k={SelectItem:true,Time:true};isc.B.push(isc.A.emptyString=function isc_isA_emptyString(_1){return isc.isA.String(_1)&&_1==isc.emptyString}
+,isc.A.nonemptyString=function isc_isA_nonemptyString(_1){return isc.isA.String(_1)&&_1!=isc.emptyString}
+,isc.A.Object=function isc_isA_Object(_1){if(_1==null)return false;if(isc.Browser.isIE&&typeof _1==this.$a7)return false;if(this.useTypeOf){var _2=typeof _1;return(_2=="object"||_2=="array"||_2=="date"||(isc.Browser.isMoz&&_2=="function"&&isc.isA.RegularExpression(_1)))}
+if(_1.constructor&&_1.constructor.$k!=null){var _3=_1.constructor.$k;if(_3==1){}else{return(_3==8||_3==7||_3==3||_3==2)}}
+if(_1.Class!=null&&_1.Class==this.$73x)return false;if(typeof _1==this.$bl){if(isc.Browser.isIE&&isc.isA.Function(_1))return false;else return true}else return false}
+,isc.A.emptyObject=function isc_isA_emptyObject(_1){if(!isc.isAn.Object(_1))return false;for(var i in _1){return false}
+return true}
+,isc.A.emptyArray=function isc_isA_emptyArray(_1){return isc.isAn.Array(_1)&&_1.length==0}
+,isc.A.String=function isc_isA_String(_1){if(_1==null)return false;if(this.useTypeOf){return typeof _1=="string"||(_1.Class!=null&&_1.Class==this.$73x)}
+if(_1.constructor&&_1.constructor.$k!=null){return _1.constructor.$k==4}
+if(_1.Class!=null&&_1.Class==this.$73x)return true;return typeof _1=="string"}
+,isc.A.Array=function isc_isA_Array(_1){if(_1==null)return false;if(this.useTypeOf&&typeof _1=="array")return true;if(typeof _1==this.$a7)return false;if(_1.constructor&&_1.constructor.$k!=null){return _1.constructor.$k==2}
+if(isc.Browser.isSafari){var _2=""+_1.splice;return(_2=="function splice() {\n [native code]\n}"||_2=="(Internal function)")}
+return""+_1.constructor==""+Array}
+,isc.A.Function=function isc_isA_Function(_1){if(_1==null)return false;if(isc.Browser.isIE&&typeof _1==this.$a7)return true;var _2=_1.constructor;if(_2&&_2.$k!=null){if(_2.$k!=1)return false;if(_2===Function)return true}
+return isc.Browser.isIE?(isc.emptyString+_1.constructor==Function.toString()):(typeof _1==this.$a7)}
+,isc.A.Number=function isc_isA_Number(_1){if(_1==null)return false;if(this.useTypeOf&&typeof _1=="number"){return!isNaN(_1)&&_1!=Number.POSITIVE_INFINITY&&_1!=Number.NEGATIVE_INFINITY}
+if(_1.constructor&&_1.constructor.$k!=null){if(_1.constructor.$k!=5)return false}else{if(typeof _1!="number")return false}
+return!isNaN(_1)&&_1!=Number.POSITIVE_INFINITY&&_1!=Number.NEGATIVE_INFINITY}
+,isc.A.SpecialNumber=function isc_isA_SpecialNumber(_1){if(_1==null)return false;if(_1.constructor&&_1.constructor.$k!=null){if(_1.constructor.$k!=5)return false}else{if(typeof _1!="number")return false}
+return(isNaN(_1)||_1==Number.POSITIVE_INFINITY||_1==Number.NEGATIVE_INFINITY)}
+,isc.A.Boolean=function isc_isA_Boolean(_1){if(_1==null)return false;if(_1.constructor&&_1.constructor.$k!=null){return _1.constructor.$k==6}
+return typeof _1=="boolean"}
+,isc.A.Date=function isc_isA_Date(_1){if(_1==null)return false;if(_1.constructor&&_1.constructor.$k!=null){return _1.constructor.$k==3}
+return(""+_1.constructor)==(""+Date)&&_1.getDate&&isc.isA.Number(_1.getDate())}
+,isc.A.RegularExpression=function isc_isA_RegularExpression(_1){if(_1==null)return false;if(_1.constructor&&_1.constructor.$k!=null){return _1.constructor.$k==7}
+return(""+_1.constructor)==(""+RegExp)}
+,isc.A.XMLNode=function isc_isA_XMLNode(_1){if(_1==null)return false;if(isc.Browser.isIE){return _1.specified!=null&&_1.parsed!=null&&_1.nodeType!=null&&_1.hasChildNodes!=null}
+var _2=_1.ownerDocument;if(_2==null)return false;return _2.contentType==this.$bm}
+,isc.A.AlphaChar=function isc_isA_AlphaChar(_1){var _2=_1.charCodeAt(0)
+return((_2>=65&&_2<=90)||(_2>=97&&_2<=122))}
+,isc.A.NumChar=function isc_isA_NumChar(_1){var _2=_1.charCodeAt(0)
+return(_2>=48&&_2<=57)}
+,isc.A.AlphaNumericChar=function isc_isA_AlphaNumericChar(_1){return(isc.isA.AlphaChar(_1)||isc.isA.NumChar(_1))}
+,isc.A.WhitespaceChar=function isc_isA_WhitespaceChar(_1){var _2=_1.charCodeAt(0)
+return(_2>=0&&_2<=32)}
+,isc.A.color=function isc_isA_color(_1){if(!isc.isA.String(_1))return false;if(!this.$bn){this.$bn=new RegExp("^(#([\\dA-F]{2}){3}|"+"rgb\\((\\s*[\\d]{1,3}\\s*,\\s*){2}\\s*[\\d]{1,3}\\s*\\)|"+"[a-z]+)$","i")}
+return this.$bn.test(_1)}
+,isc.A.ResultSet=function isc_isA_ResultSet(_1){return false}
+,isc.A.ResultTree=function isc_isA_ResultTree(_1){return false}
+,isc.A.SelectItem=function isc_isA_SelectItem(_1){if(!_1||!isc.isA.FormItem(_1))return false;var _2=_1.getClass();return(_2==isc.SelectItem||_2==isc.NativeSelectItem)}
+,isc.A.SelectOtherItem=function isc_isA_SelectOtherItem(_1){if(!_1||!isc.isA.FormItem(_1))return false;var _2=_1.getClass();return((_2==isc.SelectItem||_2==isc.NativeSelectItem)&&_1.isSelectOther)}
+,isc.A.Time=function isc_isA_Time(_1){return isc.isA.Date(_1)}
+);isc.B._maxIndex=isc.C+24;isc.addGlobal("ClassFactory",{});isc.ClassFactory.Class="ClassFactory";isc.A=isc.isA;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.Instance=function isc_isA_Instance(_1){return(_1!=null&&_1.$76y!=null)}
+,isc.A.ClassObject=function isc_isA_ClassObject(_1){return(_1!=null&&_1.$bp==true)}
+,isc.A.Interface=function isc_isA_Interface(_1){return(_1!=null&&_1.$a5==true)}
+,isc.A.InstancePrototype=function isc_isA_InstancePrototype(_1){return(isc.isAn.Instance(_1)&&_1.$76y==_1)}
+);isc.B._maxIndex=isc.C+4;isc.A=isc.ClassFactory;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$f="isc.";isc.A.$bq="Window";isc.A.$br="Selection";isc.A.$bs={};isc.A.$bt="object";isc.A.$bu=["if(object==null||object.isA==null||object.isA==isc.isA)return false;return object.isA(isc.",null,")"];isc.A.$60l={toolbar:true,parent:true,window:true,top:true,opener:true,event:true};isc.A._$isc_OID_="isc_OID_";isc.A._$isc_="isc_";isc.A.$bv="_";isc.A.$bw=[];isc.A.$75m={};isc.A.reuseGlobalIDs=true;isc.A.globalIDClassPoolSize=1000;isc.A.$63v={};isc.A.$bx=0;isc.A._$isc_="isc_";isc.A.$by=[null,"_",null];isc.A.reuseDOMIDs=false;isc.A.DOMIDPoolSize=10000;isc.A.$63w=[];isc.A.$bz=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];isc.A.$b0=[];isc.A.$b1="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p";isc.B.push(isc.A.defineClass=function isc_ClassFactory_defineClass(_1,_2,_3,_4){return this.$b2(_1,_2,_3,null,_4)}
+,isc.A.overwriteClass=function isc_ClassFactory_overwriteClass(_1,_2,_3,_4){return this.$b2(_1,_2,_3,null,_4,true)}
+,isc.A.defineInterface=function isc_ClassFactory_defineInterface(_1,_2){return this.$b2(_1,_2,null,true)}
+,isc.A.defineRootClass=function isc_ClassFactory_defineRootClass(_1){return this.$b3(_1,null)}
+,isc.A.$b2=function isc_ClassFactory__defineNonRootClass(_1,_2,_3,_4,_5,_6){_2=(_2||isc.ClassFactory.defaultSuperClass);if(!_2){isc.Log.logWarn("isc.ClassFactory.defineClass("+_1+") called with null"+" superClass and no ClassFactory.defaultRootClass is defined.");return null}
+return this.$b3(_1,_2,_3,_4,_5,_6)}
+,isc.A.$b3=function isc_ClassFactory__defineClass(_1,_2,_3,_4,_5,_6){var _7=(isc.Browser.isMoz&&(_1==this.$bq||_1==this.$br))||(isc.Browser.isChrome&&_1=="DataView");var _8,_9,_10=(isc.$a&&!_5);_8=isc[_1];if(_8!=null)_9=true
+else if(_10&&!_7){_8=window[_1]}
+if(_8!=null&&_1!="IButton"&&_6!=true)
+{var _11="New Class ID: '"+_1+"' collides with ID of existing "+(isc.isA&&isc.isA.Function(isc.isA.Class)&&isc.isA.Class(_8)?"Class object '":"object with value '")+_8+"'. Existing object will be replaced.";if(!_9)_11+="\nThis conflict would be avoided by disabling "+"ISC Simple Names mode. See documentation for "+"further information."
+if(window.isc.Log)isc.Log.logWarn(_11)}
+_2=this.getClass(_2);var _12=(_2?new _2.$b4.$b5():{});var _13=this.$b6(_2);_12.$b5=this.$b7(_12);_13.Class=_1;_13.$bp=true;if(isc.definingFramework==true)_13.isFrameworkClass=true;else _13.isFrameworkClass=false;if(!_13.isFrameworkClass){var _14=_2;while(_14&&!_14.isFrameworkClass){_14=_14.getSuperClass()}
+if(_14)_13.$75y=_14.Class}
+if(!_13.$75y)_13.$75y=_13.Class;_13.$a5=_12.$a5=!!_4;_13.$b8=_2;_13.$b4=_12;_12.Class=_1;_12.$b9=_13;_12.$76y=_12;_12.isFrameworkClass=_13.isFrameworkClass;_12.$75y=_13.$75y;isc[_1]=_13;if(_10)window[_1]=_13;this.classList[this.classList.length]=_1
+if(!(isc.isA.$58k[_1]&&isc.isA[_1])){isc.isA[_1]=this.makeIsAFunc(_1)}
+if(_3!=null){if(!isc.isAn.Array(_3))_3=[_3];for(var i=0;i<_3.length;i++){this.mixInInterface(_1,_3[i])}}
+return _13}
+,isc.A.makeIsAFunc=function isc_ClassFactory_makeIsAFunc(_1){if(this.isFirefox2==null){this.isFirefox2=(isc.Browser.isFirefox&&isc.Browser.geckoVersion>=20061010)}
+if(this.isFirefox2){return function(_3){if(_3==null||_3.isA==null||_3.isA==isc.isA)return false;return _3.isA(_1)}}else{var _2=this.$bu;_2[1]=_1;return new Function(this.$bt,_2.join(isc.$ad))}}
+,isc.A.$b6=function isc_ClassFactory__makeSubClass(_1){if(!_1)return{};var _2=_1.$b8,_3=_1.$ca;if(!
+(_3&&(_2==null||_3!==_2.$ca)))
+{_3=_1.$ca=this.$b7(_1)}
+return new _3()}
+,isc.A.getClass=function isc_ClassFactory_getClass(_1){if(isc.isA.String(_1)){var _2=isc[_1];if(_2&&isc.isA.ClassObject(_2)){return _2}}
+if(isc.isA.ClassObject(_1))return _1;if(isc.isAn.Instance(_1))return _1.$b9;return null}
+,isc.A.newInstance=function isc_ClassFactory_newInstance(_1,_2,_3,_4,_5,_6){var _7=this.getClass(_1);if(_7==null&&isc.isAn.Object(_1)){var _8;for(var i=0;i<arguments.length;i++){var _10=arguments[i];if(_10!=null&&_10._constructor!=null)
+{_8=_10._constructor}}
+_6=_5;_5=_4;_4=_3;_3=_2;_2=_1;_1=_8;if(isc.isA.String(_2.constructor)){if(_1==null)_1=_2.constructor;isc.Log.logWarn("ClassFactory.newInstance() passed an object with illegal 'constructor' "+"property - removing this property from the final object. "+"To avoid seeing this message in the future, "+"specify the object's class using '_constructor'.","ClassFactory");_2.constructor=null}
+_7=this.getClass(_8)}
+if(_7==null){isc.Log.logWarn("newInstance("+_1+"): class not found","ClassFactory");return null}
+return _7.newInstance(_2,_3,_4,_5,_6)}
+,isc.A.$b7=function isc_ClassFactory__getConstructorFunction(_1){var _2=(isc.Browser.isSafari?function(){}:new Function());_2.prototype=_1;return _2}
+,isc.A.addGlobalID=function isc_ClassFactory_addGlobalID(_1,_2,_3){_1.ID=_2||_1.ID;if(_1.ID==null){_1.ID=this.getNextGlobalID(_1);_1.$541=true}
+var _4=this.getWindow();var _5,_6;if(_4[_1.ID]!=null){var _7=isc.isA.Canvas(_4[_1.ID]);if(!_3){isc.Log.logWarn("ClassFactory.addGlobalID: ID:'"+_1.ID+"' for object '"+_1+"' collides with ID of existing object '"+_4[_1.ID]+"'."+(_7?" The pre-existing widget will be destroyed.":" The global reference to this object will be replaced"))}
+if(_7)_4[_1.ID].destroy();if(!_7){if(this.$60l[_2])_5=true;else _6=true}}
+if(!_5){if(_6){try{_4[_1.ID]=_1}catch(e){_5=true}
+if(_4[_1.ID]!=_1){_5=true}}else{_4[_1.ID]=_1}}
+if(_5){var _8=this.getNextGlobalID(_1);isc.logWarn("ClassFactory.addGlobalID: ID specified as:"+_1.ID+". This is a reserved word in Javascript or a native property of the"+" browser window object and can not be used as an ID."+" Setting ID to "+_8+" instead.");_1.ID=_8;_1.$541=true;_4[_1.ID]=_1}
+if(isc.globalsSnapshot)isc.globalsSnapshot.add(_1.ID)}
+,isc.A.getNextGlobalID=function isc_ClassFactory_getNextGlobalID(_1){var _2=_1!=null&&isc.isA.String(_1.Class)?_1.Class:null;return this.getNextGlobalIDForClass(_2)}
+,isc.A.getNextGlobalIDForClass=function isc_ClassFactory_getNextGlobalIDForClass(_1){if(_1){var _2=this.$63v[_1]
+if(_2&&_2.length>0){var _3=_2[_2.length-1];_2.length=_2.length-1;return _3}
+var _4;if(this.$75m[_1]==null)this.$75m[_1]=0;_4=this.$75m[_1]++;var _5=this.$bw;_5[0]=this._$isc_;_5[1]=_1;_5[2]=this.$bv;isc.$bk(_5,_4,3,5);var _6=_5.join(isc.emptyString);return _6}
+return this._$isc_OID_+this.$cb++}
+,isc.A.dereferenceGlobalID=function isc_ClassFactory_dereferenceGlobalID(_1){if(window[_1.ID]==_1){window[_1.ID]=null;if(_1.Class!=null&&_1.$541){this.releaseGlobalID(_1.Class,_1.ID)}}}
+,isc.A.releaseGlobalID=function isc_ClassFactory_releaseGlobalID(_1,_2){if(!this.reuseGlobalIDs)return;var _3=this.$63v[_1];if(!_3)this.$63v[_1]=[_2];else if(_3.length<=this.globalIDClassPoolSize)_3[_3.length]=_2}
+,isc.A.releaseDOMID=function isc_ClassFactory_releaseDOMID(_1){if(!this.reuseDOMIDs||this.$63w.length>this.DOMIDPoolSize)return;this.$63w[this.$63w.length]=_1}
+,isc.A.getDOMID=function isc_ClassFactory_getDOMID(_1,_2){if(!isc.$e||!_1||!_2){var _3=this.$63w.length
+if(_3>0){var _1=this.$63w[_3-1];this.$63w.length=_3-1;return _1}
+var _4=this.$bx++;return this.$cc(_4,this._$isc_)}
+this.$by[0]=_1;this.$by[2]=_2;return this.$by.join(isc.emptyString)}
+,isc.A.$cc=function isc_ClassFactory__convertToBase36(_1,_2){var _3=this.$bz,_4=this.$b0;_4.length=0;if(_2)_4[0]=_2;var _5=3;if(_1>46655){while(Math.pow(36,_5)<=_1)_5+=1}
+while(_1>=36){var _6=_1%36;_4[_5-(_2?0:1)]=_3[_6];_5-=1;_1=Math.floor(_1/ 36)}
+_4[_5-(_2?0:1)]=_3[_1];return _4.join(isc.emptyString)}
+,isc.A.mixInInterface=function isc_ClassFactory_mixInInterface(_1,_2){var _3=this.getClass(_2),_4=this.getClass(_1);if(!_3||!_4)return null;if(!_3.$a5){isc.Log.logWarn("ClassFactory.mixInInterface asked to mixin a class which was not"+" declared as an Interface: "+_2+" onto "+_1);return}
+if(!_4.$cd)_4.$cd=[];else _4.$cd=_4.$cd.duplicate();while(_3){this.$ce(_3,_4,true);this.$ce(_3,_4);_4.$cd[_4.$cd.length]=_2;_3=_3.getSuperClass();if(_3&&!_3.$a5)break}}
+,isc.A.$ce=function isc_ClassFactory__mixInProperties(_1,_2,_3){var _4;if(_3){_4=isc.$a3[_1.Class]}else{_4=isc.$a2[_1.Class];_1=_1.getPrototype();_2=_2.getPrototype()}
+if(_4==null)return;for(var i=0;i<_4.length;i++){var _6=_4[i];if(_2[_6]!=null)continue;var _7=_1[_6];if(isc.isA.String(_7)&&_7==this.TARGET_IMPLEMENTS){var _8=(_3?"Class":"Instance")+" method "+_6+" of Interface "+_1.Class+" must be implemented by "+"class "+_2.Class;_2[_6]=new Function('this.logError("'+_8+'")')}else{_2[_6]=_7}}}
+,isc.A.makePassthroughMethods=function isc_ClassFactory_makePassthroughMethods(_1,_2,_3,_4){if(!_2)_2="parentElement";var _5;if(!_3){_5=this.$cf;if(_5==null){_5=this.$cf=["return this.",,".",,"("+this.$b1+")"]}}else{_5=this.$89q;if(_5==null){_5=this.$89q=["if(this.",,"==null){\n",,"return}\nreturn this.",,".",,"("+this.$b1+")"]}}
+var _6={};for(var i=0;i<_1.length;i++){var _8=_1[i];if(_3){_5[1]=_2;if(_4!=null){var _9={methodName:_8,propName:_2};var _10=_4.evalDynamicString(this,_9);_5[3]="isc.logWarn(\""+_10+"\");"}
+_5[5]=_2;_5[7]=_8}else{_5[1]=_2;_5[3]=_8}
+_6[_8]=new Function(this.$b1,_5.join(isc.emptyString))}
+return _6}
+,isc.A.writePassthroughFunctions=function isc_ClassFactory_writePassthroughFunctions(_1,_2,_3){var _4=this.makePassthroughMethods(_3,_2);_1.addMethods(_4)}
+);isc.B._maxIndex=isc.C+23;isc.A=isc.ClassFactory;isc.A.TARGET_IMPLEMENTS="TARGET_IMPLEMENTS";isc.A.$cb=0;isc.A.classList=[];isc.defineClass=function(_1,_2,_3,_4){return isc.ClassFactory.defineClass(_1,_2,_3,_4)}
+isc.overwriteClass=function(_1,_2,_3,_4){return isc.ClassFactory.overwriteClass(_1,_2,_3,_4)}
+isc.defineInterface=function(_1,_2){return isc.ClassFactory.defineInterface(_1,_2)}
+isc.defer=function(_1){var _2=isc.ClassFactory.getClass(isc.ClassFactory.classList.last()),_3=_2.$cg;isc.Log.logWarn("deferred code being placed on class: "+_2);if(!_3)_2.$cg=[_1];else _3.add(_1)}
+if(!isc.Browser.isSafari){isc.$ch=window;isc.$ci=window.document}
+if(window.isc_enableCrossWindowCallbacks&&isc.Browser.isIE){isc.enableCrossWindowCallbacks=true;Object.$ch=window}
+isc.ClassFactory.defineRootClass('Class');isc.ClassFactory.defaultSuperClass=isc.Class;isc.A=isc.Class;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.addClassMethods=function isc_Class_addClassMethods(){for(var i=0;i<arguments.length;i++)
+isc.addMethods(this,arguments[i])}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.Class;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$cj={};isc.A.dontDup={StringBuffer:true,Action:true,MathFunction:true,JSONEncoder:true};isc.A.$ck={};isc.A.fireOnPauseDelay=200;isc.A.$cl="$cm";isc.A.$cn={};isc.A.$co={};isc.A.useFastEvalWithVars=isc.Browser.isMoz&&isc.Browser.geckoVersion>=20061010;isc.A.$cp="ID";isc.A.getWindow=(isc.Browser.isSafari?function(){return window}:function(){return this.ns.$ch});isc.A.getDocument=(isc.Browser.isSafari?function(){return window.document}:function(){return this.ns.$ci});isc.B.push(isc.A.create=function isc_c_Class_create(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13){var _14=this.createRaw();_14=_14.completeCreation(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13);return _14}
+,isc.A.createRaw=function isc_c_Class_createRaw(){if(!this.initialized())this.init();var _1=new this.$b4.$b5();_1.ns=this.ns;return _1}
+,isc.A.init=function isc_c_Class_init(){var _1=this.getSuperClass();if(_1&&!_1.initialized())_1.init();var _2=this.$cg;if(_2){this.$cg=null;_2.map(eval)}
+if(this.autoDupMethods){isc.Class.duplicateMethods(this,this.autoDupMethods)}
+this.$cj[this.Class]=true}
+,isc.A.duplicateMethods=function isc_c_Class_duplicateMethods(_1,_2){if(_1.Class&&this.dontDup[_1.Class])return;for(var i=0;i<_2.length;i++){var _4=_2[i];this.duplicateMethod(_4,_1)}}
+,isc.A.duplicateMethod=function(methodName,target){if(!target)target=this;var method=target[methodName];if(method==null)return;if(method.$761){while(method.$761)method=method.$761}
+var dup;if(method.toSource==null){dup=eval("dup = "+method.toString())}else{dup=eval(method.toSource())}
+if(!method.$dx)isc.Func.getName(method,true);dup.$dx=method.$dx+"[d]";dup.$761=method;target[methodName]=dup;return dup}
+,isc.A.initialized=function isc_c_Class_initialized(){return this.$cj[this.Class]}
+,isc.A.getClassName=function isc_c_Class_getClassName(){return this.Class}
+,isc.A.getSuperClass=function isc_c_Class_getSuperClass(){return this.$b8}
+,isc.A.getPrototype=function isc_c_Class_getPrototype(){return this.$b4}
+,isc.A.addMethods=function isc_c_Class_addMethods(){if(this.$a5){this.logWarn("Use addInterfaceMethods() to add methods to interface "+this)}
+for(var i=0;i<arguments.length;i++)
+isc.addMethods(this.$b4,arguments[i]);return this.$b4}
+,isc.A.addInterfaceMethods=function isc_c_Class_addInterfaceMethods(){for(var i=0;i<arguments.length;i++)
+isc.addMethods(this.$b4,arguments[i])}
+,isc.A.addInterfaceProperties=function isc_c_Class_addInterfaceProperties(){isc.addPropertyList(this.$b4,arguments)}
+,isc.A.registerStringMethods=function isc_c_Class_registerStringMethods(_1,_2){var _3=this._stringMethodRegistry;if(!this.isOverridden("_stringMethodRegistry")){var _4={},_5=_4.$cq=(_3.$cq?_3.$cq.duplicate():[]);for(var i=0;i<_5.length;i++){_4[_5[i]]=_3[_5[i]]}
+this._stringMethodRegistry=_3=_4}
+if(!isc.isA.String(_1)){var _7=_1;if(!isc.isAn.Object(_7)){this.logWarn("registerStringMethods() called with a bad argument: "+_1);return false}
+for(var _1 in _7){_3[_1]=_7[_1]
+_3.$cq.add(_1)}}else{if(_2==null)_2=null;_3[_1]=_2;_3.$cq.add(_1)}
+return true}
+,isc.A.registerDupProperties=function isc_c_Class_registerDupProperties(_1,_2){if(this.$769==null||this.$769.$bd!=this.getClassName()){if(this.$769!=null){var _3=this.$769;this.$769=this.$769.duplicate();if(_3.$77a!=null){this.$769.$77a=isc.shallowClone(_3.$77a)}}else{this.$769=[]}
+this.$769.$bd=this.getClassName()}
+if(!this.$769.contains(_1)){this.$769.add(_1)}
+if(_2!=null){var _4=this.$769.$77a||{};_4[_1]=_2;this.$769.$77a=_4}}
+,isc.A.isDupProperty=function isc_c_Class_isDupProperty(_1){return this.$769!=null&&this.$769.contains(_1)}
+,isc.A.cloneDupPropertyValue=function isc_c_Class_cloneDupPropertyValue(_1,_2){if(isc.isA.Array(_2)){var _3=[];for(var i=0;i<_2.length;i++){_3[i]=this.cloneDupPropertyValue(_1,_2[i])}
+return _3}
+if(isc.Canvas&&isc.isA.Canvas(_2)){this.logWarn("Default value for property '"+_1+"' is set to a live Canvas (with ID '"+_2.getID()+"') at the Class or AutoChild-defaults level. "+"SmartClient cannot clone a live widget, so each instance of this "+"class may end up pointing to the same live component. "+"To avoid unpredictable behavior and suppress this warning, use the "+"AutoChild subsystem to set up re-usable default properties for sub-components.");return _2}
+var _5=isc.shallowClone(_2);var _6=this.$769;if(_6.$77a!=null&&_6.$77a[_1]!=null&&_5!=null)
+{for(var i=0;i<_6.$77a[_1].length;i++){var _7=_6.$77a[_1][i];if(_5[_7]!=null){_5[_7]=isc.shallowClone(_5[_7])}}}
+return _5}
+,isc.A.evaluate=function isc_c_Class_evaluate(_1,_2,_3){if(!isc.$611)isc.$611=0;isc.$611++;var _4;if(_2){with(_2){if(_3)_4=window.eval(_1)
+else _4=eval(_1)}}else{if(_3)_4=window.eval(_1)
+else _4=eval(_1)}
+if(isc.$611!=null)isc.$611--;if(isc.$611==0)delete isc.$611;return _4}
+,isc.A.addClassProperties=function isc_c_Class_addClassProperties(){isc.addPropertyList(this,arguments);return this}
+,isc.A.markAsFrameworkClass=function isc_c_Class_markAsFrameworkClass(){this.isFrameworkClass=true;this.$b4.isFrameworkClass=true;this.$75y=this.Class;this.$b4.$75y=this.Class}
+,isc.A.addProperties=function isc_c_Class_addProperties(){if(this.$a5){this.logWarn("Use addInterfaceProperties() to add methods to interface "+this)}
+isc.addPropertyList(this.$b4,arguments);return this}
+,isc.A.addPropertyList=function isc_c_Class_addPropertyList(_1){isc.addPropertyList(this.$b4,_1);return this}
+,isc.A.changeDefaults=function isc_c_Class_changeDefaults(_1,_2){var _3=this.$cr(_1),_4=false;var _5=this.getSuperClass();if(_5){var _6=_5.$cr(_1);if(_6!=null&&_6==_3){_3=isc.addProperties({},_3);_4=true}}
+if(_3==null){_3=_2||{};_4=true}else{isc.addProperties(_3,_2)}
+if(_4){var _7={};_7[_1]=_3;this.addProperties(_7)}}
+,isc.A.$cr=function isc_c_Class__getDefaults(_1){var _2=this.$ck[this.Class],_3=this.getInstanceProperty(_1)||(_2?_2[_1]:null);return _3}
+,isc.A.replaceDefaults=function isc_c_Class_replaceDefaults(_1,_2){this.changeDefaults(_1,_2)}
+,isc.A.setProperties=function isc_c_Class_setProperties(){var _1;if(arguments.length==1){_1=arguments[0]}else{_1={};for(var i=0;i<arguments.length;i++){isc.addProperties(_1,arguments[i])}}
+this.$b4.setProperties(_1)}
+,isc.A.isOverridden=function isc_c_Class_isOverridden(_1){return(!(this[_1]===this.$b8[_1]))}
+,isc.A.isA=function isc_c_Class_isA(_1){if(_1==null)return false;if(!isc.isA.String(_1)){_1=_1.Class;if(!isc.isA.String(_1))return false}
+if(isc.startsWith(_1,isc.ClassFactory.$f)){_1=_1.substring(4)}
+var _2=this;while(_2){if(_2.Class==_1)return true;_2=_2.$b8}
+if(this.$cd){for(var i=0;i<this.$cd.length;i++){var _4=isc.ClassFactory.getClass(this.$cd[i]);while(_4){if(_4.Class==_1)return true;_4=_4.$b8}}}
+return false}
+,isc.A.$cs=function isc_c_Class__getNextImplementingSuper(_1,_2,_3,_4){var _5;for(;;){if(_2==null){_5=null;break}
+var _5=isc.Class.$ct(_3,_2);if(_5==null)break;if(_1!=_5){break}
+if(_4){_2=_2.$b8}else{_2=_2.$b9.$b8.$b4}}
+if(_5!=null)return _2;return null}
+,isc.A.Super=function isc_c_Class_Super(_1,_2,_3){if(isc.$cv)arguments.$cw=this;if(this.autoDupMethods&&isc.isAn.Instance(this)){this.duplicateMethod("Super");this.duplicateMethod("invokeSuper")}
+if(_2!=null&&(_2.length==null||isc.isA.String(_2)))_2=[_2];if(_2==null)_2=isc.$ac;this.$cx=_3||_2;this.$85s=_2;this.$cy=isc.Class.$cz(_1,this);this.$c0=true;return this.invokeSuper(null,_1)}
+,isc.A.$ct=function isc_c_Class__getOriginalMethod(_1,_2){var _3=_2[_1];while(_3!=null&&_3.$c1){_3=_2[_3.$c1]}
+if(_3!=null&&_3.$761!=null)_3=_3.$761;return _3}
+,isc.A.invokeSuper=function isc_c_Class_invokeSuper(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10){var _11=this.$bp;var _12=this.$c0;this.$c0=null;var _13=this.$cx;this.$cx=null;var _14=this.$85s;this.$85s=null;var _15;if(_12){_15=this.$cy;this.$cy==null}else{if(_1!=null){_15=_11?_1:_1.$b4}}
+var _16,_17;if(_15==null){_16=isc.Class.$ct(_2,this);_17=_11?this:this.getPrototype()}else{_16=isc.Class.$ct(_2,_15);if(_11){_17=_15.$b8}else{_17=_15.$b9.$b8.$b4}
+if(_13&&_13.callee!=null&&_13.callee!=_16)
+{_16=isc.Class.$ct(_2,this);_17=_11?this:this.getPrototype()}}
+_17=isc.Class.$cs(_16,_17,_2,_11);if(_17==null){if(isc.Log)isc.Log.logWarn("Call to Super for method: "+_2+" failed on: "+this+": couldn't find a superclass implementation of : "+(_15?_15.Class:this.Class)+"."+_2+this.getStackTrace());return null}
+var _18=_17[_2];isc.Class.$c2(_2,_17,this);var _19;if(_12){if(_14!=null||_13!=null){_19=_18.apply(this,_14==null?_13:_14)}else{_19=_18.apply(this)}}else{_19=_18.call(this,_3,_4,_5,_6,_7,_8,_9,_10)}
+isc.Class.$c3(_2,this);return _19}
+,isc.A.$cz=function isc_c_Class__getLastProto(_1,_2){var _3=_2.$c4,_4=_3==null?null:_3[_1];if(isc.isAn.Array(_4))return _4.last();return _4}
+,isc.A.$c3=function isc_c_Class__clearLastProto(_1,_2){var _3=_2.$c4,_4=_3[_1];if(_4==null){return}
+if(!_4.$81d){_3[_1]=null}else{_4.length=Math.max(0,_4.length-1);if(_4.length==0)_3[_1]=null}}
+,isc.A.$c2=function isc_c_Class__addProto(_1,_2,_3){var _4=_3.$c4=_3.$c4||{},_5=_4[_1];if(_5==null){_4[_1]=_2}else{if(isc.isAn.Array(_5))_5.add(_2);else{_4[_1]=[_5,_2];_4[_1].$81d=true}}}
+,isc.A.map=function isc_c_Class_map(_1,_2,_3,_4,_5,_6,_7){if(_1==null)return _2;var _8=[];for(var i=0;i<_2.length;i++){_8.add(this[_1](_2[i],_3,_4,_5,_6,_7))}
+return _8}
+,isc.A.getInstanceProperty=function isc_c_Class_getInstanceProperty(_1){var _2=this.$b4[_1];return _2}
+,isc.A.setInstanceProperty=function isc_c_Class_setInstanceProperty(_1,_2){this.$b4[_1]=_2}
+,isc.A.getArgString=function isc_c_Class_getArgString(_1){var _2=this._stringMethodRegistry[_1];var _3;if(_2!==_3)return _2||isc.emptyString;var _4=this.getInstanceProperty(_1);if(_4==null)return"";return isc.Func.getArgString(_4)}
+,isc.A.fireCallback=function isc_c_Class_fireCallback(_1,_2,_3,_4,_5){arguments.$cw=this;if(_1==null)return;var _6;if(_2==null)_2=_6;var _7=_1;if(isc.isA.String(_1)){if(_4!=null&&isc.isA.Function(_4[_1]))_7=_4[_1];else _7=this.$c5(_1,_2)}else if(isc.isAn.Object(_1)&&!isc.isA.Function(_1)){if(_1.caller!=null)_4=_1.caller;else if(_1.target!=null)_4=_1.target;if(_1.args)_3=_1.args;if(_1.argNames)_2=_1.argNames;if(_1.method)_7=_1.method;else if(_1.methodName&&_4!=null)_7=_4[_1.methodName];else if(_1.action)
+_7=this.$c5(_1.action,_2)}
+if(!isc.isA.Function(_7)){this.logWarn("fireCallback() unable to convert callback: "+this.echo(_1)+" to a function. target: "+_4+", argNames: "+_2+", args: "+_3);return}
+if(_4==null)_4=window;else if(_4.destroyed){if(this.logIsInfoEnabled("callbacks")){this.logInfo("aborting attempt to fire callback on destroyed target:"+_4+". Callback:"+isc.Log.echo(_1)+",\n stack:"+this.getStackTrace())}
+return}
+_7.$c6=true;if(_3==null)_3=[];if(isc.enableCrossWindowCallbacks&&isc.Browser.isIE){var _8=_4.constructor?_4.constructor.$ch:_4;if(_8&&_8!=window&&_8.isc){var _9=_8.Array.newInstance();for(var i=0;i<_3.length;i++)_9[i]=_3[i];_3=_9}}
+var _11;if(!_5||isc.Log.supportsOnError){_11=_7.apply(_4,_3)}else{try{_11=_7.apply(_4,_3)}catch(e){isc.Log.$am(e);throw e;}}
+return _11}
+,isc.A.delayCall=function isc_c_Class_delayCall(_1,_2,_3,_4){if(_4==null)_4=this;if(_3==null)_3=0;return isc.Timer.setTimeout({target:_4,methodName:_1,args:_2},_3)}
+,isc.A.$c5=function isc_c_Class__makeCallbackFunction(_1,_2){if(_2==null){var _3;_2=_3}
+var _4=isc.$aq(_2,_1);_4.$c7=true;return _4}
+,isc.A.fireOnPause=function isc_c_Class_fireOnPause(_1,_2,_3,_4,_5){if(!_1)return;if(!_3)_3=this.fireOnPauseDelay;if(_5==null)_5=this.getClassName();if(!this.$cn[_1]){this.$cn[_1]={}}
+this.$cn[_1][_5]={fireTime:_3,callback:_2,target:_4};var _6=isc.timeStamp(),_7=this.$c8?_6-this.$c8:null;this.$c8=_6;if(_7&&this.$c9!=null&&_3>=(this.$c9-_7))return;if(this.$da)isc.Timer.clearTimeout(this.$da);this.$da=this.delayCall(this.$cl,null,_3);this.$c9=_3}
+,isc.A.$cm=function isc_c_Class__fireActionsOnPause(){var _1;var _2=isc.timeStamp()-this.$c8,_1;for(var _3 in this.$cn){var _4=this.$cn[_3];for(var _5 in _4){var _6=_4[_5];if(_6.fireTime<=_2){this.fireCallback(_6.callback,null,null,_6.target);delete this.$cn[_3][_5]}else{_6.fireTime-=_2;if(_1==null)_1=_6.fireTime;else _1=Math.min(_1,_6.fireTime)}}
+if(isc.isAn.emptyObject(this.$cn[_3]))delete this.$cn[_3]}
+if(_1!=null){this.$c9=_1;this.$c8=isc.timeStamp();this.delayCall(this.$cl,null,_1)}else{this.$c9=null;this.$c8=null}}
+,isc.A.evalWithVars=function isc_c_Class_evalWithVars(_1,_2,_3){if(!_3)_3=window;if(this.useFastEvalWithVars){return this.evaluate.call(_3,_1,_2)}
+var _4="_1";while(_2&&isc.propertyDefined(_2,_4)){_4+="1"}
+var _5=[_4];var _6=[_1];if(_2){for(var _7 in _2){_5.push(_7);_6.push(_2[_7])}}
+var _8=isc.$aq(_5.join(","),"return eval("+_4+")");return _8.apply(_3,_6)}
+,isc.A.evalWithCapture=function isc_c_Class_evalWithCapture(_1,_2,_3){var _4=isc.globalsSnapshot=[];this.evalWithVars(_1,_2,_3);isc.globalsSnapshot=null;return _4}
+,isc.A.destroyGlobals=function isc_c_Class_destroyGlobals(_1){if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){var _3=_1[i];if(window[_3]&&isc.isA.Function(window[_3].destroy))window[_3].destroy();else window[_3]=null}}
+,isc.A.globalEvalWithCapture=function isc_c_Class_globalEvalWithCapture(_1,_2,_3,_4){if(_4==null)_4=true;this.$db=_3;this.$dc=_2;if(isc.Browser.isSafari){_1="isc.Class.$dd();\n"+_1+"\nisc.Class.$de();";window.setTimeout(_1,0);return}
+this.$dd(_3);var _5;try{if(isc.Browser.isIE){window.execScript(_1,"javascript")}else{isc.Class.evaluate(_1,null,true)}}catch(e){if(_4)isc.Log.$am(e);_5=e}
+this.$de(_5)}
+,isc.A.$dd=function isc_c_Class__globalEvalWithCaptureStart(){var _1,_2=this.$db;this.$df={};if(_2){for(var _3 in _2){var _4=window[_3];if(_4!==_1)this.$df[_3]=_4;window[_3]=_2[_3]}}
+isc.globalsSnapshot=[]}
+,isc.A.$de=function isc_c_Class__globalEvalWithCaptureEnd(_1){var _2,_3=this.$db;if(_3){for(var _4 in _3){var _5=this.$df[_4];if(_5!==_2)window[_4]=this.$df[_4];else window[_4]=_2}}
+var _6=this.$dc;var _7=isc.globalsSnapshot;isc.globalsSnapshot=this.$dc=this.$db=this.$df=null;this.fireCallback(_6,["globals","error"],[_7,_1])}
+,isc.A.$dg=function isc_c_Class__notifyFunctionComplete(_1,_2,_3){_3.$dh-=1;if(_3.$dh)return;var _4=false;for(var i=0;i<_3.length;i++){if(_3[i].$di){_4=true;_3.removeItem(i);i--;continue}
+if(_3[i].$dj){delete _3[i].$dj;_4=true}}
+if(_4){if(_3.length==0){var _6=isc.$ah+_2;_1[_2]=_1[_6];delete _1[_6]}else{_1[_2]=_1.$dk(_2,_3)}}}
+,isc.A.getArrayItem=function isc_c_Class_getArrayItem(_1,_2,_3){if(_2==null)return null;if(isc.isA.Number(_1))return _2[_1];if(isc.isAn.Object(_1))return _1;if(isc.isA.String(_1))return _2.find(_3||this.$cp,_1);return null}
+,isc.A.getArrayItemIndex=function isc_c_Class_getArrayItemIndex(_1,_2,_3){if(isc.isA.Number(_1))return _1;var _4=isc.Class.getArrayItem(_1,_2,_3);return _2.indexOf(_4)}
+,isc.A.getDocumentBody=function isc_c_Class_getDocumentBody(_1){var _2=(!_1&&isc.Browser.isIE&&isc.Browser.isStrict);var _3=(_2?this.ns.$dl:this.ns.$dm);if(_3!=null)return _3;var _4=this.getDocument();if(_2){this.ns.$dl=_4.documentElement;return this.ns.$dl}
+if(isc.Browser.isIE){_3=_4.body}else{if(_4.body!=null)_3=_4.body;else{var _5=_4.documentElement.namespaceURI;_3=_4.getElementsByTagNameNS(_5,"body")[0];if(_3==null){_3=_4.documentElement.childNodes[1];if(_3!=null&&_3.tagName!="body")_3=null}
+if(!_3)return null}}
+this.ns.$dm=_3;return _3}
+,isc.A.getActiveElement=function isc_c_Class_getActiveElement(){try{return this.getDocument().activeElement}catch(e){this.logWarn("error accessing activeElement: "+e.message)}
+return null}
+);isc.B._maxIndex=isc.C+54;isc.A=isc.Class;isc.A.newInstance=isc.Class.create;isc.Class.ns=isc;isc.A=isc.ClassFactory;isc.A.ns=isc;isc.A.getWindow=isc.Class.getWindow;isc.A.getDocument=isc.Class.getDocument;isc.A=isc.Class.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.getWindow=(isc.Browser.isSafari?function(){return window}:function(){return this.ns.$ch});isc.A.getDocument=(isc.Browser.isSafari?function(){return window.document}:function(){return this.ns.$ci});isc.A.$dn="_autoMaker";isc.A.$58e="creator";isc.A.$do="show";isc.A.$dp="Constructor";isc.A.$dq="Defaults";isc.A.$dr="Properties";isc.A.map=isc.Class.map;isc.A.Super=isc.Class.Super;isc.A.invokeSuper=isc.Class.invokeSuper;isc.B.push(isc.A.init=function isc_Class_init(){}
+,isc.A.destroy=function isc_Class_destroy(){}
+,isc.A.completeCreation=function isc_Class_completeCreation(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13){if(this.addPropertiesOnCreate!=false){if(isc.captureInitData){var _14={className:this.Class,defaults:isc.addProperties({},_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13)}
+if(!isc.capturedComponents)isc.capturedComponents=[];isc.capturedComponents.add(_14);if(_14.defaults.ID){isc.ClassFactory.addGlobalID(_14,_14.defaults.ID)}
+return _14}
+isc.addProperties(this,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13)}
+var _15=this.getClass(),_16=_15.$769||[];for(var i=0;i<_16.length;i++){var _18=_16[i];if(this[_18]==_15.$b4[_18])
+{this[_18]=_15.cloneDupPropertyValue(_18,this[_18])}}
+this.init(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13);if(this.autoDupMethods){isc.Class.duplicateMethods(this,this.autoDupMethods)}
+return this}
+,isc.A.duplicateMethod=function isc_Class_duplicateMethod(_1){isc.Class.duplicateMethod(_1,this)}
+,isc.A.getUniqueProperties=function isc_Class_getUniqueProperties(_1){if(_1==null)_1={};var _2=this.getPrototype();for(var _3 in this){if(_3.startsWith("_"))continue;if(_3=="ns")continue;if(_3=="ID"&&this.ID.startsWith("isc_OID_"))continue;var _4=this[_3];if(isc.isA.Function(_4))continue;if(_4!=_2[_3]){_1[_3]=this[_3]}}
+return _1}
+,isc.A.clone=function isc_Class_clone(){return this.getClass().create(this.getUniqueProperties())}
+,isc.A.serialize=function isc_Class_serialize(_1){return isc.Comm.serialize(this,_1)}
+,isc.A.xmlSerialize=function isc_Class_xmlSerialize(_1){return isc.Comm.xmlSerialize(this.getClassName(),this,_1)}
+,isc.A.getSerializeableFields=function isc_Class_getSerializeableFields(_1,_2){var _3=isc.DS?isc.DS.getNearestSchema(this):null;var _4=this.getUniqueProperties();if(_3==null){this.logDebug("No schema available for class"+this.getClassName());return _4}else{this.logDebug("Constraining serializeable fields for class: "+this.getClassName()+" with schema : "+_3.ID)}
+var _5=isc.applyMask(_4,_3.getFields());_1=_1||[];_2=_2||[];_1.map(function(_7){delete _5[_7]});for(var i=0;i<_2.length;i++){_5[_2[i]]=this[_2[i]]}
+return _5}
+,isc.A.getID=function isc_Class_getID(){return this.ID}
+,isc.A.getClass=function isc_Class_getClass(){return this.$b9}
+,isc.A.getSuperClass=function isc_Class_getSuperClass(){return this.$b9.$b8}
+,isc.A.getClassName=function isc_Class_getClassName(){return this.getClass().getClassName()}
+,isc.A.getPrototype=function isc_Class_getPrototype(){return this.$76y}
+,isc.A.getGlobalReference=function isc_Class_getGlobalReference(_1){if(typeof _1=="string")return this.evaluate(_1);return _1}
+,isc.A.addMethods=function isc_Class_addMethods(){for(var i=0;i<arguments.length;i++){return isc.addMethods(this,arguments[i])}}
+,isc.A.addProperties=function isc_Class_addProperties(){return isc.addPropertyList(this,arguments)}
+,isc.A.addPropertyList=function isc_Class_addPropertyList(_1){return isc.addPropertyList(this,_1)}
+,isc.A.$ds=function isc_Class__getSetter(_1){var _2="set"+_1.substring(0,1).toUpperCase()+_1.substring(1);return(isc.isA.Function(this[_2])?_2:null)}
+,isc.A.$dt=function isc_Class__getGetter(_1){var _2="get"+_1.substring(0,1).toUpperCase()+_1.substring(1);return(isc.isA.Function(this[_2])?_2:null)}
+,isc.A.setProperty=function isc_Class_setProperty(_1,_2){var _3={};_3[_1]=_2;this.setProperties(_3)}
+,isc.A.setProperties=function isc_Class_setProperties(){var _1=isc.isA,_2,_3={};if(arguments.length<1)return;if(arguments.length==1){_2=arguments[0];if(_2==null)return}else{_2={};for(var i=0;i<arguments.length;i++){isc.addProperties(_2,arguments[i])}}
+for(var _5 in _2){var _6=_2[_5],_7=this.$ds(_5);if(isc.isA.StringMethod(_6))_6=_6.getValue();if(_7){this[_7](_6);if(this.propertyChanged)this.propertyChanged(_5,_6)}else{_3[_5]=_6}}
+this.addProperties(_3)
+if(this.propertyChanged){for(var _5 in _3){this.propertyChanged(_5,_3[_5])}}
+if(this.doneSettingProperties)this.doneSettingProperties(_2)}
+,isc.A.getProperty=function isc_Class_getProperty(_1){var _2=this.$dt(_1);if(_2)return this[_2]();return this[_1]}
+,isc.A.$du=function isc_Class__firstNonNull(_1,_2,_3,_4,_5,_6){return _1!=null?_1:(_2!=null?_2:(_3!=null?_3:(_4!=null?_4:(_5!=null?_5:_6))))}
+,isc.A.isA=function isc_Class_isA(_1){return this.getClass().isA(_1)}
+,isc.A.observe=function isc_Class_observe(_1,_2,_3){if(_1==null){this.logWarn("Invalid observation: Target is not an object. target: "+_1+", methodName: "+_2+", action: '"+_3+"'");return false}
+if(!isc.Func.convertToMethod(_1,_2)){this.logWarn("Invalid observation: property: '"+_2+"' is not a method on "+_1);return false}
+var _4=isc.$a9[_2];if(_1[_4])this.observe(_1,_4,_3)
+var _5=_1[_2],_6;if(isc.isAn.Instance(_1)&&_1.getClass().getInstanceProperty(_2)){_6=_1.getClass().getArgString(_2)}else{_6=isc.Func.getArgString(_5)}
+var _7=_6.split(",");if(!_1.$ba)_1.$ba={};if(!_1.$ba[_2]){var _8=_1.$ba[_2]=[];if(_7.length>0){_8.argStr=_6}}else{var _8=_1.$ba[_2];for(var i=0,_10=_8.length;i<_10;i++){if(_8[i].target==this){if(_8[i].$di){_8[i].$di=false;_8[i].action=_3;return true}
+this.logWarn("Observer: "+this+" is already observing method '"+_2+"' on object '"+_1+"', ignoring");return false}}}
+if(_3==null||isc.is.emptyString(_3)){if(!this[_2]||!this.convertToMethod(_2)){this.logWarn("Invalid Observation - no action specified, and observer: "+this+" has no method '"+_2+"', ignoring");return false}
+_3="it."+_2+"("+_6+")"}
+var _11=_8.$dh;_8.add({target:this,action:_3,$dj:_11});var _12=isc.$ah+_2;if(!_1[_12]){_1[_12]=_5}else if(!_1[_2].$dw){this.logWarn("Observation error: method "+_2+" is being observed on object "+_1+" but the function appears to have "+"been directly overridden. This may lead to unexpected behavior - to avoid "+"seeing this message in the future, ensure the addMethods() or addProperties() "+"API is used to modify methods on live SmartClient instances, rather than simply "+"reassigning the method name to a new function instance.");_1[_12]=_1[_2]}
+if(!_11)_1[_2]=this.$dk(_2,_8);return true}
+,isc.A.$dk=function isc_Class__makeNotifyFunction(_1,_2){var _3=isc.StringBuffer.create();_3.append((isc.$cv?"arguments.$cw=this;":""),"var queue=this.$ba.",_1,";\r","queue.$dh=queue.$dh?queue.$dh+1:1;\r","var returnVal=this.",isc.$ah,_1,"(",(_2.argStr?_2.argStr:""),"),\r","observed=this,observer,it;\r");for(var i=0,_5=_2.length;i<_5;i++){_3.append("if(!queue)return;\r");_3.append("observer=it=queue[",i,"].target;\r");if(isc.isA.String(_2[i].action))_3.append(_2[i].action,";\r");if(isc.isA.Function(_2[i].action)){_3.append("queue[",i,"].action.apply(it, ",(_2.argStr?"'"+_2.argStr+"'":"null"),");\r")}}
+if(isc.Browser.isSafari){_3.append("arguments.callee.$dv.Class.$dg(this,'",_1,"',queue);\r")}else{_3.append("isc.Class.$dg(this,'",_1,"',queue);\r")}
+_3.append("return returnVal;\r");var _6=isc.$aq(_2.argStr,_3);_6.$dw=true;_6.$dx=_1+"Observation";_6.$c1=isc.$ah+_1;if(isc.Browser.isSafari)_6.$dv=isc;return _6}
+,isc.A.ignore=function isc_Class_ignore(_1,_2){var _3;var _4=isc.$a9[_2];if(_4!==_3&&_1[_4])this.ignore(_1,_4);var _5=isc.$ah+_2;if(!_1[_5]||!_1.$ba)return false;var _6=_1.$ba[_2],_7=_6.$dh;for(var i=0,_9=_6.length;i<_9;i++){if(_6[i].target==this){if(_7)
+_6[i].$di=true;else
+_6.removeAt(i);break}}
+if(!_1[_2]||!_1[_2].$dw){this.logWarn("Observation error caught in ignore(): Method "+_2+" was being observed on object "+_1+" but the function appears to have "+"been directly overridden. This may lead to unexpected behavior - to avoid "+"seeing this message in the future, ensure the addMethods() or addProperties() "+"API is used to modify methods on live SmartClient instances, rather than simply "+"reassigning the method name to a new function instance.");_1[_5]=_1[_2]}
+if(_6.length==0){_1[_2]=_1[_5];delete _1[_5];delete _1.$ba[_2]}else{if(!_7){_1[_2]=this.$dk(_2,_6)}}
+return true}
+,isc.A.getObserversOf=function isc_Class_getObserversOf(_1){if(!this.$ba||!this.$ba[_1])return null;var _2=this.$ba[_1];for(var _3=[],i=0;i<_2.length;i++){_3[i]=(_2[i]?_2[i].target:null)}
+return _3}
+,isc.A.isObserving=function isc_Class_isObserving(_1,_2){if(!_1.$ba)return false;var _3=_1.$ba[_2];if(!_3)return false;for(var i=0;i<_3.length;i++){if(_3[i].target==this)return true}
+return false}
+,isc.A.convertToMethod=function isc_Class_convertToMethod(_1){return isc.Func.convertToMethod(this,_1)}
+,isc.A.evaluate=function isc_Class_evaluate(_1,_2){return isc.Class.evaluate.apply(this,[_1,_2])}
+,isc.A.fireCallback=function isc_Class_fireCallback(_1,_2,_3,_4){return this.getClass().fireCallback(_1,_2,_3,this,_4)}
+,isc.A.delayCall=function isc_Class_delayCall(_1,_2,_3){return this.getClass().delayCall(_1,_2,_3,this)}
+,isc.A.fireOnPause=function isc_Class_fireOnPause(_1,_2,_3){return this.getClass().fireOnPause(_1,_2,_3,this,this.getID())}
+,isc.A.evalWithVars=function isc_Class_evalWithVars(_1,_2){return isc.Class.evalWithVars(_1,_2,this)}
+,isc.A.getDocumentBody=function isc_Class_getDocumentBody(){return isc.Class.getDocumentBody()}
+,isc.A.getActiveElement=function isc_Class_getActiveElement(){return isc.Class.getActiveElement()}
+,isc.A.addAutoChildren=function isc_Class_addAutoChildren(_1,_2,_3){if(_1==null)return;if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){var _5=_1[i];if(isc.isA.Canvas(_5)){_2=_2||this;this.$dy(_5,_2,_3);continue}
+this.addAutoChild(_5,null,null,_2,_3)}}
+,isc.A.addAutoChild=function isc_Class_addAutoChild(_1,_2,_3,_4,_5){var _6=this[_1];if(isc.isAn.Instance(_6))return _6;if(isc.isAn.Object(_1)&&_1.autoChildName){_2=_1;_3=_2._constructor||_3;_1=_2.autoChildName}
+if(isc.isA.String(_6)&&window[_6]){this[_1]=window[_6];return this[_1]}
+if(_1!=null&&!this.shouldCreateChild(_1))return;var _7,_8=_1+this.$dn;if(_1!=null&&this[_8])_7=this[_8](_2);else{_7=this.createAutoChild(_1,_2,_3,true)}
+if(!_7)return;this[_1]=_7;this.$dz(_1,_7,_4,_5);return _7}
+,isc.A.$dz=function isc_Class__addToParent(_1,_2,_3,_4){if(_3==null){_3=_2.autoParent||this.getAutoChildParent(_1)}
+if(isc.isA.String(_3)){if(_3==isc.Canvas.NONE){if(this.isDrawn())_2.draw();return}
+var _5=this[_3]||window[_3]||_3;if(!isc.isA.Canvas(_5)){this.logWarn("no valid parent could be found for String '"+_3+"'")}else _3=_5}
+if(!isc.isA.Canvas(_2)||!isc.isA.Canvas(_3))return;this.$dy(_2,_3,_4)}
+,isc.A.$dy=function isc_Class__addAutoChildToParent(_1,_2,_3){if(_1.addAsPeer||_1.snapEdge)_2.addPeer(_1);else if(isc.isA.Layout(_2)&&!_1.addAsChild&&!_1.snapTo)_2.addMember(_1,_3);else if(isc.TileLayout&&isc.isA.TileLayout(_2)&&!_1.addAsChild&&!_1.snapTo)_2.addTile(_1,_3);else _2.addChild(_1)}
+,isc.A.shouldCreateChild=function isc_Class_shouldCreateChild(_1){var _2=this.$do+_1.charAt(0).toUpperCase()+_1.substring(1);if(this[_2]!=null&&this[_2]==false)return false;var _3=this.$d0(_1);if(_3==null)return true;return(this.shouldCreateChild(_3))}
+,isc.A.getAutoChildClass=function isc_Class_getAutoChildClass(_1,_2,_3,_4,_5){_4=_4||this.$d1(_1);var _6=this[_4];_5=_5||this.$543(_1);var _7=this[_5];return this[_1+this.$dp]||(_2?_2._constructor:null)||(_7?_7._constructor:null)||(_6?_6._constructor:null)||_3||isc.Canvas}
+,isc.A.applyBaseDefaults=function isc_Class_applyBaseDefaults(_1,_2,_3){_1.autoDraw=false;_1._generated=true;_1.creator=this;var _4=this.creatorName;if(_4)_1[_4]=this;var _5;if(_3==null||_3.ID===_5){_1.ID=this.getID()+isc.$ag+_2;if(window[_1.ID]){_1.ID=_1.ID+isc.$ag+isc.ClassFactory.getNextGlobalID()}}}
+,isc.A.getDynamicDefaults=function isc_Class_getDynamicDefaults(){}
+,isc.A.$d1=function isc_Class__getDefaultsName(_1){var _2=isc.Class.$d2;if(!_2)isc.Class.$d2=_2={};if(_2[_1])return _2[_1];var _3=_1+this.$dq;if(this[_3])_2[_1]=_3;return _3}
+,isc.A.$543=function isc_Class__getPropertiesName(_1){var _2=isc.Class.$544;if(!_2)isc.Class.$544=_2={};if(_2[_1])return _2[_1];var _3=_1+this.$dr;if(this[_3])_2[_1]=_3;return _3}
+,isc.A.createAutoChild=function isc_Class_createAutoChild(_1,_2,_3,_4){var _5=this.getDynamicDefaults(_1);if(_5!=null&&_2!=null){_5=isc.addProperties({},_5,_2)}else{_5=_2||_5}
+var _6=this.$d1(_1),_7=this[_6],_8=this.$543(_1),_9=this[_8],_10=this.getAutoChildClass(_1,_5,_3,_6,_8),_11=isc.ClassFactory.getClass(_10);if(_11==null){this.logWarn("Unable to create autoChild '"+_1+"' of type '"+_10+"' - no such class in runtime.");return null}
+_5=this.applyDuplicateAutoChildDefaults(_11,_6,_5);var _12=_11.createRaw();var _13=this.autoPassthroughs,_14,_15;if(_13){for(var _16 in _13){var _17=_13[_16];if(_1==_17&&this[_16]!==_15){_12[_16]=this[_16]}}}
+this.applyBaseDefaults(_12,_1,_2);isc.addProperties(_12,this.autoChildDefaults,_7,_14,_5);if(_4)this[_1]=_12;if(_12.autoConfigure)_12.autoConfigure(this,_1);if(this.configureAutoChild)this.configureAutoChild(_12,_1);isc.addProperties(_12,this[_8]);_12.init();if(!this.$542)this.$542={};var _18=_12.getID?_12.getID():null;if(_18!=null){if(!isc.isAn.Array(this.$542[_1])){if(this.$542[_1]!=null){isc.logWarn(this+".createAutoChild(): Creating auto child named:"+_1+" appears to be replacing autoChild with same name...")}
+this.$542[_1]=[_18]}else{this.$542[_1].add(_18)}}
+return _12}
+,isc.A.applyDuplicateAutoChildDefaults=function isc_Class_applyDuplicateAutoChildDefaults(_1,_2,_3){var _4=_1.$769;if(_4&&_4.length>0){var _5=this[_2];if(_5!=null||this.autoChildDefaults!=null){for(var i=0;i<_4.length;i++){var _7=_4[i],_8;if(_5!=null&&_5[_7]!=null){if(_3==null)_3={};if(_3[_7]===_8){_3[_7]=_1.cloneDupPropertyValue(_7,_5[_7])}}else if(this.autoChildDefaults!=null&&this.autoChildDefaults[_7]!=null)
+{if(_3==null)_3={};if(_3[_7]===_8){_3[_7]=_1.cloneDupPropertyValue(_7,this.autoChildDefaults[_7])}}}}}
+return _3}
+,isc.A.$d3=function isc_Class__completeCreationWithDefaults(_1,_2,_3){this.applyBaseDefaults(_2,_1,_3);var _4=this.$d1(_1),_5=this.$543(_1);var _6=_2.getClass();_3=this.applyDuplicateAutoChildDefaults(_6,_4,_3);_2.completeCreation(this.autoChildDefaults,this[_4],_3,this[_5])}
+,isc.A.$d0=function isc_Class__getAutoChildParentName(_1){var _2=this.autoChildParentMap;if(_2)return _2[_1]}
+,isc.A.getAutoChildParent=function isc_Class_getAutoChildParent(_1){var _2=this.$d0(_1);if(_2)return this[_2];return this}
+,isc.A.setAutoChild=function isc_Class_setAutoChild(_1,_2){if(!this.shouldCreateChild(_1)){if(this[_1])this[_1].destroy();delete this[_1]}else{if(isc.isA.Canvas(_2)){var _3=_2;if(this[_1])this[_1].destroy();this[_1]=_3;this.$dz(_1,_3);return}
+return this.addAutoChild(_1,_2)}}
+);isc.B._maxIndex=isc.C+54;isc.Class.toString=function(){return"[Class "+this.Class+"]"}
+isc.Class.getPrototype().toString=function(){return"["+this.Class+" ID:"+this.ID+"]"}
+isc.A=isc.Class;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.ns=isc;isc.A._stringMethodRegistry={};isc.B.push(isc.A.NO_OP=function isc_c_Class_NO_OP(){}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.ClassFactory;isc.A.observe=isc.Class.getPrototype().observe;isc.A.ignore=isc.Class.getPrototype().ignore;isc.A.$dk=isc.Class.getPrototype().$dk;isc.A=isc.Class;isc.A.$dk=isc.Class.getPrototype().$dk;isc.eval=function(_1){return isc.Class.evaluate(_1)}
+Function.prototype.Class="Function";isc.ClassFactory.defineClass("Func");isc.A=isc.Func;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$d5=new RegExp("function\\s+([\\w$]+)\\s*\\(");isc.B.push(isc.A.getName=function isc_c_Func_getName(_1,_2){if(_1==Function.prototype.apply)return"Function.apply";if(_1==Function.prototype.call)return"Function.call";if(_1.$dx==null){if(_1.$bd==null&&isc._allFuncs){var _3=isc._allFuncs.indexOf(_1);if(_3!=-1){for(var _4=isc._funcClasses[_3];_4==null;_3--){_4=isc._funcClasses[_3]}
+_1.$bd=_4}}
+var _5=_1.$bc,_6;if(_5==null&&_1.$bd!=null){var _7;var _8=isc.ClassFactory.getClass(_1.$bd);if(_8==null){_8=isc[_1.$bd]||window[_1.$bd]}else{_7=_8.getPrototype()}
+if(_7!=null){for(var _9 in _7){if(_7[_9]===_1){_5=_9;break}}}
+if(_5==null&&_8!=null){for(var _9 in _8){if(_8[_9]===_1){_5=_9;_6=true;break}}
+if(_5==null&&!isc.isA.Class(_8)&&_8.prototype!=null){for(var _9 in _8.prototype){if(_8.prototype[_9]===_1){_5=_9;break}}}}}
+if(_5!=null){_1.$dx=(_1.$be?(_1.$bf?"[o]":"[a]"):isc.$ad)+(_6?"[c]":isc.$ad)+(_1.$bd?_1.$bd+isc.dot:isc.$ad)+_5}else{if(_1.$c6)_1.$dx="callback";else{var _10=isc.Func.$d5.exec(_1.toString());if(_10)_1.$dx=_10[1];else _1.$dx="anonymous"}}}
+return _1.$dx}
+,isc.A.getArgs=function isc_c_Func_getArgs(_1){var _2=isc.Func.getArgString(_1);if(_2=="")return[];return _2.split(",")}
+,isc.A.getArgString=function isc_c_Func_getArgString(_1){var _2=_1.toString(),_3=_2.substring(_2.indexOf("(")+1,_2.indexOf(")"));return _3}
+,isc.A.getBody=function isc_c_Func_getBody(_1){var _2=_1.toString();return _2.substring(_2.indexOf("{")+1,_2.lastIndexOf("}"))}
+,isc.A.getShortBody=function isc_c_Func_getShortBody(_1){var _2=_1.toString();return _2.substring(_2.indexOf("{")+1,_2.lastIndexOf("}")).replace(/[\r\n\t]*/g,"")}
+);isc.B._maxIndex=isc.C+5;if(!Function.prototype.apply){isc.A=Function.prototype;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.apply=function(targetObject,args){if(targetObject==null)targetObject=window;var tempFunctionName="__TEMPF_"+Function.prototype.$d6++;var returnValue;targetObject[tempFunctionName]=this;if(!args)args=[];if(args.length<=10){returnValue=targetObject[tempFunctionName](args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9])}else{var functionString='targetObject[tempFunctionName](';for(var i=0;i<args.length;i++){functionString+="args"+'['+i+']';if(i+1<args.length){functionString+=','}}
+functionString+=');';isc.eval('returnValue ='+functionString)}
+delete targetObject[tempFunctionName];return returnValue}
+);isc.B._maxIndex=isc.C+1;Function.prototype.$d6=0}
+isc.A=isc.Func;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$d7=[["//","\n"],["//","\\n"],["/*","*/"]];isc.A.$d8=["\"","\'"];isc.A.$d9=["switch","while","if","return","for","var"];isc.A.$ea=["(",")","[","]","{","}",":","?","!","+","-","/","*","=",">","<","|","&",",","\\"];isc.B.push(isc.A.expressionToFunction=function isc_c_Func_expressionToFunction(_1,_2,_3){var _4=this.$eb(_1,_2,_3);return _4}
+,isc.A.$eb=function isc_c_Func__expressionToFunction(_1,_2,_3){if(_2==null){isc.Log.logInfo("makeFunctionExpression() called with empty expression");_2=""}
+if(isc.isAn.Object(_2)){if(isc.isA.StringMethod(_2))_2=_2.getValue();else if(_2.Action&&!_2.target)_2=_2.Action;var _4=_1;if(isc.isA.String(_4))_4=_1.split(",");else if(isc.isAn.Array(_4)){_1=_4.join()}
+if(!isc.isAn.Array(_4))_4=[];var _5=["if (!window.",,"){var message='Component ID \"",,"\", target of action \"",,"\" does not exist';isc.Log.logWarn(message);if(isc.designTime)isc.say(message)}",,".",,"(",,")"];_5[1]=_5[3]=_5[7]=_2.target;_5[9]=_2.name;if(_2.title)_5[5]=_2.title;else _5[5]="[No title specified]"
+var _6=_2.mapping||[];if(!isc.isAn.Array(_6))_6=[];_5[11]=_6.join();var _7=_5.join(isc.emptyString);var _8;try{_8=isc.$aq(_1,_7)}catch(e){this.logWarn("invalid code: "+_7+" generated from action: "+this.echo(_2));_8=new Function()}
+_8.iscAction=_2;return _8}
+var _9="swirfv";if(isc.isAn.Array(_1)){_1=_1.join()}
+var _10=true;var i=0;var _12=this.$d7;var _13=this.$d8;var _14=this.$d9;var _15=this.$ea;var _16=false;var _17=isc.$ad,_18=isc.slash,_19="\n",_20="\\",_21="+",_22=isc.semi;var _23=_17;var _24=_17;while(i<_2.length){var _25=_2.charAt(i);if(_25==_18){for(var j=0;j<_12.length;j++){var _27=_12[j],_28=_27[0],_29=_27[1];if(_2.indexOf(_28,i)==i){var k=i+_28.length;while(k<_2.length){if(_2.substring(k,k+_29.length)==_29){k=k+_29.length;break}
+k++}
+i=k;_23=_17;_24=this.$ec(_2,i)}}}
+if(_16){if(_24==_17){break}else{if(isc.isA.WhitespaceChar(_25)){i++;continue}else{_10=false;break}}}
+for(var j=0;j<_13.length;j++){var _31=_13[j]
+if(_25==_31){var k=i+1;while(k<_2.length){if(_2.charAt(k)==_20)k=k+2;if(_2.charAt(k)==_31){k++;break}
+k++}
+i=k;_23=_31.charAt(0);_24=this.$ec(_2,i)}}
+if(_25==_19){var _32=false;for(var j=0;j<_15.length;j++){if(_23==_15[j]){_32=true;break}}
+if(_32||_24==_21){_23=_17}else{_10=false;break}}
+if(_25==_22){_16=true}
+if(_9.indexOf(_25)!=-1){for(var j=0;j<_14.length;j++){var _33=_14[j],_34=_33.length;if((i+_34<=_2.length)&&(_2.substring(i,i+_34)==_33)&&(i+_34==_2.length||!isc.isA.AlphaNumericChar(_2.charAt(i+_34)))&&(i==0||!isc.isA.AlphaNumericChar(_2.charAt(i-1)))){_10=false;break}}}
+if(!isc.isA.WhitespaceChar(_25))_23=_25;i++;_24=this.$ec(_2,i)}
+if(_10){_2="return "+_2}
+if(_3)_2="//"+_3+"\r\n"+_2;var _8=isc.$aq(_1,_2);return _8}
+,isc.A.$ec=function isc_c_Func__getNextNonWhitespaceChar(_1,_2){var _3=isc.$ad;for(var j=(_2+1);j<_1.length;j++){if(!isc.isA.WhitespaceChar(_1.charAt(j))){_3=_1.charAt(j);break}}
+if(j>=_1.length)_3=isc.$ad;return _3}
+,isc.A.convertToMethod=function isc_c_Func_convertToMethod(_1,_2){if(!isc.isAn.Object(_1)||!isc.isA.nonemptyString(_2)){isc.Log.logWarn("convertToMethod() called with bad parameters. Cannot convert "+" property '"+_2+"' on object "+_1+" to a function. Returning false.");return false}
+if(_1[_2]&&isc.isA.Function(_1[_2]))return true;var _3=(isc.isAn.Instance(_1)?_1.getClass()._stringMethodRegistry:_1._stringMethodRegistry);if(_3==null)return false;var _4;var _5=_3[_2];if(_5===_4)return false;isc.Func.replaceWithMethod(_1,_2,_5);return true}
+,isc.A.replaceWithMethod=function isc_c_Func_replaceWithMethod(_1,_2,_3,_4){if(_1[_2]==null){_1[_2]=isc.is.emptyString(_3)?isc.Class.NO_OP:new Function(_3,isc.$ad)}
+var _5=_1[_2];if(isc.isA.Function(_5))return;var _6;if(isc.isA.String(_5)||isc.isA.Object(_5)){_6=isc.Func.expressionToFunction(_3,_5,_4)}else{isc.Log.logWarn("Property '"+_2+"' on object "+_1+" is of type "+typeof _5+". This can not be converted to a method.","Function");return}
+var _7={};_7[_2]=_6;isc.addMethods(_1,_7)}
+);isc.B._maxIndex=isc.C+5;Array.prototype.Class="Array";Array.newInstance=function(){var _1=[];isc.addPropertyList(_1,arguments);return _1}
+Array.create=Array.newInstance;Array.LOADING="loading";Array.isLoading=function(_1){return _1!=null&&!isc.isAn.XMLNode(_1)&&(_1===Array.LOADING)}
+Array.CASE_INSENSITIVE=function(_1,_2,_3){if(isc.isA.String(_1)&&isc.isA.String(_2)&&_1.toLowerCase()==_2.toLowerCase()){return true}else{return _1==_2}}
+Array.DATE_VALUES=function(_1,_2,_3){if(isc.isA.Date(_1)&&isc.isA.Date(_2)&&Date.compareLogicalDates(_1,_2)==0){return true}else{return _1==_2}}
+Array.DATETIME_VALUES=function(_1,_2,_3){if(isc.isA.Date(_1)&&isc.isA.Date(_2)&&Date.compareDates(_1,_2)==0){return true}else{return _1==_2}}
+if(!Array.prototype.localeStringFormatter)
+Array.prototype.localeStringFormatter="toString";isc.A=Array.prototype;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.newInstance=Array.newInstance;isc.A.create=Array.newInstance;isc.A.slice=(Array.prototype.slice?Array.prototype.slice:function(_1,_2){if(_2==null)_2=this.length;for(var _3=[],l=this.length;_1<_2&&_1<l;_1++)
+_3[_3.length]=this[_1];return _3});isc.A.observe=isc.Class.getPrototype().observe;isc.A.ignore=isc.Class.getPrototype().ignore;isc.A.$dk=isc.Class.getPrototype().$dk;isc.B.push(isc.A.iscToLocaleString=function isc_Arra_iscToLocaleString(){return this[this.localeStringFormatter]()}
+,isc.A.getPrototype=function isc_Arra_getPrototype(){return Array.prototype}
+,isc.A.get=function isc_Arra_get(_1){return this[_1]}
+,isc.A.getLength=function isc_Arra_getLength(){return this.length}
+,isc.A.isEmpty=function isc_Arra_isEmpty(){return this.getLength()==0}
+,isc.A.first=function isc_Arra_first(){return this[0]}
+,isc.A.last=function isc_Arra_last(){return this[this.length-1]}
+,isc.A.indexOf=function isc_Arra_indexOf(_1,_2,_3){if(_2==null)_2=0;if(_3==null)_3=this.length-1;for(var i=_2;i<=_3;i++)
+if(this[i]==_1)return i;return-1}
+,isc.A.lastIndexOf=function isc_Arra_lastIndexOf(_1,_2,_3){if(_2==null)_2=this.length-1;if(_3==null)_3=0;for(var i=_2;i>=_3;i--)
+if(this[i]==_1)return i;return-1}
+,isc.A.contains=function isc_Arra_contains(_1,_2){return(this.indexOf(_1,_2)!=-1)}
+,isc.A.containsAll=function isc_Arra_containsAll(_1){if(_1==null)return true;var _2=_1.getLength();for(var i=0;i<_2;i++){if(!this.contains(_1.get(i)))return false}
+return true}
+,isc.A.intersect=function isc_Arra_intersect(){var _1=[];for(var i=0;i<this.length;i++){var _3=this.get(i),_4=true;if(_3==null)continue;for(var a=0;a<arguments.length;a++){if(!arguments[a].contains(_3)){_4=false;break}}
+if(_4)_1.add(_3)}
+return _1}
+,isc.A.equals=function isc_Arra_equals(_1){if(_1==null||!isc.isA.List(_1))return false;var _2=_1.getLength();if(_2!=this.getLength())return false;for(var i=0;i<_2;i++){if(_1.get(i)!=this.get(i))return false}
+return true}
+,isc.A.getItems=function isc_Arra_getItems(_1){var _2=[],_3=_1.getLength();for(var i=0;i<_3;i++){_2[i]=this.get(_1.get(i))}
+return _2}
+,isc.A.getRange=function isc_Arra_getRange(_1,_2){if(_2==null)_2=this.length-1;return this.slice(_1,_2)}
+,isc.A.duplicate=function isc_Arra_duplicate(){return isc.$ac.concat(this)}
+,isc.A.set=function isc_Arra_set(_1,_2){this[_1]=_2;this.dataChanged()}
+,isc.A.addAt=function isc_Arra_addAt(_1,_2){if(_2==null)_2=0;for(var i=this.length-1;i>=_2;i--){this[i+1]=this[i]}
+this[_2]=_1;this.dataChanged();return _1}
+,isc.A.removeAt=function isc_Arra_removeAt(_1){var _2=this.length;if(_1>=_2||_1<0)return null;var _3=this[_1];for(;_1<_2-1;_1++)
+this[_1]=this[_1+1];this.length--;this.dataChanged();return _3}
+,isc.A.add=function isc_Arra_add(_1,_2){var _3;if(_2!==_3){return this.addAt(_1,_2)}
+var _4;if(this.sortUnique){_4=this.indexOf(_1);if(_4==-1)_4=this.length}else{_4=this.length}
+this[_4]=_1;if(this.sortProps&&this.sortProps.length>0){this.sortByProperties(this.sortProps,this.sortDirections,this.sortNormalizers)}
+this.dataChanged();return _1}
+,isc.A.addList=function isc_Arra_addList(_1,_2,_3){if(_1==null)return null;this.$ed();if(_2==null)_2=0;if(_3==null)_3=_1.getLength();for(var _4=_2;_4<_3;_4++){this.add(_1.get(_4))}
+this.$ee();return _1}
+,isc.A.setLength=function isc_Arra_setLength(_1){this.length=_1}
+,isc.A.addListAt=function isc_Arra_addListAt(_1,_2){if(_1==null)return null;for(var i=this.length-1,l=_1.length;i>=_2;i--){this[i+l]=this[i]}
+for(i=0;i<l;i++){this[i+_2]=_1[i]}
+this.dataChanged();return _1}
+,isc.A.remove=function isc_Arra_remove(_1){var _2=this.indexOf(_1);if(_2==-1)return false;for(var i=_2;i<this.length;i++)this[i]=this[i+1];this.length=this.length-1;this.dataChanged();return true}
+,isc.A.removeList=function isc_Arra_removeList(_1){if(_1==null)return null;for(var _2=[],i=0,l=this.length;i<l;i++){if(!_1.contains(this[i]))_2.add(this[i])}
+this.setArray(_2);return _1}
+,isc.A.removeEvery=function isc_Arra_removeEvery(_1){this.removeList([_1]);return this}
+,isc.A.$ed=function isc_Arra__startChangingData(){var _1;if(this.$ef===_1)this.$ef=0;this.$ef++}
+,isc.A.$ee=function isc_Arra__doneChangingData(){if(--this.$ef==0)this.dataChanged()}
+,isc.A.dataChanged=function isc_Arra_dataChanged(){if(this.onDataChanged)this.onDataChanged()}
+,isc.A.$52z=function isc_Arra__isChangingData(){return(this.$ef!=null&&this.$ef>0)}
+,isc.A.setArray=function isc_Arra_setArray(_1){this.setLength(_1.length);for(var i=0;i<_1.length;i++)this[i]=_1[i];this.dataChanged()}
+,isc.A.addAsList=function isc_Arra_addAsList(_1){if(!isc.isAn.Array(_1))_1=[_1];return this.addList(_1)}
+,isc.A.removeRange=function isc_Arra_removeRange(_1,_2){var _3;if(_1===_3)return this;if(!isc.isA.Number(_1))_1=0;if(!isc.isA.Number(_2))_2=this.length;return this.splice(_1,_2-_1)}
+,isc.A.removeWhere=function isc_Arra_removeWhere(_1,_2){for(var i=0,_4=[];i<this.length;i++){if(!this[i]||this[i][_1]!=_2){_4.add(this[i])}}
+this.setArray(_4)}
+,isc.A.removeUnless=function isc_Arra_removeUnless(_1,_2){for(var i=0,_4=[];i<this.length;i++){if(this[i]&&this[i][_1]==_2){_4.add(this[i])}}
+this.setArray(_4)}
+,isc.A.removeEmpty=function isc_Arra_removeEmpty(_1,_2){for(var i=0,_4=[];i<this.length;i++){if(this[i]!=null){_4.add(this[i])}}
+this.setArray(_4)}
+,isc.A.getProperty=function isc_Arra_getProperty(_1){for(var _2=[],i=0,l=this.length;i<l;i++)
+_2[_2.length]=(this[i]?this[i][_1]:null);return _2}
+,isc.A.getValueMap=function isc_Arra_getValueMap(_1,_2){var _3={};for(var i=0,l=this.getLength();i<l;i++){var _6=this.get(i);if(!isc.isAn.Object(_6))continue;if(_6&&_6[_1]!=null){_3[_6[_1]]=_6[_2]}}
+return _3}
+,isc.A.map=function isc_Arra_map(_1,_2,_3,_4,_5,_6){var _7=isc.isA.Function(_1),_8=[],_9=this.getLength();var _10,_11=_7&&(_2===_10||isc.isAn.Object(_2))&&_3===_10&&_4===_10&&_5===_10&&_6===_10;for(var i=0;i<_9;i++){var _13=this.get(i);if(_11){if(_2==null)_8[i]=_1(_13,i,this);else{_2.$838=_1;_8[i]=_2.$838(_13,i,this);delete _2.$838}}else if(_7){_8[i]=_1(_13,_2,_3,_4,_5,_6)}else{_8[i]=(_13&&_13[_1]!=null?_13[_1](_2,_3,_4,_5,_6):null)}}
+return _8}
+,isc.A.setProperty=function isc_Arra_setProperty(_1,_2){for(var i=0,l=this.length;i<l;i++)
+if(this[i])this[i][_1]=_2}
+,isc.A.clearProperty=function isc_Arra_clearProperty(_1){var _2=false,_3;for(var i=0,l=this.length;i<l;i++){_2=_2||this[i]!==_3;if(this[i])delete this[i][_1]}
+return _2}
+,isc.A.getProperties=function isc_Arra_getProperties(_1){return isc.applyMask(this,_1)}
+,isc.A.getUniqueItems=function isc_Arra_getUniqueItems(){for(var _1=[],i=0,l=this.length;i<l;i++){if(!_1.contains(this[i]))_1[_1.length]=this[i]}
+return _1}
+,isc.A.findIndex=function isc_Arra_findIndex(_1,_2,_3){return this.findNextIndex(0,_1,_2,null,_3)}
+,isc.A.findNextIndex=function isc_Arra_findNextIndex(_1,_2,_3,_4,_5){if(_1==null)_1=0;else if(_1>=this.length)return-1;if(_4==null)_4=this.length-1;if(_2==null)return-1;if(isc.isA.String(_2)){if(_5){for(var i=_1;i<=_4;i++){if(this[i]&&_5(this[i][_2],_3,_2))return i}}else{for(var i=_1;i<=_4;i++){if(this[i]&&this[i][_2]==_3)return i}}
+return-1}else if(isc.isA.Function(_2)){for(var i=_1;i<=_4;i++){if(_2(this[i]))return i}
+return-1}else{return this.findNextMatch(_2,_1,_4,_5)}}
+,isc.A.findAllIndices=function isc_Arra_findAllIndices(_1,_2,_3){var _4=[];var _5=0;var _6;do{_6=this.findNextIndex(_5,_1,_2,null,_3);if(_6!=-1){_4.add(_6);_5=_6+1}}while(_6!=-1);return _4}
+,isc.A.findNextMatch=function isc_Arra_findNextMatch(_1,_2,_3,_4){var _5=isc.getKeys(_1);if(_4){for(var i=_2;i<=_3;i++){var _7=this.get(i);if(!_7)continue;var _8=true;for(var j=0;j<_5.length;j++){var _10=_5[j];if(!_4(_7[_10],_1[_10],_10)){_8=false;break}}
+if(_8)return i}}else{for(var i=_2;i<=_3;i++){var _7=this.get(i);if(!_7)continue;var _8=true;for(var j=0;j<_5.length;j++){var _10=_5[j];if(_7[_10]!=_1[_10]){_8=false;break}}
+if(_8)return i}}
+return-1}
+,isc.A.find=function isc_Arra_find(_1,_2,_3){var _4=this.findIndex(_1,_2,_3);return(_4!=-1)?this.get(_4):null}
+,isc.A.findByKeys=function isc_Arra_findByKeys(_1,_2,_3,_4){if(_1==null){isc.Log.logWarn("findByKeys: passed null record");return-1}
+var _5={},_6=_2.getPrimaryKeyFields(),_7=false;for(var _8 in _6){_7=true;if(_1[_8]==null){isc.Log.logWarn("findByKeys: passed record does not have a value for key field '"+_8+"'");return-1}
+_5[_8]=_1[_8]}
+if(!_7){isc.Log.logWarn("findByKeys: dataSource '"+_2.ID+"' does not have primary "+"keys declared, can't find record");return-1}
+return this.findNextIndex(_3,_5,null,_4)}
+,isc.A.containsProperty=function isc_Arra_containsProperty(_1,_2){var _3=this.findIndex(_1,_2);return(_3!=-1)}
+,isc.A.findAll=function isc_Arra_findAll(_1,_2){if(_1==null)return null;if(isc.isA.String(_1)){var _3=null,l=this.length;var _5=isc.isAn.Array(_2);for(var i=0;i<l;i++){var _7=this[i];if(_7&&(_5?_2.contains(_7[_1]):_7[_1]==_2)){if(_3==null)_3=[];_3.add(_7)}}
+return _3}else if(isc.isA.Function(_1)){var _3=null,l=this.length,_8=_1,_9=_2;for(var i=0;i<l;i++){var _7=this[i];if(_8(_7,_9)){if(_3==null)_3=[];_3.add(_7)}}
+return _3}else{return this.findAllMatches(_1)}}
+,isc.A.findAllMatches=function isc_Arra_findAllMatches(_1){var l=this.getLength(),_3=isc.getKeys(_1),_4=null;for(var i=0;i<l;i++){var _6=this.get(i);if(!_6)continue;var _7=true;for(var j=0;j<_3.length;j++){var _9=_3[j];if(_6[_9]!=_1[_9]){_7=false;break}}
+if(_7){if(_4==null)_4=[];_4.add(_6)}}
+return _4}
+,isc.A.slide=function isc_Arra_slide(_1,_2){this.slideRange(_1,_1+1,_2)}
+,isc.A.slideRange=function isc_Arra_slideRange(_1,_2,_3){var _4=this.splice(_1,_2-_1);this.addListAt(_4,_3)}
+,isc.A.slideList=function isc_Arra_slideList(_1,_2){var _3=[],i;if(_2<0)_2=0;for(i=0;i<_2;i++)
+if(!_1.contains(this[i]))
+_3.add(this[i]);for(i=0;i<_1.length;i++)
+_3.add(_1[i]);for(i=_2;i<this.length;i++)
+if(!_1.contains(this[i]))
+_3.add(this[i]);this.setArray(_3)}
+,isc.A.makeIndex=function isc_Arra_makeIndex(_1,_2,_3){var _4={};var _5=(_2==-1);_2=(_2!=null&&_2!=0);for(var i=0;i<this.length;i++){var _7=this[i],_8=_7[_1];if(_8==null){if(!_3)continue;_8=i}
+if(_5){_4[_8]=_7;continue}
+var _9=_4[_8];if(_9==null){if(_2){_4[_8]=[_7]}else{_4[_8]=_7}}else{if(_2){_4[_8].add(_7)}else{if(isc.isAn.Array(_9)){_4[_8].add(_7)}else{_4[_8]=[_9,_7]}}}}
+return _4}
+,isc.A.arraysToObjects=function isc_Arra_arraysToObjects(_1){var _2=_1.length;for(var _3=[],i=0,l=this.length;i<l;i++){var _6=_3[i]={};for(var p=0;p<_2;p++){var _8=_1[p];_6[_8]=this[i][p]}}
+return _3}
+,isc.A.objectsToArrays=function isc_Arra_objectsToArrays(_1){var _2=_1.length;for(var _3=[],i=0,l=this.length;i<l;i++){var _6=_3[i]=[];for(var p=0;p<_2;p++){var _8=_1[p];_6[p]=this[i][_8]}}
+return _3}
+,isc.A.spliceArray=function isc_Arra_spliceArray(_1,_2,_3){var _4;if(_1===_4)return this.splice();if(_2===_4)return this.splice(_1);if(_3===_4)return this.splice(_1,_2);if(!isc.isAn.Array(_3)){isc.Log.logWarn("spliceArray() method passed a non-array third parameter. Ignoring...","Array");return this.splice(_1,_2)}
+return this.splice.apply(this,[_1,_2].concat(_3))}
+,isc.A.peek=function isc_Arra_peek(){var _1=this.pop();this.push(_1);return _1}
+,isc.A.removeItem=function isc_Arra_removeItem(_1){return this.removeAt(_1)}
+,isc.A.getItem=function isc_Arra_getItem(_1){return this.get(_1)}
+,isc.A.setItem=function isc_Arra_setItem(_1){return this.set(_1)}
+,isc.A.clearAll=function isc_Arra_clearAll(_1){return this.removeList(this)}
+,isc.A.size=function isc_Arra_size(){return this.getLength()}
+,isc.A.subList=function isc_Arra_subList(_1,_2){return this.getRange(_1,_2)}
+,isc.A.addAll=function isc_Arra_addAll(_1){return this.addList(_1)}
+,isc.A.removeAll=function isc_Arra_removeAll(_1){var _2=this.getLength();this.removeList(_1);return this.getLength()!=_2}
+,isc.A.clear=function isc_Arra_clear(){this.setLength(0)}
+,isc.A.toArray=function isc_Arra_toArray(){return this.duplicate()}
+);isc.B._maxIndex=isc.C+70;Number.prototype.Class="Number";isc.A=Number.prototype;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.stringify=function isc_Numbe_stringify(_1,_2){if(!_1)_1=2;var _3=this.toString(),_4=_1-_3.length;if(_2){var _5=_3.indexOf(isc.dot);if(_5!=-1){_4+=(_3.length-_5)}}
+var _6=Number.$eg(_4);if(_6==null)return _3;return _6+_3}
+,isc.A.toCurrencyString=function isc_Numbe_toCurrencyString(_1,_2,_3,_4){var _5=this<0?Math.ceil(this):Math.floor(this),_6=Math.abs(Math.round((this-_5)*100)),_7=isc.StringBuffer.create();if(!isc.isA.String(_1))_1="$";if(!isc.isA.nonemptyString(_2))_2=".";if(_3==null)_3=true;if(_4!=true)_7.append(_1);_7.append(_5.stringify(1));if(_3){_7.append(_2);_7.append(_6.stringify(2))}else if(_6!=0){_7.append(_2);if(_6%10==0)_7.append(_6/ 10);else _7.append(_6.stringify(2))}
+if(_4==true)_7.append(_1);return _7.toString()}
+);isc.B._maxIndex=isc.C+2;isc.A=Number;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A._1zero="0";isc.A._2zero="00";isc.A._3zero="000";isc.A._4zero="0000";isc.B.push(isc.A.setStandardFormatter=function isc_Number_setStandardFormatter(_1){if(isc.isA.Function(Number.prototype[_1]))
+Number.prototype.formatter=_1}
+,isc.A.setStandardLocaleStringFormatter=function isc_Number_setStandardLocaleStringFormatter(_1){if(isc.isA.Function(Number.prototype[_1]))
+Number.prototype.localeStringFormatter=_1}
+,isc.A.$eg=function isc_Number__getZeroString(_1){if(_1<=0)return;var _2;while(_1>4){if(_2==null)_2=this._4zero;else _2+=this._4zero;_1-=4}
+var _3;switch(_1){case 4:_3=this._4zero;break;case 3:_3=this._3zero;break;case 2:_3=this._2zero;break;case 1:_3=this._1zero;break}
+if(_2==null)return _3;return _2+_3}
+);isc.B._maxIndex=isc.C+3;if(!Number.prototype.formatter)Number.prototype.formatter="toString";if(!Number.prototype.localeStringFormatter)
+Number.prototype.localeStringFormatter="toString";isc.A=Number.prototype;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.localeProperties={decimalSymbol:".",groupingSymbol:",",negativeSymbol:"-",currencySymbol:"$",negativeFormat:1,groupingFormat:1};isc.A.$eh=".";isc.B.push(isc.A.iscToLocaleString=function isc_Numbe_iscToLocaleString(){return this[this.localeStringFormatter]()}
+,isc.A.toFormattedString=function isc_Numbe_toFormattedString(_1){return this[(_1?_1:this.formatter)]()}
+,isc.A.toLocalizedString=function isc_Numbe_toLocalizedString(_1,_2,_3,_4){var _5=!_1?this:Math.round(this*Math.pow(10,_1))/Math.pow(10,_1);var _6=Math.abs(_5),_7=Math.floor(_6),_8,_9,_10=[];if(_1){var _11=Math.round((_6-_7)*Math.pow(10,_1));_9=_11.stringify(_1)}else if(_1==0){_7=Math.round(_6)}else{if(_6-_7>0){var _12=_6.toString();_9=_12.substring(_12.indexOf(this.$eh)+1)}}
+_8=_7.toString();var _13=_8.length;var _14=Math.floor(_13/ 3);if(_13%3){_10[0]=_8.substr(0,_13%3)}
+for(var i=0;i<_14;i++){_10[_10.length]=_8.substr(_13%3+i*3,3)}
+var _16=_10.join(_3||this.localeProperties.groupingSymbol);if(_9)_16=_16+(_2||this.localeProperties.decimalSymbol)+_9;if(_5<0)_16=(_4||this.localeProperties.negativeSymbol)+_16;return _16}
+,isc.A.toUSString=function isc_Numbe_toUSString(_1){return this.toLocalizedString(_1)}
+,isc.A.toUSDollarString=function isc_Numbe_toUSDollarString(_1){return this.localeProperties.currencySymbol+this.toLocalizedString(_1)}
+);isc.B._maxIndex=isc.C+5;isc.defineClass("Format");isc.A=isc.Format;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.toUSString=function isc_c_Format_toUSString(_1,_2){if(!isc.isA.Number(_1))return _1;return _1.toUSString(_2)}
+,isc.A.toUSDollarString=function isc_c_Format_toUSDollarString(_1,_2){if(!isc.isA.Number(_1))return _1;return _1.toUSDollarString(_2)}
+,isc.A.toCurrencyString=function isc_c_Format_toCurrencyString(_1,_2,_3,_4,_5){if(!isc.isA.Number(_1))return _1;return _1.toCurrencyString(_2,_3,_4,_5)}
+);isc.B._maxIndex=isc.C+3;isc.Math={random:function(_1,_2){if(_2==null){return Math.round(Math.random()*_1)}else{return Math.round(Math.random()*(_2-_1))+_1}}}
+isc.defineClass("DateUtil");isc.addGlobal("timeStamp",function(){return new Date().getTime()});isc.addGlobal("timestamp",isc.timeStamp);Date.prototype.Class="Date";Date.Class="Date";isc.Date=Date;isc.A=Date;isc.A.INVALID_DATE_STRING="Invalid date format";isc.A=Date;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$64g={toUSShortDate:"MDY",toUSShortDateTime:"MDY",toUSShortDatetime:"MDY",toEuropeanShortDate:"DMY",toEuropeanShortDateTime:"DMY",toEuropeanShortDatetime:"DMY",toJapanShortDate:"YMD",toJapanShortDateTime:"YMD",toJapanShortDatetime:"YMD"};isc.B.push(isc.A.newInstance=function isc_Date_newInstance(_1,_2,_3,_4,_5,_6,_7){return new Date(_1,_2,_3,_4,_5,_6,_7)}
+,isc.A.create=function isc_Date_create(_1,_2,_3,_4,_5,_6,_7){var _8;if(_1===_8)return new Date();if(_2===_8)return new Date(_1);if(_3===_8)_3=0;if(_4===_8)_4=0;if(_5===_8)_5=0;if(_6===_8)_6=0;if(_7===_8)_7=0;return new Date(_1,_2,_3,_4,_5,_6,_7)}
+,isc.A.createLogicalDate=function isc_Date_createLogicalDate(_1,_2,_3,_4){var d=new Date();d.setHours(12);d.setMinutes(0);d.setSeconds(0);d.setMilliseconds(0);if(_3!=null)d.setDate(1);if(_1!=null)d.setYear(_1);if(_2!=null)d.setMonth(_2);if(_3!=null)d.setDate(_3);if(_4){var _6=(d.getFullYear()==_1&&d.getMonth()==_2&&d.getDate()==_3);if(!_6)return null}
+d.logicalDate=true;return d}
+,isc.A.createLogicalTime=function isc_Date_createLogicalTime(_1,_2,_3,_4){return isc.Time.createLogicalTime(_1,_2,_3,_4)}
+,isc.A.createDatetime=function isc_Date_createDatetime(_1,_2,_3,_4,_5,_6,_7,_8){var _9=_4!=null,_10=_5!=null,_11=_6!=null;if(isc.isA.String(_4))_4=parseInt(_4||12,10);if(isc.isA.String(_5))_5=parseInt(_5||0,10);if(isc.isA.String(_6))_6=parseInt(_6||0,10);var _12;if(!isc.Time.$854){_12=new Date(_1,_2,_3);if(_9){if(_4!=null)_12.setHours(_4);if(_5!=null)_12.setMinutes(_5);if(_6!=null)_12.setSeconds(_6);if(_7!=null)_12.setMilliseconds(_7)}
+if(!_8)return _12;var _13=(_12.getFullYear()==_1&&_12.getMonth()==_2&&_12.getDate()==_3&&(!_9||_12.getHours()==_4)&&(!_10||_12.getMinutes()==_5)&&(!_11||_12.getSeconds()==_6));return(_13?_12:null)}else{if(_4==null)_4=0;if(_5==null)_5=0;if(_6==null)_6=0;if(_7==null)_7=0;_12=new Date(Date.UTC(_1,_2,_3,_4,_5,_6,_7));if(_8){var _13=(_12.getUTCFullYear()==_1&&_12.getUTCMonth()==_2&&_12.getUTCDate()==_3&&(!_9||_12.getUTCHours()==_4)&&(!_10||_12.getUTCMinutes()==_5)&&(!_11||_12.getUTCSeconds()==_6));if(!_13)_12=null}
+if(_12!=null){_12.$68d(-isc.Time.getUTCHoursDisplayOffset(_12),-isc.Time.getUTCMinutesDisplayOffset(_12))}
+return _12}}
+,isc.A.compareDates=function isc_Date_compareDates(_1,_2){if(_1==_2)return 0;var _3=(isc.isA.Date(_1)?_1.getTime():0),_4=(isc.isA.Date(_2)?_2.getTime():0);return _3>_4?-1:(_4>_3?1:0)}
+,isc.A.compareLogicalDates=function isc_Date_compareLogicalDates(_1,_2){if(_1==_2)return 0;if(!isc.isA.Date(_1)||!isc.isA.Date(_2))return false;var _3=_1.getFullYear(),_4=_1.getMonth(),_5=_1.getDate(),_6=_2.getFullYear(),_7=_2.getMonth(),_8=_2.getDate();var _9=_3*10000+_4*100+_5,_10=_6*10000+_7*100+_8;return _9>_10?-1:(_10>_9?1:0)}
+,isc.A.setInputFormat=function isc_Date_setInputFormat(_1){this.$ei=_1}
+,isc.A.getInputFormat=function isc_Date_getInputFormat(){if(this.$ei!=null)return this.$ei;return this.mapDisplayFormatToInputFormat("toShortDate")}
+,isc.A.mapDisplayFormatToInputFormat=function isc_Date_mapDisplayFormatToInputFormat(_1){if(_1==null||_1=="toShortDate"){_1=Date.prototype.$el}else if(_1=="toNormalDate"){_1=Date.prototype.formatter}
+if(isc.isA.Function(_1)){isc.Log.logInfo("Unable to determine input format associated with display format "+"function - returning default input format","Date");return this.$ei||"MDY"}
+var _2=this.$64g[_1];if(_2!=null&&isc.isA.String(_2))return _2;if(_1=="toSerializeableDate")return this.parseSchemaDate;isc.Log.logInfo("Unable to determine input format associated with display format "+_1+" - returning default input format","Date");return this.$ei||"MDY"}
+,isc.A.parseInput=function isc_Date_parseInput(_1,_2,_3,_4,_5){var _6=(_5==false);if(isc.isA.Date(_1))return _1;if(!isc.isA.String(_1)||isc.isAn.emptyString(_1)){return null}
+if(_2==null)_2=this.getInputFormat();if(isc.isA.Function(Date[_2]))_2=Date[_2];if(isc.isA.Function(_2)){return _2(_1,_3,_4)}
+var _7=this.$ej(_1,_2);if(_7!=null){var _8=_7[0],_9=_8&&_8.contains("-");if(_8&&_9)_8=_8.replaceAll("-","");if(_8){if(_8.length<=2){_8=parseInt(_8,10);if(_3!=null){if(_8<_3)_8+=2000;else _8+=1900}
+_7[0]=_8}else if(_8.length==3){_7[0]="0"+_8.toString()}else{_7[0]=_8}
+if(_9)_7[0]="-"+_7[0]}
+if(_6){return Date.createLogicalDate(_7[0],_7[1],_7[2],_4)}else{return Date.createDatetime(_7[0],_7[1],_7[2],_7[3],_7[4],_7[5],null,_4)}}else{return null}}
+,isc.A.parseSchemaDate=function isc_Date_parseSchemaDate(_1){if(isc.isA.Date(_1))return _1;if(!isc.isA.String(_1))_1=(_1.toString?_1.toString():_1+"");var _2=_1.match(/(\d{4})[\/-](\d{2})[\/-](\d{2})([T ](\d{2}):(\d{2}):(\d{2}))?(\.(\d+))?([+-]\d{2}:\d{2}|Z)?/);if(_2==null)return null;var _3;if(!_2[4]){_3=Date.createLogicalDate(_2[1],_2[2]-1,_2[3])}else if(!_2[9]){_3=new Date(Date.UTC(_2[1],_2[2]-1,_2[3],_2[5],_2[6],_2[7]))}else{var _4=_2[9];if(_4.length!=3){var _5=Math.pow(10,3-_4.length);_4=Math.round(parseInt(_4,10)*_5)}
+_3=new Date(Date.UTC(_2[1],_2[2]-1,_2[3],_2[5],_2[6],_2[7],_4))}
+if(_2[10]&&_2[10].toLowerCase()!="z"){var _6=_2[10].split(":"),H=_6[0],_8=H&&H.startsWith("-"),M=_6[1];H=parseInt(H,10);M=parseInt(M,10);var _10=_3.getTime();if(isc.isA.Number(H))_10-=(3600000*H);if(isc.isA.Number(M))_10-=(60000*M*(_8?-1:1));_3.setTime(_10)}
+return _3}
+,isc.A.parseDate=function isc_Date_parseDate(_1,_2,_3,_4){return this.parseInput(_1,_2,_3,_4)}
+,isc.A.parseDateTime=function isc_Date_parseDateTime(_1,_2,_3,_4){return this.parseDatetime(_1,_2,_3,_4)}
+,isc.A.parseDatetime=function isc_Date_parseDatetime(_1,_2,_3,_4){return this.parseInput(_1,_2,_3,_4)}
+,isc.A.parseServerDate=function isc_Date_parseServerDate(_1,_2,_3){return Date.createLogicalDate(_1,_2,_3)}
+,isc.A.parseServerTime=function isc_Date_parseServerTime(_1,_2,_3){return Date.createLogicalTime(_1,_2,_3)}
+,isc.A.$ej=function isc_Date__splitDateString(_1,_2){var _3,_4,_5,_6,_7,_8;var _9=_2?_2.indexOf("M"):0,_10=_2?_2.indexOf("D"):1,_11=_2?_2.indexOf("Y"):2;if(isc.Browser.isSafari&&isc.Browser.safariVersion<=312){var _12=this.$ek(_1,_9,_10,_11);_5=_12[0];_3=_12[1];_4=_12[2];_6=_12[3];_7=_12[4];_8=_12[5]}else{var _13=new RegExp(/^\s*(-?\d{1,4})[^\d](-?\d{1,4})[^\d](-?\d{1,4})([^\d](\d{1,2})[^\d](\d\d)[^\d]?(\d\d)?)?\s*$/),_14=_1.match(_13);if(_14==null)return null;_3=_14[_9+1]-1;_4=_14[_10+1];_5=_14[_11+1];_6=_14[5]||0;_7=_14[6]||0;_8=_14[7]||0}
+if(isc.isA.Number(_5-_3-_4-_6-_7-_8))
+return([_5,_3,_4,_6,_7,_8]);else return null}
+,isc.A.setNormalDisplayFormat=function isc_Date_setNormalDisplayFormat(_1){if(isc.isA.Function(Date.prototype[_1])||isc.isA.Function(_1)){Date.prototype.formatter=_1}}
+,isc.A.setShortDisplayFormat=function isc_Date_setShortDisplayFormat(_1){if(isc.isA.Function(Date.prototype[_1])||isc.isA.Function(_1)){Date.prototype.$el=_1}}
+,isc.A.setDefaultDateSeparator=function isc_Date_setDefaultDateSeparator(_1){Date.prototype.$em=[,,,,_1,,,,,_1,,,,null];Date.prototype.$665=_1}
+,isc.A.getDefaultDateSeparator=function isc_Date_getDefaultDateSeparator(_1){if(Date.prototype.$665)return Date.prototype.$665;else return"/"}
+,isc.A.setShortDatetimeDisplayFormat=function isc_Date_setShortDatetimeDisplayFormat(_1){if(isc.isA.Function(Date.prototype[_1])||isc.isA.Function(_1)){Date.prototype.$68e=_1}}
+,isc.A.setFormatter=function isc_Date_setFormatter(_1){Date.setNormalDisplayFormat(_1)}
+,isc.A.setLocaleStringFormatter=function isc_Date_setLocaleStringFormatter(_1){if(isc.isA.Function(Date.prototype[_1])||isc.isA.Function(_1))
+Date.prototype.localeStringFormatter=_1}
+,isc.A.getShortMonthNames=function isc_Date_getShortMonthNames(_1){_1=_1||3;var _2=Date.shortMonthNames;if(_2==null)_2=Date.$41t;if(_2==null){var _3=Date.$41t=[];for(var i=0;i<12;i++){var _5=Date.createLogicalDate(2000,i,2);_3[i]=_5.deriveShortMonthName()}
+_2=Date.$41t}
+var _6=[];for(var i=0;i<12;i++){_6[i]=_2[i].substring(0,_1)}
+return _6}
+,isc.A.getShortDayNames=function isc_Date_getShortDayNames(_1){_1=_1||3;var _2=Date.shortDayNames;if(_2==null)_2=Date.$41s;if(_2==null){Date.$41s=[];var _3=new Date();_3.setDate(1);if(_3.getDay()>0)_3.setDate(_3.getDate()+(7-_3.getDay()));var _4=_3.getDate();for(var i=0;i<7;i++){_3.setDate(_4+i);Date.$41s[i]=_3.deriveShortDayName()}
+_2=Date.$41s}
+var _6=[];for(var i=0;i<7;i++){_6[i]=_2[i].substring(0,_1)}
+return _6}
+,isc.A.getWeekendDays=function isc_Date_getWeekendDays(){var _1=Date.weekendDays;if(_1==null)_1=Date.$54i;if(_1==null){_1=Date.$54i=[0,6]}
+return _1}
+,isc.A.getFormattedDateRangeString=function isc_Date_getFormattedDateRangeString(_1,_2){if(_1!=null&&!isc.isA.Date(_1)){_1=null}
+if(_2!=null&&!isc.isA.Date(_2)){_2=null}
+var _3=_1?_1.getMonth():null,_4=_1?_1.getShortMonthName():null,_5=_1?_1.getFullYear():null,_6=_1?_1.getDate():null,_7=_2?_2.getMonth():null,_8=_2?_2.getShortMonthName():null,_9=_2?_2.getFullYear():null,_10=_2?_2.getDate():null,_11="";if(_1&&_2){if(_5==_9){if(_3==_7){if(_6==_10){_11=_4+" "+_1.getDate()+", "+_5}else{_11=_4+" "+_1.getDate()+" - "+_2.getDate()+", "+_5}}else{_11=_4+" "+_1.getDate()+" - "+_8+" "+_2.getDate()+", "+_5}}else{_11=_4+" "+_1.getDate()+", "+_5+" - "+_8+" "+_2.getDate()+", "+_9}}else if(_1){_11=_4+" "+_1.getDate()+", "+_5}else if(_2){_11=_8+" "+_2.getDate()+", "+_9}
+return _11}
+);isc.B._maxIndex=isc.C+29;isc.A=Date.prototype;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$em=[,,,,"/",,,,,"/",,,,null];isc.A.$en="MDY";isc.A.$eo="DMY";isc.A.$ep="YMD";isc.A.$en="MDY";isc.A.$w0="0";isc.A.$68f=[null,null];isc.B.push(isc.A.duplicate=function isc_Dat_duplicate(){var _1=new Date();_1.setTime(this.getTime());_1.logicalDate=this.logicalDate;_1.logicalTime=this.logicalTime;return _1}
+,isc.A.clearTimeFields=function isc_Dat_clearTimeFields(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this}
+,isc.A.deriveShortDayName=function isc_Dat_deriveShortDayName(_1){var _2=this.toString();if(_1==null||_1<=0||_1>3)_1=3;return _2.substring(0,_1)}
+,isc.A.getShortDayName=function isc_Dat_getShortDayName(){return Date.getShortDayNames()[this.getDay()]}
+,isc.A.deriveShortMonthName=function isc_Dat_deriveShortMonthName(_1){var _2=this.toUTCString();var _3=8;if(_1==null||_1<0||_1>3)_1=3;if(_2.substring(6,7)==' '){_3=7}
+return _2.substring(_3,(_3+_1))}
+,isc.A.getShortMonthName=function isc_Dat_getShortMonthName(){return Date.getShortMonthNames()[this.getMonth()]}
+,isc.A.getShortYear=function isc_Dat_getShortYear(){var _1=this.getFullYear();return(_1%100).stringify(2)}
+,isc.A.getWeek=function isc_Dat_getWeek(){var _1=new Date(this.getFullYear(),0,1);return Math.ceil((((this-_1)/86400000)+_1.getDay())/7)}
+,isc.A.toDateStamp=function isc_Dat_toDateStamp(){return this.getUTCFullYear()+(this.getUTCMonth()+1).stringify()+this.getUTCDate().stringify()+"T"+this.getUTCHours().stringify()+this.getUTCMinutes().stringify()+this.getUTCSeconds().stringify()+"Z"}
+,isc.A.toNormalDate=function isc_Dat_toNormalDate(_1,_2){if(!_1)_1=this.formatter;if(isc.isA.Function(_1)){return _1.apply(this,[_2])}else if(this[_1]){return this[_1](_2)}}
+,isc.A.toShortDate=function isc_Dat_toShortDate(_1,_2){if(!_1)_1=this.$el;if(isc.isA.Function(_1))return _1.apply(this,[_2]);else if(isc.isA.Function(this[_1]))return this[_1](_2);isc.logWarn("Date.toShortDate() specified formatter not understood:"+_1);return this.toUSShortDate()}
+,isc.A.toShortDateTime=function isc_Dat_toShortDateTime(_1,_2){return this.toShortDatetime(_1,_2)}
+,isc.A.toShortDatetime=function isc_Dat_toShortDatetime(_1,_2){if(!_1)_1=this.$68e;return this.toShortDate(_1,_2)}
+,isc.A.setDefaultDateSeparator=function isc_Dat_setDefaultDateSeparator(_1){this.$em=[,,,,_1,,,,,_1,,,,null];this.$665=_1}
+,isc.A.getDefaultDateSeperator=function isc_Dat_getDefaultDateSeperator(_1){if(this.$665)return this.$665;else return"/"}
+,isc.A.$68d=function isc_Dat__applyTimezoneOffset(_1,_2,_3){if(_3==null)_3=this.getTime();if(isc.isA.Number(_1))_3+=(3600000*_1);if(isc.isA.Number(_2))_3+=(60000*_2);this.setTime(_3)}
+,isc.A.$68g=function isc_Dat__getTimezoneOffsetDate(_1,_2){var _3=Date.$68h;if(_3==null)_3=Date.$68h=new Date();_3.$68d(_1,_2,this.getTime());return _3}
+,isc.A.$es=function isc_Dat__toShortDate(_1,_2){if(_2==null){_2=!this.logicalDate}
+var _3=this.$em,_4,_5,_6;if(!_2||!isc.Time.$854){_4=this.getMonth()+1;_5=this.getDate();_6=this.getFullYear()}else{var _7=this.$68g(isc.Time.getUTCHoursDisplayOffset(this),isc.Time.getUTCMinutesDisplayOffset(this));_4=_7.getUTCMonth()+1;_5=_7.getUTCDate();_6=_7.getUTCFullYear()}
+var _8,_9,_10;if(_1==this.$en){_8=0;_9=5;_10=10}else if(_1==this.$eo){_9=0;_8=5;_10=10}else if(_1==this.$ep){_10=0;_8=5;_9=10}else{_9=_1.indexOf("D")*5;_10=_1.indexOf("Y")*5;_8=_1.indexOf("M")*5}
+_3[_9]=_5<10?this.$w0:null
+isc.$bk(_3,_5,_9+1,3);_3[_8]=_4<10?this.$w0:null
+isc.$bk(_3,_4,_8+1,3);isc.$bk(_3,_6,_10,4);return _3.join(isc.emptyString)}
+,isc.A.toUSShortDate=function isc_Dat_toUSShortDate(_1){return this.$es(this.$en,_1)}
+,isc.A.$68i=function isc_Dat__toShortTime(_1){return isc.Time.toShortTime(this,"toShortPadded24HourTime")}
+,isc.A.toUSShortDateTime=function isc_Dat_toUSShortDateTime(_1){return this.toUSShortDatetime(_1)}
+,isc.A.toUSShortDatetime=function isc_Dat_toUSShortDatetime(_1){return this.toUSShortDate(_1)+" "+this.$68i(_1)}
+,isc.A.toEuropeanShortDate=function isc_Dat_toEuropeanShortDate(_1){return this.$es(this.$eo,_1)}
+,isc.A.toEuropeanShortDateTime=function isc_Dat_toEuropeanShortDateTime(_1){return this.toEuropeanShortDatetime()}
+,isc.A.toEuropeanShortDatetime=function isc_Dat_toEuropeanShortDatetime(_1){return this.toEuropeanShortDate(_1)+" "+this.$68i(_1)}
+,isc.A.toJapanShortDate=function isc_Dat_toJapanShortDate(_1){return this.$es(this.$ep,_1)}
+,isc.A.toJapanShortDateTime=function isc_Dat_toJapanShortDateTime(_1){return this.toJapanShortDatetime(_1)}
+,isc.A.toJapanShortDatetime=function isc_Dat_toJapanShortDatetime(_1){return this.toJapanShortDate(_1)+" "+this.$68i(_1)}
+,isc.A.$eu=function isc_Dat__serialize(){if(isc.Comm.$ev){return isc.SB.concat('"'+this.toDBDate(),'"')}else{return isc.SB.concat("new Date(",this.getTime(),")")}}
+,isc.A.$ew=function isc_Dat__xmlSerialize(_1,_2,_3,_4){return isc.Comm.$ex(_1,this.toSchemaDate(),_2||(this.logicalDate?"date":(this.logicalTime&&!isc.DataSource.serializeTimeAsDatetime?"time":"datetime")),_3,_4)}
+,isc.A.toSchemaDate=function isc_Dat_toSchemaDate(_1){if((_1=="date")||this.logicalDate){return isc.SB.concat(this.getFullYear().stringify(4),"-",(this.getMonth()+1).stringify(2),"-",this.getDate().stringify(2))};if((!isc.DataSource||!isc.DataSource.serializeTimeAsDatetime)&&(_1=="time"||this.logicalTime))
+{return isc.SB.concat(this.getHours().stringify(2),":",this.getMinutes().stringify(2),":",this.getSeconds().stringify(2))}
+return isc.SB.concat(this.getUTCFullYear().stringify(4),"-",(this.getUTCMonth()+1).stringify(2),"-",this.getUTCDate().stringify(2),"T",this.getUTCHours().stringify(2),":",this.getUTCMinutes().stringify(2),":",this.getUTCSeconds().stringify(2))}
+,isc.A.toSerializeableDate=function isc_Dat_toSerializeableDate(_1){var _2=isc.SB.create();_2.append(this.getFullYear().stringify(4),"-",(this.getMonth()+1).stringify(2),"-",this.getDate().stringify(2));if(!_1)_2.append((isc.Comm.xmlSchemaMode?"T":" "),this.getHours().stringify(2),":",this.getMinutes().stringify(2),":",this.getSeconds().stringify(2));return _2.toString()}
+,isc.A.toDBDate=function isc_Dat_toDBDate(){return isc.StringBuffer.concat("$$DATE$$:",this.toSerializeableDate())}
+,isc.A.toDBDateTime=function isc_Dat_toDBDateTime(){return this.toDBDate()}
+,isc.A.setFormatter=function isc_Dat_setFormatter(_1){this.setNormalDisplayFormat(_1)}
+,isc.A.setLocaleStringFormatter=function isc_Dat_setLocaleStringFormatter(_1){if(isc.isA.Function(this[_1])||isc.isA.Function(_1))
+this.localeStringFormatter=_1}
+,isc.A.isBeforeToday=function isc_Dat_isBeforeToday(_1){var _2=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0).getTime();if(_1.getTime()<_2)return true;else return false}
+,isc.A.isToday=function isc_Dat_isToday(_1){if(this.getFullYear()==_1.getFullYear()&&this.getMonth()==_1.getMonth()&&this.getDate()==_1.getDate())
+return true;else return false}
+,isc.A.isTomorrow=function isc_Dat_isTomorrow(_1){var _2=new Date(this.getFullYear(),this.getMonth(),this.getDate()+1,0);var _3=new Date(this.getFullYear(),this.getMonth(),this.getDate()+1,23);var _4=_1.getTime();if(_4>=_2.getTime()&&_4<=_3.getTime()){return true}else{return false}}
+,isc.A.isThisWeek=function isc_Dat_isThisWeek(_1){var _2=new Date(this.getFullYear(),this.getMonth(),this.getDate()-this.getDay(),0);var _3=new Date(this.getFullYear(),this.getMonth(),this.getDate()+(7-this.getDay()),23);var _4=_1.getTime();if(_4>=_2.getTime()&&_4<=_3.getTime()){return true}else{return false}}
+,isc.A.isNextWeek=function isc_Dat_isNextWeek(_1){var _2=new Date(this.getFullYear(),this.getMonth(),(this.getDate()-this.getDay())+7,0);var _3=new Date(this.getFullYear(),this.getMonth(),(this.getDate()-this.getDay())+14,23);var _4=_1.getTime();if(_4>=_2.getTime()&&_4<=_3.getTime()){return true}else{return false}}
+,isc.A.isNextMonth=function isc_Dat_isNextMonth(_1){var _2=new Date(this.getFullYear(),this.getMonth());_2.setMonth(_2.getMonth()+1);if(_2.getFullYear()==_1.getFullYear()&&_2.getMonth()==_1.getMonth()){return true}else{return false}}
+);isc.B._maxIndex=isc.C+42;Date.prototype.toBrowserString=Date.prototype.toString;Date.prototype.toBrowserLocaleString=Date.prototype.toLocaleString;if(!Date.prototype.formatter)Date.prototype.formatter="toLocaleString"
+if(!Date.prototype.$el)Date.setShortDisplayFormat("toUSShortDate");if(!Date.prototype.$68e)Date.setShortDatetimeDisplayFormat("toUSShortDatetime");Date.prototype.iscToLocaleString=function(){var _1=this.localeStringFormatter;if(isc.isA.Function(_1))return _1.apply(this);else if(this[_1])return this[_1]()}
+if(!Date.prototype.localeStringFormatter)
+Date.prototype.localeStringFormatter="toLocaleString";isc.A=Date;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$ek=function isc_Date__splitDateViaSubstring(_1,_2,_3,_4){var _5=_4*3,_6=_1.substring(_5,_5+4);var _7=_6.length;var _8=0,_9=0;if(_2>_3)_8+=3;else _9+=3;if(_2>_4)_8+=_7+1;if(_3>_4)_9+=_7+1;var _10=_1.substring(_8,_8+2)-1;var _11=_1.substring(_9,_9+2);var _12=7+_7,_13=(_1.substring(_12,_12+2)||0),_14=(_1.substring(_12+3,_12+5)||0),_15=(_1.substring(_12+6,_12+8)||0);return[_6,_10,_11,_13,_14,_15]}
+);isc.B._maxIndex=isc.C+1;isc.A=Date.prototype;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.toPrettyString=function isc_Dat_toPrettyString(){return this.toUSShortDatetime()}
+);isc.B._maxIndex=isc.C+1;isc.A=Date;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.parseStandardDate=function isc_Date_parseStandardDate(_1){if(!isc.isA.String(_1))return null;var _2=_1.substring(0,4),_3=_1.substring(5,7)-1,_4=_1.substring(8,10),_5=_1.substring(11,13),_6=_1.substring(14,16),_7=_1.substring(17,19);if(_1.length<19){if(!isc.isA.Number(_2-_3-_4))return null}else{if(!isc.isA.Number(_2-_3-_4-_5-_6-_7))return null}
+return new Date(_2,_3,_4,_5,_6,_7)}
+,isc.A.parseSerializeableDate=function isc_Date_parseSerializeableDate(_1){return this.parseStandardDate(_1)}
+,isc.A.parseDBDate=function isc_Date_parseDBDate(_1){if(isc.isA.String(_1)&&_1.startsWith("$$DATE$$:")){_1=_1.substring(9)
+return this.parseStandardDate(_1)}
+return null}
+,isc.A.parseDateStamp=function isc_Date_parseDateStamp(_1){if(_1==null||isc.isA.Date(_1))return _1;var _2=new Date(Date.UTC(_1.substring(0,4),parseInt(_1.substring(4,6),10)-1,_1.substring(6,8),_1.substring(9,11),_1.substring(11,13),_1.substring(13,15)));if(isc.isA.Date(_2))return _2;else return null}
+,isc.A.parseShortDate=function isc_Date_parseShortDate(_1,_2){return this.parseInput(_1,"MDY",_2)}
+,isc.A.parseShortDateTime=function isc_Date_parseShortDateTime(_1,_2){return this.parseShortDate(_1,_2)}
+,isc.A.parsePrettyString=function isc_Date_parsePrettyString(_1,_2){return this.parseShortDate(_1,_2)}
+,isc.A.parseEuropeanShortDate=function isc_Date_parseEuropeanShortDate(_1,_2){return this.parseInput(_1,"DMY",_2)}
+,isc.A.parseEuropeanShortDateTime=function isc_Date_parseEuropeanShortDateTime(_1,_2){return this.parseInput(_1,"DMY",_2)}
+,isc.A.setToZeroTime=function isc_Date_setToZeroTime(_1){if(_1==null||!isc.isA.Date(_1))return _1;var _2=_1.logicalDate;_1.logicalDate=false;var _3=_1.getTime();var _4=isc.Time.getUTCHoursDisplayOffset(_1),_5=isc.Time.getUTCMinutesDisplayOffset(_1);if(_2){var _6=new Date(_1);_6.setHours(0);_6.setMinutes(0);var _7=isc.Time.getUTCHoursDisplayOffset(_6);if(_4!=_7){_4=_7}}
+var _8=_4>0?24-_4:0-_4,_9=_5>0?60-_5:0-_5;var _10;if(_2){_10=_1.getDate()}else{var _11=_1.$68g(_4,_5);_10=_11.getUTCDate()}
+_1.setUTCHours(_8);var _12=_1.$68g(_4,_5),_13=_12.getUTCDate(),_14=_8;if(_13!=_10){var _15=_1.getTime()<_3;_14+=_15?24:-24;_1.setUTCHours(_14)}
+if(_1.getUTCHours()!=_8){_1.setTime(_3);_1.setUTCHours(_14+1);if(_1.getUTCHours()!=_8+1){_1.setTime(_3);_1.setUTCHours(_14+2)}}
+_1.setUTCMinutes(_9)}
+);isc.B._maxIndex=isc.C+10;isc.A=isc.DateUtil;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$86v={s:true,S:true,mn:true,MN:true,h:true,H:true,d:true,D:true};isc.B.push(isc.A.mapRelativeDateShortcut=function isc_c_DateUtil_mapRelativeDateShortcut(_1,_2){switch(_1){case"$now":return"+0MS";case"$today":if(_2=="end"){return"+0D"}else{return"-0D"}
+case"$startOfToday":return"-0D";case"$endOfToday":return"+0D";case"$yesterday":if(_2=="end"){return"-1d[+0D]"}else{return"-1D"}
+case"$startOfYesterday":return"-1D";case"$endOfYesterday":return"-1d[+0D]";case"$tomorrow":if(_2=="end"){return"+1D"}else{return"+1d[-0D]"}
+case"$startOfTomorrow":return"+1d[-0D]";case"$endOfTomorrow":return"+1D";case"$startOfWeek":return"-0W";case"$endOfWeek":return"+0W";case"$startOfMonth":return"-0M";case"$endOfMonth":return"+0M";case"$startOfYear":return"-0Y";case"$endOfYear":return"+0Y";case"$weekFromNow":if(_2=="end"){return"+1w[+0D]"}else{return"+1w[-0D]"}
+case"$weekAgo":if(_2=="end"){return"-1w[+0D]"}else{return"-1w[-0D]"}
+case"$monthFromNow":if(_2=="end"){return"+1m[+0D]"}else{return"+1m[-0D]"}
+case"$monthAgo":if(_2=="end"){return"-1m[+0D]"}else{return"-1m[-0D]"}}
+return _1}
+,isc.A.getAbsoluteDate=function isc_c_DateUtil_getAbsoluteDate(_1,_2,_3,_4){if(this.isRelativeDate(_1)){if(!_3)_3=_1.rangePosition;_1=_1.value}
+if(_1.startsWith("$")){_1=this.mapRelativeDateShortcut(_1,_3)}
+var _5=_1,_6=_4?Date.createLogicalDate():new Date();if(_2!=null)_6.setTime(_2.getTime());var _7=this.getRelativeDateParts(_5);if(_7.qualifier){_7.qualifier=_7.qualifier.toUpperCase();var _8=this.getRelativeDateParts(_7.qualifier);var _9=["S","MN","H","D","W","M","Q","Y"];if(_9.contains(_8.period)){_6=this.dateAdd(_6,_8.period,_8.countValue,(_8.direction=="+"?1:-1),_4)}else{isc.logWarn("Invalid date-offset qualifier provided: "+_8.period+". Valid "+"options are: S, MN, H, D, W, M, Q and Y.")}}
+var _10=this.dateAdd(_6,_7.period,_7.countValue,(_7.direction=="+"?1:-1),_4);return _10}
+,isc.A.isRelativeDate=function isc_c_DateUtil_isRelativeDate(_1){if(isc.isA.Date(_1))return false;if(isc.isAn.Object(_1)&&_1._constructor=="RelativeDate")return true;return false}
+,isc.A.getRelativeDateParts=function isc_c_DateUtil_getRelativeDateParts(_1){var _2=_1,_3=_2.substring(0,1),_4=_2.indexOf("["),_5=(_4>0?_2.substring(_4):null),_6=(_5!=null?_2.substring(1,_4):_2.substring(1)),_7=parseInt(_6),_8=_6.replace(_7,"");return{direction:(_3=="+"||_3=="-"?_3:"+"),qualifier:_5?_5.replace("[","").replace("]","").replace(",",""):null,countValue:isc.isA.Number(_7)?_7:0,period:_8?_8:_3}}
+,isc.A.dateAdd=function isc_c_DateUtil_dateAdd(_1,_2,_3,_4,_5){var _6=false;switch(_2){case"MS":case"ms":_1.setMilliseconds(_1.getMilliseconds()+(_3*_4));break;case"S":_6=true;case"s":_1.setSeconds(_1.getSeconds()+(_3*_4));break;case"MN":_6=true;case"mn":_1.setMinutes(_1.getMinutes()+(_3*_4));break;case"H":_6=true;case"h":_1.setHours(_1.getHours()+(_3*_4));break;case"D":_6=true;case"d":_1.setDate(_1.getDate()+(_3*_4));break;case"W":_6=true;case"w":_1.setDate(_1.getDate()+((_3*7)*_4));break;case"M":_6=true;case"m":_1.setMonth(_1.getMonth()+(_3*_4));break;case"Q":_6=true;case"q":_1.setMonth(_1.getMonth()+((_3*3)*_4));break;case"Y":_6=true;case"y":_1.setFullYear(_1.getFullYear()+(_3*_4));break;case"DC":_6=true;case"dc":_1.setFullYear(_1.getFullYear()+((_3*10)*_4));break;case"C":_6=true;case"c":_1.setFullYear(_1.getFullYear()+((_3*100)*_4));break}
+if(_6){if(_4>0){_1=this.getEndOf(_1,_2,_5)}else{_1=this.getStartOf(_1,_2,_5)}}
+return _1}
+,isc.A.getStartOf=function isc_c_DateUtil_getStartOf(_1,_2,_3){var _4,_5,_6,_7,_8,_9,_10;if(_3==null)_3=_1.logicalDate;if(_3&&this.$86v[_2]==true){this.logInfo("DateUtil.getStartOf() passed period:"+_2+" for logical date. Ignoring");var _11=new Date(_1.getTime());_1.logicalDate=true;return _11}
+if(!isc.Time.$854||_3){_5=_1.getMonth();_6=_1.getDate();_4=_1.getFullYear();_7=_1.getHours();_8=_1.getMinutes();_9=_1.getSeconds();_10=_1.getDay()}else{var _12=_1.$68g(isc.Time.getUTCHoursDisplayOffset(_1),isc.Time.getUTCMinutesDisplayOffset(_1));_5=_12.getUTCMonth();_6=_12.getUTCDate();_4=_12.getUTCFullYear();_7=_12.getUTCHours();_8=_12.getUTCMinutes();_9=_12.getUTCSeconds();_10=_12.getDay()}
+switch(_2){case"s":case"S":return Date.createDatetime(_4,_5,_6,_7,_8,_9,0);case"mn":case"MN":return Date.createDatetime(_4,_5,_6,_7,_8,0,0);case"h":case"H":return Date.createDatetime(_4,_5,_6,_7,0,0,0);case"d":case"D":return Date.createDatetime(_4,_5,_6,0,0,0,0);case"w":case"W":if(_3){return Date.createLogicalDate(_4,_5,(_6-_10))}else{return Date.createDatetime(_4,_5,(_6-_10),0,0,0,0)}
+case"m":case"M":if(_3){return Date.createLogicalDate(_4,_5,1)}else{return Date.createDatetime(_4,_5,1,0,0,0,0)}
+case"q":case"Q":var _13=_5-(_5%3);if(_3){return Date.createLogicalDate(_4,_13,1)}else{return Date.createDatetime(_4,_13,1,0,0,0,0)}
+case"y":case"Y":if(_3){return Date.createLogicalDate(_4,0,1)}else{return Date.createDatetime(_4,0,1,0,0,0,0)}
+case"dc":case"DC":var _14=_4-(_4%10);if(_3){return Date.createLogicalDate(_14,0,1)}else{return Date.createDatetime(_14,0,1,0,0,0,0)}
+case"c":case"C":var _15=_4-(_4%100);if(_3){return Date.createLogicalDate(_15,0,1)}else{return Date.createDatetime(_15,0,1,0,0,0,0)}}
+return _1.duplicate()}
+,isc.A.getEndOf=function isc_c_DateUtil_getEndOf(_1,_2,_3){var _4,_5,_6,_7,_8,_9,_10;if(_3==null)_3=_1.logicalDate;if(_3&&this.$86v[_2]==true){this.logInfo("DateUtil.getEndOf() passed period:"+_2+" for logical date. Ignoring");var _11=new Date(_1.getTime());_1.logicalDate=true;return _11}
+if(!isc.Time.$854||_3){_5=_1.getMonth();_6=_1.getDate();_4=_1.getFullYear();_7=_1.getHours();_8=_1.getMinutes();_9=_1.getSeconds();_10=_1.getDay()}else{var _12=_1.$68g(isc.Time.getUTCHoursDisplayOffset(_1),isc.Time.getUTCMinutesDisplayOffset(_1));_5=_12.getUTCMonth();_6=_12.getUTCDate();_4=_12.getUTCFullYear();_7=_12.getUTCHours();_8=_12.getUTCMinutes();_9=_12.getUTCSeconds();_10=_12.getDay()}
+switch(_2){case"s":case"S":return Date.createDatetime(_4,_5,_6,_7,_8,_9,999);case"mn":case"MN":return Date.createDatetime(_4,_5,_6,_7,_8,59,999);case"h":case"H":return Date.createDatetime(_4,_5,_6,_7,59,59,999);case"d":case"D":return Date.createDatetime(_4,_5,_6,23,59,59,999);case"w":case"W":var _13=_6+(6-_10);if(_3){return Date.createLogicalDate(_4,_5,_13)}else{return Date.createDatetime(_4,_5,_13,23,59,59,999)}
+case"m":case"M":var _11;if(_3){_11=Date.createLogicalDate(_4,_5+1,1);_11.setTime(_11.getTime()-(24*60*60*1000))}else{_11=Date.createDatetime(_4,_5+1,1,0,0,0,0);_11.setTime(_11.getTime()-1)}
+return _11;case"q":case"Q":var _14=_5+3-(_5%3),_11;if(_3){_11=Date.createLogicalDate(_4,_14,1);_11.setDate(_11.getDate()-1)}else{_11=Date.createDatetime(_4,_14,1,0,0,0,0);_11.setTime(_11.getTime()-1)}
+return _11;case"y":case"Y":if(_3){return Date.createLogicalDate(_4,11,31)}else{return Date.createDatetime(_4,11,31,23,59,59,999)}
+case"dc":case"DC":var _15=_4+10-(_4%10);if(_3){return Date.createLogicalDate(_15,11,31)}else{return Date.createDatetime(_15,11,31,23,59,59,999)}
+case"c":case"C":var _16=_4+100-(_4%100);if(_3){return Date.createLogicalDate(_16,11,31)}else{return Date.createDatetime(_16,11,31,23,59,59,999)}}
+return _1.duplicate()}
+);isc.B._maxIndex=isc.C+7;String.prototype.Class="String";isc.$ey=function(){var _1=[Array,Number,Date].getProperty("prototype");for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3.toLocaleString==null){_3.toLocaleString=_3.toString}}
+var _4=String.prototype;if(!_4.toLocaleUpperCase){_4.toLocaleUpperCase=_4.toUpperCase;_4.toLocaleLowerCase=_4.toLowerCase}
+if(isc.Browser.isMoz){var _5="x",_6=_5.toLocaleString();if(_6!=_5){_4.toBrowserLocaleString=_4.toLocaleString;_4.toLocaleString=_4.toString}
+_5=true;_6=_5.toLocaleString();if(_6!=_5+""){Boolean.prototype.toBrowserLocaleString=Boolean.prototype.toLocaleString;Boolean.prototype.toLocaleString=Boolean.prototype.toString}}}
+isc.$ey();isc.A=String;isc.A.$ez=new RegExp("'","g");isc.A.$e0=new RegExp("\"","g");isc.A=String.prototype;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.replaceAll=function isc_Strin_replaceAll(_1,_2){return isc.replaceAll(this,_1,_2)}
+,isc.A.contains=function isc_Strin_contains(_1){if(_1&&!isc.isA.String(_1))_1=_1.toString();return isc.contains(this,_1)}
+,isc.A.startsWith=function isc_Strin_startsWith(_1){if(_1&&!isc.isA.String(_1))_1=_1.toString();return isc.startsWith(this,_1)}
+,isc.A.endsWith=function isc_Strin_endsWith(_1){if(_1&&!isc.isA.String(_1))_1=_1.toString();return isc.endsWith(this,_1)}
+,isc.A.trim=function isc_Strin_trim(_1){var _2=_1||" \t\n\r",l=this.length,_4=0,_5=l-1,i=0;while(_4<l&&_2.contains(this.charAt(i++)))_4++;i=l-1;while(_5>=0&&_5>=_4&&_2.contains(this.charAt(i--)))_5--;return this.substring(_4,_5+1)}
+,isc.A.convertTags=function isc_Strin_convertTags(_1,_2){return(_1?_1:"")+this.replace(/</g,"<").replace(/>/g,">")+(_2?_2:"")}
+,isc.A.asHTML=function isc_Strin_asHTML(_1){var s=this.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/(\r\n|\r|\n) /g,"<BR> ").replace(/(\r\n|\r|\n)/g,"<BR>").replace(/\t/g," ");return(_1?s.replace(/ /g," "):s.replace(/ /g," "))}
+,isc.A.unescapeHTML=function isc_Strin_unescapeHTML(){return this.replace(/ /g," ").replace(/<BR>/gi,"\n").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&")}
+,isc.A.toInitialCaps=function isc_Strin_toInitialCaps(){var _1=this.toLowerCase().split(" ");for(var i=0;i<_1.length;i++){_1[i]=_1[i].substring(0,1).toLocaleUpperCase()+_1[i].substring(1)}
+return _1.join(" ")}
+,isc.A.evalDynamicString=function isc_Strin_evalDynamicString(_1,_2){if(this.indexOf("${")<0)return this.toString();var _3=this,_4,_5,_6,_7;var _8=isc.StringBuffer.create();while((_5=_3.indexOf("${"))!=-1){_6=_3.indexOf("}",_5+1);if(_6==-1)break;if(_3.charAt(_5-1)=='\\'){_8.append(_3.slice(0,_5-1),_3.slice(_5,_6+1));_3=_3.substring(_6+1,_3.length);continue}
+var _7=_3.slice(_5+2,_6);var _9;if(_2!=null&&_2[_7]){_9=_2[_7]}else{try{_9=isc.Class.evalWithVars(_7,_2,_1)}catch(e){var _10=_1?_1:isc.Log;_10.logWarn("dynamicContents eval error - returning empty string for block -->${"+_7+"}<-- error was: "+isc.Log.echo(e));_9=isc.emptyString}}
+_8.append(_3.slice(0,_5),_9);_3=_3.substring(_6+1,_3.length)}
+_8.append(_3);_3=_8.toString();return _3}
+,isc.A.asSource=function isc_Strin_asSource(_1){return String.asSource(this,_1)}
+,isc.A.cssToCamelCaps=function isc_Strin_cssToCamelCaps(){return this.replace(/-([^a-z]*)([a-z])/g,function(_1,_2,_3,_4,_5){return _2+_3.toUpperCase()})}
+);isc.B._maxIndex=isc.C+12;isc.A=String;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.asSource=function isc_String_asSource(_1,_2){if(!isc.isA.String(_1))_1=""+_1;var _3=_2?String.$ez:String.$e0,_4=_2?"'":'"';return _4+_1.replace(/\\/g,"\\\\").replace(_3,'\\'+_4).replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+_4}
+);isc.B._maxIndex=isc.C+1;isc.addMethods(isc,{replaceAll:function(_1,_2,_3){return _1.split(_2).join(_3)},contains:function(_1,_2){if(_1==null)return false;return _1.indexOf(_2)>-1},startsWith:function(_1,_2){if(_1==null)return false;return(_1.lastIndexOf(_2,0)==0)},endsWith:function(_1,_2){if(_1==null)return false;var _3=_1.length-_2.length;if(_3<0)return false;return(_1.indexOf(_2,_3)==_3)},makeXMLSafe:function(_1,_2,_3,_4,_5,_6,_7){if(_1==null)return isc.emptyString;else if(!isc.isA.String(_1))_1=_1.toString();if(_2!=false)_1=_1.replace(this.$914,this.$915);if(_3!=false)_1=_1.replace(this.$916,this.$36h);if(_4!=false)_1=_1.replace(this.$917,this.$36i);if(_5!=false)_1=_1.replace(String.$e0,this.$918);if(_6!=false)_1=_1.replace(String.$ez,this.$919);if(_7!=false)_1=_1.replace(this.$92a,this.$92b);return _1},$915:"&",$36h:"<",$36i:">",$918:""",$919:"'",$92b:"
",$914:/&/g,$916:/</g,$917:/>/g,$92a:/\r/g,makeCDATA:function(_1){return"<![CDATA["+_1.replace(/\]\]>/,"]]<![CDATA[>")+"]]>"}});isc.ClassFactory.defineClass("StringBuffer");isc.SB=isc.StringBuffer;isc.A=isc.StringBuffer;isc.A.$e1=[];isc.A.$e2=50;isc.A=isc.StringBuffer.getPrototype();isc.A.maxStreamLength=(isc.Browser.isIE6?1000:100000);isc.A.addPropertiesOnCreate=false;isc.A=isc.StringBuffer.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_StringBuffer_init(){this.$e3=[]}
+,isc.A.append=function isc_StringBuffer_append(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27){var _28=this.$e3,_29,_30;if(_1!=null&&_1.constructor.$k==2){var _31=_1.length;if(_31<=30){var _31=_28.length;for(var i=0;i<_1.length;i++){_28[_31++]=_1[i]}}else{_28[_28.length]=_1.join(isc.emptyString)}}else{if(_27===_30&&_26===_30&&_25===_30){if(_1!=null)_28[_28.length]=_1;if(_2!=null)_28[_28.length]=_2
+if(_3!=null)_28[_28.length]=_3
+if(_4!=null)_28[_28.length]=_4
+if(_5!=null)_28[_28.length]=_5
+if(_6!=null)_28[_28.length]=_6
+if(_7!=null)_28[_28.length]=_7
+if(_8!=null)_28[_28.length]=_8
+if(_9!=null)_28[_28.length]=_9
+if(_10!=null)_28[_28.length]=_10
+if(_11!=null)_28[_28.length]=_11
+if(_12!=null)_28[_28.length]=_12
+if(_13!=null)_28[_28.length]=_13
+if(_14!=null)_28[_28.length]=_14
+if(_15!=null)_28[_28.length]=_15
+if(_16!=null)_28[_28.length]=_16
+if(_17!=null)_28[_28.length]=_17
+if(_18!=null)_28[_28.length]=_18
+if(_19!=null)_28[_28.length]=_19
+if(_20!=null)_28[_28.length]=_20
+if(_21!=null)_28[_28.length]=_21
+if(_22!=null)_28[_28.length]=_22
+if(_23!=null)_28[_28.length]=_23
+if(_24!=null)_28[_28.length]=_24}else{_29=arguments;for(var i=0,l=_29.length;i<l;i++){_28[_28.length]=_29[i]}}}
+if(_28.length>this.maxStreamLength){_28[0]=_28.join(isc.emptyString);_28.length=1}
+return this}
+,isc.A.appendNumber=function isc_StringBuffer_appendNumber(_1,_2){var _3=this.$e3;if(_2==null){_2=5;var _4=_1;if(_4<0){_4=0-_4;_2+=1}
+if(_4>=100000){_4=_4/ 100000;while(_4>=1){_2+=1;_4=_4/ 10}}}
+isc.$bk(_3,_1,_3.length,_2)}
+,isc.A.clear=function isc_StringBuffer_clear(){this.$e3.length=0}
+,isc.A.release=function isc_StringBuffer_release(){var _1=isc.SB,_2=_1.$e1,_3=this.toString();if(_2.length<_1.$e2){this.clear();_2[_2.length]=this}
+return _3}
+,isc.A.getArray=function isc_StringBuffer_getArray(){return this.$e3}
+);isc.B._maxIndex=isc.C+6;isc.StringBuffer.getPrototype().toString=function(){return this.$e3.join(isc.emptyString)}
+isc.StringBuffer.$e4=Array.prototype.join;isc.A=isc.StringBuffer;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$bw=[];isc.B.push(isc.A.create=function isc_c_StringBuffer_create(){var _1=this.$e1,_2=_1.length;if(_2>0){var _3=_1[_2-1];_1.length=_2-1;return _3}else{return isc.Class.create.apply(this)}}
+,isc.A.concat=function isc_c_StringBuffer_concat(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32,_33,_34,_35,_36,_37,_38,_39,_40,_41,_42,_43,_44,_45,_46,_47,_48,_49,_50,_51,_52){var _53,_54;if(isc.Browser.isIE&&_50===_53&&_51===_53&&_52===_53){var _55=this.$bw;_55.length=0;if(_1!=null)_55[_55.length]=_1;if(_2!=null)_55[_55.length]=_2;if(_3!=null)_55[_55.length]=_3;if(_4!=null)_55[_55.length]=_4;if(_5!=null)_55[_55.length]=_5;if(_6!=null)_55[_55.length]=_6;if(_7!=null)_55[_55.length]=_7;if(_8!=null)_55[_55.length]=_8;if(_9!=null)_55[_55.length]=_9;if(_10!=null)_55[_55.length]=_10;if(_11!=null)_55[_55.length]=_11;if(_12!=null)_55[_55.length]=_12;if(_13!=null)_55[_55.length]=_13;if(_14!=null)_55[_55.length]=_14;if(_15!=null)_55[_55.length]=_15;if(_16!=null)_55[_55.length]=_16;if(_17!=null)_55[_55.length]=_17;if(_18!=null)_55[_55.length]=_18;if(_19!=null)_55[_55.length]=_19;if(_20!=null)_55[_55.length]=_20;if(_21!=null)_55[_55.length]=_21;if(_22!=null)_55[_55.length]=_22;if(_23!=null)_55[_55.length]=_23;if(_24!=null)_55[_55.length]=_24;if(_25!=null)_55[_55.length]=_25;if(_26!=null)_55[_55.length]=_26;if(_27!=null)_55[_55.length]=_27;if(_28!=null)_55[_55.length]=_28;if(_29!=null)_55[_55.length]=_29;if(_30!=null)_55[_55.length]=_30;if(_31!=null)_55[_55.length]=_31;if(_32!=null)_55[_55.length]=_32;if(_33!=null)_55[_55.length]=_33;if(_34!=null)_55[_55.length]=_34;if(_35!=null)_55[_55.length]=_35;if(_36!=null)_55[_55.length]=_36;if(_37!=null)_55[_55.length]=_37;if(_38!=null)_55[_55.length]=_38;if(_39!=null)_55[_55.length]=_39;if(_40!=null)_55[_55.length]=_40;if(_41!=null)_55[_55.length]=_41;if(_42!=null)_55[_55.length]=_42;if(_43!=null)_55[_55.length]=_43;if(_44!=null)_55[_55.length]=_44;if(_45!=null)_55[_55.length]=_45;if(_46!=null)_55[_55.length]=_46;if(_47!=null)_55[_55.length]=_47;if(_48!=null)_55[_55.length]=_48;if(_49!=null)_55[_55.length]=_49;if(_50!=null)_55[_55.length]=_50;if(_51!=null)_55[_55.length]=_51;if(_52!=null)_55[_55.length]=_52;_54=_55.join(isc.emptyString)}else{arguments.join=this.$e4;_54=arguments.join(isc.emptyString)}
+return _54}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("StringMethod");isc.A=isc.StringMethod.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.toString=function isc_StringMethod_toString(){var _1=this.getValue();if(_1==null||isc.isA.String(_1))return _1;return _1.toString()}
+,isc.A.getValue=function isc_StringMethod_getValue(){return this.value}
+,isc.A.getDisplayValue=function isc_StringMethod_getDisplayValue(){var _1=this.getValue();if(_1==null||isc.isA.String(_1))return _1;if(_1.title!=null)return"["+_1.title+"]"
+return _1}
+,isc.A.cdata=function isc_StringMethod_cdata(_1){var _2=_1.indexOf("]]>");if(_2==-1)return"<![CDATA["+_1+"]]>";return this.cdata(_1.slice(0,_2))+"]]>"+this.cdata(_1.slice(_2+3))}
+,isc.A.$ew=function isc_StringMethod__xmlSerialize(_1,_2,_3,_4,_5,_6){var _7=this.value;if(isc.isA.String(_7))return isc.Comm.$ex(_1,this.cdata(_7),_2||"stringMethod",_3,_4);else
+return isc.StringMethod.$41u(_7,_1,_4,_5,_6)}
+);isc.B._maxIndex=isc.C+5;isc.A=isc.StringMethod;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$41v="Action";isc.B.push(isc.A.$41u=function isc_c_StringMethod__xmlSerializeAction(_1,_2,_3,_4,_5){var _6=isc.DataSource.get(this.$41v);if(!_6)return isc.Comm.$36t(_2,_1,_5,_4,_3);return[isc.Comm.$36u(_2),_6.xmlSerialize(_1,null,_3+" ",this.$41v),"\n",_3,isc.Comm.$36v(_2)].join(isc.emptyString)}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("Cookie");isc.A=isc.Cookie;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_c_Cookie_init(){isc.Cookie.list={};if(document.cookie=="")return;var _1=(""+document.cookie).split("; ");for(var i=0,_3=_1.length,_4;_4=_1[i],i<_3;i++){var _5=_4.indexOf('='),_6=(_5==-1?_4:_4.substring(0,_5));isc.Cookie.list[_6]=(_5==-1?'':unescape(_4.substring(_5+1)))}}
+,isc.A.get=function isc_c_Cookie_get(_1){isc.Cookie.init();return isc.Cookie.list[_1]}
+,isc.A.set=function isc_c_Cookie_set(_1,_2,_3,_4,_5){isc.Cookie.init();document.cookie=_1+"="+escape(_2)+(_3?";path="+_3:"")+(_4?";domain="+_4:"")+(_5?";expires="+(isc.isA.String(_5)?_5:_5.toGMTString()):"")}
+,isc.A.clear=function isc_c_Cookie_clear(_1,_2,_3){isc.Cookie.init();this.set(_1,"",_2,_3,"Thu, 01-Jan-70 00:00:01 GMT")}
+,isc.A.getList=function isc_c_Cookie_getList(){isc.Cookie.init();return isc.getKeys(isc.Cookie.list)}
+);isc.B._maxIndex=isc.C+5;isc.defineClass("StackTrace");isc.A=isc.StackTrace;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.fromNativeStack=function isc_c_StackTrace_fromNativeStack(_1){if(isc.Browser.isMoz){return isc.MozStackTrace.create({stack:_1})}else if(isc.Browser.isChrome){return isc.ChromeStackTrace.create({stack:_1})}else{return isc.UnsupportedStackTrace.create({stack:_1})}}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.StackTrace.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.stack=null;isc.A.$83t="";isc.B.push(isc.A.init=function isc_StackTrace_init(){if(this.stack){this.$83u()}}
+,isc.A.extractFunctionFromLine=function isc_StackTrace_extractFunctionFromLine(_1){this.logError("Should implement extractFunctionFromLine in subclass")}
+,isc.A.extractArgumentsFromLine=function isc_StackTrace_extractArgumentsFromLine(_1){this.logError("Should implement extractArgumentsFromLine in subclass")}
+,isc.A.extractSourceFromLine=function isc_StackTrace_extractSourceFromLine(_1){this.logError("Should implement extractSourceFromLine in subclass")}
+,isc.A.$83u=function isc_StackTrace__parseStack(){try{var _1=this.stack.split("\n"),_2=isc.StringBuffer.create(),_3=isc.Page.getAppDir(),_4=window.location.protocol+"//"+window.location.host;for(var i=0;i<_1.length;i++){var _6=_1[i],_7=null,_8=null,_9=null;var _10=this.extractFunctionFromLine(_6);if(_10==""){_10="unnamed"}else if(_10.startsWith("isc_")){var _11;if(_10.startsWith("isc_c_")){_10=_10.substring(6);_11=true}else{_10=_10.substring(4)}
+_8=_10.substring(0,_10.indexOf("_"));_9=_10.substring(_8.length+1);var _12=isc.ClassFactory.getClass(_8),_13=null;if(_12){_13=_11?_12[_9]:_12.getInstanceProperty(_9)}
+if(_13!=null){_10=isc.Func.getName(_13,true);var _14;if(!_11){_14=_12.getArgString(_9)}else{_14=isc.Func.getArgString(_13)}
+_7=_14.split(",")}else{_10=_10.replace(/_{1}/,".");_10=_10.replace(/_{2}/,"._")}}
+_2.append(" ",_10,"(");var _14=this.extractArgumentsFromLine(_6);var _15=0;while(_14&&_14.length>0){if(_15>0)_2.append(", ");if(_7)_2.append(_7[_15]+"=>");var _16=_14.length;_14=this.$83v(_14,_2);if(_14.length==_16){isc.logWarn("failure to parse next arg at:\n"+_14);break}
+_15++}
+_2.append(")");var _17=_6.lastIndexOf("@");_2.append(this.$83w(this.extractSourceFromLine(_6),_3,_4));_2.append("\n")}
+this.$83t=_2.toString()}
+catch(e){this.$83t=this.stack}}
+,isc.A.$83v=function isc_StackTrace__parseArgument(_1,_2){var _3=_1.charAt(0);if(_3=="\""){var _4=_1.search(/[^\\]"/);if(_4==-1)_4=_1.length;var _5=_1.substring(0,_4+2);if(_5.length>40){_5=_5.substring(0,40)+"...\"[ "+_5.length+"]"}
+_2.append(_5);return _1.substring(_4+3)}else if(_3=="["){var _6=_1.substring(1).indexOf("]"),_7=_1.substring(0,_6+2);if(_7=="[object Object]")_7="{Obj}";_2.append(_7);return _1.substring(_6+3)}else if(_1.startsWith("(void 0)")){_2.append("undef");return _1.substring(9)}else if(_1.startsWith("undefined")){_2.append("undef");return _1.substring(10)}else if(_1.startsWith("(function ")){var _8=_1.substring(1,_1.indexOf("{"));if(_8.endsWith(" "))_8=_8.substring(0,_8.length-1);_2.append(_8);var _9=_1.indexOf("}),");if(_9==-1)return"";return _1.substring(_9+3)}else{var _10=_1.indexOf(",");if(_10==-1)_10=_1.length;_2.append(_1.substring(0,_10));return _1.substring(_10+1)}}
+,isc.A.$83w=function isc_StackTrace__getSourceLine(_1,_2,_3){var _4=_1.indexOf("/system/modules/ISC_"),_5=_1.indexOf("/system/development/ISC_");if(_4!=-1){_1=_1.substring(_4+16)}else if(_5!=-1){_1=_1.substring(_5+20)+"[d]"}
+if(_4!=-1||_5!=-1){if(!this.logIsDebugEnabled("traceLineNumbersCore"))return"";var _6=_1.indexOf("?isc_version");if(_6!=-1){_1=_1.substring(0,_6)+_1.substring(_1.indexOf(":"))}}
+if(_1.startsWith(_2)){_1=_1.substring(_2.length)}else if(_1.startsWith(_3)){_1=_1.substring(_3.length)}
+return" @ "+_1}
+,isc.A.toString=function isc_StackTrace_toString(){return this.$83t}
+);isc.B._maxIndex=isc.C+8;isc.defineClass("MozStackTrace",isc.StackTrace);isc.A=isc.MozStackTrace.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.extractFunctionFromLine=function isc_MozStackTrace_extractFunctionFromLine(_1){var _2=_1.indexOf("(");return _1.substring(0,_2)}
+,isc.A.extractArgumentsFromLine=function isc_MozStackTrace_extractArgumentsFromLine(_1){var _2=_1.indexOf("(");var _3=_1.lastIndexOf("@");return _1.substring(_2+1,_3-1)}
+,isc.A.extractSourceFromLine=function isc_MozStackTrace_extractSourceFromLine(_1){var _2=_1.lastIndexOf("@");if(_2>=0){return _1.substring(_2+1)}else{return""}}
+);isc.B._maxIndex=isc.C+3;isc.defineClass("ChromeStackTrace",isc.StackTrace);isc.A=isc.ChromeStackTrace.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$83x=/Object\.([^ ]+)/;isc.A.$83y=/\((.+)\)/;isc.B.push(isc.A.extractFunctionFromLine=function isc_ChromeStackTrace_extractFunctionFromLine(_1){var _2=_1.match(this.$83x);return _2?_2[1]:""}
+,isc.A.extractArgumentsFromLine=function isc_ChromeStackTrace_extractArgumentsFromLine(_1){return""}
+,isc.A.extractSourceFromLine=function isc_ChromeStackTrace_extractSourceFromLine(_1){var _2=_1.match(this.$83y);return _2?_2[1]:""}
+);isc.B._maxIndex=isc.C+3;isc.defineClass("UnsupportedStackTrace",isc.StackTrace);isc.A=isc.UnsupportedStackTrace.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$83u=function isc_UnsupportedStackTrace__parseStack(){}
+,isc.A.toString=function isc_UnsupportedStackTrace_toString(){return this.stack}
+);isc.B._maxIndex=isc.C+2;isc.$e5={getCallTrace:function(_1,_2,_3){if(_1==null)_1=arguments.caller;if(_1==null)return"[getCallTrace(): Error: couldn't get arguments object]";var _4,_5=_1.callee;if(_5==null){_4="[args.callee == null]"}else if(!isc.Func){_4="[Func utility class not loaded]"}else{_4=isc.Func.getName(_5,true)}
+_4+="(";var _6=(_5!=null?isc.Func.getArgs(_5):[]);var _7=Math.max(_1.length,_6.length);for(var i=0;i<_7;i++){var _9=_6[i],_10=_1[i];if(i>0)_4+=", ";if(_9!=null){_4+=_9+"=>"}
+_4+=this.echoLeaf(_10)}
+_4+=")";_2=_2||_1.$cw;if(_2)_4+=" on "+this.echoLeaf(_2);if(!_3&&!_5.$c7)return _4;var _11=this.$e6(_5);if(!_5.$c7){var _12=_11.split(/[\r\n]+/);if(_12.length>1||_12[0].length>200)return _4}
+_4+='\n "'+_11+'"';return _4},$e6:function(_1){var _2=isc.Func.getBody(_1);return _2.trim()},getStackTrace:function(_1,_2,_3,_4){var _5="";_5+=this.$76x(_1,_2,_3);if(this.hasFireBug()&&!_4){isc.Log.$50m=isc.Log.$50m||0;var _6="FBugTrace"+isc.Log.$50m++;_5+="\r\n"+this.fireBugTrace(_6)}
+return _5},$76x:function(_1,_2,_3){if(!arguments||!arguments.callee||!arguments.callee.caller){return" [Stack trace not supported in this browser]"}
+if(_1==null)_1=arguments.caller||arguments.callee.caller.arguments;var _4=[];var _5=isc.Browser.isIE&&isc.Browser.version<=5;if(_2!=null){for(var i=0;i<_2;i++){if(_1==null)break;if(!_5){_1=_1.callee.caller.arguments}else{_1=_1.caller}}}
+if(_1==null){return""}
+var _7=_1.callee;var _8=[];var _9=true;if(_3==null)_3=Number.MAX_VALUE;var _10=0;while(_7!=null&&_1!=null&&_10<_3){if(_1.timerTrace){_4.add("\nStack trace for setTimeout() call: "+_1.timerTrace);break}
+if(!_5){if(_8.contains(_7)){_4.add(" ** recursed on "+isc.Func.getName(_7,true));break}
+_8.add(_7)}
+_4.add(" "+this.getCallTrace(_1,null,(_9||_1.callee.caller==null)));if(_10==0){var _11=this.$e7(_1.$e8);if(_11)_4.add(_11)}
+_7=_1.callee;if(!_5){_7=_7.caller;if(_7)_1=_7.arguments}else _1=_1.caller;_9=false;_10++}
+if(_4.length==0)return"";return"\r\n"+_4.join("\r")+"\r"},hasFireBug:function(){return isc.Browser.isMoz&&window.console!=null&&window.console.trace!=null},fireBugVersion:function(){return this.hasFireBug()?window.console.firebug:null},fireBugTrace:function(_1){window.console.trace(_1);return" [Complete stack trace logged via Firebug: "+_1+"]"},$e7:function(_1){var _2=isc.SB.create();for(var _3 in _1){var _4=_1[_3],_5;if(_4===_5)continue;if(isc.startsWith(_3,isc.$ag))continue;_2.append("\n "+_3+" = "+this.echoLeaf(_4))}
+return _2.toString()},$am:function(_1,_2,_3,_4){if(_1.$fa)return;_1.$fa=true;var _5=_1.toString();if(_1.stack){_5+="\n";_5+=isc.StackTrace.fromNativeStack(_1.stack).toString()}else{_5+=" [No error.stack available]"}
+this.logWarn(_5)},transformMozStackTrace:function(_1){return isc.StackTrace.fromNativeStack(_1).toString()},echoLeaf:function(_1,_2){var _3="",_4;if(_1===_4)return"undef";try{if(isc.isA.Class(_1)){_3+=_1.toString()}else if(isc.isAn.Array(_1)){_3+="Array["+_1.length+"]"}else if(isc.isA.Date(_1)){_3+="Date("+_1.toShortDate()+")"}else if(isc.isA.Function(_1)){_3+=isc.Func.getName(_1,true)+"()"}else{switch(typeof _1){case"string":if(_1.length<=40||_2){_3+='"'+_1+'"';break}
+_3+='"'+_1.substring(0,40)+'..."['+_1.length+']';_3=_3.replaceAll("\n","\\n").replaceAll("\r","\\r");break;case"object":if(_1==null){_3+="null";break}
+if(_1.tagName!=null){_3+="["+_1.tagName+"Element]"+this.getIDText(_1);break}
+var _5=""+_1;if(_5!=""&&_5!="[object Object]"&&_5!="[object]")
+{_3+=_5;break}
+_3+="Obj"+this.getIDText(_1);break;default:_3+=""+_1}}
+return _3}catch(e){var _6="[Error in echoLeaf: "+e+"]";_3+=_6;this.logDebug(_6,"Log");return _3}},getIDText:function(_1){var _2=_1.name||(isc.isAn.XMLNode(_1)?_1.getAttribute("name"):null);if(_2!=null&&!isc.isAn.emptyString(_2))return"{name:"+_2+"}";var _3=_1.ID!=null?_1.ID:_1.id!=null?_1.id:(isc.isAn.XMLNode(_1)?_1.getAttribute("id"):null);if(_3!=null&&!isc.isAn.emptyString(_3))return"{ID:"+_3+"}";if(_1.nodeName!=null&&!isc.isAn.emptyString(_1.nodeName)){return"{nodeName:"+_1.nodeName+"}"}
+var _4=_1.title||(isc.isAn.XMLNode(_1)?_1.getAttribute("title"):null);if(_4!=null&&!isc.isAn.emptyString(_4))return"{title:"+_4+"}";var _5=_1.type||(isc.isAn.XMLNode(_1)?_1.getAttribute("type"):null);if(_5!=null&&!isc.isAn.emptyString(_5))return"{type:"+_5+"}";var _5=_1._constructor;if(_5!=null&&!isc.isAn.emptyString(_5))return"{_constructor:"+_5+"}";var _6=_1.label||(isc.isAn.XMLNode(_1)?_1.getAttribute("label"):null);if(_6!=null&&!isc.isAn.emptyString(_6))return"{label:"+_6+"}";var _5=_1.className;if(_5!=null&&!isc.isAn.emptyString(_5))return"{className:"+_5+"}";if(_1.length!=null)return"{length:"+_1.length+"}";return""},echo:function(_1,_2,_3,_4){if(_1==null)return this.echoLeaf(_1);if(_2==null)_2=true;if(_1.tagName)return this.echoDOM(_1);if(typeof _1!="object"||isc.isA.Date(_1))return this.echoLeaf(_1,true);if(isc.isAn.Array(_1)){var _5=(_3?"[\n":"[");for(var i=0;i<_1.length;i++){_5+=(_3?this.echo(_1[i],_2):this.echoLeaf(_1[i]));if(i+1<_1.length)_5+=(_3?",\n":", ")}
+_5+="\n]";return _5}
+var _5="{";if(_1.getUniqueProperties!=null){_5=_1.getClassName()+"{";_1=_1.getUniqueProperties();if(_4==null)_4=false}
+if(_4==null)_4=true;var _7;try{_7=isc.getKeys(_1)}catch(e){return this.echoLeaf(_1)}
+if(isc.Browser.isSafari){var _8=false,_9="[object CSSStyleDeclaration]";try{_8=(_1+""==_9)}catch(e){}
+if(_8){_5=_9+"{\n[standard props only]\n";_7=isc.getKeys(isc.Canvas.$fi());_7.add("cssText")}}
+for(var i=0;i<_7.length;i++){var _10=_7[i],_11;try{_11=_1[_10]}catch(e){_11="[error accessing property: "+e+"]"}
+if(!_4&&isc.isA.Function(_11))continue;if(_10.startsWith("$"))continue;var _12;if(_10==isc.gwtRef){_12="{GWT Java Obj}"}else{_12=this.echoLeaf(_11)}
+_5+=_10+": "+_12;if(i+1<_7.length)_5+=(_2?",\r":", ")}
+_5+="}";return _5},echoAll:function(_1,_2){return this.echo(_1,_2,true)},echoFull:function(_1){return isc.JSON.encode(_1,{prettyPrint:true,showDebugOutput:true})},echoShort:function(_1){return this.echo(_1,false,false)},echoArray:function(_1){if(!isc.isAn.Array(_1))return this.echo(_1);if(_1.length==0)return"[empty array]";var _2=["["];for(var i=0;i<_1.length;i++){_2.addList([i,":",_1[i],"\n"])}
+_2.add("]");return _2.join("")},$fj:{outerText:false,innerText:false,parentTextEdit:false,isTextEdit:false,parentTextEdit:false,contentEditable:false,canHaveHTML:true,isMultiLine:false,filters:false,canHaveChildren:false,behaviorUrns:false,sourceIndex:false,accelerator:false,textDecorationUnderline:false,textDecorationNone:false},echoDOM:function(_1){return this.echoDelta(_1,window.Node,_1.tagName+this.getIDText(_1))},echoEvent:function(_1){return this.echoDelta(_1,(isc.Browser.isMoz?window.KeyEvent:window.Event))},echoDelta:function(_1,_2,_3){if(_1==null)return null;if(isc.Browser.isIE&&isc.isAn.XMLNode(_1)){var _4="<"+_1.tagName+" [XMLNode] ";var _5=_1.attributes;for(var i=0;i<_5.length;i++){var _7=_5[i];if(i>0)_4+=" ";_4+=_7.name+"="+this.echoLeaf(_7.value)}
+_4+=(i>0?" [":"")+_1.childNodes.length+" child nodes]>";return _4}
+var _4=(_3||isc.emptyString)+"{",_8=isc.getKeys(_1);for(var i=0;i<_8.length;i++){var _9=_8[i];if(this.$fj[_9]!=null)continue;if(_2!=null&&_2[_9]!=null)continue;if(_9.length>3&&_9.toUpperCase()==_9)continue;try{var _10=_1[_9];if(_10==null||_10=="")continue;if(isc.isA.Function(_10))continue;_4+=_9+": "+this.echoLeaf(_1[_9])}catch(e){_4+=_9+": "+this.echoLeaf(e)}
+if(i+1<_8.length)_4+=", "}
+_4+="}";return _4},echoElementSize:function(_1){var _2;return this.echo({scrollLeft:_1.scrollLeft,scrollTop:_1.scrollTop,scrollWidth:_1.scrollWidth,scrollHeight:_1.scrollHeight,clientWidth:_2,clientHeight:_2,offsetWidth:_1.offsetWidth,offsetHeight:_1.offsetHeight,styleLeft:_1.style.left,styleTop:_1.style.top,styleWidth:_1.style.width,styleHeight:_1.style.height,styleClip:_1.style.clip})}};isc.Class.addProperties(isc.$e5)
+isc.Class.addClassProperties(isc.$e5)
+isc.$fk={logMessage:function(_1,_2,_3,_4){var _5=isc.Log;if(!_5)return;if(_1==null)_1=_5.defaultPriority;if(_1<=_5.stackTracePriority&&this.getStackTrace!=null){_2+="\nStack trace:\n"+this.getStackTrace(arguments,2)}
+if(!_3)_3=this.Class;_5.log(_1,_2,_3,this.ID,this,_4)},logDebug:function(_1,_2){return this.logMessage(isc.Log.DEBUG,_1,_2)},logInfo:function(_1,_2){return this.logMessage(isc.Log.INFO,_1,_2)},logWarn:function(_1,_2){return this.logMessage(isc.Log.WARN,_1,_2)},logError:function(_1,_2){return this.logMessage(isc.Log.ERROR,_1,_2)},logFatal:function(_1,_2){return this.logMessage(isc.Log.FATAL,_1,_2)},logIsEnabledFor:function(_1,_2){return(isc.Log.isEnabledFor&&isc.Log.isEnabledFor((_2?_2:this.Class),_1,this))},logIsDebugEnabled:function(_1){return this.logIsEnabledFor(isc.Log.DEBUG,_1)},logIsInfoEnabled:function(_1){return this.logIsEnabledFor(isc.Log.INFO,_1)},logIsWarnEnabled:function(_1){return this.logIsEnabledFor(isc.Log.WARN,_1)},logIsErrorEnabled:function(_1){return this.logIsEnabledFor(isc.Log.ERROR,_1)},setLogPriority:function(_1,_2){isc.Log.setPriority(_1,_2,this)},setDefaultLogPriority:function(_1){isc.Log.setDefaultPriority(_1,this)},getDefaultLogPriority:function(){return isc.Log.getDefaultPriority(this)},clearLogPriority:function(_1){isc.Log.clearPriority(_1,this)}};isc.Class.addMethods(isc.$fk)
+isc.Class.addClassMethods(isc.$fk)
+isc.ClassFactory.defineClass("Log");isc.A=isc.Log;isc.A.FATAL=1;isc.A.ERROR=2;isc.A.WARN=3;isc.A.INFO=4;isc.A.DEBUG=5;isc.A.PRIORITY_NAMES=["NONE","FATAL","ERROR","WARN","INFO","DEBUG"];isc.A=isc.Log;isc.A.defaultPriority=isc.Log.WARN;isc.A.stackTracePriority=isc.Log.ERROR;isc.A.$fl={};isc.A.$fm={};isc.A.$fn=1000;isc.A.$fo=0;isc.A.$fp=[];isc.A.$fq=":";isc.A.$fr=".";isc.A._allCategories="_allCategories";isc.A.$fs="$fs";isc.A=isc.Log;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A._1zero="0";isc.A._2zero="00";isc.A.showInlineLogs=false;isc.A.$ft="$T_";isc.A.$73n={};isc.A.$fu=["Timed ",,": ",,"ms"];isc.A.flashHiliteCount=7;isc.A.flashHilitePeriod=500;isc.B.push(isc.A.applyLogPriorities=function isc_c_Log_applyLogPriorities(_1){if(!this.$fl){this.$fl={}}
+if(_1){isc.addProperties(this.$fl,_1)}}
+,isc.A.getLogPriorities=function isc_c_Log_getLogPriorities(_1,_2){var _3;if(_1!=null){var _4=this.$fv(_1);_3=this.$fm[_4];if(_2){return isc.addProperties({},_3)}}
+var _5=isc.addProperties({},this.$fl);if(_3)_5=isc.addProperties(_5,_3);return _5}
+,isc.A.$fv=function isc_c_Log__getObjectID(_1){var _2;if(_1==null)_2=isc.emptyString;else _2=(_1.getID?_1.getID():_1.getClassName());return _2}
+,isc.A.getPriority=function isc_c_Log_getPriority(_1,_2){if(_2!=null){var _3=this.$fv(_2),_4=this.$fm[_3];if(_4){if(_4._allCategories!=null)return _4._allCategories;if(_4[_1]!=null)return _4[_1];if(_4.$fs!=null)return _4.$fs}}
+var _5=this.$fl;return _5[_1]||_5.$fs}
+,isc.A.setPriority=function isc_c_Log_setPriority(_1,_2,_3){if(_3!=null){var _4=this.$fv(_3);if(this.$fm[_4]==null)
+this.$fm[_4]={};if(!_1)_1=this._allCategories;this.$fm[_4][_1]=_2}else{this.$fl[_1]=_2}}
+,isc.A.setDefaultPriority=function isc_c_Log_setDefaultPriority(_1,_2){if(!_2||_2==isc.Log)isc.Log.defaultPriority=_1;else isc.Log.setPriority("$fs",_1,_2)}
+,isc.A.getDefaultPriority=function isc_c_Log_getDefaultPriority(_1){var _2;if(_1&&_1!=isc.Log)_2=this.getPriority("$fs",_1);return _2||isc.Log.defaultPriority}
+,isc.A.clearPriority=function isc_c_Log_clearPriority(_1,_2){if(_2){var _3=this.$fv(_2);if(!_1)
+delete this.$fm[_3];else if(this.$fm[_3])
+delete this.$fm[_3][_1]}else{delete this.$fl[_1]}}
+,isc.A.isEnabledFor=function isc_c_Log_isEnabledFor(_1,_2,_3){if(!_1)_1=isc.$ad;while(_1!=isc.$ad){var _4=this.getPriority(_1,_3);if(_4!=null){return _2<=_4}
+var _5=_1.lastIndexOf(this.$fr);if(_5>0){_1=_1.substring(0,_5)}else{break}}
+return _2<=isc.Log.defaultPriority}
+,isc.A.log=function isc_c_Log_log(_1,_2,_3,_4,_5,_6){if(this.isEnabledFor(_3,_1,_5))
+this.addLogMessage(_1,_2,_3,_4,_6);else if(this.reportSuppressedLogs){this.logWarn("suppressed log, category: "+_3+": "+_2)}}
+,isc.A.getLogTimestamp=function isc_c_Log_getLogTimestamp(_1){var _2=this.$fw;if(_2==null){_2=this.$fw=[];_2[2]=this.$fq;_2[5]=this.$fq;_2[8]=this.$fr}
+if(_1==null)_1=new Date();var _3=_1.getHours(),_4=_1.getMinutes(),_5=_1.getSeconds(),_6=_1.getMilliseconds();_2[1]=_3;if(_3<10)_2[0]=this._1zero;else _2[0]=null;_2[4]=_4;if(_4<10)_2[3]=this._1zero;else _2[3]=null;_2[7]=_5;if(_5<10)_2[6]=this._1zero;else _2[6]=null;_2[10]=_6;if(_6<10)_2[9]=this._2zero;else if(_6<100)_2[9]=this._1zero;else _2[9]=null;return _2.join(isc.$ad)}
+,isc.A.getPriorityName=function isc_c_Log_getPriorityName(_1){if(_1==null)return isc.$ad;return this.PRIORITY_NAMES[_1]}
+,isc.A.$fc=function isc_c_Log__makeLogMessage(_1,_2,_3,_4,_5){var _6=this.$fx;if(_6==null){_6=this.$fx=[]}
+if(!_3)_3=this.category;_6[0]=this.getLogTimestamp(_5);_6[1]=this.$fq;if(this.ns.EH&&this.ns.EH.$lc!=null){_6[2]=this.ns.EH.$lc;_6[3]=this.$fq}
+if(_1!=null){_6[4]=this.getPriorityName(_1);_6[5]=this.$fq}
+_6[6]=_3;_6[7]=this.$fq;if(_4){_6[8]=_4
+_6[9]=this.$fq}
+_6[10]=_2;var _7=_6.join(isc.$ad);_6.length=0;return _7}
+,isc.A.addLogMessage=function isc_c_Log_addLogMessage(_1,_2,_3,_4,_5){var _6=this.$fc(_1,_2,_3,_4,_5);this.addToMasterLog(_6);if(this.warningLogged!=null&&_1!=null&&_1<=this.WARN){this.warningLogged(_6)}
+if(_1!=null&&_1<=this.ERROR){alert(_2)}}
+,isc.A.addToMasterLog=function(message){this.$fp[this.$fo]=message;this.$fo++;if(this.$fo>this.$fn){this.$fo=0}
+if(this.showInlineLogs){this.updateInlineLogResults()}}
+,isc.A.updateInlineLogResults=function isc_c_Log_updateInlineLogResults(){if(isc.Canvas==null||this.$fp==null)return;if(!this.inlineLogCanvas){this.inlineLogCanvas=isc.Canvas.create({width:"50%",height:"100%",overflow:"auto",backgroundColor:"white",canDragReposition:true,autoDraw:true})}
+this.inlineLogCanvas.setContents(this.$fp.join("<br>"));this.inlineLogCanvas.bringToFront()}
+,isc.A.getMessages=function isc_c_Log_getMessages(){var _1=this.$fp,_2=this.$fo,_3=this.$fn;return _1.slice(_3-_2,_3).concat(_1.slice(0,_2))}
+,isc.A.show=function isc_c_Log_show(_1,_2,_3,_4,_5){if(!this.logViewer)this.logViewer=isc.LogViewer.create();this.logViewer.showLog(_1,_2,_3,_4,_5)}
+,isc.A.clear=function isc_c_Log_clear(){this.$fp=[];this.$fo=0;if(this.logViewer)this.logViewer.clear()}
+,isc.A.evaluate=function isc_c_Log_evaluate(_1,_2){var _3=isc.timeStamp();var _4,_5;if(isc.Log.supportsOnError){_5=isc.Class.evalWithVars(_1,_2,this)}else{try{_5=isc.Class.evalWithVars(_1,_2,this)}catch(e){_4=e}}
+var _6=isc.timeStamp(),_7=isc.Log.getLogTimestamp()+":";var _8=_1.split(/[\r\n]+/);if(_8.length>1)_1=_8[0]+"...";if(_1.length>200)_1=_1.substring(0,200)+"...";if(_4){if(!isc.Log.supportsOnError){isc.Log.$am(_4);return}
+_7+="Evaluator: '"+_1+"' returned a script error: \r\n"+"'"+_4+"'"}else{_7="Evaluator: result of '"+_1+"' ("+(_6-_3)+"ms):\r\n"+this.echo(_5)}
+if(this.logViewer)this.logViewer.addToLog(_7,true)}
+,isc.A.updateStats=function isc_c_Log_updateStats(_1){if(this.logViewer)this.logViewer.updateStats(_1)}
+,isc.A.$fy=function isc_c_Log__logPrelogs(){var _1=isc.$j;if(!_1)return;for(var i=0;i<_1.length;i++){var _3=_1[i];if(isc.isA.String(_3))this.logDebug(_3);else this.logMessage(_3.priority||isc.Log.INFO,_3.message,_3.category,_3.timestamp)}
+isc.$j=null}
+,isc.A.traceMethod=function isc_c_Log_traceMethod(_1,_2,_3){var _4=this.validObservation(_1,_2);if(!_4)return;if(!this.$fz)this.$fz={};if(!this.$fz[_1])this.$fz[_1]=[];if(!this.$f0)this.$f0=isc.Class.create();var _5=this.$f0;if(_5.isObserving(_4,_2)&&this.$fz[_1].contains(_2))
+{_5.ignore(_4,_2);this.logWarn("MethodTimer: Stopped logging stack traces for "+_2+" method on "+_1);this.$fz[_1].remove(_2)}else{var _6=_4.ID?_4.ID:(_4.Class?_4.Class:_4),_7="isc.Log.logWarn('"+_6+"."+_2+"() - trace:' +";if(_3){_7+="'\\n' + isc.Log.getCallTrace(arguments))"}else{_7+="isc.Log.getStackTrace())"}
+this.logWarn("expression is: "+_7);_5.observe(_4,_2,_7);this.logWarn("MethodTimer: Logging traces whenever "+_2+" method on "+_1+" is called");this.$fz[_1].add(_2)}}
+,isc.A.traceCall=function isc_c_Log_traceCall(_1,_2){this.traceMethod(_1,_2,true)}
+,isc.A.timeMethod=function isc_c_Log_timeMethod(_1,_2,_3,_4,_5){var _6=this.validObservation(_1,_2);if(!_6)return;if(!this.$f1)this.$f1={};if(!this.$f1[_1])this.$f1[_1]=[];if(this.$f1[_1].contains(_2))return;var _7=isc.Log.$ft+_2,_8=isc.$ah+_2,_9=(_6[_8]?_8:_2);_6[_7]=_6[_9];_6[_9]=isc.Log.makeTimerFunction(_2,_6,_3,_4,_5);this.logWarn("MethodTimer: Timing "+_2+" method on "+_1);this.$f1[_1].add(_2)}
+,isc.A.stopTimingMethod=function isc_c_Log_stopTimingMethod(_1,_2){var _3=this.validObservation(_1,_2);if(!_3)return;if(this.$f1[_1].contains(_2)){var _4=isc.Log.$ft+_2,_5=isc.$ah+_2,_6=(_3[_5]?_5:_2)
+if(!_3[_4]){this.logWarn("Not timing method '"+_2+"' on object '"+_1+"'.");this.$f1[_1].remove(_2);return}
+_3[_6]=_3[_4];delete _3[_4];this.logWarn("MethodTimer: "+_2+" method on "+_1+" is no longer being timed");this.$f1[_1].remove(_2);return}}
+,isc.A.makeTimerFunction=function isc_c_Log_makeTimerFunction(_1,_2,_3,_4,_5){var _6=_2[_1],_7=isc.Func.getName(_6,true);var _8=function(_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22){if(_5)isc.Log.$f2();var _9=isc.timeStamp();var _10=_6.call(this,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22);var _11=(isc.timeStamp()-_9);if(!_4)isc.Log.$f3(this,_7,_11);return _10}
+_8.$dx=(_2.ID||_2.Class||"")+"_"+_1+"Timing";_8.$f4=true;_8.$c1=isc.Log.$ft+_1;return _8}
+,isc.A.$f3=function isc_c_Log__logTimerResult(_1,_2,_3){if(this.deferTimerLogs)return this.$f5(_1,_2,_3);var _4=isc.Log.$fu;_4[1]=(_1.logWarn?_2:_2+" on "+this.echoLeaf(_1));_4[3]=_3.toFixed(3);var _5=_4.join(isc.emptyString);if(_1.logMessage)_1.logWarn(_5);else isc.Log.logWarn(_5)}
+,isc.A.validObservation=function isc_c_Log_validObservation(_1,_2){if(isc.isAn.emptyString(_1)||isc.isAn.emptyString(_2))return false;var _3=_1;if(isc.isA.String(_1)){_3=isc.Class.evaluate(_1);if(!_3){this.logWarn("MethodTimer: "+_1+" is not an object.");return false}}
+if(_2.indexOf("(")!=-1){_2=_2.slice(0,_2.indexOf("("))}
+if(isc.isA.ClassObject(_3)){var _4=_3.getPrototype();if(isc.isA.Function(_4[_2]))return _4;if(!_3[_2]){this.logWarn("MethodTimer: "+_2+" could not be found as a static or instance property on "+_1);return false}}else if(!_3[_2]){this.logWarn("MethodTimer: "+_2+" is undefined or null on "+_1);return false}
+if(!isc.Func.convertToMethod(_3,_2)){this.logWarn("MethodTimer: "+_2+" is not a method on "+_1);return false}
+return _3}
+,isc.A.hiliteCanvas=function isc_c_Log_hiliteCanvas(_1){var _2=_1;if(isc.isA.String(_1))_2=window[_1];if(!isc.isA.Canvas(_2)){this.logWarn("Unable to find specified canvas '"+_1+"'.");return}
+this.showHiliteCanvas(_2.getPageRect())}
+,isc.A.hiliteElement=function isc_c_Log_hiliteElement(_1){var _2=_1||this.elementToHilite;if(isc.isA.String(_1))_2=isc.Element.get(_1);if(_2==null){this.logWarn("Unable to find specified element '"+_1+"'.");return}
+this.showHiliteCanvas(isc.Element.getElementRect(_2));this.elementToHilite=null}
+,isc.A.showHiliteCanvas=function isc_c_Log_showHiliteCanvas(_1){var _2=this._hiliteCanvas;if(!_2){_2=this._hiliteCanvas=isc.Canvas.create({ID:"logHiliteCanvas",autoDraw:false,overflow:"hidden",hide:function(){this.Super("hide",arguments);this.resizeTo(1,1);this.setTop(-20)},border1:"2px dotted red",border2:"2px dotted white"})}
+_2.setPageRect(_1);isc.Page.setEvent("click",_2.getID()+".hide()");_2.setBorder(_2.border1);_2.bringToFront();_2.show();this.$f6()}
+,isc.A.hideHiliteCanvas=function isc_c_Log_hideHiliteCanvas(){if(this._hiliteCanvas)this._hiliteCanvas.hide()}
+,isc.A.$f6=function isc_c_Log__flashHiliteCanvas(){var _1=[this._hiliteCanvas.border1,this._hiliteCanvas.border2];for(var i=0;i<this.flashHiliteCount;i++){isc.Timer.setTimeout({target:this._hiliteCanvas,methodName:"setBorder",args:[_1[i%2]]},(this.flashHilitePeriod*i))}}
+);isc.B._maxIndex=isc.C+34;isc.ClassFactory.defineClass("LogViewer");isc.A=isc.LogViewer;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getGlobalLogCookie=function isc_c_LogViewer_getGlobalLogCookie(){var _1=isc.Cookie.get("GLog");if(!_1)return null;try{var _2=new Function("return "+_1);return _2()}catch(e){this.logWarn("bad log cookie: "+_1+this.getStackTrace())}}
+,isc.A.getLogCookie=function isc_c_LogViewer_getLogCookie(){var _1=isc.Cookie.get("Log");if(!_1)return null;try{var _2=new Function("return "+_1);return _2()}catch(e){this.logWarn("bad log cookie: "+_1+this.getStackTrace())}}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.LogViewer.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.showConsoleInline=isc.Browser.isTouch;isc.A.$891=0;isc.A.$f7=25;isc.A.$f8="count";isc.B.push(isc.A.logWindowLoaded=function isc_LogViewer_logWindowLoaded(){return(this._logWindowLoaded&&this._logWindow!=null&&!this._logWindow.closed)}
+,isc.A.showLog=function isc_LogViewer_showLog(_1,_2,_3,_4,_5){if(_5==null)_5=this.showConsoleInline;if(_2)this._logWindow=_2;if(this.logWindowLoaded()){this._logWindow.setResultsValue(isc.Log.getMessages().join("\r"));if(!this.$892){this._logWindow.focus()}
+return}
+if(!isc.Log.logViewer)isc.Log.logViewer=this;if(this._logWindow&&!this._logWindow.closed){return}
+var _6={},_7=(_3?null:isc.LogViewer.getGlobalLogCookie());if(_7!=null){_6=_7}else{_6.left=100;_6.top=100;_6.width=640;_6.height=480}
+if(_5){if(this.inlineWindow==null){this.inlineWindow=isc.Window.create({title:"Inline Developer Console",src:isc.Page.getIsomorphicClientDir()+"helpers/Log.html",animateMinimize:false,width:"50%",height:Math.round(isc.Page.getHeight()*0.8),headerControls:["headerIcon","headerLabel",isc.Button.create({width:16,height:14,title:"TL",layoutAlign:"center",click:function(){isc.Log.logViewer.inlineWindow.moveTo(0,0)}}),isc.Button.create({width:16,height:14,title:"BL",layoutAlign:"center",click:function(){isc.Log.logViewer.inlineWindow.moveTo(0,isc.Page.getHeight()-isc.Log.logViewer.inlineWindow.getHeight())}}),isc.Button.create({width:16,height:14,title:"TR",layoutAlign:"center",click:function(){isc.Log.logViewer.inlineWindow.moveTo(isc.Page.getWidth()-isc.Log.logViewer.inlineWindow.getWidth(),0)}}),isc.Button.create({width:16,height:14,title:"BR",layoutAlign:"center",click:function(){isc.Log.logViewer.inlineWindow.moveTo(isc.Page.getWidth()-isc.Log.logViewer.inlineWindow.getWidth(),isc.Page.getHeight()-isc.Log.logViewer.inlineWindow.getHeight())}}),"minimizeButton","maximizeButton","closeButton"],showMaximizeButton:true,showMinimizeButton:true,canDragReposition:true,canDragResize:true})}
+if(!this.inlineWindow.isDrawn()){this.inlineWindow.draw()}
+this.$892=true}else{var _8="RESIZABLE,WIDTH="+_6.width+",HEIGHT="+_6.height;if(_7){if(isc.Browser.isIE){_8+=",left="+_6.left+",top="+_6.top}else{_8+=",screenX="+_6.left+",screenY="+_6.top}
+if(_7.evals)this.$f9=_7.evals.length-1}
+_4=_4||"_simpleLog";this._logWindow=window.open(isc.Page.getIsomorphicClientDir()+"helpers/Log.html",_4+(isc.version.contains("version")?"Dev":""),_8)}
+this.$ga(_3)}
+,isc.A.$ga=function isc_LogViewer__initLogWindow(_1){if(this._logWindow==null&&this.inlineWindow!=null){var _2=this.inlineWindow.body.$sk();if(_2){this._logWindow=this.inlineWindow.body.$sk().contentWindow}
+if(this._logWindow==null){return}}
+if(this._logWindow==null)return;if(isc.Browser.isIE){try{this._logWindow.$gb=true}catch(e){this.delayCall("$ga",[_1],this.$f7);return}}
+if(isc.Browser.isIE||this.$892){this._logWindow.launchWindow=window;if(this.$892){this._logWindow.showingInline=true}}
+if(_1)this._logWindow.dontSaveState=true;var _3=function(){if(isc.Log.logViewer){var _4=isc.Log.logViewer._logWindow;if(_4&&!_4.closed)_4.focus()}}
+isc.Page.setEvent("idle",_3,isc.Page.FIRE_ONCE);if(this._logWindow.initializePage)this._logWindow.initializePage()}
+,isc.A.addToLog=function isc_LogViewer_addToLog(_1,_2){if(this.logWindowLoaded()&&!this.$gc){this._logWindow.addToLog(_1,_2)}}
+,isc.A.updateStats=function isc_LogViewer_updateStats(_1){if(isc.$gd)return;if(!this.logWindowLoaded())return;var _2=isc.Canvas,_3=this._logWindow.staticForm;if(_1==this.$f8){_3.setValue(_1,_2._canvasList.length-_2._iscInternalCount)}else{_3.setValue(_1,_2._stats[_1])}}
+,isc.A.displayEventTarget=function isc_LogViewer_displayEventTarget(){var _1=isc.EH.lastTarget?isc.EH.lastTarget.getID():"";if(_1==this.$ge)return;this.$ge=_1;if(this.logWindowLoaded()){this._logWindow.staticForm.setValue("currentCanvas",_1)}
+var _2=isc.EH.lastEvent.nativeTarget;var _3=(_2?(_2.id||_2.ID||_2.tagName):'none')
+if(this.logWindowLoaded()){this._logWindow.staticForm.setValue("nativeTarget",_3)}}
+,isc.A.displayFocusTarget=function isc_LogViewer_displayFocusTarget(){var _1=isc.EH.getFocusCanvas(),_2=_1?_1.getID():"";if(_2==this.$gf)return;this.$gf=_2;if(this.logWindowLoaded()){this._logWindow.staticForm.setValue("currentFocusCanvas",_2)}}
+,isc.A.displayMouseDownTarget=function isc_LogViewer_displayMouseDownTarget(){var _1=isc.EH.mouseDownEvent.target,_2=_1?_1.getID():"";if(this.logWindowLoaded()){this._logWindow.staticForm.setValue("lastMouseDown",_2);if(isc.AutoTest!=null&&isc.Log.showLocatorOnMouseDown){var _3=isc.AutoTest.getLocator();this._logWindow.staticForm.setValue("autoTestLocator",_3||"none")}}}
+,isc.A.updateRPC=function isc_LogViewer_updateRPC(){if(this.logWindowLoaded()&&this._logWindow.RPCTracker)
+this._logWindow.RPCTracker.dataChanged()}
+,isc.A.evaluate=function isc_LogViewer_evaluate(_1,_2){return isc.Log.evaluate(_1,_2)}
+,isc.A.clear=function isc_LogViewer_clear(){if(this.logWindowLoaded())this._logWindow.clearResults()}
+);isc.B._maxIndex=isc.C+11;isc.$gg=isc.LogViewer.getGlobalLogCookie();if(isc.$gg!=null){isc.Log.applyLogPriorities(isc.$gg.priorityDefaults)
+if(isc.$gg.defaultPriority!=null)
+isc.Log.defaultPriority=isc.$gg.defaultPriority}else{isc.Log.setPriority("Log",isc.Log.INFO)}
+isc.showConsole=function(_1,_2,_3,_4){isc.showLog(_1,_2,_3,_4)}
+isc.addGlobal("showLog",function(_1,_2,_3,_4){isc.Log.show(_1,_2,_3,_4)})
+isc.addGlobal("showConsoleInline",function(){isc.Log.show(null,null,null,null,true)});isc.Log.logInfo("initialized");isc.Log.$fy();isc.Log.supportsOnError=(isc.Browser.isIE);if(isc.Log.supportsOnError&&!(window.isc_installOnError==false)){window.onerror=function(_1,_2,_3){var _4=arguments.caller,_5;if(_4==null&&arguments.callee.caller!=null){_5=arguments.callee.caller;_4=_5.arguments}
+if(_4&&_4.$e9){return}
+var _6="Error:\r\t'"+_1+"'\r\tin "+_2+"\r\tat line "+_3;if(_5!=null&&_4==null&&isc.Browser.isIE&&isc.Browser.version>=9)
+{_6+="\r\n crashed in: "+isc.Func.getName(_5,true)+"()"+"\r\n Use a pre-9.0 Internet Explorer for best diagnostics, otherwise Firefox or Chrome"}else if(_4!=null){_6+=isc.Log.getStackTrace(_4)}
+isc.Log.logWarn(_6);if(isc.Browser.isIE&&isc.useIEDebugger){if(confirm("Run debugger?\r\r"+_6)){debugger}}}}
+isc.$63a=function(){return"["+this.Class+" ID:"+this.ID+" (created by: "+this.componentId+")]"}
+isc.$63b=function(_1,_2,_3,_4){var _5=isc.Log;if(!_5)return;if(_1==null)_1=_5.defaultPriority;if(_1<=_5.stackTracePriority&&this.getStackTrace!=null){_2+="\nStack trace:\n"+this.getStackTrace(arguments,2)}
+if(!_3)_3=this.Class;_5.log(_1,_2,_3,this.ID+" (created by: "+this.componentId+")",this,_4)}
+isc.A=Array;isc.A.ASCENDING=true;isc.A.DESCENDING=false;isc.A=Array;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.shouldSortAscending=function isc_Array_shouldSortAscending(_1){if(_1==Array.ASCENDING)return true;if(_1==Array.DESCENDING)return false;if(isc.isA.String(_1)){if(_1.toLowerCase()=="ascending")return true;if(_1.toLowerCase()=="descending")return false}
+return null}
+);isc.B._maxIndex=isc.C+1;isc.A=Array.prototype;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.sortByProperty=function isc_Arra_sortByProperty(_1,_2,_3,_4){return this.sortByProperties({property:_1,direction:_2,normalizer:_3,context:_4})}
+,isc.A.setSort=function isc_Arra_setSort(_1){var _2=[],_3=[],_4=[],_5=[];for(var i=0;i<_1.length;i++){var _7=_1[i];_2[i]=_7.property;_3[i]=Array.shouldSortAscending(_7.direction);_4[i]=_7.normalizer;_5[i]=_7.context}
+return this.sortByProperties(_2,_3,_4,_5)}
+,isc.A.sortByProperties=function isc_Arra_sortByProperties(){var _1=isc.$gh,_2=isc.$gi;if(isc.isAn.Array(arguments[0])){this.sortProps=arguments[0];this.sortDirections=arguments[1]||[];this.normalizers=arguments[2]||[];this.contexts=arguments[3]||[]}else{if(!this.sortProps){this.sortProps=[];this.normalizers=[];this.sortDirections=[];this.contexts=[]}else{this.sortProps.clear();this.sortDirections.clear();this.normalizers.clear();this.contexts.clear()}
+for(var i=0;i<arguments.length;i++){this.sortProps[i]=arguments[i].property;this.sortDirections[i]=arguments[i].direction;this.normalizers[i]=arguments[i].normalizer;this.contexts[i]=arguments[i].context}}
+if(this.sortProps==null||this.sortProps.length==0)return this;var _4=this.sortProps,_5=this.normalizers,_6=this.contexts;var _7=isc.timestamp();for(var i=0;i<_4.length;i++){isc.$506[i]=this.sortDirections[i];var _8=_4[i],_9=_5[i],_10=_6[i];var _11;if(_9==null){_11=this.$gj(_4[i])}else if(isc.isA.String(_9)){_11=_9}
+if(_11!=null)_9=Array.$gk(_11);if(_9==null)_9=Array.$gl;this.normalizers[i]=_9;if(this.length==0)continue;_1[i]=[];_2[i]=[];if(isc.isA.Function(_9)){for(var _12=0,l=this.length,_14;_12<l;_12++){_14=this[_12];if(_14==null){isc.$gq=true;continue}
+_14.$gm=_12;var _15=_9(_14,this.sortProps[i],_10);_1[i][_12]=_15;if(_11!=null&&!Array.$gn(_14[this.sortProps[i]],_11)){_2[i][_12]=_14[this.sortProps[i]]}
+var _16;if(isc.isA.SpecialNumber(_15)&&isNaN(_15)){_1[i][_12]=0-Number.MAX_VALUE}}}else{var _17=this.normalizers[i];for(var _12=0,l=this.length,_14;_12<l;_12++){_14=this[_12];if(_14==null){isc.$gq=true;continue}
+var _18=_14[this.sortProps[i]];if(_18==null)_18='';var _15=_17[_18];if(_15==null)_15=_18;_14.$gm=_12;_1[i][_12]=_15}}}
+var _19=false;for(var i=0;i<isc.$gi.length;i++){if(isc.$gi[i].length>0){_19=true;break}}
+isc.$752=_19;var _20=isc.$gh,_21=isc.$506,_19=isc.$752;var _22=this;_22.compareAscending=Array.compareAscending;_22.compareDescending=Array.compareDescending;var _23=function(_32,_33){var _24=(_32!=null?_32.$gm:null),_25=(_33!=null?_33.$gm:null);for(var i=0;i<_20.length;i++){var _26=_20[i][_24],_27=_20[i][_25];if(_19&&_26!=null&&_27!=null){var _28=isc.$gi,_29=_28[i][_24],_30=_28[i][_25];if(_29!=null&&_30!=null){_26=_29;_27=_30}}
+var _31=(_21[i]?_22.compareAscending(_26,_27):_22.compareDescending(_26,_27));if(_31!=0)return _31}
+return 0};var _7=isc.timeStamp();this.sort(_23);if(isc.$gq){isc.Log.logWarn("Attempt to sort array by property hit null entry where a record should be. Array:"+isc.Log.echo(this));isc.$gq=null}
+this.clearProperty("$gm");_1.clear();_2.clear();isc.$506.clear();this.dataChanged();return this}
+,isc.A.unsort=function isc_Arra_unsort(){if(this.sortProps)this.sortProps.clear();return true}
+,isc.A.$gj=function isc_Arra__getSortDataType(_1,_2){var _3=(_2!=null?(isc.isAn.Array(_2)?_2:[_2]):this);for(var i=0;i<_3.length;i++){if(!isc.isAn.Object(_3[i]))continue;_2=_3[i][_1];if(_2==null)continue;var _5=Array.$gr(_2);if(_5!=null)return _5}
+return null}
+,isc.A.$gs=function isc_Arra__getNormalizer(_1,_2){var _3=this.$gj(_1,_2);var _4=Array.$gk(_3);return _4||Array.$gl}
+,isc.A.normalize=function isc_Arra_normalize(_1,_2){var _3=(this.normalizer?this.normalizer:this.$gs(_2,_1));return _3(_1,_2)}
+);isc.B._maxIndex=isc.C+7;isc.A=Array;isc.A.$gt="$gu";isc.A.$gv="$gw";isc.A=Array;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$a6="string";isc.A.$gx="text";isc.A.$gy="number";isc.A.$gz="integer";isc.A.$g0="float";isc.A.$g1="int";isc.A.$g2="boolean";isc.A._$Date_="Date";isc.A.$g3="Time";isc.A.$68l="datetime";isc.A.$89w="Datetime";isc.A.$g4="date";isc.A.$g5="time";isc.A.$bl="object";isc.A.$g6={"float":"number","int:":"number","integer":"number","text":"string","Date":"date","Time":"date","time":"date"};isc.B.push(isc.A.$gl=function isc_Array__normalizeObj(_1,_2){return _1[_2]}
+,isc.A.$g7=function isc_Array__normalizeStr(_1,_2){return(isc.isA.String(_1[_2])?_1[_2].toLowerCase():isc.emptyString)}
+,isc.A.$g8=function isc_Array__normalizeNum(_1,_2){var _3=_1[_2];return isc.isA.Number(_3)?_3:(0-Number.MAX_VALUE)}
+,isc.A.$g9=function isc_Array__normalizeBool(_1,_2){var _3=_1[_2];if(_3==true)return 1;if(_3==false)return 0;if(_3==null)return-1;return-2}
+,isc.A.$ha=function isc_Array__normalizeDate(_1,_2){var _3=(_1[_2]&&isc.isA.Date(_1[_2])?_1[_2].getTime():new Date(_1[_2]).getTime())
+if(isNaN(_3))return-8640000000000000;return _3}
+,isc.A.$hb=function isc_Array__normalizeTime(_1,_2){var _3=_1[_2];if(!isc.isA.Date(_3)&&_3!=null)_3=isc.Time.parseInput(_3);if(isc.isA.Date(_3))return _3.getTime();return 0}
+,isc.A.textToNumericNormalizer=function isc_Array_textToNumericNormalizer(_1,_2){var _3=parseInt(_1[_2],10);if(isc.isA.Number(_3))return _3;else return 0}
+,isc.A.$gk=function isc_Array__getNormalizerFromType(_1){if(!_1||!isc.isA.String(_1))return null;switch(_1){case this.$a6:case this.$gx:return Array.$g7;case this.$g2:return Array.$g9;case this._$Date_:case this.$g4:case this.$89w:case this.$68l:return Array.$ha;case this.$g3:case this.$g5:return Array.$hb;case this.$gy:case this.$gz:case this.$g1:case this.$g0:return Array.$g8}
+return Array.$gl}
+,isc.A.$gr=function isc_Array__getType(_1){var _2=typeof _1;if(_2==this.$bl){if(isc.isA.Date(_1))_2=this.$g4}
+return _2}
+,isc.A.$gn=function isc_Array__matchesType(_1,_2){var _3=this.$gr(_1);if(_3==_2)return true;return(this.$g6[_2]==_3)}
+,isc.A.compareAscending=function isc_Array_compareAscending(_1,_2){if(_1!=null&&_1.localeCompare!=null){var _3=_1.localeCompare(_2);return _3}
+if(_2!=null&&_2.localeCompare!=null){var _3=_2.localeCompare(_1);return _3}
+return(_2>_1?-1:_2<_1?1:0)}
+,isc.A.compareDescending=function isc_Array_compareDescending(_1,_2){if(_1!=null&&_1.localeCompare!=null){var _3=_1.localeCompare(_2);return-1*_3}
+if(_2!=null&&_2.localeCompare!=null){var _3=_2.localeCompare(_1);return-1*_3}
+return(_2<_1?-1:_2>_1?1:0)}
+,isc.A.safariCompareAscending=function isc_Array_safariCompareAscending(_1,_2){if(_1!=null&&_1.localeCompare!=null){var _3=_1.localeCompare(_2);return _3-2}
+if(_2!=null&&_2.localeCompare!=null){var _3=_2.localeCompare(_1);return _3-2}
+return(_2>_1?-1:_2<_1?1:0)}
+,isc.A.safariCompareDescending=function isc_Array_safariCompareDescending(_1,_2){if(_1!=null&&_1.localeCompare!=null){var _3=_1.localeCompare(_2);return-1*(_3-2)}
+if(_2!=null&&_2.localeCompare!=null){var _3=_2.localeCompare(_1);return-1*(_3-2)}
+return(_2<_1?-1:_2>_1?1:0)}
+);isc.B._maxIndex=isc.C+14;isc.$gh=[];isc.$gi=[];isc.$506=[];(function(){if(isc.Browser.isSafari){var b="b";if(b.localeCompare("a")==3){Array.compareAscending=Array.safariCompareAscending;Array.compareDescending=Array.safariCompareDescending}}})();isc.A=Array.prototype;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.max=function isc_Arra_max(_1,_2){if(_1==null)_1=0;if(_2==null)_2=this.length;var _3=null;for(var i=_1;i<_2;i++){var _5=this[i];if(isc.isA.Number(_5)){if(_3==null)_3=_5;else _3=Math.max(_3,_5)}}
+return _3}
+,isc.A.min=function isc_Arra_min(_1,_2){if(_1==null)_1=0;if(_2==null)_2=this.length;var _3=null;for(var i=_1;i<_2;i++){var _5=this[i];if(isc.isA.Number(_5)){if(_3==null)_3=_5;else _3=Math.min(_3,_5)}}
+return _3}
+,isc.A.sum=function isc_Arra_sum(_1,_2){if(_1==null)_1=0;if(_2==null)_2=this.length;var _3=0;for(var i=_1;i<_2;i++)
+if(isc.isA.Number(this[i]))_3+=this[i];return _3}
+,isc.A.and=function isc_Arra_and(_1,_2){if(_1==null)_1=0;if(_2==null)_2=this.length;for(var i=_1;i<_2;i++)
+if(!this[i])return false;return true}
+,isc.A.or=function isc_Arra_or(_1,_2){if(_1==null)_1=0;if(_2==null)_2=this.length;var _3=0;for(var i=_1;i<_2;i++)
+if(this[i])return true;return false}
+);isc.B._maxIndex=isc.C+5;isc.getValueForKey=function(_1,_2,_3){if(_2&&_2[_1]!=null&&!isc.isAn.Array(_2))return _2[_1];return(arguments.length<3?_1:_3)}
+isc.getKeyForValue=function(_1,_2,_3){if(_2){for(var _4 in _2){if(_2[_4]==_1)return _4}}
+return(arguments.length<3?_1:_3)}
+isc.makeReverseMap=function(_1){var _2={},_3;for(var _4 in _1){_3=_1[_4];_2[_3]=_4}
+return _2}
+isc.sortByKey=function(_1){var _2={},_3=isc.getKeys(_1).sort();for(var i=0;i<_3.length;i++){_2[_3[i]]=_1[_3[i]]}
+return _2}
+isc.sortByValue=function(_1){return isc.makeReverseMap(isc.sortByKey(isc.makeReverseMap(_1)))}
+isc.ClassFactory.defineClass("Time");isc.A=isc.Time;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$he=[/^\s*(\d?\d)\s*[: ]\s*(\d?\d)\s*[: ]\s*(\d?\d)?\s*([AaPp][Mm]?)?\s*([+-]\d{2}:\d{2}|Z)?\s*$/,/^\s*(\d?\d)\s*[: ]\s*(\d?\d)(\s*)([AaPp][Mm]?)?\s*([+-]\d{2}:\d{2}|Z)?\s*$/,/^\s*(\d\d)(\d\d)(\d\d)?\s*([AaPp][Mm]?)?\s*([+-]\d{2}:\d{2}|Z)?\s*$/,/^\s*(\d)(\d\d)(\d\d)?\s*([AaPp][Mm]?)?\s*([+-]\d{2}:\d{2}|Z)?\s*$/,/^\s*(\d\d?)(\s)?(\s*)([AaPp][Mm]?)?\s*([+-]\d{2}:\d{2}|Z)?\s*$/];isc.A.formatterMap={toTime:{showSeconds:true,padded:false,show24:false},to24HourTime:{showSeconds:true,padded:false,show24:true},toPaddedTime:{showSeconds:true,padded:true,show24:false},toPadded24HourTime:{showSeconds:true,padded:true,show24:true},toShortTime:{showSeconds:false,padded:false,show24:false},toShort24HourTime:{showSeconds:false,padded:false,show24:true},toShortPaddedTime:{showSeconds:false,padded:true,show24:false},toShortPadded24HourTime:{showSeconds:false,padded:true,show24:true}};isc.A.displayFormat="toTime";isc.A.shortDisplayFormat="toShortTime";isc.A.AMIndicator=" am";isc.A.PMIndicator=" pm";isc.B.push(isc.A.setDefaultDisplayTimezone=function isc_c_Time_setDefaultDisplayTimezone(_1,_2){this.$854=!_2;if(_1==null)return;var _3,_4;if(isc.isA.Number(_1)){_1=-_1;_3=Math.floor(_1/ 60);_4=_1-(_3*60)}else if(isc.isA.String(_1)){var _5=_1.split(":");_3=_5[0];var _6=_3&&_3.startsWith("-");if(_6)_3=_3.substring(1);_4=_5[1];_3=(_6?-1:1)*parseInt(_3,10);_4=(_6?-1:1)*parseInt(_4,10)}
+if(isc.isA.Number(_3)&&isc.isA.Number(_4)){this.UTCHoursDisplayOffset=_3;this.UTCMinutesDisplayOffset=_4}}
+,isc.A.getDefaultDisplayTimezone=function isc_c_Time_getDefaultDisplayTimezone(){var H=this.UTCHoursDisplayOffset,M=this.UTCMinutesDisplayOffset,_3=H<0;return(!_3?"+":"-")+((_3?-1:1)*H).stringify(2)+":"+((_3?-1:1)*M).stringify(2)}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.Time;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$hf=[null,":",null,":"];isc.A.$hg=[null,":"];isc.B.push(isc.A.toTime=function isc_c_Time_toTime(_1,_2,_3){return this.format(_1,_2,false,_3)}
+,isc.A.toShortTime=function isc_c_Time_toShortTime(_1,_2,_3){return this.format(_1,_2,true,_3)}
+,isc.A.format=function isc_c_Time_format(_1,_2,_3,_4){if(!isc.isA.Date(_1))return _1;var _5=_2;if(!_2&&!isc.isA.String(_2)&&!isc.isA.Function(_2)){_2=_3?this.shortDisplayFormat:this.displayFormat}
+if(isc.isA.Function(_2))return _2(_1,_4);if(isc.isA.String(_2))_2=this.formatterMap[_2];if(!isc.isAn.Object(_2)){this.logWarn("Invalid time formatter:"+_5+" - using 'toTime'");_2=this.formatterMap.toTime}
+var _6=_2.showSeconds,_7=_2.padded,_8=_2.show24;var _9;if(_4!=null)_9=!_4;else _9=!_1.logicalTime&&!_1.logicalDate;var _10,_11;if(!_9){_10=_1.getHours();_11=_1.getMinutes()}else{var _10=_1.getUTCHours(),_11=_1.getUTCMinutes();var _12=this.$68d(_10,_11,this.getUTCHoursDisplayOffset(_1),this.getUTCMinutesDisplayOffset(_1));_10=_12[0];_11=_12[1]}
+var _13=_6?_1.getUTCSeconds():null,_14=_8?null:(_10>=12);if(!_8){if(_10>12)_10=_10-12;if(_10==0)_10=12}
+if(_7)_10=_10.stringify(2);var _15=_6?this.$hf:this.$hg;_15[0]=_10;_15[2]=_11.stringify();if(_6)_15[4]=_13.stringify();if(!_8)_15[5]=(_14?this.PMIndicator:this.AMIndicator);else _15[5]=null;return _15.join(isc.emptyString)}
+,isc.A.parseInput=function isc_c_Time_parseInput(_1,_2,_3,_4,_5){var _6=0,_7=0,_8=0,_9=0;var _10,_11;if(isc.isA.Date(_1)){_3=true;_6=_1.getUTCHours();_7=_1.getUTCMinutes();_8=_1.getUTCSeconds();_9=_1.getUTCMilliseconds()}else if(_1){for(var i=0;i<isc.Time.$he.length;i++){var _13=isc.Time.$he[i].exec(_1);if(_13)break}
+if(_13){var _6=Math.min(parseInt(_13[1]|0,10),23),_7=Math.min(parseInt(_13[2]|0,10),59),_8=Math.min(parseInt(_13[3]|0,10),59),_14=_13[4];;if(_14){if(!this.$hh)this.$hh={p:true,P:true,pm:true,PM:true,Pm:true};if(this.$hh[_14]==true){if(_6<12)_6+=12}else if(_6==12)_6=0}
+if(_4&&_13[5]!=null&&_13[5]!=""&&_13[5].toLowerCase()!="z"){var _15=_13[5].split(":"),H=_15[0],_17=H&&H.startsWith("-"),M=_15[1];_10=parseInt(H,10);_11=(_17?-1:1)*parseInt(M,10)}}else if(_2)return null}else if(_2)return null;var _19=_4&&_5!=null?_5.duplicate():new Date(null);if(_4||_3){if(_10==null){_10=_3?0:this.getUTCHoursDisplayOffset(_19)}
+if(_11==null){_11=_3?0:this.getUTCMinutesDisplayOffset(_19)}
+var _20=this.$68d(_6,_7,(0-_10),(0-_11));_6=_20[0];_7=_20[1];if(_6!=null)_19.setUTCHours(_6);if(_7!=null)_19.setUTCMinutes(_7);if(_8!=null)_19.setUTCSeconds(_8);if(_9!=null)_19.setUTCMilliseconds(_9)}else{if(_6!=null)_19.setHours(_6);if(_7!=null)_19.setMinutes(_7);if(_8!=null)_19.setSeconds(_8);if(_9!=null)_19.setMilliseconds(_9)}
+if(!_4)_19.logicalTime=true;return _19}
+,isc.A.$68d=function isc_c_Time__applyTimezoneOffset(_1,_2,_3,_4){if(_2==null||_1==null){this.logWarn("applyTimezoneOffset passed null hours/minutes");return[_1,_2]}
+if(_3==null)_3=0;if(_4==null)_3=0;if(_3==0&&_4==0)return[_1,_2,0];_1+=_3;_2+=_4;while(_2>=60){_2-=60;_1+=1}
+while(_2<0){_2+=60;_1-=1}
+var _5=0;while(_1>=24){_1-=24;_5+=1}
+while(_1<0){_1+=24;_5-=1}
+return[_1,_2,_5]}
+,isc.A.createDate=function isc_c_Time_createDate(_1,_2,_3,_4,_5){return this.createLogicalTime(_1,_2,_3,_4,_5)}
+,isc.A.createLogicalTime=function isc_c_Time_createLogicalTime(_1,_2,_3,_4,_5){var _6=new Date(null);if(_1==null)_1=0;if(_2==null)_2=0;if(_3==null)_3=0;if(_4==null)_4=0;if(_5){_6.setUTCHours(_1);_6.setUTCMinutes(_2);_6.setUTCSeconds(_3);_6.setUTCMilliseconds(_4)}else{_6.setHours(_1);_6.setMinutes(_2);_6.setSeconds(_3);_6.setMilliseconds(_4)}
+_6.logicalTime=true;return _6}
+,isc.A.setShortDisplayFormat=function isc_c_Time_setShortDisplayFormat(_1){this.shortDisplayFormat=_1}
+,isc.A.setNormalDisplayFormat=function isc_c_Time_setNormalDisplayFormat(_1){this.displayFormat=_1}
+,isc.A.compareTimes=function isc_c_Time_compareTimes(_1,_2){if(isc.isA.String(_1))_1=isc.Time.parseInput(_1);if(isc.isA.String(_2))_2=isc.Time.parseInput(_2);if(_1==null&&_2==null)return true;if(!isc.isA.Date(_1)||!isc.isA.Date(_2))return false;return((_1.getUTCHours()==_2.getUTCHours())&&(_1.getUTCMinutes()==_2.getUTCMinutes())&&(_1.getUTCSeconds()==_2.getUTCSeconds()))}
+,isc.A.$76r=function isc_c_Time__performDstInit(){var _1=new Date(),_2=new Date(0),_3=new Date(0);_2.setUTCFullYear(_1.getUTCFullYear());_2.setUTCMonth(0);_2.setUTCDate(1);_3.setUTCFullYear(_1.getUTCFullYear());_3.setUTCMonth(6);_3.setUTCDate(1);var _4=_1.getTimezoneOffset();this.januaryDstOffset=_2.getTimezoneOffset();var _5=_3.getTimezoneOffset();this.dstDeltaMinutes=this.januaryDstOffset-_5;if(this.dstDeltaMinutes>0){this.southernHemisphere=false;this.adjustForDST=true;if(_4==_5)this.currentlyInDST=true}else if(this.dstDeltaMinutes<0){this.southernHemisphere=true;this.adjustForDST=true;if(_4==this.januaryDstOffset)this.currentlyInDST=true}else{this.adjustForDST=false}
+this.dstDeltaMinutes=Math.abs(this.dstDeltaMinutes);this.dstDeltaHours=Math.floor(this.dstDeltaMinutes/ 60);this.dstDeltaMinutes-=(this.dstDeltaHours*60)}
+,isc.A.getUTCHoursDisplayOffset=function isc_c_Time_getUTCHoursDisplayOffset(_1){var _2=this.currentlyInDST?-(this.dstDeltaHours):0;if(this.adjustForDST){if(_1.getTimezoneOffset()==this.januaryDstOffset){if(this.southernHemisphere){_2+=this.dstDeltaHours}}else{if(!this.southernHemisphere){_2+=this.dstDeltaHours}}}
+return this.UTCHoursDisplayOffset+(this.adjustForDST?_2:0)}
+,isc.A.getUTCMinutesDisplayOffset=function isc_c_Time_getUTCMinutesDisplayOffset(_1){var _2=this.currentlyInDST?-(this.dstDeltaMinutes):0;if(this.adjustForDST){if(_1.getTimezoneOffset()==this.januaryDstOffset){if(this.southernHemisphere){_2+=this.dstDeltaMinutes}}else{if(!this.southernHemisphere){_2+=this.dstDeltaMinutes}}}
+return this.UTCMinutesDisplayOffset+(this.adjustForDST?_2:0)}
+);isc.B._maxIndex=isc.C+13;isc.Time.$76r();isc.Time.setDefaultDisplayTimezone(new Date().getTimezoneOffset(),true);isc.ClassFactory.defineClass("Page");isc.A=isc.Page;isc.A.$hi=[];isc.A.$hj=false;isc.A.defaultUnsupportedBrowserURL="[SKIN]/unsupported_browser.html";isc.A.$hk={};isc.A.protocolURLs=window.isc_protocolURLs||["http://","https://","file://","mailto:","app-resource:","data:"];isc.A.textDirection=null;isc.A.LTR="ltr";isc.A.RTL="rtl";isc.A=isc.Page;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$hm="[SKIN]";isc.A.$hn="[SKIN]/";isc.A.$ho="[";isc.A.$hp="./";isc.A.$hq="..";isc.A.leaveScrollbarGap=isc.Browser.isMoz&&isc.Browser.geckoVersion<20051107;isc.A.getWidth=(isc.Browser.isNS?function(_1,_2){if(!_1)_1=window;_2=_2||(isc.Browser.isMoz&&isc.Browser.geckoVersion>=20080529);if(isc.Browser.isMoz&&_1==window&&!_2){if(this.width!=null){return this.width-(this.leaveScrollbarGap?(isc.Element?isc.Element.getNativeScrollbarSize():16):0)}
+this.logInfo("NOTE: isc.Page.getWidth() unable to determine page width. Returning 500","sizing");return 500}else{var _3=isc.Browser.geckoVersion!=null&&isc.Browser.geckoVersion<20051111;var _4=!this.leaveScrollbarGap&&!_3&&_1.document.body!=null,_5;if(_4){var _6=isc.Browser.isStrict?_1.document.documentElement:_1.document.body;if(_6!=null)_5=_6.clientWidth}
+if(_5==null||_5==0){_5=_1.innerWidth}
+if(_1==window)this.width=_5;return _5}}:function(_1){if(!_1)_1=window;var _2=_1.document.body;if(isc.Browser.isStrict&&!isc.Browser.isOpera)
+_2=_1.document.documentElement;if(_2){return _2.clientWidth}else{if(!isc.Page.isLoaded()){isc.Page.setEvent("load","isc.EH.$hr()",isc.Page.FIRE_ONCE)}
+this.logWarn("NOTE: isc.Page.getWidth() called before <BODY> tag was written out -- "+"value cannot be determined. Returning 500");return 500}});isc.A.getHeight=(isc.Browser.isNS?function(_1,_2){if(!_1)_1=window;_2=_2||(isc.Browser.isMoz&&isc.Browser.geckoVersion>=20080529);if(isc.Browser.isMoz&&_1==window&&!_2){if(this.height!=null)return this.height;return 500}else{var _3=isc.Browser.isMobileWebkit||(!isc.Browser.isStrict&&isc.Browser.geckoVersion>=20051111)&&_1.document.body!=null,_4;if(_3){_4=_1.document.body.clientHeight}
+if(_4==null||_4==0){_4=_1.innerHeight}
+if(isc.Browser.isTouch&&(isc.Browser.isAndroid||isc.Browser.isRIM)){if(this.$893==null){this.$893=_4;this.$26u=isc.Page.getWidth(_1,_2);this.$92c=this.getOrientation()}else{if(_4!=this.$893){var _5=this.getOrientation();var _6=isc.Page.getWidth(_1,_2);if(_6!=this.$26u||_5!=this.$92c){this.$92c=_5;this.$893=_4;this.$26u=_6}else{_4=this.$893}}}}
+if(_1==window)this.height=_4;return _4}}:function(_1){if(!_1)_1=window;var _2=_1.document.body;if(isc.Browser.isStrict&&!isc.Browser.isOpera)
+_2=_1.document.documentElement;if(_2){return _2.clientHeight}else{this.logWarn("NOTE: isc.Page.getHeight() called before <BODY> tag was written out -- value cannot be determined. Returning 500");return 500}});isc.A.getScrollLeft=(isc.Browser.isNS?function(){return window.pageXOffset}:function(){if(document==null||document.body==null)return 0;return(isc.Browser.isStrict?document.documentElement.scrollLeft:document.body.scrollLeft)});isc.A.getScrollTop=(isc.Browser.isNS?function(){return window.pageYOffset}:function(){if(document==null||document.body==null)return 0;return(isc.Browser.isStrict?document.documentElement.scrollTop:document.body.scrollTop)});isc.A.unsupportedBrowserAction="continue";isc.B.push(isc.A.finishedLoading=function isc_c_Page_finishedLoading(){isc.Page.$hj=true;isc.Log.logInfo("isc.Page is loaded");isc.EH.startIdleTimer();if(isc.Browser.isSafari)isc.Canvas.clearCSSCaches();if(!window.suppressAutoLogWindow){var _1=isc.LogViewer.getLogCookie();if(_1!=null&&_1.keepOpen){isc.Timer.setTimeout("isc.Log.show(true)",1000)}}
+if(isc.Time&&isc.Time.UTCHoursOffset!=null){isc.logWarn("This application includes code to set the Time.UTCHoursOffset attribute. "+"This property will be respected but has been deprecated in favor of the "+"classMethod isc.Time.setDefaultDisplayTimezone().");isc.Time.setDefaultDisplayTimezone(isc.Time.UTCHoursOffset.stringify()+":00")}
+if(isc.Page.pollPageSize){isc.EH.$hr()}else{isc.EH.delayCall("$hr",[true],200)}}
+,isc.A.isLoaded=function isc_c_Page_isLoaded(){return this.$hj}
+,isc.A.getBlankFrameURL=function isc_c_Page_getBlankFrameURL(){if(isc.Browser.isIE&&("https:"==window.location.protocol||document.domain!=location.hostname)){return this.getURL("[HELPERS]empty.html")}
+return"about:blank"}
+,isc.A.setTitle=function isc_c_Page_setTitle(_1){document.title=_1}
+,isc.A.setDirectories=function isc_c_Page_setDirectories(_1){if(_1==null){_1={imgDir:window.imgDir,isomorphicDir:(window.isomorphicDir?window.isomorphicDir:window.IsomorphicDir),isomorphicClientDir:window.isomorphicClientDir,isomorphicDocsDir:window.isomorphicDocsDir,skinDir:window.skinDir,helperDir:window.helperDir}}
+this.$hs();this.setIsomorphicDir(_1.isomorphicDir);this.setIsomorphicClientDir(_1.isomorphicClientDir);this.setIsomorphicDocsDir(_1.isomorphicDocsDir);this.setAppImgDir(_1.imgDir);this.setSkinDir(_1.skinDir);this.setHelperDir(_1.helperDir)}
+,isc.A.$hs=function isc_c_Page__deriveAppDir(){var _1=window.location.href;if(_1.contains("?"))_1=_1.substring(0,_1.indexOf("?"));if(_1.contains("#"))_1=_1.substring(0,_1.indexOf("#"));if(_1.charAt(_1.length-1)!="/"){_1=_1.substring(0,_1.lastIndexOf("/")+1)}
+this.$hk.APP=_1;if(this.logIsInfoEnabled()){this.logInfo("app dir is "+this.$hk.APP)}
+this.setAppImgDir()}
+,isc.A.getAppDir=function isc_c_Page_getAppDir(){return this.$hk.APP}
+,isc.A.setAppImgDir=function isc_c_Page_setAppImgDir(_1){this.$hk.APPIMG=this.combineURLs(this.getAppDir(),_1!=null?_1:"[APP]images/")}
+,isc.A.getAppImgDir=function isc_c_Page_getAppImgDir(_1){if(_1!=null&&(isc.startsWith(_1,isc.slash)||this.getProtocol(_1)!=isc.emptyString))
+{return _1}
+if(_1)return this.$hk.APPIMG+_1;else return this.$hk.APPIMG}
+,isc.A.setAppFilesDir=function isc_c_Page_setAppFilesDir(_1){this.$hk.APPFILES=this.combineURLs(this.getAppDir(),_1)}
+,isc.A.getAppFilesDir=function isc_c_Page_getAppFilesDir(_1){return this.$hk.APPFILES}
+,isc.A.setIsomorphicDir=function isc_c_Page_setIsomorphicDir(_1){this.$hk.ISOMORPHIC=this.combineURLs(this.getAppDir(),_1!=null?_1:"../isomorphic/");this.setIsomorphicClientDir();this.setIsomorphicDocsDir()}
+,isc.A.getIsomorphicDir=function isc_c_Page_getIsomorphicDir(){return this.$hk.ISOMORPHIC}
+,isc.A.setSkinDir=function isc_c_Page_setSkinDir(_1){this.$hk.SKIN=this.combineURLs(this.getAppDir(),_1!=null?_1:"[ISOMORPHIC]/skins/standard/");this.$hk.SKINIMG=this.$hk.SKIN+"images/";if(isc.Canvas)isc.Canvas.$ht=isc.Canvas.$hu=null}
+,isc.A.getSkinDir=function isc_c_Page_getSkinDir(){return this.$hk.SKIN}
+,isc.A.getSkinImgDir=function isc_c_Page_getSkinImgDir(_1){if(_1==null)return this.$hk.SKINIMG;return this.combineURLs(this.$hk.SKIN,_1)}
+,isc.A.setIsomorphicClientDir=function isc_c_Page_setIsomorphicClientDir(_1){this.$hk.ISOMORPHIC_CLIENT=this.combineURLs(this.getAppDir(),_1!=null?_1:"[ISOMORPHIC]/system/");this.setSkinDir();this.setHelperDir()}
+,isc.A.getIsomorphicClientDir=function isc_c_Page_getIsomorphicClientDir(){return this.$hk.ISOMORPHIC_CLIENT}
+,isc.A.setIsomorphicDocsDir=function isc_c_Page_setIsomorphicDocsDir(_1){this.$hk.ISOMORPHIC_DOCS=this.combineURLs(this.getAppDir(),_1!=null?_1:"[ISOMORPHIC]/system/reference/");this.setIsomorphicDocsSkinDir()}
+,isc.A.getIsomorphicDocsDir=function isc_c_Page_getIsomorphicDocsDir(){return this.$hk.ISOMORPHIC_DOCS}
+,isc.A.setIsomorphicDocsSkinDir=function isc_c_Page_setIsomorphicDocsSkinDir(_1){this.$hk.ISO_DOCS_SKIN=this.combineURLs(this.getIsomorphicDocsDir(),_1!=null?_1:"skin/")}
+,isc.A.getIsomorphicDocsSkinDir=function isc_c_Page_getIsomorphicDocsSkinDir(){return this.$hk.ISO_DOCS_SKIN}
+,isc.A.setHelperDir=function isc_c_Page_setHelperDir(_1){this.$hk.HELPERS=this.combineURLs(this.getAppDir(),_1!=null?_1:"[ISOMORPHIC_CLIENT]/helpers/")}
+,isc.A.getHelperDir=function isc_c_Page_getHelperDir(){return isc.Page.$hk.HELPERS}
+,isc.A.getImgURL=function isc_c_Page_getImgURL(_1,_2){var _3;if(isc.startsWith(_1,this.$hm)){_3=isc.Page.getSkinImgDir(_2);var _4=isc.startsWith(_1,this.$hn)?7:6;_1=_1.substring(_4)}else{_3=isc.Page.getAppImgDir(_2)}
+return isc.Page.combineURLs(_3,_1)}
+,isc.A.getURL=function isc_c_Page_getURL(_1){if(isc.startsWith(_1,this.$ho)){var _2=_1.indexOf("]");if(_2>0){var _3=_1.substring(1,_2).toUpperCase(),_4=isc.Page.$hk[_3];if(_4!=null){_1=isc.Page.combineURLs(_4,_1.substring(_2+(_1.charAt(_2+1)!="/"?1:2)))}else{this.logDebug("getURL("+_1+"): couldn't find cached directory "+_3)}}else{this.logDebug("getURL("+_1+"): didn't find matching ']' in URL")}}
+return _1}
+,isc.A.combineURLs=function isc_c_Page_combineURLs(_1,_2){if(!isc.isA.String(_2))return _1;if(isc.startsWith(_2,this.$ho)){return this.getURL(_2)}
+var _3=isc.$ad;if(_1==null||_1==_3||isc.Page.getProtocol(_2)!=_3){return _2}
+var _4=isc.slash;var _5=isc.Page.getProtocol(_1);if(isc.startsWith(_2,_4)){if(isc.isAn.emptyString(_5)){_1=isc.emptyString}else if(_1.indexOf(_4,_5.length)!=-1){_1=_1.substring(0,_1.indexOf(_4,_5.length))}}else if(_2.indexOf(this.$hp)>-1){_1=_1.substring(_5.length,_1.length-1);var _6=_1.split(_4),_7=_2.split(_4);var _8=_6[0];_6.shift();while(_7[0]==isc.dot||_7[0]==this.$hq){if(_7[0]==isc.dot){_7.shift();continue}
+_7.shift();if(_6.length==0)break;_6.pop()}
+_1=_5+_8+_4;if(_6.length>0)_1+=_6.join(_4)+_4;_2=_7.join(_4)}
+return _1+_2}
+,isc.A.getProtocol=function isc_c_Page_getProtocol(_1){for(var i=0;i<isc.Page.protocolURLs.length;i++){if(isc.startsWith(_1,isc.Page.protocolURLs[i]))return isc.Page.protocolURLs[i]}
+return isc.$ad}
+,isc.A.getLastSegment=function isc_c_Page_getLastSegment(_1){if(_1==null)return isc.emptyString;var _2=_1.lastIndexOf(isc.slash);if(_2==-1)return _1;return _1.substring(_2+1)}
+,isc.A.isXHTML=function isc_c_Page_isXHTML(){if(this.$hv!=null)return this.$hv;if(isc.Browser.isIE)return false;var _1=this.getWindow();return(this.$hv=(this.getDocument().constructor==this.getWindow().XMLDocument))}
+,isc.A.isRTL=function isc_c_Page_isRTL(){return this.getTextDirection()==isc.Canvas.RTL}
+,isc.A.getTextDirection=function isc_c_Page_getTextDirection(){if(this.textDirection==null){var _1=document.documentElement,_2=document.body,_3=(_2?_2.dir:null)||_1.dir;if(_3)return(this.textDirection=_3.toLowerCase());else if(_2)return(this.textDirection=this.LTR);return this.LTR}
+return this.textDirection}
+,isc.A.loadStyleSheet=function isc_c_Page_loadStyleSheet(_1,_2,_3){var _4=isc.Page.getURL(_1);var _5="<link rel='stylesheet' type='text/css' href=\""+_4+"\"\/>";if(_2==null)_2=window;if(isc.Page.isLoaded()&&_2==window){if(isc.FileLoader){var _6=isc.FileLoader.$hw;if(_6!=null){for(var i=0;i<_6.length;i++){if(_4.indexOf(_6[i])!=-1){this.logDebug("skin "+_6[i]+" already loaded by FileLoader - not loading css file");return}}}
+isc.FileLoader.loadCSSFile(_4,_3)}else{this.logWarn("isc.Page.loadStylesheet('"+_1+"') called after page load. Stylesheet not loaded.")}}else{if(this.isXHTML()){var _8=this.getDocument(),_9=_8.documentElement.firstChild,_10=_8.createElementNS(_8.documentElement.namespaceURI,"link");_10.rel="stylesheet";_10.type="text/css";_10.href=_4;_9.appendChild(_10);this.logWarn("added stylesheet DOM style")}else{_2.document.write(_5)}}}
+,isc.A.resizeTo=function isc_c_Page_resizeTo(_1,_2){window.resizeTo(_1,_2)}
+,isc.A.moveTo=function isc_c_Page_moveTo(_1,_2){window.moveTo(_1,_2)}
+,isc.A.scrollTo=function isc_c_Page_scrollTo(_1,_2){window.scroll(_1,_2)}
+,isc.A.getOrientation=function isc_c_Page_getOrientation(){if(window.orientation!=null){return window.orientation==0||window.orientation==180?"portrait":"landscape"}
+return this.getWidth()>this.getHeight()?"landscape":"portrait"}
+,isc.A.updateViewport=function isc_c_Page_updateViewport(_1,_2,_3,_4){var _5=[];if(_1!=null){if(isc.isA.Number(_1))_1=_1.toFixed(2);_5[_5.length]=("initial-scale="+_1)}
+if(_2!=null)_5[_5.length]=("width="+_2);if(_3!=null)_5[_5.length]=("height="+_3);if(_4!=null){_5[_5.length]=("user-scalable="+(_4==false?"no":"yes"));if(_4==false&&_1!=null){_5[_5.length]="minimum-scale="+_1+", maximum-scale="+_1}}
+_5=_5.join(", ");var _6=document.getElementsByTagName("meta"),_7;for(var i=_6.length-1;i>=0;i--){if(_6[i].name=="viewport"){_7=_6[i];_7.parentNode.removeChild(_7);_7=null}}
+if(_7!=null){_7.content=_5}else{_7=document.createElement('meta');_7.name='viewport';_7.content=_5;document.getElementsByTagName('head')[0].appendChild(_7)}}
+,isc.A.getScrollWidth=function isc_c_Page_getScrollWidth(_1){var _1=_1||document;if(_1==null||_1.body==null)return 500;if(isc.Browser.isIE&&isc.Browser.version>=6){return Math.max(_1.body.scrollWidth,_1.documentElement.clientWidth)}
+return _1.body.scrollWidth}
+,isc.A.getScrollHeight=function isc_c_Page_getScrollHeight(_1){var _1=_1||document;if(_1==null||_1.body==null){return this.getHeight()}
+var _2=_1.body.scrollHeight;if(isc.Browser.isStrict){var _3=_1.documentElement;if(_3){var _4=_3.scrollHeight;if(!isc.isA.Number(_3.scrollHeight)){_4=Math.max(_3.offsetHeight,_3.clientHeight)}
+if(_4&&_4>_2){_2=_4}}}
+return _2}
+,isc.A.getScreenWidth=function isc_c_Page_getScreenWidth(){return screen.width}
+,isc.A.getScreenHeight=function isc_c_Page_getScreenHeight(){return screen.height}
+,isc.A.getWindowRect=function isc_c_Page_getWindowRect(_1){if(!_1)_1=window;return{left:(isc.Browser.isIE||isc.Browser.isOpera?_1.screenLeft:_1.screenX),top:(isc.Browser.isIE||isc.Browser.isOpera?_1.screenTop:_1.screenY),width:isc.Page.getWidth(_1),height:isc.Page.getHeight(_1)}}
+,isc.A.setUnloadMessage=function isc_c_Page_setUnloadMessage(_1){if(_1==null)window.onbeforeunload=null;else window.onbeforeunload=function(){return _1}}
+,isc.A.goBack=function isc_c_Page_goBack(){if(history.length==0&&window.opener){window.close()}else{history.back()}}
+,isc.A.print=function isc_c_Page_print(_1){if(!_1)_1=window;if(_1.print){_1.print()}else{var _2=_1.document;if(!_2||!_2.body){this.logError("isc.Page.print() called on a window that doesn't have a document.body defined. Exiting.");return}
+if(isc.Browser.isWin){_2.body.insertAdjacentHTML('beforeEnd','<OBJECT ID="printControl" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>');var _3=_2.all.printControl;if(!_3){this.logError("isc.Page.print() couldn't create or find print control. Exiting.");return}
+_3.ExecWB(6,1);_3.outerHTML=""}else{alert("Choose 'Print...' from the File menu to print this page.")}}}
+,isc.A.observe=function isc_c_Page_observe(_1,_2,_3){var _4=isc.Class.create();return _4.observe(_1,_2,_3)}
+,isc.A.waitFor=function isc_c_Page_waitFor(_1,_2,_3,_4,_5){var _6=isc.Class.create({$545:_1,$546:_2,$547:_3,_fired:function(_8){if(this.$59i){isc.Timer.clear(this.$59i)}
+this.ignore(this.$545,this.$546);this.fireCallback(this.$547,"observed",[_8]);this.destroy()},$59j:function(){this.ignore(this.$545,this.$546);this.fireCallback(this.$59k);this.destroy()}});isc.ClassFactory.addGlobalID(_6);var _7=_6.observe(_1,_2,_6.getID()+"._fired(observed)");if(!_7)_6.destroy();if(_4&&_5){_6.$59k=_5;_6.$59i=isc.Timer.setTimeout(function(){_6.$59j()},_4)}
+return _7}
+,isc.A.waitForMultiple=function isc_c_Page_waitForMultiple(_1,_2,_3,_4){var _5=true;var _6=isc.Class.create({$59l:_1,$59m:[],$547:_2,$59n:function(_9){this.$59m.remove(_9);if(this.$59m.isEmpty()){if(this.$59i){isc.Timer.clear(this.$59i)}
+this.fireCallback(this.$547);this.destroy()}},$59j:function(){var _7=this.$59m;for(var i=0;i<_7.length;i++){_7[i].ignore(_7[i].$545,_7[i].$546);_7[i].destroy()}
+this.fireCallback(this.$59k);this.destroy()}});for(var i=0;i<_1.length;i++){var _9=isc.Class.create({$545:_1[i].object,$546:_1[i].method,$59o:_6,_fired:function(_11){this.ignore(this.$545,this.$546);this.$59o.$59n(this);this.destroy()}});isc.ClassFactory.addGlobalID(_9);var _10=_9.observe(_1[i].object,_1[i].method,_9.getID()+"._fired(observed)");if(_10){_6.$59m.add(_9)}else{_9.destroy();_5=false}}
+if(_3&&_4){_6.$59k=_4;_6.$59i=isc.Timer.setTimeout(function(){_6.$59j()},_3)}
+return _5}
+,isc.A.checkBrowserAndRedirect=function isc_c_Page_checkBrowserAndRedirect(_1){if(!isc.Browser.isSupported){if(isc.Log){isc.Log.logWarn("Unsupported browser detected - userAgent:"+navigator.userAgent)}
+if(this.unsupportedBrowserAction=="continue")return;var _2=this.unsupportedBrowserAction=="confirm"&&confirm(this.getUnsupportedBrowserPromptString())
+if(_2)return;if(_1==null)_1=isc.Page.defaultUnsupportedBrowserURL;var _3=true;window.location.replace(isc.Page.getURL(_1))}}
+,isc.A.getUnsupportedBrowserPromptString=function isc_c_Page_getUnsupportedBrowserPromptString(){var _1="This page uses the Isomorphic SmartClient web presentation layer "+"(Version"+isc.version+" - "+isc.buildDate+"). The web browser you are using is not supported by this version of SmartClient"+" and you may encounter errors on this page. Would you like to continue anyway?\n\n"+"(Reported userAgent string for this browser:"+navigator.userAgent+")";return _1}
+);isc.B._maxIndex=isc.C+51;if(isc.Page.isXHTML())isc.nbsp=isc.xnbsp;isc.Page.setDirectories();if(isc.Browser.isMoz){isc.Page.getWidth(null,true);isc.Page.getHeight(null,true)}
+isc.addGlobal("Params",function(_1){if(!_1)_1=window;var _2=isc.isA.String(_1)?_1:_1.location.href;var _3=_2.indexOf("?"),_4=_2.indexOf("#");if(_4<0||_4<_3)_4=_2.length;if(_3!=-1){var _5=_2.substring(_3+1,_4).split("&");for(var i=0,_7,_8;i<_5.length;i++){_7=_5[i];if(!_7)continue;_8=_7.indexOf("=");this[_7.substring(0,_8)]=unescape(_7.substring(_8+1))}}})
+isc.params=new isc.Params();isc.getParams=function(_1){return new isc.Params(_1)}
+isc.ClassFactory.defineClass("Comm");isc.A=isc.Comm;isc.A.sendMethod="POST";isc.A.$hz=0;isc.A=isc.Comm;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.xmlHttpConstructors=["MSXML2.XMLHTTP","Microsoft.XMLHTTP","MSXML.XMLHTTP","MSXML3.XMLHTTP"];isc.A.$50c=[];isc.B.push(isc.A.$h0=function isc_c_Comm__fireXMLCallback(_1,_2){isc.EH.$h1("XRP");isc.Class.fireCallback(_2,"xmlHttpRequest",[_1],null,true);isc.EH.$h2()}
+,isc.A.$h3=function isc_c_Comm__getStateChangeHandler(){return function(){var _1=arguments.callee.request;if(!_1)return;if(_1.readyState!=4)return;arguments.callee.request=null;isc.Timer.setTimeout({target:isc.Comm,methodName:"$h0",args:[_1,arguments.callee.callback]},0)}}
+,isc.A.createXMLHttpRequest=function isc_c_Comm_createXMLHttpRequest(){if(isc.Browser.isIE){var _1;if(this.preferNativeXMLHttpRequest){_1=this.getNativeRequest();if(!_1)_1=this.getActiveXRequest()}else{_1=this.getActiveXRequest();if(!_1)_1=this.getNativeRequest()}
+if(!_1)isc.rpc.logWarn("Couldn't create XMLHttpRequest");return _1}else{return new XMLHttpRequest()}}
+,isc.A.getNativeRequest=function isc_c_Comm_getNativeRequest(){var _1;if(isc.Browser.version>=7){isc.rpc.logDebug("Using native XMLHttpRequest");_1=new XMLHttpRequest()}
+return _1}
+,isc.A.getActiveXRequest=function isc_c_Comm_getActiveXRequest(){var _1;if(!this.$h4){for(var i=0;i<this.xmlHttpConstructors.length;i++){try{var _3=this.xmlHttpConstructors[i];_1=new ActiveXObject(_3);if(_1){this.$h4=_3;break}}catch(e){}}}else{_1=new ActiveXObject(this.$h4)}
+if(_1)isc.rpc.logDebug("Using ActiveX XMLHttpRequest via constructor: "+this.$h4);return _1}
+,isc.A.sendScriptInclude=function isc_c_Comm_sendScriptInclude(_1){var _2=_1.URL,_3=_1.fields,_4=_1.data,_5=_1.callbackParam,_6=_1.transaction;var _7="_scriptIncludeReply_"+_6.transactionNum;this[_7]=function(){var _8=arguments.length==1?arguments[0]:[];if(arguments.length>1){for(var i=0;i<arguments.length;i++)_8[i]=arguments[i]}
+isc.Comm.performScriptIncludeReply(_6.transactionNum,_8)}
+var _10="isc.Comm."+_7;var _11={};_11[_5?_5:"callback"]=_10;_2=isc.rpc.addParamsToURL(_2,_3);_2=isc.rpc.addParamsToURL(_2,_11);if(_6)_6.mergedActionURL=_2;isc.rpc.logInfo("scriptInclude call to: "+_2);this.$50c[_6.transactionNum]=_6.callback;var _12=this.getDocument(),_13=this.getDocumentBody(),_14=_12.createElement("script");_14.src=_2;_13.appendChild(_14)}
+,isc.A.performScriptIncludeReply=function isc_c_Comm_performScriptIncludeReply(_1,_2){delete this["_scriptIncludeReply_"+_1];var _3=this.$50c[_1];delete this.$50c[_1];this.logDebug("scriptInclude reply for transactionNum: "+_1+", data: "+this.echoLeaf(_2),"xmlBinding");this.fireCallback(_3,"transactionNum,results,wd",[_1,_2])}
+,isc.A.sendXmlHttpRequest=function isc_c_Comm_sendXmlHttpRequest(_1){var _2=_1.URL,_3=_1.fields,_4=_1.httpMethod,_5=_1.contentType,_6=_1.httpHeaders,_7=_1.data,_8=_1.transaction,_9=_1.blocking!=null?_1.blocking:false;this.$50c[_8.transactionNum]=_8.callback;var _10="isc.Comm.performXmlTransactionReply("+_8.transactionNum+", xmlHttpRequest)";if(!_4)_4="POST";var _11=this.createXMLHttpRequest();var _12;if(isc.Browser.isIE){_12=this.$h3();_12.request=_11;_12.callback=_10}else{_12=function(){if(_11.readyState!=4)return;isc.Comm.$h0(_11,_10)}}
+_11.onreadystatechange=_12;if(isc.rpc.logIsDebugEnabled()){this.lastXmlHttpRequest=_11}
+if(_4=="POST"||_4=="PUT"){if(_7){_5=_5||"text/xml";_2=isc.rpc.addParamsToURL(_2,_3)}else{_5=_5||"application/x-www-form-urlencoded; charset=UTF-8";_7=isc.SB.create();var _13=true;for(var _14 in _3){if(!_13)_7.append("&");var _15=_3[_14];_7.append(isc.rpc.encodeParameter(_14,_15));_13=false}
+_7=_7.toString()}
+if(isc.rpc.logIsDebugEnabled()){isc.rpc.logDebug("XMLHttpRequest POST to "+_2+" contentType: "+_5+" with body -->"+decodeURIComponent(_7)+"<--")}
+_11.open(_4,_2,!_9);_11.setRequestHeader("Content-Type",_5);this.$h5(_11,_6);if(_8){_8.xhrHeaders=_6;_8.xhrData=_7}
+if(_7!=null&&!isc.isA.String(_7)){this.logWarn("Non-string data object passed to sendXML as request.data:"+this.echo(_7)+" attempting to convert to a string.");_7=_7.toString?_7.toString():""+_7}
+_11.send(_7)}else{var _16=isc.rpc.addParamsToURL(_2,_3);_11.open(_4,_16,!_9);if(_1.bypassCache){_11.setRequestHeader("If-Modified-Since","Thu, 01 Jan 1970 00:00:00 GMT")}
+this.$h5(_11,_6);if(isc.rpc.logIsDebugEnabled()){isc.rpc.logDebug("XMLHttpRequest GET from "+_2+" with fields: "+isc.Log.echoAll(_3)+" full URL string: "+_16)}
+_11.send(null)}
+return _11}
+,isc.A.performXmlTransactionReply=function isc_c_Comm_performXmlTransactionReply(_1,_2){var _3=this.$50c[_1]
+delete this.$50c[_1];this.fireCallback(_3,"transactionNum,results,wd",[_1,_2])}
+,isc.A.$h5=function isc_c_Comm__setHttpHeaders(_1,_2){if(_2==null)return;for(var _3 in _2){var _4=_2[_3];if(_4!=null)_1.setRequestHeader(_3,_4)}}
+);isc.B._maxIndex=isc.C+10;isc.ClassFactory.defineClass("Timer");isc.A=isc.Timer;isc.A.$ii=null;isc.A.listEvent={action:null,iterationInterval:null,iterationsRemaining:0,$ij:null,$ik:null};isc.A.MSEC=1;isc.A.SEC=1000;isc.A.MIN=60000;isc.A.HOUR=3600000;isc.A.DEFAULT_TIMEOUT_LENGTH=100;isc.A.$il=null;isc.A=isc.Timer;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$im=["isc.Timer.$in('",null,"')"];isc.A.$io=0;isc.A.$ip={};isc.A.$iq="TMR";isc.A.$612=5000;isc.B.push(isc.A.setTimeout=function isc_c_Timer_setTimeout(_1,_2,_3,_4){if(_1==null)return;if(_1.action!=null){_2=_1.delay;_3=_1.units;_1=_1.action}
+if(_3==null)_3=isc.Timer.MSEC;if(_2==null)_2=isc.Timer.DEFAULT_TIMEOUT_LENGTH;_2=_2*_3;var _5="$ir"+this.$io++;this.$im[1]=_5;this[_5]=_1;if(this.logIsDebugEnabled("traceTimers"))
+{_1.timerTrace=this.getStackTrace(null,1,null,true)}
+var _6=this.$im.join(isc.emptyString);var _7=setTimeout(_6,_2);this.$ip[_7]=_5;return _7}
+,isc.A.$in=function isc_c_Timer__fireTimeout(_1){if(isc.$611!=null){if(this.logIsInfoEnabled()){this.logInfo("timer ID:"+_1+" fired during eval. Delaying until this "+"thread completes")}
+if(!this.$613)this.$613=isc.timeStamp();if((isc.timeStamp()-this.$613)>this.$612){this.logWarn("timer ID:"+_1+" fired during eval thread lasting more than "+this.$612+"ms. Thread may have caused an "+"error and failed to complete. Allowing delayed action to fire.");delete isc.$611}else{this.$im[1]=_1;var _2=this.$im.join(isc.emptyString);var _3=setTimeout(_2,0);if(!this.$614)this.$614={};this.$614[_1]=_3;return}}
+delete this.$613;var _4=this[_1];delete this[_1];var _5=this.$ip;for(var i in _5){if(_5[i]=_1){delete _5[i];break}}
+var _7=this.$614;if(_7){for(var i in _7){if(_7[i]=_1){delete _7[i];break}}}
+if(_4==null)return;isc.EH.$h1(this.$iq);arguments.timerTrace=_4.timerTrace;this.fireCallback(_4,null,null,null,true);isc.EH.$h2()}
+,isc.A.clear=function isc_c_Timer_clear(_1){if(isc.isAn.Array(_1))
+for(var i=0;i<_1.length;i++)this.clear(_1[i]);else{var _3=this.$ip[_1];delete this[_3]
+delete this.$ip[_1];if(this.$614&&this.$614[_3]){_1=this.$614[_3];delete this.$614[_3]}
+clearTimeout(_1)}
+return null}
+,isc.A.clearTimeout=function isc_c_Timer_clearTimeout(_1){return this.clear(_1)}
+);isc.B._maxIndex=isc.C+4;isc.A=isc.Page;isc.A.$is={};isc.A.$it=0;isc.A.FIRE_ONCE="once";isc.A.$iu={};isc.A=isc.Page;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$cp="ID";isc.B.push(isc.A.setEvent=function isc_c_Page_setEvent(_1,_2,_3,_4){if(isc.isA.String(_2)){if(_1==isc.EH.LOAD||_1==isc.EH.IDLE||_1==isc.EH.RESIZE||_1==isc.EH.ORIENTATION_CHANGE)
+{_2=new Function("target,eventInfo",_2)}else{_2=isc.Func.expressionToFunction("target,eventInfo",_2)}}
+if(this.logIsDebugEnabled()){this.logDebug("setEvent("+_1+"): action => "+(isc.isA.Function(_2)?isc.Func.getShortBody(_2):_2))}
+var _5=isc.Page.$it++,_6={action:_2,functionName:_4,fireStyle:_3,ID:_5};var _7=this.$is;if(!isc.isAn.Array(_7[_1]))_7[_1]=[];_7[_1].add(_6);if(_1==isc.EH.IDLE){isc.EventHandler.startIdleTimer()}
+return _5}
+,isc.A.clearEvent=function isc_c_Page_clearEvent(_1,_2){if(_2==null){this.$is[_1]=[]}else{if(this.$iv==_1){var _3=this.$is[_1],_4=isc.isA.Array(_3)?_3.findIndex(this.$cp,_2):-1;if(_4!=-1)_3[_4]=null}else{if(isc.isA.Array(this.$is[_1]))
+this.$is[_1].removeWhere(this.$cp,_2)}}}
+,isc.A.$iw=function isc_c_Page__getPageEventName(_1){var _2=this.$ix=this.$ix||{};if(!_2[_1]){_2[_1]="page"+_1.charAt(0).toUpperCase()+_1.substring(1)}
+return _2[_1]}
+,isc.A.handleEvent=function isc_c_Page_handleEvent(_1,_2,_3){if(_2==isc.EH.UNLOAD)isc.Canvas.$iy();var _4=isc.Page.$is[_2];if(!isc.isAn.Array(_4)||_4.length==0)return true;var _5=this.$iw(_2);var _6=true;this.$iv=_2;for(var i=0,_8=_4.length;_6&&(i<_8);i++){var _9=_4[i];if(!_9)continue;if(_9.fireStyle==isc.Page.FIRE_ONCE)_4[i]=null;if(this.logIsDebugEnabled()){this.logDebug("handleEvent("+_2+"): firing action => "+isc.Func.getShortBody(_9.action))}
+if(isc.isA.Function(_9.action)){_6=(_9.action(_1,_3)!=false)}else{var _10=_9.action;if(!_10||_10.destroyed){_4[i]=null;continue}
+var _11=_9.functionName||_5;if(isc.isA.Function(_10[_11])){_6=(_10[_11](_1,_3)!=false)}}}
+this.$iv=null;this.$is[_2].removeEmpty();return _6}
+,isc.A.actionsArePendingForEvent=function isc_c_Page_actionsArePendingForEvent(_1){return(isc.isAn.Array(this.$is[_1])&&this.$is[_1].length!=0)}
+,isc.A.registerKey=function isc_c_Page_registerKey(_1,_2,_3){if(_1==null||_2==null)return;var _4=_1,_5,_6,_7,_8;if(isc.isAn.Object(_1)){_4=_1.keyName;_5=_1.ctrlKey;_6=_1.shiftKey;_7=_1.altKey;_8=_1.metaKey}
+if(_4.length==1)_4=_4.toUpperCase();var _9=false;for(var i in isc.EH.$iz){if(isc.EH.$iz[i]==_4){_9=true;break}}
+if(!_9){this.logWarn("Page.registerKey() passed unrecognized key name '"+_1+"'. Not registering","events");return}
+var _11=this.$iu;if(!_11[_4])_11[_4]=[];_11[_4].add({target:_3,action:_2,ctrlKey:_5,shiftKey:_6,altKey:_7,metaKey:_8})}
+,isc.A.unregisterKey=function isc_c_Page_unregisterKey(_1,_2){if(!this.$iu[_1]){isc.Log.logInfo("Page.unregisterKey(): No events registered for key "+isc.Log.echo(_1)+".","events");return false}
+this.$iu[_1].removeWhere("target",_2)}
+,isc.A.handleKeyPress=function isc_c_Page_handleKeyPress(){var _1=isc.EH,_2=_1.getKey(),_3=this.$iu;if(!_3[_2])return true;var _4=_3[_2],_5=_4.duplicate(),_6=_5.length,_7=true;for(var i=0;i<_6;i++){var _9=_5[i];if(!_4.contains(_9))continue;if(_9.ctrlKey!=null&&_9.ctrlKey!=_1.ctrlKeyDown())continue;if(_9.altKey!=null&&_9.altKey!=_1.altKeyDown())continue;if(_9.shiftKey!=null&&_9.shiftKey!=_1.shiftKeyDown())continue;if(_9.metaKey!=null&&_9.metaKey!=_1.metaKeyDown())continue;if(_9.action!=null&&!isc.isA.Function(_9.action)){isc.Func.replaceWithMethod(_9,"action","key,target")}
+_7=((_9.action(_2,_9.target)!=false)&&_7)}
+return _7}
+);isc.B._maxIndex=isc.C+8;isc.ClassFactory.defineClass("EventHandler");isc.EH=isc.Event=isc.EventHandler;isc.A=isc.EventHandler;isc.A.lastEvent={};isc.A.$i0=[];isc.A.$i1=[];isc.A.passThroughEvents=true;isc.A.maskNativeTargets=true;isc.A.STILL_DOWN_DELAY=100;isc.A.DOUBLE_CLICK_DELAY=500;isc.A.IDLE_DELAY=10;isc.A.STOP_BUBBLING="***STOP***";isc.A.ALL_EDGES=["T","L","B","R","TL","TR","BL","BR"];isc.A.eventTypes={MOUSE_DOWN:"mouseDown",RIGHT_MOUSE_DOWN:"rightMouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",SHOW_CONTEXT_MENU:"showContextMenu",CLICK:"click",DOUBLE_CLICK:"doubleClick",MOUSE_OUT:"mouseOut",MOUSE_STILL_DOWN:"mouseStillDown",MOUSE_OVER:"mouseOver",TOUCH_START:"touchStart",TOUCH_MOVE:"touchMove",TOUCH_END:"touchEnd",TOUCH_CANCEL:"touchCancel",LONG_TOUCH:"longTouch",SET_DRAG_TRACKER:"setDragTracker",GET_DRAG_DATA:"getDragData",RELEASE_DRAG_DATA:"releaseDragData",DRAG_START:"dragStart",DRAG_STOP:"dragStop",DRAG_MOVE:"dragMove",DRAG_OUT:"dragOut",DRAG_REPOSITION_START:"dragRepositionStart",DRAG_REPOSITION_MOVE:"dragRepositionMove",DRAG_REPOSITION_STOP:"dragRepositionStop",DRAG_RESIZE_START:"dragResizeStart",DRAG_RESIZE_MOVE:"dragResizeMove",DRAG_RESIZE_STOP:"dragResizeStop",DROP_OVER:"dropOver",DROP_MOVE:"dropMove",DROP_OUT:"dropOut",DROP:"drop",KEY_DOWN:"keyDown",KEY_UP:"keyUp",KEY_PRESS:"keyPress",MOUSE_WHEEL:"mouseWheel",SELECT_START:"selectStart",SELECTION_CHANGE:"selectionChange",FOCUS_IN:"focusIn",FOCUS_OUT:"focusOut",IDLE:"idle",LOAD:"load",UNLOAD:"unload",RESIZE:"resize",ORIENTATION_CHANGE:"orientationChange"};isc.A.$i2={mousemove:"mouseMove",mousedown:"mouseDown",mouseup:"mouseUp",contextmenu:"contextMenu",mousewheel:"mouseWheel",selectionchange:"selectionChange",DOMMouseScroll:"mouseWheel",mouseMove:"mouseMove",mouseDown:"mouseDown",mouseUp:"mouseUp",mouseWheel:"mouseWheel",touchstart:"touchStart",touchmove:"touchMove",touchend:"touchEnd",touchStart:"touchStart",touchMove:"touchMove",touchEnd:"touchEnd",selectionstart:"selectionStart",selectionStart:"selectionStart",selectionchange:"selectionChange",selectionChange:"selectionChange"};isc.A.$92d={READY_FOR_TOUCH:"ready",TOUCH_STARTED:"started",TOUCH_COMPLETE:"complete"};isc.A.$i3="event,eventInfo";isc.A.DRAG_RESIZE="dragResize";isc.A.DRAG_REPOSITION="dragReposition";isc.A.DRAG_SCROLL="dragScroll";isc.A.DRAG_SELECT="dragSelect";isc.A.DRAG="drag";isc.A.NONE="none";isc.A.TRACKER="tracker";isc.A.TARGET="target";isc.A.OUTLINE="outline";isc.A.INTERSECT_WITH_MOUSE="mouse";isc.A.INTERSECT_WITH_RECT="rect";isc.A.dragTargetShadowDepth=10;isc.A.$i4={A:true,AREA:true};isc.A.$i5={INPUT:true,TEXTAREA:true,SELECT:true,OPTION:true};isc.A.$i6="LABEL";isc.A.$i7={keydown:"keyDown",keyup:"keyUp",keypress:"keyPress",contextmenu:"contextMenu"};isc.A.$i8={Backspace:8,Tab:9,Shift:16,Ctrl:17,Alt:18,Pause_Break:19,Caps_Lock:20,Page_Up:33,Page_Down:34,End:35,Home:36,Arrow_Left:37,Arrow_Up:38,Arrow_Right:39,Arrow_Down:40,Insert:45,Delete:46,Meta:91,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,Num_Lock:144,Scroll_Lock:145};isc.A.$iz={'0':'$i9','8':'Backspace','9':'Tab','13':'Enter','16':'Shift','17':'Ctrl','18':'Alt','19':'Pause_Break','20':'Caps_Lock','27':'Escape','32':'Space','33':'Page_Up','34':'Page_Down','35':'End','36':'Home','37':'Arrow_Left','38':'Arrow_Up','39':'Arrow_Right','40':'Arrow_Down','44':'Print_Screen','45':'Insert','46':'Delete','48':'0',"49":"1","50":"2","51":"3","52":"4","53":"5","54":"6","55":"7","56":"8","57":"9",'58':';','59':';','60':',','61':'=','62':"/",'65':'A','66':'B','67':'C','68':'D','69':'E','70':'F','71':'G','72':'H','73':'I','74':'J','75':'K','76':'L','77':'M','78':'N','79':'O','80':'P','81':'Q','82':'R','83':'S','84':'T','85':'U','86':'V','87':'W','88':'X','89':'Y','90':'Z','91':'Meta','92':'Meta','93':'Menu','96':'0','97':'1','98':'2','99':'3','100':'4','101':'5','102':'6','103':'7','104':'8','105':'9','106':'*','107':'+','109':'-','110':'.','111':'/','112':'f1','113':'f2','114':'f3','115':'f4','116':'f5','117':'f6','118':'f7','119':'f8','120':'f9','121':'f10','122':'f11','123':'f12','144':'Num_Lock','145':'Scroll_Lock','160':'Shift','161':'Shift','162':'Ctrl','163':'Ctrl','164':'Alt','165':'Alt','186':';','187':'=','188':',','189':'-','190':'.','191':'/','192':'`','219':'[','220':'\\','221':']','222':"'",'224':"Meta"};isc.A.$ja={'8':'Backspace','9':'Tab','13':'Enter','27':'Escape','32':'Space','33':'1','34':"'",'35':'3','36':'4','37':'5','38':'7','39':"'",'40':'9','41':'0','42':'8','43':'=','44':',','45':'-','46':'.','47':'/','48':'0','49':'1','50':'2','51':'3','52':'4','53':'5','54':'6','55':'7','56':'8','57':'9','58':';','59':';','60':',','61':'=','62':'.','63':'/','64':'2','65':'A','66':'B','67':'C','68':'D','69':'E','70':'F','71':'G','72':'H','73':'I','74':'J','75':'K','76':'L','77':'M','78':'N','79':'O','80':'P','81':'Q','82':'R','83':'S','84':'T','85':'U','86':'V','87':'W','88':'X','89':'Y','90':'Z','91':'[','92':'\\','93':']','94':'6','95':'-','96':'`','97':'A','98':'B','99':'C','100':'D','101':'E','102':'F','103':'G','104':'H','105':'I','106':'J','107':'K','108':'L','109':'M','110':'N','111':'O','112':'P','113':'Q','114':'R','115':'S','116':'T','117':'U','118':'V','119':'W','120':'X','121':'Y','122':'Z','123':'[','124':'\\','125':']','126':'`'};isc.A.$jb={'3':"Enter",'25':"Tab",'63232':"Arrow_Up",'63233':"Arrow_Down",'63234':"Arrow_Left",'63235':"Arrow_Right",'64236':"f1",'64237':"f2",'64238':"f3",'64239':"f4",'64240':"f5",'64241':"f6",'64242':"f7",'64243':"f8",'64244':"f9",'64245':"f10",'64246':"f11",'63247':"f12",'63273':"Home",'63275':"End",'63276':"Page_Up",'63277':"Page_Down"};isc.A.$jc={};isc.A.dynamicBackMask=false;isc.A.alwaysBackMask=false;isc.A.dragTrackerDefaults={ID:"isc_dragTracker",width:10,height:10,offsetX:-10,offsetY:-10,autoDraw:false,visibility:"hidden",overflow:"visible",cursor:"arrow"};isc.EventHandler.addClassProperties(isc.EventHandler.eventTypes)
+isc.A=isc.EventHandler;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$je="f10";isc.A.$20w="Escape";isc.A.$85t=[];isc.A.$85z={};isc.A.$jf="Tab";isc.A.$70a={keydown:true,keyup:true,keypress:true};isc.A.$jg="IMG";isc.A.$jh="progid:DXImageTransform.Microsoft.AlphaImageLoader";isc.A.longTouchDelay=500;isc.A.$ji={};isc.A.$jj="BODY";isc.A.$jk="HTML";isc.A.$jl="eventProxy";isc.A.$jm="[object Text]";isc.A.$jn={autoDraw:false,$jo:true,$jp:false,overflow:"hidden",visibility:"hidden",$jq:false,getTarget:function(){return this.$jr},show:function(){var _1=this.masterElement;this.moveAbove(_1);return this.Super("show",arguments)}};isc.A.$js=isc.Browser.isIE?isc.undef:true;isc.A.$jt="handleNativeEvents";isc.A.$49r="APPLET";isc.A.$ju={mouseMove:true,mouseOver:true,mouseOut:true};isc.A.$41z="selectionChange";isc.A.currentOrientation=isc.Page.getOrientation();isc.A.$jv="$jw";isc.A.$jx=0;isc.A.$jy={load:"LOD",mousedown:"MDN",mouseup:"MUP",mousemove:"MMV",mouseout:"MOU",touchstart:"TDN",touchmove:"TMVP",touchend:"TUP",contextmenu:"CXT",keypress:"KPR",keydown:"KDN",keyup:"KUP",resize:"RSZ"};isc.A.$jz="nativeEvents";isc.A.$j0="event";isc.A.$j1="if (!isc.Browser.isIE && event == null) return;"+(isc.Browser.isMoz?"if(event.getPreventDefault&&event.getPreventDefault())return;":isc.Browser.isSafari?"if(event.returnValue==false)return;":"")+"var returnVal=arguments.callee.$ch.isc.EH.dispatch(arguments.callee.$j2,event);"+(!isc.Browser.isIE&&isc.Browser.isDOM?"if(returnVal==false)event.preventDefault();else if(returnVal==isc.EH.STOP_BUBBLING)event.stopPropogation();":"")+"return returnVal;";isc.A.$j3={};isc.A.$j4={onmousedown:"mousedown",onmouseup:"mouseup",onclick:"click",ondblclick:"dblclick",oncontextmenu:"contextmenu",onmousewheel:"mousewheel",onmouseover:"mouseover",onmouseout:"mouseout",onmousemove:"mousemove",onresize:"resize",onload:"load",onunload:"unload",onselecttext:"selecttext",onselectionchanged:"selectionchanged",onkeydown:"keydown",onkeyup:"keyup",onkeypress:"keypress"};isc.A.$649={};isc.A.getMouseEventProperties=(isc.Browser.isIE?function(_1){var _2=this.lastEvent;if(!_1)_1=this.getWindow().event;_2.DOMevent=_1;_2.eventType=this.$i2[_1.type];_2.y=parseInt(_1.clientY)+this.ns.Page.getScrollTop();_2.x=parseInt(_1.clientX);if(!isc.Page.isRTL()){_2.x+=this.ns.Page.getScrollLeft()}else{var _3=this.ns.Page.getScrollLeft();if(_3>0){var _4=(this.ns.Page.getScrollWidth()-this.ns.Page.getWidth());_2.x-=(_4-_3)}
+_2.x-=15}
+_2.nativeTarget=_1.srcElement;var _5=_1.wheelDelta;if(_5!=null)_2.wheelDelta=-Math.round(_5/ 120);else _2.wheelDelta=null;_2.screenX=_1.screenX;_2.screenY=_1.screenY;_2.buttonNum=_1.button;_2.shiftKey=(_1.shiftKey==true);_2.ctrlKey=(_1.ctrlKey==true);_2.altKey=(_1.altKey==true);_2.metaKey=(_1.metaKey==true);_2.target=this.getEventTargetCanvas(_1,_2.nativeTarget,_2);return _2}:function(_1){var _2=this.lastEvent;_2.DOMevent=_1;_2.eventType=this.$i2[_1.type];var _3=false;if(isc.Browser.isMobileWebkit){if(isc.startsWith(_2.eventType,"touch")){if(_2.eventType==isc.EH.TOUCH_END){_3=true}else if(_1.touches!=null&&_1.touches[0]!=null){var _4=_1.touches[0];_2.clientX=_4.clientX;_2.clientY=_4.clientY;_2.screenX=_4.screenX;_2.screenY=_4.screenY;_2.x=_4.pageX;_2.y=_4.pageY}}else if(isc.Browser.isAndroid&&_1.type==isc.EH.CLICK){_2.screenX=_1.screenX;_2.screenY=_1.screenY;_2.x=parseInt(_1.clientX)+isc.Page.getScrollLeft();_2.y=parseInt(_1.clientY)+isc.Page.getScrollTop()}}else{_2.screenX=_1.screenX;_2.screenY=_1.screenY;if(isc.Browser.isSafari){var _5=isc.Browser.safariVersion>=523.12
+_2.x=parseInt(_1.x);_2.y=parseInt(_1.y);if(_5){_2.x+=isc.Page.getScrollLeft();_2.y+=isc.Page.getScrollTop()}
+if(_2.eventType!=this.MOUSE_WHEEL){var _5=true;_2.x=parseInt(_1.clientX)+(_5?isc.Page.getScrollLeft():0);_2.y=parseInt(_1.clientY)+(_5?isc.Page.getScrollTop():0)}}else{if(_2.eventType!=this.MOUSE_WHEEL){var _5=true;_2.x=parseInt(_1.clientX)+(_5?isc.Page.getScrollLeft():0);_2.y=parseInt(_1.clientY)+(_5?isc.Page.getScrollTop():0)}}}
+_2.nativeTarget=_1.target;_2.$j5=null;_2.target=this.getEventTargetCanvas(_1,_2.nativeTarget,_2);if(_2.eventType==this.MOUSE_WHEEL){var _6=_1.wheelDelta,_7=_1.detail;if(_7==0||_7==null&&_6!=null){_2.wheelDelta=-Math.round(_6/ 120);if(!isc.isA.Number(_2.wheelDelta))_2.wheelDelta=null}else{if(isc.Canvas.useNativeWheelDelta&&_1.detail==_1.SCROLL_PAGE_UP){_2.wheelDelta=-Math.floor(_2.target.height/ isc.Canvas.scrollWheelDelta)}else if(isc.Canvas.useNativeWheelDelta&&_1.detail==_1.SCROLL_PAGE_DOWN){_2.wheelDelta=Math.floor(_2.target.height/ isc.Canvas.scrollWheelDelta)}else{var _8=_1.detail/ 3;if(!isc.isA.Number(_8))_8=0;if(_8>15||_8<-15)_8=(_8>0?1:-1);_2.wheelDelta=_8}}}else{_2.wheelDelta=null}
+if(_2.eventType==isc.EH.MOUSE_MOVE||_2.eventType==isc.EH.TOUCH_MOVE){if(!this.$j6)_2.buttonNum=0}else if(isc.Browser.isTouch){if(_1.targetTouches&&_1.targetTouches.length>1){_2.buttonNum=2}else{_2.buttonNum=1}}else{_2.buttonNum=((_1.which==1||isc.Browser.isSafari&&_1.which==65536)?1:2)}
+_2.shiftKey=(_1.shiftKey==true);_2.ctrlKey=(_1.ctrlKey==true);_2.altKey=(_1.altKey==true);_2.metaKey=(_1.metaKey==true);return _2});isc.A.$688="f1";isc.A.$689="help";isc.A.HARD="hard";isc.A.SOFT="soft";isc.A.SOFT_CANCEL="softCancel";isc.A.$j7=0;isc.A.clickMaskRegistry=[];isc.A.$cp='ID';isc.B.push(isc.A.handleSyntheticEvent=function isc_c_EventHandler_handleSyntheticEvent(_1){var _2=_1.target;_1.$49s=true;if(_2){_1.clientX+=_2.getPageLeft();_1.clientY+=_2.getPageTop();if(isc.Browser.isIE){_1.clientX+=_2.getLeftMargin()+_2.getLeftBorderSize()+_2.getLeftPadding()+2;_1.clientY+=_2.getTopMargin()+_2.getRightBorderSize()+_2.getTopPadding()+2}
+switch(_1.type){case"mouseup":this.handleMouseUp(_1);break;case"mousedown":this.handleMouseDown(_1);break;case"mousemove":this.handleMouseMove(_1);break}}}
+,isc.A.handleEvent=function isc_c_EventHandler_handleEvent(_1,_2,_3){this.$77e=_2;var _4=isc.EH;var _5;if(isc.Page.handleEvent(_1,_2,_3)==false){_5=false}else if(_4.targetIsEnabled(_1)&&_4.bubbleEvent(_1,_2,_3)==false){_5=false}else{_5=true}
+delete this.$77e;return _5}
+,isc.A.handleLoad=function isc_c_EventHandler_handleLoad(_1){if(isc.SA_Page)isc.SA_Page.$o();if(!isc.Browser.isMoz){if(isc.EH.$j8()&&document&&document.body){document.body.addEventListener("unload",isc.EH.handleUnload,false)}
+return(isc.Page.handleEvent(null,isc.EH.LOAD)!=false)}else{try{return(isc.Page.handleEvent(null,isc.EH.LOAD)!=false)}catch(e){isc.Log.$am(e);throw e;}}}
+,isc.A.handleUnload=function isc_c_EventHandler_handleUnload(_1){var _2=isc.EH;var _3=(isc.Page.handleEvent(null,_2.UNLOAD)!=false);if(_3==true){this.releaseEvents()}
+return _3}
+,isc.A.$j9=function isc_c_EventHandler__handleNativeKeyDown(_1,_2){if(!isc.Page.isLoaded())return false;var _3=isc.EH;var _4=_3.lastEvent;if(!_1)_1=_3.getWindow().event;_3.getKeyEventProperties(_1);if(isc.Browser.isIE&&_4.keyName==this.$688&&!_2){return}
+var _5=isc.Browser.isIE&&_3.$i8[_4.keyName]!=null;var _6=true;var _7=_4.keyName,_8=_4.characterValue;var _9=_3.$85t.duplicate();for(var i=0;i<_9.length;i++){var _11=_9[i];if(_11==null||_11==_7)break;_4.characterValue=null;_4.keyName=_11;this.handleKeyPress();_3.$85z[_4.keyName]=true}
+_4.keyName=_7;_4.characterValue=_8;if(!_5&&_3.$85t.indexOf(_4.keyName)!=-1){_6=_3.handleKeyPress();_3.$85z[_4.keyName]=true}else{_6=_3.handleKeyDown(_1)}
+_3.$85t[_3.$85t.length]=_4.keyName;_3.$885=_4.ctrlKey;_3.$886=_4.altKey;if(_6!=false&&(_5||(isc.Browser.isMoz&&_4.keyName==this.$je&&this.shiftKeyDown())))
+{_6=_3.handleKeyPress(_1);_3.$85z[_4.keyName]=true}
+if(_6==false){this.cancelKeyEvent(_1)}
+return _6}
+,isc.A.handleKeyDown=function isc_c_EventHandler_handleKeyDown(_1,_2){var _3=isc.EH,_4=_3.lastEvent,_5;var _6=_3.eventHandledNatively(_4.eventType,_4.nativeKeyTarget);if(_6)_5=_3.$js;if(_2!=null)isc.addProperties(_4,_2);if(!_6){var _7=[_4,_4.target,_4.keyName];var _8=_4.keyTarget;if(_8==null)_8=this.getEventTargetCanvas(_1,_4.nativeKeyTarget);if(_3.targetIsEnabled(_8))
+_5=(_3.bubbleEvent(_8,_3.KEY_DOWN,_7)!=false)}
+var _9=false;if(_3.$ke&&_3.$ke.useSyntheticTabIndex)
+{_9=true}
+if(_5!=false&&(_9||this.clickMaskUp())&&_4.keyName==this.$jf)
+{var _10,_11=this.clickMaskRegistry;for(var i=_11.length-1;i>=0;i--){if(this.isHardMask(_11[i])){_10=_11[i];break}}
+if(_9||_10)_5=false;if(_9){this.logInfo("Widget:"+_3.$ke+" explicitly marked as requesting synthetic "+"tab index mgmt. Intercepting keyDown to achieve this.","syntheticTabIndex");_3.syntheticTabSource=_3.$ke}}
+return _5}
+,isc.A.$kb=function isc_c_EventHandler__handleNativeKeyUp(_1){if(!isc.Page.isLoaded())return false;var _2=isc.EH,_3=_2.lastEvent;if(!_1)_1=_2.getWindow().event;_2.getKeyEventProperties(_1);_2.$885=_3.ctrlKey
+_2.$886=_3.altKey
+_2.$85z[_3.keyName]=null;if(_2.$85t.indexOf(_2.lastEvent.keyName)!=-1){if(_2.handleKeyPress(_1)==false){this.cancelKeyEvent(_1);return false}}
+var _4=_2.handleKeyUp(_1)
+return _4}
+,isc.A.handleKeyUp=function isc_c_EventHandler_handleKeyUp(_1,_2){var _3=isc.EH,_4=_3.lastEvent,_5=[_4,_4.target,_4.keyName];if(_3.eventHandledNatively(_4.eventType,_4.nativeKeyTarget)){return _3.$js}
+var _6=true;if(_2!=null){isc.addProperties(_4,_2)}
+var _7=_4.keyTarget;if(_7==null)_7=this.getEventTargetCanvas(_1,_4.nativeKeyTarget);if(_3.targetIsEnabled(_7))
+_6=(_3.bubbleEvent(_7,_3.KEY_UP,_5)!=false);if(!isc.Browser.isMac&&_4.keyName==_3.$je&&_3.shiftKeyDown()&&isc.Menu&&isc.Menu.$kc&&isc.Menu.$kc.length>0)
+{_6=false}
+_3.clearKeyEventProperties(_4.keyName);return _6}
+,isc.A.$kd=function isc_c_EventHandler__handleNativeKeyPress(_1){if(!isc.Page.isLoaded())return false;var _2=isc.EH;var _3=_2.lastEvent,_4=_2.KEY_PRESS;if(!_1)_1=_2.getWindow().event;_2.getKeyEventProperties(_1);_3.eventType=_4;_3.ctrlKey=_2.$885;_3.altKey=_2.$886;if(_2.$85z[_3.keyName]==true){_2.$85z[_3.keyName]=null;return}
+var _5=_2.handleKeyPress(_1);if(_5==false){this.cancelKeyEvent(_1)}
+return _5}
+,isc.A.cancelKeyEvent=function isc_c_EventHandler_cancelKeyEvent(_1){if(isc.Browser.isIE||isc.Browser.isSafari){if(this.$70a[_1.type]==true){try{_1.keyCode=0}catch(e){}}}}
+,isc.A.handleKeyPress=function isc_c_EventHandler_handleKeyPress(_1,_2){var _3=isc.EH,_4=_3.lastEvent,_5=_3.KEY_PRESS;if(_2!=null){isc.addProperties(_4,_2)}
+var _6={keyName:_4.keyName,characterValue:_4.characterValue};_4.eventType=_5;_3.$85t.removeAt(0);if(isc.Page.handleEvent(_4.keyTarget,_5)==false)return false;var _7=(_3.eventHandledNatively(_5,_4.nativeKeyTarget));if(_7!==false){_3.logDebug("keyPress handled natively");return _3.$js}else{_3.logDebug("keyPress not handled natively")}
+var _8=_4.keyTarget;if(_8==null)_8=this.getEventTargetCanvas(_1,_4.nativeKeyTarget);if(_3.targetIsEnabled(_8)){var _9=_3.bubbleEvent(_8,_4.eventType,_6)
+if(_9==false)return false}
+if(_9!=_3.STOP_BUBBLING&&isc.Page.handleKeyPress()==false)return false;if((_3.syntheticTabSource||this.clickMaskUp())&&_4.keyName==this.$jf){var _10,_11=this.clickMaskRegistry;for(var i=_11.length-1;i>=0;i--){if(this.isHardMask(_11[i])){_10=_11[i];break}}
+if(_3.syntheticTabSource){this.logInfo("Telling canvas:"+_3.syntheticTabSource+" [marked as 'useSyntheticTabIndex:true'] to shift focus","syntheticTabIndex")
+_3.syntheticTabSource.delayCall("$kf",[!this.shiftKeyDown(),_10]);delete _3.syntheticTabSource;return false}else if(_10!=null){var _13=_3.$ke;if(_13!=null){this.logInfo("Telling focus canvas:"+_13+" to shift focus","syntheticTabIndex")
+_13.$kf(!this.shiftKeyDown(),_10)}else{if(this.shiftKeyDown()){this.logInfo("Putting focus into last widget in response to Tab keydown","syntheticTabIndex")
+this.$kg(_10)}else{this.logInfo("Putting focus into first widget in response to Tab keydown","syntheticTabIndex")
+this.$kh(_10)}}
+return false}}
+if((isc.Browser.isIE||isc.Browser.isMoz)&&_4.keyName==isc.EH.$je&&isc.EH.shiftKeyDown()){var _14=this.handleContextMenu(_1);if(_14){this.$ki=true}
+return _14}
+if(isc.Browser.isMoz&&isc.RPCManager&&isc.RPCManager.$410.length>0&&_4.keyName==isc.EH.$20w)
+{return false}
+return true}
+,isc.A.$kh=function isc_c_EventHandler__focusInFirstWidget(_1){var _2=this.$kj;if(_2){if((!_1||!this.targetIsMasked(_2,_1))&&!_2.isDisabled()&&_2.$kk())
+{_2.focusAtEnd(true)}else{_2.$kf(true,_1)}}}
+,isc.A.$kg=function isc_c_EventHandler__focusInLastWidget(_1){var _2=this.$kl;if(_2){if((!_1||!this.targetIsMasked(_2,_1))&&!_2.isDisabled()&&_2.$kk())
+{_2.focusAtEnd()}else{_2.$kf(false,_1)}}}
+,isc.A.handleMouseDown=function isc_c_EventHandler_handleMouseDown(_1,_2){if(isc.Browser.isTouch&&!_2)return;var _3=isc.EH;_3.$km=true;var _4=_3.doHandleMouseDown(_1,_2);_3.$km=false;return _4}
+,isc.A.doHandleMouseDown=function isc_c_EventHandler_doHandleMouseDown(_1,_2){if(!isc.Page.isLoaded())return false;var _3=this;_3.$j6=true;_3.$92e=null;var _4=_2||_3.getMouseEventProperties(_1);var _5=_3.$ke,_6=_5!=null&&(_5!=_4.target)&&!_5._useNativeTabIndex&&!_5._useFocusProxy&&!(isc.isA.DynamicForm!=null&&isc.isA.DynamicForm(_5)&&_5.getFocusSubItem()&&_5.getFocusSubItem().hasFocus);if(_6){if(isc.Browser.isIE){var _7=_3.$ke.getID();if(_3.$ko==null)
+_3.$ko=["if (",_7," && ",_7,".hasFocus)",_7,".blur()"]
+else
+_3.$ko[1]=_3.$ko[3]=_3.$ko[5]=_7;isc.Timer.setTimeout(_3.$ko.join(isc.emptyString),0)}else{_3.$ke.blur()}}
+_3.mouseDownEvent=isc.addProperties({},_4);var _8=_4.target;var _9=(_3.clickMaskClick(_8)==false);if(_9){_3.$kp=true;return false}else{_3.$kp=false}
+var _10=_3.rightButtonDown()?_3.RIGHT_MOUSE_DOWN:_3.MOUSE_DOWN;if(isc.Page.handleEvent(_8,_10)==false){return false}
+if(_3.eventHandledNatively(_10,_4.nativeTarget))
+return _3.$js;if(!_3.targetIsEnabled(_8))return false;var _11;if(_8&&!_8.hasFocus){if(((isc.Browser.isMoz&&_8.canSelectText)||isc.Browser.isSafari)&&_8._useFocusProxy)
+{_3.focusInCanvas(_8)}else if(!_8._useNativeTabIndex){_8.focus("focus on mousedown")}else if(isc.Browser.isMoz||isc.Browser.isSafari){_8.focus("focus on mousedown")}else if(isc.Browser.isIE){var _12=_4.nativeTarget;if(isc.Browser.isStrict){_11=_8}else{if(_12&&_12.tagName==this.$jg){var _13=_12.style,_14=_13?_13.filter:null;if(_14.contains(this.$jh)){_11=_8}}}}}
+if(_8)_3.prepareForDragging(_8);var _15=_3.bubbleEvent(_8,_10,null,_9);if(_11!=null)_11.focus();if(_15==false){delete _3.dragTarget;delete _3.dragTargetLink}
+if(_3.rightButtonDown()){if(!this.useSyntheticRightButtonEvents())return true;if(_8&&(_3.getBubbledProperty(_8,"contextMenu")||_3.getBubbledProperty(_8,"showContextMenu")!=isc.Canvas.getInstanceProperty("showContextMenu")))
+{_4.returnValue=false;return false}
+return true}
+if(_15!=false){if(_3.hasEventHandler(_8,_3.MOUSE_STILL_DOWN)){_3.$kq()}}
+var _16=_3.dragTarget!=null&&_3.dragOperation!=_3.DRAG_SELECT;var _17=(!_16&&(!(isc.Browser.isMoz||isc.Browser.isSafari)||!!_8.$kr(_4)));return _17}
+,isc.A.stillWithinMouseDownTarget=function isc_c_EventHandler_stillWithinMouseDownTarget(){var _1=this.mouseDownTarget();if(!_1)return false;var _2=this.lastEvent;var _3=(_1==_2.target);if(!_3)return false;if(_2.$j5!=null)return _2.$j5;if(!(isc.Browser.isMoz&&_1.$ks))
+{return _3}
+var x=_2.x,y=_2.y,_6=_1.visibleAtPoint(x,y,true);if(!_6&&_1.$kt!=null){for(var i=0;i<_1.$kt.length;i++){_6=_1.$kt[i].visibleAtPoint(_2.x,_2.y,true);if(_6)break}}
+_2.$j5=_6;return _6}
+,isc.A.handleMouseMove=function isc_c_EventHandler_handleMouseMove(_1){if(isc.Browser.isTouch)return;if(!isc.Page.isLoaded())return false;var _2=isc.EH;if(_2.$km||_2.$ku)return;var _3=_2.getMouseEventProperties(_1);if((isc.Browser.isMoz||isc.Browser.isIE)&&!_2.immediateMouseMove){if(_2.delayedMouseMoveTimer==null){_2.delayedMouseMoveTimer=isc.Timer.setTimeout({target:_2,methodName:"$kv",args:[isc.timeStamp()]},0,true)}
+_2.$kw=0;return true}
+var _4=isc.timeStamp();var _5=_2.$kx(_1,_3);_2.$kw=isc.timeStamp()-_4;return _5}
+,isc.A.$kv=function isc_c_EventHandler__delayedMouseMove(_1){this.delayedMouseMoveTimer=null;this.$kx(null,this.lastEvent)}
+,isc.A.$kx=function isc_c_EventHandler__handleMouseMove(_1,_2){this.$ky=true;var _3=this.$kz(_1,_2);this.$ky=null;return _3}
+,isc.A.$kz=function isc_c_EventHandler___handleMouseMove(_1,_2){var _3=this;var _4;if(isc.Browser.isIE){var _5=_3.$j6,_6=_2.buttonNum;if(_5){if(_6==0){_4=true}}else if(_6==1&&_2.eventType==_3.MOUSE_MOVE){if(_3.$92e){}else{_2.eventType=_3.MOUSE_DOWN;_3.handleMouseDown(null,_2);_2.eventType=_3.MOUSE_MOVE}}}
+var _7=_2.target,_8=_3.eventHandledNatively(_3.MOUSE_MOVE,_2.nativeTarget);if(_3.$k0){_3.handleMouseUp(_1,true)}else if(_4){_3.logInfo("sythesizing mouseUp "+(_3.$k1?"due to mouseUp outside window,":"[buttonNum cleared on mouseMove with no mouseUp event],")+" buttonNum: "+_2.buttonNum);_3.handleMouseUp(_1,true)}
+delete _3.$k1;var _9=_3.mouseIsDown();if(isc.Browser.isMoz&&(isc.Browser.geckoVersion<20100914)&&_9&&_2.target&&_2.target.$ks&&_2.target!=_3.mouseDownTarget())
+{_2.nativeDraggingTarget=_2.nativeTarget;_2.nativeTarget=null;_7=_2.target=_3.mouseDownTarget()}
+if(_9&&_3.dragTarget&&!_3.dragging&&(Math.abs(_2.x-_3.mouseDownEvent.x)>_3.dragTarget.dragStartDistance||Math.abs(_2.y-_3.mouseDownEvent.y)>_3.dragTarget.dragStartDistance))
+{_3.handleDragStart(_2)}
+if(_3.dragging){return _3.handleDragMove()}
+if(_3.rightButtonDown()){if(!isc.Browser.isMac||!_3.ctrlKeyDown())return true}
+if(_9){_7=_3.stillWithinMouseDownTarget()?_3.mouseDownTarget():null}else{_7=_2.target}
+if(_7!=_3.lastMoveTarget){if(this.logIsDebugEnabled()){this.logDebug((_3.lastMoveTarget?"mousing out of "+_3.lastMoveTarget+" ":"")+(_7?"mousing over "+_7:""))}
+var _10=_3.lastMoveTarget,_11,_12=_3.lastHoverTarget;if(_10){_3.handleEvent(_10,_3.MOUSE_OUT)}
+if(_7){_3.handleEvent(_7,_3.MOUSE_OVER);_11=_7.getHoverTarget(_2)}
+if(_11!=_12){if(_12)_12.stopHover();if(_11)_11.startHover();_3.lastHoverTarget=_11}
+_3.lastMoveTarget=_7}
+if(isc.Page.handleEvent(_7,_3.MOUSE_MOVE)==false)return false;if(_8)return _3.$js;if(!_3.targetIsEnabled(_7))return false;_3.bubbleEvent(_7,_3.MOUSE_MOVE);if(_7)_7.$k2();return true}
+,isc.A.getNativeMouseTarget=function isc_c_EventHandler_getNativeMouseTarget(_1){if(!this.nativeTargetWarningLogged){this.nativeTargetWarningLogged=true;this.logWarn("getNativeMouseTarget(). This method will return the DOM element "+"the browser reports as the target or source of the current mouse event. "+"Please note that SmartClient cannot guarantee that the same element will "+"be reported in all browser/platform configurations for all event types. "+"If you wish to make use of this value, we recommend testing your use case "+"in all target browser configurations.")}
+if(_1==null)_1=this.lastEvent;return _1.nativeTarget||_1.nativeDraggingTarget}
+,isc.A.handleNativeMouseOut=function isc_c_EventHandler_handleNativeMouseOut(_1){if(isc.Browser==null)return;var _2=isc.EH;if(_2.$km||_2.$ku)return;var _3=(_1?_1:_2.getWindow().event),_4=(isc.Browser.isDOM?_3.target:_3.srcElement),_5=false;if(isc.Browser.isIE){_5=(_3.toElement==null)}else{_5=(_3.relatedTarget==null)}
+if(_5)_2.$k1=true;if(_5&&_2.lastMoveTarget!=null){_2.$k3(_3);_2.handleEvent(_2.lastMoveTarget,_2.MOUSE_OUT);_2.lastMoveTarget=null;if(_2.lastHoverTarget){_2.lastHoverTarget.stopHover();delete _2.lastHoverTarget}}}
+,isc.A.$k3=function isc_c_EventHandler__updateMouseOutEventProperties(_1){var _2=isc.EH;var _3=_2.lastEvent;if(isc.Browser.isIE){_3.nativeTarget=_1.toElement}else{_3.nativeTarget=_1.relatedTarget}
+if(_3.nativeTarget==null)_3.target=null
+else _3.target=this.getEventTargetCanvas(_1,_3.nativeTarget)}
+,isc.A.$kq=function isc_c_EventHandler__handleMouseStillDown(_1){if(!isc.Page.isLoaded())return false;var _2=this;_2.$k4=isc.Timer.clear(_2.$k4);if(!_2.mouseIsDown()||!_2.mouseDownTarget())return false;if(_2.bubbleEvent(_2.mouseDownTarget(),_2.MOUSE_STILL_DOWN)==false)return false;var _3=_2.mouseDownTarget(),_4=this.$km?_3.mouseStillDownInitialDelay:_3.mouseStillDownDelay;_2.$k4=this.delayCall("$kq",[],_4);return true}
+,isc.A.handleMouseUp=function isc_c_EventHandler_handleMouseUp(_1,_2){if(isc.Browser.isTouch&&!_2)return;var _3=isc.EH;if(isc.Browser.isIE&&!_3.$j6){if(_3.$92e)return;var _4=_3.lastEvent;_4.eventType=_3.MOUSE_DOWN;_3.handleMouseDown(null,_3.lastEvent)}
+_3.$92e=_2;if(!_2)_3.$ku=true;var _5=_3.$k5(_1,_2);_3.$ku=false;if(isc.Browser.isSafari)_5=true;return _5}
+,isc.A.$k5=function isc_c_EventHandler__handleMouseUp(_1,_2){if(!isc.Page.isLoaded())return false;var _3=this,_4=(!_2?_3.getMouseEventProperties(_1):_3.lastEvent),_5=false;_3.$j6=false;delete _3.$k6;_3.$k4=isc.Timer.clear(_3.$k4);var _6=_3.$k7;if(_6){_6.focus();_3.$k7=null}
+var _7=_3.$kp;_3.$kp=null;var _8;if(_7==null){_7=(_3.clickMaskClick(_4.target)==false);_8=_7}
+if(_7==true){if(_3.logIsDebugEnabled())_3.logDebug("mouseUp cancelled by clickMask");return false}
+var _9=false;if(_3.dragging){_9=_3.handleDragStop()}
+if(_3.rightButtonDown(_4)){if(this.useSyntheticRightButtonEvents()){_3.handleContextMenu()}
+_3.$k6=false}else{if(!_9){if(isc.Page.handleEvent(_4.target,_3.MOUSE_UP)!=false){var _10=true,x=this.lastEvent.x,y=this.lastEvent.y,_13=_3.mouseDownTarget();_5=_3.eventHandledNatively(_3.MOUSE_UP,_4.nativeTarget);if(!_5&&_3.targetIsEnabled(_13)){if(_13.visibleAtPoint(x,y))
+_10=_3.bubbleEvent(_13,_3.MOUSE_UP,null,_8);else if(_13.containsPoint(x,y))
+_10=_3.bubbleEvent(_13,_3.MOUSE_OUT,null,_8)}
+if(_10!=false){_3.$k6=_3.handleClick(_4.target)}}}}
+delete _3.redrawnWhileDown;_3.clearDragProperties();if(_3.$k0)_3.$k0=false;var _14=_4.target,_15=isc.isA.DynamicForm!=null&&isc.isA.DynamicForm(_14);if(_5&&(_15||_3.$k6==true))
+return _3.$js;return(_15&&_3.$k6==true)}
+,isc.A.clearDragProperties=function isc_c_EventHandler_clearDragProperties(){var _1=this;_1.dragging=false;delete _1.dragTarget;delete _1.dragTargetStartRect;delete _1.dragTargetLink;delete _1.dragMoveTarget;delete _1.dragMoveAction;delete _1.dragOperation;delete _1.dragAppearance;delete _1.dropTarget;delete _1.lastDropTarget}
+,isc.A.handleContextMenu=function isc_c_EventHandler_handleContextMenu(_1){if(!isc.Page.isLoaded())return false;var _2=isc.EH;_2.$ku=true;var _3=_2.$k8(_1);_2.$ku=false;return _3}
+,isc.A.$k8=function isc_c_EventHandler__handleContextMenu(_1){var _2=isc.Browser.isSafari||(this.isMouseEvent(this.lastEvent.eventType));if(this.$ki){delete this.$ki;return true}
+if(_1)this.getMouseEventProperties(_1);var _3=this,_4=_3.lastEvent,_5=!_2?_4.keyTarget||_4.target:_4.target;_4.keyboardContextMenu=!_2;if(!_2&&!isc.Browser.isMoz){_4.x=_5?_5.getPageLeft():0;_4.y=_5?_5.getPageTop():0}
+if(isc.Browser.isSafari&&_3.clickMaskClick(_5)==false){return false}
+if(isc.Page.handleEvent(_5,_3.SHOW_CONTEXT_MENU)==false){return false}
+var _6=true;if(_3.targetIsEnabled(_5)){_6=_3.bubbleEvent(_5,_3.SHOW_CONTEXT_MENU)}
+if(_6!=false){if(_3.lastMoveTarget)_3.handleEvent(_3.lastMoveTarget,_3.MOUSE_OUT);delete _3.lastMoveTarget}
+return _6}
+,isc.A.handleNativeClick=function isc_c_EventHandler_handleNativeClick(_1){var _2=isc.EH,_3=(_2.$k6!=false);delete _2.$k6;if(isc.Browser.isAndroid){_2.DOMevent=_1;var _4=_2.getMouseEventProperties(_1);switch(this.$92f){case _2.$92d.READY_FOR_TOUCH:_4.originalType=_2.CLICK;_4.eventType=_2.MOUSE_DOWN;_2.doHandleMouseDown(_1,_4);case _2.$92d.TOUCH_STARTED:_4.originalType=_2.CLICK;_4.eventType=_2.MOUSE_UP;_2.$k5(_1,true);break;case _2.$92d.TOUCH_COMPLETE:break}
+this.$92f=_2.$92d.READY_FOR_TOUCH}}
+,isc.A.handleClick=function isc_c_EventHandler_handleClick(_1,_2){if(!isc.Page.isLoaded())return false;var _3=this,_4=_3.lastEvent,_5;if(!_2)_2=(_3.isDoubleClick(_1)?_3.DOUBLE_CLICK:_3.CLICK);if(isc.Page.handleEvent(_1,_2)==false){_5=false}else if(_3.eventHandledNatively(_2,_4.nativeTarget)){_5=_3.$js}else if(!_3.targetIsEnabled(_1)){_5=false}else if(!_3.stillWithinMouseDownTarget()){_5=false}else{var _1=_3.mouseDownTarget();_5=_3.bubbleEvent(_1,_2)}
+_3.$k9=isc.timeStamp();return _5}
+,isc.A.isDoubleClick=function isc_c_EventHandler_isDoubleClick(_1){var _2=this,_1=_1||_2.lastEvent.nativeTarget;var _3=_2.useNativeEventTime!=null?_2.useNativeEventTime:(isc.Browser.isMoz&&isc.Browser.isWin),_4,_5;if(_2._isSecondClick!=null){_5=_2._isSecondClick}else{if(_3){var _6=_2.lastEvent.DOMevent
+_4=_6?_6.timeStamp:null;if(_4==0||!isc.isA.Number(_4)){this.logDebug("Unable to derive native 'timeStamp' attribute from DOM event");_4=isc.timeStamp()}
+_5=((_4-_2.lastClickTime)<_2.DOUBLE_CLICK_DELAY)}else{_4=isc.timeStamp();_5=((_2.$k9-_2.lastClickTime)<_2.DOUBLE_CLICK_DELAY)?((_4-_2.lastClickTime)<_2.DOUBLE_CLICK_DELAY):((_4-_2.$k9)<100)}}
+_2.lastClickTime=_4;if(!_5){delete _2.lastClickTarget}
+var _7=false;if(_1==_2.lastClickTarget){_7=!_1.noDoubleClicks;if(_7){var _8=_1;while(_8.parentElement){_8=_8.parentElement;if(_8.noDoubleClicks){_7=false;break}}}}
+_2.lastClickTarget=(_7?null:_1);return _7}
+,isc.A.targetIsEnabled=function isc_c_EventHandler_targetIsEnabled(_1){if(!_1)return false;if(_1.destroyed)return false;if(isc.isA.Function(_1.isDisabled))return!_1.isDisabled();return true}
+,isc.A.$77p=function isc_c_EventHandler__handleTouchStart(_1){var _2=isc.EH;_2.DOMevent=_1;var _3=_2.getMouseEventProperties(_1);this.$92f=_2.$92d.TOUCH_STARTED;var _4=_2.handleEvent(_3.target,_2.TOUCH_START);if(_4!==false){_3.originalType=_2.TOUCH_START;_3.eventType=_2.MOUSE_DOWN;_2.doHandleMouseDown(_1,_3);if(_2.$78m!=null)isc.Timer.clear(_2.$78m);_2.$78m=this.delayCall("$78n",[],_2.longTouchDelay)}}
+,isc.A.$78n=function isc_c_EventHandler__handleLongTouch(){var _1=this;if(!_1.mouseIsDown()||!_1.mouseDownTarget()||!_1.stillWithinMouseDownTarget())return;_1.bubbleEvent(_1.mouseDownTarget(),_1.LONG_TOUCH)}
+,isc.A.$77q=function isc_c_EventHandler__handleTouchMove(_1){var _2=isc.EH;_2.DOMevent=_1;var _3=_2.getMouseEventProperties(_1);this.$92f=_2.$92d.READY_FOR_TOUCH;var _4=_2.handleEvent(_3.target,_2.TOUCH_MOVE);if(_4!==false){_3.originalType=_2.TOUCH_MOVE;_3.eventType=_2.MOUSE_MOVE;_2.$kx(_1,_3);if(_2.dragging&&window.event!=null)window.event.preventDefault()}
+if(_2.$78m!=null)isc.Timer.clear(_2.$78m)}
+,isc.A.$77r=function isc_c_EventHandler__handleTouchEnd(_1){var _2=isc.EH;_2.DOMevent=_1;var _3=_2.getMouseEventProperties(_1);if(this.$92f==_2.$92d.TOUCH_STARTED){this.$92f=_2.$92d.TOUCH_COMPLETE}
+var _4=_2.handleEvent(_3.target,_2.TOUCH_END);if(_4!==false){_3.originalType=_2.TOUCH_END;_3.eventType=_2.MOUSE_UP;_2.$k5(_1,true)}
+if(_2.$78m!=null)isc.Timer.clear(_2.$78m)}
+,isc.A.$86w=function isc_c_EventHandler__handleTouchCancel(_1){var _2=isc.EH;_2.DOMevent=_1;var _3=_2.getMouseEventProperties(_1);if(this.$92f==_2.$92d.TOUCH_STARTED){this.$92f=_2.$92d.TOUCH_COMPLETE}
+this.delayCall("$894",[_3,_1])}
+,isc.A.$894=function isc_c_EventHandler__handleDelayedTouchCancel(_1,_2){var _3=isc.EH;var _4=_3.handleEvent(_1.target,_3.TOUCH_END);if(_4!==false){_1.originalType=_3.TOUCH_CANCEL
+_1.eventType=_3.MOUSE_UP;_3.$k5(_2,true)}
+if(_3.$78m!=null)isc.Timer.clear(_3.$78m)}
+,isc.A.getFocusCanvas=function isc_c_EventHandler_getFocusCanvas(){return this.$ke}
+,isc.A.$la=function isc_c_EventHandler__logFocus(_1,_2){if(!this.logIsDebugEnabled("nativeFocus"))return;this.logDebug((_2?"onfocus":"onblur")+" fired on: "+_1+this.$lb(),"nativeFocus")}
+,isc.A.$lb=function isc_c_EventHandler__getActiveElementText(){if(!isc.Browser.isIE)return isc.$ad;var _1=this.getActiveElement();if(_1==null)return isc.$ad;return", activeElement: "+(_1.tagName)}
+,isc.A.blurFocusCanvas=function isc_c_EventHandler_blurFocusCanvas(_1,_2){var _3=this.$lc;if(_2){this.$h1("BLR");this.$la(_1);isc.EH.$ld=null}
+this.$le(_1,_2);if(_2)this.$lc=_3}
+,isc.A.$le=function isc_c_EventHandler__blurFocusCanvas(_1,_2){if(this.$ke){var _3=this.$ke;if(_1!=null&&_3!=_1)return;this.$ke=null;_3.$lf(false)}}
+,isc.A.focusInCanvas=function isc_c_EventHandler_focusInCanvas(_1,_2){var _3=this.$lc;if(_2){this.$h1("FCS");this.$la(_1,true);isc.EH.$lg=null}
+if(isc.Browser.isMoz){if(_2&&(this.lastEvent.eventType!=this.KEY_DOWN&&this.lastEvent.eventType!=this.KEY_PRESS&&this.lastEvent.eventType!=this.KEY_UP))
+{if(_1&&_1.showFocusOutline)_1.setShowFocusOutline(false,true)}else{if(_1&&_1.showFocusOutline)_1.setShowFocusOutline(true,true)}}
+this._focusInCanvas(_1,_2);if(_2)this.$lc=_3}
+,isc.A._focusInCanvas=function isc_c_EventHandler__focusInCanvas(_1,_2){if(!_1||_1.hasFocus||!_1.$kk()||_1.isDisabled())return;if(this.$ke==_1)return;this.checkMaskedFocus(_1);if(this.targetIsMasked(_1)){var _3=this.clickMaskRegistry.last();this.setMaskedFocusCanvas(_1,_3)}
+if(_2&&isc.Browser.isMoz){if(_1.parentElement)_1.parentElement.$lh(null,true)}
+var _4=this.$ke;this.$ke=_1;if(_4)_4.$lf(false)
+if(this.$ke!=_1)return;_1.$lf(true)}
+,isc.A.setMaskedFocusCanvas=function isc_c_EventHandler_setMaskedFocusCanvas(_1,_2){if(!_2)return;_2.$li=_1}
+,isc.A.getMaskedFocusCanvas=function isc_c_EventHandler_getMaskedFocusCanvas(_1){if(_1==null)_1=this.clickMaskRegistry.last();else _1=this.getClickMask(_1);if(_1)return _1.$li}
+,isc.A.checkMaskedFocus=function isc_c_EventHandler_checkMaskedFocus(_1){if(isc.Browser.isIE){var _2=this.getActiveElement();var _3=_1?_1.getHandle():null;if(!_3)return;var _4;while(_2&&_2.tagName){if(_2==_3){_4=true;break}
+if(_2.eventProxy){_4=(_2.eventProxy==_1.getID());break}
+_2=_2.parentElement}
+if(!_4)return}
+if(isc.Browser.isMobileWebkit){if(isc.EH.isMouseEvent(isc.EH.lastEvent.eventType)&&(isc.EH.mouseDownTarget()==_1))
+{return}}
+var _5=this.clickMaskRegistry;for(var i=_5.length-1;i>=0;i--){var _7=_5[i];if(!this.targetIsMasked(_1,_7))return;else{if(this.isHardMask(_7))return false;this.$lj(_7)}}}
+,isc.A.prepareForDragging=function isc_c_EventHandler_prepareForDragging(_1){var _2=this;if(_2.dragging)_2.handleDragStop();delete _2.dragMoveAction;delete _2.dragTarget;_2.bubbleEvent(_1,"prepareForDragging");if(!_2.dragTarget){if(this.logIsDebugEnabled("dragDrop"))this.logDebug("No dragTarget, not dragging","dragDrop");return}
+if(this.logIsInfoEnabled("dragDrop"))
+this.logInfo("target is draggable with dragOperation: "+_2.dragOperation+", dragTarget is : "+_2.dragTarget+(_2.dragTarget!=_1?" (delegated from: "+_1+")":""),"dragDrop");_2.dragTargetStartRect=_2.dragTarget.getRect()}
+,isc.A.handleDragStart=function isc_c_EventHandler_handleDragStart(){var _1=this,_2=_1.lastEvent;if(!_1.mouseIsDown()||!_1.dragTarget)return false;delete _1.dropTarget;delete _1.dragMoveTarget;_1.dragOffsetX=-10;_1.dragOffsetY=-10;_1.handleEvent(_1.lastMoveTarget,_1.MOUSE_OUT);if(_1.lastMoveTarget!=_1.mouseDownTarget()){_1.handleEvent(_1.mouseDownTarget(),_1.MOUSE_OUT)}
+if(isc.Hover)isc.Hover.clear();_1.dragStartOffsetX=_1.mouseDownEvent.x-_1.dragTarget.getPageLeft();_1.dragStartOffsetY=_1.mouseDownEvent.y-_1.dragTarget.getPageTop();var _3=_1.dragOperation+"Start";if(_1.handleEvent(_1.dragTarget,_3)==false){this.logInfo("drag cancelled by false return from: "+_3+" on "+_1.dragTarget,"dragDrop");delete _1.dragTarget;delete _1.dragTargetLink;_1.handleEvent(_1.dragTarget,_1.MOUSE_OVER);return false}
+delete _1.lastMoveTarget;var _4=_1.dragTarget.getDragAppearance(_1.dragOperation);if(_4!=_1.TRACKER)
+{_1.dragOffsetX=_1.dragStartOffsetX;_1.dragOffsetY=_1.dragStartOffsetY}
+if(_1.dragOperation==_1.DRAG_SCROLL){_1.dragAppearance=_1.NONE}else{_1.dragAppearance=_1.dragTarget.getDragAppearance(_1.dragOperation)}
+if(_1.dragAppearance==_1.TRACKER){_1.dragMoveTarget=_1.$lk();if(!_1.dragMoveAction)_1.dragMoveAction=_1.$ll;_1.dragTracker.setOverflow(isc.Canvas.VISIBLE);_1.bubbleEvent(_1.dragTarget,_1.SET_DRAG_TRACKER);_1.dragOffsetX=_1.dragTracker.offsetX;_1.dragOffsetY=_1.dragTracker.offsetY}else if(_1.dragAppearance==_1.OUTLINE){_1.dragMoveTarget=_1.getDragOutline(_1.dragTarget);if(!_1.dragMoveAction)_1.dragMoveAction=_1.$ll}else if(_1.dragAppearance==_1.TARGET){_1.dragMoveTarget=_1.dragTarget;if(!_1.dragMoveAction)_1.dragMoveAction=_1.$ll;if(_1.dragTarget.showDragShadow)this.$lm();if(_1.dragTarget.dragOpacity!=null)this.$ln()}else{}
+if(_1.dragMoveTarget){if(_1.dragMoveTarget!=_1.dragTarget){_1.dragMoveTarget.dragIntersectStyle=_1.dragTarget.dragIntersectStyle}
+_1.dragMoveTarget.show();_1.dragMoveTarget.bringToFront()}
+var _5=_1.dragMoveTarget?_1.dragMoveTarget:_1.dragTarget;if((isc.Browser.isIE||isc.Browser.isMoz)&&_1.dragAppearance!=_1.OUTLINE&&!(_5.$lo||_5.neverBackMask))
+{if(_1.alwaysBackMask){this.$lp(_5)}else{var _6=[];if(isc.BrowserPlugin){var _7=isc.BrowserPlugin.instances;for(var i=0;i<_7.length;i++){var _9=_7[i];if(_9.isVisible()&&(_5.parentElement==null||_5.parentElement.contains(_9,true)))
+{_6.add({instance:_9,rect:_9.getPageRect()})}}}
+if(isc.Browser.isIE&&isc.Browser.minorVersion>=5.5&&isc.NativeSelectItem){var _10=isc.NativeSelectItem.instances;for(var i=0;i<_10.length;i++){var _11=_10[i];if(_11.isVisible()&&(_5.parentElement==null||_5.parentElement.contains(_11.containerWidget,true)))
+{_6.add({instance:_11,rect:_11.getPageRect()})}}}
+if(_6.length>0&&_1.dynamicBackMask===false)
+{this.$lp(_5)}else{_1.$lq=_6}}}
+_1.showEventMasks((_1.dragOperation==_1.DRAG_RESIZE));_1.dragging=true;this.logInfo("Started dragOperation: "+_1.dragOperation+" with dragTarget: "+_1.dragTarget+" dragAppearance: "+_1.dragAppearance,"dragDrop");return true}
+,isc.A.$lm=function isc_c_EventHandler__showTargetDragShadow(){var _1=isc.EH;var _2=_1.dragTarget;_1.$lr=(!_2.showShadow);_1.$ls=_2.shadowDepth;_2.shadowDepth=_1.dragTargetShadowDepth;_2.updateShadow();if(!_2.showShadow)_2.setShowShadow(true)}
+,isc.A.$lt=function isc_c_EventHandler__hideTargetDragShadow(){var _1=isc.EH;var _2=_1.dragTarget;if(_1.$lr)_2.setShowShadow(false);_2.shadowDepth=_1.$ls;_2.updateShadow();delete _1.$lr;delete _1.$ls}
+,isc.A.$ln=function isc_c_EventHandler__setTargetDragOpacity(){var _1=isc.EH;var _2=_1.dragTarget;_1.$lu=_2.opacity;_2.setOpacity(_2.dragOpacity)}
+,isc.A.$lv=function isc_c_EventHandler__resetTargetDragOpacity(){var _1=isc.EH,_2=_1.dragTarget;_2.setOpacity(_1.$lw)}
+,isc.A.$lp=function isc_c_EventHandler__showBackMask(_1){if(_1._backMask){if(!_1._backMask.isVisible())_1._backMask.show()}else{_1.makeBackMask({$lx:true})}}
+,isc.A.$ly=function isc_c_EventHandler__hideBackMask(_1){if(_1._backMask&&_1._backMask.$lx&&_1._backMask.isVisible())
+{_1._backMask.hide()}}
+,isc.A.$lz=function isc_c_EventHandler__getDragMoveComponents(){var _1=this.dragMoveTarget;if(!_1)return;var _2=[_1];if(_1._backMask)_2.add(_1._backMask);if(_1.$l0)_2.add(_1.$l0);if(_1._shadow)_2.add(_1._shadow);return _2}
+,isc.A.$l1=function isc_c_EventHandler__getDragMoveEventName(_1){var _2=this.$ji;if(!_2[_1]){_2[_1]=_1+"Move"}
+return _2[_1]}
+,isc.A.handleDragMove=function isc_c_EventHandler_handleDragMove(){var _1=this,_2=_1.lastEvent;isc.$54j=true;_1.dropTarget=_1.getDropTarget(_2);isc.$54j=false;if(_1.$lq&&_1.dynamicBackMask){var _3=false;var _4=_1.dragMoveTarget?_1.dragMoveTarget:_1.dragTarget;var _5=_4.getRect();for(var i=0;i<_1.$lq.length;i++){var _7=_1.$lq[i];if(isc.Canvas.rectsIntersect(_7.rect,_5))
+{_1.$l2=_7.instance;_3=true;break}}
+if(_1.$l2){if(_1.$l2.repaintIfRequired)_1.$l2.repaintIfRequired()}
+if(_3){this.$lp(_4)}else{this.$ly(_4);delete _1.$l2}}else if(isc.BrowserPlugin){isc.BrowserPlugin.handleDragMoveNotify()}
+if(_1.dragMoveAction)_1.dragMoveAction();if(_1.handleEvent(_1.dragTarget,this.$l1(_1.dragOperation))==false){delete _1.dropTarget;return false}
+if(_1.dropTarget!=_1.lastDropTarget){this.logDebug("New drop target: "+_1.dropTarget,"dragDrop");if(_1.lastDropTarget){_1.handleEvent(_1.lastDropTarget,_1.DROP_OUT)}
+if(_1.dropTarget){_1.handleEvent(_1.dropTarget,_1.DROP_OVER)}
+_1.lastDropTarget=_1.dropTarget}
+if(_1.dropTarget){_1.handleEvent(_1.dropTarget,_1.DROP_MOVE)}
+isc.$54j=true;this.$l3();isc.$54j=false;return false}
+);isc.evalBoundary;isc.B.push(isc.A.$l3=function isc_c_EventHandler__handleDragScroll(){var _1=this,_2=_1.dragTarget;if(_1.dragOperation==_1.DRAG_SCROLL)return;if(_1.dragOperation==_1.DRAG_SELECT){if(_2.overflow==isc.Canvas.VISIBLE)return;if(!_2.containsEvent()||_2.$l4(_2.dragScrollDirection))
+{_2.$l5(_2.dragScrollDirection,true)}}
+var _3=[];var _4=_2.dragScrollType=="parentsOnly"?_2.getParentElements():isc.Canvas._canvasList;;if(_4==null||_4.length==0)return;for(var i=0;i<_4.length;i++){if((_4[i].hscrollOn||_4[i].vscrollOn)&&_4[i].isDrawn()&&_4[i].isVisible()&&_4[i].shouldDragScroll()){_3.add(_4[i])}}
+var _6=_1.lastEvent,_7=_6.x,_8=_6.y,_9=[];for(var i=0;i<_3.length;i++){if(_3[i].visibleAtPoint(_7,_8,false,_1.$lz()))
+_9.add(_3[i])}
+if(_9.length>0){var _10;for(var i=0;i<_9.length;i++){if(_9[i].$l4(_2.dragScrollDirection)){if(_10==null||_10.contains(_9[i],true))
+_10=_9[i]}}
+if(_10!=null)_10.$l5(_2.dragScrollDirection)}}
+,isc.A.handleDragStop=function isc_c_EventHandler_handleDragStop(){var _1=this,_2=_1.lastEvent,_3=false;_1.dragging=false;this.logInfo("end of drag interaction","dragDrop");_1.dragOffsetX=_1.dragOffsetY=0;var _4=_1.dragTarget,_5=_1.dragMoveTarget,_6=_1.dragOperation;if(_5&&(_5==_1.dragTracker||_5==_1.dragOutline))
+{_5.hide()}else{if(_4.showDragShadow)_1.$lt();if(_4.dragOpacity!=null)_1.$lv()}
+if(this.dragTracker&&this.dragTracker.$l6){this.dragTracker.destroy();delete this.dragTracker}
+var _7=_1.dragMoveTarget?_1.dragMoveTarget:_1.dragTarget;this.$ly(_7);if(_1.$lq)delete _1.$lq;var _8=_1.dropTarget;if(_8){_1.handleEvent(_1.dropTarget,_1.DROP_OUT);if(_8.willAcceptDrop())_1.handleEvent(_8,_1.DROP);_3=true}
+var _9=(_4==_5);if(_1.handleEvent(_4,_6+"Stop")!=false){_3=true;if(_6==_1.DRAG_RESIZE){if(!_9){if(_5!=null&&this.dragAppearance!=this.TRACKER){_4.setPageRect(_5.getPageLeft(),_5.getPageTop(),_5.getWidth(),_5.getHeight(),true)}else{var _10=isc.EH.resizeEdge;if(_10!=null){var X=isc.EH.getX(),Y=isc.EH.getY(),_13=_10.contains("L")?X-_1.dragTargetStartRect[0]:0,_14=_10.contains("T")?Y-_1.dragTargetStartRect[1]:0;_4.setPageRect(_10.contains("L")?X:_1.dragTargetStartRect[0],_10.contains("T")?Y:_1.dragTargetStartRect[1],_10.contains("R")?X-_4.getPageLeft():_1.dragTargetStartRect[2]-_13,_10.contains("B")?isc.EH.getY()-_4.getPageTop():_1.dragTargetStartRect[3]-_14,true)}}}
+var _15=_4.getVisibleWidth()-_1.dragTargetStartRect[2],_16=_4.getVisibleHeight()-_1.dragTargetStartRect[3];_4.dragResized(_15,_16)}else if(_6==_1.DRAG_REPOSITION){if(!_9){if(_5!=null){_4.setPageRect(_5.getPageLeft(),_5.getPageTop())}else{_4.setPageRect(isc.EH.getX(),isc.EH.getY())}
+_4.bringToFront()}
+_1.dragTarget.dragRepositioned()}}else{if(_6==_1.DRAG_RESIZE){if(_9){_4.setRect(_1.dragTargetStartRect)}}else if(_1.dragOperation==_1.DRAG_REPOSITION){if(_9){_4.moveTo(_1.dragTargetStartRect[0],_1.dragTargetStartRect[1])}}}
+_1.clearDragProperties();_1.hideEventMasks();var _17=_1.lastEvent.target;if(_17)_1.handleEvent(_17,_1.MOUSE_OVER);_1.lastMoveTarget=_17;return _3}
+,isc.A.getEventTargetCanvas=function isc_c_EventHandler_getEventTargetCanvas(_1,_2,_3){if(_1==null)_1={};var _4=this,_5=this.getWindow();if(!_2)_2=(isc.Browser.isIE?_1.srcElement:_1.target);if(!_4.$l7(_2)){return _4.lastTarget}
+if(_1&&_1.$49s)return _1.target;if(!_2||_2.tagName==this.$jj||_2.tagName==this.$jk){return(_4.lastTarget=null)}
+if(_2&&_2.tagName&&_2.tagName==this.$49r){var _6=isc.Applet?isc.Applet.idForName(_2.name):null;return _6?window[_6]:_4.lastTarget}
+if(isc.Browser.isIE&&_2.parentElement==null){_2=_4.lastTarget}else{var _7=this.$jl;if(isc.Browser.isIE&&!isc.Browser.isIE9){while(_2!=null){if(_2.eventProxy)break;_2=_2.parentElement}}else{while(_2!=null){if(_2.eventProxy!=null||(_2.hasAttribute!=null&&_2.hasAttribute(_7)))break;_2=_2.parentNode}}
+if(!_2)return(_4.lastTarget=null);_2=_5[_2.getAttribute(_7)];while(_2&&_2.eventProxy){if(isc.isA.String(_2.eventProxy)){_2.eventProxy=_5[_2.eventProxy]}
+_2=_2.eventProxy}
+if(this.logIsInfoEnabled()&&!_1||(_1.type!="mousemove"&&_1.type!="selectstart"))
+{if(_2!=null){this.logInfo("Target Canvas for event '"+_1.type+"': "+_2)}else{this.logDebug("No target Canvas for event '"+_1.type+"'")}}
+if(_2==_4.dragTracker){_2=_4.lastTarget}
+_4.lastTarget=_2}
+if(isc.isA.Canvas(_2)){if(_3&&_2.getEventTarget){_2=_2.getEventTarget(_3)}
+return _2}
+return null}
+,isc.A.$l7=function isc_c_EventHandler__canAccessNativeTargetProperties(_1){try{if(!(isc.Browser.isMoz&&_1==this.$jm))return true;_1.parentNode}catch(e){return false}
+return true}
+,isc.A.getDropTarget=function isc_c_EventHandler_getDropTarget(_1){var _2=this;if(!_2.dragTarget||!_2.dragTarget.canDrop||_2.dragOperation==_2.DRAG_RESIZE)return null;var _3=(_2.dragMoveTarget||_2.dragTarget),_4=_2.$i0,_5=[],i=0,_7=_4.length,_8=(_3.getDragAppearance(_2.dragOperation)!=isc.EH.TARGET);if(_3.dragIntersectStyle==_2.INTERSECT_WITH_MOUSE){if((_1.target!=this.mouseDownTarget()||(isc.Browser.isIE||(isc.Browser.isSafari&&!isc.Browser.isTouch)||(isc.Browser.isMoz&&isc.Browser.geckoVersion>20040616&&!this.mouseDownTarget().$ks))))
+{var _9=_1.target;while(_9&&_9.dropTarget)_9=_9.dropTarget;if((_8||_9!=_3)&&(_4.contains(_9)))
+{return _9}}
+for(;i<_7;i++){var _10=_4[i];if(_10.canAcceptDrop&&!_10.isDisabled()&&(_10.visibleAtPoint(_1.x,_1.y,false,_2.$lz()))&&(_8||_10!=_3))
+{_5.add(_10)}}}else{for(;i<_7;i++){var _10=_4[i];if(!_8&&_10==_3)continue;if(_10.intersects(_3)&&_10.canAcceptDrop&&!_10.isDisabled())
+{_5.add(_10)}}}
+if(_5.length<2)return _5[0];var _11=_5[0];for(var i=1;i<_5.length;i++){var _12=_5[i];if(_11.contains(_12,true)){_11=_12}else if(_3.dragIntersectStyle==_2.INTERSECT_WITH_RECT){var _13=null,_14=_11,_15=_12;while(_13==null){if(_14.parentElement==null){_13=true;_15=_12.topElement||_12}else if(_14.parentElement.contains(_12,true)){_13=_14.parentElement;while(_15.parentElement!=_13){_15=_15.parentElement}}else{_14=_14.parentElement}}
+if(_15.getZIndex()>_14.getZIndex()){_11=_12}}}
+return _11}
+,isc.A.registerDroppableItem=function isc_c_EventHandler_registerDroppableItem(_1){if(!_1.$ma){this.$i0.add(_1);_1.$ma=true}}
+,isc.A.unregisterDroppableItem=function isc_c_EventHandler_unregisterDroppableItem(_1){this.$i0.remove(_1);delete _1.$ma}
+,isc.A.registerMaskableItem=function isc_c_EventHandler_registerMaskableItem(_1,_2){if(!this.$i1.contains(_1)){this.$i1.add(_1);if(_2)this.makeEventMask(_1,{eventProxy:_1})}}
+,isc.A.unregisterMaskableItem=function isc_c_EventHandler_unregisterMaskableItem(_1){this.$i1.remove(_1);if(_1._eventMask)_1._eventMask.destroy();delete _1._eventMask}
+,isc.A.makeEventMask=function isc_c_EventHandler_makeEventMask(_1,_2,_3){if(isc.isA.Function(_1.makeEventMask))return _1.makeEventMask(_2,_3);var _4=this.$jn;if(!_4.contents)_4.contents=isc.Browser.isIE&&isc.Browser.version>6?isc.Canvas.blankImgHTML(3200,2400):isc.Canvas.spacerHTML(3200,2400);var _5=isc.Canvas.create({ID:_1.getID()+"_eventMask",cursor:_1.cursor,$jr:_1},_4,_2);_5.setRect(_3?_3:_1.getRect());_1._eventMask=_5;_1.addPeer(_5);return _5}
+,isc.A.showEventMasks=function isc_c_EventHandler_showEventMasks(_1,_2){var _3=this,_4=_3.$i1;if(_1){if(!_3._eventMask)_3._eventMask=isc.ScreenSpan.create({ID:"isc_EH_eventMask",mouseDown:function(){this.hide()},pointersToThis:[{object:_3,property:"_eventMask"}]});_3._eventMask.show();_3._eventMask.bringToFront();if(isc.BrowserPlugin){_4.intersect(isc.BrowserPlugin.instances).map("$mb")}}else{for(var i=0;i<_4.length;i++){var _6=_4[i];if(_2&&_2[_6.getID()]){_6.$mc()}else{_6.$mb()}}}}
+,isc.A.hideEventMasks=function isc_c_EventHandler_hideEventMasks(){var _1=this,_2=_1.$i1;if(_1._eventMask&&_1._eventMask.isVisible()){_1._eventMask.hide();if(isc.BrowserPlugin){_2.intersect(isc.BrowserPlugin.instances).map("$mc")}}else{for(var i=0;i<_2.length;i++){_2[i].$mc()}}}
+,isc.A.eventHandledNatively=function isc_c_EventHandler_eventHandledNatively(_1,_2,_3){var _4=_1;if(!this.reverseEventTypes[_1]){if(this.$i2[_1])
+_4=this.$i2[_1];else if(this.$i7[_1])
+_4=this.$i7[_1]}
+var _5=this.$md(_4,_2,_3);if(_5&&this.logIsDebugEnabled()&&_4!="mouseMove"){this.logDebug(_1+" event on "+(_3?" native target:"+_2:this.lastTarget)+" handled natively")}
+return _5}
+,isc.A.$md=function isc_c_EventHandler__eventHandledNatively(_1,_2,_3){_1=(_1||"");var _4=this,_5=_4.lastEvent;if(!_4.$l7(_2)){return true}
+if(_2&&_2.tagName==this.$49r)return true;var _6=_4.isMouseEvent(_1),_7=_6?_5.target:_5.keyTarget;if(!_3&&_6&&_7==null)return true;if((this.logIsInfoEnabled()&&_1==_4.KEY_DOWN)||(this.logIsDebugEnabled()&&(_1==_4.KEY_UP||_1==_4.KEY_PRESS)))
+{this.logInfo(_1+" event with Canvas target: "+this.lastEvent.keyTarget+", native target: "+this.echoLeaf(_2))}
+if(_4.passThroughEvents&&_2){var _8=_2,_9=(_8.handleNativeEvents||(_8.getAttribute?_8.getAttribute(this.$jt):null)),_10=_8.tagName,_11;if(!_4.$me)_4.$me="false";if(_9==null){_11=(!_8.focusProxy&&((_8.form!=null&&_10!=_4.$i6)||_4.$i5[_10]!=null||(_8.isContentEditable&&!_8.eventProxy)));if(!_11&&(_1!=_4.MOUSE_WHEEL)&&(_1!=_4.MOUSE_MOVE)){while(_8&&_8.tagName!=_4.BODY_TAG&&_8.tagName!=this.$jk)
+{if(_8.eventProxy!=null||(_8.hasAttribute!=null&&_8.hasAttribute(this.$jl)))break;if(_4.$i4[_8.tagName]!=null){var _12=(_8.handleNativeEvents||(_8.getAttribute?_8.getAttribute(this.$jt):null));if(_12!=null&&!isc.isA.emptyString(_12)){if(isc.isA.String(_12))
+_12=(_12==isc.EH.$me?false:true)}
+if(_12!=false){_11=true;break}}
+_8=_8.parentNode}}}else{_11=_9;if(_11==_4.$me)_11=false}
+if(_11){return true}else if(_9!=null){return false}}
+if(!_3&&_6&&this.$mf(_7,_1,_5))
+{return true}
+return false}
+,isc.A.isMouseEvent=function isc_c_EventHandler_isMouseEvent(_1){_1=_1||this.lastEvent.eventType;if(this.$mg==null){this.$mg={mouseOver:true,mouseover:true,mouseDown:true,mousedown:true,rightMouseDown:true,mouseMove:true,mousemove:true,mouseOut:true,mouseout:true,mouseUp:true,mouseup:true,DOMMouseScroll:true,mousewheel:true,mouseWheel:true,click:true,doubleClick:true,doubleclick:true,showContextMenu:true,showcontextmenu:true,selectStart:true,selectstart:true}}
+if(this.$mg[_1]==true)return true;if(_1=="selectionChange"){return(this.lastEvent.keyName==null||this.lastEvent.keyName=="")}
+if(_1=="contextMenu"||_1=="contextmenu"){return!this.lastEvent.keyboardContextMenu}
+return false}
+,isc.A.isKeyEvent=function isc_c_EventHandler_isKeyEvent(_1){_1=_1||this.lastEvent.eventType;if(this.$mh==null){this.$mh={};var _2=this.$mh;_2[this.KEY_DOWN]=true;_2[this.KEY_PRESS]=true;_2[this.KEY_UP]=true;var _3=this.$i7;for(var _4 in _3)_2[_4]=true}
+if(this.$mh[_1]==true)return true;if(_1=="contextMenu"||_1=="contextmenu"){return!!this.lastEvent.keyboardContextMenu}
+return false}
+,isc.A.$mf=function isc_c_EventHandler__eventOverCSSScrollbar(_1,_2,_3){if(isc.Browser.isTouch)return false;var _4=this;if(!_1||_1.showCustomScrollbars||!(_1.vscrollOn||_1.hscrollOn))return false;var _5=isc.Element.getNativeScrollbarSize();if(_1.isRTL()){if((_1.vscrollOn&&(_3.x<_1.getPageLeft()+_5))||(_1.hscrollOn&&(_3.y>_1.getPageTop()+_1.getHeight()-_5)))
+{if(_2==_4.MOUSE_DOWN)_4.$k0=true;return true}}else{if((_1.vscrollOn&&(_3.x>_1.getPageRight()-_5))||(_1.hscrollOn&&(_3.y>_1.getPageBottom()-_5)))
+{if(_2==_4.MOUSE_DOWN)_4.$k0=true;return true}}
+return false}
+,isc.A.bubbleEvent=function isc_c_EventHandler_bubbleEvent(_1,_2,_3,_4){var _5=this,_6=_5.lastEvent;var _7=this.logIsDebugEnabled()&&!this.$ju[_2];var _8=this.isMouseEvent(_2);if(_8){if(_4==null){_4=this.targetIsMasked(_1,null)}
+if(_4){if(_7){this.logDebug(_2+" on "+_1+" blocked by clickmask")}
+return false}}
+var _9=this.$mi(_2);while(_1){if(_1.destroyed)break;var _10=null;var _11=null;if(_1.mouseEventParent&&_2.startsWith("mouse")){_10=_1.mouseEventParent}else if(_1.keyEventParent&&_2.startsWith("key")){_10=_1.keyEventParent}else{_10=(_1.eventParent||_1.parentElement)}
+if(_10&&_10.eventProxy)_10=_10.eventProxy;if(_1[_9]!=null){_11=_9}else if(_1[_2]!=null&&_1[_2]!=isc.Class.NO_OP&&!isc.is.emptyString(_1[_2])){_11=_2;if(isc.isA.String(_1[_2])){_1.convertToMethod(_2)}
+if(_7){this.logDebug("Bubbling event '"+_2+"', target '"+_1+"' has handler: "+this.echoLeaf(_1[_2]))}}
+if(_11!=null&&_1[_11]!=null){var _12;_12=_1[_11](_6,_3);if(_12==false){if(_7){this.logDebug("Bubbling for event '"+_2+"' cancelled via false return value by target: "+_1)}
+return false}
+if(_12==_5.STOP_BUBBLING){if(_7){this.logDebug("Bubbling for event '"+_2+"' cancelled via STOP_BUBBLING return value by target: "+_1)}
+return _5.STOP_BUBBLING}}
+if(_1.bubbleEvents==false||(_1.bubbleMouseEvents==false&&_5.isMouseEvent(_2)))
+{if(_7){this.logDebug("Bubbling for event '"+_2+"' stopped by '"+_1+"' which does not allow bubbling")}
+return true}else if(isc.isAn.Array(_1.bubbleMouseEvents)){if(_1.bubbleMouseEvents.contains(_2)){if(_7){this.logDebug("Bubbling for event '"+_2+"' stopped by '"+_1+"' which does not allow bubbling")}
+return true}}
+_1=_10}
+if(_7)this.logDebug("Event '"+_2+"' bubbled to top");return true}
+,isc.A.$mi=function isc_c_EventHandler__getInternalHandlerName(_1){if(!this.$jc[_1]){this.$jc[_1]="handle"+_1.charAt(0).toUpperCase()+_1.substring(1)}
+return this.$jc[_1]}
+,isc.A.hasEventHandler=function isc_c_EventHandler_hasEventHandler(_1,_2){if(!isc.isAn.Object(_1)||!isc.isA.String(_2)){isc.Log.logWarn("EventHandler.hasEventHandler() passed bad parameters ["+[_1,_2]+"]. returning null;","event");return null}
+var _3=this.$mi(_2);if(this.getBubbledProperty(_1,_2)!=null||this.getBubbledProperty(_1,_3)!=null)return true;return false}
+,isc.A.getBubbledProperty=function isc_c_EventHandler_getBubbledProperty(_1,_2){while(_1){if(_1[_2])return _1[_2];_1=(_1.eventParent||_1.parentElement);if(_1&&_1.eventProxy)_1=_1.eventProxy}
+return null}
+,isc.A.handleSelectStart=function isc_c_EventHandler_handleSelectStart(){var _1=isc.EH;if(_1.$904)return true;var _2=_1.getWindow(),_3=_2.event?_2.event.srcElement:null,_4=_1.mouseDownEvent?_1.mouseDownEvent.nativeTarget:null;if(_3&&_4==_3&&_3.form&&!_1.dragging)
+{return true}
+if(isc.EH.$mj)return true;var _5=isc.EH.mouseIsDown()?_1.mouseDownTarget():null,_6=_1.getEventTargetCanvas(_2.event);var _7=(_1.dragging||_1.dragTarget)&&_1.dragOperation!=_1.DRAG_SELECT;var _8=!_7&&(_5!=null?_5.$kr():true)&&(_6!=null?_6.$kr():true);if(_8)return true;return _1.killEvent()}
+,isc.A.handleSelectionChange=function isc_c_EventHandler_handleSelectionChange(_1){if(!_1)_1=window.event;var _2=isc.EH;var _3=_2.lastEvent;var _4=isc.Element.$mk(document);if(_4){var _5=_2.getEventTargetCanvas(_1,_4);_3.nativeKeyTarget=_4
+_3.keyTarget=_5;_3.eventType=this.$41z;if(_5){_5.keyTarget=_5;_2.bubbleEvent(_3.keyTarget,"selectionChange")}}
+return true}
+,isc.A.handleNativeHelp=function isc_c_EventHandler_handleNativeHelp(){if(this.$69a){if(this.$69a()==false)return false}
+if(this.$69b){if(this.$69b()==false)return false}
+return isc.EH.$j9(window.event,true)}
+,isc.A.handleNativeDragStart=function isc_c_EventHandler_handleNativeDragStart(){if(isc.EH.dragTarget)return false;var _1=isc.EH.mouseDownTarget();if(_1)return!!(_1.$kr());if(this.$ml)return this.$ml();if(this.$mm)return this.$mm()}
+,isc.A.handleResize=function isc_c_EventHandler_handleResize(_1){if(isc.EH.resizeTimer==null){isc.EH.resizeTimer=isc.Timer.setTimeout("isc.EH.$hr()",0)}
+return true}
+,isc.A.handleOrientationChange=function isc_c_EventHandler_handleOrientationChange(_1){this.$78p()}
+,isc.A.$mn=function isc_c_EventHandler__pageResizePollMethod(){isc.EH.$hr(true)}
+,isc.A.$hr=function isc_c_EventHandler__pageResize(_1){isc.EH.resizeTimer=null;var _2=isc.Page.getOrientation();if(!_1){this.$mo=isc.Page.getWidth(window,true);this.$mp=isc.Page.getHeight(window,true);if(this.resizingPollTimer!=null)isc.Timer.clearTimeout(this.resizingPollTimer);this.resizingPollTimer=isc.Timer.setTimeout(this.$mn,100)}else{var _3=isc.Page.getWidth(window,true),_4=isc.Page.getHeight(window,true),_5=(_2==this.currentOrientation)&&(_3==this.$mo&&_4==this.$mp)
+if(isc.Page.pollPageSize){isc.Page.setEvent(isc.EH.IDLE,this.$mn,isc.Page.FIRE_ONCE)}
+if(_5)return;this.$mo=_3;this.$mp=_4}
+this.$78p(_2)}
+,isc.A.$78p=function isc_c_EventHandler__fireResizeEvent(_1){isc.Page.handleEvent(null,isc.EH.RESIZE);if(_1==null)_1=isc.Page.getOrientation();if(_1!=this.currentOrientation){this.currentOrientation=_1;isc.Page.handleEvent(null,isc.EH.ORIENTATION_CHANGE)}}
+,isc.A.handleMouseWheel=function isc_c_EventHandler_handleMouseWheel(_1){var _2=isc.EH;if(!_1)_1=_2.getWindow().event;var _3=(_1.srcElement||_1.target);if(_2.eventHandledNatively(_1.type,_3))return _2.$js;_2.getMouseEventProperties(_1);var _4=_2.getEventTargetCanvas(_1);if(_2.bubbleEvent(_4,_2.eventTypes.MOUSE_WHEEL)==false){if(_1.preventDefault)_1.preventDefault();return false}
+return true}
+,isc.A.getWheelDelta=function isc_c_EventHandler_getWheelDelta(_1){return(_1||this.lastEvent).wheelDelta}
+,isc.A.handleDOMMouseScroll=function isc_c_EventHandler_handleDOMMouseScroll(_1){return isc.EH.handleMouseWheel(_1)}
+,isc.A.handleScroll=function isc_c_EventHandler_handleScroll(_1){}
+,isc.A.prepareForLinkDrag=function isc_c_EventHandler_prepareForLinkDrag(_1,_2){this.dragTarget=(isc.isA.String(_1)?this.getWindow()[_1]:_1);this.dragTargetLink=_2;return false}
+,isc.A.setDragTracker=function isc_c_EventHandler_setDragTracker(_1,_2,_3,_4,_5,_6){var _7=this.$lk(_6);_2=_2||10;_3=_3||10;_7.resizeTo(_2,_3);_7.setContents(_1);_7.redrawIfDirty("setDragTracker");if(_4)_7.offsetX=_4;if(_5)_7.offsetY=_5;_7.$l6=true}
+,isc.A.$lk=function isc_c_EventHandler__makeDragTracker(_1){if(!this.dragTracker){var _2=this.dragTrackerDefaults;_2.contents=isc.Canvas.imgHTML("[SKIN]black.gif",10,10);this.dragTracker=isc.Canvas.create(_2,_1)}else if(_1!=null)this.dragTracker.setProperties(_1);return this.dragTracker}
+,isc.A.getDragOutline=function isc_c_EventHandler_getDragOutline(_1,_2,_3){if(!this.dragOutline){this.dragOutline=isc.Canvas.create({autoDraw:false,overflow:isc.Canvas.HIDDEN})
+if(isc.Browser.isIE)this.dragOutline.setContents(isc.Canvas.spacerHTML(3200,2400))}
+var _4=this.dragOutline;if(isc.Element.getStyleDeclaration(_1.dragOutlineStyle)){_4.setStyleName(_1.dragOutlineStyle)}else{_4.setBorder((_2||1)+"px solid "+(_3||"black"))}
+_4.setPageRect(_1.getPageLeft(),_1.getPageTop(),_1.getVisibleWidth(),_1.getVisibleHeight());_4.minWidth=_1.minWidth;_4.minHeight=_1.minHeight;_4.maxWidth=_1.maxWidth;_4.maxHeight=_1.maxHeight;if(isc.isAn.Array(_1.keepInParentRect)){_4.keepInParentRect=_1.keepInParentRect}else if(_1.keepInParentRect==true){_4.keepInParentRect=_1.getParentPageRect()}else{_4.keepInParentRect=null}
+return _4}
+,isc.A.getDragRect=function isc_c_EventHandler_getDragRect(){var _1=this.dragMoveTarget||this.dragTarget;if(!_1)return null;return _1.getPageRect()}
+,isc.A.$ll=function isc_c_EventHandler__moveDragMoveTarget(){var _1=this;var _2=_1.dragMoveTarget;if(!_2)return true;var _3=(isc.Browser.isMoz&&isc.Browser.geckoVersion<20031007&&!_2.keepInParentRect);if(_3&&(_2.parentElement&&!_2.parentElement.containsPoint(_1.lastEvent.x,_1.lastEvent.y)))
+{return true}
+isc.$54j=true;_1.dragMoveTarget.moveToEvent(_1.dragOffsetX,_1.dragOffsetY);isc.$54j=false;return true}
+,isc.A.$mq=function isc_c_EventHandler__resizeDragMoveTarget(){var _1=this;if(_1.dragMoveTarget)_1.dragMoveTarget.resizeToEvent(_1.resizeEdge);return true}
+,isc.A.killEvent=function isc_c_EventHandler_killEvent(){isc.EH.getWindow().event.cancelBubble=true;return false}
+,isc.A.stopBubbling=function isc_c_EventHandler_stopBubbling(){return isc.EH.STOP_BUBBLING}
+,isc.A.startIdleTimer=function isc_c_EventHandler_startIdleTimer(){if(!isc.Page.isLoaded())return;if(!this.idleTimer){this.idleTimer=isc.Timer.setTimeout({target:isc.EH,methodName:this.$jv},this.IDLE_DELAY)}}
+,isc.A.$jw=function isc_c_EventHandler__handleIdle(){this.idleTimer=null;var _1=isc.Page.handleEvent(null,this.IDLE);if(isc.Page.actionsArePendingForEvent(this.IDLE))this.startIdleTimer();return _1}
+,isc.A.$h1=function isc_c_EventHandler__setThread(_1){var _2=_1+this.$jx++;if(this.$lc!=null)this.$90m=this.$lc;this.$lc=_2;if(this.$jx>9)this.$jx=0}
+,isc.A.$h2=function isc_c_EventHandler__clearThread(){if(this.$mr!=null)this.runTeas();if(this.$90m){this.$lc==this.$90m;this.$90m=null}else{this.$lc=null}}
+,isc.A.$ms=function isc_c_EventHandler__setThreadExitAction(_1){isc.Timer.setTimeout(_1,0);var _2=this.$mr;if(_2==null)_2=this.$mr=[];_2.add(_1)}
+,isc.A.runTeas=function isc_c_EventHandler_runTeas(){this.$lc+="[E]";while(this.$mr!=null){var _1=this.$mr;this.$mr=null;if(this.logIsDebugEnabled()){this.logDebug("firing threadExitActions: "+this.echoAll(_1))}
+for(var i=0;i<_1.length;i++){var _3=_1[i];if(isc.isA.String(_3))isc.eval(_3);else _3()}}}
+,isc.A.dispatch=function isc_c_EventHandler_dispatch(_1,_2){if(isc.$611!=null){delete isc.$611}
+if(isc.Browser.isIE)_2=this.getWindow().event;this.$h1(this.$jy[_2.type]||_2.type);if(isc.Log.supportsOnError){var _3=_1.call(this,_2)}else{try{var _3=_1.call(this,_2)}catch(e){isc.Log.$am(e);throw e;}}
+this.$h2();if(_3!=false&&this.$j3[_2.type]){var _4=this.$j3[_2.type](_2);if(_4==false)_3=false}
+return _3}
+,isc.A.captureEvent=function isc_c_EventHandler_captureEvent(_1,_2,_3,_4){var _5=this.getWindow(),_6=this.$mt;var _7=isc.$aq(this.$j0,this.$j1);_7.$ch=_5;_7.$j2=_4;var _8;if(!_6){if(_1[_2]!=null){var _8=this.$j4[_2]||_2.substring(2);this.$j3[_8]=_1[_2]}
+_1[_2]=_7}else{if(isc.Browser.isIE){_1.attachEvent(_2,_7)}else if(isc.Browser.isDOM){_8=this.$j4[_2]||_2.substring(2);_1.addEventListener(_8,_7,false)}else{this.logWarn("Unable to use event listeners in this browser");this.$mt=false;return this.captureEvent(_1,_2,_3,_4)}}
+if(_1===_5.document){var _9=(!_6||isc.Browser.isIE)?_2:_8;this.$649[_9]=_7}}
+,isc.A.captureEvents=function isc_c_EventHandler_captureEvents(_1){var _2=this;if(window.isc_useEventListeners!=null)_2.$mt=window.isc_useEventListeners;var _3=isc.makeReverseMap(_2.eventTypes);isc.addProperties(_2,{reverseEventTypes:_3});if(_1==null)_1=this.getWindow();var _4=_1.document;isc.Page.setEvent(_2.LOAD,isc.Page.finishedLoading);if(isc.Browser.isIE){_1.attachEvent("onload",_2.handleLoad)}else if(isc.Browser.isDOM&&!isc.Browser.isOpera){_1.addEventListener("load",_2.handleLoad,true)}else{this.captureEvent(_1,"onload",_2.LOAD,_2.handleLoad)}
+if(!this.$j8()){this.captureEvent(_1,"onunload",_2.UNLOAD,_2.handleUnload)}
+this.captureEvent(_1,"onresize",_2.RESIZE,_2.handleResize);this.captureEvent(_4,"onmousedown",_2.MOUSE_DOWN,_2.handleMouseDown);this.captureEvent(_4,"onmousemove",_2.MOUSE_MOVE,_2.handleMouseMove);this.captureEvent(_4,"onmouseup",_2.MOUSE_UP,_2.handleMouseUp);this.captureEvent(_4,"onclick",_2.CLICK,_2.handleNativeClick);this.captureEvent(_4,"ondblclick",_2.DOUBLE_CLICK,_2.handleNativeClick);this.captureEvent(_4,"onscroll","scroll",_2.handleScroll);this.captureEvent(_4,"onmousewheel",_2.MOUSE_WHEEL,_2.handleMouseWheel);if(isc.Browser.isMoz){_1.addEventListener("DOMMouseScroll",_2.handleDOMMouseScroll,true)}
+this.captureEvent(_4,"onmouseout",_2.MOUSE_OUT,_2.handleNativeMouseOut);this.captureEvent(_4,"oncontextmenu",_2.SHOW_CONTEXT_MENU,_2.handleContextMenu);this.captureEvent(_4,"onselectstart",_2.SELECT_START,_2.handleSelectStart);this.captureEvent(_1,"onselectstart",_2.SELECT_START,_2.handleSelectStart);if(isc.Browser.isIE){this.captureEvent(_4,"onselectionchange",_2.SELECTION_CHANGE,_2.handleSelectionChange)}
+if(_1.isc_captureKeyEvents!=false){this.captureEvent(_4,"onkeydown",_2.KEY_DOWN,_2.$j9);this.captureEvent(_4,"onkeypress",_2.KEY_PRESS,_2.$kd);this.captureEvent(_4,"onkeyup",_2.KEY_UP,_2.$kb)}
+if(isc.Browser.isIE){this.$mm=_1.ondragstart;this.$ml=_4.ondragstart;_4.ondragstart=_1.ondragstart=_2.handleNativeDragStart;this.$69b=_1.onhelp;this.$69a=_4.onhelp;_4.onhelp=_1.onhelp=_2.handleNativeHelp}
+if(isc.Browser.isTouch){this.$92f=_2.$92d.READY_FOR_TOUCH;this.captureEvent(_4,"ontouchstart",_2.TOUCH_START,_2.$77p);this.captureEvent(_4,"ontouchmove",_2.TOUCH_MOVE,_2.$77q);this.captureEvent(_4,"ontouchend",_2.TOUCH_END,_2.$77r);this.captureEvent(_4,"ontouchcancel",_2.TOUCH_CANCEL,_2.$86w)}
+if(isc.Browser.isMobile){isc.Page.pollPageSize=true}}
+,isc.A.$j8=function isc_c_EventHandler__useEventListenerForUnload(){return(isc.Browser.isSafari&&isc.Browser.safariVersion<=412)}
+,isc.A.releaseEvents=function isc_c_EventHandler_releaseEvents(_1){var _2=this;if(_1==null)_1=this.getWindow();var _3=_1.document,_4=this.$649;for(var _5 in _4){if(!this.$mt){_3[_5]=null}else{if(isc.Browser.isIE){_3.detachEvent(_5,_4[_5])}else if(isc.Browser.isDOM){_3.removeEventListener(_5,_4[_5],false)}}}
+if(isc.Browser.isIE){_3.ondragstart=_1.onhelp=null;_3.onhelp=_1.onhelp=null}
+delete this.$649}
+,isc.A.getLastEvent=function isc_c_EventHandler_getLastEvent(){return this.lastEvent}
+,isc.A.getEventType=function isc_c_EventHandler_getEventType(_1){return(_1||this.lastEvent).eventType}
+,isc.A.getTarget=function isc_c_EventHandler_getTarget(_1){return(_1||this.lastEvent).target}
+,isc.A.getDragTarget=function isc_c_EventHandler_getDragTarget(){return this.dragTarget}
+,isc.A.getX=function isc_c_EventHandler_getX(_1){return(_1||this.lastEvent).x}
+,isc.A.getY=function isc_c_EventHandler_getY(_1){return(_1||this.lastEvent).y}
+,isc.A.getScreenX=function isc_c_EventHandler_getScreenX(_1){return(_1||this.lastEvent).screenX}
+,isc.A.getScreenY=function isc_c_EventHandler_getScreenY(_1){return(_1||this.lastEvent).screenY}
+,isc.A.mouseIsDown=function isc_c_EventHandler_mouseIsDown(){return(this.$j6)}
+,isc.A.mouseDownTarget=function isc_c_EventHandler_mouseDownTarget(){return(this.mouseDownEvent?this.mouseDownEvent.target:null)}
+,isc.A.getButtonNum=function isc_c_EventHandler_getButtonNum(_1){return(_1||this.lastEvent).buttonNum}
+,isc.A.leftButtonDown=function isc_c_EventHandler_leftButtonDown(_1){return((_1||this.lastEvent).buttonNum==1)}
+,isc.A.rightButtonDown=function isc_c_EventHandler_rightButtonDown(_1){if(!_1)_1=this.lastEvent;return(_1.buttonNum==2)||(_1.button==2)||(isc.Browser.isMac&&_1.ctrlKey)||(isc.Browser.isOpera&&(_1.ctrlKey&&_1.shiftKey))||((isc.Browser.isSafari&&(isc.Browser.safariVersion<125))&&_1.altKey)}
+,isc.A.useSyntheticRightButtonEvents=function isc_c_EventHandler_useSyntheticRightButtonEvents(){return isc.Browser.isOpera||(isc.Browser.isSafari&&(isc.Browser.safariVersion<125))}
+,isc.A.getKeyEventCharacterValue=function isc_c_EventHandler_getKeyEventCharacterValue(_1){return(_1||this.lastEvent).characterValue}
+,isc.A.getKeyEventCharacter=function isc_c_EventHandler_getKeyEventCharacter(_1){return String.fromCharCode(this.getKeyEventCharacterValue(_1))}
+,isc.A.getKey=function isc_c_EventHandler_getKey(_1){return(_1||this.lastEvent).keyName||null}
+,isc.A.getKeyName=function isc_c_EventHandler_getKeyName(_1){return this.getKey(_1)}
+,isc.A.shiftKeyDown=function isc_c_EventHandler_shiftKeyDown(_1){return!!((_1||this.lastEvent).shiftKey)}
+,isc.A.ctrlKeyDown=function isc_c_EventHandler_ctrlKeyDown(_1){return!!((_1||this.lastEvent).ctrlKey)}
+,isc.A.altKeyDown=function isc_c_EventHandler_altKeyDown(_1){return!!((_1||this.lastEvent).altKey)}
+,isc.A.metaKeyDown=function isc_c_EventHandler_metaKeyDown(_1){return!!((_1||this.lastEvent).metaKey)}
+,isc.A.getKeyEventProperties=function isc_c_EventHandler_getKeyEventProperties(_1){if(_1==null)_1=this.getWindow().event;var _2=this.lastEvent;_2.nativeKeyTarget=(_1.target||_1.srcElement);_2.keyTarget=this.$ke;if(isc.isA&&isc.DynamicForm&&isc.isA.DynamicForm(this.$ke)){var _3=isc.DynamicForm.$mu(_2.nativeKeyTarget,_2.keyTarget);if(_3&&_3.item)_2.keyTarget=_3.item}
+_2.eventType=this.getKeyEventType(_1.type);if(_2.eventType==this.KEY_PRESS){_2.characterValue=this.$mv(_1)}
+var _4=this.determineEventKeyName(_1);if(_4!=null){_2.keyName=_4}else if(_2.eventType!=isc.EH.keyPress)delete _2.keyName;_2.nativeKeyCode=_1.keyCode;_2.shiftKey=(_1.shiftKey==true||(isc.Browser.isMoz&&_2.shiftKey));_2.ctrlKey=(_1.ctrlKey==true);_2.altKey=(_1.altKey==true);_2.metaKey=(_1.metaKey==true)}
+,isc.A.getKeyEventType=function isc_c_EventHandler_getKeyEventType(_1){if(!_1)return;return this.$i7[_1]}
+,isc.A.$mv=function isc_c_EventHandler__determineKeyEventCharacterValue(_1){if(isc.Browser.isIE)return(_1.keyCode||null);if(isc.Browser.isMoz){return(_1.which||null)}
+return(_1.which||_1.keyCode||null)}
+,isc.A.determineEventKeyName=function isc_c_EventHandler_determineEventKeyName(_1){if(_1==null)return;var _2=_1.keyCode,_3=_1.which,_4=isc.EH,_5=_4.getKeyEventType(_1.type),_6=this.getWindow().event;if(_1.type==this.$689)return this.$688;if(isc.Browser.isIE){if(_5==_4.KEY_DOWN||_5==_4.KEY_UP){return _4.$iz[_2]}
+if(_5==_4.KEY_PRESS){var _7=_4.$85t[_4.$85t.length-1];if(_7!=null)return _7;var _8=_4.$ja[_2];if(!_8&&_6&&_6.ctrlKey){_8=isc.EH.$mw(_2)}
+return _8}}else if(isc.Browser.isMoz){if(_5==_4.KEY_DOWN||_5==_4.KEY_UP){return _4.$iz[_2]}else if(_5==_4.KEY_PRESS){if(_3==0&&_2!=0)return _4.$iz[_2];var _7=_4.$85t[_4.$85t.length-1];if(_7!=null)return _7;if(_2==0){return _4.$ja[_3]}else{return _4.$iz[_3]}}}else if(isc.Browser.isSafari){if(_5==_4.KEY_DOWN||_5==_4.KEY_UP){return _4.$iz[_2]}
+var _9=(_3!=null?_3:_2);if(_9!=null&&_9!=0){if(_6&&_6.ctrlKey){var _10=isc.EH.$ja[_9];if(_10==null){if(_9==10)_10="Enter";else _10=isc.EH.$mw(_9)}
+return _10}
+var _10=isc.EH.$ja[_9];if(_10==null)_10=isc.EH.$jb[_9]
+return _10}else if(_5==this.KEY_PRESS){return null}}else{var _9=_3;if(_9==null||(_9==0&&_2))_9=_2
+if(_9!=null)return isc.EH.$ja[_9]}
+isc.Log.logWarn("EventHandler.determineEventKeyName(): Unable to determine key for '"+_1.type+"' event. Returning null");return null}
+,isc.A.$mw=function isc_c_EventHandler__getKeyNameFromCtrlCharValue(_1){if(_1==30)return"6";if(_1==31)return"-";return String.fromCharCode(_1+64)}
+,isc.A.clearKeyEventProperties=function isc_c_EventHandler_clearKeyEventProperties(_1){var _2=this.lastEvent;delete _2.eventType;delete _2.nativeKeyTarget;delete _2.characterValue;delete _2.keyName;delete _2.shiftKey;delete _2.ctrlKey;delete _2.altKey;delete _2.metaKey;this.$85t.remove(_1)}
+,isc.A.canvasDestroyed=function isc_c_EventHandler_canvasDestroyed(_1){if(this.clickMaskUp())isc.EH.maskTarget(_1);if(_1.$rq)isc.Page.clearEvent(_1.$nx,_1.$rq);if(this.mouseDownEvent&&this.mouseDownEvent.target==_1)
+this.mouseDownEvent.target=null;if(this.lastClickTarget==_1)this.lastClickTarget=null;if(this.lastEvent.target==_1)this.lastEvent.target=null;if(this.lastEvent.keyTarget==_1)this.lastEvent.keyTarget=null;if(this.$ke==_1)this.$ke=null;if(this.$k7==_1)this.$k7=null}
+,isc.A.showClickMask=function isc_c_EventHandler_showClickMask(_1,_2,_3,_4){var _5;if(_2==true){_5=true;_2=isc.EH.SOFT}else if(_2==false||_2==null){_5=false;_2=isc.EH.HARD}else{_5=(_2!=isc.EH.HARD)}
+if(_3==null)_3=[];else if(!isc.isAn.Array(_3))_3=[_3]
+var _6=this,_7=_6.clickMaskRegistry,_8=_6.getFocusCanvas();if(this.logIsInfoEnabled("clickMask")){this.logInfo("showing click mask, action: "+_1+(_5?", autoHide true ":", autoHide false ")+(_4?", ID: "+_4:"")+", focusCanvas: "+_8,"clickMask")}
+if(_6.lastMoveTarget)_6.handleEvent(_6.lastMoveTarget,_6.MOUSE_OUT);delete _6.lastMoveTarget;var _9={autoHide:_5,mode:_2,ID:(_4!=null?_4:"cm_"+_6.$j7++),$mx:{}};this.$my(_3,_9);var _10=_7.last();_7.add(_9);_9.clickAction=_1;if(_8!=null&&!_3.contains(_8)){_8.blur("showing clickMask");this.setMaskedFocusCanvas(_8,_9)}else if(_10!=null){this.setMaskedFocusCanvas(_10.$li,_9)}
+var _11=this.isHardMask(_9);if(_11){var _12=isc.timeStamp();var _13;if(_7.length>1){var _14=false,_15=[];for(var i=_7.length-2;i>=0;i--){_15.add(_7[i]);if(this.isHardMask(_7[i])){_14=true;break}}
+if(_14){for(var i=0;i<_15.length;i++){var _17=_15[i].$mx;if(_17){this.$mz(_17,_3,true,true)}}}else{_13=true;this.$mz(isc.Canvas._canvasList,_3,false,true)}}else{_13=true;this.$mz(isc.Canvas._canvasList,_3,false,true)}}
+if(this.maskNativeTargets){if(_10==null){this.showScreenSpan(_9)}else if(_11){this.$m0(_9.$mx)}}
+this.updateEventMasks();return _9.ID}
+,isc.A.updateEventMasks=function isc_c_EventHandler_updateEventMasks(){var _1=this.clickMaskRegistry,_2=_1?_1[_1.length-1]:null;if(_2&&_2.autoHide){var _3={};isc.addProperties(_3,_2.$mx);this.showEventMasks(false,_3)}else{this.hideEventMasks()}}
+,isc.A.$my=function isc_c_EventHandler__applyUnmaskedTargets(_1,_2){_1=this.$m1(_1,_2);for(var i=0;i<_1.length;i++){if(_1[i]==null)continue;_2.$mx[_1[i].getID()]=true}}
+,isc.A.$m1=function isc_c_EventHandler__getFullSetOfTargetsToUnmask(_1,_2){if(!_1||_1.length==0||!_2)return _1;for(var i=0;i<_1.length;i++)
+_1[i]=this.$m2(_1[i]);var _4=_2.$mx;if(!_2.autoHide&&_1.length>0){var _5=_1.length;for(var i=0;i<_5;i++){var _6=_1[i];if(_6.topElement&&!_4[_6.topElement.getID()]&&!_1.contains(_6.topElement))
+{this.logWarn("Attempting to unmask target canvas:"+_6.getID()+" with respect to a hard click mask. "+"This is not a top level Canvas - all ancestors of "+"this Canvas will also be unmasked.","clickMask");_1.add(_6.topElement)}}}
+this.$m3(_1);this.$m4(_1);return _1}
+,isc.A.$m4=function isc_c_EventHandler__combineDescendantsIntoList(_1){var _2=_1.length;for(var i=0;i<_2;i++){if(_1[i]==null)continue;this.$m5(_1[i],_1)}}
+,isc.A.$m5=function isc_c_EventHandler__addDescendantsToList(_1,_2,_3){if(_3&&!_2.contains(_1))_2.add(_1);if(_1.children){for(var i=0;i<_1.children.length;i++){this.$m5(_1.children[i],_2,true)}}
+if(isc.DynamicForm&&isc.CanvasItem&&isc.isA.DynamicForm(_1)){var _5=_1.getItems()||[];for(var i=0;i<_5.length;i++){if(_5[i].containerWidget==_1)continue;if(isc.isA.CanvasItem(_5[i])&&isc.isA.Canvas(_5[i].canvas)){this.$m5(_5[i].canvas,_2,true)}}}}
+);isc.evalBoundary;isc.B.push(isc.A.$m3=function isc_c_EventHandler__combineTopPeersIntoList(_1){for(var i=0,_3=_1.length;i<_3;i++){var t=_1[i];if(t.parentElement&&_1.contains(t.parentElement))continue;this.$m6(_1[i],_1)}}
+,isc.A.$m6=function isc_c_EventHandler__addPeersToList(_1,_2,_3){if(_3&&!_2.contains(_1))_2.add(_1);var _4=_1.peers;if(_4){for(var i=0;i<_4.length;i++){this.$m6(_4[i],_2,true)}}
+this.$m5(_1,_2)}
+,isc.A.getClickMask=function isc_c_EventHandler_getClickMask(_1){var _2=this.clickMaskRegistry;if(isc.isAn.Object(_1)){return _2.contains(_1)?_1:null}
+return _2.find(this.$cp,_1)}
+,isc.A.isHardMask=function isc_c_EventHandler_isHardMask(_1){if(!isc.isAn.Object(_1))_1=this.getClickMask(_1);return _1==null?false:(_1.mode==isc.EH.HARD)}
+,isc.A.getTopHardMask=function isc_c_EventHandler_getTopHardMask(){var _1=this.clickMaskRegistry;for(var i=_1.length-1;i>=0;i--){if(this.isHardMask(_1[i]))return _1[i]}
+return null}
+,isc.A.$mz=function isc_c_EventHandler__hardMaskTargets(_1,_2,_3,_4){if(!_1)return;if(_3){for(var _5 in _1){var _6=this.$m2(_5);this.$m7(_6,_2,_4)}}else{for(var i=0;i<_1.length;i++){var _6=this.$m2(_1[i]);this.$m7(_6,_2,_4)}}}
+,isc.A.$m7=function isc_c_EventHandler__hardMaskTarget(_1,_2,_3){if(!isc.isA.Canvas(_1)||_1.destroyed){isc.Log.logWarn("showClickMask - attempting to remove invalid object :"+isc.Log.echo(_1)+" from tab order","clickMask");return}
+if(_2&&_2[_1.getID()])return;if(_1.isDrawn()){if(_1.parentElement==null){if(!_3&&this.$m8&&this.$m8.isDrawn()&&_1.getZIndex()>=this.$m8.getZIndex())
+{this.logDebug("lowering zIndex of: "+_1,"clickMask");_1.setZIndex(isc.EH.$m8.getZIndex()-1)}}}
+if(_1.accessKey!=null&&_1.isDrawn()){_1.$m9(null)}}
+,isc.A.hideClickMask=function isc_c_EventHandler_hideClickMask(_1){if(this.logIsInfoEnabled("clickMask"))
+this.logInfo("hideClickMask called with ID: "+_1,"clickMask");var _2=this.clickMaskRegistry;if(_2.length==0)return;if(_1==null){this.hideClickMask(_2[0].ID)
+if(_2.length>0){this.hideClickMask()}else{this.logInfo("all clickmasks hidden","clickMask")}
+return}
+var _3=this.getClickMask(_1);if(_3==null)return;var _4=_2.indexOf(_3),_5=(_4==(_2.length-1)),_6=this.isHardMask(_3),_7=(_4>0?_2[_4-1]:null),_8,_9;if(this.logIsInfoEnabled("clickMask")){var _10="hiding clickMask ID: "+_1;if(_6)_10+="[autoHide:false]";else _10+="[autoHide:true]";if(_2.length<2){_10+=", all masks hidden"}else{_10+=" with index: "+_4+" of "+(_2.length-1)}
+this.logInfo(_10,"clickMask")}
+if(_6){_9=this.$na(_4,false);var _11=this.$na(_4,true);_8=(_11==null)}
+var _12=_3.$li,_13=_3.$mx;_2.remove(_3);if(_7!=null){if(_13!=null){if(_7.$mx==null)_7.$mx={};isc.addProperties(_7.$mx,_13)}
+if(_12&&!_7.$mx[_12.getID()]){this.setMaskedFocusCanvas(_12,_7)}}
+if(this.$m8){if(_5&&_7==null){if(isc.Browser.isIE){isc.Timer.setTimeout({target:this.$m8,methodName:"hide"},0)}else{this.$m8.hide()}}else if(_8){if(_9){var _13=isc.addProperties({},_9.$mx);var _14=_2.length-1,_15=_2[_14];while(_15!=_9){isc.addProperties(_13,_15.$mx);_14--;_15=_2[_14]}
+this.$m0(_13)}else this.$m8.sendToBack()}
+if(_6){var _16;if(_9!=null){_16=[];for(var i=_4-1;i>=0;i--){var _18=_2[i];_16.addList(isc.getKeys(_18.$mx));if(_18==_9)break}}else{_16=isc.Canvas._canvasList}
+this.$nb(_16,true)}
+if(_12!=null&&!_12.destroyed&&!this.targetIsMasked(_12)){if(this.logIsInfoEnabled("clickMask")){this.logInfo("focusing in "+_12+" on clickMask hide "+"with current focusCanvas: "+isc.EH.$ke,"clickMask")}
+var _19=(isc.Browser.isIE&&this.lastEvent.eventType==this.MOUSE_DOWN)
+if(_19){this.$k7=_12}else{try{_12.focus()}catch(e){}}}}
+this.updateEventMasks()}
+,isc.A.$na=function isc_c_EventHandler__getNextHardMask(_1,_2){var _3=this.clickMaskRegistry;if(_2){for(var i=_1+1;i<_3.length;i++){if(this.isHardMask(_3[i]))return _3[i]}}else{for(var i=_1-1;i>=0;i--){if(this.isHardMask(_3[i]))return _3[i]}}
+return null}
+,isc.A.$m2=function isc_c_EventHandler__getCanvas(_1){if(isc.isA.String(_1))return window[_1];return _1}
+,isc.A.$nb=function isc_c_EventHandler__hardUnmaskTargets(_1,_2){if(!_1||_1.length==0)return;for(var i=0;i<_1.length;i++){var _4=this.$m2(_1[i]);if(!_4)continue;if(_4.accessKey!=null&&_4.isDrawn()){_4.$m9(_4.accessKey)}
+if(!_4.isDrawn()&&isc.isA.DynamicForm&&isc.isA.DynamicForm(_4)&&_4.items&&_4.items.length>0)
+{var _5=_4.items[0];if(_5.containerWidget!=_4)_4=_5.containerWidget}
+if(!_2&&_4.parentElement==null&&_4.getZIndex()<=this.$m8.getZIndex()&&_4!=this.$m8)
+{_4.setZIndex(this.$m8.getZIndex()+1);this.logDebug("raised above screenspan: "+_4,"clickMask")}}}
+,isc.A.clickMaskUp=function isc_c_EventHandler_clickMaskUp(_1){var _2=this.clickMaskRegistry;if(_1==null)return(_2.length>0);else return(_2.find("ID",_1)!=null)}
+,isc.A.getAllClickMaskIDs=function isc_c_EventHandler_getAllClickMaskIDs(){var _1=this.clickMaskRegistry;if(_1.length<1)return[];return _1.getProperty("ID")}
+,isc.A.showScreenSpan=function isc_c_EventHandler_showScreenSpan(_1){if(!this.$m8){this.$m8=isc.ScreenSpan.create({ID:"isc_EH_screenSpan",pointersToThis:[{object:this,property:"$m8"}]},this.clickMaskProperties)}
+var _2=this.$m8;_2.show();if(!this.isHardMask(_1)){_2.sendToBack()}else{this.$m0(_1.$mx)}}
+,isc.A.$m0=function isc_c_EventHandler__adjustSpanZIndex(_1){this.$nc=true;var _2;for(var _3 in _1){var _4=this.$m2(_3);if(!_4||_4.destroyed||_4.parentElement!=null){continue}
+if(_4.masterElement&&_1[_4.masterElement.getID()])continue;_4.bringToFront();if(_2==null)_2=_4.getZIndex(true);if(_4.peers){for(var i=0;i<_4.peers.length;i++){if(!_4.peers[i].isDrawn())continue;_2=Math.min(_2,_4.peers[i].getZIndex(true))}}}
+if(_2!=null)this.$m8.setZIndex(_2-1);else this.$m8.bringToFront();this.$nc=false}
+,isc.A.maskTarget=function isc_c_EventHandler_maskTarget(_1,_2){return this.maskTargets(_1,_2)}
+,isc.A.maskTargets=function isc_c_EventHandler_maskTargets(_1,_2,_3){var _4=this.clickMaskRegistry;if(_1==null||_4.length==0)return;if(!isc.isAn.Array(_1))_1=[_1];else if(_1.length==0)return;var _5=(_2==null?_4[0]:(isc.isA.String(_2)?this.getClickMask(_2):_2));if(_5==null){this.logInfo("maskTargets called with invalid maskID - returning.","event")
+return}
+var _6=_1.length
+for(var i=0;i<_6;i++){var _8=_1[i];if(!_3&&_8.children!=null){this.$m5(_8,_1)}
+var _9=_8.parentElement;while(_9!=null){if(!_1.contains(_9)){_1.add(_9);if(_3)this.$m6(_9,_1)}
+_9=_9.parentElement}
+if(_3||!_9){this.$m6(_8,_1)}
+if(_9)this.$m6(_9,_1)}
+var _10=_4.indexOf(_5);var _11;for(var i=_10;i<_4.length;i++){_14=_4[i];if(this.isHardMask(_14))_11=i}
+var _12;if(_11!=null)_12=[];for(var n=0;n<_1.length;n++){var _8=_1[n];if(_8.hasFocus)_8.blur();var _14,_11,_15=null;for(var i=_10;i<_4.length;i++){_14=_4[i];if(_14.$mx[_8.getID()]){_15=i;delete _14.$mx[_8.getID()]}}
+if(_11!=null&&_15!=null&&(_11<=_15)){_12.add(_8)}}
+if(_11!=null)this.$mz(_12,null,false,false)}
+,isc.A.addUnmaskedTarget=function isc_c_EventHandler_addUnmaskedTarget(_1,_2){return this.addUnmaskedTargets(_1,_2)}
+,isc.A.addUnmaskedTargets=function isc_c_EventHandler_addUnmaskedTargets(_1,_2){if(isc.$nd&&this.$nc)return;var _3=this.clickMaskRegistry;if(_1==null||_3.length==0)return;if(!isc.isAn.Array(_1))_1=[_1];if(_1.length==0)return;var _4;if(_2==null){_4=_3.last()}else{if(isc.isA.String(_2))_4=this.getClickMask(_2);else _4=_2}
+if(_4==null){this.logInfo("addUnmaskedTargets called with invalid maskID - returning.","clickMask")
+return}
+var _5=_4;while(_5&&!this.isHardMask(_5)){_5=_3[_3.indexOf(_5)-1]}
+if(_5!=null){if(isc.$nd&&_1.length==1&&_1[0].topElement!=null){return}}
+_1=this.$m1(_1,_4);if(this.logIsDebugEnabled("clickMask")){this.logDebug("Added unmasked targets:"+_1.getProperty("ID")+" [+ decendants] to clickMask with ID: "+_4.ID,"clickMask")}
+var _6=false;for(var i=_3.indexOf(_4)+1;i<_3.length;i++){if(this.isHardMask(_3[i]))_6=true}
+for(var n=0;n<_1.length;n++){var _9=_1[n];if(_4.$mx==null)_4.$mx={};_4.$mx[_9.getID()]=true}
+if(!_6){this.$nb(_1)}}
+,isc.A.targetIsMasked=function isc_c_EventHandler_targetIsMasked(_1,_2,_3){var _4=this.clickMaskRegistry;if(_4.length==0)return false;if(_1==null)return true;var _5;if(_2==null)_5=_4.last();else if(isc.isA.String(_2))_5=_4.find("ID",_2);else _5=_2;if(!isc.isAn.Object(_5)){this.logWarn("EventHandler.targetIsMasked() passed invalid maskID:"+_2,"clickMask");return false}
+var _6=_4.indexOf(_5);var _7=false;for(var i=_6;i<_4.length;i++){if(i!=_6)_5=_4[i];if(_3){if(_5.mode==isc.EH.HARD||_5.mode==isc.EH.SOFT_CANCEL){_7=true}else{continue}}
+if(_5.$mx){if(_5.$mx[_1.getID()])return false;if(isc.isA.DynamicForm!=null&&isc.isA.DynamicForm(_1)){var _9=_1.$ne(isc.EH.lastEvent);if(_9&&_9.item&&_9.item.form==_1&&_9.item.containerWidget!=_1&&_5.$mx[_9.item.containerWidget.getID()])return false}}}
+return(_3&&!_7?false:true)}
+,isc.A.clickMaskClick=function isc_c_EventHandler_clickMaskClick(_1){var _2=this.clickMaskRegistry.duplicate(),_3=_2.last();while(_3!=null&&(this.targetIsMasked(_1)||_1==this.$m8)){if(this.logIsInfoEnabled("clickMask")){this.logInfo("mouseDown on masked "+_1+(_3.clickAction!=null?" firing clickAction, ":"")+(_3.autoHide?"will hide mask"+(_3.mode==isc.EH.SOFT_CANCEL?" and block click":""):"will block click"))}
+var _4=(_3.mode!=isc.EH.SOFT);this.$lj(_3)
+if(_4)return false;_3=_2[_2.indexOf(_3)-1]}
+return true}
+,isc.A.$lj=function isc_c_EventHandler__clickMaskClick(_1){var _2=_1.autoHide,_3=_1.clickAction;if(_2==true)this.hideClickMask(_1.ID);if(_3!=null)this.fireCallback(_3)}
+);isc.B._maxIndex=isc.C+171;isc.EventHandler.captureEvents();isc.ClassFactory.defineClass("Element",null,null,true);isc.A=isc.Element;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$wq=window.isc_insertAfterBodyStart;isc.A.$wr="isc_global_insertion_marker";isc.A.$n7="afterBegin";isc.A.$n9="afterEnd";isc.A.$n6="beforeBegin";isc.A.$n8="beforeEnd";isc.A.$84e=(isc.Browser.isIE&&!isc.Browser.isIE9)||isc.Browser.isOpera;isc.A.$w2=isc.Browser.isMoz?"border-left-width":"borderLeftWidth";isc.A.$w3=isc.Browser.isMoz?"border-top-width":"borderTopWidth";isc.A.$oi=isc.Browser.isMoz?"margin-left":"marginLeft";isc.A.$ok=isc.Browser.isMoz?"margin-top":"marginTop";isc.A.$27r="none";isc.A.cacheCount=0;isc.A.uncachedCount=0;isc.A.$808="$808";isc.A.$809="$809";isc.A.cacheOffsetCoords=true;isc.A.$nk={};isc.A.$419={border:"borderStyle",borderWidth:"borderStyle",borderLeft:"borderLeftStyle",borderRight:"borderRightStyle",borderTop:"borderTopStyle",borderBottom:"borderBottomStyle",borderLeftWidth:"borderLeftStyle",borderRightWidth:"borderRightStyle",borderBottomWidth:"borderBottomStyle",borderTopWidth:"borderTopStyle"};isc.A.$nl={};isc.A.$39=";";isc.A.vendorCSSPrefix=(isc.Browser.isMoz?"-moz-":isc.Browser.isSafari?"-webkit-":isc.Browser.isOpera?"-o-":"");isc.B.push(isc.A.get=function isc_c_Element_get(_1,_2){_2=_2||this.getDocument();if(isc.Browser.isDOM)return _2.getElementById(_1)}
+,isc.A.$mk=function isc_c_Element__getElementFromSelection(_1){if(!_1)_1=document;if(isc.Browser.isIE){var _2=_1.selection,_3=_2.type.toLowerCase(),_4=(_3=="text"||_3=="none");if(!_2)return null;if(_4){var _5;try{_5=_2.createRange()}catch(e){}
+return _5?_5.parentElement():null}else{var _5=_2.createRange(),_6;for(var i=0;i<_5.length;i++){if(!_6){_6=_5(i).parentElement}else{while(!_6.contains(_5(i))){_6=_6.parentElement}}}
+return _6}}}
+,isc.A.findAttribute=function isc_c_Element_findAttribute(_1,_2,_3){if(!_1)return null;if(_1[_2]==_3||(_1.getAttribute&&_1.getAttribute(_2)==_3)){return _1}
+var _4=_1.childNodes;for(var i=0;i<_4.length;i++){var _6=this.findAttribute(_4[i],_2,_3);if(_6)return _6}
+return null}
+,isc.A.getInsertionMarkerHTML=function isc_c_Element_getInsertionMarkerHTML(){return"<span id='"+this.$wr+"' style='display:none'></span>"}
+,isc.A.getInsertionMarker=function isc_c_Element_getInsertionMarker(){return document.getElementById(this.$wr)}
+,isc.A.createAbsoluteElement=function isc_c_Element_createAbsoluteElement(_1,_2){var _3=_2||this.getWindow(),_4=this.getDocumentBody(true);if(_4==null&&!isc.Element.noBodyTagMessageShown){isc.Element.noBodyTagMessageShown=true;var _5="Error: Attempt to write content into a page outside the BODY tag. Isomorphic "+"SmartClient requires this tag be present and all widgets be written out inside "+"it.\r"+"Please ensure your file has a BODY tag and any code to draw SmartClient widgets "+"is enclosed in this tag.";this.logError(_5);return}
+if(this.$wq){return isc.Element.insertAdjacentHTML(_4,this.$n7,_1,true)}
+if(isc.Browser.isIE){if(!this.$w7){if(_4.childNodes.length<2){isc.Element.insertAdjacentHTML(_4,this.$n7,this.getInsertionMarkerHTML())}else{var _6=_4.lastChild;while(_6&&_6.nodeType==3)_6=_6.previousSibling;if(_6!=null){isc.Element.insertAdjacentHTML(_6,this.$n6,this.getInsertionMarkerHTML())}else{isc.Element.insertAdjacentHTML(_4,this.$n7,this.getInsertionMarkerHTML())}}
+this.$w7=this.getInsertionMarker()}
+return isc.Element.insertAdjacentHTML(this.$w7,this.$n9,_1,true)}else{return isc.Element.insertAdjacentHTML(_4,this.$n8,_1,true)}}
+,isc.A.insertAdjacentHTML=function isc_c_Element_insertAdjacentHTML(_1,_2,_3,_4){if(isc.isA.String(_1))_1=isc.Element.get(_1);if(!_1)this.logWarn("insertAdjacentHTML: element is null for where: '"+_2+"' with html: "+_3);if(isc.Browser.isIE||isc.Browser.isOpera){_1.insertAdjacentHTML(_2,_3);return}
+var _5;if(_4){var _6=_1.ownerDocument.createElement("DIV");_6.innerHTML=_3;_5=_6.firstChild}else{var _7=_1.ownerDocument.createRange();_7.setStartBefore(_1);_5=_7.createContextualFragment(_3)}
+switch(_2){case"beforeBegin":_1.parentNode.insertBefore(_5,_1)
+break;case"afterBegin":_1.insertBefore(_5,_1.firstChild);break;case"beforeEnd":_1.appendChild(_5);break;case"afterEnd":if(_1.nextSibling)_1.parentNode.insertBefore(_5,_1.nextSibling);else _1.parentNode.appendChild(_5);break}
+if(_4)return _5}
+,isc.A.clear=function isc_c_Element_clear(_1,_2){if(_1==null)return;if(!_2&&isc.Page.isLoaded()&&isc.Browser.isIE){_1.outerHTML=isc.emptyString;return}
+if(_1.parentNode){_1.parentNode.removeChild(_1)}else{isc.Log.logWarn("element parentNode null");_1.innerHTML=""}}
+,isc.A.isBorderBox=function isc_c_Element_isBorderBox(_1){if(!_1)return;if(!isc.Browser.isMoz)return isc.Browser.isBorderBox;return(_1.style.MozBoxSizing=="border-box")}
+,isc.A.getScrollHeight=function isc_c_Element_getScrollHeight(_1){if(_1==null)return 0;var _2=((_1.scrollHeight!=null&&_1.scrollHeight!="undefined")?_1.scrollHeight:_1.offsetHeight);var _3=this.$yq(_1);return _3>_2?_3:_2}
+,isc.A.$yq=function isc_c_Element__getPositionedChildrenBottom(_1){if(_1.childNodes==null)return 0;var _2=0,_3=document.ELEMENT_NODE||1,_4=this.logIsDebugEnabled("sizing");for(var i=0;i<_1.childNodes.length;i++){var _6=_1.childNodes.item(i);if(_6.nodeType!=_3)continue;var _7=isc.Element.getComputedStyleAttribute(_6,"position");var _8=0;if(_7==isc.Canvas.ABSOLUTE||_7==isc.Canvas.RELATIVE){_8+=isc.Element.getOffsetTop(_6)}else{continue}
+var _9=_6.getAttribute("eventProxy"),_10;if(_9!=null&&!isc.isAn.emptyString(_9)&&!window[_9].$s0&&isc.isA.Function(window[_9].getVisibleHeight))
+{_10=window[_9].getVisibleHeight()}else{_10=isc.Element.getVisibleHeight(_6)}
+var _11=_8+_10;if(_7==isc.Canvas.ABSOLUTE&&(_1.style.overflow==isc.Canvas.SCROLL||_1.style.overflow==isc.Canvas.AUTO||_1.style.overflow==isc.Canvas.HIDDEN))
+_11-=isc.Element.getBottomMargin(_6);if(_11>_2)_2=_11}
+return _2}
+,isc.A.getScrollWidth=function isc_c_Element_getScrollWidth(_1){if(_1==null)return 0;var _2=((_1.scrollWidth!=null&&_1.scrollWidth!="undefined")?_1.scrollWidth:_1.offsetWidth);var _3=this.$yr(_1);return _3>_2?_3:_2}
+,isc.A.$yr=function isc_c_Element__getPositionedChildrenRight(_1){if(_1.childNodes==null)return 0;var _2=0,_3=document.ELEMENT_NODE||1,_4=this.logIsDebugEnabled("sizing");for(var i=0;i<_1.childNodes.length;i++){var _6=_1.childNodes.item(i);if(_6.nodeType!=_3)continue;var _7=isc.Element.getComputedStyle(_6,["position","display","left"]);var _8=0;if(_7.position==isc.Canvas.ABSOLUTE||_7.position==isc.Canvas.RELATIVE)
+{_8=isc.Element.getOffsetLeft(_6)}else{continue}
+var _9=_6.getAttribute("eventProxy"),_10;if(_9!=null&&!isc.isAn.emptyString(_9)&&!window[_9].$sv&&isc.isA.Function(window[_9].getVisibleWidth))
+{_10=window[_9].getVisibleWidth()}else{_10=isc.Element.getVisibleWidth(_6)}
+var _11=_8+_10;if(_1.style.overflow==isc.Canvas.SCROLL||_1.style.overflow==isc.Canvas.HIDDEN||_1.style.overflow==isc.Canvas.AUTO){_11-=isc.Element.getRightMargin(_6)}
+if(_11>_2)_2=_11;if(_4){this.logInfo("getChildNodesRight: child node "+i+" of "+_1.childNodes.length+" ("+this.echoLeaf(_6)+")"+" left:"+_8+", width: "+_10+", right:"+_11,"sizing")}}
+return _2}
+,isc.A.getElementRect=function isc_c_Element_getElementRect(_1){var _2=this.getDocumentBody(),_3=this.getLeftOffset(_1,_2),_4=this.getTopOffset(_1,_2);var _5=0,_6=0;if(_1.style&&_1.style.overflow=="visible"){_5=this.getScrollWidth(_1);_6=this.getScrollHeight(_1)}
+_5=Math.max(_1.offsetWidth,_1.clientWidth,_5);_6=Math.max(_1.offsetHeight,_1.clientHeight,_6);return[_3,_4,_5,_6]}
+,isc.A.getInnerWidth=function isc_c_Element_getInnerWidth(_1){var _2=_1.style.width;if(_2!=null&&!isc.isAn.emptyString(_2)){_2=parseInt(_2);if(isc.isA.Number(_2))return _2}
+var _3=_1.clientWidth,_4=parseInt(this.getComputedStyleAttribute("paddingLeft")),_5=parseInt(this.getComputedStyleAttribute("paddingRight")),_6=_4+_5;if(isc.isA.Number(_6))_3-=_6;return _3}
+,isc.A.getInnerHeight=function isc_c_Element_getInnerHeight(_1){var _2=_1.style.height;if(_2!=null&&!isc.isAn.emptyString(_2)){_2=parseInt(_2);if(isc.isA.Number(_2))return _2}
+var _3=_1.clientHeight,_4=parseInt(this.getComputedStyleAttribute("paddingTop")),_5=parseInt(this.getComputedStyleAttribute("paddingBottom")),_6=_4+_5;if(isc.isA.Number(_6))_3-=_6;return _3}
+,isc.A.getNativeInnerWidth=function isc_c_Element_getNativeInnerWidth(_1){if(isc.Browser.isMoz)return this.getInnerWidth(_1);var _2=_1.offsetWidth;if(!_2)_2=this.getInnerWidth(_1);return _2}
+,isc.A.getNativeInnerHeight=function isc_c_Element_getNativeInnerHeight(_1){if(isc.Browser.isMoz)return this.getInnerHeight(_1);var _2=_1.offsetHeight;if(!_2)_2=this.getInnerHeight(_1);return _2}
+,isc.A.getTopMargin=function isc_c_Element_getTopMargin(_1){if(_1!=null){var _2;if(_1.style!=null)_2=parseInt(_1.style.marginTop);if(isc.isA.Number(_2))return _2;if(_1.className!=null)return isc.Element.$th(_1.className)}
+return 0}
+,isc.A.getBottomMargin=function isc_c_Element_getBottomMargin(_1){if(_1!=null){var _2;if(_1.style!=null)_2=parseInt(_1.style.marginBottom);if(isc.isA.Number(_2))return _2;if(_1.className!=null)return isc.Element.$ti(_1.className)}
+return 0}
+,isc.A.getLeftMargin=function isc_c_Element_getLeftMargin(_1){if(_1!=null){var _2;if(_1.style!=null)_2=parseInt(_1.style.marginLeft);if(isc.isA.Number(_2))return _2;if(_1.className!=null)return isc.Element.$tf(_1.className)}
+return 0}
+,isc.A.getRightMargin=function isc_c_Element_getRightMargin(_1){if(_1!=null){var _2;if(_1.style!=null)_2=parseInt(_1.style.marginRight);if(isc.isA.Number(_2))return _2;if(_1.className!=null)return isc.Element.$tg(_1.className)}
+return 0}
+,isc.A.getHMarginSize=function isc_c_Element_getHMarginSize(_1){return isc.Element.getLeftMargin(_1)+isc.Element.getRightMargin(_1)}
+,isc.A.getVMarginSize=function isc_c_Element_getVMarginSize(_1){return isc.Element.getTopMargin(_1)+isc.Element.getBottomMargin(_1)}
+,isc.A.getTopBorderSize=function isc_c_Element_getTopBorderSize(_1){if(_1==null)return 0;if(isc.Browser.isOpera&&_1.currentStyle.borderTopStyle==this.$27r)return 0;var _2=(this.$84e?parseInt(_1.currentStyle.borderTopWidth):parseInt(isc.Element.getComputedStyleAttribute(_1,"borderTopWidth")));return isNaN(_2)?0:_2}
+,isc.A.getBottomBorderSize=function isc_c_Element_getBottomBorderSize(_1){if(_1==null)return 0;if(isc.Browser.isOpera&&_1.currentStyle.borderBottomStyle==this.$27r)return 0;var _2=(this.$84e?parseInt(_1.currentStyle.borderBottomWidth):parseInt(isc.Element.getComputedStyleAttribute(_1,"borderBottomWidth")));return isNaN(_2)?0:_2}
+,isc.A.getLeftBorderSize=function isc_c_Element_getLeftBorderSize(_1){if(_1==null)return 0;if(isc.Browser.isOpera&&_1.currentStyle.borderLeftStyle==this.$27r)return 0;var _2=(this.$84e?parseInt(_1.currentStyle.borderLeftWidth):parseInt(isc.Element.getComputedStyleAttribute(_1,"borderLeftWidth")));return isNaN(_2)?0:_2}
+,isc.A.getRightBorderSize=function isc_c_Element_getRightBorderSize(_1){if(_1==null)return 0;if(isc.Browser.isOpera&&_1.currentStyle.borderRightStyle==this.$27r)return 0;var _2=(this.$84e?parseInt(_1.currentStyle.borderRightWidth):parseInt(isc.Element.getComputedStyleAttribute(_1,"borderRightWidth")));return isNaN(_2)?0:_2}
+,isc.A.getVBorderSize=function isc_c_Element_getVBorderSize(_1){return isc.Element.getTopBorderSize(_1)+isc.Element.getBottomBorderSize(_1)}
+,isc.A.getHBorderSize=function isc_c_Element_getHBorderSize(_1){return isc.Element.getLeftBorderSize(_1)+isc.Element.getRightBorderSize(_1)}
+,isc.A.getVisibleWidth=function isc_c_Element_getVisibleWidth(_1){if(_1==null)return 0;var _2=isc.Element.getComputedStyleAttribute(_1,"overflow"),_3;if(_2==isc.Canvas.VISIBLE||!isc.isA.Number(parseInt(_1.style.width))){_3=isc.Element.getScrollWidth(_1)+isc.Element.getHBorderSize(_1)}else{_3=parseInt(_1.style.width)}
+return _3+isc.Element.getHMarginSize(_1)}
+,isc.A.getVisibleHeight=function isc_c_Element_getVisibleHeight(_1){if(_1==null)return 0;var _2=isc.Element.getComputedStyleAttribute(_1,"overflow"),_3;if(_2==isc.Canvas.VISIBLE||!isc.isA.Number(parseInt(_1.style.height))){_3=isc.Element.getScrollHeight(_1)+isc.Element.getVBorderSize(_1)}else{_3=parseInt(_1.style.height)}
+return _3+isc.Element.getVMarginSize(_1)}
+,isc.A.getOffsetLeft=function isc_c_Element_getOffsetLeft(_1){if(_1==null){this.logWarn("getOffsetLeft: passed null element");return 0}
+var _2=_1.offsetLeft;if(isc.Browser.isIE&&isc.Page.isRTL()&&_2<0){_2=-_2}
+if(_1.$ys==_2){return _1.$yt}else{}
+var _3=parseInt(isc.Element.getComputedStyleAttribute(_1,"marginLeft"));if(isc.isA.Number(_3)&&_3>0){_2-=_3}
+var _4=this.getDocumentBody(),_5,_6="px",_7=_1.style.position;if(isc.Browser.isMoz){if(_1.offsetParent==null)return _2;if(_1.offsetParent!=_4){_5=this.ns.Element.getComputedStyle(_1.offsetParent,["borderLeftWidth","overflow"]);var _8=isc.Browser.geckoVersion,_9=(_5.overflow!="visible")&&(_8>=20051111||(_7==isc.Canvas.ABSOLUTE&&_5.overflow!="hidden")),_10=(_8>20020826&&(_1.offsetParent.style.MozBoxSizing=="border-box"));if(_10!=_9){if(_10){_2-=(isc.isA.Number(parseInt(_5.borderLeftWidth))?parseInt(_5.borderLeftWidth):0)}
+if(_9){_2+=(isc.isA.Number(parseInt(_5.borderLeftWidth))?parseInt(_5.borderLeftWidth):0)}}}}
+if(isc.Browser.isIE&&!isc.Browser.isIE8Strict&&!isc.Browser.isIE9){var _11=_1.offsetParent,_5;if(_5!=_4)_5=_11.currentStyle;var _12=(_1.currentStyle.height!=isc.Canvas.AUTO||_1.currentStyle.width!=isc.Canvas.AUTO);var _13=true;while(_11!=_4){if(_5.position==isc.Canvas.ABSOLUTE)_13=false;if(_5.width==isc.Canvas.AUTO&&_5.height==isc.Canvas.AUTO&&_5.position==isc.Canvas.RELATIVE){if(_13&&isc.isA.String(_5.borderLeftWidth)&&_5.borderLeftWidth.contains(_6)){_2-=parseInt(_5.borderLeftWidth)}
+if(_12){if(isc.isA.String(_5.marginLeft)&&_5.marginLeft.contains(_6))
+{var _14=parseInt(_5.marginLeft);if(_14>0)_2-=_14}
+if(_11.offsetParent!=_4){var _15=_11.offsetParent.currentStyle.padding;if(isc.isA.String(_15)&&_15.contains(_6)){_2-=parseInt(_15)}}else{_2-=(_4.leftMargin?parseInt(_4.leftMargin):0)}}}
+_7=_11.style.position;_11=_11.offsetParent;if(_11!=document.body){_5=_11.currentStyle}}}
+if(isc.Browser.isSafari&&isc.Browser.safariVersion<525.271){if(_1.offsetParent!=null&&_1.offsetParent!=_4){var _16=this.ns.Element.getComputedStyle(_1.offsetParent,["borderLeftWidth"]).borderLeftWidth;if(_16!=null)_16=parseInt(_16);if(isc.isA.Number(_16))_2-=_16}}
+_1.$ys=_1.offsetLeft;_1.$yt=_2;return _2}
+,isc.A.getOffsetTop=function isc_c_Element_getOffsetTop(_1){if(_1==null){this.logWarn("getOffsetTop: passed null element");return 0}
+var _2=_1.offsetTop;if(_1.$yu==_2){return _1.$yv}else{}
+var _3=parseInt(isc.Element.getComputedStyleAttribute(_1,"marginTop"));if(isc.isA.Number(_3)&&_3>0){_2-=_3}
+var _4=this.getDocumentBody(),_5,_6="px",_7=_1.style.position;if(isc.Browser.isMoz){if(_1.offsetParent==null)return _2;if(_1.offsetParent!=_4){_5=this.ns.Element.getComputedStyle(_1.offsetParent,["overflow","borderTopWidth"]);var _8=(_5.overflow!="visible")&&(isc.Browser.geckoVersion>=20051111||(_7==isc.Canvas.ABSOLUTE&&_5.overflow!="hidden")),_9=(isc.Browser.geckoVersion>20020826&&_1.offsetParent.style.MozBoxSizing=="border-box");if(_9!=_8){if(_9){_2-=(isc.isA.Number(parseInt(_5.borderTopWidth))?parseInt(_5.borderTopWidth):0)}
+if(_8){_2+=(isc.isA.Number(parseInt(_5.borderTopWidth))?parseInt(_5.borderTopWidth):0)}}}}
+if(isc.Browser.isIE&&!isc.Browser.isIE9){if(_1.offsetParent&&_1.offsetParent!=_4){_5=_1.offsetParent.currentStyle;if(_5.position==isc.Canvas.RELATIVE&&_5.height==isc.Canvas.AUTO&&_5.width==isc.Canvas.AUTO&&isc.isA.String(_5.borderTopWidth)&&_5.borderTopWidth.contains(_6)){_2-=parseInt(_5.borderTopWidth)}}}
+if(isc.Browser.isSafari&&isc.Browser.safariVersion<525.271){if(_1.offsetParent&&_1.offsetParent!=_4){var _10=this.ns.Element.getComputedStyle(_1.offsetParent,["borderTopWidth"]).borderTopWidth;if(_10!=null)_10=parseInt(_10);if(isc.isA.Number(_10))_2-=_10}}
+_1.$yu=_1.offsetTop;_1.$yv=_2;return _2}
+,isc.A.getLeftOffset=function isc_c_Element_getLeftOffset(_1,_2,_3,_4){return this.getOffset(isc.Canvas.LEFT,_1,_2,_3,_4)}
+,isc.A.getTopOffset=function isc_c_Element_getTopOffset(_1,_2,_3){return this.getOffset(isc.Canvas.TOP,_1,_2,null,_3)}
+,isc.A.getOffset=function isc_c_Element_getOffset(_1,_2,_3,_4,_5){var _6=_5||isc.isA.Canvas(_2),_7=_5||_3==null||isc.isA.Canvas(_3);var _8=_6&&_7&&this.cacheOffsetCoords&&(_2.cacheOffsetCoords!=false);var _9=(_1==isc.Canvas.LEFT)?this.$808:this.$809;if(_8&&_2[_9]!=null){var _10=_2[_9][_3?_3.ID:this.$27r];if(_10!=null){this.cacheCount++;return _10}}
+this.uncachedCount++;var _11=_6?_2.getClipHandle():_2;var _12;if(_3==null)_12=this.getDocumentBody();else if(_7)_12=_3.getHandle();else _12=_3;if(_12==null||_11==null){return 0}
+var _13=_11.offsetParent;if(isc.Browser.isMoz&&_13==null)return 0;var _14=_12.offsetParent,_15=_11,_16=0,_17=(_1==isc.Canvas.LEFT),_18=(_17?this.$w2:this.$w3),_19=(_17?this.$oi:this.$ok);if(!_17)_4=false;else if(_4==null)_4=(isc.Page.getTextDirection()==isc.Canvas.RTL);var _20=0;while(_13!=_12&&_13!=_14){var _21=(_17?this.ns.Element.getOffsetLeft(_15):this.ns.Element.getOffsetTop(_15));_16+=_21;if(!_4){_16-=((_17?_13.scrollLeft:_13.scrollTop)||0)}else{if(isc.isA.Number(_13.scrollLeft)){var _22=(_13.scrollWidth-_13.clientWidth);_16+=(_22-_13.scrollLeft)}}
+var _23,_24,_25;if(this.$84e){_23=_13.currentStyle;if(isc.Browser.isOpera&&(_17?_23.borderLeftStyle==this.$27r:_23.borderTopStyle==this.$27r))_24=null;else _24=parseInt(_23[_18]);if(isc.isA.Number(_24))_16+=_24;_25=parseInt(_23[_19]);if(isc.isA.Number(_25)&&_25>0)_16+=_25}else if(isc.Browser.isMoz){_23=document.defaultView.getComputedStyle(_13,null);_24=parseInt(_23.getPropertyValue(_18));_16+=_24;_25=parseInt(_23.getPropertyValue(_19));if(_25>0)_16+=_25}else{_24=parseInt(this.getComputedStyleAttribute(_13,_18));if(isc.isA.Number(_24))_16+=_24;_25=parseInt(this.getComputedStyleAttribute(_13,_19));if(isc.isA.Number(_25)&&_25>0)_16+=_25}
+_15=_13;_13=_15.offsetParent;_20++}
+_16+=(_17?this.ns.Element.getOffsetLeft(_15):this.ns.Element.getOffsetTop(_15));if(_13==_14){_16-=(_17?this.ns.Element.getOffsetLeft(_12):this.ns.Element.getOffsetTop(_12))}
+if(_8){var _26=_2[_9]=_2[_9]||{};_26[_3?_3.ID:this.$27r]=_16}
+return _16}
+,isc.A.getStyleEdges=function isc_c_Element_getStyleEdges(_1){if(isc.Browser.isSafari&&!isc.Element.$x1){isc.Browser.isStrict=isc.Element.$x2();isc.Element.$x1=true}
+if(_1==null)return null;var _2;if(this.$nk[_1]!==_2)return this.$nk[_1];var _3=(isc.Browser.isMoz&&isc.Browser.geckoVersion<20040616),_4;if(_3){_4=this.getStyleDeclaration(_1)}else{var _5=isc.Browser.isIE?this.$x3:this.$x4;_4=this.$x5(_1,_5)}
+this.$nk[_1]=_4;return _4}
+,isc.A.$x2=function isc_c_Element__testForSafariStrictMode(){if(document.compatMode!=null){return document.compatMode=="CSS1Compat"}
+var _1="<TABLE cellspacing=0 cellpadding=2 border=0><tr><td height=30>x</td></tr></TABLE>"
+var _2=isc.Element.createAbsoluteElement(_1);var _3=_2.offsetHeight>30;isc.Element.clear(_2);return _3}
+,isc.A.$x5=function isc_c_Element__deriveStyleProperties(_1,_2){var _3=(isc.Browser.isIE||isc.Browser.isOpera||isc.Browser.isSafari||(isc.Browser.isMoz&&isc.Browser.geckoVersion>=20080205));if(!this.$x6){this.createAbsoluteElement("<TABLE CELLPADDING=81 STYLE='position:absolute;left:0px;top:-2000px;'><TR><TD "+(isc.Browser.isIE8Strict?" ID=isc_cellStyleTester STYLE='border:0px;margin:0px'><DIV ID=isc_cellInnerStyleTester>"+isc.Canvas.blankImgHTML(30,30)+"</DIV></TD>":" ID=isc_cellStyleTester> </TD>"+"<TD ID=isc_cellNoStyleTester> </TD></TR></TABLE>"));this.$x6=isc.Element.get("isc_cellStyleTester");if(isc.Browser.isIE8Strict){this.$62a=isc.Element.get("isc_cellInnerStyleTester")}
+this.$x7="81px";if(isc.Browser.isSafari||isc.Browser.isChrome){var _4=isc.Element.get("isc_cellNoStyleTester");var _5=["paddingLeft"];var _6=this.getComputedStyle(_4,_5).paddingLeft;if(_6!=this.$x7){this.logDebug("Browser natively misreporting cell-padding (81px reported as:"+_6+"). This behavior is known to occur when the view is "+"zoomed in certain browsers but is worked around by SmartClient and "+"should have no visible effect on the application.","sizing");this.$x7=_6}}
+this.$x8="-16384px";if(_3){this.createAbsoluteElement("<DIV ID=isc_styleTester STYLE='position:absolute;left:0px;top:-2000px;'> </DIV>");this.$x9=isc.Element.get("isc_styleTester");this.$ya=["marginLeft","marginTop","marginRight","marginBottom"];if(isc.Browser.isIE8Strict){this.$ya.addList(["borderLeftWidth","borderTopWidth","borderRightWidth","borderBottomWidth"])}}}
+this.$x6.className=_1;var _7=this.getComputedStyle(this.$x6,_2);var _8=this.$x7;if(_7.paddingLeft==_8)_7.paddingLeft=null;if(_7.paddingTop==_8)_7.paddingTop=null;if(_7.paddingRight==_8)_7.paddingRight=null;if(_7.paddingBottom==_8)_7.paddingBottom=null;if(isc.Browser.isIE8Strict){var _9=this.$62a,_10=_9.offsetLeft,_11=_9.offsetTop;if(_10==81)_7.paddingLeft=null;if(_11==81)_7.paddingTop=null;if(this.$x6.offsetWidth-_10-30==81){_7.paddingRight=null}
+if(this.$x6.offsetHeight-_11-30==81){_7.paddingBottom=null}}
+if(isc.Browser.isSafari){if(isc.Browser.safariVersion<419.3){_8=isc.Canvas.AUTO;if(_7.paddingLeft==_8)_7.paddingLeft=null;if(_7.paddingTop==_8)_7.paddingTop=null;if(_7.paddingRight==_8)_7.paddingRight=null;if(_7.paddingBottom==_8)_7.paddingBottom=null}
+_8=this.$x8;if(_7.marginTop==_8)_7.marginTop=null;if(_7.marginBottom==_8)_7.marginBottom=null}
+if(_3){this.$x9.className=_1;var _12=this.getComputedStyle(this.$x9,this.$ya);_7.marginLeft=_12.marginLeft;_7.marginRight=_12.marginRight;_7.marginTop=_12.marginTop;_7.marginBottom=_12.marginBottom;if(isc.Browser.isIE8Strict){_7.borderLeftWidth=_12.borderLeftWidth;_7.borderRightWidth=_12.borderRightWidth;_7.borderTopWidth=_12.borderTopWidth;_7.borderBottomWidth=_12.borderBottomWidth}}
+return _7}
+,isc.A.getComputedStyle=function isc_c_Element_getComputedStyle(_1,_2){var _3,_4,_5;if(isc.isA.String(_1)){_3=isc.Element.get(_1)}else{_3=_1}
+if(_3==null||!isc.isAn.Object(_3)){this.logWarn("getComputedStyle: Unable to get to DOM element specified by '"+_1+"'."+this.getStackTrace());return null}
+if(this.$84e){_4=_3.currentStyle;if(_2==null)_2=this.$yb;var _6=isc.applyMask(_4,_2);return _6}
+if(_2==null){_2=this.$yc}else if(isc.isAn.Array(_2)){var _7={},_8=this.$yc;for(var i=0;i<_2.length;i++){_7[_2[i]]=_8[_2[i]]}
+_2=_7}
+var _10=isc.Browser.isSafari&&isc.Browser.safariVersion<312,_11;if(_10){_4=_3.style;_11=this.getStyleDeclaration(_3.className)}else{_4=document.defaultView.getComputedStyle(_3,null)}
+_5={};for(var _12 in _2){_5[_12]=_4.getPropertyValue(_2[_12]);if(_10&&_5[_12]==null&&_11!=null&&_11[_12]!=null&&!isc.isAn.emptyString(_11[_12]))
+{_5[_12]=_11[_12]}}
+return _5}
+,isc.A.getComputedStyleAttribute=function isc_c_Element_getComputedStyleAttribute(_1,_2){if(_1==null||_2==null)return null;if(this.$84e){if(_1.currentStyle==null)return null;if(isc.Browser.isOpera&&this.$419[_2]!=null&&_1.currentStyle[this.$419[_2]]==this.$27r)return 0;return _1.currentStyle[_2]}
+if(isc.Browser.isSafari){var _3=null;if(_1.style)_3=_1.style[_2];if((_3==null||isc.isAn.emptyString(_3))&&_1.className)
+{var _4=isc.Element.getStyleEdges(_1.className);if(_4)_3=_4[_2]}
+if(isc.isAn.emptyString(_3))return null;return _3}
+var _5=this.$yc;var _6=this.$yd=this.$yd||document.defaultView;var _7=(_5[_2]||_2),_8=_6.getComputedStyle(_1,null);return _8.getPropertyValue(_7)}
+,isc.A.getStyleDeclaration=function isc_c_Element_getStyleDeclaration(_1,_2){if(!_1)return null;if(!isc.allowDuplicateStyles)_2=false;if(isc.Browser.isSafari&&isc.Browser.safariVersion>=312){_1=_1.toLowerCase()}
+var _3="."+_1,_4=", ";var _5,_6=_2?[]:null;for(var i=document.styleSheets.length-1;i>=0;i--){var _8=this.$ye(document.styleSheets[i]);if(_8==null)continue;for(var j=_8.length-1;j>=0;j--){var _10=_8[j].selectorText;if(_10==null)continue;if(isc.Browser.isSafari&&isc.Browser.safariVersion>=312){_10=_10.toLowerCase()}
+if(isc.Browser.isMoz||isc.Browser.isIE9){var _11=_10.split(_4);for(var k=0;k<_11.length;k++){if(_11[k]==_3){_5=_8[j].style;if(_5!=null){if(_2)_6[_6.length]=_5;else return _5}}}}else{if(_10==_3){_5=_8[j].style;if(_5!=null){if(_2)_6[_6.length]=_5;else return _5}}}}}
+if(_2&&_6.length>0)return _6;return null}
+,isc.A.$ye=function isc_c_Element__getCSSRules(_1){if(!this.$yf){var _2="try{return $yg.rules||$yg.cssRules}"+"catch(e){isc.Page.$yh = true}";this.$yf=new Function("$yg",_2)}
+return this.$yf(_1)}
+,isc.A.getStyleText=function isc_c_Element_getStyleText(_1,_2){if(!isc.allowDuplicateStyles)_2=false;var _3=this.$nl,_4=_3[_1];if(_4!=null)return _4;var _5=this.getStyleDeclaration(_1,_2);if(_5==null){if(!isc.Browser.isSafari||isc.Page.isLoaded())
+this.$nl[_1]=isc.emptyString;return isc.emptyString}
+if(_2){for(var i=_5.length-1;i>-1;i--){var _7=_5[i];var _8=_7.cssText;if(_8==null)continue;if(!isc.endsWith(_8,this.$39))_8+=this.$39;if(_4==null)_4=_8;else _4+=_8}
+if(_4==null)_4=isc.$ad}else{_4=(_5.cssText||isc.$ad)}
+if(!isc.endsWith(_4,isc.semi))_4+=isc.semi;return(_3[_1]=_4)}
+,isc.A.$50f=function isc_c_Element__clearCSSCaches(){isc.Element.$nk={};isc.Element.$nl={};isc.Element.$yj=isc.Element.$yk=isc.Element.$yl=null}
+,isc.A.$th=function isc_c_Element__getTopMargin(_1){return this.$sd(_1).top}
+,isc.A.$ti=function isc_c_Element__getBottomMargin(_1){return this.$sd(_1).bottom}
+,isc.A.$tf=function isc_c_Element__getLeftMargin(_1){return this.$sd(_1).left}
+,isc.A.$tg=function isc_c_Element__getRightMargin(_1){return this.$sd(_1).right}
+,isc.A.$sd=function isc_c_Element__calculateMargins(_1){if(this.$yk==null)this.$yk={};else if(this.$yk[_1]!=null){return this.$yk[_1]}
+var _2={top:0,bottom:0,left:0,right:0},_3=isc.Element.getStyleEdges(_1);if(_3==null)return _2;var _4=_3.marginTop,_5=_3.marginBottom,_6=_3.marginLeft,_7=_3.marginRight,_8=isc.px;if(isc.isA.String(_4)&&isc.endsWith(_4,_8))
+_2.top=parseInt(_4);if(isc.isA.String(_5)&&isc.endsWith(_5,_8))
+_2.bottom=parseInt(_5);if(isc.isA.String(_6)&&isc.endsWith(_6,_8))
+_2.left=parseInt(_6);if(isc.isA.String(_7)&&isc.endsWith(_7,_8))
+_2.right=parseInt(_7);this.$yk[_1]=_2;return _2}
+,isc.A.$tn=function isc_c_Element__getTopBorderSize(_1){return this.$tj(_1).top}
+,isc.A.$to=function isc_c_Element__getBottomBorderSize(_1){return this.$tj(_1).bottom}
+,isc.A.$tl=function isc_c_Element__getLeftBorderSize(_1){return this.$tj(_1).left}
+,isc.A.$tm=function isc_c_Element__getRightBorderSize(_1){return this.$tj(_1).right}
+,isc.A.$tj=function isc_c_Element__calculateBorderSize(_1){if(this.$yj==null)this.$yj={};else if(this.$yj[_1]!=null){return this.$yj[_1]}
+var _2={top:0,bottom:0,left:0,right:0},_3=isc.Element.getStyleEdges(_1);if(_3==null)return _2;var _4=_3.borderTopWidth,_5=_3.borderBottomWidth,_6=_3.borderLeftWidth,_7=_3.borderRightWidth,_8=isc.px;if(isc.isA.String(_4)&&isc.endsWith(_4,_8))
+_2.top=parseInt(_4);if(isc.isA.String(_5)&&isc.endsWith(_5,_8))
+_2.bottom=parseInt(_5);if(isc.isA.String(_6)&&isc.endsWith(_6,_8))
+_2.left=parseInt(_6);if(isc.isA.String(_7)&&isc.endsWith(_7,_8))
+_2.right=parseInt(_7);this.$yj[_1]=_2;return _2}
+,isc.A.$ym=function isc_c_Element__getVBorderSize(_1){return this.$tn(_1)+this.$to(_1)}
+,isc.A.$yn=function isc_c_Element__getHBorderSize(_1){return this.$tl(_1)+this.$tm(_1)}
+,isc.A.$tt=function isc_c_Element__getTopPadding(_1,_2){var _3=this.$tq(_1);if(_2&&_3.nullTop)return null;return _3.top}
+,isc.A.$tu=function isc_c_Element__getBottomPadding(_1,_2){var _3=this.$tq(_1);if(_2&&_3.nullBottom)return null;return _3.bottom}
+,isc.A.$tr=function isc_c_Element__getLeftPadding(_1,_2){var _3=this.$tq(_1);if(_2&&_3.nullLeft)return null;return _3.left}
+,isc.A.$ts=function isc_c_Element__getRightPadding(_1,_2){var _3=this.$tq(_1);if(_2&&_3.nullRight)return null;return _3.right}
+,isc.A.$tq=function isc_c_Element__calculatePadding(_1){if(this.$yl==null)this.$yl={};else if(this.$yl[_1]!=null){return this.$yl[_1]}
+var _2={top:0,bottom:0,left:0,right:0},_3=isc.Element.getStyleEdges(_1);if(_3==null){_2.nullLeft=true;_2.nullRight=true;_2.nullTop=true;_2.nullBottom=true;return _2}
+var _4=_3.paddingTop,_5=_3.paddingBottom,_6=_3.paddingLeft,_7=_3.paddingRight,_8=isc.px;_2.nullTop=(_4==null||_4==isc.emptyString);_2.nullBottom=(_5==null||_5==isc.emptyString)
+_2.nullLeft=(_6==null||_6==isc.emptyString);_2.nullRight=(_7==null||_7==isc.emptyString);if(isc.isA.String(_4)&&isc.endsWith(_4,_8))
+_2.top=parseInt(_4);if(isc.isA.String(_5)&&isc.endsWith(_5,_8))
+_2.bottom=parseInt(_5);if(isc.isA.String(_6)&&isc.endsWith(_6,_8))
+_2.left=parseInt(_6);if(isc.isA.String(_7)&&isc.endsWith(_7,_8))
+_2.right=parseInt(_7);this.$yl[_1]=_2;return _2}
+,isc.A.$s1=function isc_c_Element__getVPadding(_1){return this.$tt(_1)+this.$tu(_1)}
+,isc.A.$sw=function isc_c_Element__getHPadding(_1){return this.$tr(_1)+this.$ts(_1)}
+,isc.A.$yo=function isc_c_Element__getVBorderPad(_1){return this.$ym(_1)+this.$s1(_1)}
+,isc.A.$yp=function isc_c_Element__getHBorderPad(_1){return this.$yn(_1)+this.$sw(_1)}
+,isc.A.getNativeScrollbarSize=function isc_c_Element_getNativeScrollbarSize(){if(isc.Element.$yi==null){if(isc.Browser.isMobileWebkit){return(isc.Element.$yi=16)}
+var _1="<div id=isc_ScrollbarTest "+"style='position:absolute;top:-100px;border:0px;padding:0px;margin:0px;height:100px;width:100px;overflow:scroll;'>"+isc.nbsp+"</div>";this.createAbsoluteElement(_1);var _2=this.get('isc_ScrollbarTest');isc.Element.$yi=parseInt(_2.style.height)-_2.clientHeight;this.clear(_2)}
+return isc.Element.$yi}
+,isc.A.getRotationCSS=function isc_c_Element_getRotationCSS(_1,_2){var _3=this.vendorCSSPrefix;var _4=_3+"transform: rotate("+_1+"deg);";if(_2!=null){_4+=(_3+"transform-origin: "+_2+";")}
+return _4}
+);isc.B._maxIndex=isc.C+69;isc.Element.$50g=function(){var _1=this.$x4={borderLeftWidth:"border-left-width",borderRightWidth:"border-right-width",borderTopWidth:"border-top-width",borderBottomWidth:"border-bottom-width",marginLeft:"margin-left",marginRight:"margin-right",marginTop:"margin-top",marginBottom:"margin-bottom",paddingLeft:"padding-left",paddingRight:"padding-right",paddingTop:"padding-top",paddingBottom:"padding-bottom"}
+var _2=this.$yc=isc.addProperties({position:"position",overflow:"overflow",top:"top",left:"left",width:"width",height:"height",display:"display"},_1);if(isc.Browser.isIE||isc.Browser.isOpera){this.$yb=isc.getKeys(_2);this.$x3=isc.getKeys(_1)}}
+isc.Element.$50g();isc.ClassFactory.defineClass("Canvas");isc.isA.Canvas=function(_1){return(_1!=null&&_1._isA_Canvas)}
+isc.A=isc.Canvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A._isA_Canvas=true;isc.A.AUTO="auto";isc.A.ANYTHING="**anything**";isc.A.ABSOLUTE="absolute";isc.A.RELATIVE="relative";isc.A.INHERIT="inherit";isc.A.VISIBLE="visible";isc.A.HIDDEN="hidden";isc.A.COMPLETE="complete";isc.A.DRAWN="complete";isc.A.DRAWING_HANDLE="drawingHandle";isc.A.HANDLE_DRAWN="handleDrawn";isc.A.UNDRAWN="undrawn";isc.A.SCROLL="scroll";isc.A.CLIP_H="clip-h";isc.A.CLIP_V="clip-v";isc.A.IGNORE="ignore";isc.A.NATIVE="native";isc.A.CLIP="clip";isc.A.NESTED_DIV="nestedDiv";isc.A.CENTER="center";isc.A.LEFT="left";isc.A.RIGHT="right";isc.A.TOP="top";isc.A.BOTTOM="bottom";isc.A.UP="up";isc.A.DOWN="down";isc.A.BOTH="both";isc.A.NONE="none";isc.A.VERTICAL="vertical";isc.A.HORIZONTAL="horizontal";isc.A.MARKED="marked";isc.A.MIDDLE="middle";isc.A.ALL="all";isc.A.DEFAULT="default";isc.A.ARROW="default";isc.A.WAIT="wait";isc.A.HAND=(isc.Browser.isMoz||(isc.Browser.isSafari&&isc.Browser.isStrict)?"pointer":"hand");isc.A.MOVE="move";isc.A.HELP="help";isc.A.TEXT="text";isc.A.CROSSHAIR="crosshair";isc.A.NOT_ALLOWED="not-allowed";isc.A.COL_RESIZE=(isc.Browser.isIE&&isc.Browser.version>=6?"col-resize":"e-resize");isc.A.ROW_RESIZE=(isc.Browser.isIE&&isc.Browser.version>=6?"row-resize":"n-resize");isc.A.TILE="tile";isc.A.STRETCH="stretch";isc.A.NORMAL="normal";isc.A.REPEAT="repeat";isc.A.NO_REPEAT="no-repeat";isc.A.REPEAT_X="repeat-x";isc.A.REPEAT_Y="repeat-y";isc.A.LTR="ltr";isc.A.RTL="rtl";isc.A.BEFORE="before";isc.A.AFTER="after";isc.A.NEAREST="nearest";isc.A.$ng=200000;isc.A.$nh=199950;isc.A.$ni=800000;isc.A.TAB_INDEX_GAP=50;isc.A.TAB_INDEX_FLOOR=1000;isc.A.TAB_INDEX_CEILING=32766;isc.A.$nj=[];isc.A.textStyleAttributes=["fontFamily","fontSize","color","backgroundColor","fontWeight","fontStyle","textDecoration","textAlign"];isc.A.$816=[];isc.A.allowExternalFilters=true;isc.A.$nm=[];isc.A._redrawQueueDelay=(0);isc.A.$nn=200;isc.A._canvasList=[];isc.A._iscInternalCount=0;isc.A._stats={redraws:0,clears:0,destroys:0,draws:0};isc.A.$no={};isc.A.$np={};isc.A.$nq=[];isc.A.useMozBackMasks=false;isc.A.useNativeWheelDelta=true;isc.A.scrollWheelDelta=50;isc.A.loadingImageSrc="[SKINIMG]loadingSmall.gif";isc.A.loadingImageSize=16;isc.B.push(isc.A.$814=function isc_c_Canvas__setDoublingStrings(){this.$42a=isc.Browser.isIE&&(!this.neverUseFilters||this.allowExternalFilters)?"margin:0px;border:0px;padding:0px;background-image:none;background-color:transparent;filter:none;":"margin:0px;border:0px;padding:0px;background-image:none;background-color:transparent;";isc.Canvas.addProperties({$4o:"' style='"+isc.Canvas.$42a});for(var i=0;i<this.$816.length;i++){var _2=this.$816[i];if(_2.target==null||_2.target.destroyed)continue;_2.target[_2.methodName](this.$42a)}}
+,isc.A.setNeverUseFilters=function isc_c_Canvas_setNeverUseFilters(_1){this.neverUseFilters=_1;this.$814()}
+,isc.A.setAllowExternalFilters=function isc_c_Canvas_setAllowExternalFilters(_1){this.allowExternalFilters=_1;this.$814()}
+);isc.B._maxIndex=isc.C+3;isc.Canvas.$814();isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A._isA_Canvas=true;isc.A.autoDraw=true;isc.A.allowContentAndChildren=true;isc.A.htmlPosition="afterBegin";isc.A.position=null;isc.A.left=0;isc.A.top=0;isc.A.defaultWidth=100;isc.A.defaultHeight=100;isc.A.minWidth=10;isc.A.maxWidth=10000;isc.A.minHeight=10;isc.A.maxHeight=10000;isc.A.zIndex=isc.Canvas.AUTO;isc.A.autoShowParent=false;isc.A.visibility=isc.Canvas.INHERIT;isc.A.styleName="normal";isc.A.contents=isc.nbsp;isc.A.backgroundRepeat=isc.Canvas.REPEAT;isc.A.mozOutlineOffset="-1px";isc.A.appImgDir="";isc.A.skinImgDir="images/";isc.A.cursor=isc.Canvas.DEFAULT;isc.A.disabledCursor=isc.Canvas.DEFAULT;isc.A.noDropCursor=isc.Canvas.NOT_ALLOWED;isc.A.$65q=(isc.Browser.isMoz&&isc.Browser.geckoVersion<20081201);isc.A.overflow=isc.Canvas.VISIBLE;isc.A.alwaysShowVScrollbar=false;isc.A.showCustomScrollbars=!((isc.Browser.isOpera||isc.Browser.isIE&&isc.Browser.version>4)||(isc.Browser.isUnix&&isc.Browser.isMoz&&isc.Browser.geckoVersion>=20020826&&isc.Browser.geckoVersion<=20031007));isc.A.scrollbarSize=16;isc.A.scrollbarConstructor="Scrollbar";isc.A.scrollLeft=0;isc.A.scrollTop=0;isc.A.scrollDelta=20;isc.A.$nr="unset";isc.A.enabled="unset";isc.A.redrawOnDisable=false;isc.A.$jp=true;isc.A.$jo=true;isc.A.$ns=true;isc.A.$nt=true;isc.A.$jq=true;isc.A._redrawWithParent=true;isc.A.showFocusOutline=true;isc.A._useNativeTabIndex=(isc.Browser.isIE&&isc.Browser.version>=5)||isc.Browser.isSafari||(isc.Browser.isMoz&&isc.Browser.geckoVersion>=20051111);isc.A._useFocusProxy=(isc.Browser.isMoz&&isc.Browser.geckoVersion<20051111)||isc.Browser.isOpera;isc.A.contextMenuProperties={autoDraw:false,width:200,showIcons:true};isc.A.menuConstructor="Menu";isc.A.clippedCorners=["TL","TR","BL","BR"];isc.A.cornerClipColor="FFFFFF";isc.A.cornerClipImage="[SKIN]corner.gif";isc.A.cornerClipSize=10;isc.A.$nv={_generated:true,overflow:"hidden",$jp:false,$jo:false,autoDraw:false,skinImgDir:"images/corners/",draw:function(){this.Super("draw",arguments)}};isc.A.dragOutlineStyle="dragOutline";isc.A.dragStartDistance=5;isc.A.canDragScroll=true;isc.A.dragScrollDelay=100;isc.A.dragScrollThreshold="10%";isc.A.minDragScrollIncrement=1;isc.A.maxDragScrollIncrement="5%";isc.A.dragIntersectStyle=isc.EventHandler.INTERSECT_WITH_MOUSE;isc.A.dragRepositionCursor=isc.Canvas.MOVE;isc.A.dragScrollType="any";isc.A.hoverDelay=300;isc.A.showHover=true;isc.A.edgeMarginSize=5;isc.A.edgeCursorMap={"T":"n-resize","L":"w-resize","B":"s-resize","R":"e-resize","TL":"nw-resize","TR":"ne-resize","BL":"sw-resize","BR":"se-resize"};isc.A.dragAppearance=isc.EventHandler.OUTLINE;isc.A.dropTypes=isc.Canvas.ANYTHING;isc.A.mouseStillDownInitialDelay=400;isc.A.mouseStillDownDelay=100;isc.A.doubleClickDelay=250;isc.A.refreshVariable="refresh";isc.A.$ks=(isc.Browser.isMoz&&(!isc.Browser.isUnix||isc.Browser.geckoVersion>20031007));isc.A.useClipDiv=(isc.Browser.isMoz||isc.Browser.isSafari||isc.Browser.isOpera);isc.A.manageChildOverflow=true;isc.A.$nw={};isc.A.percentBox="visible";isc.A.$520="viewport";isc.A.snapHGap=20;isc.A.snapVGap=20;isc.A.snapHDirection=isc.Canvas.AFTER;isc.A.snapVDirection=isc.Canvas.AFTER;isc.A.snapAxis=isc.Canvas.BOTH;isc.A.snapOnDrop=true;isc.B.push(isc.A.getDragAppearance=function isc_Canvas_getDragAppearance(_1){if(_1==isc.EH.DRAG_RESIZE&&this.dragResizeAppearance!=null)
+return this.dragResizeAppearance;if(_1==isc.EH.DRAG_REPOSITION&&this.dragRepositionAppearance!=null)
+return this.dragRepositionAppearance;return this.dragAppearance}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$nx="resize";isc.A.$ny="draw";isc.A.$nz="hidden";isc.A.$n0="redraw";isc.A.$n1="undefined";isc.A.$n2="draws";isc.A.$n3="drawing";isc.A.$n4="redraws";isc.A.$n5="autoDraw";isc.A.$n6="beforeBegin";isc.A.$n7="afterBegin";isc.A.$n8="beforeEnd";isc.A.$n9="afterEnd";isc.A.$oa=">";isc.A.$ob="'";isc.A.$77b='"';isc.A.$oc="initWidget";isc.A.$55w="html";isc.A.$54t=" ";isc.A.$od="initial draw";isc.A.$oe="parentDrawn";isc.A.notifyAncestorsOnReflow=false;isc.A.$of="eventProxy";isc.A.reuseDOMIDs=false;isc.A.$og="canvas";isc.A.$oh="canvas_clipDiv";isc.A.clipHandleIsFocusHandle=true;isc.A.$oi="MARGIN-LEFT:";isc.A.$oj="MARGIN-RIGHT:";isc.A.$ok="MARGIN-TOP:";isc.A.$ol="MARGIN-BOTTOM:";isc.A.$om="MARGIN:";isc.A.$on="</div>";isc.A.$oo="</div></div>";isc.A.$op=[];isc.A.isBorderBox=(isc.Browser.isMoz||isc.Browser.isBorderBox);isc.A.$oq="isc.EH.focusInCanvas(";isc.A.$or="if(event.target!=this)return;isc.EH.focusInCanvas(";isc.A.$os="if(window.isc)isc.EH.blurFocusCanvas(";isc.A.$ot=",true);";isc.A.$ou="autoChild:";isc.A.$90j="spacer:";isc.A.$ov=["<DIV ID='",null,"'style='position:absolute;width:1px;height:1px;overflow:hidden;left:",null,"px;top:",null,"px;'> </DIV>"];isc.A.$ow="scrollSizeDiv";isc.A.$ox="enforceScrollSize";isc.A.$oy="-1px";isc.A.useClientRectAPI=(isc.Browser.isMoz&&isc.Browser.geckoVersion>20071109);isc.A.useBoxObjectAPI=false;isc.A.useBoxObjectAPISelectively=true;isc.A.$65h="0px";isc.A.$oz="left";isc.A.$o0="top";isc.A.$o1="right";isc.A.$o2="bottom";isc.A.$o3="center";isc.A.$o4="childMoved";isc.A.$o5="height";isc.A.$o6="width";isc.A.$oz="left";isc.A.$o0="top";isc.A.$o7="$o8";isc.A.$o9="%";isc.A.$pa="*";isc.A.$pb={height:"_percent_height",width:"_percent_width",left:"_percent_left",top:"_percent_top"};isc.A.$90f={height:"minHeight",width:"minWidth"};isc.A.$90u={height:"maxHeight",width:"maxWidth"};isc.A.$pc="resized";isc.A.$pd="childResized";isc.A.momentumScrolling=true;isc.A.momentumScrollTime=1500;isc.A.momentumScrollAcceleration="smoothStart";isc.A.hoopSelectorDefaults={_constructor:"Canvas",keepInParentRect:true,redrawOnResize:false,overflow:"hidden",border:"1px solid blue",opacity:10,backgroundColor:"blue"};isc.A.hoopSelectAxis="both";isc.A.shouldSetNoDropTracker=isc.Browser.isOpera;isc.A.noDropTracker="[SKIN]/shared/no_drop.png";isc.A.adjustOverflowWhileDirty=true;isc.A.$pe={hidden:true,visible:true,scroll:true,auto:true,"clip-v":true,"clip-h":true,ignore:true};isc.A.$pf="sizing";isc.A.$pg="overflow";isc.A.cancelNativeScrollOnKeyDown=isc.Browser.isSafari;isc.A.$90e={Page_Up:true,Page_Down:true,Arrow_Up:true,Arrow_Down:true,Arrow_Left:true,Arrow_Right:true,Home:true,End:true};isc.A.$ph="px";isc.A.$27r="none";isc.A.$411="relative";isc.A.$pi="disabled";isc.A.$27r="none";isc.A.$pj="styleName";isc.A.$pk="eventpart";isc.A.$f8="count";isc.A.$pl=["edgeImage","edgeColor","customEdges","shownEdges","edgeSize","edgeTop","edgeBottom","edgeLeft","edgeRight","edgeOffset","edgeOffsetTop","edgeOffsetBottom","edgeOffsetLeft","edgeOffsetRight","canDragResize","canDragReposition"];isc.A.shadowDepth=4;isc.A.dragResizeFromShadow=true;isc.A.$pm="shadow";isc.A.isGroup=false;isc.A.groupBorderCSS="2px solid black";isc.A.groupLabelPadding=10;isc.A.showGroupLabel=true;isc.A.groupLabelStyleName="groupLabel";isc.A.groupLabelDefaults={_constructor:"Label",overflow:"visible",height:1,width:1,wrap:false,vAlign:"center",align:"center"};isc.B.push(isc.A.init=function isc_Canvas_init(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13){if(isc.$cv)arguments.$cw=this;if(!isc.Canvas.$80c){if(this.getDocumentBody(true)==null){isc.logWarn("Canvas created in a page outside the BODY tag. This is not supported. "+"Isomorphic Software requires the tag to be present and all widgets be created "+"and drawn inside it. Canvas details follow:\n"+isc.Log.echo(this))}
+isc.Canvas.$80c=true}
+this.ns.ClassFactory.addGlobalID(this);this._canvasList(true);if(this.position==null){this.position=this.htmlElement!=null?isc.Canvas.RELATIVE:isc.Canvas.ABSOLUTE}
+if(this.className!=null&&this.logIsInfoEnabled(this.$pj)){this.logInfo("'className' property specified. This property has been deprecated in "+"favor of 'styleName' as of SmartClient 5.5.",this.$pj)}
+if(this.styleName!=null){if(this.className!=null){var _14=this.getPrototype(),_15=(this.styleName!=_14.styleName),_16=(this.className!=_14.className);if(_15)this.className=this.styleName;else if(_16)this.styleName=this.className;else this.styleName=this.className}else{this.className=this.styleName}}else if(this.className!=null){this.styleName=this.className}
+if(this.size!=null)this.height=this.width=this.size;this.$pn=this.width;this.$po=this.height;if(this.width==null)this.width=this.defaultWidth;if(this.height==null)this.height=this.defaultHeight;this.$o8=this.height;if(isc.isA.String(this.margin)){var _17=parseInt(this.margin);if(isc.isA.Number(_17))this.margin=_17;else{this.logWarn("Invalid setting for this.margin:"+this.margin+". This should be a numeric value - ignoring");this.margin=null}}
+if(isc.isA.String(this.padding)){var _18=parseInt(this.padding);if(isc.isA.Number(_18))this.padding=_18;else{this.logWarn("Invalid setting for this.padding:"+this.padding+". This should be set to a numeric value - ignoring");this.padding=null}}
+if(this.border!=null&&!isc.isA.String(this.border)){this.border=this.$63e(this.border)}
+if(this.percentSource)this.setPercentSource(this.percentSource,true);this.$pp=true;this.resizeTo(this.width,this.$o8);this.moveTo(this.left,this.top);this.$pp=null;if(this.children&&!isc.isAn.Array(this.children))this.children=[this.children];if(this.peers&&!isc.isAn.Array(this.peers))this.peers=[this.peers];if(this.enabled!=this.$nr){this.logWarn("Widget initialized with explicitly specified 'enabled' property. "+"This property has been deprecated - use 'disabled' instead.");this.disabled=!this.enabled}
+if(this.redrawOnEnable!=null){this.logWarn("Widget initialized with deprecated 'redrawOnEnable' - use 'redrawOnDisable' instead.");this.redrawOnDisable=this.redrawOnEnable}
+this.initWidget(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13);this.$pq();if(this.showShadow)this.$pr();if(this.clipCorners)this.$ps();if(this.useBackMask&&((isc.Browser.isIE&&isc.Browser.minorVersion>=5.5)||(isc.Canvas.useMozBackMasks&&isc.Browser.isMoz))){this.makeBackMask()}
+if(this.isGroup){delete this.isGroup;this.setIsGroup(true)}
+if(this.children)this.children.setProperty(this.$n5,false);if(this.peers)this.peers.setProperty(this.$n5,false);if(this.observes){var _19,_20,_21=this.observes,_22=_21.length;for(var i=0;i<_22;i++){var _19=_21[i];if(!_19)continue;if(isc.isA.String(_19.source))_20=this.getGlobalReference(_19.source);else _20=_19.source;if(_20){this.observe(_20,_19.message,_19.action)}}}
+this.$pt();if(this.autoChildren)this.addAutoChildren(this.autoChildren);if(this.addOns)this.addAutoChildren(this.addOns);if(this._adjacentHandle&&!this.drawContext){this.drawContext={element:this._adjacentHandle}}
+if(this.htmlElement){var _24=this.htmlElement;delete this.htmlElement;this.setHtmlElement(_24)}
+if(this.eventProxy!=null){if(!isc.isA.Canvas(this.eventProxy)){this.logWarn("Canvas ID:'"+this.getID()+"' initialized with bad eventProxy. "+"This property should be set to another Canvas instance. Clearing this property.")
+delete this.eventProxy}else{if(this.eventProxy.$kt==null)this.eventProxy.$kt=[];this.eventProxy.$kt.add(this)}}
+var _25=this.parentElement;if(_25){this.parentElement=null;if(isc.isA.String(_25))_25=window[_25];_25.addChild(this)}
+if(this.autoFetchAsFilter!=null){var _26=this.autoFetchAsFilter?"substring":"exact";this.logWarn("This component has autoFetchAsFilter explicitly specified as:"+this.autoFetchAsFilter+". This attribute is deprecated in favor of "+"this.autoFetchTextMatchStyle. Defaulting autoFetchTextMatchStyle to \""+_26+"\" based on this setting.");this.autoFetchTextMatchStyle=_26}
+this.initializeValuesManager();if(this.showPanelHeader==true){if(this.setupPanelHeader)this.setupPanelHeader();if(this.refreshPanelControls)this.refreshPanelControls()}
+if(this.autoDraw&&!this.parentElement&&!isc.noAutoDraw){if(isc.Browser.isSafari&&!isc.Browser.isChrome&&isc.deferAutoDraw&&!isc.Page.isLoaded()&&this.position!="relative")
+{isc.Page.setEvent("load","if(window."+this.getID()+")"+this.getID()+".$77f()")}else{this.draw()}}}
+,isc.A.$77f=function isc_Canvas__deferredAutoDraw(){if(this.destroyed||this.isDrawn())return;this.draw()}
+,isc.A.initWidget=function isc_Canvas_initWidget(){}
+,isc.A.setID=function isc_Canvas_setID(_1){var _2=this.pointersToThis=this.pointersToThis||[];_2.add({object:window,property:this.ID});this.ID=_1;window[this.ID]=this;this.clear();this.draw()}
+,isc.A.clearIDs=function isc_Canvas_clearIDs(){this.clear();window[this.ID]=null;if(this.children){for(var i=0;i<this.children.length;i++){this.children[i].clearIDs()}}
+if(this.peers){for(var i=0;i<this.peers.length;i++){this.peers[i].clearIDs()}}}
+,isc.A.getDrawnState=function isc_Canvas_getDrawnState(){if(this.$if==true)return isc.Canvas.COMPLETE;if(this.$pu==true)return isc.Canvas.HANDLE_DRAWN;if(this.$pv==true)return isc.Canvas.DRAWING_HANDLE;return isc.Canvas.UNDRAWN}
+,isc.A.setDrawnState=function isc_Canvas_setDrawnState(_1){if(_1==isc.Canvas.COMPLETE)this.$if=true;else this.$if=false;if(_1==isc.Canvas.HANDLE_DRAWN)this.$pu=true;else this.$pu=false;if(_1==isc.Canvas.DRAWING_HANDLE)this.$pv=true;else this.$pv=false}
+,isc.A.isDrawn=function isc_Canvas_isDrawn(){return!!this.$if}
+,isc.A.handleDrawn=function isc_Canvas_handleDrawn(){return!!this.$pu}
+,isc.A.getID=function isc_Canvas_getID(){if(this.ID==null)this.ns.ClassFactory.addGlobalID(this);return this.ID}
+,isc.A.getAttribute=function isc_Canvas_getAttribute(_1){return this[_1]}
+,isc.A.getInnerHTML=function isc_Canvas_getInnerHTML(){var _1;if(!this.containsIFrame())_1=this.getContents();else{var _2=this.getContentsURL();_2=isc.Page.getURL(_2);if(isc.rpc)_2=isc.rpc.addParamsToURL(_2,this.contentsURLParams);isc.EventHandler.registerMaskableItem(this,true);_1=this.getIFrameHTML(_2)}
+return _1}
+,isc.A.getIFrameHTML=function isc_Canvas_getIFrameHTML(_1){return"<iframe height='100%' width='100%' scrolling='"+(this.overflow==isc.Canvas.HIDDEN?"no'":"auto'")+(isc.Browser.isSafari?" id="+this.$qs("iframe"):"")+" frameborder='0'"+" src=\""+_1+"\"></iframe>"}
+,isc.A.$pw=function isc_Canvas__sizeIFrame(){var _1=this.getDrawnState();if(_1!=isc.Canvas.COMPLETE&&_1!=isc.Canvas.HANDLE_DRAWN)return;var _2=this.getHandle(),_3=_2?_2.firstChild:null;if(_3==null)return;_3.style.height=(this.getInnerContentHeight()-2)+isc.px}
+,isc.A.$px=function isc_Canvas__getInnerHTML(_1){if(isc.$cv)arguments.$cw=this;var _2=this.getInnerHTML(_1);if(this.$pz){var _3=this.$pz.join(isc.emptyString);_2=(_2==null||_2==isc.nbsp?_3:_2+_3)}
+return _2}
+,isc.A.readyToDraw=function isc_Canvas_readyToDraw(){var _1=this.getDrawnState();if(this.getDrawnState()!=isc.Canvas.UNDRAWN){var _1=this.getDrawnState();this.logWarn("draw() called on widget with current drawn state: "+_1+(_1==isc.Canvas.COMPLETE?", use redraw() instead.":", ignoring.")+this.getStackTrace(),"drawing");return false}
+if(this.showIf!=null){this.convertToMethod("showIf");if(this.showIf(this)==false)return false}
+if(this.getHeight()<=0||this.getWidth()<=0){if(this.$77g){this.$77h();return false}
+this.logWarn("negative or zero area: height: "+this.getHeight()+", width: "+this.getWidth()+", refusing to draw"+this.getStackTrace(),"drawing");return false}
+if(this.deferredDrawEvent!=null){this.logInfo("draw() called while object already pending a delayed draw - no action to take","drawing");return false}
+if(this.parentElement!=null&&(!isc.isA.Canvas(this.parentElement)||this.parentElement.getDrawnState()==isc.Canvas.UNDRAWN))
+{this.logWarn("Attempt to draw child of an undrawn parent - ignoring"+this.getStackTrace(),"drawing");return false}
+if(isc.Browser.isSafari&&!isc.Page.isLoaded()){var _2=isc.Browser.safariVersion;if(parseInt(_2)<100){this.drawDeferred();return false}else{}}
+return true}
+,isc.A.$77h=function isc_Canvas__deferDrawForPageSize(){if(isc.Page.isLoaded())this.drawDeferred();else{isc.Page.setEvent("load",this.getID()+".$77i()")}}
+,isc.A.$77i=function isc_Canvas__fireDeferredDrawForPageResize(){if(this.destroyed)return;if(isc.Page.getWidth()==0||isc.Page.getHeight()==0){this.delayCall("draw",null,100)}
+else{this.draw()}}
+,isc.A.$p2=function isc_Canvas__mustDocumentWrite(){return false}
+,isc.A.$p4=function isc_Canvas__requestsDocumentWrite(){if(this.$p5)return true;var _1=this.parentElement;while(_1){if(_1.$p5)return true;_1=_1.parentElement}
+if(this.children){for(var i=0;i<this.children.length;i++){if(this.children[i].$p2())return true}}
+return false}
+,isc.A.draw=function isc_Canvas_draw(_1){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return this;if(this.overflow==isc.Canvas.AUTO)this.getTabIndex();if(this.logIsInfoEnabled(this.$n2)){this.logInfo("draw(): drawing "+this.Class+(this.parentElement?" with parent: "+this.parentElement:"")+(!isc.Page.isLoaded()?" before page load":"")+(this.logIsDebugEnabled(this.$n2)?this.getStackTrace():""),this.$n2)}
+this.$p6(this.$n2);var _2=this.doInitialFetch();if(this.peers!=null&&this.peers.getLength()>0){this.predrawPeers()}
+var _3=(isc.Browser.isIE&&this.fixIEOpacity&&!this.masterElement),_4=isc.Element.cacheOffsetCoords;if(this.position==isc.Canvas.RELATIVE){this.cacheOffsetCoords=false;_4=false}
+if(_3||_4){var _5=this.parentElement;while(_5){if(_3){if(_5.opacity!=null&&_5.opacity!=100){this.setOpacity(100,null,true);_3=false;if(!_4)break}}
+if(_4){if(_5.position==isc.Canvas.RELATIVE){this.cacheOffsetCoords=false;_4=false;if(!_3)break}}
+_5=_5.parentElement}}
+if(_4)this.cacheOffsetCoords=true;if(this.htmlElement!=null&&this.matchElement){if(isc.isA.String(this.htmlElement))this.htmlElement=isc.Element.get(this.htmlElement);var _6=isc.Element.getNativeInnerWidth(this.htmlElement),_7=isc.Element.getNativeInnerHeight(this.htmlElement);this.setWidth(_6);this.setHeight(_7)}
+var _8=this.parentElement;var _9=(!isc.Page.isLoaded()&&!this.drawContext&&(_8==null&&this.position==isc.Canvas.RELATIVE));_9=_9||this.$p2();var _10=this.separateContentInsertion;if(isc.Page.isLoaded()||!_9){this.$p8(!_10);if(_10)this.$p9();this.drawChildren();this.$qa()}else{var _5=this.parentElement;if((isc.Browser.isOpera||isc.Browser.isIE)&&this.getDocument().readyState=="complete")
+{isc.Page.finishedLoading()}
+this.$qb()}
+if(_2)isc.RPCManager.sendQueue();if(this._useFocusProxy&&this.$kk())this.makeFocusProxy();if(this.accessKey!=null&&this.$qc()&&this.$kk()){this.$qd()}
+if(this.$qe!=null)
+this.enforceScrollSize(this.$qe[0],this.$qe[1]);if(this.$qf())isc.EH.$mz([this]);if(this.clipCorners)this.$qg();this.$806=this.isVisible();if(!_1&&this.$806)this.show();if(this.parentElement)this.parentElement.childDrawn(this);if(this.masterElement)this.masterElement.peerDrawn(this);if(this.parentElement==null&&isc.Page.isLoaded()&&!isc.Page.pollPageSize)
+{if(this.getPageRight()>=isc.Page.getWidth()||this.getPageBottom()>=isc.Page.getHeight())
+{isc.EH.fireOnPause("checkForBodyOverflowChange",{target:isc.Canvas,methodName:"checkForPageResize"},100)}}
+if(this.parentElement==null&&this.position==this.$411){this.$412=this.getPageLeft();this.$413=this.getPageTop();isc.Page.setEvent("resize",this,isc.Page.FIRE_ONCE,"$414")}
+this.onDraw();return this}
+,isc.A.onDraw=function isc_Canvas_onDraw(){}
+,isc.A.doInitialFetch=function isc_Canvas_doInitialFetch(){}
+,isc.A.$qb=function isc_Canvas__writeHTML(){this.setDrawnState(isc.Canvas.DRAWING_HANDLE);var _1=this.getDocument(),_2=this.separateContentInsertion;if(this.children!=null&&this.$p2()){this.$p5=true;var _3=this.getTagStart(),_4=this.getTagEnd();_1.write(_2?_3:_3+this.$px())
+this.drawChildren();_1.write(_2?this.$px()+_4:_4);this.setDrawnState(isc.Canvas.HANDLE_DRAWN)}else{_1.write(isc.SB.concat(this.getTagStart(),(_2?null:this.$px()),this.getTagEnd()));this.setDrawnState(isc.Canvas.HANDLE_DRAWN);if(_2)this.$p9();this.drawChildren()}
+this.$qa();if(isc.Browser.isMoz&&this.getScrollingMechanism()==isc.Canvas.NATIVE)
+this.checkNativeScroll();return this}
+,isc.A.drawDeferred=function isc_Canvas_drawDeferred(){var _1=(isc.Page.isLoaded()?"idle":"load");if(this.deferredDrawEvent!=null){this.logInfo("drawDeferred() called when object is already pending drawing "+"- No action to take.");return}
+var _2=this.getID();this.deferredDrawEvent=isc.Page.setEvent(_1,"delete "+_2+".deferredDrawEvent;"+_2+".draw();",isc.Page.FIRE_ONCE)}
+,isc.A.getPrintHTML=function(printProperties,callback){this.isPrinting=true;printProperties=isc.addProperties({},printProperties,this.printProperties);if(printProperties.topLevelCanvas==null){printProperties.topLevelCanvas=this;printProperties.isDrawn=this.isDrawn();printProperties.isVisible=this.isVisible()}
+if(printProperties.omitControls==null)
+printProperties.omitControls=isc.Canvas.printOmitControls;if(printProperties.includeControls==null)
+printProperties.includeControls=isc.Canvas.printIncludeControls;var absPos=printProperties.absPos;this.currentPrintProperties=printProperties||{};var HTML=[this.getPrintTagStart(absPos),,,this.getPrintTagEnd(absPos)];if(!this.children||this.children.length==0||this.allowContentAndChildren){HTML[1]=this.getPrintInnerHTML()}
+delete printProperties.inline;printProperties.absPos=this.printChildrenAbsolutelyPositioned;if(printProperties.omitComponents){var omitComponents=printProperties.omitComponents
+for(var i=0;i<omitComponents.length;i++){if(isc.isA.String(omitComponents[i]))
+omitComponents[i]=window[omitComponents[i]];if(!isc.isAn.Instance(omitComponents[i]))omitComponents[i]=[]}
+omitComponents.removeEmpty()}
+var children=this.getPrintChildren();var self=this;var completePrintHTML=this.getCompletePrintHTMLFunction(HTML,callback);if(children){var childrenHTML=[],childCount=children.length,completedCount=0;var childHTMLComplete=function(childIndex,html){childrenHTML[childIndex]=html;++completedCount;if(completedCount==childCount){return completePrintHTML(childrenHTML)}
+return null}
+var thisHTML=null;for(var i=0;i<childCount;i++){var child=children[i];var func=(function(i){return function(html){childHTMLComplete(i,html)}})(i);var childHTML=this.getChildPrintHTML(child,printProperties,func);if(childHTML!==null){thisHTML=childHTMLComplete(i,childHTML)}}
+return thisHTML}else{return completePrintHTML()}}
+,isc.A.getChildPrintHTML=function isc_Canvas_getChildPrintHTML(_1,_2,_3){return _1.getPrintHTML(_2,_3)}
+,isc.A.getCompletePrintHTMLFunction=function isc_Canvas_getCompletePrintHTMLFunction(_1,_2){var _3=this;return function(_4){_3.isPrinting=false;if(isc.isAn.Array(_4))_4=_4.join(isc.emptyString);if(_4)_1[2]=_4;_1=_1.join(isc.emptyString);delete _3.currentPrintProperties.absPos;delete _3.currentPrintProperties;if(_2){_3.fireCallback(_2,"HTML,callback",[_1,_2]);return null}else{return _1}}}
+,isc.A.getPrintInnerHTML=function isc_Canvas_getPrintInnerHTML(){var _1=this.children!=null&&this.children.length>0;var _2=this.$px();if(_1&&_2==this.$54t)return null;return _2}
+,isc.A.getPrintChildren=function isc_Canvas_getPrintChildren(){var _1=this.children;if(!_1||_1.length==0)return;var _2=[];for(var i=0;i<_1.length;i++){if(this.shouldPrintChild(_1[i]))_2.add(_1[i])}
+return(_2.length>0)?_2:null}
+,isc.A.shouldPrintChild=function isc_Canvas_shouldPrintChild(_1){if(_1.shouldPrint!=null)return _1.shouldPrint;if(_1.masterElement)return false;var _2=this.currentPrintProperties,_3=_2.omitControls,_4=_2.omitComponents;if(!isc.isAn.Instance(_1)||(_4&&_4.contains(_1)))
+{return false}
+if(_3){var _5=_2.includeControls;if(_5&&_5.length>0){for(var i=0;i<_5.length;i++){var _7=_5[i];if(isc.isA[_7]&&isc.isA[_7](_1))return true}}
+for(var i=0;i<_3.length;i++){var _7=_3[i];if(isc.isA[_7]&&isc.isA[_7](_1)){return false}}}
+if((!_1.isDrawn()&&_2.isDrawn)||(!_1.isVisible()&&_2.isVisible))return false;return true}
+,isc.A.$xo=function isc_Canvas__fixPNG(){if(this.isPrinting)return false;return true}
+,isc.A.getPrintStyleName=function isc_Canvas_getPrintStyleName(){return this.printStyleName||this.styleName}
+,isc.A.getPrintTagStart=function isc_Canvas_getPrintTagStart(_1){var _2=this.currentPrintProperties,_3=_2.topLevelCanvas==this,_4=!_3&&!_1&&_2.inline,_5=this.getPrintStyleName();return[(_4?"<span ":"<div "),(_5?"class='"+_5+"' ":null),this.getPrintTagStartAttributes(_1),">"].join(isc.emptyString)}
+,isc.A.getPrintTagStartAttributes=function isc_Canvas_getPrintTagStartAttributes(_1){if(_1){return" style='position:absolute;left:"+this.getLeft()+"px;top:"+this.getTop()+"px;width:"+this.getWidth()+"px;height:"+this.getHeight()+"px;' "}else if(this.printChildrenAbsolutelyPositioned){return" style='position:relative;width:"+this.getScrollWidth()+"px;height:"+this.getScrollHeight()+"px;background-color:lightblue;' "}
+return null}
+,isc.A.getPrintTagEnd=function isc_Canvas_getPrintTagEnd(_1){var _2=this.currentPrintProperties,_3=_2.topLevelCanvas==this,_4=!_3&&!_1&&_2.inline;return _4?"</span>":"</div>"}
+,isc.A.makeBackMask=function isc_Canvas_makeBackMask(_1){if(isc.Browser.isMoz&&!isc.Page.isLoaded()){this.$49t=_1;isc.Page.setEvent("load",this,isc.Page.FIRE_ONCE,"makeBackMask");return}
+if(this.$49t){_1=this.$49t;delete this.$49t}
+this._backMask=isc.BackMask.create(_1);this.addPeer(this._backMask);this._backMask.setZIndex(this.getZIndex(true)-2);this.$qi()}
+,isc.A.makeFocusProxy=function isc_Canvas_makeFocusProxy(){if(!this._useFocusProxy||this.$qj||this.$qk||!this.isDrawn()||this.$ql!=null)return;this.$qk=true;this.$qm();this.$qk=null}
+,isc.A.$qm=function isc_Canvas__makeFocusProxy(){if(!isc.Page.isLoaded()&&isc.Browser.isSafari){this.getTabIndex();this.$ql=isc.Page.setEvent("load",this,null,"delayedMakeFocusProxy");return}
+var _1=this.getTabIndex();if(this.isDisabled())_1=-1;if(isc.Browser.isSafari&&_1==-1){return}
+var _2=(isc.Browser.isSafari?1:this.getViewportWidth()),_3=(isc.Browser.isSafari?1:this.getViewportHeight());var _4=isc.Canvas.getFocusProxyString(this.getCanvasName(),true,this.getOffsetLeft()-1,this.getOffsetTop()-1,_2,_3,this.isVisible(),this.$kk(),_1,this.accessKey,false,this.$qn(),this.$qo());isc.Element.insertAdjacentHTML(this.getClipHandle(),"afterEnd",_4)
+this.$qj=true}
+,isc.A.delayedMakeFocusProxy=function isc_Canvas_delayedMakeFocusProxy(){this.$ql=null;this.makeFocusProxy()}
+,isc.A.$qp=function isc_Canvas__clearFocusProxy(){if(!this._useFocusProxy)return;if(this.$ql!=null){isc.Page.clearEvent("load",this.$ql);this.$ql=null}
+if(!this.$qj)return;var _1=this.$qq();if(_1!=null){if(isc.Browser.isDOM){if(_1.parentNode){_1.parentNode.removeChild(_1)}else{this.logWarn("Unable clear focusProxy for this widget - element has no parentNode.")}}
+this.$qr=null}
+this.$qj=null}
+,isc.A.$qc=function isc_Canvas__useAccessKeyProxy(){return(isc.Browser.isChrome||(isc.Browser.isMoz&&this._useNativeTabIndex))}
+,isc.A.$qd=function isc_Canvas__makeAccessKeyProxy(){var _1=this.accessKey;if(!_1||!this.isDrawn()||!this.$kk())return;var _2=this.$qs("focusProxy");var _3=isc.StringBuffer.concat("<a id='",_2,"' href='javascript:void(0)'",(isc.Browser.isChrome?"' onClick":"' onfocus"),"='var _0=window.",this.getID(),";if(_0){_0.focus()}' ","accessKey='"+_1+"'></a>");isc.Element.insertAdjacentHTML(this.getClipHandle(),"beforeEnd",_3);this.$qt=isc.Element.get(_2)}
+,isc.A.$qu=function isc_Canvas__clearAccessKeyProxy(){var _1=this.$qt;delete this.$qt;if(_1)isc.Element.clear(_1)}
+,isc.A.drawChildren=function isc_Canvas_drawChildren(){if(this.children==null)return true;if(this.isDrawn()){this.logWarn("drawChildren() is only safe to call BEFORE a canvas has been drawn"+this.getStackTrace());return}
+if(this.children&&this.logIsInfoEnabled(this.$n3)){this.logInfo("drawChildren(): "+this.children.length+" children",this.$n3)}
+this.$pt();this.layoutChildren(this.$od);if(this.manageChildOverflow)this.$qv=true;for(var i=0;i<this.children.length;i++){var _2=this.children[i];if(_2.masterElement)continue;if(!_2.isDrawn())_2.draw()}}
+,isc.A.$qx=function isc_Canvas__completeChildOverflow(_1){if(!this.manageChildOverflow)return;this.$qv=null;this.$qy();var _2=0;for(var i=0;i<_1.length;i++){var _4=_1[i];if(_4!=null&&_4.$qz){_2++;_4.$qz=null;_4.adjustOverflow(this.$oe)}}}
+,isc.A.predrawPeers=function isc_Canvas_predrawPeers(){if(!this.peers)return;for(var i=0;i<this.peers.getLength();i++){var _2=this.peers[i];if(_2.$q0==true){if(!isc.isA.Canvas(_2)||_2.masterElement!=this){this.peers.remove(_2);this.addPeer(_2)}
+if(!_2.isDrawn())_2.draw()}}}
+,isc.A.drawPeers=function isc_Canvas_drawPeers(){if(!this.peers)return true;if(this.logIsInfoEnabled(this.$n3)){this.logInfo("drawPeers(): "+this.peers.length+" peers","drawing")}
+var _1=this.peers;this.peers=[];for(var i=0,_3;i<_1.length;i++){_3=_1[i];if(!isc.isA.Canvas(_3)||_3.masterElement!=this){this.addPeer(_3)}else{this.peers.add(_3)}}
+for(i=0;i<this.peers.length;i++){var _3=this.peers[i];if(_3.snapTo||_3.snapEdge)_3.$qw();if(!_3.isDrawn())_3.draw()}}
+,isc.A.$p8=function isc_Canvas__insertHTML(_1){this.setDrawnState(isc.Canvas.DRAWING_HANDLE);var _2=_1?this.$px():null,_3=this.getTagStart(true),_4=isc.isAn.Array(_3),_5;if(_4){var _6=_3.length;_3[_3.length]=_2;_3[_3.length]=this.getTagEnd();_5=_3.join(isc.$ad);_3.length=_6}else{_5=isc.SB.concat(_3,_2,this.getTagEnd())}
+var _7;var _8=this.logIsInfoEnabled(this.$n3);var _9=this.drawContext;if(_9){var _10=_9.element,_11=_9.position||"beforeBegin";this.logInfo("$p8(): drawing with "+_11+" relative to element: "+this.echoLeaf(_10),"drawing");if(_11=="replace"){_11="beforeBegin";if(isc.isA.String(_10))_10=isc.Element.get(_10);_7=this.$q1(_10,_11,_5,true);_10.parentNode.removeChild(_10);this.drawContext=null;if(this.htmlElement)this.htmlElement=null}else{_7=this.$q1(_10,_11,_5,true)}}else if(this.masterElement&&(this.masterElement.getClipHandle()!=null)){if(_8){this.logInfo("inserting HTML next to master element: "+this.masterElement,"drawing")}
+var _12=this.masterElement.getClipHandle();_7=this.$q1(_12,this.$n9,_5,true)}else if(this.parentElement){if(_8){this.logInfo("inserting HTML into parent: "+this.parentElement,"drawing")}
+var _13=this.parentElement.getHandle();_7=this.$q1(_13,this.$n8,_5,true)}else{if(_8){this.logDebug("inserting HTML at top level","drawing")}
+_7=this.$q2(_5)}
+if(!(isc.Browser.isIE||isc.Browser.isOpera)){if(_7!=null){if(this.useClipDiv){this._clipDiv=_7;this.$q3=_7.firstChild}else{this.$q3=_7}}else{}}
+this.setDrawnState(isc.Canvas.HANDLE_DRAWN)}
+,isc.A.$q2=function isc_Canvas__createAbsoluteElement(_1){return this.ns.Element.createAbsoluteElement(_1)}
+,isc.A.$q1=function isc_Canvas__insertAdjacentHTML(_1,_2,_3,_4){return this.ns.Element.insertAdjacentHTML(_1,_2,_3,_4)}
+,isc.A.$qa=function isc_Canvas__completeHTMLInit(){this.modifyContent();if(isc.Browser.isMoz&&isc.Browser.isStrict&&this.containsIFrame())this.$pw();if(this.manageChildOverflow&&this.children!=null){this.$qx(this.children)}
+this.setUpEvents();if(this.$q4){this.$q5(this.left,this.top,this.width,this.$o8);var _1=this.$q6;if(isc.isAn.Array(_1))this.setClip(_1)}
+this.setDrawnState(isc.Canvas.COMPLETE);this.$q7=false;if(this.parentElement==null)isc.Canvas.$q8(this);if(this.parentElement!=null&&this.parentElement.$qv){this.$qz=true}else{this.adjustOverflow(this.$ny)}
+this.drawPeers()}
+,isc.A.setHtmlElement=function isc_Canvas_setHtmlElement(_1){if(this.htmlElement==_1)return;this.htmlElement=_1;if(!this.htmlPosition)this.htmlPosition="afterBegin";var _2=_1?{position:this.htmlPosition,element:this.htmlElement}:null;this.setDrawContext(_2)}
+,isc.A.setHtmlPosition=function isc_Canvas_setHtmlPosition(_1){if(_1==null)_1="afterBegin";if(this.htmlPosition==_1)return;this.htmlPosition=_1;if(this.htmlElement==null)return;var _2={position:this.htmlPosition,element:this.htmlElement};this.setDrawContext(_2)}
+,isc.A.isDirty=function isc_Canvas_isDirty(){return this.$q7==true}
+,isc.A.markForRedraw=function isc_Canvas_markForRedraw(_1){if(isc.$cv)arguments.$cw=this;if(this.isDrawn()&&!this.isDirty()){this.$q9(_1);isc.Canvas.scheduleRedraw(this);this.$q7=true}}
+,isc.A.readyToRedraw=function isc_Canvas_readyToRedraw(_1,_2){if(isc.$cv)arguments.$cw=this;if(!this.isDrawn()){return false}
+var _3=this.ns.EH;if(_3.lastTarget==this&&(_3.$ku||_3.$km||(isc.Browser.isMobileWebkit&&_3.dragOperation==_3.DRAG_SCROLL)))
+{if(_2){this.$q9(_1,true);this.priorityRedraw=true;this.$q7=false;this.markForRedraw(false)}
+return false}
+return true}
+,isc.A.$q9=function isc_Canvas__logRedraw(_1,_2){if(_1==false||!this.logIsInfoEnabled(this.$n4))return;var _3=(!_1&&this.logIsDebugEnabled(this.$n4)||this.logIsDebugEnabled("redrawTrace"));var _4;if(_2==null)_4="Scheduling redraw ";else _4=(_2==true?"DEFERRED ":"")+"Immediate redraw ";this.logInfo(_4+(this.isDirty()&&_2!=null?"of dirty widget ":"")+(this.children&&this.children.length>0?"("+this.getChildCount()+" children) ":"")+"("+(_1?_1:"no reason provided")+")"+(_3?this.getStackTrace():""),this.$n4)}
+,isc.A.redraw=function isc_Canvas_redraw(_1){if(isc.$cv)arguments.$cw=this;if(!this.readyToRedraw(_1,true))return this;this.$q9(_1,false);this.$p6(this.$n4);var _2=isc.timeStamp();this.$ra();this.$rb=isc.timeStamp()-_2;return this}
+,isc.A.redrawIfDirty=function isc_Canvas_redrawIfDirty(_1){if(this.isDrawn()&&this.isDirty())return this.redraw(_1)}
+,isc.A.$ra=function isc_Canvas__updateHTML(){var _1=this.logIsDebugEnabled(this.$n3),_2=this.logIsInfoEnabled(this.$n3),_3;if(_1)_3=isc.timeStamp();if(_2)this.logInfo("$ra(): redrawing","drawing");if(this.peers!=null&&this.peers.getLength()>0)this.redrawPredrawnPeers();var _4=this.children&&this.children.length>0,_5=this.allowContentAndChildren&&_4;if(_4&&!_5&&this.shouldRedrawOnResize()){_5=true}
+if((!_4||_5)&&(this.getVisibleWidth()>this.getWidth()||this.getVisibleHeight()>this.getHeight()))
+{if(this.notifyAncestorsOnReflow&&this.parentElement!=null){this.notifyAncestorsAboutToReflow()}
+this.$q5(null,null,this.width,this.$o8)}
+if(_4){if(_5)this.$p9();this.redrawChildren()}else{this.$rd()}
+if(this.$qe&&!_4){delete this.$re;this.enforceScrollSize(this.$qe[0],this.$qe[1])}
+this.modifyContent();this.setUpEvents();this.$q7=false;this.adjustOverflow(this.$n0,null,true);this.redrawPeers();if(_1){this.logDebug("Redraw() - Total time to redraw in DOM:"+(isc.timeStamp()-_3),"drawing")}
+if(this.notifyAncestorsOnReflow&&this.parentElement!=null){this.notifyAncestorsReflowComplete()}
+return this}
+,isc.A.notifyAncestorsAboutToReflow=function isc_Canvas_notifyAncestorsAboutToReflow(){if(this.parentElement)this.parentElement.$86k(this)}
+,isc.A.notifyAncestorsReflowComplete=function isc_Canvas_notifyAncestorsReflowComplete(){if(this.parentElement)this.parentElement.$86l(this)}
+,isc.A.$86k=function isc_Canvas__childAboutToReflow(_1){if(this.overflow!=isc.Canvas.VISIBLE){this.$86m=this.getScrollTop();this.$86n=this.getScrollLeft();this.$417=true}else{if(this.parentElement)this.parentElement.$86k(_1)}}
+,isc.A.$86l=function isc_Canvas__childReflowComplete(_1){if(this.overflow!=isc.Canvas.VISIBLE){delete this.$417;var _2=false,_3,_4;if(this.$86m!=null&&this.$86m!=this.getScrollTop()){_2=true;_4=this.$86m}
+if(this.$86n!=null&&this.$86n!=this.getScrollLeft()){_2=true;_4=this.$86m}
+if(_2){this.scrollTo(_3,_4,"Reset scroll position for child content reflow")}}else{if(this.parentElement)this.parentElement.$86l(_1)}}
+,isc.A.$p9=function isc_Canvas__updateParentHTML(){var _1=this.$px(),_2=this.getHandle();while(_2.hasChildNodes()){var _3=_2.firstChild.getAttribute?_2.firstChild.getAttribute(this.$of):null;if(_3&&isc.isA.Canvas(window[_3]))break;_2.removeChild(_2.firstChild)}
+isc.Element.insertAdjacentHTML(_2,this.$n7,_1)}
+,isc.A.$rd=function isc_Canvas__updateInnerHTML(){var _1=this.isPrinting;this.isPrinting=false;var _2=this.$px();this.getHandle().innerHTML=_2;this.isPrinting=_1}
+,isc.A.modifyContent=function isc_Canvas_modifyContent(){}
+,isc.A.redrawChildren=function isc_Canvas_redrawChildren(){if(!this.children)return true;this.logInfo("redrawChildren(): "+this.children.length+" children","drawing");for(var _1=this.children,i=0;i<_1.length;i++){var _3=_1[i];if(!isc.isA.Canvas(_3))continue;if(_3._redrawWithParent){_3.redraw(false)}}}
+,isc.A.redrawPredrawnPeers=function isc_Canvas_redrawPredrawnPeers(){if(!this.peers||this.peers.getLength<1)return;for(var _1=this.peers,i=0;i<_1.length;i++){if(_1[i]&&_1[i].$jp&&_1[i].$q0){_1[i].redraw("redrawPeers")}}}
+,isc.A.redrawPeers=function isc_Canvas_redrawPeers(){if(!this.peers)return true;this.logInfo("redrawPeers(): "+this.peers.length+" peers","drawing");for(var _1=this.peers,i=0;i<_1.length;i++){if(_1[i]&&_1[i].$jp&&!_1[i].$q0){_1[i].redraw("redrawPeers")}}}
+,isc.A.updateFromServer=function isc_Canvas_updateFromServer(_1){_1=isc.clone(_1);isc.addProperties(_1,{useXmlHttpRequest:true,evalResult:true,suppressAutoDraw:true});if(!_1.evalVars)_1.evalVars={};if(!_1.evalVars.targetComponent)_1.evalVars.targetComponent=this;isc.rpc.sendRequest(_1)}
+,isc.A.refreshFromServer=function isc_Canvas_refreshFromServer(_1,_2,_3,_4){this.$rf("refresh",_1,_2,_3,_4)}
+,isc.A.replaceFromServer=function isc_Canvas_replaceFromServer(_1,_2,_3,_4){this.$rf("replace",_1,_2,_3,_4)}
+,isc.A.$rf=function isc_Canvas__refreshOrReplaceFromURL(_1,_2,_3,_4,_5){if(this.$rg){this.logWarn("Attempt to "+_1+" while "+this.$rh+" is in progress - ignoring.");return}
+this.$rg=true;this.$rh=_1;this.$ri=_5;this.logDebug("Submitting to "+_1+" URL: "+_2+", with data: "+this.echo(_3));isc.Comm.sendFieldsToServer({URL:_2,fields:_3,prompt:_4,callback:this.getID()+".$rj(frame)",resultVarName:this.refreshVariable})}
+,isc.A.$rj=function isc_Canvas__refreshReply(_1){this.$rg=false;var _2=this.$rh;var _3=_1[this.refreshVariable];if(!isc.isAn.Object(_3)){this.logError("Expected object literal for "+_2+", but got: "+isc.Log.echo(_3));return}
+_3=isc.clone(_3);var _4=this;if(_2=="refresh")this.setProperties(_3);else{if(!_3._constructor)_3._constructor=this.getClassName();_4=this.replaceWith(_3)}
+isc.clearPrompt();if(this.$ri){if(!isc.isA.Function(this.$ri)){this.$ri=isc.Func.expressionToFunction("canvas",this.$ri)}
+if(!isc.isA.Function(this.$ri)){this.logError("Can't convert "+_2+" callback '"+this.$ri+" to a function - not firing callback!");return}
+this.$ri(_4)}}
+,isc.A.clear=function isc_Canvas_clear(_1){this.$66p=true;if(!_1&&this.logIsInfoEnabled("clears")){var _2="clear()"+(this.children&&this.children.length>0?" ("+this.getChildCount()+" children) ":"")+(this.logIsDebugEnabled("clears")?this.getStackTrace():"");this.logInfo(_2,"clears")}
+this.$rk();if(this._eventMask)this.ns.EH.unregisterMaskableItem(this);if(this==isc.Canvas.$rl)isc.Canvas.hideResizeThumbs();if(this._useFocusProxy)this.$qp();if(this.children){for(var _3=this.children,i=0;i<_3.length;i++){var _5=_3[i];if(!isc.isA.Canvas(_5))continue;_5.$74w=true;_5.clear(true);_5.$74w=null}}
+if(this.getHandle())this.clearHandle();if(this.parentElement)this.parentElement.childCleared(this);if(this.masterElement)this.masterElement.peerCleared(this);delete this.$re;delete this.$qt;if(this.deferredDrawEvent){isc.Page.clearEvent(this.deferredDrawEvent);delete this.deferredDrawEvent}
+if(this.peers){for(var _3=this.peers,i=0;i<_3.length;i++){if(this.$74w)_3[i].$74w=true;_3[i].clear(true);_3[i].$74w=null}}
+if(this.canAcceptDrop)this.ns.EH.unregisterDroppableItem(this);this.setDrawnState(isc.Canvas.UNDRAWN);this.$808=this.$809=null;delete this.$66p}
+);isc.evalBoundary;isc.B.push(isc.A.destroy=function isc_Canvas_destroy(_1){if(this.doNotDestroy){this.clear();return}
+if(this.destroyed)return;this.destroying=true;if(this.$rm)isc.Timer.clearTimeout(this.$rn);this.hideClickMask();this.$75s(true,_1);if(isc.Hover.lastHoverCanvas==this)isc.Hover.hide();this.clear(true);this.deparent();this.depeer();if(this.children){for(var _2=this.children.duplicate(),i=0;i<_2.length;i++){var _4=_2[i];if(!isc.isA.Canvas(_4))continue;_4.destroy(true)}}
+if(this.peers){for(var _2=this.peers.duplicate(),i=0;i<_2.length;i++){_2[i].destroy(true)}}
+delete this.peers;delete this.children;if(this.hscrollbar&&!this.hscrollbar.destroyed){this.hscrollbar.destroy(true);delete this.hscrollbar}
+if(this.vscrollbar&&!this.vscrollbar.destroyed){this.vscrollbar.destroy(true);delete this.vscrollbar}
+if(this.$542){var _5=this.$542;for(var _6 in _5){var _7=_5[_6];for(var i=0;i<_7.length;i++){var _8=_7[i],_4=_8?window[_8]:null;if(_4&&!_4.destroyed&&_4.destroy&&!_4.dontAutoDestroy)
+{_4.destroy()}}
+delete this[_6]}}
+if(this.eventProxy!=null)this.clearEventProxy();if(this.$kt!=null){for(var _2=this.$kt.duplicate(),i=0;i<_2.length;i++){_2[i].clearEventProxy()}}
+if(this.locatorParent&&this.locatorParent.locatorChildDestroyed){this.locatorParent.locatorChildDestroyed(this)}
+delete this.locatorParent;this._canvasList();isc.Canvas.$ro(this);this.$rp();isc.EH.canvasDestroyed(this);isc.ClassFactory.dereferenceGlobalID(this);if(this.pointersToThis!=null){for(var i=0;i<this.pointersToThis.length;i++){var _9=this.pointersToThis[i];if(_9.object&&(_9.object[_9.property]==this)){var _10;_9.object[_9.property]=_10}}
+delete this.pointersToThis}
+if(this.$rr){for(var _11 in this){delete this[_11]}}
+this.$63x();this.destroyed=true}
+,isc.A.markForDestroy=function isc_Canvas_markForDestroy(){if(isc.$cv)arguments.$cw=this;if(this.destroyed||this.destroying||this.isPendingDestroy())return;this.$65i=true;this.$75s(false,false);isc.Canvas.scheduleDestroy(this)}
+,isc.A.isPendingDestroy=function isc_Canvas_isPendingDestroy(){return!this.destroyed&&!this.destroying&&(this.$65i==true)}
+,isc.A.$75s=function isc_Canvas__logDestroy(_1,_2){if(this.$ih)return;if(_1)this.$p6("destroys");if(!_2&&this.logIsInfoEnabled("destroys")){this.logInfo((_1?"destroy()":"markForDestroy()")+(this.children&&this.children.length>0?" ("+this.getChildCount()+" children) ":"")+(this.logIsDebugEnabled("destroys")?this.getStackTrace():""),"destroys")}}
+,isc.A.clearHandle=function isc_Canvas_clearHandle(){if(!this.getHandle())return;this.$p6("clears");this.getHandle().eventProxy=null;this.getClipHandle().eventProxy=null;var _1=this.getClipHandle();this.$q3=null;this.$rs=null;this._clipDiv=null;isc.Element.clear(_1,this._clearWithRemoveChild)}
+,isc.A.replaceWith=function isc_Canvas_replaceWith(_1){if(!isc.isAn.Object(_1))return;var _2;if(isc.Browser.isDOM){var _3=isc.ClassFactory.getNextGlobalID();isc.Element.insertAdjacentHTML(this.getClipHandle(),"afterEnd","<DIV ID="+_3+"></DIV>");var _2=this.getDocument().getElementById(_3);_1.drawContext={element:_2}}
+var _4=this.parentElement,_5=this.masterElement,_6=(isc.isA.Layout(_4)&&_4.hasMember(this)),_7=(_6?_4.getMemberNumber(this):0);this.destroy();if(isc.isA.Canvas(_1)){_1.clear()}else{_1.autoDraw=false;_1=isc.ClassFactory.newInstance(_1);if(_1==null){this.logWarn("canvas.replaceWith(): Unable to create a widget "+"instance from the argument passed in. Returning.")
+return}}
+if(_6){_4.addMember(_1,_7)}else if(_4){_4.addChild(_1)}else if(_5){_5.addPeer(_1)}
+if(!_1.isDrawn())_1.draw();if(isc.Browser.isDOM){if(_2.parentNode){_2.parentNode.removeChild(_2)}else{this.logWarn("unable to clear marker")}}
+return _1}
+,isc.A.setDrawContext=function isc_Canvas_setDrawContext(_1){var _2=this.isDrawn();this.deparent();if(_2)this.clear();this.drawContext=_1;if(_2)this.draw()}
+,isc.A.$qs=function isc_Canvas__getDOMID(_1,_2,_3){if(_2){var _4=isc.ClassFactory.getDOMID(this.getID(),_1);if(this.reuseDOMIDs){if(!this.$63y)this.$63y=[];this.$63y[this.$63y.length]=_4}
+return _4}
+if(!this.$rt)this.$rt={};if(!this.$rt[_1])
+this.$rt[_1]=isc.ClassFactory.getDOMID(this.getID(),_1);return this.$rt[_1]}
+,isc.A.$557=function isc_Canvas__getDOMPartName(_1){if(!this.$rt)return null;for(var _2 in this.$rt){if(this.$rt[_2]==_1)return _2}}
+,isc.A.$63x=function isc_Canvas__releaseDOMIDs(){if(!this.reuseDOMIDs)return;if(this.$63y){for(var i=0;i<this.$63y.length;i++){isc.ClassFactory.releaseDOMID(this.$63y[i])}}
+if(this.$rt){for(var i in this.$rt){isc.ClassFactory.releaseDOMID(this.$rt[i])}}}
+,isc.A.getCanvasName=function isc_Canvas_getCanvasName(){if(!this.$ru)this.$ru=this.$qs(this.$og,true);return this.$ru}
+,isc.A.$rv=function isc_Canvas__getClipDivDOMID(){return this.$qs(this.$oh)}
+,isc.A.getTransformCSS=function isc_Canvas_getTransformCSS(){if(this.rotation!=null)return";"+isc.Element.getRotationCSS(this.rotation,this.transformOrigin);return null}
+,isc.A.getTagStart=function isc_Canvas_getTagStart(_1){var _2=isc.Canvas,_3=this.$rw();if(this.zIndex==_2.AUTO)this.zIndex=_2.getNextZIndex();var _4=(this.eventProxy?this.eventProxy.ID:this.ID);var _5=this.$rx(),_6=_5[0],_7=_5[1];if(!_2.$ry){_2.$ry=" onfocus=";_2.$rz=" onblur=";_2.$r0=" tabindex="
+_2.$r1=" accessKey="}
+var _8=isc.Browser.isMoz;var _9=this.opacity;if(!isc.Browser.isIE){if(_9!=null)_9=_9/ 100}
+if(isc.Browser.isMoz){if(this.smoothFade&&(_9==1||_9==null))_9=0.9999}
+if(this.useClipDiv){var _10=this.getCurrentCursor(),_11,_12,_13=this._useNativeTabIndex;if(this.clipHandleIsFocusHandle==false)_13=false;if(_13&&this.$kk()){_11=isc.SB.concat(_2.$ry,this.$qn(),_2.$rz,this.$qo(),!this.isDisabled()?_2.$r0+this.getTabIndex():null,(!this.$qc()&&this.accessKey!=null)?_2.$r1+this.accessKey:null);if(isc.Browser.isMoz){_12=isc.StringBuffer.concat((this.mozOutlineOffset!=null?";-moz-outline-offset:"+this.mozOutlineOffset:null),(this.mozOutlineColor!=null?";-moz-outline-color:"+this.mozOutlineColor:null),(!this.showFocusOutline?";-moz-outline-style:none":null))}else if(isc.Browser.isSafari){if(!this.showFocusOutline){_12=";outline-style:none"}}}
+var _14=isc.Browser.isMoz&&isc.Browser.geckoVersion>=20080529;var _15=isc.StringBuffer.concat("<div id='",this.$rv(),"' eventProxy=",_4,(_14&&this.ariaRole?" role='"+this.ariaRole+"'":""),(_14&&this.ariaState?this.getAriaStateAttributes():""),(this.className?" class='"+this.className+"'":""),_11," style='","POSITION:",this.position,";LEFT:",this.left,"px;TOP:",this.top,"px;WIDTH:",_6,"px;HEIGHT:",_7,"px;Z-INDEX:",this.zIndex,(this.visibility==_2.INHERIT?"":";VISIBILITY:"+this.visibility),(this.backgroundColor==null?"":";BACKGROUND-COLOR:"+this.backgroundColor),(this.backgroundImage==null?"":";BACKGROUND-IMAGE:url("+this.getImgURL(this.backgroundImage)+")"+";BACKGROUND-REPEAT:"+this.backgroundRepeat+(this.backgroundPosition?";BACKGROUND-POSITION:"+this.backgroundPosition:"")),(this.border?";BORDER:"+this.border:""),(this.padding!=null||this.$415?";PADDING:0px":""),this.$r2(),(_9!=null?(this.$65q?";-moz-opacity:":";opacity:")+_9:""),(_8?";-moz-box-sizing:border-box":null),_12,this.getTransformCSS(),(isc.Browser.isTouch?(!this.canSelectText?";-webkit-user-select:none":";-webkit-user-select:text"):null),";OVERFLOW:",_3,";' ONSCROLL='return "+_4+".$lh()'>","<div id='",this.getCanvasName(),"' eventProxy='",_4,(this.textDirection!=null?"' dir='"+this.textDirection:""),"' style='POSITION:relative;VISIBILITY:inherit",";Z-INDEX:",this.zIndex,(_10==_2.AUTO?"":";CURSOR:"+_10),(this.padding!=null?";PADDING:"+this.padding+"px":""),(this.topPadding!=null?";padding-top:"+this.topPadding+"px":""),(this.bottomPadding!=null?";padding-bottom:"+this.bottomPadding+"px":""),(this.leftPadding!=null?";padding-left:"+this.leftPadding+"px":""),(this.rightPadding!=null?";padding-right:"+this.rightPadding+"px":""),";'>")}else{if(!_2.$r4){_2.$r5=" style='POSITION:absolute;LEFT:";_2.$r6=" style='POSITION:relative;LEFT:";_2.$bd=" class='";_2.$416="'";_2.$r7=";VISIBILITY:";_2.$r8=";CURSOR:";var _16=_2.$r4=[];_16[0]="<div id=";_16[2]=" eventProxy=";_16[15]="px;TOP:";_16[22]="px;WIDTH:";_16[28]="px;HEIGHT:";_16[34]="px;Z-INDEX:";_16[44]=";OVERFLOW:";_16[59]="' ONSCROLL='return ";_16[61]=".$lh()' "}
+var _16=_2.$r4;_16[1]=this.getCanvasName();_16[3]=_4;if(this.className!=null){_16[4]=_2.$bd;_16[5]=this.className;_16[6]=_2.$416}else{_16[4]=_16[5]=_16[6]=null}
+_16[7]=(this.textDirection!=null?" dir="+this.textDirection:null);_16[8]=(this.position==_2.RELATIVE?_2.$r6:_2.$r5);isc.$bk(_16,this.left,9,6);isc.$bk(_16,this.top,16,6);isc.$bk(_16,_6,23,5);isc.$bk(_16,_7,29,5);if(this.zIndex!=_2.AUTO)isc.$bk(_16,this.zIndex,35,9);else{_16[35]=this.zIndex;_16[36]=_16[37]=_16[38]=_16[39]=_16[40]=_16[41]=_16[42]=_16[43]=null}
+_16[45]=_3;if(this.visibility!=_2.INHERIT){_16[46]=_2.$r7;_16[47]=this.visibility}else{_16[46]=_16[47]=null}
+_16[48]=(this.backgroundColor==null?null:";BACKGROUND-COLOR:"+this.backgroundColor);_16[49]=(this.backgroundImage==null?null:";BACKGROUND-IMAGE:url("+this.getImgURL(this.backgroundImage)+");BACKGROUND-REPEAT:"+this.backgroundRepeat+(this.backgroundPosition?";BACKGROUND-POSITION:"+this.backgroundPosition:""));_16[50]=(_8?";-moz-box-sizing:border-box":null);var _10=this.getCurrentCursor();if(_10==_2.AUTO){_16[51]=_16[52]=null}else{_16[51]=_2.$r8;_16[52]=_10}
+_16[53]=this.$r2();_16[54]=(this.padding!=null?";PADDING:"+this.padding+isc.px:null);if(this.topPadding!=null)
+_16[54]=(_16[54]||"")+";padding-top:"+this.topPadding+"px";if(this.bottomPadding!=null)
+_16[54]=(_16[54]||"")+";padding-bottom:"+this.bottomPadding+"px";if(this.leftPadding!=null)
+_16[54]=(_16[54]||"")+";padding-left:"+this.leftPadding+"px";if(this.rightPadding!=null)
+_16[54]=(_16[54]||"")+";padding-right:"+this.rightPadding+"px";_16[55]=(this.border?";BORDER:"+this.border:null);if(isc.Browser.isIE){if(!isc.Canvas.neverUseFilters||this.useOpacityFilter){_16[56]=(_9==null?null:";filter:progid:DXImageTransform.Microsoft.Alpha(opacity="+_9+")")}else{_16[56]=null}
+if(!isc.Canvas.neverUseFilters){if(this.$r9){_16[57]=";filter:progid:DXImageTransform.Microsoft.iris(irisStyle=circle)"}else{_16[57]=null}}else{_16[57]=null}}else{if(_9!=null){_16[56]=(this.$65q?";-moz-opacity:":";opacity:")+_9}else{_16[56]=null}}
+_16[58]=this.getTransformCSS();_16[60]=_4;var _17=64;if(this.$kk()&&this._useNativeTabIndex&&this.clipHandleIsFocusHandle){_16[64]=_2.$ry;_16[65]=this.$qn();_16[66]=_2.$rz;_16[67]=this.$qo();if(!this.isDisabled()){_16[68]=_2.$r0;isc.$bk(_16,this.getTabIndex(),69,5);if(this.accessKey!=null){_16[74]=_2.$r1;_16[75]=this.accessKey;_17=76}else _17=74;if(!this.showFocusOutline){if(!_2.$sa)_2.$sa=" hideFocus=true";_16[_17]=_2.$sa;_17+=1}}else _17=68}
+if((this.ariaRole||this.ariaState)&&isc.Canvas.ariaEnabled()&&!isc.Canvas.useLiteAria())
+{if(this.ariaRole){_16[_17++]=" role='";_16[_17++]=this.ariaRole;_16[_17++]="' "}
+if(this.ariaState){_16[_17++]=this.getAriaStateAttributes()}}
+_16.length=_17;_16[_17]=this.$oa;if(_1)return _16;return _16.join(isc.emptyString)}
+return _15}
+,isc.A.$r2=function isc_Canvas__getMarginHTML(){if(!this.$sb()&&this.$sc==null){if(this.margin==null)return null;return isc.SB.concat(isc.semi,this.$om,this.margin,isc.px)}
+var _1=this.$sd(),_2=isc.SB.concat(isc.semi,this.$oi,_1.left,isc.px,isc.semi,this.$oj,_1.right,isc.px,isc.semi,this.$ok,_1.top,isc.px,isc.semi,this.$ol,_1.bottom,isc.px);return _2}
+,isc.A.getTagEnd=function isc_Canvas_getTagEnd(){if(this.useClipDiv)return this.$oo;return this.$on}
+,isc.A.$rw=function isc_Canvas__getHandleOverflow(){var _1=this.overflow;var _2=(this.overflow==isc.Canvas.SCROLL||this.overflow==isc.Canvas.AUTO),_3=_2&&this.showCustomScrollbars,_4=_2&&!this.showCustomScrollbars;if(this.overflow==isc.Canvas.HIDDEN||_3)
+{if(this.$ks){_1=this.$se?this.$nz:"-moz-scrollbars-none";this.$r3=true}else{_1=this.$nz}}else if(isc.Browser.isOpera&&this.overflow==isc.Canvas.VISIBLE){_1=this.$nz}else if(isc.Browser.isMoz){if(_4)this.$r3=true;else if(this.$ks){_1=this.$se?this.$nz:"-moz-scrollbars-none";this.$r3=true}}
+if(this.useClipDiv&&(this.overflow==isc.Canvas.CLIP_H||this.overflow==isc.Canvas.CLIP_V))
+{_1=this.$nz}
+return _1}
+,isc.A.$rx=function isc_Canvas__getInitialHandleSize(){var _1=this.getInitialWidth(),_2=this.getInitialHeight();return this.$sf(_1,_2)}
+,isc.A.getInitialWidth=function isc_Canvas_getInitialWidth(){return this.getWidth()}
+,isc.A.getInitialHeight=function isc_Canvas_getInitialHeight(){return this.getHeight()}
+,isc.A.$sf=function isc_Canvas__adjustHandleSize(_1,_2){var _3=this.$sd();if(_1!=null){if(this.showCustomScrollbars&&this.vscrollOn){_1-=this.getScrollbarSize()}
+_1-=(_3.left+_3.right);if(this.isBorderBox){}else if(this.useClipDiv){if(this.padding==null&&!this.$415){_1-=this.getHBorderPad()}else{_1-=this.getHBorderSize()}}else{_1-=this.getHBorderPad()}}
+if(_2!=null){if(this.showCustomScrollbars&&this.hscrollOn){_2-=this.getScrollbarSize()}
+_2-=(_3.top+_3.bottom);if(this.isBorderBox){}else if(this.useClipDiv){if(this.padding==null&&!this.$415){_2-=this.getVBorderPad()}else{_2-=this.getVBorderSize()}}else{_2-=this.getVBorderPad()}}
+if(_1!=null&&_1<1){this.logInfo("Specified width:"+this.getInitialWidth()+" adjusted for border, margin, "+"and scrollbars would cause initial handle size to be less than or equal to "+"zero, which is not supported. Clamping handle width to 1px.","sizing");_1=1}
+if(_2!=null&&_2<1){this.logInfo("Specified height:"+this.getInitialHeight()+" adjusted for border, margin, "+"and scrollbars would cause initial handle size to be less than or equal to "+"zero, which is not supported. Clamping handle height to 1px.","sizing");_2=1}
+var _4=this.$op;_4[0]=_1;_4[1]=_2;return _4}
+,isc.A.$qn=function isc_Canvas__getNativeFocusHandlerString(_1){var _2=this.getID();var _3=_1?null:this.$ob;if(isc.Browser.isMoz)
+return isc.SB.concat(_3,this.$or,_2,this.$ot,_3);return isc.SB.concat(_3,this.$oq,this.getID(),this.$ot,_3)}
+,isc.A.$qo=function isc_Canvas__getNativeBlurHandlerString(_1){var _2=_1?null:this.$ob;return isc.SB.concat(_2,this.$os,this.getID(),this.$ot,_2)}
+,isc.A.$sg=function isc_Canvas__getNativeFocusHandlerMethod(){if(!this.$sh){this.$sh=new Function("event",this.$qn(true))}
+return this.$sh}
+,isc.A.$si=function isc_Canvas__getNativeBlurHandlerMethod(){if(!this.$sj){this.$sj=new Function("event",this.$qo(true))}
+return this.$sj}
+,isc.A.getHandle=function isc_Canvas_getHandle(){if(isc.$cv)arguments.$cw=this;if(this.destroyed){this.logWarn("Attempt to access destroyed widget in the DOM - "+"destroy() called at invalid time (eg: mid-draw) or invalid method "+"called on destroy()d widget. Stack Trace:"+this.getStackTrace())}
+if(!(this.$pu||this.$if))return null;if(this.$q3==null){var _1=this.getCanvasName();this.$q3=this.ns.Element.get(_1);if(this.$q3==null){this.logWarn("Unable to find handle for drawn Canvas, elementId: "+_1)}}
+return this.$q3}
+,isc.A.getClipHandle=function isc_Canvas_getClipHandle(){if(!this.useClipDiv)return this.getHandle();if(!(this.$pu||this.$if))return null;if(this._clipDiv==null){var _1=this.$rv();this._clipDiv=this.ns.Element.get(_1);if(this._clipDiv==null){this.logWarn("Unable to find clipHandle for drawn Canvas, elementId: "+_1)}}
+return this._clipDiv}
+,isc.A.getScrollHandle=function isc_Canvas_getScrollHandle(){return this.getClipHandle()}
+,isc.A.$sk=function isc_Canvas__getURLHandle(){if(!this.containsIFrame())return null;var _1=this.getHandle();if(!_1)return null;_1=_1.firstChild;if(_1&&_1.tagName&&(_1.tagName.toLowerCase()=="iframe"))return _1
+return null}
+,isc.A.$sl=function isc_Canvas__getFocusProxyHandle(){if(!this._useFocusProxy||!this.$qj)return null;if(!this.$qr){var _1=this.getCanvasName()+"__focusProxy";this.$qr=this.getDocument().getElementById(_1)}
+return this.$qr}
+,isc.A.$qq=function isc_Canvas__getFocusProxyParentHandle(){if(!this._useFocusProxy)return null;if(!this.$qr)this.$qr=this.$sl();return(this.$qr!=null?this.$qr.parentNode:null)}
+,isc.A.getStyleHandle=function isc_Canvas_getStyleHandle(){if(!this.$rs){this.$rs=(this.getClipHandle()?this.getClipHandle().style:null)}
+return this.$rs}
+,isc.A.setUpEvents=function isc_Canvas_setUpEvents(){if(this.canAcceptDrop)this.ns.EH.registerDroppableItem(this)}
+,isc.A.$pt=function isc_Canvas__instantiateChildren(_1){if(!_1)_1=this.children;if(!_1)return;this.children=[];for(var i=0,_3;i<_1.length;i++){_3=_1[i];if(!_3)continue;if(!isc.isA.Canvas(_3)||_3.parentElement!=this){this.addChild(_3)}else{this.children.add(_3)}}}
+,isc.A.$sm=function isc_Canvas__lazyAutoChildCreate(_1){_1=_1.substring(this.$ou.length);var _2=this.$d1(_1);var _3=this[_2]?this:isc.isA.Canvas(this.creator)&&this.creator[_2]?this.creator:this;if(isc.isA.Canvas(_3[_1]))return _3[_1];return(_3[_1]=_3.createAutoChild(_1))}
+,isc.A.createCanvas=function isc_Canvas_createCanvas(_1){if(isc.isA.Canvas(_1))return _1;if(_1==null)return;if(isc.isA.String(_1)){if(isc.startsWith(_1,this.$ou)){return this.$sm(_1)}
+if(isc.startsWith(_1,this.$90j)){var _2=_1.substring(this.$90j.length);var _3="width";if(this.orientation==isc.Layout.VERTICAL)_3="height";var _4={autoDraw:false};_4[_3]=_2;return isc.LayoutSpacer.create(_4)}
+return window[_1]}
+var _5=_1.autoChildName;if(_5){return this[_5]=this.createAutoChild(_5,_1)}
+var _6=_1._constructor;if(_6==null||isc.ClassFactory.getClass(_6)==null){_6=isc.Canvas}
+_1._constructor=null;_1.autoDraw=false;return isc.ClassFactory.newInstance(_6,_1)}
+,isc.A.createCanvii=function isc_Canvas_createCanvii(_1){if(_1==null)return;for(var i=0;i<_1.length;i++){_1[i]=this.createCanvas(_1[i])}
+return _1}
+,isc.A.setEventProxy=function isc_Canvas_setEventProxy(_1){var _2=this.eventProxy;if(_2==_1)return;if(_2!=null){_2.$kt.remove(this);if(this.isDrawn()){if(this.getHandle()!=null)this.getHandle().eventProxy=null;if(this.getClipHandle()!=this.getHandle())this.getClipHandle().eventProxy=null}}
+this.eventProxy=_1;if(_1!=null){if(!isc.isA.Canvas(_1)){this.logWarn("setEventProxy() passed invalid eventProxy - clearing this property");this.eventProxy=null}else{if(_1.$kt==null)_1.$kt=[];_1.$kt.add(this)}}
+if(this.isDrawn())this.redraw("eventProxy updated")}
+,isc.A.clearEventProxy=function isc_Canvas_clearEventProxy(){this.setEventProxy()}
+,isc.A.addChild=function isc_Canvas_addChild(_1,_2,_3){if(isc.$cv)arguments.$cw=this;if(!_1)return null;if(_1==this){this.logWarn("Attempt to add a child to itself");return}
+if(!isc.isAn.Instance(_1))_1=this.createCanvas(_1);if(!isc.isA.Canvas(_1)){this.logWarn("addChild(): trying to install a non-canvas as a child. Returning.");return null}
+if(_1.parentElement==this)return _1;var _4=_1.isDrawn();if(_1.parentElement)_1.deparent(_2);isc.Canvas.$ro(_1);if(_1.drawContext)_1.drawContext=null;if(_1.htmlElement)_1.htmlElement=null;_1.parentElement=this;_1.topElement=(this.topElement||this);_1.$sn();if(_2)this[_2]=_1;if(!this.children)this.children=[];if(!this.children.contains(_1))this.children.add(_1);var _5=_1.masterElement;if(_5&&_5.parentElement!=this){_5.peers.remove(_1);if(_5[_2]==_1)_5[_2]=null;_1.masterElement=null}
+if(_1.peers){for(var i=0;i<_1.peers.length;i++)this.addChild(_1.peers[i])}
+if(_1.isDrawn())_1.clear();if(_4&&!this.warnAboutClear&&!isc.Page.isLoaded()){this.logWarn("Adding already drawn widget:"+_1.getID()+" to new parent:"+this.getID()+". Child has been cleared so it can be drawn inside the new "+"parent. This may be a result of autoDraw being enabled for the child.")}
+if(this.isDrawn())_1.$qw();var _7=this.ns.EH;if(_7.clickMaskUp()){var _8=_7.getAllClickMaskIDs();for(var i=_8.length-1;i>=0;i--){var _9=_7.targetIsMasked(this,_8[i]);if(!_9){_7.addUnmaskedTarget(_1,_8[i]);break}else{var _10=_7.targetIsMasked(_1,_8[i]);if(!_10)_7.maskTarget(_1,_8[i])}}}
+if(_3==false||_1.$so){_1.$so=null;return _1}
+var _11=false,_12=(_1.$sp||!_1.tabIndex);if(isc.isA&&isc.isA.Layout&&_12&&(_1.$kk()||(_1.children!=null&&_1.children.length>0)))
+{var _13=_1;while(_13.parentElement){if(isc.isA.Layout(_13.parentElement)&&_13.parentElement.isDrawn())
+{_13.parentElement.updateMemberTabIndex(_13);if(_13.parentElement==this)_11=true}
+_13=_13.parentElement}}
+if(this.isDrawn()&&!_1.masterElement){if(this.logIsDebugEnabled(this.$n3)){this.logInfo("child added to already drawn parent: "+(isc.Page.isLoaded()?"page loaded, will draw immediately":"page not loaded, will defer child drawing"),"drawing")}
+if(!_11&&_1.$kk()&&_12){var _14;if(this.children.length>1){for(var i=this.children.length-2;i>=0;i--){if(this.children[i].$kk()&&this.children[i].$sp){_14=this.children[i];break}}}
+if(_14==null&&this.$kk()&&this.$sp){_14=this}
+if(_14!=null)_1.$sq(_14)}
+_1.draw();this.adjustOverflow("addChild")}
+return _1}
+,isc.A.$sn=function isc_Canvas__updateChildrenTopElement(){if(this.dataPath)this.setDataPath(this.dataPath);var _1=this.children;if(!_1||_1.length==0)return;for(var i=0;i<_1.length;i++){var _3=_1[i];_3.topElement=this.topElement;_3.$sn()}}
+,isc.A.reparent=function isc_Canvas_reparent(_1){if(this.getID()==_1.getID())return false;if((this.parentElement==_1.parentElement)&&this.getClipHandle()&&_1.getClipHandle()&&(this.getClipHandle().parentNode==_1.getClipHandle().parentNode)){return false}
+this._adjacentHandle=_1.getClipHandle();if(_1.parentElement){_1.parentElement.addChild(this)}else{if(this.parentElement)this.deparent();else this.clear();this.draw()}
+return true}
+,isc.A.removePeer=function isc_Canvas_removePeer(_1,_2){if(_1==null)return;var _3=this.peers,_4;if(!_3||(_4=_3.indexOf(_1))==-1){this.logWarn("Attempt to remove peer: "+_1+" from Canvas that is not its master");return}
+_3.removeAt(_4);if(this[_2]==_1)this[_2]=null;_1.masterElement=null;if(_1.depeered)_1.depeered(this,_2);if(this.peerRemoved)this.peerRemoved(_1,_2)}
+,isc.A.depeer=function isc_Canvas_depeer(_1){if(!this.masterElement)return;this.masterElement.removePeer(this,_1)}
+,isc.A.removeChild=function isc_Canvas_removeChild(_1,_2){if(isc.$cv)arguments.$cw=this;if(_1==null)return;var _3=this.children,_4;if(!_3||(_4=_3.indexOf(_1))==-1){this.logWarn("Attempt to remove child: "+_1+" from Canvas that is not its parent");return}
+_3.removeAt(_4);if(this[_2]==_1)this[_2]=null;if(_1.isDrawn())_1.clear();delete _1.parentElement;delete _1.topElement;isc.Canvas.$q8(_1);if(_1.peers)_1.peers.map("deparent");if(_1.deparented)_1.deparented(this,_2);if(this.childRemoved)this.childRemoved(_1,_2)}
+,isc.A.deparent=function isc_Canvas_deparent(_1){if(!this.parentElement)return;this.parentElement.removeChild(this,_1)}
+,isc.A.addPeer=function isc_Canvas_addPeer(_1,_2,_3,_4){if(!_1)return null;if(!isc.isAn.Instance(_1))_1=this.createCanvas(_1);if(_4==true)_1.$q0=true;if(_1.masterElement==this)return null;if(_1.masterElement)_1.depeer(_2);_1.masterElement=this;if(_2)this[_2]=_1;if(!this.peers)this.peers=[];if(!this.peers.contains(_1))this.peers.add(_1);if(this.parentElement){this.parentElement.addChild(_1,_2)}else if(_1.parentElement){_1.deparent()}
+if(_1.$nt&&(_1.opacity!=this.opacity))
+_1.setOpacity(this.opacity);if(_1.$jq&&(_1.visibility!=this.visibility)){_1.setVisibility(this.visibility)}
+if(_1.snapTo||_1.snapEdge)_1.$qw();var _5=this.ns.EH;if(_5.clickMaskUp()){var _6=_5.getAllClickMaskIDs();for(var i=_6.length-1;i>=0;i--){var _8=_5.targetIsMasked(this,_6[i]);if(!_8){_5.addUnmaskedTarget(_1,_6[i]);break}else{var _9=_5.targetIsMasked(_1,_6[i]);if(!_9)_5.maskTarget(_1,_6[i])}}}
+if(_3==false)return _1;if(this.isDrawn()&&!_1.isDrawn()){_1.draw();if(_1.$q0)this.redraw()}
+return _1}
+,isc.A.setSnapTo=function isc_Canvas_setSnapTo(_1){this.snapTo=_1;this.parentResized()}
+,isc.A.getSnapTo=function isc_Canvas_getSnapTo(){return this.snapTo}
+,isc.A.setSnapEdge=function isc_Canvas_setSnapEdge(_1){this.snapEdge=_1;this.parentResized()}
+,isc.A.getSnapEdge=function isc_Canvas_getSnapEdge(){return this.snapEdge}
+,isc.A.getFieldMethod=function isc_Canvas_getFieldMethod(_1,_2,_3){if(_2=="children"){if(_3=="add")return"addChild";if(_3=="remove")return"removeChild"}
+return this.Super("getFieldMethod",arguments)}
+,isc.A.getParentElements=function isc_Canvas_getParentElements(){var _1=[],_2=this.parentElement;while(_2){_1.add(_2);_2=_2.parentElement}
+return _1}
+,isc.A.contains=function isc_Canvas_contains(_1,_2){if(!_2&&_1)_1=_1.parentElement;while(_1){if(_1==this)return true;_1=_1.parentElement}
+return false}
+,isc.A.$sr=function isc_Canvas__isVisibilityAncestorOf(_1){var _2=_1;while(_2){if(_2==this)return true;var _3=(_2.visibility==isc.Canvas.INHERIT);if(!_3)return false;_2=_2.parentElement}
+return false}
+,isc.A.getChildCount=function isc_Canvas_getChildCount(){if(this.children==null)return;return this.children.map("getChildCount").sum()+this.children.length}
+,isc.A.showClickMask=function isc_Canvas_showClickMask(_1,_2,_3){var _4=this.getID();if(!this.ns.EH.clickMaskUp(_4)){return this.ns.EH.showClickMask(_1,_2,_3,_4)}}
+,isc.A.hideClickMask=function isc_Canvas_hideClickMask(_1){if(_1==null)_1=this.getID();if(this.ns.EH.clickMaskUp(_1))this.ns.EH.hideClickMask(_1)}
+,isc.A.clickMaskUp=function isc_Canvas_clickMaskUp(_1){if(_1==null)_1=this.getID();return this.ns.EH.clickMaskUp(_1)}
+,isc.A.unmask=function isc_Canvas_unmask(_1){this.ns.EH.addUnmaskedTarget(this,_1)}
+,isc.A.mask=function isc_Canvas_mask(_1){this.ns.EH.maskTarget(this,_1)}
+,isc.A.isMasked=function isc_Canvas_isMasked(_1){return this.ns.EH.targetIsMasked(this,_1)}
+,isc.A.$qf=function isc_Canvas__isHardMasked(){var _1=isc.EH.clickMaskRegistry;if(!_1||_1.length==0)return false;for(var i=_1.length-1;i>=0;i--){var _3=_1[i];if(!this.isMasked(_3))return false;if(isc.EH.isHardMask(_3))return true}
+return false}
+,isc.A.showComponentMask=function isc_Canvas_showComponentMask(_1){if(!this.componentMask){this.componentMask=this.addAutoChild("componentMask",isc.addProperties({},_1,{disabled:true,autoDraw:false,$nt:false}),isc.Canvas);this.componentMask.setRect(this.getOffsetLeft(),this.getOffsetTop(),this.getVisibleWidth(),this.getVisibleHeight());this.addPeer(this.componentMask)}else if(!this.componentMask.isDrawn())this.componentMask.draw();this.disableKeyboardEvents(true,true)}
+,isc.A.hideComponentMask=function isc_Canvas_hideComponentMask(){if(this.componentMask)this.componentMask.clear();this.disableKeyboardEvents(false,true)}
+,isc.A.setRect=function isc_Canvas_setRect(_1,_2,_3,_4,_5){if(isc.$cv)arguments.$cw=this;if(isc.isAn.Array(_1)){_2=_1[1];_3=_1[2];_4=_1[3];_1=_1[0]}else if(_1!=null&&_1.top!=null){_2=_1.top;_3=_1.width;_4=_1.height;_1=_1.left}
+if(this.logIsDebugEnabled()){this.logDebug("setRect: "+this.echo({left:_1,top:_2,width:_3,height:_4}))}
+var _6=this.resizeTo(_3,_4,_5,true);if(_6)this.$ss=true;this.moveTo(_1,_2,_5,true);this.$ss=null;return _6}
+,isc.A.getRect=function isc_Canvas_getRect(){return[this.getLeft(),this.getTop(),this.getVisibleWidth(),this.getVisibleHeight()]}
+,isc.A.getLeft=function isc_Canvas_getLeft(){var _1=this.getStyleHandle();if(_1==null)return this.left;var _2=(isc.Browser.isIE?_1.pixelLeft:parseInt(_1.left));if(this.vscrollOn&&this.showCustomScrollbars&&this.isRTL()){return _2-this.getScrollbarSize()}
+return _2}
+,isc.A.getOffsetLeft=function isc_Canvas_getOffsetLeft(){var _1=this.getClipHandle();if(isc.Browser.isMoz&&this.$st())_1=null;if(_1==null){if(this.logIsInfoEnabled()){this.logInfo("getOffsetLeft() called before widget is drawn - unable to calculate offset "+"coordinates. Returning specified coordinates")}
+return this.left}
+var _2=isc.Element.getOffsetLeft(_1);if(this.vscrollOn&&this.showCustomScrollbars&&this.isRTL()){_2-=this.getScrollbarSize()}
+return _2}
+,isc.A.setLeft=function isc_Canvas_setLeft(_1){this.moveTo(_1,null)}
+,isc.A.getTop=function isc_Canvas_getTop(){var _1=this.getStyleHandle();if(_1==null)return this.top;var _2=(isc.Browser.isIE?_1.pixelTop:parseInt(_1.top));return _2}
+,isc.A.getOffsetTop=function isc_Canvas_getOffsetTop(){var _1=this.getClipHandle();if(isc.Browser.isMoz&&this.$st())_1=null;if(_1==null)return this.top;var _2=isc.Element.getOffsetTop(_1);return _2}
+,isc.A.setTop=function isc_Canvas_setTop(_1){this.moveTo(null,_1)}
+,isc.A.getWidth=function isc_Canvas_getWidth(){return this.width}
+,isc.A.setWidth=function isc_Canvas_setWidth(_1){this.resizeTo(_1)}
+,isc.A.getHeight=function isc_Canvas_getHeight(){return this.$o8}
+,isc.A.setHeight=function isc_Canvas_setHeight(_1){this.resizeTo(null,_1)}
+,isc.A.getMinWidth=function isc_Canvas_getMinWidth(){return this.minWidth}
+,isc.A.getMinHeight=function isc_Canvas_getMinHeight(){return this.minHeight}
+,isc.A.getMaxWidth=function isc_Canvas_getMaxWidth(){return this.maxWidth}
+,isc.A.getMaxHeight=function isc_Canvas_getMaxHeight(){return this.maxHeight}
+,isc.A.getRight=function isc_Canvas_getRight(){return this.getLeft()+this.getVisibleWidth()}
+,isc.A.setRight=function isc_Canvas_setRight(_1){if(isc.isA.Number(_1)){this.resizeTo(_1-this.getLeft(),null)}else{this.logWarn("setRight() expects an integer value")}}
+,isc.A.getBottom=function isc_Canvas_getBottom(){return this.getTop()+this.getVisibleHeight()}
+,isc.A.setBottom=function isc_Canvas_setBottom(_1){if(isc.isA.Number(_1)){this.resizeTo(null,_1-this.getTop())}else{this.logWarn("setBottom() expects an integer value")}}
+,isc.A.enforceScrollSize=function isc_Canvas_enforceScrollSize(_1,_2){if(this.logIsDebugEnabled(this.$ox)){this.logDebug("enforcing scroll size:"+[_1,_2],"enforceScrollSize")}
+if(!this.$pu&&!this.$if)return;if(_1==null)_1=0;if(_2==null)_2=0;if(isNaN(_1)||isNaN(_2)||_1<0||_2<0){this.logWarn("Invalid width or height in Canvas.enforceScrollSize()"+" on component: "+this.getID()+" with sizes: "+[_1,_2]+this.getStackTrace());return}
+if(this.$re==null){var _3=this.$ov;var _4=this.$qs(this.$ow);_3[1]=_4;_3[3]=_1-1;_3[5]=_2-1;var _5=_3.join(isc.emptyString);this.$re=isc.Element.insertAdjacentHTML(this.getHandle(),this.$n8,_5,true);if(this.$re==null){this.$re=document.getElementById(_4)}}else if(!this.$qe||this.$qe[0]!=_1||this.$qe[1]!=_2)
+{this.$re.style.left=(_1-1)+isc.px;this.$re.style.top=(_2-1)+isc.px}
+this.$qe=[_1,_2]}
+,isc.A.stopEnforcingScrollSize=function isc_Canvas_stopEnforcingScrollSize(){if(this.logIsDebugEnabled(this.$ox)){this.logDebug("stop enforcing scroll size","enforceScrollSize")}
+delete this.$qe;if(!this.isDrawn())return;if(this.$re){this.$re.style.left=this.$oy;this.$re.style.top=this.$oy}}
+,isc.A.getScrollWidth=function isc_Canvas_getScrollWidth(_1){if(isc.$cv)arguments.$cw=this;if(this.$qz){this.$qz=null;this.adjustOverflow("widthCheckWhileDeferred")}
+if(!_1&&this.$su!=null)return this.$su;var _2=0,_3=this.getClipHandle();if(_3==null){this.logDebug("No size info available from DOM, returning user-specified size");return this.getInnerWidth()}
+if(this.allowNativeContentPositioning){this.$sv=true;if(isc.Browser.isSafari||(isc.Browser.isMoz&&((_3.scrollWidth||_3.offsetWidth)<=parseInt(_3.style.width))))
+{_2=isc.Element.getScrollWidth(this.getHandle())}else{_2=isc.Element.getScrollWidth(_3)}
+delete this.$sv}else{var _4=this.children,_5=_4&&_4.length>0,_6=0;if(!_5||this.allowContentAndChildren){if(isc.Browser.isSafari&&this.overflow==isc.Canvas.VISIBLE){_2=this.getHandle().scrollWidth;if(this.useClipDiv&&this.padding==null){_2+=isc.Element.$sw(this.styleName)}}else{_6=(_3.scrollWidth||_3.offsetWidth);if(_6!=null&&_6!=this.$n1){_2=_6;if(isc.Browser.isOpera){_2-=(this.getLeftBorderSize()+this.getLeftPadding())}
+if(isc.Browser.isMoz)_2-=this.$sx();if(isc.Browser.isMoz&&this.getScrollingMechanism()==isc.Canvas.NESTED_DIV)
+{var _7=this.getHandle().offsetLeft;if(_7<0)_7=-_7;_2-=_7}}
+if(isc.Browser.isSafari||(isc.Browser.isMoz&&_2<=parseInt(_3.style.width)))
+{var _8=this.getHandle(),_9=_8.scrollWidth||_8.offsetWidth;if(_9>_2)_2=_9}}}
+if(_5){var _10=this.$sy(this.children);_2=Math.max(_10,_2);if(this.$qe!=null){var _11=this.$qe[0];_2=Math.max(_2,_11)}}}
+this.$su=_2;return _2}
+,isc.A.$sy=function isc_Canvas__getWidthSpan(_1,_2){var _3=0,_4=0,_5=this.overflow==isc.Canvas.VISIBLE||this.overflow==isc.Canvas.CLIP_H,_6;for(var i=0;i<_1.length;i++){var _8=_1[i];if(!_8.isDrawn()&&!_8.$59d)continue;if(_2&&_8.visibility==isc.Canvas.HIDDEN)continue;var _9=(_8.position!=isc.Canvas.RELATIVE),_10=_8.getVisibleWidth(),_11=(_9?_8.getLeft():_8.getOffsetLeft());if(!_5&&_9)_10-=_8.getRightMargin();if(_11+_10>_4){_4=_11+_10;_6=_8}
+if(_11<_3)_3=this.isRTL()?_11:Math.max(0,_11)}
+return _4-_3}
+,isc.A.getScrollHeight=function isc_Canvas_getScrollHeight(_1){if(isc.$cv)arguments.$cw=this;if(this.$qz){this.$qz=null;this.adjustOverflow("heightCheckWhileDeferred")}
+if(!_1&&this.$sz!=null)return this.$sz;var _2=0,_3=this.getClipHandle();if(_3==null){this.logDebug("No size info available from DOM, returning user-specified size");return this.getInnerHeight()}
+if(this.allowNativeContentPositioning){this.$s0=true;if(isc.Browser.isSafari||(isc.Browser.isMoz&&((_3.scrollHeight||_3.offsetHeight)<=parseInt(_3.style.height))))
+{_2=isc.Element.getScrollHeight(this.getHandle())}else{_2=isc.Element.getScrollHeight(_3)}
+delete this.$s0}else{var _4=(this.children&&this.children.length>0);if(!_4||this.allowContentAndChildren){if(isc.Browser.isSafari&&this.overflow==isc.Canvas.VISIBLE){_2=this.getHandle().scrollHeight;if(this.useClipDiv&&this.padding==null){_2+=isc.Element.$s1(this.styleName)}}else{var _5=(_3.scrollHeight||_3.offsetHeight);if(_5!=null&&_5!=this.$n1){_2=_5;if(isc.Browser.isMoz)_2-=this.$s2();if(this.useClipDiv&&(isc.Browser.isSafari||(isc.Browser.isMoz&&_2<=parseInt(_3.style.height))))
+{var _6=this.getHandle(),_7=_6.scrollHeight||_6.offsetHeight;if(_7>_2)_2=_7}}}}
+if(_4){var _8=this.$s3(this.children);if(_8>_2){_2=_8}
+if(this.$qe!=null){var _9=this.$qe[1];_2=Math.max(_2,_9)}}}
+this.$sz=_2;return _2}
+,isc.A.$s2=function isc_Canvas__offscreenChildrenHeight(){if(!isc.isAn.Array(this.children))return 0;var _1=0;for(var i=0;i<this.children.length;i++){var _3=this.children[i],_4=(_3.position==isc.Canvas.ABSOLUTE?_3.getTop():_3.getOffsetTop());if(_4<_1)_1=_4}
+return-_1}
+);isc.evalBoundary;isc.B.push(isc.A.$sx=function isc_Canvas__offscreenChildrenWidth(){if(!isc.isAn.Array(this.children))return 0;if(!this.useClipDiv)return 0;var _1=0;for(var i=0;i<this.children.length;i++){var _3=this.children[i],_4=(_3.position==isc.Canvas.ABSOLUTE?_3.getLeft():_3.getOffsetLeft());if(_4<_1)_1=_4}
+return-_1}
+,isc.A.$s3=function isc_Canvas__getHeightSpan(_1,_2){var _3=0,_4=0,_5=this.overflow==isc.Canvas.VISIBLE||this.overflow==isc.Canvas.CLIP_H;for(var i=0;i<_1.length;i++){var _7=_1[i];if(!_7.isDrawn()&&!_7.$59d)continue;if(_2&&_7.visibility==isc.Canvas.HIDDEN)continue;var _8=_7.position!=isc.Canvas.RELATIVE,_9=_7.getVisibleHeight(),_10=(_8?_7.getTop():_7.getOffsetTop());if(!_5&&_8)_9-=_7.getBottomMargin();if(_9+_10>_4)_4=_9+_10;if(_10<_3)_3=Math.max(0,_10)}
+return _4-_3}
+,isc.A.getScrollLeft=function isc_Canvas_getScrollLeft(){if(!this.isDrawn()||this.getScrollingMechanism()!=isc.Canvas.NATIVE){return this.scrollLeft}
+return this.getScrollHandle().scrollLeft}
+,isc.A.getScrollTop=function isc_Canvas_getScrollTop(){if(!this.isDrawn()||this.getScrollingMechanism()!=isc.Canvas.NATIVE){return this.scrollTop}
+return this.getScrollHandle().scrollTop}
+,isc.A.setPageLeft=function isc_Canvas_setPageLeft(_1){this.moveBy(_1-this.getPageLeft(),0)}
+,isc.A.setPageTop=function isc_Canvas_setPageTop(_1){this.moveBy(0,_1-this.getPageTop())}
+,isc.A.getParentPageRect=function isc_Canvas_getParentPageRect(){if(this.parentElement){var _1=this.parentElement,_2=_1.getPageRect();var _3=_1.getLeftMargin(),_4=_1.getTopMargin();_2[0]+=_3;_2[1]+=_4;_2[2]-=(_3+_1.getRightMargin());_2[3]-=(_4+_1.getBottomMargin());if(this.peers&&this.peers.length>0){var _5=this.getPeerRect(),_6=this.getPageRect();_2[0]+=(_6[0]-_5[0]);_2[1]+=(_6[1]-_5[1]);_2[2]-=(_5[2]-_6[2]);_2[3]-=(_5[3]-_6[3])}
+var _7=_1.$tj();_2[0]+=_7.left;_2[1]+=_7.top;_2[2]-=_7.right+_7.left;_2[3]-=_7.bottom+_7.top;var _8=_1.getScrollbarSize();if(_1.vscrollOn)_2[2]-=_8;if(_1.hscrollOn)_2[3]-=_8;return _2}
+else return[0,0,isc.Page.getWidth(),isc.Page.getHeight()]}
+,isc.A.setPageRect=function isc_Canvas_setPageRect(_1,_2,_3,_4,_5){if(isc.isAn.Array(_1)){_2=_1[1];_3=_1[2];_4=_1[3];_1=_1[0]}
+if(this.keepInParentRect&&this.ns.EH.dragging&&this==this.ns.EH.dragMoveTarget){var _6=(_3==null&&_4==null);if(_3==null)_3=this.getVisibleWidth();if(_4==null)_4=this.getVisibleHeight();var _7=_1+_3,_8=_2+_4,_9;var _10=isc.isAn.Array(this.keepInParentRect);if(_10){_9=this.keepInParentRect}else{_9=this.getParentPageRect()}
+var _11=_9[0],_12=_9[1],_13=_9[2],_14=_9[3],_15=_11+_13,_16=_12+_14;var _17=this.ns.EH,_18=_17.getDragTarget(_17.getLastEvent()).parentElement;if(_18){var _19=_18.getScrollLeft(),_20=_18.getScrollWidth()-
+_18.getViewportWidth()-_19,_21=_18.getScrollTop(),_22=_18.getScrollHeight()-
+_18.getViewportHeight()-_21}else{var _19=isc.Page.getScrollLeft(),_20=isc.Page.getScrollWidth()-
+isc.Page.getWidth()-_19,_21=isc.Page.getScrollTop(),_22=isc.Page.getScrollHeight()-
+isc.Page.getHeight()-_21}
+if(_20<0)_20=0;if(_22<0)_22=0;if(_6){if(_1<_11-_19){_1=_11-_19}
+else if(_7>_15+_20){_1=_15+_20-_3}
+if(_2<_12-_21){_2=_12-_21}
+else if(_8>_16+_22){_2=_16+_22-_4}}else{if(_1<_11){_3=_3-(_11-_1);_1=_11}else if(_7>_15){_3=_3-(_7-_15)}
+if(_2<_12){_4=_4-(_12-_2);_2=_12}else if(_8>_16){_4=_4-(_8-_16)}}}
+this.moveBy(_1-this.getPageLeft(),_2-this.getPageTop());if(_5){var _23=this.getVisibleWidth(),_24=this.getVisibleHeight(),_25=_23-_3,_26=_24-_4;this.resizeTo(_3,_4);this.redrawIfDirty("setPageRect");var _27=(_23-this.getVisibleWidth()),_28=(_24-this.getVisibleHeight());if(_1>this.getPageLeft())_1-=(_25-_27);if(_2>this.getPageTop())_2-=(_26-_28)}else{this.resizeTo(_3,_4)}}
+,isc.A.getCanvasLeft=function isc_Canvas_getCanvasLeft(_1){if(_1!=null){if(!_1.contains(this,false)){this.logWarn("getCanvasTop passed ancestor:"+_1+". This is not an ancestor of this component - ignoring");_1=this.parentElement}}else{_1=this.parentElement}
+if(!this.isDrawn()||(isc.Browser.isMoz&&this.$st()))
+{if(!this.isDrawn()&&this.position==isc.Canvas.RELATIVE){this.logWarn("getCanvasLeft(): Called on undrawn relatively-position widget '"+this.getID()+"'. The drawn coordinates can not be reliably "+"calculated until the widget has drawn - returning estimated position")}
+var _2=this.left,_3=this.parentElement;while(_1!=_3){_2+=_3.left;_3=_3.parentElement}
+return _2}
+var _4=this.getLeftOffset(_1);return _4}
+,isc.A.getPageLeft=function isc_Canvas_getPageLeft(){if(isc.$cv)arguments.$cw=this;var _1=this.getClipHandle();if(_1&&isc.Browser.isMoz&&this.$st())_1=null;if(_1==null){if(!this.isDrawn()&&this.position==isc.Canvas.RELATIVE){this.logWarn("getPageLeft(): Called on undrawn relatively-position widget '"+this.getID()+"'. The page level coordinates can not be reliably "+"calculated until the widget has drawn - returning estimated position")}
+var _2=this.parentElement;if(_2){var _3=0;if(_2.hscrollOn){if(!this.isRTL())_3=_2.getScrollLeft();else{var _4=_2.getScrollWidth()-_2.getViewportWidth();_3=-1*(_4-_2.getScrollLeft())}}
+return this.getOffsetLeft()+_2.getLeftBorderSize()+_2.getLeftMargin()+_2.getPageLeft()-_3}else{return this.getOffsetLeft()}}
+if(this.useClientRectAPI&&_1.getBoundingClientRect!=null){var _5=_1.getBoundingClientRect().left;_5-=this.getLeftMargin();_5+=isc.Page.getScrollLeft();return _5}
+return this.getLeftOffset()}
+,isc.A.getLeftOffset=function isc_Canvas_getLeftOffset(_1){var _2=this.ns.Element.getOffset(isc.Canvas.LEFT,this,_1,this.isRTL(),true);return _2}
+,isc.A.getCanvasTop=function isc_Canvas_getCanvasTop(_1){if(_1!=null){if(!_1.contains(this,false)){this.logWarn("getCanvasTop passed ancestor:"+_1+". This is not an ancestor of this component - ignoring");_1=this.parentElement}}else{_1=this.parentElement}
+if(!this.isDrawn()||(isc.Browser.isMoz&&this.$st()))
+{if(!this.isDrawn()&&this.position==isc.Canvas.RELATIVE){this.logWarn("getCanvasTop(): Called on undrawn relatively-position widget '"+this.getID()+"'. The drawn coordinates can not be reliably "+"calculated until the widget has drawn - returning estimated position")}
+var _2=this.top,_3=this.parentElement;while(_1!=_3){_2+=_3.top;_3=_3.parentElement}
+return _2}
+var _4=this.getTopOffset(_1);return _4}
+,isc.A.getPageTop=function isc_Canvas_getPageTop(){var _1=this.getClipHandle();if(_1&&isc.Browser.isMoz&&this.$st())_1=null;if(_1==null){if(!this.isDrawn()&&this.position==isc.Canvas.RELATIVE){this.logWarn("getPageTop(): Called on undrawn relatively-positioned widget '"+this.getID()+"'. The page level coordinates can not be reliably "+"calculated until the widget has drawn - returning estimated position")}
+var _2=this.parentElement;if(_2){return this.getOffsetTop()+_2.getTopBorderSize()+_2.getTopMargin()+_2.getPageTop()-_2.getScrollTop()}else{return this.getOffsetTop()}}
+if(this.useClientRectAPI&&_1.getBoundingClientRect!=null){var _3=_1.getBoundingClientRect().top;_3-=this.getTopMargin();_3+=isc.Page.getScrollTop();return _3}
+return this.getTopOffset()}
+,isc.A.getTopOffset=function isc_Canvas_getTopOffset(_1){var _2=this.ns.Element.getOffset(isc.Canvas.TOP,this,_1,null,true);return _2}
+,isc.A.getPageRight=function isc_Canvas_getPageRight(){return this.getPageLeft()+this.getVisibleWidth()}
+,isc.A.getPageBottom=function isc_Canvas_getPageBottom(){return this.getPageTop()+this.getVisibleHeight()}
+,isc.A.getPageRect=function isc_Canvas_getPageRect(){return[this.getPageLeft(),this.getPageTop(),this.getVisibleWidth(),this.getVisibleHeight()]}
+,isc.A.usingCSSScrollbars=function isc_Canvas_usingCSSScrollbars(){return!this.showCustomScrollbars&&(this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL)}
+,isc.A.getScrollingMechanism=function isc_Canvas_getScrollingMechanism(){if(!this.$s6){if(!this.showCustomScrollbars&&(this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL))
+{this.$s6=isc.Canvas.NATIVE}else{if((isc.Browser.isSafari&&isc.Browser.SafariVersion<125)||(isc.Browser.isMoz&&isc.Browser.isUnix&&isc.Browser.geckoVersion<=20031007))
+{this.$s6=isc.Canvas.NESTED_DIV}else{this.$s6=isc.Canvas.NATIVE}}}
+return this.$s6}
+,isc.A.setMargin=function isc_Canvas_setMargin(_1){this.$s7=null;this.$s8=null;if(_1==null){delete this.margin}else{var _2=_1;if(isc.isA.String(_1))_1=parseInt(_1);if(!isc.isA.Number(_1)){this.logWarn("setMargin() passed invalid margin:"+_2+", ignoring.");return}
+this.margin=_1}
+var _3=this.getStyleHandle();if(!_3)return;this.$883();this.adjustOverflow("setMargin");this.innerSizeChanged("Margin thickness changed")}
+,isc.A.$883=function isc_Canvas__applyFullMargins(){var _1=this.getClipHandle();if(!_1)return;if(!this.$sb()&&this.$sc==null){_1.style.marginTop="";_1.style.marginBottom="";_1.style.marginLeft="";_1.style.marginRight="";if(this.margin==null)_1.style.margin=0;else _1.style.margin=this.margin+isc.px;return}
+var _2=this.$sd();_1.style.marginTop=_2.top+isc.px;_1.style.marginLeft=_2.left+isc.px;_1.style.marginBottom=_2.bottom+isc.px;_1.style.marginRight=_2.right+isc.px}
+,isc.A.getMargin=function isc_Canvas_getMargin(){return this.margin}
+,isc.A.getTopMargin=function isc_Canvas_getTopMargin(){return this.$sd().top}
+,isc.A.getLeftMargin=function isc_Canvas_getLeftMargin(){return this.$sd().left}
+,isc.A.getBottomMargin=function isc_Canvas_getBottomMargin(){return this.$sd().bottom}
+,isc.A.getRightMargin=function isc_Canvas_getRightMargin(){return this.$sd().right}
+,isc.A.$88x=function isc_Canvas__removeDestroyedPeers(_1,_2){var _3=[];for(var i=0;i<_1.length;i++){if(_1[i].destroyed){_3[_3.length]={peer:_1[i],side:_2};_1[i]=null}}
+_1.removeEmpty();return _3}
+,isc.A.$sd=function isc_Canvas__calculateMargins(){var _1=this.$sc,_2=(_1!=null),_3,_4,_5,_6;if(_2){_3=_1.top;_6=_1.bottom;_4=_1.left;_5=_1.right;var _7=[];if(_3!=null)_7.addList(this.$88x(_3,"top"));if(_6!=null)_7.addList(this.$88x(_6,"bottom"));if(_4!=null)_7.addList(this.$88x(_4,"left"));if(_5!=null)_5.addList(this.$88x(_5,"right"));if(_7.length>0){for(var i=0;i<_7.length;i++){this.$wj(_7[i].peer,_7[i].side)}}
+if((_3==null||_3.length==0)&&(_6==null||_6.length==0)&&(_4==null||_4.length==0)&&(_5==null||_5.length==0))_2=false}
+if(!this.$sb()&&!_2)return this.$s9();var _9=this.$s8;if(_9)return _9;var _10=this.$ta();_9={left:_10.left,right:_10.right,top:_10.top,bottom:_10.bottom};if(_2){if(_3){for(var i=0;i<_3.length;i++){var _11=_3[i];_9.top+=_11.getVisibleHeight();if(_11.$55s!=null){_9.top-=_11.$55s}}}
+if(_6){for(var i=0;i<_6.length;i++){var _12=_6[i];_9.bottom+=_12.getVisibleHeight();if(_12.$55s!=null){_9.bottom-=_12.$55s}}}
+if(_4){for(var i=0;i<_4.length;i++){var _13=_4[i];_9.left+=_13.getVisibleWidth();if(_13.$55s!=null){_9.left-=_13.$55s}}}
+if(_5){for(var i=0;i<_5.length;i++){var _14=_5[i];_9.right+=_14.getVisibleWidth();if(_14.$55s!=null){_9.right-=_14.$55s}}}}
+if(this.$sb()){var _15=this.$pq();_9.left+=_15.$tb,_9.right+=_15.$tc,_9.top+=_15.$td,_9.bottom+=_15.$te}
+return(this.$s8=_9)}
+,isc.A.$ta=function isc_Canvas__getSpecifiedMargins(){var _1=this.$if;this.$if=false;var _2=this.$s9();this.$if=_1;return _2}
+,isc.A.$s9=function isc_Canvas__calculateNormalMargins(){if(this.$s7!=null)return this.$s7;var _1={},_2=isc.px;if(!this.isDrawn()){var _3=this.margin;if(isc.isA.String(_3)){if(isc.endsWith(_3,_2)||parseInt(_3)+isc.emptyString==_3)
+_3=parseInt(_3)}
+if(isc.isA.Number(_3)){_1.top=_3;_1.bottom=_3;_1.left=_3;_1.right=_3;this.$s7=_1;return _1}}else{var _4=this.getStyleHandle(),_5=_4.marginLeft,_6=_4.marginRight,_7=_4.marginTop,_8=_4.marginBottom;if(isc.isA.String(_5)&&isc.endsWith(_5,_2))
+_5=parseInt(_5);if(isc.isA.String(_6)&&isc.endsWith(_6,_2))
+_6=parseInt(_6)
+if(isc.isA.String(_7)&&isc.endsWith(_7,_2))
+_7=parseInt(_7);if(isc.isA.String(_8)&&isc.endsWith(_8,_2))
+_8=parseInt(_8)
+if(isc.isA.Number(_5))_1.left=_5;if(isc.isA.Number(_6))_1.right=_6;if(isc.isA.Number(_7))_1.top=_7;if(isc.isA.Number(_8))_1.bottom=_8}
+if(this.className){if(!isc.isA.Number(_1.left))
+_1.left=isc.Element.$tf(this.className);if(!isc.isA.Number(_1.right))
+_1.right=isc.Element.$tg(this.className);if(!isc.isA.Number(_1.top))
+_1.top=isc.Element.$th(this.className);if(!isc.isA.Number(_1.bottom))
+_1.bottom=isc.Element.$ti(this.className)}else{if(!isc.isA.Number(_1.left))
+_1.left=0;if(!isc.isA.Number(_1.right))
+_1.right=0;if(!isc.isA.Number(_1.top))
+_1.top=0;if(!isc.isA.Number(_1.bottom))
+_1.bottom=0}
+return(this.$s7=_1)}
+,isc.A.getTopBorderSize=function isc_Canvas_getTopBorderSize(){return this.$tj().top}
+,isc.A.getBottomBorderSize=function isc_Canvas_getBottomBorderSize(){return this.$tj().bottom}
+,isc.A.getLeftBorderSize=function isc_Canvas_getLeftBorderSize(){return this.$tj().left}
+,isc.A.getRightBorderSize=function isc_Canvas_getRightBorderSize(){return this.$tj().right}
+,isc.A.getHBorderSize=function isc_Canvas_getHBorderSize(){return(this.getLeftBorderSize()+this.getRightBorderSize())}
+,isc.A.getVBorderSize=function isc_Canvas_getVBorderSize(){return this.getTopBorderSize()+this.getBottomBorderSize()}
+,isc.A.$tj=function isc_Canvas__calculateBorderSize(){if(this.$tk!=null)return this.$tk;var _1={},_2=isc.px;if(!this.isDrawn()){var _3=this.border;if(_3!=null&&isc.contains(_3,_2)){var _4=_3.match(/\s*\d+px/g);if(isc.isAn.Array(_4))_4=parseInt(_4[0]);else _4=parseInt(_4);if(isc.isA.Number(_4)){this.$tk={left:_4,right:_4,top:_4,bottom:_4}
+return this.$tk}}}else{var _5=this.getStyleHandle(),_6=_5.borderLeftWidth,_7=_5.borderRightWidth,_8=_5.borderTopWidth,_9=_5.borderBottomWidth;if(isc.isA.String(_6)&&isc.endsWith(_6,_2))
+_6=parseInt(_6);if(isc.isA.String(_7)&&isc.endsWith(_7,_2))
+_7=parseInt(_7)
+if(isc.isA.String(_8)&&isc.endsWith(_8,_2))
+_8=parseInt(_8);if(isc.isA.String(_9)&&isc.endsWith(_9,_2))
+_9=parseInt(_9)
+if(isc.isA.Number(_6))_1.left=_6;if(isc.isA.Number(_7))_1.right=_7;if(isc.isA.Number(_8))_1.top=_8;if(isc.isA.Number(_9))_1.bottom=_9}
+if(this.className){if(!isc.isA.Number(_1.left))
+_1.left=isc.Element.$tl(this.className);if(!isc.isA.Number(_1.right))
+_1.right=isc.Element.$tm(this.className);if(!isc.isA.Number(_1.top))
+_1.top=isc.Element.$tn(this.className);if(!isc.isA.Number(_1.bottom))
+_1.bottom=isc.Element.$to(this.className)}else{if(!isc.isA.Number(_1.left))
+_1.left=0;if(!isc.isA.Number(_1.right))
+_1.right=0;if(!isc.isA.Number(_1.top))
+_1.top=0;if(!isc.isA.Number(_1.bottom))
+_1.bottom=0}
+return(this.$tk=_1)}
+,isc.A.setTopPadding=function isc_Canvas_setTopPadding(_1){this.$tp=null;this.topPadding=_1;if(isc.isA.Number(_1))_1+="px";if(this.isDrawn())this.getHandle().paddingTop=_1}
+,isc.A.setLeftPadding=function isc_Canvas_setLeftPadding(_1){this.$tp=null;this.leftPadding=_1;if(isc.isA.Number(_1))_1+="px";if(this.isDrawn())this.getHandle().paddingLeft=_1}
+,isc.A.setRightPadding=function isc_Canvas_setRightPadding(_1){this.$tp=null;this.rightPadding=_1;if(isc.isA.Number(_1))_1+="px";if(this.isDrawn())this.getHandle().paddingRight=_1}
+,isc.A.setBottomPadding=function isc_Canvas_setBottomPadding(_1){this.$tp=null;this.bottomPadding=_1;if(isc.isA.Number(_1))_1+="px";if(this.isDrawn())this.getHandle().paddingBottom=_1}
+,isc.A.setPadding=function isc_Canvas_setPadding(_1){this.$tp=null;if(_1!=null){var _2=_1;if(isc.isA.String(_1))_1=parseInt(_1);if(!isc.isA.Number(_1)){this.logWarn("setPadding passed unrecognized value:"+_2+" - ignoring");return}}
+this.padding=_1;var _3=isc.Browser.isDOM?this.getHandle():null;if(!_3){return}
+if(_1==null){_3.style.padding=null;if(this.useClipDiv)this.getClipHandle().style.padding=null}else{_3.style.padding=this.padding+isc.px;if(this.useClipDiv)this.getClipHandle().style.padding=this.$65h}}
+,isc.A.getPadding=function isc_Canvas_getPadding(){return this.padding}
+,isc.A.getTopPadding=function isc_Canvas_getTopPadding(){return this.$tq().top}
+,isc.A.getBottomPadding=function isc_Canvas_getBottomPadding(){return this.$tq().bottom}
+,isc.A.getLeftPadding=function isc_Canvas_getLeftPadding(){return this.$tq().left}
+,isc.A.getRightPadding=function isc_Canvas_getRightPadding(){return this.$tq().right}
+,isc.A.getVPadding=function isc_Canvas_getVPadding(){return this.getTopPadding()+this.getBottomPadding()}
+,isc.A.getHPadding=function isc_Canvas_getHPadding(){return this.getLeftPadding()+this.getRightPadding()}
+,isc.A.$tq=function isc_Canvas__calculatePadding(){if(this.$tp!=null)return this.$tp;var _1={},_2=isc.px;if(this.isDrawn()&&this.getHandle()!=null){var _3=this.getHandle().style;if(_3.paddingTop!=null&&!isc.isAn.emptyString(_3.paddingTop)&&isc.endsWith(_3.paddingTop,_2)){_1.top=parseInt(_3.paddingTop)}
+if(_3.paddingBottom!=null&&!isc.isAn.emptyString(_3.paddingBottom)&&isc.endsWith(_3.paddingBottom,_2)){_1.bottom=parseInt(_3.paddingBottom)}
+if(_3.paddingLeft!=null&&!isc.isAn.emptyString(_3.paddingLeft)&&isc.endsWith(_3.paddingLeft,_2)){_1.left=parseInt(_3.paddingLeft)}
+if(_3.paddingRight!=null&&!isc.isAn.emptyString(_3.paddingRight)&&isc.endsWith(_3.paddingRight,_2)){_1.right=parseInt(_3.paddingRight)}}else{if(this.topPadding!=null)_1.top=this.topPadding;if(this.leftPadding!=null)_1.left=this.leftPadding;if(this.rightPadding!=null)_1.right=this.rightPadding;if(this.bottomPadding!=null)_1.bottom=this.bottomPadding;if(this.padding!=null){var _4=parseInt(this.padding);if(_1.left==null)_1.left=_4;if(_1.top==null)_1.top=_4;if(_1.bottom==null)_1.bottom=_4;if(_1.right==null)_1.right=_4}}
+if(this.className){if(!isc.isA.Number(_1.left))_1.left=isc.Element.$tr(this.className);if(!isc.isA.Number(_1.right))_1.right=isc.Element.$ts(this.className);if(!isc.isA.Number(_1.top))_1.top=isc.Element.$tt(this.className);if(!isc.isA.Number(_1.bottom))_1.bottom=isc.Element.$tu(this.className)}else{if(!isc.isA.Number(_1.left))_1.left=0;if(!isc.isA.Number(_1.right))_1.right=0;if(!isc.isA.Number(_1.top))_1.top=0;if(!isc.isA.Number(_1.bottom))_1.bottom=0}
+return(this.$tp=_1)}
+,isc.A.containsPoint=function isc_Canvas_containsPoint(_1,_2,_3){if(isc.$cv)arguments.$cw=this;if(!this.isVisible()||!this.isDrawn())return false;if(_3==null)_3=false;var _4=this.getPageLeft()+this.getLeftMargin();if(_1<_4)return false;var _5=this.getPageTop()+this.getTopMargin();if(_2<_5)return false;var _6=_3?this.getViewportWidth():(this.getVisibleWidth()-this.getHMarginSize());if(_1>_4+_6)return false;var _7=_3?this.getViewportHeight():(this.getVisibleHeight()-this.getVMarginSize());if(_2>_5+_7)return false;var _8=0,_9=0;var _10=this.$tv=this.$tv||[];_10.length=1;_10[0]=this;var i=1,_12=this;while(_12.parentElement!=null){_12=_12.parentElement
+_10[i]=_12;i++}
+var _13,_14;for(var j=_10.length-1;j>=0;j--){var _16=_10[j];_8+=_16.getCanvasLeft();_9+=_16.getCanvasTop();if(j+1<_10.length){var _17=_10[j+1];_8-=_17.getScrollLeft();_9-=_17.getScrollTop()}
+_8+=_16.getLeftMargin();_9+=_16.getTopMargin();if(_16==this&&!_3){_13=_16.getVisibleWidth()-_16.getHMarginSize();_14=_16.getVisibleHeight()-_16.getVMarginSize()}else{_8+=_16.getLeftBorderSize();_9+=_16.getTopBorderSize();_13=_16.getViewportWidth();_14=_16.getViewportHeight()}
+if(!((_1>=_8)&&(_1<=_8+_13)&&(_2>=_9)&&(_2<=_9+_14)))
+{return false}}
+return true}
+,isc.A.visibleAtPoint=function isc_Canvas_visibleAtPoint(_1,_2,_3,_4,_5){if(isc.$cv)arguments.$cw=this;if(!this.containsPoint(_1,_2,_3)){return false}
+if(!isc.isAn.Array(_4))_4=[_4];var _6=this;while(_6!=null&&_6!=_5){var _7=(_6.parentElement!=null?_6.parentElement.children:isc.Canvas.$tw);for(var i=0;i<_7.length;i++){var _9=_7[i];if(_9==null||_9==_6||!_9.isDrawn()||!_9.isVisible()||_4.contains(_9)||_9.isMouseTransparent||(_9.getZIndex()<_6.getZIndex()))
+{continue}
+if(_9.$jr)continue;if(isc.isA.Scrollbar(_9)||isc.isA.ScrollThumb(_9))continue;if(isc.EdgedCanvas&&isc.isA.EdgedCanvas(_9)&&_9.masterElement&&_9.masterElement.$l0==_9)continue;if(isc.Layout&&isc.isA.Layout(_9.parentElement)&&_9.parentElement.hasMember(_9)&&_9.parentElement.hasMember(_6))
+{continue}
+if(isc.TabSet&&isc.isA.TabBar(_9)&&isc.isA.TabSet(_9.parentElement)&&_9.parentElement.paneContainer&&_9.parentElement.paneContainer.contains(this))
+{continue}
+if(_9.containsPoint(_1,_2,false)){return false}}
+_6=_6.parentElement}
+return true}
+,isc.A.scrollIntoView=function isc_Canvas_scrollIntoView(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10){if(_3==null)_3=0;if(_4==null)_4=0;if(_10==null){_10=this}
+var _11=true;var _12,_13;if(this.overflow!=isc.Canvas.VISIBLE&&this.overflow!=isc.Canvas.IGNORE){if(_1!=null){var _14=this.getScrollLeft(),_15=this.getViewportWidth(),_16=_14+_15,_17=false,_18=false;if(_1+_3>_16){_17=true}
+if(_1<_14){_18=true}
+if(_17!=_18||_9){if(_5==this.$oz){_12=_1}else if(_5==this.$o1){_12=(_1+_3)-this.getViewportWidth()}else{_12=(_1+parseInt(_3/ 2))
+-parseInt(this.getViewportWidth()/2)}}}
+if(_2!=null){var _19=this.getScrollTop(),_20=_19+this.getViewportHeight(),_21=false,_22=false;if(_2+_4>_20)_22=true;if(_2<_19)_21=true;if(_21!=_22||_9){if(_6==this.$o0){_13=_2}else if(_6==this.$o2){_13=(_2+_4)-this.getViewportHeight()}else{_13=(_2+parseInt(_4/ 2))
+-parseInt(this.getViewportHeight()/2)}}}
+if(_12!=null||_13!=null){if(_7){this.animateScroll(_12,_13,_8);_11=false}else{this.scrollTo(_12,_13,"scrollIntoView")}}}
+if(this.parentElement!=null){var _23=_1,_24=_2;if(_23!=null){_23-=(_12!=null?_12:this.getScrollLeft());_23+=this.getOffsetLeft()}
+if(_24!=null){_24-=(_13!=null?_13:this.getScrollTop());_24+=this.getOffsetTop()}
+this.parentElement.scrollIntoView(_23,_24,_3,_4,null,null,null,null,null,_10)}
+if(_8&&_11)this.fireCallback(_8)}
+,isc.A.intersects=function isc_Canvas_intersects(_1){var _2=_1.getPageLeft(),_3=_1.getVisibleWidth(),_4=_1.getPageTop(),_5=_1.getVisibleHeight();return this.intersectsRect(_2,_4,_3,_5)}
+,isc.A.intersectsRect=function isc_Canvas_intersectsRect(_1,_2,_3,_4){var _5,_6=[];if(isc.isAn.Array(_1))_5=_1;else _5=[_1,_2,_3,_4];return isc.Canvas.rectsIntersect(_5,[this.getPageLeft(),this.getPageTop(),this.getVisibleWidth(),this.getVisibleHeight()])}
+,isc.A.containsEvent=function isc_Canvas_containsEvent(){return this.containsPoint(this.ns.EH.getX(),this.ns.EH.getY())}
+,isc.A.getEventEdge=function isc_Canvas_getEventEdge(_1){var _2=this.ns.EH;if(!_1)_1=(this.resizeFrom||_2.ALL_EDGES);var _3=this.edgeMarginSize;if(!isc.isAn.Array(_1))_1=[_1];var _4=this.$ta(),_5=_4.left,_6=_4.right,_7=_4.top,_8=_4.bottom;var _9=this.getPageLeft()+_5,_10=this.getPageTop()+_7,_11=(this.getPageRight()-_6)+1,_12=(this.getPageBottom()-_8)+1,y=_2.getY(),x=_2.getX(),_15="",_16="";if(y<_10||y>_12||x<_9||x>_11)return null;if(y>=(_12-_3)&&y<=_12)_16="B";else if(y>=_10&&y<=(_10+_3+1))_16="T";if(x>=(_11-_3)&&x<=_11)_15="R";else if(x>=_9&&x<=(_9+_3+1))_15="L";if(_15!=""||_16!=""){var _17=_16+_15;if(_1.contains(_17))return _17;else if(_15!=""&&_1.contains(_15))return _15;else if(_16!=""&&_1.contains(_16))return _16}
+return null}
+,isc.A.getOffsetX=function isc_Canvas_getOffsetX(){var _1=this.ns.EH.getX()
+-(this.getPageLeft()+this.getLeftBorderSize())+this.getScrollLeft()
+-(this.vscrollOn&&this.isRTL()?this.getScrollbarSize():0);return _1}
+,isc.A.getOffsetY=function isc_Canvas_getOffsetY(){return this.ns.EH.getY()+this.getScrollTop()
+-(this.getPageTop()+this.getTopBorderSize())}
+,isc.A.setClip=function isc_Canvas_setClip(_1,_2,_3,_4){if(isc.isAn.Array(_1))
+this.$q6=_1;else
+this.$q6=[_1,_2,_3,_4];var _5=this.getClipHandle();if(_5!=null){var _6=this.$q6;_5.style.clip="rect("+_6.join("px ")+"px)"}}
+,isc.A.getScrollbarSize=function isc_Canvas_getScrollbarSize(){if(this.showCustomScrollbars)return this.getCustomScrollbarSize();return isc.Element.getNativeScrollbarSize()}
+,isc.A.getViewportWidth=function isc_Canvas_getViewportWidth(){return this.getVisibleWidth()-
+(this.vscrollOn?this.getScrollbarSize():0)-
+this.getHMarginBorder()}
+,isc.A.getViewportHeight=function isc_Canvas_getViewportHeight(){return this.getVisibleHeight()-
+(this.hscrollOn?this.getScrollbarSize():0)-
+this.getVMarginBorder()}
+,isc.A.getOuterViewportWidth=function isc_Canvas_getOuterViewportWidth(){return this.getVisibleWidth()-(this.vscrollOn?this.getScrollbarSize():0)-
+this.getHMarginSize()}
+,isc.A.getOuterViewportHeight=function isc_Canvas_getOuterViewportHeight(){return this.getVisibleHeight()-(this.hscrollOn?this.getScrollbarSize():0)-
+this.getVMarginSize()}
+,isc.A.getInnerHeight=function isc_Canvas_getInnerHeight(){return this.getHeight()
+-((this.hscrollOn||this.overflow==isc.Canvas.SCROLL)?this.getScrollbarSize():0)
+-this.getVMarginBorder()}
+,isc.A.getInnerWidth=function isc_Canvas_getInnerWidth(){var _1=this.getWidth();if(this.vscrollOn||this.overflow==isc.Canvas.SCROLL||this.alwaysShowVScrollbar)
+_1-=this.getScrollbarSize();return _1-this.getHMarginBorder()}
+,isc.A.getInnerContentHeight=function isc_Canvas_getInnerContentHeight(){return this.getHeight()
+-(this.hscrollOn||this.overflow==isc.Canvas.SCROLL?this.getScrollbarSize():0)
+-this.getVMarginBorderPad()}
+,isc.A.getInnerContentWidth=function isc_Canvas_getInnerContentWidth(){var _1=this.getWidth();if(this.vscrollOn||this.overflow==isc.Canvas.SCROLL||this.alwaysShowVScrollbar)
+_1-=this.getScrollbarSize();return _1-this.getHMarginBorderPad()}
+,isc.A.getVBorderPad=function isc_Canvas_getVBorderPad(){return this.getVBorderSize()+this.getVPadding()}
+,isc.A.getHBorderPad=function isc_Canvas_getHBorderPad(){return this.getHBorderSize()+this.getHPadding()}
+,isc.A.getHMarginSize=function isc_Canvas_getHMarginSize(){return this.getLeftMargin()+this.getRightMargin()}
+,isc.A.getVMarginSize=function isc_Canvas_getVMarginSize(){return this.getTopMargin()+this.getBottomMargin()}
+,isc.A.getVMarginBorder=function isc_Canvas_getVMarginBorder(){var _1=this.$sd(),_2=this.$tj();return _1.top+_1.bottom+_2.top+_2.bottom}
+,isc.A.getHMarginBorder=function isc_Canvas_getHMarginBorder(){var _1=this.$sd(),_2=this.$tj();return _1.left+_1.right+_2.left+_2.right}
+,isc.A.getVMarginBorderPad=function isc_Canvas_getVMarginBorderPad(){return this.getVMarginSize()+this.getVBorderPad()}
+,isc.A.getHMarginBorderPad=function isc_Canvas_getHMarginBorderPad(){return this.getHMarginSize()+this.getHBorderPad()}
+,isc.A.getClipWidth=function isc_Canvas_getClipWidth(){return this.getVisibleWidth()}
+,isc.A.getClipHeight=function isc_Canvas_getClipHeight(){return this.getVisibleHeight()}
+,isc.A.getVisibleWidth=function isc_Canvas_getVisibleWidth(_1){if((this.$if||this.$pu)&&(this.overflow==isc.Canvas.VISIBLE||this.overflow==isc.Canvas.CLIP_V)){return Math.max(this.width,(this.getScrollWidth(_1)+this.getHMarginBorder()))}else{var _2=this.isAnimating(this.$do)?this.$showAnimationInfo:this.isAnimating(this.$zb)?this.$hideAnimationInfo:null;if(_2!=null&&!_2.$1l&&this.vscrollOn){var _3=0;if(this.vscrollbar.visibility==isc.Canvas.HIDDEN){_3=this.getScrollbarSize()}else{_3=this.getScrollbarSize()-this.getScrollbarSize()}
+return Math.max(this.getWidth()-_3,1)}
+return this.getWidth()}}
+,isc.A.getVisibleHeight=function isc_Canvas_getVisibleHeight(_1){if((this.$if||this.$pu)&&(this.overflow==isc.Canvas.VISIBLE||this.overflow==isc.Canvas.CLIP_H))
+{return Math.max(this.getHeight(),(this.getScrollHeight(_1)+this.getVMarginBorder()))}else{if(this.isAnimating()){var _2=this.isAnimating(this.$do)?this.$showAnimationInfo:this.isAnimating(this.$zb)?this.$hideAnimationInfo:null;if(_2!=null&&_2.$1l&&this.hscrollOn){var _3=0;if(this.hscrollbar&&this.hscrollbar.visibility==isc.Canvas.HIDDEN){_3=this.getScrollbarSize()}else{_3=this.getScrollbarSize()-this.getScrollbarSize()}
+return Math.max(this.getHeight()-_3,1)}}
+return this.getHeight()}}
+,isc.A.getPeerRect=function isc_Canvas_getPeerRect(){var _1=this.getPageRect();if(this.peers==null)return _1;for(var i=0;i<this.peers.length;i++){var _3=this.peers[i];if(!_3.isDrawn()||(this.isVisible()&&!_3.isVisible()))continue;if((!this.vscrollOn&&_3==this.vscrollbar)||(!this.hscrollOn&&_3==this.hscrollbar))continue;var _4=_3.getPageRect();if(_4[0]<_1[0])_1[0]=_4[0];if(_4[1]<_1[1])_1[1]=_4[1];var _5=_4[0]+_4[2];if(_5>_1[0]+_1[2])_1[2]=_5-_1[0];var _6=_4[1]+_4[3];if(_6>_1[1]+_1[3])_1[3]=_6-_1[1]}
+return _1}
+,isc.A.moveBy=function isc_Canvas_moveBy(_1,_2,_3,_4){var _5=_3&&_4;if(!_5&&this.rectAnimation)this.finishAnimation("rect");else if(!_3&&this.moveAnimation)this.finishAnimation("move");if(isc.$cv)arguments.$cw=this;if(isc.isA.Number(_1))
+this.left+=_1;else
+_1=0;if(isc.isA.Number(_2))
+this.top+=_2;else
+_2=0;var _6=(_1!=0||_2!=0);if(!_6&&!_4)return false;this.$tx=_1;this.$ty=_2;var _7=(_4&&this.$tz?this.width:null),_8=(_4&&this.$t0?this.$o8:null);this.$q5(this.left,this.top,_7,_8);if(_4)this.$t1();this.$t2();return _6}
+,isc.A.$t2=function isc_Canvas__completeMoveBy(){var _1=(this.$tx||0),_2=(this.$ty||0),_3;this.$tx=_3;this.$ty=_3;if(!_1&&!_2)return;this.$t3(this,_1,_2);this.$t4(_1,_2);if(this.parentElement)this.parentElement.childMoved(this,_1,_2);if(this.masterElement)this.masterElement.peerMoved(this,_1,_2);if(this._useFocusProxy&&this.$qj){var _4=this.$qq();if(_4!=null){var _5=parseInt(_4.style.left)+_1,_6=parseInt(_4.style.top)+_2;_4.style.left=_5+"px";_4.style.top=_6+"px"}}
+this.$808=this.$809=null;this.handleMoved(_1,_2)}
+,isc.A.handleMoved=function isc_Canvas_handleMoved(_1,_2){if(!this.$832&&this.isDrawn()&&this.parentElement==null&&!isc.Page.pollPageSize)
+{isc.EH.fireOnPause("checkForBodyOverflowChange",{target:isc.Canvas,methodName:"checkForPageResize"},100)}
+this.moved(_1,_2)}
+,isc.A.moved=function(deltaX,deltaY){}
+,isc.A.parentMoved=function isc_Canvas_parentMoved(_1,_2,_3){}
+,isc.A.handleParentMoved=function isc_Canvas_handleParentMoved(_1,_2,_3){this.$808=this.$809=null;this.parentMoved(_1,_2,_3);this.$t3(_1,_2,_3)}
+,isc.A.$t3=function isc_Canvas__fireParentMoved(_1,_2,_3){var _4=this.children;if(_4!=null){for(var i=0;i<_4.length;i++){if(isc.isA.Canvas(_4[i])){_4[i].handleParentMoved(_1,_2,_3)}}}}
+,isc.A.childMoved=function isc_Canvas_childMoved(_1,_2,_3){if(_1&&_1.masterElement!=null&&_1.containedPeer==true)return;if(this.allowContentAndChildren&&this.overflow==isc.Canvas.VISIBLE)
+this.$t5=true;this.$t6(this.$o4)}
+,isc.A.$t4=function isc_Canvas__fireMasterMoved(_1,_2){var _3=this.peers;if(_3==null)return;for(var i=0;i<_3.length;i++){if(_3[i])_3[i].masterMoved(_1,_2)}}
+,isc.A.masterMoved=function isc_Canvas_masterMoved(_1,_2){if(this.$ns)this.moveBy(_1,_2)}
+,isc.A.peerMoved=function isc_Canvas_peerMoved(_1,_2,_3){}
+,isc.A.dragRepositioned=function isc_Canvas_dragRepositioned(){}
+,isc.A.getDelta=function isc_Canvas_getDelta(_1,_2,_3){if(_2==null)return null;var _4=_1,_5=this.$pb[_1];if(_1==this.$o5)_4=this.$o7;if(isc.isA.Number(_2)){var _6=Math.round(_2);if(_6!=_2){this.logWarn(_1+" specified as fractional coordinate:"+_2+". Rounded to:"+_6);_2=_6}}else if(isc.isA.String(_2)&&isc.endsWith(_2,this.$o9)){this[_5]=_2;if(this.masterElement==null&&this.parentElement==null&&this.$rq==null){this.$rq=isc.Page.setEvent(this.$nx,this,isc.Page.FIRE_ONCE)}
+if(this.$pp){_3=this[_4]=0;if(this.percentBox=="custom")this[_4]=1}
+if(this.percentBox=="custom")return 0;var _7,_8,_9,_10=(_1==this.$oz||_1==this.$o6);if(this.percentSource||(this.snapTo&&this.masterElement)){_7=this.percentSource||this.masterElement;_9=(this.percentBox==this.$520),_8=_10?(_9?_7.getViewportWidth():_7.getVisibleWidth()):(_9?_7.getViewportHeight():_7.getVisibleHeight())}else{_7=this.parentElement;_8=(_10?(_7?_7.getInnerWidth():isc.Page.getWidth()):(_7?_7.getInnerHeight():isc.Page.getHeight()))}
+if(isc.Browser.isIE&&!isc.Page.isLoaded()&&((isc.Page.getWidth()==0)||(isc.Page.getHeight()==0)))
+{isc.Page.setEvent("load","if(window["+this.ID+"])"+this.ID+".pageResize()",isc.Page.FIRE_ONCE);this.$77g=true}
+if(isc.Browser.isChrome&&(!isc.Page.isLoaded()||isc.EH.$77e=="load")&&(isc.Page.getWidth()==0||isc.Page.getHeight()==0))
+{if(isc.Page.isLoaded()){isc.Page.setEvent("idle","if(window."+this.ID+")"+this.ID+".pageResize()",isc.Page.FIRE_ONCE)}else{isc.Page.setEvent("load","if(window."+this.ID+")"+this.ID+".delayCall('pageResize',[],100)",isc.Page.FIRE_ONCE)}
+this.$77g=true}
+_2=Math.round((parseInt(_2,10)/100)*_8);var _11=this[this.$90f[_1]];if(_11!=null&&_2<_11){_2=_11}
+var _12=this[this.$90u[_1]];if(_12!=null&&_2>_12){_2=_12}
+return _2-_3}
+var _13=_2;if(!isc.isA.Number(_2)){_2=parseInt(_2);if(isc.isA.Number(_2)&&isc.isA.String(_3)){this[_4]=_3=_2}}
+this[_5]=null;var _14=false;if(!isc.isA.Number(_2)||(_2<0&&(_1==this.$o6||_1==this.$o5)))
+{if(_13!="*"){this.logWarn("ignoring bad or negative "+_1+": "+_13+(this.logIsDebugEnabled("sizing")?this.getStackTrace():" [enable 'sizing' log for stack trace]"))}else{_1==this.$o6?this.$pn="*":this.$po="*";var _7=this.parentElement;if(isc.isA.Layout(_7)&&_7.hasMember(this)){_7.reflow(this.getID()+" set "+_1+" to '*'");_14=true}}
+if(!_14&&(_3==this[_1]||_3==this[_4]))
+{_3=this.restoreDefaultSize(_1==this.$o5)}
+this.adjustOverflow();return null}
+return _2-_3}
+,isc.A.restoreDefaultSize=function isc_Canvas_restoreDefaultSize(_1){var _2=_1?this.$o5:this.$o6,_3=this.getClass().getInstanceProperty(_2);if(!isc.isA.Number(_3)){if(_1)_3=this.defaultHeight;else _3=this.defaultWidth}
+var _4=this[_2]=(isc.isA.Number(_3)?_3:0);if(_1)this.$o8=_4;return _4}
+,isc.A.pageResize=function isc_Canvas_pageResize(){this.$832=true;this.$rq=null;this.$77g=null;this.$qw();delete this.$832}
+,isc.A.moveTo=function isc_Canvas_moveTo(_1,_2,_3,_4){if(!_4&&_1==null&&_2==null)return false;if(isc.$cv)arguments.$cw=this;if(_1!=null&&_1.top!=null){_2=_1.top;_1=_1.left}
+var _5=this.getDelta(this.$oz,_1,this.getLeft()),_6=this.getDelta(this.$o0,_2,this.getTop());return this.moveBy(_5,_6,_3,_4)}
+,isc.A.moveToEvent=function isc_Canvas_moveToEvent(_1,_2){var _3=this.ns.EH.getLastEvent(),x=_3.x,y=_3.y;if(isc.isA.Number(_1))x-=_1;if(isc.isA.Number(_2))y-=_2;var _6=this.ns.EH;var _7=_6.getDragTarget(_3);var _8;if(_6.getDragTarget().canDrop){_8=_6.getDropTarget(_3);if(_8){if(!_7.snapOnDrop||!_8.shouldSnapOnDrop(_7)){_8=null}}else{_8=_6.getDragTarget(_3).parentElement}}else{_8=_6.getDragTarget(_3).parentElement}
+if(isc.isA.Canvas(_8)&&(_7.snapToGrid==true||(_7.snapToGrid==null&&_8.childrenSnapToGrid==true)))
+{if(_8.noSnapDragOffset(this)){x=_3.x,y=_3.y}
+if(_8.suppressHSnapOffset==true)x=_3.x;if(_8.suppressVSnapOffset==true)y=_3.y;if(_8.snapAxis==isc.Canvas.HORIZONTAL||_8.snapAxis==isc.Canvas.BOTH)
+{var _9=(_8.getPageLeft()+_8.getLeftBorderSize()+_8.getLeftMargin()-_8.getScrollLeft());x-=_9;x=_8.getHSnapPosition(x)+_8.getHSnapOrigin(_7);x+=_9}
+if(_8.snapAxis==isc.Canvas.VERTICAL||_8.snapAxis==isc.Canvas.BOTH)
+{var _9=(_8.getPageTop()+_8.getTopBorderSize()+_8.getTopMargin()-_8.getScrollTop())
+y-=_9;y=_8.getVSnapPosition(y)+_8.getVSnapOrigin(_7);y+=_9}}
+this.setPageRect(x,y)}
+,isc.A.getVSnapOrigin=function isc_Canvas_getVSnapOrigin(_1){return this.VSnapOrigin?this.VSnapOrigin:0}
+,isc.A.getHSnapOrigin=function isc_Canvas_getHSnapOrigin(_1){return this.HSnapOrigin?this.HSnapOrigin:0}
+,isc.A.placeNextTo=function isc_Canvas_placeNextTo(_1,_2,_3,_4){var _5=_1.getPeerRect(),_6=this.getPeerRect(),_7=isc.Canvas.$t7(_6[2],_6[3],_5,_2,_3,_4);this.setPageRect(_7[0],_7[1])}
+,isc.A.showNextTo=function isc_Canvas_showNextTo(_1,_2,_3){if(_2==null)_2="right";if(_3==null)_3=false;this.placeNextTo(_1,_2,_3);this.animateShow("fade")}
+,isc.A.placeNear=function isc_Canvas_placeNear(_1,_2){if(isc.isAn.Array(_1)){_2=_1[1];_1=_1[0]}else if(isc.isAn.Object(_1)){_2=_1.top;_1=_1.left}
+var _3=this.getPeerRect(),_4=isc.Canvas.$t7(_3[2],_3[3],{left:_1,top:_2});this.setPageRect(_4[0],_4[1])}
+,isc.A.resizeBy=function isc_Canvas_resizeBy(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;var _5=_3&&_4;if(!_5&&this.rectAnimation)this.finishAnimation("rect");if(!_3){if(_5&&this.resizeAnimation)this.finishAnimation("resize");if(this.hideAnimation)this.finishAnimation("hide");if(this.showAnimation)this.finishAnimation("show")}
+var _6=this.getWidth(),_7=this.getHeight();if(isc.isA.Number(_1)){this.width+=_1;if(!this.$pp)this.$t8=true}else{_1=0}
+if(isc.isA.Number(_2)){this.height=this.$o8=_7+_2;if(!this.$pp)this.$t9=true}else{_2=0}
+if(_1==0&&_2==0)return false;this.$tz=_1;this.$t0=_2;this.$ua=_3;if(this.isDrawn()&&this.logIsInfoEnabled(this.$nx)){this.logInfo("resize of drawn component: "+"new width/height: "+[this.width,this.$o8]+", old width/height: "+[_6,_7]+", delta width/height: "+[_1,_2]+(this.logIsDebugEnabled(this.$nx)?this.getStackTrace():""),this.$nx)}
+if(!_4){var _8=this.$q6;if(isc.isAn.Array(_8)){_8[1]+=_1;_8[2]+=_2}
+var _9=this.getDrawnState();if(_9==isc.Canvas.COMPLETE){this.$q5(this.left,this.top,this.width,this.$o8);if(isc.isAn.Array(_8))this.setClip(_8)}else if(_9!=isc.Canvas.UNDRAWN){this.$q4=true}
+this.$t1()}
+return true}
+);isc.evalBoundary;isc.B.push(isc.A.$t1=function isc_Canvas__completeResizeBy(){var _1=(this.$tz||0),_2=(this.$t0||0),_3=this.$ua,_4;this.$tz=_4;this.$t0=_4;this.$ua=_4;if(!_1&&!_2)return;var _5;if(this.isDrawn()){_5=this.shouldRedrawOnResize(_1,_2,_3);if(_5){this.markForRedraw(this.$nx)}}
+if(!_3)this.layoutChildren(this.$pc,_1,_2)
+if(isc.Browser.isMoz&&this.containsIFrame())this.$pw();this.$ub(_1,_2);if(!_5)this.adjustOverflow(this.$nx);if(!_3&&this._useFocusProxy&&this.$qj){var _6=this.$sl();if(_6!=null){_6.style.width=this.getWidth()+isc.px;_6.style.height=this.getHeight()+isc.px}}
+this.resizePeersBy(_1,_2);this.$5y(_1,_2)}
+,isc.A.shouldRedrawOnResize=function isc_Canvas_shouldRedrawOnResize(_1,_2){var _3=this.redrawOnResize;if(_3==null){_3=!((this.children!=null&&this.children.length>0&&!this.allowContentAndChildren)||(this.getInnerHTML==isc.Canvas.$b4.getInnerHTML&&!isc.isA.Function(this.contents)))}
+return _3}
+,isc.A.dragResizing=function isc_Canvas_dragResizing(){var _1=isc.EH;return(_1.dragging&&_1.dragOperation==_1.DRAG_RESIZE&&_1.dragTarget==this)}
+,isc.A.$5y=function(deltaX,deltaY,reason){if(isc.$cv)arguments.$cw=this;if(this.snapTo)this.$qw(true);if(this.parentElement)this.parentElement.childResized(this,deltaX,deltaY,reason);if(this.masterElement)this.masterElement.peerResized(this,deltaX,deltaY,reason);var peers=this.peers;if(peers){for(var i=0;i<peers.length;i++){if(isc.isA.Canvas(peers[i]))peers[i].masterResized(deltaX,deltaY,reason)}}
+if(this.clipCorners&&this.$uc){var clips=this.$uc;if(clips.TR)clips.TR.moveBy(deltaX,null);if(clips.BL)clips.BL.moveBy(null,deltaY);if(clips.BR)clips.BR.moveBy(deltaX,deltaY)}
+if(this.$ud!=null)delete this.$ud;if(this.$ue!=null)delete this.$ue;this.resized(deltaX,deltaY,reason);if(!this.$832&&this.isDrawn()&&this.parentElement==null&&!isc.Page.pollPageSize)
+{isc.EH.fireOnPause("checkForBodyOverflowChange",{target:isc.Canvas,methodName:"checkForPageResize"},100)}}
+,isc.A.$ub=function isc_Canvas__handleResized(){}
+,isc.A.resized=function isc_Canvas_resized(_1,_2){}
+,isc.A.innerSizeChanged=function isc_Canvas_innerSizeChanged(_1){this.$81b();this.layoutChildren(_1);var _2=this.peers;if(_2){for(var i=0;i<_2.length;i++){if(!_2[i].percentSource&&_2[i].snapTo&&_2[i].percentBox==this.$520)
+{_2[i].$qw()}}}}
+,isc.A.setPercentSource=function isc_Canvas_setPercentSource(_1,_2){if(isc.isA.String(_1))_1=window[_1];if(!_2&&this.percentSource==_1)return;if(this.percentSource&&this.isObserving(this.percentSource,"innerSizeChanged")){this.ignore(this.percentSource,"innerSizeChanged");this.ignore(this.percentSource,"resized")}
+if(!isc.isA.Canvas(_1)){this.percentSource=null;return}
+this.percentSource=_1;this.observe(_1,"innerSizeChanged","observer.percentSourceInnerSizeChanged()");this.observe(_1,"resized","observer.$qw()")}
+,isc.A.percentSourceInnerSizeChanged=function isc_Canvas_percentSourceInnerSizeChanged(){if(this.percentBox==this.$520)this.$qw()}
+,isc.A.childResized=function isc_Canvas_childResized(_1,_2,_3,_4){if(this.allowContentAndChildren&&this.overflow==isc.Canvas.VISIBLE)
+this.$t5=true;this.$t6(this.$pd)}
+,isc.A.peerResized=function isc_Canvas_peerResized(_1,_2,_3,_4){}
+,isc.A.masterResized=function isc_Canvas_masterResized(_1,_2,_3){this.$qw()}
+,isc.A.dragResized=function isc_Canvas_dragResized(){}
+,isc.A.resizePeersBy=function isc_Canvas_resizePeersBy(_1,_2){var _3=this.peers;if(_3){for(var i=0;i<_3.length;i++){if(_3[i]&&_3[i].masterElement==this&&_3[i].$jo){_3[i].resizeBy(_1,_2)}}}}
+,isc.A.layoutChildren=function isc_Canvas_layoutChildren(_1,_2,_3){if(this.children)this.$uf()}
+,isc.A.$uf=function isc_Canvas__resolveChildPercentSizes(){var _1=this.children;if(_1!=null&&_1.length>0){for(var i=0;i<_1.length;i++){if(isc.isA.Canvas(_1[i]))_1[i].parentResized()}}}
+,isc.A.resizeTo=function isc_Canvas_resizeTo(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(_1==null&&_2==null)return false;var _5=this.getDelta(this.$o6,_1,this.getWidth()),_6=this.getDelta(this.$o5,_2,this.getHeight());return this.resizeBy(_5,_6,_3,_4)}
+,isc.A.resizeToEvent=function isc_Canvas_resizeToEvent(_1){var _2=this.ns.EH,_3=_2.getLastEvent(),x=_3.x,y=_3.y,_6=this.getPageLeft(),_7=this.getPageTop(),_8=this.getPageRight(),_9=this.getPageBottom();var _10=_2.getDragTarget(_3);var _11=_2.getDragTarget(_3).parentElement;if(_11){if(_10.snapResizeToGrid==true||(_10.snapResizeToGrid==null&&_10.snapToGrid==true)||(_10.snapResizeToGrid==null&&(_11.childrenSnapResizeToGrid==true||(_11.childrenSnapResizeToGrid==null&&_11.childrenSnapToGrid==true)))){if(_11.snapAxis==isc.Canvas.HORIZONTAL||_11.snapAxis==isc.Canvas.BOTH){var _12=(_11.getPageLeft()+_11.getLeftBorderSize()+_11.getLeftMargin()-_11.getScrollLeft());x-=_12;x=_11.getHSnapPosition(x)+_11.getHSnapOrigin(_10);x+=_12}
+if(_11.snapAxis==isc.Canvas.VERTICAL||_11.snapAxis==isc.Canvas.BOTH){_12=(_11.getPageTop()+_11.getTopBorderSize()+_11.getTopMargin()-_11.getScrollTop());y-=_12;y=_11.getVSnapPosition(y)+_11.getVSnapOrigin(_10);y+=_12}}}
+if(this.logIsDebugEnabled("dragResize")){this.logDebug("resizeToEvent: coords: "+isc.Log.echo({x:x,y:y,left:_6,top:_7,right:_8,bottom:_9}),"dragResize")}
+_1=_1||_2.resizeEdge||"BR";if(_1.contains("T")){var _13=Math.min(this.maxHeight,Math.max(_9-y,this.minHeight));_7=_9-_13}else if(_1.contains("B")){var _13=Math.min(this.maxHeight,Math.max(y-_7,this.minHeight));_9=_7+_13}
+if(_1.contains("L")){var _14=Math.min(this.maxWidth,Math.max(_8-x,this.minWidth));_6=_8-_14}else if(_1.contains("R")){var _14=Math.min(this.maxWidth,Math.max(x-_6,this.minWidth));_8=_6+_14}
+var _15=_8-_6,_16=_9-_7;this.setPageRect(_6,_7,_15,_16,true);_2.dragResizeWidth=_15;_2.dragResizeHeight=_16;if(this==this.ns.EH.dragTracker)this.redrawIfDirty()}
+,isc.A.resizeTarget=function isc_Canvas_resizeTarget(_1,_2,_3,_4,_5,_6,_7){_5=_5||0;_4=_4||0;if(_6==null)_6=_2?isc.EH.getY():isc.EH.getX();_6+=_4;if(this.parentElement){var _8=this.getParentPageRect(),_9=_2?(_8[1]+_8[3]):(_8[0]+_8[2]);_9-=_2?this.getVisibleHeight():this.getVisibleWidth();if(_6>_9)_6=_9}
+_7=_7!=null?_7:!_2&&this.isRTL();var _10=_2?_1.getMinHeight():_1.getMinWidth(),_11=_2?_1.getMaxHeight():_1.getMaxWidth();var _12;if(_7){_12=(_2?_1.getPageBottom():_1.getPageRight())
+-(_2?this.getVisibleHeight():this.getVisibleWidth())}else{_12=_2?_1.getPageTop():_1.getPageLeft()}
+var _13=!_7?_6-_12-_5:_12-_6-_5;if(_13<_10){_13=_10}else if(_13>_11){_13=_11}
+this.$ug=_13;_6=_12+_5+(_7?-_13:_13);if(_3){_2?_1.setHeight(this.$ug):_1.setWidth(this.$ug)}else{_2?this.setPageTop(_6):this.setPageLeft(_6)}}
+,isc.A.finishTargetResize=function isc_Canvas_finishTargetResize(_1,_2,_3){if(_3)return;_2?_1.setHeight(this.$ug):_1.setWidth(this.$ug)}
+,isc.A.parentResized=function isc_Canvas_parentResized(){if(isc.$cv)arguments.$cw=this;this.$qw()}
+,isc.A.$qw=function isc_Canvas__resolvePercentageSize(_1){if(this.snapTo!=null&&this.percentBox!="custom"){if((this._percent_width||this._percent_height)&&!_1){this.resizeTo(this._percent_width,this._percent_height)}
+var _2,_3,_4;_2=(this.masterElement?this.masterElement:this.parentElement);if(!_2)return;isc.Canvas.snapToEdge(_2,this.snapTo,this,this.snapEdge)}
+if(this.snapTo==null&&!_1){if(this._percent_left||this._percent_top||this._percent_width||this._percent_height)
+{this.setRect(this._percent_left,this._percent_top,this._percent_width,this._percent_height)}}}
+,isc.A.prepareForDragging=function isc_Canvas_prepareForDragging(){var _1=this.ns.EH;if(_1.dragTarget)return;var _2=false,_3=this.dragOperation;if(isc.Browser.isTouch&&this.touchDragOperation&&_1.lastEvent.originalType==_1.TOUCH_START)
+{_3=this.touchDragOperation}
+if(_3){_2=true;_1.dragOperation=_3}else if(this.canDragResize){_1.resizeEdge=this.getEventEdge();if(_1.resizeEdge){_2=true;_1.dragOperation=_1.DRAG_RESIZE;var _4=this.getDragAppearance(_1.DRAG_RESIZE);_1.dragMoveAction=(_4=="tracker")?_1.$ll:_1.$mq}}
+if(!_2){if(this.canDragReposition){_2=true;_1.dragOperation=_1.DRAG_REPOSITION;_1.dragMoveAction=_1.$ll}else if(isc.Browser.isTouch&&(this.hscrollOn||this.vscrollOn)&&!this.dragOperation)
+{_2=true;_1.dragOperation=_1.DRAG_SCROLL}else if(this.canDrag){_2=true;_1.dragOperation=_1.DRAG}else if(this.canSelectText&&this.overflow!="visible"){_2=true;_1.dragOperation=_1.DRAG_SELECT;this.dragAppearance="none"}}
+if(_2){var _5=this;if(this.dragTarget!=null){if(isc.isA.Canvas(this.dragTarget)){_5=this.dragTarget}else if(this.dragTarget=="top"&&this.topElement){_5=this.topElement}else if(this.dragTarget=="parent"&&this.parentElement){_5=this.parentElement}else if(this.dragTarget=="creator"&&this.creator){_5=this.creator}else if(isc.isA.String(this.dragTarget)&&isc.isA.Canvas(window[this.dragTarget]))
+{_5=window[this.dragTarget]}else{this.logWarn('prepareForDragging(): target.dragTarget not understood : '+this.dragTarget)}}
+_1.dragTarget=_5}}
+,isc.A.dragScrollStart=function isc_Canvas_dragScrollStart(){var _1=this.dragScrollTarget||this;this.$77s=isc.EH.getX();this.$77t=isc.EH.getY();this.$77u=_1.scrollLeft||0;this.$77v=_1.scrollTop||0;this.$77w=this.$77x=isc.EH.getX();this.$77y=this.$77z=isc.EH.getY();this.$770=this.$771=isc.timestamp()}
+,isc.A.dragScrollMove=function isc_Canvas_dragScrollMove(){var _1=this.dragScrollTarget||this;var _2=this.$77s-isc.EH.getX(),_3=this.$77t-isc.EH.getY();_1.scrollTo(this.$77u+_2,this.$77v+_3,"dragScrollMove");if(window.event)window.event.preventDefault();this.$77w=this.$77x;this.$77y=this.$77z;this.$770=this.$771;this.$77x=isc.EH.getX();this.$77z=isc.EH.getY();this.$771=isc.timestamp()}
+,isc.A.dragScrollStop=function isc_Canvas_dragScrollStop(){if(!this.momentumScrolling)return;var _1=(this.$771-this.$770);if(_1==0)return;if(isc.timestamp()-this.$771>100)return;var _2=(this.$77x-this.$77w)/_1,_3=(this.$77z-this.$77y)/_1,_4=this,_5=this.dragScrollTarget||this;if(!_5.hscrollOn)_2=0;if(!_5.vscrollOn)_3=0;if(this.logIsDebugEnabled("dragScroll")){this.logDebug("dragScroll: x/y: "+[this.$77x,this.$77z]+", last: "+[this.$77w,this.$77y]+", elapsed: "+_1+", speed: "+[_2,_3],"dragScroll")}
+if(_2==0&&_3==0)return;var _6=this.$772=this.registerAnimation(function(_14){var _7=isc.timestamp(),_1=_7-_4.$771;_4.$771=_7;var _8=_2*(1-_14),_9=_3*(1-_14);var _10=Math.round(_8*_1),_11=Math.round(_9*_1);if(this.logIsDebugEnabled("dragScroll")){this.logDebug("animating: elapsed: "+_1+", frame speed: "+[_8,_9]+", distance: "+[_10,_11],"dragScroll")}
+if(_10==0&&_11==0)_4.cancelAnimation(_6);var _12=_5.getScrollLeft(),_13=_5.getScrollTop();_5.scrollTo(_5.getScrollLeft()-_10,_5.getScrollTop()-_11,"dragScrollStop");if(_12==_5.getScrollLeft()&&_13==_5.getScrollTop())
+{_4.cancelAnimation(_6)}},this.momentumScrollTime,this.momentumScrollAcceleration)}
+,isc.A.hoopSelectStart=function isc_Canvas_hoopSelectStart(){if(!this.hoopSelector)this.hoopSelector=this.createAutoChild("hoopSelector");if(this.hoopSelectorRect)this.hoopSelector.keepInParentRect=this.hoopSelectorRect;var _1=this.$79e=this.hoopSelectorRect||[this.getPageLeft()+this.getLeftBorderSize(),this.getPageTop()+this.getTopBorderSize(),this.getViewportWidth(),this.getViewportHeight()];this.$79f=this.hoopSelectAxis=="horizontal"?_1[3]:null;this.$79g=this.hoopSelectAxis=="vertical"?_1[2]:null;this.$79h=this.getOffsetX();this.$79i=this.getOffsetY();this.resizeHoopSelector();this.hoopSelector.show();return isc.EH.STOP_BUBBLING}
+,isc.A.hoopSelectMove=function isc_Canvas_hoopSelectMove(){this.resizeHoopSelector()}
+,isc.A.hoopSelectStop=function isc_Canvas_hoopSelectStop(){if(this.hoopSelector)this.hoopSelector.hide()}
+,isc.A.resizeHoopSelector=function isc_Canvas_resizeHoopSelector(){if(!this.hoopSelector)return;var x=this.getOffsetX(),y=this.getOffsetY();if(this.hoopSelector.keepInParentRect){if(x<0)x=0;var _3=this.$79e[3];if(y>_3)y=_3}
+var _4=Math.max(1,this.$79f?this.$79f:Math.abs(y-this.$79i));var _5=Math.max(1,this.$79g?this.$79g:Math.abs(x-this.$79h));this.hoopSelector.resizeTo(_5,_4);if(!this.$79g){if(x<this.$79h)this.hoopSelector.setLeft(x);else this.hoopSelector.setLeft(this.$79h)}else{this.hoopSelector.setLeft(this.$79e[0])}
+if(!this.$79f){if(y<this.$79i)this.hoopSelector.setTop(y);else this.hoopSelector.setTop(this.$79i)}else{this.hoopSelector.setTop(this.$79e[1])}
+this.updateHoopSelection()}
+,isc.A.updateHoopSelection=function isc_Canvas_updateHoopSelection(){}
+,isc.A.setNoDropIndicator=function isc_Canvas_setNoDropIndicator(){this.$uh=true;this.$k2();if(this.shouldSetNoDropTracker&&isc.EH.dragTracker&&isc.EH.dragTracker.isVisible()){if(!this.$ui)this.$ui=isc.EH.dragTracker.getContents();isc.EH.setDragTracker(this.imgHTML(this.noDropTracker))}}
+,isc.A.clearNoDropIndicator=function isc_Canvas_clearNoDropIndicator(){if(!this.$uh)return;delete this.$uh;this.$k2();if(this.shouldSetNoDropTracker&&isc.EH.dragTracker){isc.EH.setDragTracker(this.$ui);delete this.$ui}}
+,isc.A.shouldDragScroll=function isc_Canvas_shouldDragScroll(){return this.canDragScroll}
+,isc.A.$uj=function isc_Canvas__getVDragScrollDirection(_1){var _2=this.getVDragScrollThreshold();if(_1<_2)return-1;if(_1>(this.getViewportHeight()-_2))return 1;return 0}
+,isc.A.$uk=function isc_Canvas__getHDragScrollDirection(_1){var _2=this.getHDragScrollThreshold();if(_1<_2)return-1;if(_1>(this.getViewportWidth()-_2))return 1;return 0}
+,isc.A.$l4=function isc_Canvas__overDragThreshold(_1){var _2=(this.getOffsetY()-this.getScrollTop()),_3=(this.getOffsetX()-this.getScrollLeft());if(_1!=null){if(_1==isc.Canvas.VERTICAL)
+return this.$uj(_2)!=0;else
+return this.$uk(_3)!=0}
+return(this.$uj(_2)!=0||this.$uk(_3)!=0)}
+,isc.A.getHDragScrollThreshold=function isc_Canvas_getHDragScrollThreshold(){if(this.$ud!=null)return this.$ud;var _1=this.dragScrollThreshold;if(isc.isA.Number(_1))this.$ud=_1;else{_1=parseInt(_1);if(!isNaN(_1)){this.$ud=parseInt(_1*this.getViewportWidth()/100);return this.$ud}else{isc.Log.logWarn("Unable to resolve specified drag scroll threshold '"+this.dragScrollThreshold+"' to a valid size. Should be specified as"+" an absolute pixel value, or a percentage of widget viewport.");return 0}}}
+,isc.A.getVDragScrollThreshold=function isc_Canvas_getVDragScrollThreshold(){if(this.$ue!=null)return this.$ue;var _1=this.dragScrollThreshold;if(isc.isA.Number(_1))this.$ue=_1;else{_1=parseInt(_1);if(!isNaN(_1)){this.$ue=parseInt(_1*this.getViewportHeight()/100);return this.$ue}else{isc.Log.logWarn("Unable to resolve specified drag scroll threshold '"+this.dragScrollThreshold+"' to a valid size. Should be specified as"+" an absolute pixel value, or a percentage of widget viewport.");return 0}}}
+,isc.A.$l5=function isc_Canvas__setupDragScroll(_1,_2){if(this.$ul!=null)return;var _3=(this.getOffsetY()-this.getScrollTop()),_4=(this.getOffsetX()-this.getScrollLeft()),_5=this.$uk(_4),_6=this.$uj(_3);this.$ul=isc.Timer.setTimeout({target:this,methodName:"$um",args:[_5,_6,true,_1,_2]},this.dragScrollDelay)}
+,isc.A.$um=function isc_Canvas__performDragScroll(_1,_2,_3,_4,_5){this.$ul=null;var _6=0,_7=0;var _8=this.containsEvent();if(this.ns.EH.dragging&&(_5||_8)){var _9=this.getOffsetX()-this.getScrollLeft(),_10=this.getOffsetY()-this.getScrollTop(),_11=this.getViewportWidth(),_12=this.getViewportHeight();if(!isc.isA.Number(this.maxDragScrollIncrement)){var _13=parseInt(this.maxDragScrollIncrement);if(!isc.isA.Number(_13))
+this.logWarn("Unable to resolve this.maxDragScrollIncrement '"+this.maxDragScrollIncrement+"' to a valid value. This should be an "+"absolute pixel value or a percentage to scroll by.");this.$un=parseInt(_13/ 100*this.getScrollWidth());this.$uo=parseInt(_13/ 100*this.getScrollHeight())}else{this.$un=this.$uo=this.maxDragScrollIncrement}
+if(!isc.isA.Number(this.minDragScrollIncrement)){var _14=parseInt(this.minDragScrollIncrement);if(!isc.isA.Number(_14))
+this.logWarn("Unable to resolve this.minDragScrollIncrement '"+this.minDragScrollIncrement+"' to a valid value. This should be an "+"absolute pixel value or a percentage to scroll by.");this.$up=parseInt(_14/ 100*(this.getScrollWidth()-_11));this.$uq=parseInt(_14/ 100*(this.getScrollHeight()-_12))}else{this.$up=this.$uq=this.minDragScrollIncrement}
+var _15=(_4==isc.Canvas.VERTICAL?0:this.$uk(_9)),_16=(_4==isc.Canvas.HORIZONTAL?0:this.$uj(_10));if(_3){if(_1!=0&&_1!=_15)
+_1=0;if(_2!=0&&_2!=_16)
+_2=0}else{_1=_15;_2=_16}
+if(_8){_6=this.getScrollIncrement(_1,_9,_11,this.getHDragScrollThreshold(),this.$un,this.$up);_7=this.getScrollIncrement(_2,_10,_12,this.getVDragScrollThreshold(),this.$uo,this.$uq)}else{_6=_1*this.$un;_7=_2*this.$uo}
+if((_6>0&&(this.getScrollLeft()>=this.getScrollRight()))||(_6<0&&(this.getScrollLeft()<=0)))_6=0;if((_7>0&&(this.getScrollTop()>=this.getScrollBottom()))||(_7<0&&(this.getScrollTop()<=0)))_7=0}
+if(_6!=0||_7!=0){this.scrollBy(_6,_7);this.$ul=isc.Timer.setTimeout({target:this,methodName:"$um",args:[null,null,null,_4,_5]},50)}else{delete this.$un;delete this.$up;delete this.$uo;delete this.$uq}}
+,isc.A.getScrollIncrement=function isc_Canvas_getScrollIncrement(_1,_2,_3,_4,_5,_6){if(_1==null||_1==0)return 0;if(_1>0){_2=_2-(_3-_4)}else if(_1<0){_2=_4-_2}
+if(_2<0||_2>_4)return 0;var _7=_1*
+((_2/ _4)*(_5-_6)+_6);return parseInt(_7)}
+,isc.A.hasInherentHeight=function isc_Canvas_hasInherentHeight(){if(this.inherentHeight!=null)return this.inherentHeight;return(this.children==null&&(this.overflow==isc.Canvas.VISIBLE||this.overflow==isc.Canvas.CLIP_H))}
+,isc.A.hasInherentWidth=function isc_Canvas_hasInherentWidth(){if(this.inherentWidth!=null)return this.inherentWidth;return(this.children==null&&(this.overflow==isc.Canvas.VISIBLE||this.overflow==isc.Canvas.CLIP_V))}
+,isc.A.canOverflowWidth=function isc_Canvas_canOverflowWidth(){return this.overflow==isc.Canvas.VISIBLE||this.overflow==isc.Canvas.CLIP_H}
+,isc.A.canOverflowHeight=function isc_Canvas_canOverflowHeight(){return this.overflow==isc.Canvas.VISIBLE||this.overflow==isc.Canvas.CLIP_V}
+,isc.A.getOverflow=function isc_Canvas_getOverflow(){return this.overflow}
+,isc.A.setOverflow=function isc_Canvas_setOverflow(_1){if(this.$va!=null&&!this.$vb)
+this.finishAnimation(this.$va);if(this.$vc!=null&&!this.$vd)
+this.finishAnimation(this.$vc);if(this.overflow==_1)return;var _2=this.overflow;this.overflow=_1;if(!this.isDrawn())return;if(_1!=isc.Canvas.SCROLL&&_1!=isc.Canvas.AUTO&&(this.hscrollOn||this.vscrollOn))
+{this.hscrollOn=this.vscrollOn=false;if(this.hscrollbar!=null)this.hscrollbar.hide();if(this.vscrollbar!=null)this.vscrollbar.hide()}
+if(isc.Browser.isIE&&(_1==isc.Canvas.CLIP_H||_1==isc.Canvas.CLIP_V))
+{this.markForRedraw();return}
+var _3=this.getStyleHandle();_3.overflow=this.$rw();var _4=this.$rx();_3.width=_4[0];_3.height=_4[1];if(_3.clip!=null&&_3.clip!=""&&_3.clip!="rect(auto auto auto auto)")
+{_3.clip=(isc.Browser.isIE?"rect(auto)":"")}
+this.adjustOverflow("setOverflow");if(_2==isc.Canvas.VISIBLE&&_1!=isc.Canvas.VISIBLE){var _5=Math.max(this.getScrollWidth()-this.getInnerWidth(),0),_6=Math.max(this.getScrollHeight()-this.getInnerHeight(),0);if(_5>0||_6>0)this.$5y(-_5,-_6,"overflow changed")}else if(_2!=isc.Canvas.VISIBLE&&_1==isc.Canvas.VISIBLE){var _5=Math.max(this.getScrollWidth()-this.getInnerWidth(),0),_6=Math.max(this.getScrollHeight()-this.getInnerHeight(),0);if(_5>0||_6>0)this.$5y(_5,_6,"overflow changed")}
+if((_1==isc.Canvas.HIDDEN||_1==isc.Canvas.VISIBLE)&&(_2==isc.Canvas.HIDDEN||_2==isc.Canvas.VISIBLE)){}else{this.$ur()}}
+,isc.A.$t6=function isc_Canvas__markForAdjustOverflow(_1){if(!this.isDrawn()||this.isDirty()||this.destroying||this.$66p)return;if(!this.$rm){if(this.logIsDebugEnabled())
+this.logDebug("delaying adjustOverflow: "+(_1?_1:this.getStackTrace()));var _2=this;this.$rn=isc.Timer.setTimeout(function(){if(!_2.destroyed)_2.adjustOverflow(_1,true)},0)}
+this.$rm=true}
+,isc.A.adjustForContent=function isc_Canvas_adjustForContent(_1){var _2="adjustForContent() called";if(_1)this.adjustOverflow(_2);else this.$t6(_2)}
+,isc.A.$qy=function isc_Canvas__browserDoneDrawing(){var _1=this.getHandle();if(isc.Browser.isOpera){var _1=this.getHandle();return!(_1.scrollHeight==0&&_1.scrollWidth==0)}
+if(!isc.Browser.isIE){var _2=this.getClipHandle();if(_2==null)return false;var _3=_2.scrollHeight;if(_3==null||_3==0)_3=this.getClipHandle().offsetHeight;return _3!=0}
+var _4;if(isc.Browser.isWin){return _1!=null&&_1.scrollHeight!=this.$n1&&_1.scrollHeight!=0}}
+,isc.A.adjustOverflow=function isc_Canvas_adjustOverflow(_1,_2,_3){if(isc.$cv)arguments.$cw=this;if(_2&&!this.$rm){return}
+this.$rm=false;if(!this.isDrawn()||this.overflow==isc.Canvas.IGNORE)return true;if(!this.adjustOverflowWhileDirty&&!_3&&this.isDirty()&&(this.overflow!=isc.Canvas.VISIBLE))
+{return}
+if(!isc.Page.isLoaded()&&(isc.Browser.isSafari||(isc.Browser.isMoz&&isc.Browser.geckoVersion<20040616)))
+{isc.Page.setEvent("load",this,isc.Page.FIRE_ONCE,"$us");if(isc.Browser.isMoz)return}
+if(this.$417)return;if(this.$qy())return this.$ut(_1);if(this.logIsDebugEnabled("overflow")){this.logDebug("browser not done drawing, deferring overflow.","overflow");if(this.useClipDiv){this.logDebug("clipHandle sizes: "+this.echoElementSize(this.getClipHandle()),"overflow")}
+this.logDebug("handle sizes: "+this.echoElementSize(this.getHandle()),"overflow")}
+if(!this.$uu){this.$t6();this.$uu=true}else{this.logDebug("still waiting for size to become available","overflow");this.$uv()}
+return false}
+,isc.A.$us=function isc_Canvas__adjustOverflowForPageLoad(){if(!this.destroyed&&this.isDrawn())this.adjustOverflow("pageLoad")}
+,isc.A.$uv=function isc_Canvas__queueForDelayedAdjustOverflow(){isc.Canvas.$uv(this.getID())}
+,isc.A.$ut=function isc_Canvas__adjustOverflow(_1){if(this.$uw){return}
+this.$uw=true;this.$ux(_1);this.$uw=false}
+,isc.A.$ux=function isc_Canvas___adjustOverflow(_1){if(!this.$pe[this.overflow]){this.logWarn("This widget has overflow specified as "+this.echo(this.overflow)+". This overflow setting is not supported - defaulting to overflow:\"visible\".");this.overflow=isc.Canvas.VISIBLE}
+if(this.$su!=null)delete this.$su;if(this.$sz!=null)delete this.$sz;var _2=this.$uy,_3=this.$uz;delete this.$uy;delete this.$uz;var _4=this.$u0;this.$u0=false;var _5=isc.Canvas;this.$uu=null;if(this.getHandle()==null)this.logWarn("adjustOverflow: handle null");if(this.getClipHandle()==null)this.logWarn("adjustOverflow: clipHandle null");if(this.alwaysShowVScrollbar){if(this.overflow!=isc.Canvas.AUTO||this.overflow!=isc.Canvas.SCROLL){this.logInfo("alwaysShowVScrollbar specified as true, but overflow set to \""+this.overflow+"\". Property will be ignored.")}else if(this.showCustomScrollbars==false){this.logWarn("alwaysShowVScrollbar property not supported when showing native scrollbars")}}
+if(this.logIsInfoEnabled(this.$pf)){this.logInfo("Specified size: "+this.getWidth()+"x"+this.getHeight()+", drawn scroll size: "+this.getScrollWidth(true)+"x"+this.getScrollHeight(true)+", border: "+this.getVBorderSize()+"x"+this.getHBorderSize()+", margin: "+this.getVMarginSize()+"x"+this.getHMarginSize()+(_2==null?"":", old size: "+_2+"x"+_3)+", reason: "+_1,"sizing")}
+if(this.logIsDebugEnabled(this.$pf)){if(this.useClipDiv){this.logDebug("clipHandle sizes: "+this.echoElementSize(this.getClipHandle()),"sizing")}
+this.logDebug("handle sizes: "+this.echoElementSize(this.getHandle()),"sizing")}
+if(this.overflow==_5.IGNORE){}else if(this.overflow==_5.VISIBLE){if(this.$t5){if(this.getWidth()<this.getVisibleWidth()||this.getHeight()<this.getVisibleHeight())
+{this.$q5(null,null,this.width,this.$o8)}
+delete this.$t5}
+var _6=this.getScrollWidth(true),_7=this.getScrollHeight(true);if(this.$ks){var _8=this.getScrollHandle();if(_8.scrollTop!=0||_8.scrollLeft!=0){_8.scrollTop=_8.scrollLeft=0}}
+var _9=this.getInnerWidth(),_10=this.getInnerHeight();var _11=this.$u0=(_6>_9||_7>_10);if(!_11&&!_4)
+{this.$uy=_6;this.$uz=_7;return}
+var _12=this.getHMarginBorder(),_13=this.getVMarginBorder();this.$q5(this.left,this.top,Math.max((_6+_12),this.getWidth()),Math.max((_7+_13),this.getHeight()));var _14=this.children&&this.children.length>0;if(!_14||this.allowContentAndChildren){var _15=this.getScrollHeight(true),_16=this.getScrollWidth(true);if(_15!=_7||_16!=_6){_6=_16;_7=_15;this.$q5(this.left,this.top,Math.max((_6+_12),this.getWidth()),Math.max((_7+_13),this.getHeight()))}}
+if(this.snapTo!=null&&_11&&(_1==this.$oe||_1==this.$ny))
+{this.$qw(true)}
+this.$uy=_6;this.$uz=_7;if((_2!=null&&_2!=_6)||(_3!=null&&_3!=_7))
+{if(!_11&&_1==this.$nx)return;this.$5y(_6-_2,_7-_3,this.$pg)}}else if(this.overflow==_5.HIDDEN){this.$q5(this.left,this.top,this.getWidth(),this.getHeight());if(isc.Browser.isIE&&this.isRTL()){this.scrollLeft=this.getClipHandle().scrollLeft}
+if(this.scrollLeft!=0||this.scrollTop!=0)this.$51s()}else if(this.overflow==_5.CLIP_H){var _7=this.getScrollHeight(),_13=this.getVMarginBorder(),_17=Math.max(_7+_13,this.getHeight());this.$uz=_17;this.setClip(0,this.getWidth(),_17,0);this.$q5(this.left,this.top,this.getWidth(),_17)}else if(this.overflow==_5.CLIP_V){var _6=this.getScrollWidth(),_12=this.getHMarginBorder();if((isc.Browser.isIE||isc.Browser.isMoz||isc.Browser.isOpera)&&(_6>this.getInnerWidth())&&(this.$uy==_6)){this.$q5(this.left,this.top,this.getWidth(),this.getHeight());_6=this.getScrollWidth(true)
+if(_6>this.getInnerWidth()){this.$q5(this.left,this.top,_6+_12,this.getHeight())}}else{this.$q5(this.left,this.top,Math.max(_6+_12,this.getWidth()),this.getHeight())}
+var _18=Math.max(_6+_12,this.getWidth());this.setClip(0,_18,this.getHeight(),0);this.$uy=_18}else{if(isc.Browser.isIE&&this.showCustomScrollbars&&this.getScrollingMechanism()==isc.Canvas.NATIVE)
+{var _19=this.scrollLeft,_20=this.scrollTop;if(this.getScrollLeft()!=_19||this.getScrollTop()!=_20){this.$lh()}}
+var _21=this.vscrollOn,_22=this.hscrollOn,_23=this.$kk();var _24=(this.alwaysShowVScrollbar&&this.showCustomScrollbars);if(this.overflow==isc.Canvas.SCROLL){this.hscrollOn=this.vscrollOn=true}else{var _7=this.getScrollHeight(),_25=this.getHeight(),_6=this.getScrollWidth(),_26=this.getWidth(),_27=this.getScrollbarSize(),_28;var _13=this.getVMarginBorder(),_12=this.getHMarginBorder();if(!this.showCustomScrollbars&&this.getHandle().clientHeight!=null){this.hscrollOn=(this.getClipHandle().clientHeight<_25-_13);this.vscrollOn=_24||(this.getClipHandle().clientWidth<_26-_12)}else{this.vscrollOn=_24||((_7-(_25-_13))>0);this.hscrollOn=(_6-(_26-_12))>0}
+if((this.vscrollOn&&!_21&&!this.hscrollOn)||(this.hscrollOn&&!_22&&!this.vscrollOn))
+{if(this.showCustomScrollbars){this.$q5(this.left,this.top,this.getWidth(),this.getHeight())}
+_28=(this.vscrollOn?"V":"")+(this.hscrollOn?"H":"");this.innerSizeChanged("introducing scrolling");var _16=this.getScrollWidth(true),_15=this.getScrollHeight(true);if(this.logIsDebugEnabled("scrolling")){this.logDebug("Rechecking scrollWidth/Height on introduction of scroll:"+" old: "+[_6,_7]+", new: "+[_16,_15],"scrolling")}
+_6=_16;_7=_15}
+if(this.vscrollOn&&!this.hscrollOn){if(this.showCustomScrollbars||(this.getClipHandle().clientHeight==null))
+this.hscrollOn=_6-(_26-_12-_27)>0;else
+this.hscrollOn=(_25>this.getClipHandle().clientHeight+this.getVBorderSize())}else if(this.hscrollOn){if(this.showCustomScrollbars||(this.getClipHandle().clientWidth==null))
+this.vscrollOn=_24||(_7-(_25-_13-_27)>0);else
+this.vscrollOn=_24||(_26>this.getClipHandle().clientWidth+this.getHBorderSize())}}
+if(this.logIsInfoEnabled("scrolling")){this.logInfo("Drawn size: "+this.getScrollWidth(true)+" by "+this.getScrollHeight(true)+", specified: "+this.getWidth()+" by "+this.getHeight()+", scrollbar state: "+(this.hscrollOn?"h":"")+(this.vscrollOn?"v":""),"scrolling")}
+if(this.showCustomScrollbars&&(this.hscrollOn!=_22||this.vscrollOn!=_21))
+{this.$q5(this.left,this.top,this.getWidth(),this.getHeight());if(this.$su!=null)delete this.$su;if(this.$sz!=null)delete this.$sz}
+var _29=((_21?"V":"")+(_22?"H":"")),_30=((this.vscrollOn?"V":"")+(this.hscrollOn?"H":""));if(_29!=_30){this.logInfo("Scrollbar state: "+_29+" -> "+_30,"scrolling");if(_28==null||_30!=_28)
+{this.innerSizeChanged("scrolling state changed")}}
+if(this.isRTL()&&this.hscrollOn&&!_22){var _31=this.getClipHandle().scrollLeft;this.scrollLeft=_31}
+if(this.showCustomScrollbars){if(!this.hscrollOn&&_22)this.hscrollbar.hide();if(!this.vscrollOn&&_21)this.vscrollbar.hide();if(this.hscrollOn){this.$u1()}else{if(_22)this.scrollTo(0,null,"ending hscroll")}
+if(this.vscrollOn){this.$u2()}else{if(_21)this.scrollTo(null,0,"ending vscroll")}
+this.$51s()}
+if((this._useNativeTabIndex||this._useFocusProxy)&&_23!=this.$kk())
+{this.$ur()}}
+return true}
+,isc.A.$51s=function isc_Canvas__clampToContent(){if(this.scrollLeft==0&&this.scrollTop==0)return;var _1=Math.max(0,this.getScrollBottom()),_2=Math.max(0,this.getScrollRight()),_3=this.getScrollLeft(),_4=this.getScrollTop(),_5=false;if(_3>_2){_5=true;_3=_2}
+if(_4>_1){_5=true;_4=_1}
+if(_5){this.scrollTo(_3,_4,"clampToContent")}}
+,isc.A.checkNativeScroll=function isc_Canvas_checkNativeScroll(){var _1=this.getScrollHandle();if(this.getScrollingMechanism()!=isc.Canvas.NATIVE||_1==null)return;if(_1.scrollLeft!=this.scrollLeft||_1.scrollTop!=this.scrollTop){this.scrollTo(this.scrollLeft,this.scrollTop,"removing native scroll")}}
+,isc.A.$u1=function isc_Canvas__setHorizontalScrollbar(){var _1=this.hscrollbar;if(!_1){_1=this.hscrollbar=isc.ClassFactory.newInstance(this.scrollbarConstructor,{ID:this.getID()+"_hscroll",autoDraw:false,_generated:true,zIndex:this.getZIndex()+1,vertical:false,scrollTarget:this,visibility:this.visibility,$jp:false,$jo:false,_redrawWithParent:false,$u3:false})}
+if(!isc.Page.isLoaded()){var _2=this;isc.Page.setEvent("load",function(){if(!_2.destroyed)_2.$u1()});return}
+if(!this.hscrollOn)return;_1.setRect(this.getOffsetLeft()+this.getLeftMargin()+(this.vscrollOn&&this.isRTL()?this.getCustomScrollbarSize():0),this.getOffsetTop()+this.getHeight()-
+(this.getBottomMargin()+this.getCustomScrollbarSize()),this.getOuterViewportWidth(),this.getCustomScrollbarSize());if(!_1.masterElement){this.addPeer(_1)}else{if(this.visibility!=isc.Canvas.HIDDEN)_1.show()}}
+,isc.A.getCustomScrollbarSize=function isc_Canvas_getCustomScrollbarSize(){var _1=this.scrollbarConstructor;if(isc.isA.String(_1))_1=isc[_1];if(isc.NativeScrollbar!=null&&_1==isc.NativeScrollbar)return isc.NativeScrollbar.getScrollbarSize();return this.scrollbarSize}
+,isc.A.$u2=function isc_Canvas__setVerticalScrollbar(){var _1=this.vscrollbar
+if(!_1){_1=this.vscrollbar=isc.ClassFactory.newInstance(this.scrollbarConstructor,{ID:this.getID()+"_vscroll",autoDraw:false,_generated:true,zIndex:this.getZIndex()+1,vertical:true,scrollTarget:this,visibility:this.visibility,$jp:false,$jo:false,_redrawWithParent:false,$u3:false})}
+if(!isc.Page.isLoaded()){var _2=this;isc.Page.setEvent("load",function(){if(!_2.destroyed)_2.$u2()});return}
+if(!this.vscrollOn)return;_1.setShowCorner(this.hscrollOn&&this.vscrollOn);_1.setRect(this.getOffsetLeft()+(this.isRTL()?this.getLeftMargin():this.getWidth()-(this.getRightMargin()+this.getScrollbarSize())),this.getOffsetTop()+this.getTopMargin(),this.getScrollbarSize(),this.getHeight()-this.getVMarginSize());if(!_1.masterElement){this.addPeer(_1)}else{if(this.visibility!=isc.Canvas.HIDDEN)_1.show()}}
+,isc.A.scrollByPage=function isc_Canvas_scrollByPage(_1,_2,_3){var _4=(_1?this.getViewportHeight():this.getViewportWidth())-
+this.scrollDelta;this.$u4(_1,_2*_4,_3||"scrollByPage")}
+,isc.A.scrollByDelta=function isc_Canvas_scrollByDelta(_1,_2,_3){this.$u4(_1,_2*this.scrollDelta,_3||"scrollByDelta")}
+,isc.A.$u4=function isc_Canvas__scrollByAmount(_1,_2,_3){if(_1){this.scrollTo(null,this.getScrollTop()+_2,_3)}else{this.scrollTo(this.getScrollLeft()+_2,_3)}}
+,isc.A.canScroll=function isc_Canvas_canScroll(_1){var _2=_1?this.getScrollHeight():this.getScrollWidth(),_3=_1?this.getViewportHeight():this.getViewportWidth();return(_2>_3)}
+,isc.A.getScrollRatio=function isc_Canvas_getScrollRatio(_1){var _2=_1?this.getScrollHeight():this.getScrollWidth(),_3=_1?this.getViewportHeight():this.getViewportWidth(),_4=_1?this.getScrollTop():this.getScrollLeft(),_5=_2-_3;if(_5==0)return 0;return _4/ _5}
+,isc.A.scrollToRatio=function isc_Canvas_scrollToRatio(_1,_2,_3){var _4=Math.max(0,(_1?this.getScrollBottom():this.getScrollRight())),_5=Math.round(_4*_2),_3=_3||"scrollToRatio";if(_1){this.scrollTo(null,_5,_3)}else{this.scrollTo(_5,null,_3)}}
+,isc.A.getViewportRatio=function isc_Canvas_getViewportRatio(_1){if(_1){return this.getViewportHeight()/this.getScrollHeight()}else{return this.getViewportWidth()/this.getScrollWidth()}}
+,isc.A.getScrollBottom=function isc_Canvas_getScrollBottom(){if(this.overflow==isc.Canvas.VISIBLE)return 0;return this.getScrollHeight()-this.getViewportHeight()}
+,isc.A.getScrollRight=function isc_Canvas_getScrollRight(){if(this.overflow==isc.Canvas.VISIBLE)return 0;return this.getScrollWidth()-this.getViewportWidth()}
+,isc.A.scrollToTop=function isc_Canvas_scrollToTop(){this.scrollTo(null,0,"scrollToTop")}
+,isc.A.scrollToBottom=function isc_Canvas_scrollToBottom(){this.scrollTo(null,this.getScrollBottom(),"scrollToBottom")}
+,isc.A.scrollToLeft=function isc_Canvas_scrollToLeft(){this.scrollTo(0,null,"scrollToLeft")}
+,isc.A.scrollToRight=function isc_Canvas_scrollToRight(){this.scrollTo(this.getScrollRight(),null,"scrollToRight")}
+,isc.A.scrollBy=function isc_Canvas_scrollBy(_1,_2,_3){var _4,_5;if(_1!=null)_4=this.getScrollLeft()+_1;if(_2!=null)_5=this.getScrollTop()+_2;return this.scrollTo(_4,_5,_3||"scrollBy")}
+,isc.A.scrollByPercent=function isc_Canvas_scrollByPercent(_1,_2){if(isc.isA.String(_1))_1=parseInt(_1);if(isc.isA.String(_2))_2=parseInt(_2);if(!isc.isA.Number(_1))_1=0;else
+_1=parseInt(_1/ 100*Math.max(0,(this.getScrollWidth()-this.getViewportWidth())));if(!isc.isA.Number(_2))_2=0;else
+_2=parseInt(_2/ 100*Math.max(0,(this.getScrollHeight()-this.getViewportHeight())));this.scrollBy(_1,_2)}
+);isc.evalBoundary;isc.B.push(isc.A.scrollTo=function(left,top,reason,animating){if(isc.$cv)arguments.$cw=this;if(!animating){if(this.scrollAnimation)this.finishAnimation("scroll");if(this.hideAnimation&&this.$hideAnimationInfo.slideOut)
+this.$hideAnimationInfo.slideOut=false;if(this.showAnimation&&this.$showAnimationInfo.slideIn)
+this.$showAnimationInfo.slideIn=false}
+if(this.logIsDebugEnabled("scrolling")){this.logDebug("scrollTo("+left+", "+top+"), reason: "+reason,"scrolling")}
+if(!isc.isA.Number(left))left=this.getScrollLeft();if(!isc.isA.Number(top))top=this.getScrollTop();var actuallyMoved=false;if((left!=null&&left!=this.scrollLeft)||(top!=null&&top!=this.scrollTop)){actuallyMoved=true;this.lastScrollLeft=this.scrollLeft;this.lastScrollTop=this.scrollTop;this.lastScrollDirection=(left!=null&&left!=this.scrollLeft&&top!=null&&top!=this.scrollTop?"both":top!=null&&top!=this.scrollTop?"vertical":"horizontal")}
+if(reason=="nativeScroll"||!this.isDrawn()){this.scrollLeft=left;this.scrollTop=top}else{var maxScrollLeft=this.getScrollRight();this.scrollLeft=Math.max(0,Math.min(maxScrollLeft,left));var maxScrollTop=this.getScrollBottom();this.scrollTop=Math.max(0,Math.min(maxScrollTop,top));this.$u5(this.scrollLeft,this.scrollTop)}
+if(this.showCustomScrollbars){if(this.hscrollOn&&this.hscrollbar)this.hscrollbar.setThumb();if(this.vscrollOn&&this.vscrollbar)this.vscrollbar.setThumb()}
+if(actuallyMoved)this.$u6()}
+,isc.A.scrolled=function isc_Canvas_scrolled(){}
+,isc.A.$u6=function isc_Canvas__scrolled(){if(!isc.EH.$ky){var _1=isc.EH.lastEvent,_2=isc.EH.isMouseEvent(_1.eventType),_3=_2?_1.target:isc.EH.lastMoveTarget;if(_3!=null){if(!this.contains(_3,true))_3=null;else if(!_2&&_3!=this){var _4=this.getOffsetX(),_5=this.getOffsetY();if(!_3.visibleAtPoint(isc.EH.getX(),isc.EH.getY(),false,null,this))
+{_3=null}}
+if(_3!=null){isc.EH.$kx(null,isc.EH.lastEvent)}}}
+this.$81b();if(this.scrolled)this.scrolled()}
+,isc.A.$81b=function isc_Canvas__childrenCoordsChanged(){if(!isc.Element.cacheOffsetCoords)return;var _1=this.children;if(_1!=null&&_1.length>0){for(var i=0;i<_1.length;i++){_1[i].$808=_1[i].$809=null;_1[i].$81b()}}}
+,isc.A.scrollToPercent=function isc_Canvas_scrollToPercent(_1,_2,_3){if(isc.isA.String(_1))_1=parseInt(_1);if(isc.isA.String(_2))_2=parseInt(_2);if(!isc.isA.Number(_1))_1=0;if(!isc.isA.Number(_2))_2=0;_1=parseInt(_1/ 100*Math.max(0,(this.getScrollWidth()-this.getViewportWidth())));_2=parseInt(_2/ 100*Math.max(0,(this.getScrollHeight()-this.getViewportHeight())));this.scrollTo(_1,_2,_3||"scrollToPercent")}
+,isc.A.$u5=function isc_Canvas__scrollHandle(_1,_2){var _3=this.getScrollingMechanism();if(_3==isc.Canvas.NATIVE){var _4=this.getScrollHandle();if(_4){this.$u7=true;_4.scrollLeft=_1;_4.scrollTop=_2;delete this.$u7;if(_4.scrollLeft!=this.scrollLeft||_4.scrollTop!=this.scrollTop){this.scrollLeft=_4.scrollLeft;this.scrollTop=_4.scrollTop}}}else if(_3==isc.Canvas.NESTED_DIV){var _4=this.getHandle();if(_4==null){this.logWarn(this.getCallTrace(arguments)+" in NS6 with null handle");return}
+_4=_4.style;_4.left=-_1+"px";_4.top=-_2+"px"}}
+,isc.A.$lh=function isc_Canvas__handleCSSScroll(_1,_2){isc.EH.$h1("SCR");if(isc.$cv)arguments.$cw=this;if(this.$u7)return;if(isc.Browser.isMoz&&!_1&&(_2||isc.Browser.geckoVersion<20030312)){if(!this.$u8)
+this.$u8=this.delayCall("$lh",[true],10);return}
+this.$u8=null;if(!this.isDrawn())return;var _3=this.getScrollHandle(),_4=_3.scrollLeft,_5=_3.scrollTop;if(_4==this.scrollLeft&&_5==this.scrollTop)return;var _6=this.getScrollingMechanism();if(_6!=isc.Canvas.NATIVE){this.logWarn("unsupported native scroll occurred on this widget - resetting");if(_6==isc.Canvas.NESTED_DIV){_3.scrollLeft=_3.scrollTop=0}else{_3.scrollLeft=this.scrollLeft;_3.scrollTop=this.scrollTop}
+return}
+this.scrollTo(_4,_5,"nativeScroll");isc.EH.$h2()}
+,isc.A.mouseWheel=function isc_Canvas_mouseWheel(){if((this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL)&&this.showCustomScrollbars&&this.vscrollOn)
+{var _1=this.ns.EH.lastEvent.wheelDelta;var _2=this.scrollTop+Math.round(_1*isc.Canvas.scrollWheelDelta);this.scrollTo(this.getScrollLeft(),_2,"mouseWheel");return false}
+return true}
+,isc.A.isDragScrolling=function isc_Canvas_isDragScrolling(){if(this.vscrollOn&&this.vscrollbar&&this.vscrollbar.isDragScrolling())return true;if(this.hscrollOn&&this.hscrollbar&&this.hscrollbar.isDragScrolling())return true;return false}
+,isc.A.isRepeatTrackScrolling=function isc_Canvas_isRepeatTrackScrolling(){if(this.vscrollOn&&this.vscrollbar&&this.vscrollbar.isRepeatTrackScrolling())return true;if(this.hscrollOn&&this.hscrollbar&&this.hscrollbar.isRepeatTrackScrolling())return true;return false}
+,isc.A.handleKeyPress=function isc_Canvas_handleKeyPress(_1,_2){var _3;if(this.convertToMethod("keyPress")){_3=this.keyPress(_1,_2)}
+if(_3!=false&&this.shouldCancelKey!=null&&this.shouldCancelKey(_1,_2))
+{_3=false}
+if(_3==false)return false;var _4=_1.keyName;if(this._useFocusProxy&&((isc.Browser.isMoz&&this.canSelectText)||isc.Browser.isSafari)&&_4=="Tab")
+{this.setFocus(true)}
+if((this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL)&&this.showCustomScrollbars)
+{_3=this.handleKeyboardScroll(_4)}
+return _3}
+,isc.A.handleKeyboardScroll=function isc_Canvas_handleKeyboardScroll(_1){var _2=0,_3=0;if(_1=="Page_Up")_3-=this.getViewportHeight();else if(_1=="Page_Down")_3+=this.getViewportHeight();else if(_1=="Arrow_Up")_3-=10;else if(_1=="Arrow_Down")_3+=10;else if(_1=="Arrow_Left")_2-=10;else if(_1=="Arrow_Right")_2+=10;var _4="cancel native keyPress scrolling";if(_2!=0||_3!=0){this.scrollTo(this.scrollLeft+_2,this.scrollTop+_3,_4);return false}
+if(_1=="Home"){this.scrollTo(null,0,_4);return false}else if(_1=="End"){this.scrollTo(null,(this.getScrollHeight()-this.getViewportHeight()),_4);return false}}
+,isc.A.handleKeyDown=function isc_Canvas_handleKeyDown(_1,_2){var _3
+if(this.convertToMethod("keyDown")){_3=this.keyDown(_1,_2)}
+if(this.cancelNativeScrollOnKeyDown&&(this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL)&&this.showCustomScrollbars)
+{var _4=isc.EH.getKey();if(this.$90e[_4]==true)_3=false}
+return _3}
+,isc.A.$q5=function isc_Canvas__setHandleRect(_1,_2,_3,_4){if(this.showCustomScrollbars&&this.vscrollOn&&_1!=null&&this.isRTL()){_1+=this.getScrollbarSize()}
+if(_3!=null||_4!=null){var _5=this.$sf(_3,_4);_3=_5[0];_4=_5[1]}
+var _6=this.getStyleHandle();if(_6){if(_1!=null&&isc.isA.Number(_1))this.$u9(_6,isc.Canvas.LEFT,_1);if(_2!=null&&isc.isA.Number(_2))this.$u9(_6,isc.Canvas.TOP,_2);if(_3!=null&&isc.isA.Number(_3))this.$u9(_6,this.$o6,Math.max(_3,1));if(_4!=null&&isc.isA.Number(_4))this.$u9(_6,this.$o5,Math.max(_4,1))}}
+,isc.A.$u9=function isc_Canvas__assignSize(_1,_2,_3){if(isc.Browser.isIE||isc.Browser.isOpera){if(!isc.Browser.isStrict){_1[_2]=_3}else{if(_3<0&&(_2==this.$o6||_2==this.$o5))_3=0;_1[_2]=_3+this.$ph}}else{if(_1==null){return}
+_1[_2]=_3+this.$ph}}
+,isc.A.$qi=function isc_Canvas__sizeBackMask(){var _1=this._backMask;if(!_1)return;if(this.showEdges){var _2=this.$l0,_3=this.maskEdgeCenterOnly,_4=_3?_2.$y4:_2.$tb,_5=_3?_2.$y5:_2.$tc,_6=_3?_2.$y6:_2.$td,_7=_3?_2.$y7:_2.$te,_8=this.getVisibleWidth()-(_4+_5),_9=this.getVisibleHeight()-(_6+_7);if(_8<=0||_9<=0)_1.hide();else{if(this.isVisible())_1.show();_1.setRect(this.getLeft()+_4,this.getTop()+_6,_8,_9)}}else{_1.setRect(this.getRect())}}
+,isc.A.getTextDirection=function isc_Canvas_getTextDirection(){if(this.$81a)return this.$81a;var _1=this;while(_1){if(_1.textDirection!=null){return(this.$81a=_1.textDirection)}
+_1=_1.parentElement;if(_1&&_1.eventProxy)_1=_1.eventProxy}
+return(this.$81a=isc.Page.getTextDirection())}
+,isc.A.isRTL=function isc_Canvas_isRTL(){return(this.getTextDirection()==isc.Canvas.RTL)}
+,isc.A.getRTLSign=function isc_Canvas_getRTLSign(){return this.isRTL()?-1:1}
+,isc.A.setVisibility=function isc_Canvas_setVisibility(_1){if(this.$va!=null&&!this.$vb)
+this.finishAnimation(this.$va);if(this.$vc!=null&&!this.$vd)
+this.finishAnimation(this.$vc);if(this.fadeAnimation)this.finishAnimation("fade");if(!isc.isA.String(_1)){_1=(_1!=false?isc.Canvas.INHERIT:isc.Canvas.HIDDEN)}
+if(this.visibility==_1)return;var _2=this.isVisible();this.visibility=_1;if(this.isDrawn()){if(!_2&&this.isVisible()){if(this.isDirty()){this.redraw("show() while dirty")}else if(this.children&&this.children.length>0){var _3=isc.Canvas.$nm.duplicate();for(var i=0;i<_3.length;i++){var _5=_3[i];if(_5&&_5.isDirty()&&this.$sr(_5)){_5.redraw("show() on parent while dirty")}}}
+this.$ve()}
+this.$vf(_1)}
+if(_2&&!this.isVisible()){this.$ve()}
+if(this.peers){for(var i=0;i<this.peers.length;i++){var _6=this.peers[i];if(this.isVisible()&&((_6==this.hscrollbar&&!this.hscrollOn)||(_6==this.vscrollbar&&!this.vscrollOn)))continue;if(this.isVisible()&&_6==this._shadow&&!this.showShadow)continue;if(_6.$jq)_6.setVisibility(_1)}}
+if(this.children)this.children.map("parentVisibilityChanged",_1,this);if(this.parentElement)this.parentElement.childVisibilityChanged(this,_1);if(this._useFocusProxy)this.$vg();this.$807()}
+,isc.A.$807=function isc_Canvas__visibilityChanged(){if(!this.isDrawn())return;var _1=this.isVisible();if(_1!=this.$806){this.$806=_1;if(this.visibilityChanged!=null){this.visibilityChanged(this.isVisible())}}}
+,isc.A.parentVisibilityChanged=function isc_Canvas_parentVisibilityChanged(_1,_2){if(this.children)this.children.map("parentVisibilityChanged",_1,_2);this.$ve();if(this==isc.Canvas.$rl)isc.Canvas.hideResizeThumbs();if(this._useFocusProxy)this.$vg();if(_2.$sr(this))this.$807()}
+,isc.A.childVisibilityChanged=function isc_Canvas_childVisibilityChanged(_1,_2){this.$t6("childVisChange")}
+,isc.A.childCleared=function isc_Canvas_childCleared(_1){if(!this.destroying)this.$t6("childClear")}
+,isc.A.peerCleared=function isc_Canvas_peerCleared(_1){}
+,isc.A.childDrawn=function isc_Canvas_childDrawn(_1){if(this.isDrawn())this.$t6("childDraw")}
+,isc.A.peerDrawn=function isc_Canvas_peerDrawn(_1){}
+,isc.A.$vg=function isc_Canvas__updateFocusProxyVisibility(){if(!this._useFocusProxy||!this.$qj)return;var _1=this.isVisible(),_2=this.$sl();if(_2){if(_1&&_2.style.visibility==isc.Canvas.HIDDEN)
+_2.style.visibility=isc.Canvas.VISIBLE
+if(!_1&&_2.style.visibility!=isc.Canvas.HIDDEN)
+_2.style.visibility=isc.Canvas.HIDDEN}}
+,isc.A.$vf=function isc_Canvas__setHandleVisibility(_1){var _2=this.getStyleHandle();if(_2!=null)_2.visibility=_1}
+,isc.A.$ve=function isc_Canvas__updateHandleDisplay(){if(!this.hideUsingDisplayNone||!this.isDrawn())return;var _1=this.getStyleHandle();if(!this.isVisible()&&!this.$62u){this.$vh=_1.display;this.$62u=true;_1.display=this.$27r;this.$808=this.$809=null}else if(this.isVisible()&&this.$62u){_1.display=(this.$vh?this.$vh:isc.emptyString);delete this.$62u}}
+,isc.A.$418=function isc_Canvas__drawOnShow(){return(this.getDrawnState()==isc.Canvas.UNDRAWN)&&!this.parentElement&&!this.masterElement}
+,isc.A.show=function isc_Canvas_show(){if(isc.$cv)arguments.$cw=this;var _1=this.hasFocus;if(this.$418()){this.draw(true)}
+this.setVisibility(isc.Canvas.INHERIT);if(_1&&this.hasFocus){this.logInfo("Show: Hidden / Undrawn widget marked as having focus - calling focus()","events");this.hasFocus=false;this.focus()}
+if(this.autoShowParent&&this.parentElement)this.parentElement.show()}
+,isc.A.showRecursively=function isc_Canvas_showRecursively(){var _1=this.getParentElements();if(this.$86x==null&&_1.isEmpty()){this.show()}else{this.setVisibility(isc.Canvas.INHERIT);if(this.$86x!=null){_1.add(window[this.$86x])}
+for(var i=0;i<_1.length;i++){_1[i].showRecursively();if(isc.TabSet!=null&&isc.isA.TabSet(_1[i])){_1[i].selectTab(_1[i].tabForPane(this))}else if(isc.SectionStack!=null&&isc.isA.SectionStack(_1[i])){_1[i].expandSection(_1[i].sectionForItem(this))}}}}
+,isc.A.$414=function isc_Canvas__relativePageResized(){if(!this.isDrawn()||this.parentElement||this.position!=this.$411)return;var _1=this.$412,_2=this.$413,_3=this.getPageLeft(),_4=this.getPageTop();this.$tx=(_3-_1);this.$ty=(_4-_2);this.$t2();this.$412=_3;this.$413=_4;isc.Page.setEvent("resize",this,isc.Page.FIRE_ONCE,"$414")}
+,isc.A.hide=function isc_Canvas_hide(){this.$rk();this.setVisibility(isc.Canvas.HIDDEN)}
+,isc.A.isVisible=function isc_Canvas_isVisible(){var _1=this;while(_1){if(_1.visibility==isc.Canvas.HIDDEN)return false;if(_1.visibility==isc.Canvas.VISIBLE)return true;_1=_1.parentElement}
+return true}
+,isc.A.$st=function isc_Canvas__isDisplayNone(){var _1=this;while(_1){if(_1.visibility==isc.Canvas.HIDDEN&&_1.hideUsingDisplayNone)return true;_1=_1.parentElement}
+return false}
+,isc.A.setEnabled=function isc_Canvas_setEnabled(_1){this.logWarn("call to deprecated method 'setEnabled()' - use 'setDisabled()' instead.");var _2=((_1==null||isc.isA.Boolean(_1))?!_1:(_1==this.$pi));this.setDisabled(_2)}
+,isc.A.setDisabled=function isc_Canvas_setDisabled(_1){if(_1==null)_1=false;if(!isc.isA.Boolean(_1))_1=(_1==this.$pi);if(this.disabled==_1)return;if(this.peers)this.peers.map("masterDisabled",_1);var _2=this.isDisabled()
+this.disabled=_1;var _3=this.isDisabled();if(_2!=_3){this.setHandleDisabled(_3);if(this.children)this.children.map("parentDisabled",_3)}}
+,isc.A.masterDisabled=function isc_Canvas_masterDisabled(_1){this.setDisabled(_1)}
+,isc.A.parentDisabled=function isc_Canvas_parentDisabled(_1){if(this.disabled)return;if(!this.parentElement.redrawOnDisable)this.setHandleDisabled(_1);if(this.children)this.children.map("parentDisabled",_1)}
+,isc.A.setHandleDisabled=function isc_Canvas_setHandleDisabled(_1){if(!this.isDrawn())return;if(this.redrawOnDisable)this.markForRedraw("setDisabled");if(this.$kk())this.disableKeyboardEvents(_1)}
+,isc.A.disableKeyboardEvents=function isc_Canvas_disableKeyboardEvents(_1,_2){if(_1){this.$vi(-1);if(this.accessKey!=null)this.$m9(null)}else{this.$vi(this.getTabIndex());if(this.accessKey!=null)this.$m9(this.accessKey)}
+if(_1&&this.hasFocus)this.blur();if(_2&&this.children){for(var i=0;i<this.children.length;i++){this.children[i].disableKeyboardEvents(_1,true)}}}
+,isc.A.enable=function isc_Canvas_enable(){if(this.disabled)this.setDisabled(false)}
+,isc.A.disable=function isc_Canvas_disable(){if(!this.disabled)this.setDisabled(true)}
+,isc.A.isDisabled=function isc_Canvas_isDisabled(){var _1=this;while(_1){if(_1.disabled)return true;_1=_1.parentElement;if(_1&&_1.eventProxy)_1=_1.eventProxy}
+return false}
+,isc.A.isEnabled=function isc_Canvas_isEnabled(){this.logWarn("Call to deprecated 'isEnabled()' method - should use isDisabled() instead");return!this.isDisabled()}
+,isc.A.$kk=function isc_Canvas__canFocus(){if(this.canFocus!=null)return this.canFocus;if((this.overflow==isc.Canvas.SCROLL)||((this.overflow==isc.Canvas.AUTO)&&(this.vscrollOn||this.hscrollOn))){return true}
+return false}
+,isc.A.setCanFocus=function isc_Canvas_setCanFocus(_1){this.canFocus=_1;this.$ur()}
+,isc.A.$ur=function isc_Canvas__updateCanFocus(){this.$vj(this.$kk());this.canFocusChanged()}
+,isc.A.$vj=function isc_Canvas__updateHandleForFocus(_1){var _2;if(this._useFocusProxy){if(_1){_2=this.$sl();if(!_2)return this.makeFocusProxy()}else{this.$qp();return}
+if(isc.Browser.isSafari&&this.getTabIndex()==-1){this.$qp();return}}
+if(this.$qc()){if(_1&&this.accessKey){this.$qd()}else if(this.$qt){this.$qu()}}
+if(this._useNativeTabIndex)_2=this.getFocusHandle();if(_1){this.$vk(this.getTabIndex(),this.$sp);if(_2!=null){var _3=this.$sg(),_4=this.$si();_2.onfocus=_3;_2.onblur=_4;if(this.accessKey)this.$m9(this.accessKey)}}else{if(_2!=null){_2.onFocus=null;_2.onBlur=null;this.$vi(-1);if(_2.accessKey!=null)this.$m9(null)}}}
+,isc.A.canFocusChanged=function isc_Canvas_canFocusChanged(){var _1=this.parentElement;while(_1){_1.childCanFocusChanged(this);_1=_1.parentElement}}
+,isc.A.childCanFocusChanged=function isc_Canvas_childCanFocusChanged(_1){}
+,isc.A.setShowFocusOutline=function isc_Canvas_setShowFocusOutline(_1,_2){if(!_2&&this.showFocusOutline==_1)return;if(!_2)this.showFocusOutline=_1;if(isc.Browser.isMoz){var _3=this.getClipHandle();if(_3){_3.style.MozOutlineStyle=(_1?isc.emptyString:this.$27r)}}else{var _3=this.getHandle();if(_3)_3.hideFocus=!_1}}
+,isc.A.$vl=function isc_Canvas__readyToSetFocus(_1){return(this.isDrawn()&&this.visibleInDOM()&&(!_1||!this.isDisabled()))}
+,isc.A.visibleInDOM=function isc_Canvas_visibleInDOM(){if(!this.isVisible())return false;var _1=this;while(_1.parentElement)_1=_1.parentElement;if(_1.position==isc.Canvas.ABSOLUTE)return true;var _2=this.getDocumentBody();var _3=_1.getClipHandle().parentNode;while(_3&&_3!=_2){var _4=_3.style;if(_4&&_4.visibility==this.$nz)return false;if(_4&&_4.display==this.$27r)return false;_3=_3.parentNode}
+return true}
+,isc.A.getFocusHandle=function isc_Canvas_getFocusHandle(){if(this._useNativeTabIndex){return this.getClipHandle()}else if(this._useFocusProxy&&this.$qj){return this.$sl()}
+return null}
+,isc.A.setFocus=function isc_Canvas_setFocus(_1,_2){if(!this.$vl(_1))return;var _3=this.getFocusHandle(_1);if(_1&&this.$kk()){if(_3!=null){if(isc.Browser.isIE&&document.activeElement==_3){this.logInfo("setFocus() not calling element.focus() as element already has "+"native focus","nativeFocus")}else{this.logInfo("about to call native focus()"+(this.logIsDebugEnabled("traceFocus")?this.getStackTrace():""),"nativeFocus");isc.EH.$lg=this;_3.focus();isc.EH.$vm=this}}else{this.ns.EH.focusInCanvas(this)}}else if(this.hasFocus){if(_3){this.logInfo("about to call native blur()"+(this.logIsDebugEnabled("traceBlur")?this.getStackTrace():""),"nativeFocus");isc.EH.$ld=this;_3.blur()}else{this.ns.EH.blurFocusCanvas(this)}}}
+,isc.A.$vn=function isc_Canvas__restoreFocus(){var _1=isc.EH.$ke;if(_1!=null&&_1!=this){this.logDebug("not restoring focus; focus moved to: "+_1,"nativeFocus");return}
+var _2=isc.EH.$lg;if(_2!=null&&_2!=this){this.logDebug("not restoring focus; focus about to move to:"+_2,"nativeFocus");return}
+this.logDebug("restoring focus from zIndex change","nativeFocus");this.$vo(true)}
+,isc.A.focus=function isc_Canvas_focus(_1){if(isc.$cv)arguments.$cw=this;this.setFocus(true,_1)}
+,isc.A.blur=function isc_Canvas_blur(_1){if(isc.$cv)arguments.$cw=this;this.setFocus(false,_1)}
+,isc.A.focusAtEnd=function isc_Canvas_focusAtEnd(_1){return this.focus()}
+,isc.A.$vo=function isc_Canvas__setFocusWithoutHandler(_1,_2){this.$vp=true;this.setFocus(_1,_2)}
+,isc.A.$lf=function isc_Canvas__focusChanged(_1){if(_1==null)_1=(this.ns.EH.$ke==this);this.hasFocus=_1;if(this.$vp){delete this.$vp;return false}
+this.$vq=true;if(this.focusChanged!=null){this.convertToMethod("focusChanged");this.focusChanged(_1)}
+if(this.redrawOnFocus)this.markForRedraw("setFocus");this.$vq=false}
+,isc.A.$rk=function isc_Canvas__updateFocusForHide(){var _1=this.ns.EH.getFocusCanvas();if(this.$sr(_1)){if(isc.isA.Canvas(_1.focusOnHide)&&_1.focusOnHide.isDrawn()&&_1.focusOnHide.isVisible()){_1.focusOnHide.focus()}
+else{_1.blur();if(_1.hasFocus)isc.EH.blurFocusCanvas(_1)}}}
+,isc.A.containsFocus=function isc_Canvas_containsFocus(){var _1=this.ns.EH.getFocusCanvas();return this.contains(_1,true)}
+,isc.A.setAccessKey=function isc_Canvas_setAccessKey(_1){this.accessKey=_1;if(this.$kk()&&!this.isDisabled()){this.$m9(this.accessKey)}}
+,isc.A.$m9=function isc_Canvas__setHandleAccessKey(_1){if(this.$qc()){if(_1==null)this.$qu();else{if(this.$qt)this.$qt.accessKey=_1;else this.$qd()}
+return}
+if(this._useNativeTabIndex){var _2=this.getHandle();if(_2!=null)_2.accessKey=_1}
+if(this._useFocusProxy&&this.$qj){var _2=this.$sl();if(_2!=null){if(isc.Browser.isMoz){this.$qp();this.makeFocusProxy()}else{_2.accessKey=_1}}}}
+,isc.A.getAccessKey=function isc_Canvas_getAccessKey(){return this.accessKey}
+,isc.A.getTabIndex=function isc_Canvas_getTabIndex(){if(this.tabIndex==null){this.$vr()}
+return this.tabIndex}
+,isc.A.getTabIndexSpan=function isc_Canvas_getTabIndexSpan(){return 1}
+,isc.A.setTabIndex=function isc_Canvas_setTabIndex(_1){var _2=isc.Canvas.TAB_INDEX_FLOOR;if(_1>=_2){var _3=_2-1;this.logWarn("setTabIndex(): Passed index of "+_1+". This method does not support setting a tab index greater than "+_3+". Setting tab index for this widget to "+_3+this.getStackTrace());_1=_3}
+this.$rp();this.$vk(_1,false)}
+,isc.A.$vk=function isc_Canvas__setTabIndex(_1,_2){this.$sp=_2;this.tabIndex=_1;if(this.$kk()&&!this.isDisabled()){this.$vi(_1)}}
+,isc.A.$vi=function isc_Canvas__setHandleTabIndex(_1){if(this._useNativeTabIndex&&this.isDrawn()){var _2=this.getFocusHandle();_2.tabIndex=_1;if(isc.Browser.isIE)isc.Canvas.$vs()}
+if(this._useFocusProxy){if(!this.$qj)return this.makeFocusProxy();var _2=this.$sl();var _3=(this.hasFocus&&!this.$vq);if(_3&&_2)_2.blur();if(isc.Browser.isSafari&&_1<0)return this.$qp();if(_2!=null){_2.tabIndex=_1;if(isc.Browser.isMoz){_2.style.MozUserFocus=(_1<0?"ignore":"normal")}
+if(_3)_2.focus()}}}
+,isc.A.$vr=function isc_Canvas__autoAllocateTabIndex(){var _1=isc.Canvas;if(_1.$vt==null){_1.$vt=_1.TAB_INDEX_FLOOR}
+var _2=isc.EH.$kl;if(_2)_1.$vt+=_2.getTabIndexSpan();_1.$vt+=_1.TAB_INDEX_GAP
+if(_1.$vt>isc.Canvas.TAB_INDEX_CEILING&&!isc.Canvas.$vu)
+{isc.Canvas.logWarn("Auto allocation of tab-indices has reached native browser ceiling "+"- tab-order cannot be guaranteed for widgets on this page.");isc.Canvas.$vu=true}
+this.$vk(_1.$vt,true);if(_2){_2.$vv(this);this.$vw=_2}else{isc.EH.$kj=this}
+isc.EH.$kl=this}
+,isc.A.$vx=function isc_Canvas__setTabBefore(_1){if(this==_1||this.$vy()==_1)return;var _2=_1.getTabIndex();if(!_1.$sp){this.logWarn("$vx() attempting to set tab index adjacent to widget "+_1+" with explicitly specified tabIndex ["+_1.tabIndex+"]. This method can only manipulate widgets with auto-assigned tab indexes.");return}
+var _3=_1.$vw;var _4=this.$vz(),_5=this.$vy();if(isc.EH.$kl==this)isc.EH.$kl=_4;if(isc.EH.$kj==this)isc.EH.$kj=_5;if(_4!=null)
+_4.$vv(_5);if(_5!=null)
+_5.$v0(_4);this.$v0(null);this.$vv(null);this.$v1(_1.$vz(),_1);this.$v2()}
+,isc.A.$sq=function isc_Canvas__setTabAfter(_1){if(this==_1||this.$vw==_1)return;_1.getTabIndex();if(!_1.$sp){this.logWarn("$sq() attempting to set tab index adjacent to widget "+_1+" with explicitly specified tabIndex ["+_1.tabIndex+"]. This method can only manipulate widgets with auto-assigned tab indexes.");return}
+var _2=_1,_3=this.$vz(),_4=this.$vy();if(isc.EH.$kl==this)isc.EH.$kl=_3;if(isc.EH.$kj==this)isc.EH.$kj=_4;if(_3!=null)
+_3.$vv(_4);if(_4!=null)
+_4.$v0(_3);this.$v0(null);this.$vv(null);this.$v1(_1,_1.$vy());this.$v2()}
+,isc.A.$v1=function isc_Canvas__slotTabBetween(_1,_2){if(_2==null)return this.$vr();if(_1==null){var _3=_2.$vy();_2.$rp();this.$vv(_3);this.$v0(null);this.$vk(_2.tabIndex,true);isc.EH.$kj=this;_2.$v1(this,_3);return}
+this.$vv(_2);_2.$v0(this);this.$v0(_1);_1.$vv(this);var _4=_1.tabIndex+_1.getTabIndexSpan(),_5=_2.tabIndex,_6=_4+Math.floor((_5-_4)/2),_7=this.getTabIndexSpan();if((_6+_7)>_5){_2.$v3((_6+_7)-_5)}
+if(this.logIsDebugEnabled("tabIndex")){this.logDebug("Putting "+this.getID()+" in tab order between: "+_1.getID()+":"+_1.tabIndex+", and :"+_2.getID()+":"+_2.tabIndex+". Resulting tabIndex:"+_6,"tabIndex")}
+this.$vk(_6,true)}
+,isc.A.$v3=function isc_Canvas__shiftTabIndexForward(_1){var _2=this.$vy();if(_2==null){this.$vk(this.tabIndex+_1+isc.Canvas.TAB_INDEX_GAP,true);return}
+var _3=_2.getTabIndex(),_4=_3-this.getTabIndexSpan();if(this.tabIndex+_1<_4)this.$vk(_4,true);else{_2.$v3(_1-(_4-this.tabIndex));this.$vk(_2.tabIndex-this.getTabIndexSpan(),true)}}
+,isc.A.$vy=function isc_Canvas__getNextTabWidget(_1){if(!_1)return this.$v4;else return this.$vw}
+,isc.A.$vz=function isc_Canvas__getPreviousTabWidget(){return this.$vy(true)}
+,isc.A.$vv=function isc_Canvas__setNextTabWidget(_1,_2){if(!_2)this.$v4=_1;else this.$vw=_1}
+,isc.A.$v0=function isc_Canvas__setPreviousTabWidget(_1){return this.$vv(_1,true)}
+,isc.A.$kf=function isc_Canvas__focusInNextTabElement(_1,_2){if(isc.CanvasItem&&this.canvasItem!=null&&this.canvasItem.form!=null){this.canvasItem.form.$kf(_1,_2);return}
+var _3=this;do{_3=(_1?_3.$vy():_3.$vz())}while(_3&&(isc.EH.targetIsMasked(_3,_2)||_3.isDisabled()||!_3.isDrawn()||!_3.isVisible()||!_3.$kk())&&(!isc.CanvasItem||_3.canvasItem==null||_3.canvasItem.form==null))
+if(_3){this.logInfo("focusInNextTabElement() shifting focus to:"+_3,"syntheticTabIndex");_3.focusAtEnd(_1)}else if(_1){this.logInfo("focusInNextTabElement() shifting focus to first widget","syntheticTabIndex");if(isc.EH.$kj==null||(isc.EH.$kj==this&&(this.isDisabled()||!this.isDrawn()||!this.isVisible()||!this.$kk()||this.isMasked(_2))))
+{return}
+isc.EH.$kh(_2)}else{this.logInfo("focusInNextTabElement() shifting focus to last widget","syntheticTabIndex");if(isc.EH.$kl==null||(isc.EH.$kl==this&&(this.isDisabled()||!this.isDrawn()||!this.isVisible()||!this.$kk()||this.isMasked(_2))))
+{return}
+isc.EH.$kg(_2)}}
+,isc.A.$v2=function isc_Canvas__slotChildrenIntoTabOrder(){var _1=isc.isA.Layout(this)?this.members:this.children;if(!_1||_1.length==0)return;var _2=this.$vy();for(var i=_1.length-1;i>=0;i--){if(_1[i]==null||(_1[i].tabIndex!=null&&!_1[i].$sp))continue;if(_2==null)_1[i].$sq(this);else _1[i].$vx(_2);_2=_1[i]}}
+,isc.A.$v5=function isc_Canvas__getLastAutoIndexDescendant(){var _1=this.children;if(isc.Layout&&isc.isA.Layout(this))_1=this.members;if(_1!=null){for(var i=_1.length-1;i>=0;i--){if(_1[i]==null)continue;var _3=_1[i].$v5();if(_3!=null)return _3}}
+if(this.tabIndex==null||this.$sp)return this;return null}
+,isc.A.$rp=function isc_Canvas__removeFromAutoTabOrder(){if(!this.$sp||!this.tabIndex)return;var _1=this.$vz(),_2=this.$vy();if(_1==null&&_2==null&&isc.EH.$kl!=this&&isc.EH.$kj!=this)return;if(_1){_1.$vv(_2)}else{isc.EH.$kj=_2}
+if(_2){_2.$v0(_1)}else{isc.EH.$kl=_1}
+this.$v0(null);this.$vv(null)}
+,isc.A.getZIndex=function isc_Canvas_getZIndex(_1){if(!this.isDrawn()||isc.Browser.isSafari){if(_1&&this.zIndex==isc.Canvas.AUTO){this.setZIndex(isc.Canvas.getNextZIndex())}
+return this.zIndex}
+return parseInt(this.getStyleHandle().zIndex)}
+,isc.A.setZIndex=function isc_Canvas_setZIndex(_1){var _2=this.zIndex;if(_2==_1)return;var _3=false;if(isc.Browser.isIE&&this.hasFocus&&this._useNativeTabIndex)
+{_3=true;this.logDebug("blurring due to zIndex change","nativeFocus");this.$vo(false)}
+if(_1<_2)this.$v6(_1);this.zIndex=_1;if(this.isDrawn()){if(this.useClipDiv)this.getHandle().style.zIndex=_1
+this.getStyleHandle().zIndex=_1}
+if(_1>_2)this.$v6(_1);if(this.hscrollbar)this.hscrollbar.moveAbove(this);if(this.vscrollbar)this.vscrollbar.moveAbove(this);if(this.clipCorners){var _4=this.$uc;if(_4.TL)_4.TL.moveAbove(this);if(_4.TR)_4.TR.moveAbove(this);if(_4.BL)_4.BL.moveAbove(this);if(_4.BR)_4.BR.moveAbove(this)}
+if(_3){this.delayCall("$vn",[],0)}
+this.zIndexChanged(_2,_1)}
+,isc.A.$v6=function isc_Canvas__adjustSpecialPeers(_1){if(this.$sb())this.$l0.setZIndex(_1-1);if(this._backMask)this._backMask.setZIndex(_1-2);if(this._shadow)this._shadow.setZIndex(_1-3);if(this.modalMask)this.modalMask.setZIndex(_1-4)}
+,isc.A.zIndexChanged=function isc_Canvas_zIndexChanged(_1,_2){if(this.children)this.children.map("parentZIndexChanged")}
+,isc.A.parentZIndexChanged=function isc_Canvas_parentZIndexChanged(){if(this.children)this.children.map("parentZIndexChanged")}
+,isc.A.bringToFront=function isc_Canvas_bringToFront(_1){if(isc.$cv)arguments.$cw=this;isc.Canvas.$ni+=18;this.setZIndex(isc.Canvas.$ni);if(_1&&!this.$qf())return;isc.$nd=true;this.unmask();isc.$nd=false}
+,isc.A.sendToBack=function isc_Canvas_sendToBack(){isc.Canvas.$nh-=18;this.setZIndex(isc.Canvas.$nh)}
+,isc.A.moveAbove=function isc_Canvas_moveAbove(_1){var z=_1.getZIndex(true);this.setZIndex(z+6)}
+,isc.A.moveBelow=function isc_Canvas_moveBelow(_1){var z=_1.getZIndex(true);this.setZIndex(z-6)}
+,isc.A.getContents=function isc_Canvas_getContents(){var _1=(isc.isA.Function(this.contents)?this.contents():this.contents);return this.dynamicContents?_1.evalDynamicString(this,this.dynamicContentsVars):_1}
+,isc.A.setContents=function isc_Canvas_setContents(_1){if(_1!=null)this.contents=_1;this.markForRedraw("setContents")}
+,isc.A.containsIFrame=function isc_Canvas_containsIFrame(){return this.contentsURL!=null&&this.contentsType=="page"}
+,isc.A.getContentsURL=function isc_Canvas_getContentsURL(){return this.contentsURL}
+,isc.A.setContentsURL=function isc_Canvas_setContentsURL(_1,_2){this.contentsURL=_1;_1=isc.Page.getURL(_1);var _3=isc.addProperties({},this.contentsURLParams,_2),_1=isc.rpc.addParamsToURL(_1,_3);if(!this.isDrawn())return;if(this.containsIFrame()){var _4=this.$sk();if(!_4||!_1)this.markForRedraw("setContentsURL");else _4.src=_1}}
+,isc.A.setBackgroundColor=function isc_Canvas_setBackgroundColor(_1){if(_1)this.backgroundColor=_1;if(this.isDrawn()){return this.getStyleHandle().backgroundColor=_1}}
+,isc.A.setBackgroundImage=function isc_Canvas_setBackgroundImage(_1){if(_1)this.backgroundImage=_1;if(this.isDrawn()){if(this.isDrawn())this.getStyleHandle().backgroundImage='url('+this.getImgURL(this.backgroundImage)+')'}}
+,isc.A.setBorder=function isc_Canvas_setBorder(_1){this.$tk=null;if(_1!=null&&!isc.isA.String(_1)){_1=this.$63e(_1)}
+if(_1==null)return;if(isc.endsWith(_1,isc.semi))_1=_1.slice(0,_1.length-1);this.border=_1;var _2=this.getStyleHandle();if(!_2)return;if(_2.border!=_1){_2.border=_1}
+this.adjustOverflow("setBorder");this.innerSizeChanged("Border thickness changed")}
+,isc.A.$63e=function isc_Canvas__convertBorderToString(_1){var _2=_1;if(isc.isA.Number(_1)){_1+="px solid"}else{_1=null;this.logWarn("this.border defined as "+_2+". This property should have a string value - dropping this attribute.")}
+return _1}
+,isc.A.getBorder=function isc_Canvas_getBorder(){return this.border}
+,isc.A.setOpacity=function isc_Canvas_setOpacity(_1,_2,_3){if(!_2&&this.fadeAnimation)this.finishAnimation("fade");var _4=this.opacity;this.opacity=_1;if(this.opacity==100&&!_3&&!(this.smoothFade&&isc.Browser.isMoz))this.opacity=null;if(this.isDrawn()){if(isc.Browser.isMoz){var _5=(this.opacity!=null)?this.opacity/ 100:"";if(this.smoothFade&&(_5==1||this.opacity==null))_5=0.9999;if(this.$65q)this.getStyleHandle().MozOpacity=_5;else this.getStyleHandle().opacity=_5}else if(isc.Browser.isIE){if(!isc.Canvas.neverUseFilters||this.useOpacityFilter){this.getStyleHandle().filter=(this.opacity==null?"":"progid:DXImageTransform.Microsoft.Alpha(opacity="+this.opacity+")")}}else{var _5=(this.opacity!=null)?this.opacity/ 100:"";this.getStyleHandle().opacity=_5}}
+this.$v7(_1,_2,_3||_1!=null);if(isc.Browser.isIE&&this.fixIEOpacity&&this.children){for(var i=0;i<this.children.length;i++){var _7=this.children[i];if(_7.opacity==null&&(_3||_1!=null)){_7.setOpacity(100,_2,true)}else if(_7.opacity==100){_7.setOpacity(null)}}}
+this.opacityChanged(_1,_2)}
+,isc.A.opacityChanged=function isc_Canvas_opacityChanged(_1,_2){}
+,isc.A.$v7=function isc_Canvas__setPeersOpacity(_1,_2,_3){if(!this.peers)return;for(var i=0;i<this.peers.length;i++){if(this.peers[i].$nt){if(this.useOpacityFilter!=null){this.peers[i].useOpacityFilter=this.useOpacityFilter}
+this.peers[i].setOpacity(_1,_2,_3)}else if(this.peers[i]==this.edgedCanvas&&this.edgeOpacity){if(this.useOpacityFilter!=null){this.peers[i].useOpacityFilter=this.useOpacityFilter}
+var _5=Math.round(this.opacity*(this.edgeOpacity*.01));this.peers[i].setOpacity(_5,_2,_3)}}}
+,isc.A.setPrompt=function isc_Canvas_setPrompt(_1){this.prompt=_1;this.updateHover()}
+,isc.A.setCursor=function isc_Canvas_setCursor(_1){if(_1&&_1!=this.cursor){this.cursor=_1;this.$k2()}}
+,isc.A.$v8=function isc_Canvas__applyCursor(_1){if(this.isDrawn()){if((isc.Browser.isMoz||(isc.Browser.isStrict&&isc.Browser.isSafari))&&_1=="hand")_1=isc.Canvas.HAND;this.$v9=_1;this.getStyleHandle().cursor=_1;if(this.useClipDiv)this.getHandle().style.cursor=_1;if(this.$kt){for(var i=0;i<this.$kt.length;i++){this.$kt[i].$v8(_1)}}
+if(this.ns.EH.$wa&&(this==this.ns.EH.getTarget())){this.ns.EH.$wa.setCursor(_1)}}
+if(isc.Browser.isOpera&&isc.EH.lastEvent.target==this)this.markForRedraw()}
+,isc.A.$k2=function isc_Canvas__updateCursor(){var _1=this.getCurrentCursor();if(this.$v9==_1)return;this.$v8(_1)}
+,isc.A.getCurrentCursor=function isc_Canvas_getCurrentCursor(){var _1=this.cursor;if(isc.EH.dragging&&this.$uh&&(isc.EH.dragMoveTarget!=this)){_1=this.noDropCursor}else if(this.isDisabled())_1=this.disabledCursor;else{var _2;if(this.canDragResize&&this.edgeCursorMap){var _3=this.getEventEdge();if(_3&&this.edgeCursorMap[_3]){_1=this.edgeCursorMap[_3];_2=true}}
+if(!_2&&this.canDragReposition&&this.dragRepositionCursor){_1=this.dragRepositionCursor}}
+return _1}
+,isc.A.getHoverTarget=function isc_Canvas_getHoverTarget(_1,_2){var _3=this;while(_3){if(_3.getCanHover()==null){if(_3.prompt!=null)return _3;_3=_3.parentElement}else if(_3.getCanHover()){return _3}else{return null}}
+return null}
+,isc.A.startHover=function isc_Canvas_startHover(_1){isc.Hover.setAction(this,this.$wb,null,this.hoverDelay)}
+,isc.A.stopHover=function isc_Canvas_stopHover(_1){isc.Hover.clear()}
+,isc.A.$wb=function isc_Canvas__handleHover(){var _1=isc.EH,_2=_1.lastMoveTarget;var _3=_1.lastEvent;if(!_2||_2.getHoverTarget(_3)!=this)return;return this.handleHover()}
+,isc.A.getCanHover=function isc_Canvas_getCanHover(){return this.canHover}
+,isc.A.getHoverComponent=function isc_Canvas_getHoverComponent(){}
+,isc.A.handleHover=function isc_Canvas_handleHover(){if(this.hover&&this.hover()==false)return;if(this.showHover){var _1=this.showHoverComponents&&this.getHoverComponent?this.getHoverComponent():null;if(_1!=null&&isc.isA.Canvas(_1)){var _2=this.$wc();isc.Hover.show(_1,_2,null,this)}else{var _3=this.getHoverHTML();if(_3!=null&&!isc.isAn.emptyString(_3)){var _2=this.$wc();isc.Hover.show(_3,_2,null,this)}}}}
+);isc.evalBoundary;isc.B.push(isc.A.updateHover=function isc_Canvas_updateHover(_1){if(isc.Hover.lastHoverCanvas!=this||!isc.Hover.hoverCanvas.isVisible())return;if(_1==null)_1=this.getHoverHTML();isc.Hover.show(_1,this.$wc(),null,this)}
+,isc.A.$80l=function isc_Canvas__hoverHidden(){if(this.hoverCanvas&&this.hoverCanvas.hoverAutoDestroy!=false){this.hoverCanvas.markForDestroy();this.hoverCanvas=null;delete this.hoverCanvas}
+this.hoverHidden()}
+,isc.A.hoverHidden=function isc_Canvas_hoverHidden(){}
+,isc.A.$wc=function isc_Canvas__getHoverProperties(){var _1=isc.EH.getTarget(),_2=isc.isA.CanvasItem(_1)?_1:_1.canvasItem,_3;if(_2){_3={width:(_2.hoverWidth!=null?_2.hoverWidth:this.hoverWidth),height:(_2.hoverHeight!=null?_2.hoverHeight:this.hoverHeight),align:(_2.hoverAlign!=null?_2.hoverAlign:this.hoverAlign),valign:(_2.hoverVAlign!=null?_2.hoverVAlign:this.hoverVAlign),baseStyle:(_2.hoverStyle!=null?_2.hoverStyle:this.hoverStyle),opacity:(_2.hoverOpacity!=null?_2.hoverOpacity:this.hoverOpacity),moveWithMouse:(_2.hoverMoveWithMouse!=null?_2.hoverMoveWithMouse:this.hoverMoveWithMouse),wrap:(_2.hoverWrap!=null?_2.hoverWrap:this.hoverWrap)};return _3}
+return{width:this.hoverWidth,height:this.hoverHeight,align:this.hoverAlign,valign:this.hoverVAlign,baseStyle:this.hoverStyle,opacity:this.hoverOpacity,moveWithMouse:this.hoverMoveWithMouse,wrap:this.hoverWrap}}
+,isc.A.getHoverHTML=function isc_Canvas_getHoverHTML(){return this.prompt}
+,isc.A.setClassName=function isc_Canvas_setClassName(_1){if(this.logIsInfoEnabled(this.$pj)){this.logInfo("call to deprecated setClassName() property - use setStyleName() instead")}
+return this.setStyleName(_1)}
+,isc.A.setStyleName=function isc_Canvas_setStyleName(_1){this.$tk=null;this.$tp=null;this.$81b();if(_1){this.styleName=_1;this.className=_1}
+if(this.getClipHandle())this.getClipHandle().className=this.styleName;if(this.overflow!=isc.Canvas.HIDDEN)this.adjustOverflow("setStyleName")}
+,isc.A.getStateName=function isc_Canvas_getStateName(){var _1=this.getClipHandle().className;return(_1!=null?_1:this.styleName)}
+,isc.A.handleShowContextMenu=function isc_Canvas_handleShowContextMenu(_1){if(_1.target==this&&this.useEventParts){var _2=this.getEventPart(_1);if(_2.part){if(this.$wd(_2.part,"showContextMenu",_2.element,_2.ID,_1)==false)return false}}
+if(this.showContextMenu)return this.showContextMenu(_1)}
+,isc.A.showContextMenu=function isc_Canvas_showContextMenu(){var _1=this.contextMenu;if(_1){_1.target=this;if(!isc.isA.Canvas(_1)){_1.autoDraw=false;this.contextMenu=_1=this.getMenuConstructor().create(_1)}
+_1.showContextMenu()}
+return(_1==null)}
+,isc.A.getMenuConstructor=function isc_Canvas_getMenuConstructor(){var _1=isc.ClassFactory.getClass(this.menuConstructor);if(!_1){isc.logWarn("Class not found for menuConstructor:"+this.menuConstructor+". Defaulting to isc.Menu class");_1=isc.ClassFactory.getClass("Menu")}
+return _1}
+,isc.A.hideContextMenu=function isc_Canvas_hideContextMenu(){if(this.contextMenu)this.contextMenu.hideContextMenu()}
+,isc.A.$kr=function isc_Canvas__allowNativeTextSelection(_1){return this.canSelectText}
+,isc.A.handleMouseMove=function isc_Canvas_handleMouseMove(_1,_2){if(_1.target==this&&this.useEventParts){var _3=this.getEventPart(_1),_4=this.$nw;if(_4&&_4.part&&(_4.part!=_3.part||_4.ID!=_3.ID))
+{this.$wd(_4.part,isc.EH.MOUSE_OUT,_4.element,_4.ID,_1)}
+if(_3.part){var _5=!_4||(_4.ID!=_3.ID),_6=(_5?isc.EH.MOUSE_OVER:isc.EH.MOUSE_MOVE);this.$wd(_3.part,_6,_3.element,_3.ID,_1);if(_5){isc.Hover.setAction(this,this.$we,[_3.element,_3.ID],this.hoverDelay)}}
+this.$nw=_3}
+if(this.mouseMove)return this.mouseMove(_1,_2)}
+,isc.A.$we=function isc_Canvas__handleRectHover(_1,_2){if(this.$nw)this.$wd(this.$nw.part,"hover",_1,_2)}
+,isc.A.handleMouseOut=function isc_Canvas_handleMouseOut(_1,_2){if(_1.target==this&&this.useEventParts){var _3=this.$nw;if(_3&&_3.part){this.$wd(_3.part,isc.EH.MOUSE_OUT,_3.element,_3.ID,_1)}}
+if(this.mouseOut)return this.mouseOut(_1,_2)}
+,isc.A.handleMouseDown=function isc_Canvas_handleMouseDown(_1,_2){var _3=this.$772;if(_3!=null){this.cancelAnimation(_3)}
+if(_1.target==this&&this.useEventParts)this.firePartEvent(_1,isc.EH.MOUSE_DOWN);if(this.mouseDown)return this.mouseDown(_1,_2)}
+,isc.A.handleMouseUp=function isc_Canvas_handleMouseUp(_1,_2){if(_1.target==this&&this.useEventParts)this.firePartEvent(_1,isc.EH.MOUSE_UP);if(this.mouseUp)return this.mouseUp(_1,_2)}
+,isc.A.handleClick=function isc_Canvas_handleClick(_1,_2){if(_1.target==this&&this.useEventParts)this.firePartEvent(_1,isc.EH.CLICK);if(this.click)return this.click(_1,_2)}
+,isc.A.handleDoubleClick=function isc_Canvas_handleDoubleClick(_1,_2){if(_1.target==this&&this.useEventParts)this.firePartEvent(_1,isc.EH.DOUBLE_CLICK);if(this.doubleClick)return this.doubleClick(_1,_2)}
+,isc.A.handleLongTouch=function isc_Canvas_handleLongTouch(_1,_2){return this.handleShowContextMenu(_1,_2)}
+,isc.A.getEventPart=function isc_Canvas_getEventPart(_1){if(!_1)_1=isc.EH.lastEvent;var _2=_1.nativeTarget;return this.getElementPart(_2)}
+,isc.A.getElementPart=function isc_Canvas_getElementPart(_1){var _2,_3;if(_1&&_1.getAttribute)_2=_1.getAttribute(this.$pk);if(_2&&_2!=isc.emptyString){var _4=_1.id;if(_4&&_4!=isc.emptyString){_3=_4.substring(this.getID().length+_2.length+2)}}
+return{part:_2,ID:_3,element:_1}}
+,isc.A.getPartElement=function isc_Canvas_getPartElement(_1){var _2=_1.part,_3=_1.partID,_4=this.getID+"_"+_2;if(_3)_4+=_3;var _5=isc.Element.get(_4);if(_5)return _5;return isc.Element.findAttribute(this.getHandle(),this.$pk,_2)}
+,isc.A.firePartEvent=function isc_Canvas_firePartEvent(_1,_2){if(!this.useEventParts||!_1)return;var _3=this.getEventPart(_1);if(!_3.part)return;if(!_2)_2=_1.eventType;return this.$wd(_3.part,_2,_3.element,_3.ID,_1)}
+,isc.A.$wd=function isc_Canvas__firePartEvent(_1,_2,_3,_4,_5){var _6=this.getPartEventHandler(_1,_2);if(this[_6]){return this[_6](_3,_4,_5)}}
+,isc.A.getPartEventHandler=function isc_Canvas_getPartEventHandler(_1,_2){if(!isc.Canvas.$np[_1])isc.Canvas.$np[_1]={};if(!isc.Canvas.$np[_1][_2]){var _3=_2.substring(0,1).toUpperCase()+_2.substring(1);isc.Canvas.$np[_1][_2]=_1+_3}
+return isc.Canvas.$np[_1][_2]}
+,isc.A.getDragType=function isc_Canvas_getDragType(){return this.dragType}
+,isc.A.willAcceptDrop=function isc_Canvas_willAcceptDrop(){if(this.ns.EH.dragTarget==null)return false;if(this.dropTypes==isc.Canvas.ANYTHING||this.dropTypes==null||isc.is.emptyString(this.dropTypes))
+{return true}
+var _1=this.ns.EH.dragTarget.getDragType();if(_1==null||isc.is.emptyString(_1))return false;if(isc.isA.String(_1)){return this.dropTypes.contains(_1)}else if(isc.isAn.Array(_1)){for(var i=0,_3=true,_4=_1.length;i<_4&&_3;i++){_3=_3&&(this.dropTypes.contains(_1))}
+return _3}
+return false}
+,isc.A.$mb=function isc_Canvas__showDragMask(){if(this._eventMask.visibility==isc.Canvas.HIDDEN)this._eventMask.show()}
+,isc.A.$mc=function isc_Canvas__hideDragMask(){if(this._eventMask.visibility!=isc.Canvas.HIDDEN)this._eventMask.hide()}
+,isc.A.handleDrop=function isc_Canvas_handleDrop(_1,_2){if(this.onDrop!=null&&(this.onDrop()==false))return false;return this.drop(_1,_2)}
+,isc.A.getHSnapPosition=function isc_Canvas_getHSnapPosition(_1,_2){if(!_2){_2=this.snapHDirection}
+if(_2!=isc.Canvas.BEFORE&&_2!=isc.Canvas.AFTER&&_2!=isc.Canvas.NEAREST){return _1}
+var _3=Math.floor(_1/ this.snapHGap)*this.snapHGap;var _4=_3+this.snapHGap;var _5=_3+this.snapHGap/ 2;if(_2==isc.Canvas.BEFORE){return _3}else if(_2==isc.Canvas.AFTER){return _4}else{if(_1<=_5)return _3;else return _4}}
+,isc.A.getVSnapPosition=function isc_Canvas_getVSnapPosition(_1,_2){if(!_2){_2=this.snapVDirection}
+if(_2!=isc.Canvas.BEFORE&&_2!=isc.Canvas.AFTER&&_2!=isc.Canvas.NEAREST){return _1}
+var _3=Math.floor(_1/ this.snapVGap)*this.snapVGap;var _4=_3+this.snapVGap;var _5=_3+this.snapVGap/ 2;if(_2==isc.Canvas.BEFORE){return _3}else if(_2==isc.Canvas.AFTER){return _4}else{if(_1<=_5)return _3;else return _4}}
+,isc.A.shouldSnapOnDrop=function isc_Canvas_shouldSnapOnDrop(_1){return true}
+,isc.A.noSnapDragOffset=function isc_Canvas_noSnapDragOffset(_1){return false}
+,isc.A.setAppImgDir=function isc_Canvas_setAppImgDir(_1){if(_1)this.appImgDir=_1}
+,isc.A.getAppImgDir=function isc_Canvas_getAppImgDir(){return isc.Page.getImgURL("",this.appImgDir)}
+,isc.A.setSkinImgDir=function isc_Canvas_setSkinImgDir(_1){if(_1)this.skinImgDir=_1}
+,isc.A.getSkinImgDir=function isc_Canvas_getSkinImgDir(){return isc.Page.getSkinImgDir(this.skinImgDir)}
+,isc.A.getImgURL=function isc_Canvas_getImgURL(_1,_2){return isc.Canvas.getImgURL(_1,_2,this)}
+,isc.A.imgHTML=function isc_Canvas_imgHTML(_1,_2,_3,_4,_5,_6,_7){return isc.Canvas.imgHTML(_1,_2,_3,_4,_5,_6,_7,this)}
+,isc.A.$wf=function isc_Canvas__getImgHTMLTemplate(_1,_2,_3,_4,_5,_6,_7){return isc.Canvas.imgHTML(_1,_2,_3,_4,_5,_6,_7,this,true)}
+,isc.A.getImage=function isc_Canvas_getImage(_1){if(isc.isA.String(_1))_1=this.getCanvasName()+_1;var _2=this.getHandle();if(_2){if(isc.Page.isXHTML()){return document.getElementById(_1)}else{if(_2.document){return _2.document.images[_1]}else{return document.images[_1]}}}
+return null}
+,isc.A.setImage=function isc_Canvas_setImage(_1,_2,_3){var _4=this.getImage(_1);if(_4==null){this.logWarn("setImage: image '"+_1+"' couldn't be found");return}
+isc.Canvas.$wg(_4,_2,_3,this)}
+,isc.A.linkHTML=function isc_Canvas_linkHTML(_1,_2,_3,_4,_5,_6,_7){return isc.Canvas.linkHTML(_1,_2,_3,_4,_5,_6,_7)}
+,isc.A.inWhichPosition=function isc_Canvas_inWhichPosition(_1,_2,_3){if(!_1||_2<0)return-1;if(_3==isc.Page.RTL){var _4=_1.sum();for(var c=0,_6=_1.length;c<_6;c++){if(_2>=_4-_1[c])return c;_4-=_1[c]}}else{for(var c=0,_6=_1.length;c<_6;c++){if(_2<=_1[c]){return c}
+_2-=_1[c]}}
+return-2}
+,isc.A._canvasList=function isc_Canvas__canvasList(_1){var _2=isc.Canvas._canvasList;if(_1)_2.add(this);else _2.remove(this);if(this.$ih){isc.Canvas._iscInternalCount+=(_1?1:-1)}else{isc.Log.updateStats(this.$f8)}}
+,isc.A.$p6=function isc_Canvas__addStat(_1){if(!this.$ih){isc.Canvas._stats[_1]++;isc.Log.updateStats(_1)}}
+,isc.A.$wh=function isc_Canvas__attachedPeers(_1){var _2=this.$sc;if(!_2)return null;if(_1)return _2[_1]}
+,isc.A.$wi=function isc_Canvas__registerAttachedPeer(_1,_2,_3,_4){if(_1==null||_2==null)return;if(!this.$sc)this.$sc={};if(!this.$sc[_2])this.$sc[_2]=[];this.$sc[_2].add(_1);if(_3!=null)_1.$55s=_3
+if(_4){this.observe(_1,"resized","observer.$88y(observed)")}
+delete this.$s7;delete this.$s8}
+,isc.A.$wj=function isc_Canvas__unRegisterAttachedPeer(_1,_2,_3){if(_1==null||_2==null)return;if(!this.$sc||!this.$sc[_2])return;this.$sc[_2].remove(_1);if(this.isObserving(_1,"resized")){this.ignore(_1,"resized")}
+delete _1.$55s;delete this.$s7;delete this.$s8}
+,isc.A.$88y=function isc_Canvas__attachedPeerResized(_1){this.refreshMargin()}
+,isc.A.refreshMargin=function isc_Canvas_refreshMargin(){this.setMargin(this.margin)}
+,isc.A.$ps=function isc_Canvas__makeCornerClips(){this.$uc={};for(var i=0;i<this.clippedCorners.length;i++){this.$wk(this.clippedCorners[i])}}
+,isc.A.$wk=function isc_Canvas__makeCornerClip(_1){var _2=this.$uc,_3=this.left,_4=this.top,_5=this.cornerClipWidth||this.cornerClipSize,_6=this.cornerClipHeight||this.cornerClipSize;if(_1=="TR"||_1=="BR"){_3=_3+this.getWidth()-_5}
+if(_1=="BL"||_1=="BR"){_4=_4+this.getHeight()-_6}
+if(this.noCornerClipImages&&!(isc.Browser.isIE&&isc.Browser.minorVersion>=5.5)){this.noCornerClipImages=false}
+var _7=_2[_1]=isc.ClassFactory.newInstance({_constructor:(this.noCornerClipImages?"Canvas":"Img"),left:_3,top:_4,width:_5,height:_6,eventProxy:this,src:(this.noCornerClipImages?null:this.$wl(_1)),contents:(this.noCornerClipImages?this.$wm(_5,_6,_1):null)},this.$nv);this.addPeer(_7);_7.moveAbove(this)}
+,isc.A.$qg=function isc_Canvas__finishCornerClips(){if(!this.noCornerClipImages)return;for(var _1 in this.$uc){var _2=this.$uc[_1],_3=_2.getHandle().firstChild,_4=_3.style;_3.filters[0].apply();_4.visibility="hidden";_3.filters[0].percent=71}}
+,isc.A.$wl=function isc_Canvas__getCornerImage(_1){return isc.Img.urlForState(this.cornerClipImage,null,null,this.cornerClipColor,_1)}
+,isc.A.$wm=function isc_Canvas__getCornerHTML(_1,_2,_3){var _4=isc.SB.create();_4.append("<DIV STYLE='width:",2*_1,"px;height:",2*_2,"px;filter:progid:DXImageTransform.Microsoft.iris(irisStyle=circle,motion=out);");if(_3.contains("R"))_4.append("margin-left:",-_1,"px;");if(_3.contains("B"))_4.append("margin-top:",-_2,"px;");_4.append("'><DIV STYLE='overflow:hidden;width:",_1,"px;height:",_2,"px;background-color:",this.cornerClipColor,";");if(_3.contains("R"))_4.append("margin-left:",_1,"px;");if(_3.contains("B"))_4.append("margin-top:",_2,"px;");_4.append("'></DIV></DIV>");return _4.toString()}
+,isc.A.$sb=function isc_Canvas__edgesAsPeer(){return this.showEdges&&!this.edgesAsChild}
+,isc.A.$pq=function isc_Canvas__createEdges(){if(!this.showEdges||isc.isA.EdgedCanvas(this)||this.$l0!=null){return this.$l0}
+var _1=this.$l0=this.$wn();if(this.edgesAsChild){_1.resizeTo("100%","100%");_1.sendToBack();this.addChild(_1)}else{this.addPeer(_1)}
+return _1}
+,isc.A.setEdgeOpacity=function isc_Canvas_setEdgeOpacity(_1){var _2=this.edgeOpacity=_1;if(this.opacity>0&&this.opacity<100){_2=this.opacity*(this.edgeOpacity/ 100)}
+this.$l0.setOpacity(_2)}
+,isc.A.$wn=function isc_Canvas__createEdgedCanvas(){var _1=this.$pl,_2=isc.EdgedCanvas.createRaw();_2.autoDraw=false;_2._generated=true;_2.containedPeer=true;_2.dragTarget=this;_2.visibility=this.visibility;_2.opacity=this.opacity;_2.useOpacityFilter=this.useOpacityFilter;if(this.edgeOpacity!=null){_2.opacity=this.edgeOpacity;_2.$nt=false}
+_2.smoothFade=this.smoothFade;if(this.edgeOverflow!=null)_2.overflow=this.edgeOverflow;_2.eventProxy=this;for(var i=0;i<_1.length;i++){var _4=_1[i];if(this[_4]!=null)_2[_4]=this[_4]}
+if(this.edgeBackgroundColor)_2.backgroundColor=this.edgeBackgroundColor;if(this.edgeCenterBackgroundColor){_2.centerBackgroundColor=this.edgeCenterBackgroundColor}
+if(this.edgeShowCenter!=null)_2.showCenter=this.edgeShowCenter;if(!this.edgesAsChild)_2.zIndex=this.getZIndex(true)-1;_2.completeCreation();return _2}
+,isc.A.setShowShadow=function isc_Canvas_setShowShadow(_1){this.showShadow=_1;if(_1){if(!this._shadow)this.$pr();else if(this.isDrawn())this._shadow.show()}else{if(this._shadow)this._shadow.hide()}}
+,isc.A.$pr=function isc_Canvas__createShadow(){var _1=this._shadow=this.createAutoChild("shadow",{visibility:this.visibility,zIndex:this.getZIndex(true)-3},isc.DropShadow);this.updateShadow(true);this.addPeer(_1);_1.moveBelow(this)}
+,isc.A.updateShadow=function isc_Canvas_updateShadow(_1){if(!_1)this.setShowShadow(this.showShadow);var _2=this._shadow;if(!_2)return;_2.offset=this.shadowOffset;_2.offsetX=this.shadowOffsetX;_2.offsetY=this.shadowOffsetY;_2.softness=this.shadowSoftness;if(this.shadowImage)_2.setEdgeImage(this.shadowImage);_2.setDepth(this.shadowDepth);if(this.dragResizeFromShadow&&this.canDragResize){_2.canDragResize=this.canDragResize;_2.resizeFrom=this.resizeFrom;_2.dragTarget=this}}
+,isc.A.propertyChanged=function isc_Canvas_propertyChanged(_1,_2){if(isc.contains(_1,this.$pm)&&this.updateShadow)this.updateShadow()}
+,isc.A.setIsGroup=function isc_Canvas_setIsGroup(_1){if(_1==this.isGroup)return;var _2=this.shouldShowGroupLabel()&&this.isDrawn();if(_2)this.clear();if(_1){this.$55t=this.border;this.setBorder(this.groupBorderCSS);if(this.shouldShowGroupLabel())this.$55u()}else{this.setBorder(this.$55t||"");if(this.shouldShowGroupLabel())this.$55v()}
+this.isGroup=_1;if(_2)this.draw()}
+,isc.A.shouldShowGroupLabel=function isc_Canvas_shouldShowGroupLabel(){return this.showGroupLabel}
+,isc.A.makeGroupLabel=function isc_Canvas_makeGroupLabel(){if(!this.groupLabel){var _1={autoDraw:false,$jo:false,$ns:true,backgroundColor:this.getGroupLabelBackgroundColor(),eventProxy:this,styleName:this.groupLabelStyleName}
+if(this.groupTitle!=null)_1.contents=this.groupTitle;this.groupLabel=this.createAutoChild("groupLabel",_1)}else{if(this.groupTitle!=null)this.groupLabel.setContents(this.groupTitle);this.groupLabel.setBackgroundColor(this.getGroupLabelBackgroundColor())}}
+,isc.A.getGroupLabelBackgroundColor=function isc_Canvas_getGroupLabelBackgroundColor(){if(this.groupLabelBackgroundColor)return this.groupLabelBackgroundColor;if(this.backgroundColor!=null)return this.backgroundColor;return"white"}
+,isc.A.$55u=function isc_Canvas__showGroupLabel(){this.makeGroupLabel();var _1=this.groupLabel;var _2;if(_1.overflow==isc.Canvas.VISIBLE){if(_1.parentElement!=null)_1.deparent();_1.setTop(-1000);_1.draw();_2=_1.getVisibleHeight()}else{_2=_1.getVisibleHeight()}
+var _3=Math.round(_2/ 2);this.$wi(_1,isc.Canvas.TOP,_3);var _4=_2-_3;if(this.padding)_4+=this.padding;this.setTopPadding(_4);_1.setLeft(this.getLeft()+this.groupLabelPadding);_1.setTop(this.getTop());if(_1.masterElement!=this)this.addPeer(_1);if(this.isDrawn()){if(!_1.isDrawn())_1.draw()}
+this.getTopMargin();_1.moveAbove(this);if(_1.isDrawn()&&!this.isDrawn())_1.clear()}
+,isc.A.$55v=function isc_Canvas__hideGroupLabel(){if(!this.groupLabel)return;var _1=this.groupLabel;this.$wj(_1,isc.Canvas.TOP);this.setTopPadding(null);_1.clear();_1.depeer()}
+,isc.A.setGroupTitle=function isc_Canvas_setGroupTitle(_1){this.groupTitle=_1;if(this.groupLabel){this.groupLabel.setContents(this.groupTitle)}else{this.$55u()}}
+);isc.B._maxIndex=isc.C+544;isc.A=isc.Canvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$hm="[SKIN]";isc.A.printOmitControls=["Button","StretchImgButton","ImgButton","MenuButton","Toolbar","ToolStrip","ButtonItem","ToolbarItem"];isc.A.printIncludeControls=["Label"];isc.A.$ws=0;isc.A.$wt="ID='";isc.A.$ob="'";isc.A.$wu="absmiddle";isc.A.$wv=[,,," eventpart='valueicon' style='vertical-align:middle;margin-left:",,"px;margin-right:",,"px;'"];isc.A.$ww={};isc.A.$wx={png:true,PNG:true,Png:true};isc.A.$wy=["<a",," href='",,"' target='",,"'",,,,">",,"</a>"];isc.A.$wz="[SKINIMG]/blank.gif";isc.A.$w0="0";isc.A.$w1="clearRedrawQueue";isc.A.$65j=[];isc.A.$65k=0;isc.A.$65l="clearDestroyQueue";isc.A.$tw=[];isc.B.push(isc.A.stripScriptTags=function isc_c_Canvas_stripScriptTags(_1){return _1.replace(/<script([^>]*)?>(.|\n|\r)*?<\/script>/ig,isc.emptyString)}
+,isc.A.stripLinkTags=function isc_c_Canvas_stripLinkTags(_1){return _1.replace(/<link([^>]*)?>/ig,isc.emptyString)}
+,isc.A.getById=function isc_c_Canvas_getById(_1){var _2=window[_1]||null;return _2?(isc.isA.Canvas(_2)?_2:null):null}
+,isc.A.getNextZIndex=function isc_c_Canvas_getNextZIndex(){return(isc.Canvas.$ng+=18)}
+,isc.A.getFocusProxyString=function isc_c_Canvas_getFocusProxyString(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16){if(this.$w8==null){this.$w9="' ONFOCUS=";this.$xa="' ";this.$xb=" ONBLUR=";this.$w8=["<div"," id='",null,"$xc'"+" style='overflow:hidden;width:0px;height:0px;position:",,";left:",null,"px;top:",null,"px;'>",(isc.Browser.isSafari?"<textarea":(isc.Browser.isMoz&&isc.Browser.geckoVersion>=20051111?"<div":"<button onclick='event.cancelBubble=true;return false;'"))," id='",null,"__focusProxy'"," style='VISIBILITY:",null,"left:1px;top:1px;"+"width:",(isc.Browser.isSafari?"1":null),"px;height:",(isc.Browser.isSafari?"1":null),"px;",null,this.$w9,null,this.$xb,null,null,null,null," tabindex='",null,null,"' focusProxy='true' handleNativeEvents='",null,"'>",(isc.Browser.isSafari?"</textarea>":(isc.Browser.isMoz&&isc.Browser.geckoVersion>=20051111?"</div>":"</button>")),"</div>"]}
+var _17=this.$w8;_17[2]=_1;_17[4]=(_2?"absolute":"inline");_17[6]=_3;_17[8]=_4;_17[12]=_1;_17[15]=(_7?"visible;":"hidden;");_17[17]=_5;_17[19]=_6;if(isc.Browser.isMoz){if(!_8||_9==-1)_17[21]="-moz-user-focus:ignore;";else _17[21]="-moz-user-focus:normal;"}
+if(_12&&_12!=isc.emptyString){_17[22]=this.$w9;_17[23]=_12}else{_17[22]=this.$xa;_17[23]=null}
+if(_13&&_13!=isc.emptyString){_17[24]=this.$xb;_17[25]=_13}else{_17[24]=null;_17[25]=null}
+_17[26]=(_14!=null?" onkeydown="+_14:null);_17[27]=(_15!=null?" onkeypress="+_15:null);_17[28]=(_16!=null?" onkeyup="+_16:null);_17[30]=(_8?_9:-1);_17[31]=(_8&&_10?"' accesskey='"+_10:null);_17[33]=(_11?true:false);return _17.join(isc.$ad)}
+,isc.A.showAllocatedTabChain=function isc_c_Canvas_showAllocatedTabChain(){var _1=isc.EH.$kj,_2=isc.EH.$kl;var _3="First tab widget:"+_1+", and last:"+_2+"\nFull chain:";var _4=_1;do{_3+="\n\t"+_4.getID()+" - "+_4.getTabIndex()+" -->";_4=_4.$v4}while(_4!=null&&_4!=_2)
+this.logWarn(_3)}
+,isc.A.clearCSSCaches=function isc_c_Canvas_clearCSSCaches(){isc.Element.$50f();var _1=isc.Canvas._canvasList;for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3==null||_3.destroyed)continue;_3.$s8=_3.$s7=_3.$tk=_3.$tp=null}}
+,isc.A.setAppImgDir=function isc_c_Canvas_setAppImgDir(_1){this.getPrototype().appImgDir=_1}
+,isc.A.getAppImgDir=function isc_c_Canvas_getAppImgDir(){return isc.Page.getImgURL(isc.emptyString,this.getPrototype().appImgDir)}
+,isc.A.setSkinImgDir=function isc_c_Canvas_setSkinImgDir(_1){this.getPrototype().skinImgDir=_1}
+,isc.A.getSkinImgDir=function isc_c_Canvas_getSkinImgDir(){return isc.Page.getSkinImgDir(this.getPrototype().skinImgDir)}
+,isc.A.getImgURL=function isc_c_Canvas_getImgURL(_1,_2,_3){if(_1==null||isc.isAn.emptyString(_1))return isc.$ad;_3=_3||this.getPrototype();if(_1.imgDir!=null&&_2==null)_2=_1.imgDir;if(_1.src!=null)_1=_1.src;if(_2==null){_2=(isc.startsWith(_1,this.$hm)?_3.skinImgDir:_3.appImgDir)}
+var _4=isc.Page.getImgURL(_1,_2);return _4}
+,isc.A.setShowCustomScrollbars=function isc_c_Canvas_setShowCustomScrollbars(_1){isc.Canvas.addProperties({showCustomScrollbars:_1})}
+,isc.A.getPrintHTML=function isc_c_Canvas_getPrintHTML(_1,_2,_3,_4,_5,_6){if(!isc.isAn.Array(_1))_1=[_1];if(_5==null)_5=[];if(_6==null)_6=0;var _7,_8={target:this,methodName:"gotComponentPrintHTML",components:_1,printProperties:_2,callback:_3,HTML:_5,index:_6,separator:_4};for(;_6<_1.length;_6++){_8.index+=1;var _9=_1[_6];var _10;if(isc.isA.String(_9))_10=_9;else _10=_9.getPrintHTML(_2,_8);if(_10!=null){_5.add(_10)}else{_7=true;break}}
+if(_7){if(!_3){this.logWarn("getPrintHTML(): HTML generated asynchronously, but no callback passed in")}
+return null}
+if(_3){this.fireCallback(_3,"HTML,callback",[_5.join(_4||isc.emptyString),_3])}
+return _5.join(_4||isc.emptyString)}
+,isc.A.gotComponentPrintHTML=function isc_c_Canvas_gotComponentPrintHTML(_1,_2){_2.HTML.add(_1);this.getPrintHTML(_2.components,_2.printProperties,_2.callback,_2.separator,_2.HTML,_2.index)}
+,isc.A.getImgHTML=function isc_c_Canvas_getImgHTML(_1,_2,_3,_4,_5,_6,_7,_8,_9){return this.imgHTML(_1,_2,_3,_4,_5,_6,_7,_8,_9)}
+,isc.A.$wf=function isc_c_Canvas__getImgHTMLTemplate(_1,_2,_3,_4,_5,_6,_7){return isc.Canvas.imgHTML(_1,_2,_3,_4,_5,_6,_7,null,true)}
+,isc.A.imgHTML=function isc_c_Canvas_imgHTML(_1,_2,_3,_4,_5,_6,_7,_8,_9){var _10;if(isc.isAn.Object(_1)){if(_1.width!=null)_2=_1.width;if(_1.height!=null)_3=_1.height;if(_1.name!=null)_4=_1.name;if(_1.extraStuff!=null)_5=_1.extraStuff;if(_1.imgDir!=null)_6=_1.imgDir;if(_1.align!=null)_10=_1.align;if(_1.activeAreaHTML!=null)_7=_1.activeAreaHTML;_1=_1.src}
+if(_1==null||isc.isAn.emptyString(_1)){return(_9?[isc.$ad]:isc.$ad)}
+var _11=this.$xd;if(!_11){this.$xe="<img src='";this.$xf="' width='";this.$xg="' height='";this.$xh="' align='";this.$xi=(isc.Page.isXHTML()?"' id='":"' name='");this.$xj="' ";this.$xk=isc.Browser.isOpera?"middle":"TEXTTOP";this.$xl=" border='0' suppress='TRUE'/>";this.$xd=_11=[this.$xe];this.$xm="' style='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\"";this.$xn="\",sizingMethod=\"scale\");"}
+if(_10==null)_10=this.$xk;if(!this.$hu)this.$hu=this.getImgURL("[SKIN]/blank.gif");if(isc.Browser.isSafari&&(_2>32000||_3>32000)){this.logWarn("Attempting to draw an image of size "+_2+" x "+_3+". Images larger than 32000 pixels in either direction are not reliably "+" rendered in this browser.")}
+var _12=this.getImgURL(_1,_6,_8);if(_9)_11=[this.$xe];if(isc.Page.isXHTML())_12=isc.makeXMLSafe(_12);if(isc.screenReader){if(_5==null||!isc.contains(_5,"alt=")){_11[0]="<img role='presentation' src='"}else{_11[0]=this.$xe}}
+if(!this.$xo(_8)||!this.$xp(_1)){_11[1]=_12}else{_11[1]=this.$hu;_11[3]=this.$xm;_11[4]=_12;_11[5]=this.$xn;if(_2==null)_2=16;if(_3==null)_3=16}
+if(_2){_11[6]=this.$xf;_11[7]=_2}
+if(_3){_11[8]=this.$xg;_11[9]=_3}
+_11[10]=this.$xh;_11[11]=_10;if(_4){_11[12]=this.$xi;if(_8)_11[13]=_8.getCanvasName();_11[14]=_4}
+var _13;if(_7){_13="ISC_IMGMAP_"+this.$ws++;_11[15]="' usemap='#"+_13}
+_11[16]=this.$xj;if(_5){_11[17]=_5}
+_11[18]=this.$xl;if(_7){_11[19]="<map name='"+_13+"'>"+_7+"</map>"}
+if(_9)return _11;var _14=_11.join(isc.$ad);_11.length=3;return _14}
+,isc.A.$xq=function isc_c_Canvas__getValueIconHTML(_1,_2,_3,_4,_5,_6,_7,_8){var _9=this.$wv;if(_7!=null){_9[0]=this.$wt;_9[1]=_7;_9[2]=this.$ob}else{_9[0]=_9[1]=_9[2]=null}
+_9[4]=_5||0;_9[6]=_6||0;var _1=isc.Canvas.getImgURL(_1,_2,_8),_10=_9.join(isc.emptyString),_11=this.$ww;_11.src=_1;_11.width=_3
+_11.height=_4
+if(_4!=null&&_4<16&&(isc.Browser.isMoz||isc.Browser.isSafari)){_11.align=null}else{_11.align=this.$wu}
+_11.imgDir=_2;_11.extraStuff=_10;return isc.Canvas.imgHTML(_11)}
+,isc.A.$xo=function isc_c_Canvas__fixPNG(_1){if(this.usePNGFix==false)return false;var _2=isc.Browser.isIE&&isc.Browser.minorVersion>=5.5&&isc.Browser.isWin&&(!isc.Canvas.neverUseFilters&&this.neverUsePNGWorkaround!=true);if(_2&&_1&&_1.$xo&&!_1.$xo()){_2=false}
+return _2}
+,isc.A.$xp=function isc_c_Canvas__isPNG(_1){return(_1&&this.$wx[_1.substring(_1.lastIndexOf(isc.dot)+1)])}
+,isc.A.$wg=function isc_c_Canvas__setImageURL(_1,_2,_3,_4){var _5=this.getImgURL(_2,_3,_4);if(!this.$xo(_4)){_1.src=_5}else{var _6=_1.src,_7=this.$xp(_6),_8=this.$xp(_2);if(_8){_1.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\""+_5+"\",sizingMethod=\"scale\")";if(!_7)_1.src=this.$hu}else{if(_7)_1.style.filter="";_1.src=_5}}}
+,isc.A.linkHTML=function isc_c_Canvas_linkHTML(_1,_2,_3,_4,_5,_6,_7){_1=_1.replaceAll("'","\\'");if(_2==null)_2=_1;_3=_3?_3.replaceAll("'","\\'"):"_blank";var _8=this.$wy;if(_4!=null)_8[1]=" ID='"+_4+"'";else _8[1]=null;_8[3]=_1;_8[5]=_3;if(_5!=null)_8[7]=" tabIndex="+_5;else _8[7]=null;if(_6!=null)_8[8]=" accessKey='"+_6+"'";else _8[8]=null;if(_7)_8[9]=" "+_7;_8[11]=_2;return _8.join(isc.emptyString)}
+,isc.A.blankImgHTML=function isc_c_Canvas_blankImgHTML(_1,_2){var _3=this.$ht;if(!_3){_3=this.$ht=this.$wf(this.$wz,1,1)}
+_3[7]=_1||this.$w0;_3[9]=_2||this.$w0;return _3.join(isc.$ad)}
+,isc.A.spacerHTML=function isc_c_Canvas_spacerHTML(_1,_2,_3){if(_1==0&&_2==0)return isc.$ad;if(isc.Browser.isMoz||isc.Browser.isSafari||isc.Browser.isOpera||isc.Browser.isStrict||(_2<3&&isc.Browser.isIE&&(isc.Browser.minorVersion==5.5||isc.Browser.isMac)))
+{var _4;if(isc.Browser.isSafari){_4=32000}else if(isc.Browser.isFirefox&&isc.Browser.geckoVersion>=20090219){_4=17895580}else if(isc.Browser.isIE&&isc.Browser.isStrict){_4=16000}
+if(_4!=null&&(_1>_4||_2>_4)){var _5=isc.SB.create(),_6=_4,_7=Math.floor(_2/ _6),_8=Math.floor(_1/ _6);_5.append("<TABLE role='presentation' CELLPADDING=0 CELLSPACING=0 BORDER=0 MARGIN=0>");for(var i=0;i<=_7;i++){_5.append("<TR>");for(var j=0;j<=_8;j++){_5.append("<TD>");var _11=((i==j)||(i>_8&&j==0)||(j>_7&&i==0));if(_11){var _12=(i<_7?_6:_2-(i*_6)),_13=(j<_8?_6:_1-(j*_6));_5.append(this.blankImgHTML(_13,_12))}
+_5.append("</TD>")}
+_5.append("</TR>")}
+_5.append("</TABLE>");return _5.toString()}
+return this.blankImgHTML(_1,_2)}
+var _14=1300000;if(_2>_14){var _15=[];var _16=0;while(_16<_2){var _17,_18;if(_16+1400>=_2){_17=true;_18=_2-_16}else{_18=1400;_17=false}
+_15[_15.length]=this.spacerHTML(_1,_18);_15[_15.length]="<br>";_16+=_18}
+return _15.join(isc.$ad)}
+var _19=this.$xs;if(_19==null){_19=this.$xs=["<SPAN STYLE='WIDTH:",null,"px;HEIGHT:",null,"px;overflow:hidden;'>",null,"</SPAN>"]}
+_19[1]=_1;_19[3]=_2;_19[5]=_3?_3:isc.nbsp;return _19.join(isc.$ad)}
+,isc.A.hiliteCharacter=function isc_c_Canvas_hiliteCharacter(_1,_2,_3,_4){if(!isc.isA.String(_1)||!isc.isA.String(_2)||_2.length!=1)
+return _1;if(_2==" ")return _1;if(_3==null||_4==null){_3="<span style='text-decoration:underline;'>";_4="</span>"}
+var _5=_1.indexOf(_2.toUpperCase());if(_5==-1)_5=_1.indexOf(_2.toLowerCase());if(_5!=-1){var _6=_1.slice(0,_5),_7=_1.slice(_5,_5+1),_8=_1.slice(_5+1);_7=_3+_7+_4;_1=_6.concat(_7,_8)}
+return _1}
+,isc.A.scheduleRedraw=function isc_c_Canvas_scheduleRedraw(_1){if(_1&&_1.priorityRedraw){this.$nm.addAt(_1,0)}else{this.$nm.add(_1)}
+if(!this.$xu){this.$xu=isc.Timer.setTimeout({target:isc.Canvas,methodName:this.$w1},this._redrawQueueDelay)}}
+,isc.A.clearRedrawQueue=function isc_c_Canvas_clearRedrawQueue(){isc.EH.$h1("RDQ");var _1=isc.timeStamp();this.$xu=null;var _2=this.$nm;this.$nm=[];if(this.logIsDebugEnabled()){var _3="";for(var i=0;i<_2.length;i++){_3+=_2[i];if(i!=_2.length-1)_3+=", "}
+this.logDebug("clearRedrawQueue: "+_3,"drawing")}
+var _5,_6;for(var i=0;i<_2.length;i++){_5=_2[i];if(_5&&_5.priorityRedraw){_5.priorityRedraw=false;if(_6==null)_6=[];_6.add(_5);_2[i]=null}}
+if(_6!=null){this.logInfo("Priority redraw: postponing non-priority items","drawing");this.$nm=_2;this.scheduleRedraw(_2[0]);_2=_6}
+var _7=0,_5;for(var i=0;i<_2.length;i++){_5=_2[i];if(_5==null||_5.destroyed)continue;if(_5&&_5.isDirty()){_5.redraw(false);_7++}}
+if(this.logIsDebugEnabled("redraws")){this.logDebug("clearRedrawQueue: "+_7+" redraws ("+_2.length+" items), "+(isc.timeStamp()-_1)+"ms","redraws")}
+isc.EH.$h2()}
+,isc.A.$uv=function isc_c_Canvas__queueForDelayedAdjustOverflow(_1){if(!isc.Canvas.$xv)isc.Canvas.$xv=[];isc.Canvas.$xv.add(_1);if(!isc.Canvas.$xw){isc.Canvas.$xw=isc.Timer.setTimeout({target:isc.Canvas,methodName:"$xx"},isc.Canvas.$nn)}}
+,isc.A.$xx=function isc_c_Canvas__clearDelayedAdjustOverflowQueue(){var _1=isc.Canvas.$xv;isc.Canvas.$xv=[];isc.Canvas.$xw=null;if(!_1||_1.length==0)return;for(var i=0;i<_1.length;i++){var _3=window[_1[i]];if(isc.isA.Canvas(_3))_3.adjustOverflow("delayed")}}
+,isc.A.checkForPageResize=function isc_c_Canvas_checkForPageResize(){isc.EH.$hr(true)}
+,isc.A.moveOffscreen=function isc_c_Canvas_moveOffscreen(_1){if(_1.isDrawn())return;var _2=(!(!isc.Browser.isWin&&isc.Browser.isMoz&&_1.showCustomScrollbars==false&&(_1.overflow==isc.Canvas.AUTO)));if(_2)_1.moveTo(null,-9999)}
+,isc.A.scheduleDestroy=function isc_c_Canvas_scheduleDestroy(_1){if(!_1||_1.destroyed||_1.destroying||!_1.destroy)return;this.$65j.add(_1);if(!this.$65m){this.$65m=isc.Timer.setTimeout({target:isc.Canvas,methodName:this.$65l},this.$65k)}}
+,isc.A.clearDestroyQueue=function isc_c_Canvas_clearDestroyQueue(){isc.EH.$h1("DSQ");var _1=isc.timeStamp();this.$65m=null;var _2=this.$65j;this.$65j=[];if(this.logIsDebugEnabled("destroys")){var _3="";for(var i=0;i<_2.length;i++){_3+=_2[i];if(i!=_2.length-1)_3+=", "}
+this.logDebug("clearDestroyQueue: "+_3,"destroys")}
+var _5=0,_6;for(var i=0;i<_2.length;i++){_6=_2[i];if(_6==null||_6.destroyed||_6.destroying)continue;_6.destroy(false);_5++}
+if(this.logIsDebugEnabled("destroys")){this.logDebug("clearDestroyQueue: "+_5+" direct destroy() calls ("+_2.length+" items), "+(isc.timeStamp()-_1)+"ms","destroys")}
+isc.EH.$h2()}
+,isc.A.outsetRect=function isc_c_Canvas_outsetRect(_1,_2){if(!_2)return _1;if(isc.isAn.Array(_1)){_1[0]-=_2;_1[1]-=_2;_1[2]+=2*_2;_1[3]+=2*_2;return _1}
+_1.left-=_2;_1.top-=_2;_1.width+=2*_2;_1.height+=2*_2;return _1}
+,isc.A.rectsIntersect=function isc_c_Canvas_rectsIntersect(_1,_2){var _3=_1[0],_4=_1[1],_5=_1[2],_6=_1[3],_7=_2[0],_8=_2[1],_9=_2[2],_10=_2[3],_11=((_3>_7+_9-1)||(_3+_5-1<_7)),_12=((_4>_8+_10-1)||(_4+_6-1<_8));return!_11&&!_12}
+,isc.A.$vs=function isc_c_Canvas__forceNativeTabOrderUpdate(){if(!this.$xy){this.ns.Element.createAbsoluteElement("<DIV ID='$xz'"+" style='position:absolute;left:0px;top:-100px'> </DIV>");this.$xy=document.all["$xz"]}else{this.$xy.innerHTML=" "}}
+,isc.A.$q8=function isc_c_Canvas__addToTopLevelCanvasList(_1){if(!isc.isA.Canvas(_1)||_1.$x0!=null)return;this.$tw.add(_1);_1.$x0=this.$tw.length-1}
+,isc.A.$ro=function isc_c_Canvas__removeFromTopLevelCanvasList(_1){if(!isc.isA.Canvas(_1)||_1.$x0==null)return;this.$tw[_1.$x0]=null;_1.$x0=null}
+,isc.A.showClickMask=function isc_c_Canvas_showClickMask(_1,_2,_3){return this.ns.EH.showClickMask(_1,_2,_3)}
+,isc.A.hideClickMask=function isc_c_Canvas_hideClickMask(_1){this.ns.EH.hideClickMask(_1)}
+,isc.A.$t7=function isc_c_Canvas__placeRect(_1,_2,_3,_4,_5,_6){if(isc.isAn.Array(_3)){_3={left:_3[0],top:_3[1],width:_3[2],height:_3[3]}}else if(_3==null){_3={left:this.ns.EH.getX(),top:this.ns.EH.getY()}}
+if(_3.width==null)_3.width=0;if(_3.height==null)_3.height=0;if(_4==null)_4="bottom";if(_5==null)_5=true;var _7=(_4=="bottom"||_4=="top");if(_7){if(_6=="inside-right")_6="right";if(_6!="right"&&_6!="outside-right"&&_6!="outside-left")_6="left"}else{if(_6=="inside-bottom")_6="bottom";if(_6!="bottom"&&_6!="outside-bottom"&&_6!="outside-top")_6="top"}
+var _8=_3.left;if(_7){if(_6=="right")_8+=(_3.width-_1);else if(_6=="outside-right")_8+=_3.width;else if(_6=="outside-left")_8-=_1}else{if(_4=="left")_8-=_1;else _8+=_3.width}
+var _9=_3.top;if(_7){if(_4=="top")_9-=_2;else _9+=_3.height}else{if(_6=="bottom")_9+=(_3.height-_2);else if(_6=="outside-bottom")_9+=_3.height;else if(_6=="outside-top")_9-=_2}
+var _10=isc.Page.getWidth(),_11=isc.Page.getHeight(),_12=isc.Page.getScrollLeft(),_13=isc.Page.getScrollTop();var _14=_12-_8,_15=_8+_1-(_10+_12),_16=_13-_9,_17=_9+_2-(_11+_13);;if(_14<=0&&_15<=0&&_16<=0&&_17<=0){return[_8,_9]}
+if(_14>0){if(_4=="left"&&!_5){if(_3.left+_3.width<_12){_8=_12}else{_8=_3.left+_3.width}}else{_8=_12}}else if(_15>0){if(_4=="right"&&!_5){if((_3.left-_1)>=_12){if(_3.left>(_12+_10))
+_8=(_12+_10)-_1;else _8=_3.left-_1}}else{if(_10<_1){_8=_12}else{_8=_12+_10-_1}}}
+if(_16>0){if(_4=="top"&&!_5){if(_3.top+_3.height<_13){_9=_13}else{_9=_3.top+_3.height}}else{_9=_13}}else if(_17>0){if(_4=="bottom"&&!_5){if((_3.top-_2)>=_13){if(_3.top>(_13+_11))
+_9=(_13+_11)-_2;else _9=_3.top-_2}}else{if(_11<_2){_9=_13}else{_9=_13+_11-_2}}}
+return[_8,_9]}
+,isc.A.$iy=function isc_c_Canvas__handleUnload(){if(isc.Browser.isIE)this.$xt();var _1=isc.Log.logViewer;if(_1&&_1.logWindowLoaded()){_1._logWindow.openerUnloading();_1._logWindow=null}}
+,isc.A.$xt=function isc_c_Canvas__clearDOMHandles(){var _1=this._canvasList;for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3){if(_3.$q3){_3.$q3.eventProxy=null;_3.$q3=null}}}
+return true}
+,isc.A.snapToEdge=function isc_c_Canvas_snapToEdge(_1,_2,_3,_4,_5){var _6,_7,_8;if(isc.isAn.Array(_1)){_7=false;_8=[_1[1],_1[0]];_6=[_1[2],_1[3]]}else if(_3.masterElement){_7=(_3.percentBox==_3.$520),_6=[_7?_1.getViewportWidth():_1.getVisibleWidth(),_7?_1.getViewportHeight():_1.getVisibleHeight()];_8=[_1.getTop()+(_7?(_1.getTopBorderSize()+_1.getTopMargin()):0),_1.getLeft()+(_7?(_1.getLeftBorderSize()+_1.getLeftMargin()):0)]}else if(isc.isA.Canvas(_5)){_7=(_3.percentBox==_3.$520),_6=[_7?_5.getViewportWidth():_5.getVisibleWidth(),_7?_5.getViewportHeight():_5.getVisibleHeight()];_8=[_5.getPageTop()+(_7?(_5.getTopBorderSize()+_5.getTopMargin()):0),_5.getPageLeft()+(_7?(_5.getLeftBorderSize()+_5.getLeftMargin()):0)]}else{_7=true;_6=[_1.getViewportWidth(),_1.getViewportHeight()];_8=[0,0]}
+var _9=isc.Canvas.$52c(_2,_8,_6,false);var _10=isc.Canvas.$52c((_4||_2),_9,[_3.getVisibleWidth(),_3.getVisibleHeight()],true);if(_3.snapOffsetLeft!=null)_10[1]+=_3.snapOffsetLeft;if(_3.snapOffsetTop!=null)_10[0]+=_3.snapOffsetTop;_3.moveTo(_10[1],_10[0]);_3.$jo=false}
+,isc.A.$52c=function isc_c_Canvas__getSnapPoint(_1,_2,_3,_4){var _5=_3[0],_6=_3[1];var _7;if(_1=="TL")_7=[0,0];else if(_1=="T")_7=[0,_5/ 2];else if(_1=="TR")_7=[0,_5];else if(_1=="R")_7=[_6/ 2,_5];else if(_1=="BR")_7=[_6,_5];else if(_1=="B")_7=[_6,_5/ 2];else if(_1=="BL")_7=[_6,0];else if(_1=="L")_7=[_6/ 2,0];else if(_1=="C")_7=[_6/ 2,_5/ 2];else _7=[0,0];_7[0]=Math.floor(_7[0]);_7[1]=Math.floor(_7[1]);if(_4)return[_2[0]-_7[0],_2[1]-_7[1]];else return[_2[0]+_7[0],_2[1]+_7[1]]}
+,isc.A.ariaEnabled=function isc_c_Canvas_ariaEnabled(){return false}
+,isc.A.useLiteAria=function isc_c_Canvas_useLiteAria(){return false}
+);isc.B._maxIndex=isc.C+48;isc.Canvas.registerStringMethods({resized:"deltaX,deltaY",showIf:"canvas",childRemoved:"child,name",peerRemoved:"peer,name",deparented:"oldParent,name",depeered:"oldMaster,name",parentMoved:"parent,deltaX,deltaY",moved:"deltaX,deltaY",focusChanged:"hasFocus",scrolled:null,hover:"",onDrop:"",visibilityChanged:"isVisible"});isc.Canvas.$yx=function(){var _1=isc.EH,_2={};for(var _3 in _1.eventTypes){this.registerStringMethods(_1.eventTypes[_3],_1.$i3);var _4=_1.eventTypes[_3];if(this.getInstanceProperty(_4)==null){_2[_4]=isc.Class.NO_OP}}
+this.addMethods(_2)}
+isc.Canvas.$yx();isc.defineClass("BackMask","Canvas");isc.A=isc.BackMask.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoDraw=false;isc.A.$lo=true;isc.A._generated=true;isc.A.useClipDiv=false;isc.A.hideUsingDisplayNone=isc.Browser.isMoz;isc.A.overflow=isc.Canvas.HIDDEN;isc.A.contents="<iframe width='100%' height='100%' border='0' frameborder='0' src=\""+isc.Page.getBlankFrameURL()+"\" marginwidth='0' marginheight='0' scrolling='no' tabIndex='-1' tabStop='false'></iframe>";isc.A.$ns=false;isc.A.$jo=false;isc.A.$jp=false;isc.A._redrawWithParent=false;isc.B.push(isc.A.masterMoved=function isc_BackMask_masterMoved(){this.masterElement.$qi()}
+,isc.A.masterResized=function isc_BackMask_masterResized(){this.masterElement.$qi()}
+,isc.A.draw=function isc_BackMask_draw(_1,_2,_3){if(this.suppressed)return this;if(!this.readyToDraw())return this;this.invokeSuper(isc.BackMask,this.$ny,_1,_2,_3);if(this.masterElement.overflow==isc.Canvas.VISIBLE)this.masterElement.$qi();return this}
+,isc.A.show=function isc_BackMask_show(){if(!this.suppressed)this.invokeSuper(isc.BackMask,"show")}
+);isc.B._maxIndex=isc.C+4;isc.defineClass("ScreenSpan","Canvas");isc.A=isc.ScreenSpan.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A._generated=true;isc.A.$92g=3200;isc.A.$92h=2400;isc.A.src="[SKINIMG]/blank.gif";isc.A.redrawOnResize=false;isc.A.overflow="hidden";isc.B.push(isc.A.getInnerHTML=function isc_ScreenSpan_getInnerHTML(){if(!this.$yy){this.$yy=isc.Browser.isIE&&isc.Browser.version>6?isc.Canvas.imgHTML(this.src,this.$92g,this.$92h):isc.Canvas.spacerHTML(this.$92g,this.$92h)}
+return this.$yy}
+,isc.A.hide=function isc_ScreenSpan_hide(_1,_2,_3,_4){this.resizeTo(1,1);this.moveTo(null,-this.getHeight());return this.invokeSuper(isc.ScreenSpan,"hide",_1,_2,_3,_4)}
+,isc.A.show=function isc_ScreenSpan_show(_1,_2,_3,_4){this.fitToScreen();isc.Page.setEvent("resize",this,isc.Page.FIRE_ONCE,"pageResized");return this.invokeSuper(isc.ScreenSpan,"show",_1,_2,_3,_4)}
+,isc.A.pageResized=function isc_ScreenSpan_pageResized(){if(!this.isVisible())return;this.resizeTo(isc.Page.getWidth(),isc.Page.getHeight());this.fitToScreen();isc.Page.setEvent("resize",this,isc.Page.FIRE_ONCE,"pageResized")}
+,isc.A.fitToScreen=function isc_ScreenSpan_fitToScreen(){var _1=Math.max(isc.Page.getWidth(),isc.Page.getScrollWidth()),_2=Math.max(isc.Page.getHeight(),isc.Page.getScrollHeight());this.resizeTo(_1,_2);if(_1>this.$92g||_2>this.$92h){this.$92g=Math.max(_1,this.$92g);this.$92h=Math.max(_2,this.$92h);delete this.$yy;this.markForRedraw("Resizing spacer HTML to fit large page content.")}
+this.moveTo(0,0)}
+);isc.B._maxIndex=isc.C+5;isc.$yz={getForm:function(_1){if(_1&&typeof _1=="object")return _1;var _2;if(_1!=null&&isc.Browser.isDOM){_2=document.getElementById(_1)}
+if(_2!=null)return _2;if(_1==null)_1=0;if(_2==null)return document.forms[_1];return _2},getFormElementValue:function(_1,_2){var _3=this.getFormElement(_1,_2);if(!_3)return;switch(_3.type){case"radio":return(_3.checked?_3.value:null)
+case"checkbox":return _3.checked;case"select-one":if(!_3.options||_3.options.length==0)return null;var _4=_3.options[_3.selectedIndex];return _4.value;case"select-multiple":var _5=[];for(var i=0,_7=_3.options.length;i<_7;i++){var _4=_3.options[i];if(_4.selected)
+_5.add(_4.value)}
+return _5;case"button":case"reset":case"submit":return null;default:return _3.value}},getFormValues:function(_1){var _2=this.getForm(_1);if(!_2)return null;var _3={};if(!_2.elements){this.logWarn("Form '"+_1+"' contains no elements - returning empty map for data.");return{}}
+for(var i=0;i<_2.elements.length;i++){var _5=_2.elements[i];if(_5.name!=null){var _6=this.getFormElementValue(_2,_2.elements[i]);if(_6!=null)_3[_5.name]=_6}}
+return _3},getFormElement:function(_1,_2){if(typeof _2=="object")return _2;var _3=this.getForm(_1);if(_3)return _3.elements[_2];return null}};isc.Canvas.addClassMethods(isc.$yz)
+isc.Canvas.addMethods(isc.$yz)
+isc.setAutoDraw=function(_1){if(_1==null)_1=true;isc.Canvas.addProperties({autoDraw:_1})};isc.allowDuplicateStyles=true;isc.defineClass("PrintCanvas","Canvas");isc.A=isc.PrintCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.redrawOnResize=false;isc.A.overflow="hidden";isc.A.useExplicitHeight=isc.Browser.isSafari||(isc.Browser.isFirefox&&isc.Browser.isStrict&&isc.Browser.geckoVersion>=20100101);isc.A.printFrameURL="[HELPERS]printFrame.html";isc.B.push(isc.A.initWidget=function isc_PrintCanvas_initWidget(){this.Super("initWidget",arguments)}
+,isc.A.resized=function isc_PrintCanvas_resized(){if(this.useExplicitHeight){var _1=this.getIFrameHandle();if(_1){_1.style.width=this.getInnerWidth();_1.style.height=this.getInnerHeight()}}}
+,isc.A.getInnerHTML=function isc_PrintCanvas_getInnerHTML(){var _1="100%",_2="100%";if(this.useExplicitHeight){_1=this.getInnerWidth();_2=this.getInnerHeight()}
+return"<iframe height='"+_2+"' width='"+_1+"' scrolling='auto' id='"+this.getIFrameID()+"' frameborder='0' src=\""+this.getPrintFrameURL(this.title)+"\"></iframe>"}
+,isc.A.getIFrameID=function isc_PrintCanvas_getIFrameID(){return this.getID()+"$55y"}
+,isc.A.getPrintFrameURL=function isc_PrintCanvas_getPrintFrameURL(_1){return isc.Page.getURL(this.printFrameURL+"?id="+this.getID()+"&title="+(_1||""))}
+,isc.A.getIFrameHandle=function isc_PrintCanvas_getIFrameHandle(){return document.getElementById(this.getIFrameID())}
+,isc.A.getIFrameWindow=function isc_PrintCanvas_getIFrameWindow(){return this.getIFrameHandle().contentWindow}
+,isc.A.iframeLoad=function isc_PrintCanvas_iframeLoad(){this.iframeLoaded=true;if(isc.Browser.isIE){var _1=this.getIFrameWindow().document.body;if(_1)_1.style.overflow="auto"}}
+,isc.A.setHTML=function isc_PrintCanvas_setHTML(_1,_2){if(!this.isDrawn()){this.$741={HTML:_1,callback:_2};return}
+if(!this.iframeLoaded){this.delayCall("setHTML",[_1,_2],100);return}
+var _3=this.getIFrameWindow();_3.assignHTML(_1);if(isc.Browser.isIE&&isc.Browser.hasVML&&_1.contains("class=rvml")){_3.document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)")}
+this.fireCallback(_2,["printPreview","callback"],[this,_2])}
+,isc.A.draw=function isc_PrintCanvas_draw(){this.Super("draw",arguments);if(this.$741!=null){var _1=this.$741;this.$741=null;this.setHTML(_1.HTML,_1.callback)}}
+,isc.A.setTitle=function isc_PrintCanvas_setTitle(_1){this.title=_1;if(!this.isDrawn()&&!this.iframeLoaded)return;delete this.iframeLoaded;if(this.isDrawn())this.redraw()}
+,isc.A.printHTML=function isc_PrintCanvas_printHTML(_1,_2,_3){var _4=this;this.setTitle(_2);this.setHTML(_1,function(){_4.print()})}
+,isc.A.print=function isc_PrintCanvas_print(){if(!this.isDrawn()){this.logWarn("print(): Attempt to print an undrawn PrintCanvas. Ignoring.");return}
+if(!this.iframeLoaded){this.delayCall("print",[],100);return}
+this.getIFrameWindow().doPrint()}
+,isc.A.printComplete=function isc_PrintCanvas_printComplete(){}
+);isc.B._maxIndex=isc.C+14;isc.A=isc.Canvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.printComponents=function isc_c_Canvas_printComponents(_1,_2,_3,_4){isc.Canvas.getPrintHTML(_1,_2,{target:this,methodName:"$57f",title:_3,debugOnly:_4})}
+,isc.A.$57f=function isc_c_Canvas__printComponentHTML(_1,_2){var _3=_2.title,_4=_2.debugOnly;if(!this.$55z)this.$55z=isc.PrintCanvas.create({width:"100%",height:"100%",autoDraw:false,backgroundColor:"white"});this.$55z.moveTo(null,-isc.Page.getHeight());if(!this.$55z.isDrawn())this.$55z.draw();this.$55z.printHTML(_1,_3,_4)}
+,isc.A.getPrintPreview=function isc_c_Canvas_getPrintPreview(_1,_2,_3,_4,_5){if(_3==null)_3={};_3.autoDraw=true;isc.Canvas.getPrintHTML(_1,_2,{target:this,methodName:"$57g",origCallback:_4,previewProperties:_3},_5)}
+,isc.A.$57g=function isc_c_Canvas__createPrintPreview(_1,_2){var _3=isc.PrintCanvas.create(_2.previewProperties);_3.setHTML(_1,{target:this,methodName:"$57h",origCallback:_2.origCallback})}
+,isc.A.$57h=function isc_c_Canvas__printPreviewGenerated(_1,_2){if(_2.origCallback){this.fireCallback(_2.origCallback,["printPreview"],[_1])}}
+,isc.A.showPrintPreview=function isc_c_Canvas_showPrintPreview(_1,_2,_3,_4,_5){if(!isc.PrintWindow){isc.definePrintWindow()}
+if(!isc.PrintWindow)return;if(_3==null)_3={};_3.autoDraw=false;if(_3.width==null)_3.width="100%";if(_3.height==null)_3.height="100%";if(_3.left==null)_3.left=0;if(_3.top==null)_3.top=0;if(!this.$57i){this.$57i=isc.PrintWindow.create(_3)}else{this.$57i.setProperties(_3)}
+this.$57i.showPrintPreview(_1,_2,_4,_5)}
+);isc.B._maxIndex=isc.C+6;isc.definePrintWindow=function(){if(!isc.Window){isc.logWarn("Attempting to create PrintWindow class with no defined Window class. "+"Ensure the required 'Containers' module is laoded");return}
+isc.defineClass("PrintWindow","Window");isc.PrintWindow.addProperties({isModal:true,headerControls:["headerIcon","headerLabel","printButton","closeButton"],printButtonDefaults:{_constructor:"IButton",height:20,click:"this.creator.printClicked()"},showMinimizeButton:false,showShadow:false,title:"Print Preview",printButtonTitle:"Print",setPrintButtonTitle:function(_3){this.printButtonTitle=_3;if(this.printButton!=null)this.printButton.setTitle(_3)},initWidget:function(){this.printButtonDefaults.title=this.printButtonTitle;this.Super("initWidget",arguments)},showPrintPreview:function(_3,_4,_5,_6){if(!isc.isAn.Array(_3))_3=[_3];isc.Canvas.getPrintHTML(_3,_4,{target:this,methodName:"$57j",origCallback:_5},_6)},$57j:function(_3,_4){if(!this.previewPane){this.previewPane=this.createPreviewPane();this.previewPane.addProperties({title:this.title});this.addItem(this.previewPane)}else{this.previewPane.setTitle(this.title)}
+this.setVisibility("hidden");if(!this.isDrawn())this.draw();this.previewPane.setHTML(_3,{target:this,methodName:"$57h",origCallback:_4.origCallback})},$57h:function(_3,_4){if(!this.isVisible())this.show();this.bringToFront();if(_4.origCallback){this.fireCallback(_4.origCallback,["printPreview","printWindow"],[_3,this])}},printClicked:function(){var _1=this.getPrintCanvas();if(!_1)return;_1.print()},createPreviewPane:function(_3){var _2=isc.PrintCanvas.create({width:"100%",height:"100%"});return _2},getPrintCanvas:function(){return this.previewPane},closeClick:function(){this.Super("closeClick",arguments);this.clear()}})}
+isc.ClassFactory.defineInterface("DataBoundComponent");isc.A=isc.Canvas;isc.A.COPY="copy";isc.A.MOVE="move";isc.A.CLONE="clone";isc.A=isc.Canvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$70l="/";isc.B.push(isc.A.getFieldImageDimensions=function isc_c_Canvas_getFieldImageDimensions(_1,_2){var _3,_4;var _5,_6,_7;if(isc.isA.String(_1.imageWidth)){_5=_1.imageWidth}else{_3=_1.imageWidth}
+if(isc.isA.String(_1.imageHeight)){_6=_1.imageHeight}else{_4=_1.imageHeight}
+if(isc.isA.String(_1.imageSize)){_7=_1.imageSize}else{_3=_3||_1.imageSize;_4=_4||_1.imageSize}
+if(_2!=null){_3=_3||_2[_5]||_2[_7];_4=_4||_2[_6]||_2[_7]}
+return{width:_3,height:_4}}
+,isc.A.$833=function isc_c_Canvas__performActionOnValue(_1,_2,_3,_4,_5,_6,_7){if(!_3||_2==null||isc.isAn.emptyString(_2))return;var _8=_3;var _9=_2.contains(this.$70l);if(_9){_2=_2.trim(isc.Canvas.$70l);var _10=_2.split(this.$70l),_11=[],_12;if(_10[0]&&_3[_10[0]]===_12&&_1=="get"&&!_7)
+{if(_4&&isc.ValuesManager&&isc.isA.ValuesManager(_4.valuesManager))
+{return this.$833(_1,_2,_4.valuesManager.getValues(),_4,_5,_6,true)}}
+if(isc.isAn.emptyString(_10.last()))_10.length-=1;for(var i=0;i<_10.length;i++){if(isc.isAn.emptyString(_10[i]))continue;if(_3==null){_11.length=0;break}
+_11.add(_3);if(i==_10.length-1){if(_1=="get"){return _3[_10[i]]}else if(_1=="clear"){delete _3[_10[i]]}else if(_1=="save"){_3[_10[i]]=_6}}else{var _14=_3[_10[i]];if(_14==_12){if(_1=="get"){return _12}else if(_1=="clear"){return}else if(_1=="save"){_14=_3[_10[i]]={}}}
+_3=_14;if(isc.isAn.Array(_3)){var _15=null;var _16=(parseInt(_10[i+1])==_10[i+1])
+if(_16){_15=parseInt(_10[i+1])
+_10.removeAt(i+1)}else if(_4&&_4.selectionComponent){var _17=isc.Canvas.$70l,_18=_4,_19;for(var j=0;j<=i;j++){_17+=_10[j]+isc.Canvas.$70l}
+_17=_17.trim(isc.Canvas.$70l);_18=_4.selectionComponent;while(_18){var _21=_18.dataPath;if(_21)_21=_21.trim(isc.Canvas.$70l);if(_17==_21){var _22=_18.getSelectedRecord();if(_22){_15=_18.getRecordIndex(_22)}else{_19=true}
+break}
+_18=_18.selectionComponent}
+if(_15==null){if(!_19&&_5){_15=0}else{return}}}else{if(_5){_15=0}else{return}}
+_3=_3[_15]}}}
+if(_1=="clear"){for(var i=_11.length-1;i>0;i--){if(isc.isAn.emptyObject(_11[i])){delete _11[i-1][_10[i-1]]}}}}else{if(_1=="get")return _3[_2];else if(_1=="clear")delete _3[_2];else if(_1=="save")_3[_2]=_6}}
+,isc.A.$70m=function isc_c_Canvas__clearFieldValue(_1,_2,_3,_4){this.$833("clear",_1,_2,_3,_4,null,false)}
+,isc.A.$70n=function isc_c_Canvas__saveFieldValue(_1,_2,_3,_4,_5){this.$833("save",_1,_3,_4,_5,_2,false);return _3}
+,isc.A.$70o=function isc_c_Canvas__getFieldValue(_1,_2,_3,_4){return this.$833("get",_1,_2,_3,_4,null,false)}
+,isc.A.$702=function isc_c_Canvas__combineDataPaths(_1,_2){if(_1==null&&_2==null)return null;if(isc.isA.String(_2)&&_2.startsWith(this.$70l))return _2;if(_1==null)return""+_2;if(_2==null)return _1+"";if(isc.isA.String(_1)&&_1.endsWith(this.$70l)){return _1+_2}else{return _1+this.$70l+_2}}
+,isc.A.evalViewState=function isc_c_Canvas_evalViewState(_1,_2,_3,_4){if(isc.isA.String(_1)){var _5=_1;try{_1=isc.eval(_1)}catch(e){if(!_3){var _6="Unable to parse "+_2+" object passed in: "+isc.Log.echo(_5)+" Ignoring."
+if(!_4||_4.logWarn==null){if(_4)_6+=" [target:"+isc.Log.echo(_4)+"]";this.logWarn(_6)}else{_4.logWarn(_6)}}
+return}}
+return _1}
+);isc.B._maxIndex=isc.C+7;isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.showComplexFields=true;isc.A.exportIncludeSummaries=true;isc.A.ignoreEmptyCriteria=true;isc.A.dragRecategorize=false;isc.A.duplicateDragMessage="Duplicates not allowed";isc.A.showOfflineMessage=true;isc.A.offlineMessage="This data not available while offline";isc.A.offlineMessageStyle="offlineMessage";isc.A.offlineSaveMessage="Data cannot be saved because you are not online";isc.A.addDropValues=true;isc.A.fieldIdProperty="name";isc.A.dataArity="multiple";isc.A.autoTrackSelection=true;isc.A.$308={date:true,DateItem:true};isc.A.$301="false;";isc.A.$18r="false";isc.A.styleOpposite="cellHiliteOpposite";isc.A.hiliteProperty="_hilite";isc.A.hiliteMarker="$63i";isc.A.$578=0;isc.A.$579=[];isc.A.dragDataAction=isc.Canvas.MOVE;isc.A.dragTrackerStyle="gridDragTracker";isc.A.canExport=true;isc.A.canPrint=true;isc.A.panelControls=["action:edit","action:editNew","action:sort","action:export","action:print"];isc.A.dbcProperties=["autoFetchData","autoFetchTextMatchStyle","autoFetchAsFilter","dataSource"];isc.A.badFormulaResultValue=".";isc.A.missingSummaryFieldValue="-";isc.A.canAddFormulaFields=false;isc.A.addFormulaFieldText="Add formula column...";isc.A.editFormulaFieldText="Edit formula...";isc.A.removeFormulaFieldText="Remove formula";isc.A.canAddSummaryFields=false;isc.A.addSummaryFieldText="Add summary column...";isc.A.editSummaryFieldText="Edit summary format...";isc.A.removeSummaryFieldText="Remove summary column..";isc.A.formulaFieldNamePrefix="formulaField";isc.A.summaryFieldNamePrefix="summaryField";isc.A.uniqueFieldNamePrefix="field";isc.A.exportDataChunkSize=50;isc.A.emptyExportMessage="You are attempting to export an empty dataset";isc.A.unknownErrorMessage="Invalid value";isc.A.$685=["isInteger","isFloat","isBoolean","isString"];isc.A.$746="partial";isc.A.$75a={};isc.A.$75b=null;isc.B.push(isc.A.setValuesManager=function isc_Canvas_setValuesManager(_1){if(_1)_1.addMember(this)}
+,isc.A.initializeValuesManager=function isc_Canvas_initializeValuesManager(){var _1=this.valuesManager;delete this.valuesManager;if(_1!=null){if(isc.ValuesManager==null){this.logWarn("Widget initialized with specified 'valuesManager' property but "+"ValuesManager class is not loaded. This functionality requires the "+"Forms module.");return}
+if(isc.isA.ValuesManager(_1)){_1.addMember(this)}else if(isc.isA.ValuesManager(window[_1])){window[_1].addMember(this)}else if(isc.isA.String(_1)){isc.ValuesManager.create({ID:_1,dataSource:this.dataSource,members:[this]})}else{this.logWarn("Widget initialized with invalid 'valuesManager' property:"+isc.Log.echo(_1)+", clearing this property out")}}}
+,isc.A.setDataPath=function isc_Canvas_setDataPath(_1){this.dataPath=_1;if(this.getFields==null||this.getFields()==null)return;if(_1==null){delete this.$704;if(this.valuesManager&&this.$703){this.valuesManager.removeMember(this);delete this.$703}
+return}
+var _2;var _3=this;while(_3&&(!_3.valuesManager||_3.$703)&&!_3.dataSource)
+{if(_3.dataPath){if(_2){_2=isc.Canvas.$702(_3.dataPath,_2)}else{_2=_3.dataPath}}
+_3=_3.parentElement}
+this.$704=_2;if(_3){if(_3!=this||!this.dataSource){if(_3.valuesManager==null){_3.createDefaultValuesManager()}
+var _4=isc.isA.DynamicForm(this)?this.$834:this.getFields();_4=_4||this.getFields();if(_3.valuesManager.getDataSource()){this.setDataSource(_3.valuesManager.getDataSource(),_4)}
+_3.valuesManager.addMember(this,true)}}}
+,isc.A.getFullDataPath=function isc_Canvas_getFullDataPath(){var _1=this.$704||this.dataPath;if(!_1&&this.masterElement){return this.masterElement.$704||this.masterElement.dataPath}
+return _1}
+,isc.A.buildFieldDataPath=function isc_Canvas_buildFieldDataPath(_1,_2){var _3=_2.dataPath||_2.name;if(_1&&_3&&!_3.startsWith("/")){_3=_1+"/"+_3}
+return!_3?null:_3.replace(/^\/*/,"")}
+,isc.A.createDefaultValuesManager=function isc_Canvas_createDefaultValuesManager(_1){if(!_1)_1=[];_1.add(this);isc.ValuesManager.create({members:_1,ID:this.getID()+"$705",dataSource:this.dataSource})}
+,isc.A.getDataPathField=function isc_Canvas_getDataPathField(_1){if(!_1)return null;var _2=this.getDataSource(),_3=_1.split(isc.slash),_4;if(!_2)return;for(var i=0;i<_3.length;i++){var _6=_3[i],_7=_2.getField(_6);_2=_7?(_2.getSchema(_7.type)||_2):_2;if(_7==null){this.logWarn("Unable to find dataSource field matching specified dataPath: '"+_1+"'");return}}
+return _7}
+,isc.A.registerWithDataView=function isc_Canvas_registerWithDataView(_1){if(!this.inputDataPath)return;_1=this.parentElement;while(_1&&!isc.isA.DataView(_1))_1=_1.parentElement;if(!_1){this.logWarn("Component initialized with an inputDataPath property, but no DataView "+"was found in the parent hierarchy. inputDataPath is only applicable to "+"DataBoundComponents and FormItems being managed by a DataView");return}
+_1.registerItem(this)}
+,isc.A.bindToDataSource=function isc_Canvas_bindToDataSource(_1,_2){if(this.dataPath)this.setDataPath(this.dataPath);if(this.dataSource==null&&this.data!=null)this.dataSource=this.data.dataSource;var _3=this.fields||this.items;if(isc.isAn.Array(_3))this.originalFields=_3.duplicate();var _4=this.getDataSource();if(_4==null&&this.valuesManager&&this.valuesManager.getDataSource){_4=this.valuesManager.getDataSource()}
+if(_4!=null&&isc.isA.String(_4)){this.logWarn("unable to look up DataSource: "+_4+", databinding will not be used");return _1}
+var _5=(_1==null||_1.length==0),_6;if(_4){var _7=this.useFlatFields;if(_7==null)_7=_4.useFlatFields;_6=_7?_4.getFlattenedFields():_4.getFields()}
+if(_4==null||_6==null){if(_1!=null&&isc.SimpleType){for(var i=0;i<_1.length;i++){if(_1[i].type==null&&this.$308[_1[i].editorType]==true)
+{_1[i].type="date"}
+isc.SimpleType.addTypeDefaults(_1[i])}}
+this.addFieldValidators(_1);return _1}
+if(this.doNotUseDefaultBinding)return[];if(_4!=null&&_5){_1=[];for(var _9 in _6){var _10=_6[_9];if(!this.shouldUseField(_10,_4))continue;var _11=isc.addProperties({},_10)
+var _12=this.getDefaultCanEdit(_10);var _13;if(_12===_13){delete _11.canEdit}else{_11.canEdit=_12}
+_1.add(_11)}
+this.addFieldValidators(_1);return _1}
+if(_4!=null&&!_5){var _14={};for(var i=_1.length-1;i>=0;i--){var _10=_1[i];if(_10==null)continue;var _15=(_10.name!=null)?_4.getField(_10.name):null;if(_15&&_15.canView===false){this.logInfo("Dropping explicitly-named field "+_10.name+" because it is marked canView: false");_1.removeAt(i)}
+if(_10.type==null&&this.$308[_10.editorType]==true){var _16=_10.name;var _15=(_16!=null)?_4.getField(_16):null;if(_15==null||_15.type==null){_10.type="date"}}
+if(_15){var _12=_10.canEdit;if(_12==null){_12=this.getDefaultCanEdit(_15)}else{this.logDebug("DataBoundComponent respecting explicit 'canEdit' on target field "+_15.name,"canEditField")}
+_14[_10.name]=_12}else{_14[_10.name]=_10.canEdit}
+if(_10.type!=null)isc.SimpleType.addTypeDefaults(_10)}
+if(this.useAllDataSourceFields||_2){var _17=this;var _18=_4.combineFieldOrders(_6,_1,function(_10,_4){return _17.shouldUseField(_10,_4)});for(var i=0;i<_18.length;i++){var _10=_18[i];if(!_1.containsProperty("name",_10.name)){if(_2&&_10.showIf==null){_10.showIf="return false"}}else{if(_10.includeFrom!=null&&_4.getField(_10.name)==null){this.$785(_10)}}
+var _12;if(_1.contains(_10)){_12=_14[_10.name]}else{_12=this.getDefaultCanEdit(_10)}
+var _13;if(_12===_13){delete _10.canEdit}else{_10.canEdit=_12}}
+this.addFieldValidators(_18);return _18}else{for(var i=0;i<_1.length;i++){var _10=_1[i];if(!_10)continue;_10=this.combineFieldData(_10);_10.canEdit=_14[_10.name]}
+this.addFieldValidators(_1);return _1}}}
+,isc.A.getDefaultCanEdit=function isc_Canvas_getDefaultCanEdit(_1){var _2=this.canEditFieldAttribute;if(_2==null)_2="canEdit";var _3=_1[_2];if(_3==null){if(_1.canSave==false&&!this.$66m){_3=false}}
+this.logDebug("DataBoundComponent using canEditFieldAttribute:"+_2+" setting 'canEdit' to "+_3+" on target field "+_1.name,"canEditField");return _3}
+,isc.A.combineFieldData=function isc_Canvas_combineFieldData(_1){var _2=this.getDataSource();if(this.getFullDataPath()||_1.dataPath){var _3=this.buildFieldDataPath(this.getFullDataPath(),_1);isc.DataSource.combineFieldData(_1,this.getDataPathField(_3));return _1}else if(_2!=null&&_2.getField(_1.name)){return _2.combineFieldData(_1)}else if(_1.includeFrom!=null){return this.$785(_1)}
+return _1}
+,isc.A.$785=function isc_Canvas__combineIncludeFromFieldData(_1){var _2=_1.includeFrom.split(".");if(_2==null||_2.length!=2){this.logWarn("This component includes a field with includeFrom set to:"+_1.includeFrom+". Format not understood.")}else{var _3=isc.DataSource.get(_2[0]),_4=_2[1];if(_3==null){this.logWarn("Field specifies includeFrom:"+_1.includeFrom+". Unable to find dataSource with ID:"+_2[0])}else{if(_1.name==null)_1.name=_4;return _3.combineFieldData(_1,_3.getField(_4))}}}
+,isc.A.shouldUseField=function isc_Canvas_shouldUseField(_1,_2){if(_1.canView===false)return false;if(_1.hidden&&!this.showHiddenFields)return false;if(_1.canFilter==false&&this.showFilterFieldsOnly){return false}
+if(_1.detail&&!this.showDetailFields)return false;if(!this.showComplexFields&&_2.fieldIsComplexType(_1.name))return false;return true}
+,isc.A.addFieldValidators=function isc_Canvas_addFieldValidators(_1){if(_1==null)return;for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3.required){var _4=this.getRequiredValidator(_3),_5=_4.errorMessage;if(!_3.validators){_3.validators=[_4]}else{if(!isc.isAn.Array(_3.validators)){_3.validators=[_3.validators]}
+if(!_3.validators.containsProperty("type",_4.type)&&!_3.validators.containsProperty("_constructor",_4.type))
+{if(_3.validators.$69){_3.validators=_3.validators.duplicate()}
+_3.validators.add(_4)}else if(_5!=null){var _6=this.getDataSource(),v=(_3.validators.find("type",_4.type)||_3.validators.find("_constructor",_4.type));if(v.errorMessage==null||(_6&&v.errorMessage==_6.requiredMessage)){v.errorMessage=_5}}}}else if(_3.required==false){var _8=_3.validators;if(_3.validators!=null){var _9=_3.validators.findIndex("type","required");if(_9!=-1){_3.validators.removeAt(_9)}}}
+if(_3.multiple&&_3.validateEachItem==null)_3.validateEachItem=true}}
+,isc.A.getRequiredValidator=function isc_Canvas_getRequiredValidator(_1){var _2={type:"required"},_3=_1.requiredMessage||this.requiredMessage;if(_3!=null)_2.errorMessage=_3;return _2}
+,isc.A.getAllFields=function isc_Canvas_getAllFields(){return this.completeFields||this.fields}
+,isc.A.getField=function isc_Canvas_getField(_1){if(!this.fields)return null;return isc.Class.getArrayItem(_1,this.fields,this.fieldIdProperty)}
+,isc.A.getFieldNum=function isc_Canvas_getFieldNum(_1){if(!this.fields)return-1;if(isc.isA.Object(_1)&&(_1[this.fieldIdProperty]!=null)){_1=_1[this.fieldIdProperty]}
+return isc.Class.getArrayItemIndex(_1,this.fields,this.fieldIdProperty)}
+,isc.A.isXMLRequired=function isc_Canvas_isXMLRequired(_1){if(!_1||!this.useXMLRequired||!_1.xmlRequired)return false;if(!_1.dataPath)return true;var _2=this.getDataSource();if(!_2)return true;var _3=_1.dataPath.split(isc.slash),_1;for(var i=0;i<_3.length;i++){var _5=_3[i];if(!_2)return true;_1=_2.getField(_5);if(!_1)return true;if(_1.xmlMinOccurs!=null&&_1.xmlMinOccurs<1){return false}
+_2=_2.getSchema(_1.type)}
+return true}
+,isc.A.evalViewState=function isc_Canvas_evalViewState(_1,_2,_3){return isc.Canvas.evalViewState(_1,_2,_3,this)}
+,isc.A.getFieldState=function isc_Canvas_getFieldState(_1){var _2=[];var _3=this.getAllFields();if(_3){for(var i=0;i<_3.length;i++){var _5=_3[i];if(!_5||_5.excludeFromState)continue;var _6=_5[this.fieldIdProperty],_7=this.getStateForField(_6,_1);_2.add(_7)}}
+return isc.Comm.serialize(_2,false)}
+,isc.A.getStateForField=function isc_Canvas_getStateForField(_1,_2){var _3=this.getAllFields().find(this.fieldIdProperty,_1),_4={name:_1};if(!_3)return null;if(_3.frozen==true)_4.frozen=true;if(!this.fieldShouldBeVisible(_3,this.getFieldNum(_1)))_4.visible=false;if(_3.userFormula)_4.userFormula=_3.userFormula;if(_3.userSummary)_4.userSummary=_3.userSummary;if(_2||_3.userSummary||_3.userFormula){_4.title=_3.title}
+if(this.getSpecifiedFieldWidth)_4.width=this.getSpecifiedFieldWidth(_3);if(_3.autoFitWidth)_4.autoFitWidth=true;return _4}
+,isc.A.$31y=function isc_Canvas__setFieldState(_1,_2){if(_1==null)return;var _3=this.getAllFields();var _4=_3.getProperty(this.fieldIdProperty),_5=[];for(var i=0;i<_1.length;i++){var _7=_1[i],_8=_3.find(this.fieldIdProperty,_7.name);if(_8==null){if(_7.userFormula||_7.userSummary){_8={};_8[this.fieldIdProperty]=_7.name}else continue}
+_4.remove(_7.name);if(_7.visible==false){_8.showIf=this.$18r}else{_8.showIf=null;_8.detail=false}
+if(_7.width!=null&&(!isNaN(_7.width)||_7.width=="*"))_8.width=_7.width;_8.frozen=_7.frozen;if(_7.title)_8.title=_7.title;if(_7.userFormula!=null)_8.userFormula=_7.userFormula;if(_7.userSummary!=null)_8.userSummary=_7.userSummary;if(_7.autoFitWidth!=_8.autoFitWidth)_8.autoFitWidth=_7.autoFitWidth;_5.add(_8)}
+var _9=this.defaultFieldState;if(_9!=null)_9=this.evalViewState(_9,"fieldState");for(var i=0;i<_4.length;i++){var _10=_4[i],_11=_3.findIndex(this.fieldIdProperty,_10),_8=_3[_11],_12=_3[_11-1];var _13=_9?_9.find("name",_10):null;var _14=_13!=null?_13.visible==false:_2;if(_14){_8.showIf=this.$18r}else{_8.showIf=null;_8.detail=false}
+if(_13){if(_13.width!=null&&(!isNaN(_13.width)||_13.width=="*"))
+{_8.width=_13.width}
+_8.frozen=_13.frozen;if(_13.title)_8.title=_13.title;if(_13.userFormula!=null)_8.userFormula=_13.userFormula;if(_13.userSummary!=null)_8.userSummary=_13.userSummary;if(_13.autoFitWidth!=_8.autoFitWidth)_8.autoFitWidth=_13.autoFitWidth}
+if(_12!=null){var _15=_5.indexOf(_12);if(_15!=-1){_5.addAt(_8,_15+1);continue}}
+if(this.fieldShouldBeVisible(_8,_11)&&!_2){_5.addAt(_8,this.$31z(_5)+1)}else{_5.add(_8)}}
+return _5}
+,isc.A.fieldStateChanged=function isc_Canvas_fieldStateChanged(){}
+,isc.A.$31z=function isc_Canvas__lastVisibleFieldIndex(_1){if(_1==null)_1=this.completeFields;var _2=this.getVisibleFields(_1);if(_2.length==0)return-1;return _1.lastIndexOf(_2.last())}
+,isc.A.getVisibleFields=function isc_Canvas_getVisibleFields(_1){var _2=[];for(var i=0;i<_1.length;i++){var _4=_1[i];if(_4==null)continue;if(this.fieldShouldBeVisible(_4,i))_2.add(_4)}
+return _2}
+,isc.A.fieldShouldBeVisible=function isc_Canvas_fieldShouldBeVisible(_1,_2){if(_1.showIf!=null){if(_1.showIf==this.$18r||_1.showIf==this.$301)return false;isc.Func.replaceWithMethod(_1,"showIf","list,field,fieldNum");if(!_1.showIf(this,_1,_2))return false}
+return true}
+,isc.A.setValueMap=function isc_Canvas_setValueMap(_1,_2){if(!isc.isAn.Object(_1))_1=this.getField(_1);if(!_1)return;_1.valueMap=_2}
+,isc.A.setDataSource=function isc_Canvas_setDataSource(_1,_2){if(isc.$cv)arguments.$cw=this;this.dataSource=_1||this.dataSource;if(this.setFields)this.setFields(_2);if(this.dataSource){if(this.isA("DynamicForm"))this.setData({});else this.setData([])}
+this.markForRedraw("bind")}
+,isc.A.bind=function isc_Canvas_bind(_1,_2){this.setDataSource(_1,_2)}
+,isc.A.getDataSource=function isc_Canvas_getDataSource(){if(isc.isA.String(this.dataSource)){if(this.serviceNamespace||this.serviceName){this.dataSource=this.lookupSchema()}else{var _1=isc.DS.get(this.dataSource);if(_1!=null)return _1;_1=this.getWindow()[this.dataSource];if(_1&&isc.isA.DataSource(_1))return(this.dataSource=_1)}}
+return this.dataSource}
+,isc.A.setData=function isc_Canvas_setData(_1){this.data=_1}
+,isc.A.lookupSchema=function isc_Canvas_lookupSchema(){var _1;if(this.serviceName)_1=isc.WebService.getByName(this.serviceName,this.serviceNamespace);else _1=isc.WebService.get(this.serviceNamespace);if((this.serviceNamespace||this.serviceName)&&_1==null){this.logWarn("Could not find WebService definition: "+(this.serviceName?"serviceName: "+this.serviceName:"")+(this.serviceNamespace?" serviceNamespace: "+this.serviceNamespace:""))}
+if(!isc.isA.String(this.dataSource)){this.logWarn("this.dataSource was not a String in lookupSchema");return}
+var _2;if(_1)_2=_1.getSchema(this.dataSource);return _2||this.dataSource}
+,isc.A.fieldValuesAreEqual=function isc_Canvas_fieldValuesAreEqual(_1,_2,_3){if(_2==_3)return true;if(_1==null)return false;if(_1.type=="date"){if(isc.isA.Date(_2)&&isc.isA.Date(_3)){return(Date.compareLogicalDates(_2,_3)==0)}}else if(_1.type=="datetime"){if(isc.isA.Date(_2)&&isc.isA.Date(_3)){return(Date.compareDates(_2,_3)==0)}}else if(_1.type=="valueMap"){if(isc.isAn.Array(_2)&&isc.isAn.Array(_3)){return _2.equals(_3)}else if(isc.isAn.Object(_2)&&isc.isAn.Object(_3)){for(var i in _2){if(_3[i]!=_2[i])return false}
+for(var j in _3){if(_2[j]!=_3[j])return false}
+return true}}
+return false}
+,isc.A.setFields=function isc_Canvas_setFields(_1){_1=this.bindToDataSource(_1);this.fields=_1}
+,isc.A.getSerializeableFields=function isc_Canvas_getSerializeableFields(_1,_2){_1.addList(["zIndex","data"]);if(this.ID&&this.ID.startsWith("isc_"))_1.add("ID");if(this.dataSource)_1.addList(["fields","items"]);if(this.getClassName()!="Canvas"&&this.getClassName()!="Layout"){_1.add("children")}
+return this.Super("getSerializeableFields",arguments)}
+,isc.A.addField=function isc_Canvas_addField(_1,_2,_3){if(_1==null)return;if(_3==null)_3=(this.fields||this.items||isc.$ac);_3=_3.duplicate();var _4=this.getField(_1.name);if(_4)_3.remove(_4);if(_2==null||_2>_3.length)_2=_3.length;_3.addAt(_1,_2);this.setFields(_3)}
+,isc.A.removeField=function isc_Canvas_removeField(_1,_2){if(_2==null)_2=(this.fields||this.items||isc.$ac);_2=_2.duplicate();var _3=_1.name?_1.name:_1;_2.remove(_2.find("name",_3));this.setFields(_2)}
+,isc.A.setCanEdit=function isc_Canvas_setCanEdit(_1){this.canEdit=_1}
+,isc.A.filterData=function isc_Canvas_filterData(_1,_2,_3){this.$wo("filter",_1,_2,_3)}
+,isc.A.fetchData=function isc_Canvas_fetchData(_1,_2,_3){if(!_3)_3={};if(!_3.textMatchStyle)_3.textMatchStyle="exact";this.$wo("fetch",_1,_2,_3)}
+,isc.A.$71s=function isc_Canvas__canExportField(_1){return(this.canExport!=false&&_1.canExport!=false&&!_1.userFormula&&!_1.userSummary&&!_1.hidden)}
+,isc.A.exportData=function isc_Canvas_exportData(_1,_2){if(!_1)_1={};var _3=this.getSort();if(_3){_1.sortBy=isc.DS.getSortBy(_3)}else if(this.sortField){_1.sortBy=(Array.shouldSortAscending(this.sortDirection)?"":"-")+this.sortField}
+if(!_1.textMatchStyle){var _4=this.data.context;if(_4&&_4.textMatchStyle){_1.textMatchStyle=_4.textMatchStyle}}
+if(!this.exportAll&&!_1.exportFields){var _5=this.exportFields,_6="",_7=this.getDataSource();if(!_5){_5=[];for(var i=0;i<this.fields.length;i++){var _9=this.fields.get(i),_10=_7?_7.getField(_9.name):null;if(this.$71s(_9)){if(_9.includeFrom||(_10&&_10.includeFrom)){var _11=_9.includeFrom?_9.includeFrom:_10.includeFrom;_6+=_9.name+":"+_11+",";_5.add(_9.name)}else{_5.add(_9.name)}
+if(_9.displayField&&!_9.optionDataSource){_5.add(_9.displayField)}}}}
+if(_6.length>1){if(_6.endsWith(",")){_6=_6.substring(0,_6.length-1)}
+_1.additionalOutputs=_6}
+if(_5&&_5.length>0)_1.exportFields=_5}
+var _12=_1.exportFields||this.exportFields||this.fields;var _13={};for(var i=0;i<_12.length;i++){var _9=_12[i];var _14;if(isc.isA.String(_9)){_14=_9;_9=this.getField(_14)}
+if(_9){_13[_9.name]=_9.exportTitle||_9.title}else{_13[_14]=_14}}
+_1.exportFieldTitles=_13;this.getDataSource().exportData(this.getCriteria(),_1,_2,this)}
+,isc.A.setCriteria=function isc_Canvas_setCriteria(_1){if(this.data&&this.data.setCriteria)this.data.setCriteria(_1);else this.initialCriteria=_1}
+,isc.A.getCriteria=function isc_Canvas_getCriteria(){if(!this.isDrawn()&&(!this.data||this.data.getLength()==0)){return isc.shallowClone(this.initialCriteria)}
+else if(this.data&&this.data.getCriteria){if(isc.isA.Tree(this.data)){return isc.shallowClone(this.data.getCriteria(this.getDataSource()))}else{return isc.shallowClone(this.data.getCriteria())}}else return null}
+,isc.A.doInitialFetch=function isc_Canvas_doInitialFetch(){var _1=false;if(this.autoFetchData&&!this.$p7&&this.fetchData){if(!this.dataSource){this.logWarn("autoFetchData is set, but no dataSource is specified, can't fetch")}else{_1=!isc.RPCManager.startQueue();this.fetchData(this.getInitialCriteria(),null,this.getInitialFetchContext());this.$p7=true}}
+return _1}
+,isc.A.getInitialCriteria=function isc_Canvas_getInitialCriteria(){return this.initialCriteria}
+,isc.A.getInitialFetchContext=function isc_Canvas_getInitialFetchContext(){var _1={};_1.textMatchStyle=this.autoFetchTextMatchStyle;return _1}
+,isc.A.fetchRelatedData=function isc_Canvas_fetchRelatedData(_1,_2,_3,_4){var _5=isc.isA.DataSource(_2)?_2:isc.isA.String(_2)?isc.DS.get(_2):isc.isA.Canvas(_2)?_2.dataSource:null;if(!_5){this.logWarn("schema not understood: "+this.echoLeaf(_2));return}
+var _6=this.getDataSource().getTreeRelationship(_5);var _7={};_7[_6.parentIdField]=_1[_6.idField];this.fetchData(_7,_3,_4)}
+,isc.A.clearCriteria=function isc_Canvas_clearCriteria(_1,_2){this.$wo("filter",null,_1,_2)}
+,isc.A.$wo=function isc_Canvas__filter(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(_4==null&&isc.isAn.Object(_3)&&_3.methodName==null)
+{_4=_3;_3=null}
+_4=this.buildRequest(_4,_1,_3);if(this.onFetchData!=null){this.onFetchData(_2,_4)}
+var _5=this.getAllFields();if(_5!=null){for(var i=0;i<_5.length;i++){if(_5[i].includeFrom!=null&&this.getDataSource().getField(_5[i].name)==null)
+{if(_4.additionalOutputs==null)_4.additionalOutputs="";else _4.additionalOutputs+=",";_4.additionalOutputs+=[_5[i].name,_5[i].includeFrom].join(":")}}}
+if(_2==null){_2={}}else if(isc.isA.Class(_2)){_2=isc.DynamicForm.getFilterCriteria(_2)}
+this.filterWithCriteria(_2,_4.operation,_4)}
+,isc.A.filterWithCriteria=function isc_Canvas_filterWithCriteria(_1,_2,_3){_3.prompt=(_3.prompt||isc.RPCManager.fetchDataPrompt);var _4=_1;if(this.ignoreEmptyCriteria){_4=isc.DataSource.filterCriteriaForFormValues(_1)}else{_4=isc.addProperties({},_4)}
+_4=isc.DS.checkEmptyCriteria(_4);var _5=this.getData();if(this.useExistingDataModel(_1,_2,_3)){var _6=this.updateDataModel(_4,_2,_3);if(_6!=null)_5=_6}else{_5=this.createDataModel(_4,_2,_3)}
+this.setData(_5);if(!_3.$326&&this.requestVisibleRows!=null){var _7=this.data,_8=_7.fetchDelay;_7.fetchDelay=0;this.requestVisibleRows();_7.fetchDelay=_8}}
+,isc.A.useExistingDataModel=function isc_Canvas_useExistingDataModel(_1,_2,_3){var _4=this.getData();if(!(isc.isA.ResultSet(_4)||isc.isA.ResultTree(_4))){_4=this.originalData;if(_4==null)return false;if(!isc.isA.ResultSet(_4)&&!isc.isA.ResultTree(_4))return false}
+var _5=_4.getOperationId("fetch");return _5==null||_5==_2.ID}
+,isc.A.createDataModel=function isc_Canvas_createDataModel(_1,_2,_3){if(this.logIsInfoEnabled("ResultSet")){this.logInfo("Creating new isc.ResultSet for operation '"+_2.ID+"' with filterValues: "+this.echoFull(_1),"ResultSet")}
+var _4=this.getDataSource();if(!_4){this.logWarn("No DataSource or invalid DataSource specified, can't create data model"+this.getStackTrace());return null}
+var _5=this.dataProperties||{};if(_5.context)_3=isc.addProperties({},_5.context,_3);if(this.dataFetchDelay)_5.fetchDelay=this.dataFetchDelay;isc.addProperties(_5,{operation:_2,filter:_1,context:_3,componentId:this.ID});if(this.getSort!=null){var _6=this.getSort();if(_6!=null&&_6.length>0){_5.$73p=_6;_5.$39x=isc.DS.getSortBy(_5.$73p)}}
+return _4.getResultSet(_5)}
+,isc.A.updateDataModel=function isc_Canvas_updateDataModel(_1,_2,_3){this.logDebug("Setting filter to: "+this.echoFull(_1));var _4=this.getData();if(!isc.isA.ResultSet(_4))_4=this.originalData;if(!isc.isA.ResultSet(_4)){return}
+_4.setContext(_3);if(!_4.willFetchData(_1))delete _3.afterFlowCallback;_4.setCriteria(_1);return _4}
+,isc.A.requestVisibleRows=function isc_Canvas_requestVisibleRows(){return this.data.get(0)}
+,isc.A.invalidateCache=function isc_Canvas_invalidateCache(){if(this.data&&this.data.invalidateCache!=null)return this.data.invalidateCache();else if(this.isGrouped&&isc.isA.ResultSet(this.originalData)){this.originalData.invalidateCache();this.regroup()}}
+,isc.A.willFetchData=function isc_Canvas_willFetchData(_1,_2){var _3=this.data;if(_3&&_3.willFetchData==null&&this.originalData!=null)_3=this.orginalData;if(_3&&_3.willFetchData!=null){return _3.willFetchData(_1,_2)}
+return true}
+,isc.A.findByKey=function isc_Canvas_findByKey(_1){return this.data.findByKey(_1)}
+,isc.A.shouldSaveLocally=function isc_Canvas_shouldSaveLocally(){return(!this.dataSource||this.getFullDataPath()!=null||this.saveLocally)}
+,isc.A.addData=function isc_Canvas_addData(_1,_2,_3){return this.$wp("add",_1,_2,_3)}
+,isc.A.updateData=function isc_Canvas_updateData(_1,_2,_3){return this.$wp("update",_1,_2,_3)}
+,isc.A.removeData=function isc_Canvas_removeData(_1,_2,_3){return this.$wp("remove",_1,_2,_3)}
+,isc.A.$wp=function isc_Canvas__performDSOperation(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(_4==null&&isc.isAn.Object(_3)&&_3.methodName==null)
+{_4=_3;_3=null}
+if(this.shouldSaveLocally()||this.getDataSource()==null){if(_1=="update"){var _5=this.getDataSource();if(!_5){isc.logWarn("Update by primary key cannot be performed without a DataSource."+"Modify the record directly instead");return}
+var _6=this.data.get(_5.findByKeys(_2,this.data));isc.addProperties(_6,_2);return this.data.dataChanged()}else if(_1=="add"){if(this.originalData){this.originalData.add(_2);this.dataChanged("add",null,null,_2)}else{if(isc.isA.Tree(this.data)){var _7=this.data.getParent(_2)||this.data.getRoot();this.data.add(_2,_7)}else{this.data.add(_2)}}
+return}}
+_4=this.buildRequest(_4,_1);return this.getDataSource().performDSOperation(_1,_2,_3,_4)}
+,isc.A.removeSelectedData=function isc_Canvas_removeSelectedData(_1,_2){if(_2==null&&isc.isAn.Object(_1)&&_1.methodName==null)
+{_2=_1;_1=null}
+var _3=this.getSelection();if(isc.isA.ListGrid(this)&&this.canEdit&&this.selectOnEdit&&(_3==null||_3.length==0)&&this.getEditRow()!=null&&this.getRecord(this.getEditRow())==null)
+{this.discardEdits(this.getEditRow());return}
+if(this.dataSource==null||this.shouldSaveLocally()){if(this.data){this.data.removeList(this.getSelection());if(_1)this.fireCallback(_1)}
+return}
+var _4=this.buildRequest(_2,"remove",_1),_5=this.getDataSource();if(_3.length>0)this.deleteRecords(_3,_4.operation,_4,_5)}
+,isc.A.deleteRecords=function isc_Canvas_deleteRecords(_1,_2,_3,_4){isc.addProperties(_3,{prompt:(_3.prompt||isc.RPCManager.removeDataPrompt)});var _5=isc.RPCManager.startQueue();if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){if(_1[i].$52e)continue;_4.performDSOperation(_2.type,_1[i],null,_3)}
+if(!_5)isc.RPCManager.sendQueue()}
+,isc.A.createSelectionModel=function isc_Canvas_createSelectionModel(){if(this.selection)this.destroySelectionModel();if(this.canSelectCells){var _1=[];if(this.numRows!=null){for(var i=0;i<this.numRows;i++){_1[i]={}}}}else{var _1=this.data}
+var _3,_4={ID:this.getID()+"_selection",data:_1,target:this,selectionProperty:this.selectionProperty,simpleDeselect:this.simpleDeselect,dragSelection:this.canDragSelect};if(this.canSelectCells&&this.fields!=null)_4.numCols=this.fields.length;if(this.recordEnabledProperty!=null)_4.enabledProperty=this.recordEnabledProperty;if(this.recordCanSelectProperty!=null)_4.canSelectProperty=this.recordCanSelectProperty;if(this.cascadeSelection!=null)_4.cascadeSelection=this.cascadeSelection;if(this.data.getNewSelection){_3=this.data.getNewSelection(_4)}
+if(_3==null){if(this.canSelectCells){_3=isc.CellSelection.create(_4)}else{_3=isc.Selection.create(_4)}}
+this.selection=_3}
+,isc.A.destroySelectionModel=function isc_Canvas_destroySelectionModel(){if(!this.selection)return;if(this.selection.destroy)this.selection.destroy();delete this.selection}
+,isc.A.removeSelectionMarkers=function isc_Canvas_removeSelectionMarkers(_1){var _2=true;if(!isc.isAn.Array(_1)){_1=[_1];_2=false}
+_1.clearProperty(this.selectionProperty||this.selection?this.selection.selectionProperty:null);return _2?_1:_1[0]}
+,isc.A.getSelection=function isc_Canvas_getSelection(_1){if(!this.selection)return null;if(this.canSelectCells){var _2=this.selection.getSelectedCells();if(_2==null)return null;var _3=[];for(var i=0;i<_2.length;i++){var _5=_2[i],_6=this.getCellRecord(_5[0],_5[1]);if(_6==null)continue;_3.add(_6)}
+return _3}else{return this.selection.getSelection(_1)}}
+,isc.A.getSelectedRecords=function isc_Canvas_getSelectedRecords(_1){return this.getSelection(_1)}
+,isc.A.getSelectedRecord=function isc_Canvas_getSelectedRecord(){if(!this.selection)return null;return this.selection.getSelectedRecord()}
+,isc.A.getSelectionObject=function isc_Canvas_getSelectionObject(){return this.selection}
+,isc.A.isSelected=function isc_Canvas_isSelected(_1){if(!_1||!this.selection)return false;return this.selection.isSelected(_1)}
+,isc.A.isPartiallySelected=function isc_Canvas_isPartiallySelected(_1){if(!_1||!this.selection)return false;return this.selection.isPartiallySelected(_1)}
+,isc.A.selectRecord=function isc_Canvas_selectRecord(_1,_2,_3){this.selectRecords(_1,_2,_3)}
+,isc.A.selectSingleRecord=function isc_Canvas_selectSingleRecord(_1){this.selection.deselectAll();this.selectRecord(_1)}
+,isc.A.deselectRecord=function isc_Canvas_deselectRecord(_1,_2){this.selectRecord(_1,false,_2)}
+,isc.A.selectRecords=function isc_Canvas_selectRecords(_1,_2,_3){if(_2==null)_2=true;if(!isc.isAn.Array(_1))_1=[_1];if(isc.isA.ResultSet(this.data)&&!this.data.lengthIsKnown()){this.logWarn("ignoring attempt to select records while data is loading");return}
+for(var i=0;i<_1.length;i++){if(_1[i]==null)continue;if(isc.isA.Number(_1[i])){var _5=_1[i];_1[i]=this.getRecord(_5,_3)}}
+var _6=this.getSelectionObject(_3);if(_6){_6.selectList(_1,_2,_3);this.fireSelectionUpdated()}}
+,isc.A.deselectRecords=function isc_Canvas_deselectRecords(_1,_2){this.selectRecords(_1,false)}
+,isc.A.selectAllRecords=function isc_Canvas_selectAllRecords(){this.selection.selectAll();this.fireSelectionUpdated()}
+,isc.A.deselectAllRecords=function isc_Canvas_deselectAllRecords(){this.selection.deselectAll();this.fireSelectionUpdated()}
+,isc.A.anySelected=function isc_Canvas_anySelected(){return this.selection&&this.selection.anySelected()}
+,isc.A.getRecord=function isc_Canvas_getRecord(_1,_2){if(this.data)return this.data.get(_1);return null}
+,isc.A.fireSelectionUpdated=function isc_Canvas_fireSelectionUpdated(){if(this.selectionUpdated){var _1=this.getSelection(),_2=(_1&&_1.length>0?_1[0]:null);this.selectionUpdated(_2,_1)}}
+,isc.A.getHilites=function isc_Canvas_getHilites(){return this.hilites}
+,isc.A.setHilites=function isc_Canvas_setHilites(_1){this.hilites=_1;this.$63j(this.hilites)}
+,isc.A.getHiliteState=function isc_Canvas_getHiliteState(){var _1=this.getHilites();if(_1==null)return null;return"("+isc.JSON.encode(_1,{dateFormat:"dateConstructor",prettyPrint:false})+")"}
+,isc.A.setHiliteState=function isc_Canvas_setHiliteState(_1){if(_1==null)this.setHilites(null);var _2=eval(_1);this.setHilites(_2)}
+,isc.A.$63j=function isc_Canvas__setupHilites(_1,_2){if(_1!=null){for(var i=0;i<_1.length;i++){if(_1[i].id==null){this.$63k=this.$63k||0;_1[i].id=this.$63k++}}
+this.$58b=_1.makeIndex("id")}
+if(!_2)this.applyHilites()}
+,isc.A.applyHilites=function isc_Canvas_applyHilites(_1){var _2=this.hilites,_3=this.data;if(_2&&!this.$58b)this.$63j(_2,true);if(isc.isA.ResultSet(_3))_3=_3.getAllLoadedRows();if(isc.isA.Tree(_3))_3=_3.getAllItems();_3.setProperty(this.hiliteMarker,null);var _4=this.getAllFields();for(var i=0;i<_4.length;i++){var _6=_4[i],_7=_6[this.fieldIdProperty];if(_6.userFormula||_6.userSummary){if(_6.userSummary&&!_6.$652)
+this.getSummaryFunction(_6);for(var j=0;j<_3.length;j++){if(_6.userFormula)
+_3[j][_7]=this.getFormulaFieldValue(_6,_3[j]);else
+_3[j][_7]=_6.$652(_3[j],_7,this)}}}
+if(_2!=null){for(var i=0;i<_2.length;i++){this.applyHilite(_2[i],_3)}}
+if(!_1)this.redrawHilites()}
+,isc.A.getHilite=function isc_Canvas_getHilite(_1){if(isc.isAn.Object(_1))return _1;if(this.hilites==null)return null;if(!this.$58b&&this.hilites){this.$63j(this.hilites)}
+var _2=this.$58b[_1];if(_2==null)_2=this.hilites[_1];return _2}
+,isc.A.applyHilite=function isc_Canvas_applyHilite(_1,_2,_3){_1=this.getHilite(_1);if(!_1.criteria)return;if(_1.disabled)return;var _3=_3||_1.fieldName;if(_3==null)_3=this.fields.getProperty("name");var _4=[];if(this.getDataSource()){_4=this.getDataSource().applyFilter(_2,_1.criteria)}else{_4=this.unboundApplyFilter(_2,_1.criteria)}
+var _5=isc.isAn.Array(_3)?_3:[_3];if(this.logIsDebugEnabled("hiliting")){this.logDebug("applying filter: "+this.echoFull(_1.criteria)+", produced matches: "+isc.echoLeaf(_4)+", on fields: "+_5,"hiliting")}
+for(var j=0;j<_5.length;j++){var _7=this.getField(_5[j]);for(var i=0;i<_4.length;i++){var _9=_4[i];this.hiliteRecord(_9,_7,_1)}}}
+,isc.A.unboundApplyFilter=function isc_Canvas_unboundApplyFilter(_1,_2){var _3=[];if(_1){if(_2){for(var _4=0;_4<_1.length;_4++){if(this.evaluateCriterion(_1[_4],_2)){_3.add(_1[_4])}}}else{_3=_1}}
+return _3}
+,isc.A.evaluateCriterion=function isc_Canvas_evaluateCriterion(_1,_2){var _3=isc.DataSource.$57z[_2.operator];if(_3==null){isc.logWarn("Attempted to use unknown operator "+_2.operator);return false}
+var _4=this.getDataSource();return _3.condition(_2.value,_1,_2.fieldName,_2,_3,_4||this)}
+,isc.A.compareValues=function isc_Canvas_compareValues(_1,_2,_3,_4){if(isc.isA.Date(_1)&&isc.isA.Date(_2)){if(_1.logicalDate||_2.logicalDate){return Date.compareLogicalDates(_1,_2)}else{return Date.compareDates(_1,_2)}}else{var _5=_4&&_1.toLowerCase?_1.toLowerCase():_1,_6=_4&&_2.toLowerCase?_2.toLowerCase():_2;if(_5==null&&_6!=null)return 1;if(_5!=null&&_6==null)return-1;return _5>_6?-1:(_5<_6?1:(_5==_6?0:2))}}
+,isc.A.hiliteRecord=function isc_Canvas_hiliteRecord(_1,_2,_3){if(!_2)return;var _4=_1[this.hiliteMarker];if(_4==null)_4=_1[this.hiliteMarker]=this.$578++;var _5=_2.$58c=_2.$58c||{},_6=_5[_4];if(_6==null)_5[_4]=_3.id;else _5[_4]=[_6,_3.id]}
+,isc.A.getHiliteCSSText=function isc_Canvas_getHiliteCSSText(_1){var _1=this.getHilite(_1);if(!_1)return;var _2=_1.cssText||"";if(_2==""){if(_1.textColor)_2+="color:"+_1.textColor+";";if(_1.backgroundColor)_2+="background-color:"+_1.backgroundColor+";";if(_2=="")_2==null}
+return _2||_1.style}
+,isc.A.addHiliteCSSText=function isc_Canvas_addHiliteCSSText(_1,_2,_3){if(!_1)return _3;var _4=_1[this.hiliteMarker],_2=this.getField(_2);if(!_2||!_2.$58c)return _3;var _5=_2.$58c[_4];if(_5==null)return _3;if(!isc.isAn.Array(_5)){this.$579[0]=_5;_5=this.$579}
+for(var i=0;i<_5.length;i++){var _7=this.getHiliteCSSText(_5[i]);if(_7!=null){_3=_3?_3+isc.semi+_7:_7}}
+return _3}
+,isc.A.addObjectHilites=function isc_Canvas_addObjectHilites(_1,_2,_3){if(!this.hilites||!_1)return _2;var _4;if(!isc.isAn.Array(_1)){this.$579[0]=_1;_4=this.$579}
+if(_4&&_4.length>0){for(var i=0;i<_4.length;i++){var _6,_7,_8;var _9=_4[i];if(isc.isA.String(_9))_6=_9;else _6=(_9!=null?_9[this.hiliteProperty]:null);_7=this.getHilite(_6);if(_7!=null&&!_7.disabled){_8=_7.cssText||_7.style;var _10=[];if(_7)
+_10=isc.isAn.Array(_7.fieldName)?_7.fieldName:[_7.fieldName];var _11=(!_7.fieldName||!_3||_10.contains(_3.name));if(_8!=null&&_8!=isc.emptyString&&_11){if(_2==null)_2=_8;else _2+=isc.semi+_8}}}}
+return _2}
+,isc.A.getFieldHilites=function isc_Canvas_getFieldHilites(_1,_2){if(!_1||!_2)return null;if(_1[this.hiliteProperty]!=null){var _3=this.getHilite(_1[this.hiliteProperty]),_4;if(_3)
+_4=isc.isAn.Array(_3.fieldName)?_3.fieldName:[_3.fieldName];if(_4&&_4.contains(_2.name))return[_3];else return null}
+if(_1[this.hiliteMarker]!=null){var _5=_1[this.hiliteMarker];if(!_2.$58c)return null;else return _2.$58c[_5]}}
+,isc.A.applyHiliteHTML=function isc_Canvas_applyHiliteHTML(_1,_2){if(!this.hilites)return _2;var _3,_4,_5;if(!isc.isAn.Array(_1)){this.$579[0]=_1;_1=this.$579}
+for(var i=0;i<_1.length;i++){_5=_1[i];_3=this.getHilite(_5);if(_3!=null){if(_3.htmlValue!=null)_2=_3.htmlValue;if(!_3.disabled){_4=_3.htmlBefore;if(_4!=null&&_4.length>0){_2=_4+_2}
+_4=_3.htmlAfter;if(_4!=null&&_4.length>0){_2=_2+_4}
+var _7=_3.htmlOpposite,_8=_3.styleOpposite||this.styleOpposite;if(_7){if(!isc.Browser.isIE){_2="<nobr><div class='"+_8+"' style='float:left'> "+_7+" </div>"+_2+"</nobr>"}else{_2="<nobr><table role='presentation' align=left><tr><td class='"+_8+"'>"+_7+"</td></tr></table>"+_2+"</nobr>"}}}}}
+return _2}
+,isc.A.enableHilite=function isc_Canvas_enableHilite(_1,_2){if(_2==null)_2=true;var _3=this.getHilite(_1);if(_3==null)return;_3.disabled=!_2;this.redrawHilites()}
+,isc.A.disableHilite=function isc_Canvas_disableHilite(_1){this.enableHilite(_1,false)}
+,isc.A.enableHiliting=function isc_Canvas_enableHiliting(_1){if(_1==null)_1=true;if(this.hilites)this.hilites.setProperty("disabled",!_1);this.redrawHilites()}
+,isc.A.disableHiliting=function isc_Canvas_disableHiliting(){this.enableHiliting(false)}
+,isc.A.redrawHilites=function isc_Canvas_redrawHilites(){this.markForRedraw()}
+,isc.A.editHilites=function isc_Canvas_editHilites(){var _1=this.getAllFields();if(!_1)return;var _2=_1?_1.findAll("canHilite",false):null;if(_2&&_2.length>0){_1.removeList(_2)}
+var _3=isc.DataSource.create({fields:_1});if(this.hiliteWindow){this.hiliteEditor.setDataSource(_3);this.hiliteEditor.clearHilites();this.hiliteEditor.setHilites(this.getHilites());this.hiliteWindow.show();return}
+var _4=this,_5=this.hiliteEditor=isc.HiliteEditor.create({autoDraw:false,dataSource:_3,hilites:this.getHilites(),callback:function(_7){if(_7!=null)_4.setHilites(_7);_4.hiliteWindow.hide()}}),_6=this.hiliteWindow=isc.Window.create({autoDraw:true,items:[_5],autoSize:true,autoCenter:true,isModal:true,showModalMask:true,closeClick:function(){this.hide()},title:"Edit Highlights",bodyProperties:{layoutMargin:8,membersMargin:8}});return _6}
+);isc.evalBoundary;isc.B.push(isc.A.transferRecords=function isc_Canvas_transferRecords(_1,_2,_3,_4,_5){if(!this.$67u("transferRecords",_1,_2,_3,_4,_5)){return}
+if(isc.isAn.Array(this.data)&&this.data.length==0&&this.dataSource&&!this.shouldSaveLocally())
+{this.fetchData(null,null,{$326:true});this.data.setFullLength(0)}
+if(_4==this){if(_3!=null&&!this.isGrouped)this.data.slideList(_1,_3)}else{var _6=this.getDataSource();var _7=_4.getDataSource();if(_6&&_6==_7&&_4.dragDataAction==isc.Canvas.MOVE&&!(_4.shouldSaveLocally()||this.shouldSaveLocally()))
+{var _8=isc.rpc.startQueue();for(var i=0;i<_1.length;i++){var _10={};var _11=_6.getPrimaryKeyFieldNames();for(var j=0;j<_11.length;j++){_10[_11[j]]=_1[i][_11[j]]}
+isc.addProperties(_10,this.getDropValues(_10,_7,_2,_3,_4));this.updateDataViaDataSource(_10,_7,null,_4)}
+if(!_8)isc.rpc.sendQueue()}else{if(!isc.isAn.Array(_1))_1=[_1];var _13=true;if(_7!=null&&_6!=null){var _14=_6.getPrimaryKeyField();_13=_14&&(_7.getField(_14.name)!=null)}
+if(_13){if(this.selectionType==isc.Selection.MULTIPLE||this.selectionType==isc.Selection.SIMPLE)
+{this.selection.deselectAll();this.selection.selectList(_1)}else if(this.selectionType==isc.Selection.SINGLE){this.selection.selectSingle(_1[0])}}
+if(_6){this.$67o=isc.rpc.startQueue();for(var i=0;i<_1.length;i++){if(_1[i].$52e)continue;var _10={};isc.addProperties(_10,_1[i]);isc.addProperties(_10,this.getDropValues(_10,_7,_2,_3,_4));if(_6!=_7){var _15=_6.getForeignKeysByRelation(_10,_7);var _16=false;var _17=[];if(_7)_17=_7.getPrimaryKeyFields();isc.addProperties(_10,_15);if(_6.titleField&&_7&&_7.titleField&&_6.titleField!=_7.titleField){var _18;if(_10[_6.titleField]===_18){_10[_6.titleField]=_10[_7.titleField]}}}
+this.$61d(_10,_7,_4,_15)}}else{if(this.isGrouped){for(var i=0;i<_1.length;i++){var _10={};isc.addProperties(_10,_1[i]);isc.addProperties(_10,this.getDropValues(_10,_7,_2,_3,_4));if(!this.$61e(_10)){this.$52u(_10,true);this.originalData.add(_10)}}}else{for(var i=0;i<_1.length;i++){var _10={};isc.addProperties(_10,_1[i]);isc.addProperties(_10,this.getDropValues(_10,_7,_2,_3,_4));if(_3!=null){if(this.$61d(_10,null,_4,null,_3)){_3++}}else{this.$61d(_10,null,_4)}}}}}}
+if(this.canReorderRecords&&this.$60z()!=null){this.unsort()}
+if(!this.$67l){isc.Log.logDebug("Invoking transferDragData from inside transferRecords - no server "+"queries needed?","dragDrop");_4.transferDragData(this.$67n,this);if(_6){if(!this.$67o)isc.rpc.sendQueue()}}
+this.$67m=false}
+,isc.A.$67u=function isc_Canvas__storeTransferState(_1,_2,_3,_4,_5,_6){if(!isc.isAn.Array(this.$67k))this.$67k=[];if(this.$67l&&this.$67l!=0){isc.logWarn("transferRecords was invoked but the prior transfer is not yet complete - \
+ the transfer will be queued up to run after the current transfer");this.$67k.add({implementation:_1,dropRecords:_2,targetRecord:_3,index:_4,sourceWidget:_5,callback:_6});return false}
+this.$67k.addAt({implementation:_1,dropRecords:_2,targetRecord:_3,index:_4,sourceWidget:_5,callback:_6},0);this.$67m=true;this.$67n=[];this.$67l=0;return true}
+,isc.A.updateDataViaDataSource=function isc_Canvas_updateDataViaDataSource(_1,_2,_3,_4){var _5=this;if(this.updateOperation){if(_3==null)_3={};isc.addProperties(_3,{operationId:this.updateOperation})}
+if(!this.preventDuplicates){if(!_4.$67v)_4.$67v=0;_4.$67v++;_2.updateData(_1,function(_7,_8,_9){_4.$67w(_7,_8,_9)},_3);return}
+var _6=this.getCleanRecordData(_1);if(this.data.find(_6,null,Array.DATETIME_VALUES)){isc.Log.logDebug("Found client-side duplicate, skipping update for '"+_1[isc.firstKey(_1)]+"'","dragDrop");this.$67n.add(this.getCleanRecordData(_1))}else{if(this.data.allMatchingRowsCached()){if(!_4.$67v)_4.$67v=0;_4.$67v++;_2.updateData(_1,function(_7,_8,_9){_4.$67w(_7,_8,_9)},_3)}else{isc.Log.logDebug("Incrementing dup query count: was "+_5.$67l,"dragDrop");this.$67l++;_2.fetchData(_6,function(_7,_8,_9){if(_8&&_8.length>0){isc.Log.logDebug("Found server-side duplicate, skipping update for '"+_1[isc.firstKey(_1)]+"'","dragDrop");_5.$67n.add(_5.getCleanRecordData(_8[0]))}else{if(!_4.$67v)_4.$67v=0;_4.$67v++;_2.updateData(_1,function(_7,_8,_9){_4.$67w(_7,_8,_9)},_3)}
+isc.Log.logDebug("Decrementing dup query count: was "+_5.$67l,"dragDrop");if(--_5.$67l==0&&!_5.$67m){if(_4.dragDataAction==isc.Canvas.MOVE){isc.Log.logDebug("Invoking transferDragData from inside callback","dragDrop");_4.transferDragData(_5.$67n,_5);delete _5.$67n;if(!_5.$67o)isc.rpc.sendQueue()}}},{sendNoQueue:true})}}}
+,isc.A.$61d=function isc_Canvas__addIfNotDuplicate(_1,_2,_3,_4,_5,_6){var _7=this.getDataSource(),_8,_9=this,_10={};if(this.addOperation){isc.addProperties(_10,{operationId:this.addOperation})}
+if(_7)_8=_7.getPrimaryKeyFields();if(_7){var _11;if(_8&&isc.firstKey(_8)!=null){for(var _12 in _8){if(_8[_12].type=="sequence"){_11=true;break}}}
+if(_11){var _13;for(var _12 in _8){_1[_12]=_13}
+if(!_3.$67v)_3.$67v=0;_3.$67v++;this.addData(_1,function(_15,_16,_17){_3.$67w(_15,_16,_17)});return true}}
+if(!this.preventDuplicates){if(_7){if(!_3.$67v)_3.$67v=0;_3.$67v++;this.addData(_1,function(_15,_16,_17){_3.$67w(_15,_16,_17)},_10)}else{if(isc.Tree&&isc.isA.Tree(this.data)){this.data.add(_1,_6,_5)}else{if(_5!=null)this.data.addAt(_1,_5);else this.data.add(_1)}}
+return true}
+if(this.$61e(_1,_2,_4)){if(this.duplicateDragMessage!=null)isc.warn(this.duplicateDragMessage);isc.Log.logDebug("Found client-side duplicate, adding '"+_1[isc.firstKey(_1)]+"' to exception list","dragDrop");this.$67n.add(this.getCleanRecordData(_1));return false}else{if(!_7){if(isc.Tree&&isc.isA.Tree(this.data)){this.data.add(_1,_6,_5);return true}else{if(_5!=null)this.data.addAt(_1,_5);else this.data.add(_1);return true}}else{if(!isc.ResultSet||!isc.isA.ResultSet(this.data)){if(!_3.$67v)_3.$67v=0;_3.$67v++;this.addData(_1,function(_15,_16,_17){_3.$67w(_15,_16,_17)},_10);return true}else{if(this.data.allRowsCached()||(_4&&isc.firstKey(_4)&&this.data.allMatchingRowsCached())){if(!_3.$67v)_3.$67v=0;_3.$67v++;this.addData(_1,function(_15,_16,_17){_3.$67w(_15,_16,_17)},_10);return true}
+if(_7&&_2==_7){if(_8&&isc.firstKey(_8)!=null){var _14=isc.applyMask(_1,_8)}else{_14=this.getCleanRecordData(_1)}}else if(_4&&isc.firstKey(_4)){_14=isc.addProperties({},this.data.getCriteria());isc.addProperties(_14,_4)}else if(_7&&_8&&isc.firstKey(_8)!=null){_14=isc.applyMask(_1,_8)}else{_14=this.getCleanRecordData(_1)}
+isc.Log.logDebug("Incrementing dup query count: was "+_9.$67l,"dragDrop");this.$67l++;_7.fetchData(_14,function(_15,_16,_17){if(_16&&_16.length>0){if(_9.duplicateDragMessage!=null)isc.warn(_9.duplicateDragMessage);isc.Log.logDebug("Found server-side duplicate, adding '"+_1[isc.firstKey(_1)]+"' to exception list","dragDrop");_9.$67n.add(_9.getCleanRecordData(_1))}else{if(!_3.$67v)_3.$67v=0;_3.$67v++;_7.addData(_1,function(_15,_16,_17){_3.$67w(_15,_16,_17)},_10)}
+isc.Log.logDebug("Decrementing dup query count: was "+_9.$67l,"dragDrop");if(--_9.$67l==0&&!_9.$67m){if(_3.dragDataAction==isc.Canvas.MOVE){isc.Log.logDebug("Invoking transferDragData from inside callback","dragDrop");_3.transferDragData(_9.$67n,_9);delete _9.$67n;if(!_9.$67o)isc.rpc.sendQueue()}}},{sendNoQueue:true})}}}}
+,isc.A.$61e=function isc_Canvas__isDuplicateOnClient(_1,_2,_3){var _4=this.getDataSource(),_5;if(!this.preventDuplicates)return false;if(_4)_5=_4.getPrimaryKeyFields();if(_4&&_4==_2){if(_5&&isc.firstKey(_5)!=null){for(var _6 in _5){if(_5[_6].type=="sequence"){return false}}}}
+if(!_4){var _7=this.getCleanRecordData(_1)}else if(_4&&_2==_4){if(_5&&isc.firstKey(_5)!=null){_7=isc.applyMask(_1,_5)}else{_7=this.getCleanRecordData(_1)}}else if(_3&&isc.firstKey(_3)){_7={};var _8=this.data.getCriteria();if(!_4.isAdvancedCriteria(_8)){var _9=this.data.context;if(_9&&(_9.textMatchStyle==null||_9.textMatchStyle=="exact")){isc.addProperties(_7,_8)}}
+isc.addProperties(_7,_3)}else if(_4&&_5&&isc.firstKey(_5)!=null){_7=isc.applyMask(_1,_5)}else{_7=this.getCleanRecordData(_1)}
+if(this.data.find(_7,null,Array.DATETIME_VALUES))return true;else return false}
+,isc.A.getCleanRecordData=function isc_Canvas_getCleanRecordData(_1){if(isc.Tree&&isc.isA.Tree(this.data)){return this.data.getCleanNodeData(_1,false)}
+var _2={};for(var _3 in _1){if(_3.startsWith("_selection_"))continue;if(_3=="$81y")continue;if(_3=="$29a")continue;_2[_3]=_1[_3]}
+return _2}
+,isc.A.$67w=function isc_Canvas__updateComplete(_1,_2,_3){if(this.$67v){isc.Log.logDebug("Decrementing update count - was "+this.$67v,"dragDrop");this.$67v-=1}
+if(!this.$67v){isc.Log.logDebug("All updates complete, calling dragComplete()","dragDrop");if(isc.isA.Function(this.dragComplete))this.dragComplete()}}
+,isc.A.getDropValues=function isc_Canvas_getDropValues(_1,_2,_3,_4,_5,_6){if(!this.addDropValues)return;var _7={},_8;if(this.data&&this.data.getNodeDataSource){_8=this.data.getNodeDataSource(_3)}
+if(!_8){_8=this.getDataSource()}
+if(this.data&&this.data.getCriteria)_7=this.data.getCriteria(_8);var _9;if(isc.isAn.emptyObject(_7)||(_8&&!_8.isAdvancedCriteria(_7))){var _10=this.data.context;if(_10&&(_10.textMatchStyle==null||_10.textMatchStyle=="exact")){_9=isc.addProperties({},_7);if(this.dropValues){_9=isc.addProperties(_9,this.dropValues)}
+return _9}}
+return this.dropValues}
+,isc.A.transferDragData=function isc_Canvas_transferDragData(_1,_2){var _3=[],_4,_5,_6;if(_2&&_2.$67k){_6=_2.$67k.shift();_4=_6.dropRecords;_5=_6.callback}else{_4=this.getDragData();_6={}}
+if(_4==null)_4=[];for(var i=0;i<_4.length;i++){var _8=this.getCleanRecordData(_4[i]);if(!_1||!_1.find(_8,null,Array.DATETIME_VALUES)){_3.add(_4[i])}}
+if(this.dragDataAction==isc.Canvas.MOVE&&_2!=this&&!_6.noRemove){if(this.dataSource&&!this.shouldSaveLocally()){var _9=_2.getDataSource();if(_9!=this.getDataSource()){var _10=isc.rpc.startQueue();for(var i=0;i<_3.length;i++){this.getDataSource().removeData(_3[i])}
+if(!_10)isc.rpc.sendQueue()}}else if(this.data){for(var i=0;i<_3.length;i++){this.data.remove(_3[i]);if(this.isGrouped){this.originalData.remove(_3[i])}}}
+if(this.selection&&this.selection.deselectList){this.selection.deselectList(_4)}}
+if(_2){if(isc.isA.Function(_2.dropComplete))_2.dropComplete(_3);if(_5){this.fireCallback(_5,"records",[_3])}
+if(_2.$67k&&_2.$67k.length>0){var _11=_2.$67k.shift();isc.Timer.setTimeout(function(){if(_11.implementation=="transferNodes"){_2.transferNodes(_11.dropRecords,_11.targetRecord,_11.index,_11.sourceWidget,_11.callback)}else{_2.transferRecords(_11.dropRecords,_11.targetRecord,_11.index,_11.sourceWidget,_11.callback)}},0)}}
+return _3}
+,isc.A.getDragData=function isc_Canvas_getDragData(){var _1=(this.selection&&this.selection.getSelection)?this.selection.getSelection():null;return _1}
+,isc.A.cloneDragData=function isc_Canvas_cloneDragData(){var _1=this.$758;if(_1==null){_1=(this.selection&&this.selection.getSelection)?this.selection.getSelection():null}
+this.$758=null;var _2=this.dragDataAction==isc.Canvas.COPY||this.dragDataAction==isc.Canvas.CLONE;var _3=[]
+if(_2&&_1){if(isc.isA.Tree(this.data)){_1=this.data.getCleanNodeData(_1)}else{if(!isc.isAn.Array(_1))_1=[_1];var _4=[];for(var i=0;i<_1.length;i++){_4[i]=this.getCleanRecordData(_1[i])}
+_1=_4}}
+return _1}
+,isc.A.transferSelectedData=function isc_Canvas_transferSelectedData(_1,_2,_3){if(!this.isValidTransferSource(_1)){if(_3)this.fireCallback(_3);return}
+if(_2!=null)_2=Math.min(_2,this.data.getLength());var _4=_1.cloneDragData();var _5;if(_2!=null)_5=this.data.get(_2);this.transferRecords(_4,_5,_2,_1,_3)}
+,isc.A.isValidTransferSource=function isc_Canvas_isValidTransferSource(_1){if(!_1||!_1.transferDragData){this.logWarn("transferSelectedData(): "+(_1?"Invalid ":"No ")+"source widget passed in - "+(_1||"")+" taking no action.");return false}
+if(_1==this){this.logWarn("transferSelectedData(): target parameter contains a pointer back to this grid - ignoring");return false}
+return true}
+,isc.A.setDragTracker=function isc_Canvas_setDragTracker(){var _1=isc.EH,_2=this.dragTrackerMode;if(_2=="none"||_1.dragOperation==_1.DRAG_SCROLL){_1.setDragTracker("");return false}else if(_2=="icon"){var _3=this.getSelection(),_4=this.getDragTrackerIcon(_3);_1.setDragTracker(this.imgHTML(_4),null,null,null,null,this.getDragTrackerProperties());return false}else{var _5=this.getSelectedRecord(),_6=_5&&this.data?this.data.indexOf(_5):-1;if(_2=="title"){var _7=this.getDragTrackerTitle(_5,_6);_1.setDragTracker(_7,null,null,null,null,this.getDragTrackerProperties());return false}else if(_2=="record"){var _8=this.body.getTableHTML([0,this.fields.length-1],_6,_6+1);_1.setDragTracker(_8,null,null,null,null,this.getDragTrackerProperties());return false}}}
+,isc.A.getDragTrackerProperties=function isc_Canvas_getDragTrackerProperties(){var _1=isc.addProperties({},this.dragTrackerProperties);_1.styleName=this.dragTrackerStyle;if(this.dragTrackerMode=="record")_1.opacity=50;return _1}
+,isc.A.makeDragLine=function isc_Canvas_makeDragLine(){if(this._dragLine)return false;var _1={ID:this.getID()+"_dragLine",width:2,height:2,overflow:isc.Canvas.HIDDEN,visibility:isc.Canvas.HIDDEN,isMouseTransparent:true,dropTarget:this,redrawOnResize:false,styleName:"dragLine"};if(this.ns.Element.getStyleEdges(_1.styleName)==null){_1.backgroundColor="black"}
+isc.addProperties(_1,this.dragLineDefaults,this.dragLineProperties);this._dragLine=this.ns.Canvas.create(_1);return true}
+,isc.A.hideDragLine=function isc_Canvas_hideDragLine(){if(this._dragLine)this._dragLine.hide()}
+,isc.A.configureFrom=function isc_Canvas_configureFrom(_1){var _2=this.dbcProperties;for(var i=0;i<_2.length;i++){this[_2[i]]=_1[_2[i]];if(_2[i]=="dataSource"){var _4=this.autoFetchData;this.autoFetchData=false;this.setDataSource(isc.DS.getDataSource(this.dataSource));this.autoFetchData=_4}}
+this.setCriteria(_1.getCriteria());this.setData(_1.getData())}
+,isc.A.addFormulaField=function isc_Canvas_addFormulaField(){this.editFormulaField()}
+,isc.A.editFormulaField=function isc_Canvas_editFormulaField(_1){if(isc.FormulaBuilder==null)return;var _2=this,_3=!_1?false:true;if(!_3){_1={name:_2.getUniqueFieldName(this.formulaFieldNamePrefix),title:"New Field",width:"50",canFilter:false,canExport:false,canSortClientOnly:true}}
+this.$65y=isc.Window.create({title:"Formula Editor ["+_1.title+"]",showMinimizeButton:false,showMaximizeButton:false,isModal:true,showModalMask:true,autoSize:true,autoCenter:true,autoDraw:true,headerIconProperties:{padding:1,src:"[SKINIMG]ListGrid/formula_menuItem.png"},closeClick:function(){this.items.get(0).completeEditing(true);return this.Super('closeClick',arguments)},items:[isc.FormulaBuilder.create({width:300,component:_2,dataSource:_2.getDataSource(),editMode:_3,field:_1,mathFunctions:isc.MathFunction.getDefaultFunctionNames(),fireOnClose:function(){_2.userFieldCallback(this)}},this.formulaBuilderProperties)]},this.formulaBuilderProperties)}
+,isc.A.getFormulaFieldValue=function isc_Canvas_getFormulaFieldValue(_1,_2){return this.getFormulaFunction(_1)(_2,this)}
+,isc.A.getFormulaFunction=function isc_Canvas_getFormulaFunction(_1){if(!_1.userFormula)return null;var _2=_1.$65w;if(_2!=null)return _2;_2=_1.$65w=_1.sortNormalizer=isc.FormulaBuilder.generateFunction(_1.userFormula,this.getAllFields(),this);return _2}
+,isc.A.addSummaryField=function isc_Canvas_addSummaryField(){this.editSummaryField()}
+,isc.A.editSummaryField=function isc_Canvas_editSummaryField(_1){if(isc.FormulaBuilder==null)return;var _2=this,_3=!_1?false:true;if(isc.isA.String(_1)){_1=this.getField(_1)}
+if(!_3){_1={name:_2.getUniqueFieldName(this.summaryFieldNamePrefix),title:"New Field",width:"50",canFilter:false,canExport:false,canSortClientOnly:true}}
+this.$65y=isc.Window.create({title:"Summary Editor ["+_1.title+"]",showMinimizeButton:false,showMaximizeButton:false,isModal:true,showModalMask:true,autoSize:true,autoCenter:true,autoDraw:true,headerIconProperties:{padding:1,src:"[SKINIMG]ListGrid/formula_menuItem.png"},closeClick:function(){this.items.get(0).completeEditing(true);return this.Super('closeClick',arguments)},items:[isc.SummaryBuilder.create({width:300,component:_2,dataSource:_2.getDataSource(),editMode:_3,field:_1,fireOnClose:function(){_2.userFieldCallback(this)}},this.summaryBuilderProperties)]},this.summaryEditorProperties)}
+,isc.A.userFieldCallback=function isc_Canvas_userFieldCallback(_1){if(!_1)return;var _2=this.$65y;if(_1.cancelled){_2.destroy();return}
+var _3=_1.getUpdatedFieldObject();if(this.userAddedField&&this.userAddedField(_3)==false){_2.destroy();return}
+if(this.hideField&&_1.shouldHideUsedFields()){var _4=_1.getUsedFields();for(var i=0;i<_4.length;i++){var _6=_4.get(i);this.hideField(_6.name)}}
+var _7=this.getAllFields();var _8=isc.Class.getArrayItemIndex(_3.name,_7,this.fieldIdProperty);if(_8>=0)_7[_8]=_3;else _7.addAt(_3,this.getFields().length);this.setFields(_7);if(this.markForRedraw)this.markForRedraw();var _9=_1.restartBuilder,_10=_1.builderTypeText;_2.destroy();if(_9){if(_10=="Formula")this.addFormulaField();else this.addSummaryField()}}
+,isc.A.getUniqueFieldName=function isc_Canvas_getUniqueFieldName(_1){if(!_1||_1=="")_1=this.uniqueFieldNamePrefix;var _2=this.getFields(),_3=1,_4=_1.length;for(var i=0;i<_2.length;i++){var _6=_2.get(i);if(_6.name.startsWith(_1)){var _7=_6.name.substr(_4),_8=new Number(_7);if(_8&&_8>=_3)_3=_8+1}}
+return _1+_3}
+,isc.A.getSummaryFunction=function isc_Canvas_getSummaryFunction(_1){if(!_1.userSummary)return null;var _2=_1.$652;if(_2!=null)return _2;_2=_1.$652=_1.sortNormalizer=isc.SummaryBuilder.generateFunction(_1.userSummary,this.getAllFields(),this);return _2}
+,isc.A.getSummaryFieldValue=function isc_Canvas_getSummaryFieldValue(_1,_2){return this.getSummaryFunction(_1)(_2,_1[this.fieldIdProperty],this)}
+,isc.A.getRecordIndex=function isc_Canvas_getRecordIndex(_1){return this.data.indexOf(_1)}
+,isc.A.getTitleFieldValue=function isc_Canvas_getTitleFieldValue(_1){}
+,isc.A.getTitleField=function isc_Canvas_getTitleField(){if(this.titleField!=null)return this.titleField;if(this.dataSource!=null){var _1=this.getDataSource().getTitleField();if(!this.getField(_1))_1=this.getFields()[0][this.fieldIdProperty];this.titleField=_1}else{var _2=this.getFields().getProperty(this.fieldIdProperty);this.titleField=_2.contains("title")?"title":_2.contains("label")?"label":_2.contains("name")?"name":_2.contains("id")?"id":_2.first()}
+return this.titleField}
+,isc.A.getRecordHiliteCSSText=function isc_Canvas_getRecordHiliteCSSText(_1,_2,_3){_2=this.addObjectHilites(_1,_2,_3);_2=this.addHiliteCSSText(_1,_3,_2);return _2}
+,isc.A.convertCSSToProperties=function isc_Canvas_convertCSSToProperties(_1,_2){if(_1==null)return null;var _3=_1.split(";"),_4;_3.map(function(_9){var _5=_9.split(":");if(_5.length!=2)return null;var _6=/^\s*(\S*)\s*$/,_7=_5[0].cssToCamelCaps().replace(_6,"$1"),_8=_5[1].replace(_6,"$1");if(!_2||_2.contains(_7)){if(!_4)_4={};_4[_7]=_8}});return _4}
+,isc.A.getExportFieldValue=function isc_Canvas_getExportFieldValue(_1,_2,_3){return this.htmlUnescapeExportFieldValue(this.getStandaloneFieldValue(_1,_2,false))}
+,isc.A.addDetailedExportFieldValue=function isc_Canvas_addDetailedExportFieldValue(_1,_2,_3,_4,_5,_6,_7,_8){var _9=_4.name,_10=this.getRecordHiliteCSSText(_3,null,_4),_11,_12={};if(!_8){_12=this.getDateFormattingProperties(_4,_3[_4.name],_1[_4.title])}
+if(_4.exportRawValues||(this.exportRawValues&&_4.exportRawValues!=false))
+_11=_3[_4[this.fieldIdProperty]];else
+_11=this.getExportFieldValue(_3,_4.name,_5);if(!_4.userSummary){if(_10||_12){var _13=this.convertCSSToProperties(_10,_6);if(_12){if(!_13)_13={};isc.addProperties(_13,_12)}
+if(_13){if(_7)
+_1[_2]=[{value:_11,style:_13}];else
+_1[_2]=_13}}
+return}
+if(!_4.userSummary.text)this.logError("Summary field does not have text format");var _14=[],_15={},_16={};var _17=(_10&&_10!="");for(var _18 in _4.userSummary.summaryVars){var _19=_4.userSummary.summaryVars[_18],_20=this.getField(_19);if(!_20)_14.add(_19);else{_15[_18]=_20;var _21=this.getRecordHiliteCSSText(_3,null,_20);if(_21){_16[_18]=_21;_17=true}}}
+if(!_17)return;if(_14.length!=0&&_10){if(_7){_1[_2]={style:this.convertCSSToProperties(_10,_6),value:_11}}else{_1[_2]=this.convertCSSToProperties(_10,_6)}
+return}
+var _22=null,_23=null,_24=[];var _25=this;var _26=function(_37,_38){if(_37){_37=_25.htmlUnescapeExportFieldValue(_37);if(_22&&_23==_38){_22.value+=_37}else{if(_22)_24.push(_22);_22={value:_37};_23=_38;if(_38)_22.style=_25.convertCSSToProperties(_38,_6)}}};var _27=_4.userSummary.text.split("#"),_28=/^\{([A-Z]+)\}/;if(_27[0])_26(_27[0],_10);for(var i=1;i<_27.length;i++){var _30=_27[i],_31,_32,_33,_34,_35,_36;_33=_30.charAt(0);_32=_15[_33];if(_32)_36=_30.substr(1);else if(_31=_30.match(_28)){_36=_30.substr(_31[0].length);_33=_31[1];_32=_15[_33];if(!_32)_36=this.missingSummaryFieldValue+_36}else _36="#"+_30;if(_32){_34=this.getExportFieldValue(_3,_32.name,this.getFieldNum(_32.name));_35=null;if(_10)_35=(_35||"")+_10;if(_16[_33])_35=(_35||"")+_16[_33]}
+_26(_34,_35);_26(_36,_10)}
+if(_22)_24.push(_22);_1[_2]=_24}
+,isc.A.getClientExportData=function isc_Canvas_getClientExportData(_1,_2){var _3=this.originalData||this.data,_4=[],_5=this.getClientExportFields(_1),_6,_7,_8,_9,_10=_1&&_1.exportFields;if(_1==null)_1={};if(_1.exportData!=null)_3=_1.exportData;_6=_1.includeHiddenFields;_7=_1.allowedProperties;_8=_1.includeCollapsedNodes;_9=_1.alwaysExportExpandedStyles;if(_10){if(_6!==false)_6=true}
+if(isc.isA.ResultSet(_3))_3=_3.getAllLoadedRows();if(isc.isA.Tree(_3)){if(_8)_3=_3.getAllNodes();else _3=_3.getOpenList()}
+var _11={settings:_1,callback:_2,chunkSize:this.exportDataChunkSize,data:_3,exportData:_4,fields:_5,includeHiddenFields:_6,allowedProperties:_7,includeCollapsedNodes:_8,alwaysExportExpandedStyles:_9,totalRows:_3.getLength(),startRow:0,endRow:Math.min(this.exportDataChunkSize,_3.getLength()),exportFieldsSpecified:_10};_11.firstTimeStamp=_11.thisTimeStamp=isc.timeStamp();this.logInfo("starting export chunking process - "+_11.firstTimeStamp,"export");this.getClientExportDataChunk(_11);return}
+,isc.A.getClientExportDataChunk=function isc_Canvas_getClientExportDataChunk(_1){var _2=_1.settings,_3=_1.data,_4=_1.exportData,_5=_1.fields,_6=_1.includeHiddenFields,_7=_1.allowedProperties,_8=_1.includeCollapsedNodes,_9=_1.alwaysExportExpandedStyles,_10=_1.totalRows,_11=_1.startRow,_12=_1.endRow,_13=_1.settings.exportValueFields,_14=_1.exportFieldsSpecified,_15=_1.settings.exportDatesAsFormattedString;for(var _16=_11;_16<_12;_16++){var _17=_3[_16],_18=this.getRecordExportObject(_17,_5,_7,_6,_8,_9,_13,_14,_15);_4.push(_18)}
+if(_1.endRow<_1.totalRows){_1.lastTimeStamp=_1.thisTimeStamp;_1.thisTimeStamp=isc.timeStamp();if(this.logIsInfoEnabled("export")){this.logInfo("processed "+_1.endRow+" rows - starting next chunk - "+((_1.thisTimeStamp-_1.lastTimeStamp)/1000),"export")}
+_1.startRow=_1.endRow;_1.endRow=Math.min(_1.startRow+_1.chunkSize,_1.totalRows);return this.delayCall("getClientExportDataChunk",[_1],0)}
+if(this.showGridSummary&&this.summaryRow&&this.exportIncludeSummaries){var _19=this.summaryRow,_3=this.getGridSummaryData(true);for(var _16=0;_16<_3.getLength();_16++){var _17=_3[_16],_18=this.getRecordExportObject(_17,_5,_7,_6,_8,_9,_15);_4.push(_18)}}
+if(_1.callback){var _3=_1.exportData;if(this.logIsInfoEnabled("export")){this.logInfo("finished processing "+_1.endRow+" rows - about to export - "+isc.timestamp(),"export")}
+this.fireCallback(_1.callback,"data,context",[_3,_1.settings])}}
+,isc.A.getClientExportFields=function isc_Canvas_getClientExportFields(_1){var _2=this.getAllFields();if(isc.isA.Object(_1)){if(_1&&_1.exportFields){var _3=[];for(var i=0;i<_2.length;i++){if(_1.exportFields.contains(_2[i].name))_3.add(_2[i])}
+_2=_3}}
+return _2}
+,isc.A.getRecordExportObject=function isc_Canvas_getRecordExportObject(_1,_2,_3,_4,_5,_6,_7,_8,_9){var _10={};for(var _11=0;_11<_2.length;_11++){var _12=_2[_11];if((!this.fields.contains(_12))&&!_4)continue;var _13=this.getFieldNum(_12.name),_14=this.htmlUnescapeExportFieldTitle(_12.exportTitle||_12.title||_12.name),_15=_14+"$style",_16;if(_12.exportRawValues||(this.exportRawValues&&_12.exportRawValues!=false))
+_16=_1[_12[this.fieldIdProperty]];else
+_16=this.getExportFieldValue(_1,_12.name,_13);if(_16==null||_16==" ")_16="";if(!_8){if(_7){if(_12.displayField){var _17=_12.name;if(_17==_14)_17+="_value";_10[_17]=_1[_12.name]}}}
+_10[_14]=_16;this.addDetailedExportFieldValue(_10,_15,_1,_12,_13,_3,_6,_9)}
+return _10}
+,isc.A.htmlUnescapeExportFieldTitle=function isc_Canvas_htmlUnescapeExportFieldTitle(_1){return this.htmlUnescapeExportFieldValue(_1)}
+,isc.A.htmlUnescapeExportFieldValue=function isc_Canvas_htmlUnescapeExportFieldValue(_1){if(isc.isA.String(_1))return _1.unescapeHTML().replace(/<.*?>/g,isc.emptyString);return _1}
+,isc.A.addHiliteSpan=function isc_Canvas_addHiliteSpan(_1,_2,_3){var _4=this.getRecordHiliteCSSText(_1,null,_2);if(_4)return"<span style=\""+_4+"\">"+_3+"</span>";else return _3}
+,isc.A.getRawValue=function isc_Canvas_getRawValue(_1,_2){return this.getCellValue(_1,this.getField(_2))}
+,isc.A.getFormattedValue=function isc_Canvas_getFormattedValue(_1,_2,_3){return _3}
+,isc.A.fieldIsVisible=function isc_Canvas_fieldIsVisible(_1){return true}
+,isc.A.getSpecifiedField=function isc_Canvas_getSpecifiedField(_1){return this.getField(_1)}
+,isc.A.getStandaloneFieldValue=function isc_Canvas_getStandaloneFieldValue(_1,_2,_3){var _4=this.getSpecifiedField(_2),_5;if(!_4)return;if(_4.userFormula)_5=this.getFormulaFieldValue(_4,_1);else if(_4.userSummary)_5=this.getSummaryFieldValue(_4,_1);else{if(this.$425&&this.$425(_4)){_5=_1[_4.displayField]}else{_5=this.getRawValue(_1,_2)}
+if(!_3)_5=this.getFormattedValue(_1,_2,_5)}
+var _6=this.addHiliteSpan(_1,_4,_5);return _6}
+,isc.A.getDateFormattingProperties=function isc_Canvas_getDateFormattingProperties(_1,_2,_3){if(!isc.SimpleType.inheritsFrom(_1.type,"date"))return;if(!isc.isA.Date(_2))return;var _4=isc.SimpleType.inheritsFrom(_1.type,"datetime");var _5;if(_1.dateFormatter&&isc.isA.Function(Date.prototype[_1.dateFormatter])){_5=_1.dateFormatter}else if(_1.displayFormat&&isc.isA.Function(Date.prototype[_1.displayFormat])){_5=_1.displayFormat}
+if(!_5){var _6=this.getDataSource().getField(_1.name),_7=_6?_6.dateFormatter||_6.displayFormat:null;if(_7&&isc.isA.Function(Date.prototype[_7])){_5=_7}}
+if(!_5){var _8;if(this.datetimeFormatter!=null&&_4){_8=this.datetimeFormatter}else{_8=this.dateFormatter}
+if(_8&&isc.isA.Function(Date.prototype[_8])){_5=_8}}
+if(!_5){var _9=!_4?Date.prototype.$el:Date.prototype.$68e;if(_9&&isc.isA.Function(Date.prototype[_9])){_5=_9}}
+var _10={rawValue:_2,dateFormatter:_5};return _10}
+,isc.A.exportClientData=function isc_Canvas_exportClientData(_1,_2){if(_2)_1.$90b=_2;this.getClientExportData(_1,this.getID()+".exportClientDataReply(data,context)");return}
+,isc.A.exportClientDataReply=function isc_Canvas_exportClientDataReply(_1,_2){if(_1==null||_1.length==0){isc.warn(this.emptyExportMessage);return}
+var _3=_2||{},_4=_3.exportAs?_3.exportAs:"csv",_5=_3.exportFilename?_3.exportFilename:"export",_6=_3.exportDisplay?_3.exportDisplay:"download";var _7={showPrompt:false,transport:_3.exportToClient===false?"xmlHttpRequest":"hiddenFrame",exportResults:true,downloadResult:!(_3.exportToClient===false),downloadToNewWindow:(_6=="window"),download_filename:(_6=="window"?_5:null)};var _8={exportAs:_3.exportAs,exportToClient:_3.exportToClient,exportToFilesystem:_3.exportToFilesystem,exportPath:_3.exportPath,exportFilename:_5,exportDelimiter:_3.exportDelimiter,exportHeader:_3.exportHeader,exportFooter:_3.exportFooter,exportTitleSeparatorChar:_3.exportTitleSeparatorChar,lineBreakStyle:_3.lineBreakStyle,exportDatesAsFormattedString:_3.exportDatesAsFormattedString};if(_3.exportFields){var _9=this.getAllFields(),_10=[],_11=[];for(var i=0;i<_3.exportFields.length;i++){var _13=_3.exportFields[i],_14=_9.find("name",_13),_15=_14?(_14.exportTitle?_14.exportTitle:_14.title):null;if(_15){var _16=this.htmlUnescapeExportFieldTitle(_15);_16=_16.replace("\n"," ");if(_15!=_16&&_1&&_1.length){for(var j=0;j<_1.length;j++){_1[j][_16]=_1[j][_15];delete _1[j][_15]}}
+_10.add(_16)}else{_11.add(_13)}}
+if(_11.length>0){this.logWarn("exportFields was specified but contains the following field-names "+"that are not available in this component: "+_11.join(",")+".")}
+if(_10.length>0)_8.exportFields=_10}
+isc.DMI.callBuiltin({methodName:"downloadClientExport",arguments:[_1,_4,_5,_6,_8],requestParams:_7,callback:_2.$90b});if(_2.$90b&&_7.downloadResult)this.fireCallback(_2.$90b)}
+,isc.A.getSort=function isc_Canvas_getSort(){return this.$73p?isc.shallowClone(this.$73p):null}
+,isc.A.setSort=function isc_Canvas_setSort(_1){this.$73p=isc.shallowClone(_1);if(this.data&&this.$73p&&this.$73p.length>0){if(this.data.setSort)this.data.setSort(this.$73p);else if(this.data.sortByProperty){var _2=this.$73p[0];this.data.sortByProperty(_2.property,Array.shouldSortAscending(_2.direction),_2.normalizer,_2.context)}}}
+,isc.A.askForSort=function isc_Canvas_askForSort(){if(isc.MultiSortDialog&&this.canMultiSort!=false){isc.MultiSortDialog.askForSort(this,this.getSort(),this.getID()+".multiSortReply(sortLevels)")}}
+,isc.A.multiSortReply=function isc_Canvas_multiSortReply(_1){if(_1!=null){this.setSort(_1)}}
+,isc.A.addValidationError=function isc_Canvas_addValidationError(_1,_2,_3){var _4=false;if(isc.isAn.Array(_3)){for(var i=0;i<_3.length;i++){_4=this.addValidationError(_1,_2,_3[i])||_4}
+return _4}
+var _6=_2.contains(this.$70l);if(_6){var _7=_1,_8=_2.trim(this.$70l).split();for(var i=0;i<_8.length;i++){if(!_7[_8[i]]){if(i<_8.length-1){if(parseInt(_8[i+1])==_8[i+1]){_7[_8[i]]=[]}else{_7[_8[i]]={}}}else{_7[_8[i]]=_3;_4=true}}
+_7=_7[_8[i]]}}else{if(!_1[_2]){_1[_2]=_3;_4=true}else{if(!isc.isAn.Array(_1[_2]))_1[_2]=[_1[_2]];if(!_1[_2].contains(_3)){_1[_2].add(_3);_4=true}}}
+return _4}
+,isc.A.isFieldDependentOnOtherField=function isc_Canvas_isFieldDependentOnOtherField(_1,_2){if(!_1.validators)return false;var _3=this.getDataSource();for(var i=0;i<_1.validators.length;i++){var _5=_1.validators[i];if(!_5)continue;if(!_5.$74r&&_5.applyWhen&&_3!=null){_5.$74r=_3.getCriteriaFields(_5.applyWhen)}
+if(_5.dependentFields&&_5.dependentFields.contains(_2)){return true}
+if(_5.$74r&&_5.$74r.length>0&&_5.$74r.contains(_2))
+{return true}}
+return false}
+,isc.A.getFieldDependencies=function isc_Canvas_getFieldDependencies(_1){if(!_1.validators)return null;var _2=this.getDataSource(),_3=[];for(var i=0;i<_1.validators.length;i++){var _5=_1.validators[i];if(!_5)continue;if(!_5.$74r&&_5.applyWhen&&_2!=null){_5.$74r=_2.getCriteriaFields(_5.applyWhen)}
+if(_5.dependentFields){if(!isc.isAn.Array(_5.dependentFields)){_5.dependentFields=[_5.dependentFields]}
+for(var i=0;i<_5.dependentFields.length;i++){_3.add(_5.dependentFields[i])}}
+if(_5.$74r&&_5.$74r.length>0)
+{_3.addList(_5.$74r)}}
+return(_3.length==0?null:_3)}
+,isc.A.validateFieldAndDependencies=function isc_Canvas_validateFieldAndDependencies(_1,_2,_3,_4,_5){var _6={},_7=false,_8={valid:true,errors:null,resultingValue:null};_4[_1.name]=_3;var _9=this.validateField(_1,_1.validators,_3,_4,_5);if(_9!=null){_8.valid=_9.valid;_8.stopOnError=_9.stopOnError;if(_9.errors!=null){this.addValidationError(_6,_1.name||_1.dataPath,_9.errors)}
+if(_9.resultingValue!=null){_8.resultingValue=_9.resultingValue;_4[_1.name]=_9.resultingValue}
+_7=true}
+var _10=_1.name||_1.dataPath,_11=this.getFields()||[];for(var i=0;i<_11.length;i++){var _13=_11[i];if(_13.name!=_10&&_13.dataPath!=_10&&this.isFieldDependentOnOtherField(_13,_10))
+{_9=this.validateField(_13,_13.validators,_4[_13.name],_4,_5);if(_9!=null){if(_9.errors!=null){this.addValidationError(_6,_13.name||_13.dataPath,_9.errors)}else{this.addValidationError(_6,_13.name||_13.dataPath,null)}
+if(_9.resultingValue!=null){_4[_13.name]=_9.resultingValue}}}}
+_8.errors=_6;return(_7?_8:null)}
+,isc.A.validateField=function isc_Canvas_validateField(_1,_2,_3,_4,_5){if(!_2)return null;var _6=[],_7=false,_8=null,_9={valid:true,errors:null,resultingValue:null},_10=false,_11=false;if(!isc.isAn.Array(_2)){_2=[_2]}
+for(var i=0;i<_2.length;i++){var _13=_2[i];if(!_13)continue;var _14=isc.Validator.getValidatorType(_13);if(_5&&_5.typeValidationsOnly&&!this.$685.contains(_14))
+{continue}
+if(_5&&_5.dontValidateNullValue&&_3==null&&_14!="required"&&_14!='requiredIf')
+{continue}
+if(!_5||!_5.changing||(_13.validateOnChange!=false&&(_13.validateOnChange||_1.validateOnChange||this.validateOnChange)))
+{if(isc.Validator.isServerValidator(_13)){_10=true;if(_13.stopOnError)_11=true;continue}
+if(_13.applyWhen){var _15=this.getDataSource(),_16=_13.applyWhen;if(_15==null){isc.logWarn("Conditional validator criteria ignored because form has no dataSource")}else{var _17=_15.applyFilter([_4],_16);if(_17.length==0){isc.Validator.performAction(null,_1,_13,_4,this);continue}}}
+_7=true;var _18=(isc.Validator.processValidator(_1,_13,_3,null,_4)==true);isc.Validator.performAction(_18,_1,_13,_4,this);if(!_18){var _19=isc.Validator.getErrorMessage(_13);if(_19==null){if(_5&&_5.unknownErrorMessage){_19=_5.unknownErrorMessage}else{_19=this.unknownErrorMessage}}
+_6.add(_19);if(_13.stopOnError)_8=true}
+if(_13.resultingValue!=null){_9.resultingValue=_13.resultingValue;_3=_13.resultingValue}
+if(!_18&&_13.stopIfFalse)break}}
+if(_10&&(!_5||_5.skipServerValidation!=true)){_11=this.$75e(_11,_1.stopOnError,this.stopOnError);var _20=((_5&&_5.serverValidationMode)?_5.serverValidationMode:this.$746),_21=isc.addProperties({},_4),_22=(_11||_1.synchronousValidation||this.synchronousValidation||false);_21[_1.name]=_3;this.fireServerValidation(_1,_21,_20,_22,_5.rowNum)}
+_9.stopOnError=(_6.length>0&&this.$75e(_8,_1.stopOnError,this.stopOnError));_9.errors=(_6.length==0?null:_6);_9.valid=(_6.length==0);return(_7?_9:null)}
+,isc.A.$75e=function isc_Canvas__resolveStopOnError(_1,_2,_3){if(_1!=null)return _1;return(_2==null&&_3)||_2||false}
+,isc.A.fireServerValidation=function isc_Canvas_fireServerValidation(_1,_2,_3,_4,_5){var _6=this.getDataSource();if(_6==null)return;var _7={showPrompt:_4,prompt:isc.RPCManager.validateDataPrompt,validationMode:_3,clientContext:{component:this,fieldName:_1.name,rowNum:_5}};if(_3==this.$746){for(var _8 in _2){if(_2[_8]===null)delete _2[_8]}}
+if(!_4){var _9=this.$75c(_1);_7.clientContext.pendingFields=_9}
+_6.validateData(_2,this.$742,_7)}
+,isc.A.$742=function isc_Canvas__handleServerValidationReply(_1,_2,_3){if(_1.status==isc.DSResponse.STATUS_FAILURE){isc.logWarn("Server-side validation failed: "+_1.data);isc.say(_1.data)}
+var _4=_1.clientContext,_5=_4.component,_6=_4.pendingFields,_7=_1.errors==null?null:isc.DynamicForm.getSimpleErrors(_1.errors);if(_1.errors){for(var _8 in _7){var _9=_7[_8],_10=_5.getField(_8);if(_9!=null&&_10!=null){if(!isc.isAn.Array(_9))_9=[_9];var _11=null;for(var i=0;i<_9.length;i++){_5.addFieldErrors(_8,_9[i].errorMessage,false,_4.rowNum);if(_9[i].stopOnError)_11=true}
+if(_10.redraw)_10.redraw();_11=_5.$75e(_11,_10.stopOnError,_5.stopOnError);if(_8==_4.fieldName&&_11==true&&!_10.hasFocus){if(!_10.synchronousValidation&&!_5.synchronousValidation){isc.logWarn("Server validation for "+_8+" signaled stopOnError but validation is not set for"+" synchronousValidation:true - stop ignored.")}else{_5.focusInItem(_10)}}}}}
+if(_6){_5.$75d(_6)}
+if(_5&&_5.handleAsyncValidationReply!=null){if(_7!=null){_7=isc.DynamicForm.formatValidationErrors(_7)}
+_5.handleAsyncValidationReply(_7==null,_7)}}
+,isc.A.handleAsyncValidationReply=function isc_Canvas_handleAsyncValidationReply(_1,_2){}
+);isc.evalBoundary;isc.B.push(isc.A.isPendingAsyncValidation=function isc_Canvas_isPendingAsyncValidation(){return!isc.isAn.emptyObject(this.$75a)}
+,isc.A.$75c=function isc_Canvas__registerAsyncValidation(_1){var _2=this.getFields()||[],_3=[_1.name],_4=_1.name;this.$75a[_4]=(this.$75a[_4]==null?1:this.$75a[_4]++);for(var i=0;i<_2.length;i++){var _6=_2[i];if(_6.name!=_4&&this.isFieldDependentOnOtherField(_6,_4)){var _7=_6.name;_3.add(_7);this.$75a[_7]=(this.$75a[_7]==null?1:this.$75a[_7]++)}}
+return _3}
+,isc.A.$75d=function isc_Canvas__clearAsyncValidation(_1){var _2=false;for(var i=0;i<_1.length;i++){this.$75a[_1[i]]--;if(this.$75a[_1[i]]==0){delete this.$75a[_1[i]];_2=true}}
+if(_2&&this.$75b!=null){var _4=true;for(var i=0;i<this.$75b;i++){if(this.$75a[this.$75b[i]]>0){_4=false;break}}
+if(_4){this.$75b=null;isc.clearPrompt()}}}
+,isc.A.blockOnFieldBusy=function isc_Canvas_blockOnFieldBusy(_1){if(this.$75b!=null)return true;var _2=false;for(var _3 in this.$75a){_2=true;break}
+if(!_2)return false;var _4=this.getFieldDependencies(_1)||[];_4.add(_1.name);var _5=[];for(var i=0;i<_4.length;i++){var _7=_4[i];if(this.$75a[_7]>0){_5.add(_7)}}
+if(_5.length>0){this.$75b=_5;this.delayCall("showValidationBlockingPrompt");return true}
+return false}
+,isc.A.showValidationBlockingPrompt=function isc_Canvas_showValidationBlockingPrompt(){if(this.$75b)isc.showPrompt(isc.RPCManager.validateDataPrompt)}
+,isc.A.enableField=function isc_Canvas_enableField(_1){if(_1==null||isc.isAn.emptyString(_1))return;var _2=this.getField(_1);if(_2){_2.disabled=false;this.redraw()}}
+,isc.A.disableField=function isc_Canvas_disableField(_1){if(_1==null||isc.isAn.emptyString(_1))return;var _2=this.getField(_1);if(_2){_2.disabled=true;this.redraw()}}
+,isc.A.showField=function isc_Canvas_showField(_1){if(_1==null||isc.isAn.emptyString(_1))return;var _2=this.getField(_1);if(_2)_2.show()}
+,isc.A.hideField=function isc_Canvas_hideField(_1){if(_1==null||isc.isAn.emptyString(_1))return;var _2=this.getField(_1);if(_2)_2.hide()}
+,isc.A.setFieldCanEdit=function isc_Canvas_setFieldCanEdit(_1,_2){if(_1==null||isc.isAn.emptyString(_1))return;var _3=this.getField(_1);if(_3){_3.canEdit=_2;this.redraw()}}
+,isc.A.isOffline=function isc_Canvas_isOffline(){if(this.data&&this.data.$78c)return true;return false}
+,isc.A.setSelectionComponent=function isc_Canvas_setSelectionComponent(_1,_2){if(!_1){if(this.selectionComponent!=null){this.ignore(this.selectionComponent,"selectionChanged");this.ignore(this.selectionComponent,"cellSelectionChanged")}
+delete this.selectionComponent;if(this.valuesManager){this.ignore(this.valuesManager,"$71e")}}else{var _3=_1;if(isc.isA.String(_1))_1=window[_1];if(!_1||!isc.isA.Canvas(_1)||_1.dataArity!="multiple"){this.logWarn("setSelectionComponent() - selection component specified as:"+_3+" this is not a valid component");return}
+if(!_1.getSelection){this.logWarn("setSelectionComponent() - specified selection component:"+_1+" does not support selection - ignoring");return}
+if(!_2&&this.selectionComponent){if(this.selectionComponent==_1)return
+if(this.isObserving(this.selectionComponent,"selectionChanged")){this.ignore(this.selectionComponent,"selectionChanged")}
+if(this.isObserving(this.selectionComponent,"cellSelectionChanged")){this.ignore(this.selectionComponent,"cellSelectionChanged")}}
+this.selectionComponent=_1;if(!this.selectionComponent.useCellRecords){this.observe(this.selectionComponent,"selectionChanged","observer.selectionComponentSelectionChanged(observed, record,state)")}else{this.observe(this.selectionComponent,"cellSelectionChanged","observer.selectionComponentCellSelectionChanged(observed, cellList)")}
+var _4=this.selectionComponent.getSelection}}
+,isc.A.selectionComponentSelectionChanged=function isc_Canvas_selectionComponentSelectionChanged(_1,_2,_3){if(!_3){if(this.dataArity=="single"){_2=null}else{return}}
+if(this.dataArity=="single"){this.setData(_2)}else{var _4=this.dataPath.split("/");this.setData(_2[_4[_4.length-1]]);if(this.dataArity=="multiple"&&isc.isA.Function(this.deselectAllRecords)){this.deselectAllRecords()}}}
+,isc.A.selectionComponentCellSelectionChanged=function isc_Canvas_selectionComponentCellSelectionChanged(_1,_2){for(var i=0;i<_2.length;i++){var _4=_2[i],_5=this.selectionComponent.getCellRecord(_4[0],_4[1]);if(_1.cellIsSelected(_5))break;_5=null}
+if(_5){this.$71d=_1.getPrimaryKeys(_5);this.editRecord(_5)}}
+);isc.B._maxIndex=isc.C+185;isc.ClassFactory.defineClass("MathFunction","Class");isc.A=isc.MathFunction;isc.A.$65z={};isc.A=isc.MathFunction;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.registerFunction=function isc_c_MathFunction_registerFunction(_1){if(!this.$65z[_1.name]){this.$65z[_1.name]=_1}}
+,isc.A.getRegisteredFunctionNames=function isc_c_MathFunction_getRegisteredFunctionNames(){return isc.getKeys(this.$65z)}
+,isc.A.getDefaultFunctionNames=function isc_c_MathFunction_getDefaultFunctionNames(){var _1=this.getDefaultFunctions(),_2=_1.makeIndex("name",false);return isc.getKeys(_2)}
+,isc.A.getRegisteredFunctions=function isc_c_MathFunction_getRegisteredFunctions(){return isc.getValues(this.$65z)}
+,isc.A.getDefaultFunctions=function isc_c_MathFunction_getDefaultFunctions(){var _1=this.getRegisteredFunctions(),_2=_1.findAll("defaultSortPosition",-1)||[];for(var i=0;i<_2.length;i++){var _4=_2[i];_1.remove(_4)}
+_1.sortByProperties(["defaultSortPosition"],["true"]);return _1}
+,isc.A.getRegisteredFunctionIndex=function isc_c_MathFunction_getRegisteredFunctionIndex(){var x=this.getRegisteredFunctions();var _2=x.makeIndex("name",false);return _2}
+,isc.A.getDefaultFunctionIndex=function isc_c_MathFunction_getDefaultFunctionIndex(){return this.getDefaultFunctions().makeIndex("name",false)}
+,isc.A.isRegistered=function isc_c_MathFunction_isRegistered(_1){if(this.$65z[_1])return true;return false}
+);isc.B._maxIndex=isc.C+8;isc.A=isc.MathFunction.getPrototype();isc.A.defaultSortPosition=-1;isc.MathFunction.registerFunction(isc.MathFunction.create({name:"max",description:"Maximum of two values",usage:"max(value1, value2)",defaultSortPosition:1,jsFunction:function(_1,_2){return Math.max(_1,_2)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"min",description:"Minimum of two values",usage:"min(value1, value2)",defaultSortPosition:2,jsFunction:function(_1,_2){return Math.min(_1,_2)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"round",description:"Round a value up or down, optionally providing <i>decimalDigits</i> "+"as the maximum number of decimal places to round to. For fixed or precision "+"rounding, use <i>toFixed()</i> and <i>toPrecision()</i> respectively.",usage:"round(value,decimalDigits)",defaultSortPosition:3,jsFunction:function(_1,_2){if(_2){var _3=Math.pow(10,_2),_4=Math.round(_1*_3)/_3;return _4}
+return Math.round(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"ceil",description:"Round a value up",usage:"ceil(value)",defaultSortPosition:4,jsFunction:function(_1){return Math.ceil(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"floor",description:"Round a value down",usage:"floor(value)",defaultSortPosition:5,jsFunction:function(_1){return Math.floor(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"abs",description:"Absolute value",usage:"abs(value)",defaultSortPosition:6,jsFunction:function(_1){return Math.abs(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"pow",description:"Value1 to the power of Value2",usage:"pow(value1, value2)",defaultSortPosition:7,jsFunction:function(_1,_2){return Math.pow(_1,_2)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"sin",description:"Sine of a value",usage:"sin(value)",defaultSortPosition:8,jsFunction:function(_1){return Math.sin(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"cos",description:"Cosine of a value",usage:"cos(value)",defaultSortPosition:9,jsFunction:function(_1){return Math.cos(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"tan",description:"Tangent of a value",usage:"tan(value)",defaultSortPosition:10,jsFunction:function(_1){return Math.tan(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"ln",description:"Natural logarithm of a value",usage:"ln(value)",defaultSortPosition:11,jsFunction:function(_1){return Math.log(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"log",description:"logarithm of a value with the specified <i>base</i>",usage:"log(base, value)",defaultSortPosition:12,jsFunction:function(_1,_2){return Math.log(_2)/Math.log(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"asin",description:"Arcsine of a value",usage:"asin(value)",defaultSortPosition:13,jsFunction:function(_1){return Math.asin(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"acos",description:"Arccosine of a value",usage:"acos(value)",defaultSortPosition:14,jsFunction:function(_1){return Math.acos(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"atan",description:"Arctangent of a value (-PI/2 to PI/2 radians)",usage:"atan(value)",defaultSortPosition:15,jsFunction:function(_1){return Math.atan(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"atan2",description:"Angle theta of a point (-PI to PI radians)",usage:"atan2(value1,value2)",defaultSortPosition:16,jsFunction:function(_1,_2){return Math.atan2(_1,_2)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"exp",description:"The value of E<sup>value</sup>",usage:"exp(value)",defaultSortPosition:17,jsFunction:function(_1){return Math.exp(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"random",description:"Random number between 0 and 1",usage:"random()",defaultSortPosition:18,jsFunction:function(){return Math.random()}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"sqrt",description:"Square root of a value",usage:"sqrt(value)",defaultSortPosition:19,jsFunction:function(_1){return Math.sqrt(_1)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"toPrecision",description:"Format a number to a length of <i>precision</i> digits, rounding or "+"adding a decimal point and zero-padding as necessary. Note that the values "+"123, 12.3 and 1.23 have an equal precision of 3. Returns a formatted "+"string and should be used as the outermost function call in a formula. "+"For rounding, use <i>round()</i>.",usage:"toPrecision(value,precision)",defaultSortPosition:20,jsFunction:function(_1,_2){var _3=_1;if(isc.isA.String(_3))_3=parseFloat(_3);if(isNaN(_3))return _1;return _3.toPrecision(_2)}}));isc.MathFunction.registerFunction(isc.MathFunction.create({name:"toFixed",description:"Round or zero-pad a number to <i>digits</i> decimal places. Returns "+"a formatted string and should be used as the outermost function call in a "+"formula. To round values or restrict precision, use <i>round()</i> and "+"<i>toPrecision()</i> respectively.",usage:"toFixed(value,digits)",defaultSortPosition:21,jsFunction:function(_1,_2){var _3=_1;if(isc.isA.String(_3))_3=parseFloat(_3);if(isNaN(_3))return _1;return _3.toFixed(_2)}}));isc.Canvas.registerStringMethods({userAddedField:"field",selectionUpdated:"record,recordList",onFetchData:"criteria,requestProperties"});isc.defineClass("EdgedCanvas","Canvas");isc.A=isc.EdgedCanvas.getPrototype();isc.A.redrawOnResize=false;isc.A._redrawWithParent=false;isc.A.$jp=false;isc.A.$jo=false;isc.A.useClipDiv=false;isc.A.overflow=isc.Browser.isMoz?isc.Canvas.VISIBLE:isc.Canvas.HIDDEN;isc.A.$ks=false;isc.A.$tb=0;isc.A.$td=0;isc.A.$tc=0;isc.A.$te=0;isc.A.$y0=["TL","T","TR","L","center","R","BL","B","BR"];isc.A.skinImgDir="images/edges/";isc.A.edgeImage="[SKIN]/rounded/frame/FFFFFF/6.png";isc.A.shownEdges={TL:true,T:true,TR:true,L:true,R:true,BL:true,B:true,BR:true};isc.A.edgeSize=6;isc.A=isc.EdgedCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$61h="<TD class='";isc.A.$61i="' ></TD>";isc.A.$y2="<TABLE CELLPADDING=0 CELLSPACING=0 "+"STYLE='height:100%;width:100%;table-layout:fixed'>"+"<COL WIDTH=";isc.A.$y3="><COL><COL WIDTH=";isc.A.$4n=" class=";isc.A.addEdgeStyleSuffix=false;isc.A.forceMozRowHeight=true;isc.B.push(isc.A.initWidget=function isc_EdgedCanvas_initWidget(){this.invokeSuper(isc.EdgedCanvas,this.$oc);var _1=this.customEdges;if(_1){var _2=this.shownEdges={};if(_1.contains("T")){_2.T=_2.TL=_2.TR=true}
+if(_1.contains("B")){_2.B=_2.BL=_2.BR=true}
+if(_1.contains("L")){_2.L=_2.TL=_2.BL=true}
+if(_1.contains("R")){_2.R=_2.TR=_2.BR=true}}
+this.updateEdgeSizes()}
+,isc.A.updateEdgeSizes=function isc_EdgedCanvas_updateEdgeSizes(){var _1=this.edgeSize;this.$y4=this.$du(this.edgeLeft,_1);this.$y5=this.$du(this.edgeRight,_1);this.$y6=this.$du(this.edgeTop,_1);this.$y7=this.$du(this.edgeBottom,_1);var _2=this.shownEdges,_3=this.edgeOffset;if(_2.L)this.$tb=this.$du(this.edgeOffsetLeft,_3,this.$y4);if(_2.R)this.$tc=this.$du(this.edgeOffsetRight,_3,this.$y5);if(_2.T)this.$td=this.$du(this.edgeOffsetTop,_3,this.$y6);if(_2.B)this.$te=this.$du(this.edgeOffsetBottom,_3,this.$y7);this.markForRedraw()}
+,isc.A.getInnerWidth=function isc_EdgedCanvas_getInnerWidth(_1,_2,_3){var _4=this.invokeSuper(isc.EdgedCanvas,"getInnerWidth",_1,_2,_3);return _4-this.$tb-this.$tc}
+,isc.A.getInnerHeight=function isc_EdgedCanvas_getInnerHeight(_1,_2,_3){var _4=this.invokeSuper(isc.EdgedCanvas,"getInnerHeight",_1,_2,_3);return _4-this.$td-this.$te}
+,isc.A.getInnerHTML=function isc_EdgedCanvas_getInnerHTML(){var _1=isc.SB.create(),_2=this.edgeImage,_3=_2.lastIndexOf(isc.dot),_4=_2.substring(0,_3),_5=_2.substring(_3),_6=this.getImgURL(_4),_7="<TD HEIGHT=",_8="<TD",_9,_10;if(!((isc.Browser.isStrict&&isc.Browser.isIE&&isc.Browser.version>=8)||(isc.Browser.isMoz&&isc.Browser.isUnix)))
+{var _11=isc.EdgedCanvas.$y8;if(!_11){_11=isc.EdgedCanvas.$y8={width:"100%",height:"100%"};if(isc.Browser.isSafari)_11.align="middle";if(isc.Browser.isStrict&&!isc.Browser.isTransitional)
+_11.extraStuff="style='display:block;'"}
+_11.src=_2;var _12=this.imgHTML(_11);if(isc.Browser.isSafari){_12="<DIV style='overflow:hidden;width:100%;height:100%'>"+_12+"</DIV>"}
+var _13=_12.lastIndexOf(isc.dot);_9=this.$oa+_12.substring(0,_13);_10=_12.substring(_13)+"</TD>"}else{_9=" STYLE='background:url("+_6;_10=_5+")'></TD>"}
+if(this.edgeColor)_9+=isc.$ag+this.edgeColor;var _14=this.shownEdges;_1.append(this.$y2,this.$y4,this.$y3,this.$y5,this.$oa,"<TR HEIGHT=",this.$y6,this.$oa);this.$y9(_7,this.$y6,_9,_10,0,2,_14,_1);var _15=this.getHeight()-this.$y6-this.$y7;if(isc.Browser.isIE&&isc.Browser.isStrict){_1.append("</TR><TR HEIGHT=",_15,">")}else{_1.append("</TR><TR>")}
+if(isc.Browser.isMoz){this.$y9(_7,"100%",_9,_10,3,5,_14,_1)}else if(isc.Browser.isWebKit){this.$y9(_7,_15,_9,_10,3,5,_14,_1)}else{this.$y9(_8,null,_9,_10,3,5,_14,_1)}
+_1.append("</TR><TR HEIGHT=",this.$y7,">");this.$y9(_7,this.$y7,_9,_10,6,8,_14,_1);_1.append("</TR></TABLE>");return _1.toString()}
+,isc.A.$y9=function isc_EdgedCanvas__writeEdgeCells(_1,_2,_3,_4,_5,_6,_7,_8){for(var i=_5;i<=_6;i++){var _10=this.$y0[i];var _11=this.getEdgeStyleName(_10),_12=_11?this.$4n:null;if(_7[_10]||(this.showCenter&&_10==isc.Canvas.CENTER)){_8.append(_1,_2,_12,_11,_3,this.getEdgePrefix(_10),isc.$ag,_10,_4)}else{if(this.centerBackgroundColor&&_10==isc.Canvas.CENTER){_8.append("<TD ",_12,_11," style='background-color:",this.centerBackgroundColor,"'></TD>")}else{_8.append(this.$61h,_12,_11,this.$61i)}}}}
+,isc.A.getEdgeStyleName=function isc_EdgedCanvas_getEdgeStyleName(_1){if(this.edgeStyleName==null)return;if(!this.addEdgeStyleSuffix)return this.edgeStyleName;if(!this.$61j||this.$61j.base!=this.edgeStyleName){var _2=this.edgeStyleName;this.$61j={base:_2,TL:_2+"$61o",T:_2+"$61p",TR:_2+"$61q",L:_2+"$61r",C:_2+"$61s",R:_2+"$61t",BL:_2+"$61u",B:_2+"$61v",BR:_2+"$61w"}}
+return this.$61j[_1]}
+,isc.A.getEdgePrefix=function isc_EdgedCanvas_getEdgePrefix(_1){}
+,isc.A.$ub=function isc_EdgedCanvas__handleResized(){if(!this.isDrawn()||this.$za)return;if(isc.Browser.isOpera){this.masterElement.bringToFront();return}
+if(isc.Browser.isIE&&isc.Browser.isStrict){var _1=this.getHandle().firstChild.rows[1];this.$u9(_1.style,this.$o5,this.getHeight()-this.$y6-this.$y7);return}
+if(isc.Browser.isWebKit){var _1=this.getHandle().firstChild.rows[1];var _2=Math.max(0,this.getHeight()-this.$y6-this.$y7);for(var i=0;i<_1.cells.length;i++){this.$u9(_1.cells[i].style,this.$o5,_2)}
+return}
+if(!isc.Browser.isMoz)return;var _4=this.getHandle().firstChild.rows[1].cells[1],_5=this.getHeight()-this.$y6-this.$y7;if(_5<0)_5=0;this.$u9(_4.style,this.$o5,_5);if(this.forceMozRowHeight){var _6=_4.parentNode.cells;this.$u9(_6[0].style,this.$o5,_5);this.$u9(_6[2].style,this.$o5,_5)}}
+,isc.A.layoutChildren=function isc_EdgedCanvas_layoutChildren(_1,_2,_3){var _4=this.children;if(!_4)return;isc.Canvas.$b4.layoutChildren.call(this,_1,_2,_3);if(_4.length==0)return;var _5=_4[0];_5.setRect(this.$tb,this.$td,this.getInnerWidth(),this.getInnerHeight())}
+,isc.A.addChild=function isc_EdgedCanvas_addChild(_1,_2,_3){isc.Canvas.$b4.addChild.call(this,_1,_2,_3);this.layoutChildren("addChild")}
+,isc.A.draw=function isc_EdgedCanvas_draw(_1,_2,_3,_4){if(!this.readyToDraw())return this;if(this.masterElement){var _5=this.masterElement,_6=false;while(_5){if(_5.position==this.$411){_6=true;break}
+_5=_5.parentElement}
+if(!_6||isc.Page.isLoaded())this.fitToMaster();else isc.Page.setEvent("load",this,isc.Page.FIRE_ONCE,"fitToMaster")}
+this.invokeSuper(isc.EdgedCanvas,"draw",_1,_2,_3,_4);this.$ub();return this}
+,isc.A.fitToMaster=function isc_EdgedCanvas_fitToMaster(){if(this.destroyed)return;var _1=this.masterElement;if(_1.$uu){isc.Timer.setTimeout({target:this,methodName:"fitToMaster"},200);return}else if(_1.$rm){_1.adjustOverflow()}
+var _2=_1.$ta();this.setRect(_1.getOffsetLeft()+_2.left,_1.getOffsetTop()+_2.top,Math.max(1,(_1.getVisibleWidth()-_2.left-_2.right)),Math.max(1,(_1.getVisibleHeight()-_2.top-_2.bottom)))}
+,isc.A.redraw=function isc_EdgedCanvas_redraw(){this.Super("redraw",arguments);this.$ub();return this}
+,isc.A.masterResized=function isc_EdgedCanvas_masterResized(){var _1=this.masterElement;if(this.masterElement.isAnimating([this.$do,this.$zb]))return;var _2=isc.Browser.isSafari;if(_2){this.delayCall("$663",[_1])}else{this.$663(_1)}}
+,isc.A.$663=function isc_EdgedCanvas__sizeToMaster(_1){if(this.destroyed||_1!=this.masterElement)return;var _2=_1.$ta();this.resizeTo(Math.max(1,_1.getVisibleWidth()-_2.left-_2.right),Math.max(1,_1.getVisibleHeight()-_2.top-_2.bottom))}
+,isc.A.setEdgeImage=function isc_EdgedCanvas_setEdgeImage(_1){if(this.edgeImage==_1)return;this.edgeImage=_1;this.markForRedraw("setEdgeImage")}
+);isc.B._maxIndex=isc.C+17;isc.defineClass("DropShadow","EdgedCanvas");isc.A=isc.DropShadow.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.skinImgDir="images/shared/shadows/";isc.A.edgeImage="[SKIN]ds.png";isc.A.isMouseTransparent=true;isc.A.shownEdges={center:true,TL:true,T:true,TR:true,L:true,R:true,BL:true,B:true,BR:true};isc.A.depth=4;isc.A.showShadow=false;isc.B.push(isc.A.initWidget=function isc_DropShadow_initWidget(){this.setDepth(this.depth);this.Super(this.$oc)}
+,isc.A.setDepth=function isc_DropShadow_setDepth(_1){if(_1!=null)this.depth=_1;var _2=(this.softness||this.depth),_3=this.$zc!=_2;this.$zc=_2;this.edgeSize=2*this.$zc;var _4=this.$du(this.offset,Math.round(this.depth/ 2));this.$zd=this.$du(this.offsetX,_4);this.$ze=this.$du(this.offsetY,_4);this.updateEdgeSizes();if(this.isDrawn()){this.masterMoved();if(_3||this.isDirty())this.redraw();this.masterResized()}}
+,isc.A.getEdgePrefix=function isc_DropShadow_getEdgePrefix(_1){if(_1!=isc.Canvas.CENTER)return this.$zc}
+,isc.A.masterMoved=function isc_DropShadow_masterMoved(){var _1=this.visibility==isc.Canvas.HIDDEN,_2=this.masterElement,_3=_2.getOffsetLeft(),_4=_2.getOffsetTop();if(!_1){_3+=this.$zd-this.$zc;_4+=this.$ze-this.$zc}
+this.moveTo(_3,_4)}
+,isc.A.masterResized=function isc_DropShadow_masterResized(){if(this.visibility==isc.Canvas.HIDDEN)return;var _1=this.masterElement;this.resizeTo(_1.getVisibleWidth()+2*this.$zc,_1.getVisibleHeight()+2*this.$zc)}
+,isc.A.fitToMaster=function isc_DropShadow_fitToMaster(){this.masterMoved();this.masterResized()}
+,isc.A.setVisibility=function isc_DropShadow_setVisibility(_1,_2,_3,_4,_5){var _6=(_1!=this.visibility);this.invokeSuper(isc.DropShadow,"setVisibility",_1,_2,_3,_4,_5);if(_6){if(_1==isc.Canvas.HIDDEN){this.resizeTo(1,1);var _7=this.masterElement;this.moveTo(_7.getOffsetLeft(),_7.getOffsetTop())}else{this.fitToMaster()}}}
+,isc.A.getCurrentCursor=function isc_DropShadow_getCurrentCursor(_1,_2,_3,_4){var _5=this.masterElement;if(_5&&_5.dragResizeFromShadow)this.canDragResize=_5.canDragResize;return this.invokeSuper(isc.DropShadow,"getCurrentCursor",_1,_2,_3,_4)}
+,isc.A.prepareForDragging=function isc_DropShadow_prepareForDragging(_1,_2,_3,_4){var _5=this.masterElement;if(_5&&_5.dragResizeFromShadow)this.canDragResize=_5.canDragResize;return this.invokeSuper(isc.DropShadow,"prepareForDragging",_1,_2,_3,_4)}
+);isc.B._maxIndex=isc.C+9;isc.ClassFactory.defineClass("Hover");isc.A=isc.Hover;isc.A.delay=500;isc.A.leftOffset=15;isc.A.topOffset=15;isc.A.hoverCanvasDefaults={defaultWidth:100,defaultHeight:1,baseStyle:"canvasHover",align:isc.Canvas.LEFT,valign:isc.Canvas.TOP,wrap:true,autoDraw:false};isc.A=isc.Hover;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.show=function isc_c_Hover_show(_1,_2,_3,_4){if(isc.isA.Canvas(_1)){this.showingHoverComponent=true;this.hoverCanvas=_1;this.hoverCanvas.hide=function(){this.Super("hide",arguments);isc.Hover.hoverCanvasHidden()};_4.hoverCanvas=_1}
+if(!this.hoverCanvas)this.$zf();var _5=this.hoverCanvas;if(_1==null||_1==""){_5.hide();return}
+this.lastHoverCanvas=_4;if(!this.showingHoverComponent)_5.setContents(_1);if(_2==null)_2={};var _6=this.hoverCanvasDefaults;if(_5.setAlign)_5.setAlign(_2.align||_6.align);if(_5.setVAlign)_5.setVAlign(_2.valign||_6.valign);if(_5.setBaseStyle)_5.setBaseStyle(_2.baseStyle||_6.baseStyle);if(_5.setOpacity)_5.setOpacity(_2.opacity||_6.opacity);if(_5.setWrap)_5.setWrap(_2.wrap!=null?_2.wrap:_6.wrap);if(_2.moveWithMouse!=null)this.$zg=_2.moveWithMouse
+else this.$zg=this.moveWithMouse;var _7=isc.EH.getX(),_8=isc.EH.getY(),_9=_2.left,_10=_2.top,_11=_2.width||(this.showingHoverComponent?_5.width:_6.defaultWidth),_12=_2.height||(this.showingHoverComponent?_5.height:_6.defaultHeight);if(_9!=null||_10!=null){_9=_9?_9:_7+this.leftOffset;_10=_10?_10:_8+this.topOffset}else{_5.setRect(null,-9999,_11,_12);if(!_5.isDrawn())_5.draw();if(!_5.isVisible())_5.show();else _5.redrawIfDirty("placing hover");var _13=_3?_3:[_7-this.leftOffset,_8-this.topOffset,2*this.leftOffset,2*this.topOffset];var _14=_5.getPeerRect();var _15=isc.Canvas.$t7(_14[2],_14[3],_13,"bottom",false,"outside-right");_9=_15[0];_10=_15[1]}
+_5.setRect(_9,_10,_11,_12);_5.bringToFront();if(!_5.isDrawn()||!_5.isVisible())_5.show();if(this.$zg){this.$zh=isc.Page.setEvent("mouseMove",function(){isc.Hover.$zi()})}
+return}
+,isc.A.hoverCanvasHidden=function isc_c_Hover_hoverCanvasHidden(){var _1=this.lastHoverCanvas;delete this.lastHoverCanvas;if(_1!=null){_1.$80l()}}
+,isc.A.hide=function isc_c_Hover_hide(){var _1=isc.Hover.hoverCanvas;if(_1!=null){if(this.$zh){isc.Page.clearEvent("mouseMove",this.$zh);delete this.$zh}
+_1.hide();if(this.showingHoverComponent){if(!_1)return;delete this.hoverCanvas;this.showingHoverComponent=false}else{var _2=this.hoverCanvasDefaults;_1.setRect(0,-1000)}}}
+,isc.A.$zf=function isc_c_Hover__makeHoverCanvas(){var _1=isc.addProperties({hide:function(){this.Super("hide",arguments);isc.Hover.hoverCanvasHidden()}},this.hoverCanvasDefaults);this.hoverCanvas=isc.Label.create(_1)}
+,isc.A.$zi=function isc_c_Hover__moveWithMouse(){var _1=this.hoverCanvas.getPeerRect();var _2=isc.Canvas.$t7(_1[2],_1[3],this.getMousePointerRect(),"bottom",false,"outside-right");this.hoverCanvas.moveTo(_2[0],_2[1])}
+,isc.A.getMousePointerRect=function isc_c_Hover_getMousePointerRect(){return[isc.EH.getX()-this.leftOffset,isc.EH.getY()-this.topOffset,2*this.leftOffset,2*this.topOffset]}
+,isc.A.setAction=function isc_c_Hover_setAction(_1,_2,_3,_4){if(_4==null)_4=this.delay;if(this.isActive||_4==0){_2.apply((_1?_1:this),_3?_3:[]);this.isActive=true}
+else{if(this.timer!=null)this.timer=isc.Timer.clear(this.timer);this.actionTarget=(_1?_1:this);this.action=_2;this.actionArgs=_3?_3:[];this.timer=isc.Timer.setTimeout({target:isc.Hover,methodName:"$zj"},_4)}}
+,isc.A.$zj=function isc_c_Hover__doAction(){if(this.action&&!this.actionTarget.destroyed){this.action.apply(this.actionTarget,this.actionArgs)}
+this.actionTarget=this.action=this.actionArgs=null;this.isActive=true}
+,isc.A.clear=function isc_c_Hover_clear(){this.hide();if(this.timer!=null)this.timer=isc.Timer.clear(this.timer);this.actionTarget=this.action=this.actionArgs=null;this.isActive=false}
+);isc.B._maxIndex=isc.C+9;if(!isc.Comm)isc.ClassFactory.defineClass("Comm");isc.A=isc.Comm;isc.A.$zk=/^[\$_a-zA-Z][\$\w]*$/;isc.A.BACKREF_PREFIX="$$BACKREF$$:";isc.A.indent=" ";isc.A=isc.Comm;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.serialize=function isc_c_Comm_serialize(_1,_2){var _3={strictQuoting:false,dateFormat:"dateConstructor"};if(_2!=null)_3.prettyPrint=_2;return isc.JSON.encode(_1,_3)}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("JSON",null,null,true);isc.A=isc.JSON;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.encode=function isc_c_JSON_encode(_1,_2){return isc.JSONEncoder.create(_2).encode(_1)}
+,isc.A.decode=function isc_c_JSON_decode(_1){return eval("("+_1+")")}
+);isc.B._maxIndex=isc.C+2;isc.ClassFactory.defineClass("JSONEncoder");isc.A=isc.JSONEncoder;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$zm=function isc_c_JSONEncoder__serialize_remember(_1,_2,_3){_1.obj.add(_2);_1.path.add(_3)}
+,isc.A.$42b=function isc_c_JSONEncoder__serialize_cleanNode(_1){var _2=_1["$42c"];if(_2!=null){var _3=window[_2];if(_3&&_3.parentProperty&&_1[_3.parentProperty]){_1=_3.getCleanNodeData(_1)}}
+return _1}
+,isc.A.$zl=function isc_c_JSONEncoder__serialize_alreadyReferenced(_1,_2){var _3=_1.obj.indexOf(_2);if(_3==-1)return null;return _1.path[_3]}
+,isc.A.$zp=function isc_c_JSONEncoder__serialize_addToPath(_1,_2){if(isc.isA.Number(_2)){return _1+"["+_2+"]"}else if(!isc.Comm.$zk.test(_2)){return _1+'["'+_2+'"]'}else{return _1+"."+_2}}
+);isc.B._maxIndex=isc.C+4;isc.A=isc.JSONEncoder.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.serializeInstances=true;isc.A.dateFormat="xmlSchema";isc.A.strictQuoting=true;isc.A.circularReferenceMode="path";isc.A.circularReferenceMarker="$$BACKREF$$";isc.A.prettyPrint=true;isc.B.push(isc.A.encode=function isc_JSONEncoder_encode(_1){this.objRefs={obj:[],path:[]};var _2=this.$eu(_1,this.prettyPrint?"":null,null);this.objRefs=null;return _2}
+,isc.A.encodeDate=function isc_JSONEncoder_encodeDate(_1){if(this.dateFormat=="dateConstructor"){return _1.$eu()}else{return'"'+_1.toSchemaDate()+'"'}}
+,isc.A.$eu=function isc_JSONEncoder__serialize(_1,_2,_3){if(!_3){if(_1&&_1.getID)_3=_1.getID();else _3=""}
+if(_1==null)return null;if(isc.isA.String(_1))return(_1.asSource!=null?_1.asSource():String.asSource(_1));if(isc.isA.Function(_1))return null;if(isc.isA.Number(_1)||isc.isA.SpecialNumber(_1))return _1;if(isc.isA.Boolean(_1))return _1;if(isc.isA.Date(_1))return this.encodeDate(_1);if(isc.isAn.Instance(_1)){if(this.serializeInstances=="skip")return null;else if(this.serializeInstances=="short")return isc.echoLeaf(_1)}
+if(isc.isA.Class(_1)){if(this.serializeInstances=="skip")return null;else if(this.serializeInstances=="short")return isc.echoLeaf(_1)}
+var _4=isc.JSONEncoder.$zl(this.objRefs,_1);if(_4!=null&&_3.contains(_4)){var _5=_3.substring(_4.length,_4.length+1);if(_5=="."||_5=="["||_5=="]"){var _6=this.circularReferenceMode;if(_6=="marker"){return"'"+this.circularReferenceMarker+"'"}else if(_6=="path"){return"'"+this.circularReferenceMarker+":"+_4+"'"}else{return null}}}
+if(_1==window){this.logWarn("Serializer encountered the window object at path: "+_3+" - returning null for this slot.");return null}
+isc.JSONEncoder.$zm(this.objRefs,_1,_3);if(isc.isA.Function(_1.$eu))return _1.$eu(_2,this.objRefs,_3);if(isc.isAn.Array(_1))return this.$zn(_1,_3,this.objRefs,_2);var _7;if(_1.getSerializeableFields){_7=_1.getSerializeableFields([],[])}else{_7=_1}
+return this.$zo(_7,_3,this.objRefs,_2)}
+,isc.A.$zn=function isc_JSONEncoder__serializeArray(_1,_2,_3,_4){var _5=isc.SB.create();_5.append("[");for(var i=0,_7=_1.length;i<_7;i++){var _8=_1[i];if(_4!=null)_5.append("\r",_4,isc.Comm.indent);var _2=isc.JSONEncoder.$zp(_2,i);var _9=this.$eu(_8,(_4!=null?_4+isc.Comm.indent:null),_2);_5.append(_9+",");if(_4!=null)_5.append(" ")}
+_5=_5.toString();var _10=_5.lastIndexOf(",");if(_10>-1)_5=_5.substring(0,_10);if(_4!=null)_5+="\r"+_4;_5+="]";return _5}
+,isc.A.$zo=function isc_JSONEncoder__serializeObject(_1,_2,_3,_4){var _5=isc.SB.create(),_6;_1=isc.JSONEncoder.$42b(_1);try{for(var _7 in _1)break}catch(e){if(this.showDebugOutput){if(isc.isAn.XMLNode(_1))return isc.echoLeaf(_1);var _8;if(e.message){_8=(e.message.asSource!=null?e.message.asSource():String.asSource(e.message));return"{ cantEchoObject: "+_8+"}"}else{return"{ cantEchoObject: 'unspecified error' }"}}else return null}
+_5.append("{");for(var _7 in _1){if(_7==null)continue;if(this.skipInternalProperties&&(isc.startsWith(_7,isc.$ag)||isc.startsWith(_7,isc.$75g)))continue;var _9=_1[_7];if(isc.isA.Function(_9))continue;if(_7!=isc.gwtRef&&isc.isAn.Instance(_9)&&this.serializeInstances=="skip")continue;var _10=_7.toString();if(!isc.Comm.$zk.test(_10)||this.strictQuoting){if(_10.contains('"')){if(_10.contains("'")){_10='"'+this.convertToEncodedQuotes(_10)+'"'}else{_10="'"+_10+"'"}}else{_10='"'+_10+'"'}}
+var _2=isc.JSONEncoder.$zp(_2,_7);var _11;if(_7==isc.gwtRef){if(!this.showDebugOutput)continue;_11="{GWT Java Obj}"}else{_11=this.$eu(_9,(_4!=null?_4+isc.Comm.indent:null),_2)}
+if(_4!=null)_5.append("\r",_4,isc.Comm.indent);_5.append(_10,":"+_11,",");if(_4!=null)_5.append(" ")}
+_5=_5.toString();var _12=_5.lastIndexOf(",");if(_12>-1)_5=_5.substring(0,_12);if(_4!=null)_5+="\r"+_4;_5+="}";return _5}
+,isc.A.convertToEncodedQuotes=function isc_JSONEncoder_convertToEncodedQuotes(_1){return _1.replace(String.$e0,""").replace(String.$ez,"'")}
+,isc.A.convertFromEncodedQuotes=function isc_JSONEncoder_convertFromEncodedQuotes(_1){return _1.replace(new RegExp(""","g"),'"').replace(new RegExp("'","g"),"'")}
+);isc.B._maxIndex=isc.C+7;isc.addGlobal("clone",function(_1,_2){return isc.Comm.$360(_1)});isc.addGlobal("shallowClone",function(_1){return isc.Comm.$675(_1)});isc.A=isc.Comm;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.clone=isc.clone;isc.A.shallowClone=isc.shallowClone;isc.B.push(isc.A.$360=function isc_c_Comm__clone(_1){var _2;if(_1===_2)return _2;if(_1==null)return null;if(isc.isA.String(_1)||isc.isA.Boolean(_1)||isc.isA.Number(_1)||isc.isA.Function(_1))return _1;if(isc.isA.Date(_1))return _1.duplicate();if(isc.isAn.Array(_1))return isc.Comm.$361(_1);if(isc.isA.Function(_1.clone)){if(isc.isA.Class(_1))return isc.echoLeaf(_1);return _1.clone()}
+return isc.Comm.$362(_1)}
+,isc.A.$361=function isc_c_Comm__cloneArray(_1){var _2=[];for(var i=0,_4=_1.length;i<_4;i++){_2[i]=isc.Comm.$360(_1[i])}
+return _2}
+,isc.A.$362=function isc_c_Comm__cloneObject(_1){var _2={};for(var _3 in _1){var _4=_1[_3];if(_3==isc.gwtRef)continue;_2[_3]=isc.Comm.$360(_4)}
+return _2}
+,isc.A.$675=function isc_c_Comm__shallowClone(_1){var _2;if(_1===_2)return _2;if(_1==null)return null;if(isc.isA.String(_1)||isc.isA.Boolean(_1)||isc.isA.Number(_1)||isc.isA.Function(_1))return _1;if(isc.isA.Date(_1))return _1.duplicate();if(isc.isAn.Array(_1))return isc.Comm.$676(_1);return isc.addProperties({},_1)}
+,isc.A.$676=function isc_c_Comm__shallowCloneArray(_1){var _2=[];for(var i=0,_4=_1.length;i<_4;i++){if(isc.isAn.Array(_1[i]))_2[i]=_1[i];else _2[i]=isc.Comm.$675(_1[i])}
+return _2}
+);isc.B._maxIndex=isc.C+5;isc.defineClass("AutoTest");isc.A=isc.AutoTest;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.fallback_valueOnlyField="$75w";isc.A.fallback_startMarker="[";isc.A.fallback_endMarker="]";isc.A.fallback_separator="||";isc.A.fallback_equalMarker="=";isc.A.slashMarker="$fs$";isc.A.robustLocatorWarning="If you are seeing unexpected results in recorded tests, it is likely"+" that the application has been modified since the test was recorded. We would recommend re-recording"+" your test script with the latest version of your application. Note that you may be able to"+" avoid seeing this message in future by using the AutoChild subsystem or providing explicit"+" global IDs to components whose function within the page is unlikely to change.";isc.B.push(isc.A.getLocator=function isc_c_AutoTest_getLocator(_1,_2){var _3;if(_1==null){_3=true;_1=isc.EH.lastEvent?isc.EH.lastEvent.nativeTarget:null}
+var _4;if(isc.isA.Canvas(_1))_4=_1;else{_4=isc.AutoTest.locateCanvasFromDOMElement(_1)}
+var _5=_4?_4.getLocator(_1,_3):"";if(_2&&_5&&_5!=""&&_4.checkLocatorForNativeElement(_5,_1))
+{_5=""}
+return _5}
+,isc.A.locateCanvasFromDOMElement=function isc_c_AutoTest_locateCanvasFromDOMElement(_1){return isc.EH.getEventTargetCanvas(null,_1)}
+,isc.A.getElement=function isc_c_AutoTest_getElement(_1){if(!_1)return null;if(_1.startsWith("'")||_1.startsWith('"'))_1=_1.substring(1);if(_1.endsWith("'")||_1.endsWith('"'))_1=_1.substring(0,_1.length-1);if(!_1.startsWith("//")){if(_1.startsWith("ID=")||_1.startsWith("id=")){_1=_1.substring(3)}
+_1='//*any*[ID="'+_1+'"]'}
+var _2=_1.split("/"),_3;var _4=_2[2];if(!_4)return null;_2=_2.slice(3);var _5=this.getBaseComponentFromLocatorSubstring(_4);var _6=_5?_5.getElementFromSplitLocator(_2):null;return _6}
+,isc.A.getPageCoords=function isc_c_AutoTest_getPageCoords(_1){var _2=this.getElement(_1);if(_2==null)return;var _3=this.locateCanvasFromDOMElement(_2);return _3?_3.getAutoTestLocatorCoords(_1,_2):null}
+,isc.A.getBaseComponentFromLocatorSubstring=function isc_c_AutoTest_getBaseComponentFromLocatorSubstring(_1){var _2=_1.match("(.*)\\[");var _3=_2?_2[1]:null;if(_3=="autoID"){var _4=isc.AutoTest.parseLocatorFallbackPath(_1),_5=_4.config,_6="name",_7="Class";return isc.Canvas.getCanvasFromFallbackLocator(_1,_5,isc.Canvas.$tw,_6,_7)}else{var _8=_3,_2=_1.match('ID=[\\"\'](.*)[\'\\"]'),_9=_2?_2[1]:null;if(_9==null)return null;var _10=window[_9];if(!_10)return null;if(_10&&_8!="*any*"&&(!isc.isA[_8]||!isc.isA[_8](_10)))
+{this.logWarn("AutoTest.getElement(): Component:"+_10+" expected to be of class:"+_8)}
+return _10}}
+,isc.A.getLocatorCanvas=function isc_c_AutoTest_getLocatorCanvas(_1){if(_1==null||isc.isAn.emptyString(_1))return null;var _2=_1.split("/"),_3;if(_2==null||_2.length<3)return null;var _4=_2[2];var _5=_2.length;for(var i=3;i<_5;i++){_2[i-3]=_2[i]}
+_2.length=_5-3;if(!_4)return null;var _7=this.getBaseComponentFromLocatorSubstring(_4);if(_7){var i=0,_8=_7.getChildFromLocatorSubstring(_2[i],i,_2);while(_8!=null){i++;_7=_8;_8=_7.getChildFromLocatorSubstring(_2[i],i,_2)}
+return _7}
+return null}
+,isc.A.getLocatorFormItem=function isc_c_AutoTest_getLocatorFormItem(_1){if(_1==null||isc.isAn.emptyString(_1))return null;var _2=_1.split("/"),_3;if(_2==null||_2.length<3)return null;var _4=_2[2];var _5=_2.length;for(var i=3;i<_5;i++){_2[i-3]=_2[i]}
+_2.length=_5-3;if(!_4)return null;var _7=this.getBaseComponentFromLocatorSubstring(_4);if(_7){var _8=_7.getChildFromLocatorSubstring(_2[0],0,_2);while(_8!=null){_2.removeAt(0);_7=_8;_8=_7.getChildFromLocatorSubstring(_2[0],0,_2)}}
+if(isc.isA.DynamicForm(_7)){return _7.getItemFromSplitLocator(_2)}
+return null}
+,isc.A.createLocatorFallbackPath=function isc_c_AutoTest_createLocatorFallbackPath(_1,_2){var _3=[];for(var _4 in _2){var _5=_2[_4];if(isc.isA.String(_5)){_5=_5.replace("/",this.slashMarker);_5=escape(_5)}
+if(_4==this.fallback_valueOnlyField){_3.add(_5)}else{_3.add(_4+this.fallback_equalMarker+_5)}}
+return _1+this.fallback_startMarker+_3.join(this.fallback_separator)+this.fallback_endMarker}
+,isc.A.parseLocatorFallbackPath=function isc_c_AutoTest_parseLocatorFallbackPath(_1){var _2=_1.split(this.fallback_startMarker);if(_2==null||_2.length<2)return;var _3=_2[0],_1=_2[1].substring(0,_2[1].length-this.fallback_endMarker.length);var _4=_1.split(this.fallback_separator),_5={};for(var i=0;i<_4.length;i++){var _7=_4[i],_8=_7.indexOf(this.fallback_equalMarker),_9;if(_8==-1){_9=this.fallback_valueOnlyField}else{_9=_7.substring(0,_8);_7=_7.substring(_8+1)}
+_7=_7.replace(this.slashMarker,"/");_7=unescape(_7);_5[_9]=_7}
+if(_2[2]!=null){var _7=_2[2].substring(0,_2[2].length-this.fallback_endMarker.length),_8=_7.indexOf(this.fallback_equalMarker),_10=_7.substring(0,_8),_11=_7.substring(_8+1);if(_11.startsWith("\""))_11=_11.substring(1,_11.length-1);_5[_10]=_11}
+return{name:_3,config:_5}}
+,isc.A.getObjectLocatorFallbackPath=function isc_c_AutoTest_getObjectLocatorFallbackPath(_1,_2,_3,_4){if(_3==null)_3={};if(_4==null)_4={title:"title",Class:"ClassName"};if(isc.isAn.Array(_4)){for(var i=0;i<_4.length;i++){var _6=_2.getProperty?_2.getProperty(_4[i]):_2[_4[i]];if(_6!=null&&!isc.isAn.emptyString(_6))_3[_4[i]]=_6}}else{for(var _7 in _4){var _6=_2.getProperty?_2.getProperty(_4[_7]):_2[_4[_7]];if(_6!=null&&!isc.isAn.emptyString(_6))_3[_7]=_6}}
+return isc.AutoTest.createLocatorFallbackPath(_1,_3)}
+,isc.A.logRobustLocatorWarning=function isc_c_AutoTest_logRobustLocatorWarning(){if(this.$75z)return;this.logWarn(this.robustLocatorWarning,"AutoTest");this.$75z=true}
+);isc.B._maxIndex=isc.C+11;isc.ApplyAutoTestMethods=function(){isc.Canvas.addClassMethods({getCanvasLocatorFallbackPath:function(_9,_39,_165,_166,_167){if(_166==null)_166={};if(_167==null)_167={};else if(isc.isAn.Array(_167)){var _1={};for(var i=0;i<_167.length;i++){_1[_167[i]]=_167[i]}
+_167=_1}
+if(_167.title==null)_167.title="title";if(_167.scRole==null)_167.scRole="ariaRole";if(_167.name==null)_167.name="name";var _3=_39.getClassName(),_4=_39.getClass();_166.Class=_3;var _5;if(!_4.isFrameworkClass){_5=_4.$750}
+if(_5!=null)_166.scClass=_5;if(_165!=null){_166.index=_165.indexOf(_39);_166.length=_165.length;var _6=_165.findAll("Class",_3);_166.classIndex=_6.indexOf(_39);_166.classLength=_6.length;if(_5!=null){var _7=_165.findAll("$75y",_5);_166.scClassIndex=_7.indexOf(_39);_166.scClassLength=_7.length}
+if(_39.ariaRole!=null){var _8=_165.findAll("ariaRole",_39.ariaRole);_166.roleIndex=_8.indexOf(_39);_166.roleLength=_8.length}}
+return isc.AutoTest.getObjectLocatorFallbackPath(_9,_39,_166,_167)},getCanvasFromFallbackLocator:function(_165,_43,_44,_45,_46){var _9=_43.name;var _10=_43.Class,_5=_43.scClass||_43.Class,_11=_43.scRole;switch(_45){case"name":if(_9!=null){var _12=_44.find("name",_9);if(_12){switch(_46){case"Class":if(_10&&isc.isA[_10]&&isc.isA[_10](_12)){if(this.logIsDebugEnabled("AutoTest")){this.logDebug("Locator string:"+_165+" - returning widget with matching name and ClassName:"+_12,"AutoTest")}
+return _12}
+case"scClass":if(_5&&isc.isA[_5]&&isc.isA[_5](_12))
+{if(this.logIsDebugEnabled("AutoTest")){this.logDebug("Locator string:"+_165+" - returning widget with matching name and scClassName:"+_12,"AutoTest")}
+return _12}
+case"role":var _13=_43.scRole;if(_12.ariaRole==_13){if(this.logIsDebugEnabled("AutoTest")){this.logDebug("Locator string:"+_165+" - returning widget with matching name and role:"+_12,"AutoTest")}
+return _12}
+default:if(_46!="none"){isc.AutoTest.logRobustLocatorWarning();this.logWarn("Locator string:"+_165+". Returning closest match:"+_12+". This has the same name "+"as the recorded component but does not match class or role. ","AutoTest")}else{if(this.logIsDebugEnabled("AutoTest")){this.logDebug("Locator string:"+_165+" - returning widget with matching name:"+_12,"AutoTest")}}
+return _12}}}
+case"title":var _14=_43.title;if(_14!=null){var _15=_44.findAll("title",_14);if(_15&&_15.length>0){var _16;switch(_46){case"Class":if(_10){var _17=_15.findAll("Class",_10);if(_17!=null){_16=_17[0];if(_17.length==1&&_16){if(this.logIsDebugEnabled("AutoTest")){this.logDebug("Locator string:"+_165+" - returning widget with matching title and ClassName:"+_16,"AutoTest")}
+return _16}}}
+case"scClass":if(_5){var _17=_15.findAll("$75y",_5);if(_17!=null){if(_17.length==1||_16==null)
+_16=_17[0];if(_17.length==1&&_16){if(this.logIsDebugEnabled("AutoTest")){this.logDebug("Locator string:"+_165+" - returning widget with matching name and scClassName:"+_16,"AutoTest")}
+return _16}}}
+case"role":if(_11){var _17=_15.findAll("ariaRole",_11);if(_17!=null){if(_17.length==1||_16==null)
+_16=_17[0];if(_17.length==1&&_16){if(this.logIsDebugEnabled("AutoTest")){this.logDebug("Locator string:"+_165+" - returning widget with matching title and role:"+_16,"AutoTest")}
+return _16}}}
+default:if(_15.length==1){if(_46!="none"){isc.AutoTest.logRobustLocatorWarning();this.logWarn("Locator string:"+_165+". Returning closest match:"+_15[0]+". This has the same title "+"as the recorded component but does not match class or role.","AutoTest")}else{if(this.logIsDebugEnabled("AutoTest")){this.logDebug("Locator string:"+_165+" - returning widget with matching title:"+_16,"AutoTest")}}
+return _15[0]}else{this.logWarn("Locator string:"+_165+", attempt to match by title failed -- multiple candidate components have this "+"same title. Attempting to match by index instead.","AutoTest")}}}}
+default:var _18,_19,_20;switch(_46){case"Class":if(_10&&_43.classIndex){var _21=_44.findAll("Class",_10);if(_21&&_21.length>0){_18=_21[parseInt(_43.classIndex)];if(_21.length==parseInt(_43.classLength)){if(this.logIsInfoEnabled("AutoTest")){this.logInfo("Locator string:"+_165+" - returning widget with matching ClassName / index by ClassName:"+_18,"AutoTest")}
+return _18}}}
+case"scClass":if(_5&&_43.scClassIndex){var _22=_44.findAll("$75y",_5);if(_22&&_22.length>0){_19=_22[parseInt(_43.scClassIndex)];if(_22.length==parseInt(_43.scClassLength)){if(this.logIsInfoEnabled("AutoTest")){this.logInfo("Locator string:"+_165+" - returning widget with matching SmartClient superclass / index by ClassName:"+_19,"AutoTest")}
+return _19}}}
+case"role":if(_11&&_43.roleIndex){var _23=_44.findAll("ariaRole",_11);if(_23&&_23.length>0){_20=_23[parseInt(_43.roleIndex)];if(_23.length==parseInt(_43.roleLength)){if(this.logIsInfoEnabled("AutoTest")){this.logInfo("Locator string:"+_165+" - returning widget with matching role / index by role:"+_20,"AutoTest")}
+return _20}}}
+default:if((_46!="none"&&(_10||_5||_11))||(_43.length!=null&&(parseInt(_43.length)!=_44.length)))
+{isc.AutoTest.logRobustLocatorWarning()}
+var _24=_18||_19||_20;if(_24==null){var _25=_43[isc.AutoTest.fallback_valueOnlyField];if(_25==null)_25=_43.index;_25=parseInt(_25);_24=_44[_25]}
+if(_24){this.logWarn("Locator string:"+_165+" matching by index gave "+_24+". Reliability cannot be guaranteed for matching by index if the underlying "+"application undergoes any changes.","AutoTest");return _24}}}
+this.logDebug("AutoTest.getElement(): locator substring:"+_165+" parsed to fallback locator name:"+_9+", unable to find relevant child - may refer to inner element.","AutoTest")}});isc.Canvas.addMethods({getLocator:function(_50,_165){var _26,_27;if(this._generated||this.locatorParent||this.creator||this.$541){_27=this.getLocatorParent()}
+if(!_27){_26=this.getLocatorRoot()}else{_26=_27.getLocator()+"/"+_27.getChildLocator(this)}
+if(_50)return[_26,this.getInteriorLocator(_50,_165)].join("/");return _26},$549:["//",,'[ID="',,'"]'],getLocatorRoot:function(){if(!this.locatorRoot){if(this.$541&&this.parentElement==null){this.locatorRoot="//"+isc.Canvas.getCanvasLocatorFallbackPath("autoID",this,isc.Canvas.$tw)}else{this.$549[1]=this.getClassName();this.$549[3]=this.getID();this.locatorRoot=this.$549.join(isc.emptyString)}}
+return this.locatorRoot},containsLocatorChild:function(_39){if(this.namedLocatorChildren!=null){for(var i=0;i<this.namedLocatorChildren.length;i++){var _9=this.namedLocatorChildren[i];if(isc.isAn.Object(_9))_9=_9.attribute;if(_39==this[_9]){return true}}}
+return false},getLocatorParent:function(){if(this.locatorParent&&this.locatorParent.containsLocatorChild&&this.locatorParent.containsLocatorChild(this))
+{return this.locatorParent}
+if(this.creator&&(isc.isA.Canvas(this.creator)||isc.isA.FormItem(this.creator))){var _28=this.creator.getAutoChildLocator(this);if(_28==null){this.logInfo("Locator code failed to find relationship between parent:"+this.creator.getID()+" and autoChild:"+this.getID(),"AutoTest")}else{return this.creator}}
+return this.masterElement||this.parentElement},$55a:[,"[",,'][Class="',,'"]'],getChildLocator:function(_39){if(_39==this.hscrollbar){return"hscrollbar"}
+if(_39==this.vscrollbar){return"vscrollbar"}
+if(_39.creator==this){var _29=this.getAutoChildLocator(_39);if(_29)return _29}
+return this.getStandardChildLocator(_39)},checkLocatorForNativeElement:function(_67,_50){if(_50==null||_67==null)return false;return(isc.EventHandler.eventHandledNatively("mousedown",_50,true)&&(isc.AutoTest.getElement(_67)!=_50))},getCanvasLocatorFallbackPath:function(_9,_39,_165,_166,_167){return isc.Canvas.getCanvasLocatorFallbackPath(_9,_39,_165,_166,_167)},getAutoChildLocator:function(_39){if(this.$542){var _30=_39.getID();for(var _31 in this.$542){var _32=this.$542[_31];if(_32.contains(_30)){if(_39==this[_31])return _31;else{var _33=[];for(var i=0;i<_32.length;i++){_33[i]=window[_32[i]]}
+return this.getCanvasLocatorFallbackPath(_31,_39,_33)}}}}
+return null},getNamedLocatorChildString:function(_39){if(_39.locatorParent==this&&this.namedLocatorChildren){for(var i=0;i<this.namedLocatorChildren.length;i++){var _9=this.namedLocatorChildren[i],_34=_9;if(isc.isA.Object(_9)){_34=_9.attribute,_9=_9.name}
+if(_39==this[_34]){return _9}}}},getStandardChildLocator:function(_39){var _35=this.getNamedLocatorChildString(_39);if(_35)return _35;if(_39.masterElement==this){return this.getCanvasLocatorFallbackPath("peer",_39,this.peers)}else if(_39.parentElement==this){return this.getCanvasLocatorFallbackPath("child",_39,this.children)}else{this.logWarn("unexpected error - failed to find relationship between parent:"+this.getID()+" and child:"+_39.getID());return _39.getLocatorRoot()}},getInteriorLocator:function(_50,_165){if(_50&&this.useEventParts){var _36=this.getElementPart(_50);if(_36!=null&&_36.part!=null){return(_36.partID&&_36.partID!=isc.emptyString)?_36.part+"_"+_36.partID:_36.part}}
+return isc.emptyString},getElementFromSplitLocator:function(_165){var _37=this.getChildFromLocatorSubstring(_165[0],0,_165);if(_37){_165.removeAt(0);return _37.getElementFromSplitLocator(_165)}
+return this.getInnerElementFromSplitLocator(_165)},getChildFromLocatorSubstring:function(_165,_25,_166){if(_165==null||_165=="")return null;if(isc.isA.Canvas(this[_165])){return this[_165]}
+if(this.namedLocatorChildren!=null){var _38=this.namedLocatorChildren.find("name",_165);if(_38!=null){var _39=this[_38.attribute];if(isc.isA.Canvas(_39))return _39;this.logWarn("Locator substring:"+_165+" remaps to attribute:"+_38.attribute+" but no canvas exists under that attribute name.","AutoTest")}}
+var _40=isc.AutoTest.parseLocatorFallbackPath(_165);if(_40!=null){return this.getChildFromFallbackLocator(_165,_40)}
+return null},getChildLocatorStrategy:function(_165){if(isc.AutoTest.locStrategyNames==null){isc.AutoTest.locStrategyNames={}}
+var _34=isc.AutoTest.locStrategyNames[_165];if(_34==null){var _41=_165;if(isc.isA.String(this.$558[_165]))_41=this.$558[_165];_34=isc.AutoTest.locStrategyNames[_165]="locate"+_41.substring(0,1).toUpperCase()+_41.substring(1)+"By"}
+return this[_34]},getChildLocatorTypeStrategy:function(_165){if(isc.AutoTest.locStrategyTypes==null){isc.AutoTest.locStrategyTypes={}}
+var _34=isc.AutoTest.locStrategyTypes[_165];if(_34==null){var _41=_165;if(isc.isA.String(this.$558[_165]))_41=this.$558[_165];_34=isc.AutoTest.locStrategyTypes[_165]="locate"+_41.substring(0,1).toUpperCase()+_41.substring(1)+"Type"}
+return this[_34]},getChildFromFallbackLocator:function(_165,_40){var _42=_40.name,_43=_40.config;var _44=this.getFallbackLocatorCandidates(_42);if(_44&&_44.length>0){var _45=this.getChildLocatorStrategy(_42);if(_45==null)_45="name";var _46=this.getChildLocatorTypeStrategy(_42);if(_46==null)_46="Class";var _24=isc.Canvas.getCanvasFromFallbackLocator(_165,_43,_44,_45,_46);if(_24!=null)return _24}
+this.logDebug("AutoTest.getElement(): locator substring:"+_165+" parsed to fallback locator name:"+_42+", unable to find relevant child - may refer to inner element.","AutoTest")},$558:{peer:"peers",child:"children"},getFallbackLocatorCandidates:function(_9){var _44;if(this.$542!=null&&this.$542[_9]!=null){var _47=this.$542[_9];_44=[];for(var i=0;i<_47.length;i++){_44[i]=window[_47[i]]}}else if(isc.isA.String(this.$558[_9])){_44=this[this.$558[_9]]}else if(this[_9]&&isc.isAn.Array(this[_9])){_44=this[_9]}
+return _44},emptyLocatorArray:function(_165){return _165==null||_165.length==0||(_165.length==1&&_165[0]=="")},getInnerElementFromSplitLocator:function(_165){if(!this.emptyLocatorArray(_165)){if(_165.length==1){var _48=_165[0].split("_");var _49={part:_48[0],partID:_48[1]};var _50=this.getPartElement(_49);if(_50)return _50}}
+return this.getHandle()},getAutoTestLocatorCoords:function(_67,_50){if(_67==null||_50==null)return null;var _51=isc.Element.getElementRect(_50);var _52=_51[0],_53=_51[2];_52+=Math.floor(_53/ 2);var _54=_51[1],_55=_51[3];_54+=Math.floor(_55/ 2);return[_52,_54]}});if(isc.Layout){isc.Layout.addProperties({getStandardChildLocator:function(_39){var _35=this.getNamedLocatorChildString(_39);if(_35)return _35;if(this.members.contains(_39)){return this.getCanvasLocatorFallbackPath("member",_39,this.members)}
+return this.Super("getStandardChildLocator",arguments)},$558:{member:"members",peer:"peers",child:"children"}})}
+if(isc.Window){isc.Window.addProperties({containsLocatorChild:function(_39){if(this.items&&this.items.contains(_39))return true;return this.Super("containsLocatorChild",arguments)},getStandardChildLocator:function(_39){if(this.items&&this.items.contains(_39)){var _56=this.$55a;_56[0]="item";_56[2]=this.items.indexOf(_39);_56[4]=_39.getClassName();return _56.join(isc.emptyString)}
+return this.invokeSuper(isc.Window,"getStandardChildLocator",_39)},$558:{item:"items",member:"members",peer:"peers",child:"children"}})}
+if(isc.SectionStack){isc.ImgSectionHeader.changeDefaults("$558",{item:"items"});isc.SectionHeader.changeDefaults("$558",{item:"items"});isc.SectionStack.changeDefaults("$558",{section:"sections"});isc.SectionStack.addProperties({getStandardChildLocator:function(_39){var _57=this.sections||[],_58;for(var i=0;i<_57.length;i++){var _59=_57[i].items,_60,_61;if(_39==_57[i]){_60=_39}else if(_59&&_59.contains(_39)){_60=_57[i];_61=_39}
+if(_60!=null){_58=this.getCanvasLocatorFallbackPath("section",_60,this.sections)}
+if(_61!=null){_58+="/"+this.getCanvasLocatorFallbackPath("item",_61,_60.items)}
+if(_58!=null)return _58}
+return this.Super("getStandardChildLocator",arguments)}})}
+if(isc.StretchImg){isc.StretchImg.addProperties({getInteriorLocator:function(_50,_165){var _62=_50,_63=this.getHandle(),_64=this.getCanvasName();while(_50&&_50!=_63&&_50.getAttribute){var _30=_50.getAttribute("name");if(_30&&_30.startsWith(_64)){return _30.substring(_64.length)}
+_50=_50.parentNode}
+return this.Super("getInteriorLocator",[_62,_165])},getInnerElementFromSplitLocator:function(_165){if(!this.emptyLocatorArray(_165)&&_165.length==1){var _65=this.getImage(_165[0]);if(_65)return _65}
+return this.Super("getInnerElementFromSplitLocator",arguments)}})}
+if(isc.DynamicForm){isc.DynamicForm.addProperties({getInteriorLocator:function(_50){var _66=isc.DynamicForm.$mu(_50,this);if(!_66.item)return this.Super("getInteriorLocator",arguments);var _61=_66.item,_67=[this.getItemLocator(_61),'/'];if(_66.overElement)_67[_67.length]="element";else if(_66.overTitle)_67[_67.length]="title";else if(_66.overTextBox)_67[_67.length]="textbox";else if(_66.overControlTable)_67[_67.length]="controltable";else if(_66.overIcon)_67[_67.length]="[icon='"+_66.overIcon+"']"
+return _67.join(isc.emptyString)},getItemLocator:function(_61){if(_61.parentItem&&(_61.parentItem!=this)){return this.getItemLocator(_61.parentItem)+"/"+_61.parentItem.getItemLocator(_61)}
+var _68={};if(_61.name!=null)_68.name=_61.name;var _14=_61.getTitle();if(_14!=null)_68.title=_14;var _69=_61.getValue();if(_69!=null)_68.value=_69;_68.index=this.getItems().indexOf(_61);_68.Class=_61.getClassName();var _70=isc.AutoTest.createLocatorFallbackPath("item",_68);return _70},containsLocatorChild:function(_39){if(isc.isA.DateChooser(_39)&&_39.callingForm==this)return true;return this.Super("containsLocatorChild",arguments)},getChildLocator:function(_39){if(_39.canvasItem){var _61=_39.canvasItem;return this.getItemLocator(_61)+"/canvas"}
+if(isc.isA.PickListMenu(_39)){var _61=_39.formItem;return this.getItemLocator(_61)+"/pickList"}
+if(isc.isA.DateChooser(_39)){var _61=_39.callingFormItem;return this.getItemLocator(_61)+"/picker"}
+return this.Super("getChildLocator",arguments)},getItemFromSplitLocator:function(_165){var _71=_165[0],_10;if(_71.contains("[Class=")){var _72=_71.match("item\\[(.+)'\\]\\[Class=\"(.+)\"\\]");_10=_72[1].substring(6,_72[1].length-2);_71=_72[0]}
+var _73=isc.AutoTest.parseLocatorFallbackPath(_71);if(_73&&_73.name=="item"&&_73.config!=null){var _43=_73.config;_10=_43.Class;var _61;if(_43.name!=null){_61=this.getItem(_43.name)}else{for(var i=0;i<this.items.length;i++){var _74=this.items[i],_75=_74.locateItemBy;if(_75==null)_75="title";if(_75=="title"&&_43.title!=null&&_74.title==_43.title)
+{_61=_74}else if(_75=="value"&&_43.value!=null&&_74.getValue()==_43.value)
+{_61=_74}}
+if(_61==null){var _25=_43.index;if(isc.isA.String(_25)){if(_25.startsWith("'")||_25.startsWith('"'))
+{_25=_25.substring(1)}
+_25=parseInt(_25)}
+_61=this.items[_25]}}
+if(!_61){this.logWarn("AutoTest.getElement(): Unable to find item from "+"locator string:"+_71);return null}
+if(!isc.isA[_10]||!isc.isA[_10](_61)){this.logWarn("AutoTest.getElement(): identifier:"+_71+" returned an item of class:"+_61.getClassName())}
+return _61}
+return null},getInnerElementFromSplitLocator:function(_165){if(this.emptyLocatorArray(_165)){return this.getHandle()}
+var _61=this.getItemFromSplitLocator(_165);if(_61!=null){_165.removeAt(0);return _61.getInnerElementFromSplitLocator(_165)}
+return this.getHandle()}});isc.ContainerItem.addProperties({getItemLocator:isc.DynamicForm.getPrototype().getItemLocator,getItemFromSplitLocator:isc.DynamicForm.getPrototype().getItemFromSplitLocator,getInnerElementFromSplitLocator:function(_165){if(!this.emptyLocatorArray(_165)){var _76=this.getItemFromSplitLocator(_165);if(_76!=null){_165.removeAt(0);return _76.getInnerElementFromSplitLocator(_165)}}
+return this.Super("getInnerElementFromSplitLocator",arguments)}});isc.FormItem.addProperties({getChildLocator:function formItem_getChildLocator(_165){if(_165.creator==this){var _29=this.getAutoChildLocator(_165);if(_29)return _29}},getAutoChildLocator:isc.Canvas.getPrototype().getAutoChildLocator,getLocator:function formItem_getLocator(){var _77=this.form;return _77.getLocator()+"/"+_77.getItemLocator(this)},getElementFromSplitLocator:function(_165){return this.getInnerElementFromSplitLocator(_165)},getInnerElementFromSplitLocator:function(_165){if(!this.emptyLocatorArray(_165)){var _49=_165[0];if(_49=="element")return this.getDataElement();if(_49=="title")return this.form.getTitleCell(this);if(_49=="textbox")return this.$15h();if(_49=="controltable")return this.$56a();if(_49=="canvas"){if(this.canvas){_165.removeAt(0);return this.canvas.getElementFromSplitLocator(_165)}}
+if(_49=="picker"){if(this.picker){_165.removeAt(0);return this.picker.getElementFromSplitLocator(_165)}}
+if(_49=="pickList"){if(!this.pickList)this.makePickList(false);_165.removeAt(0);return this.pickList.getElementFromSplitLocator(_165)}
+var _78=_49.match("\\[icon='(.+)'\\]"),_79=_78?_78[1]:null;if(_79){return this.$16v(_79)}
+if(this.$542){var _80=this.$903(_49);if(_80){_165.removeAt(0);return _80.getElementFromSplitLocator(_165)}}}else{var _50=this.getFocusElement();if(_50==null)_50=this.$15h();return _50}},$903:function(_9){var _80;var _32=this.$542?this.$542[_9]:null;if(_32&&_32.length>0){if(this[_9]!=null)_80=this[_9];else{}}
+if(_80)return _80},emptyLocatorArray:isc.Canvas.getPrototype().emptyLocatorArray});isc.HeaderItem.addProperties({locateItemBy:"value"});if(isc.PickListMenu){isc.PickListMenu.addProperties({getLocatorParent:function(){if(this.formItem)return this.formItem.form;return this.Super("getLocatorParent",arguments)}})}}
+if(isc.GridRenderer){isc.GridRenderer.addProperties({getInteriorLocator:function(_50,_165){var _81=this.getCellFromDomElement(_50);if(_81==null)return this.Super("getInteriorLocator",[_50,_165]);var _82=_81[0],_83=_81[1];return this.getCellLocator(_82,_83)},getCellFromDomElement:function(_50){var _63=this.getHandle(),_84=this.getTableElement();if(!_84)return null;var _85=_84.rows,_86,_87,_81,_88="tr",_89="TR",_90="td",_91="TD";while(_50&&_50!=_84&&_50!=_63){_86=_50.tagName;if(_86==_90||_86==_91){_81=_50}
+if(_86==_88||_86==_89){_87=_50}
+_50=_50.parentNode}
+if(!_87||!_81)return null;var _85=_84.rows,_82,_92;for(var i=0;i<_85.length;i++){if(_85[i]==_87){_82=i;break}}
+var _93=_87.cells,_83,_94;for(var i=0;i<_93.length;i++){if(_93[i]==_81){_83=i;break}}
+_92=_82+(this.$252||0);_94=_83+(this.$254||0);return[_92,_94]},getCellLocator:function(_82,_83){return"row["+_82+"]/col["+_83+"]"},getInnerElementFromSplitLocator:function(_165){if(this.emptyLocatorArray(_165))return this.getHandle();if(_165.length==2){var _81=this.getCellFromLocator(_165[0],_165[1]),_82=_81[0],_83=_81[1];if(isc.isA.Number(_82)&&isc.isA.Number(_83)){if(this.$29p())return null;return this.getTableElement(_82,_83)}}
+return this.Super("getInnerElementFromSplitLocator",arguments)},getCellFromLocator:function(_113,_110){var _95=_113.substring(4,_113.length-1),_96=_110.substring(4,_110.length-1);return[_82,_83]}})}
+if(isc.ListGrid){isc.ListGrid.addProperties({namedLocatorChildren:["header","frozenHeader","body","frozenBody",{attribute:"$286",name:"editRowForm"}]});isc.GridBody.addProperties({getInteriorLocator:function(_50,_165){if(_165){var _32=this.children;if(_32!=null&&_32.length>0){for(var i=0;i<_32.length;i++){var _37=_32[i];if(_37&&_37.eventProxy==this){var _63=_37.getHandle();if(_63!=null){var _97=_50;while(_97!=this.getHandle()&&_97!=null)
+{if(_97==_63){var _82=this.getEventRow(),_83=this.getEventColumn();return this.getCellLocator(_82,_83)}
+_97=_97.parentNode}}}}}}
+return this.Super("getInteriorLocator",arguments)},getCellLocator:function(_82,_83){var _98=this.grid;if(_98==null)return this.Super("getCellLocator",arguments);return _98.getCellLocator(this,_82,_83)}});isc.ListGrid.addProperties({getCellLocator:function(_109,_82,_83){var _99=this.getRowLocatorOptions(_109,_82,_83),_100=this.getColLocatorOptions(_109,_82,_83);return isc.AutoTest.createLocatorFallbackPath("row",_99)+"/"+isc.AutoTest.createLocatorFallbackPath("col",_100)},getRowLocatorOptions:function(_109,_82,_83){var _101={},_102=this.getFieldNumFromLocal(_83,_109),_103=this.getCellRecord(_82,_102),_104=this.getDataSource();if(_103!=null){if(_104!=null){var _105=_104.getPrimaryKeyFieldName();if(_105!=null&&_103[_105]!=null){_101[_105]=_103[_105]}}
+var _106=this.getTitleField();if(_106!=null&&_103[_106]!=null){_101[_106]=_103[_106]}
+var _107=this.getFieldName(_102);if(_107!=null&&_103[_107]!=null){_101[_107]=_103[_107]}}
+_101[isc.AutoTest.fallback_valueOnlyField]=_82;return _101},getColLocatorOptions:function(_109,_82,_83){var _101={},_102=this.getFieldNumFromLocal(_83,_109);var _108=this.getField(_102);if(this.isCheckboxField(_108)){_101.isCheckboxField=true}else{var _107=this.getFieldName(_102);if(_107!=null)_101.fieldName=_107}
+_101[isc.AutoTest.fallback_valueOnlyField]=_83;return _101},getChildFromLocatorSubstring:function(_165,_25,_166){if(_165=="frozenBody"||_165=="body"){if(_166.length==_25+3&&_166[_25+1].startsWith("row[")&&_166[_25+2].startsWith("col["))
+{return null}}
+return this.Super("getChildFromLocatorSubstring",arguments)},getInnerElementFromSplitLocator:function(_165){if(this.emptyLocatorArray(_165))return this.getHandle();var _109=_165[0];if(_165.length==3&&(_109=="body"||_109=="frozenBody")){var _110=_165[2],_111=isc.AutoTest.parseLocatorFallbackPath(_110);if(_111.name!="col"){this.logWarn("Error parsing locator:"+_165.join("")+" returning ListGrid handle");return this.getHandle()}
+var _108=this.getFieldFromColLocatorConfig(_111.config),_112;if(_108==null){_112=parseInt(_111.config[isc.AutoTest.fallback_valueOnlyField]);if(_109=="frozenBody"&&this.frozenBody==null){_109="body"}
+_109=this[_109]}else{_112=this.getLocalFieldNum(this.getFieldNum(_108));if(this.fieldIsFrozen(_108))_109=this.frozenBody;else _109=this.body}
+if(_109==null)return null;var _113=_165[1],_114=isc.AutoTest.parseLocatorFallbackPath(_113),_82=this.getRowNumFromLocatorConfig(_114.config);if(isc.isA.Number(_82)&&isc.isA.Number(_112)){if(_109.$29p())return null;return _109.getTableElement(_82,_112)}}
+return this.Super("getInnerElementFromSplitLocator",arguments)},getFieldFromColLocatorConfig:function(_165){if(_165.isCheckboxField!=null){for(var i=0;i<this.fields.length;i++){if(this.isCheckboxField(this.fields[i])){return this.fields[i]}
+this.logWarn("AutoTest stored a locator for interaction with "+"checkbox field - but this grid is not showing a checkbox field - "+"recorded test may be invalid.","AutoTest");return-1}}else{var _115=this.locateColumnsBy;if(_115=="fieldName"||_115==null){var _107=_165.fieldName;if(_107!=null){return this.getField(_107)}}}},getRowNumFromLocatorConfig:function(_165){var _116=this.locateRowsBy;if(_116==null)_116="primaryKey";var _117=this.data,_118;switch(_116){case"primaryKey":var _104=this.getDataSource();if(_104!=null){var _119=_104.getPrimaryKeyFieldName();if(_104!=null&&_165[_119]!=null){return this.findRowNum(_165)}}
+case"titleField":var _106=this.getTitleField();if(_106!=null&&_165[_106]!=null){var _120=_117.findAllIndices(_106,_165[_106]);if(_120.length==0)return-1
+if(_120.length==1)return _120[0];var _121=[];for(var i=0;i<_120.length;i++){_121[_120[i]]=_117.get(_120[i])}
+_118=_120[0];_117=_121}
+case"targetCellValue":for(var _107 in _165){if(_107==isc.AutoTest.fallback_valueOnlyField)continue;if(_165[_107]!=null){var _120=_117.findAllIndices(_107,_165[_107]);if(_120.length==0)return-1
+if(_120.length==1)return _120[0];var _121=[];for(var i=0;i<_120.length;i++){_121[_120[i]]=_117.get(_120[i])}
+_118=_120[0];_117=_121}}
+default:var _82=parseInt(_165[isc.AutoTest.fallback_valueOnlyField]);var _122;if(_118==null||_117[_82]!==_122)return _82;else return _118}}})}
+if(isc.TreeGrid){isc.TreeGridBody.addProperties({getInteriorLocator:function(_50){var _62=_50;var _63=this.getHandle(),_123=this.getTableElement();if(!_50||!_63||!_123)return isc.emptyString;var _124=this.grid.getCanvasName()+this.grid.$34l,_82,_83;var _125=this.grid.getCanvasName()+this.grid.$349;while(_50!=this.tableElement&&_50!=_63&&_50.getAttribute){var _30=_50.getAttribute("name");if(_30){if(_30.startsWith(_124)){_82=parseInt(_30.substring(_124.length));_83=this.grid.getTreeFieldNum();return this.getCellLocator(_82,_83)+"/open"}
+if(_30.startsWith(_125)){_82=parseInt(_30.substring(_125.length));_83=this.grid.getTreeFieldNum();return this.getCellLocator(_82,_83)+"/extra"}}
+_50=_50.parentNode}
+return this.Super("getInteriorLocator",[_62])},getInnerElementFromSplitLocator:function(_165){if(this.emptyLocatorArray(_165))return this.getHandle();if(_165.length==3){if(_165[2]=="open"){if(this.$29p())return null;var _113=_165[0];var _82;if(_113.charAt(3)!="["){_82=parseInt(_113.substring(3))}else{var _114=isc.AutoTest.parseLocatorFallbackPath(_113);if(_114==null||_114.name!="row"){this.logInfo("Locator appears to be click-in-open-area locator but "+"doesn't contain row/col info? returning null.\n"+_165.join("/"),"AutoTest")}
+_82=this.grid.getRowNumFromLocatorConfig(_114.config)}
+var _126=this.grid.$34l+_82,_65=this.grid.getImage(_126);if(_65)return _65}else if(_165[2]=="extra"){if(this.$29p())return null;var _113=_165[0];var _82;if(_113.charAt(3)!="["){_82=parseInt(_113.substring(3))}else{var _114=isc.AutoTest.parseLocatorFallbackPath(_113);if(_114==null||_114.name!="row"){this.logInfo("Locator appears to be click-in-open-area locator but "+"doesn't contain row/col info? returning null.\n"+_165.join("/"),"AutoTest")}
+_82=this.grid.getRowNumFromLocatorConfig(_114.config)}
+var _126=this.grid.$349+_82,_65=this.grid.getImage(_126);if(_65)return _65}}
+return this.Super("getInnerElementFromSplitLocator",arguments)},getAutoTestLocatorCoords:function(_67,_50){var _127=this.Super("getAutoTestLocatorCoords",arguments);if(_127==null)return _127;var _128=this.grid;if(_128==null||_67.endsWith("open")||_67.endsWith("extra"))return _127;var y=_127[1],_82=this.getEventRow(y),_83=this.getEventColumn(_127[0]),_117=_128.data,_130=_128.getRecord(_82),_131=_128.getTreeFieldNum()==_128.getFieldNumFromLocal(_83,this);if(_131&&_128.data&&_128.data.isFolder(_130)){var _132=_128.getOpenAreaWidth(_130),_51=isc.Element.getElementRect(_50),_52=(_51[0]+_132),_53=_51[2]-_52;_127[0]=_52+Math.floor(_53/ 2)}
+return _127}})}
+if(isc.TabSet){isc.TabSet.addProperties({containsLocatorChild:function(_39){if(this.Super("containsLocatorChild",arguments))return true;if(this.getTabNumber(_39)!=-1)return true;return false},getStandardChildLocator:function(_39){var _133=this.getTabNumber(_39);if(_133!=-1){var _134=this.getTabObject(_133);var _135={};if(_134.ID!=null)_135.ID=_134.ID;if(_134.title!=null)_135.title=_134.title;_135.index=_133;return isc.AutoTest.createLocatorFallbackPath("tab",_135)}
+return this.Super("getStandardChildLocator",arguments)},getChildFromLocatorSubstring:function(_165){if(_165&&_165.startsWith("tab[")){var _136=isc.AutoTest.parseLocatorFallbackPath(_165),_43=_136.config;if(_43.ID!=null){return this.getTab(_43.ID)}
+var _137=this.locateTabsBy;if(_137==null)_137="title";if(_43.title&&_137=="title"){var _133=this.tabs.findIndex("title",_43.title);return this.getTab(_133)}
+return this.getTab(parseInt(_43.index))}
+return this.Super("getChildFromLocatorSubstring",arguments)}})}
+if(isc.StatefulCanvas){isc.StatefulCanvas.addProperties({getInnerElementFromSplitLocator:function(_165){if(!this.emptyLocatorArray(_165)&&this.label){return this.label.getInnerElementFromSplitLocator(_165)}
+return this.Super("getInnerElementFromSplitLocator",arguments)}})}
+if(isc.DateChooser){isc.DateChooser.addMethods({getInteriorLocator:function(_50){var _63=this.getHandle();if(!_63||!_50)return"";var _138=_50.$73l;if(_138!=null&&_138!="")return _138;return _50.$73l=this.$73m(_50,_63)},$73m:function(_50,_63){var _139=_50;while(_139&&_139!=null){if(_139==_63){_139=null;break}
+if(_139.tagName&&_139.tagName.toLowerCase()=="td"){break}
+_139=_139.parentElement}
+if(_139==null)return"";var _140=_63.childNodes,_141=[];for(var i=0;i<_140.length;i++){if(!_140[i].tagName||_140[i].tagName.toLowerCase()!="table"){continue}
+_141[_141.length]=_140[i]}
+var _142=_141.length==2?_141[0]:null,_143=_141.length==2?_141[1]:_141[0];if(_142!=null&&_139.offsetParent==_142){var _144=_139.onclick,_145=_144?_144.toString():null;if(!_145)return"";if(_145.contains("showPrevYear")){return"prevYearButton"}else if(_145.contains("showNextYear")){return"nextYearButton"}else if(_145.contains("showPrevMonth")){return"prevMonthButton"}else if(_145.contains("showNextMonth")){return"nextMonthButton"}else if(_145.contains("showMonthMenu")){return"monthMenuButton"}else if(_145.contains("showYearMenu")){return"yearMenuButton"}
+return""}else if(_143!=null&&_139.offsetParent==_143){var _144=_139.onclick,_145=_144?_144.toString():null;if(!_145)return"";if(_145.contains("cancelClick"))return"cancelButton";else if(_145.contains("todayClick"))return"todayButton";else{var _146=_145.match("dateClick\\(\(.*\)\\)");if(_146&&_146[1]){var _147=_146[1].split(",");for(var i=0;i<_147.length;i++){_147[i]=_147[i].trim()}
+return _147.join("/")}}}
+return""},getInnerElementFromSplitLocator:function(_165){if(this.emptyLocatorArray(_165))return this.getHandle();var _63=this.getHandle();if(_63==null)return;var _148=(_165.length==3);if(!_148){var _58=_165[0];if(_58=="")return _63;var _149=(_58=="todayButton"),_150=!_149?(_58=="cancelButton"):false;var _140=_63.childNodes;if(_149||_150){if(_149&&!this.showTodayButton){this.logWarn("DateChooser attempting to locate element for "+"'todayButton' but showTodayButton is false. Returning handle.","AutoTest");return _63}
+if(_150&&!this.showCancelButton){this.logWarn("DateChooser attempting to locate element for "+"'cancelButton' but showCancelButton is false. Returning handle.","AutoTest");return _63}
+var _143;for(var i=_140.length-1;i>=0;i--){if(_140[i].tagName&&_140[i].tagName.toLowerCase()=="table")
+{_143=_140[i];break}}
+var _151=_143.rows[_143.rows.length-1],_93=_151.cells;for(var i=0;i<_93.length;i++){if(this.getInteriorLocator(_93[i])==_58){return _93[i]}}}else{if(!this.showHeader){this.logWarn("DateChooser attempting to locate element for "+_165+" but this.showHeader is false so this element will not be present. "+"Returning handle.","AutoTest");return _63}
+var _142
+for(var i=0;i<_140.length;i++){if(_140[i].tagName&&_140[i].tagName.toLowerCase()=="table")
+{_142=_140[i];break}}
+var _87=_142.rows[0],_93=_87.cells;for(var i=0;i<_93.length;i++){if(this.getInteriorLocator(_93[i])==_58){return _93[i]}}}}else{var _152=_165[0],_153=_165[1],_154=_165[2];if((_152==this.year)&&(this.month==_153||this.month==_153+1||this.month==_153-1))
+{var _155=Date.createLogicalDate(_152,_153,_154),_156=_155.getDay();if(this.showWeekends||!Date.getWeekendDays().contains(_156)){var _157=Date.createLogicalDate(this.year,this.month,1);var _158=_157.getDay(),_159=_158+this.firstDayOfWeek-
+(_158<this.firstDayOfWeek?7:0);_157.setDate(_157.getDate()-_159);if(Date.compareDates(_155,_157)!=1){var _160=Date.createLogicalDate(this.year,this.month+1,1);_160.setTime(_160.getTime()-86400000);var _161=_160.getDay(),_162=this.firstDayOfWeek+6;if(_162>6)_162-=7;var _163=_162>_161?_162-_161:_162+7-_161;if(_163!=0){_160.setTime(_160.getTime()+(86400000*_163))}
+if(Date.compareDates(_155,_160)!=-1){var _82=Math.floor(((parseInt(_154)+_159)/7))
+_82+=1;var _164=this.firstDayOfWeek;if(!this.showWeekends){while(Date.getWeekendDays().contains(_164)){_164+=1;if(_164==7)_164=0}}
+var _83=_155.getDay()-_164;if(_83<0)_83+=7;var _140=_63.childNodes,_143;for(var i=_140.length-1;i>=0;i--){if(_140[i].tagName&&_140[i].tagName.toLowerCase()=="table")
+{_143=_140[i];break}}
+if(_143)return _143.rows[_82].cells[_83]}else{this.logInfo("DateChooser Passed ID for a date after end. "+"end date:"+[_160.getFullYear(),_160.getMonth(),_160.getDay()]+" vs:"+[_152,_153,_154],"AutoTest")}}else{this.logInfo("DateChooser Passed ID for a date before start date. "+"startDate:"+[_157.getFullYear(),_157.getMonth(),_157.getDay()]+" vs:"+[_152,_153,_154],"AutoTest")}}else{this.logInfo("DateChooser Passed ID for a weekend - not showing weekends","AutoTest")}}else{this.logInfo("DateChooser passed ID for the wrong year or month - passed:"+_165+", showing:"+[this.year,this.month],"AutoTest")}
+this.logWarn("DateChooser - passed inner locator for date ("+_165.join("/")+") -- not currently showing this date.","AutoTest")}
+this.logWarn("DateChooser, unable to find element for inner locator:"+_165+" returning handle");return _63}})}}
+isc.AutoTest.customizeCalendar=function(){isc.$755={getRowLocatorOptions:function(_47,_28,_29){var _1=this.Super("getRowLocatorOptions",arguments);var _2=this.creator.chosenDate;_1.date=_2.toSchemaDate("date");_1.minutes=_28*30;return _1},getRowNumFromLocatorConfig:function(_47){var _3=this.creator.locateCellsBy;if((_3=="date"||_3==null)&&_47.date!=null)
+{var _2=isc.Date.parseSchemaDate(_47.date);if(!this.showingDate(_2)){this.logWarn("Locator for cell in this calendar day-view grid has date "+"stored as:"+_2.toUSShortDate()+", but we're currently showing "+this.creator.chosenDate.toUSShortDate()+". The stored date doesn't map to a visible cell so not returning a cell "+"- if this is not the intended behavior in this test case you may need to "+"set calendar.locateCellsBy to 'index'.","AutoTest");return-1}
+return parseInt(_47.minutes)/30}
+this.locateRowsBy="index";return this.Super("getRowNumFromLocatorConfig",arguments)},showingDate:function(_2){return(isc.Date.compareLogicalDates(_2,this.creator.chosenDate)==0)}}
+isc.DaySchedule.addProperties(isc.$755);isc.WeekSchedule.addProperties(isc.$755,{showingDate:function(_2){for(var i=0;i<this.fields.length;i++){var _5=this.fields[i];if(_5.$66a==null)continue;if(Date.compareLogicalDates(Date.createLogicalDate(_5.$66a,_5.$659,_5.$658),_2)==0)
+{this.logWarn("does contain date"+_2.toShortDate());return true}
+this.logWarn("date passed in:"+_2.toShortDate()+"compared with:"+Date.createLogicalDate(_5.$66a,_5.$659,_5.$658).toShortDate())}
+this.logWarn("doesn't contain date:"+_2);return false},getColLocatorOptions:function(_47,_28,_29){var _6=this.Super("getColLocatorOptions",arguments),_7=this.getFieldNumFromLocal(_29,_47),_5=this.getField(_7);if(_5&&_5.$658!=null){_6.date=[_5.$66a,(_5.$659+1),_5.$658].join("-")}
+return _6},getFieldFromColLocatorConfig:function(_47){if((this.locateCellsBy=="date"||this.locateCellsBy==null)&&(_47.date!=null))
+{var _8=_47.date.split("-");return this.getFields().find("$658",_8[2])}
+return this.Super("getFieldFromColLocatorConfig",arguments)}});isc.MonthSchedule.addProperties({getRowLocatorOptions:function(_47,_28,_29){var _1=this.Super("getRowLocatorOptions",arguments);var _9=this.getRecord(_28);if(!_9)return _1;var _5=this.getField(_29);var _10=_5.$66b;_1.dayIndex=_10;var _2=_9["date"+_10];_1.date=_2.toSchemaDate("date");var _11=_9["event"+_10];if(_11==null){_1.isHeaderRow=true}else{_1.isHeaderRow=false}
+return _1},getRowNumFromLocatorConfig:function(_47){var _3=this.creator.locateCellsBy;if((_3=="date"||_3==null)&&_47.date!=null)
+{var _2=isc.Date.parseSchemaDate(_47.date),_12=(_47.isHeaderRow=="true"),_13="date"+_47.dayIndex,_14="event"+_47.dayIndex;for(var i=0;i<this.data.length;i++){var _15=(this.data[i][_14]==null);if(_15==_12){if(Date.compareLogicalDates(this.data[i][_13],_2)==0){return i}}}
+return-1}
+this.locateRowsBy="index";return this.Super("getRowNumFromLocatorConfig",arguments)},getColLocatorOptions:function(_47,_28,_29){var _1=this.Super("getColLocatorOptions",arguments);_1.dayIndex=this.getField(_29).$66b;return _1},getColNumFromLocatorConfig:function(_47){var _3=this.locateCellsBy;if(_3==null||_3=="date"){return this.fields.findIndex("$66b",parseInt(_47.dayIndex))}
+this.locateColsBy="index";return this.Super("getColNumFromLocatorConfig",arguments)}});isc.MonthScheduleBody.addProperties({getInteriorLocator:function(_47){if(_47.tagName.toLowerCase()=="a"){var _16=_47.href;if(_16!=null){var _17=_16.match("javascript:.*monthViewEventClick\\((\\d+),(\\d+),(\\d+)\\);");if(_17){var _18=parseInt(_17[1]),_19=parseInt(_17[2]),_20=parseInt(_17[3]);var _11=this.grid.getEvents(_18,_19),_21=_11[_20];if(_21==null){this.logWarn("Unable to determine event associated with apparent event "+"link element -- returning cell");return this.Super("getInteriorLocator",arguments)}
+var _22=this.grid.creator,_23=_22.getEventLocatorConfig(_21);var _24=isc.AutoTest.createLocatorFallbackPath("eventLink",_23);return _24}}}
+return this.Super("getInteriorLocator",arguments)},getInnerElementFromSplitLocator:function(_47){if(this.emptyLocatorArray(_47))return this.getHandle();if(_47.length==1&&_47[0].startsWith("eventLink")){var _25=isc.AutoTest.parseLocatorFallbackPath(_47[0]);var _22=this.grid.creator;var _21=_22.getEventFromLocatorConfig(_25.config);var _26=this.grid.getEventCell(_21);if(_26!=null){var _27=this.grid.data,_28=_26[0],_29=_26[1],_10=this.grid.getField(_29).$66b;var _30=this.getTableElement(_28,_29),_31=_30.getElementsByTagName("A");if(_31!=null){for(var _32=0;_32<_31.length;_32++){var _16=_31[_32].href;if(_16!=null){var _17=_16.match("javascript:.*monthViewEventClick\\((\\d+),(\\d+),(\\d+)\\);");if(_17&&_27[_28]["event"+_10][parseInt(_17[3])]==_21)
+{return _31[_32]}}}}}
+return this.Super("getInnerElementFromSplitLocator",arguments)}}});isc.Calendar.addProperties({getCanvasLocatorFallbackPath:function(_45,_47,_48,_49,_50){if(_45=="eventWindow"){var _1=this.getEventLocatorConfig(_47.event);return isc.AutoTest.createLocatorFallbackPath("eventWindow",_1)}
+return this.Super("getCanvasLocatorFallbackPath",arguments)},getEventLocatorConfig:function(_21){var _23={};if(this.dataSource){var _33=this.getDataSource().getPrimaryKeyFieldName();_23[_33]=_21[_33]}
+var _34=this.nameField;_23[_34]=_21[_34];var _35=this.startDateField;var _36=_21[_35];_23[_35]=_36.toSchemaDate();var _37=this.endDateField;var _38=_21[_37];_23[_37]=_38.toSchemaDate();_23.index=this.data.indexOf(_21);return _23},getChildFromFallbackLocator:function(_47,_48){var _39=_48.name,_23=_48.config;if(_39=="eventWindow"){var _40=this.mainView.getSelectedTab().viewName;if(_40=="day"){var _41=this.dayView.body.children}else if(_40=="week"){var _41=this.weekView.body.children}
+if(_41!=null){var _21=this.getEventFromLocatorConfig(_23),_42=_41.find("event",_21);return _42}
+this.logWarn("unable to find event window associated with event:"+this.echo(_21)+" based on locator string:"+_47+". It's possible that this event is not visible in the current view of "+"this Calendar","AutoTest");return null}
+return this.Super("getChildFromFallbackLocator",arguments)},getEventFromLocatorConfig:function(_23){var _43=this.locateEventsBy;if(_43==null)_43="primaryKey";switch(_43){case"primaryKey":var _44=this.getDataSource();if(_44){var _33=_44.getPrimaryKeyFieldName();if(_33&&_23[_33]!=null){return this.data[this.data.findByKey(_23)]}}
+case"name":var _45=_23[this.nameField];if(_45!=null)return this.data.find(this.nameField,_45);case"date":var _36=_23[this.startDateField],_38=_23[this.endDateField];for(var i=0;i<this.data.length;i++){var _46=this.data.get(i);if(_46==null)continue;if(_46[this.startDateField].toSchemaDate()==_36&&_46[this.endDateField].toSchemaDate()==_38)
+{return _46}
+this.logWarn("attempt to match calendar event by startDate / endDate "+"unable to locate any events. Backing off to index within data array")}
+default:var _20=parseInt(_23.index);return this.data.get(_20)}}})}
+if(isc.Calendar)isc.AutoTest.customizeCalendar();if(!isc.Page.isLoaded()){isc.Page.setEvent("load","isc.ApplyAutoTestMethods()")}else{isc.ApplyAutoTestMethods()}
+isc.Page.logInfo("SmartClient Core ("+isc.version+" "+isc.buildDate+") initialized: "+(isc.timeStamp()-isc.$d)+"ms");isc.Page.logInfo("document.compatMode: "+document.compatMode);if(isc.Log.hasFireBug()){isc.Log.logWarn("NOTE: Firebug is enabled. Firebug greatly slows the performance of "+"applications that make heavy use of JavaScript. Isomorphic highly recommends Firebug "+"for troubleshooting, but Firebug and other development tools should be disabled when "+"assessing the real-world performance of SmartClient applications.")}
+isc._moduleEnd=isc._Core_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Core module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Core'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Core.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Core.js.gz
new file mode 100755
index 0000000..7b2b3dc
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Core.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DataBinding.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DataBinding.js
new file mode 100755
index 0000000..176d8d9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DataBinding.js
@@ -0,0 +1,3519 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_DataBinding){isc.module_DataBinding=1;isc._moduleStart=isc._DataBinding_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'DataBinding load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;if(!isc.Comm)isc.defineClass("Comm");isc.A=isc.Comm;isc.A.XML_BACKREF_PREFIX="$$BACKREF$$:";isc.A.$36r=/^([_:A-Za-z])([_:.A-Za-z0-9]|-)*$/;isc.A.serializeBackrefs=true;isc.A=isc.Comm;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.xmlSerialize=function isc_c_Comm_xmlSerialize(_1,_2,_3){return isc.Comm.$ew(_1,_2,_3?"":null)}
+,isc.A.$ew=function isc_c_Comm__xmlSerialize(_1,_2,_3,_4){var _5=_1!=null;if(!_4||!_4.objRefs){_4=isc.addProperties({},_4);_4.objRefs={obj:[],path:[]};if(!_4.objPath){if(_2&&_2.getID)_4.objPath=_2.getID();else _4.objPath=""}
+if(_1==null){if(isc.isA.Class(_2))_1=_2.getClassName();else if(isc.isAn.Array(_2))_1="Array";else if(isc.isA.Object(_2))_1=_2.$schemaId||"Object";else _1="ISC_Auto"}}
+if(_2==null){if(isc.Comm.xmlSchemaMode||!isc.Comm.$850){return isc.Comm.$ex(_1,"")}else{return isc.Comm.$ex(_1,null,"nil")}}
+if(isc.isA.String(_2)){return isc.Comm.$ex(_1,isc.makeXMLSafe(_2),(isc.Comm.xmlSchemaMode?"string":null))}
+if(isc.isA.Function(_2)){if(_2.iscAction)return isc.StringMethod.$41u(_2.iscAction);return null}
+if(_2==window){this.logWarn("Serializer encountered the window object at path: "+_4.objPath+" - returning null for this slot.");return null}
+if(isc.RPCManager.preserveTypes){if(isc.isA.Number(_2)||isc.isA.SpecialNumber(_2)){if(_2.toString().contains("."))
+return isc.Comm.$ex(_1,_2,"double");return isc.Comm.$ex(_1,_2,"long")}
+if(isc.isA.Boolean(_2))return isc.Comm.$ex(_1,_2,"boolean")}else{if(isc.isA.Number(_2)||isNaN(_2)){return isc.Comm.$ex(_1,_2)}
+if(isc.isA.Boolean(_2))return isc.Comm.$ex(_1,_2)}
+var _6=isc.JSONEncoder.$zl(_4.objRefs,_2);if(_6!=null&&_4.objPath.contains(_6)){var _7=_4.objPath.substring(_6.length,_6.length+1);if(_7=="."||_7=="["||_7=="]"){if(this.serializeBackrefs){return isc.Comm.$36u(_1)+isc.Comm.XML_BACKREF_PREFIX+_6+isc.Comm.$36v(_1)}
+return isc.emptyString}}
+isc.JSONEncoder.$zm(_4.objRefs,_2,_4.objPath);if(isc.isA.Function(_2.$ew)){return _2.$ew(_1,null,null,_3,_4.objRefs,_4.objPath)}else if(isc.isA.Class(_2)){this.logWarn("Attempt to serialize class of type: "+_2.getClassName()+" at path: "+_4.objPath+" - returning null for this slot.");return null}
+var _8=_4.isRoot==false?false:true;if(isc.isAn.Array(_2))
+return isc.Comm.$36s(_1,_2,_4.objPath,_4.objRefs,_3,_8);var _9;if(_2.getSerializeableFields){_9=_2.getSerializeableFields([],[])}else{_9=_2}
+return isc.Comm.$36t(_1,_9,_4.objPath,_4.objRefs,_3,_8)}
+,isc.A.$36s=function isc_c_Comm__xmlSerializeArray(_1,_2,_3,_4,_5,_6){var _7=isc.Comm.$36u(_1,"List",null,null,null,_6);for(var i=0,_9=_2.length;i<_9;i++){var _10=_2[i];var _11={objRefs:_4,objPath:isc.JSONEncoder.$zp(_3,i),isRoot:false};_7=isc.StringBuffer.concat(_7,(_5!=null?isc.StringBuffer.concat("\r",_5,"\t"):""),isc.Comm.$ew((_10!=null?_10.$schemaId:null)||"elem",_10,(_5!=null?isc.StringBuffer.concat(_5,"\t"):null),_11))}
+_7=isc.StringBuffer.concat(_7,(_5!=null?isc.StringBuffer.concat("\r",_5):""),isc.Comm.$36v(_1));return _7}
+,isc.A.$36w=function isc_c_Comm__isValidXMLIdentifier(_1){return isc.Comm.xmlSchemaMode||_1.match(this.$36r)}
+,isc.A.$36t=function isc_c_Comm__xmlSerializeObject(_1,_2,_3,_4,_5,_6){if(isc.isAn.Instance(_2))_1=_2.getClassName();else if(_2._constructor&&_2._constructor!="AdvancedCriteria"&&_2._constructor!="RelativeDate")_1=_2._constructor;var _7=isc.Comm.$36u(_1,"Object",null,null,null,_6);var _8;_2=isc.JSONEncoder.$42b(_2);for(var _9 in _2){if(_9==null)continue;if(_9==isc.gwtRef)continue;if(_9.startsWith('$'))continue;var _10=_2[_9];if(_10===_8)continue;if(isc.isA.Function(_10)&&!_10.iscAction)continue;var _11=_9.toString();var _12={objRefs:_4,objPath:isc.JSONEncoder.$zp(_3,_9),isRoot:false};_7=isc.StringBuffer.concat(_7,(_5!=null?isc.StringBuffer.concat("\r",_5,"\t"):""),isc.Comm.$ew(_11,_10,(_5!=null?isc.StringBuffer.concat(_5,"\t"):null),_12))}
+_7=isc.StringBuffer.concat(_7,(_5!=null?isc.StringBuffer.concat("\r",_5):""),isc.Comm.$36v(_1));return _7}
+,isc.A.$36x=function isc_c_Comm__getPrefix(_1,_2){if(_1[_2]!=null){return _1[_2]}else{if(_1.$36y==null)_1.$36y=0;return(_1[_2]="ns"+_1.$36y++)}}
+,isc.A.$36u=function isc_c_Comm__xmlOpenTag(_1,_2,_3,_4,_5,_6){var _7=isc.SB.create();var _8=_3!=null;if(_3!=null&&isc.isAn.Object(_4)){_8=false;_4=this.$36x(_4,_3)}
+var _9='';if(!this.$36w(_1)){_9=' _isc_name="'+isc.makeXMLSafe(_1)+'"';_1="Object"}
+if(_3){_4=_4||"schNS";_7.append("<",_4,":",_1);if(_8)_7.append(" xmlns:",_4,"=\"",_3,"\"")}else{_7.append("<",_1)}
+if(_9)_7.append(_9);if(_6&&!this.omitXSI){_7.append(" xmlns:xsi=\"http://www.w3.org/2000/10/XMLSchema-instance\"")}
+if(_2&&!this.omitXSI){_7.append(" xsi:type=\"xsd:",isc.makeXMLSafe(_2),"\"")}
+if(!_5)_7.append(">");return _7.toString()}
+,isc.A.$36v=function isc_c_Comm__xmlCloseTag(_1,_2,_3){if(_2!=null&&isc.isAn.Object(_3)){_3=this.$36x(_3,_2)}
+if(!this.$36w(_1))_1="Object";if(_2){_3=_3||"schNS";return isc.SB.concat("</",_3,":",_1,">")}else{return isc.SB.concat("</",_1,">")}}
+,isc.A.$ex=function isc_c_Comm__xmlValue(_1,_2,_3,_4,_5){if(_3=="base64Binary"){_2="<xop:Include xmlns:xop=\"http://www.w3.org/2004/08/xop/include\" href=\""+_2+"\"/>"}
+if(_3=="nil"){return isc.Comm.$36u(_1,null,_4,_5,true)+" xsi:nil=\"true\"/>"}
+return isc.StringBuffer.concat(isc.Comm.$36u(_1,_3,_4,_5),_2,isc.Comm.$36v(_1,_4,_5))}
+);isc.B._maxIndex=isc.C+9;isc.defineClass("XMLDoc").addMethods({addPropertiesOnCreate:false,init:function(_1,_2){this.nativeDoc=_1;this.namespaces=_2;this.documentElement=this.nativeDoc.documentElement},hasParseError:function(){if(isc.Browser.isIE){var _1=this.nativeDoc.parseError;return _1!=null&&_1!=0}
+return this.nativeDoc.documentElement&&this.nativeDoc.documentElement.tagName=="parsererror"},addNamespaces:function(_1){this.namespaces=this.$363(_1);if(this.$364){var _2=isc.xml.xmlResponses.find("ID",this.$364);if(_2)_2.xmlNamespaces=this.namespaces}},$363:function(_1){if(_1==null)return this.namespaces;if(this.namespaces==null)return _1;return isc.addProperties({},this.namespaces,_1)},selectNodes:function(_1,_2,_3){return isc.xml.selectNodes(this.nativeDoc,_1,this.$363(_2),_3)},selectString:function(_1,_2){return isc.xml.selectString(this.nativeDoc,_1,this.$363(_2))},selectNumber:function(_1,_2){return isc.xml.selectNumber(this.nativeDoc,_1,this.$363(_2))},selectScalar:function(_1,_2,_3){return isc.xml.selectScalar(this.nativeDoc,_1,this.$363(_2),_3)},selectScalarList:function(_1,_2){return isc.xml.selectScalarList(this.nativeDoc,_1,this.$363(_2))},getElementById:function(_1){return this.nativeDoc.getElementById(_1)},getElementsByTagName:function(_1){return this.nativeDoc.getElementsByTagName(_1)}});isc.XMLDoc.getPrototype().toString=function(){return"[XMLDoc <"+this.documentElement.tagName+">]"};isc.defineClass("XMLTools").addClassProperties({httpProxyURL:"[ISOMORPHIC]/HttpProxy"});isc.A=isc.XMLTools;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.xmlResponses=[];isc.A.$365=0;isc.A.xmlDOMConstructors=["MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];isc.A.mozAnchorBug=isc.Browser.isMoz&&(isc.Browser.geckoVersion<20080205)&&window.location.href.indexOf("#")!=-1;isc.A.$pa="*";isc.A.$366=":";isc.A.$27c="List";isc.A.$45s="xmlToJS";isc.A.$45t="type";isc.A.$367="xsi:type";isc.A.$71v="ref";isc.A.$gy="number";isc.A.$71f="xmlns:";isc.A.$45u={nil:"xsi:nil","null":"xsi:null",type:"xsi:type"};isc.A.xsiNamespaces=["http://www.w3.org/2001/XMLSchema-instance","http://www.w3.org/1999/XMLSchema-instance"];isc.A.$45v="nil";isc.A.$45w="null";isc.A.$18r="false";isc.A.$w0="0";isc.A.$ho="[";isc.A.useClientXML=true;isc.B.push(isc.A.loadXML=function isc_c_XMLTools_loadXML(_1,_2,_3){_3=_3||{};_3.operationType=_3.operationType||"loadXML";this.getXMLResponse(isc.addProperties({actionURL:_1,httpMethod:"GET",callback:_2},_3))}
+,isc.A.getXMLResponse=function isc_c_XMLTools_getXMLResponse(_1){_1.$37b=_1.callback;_1.callback={target:this,methodName:"$37c"};_1.httpMethod=_1.httpMethod||"POST";this.logInfo("loading XML from: "+_1.actionURL,"xmlComm");isc.rpc.sendProxied(_1)}
+,isc.A.$37c=function isc_c_XMLTools__getXMLResponseReply(_1,_2,_3){if(_1.isStructured&&!_3.isRestRequest){this.fireCallback(_3.$37b,"xmlDoc,xmlText,rpcResponse,rpcRequest",[null,null,_1,_3]);return}
+var _4=_3.isRestRequest?_1.results:_1.httpResponseText,_5=this.parseXML(_4);if(this.logIsInfoEnabled("xmlComm")){this.logInfo("XML reply with text: "+(this.logIsDebugEnabled("xmlComm")?_4:this.echoLeaf(_4)),"xmlComm")}
+var _6=this.xmlResponses;var _7=isc.Log.logViewer;if(this.logIsDebugEnabled("xmlComm")||(isc.Page.isLoaded()&&_7&&_7.logWindowLoaded()))
+{var _8=this.$365++;_6.add({ID:_8,text:_4});if(_5)_5.$364=_8;if(_6.length>10)_6.shift();if(_7&&_7.logWindowLoaded()&&_7._logWindow!=null){_7._logWindow.updateCommWatcher()}}else{_6.length=0}
+this.fireCallback(_3.$37b,"xmlDoc,xmlText,rpcResponse,rpcRequest",[_5,_4,_1,_3])}
+,isc.A.parseXML=function isc_c_XMLTools_parseXML(_1,_2){if(_1==null)return;_1=this.trimXMLStart(_1);var _3;if(!isc.Browser.isIE){try{if((this.mozAnchorBug||this.useAnchorWorkaround)&&this.useAnchorWorkaround!==false)
+{var _4="<IFRAME STYLE='position:absolute;visibility:hidden;top:-1000px'"+" ID='isc_parseXMLFrame'></IFRAME>";if(!isc.Page.isLoaded()){document.write(_4)}else{isc.Element.insertAdjacentHTML(document.getElementsByTagName("body")[0],"beforeEnd",_4)}
+var _5=document.getElementById("isc_parseXMLFrame");var _6=_5.contentWindow;window.isc.xmlSource=_1;_6.location.href="javascript:top.isc.parsedXML="+"new top.isc.XMLTools.getXMLParser().parseFromString(top.isc.xmlSource, 'text/xml')";_3=window.isc.parsedXML;isc.xmlSource=isc.parsedXML=null;_5.parentNode.removeChild(_5)}else{_3=this.getXMLParser().parseFromString(_1,"text/xml")}}catch(e){if(!_2)this.$37d(this.echo(e));return null}
+if(!_2&&_3.documentElement&&_3.documentElement.tagName=="parsererror")
+{this.$37d(_3.documentElement.textContent);return null}
+return isc.XMLDoc.create(_3)}
+_3=this.getXMLParser();if(!_3){this.$37a("XMLTools.parseXML()");return}
+_3.loadXML(_1);if(_3.parseError!=0){var _7=_3.parseError;if(!_2){this.$37d("\rReason: "+_7.reason+"Line number: "+_7.line+", character: "+_7.linepos+"\rLine contents: "+_7.srcText+(!isc.isA.emptyString(_7.url)?"\rSource URL: "+_7.url:""))}
+return null}
+return isc.XMLDoc.create(_3)}
+,isc.A.trimXMLStart=function isc_c_XMLTools_trimXMLStart(_1){if(_1.indexOf("<?xml")!=-1)
+{var _2=_1.match(new RegExp("^\\s*<\\?[^?]*\\?>"));if(_2){_1=_1.substring(_2[0].length)}}
+if(isc.Browser.isIE&&_1.indexOf("<!DOCTYPE")!=-1){var _2=_1.match(new RegExp("^\\s*<!DOCTYPE .*>"));if(_2){_1=_1.substring(_2[0].length)}}
+return _1}
+,isc.A.$37d=function isc_c_XMLTools__logParseError(_1,_2){this.logWarn("Error parsing XML: "+_1+(this.logIsDebugEnabled("parseXML")?"\rXML was:\r"+_2+"\rTrace:"+this.getStackTrace():""),"parseXML")}
+,isc.A.getXMLParser=function isc_c_XMLTools_getXMLParser(){if(!isc.Browser.isIE){if(!this.$37e)this.$37e=new DOMParser();return this.$37e}
+var _1;if(this.$37f){_1=new ActiveXObject(this.$37f)}else{for(var i=0;i<this.xmlDOMConstructors.length;i++){try{var _3=this.xmlDOMConstructors[i];_1=new ActiveXObject(_3);if(_1){this.logInfo("Using XML DOM constructor: "+_3);this.$37f=_3;break}}catch(e){}}
+if(!_1){this.logWarn("Couldn't create XML DOM parser - tried the following"+" constructors: "+this.echoAll(this.xmlDOMConstructors))}}
+return _1}
+,isc.A.nativeXMLAvailable=function isc_c_XMLTools_nativeXMLAvailable(){if(isc.Browser.isSafari&&!isc.Browser.isApollo&&(isc.Browser.safariVersion<522))
+return false;return this.$37e!=null||this.getXMLParser()!=null}
+,isc.A.$37a=function isc_c_XMLTools__warnIfNativeXMLUnavailable(_1){if(this.nativeXMLAvailable()||!this.logIsWarnEnabled())return false;var _2="Feature "+_1+" requires a native XML parser which is "+"not available ";if(isc.Browser.isSafari){_2+="because this version of Safari does not support native XML processing."}else{_2+="because ActiveX is currently disabled."}
+_2+=" Please see the 'Features requiring ActiveX or Native support'"+" topic in the client-side reference under Client Reference/System"+" for more information";this.logWarn(_2);return true}
+,isc.A.serverToJS=function isc_c_XMLTools_serverToJS(_1,_2,_3){isc.DMI.callBuiltin({methodName:"xmlToJS",callback:_2,arguments:_1,requestParams:{evalVars:_3,evalResult:true}})}
+,isc.A.toJSCode=function isc_c_XMLTools_toJSCode(_1,_2){isc.DMI.callBuiltin("xmlToJS",_1,_2)}
+,isc.A.elementToObject=function isc_c_XMLTools_elementToObject(_1){if(_1==null)return null;var _2=this.getAttributes(_1);var _3=_1.getElementsByTagName(this.$pa);for(var i=0;i<_3.length;i++){var _5=_3[i];_2[_5.tagName]=this.getElementText(_5)}
+return _2}
+,isc.A.getLocalName=function isc_c_XMLTools_getLocalName(_1){if(!isc.Browser.isIE){var _2=_1.localName;if(_2==null)return _1.nodeName;return _2}
+var _3=_1.nodeName,_4=_3.indexOf(this.$366);if(_4!=-1)return _3.substring(_4+1);return _3}
+,isc.A.toJS=function isc_c_XMLTools_toJS(_1,_2,_3,_4,_5){if(_1==null)return null;if(isc.isAn.XMLDoc(_1))_1=_1.nativeDoc;if(_1.documentElement)_1=_1.documentElement;_5=_5||isc.emptyObject;if(isc.isAn.Array(_1)){var _6=[];for(var i=0;i<_1.length;i++){_6[i]=this.toJS(_1[i],_2,_3,_4,_5)}
+return _6}
+var _8,_9;var _10=this.getExplicitType(_1,_4);if(_4||!_3||(_3&&isc.DS.get(_10)==null)){if(_4){var _11=this.isRefElement(_1);if(_11)
+{var _12=isc.Canvas.getById(_11);if(_12!=null)return _12}
+var _13=this.firstElementChild(_1),_11=_13?this.isRefElement(_13):null;if(_11&&this.getElementChildren(_1).length==1)
+{var _12=isc.Canvas.getById(_11);if(_12!=null)return _12}
+if(!_10){var _14=_1.tagName;if(_14==this.$27c||isc.DS.get(_14))_10=_1.tagName}}
+if(_10!=null&&_10==this.$27c){var _15=this.getElementChildren(_1);return this.toJS(_15,_2,_3,_4,_5)}
+if(_10){if(isc.DS.get(_10)!=null){_3=isc.DS.get(_10)}else if(isc.SimpleType.getType(_10)!=null){return isc.SimpleType.validateValue(_10,this.getElementText(_1))}}}
+if(_3&&_3.xmlToJS)return _3.xmlToJS(_1,_5);if(this.elementIsNil(_1))return null;if(_3){_9=_2||_3.getFieldNames();_8={};for(var i=0;i<_9.length;i++){var _16=_9[i],_17=_3.getField(_16);if(_17==null||(_17.valueXPath==null&&_17.getFieldValue==null))continue;var _18=_3.getFieldValue(_1,_16,_17);if(_18!=null){if(this.logIsDebugEnabled(this.$45s)){this.logDebug("valueXPath / getFieldValue() field: "+_3.ID+"."+_16+" on element: "+this.echoLeaf(_1)+" got value: "+_18,"xmlToJS")}
+_8[_16]=_18}}}
+_8=this.getAttributes(_1,_2,_8,_3!=null,_3);if(!this.$37g(_8)&&!this.hasElementChildren(_1))
+{return this.getElementText(_1)}
+if(_8[this.$367]&&_8[this.$367]=="xsd:Object"){delete _8[this.$367]}
+var _15=_1.childNodes;if(this.logIsDebugEnabled(this.$45s)){this.logDebug("using DataSource: "+_3+" for complex element: "+this.echoLeaf(_1)+" childNodes: "+this.echoLeaf(_15)+" has attributes: "+this.$37g(_8),"xmlToJS")}
+var _19=false;for(var i=0;i<_15.length;i++){var _20=_15[i];var _21=this.getLocalName(_20);if(this.isTextNode(_20))continue;_19=true;if(_2&&!_2.contains(_21))continue;var _17=_3?_3.getField(_21):null;if(_17&&(_17.valueXPath||_17.getFieldValue))continue;var _22;if(this.logIsInfoEnabled(this.$45s)){this.logInfo("dataSource: "+_3+", field: "+this.echoLeaf(_17)+(_17!=null?" type: "+_17.type:"")+", XML element: "+this.echoLeaf(_20),"xmlToJS")}
+var _23=_20;if(_17&&_17.multiple){var _24=this.getElementChildren(_20);if(_24.length>0)_23=_24}
+if(!_3||_17==null||_17.type==null){if(this.logIsDebugEnabled(this.$45s)){this.logDebug("applying schemaless transform at: "+(_3?_3.ID:"[schemaless]")+"."+_21,"xmlToJS")}
+_22=this.toJS(_23,null,null,_4,_5)}else{var _25=_3.getSchema(_17.type);if(_25!=null){var _26=_17.propertiesOnly?{propertiesOnly:true}:_5;_22=this.toJS(_23,null,_25,_4,_26);if(this.logIsDebugEnabled(this.$45s)){this.logDebug("complexType field: "+this.echoLeaf(_17)+" got value: "+this.echoLeaf(_22),"xmlToJS")}}else{if(isc.isAn.Array(_23)){_22=[];for(var j=0;j<_23.length;j++){_22.add(_3.validateFieldValue(_17,this.getElementText(_23[j])))}}else{_22=_3.validateFieldValue(_17,this.getElementText(_23))}
+if(this.logIsDebugEnabled(this.$45s)){this.logDebug("simpleType field: "+this.echoLeaf(_17)+" got value: "+this.echoLeaf(_22),"xmlToJS")}}}
+if(_17&&_17.multiple){if(_22==null||isc.isA.emptyString(_22))_22=[];else if(!isc.isAn.Array(_22))_22=[_22]}
+if(_8[_21]){if(!isc.isAn.Array(_8[_21]))_8[_21]=[_8[_21]];if(_17&&_17.multiple&&isc.isAn.Array(_22)){_8[_21].addList(_22)}else{_8[_21].add(_22)}}else{_8[_21]=_22}}
+if(!_19){var _28=this.getElementText(_1),_29=_5.textContentProperty||(_3?_3.textContentProperty:"xmlTextContent");if(_3){_17=_3.getTextContentField();if(_17)_28=_3.validateFieldValue(_17,_28)}
+if(_28!=null&&!isc.isAn.emptyString(_28)){_8[_29]=_28}}
+if(_4&&_3&&(_3.instanceConstructor||_3.Constructor)){var _30=_3.instanceConstructor||_3.Constructor;if(_5!=null&&_5.propertiesOnly){_8._constructor=_30}else if(isc.ClassFactory.getClass(_30)!=null){return isc.ClassFactory.newInstance(_30,_8)}}
+return _8}
+,isc.A.getExplicitType=function isc_c_XMLTools_getExplicitType(_1,_2){if(_1==null||this.isTextNode(_1))return;var _3=this.getXSIAttribute(_1,this.$45t);if(_3){if(_3.contains(isc.colon))_3=_3.substring(_3.indexOf(isc.colon)+1);return _3}
+if(_2)_3=_1.getAttribute("constructor");return _3}
+,isc.A.isRefElement=function isc_c_XMLTools_isRefElement(_1){if(_1==null||this.isTextNode(_1)){return false}
+var _2=_1.getAttribute(this.$71v);if(_2&&_1.attributes.length==1&&!this.hasElementChildren(_1))return _2}
+,isc.A.toComponents=function isc_c_XMLTools_toComponents(_1,_2){if(isc.DS.get("Canvas")==null){this.logWarn("Can't find schema for Canvas - make sure you've loaded"+" component schema via <isomorphic:loadSystemSchema/> jsp tag"+" or by some other mechanism")}
+if(isc.isA.String(_1)){var _3=this.parseXML(_1,true);if(_3.hasParseError()){this.logWarn("xml failed to parse xmlDoc, wrapping in root node");_3=this.parseXML("<isomorphicXML>"+_1+"</isomorphicXML>")}
+_1=_3}
+return this.toJS(_1,null,null,true,_2)}
+,isc.A.getFieldValue=function isc_c_XMLTools_getFieldValue(_1,_2,_3,_4,_5){if(_1.ownerDocument==null)return _1[_2];_3=_3||(_4?_4.getField(_2):isc.emptyObject);try{var _6;if(_3.valueXPath){var _7=(_4?_4.getSchema(_3.type):isc.DS.get(_3.type));if(_7){var _8=isc.xml.selectNodes(_1,_3.valueXPath,_5),_9=isc.xml.toJS(_8,null,_7);if(!_3.multiple&&_9.length==1)_9=_9[0];return _9}else{_6=isc.xml.selectScalar(_1,_3.valueXPath,_5)}}else{_6=isc.xml.getXMLFieldValue(_1,_2)}
+_4=_4||isc.DS.get("Object");_6=_4.validateFieldValue(_3,_6);return _6}catch(e){this.logWarn("error getting value for field: '"+_2+(_3.valueXPath?"', valueXPath: '"+_3.valueXPath:"")+"' in record: "+this.echo(_1)+"\r: "+this.echo(e)+this.getStackTrace());return null}}
+,isc.A.getXMLFieldValue=function isc_c_XMLTools_getXMLFieldValue(_1,_2){var _3=_1.getAttribute(_2);if(_3!=null)return _3;var _4=_1.getElementsByTagName(_2)[0];if(_4==null)return null;return(isc.Browser.isIE?_4.text:_4.textContent)}
+,isc.A.$37g=function isc_c_XMLTools__hasDataAttributes(_1){for(var _2 in _1){if(_2==this.$367)continue;return true}
+return false}
+,isc.A.getAttributes=function isc_c_XMLTools_getAttributes(_1,_2,_3,_4,_5){_3=_3||{};var _6;if(_2){if(!isc.isAn.Array(_2))_2=[_2];for(var i=0;i<_2.length;i++){var _8=_2[i];if(_4&&_3[_8]!==_6)continue;var _9=_1.getAttribute(_8);if(_9==null||isc.isAn.emptyString(_9))continue;if(_5&&_5.getField(_8)){_9=_5.validateFieldValue(_5.getField(_8),_9)}
+_3[_8]=_9}
+return _3}
+var _10=_1.attributes;if(_10!=null){for(var i=0;i<_10.length;i++){var _11=_10[i],_8=_11.name;if(_4&&_3[_8]!==_6)continue;if(isc.startsWith(_8,this.$71f)&&_5&&_5.dropNamespaceDeclarations)continue;var _9=_11.value;if(_9==null||isc.isAn.emptyString(_9))continue;if(_5&&_5.getField(_8)){_9=_5.validateFieldValue(_5.getField(_8),_9)}
+_3[_8]=_9}}
+return _3}
+,isc.A.getXSIAttribute=function isc_c_XMLTools_getXSIAttribute(_1,_2){var _3;if(isc.Browser.isOpera){for(var i=0;i<this.xsiNamespaces.length;i++){_3=_1.getAttributeNS(this.xsiNamespaces[i],_2);if(_3!=null)return _3}
+return _3}
+return _1.getAttribute(this.$45u[_2])}
+,isc.A.elementIsNil=function isc_c_XMLTools_elementIsNil(_1){if(_1==null||!isc.isA.XMLNode(_1)||_1.nodeType!=1)return false;var _2=this.getXSIAttribute(_1,this.$45v);if(_2&&_2!=this.$18r&&_2!=this.$w0)return true;var _2=this.getXSIAttribute(_1,this.$45w);if(_2&&_2!=this.$18r&&_2!=this.$w0)return true;return false}
+,isc.A.getElementText=function isc_c_XMLTools_getElementText(_1){if(this.elementIsNil(_1))return null;if(!_1)return null;var _2=_1.firstChild;if(!_2)return isc.emptyString;var _3=_2.data;if(isc.Browser.isMoz&&_3!=null&&_3.length>4000)return _1.textContent;return _3}
+,isc.A.isTextNode=function isc_c_XMLTools_isTextNode(_1){if(_1==null)return false;var _2=_1.nodeType;return(_2==3||_2==4||_2==8)}
+,isc.A.hasElementChildren=function isc_c_XMLTools_hasElementChildren(_1){return this.firstElementChild(_1)!=null}
+,isc.A.firstElementChild=function isc_c_XMLTools_firstElementChild(_1){if(_1==null||(_1.hasChildNodes!=null&&_1.hasChildNodes()==false))return null;var _2=_1.childNodes;if(!_2)return null;var _3=_2.length;for(var i=0;i<_3;i++){var _5=_2[i];if(!this.isTextNode(_5))return _5}
+return null}
+,isc.A.setAttributes=function isc_c_XMLTools_setAttributes(_1,_2){var _3;for(var _4 in _2){var _5=_2[_4];if(_5==null){_1.removeAttribute(_4);continue}
+if(isc.Browser.isIE&&(_5===true||_5===false)){_5=isc.emptyString+_5}
+_1.setAttribute(_4,_2[_4])}}
+,isc.A.$37h=function isc_c_XMLTools__makeIEDefaultNamespaces(_1,_2){var _3=isc.SB.create(),_4=_1.documentElement,_2=_2||isc.emptyObject,_5;if(!_2["default"]){_5=this.$45x(_4);if(_5)_3.append('xmlns:default="',_5,'" ')}
+var _6=_1.documentElement.attributes;for(var i=0;i<_6.length;i++){var _8=_6[i],_9=_8.prefix;if(_9=="xmlns"&&_9!=_8.name){if(_2[_8.baseName]!=null)continue;_3.append(_8.name,'="',_8.value,'" ')}}
+return _3.toString()}
+,isc.A.$45x=function isc_c_XMLTools__deriveDefaultNamespace(_1){var _2=this.logIsDebugEnabled("xmlSelect");if((_1.prefix==null||isc.isAn.emptyString(_1.prefix))&&_1.namespaceURI)
+{if(_2){this.logWarn("using docElement ns, prefix: "+_1.prefix,"xmlSelect")}
+return _1.namespaceURI}else if(_1.firstChild){var _3
+for(var i=0;i<_1.childNodes.length;i++){var _5=_1.childNodes[i];if(_5.nodeType==3)continue;var _6=_5.namespaceURI;if(!_6)break;if(_5.prefix==null||isc.isAn.emptyString(_5.prefix)){_3=_5.namespaceURI;break}}
+if(_3!=null){if(_2){this.logDebug("using default namespace detected on child: "+_3,"xmlSelect")}}
+if(_3==null&&_1.namespaceURI){_3=_1.namespaceURI;if(_2){this.logDebug("using document element's namespace as default namespace: "+_3,"xmlSelect")}}
+if(!_3)_3="http://openuri.org/defaultNamespace";return _3}}
+,isc.A.selectObjects=function isc_c_XMLTools_selectObjects(_1,_2,_3){if(isc.contains("|")){var _4=_2.split(/|/),_5=[];for(var i=0;i<_4.length;i++){_5.addList(this.selectObjects(_4[i],_1))}
+return _5}
+var _7=isc.isAn.Array(_1)?_1:[_1];if(_2!=isc.slash){if(isc.startsWith(_2,isc.slash))_2=_2.substring(1);var _8=_2.split(/[\/@]/);_7=this.$37i(_8,_7,isc.slash)}
+if(_3&&_7.length<=1)return _7[0];return _7}
+,isc.A.$37i=function isc_c_XMLTools__selectObjects(_1,_2,_3){var _4=_1[0];_1=_1.length>1?_1.slice(1):null;if(_2==null)return null;var _5,_6=_4,_7=_4.indexOf(this.$ho);if(_7!=-1){_6=_4.substring(0,_7);_5=_4.substring(_7+1,_4.length-1)}
+var _8=[];for(var i=0;i<_2.length;i++){var _10=_2[i];if(_6!=isc.star){_10=_10[_6]}else{var _11=isc.getValues(_10);_10=[];for(var i=0;i<_11.length;i++){if(!isc.isAn.Array(_11[i]))_10.add(_11[i]);else _10.addList(_11[i])}}
+if(_10==null)continue;if(!isc.isAn.Array(_10)){_8.add(_10)}else{_8.addList(_10)}}
+if(_5){var _12=this.$37j(_8,_5);_8=_12}
+if(_1==null||_1.length==0)return _8;_3+=_4+isc.slash;return this.$37i(_1,_8,_3)}
+,isc.A.$37j=function isc_c_XMLTools__applyPredicateExpression(_1,_2){var _3=parseInt(_2);if(!isNaN(_3)){return[_1[_3-1]]}
+if(_2=="last()")return[_1.last()];var _4=_2.match(/^([a-zA-Z_0-9:\-\.\(\)]*)\s*(<|>|!=|=|<=|>=|)\s*(.*)$/),_5,_6,_7;if(_4==null){if(!_2.match(/^[a-zA-Z_0-9:\-\.]*$/)){this.logWarn("couldn't parse predicate expression: "+_2);return null}
+_5=_2}else{_5=_4[1],_6=_4[2],_7=_4[3]}
+if(_6=="=")_6="==";if(_7=="true()")_7=true;else if(_7=="false()")_7=false;if(_5=="position()")_5="position";var _8=new Function("item,position","return "+(_5!="position"?"item.":"")+_5+(_6?_6+_7:""));var _9=[];for(var i=0;i<_1.length;i++){if(_8(_1[i],i+1))_9.add(_1[i])}
+return _9}
+,isc.A.selectNodes=function isc_c_XMLTools_selectNodes(_1,_2,_3,_4){if(isc.isA.String(_1)){_1=this.parseXML(_1)}
+if(isc.Browser.isSafari&&(isc.Browser.isApollo||(isc.Browser.safariVersion<522)))
+{this.$37a("XPath");return this.safariSelectNodes(_1,_2,_3,_4)}
+if(isc.isAn.XMLDoc(_1)){return _1.selectNodes(_2,_3,_4)}
+var _5=isc.timestamp();var _6=this.$37k(_1,_2,_3,_4);var _7=isc.timestamp();if(this.logIsInfoEnabled("xmlSelect")){this.logInfo("selectNodes: expression: "+_2+" returned "+this.echoLeaf(_6)+": "+(_7-_5)+"ms","xmlSelect")}
+return _6}
+,isc.A.safariSelectNodes=function isc_c_XMLTools_safariSelectNodes(_1,_2,_3,_4){var _5=[];if(!_2){return null}
+var _6=_2.substring(_2.indexOf(":")+1);var _7;if(_6.endsWith("/*")){_7=true;_6=_6.substring(0,_6.indexOf("/*"))}
+var _8=_1.getElementsByTagName(_6);if(_7&&_8.length>0){var _9=_8[0];_8=_9.childNodes}
+for(var i=0;i<_8.length;i++){if(_8[i].nodeType==3)continue;_5.add(_8[i])}
+if(_7&&_5.length==1)_5=_5[0];return _5}
+,isc.A.$37l=function isc_c_XMLTools__generateNamespaces(_1,_2,_3){if(_1==null)return isc.emptyString;if(_2==null)_2=isc.getKeys(_1);var _4=isc.SB.create(),_3=(_3!=null?"\n"+_3:"");for(var i=0;i<_2.length;i++){var _6=_2[i];_4.append(_3," xmlns:",_6,'="',_1[_6],'"')}
+return _4.toString()}
+,isc.A.$53z=function isc_c_XMLTools__getDefaultNamespace(_1){var _2=_1.lookupNamespaceURI("");if(isc.Browser.isSafari&&(_2==null||_2=="")){_2=_1.getAttribute("xmlns")}
+if(_2==null)_2=_1.namespaceURI;if(_2==null)_2="";return _2}
+,isc.A.$37k=function isc_c_XMLTools__selectNodes(_1,_2,_3,_4){if(_1==null)return;var _5=_1.ownerDocument;if(_5==null&&_1.documentElement){_5=_1;_1=_5.documentElement}
+if(_5==null)return null;if(isc.Browser.isIE){if(isc.Browser.version>5.5){_5.setProperty("SelectionLanguage","XPath");var _6=this.$37h(_5,_3);if(_3)_6+=this.$37l(_3);if(this.logIsDebugEnabled("xmlSelect")){this.logDebug("selectNodes: expression: "+_2+", using namespaces: "+_6,"xmlSelect")}
+_5.setProperty("SelectionNamespaces",_6)}
+if(_4)return _1.selectSingleNode(_2);var _7=_1.selectNodes(_2);return this.$37m(_7)}
+var _8=_5.createNSResolver(_5.documentElement),_9=this.$53z(_5.documentElement);if(this.logIsDebugEnabled("xmlSelect")){this.logDebug("Using namespaces: "+isc.echo(_3)+", defaultNamespace: '"+_9+"'","xmlSelect")}
+var _10=function(_12){if(_3&&_3[_12])return _3[_12];if(_12=="default")return _9;return _8.lookupNamespaceURI(_12)};var _11=_5.evaluate(_2,_1,_10,0,null);if(_4)return _11.iterateNext();return this.$37m(_11)}
+,isc.A.$37m=function isc_c_XMLTools__nodeListToArray(_1){var _2=[];if(isc.Browser.isIE||_1.iterateNext==null){for(var i=0;i<_1.length;i++){_2.add(_1.item(i))}}else{var _4;while(_4=_1.iterateNext()){_2.add(_4)}}
+return _2}
+,isc.A.getElementChildren=function isc_c_XMLTools_getElementChildren(_1){var _2=[],_3=_1.childNodes;for(var i=0;i<_3.length;i++){var _5=_3[i];if(this.isTextNode(_5))continue;_2.add(_5)}
+return _2}
+,isc.A.selectString=function isc_c_XMLTools_selectString(_1,_2,_3){return this.selectScalar(_1,_2,_3)}
+,isc.A.selectNumber=function isc_c_XMLTools_selectNumber(_1,_2,_3){return this.selectScalar(_1,_2,_3,true)}
+,isc.A.selectScalar=function isc_c_XMLTools_selectScalar(_1,_2,_3,_4){if(isc.isA.String(_1))_1=this.parseXML(_1);if(isc.isAn.XMLDoc(_1))return _1.selectScalar(_2,_3,_4);var _5;if(isc.Browser.isSafari&&isc.Browser.isApollo||(isc.Browser.safariVersion<522)){var _6=_2.substring(_2.indexOf(":")+1);_5=_1.getElementsByTagName(_6)[0]}else{_5=this.selectNodes(_1,_2,_3,true)}
+if(_5==null)return null;var _7=this.getElementText(_5);return _4?parseInt(_7):_7}
+,isc.A.selectScalarList=function isc_c_XMLTools_selectScalarList(_1,_2,_3){if(isc.isA.String(_1))_1=this.parseXML(_1);if(isc.isAn.XMLDoc(_1))return _1.selectScalarList(_2,_3);var _4=this.selectNodes(_1,_2,_3);for(var i=0;i<_4.length;i++){_4[i]=_4[i].nodeValue}
+return _4}
+,isc.A.transformNodes=function isc_c_XMLTools_transformNodes(_1,_2){if(isc.isAn.XMLDoc(_1))_1=_1.nativeDoc;if(isc.isAn.XMLDoc(_2))_2=_2.nativeDoc;if(isc.Browser.isIE){return _1.transformNode(_2)}
+var _3=new XSLTProcessor();_3.importStylesheet(_2);if(isc.Browser.isMoz&&this.mozAnchorBug&&isc.Browser.geckoVersion<20051107){var _4=document.implementation.createDocument("","test",null);var _5=_3.transformToFragment(_1,_4);return new XMLSerializer().serializeToString(_5)}
+if(_1){var _6=_3.transformToDocument(_1);return new XMLSerializer().serializeToString(_6)}
+return null}
+,isc.A.serializeToString=function isc_c_XMLTools_serializeToString(_1){this.$37n=this.$37n||isc.xml.parseXML('<xsl:stylesheet version=\'1.0\' xmlns:xsl=\'http://www.w3.org/1999/XSL/Transform\'>\r'+'<xsl:output method="xml" indent="yes"/>\r'+'<xsl:strip-space elements="*"/>\r'+'<xsl:template match="/">\r'+' <xsl:copy-of select="."/>\r'+'</xsl:template>\r'+'</xsl:stylesheet>');return this.transformNodes(_1,this.$37n)}
+,isc.A.loadXMLSchema=function isc_c_XMLTools_loadXMLSchema(_1,_2,_3,_4,_5){_3=_3||{};_3.operationType=_3.operationType||"loadXMLSchema";this.loadWSDL(_1,_2,_3,_4,_5,true)}
+,isc.A.loadWSDL=function isc_c_XMLTools_loadWSDL(_1,_2,_3,_4,_5,_6){if(!this.$37o){var _7=isc.Page.getIsomorphicClientDir()+"schema/schemaTranslator.xsl";_7=_7.replace(/https?:\/\/[^\/]*\//,"/");this.$37o="LOADING";isc.xml.loadXML(_7,function(_9,_10,_11){isc.xml.logDebug("schema translator loaded");if(isc.Browser.isMoz&&_11.xmlHttpRequest&&_11.xmlHttpRequest.responseXML)
+{isc.xml.$37o=isc.XMLDoc.create(_11.xmlHttpRequest.responseXML)}else{isc.xml.$37o=_9}
+isc.xml.loadWSDL(_1,_2,_3,_4,_5,_6)});return}
+_3=_3||{};_3.operationType=_3.operationType||"loadWSDL";var _8={location:_1,callback:_2,autoLoadImports:_4,wsProperties:_5||{},returnSchemaSet:_6};isc.xml.loadXML(_1,function(_9,_10,_11,_12){_8.rpcResponse=_11;_8.rpcRequest=_12;isc.xml.$37p(_9,_8)},_3)}
+,isc.A.loadWSDLFromXML=function isc_c_XMLTools_loadWSDLFromXML(_1,_2,_3,_4,_5){if(isc.isA.String(_1))_1=isc.xml.parseXML(_1);this.$37p(_1,{callback:_2,autoLoadImports:_3,wsProperties:_4,returnSchemaSet:_5})}
+,isc.A.$37p=function isc_c_XMLTools__loadSchemaReply(_1,_2){if(!isc.isAn.XMLDoc(this.$37o)){this.logInfo("deferred schema translator, schema translator not loaded","xmlComm");isc.Timer.setTimeout({methodName:"$37p",target:this,args:[_1,_2]});return}
+this.logInfo("transforming schema: "+this.echoLeaf(_1)+" with translator "+this.echoLeaf(this.$37o),"xmlComm");var _3=this.transformNodes(_1,this.$37o);if(this.logIsDebugEnabled("xmlComm")){this.logWarn("XML service definition is: \n"+_3)}
+var _4=_2.wsProperties,_5=_4.initiator;if(_4.captureXML){_4.xmlSource=_3;if(_5)_5.addImportXMLSource(_3,_2.location)}
+if(this.useClientXML){var _1=isc.xml.parseXML(_3),_6=_1?this.$37m(_1.documentElement.childNodes):null,_7=_6?this.toJS(_6,null,null,true):null;this.$37q(_2);return}
+this.logInfo("about to call serverToJS with: "+this.echoLeaf(_3)+", callback: "+this.echo(_2.callback),"xmlComm");this.serverToJS(_3,function(){isc.Log.logWarn("serverToJS returned");isc.xml.$37q(_2)})}
+,isc.A.$37q=function isc_c_XMLTools__loadSchemaToJSReply(_1){var _2;if(_1.returnSchemaSet){_2=isc.SchemaSet.$37r}else{_2=isc.WebService.$37r||isc.SchemaSet.$37r}
+isc.WebService.$37r=isc.SchemaSet.$37r=null;if(!_2&&_1.rpcRequest.willHandleError==false)return;if(_2)_2.location=_1.location;if(_2&&_1.wsProperties)_2.setProperties(_1.wsProperties);var _3=(isc.isA.WebService(_2)?"service":"schemaSet")+",rpcRequest";var _4=[_2,_1.rpcRequest];if(_1.autoLoadImports&&_2&&_2.loadImports){var _5=this;_2.loadImports(function(){_5.$41k(_1.callback,_3,_4)})}else{this.$41k(_1.callback,_3,_4)}}
+,isc.A.$41k=function isc_c_XMLTools__completeLoad(_1,_2,_3){this.fireCallback(_1,_2,_3)}
+,isc.A.getCompleteSource=function isc_c_XMLTools_getCompleteSource(_1,_2,_3){var _4=_1.importSources;if(!_4)return"";_4=_4.getProperty("xmlText");_4.unshift(_1.xmlSource);_4=this.map("trimXMLStart",_4);var _5=_4.join("\n");if(_3){this.fireCallback(_2,"source",[_5]);return}
+this.toJSCode(_5,function(_6,_7){this.fireCallback(_2,"source",[_7])})}
+);isc.B._maxIndex=isc.C+53;isc.xml=isc.XML=isc.XMLTools;isc.defineClass("DataSource");isc.DS=isc.DataSource;isc.A=isc.DataSource;isc.A.dataSourceObjectSuffix="DS";isc.A._dataSources={};isc.A.$54v={};isc.A.$54w={};isc.A.$532="element";isc.A.$45t="type";isc.A.TABLE="table";isc.A.VIEW="view";isc.A.loaderURL="[ISOMORPHIC]/DataSourceLoader";isc.A.$37t="<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' ";isc.A.$37w="</soap:Envelope>";isc.A.$37u="<soap:Header>";isc.A.$51y="</soap:Header>";isc.A.$37v="<soap:Body";isc.A.$51z="</soap:Body>";isc.A=isc.DataSource;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$748="ref:";isc.A.serializeTimeAsDatetime=false;isc.A.$78d=[];isc.A.maxResponsesToCache=100;isc.A.offlineMessage="This data not available while offline";isc.B.push(isc.A.isLoaded=function isc_c_DataSource_isLoaded(_1){if(!_1)return false;if(isc.isA.DataSource(_1)||this._dataSources[_1])return true;return false}
+,isc.A.getDataSource=function isc_c_DataSource_getDataSource(_1,_2,_3,_4){if(!_1)return null;if(isc.isA.DataSource(_1))return _1;if(isc.startsWith(_1,this.$748)){_1=_1.substring(4)}
+if(_4&&isc.WebService){if(_4==isc.DS.$532)return this.$54v[_1];if(_4==isc.DS.$45t)return this.$54w[_1];return null}
+var _5=this._dataSources[_1];if(!_5){_5=this.$37x(_1,_2);if(_5)_5.ID=_1}
+if(_5){if(_2){this.fireCallback(_2,"ds",[_5],_5)}
+return _5}
+if(_2){this.loadSchema(_1,_2,_3)}
+return null}
+,isc.A.loadSchema=function isc_c_DataSource_loadSchema(_1,_2,_3){this.logWarn("Attempt to load schema for DataSource '"+_1+"'. This dataSource cannot be found. To load DataSources from the server without "+"explicit inclusion in your application requires optional SmartClient server "+"support - not present in this build.");return null}
+,isc.A.get=function isc_c_DataSource_get(_1,_2,_3,_4){return this.getDataSource(_1,_2,_3,_4)}
+,isc.A.$37x=function isc_c_DataSource__loadDataSource(_1,_2){if(_2)return null;if(_1!=isc.auto&&this.logIsDebugEnabled()){this.logDebug("isc.DataSource '"+_1+"' not present")}
+return null}
+,isc.A.getRegisteredDataSources=function isc_c_DataSource_getRegisteredDataSources(){return isc.getKeys(this._dataSources)}
+,isc.A.isRegistered=function isc_c_DataSource_isRegistered(_1){if(this._dataSources[_1])return true;return false}
+,isc.A.getForeignFieldName=function isc_c_DataSource_getForeignFieldName(_1){var _2=_1.foreignKey,_3=_2.indexOf(".");if(_3==-1)return _2;return _2.substring(_3+1)}
+,isc.A.getForeignDSName=function isc_c_DataSource_getForeignDSName(_1,_2){var _3=_1.foreignKey,_4=_3.indexOf(".");if(_4==-1)return isc.isA.String(_2)?_2:_2.ID;return _3.substring(0,_4)}
+,isc.A.registerDataSource=function isc_c_DataSource_registerDataSource(_1){if(this.logIsInfoEnabled()){this.logInfo("Registered new isc.DataSource '"+_1.ID+"'")}
+if(_1.ID){var _2=this._dataSources[_1.ID];if(!_2||!_1.schemaNamespace){this._dataSources[_1.ID]=_1}}
+if(isc.Schema&&isc.isA.Schema(_1)){if(isc.isAn.XSElement(_1))this.$54v[_1.ID]=_1;else if(isc.isAn.XSComplexType(_1))this.$54w[_1.ID]=_1;return}
+var _3=_1.getLocalFields(true);var _4=this.$37z=(this.$37z||{});for(var _5 in _3){var _6=_3[_5];if(_6.foreignKey==null)continue;var _7=this.getForeignDSName(_6,_1);if(isc.DS.isRegistered(_7)){isc.DS.get(_7).addChildDataSource(_1)}else{if(_4[_7]==null){_4[_7]=[]}
+_4[_7].add(_1)}}
+var _8=_4[_1.ID];if(_8!=null){_1.map("addChildDataSource",_8);_4[_1.ID]=null}
+var _9=this.$370=this.$370||{};if(_1.childRelations){for(var i=0;i<_1.childRelations.length;i++){var _11=_1.childRelations[i],_12=_11.dsName,_13=isc.DS.get(_12);if(_13){this.$371(_1,_13,_11)}else{if(_9[_12]==null){_9[_12]=[]}
+_11.parentDS=_1.ID;_9[_12].add(_11)}}}
+var _14=_9[_1.ID];if(_14){for(var i=0;i<_14.length;i++){var _11=_14[i];this.$371(isc.DS.get(_11.parentDS),_1,_11)}}}
+,isc.A.$371=function isc_c_DataSource__addChildRelation(_1,_2,_3){_1.addChildDataSource(_2);if(!_3.fieldName)return;var _4=_2.getField(_3.fieldName);if(!_4.foriegnKey){_4.foreignKey=_1.ID+"."+_1.getPrimaryKeyFieldNames()[0]}}
+,isc.A.getInheritanceDistance=function isc_c_DataSource_getInheritanceDistance(_1,_2){var _3=isc.ClassFactory.getClass(_1),_4=isc.ClassFactory.getClass(_2);if(_3==null||_4==null){this.logWarn("Invalid superclass and/or subclass argument provided");return-1}
+if(!_4.isA(_1)){this.logWarn(_2+" is not a subclass of "+_1);return-1}
+for(var _5=0;_4!=_3;_5++){_4=_4.getSuperClass()}
+return _5}
+,isc.A.isSimpleTypeValue=function isc_c_DataSource_isSimpleTypeValue(_1){if(_1!=null&&(!isc.isAn.Object(_1)||isc.isA.Date(_1)))return true;return false}
+,isc.A.getNearestSchema=function isc_c_DataSource_getNearestSchema(_1){if(_1==null)return null;var _2;if(isc.isA.String(_1))_2=_1;else{_2=isc.isAn.Instance(_1)?_1.getClassName():_1._constructor||_1.type||_1.$schemaId}
+var _3=isc.DS.get(_2);var _4=isc.ClassFactory.getClass(_2);if(_4!=null){var _5=null;while(_3==null&&(_4=_4.getSuperClass())!=null&&_4!=_5)
+{_3=isc.DS.get(_4.getClassName());_5=_4}}
+return _3||isc.DS.get("Object")}
+,isc.A.getNearestSchemaClass=function isc_c_DataSource_getNearestSchemaClass(_1){if(_1==null)return null;var _2;while(_2==null){var _1=isc.DS.get(_1);if(_1==null)return null;_2=isc.ClassFactory.getClass(_1._constructor||_1.Constructor||_1.type);if(_2!=null)return _2;_1=_1.inheritsFrom;if(!_1)return null}
+return null}
+,isc.A.$372=function isc_c_DataSource__getStandardOperationType(_1){switch(_1){case"fetch":case"select":case"filter":return"fetch";case"add":case"insert":return"add";case"update":return"update";case"remove":case"delete":return"remove";default:return _1}}
+,isc.A.isClientOnly=function isc_c_DataSource_isClientOnly(_1){if(isc.isA.String(_1))_1=this.getDataSource(_1);if(!_1)return false;return _1.clientOnly}
+,isc.A.makeDefaultOperation=function isc_c_DataSource_makeDefaultOperation(_1,_2,_3){var _4=isc.rpc.app();if(isc.isA.DataSource(_1))_1=_1.ID;if(!_1){_1="auto"}else if(_3){var _5=isc.DataSource.get(_1);if(isc.isA.DataSource(_5)){if(!_5.createdOperations)_5.createdOperations={};var _6=_5.createdOperations[_3];if(_6==null){_6={ID:_3,dataSource:_1,type:_2,filterType:"paged",loadDataOnDemand:true};_5.createdOperations[_3]=_6}
+return _6}}
+if(_4.operations==null)_4.operations={};_3=_3||_1+"_"+_2;var _6=_4.operations[_3];if(_6==null){_6={ID:_3,dataSource:_1,type:_2,filterType:"paged",loadDataOnDemand:true,source:"auto"};_4.operations[_3]=_6}
+return _6}
+,isc.A.handleUpdate=function isc_c_DataSource_handleUpdate(_1,_2){if(!this.isUpdateOperation(_2.operationType))return;var _3=this.get(_2.dataSource);_3.updateCaches(_1,_2)}
+,isc.A.isUpdateOperation=function isc_c_DataSource_isUpdateOperation(_1){if(_1=="add"||_1=="update"||_1=="remove"||_1=="replace"||_1=="delete"||_1=="insert")return true}
+,isc.A.getUpdatedData=function isc_c_DataSource_getUpdatedData(_1,_2,_3){var _4=this.get(_1.dataSource);return _4.getUpdatedData(_1,_2,_3)}
+,isc.A.filterCriteriaForFormValues=function isc_c_DataSource_filterCriteriaForFormValues(_1){if(isc.DS.isAdvancedCriteria(_1))return _1;var _2={};for(var _3 in _1){var _4=_1[_3];if(_4==null||isc.is.emptyString(_4))continue;if(isc.isAn.Array(_4)){if(_4.length==0)continue;for(var i=0;i<_4.length;i++){var _6=_4[i];if(isc.isAn.emptyString(_6))continue}}
+_2[_3]=_4}
+return _2}
+,isc.A.checkEmptyCriteria=function isc_c_DataSource_checkEmptyCriteria(_1,_2){if((_2||this.isAdvancedCriteria(_1))&&_1.criteria){if(_1.criteria.length==0)return null;for(var i=_1.criteria.length-1;i>=0;i--){var _4=_1.criteria[i],_5=false;if(!_4)_5=true;else{if(!_4.criteria){if(isc.isA.emptyObject(_4))_5=true}else{var _6=this.checkEmptyCriteria(_4,true);if(_6)_1.criteria[i]=_6;else _5=true}}
+if(_5)_1.criteria.removeAt(i)}}
+return _1}
+,isc.A.load=function isc_c_DataSource_load(_1,_2,_3){if(!isc.isAn.Array(_1))_1=[_1];if(_1.length<=0){this.logWarn("No DataSource IDs passed in.");return}
+var _4=[];for(var i=0;i<_1.length;i++){if(!this.isLoaded(_1[i])||_3)_4.add(_1[i])}
+var _6=_4.join(","),_7=isc.DataSource.loaderURL+"?dataSource="+_6,_8=_1;;if(_4.length>0){isc.RPCManager.send(null,function(_9,_10,_11){if(_9.httpResponseCode==404){isc.warn("The DataSourceLoader servlet is not installed.");return null}
+eval(_10);if(_2)this.fireCallback(_2,["dsID"],[_8])},{actionURL:_7,httpMethod:"GET",willHandleError:true})}else{this.logWarn("DataSource(s) already loaded: "+_1.join(",")+"\nUse forceReload to reload such DataSources");if(_2)this.fireCallback(_2,["dsID"],[_8])}}
+,isc.A.getSortBy=function isc_c_DataSource_getSortBy(_1){if(!isc.isA.Array(_1))_1=[_1];var _2=[];for(var i=0;i<_1.length;i++){var _4=_1.get(i);_2.add((!Array.shouldSortAscending(_4.direction)?"-":"")+_4.property)}
+return _2}
+,isc.A.getSortSpecifiers=function isc_c_DataSource_getSortSpecifiers(_1){if(!isc.isA.Array(_1))_1=[_1];var _2=[];for(var i=0;i<_1.length;i++){var _4=_1.get(i),_5="ascending",_6=_4;if(_4.substring(0,1)=="-"){_5="descending";_6=_4.substring(1)}
+_2.add({property:_6,direction:_5})}
+return _2}
+,isc.A.isAdvancedCriteria=function isc_c_DataSource_isAdvancedCriteria(_1,_2){if(!_1)return false;if(!_2){return(_1&&_1._constructor=="AdvancedCriteria")}
+if(!isc.isA.DataSource(_2))_2=this.get(_2);if(_1._constructor=="AdvancedCriteria")return true;var _3=false;if(_2.getField(_1.fieldName)&&_2.getSearchOperator(_1.operator))
+{_3=true}
+else if(_2.getField("fieldName")||_2.getField("operator"))_3=false;else if(_1.fieldName&&_1.value&&(_1.operator&&_2.getSearchOperator(_1.operator))){_3=true}
+else{var _4;if(_1.operator!=_4){var _5=_2.getSearchOperator(_1.operator);if(_5!=null&&(_5.isAnd||_5.isOr)){_3=true}}}
+this.logInfo("Criteria object:"+this.echo(_1)+" not explicitly marked as AdvancedCriteria"+(_3?" but treating as Advanced based on format.":" - treating as SimpleCriteria.","AdvancedCriteria"));return _3}
+,isc.A.copyCriteria=function isc_c_DataSource_copyCriteria(_1){if(_1==null)return null;return isc.clone(_1)}
+,isc.A.getCriteriaFields=function isc_c_DataSource_getCriteriaFields(_1,_2,_3){if(_2&&!isc.isA.DataSource(_2))_2=this.get(_2);if(_3||(_2?_2.isAdvancedCriteria(_1):this.isAdvancedCriteria(_1)))
+{var _4=[];this.$74s(_1,_4);return _4}
+return isc.getKeys(_1)}
+,isc.A.$74s=function isc_c_DataSource__getAdvancedCriteriaFields(_1,_2){if(_1.criteria){for(var i=0;i<_1.criteria.length;i++){isc.DS.$74s(_1.criteria[i],_2)}}else{_2.add(_1.fieldName)}}
+,isc.A.cacheResponse=function isc_c_DataSource_cacheResponse(_1,_2){if(isc.Offline){var _3=isc.Offline.serialize(isc.Offline.trimRequest(_1));var _4=this.$78d.findIndex("requestKey",_3);if(_4!=-1){this.$78d.set(_4,_2)}else{if(this.$78d.length>=this.maxResponsesToCache){this.$78d.removeAt(0)}
+this.$78d.add({requestKey:_3,dsResponse:_2})}}}
+,isc.A.getCachedResponse=function isc_c_DataSource_getCachedResponse(_1){if(isc.Offline){var _2=isc.Offline.serialize(isc.Offline.trimRequest(_1));return this.$78d.find("requestKey",_2)}
+return null}
+,isc.A.getPathValue=function isc_c_DataSource_getPathValue(_1,_2){if(_1==null)return null;var _3=_2.split("."),_4=_1;for(var i=0;i<_3.length;i++){_4=_4[_3[i]];if(_4==null)break}
+return _4}
+,isc.A.setPathValue=function isc_c_DataSource_setPathValue(_1,_2,_3){if(!_2.contains("."))return _1[_2]=_3;_2=_2.split(".");var _4=_1;for(var i=0;i<_2.length-1;i++){var _6=_2[i];if(!isc.isAn.Object(_4[_6])){_4[_6]={}}
+_4=_4[_6]}
+_4[_2.last()]=_3}
+,isc.A.getCombinedDataSourceFields=function isc_c_DataSource_getCombinedDataSourceFields(_1){var _2=[];for(var i=0;i<_1.length;i++){var _4=_1[i];if(isc.isA.String(_4))_4=isc.DataSource.get(_4);if(_4==null){this.logWarn("getCombinedDataSourceFields() - unable to locate dataSource:"+_1[i]);continue}
+var _5=_4.getID(),_6=isc.getKeys(_4.getFields());for(var j=0;j<_6.length;j++){_2[_2.length]=_5+"."+_6[j]}}
+return _2}
+,isc.A.getFieldFromDataSources=function isc_c_DataSource_getFieldFromDataSources(_1,_2){var _3=this.getDataSourceForField(_1,_2);if(_3==null){this.logWarn("getFieldFromDataSources() - unable to find dataSource "+" from combined field ID "+_1);return null}
+var _4=_1.split("."),_5=_4[0],_6=_4[1];return _3.getField(_6)}
+,isc.A.getDataSourceForField=function isc_c_DataSource_getDataSourceForField(_1,_2){var _3=_1.split("."),_4=_3[0],_5=_3[1];if(_4==null||_5==null){this.logWarn("getDataSourceForField() passed invalid field ID:"+_1+". Expected format is to use dot-notation to indicate the dataSource plus "+"fieldName - for example 'countryDS.countryCode'");return null}
+var _6;if(_2==null)_6=isc.DataSource.get(_4);else{if(!isc.isAn.Array(_2))_2=[_2];for(var i=0;i<_2.length;i++){if(_2[i].getID()==_4){_6=_2[i];break}}}
+return _6}
+);isc.B._maxIndex=isc.C+37;isc.A=isc.DataSource.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.addGlobalId=true;isc.A.dataFormat="iscServer";isc.A.callbackParam="callback";isc.A.preventHTTPCaching=true;isc.A.sendExtraFields=true;isc.A.transformResponseToJS=true;isc.A.supportsRequestQueuing=true;isc.A.copyLocalResults=true;isc.A.criteriaPolicy="dropOnShortening";isc.A.showPrompt=true;isc.A.autoDeriveTitles=true;isc.A.canMultiSort=true;isc.A.nullStringValue="";isc.A.nullIntegerValue=0;isc.A.nullFloatValue=0.0;isc.A.nullBooleanValue=false;isc.A.nullDateValue=new Date(0);isc.A.cacheMaxAge=60;isc.A.cacheLastFetchTime=0;isc.A.autoCacheAllData=false;isc.A.autoConvertRelativeDates=true;isc.B.push(isc.A.setCacheAllData=function isc_DataSource_setCacheAllData(_1){if(!_1){if(this.cacheAllData==true){if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("setCacheAllData(false): clearing the cache and any "+"deferred requests","cacheAllData")}
+this.cacheAllData=false;delete this.$85n;this.invalidateCache();this.clearDeferredRequests()}}else{if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("setCacheAllData(true): invalidate the cache","cacheAllData")}
+this.cacheAllData=true;this.$85n=isc.timestamp();this.invalidateCache()}}
+,isc.A.cacheNeedsRefresh=function isc_DataSource_cacheNeedsRefresh(){var _1=new Date().getTime(),_2=((_1-this.cacheLastFetchTime)/1000),_3=(this.cacheLastFetchTime==0||_2>this.cacheMaxAge);if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("cacheNeedsRefresh returns "+_3,"cacheAllData")}
+return _3}
+,isc.A.setCacheData=function isc_DataSource_setCacheData(_1,_2){if(this.cacheAllData||this.clientOnly){if(_2){if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("setCacheData: invalidating the cache","cacheAllData")}
+this.invalidateCache();this.clearDeferredRequests()}
+this.cacheData=this.testData=_1;this.cacheLastFetchTime=new Date().getTime();if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("setCacheData: cacheData has been set","cacheAllData")}}}
+,isc.A.clearDeferredRequests=function isc_DataSource_clearDeferredRequests(_1){if(!this.$498)return;_1=_1||"any";if(!isc.isAn.Array(_1))_1=[_1];if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("clearDeferredRequests: "+this.$498.length+" requests, "+"clearing those of type "+isc.echoAll(_1),"cacheAllData")}
+if(_1.contains("any"))delete this.$498;else{if(this.$498){var _2=this.$498;for(var i=_2.length;i>=0;i--){var _4=_2[i].operationType||"fetch";if(_1.contains(_4))this.$498.removeAt(i)}
+if(this.$498.length==0)delete this.$498}}}
+,isc.A.processDeferredRequests=function isc_DataSource_processDeferredRequests(){if(!this.$498)return;if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("processDeferredRequests: processing "+this.$498.length+" deferred requests","cacheAllData")}
+var _1=this.$498;this.clearDeferredRequests();for(var i=0;i<_1.length;i++){this.sendDSRequest(_1[i])}}
+,isc.A.invalidateCache=function isc_DataSource_invalidateCache(){if(!this.cacheAllData&&!this.clientOnly)return;if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("invalidateCache: invalidating client-side cache","cacheAllData")}
+delete this.cacheData;delete this.testData;this.cacheLastFetchTime=0;if(this.cacheResultSet){this.cacheResultSet.destroy();delete this.cacheResultSet}}
+,isc.A.setClientOnly=function isc_DataSource_setClientOnly(_1){if(_1){this.clientOnly=true
+if(this.cacheAllData){if(this.cacheResultSet){if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("setClientOnly: sourcing from client-cache","cacheAllData")}
+this.cacheData=this.testData=this.cacheResultSet.getAllRows()}}else{this.clearDeferredRequests();this.invalidateCache();this.performDSOperation("fetch")}}}
+,isc.A.hasAllData=function isc_DataSource_hasAllData(){if(this.cacheResultSet)return this.cacheResultSet.lengthIsKnown();else return false}
+,isc.A.convertRelativeDates=function isc_DataSource_convertRelativeDates(_1,_2,_3,_4){if(!_1)return null;if(!this.isAdvancedCriteria(_1)&&_1.operator==null){return _1}
+var _5=isc.RelativeDate,_6=isc.clone(_1);_4=_4||new Date();if(_3==null)_3=isc.DateChooser?isc.DateChooser.firstDayOfWeek:0;if(_6.criteria&&isc.isAn.Array(_6.criteria)){var _7=_6.criteria;for(var i=_7.length-1;i>=0;i--){var _9=_7[i];if(!_9){if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Removing NULL subcriteria...","relativeDates")}
+_6.criteria.removeAt(i)}else{if(_9.criteria&&isc.isAn.Array(_9.criteria)){if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Calling convertRelativeDates from convertRelativeDates "+"- data is:\n\n"+isc.echoFull(_9)+"\n\n"+"criteria is: \n\n"+isc.echoFull(_1),"relativeDates")}
+_6.criteria[i]=this.convertRelativeDates(_9,_2,_3,_4);if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Called convertRelativeDates from convertRelativeDates "+"- data is\n\n"+isc.echoFull(_6.criteria[i]),"relativeDates")}}else{_6.criteria[i]=this.mapRelativeDate(_9,_4)}}}}else{_6=this.mapRelativeDate(_6,_4)}
+if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Returning from convertRelativeDates - result is:\n\n"+isc.echoFull(_6)+"\n\n"+"original criteria is: \n\n"+isc.echoFull(_1),"relativeDates")}
+return _6}
+,isc.A.mapRelativeDate=function isc_DataSource_mapRelativeDate(_1,_2){var _3=isc.addProperties({},_1),_4,_5;_2=_2||new Date();var _6=_3.fieldName,_7=_6?this.getField(_6):null,_8=_7?_7.type:null;var _9=isc.SimpleType.inheritsFrom(_8,"date")&&!isc.SimpleType.inheritsFrom(_8,"datetime");if(_3.value&&isc.isAn.Object(_3.value)&&_3.value._constructor=="RelativeDate")
+{_5=_3.value.value;_3.value=isc.DateUtil.getAbsoluteDate(_5,_2,_3.value.rangePosition,_9)}else{if(_3.start&&isc.isAn.Object(_3.start)&&_3.start._constructor=="RelativeDate")
+{_5=_3.start.value;_3.start=_4=isc.DateUtil.getAbsoluteDate(_5,_2,"start",_9)}
+if(_3.end&&isc.isAn.Object(_3.end)&&_3.end._constructor=="RelativeDate")
+{_5=_3.end.value;_3.end=isc.DateUtil.getAbsoluteDate(_5,_2,"end",_9)}}
+return _3}
+);isc.B._maxIndex=isc.C+10;isc.A=isc.DataSource.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$41v="Action";isc.A.resultBatchSize=150;isc.A.$2j=[];isc.A.emptyExportMessage="You are attempting to export an empty dataset";isc.A.canExport=true;isc.A.defaultTitleFieldNames=["title","label","name","id"];isc.A.textContentProperty="xmlTextContent";isc.A.$dq="Defaults";isc.A.$dr="Properties";isc.A.$375="name";isc.A.$45t="type";isc.A.dropUnknownCriteria=true;isc.A.$45y="startsWith";isc.A.$19q="substring";isc.A.$50i="exact";isc.A.$50j="iscServer";isc.B.push(isc.A.init=function isc_DataSource_init(){if(this.serverType=="sql")this.dataFormat="iscServer";if(this.dataFormat=="iscServer"&&(this.serviceNamespace!=null||this.recordXPath!=null))this.dataFormat="xml";this.canQueueRequests=(this.dataFormat=="iscServer"||this.clientOnly);if(this.testData&&!this.cacheData)this.cacheData=this.testData;else if(this.clientOnly&&this.cacheData&&!this.testData)
+this.testData=this.cacheData;if(this.ID==null&&this.id!=null)this.ID=this.id;if(this.name==null)this.name=this.ID;var _1=isc.DS.get(this.ID);if(_1&&_1.builtinSchema)return _1;var _2=window[this.ID];if(this.addGlobalId&&this.addGlobalId!=isc.$ae&&(!_2||(!isc.isA.ClassObject(_2)&&isc.isA.DataSource(_2))))
+{isc.ClassFactory.addGlobalID(this)}
+var _3=this.fields;if(isc.isAn.Array(_3)){var _4={};for(var i=0;i<_3.length;i++){var _6=_3[i];if(_6.includeFrom!=null){var _7=_6.includeFrom.split(".");if(_7==null||_7.length!=2){this.logWarn("Field has includeFrom specified as :"+_6.includeFrom+" format not understood - clearing this property");_6.includeFrom=null}else{if(_6.name==null)_6.name=_7[1]}}
+if(_4[_6.name]!=null){this.logWarn("field.name collision: first field: "+this.echo(_4[_6.name])+", discarded field: "+this.echo(_6));continue}
+_4[_6.name]=_6}
+this.fields=_4}
+if(this.dataSourceType==isc.DataSource.VIEW)this.initViewSources();isc.DataSource.registerDataSource(this)}
+,isc.A.destroy=function isc_DataSource_destroy(){var _1=this.ID,_2=isc.DS;if(_1&&this==window[_1])window[_1]=null;if(_2._dataSources[_1]==this)_2._dataSources[_1]=null;if(_2.$54v[_1]==this)_2.$54v[_1]=null;if(_2.$54w[_1]==this)_2.$54w[_1]=null}
+,isc.A.getResultSet=function isc_DataSource_getResultSet(_1){var _2=isc.ClassFactory.getClass(this.resultSetClass||isc.ResultSet);if(!isc.isA.Class(_2)){this.logWarn("getResultSet(): Unrecognized 'resultSetClass' property:"+_2+", returning a standard isc.ResultSet.");_2=isc.ResultSet}
+return _2.create(_1,{$31k:true})}
+,isc.A.dataChanged=function(dsResponse,dsRequest){}
+,isc.A.updateCaches=function isc_DataSource_updateCaches(_1,_2){if(_2==null){_2={operationType:_1.operationType,dataSource:this};if(_1.clientContext!=null){_2.clientContext=_1.clientContext}}else{_2.dataSource=_2.dataSource||_1.dataSource||this}
+var _3=_1.data,_4=_1.invalidateCache,_5=_1.httpResponseCode;if(!_3&&!_4&&!(_5>=200&&_5<300)){this.logWarn("Empty results returned on '"+_2.operationType+"' on dataSource '"+_2.dataSource+"', unable to update resultSet(s) on DataSource "+this.ID+". Return affected records to ensure cache consistency.");return}
+if(this.cacheAllData&&this.hasAllData()){this.invalidateCache()}
+this.dataChanged(_1,_2)}
+,isc.A.getLegalChildTags=function isc_DataSource_getLegalChildTags(){var _1=this.getFieldNames(),_2=[];for(var i=0;i<_1.length;i++){if(this.fieldIsComplexType(_1[i]))_2.add(_1[i])}
+return _2}
+,isc.A.getOperationBinding=function isc_DataSource_getOperationBinding(_1,_2){if(_1==null||this.operationBindings==null)return this;if(isc.isAn.Object(_1)){var _3=_1;_1=_3.operationType;_2=_3.operationId}
+var _4;if(_2){var _5=this.operationBindings.find("operationId",_2);if(_5)return _5}
+if(_1){var _5=this.operationBindings.find("operationType",_1);if(_5)return _5}
+return this}
+,isc.A.getDataFormat=function isc_DataSource_getDataFormat(_1,_2){return this.getOperationBinding(_1,_2).dataFormat||this.dataFormat}
+,isc.A.shouldBypassCache=function isc_DataSource_shouldBypassCache(_1,_2){var _3=this.getOperationBinding(_1,_2).preventHTTPCaching;if(_3==null)_3=this.preventHTTPCaching;return _3}
+,isc.A.copyRecord=function isc_DataSource_copyRecord(_1){if(_1==null)return null;var _2={};var _3=this.getFieldNames(false);for(var i=0;i<_3.length;i++){var _5=_3.get(i);var _6=_1[_5];var _7=this.getField(_5);if(isc.isA.Date(_6)){var _8=new Date();_8.setTime(_6.getTime());_8.logicalDate=_6.logicalDate;_8.logicalTime=_6.logicalTime;_2[_5]=_8}else if(isc.isAn.Array(_6)&&_7.multiple==true&&_7.type==null)
+{var _9=[];for(var j=0;j<_6.length;j++){if(isc.isA.Date(_6[j])){var _8=new Date();_8.setTime(_6[j].getTime());_8.logicalDate=_6[j].logicalDate;_8.logicalTime=_6[j].logicalTime;_9[j]=_8}else{_9[j]=_6[j]}}
+_2[_5]=_9}else{_2[_5]=_6}}
+return _2}
+,isc.A.copyRecords=function isc_DataSource_copyRecords(_1){if(_1==null)return null;var _2=[];for(var i=0;i<_1.length;i++){var _4=_1[i];var _5=this.copyRecord(_4);_2[i]=_5}
+return _2}
+,isc.A.transformRequest=function isc_DataSource_transformRequest(_1){return _1.data}
+,isc.A.getUpdatedData=function isc_DataSource_getUpdatedData(_1,_2,_3){var _4=_2.data;if(_3&&_2.status==0&&(_4==null||(isc.isA.Array(_4)&&_4.length==0)||isc.isAn.emptyString(_4)))
+{this.logInfo("dsResponse for successful operation of type "+_1.operationType+" did not return updated record[s]. Using submitted request data to update"+" ResultSet cache.","ResultSet");var _5=_1.data;if(_1.data&&isc.isAn.Object(_1.data)){if(_1.operationType=="update"){_4=isc.addProperties({},_1.oldValues);if(isc.isAn.Array(_5)){_4=isc.addProperties(_4,_5[0])}else{_4=isc.addProperties(_4,_5)}
+_4=[_4]}else{if(!isc.isAn.Array(_5))_5=[_5];_4=[];for(var i=0;i<_5.length;i++){_4[i]=isc.addProperties({},_5[i])}}
+if(this.logIsDebugEnabled("ResultSet")){this.logDebug("Submitted data to be integrated into the cache:"+this.echoAll(_4),"ResultSet")}}}
+return _4}
+,isc.A.serializeFields=function isc_DataSource_serializeFields(_1,_2){if(!_1&&_2!=null)_1=_2.data;if(!_1)return _1;if(isc.DS.isSimpleTypeValue(_1))return _1;if(isc.isAn.Array(_1)){var _3=[];for(var i=0;i<_1.length;i++){_3[i]=this.serializeFields(_1[i],_2)}
+return _3}else if(this.isAdvancedCriteria(_1)){return this.serializeAdvancedCriteria(_1)}
+_1=isc.addProperties({},_1);if(_1.__ref)delete _1.__ref;var _5=this.getFields();for(var _6 in _5){if(!isc.isAn.Object(_1[_6]))continue;var _7=_5[_6],_8=_7.type,_9=_8!=null?isc.DataSource.get(_8):null;if(_9&&_9.serializeFields){_1[_6]=_9.serializeFields(_1[_6])}else if(isc.isA.Date(_1[_6])){if(isc.SimpleType.getBaseType(_7.type)=="date"&&!isc.SimpleType.inheritsFrom(_7.type,"datetime"))
+{_1[_6].logicalDate=true}else if(isc.SimpleType.getBaseType(_7.type)=="time"){_1[_6].logicalTime=true}}}
+return _1}
+,isc.A.serializeAdvancedCriteria=function isc_DataSource_serializeAdvancedCriteria(_1){_1=isc.clone(_1);if(_1.criteria){for(var i=0;i<_1.criteria.length;i++){_1.criteria[i]=this.serializeAdvancedCriteria(_1.criteria[i])}}else{if(isc.isA.Date(_1.value)||isc.isA.Date(_1.start)||isc.isA.Date(_1.end)){var _3=this.getField(_1.fieldName);if(_3!=null){if(isc.SimpleType.getBaseType(_3.type)=="date"&&!isc.SimpleType.inheritsFrom(_3.type,"datetime"))
+{if(_1.value)_1.value.logicalDate=true;if(_1.start)_1.start.logicalDate=true;if(_1.end)_1.end.logicalDate=true}else if(isc.SimpleType.getBaseType(_3.type)=="time"){if(_1.value)_1.value.logicalTime=true;if(_1.start)_1.start.logicalTime=true;if(_1.end)_1.end.logicalTime=true}}}}
+return _1}
+,isc.A.getDataProtocol=function isc_DataSource_getDataProtocol(_1){var _2=this.getOperationBinding(_1),_3=this.getWebService(_1);return(_2.dataProtocol!=null?_2.dataProtocol:isc.isA.WebService(_3)?"soap":this.dataProtocol||"getParams")}
+,isc.A.$754=function isc_DataSource__storeCustomRequest(_1){if(!this.$624)this.$624={};this.$624[_1.requestId]=_1}
+,isc.A.getServiceInputs=function isc_DataSource_getServiceInputs(_1){var _2=this.getOperationBinding(_1),_3=this.getWebService(_1),_4=this.getWSOperation(_1);this.addDefaultCriteria(_1,_2);_1.originalData=_1.data;this.$754(_1);this.applySendExtraFields(_1);if(!this.clientOnly){if(this.fulfilledFromOffline(_1))return{dataProtocol:"clientCustom"};_1.unconvertedDSRequest=isc.shallowClone(_1)}
+if(this.autoConvertRelativeDates==true){if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Calling convertRelativeDates from getServiceInputs "+"- data is\n\n"+isc.echoFull(_6))}
+var _5=this.convertRelativeDates(_1.data);if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Called convertRelativeDates from getServiceInputs "+"- data is\n\n"+isc.echoFull(_6))}
+_1.data=_5}
+var _6=this.transformRequest(_1);if(_6!==_1){_1.data=_6}
+var _7=this.getDataProtocol(_1),_8=_7=="clientCustom";if(_8){return{dataProtocol:"clientCustom"}}else{delete this.$624[_1.requestId]}
+if(isc.isA.WebService(_3)){if(_1.wsOperation==null&&isc.isAn.Object(_4)){_1.wsOperation=_4.name}
+this.logInfo("web service: "+_3+", wsOperation: "+this.echoLeaf(_4),"xmlBinding")}
+_1.$85o=isc.timestamp();var _9=this.getDataURL(_1);_9=_1.actionURL||_1.dataURL||_9;if(_1.useHttpProxy==null){_1.useHttpProxy=this.$du(_2.useHttpProxy,this.useHttpProxy)}
+var _10,_11=_2.defaultParams||this.defaultParams,_12=_1.params;if(_11||_12){_10=isc.addProperties({},_11,_12)}
+var _13=_7=="getParams"||_7=="postParams";if(_13){_10=isc.addProperties(_10||{},_1.data)}
+if(_13){if(_10)_10=this.serializeFields(_10,_1);return{actionURL:_9,httpMethod:_1.httpMethod||(_7=="getParams"?"GET":"POST"),params:_10}}
+var _14={actionURL:_9,httpMethod:_1.httpMethod||"POST"};if(_10)_14.params=_10;if(_7=="postMessage"){_14.data=(_1.data||"").toString()}
+if(_7=="postXML"||_7=="soap"){var _15=this.getSerializeFlags(_1);var _16=_14.data=this.getXMLRequestBody(_1);_14.contentType=_1.contentType||"text/xml";this.logDebug("XML post requestBody is: "+_16,"xmlBinding")}
+if(_7=="soap"){var _17=this.$du(_2.soapAction,_4.soapAction);if(_17==null)_17='""';_14.httpHeaders=isc.addProperties({SOAPAction:_17},_1.httpHeaders);var _18=isc.isA.WebService(_3)&&this.$du(_2.spoofResponses,this.spoofResponses);if(_18){_14.spoofedResponse=_3.getSampleResponse(_4.name);this.logInfo("Using spoofed response:\n"+_14.spoofedResponse,"xmlBinding")}}
+if(this.logIsDebugEnabled("xmlBinding")){this.logDebug("serviceInputs are: "+this.echo(_14),"xmlBinding")}
+return _14}
+,isc.A.addDefaultCriteria=function isc_DataSource_addDefaultCriteria(_1,_2){var _3=_2.defaultCriteria||this.defaultCriteria;if(!_3)return;_3=isc.addProperties({},_3);if(_3&&_1.operationType=="fetch"){if(this.isAdvancedCriteria(_1.data)){var _4=this.mineCriteriaFieldNames(_1.data);for(var _5 in _3){if(_4.contains(_5))delete _3[_5]}}
+if(isc.getValues(_3).length>0){_1.data=isc.DataSource.combineCriteria(_1.data,_3,"and",null)}}}
+,isc.A.mineCriteriaFieldNames=function isc_DataSource_mineCriteriaFieldNames(_1){var _2=[];if(!_1.criteria)return _2;for(var i=0;i<_1.criteria.length;i++){if(_1.criteria[i].criteria){_2.addList(this.mineCriteriaFieldNames(_1.criteria[i]))}else{_2.add(_1.criteria[i].fieldName)}}
+return _2}
+,isc.A.applySendExtraFields=function isc_DataSource_applySendExtraFields(_1){if(!this.sendExtraFields){var _2=_1.data;if(!isc.isAn.Array(_2))_2=[_2];for(var i=0;i<_2.length;i++){var _4=_2[i];if(!isc.isAn.Object(_4))continue;for(var _5 in _4){if(!this.getField(_5))delete _4[_5]}}}}
+,isc.A.processResponse=function isc_DataSource_processResponse(_1,_2){var _3=this.$624[_1];if(_3==null){this.logWarn("DataSource.processResponse(): Unable to find request corresponding to ID "+_1+", taking no action.");return}
+delete this.$624[_1];if(_2.status==null)_2.status=0;if(_2.status==0){var _4=_2.data;if(_4==null)_2.data=_4=[];if(_2.startRow==null)_2.startRow=_3.startRow||0;if(_2.endRow==null)_2.endRow=_2.startRow+_4.length;if(_2.totalRows==null){_2.totalRows=Math.max(_2.endRow,_4.length)}}
+this.$38b(_4,_2,_3)}
+,isc.A.$50e=function isc_DataSource__handleClientOnlyReply(_1,_2,_3){var _4=this.cacheAllData&&!this.clientOnly&&this.cacheResultSet?this.cacheResultSet.getAllRows():null,_5=this.getClientOnlyResponse(_3._dsRequest,_4),_6=_3._dsRequest;this.$38b(_2,_5,_6,_1,_3)}
+,isc.A.$38a=function isc_DataSource__handleCustomReply(_1,_2,_3){var _4={data:_2,startRow:0,endRow:0,totalRows:0,status:0};var _5=_3._dsRequest;this.$38b(_2,_4,_5,_1,_3)}
+,isc.A.$377=function isc_DataSource__handleJSONReply(_1,_2,_3){var _4=_3._dsRequest,_5=this.getOperationBinding(_4).recordXPath||this.recordXPath;if((_1.$38c||_1.$69j)&&this.logIsDebugEnabled("xmlBinding")){this.logDebug("Raw response data: "+this.echoFull(_2),"xmlBinding")}
+var _6=_2;if(_2){if(_5){_2=isc.xml.selectObjects(_2,_5);this.logInfo("JSON recordXPath: '"+_5+"', selected: "+this.echoLeaf(_2),"xmlBinding")}
+_2=this.recordsFromObjects(_2);if(this.logIsDebugEnabled("xmlBinding")){this.logDebug("Validated dsResponse.data: "+isc.echoFull(_2),"xmlBinding")}
+var _7={data:_2,startRow:_4.startRow||0,status:0};_7.endRow=_7.startRow+Math.max(0,_2.length);_7.totalRows=Math.max(_7.endRow,_2.length)}else{var _8=_1.status;if(_8==0||_8==null)_8=-1;var _7={status:_8,data:_1.data}}
+this.$38b(_6,_7,_4,_1,_3)}
+,isc.A.$69k=function isc_DataSource__handleCSVTextReply(_1,_2,_3){if(_1.status!=0)return;var _4=_1.data.split(/[\r\n]+/);var _5=_4[0].split(",");_5=_5.map(function(_12){return _12.trim()});var _6=[];for(var i=1;i<_4.length;i++){var _8=_4[i].split(",");var _9={};for(var j=0;j<_8.length;j++){var _11=_8[j];if(_11!=null)_11=_11.trim();if(isc.startsWith(_11,"\""))_11=_11.substring(1);if(isc.endsWith(_11,"\""))_11=_11.substring(0,_11.length-1);_9[_5[j]]=_11}
+_6.add(_9)}
+_1.$69j=true;this.$377(_1,_6,_3)}
+,isc.A.$379=function(rpcResponse,jsonText,rpcRequest){if(rpcRequest.isRestRequest&&!isc.isA.String(jsonText)){var jsonObjects=jsonText}else{if(rpcResponse.status>=0){var evalText=jsonText;if(rpcRequest.transport!="scriptInclude"&&evalText!=null){var re;if(this.jsonPrefix){re=new RegExp(/^\s*/);evalText=evalText.replace(re,"");if(evalText.startsWith(this.jsonPrefix)){evalText=evalText.substring(this.jsonPrefix.length)}else{this.logInfo("DataSource specifies jsonPrefix, but not present in "+"response returned from server. Processing response anyway.")}}
+if(this.jsonSuffix){re=new RegExp(/\s*$/)
+evalText=evalText.replace(re,"");if(evalText.endsWith(this.jsonSuffix)){evalText=evalText.substring(0,(evalText.length-this.jsonSuffix.length))}else{this.logInfo("DataSource specifies jsonSuffix, but not present in "+"response returned from server. Processing response anyway.")}}}
+if(evalText&&evalText.match(/^\s*\{/)){evalText="var evalText = "+evalText+";evalText;"}
+try{var jsonObjects=isc.eval(evalText)}catch(e){rpcResponse.status=-1;rpcResponse.data="Error: server returned invalid JSON response";this.logWarn("Error evaluating JSON: "+e.toString()+", JSON text:\r"+jsonText)}
+if(jsonObjects==null){rpcResponse.status=-1;rpcResponse.data="Error: server returned invalid JSON response";this.logWarn("Evaluating JSON reply resulted in empty value. JSON text:\r"+this.echo(jsonText))}
+rpcResponse.$38c=true}}
+this.$377(rpcResponse,jsonObjects,rpcRequest)}
+,isc.A.recordsFromObjects=function isc_DataSource_recordsFromObjects(_1){if(!isc.isAn.Array(_1))_1=[_1];if(this.skipJSONValidation)return _1;for(var i=0;i<_1.length;i++){_1[i]=this.validateJSONRecord(_1[i])}
+return _1}
+,isc.A.validateJSONRecord=function isc_DataSource_validateJSONRecord(_1){var _2=this.getFieldNames(),_3={};for(var i=0;i<_2.length;i++){var _5=_2[i],_6=this.getField(_5),_7;if(_6.valueXPath){_7=isc.xml.selectObjects(_1,_6.valueXPath,true)}else{_7=_1[_5]}
+if(_6.getFieldValue){if(!isc.isA.Function(_6.getFieldValue)){isc.Func.replaceWithMethod(_6,"getFieldValue","record,value,field,fieldName")}
+_7=_6.getFieldValue(_1,_7,_6,_5)}
+var _8;if(_7!=_8){_3[_5]=this.validateFieldValue(_6,_7)}}
+if(this.dropExtraFields)return _3;for(var i=0;i<_2.length;i++){var _5=_2[i];_1[_5]=_3[_5]}
+return _1}
+,isc.A.getMessageSerializer=function isc_DataSource_getMessageSerializer(_1,_2){var _3=this.getOperationBinding(_1,_2);if(_3.wsOperation){var _4=this.getWebService(_1,_2);return _4.getMessageSerializer(_3.wsOperation)}
+return this}
+,isc.A.getXMLRequestBody=function isc_DataSource_getXMLRequestBody(_1,_2){if(isc.$cv)arguments.$cw=this;var _3=isc.SB.create(),_4=this.getDataProtocol(_1);if(_4=="soap"){_3.append(this.getSoapStart(_1),"\r");_3.append(this.getSoapBody(_1,_2));_3.append("\r",this.getSoapEnd(_1))}else{if(this.messageStyle=="template"){_3.append(this.$38d(_1))}else{var _5=this.getMessageSerializer(_1);var _2=this.getSerializeFlags(_1,_2);_3.append(_5.xmlSerialize(_1.data,_2))}}
+if(this.logIsDebugEnabled("xmlComm")){this.logDebug("outbound XML message: "+_3,"xmlComm")}
+return _3.toString()}
+,isc.A.$38d=function isc_DataSource__createTemplatedRequestBody(_1){var _2=isc.SB.create(),_3=this.soapBodyTemplate,_4;_4=_3.evalDynamicString(this,_1);return _4}
+,isc.A.getSchemaSet=function isc_DataSource_getSchemaSet(){return isc.SchemaSet.get(this.schemaNamespace)}
+,isc.A.hasWSDLService=function isc_DataSource_hasWSDLService(_1){return isc.isA.WebService(this.getWebService(_1))}
+,isc.A.getWebService=function isc_DataSource_getWebService(_1){var _2=this.getOperationBinding(_1),_3=(_1?_1.serviceNamespace:null)||_2.serviceNamespace||this.serviceNamespace,_4=(_1?_1.serviceName:null)||_2.serviceName||this.serviceName;var _5;if(_4)_5=isc.WebService.getByName(_4,_3);else _5=isc.WebService.get(_3);if((_3!=null||_4!=null)&&_5==null){this.logWarn("Could not find WebService definition: "+(_4?"serviceName: "+_4:"")+(_3?" serviceNamespace: "+_3:"")+this.getStackTrace())}
+return _5||this}
+,isc.A.getWSOperation=function isc_DataSource_getWSOperation(_1){var _2=this.getOperationBinding(_1),_3=(isc.isAn.Object(_1)?_1.wsOperation:null)||_2.wsOperation||this.wsOperation,_4=this.getWebService(_1);if(_3!=null&&isc.isA.WebService(_4)){var _5=_4.getOperation(_3);if(!_5){isc.logWarn("DataSource.getWSOperation() : could not retrieve the operation "+_3)}
+return _5}
+return this}
+,isc.A.getDataURL=function isc_DataSource_getDataURL(_1){var _2=this.getOperationBinding(_1);if(_2!=this&&_2.dataURL)return _2.dataURL;if(this.dataURL!=null)return this.dataURL;if(this.hasWSDLService(_1)){var _3=this.getWebService(_1);return _3.getDataURL(this.getWSOperation(_1).name)}
+return this.dataURL}
+,isc.A.getGlobalNamespaces=function isc_DataSource_getGlobalNamespaces(_1){var _2=this.getWebService(_1),_3=this.globalNamespaces;if(_2&&_2.globalNamespaces){_3=isc.addProperties({},_3,_2.globalNamespaces)}
+return _3}
+,isc.A.getSoapStart=function isc_DataSource_getSoapStart(_1){var _2=this.getWebService(_1);if(_2.getSoapStart)return _2.getSoapStart(_1);return isc.SB.concat(isc.DataSource.$37t,isc.xml.$37l(this.getGlobalNamespaces(_1),null," "),">",isc.DataSource.$37u,this.getSoapHeader(_1),isc.DataSource.$51y)}
+,isc.A.getSoapHeader=function isc_DataSource_getSoapHeader(_1){var _2=this.getWebService(_1);if(_2.getSoapHeader)return _2.getSoapHeader(_1);var _3=_1.headerData||_2.getHeaderData(_1);if(!_3)return;this.logDebug("headerData is: "+this.echo(_3),"xmlBinding");var _4=_2.getInputHeaderSchema(this.getWSOperation(_1))||isc.emptyObject;var _5="",_6=_1.useFlatHeaderFields;for(var _7 in _3){var _8=_4[_7];if(_8!=null){if(isc.isA.DataSource(_8)){_5+=_8.xmlSerialize(_3[_7],{useFlatFields:_6})}else{_5+="\r "+this.$38g(_7,_8,_3[_7],_8.partNamespace)}}else{this.logWarn("headerData passed for SOAP header partName: "+_7+", no schema available, not outputting")}}
+return _5}
+,isc.A.getSoapBody=function isc_DataSource_getSoapBody(_1,_2){if(isc.$cv)arguments.$cw=this;var _3=isc.SB.create(),_4=this.getWebService(_1),_5=this.getSoapStyle(_1),_6=this.getWSOperation(_1),_7=this.xmlNamespaces?isc.makeReverseMap(this.xmlNamespaces):null,_2=isc.addProperties({nsPrefixes:isc.addProperties({},_7)},_2),_8=_2.generateResponse?_4.getResponseMessage(_6.name):_4.getRequestMessage(_6.name),_9=_2.bodyPartNames||_4.getBodyPartNames(_6.name,_2.generateResponse);_2=this.getSerializeFlags(_1,_2);isc.Comm.omitXSI=_6.inputEncoding!="encoded";var _10=isc.Comm.xmlSchemaMode;isc.Comm.xmlSchemaMode=true;var _11=" ";if(_5=="rpc"){_3.append("\n",_11,isc.Comm.$36u(_6.name,null,_6.inputNamespace,"opNS",true),">");_11+=" "}
+this.logInfo("soap:body parts in use: '"+_9+"', soapStyle: "+_5,"xmlSerialize");if(this.logIsDebugEnabled("xmlSerialize")){this.logDebug("SOAP data is: "+this.echoFull(_1.data),"xmlSerialize")}
+for(var i=0;i<_9.length;i++){var _13=_9[i];var _14=_9.length<2&&_5=="document"?_1.data:(_1.data?_1.data[_13]:null);var _15=_8.getMessagePart(_13,_14,_2,_11);_3.append("\r"+_11+_15)}
+if(_5=="rpc"){_3.append("\n"," ",isc.Comm.$36v(_6.name,_6.inputNamespace,"opNS"))}
+isc.Comm.omitXSI=null;isc.Comm.xmlSchemaMode=_10;return isc.SB.concat(" ",isc.DS.$37v,this.outputNSPrefixes(_2.nsPrefixes," "),">",_3.toString(),"\r ",isc.DS.$51z)}
+,isc.A.getMessagePart=function isc_DataSource_getMessagePart(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;var _5=this.getPartField(_1),_6=this.getSchema(_5.type,_5.xsElementRef?"element":null),_7=this.logIsInfoEnabled("xmlSerialize");if(isc.isA.DataSource(_6)){if(_7){this.logInfo("soap:body part '"+_1+"' is complex type with schema: "+_6+" has value: "+(this.logIsDebugEnabled("xmlSerialize")?this.echo(_2):this.echoLeaf(_2)),"xmlSerialize")}
+var _8=_5.xsElementRef?null:_1;return _6.xmlSerialize(_2,_3,_4,_8)}else{if(_2!=null&&!isc.DS.isSimpleTypeValue(_2)){_2=_2[_5.name]||_2[_1]||_2}
+if(_7){this.logInfo("soap:body part '"+_1+"' is of simple type '"+_5.type+"'"+" has value: '"+this.echoLeaf(_2)+"'","xmlSerialize")}
+var _9=this.getType(_5.type),_10=_5.partNamespace;if(!_10&&_9&&_9.schemaNamespace){_10=_9.schemaNamespace}
+return this.$38g(_5.name||_1,_5,_2,_10,_3)}}
+,isc.A.getPartField=function isc_DataSource_getPartField(_1){var _2=isc.getValues(this.getFields()).find("partName",_1);if(_2!=null)return _2;return this.getField(_1)}
+,isc.A.getSoapEnd=function isc_DataSource_getSoapEnd(_1){var _2=this.getWebService(_1);if(_2.getSoapEnd)return _2.getSoapEnd(_1);return isc.DataSource.$37w}
+,isc.A.getSoapStyle=function isc_DataSource_getSoapStyle(_1){if(!this.hasWSDLService(_1))return"document";return this.getWebService(_1).getSoapStyle(this.getWSOperation(_1).name)}
+,isc.A.getSerializeFlags=function isc_DataSource_getSerializeFlags(_1,_2){_2=isc.addProperties({soapStyle:this.getSoapStyle(_1)},_2);var _3=this.getOperationBinding(_1);_2.flatData=this.$du(_1.useFlatFields,_3.useFlatFields,this.useFlatFields);_2.recursiveFlatFields=this.$du(_1.recursiveFlatFields,_3.recursiveFlatFields,this.recursiveFlatFields);_2.textContentProperty=this.$du(_1.textContentProperty,_3.textContentProperty);_2.dsRequest=_1;_2.startRowTag=_3.startRowTag||this.startRowTag;_2.endRowTag=_3.endRowTag||this.endRowTag;return _2}
+,isc.A.xmlSerialize=function isc_DataSource_xmlSerialize(_1,_2,_3,_4){if(!_2)_2={};if(_2.useFlatFields)_2.flatData=true;var _5=this.getSchemaSet(),_6=(_2.qualifyAll==null);if(_5&&_5.qualifyAll){_2.qualifyAll=true}
+var _7;if(_2.nsPrefixes==null){var _8=this.xmlNamespaces?isc.makeReverseMap(this.xmlNamespaces):null;_2.nsPrefixes=isc.addProperties({},_8);_7=true}
+var _9=isc.Comm.xmlSchemaMode;isc.Comm.xmlSchemaMode=true;var _10;if(isc.Comm.omitXSI==null){_10=isc.Comm.omitXSI=true}
+var _11=this.$ew(_1,_2,_3,_4,_7);if(_6)_2.qualifyAll=null;isc.Comm.xmlSchemaMode=_9;if(_10)isc.Comm.omitXSI=null;return _11}
+,isc.A.$ew=function isc_DataSource__xmlSerialize(_1,_2,_3,_4,_5){if(isc.$cv)arguments.$cw=this;if(this.logIsDebugEnabled("xmlSerialize")){this.logDebug("schema: "+this+" serializing: "+this.echo(_1)+" with flags: "+this.echo(_2),"xmlSerialize")}
+var _6=this.mustQualify||_2.qualifyAll,_4=_4||this.tagName||this.ID;if(!_2.ignoreConstructor){var _7;if(_1!=null&&(_1._constructor||isc.isAn.Instance(_1))){var _7=isc.isAn.Instance(_1)?_1.Class:_1._constructor}}
+if(isc.DS.isSimpleTypeValue(_1)){if(isc.isA.String(_1)&&isc.startsWith(_1,"ref:")){return"<"+_4+" ref=\""+_1.substring(4)+"\"/>"}
+this.logDebug("simple type value: "+this.echoLeaf(_1)+" passed to xmlSerialize on "+this,"xmlSerialize");return isc.Comm.$ew(_4||this.tagName||this.ID,_1)}
+if(isc.isAn.Instance(_1))_1=_1.getSerializeableFields();if(isc.isAn.Array(_1)&&!this.canBeArrayValued)return this.map("xmlSerialize",_1,_2,_3).join("\n");var _8=isc.SB.create(),_3=_3||"";_8.append("\r",_3);var _9;if(_6){_9=(this.isA("XSComplexType")?_2.parentSchemaNamespace:null)||this.schemaNamespace}
+_8.append(isc.Comm.$36u(_4,this.ID,_9,_2.nsPrefixes,true));_1=this.serializeAttributes(_1,_8,_2);if(_7&&_4!=_7){_8.append(" constructor=\"",_7,"\"")}
+var _10;if(_1!=null){_10=this.xmlSerializeFields(_1,_2,_3+" ")}
+if(_5){_8.append(this.outputNSPrefixes(_2.nsPrefixes,_3+" "))}
+var _11=this.$45z;this.$45z=null;if(_10==null||isc.isAn.emptyString(_10)){_8.append("/>");return _8.toString()}
+_8.append(">",_10,(_11?"":"\r"+_3));_8.append(isc.Comm.$36v(_4,_9,_2.nsPrefixes));return _8.toString()}
+,isc.A.outputNSPrefixes=function isc_DataSource_outputNSPrefixes(_1,_2){delete _1.$36y;_1=isc.makeReverseMap(_1);var _3=isc.xml.$37l(_1,null,_2+" ");return _3}
+,isc.A.serializeAttributes=function isc_DataSource_serializeAttributes(_1,_2,_3){var _4=this.getFieldNames(),_5=true;for(var i=0;i<_4.length;i++){var _7=_4[i],_8=this.getField(_7);if(_8.xmlAttribute&&((_1&&_1[_7]!=null)||_8.xmlRequired)){if(_5){_1=isc.addProperties({},_1);_5=false}
+var _9=_1[_7];if(_3&&_3.spoofData)_9=this.getSpoofedData(_8);_2.append(" ",_7,"=\"",this.$38f(_8,_9),"\"");delete _1[_7]}}
+return _1}
+,isc.A.xmlSerializeFields=function isc_DataSource_xmlSerializeFields(_1,_2,_3){var _4=isc.SB.create(),_2=_2||isc.emptyObject,_5=_2.flatData,_6=_2.spoofData,_3=_3||"";var _1=isc.addProperties({},_1);if(_1.__ref!=null)delete _1.__ref;var _7=this.getFields();for(var _8 in _7){var _9=this.getField(_8),_10=_1[_8],_11=this.fieldIsComplexType(_8);var _12=_1[_8];if(_2.startRowTag==_9.name&&_12==null){_12=_2.dsRequest?_2.dsRequest.startRow:null}else if(_2.endRowTag==_9.name&&_12==null){_12=_2.dsRequest?_2.dsRequest.endRow:null}else if(_11&&_5&&_12==null){_12=_1}
+var _13=(_9.xmlRequired&&!_9.xmlAttribute)||(_1[_8]!=null||(_6&&!_9.xmlAttribute));if(_5&&_11){var _14=this.getSchema(_9.type),_15=isc.clone(_2.nsPrefixes),_16=_14.xmlSerializeFields(_12,_2);if(_16!=null&&!isc.isAn.emptyString(_16)){_13=true}
+_2.nsPrefixes=_15}
+if(_13){if(_5&&_11&&_1[_8]!=null&&!isc.DS.isSimpleTypeValue(_1[_8])&&!_2.recursiveFlatFields)
+{_2=isc.addProperties({},_2);_2.flatData=false}
+_4.append(this.xmlSerializeField(_8,_12,_2,_3))}
+if(!_5&&_1[_8]!=null)delete _1[_8]}
+if(!_5&&!isc.isA.Schema(this)){for(var _8 in _1){_4.append(this.xmlSerializeField(_8,_1[_8],_2,_3))}}
+return _4.toString()}
+,isc.A.xmlSerializeField=function isc_DataSource_xmlSerializeField(_1,_2,_3,_4){var _5=isc.SB.create(),_6=this.getField(_1);if(_6==null&&(_1.startsWith("_")||_1.startsWith("$")))return;var _7=(_6?_6.type:null),_8=_3&&_3.flatData,_9=_3&&_3.spoofData,_4=_4||"";if(_9)_2=this.getSpoofedData(_6);if(this.logIsDebugEnabled("xmlSerialize")){this.logDebug("serializing fieldName: "+_1+" with type: "+_7+" with value: "+this.echo(_2),"xmlSerialize")}
+var _10=((_6&&_6.mustQualify)||_3.qualifyAll?this.getSchemaSet().schemaNamespace:null);var _11=_3.textContentProperty||this.textContentProperty,_12=this.getTextContentField();if(_1==_11&&(_12!=null||!this.hasXMLElementFields(_11)))
+{this.$45z=true;return this.$38f(_12,_2)}
+if(_7==this.$41v&&_2!=null){if(_2.iscAction){_2=_2.iscAction}else if(isc.isA.StringMethod(_2)){_2=_2.value}}
+var _13=isc.Comm.$36u(_1,_6?_6.type:null,_10,_3.nsPrefixes),_14=isc.Comm.$36v(_1,_10,_3.nsPrefixes);var _15=isc.isAn.Array(_2)?_2:[_2];if(!_6&&_3.schema&&_3.schema.getField){_6=_3.schema.getField(_1)}
+if(this.fieldIsComplexType(_1)){var _16=_3.parentSchemaNamespace;_3.parentSchemaNamespace=this.schemaNamespace;var _17=this.getFieldDataSource(_6,_6&&_6.xsElementRef?"element":null);if(_6.multiple){_5.append("\r",_4,_13);for(var i=0;i<_15.length;i++){_5.append(_17.xmlSerialize(_15[i],_3,_4+" ",_6.childTagName))}
+_5.append("\r",_4,_14)}else if(_17.canBeArrayValued&&isc.isAn.Array(_2)){_5.append(_17.xmlSerialize(_2,_3,_4,_1))}else{for(var i=0;i<_15.length;i++){var _2=_15[i];if(_2==null){_5.append("\r",_4)
+_5.append(_13,_14)}else if(isc.DS.isSimpleTypeValue(_2)){if(isc.isA.String(_2)&&isc.startsWith(_2,"ref:")){_5.append("\r",_4)
+_5.append(_13);var _19=(_6?_6.childTagName||_6.type:"value");_5.append("<",_19," ref=\"",_2.substring(4),"\"/>");_5.append(_14)}else{this.logWarn("simple type value "+this.echoLeaf(_2)+" passed to complex field '"+_6.name+"'","xmlSerialize");_5.append("\r",_4)
+_5.append(isc.Comm.xmlSerialize(_1,_2))}}else{_5.append(_17.xmlSerialize(_2,_3,_4,_1))}}}
+_3.parentSchemaNamespace=_16}else if(_6!=null){if(_6.xsElementRef){var _20=this.getType(_6.type);if(_20&&_20.schemaNamespace)
+{_10=_20.schemaNamespace}}
+if(_6.multiple){_5.append("\r",_4,_13,"\r");for(var i=0;i<_15.length;i++){_5.append(this.$38g(_6.childTagName,_6,_15[i],_10,_3),"\r",_4)}
+_5.append("\r",_4,_14,"\r")}else{for(var i=0;i<_15.length;i++){_5.append("\r",_4,this.$38g(_1,_6,_15[i],_10,_3))}}}else{for(var i=0;i<_15.length;i++){if(_15[i]==null||isc.isAn.emptyObject(_15[i])){_5.append("\r",_4,_13,_14)}else{_5.append("\r",_4,isc.Comm.$ew(_1,_15[i],_4,{isRoot:false}))}}}
+return _5.toString()}
+,isc.A.$38g=function isc_DataSource__serializeSimpleTypeTag(_1,_2,_3,_4,_5){var _6=_2.type,_5=_5||{};if(isc.isAn.Object(_3)&&!isc.isA.Function(_3.$ew)){return isc.Comm.xmlSerialize(_1||null,_3)}else{var _6=this.$38h(_6);if(_3==null&&_2.nillable){var _7=_1||"value";return isc.Comm.$36u(_7,null,_4,_5.nsPrefixes,true)+" xsi:nil=\"true\"/>"}
+if(isc.isA.Date(_3)){_3=_3.toSchemaDate(_2.type)}else if(_3!=null&&_3.$ew){return _3.$ew(_1,_6,_4)}else{_3=isc.makeXMLSafe(_3)}
+return isc.Comm.$ex(_1||"value",_3,_6,_4,_5.nsPrefixes)}}
+,isc.A.$38f=function isc_DataSource__serializeSimpleTypeValue(_1,_2){if(isc.isA.Date(_2)){return _2.toSchemaDate(_1?_1.type:null)}else{return isc.makeXMLSafe(_2)}}
+,isc.A.$38h=function isc_DataSource__getXMLSchemaType(_1){switch(_1){case"integer":return"int";case"number":return"long";default:return _1}}
+,isc.A.xmlSerializeSample=function isc_DataSource_xmlSerializeSample(){return this.xmlSerialize({},{spoofData:true})}
+,isc.A.getSpoofedData=function isc_DataSource_getSpoofedData(_1){if(!_1)return"textValue";if(this.getSchema(_1.type)!=null)return{};if(_1.multiple){_1={type:_1.type};return[this.getSpoofedData(_1),this.getSpoofedData(_1)]}
+if(_1.valueMap){var _2=!isc.isAn.Array(_1.valueMap)?isc.getKeys(_1.valueMap):_1.valueMap;return _2[Math.round(Math.random()*(_2.length-1))]}
+var _3=isc.SimpleType.getBaseType(_1.type);switch(_3){case"boolean":return(Math.random()>0.5);case"integer":case"int":case"number":var _4=0,_5=10;if(_1.validators){var _6=_1.validators.find("type","integerRange")||_1.validators.find("_constructor","integerRange");if(_6){this.logWarn(_1.name+" has "+_6.type+" validator "+" with min "+_6.min+" and max "+_6.max);_4=_6.min||0;_5=_6.max||Math.min(_4,10);if(_4>_5)_4=_5}}
+return Math.round(_4+(Math.random()*(_5-_4)));case"float":case"decimal":case"double":var _4=0,_5=10,_7=2;if(_1.validators){var _6=_1.validators.find("type","floatRange")||_1.validators.find("_constructor","floatRange");if(_6){this.logWarn(_1.name+" has "+_6.type+" validator "+" with min "+_6.min+" and max "+_6.max);_4=_6.min||0;_5=_6.max||Math.min(_4,10);if(_4>_5)_4=_5}
+var _8=_1.validators.find("type","floatPrecision")||_1.validators.find("_constructor","floatPrecision");if(_8){_7=_8.precision||2}}
+return(_4+(Math.random()*(_5-_4))).toFixed(_7);case"date":case"time":case"datetime":var _9=new Date();if(_1.validators){var _6=_1.validators.find("type","dateRange")||_1.validators.find("_constructor","dateRange");if(_6){this.logWarn(_1.name+" has "+_6.type+" validator "+" with min "+_6.min+" and max "+_6.max);if(_6.min)_9=_6.min;else if(_6.max)_9=_6.max}}
+return _9;default:return"textValue"}}
+,isc.A.getSerializeableFields=function isc_DataSource_getSerializeableFields(_1,_2){var _3=this.Super("getSerializeableFields",arguments);var _4=_3.fields;_4=isc.getValues(_4);for(var i=0;i<_4.length;i++){var _6=_4[i]=isc.addProperties({},_4[i]);var _7=_6.validators;if(_7){_6.validators=_7.findAll("_generated",null);if(_6.validators==null)delete _6.validators}}
+_3.fields=_4;return _3}
+,isc.A.$378=function isc_DataSource__handleXMLReply(_1,_2,_3,_4){var _5=_1,_6=_4._dsRequest,_7=this.getOperationBinding(_6),_8;if(_3.status<0){var _9=_2||_3.data;this.$38b(_9,{status:_3.status,data:_9},_6,_3,_4);return}
+if(_5){if(_7.wsOperation){var _10=this.getWebService(_6),_8=_10.getOutputNamespaces(_7.wsOperation);_5.addNamespaces(_8)}
+_5.addNamespaces(this.xmlNamespaces);_5.addNamespaces(_7.xmlNamespaces)}
+var _11=isc.addProperties({},_8,this.xmlNamespaces,_7.xmlNamespaces);this.dsResponseFromXML(_5,_6,_11,{target:this,methodName:"$57b",xmlData:_5,dsRequest:_6,rpcRequest:_4,rpcResponse:_3})}
+,isc.A.$57b=function isc_DataSource__completeHandleXMLReply(_1,_2){this.$38b(_2.xmlData,_1,_2.dsRequest,_2.rpcResponse,_2.rpcRequest)}
+,isc.A.dsResponseFromXML=function isc_DataSource_dsResponseFromXML(_1,_2,_3,_4){if(_1){this.selectRecords(_1,_2,{target:this,methodName:"$57c",dsRequest:_2,callback:_4,xmlData:_1,xmlNamespaces:_3})}else{this.$57c([],_2,_3,_4)}}
+,isc.A.$57c=function isc_DataSource__completeDSResponseFromXML(_1,_2,_3,_4){if(!_4&&_2.callback)_4=_2.callback;if(_2.xmlNamespaces)_3=_2.xmlNamespaces;if(_2.dsRequest)_2=_2.dsRequest;if(_3==null)_3=this.xmlNamespaces;var _5={data:_1,startRow:_2.startRow||0,status:0};_5.endRow=_5.startRow+Math.max(0,_1.length-1);_5.totalRows=Math.max(_5.endRow,_1.length);var _6=_4.xmlData;if(_6){if(this.totalRowsXPath){_5.totalRows=isc.xml.selectNumber(_6,this.totalRowsXPath,_3,true)}
+if(this.startRowXPath){_5.startRow=isc.xml.selectNumber(_6,this.startRowXPath,_3,true);_5.endRow=_5.startRow+Math.max(0,_1.length-1)}
+if(this.endRowXPath){_5.endRow=isc.xml.selectNumber(_6,this.endRowXPath,_3,true);if(!this.startRowXPath){_5.startRow=_5.endRow-Math.max(0,_1.length-1)}}
+if(this.statusXPath){_5.status=parseInt(isc.xml.selectScalar(_6,this.statusXPath,_3,true))}
+if(this.errorSchema){_5.errors=this.errorSchema.selectRecords(_6,_2)}}
+if(_4)this.fireCallback(_4,"dsResponse",[_5,_4])
+return _5}
+,isc.A.selectRecords=function isc_DataSource_selectRecords(_1,_2,_3){var _4=this.selectRecordElements(_1,_2);var _5=this.getOperationBinding(_2),_6=this.getSchema(_5.responseDataSchema)||this;return _6.recordsFromXML(_4,_3)}
+,isc.A.recordsFromXML=function isc_DataSource_recordsFromXML(_1,_2){if(_1&&!isc.isAn.Array(_1)){if(_1.length!=null)_1=isc.xml.$37m(_1);else _1=[_1]}
+if(_1&&this.transformResponseToJS){if(_1.length>this.resultBatchSize){var _3={startingRow:0,callback:_2,elements:_1};return this.$57d(_3)}
+var _4=this.dropExtraFields?this.getFieldNames():null;_1=isc.xml.toJS(_1,_4,this);if(this.logIsDebugEnabled("xmlBinding")){this.logDebug("transformed response: "+this.echoFull(_1)+"xmlBinding")}}
+if(_2){this.fireCallback(_2,"records",[_1,_2])}
+return _1}
+,isc.A.$57d=function isc_DataSource__asyncRecordsFromXML(_1){var _2=_1.elements,_3=_1.startingRow,_4=_1.callback,_5=Math.min(_2.length,_3+this.resultBatchSize),_6=this.dropExtraFields?this.getFieldNames():null;if(!_1.$57e){_1.$57e=isc.xml.toJS(_2.slice(_3,_5+1),_6,this)}else{var _7=isc.xml.toJS(_2.slice(_3,_5+1),_6,this);_1.$57e.addList(_7)}
+if(_5<_2.length){_1.startingRow=_5+1;this.delayCall("$57d",[_1])}else if(_4){this.fireCallback(_4,"records",[_1.$57e,_4])}}
+,isc.A.selectRecordElements=function isc_DataSource_selectRecordElements(_1,_2){if(isc.isA.String(_1))_1=isc.xml.parseXML(_1);var _3=this.getOperationBinding(_2);var _4=_3==this?null:_3.recordXPath,_5=_3==this?null:_3.recordName,_6=this.recordXPath,_7=this.recordName;if(_4==null&&(_5!=null||(_6==null&&_7!=null))&&this.hasWSDLService(_2))
+{var _8=this.getWebService(_2);return _8.selectByType(_1,_3.wsOperation||this.wsOperation,_5||_7)}
+var _9=_4||_6,_10;if(_9){_10=isc.xml.selectNodes(_1,_9,this.xmlNamespaces);this.logDebug("applying XPath: "+_9+(this.xmlNamespaces?" with namespaces: "+this.echo(this.xmlNamespaces):"")+" got "+(_10?_10.length:null)+" elements","xmlBinding")}else{_10=[];var _11=_5||_7||this.ID;var _12=_1.getElementsByTagName(_11);for(var i=0;i<_12.length;i++)_10.add(_12[i]);this.logDebug("getting elements of tag name: "+_11+" got "+_10.length+" elements","xmlBinding")}
+return _10}
+,isc.A.$38b=function isc_DataSource__completeResponseProcessing(_1,_2,_3,_4,_5){if(!_2){_2={status:_4.status,httpResponseCode:_4.httpResponseCode}}
+if(_4!=null&&_5!=null){_2.httpResponseCode=_4.httpResponseCode;_2.transactionNum=_4.transactionNum;_2.clientContext=_5.clientContext;_2.httpHeaders=_4.httpHeaders}else{_2.clientContext=_3.clientContext}
+if(this.logIsInfoEnabled("xmlBinding")){this.logInfo("dsResponse is: "+this.echo(_2),"xmlBinding")}
+_2.context=_5;var _6=this.transformResponse(_2,_3,_1);_2=_6||_2;_2.startRow=this.$52v(_2.startRow,0);var _7=_2.endRow;if(_7==null){if(_2.status<0)_7=0;else if(isc.isAn.Array(_2.data))_7=_2.data.length;else _7=1}
+_2.endRow=this.$52v(_7);_2.totalRows=this.$52v(_2.totalRows,_2.endRow);if(this.useOfflineStorage&&_2.status==0&&!this.clientOnly){isc.DataSource.cacheResponse(_3,_2);if(isc.Offline&&!_2.fromOfflineCache){if(_3.unconvertedDSRequest){isc.Offline.storeResponse(_3.unconvertedDSRequest,_2)}else{isc.Offline.storeResponse(_3,_2)}}}
+if(_3&&_3.resultSet){if(_2.status==isc.RPCResponse.STATUS_OFFLINE){_3.resultSet.$78c=true}else{_3.resultSet.$78c=false}}else if(_3&&_3.resultTree){if(_2.status==isc.RPCResponse.STATUS_OFFLINE){_3.resultTree.$78c=true}else{_3.resultTree.$78c=false}}
+if(_2.relatedUpdates!=null){for(var i=0;i<_2.relatedUpdates.length;i++){if(_2.relatedUpdates[i].operationType==null){_2.relatedUpdates[i].operationType=_2.operationType}
+isc.DS.get(_2.relatedUpdates[i].dataSource).updateCaches(_2.relatedUpdates[i],null)}}
+this.fireResponseCallbacks(_2,_3,_4,_5)}
+);isc.evalBoundary;isc.B.push(isc.A.fireResponseCallbacks=function isc_DataSource_fireResponseCallbacks(_1,_2,_3,_4){if(!_1.clientContext)_1.clientContext={};if(_1.status>=0){isc.DataSource.handleUpdate(_1,_2)}else if(!_2.willHandleError){isc.RPCManager.$a0(_1,_2)}
+var _5=[_2.$376,_2.afterFlowCallback],_6=[];for(var i=0;i<_5.length;i++){var _8=_5[i];if(_6.contains(_8)){this.logWarn("Suppressed duplicate callback: "+_8);continue}
+var _9=this.fireCallback(_8,"dsResponse,data,dsRequest",[_1,_1.data,_2]);if(_4&&_4.willHandleError&&_9===false){this.logDebug("performOperationReply: Further processing cancelled by callback");break}
+if(_3){var _10=isc.RPCManager.getTransaction(_3.transactionNum);if(_10&&_10.suspended)return}}}
+,isc.A.$52v=function isc_DataSource__parseNumber(_1,_2){if(_1==null)return _2;if(!isc.isA.String(_1))return _1;var _3=parseInt(_1);if(isNaN(_3))return _2!=null?_2:_1;else return _3}
+,isc.A.transformResponse=function isc_DataSource_transformResponse(_1,_2,_3){return _1}
+,isc.A.getFieldValue=function isc_DataSource_getFieldValue(_1,_2,_3){var _4=isc.xml.getFieldValue(_1,_2,_3,this,this.xmlNamespaces);if(!_3.getFieldValue)return _4;if(!isc.isA.Function(_3.getFieldValue)){isc.Func.replaceWithMethod(_3,"getFieldValue","record,value,field,fieldName")}
+return _3.getFieldValue(_1,_4,_3,_2)}
+,isc.A.validateFieldValue=function isc_DataSource_validateFieldValue(_1,_2){if(!isc.Validator)return _2;var _3=_1.validators;if(!_3)return _2;if(!isc.isAn.Array(_3)){this.$2j[0]=_3;_3=this.$2j}
+var _4=_2;for(var i=0;i<_3.length;i++){var _6=_3[i];var _7=isc.Validator.processValidator(_1,_6,_2,null,null);if(!_7){this.logWarn(this.ID+"."+_1.name+": value: "+this.echoLeaf(_2)+" failed on validator: "+this.echo(_6));return _2}
+var _8;if(_6.resultingValue!==_8){_2=_6.resultingValue;_6.resultingValue=_8}
+if(!_7&&_6.stopIfFalse)break}
+this.$2j.length=0;return _2}
+,isc.A.getCriteriaFields=function isc_DataSource_getCriteriaFields(_1){return isc.DS.getCriteriaFields(_1,this)}
+,isc.A.$74s=function isc_DataSource__getAdvancedCriteriaFields(_1,_2){return isc.DS.$74s(_1,_2)}
+,isc.A.fetchRecord=function isc_DataSource_fetchRecord(_1,_2,_3){var _4={},_5=this.getPrimaryKeyField();if(_5==null){this.logWarn("This datasource has no primary key field. Ignoring fetchRecord call");return}
+var _6=_5.name;var _7;if(isc.isAn.Object(_1)&&_1[_6]!==_7){_4=_1}else{_4[_6]=_1}
+return this.fetchData(_4,_2,_3)}
+,isc.A.fetchData=function isc_DataSource_fetchData(_1,_2,_3){this.performDSOperation("fetch",_1,_2,_3)}
+,isc.A.filterData=function isc_DataSource_filterData(_1,_2,_3){if(!_3)_3={};if(_3.textMatchStyle==null)_3.textMatchStyle="substring";this.performDSOperation("fetch",_1,_2,_3)}
+,isc.A.exportClientData=function isc_DataSource_exportClientData(_1,_2,_3){return isc.DataSource.exportClientData(_1,_2,_3)}
+,isc.A.exportData=function isc_DataSource_exportData(_1,_2,_3,_4){if(!_2)_2={};if(this.canExport==false){isc.logWarn("Exporting is disabled for this DataSource. Set "+"DataSource.canExport to true to enable it.");return}
+if(_2.exportAs&&_2.exportAs.toLowerCase()=="json"&&_2.exportToClient!==false)
+{isc.logWarn("Export in JSON format with download to client is not allowed from a "+"client call - either specify exportToClient: false, or set "+"operationBinding.exportAs on your DataSource instead. The server "+"will reject this attempt.")}
+if(_2.textMatchStyle==null)_2.textMatchStyle="substring";var _5={};_5.exportResults=true;_5.exportAs=_2.exportAs||"csv";_5.exportDelimiter=_2.exportDelimiter||",";_5.exportTitleSeparatorChar=_2.exportTitleSeparatorChar||"";_5.exportFilename=_2.exportFilename||"Results."+(_5.exportAs=="ooxml"?"xlsx":_5.exportAs);_2.exportFilename=_5.exportFilename;_5.exportPath=_2.exportPath;_5.exportDisplay=_2.exportDisplay||"download";_5.lineBreakStyle=_2.lineBreakStyle||"default";_5.exportFields=this.getExportableDSFields(_2.exportFields||this.getVisibleDSFields(),_4);_5.exportHeader=_2.exportHeader;_5.exportFooter=_2.exportFooter;_5.exportFieldTitles=_2.exportFieldTitles;if(!_5.exportFieldTitles){var _6=_5.exportFields;var _7={};for(var i=0;i<_6.length;i++){var _9=_6[i];var _10;if(isc.isA.String(_9)){_10=_9;_9=this.getField(_10)}
+if(_9){if(_9.hidden)continue;_7[_9.name]=_9.exportTitle||_9.title}else{_7[_10]=_10}}
+_5.exportFieldTitles=_7}
+_2.downloadResult=(_2.exportToClient!==false);_2.downloadToNewWindow=_2.exportDisplay=="window"?true:false;if(_2.downloadToNewWindow){if(_5.exportFilename.endsWith(".xml")&&_5.exportAs!="xml"){_5.exportFilename=_5.exportFilename+".txt"}
+_2.download_filename=_2.exportFilename;_1=_1||{};_1.download_filename=_2.download_filename}
+_2.showPrompt=false;_2.parameters=_5;this.performDSOperation("fetch",_1,_3,_2)}
+,isc.A.getVisibleDSFields=function isc_DataSource_getVisibleDSFields(){var _1=[];var _2=this.fields;if(!isc.isAn.Array(_2)){_2=[];for(var _3 in this.fields){_2.add(this.fields[_3])}}
+for(var i=0;i<_2.length;i++){var _5=_2.get(i);if(!_5.hidden)_1.add(_5.name)}
+return _1}
+,isc.A.getExportableDSFields=function isc_DataSource_getExportableDSFields(_1,_2){var _3=[];if(this.canExport){for(var i=0;i<_1.length;i++){var _5=this.getField(_1[i]);if(!_5&&_2&&_2.getField){_5=_2.getField(_1[i]);if(_5&&_5.includeFrom&&_5.canExport!=false){_3.add(_1[i])}
+continue}
+if(_5&&_5.canExport!=false)
+_3.add(_5.name)}}
+return _3}
+,isc.A.getClientOnlyDataSource=function isc_DataSource_getClientOnlyDataSource(_1,_2,_3,_4){var _5=_1,_6=_2,_7=this;if(this.cacheAllData&&this.hasAllData()){var _8=isc.DataSource.create({inheritsFrom:_7,clientOnly:true,useParentFieldOrder:true,testData:this.cacheResultSet.getAllRows()},_4);_7.fireCallback(_6,"dataSource",[_8]);return _8}else{this.fetchData(_5,function(_10,_11){var _9=_10.totalRows;_7.fetchData(_5,function(_10,_11){var _8=isc.DataSource.create({inheritsFrom:_7,clientOnly:true,useParentFieldOrder:true,testData:_11},_4);_7.fireCallback(_6,"dataSource",[_8])},isc.addProperties({},_3,{startRow:0,endRow:_9}))},isc.addProperties({},_3,{startRow:0,endRow:0}))}}
+,isc.A.addData=function isc_DataSource_addData(_1,_2,_3){if(isc.Offline&&isc.Offline.isOffline()&&this.contactsServer()){isc.logWarn("Data cannot be saved because you are not online");return}
+this.performDSOperation("add",_1,_2,_3)}
+,isc.A.updateData=function isc_DataSource_updateData(_1,_2,_3){if(isc.Offline&&isc.Offline.isOffline()&&this.contactsServer()){isc.logWarn("Data cannot be saved because you are not online");return}
+this.performDSOperation("update",_1,_2,_3)}
+,isc.A.removeData=function isc_DataSource_removeData(_1,_2,_3){if(isc.Offline&&isc.Offline.isOffline()&&this.contactsServer()){isc.logWarn("Data cannot be saved because you are not online");return}
+var _4=this.getPrimaryKeyFields(),_1=isc.applyMask(_1,_4);this.performDSOperation("remove",_1,_2,_3)}
+,isc.A.contactsServer=function isc_DataSource_contactsServer(){return!this.clientOnly&&this.dataProtocol!="clientCustom"}
+,isc.A.validateData=function isc_DataSource_validateData(_1,_2,_3){if(!_3)_3={};_3=isc.addProperties(_3,{willHandleError:true});if(_3.validationMode==null)_3.validationMode="full";return this.performDSOperation("validate",_1,_2,_3)}
+,isc.A.performCustomOperation=function isc_DataSource_performCustomOperation(_1,_2,_3,_4){if(!_4)_4={};isc.addProperties(_4,{operationId:_1});this.performDSOperation("custom",_2,_3,_4)}
+,isc.A.$625=function isc_DataSource__getNextRequestId(){if(!this.$626)this.$626=[this.getID(),"$627"];this.$626[2]=isc.DataSource.$625();return this.$626.join(isc.emptyString)}
+,isc.A.performDSOperation=function isc_DataSource_performDSOperation(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;var _5=isc.addProperties({operationType:_1,dataSource:this.ID,data:_2,callback:_3,requestId:this.$625()},_4);if(_5.sortBy!=null){if(!isc.isAn.Array(_5.sortBy))_5.sortBy=[_5.sortBy];if(isc.isAn.Object(_5.sortBy[0])){_5.sortBy=isc.DS.getSortBy(_5.sortBy)}
+for(var i=0;i<_5.sortBy.length;i++){var _7=_5.sortBy[i];if(!isc.isA.String(_7))continue;var _8=this.getField(_7.charAt(0)=="-"?_7.substring(1):_7);if(_8&&_8.canSortClientOnly)_5.sortBy[i]=null}
+_5.sortBy.removeEmpty();if(_5.sortBy.length==0)delete _5.sortBy}
+return this.sendDSRequest(_5)}
+,isc.A.sendDSRequest=function isc_DataSource_sendDSRequest(_1){isc.addDefaults(_1,this.getOperationBinding(_1.operationType).requestProperties);isc.addDefaults(_1,this.requestProperties);var _2=this.getDataFormat(_1);if(_2=="iscServer"&&!this.clientOnly&&!isc.hasOptionalModule("SCServer")){if(this.dataURL==null&&this.testFileName==null){this.logError("DataSource: "+this.ID+": attempt to use DataSource of type iscServer without SmartClient Server option."+" Please either set clientOnly: true for one-time fetch against"+" dataURL/testFileName or upgrade to SmartClient Pro, Power or Enterprise");return}
+this.logInfo("Switching to clientOnly - no SmartClient Server installed.");this.clientOnly=true}
+if(_1.bypassCache==null){_1.bypassCache=this.shouldBypassCache(_1)}
+if(_1.showPrompt==null){_1.showPrompt=_1.downloadResult?false:this.showPrompt}
+if(!this.cacheAllData&&this.autoCacheAllData&&_1.downloadResult!=true&&_1.operationType=="fetch"&&_1.startRow==null&&_1.endRow==null&&(_1.data==null||isc.isAn.emptyObject(_1.data)))
+{if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("sendDSRequest: switching on cacheAllData","cacheAllData")}
+this.cacheAllData=true;this.$85n=isc.timestamp()}
+if(this.fetchingClientOnlyData(_1))return;if(this.logIsDebugEnabled()){this.logDebug("Outbound DSRequest: "+this.echo(_1))}
+_1.$376=_1.callback;var _3=_1.operationType;if((_3=="update"||_3=="add")&&(this.sparseUpdates||this.noNullUpdates))
+{_1.data=this.$708(_1.data,this);this.$79c(_1.data,_1.oldValues,_3,this)}
+if(_2=="iscServer"){this.$754(_1);_1.unconvertedDSRequest=isc.shallowClone(_1);if(this.autoConvertRelativeDates==true){if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Calling convertRelativeDates from sendDSRequest "+"- data is\n\n"+isc.echoFull(_4))}
+var _4=this.convertRelativeDates(_1.data);if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Called convertRelativeDates from sendDSRequest "+"- data is\n\n"+isc.echoFull(_4))}
+_1.data=_4}
+var _5=this.transformRequest(_1);if(_5!==_1){_4=_1.data=_5}
+var _6=this.getDataProtocol(_1);if(_6=="clientCustom")return;if((!this.clientOnly&&(!this.cacheAllData||_1.downloadResult))||(_1.cachingAllData||(this.cacheAllData&&_1.operationType&&_1.operationType!="fetch")))
+{if(this.logIsInfoEnabled("cacheAllData")&&_1.cachingAllData){this.logInfo("sendDSRequest: processing cacheAllData request","cacheAllData")}
+this.addDefaultCriteria(_1,this.getOperationBinding(_1));this.applySendExtraFields(_1);var _7=this.getOperationBinding(_1);if(_7==null)_7={};var _8=_7.defaultParams||this.defaultParams;if(_8){_1.data=isc.addProperties({},_8,_1.data)}
+_4=_1.data;return this.performSCServerOperation(_1,_4)}}
+var _9=this.getServiceInputs(_1);var _10=(this.cacheAllData&&_1.operationType=="fetch"&&!_1.cachingAllData&&!_1.downloadResult);if(_9.dataProtocol=="clientCustom"&&!_10)return;var _11=isc.addProperties({},_1,_9);_11._dsRequest=_1;if(_9.data==null)_11.data=null;if(this.clientOnly||_10){_11.clientOnly=true;_11.callback={target:this,methodName:"$50e"};isc.RPC.sendRequest(_11);return}
+var _12=this.getOperationBinding(_1);_11.transport=_12.dataTransport||this.dataTransport;if(_11.transport=="scriptInclude"){_11.callback={target:this,methodName:"$377"};if(!_11.callbackParam){_11.callbackParam=_12.callbackParam||this.callbackParam}
+isc.rpc.sendRequest(_11);return}
+var _2=this.getDataFormat(_1);if(_2=="xml"){var _13=_11.spoofedResponse;if(!_13){_11.callback={target:this,method:this.$378};isc.xml.getXMLResponse(_11)}else{var _14=this;isc.Timer.setTimeout(function(){_14.$378(isc.xml.parseXML(_13),_13,{status:0,httpResponseCode:200,data:_13},_11)})}}else if(_2=="json"){_11.callback={target:this,method:this.$379};isc.rpc.sendProxied(_11)}else if(_2=="csv"){_11.callback={target:this,method:this.$69k};isc.rpc.sendProxied(_11)}else{_11.serverOutputAsString=true;_11.callback={target:this,method:this.$38a};isc.rpc.sendProxied(_11)}}
+,isc.A.$79c=function isc_DataSource__applySparseAndNoNullUpdates(_1,_2,_3,_4){var _5=_4||this;if(!_5.noNullUpdates){if(!_5.sparseUpdates)return;if(_2==null)return}
+var _6={__ref:true,$81y:true,$29a:true};for(var _7 in _1){if(isc.isA.Function(_1[_7]))continue;if(_6[_7]==true)continue;if(isc.isAn.Instance(_1[_7])||isc.isA.Class(_1[_7]))continue;var _8=_1[_7];if(_5.noNullUpdates&&_8===null){if(_3=="add"&&_5.omitNullDefaultsOnAdd==true){delete _1[_7]}else{var _9=_5.getField(_7),_10;if(_9&&_9.nullReplacementValue!==_10){_1[_7]=_9.nullReplacementValue}else{var _11=isc.SimpleType.getBaseType(_9.type,_5);if(_11=="integer"){_1[_7]=_5.nullIntegerValue}else if(_11=="float"){_1[_7]=_5.nullFloatValue}else if(_11=="date"||_11=="time"){_1[_7]=_5.nullDateValue}else if(_11=="boolean"){_1[_7]=_5.nullBooleanValue}else{_1[_7]=_5.nullStringValue}}}}else if(_5.sparseUpdates&&_3=="update"){if(_2==null)continue;var _12=_2[_7];if(_12==null&&!(_8==null))continue;if(_5!=null){var _9=_5.getField(_7);if(_9&&_9.primaryKey)continue}
+if(isc.isA.Date(_8)&&Date.compareDates(_8,_12)==0){delete _1[_7]}else if(isc.isAn.Array(_8)){for(var i=0;i<_8.length;i++){this.$79c(_8[i],_12[i],_3,_9==null?null:isc.DataSource.get(_9.type));var _14=0;for(var _15 in _8[i])_14++;if(_14==0)delete _8[i]}
+var _16=false;for(var i=0;i<_8.length;i++){if(_8[i]!=null){_16=true;break}}
+if(!_16)delete _1[_7]}else if(isc.isAn.Object(_8)){this.$79c(_8,_12,_3,_9==null?null:isc.DataSource.get(_9.type));var _14=0;for(var _15 in _8)_14++;if(_14==0)delete _1[_7]}else if(_8==_12){delete _1[_7]}}}}
+,isc.A.$708=function isc_DataSource__cloneValues(_1,_2,_3){if(_1==null)return;var _4=_2?_2.deepCloneOnEdit:this.deepCloneOnEdit,_5=_4==null?isc.DataSource.deepCloneOnEdit:_4;if(isc.isAn.Array(_1)){var _6=[];for(var i=0;i<_1.length;i++){var _8=_1[i];if(isc.isA.Function(_8))continue;if(isc.isAn.Instance(_1[_10])||isc.isA.Class(_1[_10]))continue;if(_8==null||isc.isA.String(_8)||isc.isA.Boolean(_8)||isc.isA.Number(_8))
+{_6[_6.length]=_8}else if(isc.isA.Date(_8)){_6[_6.length]=new Date(_8.getTime())}else if(isc.isAn.Object(_8)){_6[_6.length]=this.$708(_8,_2,_3)}}
+return _6}
+var _6={};if(_1.$42c!=null){_1=isc.JSONEncoder.$42b(_1)}
+var _9={__ref:true,$81y:true,$29a:true};if(isc.DataSource.cloneValuesSafely){if(!_3)_3=[];if(_3.contains(_1)){_6=_1;return}
+_3.add(_1)}
+for(var _10 in _1){if(isc.isA.Function(_1[_10]))continue;if(_9[_10]==true)continue;if(isc.isAn.Instance(_1[_10])||isc.isA.Class(_1[_10]))continue;var _11=_1[_10];if(isc.isA.Date(_11)){_6[_10]=_11.duplicate()}else if(isc.isAn.Object(_11)){var _12=_2?_2.getField(_10):null;if(!_12){_6[_10]=_1[_10]}else{if(_12.deepCloneOnEdit==true||(_12.deepCloneOnEdit==null&&_5))
+{if(isc.DataSource.cloneValuesSafely){if(_3.contains(_11)){_6[_10]=_1[_10];continue}
+_3.add(_11)}
+_6[_10]=this.$708(_11,isc.DataSource.get(_12.type))}else{_6[_10]=_1[_10]}}}else{_6[_10]=_1[_10]}}
+return _6}
+,isc.A.fulfilledFromOffline=function isc_DataSource_fulfilledFromOffline(_1){var _2=_1.unconvertedDSRequest?_1.unconvertedDSRequest:_1;if(this.useOfflineStorage&&isc.Offline){var _3=_1.dataSource+"."+_1.operationType;if(isc.Offline.isOffline()){var _4=isc.Offline.getResponse(_2);this.logInfo("currently offline, for request: "+_3+" found cached response: "+this.echoLeaf(_4),"offline");if(this.useOfflineResponse&&!this.useOfflineResponse(_2,_4)){this.logInfo("User-written useOfflineResponse() method returned false; "+"not using cached response","offline");_4=null}
+this.processOfflineResponse(_1,_4);return true}else if(_2.useOfflineCache||_2.useOfflineCacheOnly){var _4=isc.Offline.getResponse(_2);if(_4!=null){this.logInfo("request: "+_3+", returning cached offline response","offline");if(this.useOfflineResponse&&!this.useOfflineResponse(_2,_4)){this.logInfo("User-written useOfflineResponse() method returned false; "+"not using cached response","offline");_4=null}
+this.processOfflineResponse(_1,_4);return true}else if(_1.useOfflineCacheOnly){this.logInfo("request: "+_3+": useOfflineCacheOnly: no response available","offline");this.processOfflineResponse(_1);return true}
+this.logInfo("request: "+_3+", no cached response, proceeding with network request","offline")}}
+return false}
+,isc.A.processOfflineResponse=function isc_DataSource_processOfflineResponse(_1,_2){if(!_2)_2={status:isc.RPCResponse.STATUS_OFFLINE,data:isc.DataSource.offlineMessage,clientContext:_1.clientContext};_2.isCachedResponse=true;this.fireResponseCallbacks(_2,_1)}
+,isc.A.performSCServerOperation=function isc_DataSource_performSCServerOperation(_1,_2){this.logWarn("Attempt to perform iscServer request requires options SmartClient server "+"support - not present in this build.\nRequest details:"+this.echo(_1));return}
+,isc.A.getSchema=function isc_DataSource_getSchema(_1,_2){var _3=this.getSchemaSet();if(_3!=null){var _4=_3.getSchema(_1,_2);if(_4!=null)return _4}
+var _5=this.getWebService();if(isc.isA.WebService(_5))return _5.getSchema(_1,_2);return isc.DS.get(_1,null,null,_2)}
+,isc.A.getTitle=function isc_DataSource_getTitle(){return this.title||this.ID}
+,isc.A.getPluralTitle=function isc_DataSource_getPluralTitle(){return this.pluralTitle||(this.getTitle()+"s")}
+,isc.A.getTitleField=function isc_DataSource_getTitleField(){if(this.titleField==null){var _1=isc.getKeys(this.getFields());var _2=_1.map("toLowerCase");for(var i=0;i<this.defaultTitleFieldNames.length;i++){var _4=_2.indexOf(this.defaultTitleFieldNames[i]);if(_4!=-1&&!this.getField(_1[_4]).hidden){this.titleField=_1[_4];break}}
+if(this.titleField==null){for(var i=0;i<_1.length;i++){if(this.getField(_1[i]).hidden)continue;this.titleField=_1[i];break}
+if(this.titleField==null)this.titleField=_1[0]}}
+return this.titleField}
+,isc.A.getIconField=function isc_DataSource_getIconField(){var _1;if(this.iconField===_1){this.iconField=null;var _2=isc.getKeys(this.getFields());var _3=["picture","thumbnail","icon","image","img"];for(var i=0;i<_3.length;i++){var _5=_3[i],_6=this.getField(_5);if(_6&&isc.SimpleType.inheritsFrom(_6.type,"image")){this.iconField=_5}}}
+return this.iconField}
+,isc.A.initViewSources=function isc_DataSource_initViewSources(){var _1=this.fields={};for(var _2 in this.sources){var _3=isc.DS.get(_2);if(!_3)continue;var _4=this.sources[_2].fields;for(var _5 in _4){var _6=_4[_5],_7=null;if(_6=="*"){_7=_3.fields[_5]}else if(isc.isA.String(_6)){_7=_3.fields[_6]}else if(isc.isAn.Object(_6)){_7=isc.addProperties({},_3.fields[_3.fields[_6.field]]);isc.addProperties(_7,_6)}
+if(_7)_1[_5]=_7}}}
+,isc.A.inheritsSchema=function isc_DataSource_inheritsSchema(_1){if(_1==null)return false;if(isc.isA.String(_1))_1=this.getSchema(_1);if(_1==this||_1==isc.DS.get("Object"))return true;if(!this.hasSuperDS())return false;return this.superDS().inheritsSchema(_1)}
+,isc.A.getInheritedProperty=function isc_DataSource_getInheritedProperty(_1){if(this[_1])return this[_1];var _2=this.superDS();return _2?_2.getInheritedProperty(_1):null}
+,isc.A.hasSuperDS=function isc_DataSource_hasSuperDS(){if(this.inheritsFrom)return true;return false}
+,isc.A.superDS=function isc_DataSource_superDS(){if(this.hasSuperDS())return this.getSchema(this.inheritsFrom);return null}
+,isc.A.getField=function isc_DataSource_getField(_1){if(isc.isAn.Object(_1))_1=_1.name;var _2=this.getFields();return _2?_2[_1]:null}
+,isc.A.getFieldForDataPath=function isc_DataSource_getFieldForDataPath(_1){if(isc.isAn.Object(_1))_1=_1.dataPath;if(!_1)return null;var _2=_1.trim(isc.Canvas.$70l).split(isc.Canvas.$70l);var _3=this;for(var i=0;i<_2.length;i++){var _5=_3.getField(_2[i]);if(!_5)return null;_3=isc.DataSource.get(_5.type)}
+return _5}
+,isc.A.getDataSourceForDataPath=function isc_DataSource_getDataSourceForDataPath(_1){if(isc.isAn.Object(_1))_1=_1.dataPath;if(!_1)return null;var _2=_1.trim(isc.Canvas.$70l).split(isc.Canvas.$70l);var _3=this;for(var i=0;i<_2.length-1;i++){var _5=_3.getField(_2[i]);if(!_5)return null;_3=isc.DataSource.get(_5.type)}
+return _3}
+,isc.A.getFieldByTitle=function isc_DataSource_getFieldByTitle(_1){var _2=isc.getValues(this.getFields());for(var i=0;i<_2.length;i++){var _4=_2[i],_5=_4.title||isc.DS.getAutoTitle(_2[i].name);if(_5==_1)return _4}
+return null}
+,isc.A.getDisplayValue=function isc_DataSource_getDisplayValue(_1,_2){var _3=this.getField(_1);if(_3==null)return _2;if(isc.isAn.Object(_3.valueMap)&&!isc.isAn.Array(_3.valueMap)&&isc.propertyDefined(_3.valueMap,_2))
+{return _3.valueMap[_2]}
+return _2}
+,isc.A.getFieldNames=function isc_DataSource_getFieldNames(_1){if(isc.$cv)arguments.$cw=this;if(!_1)return isc.getKeys(this.getFields());var _2=this.getFields(),_3=[],_4=0;for(var _5 in _2){if(!_2[_5].hidden)_3[_4++]=_5}
+return _3}
+,isc.A.getLocalFields=function isc_DataSource_getLocalFields(_1){if(this.$38k)return this.fields;if(_1)return this.fields;this.$38l();this.$63p();this.$38k=true;return this.fields}
+,isc.A.getFields=function isc_DataSource_getFields(){if(isc.$cv)arguments.$cw=this;if(this.mergedFields)return this.mergedFields;if(!this.hasSuperDS()||this==this.superDS()){return this.mergedFields=this.getLocalFields()}
+if(!this.superDS()){this.logWarn("DataSource "+this.ID+" inheritsFrom "+this.inheritsFrom+", but there is no DataSource of that name currently loaded. "+"Ignoring the inheritsFrom declaration.");return this.mergedFields=this.getLocalFields()}
+var _1=this.superDS();if(this.showLocalFieldsOnly||this.restrictToLocalFields){this.useParentFieldOrder=false}
+var _2=isc.addProperties({},this.getLocalFields()),_3;if(!this.useParentFieldOrder){_3=_2}else{_3={}}
+var _4=(this.restrictToLocalFields?isc.getKeys(this.getLocalFields()):_1.getFieldNames());for(var i=0;i<_4.length;i++){var _6=_4[i],_7=_2[_6];if(_7!=null){var _8=_1.getField(_6);if(_8.hidden&&_7.hidden==null&&!_7.inapplicable)
+{_7.hidden=false}
+if(_8.visibility!=null&&_7.visibility==null&&!_7.inapplicable&&!_7.hidden&&_8.visibility=="internal")
+{_7.visibility="external"}
+var _9=isc.addProperties({},_7);_3[_6]=_1.combineFieldData(_7);if(_9.$76s)_3[_6].title=_8.title}else{if(this.showLocalFieldsOnly){_3[_6]=isc.addProperties({},_1.getField(_6));_3[_6].hidden="true"}else{_3[_6]=_1.getField(_6)}}
+if(this.useParentFieldOrder)delete _2[_6]}
+if(this.useParentFieldOrder)isc.addProperties(_3,_2);if(this.restrictToLocalFields&&isc.Schema&&isc.isA.Schema(this)){var _10=_1.getFieldNames();for(var i=0;i<_10.length;i++){var _6=_10[i],_11=_1.getField(_6);if(_11.xmlAttribute){_3[_6]=_3[_6]||_11}}}
+return this.mergedFields=_3}
+,isc.A.hasFields=function isc_DataSource_hasFields(){if(this.fields)return true;else if(this.inheritsFrom){var _1=this;while(_1.inheritsFrom){_1=isc.DataSource.get(this.inheritsFrom);if(_1.fields)return true}}
+return false}
+,isc.A.getFlattenedFields=function isc_DataSource_getFlattenedFields(_1,_2,_3){_1=_1||{};var _4=this.getFieldNames();for(var i=0;i<_4.length;i++){var _6=_4[i],_7=this.getField(_6);if(!this.fieldIsComplexType(_6)){if(_1[_6]==null){_7.sourceDS=this.ID;if(_2){_7=isc.addProperties({},_7);_7[_3]=_2+"/"+_6}
+_1[_6]=_7}}else{var _8=this.getFieldDataSource(_7);if(_2!=null)_2=(_2?_2+"/":"")+_6;_8.getFlattenedFields(_1,_2,_3)}}
+return _1}
+,isc.A.fieldIsComplexType=function isc_DataSource_fieldIsComplexType(_1){var _2=this.getField(_1);if(_2==null)return false;return(_2.type!=null&&!_2.xmlAttribute&&this.getSchema(_2.type)!=null)||this.fieldIsAnonDataSource(_2)}
+,isc.A.fieldIsAnonDataSource=function isc_DataSource_fieldIsAnonDataSource(_1){if(!_1.fields)return false;var _2=isc.isAn.Array(_1.fields)?_1.fields:isc.getValues(_1.fields);return _2.length>0&&isc.isAn.Object(_2.get(0))}
+,isc.A.getFieldDataSource=function isc_DataSource_getFieldDataSource(_1,_2){if(!_1)return null;if(this.fieldIsAnonDataSource(_1)){if(!_1.$67z){var _3=isc.DataSource.create({"class":"DataSource",fields:_1.fields});_1.$67z=_3}
+return _1.$67z}
+return _1.type!=null?this.getSchema(_1.type,_2):null}
+,isc.A.findTagOfType=function isc_DataSource_findTagOfType(_1,_2,_3){var _4=this.getFieldNames();for(var i=0;i<_4.length;i++){var _6=_4[i],_7=this.getField(_6);if(_7.type==_1)return[this,_6,_2,_3];if(this.fieldIsComplexType(_6)){var _8=this.getFieldDataSource(_7),_9=_8.findTagOfType(_1,this,_6);if(_9)return _9}}}
+,isc.A.getTextContentField=function isc_DataSource_getTextContentField(){return this.getField(this.textContentProperty)}
+,isc.A.hasXMLElementFields=function isc_DataSource_hasXMLElementFields(_1){_1=_1||this.textContentProperty;var _2=this.getFieldNames();for(var i=0;i<_2.length;i++){if(_2[i]==_1)continue;if(this.getField(_2[i]).xmlAttribute)continue;return true}
+return false}
+,isc.A.getGroups=function isc_DataSource_getGroups(){var _1=this;while(_1.groups==null&&_1.hasSuperDS())_1=_1.superDS();return _1.groups}
+,isc.A.getObjectField=function isc_DataSource_getObjectField(_1,_2,_3){if(!_1)return null;var _4=this.getLocalFields(),_5=isc.getKeys(_4).reverse(),_6=isc.DataSource.getNearestSchemaClass(_1);if(_3==null)_3={};var _7=-1,_8=null;for(var i=0;i<_5.length;i++){var _10=_5[i],_11=_4[_10],_12;if(isc.endsWith(_10,this.$dr)||isc.endsWith(_10,this.$dq))continue;if(!_2&&(_3[_10]||_11.advanced||_11.inapplicable||_11.hidden||(_11.visibility!=null&&_11.visibility=="internal")))
+{_3[_10]=_10;continue}
+if(!_6&&_11.type==_1)return _10;if(_6&&_6.isA(_11.type)){_12=isc.DS.getInheritanceDistance(_11.type,_1);if(_8==null||_12<_7){_8=_10;_7=_12}}}
+if(_8!=null){if(_7==0||!this.hasSuperDS()){return _8}else{var _13=this.superDS().getObjectField(_1,_2,_3);if(_13){var _14=this.getField(_13).type,_15=isc.DS.getInheritanceDistance(_14,_1)}
+return(_13&&(_15<_7))?_13:_8}}else if(this.hasSuperDS()){return this.superDS().getObjectField(_1,_2,_3)}
+return null}
+,isc.A.getLocalPrimaryKeyFields=function isc_DataSource_getLocalPrimaryKeyFields(){if(!this.primaryKeys){this.primaryKeys={};var _1=this.getFields();for(var _2 in _1){var _3=_1[_2];if(_3.primaryKey){this.primaryKeys[_2]=_3}}}
+return this.primaryKeys}
+,isc.A.filterPrimaryKeyFields=function isc_DataSource_filterPrimaryKeyFields(_1){var _2=this.getPrimaryKeyFields();return isc.applyMask(_1,isc.getKeys(_2))}
+,isc.A.filterDSFields=function isc_DataSource_filterDSFields(_1){var _2=this.getFields();return isc.applyMask(_1,isc.getKeys(_2))}
+,isc.A.recordHasAllKeys=function isc_DataSource_recordHasAllKeys(_1){var _2=this.getPrimaryKeyFields();for(var _3 in _2){if(_1[_3]==null)return false}
+return true}
+,isc.A.getForeignKeysByRelation=function isc_DataSource_getForeignKeysByRelation(_1,_2){var _3=this.getForeignKeyFields(_2);if(!_3)return{};var _4={};for(var _5 in _3){var _6=_3[_5];var _7=isc.DataSource.getForeignFieldName(_6);var _8=_1[_7];if(_8||_8===0)_4[_5]=_8}
+return _4}
+,isc.A.getPrimaryKeyFields=function isc_DataSource_getPrimaryKeyFields(){if(!this.mergedPrimaryKeys){this.mergedPrimaryKeys={};if(this.hasSuperDS()){isc.addProperties(this.mergedPrimaryKeys,this.superDS().getPrimaryKeyFields())}
+isc.addProperties(this.mergedPrimaryKeys,this.getLocalPrimaryKeyFields())}
+return this.mergedPrimaryKeys}
+,isc.A.getForeignKeyFields=function isc_DataSource_getForeignKeyFields(_1){if(isc.isA.DataSource(_1))_1=_1.ID;var _2=this.getFields();if(!_2)return null;var _3={};for(var _4 in _2){var _5=_2[_4];if(_5.foreignKey){if(_1){var _6=isc.DataSource.getForeignDSName(_5,(_1||this));if(_6!=_1)continue}
+_3[_5.name]=_5}}
+return _3}
+,isc.A.getLocalPrimaryKeyFieldNames=function isc_DataSource_getLocalPrimaryKeyFieldNames(){var _1=this.getLocalPrimaryKeyFields();var _2=[];for(var _3 in _1){_2.add(_3)}
+return _2}
+,isc.A.getPrimaryKeyFieldNames=function isc_DataSource_getPrimaryKeyFieldNames(){return isc.getKeys(this.getPrimaryKeyFields())}
+,isc.A.getPrimaryKeyField=function isc_DataSource_getPrimaryKeyField(){var _1=this.getPrimaryKeyFields();for(var _2 in _1){return _1[_2]}}
+,isc.A.getPrimaryKeyFieldName=function isc_DataSource_getPrimaryKeyFieldName(){return this.getPrimaryKeyFieldNames()[0]}
+,isc.A.addChildDataSource=function isc_DataSource_addChildDataSource(_1){var _2=this.$38m=(this.$38m||[]);_2.add(_1)}
+,isc.A.getChildDataSources=function isc_DataSource_getChildDataSources(){return this.$38m}
+,isc.A.getChildDataSource=function isc_DataSource_getChildDataSource(_1){var _2=this.getChildDataSources();if(_2==null)return null;var _3;for(var i=0;i<_2.length;i++){if(!_2[i]||(_1&&_2[i]==this))continue;if(!_3){_3=_2[i]}else if(_3!=_2[i]){this.logInfo("getChildDatasource(): This DataSource has multiple child "+"DataSources defined making getChildDataSource() ambiguous. Returning the "+"first child dataSource only - call getChildDataSources() to retrieve a "+"complete list.");break}}
+return _3}
+,isc.A.getTreeRelationship=function isc_DataSource_getTreeRelationship(_1,_2){if(isc.isA.String(_1))_1=this.getSchema(_1);var _3=this.getFields();if(_2==null){for(var _4 in _3){var _5=_3[_4];if(_5.foreignKey!=null){if(!_1||(_1.getID()==isc.DataSource.getForeignDSName(_5,this)))
+{_2=_4;break}}}}
+var _6;if(_2==null&&_1){_2=_6=isc.getKeys(this.fields).intersect(isc.getKeys(_1.fields))[0];this.logWarn("no foreign key declaration, guessing tree relationship "+"is on field name: "+_2+" which occurs in both DataSources")}
+var _7;if(_2)_7=_3[_2];if(_7==null){this.logDebug("getTreeRelationship(): Unable to find foreignKeyField."+"foreignKeyFieldName specified as:"+_2)}
+if(!_1){if(!_7)_1=this;else{var _8=isc.DataSource.getForeignDSName(_7,this);_1=this.getSchema(_8)}}
+if(!_6)_6=_7?isc.DataSource.getForeignFieldName(_7):null;if(_6==null){var _9=_1.getPrimaryKeyFieldNames();if(isc.isAn.Array(_9)){if(_9.length>1){this.logWarn("getTreeRelationship: dataSource '"+_1.ID+"' has multi-field primary key, which is not "+"supported for tree viewing. Using field '"+_9[0]+"' as the only primary key field")}
+_9=_9[0]}
+_6=_9}
+var _10;var _11;if(this.childrenField)_11=this.childrenField;for(_4 in _3){var _7=_3[_4];if(_7.isFolderProperty)_10=_4;if(_7.childrenProperty)_11=_4;if(_11==_4&&(_7.multiple==null)){_7.multiple=true}}
+var _12={childDS:this,parentDS:_1,isFolderProperty:_10}
+if(_2){_12.parentIdField=_2;_12.idField=_6}
+if(_11)_12.childrenProperty=_11;if(_11==null&&_2==null){this.logInfo("getTreeRelationship(): No specified foreignKeyField or childrenProperty.")}
+if(_1==this){var _13=_2?this.getField(_2).rootValue:null;if(_13==null)_12.rootValue=null;else _12.rootValue=_13}
+return _12}
+,isc.A.combineFieldOrders=function isc_DataSource_combineFieldOrders(_1,_2,_3){var _4=[];this.$38n(_2,0,_1,_4,_3);for(var _5 in _1){var _6=_1[_5],_7=_2.findIndex(this.$375,_5);if(_7!=-1){var _8=_2[_7],_9=this.combineFieldData(_8);if(_3==null||_3(_9,this))_4.add(_9);this.$38n(_2,_7+1,_1,_4,_3)}else{if(_3==null||_3(_6,this)){_4.add(isc.addProperties({},_6))}}}
+return _4}
+,isc.A.$38n=function isc_DataSource__addNonDSFields(_1,_2,_3,_4,_5){for(var i=_2;i<_1.length;i++){var _7=_1[i];if(_7.name!=null&&_3[_7.name]!=null)return;if(_5==null||!_5(_7,this))continue;isc.SimpleType.addTypeDefaults(_7);_4.add(_7)}}
+,isc.A.combineFieldData=function isc_DataSource_combineFieldData(_1,_2){var _3;if(isc.isAn.Object(_2))_3=_2;else _3=this.getField(_2||_1.name);return isc.DataSource.combineFieldData(_1,_3)}
+,isc.A.$38l=function isc_DataSource__addTypeDefaults(_1){if(_1==null)_1=this.fields;for(var _2 in _1){var _3=_1[_2];if(_3&&_3.required==null&&_3.xmlRequired!=null&&_3.xmlNonEmpty!=null)
+{_3.required=_3.xmlRequired&&_3.xmlNonEmpty}
+if(_3&&(_3.childrenProperty||_3.name==this.childrenField)){if(!_3.type)_3.type=this.ID}
+isc.SimpleType.addTypeDefaults(_3,this);this.$75f(_3)}}
+,isc.A.$75f=function isc_DataSource__addFieldValidators(_1){var _2={type:"required"};if(_1.required){var _3=isc.addProperties({},_2),_4=_1.requiredMessage||this.requiredMessage;if(_4!=null)_3.errorMessage=_4;if(!_1.validators){_1.validators=[_3]}else{if(!isc.isAn.Array(_1.validators)){_1.validators=[_1.validators]}
+if(_1.validators.$69){_1.validators=_1.validators.duplicate()}
+_1.validators.add(_3)}}}
+,isc.A.$63p=function isc_DataSource__autoDeriveTitles(){if(!this.autoDeriveTitles)return;for(var _1 in this.fields){var _2=this.fields[_1];if(_2.title!=null)continue;_2.title=this.getAutoTitle(_1);_2.$76s=true}}
+,isc.A.getAutoTitle=function isc_DataSource_getAutoTitle(_1){return isc.DataSource.getAutoTitle(_1)}
+,isc.A.getType=function isc_DataSource_getType(_1){if(this.schemaNamespace){var _2=isc.SchemaSet.get(this.schemaNamespace),_3=_2.getSimpleType(_1);if(_3)return _3}
+var _3=isc.SimpleType.getType(_1);if(_3!=null)return _3;if(this.types&&this.types[_1])return this.types[_1];return null}
+,isc.A.firstCacheAllDataRequest=function isc_DataSource_firstCacheAllDataRequest(_1){if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("firstCacheAllDataRequest: refreshing cache","cacheAllData")}
+this.$498=[_1];if(this.$839==null){var _2=this.transformRequest,_3=this.transformResponse,_4=this.$ba;if(_4){if(_4.transformRequest){_2=this[isc.$ah+"transformRequest"]}
+if(_4.transformResponse){_3=this[isc.$ah+"transformResponse"]}}
+this.transformServerRequest=_2;this.transformServerResponse=_3;this.addMethods({transformRequest:function(_1){var _5=(_1.cachingAllData||(_1.operationType&&_1.operationType!="fetch"));if(!_5)return _1;return this.transformServerRequest(_1)},transformResponse:function(_9,_1,_10){var _5=(_1.cachingAllData||(_1.operationType&&_1.operationType!="fetch"));if(!_5){var _6=this.$85n,_7=_1.$85o;if(!_6||!_7||_7>=_6)
+return _9}
+return this.transformServerResponse(_9,_1,_10)}});this.$839=true}
+this.cacheResultSet=isc.ResultSet.create({dataSource:this,fetchMode:"local",allRows:this.cacheData?this.cacheData:null,cachingAllData:true,dataArrived:function(_9,_10){if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("cacheAllData - cacheResultSet.dataArrived: startRow/endRow: "+_9+"/"+_10)}
+if(this.lengthIsKnown()){var _8=this.getDataSource();if(_8.cacheResultSet==null)return;_8.cacheLastFetchTime=new Date().getTime();if(_8.clientOnly)_8.testData=_8.cacheData=this.getAllRows();_8.processDeferredRequests()}}});if(!this.cacheData){if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("firstCacheAllDataRequest: issuing fetch","cacheAllData")}
+this.cacheResultSet.get(0);return true}else{if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("firstCacheAllDataRequest: updating last fetch time","cacheAllData")}
+this.cacheLastFetchTime=new Date().getTime();if(this.clientOnly)this.testData=this.cacheData;this.processDeferredRequests();return true}}
+,isc.A.fetchingClientOnlyData=function isc_DataSource_fetchingClientOnlyData(_1){if(_1.cachingAllData){return false}
+if(_1.downloadResult){return false}
+var _2=(this.useTestDataFetch==null?this.shouldUseTestDataFetch():this.useTestDataFetch);if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("fetchingClientOnlyData: useTestDataFetch is "+_2,"cacheAllData")}
+if(this.clientOnly){_1.clientOnly=true;if(this.testData&&!this.cacheData)this.cacheData=this.testData;else if(this.cacheData&&!this.testData)this.testData=this.cacheData}
+if(this.$498){this.$498.add(_1);return true}
+if(_2==false&&this.clientOnly&&this.hasTestData())
+_2=true;if(!_2&&((this.cacheAllData&&this.cacheNeedsRefresh())||(this.clientOnly&&!this.testData&&this.hasTestData())))
+{return this.firstCacheAllDataRequest(_1)}else{if(this.clientOnly&&!this.testData&&(this.testFileName||this.dataURL)||(this.cacheAllData&&this.cacheNeedsRefresh())){if(this.logIsInfoEnabled("cacheAllData")){this.logInfo("fetchingClientOnlyData: issuing oneTimeDS fetch","cacheAllData")}
+this.$498=[_1];var _3=this.dataURL||this.testFileName;var _4=this.getDataFormat(_1);if(_4=="iscServer")_4=_3.match(/\.xml$/i)?"xml":"json";var _5=this.getOperationBinding(_1);var _6=this.transformRequest,_7=this.transformResponse,_8=this.$ba;if(_8){if(_8.transformRequest){_6=this[isc.$ah+"transformRequest"]}
+if(_8.transformResponse){_7=this[isc.$ah+"transformResponse"]}}
+var _9=_5.recordName||this.recordName||(this.inheritsFrom?(isc.isA.String(this.inheritsFrom)?this.inheritsFrom:this.inheritsFrom.ID):this.ID);var _10=isc[this.Class].create({ID:this.ID+"$499",inheritsFrom:this.ID,dataURL:_3,dataFormat:_4,recordXPath:this.recordXPath,transformRequest:_6,transformResponse:_7,recordName:_9,showPrompt:this.showPrompt});this.logInfo("clientOnly datasource performing one-time "+_4+" fetch via: "+_3);this.addProperties({transformRequest:isc.DataSource.getInstanceProperty("transformRequest"),transformResponse:isc.DataSource.getInstanceProperty("transformResponse")});var _11=this;if(this.cacheAllData){_10.cacheAllData=false}
+_10.sendDSRequest({operationType:"fetch",willHandleError:true,callback:function(_13,_14){var _12;if(_13.status!=isc.DSResponse.STATUS_SUCCESS){_11.logWarn("one-time fetch failed with status: "+_13.status+" and messsage: "+(_14?_14:"N/A")+". Initializing an empty Array as testData.");_12=[]}else{_11.logInfo("One-time fetch complete: "+(_14?_14.length:"null")+" records");_12=_11.initializeSequenceFields(_14)}
+if(_11.cacheAllData){_11.cacheLastFetchTime=new Date().getTime();_11.cacheResultSet=isc.ResultSet.create({dataSource:_11.ID,fetchMode:"local",allRows:_12});_11.cacheLastFetchTime=new Date().getTime()}
+if(_11.clientOnly){_11.cacheData=_11.testData=_12}
+_11.processDeferredRequests();_10.destroy()}});return true}else{return false}}}
+);isc.evalBoundary;isc.B.push(isc.A.shouldUseTestDataFetch=function isc_DataSource_shouldUseTestDataFetch(){return this.clientOnly==true&&this.cacheAllData!=true&&(this.dataURL!=null||this.testFileName!=null)}
+,isc.A.hasTestData=function isc_DataSource_hasTestData(){return this.dataURL!=null||this.testFileName!=null}
+,isc.A.getClientOnlyResponse=function isc_DataSource_getClientOnlyResponse(_1,_2){_2=_2||this.testData;if(_2&&!this.testData&&this.clientOnly)
+this.cacheData=this.testData=_2;if(!_2||isc.isA.String(_2)){if(isc.isA.String(_2)){this.logInfo(this.ID+" datasource: using testData property as data");this.cacheData=this.testData=isc.eval(_2)}else if(window[this.ID+"TestData"]){this.logInfo(this.ID+" datasource: using "+this.ID+"TestData object as data");this.cacheData=this.testData=window[this.ID+"TestData"]}else{this.logInfo(this.ID+" datasource: testData property and "+this.ID+"TestData object not found, using empty list as data");this.cacheData=this.testData=[]}
+_2=this.testData}
+var _3=_1.operationType,_4={status:0};switch(_3){case"fetch":case"select":case"filter":var _5=_1.data;if(isc.isAn.Array(_5))_5=_5[0];var _6=this.applyFilter(_2,_5,_1),_7=_6;if(_1.startRow!=null){var _8=_1.startRow,_9=_1.endRow,_10=_6.length;var _11=isc.shallowClone(_1.sortBy);if(_11){if(!isc.isAn.Array(_11))_11=[_11];if(isc.isAn.Object(_11[0])){_11=isc.DS.getSortBy(_11)}
+var _12=[];for(var i=0;i<_11.length;i++){var _14=true;if(_11[i].startsWith("-")){_11[i]=_11[i].substring(1);_14=false}
+_12[i]=_14}
+_6.sortByProperties(_11,_12)}
+_9=Math.min(_9,_10-1);_7=_6.slice(_8,_9+1);_4.startRow=_8;_4.endRow=_9;_4.totalRows=_10}
+if(this.copyLocalResults){for(var i=0;i<_7.length;i++){_7[i]=isc.addProperties({},_7[i])}}
+_4.data=_7;break;case"remove":case"delete":var _15=this.findByKeys(_1.data,_2);if(_15==-1){this.logWarn("clientOnly remove operation: Unable to find record matching criteria:"+this.echo(_1.data))}else{_2.removeAt(_15);_4.data=isc.addProperties({},_1.data)}
+break;case"add":case"insert":var _16=isc.addProperties({},_1.data);_16=this.applySequenceFields(_16);_2.add(_16);_4.data=isc.addProperties({},_16);break;case"replace":case"update":var _15=this.findByKeys(_1.data,_2);if(_15==-1){this.logWarn("clientOnly update operation: Unable to find record matching criteria:"+this.echo(_1.data))}else{var _16=_2[_15];var _17=_1.data,_18;if(_17&&_17.__ref){_18=_17.__ref;delete _17.__ref}
+isc.addProperties(_16,_1.data);if(_18)_17.__ref=_18;_4.data=isc.addProperties({},_16)}
+break;case"validate":default:break}
+return _4}
+,isc.A.getNextSequenceValue=function isc_DataSource_getNextSequenceValue(_1){var _2=this.testData,_3=0;for(var i=0;i<_2.length;i++){var _5=_2[i][_1.name];if(_5!=null&&_5>_3)_3=_5}
+return _3+1}
+,isc.A.applySequenceFields=function isc_DataSource_applySequenceFields(_1){if(!this.clientOnly){return}
+var _2=this.getFields();for(var _3 in _2){var _4=_2[_3];if((_4.type=="sequence"||_4.primaryKey)&&_1[_3]==null){_1[_3]=this.getNextSequenceValue(_4)}}
+return _1}
+,isc.A.initializeSequenceFields=function isc_DataSource_initializeSequenceFields(_1){if(!isc.isAn.Array(_1))return;var _2=this.getFields();var _3=[];for(var _4 in _2){if(_2[_4].type=="sequence"||_2[_4].primaryKey)_3.add(_4)}
+for(var i=0;i<_1.length;i++){for(var j=0;j<_3.length;j++){var _4=_3[j];if(_1[i][_4]==null)_1[i][_4]=i}}
+return _1}
+,isc.A.findByKeys=function isc_DataSource_findByKeys(_1,_2,_3,_4){return _2.findByKeys(_1,this,_3,_4)}
+,isc.A.applyFilter=function isc_DataSource_applyFilter(_1,_2,_3){var _4=[];if(!_1||_1.length==0)return _4;if(this.isAdvancedCriteria(_2)){var _5=this.normalizeAdvancedCriteria(_2);return this.recordsMatchingAdvancedFilter(_1,_5,_3)}
+return this.recordsMatchingFilter(_1,_2,_3)}
+,isc.A.recordsMatchingFilter=function isc_DataSource_recordsMatchingFilter(_1,_2,_3){var _4=isc.getKeys(_2),_5=_4.length,_6=[],_7,_8,_9,_10,_11,j;if(_3&&_3.operation&&this.operationBindings){var _13=_3.operation;if(_13.ID==_13.dataSource+"_"+_13.type){var _14=this.operationBindings.find({operationId:null,operationType:_13.type})}else{var _14=this.operationBindings.find({operationId:_3.operation.ID,operationType:_13.type})}
+if(_14){var _15=_14.customCriteriaFields;if(isc.isA.String(_15)){_15=_15.split(",");for(var k=0;k<_15.length;k++){_15[k]=_15[k].replace(/^\s+|\s+$/g,'')}}}}
+for(var i=0,l=_1.length;i<l;i++){_7=_1[i];if(_7==null)continue;_8=true;for(j=0;j<_5;j++){_9=_4[j];if(_9==null)continue;if(this.dropUnknownCriteria&&!this.getField(_9))continue;var _19=false;if(isc.isA.List(_15)&&_15.contains(_9)){_19=true}
+if(!_19&&this.getField(_9).customSQL)continue;_10=isc.DataSource.getPathValue(_7,_9);_11=_2[_9];if(!this.fieldMatchesFilter(_10,_11,_3)){_8=false;break}}
+if(_8)_6.add(_7)}
+return _6}
+,isc.A.recordMatchesFilter=function isc_DataSource_recordMatchesFilter(_1,_2,_3){if(this.isAdvancedCriteria(_2)){return this.recordsMatchingAdvancedFilter([_1],_2,_3).length>0}
+return this.recordsMatchingFilter([_1],_2,_3).length>0}
+,isc.A.fieldMatchesFilter=function isc_DataSource_fieldMatchesFilter(_1,_2,_3){if(isc.isAn.Array(_2)){if(_2.contains(_1))return true;return false}
+if(isc.isA.Date(_1)&&isc.isA.Date(_2)){if(_2.logicalDate)
+return(Date.compareLogicalDates(_1,_2)==0);return(Date.compareDates(_1,_2)==0)}
+if(!isc.isA.String(_1)&&!isc.isA.String(_2)){if(this.logIsDebugEnabled()){this.logDebug("Direct compare: "+_1+"=="+_2)}
+return(_1==_2)}
+if(_2==null)_2=isc.emptyString;if(_1==null)_1=isc.emptyString;if(!isc.isA.String(_1))_1=_1.toString();if(!isc.isA.String(_2))_2=_2.toString();if(!this.filterIsCaseSensitive){_1=_1.toLocaleLowerCase();_2=_2.toLocaleLowerCase()}
+var _4;if(_3)_4=_3.textMatchStyle;if(!this.supportsTextMatchStyle(_4)){if(!this.$63c)this.$63c={};if(!this.$63c[_4]){this.logWarn("Text match style specified as '"+_4+"': This is not supported for"+" this dataSource - performing a substring match instead");this.$63c[_4]=true}
+_4=this.getTextMatchStyle(_4)}
+if(_4==this.$45y){return isc.startsWith(_1,_2)}else if(_4==this.$19q){return isc.contains(_1,_2)}else{return _1==_2}}
+,isc.A.supportsTextMatchStyle=function isc_DataSource_supportsTextMatchStyle(_1,_2){if(!this.clientOnly&&(this.dataFormat!=this.$50j))return true;return(_1==null||_1==this.$19q||_1==this.$50i||_1==this.$45y)}
+,isc.A.getTextMatchStyle=function isc_DataSource_getTextMatchStyle(_1){if(_1==null)_1=this.$50i;if(!this.supportsTextMatchStyle(_1)){_1=this.$19q}
+return _1}
+,isc.A.compareTextMatchStyle=function isc_DataSource_compareTextMatchStyle(_1,_2){_1=this.getTextMatchStyle(_1);_2=this.getTextMatchStyle(_2);if(_1==_2)return 0;if(_1==this.$50i)return 1;if(_2==this.$50i)return-1;if(_1==this.$45y)return 1;return-1}
+,isc.A.compareCriteria=function isc_DataSource_compareCriteria(_1,_2,_3,_4){if(this.logIsInfoEnabled()){this.logInfo("Comparing criteria, oldCriteria:\n"+this.echo(_2)+"\nnewCriteria:\n"+this.echo(_1)+", policy: "+(_4||this.criteriaPolicy))}
+if(_2==null)return-1;var _5=this.getTextMatchStyle(_3?_3.textMatchStyle:null);if(this.isAdvancedCriteria(_1)||this.isAdvancedCriteria(_2)){var _6,_7;if(this.isAdvancedCriteria(_1)){if(this.isAdvancedCriteria(_2)){_7=this.compareAdvancedCriteria(_1,_2,_3)}else{var j=0;for(var i in _2)j++;if(j==0)_7=1}
+if(_7==_6){_2=isc.DataSource.convertCriteria(_2,_5);_7=this.compareAdvancedCriteria(_1,_2,_3)}}else{_1=isc.DataSource.convertCriteria(_1,_5);_7=this.compareAdvancedCriteria(_1,_2,_3)}
+if(_7==_6)_7=-1;_4=_4||this.criteriaPolicy;if(_4=="dropOnShortening"){return _7}else{return _7==0?0:-1}}
+_4=_4||this.criteriaPolicy;if(_4=="dropOnShortening"){if(_5==this.$50i){return this.dropOnFieldChange(_1,_2,_3)}else{return this.dropOnShortening(_1,_2,_3)}}else{return this.dropOnChange(_1,_2,_3)}}
+,isc.A.dropOnChange=function isc_DataSource_dropOnChange(_1,_2,_3){if(isc.getKeys(_2).length!=isc.getKeys(_1).length)return-1;for(var _4 in _2){var _5=_2[_4],_6=_1[_4];if(isc.isAn.Array(_5)){if(!isc.isAn.Array(_6))return-1;if(_5.length!=_6.length)return-1;if(_5.intersect(_6).length!=_5.length)
+{return-1}}else if(isc.isA.Date(_5)&&isc.isA.Date(_6))
+{if(_5.getTime()!=_6.getTime())return-1}else if(_5!=_6){return-1}}
+return 0}
+,isc.A.dropOnFieldChange=function isc_DataSource_dropOnFieldChange(_1,_2,_3){var _4=isc.getKeys(_1),_5=isc.getKeys(_2),_6=_4.length-_5.length;if(_6<0)return-1;for(var _7 in _2){var _8=_2[_7],_9=_1[_7];if(_9==null)return-1;if(isc.isAn.Array(_8)){if(!isc.isAn.Array(_9))return-1;if(_8.length!=_9.length)return-1;if(_8.intersect(_9).length!=_8.length)
+{return-1}}else if(isc.isA.Date(_8)&&isc.isA.Date(_9))
+{if(_8.getTime()!=_9.getTime())return-1}else if(_8!=_9){return-1}}
+if(_6>0){_4.removeList(_5);for(var i=0;i<_4.length;i++){if(this.getField(_4[i])==null)return-1}
+return 1}
+return 0}
+,isc.A.dropOnShortening=function isc_DataSource_dropOnShortening(_1,_2,_3){var _4=isc.getKeys(_1),_5=isc.getKeys(_2),_6=_4.length-_5.length;if(_6<0)return-1;var _7=0;for(var _8 in _2){var _9=_2[_8],_10=_1[_8];if(_10==null)return-1;if(this.getField(_8)==null&&_9!=_10)
+return-1;if(isc.isAn.Array(_9)){if(!isc.isAn.Array(_10))return-1;if(_9.length!=_10.length)return-1;if(_9.intersect(_10).length!=_9.length)
+{return-1}}else if(isc.isA.String(_9)){if(!isc.isA.String(_10))return-1;if(_10.indexOf(_9)==-1)return-1;if(_9.length>_10.length)return-1;if(_9.length<_10.length)_7=1}else if(isc.isA.Date(_9)&&isc.isA.Date(_10))
+{if(_9.getTime()!=_10.getTime())return-1}else if(_9!=_10){return-1}}
+if(_6>0){_4.removeList(_5);for(var i=0;i<_4.length;i++){if(this.getField(_4[i])==null)return-1}
+return 1}
+return _7}
+,isc.A.compareDates=function isc_DataSource_compareDates(_1,_2,_3,_4){var _5=this.getField(_3),_6=_4?this.getField(_4):null;if((_5&&_5.type=="datetime")||_6&&_6.type=="datetime")
+{return Date.compareDates(_1,_2)}else{return Date.compareLogicalDates(_1,_2)}}
+,isc.A.compareValues=function isc_DataSource_compareValues(_1,_2,_3,_4){if(isc.isA.Date(_1)&&isc.isA.Date(_2)){return this.compareDates(_1,_2,_3)}else{var _5=_4&&_1.toLowerCase?_1.toLowerCase():_1,_6=_4&&_2.toLowerCase?_2.toLowerCase():_2;if(_5==null&&_6!=null)return 1;if(_5!=null&&_6==null)return-1;return _5>_6?-1:(_5<_6?1:(_5==_6?0:2))}}
+);isc.B._maxIndex=isc.C+169;isc.A=isc.DataSource;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$628=0;isc.A.$71l={sum:function(_1,_2,_3){var _4=0;for(var i=0;i<_2.length;i++){var _6=_1[_2[i].name],_7=parseFloat(_6);if(isc.isA.Number(_7)&&_7==_6){_4+=_7}else{if(_6!=null&&_6!=isc.emptyString){return null}}}
+return _4},avg:function(_1,_2,_3){var _4=0,_5=0;for(var i=0;i<_2.length;i++){var _7=_1[_2[i].name],_8=parseFloat(_7);if(isc.isA.Number(_8)&&(_8==_7)){_5+=1;_4+=_8}else{if(_7!=null&&_7!=isc.emptyString){return null}}}
+return _5>0?_4/ _5:null},max:function(_1,_2,_3){var _4,_5;for(var i=0;i<_2.length;i++){var _7=_1[_2[i].name];if(isc.isA.Date(_7)){if(_5)return null;if(_4==null)_4=_7.duplicate();else if(_4.getTime()<_7.getTime())_4=_7.duplicate()}else{_5=true;var _8=parseFloat(_7);if(isc.isA.Number(_8)&&(_8==_7)){if(_4==null)_4=_8;else if(_4<_7)_4=_8}else{if(_7!=null&&_7!=isc.emptyString){return null}}}}
+return _4},min:function(_1,_2,_3){var _4,_5
+for(var i=0;i<_2.length;i++){var _7=_1[_2[i].name];if(isc.isA.Date(_7)){if(_5)return null;if(_4==null)_4=_7.duplicate();if(_7.getTime()<_4.getTime())_4=_7.duplicate()}else{if(_7==null||_7==isc.emptyString)continue;_5=true;var _8=parseFloat(_7);if(isc.isA.Number(_8)&&(_8==_7)){if(_4==null)_4=_8;else if(_4>_7)_4=_8}else{return null}}}
+return _4},multiplier:function(_1,_2,_3){var _4=0;for(var i=0;i<_2.length;i++){var _6=_1[_2[i].name],_7=parseFloat(_6);if(isc.isA.Number(_7)&&(_7==_6)){if(i==0)_4=_7;else _4=(_4*_7)}else{return null}}
+return _4}};isc.B.push(isc.A.addSearchOperator=function isc_c_DataSource_addSearchOperator(_1){if(!_1||!_1.ID){isc.logWarn("Attempted to add null search operator, or operator with no ID");return}
+if(!isc.DataSource.$57z)isc.DataSource.$57z={};var _2=isc.DataSource.$57z,_3;if(_2[_1.ID]!==_3){isc.logWarn("Attempted to add existing operator "+_1.ID+" - replacing")}
+isc.DataSource.$57z[_1.ID]=_1}
+,isc.A.getSearchOperators=function isc_c_DataSource_getSearchOperators(){return isc.DataSource.$57z}
+,isc.A.setTypeOperators=function isc_c_DataSource_setTypeOperators(_1,_2){if(!_2)return;if(!isc.isAn.Array(_2))_2=[_2];if(!isc.DataSource.$570)isc.DataSource.$570={};isc.DataSource.$570[_1||"_all_"]=_2}
+,isc.A.$625=function isc_c_DataSource__getNextRequestId(){return this.$628++}
+,isc.A.getAutoTitle=function isc_c_DataSource_getAutoTitle(_1,_2){_2=_2||/[_\$]/g;if(!_1)return"";if(!isc.isA.String(_1))_1=_1.toString();var _3;_4=_1.replace(_2," ");var _4=_4.replace(/^\s+|\s+$/g,"");if(_4==_4.toUpperCase()||_4==_4.toLowerCase()){_4=_4.toLowerCase();var _5=true;_3="";for(var i=0;i<_4.length;i++){var _7=_4.substr(i,1);if(_5){_7=_7.toUpperCase();_5=false}
+if(_7==' ')_5=true;_3=_3+_7}}else{_3=_4.substr(0,1).toUpperCase();var _8=_4.substr(0,1)==_4.substr(0,1).toUpperCase();var _9=false;for(var i=1;i<_4.length;i++){var _7=_4.substr(i,1);if(_9&&_7==_7.toLowerCase()){_9=false;_3=_3.substr(0,_3.length-1)+" "+_3.substr(_3.length-1)}
+if(_8&&_7==_7.toUpperCase()){_9=true}
+if(!_8&&_7==_7.toUpperCase()){_3=_3+" "}
+_8=_7==_7.toUpperCase();_3=_3+_7}}
+return _3}
+,isc.A.convertCriteria=function isc_c_DataSource_convertCriteria(_1,_2){var _3={_constructor:"AdvancedCriteria",operator:"and"}
+var _4=[];for(var _5 in _1){if(isc.isA.Array(_1[_5])){var _6={_constructor:"AdvancedCriteria",operator:"or",criteria:[]}
+for(var i=0;i<_1[_5].length;i++){var _8=_1[_5][i];_6.criteria.add({fieldName:_5,operator:this.getCriteriaOperator(_8,_2),value:_8})}
+_4.add(_6)}else{_4.add({fieldName:_5,operator:this.getCriteriaOperator(_1[_5],_2),value:_1[_5]})}}
+_3.criteria=_4;return _3}
+,isc.A.getCriteriaOperator=function isc_c_DataSource_getCriteriaOperator(_1,_2){var _3;if(isc.isA.Number(_1)||isc.isA.Date(_1)||isc.isA.Boolean(_1)){_3="equals"}else if(_2=="equals"||_2=="exact"){_3="iEquals"}else if(_2=="startsWith"){_3="iStartsWith"}else{_3="iContains"}
+return _3}
+,isc.A.combineCriteria=function isc_c_DataSource_combineCriteria(_1,_2,_3,_4,_5){if(!_1)return _2;if(!_2)return _1;if(!_3)_3="and";if(_3!="and"&&_3!="or"){isc.logWarn("combineCriteria called with invalid outerOperator '"+_3+"'");return null}
+var _6,_7;if(!_5&&_1._constructor!="AdvancedCriteria"&&_2._constructor!="AdvancedCriteria"&&_3=="and")
+{for(var _8 in _1){if(_2[_8]!=_6){_7=true;break}}}else{_7=true}
+if(!_7){return isc.addProperties({},_1,_2)}
+var _9,_10;if(_5||_1._constructor=="AdvancedCriteria"){_9=_1}else{_9=isc.DataSource.convertCriteria(_1,_4)}
+if(_5||_2._constructor=="AdvancedCriteria"){_10=_2}else{_10=isc.DataSource.convertCriteria(_2,_4)}
+var _11={operator:_3};if(!_5){_11._constructor="AdvancedCriteria"}
+if(_9.operator==_3&&_10.operator==_3){_11.criteria=[];_11.criteria.addAll(_9.criteria);_11.criteria.addAll(_10.criteria)}else{_11.criteria=[_9,_10]}
+return _11}
+,isc.A.simplifyAdvancedCriteria=function isc_c_DataSource_simplifyAdvancedCriteria(_1,_2){if(!this.isAdvancedCriteria(_1)){return _1}
+_1=this.$79a(_1,_2);if(_1==null)return null;_1._constructor="AdvancedCriteria";return _1}
+,isc.A.$79a=function isc_c_DataSource__simplifyAdvancedCriteria(_1,_2){var _3=_1.operator;if(_3=="and"||_3=="or"){var _4=_1.criteria;if(_4==null||_4.length==0){if(_2)return null;return _1}
+if(_4.length==1){_1=_4[0];return this.$79a(_1,true)}
+var _5=[];for(var i=0;i<_4.length;i++){var _7=_4[i];_7=this.$79a(_7,true);if(_7!=null){if(_7.operator==_3){_5.addList(_7.criteria)}else{_5.add(_7)}}}
+if(_5.length==0&&_2)return null;if(_5.length==1)return _5[0];_1.criteria=_5;return _1}else{return _1}}
+,isc.A.combineFieldData=function isc_c_DataSource_combineFieldData(_1,_2){if(_2==null)return _1;for(var _3 in _2){if(_3=="validators"&&_1.validators!=null&&_2.validators!=_1.validators)
+{if(_2.validators.$69){if(isc.SimpleType.getBaseType(_1.type)!=isc.SimpleType.getBaseType(_2.type))
+{continue}}
+for(var i=0;i<_2.validators.length;i++){var _5=_2.validators[i];if(!_1.validators.contains(_5)){if(_1.validators.$69){_1.validators=_1.validators.duplicate()}
+_1.validators.add(_5)}}
+continue}
+if(_1[_3]!=null)continue;if(_3=="name")continue;_1[_3]=_2[_3]}
+return _1}
+,isc.A.applyRecordSummaryFunction=function isc_c_DataSource_applyRecordSummaryFunction(_1,_2,_3,_4){if(!_2||!_3)return;if(isc.isA.String(_1)){if(this.$71l[_1]){_1=this.$71l[_1]}else{_1=isc.Func.expressionToFunction("record,fields,summaryField",_1)}}
+if(isc.isA.Function(_1))return _1(_2,_3,_4)}
+,isc.A.registerRecordSummaryFunction=function isc_c_DataSource_registerRecordSummaryFunction(_1,_2){if(isc.isA.String(_2)){_2=isc.Func.expressionToFunction("record,fields,summaryField",_2)}
+this.$71l[_1]=_2}
+,isc.A.exportClientData=function isc_c_DataSource_exportClientData(_1,_2,_3){var _4=_2||{},_5=_4&&_4.exportAs?_4.exportAs:"csv",_6=_4&&_4.exportFilename?_4.exportFilename:"export",_7=_4&&_4.exportDisplay?_4.exportDisplay:"download";var _8={showPrompt:false,transport:_4.exportToClient===false?"xmlHttpRequest":"hiddenFrame",exportResults:true,downloadResult:!(_4.exportToClient===false),downloadToNewWindow:(_7=="window"),download_filename:(_7=="window"?_6:null)};var _9={exportAs:_4.exportAs,exportFilename:_6,exportPath:_4.exportPath,exportToClient:_4.exportToClient,exportToFilesystem:_4.exportToFilesystem,exportDelimiter:_4.exportDelimiter,exportFields:_4.exportFields,exportHeader:_4.exportHeader,exportFooter:_4.exportFooter,exportTitleSeparatorChar:_4.exportTitleSeparatorChar,lineBreakStyle:_4.lineBreakStyle};isc.DMI.callBuiltin({methodName:"downloadClientExport",arguments:[_1,_5,_6,_7,_9],requestParams:_8,callback:_3})}
+);isc.B._maxIndex=isc.C+14;isc.A=isc.DataSource.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.supportsAdvancedCriteria=function isc_DataSource_supportsAdvancedCriteria(){if(this.clientOnly||this.cacheData)return true;if(this.willHandleAdvancedCriteria!=null)return this.willHandleAdvancedCriteria;return false}
+,isc.A.isAdvancedCriteria=function isc_DataSource_isAdvancedCriteria(_1){return isc.DS.isAdvancedCriteria(_1,this)}
+,isc.A.normalizeAdvancedCriteria=function isc_DataSource_normalizeAdvancedCriteria(_1,_2){var _3={};if(!_2){_3._constructor="AdvancedCriteria";if(_1.strictSQLFiltering)_3.strictSQLFiltering=true}
+if(_1.criteria){if(!isc.isAn.Array(_1.criteria)){_1.criteria=[_1.criteria]}
+_3.operator=_1.operator;_3.criteria=[];for(var i=0;i<_1.criteria.length;i++){_3.criteria.add(this.normalizeAdvancedCriteria(_1.criteria[i],true))}}else{if(!isc.isAn.Array(_1.value)){isc.addProperties(_3,_1)}else{var _5=this.getSearchOperator(_1.operator);if(!_5||!_5.canNormalize){isc.addProperties(_3,_1)}else{_3.operator=_5.negate?"and":"or";_3.criteria=[];for(var i=0;i<_1.value.length;i++){_3.criteria.add({fieldName:_1.fieldName,operator:_1.operator,value:_1.value[i]})}}}}
+return _3}
+,isc.A.addSearchOperator=function isc_DataSource_addSearchOperator(_1,_2){if(!_1||!_1.ID){isc.logWarn("Attempted to add null search operator, or operator with no ID");return}
+isc.DataSource.addSearchOperator(_1);if(!this.$570)this.$570={$58d:true};if(_2){for(var _3=0;_3<this.$570.length;_3++){this.$570[_3].remove(_1.ID)}
+for(var _3=0;_3<_2.length;_3++){if(!this.$570[_2[_3]]){this.$570[_2[_3]]=[_1.ID]}
+if(!this.$570[_2[_3]].contains(_1.ID)){this.$570[_2[_3]].add(_1.ID)}}}else{if(!this.$570["_all_"]){this.$570["_all_"]=[_1.ID]}
+if(!this.$570["_all_"].contains(_1.ID)){this.$570["_all_"].add(_1.ID)}}}
+,isc.A.getSearchOperator=function isc_DataSource_getSearchOperator(_1){return isc.DataSource.$57z[_1]}
+,isc.A.getTypeOperators=function isc_DataSource_getTypeOperators(_1){var _2=[];_1=_1||"text";var _3=isc.SimpleType.getType(_1);var _4=_3;if(this.$570){while(_4&&!this.$570[_4.name]){_4=isc.SimpleType.getType(_4.inheritsFrom,this)}
+if(_4&&this.$570[_4.name]){_2=this.$570[_4.name]}
+_2.addList(this.$570["_all_"]);if(!this.$570.$58d){return _2}}
+_4=isc.SimpleType.getType(_1);while(_4&&!isc.DataSource.$570[_4.name]){_4=isc.SimpleType.getType(_4.inheritsFrom,this)}
+if(_4&&isc.DataSource.$570[_4.name]){_2.addList(isc.DataSource.$570[_4.name])}
+_2.addList(isc.DataSource.$570["_all_"]);return _2}
+,isc.A.setTypeOperators=function isc_DataSource_setTypeOperators(_1,_2){if(!_2)return;if(!isc.isAn.Array(_2))_2=[_2];if(!this.$570){this.$570={}}else{this.$570.$58d=false}
+this.$570[_1||"_all_"]=_2;this.$570.$58d=false}
+,isc.A.getFieldOperators=function isc_DataSource_getFieldOperators(_1){if(isc.isA.String(_1))_1=this.getField(_1);if(!_1)return[];if(_1&&_1.validOperators)return _1.validOperators;var _2=isc.SimpleType.getType(_1.type);var _3=_1.type||"text";if(!_2)_3="text";return this.getTypeOperators(_3)}
+,isc.A.getFieldOperatorMap=function isc_DataSource_getFieldOperatorMap(_1,_2,_3,_4){if(isc.isA.String(_1))_1=this.getField(_1);var _5={},_6=this.getFieldOperators(_1);_2=_2||_1.validOperators!=null;for(var _7=0;_7<_6.length;_7++){var _8=_6[_7];var _9=this.getSearchOperator(_8);if(!_9)continue;if(_9.hidden&&!_2&&(!isc.isAn.Array(_1.validOperators)||!_1.validators.contains(_8)))continue;if(!_3||(_9.valueType==_3)==!_4){_5[_6[_7]]=_9.titleProperty==null?_9.title:isc.Operators[_9.titleProperty]}}
+return _5}
+,isc.A.getTypeOperatorMap=function isc_DataSource_getTypeOperatorMap(_1,_2,_3,_4){var _5={},_6=this.getTypeOperators(_1);for(var _7=0;_7<_6.length;_7++){var _8=this.getSearchOperator(_6[_7]);if(_8&&(!_8.hidden||_2)){if(!_3||(_8.valueType==_3)==!_4)
+_5[_6[_7]]=_8.titleProperty==null?_8.title:isc.Operators[_8.titleProperty]}}
+return _5}
+);isc.B._maxIndex=isc.C+10;isc.A=isc.DataSource.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.evaluateCriterion=function isc_DataSource_evaluateCriterion(_1,_2){if(_2.requiresServer==true)return true;var _3=this.getSearchOperator(_2.operator);if(_3==null){isc.logWarn("Attempted to use unknown operator "+_2.operator);return false}
+var _4=true;if(this.$908){for(var i=0;i<this.$909.length;i++){if(this.$909[i]==_2){_4=false;if(this.$91a[i]==true){return true}}}}
+if(_4){var _6;if(this.$908){_6=this.$909.length;this.$909[_6]=_2}
+if(_2.fieldName){var _7=this,_8=this.getField(_2.fieldName);if(_8==null){_7=this.getDataSourceForDataPath(_2.fieldName);_8=this.getFieldForDataPath(_2.fieldName);if(_7==null){_7=this}}
+if(_8==null){if(this.dropUnknownCriteria){this.logInfo("evaluateCriterion passed criterion for field not explicitly "+"listed in this dataSource:"+_2.fieldName+" - dropping this filter","AdvancedCriteria")
+if(this.$908){this.$91a[_6]=true}
+return true}else{this.logInfo("evaluateCriterion passed criterion for field not explicitly "+"listed in this dataSource:"+_2.fieldName+" - continuing with filter","AdvancedCriteria")}}else{var _9=_7.getFieldOperators(_8.name);if(!_9.contains(_3.ID)){this.logWarn("Operator "+_3.ID+" is not valid for field "+_2.fieldName+". Continuing anyway.")}}}}
+return _3.condition(_2.value,_1,_2.fieldName,_2,_3,this)}
+,isc.A.recordsMatchingAdvancedFilter=function isc_DataSource_recordsMatchingAdvancedFilter(_1,_2,_3){var _4=[];this.$59u=false;this.$59v=_2.strictSQLFiltering;if(this.$59v==null)this.$59v=this.strictSQLFiltering;var _5=false;if(!this.$908){this.$91b()}else{_5=true}
+_2=this.convertRelativeDates(_2);for(var _6=0;_6<_1.length;_6++){if(this.evaluateCriterion(_1[_6],_2)){_4.add(_1[_6])}
+if(!_5)this.$91c()}
+return _4}
+,isc.A.$91b=function isc_DataSource__startApplyingCriteriaToList(){this.$908=true;this.$909=[];this.$91a=[]}
+,isc.A.$91c=function isc_DataSource__endApplyingCriteriaToList(){delete this.$909;delete this.$91a;delete this.$908}
+,isc.A.compareAdvancedCriteria=function isc_DataSource_compareAdvancedCriteria(_1,_2,_3){_1=isc.DataSource.simplifyAdvancedCriteria(_1,true);_2=isc.DataSource.simplifyAdvancedCriteria(_2,true);if(_2==null)return _1==null?0:1;if(_1==null)return-1;_1=this.normalizeAdvancedCriteria(_1);_2=this.normalizeAdvancedCriteria(_2);var _4=this.getSearchOperator(_2.operator),_5=this.getSearchOperator(_1.operator);if(_4!=_5){if(_4.ID=="or"){var _6={operator:"or",criteria:[_1]};return _4.compareCriteria(_6,_2,_4,this)}else if(_5.ID=="and"){var _6={operator:"and",criteria:[_2]};return _5.compareCriteria(_1,_6,_5,this)}
+return-1}
+return _4.compareCriteria(_1,_2,_4,this)}
+,isc.A.splitCriteria=function isc_DataSource_splitCriteria(_1,_2){var _3={},_4=_1,_5=false;if(_1==null||_2==null)return _3;if(this.isAdvancedCriteria(_1)){_4=this.$867(_1);_5=true}
+if(_4==null)return _3;for(var i=0;i<_2.length;i++){var _7=_2[i];if(_4[_7]!=null){_3[_7]=_4[_7];if(!_5){delete _1[_7]}else{if(_1.fieldName){delete _1.fieldName;delete _1.value}else{for(var c=0;c<_1.criteria.length;c++){var _9=_1.criteria[c];if(_9.fieldName==_7){_1.criteria.removeAt(c);break}}}}}}
+if(_5&&_1.criteria&&_1.criteria.length==0){delete _1.criteria;delete _1.operator;delete _1._constructor}
+return _3}
+,isc.A.$867=function isc_DataSource__convertAdvancedCriteriaToSimple(_1){var _2={};if(_1.fieldName){if(_1.operator!="equals"){isc.logWarn("splitCriteria: advanced criteria operator, "+_1.operator+", not supported.");return null}
+_2[_1.fieldName]=_1.value;return _2}
+if(_1.operator!="and"){isc.logWarn("splitCriteria: advanced criteria top-level operator, "+_1.operator+", not supported.");return null}
+for(var i=0;i<_1.criteria.length;i++){var _4=_1.criteria[i];if(_4.operator!="equals"){isc.logWarn("splitCriteria: advanced criteria second-level operator, "+_1.operator+", not supported.");return null}
+_2[_4.fieldName]=_4.value}
+return(isc.isAn.emptyObject(_2)?null:_2)}
+);isc.B._maxIndex=isc.C+7;isc.DataSource.registerStringMethods({transformRequest:"dsRequest",transformResponse:"dsResponse,dsRequest,data"});isc.$571=function(){var _1=function(_65,_66,_45,_67,_68,_69){var _2;if(!_67.criteria){_67.criteria=[]}
+if(!isc.isAn.Array(_67.criteria)){isc.logWarn("AdvancedCriteria: found boolean operator where subcriteria was not "+"an array. Subcriteria was: "+isc.echoFull(_67.criteria));return false}
+if(_68.isNot)_69.$59u=!_69.$59u;for(var _3=0;_3<_67.criteria.length;_3++){var _4=_69.evaluateCriterion(_66,_67.criteria[_3]);if(_68.isAnd&&!_4)_2=false;if(_68.isNot&&_4)_2=false;if(_68.isOr&&_4)_2=true;if(_2!=null)break}
+if(_2==null){if(_68.isOr)_2=false;else _2=true}
+if(_68.isNot)_69.$59u=!_69.$59u;return _2};var _5=function(_65,_66,_45,_67,_68,_69){var _6=isc.DataSource.getPathValue(_66,_45);if(_69.$59v){if(_6==null||_65==null){return _69.$59u}}
+var _7=(_65==_6);if(isc.isA.Date(_65)&&isc.isA.Date(_6)){_7=(_69.compareDates(_65,_6,_45)==0)}
+if(_68.negate)return!_7;else return _7};var _8=function(_65,_66,_45,_67,_68,_69){var _9=_65,_10=_65,_6=isc.DataSource.getPathValue(_66,_45);if(_67.start)_9=_67.start;if(_67.end)_10=_67.end;if(_69.$59v){if(_6==null||(_68.lowerBounds&&_9==null)||(_68.upperBounds&&_10==null)){return _69.$59u}}
+var _11=true;var _12=true;var _13=isc.isA.Date(_6);var _14=isc.isA.Number(_6);var _15=isc.isA.String(_6);if(_68.lowerBounds&&_9&&((_14&&isNaN(_9))||(_9&&_13&&(!isc.isA.Date(_9)))||(_9&&_15&&(!isc.isA.String(_9)&&!isc.isA.Number(_9))))){return false}
+if(_68.upperBounds&&_10&&((_14&&isNaN(_10))||(_10&&_13&&(!isc.isA.Date(_10)))||(_10&&_15&&(!isc.isA.String(_10)&&!isc.isA.Number(_10))))){return false}
+var _16;if(_9===null||_9===_16){_11=false}
+if(_10===null||_10===_16){_12=false}
+if(_13&&!isc.isA.Date(_9))_11=false;if(_13&&!isc.isA.Date(_10))_12=false;_13=isc.isA.Date(_9)||isc.isA.Date(_10);_14=isc.isA.Number(_9)||isc.isA.Number(_10);_15=isc.isA.String(_9)||isc.isA.String(_10);_6=isc.DataSource.getPathValue(_66,_45);var _17=_15&&_68.caseInsensitive;if(_6===null||_6===_16){if(_13)_6=new Date(-8640000000000000);else if(_14)_6=Number.MIN_VALUE;else _6=""}else{if(_14&&isNaN(_6)){_9=""+_9;_10=""+_10}
+if(_13&&!isc.isA.Date(_6)){return false}}
+if(_68.lowerBounds&&_11){if(_69.compareValues(_9,_6,_45,_17)<=(_68.inclusive?-1:0))
+{return false}}
+if(_68.upperBounds&&_12){if(_69.compareValues(_10,_6,_45,_17)>=(_68.inclusive?1:0))
+{return false}}
+return true};var _18=function(_65,_66,_45,_67,_68,_69){var _6=isc.DataSource.getPathValue(_66,_45),_19=_65;if(isc.isA.Number(_6))_6=""+_6;if(_6!=null&&!isc.isA.String(_6)){return _68.negate}
+if(_6==null)return _69.$59v?_69.$59u:_68.negate;if(_19==null)_19="";if(isc.isA.Number(_19))_19=""+_19;if(!isc.isA.String(_19)||!isc.isA.String(_6))return _68.negate;if(_68.caseInsensitive){_6=_6.toLowerCase();_19=_19.toLowerCase()}
+if(_68.startsWith)var _20=isc.startsWith(_6,_19);else if(_68.endsWith)_20=isc.endsWith(_6,_19);else if(_68.equals)_20=(_6==_19);else _20=isc.contains(_6,_19);if(_68.negate)return!_20;else return _20};var _21=function(_65,_66,_45,_67,_68){var _22=(isc.DataSource.getPathValue(_66,_45)==null);if(_68.negate)return!_22;else return _22};var _23=function(_65,_66,_45,_67,_68){var _24;var _6=isc.DataSource.getPathValue(_66,_45);var _16;if(_65===_16)return false;if(isc.isA.Date(_65)||isc.isA.Date(_6))return false;if(_68.caseInsensitive)_24=new RegExp(_65,"i");else _24=new RegExp(_65);return _24.test(_6)};var _25=function(_65,_66,_45,_67,_68,_69){var _6=isc.DataSource.getPathValue(_66,_45);if(_65==null)_65=[]
+else if(!isc.isAn.Array(_65))_65=[_65];if(!isc.isA.Date(_6)){var _26=_65.contains(_6)}else{_26=false;for(var i=0;i<_65.length;i++){if(isc.isA.Date(_65[i])&&_69.compareDates(_65[i],_6,_45)==0)
+{_26=true;break}}}
+if(_68.negate)return!_26;else return _26};var _28=function(_65,_66,_45,_67,_68,_69){if(_65==null)return true;var _6=isc.DataSource.getPathValue(_66,_45);var _29=isc.DataSource.getPathValue(_66,_65);var _30=(_29==_6);if(isc.isA.Date(_29)&&isc.isA.Date(_6)){_30=(_69.compareDates(_29,_6,_45,_65)==0)}
+if(_68.negate)return!_30;else return _30};var _31=function(_65,_66,_45,_67,_68,_69){if(_65==null)return true;return _8(isc.DataSource.getPathValue(_66,_65),_66,_45,_67,_68,_69)};var _32=function(_65,_66,_45,_67,_68,_69){if(_65==null)return true;return _18(isc.DataSource.getPathValue(_66,_65),_66,_45,_67,_68,_69)};var _33=function(_65,_66,_67,_68){if(!_66.criteria)_66.criteria=[];if(!isc.isAn.Array(_66.criteria)){isc.logWarn("AdvancedCriteria: boolean compareCriteria found "+"where old subcriteria was not an array");return-1}
+if(!_65.criteria)_65.criteria=[];if(!isc.isAn.Array(_65.criteria)){isc.logWarn("AdvancedCriteria: boolean compareCriteria found "+"where new subcriteria was not an array");return-1}
+var _34,_35=0,_36=_66.criteria.length,_37=_65.criteria.length;if(_37>_36&&_67.isOr){return-1}
+var _38=isc.clone(_66.criteria);var _39=isc.clone(_65.criteria);for(var i=0;i<_36;i++){var _40=_38[i];var _41=i>_37?null:_39[i];if(!_41||(_41&&_41.fieldName!=_40.fieldName||_41.operator!=_40.operator||_41.processed==true)){_41=null;for(var j=0;j<_37;j++){if(_39[j].processed)continue;if(_39[j].fieldName==_40.fieldName&&_39[j].operator==_40.operator){_41=_39[j];break}}}
+if(_41&&_40){_41.processed=true;_34=_68.compareAdvancedCriteria(_41,_40)}else{if(_40&&!_41){if(_67.isOr)_34=1;if(_67.isAnd)_34=-1;if(_67.isNot)_34=-1}}
+if(_67.isAnd&&_34==-1)return-1;if(_67.isOr&&_34==-1)return-1;if(_67.isNot&&_34==1)return-1;if(_34!=0)_35=1}
+for(var i=0;i<_37;i++){if(!_39[i].processed){if(_67.isOr)return-1;if(_67.isAnd)return 1;if(_67.isNot)return-1}}
+return _35};var _43=function(_65,_66,_67,_68){if(_65.fieldName==_66.fieldName){var _7=_68.compareValues(_65.value,_66.value,_65.fieldName)==0;if(_7){return 0}else{return-1}}else{return-1}};var _44=function(_65,_66,_67,_68){var _45=_65.fieldName;if(_65.fieldName==_66.fieldName){if(_67.upperBounds&&_67.lowerBounds){if(_68.compareValues(_65.start,_66.start,_45)==0){if(_68.compareValues(_65.end,_66.end,_45)==0){return 0}}}else{if(_68.compareValues(_65.value,_66.value,_45)==0){return 0}}
+var _46=_65.start==null?_65.value:_65.start,_47=_66.start==null?_66.value:_66.start,_48=_65.start==null?_65.value:_65.end,_49=_66.start==null?_66.value:_66.end;var _13,_50;var _51=true,_52=true,_53=true,_54=true;if(_47==null)_51=false;if(_49==null)_52=false;if(_46==null)_53=false;if(_48==null)_54=false;if(_67.lowerBounds&&!_67.upperBounds&&!_53&&!_51){return 0}
+if(_67.lowerBounds&&!_67.upperBounds){if(_53&&!_51){return 1}
+if(_51&&!_53){return-1}
+var _55=_68.compareValues(_46,_47,_45);if(_55==-1){return 1}else if(_55==0){return 0}}
+if(_67.upperBounds&&!_67.lowerBounds&&!_54&&!_52){return 0}
+if(_67.upperBounds&&!_67.lowerBounds){if(_54&&!_52){return 1}
+if(_52&&!_54){return-1}
+var _55=_68.compareValues(_46,_47,_45);if(_55==1){return 1}else if(_55==0){return 0}}
+if(_67.lowerBounds&&_67.upperBounds){if(_68.compareValues(_46,_47,_45)<=0&&_68.compareValues(_46,_49,_45)>=0&&_68.compareValues(_48,_49,_45)>=0&&_68.compareValues(_48,_47,_45)<=0)
+{return 1}
+if((_53&&!_51)||(_54&&!_52)){return 1}
+if(!_53&&!_51&&!_54&&!_51){return 0}}}
+return-1};var _56=function(_65,_66,_67){var _57=_66.value;var _58=_65.value;if(isc.isA.Number(_57))_57=""+_57;if(isc.isA.Number(_58))_58=""+_58;if(!isc.isA.String(_57)||!isc.isA.String(_58))return-1;if(_67.caseInsensitive){_57=_57.toLowerCase();_58=_58.toLowerCase()}
+if(_65.fieldName==_66.fieldName&&_65.value==_66.value&&!_67.equals)
+{return 0}
+if(_67.equals){return _57==_58?0:-1}
+if(_67.startsWith&&!_67.negate&&_58.length>_57.length&&isc.startsWith(_58,_57))
+{return 1}
+if(_67.startsWith&&_67.negate&&_57.length>_58.length&&isc.startsWith(_57,_58))
+{return 1}
+if(_67.endsWith&&!_67.negate&&_58.length>_57.length&&isc.endsWith(_58,_57))
+{return 1}
+if(_67.endsWith&&_67.negate&&_57.length>_58.length&&isc.endsWith(_57,_58))
+{return 1}
+if(!_67.startsWith&&!_67.endsWith&&!_67.negate&&_58.length>_57.length&&isc.contains(_58,_57))
+{return 1}
+if(!_67.startsWith&&!_67.endsWith&&_67.negate&&_57.length>_58.length&&isc.contains(_57,_58))
+{return 1}
+return-1};var _59=function(_65,_66,_67){if(_65.fieldName==_66.fieldName)return 0;else return-1};var _60=function(_65,_66,_67){if(_65.value==_66.value&&_65.fieldName==_66.fieldName){return 0}else{return-1}};var _61=function(_65,_66,_67){if(_65.fieldName==_66.fieldName){if(!isc.isAn.Array(_66.value)||!isc.isAn.Array(_65.value)){return-1}
+if(_65.value.equals(_66.value)){return 0}
+if(!_67.negate&&_66.value.containsAll(_65.value)){return 1}
+if(_67.negate&&_65.value.containsAll(_66.value)){return 1}}
+return-1};var _62=function(_65,_66,_67){if(_65.value==_66.value&&_65.fieldName==_66.fieldName){return 0}else{return-1}};var _63=[{ID:"equals",titleProperty:"equalsTitle",negate:false,valueType:"fieldType",condition:_5,compareCriteria:_43,symbol:"==",wildCard:"*",canNormalize:true,getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"notEqual",titleProperty:"notEqualTitle",negate:true,valueType:"fieldType",condition:_5,compareCriteria:_43,symbol:"!",wildCard:"*",canNormalize:true,getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"greaterThan",titleProperty:"greaterThanTitle",lowerBounds:true,valueType:"fieldType",condition:_8,compareCriteria:_44,symbol:">",getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"lessThan",titleProperty:"lessThanTitle",upperBounds:true,valueType:"fieldType",condition:_8,compareCriteria:_44,symbol:"<",getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"greaterOrEqual",titleProperty:"greaterOrEqualTitle",lowerBounds:true,inclusive:true,valueType:"fieldType",condition:_8,compareCriteria:_44,symbol:">=",getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"lessOrEqual",titleProperty:"lessOrEqualTitle",upperBounds:true,inclusive:true,valueType:"fieldType",condition:_8,compareCriteria:_44,symbol:"<=",getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"between",titleProperty:"betweenTitle",lowerBounds:true,upperBounds:true,hidden:true,valueType:"valueRange",condition:_8,compareCriteria:_44,getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"iBetween",titleProperty:"iBetweenTitle",lowerBounds:true,upperBounds:true,hidden:true,valueType:"valueRange",condition:_8,caseInsensitive:true,compareCriteria:_44,getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"betweenInclusive",titleProperty:"betweenInclusiveTitle",lowerBounds:true,upperBounds:true,valueType:"valueRange",inclusive:true,condition:_8,compareCriteria:_44,symbol:"...",getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"iBetweenInclusive",titleProperty:"iBetweenInclusiveTitle",lowerBounds:true,upperBounds:true,valueType:"valueRange",inclusive:true,condition:_8,compareCriteria:_44,symbol:"...",caseInsensitive:true,getCriterion:function(_45,_65){var _20={fieldName:_45,operator:this.ID};if(isc.isA.RelativeDateItem(_65))
+_20.value=_65.getRelativeDate()||_65.getValue();else _20.value=_65.getValue();return _20}},{ID:"iEquals",titleProperty:"iEqualsTitle",equals:true,caseInsensitive:true,valueType:"fieldType",condition:_18,symbol:"==",wildCard:"*",canNormalize:true,compareCriteria:_56},{ID:"iContains",titleProperty:"iContainsTitle",caseInsensitive:true,valueType:"fieldType",condition:_18,symbol:"~",canNormalize:true,compareCriteria:_56},{ID:"iStartsWith",titleProperty:"iStartsWithTitle",startsWith:true,caseInsensitive:true,valueType:"fieldType",condition:_18,symbol:"^",canNormalize:true,compareCriteria:_56},{ID:"iEndsWith",titleProperty:"iEndsWithTitle",endsWith:true,caseInsensitive:true,valueType:"fieldType",condition:_18,symbol:"|",canNormalize:true,compareCriteria:_56},{ID:"contains",titleProperty:"containsTitle",hidden:true,valueType:"fieldType",condition:_18,symbol:"~",canNormalize:true,compareCriteria:_56},{ID:"startsWith",titleProperty:"startsWithTitle",startsWith:true,hidden:true,valueType:"fieldType",condition:_18,symbol:"^",canNormalize:true,compareCriteria:_56},{ID:"endsWith",titleProperty:"endsWithTitle",endsWith:true,hidden:true,valueType:"fieldType",condition:_18,symbol:"|",canNormalize:true,compareCriteria:_56},{ID:"iNotEqual",titleProperty:"iNotEqualTitle",caseInsensitive:true,equals:true,negate:true,valueType:"fieldType",condition:_18,symbol:"!",wildCard:"*",canNormalize:true,compareCriteria:_56},{ID:"iNotContains",titleProperty:"iNotContainsTitle",caseInsensitive:true,negate:true,valueType:"fieldType",condition:_18,symbol:"!~",canNormalize:true,compareCriteria:_56},{ID:"iNotStartsWith",titleProperty:"iNotStartsWithTitle",startsWith:true,caseInsensitive:true,negate:true,valueType:"fieldType",condition:_18,symbol:"!^",canNormalize:true,compareCriteria:_56},{ID:"iNotEndsWith",titleProperty:"iNotEndsWithTitle",endsWith:true,caseInsensitive:true,negate:true,valueType:"fieldType",condition:_18,symbol:"!@",canNormalize:true,compareCriteria:_56},{ID:"notContains",titleProperty:"notContainsTitle",negate:true,hidden:true,valueType:"fieldType",condition:_18,symbol:"!~",canNormalize:true,compareCriteria:_56},{ID:"notStartsWith",titleProperty:"notStartsWithTitle",startsWith:true,negate:true,hidden:true,valueType:"fieldType",condition:_18,symbol:"!^",canNormalize:true,compareCriteria:_56},{ID:"notEndsWith",titleProperty:"notEndsWithTitle",endsWith:true,negate:true,hidden:true,valueType:"fieldType",condition:_18,symbol:"!@",canNormalize:true,compareCriteria:_56},{ID:"isNull",titleProperty:"isNullTitle",valueType:"none",condition:_21,symbol:"#",compareCriteria:_59},{ID:"notNull",titleProperty:"notNullTitle",negate:true,valueType:"none",condition:_21,symbol:"!#",compareCriteria:_59},{ID:"regexp",titleProperty:"regexpTitle",hidden:true,valueType:"custom",condition:_23,symbol:"/regex/",compareCriteria:_60},{ID:"iregexp",titleProperty:"iregexpTitle",hidden:true,caseInsensitive:true,valueType:"custom",condition:_23,symbol:"/regex/",compareCriteria:_60},{ID:"inSet",titleProperty:"inSetTitle",hidden:true,valueType:"valueSet",condition:_25,compareCriteria:_61,symbol:"=(",closingSymbol:")",valueSeparator:"|",processValue:function(_65,_66){return _65.split(this.valueSeparator)}},{ID:"notInSet",titleProperty:"notInSetTitle",negate:true,hidden:true,valueType:"valueSet",condition:_25,compareCriteria:_61,symbol:"!=(",closingSymbol:")",valueSeparator:"|",processValue:function(_65,_66){return _65.split(this.valueSeparator)}},{ID:"equalsField",titleProperty:"equalsFieldTitle",valueType:"fieldName",condition:_28,symbol:"=.",canNormalize:true,compareCriteria:_62,processValue:function(_65,_66){if(!_66)return _65;var _64=_66.getField(_65);if(_64)return _65;_64=_66.getFieldByTitle(_65);if(_64)return _64.name;return null}},{ID:"notEqualField",titleProperty:"notEqualFieldTitle",negate:true,valueType:"fieldName",condition:_28,canNormalize:true,compareCriteria:_62},{ID:"greaterThanField",titleProperty:"greaterThanFieldTitle",lowerBounds:true,valueType:"fieldName",condition:_31,compareCriteria:_62},{ID:"lessThanField",titleProperty:"lessThanFieldTitle",upperBounds:true,valueType:"fieldName",condition:_31,compareCriteria:_62},{ID:"greaterOrEqualField",titleProperty:"greaterOrEqualFieldTitle",lowerBounds:true,inclusive:true,valueType:"fieldName",condition:_31,compareCriteria:_62},{ID:"lessOrEqualField",titleProperty:"lessOrEqualFieldTitle",upperBounds:true,inclusive:true,valueType:"fieldName",condition:_31,compareCriteria:_62},{ID:"containsField",titleProperty:"containsFieldTitle",hidden:true,valueType:"fieldName",condition:_32,canNormalize:true,compareCriteria:_62},{ID:"startsWithField",titleProperty:"startsWithTitleField",startsWith:true,hidden:true,valueType:"fieldName",condition:_32,canNormalize:true,compareCriteria:_62},{ID:"endsWithField",titleProperty:"endsWithTitleField",endsWith:true,hidden:true,valueType:"fieldName",condition:_32,canNormalize:true,compareCriteria:_62},{ID:"and",titleProperty:"andTitle",isAnd:true,valueType:"criteria",condition:_1,symbol:" and ",compareCriteria:_33},{ID:"not",titleProperty:"notTitle",isNot:true,valueType:"criteria",condition:_1,compareCriteria:_33},{ID:"or",titleProperty:"orTitle",isOr:true,valueType:"criteria",condition:_1,symbol:" or ",compareCriteria:_33}];for(var _3=0;_3<_63.length;_3++){isc.DataSource.addSearchOperator(_63[_3])}
+isc.DataSource.setTypeOperators(null,["equals","notEqual","lessThan","greaterThan","lessOrEqual","greaterOrEqual","between","betweenInclusive","isNull","notNull","inSet","notInSet","equalsField","notEqualField","greaterThanField","lessThanField","greaterOrEqualField","lessOrEqualField","and","or","not","inSet","notInSet"]);isc.DataSource.setTypeOperators("text",["regexp","iregexp","contains","startsWith","endsWith","iEquals","iNotEqual","iBetween","iBetweenInclusive","iContains","iStartsWith","iEndsWith","notContains","notStartsWith","notEndsWith","iNotContains","iNotStartsWith","iNotEndsWith","containsField","startsWithField","endsWithField"]);isc.DataSource.setTypeOperators("integer",["iContains","iStartsWith","iEndsWith","iNotContains","iNotStartsWith","iNotEndsWith","containsField","startsWithField","endsWithField"]);isc.DataSource.setTypeOperators("float",["iContains","iStartsWith","iEndsWith","iNotContains","iNotStartsWith","iNotEndsWith","containsField","startsWithField","endsWithField"])};isc.$571();isc.DataSource.create({ID:"Object",fields:{},addGlobalId:false});isc.DataSource.create({ID:"ValueMap",addGlobalId:false,builtinSchema:true,canBeArrayValued:true,fields:{},$cp:"ID",$450:"id",xmlToJS:function(_1,_2){if(_1==null||isc.xml.elementIsNil(_1))return null;var _3=isc.xml.getElementChildren(_1),_4=isc.xml.getAttributes(_1),_5=!isc.isAn.emptyObject(_4);for(var i=0;i<_3.length;i++){var _7=_3[i],_8=_7.getAttribute(this.$cp)||_7.getAttribute(this.$450),_9=isc.xml.getElementText(_7);if(_8!=null&&_9!=null){_5=true;_4[_8]=_9}else if(_8!=null){_4[_8]=_8}else if(_9!=null){_4[_9]=_9}else{_4[isc.emptyString]=isc.emptyString}}
+if(_5)return _4;return isc.getValues(_4)},xmlSerializeFields:function(_1,_2,_3){if(_1==null||isc.DS.isSimpleTypeValue(_1)){return this.Super("xmlSerializeFields",arguments)}
+var _4=isc.SB.create(),_3=(_3||"")+" ";if(isc.isAn.Array(_1)){for(var i=0;i<_1.length;i++){var _6=_1[i];_4.append("\r",_3,"<value>",isc.makeXMLSafe(_6),"</value>")}}else{for(var _7 in _1){var _6=_1[_7];_4.append("\r",_3,"<value id=\"",isc.makeXMLSafe(_7),"\">",isc.makeXMLSafe(_6),"</value>")}}
+return _4.toString()}});isc.ClassFactory.defineInterface("DataModel");isc.DataModel.addInterfaceMethods({getDataSource:function(){if(isc.isA.String(this.dataSource))this.dataSource=isc.DS.get(this.dataSource);return this.dataSource},getOperationId:function(_1){var _2=this.getOperation(_1);return _2==null?null:(isc.isA.String(_2)?_2:_2.ID)},getOperation:function(_1){var _2=isc.rpc.getDefaultApplication(),_3,_4;var _5=_1+"Operation";if(this[_5]){_3=this[_5];if(isc.isAn.Object(_3))return _3;_4=_3}
+if(_4==null||isc.isA.String(_4)){var _6=this.getDataSource();if(_6==null){this.logWarn("can't getOperation for type: "+_1+", no "+_5+" specified, and no dataSource to "+"create an auto-operation");return null}
+this.logInfo("creating auto-operation for operationType: "+_1);_3=isc.DataSource.makeDefaultOperation(_6,_1,_4);_4=_3.ID;this[_5]=_4}
+return _3}});isc.defineClass("XJSONDataSource","DataSource");isc.A=isc.XJSONDataSource.getPrototype();isc.A.dataFormat="json";isc.A.dataTransport="scriptInclude";isc.defineClass("Schema","DataSource");isc.A=isc.Schema.getPrototype();isc.A.dataFormat="xml";isc.A.dropNamespaceDeclarations=true;isc.A.addGlobalId=false;isc.defineClass("WSDLMessage","Schema");isc.A=isc.WSDLMessage.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getWSOperation=function isc_WSDLMessage_getWSOperation(_1){var _2=this.getWebService(_1);if(_1&&_1.wsOperation)return _2.getOperation(_1.wsOperation);else return _2.getOperationForMessage(this.ID.substring(8))}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("XSElement","Schema");isc.defineClass("XSComplexType","Schema");isc.defineClass("SchemaSet").addMethods({init:function(){this.ns.ClassFactory.addGlobalID(this);var _1=this.schemaNamespace,_2=isc.SchemaSet.schemaSets,_3=_2[_1];if(_3==null||((_3.schema==null&&_3.schema.length==0)&&(this.schema!=null&&this.schema.length!=0)))
+{_2[_1]=this}
+var _4=this.serviceNamespace;if(this.schema){this.$530={};this.$531={};this.$693={};for(var i=0;i<this.schema.length;i++){var _6=this.schema[i];_6.serviceNamespace=_4;_6.schemaNamespace=_1;_6.location=this.location;if(isc.isA.SimpleType(_6)){if(_6.inheritsFrom&&_6.inheritsFrom==_6.name&&_6.xmlSource=="XSElement")continue;this.$693[_6.name]=_6}else if(_6.ID){if(isc.isAn.XSElement(_6)){this.$531[_6.ID]=_6}else{this.$530[_6.ID]=_6}}}}
+isc.SchemaSet.$37r=this},getSchema:function(_1,_2,_3){if(!_3)_3=[this];else _3.add(this);var _4;if(_2==isc.DS.$532)_4=this.$531[_1];else if(_2==isc.DS.$45t)_4=this.$530[_1];if(_2==null){_4=this.$530[_1]||this.$531[_1];if(_4!=null)return _4}
+if(!this.$70w){isc.SchemaSet.findLoadedImports(this);this.$70w=true}
+var _5=this.$38q;if(_5!=null){for(var i=0;i<_5.length;i++){var _7=_5[i];if(_3.contains(_7))continue;_4=_7.getSchema(_1,_2,_3);if(_4!=null)return _4}}},getSimpleType:function(_1,_2){if(!_2)_2=[this];else _2.add(this);var _3;if(this.$693){_3=this.$693[_1];if(_3)return _3}
+if(this.$38q!=null){for(var i=0;i<this.$38q.length;i++){var _5=this.$38q[i];if(_2.contains(_5))continue;_3=_5.getSimpleType(_1,_2);if(_3!=null)return _3}}},setLocation:function(_1){this.location=_1;if(!this.schema)return;for(var i=0;i<this.schema.length;i++){var _3=this.schema[i];_3.location=_1}},loadImports:function(_1){isc.SchemaSet.loadImports(_1,this)},loadImport:function(_1,_2,_3,_4){return isc.SchemaSet.loadImport(_1,_2,_3,_4,this)},doneImporting:function(){this.fireCallback(this.$69o)},addImportXMLSource:function(_1,_2){this.importSources=this.importSources||[];this.importSources.add({xmlText:_1,location:_2})},addSchemaSet:function(_1,_2){this.$69n=this.$69n||[];this.$69n.add(_1)}});isc.A=isc.SchemaSet;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.schemaSets={};isc.A.$69p=["http://www.w3.org/2001/xml.xsd","http://www.w3.org/2001/XMLSchema","http://www.w3.org/XML/1998/namespace"];isc.A.$69q=[];isc.B.push(isc.A.get=function isc_c_SchemaSet_get(_1){return this.schemaSets[_1]}
+,isc.A.findLoadedImports=function isc_c_SchemaSet_findLoadedImports(_1){var _2=this.getAllImports(_1);if(!_2)return;var _3=_1.$38q=_1.$38q||[];var _4=_1.$70x=_1.$70x||[];for(var i=0;i<_2.length;i++){var _6=_2[i],_7=_6.isWSDL,_8=_6.namespace;if(this.$69p.contains(_8))continue;if((_7&&_4.find("serviceNamespace",_8))||(!_7&&_3.find("schemaNamespace",_8)))
+continue;var _9=_7?isc.WebService.get(_8):isc.SchemaSet.get(_8);if(_9==null){var _10;if(isc.isA.WebService(_1)){_10="WebService with targetNamespace '"+_1.serviceNamespace}else{_10="SchemaSet with targetNamespace '"+_1.schemaNamespace}
+var _11=_6.location?"logWarn":"logInfo";_1[_11](_10+"' could not find "+(_7?"webService":"SchemaSet")+" for namespace: '"+_8+"'. Pass autoLoadImports to loadWSDL()/loadXMLSchema() or "+"separately load via loadWSDL/loadXMLSchema jsp tag or method","schemaLoader");continue}
+if(_9.location==null)_9.setLocation(_1.location);_7?_4.add(_9):_3.add(_9)}}
+,isc.A.getAllImports=function isc_c_SchemaSet_getAllImports(_1){var _2=_1.schemaImports;if(_1.wsdlImports){_1.wsdlImports.setProperty("isWSDL",true);_2=_2||[];_2=_2.concat(_1.wsdlImports)}
+return _2}
+,isc.A.loadImports=function isc_c_SchemaSet_loadImports(_1,_2){_2.$69o=_1;var _3=this.getAllImports(_2);if(!_3)return _2.doneImporting();_2.$69r=0;for(var i=0;i<_3.length;i++){var _5=_3[i],_6=_5.namespace;if(_6){var _7=(_5.isWSDL?isc.WebService.get(_6):isc.SchemaSet.get(_6));if(_7!=null){_2.logDebug("import already loaded: "+_6+", skipping","schemaLoader");continue}}
+if(_5.location&&_5.location!=_2.location){var _8=_2.loadImport(_6,_5.location,function(_9){if(isc.isA.WebService(_9)){_2.addWebService(_9,_6)}else{_2.addSchemaSet(_9,_6)}
+_2.$69r--;_2.logInfo(_2+" loaded import: "+_9+" as namespace: "+_6+", remaining imports: "+_2.$69r,"schemaLoader");if(_2.$69r==0)_2.doneImporting()},_5.isWSDL);if(_8)_2.$69r++}}
+if(_2.$69r==0)_2.doneImporting()}
+,isc.A.loadImport=function isc_c_SchemaSet_loadImport(_1,_2,_3,_4,_5){var _6=_5.location.substring(0,_5.location.lastIndexOf("/"));if(!_6.endsWith("/"))_6+="/";var _7=isc.Page.combineURLs(_6,_2);if(_7==_5.location){_5.logDebug("skipping self-reference import: "+_7,"schemaLoader");return false}
+if(this.$69p.contains(_7)){_5.logDebug("skipping pedantic import: "+_7,"schemaLoader");return false}
+if(this.$69q.contains(_7)){_5.logDebug("skipping redundant import: "+_7,"schemaLoader");return false}
+this.$69q.add(_7);_5.logInfo("loading import from: "+_7+"\nschema/service base dir: "+_6+"\nimport location: "+_2,"schemaLoader");var _8=_4?"loadWSDL":"loadXMLSchema";isc.xml[_8](_7,function(_9){_5.fireCallback(_3,"schemaSet",[_9])},null,true,{initiator:_5.initiator||_5,captureXML:_5.captureXML});return true}
+);isc.B._maxIndex=isc.C+5;isc.SchemaSet.getPrototype().toString=function(){return"["+this.Class+" ns="+this.echoLeaf(this.schemaNamespace)+(this.location?" location="+isc.Page.getLastSegment(this.location):"")+"]"};isc.defineClass("WebService").addMethods({init:function(){var _1=this.serviceNamespace;if(this.messages){for(var i=0;i<this.messages.length;i++){this.messages[i].serviceNamespace=_1}}
+this.logInfo("registered service with serviceNamespace: "+_1+" service name: "+this.name);isc.WebService.services.add(this);isc.WebService.$37r=this},loadImports:function(_1){isc.SchemaSet.loadImports(_1,this)},loadImport:function(_1,_2,_3,_4){return isc.SchemaSet.loadImport(_1,_2,_3,_4,this)},doneImporting:function(){this.fireCallback(this.$69o)},addSchemaSet:function(_1,_2){this.$38q=this.$38q||[];this.$38q.add(_1)},addWebService:function(_1,_2){this.$70x=this.$70x||[];this.$70x.add(_1)},addImportXMLSource:function(_1,_2){this.importSources=this.importSources||[];this.importSources.add({xmlText:_1,location:_2})},getOperation:function(_1,_2){if(isc.isAn.Object(_1))return _1;if(!this.$70w){isc.SchemaSet.findLoadedImports(this);this.$70w=true}
+var _3=this.getBindingOperation(_1,_2);var _4=this.getPortTypeOperation(_1,_2);if(!_3&&!_4){this.logWarn(this+": no such operation: '"+_1+"'");return null}
+return isc.addProperties({},_4,_3)},findOperation:function(_1,_2,_3,_4){if(!_3)return;if(_2)_3=_3.findAll("portTypeName",_2);if(!_3)return;if(this.$70x){for(var i=0;i<this.$70x.length;i++){var _6=this.$70x[i],_7=_4?"getPortTypeOperation":"getBindingOperation",_8=_6[_7](_1,_2);if(_8!=null)return _8}}
+for(var i=0;i<_3.length;i++){var _9=_3[i].operation;if(!isc.isAn.Array(_9))_9=[_9];var _8=_9.find("name",_1);if(_8!=null)return _8}},getPortTypeOperation:function(_1,_2){return this.findOperation(_1,_2,this.portTypes,true)},getBindingOperation:function(_1,_2){return this.findOperation(_1,_2,this.bindings)},getOperationForMessage:function(_1){var _2=this.getOperations();if(!_2)return;var _3=_2.find("inputMessage",_1);if(_3)return _3;_3=_2.find("outputMessage",_1);if(_3)return _3},getOperationNames:function(){var _1=this.operationNames;if(_1)return _1;if(!this.$70w){isc.SchemaSet.findLoadedImports(this);this.$70w=true}
+_1=this.operationNames=[];if(this.bindings){for(var i=0;i<this.bindings.length;i++){var _3=this.bindings[i],_4=_3.operation;if(!isc.isAn.Array(_4))_4=[_4];_1.addList(_4.getProperty("name"));for(var j=0;j<_1.length;j++){var _6=this.getPortTypeOperation(_1[j],_3.portTypeName);if(_6)_6.hasBinding=true}}}
+if(this.portTypes){for(var i=0;i<this.portTypes.length;i++){var _7=this.portTypes[i],_4=_7.operation;if(!isc.isAn.Array(_4))_4=[_4];var _8=_4.findAll("hasBinding",true);if(_8){_4=_4.duplicate();_4.removeAll(_8)}
+_1.addList(_4.getProperty("name"))}}
+return(this.operationNames=_1)},getOperations:function(_1){var _2=this.getOperationNames(),_3=[];for(var i=0;i<_2.length;i++){var _5=this.getOperation(_2[i]);if(_1&&!_5.hasBinding)continue;_3.add(_5)}
+return _3},getSchema:function(_1,_2){if(!this.$70w){isc.SchemaSet.findLoadedImports(this);this.$70w=true}
+var _3=this.$38q;if(_3!=null){for(var i=0;i<_3.length;i++){var _5=_3[i];var _6=_5.getSchema(_1,_2);if(_6)return _6}}
+return isc.DS.get(_1,null,null,_2)},getRequestMessage:function(_1){var _2=this.getOperation(_1);return this.getMessage(_2.inputMessage)},getResponseMessage:function(_1){var _2=this.getOperation(_1);return this.getMessage(_2.outputMessage)},getMessage:function(_1){var _2=this.messages.find("ID","message:"+_1);if(_2)return _2;if(!this.$70w){isc.SchemaSet.findLoadedImports(this);this.$70w=true}
+if(this.$70x){for(var i=0;i<this.$70x.length;i++){var _4=this.$70x[i];_2=_4.getMessage(_1);if(_2)return _2}}},getBodyPartNames:function(_1,_2){var _3=this.getOperation(_1),_4=_2?_3.outputParts:_3.inputParts;if(_4==null||isc.isAn.emptyString(_4)){var _5=_2?this.getResponseMessage(_1):this.getRequestMessage(_1);return _5.getFieldNames()}else{return _4.split(" ")}},globalNamespaces:{xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"},callOperation:function(_1,_2,_3,_4,_5){var _6=this.getOperation(_1);if(_6==null){this.logWarn("No such operation: "+_1);return}
+_5=_5||isc.emptyObject;var _7=isc.addProperties({actionURL:this.getDataURL(_1),httpMethod:"POST",contentType:"text/xml",data:_2,serviceNamespace:this.serviceNamespace,serviceName:this.name,wsOperation:_1},_5);_7.httpHeaders=isc.addProperties({},{SOAPAction:_6.soapAction||'""'},_5.httpHeaders);_7.headerData=_5.headerData||this.getHeaderData(_7);_7.data=this.getSoapMessage(_7);_7.clientContext={$38r:_4,$38s:_1,$38u:_3,$38v:_5.xmlResult};if(this.spoofResponses){var _8=this.getSampleResponse(_1);if(this.logIsDebugEnabled("xmlBinding")){this.logDebug("spoofed response:\n"+_8,"xmlBinding")}
+this.delayCall("$38w",[isc.xml.parseXML(_8),_8,{status:0,clientContext:_7.clientContext,httpResponseCode:200,httpResponseText:_8},_7]);return}
+_7.callback={target:this,methodName:"$38w"};isc.xml.getXMLResponse(_7)},$38w:function(_1,_2,_3,_4){var _5=_4.clientContext,_6=_5.$38s,_7=_5.$38u;if(_3.status<0){this.fireCallback(_5.$38r,"data,xmlDoc,rpcResponse,wsRequest",[_3.data,_1,_3,_4]);return}
+_1.addNamespaces(this.getOutputNamespaces(_6));if(_4.xmlNamespaces){_1.addNamespaces(_4.xmlNamespaces)}
+var _8=(_7!=null&&_7.contains("/")),_9=(_8?_7:null),_10;if(_8){_10=_1.selectNodes(_9)}else if(_7){_10=this.selectByType(_1,_6,_7)}else{_10=_1.selectNodes("//s:Body/*",{s:"http://schemas.xmlsoap.org/soap/envelope/"});if(_10.length==1)_10=_10[0]}
+if(this.logIsDebugEnabled()){this.logDebug("selected response data is: "+this.echoFull(_10))}
+if(_5.$38v){this.fireCallback(_5.$38r,"data,xmlDoc,rpcResponse,wsRequest",[_10,_1,_3,_4]);return}
+var _11;if(_8){_11=null}else if(_7){_11=this.getSchema(_5.$38u)}else{var _12=this.getSchema("message:"+this.getOperation(_6).outputMessage);if(this.getSoapStyle(_6)!="document"){_11=_12}else{var _13=_12.getFieldNames().first();_11=_12.getSchema(_12.getField(_13).type)}}
+_10=isc.xml.toJS(_10,null,_11);this.fireCallback(_5.$38r,"data,xmlDoc,rpcResponse,wsRequest",[_10,_1,_3,_4])},getOutputNamespaces:function(_1,_2){var _3=this.getDefaultOutputDS(_1);return isc.addProperties({"default":_3.schemaNamespace||this.serviceNamespace,schema:_3.schemaNamespace,service:this.serviceNamespace},_2)},getDataURL:function(_1){var _2=this.getOperation(_1);if(_2&&_2.dataURL)return _2.dataURL;return this.dataURL},getMessageSerializer:function(_1,_2){var _3=_2?this.getResponseMessage(_1):this.getRequestMessage(_1);if(_3==null){this.logWarn("no "+(_2?"response":"request")+" message definition found for operation: '"+_1+"'");return}
+if(this.getSoapStyle(_1)!="document")return _3;var _4=_3.getFieldNames();if(_4.length==1&&_3.fieldIsComplexType(_4[0])){var _5=_3.getField(_4[0]);_3=_3.getSchema(_5.type,_5.xsElementRef?"element":null);if(_3==null){this.logWarn("can't find schema: "+_5.type+", part of "+(_2?"response":"request")+" message for operation '"+_1+"'")}}
+return _3},useSimplifiedInputs:function(_1,_2){var _3=_2?this.getResponseMessage(_1):this.getRequestMessage(_1);return this.getMessageSerializer(_1,_2)!=_3},getSoapMessage:function(_1,_2){_1.serviceNamespace=_1.serviceNamespace||this.serviceNamespace;var _3=_1.wsOperation;if(this.getOperation(_3)==null){this.logWarn("no such operation: '"+_3+"' in service: "+this.serviceNamespace);return""}
+var _4=this.getMessageSerializer(_1.wsOperation,_2&&_2.generateResponse);if(_4==null)return"";return _4.getXMLRequestBody(_1,_2)},getSampleResponse:function(_1,_2,_3,_4){return this.getSoapMessage({wsOperation:_1,data:_2||{}},isc.addProperties({spoofData:true,generateResponse:!_4},_3))},getSampleRequest:function(_1,_2,_3){return this.getSampleResponse(_1,_2,_3,true)},getSoapStyle:function(_1){return this.getOperation(_1).soapStyle||this.soapStyle},getInputDS:function(_1){return this.getMessageSerializer(_1)},getHeaderSchema:function(_1,_2){var _3=this.getOperation(_1),_4=_2?_3.inputHeaders:_3.outputHeaders;if(!_4)return null;var _5={};for(var i=0;i<_4.length;i++){var _7=_4[i].part,_8=this.getSchema("message:"+_4[i].message);var _9=_8.getPartField(_7);_5[_7]=this.getSchema(_9.type)||_9}
+return _5},getInputHeaderSchema:function(_1){return this.getHeaderSchema(_1,true)},getOutputHeaderSchema:function(_1){return this.getHeaderSchema(_1,false)},getHeaderData:function(_1){},selectByType:function(_1,_2,_3){var _4=this.getOperation(_2),_5=this.getSchema("message:"+_4.outputMessage),_6=this.getSchema(_3);if(_6==null){this.logWarn("selectByType: type '"+_3+"' not present in schema for message: "+_4.outputMessage);return null}
+var _7=_5.findTagOfType(_6.ID);if(_7==null){this.logWarn("selectByType: no tag of type '"+_3+"' could be found in message: "+_4.outputMessage);return null}
+var _8=_7[0],_9=_7[1],_10=_7[2],_11=_7[3],_12=_8.getField(_9);_9=_9||_6.ID;var _13=_6.mustQualify,_14=_6.schemaNamespace,_15="//"+(_13?"ns0:":"")+_9;if(_12&&_12.multiple)_15=_15+"/*";var _16=isc.xml.selectNodes(_1,_15,{ns0:_14});if(this.logIsDebugEnabled("xmlBinding")){this.logDebug("selecting type: '"+_6+"' within message '"+_4.outputMessage+" via XPath: "+_15+(_13?" using ns0: "+_6.schemaNamespace:"")+" got "+_16.length+" elements","xmlBinding")}
+return _16},getDefaultOutputDS:function(_1){var _2=this.getResponseMessage(_1);if(!_2)return null;var _3=_2.getFieldNames();if(_3.length==1&&_2.fieldIsComplexType(_3[0])){return _2.getSchema(_2.getField(_3[0]).type)}
+return _2},getFetchDS:function(_1,_2,_3){if(_2==null)_2=this.getDefaultOutputDS(_1);_2=isc.isA.Object(_2)?_2.ID:_2;if(_2!=null&&this.getSchema(_2)==null){this.logWarn("getFetchDS: resultType: '"+_2+"' not present in web service - missing XML files?")}
+var _4=isc.DS.create({serviceNamespace:this.serviceNamespace,inheritsFrom:_2,operationBindings:[isc.addProperties({operationType:"fetch",wsOperation:_1,recordName:_2},_3)]});return _4},setLocation:function(_1,_2){if(_2)this.getBindingOperation(_2).dataURL=_1;else this.dataURL=_1}});isc.A=isc.WebService;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.services=[];isc.B.push(isc.A.get=function isc_c_WebService_get(_1){return this.services.find("serviceNamespace",_1)}
+,isc.A.getByName=function isc_c_WebService_getByName(_1,_2){if(_1=="")_1=null;if(_2!=null){return this.services.find({name:_1,serviceNamespace:_2})}else{return this.services.find("name",_1)}}
+);isc.B._maxIndex=isc.C+2;isc.WebService.getPrototype().toString=function(){return"["+this.Class+" ns="+this.echoLeaf(this.serviceNamespace)+(this.location?" location="+isc.Page.getLastSegment(this.location):"")+"]"};isc.ClassFactory.defineClass("RPCManager");isc.RPC=isc.rpc=isc.RPCManager;isc.Page.observe(isc,"goOffline","isc.rpc.goOffline()");isc.Page.observe(isc,"goOnline","isc.rpc.goOnline()");isc.ClassFactory.defineClass("RPCRequest");isc.A=isc.RPCRequest;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.create=function isc_c_RPCRequest_create(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13){this.logWarn("An RPCRequest does not need to be created. Instead, pass properties to methods "+"such as RPCManager.send() and RPCManger.sendRequest.");return isc.addProperties({},_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13)}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("RPCResponse");isc.A=isc.RPCResponse;isc.A.errorCodes={STATUS_SUCCESS:0,STATUS_OFFLINE:1,STATUS_FAILURE:-1,STATUS_VALIDATION_ERROR:-4,STATUS_LOGIN_INCORRECT:-5,STATUS_MAX_LOGIN_ATTEMPTS_EXCEEDED:-6,STATUS_LOGIN_REQUIRED:-7,STATUS_LOGIN_SUCCESS:-8,STATUS_UPDATE_WITHOUT_PK_ERROR:-9,STATUS_TRANSACTION_FAILED:-10,STATUS_TRANSPORT_ERROR:-90,STATUS_UNKNOWN_HOST_ERROR:-91,STATUS_CONNECTION_RESET_ERROR:-92,STATUS_SERVER_TIMEOUT:-100};isc.RPCResponse.addClassProperties(isc.RPCResponse.errorCodes)
+isc.addGlobal("DSResponse",isc.RPCResponse);isc.A=isc.RPCManager;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.maxErrorMessageLength=1000;isc.A.maxLogMessageLength=25000;isc.A.defaultTimeout=240000;isc.A.defaultPrompt="Contacting server...";isc.A.timeoutErrorMessage="Operation timed out";isc.A.removeDataPrompt="Deleting record(s)...";isc.A.saveDataPrompt="Saving form...";isc.A.validateDataPrompt="Validating...";isc.A.promptStyle=isc.Dialog?"dialog":"cursor";isc.A.useCursorTracker=(isc.Browser.isMoz&&isc.Browser.geckoVersion<20051111);isc.A.cursorTrackerConstructor="Img";isc.A.cursorTrackerDefaults={src:"[SKINIMG]shared/progressCursorTracker.gif",size:16,offsetX:12,offsetY:0,$38x:function(_1){var _2=(isc.EH.getX()+this.offsetX),_3=(isc.EH.getY()+this.offsetY);if(_2+this.size>=isc.Page.getWidth()||_3+this.size>=isc.Page.getHeight()){this.hide();return}
+if(isNaN(_2))_2=0;if(isNaN(_3))_3=0;this.setLeft(_2);this.setTop(_3);if(!_1&&!this.isVisible())this.show()},initWidget:function(){this.Super("initWidget",arguments);this.$38x(true);this.$38y=isc.Page.setEvent("mouseMove",this.getID()+".$38x()");this.$69s=isc.Page.setEvent("mouseOut",this.getID()+".hide()");this.bringToFront()},destroy:function(){isc.Page.clearEvent("mouseMove",this.$38y);isc.Page.clearEvent("mouseOut",this.$69s);this.Super("destroy",arguments)}};isc.A.promptCursor=isc.Browser.isSafari||(isc.Browser.isMoz&&isc.Browser.geckoVersion<20051111)||(isc.Browser.isIE&&isc.Browser.minorVersion<=5.5)?"wait":"progress";isc.A.fetchDataPrompt="Finding records that match your criteria...";isc.A.getViewRecordsPrompt="Loading record...";isc.A.showPrompt=false;isc.A.neverShowPrompt=false;isc.A.actionURL="[ISOMORPHIC]/IDACall";isc.A.defaultTransport="xmlHttpRequest";isc.A.dataEncoding="XML";isc.A.preserveTypes=true;isc.A.credentialsURL=isc.Page.getIsomorphicDir()+"login/loginSuccessMarker.html";isc.A.loginWindowSettings="WIDTH=550,HEIGHT=250";isc.A.maxLoginPageLength=1048576;isc.A.$38z=Array.create({addTrack:function(_1,_2){this.$451=_1;this.add(_1,_2);this.$451=null},setLastChanged:function(_1){this.$451=_1},clearLastChanged:function(){this.$451=null},getLastChanged:function(){return this.$451}});isc.A.$452=0;isc.A.$410=[];isc.B.push(isc.A.getTransactions=function isc_c_RPCManager_getTransactions(){return this.$38z}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.RPCManager;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.allowCrossDomainCalls=false;isc.A.$380=0;isc.A.onLine=!isc.isOffline();isc.A.$89f="text/xml";isc.A.loginStatusCodeMarker="<SCRIPT>//'\"]]>>isc_";isc.A.loginRequiredMarker="<SCRIPT>//'\"]]>>isc_loginRequired";isc.A.loginSuccessMarker="<SCRIPT>//'\"]]>>isc_loginSuccess";isc.A.maxLoginAttemptsExceededMarker="<SCRIPT>//'\"]]>>isc_maxLoginAttemptsExceeded";isc.A.$89j="<responses>";isc.A.$89k="</responses>";isc.A.$89l="<response>";isc.A.$89m="</response>";isc.B.push(isc.A.xmlHttpRequestAvailable=function isc_c_RPCManager_xmlHttpRequestAvailable(){if(isc.Browser.isIE)return(isc.Comm.createXMLHttpRequest()!=null);return true}
+,isc.A.getActionURL=function isc_c_RPCManager_getActionURL(){return isc.Page.getURL(this.actionURL)}
+,isc.A.send=function isc_c_RPCManager_send(_1,_2,_3){var _4=(_3||{});isc.addProperties(_4,{data:_1,callback:_2});return this.sendRequest(_4)}
+,isc.A.$383=function isc_c_RPCManager__warnIfXmlHttpRequestUnavailable(_1){if(this.xmlHttpRequestAvailable()||!this.logIsWarnEnabled())return false;var _2="Feature "+_1+" requires the xmlHttpRequest transport"+" which is not currently available because ActiveX is disabled."+" Please see the 'Features requiring ActiveX or Native support'"+" topic in the client-side reference under Client Reference/System"+" for more information.";this.logWarn(_2);return true}
+,isc.A.sendProxied=function isc_c_RPCManager_sendProxied(_1,_2){_1.serverOutputAsString=true;if(!_1.isRestRequest)_1.sendNoQueue=true;var _3=_1.actionURL||isc.RPCManager.actionURL;var _4=(_1.useHttpProxy!=null?_1.useHttpProxy:(isc.RPCManager.useHttpProxy&&_3.startsWith("http")&&!this.isLocalURL(_3)));if(!isc.RPCManager.allowCrossDomainCalls){if(!_4&&_3.startsWith("http")&&!this.isLocalURL(_3)){isc.warn("SmartClient can't directly contact URL '"+_3+"' due to "+"browser same-origin policy. Remove the host and port number "+"(even if localhost) to avoid this problem, or use XJSONDataSource "+"for JSONP protocol (which allows cross-site calls), or use the "+"server-side HttpProxy included with SmartClient Server."+"<BR>"+"This warning may be suppressed by setting "+"<b>RPCManager.allowCrossDomainCalls</b> to true.")}}
+if(!_4)
+{if(!_2)_1.useSimpleHttp=true}else{_1=isc.addProperties({},_1,{actionURL:isc.XMLTools.httpProxyURL,isProxied:true,useSimpleHttp:true,proxiedURL:_3,params:{data:isc.Comm.xmlSerialize("data",{url:_3,httpMethod:_1.httpMethod,params:_1.params,contentType:_1.contentType,requestBody:_1.data,username:_1.username,password:_1.password,httpHeaders:_1.httpHeaders,uploadFileName:_1.uploadFileName})},transport:"xmlHttpRequest",httpMethod:null,data:null,contentType:null})}
+return isc.rpc.sendRequest(_1)}
+,isc.A.$59w=function isc_c_RPCManager__getHostAndPort(_1){var _2=isc.Page.getProtocol(_1),_3=_1.indexOf("/",_2.length),_4=_1.substring(_2.length,_3),_5;var _6=_4.indexOf(":");if(_6!=-1){_5=_4.substring(_6+1);_4=_4.substring(0,_6)}
+return[_4,_5]}
+,isc.A.isLocalURL=function isc_c_RPCManager_isLocalURL(_1){var _2=this.$59w(_1),_3=_2[0],_4=_2[1];if(_4==null||_4=="")_4=80;var _5=this.getWindow().location,_6=_5.hostname,_7=_5.port;if(_7==null||_7=="")_7=80;return(_3=="localhost"||_3==_6)&&_4==_7}
+,isc.A.sendRequest=function isc_c_RPCManager_sendRequest(_1){if(_1.useHttpProxy&&!_1.isProxied)return this.sendProxied(_1);if(_1.canDropOnDelay&&this.delayingTransactions)return;_1=isc.addProperties({},_1);if(_1.suppressAutoDraw!==false)_1.suppressAutoDraw=true;_1.actionURL=isc.Page.getURL(_1.actionURL||_1.url||_1.URL||this.getActionURL());var _2=_1.transport;if(!_2){if(_1.useXmlHttpRequest!=null||this.useXmlHttpRequest!=null){if(_1.useXmlHttpRequest==null){if(this.useXmlHttpRequest!=null){_1.transport=this.useXmlHttpRequest?"xmlHttpRequest":"hiddenFrame"}else{_1.transport=this.defaultTransport}}else{_1.transport=_2=_1.useXmlHttpRequest?"xmlHttpRequest":"hiddenFrame"}}else{_1.transport=this.defaultTransport}}
+this.checkTransportAvailable(_1,(_2!=null));if(_1.useSimpleHttp==null)_1.useSimpleHttp=_1.paramsOnly;isc.addDefaults(_1,{showPrompt:this.showPrompt,promptStyle:this.promptStyle,promptCursor:this.promptCursor,useCursorTracker:this.useCursorTracker,cursorTrackerConstructor:this.cursorTrackerConstructor});_1.cursorTrackerProperties=isc.addProperties({},this.cursorTrackerDefaults,this.cursorTrackerProperties,_1.cursorTrackerProperties);if(_1.cursorTrackerProperties==null)
+_1.cursorTrackerProperties=this.cursorTrackerProperties;if(!_1.operation){_1.operation={ID:"custom",type:"rpc"}}
+if(this.canQueueRequest(_1,(_2!=null))){if(!this.currentTransaction)this.currentTransaction=this.$385();this.$386(_1,this.currentTransaction);if(!this.queuing)return this.sendQueue();return _1}else{return this.sendNoQueue(_1)}}
+,isc.A.checkTransportAvailable=function isc_c_RPCManager_checkTransportAvailable(_1,_2){var _3=this.xmlHttpRequestAvailable();var _4=_1.transport||this.defaultTransport;if(!_3){if(_4=="xmlHttpRequest"){if(_2){this.logWarn("RPC/DS request specifically requesting the xmlHttpRequest"+" transport, but xmlHttpRequest not currently available -"+" switching transport to hiddenFrame.")}else{this.logWarn("RPCManager.defaultTransport specifies xmlHttpRequest, but"+" xmlHttpRequest not currently available - switching transport "+"to hiddenFrame.")}}
+_1.transport="hiddenFrame"}}
+,isc.A.canQueueRequest=function isc_c_RPCManager_canQueueRequest(_1,_2){if(_1.ignoreTimeout)_1.sendNoQueue=true;var _3=_1.transport;if(_1.containsCredentials){return false}
+if(_1.sendNoQueue||_1.transport=="scriptInclude")return false;var _4=(this.currentTransaction&&this.currentTransaction.requestData.operations.length>0);if(_4&&(_1.actionURL!=this.currentTransaction.URL)){this.logWarn("RPCRequest specified (or defaulted to) URL: "+_1.actionURL+" which is different than the URL for which the RPCManager is currently queuing: "+this.currentTransaction.URL+" - sending this request to server and continuing to queue");return false}
+if(_4&&(this.currentTransaction.transport!=_1.transport))
+{this.logWarn("RPCRequest with conflicting transport while queuing, sending request to"+" server and continuing to queue.");return false}
+return true}
+,isc.A.sendNoQueue=function isc_c_RPCManager_sendNoQueue(_1){var _2=this.currentTransaction;var _3=this.queuing;this.currentTransaction=this.$385();this.$386(_1,this.currentTransaction);var _4=this.sendQueue();this.queuing=_3;this.currentTransaction=_2;return _4}
+,isc.A.$385=function isc_c_RPCManager__createTransaction(){var _1=this.$452++;var _2={timeout:this.defaultTimeout,transactionNum:_1,operations:[],responses:[],requestData:{transactionNum:_1,operations:[]},prompt:this.defaultPrompt,showPrompt:false,changed:function(){isc.RPCManager.$38z.setLastChanged(this);isc.RPCManager.$38z.dataChanged();isc.RPCManager.$38z.clearLastChanged()}}
+this.$38z.addTrack(_2);this.$38z.clearLastChanged();return _2}
+,isc.A.$386=function isc_c_RPCManager__addRequestToTransaction(_1,_2){_2.URL=_1.actionURL;if(_1.containsCredentials)_2.containsCredentials=true;if(_1.exportFilename)_2.URL+="/"+_1.exportFilename;if(!_2.download_filename)_2.download_filename=_1.download_filename;if((_1.downloadResult||_1.downloadToNewWindow)&&_1.download_filename){_2.download_filename=_1.download_filename;_2.URL+="/"+encodeURIComponent(_1.download_filename);_2.ignoreError=true}
+if(_1.prompt&&!_2.customPromptIsSet){this.logDebug("Grabbed prompt from first request that defined one: "+_1.prompt);_2.prompt=_1.prompt;_2.customPromptIsSet=true}
+if(_1.showPrompt&&!_2.showPrompt&&!this.neverShowPrompt){_1.showedPrompt=true;isc.addProperties(_2,{showPrompt:true,promptStyle:_1.promptStyle,promptCursor:_1.promptCursor,useCursorTracker:_1.useCursorTracker,cursorTrackerConstructor:_1.cursorTrackerConstructor,cursorTrackerProperties:_1.cursorTrackerProperties})}
+if(_1.isProxied){isc.addProperties(_2,{isProxied:true,proxiedURL:_1.proxiedURL})}
+_2.transport=_1.transport;if(_1.ignoreReloginMarkers)_2.ignoreReloginMarkers=true;_2.operations.add(_1);var _3=_1.data;if(_3==null)_3="__ISC_NULL__";else if(_3==="")_3="__ISC_EMPTY_STRING__";if(!_1.clientOnly)_2.requestData.operations.add(_3);if(_2.omitNullMapValuesInResponse!==false&&_1.omitNullMapValuesInResponse!=null){_2.omitNullMapValuesInResponse=_2.requestData.omitNullMapValuesInResponse=_1.omitNullMapValuesInResponse}else{_2.omitNullMapValuesInResponse=false}
+if(_1.ignoreTimeout)_2.$387=true;_1.transactionNum=_2.transactionNum;if(_1.timeout||_1.timeout===0)_2.timeout=_1.timeout;_2.changed()}
+,isc.A.startQueue=function isc_c_RPCManager_startQueue(_1){var _2=this.queuing;this.queuing=(_1==null?true:_1);return _2}
+,isc.A.doShowPrompt=function isc_c_RPCManager_doShowPrompt(_1,_2){if(this.$380++!=0)return;if(_1.promptStyle=="dialog"&&_2!=null){isc.showPrompt(_2);this.$388=true}else{isc.EH.showClickMask(null,"hard",null,"blockingRPC");if(_1.useCursorTracker){this.$389=isc.ClassFactory.getClass(_1.cursorTrackerConstructor).create(_1.cursorTrackerProperties);this.$389.show()}else{isc.EH.$m8.setCursor(_1.promptCursor)}}}
+,isc.A.doClearPrompt=function isc_c_RPCManager_doClearPrompt(_1){if(_1.clearedPrompt)return;_1.clearedPrompt=true;if(--this.$380!=0){if(this.$380<0)this.$380=0;return}
+if(this.$388){isc.clearPrompt()}else{if(this.$389){this.$389.destroy();this.$389=null}else{isc.EH.$m8.setCursor(isc.Canvas.DEFAULT)}
+isc.EH.hideClickMask("blockingRPC")}
+this.$388=null}
+,isc.A.getCurrentTransactionId=function isc_c_RPCManager_getCurrentTransactionId(){return this.currentTransaction?this.currentTransaction.transactionNum:null}
+,isc.A.cancelQueue=function isc_c_RPCManager_cancelQueue(_1){if(!_1){this.currentTransaction=null;return}
+var _2=this.getTransaction(_1);if(_2==null)return;if(_2.showPrompt)this.doClearPrompt(_2);if(_2.transportRequest&&_2.transportRequest.abort){_2.transportRequest.abort()}
+this.clearTransaction(_2)}
+,isc.A.getTransaction=function isc_c_RPCManager_getTransaction(_1){if(_1==null)return null;if(_1.location&&_1.document){var _2=_1;var _3=isc.HiddenFrame.$h6;for(var i=0;i<_3.length;i++){if(_2==_3[i].getHandle()){_1=_3[i].transactionNum;break}}
+if(_1==_2){this.logDebug("Can't find transactionNum in getTransaction from iframe");return null}}
+if(isc.isA.Number(_1)||isc.isA.String(_1)){_1=this.$38z.find({transactionNum:_1})}
+if(_1&&_1.cleared)return null;return _1}
+,isc.A.getCurrentTransaction=function isc_c_RPCManager_getCurrentTransaction(){return this.currentTransaction}
+,isc.A.getLastSubmittedTransaction=function isc_c_RPCManager_getLastSubmittedTransaction(){return this.$38z[this.$38z.length-1]}
+,isc.A.clearTransaction=function isc_c_RPCManager_clearTransaction(_1){var _2=this.getTransaction(_1);if(_2==null){this.logWarn("clearTransaction: no such transaction: "+this.echo(_1));return}
+this.clearTransactionTimeout(_2);if(!this.$453&&isc.Page.isLoaded()){var _3=isc.LogViewer.getGlobalLogCookie();this.setTrackRPC(_3?_3.trackRPC:false)}
+_2.cleared=true;if(!this.$454)this.$38z.remove(_2);else _2.changed()}
+,isc.A.setTrackRPC=function isc_c_RPCManager_setTrackRPC(_1){this.$454=_1;if(!_1)this.removeClearedRPC()}
+,isc.A.removeClearedRPC=function isc_c_RPCManager_removeClearedRPC(){var _1=this.$38z.findAll("cleared",true);if(_1)this.$38z.removeList(_1)}
+,isc.A.delayAllPendingTransactions=function isc_c_RPCManager_delayAllPendingTransactions(){this.delayingTransactions=true;for(var i=0;i<this.$38z.length;i++){var _2=this.$38z[i];this.delayTransaction(_2)}}
+,isc.A.suspendTransaction=function isc_c_RPCManager_suspendTransaction(_1){var _2=this.getTransaction(_1)||this.getCurrentTransaction();if(_2==null){this.logWarn("No transaction to suspend");return}
+if(_2.suspended)return;_2.suspended=true;if(_2.$66n)_2.abortCallbacks=true;this.clearTransactionTimeout(_2);if(_2.showPrompt)this.doClearPrompt(_2);_2.changed()}
+,isc.A.delayTransaction=function isc_c_RPCManager_delayTransaction(_1){_1=this.getTransaction(_1);if(_1.delayed)return;_1.delayed=true;this.clearTransactionTimeout(_1);_1.changed()}
+,isc.A.goOffline=function isc_c_RPCManager_goOffline(){this.logInfo("Going offline...");this.onLine=false}
+,isc.A.goOnline=function isc_c_RPCManager_goOnline(){this.logInfo("Going online...");this.offlinePlayback=true;this.playbackNextOfflineTransaction()}
+,isc.A.offlineTransactionPlaybackComplete=function isc_c_RPCManager_offlineTransactionPlaybackComplete(){}
+,isc.A.playbackNextOfflineTransaction=function isc_c_RPCManager_playbackNextOfflineTransaction(){var _1=this.offlineTransactionLog?this.offlineTransactionLog.removeAt(0):null;if(_1==null){this.logInfo("Offline transaction playback complete");this.offlinePlayback=false;this.onLine=!isc.isOffline();this.offlineTransactionPlaybackComplete();return}
+this.resubmitTransaction(_1)}
+,isc.A.offlineTransaction=function isc_c_RPCManager_offlineTransaction(_1){if(_1.offline)return;_1=this.getTransaction(_1);_1.offline=true;this.clearTransactionTimeout(_1);if(!this.offlineTransactionLog){this.offlineTransactionLog=[];this.offlineTransactionLog.sortByProperty("timestamp",Array.ASCENDING)}
+this.offlineTransactionLog.add(_1);_1.changed();var _2=_1.operations;for(var i=0;i<_2.length;i++){var _4=_2[i];var _5=this.createRPCResponse(_1,_4,{httpResponseCode:200,offlineResponse:true});this.delayCall("fireReplyCallbacks",[_4,_5],0)}}
+,isc.A.resendTransaction=function isc_c_RPCManager_resendTransaction(_1){this.resendTransactionsFlagged(_1,"suspended")}
+,isc.A.resendDelayedTransactions=function isc_c_RPCManager_resendDelayedTransactions(){this.delayingTransactions=false;this.resendTransactionsFlagged(null,"delayed")}
+,isc.A.resendTransactionsFlagged=function isc_c_RPCManager_resendTransactionsFlagged(_1,_2){var _3=_1?[this.getTransaction(_1)]:this.$38z;for(var i=0;i<_3.length;i++){_1=_3[i];if(_1[_2]){delete _1[_2];this.resubmitTransaction(_1)}}}
+,isc.A.getTransactionRequests=function isc_c_RPCManager_getTransactionRequests(_1){return this.getTransaction(_1).operations}
+,isc.A.$39a=function isc_c_RPCManager__setTransactionTimeoutTimer(_1){_1=this.getTransaction(_1);var _2=_1.timeout;if(!_2&&_2!==0)_2=this.defaultTimeout;if(_2==0)return;_1.timeoutTimer=isc.Timer.setTimeout("isc.RPCManager.$39b("+_1.transactionNum+")",_2)}
+,isc.A.clearTransactionTimeout=function isc_c_RPCManager_clearTransactionTimeout(_1){_1=this.getTransaction(_1)||this.getCurrentTransaction()||this.getLastSubmittedTransaction();if(!_1)return;isc.Timer.clear(_1.timeoutTimer)}
+,isc.A.$39b=function isc_c_RPCManager__timeoutTransaction(_1){_1=this.getTransaction(_1);if(_1.$387){this.clearTransaction(_1);return}
+if(!this.onLine){this.offlineTransaction(_1);return}
+_1.results=this.$39c(_1,{data:isc.RPCManager.timeoutErrorMessage,status:isc.RPCResponse.STATUS_SERVER_TIMEOUT});this.$39d(_1.transactionNum)}
+,isc.A.$39c=function isc_c_RPCManager__makeErrorResults(_1,_2){var _3=[];for(var i=0;i<_1.operations.length;i++){if(_1.operations[i].dataFormat=="xml"){_3[i]=isc.Comm.xmlSerialize("response",_2)}else{_3[i]={response:isc.clone(_2)}}}
+return _3}
+,isc.A.resubmitTransaction=function isc_c_RPCManager_resubmitTransaction(_1){_1=this.getTransaction(_1)||this.getLastSubmittedTransaction();_1.status=null;var _2=this.currentTransaction;this.currentTransaction=_1;if(_1!=null){this.logInfo("Resubmitting transaction number: "+_1.transactionNum);delete _1.suspended;delete _1.clearedPrompt;var _3=_1.$76k||isc.emptyObject;this.sendQueue(_3.callback,_3.prompt,_3.URL)}else{this.logWarn("No transaction to resubmit: transaction number "+_1+" does not exist")}
+this.currentTransaction=_2}
+,isc.A.retryOperation=function isc_c_RPCManager_retryOperation(_1){this.logDebug("Server-initiated operation retry for commFrameID: "+_1);var _2=window[_1];if(!_2){this.logError("comm operation retry failed - can't locate object: "+_1);return}
+_2.sendData()}
+,isc.A.transactionAsGetRequest=function isc_c_RPCManager_transactionAsGetRequest(_1,_2,_3){if(!_1.cleared)_1=this.getTransaction(_1)||this.getCurrentTransaction();_2=(_2||_1.URL||this.getActionURL());if(!_3)_3={};_3._transaction=this.serializeTransaction(_1);return this.addParamsToURL(this.markURLAsRPC(_2),_3)}
+,isc.A.encodeParameter=function isc_c_RPCManager_encodeParameter(_1,_2){if(isc.isA.Date(_2)){isc.Comm.xmlSchemaMode=true;_2=_2.toSchemaDate();isc.Comm.xmlSchemaMode=null}else if(isc.isA.Array(_2)){var _3=isc.SB.create();for(var i=0;i<_2.length;i++){_3.append(this.encodeParameter(_1,_2[i]));if(i<_2.length-1)_3.append("&")}
+return _3.toString()}if(!isc.isA.String(_2)){_2=isc.JSON.encode(_2,{prettyPrint:false})}
+return isc.SB.concat(encodeURIComponent(_1),"=",encodeURIComponent(_2))}
+,isc.A.addParamsToURL=function isc_c_RPCManager_addParamsToURL(_1,_2){var _3=_1;if(!_2)return _1;for(var _4 in _2){var _5=_2[_4];_3+=_3.contains("?")?"&":"?";_3+=this.encodeParameter(_4,_5)}
+return _3}
+,isc.A.serializeTransaction=function isc_c_RPCManager_serializeTransaction(_1){var _2;if(this.dataEncoding=="JS"){isc.Comm.$ev=true;_2=isc.Comm.serialize(_1.requestData);isc.Comm.$ev=null}else{isc.Comm.$850=true;_2=isc.Comm.xmlSerialize("transaction",_1.requestData);isc.Comm.$850=null}
+return _2}
+,isc.A.markURLAsRPC=function isc_c_RPCManager_markURLAsRPC(_1){if(!_1.contains("isc_rpc="))_1+=(_1.contains("?")?"&":"?")+"isc_rpc=1&isc_v="+isc.versionNumber;return _1}
+,isc.A.markURLAsXmlHttp=function isc_c_RPCManager_markURLAsXmlHttp(_1){if(!_1.contains("isc_xhr="))_1+=(_1.contains("?")?"&":"?")+"isc_xhr=1";return _1}
+,isc.A.addDocumentDomain=function isc_c_RPCManager_addDocumentDomain(_1){if(!_1.contains("isc_dd="))_1+=(_1.contains("?")?"&":"?")+"isc_dd="+document.domain;return _1}
+,isc.A.sendQueue=function isc_c_RPCManager_sendQueue(_1,_2,_3,_4){var _5=this.currentTransaction;this.currentTransaction=null;this.queuing=false;if(!_5){this.logInfo("sendQueue called with no current queue, ignoring");return false}
+if(_4)this.delayCall("$84s",[_1,_2,_3,_5]);else return this.$84s(_1,_2,_3,_5)}
+,isc.A.$84s=function isc_c_RPCManager__sendQueue(_1,_2,_3,_4){var _5=_4.operations[0];if(!isc.Page.isLoaded()||this.delayingTransactions){_4.$76k={callback:_1,prompt:_2,URL:_3};if(!this.delayingTransactions){isc.Page.setEvent("load",this,isc.Page.FIRE_ONCE,"resendDelayedTransactions");this.delayingTransactions=true}
+this.delayTransaction(_4);return _5}
+_4.timestamp=new Date().getTime();if(!this.onLine&&!this.offlinePlayback){this.offlineTransaction(_4);return _5}
+var _6=true;for(var i=0;i<_4.operations.length;i++){if(!_4.operations[i].clientOnly){_6=false;break}}
+if(_6){_4.allClientOnly=true;_4.sendTime=isc.timeStamp();if(_1!=null){_4.$40c=_1}
+this.delayCall("$39d",[_4.transactionNum],0);return _5}
+_3=_4.URL=isc.Page.getURL(_3||_4.URL||this.getActionURL());var _8=false;if(!_5.useSimpleHttp&&_4.transport!="scriptInclude"){_3=this.markURLAsRPC(_3);if(_4.transport=="xmlHttpRequest"){_3=this.markURLAsXmlHttp(_3);_8=true}else{_3=this.addParamsToURL(_3,{isc_tnum:_4.transactionNum})}
+if(document.domain!=location.hostname)_3=this.addDocumentDomain(_3)}
+_2=_4.prompt=((_4.showPrompt==null||_4.showPrompt)?(_2||_4.prompt||this.defaultPrompt):null);if(_2)this.doShowPrompt(_4,_2);var _9={};var _10=false;for(var i=0;i<_4.operations.length;i++){var _11=_4.operations[i];var _12=_11.params;if(_8){_12=_12||{};_12.isc_tnum=_4.transactionNum}
+var _13=_11.queryParams;var _14=_12;if(_13&&isc.isAn.Object(_13)){_3=_4.URL=this.addParamsToURL(_3,_13)}
+if(_12&&_10)
+this.logWarn("Multiple RPCRequests with params attribute in one transaction - merging");if(_12){if(isc.isA.String(_12)){if(window[_12])_12=window[_12];else if(isc.Canvas.getForm(_12))_12=isc.Canvas.getForm(_12);else{this.logWarn("RPCRequest: "+isc.Log.echo(_11)+" was passed a params value: "+_12+" which does not resolve to a component or a native"+" form - request to server will not include these params");_12=null}}
+if(isc.isA.Class(_12)){if(_12.getValues)_12=_12.getValues();else{this.logWarn("RPCRequest: "+isc.Log.echo(_11)+" was passed an instance of class "+_12.getClassName()+" (or a global ID that resolved to this class)"+" - this class does not support the getValues() method - request to"+" server will not include these params")}}
+if(_12&&!isc.isAn.Object(_12)){this.logWarn("params value: "+_14+" for RPCrequest: "+isc.Log.echo(_11)+" resolved to non-object: "+isc.Log.echo(_12)+" - request to server will not include these params");_12=null}
+if(_12){isc.addProperties(_9,_12);_10=true}}}
+if(this.logIsInfoEnabled()){this.logInfo("sendQueue["+_4.transactionNum+"]: "+_4.operations.length+" RPCRequest(s); transport: "+_4.transport+"; target: "+_3)}
+_4.sendTime=isc.timeStamp();_4.changed();_4.callback="isc.RPCManager.performTransactionReply(transactionNum,results,wd)";if(_1)_4.$40c=_1;var _12=_9;var _15=_4.transport,_16="send"+(_15.substring(0,1).toUpperCase())+_15.substring(1);if(isc.Comm[_16]==null){this.logWarn("Attempt to send transaction with specified transport '"+_4.transport+"' failed - unsupported transaction type.");return}
+this.$39a(_4);var _17;if(_5.isRestRequest){if(_4.operations.length>1){if(_5.contentType==this.$89f){_17="<transaction transactionNum=\""+_4.transactionNum+"\">";_17+="<operations>"
+for(var i=0;i<_4.operations.length;i++){if(_4.operations[i].clientOnly)continue;_17+=_4.operations[i].data}
+_17+="</operations>";_17+="</transaction>"}else{_17="{ \"transaction\": { \"transactionNum\": "+_4.transactionNum+", ";_17+="\"operations\": [";for(var i=0;i<_4.operations.length;i++){if(_4.operations[i].clientOnly)continue;if(i>0)_17+=", ";_17+=_4.operations[i].data}
+_17+="]}}"}}else{_17=_5.data}}else if(_5.useSimpleHttp){_17=_5.data}
+isc.RPCManager.$410.push(_4.transactionNum);_4.transactionRequest=isc.Comm[_16]({URL:_3,httpMethod:_5.httpMethod,contentType:_5.contentType,httpHeaders:_5.httpHeaders,bypassCache:_5.bypassCache,data:_17,fields:_12,target:_5.target,callbackParam:_5.callbackParam,transport:_4.transport,blocking:_5.blocking,useSimpleHttp:_5.useSimpleHttp,transactionNum:_4.transactionNum,transaction:_4});if(isc.isA.Function(this.queueSent))this.queueSent(_4.operations);return _5}
+,isc.A.performTransactionReply=function isc_c_RPCManager_performTransactionReply(_1,_2,_3){var _4=this.getTransaction(_1);if(!_4){this.logWarn("performTransactionReply: No such transaction "+_1);return false}
+delete _4.$66n;delete _4.abortCallbacks;_4.receiveTime=isc.timeStamp();_4.changed();isc.RPCManager.$410.remove(_1);this.logInfo("transaction "+_1+" arrived after "+(_4.receiveTime-_4.sendTime)+"ms");if(_2==null){this.logFatal("No results for transaction "+_1);return false}
+if(_4.transport=="xmlHttpRequest"){var _5=_2;_4.xmlHttpRequest=_5;_2=_5.responseText;var _6;try{_6=_5.status}catch(e){this.logWarn("Unable to access XHR.status - network cable unplugged?");_6=-1}
+if(_6==1223)_6=204;if(_6==0&&(location.protocol=="file:"||location.protocol=="app-resource:"))
+_6=200;_4.httpResponseCode=_6;_4.httpResponseText=_5.responseText;if(_6!=-1&&!_4.ignoreReloginMarkers&&this.processLoginStatusText(_5,_1))
+{return}
+if(_6!=-1&&this.responseRequiresLogin(_5,_1)){this.handleLoginRequired(_1);return}
+if(_6!=-1&&this.responseIsRelogin(_5,_1)){this.handleLoginRequired(_1);return}
+if(_6==12030&&isc.Browser.isIE){this.logWarn("Received HTTP status code 12030, resubmitting request");this.resubmitTransaction(_1);return}
+var _7=_4.URL;var _8;if(_4.isProxied){_7=_4.proxiedURL+" (via proxy: "+_7+")";var _9=this.getHttpHeaders(_5,_4);var _10;if(_9){for(var _11 in _9){if(_11.toLowerCase()=="x-isc-httpproxy-status"){_10=_9[_11];break}}}
+if(_10&&_10=="-91")_8=-91;if(_10&&_10=="-92")_8=-92}
+if(_8)_6=500;if(_6>299||_6<200){_2=this.$39c(_4,{data:"Transport error - HTTP code: "+_6+" for URL: "+_7+(_6==302?" This error is likely the result"+" of a redirect to a server other than the origin"+" server or a redirect loop.":""),status:_8?_8:isc.RPCResponse.STATUS_TRANSPORT_ERROR});this.logDebug("RPC request to: "+_7+" returned with http response code: "+_6+". Response text:\n"+_5.responseText);_4.status=_8?_8:isc.RPCResponse.STATUS_TRANSPORT_ERROR;_4.$66n=true;this.handleTransportError(_1,_4.status,_4.httpResponseCode,_4.httpResponseText);if(_4.suspended||_4.abortCallbacks){delete _4.abortCallbacks;delete _4.$66n
+return}
+delete _4.$66n}}
+_4.results=_2;this.$39d(_1);return true}
+,isc.A.responseIsRelogin=function isc_c_RPCManager_responseIsRelogin(_1,_2){var _3=_1.status;if(document.domain!=location.hostname&&((_3==302&&this.treatRedirectAsRelogin)||(_3==0)||(_3==200&&_1.getAllResponseHeaders()==isc.emptyString&&_1.responseText==isc.emptyString)))
+{this.logDebug("Detected document.domain 302 relogin condition - status: "+_3);return true}
+return false}
+,isc.A.processLoginStatusText=function isc_c_RPCManager_processLoginStatusText(_1,_2){var _3=_1.responseText;if(_3&&_3.length<this.maxLoginPageLength){var _4=_3.indexOf(this.loginStatusCodeMarker);if(_4==-1)return false;if(_3.indexOf(this.loginRequiredMarker,_4)!=-1){this.handleLoginRequired(_2);return true}else if(_3.indexOf(this.loginSuccessMarker,_4)!=-1){this.handleLoginSuccess(_2);return true}else if(_3.indexOf(this.maxLoginAttemptsExceededMarker,_4)!=-1){this.handleMaxLoginAttemptsExceeded(_2);return true}}
+return false}
+,isc.A.processLoginStatusCode=function isc_c_RPCManager_processLoginStatusCode(_1,_2){if(_1.status==isc.RPCResponse.STATUS_LOGIN_REQUIRED){this.handleLoginRequired(_1.transactionNum);return true}else if(_1.status==isc.RPCResponse.STATUS_LOGIN_SUCCESS){this.handleLoginSuccess(_1.transactionNum);return true}else if(_1.status==isc.RPCResponse.STATUS_MAX_LOGIN_ATTEMPTS_EXCEEDED){this.handleMaxLoginAttemptsExceeded(_1.transactionNum);return true}
+return false}
+,isc.A.responseRequiresLogin=function isc_c_RPCManager_responseRequiresLogin(_1,_2){return false}
+,isc.A.createRPCResponse=function isc_c_RPCManager_createRPCResponse(_1,_2,_3){var _4=isc.addProperties({operationId:_2.operation.ID,clientContext:_2.clientContext,context:_2,transactionNum:_1.transactionNum,httpResponseCode:_1.httpResponseCode,httpResponseText:_1.httpResponseText,xmlHttpRequest:_1.xmlHttpRequest,transport:_1.transport,status:_1.status,clientOnly:_2.clientOnly},_3);if(_1.transport=="xmlHttpRequest"){isc.addProperties(_4,{httpHeaders:this.getHttpHeaders(_1.xmlHttpRequest,_1)})}
+return _4}
+,isc.A.getHttpHeaders=function isc_c_RPCManager_getHttpHeaders(_1,_2){if(_2.allClientOnly){return}
+if(!_1){this.logWarn("getHttpHeaders called with a null XmlHttpRequest object");return}
+if(!isc.Browser.isIE&&!_1.getAllResponseHeaders){return null}
+var _3;try{_3=_1.getAllResponseHeaders()}catch(e){this.logWarn("Exception thrown by xmlHttpRequest.getAllResponseHeaders(): "+e)}
+if(!_3){this.logWarn("xmlHttpRequest.getAllResponseHeaders() returned null");return null}
+var _4=_3.split('\n');var _5={};for(var i=0;i<_4.length;i++){if(_4[i].replace(/^\s+|\s+$/g,'')=="")continue;var _7=_4[i].indexOf(':');if(_7==-1){this.logWarn("GetAllResponseHeaders string had malformed entry at line "+1+". Line reads "+_4[i]);continue}
+var _8=_4[i].substring(0,_7);_5[_8]=_4[i].substring(_7+1).replace(/^\s+|\s+$/g,'');if(_5[_8]=="true")_5[_8]=true;if(_5[_8]=="false")_5[_8]=false}
+if(_5["X-Proxied-Set-Cookie"]!=null){_5["Set-Cookie"]=_5["X-Proxied-Set-Cookie"]}
+return _5}
+,isc.A.$89o=function isc_c_RPCManager__stripXMLTransactionTags(_1){var _2=_1.indexOf(this.$89j);if(_2!=-1){return _1.substring(_2+this.$89j.length,_1.lastIndexOf(this.$89k))}
+return _1}
+,isc.A.$89g=function isc_c_RPCManager__getXMLResponses(_1){_1=this.$89o(_1);var _2=[];var _3=0;if(_1){while(true){var _4=_1.indexOf(this.$89l,_3);if(_4==-1)break;_3=_1.indexOf(this.$89m,_4);if(_3==-1)break;_2.add(_1.substring(_4,_3+this.$89m.length))}}
+return _2}
+,isc.A.$89n=function isc_c_RPCManager__stripRestTags(_1,_2){if(!_1||!_2)return _1;var _3=_2.jsonPrefix?_1.indexOf(_2.jsonPrefix):0,_4=_2.jsonPrefix?_2.jsonPrefix.length:0,_5=_2.jsonSuffix?_1.lastIndexOf(_2.jsonSuffix):_1.length;if(_3==-1){this.logWarn("DataSource "+_2.ID+": REST response did not contain the "+"jsonPrefix configured for this DataSource ('"+_2.jsonPrefix+"'). Response evaluation may well fail as a result. Check your "+"server logic and/or DataSource definition.");_3=0}
+if(_5==-1){this.logWarn("DataSource "+_2.ID+": REST response did not contain the "+"jsonSuffix configured for this DataSource ('"+_2.jsonSuffix+"'). Response evaluation may well fail as a result. Check your "+"server logic and/or DataSource definition.");_3=_1.length}
+return _1.substring(_3+_4,_5)}
+,isc.A.$39d=function isc_c_RPCManager__performTransactionReply(_1){var _2=this.getTransaction(_1);this.clearTransactionTimeout(_1);if(!_2)return;if(this.logIsDebugEnabled()){this.logDebug("Result string for transaction "+_1+": "+isc.Log.echoAll(_2.results))}
+var _3;if(_2.transport=="scriptInclude"){}else if(isc.isAn.Array(_2.results)){_3=true}else if(_2.allClientOnly){_2.results={status:0};_2.receiveTime=isc.timeStamp()}else{var _4=_2.operations[0];if(_4&&_4.isRestRequest){var _5=isc.DataSource.get(_4.dataSource);if(_5){if(_4&&_4.dataFormat=="json"&&_5.jsonPrefix==null)
+{_3=true}else{var _6=_2.results?_2.results.indexOf(_5.jsonPrefix):-1;_3=_6!=-1}
+if(_3){var _7=_2.results;_7=this.$89n(_7,_5);try{_2.results=isc.eval("("+_7+")")}catch(e){this.logWarn("Error evaling REST RPC response: "+e+" response text: "+_7)}}}}
+if(!_3){var _8=isc.isAn.Array(_2.operations)?_2.operations[0]:null;if(_8&&_8.isRestRequest&&_2.operations.length>1){if(_8.dataFormat=="json"){this.logWarn("Found a REST request that appears to be in JSON format, "+"but the response was not wrapped as configured by the jsonPrefix "+"and jsonSuffix properties - aborting")
+return}else{_2.results=this.$89g(_2.results);_3=_2.results!=null}}}}
+var _9=_2.results;var _10=_2.operations,_11=[];_2.$66n=true;for(var i=0,j=0;i<_10.length;i++){var _4=_10[i];var _14;if(_3&&_4.clientOnly){_14=isc.addProperties(this.createRPCResponse(_2,_4),{isStructured:false})}else{_14=isc.addProperties(this.createRPCResponse(_2,_4),{isStructured:_3,callbackArgs:_2.transport=="scriptInclude"?_9:null,results:_3?_9[j]:_9});if(_3&&_4.isRestRequest){isc.addProperties(_14,{data:_9[j]})}
+j++}
+if(_14.status==null)_14.status=0;if(_14.isStructured){if(_14.results.errors){var _15=_14.results.errors;if(isc.isAn.Array(_15)&&_15.length==1){_15=_15[0]}}
+if(_14.results&&!_4.isRestRequest){if(!_14.results.response){isc.addProperties(_14,_14.results)}else{isc.addProperties(_14,_14.results.response)}}}
+_11[i]=_14;_2.responses[i]=_14;_2.changed()}
+var _16=0;while(_16<_10.length&&!_2.suspended&&!_2.abortCallbacks)
+{var _4=_10[_16],_14=_11[_16];this.performOperationReply(_4,_14);_16++}
+if(_2.showPrompt)this.doClearPrompt(_2);if(!_2.suspended&&!_2.abortCallbacks){this.clearTransaction(_1)}
+delete _2.abortCallbacks;delete _2.$66n;if(_2.offline)this.playbackNextOfflineTransaction();if(_2.$40c){var _17=_4.application?_4.application:this.getDefaultApplication();if(isc.isA.String(_17))_17=window[_17];_17.fireCallback(_2.$40c,"responses",[_2.responses])}}
+,isc.A.performOperationReply=function isc_c_RPCManager_performOperationReply(_1,_2){var _3=_2.results,_4=_1.operation;if(this.logIsInfoEnabled()){this.logInfo("rpcResponse(unstructured) results -->"+isc.Log.echoAll(_3)+"<--")}
+if(this.processLoginStatusCode(_2,_2.transactionNum))return;return this.fireReplyCallbacks(_1,_2)}
+,isc.A.fireReplyCallback=function isc_c_RPCManager_fireReplyCallback(_1,_2,_3,_4){var _5=_2.application?_2.application:this.getDefaultApplication();if(isc.isA.String(_5))_5=window[_5];var _6=_5.fireCallback(_1,"rpcResponse,data,rpcRequest",[_3,_4,_2]);return _6}
+,isc.A.evalResult=function isc_c_RPCManager_evalResult(_1,_2,_3){var _4=_1.evalVars;this.logDebug("evaling result"+(_4?" with evalVars: "+isc.Log.echo(_4):""));var _5=isc.Canvas.getInstanceProperty("autoDraw");if(_1.suppressAutoDraw)isc.Canvas.setInstanceProperty("autoDraw",false);if(_3.match(/^\s*\{/)){_3="var evalText="+_3+";evalText;"}
+var _6=isc.Class.evalWithVars(_3,_4);if(_1.suppressAutoDraw)isc.Canvas.setInstanceProperty("autoDraw",_5);return _6}
+,isc.A.fireReplyCallbacks=function isc_c_RPCManager_fireReplyCallbacks(_1,_2){var _3=_1.operation,_4=_2.results,_5=_1.evalResult&&_1.transport!="scriptInclude"?this.evalResult(_1,_2,_4):null;var _6;_6=(_1.evalResult?_5:_4);_2.data=_6;var _7=this.getTransaction(_2.transactionNum);var _8=_1.callback;if(_8!=null){this.fireReplyCallback(_8,_1,_2,_6)}}
+,isc.A.$a0=function isc_c_RPCManager__handleError(_1,_2){if(_1.ignoreError)return;if(_2.dataSource){var _3=isc.DataSource.get(_2.dataSource);if(_3&&_3.handleError){var _4=_3.handleError(_1,_2);if(_4==false)return}}
+return this.handleError(_1,_2)}
+,isc.A.handleError=function isc_c_RPCManager_handleError(_1,_2){var _3=(_1.context?_1.context:{}),_4;if(isc.isA.String(_1.data)){_4=_1.data;if(isc.isA.String(_4)){var _5=_4;if(_5.length>this.maxErrorMessageLength){var _6=_5.length-this.maxErrorMessageLength;_5=_5.substring(0,this.maxErrorMessageLength)+"<br><br>...("+_6+" bytes truncated - set"+" isc.RPCManager.maxErrorMessageLength > "+this.maxErrorMessageLength+" to see more or check the Developer Console for full error)..."}
+isc.warn(_5.asHTML())}}else{var _7=isc.getKeyForValue(_1.status,isc.RPCResponse.errorCodes);if(isc.isA.String(_7)){if(_7.startsWith("STATUS_"))_7=_7.substring(7)}else{_7=(_1.status!=null?"error code: "+_1.status:"unknown error code")}
+var _8=_1.operationId||_1.operationType;_4="Server returned "+_7+" with no error message"+(_8?" performing operation '"+_8+"'.":".");isc.warn(_4.asHTML())}
+this.logWarn(_4+", response: "+this.echo(_1));return false}
+,isc.A.handleTransportError=function isc_c_RPCManager_handleTransportError(_1,_2,_3,_4){}
+,isc.A.handleLoginRequired=function isc_c_RPCManager_handleLoginRequired(_1){if(this.$39j&&this.$39j==_1)return;var _2=this.getTransaction(_1);if(_2==null)return;_1=_2.transactionNum;this.clearTransactionTimeout(_2);var _3=_2.operations[0],_4=this.createRPCResponse(_2,_3);this.logInfo("loginRequired for transaction: "+_1+(_2.containsCredentials?", transaction containsCredentials":""));if(_2.containsCredentials){if(_3.callback){_4.status=isc.RPCResponse.STATUS_LOGIN_INCORRECT;this.fireReplyCallbacks(_3,_4);this.clearTransaction(_2);return}
+this.clearTransaction(_2)}
+this.suspendTransaction(_2);if(this.loginRequired){_4.status=isc.RPCResponse.STATUS_LOGIN_REQUIRED;this.loginRequired(_1,_3,_4);return}
+var _5=this.addParamsToURL(this.credentialsURL,{ts:new Date().getTime()});this.$39j=window.open(_5,this.loginWindowSettings)}
+,isc.A.handleLoginSuccess=function isc_c_RPCManager_handleLoginSuccess(_1){var _2=this.getTransaction(_1);if(_2&&_2.containsCredentials){this.clearTransactionTimeout(_2);var _3=_2.operations[0];if(_3.callback){var _4=this.createRPCResponse(_2,_3,{status:isc.RPCResponse.STATUS_SUCCESS});this.fireReplyCallbacks(_3,_4);this.clearTransaction(_2);return}
+this.clearTransaction(_2)}
+if(this.$39j)this.$39j.close();if(this.loginSuccess&&this.loginSuccess()===false)return;this.resendTransaction()}
+,isc.A.handleMaxLoginAttemptsExceeded=function isc_c_RPCManager_handleMaxLoginAttemptsExceeded(_1){var _2=this.getTransaction(_1);if(_2&&_2.containsCredentials){this.clearTransactionTimeout(_2);var _3=_2.operations[0];if(_3.callback){var _4=this.createRPCResponse(_2,_3,{status:isc.RPCResponse.STATUS_MAX_LOGIN_ATTEMPTS_EXCEEDED});this.fireReplyCallbacks(_3,_4);this.clearTransaction(_2);return}
+this.clearTransaction(_2)}
+if(this.$39j)this.$39j.close();if(this.maxLoginAttemptsExceeded)this.maxLoginAttemptsExceeded();else{var _5="Max login attempts exceeded.";if(isc.warn)isc.warn(_5);else alert(_5)}}
+,isc.A.exportContent=function isc_c_RPCManager_exportContent(_1,_2){var _3=function(_7){var _4={showPrompt:false,transport:"hiddenFrame",exportResults:true,downloadResult:true,downloadToNewWindow:null,download_filename:null};var _5={skinName:_2.skinName,pdfName:(_2.exportFilename==null)?_2.pdfName:_2.exportFilename,defaultSkinName:isc.Page.getSkinDir()};isc.DMI.callBuiltin({methodName:"getPdfObject",arguments:[_7,_5],requestParams:_4})};var _6=_1.getPrintHTML(null,_3);if(_6!=null){_3(_6)}}
+);isc.B._maxIndex=isc.C+73;isc.RPCManager.rpc_logMessage=isc.RPCManager.logMessage;isc.RPCManager.logMessage=function(_1,_2,_3,_4){if(this.logIsEnabledFor(_1,_3)){if(isc.isA.String(_2)&&_2.length>this.maxLogMessageLength&&!this.logIsEnabledFor(_1,"RPCManagerResponse"))
+{var _5=_2.length-this.maxLogMessageLength;_2=_2.substring(0,this.maxLogMessageLength)+"\n...("+_5+" bytes truncated). Enable RPCManagerResponse log at same threshold to see full message."}}
+this.rpc_logMessage(_1,_2,_3,_4)};isc.addGlobal("InstantDataApp",isc.RPCManager);isc.isA.InstantDataApp=isc.isA.RPCManager;isc.A=isc.InstantDataApp;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.addDefaultOperation=function isc_c_InstantDataApp_addDefaultOperation(_1,_2,_3){if(!_1)_1={};_1.operation=isc.DataSource.makeDefaultOperation(_2,_3,_1.operation);return _1}
+,isc.A.setDefaultApplication=function isc_c_InstantDataApp_setDefaultApplication(_1){isc.InstantDataApp.defaultApplication=_1}
+,isc.A.getDefaultApplication=function isc_c_InstantDataApp_getDefaultApplication(){if(this.defaultApplication==null){this.create({ID:"builtinApplication",dataSources:[],operations:{},pointersToThis:[{object:this,property:"defaultApplication"}]})}
+return this.defaultApplication}
+,isc.A.app=function isc_c_InstantDataApp_app(){return this.getDefaultApplication()}
+);isc.B._maxIndex=isc.C+4;isc.A=isc.InstantDataApp.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_InstantDataApp_init(){if(this.ID!="builtinApplication")isc.ClassFactory.addGlobalID(this);if(isc.rpc.defaultApplication==null||isc.rpc.defaultApplication.getID()=="builtinApplication")
+{isc.rpc.setDefaultApplication(this)}}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("DMI").addClassProperties({actionURL:isc.RPCManager.actionURL,call:function(_1,_2,_3){var _4=[];for(var i=0;i<arguments.length;i++)_4[_4.length]=arguments[i];var _6={};if(isc.isAn.Object(_1)&&_4.length==1){var _7=isc.clone(_1);if(_7.requestParams){isc.addProperties(_6,this.requestParams,_7.requestParams);delete _7.requestParams;if(_7.downloadResult==true){_7.showPrompt=false;_7.transport="hiddenFrame"}}
+_6.callback=_7.callback;delete _7.callback;_6.data=_7}else{_6.data={appID:_1,className:_2,methodName:_3,arguments:_4.slice(3,_4.length-1)};_6.callback=_4[_4.length-1]}
+_4=_6.data.arguments;if(!isc.isAn.Array(_4)){if(_4==null)_4=[];else _4=[_4]}
+_6.data.arguments=_4;_6.data.is_ISC_RPC_DMI=true;if(this.addMetaDataToQueryString){if(!_6.queryParams)_6.queryParams={};isc.addProperties(_6.queryParams,{dmi_appID:_6.data.appID,dmi_class:_6.data.className,dmi_method:_6.data.methodName})}
+return isc.RPCManager.sendRequest(_6)},callTemplate:"(function(){var x = function (firstArg) { "+"var isCall = ${isCall};"+"var obj = {};"+"obj.requestParams=this.requestParams;"+"if(isc.isAn.Object(firstArg) && arguments.length == 1){"+"isc.addProperties(obj,{appID:'${appID}',className:'${className}',methodName:'${methodName}'},firstArg);"+"} else {"+"var args = [];for (var i = 0; i < arguments.length; i++) args[args.length] = arguments[i];"+"isc.addProperties(obj,{appID:'${appID}',className:'${className}',methodName:isCall?firstArg:'${methodName}',"+"arguments:args.slice(isCall ? 1 : 0,args.length-1),callback:args[args.length-1]});"+"}isc.DMI.call(obj);"+"};return x})()",bind:function(_1,_2,_3,_4){if(!isc.isAn.Array(_3))_3=[_3];_4=isc.addProperties({},this.requestParams,_4)
+var _5=isc.defineClass(_2).addClassProperties({requestParams:_4});var _6={appID:_1,className:_2,methodName:"firstArg",isCall:true};_5.call=isc.eval(this.callTemplate.evalDynamicString(this,_6));for(var i=0;i<_3.length;i++){var _8={appID:_1,className:_2,methodName:_3[i],isCall:false};_5[_3[i]]=isc.eval(this.callTemplate.evalDynamicString(this,_8))}
+window[_2]=_5;return _5},makeDMIMethod:function(_1,_2,_3,_4){var _5={appID:_1,className:_2,isCall:_3,methodName:_3?"firstArg":_4};return isc.eval(this.callTemplate.evalDynamicString(this,_5))}});isc.DMI.callBuiltin=isc.DMI.makeDMIMethod("isc_builtin","builtin",true);isc.ClassFactory.defineClass("ResultSet",null,["List","DataModel"]);isc.A=isc.ResultSet;isc.A.UNKNOWN_LENGTH=1000;isc.A=isc.ResultSet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.cachedRows=0;isc.A.fetchAhead=true;isc.A.resultSize=75;isc.A.fetchDelay=0;isc.A.useClientSorting=true;isc.A.useClientFiltering=true;isc.A.updateCacheFromRequest=true;isc.A.updatePartialCache=true;isc.B.push(isc.A.shouldUseClientSorting=function isc_ResultSet_shouldUseClientSorting(){if(!isc.RPCManager.onLine)return true;return this.useClientSorting}
+,isc.A.shouldUseClientFiltering=function isc_ResultSet_shouldUseClientFiltering(){if(!isc.RPCManager.onLine)return true;return this.useClientFiltering}
+,isc.A.shouldNeverDropUpdatedRows=function isc_ResultSet_shouldNeverDropUpdatedRows(){if(!isc.RPCManager.onLine)return true;return this.neverDropUpdatedRows}
+,isc.A.shouldUpdatePartialCache=function isc_ResultSet_shouldUpdatePartialCache(){if(!isc.RPCManager.onLine)return true;return this.updatePartialCache}
+);isc.B._maxIndex=isc.C+4;isc.A=isc.ResultSet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dynamicDSFieldValues=false;isc.A.$39r=0;isc.A.notifyOnUnchangedCache=false;isc.B.push(isc.A.init=function isc_ResultSet_init(){isc.ClassFactory.addGlobalID(this);if(this.operation!=null)this.fetchOperation=this.operation;var _1=this.getOperation("fetch");var _2=_1.dataSource;if(!isc.isAn.Array(_2))_2=[_2];for(var i=0;i<_2.length;i++){var _4=isc.DS.get(_2[i]);this.observe(_4,"dataChanged","observer.dataSourceDataChanged(dsRequest,dsResponse)");if(!this.$39s)this.$39s=[];this.$39s.add(_4);if(!this.dataSource)this.dataSource=_4}
+if(!this.getDataSource()){this.logError("Invalid dataSource: "+this.echoLeaf(this.dataSource)+", a ResultSet must be created with a valid DataSource")}
+var _5=this.context;this.resultSize=(_5&&_5.dataPageSize!=null?_5.dataPageSize:this.resultSize);if(this.allRows){this.fetchMode="local"}else{this.fetchMode=(_5&&_5.dataFetchMode!=null?_5.dataFetchMode:this.fetchMode||"paged")}
+if(this.dropCacheOnUpdate==null){this.dropCacheOnUpdate=this.$du(_1.dropCacheOnUpdate,this.getDataSource().dropCacheOnUpdate)}
+this.context=this.context||{};var _6=this.criteria||this.filter||{};this.criteria=null;this.setCriteria(_6);if(this.initialData){this.prepareSparseInitialData();this.fillCacheData(this.initialData);this.setFullLength(this.initialLength||this.totalRows||this.initialData.length);if(this.sortSpecifiers)this.setSort(this.sortSpecifiers,true);if(this.sortBy)this.setSort(isc.DS.getSortSpecifiers(this.sortBy),true)}else if(this.isPaged()){this.localData=[]}
+this.observe(isc,"goOffline",this.getID()+".goOffline()");this.observe(isc.RPCManager,"offlineTransactionPlaybackComplete",this.getID()+".offlinePlaybackComplete()")}
+,isc.A.goOffline=function isc_ResultSet_goOffline(){}
+,isc.A.offlinePlaybackComplete=function isc_ResultSet_offlinePlaybackComplete(){if(this.haveOfflineRecords){this.invalidateCache();this.haveOfflineRecords=false}}
+,isc.A.destroy=function isc_ResultSet_destroy(){if(window[this.ID]==this)window[this.ID]=null;this.ignore(isc,"goOffline");this.ignore(isc.RPCManager,"offlineTransactionPlaybackComplete");if(!this.$39s)return;for(var i=0;i<this.$39s.length;i++){var _2=this.$39s[i];if(_2){this.ignore(_2,"dataChanged")}}}
+,isc.A.prepareSparseInitialData=function isc_ResultSet_prepareSparseInitialData(){for(var i=0;i<this.initialData.length;i++){if(this.initialData[i]==Array.LOADING)this.initialData[i]=null}}
+,isc.A.getFirstUsedIndex=function isc_ResultSet_getFirstUsedIndex(){if(!this.lengthIsKnown())return 0;if(this.localData){for(var i=0;i<this.localData.length;i++){if(this.localData[i]!=null&&this.localData[i]!=Array.LOADING)return i}}
+return 0}
+,isc.A.isPaged=function isc_ResultSet_isPaged(){return this.fetchMode=="paged"}
+,isc.A.isLocal=function isc_ResultSet_isLocal(){return this.fetchMode=="local"}
+,isc.A.allMatchingRowsCached=function isc_ResultSet_allMatchingRowsCached(){return(this.allRows!=null&&(!this.allRowsCriteria||this.$505))||(this.localData!=null&&(!this.isPaged()||(this.allRows!=null||(this.cachedRows==this.totalRows))))}
+,isc.A.allRowsCached=function isc_ResultSet_allRowsCached(){return((this.allRows!=null&&(!this.allRowsCriteria||this.$505))||(this.allMatchingRowsCached()&&this.$39t))}
+,isc.A.isEmpty=function isc_ResultSet_isEmpty(){if(this.isPaged()){if(this.allMatchingRowsCached()){return this.getLength()==0}else if(this.cachedRows>0)return false}
+return!this.lengthIsKnown()||this.getLength()<=0}
+,isc.A.canSortOnClient=function isc_ResultSet_canSortOnClient(){return this.shouldUseClientSorting()&&(this.allMatchingRowsCached()||(isc.Offline&&isc.Offline.isOffline()))}
+,isc.A.canFilterOnClient=function isc_ResultSet_canFilterOnClient(){return this.shouldUseClientFiltering()&&this.allRowsCached()}
+,isc.A.getLength=function isc_ResultSet_getLength(){var _1=this.unknownLength||isc.ResultSet.UNKNOWN_LENGTH;if(!this.lengthIsKnown())return _1;return(this.isPaged()&&!this.allRows?this.totalRows:this.localData.length)}
+,isc.A.indexOf=function isc_ResultSet_indexOf(_1,_2,_3){if(this.localData==null)return-1;if(Array.isLoading(_1))return-1;var _4=this.localData.indexOf(_1,_2,_3);if(_4!=-1)return _4;return this.getDataSource().findByKeys(_1,this.localData,_2,_3)}
+,isc.A.slideList=function isc_ResultSet_slideList(_1,_2){if(!this.allMatchingRowsCached()&&!this.shouldUpdatePartialCache()){isc.logWarn('updatePartialCache is disabled: record position will not be shifted.');return}
+var _3=[],i;if(_2<0)_2=0;for(i=0;i<_2;i++){if(Array.isLoading(this.localData[i])){isc.logWarn('Sliding from a row position that has not yet been loaded, ignoring');return}
+if(!_1.contains(this.localData[i]))
+_3.add(this.localData[i])}
+for(i=0;i<_1.length;i++){_3.add(_1[i])}
+for(i=_2;i<this.localData.length;i++){if(Array.isLoading(this.localData[i])){isc.logWarn('Sliding into a row position that has not yet been loaded, ignoring');return}
+if(!_1.contains(this.localData[i]))
+_3.add(this.localData[i])}
+if(this.shouldUpdatePartialCache()){this.invalidateRowOrder()}
+this.localData=_3;this.dataChanged()}
+,isc.A.get=function isc_ResultSet_get(_1){if(_1<0){this.logWarn("get: invalid index "+_1);return null}
+if(this.localData!=null&&this.localData[_1]!=null)return this.localData[_1];if(this.fetchStartRow!=null&&_1>=this.fetchStartRow&&_1<=this.fetchEndRow){return Array.LOADING}
+return this.getRange(_1,_1+1)[0]}
+,isc.A.getRange=function isc_ResultSet_getRange(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(_1==null){this.logWarn("getRange() called with no specified range - ignoring.");return}
+if(_2==null)_2=_1+1;if(this.isPaged()){return this.$39u(_1,_2,_3,_4)}
+if(this.localData==null){this.localData=[];var _5=this.getServerFilter();this.setRangeLoading(_1,_2);this.fetchRemoteData(_5)}
+return this.localData.slice(_1,_2)}
+,isc.A.getAllRows=function isc_ResultSet_getAllRows(){if(!this.lengthIsKnown())return[];return this.getRange(0,this.getLength())}
+,isc.A.getAllLoadedRows=function isc_ResultSet_getAllLoadedRows(){if(!this.lengthIsKnown())return[];var _1=[];for(var i=0;i<this.getLength();i++){if(this.rowIsLoaded(i))_1.add(this.localData[i])}
+return _1}
+,isc.A.getFieldValue=function isc_ResultSet_getFieldValue(_1,_2,_3){if(this.dynamicDSFieldValues){return this.getDataSource().getFieldValue(_1,_2,_3)}else{if(_3&&_3.dataPath){return isc.Canvas.$70o(_3.dataPath,_1)}
+return _1[_2]}}
+,isc.A.lengthIsKnown=function isc_ResultSet_lengthIsKnown(){return this.localData!=null&&(this.isPaged()?this.totalRows!=null:this.$39v==null)}
+,isc.A.rowIsLoaded=function isc_ResultSet_rowIsLoaded(_1){if(this.localData!=null){var _2=this.localData[_1];if(_2!=null&&!Array.isLoading(_2))return true}
+return false}
+,isc.A.rangeIsLoaded=function isc_ResultSet_rangeIsLoaded(_1,_2){if(this.localData==null)return false;for(var i=_1;i<_2;i++){var _4=this.localData[i];if(_4==null||Array.isLoading(_4))return false}
+return true}
+,isc.A.findLastCached=function isc_ResultSet_findLastCached(_1,_2){if(!this.rowIsLoaded(_1))return null;if(_2){for(var i=_1;i>=0;i--){var _4=this.localData[i];if(_4==null||Array.isLoading(_4))break}
+return i+1}else{var _5=this.getLength();for(var i=_1;i<_5;i++){var _4=this.localData[i];if(_4==null||Array.isLoading(_4))break}
+return i-1}}
+,isc.A.getCachedRange=function isc_ResultSet_getCachedRange(_1){if(_1==null)_1=this.lastRangeStart;if(_1==null)_1=0;if(!this.rowIsLoaded(_1))return null;var _2=this.getLength();if(this.allMatchingRowsCached())return[0,_2-1];var _3=this.findLastCached(_1,true),_4=this.findLastCached(_1);return[_3,_4]}
+,isc.A.setRangeLoading=function isc_ResultSet_setRangeLoading(_1,_2){if(this.localData==null)this.localData=[];for(var i=_1;i<_2;i++){if(this.localData[i]==null)this.localData[i]=Array.LOADING}}
+,isc.A.fillRangeLoading=function isc_ResultSet_fillRangeLoading(_1,_2){for(var i=0;i<_2;i++){if(_1[i]==null)_1[i]=Array.LOADING}
+return _1}
+,isc.A.getServerFilter=function isc_ResultSet_getServerFilter(){if(this.isLocal())return null;return isc.shallowClone(this.criteria)}
+,isc.A.$39w=function isc_ResultSet__fetchRemoteData(){var _1=this.fetchStartRow,_2=this.fetchEndRow;if(_1==null||_2==null)return;this.setRangeLoading(_1,_2);this.fetchStartRow=null;this.fetchEndRow=null;this.logInfo("fetching rows "+[_1,_2]+" from server");return this.fetchRemoteData(this.getServerFilter(),_1,_2)}
+,isc.A.fetchRemoteData=function isc_ResultSet_fetchRemoteData(_1,_2,_3){if(isc.Offline.isOffline()){this.haveOfflineRecords=true}
+this.$39r+=1;var _4;if(this.context&&this.context.clientContext){this.context.clientContext.requestIndex=this.$39r}else{_4={requestIndex:this.$39r}}
+var _5=isc.addProperties({operation:this.getOperationId("fetch"),startRow:_2,endRow:_3,sortBy:isc.shallowClone(this.$39x),resultSet:this,clientContext:_4},this.context);_5.clientContext.$69t=_5.willHandleError;_5.willHandleError=true;if(this.rowOrderInvalid()){this.logInfo("invalidating rows on fetch due to 'add'/'update' operation "+" with updatePartialCache");this.invalidateRows()}
+if(this.logIsDebugEnabled("fetchTrace")){this.logWarn("ResultSet server fetch with server criteria: "+this.echoFull(_1)+this.getStackTrace())}
+if(this.cachingAllData)_5.cachingAllData=true;this.getDataSource().fetchData(_1,{caller:this,methodName:"fetchRemoteDataReply"},_5);this.$39v=this.$39r}
+,isc.A.fetchRemoteDataReply=function(dsResponse,data,request){var index=dsResponse.clientContext.requestIndex;if(!this.$39y)this.$39y=0;if(index!=(this.$39y+1)&&!dsResponse.isCachedResponse){this.logInfo("server returned out-of-sequence response for fetch remote data request "+" - delaying processing: last processed:"+this.$39y+", returned:"+index);if(!this.$39z)this.$39z=[];this.$39z.add({dsResponse:dsResponse,data:data,request:request});return}
+if(this.cachingAllData==true)delete this.cachingAllData;if(this.$39v==index)delete this.$39v;var newData;var hasError=dsResponse.status<0;if(hasError||dsResponse.offlineResponse){newData=[]}else{newData=dsResponse.data}
+var numResults=newData.length;this.document=dsResponse.document;this.logInfo("Received "+numResults+" records from server");if(dsResponse.startRow==null)dsResponse.startRow=request.startRow;if(dsResponse.endRow==null)dsResponse.endRow=dsResponse.startRow+numResults;if(dsResponse.totalRows==null&&dsResponse.endRow<request.endRow)
+dsResponse.totalRows=dsResponse.endRow;if(this.transformData){var result=this.transformData(newData,dsResponse);newData=result!=null?result:newData;if(newData.length!=numResults){this.logInfo("Transform applied, "+newData.length+" records resulted, from "+dsResponse.startRow+" to "+dsResponse.endRow);dsResponse.endRow=dsResponse.startRow+newData.length;if(dsResponse.totalRows!=null&&dsResponse.totalRows<dsResponse.endRow){dsResponse.totalRows=dsResponse.endRow}}}
+if(!isc.isA.List(newData)){this.logWarn("Bad data returned, ignoring: "+this.echo(newData));return}
+if(dsResponse.totalRows!=null&&dsResponse.totalRows<dsResponse.endRow){this.logWarn("fetchData callback: dsResponse.endRow set to:"+dsResponse.endRow+". dsResponse.totalRows set to:"+dsResponse.totalRows+". endRow cannot exceed total dataset size. "+"Clamping endRow to the end of the dataset ("+dsResponse.totalRows+").");dsResponse.endRow=dsResponse.totalRows}
+var startRow=dsResponse.startRow,endRow=dsResponse.endRow;this.$521();this.$390(newData,dsResponse);this.$522(startRow,endRow,hasError);delete this.context.afterFlowCallback;this.$39y=index;if(this.$39z&&this.$39z.length>0){for(var i=0;i<this.$39z.length;i++){var reply=this.$39z[i];if(reply==null)continue;var requestIndex=reply.dsResponse.clientContext.requestIndex;if(requestIndex==this.$39y+1){this.logInfo("Delayed out of sequence data response being processed now "+requestIndex);this.$39z[i]=null;this.fetchRemoteDataReply(reply.dsResponse,reply.data,reply.request);break}}}
+var willHandleError=request.clientContext.$69t;if(!willHandleError&&hasError){isc.RPCManager.$a0(dsResponse,request)}}
+,isc.A.$390=function isc_ResultSet__handleNewData(_1,_2){if(this.isLocal()){this.$78z(_1);this.filterLocalData();return}else if(!this.isPaged()){this.$ed();this.localData=_1;if(this.canSortOnClient()){this.$391()}
+if(this.allRowsCached()){this.$78z(this.localData,this.criteria)}
+this.$ee();return}
+var _3=_2.context;this.$ed()
+if(this.dropCacheOnLengthChange&&this.lengthIsKnown()&&this.totalRows!=_2.totalRows)
+{this.logInfo("totalRows changed from "+this.totalRows+" to "+_2.totalRows+", invalidating cache");this.$394()}
+if(this.localData==null)this.localData=[];this.setFullLength(_2.totalRows);this.fillCacheData(_1,_2.startRow);var _4=this.localData;for(var i=_2.startRow+_1.length;i<this.totalRows;i++){if(Array.isLoading(_4[i]))_4[i]=null;else break}
+this.logInfo("cached "+_1.getLength()+" rows, from "+_2.startRow+" to "+_2.endRow+" ("+this.totalRows+" total rows, "+this.cachedRows+" cached)");if(this.allMatchingRowsCached()){if(this.allRowsCached()){this.logInfo("Cache for entire DataSource complete")}else{this.logInfo("Cache for current criteria complete")}
+if(this.canSortOnClient())this.$391()}
+this.$ee()}
+,isc.A.setContext=function isc_ResultSet_setContext(_1){this.context=_1}
+,isc.A.findByKey=function isc_ResultSet_findByKey(_1){var _2=isc.DataSource.getDataSource(this.dataSource);if(!_2)return;if(!_2.getPrimaryKeyField()||!this.lengthIsKnown())return;var _3;if(isc.isAn.Object(_1)){_3=_1}else{_3={};_3[_2.getPrimaryKeyFieldName()]=_1}
+var _4=this.localData.findByKeys(_3,_2);if(_4!=null)return this.localData[_4];else return null}
+,isc.A.setCriteria=function isc_ResultSet_setCriteria(_1){if(_1==null)_1={};var _2=this.$780(_1);if(_2==null){if(this.localData==null&&this.allRows!=null)this.filterLocalData();this.logInfo("setCriteria: filter criteria unchanged");return false}
+if(!this.getDataSource().isAdvancedCriteria(_1)){_1=isc.clone(_1)}
+var _3=this.criteria;this.criteria=_1;this.$39t=(isc.getKeys(_1).length==0);this.$51w=(this.context&&this.context.textMatchStyle)?this.context.textMatchStyle:null;if(_2){this.logInfo("setCriteria: filter criteria changed, invalidating cache");this.invalidateCache()}else{if(this.allRows==null){this.$78z(this.localData,_3)}
+this.filterLocalData()}
+return true}
+,isc.A.$78z=function isc_ResultSet__setAllRows(_1,_2){this.allRows=_1;this.allRowsCriteria=_2||{};this.$505=(isc.getKeys(this.allRowsCriteria).length==0)}
+,isc.A.setFilter=function isc_ResultSet_setFilter(_1){return this.setCriteria(_1)}
+,isc.A.getCriteria=function isc_ResultSet_getCriteria(){return this.criteria}
+,isc.A.compareCriteria=function isc_ResultSet_compareCriteria(_1,_2,_3,_4){return this.getDataSource().compareCriteria(_1,_2,_3?_3:this.context,_4?_4:this.criteriaPolicy)}
+,isc.A.compareTextMatchStyle=function isc_ResultSet_compareTextMatchStyle(_1,_2){return this.getDataSource().compareTextMatchStyle(_1,_2)}
+,isc.A.willFetchData=function isc_ResultSet_willFetchData(_1,_2){return(this.$780(_1,_2)==true)}
+,isc.A.$780=function isc_ResultSet__willFetchData(_1,_2){if(_1==null)_1={};if(this.localData==null&&this.allRows==null)return true;if(_1==null)_1={};var _3=this.criteria||{},_4=this.$51w,_5=this.getDataSource();if(_2==null){_2=(this.context&&this.context.textMatchStyle)?this.context.textMatchStyle:null}
+var _6=this.compareTextMatchStyle(_2,_4);var _7=this.allRows&&this.shouldUseClientFiltering()&&(_3!=this.allRowsCriteria);if(_6>=0){var _8=_7?this.allRowsCriteria:_3;if(_8==null)_8={};if(_5.isAdvancedCriteria(_1)&&!_5.isAdvancedCriteria(_8)){_8=isc.DataSource.convertCriteria(_8,_2)}
+if(!_5.isAdvancedCriteria(_1)&&_5.isAdvancedCriteria(_8)){_1=isc.DataSource.convertCriteria(_1,_2)}
+var _9=isc.addProperties({},this.context);if(_2!=null)_9.textMatchStyle=_2;var _10=this.compareCriteria(_1,_8,_9);if(_10!=0)_6=_10}
+if(_6==0){if(_7){if(_5.isAdvancedCriteria(_1)&&!_5.isAdvancedCriteria(_3)){_3=isc.DataSource.convertCriteria(_3,_2)}
+if(this.compareCriteria(_1,_3)!=0){return false}}
+return null}else{if(!this.allMatchingRowsCached()){return true}
+if(this.isLocal()){return false}
+if(_6==-1){return true}else if(_6==1){if(this.shouldUseClientFiltering()){return false}
+return true}}}
+,isc.A.sortByProperty=function isc_ResultSet_sortByProperty(_1,_2,_3,_4){if(_3==null){var _5=this.getDataSource().getField(_1);if(_5)_3=_5.type}
+if(this.$395==_1&&this.$392==_2&&this.$393==_3)return;var _5;if(_4){_5=_4.getField(_1);if(_5&&_5.displayField&&_5.sortByDisplayField!=false){var _6;if(_5.optionDataSource){_6=isc.DataSource.getDataSource(_5.optionDataSource)}
+if(!_6||_6==isc.DataSource.getDataSource(this.dataSource)){_1=_5.displayField}}}
+this.$395=_1;this.$392=_2;this.$393=_3;this.$45g=_4;if(this.isPaged()||!this.shouldUseClientSorting()){this.$39x=(this.$392?"":"-")+this.$395}
+if(this.canSortOnClient()){this.localData.sortByProperties([_1],[_2],[_3],[_4]);if(this.allRows&&(this.localData!==this.allRows)){this.allRows.sortByProperties([_1],[_2],[_3],[_4])}
+delete this.$572;delete this.$573;delete this.$574;delete this.$575;if(!this.$52z())this.dataChanged();return}
+this.invalidateCache()}
+,isc.A.unsort=function isc_ResultSet_unsort(){if(!this.allMatchingRowsCached())return false;this.$395=null;if(this.localData)this.localData.unsort();return true}
+,isc.A.$391=function isc_ResultSet__doSort(){var _1=this.$73p;if(this.localData==null||!_1||_1.length==0)return;var _2=[],_3=[],_4=[],_5=[];for(var i=0;i<_1.length;i++){var _7=_1[i];_2[i]=_7.property;_3[i]=Array.shouldSortAscending(_7.direction);_4[i]=_7.normalizer;_5[i]=_7.context}
+if(this.canSortOnClient()){if(_1&&_1.length>0){this.logInfo("$391: sorting on properties ["+_2.join(",")+"] : "+"directions ["+_3.join(",")+"]"+" : full cache allows local sort");this.localData.sortByProperties(_2,_3,_4,_5);delete this.$572;delete this.$573;delete this.$574;delete this.$575;if(!this.$52z())this.dataChanged()}
+return}
+this.logInfo("$391: sorting on properties ["+_2.join(",")+"] : "+"directions ["+_3.join(",")+"]"+" : invalidating cache");this.invalidateCache()}
+,isc.A.getSort=function isc_ResultSet_getSort(){return this.$73p}
+,isc.A.setSort=function isc_ResultSet_setSort(_1,_2){var _3=[],_4=[],_5;if(_1==null)_1=[];for(var i=0;i<_1.length;i++){var _7=_1[i];if(_7.normalizer==null){var _5=this.getDataSource().getField(_7.property);if(_5){_7.normalizer=_5.type;_7.$78e=_7.normalizer}}
+if(_7.context){_5=_7.context.getField(_7.property)||this.getDataSource().getField(_7.property);if(_5&&_5.displayField&&_5.sortByDisplayField!=false){var _8;if(_5.optionDataSource){_8=isc.DataSource.getDataSource(_5.optionDataSource)}
+if(!_5.optionDataSource||_8==isc.DataSource.getDataSource(this.dataSource)){this.logInfo("Field:"+_5.name+" has displayField:"+_5.displayField+" (with optionDataSource:"+_8+"). "+"Sorting by displayField. Set field.sortByDisplayField to false to disable this.","sorting");_7.property=_5.displayField}}}
+if(this.isPaged()||!this.shouldUseClientSorting()){_3[i]=(Array.shouldSortAscending(_7.direction)?"":"-")+_7.property}
+if(this.$73p&&this.$73p.length>0){var _9={property:_7.property,direction:_7.direction};if(_7.normalizer!=null&&_7.normalizer!=_7.$78e){_9.normalizer=_7.normalizer}
+var _10=this.$73p.findIndex(_9);if(_10==i){_4.add(_7)}}}
+if((this.$73p?this.$73p.length:0)==_1.length&&_1.length==_4.length)
+{return}
+this.$73p=isc.shallowClone(_1);this.$39x=isc.shallowClone(_3);if(!_2)this.$391()}
+,isc.A.$521=function isc_ResultSet__startDataArriving(){var _1;if(this.$523===_1)this.$523=0;this.$523++}
+,isc.A.$522=function isc_ResultSet__doneDataArriving(_1,_2,_3){if(--this.$523==0){if(!_3&&this.dataArrived)this.dataArrived(_1,_2)}}
+,isc.A.$524=function isc_ResultSet__isDataArriving(){return(this.$523!=null&&this.$523>0)}
+,isc.A.dataSourceDataChanged=function isc_ResultSet_dataSourceDataChanged(_1,_2){if(this.disableCacheSync)return;if(this.logIsDebugEnabled())this.logDebug("dataSource data changed firing");var _3=this.getDataSource().getUpdatedData(_1,_2,this.updateCacheFromRequest);if(this.transformData&&this.transformUpdateResponses!==false){var _4=this.transformData(_3,_2);_3=_4==null?_3:_4}
+this.handleUpdate(_1.operationType,_3,_2.invalidateCache,_1)}
+,isc.A.handleUpdate=function isc_ResultSet_handleUpdate(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;var _5=(this.allMatchingRowsCached()?", allMatchingRowsCached true":(", cached rows: "+this.cachedRows+", total rows: "+this.totalRows));if(this.dropCacheOnUpdate||_3||(_1!="remove"&&!this.allMatchingRowsCached()&&!this.shouldUpdatePartialCache()))
+{this.invalidateCache();return}
+this.logInfo("updating cache in place after operationType: "+_1+_5);this.$ed();if(!isc.isAn.Array(_2)||_2.length==1){this.$572=_1;this.$573=_2}
+this.updateCache(_1,_2,_4);this.$ee();this.$572=this.$573=null}
+,isc.A.$ee=function isc_ResultSet__doneChangingData(_1){var _2;if(!this.notifyOnUnchangedCache&&this.$573&&this.$575==null){_2=true}
+var _3,_4,_5;if(!_2&&this.$573){_3=this.$572;_4=this.$574;_5=this.$575}
+if(--this.$ef==0&&!_2){this.dataChanged(_3,_4,_5,this.$573,_1);delete this.$572;delete this.$574;delete this.$575;delete this.$576;delete this.$573}}
+,isc.A.updateCache=function isc_ResultSet_updateCache(_1,_2,_3){if(_2==null)return;_1=isc.DS.$372(_1);if(!isc.isAn.Array(_2))_2=[_2];if(this.logIsInfoEnabled()){var _4=(_3.componentId?" submitted by '"+_3.componentId+"'":" (no componentID) ");this.logInfo("Updating cache: operationType '"+_1+"'"+_4+","+_2.length+" rows update data"+(this.logIsDebugEnabled()?":\n"+this.echoAll(_2):""))}
+switch(_1){case"remove":this.removeCacheData(_2,_3);break;case"add":this.addCacheData(_2,_3);break;case"replace":case"update":this.updateCacheData(_2,_3);break}
+if(this.shouldUpdatePartialCache()&&_1!="remove"&&!this.allMatchingRowsCached())
+{this.invalidateRowOrder()}
+var _5=((_1=="remove")||(_1=="update"&&this.$576==null));if(this.allRows&&!this.shouldNeverDropUpdatedRows()){this.filterLocalData()}
+var _6=this.$576||this.$574;if(!_5&&_6!=null){var _7=this.indexOf(_6);if(_7==-1){delete this.$575;delete this.$574}else{this.$575=_7}}}
+,isc.A.updateCacheData=function isc_ResultSet_updateCacheData(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];var _3=this.allRows!=null,_4=_3?this.allRows:this.localData,_5=0,_6=0,_7=0;var _8=this.getDataSource().getPrimaryKeyFields();for(var i=0;i<_1.length;i++){var _10=_1[i],_11=isc.applyMask(_10,_8);var _12=this.getDataSource().findByKeys(_11,_4),_13;if(_12==-1){var _14=_2.data;if(isc.isAn.Array(_14))_14=_14[0];_14=isc.applyMask(_14,_8);var _15=this.getDataSource().findByKeys(_14,_4);if(_15!=-1){this.logWarn("Update operation - submitted record with primary key value[s]:"+this.echo(_14)+" returned with modified primary key:"+this.echo(_11)+". This may indicate bad server logic. Updating cache to reflect new primary key.");_6++;_4.removeAt(_15);delete this.$573}}else if(_1.length==1){_13=_4.get(_12);if(_3&&!this.getDataSource().recordMatchesFilter(_13,this.criteria,this.context))
+{_13=null}
+this.$574=_13;if(_13)this.$575=this.indexOf(_13)}
+var _16=_3?this.allRowsCriteria:this.criteria,_17=this.getDataSource().recordMatchesFilter(_10,_16,this.context),_18=this.shouldNeverDropUpdatedRows();if(_12==-1&&_17){this.logInfo("updated row returned by server doesn't match any cached row, "+" adding as new row. Primary key values: "+this.echo(_11)+", complete row: "+this.echo(_10));_7++;_4.add(_10);if(_1.length==1){this.$576=_10;this.$575=_4.length-1}}else if(_12!=-1){if(_17||_18){_5++;_4.set(_12,_10)}else{if(this.logIsDebugEnabled()){this.logDebug("row dropped:\n"+this.echo(_10)+"\ndidn't match filter: "+this.echo(_16))}
+_6++;_4.removeAt(_12)}}else{}}
+if(this.logIsDebugEnabled()){this.logDebug("updated cache: "+_7+" row(s) added, "+_5+" row(s) updated, "+_6+" row(s) removed.")}
+if(!_3&&this.isPaged())
+this.setFullLength(this.totalRows-_6+_7);if(!_3&&!this.shouldUpdatePartialCache())this.$391()}
+,isc.A.removeCacheData=function isc_ResultSet_removeCacheData(_1){if(!isc.isAn.Array(_1))_1=[_1];var _2=this.allRows!=null,_3=_2?this.allRows:this.localData,_4=this.getDataSource(),_5=0;for(var i=0;i<_1.length;i++){var _7=_4.findByKeys(_1[i],_3);if(_7!=-1){if(_1.length==1){var _8=_3[_7];if(!_2||_4.recordMatchesFilter(_8,this.criteria,this.context))
+{this.$574=_8;this.$575=this.indexOf(this.$574)}}
+_3.removeAt(_7);this.cachedRows-=1;_5++}else{if(this.allMatchingRowsCached())continue;if(_4.applyFilter([_1[i]],this.criteria,this.context).length>0){if(this.logIsDebugEnabled()){this.logDebug("removed record matches filter criteria: "+this.echo(_1[i]))}
+if(this.$574==null)delete this.$573;_5++}else{if(this.logIsDebugEnabled()){this.logIsDebugEnabled("cache sync ignoring 'remove' operation, removed "+" row doesn't match filter criteria: "+this.echo(_1[i]))}}}}
+if(!_2&&this.isPaged())
+this.setFullLength(this.totalRows-_5)}
+,isc.A.addCacheData=function isc_ResultSet_addCacheData(_1){if(!isc.isAn.Array(_1))_1=[_1];if(_1==null)return;var _2;if(this.allRows==null||!this.shouldUseClientFiltering()){_2=this.getDataSource().applyFilter(_1,this.criteria,this.context)}else{_2=_1;if(this.allRowsCriteria){_2=this.getDataSource().applyFilter(_2,this.allRowsCriteria,this.context)}}
+var _3;if(_2.length!=_1.length){this.logInfo("Adding rows to cache, "+_2.length+" of "+_1.length+" rows match filter criteria")}else if(_2.length==1){_3=true}
+var _4=this.allRows||this.localData;if(!_4)return;if(!this.allMatchingRowsCached()&&this.shouldUpdatePartialCache()){var _5=this.getCachedRange();if(_5){if(_5[1]==this.getLength()-1||!this.rowIsLoaded(0)){var _6=_5[1]+1;_4.addListAt(_2,_6);if(_3)this.$575=_6}else{_4.addListAt(_2,0);if(_3)this.$575=0}}else{_4.addList(_2);if(_3)this.$575=_4.length-1}}else{_4.addList(_2);if(_3)this.$575=_4.length-1}
+if(this.$575!=null)this.$576=_4[this.$575];this.cachedRows+=_2.length;if(this.canSortOnClient())this.$391();if(this.isPaged()&&!this.allRows)
+this.setFullLength(this.totalRows+_2.length)}
+,isc.A.insertCacheData=function isc_ResultSet_insertCacheData(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];if(this.allRows&&(this.allRows!=this.localData)){this.allRows.addListAt(_1,_2)}
+var _3=this.localData;_3.addListAt(_1,_2);if(this.isPaged())this.setFullLength(this.totalRows+_1.length)}
+,isc.A.findFirstCachedRow=function isc_ResultSet_findFirstCachedRow(_1){for(var i=_1;i>=0;i--){if(this.localData[i]==null)return i+1}
+return 0}
+,isc.A.findLastCachedRow=function isc_ResultSet_findLastCachedRow(_1){for(var i=_1;i<this.totalRows;i++){if(this.localData[i]==null)return i-1}
+return this.totalRows-1}
+,isc.A.$39u=function isc_ResultSet__getRangePaged(_1,_2,_3,_4){if(this.$397){var _5=(this.ignoreCache?[]:this.localData)||[];return this.fillRangeLoading(_5.slice(_1,_2),_2-_1)}
+this.$397=true;var _6=this.getRangePaged(_1,_2,_3,_4);delete this.$397;return _6}
+,isc.A.getRangePaged=function isc_ResultSet_getRangePaged(_1,_2,_3,_4){if(_1<0||_2<0){this.logWarn("getRange("+_1+", "+_2+"): negative indices not supported, clamping start to 0");if(_1<0)_1=0}
+if(_2<=_1){this.logDebug("getRange("+_1+", "+_2+"): returning empty list");return[]}
+if(!_3&&this.lengthIsKnown()){var _5=this.getLength();if(_1>_5-1&&_1!=0){this.logWarn("getRange("+_1+", "+_2+"): start beyond end of rows, returning empty list");return[]}else if(_2>_5){_2=_5}}
+if(this.localData==null)this.localData=[];if(_3){this.realCache=this.localData;this.localData=[]}
+var _6=this.localData;this.lastRangeStart=_1;this.lastRangeEnd=_2;var _7,_8,_9;for(var i=_1;i<_2;i++){if(_6[i]==null){_9=true;if(_7==null)_7=i;if(_8==null||_8<i)_8=i}}
+if(!_9){this.logDebug("getRange("+_1+", "+_2+") satisfied from cache");return _6.slice(_1,_2)}
+var _11,_12;if(this.fetchAhead){var _13=this.$398(_1,_2,_7,_8,_3);_11=_13[0];_12=_13[1]}else{_11=_7;_12=_8+1}
+this.fetchStartRow=_11;this.fetchEndRow=_12;var _14;if(_4||this.fetchDelay==0){this.$39w();_14=_6.slice(_1,_2)}else{this.fireOnPause("fetchRemoteData","$39w",this.fetchDelay);_14=this.fillRangeLoading(_6.slice(_1,_2),_2-_1)}
+if(_3){this.localData=this.realCache;this.realCache=null}
+return _14}
+,isc.A.$398=function isc_ResultSet__addFetchAhead(_1,_2,_3,_4,_5){var _6=_5?[]:this.localData,_7=_5?Number.MAX_VALUE:this.getLength(),_8=_4-_3,_9=Math.floor((this.resultSize-_8)/2),_10=Math.max(0,_3-_9),_11=Math.min(_7,_4+_9);for(var i=_10;i<=_3;i++){var _13=_6[i];if(_13==null||Array.isLoading(_13))break}
+_3=i;for(var i=_11;i>=_4;i--){var _13=_6[i];if(_13==null||Array.isLoading(_13))break}
+_4=i;this.logDebug("getRange("+[_1,_2]+"), cache check: "+[_10,_11]+" firstMissingRow: "+_3+" lastMissingRow: "+_4);var _14,_15;if(_3==0||(_3>_10&&_4==_11))
+{this.logDebug("getRange: guessing forward scrolling");_14=_3;_15=_14+this.resultSize;if(_15<_2)_15=_2}else if(_3==_10&&_4<_11){this.logDebug("getRange: guessing backward scrolling");_15=_4+1;_14=_15-this.resultSize;if(_14<0)_14=0;if(_14>_1)_14=_1}else{this.logDebug("getRange: no scrolling direction detected");_14=_10;_15=_11;if(_14>_1)_14=_1;if(_15<_2)_15=_2}
+for(var i=_14;i<_10;i++){var _13=_6[i];if(_13==null||Array.isLoading(_13))break}
+_14=i;for(var i=_15-1;i>_11;i--){var _13=_6[i];if(_13==null||Array.isLoading(_13))break}
+_15=i+1;this.logInfo("getRange("+_1+", "+_2+") will fetch from "+_14+" to "+_15);return[_14,_15]}
+,isc.A.filterLocalData=function isc_ResultSet_filterLocalData(){this.$ed();this.localData=this.applyFilter(this.allRows,this.criteria,isc.addProperties({dataSource:this},this.context));this.logInfo("Local filter applied: "+this.localData.length+" of "+this.allRows.length+" records matched filter:"+this.echoFull(this.criteria),"localFilter");if(this.allRows!=null&&this.shouldUseClientSorting())this.$391();if(!this.$524()&&this.dataArrived)this.dataArrived(0,this.localData.length-1);this.$ee(true)}
+,isc.A.applyFilter=function isc_ResultSet_applyFilter(_1,_2,_3){return this.getDataSource().applyFilter(_1,_2,_3)}
+,isc.A.getValuesList=function isc_ResultSet_getValuesList(_1){this.logInfo("asked for valuesList for property '"+_1+"'");if(this.isLocal()){if(!this.allRows){this.logWarn("asked for valuesList before data has been loaded");return[]}
+var _2=this.allRows.getProperty(_1);if(!_2)return[];return _2.getUniqueItems()}
+var _3=this.getCachedRange(),_4=[];for(var i=_3[0];i<=_3[1];i++){var _6=this.get(i);if(!_4.contains(_6[_1]))_4[_4.length]=_6[_1]}
+return _4}
+,isc.A.fillCacheData=function isc_ResultSet_fillCacheData(_1,_2){if(_2==null)_2=0;this.logDebug("integrating "+_1.length+" rows into cache at position "+_2);if(this.localData==null){this.localData=[];this.localData.length=this.getLength()}else{var _3=this.getLength(),_4=this.localData.length;if(_4>_3){this.localData=this.localData.slice(0,_3)}else if(_4!=_3){this.localData.length=_3}}
+for(var i=0;i<_1.length;i++){var _6=_2+i,_7=this.localData[_6];if(_7==null||Array.isLoading(_7)){this.cachedRows++}
+this.localData[_6]=_1[i]}
+if(this.allRowsCached()){this.$78z(this.localData,this.criteria)}}
+,isc.A.setFullLength=function isc_ResultSet_setFullLength(_1){if(!isc.isA.Number(_1))return;this.logDebug("full length set to: "+_1);if(this.isPaged())this.totalRows=_1;if(this.localData){var _2=this.localData.length;if(_2>_1){this.localData=this.localData.slice(0,_1)}else if(_2!=_1){this.localData.length=_1}}
+if(this.cachedRows>_1)this.cachedRows=_1}
+,isc.A.invalidateCache=function isc_ResultSet_invalidateCache(){delete this.$572;delete this.$576;delete this.$573;delete this.$574;delete this.$575;this.$394();if(!this.$52z())this.dataChanged(null,null,null,null,true)}
+,isc.A.$394=function isc_ResultSet__invalidateCache(){this.invalidateRows();this.totalRows=null;this.logInfo("Invalidating cache")}
+,isc.A.invalidateRows=function isc_ResultSet_invalidateRows(){this.localData=this.allRows=null;this.allRowsCriteria=null;delete this.$505;this.cachedRows=0;this.$50k=null}
+,isc.A.invalidateRowOrder=function isc_ResultSet_invalidateRowOrder(){this.$50k=true}
+,isc.A.rowOrderInvalid=function isc_ResultSet_rowOrderInvalid(){return this.$50k}
+,isc.A.dataChanged=function isc_ResultSet_dataChanged(){if(this.onDataChanged)this.onDataChanged()}
+,isc.A.getNewSelection=function isc_ResultSet_getNewSelection(_1){var _2=this.getDataSource().selectionClass||"Selection";return isc.ClassFactory.getClass(_2).create(_1)}
+);isc.B._maxIndex=isc.C+76;isc.ResultSet.registerStringMethods({transformData:"newData,dsResponse",dataArrived:"startRow,endRow",dataChanged:"operationType,originalRecord,rowNum,updateData,filterChanged"});isc.ResultSet.getPrototype().toString=isc.$63a;isc.ResultSet.getPrototype().logMessage=isc.$63b;isc.ClassFactory.defineClass("LocalResultSet",isc.ResultSet);isc.A=isc.LocalResultSet.getPrototype();isc.A.fetchMode="local";isc.ClassFactory.defineClass("WindowedResultSet",isc.ResultSet);isc.ResultSet.addMethods(isc.ClassFactory.makePassthroughMethods(["find","findIndex","findNextIndex","findAllIndices","findAll","getProperty"],"localData",true,"ResultSet.${methodName} called with no cached local data."+" Calling code can use ResultSet.lengthIsKnown() to determine whether the ResultSet has"+" loaded any data."))
+isc.ClassFactory.defineClass("ResultTree",isc.Tree);isc.A=isc.ResultTree.getPrototype();isc.A.nameProperty="$399";isc.A.nodeTypeProperty="nodeType";isc.A.childTypeProperty="childType";isc.A.modelType="parent";isc.A.loadDataOnDemand=true;isc.A.fetchMode="basic";isc.A.defaultNewNodesToRoot=false;isc.A.updateCacheFromRequest=true;isc.A=isc.ResultTree.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_ResultTree_init(_1,_2,_3,_4,_5,_6){isc.ClassFactory.addGlobalID(this);if(!this.criteria)this.criteria={};if(!this.operation)this.operation={operationType:"fetch"};if(!this.dataSource)this.dataSource=this.operation.dataSource;if(!this.operation.dataSource)this.operation.dataSource=this.dataSource;if(isc.isAn.Array(this.dataSource)){this.dataSource=this.dataSource[0];this.operation.dataSource=this.dataSource}
+if(!this.isMultiDSTree()){if(!this.root)this.root=this.makeRoot();var _7=this.getTreeRelationship(this.root);var _8;if(this.rootValue===_8)this.rootValue=_7.rootValue;if(!this.loadDataOnDemand&&(this.rootValue!=null||(this.root!=null&&this.root[this.idField]!=null))&&this.discardParentlessNodes==null)
+{this.discardParentlessNodes=true}
+if(this.idField==null)this.idField=_7.idField;if(this.parentIdField==null)this.parentIdField=_7.parentIdField;if(_7.childrenProperty)this.childrenProperty=_7.childrenProperty;this.root[this.idField]=this.rootValue}
+this.setupProperties();if(this.keepParentsOnFilter&&!this.isLocal())this.fetchMode="local";if(this.initialData){if("parent"==this.modelType)this.data=this.initialData;else if("children"==this.modelType)this.root=this.initialData}
+var _9=isc.DataSource.getDataSource(this.dataSource);this.observe(_9,"dataChanged","observer.dataSourceDataChanged(dsRequest,dsResponse);");this.dropCacheOnUpdate=this.operation.dropCacheOnUpdate;if(this.defaultIsFolder==null)this.defaultIsFolder=this.loadDataOnDemand;this.invokeSuper(isc.ResultTree,"init",_1,_2,_3,_4,_5,_6);this.defaultLoadState=this.loadDataOnDemand?isc.Tree.UNLOADED:isc.Tree.LOADED}
+,isc.A.destroy=function isc_ResultTree_destroy(){this.Super("destroy",arguments);var _1=isc.DataSource.getDataSource(this.dataSource);if(_1)this.ignore(_1,"dataChanged")}
+,isc.A.isLocal=function isc_ResultTree_isLocal(){return this.fetchMode=="local"}
+,isc.A.haveCriteria=function isc_ResultTree_haveCriteria(_1){return _1!=null&&!isc.isAn.emptyObject(_1)}
+,isc.A.setContext=function isc_ResultTree_setContext(_1){this.context=_1}
+,isc.A.getTreeRelationship=function isc_ResultTree_getTreeRelationship(_1){var _2=this.getChildDataSource(_1);var _3=_2.getTreeRelationship();return _3}
+,isc.A.getChildDataSource=function isc_ResultTree_getChildDataSource(_1,_2){var _3=_1[this.childTypeProperty];if(_3!=null)return isc.DS.get(_3);var _2=_2||this.getNodeDataSource(_1);if(_2==null||!this.isMultiDSTree())return this.getRootDataSource();var _4=this.treeRelations,_5=_2.getChildDataSources();if(_4){_3=_4[_2.ID];if(_3!=null)return isc.DS.get(_3)}
+if(_5!=null)return _5[0]}
+,isc.A.getNodeDataSource=function isc_ResultTree_getNodeDataSource(_1){var _2=_1[this.nodeTypeProperty];if(_2==null){var _3=this.getParent(_1);if(_3==null){return null}else if(_3==this.root){_2=this.getRootDataSource().ID}else{_2=_3.$40a;if(_2==null)_2=this.getRootDataSource().ID}}
+return isc.DS.get(_2)||this.getRootDataSource()}
+,isc.A.isMultiDSTree=function isc_ResultTree_isMultiDSTree(){return this.multiDSTree||this.treeRelations!=null}
+,isc.A.getRootDataSource=function isc_ResultTree_getRootDataSource(){if(this.operation&&this.operation.dataSource)return isc.DS.get(this.operation.dataSource);else return isc.DS.get(this.dataSource)}
+,isc.A.getCriteria=function isc_ResultTree_getCriteria(_1,_2,_3){if(this.getRootDataSource()==_1)return this.criteria;return null}
+,isc.A.getOperationId=function isc_ResultTree_getOperationId(_1,_2,_3){return this.operation?this.operation.ID:null}
+,isc.A.loadChildren=function isc_ResultTree_loadChildren(_1,_2){var _3=(_1==null||_1==this.root),_4,_5,_6;if(_3&&this.isMultiDSTree()){_5=this.getRootDataSource();_4={childDS:_5}}else{_4=this.getTreeRelationship(_1);_5=_4.childDS;_6=_4.parentDS}
+if(!this.isMultiDSTree()){_4.idField=this.idField;_4.parentIdField=this.parentIdField;_4.rootValue=_4.rootValue}
+if(this.logIsDebugEnabled()){this.logDebug("parent id: "+(_3?"[root]":_1[_4.idField])+" (type: "+(_3?"[root]":_6.ID)+")"+" has childDS: "+_5.ID+", relationship: "+this.echo(_4))}
+_1.$40a=_5.ID;var _7={};if(!this.isLocal()){_7=isc.addProperties({},this.getCriteria(_5,_6,_1))}else if(this.$868!=null){_7=isc.addProperties({},this.$868)}
+if(_3&&this.isMultiDSTree()){}else if(this.loadDataOnDemand){var _8=_1[_4.idField];var _9;if(_3&&_8===_9){_8=_4.rootValue}
+_7[_4.parentIdField]=_8}else{this.defaultLoadState=isc.Tree.LOADED}
+var _10=isc.addProperties({parentNode:_1,relationship:_4,childrenReplyCallback:_2},this.context?this.context.clientContext:null);if(!this.$84a){_10.$84b=true;this.$84a=true}
+var _11=isc.addProperties({parentNode:_1,resultTree:this},this.context,{clientContext:_10});var _12=this.getOperationId(_5,_6,_1);if(_12)_11.operationId=_12;_11.willHandleError=true;if(_1!=null)this.setLoadState(_1,isc.Tree.LOADING);_5.fetchData(_7,{caller:this,methodName:'loadChildrenReply'},_11)}
+,isc.A.loadChildrenReply=function isc_ResultTree_loadChildrenReply(_1,_2,_3){var _4=_1.clientContext;var _5=_4.parentNode;var _6=(this.isLocal()&&this.haveCriteria(this.$869||this.criteria));var _7=_4.relationship,_8=_1.data;if(_1.status<0)_8=null;if(_1.status==isc.RPCResponse.STATUS_OFFLINE){_8=[];if(_5!=null&&!this.isRoot(_5)){isc.say(window[_3.componentId].offlineNodeMessage)}}
+var _9=this;if(_6){if(!this.completeTree)this.completeTree=this.duplicate(true,true);_9=this.completeTree;var _10=this.getPath(_5);_5=_9.find(_10)}
+if(_8==null||_8.length==0){if(_1.status==isc.RPCResponse.STATUS_OFFLINE){_9.setLoadState(_5,isc.Tree.UNLOADED);_9.delayCall("closeFolder",[_5],0)}else{_9.setLoadState(_5,isc.Tree.LOADED)}
+if(_8==null){if(_1.status<0){isc.RPCManager.$a0(_1,_3)}else{this.logWarn("null children returned; return empty List instead")}
+_8=[]}}
+if(_9.isMultiDSTree()){for(var i=0;i<_8.length;i++){var _12=_8[i];var _13=this.getChildDataSource(_12,_7.childDS);if(_13!=null)this.convertToFolder(_12);_9.add(_12,_5)}}else{if(_1.status==isc.RPCResponse.STATUS_OFFLINE){_9.setLoadState(_5,isc.Tree.UNLOADED);_9.delayCall("closeFolder",[_5],0)}else{var _14=_6;_9.linkNodes(_8,_7.idField,_7.parentIdField,_7.rootValue,_7.isFolderProperty,_5,_14)}}
+if(_6){var _15=(this.$87a?this.$87a:this.$87b());this.filterLocalData();this.$87c(_15);if(this.$87a)delete this.$87a}
+if(this.$87a){this.$87c(this.$87a);delete this.$87a}
+if(_4.childrenReplyCallback){this.fireCallback(_4.childrenReplyCallback,"node",[_5],this)}
+if(this.dataArrived!=null){isc.Func.replaceWithMethod(this,"dataArrived","parentNode");this.dataArrived(_5)}}
+,isc.A.getDataSource=function isc_ResultTree_getDataSource(){return isc.DataSource.getDataSource(this.dataSource)}
+,isc.A.invalidateCache=function isc_ResultTree_invalidateCache(){if(!this.isLoaded(this.root))return;this.$87a=this.$87b();this.defaultLoadState=isc.Tree.UNLOADED;this.setRoot(this.makeRoot(),true);this.defaultLoadState=this.loadDataOnDemand?isc.Tree.UNLOADED:isc.Tree.LOADED;if(!this.loadDataOnDemand)this.reloadChildren(this.root)}
+,isc.A.dataSourceDataChanged=function isc_ResultTree_dataSourceDataChanged(_1,_2){if(this.disableCacheSync)return;var _3=isc.DataSource.getUpdatedData(_1,_2,this.updateCacheFromRequest);this.handleUpdate(_1.operationType,_3,_2.invalidateCache)}
+,isc.A.handleUpdate=function isc_ResultTree_handleUpdate(_1,_2,_3){if(isc.$cv)arguments.$cw=this;if(this.dropCacheOnUpdate||_3){this.invalidateCache();if(!this.getDataSource().canQueueRequests)this.dataChanged();return}
+this.updateCache(_1,_2);this.dataChanged()}
+,isc.A.updateCache=function isc_ResultTree_updateCache(_1,_2){if(_2==null)return;_1=isc.DS.$372(_1);if(!isc.isAn.Array(_2))_2=[_2];if(this.logIsInfoEnabled()){this.logInfo("Updating cache: operationType '"+_1+"', "+_2.length+" rows update data"+(this.logIsDebugEnabled()?":\n"+this.echoAll(_2):""))}
+switch(_1){case"remove":this.removeCacheData(_2);break;case"add":this.addCacheData(_2);break;case"replace":case"update":this.updateCacheData(_2);break}}
+,isc.A.addCacheData=function isc_ResultTree_addCacheData(_1){if(!isc.isAn.Array(_1))_1=[_1];var _2=this.getDataSource().applyFilter(_1,this.criteria,this.context);this.logInfo("Adding rows to cache: "+_2.length+" of "+_1.length+" rows match filter criteria");var _3=this.getDataSource().getPrimaryKeyFieldNames()[0];for(var i=0;i<_2.length;i++){if(this.completeTree){this.$651(this.completeTree,_2[i],_3)}
+this.$651(this,_2[i],_3)}}
+,isc.A.$651=function isc_ResultTree__addNodeToCache(_1,_2,_3){if(_3==null)_3=this.getDataSource().getPrimaryKeyFieldNames()[0];var _4=_2[this.parentIdField],_5;if(_4!=null)_5=_1.find(_3,_4);else{if(this.defaultNewNodesToRoot||_1.rootValue==null)_5=_1.getRoot();else _5=null}
+if(_5!=null&&(_1.getLoadState(_5)==isc.Tree.LOADED)){_2=isc.clone(_2);_1.add(_2,_5);return true}
+return false}
+,isc.A.updateCacheData=function isc_ResultTree_updateCacheData(_1){if(!isc.isAn.Array(_1))_1=[_1];var _2={addedRows:0,updatedRows:0,removedRows:0};var _3=(this.isLocal()&&this.haveCriteria(this.$869||this.criteria));var _4=this.getDataSource(),_5=this.$87d||this.criteria,_6=this.haveCriteria(_5);for(var i=0;i<_1.length;i++){var _8=_1[i];var _9=true;if(_6){var _10=_4.applyFilter([_8],_5,this.context);_9=(_10!=null&&_10.length>0)}
+if(this.logIsDebugEnabled()&&!_9){this.logDebug("updated node :\n"+this.echo(_8)+"\ndidn't match filter: "+this.echo(_5))}
+if(this.completeTree){this.$87e(this.completeTree,_8,true,null)}
+this.$87e(this,_8,_9,_2)}
+if(this.logIsDebugEnabled()){this.logDebug("updated cache: "+_2.addedRows+" row(s) added, "+_2.updatedRows+" row(s) updated, "+_2.removedRows+" row(s) removed.")}}
+,isc.A.$87e=function isc_ResultTree__updateNodeInCache(_1,_2,_3,_4){var _5=this.getDataSource(),_6=_5.getPrimaryKeyFieldNames()[0],_7=_1.find(_6,_2[_6]);if(_7==null){if(_3){if(this.$651(_1,_2,_6)){this.logInfo("updated row returned by server doesn't match any cached row, "+" adding as new row. Primary key value: "+this.echo(_2[_6])+", complete row: "+this.echo(_2));if(_4)_4.addedRows++}}
+return}
+if(_3){if(_2[this.parentIdField]!=_7[this.parentIdField]){var _8=_1.find(_6,_2[this.parentIdField]);if(_8==null&&(this.defaultNewNodesToRoot||this.rootValue==null))
+{_8=_1.getRoot()}
+if(_8==null||(_1.getLoadState(_8)!=isc.Tree.LOADED)){_1.remove(_7)
+if(_4)_4.removedRows++;return}
+_1.move(_7,_8)}
+isc.addProperties(_7,_2);var _9=_5.getFieldNames();for(var i=0;i<_9.length;i++){var _11=_9[i];if(!_2.hasOwnProperty(_11))delete _7[_11]}
+if(_4)_4.updatedRows++}else{_1.remove(_7);if(_4)_4.removedRows++}}
+,isc.A.removeCacheData=function isc_ResultTree_removeCacheData(_1){if(!isc.isAn.Array(_1))_1=[_1];var _2=this.getDataSource().getPrimaryKeyFieldNames()[0];if(this.completeTree){this.$87f(this.completeTree,_1,_2)}
+this.$87f(this,_1,_2)}
+,isc.A.$87f=function isc_ResultTree__removeNodesFromCache(_1,_2,_3){if(_3==null)_3=this.getDataSource().getPrimaryKeyFieldNames()[0];var _4=[];for(var i=0;i<_2.length;i++){var _6=_1.find(_3,_2[i][_3]);if(_6==null){this.logWarn("Cache synch: couldn't find deleted node:"+this.echo(_2[i]));continue}
+_4.add(_6)}
+_1.removeList(_4)}
+,isc.A.getTitle=function isc_ResultTree_getTitle(_1){var _2=this.getNodeDataSource(_1);if(!_2)return"root";var _3=_1[_2.getTitleField()];if(_3!=null)return _3;return this.Super("getTitle",arguments)}
+,isc.A.indexOf=function isc_ResultTree_indexOf(_1,_2,_3,_4,_5){var _6=this.getDataSource().getPrimaryKeyFieldNames();for(var i=0;i<_6.length;i++){var _8=_6[i];if(_1[_8]!=null)return this.findIndex(_8,_1[_8])}
+return this.invokeSuper(isc.ResultTree,"indexOf",_1,_2,_3,_4,_5)}
+,isc.A.setCriteria=function isc_ResultTree_setCriteria(_1){var _2=this.criteria||{},_3=this.$868||{},_4=this.getDataSource();if(!_4.isAdvancedCriteria(_1)){_1=isc.clone(_1)}
+this.criteria=_1;if(_4.isAdvancedCriteria(_1)&&!_4.isAdvancedCriteria(_2)){_2=isc.DataSource.convertCriteria(_2)}
+if(!_4.isAdvancedCriteria(_1)&&_4.isAdvancedCriteria(_2)){_1=isc.DataSource.convertCriteria(_1);this.criteria=_1}
+if(this.serverFilterFields!=null&&this.serverFilterFields.length>0){this.$87d=isc.DataSource.copyCriteria(_1);this.$868=_4.splitCriteria(this.$87d,this.serverFilterFields)}else{delete this.$87d;delete this.$868}
+var _5=this.compareCriteria(_1,_2);if(_5!=0){if(!this.isLocal()){this.logInfo("setCriteria: filter criteria changed, invalidating cache");this.invalidateCache()}else{if((isc.isAn.emptyObject(this.$868)&&!isc.isAn.emptyObject(_3))||(!isc.isAn.emptyObject(this.$868)&&this.compareCriteria(this.$868,_3)!=0))
+{this.logInfo("setCriteria: filter criteria changed, invalidating cache");this.invalidateCache()}else{var _6=this.$87b();if(isc.isAn.emptyObject(_2)){this.completeTree=this.duplicate(true,true)}
+this.filterLocalData();this.$87c(_6);if(this.dataArrived!=null){isc.Func.replaceWithMethod(this,"dataArrived","parentNode");this.dataArrived(this.getRoot())}}}}}
+,isc.A.filterLocalData=function isc_ResultTree_filterLocalData(_1){if(!_1)_1=this.getRoot();var _2=this.$87d||this.criteria,_3=this.completeTree;if(this.haveCriteria(_2)){var _4=(this.keepParentsOnFilter?isc.Tree.KEEP_PARENTS:isc.Tree.STRICT),_5=this.getDataSource();_3=this.applyFilter(this.completeTree,_2,_4,_5);this.logInfo("Local filter applied: "+_3.getNodeList().length+" of "+this.completeTree.getNodeList().length+" records matched filter:"+this.echoFull(_2))}else{this.logInfo("Local filter applied: all "+_3.getNodeList().length+" records matched filter: none");delete this.completeTree}
+this.data=null;this.setRoot(this.getCleanNodeData(this.getRoot(),false,true));var _6=_3.getAllNodes();_6=_3.getCleanNodeData(_6,false,true);this.linkNodes(_6);this.$736(true)}
+,isc.A.applyFilter=function isc_ResultTree_applyFilter(_1,_2,_3,_4){return _1.getFilteredTree(_2,_3,_4)}
+,isc.A.compareCriteria=function isc_ResultTree_compareCriteria(_1,_2,_3,_4){return this.getDataSource().compareCriteria(_1,_2,_3?_3:this.context,"dropOnChange")}
+,isc.A.willFetchData=function isc_ResultTree_willFetchData(_1){var _2;var _3=this.criteria||{},_4=this.$868||{},_5=this.getDataSource();if(!_5.isAdvancedCriteria(_1)){_1=isc.DataSource.copyCriteria(_1)}
+if(_5.isAdvancedCriteria(_1)&&!_5.isAdvancedCriteria(_3)){_3=isc.DataSource.convertCriteria(_3)}
+if(!_5.isAdvancedCriteria(_1)&&_5.isAdvancedCriteria(_3)){_1=isc.DataSource.convertCriteria(_1);this.criteria=_1}
+var _6=this.compareCriteria(_1,_3);if(_6==0)return false;if(this.isLocal())return true;var _7={};if(this.serverFilterFields!=null&&this.serverFilterFields.length>0){var _8=isc.DataSource.copyCriteria(_1);_7=_5.splitCriteria(_8,this.serverFilterFields)}
+return((isc.isAn.emptyObject(_7)&&!isc.isAn.emptyObject(_4))||(!isc.isAn.emptyObject(_7)&&this.compareCriteria(_7,_4)!=0))}
+,isc.A.getOpenState=function isc_ResultTree_getOpenState(){var _1=this.$87b();return isc.Comm.serialize(_1)}
+,isc.A.$87b=function isc_ResultTree__getOpenState(){var _1=this.getRoot(),_2=[];this.$45q(this,_1,_2);return _2}
+,isc.A.setOpenState=function isc_ResultTree_setOpenState(_1){_1=isc.Canvas.evalViewState(_1,"openState",false,this)
+if(!_1)return;this.$87c(_1)}
+,isc.A.$87c=function isc_ResultTree__setOpenState(_1){if(!_1)return;this.closeAll();this.openFolders(_1)}
+,isc.A.$45q=function isc_ResultTree__addNodeToOpenState(_1,_2,_3){if(!_1.isOpen(_2)||!_1.isLoaded(_2))return false;var _4=_1.getFolders(_2),_5=false;if(_4!=null){for(var i=0;i<_4.length;i++){_5=this.$45q(_1,_4[i],_3)||_5}}
+_3[_3.length]=_1.getPath(_2);return true}
+);isc.B._maxIndex=isc.C+37;isc.ResultTree.getPrototype().toString=isc.$63a;isc.ResultTree.getPrototype().logMessage=isc.$63b;isc.ResultTree.registerStringMethods({dataArrived:"parentNode"});isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.buildRequest=function isc_Canvas_buildRequest(_1,_2,_3){if(!_1)_1={};if(_3)_1.afterFlowCallback=_3;if(_2=="filter"){_2="fetch";if(_1.textMatchStyle==null)_1.textMatchStyle="substring"}
+if(this.textMatchStyle!=null)_1.textMatchStyle=this.textMatchStyle;_2=isc.DS.$372(_2);if(this.dataPageSize)_1.dataPageSize=this.dataPageSize;if(this.dataFetchMode)_1.dataFetchMode=this.dataFetchMode;var _4=_1.operationId||_1.operation;if(_4==null){switch(_2){case"fetch":_4=this.fetchOperation;break;case"add":_4=this.addOperation||this.saveOperation;break;case"update":_4=this.updateOperation||this.saveOperation;break;case"remove":_4=this.removeOperation||this.deleteOperation;break;case"validate":_4=this.validateOperation;break}}
+_1.operation=_4||this.operation;if(_1.operationId==null){_1.operationId=_1.operation}
+_1.componentId=this.ID;return isc.rpc.addDefaultOperation(_1,this.dataSource,_2)}
+,isc.A.createResultTree=function isc_Canvas_createResultTree(_1,_2,_3,_4){if(_4==null)_4="fetch";if(_3==null)_3={};if(_3.clientContext==null)_3.clientContext={};_3.clientContext.$53w=_2;var _5=_3.clientContext
+if(_3.afterFlowCallback!=null){if(_5.$53w==null){_5.$53w=_3.afterFlowCallback}else if(_5.$53w!=_3.afterFlowCallback){this.logWarn("createResultTree called with request.afterFlowCallback:"+this.echo(_3.afterFlowCallback)+" as well as explicit callback parameter "+this.echo(_2)+". The request.afterFlowCallback will not be fired.")}}
+_3.afterFlowCallback={target:this,methodName:"$53x"};var _6=isc.addProperties({initialData:this.initialData},this.dataProperties,_3.dataProperties,this.treeProperties,_3.treeProperties);_6.criteria=_1;_6.operation=_3.operation;_6.context=_3;_6.dataSource=this.dataSource;_6.componentId=this.ID;_6.$31k=true;if(this.loadDataOnDemand!=null)_6.loadDataOnDemand=this.loadDataOnDemand;if(this.keepParentsOnFilter!=null)_6.keepParentsOnFilter=this.keepParentsOnFilter;if(this.dataFetchMode!=null)_6.fetchMode=this.dataFetchMode;if(this.serverFilterFields!=null)_6.serverFilterFields=this.serverFilterFields;if(this.treeRootValue!=null)_6.rootValue=this.treeRootValue;if(this.treeDataRelations)_6.treeRelations=this.treeDataRelations;if(this.multiDSTree!=null)_6.multiDSTree=this.multiDSTree;var _7=this.getDataSource().resultTreeClass||"ResultTree";return isc.ClassFactory.getClass(_7).create(_6)}
+,isc.A.$53x=function isc_Canvas__fireFetchCallback(_1,_2,_3){var _4=_3.clientContext;if(_4&&_4.$84b&&_4.$53w!=null){var _5=_4.$53w;this.fireCallback(_5,"dsResponse,data,dsRequest",arguments)}}
+);isc.B._maxIndex=isc.C+3;if(isc.ValuesManager){isc.A=isc.ValuesManager.getPrototype();isc.A.buildRequest=isc.Canvas.getInstanceProperty("buildRequest")}
+isc.ClassFactory.defineInterface("EditorActionMethods");isc.EditorActionMethods.addInterfaceMethods({save:function(_1){return this.saveData(_1)},editSelected:function(_1,_2){return this.editSelectedData(_1,_2)},editNew:function(_1,_2){return this.editNewRecord(_1,_2)},editNewRecord:function(_1){this.setSaveOperationType("add");this.$39m(_1)},editRecord:function(_1){var _2=(_1==null?"add":"update");this.setSaveOperationType(_2);this.$39m(_1)},$39m:function(_1){delete this.$50l;delete this.$39l;var _1=isc.addProperties({},_1);this.setData(_1);if(this.getFileItemForm!=null){var _2=this.getFileItemForm();if(_2){_2.editNewRecord();_2.clearErrors(true)}}},editSelectedData:function(_1){if(isc.isA.String(_1))_1=window[_1];if(!_1)return;var _2=_1.selection.getSelection();if(_2&&_2.length>0){var _3=[];for(var i=0;i<_2.length;i++){_3[i]=_1.getCleanRecordData(_2[i])}
+this.editList(_3)}},editList:function(_1){this.setSaveOperationType("update");this.$50b(_1)},$50b:function(_1){this.$50l=0;this.$39l=_1;var _2=isc.addProperties({},_1[this.$50l]);this.editRecord(_2)},editNextRecord:function(){this.editOtherRecord(true)},editPrevRecord:function(){this.editOtherRecord(false)},editOtherRecord:function(_1){if(!this.$39l)return;if(this.isVisible()&&this.valuesHaveChanged()){this.$39n=_1;this.saveData({target:this,methodName:"editOtherReply"});return};if(_1&&this.$50l>=this.$39l.length-1){this.logWarn("Unable to edit next record - this is the last selected record");return false}
+if(!_1&&this.$50l<=0){this.logWarn("Unable to edit previous record - this is the first selected record");return false}
+this.$50l+=(_1?1:-1);var _2=isc.addProperties({},this.$39l[this.$50l]);this.setData(_2)},editOtherReply:function(_1,_2,_3){var _4=this.$39n;delete this.$39n;if(_1.status<0&&_1.errors){return this.setErrors(_1.errors,true)}
+if(_1.status<0)return isc.RPCManager.$a0(_1,_3);this.rememberValues();this.$39l[this.$50l]=this.getValues();this.editOtherRecord(_4)
+return true},validateData:function(_1,_2){if(!this.validate())return false;var _3=this.getValues();var _4=this.buildRequest(_2,"validate");_4.editor=this;if(_4.valuesAsParams){if(!_4.params)_4.params={};isc.addProperties(_4.params,_3)}
+var _5=this.getDataSource();return _5.validateData(_3,_1?_1:{target:this,methodName:"saveEditorReply"},_4)},reset:function(){this.resetValues()},cancel:function(_1){var _2={actionURL:this.action,target:window,sendNoQueue:true,ignoreTimeout:true,useXmlHttpRequest:false,params:{},useSimpleHttp:true};_2.params[this.cancelParamName]=this.cancelParamValue;if(!_2.actionURL){this.logWarn("No actionURL defined for the cancel RPC - set 'action' on your form or"+"provide an actionURL in the requestProperties to cancel()");return}
+isc.addProperties(_2,_1);isc.rpc.sendRequest(_2)},cancelEditing:function(){if(this.valuesManager!=null){this.valuesManager.cancelEditing()}
+if(this.userTask!=null){this.userTask.cancelEditing()}},completeEditing:function(){if(this.valuesManager!=null){this.valuesManager.completeEditing()}
+if(this.userTask!=null){this.userTask.completeEditing()}},submit:function(_1,_2){if(this.valuesManager!=null){return this.valuesManager.submit(_1,_2)}
+if(this.submitValues!=null){return this.submitValues(this.getValues(),this)}
+if(this.canSubmit)return this.submitForm();else return this.saveData(_1,_2)},saveOperationIsAdd:function(){if(this.saveOperationType)return this.saveOperationType=="add";if(this.dataSource){var _1=isc.DataSource.getDataSource(this.dataSource);return!_1.recordHasAllKeys(this.getValues())}
+return false},saveData:function(_1,_2,_3){if(this.selectionComponent!=null){var _4=this.$71d;if(_4&&this.selectionComponent.setRecordValues){this.selectionComponent.setRecordValues(_4,this.getValues())}
+return}
+if(this.dataSource==null){this.logWarn("saveData() called on a non-databound "+this.Class+". This is not supported. "+" for information on databinding of components look at the documentation"+" for the DataSource class. "+"If this was intended to be a native HTML form submission, set the "+"canSubmit property to true on this form.");return}
+if(isc.ValuesManager&&isc.isA.ValuesManager(this.valuesManager)&&this.dataPath){var _5=this.getFields();for(var i=0;i<_5.length;i++){var _7=_5[i].dataPath||_5[i].name;var _8=this.getValue(_7);this.valuesManager.$10y(_7,_8,this)}
+return}
+if(isc.Offline&&isc.Offline.isOffline()&&!this.dataSource.clientOnly){isc.warn(this.offlineSaveMessage);return}
+if(_2==null&&isc.isAn.Object(_1)&&_1.methodName==null)
+{_2=_1;_1=_2.afterFlowCallback}
+if(_2==null)_2={};var _9=this.getSaveOperationType(_2);if(!_2.oldValues){_2.oldValues=_9!="add"?this.$10s:{}}
+if(this.validationURL&&!_3){var _10={};isc.addProperties(_10,_2);isc.addProperties(_10,{actionURL:this.validationURL,valuesAsParams:true,sendNoQueue:true});_10.$40b=_2;_10.$40c=_1;this.performingServerValidation=true;this.validateData(this.getID()+".$40d(rpcRequest,rpcResponse,data)",_10);return}
+var _11=this.getFileItemForm();if(_11&&_11.isDrawn()){this.updateFileItemForm();if(!this.validate())return false;return _11.saveData(_1,_2,_3)}
+this.$40c=_1;_1=this.getID()+".$49z(dsRequest, dsResponse, data)";_2=this.buildRequest(_2,_9,_1);var _12=false;if(this.submitParamsOnly)_2.useSimpleHttp=true;if(isc.DynamicForm&&isc.isA.DynamicForm(this)){if(this.$66g){_2.actionURL=this.action;_2.target=this.target?this.target:window;_12=true}
+if(this.method!=isc.DynamicForm.getInstanceProperty("method")){_2.httpMethod=this.method}}
+if(this.disableValidation)this.clearErrors(true);else{if(!this.validate(null,null,null,null,true))return false}
+if(this.rulesEngine){var _13=this.rulesEngine.processSubmit(this);if(_13==false)return}
+var _14=this.getValues();if((isc.DynamicForm&&isc.isA.DynamicForm(this)&&this.isMultipart())||this.canSubmit||_12)
+{return this.submitEditorValues(_14,_2.operation,_2.callback,_2)}else{return this.saveEditorValues(_14,_2.operation,_2.callback,_2)}},updateFileItemForm:function(){var _1=this.getFileItemForm();if(_1==null)return;var _2=_1.getValues(),_3=this.getValues(),_4=_1.getItem(0).getFieldName();for(var _5 in _2){if(_5==_4)continue;_1.setValue(_5,null)}
+for(var _5 in _3){if(_5==_4)continue;_1.setValue(_5,_3[_5])}
+if(this.$66g)_1.setAction(this.action);_1.dataSource=this.dataSource},isNewRecord:function(){return this.getSaveOperationType()=="add"},setSaveOperationType:function(_1){this.saveOperationType=_1},getSaveOperationType:function(_1){var _2;if(!_1||!_1.operation){_2=(_1&&_1.operationType)?_1.operationType:this.saveOperationType;if(!_2&&this.dataSource!=null){var _3=isc.DataSource.getDataSource(this.dataSource).getPrimaryKeyFieldNames(),_4=this.getValues(),_5;for(var i=0;i<_3.length;i++){var _7=_3[i],_8=_4[_3];if(_8==null){_2="add";break}
+if(this.$10s[_7]!==_5&&this.$10s[_7]!=_8){_2="add"}
+var _9=this.getItem(_7);if(_9&&_9.isVisible()&&(_9.shouldSaveValue&&_9.isEditable())){_2="add"
+break}}
+if(_2==null){_2="update"}}}
+return _2},$49z:function(_1,_2,_3){this.$490=0;if(!this.suppressServerDataSync&&_2&&_2.status>=0&&_3!=null){if(isc.isAn.Array(_3))_3=_3[0];if(_1.originalData)_1.originalData=isc.shallowClone(_1.originalData);if(_1.data)_1.data=isc.shallowClone(_1.data);var _4=(_1.originalData||_1.data),_5=this.getValues();var _6=false;for(var i in _3){var _8=this.getField(i);if(!this.fieldValuesAreEqual(_8,_4[i],_3[i])&&this.fieldValuesAreEqual(_8,_5[i],_4[i]))
+{_5[i]=_3[i];_6=true}}
+if(_6){this.$10r(_5);for(var i=0;i<this.items.length;i++){var _9=this.items[i];if(isc.isAn.UploadItem(_9))continue;var _10=_9.dataPath||_9.name;if(_10==null)continue;var _11=isc.DynamicForm.$70o(_10,_4),_12=isc.DynamicForm.$70o(_10,_3);if(!this.fieldValuesAreEqual(_9,_11,_12)&&this.fieldValuesAreEqual(_9,_11,_9.getValue()))
+{_9.setValue(_12)}}}
+if(this.saveOperationType=="add")delete this.saveOperationType}
+this.$491={request:_1,response:_2,data:_3};this.formSavedComplete();var _13=this.getItem("_transaction");if(_13&&isc.isA.HiddenItem(_13)){_13.clearValue()}},formSavedComplete:function(){var _1=this.getFields();for(var i=this.$490;i<_1.length;i++){this.$490++;var _3=_1[i];if(isc.isA.Function(_3.formSaved)&&_3.formSaved(this.$491.request,this.$491.response,this.$491.data)===false)return}
+if(this.$40c){this.fireCallback(this.$40c,"dsResponse,data,dsRequest",[this.$491.response,this.$491.data,this.$491.request])}
+delete this.$492;delete this.$40c},saveEditorValues:function(_1,_2,_3,_4){var _5;if(!_4)_4={};isc.addProperties(_4,{prompt:(_4.prompt||isc.RPCManager.saveDataPrompt),editor:this});if(_4.clientContext==null)_4.clientContext={};_4.clientContext.$69t=_4.willHandleError;_4.willHandleError=true;if(_4.valuesAsParams){if(!_4.params)_4.params={};isc.addProperties(_4.params,_1)}
+var _6=this.getDataSource();return _6.performDSOperation(_2.type,_1,_3?_3:{target:this,methodName:"saveEditorReply"},_4)},submitEditorValues:function(_1,_2,_3,_4){if(!_4)_4={};isc.addProperties(_4,{directSubmit:true,submitForm:this});return this.saveEditorValues(_1,_2,_3,_4)},saveEditorReply:function(_1,_2,_3){if(_3.clientContext){_3.willHandleError=_3.clientContext.$69t}
+if(_1.status==isc.RPCResponse.STATUS_VALIDATION_ERROR&&_1.errors){if(isc.isA.FileItem(this.targetItem))
+this.parentElement.setErrors(_1.errors,true);else this.setErrors(_1.errors,true);return this.suppressValidationErrorCallback?false:_3.willHandleError==true}
+if(_1.status<0&&!_3.willHandleError)
+return isc.RPCManager.$a0(_1,_3);return true},$40d:function(_1,_2,_3){if(_2.status==isc.RPCResponse.STATUS_SUCCESS){this.performingServerValidation=false;this.markForRedraw("serverValidationSuccess");this.saveData(_1.$40c,_1.$40b,true);_1.$40c=null;_1.$40b=null}else{this.setErrors(_2.errors,true)}}});if(isc.DynamicForm){isc.ClassFactory.mixInInterface("DynamicForm","EditorActionMethods");isc.A=isc.DynamicForm.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.selectionComponentSelectionChanged=function isc_DynamicForm_selectionComponentSelectionChanged(_1,_2,_3){if(!_3)_2={};this.$71d=_1.getPrimaryKeys(_2);this.clearErrors(true);if(this.valuesManager&&this.valuesManager.$707){this.valuesManager.$707(this)}else{this.editRecord(isc.addProperties({},_2))}}
+,isc.A.selectionComponentCellSelectionChanged=function isc_DynamicForm_selectionComponentCellSelectionChanged(_1,_2){for(var i=0;i<_2.length;i++){var _4=_2[i],_5=this.selectionComponent.getCellRecord(_4[0],_4[1]);if(_1.cellIsSelected(_5))break;_5=null}
+if(_5){this.$71d=_1.getPrimaryKeys(_5);if(this.valuesManager&&this.valuesManager.$707){this.valuesManager.$707(this)}else{this.editRecord(isc.addProperties({},_5))}}}
+);isc.B._maxIndex=isc.C+2}
+isc.$457={fetchData:function(_1,_2,_3){var _4=this.getDataSource();if(!_4){this.logWarn("Ignoring call to fetchData() on a DynamicForm with no valid dataSource");return}
+if(this.$458==null)this.$458=[];this.$458.add(_2);_3=this.buildRequest(_3,"fetch");_4.fetchData(_1,{target:this,methodName:"fetchDataReply"},_3)},fetchDataReply:function(_1,_2,_3){if(_2==null||isc.isAn.emptyObject(_2)||(isc.isAn.Array(_2)&&_2.getLength()==0))
+{if(_1.status==isc.RPCResponse.STATUS_OFFLINE){isc.say(this.offlineMessage)}}
+var _4;if(isc.isAn.Array(_2)){_4=_2.get(0)}else{_4=_2}
+if(_1.status==isc.RPCResponse.STATUS_SUCCESS||_1.status==isc.RPCResponse.STATUS_VALIDATION_ERROR)
+{this.editRecord(_4)}
+var _5=this.$458.pop();if(_5)this.fireCallback(_5,"dsResponse,data,dsRequest",[_1,_2,_3])},filterData:function(_1,_2,_3){var _4=this.getDataSource();if(!_4){this.logWarn("Ignoring call to filterData() on a DynamicForm with no valid dataSource");return}
+if(this.$458==null)this.$458=[];this.$458.add(_2);_4.filterData(_1,{target:this,methodName:"fetchDataReply"},_3)}}
+if(isc.DynamicForm)isc.DynamicForm.addMethods(isc.$457)
+if(isc.ValuesManager)isc.ClassFactory.mixInInterface("ValuesManager","EditorActionMethods");if(isc.ValuesManager)isc.ValuesManager.addMethods(isc.$457)
+if(isc.ValuesManager){isc.A=isc.ValuesManager.getPrototype();isc.A.fieldValuesAreEqual=isc.Canvas.getPrototype().fieldValuesAreEqual}
+if(isc.TreeGrid){isc.A=isc.TreeGrid.getPrototype();isc.A.ignoreEmptyCriteria=true;isc.A=isc.TreeGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.useExistingDataModel=function isc_TreeGrid_useExistingDataModel(_1,_2,_3){return false}
+,isc.A.createDataModel=function isc_TreeGrid_createDataModel(_1,_2,_3){return this.createResultTree(_1,_3.afterFlowCallback,_3,null)}
+);isc.B._maxIndex=isc.C+2}
+if(isc.DetailViewer){isc.A=isc.DetailViewer.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.viewSelectedData=function isc_DetailViewer_viewSelectedData(_1,_2,_3){if(isc.isA.String(_1))_1=window[_1];_3=_3||{};var _4=_1.selection.getSelection();if(_4&&_4.length>0){if(!_3.operation){this.setData(_4)}else{var _5=_3.operation,_6=this.getDataSource(),_7=_6.filterPrimaryKeyFields(_4);if(_3.prompt==null)
+_3.prompt=isc.RPCManager.getViewRecordsPrompt;_3.viewer=this;return _6.performDSOperation(_5.type,_7,(_2?_2:{target:this,methodName:"viewSelectedDataReply"}),_3)}}
+return false}
+,isc.A.viewSelected=function isc_DetailViewer_viewSelected(_1,_2){return this.viewSelectedData(_1,_2)}
+,isc.A.viewSelectedDataReply=function isc_DetailViewer_viewSelectedDataReply(_1,_2,_3){this.setData(_2)}
+);isc.B._maxIndex=isc.C+3}
+isc.defineClass("DataView",isc.VLayout);isc.A=isc.DataView.getPrototype();isc.A.autoLoadServices=true;isc.A.autoBindDBCs=true;isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.dataViewInit=function isc_Canvas_dataViewInit(){var _1=this.operations;if(_1==null){this.bindToServices();return}
+this.operations.setProperty("dataView",this);if(!this.autoLoadServices)return;var _2=_1.getProperty("location").getUniqueItems();this.logInfo("loading services: "+_2);this.$72q=_2.length;var _3=this;for(var i=0;i<_2.length;i++){isc.xml.loadWSDL(_2[i],function(_6){_3.$72q--;_3.logInfo("service loaded: "+_6+", remaining: "+_3.$72q);if(window.avosConfig&&_6.dataURL&&_6.dataURL.contains("active-bpel/services/")&&_6.dataURL.contains("localhost"))
+{var _5=_6.dataURL;_5=window.avosConfig.baseUrl+"/"+_5.substring(_5.indexOf("services/"));isc.logWarn("revising AV service location from: "+_6.dataURL+" to "+_5);_6.setLocation(_5)}
+if(_3.$72q==0){_3.dataViewLoaded();_3.bindToServices()}},null,true)}}
+,isc.A.addVM=function isc_Canvas_addVM(_1){this.addedVMs=this.addedVMs||[];this.addedVMs.add(_1)}
+,isc.A.bindToServices=function isc_Canvas_bindToServices(){if(!this.autoBindDBCs)return;var _1=this.getAllDBCs(this);if(!_1)return;var _2=this.getAllVMs();if(this.logIsDebugEnabled("DataView")){this.logDebug("vms: "+this.echoAll(_2.getProperties(["dataSource","serviceNamespace","serviceName"]))+", all dbcs: "+this.echoAll(_1.getProperties(["dataSource","serviceNamespace","serviceName"])),"DataView")}
+for(var i=0;i<_1.length;i++){var _4=_1[i];if(_4.dataSource){if(this.canEdit!=null&&_4.canEdit==null)_4.setCanEdit(this.canEdit);var _5=this.findVM(_4,_2);if(_5){if(this.logIsInfoEnabled("dataRegistration")){this.logWarn("dbc: "+_4+" binding to dataSource: "+_4.dataSource+" and vm: "+_5+", with fields: "+this.echoAll(_4.originalFields),"dataRegistration")}
+if(_4.originalFields)_4.setDataSource(_4.dataSource,_4.originalFields);_5.addMember(_4)}else{this.logInfo("no VM for DBC: "+this.echoLeaf(_4),"DataView")}}
+if(isc.isA.DynamicForm(_4)&&_4.items){_4.items.map("registerWithDataView",this)}}}
+,isc.A.getAllVMs=function isc_Canvas_getAllVMs(){var _1=[];var _2=this.operations;if(_2){_1.addAll(_2.getProperty("inputVM"));_1.addAll(_2.getProperty("outputVM"))}
+_1.addAll(this.addedVMs);_1.removeList([null]);return _1}
+,isc.A.findVM=function isc_Canvas_findVM(_1,_2){if(!_2)_2=this.getAllVMs();var _3=(isc.isA.DataSource(_1)?_1:_1.getDataSource());for(var i=0;i<_2.length;i++){var _5=_2[i];if(_3==_5.getDataSource())return _5}}
+,isc.A.getAllDBCs=function isc_Canvas_getAllDBCs(_1){var _2=_1.children;if(!_2)return null;var _3=[];for(var i=0;i<_2.length;i++){var _1=_2[i];if(isc.isA.DataBoundComponent(_1))_3.add(_1);_3.addAll(this.getAllDBCs(_1))}
+return _3}
+,isc.A.registerItem=function isc_Canvas_registerItem(_1){if(!_1.inputDataPath)return;var _2=isc.WebService.getByName(_1.inputServiceName,_1.inputServiceNamespace);if(!_2){this.logWarn("Member: "+_1+" could not find webService with name '"+_1.inputServiceName+"', namespace '"+_1.inputServiceNamespace+"'. Has it been loaded?");return}
+var _3=_1.inputSchemaDataSource;var _4=this.itemRegistry=this.itemRegistry||{};var _5=_4[_3]=_4[_3]||[];_5.add(_1)}
+,isc.A.populateListeners=function isc_Canvas_populateListeners(_1){var _2=_1.getDataSource().getID();var _3=this.itemRegistry;if(this.logIsInfoEnabled("DataView")){this.logInfo("message: "+_2+", registry: "+this.echo(_3)+", data: "+this.echo(_1.getValues()),"DataView")}
+if(!_3)return;var _4=_3[_2];if(!_4)return;for(var i=0;i<_4.length;i++){var _6=_4[i];var _7=_1.getValue(_6.inputDataPath);this.logWarn("component: "+_6+" with inputDataPath: "+_6.inputDataPath+" got data: "+this.echo(_7));if(isc.isA.FormItem(_6)){_6.setValue(_7)}else{_6.setData(_7)}}}
+,isc.A.dataViewLoaded=function isc_Canvas_dataViewLoaded(){}
+);isc.B._maxIndex=isc.C+9;isc.DataView.registerStringMethods({dataViewLoaded:""});isc.defineClass("ServiceOperation").addClassMethods({getServiceOperation:function(_1,_2,_3){if(this.$725)return this.$725.find({operationName:_1,serviceName:_2,serviceNamespace:_3})}});isc.A=isc.ServiceOperation.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_ServiceOperation_init(){isc.ClassFactory.addGlobalID(this);this.Super("init",arguments);if(!isc.ServiceOperation.$725)isc.ServiceOperation.$725=[];isc.ServiceOperation.$725.add(this)}
+,isc.A.invoke=function isc_ServiceOperation_invoke(){var _1=this.service=isc.WebService.getByName(this.serviceName,this.serviceNamespace);if(!_1){this.logWarn("Unable to find web service with serviceName '"+this.serviceName+"' and serviceNamespace '"+this.serviceNamespace+"'. Has it been "+"loaded?");return}
+var _2=this.inputVM.getValues();if(_1.useSimplifiedInputs(this.operationName)){_2=_2[isc.firstKey(_2)]}
+var _3=this;_1.callOperation(this.operationName,_2,null,function(_2,_4,_5,_6){_3.invocationCallback(_2,_4,_5,_6)})}
+,isc.A.invocationCallback=function isc_ServiceOperation_invocationCallback(_1,_2,_3,_4){if(!this.outputVM)return;if(this.service.getSoapStyle(this.operationName)=="document"){var _5=this.outputVM.getDataSource().getFieldNames();if(_5.length==1){var _6=_5.first(),_7={};_7[_6]=_1;_1=_7}}
+this.outputVM.setValues(_1);if(this.logIsInfoEnabled()){this.logInfo("populating listeners on dataView: "+this.dataView+", vm has values: "+this.echo(this.outputVM.getValues()))}
+if(this.dataView)this.dataView.populateListeners(this.outputVM)}
+);isc.B._maxIndex=isc.C+3;(function(){var Offline={explicitOffline:null,isOffline:function(){if(this.explicitOffline!==null)return this.explicitOffline;var offline=window.navigator.onLine?false:true;return offline},goOffline:function(){this.explicitOffline=true},goOnline:function(){this.explicitOffline=false},useNativeOfflineDetection:function(){this.explicitOffline=null},KEY_PREFIX:"isc-",LOCAL_STORAGE:"localStorage",GLOBAL_STORAGE:"globalStorage",DATABASE_STORAGE:"databaseStorage",GEARS_DATABASE_API:"gears database api",USERDATA_PERSISTENCE:"userData persistence",GOOGLE_GEARS:"google gears",NO_MECHANISM:"no discovered mechanism",maxResponsesToPersist:100,userDataPersistenceInIE8:false,localStorageType:function(){if(window.localStorage){if(!this.userDataPersistenceInIE8||!isc.Browser.isIE){return this.LOCAL_STORAGE}}
+if(window.globalStorage)return this.GLOBAL_STORAGE;if(window.openDatabase)return this.DATABASE_STORAGE;if(isc.Browser.isIE&&isc.Browser.version>=5){if(!UserDataPersistence.isInitialized)UserDataPersistence.init();return this.USERDATA_PERSISTENCE}
+return this.NO_MECHANISM},getNativeStoredValuesCount:function(){switch(this.localStorageType()){case this.LOCAL_STORAGE:return localStorage.length;break;case this.USERDATA_PERSISTENCE:return UserDataPersistence.getNativeStoredValuesCount();break;case this.GLOBAL_STORAGE:case this.DATABASE_STORAGE:case this.GEARS_DATABASE_API:case this.GOOGLE_GEARS:break}},getSCStoredValuesCount:function(){var entries=this.get(this.countKey);entries=entries?entries*1:0;return entries},getKeyForNativeIndex:function(index){switch(this.localStorageType()){case this.LOCAL_STORAGE:return localStorage.key(index);case this.USERDATA_PERSISTENCE:return UserDataPersistence.getKeyForNativeIndex(index);break;case this.GLOBAL_STORAGE:case this.DATABASE_STORAGE:case this.GEARS_DATABASE_API:case this.GOOGLE_GEARS:break}},clearCache:function(){var count=this.getSCStoredValuesCount();while(this.getSCStoredValuesCount()>0){this.removeOldestEntry();if(this.getSCStoredValuesCount()==count)break;count=this.getSCStoredValuesCount()}},clearCacheNatively:function(){if(this.localStorageType()==this.USERDATA_PERSISTENCE){UserDataPersistence.clearCacheNatively();return}
+var count=this.getNativeStoredValuesCount();this.logDebug("Removing all "+count+" entries from local storage");for(var i=0;i<count;i++){this.$786(this.getKeyForNativeIndex(0),false)}},logCacheContents:function(maxEntryLength){var contents=this.getCacheContents();this.logDebug("Dumping the contents of the browser's local storage:");for(var key in contents){var value=contents[key];if(value&&value.length>maxEntryLength){value=value.substring(0,maxEntryLength)}
+this.logDebug(key+" ===> "+value)}},getCacheContents:function(){var index=0,contents={},count=this.getSCStoredValuesCount();while(index<count){var key=this.getPriorityQueueKey(index);if(key.indexOf(this.KEY_PREFIX)==0)key=key.substring(this.KEY_PREFIX.length);contents[key]=this.get(key);index++}
+return contents},getCacheKeys:function(){var index=0,keys=[],count=this.getSCStoredValuesCount();while(index<count){var obj=this.getPriorityQueueKey(index);keys[keys.length]=key;index++}
+return keys},removeOldestEntry:function(){var key=this.getAndRemoveOldestFromPriorityQueue();if(key==null)return;this.remove(key,true)},$787:function(maxEntryLength){var doc=this.userDataSpan.xmlDocument;var maxEntryLength=100;this.logDebug("Dumping the contents of raw userData storage:");for(var i=0;i<this.userDataSpan.xmlDocument.firstChild.attributes.length;i++){var key=this.userDataSpan.xmlDocument.firstChild.attributes[i].name;var value=this.userDataSpan.getAttribute(key);if(value&&value.length>maxEntryLength){value=value.substring(0,maxEntryLength)+"..."}
+this.logDebug(key+" ===> "+value)}},put:function(key,value,recycleEntries){var ts=new Date().getTime();var oldValue=this.get(key);while(true){try{this.$788(key,value);break}catch(e){if(recycleEntries!==false&&this.isStorageException(e)){var entries=this.getStorageMetrics().storedEntries;if(entries>0){this.logDebug("Cache full; removing oldest entry and trying again");this.removeOldestEntry()}else{this.logDebug("Can't add this entry to browser-local storage, even "+"though the cache is empty - the item must be larger "+"than the browser's permitted cache space.");break}}else{throw e}}}
+var end=new Date().getTime();var pqOK=false,metricsOK=false;while(!pqOK||!metricsOK){try{if(!pqOK)this.addToPriorityQueue(key);pqOK=true;if(!metricsOK)this.updateMetrics("put",key,value,oldValue);metricsOK=true}catch(e){if(this.isStorageException(e)){if(recycleEntries!==false){var entries=this.getStorageMetrics().storedEntries;if(entries>0){this.logDebug("Cache full when updating priority queue or metrics; "+"removing oldest entry and trying again");this.removeOldestEntry();continue}}
+this.logDebug("Cache full when updating priority queue or metrics; rolling "+"back the entire update");this.$786(key);if(pqOK)this.removeFromPriorityQueue(key);this.rebuildMetrics();throw e}else{throw e}}}
+this.logDebug("put() with key: "+key+"\nitem: "+this.echoLeaf(value)+": "+(end-ts)+"ms. Maintaining the priority queue and metrics took "+"a further "+new Date().getTime()-end+"ms")},$788:function(key,value,applyPrefix){key=(applyPrefix===false?"":this.KEY_PREFIX)+key;switch(this.localStorageType()){case this.LOCAL_STORAGE:localStorage.setItem(key,value);break;case this.USERDATA_PERSISTENCE:UserDataPersistence.putValue(key,value);break;case this.GLOBAL_STORAGE:case this.DATABASE_STORAGE:case this.GEARS_DATABASE_API:case this.GOOGLE_GEARS:this.logError("Persistence method '"+this.localStorageType()+"' not yet supported");break}},isStorageException:function(e){switch(this.localStorageType()){case this.LOCAL_STORAGE:if(isc.Browser.isIE){return(e.number==-2147024882)}else if(isc.Browser.isMoz){return(e.name=="NS_ERROR_DOM_QUOTA_REACHED")}else{return(e.name=="QUOTA_EXCEEDED_ERR")}
+break;case this.USERDATA_PERSISTENCE:return(e.number==-2147024857)}},get:function(key){var ts=new Date().getTime(),item;switch(this.localStorageType()){case this.LOCAL_STORAGE:item=localStorage.getItem(this.KEY_PREFIX+key);break;case this.USERDATA_PERSISTENCE:item=UserDataPersistence.getValue(this.KEY_PREFIX+key);break;case this.GLOBAL_STORAGE:case this.DATABASE_STORAGE:case this.GEARS_DATABASE_API:case this.GOOGLE_GEARS:break}
+if(item)item=isc.clone(item);var end=new Date().getTime();this.logDebug("get() with key: "+key+"\nitem is: "+this.echoLeaf(item)+": "+(end-ts)+"ms");return item},remove:function(key,skipPriorityQueueUpdate){this.logDebug("Removing item for key: "+key);this.updateMetrics("remove",key);if(!skipPriorityQueueUpdate)this.removeFromPriorityQueue(key);this.$786(key)},$786:function(key,applyPrefix){key=(applyPrefix===false?"":this.KEY_PREFIX)+key;switch(this.localStorageType()){case this.LOCAL_STORAGE:localStorage.removeItem(key);break;case this.USERDATA_PERSISTENCE:UserDataPersistence.removeValue(key);break;case this.GLOBAL_STORAGE:case this.DATABASE_STORAGE:case this.GEARS_DATABASE_API:case this.GOOGLE_GEARS:break}},getUndecoratedKey:function(key){if(key&&key.startsWith(this.KEY_PREFIX)){key=key.substring(this.KEY_PREFIX.length)}
+return key},priorityQueueKey:"pq",addToPriorityQueue:function(userKey){this.removeFromPriorityQueue(userKey);var key=this.toInternalKey(userKey);var pqText=this.get(this.priorityQueueKey);if(pqText){eval("var pq = "+pqText)}else{var pq=[]}
+pq.push(key);this.$788(this.priorityQueueKey,this.serialize(pq))},removeFromPriorityQueue:function(userKey){var key=this.toInternalKey(userKey);var pqText=this.get(this.priorityQueueKey);if(pqText){eval("var pq = "+pqText)}else{var pq=[]}
+for(var i=0;i<pq.length;i++){if(pq[i]==key){var leading=pq.slice(0,i);var trailing=pq.slice(i+1);pq=leading.concat(trailing);break}}
+this.$788(this.priorityQueueKey,this.serialize(pq))},getAndRemoveOldestFromPriorityQueue:function(){var pqText=this.get(this.priorityQueueKey);if(pqText){eval("var pq = "+pqText)}else{var pq=[]}
+var oldest=pq.shift();this.$788(this.priorityQueueKey,this.serialize(pq));return this.toUserKey(oldest)},getPriorityQueueEntry:function(index){var key=this.getPriorityQueueKey(index);var value=this.get(key);var entry={};entry[key]=value;return entry},getPriorityQueueValue:function(index){var key=this.getPriorityQueueKey(index);return this.get(key)},getPriorityQueueKey:function(index){var pqText=this.get(this.priorityQueueKey);if(pqText){eval("var pq = "+pqText)}else{var pq=[]}
+return this.toUserKey(pq[index])},getPriorityQueue:function(){var pqText=this.get(this.priorityQueueKey);if(pqText){eval("var pq = "+pqText)}else{var pq=[]}
+return pq},toInternalKey:function(userKey){if(this.localStorageType()==this.USERDATA_PERSISTENCE){return UserDataPersistence.getDataStoreKey(this.KEY_PREFIX+userKey)}
+return userKey},toUserKey:function(internalKey){if(this.localStorageType()==this.USERDATA_PERSISTENCE){return this.getUndecoratedKey(UserDataPersistence.getUserKey(internalKey))}
+return internalKey},countKey:"storedEntryCount__",keyKey:"storedKeyBytes__",valueKey:"storedValueBytes__",updateMetrics:function(mode,key,value,oldValue){var realKey=this.KEY_PREFIX+key,storedEntries=this.get(this.countKey)||0,storedKeyBytes=this.get(this.keyKey)||0,storedValueBytes=this.get(this.valueKey)||0;storedKeyBytes=1*storedKeyBytes;storedValueBytes=1*storedValueBytes;if(mode=="remove"){var item=this.get(key);storedEntries--;storedKeyBytes-=realKey.length;storedValueBytes-=item.length}else{if(oldValue==null){storedEntries++;storedKeyBytes+=realKey.length;storedValueBytes+=value.length}else{storedValueBytes+=value.length-oldValue.length}}
+this.$788(this.countKey,storedEntries);this.$788(this.keyKey,storedKeyBytes);this.$788(this.valueKey,storedValueBytes)},rebuildMetrics:function(){var pq=this.getPriorityQueue(),entries=0,keyBytes=0,valueBytes=0;for(var i=0;i<pq.length;i++){var value=this.get(pq[i]);entries++;keyBytes+=pq[i].length;valueBytes+=value.length}
+this.$788(this.countKey,entries);this.$788(this.keyKey,keyBytes);this.$788(this.valueKey,valueBytes)},getStorageMetrics:function(){var storedEntries=this.get(this.countKey)||0,storedKeyBytes=this.get(this.keyKey)||0,storedValueBytes=this.get(this.valueKey)||0,countLen=0,keyLen=0,valueLen=0;if(storedEntries)countLen=storedEntries.length;if(storedKeyBytes)keyLen=storedKeyBytes.length;if(storedValueBytes)valueLen=storedValueBytes.length;storedEntries=1*storedEntries;storedKeyBytes=1*storedKeyBytes;storedValueBytes=1*storedValueBytes;var pqText=this.get(this.priorityQueueKey);var overhead=this.countKey.length+this.keyKey.length+this.valueKey.length+countLen+keyLen+valueLen;var pqLength=pqText==null?0:pqText.length+(this.KEY_PREFIX+this.priorityQueueKey).length;return{storedEntries:storedEntries,storedKeyBytes:storedKeyBytes,storedValueBytes:storedValueBytes,metricsOverhead:overhead,priorityQueue:pqLength,total:storedKeyBytes+storedValueBytes+overhead+pqLength}},getTotalStorageUsed:function(){var metrics=this.getStorageMetrics();return metrics.storedKeyBytes+metrics.storedValueBytes+metrics.metricsOverhead+metrics.priorityQueue},storeResponse:function(dsRequest,dsResponse){var ts=new Date().getTime();dsResponse.offlineTimestamp=ts;var trimmedRequest=this.trimRequest(dsRequest),key=this.serialize(trimmedRequest),value=this.serialize(this.trimResponse(dsResponse));this.logDebug("storeResponse serializing: "+(new Date().getTime()-ts)+"ms");if(this.get(key)==null){if(this.getSCStoredValuesCount()>=this.maxResponsesToPersist){this.removeOldestEntry()}}
+this.put(key,value)},trimRequest:function(dsRequest){var keyProps=["dataSource","operationType","operationId","textMatchStyle","values","sortBy","startRow","endRow","data"],trimmed={},undef;for(var i=0;i<keyProps.length;i++){if(dsRequest[keyProps[i]]!==undef){trimmed[keyProps[i]]=dsRequest[keyProps[i]]}}
+return trimmed},trimResponse:function(dsResponse){var keyProps=["dataSource","startRow","endRow","totalRows","data","offlineTimestamp","status","errors","invalidateCache","cacheTimestamp"],trimmed={},undef;for(var i=0;i<keyProps.length;i++){if(dsResponse[keyProps[i]]!==undef){trimmed[keyProps[i]]=dsResponse[keyProps[i]]}}
+return trimmed},getResponse:function(dsRequest){var trimmedRequest=this.trimRequest(dsRequest),key=this.serialize(trimmedRequest),value=this.get(key),returnValue;eval('returnValue = '+value);if(returnValue)returnValue.fromOfflineCache=true;return returnValue},serialize:function(obj){return isc.Comm.serialize(obj,false)},showStorageInfo:function(){if(!this.storageBrowser){if(isc.Offline.localStorageType()==isc.Offline.USERDATA_PERSISTENCE){isc.Timer.setTimeout(function(){isc.say("WARNING: This browser uses an old storage mechanism that does not "+"permit arbitrary key/value pair storage. This means we have to "+"store extra management data, with the upshot that the metrics reported "+"for 'priority queue' and 'overhead' are indicative, but not accurate")},0)}
+this.metricsDF=isc.DynamicForm.create({width:"100%",numCols:6,fields:[{name:"storedEntries",title:"No. entries",disabled:true},{name:"storedKeyBytes",title:"Used by keys",disabled:true},{name:"storedValueBytes",title:"Used by values",disabled:true},{name:"priorityQueue",title:"Used by Priority Queue",disabled:true},{name:"metricsOverhead",title:"Metrics overhead",disabled:true},{name:"total",title:"Total Bytes",disabled:true}]});this.storageLG=isc.ListGrid.create({width:"100%",height:"*",canRemoveRecords:true,removeData:function(record){isc.ask("Remove this entry?",function(value){if(value){isc.Offline.remove(record.key);isc.Offline.refreshStorageInfo()}})},rowDoubleClick:function(record){isc.Offline.createStorageEditorWindow();isc.Offline.storageEditorWindow.show();isc.Offline.storageEditor.editRecord(record)},fields:[{name:"key",width:"25%",title:"Key"},{name:"value",title:"Value"}]});this.storageBrowser=isc.Window.create({autoCenter:true,canDragResize:true,width:Math.floor(isc.Page.getWidth()*0.5),height:Math.floor(isc.Page.getHeight()*0.5),title:"Offline Storage",items:[this.metricsDF,this.storageLG,isc.HLayout.create({width:"100%",height:1,members:[isc.LayoutSpacer.create({width:"*"}),isc.Button.create({title:"Add Entry",click:function(){isc.Offline.createStorageEditorWindow();isc.Offline.storageEditorWindow.show();isc.Offline.storageEditor.editNewRecord()}})]})]})}
+this.storageBrowser.show();this.refreshStorageInfo()},createStorageEditorWindow:function(){if(!isc.Offline.storageEditorWindow){isc.Offline.storageEditor=isc.DynamicForm.create({fields:[{name:"key",title:"Key",editorType:"TextAreaItem",width:400},{name:"value",title:"Value",editorType:"TextAreaItem",width:400},{name:"saveButton",type:"button",title:"Save",click:function(){var form=isc.Offline.storageEditor;if(form.saveOperationType=="update"&&form.getValue("key")!=form.getOldValue("key"))
+{isc.ask("Key has changed - this will create a new entry. "+"Do you want to retain the old entry as well? (if "+"you answer 'No', it will be removed",function(value){if(value===false){isc.Offline.remove(form.getOldValue("key"))}
+if(value!=null){isc.Offline.put(form.getValue("key"),form.getValue("value"));isc.Offline.storageEditorWindow.hide();isc.Offline.refreshStorageInfo()}})}else{isc.Offline.put(form.getValue("key"),form.getValue("value"));isc.Offline.storageEditorWindow.hide();isc.Offline.refreshStorageInfo()}}}]});isc.Offline.storageEditorWindow=isc.Window.create({bodyProperties:{margin:5},title:"Edit Offline Storage Entry",isModal:true,autoCenter:true,height:280,width:480,items:[isc.Offline.storageEditor]})}},refreshStorageInfo:function(){this.metricsDF.editRecord(isc.Offline.getStorageMetrics());var dataObj=isc.Offline.getCacheContents();var data=[];for(var key in dataObj){data.add({key:key,value:dataObj[key]})}
+this.storageLG.setData(data)}};var UserDataPersistence={isInitialized:false,poolSize:10,keyIndexKey:"keyIndex",reverseKeyIndexKey:"reverseKeyIndex",init:function(){this.userDataSpan=[];for(var i=0;i<this.poolSize;i++){this.userDataSpan[i]=document.createElement('span');this.userDataSpan[i].ID='isc_userData_'+i;this.userDataSpan[i].style.behavior='url(#default#userdata)';document.body.appendChild(this.userDataSpan[i]);this.userDataSpan[i].load("isc_userData_"+i)}
+this.keyIndexStore=document.createElement('span');this.keyIndexStore.ID='isc_userData_keyIndex';this.keyIndexStore.style.behavior='url(#default#userdata)';document.body.appendChild(this.keyIndexStore);this.keyIndexStore.load("isc_userData_keyIndex");this.keyIndex=this.getKeyIndexFromStore();this.reverseKeyIndex=this.getReverseKeyIndexFromStore();if(!this.keyIndex){this.keyIndex={};this.reverseKeyIndex={}}else if(!this.reverseKeyIndex)this.buildReverseKeyIndex();this.buildNextAttributeInfo();this.isInitialized=true},clearCacheNatively:function(){for(var i=0;i<this.poolSize;i++){var attrs=this.userDataSpan[i].xmlDocument.firstChild.attributes;while(attrs.length>0){this.userDataSpan[i].removeAttribute(attrs[0].name)}}
+this.keyIndex={};this.reverseKeyIndex={};this.saveKeyIndex()},getNativeStoredValuesCount:function(){var count=0;for(var i=0;i<this.poolSize;i++){count+=this.userDataSpan[i].xmlDocument.firstChild.attributes.length}
+return count},getKeyForNativeIndex:function(index){var iCounter=0;for(var i=0;i<this.poolSize;i++){if(iCounter+this.userDataSpan[i].xmlDocument.firstChild.attributes.length>index){var offsetIndex=index-iCounter;var attrName=this.userDataSpan[i].xmlDocument.firstChild.attributes[offsetIndex].name,attrNum=attrName.substring(1),dsKey=this.getKeyIndexValue(i,attrNum);return this.getUserKey(dsKey)}}},getKeyIndexValue:function(index,attrName){var attrNum=attrName.substring(1);if(index==0){return"00000".substring(attrNum.length)+attrNum}
+return index*10000+(1*attrNum)},getUserKey:function(userKey){return this.reverseKeyIndex[userKey]},getDataStoreKey:function(key){return this.keyIndex[key]},$70p:function(dataStore,attr){return this.userDataSpan[dataStore].getAttribute(attr)},getValue:function(userKey){var key=this.getDataStoreKey(userKey),undef;if(key===undef)return null;var dataStore=(""+key).substring(0,1),attr="v"+((""+key).substring(1)*1);return this.$70p(dataStore,attr)},putValue:function(userKey,value){var key=this.getDataStoreKey(userKey);if(key){var dataStore=(""+key).substring(0,1),attr="v"+((""+key).substring(1)*1),savedValue=this.$70p(dataStore,attr)}else{var dataStore=this.getDataStoreForNewItem(),attr=this.getNextAttributeName(dataStore)}
+this.userDataSpan[dataStore].setAttribute(attr,value);try{this.userDataSpan[dataStore].save("isc_userData_"+dataStore);this.addToKeyIndex(userKey,dataStore,attr)}catch(e){if(isc.Offline.isStorageException(e)){if(savedValue){this.userDataSpan[dataStore].setAttribute(attr,savedValue)}else{this.userDataSpan[dataStore].removeAttribute(attr);this.removeFromKeyIndex(userKey)}}
+throw e}},removeValue:function(userKey){var key=this.getDataStoreKey(userKey),undef;if(key===undef){Offline.logDebug("userData: in removeValue, no value for key '"+userKey+"' was found");return}
+var dataStore=(""+key).substring(0,1),attr="v"+((""+key).substring(1)*1);this.userDataSpan[dataStore].removeAttribute(attr);this.userDataSpan[dataStore].save("isc_userData_"+dataStore);this.removeFromKeyIndex(userKey);this.unusedAttributeNumbers[dataStore].push(attr.substring(1)*1)},getDataStoreForNewItem:function(){var undef;if(this.nextDataStoreToUse===undef){this.nextDataStoreToUse=Math.floor(Math.random()*this.poolSize)}
+var rtnValue=this.nextDataStoreToUse++;if(this.nextDataStoreToUse>=this.poolSize)this.nextDataStoreToUse=0;return rtnValue},buildNextAttributeInfo:function(){this.nextAttributeNumber=[];this.unusedAttributeNumbers=[];for(var i=0;i<this.poolSize;i++){this.unusedAttributeNumbers[i]=[];var attrs=this.userDataSpan[i].xmlDocument.firstChild.attributes;var work=[];for(var j=0;j<attrs.length;j++){var num=attrs[j].name.substring(1)*1;if(!isNaN(num))work.add(attrs[j].name.substring(1)*1)}
+if(work.sort)work.sort();else this.sort(work);var counter=0;for(j=0;j<work.length;j++){if(work[j]==counter){counter++;continue}
+while(work[j]!=counter&&counter<=9999){this.unusedAttributeNumbers[i].push(counter++)}
+counter++}
+this.nextAttributeNumber[i]=counter}},sort:function(array){for(var i=0;i<array.length;i++){var swapped=false;for(var j=1;j<array.length-i;j++){if(array[j]<array[j-1]){var temp=array[j];array[j]=array[j-1];array[j-1]=temp;swapped=true}}
+if(!swapped)break}},getNextAttributeName:function(dataStore){if(this.unusedAttributeNumbers[dataStore]&&this.unusedAttributeNumbers[dataStore].length>0)
+{return"v"+this.unusedAttributeNumbers[dataStore].shift()}
+if(this.nextAttributeNumber[dataStore]==null){this.nextAttributeNumber[dataStore]=1}
+return"v"+this.nextAttributeNumber[dataStore]++},addToKeyIndex:function(userKey,dataStore,attr){var keyIndexValue=this.getKeyIndexValue(dataStore,attr);this.keyIndex[userKey]=keyIndexValue;this.reverseKeyIndex[keyIndexValue]=userKey;this.saveKeyIndex()},removeFromKeyIndex:function(userKey){var keyIndexValue=this.keyIndex[userKey];delete this.keyIndex[userKey];delete this.reverseKeyIndex[keyIndexValue];this.saveKeyIndex()},saveKeyIndex:function(){this.keyIndexStore.setAttribute(this.keyIndexKey,Offline.serialize(this.keyIndex));this.keyIndexStore.setAttribute(this.reverseKeyIndexKey,Offline.serialize(this.reverseKeyIndex));this.keyIndexStore.save("isc_userData_keyIndex")},buildReverseKeyIndex:function(){this.reverseKeyIndex={};for(var key in this.keyIndex){this.reverseKeyIndex[keyIndex[key]]=key}},getKeyIndexFromStore:function(){var kiText=this.keyIndexStore.getAttribute(this.keyIndexKey);if(kiText){eval("var ki = "+kiText)}else{var ki=null}
+return ki},getReverseKeyIndexFromStore:function(){var kiText=this.keyIndexStore.getAttribute(this.reverseKeyIndexKey);if(kiText){eval("var ki = "+kiText)}else{var ki=null}
+return ki}};if(window.isc){isc.defineClass("Offline").addClassProperties(Offline);isc.defineClass("UserDataPersistence").addClassProperties(UserDataPersistence)}else{isc.addProperties=function(objOne,objTwo){for(var propName in objTwo)objOne[propName]=objTwo[propName]}
+isc.addProperties(isc.Offline,{serialize:function(object){return isc.OfflineJSONEncoder.encode(object)},logDebug:function(message){if(console)console.log(message)},logError:function(message){if(console){console.log(message)}else{alert(message)}},echoLeaf:function(obj){var output="",undefined;if(obj===undefined)return"undef";try{if(typeof obj=="Array"){output+="Array["+obj.length+"]"}else if(typeof obj=="Date"){output+="Date("+obj.toShortDate()+")"}else if(typeof obj=="Function"){output+=isc.Func.getName(obj,true)+"()"}else{switch(typeof obj){case"string":if(obj.length<=40){output+='"'+obj+'"';break}
+output+='"'+obj.substring(0,40)+'..."['+obj.length+']';output=output.replaceAll("\n","\\n").replaceAll("\r","\\r");break;case"object":if(obj==null){output+="null";break}
+if(obj.tagName!=null){output+="["+obj.tagName+"Element]";break}
+var toString=""+obj;if(toString!=""&&toString!="[object Object]"&&toString!="[object]")
+{output+=toString;break}
+output+="Obj";break;default:output+=""+obj}}
+return output}catch(e){var message="[Error in echoLeaf: "+e+"]";output+=message;return output}},echo:function(object){return this.serialize(object)}});isc.OfflineJSONEncoder={$zm:function(objRefs,object,path){objRefs.obj.add(object);objRefs.path.add(path)},$42b:function(object){var treeId=object["$42c"];if(treeId!=null){var theTree=window[treeId];if(theTree&&theTree.parentProperty&&object[theTree.parentProperty]){object=theTree.getCleanNodeData(object)}}
+return object},$zl:function(objRefs,object){var rowNum=objRefs.obj.indexOf(object);if(rowNum==-1)return null;return objRefs.path[rowNum]},$zp:function(objPath,newIdentifier){if(isc.isA.Number(newIdentifier)){return objPath+"["+newIdentifier+"]"}else if(!isc.Comm.$zk.test(newIdentifier)){return objPath+'["'+newIdentifier+'"]'}else{return objPath+"."+newIdentifier}},encode:function(object){this.objRefs={obj:[],path:[]};var retVal=this.$eu(object,this.prettyPrint?"":null,null);this.objRefs=null;return retVal},dateFormat:"xmlSchema",encodeDate:function(date){if(this.dateFormat=="dateConstructor"){return"new Date("+date.getTime()+")"}else{return'"'+this.toSchemaDate(date)+'"'}},toSchemaDate:function(date){var dd=""+date.getDate(),mm=""+(date.getMonth()+1),yyyy=""+(date.getyear()+1900),hh=""+date.getHours(),mi=""+date.getMinutes(),ss=""+date.getSeconds();dd=dd.length==1?"0"+dd:dd;mm=mm.length==1?"0"+mm:mm;hh=hh.length==1?"0"+hh:ff;mi=mi.length==1?"0"+mi:mi;ss=ss.length==1?"0"+ss:ss;return yyyy+"-"+mm+"-"+dd+"T"+hh+":"+mi+":"+ss},strictQuoting:true,circularReferenceMode:"path",circularReferenceMarker:"$$BACKREF$$",prettyPrint:false,$eu:function(object,prefix,objPath){if(!objPath){if(object&&object.getID)objPath=object.getID();else objPath=""}
+if(object==null)return null;if(this.isAString(object))return this.asSource(object);if(this.isAFunction(object))return null;if(this.isANumber(object)||this.isASpecialNumber(object))return object;if(this.isABoolean(object))return object;if(this.isADate(object))return this.encodeDate(object);if(this.isAnInstance(object))return null;var prevPath=this.$zl(this.objRefs,object);if(prevPath!=null&&objPath.contains(prevPath)){var nextChar=objPath.substring(prevPath.length,prevPath.length+1);if(nextChar=="."||nextChar=="["||nextChar=="]"){var mode=this.circularReferenceMode;if(mode=="marker"){return"'"+this.circularReferenceMarker+"'"}else if(mode=="path"){return"'"+this.circularReferenceMarker+":"+prevPath+"'"}else{return null}}}
+if(this.isAClassObject(object))return null;if(object==window)return null;this.$zm(this.objRefs,object,objPath);if(this.isAFunction(object.$eu)){return object.$eu(prefix,this.objRefs,objPath)}
+if(this.isAnArray(object)){return this.$zn(object,objPath,this.objRefs,prefix)}
+var data;if(object.getSerializeableFields){data=object.getSerializeableFields([],[])}else{data=object}
+return this.$zo(data,objPath,this.objRefs,prefix)},$zn:function(object,objPath,objRefs,prefix){var output="[";for(var i=0,len=object.length;i<len;i++){var value=object[i];if(prefix!=null)output+="\r"+prefix;var objPath=this.$zp(objPath,i);var serializedValue=this.$eu(value,(prefix!=null?prefix:null),objPath);output+=serializedValue+",";if(prefix!=null)output+=" "}
+var commaChar=output.lastIndexOf(",");if(commaChar>-1)output=output.substring(0,commaChar);if(prefix!=null)output+="\r"+prefix;output+="]";return output},$zo:function(object,objPath,objRefs,prefix){var output="{",undef;object=this.$42b(object);try{for(var key in object)break}catch(e){return null}
+for(var key in object){if(key==null)continue;if(key=="xmlHttpRequest")continue;if(key.substring(0,1)=="_"||key.substring(0,1)=="$")continue;var value=object[key];if(this.isAFunction(value))continue;if(this.isAnInstance(value))continue;var keyStr=key.toString();keyStr='"'+keyStr+'"';var objPath=this.$zp(objPath,key);var serializedValue;if(key!="__ref"){serializedValue=this.$eu(value,(prefix!=null?prefix:null),objPath)}
+if(prefix!=null)output+="\r"+prefix;output+=keyStr+":"+serializedValue+",";if(prefix!=null)output.append(" ")}
+var commaChar=output.lastIndexOf(",");if(commaChar>-1)output=output.substring(0,commaChar);if(prefix!=null)output+="\r"+prefix;output+="}";return output},isAString:function(object){if(object==null)return false;if(typeof object==this.$a7)return false;if(object.constructor&&object.constructor.$k!=null){return object.constructor.$k==4}
+if(object.Class!=null&&object.Class==this.$73x)return true;return typeof object=="string"},isAnArray:function(object){if(object==null)return false;if(typeof object==this.$a7)return false;if(object.constructor&&object.constructor.$k!=null){return object.constructor.$k==2}
+if(isc.Browser.isSafari)return""+object.splice=="(Internal function)";return""+object.constructor==""+Array},isAFunction:function(object){if(object==null)return false;if(isc.Browser.isIE&&typeof object==this.$a7)return true;var cons=object.constructor;if(cons&&cons.$k!=null){if(cons.$k!=1)return false;if(cons===Function)return true}
+return isc.Browser.isIE?(isc.emptyString+object.constructor==Function.toString()):(typeof object==this.$a7)},isANumber:function(object){if(object==null)return false;if(object.constructor&&object.constructor.$k!=null){if(object.constructor.$k!=5)return false}else{if(typeof object!="number")return false}
+return!isNaN(object)&&object!=Number.POSITIVE_INFINITY&&object!=Number.NEGATIVE_INFINITY},isASpecialNumber:function(object){if(object==null)return false;if(object.constructor&&object.constructor.$k!=null){if(object.constructor.$k!=5)return false}else{if(typeof object!="number")return false}
+return(isNaN(object)||object==Number.POSITIVE_INFINITY||object==Number.NEGATIVE_INFINITY)},isABoolean:function(object){if(object==null)return false;if(object.constructor&&object.constructor.$k!=null){return object.constructor.$k==6}
+return typeof object=="boolean"},isADate:function(object){if(object==null)return false;if(object.constructor&&object.constructor.$k!=null){return object.constructor.$k==3}
+return(""+object.constructor)==(""+Date)&&object.getDate&&isc.isA.Number(object.getDate())},isAnXMLNode:function(object){if(object==null)return false;if(isc.Browser.isIE){return object.specified!=null&&object.parsed!=null&&object.nodeType!=null&&object.hasChildNodes!=null}
+var doc=object.ownerDocument;if(doc==null)return false;return doc.contentType==this.$bm},isAnInstance:function(object){return(object!=null&&object.$76y!=null)},isAClassObject:function(object){return(object!=null&&object.$bp==true)},asSource:function(string,singleQuote){if(!this.isAString(string))string=""+string;var quoteRegex=singleQuote?String.$ez:String.$e0,outerQuote=singleQuote?"'":'"';return outerQuote+string.replace(/\\/g,"\\\\").replace(quoteRegex,'\\'+outerQuote).replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+outerQuote}}}})();isc.defineClass("RulesEngine");isc.A=isc.RulesEngine.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_RulesEngine_init(){this.Super("init",arguments);isc.ClassFactory.addGlobalID(this);if(this.members==null)this.members=[];else{for(var i=0;i<this.members.length;i++){var _2=this.members[i];if(isc.isA.String(_2)){this.members[i]=_2=window[_2]}
+this.$889(_2,true)}}}
+,isc.A.addMember=function isc_RulesEngine_addMember(_1){if(!this.members.contains(_1)){this.members.add(_1);this.$889(_1)}}
+,isc.A.$889=function isc_RulesEngine__addMember(_1){if(_1.rulesEngine!=this){if(_1.rulesEngine!=null){_1.rulesEngine.removeMember(_1)}
+_1.rulesEngine=this}}
+,isc.A.processEditStart=function isc_RulesEngine_processEditStart(_1){this.$89b("editStart",_1)}
+,isc.A.processEditorEnter=function isc_RulesEngine_processEditorEnter(_1,_2){this.$89c("editorEnter",_1,_2)}
+,isc.A.processChanged=function isc_RulesEngine_processChanged(_1,_2){this.$89c("changed",_1,_2)}
+,isc.A.processEditorExit=function isc_RulesEngine_processEditorExit(_1,_2){this.$89c("editorExit",_1,_2)}
+,isc.A.processSubmit=function isc_RulesEngine_processSubmit(_1){return this.$89b("submit",_1)}
+,isc.A.$89b=function isc_RulesEngine__processComponentTriggerEvent(_1,_2){var _3=this.rulesData;if(!_3||_3.length==0)return;var _4=[];for(var i=0;i<_3.length;i++){if(_3[i].triggerEvent==_1){_4[_4.length]=_3[i]}}
+if(_4.length>0)return this.processRules(_4);return null}
+,isc.A.$89c=function isc_RulesEngine__processFieldTriggerEvent(_1,_2,_3){var _4=this.rulesData;if(!_4||_4.length==0)return;var _5=[];for(var i=0;i<_4.length;i++){if(_4[i].triggerEvent==_1){var _7;if(_4[i].type=="populate"){_7=[];for(var _8 in _4[i].formulaVars){_7.add(_4[i].formulaVars[_8])}}else{_7=_4[i].dependentFields||_4[i].fieldName;if(!isc.isAn.Array(_7))_7=_7.split(",")}
+for(var j=0;j<_7.length;j++){var _10=_7[j].indexOf("."),_11=_7[j].substring(0,_10),_12=_7[j].substring(_10+1);if(_2.getDataSource()==isc.DataSource.get(_11)&&_12==_3.name)
+{_5.add(_4[i]);break}}}}
+if(_5.length>0)return this.processRules(_5);return null}
+,isc.A.getValues=function isc_RulesEngine_getValues(){var _1={};for(var i=0;i<this.members.length;i++){var _3=this.members[i];var _4=_3.getValues(),_5=_3.getDataSource(),_6=_5?_5.getID():null;if(_6!=null){_1[_6]=isc.addProperties(_1[_6]||{},_4)}else{_1.addProperties(_4)}}
+return _1}
+,isc.A.processRules=function isc_RulesEngine_processRules(_1){var _2=this.getValues(),_3=null;for(var i=0;i<_1.length;i++){var _5=_1[i],_6=_5.fieldName;if(isc.isA.String(_6)){_6=_6.split(",")}
+for(var j=0;j<_6.length;j++){var _8=_6[j],_9=_8.substring(0,_8.indexOf(".")),_10=_9?isc.DataSource.get(_9):null,_11=_8.substring(_9.length+1),_12=isc.DataSource.getPathValue(_2,_8),_13=this.getComponentInfo(_8),_14=_13?_13.component:null,_15=_13?_13.item:(_10?_10.getField(_11):null);;if(_15==null){this.logWarn("RulesEngine contains rule definition with specified fieldName:"+_8+" - unable to find associated "+(_14==null?"member component":"field")+" for this rule.");continue}
+if(_5.applyWhen){var _16=_5.applyWhen;if(_10==null){isc.logWarn("Conditional rule criteria ignored because form has no dataSource")}else{var _17=_10.applyFilter([_2],_16);if(_17.length==0){isc.Validator.performAction(null,_15,_5,_2,_14);continue}}}
+var _18=(isc.Validator.processValidator(_15,_5,_12,null,_2)==true);isc.Validator.performAction(_18,_15,_5,_2,_14);if(!_18){_3=false;_14.addFieldErrors(_15.name,isc.Validator.getErrorMessage(_5),true)}else{if(_3==null)_3=true}}}
+return _3}
+,isc.A.getComponentInfo=function isc_RulesEngine_getComponentInfo(_1){var _2,_3=_1.indexOf("."),_4;if(_3!=-1){_4=isc.DataSource.get(_1.substring(0,_3));_1=_1.substring(_3+1)}
+for(var i=0;i<this.members.length;i++){if(this.members[i].getDataSource()==_4){_2=this.members[i].getItem(_1);if(_2!=null){return{component:this.members[i],item:_2}}}}}
+,isc.A.removeMember=function isc_RulesEngine_removeMember(_1){if(this.members.contains(_1)){this.$89a(_1)}}
+,isc.A.$89a=function isc_RulesEngine__removeMember(_1){this.members.remove(_1);_1.rulesEngine=null}
+,isc.A.setRulesData=function isc_RulesEngine_setRulesData(_1){this.rulesData=_1}
+);isc.B._maxIndex=isc.C+16;isc.A=isc.Canvas;isc.A.resizeThumbConstructor=isc.Canvas;isc.A.resizeThumbDefaults={width:8,height:8,overflow:"hidden",styleName:"resizeThumb",canDrag:true,canDragResize:true,getEventEdge:function(){return this.edge},autoDraw:false};isc.A=isc.Canvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$40f=function isc_c_Canvas__makeResizeThumbs(){var _1=isc.Canvas.getInstanceProperty("edgeCursorMap"),_2={},_3=isc.ClassFactory.getClass(this.resizeThumbConstructor);for(var _4 in _1){_2[_4]=_3.create({ID:"isc_resizeThumb_"+_4,edge:_4},this.resizeThumbDefaults,this.resizeThumbProperties)}
+isc.Canvas.$40g=_2}
+,isc.A.showResizeThumbs=function isc_c_Canvas_showResizeThumbs(_1){if(!_1)return;if(!isc.Canvas.$40g)isc.Canvas.$40f();var _2=isc.Canvas.resizeThumbDefaults.width,_3=isc.Canvas.$40g;var _4=_1.getPageRect(),_5=_4[0],_6=_4[1],_7=_4[2],_8=_4[3],_9=Math.floor(_5+(_7/ 2)-(_2/ 2)),_10=Math.floor(_6+(_8/ 2)-(_2/ 2));_3.T.moveTo(_9,_6-_2);_3.B.moveTo(_9,_6+_8);_3.L.moveTo(_5-_2,_10);_3.R.moveTo(_5+_7,_10);_3.TL.moveTo(_5-_2,_6-_2);_3.TR.moveTo(_5+_7,_6-_2);_3.BL.moveTo(_5-_2,_6+_8);_3.BR.moveTo(_5+_7,_6+_8);for(var _11 in _3){var _12=_3[_11];_12.dragTarget=_1;_12.bringToFront();_12.show()}
+this.$rl=_1}
+,isc.A.hideResizeThumbs=function isc_c_Canvas_hideResizeThumbs(){var _1=this.$40g;for(var _2 in _1){_1[_2].hide()}
+this.$rl=null}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.editMaskDefaults={draw:function(){this.Super("draw",arguments);this.observe(this.masterElement,"setZIndex","observer.moveAbove(observed)");isc.Canvas.showResizeThumbs(this);this.observe(this.masterElement,"setPrompt","observer.setPrompt(observed.prompt)");return this},parentVisibilityChanged:function(){this.Super("parentVisibilityChanged",arguments);if(isc.Canvas.$rl==this)isc.Canvas.hideResizeThumbs()},click:function(){isc.Canvas.showResizeThumbs(this);return isc.EH.STOP_BUBBLING},bringToFront:function(){},mouseDown:function(){this.Super("mouseDown",arguments);return isc.EH.STOP_BUBBLING},mouseUp:function(){this.Super("mouseUp",arguments);return isc.EH.STOP_BUBBLING},doubleClick:function(){this.$jr.bringToFront();return this.click()},canDrag:true,canDragReposition:true,setDragTracker:function(){return isc.EH.STOP_BUBBLING},moved:function(){this.Super("moved",arguments);var _1=this.masterElement;if(_1){var _2=this.getOffsetLeft()-_1.getLeft();var _3=this.getOffsetTop()-_1.getTop();this.$ns=false;_1.moveTo(this.getOffsetLeft(),this.getOffsetTop());this.$ns=true}
+if(isc.Canvas.$rl==this)isc.Canvas.showResizeThumbs(this)},resized:function(){this.Super("resized",arguments);if(this.$40h)return;this.$40h=true;var _1=this.masterElement;if(_1){this.$jo=false;_1.resizeTo(this.getWidth(),this.getHeight());this.$jo=true;_1.redrawIfDirty();this.resizeTo(_1.getVisibleWidth(),_1.getVisibleHeight())}
+isc.Canvas.showResizeThumbs(this);this.$40h=false},showContextMenu:function(){if(!this.editContext)return;var _1=this.masterElement,_2;if(this.editContext.selectedComponents.length>0){_2=(_1.editMultiMenuItems||[]).concat(this.multiSelectionMenuItems)}else{_2=(_1.editMenuItems||[]).concat(this.standardMenuItems)}
+if(!this.contextMenu)this.contextMenu=this.getMenuConstructor().create({});this.contextMenu.setData(_2);this.contextMenu.showContextMenu(_1);return false},standardMenuItems:[{title:"Remove",click:"target.destroy()"},{title:"Bring to Front",click:"target.bringToFront()"},{title:"Send to Back",click:"target.sendToBack()"}],multiSelectionMenuItems:[{title:"Remove Selected Items",click:"target.editContext.removeSelection(target)"}]};isc.A.useEditMask=true;isc.A.dropMargin=15;isc.B.push(isc.A.addedToEditContext=function isc_Canvas_addedToEditContext(_1,_2,_3,_4){}
+,isc.A.wrapChildNode=function isc_Canvas_wrapChildNode(_1,_2,_3,_4){return _3}
+,isc.A.setEditMode=function isc_Canvas_setEditMode(_1,_2,_3){if(_1==null)_1=true;if(this.editingOn==_1)return;this.editingOn=_1;if(this.editingOn){this.editContext=_2}else{this.hideEditMask()}
+this.editNode=_3;if(this.editingOn){this.saveToOriginalValues(["click","doubleClick","willAcceptDrop","clearNoDropIndicator","setNoDropCursor","canAcceptDrop","canDropComponents","drop","dropMove","dropOver","setDataSource"]);this.setProperties({click:this.editModeClick,doubleClick:this.editModeDoubleClick,willAcceptDrop:this.editModeWillAcceptDrop,clearNoDropIndicator:this.editModeClearNoDropIndicator,setNoDropIndicator:this.editModeSetNoDropIndicator,canAcceptDrop:true,canDropComponents:true,drop:this.editModeDrop,dropMove:this.editModeDropMove,dropOver:this.editModeDropOver,baseSetDataSource:this.setDataSource,setDataSource:this.editModeSetDataSource})}else{this.restoreFromOriginalValues(["click","doubleClick","willAcceptDrop","clearNoDropIndicator","setNoDropCursor","canAcceptDrop","canDropComponents","drop","dropMove","dropOver","setDataSource"])}
+this.markForRedraw()}
+,isc.A.showEditMask=function isc_Canvas_showEditMask(){var _1=this.getID()+":<br>"+this.src;if(!this.$40i){var _2={};if(isc.SVG&&isc.isA.SVG(this)&&isc.Browser.isIE){isc.addProperties(_2,{backgroundColor:"gray",mouseOut:function(){this.$jr.Super("$mc")},contents:isc.Canvas.spacerHTML(10000,10000,_1)})}
+var _3=isc.addProperties({},this.editMaskDefaults,this.editMaskProperties,{editContext:this.editContext||this.parentElement,keepInParentRect:this.keepInParentRect},_2);this.$40i=isc.EH.makeEventMask(this,_3)}
+this.$40i.show();if(isc.SVG&&isc.isA.SVG(this)){if(isc.Browser.isIE)this.showNativeMask();else{this.setBackgroundColor("gray");this.setContents(_1)}}}
+,isc.A.hideEditMask=function isc_Canvas_hideEditMask(){if(this.$40i)this.$40i.hide()}
+,isc.A.editModeClick=function isc_Canvas_editModeClick(){if(this.editNode){isc.EditContext.selectCanvasOrFormItem(this,true);return isc.EH.STOP_BUBBLING}}
+,isc.A.editModeDoubleClick=function isc_Canvas_editModeDoubleClick(){}
+,isc.A.editModeWillAcceptDrop=function isc_Canvas_editModeWillAcceptDrop(_1){this.logInfo("editModeWillAcceptDrop for "+this.ID,"editModeDragTarget");var _2=this.ns.EH.dragTarget.getDragData(),_3,_4=true;if(_2==null||(isc.isAn.Array(_2))&&_2.length==0){_4=false;this.logInfo("dragData is null - using the dragTarget itself","editModeDragTarget");_2=this.ns.EH.dragTarget;if(isc.isA.FormItemProxyCanvas(_2)){this.logInfo("The dragTarget is a FormItemProxyCanvas for "+_2.formItem,"editModeDragTarget");_2=_2.formItem}
+_3=_2._constructor||_2.Class}else{if(isc.isAn.Array(_2))_2=_2[0];_3=_2.className||_2.type}
+this.logInfo("Using dragType "+_3,"editModeDragTarget");if(!this.canAdd(_3)){this.logInfo(this.ID+" does not accept drop of type "+_3,"editModeDragTarget");var _5=this.parentElement;while(_5&&!_5.editorRoot){if(_5.editingOn){var _6=_5.editModeWillAcceptDrop();if(!_6){this.logInfo("No ancestor accepts drop","editModeDragTarget");if(_1!=false){if(_4)isc.EditContext.hideDragHandle();isc.SelectionOutline.hideOutline();this.setNoDropIndicator()}
+return false}
+this.logInfo("An ancestor accepts drop","editModeDragTarget");return true}
+_5=_5.parentElement}
+this.logInfo(this.ID+" has no parentElement in editMode","editModeDragTarget");if(_1!=false){if(_4)isc.EditContext.hideDragHandle();isc.SelectionOutline.hideOutline();this.setNoDropIndicator()}
+return false}
+this.logInfo(this.ID+" is accepting the "+_3+" drop","editModeDragTarget");var _7=this.findEditNode(_3);if(_7){if(_1!=false){this.logInfo(this.ID+": selecting editNode object "+_7.ID);if(_4)isc.EditContext.hideDragHandle();isc.SelectionOutline.select(_7,false);_7.clearNoDropIndicator()}
+return true}else{this.logInfo("findEditNode() returned null for "+this.ID,"editModeDragTarget")}
+if(_1!=false){this.logInfo("In editModeWillAcceptDrop, '"+this.ID+"' was willing to accept a '"+_3+"' drop but we could not find an ancestor with an editNode")}}
+,isc.A.findEditNode=function isc_Canvas_findEditNode(_1){if(!this.editNode){this.logInfo("Skipping '"+this+"' - has no editNode","editModeDragTarget");if(this.parentElement&&this.parentElement.findEditNode){return this.parentElement.findEditNode(_1)}else{return null}}
+return this}
+,isc.A.canAdd=function isc_Canvas_canAdd(_1){if(this.getObjectField(_1)==null){var _2=isc.ClassFactory.getClass(_1);if(isc.isA.FormItem(_2)){return(this.getObjectField("Canvas")!=null)}else{return false}}else{return true}}
+,isc.A.editModeClearNoDropIndicator=function isc_Canvas_editModeClearNoDropIndicator(_1){if(this.$uh)delete this.$uh;this.$k2()}
+,isc.A.editModeSetNoDropIndicator=function isc_Canvas_editModeSetNoDropIndicator(){this.$uh=true;this.$v8(this.noDropCursor)}
+,isc.A.shouldPassDropThrough=function isc_Canvas_shouldPassDropThrough(){var _1=isc.EH.dragTarget,_2,_3;if(!_1.isA("Palette")){_3=_1.isA("FormItemProxyCanvas")?_1.formItem.Class:_1.Class}else{_2=_1.getDragData();if(isc.isAn.Array(_2))_2=_2[0];_3=_2.className||_2.type}
+this.logInfo("Dropping a "+_3,"formItemDragDrop");if(isc.isA.TabBar(this)){if(_3!="Tab"){return true}
+return false}
+if(!this.canAdd(_3)){this.logInfo("This canvas cannot accept a drop of a "+_3,"formItemDragDrop");return true}
+if(this.parentElement&&!this.parentElement.editModeWillAcceptDrop(false)){this.logInfo(this.ID+" is not passing drop through - no ancestor is willing to "+"accept the drop","editModeDragTarget");return false}
+var x=isc.EH.getX(),y=isc.EH.getY(),_6=this.getPageRect(),_7={left:_6[0],top:_6[1],right:_6[0]+_6[2],bottom:_6[1]+_6[3]}
+if(!this.orientation||this.orientation=="vertical"){if(x<_7.left+this.dropMargin||x>_7.right-this.dropMargin){this.logInfo("Close to right or left edge - passing drop through to parent for "+this.ID,"editModeDragTarget");return true}}
+if(!this.orientation||this.orientation=="horizontal"){if(y<_7.top+this.dropMargin||y>_7.bottom-this.dropMargin){this.logInfo("Close to top or bottom edge - passing drop through to parent for "+this.ID,"editModeDragTarget");return true}}
+this.logInfo(this.ID+" is not passing drop through","editModeDragTarget");return false}
+,isc.A.editModeDrop=function isc_Canvas_editModeDrop(){if(this.shouldPassDropThrough()){return}
+var _1=isc.EH.dragTarget,_2,_3;if(!_1.isA("Palette")){if(_1.isA("FormItemProxyCanvas")){_1=_1.formItem}
+_3=_1._constructor||_1.Class}else{_2=_1.transferDragData();if(isc.isAn.Array(_2))_2=_2[0];_2.dropped=true;_3=_2.className||_2.type}
+if(!_1.isA("Palette")){if(isc.EditContext.$70r)isc.EditContext.$70r.hide();if(_1==this)return;var _4=this.editContext.data,_5=_4.getParent(_1.editNode);this.editContext.removeComponent(_1.editNode);var _6;if(_1.isA("FormItem")){if(_1.isA("CanvasItem")){_6=this.editContext.addNode(_1.canvas.editNode,this.editNode)}else{_6=this.editContext.addWithWrapper(_1.editNode,this.editNode)}}else{_6=this.editContext.addNode(_1.editNode,this.editNode)}
+if(_6&&_6.liveObject){isc.EditContext.selectCanvasOrFormItem(_6.liveObject,true)}}else{if(_2.loadData&&!_2.isLoaded){var _7=this;_2.loadData(_2,function(_8){_8=_8||_2;_8.isLoaded=true;_7.completeItemDrop(_8)
+_8.dropped=_2.dropped});return isc.EH.STOP_BUBBLING}
+this.completeItemDrop(_2);return isc.EH.STOP_BUBBLING}}
+,isc.A.completeItemDrop=function isc_Canvas_completeItemDrop(_1){if(!this.editContext)return;var _2=_1.className||_1.type;var _3=isc.ClassFactory.getClass(_2);if(_3&&isc.isA.FormItem(_3)){this.editContext.addWithWrapper(_1,this.editNode)}else{this.editContext.addComponent(_1,this.editNode)}}
+,isc.A.editModeDropMove=function isc_Canvas_editModeDropMove(){if(!this.editModeWillAcceptDrop())return false;if(!this.shouldPassDropThrough()){this.Super("dropMove",arguments);if(this.parentElement&&this.parentElement.hideDropLine){this.parentElement.hideDropLine();if(isc.isA.FormItem(this.parentElement)){this.parentElement.form.hideDragLine()}}
+return isc.EH.STOP_BUBBLING}}
+,isc.A.editModeDropOver=function isc_Canvas_editModeDropOver(){if(!this.editModeWillAcceptDrop())return false;if(!this.shouldPassDropThrough()){this.Super("dropOver",arguments);if(this.parentElement&&this.parentElement.hideDropLine){this.parentElement.hideDropLine();if(isc.isA.FormItem(this.parentElement)){this.parentElement.form.hideDragLine()}}
+return isc.EH.STOP_BUBBLING}}
+,isc.A.editModeSetDataSource=function isc_Canvas_editModeSetDataSource(_1,_2,_3){if(isc.$75u){this.baseSetDataSource(_1,_2);return}
+if(_1==null)return;if(_1==this.dataSource&&!_3)return;var _2=this.getFields(),_4=[],_5=[];if(_2){for(var i=0;i<_2.length;i++){var _7=_2[i];if(_7.editNode&&_7.editNode.autoGen&&!this.fieldEdited(_7)){_5.add(_7)}else{_4.add(_7)}}
+this.setFields(_4);for(var i=0;i<_5.length;i++){this.editContext.removeComponent(_5[i].editNode,true)}}
+var _8,_2=_1.fields;if(_2&&isc.getKeys(_2).length==1&&_1.fieldIsComplexType(_2[isc.firstKey(_2)].name))
+{_8=_1.getSchema(_2[isc.firstKey(_2)].type)}else{_8=_1}
+var _9=_8.getFields();_2={};for(var _10 in _9){var _7=_9[_10];if(!this.shouldUseField(_7,_1))continue;_2[_10]=_9[_10];_2[_10]=isc.addProperties({},_9[_10])}
+_4.addList(isc.getValues(_2));this.baseSetDataSource(_1,_4);for(var _10 in _2){var _7=_2[_10];var _11=this.getFieldEditNode(_7,_8);var _12=this.editContext.makeEditNode(_11);this.editContext.addNode(_12,this.editNode,null,null,true)}}
+,isc.A.fieldEdited=function isc_Canvas_fieldEdited(_1){return _1.editNode.$71u}
+,isc.A.getFieldEditNode=function isc_Canvas_getFieldEditNode(_1,_2){var _3=this.Class+"Field";var _4={type:_3,autoGen:true,defaults:{name:_1.name,title:_1.title||_2.getAutoTitle(_1.name)}}
+return _4}
+);isc.B._maxIndex=isc.C+20;isc.A=isc.Class.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getSchema=function isc_Class_getSchema(){return isc.DS.get(this.schemaName||this.Class)}
+,isc.A.getSchemaField=function isc_Class_getSchemaField(_1){return this.getSchema().getField(_1)}
+,isc.A.getObjectField=function isc_Class_getObjectField(_1){var _2=this.$40j;if(isc.isA.Canvas(this)){var _3;if(_2&&_2[_1]!==_3){return _2[_1]}}
+var _4=this.getSchema();if(!_4){this.logWarn("getObjectField: no schema exists for: "+this);return}
+var _5=_4.getObjectField(_1);if(isc.isA.Canvas(this)){if(!_2)this.$40j=_2={};_2[_1]=_5}
+return _5}
+,isc.A.addChildObject=function isc_Class_addChildObject(_1,_2,_3,_4){return this.$40k("add",_1,_2,_3,_4)}
+,isc.A.removeChildObject=function isc_Class_removeChildObject(_1,_2,_3){return this.$40k("remove",_1,_2,_3)}
+,isc.A.$40k=function isc_Class__doVerbToChild(_1,_2,_3,_4,_5){var _6=_5||this.getObjectField(_2);var _7=this.getSchemaField(_6);if(!_7.multiple){var _8={};if(_1=="remove"){_8[_6]=null}else{_8[_6]=_3}
+this.logInfo(_1+"ChildObject calling setProperties for fieldName '"+_6+"'","editing");this.setProperties(_8);return true}
+var _9=this.getFieldMethod(_2,_6,_1);if(_9!=null){this.logInfo("calling "+_9+"("+this.echoLeaf(_3)+(_4!=null?","+_4+")":")"),"editing");this[_9](_3,_4);return true}
+return false}
+,isc.A.getChildObject=function isc_Class_getChildObject(_1,_2,_3){var _4=_3||this.getObjectField(_1),_5=this.getSchemaField(_4);if(_5==null){if(_3){this.logWarn("getChildObject: no such field '"+_3+"' in schema: "+this.getSchema())}else{this.logWarn("getChildObject: schema for Class '"+this.Class+"' does not have a field accepting type: "+_1)}
+return null}
+if(!_5.multiple)return this.getProperty(_4);var _6;if(isc.isA.ListGrid(this)&&_4=="fields"){_6="getSpecifiedField"}else{_6=this.getFieldMethod(_1,_4,"get")}
+if(_6==null)var _6=this.getFieldMethod(_1,_4,"get");if(_6&&this[_6]){this.logInfo("getChildObject calling: "+_6+"('"+_2+"')","editing");return this[_6](_2)}else{this.logInfo("getChildObject calling getArrayItem('"+_2+"',this."+_4+")","editing");return isc.Class.getArrayItem(_2,this[_4])}}
+,isc.A.getFieldMethod=function isc_Class_getFieldMethod(_1,_2,_3){var _4=_3+_1;if(isc.isA.Function(this[_4])&&isc.Func.getArgs(this[_4]).length>0)
+{return _4}
+if(_2.endsWith("s")){_4=_3+_2.slice(0,-1).toInitialCaps();if(isc.isA.Function(this[_4])&&isc.Func.getArgs(this[_4]).length>0)
+{return _4}}}
+,isc.A.getEditableProperties=function isc_Class_getEditableProperties(_1){var _2={},_3;if(!this.editModeOriginalValues)this.editModeOriginalValues={};if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){var _5=isc.isAn.Object(_1[i])?_1[i].name:_1[i];var _6=null;if(this.editModeOriginalValues[_5]===_3){this.logInfo("Field "+_5+" - value ["+this[_5]+"] is "+"coming from live values","editModeOriginalValues");_6=this[_5];if(isc.isA.Function(_6)&&_6.$dw){_6=this[_6.$c1]}}else{this.logInfo("Field "+_5+" - value ["+this.editModeOriginalValues[_5]+"] is coming from "+"original values","editModeOriginalValues");_6=this.editModeOriginalValues[_5]}
+_2[_5]=_6}
+return _2}
+,isc.A.setEditableProperties=function isc_Class_setEditableProperties(_1){var _2;if(!this.editModeOriginalValues)this.editModeOriginalValues={};for(var _3 in _1){if(this.editModeOriginalValues[_3]===_2){this.logInfo("Field "+_3+" - value is going to live values","editModeOriginalValues");this.setProperty(_3,_1[_3])}else{this.logInfo("Field "+_3+" - value is going to original values","editModeOriginalValues");this.editModeOriginalValues[_3]=_1[_3]}}
+this.editablePropertiesUpdated()}
+,isc.A.setChildEditableProperties=function isc_Class_setChildEditableProperties(_1,_2,_3,_4){isc.addProperties(_1,_2)}
+,isc.A.saveToOriginalValues=function isc_Class_saveToOriginalValues(_1){var _2;if(!this.editModeOriginalValues)this.editModeOriginalValues={};for(var i=0;i<_1.length;i++){var _4=isc.isAn.Object(_1[i])?_1[i].name:_1[i];if(this[_4]===_2){this.editModeOriginalValues[_4]=null}else{if(this[_4]&&this[_4].$dw){var _5=isc.$ah+_4;this.editModeOriginalValues[_4]=this[_5]}else{this.editModeOriginalValues[_4]=this[_4]}}}}
+,isc.A.restoreFromOriginalValues=function isc_Class_restoreFromOriginalValues(_1){var _2;if(!this.editModeOriginalValues)this.editModeOriginalValues={};var _3="Retrieving fields from original values:"
+var _4={};for(var i=0;i<_1.length;i++){var _6=isc.isAn.Object(_1[i])?_1[i].name:_1[i];if(this.editModeOriginalValues[_6]!==_2){_4[_6]=this.editModeOriginalValues[_6];delete this.editModeOriginalValues[_6]}else{}}
+this.setProperties(_4)}
+,isc.A.propertyHasBeenEdited=function isc_Class_propertyHasBeenEdited(_1){var _2;if(!this.editModeOriginalValues)return false;if(isc.isAn.Object(_1))_1=_1.name;if(this.editModeOriginalValues[_1]!==_2){if(isc.isA.Function(this.editModeOriginalValues[_1]))return false;if(this.editModeOriginalValues[_1]!=this[_1])return true}
+return false}
+,isc.A.editablePropertiesUpdated=function isc_Class_editablePropertiesUpdated(){if(this.parentElement)this.parentElement.editablePropertiesUpdated()}
+);isc.B._maxIndex=isc.C+15;isc.A=isc.DataSource;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getSchema=function isc_c_DataSource_getSchema(_1){if(isc.isA.Class(_1))return _1.getSchema();return isc.DS.get(_1.schemaName||_1._constructor||_1.Class)}
+,isc.A.getObjectField=function isc_c_DataSource_getObjectField(_1,_2){if(_1==null)return null;if(isc.isA.Class(_1))return _1.getObjectField(_2);var _3=isc.DS.getSchema(_1);if(_3)return _3.getObjectField(_2)}
+,isc.A.getSchemaField=function isc_c_DataSource_getSchemaField(_1,_2){var _3=isc.DS.getSchema(_1);if(_3)return _3.getField(_2)}
+,isc.A.addChildObject=function isc_c_DataSource_addChildObject(_1,_2,_3,_4,_5){return this.$40k(_1,"add",_2,_3,_4,_5)}
+,isc.A.removeChildObject=function isc_c_DataSource_removeChildObject(_1,_2,_3,_4){return this.$40k(_1,"remove",_2,_3,_4)}
+,isc.A.$40k=function isc_c_DataSource__doVerbToChild(_1,_2,_3,_4,_5,_6){var _7=_6||isc.DS.getObjectField(_1,_3);if(_7==null){this.logWarn("No field for child of type "+_3);return false}
+this.logInfo(_2+" object "+this.echoLeaf(_4)+" in field: "+_7+" of parentObject: "+this.echoLeaf(_1),"editing");var _8=isc.DS.getSchemaField(_1,_7);if(isc.isA.Class(_1)){if(_1.$40k(_2,_3,_4,_5,_6))return true}
+if(!_8.multiple){if(_2=="add")_1[_7]=_4;else if(_2=="remove"){if(_1[_7]!=null)delete _1[_7]}else{this.logWarn("unrecognized verb: "+_2);return false}
+return true}
+this.logInfo("using direct Array manipulation for field '"+_7+"'","editing");var _9=_1[_7];if(_2=="add"){if(_9!=null&&!isc.isAn.Array(_9)){this.logWarn("unexpected field value: "+this.echoLeaf(_9)+" in field '"+_7+"' when trying to add child: "+this.echoLeaf(_4));return false}
+if(_9==null)_1[_7]=_9=[];if(_5!=null)_9.addAt(_4,_5);else _9.add(_4)}else if(_2=="remove"){if(!isc.isAn.Array(_9))return false;if(_5!=null)_9.removeAt(_4,_5);else _9.remove(_4)}else{this.logWarn("unrecognized verb: "+_2);return false}
+return true}
+,isc.A.getChildObject=function isc_c_DataSource_getChildObject(_1,_2,_3,_4){if(isc.isA.Class(_1))return _1.getChildObject(_2,_3,_4);var _5=isc.DS.getObjectField(_1,_2),_6=isc.DS.getSchemaField(_1,_5);var _7=_1[_5];if(!_6.multiple)return _7;if(!isc.isAn.Array(_7))return null;return isc.Class.getArrayItem(_3,_7)}
+,isc.A.getAutoIdField=function isc_c_DataSource_getAutoIdField(_1){var _2=this.getNearestSchema(_1);return _2?_2.getAutoIdField():"ID"}
+,isc.A.getAutoId=function isc_c_DataSource_getAutoId(_1){var _2=this.getAutoIdField(_1);return _2?_1[_2]:null}
+);isc.B._maxIndex=isc.C+9;isc.A=isc.DataSource.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getAutoIdField=function isc_DataSource_getAutoIdField(){return this.getInheritedProperty("autoIdField")||"ID"}
+,isc.A.shouldCreateStandalone=function isc_DataSource_shouldCreateStandalone(){if(this.createStandalone!=null)return this.createStandalone;if(!this.superDS())return true;return this.superDS().shouldCreateStandalone()}
+);isc.B._maxIndex=isc.C+2;var sharedEditModeFunctions={editModeClick:function(){if(isc.VisualBuilder&&isc.VisualBuilder.titleEditEvent=="click")this.editClick();return this.Super("editModeClick",arguments)},editModeDoubleClick:function(){if(isc.VisualBuilder&&isc.VisualBuilder.titleEditEvent=="doubleClick")this.editClick();return this.Super("editModeDoubleClick",arguments)}}
+isc.Button.addProperties(sharedEditModeFunctions)
+isc.ImgButton.addMethods(sharedEditModeFunctions)
+isc.StretchImgButton.addMethods(sharedEditModeFunctions)
+isc.SectionHeader.addMethods(sharedEditModeFunctions)
+isc.ImgSectionHeader.addMethods(sharedEditModeFunctions)
+isc.A=isc.ImgSectionHeader.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setEditMode=function isc_ImgSectionHeader_setEditMode(_1,_2,_3){if(_1==null)_1=true;if(_1==this.editingOn)return;this.invokeSuper(isc.TabSet,"setEditMode",_1,_2,_3);if(this.editingOn){var _4=this;isc.Timer.setTimeout(function(){_4.saveToOriginalValues(["background"]);_4.background.setProperties({iconClick:_4.editModeIconClick})},0)}else{this.restoreFromOriginalValues(["background"])}}
+,isc.A.editModeIconClick=function isc_ImgSectionHeader_editModeIconClick(){var _1=this.creator;if(_1){var _2=_1.layout;if(_2.sectionIsExpanded(_1))_2.collapseSection(_1);else _2.expandSection(_1);var _3=_1.editContext;if(_3){_3.setNodeProperties(_1.editNode,{"expanded":_2.sectionIsExpanded(_1)})}}
+return this.Super("editModeClick",arguments)}
+,isc.A.editClick=function isc_ImgSectionHeader_editClick(){var _1=this.getPageLeft()+this.getLeftBorderSize()+this.getLeftMargin()+1
+-this.getScrollLeft(),_2=this.getVisibleWidth()-this.getLeftBorderSize()-this.getLeftMargin()
+-this.getRightBorderSize()-this.getRightMargin()-1;isc.Timer.setTimeout({target:isc.EditContext,methodName:"manageTitleEditor",args:[this,_1,_2]},100)}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.StatefulCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.editClick=function isc_StatefulCanvas_editClick(){var _1,_2;if(isc.isA.Button(this)){_1=this.getPageLeft()+this.getLeftBorderSize()+this.getLeftMargin()+1
+-this.getScrollLeft();_2=this.getVisibleWidth()-this.getLeftBorderSize()-this.getLeftMargin()
+-this.getRightBorderSize()-this.getRightMargin()-1}else if(isc.isA.StretchImgButton(this)){_1=this.getPageLeft()+this.capSize;_2=this.getVisibleWidth()-this.capSize*2}else{isc.logWarn("Ended up in editClick with a StatefulCanvas of type '"+this.getClass()+"'. This is neither a Button "+"nor a StretchImgButton - editor will work, but will hide the "+"entire component it is editing");_1=this.getPageLeft();_2=this.getVisibleWidth()}
+isc.Timer.setTimeout({target:isc.EditContext,methodName:"manageTitleEditor",args:[this,_1,_2]},0)}
+,isc.A.repositionTitleEditor=function isc_StatefulCanvas_repositionTitleEditor(){var _1=this.getPageLeft()+this.capSize,_2=this.getVisibleWidth()-this.capSize*2;isc.EditContext.positionTitleEditor(this,_1,_2)}
+);isc.B._maxIndex=isc.C+2;if(isc.TabSet){isc.A=isc.TabSet;isc.A.addTabEditorHint="Enter tab titles (comma separated)";isc.A=isc.TabSet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.defaultPaneDefaults={_constructor:"VLayout"};isc.B.push(isc.A.setEditMode=function isc_TabSet_setEditMode(_1,_2,_3){if(_1==null)_1=true;if(_1==this.editingOn)return;this.invokeSuper(isc.TabSet,"setEditMode",_1,_2,_3);if(this.editingOn){for(var i=0;i<this.tabs.length;i++){var _5=this.tabs[i];this.saveOriginalValues(_5);this.setCanCloseTab(_5,true)}
+this.closeClick=function(_5){this.editContext.removeComponent(_5.editNode);var _6=this;isc.Timer.setTimeout(function(){_6.manageAddIcon()},200)}}else{for(var i=0;i<this.tabs.length;i++){var _5=this.tabs[i];this.restoreOriginalValues(_5);var _7=this.getTab(_5);this.setCanCloseTab(_5,_7.editNode.initData.canClose)}}
+this.tabBar.setEditMode(_1,_2,null);this.paneContainer.setEditMode(_1,_2,null);this.manageAddIcon()}
+,isc.A.saveOriginalValues=function isc_TabSet_saveOriginalValues(_1){var _2=this.getTab(_1);if(_2){_2.saveToOriginalValues(["closeClick","canClose","icon","iconSize","iconOrientation","iconAlign","disabled"])}}
+,isc.A.restoreOriginalValues=function isc_TabSet_restoreOriginalValues(_1){var _2=this.getTab(_1);if(_2){_2.restoreFromOriginalValues(["closeClick","canClose","icon","iconSize","iconOrientation","iconAlign","disabled"])}}
+,isc.A.showAddTabEditor=function isc_TabSet_showAddTabEditor(){var _1=this.tabBarPosition,_2=this.tabBarAlign,_3,_4,_5,_6,_7=this.tabBar;if(_1==isc.Canvas.TOP||_1==isc.Canvas.BOTTOM){_3=this.tabBar.getPageTop();_5=this.tabBar.getHeight();if(_2==isc.Canvas.LEFT){_4=this.addIcon.getPageLeft();_6=this.tabBar.getVisibleWidth()-this.addIcon.left;if(_6<150)_6=150}else{_6=this.tabBar.getVisibleWidth();_6=_6-(_6-(this.addIcon.left+this.addIcon.width));if(_6<150)_6=150;_4=this.addIcon.getPageLeft()+this.addIcon.width-_6}}else{_4=this.tabBar.getPageLeft();_6=150;_3=this.addIcon.getPageTop();_5=20}
+this.manageAddTabEditor(_4,_6,_3,_5)}
+,isc.A.manageAddIcon=function isc_TabSet_manageAddIcon(){if(this.editingOn){if(this.addIcon==null){this.addIcon=isc.Img.create({autoDraw:false,width:16,height:16,cursor:"hand",tabSet:this,src:"[SKIN]/actions/add.png",click:function(){this.tabSet.showAddTabEditor()}});this.tabBar.addChild(this.addIcon)}
+var _1=this.tabs.length==0?null:this.getTab(this.tabs[this.tabs.length-1]);var _2=this.tabBarPosition,_3=this.tabBarAlign,_4,_5;if(_1==null){if(_2==isc.Canvas.TOP||_2==isc.Canvas.BOTTOM){if(_3==isc.Canvas.LEFT){_4=this.tabBar.left+10;_5=this.tabBar.top+(this.tabBar.height/ 2)-(8)}else{_4=this.tabBar.left+this.tabBar.width-10-(16);_5=this.tabBar.top+(this.tabBar.height/ 2)-(8)}}else{if(_3==isc.Canvas.TOP){_4=this.tabBar.left+(this.tabBar.width/ 2)-(8);_5=this.tabBar.top+10}else{_4=this.tabBar.left+(this.tabBar.width/ 2)-(8);_5=this.tabBar.top+this.tabBar.height-10-(16)}}}else{if(_2==isc.Canvas.TOP||_2==isc.Canvas.BOTTOM){if(_3==isc.Canvas.LEFT){_4=_1.left+_1.width+10;_5=_1.top+(_1.height/ 2)-(8)}else{_4=_1.left-10-(16);_5=_1.top+(_1.height/ 2)-(8)}}else{if(_3==isc.Canvas.TOP){_4=_1.left+(this.width/ 2)-(8);_5=_1.top+(_1.height)+10}else{_4=_1.left+(this.width/ 2)-(8);_5=_1.top+(_1.height/ 2)-(8)}}}
+this.addIcon.setTop(_5);this.addIcon.setLeft(_4);this.addIcon.show()}else{if(this.addIcon&&this.addIcon.hide)this.addIcon.hide()}}
+,isc.A.manageAddTabEditor=function isc_TabSet_manageAddTabEditor(_1,_2,_3,_4){if(!isc.isA.DynamicForm(isc.TabSet.addTabEditor)){isc.TabSet.addTabEditor=isc.DynamicForm.create({autoDraw:false,margin:0,padding:0,cellPadding:0,fields:[{name:"addTabString",type:"text",hint:isc.TabSet.addTabEditorHint,showHintInField:true,showTitle:false,keyPress:function(_6,_7,_8){if(_8=="Escape"){_7.discardUpdate=true;_7.hide();return}
+if(_8=="Enter")_6.blurItem()},blur:function(_7,_6){if(!_7.discardUpdate){_7.targetComponent.editModeAddTabs(_6.getValue())}
+_7.hide()}}]})}
+var _5=isc.TabSet.addTabEditor;_5.addProperties({targetComponent:this});_5.discardUpdate=false;var _6=_5.getItem("addTabString");_6.setHeight(_4);_6.setWidth(_2);_6.setValue(_6.hint);_5.setTop(_3);_5.setLeft(_1);_5.show();_6.focusInItem();_6.delayCall("selectValue",[],100)}
+,isc.A.editModeAddTabs=function isc_TabSet_editModeAddTabs(_1){if(!_1||_1==isc.TabSet.addTabEditorHint)return;var _2=_1.split(",");for(var i=0;i<_2.length;i++){var _4=isc.addProperties({},this.defaultPaneDefaults);if(!_4.type&&!_4.className){_4.type=_4._constructor}
+var _5={type:"Tab",initData:{title:_2[i]}};var _6=this.editContext.addComponent(this.editContext.makeEditNode(_5),this.editNode);if(_6){this.editContext.addComponent(this.editContext.makeEditNode(_4),_6)}}}
+,isc.A.addTabsEditModeExtras=function isc_TabSet_addTabsEditModeExtras(_1){this.delayCall("manageAddIcon");if(this.editingOn){for(var i=0;i<_1.length;i++){this.saveOriginalValues(_1[i]);this.setCanCloseTab(_1[i],true)}}}
+,isc.A.removeTabsEditModeExtras=function isc_TabSet_removeTabsEditModeExtras(){this.delayCall("manageAddIcon")}
+,isc.A.editablePropertiesUpdated=function isc_TabSet_editablePropertiesUpdated(){this.delayCall("manageAddIcon");this.invokeSuper(isc.TabSet,"editablePropertiesUpdated")}
+,isc.A.tabScrolledIntoView=function isc_TabSet_tabScrolledIntoView(){if(!this.editingOn)return;for(var i=0;i<this.tabs.length;i++){var _2=this.getTab(this.tabs[i]);if(_2.titleEditor&&_2.titleEditor.isVisible()){_2.repositionTitleEditor()}}}
+,isc.A.findEditNode=function isc_TabSet_findEditNode(_1){this.logInfo("In TabSet.findEditNode, dragType is "+_1,"editModeDragTarget");if(_1!="Tab"){var _2=this.getTab(this.getSelectedTabNumber());if(_2&&_2.editNode)return _2;for(var i=0;i<this.tabs.length;i++){_2=this.getTab(i);if(_2.editNode)return _2}
+if(this.parentElement)return this.parentElement.findEditNode(_1)}
+return this.Super("findEditNode",arguments)}
+);isc.B._maxIndex=isc.C+12;isc.A=isc.TabBar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.findEditNode=function isc_TabBar_findEditNode(_1){if(_1=="Tab"){return this.parentElement.findEditNode(_1)}else if(this.parentElement&&isc.isA.Layout(this.parentElement.parentElement)){return this.parentElement.parentElement.findEditNode(_1)}
+return this.Super("findEditNode",arguments)}
+);isc.B._maxIndex=isc.C+1}
+isc.A=isc.Layout.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.editModeDrop=function isc_Layout_editModeDrop(){if(this.shouldPassDropThrough()){this.hideDropLine();return}
+isc.EditContext.hideAncestorDragDropLines(this);var _1=isc.EH.dragTarget,_2,_3;if(!_1.isA("Palette")){if(_1.isA("FormItemProxyCanvas")){_1=_1.formItem}
+_3=_1._constructor||_1.Class}else{_2=_1.transferDragData();if(isc.isAn.Array(_2))_2=_2[0];_2.dropped=true;_3=_2.className||_2.type}
+var _4=this.findEditNode(_3);if(_4){_4=_4.editNode}
+if(this.modifyEditNode){_4=this.modifyEditNode(_2,_4,_3);if(!_4){this.hideDropLine();return isc.EH.STOP_BUBBLING}}
+if(!_1.isA("Palette")){if(isc.EditContext.$70r)isc.EditContext.$70r.hide();if(_1==this)return;var _5=this.editContext.data,_6=_5.getParent(_1.editNode),_7=_5.getChildren(_6).indexOf(_1.editNode),_8=this.getDropPosition(_3);this.editContext.removeComponent(_1.editNode);if(_6==this.editNode&&_8>_7)_8--;var _9;if(_1.isA("FormItem")){if(_1.isA("CanvasItem")){_9=this.editContext.addNode(_1.canvas.editNode,_4,_8)}else{_9=this.editContext.addWithWrapper(_1.editNode,_4)}}else{_9=this.editContext.addNode(_1.editNode,_4,_8)}
+if(isc.isA.TabSet(_4.liveObject)){_4.liveObject.selectTab(_1)}else if(_9&&_9.liveObject){isc.EditContext.delayCall("selectCanvasOrFormItem",[_9.liveObject,true],200)}}else{var _10;var _11=isc.ClassFactory.getClass(_3);if(_11&&_11.isA("FormItem")){_10=this.editContext.addWithWrapper(_2,_4)}else{_10=this.editContext.addComponent(_2,_4,this.getDropPosition(_3))}
+if(_10!=null){var _12=_2.liveObject;if(isc.isA.TabSet(_4.liveObject)){var _13=isc.addProperties({},_4.liveObject.defaultPaneDefaults);if(!_13.type&&!_13.className){_13.type=_13._constructor}
+this.editContext.addComponent(this.editContext.makeEditNode(_13,_10));_4.liveObject.selectTab(_12)}
+if(isc.isA.TabSet(_12)){_12.delayCall("showAddTabEditor")}else if(isc.isA.ImgTab(_12)||isc.isA.Button(_12)||isc.isA.StretchImgButton(_12)||isc.isA.SectionHeader(_12)||isc.isA.ImgSectionHeader(_12)){_12.delayCall("editClick")}}}
+this.hideDropLine();return isc.EH.STOP_BUBBLING}
+,isc.A.editModeDropMove=function isc_Layout_editModeDropMove(){if(!this.editModeWillAcceptDrop())return false;if(!this.shouldPassDropThrough()){this.Super("dropMove",arguments);if(this.parentElement&&this.parentElement.hideDropLine){this.parentElement.hideDropLine();if(isc.isA.FormItem(this.parentElement)){this.parentElement.form.hideDragLine()}}
+return isc.EH.STOP_BUBBLING}else{this.hideDropLine()}}
+,isc.A.editModeDropOver=function isc_Layout_editModeDropOver(){if(!this.editModeWillAcceptDrop())return false;if(!this.shouldPassDropThrough()){this.Super("dropOver",arguments);if(this.parentElement&&this.parentElement.hideDropLine){this.parentElement.hideDropLine();if(isc.isA.FormItem(this.parentElement)){this.parentElement.form.hideDragLine()}}
+return isc.EH.STOP_BUBBLING}else{this.hideDropLine()}}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.Portlet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.addedToEditContext=function isc_Portlet_addedToEditContext(_1,_2){this.editContext=_1;this.editNode=_2}
+,isc.A.canAdd=function isc_Portlet_canAdd(_1){if(_1=="Portlet")return false;return this.Super("canAdd",arguments)}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.PortalRow.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.addedToEditContext=function isc_PortalRow_addedToEditContext(_1,_2){this.editContext=_1;this.editNode=_2;if(_2.generatedType)delete _2.generatedType}
+,isc.A.wrapChildNode=function isc_PortalRow_wrapChildNode(_1,_2,_3,_4){var _5=_2.liveObject;if(isc.isA.Portlet(_5)){return _3}else{var _6=_1.makeEditNode({type:"Portlet",defaults:{title:_2.title,destroyOnClose:true}});_1.addNode(_6,_3,_4);return _6}}
+,isc.A.handleDroppedEditNode=function isc_PortalRow_handleDroppedEditNode(_1,_2){var _3=this.editContext;var _4=this.editNode;if(isc.isA.Palette(_1)){var _5=_1.transferDragData(),_6=(isc.isAn.Array(_5)?_5[0]:_5);if(_3&&_4){_3.addNode(_6,_4,_2);return false}else{if(isc.isA.Portlet(_6.liveObject)){_1=_6.liveObject}else{_1=isc.Portlet.create({autoDraw:false,title:_6.title,items:[_6.liveObject],destroyOnClose:true})}}}
+return _1}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.PortalColumnBody.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.handleDroppedEditNode=function isc_PortalColumnBody_handleDroppedEditNode(_1,_2){var _3=this.creator.editContext;var _4=this.creator.editNode;if(isc.isA.Palette(_1)){var _5=_1.transferDragData(),_6=(isc.isAn.Array(_5)?_5[0]:_5);if(_3&&_4){_3.addNode(_6,_4,_2);return false}else{if(isc.isA.Portlet(_6.liveObject)){_1=_6.liveObject}else{_1=isc.Portlet.create({autoDraw:false,title:_6.title,items:[_6.liveObject],destroyOnClose:true})}}}
+if(_1){var _7=_1.portalRow;if(_7&&_7.parentElement==this&&_7.getMembers().length==1){if(_3&&_4&&_7.editNode){var _8=this.getMemberNumber(_7);if(_2==_8||_2==_8+1)return;_3.removeNode(_7.editNode);if(_8<_2)_2-=1;_3.addNode(_7.editNode,_4,_2);return null}}else{if(_3&&_4&&_1.editNode){_3.addNode(_1.editNode,_4,_2);return null}}}
+return _1}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.PortalColumn.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.wrapChildNode=function isc_PortalColumn_wrapChildNode(_1,_2,_3,_4){var _5=_2.liveObject;if(isc.isA.PortalRow(_5)||_2.type=="PortalRow"){return _3}else if(isc.isA.Portlet(_5)){var _6=_1.makeEditNode({type:this.rowConstructor,defaults:{}});_1.addNode(_6,_3,_4);return _6}else{var _7=_1.makeEditNode({type:"Portlet",defaults:{title:_2.title,destroyOnClose:true}});_1.addNode(_7,_3,_4);return _7}}
+,isc.A.canAdd=function isc_PortalColumn_canAdd(_1){return false}
+,isc.A.addedToEditContext=function isc_PortalColumn_addedToEditContext(_1,_2){this.editContext=_1;this.editNode=_2;if(_2.generatedType)delete _2.generatedType}
+,isc.A.setEditMode=function isc_PortalColumn_setEditMode(_1,_2,_3){this.Super("setEditMode",arguments);this.rowLayout.setEditMode(_1,_2,null)}
+);isc.B._maxIndex=isc.C+4;isc.A=isc.PortalLayout.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.addedToEditContext=function isc_PortalLayout_addedToEditContext(_1,_2){this.editContext=_1;this.editNode=_2;for(var i=0;i<this.getNumColumns();i++){var _4=this.getPortalColumn(i);if(!_4.editContext){var _5=_1.makeEditNode({type:this.columnConstructor,liveObject:_4,defaults:{ID:_4.ID,_constructor:this.columnConstructor}});_5.initData=_5.defaults;_1.addNode(_5,_2,i,null,true)}}
+_2.defaults.numColumns=0}
+);isc.B._maxIndex=isc.C+1;if(isc.DynamicForm){isc.A=isc.DynamicForm.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dropMargin=10;isc.B.push(isc.A.setEditMode=function isc_DynamicForm_setEditMode(_1,_2,_3){if(_1==null)_1=true;if(_1==this.editingOn)return;this.invokeSuper(isc.DynamicForm,"setEditMode",_1,_2,_3);if(this.editingOn){this.saveToOriginalValues(["canDropItems","canAddColumns","dropOut"]);this.setProperties({canDropItems:true,canAddColumns:true,dropOut:this.editModeDropOut});this.resetValues();var _4=this.dropMargin;if(_4*2>this.getVisibleHeight()-10){_4=Math.round((this.getVisibleHeight()-10)/2);if(_4<2)_4=2;this.dropMargin=_4}}else{this.restoreFromOriginalValues(["canDropItems","canAddColumns","dropOut"]);this.resetValues()}}
+,isc.A.editModeDropOver=function isc_DynamicForm_editModeDropOver(){if(this.canDropItems!=true)return false;if(!this.editModeWillAcceptDrop())return false;this.$69c=null;this.hideDragLine();return isc.EH.STOP_BUBBLING}
+,isc.A.editModeDropMove=function isc_DynamicForm_editModeDropMove(){if(!this.ns.EH.getDragTarget())return false;if(this.canDropItems!=true)return false;if(!this.editModeWillAcceptDrop())return false;var _1=this.ns.EH.getDragTarget().getDragData();if(isc.isAn.Array(_1))_1=_1[0];if(_1!=null&&(_1.type=="DataSource"||_1.className=="DataSource")){this.hideDragLine();return isc.EH.STOP_BUBBLING}
+if(this.getItems().length==0){if(this.shouldPassDropThrough()){this.hideDragLine();return}
+isc.EditContext.hideAncestorDragDropLines(this);this.showDragLineForForm();return isc.EH.STOP_BUBBLING}
+var _2=this.ns.EH.lastEvent,_3=this.getItemAtPageOffset(_2.x,_2.y),_4=this.getNearestItem(_2.x,_2.y);if(_3){isc.EditContext.hideAncestorDragDropLines(this);this.showDragLineForItem(_4,_2.x,_2.y)}else{if(this.shouldPassDropThrough()){this.hideDragLine();return}
+if(_4){isc.EditContext.hideAncestorDragDropLines(this);this.showDragLineForItem(_4,_2.x,_2.y)}else{this.hideDragLine()}}
+this.$69c=_4;return isc.EH.STOP_BUBBLING}
+,isc.A.editModeDropOut=function isc_DynamicForm_editModeDropOut(){this.hideDragLine();return isc.EH.STOP_BUBBLING}
+,isc.A.editModeDrop=function isc_DynamicForm_editModeDrop(){var _1=this.ns.EH.getDragTarget().getDragData();if(isc.isAn.Array(_1))_1=_1[0];if((_1&&_1.className=="DataSource")||this.getItems().length==0)
+{if(this.shouldPassDropThrough()){this.hideDragLine();return}
+this.itemDrop(this.ns.EH.getDragTarget(),0,0,0);return isc.EH.STOP_BUBBLING}
+if(!this.$69c){isc.logWarn("lastDragOverItem not set, cannot drop","dragDrop");return}
+var _2=this.$69c,_3=this.getItemTableOffsets(_2),_4=_2.dropSide,_5=_2.$69d,_6=this.getItemDropIndex(_2,_4);this.$69c=null;if(this.shouldPassDropThrough()){this.hideDragLine();return}
+if(_6!=null&&_6>=0){if(this.parentElement){if(this.parentElement.hideDragLine)this.parentElement.hideDragLine();if(this.parentElement.hideDropLine)this.parentElement.hideDropLine()}
+var _7=this.items.$8j.duplicate();this.modifyFormOnDrop(_2,_3.top,_3.left,_4,_7)}
+this.hideDragLine();return isc.EH.STOP_BUBBLING}
+,isc.A.itemDrop=function isc_DynamicForm_itemDrop(_1,_2,_3,_4,_5,_6){var _7=_1.getDragData();if(_7==null){_7=isc.EH.dragTarget;if(isc.isA.FormItemProxyCanvas(_7)){this.logInfo("The dragTarget is a FormItemProxyCanvas for "+_7.formItem,"editModeDragTarget");_7=_7.formItem}}
+if(!_1.isA("Palette")){if(isc.EditContext.$70r)isc.EditContext.$70r.hide();var _8=this.editContext.data,_9=_8.getParent(_7.editNode),_10=_8.getChildren(_9).indexOf(_7.editNode),_11=_7.editNode;if(isc.isA.Function(this.itemDropping)){_11=this.itemDropping(_11,_2,true);if(!_11)return}
+this.editContext.removeComponent(_11);if(_9==this.editNode&&_2>_10)_2--;var _12=this.editContext.addNode(_7.editNode,this.editNode,_2);if(_12&&_12.liveObject){isc.EditContext.delayCall("selectCanvasOrFormItem",[_12.liveObject,true],200)}
+return _12}else{var _13=_1.transferDragData();if(isc.isAn.Array(_13))_13=_13[0];if(_13.loadData&&!_13.isLoaded){var _14=this;_13.loadData(_13,function(_15){_15=_15||_13
+_15.isLoaded=true;_14.completeItemDrop(_15,_2,_3,_4,_5,_6)
+_15.dropped=_13.dropped});return}
+this.completeItemDrop(_13,_2,_3,_4,_5,_6)}}
+,isc.A.completeItemDrop=function isc_DynamicForm_completeItemDrop(_1,_2,_3,_4,_5,_6){var _7=_1.liveObject,_8;if(!isc.isA.FormItem(_7)){if(isc.isA.Button(_7)||isc.isAn.IButton(_7)){_1=this.editContext.makeEditNode({type:"ButtonItem",title:_7.title,defaults:_1.defaults})}else if(isc.isA.Canvas(_7)){_8=_1;_1=this.editContext.makeEditNode({type:"CanvasItem"});isc.addProperties(_1.initData,{showTitle:false,startRow:true,endRow:true,width:"*",colSpan:"*"})}}
+_1.dropped=true;if(isc.isA.Function(this.itemDropping)){_1=this.itemDropping(_1,_2,true);if(!_1)return}
+var _9=this.editContext.addComponent(_1,this.editNode,_2);if(_9){isc.EditContext.clearSchemaProperties(_9);if(_8){_9=this.editContext.addComponent(_8,_9,0);if(isc.isA.TabSet(_7)){_7.delayCall("showAddTabEditor",[],1000)}}
+if(_9.liveObject.dataSource){_9.liveObject.setDataSource(_9.liveObject.dataSource,null,true)}
+isc.EditContext.delayCall("selectCanvasOrFormItem",[_1.liveObject,true],200);if(_9.showTitle!=false){_1.liveObject.delayCall("editClick")}}
+if(_6)this.fireCallback(_6,"node",[_9])}
+,isc.A.modifyFormOnDrop=function isc_DynamicForm_modifyFormOnDrop(_1,_2,_3,_4,_5){if(this.canAddColumns==false)return;var _6=this.ns.EH.getDragTarget().getDragData(),_7,_8,_9,_10=this;if(!_6){_6=this.ns.EH.getDragTarget();if(!isc.isA.FormItemProxyCanvas(_6)){this.logWarn("In modifyFormOnDrop the drag target was not a FormItemProxyCanvas");return}
+_6=_6.formItem;var _11=-1;for(var i=0;i<_5.length;i++){for(var j=0;j<_5[i].length;j++){if(_5[i][j]==_11)continue;_11=_5[i][j];if(this.items[_11]==_6){_8=i;_9=_11;break}}}
+var _14=true}else{if(isc.isAn.Array(_6))_6=_6[0];var _15=_6.type||_6.className;var _16=isc.ClassFactory.getClass(_15);if(isc.isA.FormItem(_16)){_6=this.createItem(_6,_15)}else{_6=this.createItem({type:"CanvasItem",showTitle:false},"CanvasItem")}
+var _14=false}
+_7=this.getAdjustedColSpan(_6);if((_6.startRow&&_6.$71r)||(_6.endRow&&_6.$71n)){_6.editContext.setNodeProperties(_6.editNode,{startRow:null,$71r:null,endRow:null,$71n:null})}
+var _17=[];if(_14&&_8){var _18=_5[_8],_11=-1;for(var i=0;i<_18.length;i++){if(_18[i]!=_11){_11=_18[i];if(this.items[_11]==_6)continue;if(isc.isA.SpacerItem(this.items[_11])&&this.items[_11].$71m)
+{this.logDebug("Marking spacer "+this.items[_11].name+" for removal","formItemDragDrop");_17.add(this.items[_11]);continue}
+this.logDebug("Found a non-spacer item on row "+_8+", no spacers will be deleted","formItemDragDrop");_17=null;break}}}
+var _19=0;if(_4=="L"||_4=="R"){var _20=true;if(_6.startRow)_20=false;if(_6.endRow&&(_4=="L"||_3<_5[_2].length)){_20=false}
+if(_14&&_8==_2)_20=false;if(_20){var _21=_7;var _22=_5[_2][_3];if(_5[_2].contains(_22)){var _23=this.items[_22];if(!isc.isA.SpacerItem(_23)||!_23.$71m){_22+=_4=="L"?-1:1;_23=this.items[_22]}
+if(_5[_2].contains(_22)){if(isc.isA.SpacerItem(_23)&&_23.$71m){if(_23.colSpan&&_23.colSpan>_21){_23.editContext.setNodeProperties(_23.editNode,{colSpan:_23.colSpan-_21});_21=0}else{_21-=_23.colSpan;_23.editContext.removeComponent(_23.editNode);if(_4=="R")_19=-1}}}}
+if(_21<=0){_20=false}else if(_5[_2].length+_7<=this.numCols){_20=false}else{this.editContext.setNodeProperties(this.editNode,{numCols:this.numCols+_21})}}
+for(var i=0;i<_5.length;i++){var _22=_5[i][_3];if(_22==null)_22=this.items.length;else _22+=_19+(_4=="L"?0:1);if(i!=_2){if(!_20)continue;if(_14&&_8&&_2<_8&&i==_8)
+{_19--}
+if(_17&&_17.length>0&&i==_8){continue}
+if(_22>0){var _23=this.items[_22-1];if(!_23||_23==_6||_23.endRow){continue}}
+var _24=this.getAdjustedColSpan(_23);if(_4=="R"&&_3+_24>=_5[i].length){if(!_23.endRow){_23.editContext.setNodeProperties(_23.editNode,{endRow:true,$71n:true})}
+continue}
+var _25=this.editContext.makeEditNode({type:"SpacerItem"});isc.addProperties(_25.initData,{colSpan:_21,height:0,$71m:true});var _26=this.editContext.addComponent(_25,this.editNode,_22);_19++}else{if(_4=="L"){var _23=this.items[_22];if(_23&&_23.startRow&&_23.$71r){_23.editContext.setNodeProperties(_23.editNode,{startRow:null,$71r:null})}}else{var _23=this.items[_22-1];if(_23&&_23.endRow&&_23.$71n){_23.editContext.setNodeProperties(_23.editNode,{endRow:null,$71n:null})}}
+this.itemDrop(this.ns.EH.getDragTarget(),_22,i,_3,_4,function(_36){_10.$72s=_36});if(_8==null||_2<_8)_19++}}}else{var _27,_28;if(isc.isA.SpacerItem(_1)&&_1.$71m){_27=_2}else{_27=_2+(_4=="B"?1:0)}
+if(_5[_27])_28=_5[_27][_3];var _29;if(_27>=_5.length)_29=this.items.length;else _29=_5[_27][0];var _30=_28==null?null:this.items[_28];if(_30==null||(isc.isA.SpacerItem(_30)&&_30.$71m)){if(_27>_5.length-1||_27<0){if(_3!=0&&!_6.startRow){var _25=this.editContext.makeEditNode({type:"SpacerItem"});isc.addProperties(_25.initData,{colSpan:_3,height:0,$71m:true});this.editContext.addComponent(_25,this.editNode,_29)}
+this.itemDrop(this.ns.EH.getDragTarget(),_29+(_3!=0?1:0),_27,_3,_4,function(_36){_10.$72s=_36})}else if(_30==null){var _31=_5[_27].length-1;if(_31<0){isc.logWarn("Found completely empty row in DynamicForm at position ("+_27+","+(_3)+")");return}
+var _32=_5[_27][_31];var _23=this.items[_32];if(_23==null){isc.logWarn("Null item in DynamicForm at position ("+_27+","+(_3-1)+")");return}
+if(_23.endRow&&_23!=_6){_23.editContext.setNodeProperties(_23.editNode,{endRow:false})}
+var _33=(_3-_31)-1;if(_14&&_23==_6){_33+=_7}
+if(_33>0){var _25=this.editContext.makeEditNode({type:"SpacerItem"});isc.addProperties(_25.initData,{colSpan:_33,height:0,$71m:true});this.editContext.addComponent(_25,this.editNode,_32+1)}
+this.itemDrop(this.ns.EH.getDragTarget(),_32+(_33>0?2:1),_27,_3,_4,function(_36){_10.$72s=_36})}else{var _34=_30.colSpan?_30.colSpan:1,_35=_7;if(_34>_35){_30.editContext.setNodeProperties(_30.editNode,{colSpan:_34-_35});this.itemDrop(this.ns.EH.getDragTarget(),_28,_27,_3,_4,function(_36){_10.$72s=_36})}else{this.itemDrop(this.ns.EH.getDragTarget(),_28,_27,_3,_4,function(_36){_10.$72s=_36});_30.editContext.removeComponent(_30.editNode)}}}else{if(_3!=0){var _25=this.editContext.makeEditNode({type:"SpacerItem"});isc.addProperties(_25.initData,{colSpan:_3,height:0,$71m:true});this.editContext.addComponent(_25,this.editNode,_29)}
+this.itemDrop(this.ns.EH.getDragTarget(),_29+(_3==0?0:1),_27,_3,_4,function(_36){if(_36&&_36.liveObject&&_36.liveObject.editContext){_36.liveObject.editContext.setNodeProperties(_36,{endRow:true,$71n:true})}
+_10.$72s=_36})}}
+if(_14&&_17){for(var i=0;i<_17.length;i++){this.logDebug("Removing spacer item "+_17[i].name,"formItemDragDrop");_17[i].editContext.removeComponent(_17[i].editNode)}}
+if(!_14)_6.destroy();if(this.$72s&&this.$72s.liveObject){isc.EditContext.delayCall("selectCanvasOrFormItem(",[this.$72s.liveObject],200)}}
+,isc.A.getAdjustedColSpan=function isc_DynamicForm_getAdjustedColSpan(_1){if(!_1)return 0;var _2=_1.colSpan!=null?_1.colSpan:1;if(_2=="*")_2=1;if(_1.showTitle!=false&&(_1.titleOrientation=="left"||_1.titleOrientation=="right"||_1.titleOrientation==null))
+{_2++}
+return _2}
+,isc.A.canAdd=function isc_DynamicForm_canAdd(_1){if(this.getObjectField(_1)!=null)return true;var _2=isc.ClassFactory.getClass(_1);if(_2&&_2.isA("Canvas"))return true;return false}
+,isc.A.setEditorType=function isc_DynamicForm_setEditorType(_1,_2){if(!_1.editContext)return;var _3=_1.editContext.data,_4=_3.getParent(_1.editNode),_5=_3.getChildren(_4).indexOf(_1.editNode),_6=_1.editContext,_7={className:_2,defaults:_1.editNode.defaults},_8=_6.makeEditNode(_7);_6.removeComponent(_1.editNode);_6.addComponent(_8,_4,_5)}
+,isc.A.itemDropping=function isc_DynamicForm_itemDropping(_1,_2,_3){var _4=_1.liveObject,_5=isc.EditContext.getSchemaInfo(_1);if(!_5.dataSource)return _1;if(!this.dataSource){this.setDataSource(_5.dataSource);this.serviceNamespace=_5.serviceNamespace;this.serviceName=_5.serviceName;return _1}
+if(_5.dataSource==isc.DataSource.getDataSource(this.dataSource).ID&&_5.serviceNamespace==this.serviceNamespace&&_5.serviceName==this.serviceName){return _1}
+var _6=this.editContext.makeEditNode({className:"CanvasItem",defaults:{cellStyle:"nestedFormContainer"}});isc.addProperties(_6.initData,{showTitle:false,colSpan:2});_6.dropped=true;this.editContext.addComponent(_6,this.editNode,_2);var _7=this.editContext.makeEditNode({className:"DynamicForm",defaults:{numCols:2,canDropItems:false,dataSource:_5.dataSource,serviceNamespace:_5.serviceNamespace,serviceName:_5.serviceName,doNotUseDefaultBinding:true}});_7.dropped=true;this.editContext.addComponent(_7,_6,0);var _8=this.editContext.addComponent(_1,_7,0);isc.EditContext.clearSchemaProperties(_8)}
+,isc.A.getFieldEditNode=function isc_DynamicForm_getFieldEditNode(_1,_2){var _3=this.getEditorType(_1);_3=_3.substring(0,1).toUpperCase()+_3.substring(1)+"Item";var _4={type:_3,autoGen:true,defaults:{name:_1.name,title:_1.title||_2.getAutoTitle(_1.name)}}
+return _4}
+);isc.B._maxIndex=isc.C+13;isc.A=isc.FormItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setEditMode=function isc_FormItem_setEditMode(_1,_2,_3){if(_1==null)_1=true;if(this.editingOn==_1)return;this.editingOn=_1;if(this.editingOn){this.editContext=_2}
+this.editNode=_3;if(this.editingOn){this.saveToOriginalValues(["click","doubleClick","changed"]);this.setProperties({click:this.editModeClick,doubleClick:this.editModeDoubleClick,changed:this.editModeChanged})}else{this.restoreFromOriginalValues(["click","doubleClick","changed"])}}
+,isc.A.editModeChanged=function isc_FormItem_editModeChanged(_1,_2,_3){this.editContext.setNodeProperties(this.editNode,{defaultValue:_3})}
+,isc.A.setEditorType=function isc_FormItem_setEditorType(_1){if(this.form)this.form.setEditorType(this,_1)}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.ButtonItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.editClick=function isc_ButtonItem_editClick(){var _1=this.canvas.getPageLeft(),_2=this.canvas.getVisibleWidth(),_3=this.canvas.getPageTop(),_4=this.canvas.getHeight();isc.EditContext.manageTitleEditor(this,_1,_2,_3,_4)}
+);isc.B._maxIndex=isc.C+1}
+isc.A=isc.SectionStack.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.canAdd=function isc_SectionStack_canAdd(_1){if(_1=="SectionStackSection")return true;var _2=isc.ClassFactory.getClass(_1);if(_2&&_2.isA("Canvas"))return true;if(_2&&_2.isA("FormItem"))return true;return false}
+,isc.A.modifyEditNode=function isc_SectionStack_modifyEditNode(_1,_2,_3){if(_3=="SectionStackSection")return _2;var _4=this.getDropPosition();if(_4==0){isc.warn("Cannot drop before the first section header");return false}
+var _5=this.$700();for(var i=_5.length-1;i>=0;i--){if(_4>_5[i]){return this.getSectionHeader(i).editNode}}
+return _2}
+,isc.A.getEditModeDropPosition=function isc_SectionStack_getEditModeDropPosition(_1){var _2=this.invokeSuper(isc.SectionStack,"getDropPosition");if(!_1||_1=="SectionStackSection"){return _2}
+var _3=this.$700();for(var i=_3.length-1;i>=0;i--){if(_2>_3[i]){return _2-_3[i]-1}}
+return 0}
+,isc.A.$700=function isc_SectionStack__getHeaderPositions(){var _1=[],j=0;for(var i=0;i<this.getMembers().length;i++){if(this.getMember(i).isA(this.sectionHeaderClass)){_1[j++]=i}}
+return _1}
+);isc.B._maxIndex=isc.C+4;if(isc.ListGrid!=null){isc.A=isc.ListGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setEditMode=function isc_ListGrid_setEditMode(_1,_2,_3){if(_1==null)_1=true;if(_1==this.editingOn)return;this.invokeSuper(isc.ListGrid,"setEditMode",_1,_2,_3);if(this.editingOn){this.saveToOriginalValues(["setNoDropIndicator","clearNoDropIndicator","headerClick"]);this.setProperties({setNoDropIndicator:this.editModeSetNoDropIndicator,clearNoDropIndicator:this.editModeClearNoDropIndicator,headerClick:this.editModeHeaderClick})}else{this.restoreFromOriginalValues(["setNoDropIndicator","clearNoDropIndicator","headerClick"])}}
+,isc.A.editModeClearNoDropIndicator=function isc_ListGrid_editModeClearNoDropIndicator(_1){this.Super("clearNoDropIndicator",arguments);this.body.editModeClearNoDropIndicator()}
+,isc.A.editModeSetNoDropIndicator=function isc_ListGrid_editModeSetNoDropIndicator(){this.Super("setNoDropIndicator",arguments);this.body.editModeSetNoDropIndicator()}
+,isc.A.editModeHeaderClick=function isc_ListGrid_editModeHeaderClick(_1){var _2=this.editContext.data,_3=_2.getChildren(_2.findById(this.ID)),_4=_3[_1];_4.liveObject.$73a=this.header.getButton(_1);isc.EditContext.selectCanvasOrFormItem(_4.liveObject);this.$73b=true;return isc.EH.STOP_BUBBLING}
+,isc.A.editModeClick=function isc_ListGrid_editModeClick(){if(this.editNode){if(this.$73b)delete this.$73b;else isc.EditContext.selectCanvasOrFormItem(this,true);return isc.EH.STOP_BUBBLING}}
+);isc.B._maxIndex=isc.C+5}
+if(isc.TreeGrid!=null){isc.A=isc.TreeGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setEditMode=function isc_TreeGrid_setEditMode(_1,_2,_3){if(_1==null)_1=true;if(_1==this.editingOn)return;this.invokeSuper(isc.TreeGrid,"setEditMode",_1,_2,_3);if(this.editingOn){this.editModeCreateDefaultTreeFieldEditNode();this.saveToOriginalValues(["addField"]);this.setProperties({addField:this.editModeAddField})}else{this.restoreFromOriginalValues(["addField"])}}
+,isc.A.editModeCreateDefaultTreeFieldEditNode=function isc_TreeGrid_editModeCreateDefaultTreeFieldEditNode(){if(isc.$75u)return;if(this.dataSource)return;var _1=this.fields;for(var i=0;i<_1.length;i++){if(_1[i].name=="nodeTitle"){var _3={type:"TreeGridField",autoGen:true,defaults:{name:_1[i].name,title:_1[i].title}};var _4=this.editContext.makeEditNode(_3);this.editContext.addNode(_4,this.editNode,null,null,true);return}}}
+,isc.A.editModeAddField=function isc_TreeGrid_editModeAddField(_1,_2){this.Super("addField",arguments);if(isc.$75u){if(_1.treeField){var _3=this.getFields();for(var i=0;i<_3.length;i++){if(_3[i].name!=_1.name&&_3[i].treeField){this.removeField(_3[i]);break}}}}}
+,isc.A.editModeSetDataSource=function isc_TreeGrid_editModeSetDataSource(_1,_2,_3){if(isc.$75u){this.baseSetDataSource(_1,_2);return}
+if(_1==null)return;if(_1==this.dataSource&&!_3)return;var _2=this.getFields();if(_2){for(var i=0;i<_2.length;i++){var _5=_2[i];if(_5.treeField){_5.treeField=null;var _6=_5.editNode;break}}}
+var _7=this.getFields();_7.remove(_5);var _8,_2=_1.fields;if(_2&&isc.getKeys(_2).length==1&&_1.fieldIsComplexType(_2[isc.firstKey(_2)].name))
+{_8=_1.getSchema(_2[isc.firstKey(_2)].type)}else{_8=_1}
+var _2=_8.getFields(),_9=_1.titleField;if(!isc.isAn.Array(_2))_2=isc.getValues(_2);for(var _10=0;_10<_2.length;_10++){if(!this.shouldUseField(_2[_10],_1))continue;if(_9==null||_9==_2[_10].name){var _11=_2[_10];break}}
+if(_11)_7.addAt(_11,0);this.baseSetDataSource(_1,_7);var _12=this.getFieldEditNode(_11,_8);_12.defaults.treeField=true;var _13=this.editContext.makeEditNode(_12);this.editContext.addNode(_13,this.editNode,0,null);if(_6)this.editContext.removeNode(_6,true)}
+);isc.B._maxIndex=isc.C+4}
+var basicSetEditMode=function(_1,_2,_3){if(_1==null)_1=true;if(this.editingOn==_1)return;this.editingOn=_1;if(this.editingOn)this.editContext=_2;this.editNode=_3}
+isc.A=isc.ServiceOperation.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.setEditMode=basicSetEditMode;isc.B.push(isc.A.getActionTargetTitle=function isc_ServiceOperation_getActionTargetTitle(){return"Operation: ["+this.operationName+"]"}
+);isc.B._maxIndex=isc.C+1;if(isc.ValuesManager!=null){isc.A=isc.ValuesManager.getPrototype();isc.A.setEditMode=basicSetEditMode}
+isc.ClassFactory.defineInterface("EditContext");isc.A=isc.EditContext;isc.A.$72t=18;isc.A.$72u=18;isc.A.$70s=-18;isc.A.$70t=0;isc.A=isc.EditContext;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.manageTitleEditor=function isc_c_EditContext_manageTitleEditor(_1,_2,_3,_4,_5){if(!isc.isA.DynamicForm(this.titleEditor)){this.titleEditor=isc.DynamicForm.create({autoDraw:false,margin:0,padding:0,cellPadding:0,fields:[{name:"title",type:"text",showTitle:false,keyPress:function(_9,_11,_12){if(_12=="Escape"){_11.discardUpdate=true;_11.hide();return}
+if(_12=="Enter")_9.blurItem()},blur:function(_11,_9){if(!_11.discardUpdate){var _6=_11.targetComponent,_7=_6.editContext;if(_7){_7.setNodeProperties(_6.editNode,{"title":_9.getValue()});_7.nodeClick(_7,_6.editNode)}}
+_11.hide()}}]})}
+var _8=this.titleEditor;_8.setProperties({targetComponent:_1});_8.discardUpdate=false;var _9=_8.getItem("title");var _10=_1.title;if(!_10){_10=_1.name}
+_9.setValue(_10);this.positionTitleEditor(_1,_2,_3,_4,_5);_8.show();_9.focusInItem();_9.delayCall("selectValue",[],100)}
+,isc.A.positionTitleEditor=function isc_c_EditContext_positionTitleEditor(_1,_2,_3,_4,_5){if(_4==null)_4=_1.getPageTop();if(_5==null)_5=_1.height;if(_2==null)_2=_1.getPageLeft();if(_3==null)_3=_1.getVisibleWidth();var _6=this.titleEditor;var _7=_6.getItem("title");_7.setHeight(_5);_7.setWidth(_3);_6.setTop(_4);_6.setLeft(_2)}
+,isc.A.deselect=function isc_c_EditContext_deselect(){isc.SelectionOutline.deselect();this.hideDragHandle()}
+,isc.A.setEditMode=function isc_c_EditContext_setEditMode(_1){var _2=isc.SelectionOutline.getSelectedObject();if(_2==null)return;if(_1){this.setupDragProperties(_2);this.showSelectedObjectDragHandle();isc.SelectionOutline.showOutline()}else{this.resetDragProperties(_2);this.hideDragHandle();isc.SelectionOutline.hideOutline()}}
+,isc.A.setupDragProperties=function isc_c_EditContext_setupDragProperties(_1){_1.saveToOriginalValues(["canDrag","canDrop","dragAppearance","dragStart","dragMove","dragStop","setDragTracker"]);_1.setProperties({canDrop:true,dragAppearance:"outline",dragStart:function(){return true},dragMove:function(){return true},setDragTracker:function(){isc.EH.setDragTracker("");return false},dragStop:function(){isc.EditContext.hideProxyCanvas();isc.EditContext.positionDragHandle()}})}
+,isc.A.resetDragProperties=function isc_c_EditContext_resetDragProperties(_1){if(this.observer)this.observer.ignore(_1,"dragMove");_1.restoreFromOriginalValues(["canDrag","canDrop","dragAppearance","dragStart","dragMove","dragStop","setDragTracker"])}
+,isc.A.selectCanvasOrFormItem=function isc_c_EditContext_selectCanvasOrFormItem(_1,_2){if(!isc.isA.Canvas(_1)&&!isc.isA.FormItem(_1)&&!_1.$73a){return}
+if(isc.isA.Menu(_1)){return}
+if(this.$70r)this.$70r.hide();var _3=isc.SelectionOutline.getSelectedObject();if(_3)this.resetDragProperties(_3);var _4,_5;if(_1.$73a){var _6=_1.type||_1._constructor;_5="["+_6+" "+(_1.name?"name:":"ID");_5+=_1.name||_1.ID;_5+="]"
+_4=_1;_1=_1.$73a}
+var _7=_4?_4.editContext:_1.editContext;if(!_7)return;var _8=_7.creator;isc.SelectionOutline.select(_1,false,!(_2&&_8.hideLabelWhenSelecting),_5);if(_4)_1=_4;if(_1.editingOn){this.setupDragProperties(_1);this.showSelectedObjectDragHandle();var _9=_1.editContext;if(_9.selectRecord){_9.deselectAllRecords();if(isc.isA.Canvas(_1)){if(isc.isA.SectionHeader(_1)||isc.isA.ImgSectionHeader(_1)){_9.selectRecord(_9.data.findById(_1.$42i))}else{_9.selectRecord(_9.data.findById(_1.ID))}}else{_9.selectRecord(_9.data.find({ID:_1.name}))}}
+_9.creator.editComponent(_1.editNode,_1)}}
+,isc.A.showSelectedObjectDragHandle=function isc_c_EditContext_showSelectedObjectDragHandle(){if(!this.$70r){var _1=this;this.$70r=isc.Img.create({src:"[SKIN]/../../ToolSkin/images/controls/dragHandle.gif",prompt:"Grab here to drag component",width:this.$72u,height:this.$72t,cursor:"move",backgroundColor:"white",opacity:80,canDrag:true,canDrop:true,isMouseTransparent:true,mouseDown:function(){this.dragIconOffsetX=isc.EH.getX()-
+isc.EditContext.draggingObject.getPageLeft();this.dragIconOffsetY=isc.EH.getY()-
+isc.EditContext.draggingObject.getPageTop();_1.$53r=true;this.Super("mouseDown",arguments)},mouseUp:function(){_1.$53r=false}})}
+if(this.draggingObject){this.observer.ignore(this.draggingObject,"dragMove");this.observer.ignore(this.draggingObject,"dragStop");this.observer.ignore(this.draggingObject,"hide");this.observer.ignore(this.draggingObject,"destroy")}
+var _2=isc.SelectionOutline.getSelectedObject();if(isc.isA.FormItem(_2)){if(!this.$70y){this.$70y=isc.FormItemProxyCanvas.create()}
+this.$70y.delayCall("setFormItem",[_2]);_2=this.$70y}
+this.$70r.setProperties({dragTarget:_2});isc.Timer.setTimeout("isc.EditContext.positionDragHandle()",0);if(!this.observer)this.observer=isc.Class.create();this.draggingObject=_2;this.observer.observe(this.draggingObject,"dragMove","isc.EditContext.positionDragHandle(true)");this.observer.observe(this.draggingObject,"dragStop","isc.EditContext.$53r = false");this.observer.observe(this.draggingObject,"hide","isc.EditContext.$70r.hide()");this.observer.observe(this.draggingObject,"destroy","isc.EditContext.$70r.hide()");this.$70r.show()}
+,isc.A.hideProxyCanvas=function isc_c_EditContext_hideProxyCanvas(){if(this.$70y)this.$70y.hide()}
+,isc.A.positionDragHandle=function isc_c_EditContext_positionDragHandle(_1){if(!this.$70r)return;var _2=this.draggingObject;if(_2.destroyed||_2.destroying){this.logWarn("target of dragHandle: "+isc.Log.echo(_2)+" is invalid: "+_2.destroyed?"already destroyed":"currently in destroy()");return}
+var _3=_2.getVisibleHeight();if(_3<this.$72t*2){this.$70t=Math.round((_3-this.$70r.height)/2)-1}else{this.$70t=-1}
+if(_2.isA("FormItemProxyCanvas")&&!this.$53r){_2.syncWithFormItemPosition()}
+if(!_2)return;var _4=_2.getPageLeft()+this.$70s;if(_1){_4+=_2.getOffsetX()-this.$70r.dragIconOffsetX}
+this.$70r.setPageLeft(_4);var _5=_2.getPageTop()+this.$70t;if(_1){_5+=_2.getOffsetY()-this.$70r.dragIconOffsetY}
+this.$70r.setPageTop(_5);this.$70r.bringToFront()}
+,isc.A.hideDragHandle=function isc_c_EditContext_hideDragHandle(){if(this.$70r)this.$70r.hide()}
+,isc.A.showDragHandle=function isc_c_EditContext_showDragHandle(){if(this.$70r)this.$70r.show()}
+,isc.A.hideAncestorDragDropLines=function isc_c_EditContext_hideAncestorDragDropLines(_1){while(_1&&_1.parentElement){if(_1.parentElement.hideDragLine)_1.parentElement.hideDragLine();if(_1.parentElement.hideDropLine)_1.parentElement.hideDropLine();_1=_1.parentElement;if(isc.isA.FormItem(_1))_1=_1.form}}
+,isc.A.getSchemaInfo=function isc_c_EditContext_getSchemaInfo(_1){var _2={},_3=_1.liveObject;if(!_3)return _2;if(isc.isA.FormItem(_3)){if(_3.form&&_3.form.dataSource){var _4=_3.form;_2.dataSource=isc.DataSource.getDataSource(_4.dataSource).ID;_2.serviceName=_4.serviceName;_2.serviceNamespace=_4.serviceNamespace}else{_2.dataSource=_3.schemaDataSource;_2.serviceName=_3.serviceName;_2.serviceNamespace=_3.serviceNamespace}}else if(isc.isA.Canvas(_3)){_2.dataSource=isc.DataSource.getDataSource(_3.dataSource).ID;_2.serviceName=_3.serviceName;_2.serviceNamespace=_3.serviceNamespace}else{_2.dataSource=_3.schemaDataSource;_2.serviceName=_3.serviceName;_2.serviceNamespace=_3.serviceNamespace}
+return _2}
+,isc.A.clearSchemaProperties=function isc_c_EditContext_clearSchemaProperties(_1){if(_1&&_1.initData&&isc.isA.FormItem(_1.liveObject)){delete _1.initData.schemaDataSource;delete _1.initData.serviceName;delete _1.initData.serviceNamespace;var _2=_1.liveObject.form;if(_2&&_2.inputSchemaDataSource&&isc.DataSource.get(_2.inputSchemaDataSource).ID==_1.initData.inputSchemaDataSource&&_2.inputServiceName==_1.initData.inputServiceName&&_2.inputServiceNamespace==_1.initData.inputServiceNamespace)
+{delete _1.initData.inputSchemaDataSource;delete _1.initData.inputServiceName;delete _1.initData.inputServiceNamespace}}}
+,isc.A.serializeInitData=function isc_c_EditContext_serializeInitData(_1){if(_1==null)return null;if(!isc.isAn.Array(_1))_1=[_1];var _2=isc.SB.create();isc.Comm.omitXSI=true;for(var i=0;i<_1.length;i++){var _4=isc.DS.getNearestSchema(_1[i]);_2.append(_4.xmlSerialize(_1[i]),"\n\n")}
+isc.Comm.omitXSI=null;return _2.toString()}
+);isc.B._maxIndex=isc.C+16;isc.EditContext.addInterfaceMethods({addNode:function(_1,_2,_3,_4,_5){var _6=this.getEditNodeTree();if(_2==null)_2=this.getDefaultParent(_1);var _7=this.getLiveObject(_2);this.logInfo("addComponent will add newNode of type: "+_1.type+" to: "+this.echoLeaf(_7),"editing");if(_7.wrapChildNode){_2=_7.wrapChildNode(this,_1,_2,_3);if(!_2)return;_7=this.getLiveObject(_2)}
+var _8=_4||isc.DS.getObjectField(_7,_1.type);var _9=isc.DS.getSchemaField(_7,_8);if(!_9){this.logWarn("can't addComponent: can't find a field in parent: "+_7+" for a new child of type: "+_1.type+", parent property:"+_8+", newNode is: "+this.echo(_1));return}
+if(!_9.multiple){var _10=isc.DS.getChildObject(_7,_1.type,_4);if(_10){var _11=_6.getChildren(_2).find("ID",isc.DS.getAutoId(_10));this.logWarn("destroying existing child: "+this.echoLeaf(_10)+" in singular field: "+_8);_6.remove(_11);if(isc.isA.Class(_10)&&!isc.isA.DataSource(_10))_10.destroy()}}
+var _12;if(_1.generatedType){_12=isc.addProperties({},_1.initData);this.addChildData(_12,_6.getChildren(_1))}else{_12=_1.liveObject}
+if(!_5){var _13=isc.DS.addChildObject(_7,_1.type,_12,_3,_4);if(!_13){this.logWarn("addChildObject failed, returning");return}}
+if(!_1.liveObject)_1.liveObject=isc.DS.getChildObject(_7,_1.type,isc.DS.getAutoId(_1.initData),_4);this.logDebug("for new node: "+this.echoLeaf(_1)+" liveObject is now: "+this.echoLeaf(_1.liveObject),"editing");if(_1.liveObject==null){this.logWarn("wasn't able to retrieve live object after adding node of type: "+_1.type+" to liveParent: "+_7+", does liveParent have an appropriate getter() method?")}
+_6.add(_1,_2,_3);_6.openFolder(_1);this.logInfo("added node "+this.echoLeaf(_1)+" to EditTree at path: "+_6.getPath(_1)+" with live object: "+this.echoLeaf(_1.liveObject),"editing");if(this.nodeAdded)this.nodeAdded(_1);if(_1.liveObject.addedToEditContext)_1.liveObject.addedToEditContext(this,_1,_2,_3);return _1},addComponent:function(_1,_2,_3,_4,_5){return this.addNode(_1,_2,_3,_4,_5)},nodeAdded:function(_1){},getDefaultParent:isc.ClassFactory.TARGET_IMPLEMENTS,addFromPaletteNode:function(_1,_2){var _3=this.makeEditNode(_1,_2);return this.addNode(_3,_2)},makeEditNode:function(_1){var _2=this.getDefaultPalette();return _2.makeEditNode(_1)},getDefaultPalette:function(){if(this.defaultPalette)return this.defaultPalette;return(this.defaultPalette=isc.HiddenPalette.create())},getLiveObject:function(_1){var _2=this.getEditNodeTree();var _3=_2.getParent(_1);if(_3==null)return _1.liveObject;var _4=_3.liveObject;var _5=isc.DS.getChildObject(_4,_1.type,isc.DS.getAutoId(_1));if(_5)_1.liveObject=_5;return _1.liveObject},requestLiveObject:function(_1,_2,_3){var _4=this;if(_1.loadData&&!_1.isLoaded){_1.loadData(_1,function(_6){_6=_6||_1
+_6.isLoaded=true;_6.dropped=_1.dropped;_4.fireCallback(_2,"node",[_6])},_3);return}
+if(_1.wizardConstructor){this.logInfo("creating wizard with constructor: "+_1.wizardConstructor);var _5=isc.ClassFactory.newInstance(_1.wizardConstructor,_1.wizardDefaults);_5.getResults(_1,function(_6){if(!_6.liveObject){_6=_3.makeEditNode(_6)}
+_4.fireCallback(_2,"node",[_6])},_3);return}
+this.fireCallback(_2,"node",[_1])},getEditNodeTree:function(){if(!this.editNodeTree){var _1=this.rootComponent||{_constructor:"Object"},_2=isc.isA.Class(_1)?_1.Class:_1._constructor,_3=this.rootLiveObject||_1;var _4={type:_2,_constructor:_2,initData:_1,liveObject:_3};this.editNodeTree=isc.Tree.create({idField:"ID",root:_4,isFolder:function(){return true}})}
+return this.editNodeTree},getEditNodeArray:function(){return this.getEditNodeTree().getAllNodes()},getEditComponents:function(){return this.getEditNodeArray()},canAddToParent:function(_1,_2){var _3=_1.liveObject;if(isc.isA.Class(_3)){return(_3.getObjectField(_2)!=null)}
+return(isc.DS.getObjectField(_1,_2)!=null)},removeAll:function(){var _1=this.getEditNodeTree();var _2=_1.getChildren(_1.getRoot()).duplicate()
+for(var i=0;i<_2.length;i++){this.removeNode(_2[i])}},destroyAll:function(){var _1=this.getEditNodeTree();var _2=_1.getChildren(_1.getRoot()).duplicate()
+for(var i=0;i<_2.length;i++){this.destroyNode(_2[i])}},removeNode:function(_1,_2){var _3=this.getEditNodeTree();_3.remove(_1);if(_2)return;var _4=_3.getParent(_1),_5=this.getLiveObject(_4),_6=this.getLiveObject(_1);isc.DS.removeChildObject(_5,_1.type,_6)},removeComponent:function(_1,_2){return this.removeNode(_1,_2)},destroyNode:function(_1){var _2=this.getLiveObject(_1);this.removeNode(_1);if(_2.destroy)_2.destroy()},destroyComponent:function(_1){return this.destroyNode(_1)},getEditDataSource:function(_1){return isc.DataSource.getDataSource(_1.editDataSource||_1.Class||this.editDataSource)},$40l:function(_1){var _2=[];_2.addList(_1.baseEditFields);_2.addList(_1.editFields);for(var i=0;i<_2.length;i++){var _4=_2[i];if(_4.visible==null)_4.visible=true}
+if(_2.length==0){_2=this.getEditDataSource(_1).getFields();_2=isc.getValues(_2)}
+return _2},getEditFieldsList:function(_1){var _2=[],_3=this.$40l(_1);for(var i=0;i<_3.length;i++){var _5=_3[i];if(isc.isAn.Object(_5)){_2.add(_5.name)}else{_2.add(_5)}}
+return _2},getEditFields:function(_1){var _2=this.$40l(_1);for(var i=0;i<_2.length;i++){var _4=_2[i];if(isc.isA.String(_4))_4={name:_4};if(_4.visible==null)_4.visible=true;_2[i]=_4}
+return _2},serializeEditComponents:function(){var _1=this.getEditComponents(),_2=[];if(!_1)return[];for(var i=0;i<_1.length;i++){var _4=_1[i].liveObject,_5=_4.getUniqueProperties(),_6=this.getEditFieldsList(_4);_5._constructor=_4.Class;_5=isc.applyMask(_5,_6);_2.add(_5)}
+return _2},enableEditing:function(_1){var _2=_1.liveObject;if(_2.setEditMode){_2.setEditMode(true,this,_1)}else{_2.editContext=this;_2.editNode=_1;_2.editingOn=true}},setNodeProperties:function(_1,_2){if(this.logIsDebugEnabled("editing")){this.logDebug("with editNode: "+this.echoLeaf(_1)+" applying properties: "+this.echo(_2),"editing")}
+this.creator.setIsDirty(true);isc.addProperties(_1.initData,_2);_1.$71u=true;var _3=_1.liveObject;var _4=isc.DS.get(_1.type);if(_2.name!=null&&(isc.isA.FormItem(_3)||(_4&&(_4.inheritsSchema("ListGridField")||_4.inheritsSchema("DetailViewerField")))))
+{var _5=this.data,_6=_5.getParent(_1),_7=_5.getChildren(_6).findIndex(_1);this.logInfo("using remove/re-add cycle to modify liveObject: "+isc.echoLeaf(_3)+" within parent node "+isc.echoLeaf(_6));this.removeComponent(_1);_1.name=_1.ID=_2.name;delete _2.name;this.addComponent(_1,_6,_7);_3=this.getLiveObject(_1)}
+if(_1.initData.ID!=null)_1.ID=_1.initData.ID;if(_3.setEditableProperties){_3.setEditableProperties(_2);if(_3.markForRedraw)_3.markForRedraw();else if(_3.redraw)_3.redraw()}else{var _6=this.data.getParent(_1),_8=_6?_6.liveObject:null;if(_8&&_8.setChildEditableProperties)
+{_8.setChildEditableProperties(_3,_2,_1,this)}else{isc.addProperties(_3,_2)}}
+this.markForRedraw()},addWithWrapper:function(_1,_2){var _3=isc.addProperties({},this.wrapperFormDefaults),_4={type:this.wrapperFormDefaults._constructor,defaults:_3};if(_1.liveObject.schemaDataSource){var _5=_1.liveObject;_3.doNotUseDefaultBinding=true;_3.dataSource=_5.schemaDataSource;_3.serviceNamespace=_5.serviceNamespace;_3.serviceName=_5.serviceName}
+var _6=this.makeEditNode(_4);this.addComponent(_6,_2);return this.addComponent(_1,_6)},wrapperFormDefaults:{_constructor:"DynamicForm"}});isc.ClassFactory.defineInterface("Palette");isc.Palette.addInterfaceMethods({makeEditNode:function(_1){return this.makeNewComponent(_1)},makeNewComponent:function(_1){if(!_1)_1=this.getDragData();if(isc.isAn.Array(_1))_1=_1[0];var _2=_1.className||_1.type;var _3={type:_2,_constructor:_2,title:_1.title,icon:_1.icon,iconSize:_1.iconSize,showDropIcon:_1.showDropIcon,useEditMask:_1.useEditMask,autoGen:_1.autoGen};if(isc.isAn.Object(_1.editNodeProperties)){for(var _4 in _1.editNodeProperties){_3[_4]=_1.editNodeProperties[_4]}}
+if(_1.makeComponent){_3.liveObject=_1.makeComponent(_3);return _3}
+var _5=_1.defaults;_3.ID=_1.ID||(_5?isc.DS.getAutoId(_5):null);var _6=true;if(_1.loadData){_3.loadData=_1.loadData}else if(_1.wizardConstructor){_3.wizardConstructor=_1.wizardConstructor;_3.wizardDefaults=_1.wizardDefaults}else if(_1.liveObject){var _7=_1.liveObject;if(isc.isA.String(_7))_7=window[_7];_3.liveObject=_7}else{_3=this.createLiveObject(_1,_3);_6=false}
+if(_6)_3.defaults=_1.defaults;return _3},generateNames:true,typeCount:{},getNextAutoId:function(_1){if(_1==null)_1="Object";var _2;this.typeCount[_1]=this.typeCount[_1]||0;while(window[(_2=_1+this.typeCount[_1]++)]!=null){}
+return _2},createLiveObject:function(_1,_2){var _3=_1.className||_1.type,_4=isc.ClassFactory.getClass(_3),_5=isc.DS.getNearestSchema(_3),_6={},_7=(_5?_5.shouldCreateStandalone():true),_8=_1.initData||_1.defaults||{};if(_4&&_4.isA("Canvas"))_6.autoDraw=false;if(_1.initData&&_1.initData.title){_6.title=_1.initData.title}
+if(this.generateNames){var _9=_2.ID=_2.ID||_8[_5.getAutoIdField()]||this.getNextAutoId(_3);_6[_5.getAutoIdField()]=_9;if(_5&&_5.getField("title")&&!isc.isA.FormItem(_4)&&!_6.title){_6.title=_9}}
+_6=_2.initData=_2.defaults=isc.addProperties(_6,this.componentDefaults,_1.defaults);_6._constructor=_3;var _10;if(_4&&_7){_10=isc.ClassFactory.newInstance(_6)}else{_2.generatedType=true;_10=isc.shallowClone(_6)}
+_2.liveObject=_10;this.logInfo("palette created component, type: "+_3+", ID: "+_9+(this.logIsDebugEnabled("editing")?", initData: "+this.echo(_6):"")+", liveObject: "+this.echoLeaf(_10),"editing");return _2}});isc.defineClass("HiddenPalette","Class","Palette");if(isc.TreeGrid){isc.defineClass("TreePalette","TreeGrid","Palette");isc.A=isc.TreePalette.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canDragRecordsOut=true;isc.B.push(isc.A.recordDoubleClick=function isc_TreePalette_recordDoubleClick(){var _1=this.defaultEditContext;if(_1){if(isc.isA.String(_1))_1=this.creator[_1];if(isc.isAn.EditContext(_1)){var _2=this.makeEditNode(this.getDragData());if(_2){if(_1.getDefaultParent(_2,true)==null){isc.warn("No default parent can accept a component of this type")}else{_1.addNode(_2);isc.EditContext.selectCanvasOrFormItem(_2.liveObject,true)}}}}}
+,isc.A.transferDragData=function isc_TreePalette_transferDragData(_1){return[this.makeEditNode(this.getDragData())]}
+);isc.B._maxIndex=isc.C+2}
+if(isc.ListGrid){isc.defineClass("ListPalette","ListGrid","Palette");isc.A=isc.ListPalette.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canDragRecordsOut=true;isc.A.defaultFields=[{name:"title",title:"Title"}];isc.B.push(isc.A.recordDoubleClick=function isc_ListPalette_recordDoubleClick(){var _1=this.defaultEditContext;if(_1){if(isc.isA.String(_1))_1=isc.Canvas.getById(_1);if(isc.isAn.EditContext(_1)){_1.addNode(this.makeEditNode(this.getDragData()))}}}
+,isc.A.transferDragData=function isc_ListPalette_transferDragData(){return[this.makeEditNode(this.getDragData())]}
+);isc.B._maxIndex=isc.C+2}
+if(isc.TileGrid){isc.defineClass("TilePalette","TileGrid","Palette");isc.A=isc.TilePalette.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canDragRecordsOut=true;isc.A.defaultFields=[{name:"title",title:"Title"}];isc.B.push(isc.A.recordDoubleClick=function isc_TilePalette_recordDoubleClick(){var _1=this.defaultEditContext;if(_1){if(isc.isA.String(_1))_1=isc.Canvas.getById(_1);if(isc.isAn.EditContext(_1)){_1.addNode(this.makeEditNode(this.getDragData()))}}}
+,isc.A.transferDragData=function isc_TilePalette_transferDragData(){return[this.makeEditNode(this.getDragData())]}
+);isc.B._maxIndex=isc.C+2}
+if(isc.Menu){isc.defineClass("MenuPalette","Menu","Palette");isc.A=isc.MenuPalette.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canDragRecordsOut=true;isc.A.selectionType="single";isc.B.push(isc.A.itemClick=function isc_MenuPalette_itemClick(_1){var _2=this.defaultEditContext;if(_2){if(isc.isA.String(_2))_2=isc.Canvas.getById(_2);if(isc.isAn.EditContext(_2)){_2.addNode(this.makeEditNode(this.getDragData()))}}}
+,isc.A.transferDragData=function isc_MenuPalette_transferDragData(){return[this.makeEditNode(this.getDragData())]}
+);isc.B._maxIndex=isc.C+2}
+if(!isc.DataSource.get("EditPane")){isc.DataSource.create({ID:"EditPane",Contructor:"EditPane",fields:[{name:"children",type:"Canvas",multiple:true}]})}
+isc.defineClass("EditPane","Canvas","EditContext");isc.A=isc.EditPane.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canAcceptDrop=true;isc.A.contextMenu={autoDraw:false,data:[{title:"Clear",click:"target.removeAll()"}]};isc.A.editingOn=true;isc.A.persistCoordinates=true;isc.A.canDrag=true;isc.A.dragAppearance="none";isc.A.overflow="hidden";isc.A.selectedComponents=[];isc.A.canMultiSelect=true;isc.A.outlineBorderStyle="2px dashed red";isc.B.push(isc.A.initWidget=function isc_EditPane_initWidget(){this.rootLiveObject=this;this.rootComponent={_constructor:"EditPane"};this.Super("initWidget",arguments)}
+,isc.A.getObjectField=function isc_EditPane_getObjectField(_1){var _2=isc.ClassFactory.getClass(_1);if(isc.isA.Canvas(_2)){return"children"}else{return null}}
+,isc.A.drop=function isc_EditPane_drop(){var _1=isc.EH.dragTarget;if(!_1.isA("Palette"))return this.Super("drop",arguments);var _2=_1.transferDragData(),_3=(isc.isAn.Array(_2)?_2[0]:_2);if(!_3)return false;var _4=this;this.requestLiveObject(_3,function(_3){if(_3)_4.addNodeAtCursor(_3)},_1)
+return isc.EH.STOP_BUBBLING}
+,isc.A.nodeAdded=function isc_EditPane_nodeAdded(_1){if(this.creator&&this.creator.editingOn)this.enableEditing(_1);if(_1.useEditMask)_1.liveObject.showEditMask()}
+,isc.A.addNodeAtCursor=function isc_EditPane_addNodeAtCursor(_1){this.addNode(_1);var _2=_1.liveObject;_2.moveTo(this.getOffsetX(),this.getOffsetY())}
+,isc.A.getDefaultParent=function isc_EditPane_getDefaultParent(_1,_2){return this.getEditNodeTree().getRoot()}
+,isc.A.removeChild=function isc_EditPane_removeChild(_1,_2){this.Super("removeChild",arguments);var _3=this.getEditNodeArray().find("liveObject",_1);if(_3){this.removeNode(_3,true)}
+this.selectedComponents.remove(_1)}
+,isc.A.removeSelection=function isc_EditPane_removeSelection(_1){if(this.selectedComponents.length>0){while(this.selectedComponents.length>0){this.selectedComponents[0].destroy()}}else{_1.destroy()}}
+,isc.A.click=function isc_EditPane_click(){isc.Canvas.hideResizeThumbs()}
+,isc.A.setEditMode=function isc_EditPane_setEditMode(_1){if(_1==null)_1=true;if(this.editingOn==_1)return;this.editingOn=_1;var _2=this.getEditNodeArray().getProperty("liveObject");_2.map("setEditMode",_1,this)}
+,isc.A.childResized=function isc_EditPane_childResized(_1){var _2=this.Super("childResized",arguments);this.saveCoordinates(_1);return _2}
+,isc.A.childMoved=function isc_EditPane_childMoved(_1,_2,_3){var _4=this.Super("childMoved",arguments);this.saveCoordinates(_1);var _5=this.selectedComponents;if(_5.length>0&&_5.contains(_1)){for(var i=0;i<_5.length;i++){if(_5[i]!=_1){_5[i].moveBy(_2,_3)}}}
+return _4}
+,isc.A.saveCoordinates=function isc_EditPane_saveCoordinates(_1){if(!this.persistCoordinates)return;var _2=this.getEditNodeArray().find("liveObject",_1);if(!_2)return;_2.initData=isc.addProperties(_2.initData,{left:_1.getLeft(),top:_1.getTop(),width:_1.getWidth(),height:_1.getHeight()})}
+,isc.A.getSaveData=function isc_EditPane_getSaveData(){var _1=this.getEditNodeTree(),_2=_1.getChildren(_1.getRoot()),_3=[];for(var i=0;i<_2.length;i++){var _5=_2[i],_6=_5.liveObject;var _7={type:_5.type,defaults:_5.defaults};if(_6.getSaveData)_7=_6.getSaveData(_7);_3.add(_7)}
+return _3}
+,isc.A.mouseDown=function isc_EditPane_mouseDown(){if(!this.editingOn||!this.canMultiSelect||isc.EH.getTarget()!=this)return;var _1=isc.EH.getTarget();if(this.selector==null){this.selector=isc.Canvas.create({autoDraw:false,keepInParentRect:true,left:isc.EH.getX(),top:isc.EH.getY(),redrawOnResize:false,overflow:"hidden",border:"1px solid blue"});this.addChild(this.selector)}
+this.startX=this.getOffsetX();this.startY=this.getOffsetY();this.resizeSelector();this.selector.show();this.updateCurrentSelection()}
+,isc.A.dragMove=function isc_EditPane_dragMove(){if(this.selector)this.resizeSelector()}
+,isc.A.mouseUp=function isc_EditPane_mouseUp(){if(this.selector)this.selector.hide()}
+,isc.A.dragStop=function isc_EditPane_dragStop(){if(this.selector)this.selector.hide()}
+,isc.A.setOutline=function isc_EditPane_setOutline(_1){if(!_1)return;if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){_1[i]._eventMask.setBorder(this.outlineBorderStyle)}}
+,isc.A.clearOutline=function isc_EditPane_clearOutline(_1){if(!_1)return;if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){_1[i]._eventMask.setBorder("none")}}
+,isc.A.updateCurrentSelection=function isc_EditPane_updateCurrentSelection(){if(!this.children)return;var _1=this.selectedComponents;this.selectedComponents=[];for(var i=0;i<this.children.length;i++){var _3=this.children[i];if(this.selector.intersects(_3)){_3=this.deriveSelectedComponent(_3);if(_3&&!this.selectedComponents.contains(_3)){this.selectedComponents.add(_3)}}}
+this.setOutline(this.selectedComponents);_1.removeList(this.selectedComponents);this.clearOutline(_1);var _4=this.selectedComponents.getProperty("ID");window.status=_4.length?"Current Selection: "+_4:""}
+,isc.A.deriveSelectedComponent=function isc_EditPane_deriveSelectedComponent(_1){if(_1.masterElement)return this.deriveSelectedComponent(_1.masterElement);if(!_1.parentElement||_1.parentElement==this){if(_1._eventMask)return _1;return null}
+return this.deriveSelectedComponent(_1.parentElement)}
+,isc.A.resizeSelector=function isc_EditPane_resizeSelector(){var x=this.getOffsetX(),y=this.getOffsetY();if(this.selector.keepInParentRect){if(x<0)x=0;var _3=this.selector.parentElement.getVisibleHeight();if(y>_3)y=_3}
+this.selector.resizeTo(Math.abs(x-this.startX),Math.abs(y-this.startY));if(x<this.startX)this.selector.setLeft(x);else this.selector.setLeft(this.startX);if(y<this.startY)this.selector.setTop(y);else this.selector.setTop(this.startY);this.updateCurrentSelection()}
+,isc.A.getSelectedComponents=function isc_EditPane_getSelectedComponents(){return this.selectedComponents.duplicate()}
+);isc.B._maxIndex=isc.C+24;if(isc.TreeGrid){isc.ClassFactory.defineClass("EditTree","TreeGrid","EditContext");isc.A=isc.EditTree.getPrototype();isc.A.canDragRecordsOut=false;isc.A.canAcceptDroppedRecords=true;isc.A.canReorderRecords=true;isc.A.fields=[{name:"ID",title:"ID",width:"*"},{name:"type",title:"Type",width:"*"}];isc.A.selectionType=isc.Selection.SINGLE;isc.A.autoShowParents=true;isc.A=isc.EditTree.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_EditTree_initWidget(){this.Super("initWidget",arguments);this.setData(this.getEditNodeTree())}
+,isc.A.willAcceptDrop=function isc_EditTree_willAcceptDrop(){if(!this.Super("willAcceptDrop",arguments))return false;var _1=this.getEventRow(),_2=this.getDropFolder(),_3=this.ns.EH.dragTarget.getDragData();if(_3==null)return false;if(isc.isAn.Array(_3)){if(_3.length==0)return false;_3=_3[0]}
+if(_2==null)_2=this.data.getRoot();var _4=_3.className||_3.type;this.logInfo("checking dragType: "+_4+" against dropLiveObject: "+_2.liveObject,"editing");return this.canAddToParent(_2,_4)}
+,isc.A.folderDrop=function isc_EditTree_folderDrop(_1,_2,_3,_4){if(_4!=this&&!_4.isA("Palette")){return this.Super("folderDrop",arguments)}
+if(_4!=this){_1=_4.transferDragData()}
+var _5=(isc.isAn.Array(_1)?_1[0]:_1);_5.dropped=true;this.logInfo("sourceWidget is a Palette, dropped node of type: "+_5.type," editing");var _6=this;this.requestLiveObject(_5,function(_9){if(_9==null)return;if(_4==_6){var _7=this.data.getParent(_5);if(_2==_7){var _8=this.data.getChildren(_7).indexOf(_5);if(_8!=null&&_8<=_3)_3--}
+_6.removeComponent(_5)}
+_6.addNode(_9,_2,_3)},_4)}
+,isc.A.nodeAdded=function isc_EditTree_nodeAdded(_1){this.selection.selectSingle(_1);if(this.autoShowParents)this.showParents(_1);if(this.creator.editingOn)this.enableEditing(_1)}
+,isc.A.getDefaultParent=function isc_EditTree_getDefaultParent(_1,_2){var _3=_1.className||_1.type,_4=this.getSelectedRecord();while(_4&&!this.canAddToParent(_4,_3))_4=this.data.getParent(_4);var _5=this.data.getRoot()
+if(_2){if(!_4&&this.canAddToParent(_5,_3))return _5;return _4}
+return _4||_5}
+,isc.A.showParents=function isc_EditTree_showParents(_1){var _2=this.data.getParents(_1),_3=_2.findAll("type","Tab");if(_3){for(var i=0;i<_3.length;i++){var _5=_3[i],_6=this.data.getParent(_5),_7=this.getLiveObject(_5),_8=this.getLiveObject(_6);_8.selectTab(_7)}}}
+,isc.A.serializeComponents=function isc_EditTree_serializeComponents(_1,_2){var _3=_2?[this.data.root]:this.data.getChildren(this.data.root).duplicate();return this.serializeEditNodes(_3,_1)}
+,isc.A.serializeEditNodes=function isc_EditTree_serializeEditNodes(_1,_2){for(var i=0;i<_1.length;i++){var _4=_1[i]=isc.addProperties({},_1[i]),_5=isc.ClassFactory.getClass(_4.type),_6=_4.initData=isc.addProperties({},_4.initData);if(_5&&_5.isA("Canvas")&&_6&&_6.visibility!=isc.Canvas.HIDDEN&&_6.autoDraw!==false)
+{_6.autoDraw=true}}
+this.serverless=_2;this.initDataBlocks=[];this.map("getSerializeableTree",_1);this.serverless=null;var _7=isc.EditContext.serializeInitData(this.initDataBlocks);return _7}
+,isc.A.getSerializeableTree=function isc_EditTree_getSerializeableTree(_1,_2){var _3=_1.type,_4=isc.addProperties({},_1.initData);var _5=isc.ClassFactory.getClass(_3);this.logInfo("node: "+this.echoLeaf(_1)+" with type: "+_3);if(_5&&_5.isA("DataSource")&&!_5.isA("MockDataSource")){if(this.initDataBlocks){var _6=this.initDataBlocks.find("ID",_4.ID)||this.initDataBlocks.find("loadID",_4.ID);if(_6&&_6.$schemaId=="DataSource")return}
+if(!this.serverless){_4={_constructor:"DataSource",$schemaId:"DataSource",loadID:_4.ID}}else{var _7=_1.liveObject;_4=_7.getSerializeableFields();_4._constructor=_7.Class;_4.$schemaId="DataSource"}}
+this.convertActions(_1,_4,_5);var _8=this.data.getChildren(_1);if(!_8){if(this.initDataBlocks)this.initDataBlocks.add(_4);return}
+this.addChildData(_4,_8);if(_2)return _4;if(this.initDataBlocks)this.initDataBlocks.add(_4)}
+,isc.A.addChildData=function isc_EditTree_addChildData(_1,_2){var _3=isc.DS.get(_1._constructor);for(var i=0;i<_2.length;i++){var _5=_2[i],_6=_5.initData._constructor,_7=isc.addProperties({},_5.initData),_8=_7.parentProperty||_3.getObjectField(_6),_9=_3.getField(_8);this.logInfo("serializing: child of type: "+_6+" goes in parent field: "+_8,"editing");if((isc.isA.Canvas(_5.liveObject)&&!_5.liveObject._generated)||isc.isA.DataSource(_5.liveObject))
+{_7="ref:"+_7.ID;this.getSerializeableTree(_5)}else{_7=this.getSerializeableTree(_5,true)}
+var _10=_1[_8];if(_9.multiple){if(!_10)_10=_1[_8]=[];_10.add(_7)}else{_1[_8]=_7}}}
+,isc.A.convertActions=function isc_EditTree_convertActions(_1,_2,_3){for(var _4 in _2){var _5=_2[_4];if(!isc.isAn.Object(_5)||isc.isA.StringMethod(_5))continue;var _6;if(_3&&_3.getField)_6=_3.getField(_4).type;if(_6&&(_6!="StringMethod"))continue;var _7=_1.liveObject[_4],_8=_7?_7.iscAction:null,_9;if(_8)_9=true;if(_9)_2[_4]=isc.StringMethod.create({value:_5})}}
+);isc.B._maxIndex=isc.C+11}
+isc.defineClass("FormItemProxyCanvas","Canvas");isc.A=isc.FormItemProxyCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoDraw=false;isc.A.canDrop=true;isc.B.push(isc.A.setFormItem=function isc_FormItemProxyCanvas_setFormItem(_1){this.formItem=_1;this.syncWithFormItemPosition();this.sendToBack();this.show()}
+,isc.A.syncWithFormItemPosition=function isc_FormItemProxyCanvas_syncWithFormItemPosition(){if(!this.formItem||!this.formItem.form)return;this.setPageLeft(this.formItem.getPageLeft());this.setPageTop(this.formItem.getPageTop());this.setWidth(this.formItem.getVisibleWidth());this.setHeight(this.formItem.getVisibleHeight())}
+);isc.B._maxIndex=isc.C+2;if(isc.DynamicForm){isc.defineClass("PropertySheet","DynamicForm");isc.A=isc.PropertySheet.getPrototype();isc.A.autoChildItems=true;isc.A.browserSpellCheck=false;isc.A.autoChildDefaults={cellStyle:"propSheetValue",titleStyle:"propSheetTitle",showHint:false};isc.A.GroupItemDefaults={cellStyle:null};isc.A.ExpressionItemDefaults={width:"*",height:18,showActionIcon:true};isc.A.ActionMenuItemDefaults={width:"*",height:18};isc.A.SelectItemDefaults={height:20,width:"*"};isc.A.DateItemDefaults={width:"*"};isc.A.TextItemDefaults={width:"*",height:20};isc.A.StaticTextItemDefaults={width:"*",height:20,textBoxStyle:"propSheetField"};isc.A.ColorItemDefaults={width:"*",height:16,pickerIconHeight:16,pickerIconWidth:16,pickerIconSrc:"[SKIN]/DynamicForm/PropSheet_ColorPicker_icon.png",textBoxStyle:"propSheetField"};isc.A.HeaderItemDefaults={cellStyle:"propSheetHeading"};isc.A.TextAreaItemProperties={width:"*"};isc.A.CheckboxItemDefaults={showTitle:true,showLabel:false,getTitleHTML:function(){if(this[this.form.titleField]!=null)return this[this.form.titleField];return this[this.form.fieldIdProperty]}};isc.A.SectionItemDefaults={cellStyle:"propSheetSectionHeaderCell"};isc.A.titleAlign="left";isc.A.titleWidth=120;isc.A.cellSpacing=0;isc.A.cellPadding=0;isc.A.backgroundColor="white";isc.A.requiredTitlePrefix="<span style='color:green'>";isc.A.requiredTitleSuffix="</span>";isc.A.titleSuffix="";isc.A.clipItemTitles=true}
+if(isc.ListGrid&&isc.DynamicForm){isc.defineClass("ListEditor",isc.Layout);isc.A=isc.ListEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.vertical=false;isc.A.gridConstructor=isc.ListGrid;isc.A.gridDefaults={editEvent:"click",listEndEditAction:"next",autoParent:"gridLayout",selectionType:isc.Selection.SINGLE,recordClick:"this.creator.recordClick(record)",editorEnter:"if (this.creator.moreButton) this.creator.moreButton.enable()",selectionChanged:function(){if(this.anySelected()&&this.creator.moreButton){this.creator.moreButton.enable()}},contextMenu:{data:[{title:"Remove",click:"target.creator.removeRecord()"}]}};isc.A.gridButtonsDefaults={_constructor:isc.HLayout,autoParent:"gridLayout",height:10,width:10,layoutMargin:6,membersMargin:10,overflow:isc.Canvas.VISIBLE};isc.A.newButtonTitle="New";isc.A.newButtonDefaults={_constructor:isc.AutoFitButton,autoParent:"gridButtons",click:"this.creator.newRecord()"};isc.A.moreButtonTitle="More..";isc.A.moreButtonDefaults={_constructor:isc.AutoFitButton,autoParent:"gridButtons",click:"this.creator.editMore()",disabled:true};isc.A.removeButtonTitle="Remove";isc.A.removeButtonDefaults={_constructor:isc.AutoFitButton,autoParent:"gridButtons",click:"this.creator.removeRecord()"};isc.A.formDefaults={_constructor:isc.DynamicForm,autoParent:"formLayout",overflow:isc.Canvas.AUTO};isc.A.formButtonsDefaults={_constructor:isc.HLayout,autoParent:"formLayout",height:10,width:10,layoutMargin:6,membersMargin:10,overflow:isc.Canvas.VISIBLE};isc.A.saveButtonTitle="Save";isc.A.saveButtonDefaults={_constructor:isc.AutoFitButton,autoParent:"formButtons",click:"this.creator.saveRecord();"};isc.A.cancelButtonTitle="Cancel";isc.A.cancelButtonDefaults={_constructor:isc.AutoFitButton,autoParent:"formButtons",click:"this.creator.cancelChanges()"};isc.A.resetButtonTitle="Reset";isc.A.resetButtonDefaults={_constructor:isc.AutoFitButton,autoParent:"formButtons",click:"this.creator.form.resetValues()"};isc.A.gridLayoutDefaults={_constructor:isc.VLayout};isc.A.gridButtonsOrientation="left";isc.A.formLayoutDefaults={_constructor:isc.VLayout,autoFocus:true};isc.A.animateMembers=true;isc.A.membersMargin=10;isc.A.confirmLoseChangesMessage="Discard changes?";isc.A.formGroup=["formLayout","form","formButtons","saveButton","cancelButton","resetButton"];isc.A.gridButtonsGroup=["gridButtons","newButton","moreButton"];isc.B.push(isc.A.draw=function isc_ListEditor_draw(){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return this;return this.Super("draw",arguments)}
+,isc.A.initWidget=function isc_ListEditor_initWidget(){this.Super("initWidget",arguments);if(!this.inlineEdit)this.showMoreButton=this.showMoreButton||false;this.addAutoChild("gridLayout");this.addAutoChild("grid",{_constructor:this.gridConstructor});this.addAutoChildren(this.gridButtonsGroup);this.addAutoChildren(this.formGroup)}
+,isc.A.configureAutoChild=function isc_ListEditor_configureAutoChild(_1,_2){if(isc.isA.Button(_1))_1.title=this[_2+"Title"];if(_1==this.grid){_1.dataSource=this.dataSource;_1.fields=this.fields;_1.saveLocally=this.saveLocally;_1.canEdit=this.inlineEdit}
+if(this.gridButtonsOrientation==isc.Canvas.RIGHT){if(_1==this.gridLayout)_1.vertical=false;if(_1==this.formLayout)_1.vertical=false;if(_1==this.gridButtons)_1.vertical=true;if(_1==this.formButtons)_1.vertical=true}
+if(_1==this.form){_1.dataSource=this.dataSource;_1.fields=this.formFields}
+if(this.inlineEdit){if(_1==this.formLayout)_1.visibility=isc.Canvas.HIDDEN}else{if(_1==this.gridLayout)_1.showResizeBar=true}}
+,isc.A.setDataSource=function isc_ListEditor_setDataSource(_1,_2){this.dataSource=_1||this.dataSource;if(this.grid!=null){this.grid.setDataSource(_1,_2);this.form.setDataSource(_1,_2)}}
+,isc.A.setData=function isc_ListEditor_setData(_1){if(_1==null)_1=[];if(_1.dataSource)this.setDataSource(_1.dataSource);if(this.grid!=null){this.grid.setData(_1);this.form.clearValues()}else{isc.addProperties(this.gridDefaults,this.gridProperties||{},{data:_1})}}
+,isc.A.getData=function isc_ListEditor_getData(){if(this.inlineEdit)this.grid.endEditing();return this.grid.getData()}
+,isc.A.cancelChanges=function isc_ListEditor_cancelChanges(){this.form.clearValues();this.showList()}
+,isc.A.showList=function isc_ListEditor_showList(){if(this.inlineEdit){this.formLayout.animateHide({effect:"wipe",startFrom:"R"});this.gridLayout.animateShow({effect:"wipe",startFrom:"R"})}}
+,isc.A.showForm=function isc_ListEditor_showForm(){if(this.inlineEdit){this.gridLayout.animateHide({effect:"wipe",startFrom:"R"});this.formLayout.animateShow({effect:"wipe",startFrom:"R"})}}
+,isc.A.recordClick=function isc_ListEditor_recordClick(_1){if(this.inlineEdit)return;var _2=this;var _3=function(_4){if(_4){_2.currentRecord=_1;if(!_2.inlineEdit)_2.form.editRecord(_1);_2.form.setValues(isc.addProperties({},_2.grid.getSelectedRecord()))}}
+if(!this.form.valuesHaveChanged())_3(true);else this.confirmLoseChanges(_3)}
+,isc.A.getEditRecord=function isc_ListEditor_getEditRecord(){var _1=this.grid.getEditRow();if(_1!=null){return this.grid.getEditedRecord(_1)}else{return isc.addProperties({},this.grid.getSelectedRecord())}}
+,isc.A.editMore=function isc_ListEditor_editMore(){this.currentRecord=this.getEditRecord();this.showForm();this.form.setValues(this.currentRecord)}
+,isc.A.newRecord=function isc_ListEditor_newRecord(){if(this.inlineEdit)return this.grid.startEditingNew();var _1=this;var _2=function(_3){if(_3){_1.grid.deselectAllRecords();_1.showForm();_1.form.editNewRecord()}}
+if(!this.form.valuesHaveChanged())_2(true);else this.confirmLoseChanges(_2)}
+,isc.A.removeRecord=function isc_ListEditor_removeRecord(){this.form.clearValues();this.grid.removeSelectedData()}
+,isc.A.saveRecord=function isc_ListEditor_saveRecord(){if(!this.form.validate())return false;var _1=this.form.getValues();this.showList();if(this.form.saveOperationType=="add"){this.grid.addData(_1)}else{if(this.inlineEdit&&this.grid.getEditRow()!=null){var _2=this.grid.getEditRow();if(this.grid.data[_2]!=null)this.grid.updateData(_1)
+else this.grid.setEditValues(_2,_1)}else{this.grid.updateData(_1)}}
+return true}
+,isc.A.confirmLoseChanges=function isc_ListEditor_confirmLoseChanges(_1){isc.confirm(this.confirmLoseChangesMessage,_1)}
+,isc.A.validate=function isc_ListEditor_validate(){if(this.form.isVisible()&&this.form.valuesHaveChanged()){return this.form.validate()}
+return true}
+);isc.B._maxIndex=isc.C+17}
+isc.ClassFactory.defineClass("ViewLoader",isc.Label);isc.A=isc.ViewLoader.getPrototype();isc.A.loadingMessage="Loading View... ${loadingImage}";isc.A.align=isc.Canvas.CENTER;isc.A.allowContentAndChildren=true;isc.A.httpMethod="GET";isc.A.useSimpleHttp=true;isc.A.transformXML=true;isc.A.overflow="hidden";isc.A=isc.ViewLoader.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_ViewLoader_initWidget(){this.Super(this.$oc);if(this.placeholder)this.addChild(this.placeholder);else this.contents=this.getLoadingMessage()}
+,isc.A.draw=function isc_ViewLoader_draw(){if(!this.readyToDraw())return this;this.Super("draw",arguments);if(this.view){this.addChild(this.view);this.view.show()}else if(this.viewURL&&!this.loadingView()){this.setViewURL()}
+return this}
+,isc.A.layoutChildren=function isc_ViewLoader_layoutChildren(){this.Super("layoutChildren",arguments);var _1=this.children;if(!_1||_1.length==0)return;var _2=this.children[0],_3=this.getWidth(),_4=this.getHeight();if(_2.$pn!=null)_3=null;if(_2.$po!=null)_4=null;_2.setRect(0,0,_3,_4)}
+,isc.A.destroy=function isc_ViewLoader_destroy(){if(this.placeholder)this.placeholder.destroy();if(this.view)this.view.destroy();this.Super("destroy",arguments)}
+,isc.A.setPlaceholder=function isc_ViewLoader_setPlaceholder(_1){if(this.placeholder)this.placeholder.destroy();this.placeholder=_1;this.addChild(_1);this.placeholder.sendToBack()}
+,isc.A.setViewURL=function isc_ViewLoader_setViewURL(_1,_2,_3){if(_1!=null)this.viewURL=_1;_1=this.viewURL;if(this.placeholder){this.placeholder.show();this.placeholder.bringToFront()}
+if(this.view!=null){this.view.hide();this.setContents(this.getLoadingMessage())}
+var _4={},_5=this.useSimpleHttp,_6=this.httpMethod,_7=false;if(!isc.rpc.xmlHttpRequestAvailable()){this.logInfo("XMLHttpRequest not available, using frames comm and expecting RPCResponse");_4={};_5=false;_6="POST";_7=false}
+var _8=isc.addProperties({showPrompt:false,actionURL:this.viewURL,httpMethod:_6,useSimpleHttp:_5,bypassCache:!this.allowCaching,params:isc.addProperties(_4,this.viewURLParams,_2)},this.viewRPCProperties,_3,{evalResult:_7,suppressAutoDraw:true,willHandleError:true,callback:"if(window."+this.getID()+")"+this.getID()+".$40p(rpcRequest, rpcResponse, data)"});if(!_8.evalVars)_8.evalVars={};_8.evalVars.viewLoader=this;this.$40t=isc.rpc.sendProxied(_8,true).transactionNum}
+,isc.A.loadingView=function isc_ViewLoader_loadingView(){return this.$40t!=null}
+,isc.A.$40p=function isc_ViewLoader__loadViewReply(_1,_2,_3){if(_1.transactionNum!=this.$40t){return}
+delete this.$40t;this.$40q=false;if(_2.status!=isc.RPCResponse.STATUS_SUCCESS){if(this.handleError(_1,_2)===false)return}
+try{if(_1.actionURL.endsWith(".xml")&&this.transformXML){var _4=isc.Canvas._canvasList;var _5=_4.length;isc.xml.toComponents(_3);if(!this.$40q){for(var i=_4.length;i>=_5;i--){var _7=_4[i];if(_7!=null&&isc.isA.Canvas(_7)&&_7.parentElement==null&&_7.masterElement==null)
+{this.setView(this.transformView(_7));break}}}
+this.$40r()}else{var _8=this;isc.Class.globalEvalWithCapture(_3,function(_9,_10){isc.Log.logWarn("firing the callback from global eval with...");isc.Log.logWarn('viewLoader is:'+_8);if(_10){_8.handleError(_1,_2,_10)}else{_8.$40r(_9)}},_1.evalVars)}}catch(e){this.handleError(_1,_2,e)}}
+,isc.A.$40r=function isc_ViewLoader__loadViewReplyComplete(_1){if(!this.$40q&&_1){for(var i=_1.length;i>=0;i--){var _3=_1[i];var _4=window[_3];if(_4&&isc.isA.Canvas(_4)&&_4.parentElement==null&&_4.masterElement==null)
+{this.setView(this.transformView(_4));break}}}
+if(!this.$40q){this.logWarn("setView() not explicitly called by loaded view and could"+" not be autodetected for view: "+this.getID())}
+this.viewLoaded(this.view)}
+,isc.A.transformView=function isc_ViewLoader_transformView(_1){return _1}
+,isc.A.handleError=function isc_ViewLoader_handleError(_1,_2,_3){this.logWarn("ViewLoader received bad response:\n"+isc.echo(_2.data));this.setView(isc.Label.create({contents:_3?_3.toString():_2.data}));return false}
+,isc.A.setView=function isc_ViewLoader_setView(_1){if(_1!=null&&_1==this.view)return;this.$40q=true;this.setContents(" ");if(this.view)this.view.destroy();this.view=_1;if(_1==null)return;this.addChild(_1,null,false);this.layoutChildren();_1.draw();this.logInfo("showing view: "+_1);if(this.placeholder)this.placeholder.hide();this.contents=" "}
+,isc.A.getView=function isc_ViewLoader_getView(){return this.view}
+,isc.A.viewLoaded=function isc_ViewLoader_viewLoaded(_1){}
+,isc.A.getLoadingMessage=function isc_ViewLoader_getLoadingMessage(){return this.loadingMessage==null?" ":this.loadingMessage.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)})}
+);isc.B._maxIndex=isc.C+15;isc.ClassFactory.defineClass("HTMLFlow","Canvas");isc.A=isc.HTMLFlow;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$49v=0;isc.A.$49w=[];isc.B.push(isc.A.executeScript=function isc_c_HTMLFlow_executeScript(_1,_2,_3){this.$49w[this.$49v]={callback:_2,displayErrors:_3};this.$49v++;this.getScript(_1,"isc.HTMLFlow.$49x("+this.$49v+",htmlFragments, scripts);")}
+,isc.A.$49x=function isc_c_HTMLFlow__completeExecuteScript(_1,_2,_3){var _4=this.$49w[_1];delete this.$49w[_1];var _5=true;for(var i=0;i<this.$49w.length;i++){if(this.$49w[i]!=null){_5=false;break}}
+if(_5)this.$49v=0;isc.Class.globalEvalWithCapture(_3,_4.callback,null,_4.displayErrors)}
+,isc.A.getScript=function isc_c_HTMLFlow_getScript(_1,_2,_3,_4){var _5=_1;var _6,_7,_8,_9;while((_6=_1.match(/<!--/i))!=null){_7=_1.match(/-->/i);if(_7==null||(_7.index<_6.index)){this.logWarn('HTMLFlow content contains an opening comment tag "<!--"'+' with no closing tag "-->", or vice versa. We recommend you review this '+'HTML (original HTML follows):\n'+_5);if(_7){_8=_7.index;_9=_8+3}else{_8=_6.index;_9=_8+4}}else{_8=_6.index;_9=_7.index+3}
+_1=_1.slice(0,_8)+_1.slice(_9,_1.length)}
+var _10=[];var _11=[];var _12=[];var _13=_1;_1=null;var _14;while((_14=_13.match(/(<script([^>]*)?>)/i))!=null){var _15=_14[1];_12.add(_13.slice(0,_14.index));_10.add(null);_11.add(null);_13=_13.slice(_14.index+_15.length,_13.length)
+var _16=_13.match(/<\/script>/i),_17=_13.match(/(<script([^>]*)?>)/i);if(_16==null||(_17&&(_16.index>_17.index))){this.logWarn("HTMLFlow content contains an opening <script ...> tag "+"with no closing tag, or vice versa. Stripping out this tag:"+_15);continue}
+var _18=_13.slice(0,_16.index);_13=_13.slice(_16.index+9,_13.length);var _19=(_15.match(/<script\s*(language|type)/i)==null)||(_15.match(/<script\s*(language|type)\s*=["']?[^'"]*(javascript|ecmascript|jscript)[^'"]*["']?/i)
+!=null);if(!this.shouldLoadScript(_15))continue;if(_19){var _20;if(_20=_15.match(/src=('|")?([^'"> ]*)/i)){_11.add(_20[2]);_10.add(null)}else{if(!isc.isA.String(_18)||isc.isAn.emptyString(_18))continue;_10.add(_18);_11.add(null)}
+_12.add(null)}else{this.logWarn("html to be evaluated contains non-JS script tags - these will be"+" ignored. Tag: "+_15)}}
+if(_12.length==0)
+_12=[_13];else
+_12.push(_13);if(_11.length>0&&!_4){if(isc.RPCManager){var _21=false;for(var i=0;i<_11.length;i++){if(_11[i]==null){continue}
+isc.RPCManager.sendRequest({actionURL:_11[i],serverOutputAsString:true,httpMethod:"GET",clientContext:{scriptIndex:i,scripts:_10,scriptIncludes:_11,callback:_2,htmlFragments:(_3?_12:[_5])},callback:"isc.HTMLFlow.loadedRemoteScriptBlock(data, rpcResponse.clientContext)"});_21=true}
+if(_21)return}else{this.logWarn("html contains <script src=> blocks with the "+"following target URLs: "+_11+" If you want "+"these to be dynamically loaded, please include the "+"DataBinding module or include the contents of "+"these files in inline <script> blocks.")}}
+var _23=_10.join("\n");this.fireCallback(_2,"htmlFragments,scripts",[_3?_12:[_5],_10])}
+,isc.A.shouldLoadScript=function isc_c_HTMLFlow_shouldLoadScript(_1){var _2=_1.match(/ISC_([^.]*)\.js/i);if(_2&&isc["module_"+_2[1]])return false;var _2=_1.match(/load_skin\.js/i);if(_2)return false;return true}
+,isc.A.loadedRemoteScriptBlock=function isc_c_HTMLFlow_loadedRemoteScriptBlock(_1,_2){var _3=_2.scriptIndex,_4=_2.scripts,_5=_2.scriptIncludes;_4[_3]=_1;delete _5[_3];for(var i=0;i<_5.length;i++){if(_5[i]!=null)return}
+this.fireCallback(_2.callback,"htmlFragments,scripts",[_2.htmlFragments,_4])}
+);isc.B._maxIndex=isc.C+5;isc.A=isc.HTMLFlow.getPrototype();isc.A.defaultWidth=200;isc.A.defaultHeight=1;isc.A.allowContentAndChildren=true;isc.A.cursor="auto";isc.A.loadingMessage=" ${loadingImage}";isc.A.httpMethod="GET";isc.A.useSimpleHttp=true;isc.A.evalScriptBlocks=true;isc.A.captureSCComponents=true;isc.A=isc.HTMLFlow.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$525=0;isc.B.push(isc.A.initWidget=function isc_HTMLFlow_initWidget(){if(this.contentsType=="page"&&this.overflow=="visible")this.setOverflow("auto")}
+,isc.A.draw=function isc_HTMLFlow_draw(){if(!this.readyToDraw())return this;this.Super("draw",arguments);var _1;if(this.containsIFrame())return this;else if(this.canSelectText===_1)this.canSelectText=true;if(this.contentsURL&&!(this.$533==this.contentsURL||this.loadingContent()))
+{this.setContentsURL()}
+return this}
+,isc.A.setContentsURL=function isc_HTMLFlow_setContentsURL(_1,_2,_3){if(this.contentsType=="page"){return this.invokeSuper(isc.HTMLFlow,"setContentsURL",_1,_2)}
+if(_1!=null)this.contentsURL=_1;if(this.loadingMessage){var _4=this.loadingMessage==null?" ":this.loadingMessage.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)});this.setContents(_4)}
+var _5=isc.addProperties({},this.contentsURLParams,_2),_6=this.useSimpleHttp,_7=this.httpMethod,_8=true;var _9=isc.addProperties({showPrompt:false,actionURL:this.contentsURL,httpMethod:_7,useSimpleHttp:_6,bypassCache:!this.allowCaching,params:_5},this.contentRPCProperties,_3,{willHandleError:true,serverOutputAsString:_8,callback:this.getID()+".$40s(rpcRequest, rpcResponse)"});this.$40t=isc.rpc.sendProxied(_9,true).transactionNum}
+,isc.A.loadingContent=function isc_HTMLFlow_loadingContent(){return this.$40t!=null}
+,isc.A.$40s=function isc_HTMLFlow__loadContentReply(_1,_2){var _3=_2.data;if(_2.status!=isc.RPCResponse.STATUS_SUCCESS){if(this.handleError(_1,_2)===false)return}
+if(_1.transactionNum!=this.$40t){return}
+isc.HTMLFlow.getScript(_3,{target:this,methodName:"$49y"},true,!this.evalScriptBlocks)}
+,isc.A.$526=function isc_HTMLFlow__captureSCComponentsRelPos(_1){if(!_1.parentElement)this.addChild(_1);var _2="HTMLFlow"+this.$525++;_1.htmlElement=_2;var _3='<DIV id="'+_2+'"></DIV>';return _3}
+,isc.A.$527=function isc_HTMLFlow__captureSCComponentsAbsPos(_1){if(!_1.parentElement)this.addChild(_1);return null}
+,isc.A.$49y=function isc_HTMLFlow__setContentsAndExecute(_1,_2){this.setContents(this.transformHTML(_1.join("")));if(_1.length>1){if(this.evalScriptBlocks){if(this.isDirty())this.redraw();if(this.captureSCComponents){this.$528=isc.Canvas.autoDraw;isc.setAutoDraw(false)}
+for(var i=0;i<_1.length;i++){var _4=null;var _5=this;if(this.captureSCComponents)_4=function(_8,_9){if(!_8.length)return;_1[i]=_8.map(function(_10){var _6=window[_10];if(!_6||!isc.isA.Canvas(_6))return null;if(_6.position==isc.Canvas.RELATIVE)
+return _5.$526(_6);else return _5.$527(_6)}).join("")};if(_2[i])isc.Class.globalEvalWithCapture(_2[i],_4)}
+if(this.captureSCComponents){this.setContents(this.transformHTML(_1.join("")));if(this.$528){isc.setAutoDraw(true);for(var _7 in window)
+if(isc.isA.Canvas(_7)&&_7.autoDraw)
+_7.markForRedraw()}}}
+else{this.logWarn("html returned by server appears to contain <script> blocks. "+"If you want these to be evaluated, you must set evalScriptBlocks:true.")}}
+this.$40u()}
+,isc.A.handleError=function isc_HTMLFlow_handleError(_1,_2){this.logWarn(_2.data)}
+,isc.A.$40u=function isc_HTMLFlow__loadContentsReplyComplete(){this.$533=this.contentsURL;this.$40t=null;this.contentLoaded()}
+,isc.A.transformHTML=function isc_HTMLFlow_transformHTML(_1){return _1}
+,isc.A.contentLoaded=function isc_HTMLFlow_contentLoaded(){}
+,isc.A.modifyContent=function isc_HTMLFlow_modifyContent(){}
+);isc.B._maxIndex=isc.C+13;isc.HTMLFlow.registerStringMethods({contentLoaded:""})
+isc.defineClass("HTMLPane",isc.HTMLFlow);isc.A=isc.HTMLPane.getPrototype();isc.A.overflow=isc.Canvas.AUTO;isc.A.defaultHeight=200;isc.defineClass("WSDataSource","DataSource");isc.A=isc.WSDataSource.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.serviceNamespace="urn:operations.smartclient.com";isc.A.operationBindings=[{operationType:"fetch",wsOperation:"fetch",recordXPath:"//data/*"},{operationType:"add",wsOperation:"add",recordXPath:"//data/*"},{operationType:"remove",wsOperation:"remove",recordXPath:"//data/*"},{operationType:"update",wsOperation:"update",recordXPath:"//data/*"}];isc.B.push(isc.A.transformRequest=function isc_WSDataSource_transformRequest(_1){var _2={dataSource:_1.dataSource,operationType:_1.operationType,data:_1.data};if(_1.startRow!=null){_2.startRow=_1.startRow;_2.endRow=_1.endRow}
+if(_1.textMatchStyle!=null)_2.textMatchStyle=_1.textMatchStyle;if(_1.operationId!=null)_2.operationId=_1.operationId;if(_1.sortBy!=null)_2.sortBy=_1.sortBy;return _2}
+,isc.A.transformResponse=function isc_WSDataSource_transformResponse(_1,_2,_3){if(!_3||!_3.selectString)return;_1.status=_3.selectString("//status");if(isc.isA.String(_1.status)){var _4=isc.DSResponse[_1.status];if(_1.status==null){this.logWarn("Unable to map response code: "+_4+" to a DSResponse code, setting status to DSResponse.STATUS_FAILURE.");_4=isc.DSResponse.STATUS_FAILURE;_1.data=_3.selectString("//data")}else{_1.status=_4}}
+if(_1.status==isc.DSResponse.STATUS_VALIDATION_ERROR){var _5=_3.selectNodes("//errors/*");_1.errors=isc.xml.toJS(_5,null,this)}
+_1.totalRows=_3.selectNumber("//totalRows");_1.startRow=_3.selectNumber("//startRow");_1.endRow=_3.selectNumber("//endRow")}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("RestDataSource","DataSource");isc.A=isc.RestDataSource.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.serverType="generic";isc.A.dataFormat="xml";isc.A.xmlRecordXPath="/response/data/*";isc.A.jsonRecordXPath="/response/data";isc.A.prettyPrintJSON=true;isc.A.dataFormatParamName="isc_dataFormat";isc.A.jsonPrefix="<SCRIPT>//'\"]]>>isc_JSONResponseStart>>";isc.A.jsonSuffix="//isc_JSONResponseEnd";isc.A.operationBindings=[{operationType:"fetch",dataProtocol:"getParams"},{operationType:"add",dataProtocol:"postParams"},{operationType:"remove",dataProtocol:"postParams"},{operationType:"update",dataProtocol:"postParams"}];isc.A.sendMetaData=true;isc.A.metaDataPrefix="_";isc.B.push(isc.A.init=function isc_RestDataSource_init(){this.recordXPath=this.recordXPath||(this.dataFormat=="xml"?this.xmlRecordXPath:this.jsonRecordXPath);return this.Super("init",arguments)}
+,isc.A.getDataURL=function isc_RestDataSource_getDataURL(_1){var _2=_1.operationType;if(_2=="fetch"&&this.fetchDataURL!=null)
+return this.fetchDataURL;if(_2=="update"&&this.updateDataURL!=null)
+return this.updateDataURL;if(_2=="add"&&this.addDataURL!=null)
+return this.addDataURL;if(_2=="remove"&&this.removeDataURL!=null)
+return this.removeDataURL;return this.Super("getDataURL",arguments)}
+,isc.A.getDataProtocol=function isc_RestDataSource_getDataProtocol(_1){var _2=this.Super("getDataProtocol",arguments);if(_2=="postXML")_2="postMessage";return _2}
+,isc.A.transformRequest=function isc_RestDataSource_transformRequest(_1){var _2=this.getDataProtocol(_1);_1.isRestRequest=!(this.disableQueuing||this.clientOnly);_1.dataFormat=this.dataFormat;if(_2=="postMessage"){if(_1.params==null){_1.params={}}
+_1.params[this.dataFormatParamName]=this.dataFormat;var _3={dataSource:this.getID()};if(_1.operationType!=null)_3.operationType=_1.operationType;if(_1.operationId!=null)_3.operationId=_1.operationId;if(_1.startRow!=null)_3.startRow=_1.startRow;if(_1.endRow!=null)_3.endRow=_1.endRow;if(_1.sortBy!=null)_3.sortBy=_1.sortBy;if(_1.textMatchStyle!=null)_3.textMatchStyle=_1.textMatchStyle;if(this.sendClientContext)_3.clientContext=_1.clientContext;if(_1.componentId)_3.componentId=_1.componentId;if(isc.DataSource.get("$89s")==null){isc.DataSource.create({ID:"$89s",fields:[{name:"_constructor",xmlAttribute:false},{name:"criteria",multiple:true,type:"$89s",childTagName:"criterion"},{name:"oldValues"}]})}
+var _4=isc.DataSource.create({fields:[{name:"data",type:"$89s"},{name:"oldValues"}]});if(this.autoConvertRelativeDates==true){if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Calling convertRelativeDates from getServiceInputs "+"- data is\n\n"+isc.echoFull(_1.data))}
+var _5=this.convertRelativeDates(_1.data);if(this.logIsInfoEnabled("relativeDates")){this.logInfo("Called convertRelativeDates from getServiceInputs "+"- data is\n\n"+isc.echoFull(_5))}
+_1.data=_5}
+_3.data=_1.data;_3.oldValues=_1.oldValues;if(!_1.contentType){_1.contentType=(this.dataFormat=="json"?"application/json":"text/xml")}
+var _6;_1.$92u=_1.data;if(this.dataFormat=="json"){if(_3.data!=null)_3.data=this.serializeFields(_3.data);if(_3.oldValues!=null)_3.oldValues=this.serializeFields(_3.oldValues);var _7={prettyPrint:this.prettyPrintJSON};_6=isc.JSON.encode(_3,_7)}else{var _8={ignoreConstructor:true,schema:this};_6=_4.xmlSerialize(_3,_8,null,"request")}
+_4.destroy();return _6}else{if(_2!="getParams"&&_2!="postParams"){this.logWarn("RestDataSource operation:"+_1.operationID+", of type "+_1.operationType+" has dataProtocol specified as '"+_2+"'. Supported protocols are 'postParams', 'getParams' "+"and 'postMessage' only. Defaulting to 'getParams'.");_1.dataProtocol='getParams'}
+var _3=isc.addProperties({},_1.data,_1.params);if(this.sendMetaData){if(!this.parameterNameMap){var _9={};_9[this.metaDataPrefix+"operationType"]="operationType";_9[this.metaDataPrefix+"operationId"]="operationId";_9[this.metaDataPrefix+"startRow"]="startRow";_9[this.metaDataPrefix+"endRow"]="endRow";_9[this.metaDataPrefix+"sortBy"]="sortBy";_9[this.metaDataPrefix+"textMatchStyle"]="textMatchStyle";_9[this.metaDataPrefix+"oldValues"]="oldValues";_9[this.metaDataPrefix+"componentId"]="componentId";this.parameterNameMap=_9}
+for(var _10 in this.parameterNameMap){var _11=_1[this.parameterNameMap[_10]];if(_11!=null)_3[_10]=_11}
+_3[this.metaDataPrefix+"dataSource"]=this.getID();_3["isc_metaDataPrefix"]=this.metaDataPrefix}
+_3[this.dataFormatParamName]=this.dataFormat;return _3}}
+,isc.A.getUpdatedData=function isc_RestDataSource_getUpdatedData(_1,_2,_3){var _4=_2?_2.data:null;if(_3&&(!_4||isc.isAn.emptyString(_4)||(isc.isA.Array(_4)&&_4.length==0))&&_2.status==0&&this.getDataProtocol(_1)=="postMessage")
+{this.logInfo("dsResponse for successful operation of type "+_1.operationType+" did not return updated record[s]. Using submitted request data to update"+" ResultSet cache.","ResultSet");var _5={},_6=_1.originalData;if(_6&&isc.isAn.Object(_6)){if(_1.operationType=="update"){_5=isc.addProperties({},_1.oldValues);if(isc.isAn.Array(_6)){_5=isc.addProperties(_5,_6[0])}else{_5=isc.addProperties(_5,_6)}
+_5=[_5]}else{if(!isc.isAn.Array(_6))_6=[_6];_5=[];for(var i=0;i<_6.length;i++){_5[i]=isc.addProperties({},_6[i])}}
+if(this.logIsDebugEnabled("ResultSet")){this.logDebug("Submitted data to be integrated into the cache:"+this.echoAll(_5),"ResultSet")}}
+return _5}else{return this.Super("getUpdatedData",arguments)}}
+,isc.A.getValidStatus=function isc_RestDataSource_getValidStatus(_1){if(isc.isA.String(_1)){if(parseInt(_1)==_1)_1=parseInt(_1);else{_1=isc.DSResponse[_1];if(_1==null){this.logWarn("Unable to map response code: "+_1+" to a DSResponse code, setting status to DSResponse.STATUS_FAILURE.");_1=isc.DSResponse.STATUS_FAILURE}}}
+if(_1==null)_1=isc.DSResponse.STATUS_SUCCESS;return _1}
+,isc.A.transformResponse=function isc_RestDataSource_transformResponse(_1,_2,_3){if(_1.status<0||!_3){_1.queueStatus=-1;return _1}
+if(this.dataFormat=="json"){var _4=_3.response||{};_1.status=this.getValidStatus(_4.status);_1.queueStatus=this.getValidStatus(_4.queueStatus);if(_1.status==isc.DSResponse.STATUS_VALIDATION_ERROR){var _5=_4.errors;if(isc.isAn.Array(_5)){if(_5.length>1){this.logWarn("server returned an array of errors - ignoring all but the first one")}
+_5=_5[0]}
+_1.errors=_5}else if(_1.status<0){_1.data=_4.data}
+if(_4.totalRows!=null)_1.totalRows=_4.totalRows;if(_4.startRow!=null)_1.startRow=_4.startRow;if(_4.endRow!=null)_1.endRow=_4.endRow}else{if(_2.clientOnly)return _1;_1.status=this.getValidStatus(_3.selectString("//status"));_1.queueStatus=this.getValidStatus(_3.selectString("//queueStatus"));if(_1.status==isc.DSResponse.STATUS_VALIDATION_ERROR){var _5=_3.selectNodes("//errors");_5=isc.xml.toJS(_5);if(_5.length>1){this.logWarn("server returned an array of errors - ignoring all but the first one")}
+_5=_5[0];_1.errors=_5}else if(_1.status<0){_1.data=_3.selectString("//data")}
+var _6=_3.selectNumber("//totalRows");if(_6!=null)_1.totalRows=_6;var _7=_3.selectNumber("//startRow");if(_7!=null)_1.startRow=_7;var _8=_3.selectNumber("//endRow");if(_8!=null)_1.endRow=_8}
+return _1}
+,isc.A.shouldUseTestDataFetch=function isc_RestDataSource_shouldUseTestDataFetch(){return this.clientOnly==true&&this.cacheAllData!=true&&this.testFileName!=null}
+,isc.A.hasTestData=function isc_RestDataSource_hasTestData(){return this.testFileName!=null}
+,isc.A.getClientOnlyResponse=function isc_RestDataSource_getClientOnlyResponse(_1,_2){if(_1.$92u)_1.data=_1.$92u;var _3=this.Super("getClientOnlyResponse",arguments);if(!isc.isAn.Array(_3.data))_3.data=[_3.data];return _3}
+);isc.B._maxIndex=isc.C+10;isc.DataSource.create({
+Constructor:"DataSource",
+ID:"DataSource",
+addGlobalId:"false",
+fields:{
+ID:{
+type:"string",
+xmlAttribute:"true"
+},
+inheritsFrom:{
+title:"Superclass",
+type:"string"
+},
+useParentFieldOrder:{
+type:"boolean"
+},
+useLocalFieldsOnly:{
+type:"boolean"
+},
+restrictToParentFields:{
+type:"boolean"
+},
+dataFormat:{
+title:"DataFormat",
+type:"string",
+xmlAttribute:"true",
+valueMap:{
+custom:"Custom Binding",
+iscServer:"ISC Java Server",
+json:"JSON Web Service",
+xml:"XML / WSDL Web Service"
+}
+},
+noAutoFetch:{
+type:"boolean",
+xmlAttribute:"true"
+},
+serverType:{
+title:"Server Type",
+type:"string",
+xmlAttribute:"true",
+valueMap:{
+custom:"Custom Server Binding",
+sql:"ISC Server SQL Connectors"
+}
+},
+callbackParam:{
+title:"Callback Parameter",
+type:"string",
+xmlAttribute:"true"
+},
+requestProperties:{
+type:"Object"
+},
+fields:{
+childTagName:"field",
+multiple:"true",
+propertiesOnly:"true",
+type:"DataSourceField"
+},
+addGlobalId:{
+title:"Add Global ID",
+type:"boolean"
+},
+showPrompt:{
+type:"boolean"
+},
+dataSourceVersion:{
+title:"DataSource Version",
+type:"number",
+visibility:"internal",
+xmlAttribute:"true"
+},
+dbName:{
+title:"Database Name",
+type:"string",
+xmlAttribute:"true"
+},
+schema:{
+title:"Schema",
+type:"string",
+xmlAttribute:"true"
+},
+tableName:{
+title:"Table Name",
+type:"string",
+xmlAttribute:"true"
+},
+serverObject:{
+type:"ServerObject"
+},
+operationBindings:{
+multiple:"true",
+type:"OperationBinding"
+},
+serviceNamespace:{
+type:"string",
+xmlAttribute:"true"
+},
+dataURL:{
+type:"string",
+xmlAttribute:"true"
+},
+dataProtocol:{
+type:"string",
+xmlAttribute:"true"
+},
+dataTransport:{
+type:"string",
+xmlAttribute:"true"
+},
+defaultParams:{
+type:"Object"
+},
+soapAction:{
+type:"string"
+},
+jsonPrefix:{
+type:"string"
+},
+jsonSuffix:{
+type:"string"
+},
+messageTemplate:{
+type:"string"
+},
+defaultCriteria:{
+propertiesOnly:"true",
+type:"Object",
+visibility:"internal"
+},
+tagName:{
+type:"string",
+visibility:"xmlBinding"
+},
+recordXPath:{
+type:"XPath"
+},
+recordName:{
+type:"string"
+},
+xmlNamespaces:{
+type:"Object"
+},
+dropExtraFields:{
+type:"boolean"
+},
+schemaNamespace:{
+type:"string",
+visibility:"internal",
+xmlAttribute:"true"
+},
+mustQualify:{
+type:"boolean",
+visibility:"internal"
+},
+xsdSimpleContent:{
+type:"boolean",
+visibility:"internal"
+},
+xsdAnyElement:{
+type:"boolean",
+visibility:"internal"
+},
+xsdAbstract:{
+type:"boolean",
+visibility:"internal"
+},
+title:{
+title:"Title",
+type:"string"
+},
+titleField:{
+title:"Title Field",
+type:"string"
+},
+pluralTitle:{
+title:"Plural Title",
+type:"string"
+},
+clientOnly:{
+title:"Client Only",
+type:"boolean",
+xmlAttribute:"true"
+},
+testFileName:{
+title:"Test File Name",
+type:"URL",
+xmlAttribute:"true"
+},
+testData:{
+multiple:"true",
+type:"Object"
+},
+types:{
+multiple:"true",
+propertiesOnly:"true",
+type:"DataSourceField",
+uniqueProperty:"ID",
+visibility:"internal"
+},
+groups:{
+multiple:"true",
+type:"string",
+visibility:"internal"
+},
+methods:{
+multiple:"true",
+type:"MethodDeclaration",
+visibility:"internal"
+},
+showSuperClassActions:{
+type:"boolean"
+},
+createStandalone:{
+type:"boolean"
+},
+useFlatFields:{
+type:"boolean"
+},
+showLocalFieldsOnly:{
+type:"boolean",
+xmlAttribute:"true"
+},
+globalNamespaces:{
+type:"Object"
+},
+autoDeriveSchema:{
+type:"boolean",
+xmlAttribute:"true"
+},
+useLocalValidators:{
+type:"boolean"
+},
+autoDeriveTitles:{
+type:"boolean"
+},
+qualifyColumnNames:{
+type:"boolean",
+xmlAttribute:"true"
+},
+validateRelatedRecords:{
+type:"boolean"
+},
+requiresAuthentication:{
+type:"boolean"
+},
+requiresRoles:{
+type:"boolean"
+},
+requires:{
+type:"string"
+},
+beanClassName:{
+type:"string",
+xmlAttribute:"true"
+},
+autoJoinTransactions:{
+type:"boolean",
+xmlAttribute:"true"
+},
+sparseUpdates:{
+type:"boolean"
+},
+noNullUpdates:{
+type:"boolean"
+},
+canExport:{
+type:"boolean"
+}
+}
+})
+isc.DataSource.create({
+ID:"DataSourceField",
+addGlobalId:"false",
+fields:{
+name:{
+basic:"true",
+primaryKey:"true",
+required:"true",
+title:"Name",
+type:"string",
+xmlAttribute:"true"
+},
+type:{
+basic:"true",
+title:"Type",
+type:"string",
+xmlAttribute:"true"
+},
+disabled:{
+title:"Disabled",
+type:"boolean"
+},
+idAllowed:{
+title:"ID Allowed",
+type:"boolean",
+xmlAttribute:"true"
+},
+required:{
+title:"Required",
+type:"boolean",
+xmlAttribute:"true"
+},
+valueMap:{
+type:"ValueMap"
+},
+validators:{
+multiple:"true",
+propertiesOnly:"true",
+type:"Validator"
+},
+length:{
+title:"Length",
+type:"integer",
+xmlAttribute:"true"
+},
+xmlRequired:{
+type:"boolean",
+visibility:"internal"
+},
+xmlMaxOccurs:{
+type:"string",
+visibility:"internal"
+},
+xmlMinOccurs:{
+type:"integer",
+visibility:"internal"
+},
+xmlNonEmpty:{
+type:"boolean",
+visibility:"internal"
+},
+xsElementRef:{
+type:"boolean",
+visibility:"internal"
+},
+canHide:{
+title:"User can hide",
+type:"boolean"
+},
+xmlAttribute:{
+type:"boolean",
+visibility:"internal"
+},
+mustQualify:{
+type:"boolean",
+visibility:"internal"
+},
+valueXPath:{
+title:"Value XPath",
+type:"XPath",
+xmlAttribute:"true"
+},
+childrenProperty:{
+type:"boolean"
+},
+title:{
+title:"Title",
+type:"string",
+xmlAttribute:"true"
+},
+detail:{
+title:"Detail",
+type:"boolean",
+xmlAttribute:"true"
+},
+canEdit:{
+title:"Can Edit",
+type:"boolean",
+xmlAttribute:"true"
+},
+canSave:{
+title:"Can Save",
+type:"boolean",
+xmlAttribute:"true"
+},
+canView:{
+title:"Can View",
+type:"boolean",
+xmlAttribute:"true"
+},
+inapplicable:{
+inapplicable:"true",
+title:"Inapplicable",
+type:"boolean"
+},
+advanced:{
+inapplicable:"true",
+title:"Advanced",
+type:"boolean"
+},
+visibility:{
+inapplicable:"true",
+title:"Visibility",
+type:"string"
+},
+hidden:{
+inapplicable:"true",
+title:"Hidden",
+type:"boolean",
+xmlAttribute:"true"
+},
+primaryKey:{
+title:"Is Primary Key",
+type:"boolean",
+xmlAttribute:"true"
+},
+foreignKey:{
+title:"Foreign Key",
+type:"string",
+xmlAttribute:"true"
+},
+rootValue:{
+title:"Tree Root Value",
+type:"string",
+xmlAttribute:"true"
+},
+showFileInline:{
+type:"boolean",
+xmlAttribute:"true"
+},
+nativeName:{
+hidden:"true",
+title:"Native Name",
+type:"string"
+},
+fieldName:{
+hidden:"true",
+title:"Field Name",
+type:"string"
+},
+fields:{
+childTagName:"field",
+hidden:"true",
+multiple:"true",
+propertiesOnly:"true",
+type:"DataSourceField",
+uniqueProperty:"name"
+},
+multiple:{
+type:"boolean",
+xmlAttribute:"true"
+},
+validateEachItem:{
+type:"boolean",
+xmlAttribute:"true"
+},
+pickListFields:{
+multiple:"true",
+type:"Object"
+},
+canFilter:{
+type:"boolean",
+xmlAttribute:"true"
+},
+ignore:{
+type:"boolean"
+},
+unknownType:{
+type:"boolean",
+xmlAttribute:"true"
+},
+canSortClientOnly:{
+type:"boolean",
+xmlAttribute:"true"
+},
+childTagName:{
+type:"string",
+xmlAttribute:"true"
+},
+basic:{
+type:"boolean"
+},
+maxFileSize:{
+type:"integer"
+},
+frozen:{
+title:"Frozen",
+type:"boolean",
+xmlAttribute:"true"
+},
+canExport:{
+type:"boolean",
+xmlAttribute:"true"
+},
+sqlStorageStrategy:{
+type:"string",
+xmlAttribute:"true"
+},
+encodeInResponse:{
+type:"boolean",
+xmlAttribute:"true"
+}
+}
+})
+isc.DataSource.create({
+ID:"Validator",
+addGlobalId:"false",
+fields:{
+type:{
+type:"string"
+},
+name:{
+type:"string"
+},
+description:{
+type:"string"
+},
+stopIfFalse:{
+type:"boolean"
+},
+stopOnError:{
+type:"boolean"
+},
+validateOnChange:{
+type:"boolean"
+},
+clientOnly:{
+type:"boolean"
+},
+errorMessage:{
+type:"string"
+},
+max:{
+type:"float"
+},
+min:{
+type:"float"
+},
+exclusive:{
+type:"boolean"
+},
+mask:{
+type:"regexp"
+},
+transformTo:{
+type:"regexp"
+},
+precision:{
+type:"integer"
+},
+expression:{
+type:"string"
+},
+otherField:{
+type:"string"
+},
+list:{
+multiple:"true",
+type:"text"
+},
+valueMap:{
+type:"ValueMap"
+},
+substring:{
+type:"text"
+},
+operator:{
+type:"text"
+},
+count:{
+type:"integer"
+},
+applyWhen:{
+type:"AdvancedCriteria"
+},
+dependentFields:{
+multiple:"true",
+type:"string"
+},
+serverCondition:{
+type:"string"
+},
+serverObject:{
+type:"ServerObject"
+},
+fieldName:{
+type:"string"
+},
+triggerEvent:{
+type:"string"
+},
+message:{
+type:"string"
+},
+severity:{
+type:"string"
+},
+displayMode:{
+type:"string"
+},
+duration:{
+type:"integer"
+},
+formula:{
+type:"string"
+},
+formulaVars:{
+type:"ValueMap"
+}
+}
+})
+isc.DataSource.create({
+Constructor:"SimpleType",
+ID:"SimpleType",
+addGlobalId:false,
+inheritsFrom:"DataSourceField",
+fields:[
+{
+name:"inheritsFrom",
+type:"string"
+},
+{
+name:"editorType",
+type:"string"
+}
+]
+})
+isc.DataSource.create({
+Constructor:"XSComplexType",
+ID:"XSComplexType",
+addGlobalId:false,
+inheritsFrom:"DataSource"
+})
+isc.DataSource.create({
+Constructor:"XSElement",
+ID:"XSElement",
+addGlobalId:false,
+inheritsFrom:"DataSource"
+})
+isc.DataSource.create({
+Constructor:"SchemaSet",
+ID:"SchemaSet",
+addGlobalId:false,
+fields:[
+{
+name:"schemaNamespace",
+type:"url"
+},
+{
+multiple:true,
+name:"schemaImports",
+type:"Object"
+},
+{
+name:"qualifyAll",
+type:"boolean"
+},
+{
+multiple:true,
+name:"schema",
+type:"DataSource"
+}
+]
+})
+isc.DataSource.create({
+Constructor:"WSDLMessage",
+ID:"WSDLMessage",
+addGlobalId:false,
+inheritsFrom:"DataSource"
+})
+isc.DataSource.create({
+Constructor:"WebService",
+ID:"WebService",
+addGlobalId:false,
+fields:[
+{
+name:"location",
+type:"url"
+},
+{
+name:"targetNamespace",
+type:"url"
+},
+{
+multiple:true,
+name:"schemaImports",
+type:"Object"
+},
+{
+multiple:true,
+name:"wsdlImports",
+type:"Object"
+},
+{
+multiple:true,
+name:"operations",
+type:"WebServiceOperation"
+},
+{
+multiple:true,
+name:"portTypes",
+type:"Object"
+},
+{
+multiple:true,
+name:"bindings",
+type:"Object"
+},
+{
+multiple:true,
+name:"messages",
+type:"WSDLMessage"
+},
+{
+name:"globalNamespaces",
+type:"Object"
+}
+]
+})
+isc.DataSource.create({
+ID:"WebServiceOperation",
+addGlobalId:false,
+fields:[
+{
+name:"name",
+required:true,
+title:"Operation Name"
+},
+{
+name:"soapAction",
+title:"SOAPAction Header"
+},
+{
+name:"inputMessage",
+title:"Input Message"
+},
+{
+name:"outputMessage",
+title:"Output Message"
+},
+{
+multiple:true,
+name:"inputHeaders",
+type:"WSOperationHeader"
+},
+{
+multiple:true,
+name:"outputHeaders",
+type:"WSOperationHeader"
+}
+]
+})
+isc.DataSource.create({
+ID:"WSOperationHeader",
+addGlobalId:false,
+fields:[
+{
+name:"encoding"
+},
+{
+name:"message"
+},
+{
+name:"part"
+}
+]
+})
+isc.defineClass("Operators","Class");isc.A=isc.Operators;isc.A.equalsTitle="equals";isc.A.notEqualTitle="not equal";isc.A.iEqualsTitle="equals (ignore case)";isc.A.iNotEqualTitle="not equal (ignore case)";isc.A.greaterThanTitle="greater than";isc.A.lessThanTitle="less than";isc.A.greaterOrEqualTitle="greater than or equal to";isc.A.lessOrEqualTitle="less than or equal to";isc.A.betweenTitle="between (match case)";isc.A.iBetweenTitle="between";isc.A.betweenInclusiveTitle="between (inclusive, match case)";isc.A.iBetweenInclusiveTitle="between (inclusive)";isc.A.iContainsTitle="contains";isc.A.iStartsWithTitle="starts with";isc.A.iEndsWithTitle="ends with";isc.A.containsTitle="contains (match case)";isc.A.startsWithTitle="starts with (match case)";isc.A.endsWithTitle="ends with (match case)";isc.A.iNotContainsTitle="does not contain";isc.A.iNotStartsWithTitle="does not start with";isc.A.iNotEndsWithTitle="does not end with";isc.A.notContainsTitle="does not contain (match case)";isc.A.notStartsWithTitle="does not start with (match case)";isc.A.notEndsWithTitle="does not end with (match case)";isc.A.isNullTitle="is null";isc.A.notNullTitle="not null";isc.A.regexpTitle="matches expression (exact case)";isc.A.iregexpTitle="matches expression";isc.A.inSetTitle="is one of";isc.A.notInSetTitle="is not one of";isc.A.equalsFieldTitle="matches other field";isc.A.notEqualFieldTitle="differs from field";isc.A.greaterThanFieldTitle="greater than field";isc.A.lessThanFieldTitle="less than field";isc.A.greaterOrEqualFieldTitle="greater than or equal to field";isc.A.lessOrEqualFieldTitle="less than or equal to field";isc.A.containsFieldTitle="contains (match case) another field value";isc.A.startsWithFieldTitle="starts with (match case) another field value";isc.A.endsWithFieldTitle="ends with (match case) another field value";isc.A.andTitle="and";isc.A.notTitle="not";isc.A.orTitle="or";if(isc.DynamicForm){isc.defineClass("DynamicFilterForm","SearchForm");isc.A=isc.DynamicFilterForm.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$10j="Enter";isc.B.push(isc.A.handleKeyPress=function isc_DynamicFilterForm_handleKeyPress(_1,_2){var _3=this.getFocusSubItem();if(isc.isA.TextItem(_3))_2.firedOnTextItem=true;if(_1.keyName!=this.$10j){return this.Super("handleKeyPress",[_1,_2])}}
+,isc.A.itemChanged=function isc_DynamicFilterForm_itemChanged(_1,_2,_3){if(this.creator.itemChanged)this.creator.itemChanged()}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("FilterClause","HStack");isc.A=isc.FilterClause.getPrototype();isc.A.height=20;isc.A.showFieldTitles=true;isc.A.validateOnChange=true;isc.A.fieldPickerWidth=150;isc.A.operatorPickerWidth=150;isc.A.valueItemWidth=150;isc.A.fieldPickerDefaults={type:"SelectItem",name:"fieldName",showTitle:false,textMatchStyle:"startsWith",changed:function(){this.form.creator.fieldNameChanged(this.form)}};isc.A.fieldPickerTitle="Field Name";isc.A.operatorPickerDefaults={name:"operator",type:"select",showTitle:false,addUnknownValues:false,defaultToFirstOption:true,changed:function(){this.form.creator.operatorChanged(this.form)}};isc.A.operatorPickerTitle="Operator";isc.A.valueItemTitle="Value";isc.A.valueSetHint="Enter values separated by comma";isc.A.clauseConstructor=isc.DynamicFilterForm;isc.A.showRemoveButton=true;isc.A.removeButtonPrompt="Remove";isc.A.excludeNonFilterableFields=true;isc.A.removeButtonDefaults={_constructor:isc.ImgButton,width:18,height:18,layoutAlign:"center",src:"[SKIN]/actions/remove.png",showRollOver:false,showDown:false,showDisabled:false,click:function(){this.creator.remove()}};isc.A.flattenItems=true;isc.A=isc.FilterClause.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.customGetValuesFunction="getCriterion";isc.A.valueAttribute="value";isc.A.rangeStartAttribute="start";isc.A.rangeEndAttribute="end";isc.A.operatorAttribute="operator";isc.A.setCustomValuseFunction="setCriterion";isc.B.push(isc.A.initWidget=function isc_FilterClause_initWidget(){this.Super("initWidget",arguments);this.setupClause()}
+,isc.A.getFilterBuilder=function isc_FilterClause_getFilterBuilder(){return this.filterBuilder}
+,isc.A.getPrimaryDS=function isc_FilterClause_getPrimaryDS(_1){if(this.dataSources){if(_1==null){return isc.DataSource.get(this.dataSources[0])}
+if(isc.isAn.Object(_1)){if(_1.$92v!=null){_1=_1.$92v}
+for(var i=0;i<this.dataSources.length;i++){var _3=isc.getValues(this.dataSources[i].getFields());if(_3.contains(_1))return this.dataSources[i]}
+_1=_1.name}
+return isc.DataSource.getDataSourceForField(_1,this.dataSources)}
+if(this.dataSource)return this.getDataSource();else if(this.fieldDataSource)return this.fieldDataSource}
+,isc.A.getField=function isc_FilterClause_getField(_1){if(isc.isAn.Object(_1))return _1;var _2;if(this.dataSources){_2=isc.DataSource.getFieldFromDataSources(_1,this.dataSources)}else if(this.dataSource){_2=this.getDataSource().getField(_1)}else{if(this.clause){_2=this.fieldData?this.fieldData[_1]:null;if(!_2)_2=this.clause.getField("fieldName").getSelectedRecord();if(!_2)_2=this.field;else this.field=_2}}
+return _2}
+,isc.A.getFieldNames=function isc_FilterClause_getFieldNames(){if(this.dataSources){return isc.DataSource.getCombinedDataSourceFields(this.dataSources)}
+if(this.dataSource)return this.getDataSource().getFieldNames(true)}
+,isc.A.getFieldOperatorMap=function isc_FilterClause_getFieldOperatorMap(_1,_2,_3,_4){return this.getPrimaryDS(_1).getFieldOperatorMap(_1,_2,_3,_4)}
+,isc.A.getSearchOperator=function isc_FilterClause_getSearchOperator(_1,_2){return this.getPrimaryDS(_2).getSearchOperator(_1)}
+,isc.A.combineFieldData=function isc_FilterClause_combineFieldData(_1,_2){var _3=this.getPrimaryDS(_2),_4=this.getField(_2);if(_4)
+return _3.combineFieldData(_1,_2);else return _1}
+,isc.A.setupClause=function isc_FilterClause_setupClause(){this.$85y=true;if(this.dataSource&&!isc.isA.DataSource(this.dataSource))
+this.dataSource=isc.DataSource.get(this.dataSource);if(this.fieldDataSource&&!isc.isA.DataSource(this.fieldDataSource))
+this.fieldDataSource=isc.DataSource.get(this.fieldDataSource);if(this.showRemoveButton){this.addAutoChild("removeButton",{prompt:this.removeButtonPrompt})}
+this.fieldPickerDefaults.title=this.fieldPickerTitle;this.operatorPickerDefaults.title=this.operatorPickerTitle;var _1={};if(this.showClause!=false){if(this.topOperatorAppearance=="inline"){if(this.topOperator=="and"){var _2={and:this.creator.inlineAndTitle,not:this.creator.inlineAndNotTitle}}else{var _2={or:this.creator.inlineOrTitle,not:this.creator.inlineAndNotTitle}}
+var _3=0;this.topOperatorFormProperties={layoutAlign:"top"};if(this.creator.showSelectionCheckbox){isc.addProperties(this.topOperatorFormProperties,{numCols:2,width:120,colWidths:["20%","80%"]});this.topOperatorFormProperties.items=this.topOperatorFormDefaults.items;this.topOperatorFormProperties.items.addAt({name:"select",type:"checkbox",showTitle:false,showLabel:false,defaultValue:false,showIf:function(){return this.form.creator.showSelectionCheckbox}},0);_3=1}
+this.addAutoChild("topOperatorForm");this.topOperatorForm.items[_3].valueMap=_2;this.topOperatorForm.items[_3].defaultValue=this.negated?"not":this.topOperator;this.updateInlineTopOperator()}
+var _4=[isc.addProperties(isc.clone(this.fieldPickerDefaults),{width:this.fieldPickerWidth},this.fieldPickerProperties,{name:"fieldName"}),isc.addProperties(isc.clone(this.operatorPickerDefaults),{width:this.operatorPickerWidth},this.operatorPickerProperties,{name:"operator"})],_5=this.criterion,_6=this.getFieldNames(),_7;if(this.fieldName&&(this.dataSource||this.dataSources)){var _8=this.fieldName;var _9=this.getField(_8),_10;isc.addProperties(_4[0],{type:"staticText",clipValue:true,wrap:false});if(!_9||(this.excludeNonFilterableFields&&_9.canFilter==false))_8=_6[0];else if(this.showFieldTitles){_10=_9.title?_9.title:_8}
+_4[0].defaultValue=_8;if(_10!=null){var _11={};_11[_8]=_10;_4[0].valueMap=_11}
+_7=_8}else{if(this.fieldDataSource){isc.addProperties(_4[0],{type:"ComboBoxItem",completeOnTab:true,optionDataSource:this.fieldDataSource,valueField:"name",displayField:this.showFieldTitles?"title":"name",pickListProperties:{reusePickList:function(){return false}}});if(this.field)_4[0].defaultValue=this.field.name}else{for(var i=0;i<_6.length;i++){var _13=_6[i],_9=this.getField(_13);if(this.excludeNonFilterableFields&&_9.canFilter==false)continue;if(this.showFieldTitles){var _10=_9.title;_10=_10?_10:_13;_1[_13]=_10}else{_1[_13]=_13}}
+_4[0].valueMap=_1;_4[0].defaultValue=isc.firstKey(_1)}}
+this.fieldPicker=_4[0];var _14=_4[0],_15=_4[1];if(!this.fieldName){if(_5&&_5.fieldName){if(this.fieldDataSource){_14.defaultValue=_5.fieldName}else{if(_6.contains(_5.fieldName)){_14.defaultValue=_5.fieldName}else{isc.logWarn("Criterion specified field "+_5.fieldName+", which is not"+" in the record. Using the first record field ("+_1?isc.firstKey(_1):_6[0]+") instead");_14.defaultValue=_1?isc.firstKey(_1):_6[0]}}}
+_7=_14.defaultValue}
+if(_7){var _9=this.field||this.getField(_7);var _11=_9?this.getFieldOperatorMap(_9,false,"criteria",true):null;_15.valueMap=_11;if(_11){if(_5&&_5.operator){_15.defaultValue=_5.operator}else{_15.defaultValue=isc.firstKey(_11)}}
+this.$74o=_7;var _16=this.getSearchOperator(_15.defaultValue,_9);if(!_16&&_11.length>0){isc.logWarn("Criterion specified unknown operator "+(_5?_5.operator:"[null criterion]")+". Using the first valid operator ("+isc.firstKey(_11)+") instead");_15.defaultValue=isc.firstKey(_11);_16=this.getSearchOperator(_15.defaultValue,_9)}
+var _17=this.buildValueItemList(_9,_16,_7);if(_5){if(_5.value!=null&&_17.containsProperty("name","value")){_17.find("name","value").defaultValue=_5.value}
+if(_5.start!=null&&_17.containsProperty("name","start")){_17.find("name","start").defaultValue=_5.start}
+if(_5.end!=null&&_17.containsProperty("name","end")){_17.find("name","end").defaultValue=_5.end}}
+if(_17)_4.addList(_17)}else{_15.disabled=true}
+this.addAutoChild("clause",{flattenItems:this.flattenItems,items:_4});this.fieldPicker=this.clause.getItem("fieldName");this.operatorPicker=this.clause.getItem("operator")}
+this.addMembers([this.topOperatorForm,this.removeButton,this.clause]);if(this.fieldPicker&&this.fieldPicker.type=="staticText"){this.fieldPicker.prompt=this.fieldPicker.getValue()}}
+,isc.A.updateInlineTopOperator=function isc_FilterClause_updateInlineTopOperator(){if(this.topOperatorAppearance!="inline")return;var _1=this.creator.showSelectionCheckbox?1:0;if(this.creator.isFirstClause(this)){this.topOperatorForm.items[_1].hide()}else{this.topOperatorForm.items[_1].show()}}
+,isc.A.getEditorType=function isc_FilterClause_getEditorType(_1,_2){if(isc.isA.FilterBuilder(this.filterBuilder)){return this.filterBuilder.getEditorType(_1,_2)}else{if(this.clause)return this.clause.getEditorType(_1,_2);return null}}
+,isc.A.buildValueItemList=function isc_FilterClause_buildValueItemList(_1,_2,_3){if(_2==null)this.logWarn("buildValueItemList passed null operator");if(_1==null){return}
+if(_3==null)_3=_1.name;var _4=_2?_2.valueType:"text",_5=isc.SimpleType.getType(_1.type)||isc.SimpleType.getType("text"),_6=[],_7,_8=null;_5=_5.name;var _9={$92v:_1};isc.addProperties(_9,_1);_9.canEdit=_1.canFilter;_1=_9;_8=this.getEditorType(_1,_2.ID);if(_4=="fieldType"||_4=="custom"||_4=="valueSet"){var _10=_5;if(_4=="valueSet"){_8="TextAreaItem"}else if(_4=="custom"&&_2&&_2.editorType){_8=_2.editorType}
+var _11=isc.addProperties({type:_10,valueType:_4,name:_1.name,showTitle:false,title:this.valueItemTitle,width:this.valueItemWidth,changed:function(){this.form.creator.valueChanged(this,this.form)}},this.getValueFieldProperties(_1.type,_3,_2.ID,"value"));if(_8)_11.editorType=_8;if(_4=="valueSet"){_11.multiple=true;_11.showHintInField=true;_11.hint=this.valueSetHint;_11.parseEditorValue=function(_17,_18,_19){if(_17==null)return _17;return _17.split(",")};_11.formatEditorValue=function(_17,_18,_19,_20){if(_17==null)return"";if(isc.isAn.Array(_17)){return _17.join(",")}
+return _17}}
+_11=this.combineFieldData(_11,_1);_11.name="value";if(_1.type=="enum"){_11=isc.addProperties(_11,{valueMap:_1.valueMap})}
+if(_5=="boolean"){_11=isc.addProperties(_11,{defaultValue:false})}
+if(_1.editorProperties){if(_1.editorType=="SelectItem"||_1.editorType=="ComboBoxItem"||_1.editorType=="select")
+{_7=_1.editorProperties;if(_7.optionDataSource!=null)_11.optionDataSource=_7.optionDataSource;if(_7.valueField!=null)_11.valueField=_7.valueField;if(_7.displayField!=null)_11.displayField=_7.displayField}else{_11=isc.addProperties({},_11,_1.editorProperties)}}
+_6.add(_11)}else if(_4=="fieldName"){_7=isc.addProperties({},this.fieldPickerDefaults,{type:"select",showTitle:false,valueType:_4,width:this.valueItemWidth,textMatchStyle:this.fieldPicker.textMatchStyle,changed:function(){this.form.creator.valueChanged(this,this.form)}});if(this.fieldDataSource){_7=isc.addProperties(_7,{type:"ComboBoxItem",completeOnTab:true,optionDataSource:this.fieldDataSource,valueField:"name",displayField:this.showFieldTitles?"title":"name",pickListProperties:{reusePickList:function(){return false}}})}else{var _12=this.getFieldNames(true);_12.remove(_3);var _13={};for(var i=0;i<_12.length;i++){var _15=_12[i];if(this.showFieldTitles){var _16=this.getField(_15).title;_16=_16?_16:_15;_13[_15]=_16}else{_13[_15]=_15}}
+_7=isc.addProperties(_7,{valueMap:_13})}
+_6.add(isc.addProperties(_7,this.getValueFieldProperties(_1.type,_3,_2.ID,"name"),this.fieldPickerProperties,{name:"value"}))}else if(_4=="valueRange"){_7=this.combineFieldData(isc.addProperties({type:_5,editorType:_8,showTitle:false,width:this.valueItemWidth,changed:function(){this.form.creator.valueChanged(this,this.form)}}),_1);_6.addList([isc.addProperties({},_7,{name:"start"},this.getValueFieldProperties(_1.type,_3,_2.ID,"start")),isc.addProperties({type:"staticText",name:"rangeSeparator",showTitle:false,width:1,shouldSaveValue:false,defaultValue:this.filterBuilder?this.filterBuilder.rangeSeparator:null,changed:function(){this.form.creator.valueChanged(this,this.form)}},this.getRangeSeparatorProperties(_1.type,_3,_2.ID)),isc.addProperties({},_7,{name:"end"},this.getValueFieldProperties(_1.type,_3,_2.ID,"end"))])}
+if(this.validateOnChange){for(var i=0;i<_6.length;i++){isc.addProperties(_6[i],{blur:function(_17,_18){if(!_17.creator.itemsInError)_17.creator.itemsInError=[];if(!_17.validate(null,null,true)){_18.focusInItem();if(!_17.creator.itemsInError.contains(_18)){_17.creator.itemsInError.add(_18)}}else{if(_17.creator.itemsInError.contains(_18)){_17.creator.itemsInError.remove(_18)}}}})}}
+for(var i=0;i<_6.length;i++){if(_6[i].showIf!=null)delete _6[i].showIf}
+return _6}
+,isc.A.getValueFieldProperties=function isc_FilterClause_getValueFieldProperties(_1,_2,_3,_4){if(this.filterBuilder){return this.filterBuilder.getValueFieldProperties(_1,_2,_3,_4)}}
+,isc.A.getRangeSeparatorProperties=function isc_FilterClause_getRangeSeparatorProperties(_1,_2,_3){if(this.filterBuilder)return this.filterBuilder.getRangeSeparatorProperties(_1,_2,_3)}
+,isc.A.remove=function isc_FilterClause_remove(){this.markForDestroy()}
+,isc.A.getValues=function isc_FilterClause_getValues(){var _1=this.clause;return _1.getValues()}
+,isc.A.getFieldName=function isc_FilterClause_getFieldName(){return this.fieldPicker.getValue()||this.fieldName}
+,isc.A.getCriterion=function isc_FilterClause_getCriterion(_1){if(!this.clause)return null;var _2=this.getFieldName(),_3=this.operatorPicker.getValue();if(!_2)return null;if(isc.isA.String(_3))_3=this.getSearchOperator(_3,_2);if(_3==null)return;var _4=this.getClauseValues(_2,_3);if(!_1){if(!_3||(_3.valueType!="none"&&_3.valueType!="valueRange"&&(_4.value==null||(isc.isA.String(_4.value)&&_4.value==""))))
+{return null}}
+return _4}
+,isc.A.getClauseValues=function isc_FilterClause_getClauseValues(_1,_2){var _3=this.clause,_4={},_5=_3.getField("value"),_6=_3.getField("start"),_7=_3.getField("end"),_8=_2.valueAttribute||this.valueAttribute,_9=_2.rangeStartAttribute||this.rangeStartAttribute,_10=_2.rangeEndAttribute||this.rangeEndAttribute;_4[this.operatorAttribute]=_3.getValue("operator");if(_1!=null)_4.fieldName=_1;if(_2[this.customGetValuesFunction]&&isc.isA.Function(_2[this.customGetValuesFunction]))
+{if(_5){_4=_2[this.customGetValuesFunction](_1,_5)}else{var _11=_2[this.customGetValuesFunction](_1,_6),_12=_2[this.customGetValuesFunction](_1,_7);_4.fieldName=_11.fieldName;_4[this.operatorAttribute]=_11.operator;_4[_9]=_11.value;_4[_10]=_12.value}}else{if(_5)_4[_8]=_5.getValue();if(_6)_4[_9]=_6.getValue();if(_7)_4[_10]=_7.getValue()}
+var _13=this.getField(_1);if(isc.isA.Date(_4[this.valueAttribute])&&(!_13||!isc.SimpleType.inheritsFrom(_13.type,"datetime")))
+{_4[_8].logicalDate=true}
+return _4}
+,isc.A.setClauseValues=function isc_FilterClause_setClauseValues(_1,_2,_3){if(this.clause==null)return;var _4=this.clause,_5=_4.getField("value"),_6=_4.getField("start"),_7=_4.getField("end"),_8=_2.valueAttribute||this.valueAttribute,_9=_2.rangeStartAttribute||this.rangeStartAttribute,_10=_2.rangeEndAttribute||this.rangeEndAttribute;if(_2[this.customSetValuesFunction]&&isc.isA.Function(_2[this.customSetValuesFunction]))
+{if(_5){_2[this.customSetValuesFunction](_1,_5,_3)}else{_2[this.customSetValuesFunction](_1,_6,_3);_2[this.customSetValuesFunction](_1,_7,_3)}}else{if(_5)_5.setValue(_3[_8]);if(_6)_6.setValue(_3[_9]);if(_7)_7.setValue(_3[_10])}}
+,isc.A.setDefaultFocus=function isc_FilterClause_setDefaultFocus(){if(!this.clause)return;if(isc.isA.Function(this.clause.focusInItem))this.clause.focusInItem("fieldName")}
+,isc.A.validate=function isc_FilterClause_validate(){return this.clause?this.clause.validate(null,null,true):true}
+,isc.A.itemChanged=function isc_FilterClause_itemChanged(){if(this.creator&&isc.isA.Function(this.creator.itemChanged))this.creator.itemChanged()}
+,isc.A.valueChanged=function isc_FilterClause_valueChanged(_1,_2){}
+,isc.A.fieldNameChanged=function isc_FilterClause_fieldNameChanged(){this.clause.getItem("operator").disabled=false;this.updateFields()}
+,isc.A.removeValueFields=function isc_FilterClause_removeValueFields(){if(!this.clause)return;var _1=this.clause;if(_1.getItem("value"))_1.removeItem("value");if(_1.getItem("rangeSeparator"))_1.removeItem("rangeSeparator");if(_1.getItem("start"))_1.removeItem("start");if(_1.getItem("end"))_1.removeItem("end")}
+,isc.A.operatorChanged=function isc_FilterClause_operatorChanged(){if(!this.clause)return;var _1=this.clause,_2=this.fieldName||_1.getValue("fieldName");if(_2==null)return;var _3=this.getField(_2);var _4=this.getSearchOperator(_1.getValue("operator"),_3);this.updateValueItems(_3,_4,_2)}
+,isc.A.updateValueItems=function isc_FilterClause_updateValueItems(_1,_2,_3){var _4=this.clause;var _5=_4.getItem("value");var _6=_5?_5.valueType:null;this.removeValueFields();var _7=this.buildValueItemList(_1,_2,_3)
+_4.addItems(_7);var _8=_4.getItem("value");if(_8&&((_8.valueType!=_6)||(_8.getValueMap()&&_8.$193&&!_8.$193(_8.getValue())||_8.optionDataSource||!this.retainValuesAcrossFields))){_8.clearValue()}}
+,isc.A.updateFields=function isc_FilterClause_updateFields(){if(!this.clause)return;var _1=this.clause,_2=this.$74o,_3=this.fieldName||_1.getValue("fieldName");if(_3==null)return;if(_3==_2)return;var _4=this.getField(_3),_5=this.getField(_2);if(!_4)return;var _6=_1.getValue("operator");_1.getItem("operator").setValueMap(this.getFieldOperatorMap(_4,false,"criteria",true));if(_6==null||_1.getValue("operator")!=_6){if(_1.getValue("operator")==null){_1.getItem("operator").setValue(_1.getItem("operator").getFirstOptionValue())}
+_6=_1.getValue("operator")}
+_6=this.getSearchOperator(_6,_4);var _7;if(_1.getItem("value")){var _8=_1.getItem("value").type,_9=_4.type||"text";_7=(_8!=_9)}
+this.removeValueFields();_1.addItems(this.buildValueItemList(_4,_6,_3));if(_7){_1.clearValue("value")}else{var _10=_1.getItem("value"),_11=((_4.valueMap||_4.optionDataSource)||(_5&&(_5.valueMap||_5.optionDataSource))||!this.retainValuesAcrossFields);if(_10&&_11)_10.clearValue()}
+if(_1.getItem("start"))_1.setValue("start",null);if(_1.getItem("end"))_1.setValue("end",null);this.$74o=_3}
+,isc.A.getFieldOperators=function isc_FilterClause_getFieldOperators(_1){var _2=this.getField(_1)
+return this.getPrimaryDS(_1).getFieldOperators(_2)}
+,isc.A.topOperatorChanged=function isc_FilterClause_topOperatorChanged(_1){}
+);isc.B._maxIndex=isc.C+31;isc.FilterClause.registerStringMethods({remove:""});isc.defineClass("FilterBuilder","Layout");isc.A=isc.FilterBuilder;isc.A.missingFieldPrompt="[missing field definition]";isc.A=isc.FilterBuilder;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getFilterDescription=function isc_c_FilterBuilder_getFilterDescription(_1,_2){if(!isc.isAn.Array(_2)){if(!isc.isA.DataSource(_2))_2=isc.DS.getDataSource(_2);if(!_2)return"No dataSource"}
+var _3="";if(_1.criteria&&isc.isAn.Array(_1.criteria)){var _4=_1.operator,_5=_1.criteria;for(var i=0;i<_5.length;i++){var _7=_5[i];if(i>0)_3+=" "+_4+" ";if(_7.criteria&&isc.isAn.Array(_7.criteria)){_3+="("
+_3+=isc.FilterBuilder.getFilterDescription(_7,_2);_3+=")"}else{_3+=isc.FilterBuilder.getCriterionDescription(_7,_2)}}}else{_3+=isc.FilterBuilder.getCriterionDescription(_1,_2)}
+return _3}
+,isc.A.getCriterionDescription=function isc_c_FilterBuilder_getCriterionDescription(_1,_2){var _3=_1.fieldName,_4=_1.operator,_5=_1.value,_6=_1.start,_7=_1.end,_8;if(isc.isAn.Array(_2)){_2=isc.DataSource.getDataSourceForField(_3,_2);_8=isc.DataSource.getFieldFromDataSources(_3,[_2])}else{if(!isc.isA.DataSource(_2))_2=isc.DS.getDataSource(_2);if(!_2)return"No DataSource";_8=_2.getField(_3)}
+var _9=_2.getSearchOperator(_4,_8),_10=_2.getFieldOperatorMap(_8,true,_9.valueType,false),_11="";if(!_8){if(_1.criteria&&isc.isAn.Array(_1.criteria)){isc.logWarn("FilterBuilder.getCriterionDescription: Passed an AdvancedCriteria - "+"returning through getFilterDescription.");return isc.FilterBuilder.getFilterDescription(_1,_2)}
+_11=_3+" "+isc.FilterBuilder.missingFieldPrompt+" ";isc.logWarn("FilterBuilder.getCriterionDescription: No such field '"+_3+"' "+"in DataSource '"+_2.ID+"'.")}else{_11=(_8.title?_8.title:_3)+" "}
+switch(_4)
+{case"lessThan":case"greaterThan":case"lessOrEqual":case"greaterOrEqual":case"between":case"notNull":_11+="is "+_10[_4]||_4;break;case"equals":_11+="is equal to";break;case"notEqual":_11+="is not equal to";break;default:_11+=_10[_4]||_4}
+if(_9.valueType=="valueRange")_11+=" "+_6+" and "+_7;else if(_4!="notNull")_11+=" "+_5;return _11}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.FilterBuilder.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.vertical=false;isc.A.vPolicy="none";isc.A.height=1;isc.A.defaultWidth=400;isc.A.fieldPickerDefaults={type:"SelectItem",name:"fieldName",textMatchStyle:"startsWith",showTitle:false,changed:function(){this.form.creator.fieldNameChanged(this.form)}};isc.A.fieldPickerTitle="Field Name";isc.A.showFieldTitles=true;isc.A.validateOnChange=true;isc.A.showRemoveButton=true;isc.A.removeButtonPrompt="Remove";isc.A.removeButtonDefaults={_constructor:isc.ImgButton,width:18,height:18,layoutAlign:"center",src:"[SKIN]/actions/remove.png",showRollOver:false,showDown:false,showDisabled:false,click:function(){this.creator.removeButtonClick(this.clause)}};isc.A.showAddButton=true;isc.A.addButtonPrompt="Add";isc.A.addButtonDefaults={_constructor:isc.ImgButton,autoParent:"buttonBar",width:18,height:18,src:"[SKIN]/actions/add.png",showRollOver:false,showDown:false,click:function(){this.creator.addButtonClick(this.clause)}};isc.A.buttonBarDefaults={_constructor:isc.HStack,autoParent:"clauseStack",membersMargin:4,defaultLayoutAlign:"center",height:1};isc.A.retainValuesAcrossFields=true;isc.A.topOperator="and";isc.A.radioOptions=["and","or","not"];isc.A.topOperatorAppearance="bracket";isc.A.radioOperatorFormDefaults={_constructor:isc.DynamicForm,autoParent:"clauseStack",height:1,items:[{name:"operator",type:"radioGroup",showTitle:false,title:"Overall Operator",vertical:false,width:250,changed:function(_1,_2,_3){_1.creator.topOperatorChanged(_3)}}]};isc.A.radioOperatorTitle="Overall Operator";isc.A.topOperatorFormDefaults={height:1,width:80,numCols:1,colWidths:["*"],layoutAlign:"center",_constructor:isc.DynamicForm,items:[{name:"operator",type:"select",showTitle:false,width:"*",changed:function(_1,_2,_3){_1.creator.topOperatorChanged(_3)}}]};isc.A.topOperatorTitle="Clause Operator";isc.A.defaultSubClauseOperator="or";isc.A.matchAllTitle="Match All";isc.A.matchNoneTitle="Match None";isc.A.matchAnyTitle="Match Any";isc.A.inlineAndTitle="and";isc.A.inlineOrTitle="or";isc.A.inlineAndNotTitle="and not";isc.A.clauseStackDefaults={_constructor:isc.VStack,height:1,membersMargin:1,animateMembers:true,animateMemberTime:150};isc.A.clauseConstructor="FilterClause";isc.A.rangeSeparator="and";isc.A.subClauseButtonTitle="+()";isc.A.subClauseButtonPrompt="Add Subclause";isc.A.subClauseButtonDefaults={_constructor:"IButton",autoParent:"buttonBar",autoFit:true,click:function(){this.creator.addSubClause(this.clause)}};isc.A.bracketDefaults={styleName:"bracketBorders",width:10};isc.A.internalSearchFormDefaults={_constructor:"SearchForm",visibility:"hidden",autoDraw:false};isc.A.$10j="Enter";isc.A.allowEmptyValues=false;isc.B.push(isc.A.setDataSource=function isc_FilterBuilder_setDataSource(_1){if(isc.DataSource.get(this.dataSource).ID!=isc.DataSource.get(_1).ID){this.dataSource=_1;this.clearCriteria()}}
+,isc.A.setDataSources=function isc_FilterBuilder_setDataSources(_1){this.dataSources=_1;this.clearCriteria()}
+,isc.A.addButtonClick=function isc_FilterBuilder_addButtonClick(){this.addNewClause()}
+,isc.A.removeButtonClick=function isc_FilterBuilder_removeButtonClick(_1){if(!_1)return;this.removeClause(_1)}
+,isc.A.removeClause=function isc_FilterBuilder_removeClause(_1){this.clauses.remove(_1);if(this.clauseStack)this.clauseStack.hideMember(_1,function(){_1.destroy()});this.updateFirstRemoveButton();if(this.clauses[0]&&this.clauses[0].updateInlineTopOperator)this.clauses[0].updateInlineTopOperator();_1.filterBuilder=null;if(isc.isA.Function(this.filterChanged))this.filterChanged()}
+,isc.A.updateFirstRemoveButton=function isc_FilterBuilder_updateFirstRemoveButton(){var _1=this.clauses[0];if(!_1||!_1.removeButton)return;if(this.clauses.length==1&&!this.allowEmpty){_1.removeButton.disable();_1.removeButton.setOpacity(50)}else if(this.clauses.length>1){_1.removeButton.enable();_1.removeButton.setOpacity(100)}}
+,isc.A.isFirstClause=function isc_FilterBuilder_isFirstClause(_1){return this.clauses[0]==_1}
+,isc.A.setTopOperator=function isc_FilterBuilder_setTopOperator(_1){this.topOperator=_1;var _2=this.topOperatorAppearance;if(_2=="bracket"){this.topOperatorForm.setValue("operator",_1)}else if(_2=="radio"){this.radioOperatorForm.setValue("operator",_1)}}
+,isc.A.topOperatorChanged=function isc_FilterBuilder_topOperatorChanged(_1){this.topOperator=_1}
+,isc.A.getPrimaryDS=function isc_FilterBuilder_getPrimaryDS(_1){if(this.dataSources){if(_1==null){return isc.DataSource.get(this.dataSources[0])}
+if(isc.isAn.Object(_1)){if(_1.$92v!=null){_1=_1.$92v}
+for(var i=0;i<this.dataSources.length;i++){var _3=isc.getValues(this.dataSources[i].getFields());if(_3.contains(_1))return this.dataSources[i]}
+_1=_1.name}
+return isc.DataSource.getDataSourceForField(_1,this.dataSources)}
+if(this.dataSource)return this.getDataSource();else if(this.fieldDataSource)return this.fieldDataSource}
+,isc.A.initWidget=function isc_FilterBuilder_initWidget(){this.Super("initWidget",arguments);if(this.fieldDataSource&&this.criteria)this.$75v=true;this.fieldPickerDefaults.title=this.fieldPickerTitle;this.addButtonDefaults.prompt=this.addButtonPrompt;this.removeButtonDefaults.prompt=this.removeButtonPrompt;this.subClauseButtonDefaults.prompt=this.subClauseButtonPrompt;this.subClauseButtonDefaults.title=this.subClauseButtonTitle;var _1;if(this.showSubClauseButton==_1){this.showSubClauseButton=(this.topOperatorAppearance!="radio"&&this.topOperatorAppearance!="inline")}
+this.clauses=[];var _2=this.topOperatorAppearance;if(isc.isA.String(this.fieldDataSource))
+this.fieldDataSource=isc.DS.get(this.fieldDataSource);if(isc.isA.String(this.dataSource))
+this.dataSource=isc.DS.get(this.dataSource);var _3=this.getPrimaryDS(),_4=_3.getTypeOperatorMap("text",true,"criteria"),_5=[];var _6={"and":this.matchAllTitle,"or":this.matchAnyTitle,"not":this.matchNoneTitle};for(var _7 in _4){_5.add(_7)}
+if(_2=="bracket"){if(this.showTopRemoveButton){var _8=this.removeButton=this.createAutoChild("removeButton",{click:function(){this.creator.parentClause.removeButtonClick(this.creator)}});this.addMember(_8)}
+this.addAutoChild("topOperatorForm");this.topOperatorForm.items[0].title=this.topOperatorTitle;this.topOperatorForm.items[0].valueMap=_4;this.topOperatorForm.items[0].defaultValue=this.topOperator;this.addAutoChild("bracket")}
+this.addAutoChild("clauseStack");this.clauseStack.hide();if(_2=="radio"){this.addAutoChild("radioOperatorForm");var _9={};for(var i=0;i<this.radioOptions.length;i++){_9[this.radioOptions[i]]=_6[this.radioOptions[i]]}
+this.radioOperatorForm.items[0].title=this.radioOperatorTitle;this.radioOperatorForm.items[0].valueMap=_9;this.radioOperatorForm.items[0].defaultValue=this.topOperator}
+this.addAutoChildren(["buttonBar","addButton","subClauseButton"]);this.stripNullCriteria(this.criteria);this.setCriteria(this.criteria)}
+,isc.A.addNewClause=function isc_FilterBuilder_addNewClause(_1,_2,_3){var _4=isc.addProperties({},this.topOperatorFormDefaults);_4.items=[];for(var i=0;i<this.topOperatorFormDefaults.items.length;i++){_4.items.add(isc.addProperties({},this.topOperatorFormDefaults.items[i]))}
+var _6=this.createAutoChild("clause",{visibility:"hidden",flattenItems:true,criterion:_1,dataSources:this.dataSources,dataSource:this.dataSource,fieldDataSource:this.fieldDataSource,validateOnChange:this.validateOnChange,showFieldTitles:this.showFieldTitles,showRemoveButton:this.showRemoveButton,removeButtonPrompt:this.removeButtonPrompt,retainValuesAcrossFields:this.retainValuesAcrossFields,field:_2,fieldData:this.fieldData,fieldPickerDefaults:this.fieldPickerDefaults,fieldPickerProperties:this.fieldPickerProperties,remove:function(){this.creator.removeClause(this)},fieldNameChanged:function(){this.Super("fieldNameChanged",arguments);this.creator.fieldNameChanged(this)},topOperatorAppearance:this.topOperatorAppearance,topOperator:this.topOperator,topOperatorFormDefaults:_4,showSelectionCheckbox:this.showSelectionCheckbox,negated:_3,filterBuilder:this});var _7=this.$74e(_6);_6.updateInlineTopOperator();return _7}
+,isc.A.addClause=function isc_FilterBuilder_addClause(_1){if(!_1)return _1;var _2=this;_1.fieldDataSource=this.fieldDataSource;_1.remove=function(){_2.removeClause(this)};_1.fieldNameChanged=function(){this.Super("fieldNameChanged",arguments);_2.fieldNameChanged(this)};var _3=this.$74e(_1);_1.updateInlineTopOperator();return _3}
+,isc.A.$74e=function isc_FilterBuilder__addClause(_1){_1.filterBuilder=this;_1.updateFields();this.clauses.add(_1);var _2=this.clauseStack,_3=Math.max(0,_2.getMemberNumber(this.buttonBar)),_4=this;_2.addMember(_1,_3);_2.showMember(_1,function(){if(!_4.$845)_1.setDefaultFocus()});this.updateFirstRemoveButton();if(isc.isA.Function(this.filterChanged))this.filterChanged();return _1}
+,isc.A.getChildFilters=function isc_FilterBuilder_getChildFilters(){var _1=[];for(var i=0;i<this.clauses.length;i++){var _3=this.clauses[i];if(isc.isA.FilterBuilder(_3))_1.add(_3)}
+return _1}
+,isc.A.getFilterDescription=function isc_FilterBuilder_getFilterDescription(){return isc.FilterBuilder.getFilterDescription(this.getCriteria(),(this.dataSources||this.dataSource))}
+,isc.A.validate=function isc_FilterBuilder_validate(){var _1=true;for(var i=0;i<this.clauses.length;i++){if(!this.clauses[i].validate(null,null,true))_1=false}
+return _1}
+,isc.A.getFieldOperators=function isc_FilterBuilder_getFieldOperators(_1){var _2=this.getField(_1);return this.getPrimaryDS(_1).getFieldOperators(_2)}
+,isc.A.getValueFieldProperties=function isc_FilterBuilder_getValueFieldProperties(_1,_2,_3,_4){if(this.filterBuilder){return this.filterBuilder.getValueFieldProperties(_1,_2,_3,_4)}}
+,isc.A.getRangeSeparatorProperties=function isc_FilterBuilder_getRangeSeparatorProperties(_1,_2,_3){return this.rangeSeparatorProperties}
+,isc.A.childResized=function isc_FilterBuilder_childResized(){this.Super("childResized",arguments);if(this.clauseStack&&this.bracket)this.bracket.setHeight(this.clauseStack.getVisibleHeight())}
+,isc.A.draw=function isc_FilterBuilder_draw(){this.Super("draw",arguments);if(this.clauseStack&&this.bracket)this.bracket.setHeight(this.clauseStack.getVisibleHeight())}
+,isc.A.resized=function isc_FilterBuilder_resized(){if(this.clauseStack&&this.bracket)this.bracket.setHeight(this.clauseStack.getVisibleHeight())}
+,isc.A.addSubClause=function isc_FilterBuilder_addSubClause(_1){var _2;if(_1){_2=_1.operator}
+var _3=this.createAutoChild("subClause",{dataSource:this.dataSource,dataSources:this.dataSources,showFieldTitles:this.showFieldTitles,filterBuilder:this,parentClause:this,showTopRemoveButton:true,topOperatorAppearance:"bracket",topOperator:_2||this.defaultSubClauseOperator,clauseConstructor:this.clauseConstructor,fieldPickerDefaults:this.fieldPickerDefaults,fieldPickerProperties:this.fieldPickerProperties,fieldDataSource:this.fieldDataSource,fieldData:this.fieldData,visibility:"hidden",saveOnEnter:this.saveOnEnter,validateOnChange:this.validateOnChange,dontCreateEmptyChild:_1!=null},this.Class);this.clauses.add(_3);this.clauseStack.addMember(_3,this.clauses.length-1);this.clauseStack.showMember(_3,function(){_3.topOperatorForm.focusInItem("operator");_3.bracket.setHeight(_3.getVisibleHeight())});this.updateFirstRemoveButton();return _3}
+,isc.A.getCriteria=function isc_FilterBuilder_getCriteria(_1){if(this.$75v){return this.criteria}
+if(this.topOperatorAppearance=="inline"){return this.getInlineCriteria(_1)}
+var _2={_constructor:"AdvancedCriteria",operator:this.topOperator,criteria:[]};for(var i=0;i<this.clauses.length;i++){var _4=this.clauses[i],_5,_6=false;if(isc.isA.FilterBuilder(_4)){_5=_4.getCriteria(_1)}else{_5=_4.getCriterion(_1);_6=(_5==null)}
+if(!_6){_2.criteria.add(_5)}}
+return isc.clone(_2)}
+,isc.A.getInlineCriteria=function isc_FilterBuilder_getInlineCriteria(_1){var _2={_constructor:"AdvancedCriteria",operator:this.topOperator,criteria:[]};if(this.topOperator=="or"){var _3;for(var i=0;i<this.clauses.length;i++){if(this.clauses[i].topOperatorForm.getValue("operator")=="not"){_3=true;break}}
+if(_3){_2.operator="and";var _5={operator:"or",criteria:[]}
+_2.criteria.add(_5)}}
+for(var i=0;i<this.clauses.length;i++){var _6=this.clauses[i];var _7=_6.topOperatorForm.getValue("operator");if(_7==this.topOperator){if(_3){_5.criteria.add(_6.getCriterion(_1))}else{_2.criteria.add(_6.getCriterion(_1))}}else{_2.criteria.add({operator:"not",criteria:[_6.getCriterion(_1)]})}}
+return _2}
+,isc.A.filterReady=function isc_FilterBuilder_filterReady(){}
+,isc.A.setCriteria=function isc_FilterBuilder_setCriteria(_1){this.clearCriteria(true);var _2=this.clauseStack?this.clauseStack.animateMembers:null;if(this.clauseStack)this.clauseStack.animateMembers=false;this.stripNullCriteria(_1);this.$845=true;if(!this.$76t&&this.fieldDataSource&&_1){if(isc.isA.String(this.fieldDataSource)){this.fieldDataSource=isc.DS.getDataSource(this.fieldDataSource)}
+var _3=this,_4=this.fieldDataSource.getCriteriaFields(_1),_5={};if(_4&&_4.length>0){_5={_constructor:"AdvancedCriteria",operator:"or",criteria:[]};for(i=0;i<_4.length;i++){var _6=_4[i],_7=this.fieldData?this.fieldData[_6]:null;if(!_7){_5.criteria[_5.criteria.length]={fieldName:"name",operator:"equals",value:_6}}}
+if(_5.criteria.length!=0){this.$76t=true;this.fieldDataSource.fetchData(_5,function(_11){_3.fetchFieldsReply(_11,_1)});return}}}
+if(!_1){if(!this.allowEmpty&&!this.dontCreateEmptyChild)this.addNewClause();this.clauseStack.show();this.redraw();this.filterReady();return}
+if(!this.getPrimaryDS().isAdvancedCriteria(_1)){_1=isc.DataSource.convertCriteria(_1,"substring")}
+if(this.topOperatorAppearance=="inline"){return this.setInlineCriteria(_1,_2)}
+this.setTopOperator(_1.operator);if((!_1.criteria||_1.criteria.length==0)&&!this.radioOptions.contains(_1.operator))
+{this.logWarn("Found top-level AdvancedCriteria with no sub-criteria. Converting "+"to a top-level 'and' with a single sub-criterion");this.setTopOperator(this.topOperator);this.addNewClause(_1)}else{for(var i=0;i<_1.criteria.length;i++){var _9=_1.criteria[i],_10=this.fieldData?this.fieldData[_9.fieldName]:null;this.addCriterion(_9,_10)}
+if(this.clauses.length==0&&!this.allowEmpty)this.addNewClause()}
+delete this.$75v;this.$76t=false;this.$845=false;this.clauseStack.show();this.delayCall("redraw");if(this.clauseStack)this.clauseStack.animateMembers=_2;this.filterReady()}
+,isc.A.setInlineCriteria=function isc_FilterBuilder_setInlineCriteria(_1,_2){var _3=true,_4=false,_5=false;if(_1.operator=="and"){for(var i=0;i<_1.criteria.length;i++){var _7=_1.criteria[i];if(!_7.criteria){_4=true}else{if(_7.operator=="or"){_5=true;for(var j=0;j<_7.criteria.length;j++){var _9=_7.criteria[j];if(_9.criteria){_3=false;break}}}else{if(_7.operator=="not"){if(_7.criteria.length!=1||_7.criteria[0].criteria){_3=false}}else{_3=false}}}}}else{_3=false}
+if(_3)_3=!(_4&&_5);if(_3)_3=_4||_5;if(!_3){isc.logWarn("Trying to load an AdvancedCriteria into an 'inline' FilterBuilder, but "+"the criteria is too complex to be represented in 'inline' format");return}
+this.setTopOperator(_4?"and":"or");if(_4){for(var i=0;i<_1.criteria.length;i++){var _7=_1.criteria[i],_10=this.fieldData?this.fieldData[_7.fieldName]:null;if(!_7.criteria){this.addCriterion(_7,_10)}else{_10=this.fieldData?this.fieldData[_7.criteria[0].fieldName]:null;this.addNewClause(_7.criteria[0],_10,true)}}}else{for(var i=0;i<_1.criteria.length;i++){var _7=_1.criteria[i],_10=this.fieldData?this.fieldData[_7.fieldName]:null;if(_7.operator=="or"){for(var j=0;j<_7.criteria.length;j++){var _9=_7.criteria[j];_10=this.fieldData?this.fieldData[_9.fieldName]:null;this.addCriterion(_9,_10)}}else{_10=this.fieldData?this.fieldData[_7.criteria[0].fieldName]:null;this.addNewClause(_7.criteria[0],_10,true)}}}
+delete this.$75v;this.$76t=false;this.$845=false;this.clauseStack.show();this.delayCall("redraw");if(this.clauseStack)this.clauseStack.animateMembers=_2;this.filterReady()}
+,isc.A.stripNullCriteria=function isc_FilterBuilder_stripNullCriteria(_1){if(_1&&_1.criteria&&_1.criteria.length>0){for(var i=_1.criteria.length-1;i>=0;i--){if(_1.criteria[i]==null){_1.criteria.removeAt(i)}else{if(_1.criteria[i].criteria)this.stripNullCriteria(_1.criteria[i])}}}}
+,isc.A.fetchFieldsReply=function isc_FilterBuilder_fetchFieldsReply(_1,_2){if(this.fieldData){var _3=isc.getValues(this.fieldData);_3.addList(_1.data);this.fieldData=_3.makeIndex("name")}else this.fieldData=_1.data.makeIndex("name");this.setCriteria(_2)}
+,isc.A.clearCriteria=function isc_FilterBuilder_clearCriteria(_1){var _2=this.clauseStack?this.clauseStack.animateMembers:null;if(this.clauseStack)this.clauseStack.animateMembers=false;while(this.clauses.length>0){this.removeClause(this.clauses[0])}
+if(!_1&&!this.allowEmpty)this.addNewClause();if(this.clauseStack)this.clauseStack.animateMembers=_2}
+,isc.A.addCriterion=function isc_FilterBuilder_addCriterion(_1,_2){if(_1.criteria){var _3=this.addSubClause(_1);for(var _4=0;_4<_1.criteria.length;_4++){_2=this.fieldData?this.fieldData[_1.criteria[_4].fieldName]:null;_3.addCriterion(_1.criteria[_4],_2)}}else{this.addNewClause(_1,_2)}}
+,isc.A.handleKeyPress=function isc_FilterBuilder_handleKeyPress(_1,_2){if(_1.keyName==this.$10j){if(this.saveOnEnter){if(_2.firedOnTextItem){if(!this.creator&&this.search){this.search(this.getCriteria());return isc.EH.STOP_BUBBLING}}}}}
+,isc.A.itemChanged=function isc_FilterBuilder_itemChanged(){if(this.creator&&isc.isA.Function(this.creator.itemChanged)){this.creator.itemChanged()}else{if(!this.creator&&isc.isA.Function(this.filterChanged)){this.filterChanged()}}}
+,isc.A.fieldNameChanged=function isc_FilterBuilder_fieldNameChanged(_1){}
+,isc.A.getEditorType=function isc_FilterBuilder_getEditorType(_1,_2){var _3=this.getPrimaryDS(_1),_4;var _5={};isc.addProperties(_5,_1);_5.canEdit=_1.canFilter;_1=_5;var _6=_3.getSearchOperator(_2,_1);if(_6.editorType)return _6.editorType;if(_6.getEditorType&&isc.isA.Function(_6.getEditorType)){return _6.getEditorType()}
+if(_1){var _7=(_2=="equals"||_2=="notEqual"||_2=="lessThan"||_2=="greaterThan"||_2=="iBetween"||_2=="iBetweenInclusive"||_2=="between"||_2=="betweenInclusive"||_2=="greaterOrEqual"||_2=="lessOrEqual")?"RelativeDateItem":"DateRangeItem";if(!this.internalSearchForm){this.internalSearchForm=this.createAutoChild("internalSearchForm",{useAllDataSourceFields:false,dataSource:_3,fields:[_1],defaultDateEditorType:_7,allowEmptyValues:this.allowEmptyValues})}else{this.internalSearchForm.defaultDateEditorType=_7;this.internalSearchForm.setFields([_1])}
+return this.internalSearchForm.getEditorType(_1)}else
+return isc.FormItemFactory.getItemClassName({},"text",null)}
+,isc.A.getSelectedClauses=function isc_FilterBuilder_getSelectedClauses(){var _1=[];if(this.showSelectionCheckbox){for(var i=0;i<this.clauses.length;i++){var c=this.clauses[i];if(c.topOperatorForm&&c.topOperatorForm.getValue("select")){_1.add(c)}}}
+return _1}
+);isc.B._maxIndex=isc.C+38;isc.FilterBuilder.registerStringMethods({search:"criteria",filterChanged:""})}
+isc.defineClass("RuleEditor","VLayout");isc.A=isc.RuleEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.height=100;isc.A.validatorIsRule=true;isc.A.availableTypes=["matchesField","isOneOf","lengthRange","contains","doesntContain","substringCount","regexp","mask","floatPrecision","required","readOnly","isUnique","hasRelatedRecord","range","message","populate","setRequired"];isc.A.width=400;isc.A.components=["nameForm","mainForm","applyWhenForm","validatorForm","messageForm"];isc.A.showNameForm=false;isc.A.nameFormConstructor="DynamicForm";isc.A.nameFormDefaults={numCols:2};isc.A.nameItemDefaults={editorType:"TextItem",title:"Name"};isc.A.descriptionItemDefaults={editorType:"TextAreaItem",title:"Description"};isc.A.mainFormConstructor="DynamicForm";isc.A.mainFormDefaults={numCols:2,height:20};isc.A.fieldPickerConstructor="SelectItem";isc.A.fieldPickerDefaults={name:"fieldName",multiple:true,title:"FOR",showIf:function(){return this.creator.shouldShowFieldPicker()},pickListProperties:{showHeader:true,canSelectAll:false},getClientPickListData:function(){return this.form.creator.getFieldData()},valueField:"name",getPickListFilterCriteria:function(){var _1=this.getValue();if(_1==null||isc.isAn.emptyArray(_1))return null;if(isc.isAn.Array(_1))_1=_1[0];var _2=this.creator.getField(_1);if(_2)return{type:_2.type||"text"};return null},pickListWidth:200,pickListFields:[{name:"name",title:"Field Name",width:"*"},{name:"type",title:"Type",width:"*"}],changed:function(_1,_2,_3){if(this.pickList&&this.pickList.isVisible())this.filterPickList();this.creator.updateFieldName(_3)}};isc.A.triggerEventPickerConstructor="SelectItem";isc.A.triggerEventPickerDefaults={name:"event",startRow:true,title:"ON",valueMap:["editStart","editorEnter","editorExit","changed","submit","manual"],changed:function(_1,_2,_3){this.creator.updateTriggerEvent(_3)},showIf:function(){return this.creator.shouldShowTriggerEventPicker()}};isc.A.applyWhenFormConstructor="DynamicForm";isc.A.applyWhenFormDefaults={numCols:2,fixedColWidths:true,height:20,defaultItems:[{name:"applyWhen",labelAsTitle:true,showLabel:false,title:"WHEN",editorType:"CheckboxItem",hint:"Enable",width:20,changed:"this.form.creator.updateConditionalForm(value)"},{type:"CanvasItem",showTitle:true,title:null,name:"conditionalItem",showIf:"false",createCanvas:function(){return this.form.creator.createConditionalForm()}}]};isc.A.conditionalFormConstructor="FilterBuilder";isc.A.conditionalFormDefaults={showFieldTitles:false};isc.A.validatorFormConstructor="DynamicForm";isc.A.validatorFormDefaults={numCols:2,fixedColWidths:true,height:20};isc.A.typePickerConstructor="SelectItem";isc.A.typePickerDefaults={name:"type",title:"RULE",showIf:function(){var _1=this.form.creator;return _1.showTypePicker==false?false:true},getValueMap:function(){return this.creator.getTypeValueMap()},changed:function(_1,_2,_3){this.creator.updateValidatorType(_3)}};isc.A.messageFormConstructor="DynamicForm";isc.A.messageFormDefaults={numCols:2,width:"100%",height:20,defaultItems:[{name:"errorMessage",title:"MESSAGE",editorType:"TextItem",width:"*"}]};isc.A.valuesFormConstructor="FilterClause";isc.A.valuesFormDefaults={customGetValuesFunction:"getAttributesFromEditor",customSetValuesFunction:"setEditorAttributes",operatorAttribute:"type",fieldPickerProperties:{showIf:"return false"},getEditorType:function(_1,_2){if(_1&&isc.SimpleType.inheritsFrom(_1.type,"date"))return"RelativeDateItem";return null}};isc.B.push(isc.A.initWidget=function isc_RuleEditor_initWidget(){var _1=this.rule||this.validator;if(_1!=null){this.setRule(_1,true)}
+if(this.showTypePicker==null&&this.validatorType!=null){this.showTypePicker=false}
+this.addAutoChildren(this.components);if(this.nameForm!=null&&_1!=null){this.nameForm.setValue("name",_1.name);this.nameForm.setValue("description",_1.description)}
+if(this.mainForm){this.fieldPicker=this.mainForm.getItem("fieldName");if(this.fieldName!=null)this.fieldPicker.setValue(this.fieldName);this.triggerEventPicker=this.mainForm.getItem("event");if(this.triggerEvent)this.triggerEventPicker.setValue(this.triggerEvent);if(!this.validatorIsRule){this.mainForm.setVisibility(isc.Canvas.HIDDEN)}}
+if(this.applyWhenForm){if(this.applyWhen!=null){this.applyWhenForm.setValue("applyWhen",true);this.updateConditionalForm(true)}}
+if(this.validatorForm){this.typePicker=this.validatorForm.getItem("type");if(this.validatorType!=null)this.typePicker.setValue(this.validatorType);if(this.validatorType!=null){this.updateValidatorType(this.validatorType)}}
+if(this.messageForm){if(this.rule&&this.rule.errorMessage){this.messageForm.setValue("errorMessage",this.rule.errorMessage)}}
+if(_1!=null){this.setClauseAttributes(_1)}
+return this.Super("initWidget",arguments)}
+,isc.A.getDynamicDefaults=function isc_RuleEditor_getDynamicDefaults(_1){switch(_1){case"nameForm":var _2=isc.addProperties({name:"name"},this.nameItemProperties,this.nameItemDefaults),_3=isc.addProperties({name:"description"},this.descriptionItemProperties,this.descriptionItemDefaults);return{items:[_2,_3]};case"mainForm":var _4=isc.addProperties({creator:this,editorType:this.fieldPickerConstructor},this.fieldPickerDefaults,this.fieldPickerProperties),_5=isc.addProperties({creator:this,editorType:this.triggerEventPickerConstructor},this.triggerEventPickerDefaults,this.triggerEventPickerProperties)
+return{items:[_4,_5]};case"applyWhenForm":return;case"validatorForm":var _6=isc.addProperties({creator:this,editorType:this.typePickerConstructor},this.typePickerDefaults,this.typePickerProperties);var _7={name:"valuesItem",editorType:"CanvasItem",showTitle:true,title:null,showIf:"false",canvas:this.getValuesForm(this.validatorType)}
+return{disabled:(this.fieldName==null),items:[_6,_7]};case"messageForm":return}}
+,isc.A.shouldShowFieldPicker=function isc_RuleEditor_shouldShowFieldPicker(){if(this.showFieldPicker!=null)return this.showFieldPicker;return this.validatorIsRule}
+,isc.A.getField=function isc_RuleEditor_getField(_1){return this.dataSource?this.dataSource.getField(_1):isc.DataSource.getFieldFromDataSources(_1,this.dataSources)}
+,isc.A.getFieldData=function isc_RuleEditor_getFieldData(){if(this.$89u==null){var _1=this.dataSources;if(_1!=null){this.$89u=isc.DataSource.getCombinedDataSourceFields(this.dataSources)}else if(this.dataSource){var _2=isc.getKeys(this.dataSource.getFields());this.$89u=_2.duplicate()}
+this.$896=[];for(var i=0;i<this.$89u.length;i++){var _4=this.$89u[i],_5=this.getField(_4);this.$896[i]={name:_4,type:_5.type||"text"}}}
+return this.$896}
+,isc.A.updateFieldName=function isc_RuleEditor_updateFieldName(_1){this.fieldName=_1;if(this.validatorForm){if(_1==null||(isc.isAn.Array(_1)&&_1.length==0)){this.validatorForm.setValue("type",null);this.validatorType=null;this.validatorForm.setDisabled(true)}else{if(this.validatorForm.isDisabled())this.validatorForm.enable()}}
+if(isc.isAn.Array(_1))_1=_1[0];if(_1!=null&&this.validatorType!=null){this.valuesForm.fieldName=_1;this.valuesForm.clause.setValue("fieldName",_1);this.valuesForm.clause.setValue("operator",this.validatorType);var _2=this.getValidatorDefinition(this.validatorType);this.valuesForm.updateValueItems(this.valuesForm.getField(_1),_2,_1)}
+this.updateValuesFormVisibility()}
+,isc.A.updateValuesFormVisibility=function isc_RuleEditor_updateValuesFormVisibility(){if(this.valuesForm){if(this.fieldName==null||this.validatorType==null){this.validatorForm.getItem("valuesItem").hide()}else{if(!this.valuesForm.isVisible()){this.validatorForm.getItem("valuesItem").show()}}}}
+,isc.A.shouldShowTriggerEventPicker=function isc_RuleEditor_shouldShowTriggerEventPicker(){if(this.showTriggerEventPicker!=null)return this.showTriggerEventPicker;return this.validatorIsRule}
+,isc.A.createConditionalForm=function isc_RuleEditor_createConditionalForm(){this.conditionalForm=this.createAutoChild("conditionalForm",{dataSource:this.dataSource,dataSources:this.dataSources});return this.conditionalForm}
+,isc.A.updateConditionalForm=function isc_RuleEditor_updateConditionalForm(_1){var _2=this.applyWhenForm.getItem("conditionalItem");if(!_1){_2.hide()}else{var _3=this.applyWhen||{};this.conditionalForm.setCriteria(_3);_2.show()}}
+,isc.A.getTypeValueMap=function isc_RuleEditor_getTypeValueMap(){var _1=this.availableTypes,_2=this.fieldName,_3;if(_2==null)_2=[];else if(!isc.isAn.Array(_2))_2=[_2];for(var i=0;i<_2.length;i++){var _5=this.getField(_2[i]);if(_5==null){this.logWarn("unable to retrieve field for:"+_2);continue}
+var _6=isc.SimpleType.getBaseType(_5.type||"text");if(_3==null){_3=_6}else if(_3!=_6){_3=null;break}}
+if(this.availableTypeMap==null){this.availableTypeMap={};for(var i=0;i<this.availableTypes.length;i++){var _7=null;if(this.availableTypes[i]=="range"){_7=["date","time","float","integer"]}else{var _8=this.getValidatorDefinition(this.availableTypes[i]);_7=_8.dataType||"none"}
+if(!isc.isA.Array(_7))_7=[_7];for(var _9=0;_9<_7.length;_9++){if(this.availableTypeMap[_7[_9]]==null){this.availableTypeMap[_7[_9]]=[this.availableTypes[i]]}else{this.availableTypeMap[_7[_9]].add(this.availableTypes[i])}}}}
+var _1=[];_1.addList(this.availableTypeMap["none"]);if(_3!=null)_1.addList(this.availableTypeMap[_3]);return _1}
+,isc.A.updateValidatorType=function isc_RuleEditor_updateValidatorType(_1){this.validatorType=_1;if(_1!=null){var _2=this.valuesForm,_3=this.getValuesForm(_1);if(_2!=_3){this.valuesForm=_3;this.validatorForm.getItem("valuesItem").setCanvas(this.valuesForm)}}
+this.updateValuesFormVisibility()}
+,isc.A.getValidatorDefinition=function isc_RuleEditor_getValidatorDefinition(_1){if(_1==null)_1=this.validatorType;if(_1==null)return null;if(_1=="range"){var _2=this.fieldName,_1=_2?_2.type:"integer",_3=isc.SimpleType.getBaseType(_1);if(_3=="date"||_3=="datetime"){_1="dateRange"}else if(_3=="time"){_1="timeRange"}else if(_3=="float"){_1="floatRange"}else{_1="integerRange"}}
+return isc.Validator.$74u[_1]}
+,isc.A.getValuesForm=function isc_RuleEditor_getValuesForm(_1){if(_1!=null){var _2=this.getValidatorDefinition(_1),_3=_2.valueType}
+var _4=this.fieldName;if(isc.isAn.Array(_4))_4=_4[0];if(this.valuesForm){this.valuesForm.updateValueItems(this.valuesForm.getField(_4),_2,_4);this.valuesForm.clause.setValue("operator",_1);return this.valuesForm}else{var _5=this.valuesForm=this.createAutoChild("valuesForm",{visibility:(this.fieldName?"inherit":"hidden"),showRemoveButton:false,dataSources:this.dataSources,dataSource:this.dataSource,fieldName:_4,operatorType:_1});var _6=_5.clause;_6.getItem("operator").hide();_6.getItem("operator").addUnknownValues=true;return _5}}
+,isc.A.setValidatorType=function isc_RuleEditor_setValidatorType(_1){this.validatorType=_1;this.validatorForm.setValue("type",_1);this.updateValidatorType(_1)}
+,isc.A.setFieldName=function isc_RuleEditor_setFieldName(_1){if(this.fieldPicker){this.fieldPicker.setValue(_1)}
+this.updateFieldName(_1)}
+,isc.A.setTriggerEvent=function isc_RuleEditor_setTriggerEvent(_1){if(this.triggerEventPicker){this.triggerEventPicker.setValue(_1)}
+this.updateTriggerEvent(_1)}
+,isc.A.updateTriggerEvent=function isc_RuleEditor_updateTriggerEvent(_1){this.triggerEvent=_1}
+,isc.A.setApplyWhen=function isc_RuleEditor_setApplyWhen(_1){this.applyWhen=_1;this.applyWhenForm.setValue("applyWhen",(this.applyWhen!=null));this.updateConditionalForm(_1!=null)}
+,isc.A.getApplyWhen=function isc_RuleEditor_getApplyWhen(){if(this.applyWhenForm.getValue("applyWhen")){this.applyWhen=this.conditionalForm.getCriteria()}else{this.applyWhen=null}
+return this.applyWhen}
+,isc.A.getAttributesFromClause=function isc_RuleEditor_getAttributesFromClause(){var _1=this.getValidatorDefinition();var _2=this.fieldName,_3=this.valuesForm;if(isc.isAn.Array(_2))_2=_2[0];var _4=_3.getClauseValues(_2,_1);return _4}
+,isc.A.setClauseAttributes=function isc_RuleEditor_setClauseAttributes(_1){if(this.valuesForm==null)return;var _2=this.getValidatorDefinition();var _3=this.fieldName;if(isc.isAn.Array(_3))_3=_3[0];this.valuesForm.setClauseValues(_3,_2,_1)}
+,isc.A.getValidator=function isc_RuleEditor_getValidator(){return this.getRule()}
+,isc.A.getRule=function isc_RuleEditor_getRule(){if(this.validatorType==null||this.fieldName==null)return null;var _1={};_1.type=this.validatorType;if(this.nameForm!=null){var _2=this.nameForm.getValue("name");if(_2!=null)_1.name=_2;var _3=this.nameForm.getValue("description");if(_3!=null)_1.description=_3}
+if(this.valuesForm!=null){var _4=this.getAttributesFromClause();isc.addProperties(_1,_4)}
+if(this.validatorIsRule){_1.fieldName=this.fieldName;if(this.triggerEvent)_1.triggerEvent=this.triggerEvent}else{delete _1.fieldName}
+_1.errorMessage=this.messageForm.getValue("errorMessage");var _5=this.getApplyWhen();if(_5!=null)_1.applyWhen=_5;return _1}
+,isc.A.validate=function isc_RuleEditor_validate(){var _1=false;if(this.nameForm)_1=this.nameForm.validate()==false;if(this.mainForm)_1=(this.mainForm.validate()==false)||_1;if(this.applyWhenForm&&this.applyWhenForm.getValue("applyWhen")){_1=(this.conditionalForm.validate()==false)||_1}
+if(this.validatorForm){_1=(this.validatorForm.validate()==false)||_1;if(this.valuesForm)_1=(this.valuesForm.validate()==false)||_1}
+if(this.messageForm)_1=(this.messageForm.validate()==false)||_1;return!_1}
+,isc.A.setRule=function isc_RuleEditor_setRule(_1,_2){this.validator=this.rule=_1;if(_2){this.validatorType=_1.type;this.applyWhen=_1.applyWhen;this.fieldName=_1.fieldName;this.triggerEvent=_1.triggerEvent}else{if(this.nameForm){this.nameForm.setValue("name",_1.name);this.nameForm.setValue("description",_1.description)}
+if(_1.fieldName!=null)this.setFieldName(_1.fieldName);this.setTriggerEvent(_1.triggerEvent);this.setValidatorType(_1.type);this.setApplyWhen(_1.applyWhen);this.messageForm.setValue("errorMessage",_1.errorMessage);this.setClauseAttributes(_1)}}
+,isc.A.setValidator=function isc_RuleEditor_setValidator(_1){this.setRule(_1)}
+,isc.A.clearRule=function isc_RuleEditor_clearRule(){this.rule=this.validator=null;this.setFieldName(null);this.setValidatorType(null);this.setApplyWhen(null);this.setTriggerEvent(null);if(this.nameForm)this.nameForm.clearValues();if(this.messageForm)this.messageForm.clearValue("errorMessage")}
+,isc.A.clearValidator=function isc_RuleEditor_clearValidator(){return this.clearRule()}
+);isc.B._maxIndex=isc.C+29;if(isc.DynamicForm){isc.defineClass("SubstringCountEditor","CanvasItem");isc.A=isc.SubstringCountEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canvasConstructor="DynamicForm";isc.A.canvasDefaults={numCols:3};isc.A.substringFieldDefaults={name:"substring",showTitle:false,type:"text",colSpan:"*",width:"*"};isc.A.countFieldDefaults={name:"count",showTitle:false,hint:"Count",showHintInField:true,width:50,type:"integer"};isc.A.operatorFieldDefaults={name:"operator",title:"Operator",editorType:"SelectItem",width:50,defaultValue:"==",allowEmptyValue:false,valueMap:["==","!=","<","<=",">",">="]};isc.B.push(isc.A.createCanvas=function isc_SubstringCountEditor_createCanvas(_1,_2){var _3=isc.addProperties({},this.substringFieldDefaults,this.substringFieldProperties),_4=isc.addProperties({},this.countFieldDefaults,this.countFieldProperties),_5=isc.addProperties({},this.operatorFieldDefaults,this.operatorFieldProperties);return this.canvas=this.createAutoChild("canvas",{items:[_3,_4,_5]})}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("FloatRangeEditor","CanvasItem");isc.A=isc.FloatRangeEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canvasConstructor="DynamicForm";isc.A.canvasDefaults={numCols:2};isc.A.minFieldDefaults={name:"min",showTitle:false,type:"float",hint:"Min",showHintInField:true};isc.A.maxFieldDefaults={name:"max",showTitle:false,type:"float",hint:"Max",showHintInField:true};isc.A.exclusiveFieldDefaults={name:"exclusive",title:"Exclusive",colSpan:"*",prompt:"Range is exclusive (does not include min/max values)",type:"boolean",editorType:"CheckboxItem",defaultValue:false};isc.B.push(isc.A.createCanvas=function isc_FloatRangeEditor_createCanvas(_1,_2){var _3=isc.addProperties({},this.minFieldDefaults,this.minFieldProperties),_4=isc.addProperties({},this.maxFieldDefaults,this.maxFieldProperties),_5=isc.addProperties({},this.exclusiveFieldDefaults,this.exclusiveFieldProperties);return this.canvas=this.createAutoChild("canvas",{items:[_3,_4,_5]})}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("FloatPrecisionEditor","CanvasItem");isc.A=isc.FloatPrecisionEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canvasConstructor="DynamicForm";isc.A.canvasDefaults={numCols:1};isc.A.precisionFieldDefaults={name:"precision",showTitle:false,type:"float",hint:"Precision",showHintInField:true};isc.A.roundFieldDefaults={showTitle:false,name:"roundToPrecision",title:"Round to precision",type:"boolean",editorType:"CheckboxItem",defaultValue:false};isc.B.push(isc.A.createCanvas=function isc_FloatPrecisionEditor_createCanvas(_1,_2){var _3=isc.addProperties({},this.precisionFieldDefaults,this.precisionFieldProperties),_4=isc.addProperties({},this.roundFieldDefaults,this.roundFieldProperties);return this.canvas=this.createAutoChild("canvas",{items:[_3,_4]})}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("MaskRuleEditor","CanvasItem");isc.A=isc.MaskRuleEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canvasConstructor="DynamicForm";isc.A.canvasDefaults={numCols:1};isc.A.maskFieldDefaults={name:"mask",editorType:"TextItem",showTitle:false,hint:"mask",showHintInField:true};isc.A.transformFieldDefaults={name:"transformTo",editorType:"TextItem",showTitle:false,hint:"transformTo",showHintInField:true};isc.B.push(isc.A.createCanvas=function isc_MaskRuleEditor_createCanvas(_1,_2){var _3=isc.addProperties({},this.maskFieldDefaults,this.maskFieldProperties),_4=isc.addProperties({},this.transformFieldDefaults,this.transformFieldProperties);return this.canvas=this.createAutoChild("canvas",{items:[_3,_4]})}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("PopulateRuleEditor","BlurbItem");isc.A=isc.PopulateRuleEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.emptyFormulaText="Click the icon to select a formula";isc.A.formulaVarsTitle="Formula Variables:";isc.A.formulaTitle="Formula:";isc.A.editFormulaPrompt="Click to edit formula";isc.A.icons=[{click:"item.showFormulaWindow()"}];isc.A.formulaWindowConstructor="Window";isc.A.formulaWindowDefaults={title:"Formula Editor",showMinimizeButton:false,showMaximizeButton:false,isModal:true,showModalMask:true,autoSize:true,autoCenter:true,autoDraw:true,headerIconProperties:{padding:1,src:"[SKINIMG]ListGrid/formula_menuItem.png"},closeClick:function(){this.items.get(0).completeEditing(true)}};isc.A.formulaBuilderConstructor="FormulaBuilder";isc.A.formulaBuilderDefaults={width:300,showTitleField:false,showAutoHideCheckBox:false,showSaveAddAnotherButton:false,fireOnClose:function(){this.creator.userEditComplete(!this.cancelled)}};isc.B.push(isc.A.formatValue=function isc_PopulateRuleEditor_formatValue(_1,_2,_3,_4){if(_1==null||_1.formula==null){return this.emptyFormulaText}
+return"<table class="+this.getTextBoxStyle()+"><tr><td>"+this.formulaVarsTitle+"</td><td>"+isc.JSON.encode(_1.formulaVars,{prettyPrint:true})+"</td></tr>"+"<tr><td>"+this.formulaTitle+"</td><td>"+_1.formula+"</td></tr></table>"}
+,isc.A.init=function isc_PopulateRuleEditor_init(){this.icons[0].prompt=this.editFormulaPrompt;return this.Super("init",arguments)}
+,isc.A.showFormulaWindow=function isc_PopulateRuleEditor_showFormulaWindow(){if(this.formulaBuilder==null){this.formulaBuilder=this.createAutoChild("formulaBuilder",{dataSource:this.form.creator.dataSource,dataSources:this.form.creator.dataSources,mathFunctions:isc.MathFunction.getDefaultFunctionNames()});this.formulaWindow=this.createAutoChild("formulaWindow",{items:[this.formulaBuilder]})}
+this.formulaBuilder.setValue("");this.formulaWindow.show()}
+,isc.A.userEditComplete=function isc_PopulateRuleEditor_userEditComplete(_1){if(_1){var _2=this.formulaBuilder.getBasicValueObject(),_3,_4;if(_2!=null){_3=_2.text;_4=_2.formulaVars}
+if(_3!=null){this.storeValue({formula:_3,formulaVars:_4})}else{this.storeValue(null)}
+this.redraw()}
+this.formulaWindow.clear()}
+);isc.B._maxIndex=isc.C+4;isc.defineClass("ReadOnlyRuleEditor","SelectItem");isc.A=isc.ReadOnlyRuleEditor.getPrototype();isc.A.defaultValue=isc.Validator.READONLY;isc.A.valueMap=[isc.Validator.HIDDEN,isc.Validator.DISABLED,isc.Validator.READONLY]}
+isc.setScreenReaderMode=function(_1){isc.screenReader=_1}
+isc.liteAria=null;isc.A=isc.Canvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.ariaEnabled=function isc_c_Canvas_ariaEnabled(){return isc.screenReader||isc.screenReader!==false&&((isc.Browser.isIE&&isc.Browser.version>=8)||!isc.Browser.isIE)}
+,isc.A.useLiteAria=function isc_c_Canvas_useLiteAria(){if(isc.liteAria!=null)return isc.liteAria;if(isc.screenReader==true)return false;return(isc.Browser.isIE&&isc.Browser.version<9)}
+,isc.A.setAriaRole=function isc_c_Canvas_setAriaRole(_1,_2){if(this.logIsDebugEnabled("aria")){this.logDebug("ARIA role changed to: "+_2+" on element: "+this.echoLeaf(_1),"aria")}
+_1.setAttribute("role",_2)}
+,isc.A.setAriaState=function isc_c_Canvas_setAriaState(_1,_2,_3){if(!_1)return;if(this.logIsInfoEnabled("aria")){this.logInfo("ARIA state: "+_2+": "+_3+", set on element: "+isc.echoLeaf(_1),"aria")}
+_3=isc.makeXMLSafe(_3,false,true,true,false,true,true);_1.setAttribute("aria-"+_2,_3)}
+,isc.A.setAriaStates=function isc_c_Canvas_setAriaStates(_1,_2){if(!_1)return;if(_2==null)return;for(var _3 in _2){this.setAriaState(_1,_3,_2[_3])}}
+,isc.A.clearAriaState=function isc_c_Canvas_clearAriaState(_1,_2){if(!_1)return;_1.removeAttribute("aria-"+_2)}
+,isc.A.getAriaStateAttributes=function isc_c_Canvas_getAriaStateAttributes(_1){var _2="";if(_1){for(var _3 in _1){var _4=_1[_3];if(isc.isA.String(_4)){_4=isc.makeXMLSafe(_4,false,true,true,false,true,true)}
+_2+=" aria-"+_3+"='"+_4+"'"}}
+return _2}
+);isc.B._maxIndex=isc.C+7;isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setAriaRole=function isc_Canvas_setAriaRole(_1){isc.Canvas.setAriaRole(this.getClipHandle(),_1)}
+,isc.A.setAriaState=function isc_Canvas_setAriaState(_1,_2){isc.Canvas.setAriaState(this.getClipHandle(),_1,_2)}
+,isc.A.setAriaStates=function isc_Canvas_setAriaStates(_1){isc.Canvas.setAriaStates(this.getClipHandle(),_1)}
+,isc.A.clearAriaState=function isc_Canvas_clearAriaState(_1){isc.Canvas.clearAriaState(this.getClipHandle(),_1)}
+,isc.A.getAriaStateAttributes=function isc_Canvas_getAriaStateAttributes(){return isc.Canvas.getAriaStateAttributes(this.ariaState)}
+);isc.B._maxIndex=isc.C+5;if(isc.DynamicForm){isc.A=isc.FormItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setAriaRole=function isc_FormItem_setAriaRole(_1){var _2=this.getFocusElement();if(_2!=null)isc.Canvas.setAriaRole(_2,_1)}
+,isc.A.setAriaState=function isc_FormItem_setAriaState(_1,_2){var _3=this.getFocusElement();if(_3!=null)isc.Canvas.setAriaState(_3,_1,_2)}
+,isc.A.setAriaStates=function isc_FormItem_setAriaStates(_1){var _2=this.getFocusElement();if(_2!=null)isc.Canvas.setAriaStates(_2,_1)}
+,isc.A.clearAriaState=function isc_FormItem_clearAriaState(_1){var _2=this.getFocusElement();if(_2!=null)isc.Canvas.clearAriaState(_2,_1)}
+,isc.A.getAriaState=function isc_FormItem_getAriaState(){var _1={};if(this.required&&this.form&&this.form.hiliteRequiredFields)_1.required=true;if(this.hasErrors()){_1.invalid=true;var _2=this.getErrorIconId();_1.describedby=_2}
+if(this.isDisabled())_1.disabled=true;if(isc.isA.CheckboxItem(this))_1.checked=!!this.getValue();return _1}
+,isc.A.addContentRoles=function isc_FormItem_addContentRoles(){if(!isc.Canvas.ariaEnabled()||isc.Canvas.useLiteAria())return;if(!this.$kk()||!this.ariaRole)return;this.setAriaRole(this.ariaRole);var _1;if(this.outerAriaRole){_1=this.getHandle();if(_1!=null)isc.Canvas.setAriaRole(_1,this.outerAriaRole)}
+if(this.title){var _2;if(this.hasDataElement()){_2=this.getDataElement()}else if(this.outerAriaRole){_2=_1!=null?_1:this.getHandle()}else{_2=this.$15h()}
+if(_2!=null){isc.Canvas.setAriaState(_2,"label",this.title)}}
+if(this.ariaState)this.setAriaStates(this.ariaState);this.setAriaStates(this.getAriaState())}
+);isc.B._maxIndex=isc.C+6;isc.A=isc.TextAreaItem.getPrototype();isc.A.ariaState={multiline:true};isc.A=isc.ComboBoxItem.getPrototype();isc.A.ariaState={autocomplete:"list"};isc.A.ariaRole="combobox";isc.A=isc.SelectItem.getPrototype();isc.A.ariaRole="option";isc.A.outerAriaRole="listbox";isc.A.ariaState={expanded:false,selected:true};isc.A=isc.StaticTextItem.getPrototype();isc.A.ariaRole="textbox";isc.A.ariaState={disabled:true}}
+if(isc.GridRenderer){isc.A=isc.GridRenderer.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setRowAriaState=function isc_GridRenderer_setRowAriaState(_1,_2,_3){var _4=this.getTableElement(_1);if(_4==null)return;isc.Canvas.setAriaState(_4,_2,_3)}
+,isc.A.setRowAriaStates=function isc_GridRenderer_setRowAriaStates(_1,_2){var _3=this.getTableElement(_1);if(_3==null)return;isc.Canvas.setAriaStates(_3,_2)}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.ListGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.ariaRole="list";isc.A.rowRole="listitem";isc.B.push(isc.A.getRowRole=function isc_ListGrid_getRowRole(_1,_2){if(_2&&_2.isSeparator)return"separator";return this.rowRole}
+,isc.A.getRowAriaState=function isc_ListGrid_getRowAriaState(_1,_2){if(!isc.Canvas.ariaEnabled()||isc.Canvas.useLiteAria())return;var _3;if(!this.showAllRecords&&this.data!=null){_3={setsize:this.getTotalRows(),posinset:_1}}
+if(this.selection&&this.selection.isSelected&&this.selection.isSelected(_1)){if(_3==null)_3={}
+_3.selected=true}
+return _3}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.TreeGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.ariaRole="tree";isc.A.rowRole="treeitem";isc.B.push(isc.A.getRowRole=function isc_TreeGrid_getRowRole(_1,_2){return this.rowRole}
+,isc.A.getRowAriaState=function isc_TreeGrid_getRowAriaState(_1,_2){if(!isc.Canvas.ariaEnabled()||isc.Canvas.useLiteAria())return;var _3=this.data,_4=!!(this.selection&&this.selection.isSelected&&this.selection.isSelected(_2)),_5=_3.getLevel(_2);var _6={selected:_4,level:_5,setsize:this.getTotalRows(),posinset:_1};if(_3.isFolder(_2))_6.expanded=!!_3.isOpen(_2);return _6}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.Menu.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.ariaRole="menu";isc.B.push(isc.A.getRowRole=function isc_Menu_getRowRole(_1,_2){if(!_2||_2.isSeparator)return"separator";if(_2.checked||_2.checkIf||_2.checkable)return"menuitemcheckable";if(_2.radio)return"menuitemradio";return"menuitem"}
+,isc.A.getRowState=function isc_Menu_getRowState(_1){if(this.hasSubmenu(this.getItem(_1)))return{haspopup:true}}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.MenuButton.getPrototype();isc.A.ariaRole="button";isc.A.ariaState={haspopup:true};isc.A=isc.MenuBar.getPrototype();isc.A.ariaRole="menubar"}
+(function(){var _1={Button:"button",StretchImgButton:"button",ImgButton:"button",Label:"label",SectionHeader:"heading",ImgSectionHeader:"heading",CheckboxItem:"checkbox",Slider:"slider",TextItem:"textbox",TextAreaItem:"textbox",Window:"dialog",Toolbar:"toolbar",HTMLFlow:"article",HTMLPane:"article",TabBar:"tablist",PaneContainer:"tabpanel",ImgTab:"tab",EdgedCanvas:"presentation",BackMask:"presentation"}
+for(var _2 in _1){var _3=isc.ClassFactory.getClass(_2);if(_3)_3.addProperties({ariaRole:_1[_2]})}})();if(isc.ListGrid!=null){isc.ClassFactory.defineClass("DataSourceEditor","VLayout");isc.A=isc.DataSourceEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.overflow="visible";isc.A.mainEditorDefaults={_constructor:"ComponentEditor",autoDraw:false,numCols:8,overflow:"visible",dataSource:"DataSource",fields:[{name:"ID",title:"ID",required:true},{name:"dropExtraFields"},{name:"autoDeriveSchema"},{type:"section",defaultValue:"XPath Binding",showIf:"values.dataFormat != 'iscServer'",itemIds:["dataURL","selectBy","recordXPath","recordName"]},{name:"dataURL",showIf:"values.dataFormat != 'iscServer'"},{name:"selectBy",title:"Select Records By",shouldSaveValue:false,valueMap:{tagName:"Tag Name",xpath:"XPath Expression"},defaultValue:"xpath",redrawOnChange:true,showIf:"values.dataFormat == 'xml'"},{name:"recordXPath",showIf:"values.dataFormat != 'iscServer' && form.getItem('selectBy').getValue() == 'xpath'"},{name:"recordName",showIf:"values.dataFormat == 'xml' && values.selectBy == 'tagName'"},{type:"section",defaultValue:"SQL Binding",showIf:"values.serverType == 'sql' || values.serverType == 'hibernate'",itemIds:["dbName","schemaName","tableName"]},{name:"dbName",showIf:"values.serverType == 'sql'"},{name:"schema",showIf:"values.serverType == 'sql'"},{name:"tableName",showIf:"values.serverType == 'sql' || values.serverType == 'hibernate'"},{name:"beanClassName",showIf:"values.serverType == 'sql' || values.serverType == 'hibernate'"},{type:"section",defaultValue:"Record Titles",sectionExpanded:false,itemIds:["title","pluralTitle","titleField"]},{name:"title"},{name:"pluralTitle"},{name:"titleField"}]};isc.A.fieldEditorDefaults={_constructor:"ListEditor",autoDraw:false,inlineEdit:true,dataSource:"DataSourceField",saveLocally:true,gridButtonsOrientation:"right",fields:[{name:"name",treeField:true},{name:"title"},{name:"type",width:60},{name:"required",title:"Req.",width:40,canToggle:true},{name:"hidden",width:40},{name:"length",width:60},{name:"primaryKey",title:"is PK",width:40}],formProperties:{numCols:4,initialGroups:10},formFields:[{name:"name",canEdit:false},{name:"type"},{name:"title"},{name:"primaryKey"},{name:"valueXPath",colSpan:2,showIf:function(){var _1=this.form.creator,_2=_1?_1.creator.mainEditor:null;return(_2&&_2.getValues().dataFormat!='iscServer')}},{type:"section",defaultValue:"Value Constraints",itemIds:["required","length","valueMap"]},{name:"valueMap",rowSpan:2},{name:"required"},{name:"length"},{type:"section",defaultValue:"Component Binding",itemIds:["hidden","detail","canEdit"]},{name:"canEdit"},{name:"hidden"},{name:"detail"},{type:"section",defaultValue:"Relations",sectionExpanded:false,itemIds:["foreignKey","rootValue"]},{name:"foreignKey"},{name:"rootValue"}],gridDefaults:{editEvent:"click",listEndEditAction:"next",autoParent:"gridLayout",selectionType:isc.Selection.SINGLE,recordClick:"this.creator.recordClick(record)",modalEditing:true,editorEnter:"if (this.creator.moreButton) this.creator.moreButton.enable()",selectionChanged:function(){if(this.anySelected()&&this.creator.moreButton){this.creator.moreButton.enable()}},contextMenu:{data:[{title:"Remove",click:"target.creator.removeRecord()"}]},styleName:"rightBorderOnly",validateByCell:true,leaveScrollbarGap:false,alternateRecordStyles:true,canRemoveRecords:true,canEdit:true,canEditCell:function(_1,_2){var _3=this.getRecord(_1),_4=this.getField(_2),_5=_4[this.fieldIdProperty],_6=(_5=="name"||_5=="title");if(isc.isA.TreeGrid(this)){if(_3.isFolder&&!(_6||_5=="required"||_5=="hidden")){return false}}
+else{if(this.getDataSource().fieldIsComplexType(_4)&&!_6)
+return false}
+return this.Super('canEditCell',arguments)}},newRecord:function(){if(this.creator.canEditChildSchema){var _1=this.grid,_2=_1.data,_3=this.getSelectedNode();if(!_3)_3=_2.root;var _4=_2.getParent(_3)
+if(_3){if(!_3.isFolder)_3=_4;var _5={name:this.getNextUniqueFieldName(_3,"field"),id:this.getNextUnusedNodeId(),parentId:_3?_3.id:null};this.addNode(_5,_3)}}else this.Super("newRecord",arguments)},getSelectedNode:function(){return this.grid.getSelectedRecord()},addNode:function(_1,_2){var _3=this.grid.data;_3.linkNodes([_1])},getNextUniqueFieldName:function(_1,_2){var _3=_1?_1.fields||[]:[],_4=1;if(!_2||_2.length==0)_2="field";if(_3&&_3.length>0){for(var i=0;i<_3.length;i++){var _6=_3.get(i),_7=_6.name;if(_7.substring(0,_2.length)==_2&&_7.length>_2.length){var _8=parseInt(_7.substring(_2.length));if(!isNaN(_8)&&_8>=_4)
+_4=_8+1}}}
+return _2+_4},getNextUnusedNodeId:function(){var _1=this.grid.data;for(var i=1;i<10000;i++){var _3=_1.findById(i);if(!_3)return i}
+return 1}};isc.A.newButtonDefaults={_constructor:isc.AutoFitButton,autoParent:"gridButtons",title:"New Field",click:"this.creator.newRecord()"};isc.A.moreButtonDefaults={_constructor:isc.AutoFitButton,autoParent:"gridButtons",click:"this.creator.editMore()",disabled:true};isc.A.buttonLayoutDefaults={_constructor:"HLayout",width:"100%"};isc.A.saveButtonDefaults={_constructor:"IButton",autoDraw:false,title:"Save",autoFit:true,autoParent:"buttonLayout",click:function(){var _1=true;if(this.creator.showMainEditor!=false)_1=this.creator.mainEditor.validate();if(_1&&this.creator.fieldEditor.validate())this.creator.save()}};isc.A.addChildButtonDefaults={_constructor:"IButton",autoDraw:false,title:"Add Child Object",autoFit:true,click:function(){var _1=this.creator.fieldEditor,_2=_1.grid,_3=_2.data,_4=_2.getSelectedRecord()||_3.root,_5=_3.getParent(_4),_6={isFolder:true,children:[],multiple:true,childTagName:"item"};if(_4){if(!_4.isFolder)_4=_5;_6.name=_1.getNextUniqueFieldName(_4,"child"),_6.id=_1.getNextUnusedNodeId(),_6.parentId=_4.id;_3.linkNodes([_6],_5);_3.openFolder(_6)}}};isc.A.mainStackDefaults={_constructor:"SectionStack",overflow:"visible",width:"100%",height:"100%",visibilityMode:"multiple"};isc.A.instructionsSectionDefaults={_constructor:"SectionStackSection",title:"Instructions",expanded:true,canCollapse:true};isc.A.instructionsDefaults={_constructor:"HTMLFlow",autoFit:true,padding:10};isc.A.mainSectionDefaults={_constructor:"SectionStackSection",title:"DataSource Properties",expanded:true,canCollapse:false,showHeader:false};isc.A.fieldSectionDefaults={_constructor:"SectionStackSection",title:"DataSource Fields <span style='color:#BBBBBB'>(click to edit or press New)</span>",expanded:true,canCollapse:true};isc.A.deriveFieldsSectionDefaults={_constructor:"SectionStackSection",title:"Derive Fields From SQL",expanded:false,canCollapse:true};isc.A.bodyProperties={overflow:"auto",layoutMargin:10};isc.A.deriveFormDefaults={_constructor:"DynamicForm"};isc.A.previewGridDefaults={_constructor:"ListGrid",showFilterEditor:true};isc.A.canEditChildSchema=false;isc.A.canAddChildSchema=false;isc.B.push(isc.A.editNew=function isc_DataSourceEditor_editNew(_1,_2,_3){if(_1.defaults){this.paletteNode=_1;this.start(_1.defaults,_2,true,_3)}else{this.start(_1,_2,true,_3)}}
+,isc.A.editSaved=function isc_DataSourceEditor_editSaved(_1,_2,_3){this.start(_1,_2,false,_3)}
+,isc.A.start=function isc_DataSourceEditor_start(_1,_2,_3,_4){if(_4){this.mainStack.showSection(0);this.instructions.setContents(_4)}else{this.mainStack.hideSection(0)}
+if(this.mainEditor)this.mainEditor.clearValues();if(this.fieldEditor)this.fieldEditor.setData(null);this.saveCallback=_2;this.logWarn("editing "+(_3?"new ":"")+"DataSource: "+this.echo(_1));if(!_1){return this.show()}
+this.dsClass=_1.Class;if(_3){if(isc.isA.DataSource(_1)){var _5=_1.sfName;_1=_1.getSerializeableFields();if(_5)_1.sfName=_5;this.logWarn("editing new DataSource from live DS, data: "+this.echo(_1))}else{_1.ID=this.getUniqueDataSourceID()}
+this.$31u(_1)}else{isc.DMI.callBuiltin({methodName:"loadSharedXML",callback:this.getID()+".$37p(data)",arguments:["DS",_1.ID]})}}
+,isc.A.getUniqueDataSourceID=function isc_DataSourceEditor_getUniqueDataSourceID(){return"newDataSource"}
+,isc.A.$37p=function isc_DataSourceEditor__loadSchemaReply(_1){isc.captureInitData=true;var _2=isc.eval(_1.js);isc.captureInitData=null;var _3=_2.defaults;this.logWarn("captured DS initData: "+this.echo(_3));if(_3.serverType=="sql")_3.dataFormat="iscServer";if(_3.recordXPath!=null&&_3.dataFormat==null){_3.dataFormat="xml"}
+this.$31u(_3)}
+,isc.A.$31u=function isc_DataSourceEditor__startEditing(_1){if(this.mainEditor)this.mainEditor.setValues(_1);else this.mainEditorValues=_1;var _2=_1.fields;if(!isc.isAn.Array(_2))_2=isc.getValues(_1.fields);if(this.fieldEditor){if(this.canEditChildSchema){this.setupIDs(_2,1,null);var _3=isc.Tree.create({modelType:"parent",childrenProperty:"fields",titleProperty:"name",idField:"id",nameProperty:"id",root:{id:0,name:"root"},data:_2});_3.openAll();this.fieldEditor.setData(_3)}else this.fieldEditor.setData(_2)}
+this.show()}
+,isc.A.setupIDs=function isc_DataSourceEditor_setupIDs(_1,_2,_3){var _4=_2,_5,_6;if(!_4)_4=1;for(var i=0;i<_1.length;i++){var _5=_1.get(i);_5.parentId=_3;_5.id=_4++;if(_5.fields){if(!isc.isAn.Array(_5.fields))_5.fields=isc.getValues(_5.fields);_4=this.setupIDs(_5.fields,_4,_5.id)}}
+return _4}
+,isc.A.save=function isc_DataSourceEditor_save(){var _1=this.dsClass||"DataSource",_2=isc.addProperties({},this.mainEditor?this.mainEditor.getValues():this.mainEditorValues);if(this.canEditChildSchema){var _3=this.fieldEditor.grid.data,_4=_3.getCleanNodeData(_3.getRoot(),true).fields;_2.fields=this.getExtraCleanNodeData(_4)}else{_2.fields=this.fieldEditor.getData()}
+if(_2.serverType=="sql"||_2.serverType=="hibernate"){if(!_2.fields.getProperty("primaryKey").or()){isc.warn("SQL / Hibernate DataSources must have a field marked as the primary key");return}}
+this.doneEditing(_2)}
+,isc.A.getExtraCleanNodeData=function isc_DataSourceEditor_getExtraCleanNodeData(_1,_2){if(_1==null)return null;var _3=[],_4=false;if(!isc.isAn.Array(_1)){_1=[_1];_4=true}
+for(var i=0;i<_1.length;i++){var _6=_1[i],_7={};for(var _8 in _6){if(_8=="id"||_8=="parentId"||_8=="isFolder")continue;_7[_8]=_6[_8];if(_8==this.fieldEditor.grid.data.childrenProperty&&isc.isAn.Array(_7[_8])){_7[_8]=this.getExtraCleanNodeData(_7[_8])}}
+_3.add(_7)}
+if(_4)return _3[0];return _3}
+,isc.A.doneEditing=function isc_DataSourceEditor_doneEditing(_1){var _2=this.dsClass||"DataSource",_3;if(isc.DS.isRegistered(_2)){_3=isc.DS.get(_2)}else{_3=isc.DS.get("DataSource");_1._constructor=_2}
+var _4=_3.xmlSerialize(_1);this.logWarn("saving DS with XML: "+_4);isc.DMI.callBuiltin({methodName:"saveSharedXML",arguments:["DS",_1.ID,_4]});var _5=isc.ClassFactory.getClass(_2).create(_1);this.fireCallback(this.saveCallback,"dataSource",[_5]);this.saveCallback=null}
+,isc.A.clear=function isc_DataSourceEditor_clear(){if(this.mainEditor)this.mainEditor.clearValues();else this.mainEditorValues=null;this.fieldEditor.setData([])}
+,isc.A.initWidget=function isc_DataSourceEditor_initWidget(){this.Super('initWidget',arguments);this.addAutoChildren(["mainStack","instructions","mainEditor","buttonLayout","saveButton"]);if(this.canAddChildSchema){this.canEditChildSchema=true;this.addAutoChild("addChildButton")}
+this.addAutoChild("fieldEditor",{formConstructor:isc.TComponentEditor||isc.ComponentEditor,gridConstructor:this.canEditChildSchema?isc.TreeGrid:isc.ListGrid,showMoreButton:this.showMoreButton,newButtonTitle:"New Field",newButtonDefaults:this.newButtonDefaults,newButtonProperties:this.newButtonProperties,moreButtonDefaults:this.moreButtonDefaults,moreButtonProperties:this.moreButtonProperties});this.moreButton=this.fieldEditor.moreButton;this.newButton=this.fieldEditor.newButton;if(this.canAddChildSchema)this.fieldEditor.gridButtons.addMember(this.addChildButton);var _1=this.mainStack;_1.addSections([isc.addProperties(this.instructionsSectionDefaults,this.instructionsSectionProperties,{items:[this.instructions]})]);_1.addSections([isc.addProperties(this.mainSectionDefaults,this.mainSectionProperties,{items:[this.mainEditor]})]);if(this.showMainEditor==false)_1.hideSection(1);_1.addSections([isc.addProperties(this.fieldSectionDefaults,this.fieldSectionProperties,{items:[this.fieldEditor]})]);var _2=this;this.deriveForm=this.createAutoChild("deriveForm",{fields:[{name:"sql",showTitle:false,formItemType:"AutoFitTextAreaItem",width:"*",height:40,colSpan:"*",keyPress:function(_3,_4,_5){if(_5=='Enter'&&isc.EH.ctrlKeyDown()){if(isc.Browser.isSafari)_3.setValue(_3.getElementValue());_2.execSQL();if(isc.Browser.isSafari)return false}}},{type:"button",title:"Execute",startRow:true,click:this.getID()+".execSQL()"}]});_1.addSections({expanded:true,showHeader:false,items:[this.saveButton]})}
+,isc.A.execSQL=function isc_DataSourceEditor_execSQL(){var _1=this.deriveForm.getValue("sql");if(_1){_1=_1.trim().replace(/(.*);+/,"$1");var _2=isc.DataSource.get("DataSourceStore");_2.performCustomOperation("dsFromSQL",{dbName:this.mainEditor.getValue("dbName"),sql:_1},this.getID()+".deriveDSLoaded(data)")}}
+,isc.A.deriveDSLoaded=function isc_DataSourceEditor_deriveDSLoaded(_1){var _2=_1.ds;this.dsLoaded(_1.ds)}
+,isc.A.dsLoaded=function isc_DataSourceEditor_dsLoaded(_1){var _2=isc.DataSource.create(_1);this.currentDS=_2;this.deriveFields(_2);this.previewGrid.setDataSource(_2)}
+,isc.A.deriveFields=function isc_DataSourceEditor_deriveFields(_1){var _2=_1.getFieldNames();var _3=[];for(var i=0;i<_2.length;i++){var _5=_2[i]
+var _6={};var _7=_1.getField(_5);for(var _8 in _7){if(isc.isA.String(_8)&&_8.startsWith("_"))continue;_6[_8]=_7[_8]}
+_3.add(_6)}
+var _9=isc.Tree.create({modelType:"parent",childrenProperty:"fields",titleProperty:"name",idField:"id",nameProperty:"id",root:{id:0,name:"root"},data:_3});this.fieldEditor.setData(_9)}
+);isc.B._maxIndex=isc.C+16}
+isc._moduleEnd=isc._DataBinding_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('DataBinding module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'DataBinding'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DataBinding.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DataBinding.js.gz
new file mode 100755
index 0000000..d112bea
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DataBinding.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Drawing.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Drawing.js
new file mode 100755
index 0000000..97011d3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Drawing.js
@@ -0,0 +1,498 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_Drawing){isc.module_Drawing=1;isc._moduleStart=isc._Drawing_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'Drawing load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.Browser.hasCANVAS=isc.Browser.geckoVersion>=20051107||isc.Browser.safariVersion>=181||((isc.Browser.isIE&&isc.Browser.version>=9)&&(typeof(document.createElement('canvas').getContext)==='function'));isc.Browser.hasSVG=isc.Browser.geckoVersion>=20051107;isc.Browser.hasVML=isc.Browser.isIE&&isc.Browser.version>=5;isc.Browser.defaultDrawingType=isc.Browser.hasCANVAS?"bitmap":isc.Browser.hasVML?"vml":"none";isc.defineClass("DrawPane","Canvas");isc.A=isc.DrawPane.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.drawingType=isc.Browser.defaultDrawingType;isc.A.canDrag=false;isc.A.cursor="all-scroll";isc.A.isMouseTransparent=true;isc.A.rotation=0;isc.A.zoomLevel=1;isc.A.translate=null;isc.A.gradients={};isc.B.push(isc.A.createQuadTree=function isc_DrawPane_createQuadTree(){this.quadTree=isc.QuadTree.create({depth:0,maxDepth:50,maxChildren:1});this.quadTree.bounds={x:0,y:0,width:this.getInnerContentWidth(),height:this.getInnerContentHeight()};this.quadTree.root=isc.QuadTreeNode.create({depth:0,maxDepth:8,maxChildren:4});this.quadTree.root.bounds=this.quadTree.bounds}
+,isc.A.updateQuadTree=function isc_DrawPane_updateQuadTree(_1){this.quadTree.update(_1.item)}
+,isc.A.initWidget=function isc_DrawPane_initWidget(){this.drawItems=this.drawItems||[];this.canvasItems=this.canvasItems||[];this.createQuadTree();for(var i=0;i<this.drawItems.length;i++){this.addDrawItem(this.drawItems[i])}
+for(var i=0;i<this.canvasItems.length;i++){this.addCanvasItem(this.canvasItems[i])}
+this.redrawOnResize=(this.drawingType=="bitmap");this.$43z=this.getInnerContentWidth();this.$430=this.getInnerContentHeight();this.$431=0;this.$432=0;this.$433=this.$43z;this.$434=this.$430;if(isc.Browser.isIE&&this.drawingType=="vml"){document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!document.namespaces.rvml&&document.namespaces.add("rvml","urn:schemas-microsoft-com:vml");this.startTagVML=function(_2){return'<rvml:'+_2+' class="rvml" '};this.endTagVML=function(_2){return'</rvml:'+_2+'>'}}catch(e){this.startTagVML=function(_2){return'<'+_2+' xmlns="urn:schemas-microsoft.com:vml" class="rvml" '};this.endTagVML=function(_2){return'</rvml:'+_2+'>'}}}}
+,isc.A.normalize=function isc_DrawPane_normalize(_1,_2){if(this.zoomLevel!=1||this.rotation!=0){var _3=-this.rotation*Math.PI/ 180.0;var _4=_1-this.width/ 2;var _5=_2-this.height/ 2;var _6=_4*Math.cos(_3)-_5*Math.sin(_3);var _7=_4*Math.sin(_3)+_5*Math.cos(_3);_6/=this.zoomLevel;_7/=this.zoomLevel;_6+=this.width/ 2;_7+=this.height/ 2;return{x:_6,y:_7}}
+return{x:_1,y:_2}}
+,isc.A.getDrawItem=function isc_DrawPane_getDrawItem(_1,_2){_1-=this.getPageLeft();_2-=this.getPageTop();var _3=this.normalize(_1,_2);_1=_3.x;_2=_3.y;var _4=this.quadTree.retrieve({x:_1,y:_2});var _5=_4?_4.length:0;if(_5){for(var i=0;i<_5;++i){var _7=_4[i].item||_4[i];var _8=!_7.shape.hidden&&_7.shape.isPointInPath(_1,_2);if(_8){return _7.shape}}}
+return this}
+,isc.A.getEventTarget=function isc_DrawPane_getEventTarget(_1){switch(_1.eventType){case'mouseUp':case'mouseDown':case'mouseMove':case'mouseOut':case'mouseOver':case'click':return this.getDrawItem(_1.x,_1.y);default:return this}
+return this}
+,isc.A.prepareForDragging=function isc_DrawPane_prepareForDragging(){if(this.canDrag){var _1=this.getDrawItem(isc.EH.lastEvent.x,isc.EH.lastEvent.y);if(_1&&_1.canDrag){isc.EH.dragTarget=_1;isc.EH.dragOperation="drag"}}
+return true}
+,isc.A.clear=function isc_DrawPane_clear(){this.Super("clear",arguments);this.erase()}
+,isc.A.drawBounds=function isc_DrawPane_drawBounds(_1){isc.DrawRect.create({autoDraw:true,drawPane:this,left:Math.round(_1.bounds.x),top:Math.round(_1.bounds.y-_1.bounds.height),width:Math.round(_1.bounds.width),height:Math.round(_1.bounds.height)},{lineColor:"#FF0000",lineOpacity:0.1,lineWidth:1,linePattern:"solid"});if(_1.nodes&&_1.nodes.length){for(var i=0;i<_1.nodes.length;++i){this.drawBounds(_1.nodes[i])}}}
+,isc.A.erase=function isc_DrawPane_erase(_1){if(_1){for(var i=0;i<this.drawItems.length;i++){this.drawItems[i].destroy(true)}}else if(this.isDrawn()){for(var i=0;i<this.drawItems.length;i++){this.drawItems[i].erase(true)}}
+this.drawItems=[];this.canvasItems=[];this.createQuadTree();if(this.drawingType=="bitmap")this.redrawBitmap()}
+,isc.A.destroyItems=function isc_DrawPane_destroyItems(){this.erase(true)}
+,isc.A.destroy=function isc_DrawPane_destroy(){this.Super("destroy",arguments);for(var i=0;i<this.drawItems.length;i++){this.drawItems[i].destroy()}}
+,isc.A.addDrawItem=function isc_DrawPane_addDrawItem(_1,_2){if(_1.drawPane==this)return;if(_1.$if)_1.erase();_1.drawPane=this;if(!this.drawItems.contains(_1))this.drawItems.add(_1);if(_2==null)_2=true;if(_2&&this.isDrawn()){_1.draw()}}
+,isc.A.getInnerHTML=function isc_DrawPane_getInnerHTML(){var _1=this.drawingType;if(_1=="vml"){return isc.Browser.isTransitional?this.startTagVML('GROUP')+" ID='"+this.getID()+"$435' STYLE='position:absolute;left:5px;top:5px;width:"+(this.getInnerContentWidth())+"px; height:"+(this.getInnerContentHeight())+"px;rotation:"+(this.rotation)+";' coordsize='"+(this.getInnerContentWidth())+", "+(this.getInnerContentHeight())+"' coordorig='0 0'>"+this.endTagVML('GROUP'):this.startTagVML('GROUP')+" ID='"+this.getID()+"$435' STYLE='left:0px;top:0px;width:"+this.getInnerContentWidth()+"px; height:"+this.getInnerContentHeight()+"px;' coordsize='"+this.getInnerContentWidth()+", "+this.getInnerContentHeight()+"' coordorig='0 0'>"+this.endTagVML('GROUP')}else if(_1=="bitmap"){return"<CANVAS ID='"+this.getID()+"$436'"+" WIDTH='"+this.getWidth()+"' HEIGHT='"+this.getHeight()+"'></CANVAS>"}else if(_1=="svg"){return"<IFRAME HEIGHT='100%' WIDTH='100%' SCROLLING='NO' FRAMEBORDER='0' SRC='"+isc.Page.getHelperDir()+"DrawPane.svg?isc_dp_id="+this.getID()+"'></IFRAME>"}else{this.logWarn("DrawPane getInnerHTML: '"+_1+"' is not a supported drawingType");return this.Super("getInnerHTML",arguments)}}
+,isc.A.getPrintHTML=function isc_DrawPane_getPrintHTML(){if(this.drawingType=="bitmap"){var _1=document.getElementById(this.getID()+"$436");return"<img src='"+_1.toDataURL()+"' width='"+this.getWidth()+"' height='"+this.getHeight()+"' />"}else if(this.drawingType=="vml"){var _2=document.getElementById(this.getID()+"$435");return _2.parentElement.innerHTML}else if(this.drawingType=="svg"){var s=new XMLSerializer();var _4=s.serializeToString(this.$44n);var _5=s.serializeToString(this.$44o);return"<svg>"+_4+_5+"</svg>"}else{return""}}
+,isc.A.drawChildren=function isc_DrawPane_drawChildren(){this.Super("drawChildren",arguments);for(var i=0;i<this.drawItems.length;i++){var _2=this.drawItems[i];_2.draw()}}
+,isc.A.getBitmapContext=function isc_DrawPane_getBitmapContext(){if(this.$437)return this.$437;this.$438=isc.Element.get(this.getID()+"$436");if(!this.$438){this.logWarn("DrawPane failed to get CANVAS element handle");return}
+this.$437=this.$438.getContext("2d");if(!this.$437){this.logWarn("DrawPane failed to get CANVAS 2d bitmap context");return}
+return this.$437}
+,isc.A.redraw=function isc_DrawPane_redraw(_1){if(this.drawingType=="bitmap"){this.Super("redraw",arguments);this.$437=null;this.redrawBitmapNow()}}
+,isc.A.redrawBitmap=function isc_DrawPane_redrawBitmap(){if(this.$439)return;isc.Timer.setTimeout({target:this,methodName:"redrawBitmapNow"},0);this.$439=true}
+,isc.A.redrawBitmapNow=function isc_DrawPane_redrawBitmapNow(){if(!this.isDrawn())return;this.$439=false;var _1=this.getBitmapContext();if(!_1)return;var _2=document.getElementById(this.getID()+"$436");_2.width=_2.width;_1.clearRect(0,0,this.getWidth(),this.getHeight());for(var i=0;i<this.drawItems.length;i++){if(!this.drawItems[i].hidden){this.drawItems[i].drawBitmap(_1)}}}
+,isc.A.drawing2screen=function isc_DrawPane_drawing2screen(_1){return[Math.round((_1[0]-this.$431)*this.zoomLevel),Math.round((_1[1]-this.$432)*this.zoomLevel),Math.round(_1[2]*this.zoomLevel),Math.round(_1[3]*this.zoomLevel)]}
+,isc.A.screen2drawing=function(screenRect){return[screenRect[0]/this.zoomLevel+this.$431,screenRect[1]/this.zoomLevel+this.$432,screenRect[2]/this.zoomLevel,screenRect[3]/this.zoomLevel]}
+,isc.A.$44a=function isc_DrawPane__setViewBox(_1,_2,_3,_4){var _5=this.drawingType;this.$431=_1;this.$432=_2;this.$433=_3;this.$434=_4;this.$44b();if(_5=="vml"){if(!this.$44c){this.$44c=isc.Element.get(this.getID()+"$435")}
+if(this.$44c){this.$44c.coordorigin.x=_1;this.$44c.coordorigin.y=_2;this.$44c.coordsize.x=_3;this.$44c.coordsize.y=_4}}else if(_5=="svg"){if(!this.$44n){var _6=this;setTimeout(function(){_6.$44a(_1,_2,_3,_4)},100)}else{this.$44n.setAttributeNS(null,"transform","translate("+-_1+","+-_2+")")}}}
+,isc.A.addCanvasItem=function isc_DrawPane_addCanvasItem(_1){this.canvasItems.add(_1);_1.drawPane=this;_1.$44e=_1.left;_1.$44f=_1.top;_1.$44g=_1.width;_1.$44h=_1.height;this.addChild(_1);this.$44i(_1);return _1}
+,isc.A.$85q=function isc_DrawPane__createSimpleGradientSVG(_1,_2){var _3,i,_5,_6,_7,_8,_9;if(!isc.Browser.isWebKit){_3="<linearGradient id='"+_1
+"' x1='"+_2.x1+"' x2='"+_2.x2+"' y1='"+_2.y1+"' y2='"+_2.y2+"'>";_5=_2.startColor;_6=0.0;_7="1";_3+="<stop stop-color='"+_5+"' offset='"+_6+"' stop-opacity='"+_7+"'/>";_5=_2.endColor;_6=1.0;_7="1";_3+="<stop stop-color='"+_5+"' offset='"+_6+"' stop-opacity='"+_7+"'/>";_3+="</linearGradient>";_8=this.$44m.createRange();_8.setStart(this.$44o,0);this.$44o.appendChild(_8.createContextualFragment(_3))}else{_3=this.$44m.createElementNS("http://www.w3.org/2000/svg","linearGradient");_3.setAttributeNS(null,"id",_1);_3.setAttributeNS(null,"x1",_2.x1);_3.setAttributeNS(null,"x2",_2.x2);_3.setAttributeNS(null,"y1",_2.y1);_3.setAttributeNS(null,"y2",_2.y2);_9=this.$44m.createElementNS("http://www.w3.org/2000/svg","stop");_9.setAttributeNS(null,"stop-color",_2.startColor);_9.setAttributeNS(null,"offset","0.0");_9.setAttributeNS(null,"stop-opacity","1");_3.appendChild(_9);_9=this.$44m.createElementNS("http://www.w3.org/2000/svg","stop");_9.setAttributeNS(null,"stop-color",_2.endColor);_9.setAttributeNS(null,"offset","1.0");_9.setAttributeNS(null,"stop-opacity","1");_3.appendChild(_9);this.$44o.appendChild(_3)}}
+,isc.A.$83q=function isc_DrawPane__createLinearGradientSVG(_1,_2){var _3,i,_5,_6,_7,_8,_9;if(!isc.Browser.isWebKit){_3="<linearGradient id='"+_1+"' x1='"+_2.x1+"' x2='"+_2.x2+"' y1='"+_2.y1+"' y2='"+_2.y2+"'>";for(var i=0;i<_2.colorStops.length;++i){_5=_2.colorStops[i].color;_6=_2.colorStops[i].offset;_7=_2.colorStops[i].opacity||"1";;_3+="<stop stop-color='"+_5+"' offset='"+_6+"' stop-opacity='"+_7+"'/>"}
+_3+="</linearGradient>";_8=this.$44m.createRange();_8.setStart(this.$44o,0);this.$44o.appendChild(_8.createContextualFragment(_3))}else{_3=this.$44m.createElementNS("http://www.w3.org/2000/svg","linearGradient");_3.setAttributeNS(null,"id",_1);_3.setAttributeNS(null,"x1",_2.x1);_3.setAttributeNS(null,"x2",_2.x2);_3.setAttributeNS(null,"y1",_2.y1);_3.setAttributeNS(null,"y2",_2.y2);for(var i=0;i<_2.colorStops.length;++i){_9=this.$44m.createElementNS("http://www.w3.org/2000/svg","stop");_9.setAttributeNS(null,"stop-color",_2.colorStops[i].color);_9.setAttributeNS(null,"offset",_2.colorStops[i].offset);_9.setAttributeNS(null,"stop-opacity",_2.colorStops[i].opacity||"1");_3.appendChild(_9)}
+this.$44o.appendChild(_3)}}
+,isc.A.$83r=function isc_DrawPane__createRadialGradientSVG(_1,_2){var _3,i,_5,_6,_7,_8,_9;if(!isc.Browser.isWebKit){_3="<radialGradient id='"+_1+"' cx='"+_2.cx+"' cy='"+_2.cy+"' r='"+_2.r+"' fx='"+_2.fx+"' fy='"+_2.fy+"'>";for(var i=0;i<_2.colorStops.length;++i){_5=_2.colorStops[i].color;_6=_2.colorStops[i].offset;_7=_2.colorStops[i].opacity||"1";;_3+="<stop stop-color='"+_5+"' offset='"+_6+"' stop-opacity='"+_7+"'/>"}
+_3+="</radialGradient>";_8=this.$44m.createRange();_8.setStart(this.$44o,0);this.$44o.appendChild(_8.createContextualFragment(_3))}else{_3=this.$44m.createElementNS("http://www.w3.org/2000/svg","radialGradient");_3.setAttributeNS(null,"id",_1);_3.setAttributeNS(null,"cx",_2.cx);_3.setAttributeNS(null,"cy",_2.cy);_3.setAttributeNS(null,"r",_2.r);_3.setAttributeNS(null,"fx",_2.fx);_3.setAttributeNS(null,"fy",_2.fy);for(i=0;i<_2.colorStops.length;++i){_9=this.$44m.createElementNS("http://www.w3.org/2000/svg","stop");_9.setAttributeNS(null,"stop-color",_2.colorStops[i].color);_9.setAttributeNS(null,"offset",_2.colorStops[i].offset);_9.setAttributeNS(null,"stop-opacity",_2.colorStops[i].opacity||"1");_3.appendChild(_9)}
+this.$44o.appendChild(_3)}}
+,isc.A.$44i=function isc_DrawPane__updateCanvasItemToViewBox(_1){_1.synchingToPane=true;_1.setRect(this.drawing2screen([_1.$44e,_1.$44f,_1.$44g,_1.$44h]));if(_1.drawBorderSize){_1.getStyleHandle().borderWidth=Math.max(1,_1.drawBorderSize*this.zoomLevel)+"px"}
+delete _1.synchingToPane}
+,isc.A.$44b=function isc_DrawPane__updateItemsToViewBox(){for(var i=0,_2;i<this.canvasItems.length;i++){this.$44i(this.canvasItems[i])}
+if(this.drawingType=="vml"){for(var i=0,_3,_4;i<this.drawItems.length;i++){_3=this.drawItems[i];if(isc.isA.DrawLabel(_3)){_3.$44j.fontSize=_3.$44k*this.zoomLevel;if(!_3.synchTextMove){_4=this.drawing2screen([_3.left,_3.top,0,0]);_3.$44j.left=_4[0];_3.$44j.top=_4[1]}}else{_3.$44l(_3.lineWidth*this.zoomLevel)}}}}
+,isc.A.pan=function isc_DrawPane_pan(_1,_2){this.$44a(this.$431+_1/ this.zoomLevel,this.$432+_2/ this.zoomLevel,this.$433,this.$434);if(this.drawingType==='bitmap'){this.translate=this.translate||[0,0];this.translate[0]-=_1;this.translate[1]-=_2;this.redrawBitmap()}}
+,isc.A.zoom=function isc_DrawPane_zoom(_1){var _2=_1/ this.zoomLevel,_3=this.$433/ _2,_4=this.$434/ _2;this.zoomLevel=_1;this.$44a(this.$431+this.$433/ 2-_3/ 2,this.$432+this.$434/ 2-_4/ 2,_3,_4);if(this.drawingType==='bitmap'){var _5=document.getElementById(this.getID()+"$436");if(_5){_5.style['-webkit-transform']='scale('+this.zoomLevel+','+this.zoomLevel+')'}}}
+,isc.A.rotate=function isc_DrawPane_rotate(_1){var _2=this.drawingType;this.rotation=_1;if(_2==="vml"){if(!this.$44c){this.$44c=isc.Element.get(this.getID()+"$435")}
+if(this.$44c){this.$44c.style.rotation=_1}}else if(_2==="svg"){if(!this.$44n){var _3=this;setTimeout(function(){_3.rotate(_1)},100)}else{this.$44n.setAttributeNS(null,"transform","rotate("+_1+")")}}else if(this.drawingType==='bitmap'){var _4=document.getElementById(this.getID()+"$436");if(_4){_4.style['-webkit-transform']='rotate('+this.rotation+'deg)'}}}
+,isc.A.createSimpleGradient=function isc_DrawPane_createSimpleGradient(_1,_2){this.gradients[_1]=_2;if(this.drawingType==="svg"){this.$85q(_1,_2)}
+return _1}
+,isc.A.createLinearGradient=function isc_DrawPane_createLinearGradient(_1,_2){this.gradients[_1]=_2;var _3=this.drawingType;if(_3==="svg"){this.$83q(_1,_2)}
+return _1}
+,isc.A.createRadialGradient=function isc_DrawPane_createRadialGradient(_1,_2){this.gradients[_1]=_2;var _3=this.drawingType;if(_3=="svg"){this.$83r(_1,_2)}
+return _1}
+,isc.A.shouldDeferDrawing=function isc_DrawPane_shouldDeferDrawing(_1){if(this.drawingType=="svg"&&!this.$44m){if(!this.$63q){this.$63q=[_1]}else{this.$63q.add(_1)}
+return true}else if(this.drawingType=="vml"&&!this.getHandle()){if(!this.$63q){this.$63q=[_1]}else{this.$63q.add(_1)}
+if(!this.deferring){var _2=this;_2.deferring=true;setTimeout(function(){if(_2.$63q){_2.$63q.map("draw");delete _2.$63q}
+delete _2.deferring},10)}
+return true}
+return false}
+,isc.A.cancelDeferredDraw=function isc_DrawPane_cancelDeferredDraw(_1){if(this.$63q&&this.$63q.contains(_1)){this.$63q.remove(_1);return true}
+return false}
+,isc.A.svgLoaded=function isc_DrawPane_svgLoaded(){this.$44m=this.getHandle().firstChild.contentDocument;this.$44d=this.$44m.getElementById("isc_svg_body");this.$44n=this.$44m.getElementById("isc_svg_box");this.$44o=this.$44m.getElementById("isc_svg_defs");if(this.$63q){this.$63q.map("draw");delete this.$63q}}
+);isc.B._maxIndex=isc.C+38;isc.A=isc.DrawPane;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.defaultDrawingType=isc.Browser.defaultDrawingType;isc.A.$44p=[];isc.B.push(isc.A.getDefaultDrawPane=function isc_c_DrawPane_getDefaultDrawPane(_1){if(!_1)_1=this.defaultDrawingType;if(this.$44p[_1])return this.$44p[_1];var _2=this.$44p[_1]=this.create({drawingType:_1,width:isc.Page.getScrollWidth(),height:isc.Page.getScrollHeight(),autoDraw:true});_2.sendToBack();return _2}
+,isc.A.addrgb=function isc_c_DrawPane_addrgb(_1,_2){var _3=Array(parseInt('0x'+_1.substring(1,3),16),parseInt('0x'+_1.substring(3,5),16),parseInt('0x'+_1.substring(5,7),16));var _4=Array(parseInt('0x'+_2.substring(1,3),16),parseInt('0x'+_2.substring(3,5),16),parseInt('0x'+_2.substring(5,7),16));var _5=_3[0]+_4[0];_5=Math.round(_5>0xff?0xff:_5).toString(16);_5=_5.length===1?"0"+_5:_5;var _6=_3[1]+_4[1];_6=Math.round(_6>0xff?0xff:_6).toString(16);_6=_6.length===1?"0"+_6:_6;var _7=_3[2]+_4[2];_7=Math.round(_7>0xff?0xff:_7).toString(16);_7=_7.length===1?"0"+_7:_7;return'#'+_5+_6+_7}
+,isc.A.subtractrgb=function isc_c_DrawPane_subtractrgb(_1,_2){var _3=Array(parseInt('0x'+_1.substring(1,3),16),parseInt('0x'+_1.substring(3,5),16),parseInt('0x'+_1.substring(5,7),16));var _4=Array(parseInt('0x'+_2.substring(1,3),16),parseInt('0x'+_2.substring(3,5),16),parseInt('0x'+_2.substring(5,7),16));var _5=_3[0]-_4[0];_5=Math.round(_5<0x0?0x0:_5).toString(16);_5=_5.length===1?"0"+_5:_5;var _6=_3[1]-_4[1];_6=Math.round(_6<0x0?0x0:_6).toString(16);_6=_6.length===1?"0"+_6:_6;var _7=_3[2]-_4[2];_7=Math.round(_7<0x0?0x0:_7).toString(16);_7=_7.length===1?"0"+_7:_7;return'#'+_5+_6+_7}
+,isc.A.mixrgb=function isc_c_DrawPane_mixrgb(_1,_2){return _2.charAt(0)==='+'?isc.DrawPane.addrgb(_1,_2.substring(1)):_2.charAt(0)==='-'?isc.DrawPane.subtractrgb(_1,_2.substring(1)):_2}
+,isc.A.hex2rgb=function isc_c_DrawPane_hex2rgb(_1,_2){var _3=_1.split('#')[1];var _4=_3.length/ 3;var _5=_3.substring(0,_4);var _6=_3.substring(_4,_4*2);var _7=_3.substring(_4*2,_4*3);var _8=parseInt(_5.toUpperCase(),16);var _9=parseInt(_6.toUpperCase(),16);var _10=parseInt(_7.toUpperCase(),16);var _11=(typeof(_2)!=='undefined')?'rgba('+_8+','+_9+','+_10+','+_2+')':'rgb('+_8+','+_9+','+_10+')';return _11}
+,isc.A.rgb2hex=function isc_c_DrawPane_rgb2hex(_1){var _2="",v,i;var _5=/([0-9]+)[, ]+([0-9]+)[, ]+([0-9]+)/;var h=_5.exec(_1);for(i=1;i<4;i++){v=parseInt(h[i],10).toString(16);if(v.length==1){_2+="0"+v}else{_2+=v}}
+return("#"+_2)}
+);isc.B._maxIndex=isc.C+6;isc.defineClass("DrawItem").addProperties({lineWidth:3,lineColor:"#808080",lineOpacity:1.0,linePattern:"solid",lineCap:"round",fillGradient:null,fillOpacity:1.0,shadow:null,rotation:0,scale:null,autoOffset:true,canDrag:false,getBoundingBox:function(){return[]},isInBounds:function(_1,_2){var b=this.getBoundingBox();var _4=(_1>=b[0])&&(_1<=b[2])&&(_2>=b[1])&&(_2<=b[3]);return _4},isPointInPath:function(_1,_2){if(!this.isInBounds(_1,_2)){return false}
+if(this.drawPane.drawingType=='bitmap'){var _3=this.drawPane.getBitmapContext();_3.save();var _4=this.lineColor,_5=this.lineOpacity;this.lineColor="#000000";this.lineOpacity=0.0;this.drawStroke(_3);_3.restore();this.lineColor=_4;this.lineOpacity=_5;var _6=_3.isPointInPath(parseFloat(_1),parseFloat(_2));return _6}
+return true},getHoverTarget:function(_1,_2){return this.drawPane},$kr:function(_1){return false},$k2:function(){},focus:function(_1){},visibleAtPoint:function(_1,_2){return true},getDragAppearance:function(_1){return"target"},bringToFront:function(){},moveToEvent:function(_1,_2){this.moveTo(_1,_2)},dragStartDistance:1,getRect:function(){var _1=this.getBoundingBox();return[_1[0],_1[1],_1[2]-_1[0],_1[3]-_1[1]]},getPageLeft:function(){return this.getBoundingBox()[0]},getPageTop:function(){return this.getBoundingBox()[1]},dragStart:function(_1,_2){var _3=this.getBoundingBox();var _4=_3[0];var _5=_3[1];var _6=this.drawPane.normalize(_1.x,_1.y);this.dragOffsetX=_6.x-this.drawPane.getPageLeft()-_4;this.dragOffsetY=_6.y-this.drawPane.getPageTop()-_5;return true},dragMove:function(_1,_2){var _3=this.drawPane.normalize(_1.x,_1.y);var x=_3.x-this.drawPane.getPageLeft()-this.dragOffsetX;var y=_3.y-this.drawPane.getPageTop()-this.dragOffsetY;this.moveTo(x,y);return true},dragStop:function(_1,_2){var _3=this.drawPane.normalize(_1.x,_1.y);var x=_3.x-this.drawPane.getPageLeft()-this.dragOffsetX;var y=_3.y-this.drawPane.getPageTop()-this.dragOffsetY;this.moveTo(x,y);return true},click:function(){return true},mouseDown:function(){return true},mouseUp:function(){return true},mouseMove:function(){return true},mouseOut:function(){return true},mouseOver:function(){return true},init:function(){this.Super("init");if(this.ID==null||window[this.ID]!=this){isc.ClassFactory.addGlobalID(this)}
+this.drawItemID=isc.DrawItem.$44q++;if(this.drawGroup){this.eventParent=this.drawGroup;this.drawGroup.drawItems.add(this)}else if(this.drawPane){this.eventParent=this.drawPane;this.drawPane.drawItems.add(this);var _1=this.getBoundingBox();if(_1&&_1.length===4){this.item={x:_1[0],y:_1[1],width:_1[2]-_1[0],height:_1[3]-_1[1],shape:this};if(!(isNaN(this.item.width)||isNaN(this.item.height))){this.drawPane.quadTree.insert(this.item)}}}
+if(this.autoDraw)this.draw()},draw:function(){if(this.$if){this.logWarn("DrawItem already drawn - exiting draw()");return}
+if(this.drawGroup){if(!this.drawGroup.$if){this.logWarn("Attempted draw into an undrawn group - calling draw() on the group now");this.drawGroup.draw();if(!this.drawGroup.$if)return}
+this.drawPane=this.drawGroup.drawPane}else{if(!this.drawPane)this.drawPane=isc.DrawPane.getDefaultDrawPane(this.drawingType)}
+var _1=this.drawPane,_2=_1.getDrawnState();if(!_1.isDrawn()&&_1.getDrawnState()!=isc.Canvas.HANDLE_DRAWN)return;if(_1.shouldDeferDrawing(this))return;var _3=this.drawingType=_1.drawingType;if(_3=="vml"){this.drawingVML=true}else if(_3=="svg"){this.drawingSVG=true}else if(_3=="bitmap"){this.drawingBitmap=true}
+if(this.drawingVML){if(isc.isA.DrawLabel(this)&&!this.synchTextMove){this.$44t=_1.getHandle()}else if(this.drawGroup){this.$44t=this.drawGroup.$44u}else{this.$44t=isc.Element.get(_1.getID()+"$435")}
+var _4="isc_DrawItem_"+this.drawItemID;isc.Element.insertAdjacentHTML(this.$44t,this.drawToBack?"afterBegin":"beforeEnd",this.$44v(_4));this.$44u=isc.Element.get(_4);if(!isc.isA.DrawGroup(this)&&!isc.isA.DrawImage(this)&&!isc.isA.DrawLabel(this)){this.$44w=this.$44u.firstChild;this.$44x=this.$44w.nextSibling}
+if(isc.isA.DrawLabel(this)){if(this.synchTextMove){this.$44j=this.$44u.firstChild.style}else{this.$44j=this.$44u.style}}}else if(this.drawingSVG){this.$44m=_1.getHandle().firstChild.contentDocument;this.$44y=this.drawGroup?this.drawGroup.$44z:this.$44m.getElementById("isc_svg_box");if(this.$44y==null){this.logWarn("DrawItem.draw() - Attempt to render into drawPane using svg unable to"+" access svgContainer - svg frame may not have loaded.");return}
+this.$44o=this.$44m.getElementById("isc_svg_defs");var _4="isc_DrawItem_"+this.drawItemID;var _5;if(!isc.Browser.isWebKit){var _6=this.$44m.createRange();_6.setStart(this.$44y,0);_5=_6.createContextualFragment(this.$440(_4))}else{_5=this.$440(_4)}
+if(this.drawToBack&&this.$44y.firstChild){this.$44y.insertBefore(_5,this.$44y.firstChild);this.$44z=this.$44y.firstChild}else{this.$44y.appendChild(_5);this.$44z=this.$44y.lastChild}}else if(this.drawingBitmap){_1.redrawBitmap()}else{this.logWarn("DrawItem: '"+_3+"' is not a supported drawingType");return}
+this.$if=true;if(this.knobs){for(var i=0;i<this.knobs.length;i++)this.$634(this.knobs[i])}},isDrawn:function(){return!!this.$if},moved:function(){this.updateControlKnobs()},resized:function(){this.updateControlKnobs()},rotated:function(){this.updateControlKnobs()},scaled:function(){this.updateControlKnobs()},$634:function(_1){var _2=isc.DrawItem.$632(_1)
+if(!this[_2]){this.logWarn("DrawItem specfied with knobType:"+_1+" but no "+_2+" function exists to show the knobs. Ignoring")}else{this[_2]()}},$635:function(_1){var _2=isc.DrawItem.$632(_1,true)
+if(!this[_2]){this.logWarn("DrawItem specfied with knobType:"+_1+" but no "+_2+" function exists to hide the knobs.")}else{this[_2]()}},showKnobs:function(_1){if(isc.isAn.Array(_1)){for(var i=0;i<_1.length;i++){this.showKnobs(_1[i])}
+return}
+if(!this.knobs)this.knobs=[];if(this.knobs.contains(_1))return;this.knobs.add(_1);if(this.$if){this.$634(_1)}},hideKnobs:function(_1){if(!this.knobs)return;if(isc.isAn.Array(_1)){for(var i=0;i<_1.length;i++){this.hideKnobs(_1[i])}
+return}
+if(this.knobs.contains(_1))this.knobs.remove(_1);if(this.$if){this.$635(_1)}},moveKnobPoint:"TL",$636:function(_1){var x,y;x=_1.contains("L")?this.left:(_1.contains("R")?(this.left+this.width):(this.left+Math.round(this.width/ 2)));y=_1.contains("T")?this.top:(_1.contains("B")?(this.top+this.height):(this.top+Math.round(this.height/ 2)));return[x,y]},showMoveKnobs:function(){var _1=this.$636(this.moveKnobPoint),x=_1[0],y=_1[1];if(this.moveKnobOffset){x+=this.moveKnobOffset[0];y+=this.moveKnobOffset[1]}
+this.$637=this.createAutoChild("moveKnob",{_constructor:"DrawKnob",x:x,y:y,drawPane:this.drawPane,autoDraw:true});this.observe(this.$637,"updatePoints","observer.moveBy(dX,dY)")},hideMoveKnobs:function(){if(this.$637){this.$637.destroy();delete this.$637}},resizeKnobPoints:["TL","TR","BL","BR"],getResizeKnobProperties:function(_1){},showResizeKnobs:function(){var _1=this.resizeKnobPoints;for(var i=0;i<_1.length;i++){var _3=_1[i],_4=this.$636(_3),x=_4[0],y=_4[1];var _7=isc.addProperties({},this.getResizeKnobProperties(_3),{_constructor:"DrawKnob",targetShape:this,point:_3,x:x,y:y,drawPane:this.drawPane,autoDraw:true});var _8=this.createAutoChild("resizeKnob",_7);_8.addProperties({updatePoints:function(_9,_10,_11,_12){return this.targetShape.handleResizeKnobMove(this.point,_9,_10,_11,_12)}});if(!this.$638)this.$638=[];this.$638.add(_8)}},handleResizeKnobMove:function(_1,_2,_3,_4,_5){var _6=this.left,_7=this.top,_8=this.width,_9=this.height,_10;if(_1.contains("L")){_6=_2;_8-=_4;_10=true}else if(_1.contains("R")){_8+=_4}
+if(_1.contains("T")){_7=_3;_9-=_5;_10=true}else if(_1.contains("B")){_9+=_5}
+if(_8<1||_9<1)return false;this.resizeTo(_8,_9);if(_10)this.moveTo(_6,_7)},hideResizeKnobs:function(){if(this.$638){this.$638.map("destroy");delete this.$638}},updateControlKnobs:function(){if(this.$637){var _1=this.$636(this.moveKnobPoint);if(this.moveKnobOffset){_1[0]+=this.moveKnobOffset[0];_1[1]+=this.moveKnobOffset[1]}
+var _2=this.drawPane.drawing2screen(_1);this.$637.setCenterPoint(_2[0],_2[1])}
+if(this.$638){for(var i=0;i<this.$638.length;i++){var _4=this.$638[i],_1=this.$636(_4.point);var _2=this.drawPane.drawing2screen(_1);_4.setCenterPoint(_2[0],_2[1])}}},setDrawPane:function(_1){if(_1==this.drawPane)return;if(_1==null){this.erase();this.drawPane=null;return}
+_1.addDrawItem(this)},$63r:function(){return false},$63s:function(){return false},erase:function(_1){if(!this.$if){if(this.drawPane&&this.drawPane.cancelDeferredDraw(this))return;this.logWarn("DrawItem not yet drawn - exiting erase()");return}
+if(!_1){if(this.drawGroup)this.drawGroup.drawItems.remove(this);else{this.drawPane.drawItems.remove(this);this.item&&this.drawPane.quadTree.remove(this.item)}}
+if(this.drawingVML){if(isc.Page.isLoaded())this.$44u.outerHTML="";else this.$44t.removeChild(this.$44u);this.$44t=null;this.$44u=null;this.$44w=null;this.$44x=null}else if(this.drawingSVG){this.$44y.removeChild(this.$44z);this.$44m=null;this.$44y=null;this.$44z=null}else if(this.drawingBitmap&&!_1){this.drawPane.redrawBitmap()}
+if(this.knobs){for(var i=0;i<this.knobs.length;i++){this.$635(this.knobs[i])}}
+this.$if=false},destroy:function(_1){this.Super("destroy",arguments);if(this.destroyed)return;this.destroying=true;this.erase(_1);isc.ClassFactory.dereferenceGlobalID(this);this.destroyed=true},$44v:function(_1){var _2=" ON='false",_3=" ON='false",_4,_5,_6,_7,_8="",_9;if(this.shadow){_3=" ON='true' COLOR='"+this.shadow.color+"' OFFSET='"+this.shadow.offset[0]+"pt,"+this.shadow.offset[1]+"pt"}
+if(this.fillGradient){var _10=typeof(this.fillGradient)==='string'?this.drawPane.gradients[this.fillGradient]:this.fillGradient;if(typeof(_10.direction)==='number'||_10.x1||typeof(_10.x1)==='number'){_4=this.$830(_10,this.getBoundingBox());_5=_10.direction||180*Math.atan2((_4[3]-_4[1]),(_4[2]-_4[0]))/Math.PI;_5=(270-_5)%360;_8="' COLORS='";if(_10.startColor&&_10.endColor){_8+='0% '+_10.startColor+', 100% '+_10.endColor}else if(_10.colorStops&&_10.colorStops.length){for(var i=0;i<_10.colorStops.length;++i){var _12=_10.colorStops[i];if(typeof(_12.offset)==='string'&&_12.offset.endsWith('%')){_9=_12.offset}else{_9=_12.offset}
+_8+=_9+' '+_12.color;if(i<_10.colorStops.length-1){_8+=", "}}}
+_2=" TYPE='gradient' ANGLE='"+_5+_8}else{_8="' COLORS='";for(var i=0;i<_10.colorStops.length;++i){var _12=_10.colorStops[i];if(typeof(_12.offset)==='string'&&_12.offset.endsWith('%')){_9=_12.offset}else{_9=parseFloat(_12.offset)*100+'%'}
+_8+=_9+' '+_12.color;if(i<_10.colorStops.length-1){_8+=", "}}
+_2=" TYPE='gradienttitle' OPACITY='1.0' FOCUS='100%' FOCUSSIZE='0,0' FOCUSPOSITION='0.5,0.5' METHOD='linear"+_8}}else if(this.fillColor&&!isc.isAn.emptyString(this.fillColor)){_2=" COLOR='"+this.fillColor}
+var _13=isc.SB.concat(this.drawPane.startTagVML(this.vmlElementName)," onmousedown='return ",this.drawPane.getID(),".mouseDown();' "," ID='",_1,"' ",this.getAttributesVML(),">",this.drawPane.startTagVML('STROKE'),((this.lineColor&&this.lineColor!="")?" COLOR='"+this.lineColor:" ON='false"),"' WEIGHT='",this.lineWidth*this.drawPane.zoomLevel,"px","' OPACITY='",this.lineOpacity,"' DASHSTYLE='",this.linePattern,"' JOINSTYLE='miter' MITERLIMIT='8.0","' ENDCAP='"+((this.lineCap=="butt")?"flat":this.lineCap),(this.startArrow?"' STARTARROW='"+this.startArrow+"' STARTARROWWIDTH='wide":""),(this.endArrow?"' ENDARROW='"+this.endArrow+"' ENDARROWWIDTH='wide":""),"'/>",this.drawPane.startTagVML('FILL'),_2,"' OPACITY='",this.fillOpacity,"'/>",this.drawPane.startTagVML('SHADOW'),_3,"'/>",this.drawPane.endTagVML(this.vmlElementName));return _13},getAttributesVML:function(){return""},$440:function(_1){var _2,_3="none",_4=this.getCenter();if(this.fillGradient){var _5=this.fillGradient;if(typeof(_5)==='object'){if(typeof(_5.direction)==='number'){this.$830(_5,this.getBoundingBox());_5=this.drawPane.createSimpleGradient(_1+"$85r",_5)}else if(typeof(_5.x1)==='number'){_5=this.drawPane.createLinearGradient(_1+"$85r",_5)}else{_5=this.drawPane.createRadialGradient(_1+"$85r",_5)}}
+_3="url(#"+_5+")"}else if(this.fillColor&&this.fillColor.length){_3=this.fillColor}
+if(!isc.Browser.isWebKit){_2="<"+this.svgElementName+" id='"+_1+"' "+this.getAttributesSVG()+" stroke-width='"+this.lineWidth+"px"+"' stroke='"+((this.lineColor&&this.lineColor!="")?this.lineColor:"none")+"' stroke-opacity='"+this.lineOpacity+"' stroke-dasharray='"+this.$441()+"' stroke-linecap='"+this.lineCap+(this.startArrow&&!this.$63r()?"' marker-start='url(#"+this.$442()+")":"")+(this.endArrow&&!this.$63s()?"' marker-end='url(#"+this.$443()+")":"")+((this.rotation&&_4&&_4.length===2)?"' transform='translate("+_4[0]+","+_4[1]+") rotate("+this.rotation+") translate("+-_4[0]+","+-_4[1]+")":"")+"' fill='"+_3+"' fill-opacity='"+this.fillOpacity+"'>"+(this.contents||"")+"</"+this.svgElementName+">"}else{_2=this.$44m.createElementNS("http://www.w3.org/2000/svg",this.svgElementName);_2.setAttributeNS(null,"id",_1);_2.setAttributeNS(null,"stroke-width",this.lineWidth+"px");_2.setAttributeNS(null,"stroke-opacity",this.lineOpacity);_2.setAttributeNS(null,"stroke-dasharray",this.$441());_2.setAttributeNS(null,"stroke-linecap",this.lineCap);_2.setAttributeNS(null,"stroke",this.lineColor||"none");_2.setAttributeNS(null,"fill",_3);_2.setAttributeNS(null,"fill-opacity",this.fillOpacity);if(this.rotation){_2.setAttributeNS(null,"transform","translate("+_4[0]+","+_4[1]+") rotate("+this.rotation+") translate("+-_4[0]+","+-_4[1]+")")}
+if(this.startArrow&&!this.$63r()){_2.setAttributeNS(null,"markerStart","url(#"+this.$442()+")")}
+if(this.endArrow&&!this.$63s()){_2.setAttributeNS(null,"markerEnd","url(#"+this.$443()+")")}
+var _6,_7;if(this.getAttributesSVG().match(/=/g).length===1){_7=this.getAttributesSVG().split('=');_2.setAttributeNS(null,_7[0],_7[1].replace(/'/g,""))}else{_6=this.getAttributesSVG().split(/\s/);for(var i=0;i<_6.length;++i){_7=_6[i].split('=');_2.setAttributeNS(null,_7[0],_7[1].replace(/'/g,""))}}}
+return _2},getAttributesSVG:function(){return""},$830:function(_1,_2){var _3=[],_4=Math.abs(_2[2]-_2[0]),_5=Math.abs(_2[3]-_2[1]);if(typeof(_1.direction)==='number'){var _6=Math.round(Math.sqrt(_4*_4+_5*_5));var _7=_1.direction*Math.PI/ 180.0;_1.x1=_2[0];_1.x2=_2[0]+_6*Math.cos(_7);_1.y1=_2[1];_1.y2=_2[1]+_6*Math.sin(_7)}
+if(typeof(_1.x1)==='string'&&_1.x1.endsWith('%')){_3.push(_2[0]+parseFloat(_1.x1)*_4/ 100.0)}else if(isc.isA.Number(_1.x1)){_3.push(_1.x1)}
+if(typeof(_1.y1)==='string'&&_1.y1.endsWith('%')){_3.push(_2[1]+parseFloat(_1.y1)*_5/ 100.0)}else if(isc.isA.Number(_1.y1)){_3.push(_1.y1)}
+if(typeof(_1.x2)==='string'&&_1.x2.endsWith('%')){_3.push(_2[0]+parseFloat(_1.x2)*_4/ 100.0)}else if(isc.isA.Number(_1.x2)){_3.push(_1.x2)}
+if(typeof(_1.y2)==='string'&&_1.y2.endsWith('%')){_3.push(_2[1]+parseFloat(_1.y2)*_5/ 100.0)}else if(isc.isA.Number(_1.y2)){_3.push(_1.y2)}
+return _3},$831:function(_1,_2){var _3=[],r;var _5=this.getCenter();if(typeof(_1.fx)==='string'){if(_1.fx.endsWith('%')){_3.push(_5[0]+(parseFloat(_1.fx)/100.0))}else{_3.push(_5[0]+parseFloat(_1.fx))}}else{_3.push(_5[0]+_1.fx)}
+if(typeof(_1.fy)==='string'){if(_1.fy.endsWith('%')){_3.push(_5[1]+(parseFloat(_1.fy)/100.0))}else{_3.push(_5[1]+parseFloat(_1.fy))}}else{_3.push(_5[1]+_1.fy)}
+_3.push(0);if(typeof(_1.cx)==='string'&&isc.isA.Number(_2[0])){if(_1.cx.endsWith('%')){_3.push(_2[0]-Math.round(_2[0]*parseInt(_1.cx)/100.0))}else{_3.push(_5[0]+parseInt(_1.cx))}}else{_3.push(_5[0]+_1.cx)}
+if(typeof(_1.cy)==='string'&&isc.isA.Number(_2[1])){if(_1.cx.endsWith('%')){_3.push(_2[1]-Math.round(_2[1]*parseInt(_1.cy)/100.0))}else{_3.push(_5[1]+parseInt(_1.cy))}}else{_3.push(_5[1]+_1.cy)}
+if(typeof(_1.r)==='string'&&isc.isA.Number(_2[0])&&isc.isA.Number(_2[1])){r=Math.sqrt(Math.pow(_2[2]-_2[0],2)+Math.pow(_2[3]-_2[1],2));if(_1.r.endsWith('%')){_3.push(r*parseFloat(_1.r)/100.0)}else{_3.push(r*parseFloat(_1.r))}}else{_3.push(_1.r)}
+return _3},$85x:function(_1,_2,_3,_4,_5){var _6=[10,5],_7=_6.length,_8=(_3-_1),_9=(_4-_2);var _10=_9/ _8;var _11=Math.sqrt(_8*_8+_9*_9);var _12=0,_13,_14,_15=true;switch(this.linePattern.toLowerCase()){default:case"dash":_6=[10,10];break;case"dot":_6=[1,10];break;case"longdash":_6=[20,10];break;case"shortdash":_6=[10,5];break;case"shortdot":_6=[1,5];break}
+var _16=true;if(_3<_1){_16=false}
+this.bmMoveTo(_1,_2,_5);while(_11>=0.1){_13=_6[_12++%_7];if(_13>_11){_13=_11}
+_14=Math.sqrt(_13*_13/(1+_10*_10));if(_16){_1+=_14}else{_1-=_14}
+_2+=_10*_14;this[_15?'bmLineTo':'bmMoveTo'](_1,_2,_5);_11-=_13;_15=!_15}},drawStroke:function(_1){_1.lineWidth=this.lineWidth;_1.lineCap=this.lineCap;_1.strokeStyle=this.lineColor;_1.globalAlpha=this.lineOpacity;_1.beginPath();this.drawBitmapPath(_1);_1.stroke()},drawBitmap:function(_1){_1.save();try{if(this.drawPane&&(this.drawPane.zoomLevel||this.drawPane.translate||this.drawPane.rotation)){_1.setTransform(1,0,0,1,0,0);if(this.drawPane.translate){_1.translate(this.drawPane.translate[0],this.drawPane.translate[1])}}
+if(this.translate){_1.translate(this.translate[0],this.translate[1])}
+if(this.scale&&this.scale.length===2){_1.scale(this.scale[0],this.scale[1])}
+if(this.rotation&&!isc.isA.DrawLabel(this)){var _2=this.getCenter&&this.getCenter();if(_2&&_2.length===2){_1.translate(_2[0],_2[1]);_1.rotate(this.rotation*Math.PI/ 180.0);_1.translate(-_2[0],-_2[1])}}
+var _3=this.fillColor,_4,_5,_6;if(this.fillGradient){_4=typeof(this.fillGradient)==='string'?this.drawPane.gradients[this.fillGradient]:this.fillGradient;if(typeof(_4.direction)==='number'||_4.x1||typeof(_4.x1)==='number'){_5=this.$830(_4,this.getBoundingBox());_3=_1.createLinearGradient(_5[0],_5[1],_5[2],_5[3])}else{_5=this.$831(_4,this.getBoundingBox());_3=_1.createRadialGradient(_5[0],_5[1],_5[2],_5[3],_5[4],_5[5])}
+if(_4.startColor&&_4.endColor){_3.addColorStop(0.0,_4.startColor);_3.addColorStop(1.0,_4.endColor)}else if(_4.colorStops&&_4.colorStops.length){for(var i=0;i<_4.colorStops.length;++i){_6=_4.colorStops[i].offset;if(typeof(_6)==='string'&&_6.endsWith('%')){_6=parseFloat(_6.substring(0,_6.length-1))/100.0}
+_3.addColorStop(_6,_4.colorStops[i].color)}}}
+if(this.shadow){_1.shadowColor=this.shadow.color;_1.shadowBlur=this.shadow.blur;_1.shadowOffsetX=this.shadow.offset[0];_1.shadowOffsetY=this.shadow.offset[1]}
+if(_3){_1.fillStyle=_3;_1.globalAlpha=this.fillOpacity;_1.beginPath();this.drawBitmapPath(_1);_1.fill()}
+if(this.lineColor||this.shadow){this.drawStroke(_1)}}catch(e){if(!isc.Log.supportsOnError)this.$am(e);else this.logWarn("exception during drawBitmap(): "+e)}
+_1.restore()},$442:function(){if(this.$444){if(this.startArrow=="block")return this.$444;if(this.$44m.getElementById(this.startArrow)){this.$444=this.startArrow;this.$445=null}else{this.logWarn("SVG marker '"+this.startArrow+"' does not exist; ignoring")}}else{if(this.startArrow==="block"||!this.$44m.getElementById(this.startArrow)){this.$444="isc_DrawItem_"+this.drawItemID+"$446";this.$445=this.$447(this.$444,this.lineColor,this.lineOpacity,true)}else{this.$444=this.startArrow}}
+this.startArrow="block";return this.$444},$443:function(){if(this.$448){if(this.endArrow=="block")return this.$448;if(this.$44m.getElementById(this.endArrow)){this.$448=this.endArrow;this.$449=null}else{this.logWarn("SVG marker '"+this.endArrow+"' does not exist; ignoring")}}else{if(this.endArrow=="block"||!this.$44m.getElementById(this.endArrow)){this.$448="isc_DrawItem_"+this.drawItemID+"$45a";this.$449=this.$447(this.$448,this.lineColor,this.lineOpacity,false)}else{this.$448=this.endArrow}}
+this.endArrow="block";return this.$448},$447:function(_1,_2,_3,_4){var _5;if(!isc.Browser.isWebKit){_5="<marker id='"+_1+"' viewBox='0 0 10 10' refY='5' refX='"+(_4?"10":"0")+"' orient='auto' markerUnits='strokeWidth' markerWidth='4' markerHeight='3'><path d='"+(_4?"M 10 0 L 0 5 L 10 10 z":"M 0 0 L 10 5 L 0 10 z")+"' fill='"+((_2&&_2!="")?_2:"none")+"' fill-opacity='"+_3+"' stroke-width='0px'/></marker>";var _6=this.$44m.createRange();_6.setStart(this.$44o,0);this.$44o.appendChild(_6.createContextualFragment(_5))}else{_5=this.$44m.createElementNS("http://www.w3.org/2000/svg","marker");_5.setAttributeNS(null,"id",_1);_5.setAttributeNS(null,"viewBox","0 0 10 10");_5.setAttributeNS(null,"refY","5");_5.setAttributeNS(null,"refX",(_4?"10":"0"));_5.setAttributeNS(null,"orient","auto");_5.setAttributeNS(null,"markerUnits","strokeWidth");_5.setAttributeNS(null,"markerWidth","4");_5.setAttributeNS(null,"markerHeight","3");var _7=this.$44m.createElementNS("http://www.w3.org/2000/svg","path");_7.setAttributeNS(null,"d",(_4?"M 10 0 L 0 5 L 10 10 z":"M 0 0 L 10 5 L 0 10 z"));_7.setAttributeNS(null,"fill",((_2&&_2!="")?_2:"none"));_7.setAttributeNS(null,"fillOpacity",_3);_7.setAttributeNS(null,"strokeWidth","0px");_5.appendChild(_7);this.$44o.appendChild(_5)}
+return this.$44o.lastChild.firstChild},show:function(){this.hidden=false;if(this.drawingVML){this.$44u.style.visibility="visible"}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"visibility","visible")}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},hide:function(){this.hidden=true;if(this.drawingVML){this.$44u.style.visibility="hidden"}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"visibility","hidden")}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},setLineWidth:function(_1){if(_1!=null)this.lineWidth=_1;if(this.drawingVML){this.$44l(this.lineWidth*this.drawPane.zoomLevel)}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"stroke-width",this.lineWidth+"px");this.$44z.setAttributeNS(null,"stroke-dasharray",this.$441())}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},$44l:function(_1){if(this.$44w){this.$44w.weight=_1+"px"}},setLineColor:function(_1){this.lineColor=_1;if(this.drawingVML){if(this.lineColor&&this.lineColor!=""){this.$44w.on=true;this.$44w.color=this.lineColor}else{this.$44w.on=false}}else if(this.drawingSVG){var _1=(this.lineColor&&this.lineColor!="")?this.lineColor:"none"
+this.$44z.setAttributeNS(null,"stroke",_1);if(this.$445){this.$445.setAttributeNS(null,"stroke",_1);this.$445.setAttributeNS(null,"fill",_1)}
+if(this.$449){this.$449.setAttributeNS(null,"stroke",_1);this.$449.setAttributeNS(null,"fill",_1)}}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},setLineOpacity:function(_1){if(_1!=null)this.lineOpacity=_1;if(this.drawingVML){this.$44w.opacity=this.lineOpacity}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"stroke-opacity",this.lineOpacity);if(this.$445){this.$445.setAttributeNS(null,"stroke-opacity",this.lineOpacity);this.$445.setAttributeNS(null,"fill-opacity",this.lineOpacity)}
+if(this.$449){this.$449.setAttributeNS(null,"stroke-opacity",this.lineOpacity);this.$449.setAttributeNS(null,"fill-opacity",this.lineOpacity)}}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},setLinePattern:function(_1){this.linePattern=_1;if(this.drawingVML){this.$44w.dashstyle=this.linePattern}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"stroke-dasharray",this.$441())}else if(this.drawingBitmap){}},$44r:{shortdot:1,dot:1,shortdash:3,dash:4,longdash:8},$44s:{shortdot:1,dot:3,shortdash:1,dash:3,longdash:3},$441:function(){var _1=this.linePattern;if(!_1||_1=="solid"||_1=="")return"none";if(isc.isAn.Array(_1))return _1.join("px,")+"px";var _2=this.$44r[_1];var _3=this.$44s[_1];if(this.lineCap!="butt"){_2=Math.max(0.1,_2-1);_3++}
+return(_2*this.lineWidth)+"px,"+(_3*this.lineWidth)+"px"},setLineCap:function(_1){if(_1!=null)this.lineCap=_1;if(this.drawingVML){this.$44w.endcap=(this.lineCap=="butt")?"flat":this.lineCap}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"stroke-linecap",this.lineCap);this.$44z.setAttributeNS(null,"stroke-dasharray",this.$441())}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},setShadow:function(_1){if(_1!=null){this.shadow=_1}
+if(this.drawingVML){}else if(this.drawingSVG){}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},setStartArrow:function(_1){var _2=this.$63r();var _3;if(_1!==_3)this.startArrow=_1;else _1=this.startArrow;var _4=this.$63r();if(_2!=_4){this.setStartPoint()}
+if(_4)_1=null;if(this.drawingVML){this.$44w.startarrow=(_1?_1:"none")}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"marker-start",(_1?"url(#"+this.$442()+")":"none"))}else if(this.drawingBitmap){}},setEndArrow:function(_1){var _2=this.$63s();var _3;if(_1!==_3)this.endArrow=_1;else _1=this.endArrow;var _4=this.$63s();if(_2!=_4){this.setEndPoint()}
+if(_4)_1=null;if(this.drawingVML){this.$44w.endarrow=(_1?_1:"none")}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"marker-end",(_1?"url(#"+this.$443()+")":"none"))}else if(this.drawingBitmap){}},moveBy:function(_1,_2){if(this.item){var _3=this.getBoundingBox();this.item.x=_3[0];this.item.y=_3[1];this.item.width=Math.abs(_3[2]-_3[0]);this.item.height=Math.abs(_3[3]-_3[1]);this.drawPane.updateQuadTree(this)}},resizeBy:function(_1,_2){if(this.item){var _3=this.getBoundingBox();this.item.x=_3[0];this.item.y=_3[1];this.item.width=Math.abs(_3[2]-_3[0]);this.item.height=Math.abs(_3[3]-_3[1]);this.drawPane.updateQuadTree(this)}},rotateBy:function(_1){this.rotation+=_1;if(this.drawingVML){this.$44u.style.rotation=this.rotation}else if(this.drawingSVG){var _2=this.getCenter();this.$44z.setAttributeNS(null,"transform","translate("+_2[0]+","+_2[1]+") rotate("+this.rotation+") translate("+-_2[0]+","+-_2[1]+")")}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.rotated(_1)},rotateTo:function(_1){this.rotateBy(_1-this.rotation)},scaleBy:function(_1,_2){this.scale=this.scale||[];this.scale[0]=_1;this.scale[1]=_2;if(this.drawingVML){}else if(this.drawingSVG){var _3="scale("+this.scale[0]+","+this.scale[1]+") "+(this.$44z.getAttributeNS(null,"transform")||"");this.$44z.setAttributeNS(null,"transform",_3)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.scaled()},scaleTo:function(_1,_2){this.scaleBy(_1,_2)},setFillColor:function(_1){this.fillColor=_1;if(this.drawingVML){if(this.fillColor&&this.fillColor!=""){this.$44x.on=true;this.$44x.color=this.fillColor}else{this.$44x.on=false}}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"fill",(this.fillColor&&this.fillColor!="")?this.fillColor:"none")}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},setFillGradient:function(_1){this.gradient=_1;if(this.drawingSVG){this.$44z.setAttributeNS(null,"fill",(this.fillColor&&this.fillColor!="")?this.fillColor:"none")}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},setFillOpacity:function(_1){if(_1!=null)this.fillOpacity=_1;if(this.drawingVML){this.$44x.opacity=this.fillOpacity}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"fill-opacity",this.fillOpacity)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}},bmMoveTo:function(_1,_2,_3){var _3=_3||this.drawPane.getBitmapContext();var _4=(this.autoOffset&&(this.lineWidth==0||parseInt(this.lineWidth)%2)==1?0.5:0);try{_3.moveTo(_1+_4,_2+_4)}catch(e){this.logWarn("error on moveTo(): left: "+_1+", top: "+_2+(this.logIsInfoEnabled()?this.getStackTrace():""))}},bmArc:function(_1,_2,_3,_4,_5,_6){var _6=_6||this.drawPane.getBitmapContext();var _7=(this.autoOffset&&(this.lineWidth==0||parseInt(this.lineWidth)%2)==1?0.5:0);try{_6.arc(_1+_7,_2+_7,_3,_4,_5,false)}catch(e){this.logWarn("error on lineTo(): left: "+left+", top: "+top+(this.logIsInfoEnabled()?this.getStackTrace():""))}},bmLineTo:function(_1,_2,_3){var _3=_3||this.drawPane.getBitmapContext();var _4=(this.autoOffset&&(this.lineWidth==0||parseInt(this.lineWidth)%2)==1?0.5:0);try{_3.lineTo(_1+_4,_2+_4)}catch(e){this.logWarn("error on lineTo(): left: "+_1+", top: "+_2+(this.logIsInfoEnabled()?this.getStackTrace():""))}},bmQuadraticCurveTo:function(_1,_2,_3,_4){var _5=_5||this.drawPane.getBitmapContext();var _6=(this.autoOffset&&(this.lineWidth==0||parseInt(this.lineWidth)%2)==1?0.5:0);try{_5.quadraticCurveTo(_1+_6,_2+_6,_3+_6,_4+_6)}catch(e){this.logWarn("error on quadraticCurveTo(): left: "+left+", top: "+top+(this.logIsInfoEnabled()?this.getStackTrace():""))}},bmTranslate:function(_1,_2,_3){var _3=_3||this.drawPane.getBitmapContext();try{_3.translate(_1,_2)}catch(e){this.logWarn("error on translate(): left: "+_1+", top: "+_2+(this.logIsInfoEnabled()?this.getStackTrace():""))}},bmRotate:function(_1,_2){var _2=_2||this.drawPane.getBitmapContext();try{_2.rotate(_1)}catch(e){this.logWarn("error on translate(): angle: "+_1+(this.logIsInfoEnabled()?this.getStackTrace():""))}},bmFillText:function(_1,_2,_3,_4){var _4=_4||this.drawPane.getBitmapContext();try{_4.fillText(_1,_2,_3)}catch(e){this.logWarn("error on fillText(): text: "+_1+", left: "+_2+", top: "+_3+(this.logIsInfoEnabled()?this.getStackTrace():""))}},bmStrokeText:function(_1,_2,_3,_4){var _4=_4||this.drawPane.getBitmapContext();try{_4.strokeText(_1,_2,_3)}catch(e){this.logWarn("error on fillText(): text: "+_1+", left: "+_2+", top: "+_3+(this.logIsInfoEnabled()?this.getStackTrace():""))}}})
+isc.A=isc.DrawItem;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$44q=0;isc.A.$630=["show",,"Knobs"];isc.A.$631=["hide",,"Knobs"];isc.B.push(isc.A.$632=function isc_c_DrawItem__getShowKnobsFunctionName(_1,_2){if(!this.$633){this.$633={}}
+if(this.$633[_1]==null){_1=_1.substring(0,1).toUpperCase()+_1.substring(1);this.$630[1]=_1;this.$631[1]=_1;this.$633[_1]=[this.$630.join(isc.emptyString),this.$631.join(isc.emptyString)]}
+return _2?this.$633[_1][1]:this.$633[_1][0]}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("DrawGroup","DrawItem");isc.A=isc.DrawGroup.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.left=0;isc.A.top=0;isc.B.push(isc.A.init=function isc_DrawGroup_init(){if(!this.drawItems)this.drawItems=[];this.Super("init")}
+,isc.A.erase=function isc_DrawGroup_erase(_1){for(var i=0;i<this.drawItems.length;i++){this.drawItems[i].erase(true)}
+this.drawItems=[];this.Super("erase",arguments)}
+,isc.A.$44v=function isc_DrawGroup__getElementVML(_1){return isc.SB.concat(this.drawPane.startTagVML('FOO')," onmousedown='return ",this.drawPane.getID(),".mouseDown();' "," ID='",_1,"' ",this.getAttributesVML(),">",this.drawPane.endTagVML(this.vmlElementName))}
+,isc.A.$440=function isc_DrawGroup__getElementSVG(_1){var _2;if(!isc.Browser.isWebKit){return"<g id='"+_1+"' transform='translate("+this.left+","+this.top+")'></g>"}else{_2=this.$44m.createElementNS("http://www.w3.org/2000/svg","g");_2.setAttributeNS(null,"id",_1);var _3="translate("+this.left+","+this.top+")";_2.setAttributeNS(null,"transform",_3)}
+return _2}
+,isc.A.drawBitmap=function isc_DrawGroup_drawBitmap(_1){_1.save();_1.translate(this.left,this.top);for(var i=0;i<this.drawItems.length;i++){if(!this.drawItems[i].hidden)this.drawItems[i].drawBitmap(_1)}
+_1.restore()}
+,isc.A.drawBitmapPath=function isc_DrawGroup_drawBitmapPath(_1){this.bmMoveTo(this.left,this.top);this.bmLineTo(this.left+this.width,this.top);this.bmLineTo(this.left+this.width,this.top+this.height);this.bmLineTo(this.left,this.top+this.height);this.bmLineTo(this.left,this.top)}
+,isc.A.setLineWidth=function isc_DrawGroup_setLineWidth(_1){this.logWarn("no setLineWidth")}
+,isc.A.$44l=function isc_DrawGroup__setLineWidthVML(_1){this.logWarn("no $44l")}
+,isc.A.setLineColor=function isc_DrawGroup_setLineColor(_1){this.logWarn("no setLineColor")}
+,isc.A.setLineOpacity=function isc_DrawGroup_setLineOpacity(_1){this.logWarn("no setLineOpacity")}
+,isc.A.setLinePattern=function isc_DrawGroup_setLinePattern(_1){this.logWarn("no setLinePattern")}
+,isc.A.setLineCap=function isc_DrawGroup_setLineCap(_1){this.logWarn("no setLineCap")}
+,isc.A.setStartArrow=function isc_DrawGroup_setStartArrow(_1){this.logWarn("no setStartArrow")}
+,isc.A.setEndArrow=function isc_DrawGroup_setEndArrow(_1){this.logWarn("no setEndArrow")}
+,isc.A.setFillColor=function isc_DrawGroup_setFillColor(_1){this.logWarn("no setFillColor")}
+,isc.A.setFillOpacity=function isc_DrawGroup_setFillOpacity(_1){this.logWarn("no setFillOpacity")}
+,isc.A.setLeft=function isc_DrawGroup_setLeft(_1){if(_1!=null)this.left=_1;if(this.drawingVML){this.$44u.coordorigin.x=-this.left}else if(this.drawingSVG){var _2="translate("+this.left+","+this.top+") "+(this.$44z.getAttributeNS(null,"transform")||"");this.$44z.setAttributeNS(null,"transform",_2)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}}
+,isc.A.setTop=function isc_DrawGroup_setTop(_1){if(_1!=null)this.top=_1;if(this.drawingVML){this.$44u.coordorigin.y=-this.top}else if(this.drawingSVG){var _2="translate("+this.left+","+this.top+") "+(this.$44z.getAttributeNS(null,"transform")||"");this.$44z.setAttributeNS(null,"transform",_2)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}}
+,isc.A.moveTo=function isc_DrawGroup_moveTo(_1,_2){this.moveBy(_1-this.left,_2-this.top)}
+,isc.A.moveBy=function isc_DrawGroup_moveBy(_1,_2){this.left+=_1;this.top+=_2;for(var i=0;i<this.drawItems.length;++i){var _4=this.drawItems[i];_4.moveBy(_1,_2)}
+this.moved(_1,_2)}
+,isc.A.rotateTo=function isc_DrawGroup_rotateTo(_1){this.rotateBy(_1-this.rotation)}
+,isc.A.rotateBy=function isc_DrawGroup_rotateBy(_1){this.rotation+=_1;for(var i=0;i<this.drawItems.length;++i){var _3=this.drawItems[i];_3.rotateBy(_1)}}
+,isc.A.scaleBy=function isc_DrawGroup_scaleBy(_1,_2){for(var i=0;i<this.drawItems.length;++i){var _4=this.drawItems[i];_4.scaleBy(_1,_2)}}
+,isc.A.getCenter=function isc_DrawGroup_getCenter(){return[this.left+Math.round(this.width/ 2),this.top+Math.round(this.height/ 2)]}
+,isc.A.getBoundingBox=function isc_DrawGroup_getBoundingBox(){return[this.left,this.top,this.left+this.width,this.top+this.height]}
+,isc.A.scaleTo=function isc_DrawGroup_scaleTo(_1,_2){this.scale=this.scale||[];this.scale[0]+=(this.scale[0]||0)+_1;this.scale[1]+=(this.scale[1]||0)+_2;this.scaleBy(_1,_2)}
+,isc.A.dragStart=function isc_DrawGroup_dragStart(_1,_2){var _3=this.getBoundingBox();var _4=_3[0];var _5=_3[1];var _6=this.drawPane.normalize(_1.x,_1.y);this.dragOffsetX=_6.x-this.drawPane.getPageLeft()-_4;this.dragOffsetY=_6.y-this.drawPane.getPageTop()-_5;for(var i=0;i<this.drawItems.length;++i){var _8=this.drawItems[i];_8.dragStart(_1,_2)}
+return true}
+,isc.A.dragMove=function isc_DrawGroup_dragMove(_1,_2){var _3=this.drawPane.normalize(_1.x,_1.y);var x=_3.x-this.drawPane.getPageLeft()-this.dragOffsetX;var y=_3.y-this.drawPane.getPageTop()-this.dragOffsetY;this.moveTo(x,y);for(var i=0;i<this.drawItems.length;++i){var _7=this.drawItems[i];_7.dragMove(_1,_2)}
+return true}
+,isc.A.dragStop=function isc_DrawGroup_dragStop(_1,_2){var _3=this.drawPane.normalize(_1.x,_1.y);var x=_3.x-this.drawPane.getPageLeft()-this.dragOffsetX;var y=_3.y-this.drawPane.getPageTop()-this.dragOffsetY;this.moveTo(x,y);for(var i=0;i<this.drawItems.length;++i){var _7=this.drawItems[i];_7.dragStop(_1,_2)}
+return true}
+,isc.A.click=function isc_DrawGroup_click(){for(var i=0;i<this.drawItems.length;++i){var _2=this.drawItems[i];_2.click()}
+return true}
+,isc.A.mouseDown=function isc_DrawGroup_mouseDown(){for(var i=0;i<this.drawItems.length;++i){var _2=this.drawItems[i];_2.mouseDown()}
+return true}
+,isc.A.mouseUp=function isc_DrawGroup_mouseUp(){for(var i=0;i<this.drawItems.length;++i){var _2=this.drawItems[i];_2.mouseUp()}
+return true}
+,isc.A.mouseMove=function isc_DrawGroup_mouseMove(){for(var i=0;i<this.drawItems.length;++i){var _2=this.drawItems[i];_2.mouseMove()}
+return true}
+,isc.A.mouseOut=function isc_DrawGroup_mouseOut(){for(var i=0;i<this.drawItems.length;++i){var _2=this.drawItems[i];_2.mouseOut()}
+return true}
+,isc.A.mouseOver=function isc_DrawGroup_mouseOver(){for(var i=0;i<this.drawItems.length;++i){var _2=this.drawItems[i];_2.mouseOver()}
+return true}
+);isc.B._maxIndex=isc.C+35;isc.defineClass("DrawLine","DrawItem");isc.A=isc.DrawLine.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.startPoint=[0,0];isc.A.endPoint=[100,100];isc.A.svgElementName="line";isc.A.vmlElementName="LINE";isc.B.push(isc.A.init=function isc_DrawLine_init(){this.startLeft=this.startLeft||this.startPoint[0];this.startTop=this.startTop||this.startPoint[1];this.endLeft=this.endLeft||this.endPoint[0];this.endTop=this.endTop||this.endPoint[1];this.Super("init")}
+,isc.A.$45b=function isc_DrawLine__getArrowAdjustedPoints(){if(this.startArrow||this.endArrow){return isc.GraphMath.trimLineEnds(this.startLeft,this.startTop,this.endLeft,this.endTop,this.startArrow?this.lineWidth*3:0,this.endArrow?this.lineWidth*3:0)}else{return[this.startLeft,this.startTop,this.endLeft,this.endTop]}}
+,isc.A.setLineWidth=function isc_DrawLine_setLineWidth(_1){this.Super("setLineWidth",arguments);if(this.drawingSVG)this.setStartPoint()}
+,isc.A.setStartArrow=function isc_DrawLine_setStartArrow(_1){this.Super("setStartArrow",arguments);if(this.drawingSVG)this.setStartPoint()}
+,isc.A.setEndArrow=function isc_DrawLine_setEndArrow(_1){this.Super("setEndArrow",arguments);if(this.drawingSVG)this.setEndPoint()}
+,isc.A.getAttributesVML=function isc_DrawLine_getAttributesVML(){return isc.SB.concat("FROM='",this.startLeft," ",this.startTop,"' TO='",this.endLeft," ",this.endTop,"'")}
+,isc.A.getAttributesSVG=function isc_DrawLine_getAttributesSVG(){var _1=this.$45b();return"x1='"+_1[0]+"' y1='"+_1[1]+"' x2='"+_1[2]+"' y2='"+_1[3]+"'"}
+,isc.A.drawBitmapPath=function isc_DrawLine_drawBitmapPath(_1){var _2=(this.lineWidth==0||parseInt(this.lineWidth)%2)==1?0.5:0,_3=parseFloat(this.startLeft)+_2,_4=parseFloat(this.startTop)+_2,_5=parseFloat(this.endLeft)+_2,_6=parseFloat(this.endTop)+_2;if(this.linePattern.toLowerCase()!=="solid"){this.$85x(_3,_4,_5,_6,_1)}else{this.bmMoveTo(this.startLeft,this.startTop,_1);this.bmLineTo(this.endLeft,this.endTop,_1)}}
+,isc.A.setStartPoint=function isc_DrawLine_setStartPoint(_1,_2){if(_1!=null)this.startLeft=_1;if(_2!=null)this.startTop=_2;if(this.drawingVML){this.$44u.from=this.startLeft+" "+this.startTop}else if(this.drawingSVG){var _3=this.$45b();this.$44z.setAttributeNS(null,"x1",_3[0]);this.$44z.setAttributeNS(null,"y1",_3[1]);if(this.endArrow){this.$44z.setAttributeNS(null,"x2",_3[2]);this.$44z.setAttributeNS(null,"y2",_3[3])}}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.updateControlKnobs()}
+,isc.A.setEndPoint=function isc_DrawLine_setEndPoint(_1,_2){if(_1!=null)this.endLeft=_1;if(_2!=null)this.endTop=_2;if(this.drawingVML){this.$44u.to=this.endLeft+" "+this.endTop}else if(this.drawingSVG){var _3=this.$45b();this.$44z.setAttributeNS(null,"x2",_3[2]);this.$44z.setAttributeNS(null,"y2",_3[3]);if(this.startArrow){this.$44z.setAttributeNS(null,"x1",_3[0]);this.$44z.setAttributeNS(null,"y1",_3[1])}}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.updateControlKnobs()}
+,isc.A.getBoundingBox=function isc_DrawLine_getBoundingBox(){return[].concat(this.startPoint,this.endPoint)}
+,isc.A.getCenter=function isc_DrawLine_getCenter(){return[this.startPoint[0]+Math.round((this.endPoint[0]-this.startPoint[0])/2),this.startPoint[1]+Math.round((this.endPoint[1]-this.startPoint[1])/2)]}
+,isc.A.showStartPointKnobs=function isc_DrawLine_showStartPointKnobs(){this.$639=this.createAutoChild("startKnob",{_constructor:"DrawKnob",x:this.startLeft,y:this.startTop,drawPane:this.drawPane,autoDraw:true});this.observe(this.$639,"updatePoints","observer.setStartPoint(x,y)")}
+,isc.A.hideStartPointKnobs=function isc_DrawLine_hideStartPointKnobs(){if(this.$639){this.$639.destroy();delete this.$639}}
+,isc.A.showEndPointKnobs=function isc_DrawLine_showEndPointKnobs(){this.$64a=this.createAutoChild("endKnob",{_constructor:"DrawKnob",x:this.endLeft,y:this.endTop,drawPane:this.drawPane,autoDraw:true});this.observe(this.$64a,"updatePoints","observer.setEndPoint(x,y)")}
+,isc.A.hideEndPointKnobs=function isc_DrawLine_hideEndPointKnobs(){if(this.$64a){this.$64a.destroy();delete this.$64a}}
+,isc.A.moveBy=function isc_DrawLine_moveBy(_1,_2){this.startLeft+=_1;this.startTop+=_2;this.endLeft+=_1;this.endTop+=_2;this.startPoint[0]=this.startLeft;this.startPoint[1]=this.startTop;this.endPoint[0]=this.endLeft;this.endPoint[1]=this.endTop;if(this.drawingVML){this.$44u.from=this.startLeft+" "+this.startTop;this.$44u.to=this.endLeft+" "+this.endTop}else if(this.drawingSVG){var _3=this.$45b();this.$44z.setAttributeNS(null,"x1",_3[0]);this.$44z.setAttributeNS(null,"y1",_3[1]);this.$44z.setAttributeNS(null,"x2",_3[2]);this.$44z.setAttributeNS(null,"y2",_3[3])}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("moveBy",arguments)}
+,isc.A.moveTo=function isc_DrawLine_moveTo(_1,_2){this.moveBy(_1-this.startLeft,_2-this.startTop)}
+,isc.A.updateControlKnobs=function isc_DrawLine_updateControlKnobs(){this.Super("updateControlKnobs",arguments);if(this.$639){var _1=this.startLeft,_2=this.startTop,_3=this.drawPane.drawing2screen([_1,_2,0,0]);this.$639.setCenterPoint(_3[0],_3[1])}
+if(this.$64a){var _1=this.endLeft,_2=this.endTop,_3=this.drawPane.drawing2screen([_1,_2,0,0]);this.$64a.setCenterPoint(_3[0],_3[1])}}
+);isc.B._maxIndex=isc.C+19;isc.defineClass("DrawRect","DrawItem");isc.A=isc.DrawRect.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.left=0;isc.A.top=0;isc.A.width=100;isc.A.height=100;isc.A.rounding=0;isc.A.lineCap="butt";isc.A.svgElementName="rect";isc.A.vmlElementName="ROUNDRECT";isc.B.push(isc.A.getAttributesVML=function isc_DrawRect_getAttributesVML(){return isc.SB.concat("STYLE='position:absolute; left:",this.left,"px; top:",this.top,"px; width:",this.width,"px; height:",this.height,"px;'"," ARCSIZE='"+this.rounding/ 2+"'")}
+,isc.A.getAttributesSVG=function isc_DrawRect_getAttributesSVG(){return"x='"+this.left+"' y='"+this.top+"' width='"+this.width+"' height='"+this.height+"'"+(this.rounding?" rx='"+(this.rounding*Math.min(this.width,this.height)/2)+"'":"")}
+,isc.A.drawBitmapPath=function isc_DrawRect_drawBitmapPath(_1){if(this.rounding==0){this.bmMoveTo(this.left,this.top);this.bmLineTo(this.left+this.width,this.top);this.bmLineTo(this.left+this.width,this.top+this.height);this.bmLineTo(this.left,this.top+this.height);this.bmLineTo(this.left,this.top)}else{var r=this.rounding*(Math.min(this.width,this.height)/2);this.bmMoveTo(this.left+r,this.top);this.bmLineTo(this.left+this.width-r,this.top);this.bmQuadraticCurveTo(this.left+this.width,this.top,this.left+this.width,this.top+r);this.bmLineTo(this.left+this.width,this.top+this.height-r);this.bmQuadraticCurveTo(this.left+this.width,this.top+this.height,this.left+this.width-r,this.top+this.height);this.bmLineTo(this.left+r,this.top+this.height);this.bmQuadraticCurveTo(this.left,this.top+this.height,this.left,this.top+this.height-r);this.bmLineTo(this.left,this.top+r);this.bmQuadraticCurveTo(this.left,this.top,this.left+r,this.top)}
+_1.closePath()}
+,isc.A.setCenter=function isc_DrawRect_setCenter(_1,_2){if(_1!=null)_1=_1-Math.round(this.width/ 2);if(_2!=null)_2=_2-Math.round(this.height/ 2);this.moveTo(_1,_2)}
+,isc.A.getCenter=function isc_DrawRect_getCenter(){return[this.left+Math.round(this.width/ 2),this.top+Math.round(this.height/ 2)]}
+,isc.A.getBoundingBox=function isc_DrawRect_getBoundingBox(){return[this.left,this.top,this.left+this.width,this.top+this.height]}
+,isc.A.moveBy=function isc_DrawRect_moveBy(_1,_2){this.left+=_1;this.top+=_2;if(this.drawingVML){this.$44u.style.left=this.left;this.$44u.style.top=this.top}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"x",this.left);this.$44z.setAttributeNS(null,"y",this.top)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("moveBy",arguments);this.moved(_1,_2)}
+,isc.A.moveTo=function isc_DrawRect_moveTo(_1,_2){this.moveBy(_1-this.left,_2-this.top)}
+,isc.A.setLeft=function isc_DrawRect_setLeft(_1){this.moveTo(_1)}
+,isc.A.setTop=function isc_DrawRect_setTop(_1){this.moveTo(null,_1)}
+,isc.A.resizeTo=function isc_DrawRect_resizeTo(_1,_2){var _3=0,_4=0;if(_1!=null)_3=_1-this.width;if(_2!=null)_4=_2-this.height;this.resizeBy(_3,_4)}
+,isc.A.resizeBy=function isc_DrawRect_resizeBy(_1,_2){if(_1!=null)this.width+=_1;if(_2!=null)this.height+=_2;if(this.drawingVML){this.$44u.style.width=this.width;this.$44u.style.height=this.height}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"width",this.width);this.$44z.setAttributeNS(null,"height",this.height)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("resizeBy",arguments);this.resized(_1,_2)}
+,isc.A.setWidth=function isc_DrawRect_setWidth(_1){this.resizeTo(_1)}
+,isc.A.setHeight=function isc_DrawRect_setHeight(_1){this.resizeTo(null,_1)}
+,isc.A.setRect=function isc_DrawRect_setRect(_1,_2,_3,_4){this.moveTo(_1,_2);this.resizeTo(_3,_4)}
+,isc.A.setRounding=function isc_DrawRect_setRounding(_1){this.rounding=_1;if(this.drawingVML){this.erase();this.draw()}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"rx",(this.rounding?(this.rounding*Math.min(this.width,this.height)/2):null))}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}}
+);isc.B._maxIndex=isc.C+16;isc.defineClass("DrawOval","DrawItem");isc.A=isc.DrawOval.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.left=0;isc.A.top=0;isc.A.width=100;isc.A.height=100;isc.A.svgElementName="ellipse";isc.A.vmlElementName="OVAL";isc.B.push(isc.A.init=function isc_DrawOval_init(){if(!this.radius)this.$63t();else this.$78s();this.Super("init")}
+,isc.A.$78s=function isc_DrawOval__deriveRectFromRadius(){this.rx=this.rx||this.radius;this.ry=this.ry||this.radius;this.width=this.rx*2;this.height=this.ry*2;if(this.centerPoint!=null){this.left=this.centerPoint[0]-this.width/ 2;this.top=this.centerPoint[1]-this.height/ 2}else{this.centerPoint=[];this.centerPoint[0]=this.left+this.width/ 2;this.centerPoint[1]=this.top+this.height/ 2}}
+,isc.A.$63t=function isc_DrawOval__deriveCenterPointFromRect(){this.centerPoint=[];this.centerPoint[0]=this.left+this.width/ 2;this.centerPoint[1]=this.top+this.height/ 2;this.rx=this.width/ 2;this.ry=this.height/ 2}
+,isc.A.getAttributesVML=function isc_DrawOval_getAttributesVML(){return isc.SB.concat("STYLE='position:absolute;left:",this.left,"px;top:",this.top,"px;width:",this.width,"px;height:",this.height,"px;'")}
+,isc.A.getAttributesSVG=function isc_DrawOval_getAttributesSVG(){return"cx='"+this.centerPoint[0]+"' cy='"+this.centerPoint[1]+"' rx='"+this.rx+"' ry='"+this.ry+"'"}
+,isc.A.getBoundingBox=function isc_DrawOval_getBoundingBox(){return[this.left,this.top,this.left+this.width,this.top+this.height]}
+,isc.A.drawBitmapPath=function isc_DrawOval_drawBitmapPath(_1){var _2=0.552284749831;var _3=this.rx;var _4=this.ry;var _5=this.centerPoint[0];var _6=this.centerPoint[1];_1.moveTo(_5,_6-_4);_1.bezierCurveTo(_5+(_2*_3),_6-_4,_5+_3,_6-(_2*_4),_5+_3,_6);_1.bezierCurveTo(_5+_3,_6+(_2*_4),_5+(_2*_3),_6+_4,_5,_6+_4);_1.bezierCurveTo(_5-(_2*_3),_6+_4,_5-_3,_6+(_2*_4),_5-_3,_6);_1.bezierCurveTo(_5-_3,_6-(_2*_4),_5-(_2*_3),_6-_4,_5,_6-_4);_1.closePath()}
+,isc.A.setCenterPoint=function isc_DrawOval_setCenterPoint(_1,_2){if(isc.isAn.Array(_1)){_2=_1[1];_1=_1[0]}
+var _3=0,_4=0;if(_1!=null)_3=_1-this.centerPoint[0];if(_2!=null)_4=_2-this.centerPoint[1];this.moveBy(_3,_4)}
+,isc.A.moveBy=function isc_DrawOval_moveBy(_1,_2){if(_1!=null)this.centerPoint[0]+=_1;if(_2!=null)this.centerPoint[1]+=_2;this.$78s();if(!this.$if)return;if(this.drawingVML){this.$44u.style.left=this.centerPoint[0]-this.rx;this.$44u.style.top=this.centerPoint[1]-this.ry}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"cx",this.centerPoint[0]);this.$44z.setAttributeNS(null,"cy",this.centerPoint[1])}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("moveBy",arguments);this.moved(_1,_2)}
+,isc.A.moveTo=function isc_DrawOval_moveTo(_1,_2){this.moveBy(_1-this.left,_2-this.top)}
+,isc.A.setLeft=function isc_DrawOval_setLeft(_1){this.moveTo(_1)}
+,isc.A.setTop=function isc_DrawOval_setTop(_1){this.moveTo(null,_1)}
+,isc.A.resizeBy=function isc_DrawOval_resizeBy(_1,_2,_3){if(_1!=null)this.width+=_1;if(_2!=null)this.height+=_2;if(_3){if(_1!=null)this.left+=Math.round(_1/ 2);if(_2!=null)this.top+=Math.round(_2/ 2)}
+this.$63t();if(this.drawingVML){this.$44u.style.width=this.width;this.$44u.style.height=this.height;if(_3){this.$44u.style.left=this.left;this.$44u.style.top=this.top}}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"rx",this.rx);this.$44z.setAttributeNS(null,"ry",this.ry);if(!_3){this.$44z.setAttributeNS(null,"cx",this.centerPoint[0]);this.$44z.setAttributeNS(null,"cy",this.centerPoint[1])}}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("resizeBy",arguments);this.resized(_1,_2);if(_3)this.moved(_1/ 2,_2/ 2)}
+,isc.A.resizeTo=function isc_DrawOval_resizeTo(_1,_2,_3){var _4=0,_5=0;if(_1!=null)_4=_1-this.width;if(_2!=null)_5=_2-this.height;this.resizeBy(_4,_5,_3)}
+,isc.A.setWidth=function isc_DrawOval_setWidth(_1){this.resizeTo(_1)}
+,isc.A.setHeight=function isc_DrawOval_setHeight(_1){this.resizeTo(null,_1)}
+,isc.A.setRect=function isc_DrawOval_setRect(_1,_2,_3,_4){this.moveTo(_1,_2);this.resizeTo(_3,_4)}
+,isc.A.setRadii=function isc_DrawOval_setRadii(_1,_2){if(isc.isAn.Array(_1)){_2=_1[1];_1=_1[0]}
+var _3,_4;if(_1!=null)_3=2*_1;if(_2!=null)_4=2*_2;this.resizeTo(_3,_4,true)}
+,isc.A.setRadius=function isc_DrawOval_setRadius(_1){this.setRadii(_1,_1)}
+,isc.A.setOval=function isc_DrawOval_setOval(_1,_2,_3,_4){this.setCenterPoint(_1,_2);this.setRadii(_3,_4)}
+,isc.A.getCenter=function isc_DrawOval_getCenter(){return this.centerPoint.slice()}
+);isc.B._maxIndex=isc.C+21;isc.defineClass("DrawSector","DrawItem");isc.A=isc.DrawSector.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.centerPoint=[0,0];isc.A.startAngle=0.0;isc.A.endAngle=20.0;isc.A.radius=100;isc.A.svgElementName="path";isc.A.vmlElementName="SHAPE";isc.B.push(isc.A.init=function isc_DrawSector_init(){this.Super("init")}
+,isc.A.getBoundingBox=function isc_DrawSector_getBoundingBox(){return[this.centerPoint[0],this.centerPoint[1],this.centerPoint[0]+this.radius,this.centerPoint[1]+this.radius]}
+,isc.A.getCenter=function isc_DrawSector_getCenter(){return this.centerPoint.slice()}
+,isc.A.getAttributesVML=function isc_DrawSector_getAttributesVML(){var _1=-this.startAngle;var _2=this.endAngle-this.startAngle;var _3="STYLE='position:absolute;top:0px;left:0px;width:100%;height:100%;' ";var _4="path='m"+Math.round(this.centerPoint[0])+","+Math.round(this.centerPoint[1]);_4+=" ae"+Math.round(this.centerPoint[0])+","+Math.round(this.centerPoint[1]);_4+=" "+Math.round(this.radius)+","+Math.round(this.radius)+" ";_4+=Math.round(_1*65535)+","+Math.round(-_2*65536)+" x e'";return _3+_4}
+,isc.A.getAttributesSVG=function isc_DrawSector_getAttributesSVG(){var _1=this.endAngle-this.startAngle+1;var _2=_1*Math.PI/ 180.0;var _3=this.startAngle*Math.PI/ 180.0;var _4=this.radius;var _5=0.0;var _6=this.centerPoint[0]+_4*Math.cos(_3);var _7=this.centerPoint[1]+_4*Math.sin(_3);var _8=_4*Math.cos(_2);var _9=_4*Math.sin(_2);var _10=this.centerPoint[0]+_8*Math.cos(_3)-_9*Math.sin(_3);var _11=this.centerPoint[1]+_8*Math.sin(_3)+_9*Math.cos(_3);var _12="d='M"+this.centerPoint[0]+" "+this.centerPoint[1];_12+=" L"+_6+" "+_7;_12+=" A"+this.radius+" "+this.radius+" 0 0 1 ";_12+=_10+" "+_11+" Z";return _12}
+,isc.A.drawBitmapPath=function isc_DrawSector_drawBitmapPath(_1){var _2=this.endAngle-this.startAngle+1;var _3=_2*Math.PI/ 180.0;var _4=this.startAngle*Math.PI/ 180.0;var _5=this.endAngle*Math.PI/ 180.0;var _6=this.startAngle*Math.PI/ 180.0;var _7=this.radius;var _8=0.0;var _9=this.centerPoint[0]+_7*Math.cos(_6);var _10=this.centerPoint[1]+_7*Math.sin(_6);var _11=_7*Math.cos(_3);var _12=_7*Math.sin(_3);var _13=this.centerPoint[0]+_11*Math.cos(_6)-_12*Math.sin(_6);var _14=this.centerPoint[1]+_11*Math.sin(_6)+_12*Math.cos(_6);this.bmMoveTo(this.centerPoint[0],this.centerPoint[1],_1);this.bmLineTo(_9,_10,_1);this.bmArc(this.centerPoint[0],this.centerPoint[1],this.radius,_4,_5,false);this.bmLineTo(this.centerPoint[0],this.centerPoint[1],_1);_1.closePath()}
+,isc.A.setCenterPoint=function isc_DrawSector_setCenterPoint(_1,_2){if(isc.isAn.Array(_1)){_2=_1[1];_1=_1[0]}
+var _3=0,_4=0;if(_1!=null)_3=_1-this.centerPoint[0];if(_2!=null)_4=_2-this.centerPoint[1];this.moveBy(_3,_4)}
+,isc.A.moveTo=function isc_DrawSector_moveTo(_1,_2){this.moveBy(_1-this.centerPoint[0],_2-this.centerPoint[1])}
+,isc.A.moveBy=function isc_DrawSector_moveBy(_1,_2){if(!this.$if)return;this.centerPoint[0]+=_1;this.centerPoint[1]+=_2;if(this.drawingVML){this.$44u.path="m"+Math.round(this.centerPoint[0])+","+Math.round(this.centerPoint[1])+" ae"+Math.round(this.centerPoint[0])+","+Math.round(this.centerPoint[1])+" "+Math.round(this.radius)+","+Math.round(this.radius)+" "+Math.round(-this.startAngle*65535)+","+Math.round(-(this.endAngle-this.startAngle)*65536)+" x e'"}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"transform","translate("+_1+","+_2+")")}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("moveBy",arguments);this.moved()}
+,isc.A.resizeBy=function isc_DrawSector_resizeBy(_1,_2){if(this.scale){this.scale[0]=_1;this.scale[1]=_2;if(this.drawingSVG){this.$44z.setAttributeNS(null,"transform","scale("+this.scale[0]+","+this.scale[1]+")")}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("resizeBy",arguments);this.resized(_1,_2)}}
+);isc.B._maxIndex=isc.C+10;isc.defineClass("DrawLabel","DrawItem");isc.A=isc.DrawLabel.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.left=0;isc.A.top=0;isc.A.fontFamily="Tahoma";isc.A.fontSize=18;isc.A.fontWeight="bold";isc.A.fontStyle="normal";isc.B.push(isc.A.init=function isc_DrawLabel_init(){this.$44k=this.fontSize;this.Super("init")}
+,isc.A.$44v=function isc_DrawLabel__getElementVML(_1){if(this.synchTextMove){return isc.SB.concat(this.drawPane.startTagVML('RECT')," ID='",_1,"' STYLE='position:absolute;left:",this.left,"px; top:",this.top,"px;'>",this.drawPane.startTagVML('TEXTBOX')," INSET='0px, 0px, 0px, 0px' STYLE='overflow:visible","; font-family:",this.fontFamily,"; font-size:",this.fontSize*this.drawPane.zoomLevel,"; font-weight:",this.fontWeight,"; font-style:",this.fontStyle,";'><NOBR>",this.contents,"</NOBR>",this.drawPane.endTagVML('TEXTBOX'),this.drawPane.endTagVML('RECT'))}else{var _2=this.drawPane.drawing2screen([this.left,this.top,0,0]);return isc.SB.concat("<DIV ID='",_1,"' STYLE='position:absolute; overflow:visible; width:1px; height:1px","; left:",_2[0]+this.drawPane.getLeftPadding(),"px; top:",_2[1]+this.drawPane.getTopPadding(),"px",(this.rotation?";writing-mode: tb-rl":""),"; font-family:",this.fontFamily,"; font-size:",(this.fontSize*this.drawPane.zoomLevel)+"px","; font-weight:",this.fontWeight,"; font-style:",this.fontStyle,";color:",this.lineColor,";'><NOBR>",this.contents,"</NOBR></DIV>")}}
+,isc.A.$440=function isc_DrawLabel__getElementSVG(_1){var _2;if(!isc.Browser.isWebKit){_2="<text id='"+_1+"' x='"+this.left+"' y='"+this.top+"' dominant-baseline='text-before-edge"+"' font-family='"+this.fontFamily+"' font-size='"+this.fontSize+"' font-weight='"+this.fontWeight+"' font-style='"+this.fontStyle+"'>"+this.contents+"</text>"}else{_2=this.$44m.createElementNS("http://www.w3.org/2000/svg","text");_2.setAttributeNS(null,"id",_1);_2.setAttributeNS(null,"x",this.left);_2.setAttributeNS(null,"y",this.top);_2.setAttributeNS(null,"dominantBaseline","text-before-edge");_2.setAttributeNS(null,"fontFamily",this.fontFamily);_2.setAttributeNS(null,"fontSize",this.fontSize);_2.setAttributeNS(null,"fontWeight",this.fontWeight);_2.setAttributeNS(null,"fontStyle",this.fontStyle);_2.textContent=this.contents}
+return _2}
+,isc.A.moveBy=function isc_DrawLabel_moveBy(_1,_2){this.top+=_2;this.left+=_1;if(this.drawingVML){this.$44u.style.left=this.left;this.$44u.style.top=this.top}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"x",this.left);this.$44z.setAttributeNS(null,"y",this.top)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("moveBy",arguments)}
+,isc.A.moveTo=function isc_DrawLabel_moveTo(_1,_2){this.moveBy(_1-this.left,_2-this.top)}
+,isc.A.rotateTo=function isc_DrawLabel_rotateTo(_1){this.rotateBy(_1-this.rotation)}
+,isc.A.getCenter=function isc_DrawLabel_getCenter(){return[this.left+Math.round(this.getTextWidth()/2),this.top+Math.round(this.getTextHeight()/2)]}
+,isc.A.getBoundingBox=function isc_DrawLabel_getBoundingBox(){return[this.left,this.top,this.left+this.getTextWidth(),this.top+this.getTextHeight()]}
+,isc.A.makeHTMLText=function isc_DrawLabel_makeHTMLText(){var _1=this.$45c=isc.HTMLFlow.create({left:this.left,top:this.top,rotation:this.rotation,transformOrigin:"0 0",width:1,height:1,contents:isc.SB.concat("<span style='font-family:",this.fontFamily,";font-weight:",this.fontWeight,";font-size:",Math.round(this.fontSize*this.drawPane.zoomLevel),";font-style:",this.fontStyle,";color:",this.lineColor,";white-space:nowrap'>",this.contents,"</span>"),autoDraw:false});this.drawPane.addChild(_1)}
+,isc.A.drawBitmap=function isc_DrawLabel_drawBitmap(_1){if(this.useHTML||isc.Browser.isIPhone){if(!this.$45c)this.makeHTMLText()}else{this.Super("drawBitmap",arguments)}}
+,isc.A.erase=function isc_DrawLabel_erase(){if(this.$45c)this.$45c.destroy();this.Super("erase",arguments)}
+,isc.A.destroy=function isc_DrawLabel_destroy(){if(this.$45c)this.$45c.destroy();this.Super("destroy",arguments)}
+,isc.A.getFontString=function isc_DrawLabel_getFontString(){return(this.fontStyle!="normal"?this.fontStyle+" ":"")+(this.fontWeight!="normal"?this.fontWeight+" ":"")+this.fontSize+"px "+this.fontFamily}
+,isc.A.drawBitmapPath=function isc_DrawLabel_drawBitmapPath(_1){_1.textBaseline="top";_1.font=this.getFontString();this.bmTranslate(this.left,this.top,_1);if(this.rotation){this.bmRotate((this.rotation/ 180)*Math.PI,_1)}
+if(this.backgroundColor){_1.fillStyle=this.backgroundColor;_1.globalAlpha=this.fillOpacity;_1.beginPath();var _2=0,_3=this.getTextWidth(),_4=0,_5=this.getTextHeight();this.bmMoveTo(_2,_4);this.bmLineTo(_3,_4);this.bmLineTo(_3,_5);this.bmLineTo(_2,_5);this.bmLineTo(_2,_4);_1.fill()}
+_1.fillStyle=this.lineColor;this.bmFillText(this.contents,0,0,_1)}
+,isc.A.getTextWidth=function isc_DrawLabel_getTextWidth(){if(this.drawingVML){if(this.synchTextMove){return this.$44u.firstChild.scrollWidth}else{return this.$44u.scrollWidth}}else if(this.drawingSVG){return this.$44z.getComputedTextLength()}else if(this.drawingBitmap){var _1=this.drawPane.getBitmapContext();_1.font=_1.font||this.getFontString();return _1.measureText(this.contents).width}}
+,isc.A.getTextHeight=function isc_DrawLabel_getTextHeight(){if(this.drawingVML){if(this.synchTextMove){return this.$44u.firstChild.scrollHeight}else{return this.$44u.scrollWidth}}else if(this.drawingSVG){return this.$44z.getBBox().height}else if(this.drawingBitmap){var _1=this.drawPane.getBitmapContext();_1.font=_1.font||this.getFontString();return _1.measureText(this.contents).height||this.fontSize}}
+,isc.A.setFontSize=function isc_DrawLabel_setFontSize(_1){if(_1!=null)this.fontSize=_1;if(this.drawingVML){this.$44j.fontSize=this.fontSize*this.drawPane.zoomLevel}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"font-size",this.fontSize)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}}
+,isc.A.setLineWidth=function isc_DrawLabel_setLineWidth(_1){this.logWarn("no setLineWidth")}
+,isc.A.$44l=function isc_DrawLabel__setLineWidthVML(_1){this.logWarn("no $44l")}
+,isc.A.setLineColor=function isc_DrawLabel_setLineColor(_1){this.logWarn("no setLineColor")}
+,isc.A.setLineOpacity=function isc_DrawLabel_setLineOpacity(_1){this.logWarn("no setLineOpacity")}
+,isc.A.setLinePattern=function isc_DrawLabel_setLinePattern(_1){this.logWarn("no setLinePattern")}
+,isc.A.setLineCap=function isc_DrawLabel_setLineCap(_1){this.logWarn("no setLineCap")}
+,isc.A.setStartArrow=function isc_DrawLabel_setStartArrow(_1){this.logWarn("no setStartArrow")}
+,isc.A.setEndArrow=function isc_DrawLabel_setEndArrow(_1){this.logWarn("no setEndArrow")}
+,isc.A.setFillColor=function isc_DrawLabel_setFillColor(_1){this.logWarn("no setFillColor")}
+,isc.A.setFillOpacity=function isc_DrawLabel_setFillOpacity(_1){this.logWarn("no setFillOpacity")}
+);isc.B._maxIndex=isc.C+27;isc.defineClass("DrawImage","DrawItem");isc.A=isc.DrawImage.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.left=0;isc.A.top=0;isc.A.width=16;isc.A.height=16;isc.A.src="blank.png";isc.A.image=null;isc.B.push(isc.A.getBoundingBox=function isc_DrawImage_getBoundingBox(){return[this.left,this.top,this.left+this.width,this.top+this.height]}
+,isc.A.init=function isc_DrawImage_init(){this.Super("init");if(this.src){this.src=this.getSrcURL(this.src);this.image=new Image();this.image.src=this.src}}
+,isc.A.getSrcURL=function isc_DrawImage_getSrcURL(_1){var _2=isc.Canvas.getImgURL(_1);return _2}
+,isc.A.$44v=function isc_DrawImage__getElementVML(_1){var _2=isc.SB.concat(this.drawPane.startTagVML('IMAGE')," ID='",_1,"' SRC='",this.getSrcURL(this.src),(this.title?"' ALT='"+this.title:""),"' STYLE='left:",this.left,"px; top:",this.top,"px; width:",this.width,"px; height:",this.height,"px;'>",this.drawPane.endTagVML("IMAGE"));return _2}
+,isc.A.$440=function isc_DrawImage__getElementSVG(_1){var _2,_3=this.getCenter();if(!isc.Browser.isWebKit){_2="<image id='"+_1+((this.rotation&&_3&&_3.length===2)?"' transform='translate("+_3[0]+","+_3[1]+") rotate("+this.rotation+") translate("+-_3[0]+","+-_3[1]+")":"")+"' x='"+this.left+"' y='"+this.top+"' width='"+this.width+"px' height='"+this.height+"px' xlink:href='"+this.getSrcURL(this.src)+"'>"+(this.title?"<title>"+this.title+"</title>":"")+"</image>"}else{_2=this.$44m.createElementNS("http://www.w3.org/2000/svg","image");_2.setAttributeNS(null,"id",_1);_2.setAttributeNS(null,"x",this.left);_2.setAttributeNS(null,"y",this.top);_2.setAttributeNS(null,"width",this.width+"px");_2.setAttributeNS(null,"height",this.height+"px");_2.setAttributeNS("http://www.w3.org/1999/xlink","href",this.getSrcURL(this.src));if(this.rotation){_2.setAttributeNS(null,"transform","translate("+_3[0]+","+_3[1]+") rotate("+this.rotation+") translate("+-_3[0]+","+-_3[1]+")")}
+if(this.title){var _4=this.$44m.createElementNS("http://www.w3.org/2000/svg","title");_4.textContent=this.title;_2.appendChild(_4)}}
+return _2}
+,isc.A.drawBitmapPath=function isc_DrawImage_drawBitmapPath(_1){_1.drawImage(this.image,this.left,this.top,this.width,this.height)}
+,isc.A.getCenter=function isc_DrawImage_getCenter(){return[this.left+Math.round(this.width/ 2),this.top+Math.round(this.height/ 2)]}
+,isc.A.setSrc=function isc_DrawImage_setSrc(_1){if(_1!=null){this.src=this.getSrcURL(_1);this.image=new Image();this.image.src=this.src}
+if(this.drawingVML){this.$44u.src=this.src}else if(this.drawingSVG){this.$44z.setAttributeNS("http://www.w3.org/1999/xlink","href",this.src)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}}
+,isc.A.setLineWidth=function isc_DrawImage_setLineWidth(_1){this.logWarn("no setLineWidth")}
+,isc.A.$44l=function isc_DrawImage__setLineWidthVML(_1){this.logWarn("no $44l")}
+,isc.A.setLineColor=function isc_DrawImage_setLineColor(_1){this.logWarn("no setLineColor")}
+,isc.A.setLineOpacity=function isc_DrawImage_setLineOpacity(_1){this.logWarn("no setLineOpacity")}
+,isc.A.setLinePattern=function isc_DrawImage_setLinePattern(_1){this.logWarn("no setLinePattern")}
+,isc.A.setLineCap=function isc_DrawImage_setLineCap(_1){this.logWarn("no setLineCap")}
+,isc.A.setStartArrow=function isc_DrawImage_setStartArrow(_1){this.logWarn("no setStartArrow")}
+,isc.A.setEndArrow=function isc_DrawImage_setEndArrow(_1){this.logWarn("no setEndArrow")}
+,isc.A.setFillColor=function isc_DrawImage_setFillColor(_1){this.logWarn("no setFillColor")}
+,isc.A.setFillOpacity=function isc_DrawImage_setFillOpacity(_1){this.logWarn("no setFillOpacity")}
+,isc.A.moveBy=function isc_DrawImage_moveBy(_1,_2){this.left+=_1;this.top+=_2;if(this.drawingVML){this.$44u.style.left=this.left;this.$44u.style.top=this.top}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"x",this.left);this.$44z.setAttributeNS(null,"y",this.top)}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("moveBy",arguments);this.moved(_1,_2)}
+,isc.A.moveTo=function isc_DrawImage_moveTo(_1,_2){this.moveBy(_1-this.left,_2-this.top)}
+);isc.B._maxIndex=isc.C+20;isc.defineClass("DrawCurve","DrawItem");isc.A=isc.DrawCurve.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.startPoint=[0,0];isc.A.endPoint=[100,100];isc.A.controlPoint1=[100,0];isc.A.controlPoint2=[0,100];isc.A.svgElementName="path";isc.A.vmlElementName="curve";isc.A.lineCap="butt";isc.B.push(isc.A.init=function isc_DrawCurve_init(){this.Super("init")}
+,isc.A.$636=function isc_DrawCurve__getKnobPosition(_1){var x,y;x=this.endPoint[0]-this.startPoint[0];y=this.endPoint[1]-this.startPoint[1];return[x,y]}
+,isc.A.getCenter=function isc_DrawCurve_getCenter(){return[this.startPoint[0]+Math.round((this.endPoint[0]-this.startPoint[0])/2),this.startPoint[1]+Math.round((this.endPoint[1]-this.startPoint[1])/2)]}
+,isc.A.getAttributesVML=function isc_DrawCurve_getAttributesVML(){return isc.SB.concat("FROM='",this.startPoint[0]," ",this.startPoint[1],"' TO='",this.endPoint[0]," ",this.endPoint[1],"' CONTROL1='",this.controlPoint1[0]," ",this.controlPoint1[1],"' CONTROL2='",this.controlPoint2[0]," ",this.controlPoint2[1],"'")}
+,isc.A.getAttributesSVG=function isc_DrawCurve_getAttributesSVG(){return"d='"+this.getPathSVG()+"'"}
+,isc.A.getPathSVG=function isc_DrawCurve_getPathSVG(){return"M"+this.startPoint[0]+" "+this.startPoint[1]+"C"+this.controlPoint1[0]+" "+this.controlPoint1[1]+" "+this.controlPoint2[0]+" "+this.controlPoint2[1]+" "+this.endPoint[0]+" "+this.endPoint[1]}
+,isc.A.drawBitmapPath=function isc_DrawCurve_drawBitmapPath(_1){_1.moveTo(this.startPoint[0],this.startPoint[1]);_1.bezierCurveTo(this.controlPoint1[0],this.controlPoint1[1],this.controlPoint2[0],this.controlPoint2[1],this.endPoint[0],this.endPoint[1])}
+,isc.A.setStartPoint=function isc_DrawCurve_setStartPoint(_1,_2){if(_1!=null)this.startPoint[0]=_1;if(_2!=null)this.startPoint[1]=_2;if(this.drawingVML){this.$44u.from=this.startPoint[0]+" "+this.startPoint[1]}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"d",this.getPathSVG())}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.updateControlKnobs()}
+,isc.A.setEndPoint=function isc_DrawCurve_setEndPoint(_1,_2){if(_1!=null)this.endPoint[0]=_1;if(_2!=null)this.endPoint[1]=_2;if(this.drawingVML){this.$44u.to=this.endPoint[0]+" "+this.endPoint[1]}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"d",this.getPathSVG())}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.updateControlKnobs()}
+,isc.A.setControlPoint1=function isc_DrawCurve_setControlPoint1(_1,_2){if(_1!=null)this.controlPoint1[0]=_1;if(_2!=null)this.controlPoint1[1]=_2;if(this.drawingVML){this.$44u.control1=this.controlPoint1[0]+" "+this.controlPoint1[1]}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"d",this.getPathSVG())}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.updateControlKnobs()}
+,isc.A.setControlPoint2=function isc_DrawCurve_setControlPoint2(_1,_2){if(_1!=null)this.controlPoint2[0]=_1;if(_2!=null)this.controlPoint2[1]=_2;if(this.drawingVML){this.$44u.control2=this.controlPoint2[0]+" "+this.controlPoint2[1]}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"d",this.getPathSVG())}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.updateControlKnobs()}
+,isc.A.getBoundingBox=function isc_DrawCurve_getBoundingBox(){return[].concat(this.startPoint,this.endPoint)}
+,isc.A.showStartPointKnobs=function isc_DrawCurve_showStartPointKnobs(){this.$639=this.createAutoChild("startKnob",{_constructor:"DrawKnob",x:this.startPoint[0],y:this.startPoint[1],drawPane:this.drawPane,autoDraw:true});this.observe(this.$639,"updatePoints","observer.setStartPoint(x,y)")}
+,isc.A.hideStartPointKnobs=function isc_DrawCurve_hideStartPointKnobs(){if(this.$639){this.$639.destroy();delete this.$639}}
+,isc.A.showEndPointKnobs=function isc_DrawCurve_showEndPointKnobs(){this.$64a=this.createAutoChild("endKnob",{_constructor:"DrawKnob",x:this.endPoint[0],y:this.endPoint[1],drawPane:this.drawPane,autoDraw:true});this.observe(this.$64a,"updatePoints","observer.setEndPoint(x,y)")}
+,isc.A.hideEndPointKnobs=function isc_DrawCurve_hideEndPointKnobs(){if(this.$64a){this.$64a.destroy();delete this.$64a}}
+,isc.A.showControlPoint1Knobs=function isc_DrawCurve_showControlPoint1Knobs(){this.$64b=this.createAutoChild("c1Knob",{_constructor:"DrawKnob",x:this.controlPoint1[0],y:this.controlPoint1[1],drawPane:this.drawPane,autoDraw:true});this.$64c=this.createAutoChild("c1Line",{_constructor:"DrawLine",startLeft:this.startPoint[0],startTop:this.startPoint[1],endLeft:this.controlPoint1[0],endTop:this.controlPoint1[1],drawPane:this.drawPane,autoDraw:true});this.observe(this.$64b,"updatePoints","observer.setControlPoint1(x,y)")}
+,isc.A.hideControlPoint1Knobs=function isc_DrawCurve_hideControlPoint1Knobs(){if(this.$64b){this.$64b.destroy();delete this.$64b}
+if(this.$64c){this.$64c.erase();delete this.$64c}}
+,isc.A.showControlPoint2Knobs=function isc_DrawCurve_showControlPoint2Knobs(){this.$64d=this.createAutoChild("c2Knob",{_constructor:"DrawKnob",x:this.controlPoint2[0],y:this.controlPoint2[1],drawPane:this.drawPane,autoDraw:true});this.$64e=this.createAutoChild("c2Line",{_constructor:"DrawLine",startLeft:this.endPoint[0],startTop:this.endPoint[1],endLeft:this.controlPoint2[0],endTop:this.controlPoint2[1],drawPane:this.drawPane,autoDraw:true});this.observe(this.$64d,"updatePoints","observer.setControlPoint2(x,y)")}
+,isc.A.hideControlPoint2Knobs=function isc_DrawCurve_hideControlPoint2Knobs(){if(this.$64d){this.$64d.destroy();delete this.$64d}
+if(this.$64e){this.$64e.erase();delete this.$64e}}
+,isc.A.updateControlKnobs=function isc_DrawCurve_updateControlKnobs(){this.Super("updateControlKnobs",arguments);if(this.$639||this.$64c){var _1=this.startPoint[0],_2=this.startPoint[1];if(this.$64c)this.$64c.setStartPoint(_1,_2);if(this.$639){var _3=this.drawPane.drawing2screen([_1,_2,0,0]);this.$639.setCenterPoint(_3[0],_3[1])}}
+if(this.$64a||this.$64e){var _1=this.endPoint[0],_2=this.endPoint[1];if(this.$64e)this.$64e.setStartPoint(_1,_2);if(this.$64a){var _3=this.drawPane.drawing2screen([_1,_2,0,0]);this.$64a.setCenterPoint(_3[0],_3[1])}}
+if(this.$64b){var _1=this.controlPoint1[0],_2=this.controlPoint1[1];this.$64c.setEndPoint(_1,_2);var _3=this.drawPane.drawing2screen([_1,_2,0,0]);this.$64b.setCenterPoint(_3[0],_3[1])}
+if(this.$64d){var _1=this.controlPoint2[0],_2=this.controlPoint2[1];this.$64e.setEndPoint(_1,_2);var _3=this.drawPane.drawing2screen([_1,_2,0,0]);this.$64d.setCenterPoint(_3[0],_3[1])}}
+,isc.A.moveTo=function isc_DrawCurve_moveTo(_1,_2){this.moveBy(_1-this.startPoint[0],_2-this.startPoint[1])}
+,isc.A.moveBy=function isc_DrawCurve_moveBy(_1,_2){this.startPoint[0]+=_1;this.startPoint[1]+=_2;this.controlPoint1[0]+=_1;this.controlPoint1[1]+=_2;this.controlPoint2[0]+=_1;this.controlPoint2[1]+=_2;this.endPoint[0]+=_1;this.endPoint[1]+=_2;if(this.drawingVML){this.$44u.from=this.startPoint[0]+" "+this.startPoint[1];this.$44u.to=this.endPoint[0]+" "+this.endPoint[1];this.$44u.control1=this.controlPoint1[0]+" "+this.controlPoint1[1];this.$44u.control2=this.controlPoint2[0]+" "+this.controlPoint2[1]}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"d",this.getPathSVG())}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}
+this.Super("moveBy",arguments);this.moved(_1,_2)}
+);isc.B._maxIndex=isc.C+23;isc.defineClass("DrawBlockConnector","DrawCurve");isc.A=isc.DrawBlockConnector.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.startPoint=[0,0];isc.A.endPoint=[100,100];isc.A.controlPoint1=[100,0];isc.A.controlPoint2=[0,100];isc.A.svgElementName="path";isc.A.vmlElementName="curve";isc.B.push(isc.A.init=function isc_DrawBlockConnector_init(){this.Super("init")}
+,isc.A.getAttributesVML=function isc_DrawBlockConnector_getAttributesVML(){return"FROM='"+this.startPoint[0]+" "+this.startPoint[1]+"' TO='"+this.endPoint[0]+" "+this.endPoint[1]+"' CONTROL1='"+this.controlPoint1[0]+" "+this.controlPoint1[1]+"' CONTROL2='"+this.controlPoint2[0]+" "+this.controlPoint2[1]+"'"}
+,isc.A.getAttributesSVG=function isc_DrawBlockConnector_getAttributesSVG(){return"d='"+this.getPathSVG()+"'"}
+,isc.A.setStartPoint=function isc_DrawBlockConnector_setStartPoint(_1,_2){if(_1!=null)this.startPoint[0]=_1;if(_2!=null)this.startPoint[1]=_2;if(this.drawingVML){this.$44u.from=this.startPoint[0]+" "+this.startPoint[1]}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"d",this.getPathSVG())}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}}
+);isc.B._maxIndex=isc.C+4;isc.defineClass("DrawPath","DrawItem");isc.A=isc.DrawPath.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.points=[[0,0],[100,100]];isc.A.svgElementName="polyline";isc.A.vmlElementName="POLYLINE";isc.B.push(isc.A.getBoundingBox=function isc_DrawPath_getBoundingBox(){var _1=this.points[0],_2=[_1[0],_1[1]],_3=[_1[0],_1[1]],i;for(i=1;i<this.points.length;++i){_1=this.points[i];_2[0]=Math.min(_2[0],_1[0]);_2[1]=Math.min(_2[1],_1[1]);_3[0]=Math.max(_3[0],_1[0]);_3[1]=Math.max(_3[1],_1[1])}
+return[].concat(_2,_3)}
+,isc.A.getPointsText=function isc_DrawPath_getPointsText(){var _1=isc.SB.create(),_2=this.points;for(var i=0;i<_2.length;i++){_1.append(_2[i][0]," ",_2[i][1]);if(i<_2.length-1)_1.append(" ")}
+return _1.toString()}
+,isc.A.getAttributesVML=function isc_DrawPath_getAttributesVML(){return isc.SB.concat("STYLE='position:absolute; left:",this.left,"px; top:",this.top,"px; width:",this.width,"px; height:",this.height,"px;'"," POINTS='"+this.getPointsText()+"'")}
+,isc.A.getAttributesSVG=function isc_DrawPath_getAttributesSVG(){return"points='"+this.getPointsText()+"'"}
+,isc.A.drawBitmapPath=function isc_DrawPath_drawBitmapPath(_1){var _2=this.points;this.bmMoveTo(_2[0][0],_2[0][1],_1);for(var i=1;i<this.points.length;i++){var _4=_2[i];if(this.linePattern.toLowerCase()!=="solid"){this.$85x(_2[i-1][0],_2[i-1][1],_2[i][0],_2[i][1],_1)}else{this.bmLineTo(_4[0],_4[1],_1)}}}
+,isc.A.getCenter=function isc_DrawPath_getCenter(){var _1,i,x=0,y=0,_5=this.points.length;for(i=0;i<_5;++i){_1=this.points[i];x+=_1[0];y+=_1[1]}
+x=Math.round(x/ _5);y=Math.round(y/ _5);return[x,y]}
+,isc.A.setPoints=function isc_DrawPath_setPoints(_1){this.points=_1;if(this.drawingVML){this.$44u.points.value=this.getPointsText()}else if(this.drawingSVG){this.$44z.setAttributeNS(null,"points",this.getPointsText())}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}}
+,isc.A.moveTo=function isc_DrawPath_moveTo(_1,_2){var _3=_1-this.points[0][0];var _4=_2-this.points[0][1];this.moveBy(_3,_4)}
+,isc.A.moveBy=function isc_DrawPath_moveBy(_1,_2){if(this.getClass().getClassName()!=='DrawLinePath'){var _3,_4=this.points.length;for(var i=0;i<_4;++i){_3=this.points[i];_3[0]+=_1;_3[1]+=_2}
+if(this.drawingVML){this.$44u.points.value=this.getPointsText()}else if(this.drawingBitmap){this.drawPane.redrawBitmap()}}
+this.Super("moveBy",arguments)}
+);isc.B._maxIndex=isc.C+9;isc.defineClass("DrawTriangle","DrawPath");isc.A=isc.DrawTriangle.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.points=[[0,0],[50,50],[100,0]];isc.A.lineCap="butt";isc.A.svgElementName="path";isc.A.vmlElementName="POLYLINE";isc.B.push(isc.A.init=function isc_DrawTriangle_init(){this.Super("init")}
+,isc.A.getPointsText=function isc_DrawTriangle_getPointsText(){var _1=isc.SB.create(),_2=this.points;for(var i=0;i<_2.length;i++){_1.append(_2[i][0]," ",_2[i][1]," ")}
+_1.append(_2[0][0]," ",_2[0][1]);return _1.toString()}
+,isc.A.getAttributesSVG=function isc_DrawTriangle_getAttributesSVG(){var _1="d='M ",i,_3=this.points[0];_1+=_3[0]+" "+_3[1]+" ";for(i=1;i<this.points.length;++i){_3=this.points[i];_1+="L "+_3[0]+" "+_3[1]}
+_3=this.points[0];_1+="L "+_3[0]+" "+_3[1]+"'";return _1}
+,isc.A.drawBitmapPath=function isc_DrawTriangle_drawBitmapPath(_1){var _2=this.points;this.bmMoveTo(_2[0][0],_2[0][1],_1);for(var i=1;i<this.points.length;i++){var _4=_2[i];this.bmLineTo(_4[0],_4[1],_1)}
+this.bmLineTo(_2[0][0],_2[0][1],_1);_1.closePath()}
+,isc.A.dragStart=function isc_DrawTriangle_dragStart(_1,_2){var _3=this.getBoundingBox();var _4=_3[0]+(_3[2]-_3[0])/2;var _5=_3[1];var _6=this.drawPane.normalize(_1.x,_1.y);this.dragOffsetX=_6.x-this.drawPane.getPageLeft()-_4;this.dragOffsetY=_6.y-this.drawPane.getPageTop()-_5;return true}
+);isc.B._maxIndex=isc.C+5;isc.defineClass("DrawLinePath","DrawPath");isc.A=isc.DrawLinePath.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.startPoint=[0,0];isc.A.endPoint=[100,100];isc.A.tailSize=30;isc.A.startArrow=null;isc.A.endArrow="open";isc.A.showStartPointKnobs=isc.DrawLine.getPrototype().showStartPointKnobs;isc.A.hideStartPointKnobs=isc.DrawLine.getPrototype().hideStartPointKnobs;isc.A.showEndPointKnobs=isc.DrawLine.getPrototype().showEndPointKnobs;isc.A.hideEndPointKnobs=isc.DrawLine.getPrototype().hideEndPointKnobs;isc.A.updateControlKnobs=isc.DrawLine.getPrototype().updateControlKnobs;isc.B.push(isc.A.init=function isc_DrawLinePath_init(){this.startLeft=this.startLeft||this.startPoint[0];this.startTop=this.startTop||this.startPoint[1];this.endLeft=this.endLeft||this.endPoint[0];this.endTop=this.endTop||this.endPoint[1];this.points=this.$45e();this.Super("init")}
+,isc.A.$45e=function isc_DrawLinePath__getSegmentPoints(){var _1=this.tailSize;if(this.startLeft<=this.endLeft){_1=-_1}
+this.$45f=[];this.$45f.addList([[this.startLeft,this.startTop],[this.startLeft-_1,this.startTop],[this.endLeft+_1,this.endTop],[this.endLeft,this.endTop]]);return this.$45f}
+,isc.A.$63r=function isc_DrawLinePath__drawLineStartArrow(){return this.startArrow=="open"}
+,isc.A.$63s=function isc_DrawLinePath__drawLineEndArrow(){return this.endArrow=="open"}
+,isc.A.getCenter=function isc_DrawLinePath_getCenter(){return[this.startPoint[0]+Math.round((this.endPoint[0]-this.startPoint[0])/2),this.startPoint[1]+Math.round((this.endPoint[1]-this.startPoint[1])/2)]}
+,isc.A.dragStart=function isc_DrawLinePath_dragStart(_1,_2){var _3=this.getBoundingBox();var _4=_3[0];var _5=_3[1];var _6=this.drawPane.normalize(_1.x,_1.y);this.dragOffsetX=_6.x-this.drawPane.getPageLeft()-_4;this.dragOffsetY=_6.y-this.drawPane.getPageTop()-_5;return true}
+,isc.A.setStartPoint=function isc_DrawLinePath_setStartPoint(_1,_2){if(_1!=null){this.startLeft=this.startPoint[0]=_1}
+if(_2!=null){this.startTop=this.startPoint[1]=_2}
+this.setPoints(this.$45e());this.updateControlKnobs()}
+,isc.A.setEndPoint=function isc_DrawLinePath_setEndPoint(_1,_2){if(_1!=null){this.endLeft=this.endPoint[0]=_1}
+if(_2!=null){this.endTop=this.endPoint[1]=_2}
+this.setPoints(this.$45e());this.updateControlKnobs()}
+,isc.A.drawBitmapPath=function isc_DrawLinePath_drawBitmapPath(_1){var _2=10;if(this.startLeft>this.endLeft)_2=-_2;if(this.startArrow=="open"){this.bmMoveTo(this.startLeft+_2,this.startTop-_2,_1);this.bmLineTo(this.startLeft,this.startTop,_1);this.bmLineTo(this.startLeft+_2,this.startTop+_2,_1)}
+var _3=this.points;this.bmMoveTo(_3[0][0],_3[0][1],_1);for(var i=1;i<_3.length;i++){var _5=_3[i];if(this.linePattern.toLowerCase()!=="solid"){this.$85x(_3[i-1][0],_3[i-1][1],_3[i][0],_3[i][1],_1)}else{this.bmLineTo(_5[0],_5[1],_1)}}
+if(this.endArrow=="open"){this.bmMoveTo(this.endLeft-_2,this.endTop+_2,_1);this.bmLineTo(this.endLeft,this.endTop,_1);this.bmLineTo(this.endLeft-_2,this.endTop-_2,_1)}}
+,isc.A.getBoundingBox=function isc_DrawLinePath_getBoundingBox(){return[].concat(this.startPoint,this.endPoint)}
+,isc.A.moveBy=function isc_DrawLinePath_moveBy(_1,_2){this.startLeft+=_1;this.startPoint[0]+=_1;this.startTop+=_2;this.startPoint[1]+=_2;this.endLeft+=_1;this.endPoint[0]+=_1;this.endTop+=_2;this.endPoint[1]+=_2;this.setPoints(this.$45e());this.Super("moveBy",arguments);this.moved(_1,_2)}
+,isc.A.moveTo=function isc_DrawLinePath_moveTo(_1,_2){this.moveBy(_1-this.startLeft,_2-this.startTop);this.moved(_1,_2)}
+);isc.B._maxIndex=isc.C+12;isc.GraphMath={zeroPoint:[0,0],polar2screen:function(_1,_2,_3,_4){_3=_3||this.zeroPoint;var _5=Math.PI-((_1+450)%360)/180*Math.PI;var _6=[_3[0]+(_2*Math.cos(_5)),_3[1]+(-_2*Math.sin(_5))]
+if(_4){_6[0]=Math.round(_6[0]);_6[1]=Math.round(_6[1])}
+return _6},screen2polar:function(_1,_2){return[((Math.PI-Math.atan2(-_2,_1))/Math.PI*180+270)%360,Math.sqrt(Math.pow(_1,2)+Math.pow(_2,2))]},angleDifference:function(_1,_2){var _3=Math.max(_1,_2),_4=Math.min(_1,_2),_5=_3-_4,_6=_4+360-_3;if(_6<_5){var _7=_3==_1?1:-1;return _7*_6}else{var _7=_3==_1?-1:1;return _7*_5}},straightDistance:function(_1,_2){var _3=_1[0]-_2[0],_4=_1[1]-_2[1];return Math.sqrt(_3*_3+_4*_4)},trimLineEnds:function(_1,_2,_3,_4,_5,_6){var _7=Math.sqrt(Math.pow(_3-_1,2)+Math.pow(_4-_2,2));if(_5+_6>_7){var _8=_5/(_5+_6)*(_3-_1)+_1;var _9=_5/(_5+_6)*(_4-_2)+_2;return[_8+(_1==_3?0:_1>_3?0.01:-0.01),_9+(_2==_4?0:_2>_4?0.01:-0.01),_8+(_1==_3?0:_1>_3?-0.01:0.01),_9+(_2==_4?0:_2>_4?-0.01:0.01)]}
+var _10=Math.atan2(_2-_4,_3-_1);return[_1+(_5*Math.cos(_10)),_2-(_5*Math.sin(_10)),_3-(_6*Math.cos(_10)),_4+(_6*Math.sin(_10))]}}
+isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setCenter=function isc_Canvas_setCenter(_1,_2){this.moveTo(_1-this.getVisibleWidth()/2,_2-this.getVisibleHeight()/2)}
+,isc.A.getCenter=function isc_Canvas_getCenter(){return[this.getLeft()+this.getVisibleWidth()/2,this.getTop()+this.getVisibleHeight()/2]}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("LinkedList","Class");isc.A=isc.LinkedList.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.length=0;isc.B.push(isc.A.init=function isc_LinkedList_init(){this.head=null}
+,isc.A.add=function isc_LinkedList_add(_1){var _2={next:null,data:_1};if(!this.head){this.head=_2}else{var _3=this.head;while(_3.next){_3=_3.next}
+_3.next=_2}
+this.length++}
+,isc.A.get=function isc_LinkedList_get(_1){var _2=null;if(_1>=0&&_1<this.length){var _3=this.head,i=0;while(i++<_1){_3=_3&&_3.next}
+_2=_3.data}
+return _2}
+,isc.A.remove=function isc_LinkedList_remove(_1){var _2=null;if(_1>=0&&_1<this.length){var _3=this.head,i=0;if(_1===0){this.head=_3.next}else{var _5;while(i++<_1){_5=_3;_3=_3&&_3.next}
+_5.next=_3.next}
+_2=_3.data;this.length--}
+return _2}
+,isc.A.toArray=function isc_LinkedList_toArray(){var _1=[],_2=this.head;while(_2){_1.push(_2.data);_2=_2.next}
+return _1}
+);isc.B._maxIndex=isc.C+5;isc.defineClass("QuadTree","Class");isc.A=isc.QuadTree.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.depth=0;isc.A.maxDepth=0;isc.A.maxChildren=0;isc.B.push(isc.A.init=function isc_QuadTree_init(){this.root=null;this.bounds=null}
+,isc.A.insert=function isc_QuadTree_insert(_1){if(isc.isAn.Array(_1)){var _2=_1.length;for(var i=0;i<_2;i++){this.root.insert(_1[i])}}else{this.root.insert(_1)}}
+,isc.A.remove=function isc_QuadTree_remove(_1){this.root.remove(_1)}
+,isc.A.clear=function isc_QuadTree_clear(){this.root.clear()}
+,isc.A.retrieve=function isc_QuadTree_retrieve(_1){return this.root.retrieve(_1).slice()}
+,isc.A.update=function isc_QuadTree_update(_1){return this.root.update(_1)}
+);isc.B._maxIndex=isc.C+6;isc.defineClass("QuadTreeNode","Class");isc.A=isc.QuadTreeNode;isc.A.TOP_LEFT=0;isc.A.TOP_RIGHT=1;isc.A.BOTTOM_LEFT=2;isc.A.BOTTOM_RIGHT=3;isc.A=isc.QuadTreeNode.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.depth=0;isc.A.maxDepth=4;isc.A.maxChildren=4;isc.B.push(isc.A.init=function isc_QuadTreeNode_init(){this.bounds=null;this.nodes=[];this.children=isc.LinkedList.create()}
+,isc.A.insert=function isc_QuadTreeNode_insert(_1){if(this.nodes.length){var _2=this.findQuadrants(_1);for(var i=0;i<_2.length;++i){var _4=_2[i];this.nodes[_4].insert(_1)}
+return}
+this.children.add(_1);var _5=this.children.length;if(!(this.depth>=this.maxDepth)&&_5>this.maxChildren){this.subdivide();for(var i=0;i<_5;i++){this.insert(this.children.get(i))}
+this.children=isc.LinkedList.create()}}
+,isc.A.remove=function isc_QuadTreeNode_remove(_1){if(this.nodes.length){var _2=this.findQuadrants(_1);for(var i=0;i<_2.length;++i){var _4=_2[i];this.nodes[_4].remove(_1)}}
+for(var j=0;j<this.children.length;++j){var _6=this.children.get(j);if(_6===_1){this.children.remove(j)}}}
+,isc.A.retrieve=function isc_QuadTreeNode_retrieve(_1){if(this.nodes.length){var _2=this.findQuadrant(_1);return this.nodes[_2].retrieve(_1)}
+return this.children.toArray()}
+,isc.A.findQuadrant=function isc_QuadTreeNode_findQuadrant(_1){var b=this.bounds;var _3=(_1.x>b.x+b.width/ 2)?false:true;var _4=(_1.y>b.y+b.height/ 2)?false:true;var _5=isc.QuadTreeNode.TOP_LEFT;if(_3){if(!_4){_5=isc.QuadTreeNode.BOTTOM_LEFT}}else{if(_4){_5=isc.QuadTreeNode.TOP_RIGHT}else{_5=isc.QuadTreeNode.BOTTOM_RIGHT}}
+return _5}
+,isc.A.findQuadrants=function isc_QuadTreeNode_findQuadrants(_1){var _2=[];var _3={};var _4=this.findQuadrant({x:_1.x,y:_1.y});_2.push(_4);_3[_4]=true;_4=this.findQuadrant({x:_1.x+_1.width,y:_1.y+_1.height});if(!_3[_4]){_2.push(_4);_3[_4]=true}
+_4=this.findQuadrant({x:_1.x,y:_1.y+_1.height});if(!_3[_4]){_2.push(_4);_3[_4]=true}
+_4=this.findQuadrant({x:_1.x+_1.width,y:_1.y});if(!_3[_4]){_2.push(_4)}
+return _2}
+,isc.A.subdivide=function isc_QuadTreeNode_subdivide(){var _1=this.depth+1;var _2=this.bounds.x;var _3=this.bounds.y;var _4=(this.bounds.width/ 2)|0;var _5=(this.bounds.height/ 2)|0;var _6=_2+_4;var _7=_3+_5;this.nodes[isc.QuadTreeNode.TOP_LEFT]=isc.QuadTreeNode.create({depth:_1});this.nodes[isc.QuadTreeNode.TOP_LEFT].bounds={x:_2,y:_3,width:_4,height:_5};this.nodes[isc.QuadTreeNode.TOP_RIGHT]=isc.QuadTreeNode.create({depth:_1});this.nodes[isc.QuadTreeNode.TOP_RIGHT].bounds={x:_6,y:_3,width:_4,height:_5};this.nodes[isc.QuadTreeNode.BOTTOM_LEFT]=isc.QuadTreeNode.create({depth:_1});this.nodes[isc.QuadTreeNode.BOTTOM_LEFT].bounds={x:_2,y:_7,width:_4,height:_5};this.nodes[isc.QuadTreeNode.BOTTOM_RIGHT]=isc.QuadTreeNode.create({depth:_1});this.nodes[isc.QuadTreeNode.BOTTOM_RIGHT].bounds={x:_6,y:_7,width:_4,height:_5}}
+,isc.A.clear=function isc_QuadTreeNode_clear(){this.children=isc.LinkedList.create();var _1=this.nodes.length;for(var i=0;i<_1;i++){this.nodes[i].clear()}
+this.nodes=[];this.depth=0;this.maxDepth=4;this.maxChildren=4}
+,isc.A.update=function isc_QuadTreeNode_update(_1){this.remove(_1);this.insert(_1)}
+);isc.B._maxIndex=isc.C+9;isc.defineClass("DrawKnob","Canvas");isc.A=isc.DrawKnob.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.width=10;isc.A.height=10;isc.A.overflow="hidden";isc.A.cursor="crosshair";isc.A.canDrag=true;isc.A.dragAppearance="target";isc.A.dragMove="return this.$64f()";isc.A.dragStop="return this.$64f()";isc.A.dragAppearance="none";isc.A.keepInParentRect=true;isc.A.autoDraw=false;isc.A.knobShapeDefaults={_constructor:isc.DrawOval,radius:5,lineWidth:2,fillColor:"#FF0000",fillOpacity:0.5,autoDraw:true,updateControlKnobs:function(){return},erase:function(){if(this.erasing)return;this.erasing=true;if(this.creator.isDrawn())this.creator.clear();this.Super("erase",arguments);delete this.erasing}};isc.B.push(isc.A.initWidget=function isc_DrawKnob_initWidget(){this.left=this.x-this.width/ 2;this.top=this.y-this.height/ 2}
+,isc.A.setCenterPoint=function isc_DrawKnob_setCenterPoint(_1,_2,_3){if(isc.isAn.Array(_1)){_2=_1[1];_1=_1[0]}
+var _4,_5;if(_3){var _6=this.drawPane.drawing2screen([_1-this.$44g/ 2,_2-this.$44h/ 2,0,0]);_4=_6[0],_5=_6[1]}else{_4=_1-this.width/ 2;_5=_2-this.height/ 2}
+this.moveTo(_4,_5)}
+,isc.A.draw=function isc_DrawKnob_draw(){var _1=(this.$907);if(!this.knobShape){this.knobShape=this.createAutoChild("knobShape",{drawPane:this.drawPane,centerPoint:[this.x,this.y]});this.$907=true;;this.drawPane.addCanvasItem(this);delete this.$907}
+if(!_1)return this.Super("draw",arguments)}
+,isc.A.moved=function isc_DrawKnob_moved(){if(!this.synchingToPane)this.updateKnobShape()}
+,isc.A.$64f=function isc_DrawKnob__updatePoints(){var _1=isc.EH.getX()-
+(this.drawPane.getPageLeft()+this.drawPane.getLeftMargin()+this.drawPane.getLeftBorderSize()),_2=isc.EH.getY()-
+(this.drawPane.getPageTop()+this.drawPane.getTopMargin()+this.drawPane.getTopBorderSize());var _3=this.drawPane.screen2drawing([_1,_2,0,0]);var _4=_3[0],_5=_3[1],_6=_4-(this.$44e+this.$44g/ 2),_7=_5-(this.$44f+this.$44h/ 2);this.updatePoints(_4,_5,_6,_7)}
+,isc.A.updateKnobShape=function isc_DrawKnob_updateKnobShape(){var _1=this.drawPane.screen2drawing([this.getLeft()+this.getWidth()/2,this.getTop()+this.getHeight()/2,0,0]);var x=_1[0],y=_1[1],_4=x-this.$44g/ 2,_5=y-this.$44h/ 2;this.$44e=_4,this.$44f=_5;this.knobShape.setCenterPoint(x,y)}
+,isc.A.updatePoints=function(x,y,dX,dY){}
+,isc.A.clear=function isc_DrawKnob_clear(){this.Super("clear",arguments);this.knobShape.erase()}
+);isc.B._maxIndex=isc.C+8;isc.DrawKnob.registerStringMethods({updatePoints:"x,y,dX,dY"});isc._moduleEnd=isc._Drawing_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Drawing module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Drawing'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Drawing.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Drawing.js.gz
new file mode 100755
index 0000000..bc2b762
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Drawing.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DSBrowser.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DSBrowser.js
new file mode 100755
index 0000000..92e5f6e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DSBrowser.js
@@ -0,0 +1,57 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_DSBrowser){isc.module_DSBrowser=1;isc._moduleStart=isc._DSBrowser_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'DSBrowser load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.defineClass("DSRegistryList","ListGrid");isc.A=isc.DSRegistryList.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dataSource="RepoRegistry";isc.B.push(isc.A.initWidget=function isc_DSRegistryList_initWidget(){this.Super("initWidget",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("DSList","ListGrid");isc.A=isc.DSList.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_DSList_initWidget(){this.Super("initWidget",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("DSBrowser","VLayout");isc.A=isc.DSBrowser;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.showWindow=function isc_c_DSBrowser_showWindow(_1,_2){isc.Window.create({title:"DS Builder",width:"100%",height:"100%",canDragReposition:false,closeClick:function(){this.destroy()},items:[isc.DSBrowser.create({autoDraw:false},_2)]},_1).show()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.DSBrowser.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dsRegistryListDefaults={_constructor:"DSRegistryList",height:150,autoFetchData:true,canHover:true,defaultFields:[{name:"ID",title:"Name"}],recordClick:"this.creator.dsRegistryChanged(record)"};isc.A.dsRegistryListRefreshButtonDefaults={_constructor:"Img",size:16,src:"[SKIN]/actions/refresh.png",click:"this.creator.dsRegistryList.invalidateCache()"};isc.A.dsListDefaults={_constructor:"DSList",canHover:true,showFilterEditor:true,defaultFields:[{name:"ID",title:"Name"}],recordClick:"this.creator.dsChanged(record)"};isc.A.dsListAddButtonDefaults={_constructor:"Img",size:16,src:"[SKIN]/actions/add.png",click:"this.creator.dsList.startEditingNew()"};isc.A.dsListRemoveButtonDefaults={_constructor:"Img",size:16,src:"[SKIN]/actions/remove.png",click:"this.creator.dsList.removeSelectedData()"};isc.A.dsListRefreshButtonDefaults={_constructor:"Img",size:16,src:"[SKIN]/actions/refresh.png",click:"this.creator.dsList.invalidateCache()"};isc.A.leftSectionDefaults={_constructor:"SectionStack",headerHeight:25,width:300,showResizeBar:true,animateSections:isc.Browser.isSafari,visibilityMode:"visible",autoParent:"mainLayout"};isc.A.mainLayoutDefaults={_constructor:"HLayout",height:"*"};isc.A.rightPaneDefaults={_constructor:"TabSet",tabs:[{name:"welcome",title:"Welcome",ID:"dsb_welcome_tab",canClose:true,pane:isc.Label.create({height:10,autoDraw:false,overflow:"visible",contents:"Select a datasource registry on the left..."})}]};isc.A.autoChildren=["mainLayout"];isc.A.dsRegistryPaneDefaults={_constructor:"DSRegistryPane"};isc.B.push(isc.A.initWidget=function isc_DSBrowser_initWidget(){this.Super("initWidget",arguments);this.dsRegistryList=this.createAutoChild("dsRegistryList");this.dsRegistryListRefreshButton=this.createAutoChild("dsRegistryListRefreshButton");this.dsList=this.createAutoChild("dsList");this.dsListAddButton=this.createAutoChild("dsListAddButton");this.dsListRemoveButton=this.createAutoChild("dsListRemoveButton");this.dsListRefreshButton=this.createAutoChild("dsListRefreshButton");this.leftSection=this.createAutoChild("leftSection",{sections:[{name:"registries",title:"DataSource Registries",expanded:true,controls:[this.dsRegistryListRefreshButton],items:[this.dsRegistryList]},{name:"datasources",title:"DataSources",expanded:true,controls:[this.dsListAddButton,this.dsListRemoveButton,this.dsListRefreshButton],items:[this.dsList]}]});this.addAutoChildren(this.autoChildren);this.mainLayout.addMember(this.leftSection);this.rightPane=this.createAutoChild("rightPane");this.mainLayout.addMember(this.rightPane)}
+,isc.A.dsRegistryChanged=function isc_DSBrowser_dsRegistryChanged(_1){this.currentRegistry=_1;isc.DMI.call("isc_builtin","com.isomorphic.tools.BuiltinRPC","dsFromXML",_1.object,this.getID()+".dsLoaded(data)")}
+,isc.A.dsLoaded=function isc_DSBrowser_dsLoaded(_1){this.currentDS=_1;this.showDSRegistryPane();this.dsList.setDataSource(_1);this.dsList.setFields([{name:"ID",title:"Name"}]);this.dsList.filterData()}
+,isc.A.showDSRegistryPane=function isc_DSBrowser_showDSRegistryPane(){var _1=this.currentRegistry;this.showPane({ID:this.escapeForId("registryPane_"+_1.ID),title:_1.ID,paneClass:"dsRegistryPane"},_1)}
+,isc.A.dsChanged=function isc_DSBrowser_dsChanged(_1){this.currentDS=_1;this.showDSPane()}
+,isc.A.showDSPane=function isc_DSBrowser_showDSPane(){var _1=this.currentDS;this.showDSRegistryPane();var _2={};isc.addProperties(_2,_1,{registry:isc.clone(this.currentRegistry)});this.currentPane.showDSPane(_2)}
+,isc.A.escapeForId=function isc_DSBrowser_escapeForId(_1){return isc.isA.String(_1)?_1.replace(/(\/|\.)/g,'_'):_1}
+,isc.A.showPane=function isc_DSBrowser_showPane(_1,_2){var _3=this.rightPane.getTab(_1.ID);if(_3){this.currentPane=_3.pane;this.rightPane.selectTab(_3);return}
+_3={};isc.addProperties(_3,_1,{canClose:true,pane:this.createAutoChild(_1.paneClass,{config:_2})});var _4=this.rightPane.getTab(0);if(_4&&_4.name=="welcome")this.rightPane.removeTab(0);this.rightPane.addTab(_3);this.rightPane.selectTab(_3);this.currentPane=_3.pane}
+);isc.B._maxIndex=isc.C+8;isc.defineClass("DSRegistryPane","TabSet");isc.A=isc.DSRegistryPane.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dsPaneDefaults={_constructor:"DSEditor"};isc.B.push(isc.A.initWidget=function isc_DSRegistryPane_initWidget(){this.Super("initWidget",arguments)}
+,isc.A.showDSPane=function isc_DSRegistryPane_showDSPane(_1){var _2=this.escapeForId("dsPane_"+this.config.ID+'_'+_1.ID);this.showPane({ID:_2,title:_1.ID,paneClass:"dsPane"},_1)}
+,isc.A.escapeForId=function isc_DSRegistryPane_escapeForId(_1){return isc.isA.String(_1)?_1.replace(/(\/|\.)/g,'_'):_1}
+,isc.A.showPane=function isc_DSRegistryPane_showPane(_1,_2){var _3=this.getTab(_1.ID);if(_3){this.selectTab(_3);return}
+_3={};isc.addProperties(_3,_1,{canClose:true,pane:this.createAutoChild(_1.paneClass,{config:_2})});this.addTab(_3);this.selectTab(_3);this.currentPane=_3.pane}
+);isc.B._maxIndex=isc.C+4;isc.defineClass("DSEditor","SectionStack");isc.A=isc.DSEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.visibilityMode="visible";isc.A.fieldGridDefaults={_constructor:"ListGrid",canReorderRecords:true,canDragRecordsOut:false,canEdit:true,autoSaveEdits:true};isc.A.fieldGridAddButtonDefaults={_constructor:"Img",size:16,src:"[SKIN]/actions/add.png",click:"this.creator.fieldGrid.startEditingNew()"};isc.A.fieldGridRemoveButtonDefaults={_constructor:"Img",size:16,src:"[SKIN]/actions/remove.png",click:"this.creator.fieldGrid.removeSelectedData()"};isc.A.fieldGridRefreshButtonDefaults={_constructor:"Img",size:16,src:"[SKIN]/actions/refresh.png",click:"this.creator.fieldGrid.invalidateCache()"};isc.A.deriveFormDefaults={_constructor:"DynamicForm"};isc.A.dbListDefaults={_constructor:"DBCompactList"};isc.A.showSQLBrowserButtonDefaults={_constructor:"IButton",title:"Show SQL Browser",width:150,click:function(){isc.SQLBrowser.showWindow({width:"95%",height:"95%",isModal:true,autoCenter:true})}};isc.A.fetchOperationFormDefaults={_constructor:"DynamicForm",fields:[{name:"selectClause",title:"SELECT",formItemType:"AutoFitTextAreaItem",height:10,width:"*",colSpan:"*",defaultValue:"*"},{name:"tableClause",title:"FROM",formItemType:"AutoFitTextAreaItem",height:10,width:"*",colSpan:"*",defaultValue:""},{name:"whereClause",title:"WHERE",formItemType:"AutoFitTextAreaItem",height:10,width:"*",colSpan:"*",defaultValue:"$defaultWhereClause"},{name:"groupClause",title:"GROUP BY",formItemType:"AutoFitTextAreaItem",height:10,width:"*",colSpan:"*",defaultValue:"$defaultGroupClause"},{name:"orderClause",title:"ORDER BY",formItemType:"AutoFitTextAreaItem",height:10,width:"*",colSpan:"*",defaultValue:"$defaultOrderClause"}]};isc.A.actionBarDefaults={_constructor:"HLayout",height:20};isc.A.tryButtonDefaults={_constructor:"IButton",title:"Try it",click:"this.creator.tryIt()",autoParent:"actionBar"};isc.A.saveButtonDefaults={_constructor:"IButton",title:"Save",click:"this.creator.saveDS()",autoParent:"actionBar"};isc.A.previewGridDefaults={_constructor:"ListGrid",showFilterEditor:true};isc.B.push(isc.A.initWidget=function isc_DSEditor_initWidget(){this.Super("initWidget",arguments);this.fieldGrid=this.createAutoChild("fieldGrid",{fields:[{name:"title",title:"Title"},{name:"name",title:"Name"},{name:"width",title:"Width"},{name:"height",title:"Height"},{name:"operator",title:"Operator",valueMap:["equals","notEqual","greaterThan","lessThan","greaterOrEqual","lessOrEqual","contains","startsWith","endsWith","iContains","iStartsWith","iEndsWith","notContains","notStartsWith","notEndsWith","iNotContains","iNotStartsWith","iNotEndsWith","regexp","iregexp","isNull","notNull","inSet","notInSet","equalsField","notEqualField","and","not","or","between","betweenInclusive"]},{name:"formItemType",title:"Form Item Type"},{name:"tableName",title:"Table Name"},{name:"type",title:"Type"}]});this.fieldGridAddButton=this.createAutoChild("fieldGridAddButton");this.fieldGridRemoveButton=this.createAutoChild("fieldGridRemoveButton");this.addSection({ID:"fields",title:"Fields",expanded:true,items:[this.fieldGrid],controls:[this.fieldGridAddButton,this.fieldGridRemoveButton]});var _1=this;this.deriveForm=this.createAutoChild("deriveForm",{fields:[{name:"sql",showTitle:false,formItemType:"AutoFitTextAreaItem",width:"*",height:40,colSpan:"*",keyPress:function(_2,_3,_4){if(_4=='Enter'&&isc.EH.ctrlKeyDown()){if(isc.Browser.isSafari)_2.setValue(_2.getElementValue());_1.execSQL();if(isc.Browser.isSafari)return false}}},{type:"button",title:"Execute",startRow:true,click:this.getID()+".execSQL()"}]});this.dbList=this.createAutoChild("dbList");this.showSQLBrowserButton=this.createAutoChild("showSQLBrowserButton");this.addSection({ID:"derive",title:"Derive Fields From SQL",expanded:false,items:[this.deriveForm],controls:[this.dbList,this.showSQLBrowserButton]});this.fetchOperationForm=this.createAutoChild("fetchOperationForm");this.addSection({ID:"fetchOperation",title:"Fetch Operation",expanded:true,items:[this.fetchOperationForm]});this.actionBar=this.createAutoChild("actionBar");this.addSection({ID:"actionBar",showHeader:false,expanded:true,items:[this.actionBar]});this.addAutoChildren(["tryButton","saveButton"]);this.previewGrid=this.createAutoChild("previewGrid");this.addSection({ID:"preview",title:"Preview",items:[this.previewGrid]});this.loadDS(this.config)}
+,isc.A.execSQL=function isc_DSEditor_execSQL(){var _1=this.deriveForm.getValue("sql");if(_1){_1=_1.trim().replace(/(.*);+/,"$1");var _2=isc.DataSource.get("DataSourceStore");_2.performCustomOperation("dsFromSQL",{dbName:this.dbList.getSelectedDB(),sql:_1},this.getID()+".deriveDSLoaded(data)")}}
+,isc.A.deriveDSLoaded=function isc_DSEditor_deriveDSLoaded(_1){var _2=_1.ds;this.dsLoaded(_1.ds)}
+,isc.A.loadDS=function isc_DSEditor_loadDS(_1){this.currentRegistry=_1;isc.DMI.call("isc_builtin","com.isomorphic.tools.BuiltinRPC","dsConfigFromXML",_1.object,this.getID()+".dsLoaded(data)")}
+,isc.A.dsLoaded=function isc_DSEditor_dsLoaded(_1){var _2=isc.DataSource.create(_1);this.currentDS=_2;_2.repo=this.config.registry.ID;this.deriveFields(_2);this.previewGrid.setDataSource(_2);if(_2.dbName)this.dbList.setSelectedDB(_2.dbName);var _3=_2.operationBindings;if(_3&&_3.length>0){this.fetchOperationForm.setValues(_3[0])}}
+,isc.A.deriveFields=function isc_DSEditor_deriveFields(_1){var _2=_1.getFieldNames();var _3=[];for(var i=0;i<_2.length;i++){var _5=_2[i]
+var _6={};var _7=_1.getField(_5);for(var _8 in _7){if(isc.isA.String(_8)&&_8.startsWith("_"))continue;_6[_8]=_7[_8]}
+_3.add(_6)}
+this.fieldGrid.setData(_3)}
+,isc.A.tryIt=function isc_DSEditor_tryIt(){var _1=this.buildDSConfig(this.config.ID+"$71x");var _2=isc.DataSource.get("DataSourceStore");_2.performCustomOperation("dsFromConfig",{config:_1},this.getID()+".tryItCallback(data)")}
+,isc.A.tryItCallback=function isc_DSEditor_tryItCallback(_1){this.expandSection("preview");this.previewGrid.setDataSource(_1.ds);this.previewGrid.filterData()}
+,isc.A.saveDS=function isc_DSEditor_saveDS(){var _1=this.buildDSConfig(this.config.ID);var _2=isc.DataSource.get("DataSourceStore");_2.performCustomOperation("dsFromConfig",{config:_1},this.getID()+".xmlLoaded(data)")}
+,isc.A.xmlLoaded=function isc_DSEditor_xmlLoaded(_1){var _2=isc.DataSource.get(this.config.registry.ID);_2.updateData({pk:this.config.pk,object:_1.dsXML})}
+,isc.A.buildDSConfig=function isc_DSEditor_buildDSConfig(_1){var _2={ID:_1,serverType:"sql",dbName:this.dbList.getSelectedDB(),__autoConstruct:"DataSource",operationBindings:[isc.addProperties({operationType:"fetch",skipRowCount:"true",qualifyColumnNames:false},this.fetchOperationForm.getValues())],fields:this.fieldGrid.data};return _2}
+);isc.B._maxIndex=isc.C+11;isc._moduleEnd=isc._DSBrowser_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('DSBrowser module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'DSBrowser'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DSBrowser.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DSBrowser.js.gz
new file mode 100755
index 0000000..45e5f56
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_DSBrowser.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_EBay.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_EBay.js
new file mode 100755
index 0000000..dc65165
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_EBay.js
@@ -0,0 +1,46 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_EBay){isc.module_EBay=1;isc._moduleStart=isc._EBay_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'EBay load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.SchemaSet.create({serviceNamespace:"urn:ebay:apis:eBLBaseComponents",schemaNamespace:"urn:ebay:apis:eBLBaseComponents",qualifyAll:true,schema:[isc.XSElement.create({mustQualify:true,inheritsFrom:"CustomSecurityHeaderType",fields:{},ID:"RequesterCredentials"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddDisputeRequestType",fields:{},ID:"AddDisputeRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{DisputeExplanation:{name:"DisputeExplanation",type:"DisputeExplanationCodeType",xmlRequired:false},DisputeReason:{name:"DisputeReason",type:"DisputeReasonCodeType",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false}},ID:"AddDisputeRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddDisputeResponseType",fields:{},ID:"AddDisputeResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{DisputeID:{name:"DisputeID",type:"DisputeIDType",xmlRequired:false}},ID:"AddDisputeResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddDisputeResponseRequestType",fields:{},ID:"AddDisputeResponseRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{DisputeID:{name:"DisputeID",type:"DisputeIDType",xmlRequired:false},MessageText:{name:"MessageText",type:"string",xmlRequired:false},DisputeActivity:{name:"DisputeActivity",type:"DisputeActivityCodeType",xmlRequired:false},ShippingCarrierUsed:{name:"ShippingCarrierUsed",type:"string",xmlRequired:false},ShipmentTrackNumber:{name:"ShipmentTrackNumber",type:"string",xmlRequired:false},ShippingTime:{name:"ShippingTime",type:"dateTime",xmlRequired:false}},ID:"AddDisputeResponseRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddDisputeResponseResponseType",fields:{},ID:"AddDisputeResponseResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"AddDisputeResponseResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddItemRequestType",fields:{},ID:"AddItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false}},ID:"AddItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddItemResponseType",fields:{},ID:"AddItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false},Fees:{name:"Fees",type:"FeesType",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},Category2ID:{name:"Category2ID",type:"string",xmlRequired:false}},ID:"AddItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddLiveAuctionItemRequestType",fields:{},ID:"AddLiveAuctionItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false}},ID:"AddLiveAuctionItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddLiveAuctionItemResponseType",fields:{},ID:"AddLiveAuctionItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},Fees:{name:"Fees",type:"FeesType",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},Category2ID:{name:"Category2ID",type:"string",xmlRequired:false}},ID:"AddLiveAuctionItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddMemberMessageAAQToPartnerRequestType",fields:{},ID:"AddMemberMessageAAQToPartnerRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},MemberMessage:{name:"MemberMessage",type:"MemberMessageType",xmlRequired:false}},ID:"AddMemberMessageAAQToPartnerRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddMemberMessageAAQToPartnerResponseType",fields:{},ID:"AddMemberMessageAAQToPartnerResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"AddMemberMessageAAQToPartnerResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddMemberMessageRTQRequestType",fields:{},ID:"AddMemberMessageRTQRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},MemberMessage:{name:"MemberMessage",type:"MemberMessageType",xmlRequired:false}},ID:"AddMemberMessageRTQRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddMemberMessageRTQResponseType",fields:{},ID:"AddMemberMessageRTQResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"AddMemberMessageRTQResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddMemberMessagesAAQToBidderRequestType",fields:{},ID:"AddMemberMessagesAAQToBidderRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AddMemberMessagesAAQToBidderRequestContainer:{name:"AddMemberMessagesAAQToBidderRequestContainer",type:"AddMemberMessagesAAQToBidderRequestContainerType",xmlRequired:false}},ID:"AddMemberMessagesAAQToBidderRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddMemberMessagesAAQToBidderResponseType",fields:{},ID:"AddMemberMessagesAAQToBidderResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{AddMemberMessagesAAQToBidderResponseContainer:{name:"AddMemberMessagesAAQToBidderResponseContainer",type:"AddMemberMessagesAAQToBidderResponseContainerType",xmlRequired:false}},ID:"AddMemberMessagesAAQToBidderResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddOrderRequestType",fields:{},ID:"AddOrderRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Order:{name:"Order",type:"OrderType",xmlRequired:false}},ID:"AddOrderRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddOrderResponseType",fields:{},ID:"AddOrderResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{OrderID:{name:"OrderID",type:"OrderIDType",xmlRequired:false},CreatedTime:{name:"CreatedTime",type:"dateTime",xmlRequired:false}},ID:"AddOrderResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddSecondChanceItemRequestType",fields:{},ID:"AddSecondChanceItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{RecipientBidderUserID:{name:"RecipientBidderUserID",type:"UserIDType",xmlRequired:false},BuyItNowPrice:{name:"BuyItNowPrice",type:"AmountType",xmlRequired:false},Duration:{name:"Duration",type:"SecondChanceOfferDurationCodeType",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},SellerMessage:{name:"SellerMessage",type:"string",xmlRequired:false}},ID:"AddSecondChanceItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddSecondChanceItemResponseType",fields:{},ID:"AddSecondChanceItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false}},ID:"AddSecondChanceItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddToItemDescriptionRequestType",fields:{},ID:"AddToItemDescriptionRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false}},ID:"AddToItemDescriptionRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddToItemDescriptionResponseType",fields:{},ID:"AddToItemDescriptionResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"AddToItemDescriptionResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddToWatchListRequestType",fields:{},ID:"AddToWatchListRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false}},ID:"AddToWatchListRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddToWatchListResponseType",fields:{},ID:"AddToWatchListResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{WatchListCount:{name:"WatchListCount",type:"int",xmlRequired:false},WatchListMaximum:{name:"WatchListMaximum",type:"int",xmlRequired:false}},ID:"AddToWatchListResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddTransactionConfirmationItemRequestType",fields:{},ID:"AddTransactionConfirmationItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{RecipientUserID:{name:"RecipientUserID",type:"UserIDType",xmlRequired:true},VerifyEligibilityOnly:{name:"VerifyEligibilityOnly",type:"string",xmlRequired:true},RecipientPostalCode:{name:"RecipientPostalCode",type:"string",xmlRequired:true},RecipientRelationType:{name:"RecipientRelationType",type:"RecipientRelationCodeType",xmlRequired:true},NegotiatedPrice:{name:"NegotiatedPrice",type:"AmountType",xmlRequired:true},ListingDuration:{name:"ListingDuration",type:"SecondChanceOfferDurationCodeType",xmlRequired:true},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:true},Comments:{name:"Comments",type:"string",xmlRequired:true}},ID:"AddTransactionConfirmationItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"AddTransactionConfirmationItemResponseType",fields:{},ID:"AddTransactionConfirmationItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false}},ID:"AddTransactionConfirmationItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ApproveLiveAuctionBiddersRequestType",fields:{},ID:"ApproveLiveAuctionBiddersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{UserCatalogID:{name:"UserCatalogID",type:"int",xmlRequired:false},BidApproval:{name:"BidApproval",type:"BidApprovalArrayType",xmlRequired:false},ApproveAllPending:{name:"ApproveAllPending",type:"boolean",xmlRequired:false},AllApprovedBiddingLimit:{name:"AllApprovedBiddingLimit",type:"AmountType",xmlRequired:false}},ID:"ApproveLiveAuctionBiddersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ApproveLiveAuctionBiddersResponseType",fields:{},ID:"ApproveLiveAuctionBiddersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{BidderUpdateStatus:{name:"BidderUpdateStatus",type:"LiveAuctionApprovalStatusArrayType",xmlRequired:false}},ID:"ApproveLiveAuctionBiddersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"CompleteSaleRequestType",fields:{},ID:"CompleteSaleRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},FeedbackInfo:{name:"FeedbackInfo",type:"FeedbackInfoType",xmlRequired:false},Shipped:{name:"Shipped",type:"boolean",xmlRequired:false},Paid:{name:"Paid",type:"boolean",xmlRequired:false},ListingType:{name:"ListingType",type:"ListingTypeCodeType",xmlRequired:false}},ID:"CompleteSaleRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"CompleteSaleResponseType",fields:{},ID:"CompleteSaleResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"CompleteSaleResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"DeleteMyMessagesRequestType",fields:{},ID:"DeleteMyMessagesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AlertIDs:{name:"AlertIDs",type:"MyMessagesAlertIDArrayType",xmlRequired:false},MessageIDs:{name:"MessageIDs",type:"MyMessagesMessageIDArrayType",xmlRequired:false}},ID:"DeleteMyMessagesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"DeleteMyMessagesResponseType",fields:{},ID:"DeleteMyMessagesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"DeleteMyMessagesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"EndItemRequestType",fields:{},ID:"EndItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},EndingReason:{name:"EndingReason",type:"EndReasonCodeType",xmlRequired:false},SellerInventoryID:{name:"SellerInventoryID",type:"string",xmlRequired:false}},ID:"EndItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"EndItemResponseType",fields:{},ID:"EndItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false}},ID:"EndItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"FetchTokenRequestType",fields:{},ID:"FetchTokenRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{SecretID:{name:"SecretID",type:"string",xmlRequired:false}},ID:"FetchTokenRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"FetchTokenResponseType",fields:{},ID:"FetchTokenResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{eBayAuthToken:{name:"eBayAuthToken",type:"string",xmlRequired:false},HardExpirationTime:{name:"HardExpirationTime",type:"dateTime",xmlRequired:false}},ID:"FetchTokenResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAccountRequestType",fields:{},ID:"GetAccountRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AccountHistorySelection:{name:"AccountHistorySelection",type:"AccountHistorySelectionCodeType",xmlRequired:false},InvoiceDate:{name:"InvoiceDate",type:"dateTime",xmlRequired:false},BeginDate:{name:"BeginDate",type:"dateTime",xmlRequired:false},EndDate:{name:"EndDate",type:"dateTime",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false},ExcludeBalance:{name:"ExcludeBalance",type:"boolean",xmlRequired:false},ExcludeSummary:{name:"ExcludeSummary",type:"boolean",xmlRequired:false},AccountEntrySortType:{name:"AccountEntrySortType",type:"AccountEntrySortTypeCodeType",xmlRequired:false},Currency:{name:"Currency",type:"CurrencyCodeType",xmlRequired:false}},ID:"GetAccountRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAccountResponseType",fields:{},ID:"GetAccountResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{AccountID:{name:"AccountID",type:"string",xmlRequired:false},AccountSummary:{name:"AccountSummary",type:"AccountSummaryType",xmlRequired:false},Currency:{name:"Currency",type:"CurrencyCodeType",xmlRequired:false},AccountEntries:{name:"AccountEntries",type:"AccountEntriesType",xmlRequired:false},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},HasMoreEntries:{name:"HasMoreEntries",type:"boolean",xmlRequired:false},EntriesPerPage:{name:"EntriesPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false}},ID:"GetAccountResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAdFormatLeadsRequestType",fields:{},ID:"GetAdFormatLeadsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},Status:{name:"Status",type:"MessageStatusTypeCodeType",xmlRequired:false},IncludeMemberMessages:{name:"IncludeMemberMessages",type:"boolean",xmlRequired:false}},ID:"GetAdFormatLeadsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAdFormatLeadsResponseType",fields:{},ID:"GetAdFormatLeadsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{AdFormatLead:{name:"AdFormatLead",type:"AdFormatLeadType",xmlRequired:false},AdFormatLeadCount:{name:"AdFormatLeadCount",type:"int",xmlRequired:false}},ID:"GetAdFormatLeadsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAllBiddersRequestType",fields:{},ID:"GetAllBiddersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},CallMode:{name:"CallMode",type:"GetAllBiddersModeCodeType",xmlRequired:false},IncludeBiddingSummary:{name:"IncludeBiddingSummary",type:"boolean",xmlRequired:false}},ID:"GetAllBiddersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAllBiddersResponseType",fields:{},ID:"GetAllBiddersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{BidArray:{name:"BidArray",type:"OfferArrayType",xmlRequired:false},HighBidder:{name:"HighBidder",type:"UserIDType",xmlRequired:false},HighestBid:{name:"HighestBid",type:"AmountType",xmlRequired:false},ListingStatus:{name:"ListingStatus",type:"ListingStatusCodeType",xmlRequired:false}},ID:"GetAllBiddersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetApiAccessRulesRequestType",fields:{},ID:"GetApiAccessRulesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GetApiAccessRulesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetApiAccessRulesResponseType",fields:{},ID:"GetApiAccessRulesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ApiAccessRule:{name:"ApiAccessRule",type:"ApiAccessRuleType",xmlRequired:false}},ID:"GetApiAccessRulesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAttributesCSRequestType",fields:{},ID:"GetAttributesCSRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AttributeSystemVersion:{name:"AttributeSystemVersion",type:"string",xmlRequired:false},AttributeSetID:{name:"AttributeSetID",type:"int",xmlRequired:false},IncludeCategoryMappingDetails:{name:"IncludeCategoryMappingDetails",type:"boolean",xmlRequired:false},DigitalDelivery:{name:"DigitalDelivery",type:"boolean",xmlRequired:false}},ID:"GetAttributesCSRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAttributesCSResponseType",fields:{},ID:"GetAttributesCSResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{AttributeSystemVersion:{name:"AttributeSystemVersion",type:"string",xmlRequired:false},AttributeData:{name:"AttributeData",type:"string",xmlRequired:false}},ID:"GetAttributesCSResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAttributesXSLRequestType",fields:{},ID:"GetAttributesXSLRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{FileName:{name:"FileName",type:"string",xmlRequired:false},FileVersion:{name:"FileVersion",type:"string",xmlRequired:false}},ID:"GetAttributesXSLRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetAttributesXSLResponseType",fields:{},ID:"GetAttributesXSLResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{XSLFile:{name:"XSLFile",type:"XSLFileType",xmlRequired:false}},ID:"GetAttributesXSLResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetBestOffersRequestType",fields:{},ID:"GetBestOffersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},BestOfferID:{name:"BestOfferID",type:"BestOfferIDType",xmlRequired:false},BestOfferStatus:{name:"BestOfferStatus",type:"BestOfferStatusCodeType",xmlRequired:false}},ID:"GetBestOffersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetBestOffersResponseType",fields:{},ID:"GetBestOffersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{BestOfferArray:{name:"BestOfferArray",type:"BestOfferArrayType",xmlRequired:false},Item:{name:"Item",type:"ItemType",xmlRequired:false}},ID:"GetBestOffersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetBidderListRequestType",fields:{},ID:"GetBidderListRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ActiveItemsOnly:{name:"ActiveItemsOnly",type:"boolean",xmlRequired:false},EndTimeFrom:{name:"EndTimeFrom",type:"dateTime",xmlRequired:false},EndTimeTo:{name:"EndTimeTo",type:"dateTime",xmlRequired:false},UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},GranularityLevel:{name:"GranularityLevel",type:"GranularityLevelCodeType",xmlRequired:false}},ID:"GetBidderListRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetBidderListResponseType",fields:{},ID:"GetBidderListResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Bidder:{name:"Bidder",type:"UserType",xmlRequired:false},BidItemArray:{name:"BidItemArray",type:"ItemArrayType",xmlRequired:false}},ID:"GetBidderListResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCartRequestType",fields:{},ID:"GetCartRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AffiliateTrackingDetails:{name:"AffiliateTrackingDetails",type:"AffiliateTrackingDetailsType",xmlRequired:false},CartID:{name:"CartID",type:"long",xmlRequired:false},ShippingAddress:{name:"ShippingAddress",type:"AddressType",xmlRequired:false}},ID:"GetCartRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCartResponseType",fields:{},ID:"GetCartResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Cart:{name:"Cart",type:"CartType",xmlRequired:false}},ID:"GetCartResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategoriesRequestType",fields:{},ID:"GetCategoriesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CategorySiteID:{name:"CategorySiteID",type:"string",xmlRequired:false},CategoryParent:{name:"CategoryParent",type:"string",xmlRequired:false},LevelLimit:{name:"LevelLimit",type:"int",xmlRequired:false},ViewAllNodes:{name:"ViewAllNodes",type:"boolean",xmlRequired:false}},ID:"GetCategoriesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategoriesResponseType",fields:{},ID:"GetCategoriesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{CategoryArray:{name:"CategoryArray",type:"CategoryArrayType",xmlRequired:false},CategoryCount:{name:"CategoryCount",type:"int",xmlRequired:false},UpdateTime:{name:"UpdateTime",type:"dateTime",xmlRequired:false},CategoryVersion:{name:"CategoryVersion",type:"string",xmlRequired:false},ReservePriceAllowed:{name:"ReservePriceAllowed",type:"boolean",xmlRequired:false},MinimumReservePrice:{name:"MinimumReservePrice",type:"double",xmlRequired:false},ReduceReserveAllowed:{name:"ReduceReserveAllowed",type:"boolean",xmlRequired:false}},ID:"GetCategoriesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategory2CSRequestType",fields:{},ID:"GetCategory2CSRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},AttributeSystemVersion:{name:"AttributeSystemVersion",type:"string",xmlRequired:false}},ID:"GetCategory2CSRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategory2CSResponseType",fields:{},ID:"GetCategory2CSResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{MappedCategoryArray:{name:"MappedCategoryArray",type:"CategoryArrayType",xmlRequired:false},UnmappedCategoryArray:{name:"UnmappedCategoryArray",type:"CategoryArrayType",xmlRequired:false},AttributeSystemVersion:{name:"AttributeSystemVersion",type:"string",xmlRequired:false},SiteWideCharacteristicSets:{name:"SiteWideCharacteristicSets",type:"SiteWideCharacteristicsType",xmlRequired:false}},ID:"GetCategory2CSResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategory2FinanceOfferRequestType",fields:{},ID:"GetCategory2FinanceOfferRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},LastModifiedDate:{name:"LastModifiedDate",type:"dateTime",xmlRequired:false}},ID:"GetCategory2FinanceOfferRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategory2FinanceOfferResponseType",fields:{},ID:"GetCategory2FinanceOfferResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Count:{name:"Count",type:"int",xmlRequired:false},CategoryFinanceOfferArray:{name:"CategoryFinanceOfferArray",type:"CategoryFinanceOfferArrayType",xmlRequired:false}},ID:"GetCategory2FinanceOfferResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategoryFeaturesRequestType",fields:{},ID:"GetCategoryFeaturesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},LevelLimit:{name:"LevelLimit",type:"int",xmlRequired:false},ViewAllNodes:{name:"ViewAllNodes",type:"boolean",xmlRequired:false},FeatureID:{name:"FeatureID",type:"FeatureIDCodeType",xmlRequired:false}},ID:"GetCategoryFeaturesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategoryFeaturesResponseType",fields:{},ID:"GetCategoryFeaturesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{CategoryVersion:{name:"CategoryVersion",type:"string",xmlRequired:false},UpdateTime:{name:"UpdateTime",type:"dateTime",xmlRequired:false},Category:{name:"Category",type:"CategoryFeatureType",xmlRequired:false},SiteDefaults:{name:"SiteDefaults",type:"SiteDefaultsType",xmlRequired:false},FeatureDefinitions:{name:"FeatureDefinitions",type:"FeatureDefinitionsType",xmlRequired:false}},ID:"GetCategoryFeaturesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategoryListingsRequestType",fields:{},ID:"GetCategoryListingsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{MotorsGermanySearchable:{name:"MotorsGermanySearchable",type:"boolean",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},AdFormat:{name:"AdFormat",type:"boolean",xmlRequired:false},FreeShipping:{name:"FreeShipping",type:"boolean",xmlRequired:false},Currency:{name:"Currency",type:"CurrencyCodeType",xmlRequired:false},ItemTypeFilter:{name:"ItemTypeFilter",type:"ItemTypeFilterCodeType",xmlRequired:false},SearchType:{name:"SearchType",type:"CategoryListingsSearchCodeType",xmlRequired:false},OrderBy:{name:"OrderBy",type:"CategoryListingsOrderCodeType",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false},SearchLocation:{name:"SearchLocation",type:"SearchLocationType",xmlRequired:false},ProximitySearch:{name:"ProximitySearch",type:"ProximitySearchType",xmlRequired:false},IncludeGetItFastItems:{name:"IncludeGetItFastItems",type:"boolean",xmlRequired:false},PaymentMethod:{name:"PaymentMethod",type:"PaymentMethodSearchCodeType",xmlRequired:false},IncludeCondition:{name:"IncludeCondition",type:"boolean",xmlRequired:false},IncludeFeedback:{name:"IncludeFeedback",type:"boolean",xmlRequired:false},LocalSearchPostalCode:{name:"LocalSearchPostalCode",type:"string",xmlRequired:false},MaxRelatedSearchKeywords:{name:"MaxRelatedSearchKeywords",type:"int",xmlRequired:false},Group:{name:"Group",type:"GroupType",xmlRequired:false}},ID:"GetCategoryListingsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategoryListingsResponseType",fields:{},ID:"GetCategoryListingsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemArray:{name:"ItemArray",type:"ItemArrayType",xmlRequired:false},Category:{name:"Category",type:"CategoryType",xmlRequired:false},SubCategories:{name:"SubCategories",type:"CategoryArrayType",xmlRequired:false},ItemsPerPage:{name:"ItemsPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},HasMoreItems:{name:"HasMoreItems",type:"boolean",xmlRequired:true},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},BuyingGuideDetails:{name:"BuyingGuideDetails",type:"BuyingGuideDetailsType",xmlRequired:false},RelatedSearchKeywordArray:{name:"RelatedSearchKeywordArray",type:"RelatedSearchKeywordArrayType",xmlRequired:false}},ID:"GetCategoryListingsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategoryMappingsRequestType",fields:{},ID:"GetCategoryMappingsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CategoryVersion:{name:"CategoryVersion",type:"string",xmlRequired:false}},ID:"GetCategoryMappingsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCategoryMappingsResponseType",fields:{},ID:"GetCategoryMappingsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{CategoryMapping:{name:"CategoryMapping",type:"CategoryMappingType",xmlRequired:false},CategoryVersion:{name:"CategoryVersion",type:"string",xmlRequired:false}},ID:"GetCategoryMappingsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetChallengeTokenRequestType",fields:{},ID:"GetChallengeTokenRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GetChallengeTokenRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetChallengeTokenResponseType",fields:{},ID:"GetChallengeTokenResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ChallengeToken:{name:"ChallengeToken",type:"string",xmlRequired:false},ImageChallengeURL:{name:"ImageChallengeURL",type:"string",xmlRequired:false},AudioChallengeURL:{name:"AudioChallengeURL",type:"string",xmlRequired:false}},ID:"GetChallengeTokenResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCharitiesRequestType",fields:{},ID:"GetCharitiesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CharityID:{name:"CharityID",type:"string",xmlRequired:false},CharityName:{name:"CharityName",type:"string",xmlRequired:false},Query:{name:"Query",type:"string",xmlRequired:false},CharityRegion:{name:"CharityRegion",type:"int",xmlRequired:false},CharityDomain:{name:"CharityDomain",type:"int",xmlRequired:false},IncludeDescription:{name:"IncludeDescription",type:"boolean",xmlRequired:false},MatchType:{name:"MatchType",type:"StringMatchCodeType",xmlRequired:false}},ID:"GetCharitiesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCharitiesResponseType",fields:{},ID:"GetCharitiesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Charity:{name:"Charity",type:"CharityInfoType",xmlRequired:false}},ID:"GetCharitiesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetContextualKeywordsRequestType",fields:{},ID:"GetContextualKeywordsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{URL:{name:"URL",type:"anyURI",xmlRequired:false},Encoding:{name:"Encoding",type:"string",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false}},ID:"GetContextualKeywordsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetContextualKeywordsResponseType",fields:{},ID:"GetContextualKeywordsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ContextSearchAsset:{name:"ContextSearchAsset",type:"ContextSearchAssetType",xmlRequired:false}},ID:"GetContextualKeywordsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCrossPromotionsRequestType",fields:{},ID:"GetCrossPromotionsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},PromotionMethod:{name:"PromotionMethod",type:"PromotionMethodCodeType",xmlRequired:false},PromotionViewMode:{name:"PromotionViewMode",type:"TradingRoleCodeType",xmlRequired:false}},ID:"GetCrossPromotionsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetCrossPromotionsResponseType",fields:{},ID:"GetCrossPromotionsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{CrossPromotion:{name:"CrossPromotion",type:"CrossPromotionsType",xmlRequired:false}},ID:"GetCrossPromotionsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetDescriptionTemplatesRequestType",fields:{},ID:"GetDescriptionTemplatesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},LastModifiedTime:{name:"LastModifiedTime",type:"dateTime",xmlRequired:false},MotorVehicles:{name:"MotorVehicles",type:"boolean",xmlRequired:false}},ID:"GetDescriptionTemplatesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetDescriptionTemplatesResponseType",fields:{},ID:"GetDescriptionTemplatesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{DescriptionTemplate:{name:"DescriptionTemplate",type:"DescriptionTemplateType",xmlRequired:false},LayoutTotal:{name:"LayoutTotal",type:"int",xmlRequired:false},ObsoleteLayoutID:{name:"ObsoleteLayoutID",type:"int",xmlRequired:false},ObsoleteThemeID:{name:"ObsoleteThemeID",type:"int",xmlRequired:false},ThemeGroup:{name:"ThemeGroup",type:"ThemeGroupType",xmlRequired:false},ThemeTotal:{name:"ThemeTotal",type:"int",xmlRequired:false}},ID:"GetDescriptionTemplatesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetDisputeRequestType",fields:{},ID:"GetDisputeRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{DisputeID:{name:"DisputeID",type:"DisputeIDType",xmlRequired:false}},ID:"GetDisputeRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetDisputeResponseType",fields:{},ID:"GetDisputeResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Dispute:{name:"Dispute",type:"DisputeType",xmlRequired:false}},ID:"GetDisputeResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetFeedbackRequestType",fields:{},ID:"GetFeedbackRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false},UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},FeedbackID:{name:"FeedbackID",type:"string",xmlRequired:false}},ID:"GetFeedbackRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetFeedbackResponseType",fields:{},ID:"GetFeedbackResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{FeedbackDetailArray:{name:"FeedbackDetailArray",type:"FeedbackDetailArrayType",xmlRequired:false},FeedbackDetailItemTotal:{name:"FeedbackDetailItemTotal",type:"int",xmlRequired:false},FeedbackSummary:{name:"FeedbackSummary",type:"FeedbackSummaryType",xmlRequired:false},FeedbackScore:{name:"FeedbackScore",type:"int",xmlRequired:false}},ID:"GetFeedbackResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetFinanceOffersRequestType",fields:{},ID:"GetFinanceOffersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{FinanceOfferID:{name:"FinanceOfferID",type:"string",xmlRequired:false},LastModifiedDate:{name:"LastModifiedDate",type:"dateTime",xmlRequired:false}},ID:"GetFinanceOffersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetFinanceOffersResponseType",fields:{},ID:"GetFinanceOffersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Count:{name:"Count",type:"int",xmlRequired:false},FinanceOfferArray:{name:"FinanceOfferArray",type:"FinanceOfferArrayType",xmlRequired:false}},ID:"GetFinanceOffersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetHighBiddersRequestType",fields:{},ID:"GetHighBiddersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false}},ID:"GetHighBiddersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetHighBiddersResponseType",fields:{},ID:"GetHighBiddersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{BidArray:{name:"BidArray",type:"OfferArrayType",xmlRequired:false},ListingStatus:{name:"ListingStatus",type:"ListingStatusCodeType",xmlRequired:false}},ID:"GetHighBiddersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemRequestType",fields:{},ID:"GetItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},IncludeExpressRequirements:{name:"IncludeExpressRequirements",type:"boolean",xmlRequired:false},IncludeWatchCount:{name:"IncludeWatchCount",type:"boolean",xmlRequired:false},IncludeCrossPromotion:{name:"IncludeCrossPromotion",type:"boolean",xmlRequired:false}},ID:"GetItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemResponseType",fields:{},ID:"GetItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false}},ID:"GetItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemRecommendationsRequestType",fields:{},ID:"GetItemRecommendationsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{GetRecommendationsRequestContainer:{name:"GetRecommendationsRequestContainer",type:"GetRecommendationsRequestContainerType",xmlRequired:false}},ID:"GetItemRecommendationsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemRecommendationsResponseType",fields:{},ID:"GetItemRecommendationsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{GetRecommendationsResponseContainer:{name:"GetRecommendationsResponseContainer",type:"GetRecommendationsResponseContainerType",xmlRequired:false}},ID:"GetItemRecommendationsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemShippingRequestType",fields:{},ID:"GetItemShippingRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},QuantitySold:{name:"QuantitySold",type:"int",xmlRequired:false},DestinationPostalCode:{name:"DestinationPostalCode",type:"string",xmlRequired:false},DestinationCountryCode:{name:"DestinationCountryCode",type:"CountryCodeType",xmlRequired:false}},ID:"GetItemShippingRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemShippingResponseType",fields:{},ID:"GetItemShippingResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ShippingDetails:{name:"ShippingDetails",type:"ShippingDetailsType",xmlRequired:false}},ID:"GetItemShippingResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemTransactionsRequestType",fields:{},ID:"GetItemTransactionsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},ModTimeFrom:{name:"ModTimeFrom",type:"dateTime",xmlRequired:false},ModTimeTo:{name:"ModTimeTo",type:"dateTime",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false},IncludeFinalValueFee:{name:"IncludeFinalValueFee",type:"boolean",xmlRequired:false},IncludeContainingOrder:{name:"IncludeContainingOrder",type:"boolean",xmlRequired:false}},ID:"GetItemTransactionsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemTransactionsResponseType",fields:{},ID:"GetItemTransactionsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},HasMoreTransactions:{name:"HasMoreTransactions",type:"boolean",xmlRequired:false},TransactionsPerPage:{name:"TransactionsPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},ReturnedTransactionCountActual:{name:"ReturnedTransactionCountActual",type:"int",xmlRequired:false},Item:{name:"Item",type:"ItemType",xmlRequired:false},TransactionArray:{name:"TransactionArray",type:"TransactionArrayType",xmlRequired:false},PayPalPreferred:{name:"PayPalPreferred",type:"boolean",xmlRequired:false}},ID:"GetItemTransactionsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemsAwaitingFeedbackRequestType",fields:{},ID:"GetItemsAwaitingFeedbackRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Sort:{name:"Sort",type:"ItemSortTypeCodeType",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false}},ID:"GetItemsAwaitingFeedbackRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetItemsAwaitingFeedbackResponseType",fields:{},ID:"GetItemsAwaitingFeedbackResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemsAwaitingFeedback:{name:"ItemsAwaitingFeedback",type:"PaginatedTransactionArrayType",xmlRequired:false}},ID:"GetItemsAwaitingFeedbackResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetLiveAuctionBiddersRequestType",fields:{},ID:"GetLiveAuctionBiddersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{UserCatalogID:{name:"UserCatalogID",type:"int",xmlRequired:false},BidderStatus:{name:"BidderStatus",type:"BidderStatusCodeType",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false}},ID:"GetLiveAuctionBiddersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetLiveAuctionBiddersResponseType",fields:{},ID:"GetLiveAuctionBiddersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{BidderDetails:{name:"BidderDetails",type:"BidderDetailArrayType",xmlRequired:false},TotalPending:{name:"TotalPending",type:"int",xmlRequired:false},TotalApproved:{name:"TotalApproved",type:"int",xmlRequired:false},TotalDenied:{name:"TotalDenied",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false}},ID:"GetLiveAuctionBiddersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetLiveAuctionCatalogDetailsRequestType",fields:{},ID:"GetLiveAuctionCatalogDetailsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GetLiveAuctionCatalogDetailsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetLiveAuctionCatalogDetailsResponseType",fields:{},ID:"GetLiveAuctionCatalogDetailsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{LiveAuctionCatalog:{name:"LiveAuctionCatalog",type:"LiveAuctionCatalogType",xmlRequired:false}},ID:"GetLiveAuctionCatalogDetailsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMemberMessagesRequestType",fields:{},ID:"GetMemberMessagesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},MailMessageType:{name:"MailMessageType",type:"MessageTypeCodeType",xmlRequired:false},MessageStatus:{name:"MessageStatus",type:"MessageStatusTypeCodeType",xmlRequired:false},DisplayToPublic:{name:"DisplayToPublic",type:"boolean",xmlRequired:false},StartCreationTime:{name:"StartCreationTime",type:"dateTime",xmlRequired:false},EndCreationTime:{name:"EndCreationTime",type:"dateTime",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false},MemberMessageID:{name:"MemberMessageID",type:"string",xmlRequired:false},SenderID:{name:"SenderID",type:"UserIDType",xmlRequired:false}},ID:"GetMemberMessagesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMemberMessagesResponseType",fields:{},ID:"GetMemberMessagesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{MemberMessage:{name:"MemberMessage",type:"MemberMessageExchangeArrayType",xmlRequired:false},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},HasMoreItems:{name:"HasMoreItems",type:"boolean",xmlRequired:false}},ID:"GetMemberMessagesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMessagePreferencesRequestType",fields:{},ID:"GetMessagePreferencesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{SellerID:{name:"SellerID",type:"UserIDType",xmlRequired:false},IncludeASQPreferences:{name:"IncludeASQPreferences",type:"boolean",xmlRequired:false}},ID:"GetMessagePreferencesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMessagePreferencesResponseType",fields:{},ID:"GetMessagePreferencesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ASQPreferences:{name:"ASQPreferences",type:"ASQPreferencesType",xmlRequired:false}},ID:"GetMessagePreferencesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMyMessagesRequestType",fields:{},ID:"GetMyMessagesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AlertIDs:{name:"AlertIDs",type:"MyMessagesAlertIDArrayType",xmlRequired:false},MessageIDs:{name:"MessageIDs",type:"MyMessagesMessageIDArrayType",xmlRequired:false},FolderID:{name:"FolderID",type:"long",xmlRequired:false},StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false}},ID:"GetMyMessagesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMyMessagesResponseType",fields:{},ID:"GetMyMessagesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Summary:{name:"Summary",type:"MyMessagesSummaryType",xmlRequired:false},Alerts:{name:"Alerts",type:"MyMessagesAlertArrayType",xmlRequired:false},Messages:{name:"Messages",type:"MyMessagesMessageArrayType",xmlRequired:false}},ID:"GetMyMessagesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMyeBayBuyingRequestType",fields:{},ID:"GetMyeBayBuyingRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{WatchList:{name:"WatchList",type:"ItemListCustomizationType",xmlRequired:false},BidList:{name:"BidList",type:"ItemListCustomizationType",xmlRequired:false},BestOfferList:{name:"BestOfferList",type:"ItemListCustomizationType",xmlRequired:false},WonList:{name:"WonList",type:"ItemListCustomizationType",xmlRequired:false},LostList:{name:"LostList",type:"ItemListCustomizationType",xmlRequired:false},FavoriteSearches:{name:"FavoriteSearches",type:"MyeBaySelectionType",xmlRequired:false},FavoriteSellers:{name:"FavoriteSellers",type:"MyeBaySelectionType",xmlRequired:false},SecondChanceOffer:{name:"SecondChanceOffer",type:"MyeBaySelectionType",xmlRequired:false},BidAssistantList:{name:"BidAssistantList",type:"BidAssistantListType",xmlRequired:false}},ID:"GetMyeBayBuyingRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMyeBayBuyingResponseType",fields:{},ID:"GetMyeBayBuyingResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{BuyingSummary:{name:"BuyingSummary",type:"BuyingSummaryType",xmlRequired:false},WatchList:{name:"WatchList",type:"PaginatedItemArrayType",xmlRequired:false},BidList:{name:"BidList",type:"PaginatedItemArrayType",xmlRequired:false},BestOfferList:{name:"BestOfferList",type:"PaginatedItemArrayType",xmlRequired:false},WonList:{name:"WonList",type:"PaginatedOrderTransactionArrayType",xmlRequired:false},LostList:{name:"LostList",type:"PaginatedItemArrayType",xmlRequired:false},FavoriteSearches:{name:"FavoriteSearches",type:"MyeBayFavoriteSearchListType",xmlRequired:false},FavoriteSellers:{name:"FavoriteSellers",type:"MyeBayFavoriteSellerListType",xmlRequired:false},SecondChanceOffer:{name:"SecondChanceOffer",type:"ItemType",xmlRequired:false},BidAssistantList:{name:"BidAssistantList",type:"BidGroupArrayType",xmlRequired:false}},ID:"GetMyeBayBuyingResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMyeBayRemindersRequestType",fields:{},ID:"GetMyeBayRemindersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{BuyingReminders:{name:"BuyingReminders",type:"ReminderCustomizationType",xmlRequired:false},SellingReminders:{name:"SellingReminders",type:"ReminderCustomizationType",xmlRequired:false}},ID:"GetMyeBayRemindersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMyeBayRemindersResponseType",fields:{},ID:"GetMyeBayRemindersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{BuyingReminders:{name:"BuyingReminders",type:"RemindersType",xmlRequired:false},SellingReminders:{name:"SellingReminders",type:"RemindersType",xmlRequired:false}},ID:"GetMyeBayRemindersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMyeBaySellingRequestType",fields:{},ID:"GetMyeBaySellingRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ScheduledList:{name:"ScheduledList",type:"ItemListCustomizationType",xmlRequired:false},ActiveList:{name:"ActiveList",type:"ItemListCustomizationType",xmlRequired:false},SoldList:{name:"SoldList",type:"ItemListCustomizationType",xmlRequired:false},UnsoldList:{name:"UnsoldList",type:"ItemListCustomizationType",xmlRequired:false}},ID:"GetMyeBaySellingRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetMyeBaySellingResponseType",fields:{},ID:"GetMyeBaySellingResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{SellingSummary:{name:"SellingSummary",type:"SellingSummaryType",xmlRequired:false},ScheduledList:{name:"ScheduledList",type:"PaginatedItemArrayType",xmlRequired:false},ActiveList:{name:"ActiveList",type:"PaginatedItemArrayType",xmlRequired:false},SoldList:{name:"SoldList",type:"PaginatedOrderTransactionArrayType",xmlRequired:false},UnsoldList:{name:"UnsoldList",type:"PaginatedItemArrayType",xmlRequired:false},Summary:{name:"Summary",type:"MyeBaySellingSummaryType",xmlRequired:false}},ID:"GetMyeBaySellingResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetNotificationPreferencesRequestType",fields:{},ID:"GetNotificationPreferencesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{PreferenceLevel:{name:"PreferenceLevel",type:"NotificationRoleCodeType",xmlRequired:false}},ID:"GetNotificationPreferencesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetNotificationPreferencesResponseType",fields:{},ID:"GetNotificationPreferencesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ApplicationDeliveryPreferences:{name:"ApplicationDeliveryPreferences",type:"ApplicationDeliveryPreferencesType",xmlRequired:false},UserDeliveryPreferenceArray:{name:"UserDeliveryPreferenceArray",type:"NotificationEnableArrayType",xmlRequired:false},UserData:{name:"UserData",type:"NotificationUserDataType",xmlRequired:false},EventProperty:{name:"EventProperty",type:"NotificationEventPropertyType",xmlRequired:false}},ID:"GetNotificationPreferencesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetNotificationsUsageRequestType",fields:{},ID:"GetNotificationsUsageRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false}},ID:"GetNotificationsUsageRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetNotificationsUsageResponseType",fields:{},ID:"GetNotificationsUsageResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false},NotificationDetailsArray:{name:"NotificationDetailsArray",type:"NotificationDetailsArrayType",xmlRequired:false},MarkUpMarkDownHistory:{name:"MarkUpMarkDownHistory",type:"MarkUpMarkDownHistoryType",xmlRequired:false},NotificationStatistics:{name:"NotificationStatistics",type:"NotificationStatisticsType",xmlRequired:false}},ID:"GetNotificationsUsageResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetOrderTransactionsRequestType",fields:{},ID:"GetOrderTransactionsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemTransactionIDArray:{name:"ItemTransactionIDArray",type:"ItemTransactionIDArrayType",xmlRequired:false},OrderIDArray:{name:"OrderIDArray",type:"OrderIDArrayType",xmlRequired:false}},ID:"GetOrderTransactionsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetOrderTransactionsResponseType",fields:{},ID:"GetOrderTransactionsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{OrderArray:{name:"OrderArray",type:"OrderArrayType",xmlRequired:false}},ID:"GetOrderTransactionsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetOrdersRequestType",fields:{},ID:"GetOrdersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{OrderIDArray:{name:"OrderIDArray",type:"OrderIDArrayType",xmlRequired:false},CreateTimeFrom:{name:"CreateTimeFrom",type:"dateTime",xmlRequired:false},CreateTimeTo:{name:"CreateTimeTo",type:"dateTime",xmlRequired:false},OrderRole:{name:"OrderRole",type:"TradingRoleCodeType",xmlRequired:false},OrderStatus:{name:"OrderStatus",type:"OrderStatusCodeType",xmlRequired:false},ListingType:{name:"ListingType",type:"ListingTypeCodeType",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false}},ID:"GetOrdersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetOrdersResponseType",fields:{},ID:"GetOrdersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},HasMoreOrders:{name:"HasMoreOrders",type:"boolean",xmlRequired:false},OrderArray:{name:"OrderArray",type:"OrderArrayType",xmlRequired:false},OrdersPerPage:{name:"OrdersPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},ReturnedOrderCountActual:{name:"ReturnedOrderCountActual",type:"int",xmlRequired:false}},ID:"GetOrdersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPictureManagerDetailsRequestType",fields:{},ID:"GetPictureManagerDetailsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{FolderID:{name:"FolderID",type:"int",xmlRequired:false},PictureURL:{name:"PictureURL",type:"string",xmlRequired:false},PictureManagerDetailLevel:{name:"PictureManagerDetailLevel",type:"PictureManagerDetailLevelCodeType",xmlRequired:false}},ID:"GetPictureManagerDetailsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPictureManagerDetailsResponseType",fields:{},ID:"GetPictureManagerDetailsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PictureManagerDetails:{name:"PictureManagerDetails",type:"PictureManagerDetailsType",xmlRequired:false}},ID:"GetPictureManagerDetailsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPictureManagerOptionsRequestType",fields:{},ID:"GetPictureManagerOptionsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GetPictureManagerOptionsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPictureManagerOptionsResponseType",fields:{},ID:"GetPictureManagerOptionsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Subscription:{name:"Subscription",type:"PictureManagerSubscriptionType",xmlRequired:false},PictureType:{name:"PictureType",type:"PictureManagerPictureDisplayType",xmlRequired:false}},ID:"GetPictureManagerOptionsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPopularKeywordsRequestType",fields:{},ID:"GetPopularKeywordsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},IncludeChildCategories:{name:"IncludeChildCategories",type:"boolean",xmlRequired:false},MaxKeywordsRetrieved:{name:"MaxKeywordsRetrieved",type:"int",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false}},ID:"GetPopularKeywordsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPopularKeywordsResponseType",fields:{},ID:"GetPopularKeywordsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},CategoryArray:{name:"CategoryArray",type:"CategoryArrayType",xmlRequired:false},HasMore:{name:"HasMore",type:"boolean",xmlRequired:false}},ID:"GetPopularKeywordsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductFamilyMembersRequestType",fields:{},ID:"GetProductFamilyMembersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ProductSearch:{name:"ProductSearch",type:"ProductSearchType",xmlRequired:false}},ID:"GetProductFamilyMembersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductFamilyMembersResponseType",fields:{},ID:"GetProductFamilyMembersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{DataElementSets:{name:"DataElementSets",type:"DataElementSetType",xmlRequired:false},ProductSearchResult:{name:"ProductSearchResult",type:"ProductSearchResultType",xmlRequired:false}},ID:"GetProductFamilyMembersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductFinderRequestType",fields:{},ID:"GetProductFinderRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AttributeSystemVersion:{name:"AttributeSystemVersion",type:"string",xmlRequired:false},ProductFinderID:{name:"ProductFinderID",type:"int",xmlRequired:false}},ID:"GetProductFinderRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductFinderResponseType",fields:{},ID:"GetProductFinderResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{AttributeSystemVersion:{name:"AttributeSystemVersion",type:"string",xmlRequired:false},ProductFinderData:{name:"ProductFinderData",type:"string",xmlRequired:false}},ID:"GetProductFinderResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductFinderXSLRequestType",fields:{},ID:"GetProductFinderXSLRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{FileName:{name:"FileName",type:"string",xmlRequired:false},FileVersion:{name:"FileVersion",type:"string",xmlRequired:false}},ID:"GetProductFinderXSLRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductFinderXSLResponseType",fields:{},ID:"GetProductFinderXSLResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{XSLFile:{name:"XSLFile",type:"XSLFileType",xmlRequired:false}},ID:"GetProductFinderXSLResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductSearchPageRequestType",fields:{},ID:"GetProductSearchPageRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AttributeSystemVersion:{name:"AttributeSystemVersion",type:"string",xmlRequired:false},AttributeSetID:{name:"AttributeSetID",type:"int",xmlRequired:true}},ID:"GetProductSearchPageRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductSearchPageResponseType",fields:{},ID:"GetProductSearchPageResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{AttributeSystemVersion:{name:"AttributeSystemVersion",type:"string",xmlRequired:false},ProductSearchPage:{name:"ProductSearchPage",type:"ProductSearchPageType",xmlRequired:false}},ID:"GetProductSearchPageResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductSearchResultsRequestType",fields:{},ID:"GetProductSearchResultsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ProductSearch:{name:"ProductSearch",type:"ProductSearchType",xmlRequired:false}},ID:"GetProductSearchResultsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductSearchResultsResponseType",fields:{},ID:"GetProductSearchResultsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{DataElementSets:{name:"DataElementSets",type:"DataElementSetType",xmlRequired:false},ProductSearchResult:{name:"ProductSearchResult",type:"ProductSearchResultType",xmlRequired:false}},ID:"GetProductSearchResultsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductSellingPagesRequestType",fields:{},ID:"GetProductSellingPagesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{UseCase:{name:"UseCase",type:"ProductUseCaseCodeType",xmlRequired:false},Product:{name:"Product",type:"ProductType",xmlRequired:false}},ID:"GetProductSellingPagesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductSellingPagesResponseType",fields:{},ID:"GetProductSellingPagesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ProductSellingPagesData:{name:"ProductSellingPagesData",type:"string",xmlRequired:false}},ID:"GetProductSellingPagesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductsRequestType",fields:{},ID:"GetProductsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ProductSearch:{name:"ProductSearch",type:"ProductSearchType",xmlRequired:false},ProductSort:{name:"ProductSort",type:"ProductSortCodeType",xmlRequired:false},IncludeItemArray:{name:"IncludeItemArray",type:"boolean",xmlRequired:false},IncludeReviewDetails:{name:"IncludeReviewDetails",type:"boolean",xmlRequired:false},IncludeBuyingGuideDetails:{name:"IncludeBuyingGuideDetails",type:"boolean",xmlRequired:false},IncludeHistogram:{name:"IncludeHistogram",type:"boolean",xmlRequired:false},AffiliateTrackingDetails:{name:"AffiliateTrackingDetails",type:"AffiliateTrackingDetailsType",xmlRequired:false}},ID:"GetProductsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetProductsResponseType",fields:{},ID:"GetProductsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{CharacteristicsSetProductHistogram:{name:"CharacteristicsSetProductHistogram",type:"CharacteristicsSetProductHistogramType",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},ApproximatePages:{name:"ApproximatePages",type:"int",xmlRequired:false},HasMore:{name:"HasMore",type:"boolean",xmlRequired:false},TotalProducts:{name:"TotalProducts",type:"int",xmlRequired:false},Product:{name:"Product",type:"CatalogProductType",xmlRequired:false},ItemArray:{name:"ItemArray",type:"ItemArrayType",xmlRequired:false},BuyingGuideDetails:{name:"BuyingGuideDetails",type:"BuyingGuideDetailsType",xmlRequired:false}},ID:"GetProductsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPromotionRulesRequestType",fields:{},ID:"GetPromotionRulesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},StoreCategoryID:{name:"StoreCategoryID",type:"long",xmlRequired:false},PromotionMethod:{name:"PromotionMethod",type:"PromotionMethodCodeType",xmlRequired:false}},ID:"GetPromotionRulesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPromotionRulesResponseType",fields:{},ID:"GetPromotionRulesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PromotionRuleArray:{name:"PromotionRuleArray",type:"PromotionRuleArrayType",xmlRequired:false}},ID:"GetPromotionRulesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPromotionalSaleDetailsRequestType",fields:{},ID:"GetPromotionalSaleDetailsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{PromotionalSaleID:{name:"PromotionalSaleID",type:"long",xmlRequired:false}},ID:"GetPromotionalSaleDetailsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetPromotionalSaleDetailsResponseType",fields:{},ID:"GetPromotionalSaleDetailsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PromotionalSaleDetails:{name:"PromotionalSaleDetails",type:"PromotionalSaleArrayType",xmlRequired:false}},ID:"GetPromotionalSaleDetailsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetReturnURLRequestType",fields:{},ID:"GetReturnURLRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GetReturnURLRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetReturnURLResponseType",fields:{},ID:"GetReturnURLResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ApplicationDisplayName:{name:"ApplicationDisplayName",type:"string",xmlRequired:false},AuthenticationEntryArray:{name:"AuthenticationEntryArray",type:"AuthenticationEntryArrayType",xmlRequired:false}},ID:"GetReturnURLResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetRuNameRequestType",fields:{},ID:"GetRuNameRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ClientUseCase:{name:"ClientUseCase",type:"string",xmlRequired:false}},ID:"GetRuNameRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetRuNameResponseType",fields:{},ID:"GetRuNameResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{RuName:{name:"RuName",type:"string",xmlRequired:false}},ID:"GetRuNameResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSearchResultsRequestType",fields:{},ID:"GetSearchResultsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{MotorsGermanySearchable:{name:"MotorsGermanySearchable",type:"boolean",xmlRequired:false},Query:{name:"Query",type:"string",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},SearchFlags:{name:"SearchFlags",type:"SearchFlagsCodeType",xmlRequired:false},PriceRangeFilter:{name:"PriceRangeFilter",type:"PriceRangeFilterType",xmlRequired:false},ProximitySearch:{name:"ProximitySearch",type:"ProximitySearchType",xmlRequired:false},ItemTypeFilter:{name:"ItemTypeFilter",type:"ItemTypeFilterCodeType",xmlRequired:false},SearchType:{name:"SearchType",type:"SearchTypeCodeType",xmlRequired:false},UserIdFilter:{name:"UserIdFilter",type:"UserIdFilterType",xmlRequired:false},SearchLocationFilter:{name:"SearchLocationFilter",type:"SearchLocationFilterType",xmlRequired:false},StoreSearchFilter:{name:"StoreSearchFilter",type:"SearchStoreFilterType",xmlRequired:false},Order:{name:"Order",type:"SearchSortOrderCodeType",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false},SearchRequest:{name:"SearchRequest",type:"SearchRequestType",xmlRequired:false},ProductID:{name:"ProductID",type:"string",xmlRequired:false},ExternalProductID:{name:"ExternalProductID",type:"ExternalProductIDType",xmlRequired:false},Categories:{name:"Categories",type:"RequestCategoriesType",xmlRequired:false},TotalOnly:{name:"TotalOnly",type:"boolean",xmlRequired:false},EndTimeFrom:{name:"EndTimeFrom",type:"dateTime",xmlRequired:false},EndTimeTo:{name:"EndTimeTo",type:"dateTime",xmlRequired:false},ModTimeFrom:{name:"ModTimeFrom",type:"dateTime",xmlRequired:false},IncludeGetItFastItems:{name:"IncludeGetItFastItems",type:"boolean",xmlRequired:false},PaymentMethod:{name:"PaymentMethod",type:"PaymentMethodSearchCodeType",xmlRequired:false},GranularityLevel:{name:"GranularityLevel",type:"GranularityLevelCodeType",xmlRequired:false},ExpandSearch:{name:"ExpandSearch",type:"boolean",xmlRequired:false},Lot:{name:"Lot",type:"boolean",xmlRequired:false},AdFormat:{name:"AdFormat",type:"boolean",xmlRequired:false},FreeShipping:{name:"FreeShipping",type:"boolean",xmlRequired:false},Quantity:{name:"Quantity",type:"int",xmlRequired:false},QuantityOperator:{name:"QuantityOperator",type:"QuantityOperatorCodeType",xmlRequired:false},SellerBusinessType:{name:"SellerBusinessType",type:"SellerBusinessCodeType",xmlRequired:false},DigitalDelivery:{name:"DigitalDelivery",type:"boolean",xmlRequired:false},IncludeCondition:{name:"IncludeCondition",type:"boolean",xmlRequired:false},IncludeFeedback:{name:"IncludeFeedback",type:"boolean",xmlRequired:false},CharityID:{name:"CharityID",type:"int",xmlRequired:false},LocalSearchPostalCode:{name:"LocalSearchPostalCode",type:"string",xmlRequired:false},MaxRelatedSearchKeywords:{name:"MaxRelatedSearchKeywords",type:"int",xmlRequired:false},AffiliateTrackingDetails:{name:"AffiliateTrackingDetails",type:"AffiliateTrackingDetailsType",xmlRequired:false},BidRange:{name:"BidRange",type:"BidRangeType",xmlRequired:false},ItemCondition:{name:"ItemCondition",type:"ItemConditionCodeType",xmlRequired:false},TicketFinder:{name:"TicketFinder",type:"TicketDetailsType",xmlRequired:false},Group:{name:"Group",type:"GroupType",xmlRequired:false}},ID:"GetSearchResultsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSearchResultsResponseType",fields:{},ID:"GetSearchResultsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{SearchResultItemArray:{name:"SearchResultItemArray",type:"SearchResultItemArrayType",xmlRequired:false},ItemsPerPage:{name:"ItemsPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},HasMoreItems:{name:"HasMoreItems",type:"boolean",xmlRequired:true},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},CategoryArray:{name:"CategoryArray",type:"CategoryArrayType",xmlRequired:false},BuyingGuideDetails:{name:"BuyingGuideDetails",type:"BuyingGuideDetailsType",xmlRequired:false},StoreExpansionArray:{name:"StoreExpansionArray",type:"ExpansionArrayType",xmlRequired:false},InternationalExpansionArray:{name:"InternationalExpansionArray",type:"ExpansionArrayType",xmlRequired:false},FilterRemovedExpansionArray:{name:"FilterRemovedExpansionArray",type:"ExpansionArrayType",xmlRequired:false},AllCategoriesExpansionArray:{name:"AllCategoriesExpansionArray",type:"ExpansionArrayType",xmlRequired:false},SpellingSuggestion:{name:"SpellingSuggestion",type:"SpellingSuggestionType",xmlRequired:false},RelatedSearchKeywordArray:{name:"RelatedSearchKeywordArray",type:"RelatedSearchKeywordArrayType",xmlRequired:false}},ID:"GetSearchResultsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSearchResultsExpressRequestType",fields:{},ID:"GetSearchResultsExpressRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Query:{name:"Query",type:"string",xmlRequired:false},ExternalProductIDType:{name:"ExternalProductIDType",type:"ExternalProductCodeType",xmlRequired:false},ExternalProductIDValue:{name:"ExternalProductIDValue",type:"string",xmlRequired:false},ProductReferenceID:{name:"ProductReferenceID",type:"long",xmlRequired:false},DepartmentName:{name:"DepartmentName",type:"string",xmlRequired:false},AisleName:{name:"AisleName",type:"string",xmlRequired:false},ProductTypeName:{name:"ProductTypeName",type:"string",xmlRequired:false},HistogramSort:{name:"HistogramSort",type:"ExpressHistogramSortCodeType",xmlRequired:false},ItemSort:{name:"ItemSort",type:"ExpressItemSortCodeType",xmlRequired:false},ProductSort:{name:"ProductSort",type:"ExpressProductSortCodeType",xmlRequired:false},HighestPrice:{name:"HighestPrice",type:"AmountType",xmlRequired:false},LowestPrice:{name:"LowestPrice",type:"AmountType",xmlRequired:false},Condition:{name:"Condition",type:"ConditionSelectionCodeType",xmlRequired:false},SellerID:{name:"SellerID",type:"UserIDType",xmlRequired:false},PostalCode:{name:"PostalCode",type:"string",xmlRequired:false},HistogramDetails:{name:"HistogramDetails",type:"ExpressDetailLevelCodeType",xmlRequired:false},ProductDetails:{name:"ProductDetails",type:"ExpressDetailLevelCodeType",xmlRequired:false},ItemDetails:{name:"ItemDetails",type:"ExpressDetailLevelCodeType",xmlRequired:false},EntriesPerPage:{name:"EntriesPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},AffiliateTrackingDetails:{name:"AffiliateTrackingDetails",type:"AffiliateTrackingDetailsType",xmlRequired:false}},ID:"GetSearchResultsExpressRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSearchResultsExpressResponseType",fields:{},ID:"GetSearchResultsExpressResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Histogram:{name:"Histogram",type:"DomainHistogramType",xmlRequired:false},ItemArray:{name:"ItemArray",type:"ItemArrayType",xmlRequired:false},ProductArray:{name:"ProductArray",type:"ProductArrayType",xmlRequired:false},EntriesPerPage:{name:"EntriesPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},HasMoreEntries:{name:"HasMoreEntries",type:"boolean",xmlRequired:true}},ID:"GetSearchResultsExpressResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSellerEventsRequestType",fields:{},ID:"GetSellerEventsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},StartTimeFrom:{name:"StartTimeFrom",type:"dateTime",xmlRequired:false},StartTimeTo:{name:"StartTimeTo",type:"dateTime",xmlRequired:false},EndTimeFrom:{name:"EndTimeFrom",type:"dateTime",xmlRequired:false},EndTimeTo:{name:"EndTimeTo",type:"dateTime",xmlRequired:false},ModTimeFrom:{name:"ModTimeFrom",type:"dateTime",xmlRequired:false},ModTimeTo:{name:"ModTimeTo",type:"dateTime",xmlRequired:false},NewItemFilter:{name:"NewItemFilter",type:"boolean",xmlRequired:false},IncludeWatchCount:{name:"IncludeWatchCount",type:"boolean",xmlRequired:false}},ID:"GetSellerEventsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSellerEventsResponseType",fields:{},ID:"GetSellerEventsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{TimeTo:{name:"TimeTo",type:"dateTime",xmlRequired:false},ItemArray:{name:"ItemArray",type:"ItemArrayType",xmlRequired:false}},ID:"GetSellerEventsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSellerListRequestType",fields:{},ID:"GetSellerListRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},MotorsDealerUsers:{name:"MotorsDealerUsers",type:"UserIDArrayType",xmlRequired:false},EndTimeFrom:{name:"EndTimeFrom",type:"dateTime",xmlRequired:false},EndTimeTo:{name:"EndTimeTo",type:"dateTime",xmlRequired:false},Sort:{name:"Sort",type:"int",xmlRequired:false},StartTimeFrom:{name:"StartTimeFrom",type:"dateTime",xmlRequired:false},StartTimeTo:{name:"StartTimeTo",type:"dateTime",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false},GranularityLevel:{name:"GranularityLevel",type:"GranularityLevelCodeType",xmlRequired:false},SKUArray:{name:"SKUArray",type:"SKUArrayType",xmlRequired:false},IncludeWatchCount:{name:"IncludeWatchCount",type:"boolean",xmlRequired:false}},ID:"GetSellerListRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSellerListResponseType",fields:{},ID:"GetSellerListResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},HasMoreItems:{name:"HasMoreItems",type:"boolean",xmlRequired:false},ItemArray:{name:"ItemArray",type:"ItemArrayType",xmlRequired:false},ItemsPerPage:{name:"ItemsPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},ReturnedItemCountActual:{name:"ReturnedItemCountActual",type:"int",xmlRequired:false},Seller:{name:"Seller",type:"UserType",xmlRequired:false}},ID:"GetSellerListResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSellerPaymentsRequestType",fields:{},ID:"GetSellerPaymentsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{PaymentStatus:{name:"PaymentStatus",type:"RCSPaymentStatusCodeType",xmlRequired:false},PaymentTimeFrom:{name:"PaymentTimeFrom",type:"dateTime",xmlRequired:false},PaymentTimeTo:{name:"PaymentTimeTo",type:"dateTime",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false}},ID:"GetSellerPaymentsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSellerPaymentsResponseType",fields:{},ID:"GetSellerPaymentsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},HasMorePayments:{name:"HasMorePayments",type:"boolean",xmlRequired:false},SellerPayment:{name:"SellerPayment",type:"SellerPaymentType",xmlRequired:false},PaymentsPerPage:{name:"PaymentsPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},ReturnedPaymentCountActual:{name:"ReturnedPaymentCountActual",type:"int",xmlRequired:false}},ID:"GetSellerPaymentsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSellerTransactionsRequestType",fields:{},ID:"GetSellerTransactionsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ModTimeFrom:{name:"ModTimeFrom",type:"dateTime",xmlRequired:false},ModTimeTo:{name:"ModTimeTo",type:"dateTime",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false},IncludeFinalValueFee:{name:"IncludeFinalValueFee",type:"boolean",xmlRequired:false},IncludeContainingOrder:{name:"IncludeContainingOrder",type:"boolean",xmlRequired:false},SKUArray:{name:"SKUArray",type:"SKUArrayType",xmlRequired:false}},ID:"GetSellerTransactionsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSellerTransactionsResponseType",fields:{},ID:"GetSellerTransactionsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},HasMoreTransactions:{name:"HasMoreTransactions",type:"boolean",xmlRequired:false},TransactionsPerPage:{name:"TransactionsPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},ReturnedTransactionCountActual:{name:"ReturnedTransactionCountActual",type:"int",xmlRequired:false},Seller:{name:"Seller",type:"UserType",xmlRequired:false},TransactionArray:{name:"TransactionArray",type:"TransactionArrayType",xmlRequired:false},PayPalPreferred:{name:"PayPalPreferred",type:"boolean",xmlRequired:false}},ID:"GetSellerTransactionsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetShippingDiscountProfilesRequestType",fields:{},ID:"GetShippingDiscountProfilesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GetShippingDiscountProfilesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetShippingDiscountProfilesResponseType",fields:{},ID:"GetShippingDiscountProfilesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{CurrencyID:{name:"CurrencyID",type:"CurrencyCodeType",xmlRequired:false},FlatShippingDiscount:{name:"FlatShippingDiscount",type:"FlatShippingDiscountType",xmlRequired:false},CalculatedShippingDiscount:{name:"CalculatedShippingDiscount",type:"CalculatedShippingDiscountType",xmlRequired:false},PromotionalShippingDiscount:{name:"PromotionalShippingDiscount",type:"boolean",xmlRequired:false},CalculatedHandlingDiscount:{name:"CalculatedHandlingDiscount",type:"CalculatedHandlingDiscountType",xmlRequired:false},PromotionalShippingDiscountDetails:{name:"PromotionalShippingDiscountDetails",type:"PromotionalShippingDiscountDetailsType",xmlRequired:false},ShippingInsurance:{name:"ShippingInsurance",type:"ShippingInsuranceType",xmlRequired:false},InternationalShippingInsurance:{name:"InternationalShippingInsurance",type:"ShippingInsuranceType",xmlRequired:false},CombinedDuration:{name:"CombinedDuration",type:"CombinedPaymentPeriodCodeType",xmlRequired:false}},ID:"GetShippingDiscountProfilesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStoreRequestType",fields:{},ID:"GetStoreRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CategoryStructureOnly:{name:"CategoryStructureOnly",type:"boolean",xmlRequired:false},RootCategoryID:{name:"RootCategoryID",type:"long",xmlRequired:false},LevelLimit:{name:"LevelLimit",type:"int",xmlRequired:false}},ID:"GetStoreRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStoreResponseType",fields:{},ID:"GetStoreResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Store:{name:"Store",type:"StoreType",xmlRequired:false}},ID:"GetStoreResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStoreCategoryUpdateStatusRequestType",fields:{},ID:"GetStoreCategoryUpdateStatusRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{TaskID:{name:"TaskID",type:"long",xmlRequired:false}},ID:"GetStoreCategoryUpdateStatusRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStoreCategoryUpdateStatusResponseType",fields:{},ID:"GetStoreCategoryUpdateStatusResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Status:{name:"Status",type:"TaskStatusCodeType",xmlRequired:false}},ID:"GetStoreCategoryUpdateStatusResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStoreCustomPageRequestType",fields:{},ID:"GetStoreCustomPageRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{PageID:{name:"PageID",type:"long",xmlRequired:false}},ID:"GetStoreCustomPageRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStoreCustomPageResponseType",fields:{},ID:"GetStoreCustomPageResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{CustomPageArray:{name:"CustomPageArray",type:"StoreCustomPageArrayType",xmlRequired:false}},ID:"GetStoreCustomPageResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStoreOptionsRequestType",fields:{},ID:"GetStoreOptionsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GetStoreOptionsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStoreOptionsResponseType",fields:{},ID:"GetStoreOptionsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{BasicThemeArray:{name:"BasicThemeArray",type:"StoreThemeArrayType",xmlRequired:false},AdvancedThemeArray:{name:"AdvancedThemeArray",type:"StoreThemeArrayType",xmlRequired:false},LogoArray:{name:"LogoArray",type:"StoreLogoArrayType",xmlRequired:false},SubscriptionArray:{name:"SubscriptionArray",type:"StoreSubscriptionArrayType",xmlRequired:false},MaxCategories:{name:"MaxCategories",type:"int",xmlRequired:false},MaxCategoryLevels:{name:"MaxCategoryLevels",type:"int",xmlRequired:false}},ID:"GetStoreOptionsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStorePreferencesRequestType",fields:{},ID:"GetStorePreferencesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GetStorePreferencesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetStorePreferencesResponseType",fields:{},ID:"GetStorePreferencesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{StorePreferences:{name:"StorePreferences",type:"StorePreferencesType",xmlRequired:false}},ID:"GetStorePreferencesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSuggestedCategoriesRequestType",fields:{},ID:"GetSuggestedCategoriesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Query:{name:"Query",type:"string",xmlRequired:false}},ID:"GetSuggestedCategoriesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetSuggestedCategoriesResponseType",fields:{},ID:"GetSuggestedCategoriesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{SuggestedCategoryArray:{name:"SuggestedCategoryArray",type:"SuggestedCategoryArrayType",xmlRequired:false},CategoryCount:{name:"CategoryCount",type:"int",xmlRequired:false}},ID:"GetSuggestedCategoriesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetTaxTableRequestType",fields:{},ID:"GetTaxTableRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GetTaxTableRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetTaxTableResponseType",fields:{},ID:"GetTaxTableResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{LastUpdateTime:{name:"LastUpdateTime",type:"dateTime",xmlRequired:false},TaxTable:{name:"TaxTable",type:"TaxTableType",xmlRequired:false}},ID:"GetTaxTableResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetUserRequestType",fields:{},ID:"GetUserRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},UserID:{name:"UserID",type:"string",xmlRequired:false},IncludeExpressRequirements:{name:"IncludeExpressRequirements",type:"boolean",xmlRequired:false}},ID:"GetUserRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetUserResponseType",fields:{},ID:"GetUserResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{User:{name:"User",type:"UserType",xmlRequired:false}},ID:"GetUserResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetUserContactDetailsRequestType",fields:{},ID:"GetUserContactDetailsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"string",xmlRequired:false},ContactID:{name:"ContactID",type:"string",xmlRequired:false},RequesterID:{name:"RequesterID",type:"string",xmlRequired:false}},ID:"GetUserContactDetailsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetUserContactDetailsResponseType",fields:{},ID:"GetUserContactDetailsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{UserID:{name:"UserID",type:"string",xmlRequired:false},ContactAddress:{name:"ContactAddress",type:"AddressType",xmlRequired:false},RegistrationDate:{name:"RegistrationDate",type:"dateTime",xmlRequired:false}},ID:"GetUserContactDetailsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetUserDisputesRequestType",fields:{},ID:"GetUserDisputesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{DisputeFilterType:{name:"DisputeFilterType",type:"DisputeFilterTypeCodeType",xmlRequired:false},DisputeSortType:{name:"DisputeSortType",type:"DisputeSortTypeCodeType",xmlRequired:false},ModTimeFrom:{name:"ModTimeFrom",type:"dateTime",xmlRequired:false},ModTimeTo:{name:"ModTimeTo",type:"dateTime",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false}},ID:"GetUserDisputesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetUserDisputesResponseType",fields:{},ID:"GetUserDisputesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{StartingDisputeID:{name:"StartingDisputeID",type:"DisputeIDType",xmlRequired:false},EndingDisputeID:{name:"EndingDisputeID",type:"DisputeIDType",xmlRequired:false},DisputeArray:{name:"DisputeArray",type:"DisputeArrayType",xmlRequired:false},ItemsPerPage:{name:"ItemsPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},DisputeFilterCount:{name:"DisputeFilterCount",type:"DisputeFilterCountType",xmlRequired:false},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false}},ID:"GetUserDisputesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetUserPreferencesRequestType",fields:{},ID:"GetUserPreferencesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ShowBidderNoticePreferences:{name:"ShowBidderNoticePreferences",type:"boolean",xmlRequired:true},ShowCombinedPaymentPreferences:{name:"ShowCombinedPaymentPreferences",type:"boolean",xmlRequired:true},ShowCrossPromotionPreferences:{name:"ShowCrossPromotionPreferences",type:"boolean",xmlRequired:true},ShowSellerPaymentPreferences:{name:"ShowSellerPaymentPreferences",type:"boolean",xmlRequired:true},ShowEndOfAuctionEmailPreferences:{name:"ShowEndOfAuctionEmailPreferences",type:"boolean",xmlRequired:false},ShowSellerFavoriteItemPreferences:{name:"ShowSellerFavoriteItemPreferences",type:"boolean",xmlRequired:false},ShowProStoresPreferences:{name:"ShowProStoresPreferences",type:"boolean",xmlRequired:false}},ID:"GetUserPreferencesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetUserPreferencesResponseType",fields:{},ID:"GetUserPreferencesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{BidderNoticePreferences:{name:"BidderNoticePreferences",type:"BidderNoticePreferencesType",xmlRequired:false},CombinedPaymentPreferences:{name:"CombinedPaymentPreferences",type:"CombinedPaymentPreferencesType",xmlRequired:false},CrossPromotionPreferences:{name:"CrossPromotionPreferences",type:"CrossPromotionPreferencesType",xmlRequired:false},SellerPaymentPreferences:{name:"SellerPaymentPreferences",type:"SellerPaymentPreferencesType",xmlRequired:false},SellerFavoriteItemPreferences:{name:"SellerFavoriteItemPreferences",type:"SellerFavoriteItemPreferencesType",xmlRequired:false},EndOfAuctionEmailPreferences:{name:"EndOfAuctionEmailPreferences",type:"EndOfAuctionEmailPreferencesType",xmlRequired:false},ExpressPreferences:{name:"ExpressPreferences",type:"ExpressPreferencesType",xmlRequired:false},ProStoresPreference:{name:"ProStoresPreference",type:"ProStoresCheckoutPreferenceType",xmlRequired:false}},ID:"GetUserPreferencesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetVeROReasonCodeDetailsRequestType",fields:{},ID:"GetVeROReasonCodeDetailsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ReasonCodeID:{name:"ReasonCodeID",type:"long",xmlRequired:false},ReturnAllSites:{name:"ReturnAllSites",type:"boolean",xmlRequired:false}},ID:"GetVeROReasonCodeDetailsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetVeROReasonCodeDetailsResponseType",fields:{},ID:"GetVeROReasonCodeDetailsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{VeROReasonCodeDetails:{name:"VeROReasonCodeDetails",type:"VeROReasonCodeDetailsType",xmlRequired:false}},ID:"GetVeROReasonCodeDetailsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetVeROReportStatusRequestType",fields:{},ID:"GetVeROReportStatusRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{VeROReportPacketID:{name:"VeROReportPacketID",type:"long",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},IncludeReportedItemDetails:{name:"IncludeReportedItemDetails",type:"boolean",xmlRequired:false},TimeFrom:{name:"TimeFrom",type:"dateTime",xmlRequired:false},TimeTo:{name:"TimeTo",type:"dateTime",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false}},ID:"GetVeROReportStatusRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetVeROReportStatusResponseType",fields:{},ID:"GetVeROReportStatusResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false},HasMoreItems:{name:"HasMoreItems",type:"boolean",xmlRequired:false},ItemsPerPage:{name:"ItemsPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},VeROReportPacketID:{name:"VeROReportPacketID",type:"long",xmlRequired:false},VeROReportPacketStatus:{name:"VeROReportPacketStatus",type:"VeROReportPacketStatusCodeType",xmlRequired:false},ReportedItemDetails:{name:"ReportedItemDetails",type:"VeROReportedItemDetailsType",xmlRequired:false}},ID:"GetVeROReportStatusResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetWantItNowPostRequestType",fields:{},ID:"GetWantItNowPostRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{PostID:{name:"PostID",type:"ItemIDType",xmlRequired:false}},ID:"GetWantItNowPostRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetWantItNowPostResponseType",fields:{},ID:"GetWantItNowPostResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{WantItNowPost:{name:"WantItNowPost",type:"WantItNowPostType",xmlRequired:false}},ID:"GetWantItNowPostResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetWantItNowSearchResultsRequestType",fields:{},ID:"GetWantItNowSearchResultsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},Query:{name:"Query",type:"string",xmlRequired:false},SearchInDescription:{name:"SearchInDescription",type:"boolean",xmlRequired:false},SearchWorldwide:{name:"SearchWorldwide",type:"boolean",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false}},ID:"GetWantItNowSearchResultsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GetWantItNowSearchResultsResponseType",fields:{},ID:"GetWantItNowSearchResultsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{WantItNowPostArray:{name:"WantItNowPostArray",type:"WantItNowPostArrayType",xmlRequired:false},HasMoreItems:{name:"HasMoreItems",type:"boolean",xmlRequired:false},ItemsPerPage:{name:"ItemsPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false}},ID:"GetWantItNowSearchResultsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GeteBayDetailsRequestType",fields:{},ID:"GeteBayDetailsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{DetailName:{name:"DetailName",type:"DetailNameCodeType",xmlRequired:false}},ID:"GeteBayDetailsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GeteBayDetailsResponseType",fields:{},ID:"GeteBayDetailsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{CountryDetails:{name:"CountryDetails",type:"CountryDetailsType",xmlRequired:false},CurrencyDetails:{name:"CurrencyDetails",type:"CurrencyDetailsType",xmlRequired:false},DispatchTimeMaxDetails:{name:"DispatchTimeMaxDetails",type:"DispatchTimeMaxDetailsType",xmlRequired:false},PaymentOptionDetails:{name:"PaymentOptionDetails",type:"PaymentOptionDetailsType",xmlRequired:false},RegionDetails:{name:"RegionDetails",type:"RegionDetailsType",xmlRequired:false},ShippingLocationDetails:{name:"ShippingLocationDetails",type:"ShippingLocationDetailsType",xmlRequired:false},ShippingServiceDetails:{name:"ShippingServiceDetails",type:"ShippingServiceDetailsType",xmlRequired:false},SiteDetails:{name:"SiteDetails",type:"SiteDetailsType",xmlRequired:false},TaxJurisdiction:{name:"TaxJurisdiction",type:"TaxJurisdictionType",xmlRequired:false},URLDetails:{name:"URLDetails",type:"URLDetailsType",xmlRequired:false},TimeZoneDetails:{name:"TimeZoneDetails",type:"TimeZoneDetailsType",xmlRequired:false}},ID:"GeteBayDetailsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GeteBayOfficialTimeRequestType",fields:{},ID:"GeteBayOfficialTimeRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{},ID:"GeteBayOfficialTimeRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"GeteBayOfficialTimeResponseType",fields:{},ID:"GeteBayOfficialTimeResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"GeteBayOfficialTimeResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"IssueRefundRequestType",fields:{},ID:"IssueRefundRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},RefundReason:{name:"RefundReason",type:"RefundReasonCodeType",xmlRequired:false},RefundType:{name:"RefundType",type:"RefundTypeCodeType",xmlRequired:false},RefundAmount:{name:"RefundAmount",type:"AmountType",xmlRequired:false},RefundMessage:{name:"RefundMessage",type:"string",xmlRequired:false}},ID:"IssueRefundRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"IssueRefundResponseType",fields:{},ID:"IssueRefundResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{RefundFromSeller:{name:"RefundFromSeller",type:"AmountType",xmlRequired:false},TotalRefundToBuyer:{name:"TotalRefundToBuyer",type:"AmountType",xmlRequired:false}},ID:"IssueRefundResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"LeaveFeedbackRequestType",fields:{},ID:"LeaveFeedbackRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},CommentText:{name:"CommentText",type:"string",xmlRequired:false},CommentType:{name:"CommentType",type:"CommentTypeCodeType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},TargetUser:{name:"TargetUser",type:"UserIDType",xmlRequired:false},SellerItemRatingDetailArray:{name:"SellerItemRatingDetailArray",type:"ItemRatingDetailArrayType",xmlRequired:false}},ID:"LeaveFeedbackRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"LeaveFeedbackResponseType",fields:{},ID:"LeaveFeedbackResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{FeedbackID:{name:"FeedbackID",type:"string",xmlRequired:false}},ID:"LeaveFeedbackResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"PlaceOfferRequestType",fields:{},ID:"PlaceOfferRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Offer:{name:"Offer",type:"OfferType",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},BlockOnWarning:{name:"BlockOnWarning",type:"boolean",xmlRequired:false}},ID:"PlaceOfferRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"PlaceOfferResponseType",fields:{},ID:"PlaceOfferResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{SellingStatus:{name:"SellingStatus",type:"SellingStatusType",xmlRequired:false}},ID:"PlaceOfferResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RelistItemRequestType",fields:{},ID:"RelistItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false},DeletedField:{name:"DeletedField",type:"string",xmlRequired:false}},ID:"RelistItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RelistItemResponseType",fields:{},ID:"RelistItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},Fees:{name:"Fees",type:"FeesType",xmlRequired:false},StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},Category2ID:{name:"Category2ID",type:"string",xmlRequired:false}},ID:"RelistItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RemoveFromWatchListRequestType",fields:{},ID:"RemoveFromWatchListRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},RemoveAllItems:{name:"RemoveAllItems",type:"boolean",xmlRequired:false}},ID:"RemoveFromWatchListRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RemoveFromWatchListResponseType",fields:{},ID:"RemoveFromWatchListResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{WatchListCount:{name:"WatchListCount",type:"int",xmlRequired:false},WatchListMaximum:{name:"WatchListMaximum",type:"int",xmlRequired:false}},ID:"RemoveFromWatchListResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RespondToBestOfferRequestType",fields:{},ID:"RespondToBestOfferRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},BestOfferID:{name:"BestOfferID",type:"BestOfferIDType",xmlRequired:false},Action:{name:"Action",type:"BestOfferActionCodeType",xmlRequired:false},SellerResponse:{name:"SellerResponse",type:"string",xmlRequired:false},CounterOfferPrice:{name:"CounterOfferPrice",type:"AmountType",xmlRequired:false},CounterOfferQuantity:{name:"CounterOfferQuantity",type:"int",xmlRequired:false}},ID:"RespondToBestOfferRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RespondToBestOfferResponseType",fields:{},ID:"RespondToBestOfferResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{RespondToBestOffer:{name:"RespondToBestOffer",type:"BestOfferArrayType",xmlRequired:false}},ID:"RespondToBestOfferResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RespondToFeedbackRequestType",fields:{},ID:"RespondToFeedbackRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{FeedbackID:{name:"FeedbackID",type:"string",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},TargetUserID:{name:"TargetUserID",type:"UserIDType",xmlRequired:false},ResponseType:{name:"ResponseType",type:"FeedbackResponseCodeType",xmlRequired:false},ResponseText:{name:"ResponseText",type:"string",xmlRequired:false}},ID:"RespondToFeedbackRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RespondToFeedbackResponseType",fields:{},ID:"RespondToFeedbackResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"RespondToFeedbackResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RespondToWantItNowPostRequestType",fields:{},ID:"RespondToWantItNowPostRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},PostID:{name:"PostID",type:"ItemIDType",xmlRequired:false}},ID:"RespondToWantItNowPostRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"RespondToWantItNowPostResponseType",fields:{},ID:"RespondToWantItNowPostResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"RespondToWantItNowPostResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseCheckoutStatusRequestType",fields:{},ID:"ReviseCheckoutStatusRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},OrderID:{name:"OrderID",type:"string",xmlRequired:false},AmountPaid:{name:"AmountPaid",type:"AmountType",xmlRequired:false},PaymentMethodUsed:{name:"PaymentMethodUsed",type:"BuyerPaymentMethodCodeType",xmlRequired:false},CheckoutStatus:{name:"CheckoutStatus",type:"CompleteStatusCodeType",xmlRequired:false},ShippingService:{name:"ShippingService",type:"token",xmlRequired:false},ShippingIncludedInTax:{name:"ShippingIncludedInTax",type:"boolean",xmlRequired:false},CheckoutMethod:{name:"CheckoutMethod",type:"CheckoutMethodCodeType",xmlRequired:false},InsuranceType:{name:"InsuranceType",type:"InsuranceSelectedCodeType",xmlRequired:false},PaymentStatus:{name:"PaymentStatus",type:"RCSPaymentStatusCodeType",xmlRequired:false},AdjustmentAmount:{name:"AdjustmentAmount",type:"AmountType",xmlRequired:false},ShippingAddress:{name:"ShippingAddress",type:"AddressType",xmlRequired:false},BuyerID:{name:"BuyerID",type:"string",xmlRequired:false},ShippingInsuranceCost:{name:"ShippingInsuranceCost",type:"AmountType",xmlRequired:false},SalesTax:{name:"SalesTax",type:"AmountType",xmlRequired:false},ShippingCost:{name:"ShippingCost",type:"AmountType",xmlRequired:false},EncryptedID:{name:"EncryptedID",type:"string",xmlRequired:false},ExternalTransaction:{name:"ExternalTransaction",type:"ExternalTransactionType",xmlRequired:false},MultipleSellerPaymentID:{name:"MultipleSellerPaymentID",type:"string",xmlRequired:false}},ID:"ReviseCheckoutStatusRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseCheckoutStatusResponseType",fields:{},ID:"ReviseCheckoutStatusResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"ReviseCheckoutStatusResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseItemRequestType",fields:{},ID:"ReviseItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false},DeletedField:{name:"DeletedField",type:"string",xmlRequired:false}},ID:"ReviseItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseItemResponseType",fields:{},ID:"ReviseItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false},Fees:{name:"Fees",type:"FeesType",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},Category2ID:{name:"Category2ID",type:"string",xmlRequired:false}},ID:"ReviseItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseLiveAuctionItemRequestType",fields:{},ID:"ReviseLiveAuctionItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false},DeletedField:{name:"DeletedField",type:"string",xmlRequired:false}},ID:"ReviseLiveAuctionItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseLiveAuctionItemResponseType",fields:{},ID:"ReviseLiveAuctionItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},Fees:{name:"Fees",type:"FeesType",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},Category2ID:{name:"Category2ID",type:"string",xmlRequired:false}},ID:"ReviseLiveAuctionItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseMyMessagesRequestType",fields:{},ID:"ReviseMyMessagesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{MessageIDs:{name:"MessageIDs",type:"MyMessagesMessageIDArrayType",xmlRequired:false},AlertIDs:{name:"AlertIDs",type:"MyMessagesAlertIDArrayType",xmlRequired:false},Read:{name:"Read",type:"boolean",xmlRequired:false},Flagged:{name:"Flagged",type:"boolean",xmlRequired:false},FolderID:{name:"FolderID",type:"long",xmlRequired:false}},ID:"ReviseMyMessagesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseMyMessagesResponseType",fields:{},ID:"ReviseMyMessagesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"ReviseMyMessagesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseMyMessagesFoldersRequestType",fields:{},ID:"ReviseMyMessagesFoldersRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Operation:{name:"Operation",type:"MyMessagesFolderOperationCodeType",xmlRequired:false},FolderID:{name:"FolderID",type:"long",xmlRequired:false},FolderName:{name:"FolderName",type:"string",xmlRequired:false}},ID:"ReviseMyMessagesFoldersRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ReviseMyMessagesFoldersResponseType",fields:{},ID:"ReviseMyMessagesFoldersResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"ReviseMyMessagesFoldersResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SellerReverseDisputeRequestType",fields:{},ID:"SellerReverseDisputeRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{DisputeID:{name:"DisputeID",type:"DisputeIDType",xmlRequired:false},DisputeResolutionReason:{name:"DisputeResolutionReason",type:"DisputeResolutionReasonCodeType",xmlRequired:false}},ID:"SellerReverseDisputeRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SellerReverseDisputeResponseType",fields:{},ID:"SellerReverseDisputeResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SellerReverseDisputeResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SendInvoiceRequestType",fields:{},ID:"SendInvoiceRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},OrderID:{name:"OrderID",type:"OrderIDType",xmlRequired:false},InternationalShippingServiceOptions:{name:"InternationalShippingServiceOptions",type:"InternationalShippingServiceOptionsType",xmlRequired:false},ShippingServiceOptions:{name:"ShippingServiceOptions",type:"ShippingServiceOptionsType",xmlRequired:false},SalesTax:{name:"SalesTax",type:"SalesTaxType",xmlRequired:false},InsuranceOption:{name:"InsuranceOption",type:"InsuranceOptionCodeType",xmlRequired:false},InsuranceFee:{name:"InsuranceFee",type:"AmountType",xmlRequired:false},PaymentMethods:{name:"PaymentMethods",type:"BuyerPaymentMethodCodeType",xmlRequired:false},PayPalEmailAddress:{name:"PayPalEmailAddress",type:"string",xmlRequired:false},CheckoutInstructions:{name:"CheckoutInstructions",type:"string",xmlRequired:false},EmailCopyToSeller:{name:"EmailCopyToSeller",type:"boolean",xmlRequired:false}},ID:"SendInvoiceRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SendInvoiceResponseType",fields:{},ID:"SendInvoiceResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SendInvoiceResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetCartRequestType",fields:{},ID:"SetCartRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AffiliateTrackingDetails:{name:"AffiliateTrackingDetails",type:"AffiliateTrackingDetailsType",xmlRequired:false},CartID:{name:"CartID",type:"long",xmlRequired:false},ShippingAddress:{name:"ShippingAddress",type:"AddressType",xmlRequired:false},CheckoutCompleteRedirect:{name:"CheckoutCompleteRedirect",type:"CheckoutCompleteRedirectType",xmlRequired:false},CartItemArray:{name:"CartItemArray",type:"CartItemArrayType",xmlRequired:false}},ID:"SetCartRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetCartResponseType",fields:{},ID:"SetCartResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Cart:{name:"Cart",type:"CartType",xmlRequired:false}},ID:"SetCartResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetMessagePreferencesRequestType",fields:{},ID:"SetMessagePreferencesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ASQPreferences:{name:"ASQPreferences",type:"ASQPreferencesType",xmlRequired:false}},ID:"SetMessagePreferencesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetMessagePreferencesResponseType",fields:{},ID:"SetMessagePreferencesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetMessagePreferencesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetNotificationPreferencesRequestType",fields:{},ID:"SetNotificationPreferencesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ApplicationDeliveryPreferences:{name:"ApplicationDeliveryPreferences",type:"ApplicationDeliveryPreferencesType",xmlRequired:false},UserDeliveryPreferenceArray:{name:"UserDeliveryPreferenceArray",type:"NotificationEnableArrayType",xmlRequired:false},UserData:{name:"UserData",type:"NotificationUserDataType",xmlRequired:false},EventProperty:{name:"EventProperty",type:"NotificationEventPropertyType",xmlRequired:false}},ID:"SetNotificationPreferencesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetNotificationPreferencesResponseType",fields:{},ID:"SetNotificationPreferencesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetNotificationPreferencesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetPictureManagerDetailsRequestType",fields:{},ID:"SetPictureManagerDetailsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{PictureManagerDetails:{name:"PictureManagerDetails",type:"PictureManagerDetailsType",xmlRequired:false},Action:{name:"Action",type:"PictureManagerActionCodeType",xmlRequired:false}},ID:"SetPictureManagerDetailsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetPictureManagerDetailsResponseType",fields:{},ID:"SetPictureManagerDetailsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetPictureManagerDetailsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetPromotionRulesRequestType",fields:{},ID:"SetPromotionRulesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{OperationType:{name:"OperationType",type:"OperationTypeCodeType",xmlRequired:false},PromotionRuleArray:{name:"PromotionRuleArray",type:"PromotionRuleArrayType",xmlRequired:false}},ID:"SetPromotionRulesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetPromotionRulesResponseType",fields:{},ID:"SetPromotionRulesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetPromotionRulesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetPromotionalSaleRequestType",fields:{},ID:"SetPromotionalSaleRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Action:{name:"Action",type:"ModifyActionCodeType",xmlRequired:false},PromotionalSaleDetails:{name:"PromotionalSaleDetails",type:"PromotionalSaleType",xmlRequired:false}},ID:"SetPromotionalSaleRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetPromotionalSaleResponseType",fields:{},ID:"SetPromotionalSaleResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Status:{name:"Status",type:"PromotionalSaleStatusCodeType",xmlRequired:false},PromotionalSaleID:{name:"PromotionalSaleID",type:"long",xmlRequired:false}},ID:"SetPromotionalSaleResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetPromotionalSaleListingsRequestType",fields:{},ID:"SetPromotionalSaleListingsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{PromotionalSaleID:{name:"PromotionalSaleID",type:"long",xmlRequired:false},Action:{name:"Action",type:"ModifyActionCodeType",xmlRequired:false},PromotionalSaleItemIDArray:{name:"PromotionalSaleItemIDArray",type:"ItemIDArrayType",xmlRequired:false},StoreCategoryID:{name:"StoreCategoryID",type:"long",xmlRequired:false},CategoryID:{name:"CategoryID",type:"long",xmlRequired:false},AllFixedPriceItems:{name:"AllFixedPriceItems",type:"boolean",xmlRequired:false},AllStoreInventoryItems:{name:"AllStoreInventoryItems",type:"boolean",xmlRequired:false}},ID:"SetPromotionalSaleListingsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetPromotionalSaleListingsResponseType",fields:{},ID:"SetPromotionalSaleListingsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{Status:{name:"Status",type:"PromotionalSaleStatusCodeType",xmlRequired:false}},ID:"SetPromotionalSaleListingsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetReturnURLRequestType",fields:{},ID:"SetReturnURLRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{AuthenticationEntry:{name:"AuthenticationEntry",type:"AuthenticationEntryType",xmlRequired:false},ApplicationDisplayName:{name:"ApplicationDisplayName",type:"string",xmlRequired:false},Action:{name:"Action",type:"ModifyActionCodeType",xmlRequired:false}},ID:"SetReturnURLRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetReturnURLResponseType",fields:{},ID:"SetReturnURLResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetReturnURLResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetShippingDiscountProfilesRequestType",fields:{},ID:"SetShippingDiscountProfilesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CurrencyID:{name:"CurrencyID",type:"CurrencyCodeType",xmlRequired:false},CombinedDuration:{name:"CombinedDuration",type:"CombinedPaymentPeriodCodeType",xmlRequired:false},ModifyActionCode:{name:"ModifyActionCode",type:"ModifyActionCodeType",xmlRequired:false},FlatShippingDiscount:{name:"FlatShippingDiscount",type:"FlatShippingDiscountType",xmlRequired:false},CalculatedShippingDiscount:{name:"CalculatedShippingDiscount",type:"CalculatedShippingDiscountType",xmlRequired:false},CalculatedHandlingDiscount:{name:"CalculatedHandlingDiscount",type:"CalculatedHandlingDiscountType",xmlRequired:false},PromotionalShippingDiscountDetails:{name:"PromotionalShippingDiscountDetails",type:"PromotionalShippingDiscountDetailsType",xmlRequired:false},ShippingInsurance:{name:"ShippingInsurance",type:"ShippingInsuranceType",xmlRequired:false},InternationalShippingInsurance:{name:"InternationalShippingInsurance",type:"ShippingInsuranceType",xmlRequired:false}},ID:"SetShippingDiscountProfilesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetShippingDiscountProfilesResponseType",fields:{},ID:"SetShippingDiscountProfilesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetShippingDiscountProfilesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetStoreRequestType",fields:{},ID:"SetStoreRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Store:{name:"Store",type:"StoreType",xmlRequired:false}},ID:"SetStoreRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetStoreResponseType",fields:{},ID:"SetStoreResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetStoreResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetStoreCategoriesRequestType",fields:{},ID:"SetStoreCategoriesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Action:{name:"Action",type:"StoreCategoryUpdateActionCodeType",xmlRequired:false},ItemDestinationCategoryID:{name:"ItemDestinationCategoryID",type:"long",xmlRequired:false},DestinationParentCategoryID:{name:"DestinationParentCategoryID",type:"long",xmlRequired:false},StoreCategories:{name:"StoreCategories",type:"StoreCustomCategoryArrayType",xmlRequired:false}},ID:"SetStoreCategoriesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetStoreCategoriesResponseType",fields:{},ID:"SetStoreCategoriesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{TaskID:{name:"TaskID",type:"long",xmlRequired:false},Status:{name:"Status",type:"TaskStatusCodeType",xmlRequired:false}},ID:"SetStoreCategoriesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetStoreCustomPageRequestType",fields:{},ID:"SetStoreCustomPageRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{CustomPage:{name:"CustomPage",type:"StoreCustomPageType",xmlRequired:false}},ID:"SetStoreCustomPageRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetStoreCustomPageResponseType",fields:{},ID:"SetStoreCustomPageResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{CustomPage:{name:"CustomPage",type:"StoreCustomPageType",xmlRequired:false}},ID:"SetStoreCustomPageResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetStorePreferencesRequestType",fields:{},ID:"SetStorePreferencesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{StorePreferences:{name:"StorePreferences",type:"StorePreferencesType",xmlRequired:false}},ID:"SetStorePreferencesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetStorePreferencesResponseType",fields:{},ID:"SetStorePreferencesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetStorePreferencesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetTaxTableRequestType",fields:{},ID:"SetTaxTableRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{TaxTable:{name:"TaxTable",type:"TaxTableType",xmlRequired:false}},ID:"SetTaxTableRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetTaxTableResponseType",fields:{},ID:"SetTaxTableResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetTaxTableResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetUserNotesRequestType",fields:{},ID:"SetUserNotesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},Action:{name:"Action",type:"SetUserNotesActionCodeType",xmlRequired:false},NoteText:{name:"NoteText",type:"string",xmlRequired:false}},ID:"SetUserNotesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetUserNotesResponseType",fields:{},ID:"SetUserNotesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetUserNotesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetUserPreferencesRequestType",fields:{},ID:"SetUserPreferencesRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{BidderNoticePreferences:{name:"BidderNoticePreferences",type:"BidderNoticePreferencesType",xmlRequired:false},CombinedPaymentPreferences:{name:"CombinedPaymentPreferences",type:"CombinedPaymentPreferencesType",xmlRequired:false},CrossPromotionPreferences:{name:"CrossPromotionPreferences",type:"CrossPromotionPreferencesType",xmlRequired:false},SellerPaymentPreferences:{name:"SellerPaymentPreferences",type:"SellerPaymentPreferencesType",xmlRequired:false},SellerFavoriteItemPreferences:{name:"SellerFavoriteItemPreferences",type:"SellerFavoriteItemPreferencesType",xmlRequired:false},EndOfAuctionEmailPreferences:{name:"EndOfAuctionEmailPreferences",type:"EndOfAuctionEmailPreferencesType",xmlRequired:false},ExpressPreferences:{name:"ExpressPreferences",type:"ExpressPreferencesType",xmlRequired:false}},ID:"SetUserPreferencesRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"SetUserPreferencesResponseType",fields:{},ID:"SetUserPreferencesResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"SetUserPreferencesResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ValidateChallengeInputRequestType",fields:{},ID:"ValidateChallengeInputRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{ChallengeToken:{name:"ChallengeToken",type:"string",xmlRequired:false},UserInput:{name:"UserInput",type:"string",xmlRequired:false},KeepTokenValid:{name:"KeepTokenValid",type:"boolean",xmlRequired:false}},ID:"ValidateChallengeInputRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ValidateChallengeInputResponseType",fields:{},ID:"ValidateChallengeInputResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ValidToken:{name:"ValidToken",type:"boolean",xmlRequired:false}},ID:"ValidateChallengeInputResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ValidateTestUserRegistrationRequestType",fields:{},ID:"ValidateTestUserRegistrationRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{FeedbackScore:{name:"FeedbackScore",type:"int",xmlRequired:false},RegistrationDate:{name:"RegistrationDate",type:"dateTime",xmlRequired:false},SubscribeSA:{name:"SubscribeSA",type:"boolean",xmlRequired:false},SubscribeSAPro:{name:"SubscribeSAPro",type:"boolean",xmlRequired:false},SubscribeSM:{name:"SubscribeSM",type:"boolean",xmlRequired:false},SubscribeSMPro:{name:"SubscribeSMPro",type:"boolean",xmlRequired:false}},ID:"ValidateTestUserRegistrationRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"ValidateTestUserRegistrationResponseType",fields:{},ID:"ValidateTestUserRegistrationResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{},ID:"ValidateTestUserRegistrationResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"VeROReportItemsRequestType",fields:{},ID:"VeROReportItemsRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{RightsOwnerID:{name:"RightsOwnerID",type:"UserIDType",xmlRequired:false},ReportItems:{name:"ReportItems",type:"VeROReportItemsType",xmlRequired:false}},ID:"VeROReportItemsRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"VeROReportItemsResponseType",fields:{},ID:"VeROReportItemsResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{VeROReportPacketID:{name:"VeROReportPacketID",type:"long",xmlRequired:false},VeROReportPacketStatus:{name:"VeROReportPacketStatus",type:"VeROReportPacketStatusCodeType",xmlRequired:false}},ID:"VeROReportItemsResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"VerifyAddItemRequestType",fields:{},ID:"VerifyAddItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false},IncludeExpressRequirements:{name:"IncludeExpressRequirements",type:"boolean",xmlRequired:false},ExternalProductID:{name:"ExternalProductID",type:"ExternalProductIDType",xmlRequired:false}},ID:"VerifyAddItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"VerifyAddItemResponseType",fields:{},ID:"VerifyAddItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},Fees:{name:"Fees",type:"FeesType",xmlRequired:false},ExpressListing:{name:"ExpressListing",type:"boolean",xmlRequired:false},ExpressItemRequirements:{name:"ExpressItemRequirements",type:"ExpressItemRequirementsType",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},Category2ID:{name:"Category2ID",type:"string",xmlRequired:false}},ID:"VerifyAddItemResponseType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"VerifyAddSecondChanceItemRequestType",fields:{},ID:"VerifyAddSecondChanceItemRequest"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractRequestType",fields:{RecipientBidderUserID:{name:"RecipientBidderUserID",type:"UserIDType",xmlRequired:false},BuyItNowPrice:{name:"BuyItNowPrice",type:"AmountType",xmlRequired:false},Duration:{name:"Duration",type:"SecondChanceOfferDurationCodeType",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},SellerMessage:{name:"SellerMessage",type:"string",xmlRequired:false}},ID:"VerifyAddSecondChanceItemRequestType"}),isc.XSElement.create({mustQualify:true,inheritsFrom:"VerifyAddSecondChanceItemResponseType",fields:{},ID:"VerifyAddSecondChanceItemResponse"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false}},ID:"VerifyAddSecondChanceItemResponseType"}),isc.XSComplexType.create({xmlAbstract:"true",mustQualify:true,xsdAnyElement:true,fields:{DetailLevel:{name:"DetailLevel",type:"DetailLevelCodeType",xmlRequired:false},ErrorLanguage:{name:"ErrorLanguage",type:"string",xmlRequired:false},MessageID:{name:"MessageID",type:"string",xmlRequired:false},Version:{name:"Version",type:"string",xmlRequired:false},ErrorHandling:{name:"ErrorHandling",type:"ErrorHandlingCodeType",xmlRequired:false},InvocationID:{name:"InvocationID",type:"UUIDType",xmlRequired:false},WarningLevel:{name:"WarningLevel",type:"WarningLevelCodeType",xmlRequired:false}},ID:"AbstractRequestType"}),isc.XSComplexType.create({xmlAbstract:"true",mustQualify:true,xsdAnyElement:true,fields:{Timestamp:{name:"Timestamp",type:"dateTime",xmlRequired:false},Ack:{name:"Ack",type:"AckCodeType",xmlRequired:false},CorrelationID:{name:"CorrelationID",type:"string",xmlRequired:false},Errors:{name:"Errors",type:"ErrorType",xmlRequired:false},Message:{name:"Message",type:"string",xmlRequired:false},Version:{name:"Version",type:"string",xmlRequired:false},Build:{name:"Build",type:"string",xmlRequired:false},NotificationEventName:{name:"NotificationEventName",type:"string",xmlRequired:false},DuplicateInvocationDetails:{name:"DuplicateInvocationDetails",type:"DuplicateInvocationDetailsType",xmlRequired:false},RecipientUserID:{name:"RecipientUserID",type:"string",xmlRequired:false},EIASToken:{name:"EIASToken",type:"string",xmlRequired:false},NotificationSignature:{name:"NotificationSignature",type:"string",xmlRequired:false},HardExpirationWarning:{name:"HardExpirationWarning",type:"string",xmlRequired:false}},ID:"AbstractResponseType"}),isc.SimpleType.create({inheritsFrom:"token",name:"AckCodeType",valueMap:["Success","Failure","Warning","PartialFailure","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"BuyerPaymentMethodCodeType",valueMap:["None","MOCC","AmEx","PaymentSeeDescription","CCAccepted","PersonalCheck","COD","VisaMC","PaisaPayAccepted","Other","PayPal","Discover","CashOnPickup","MoneyXferAccepted","MoneyXferAcceptedInCheckout","OtherOnlinePayments","Escrow","PrePayDelivery","CODPrePayDelivery","PostalTransfer","CustomCode","LoanCheck","CashInPerson","ELV"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{eBayAuthToken:{name:"eBayAuthToken",type:"string",xmlRequired:false},HardExpirationWarning:{name:"HardExpirationWarning",type:"string",xmlRequired:false},Credentials:{name:"Credentials",type:"UserIdPasswordType",xmlRequired:false},NotificationSignature:{name:"NotificationSignature",type:"string",xmlRequired:false}},ID:"CustomSecurityHeaderType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DetailLevelCodeType",valueMap:["ReturnAll","ItemReturnDescription","ItemReturnAttributes","ItemReturnCategories","ReturnSummary","ReturnHeaders","ReturnMessages"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeActivityCodeType",valueMap:["SellerAddInformation","SellerCompletedTransaction","CameToAgreementNeedFVFCredit","SellerEndCommunication","MutualAgreementOrNoBuyerResponse","SellerOffersRefund","SellerShippedItem","SellerComment","SellerPaymentNotReceived","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeCreditEligibilityCodeType",valueMap:["InEligible","Eligible","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeExplanationCodeType",valueMap:["BuyerHasNotResponded","BuyerRefusedToPay","BuyerNotClearedToPay","BuyerReturnedItemForRefund","UnableToResolveTerms","BuyerNoLongerWantsItem","BuyerPurchasingMistake","ShipCountryNotSupported","ShippingAddressNotConfirmed","PaymentMethodNotSupported","BuyerNoLongerRegistered","OtherExplanation","Unspecified","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DisputeFilterType:{name:"DisputeFilterType",type:"DisputeFilterTypeCodeType",xmlRequired:false},TotalAvailable:{name:"TotalAvailable",type:"int",xmlRequired:false}},ID:"DisputeFilterCountType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeFilterTypeCodeType",valueMap:["AllInvolvedDisputes","DisputesAwaitingMyResponse","DisputesAwaitingOtherPartyResponse","AllInvolvedClosedDisputes","EligibleForCredit","UnpaidItemDisputes","ItemNotReceivedDisputes","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"string",name:"DisputeIDType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeMessageSourceCodeType",valueMap:["Buyer","Seller","eBay","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{MessageID:{name:"MessageID",type:"int",xmlRequired:false},MessageSource:{name:"MessageSource",type:"DisputeMessageSourceCodeType",xmlRequired:false},MessageCreationTime:{name:"MessageCreationTime",type:"dateTime",xmlRequired:false},MessageText:{name:"MessageText",type:"string",xmlRequired:false}},ID:"DisputeMessageType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeReasonCodeType",valueMap:["BuyerHasNotPaid","TransactionMutuallyCanceled","ItemNotReceived","SignificantlyNotAsDescribed","NoRefund","ReturnPolicyUnpaidItem","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeRecordTypeCodeType",valueMap:["UnpaidItem","ItemNotReceived","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeResolutionReasonCodeType",valueMap:["Unresolved","ProofOfPayment","ComputerTechnicalProblem","NoContact","FamilyEmergency","ProofGivenInFeedback","FirstInfraction","CameToAgreement","ItemReturned","BuyerPaidAuctionFees","SellerReceivedPayment","OtherResolution","ClaimPaid","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeResolutionRecordTypeCodeType",valueMap:["StrikeBuyer","SuspendBuyer","FVFCredit","InsertionFeeCredit","AppealBuyerStrike","UnsuspendBuyer","ReverseFVFCredit","ReverseInsertionFeeCredit","GenerateCSTicketForSuspend","FVFCreditNotGranted","ItemNotReceivedClaimFiled","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DisputeResolutionRecordType:{name:"DisputeResolutionRecordType",type:"DisputeResolutionRecordTypeCodeType",xmlRequired:false},DisputeResolutionReason:{name:"DisputeResolutionReason",type:"DisputeResolutionReasonCodeType",xmlRequired:false},ResolutionTime:{name:"ResolutionTime",type:"dateTime",xmlRequired:false}},ID:"DisputeResolutionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeSortTypeCodeType",valueMap:["None","DisputeCreatedTimeAscending","DisputeCreatedTimeDescending","DisputeStatusAscending","DisputeStatusDescending","DisputeCreditEligibilityAscending","DisputeCreditEligibilityDescending","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeStateCodeType",valueMap:["Locked","Closed","BuyerFirstResponsePayOption","BuyerFirstResponseNoPayOption","BuyerFirstResponsePayOptionLateResponse","BuyerFirstResponseNoPayOptionLateResponse","MutualCommunicationPayOption","MutualCommunicationNoPayOption","PendingResolve","MutualWithdrawalAgreement","MutualWithdrawalAgreementLate","NotReceivedNoSellerResponse","NotAsDescribedNoSellerResponse","NotReceivedMutualCommunication","NotAsDescribedMutualCommunication","MutualAgreementOrBuyerReturningItem","ClaimOpened","NoDocumentation","ClaimClosed","ClaimDenied","ClaimPending","ClaimPaymentPending","ClaimPaid","ClaimResolved","ClaimSubmitted","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DisputeStatusCodeType",valueMap:["Closed","WaitingForSellerResponse","WaitingForBuyerResponse","ClosedFVFCreditStrike","ClosedNoFVFCreditStrike","ClosedFVFCreditNoStrike","ClosedNoFVFCreditNoStrike","StrikeAppealedAfterClosing","FVFCreditReversedAfterClosing","StrikeAppealedAndFVFCreditReversed","ClaimOpened","NoDocumentation","ClaimClosed","ClaimDenied","ClaimInProcess","ClaimApproved","ClaimPaid","ClaimResolved","ClaimSubmitted","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DuplicateInvocationID:{name:"DuplicateInvocationID",type:"UUIDType",xmlRequired:false},Status:{name:"Status",type:"InvocationStatusType",xmlRequired:false},InvocationTrackingID:{name:"InvocationTrackingID",type:"string",xmlRequired:false}},ID:"DuplicateInvocationDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ErrorClassificationCodeType",valueMap:["RequestError","SystemError","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ErrorHandlingCodeType",valueMap:["Legacy","BestEffort","AllOrNothing","FailOnError"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ParamID:{name:"ParamID",type:"string",xmlAttribute:true},Value:{name:"Value",type:"string",xmlRequired:false}},ID:"ErrorParameterType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ShortMessage:{name:"ShortMessage",type:"string",xmlRequired:false},LongMessage:{name:"LongMessage",type:"string",xmlRequired:false},ErrorCode:{name:"ErrorCode",type:"token",xmlRequired:false},UserDisplayHint:{name:"UserDisplayHint",type:"boolean",xmlRequired:false},SeverityCode:{name:"SeverityCode",type:"SeverityCodeType",xmlRequired:false},ErrorParameters:{name:"ErrorParameters",type:"ErrorParameterType",xmlRequired:false},ErrorClassification:{name:"ErrorClassification",type:"ErrorClassificationCodeType",xmlRequired:false}},ID:"ErrorType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ErrorCode:{name:"ErrorCode",type:"string",xmlRequired:false},Severity:{name:"Severity",type:"string",xmlRequired:false},DetailedMessage:{name:"DetailedMessage",type:"string",xmlRequired:false}},ID:"FaultDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"InvocationStatusType",valueMap:["InProgress","Success","Failure","CustomCode"]}),isc.XSComplexType.create({textContentProperty:"xmlTextContent",mustQualify:true,fields:{unit:{name:"unit",type:"token",xmlAttribute:true},measurementSystem:{name:"measurementSystem",type:"MeasurementSystemCodeType",xmlAttribute:true},xmlTextContent:{name:"xmlTextContent",type:"decimal",xmlRequired:false}},xsdSimpleContent:true,ID:"MeasureType"}),isc.SimpleType.create({inheritsFrom:"token",name:"MeasurementSystemCodeType",valueMap:["English","Metric"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{EntriesPerPage:{name:"EntriesPerPage",type:"int",xmlRequired:false},PageNumber:{name:"PageNumber",type:"int",xmlRequired:false}},ID:"PaginationType"}),isc.XSComplexType.create({textContentProperty:"xmlTextContent",mustQualify:true,fields:{unit:{name:"unit",type:"token",xmlAttribute:true},xmlTextContent:{name:"xmlTextContent",type:"decimal",xmlRequired:false}},xsdSimpleContent:true,ID:"QuantityType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SeverityCodeType",valueMap:["Warning","Error","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"string",name:"UUIDType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AppId:{name:"AppId",type:"string",xmlRequired:false},DevId:{name:"DevId",type:"string",xmlRequired:false},AuthCert:{name:"AuthCert",type:"string",xmlRequired:false},Username:{name:"Username",type:"string",xmlRequired:false},Password:{name:"Password",type:"string",xmlRequired:false}},ID:"UserIdPasswordType"}),isc.SimpleType.create({inheritsFrom:"token",name:"WarningLevelCodeType",valueMap:["Low","High"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Username:{name:"Username",type:"string",xmlRequired:false},Password:{name:"Password",type:"string",xmlRequired:false},eBayAuthToken:{name:"eBayAuthToken",type:"string",xmlRequired:false}},ID:"XMLRequesterCredentialsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ResetDefaultSubjects:{name:"ResetDefaultSubjects",type:"boolean",xmlRequired:false},Subject:{name:"Subject",type:"string",xmlRequired:false}},ID:"ASQPreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"AccessRuleCurrentStatusCodeType",valueMap:["NotSet","HourlyLimitExceeded","DailyLimitExceeded","PeriodicLimitExceeded","HourlySoftLimitExceeded","DailySoftLimitExceeded","PeriodicSoftLimitExceeded","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"AccessRuleStatusCodeType",valueMap:["RuleOff","RuleOn","ApplicationBlocked","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"AccountDetailEntryCodeType",valueMap:["Unknown","FeeInsertion","FeeBold","FeeFeatured","FeeCategoryFeatured","FeeFinalValue","PaymentCheck","PaymentCC","CreditCourtesy","CreditNoSale","CreditPartialSale","RefundCC","RefundCheck","FinanceCharge","AWDebit","AWCredit","AWMemo","CreditDuplicateListing","FeePartialSale","PaymentElectronicTransferReversal","PaymentCCOnce","FeeReturnedCheck","FeeRedepositCheck","PaymentCash","CreditInsertion","CreditBold","CreditFeatured","CreditCategoryFeatured","CreditFinalValue","FeeNSFCheck","FeeReturnCheckClose","Memo","PaymentMoneyOrder","CreditCardOnFile","CreditCardNotOnFile","Invoiced","InvoicedCreditCard","CreditTransferFrom","DebitTransferTo","InvoiceCreditBalance","eBayDebit","eBayCredit","PromotionalCredit","CCNotOnFilePerCustReq","CreditInsertionFee","CCPaymentRejected","FeeGiftIcon","CreditGiftIcon","FeeGallery","FeeFeaturedGallery","CreditGallery","CreditFeaturedGallery","ItemMoveFee","OutageCredit","CreditPSA","CreditPCGS","FeeReserve","CreditReserve","eBayVISACredit","BBAdminCredit","BBAdminDebit","ReferrerCredit","ReferrerDebit","SwitchCurrency","PaymentGiftCertificate","PaymentWireTransfer","PaymentHomeBanking","PaymentElectronicTransfer","PaymentAdjustmentCredit","PaymentAdjustmentDebit","Chargeoff","ChargeoffRecovery","ChargeoffBankruptcy","ChargeoffSuspended","ChargeoffDeceased","ChargeoffOther","ChargeoffWacko","FinanceChargeReversal","FVFCreditReversal","ForeignFundsConvert","ForeignFundsCheckReversal","EOMRestriction","AllFeesCredit","SetOnHold","RevertUserState","DirectDebitOnFile","DirectDebitNotOnFile","PaymentDirectDebit","DirectDebitReversal","DirectDebitReturnedItem","FeeHighlight","CreditHighlight","BulkUserSuspension","FeeRealEstate30DaysListing","CreditRealEstate30DaysListing","TradingLimitOverrideOn","TradingLimitOverrideOff","EquifaxRealtimeFee","CreditEquifaxRealtimeFee","PaymentEquifaxDebit","PaymentEquifaxCredit","Merged","AutoTraderOn","AutoTraderOff","PaperInvoiceOn","PaperInvoiceOff","AccountStateSwitch","FVFCreditReversalAutomatic","CreditSoftOutage","LACatalogFee","LAExtraItem","LACatalogItemFeeRefund","LACatalogInsertionRefund","LAFinalValueFee","LAFinalValueFeeRefund","LABuyerPremiumPercentageFee","LABuyerPremiumPercentageFeeRefund","LAAudioVideoFee","LAAudioVideoFeeRefund","FeeIPIXPhoto","FeeIPIXSlideShow","CreditIPIXPhoto","CreditIPIXSlideShow","FeeTenDayAuction","CreditTenDayAuction","TemporaryCredit","TemporaryCreditReversal","SubscriptionAABasic","SubscriptionAAPro","CreditAABasic","CreditAAPro","FeeLargePicture","CreditLargePicture","FeePicturePack","CreditPicturePackPartial","CreditPicturePackFull","SubscriptioneBayStores","CrediteBayStores","FeeInsertionFixedPrice","CreditInsertionFixedPrice","FeeFinalValueFixedPrice","CreditFinalValueFixedPrice","ElectronicInvoiceOn","ElectronicInvoiceOff","FlagDDDDPending","FlagDDPaymentConfirmed","FixedPriceDurationFee","FixedPriceDurationCredit","BuyItNowFee","BuyItNowCredit","FeeSchedule","CreditSchedule","SubscriptionSMBasic","SubscriptionSMBasicPro","CreditSMBasic","CreditSMBasicPro","StoresGTCFee","StoresGTCCredit","ListingDesignerFee","ListingDesignerCredit","ExtendedAuctionFee","ExtendedAcutionCredit","PayPalOTPSucc","PayPalOTPPend","PayPalFailed","PayPalChargeBack","ChargeBack","ChargeBackReversal","PayPalRefund","BonusPointsAddition","BonusPointsReduction","BonusPointsPaymentAutomatic","BonusPointsPaymentManual","BonusPointsPaymentReversal","BonusPointsCashPayout","VATCredit","VATDebit","VATStatusChangePending","VATStatusChangeApproved","VATStatusChange_Denied","VATStatusDeletedByCSR","VATStatusDeletedByUser","SMProListingDesignerFee","SMProListingDesignerCredit","StoresSuccessfulListingFee","StoresSuccessfulListingFeeCredit","StoresReferralFee","StoresReferralCredit","SubtitleFee","SubtitleFeeCredit","eBayStoreInventorySubscriptionCredit","AutoPmntReqExempt","AutoPmntReqRein","PictureManagerSubscriptionFee","PictureManagerSubscriptionFeeCredit","SellerReportsBasicFee","SellerReportsBasicCredit","SellerReportsPlusFee","SellerReportsPlusCredit","PaypalOnFile","PaypalOnFileByCSR","PaypalOffFile","BorderFee","BorderFeeCredit","FeeSearchableMobileDE","SalesReportsPlusFee","SalesReportsPlusCredit","CreditSearchableMobileDE","EmailMarketingFee","EmailMarketingCredit","FeePictureShow","CreditPictureShow","ProPackBundleFee","ProPackBundleFeeCredit","BasicUpgradePackBundleFee","BasicUpgradePackBundleFeeCredit","ValuePackBundleFee","ValuePackBundleFeeCredit","ProPackPlusBundleFee","ProPackPlusBundleFeeCredit","FinalEntry","CustomCode","ExtendedDurationFee","ExtendedDurationFeeCredit","InternationalListingFee","InternationalListingCredit","MarketplaceResearchExpiredSubscriptionFee","MarketplaceResearchExpiredSubscriptionFeeCredit","MarketplaceResearchBasicSubscriptionFee","MarketplaceResearchBasicSubscriptionFeeCredit","MarketplaceResearchProSubscriptionFee","BasicBundleFee","BasicBundleFeeCredit","MarketplaceResearchProSubscriptionFeeCredit","VehicleLocalSubscriptionFee","VehicleLocalSubscriptionFeeCredit","VehicleLocalInsertionFee","VehicleLocalInsertionFeeCredit","VehicleLocalFinalValueFee","VehicleLocalFinalValueFeeCredit","VehicleLocalGTCFee","VehicleLocalGTCFeeCredit","eBayMotorsProFee","CrediteBayMotorsProFee","eBayMotorsProFeatureFee","CrediteBayMotorsProFeatureFee","FeeGalleryPlus","CreditGalleryPlus","PrivateListing","CreditPrivateListing"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AccountEntry:{name:"AccountEntry",type:"AccountEntryType",xmlRequired:false}},ID:"AccountEntriesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"AccountEntrySortTypeCodeType",valueMap:["None","AccountEntryCreatedTimeAscending","AccountEntryCreatedTimeDescending","AccountEntryItemNumberAscending","AccountEntryItemNumberDescending","AccountEntryFeeTypeAscending","AccountEntryFeeTypeDescending","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AccountDetailsEntryType:{name:"AccountDetailsEntryType",type:"AccountDetailEntryCodeType",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false},Balance:{name:"Balance",type:"AmountType",xmlRequired:false},Date:{name:"Date",type:"dateTime",xmlRequired:false},GrossDetailAmount:{name:"GrossDetailAmount",type:"AmountType",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},Memo:{name:"Memo",type:"string",xmlRequired:false},NetDetailAmount:{name:"NetDetailAmount",type:"AmountType",xmlRequired:false},RefNumber:{name:"RefNumber",type:"string",xmlRequired:false},VATPercent:{name:"VATPercent",type:"decimal",xmlRequired:false},Title:{name:"Title",type:"string",xmlRequired:false}},ID:"AccountEntryType"}),isc.SimpleType.create({inheritsFrom:"token",name:"AccountHistorySelectionCodeType",valueMap:["LastInvoice","SpecifiedInvoice","BetweenSpecifiedDates","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"AccountStateCodeType",valueMap:["Active","Pending","Inactive","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AccountState:{name:"AccountState",type:"AccountStateCodeType",xmlRequired:false},InvoicePayment:{name:"InvoicePayment",type:"AmountType",xmlRequired:false},InvoiceCredit:{name:"InvoiceCredit",type:"AmountType",xmlRequired:false},InvoiceNewFee:{name:"InvoiceNewFee",type:"AmountType",xmlRequired:false},AdditionalAccount:{name:"AdditionalAccount",type:"AdditionalAccountType",xmlRequired:false},AmountPastDue:{name:"AmountPastDue",type:"AmountType",xmlRequired:false},BankAccountInfo:{name:"BankAccountInfo",type:"string",xmlRequired:false},BankModifyDate:{name:"BankModifyDate",type:"dateTime",xmlRequired:false},BillingCycleDate:{name:"BillingCycleDate",type:"int",xmlRequired:false},CreditCardExpiration:{name:"CreditCardExpiration",type:"dateTime",xmlRequired:false},CreditCardInfo:{name:"CreditCardInfo",type:"string",xmlRequired:false},CreditCardModifyDate:{name:"CreditCardModifyDate",type:"dateTime",xmlRequired:false},CurrentBalance:{name:"CurrentBalance",type:"AmountType",xmlRequired:false},Email:{name:"Email",type:"string",xmlRequired:false},InvoiceBalance:{name:"InvoiceBalance",type:"AmountType",xmlRequired:false},InvoiceDate:{name:"InvoiceDate",type:"dateTime",xmlRequired:false},LastAmountPaid:{name:"LastAmountPaid",type:"AmountType",xmlRequired:false},LastPaymentDate:{name:"LastPaymentDate",type:"dateTime",xmlRequired:false},PastDue:{name:"PastDue",type:"boolean",xmlRequired:false},PaymentMethod:{name:"PaymentMethod",type:"SellerPaymentMethodCodeType",xmlRequired:false}},ID:"AccountSummaryType"}),isc.SimpleType.create({inheritsFrom:"token",name:"AdFormatEnabledCodeType",valueMap:["Disabled","Enabled","Only","ClassifiedAdEnabled","ClassifiedAdOnly"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"AdFormatEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"AdFormatLeadStatusCodeType",valueMap:["New","Responded","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AdditionalInformation:{name:"AdditionalInformation",type:"string",xmlRequired:false},Address:{name:"Address",type:"AddressType",xmlRequired:false},BestTimeToCall:{name:"BestTimeToCall",type:"string",xmlRequired:false},Email:{name:"Email",type:"string",xmlRequired:false},FirstName:{name:"FirstName",type:"string",xmlRequired:false},LastName:{name:"LastName",type:"string",xmlRequired:false},Phone:{name:"Phone",type:"string",xmlRequired:false},SubmittedTime:{name:"SubmittedTime",type:"dateTime",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},ItemTitle:{name:"ItemTitle",type:"string",xmlRequired:false},UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},MemberMessage:{name:"MemberMessage",type:"MemberMessageExchangeArrayType",xmlRequired:false},Status:{name:"Status",type:"AdFormatLeadStatusCodeType",xmlRequired:false},Phone2:{name:"Phone2",type:"string",xmlRequired:false},LeadFee:{name:"LeadFee",type:"AmountType",xmlRequired:false}},ID:"AdFormatLeadType"}),isc.XSComplexType.create({mustQualify:true,fields:{CorrelationID:{name:"CorrelationID",type:"string",xmlRequired:false},ItemID:{name:"ItemID",type:"string",xmlRequired:false},MemberMessage:{name:"MemberMessage",type:"MemberMessageType",xmlRequired:false}},ID:"AddMemberMessagesAAQToBidderRequestContainerType"}),isc.XSComplexType.create({mustQualify:true,fields:{CorrelationID:{name:"CorrelationID",type:"string",xmlRequired:false},Ack:{name:"Ack",type:"AckCodeType",xmlRequired:false}},ID:"AddMemberMessagesAAQToBidderResponseContainerType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Balance:{name:"Balance",type:"AmountType",xmlRequired:false},Currency:{name:"Currency",type:"CurrencyCodeType",xmlRequired:false},AccountCode:{name:"AccountCode",type:"string",xmlRequired:false}},ID:"AdditionalAccountType"}),isc.SimpleType.create({inheritsFrom:"token",name:"AddressOwnerCodeType",valueMap:["PayPal","eBay","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"AddressRecordTypeCodeType",valueMap:["Residential","Business","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"AddressStatusCodeType",valueMap:["None","Confirmed","Unconfirmed","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Name:{name:"Name",type:"string",xmlRequired:false},Street:{name:"Street",type:"string",xmlRequired:false},Street1:{name:"Street1",type:"string",xmlRequired:false},Street2:{name:"Street2",type:"string",xmlRequired:false},CityName:{name:"CityName",type:"string",xmlRequired:false},County:{name:"County",type:"string",xmlRequired:false},StateOrProvince:{name:"StateOrProvince",type:"string",xmlRequired:false},Country:{name:"Country",type:"CountryCodeType",xmlRequired:false},CountryName:{name:"CountryName",type:"string",xmlRequired:false},Phone:{name:"Phone",type:"string",xmlRequired:false},PhoneCountryCode:{name:"PhoneCountryCode",type:"CountryCodeType",xmlRequired:false},PhoneCountryPrefix:{name:"PhoneCountryPrefix",type:"string",xmlRequired:false},PhoneAreaOrCityCode:{name:"PhoneAreaOrCityCode",type:"string",xmlRequired:false},PhoneLocalNumber:{name:"PhoneLocalNumber",type:"string",xmlRequired:false},Phone2CountryCode:{name:"Phone2CountryCode",type:"CountryCodeType",xmlRequired:false},Phone2CountryPrefix:{name:"Phone2CountryPrefix",type:"string",xmlRequired:false},Phone2AreaOrCityCode:{name:"Phone2AreaOrCityCode",type:"string",xmlRequired:false},Phone2LocalNumber:{name:"Phone2LocalNumber",type:"string",xmlRequired:false},PostalCode:{name:"PostalCode",type:"string",xmlRequired:false},AddressID:{name:"AddressID",type:"string",xmlRequired:false},AddressOwner:{name:"AddressOwner",type:"AddressOwnerCodeType",xmlRequired:false},AddressStatus:{name:"AddressStatus",type:"AddressStatusCodeType",xmlRequired:false},ExternalAddressID:{name:"ExternalAddressID",type:"string",xmlRequired:false},InternationalName:{name:"InternationalName",type:"string",xmlRequired:false},InternationalStateAndCity:{name:"InternationalStateAndCity",type:"string",xmlRequired:false},InternationalStreet:{name:"InternationalStreet",type:"string",xmlRequired:false},CompanyName:{name:"CompanyName",type:"string",xmlRequired:false},AddressRecordType:{name:"AddressRecordType",type:"AddressRecordTypeCodeType",xmlRequired:false}},ID:"AddressType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{TrackingID:{name:"TrackingID",type:"string",xmlRequired:false},TrackingPartnerCode:{name:"TrackingPartnerCode",type:"string",xmlRequired:false},ApplicationDeviceType:{name:"ApplicationDeviceType",type:"ApplicationDeviceTypeCodeType",xmlRequired:false},AffiliateUserID:{name:"AffiliateUserID",type:"string",xmlRequired:false}},ID:"AffiliateTrackingDetailsType"}),isc.XSComplexType.create({textContentProperty:"xmlTextContent",mustQualify:true,fields:{currencyID:{name:"currencyID",type:"CurrencyCodeType",xmlRequired:true,xmlAttribute:true},xmlTextContent:{name:"xmlTextContent",type:"double",xmlRequired:false}},xsdSimpleContent:true,ID:"AmountType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CallName:{name:"CallName",type:"string",xmlRequired:false},CountsTowardAggregate:{name:"CountsTowardAggregate",type:"boolean",xmlRequired:false},DailyHardLimit:{name:"DailyHardLimit",type:"long",xmlRequired:false},DailySoftLimit:{name:"DailySoftLimit",type:"long",xmlRequired:false},DailyUsage:{name:"DailyUsage",type:"long",xmlRequired:false},HourlyHardLimit:{name:"HourlyHardLimit",type:"long",xmlRequired:false},HourlySoftLimit:{name:"HourlySoftLimit",type:"long",xmlRequired:false},HourlyUsage:{name:"HourlyUsage",type:"long",xmlRequired:false},Period:{name:"Period",type:"int",xmlRequired:false},PeriodicHardLimit:{name:"PeriodicHardLimit",type:"long",xmlRequired:false},PeriodicSoftLimit:{name:"PeriodicSoftLimit",type:"long",xmlRequired:false},PeriodicUsage:{name:"PeriodicUsage",type:"long",xmlRequired:false},PeriodicStartDate:{name:"PeriodicStartDate",type:"dateTime",xmlRequired:false},ModTime:{name:"ModTime",type:"dateTime",xmlRequired:false},RuleCurrentStatus:{name:"RuleCurrentStatus",type:"AccessRuleCurrentStatusCodeType",xmlRequired:false},RuleStatus:{name:"RuleStatus",type:"AccessRuleStatusCodeType",xmlRequired:false}},ID:"ApiAccessRuleType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ApplicationURL:{name:"ApplicationURL",type:"anyURI",xmlRequired:false},ApplicationEnable:{name:"ApplicationEnable",type:"EnableCodeType",xmlRequired:false},AlertEmail:{name:"AlertEmail",type:"anyURI",xmlRequired:false},AlertEnable:{name:"AlertEnable",type:"EnableCodeType",xmlRequired:false},NotificationPayloadType:{name:"NotificationPayloadType",type:"NotificationPayloadTypeCodeType",xmlRequired:false},DeviceType:{name:"DeviceType",type:"DeviceTypeCodeType",xmlRequired:false}},ID:"ApplicationDeliveryPreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ApplicationDeviceTypeCodeType",valueMap:["Browser","Wireless","Desktop","SetTopTVBox","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{Attribute:{name:"Attribute",type:"AttributeType",xmlRequired:false}},ID:"AttributeArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AttributeSetArray:{name:"AttributeSetArray",type:"AttributeSetArrayType",xmlRequired:false}},ID:"AttributeRecommendationsType"}),isc.XSComplexType.create({mustQualify:true,fields:{AttributeSet:{name:"AttributeSet",type:"AttributeSetType",xmlRequired:false}},ID:"AttributeSetArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{attributeSetID:{name:"attributeSetID",type:"int",xmlAttribute:true},attributeSetVersion:{name:"attributeSetVersion",type:"string",xmlAttribute:true},Attribute:{name:"Attribute",type:"AttributeType",xmlRequired:false}},ID:"AttributeSetType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{attributeID:{name:"attributeID",type:"int",xmlAttribute:true},attributeLabel:{name:"attributeLabel",type:"string",xmlAttribute:true},Value:{name:"Value",type:"ValType",xmlRequired:false}},ID:"AttributeType"}),isc.XSComplexType.create({mustQualify:true,fields:{AuthenticationEntry:{name:"AuthenticationEntry",type:"AuthenticationEntryType",xmlRequired:false}},ID:"AuthenticationEntryArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AcceptURL:{name:"AcceptURL",type:"anyURI",xmlRequired:false},PrivacyPolicyURL:{name:"PrivacyPolicyURL",type:"anyURI",xmlRequired:false},RejectURL:{name:"RejectURL",type:"anyURI",xmlRequired:false},RuName:{name:"RuName",type:"string",xmlRequired:false},TokenReturnMethod:{name:"TokenReturnMethod",type:"TokenReturnMethodCodeType",xmlRequired:false}},ID:"AuthenticationEntryType"}),isc.XSComplexType.create({mustQualify:true,fields:{AverageRatingDetails:{name:"AverageRatingDetails",type:"AverageRatingDetailsType",xmlRequired:false}},ID:"AverageRatingDetailArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{RatingDetail:{name:"RatingDetail",type:"FeedbackRatingDetailCodeType",xmlRequired:false},Rating:{name:"Rating",type:"double",xmlRequired:false},RatingCount:{name:"RatingCount",type:"int",xmlRequired:false}},ID:"AverageRatingDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"BalanceCodeType",valueMap:["Other","CustomCode"]}),isc.XSComplexType.create({textContentProperty:"xmlTextContent",mustQualify:true,fields:{currencyID:{name:"currencyID",type:"CurrencyCodeType",xmlRequired:true,xmlAttribute:true},xmlTextContent:{name:"xmlTextContent",type:"string",xmlRequired:false}},xsdSimpleContent:true,ID:"BasicAmountType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"BasicUpgradePackEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"BestOfferActionCodeType",valueMap:["Accept","Decline","Counter","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{BestOffer:{name:"BestOffer",type:"BestOfferType",xmlRequired:false}},ID:"BestOfferArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"BestOfferAutoDeclineEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"BestOfferCounterEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BestOfferCount:{name:"BestOfferCount",type:"int",xmlRequired:false},BestOfferEnabled:{name:"BestOfferEnabled",type:"boolean",xmlRequired:false},BestOffer:{name:"BestOffer",type:"AmountType",xmlRequired:false},BestOfferStatus:{name:"BestOfferStatus",type:"BestOfferStatusCodeType",xmlRequired:false},BestOfferType:{name:"BestOfferType",type:"BestOfferTypeCodeType",xmlRequired:false}},ID:"BestOfferDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"BestOfferEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"string",name:"BestOfferIDType"}),isc.SimpleType.create({inheritsFrom:"token",name:"BestOfferStatusCodeType",valueMap:["Pending","Accepted","Declined","Expired","Retracted","AdminEnded","Active","Countered","All","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BestOfferID:{name:"BestOfferID",type:"BestOfferIDType",xmlRequired:false},ExpirationTime:{name:"ExpirationTime",type:"dateTime",xmlRequired:false},Buyer:{name:"Buyer",type:"UserType",xmlRequired:false},Price:{name:"Price",type:"AmountType",xmlRequired:false},Status:{name:"Status",type:"BestOfferStatusCodeType",xmlRequired:false},Quantity:{name:"Quantity",type:"int",xmlRequired:false},BuyerMessage:{name:"BuyerMessage",type:"string",xmlRequired:false},SellerMessage:{name:"SellerMessage",type:"string",xmlRequired:false},BestOfferCodeType:{name:"BestOfferCodeType",type:"BestOfferTypeCodeType",xmlRequired:false},CallStatus:{name:"CallStatus",type:"string",xmlRequired:false}},ID:"BestOfferType"}),isc.SimpleType.create({inheritsFrom:"token",name:"BestOfferTypeCodeType",valueMap:["BuyerBestOffer","BuyerCounterOffer","SellerCounterOffer","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"BidActionCodeType",valueMap:["Unknown","Bid","NotUsed","Retraction","AutoRetraction","Cancelled","AutoCancel","Absentee","BuyItNow","Purchase","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{LiveAuctionBid:{name:"LiveAuctionBid",type:"BidApprovalType",xmlRequired:false}},ID:"BidApprovalArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},ApprovedBiddingLimit:{name:"ApprovedBiddingLimit",type:"AmountType",xmlRequired:false},DeclinedComment:{name:"DeclinedComment",type:"string",xmlRequired:false},Status:{name:"Status",type:"BidderStatusCodeType",xmlRequired:false}},ID:"BidApprovalType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BidGroupID:{name:"BidGroupID",type:"long",xmlRequired:false},IncludeNotes:{name:"IncludeNotes",type:"boolean",xmlRequired:false}},ID:"BidAssistantListType"}),isc.XSComplexType.create({mustQualify:true,fields:{BidGroup:{name:"BidGroup",type:"BidGroupType",xmlRequired:false}},ID:"BidGroupArrayType"}),isc.SimpleType.create({inheritsFrom:"token",name:"BidGroupItemStatusCodeType",valueMap:["CurrentBid","Cancelled","Pending","Skipped","Ended","Won","GroupClosed","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false},BidGroupItemStatus:{name:"BidGroupItemStatus",type:"BidGroupItemStatusCodeType",xmlRequired:false},MaxBidAmount:{name:"MaxBidAmount",type:"AmountType",xmlRequired:false}},ID:"BidGroupItemType"}),isc.SimpleType.create({inheritsFrom:"token",name:"BidGroupStatusCodeType",valueMap:["Open","Closed","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BidGroupItem:{name:"BidGroupItem",type:"BidGroupItemType",xmlRequired:false},BidGroupID:{name:"BidGroupID",type:"long",xmlRequired:false},BidGroupName:{name:"BidGroupName",type:"string",xmlRequired:false},BidGroupStatus:{name:"BidGroupStatus",type:"BidGroupStatusCodeType",xmlRequired:false}},ID:"BidGroupType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{MinimumBidCount:{name:"MinimumBidCount",type:"int",xmlRequired:false},MaximumBidCount:{name:"MaximumBidCount",type:"int",xmlRequired:false}},ID:"BidRangeType"}),isc.XSComplexType.create({mustQualify:true,fields:{BidderDetail:{name:"BidderDetail",type:"BidderDetailType",xmlRequired:false}},ID:"BidderDetailArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},Email:{name:"Email",type:"string",xmlRequired:false},FeedbackScore:{name:"FeedbackScore",type:"int",xmlRequired:false},UniqueNegativeFeedbackCount:{name:"UniqueNegativeFeedbackCount",type:"int",xmlRequired:false},UniquePositiveFeedbackCount:{name:"UniquePositiveFeedbackCount",type:"int",xmlRequired:false},LiveAuctionBidResult:{name:"LiveAuctionBidResult",type:"LiveAuctionBidType",xmlRequired:false}},ID:"BidderDetailType"}),isc.SimpleType.create({inheritsFrom:"int",name:"BidderIdType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{UnsuccessfulBidderNoticeIncludeMyItems:{name:"UnsuccessfulBidderNoticeIncludeMyItems",type:"boolean",xmlRequired:false}},ID:"BidderNoticePreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"BidderStatusCodeType",valueMap:["Approved","Denied","Pending","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"BidderTypeCodeType",valueMap:["AllBidder","HighBidder","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ConvertedMaxBid:{name:"ConvertedMaxBid",type:"AmountType",xmlRequired:false},MaxBid:{name:"MaxBid",type:"AmountType",xmlRequired:false},QuantityBid:{name:"QuantityBid",type:"int",xmlRequired:false},QuantityWon:{name:"QuantityWon",type:"int",xmlRequired:false},Winning:{name:"Winning",type:"boolean",xmlRequired:false},BidAssistant:{name:"BidAssistant",type:"boolean",xmlRequired:false}},ID:"BiddingDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SummaryDays:{name:"SummaryDays",type:"int",xmlRequired:false},TotalBids:{name:"TotalBids",type:"int",xmlRequired:false},BidActivityWithSeller:{name:"BidActivityWithSeller",type:"int",xmlRequired:false},BidsToUniqueSellers:{name:"BidsToUniqueSellers",type:"int",xmlRequired:false},BidsToUniqueCategories:{name:"BidsToUniqueCategories",type:"int",xmlRequired:false},BidRetractions:{name:"BidRetractions",type:"int",xmlRequired:false},ItemBidDetails:{name:"ItemBidDetails",type:"ItemBidDetailsType",xmlRequired:false}},ID:"BiddingSummaryType"}),isc.SimpleType.create({inheritsFrom:"token",name:"BulkCatalogListerStatusCodeType",valueMap:["Preapproved","Active","OnWatch","OnHold","Suspended","WatchWarn","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"BuyerProtectionCodeType",valueMap:["ItemIneligible","ItemEligible","ItemMarkedIneligible","ItemMarkedEligible","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{ShipToRegistrationCountry:{name:"ShipToRegistrationCountry",type:"boolean",xmlRequired:false},ZeroFeedbackScore:{name:"ZeroFeedbackScore",type:"boolean",xmlRequired:false},MinimumFeedbackScore:{name:"MinimumFeedbackScore",type:"int",xmlRequired:false},MaximumUnpaidItemStrikes:{name:"MaximumUnpaidItemStrikes",type:"boolean",xmlRequired:false},MaximumItemRequirements:{name:"MaximumItemRequirements",type:"MaximumItemRequirementsType",xmlRequired:false},LinkedPayPalAccount:{name:"LinkedPayPalAccount",type:"boolean",xmlRequired:false},VerifiedUserRequirements:{name:"VerifiedUserRequirements",type:"VerifiedUserRequirementsType",xmlRequired:false}},ID:"BuyerRequirementsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ShippingAddress:{name:"ShippingAddress",type:"AddressType",xmlRequired:false}},ID:"BuyerType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BuyingGuide:{name:"BuyingGuide",type:"BuyingGuideType",xmlRequired:false},BuyingGuideHub:{name:"BuyingGuideHub",type:"anyURI",xmlRequired:false}},ID:"BuyingGuideDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Name:{name:"Name",type:"string",xmlRequired:false},URL:{name:"URL",type:"anyURI",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},ProductFinderID:{name:"ProductFinderID",type:"int",xmlRequired:false},Title:{name:"Title",type:"string",xmlRequired:false},Text:{name:"Text",type:"string",xmlRequired:false},CreationTime:{name:"CreationTime",type:"dateTime",xmlRequired:false},UserID:{name:"UserID",type:"UserIDType",xmlRequired:false}},ID:"BuyingGuideType"}),isc.XSComplexType.create({mustQualify:true,fields:{BiddingCount:{name:"BiddingCount",type:"int",xmlRequired:false},WinningCount:{name:"WinningCount",type:"int",xmlRequired:false},TotalWinningCost:{name:"TotalWinningCost",type:"AmountType",xmlRequired:false},WonCount:{name:"WonCount",type:"int",xmlRequired:false},TotalWonCost:{name:"TotalWonCost",type:"AmountType",xmlRequired:false},WonDurationInDays:{name:"WonDurationInDays",type:"int",xmlRequired:false},BestOfferCount:{name:"BestOfferCount",type:"int",xmlRequired:false}},ID:"BuyingSummaryType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DiscountName:{name:"DiscountName",type:"HandlingNameCodeType",xmlRequired:false},OrderHandlingAmount:{name:"OrderHandlingAmount",type:"AmountType",xmlRequired:false},EachAdditionalAmount:{name:"EachAdditionalAmount",type:"AmountType",xmlRequired:false},EachAdditionalOffAmount:{name:"EachAdditionalOffAmount",type:"AmountType",xmlRequired:false},EachAdditionalPercentOff:{name:"EachAdditionalPercentOff",type:"float",xmlRequired:false}},ID:"CalculatedHandlingDiscountType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CalculatedShippingChargeOptionCodeType",valueMap:["ChargeEachItem","ChargeEntireOrder","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DiscountName:{name:"DiscountName",type:"DiscountNameCodeType",xmlRequired:false},DiscountProfile:{name:"DiscountProfile",type:"DiscountProfileType",xmlRequired:false}},ID:"CalculatedShippingDiscountType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CalculatedShippingAmountForEntireOrder:{name:"CalculatedShippingAmountForEntireOrder",type:"AmountType",xmlRequired:false},CalculatedShippingChargeOption:{name:"CalculatedShippingChargeOption",type:"CalculatedShippingChargeOptionCodeType",xmlRequired:false},CalculatedShippingRateOption:{name:"CalculatedShippingRateOption",type:"CalculatedShippingRateOptionCodeType",xmlRequired:false},InsuranceOption:{name:"InsuranceOption",type:"InsuranceOptionCodeType",xmlRequired:false}},ID:"CalculatedShippingPreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CalculatedShippingRateOptionCodeType",valueMap:["CombinedItemWeight","IndividualItemWeight","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{OriginatingPostalCode:{name:"OriginatingPostalCode",type:"string",xmlRequired:false},PackageDepth:{name:"PackageDepth",type:"MeasureType",xmlRequired:false},PackageLength:{name:"PackageLength",type:"MeasureType",xmlRequired:false},PackageWidth:{name:"PackageWidth",type:"MeasureType",xmlRequired:false},PackagingHandlingCosts:{name:"PackagingHandlingCosts",type:"AmountType",xmlRequired:false},ShippingIrregular:{name:"ShippingIrregular",type:"boolean",xmlRequired:false},ShippingPackage:{name:"ShippingPackage",type:"ShippingPackageCodeType",xmlRequired:false},WeightMajor:{name:"WeightMajor",type:"MeasureType",xmlRequired:false},WeightMinor:{name:"WeightMinor",type:"MeasureType",xmlRequired:false},InternationalPackagingHandlingCosts:{name:"InternationalPackagingHandlingCosts",type:"AmountType",xmlRequired:false}},ID:"CalculatedShippingRateType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CancelOffer:{name:"CancelOffer",type:"CancelOfferType",xmlRequired:false}},ID:"CancelOfferArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Offer:{name:"Offer",type:"OfferType",xmlRequired:false},Explanation:{name:"Explanation",type:"string",xmlRequired:false}},ID:"CancelOfferType"}),isc.XSComplexType.create({mustQualify:true,fields:{CartItem:{name:"CartItem",type:"CartItemType",xmlRequired:false}},ID:"CartItemArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false},ReferenceID:{name:"ReferenceID",type:"long",xmlRequired:false},Action:{name:"Action",type:"ModifyActionCodeType",xmlRequired:false}},ID:"CartItemType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CartID:{name:"CartID",type:"long",xmlRequired:false},ShippingAddress:{name:"ShippingAddress",type:"AddressType",xmlRequired:false},CartStatus:{name:"CartStatus",type:"OrderStatusCodeType",xmlRequired:false},CreationTime:{name:"CreationTime",type:"dateTime",xmlRequired:false},ExpirationTime:{name:"ExpirationTime",type:"dateTime",xmlRequired:false},CheckoutURL:{name:"CheckoutURL",type:"anyURI",xmlRequired:false},CheckoutCompleteRedirect:{name:"CheckoutCompleteRedirect",type:"CheckoutCompleteRedirectType",xmlRequired:false},CartItemArray:{name:"CartItemArray",type:"CartItemArrayType",xmlRequired:false},OrderDetail:{name:"OrderDetail",type:"CheckoutOrderDetailType",xmlRequired:false}},ID:"CartType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Title:{name:"Title",type:"string",xmlRequired:false},DetailsURL:{name:"DetailsURL",type:"anyURI",xmlRequired:false},StockPhotoURL:{name:"StockPhotoURL",type:"anyURI",xmlRequired:false},DisplayStockPhotos:{name:"DisplayStockPhotos",type:"boolean",xmlRequired:false},ItemCount:{name:"ItemCount",type:"int",xmlRequired:false},ExternalProductID:{name:"ExternalProductID",type:"ExternalProductIDType",xmlRequired:false},ProductReferenceID:{name:"ProductReferenceID",type:"long",xmlRequired:false},AttributeSetID:{name:"AttributeSetID",type:"int",xmlRequired:false},ItemSpecifics:{name:"ItemSpecifics",type:"NameValueListArrayType",xmlRequired:false},ReviewCount:{name:"ReviewCount",type:"int",xmlRequired:false},ReviewDetails:{name:"ReviewDetails",type:"ReviewDetailsType",xmlRequired:false}},ID:"CatalogProductType"}),isc.XSComplexType.create({mustQualify:true,fields:{Category:{name:"Category",type:"CategoryType",xmlRequired:false}},ID:"CategoryArrayType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CategoryFeatureDetailLevelCodeType",valueMap:["ReturnAll","ReturnFeatureDefinitions","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},ListingDuration:{name:"ListingDuration",type:"ListingDurationReferenceType",xmlRequired:false},ShippingTermsRequired:{name:"ShippingTermsRequired",type:"boolean",xmlRequired:false},BestOfferEnabled:{name:"BestOfferEnabled",type:"boolean",xmlRequired:false},DutchBINEnabled:{name:"DutchBINEnabled",type:"boolean",xmlRequired:false},UserConsentRequired:{name:"UserConsentRequired",type:"boolean",xmlRequired:false},HomePageFeaturedEnabled:{name:"HomePageFeaturedEnabled",type:"boolean",xmlRequired:false},ProPackEnabled:{name:"ProPackEnabled",type:"boolean",xmlRequired:false},BasicUpgradePackEnabled:{name:"BasicUpgradePackEnabled",type:"boolean",xmlRequired:false},ValuePackEnabled:{name:"ValuePackEnabled",type:"boolean",xmlRequired:false},ProPackPlusEnabled:{name:"ProPackPlusEnabled",type:"boolean",xmlRequired:false},AdFormatEnabled:{name:"AdFormatEnabled",type:"AdFormatEnabledCodeType",xmlRequired:false},DigitalDeliveryEnabled:{name:"DigitalDeliveryEnabled",type:"DigitalDeliveryEnabledCodeType",xmlRequired:false},BestOfferCounterEnabled:{name:"BestOfferCounterEnabled",type:"boolean",xmlRequired:false},BestOfferAutoDeclineEnabled:{name:"BestOfferAutoDeclineEnabled",type:"boolean",xmlRequired:false},LocalMarketSpecialitySubscription:{name:"LocalMarketSpecialitySubscription",type:"boolean",xmlRequired:false},LocalMarketRegularSubscription:{name:"LocalMarketRegularSubscription",type:"boolean",xmlRequired:false},LocalMarketPremiumSubscription:{name:"LocalMarketPremiumSubscription",type:"boolean",xmlRequired:false},LocalMarketNonSubscription:{name:"LocalMarketNonSubscription",type:"boolean",xmlRequired:false},ExpressEnabled:{name:"ExpressEnabled",type:"boolean",xmlRequired:false},ExpressPicturesRequired:{name:"ExpressPicturesRequired",type:"boolean",xmlRequired:false},ExpressConditionRequired:{name:"ExpressConditionRequired",type:"boolean",xmlRequired:false},MinimumReservePrice:{name:"MinimumReservePrice",type:"double",xmlRequired:false},SellerContactDetailsEnabled:{name:"SellerContactDetailsEnabled",type:"boolean",xmlRequired:false},TransactionConfirmationRequestEnabled:{name:"TransactionConfirmationRequestEnabled",type:"boolean",xmlRequired:false},StoreInventoryEnabled:{name:"StoreInventoryEnabled",type:"boolean",xmlRequired:false},SkypeMeTransactionalEnabled:{name:"SkypeMeTransactionalEnabled",type:"boolean",xmlRequired:false},SkypeMeNonTransactionalEnabled:{name:"SkypeMeNonTransactionalEnabled",type:"boolean",xmlRequired:false},ClassifiedAdPaymentMethodEnabled:{name:"ClassifiedAdPaymentMethodEnabled",type:"ClassifiedAdPaymentMethodEnabledCodeType",xmlRequired:false},ClassifiedAdShippingMethodEnabled:{name:"ClassifiedAdShippingMethodEnabled",type:"boolean",xmlRequired:false},ClassifiedAdBestOfferEnabled:{name:"ClassifiedAdBestOfferEnabled",type:"ClassifiedAdBestOfferEnabledCodeType",xmlRequired:false},ClassifiedAdCounterOfferEnabled:{name:"ClassifiedAdCounterOfferEnabled",type:"boolean",xmlRequired:false},ClassifiedAdAutoDeclineEnabled:{name:"ClassifiedAdAutoDeclineEnabled",type:"boolean",xmlRequired:false},ClassifiedAdContactByPhoneEnabled:{name:"ClassifiedAdContactByPhoneEnabled",type:"boolean",xmlRequired:false},ClassifiedAdContactByEmailEnabled:{name:"ClassifiedAdContactByEmailEnabled",type:"boolean",xmlRequired:false},SafePaymentRequired:{name:"SafePaymentRequired",type:"boolean",xmlRequired:false},ClassifiedAdPayPerLeadEnabled:{name:"ClassifiedAdPayPerLeadEnabled",type:"boolean",xmlRequired:false}},ID:"CategoryFeatureType"}),isc.XSComplexType.create({mustQualify:true,fields:{CategoryFinanceOffer:{name:"CategoryFinanceOffer",type:"CategoryFinanceOfferType",xmlRequired:false}},ID:"CategoryFinanceOfferArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{FinanceOfferID:{name:"FinanceOfferID",type:"string",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false}},ID:"CategoryFinanceOfferType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CategoryListingsOrderCodeType",valueMap:["NoFilter","ItemsBy24Hr","ItemsEndToday","ItemsEndIn5Hr","SortByPriceAsc","SortByPriceDesc","BestMatchSort","DistanceSort","CustomCode","BestMatchCategoryGroup"]}),isc.SimpleType.create({inheritsFrom:"token",name:"CategoryListingsSearchCodeType",valueMap:["Featured","SuperFeatured","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{oldID:{name:"oldID",type:"string",xmlAttribute:true},id:{name:"id",type:"string",xmlAttribute:true}},ID:"CategoryMappingType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BestOfferEnabled:{name:"BestOfferEnabled",type:"boolean",xmlRequired:false},AutoPayEnabled:{name:"AutoPayEnabled",type:"boolean",xmlRequired:false},B2BVATEnabled:{name:"B2BVATEnabled",type:"boolean",xmlRequired:false},CatalogEnabled:{name:"CatalogEnabled",type:"boolean",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},CategoryLevel:{name:"CategoryLevel",type:"int",xmlRequired:false},CategoryName:{name:"CategoryName",type:"string",xmlRequired:false},CategoryParentID:{name:"CategoryParentID",type:"string",xmlRequired:false},CategoryParentName:{name:"CategoryParentName",type:"string",xmlRequired:false},ProductSearchPageAvailable:{name:"ProductSearchPageAvailable",type:"boolean",xmlRequired:false},ProductFinderIDs:{name:"ProductFinderIDs",type:"ExtendedProductFinderIDType",xmlRequired:false},CharacteristicsSets:{name:"CharacteristicsSets",type:"CharacteristicsSetType",xmlRequired:false},Expired:{name:"Expired",type:"boolean",xmlRequired:false},IntlAutosFixedCat:{name:"IntlAutosFixedCat",type:"boolean",xmlRequired:false},LeafCategory:{name:"LeafCategory",type:"boolean",xmlRequired:false},Virtual:{name:"Virtual",type:"boolean",xmlRequired:false},NumOfItems:{name:"NumOfItems",type:"int",xmlRequired:false},SellerGuaranteeEligible:{name:"SellerGuaranteeEligible",type:"boolean",xmlRequired:false},ORPA:{name:"ORPA",type:"boolean",xmlRequired:false},ORRA:{name:"ORRA",type:"boolean",xmlRequired:false},LSD:{name:"LSD",type:"boolean",xmlRequired:false},Keywords:{name:"Keywords",type:"string",xmlRequired:false}},ID:"CategoryType"}),isc.XSComplexType.create({mustQualify:true,fields:{ID:{name:"ID",type:"string",xmlRequired:false}},ID:"CharacteristicSetIDsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AttributeID:{name:"AttributeID",type:"int",xmlRequired:true},DateFormat:{name:"DateFormat",type:"string",xmlRequired:false},DisplaySequence:{name:"DisplaySequence",type:"string",xmlRequired:false},DisplayUOM:{name:"DisplayUOM",type:"string",xmlRequired:false},Label:{name:"Label",type:"LabelType",xmlRequired:false},SortOrder:{name:"SortOrder",type:"SortOrderCodeType",xmlRequired:false},ValueList:{name:"ValueList",type:"ValType",xmlRequired:false}},ID:"CharacteristicType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CharacteristicsSearchCodeType",valueMap:["Single","Multi","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{HistogramEntry:{name:"HistogramEntry",type:"HistogramEntryType",xmlRequired:false}},ID:"CharacteristicsSetProductHistogramType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Name:{name:"Name",type:"string",xmlRequired:false},AttributeSetID:{name:"AttributeSetID",type:"int",xmlRequired:false},AttributeSetVersion:{name:"AttributeSetVersion",type:"string",xmlRequired:false},Characteristics:{name:"Characteristics",type:"CharacteristicType",xmlRequired:false}},ID:"CharacteristicsSetType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{id:{name:"id",type:"string",xmlAttribute:true},type:{name:"type",type:"CharityAffiliationTypeCodeType",xmlAttribute:true}},ID:"CharityAffiliationType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CharityAffiliationTypeCodeType",valueMap:["Community","Direct","Remove","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CharityID:{name:"CharityID",type:"CharityIDType",xmlRequired:false}},ID:"CharityAffiliationsType"}),isc.XSComplexType.create({textContentProperty:"xmlTextContent",mustQualify:true,fields:{type:{name:"type",type:"CharityAffiliationTypeCodeType",xmlRequired:true,xmlAttribute:true},xmlTextContent:{name:"xmlTextContent",type:"string",xmlRequired:false}},xsdSimpleContent:true,ID:"CharityIDType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{id:{name:"id",type:"string",xmlAttribute:true},Name:{name:"Name",type:"string",xmlRequired:false},Mission:{name:"Mission",type:"string",xmlRequired:false},LogoURL:{name:"LogoURL",type:"anyURI",xmlRequired:false},Status:{name:"Status",type:"CharityStatusCodeType",xmlRequired:false},SearchableString:{name:"SearchableString",type:"string",xmlRequired:false},CharityRegion:{name:"CharityRegion",type:"int",xmlRequired:false},CharityDomain:{name:"CharityDomain",type:"int",xmlRequired:false},CharityID:{name:"CharityID",type:"string",xmlRequired:false}},ID:"CharityInfoType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CharitySellerStatusCodeType",valueMap:["Suspended","Registered","Closed","CreditCardExpired","TokenExpired","CreditCardAboutToExpire","RegisteredNoCreditCard","NotRegisteredLostDirectSellerStatus","DirectDebitRejected","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CharitySellerStatus:{name:"CharitySellerStatus",type:"CharitySellerStatusCodeType",xmlRequired:false},CharityAffiliation:{name:"CharityAffiliation",type:"CharityAffiliationType",xmlRequired:false}},ID:"CharitySellerType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CharityStatusCodeType",valueMap:["Valid","NoLongerValid","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CharityName:{name:"CharityName",type:"string",xmlRequired:false},CharityNumber:{name:"CharityNumber",type:"int",xmlRequired:false},DonationPercent:{name:"DonationPercent",type:"float",xmlRequired:false},CharityID:{name:"CharityID",type:"string",xmlRequired:false},Mission:{name:"Mission",type:"string",xmlRequired:false},LogoURL:{name:"LogoURL",type:"string",xmlRequired:false},Status:{name:"Status",type:"CharityStatusCodeType",xmlRequired:false},CharityListing:{name:"CharityListing",type:"boolean",xmlRequired:false}},ID:"CharityType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{URL:{name:"URL",type:"anyURI",xmlRequired:false},Name:{name:"Name",type:"string",xmlRequired:false}},ID:"CheckoutCompleteRedirectType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CheckoutMethodCodeType",valueMap:["Other","ThirdPartyCheckout","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{TotalCartMerchandiseCost:{name:"TotalCartMerchandiseCost",type:"AmountType",xmlRequired:false},TotalCartShippingCost:{name:"TotalCartShippingCost",type:"AmountType",xmlRequired:false},TotalTaxAmount:{name:"TotalTaxAmount",type:"AmountType",xmlRequired:false},TotalAmount:{name:"TotalAmount",type:"AmountType",xmlRequired:false}},ID:"CheckoutOrderDetailType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CheckoutStatusCodeType",valueMap:["CheckoutComplete","CheckoutIncomplete","BuyerRequestsTotal","SellerResponded","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{eBayPaymentStatus:{name:"eBayPaymentStatus",type:"PaymentStatusCodeType",xmlRequired:false},LastModifiedTime:{name:"LastModifiedTime",type:"dateTime",xmlRequired:false},PaymentMethod:{name:"PaymentMethod",type:"BuyerPaymentMethodCodeType",xmlRequired:false},Status:{name:"Status",type:"CompleteStatusCodeType",xmlRequired:false}},ID:"CheckoutStatusType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ClassifiedAdAutoDeclineEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ClassifiedAdBestOfferEnabledCodeType",valueMap:["Disabled","Enabled","Required","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ClassifiedAdBestOfferEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ClassifiedAdContactByEmailEnabledDefintionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ClassifiedAdContactByPhoneEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ClassifiedAdCounterOfferEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ClassifiedAdPayPerLeadEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ClassifiedAdPaymentMethodEnabledCodeType",valueMap:["EnabledWithCheckout","EnabledWithoutCheckout","NotSupported","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ClassifiedAdPaymentMethodEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ClassifiedAdShippingMethodEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CombinedPaymentOptionCodeType",valueMap:["NoCombinedPayment","DiscountSpecified","SpecifyDiscountLater","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"CombinedPaymentPeriodCodeType",valueMap:["Days_3","Days_5","Days_7","Days_14","Days_30","Ineligible","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CalculatedShippingPreferences:{name:"CalculatedShippingPreferences",type:"CalculatedShippingPreferencesType",xmlRequired:false},CombinedPaymentOption:{name:"CombinedPaymentOption",type:"CombinedPaymentOptionCodeType",xmlRequired:false},CombinedPaymentPeriod:{name:"CombinedPaymentPeriod",type:"CombinedPaymentPeriodCodeType",xmlRequired:false},FlatShippingPreferences:{name:"FlatShippingPreferences",type:"FlatShippingPreferencesType",xmlRequired:false}},ID:"CombinedPaymentPreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CommentTypeCodeType",valueMap:["Positive","Neutral","Negative","Withdrawn","IndependentlyWithdrawn","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"CompleteStatusCodeType",valueMap:["Incomplete","Complete","Pending","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ConditionSelectionCodeType",valueMap:["All","New","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{TimeZoneID:{name:"TimeZoneID",type:"string",xmlRequired:false},Hours1Days:{name:"Hours1Days",type:"DaysCodeType",xmlRequired:false},Hours1AnyTime:{name:"Hours1AnyTime",type:"boolean",xmlRequired:false},Hours1From:{name:"Hours1From",type:"time",xmlRequired:false},Hours1To:{name:"Hours1To",type:"time",xmlRequired:false},Hours2Days:{name:"Hours2Days",type:"DaysCodeType",xmlRequired:false},Hours2AnyTime:{name:"Hours2AnyTime",type:"boolean",xmlRequired:false},Hours2From:{name:"Hours2From",type:"time",xmlRequired:false},Hours2To:{name:"Hours2To",type:"time",xmlRequired:false}},ID:"ContactHoursDetailsType"}),isc.XSComplexType.create({mustQualify:true,fields:{Keyword:{name:"Keyword",type:"string",xmlRequired:false},Category:{name:"Category",type:"CategoryType",xmlRequired:false},Ranking:{name:"Ranking",type:"int",xmlRequired:false}},ID:"ContextSearchAssetType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CountryCodeType",valueMap:["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","TP","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IL","IT","JM","JP","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","SN","SC","SL","SG","SK","SI","SB","SO","ZA","GS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","YU","ZM","ZW","AA","QM","QN","QO","QP","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Country:{name:"Country",type:"CountryCodeType",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false}},ID:"CountryDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CrossPromotionEnabled:{name:"CrossPromotionEnabled",type:"boolean",xmlRequired:false},CrossSellItemFormatSortFilter:{name:"CrossSellItemFormatSortFilter",type:"ItemFormatSortFilterCodeType",xmlRequired:false},CrossSellGallerySortFilter:{name:"CrossSellGallerySortFilter",type:"GallerySortFilterCodeType",xmlRequired:false},CrossSellItemSortFilter:{name:"CrossSellItemSortFilter",type:"ItemSortFilterCodeType",xmlRequired:false},UpSellItemFormatSortFilter:{name:"UpSellItemFormatSortFilter",type:"ItemFormatSortFilterCodeType",xmlRequired:false},UpSellGallerySortFilter:{name:"UpSellGallerySortFilter",type:"GallerySortFilterCodeType",xmlRequired:false},UpSellItemSortFilter:{name:"UpSellItemSortFilter",type:"ItemSortFilterCodeType",xmlRequired:false}},ID:"CrossPromotionPreferencesType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},PrimaryScheme:{name:"PrimaryScheme",type:"PromotionSchemeCodeType",xmlRequired:false},PromotionMethod:{name:"PromotionMethod",type:"PromotionMethodCodeType",xmlRequired:false},SellerID:{name:"SellerID",type:"string",xmlRequired:false},ShippingDiscount:{name:"ShippingDiscount",type:"boolean",xmlRequired:true},StoreName:{name:"StoreName",type:"string",xmlRequired:false},PromotedItem:{name:"PromotedItem",type:"PromotedItemType",xmlRequired:false}},ID:"CrossPromotionsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"CurrencyCodeType",valueMap:["AFA","ALL","DZD","ADP","AOA","ARS","AMD","AWG","AZM","BSD","BHD","BDT","BBD","BYR","BZD","BMD","BTN","INR","BOV","BOB","BAM","BWP","BRL","BND","BGL","BGN","BIF","KHR","CAD","CVE","KYD","XAF","CLF","CLP","CNY","COP","KMF","CDF","CRC","HRK","CUP","CYP","CZK","DKK","DJF","DOP","TPE","ECV","ECS","EGP","SVC","ERN","EEK","ETB","FKP","FJD","GMD","GEL","GHC","GIP","GTQ","GNF","GWP","GYD","HTG","HNL","HKD","HUF","ISK","IDR","IRR","IQD","ILS","JMD","JPY","JOD","KZT","KES","AUD","KPW","KRW","KWD","KGS","LAK","LVL","LBP","LSL","LRD","LYD","CHF","LTL","MOP","MKD","MGF","MWK","MYR","MVR","MTL","EUR","MRO","MUR","MXN","MXV","MDL","MNT","XCD","MZM","MMK","ZAR","NAD","NPR","ANG","XPF","NZD","NIO","NGN","NOK","OMR","PKR","PAB","PGK","PYG","PEN","PHP","PLN","USD","QAR","ROL","RUB","RUR","RWF","SHP","WST","STD","SAR","SCR","SLL","SGD","SKK","SIT","SBD","SOS","LKR","SDD","SRG","SZL","SEK","SYP","TWD","TJS","TZS","THB","XOF","TOP","TTD","TND","TRL","TMM","UGX","UAH","AED","GBP","USS","USN","UYU","UZS","VUV","VEB","VND","MAD","YER","YUM","ZMK","ZWD","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Currency:{name:"Currency",type:"CurrencyCodeType",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false}},ID:"CurrencyDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{attributeSetID:{name:"attributeSetID",type:"int",xmlAttribute:true},DataElement:{name:"DataElement",type:"string",xmlRequired:false},DataElementID:{name:"DataElementID",type:"int",xmlRequired:false}},ID:"DataElementSetType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DateSpecifierCodeType",valueMap:["M","D","Y","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Year:{name:"Year",type:"int",xmlRequired:false},Month:{name:"Month",type:"int",xmlRequired:false},Day:{name:"Day",type:"int",xmlRequired:false}},ID:"DateType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DaysCodeType",valueMap:["None","EveryDay","Weekdays","Weekends","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DepositTypeCodeType",valueMap:["None","OtherMethod","FastDeposit","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DescriptionReviseModeCodeType",valueMap:["Replace","Prepend","Append","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DescriptionTemplateCodeType",valueMap:["Layout","Theme","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{GroupID:{name:"GroupID",type:"int",xmlRequired:false},ID:{name:"ID",type:"int",xmlRequired:false},ImageURL:{name:"ImageURL",type:"anyURI",xmlRequired:false},Name:{name:"Name",type:"string",xmlRequired:false},TemplateXML:{name:"TemplateXML",type:"string",xmlRequired:false},Type:{name:"Type",type:"DescriptionTemplateCodeType",xmlRequired:false}},ID:"DescriptionTemplateType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DetailNameCodeType",valueMap:["CountryDetails","CurrencyDetails","PaymentOptionDetails","RegionDetails","ShippingLocationDetails","ShippingServiceDetails","SiteDetails","TaxJurisdiction","URLDetails","TimeZoneDetails","CustomCode","DispatchTimeMaxDetails"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DeviceTypeCodeType",valueMap:["Platform","SMS","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Requirements:{name:"Requirements",type:"string",xmlRequired:false},Method:{name:"Method",type:"DigitalDeliveryMethodCodeType",xmlRequired:false},URL:{name:"URL",type:"anyURI",xmlRequired:false},Instructions:{name:"Instructions",type:"string",xmlRequired:false}},ID:"DigitalDeliveryDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DigitalDeliveryEnabledCodeType",valueMap:["Disabled","Enabled","Promoted","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"DigitalDeliveryEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DigitalDeliveryMethodCodeType",valueMap:["None","DownloadURL","AlternateDeliveryInstructions","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DiscountCodeType",valueMap:["Percentage","Price","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"DiscountNameCodeType",valueMap:["EachAdditionalAmount","EachAdditionalAmountOff","EachAdditionalPercentOff","IndividualItemWeight","CombinedItemWeight","WeightOff","ShippingCostXForAmountY","ShippingCostXForItemCountN","MaximumShippingCostPerOrder","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DiscountProfileID:{name:"DiscountProfileID",type:"string",xmlRequired:false},DiscountProfileName:{name:"DiscountProfileName",type:"string",xmlRequired:false},EachAdditionalAmount:{name:"EachAdditionalAmount",type:"AmountType",xmlRequired:false},EachAdditionalAmountOff:{name:"EachAdditionalAmountOff",type:"AmountType",xmlRequired:false},EachAdditionalPercentOff:{name:"EachAdditionalPercentOff",type:"float",xmlRequired:false},WeightOff:{name:"WeightOff",type:"MeasureType",xmlRequired:false},MappedDiscountProfileID:{name:"MappedDiscountProfileID",type:"string",xmlRequired:false}},ID:"DiscountProfileType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DispatchTimeMax:{name:"DispatchTimeMax",type:"int",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false}},ID:"DispatchTimeMaxDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"DisplayPayNowButtonCodeType",valueMap:["ShowPayNowButtonForAllPaymentMethods","ShowPayNowButtonForPayPalOnly","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{Dispute:{name:"Dispute",type:"DisputeType",xmlRequired:false}},ID:"DisputeArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DisputeID:{name:"DisputeID",type:"DisputeIDType",xmlRequired:false},DisputeRecordType:{name:"DisputeRecordType",type:"DisputeRecordTypeCodeType",xmlRequired:false},DisputeState:{name:"DisputeState",type:"DisputeStateCodeType",xmlRequired:false},DisputeStatus:{name:"DisputeStatus",type:"DisputeStatusCodeType",xmlRequired:false},OtherPartyRole:{name:"OtherPartyRole",type:"TradingRoleCodeType",xmlRequired:false},OtherPartyName:{name:"OtherPartyName",type:"string",xmlRequired:false},UserRole:{name:"UserRole",type:"TradingRoleCodeType",xmlRequired:false},BuyerUserID:{name:"BuyerUserID",type:"UserIDType",xmlRequired:false},SellerUserID:{name:"SellerUserID",type:"UserIDType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},Item:{name:"Item",type:"ItemType",xmlRequired:false},DisputeReason:{name:"DisputeReason",type:"DisputeReasonCodeType",xmlRequired:false},DisputeExplanation:{name:"DisputeExplanation",type:"DisputeExplanationCodeType",xmlRequired:false},DisputeCreditEligibility:{name:"DisputeCreditEligibility",type:"DisputeCreditEligibilityCodeType",xmlRequired:false},DisputeCreatedTime:{name:"DisputeCreatedTime",type:"dateTime",xmlRequired:false},DisputeModifiedTime:{name:"DisputeModifiedTime",type:"dateTime",xmlRequired:false},DisputeResolution:{name:"DisputeResolution",type:"DisputeResolutionType",xmlRequired:false},DisputeMessage:{name:"DisputeMessage",type:"DisputeMessageType",xmlRequired:false},Escalation:{name:"Escalation",type:"boolean",xmlRequired:false},PurchaseProtection:{name:"PurchaseProtection",type:"boolean",xmlRequired:false}},ID:"DisputeType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DistanceMeasurement:{name:"DistanceMeasurement",type:"int",xmlRequired:true},DistanceUnit:{name:"DistanceUnit",type:"string",xmlRequired:false}},ID:"DistanceType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Department:{name:"Department",type:"ExpressHistogramDepartmentType",xmlRequired:false}},ID:"DomainHistogramType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"DutchBINEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"EBaySubscriptionTypeCodeType",valueMap:["SellerAssistant","SellerAssistantPro","EBayStoreBasic","EBayStoreFeatured","EBayStoreAnchor","SellingManager","SellingManagerPro","PictureManagerLevel1","PictureManagerLevel2","PictureManagerLevel3","PictureManagerLevel4","PictureManagerLevel5","PictureManagerLevel6","PictureManagerLevel7","SellerReportsBasic","SellerReportsPlus","FileExchange","LocalMarketSpecialty","LocalMarketRegular","LocalMarketPremium","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"EnableCodeType",valueMap:["Enable","Disable","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{TemplateText:{name:"TemplateText",type:"string",xmlRequired:false},LogoURL:{name:"LogoURL",type:"anyURI",xmlRequired:false},LogoType:{name:"LogoType",type:"EndOfAuctionLogoTypeCodeType",xmlRequired:false},EmailCustomized:{name:"EmailCustomized",type:"boolean",xmlRequired:false},TextCustomized:{name:"TextCustomized",type:"boolean",xmlRequired:false},LogoCustomized:{name:"LogoCustomized",type:"boolean",xmlRequired:false},CopyEmail:{name:"CopyEmail",type:"boolean",xmlRequired:false}},ID:"EndOfAuctionEmailPreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"EndOfAuctionLogoTypeCodeType",valueMap:["WinningBidderNotice","Store","Customized","CustomCode","None"]}),isc.SimpleType.create({inheritsFrom:"token",name:"EndReasonCodeType",valueMap:["LostOrBroken","NotAvailable","Incorrect","OtherListingError","CustomCode","SellToHighBidder"]}),isc.SimpleType.create({inheritsFrom:"token",name:"EscrowCodeType",valueMap:["ByBuyer","BySeller","None","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{ExpansionItem:{name:"ExpansionItem",type:"SearchResultItemType",xmlRequired:false},TotalAvailable:{name:"TotalAvailable",type:"int",xmlRequired:false}},ID:"ExpansionArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ExpressConditionRequiredDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ExpressDetailLevelCodeType",valueMap:["Coarse","Fine","None","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ExpressLargeImage:{name:"ExpressLargeImage",type:"anyURI",xmlRequired:false},ExpressSmallImage:{name:"ExpressSmallImage",type:"anyURI",xmlRequired:false},Condition:{name:"Condition",type:"string",xmlRequired:false}},ID:"ExpressDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ExpressEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DomainDetails:{name:"DomainDetails",type:"ExpressHistogramDomainDetailsType",xmlRequired:false},ProductType:{name:"ProductType",type:"ExpressHistogramProductType",xmlRequired:false}},ID:"ExpressHistogramAisleType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DomainDetails:{name:"DomainDetails",type:"ExpressHistogramDomainDetailsType",xmlRequired:false},Aisle:{name:"Aisle",type:"ExpressHistogramAisleType",xmlRequired:false}},ID:"ExpressHistogramDepartmentType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Name:{name:"Name",type:"string",xmlRequired:false},BreadCrumb:{name:"BreadCrumb",type:"string",xmlRequired:false},ItemCount:{name:"ItemCount",type:"int",xmlRequired:false},ProductCount:{name:"ProductCount",type:"int",xmlRequired:false},ImageURL:{name:"ImageURL",type:"anyURI",xmlRequired:false}},ID:"ExpressHistogramDomainDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DomainDetails:{name:"DomainDetails",type:"ExpressHistogramDomainDetailsType",xmlRequired:false}},ID:"ExpressHistogramProductType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ExpressHistogramSortCodeType",valueMap:["ItemCount","ProductCount","Alphabetical","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SellerExpressEligible:{name:"SellerExpressEligible",type:"boolean",xmlRequired:false},ExpressOptOut:{name:"ExpressOptOut",type:"boolean",xmlRequired:false},ExpressApproved:{name:"ExpressApproved",type:"boolean",xmlRequired:false},ExpressEligibleListingType:{name:"ExpressEligibleListingType",type:"boolean",xmlRequired:false},ExpressEnabledCategory:{name:"ExpressEnabledCategory",type:"boolean",xmlRequired:false},EligiblePayPalAccount:{name:"EligiblePayPalAccount",type:"boolean",xmlRequired:false},DomesticShippingCost:{name:"DomesticShippingCost",type:"boolean",xmlRequired:false},EligibleReturnPolicy:{name:"EligibleReturnPolicy",type:"boolean",xmlRequired:false},Picture:{name:"Picture",type:"boolean",xmlRequired:false},EligibleItemCondition:{name:"EligibleItemCondition",type:"boolean",xmlRequired:false},PriceAboveMinimum:{name:"PriceAboveMinimum",type:"boolean",xmlRequired:false},PriceBelowMaximum:{name:"PriceBelowMaximum",type:"boolean",xmlRequired:false},EligibleCheckout:{name:"EligibleCheckout",type:"boolean",xmlRequired:false},NoPreapprovedBidderList:{name:"NoPreapprovedBidderList",type:"boolean",xmlRequired:false},NoCharity:{name:"NoCharity",type:"boolean",xmlRequired:false},NoDigitalDelivery:{name:"NoDigitalDelivery",type:"boolean",xmlRequired:false},CombinedShippingDiscount:{name:"CombinedShippingDiscount",type:"boolean",xmlRequired:false},ShipFromEligibleCountry:{name:"ShipFromEligibleCountry",type:"boolean",xmlRequired:false},PayPalAccountAcceptsUnconfirmedAddress:{name:"PayPalAccountAcceptsUnconfirmedAddress",type:"boolean",xmlRequired:false}},ID:"ExpressItemRequirementsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ExpressItemSortCodeType",valueMap:["LowestTotalCost","HighestTotalCost","Relevance","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ExpressPicturesRequiredDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ExpressSellingPreference:{name:"ExpressSellingPreference",type:"ExpressSellingPreferenceCodeType",xmlRequired:false},DefaultPayPalAccount:{name:"DefaultPayPalAccount",type:"string",xmlRequired:false}},ID:"ExpressPreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ExpressProductSortCodeType",valueMap:["LowestPrice","HighestPrice","SalesRank","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Title:{name:"Title",type:"string",xmlRequired:false},MinPrice:{name:"MinPrice",type:"AmountType",xmlRequired:false},MaxPrice:{name:"MaxPrice",type:"AmountType",xmlRequired:false},StockPhotoURL:{name:"StockPhotoURL",type:"anyURI",xmlRequired:false},ItemCount:{name:"ItemCount",type:"int",xmlRequired:false},ExternalProductID:{name:"ExternalProductID",type:"ExternalProductIDType",xmlRequired:false},ProductReferenceID:{name:"ProductReferenceID",type:"long",xmlRequired:false},ItemSpecifics:{name:"ItemSpecifics",type:"NameValueListArrayType",xmlRequired:false}},ID:"ExpressProductType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ExpressSellingPreference:{name:"ExpressSellingPreference",type:"boolean",xmlRequired:false},ExpressApproved:{name:"ExpressApproved",type:"boolean",xmlRequired:false},GoodStanding:{name:"GoodStanding",type:"boolean",xmlRequired:false},FeedbackScore:{name:"FeedbackScore",type:"FeedbackRequirementsType",xmlRequired:false},PositiveFeedbackPercent:{name:"PositiveFeedbackPercent",type:"FeedbackRequirementsType",xmlRequired:false},FeedbackAsSellerScore:{name:"FeedbackAsSellerScore",type:"FeedbackRequirementsType",xmlRequired:false},PositiveFeedbackAsSellerPercent:{name:"PositiveFeedbackAsSellerPercent",type:"FeedbackRequirementsType",xmlRequired:false},BusinessSeller:{name:"BusinessSeller",type:"boolean",xmlRequired:false},EligiblePayPalAccount:{name:"EligiblePayPalAccount",type:"boolean",xmlRequired:false},PayPalAccountAcceptsUnconfirmedAddress:{name:"PayPalAccountAcceptsUnconfirmedAddress",type:"boolean",xmlRequired:false},CombinedPaymentsAccepted:{name:"CombinedPaymentsAccepted",type:"boolean",xmlRequired:false},FeedbackPublic:{name:"FeedbackPublic",type:"boolean",xmlRequired:false}},ID:"ExpressSellerRequirementsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ExpressSellingPreferenceCodeType",valueMap:["All","ExpressOnly","OptOut","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ContactHoursDetails:{name:"ContactHoursDetails",type:"ContactHoursDetailsType",xmlRequired:false},ClassifiedAdContactByEmailEnabled:{name:"ClassifiedAdContactByEmailEnabled",type:"boolean",xmlRequired:false},PayPerLeadPhoneNumber:{name:"PayPerLeadPhoneNumber",type:"string",xmlRequired:false}},ID:"ExtendedContactDetailsType"}),isc.XSComplexType.create({mustQualify:true,fields:{ProductFinderID:{name:"ProductFinderID",type:"int",xmlRequired:false},ProductFinderBuySide:{name:"ProductFinderBuySide",type:"boolean",xmlRequired:false}},ID:"ExtendedProductFinderIDType"}),isc.XSComplexType.create({mustQualify:true,fields:{ExternalAlertID:{name:"ExternalAlertID",type:"string",xmlRequired:false}},ID:"ExternalAlertIDArrayType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ExternalProductCodeType",valueMap:["ISBN","UPC","ProductID","EAN","Keywords","MPN","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Value:{name:"Value",type:"string",xmlRequired:false},ReturnSearchResultOnDuplicates:{name:"ReturnSearchResultOnDuplicates",type:"boolean",xmlRequired:false},Type:{name:"Type",type:"ExternalProductCodeType",xmlRequired:false},AlternateValue:{name:"AlternateValue",type:"string",xmlRequired:false}},ID:"ExternalProductIDType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ExternalTransactionID:{name:"ExternalTransactionID",type:"string",xmlRequired:false},ExternalTransactionTime:{name:"ExternalTransactionTime",type:"dateTime",xmlRequired:false},FeeOrCreditAmount:{name:"FeeOrCreditAmount",type:"AmountType",xmlRequired:false},PaymentOrRefundAmount:{name:"PaymentOrRefundAmount",type:"AmountType",xmlRequired:false}},ID:"ExternalTransactionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ListingDurations:{name:"ListingDurations",type:"ListingDurationDefinitionsType",xmlRequired:false},ShippingTermsRequired:{name:"ShippingTermsRequired",type:"ShippingTermRequiredDefinitionType",xmlRequired:false},BestOfferEnabled:{name:"BestOfferEnabled",type:"BestOfferEnabledDefinitionType",xmlRequired:false},DutchBINEnabled:{name:"DutchBINEnabled",type:"DutchBINEnabledDefinitionType",xmlRequired:false},UserConsentRequired:{name:"UserConsentRequired",type:"UserConsentRequiredDefinitionType",xmlRequired:false},HomePageFeaturedEnabled:{name:"HomePageFeaturedEnabled",type:"HomePageFeaturedEnabledDefinitionType",xmlRequired:false},ProPackEnabled:{name:"ProPackEnabled",type:"ProPackEnabledDefinitionType",xmlRequired:false},BasicUpgradePackEnabled:{name:"BasicUpgradePackEnabled",type:"BasicUpgradePackEnabledDefinitionType",xmlRequired:false},ValuePackEnabled:{name:"ValuePackEnabled",type:"ValuePackEnabledDefinitionType",xmlRequired:false},ProPackPlusEnabled:{name:"ProPackPlusEnabled",type:"ProPackPlusEnabledDefinitionType",xmlRequired:false},AdFormatEnabled:{name:"AdFormatEnabled",type:"AdFormatEnabledDefinitionType",xmlRequired:false},DigitalDeliveryEnabled:{name:"DigitalDeliveryEnabled",type:"DigitalDeliveryEnabledDefinitionType",xmlRequired:false},BestOfferCounterEnabled:{name:"BestOfferCounterEnabled",type:"BestOfferCounterEnabledDefinitionType",xmlRequired:false},BestOfferAutoDeclineEnabled:{name:"BestOfferAutoDeclineEnabled",type:"BestOfferAutoDeclineEnabledDefinitionType",xmlRequired:false},LocalMarketSpecialitySubscription:{name:"LocalMarketSpecialitySubscription",type:"LocalMarketSpecialitySubscriptionDefinitionType",xmlRequired:false},LocalMarketRegularSubscription:{name:"LocalMarketRegularSubscription",type:"LocalMarketRegularSubscriptionDefinitionType",xmlRequired:false},LocalMarketPremiumSubscription:{name:"LocalMarketPremiumSubscription",type:"LocalMarketPremiumSubscriptionDefinitionType",xmlRequired:false},LocalMarketNonSubscription:{name:"LocalMarketNonSubscription",type:"LocalMarketNonSubscriptionDefinitionType",xmlRequired:false},ExpressEnabled:{name:"ExpressEnabled",type:"ExpressEnabledDefinitionType",xmlRequired:false},ExpressPicturesRequired:{name:"ExpressPicturesRequired",type:"ExpressPicturesRequiredDefinitionType",xmlRequired:false},ExpressConditionRequired:{name:"ExpressConditionRequired",type:"ExpressConditionRequiredDefinitionType",xmlRequired:false},MinimumReservePrice:{name:"MinimumReservePrice",type:"MinimumReservePriceDefinitionType",xmlRequired:false},TransactionConfirmationRequestEnabled:{name:"TransactionConfirmationRequestEnabled",type:"TCREnabledDefinitionType",xmlRequired:false},SellerContactDetailsEnabled:{name:"SellerContactDetailsEnabled",type:"SellerContactDetailsEnabledDefinitionType",xmlRequired:false},StoreInventoryEnabled:{name:"StoreInventoryEnabled",type:"StoreInventoryEnabledDefinitionType",xmlRequired:false},SkypeMeTransactionalEnabled:{name:"SkypeMeTransactionalEnabled",type:"SkypeMeTransactionalEnabledDefinitionType",xmlRequired:false},SkypeMeNonTransactionalEnabled:{name:"SkypeMeNonTransactionalEnabled",type:"SkypeMeNonTransactionalEnabledDefinitionType",xmlRequired:false},LocalListingDistancesRegular:{name:"LocalListingDistancesRegular",type:"LocalListingDistancesRegularDefinitionType",xmlRequired:false},LocalListingDistancesSpecialty:{name:"LocalListingDistancesSpecialty",type:"LocalListingDistancesSpecialtyDefinitionType",xmlRequired:false},LocalListingDistancesNonSubscription:{name:"LocalListingDistancesNonSubscription",type:"LocalListingDistancesNonSubscriptionDefinitionType",xmlRequired:false},ClassifiedAdPaymentMethodEnabled:{name:"ClassifiedAdPaymentMethodEnabled",type:"ClassifiedAdPaymentMethodEnabledDefinitionType",xmlRequired:false},ClassifiedAdShippingMethodEnabled:{name:"ClassifiedAdShippingMethodEnabled",type:"ClassifiedAdShippingMethodEnabledDefinitionType",xmlRequired:false},ClassifiedAdBestOfferEnabled:{name:"ClassifiedAdBestOfferEnabled",type:"ClassifiedAdBestOfferEnabledDefinitionType",xmlRequired:false},ClassifiedAdCounterOfferEnabled:{name:"ClassifiedAdCounterOfferEnabled",type:"ClassifiedAdCounterOfferEnabledDefinitionType",xmlRequired:false},ClassifiedAdAutoDeclineEnabled:{name:"ClassifiedAdAutoDeclineEnabled",type:"ClassifiedAdAutoDeclineEnabledDefinitionType",xmlRequired:false},ClassifiedAdContactByPhoneEnabled:{name:"ClassifiedAdContactByPhoneEnabled",type:"ClassifiedAdContactByPhoneEnabledDefinitionType",xmlRequired:false},ClassifiedAdContactByEmailEnabled:{name:"ClassifiedAdContactByEmailEnabled",type:"ClassifiedAdContactByEmailEnabledDefintionType",xmlRequired:false},SafePaymentRequired:{name:"SafePaymentRequired",type:"SafePaymentRequiredDefinitionType",xmlRequired:false},ClassifiedAdPayPerLeadEnabled:{name:"ClassifiedAdPayPerLeadEnabled",type:"ClassifiedAdPayPerLeadEnabledDefinitionType",xmlRequired:false}},ID:"FeatureDefinitionsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"FeatureIDCodeType",valueMap:["ListingDurations","BestOfferEnabled","DutchBINEnabled","ShippingTermsRequired","UserConsentRequired","HomePageFeaturedEnabled","AdFormatEnabled","DigitalDeliveryEnabled","BestOfferCounterEnabled","BestOfferAutoDeclineEnabled","ProPack","BasicUpgradePack","ValuePack","ProPackPlus","LocalMarketSpecialitySubscription","LocalMarketRegularSubscription","LocalMarketPremiumSubscription","LocalMarketNonSubscription","ExpressEnabled","ExpressPicturesRequired","ExpressConditionRequired","SellerContactDetailsEnabled","CustomCode","MinimumReservePrice","TransactionConfirmationRequestEnabled","StoreInventoryEnabled","LocalListingDistances","SkypeMeTransactionalEnabled","SkypeMeNonTransactionalEnabled","ClassifiedAdPaymentMethodEnabled","ClassifiedAdShippingMethodEnabled","ClassifiedAdBestOfferEnabled","ClassifiedAdCounterOfferEnabled","ClassifiedAdAutoDeclineEnabled","ClassifiedAdContactByEmailEnabled","ClassifiedAdContactByPhoneEnabled","SafePaymentRequired","MaximumBestOffersAllowed","ClassifiedAdMaximumBestOffersAllowed","ClassifiedAdContactByEmailAvailable","ClassifiedAdPayPerLeadEnabled"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Name:{name:"Name",type:"string",xmlRequired:false},Fee:{name:"Fee",type:"AmountType",xmlRequired:false}},ID:"FeeType"}),isc.XSComplexType.create({mustQualify:true,fields:{FeedbackDetail:{name:"FeedbackDetail",type:"FeedbackDetailType",xmlRequired:false}},ID:"FeedbackDetailArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CommentingUser:{name:"CommentingUser",type:"UserIDType",xmlRequired:false},CommentingUserScore:{name:"CommentingUserScore",type:"int",xmlRequired:false},CommentText:{name:"CommentText",type:"string",xmlRequired:false},CommentTime:{name:"CommentTime",type:"dateTime",xmlRequired:false},CommentType:{name:"CommentType",type:"CommentTypeCodeType",xmlRequired:false},FeedbackResponse:{name:"FeedbackResponse",type:"string",xmlRequired:false},Followup:{name:"Followup",type:"string",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},Role:{name:"Role",type:"TradingRoleCodeType",xmlRequired:false},ItemTitle:{name:"ItemTitle",type:"string",xmlRequired:false},ItemPrice:{name:"ItemPrice",type:"AmountType",xmlRequired:false},FeedbackID:{name:"FeedbackID",type:"string",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},CommentReplaced:{name:"CommentReplaced",type:"boolean",xmlRequired:false},ResponseReplaced:{name:"ResponseReplaced",type:"boolean",xmlRequired:false},FollowUpReplaced:{name:"FollowUpReplaced",type:"boolean",xmlRequired:false},Countable:{name:"Countable",type:"boolean",xmlRequired:false}},ID:"FeedbackDetailType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CommentText:{name:"CommentText",type:"string",xmlRequired:false},CommentType:{name:"CommentType",type:"CommentTypeCodeType",xmlRequired:false},TargetUser:{name:"TargetUser",type:"UserIDType",xmlRequired:false}},ID:"FeedbackInfoType"}),isc.XSComplexType.create({mustQualify:true,fields:{FeedbackPeriod:{name:"FeedbackPeriod",type:"FeedbackPeriodType",xmlRequired:false}},ID:"FeedbackPeriodArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{PeriodInDays:{name:"PeriodInDays",type:"int",xmlRequired:false},Count:{name:"Count",type:"int",xmlRequired:false}},ID:"FeedbackPeriodType"}),isc.SimpleType.create({inheritsFrom:"token",name:"FeedbackRatingDetailCodeType",valueMap:["ItemAsDescribed","Communication","ShippingTime","ShippingAndHandlingCharges","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"FeedbackRatingStarCodeType",valueMap:["None","Yellow","Blue","Turquoise","Purple","Red","Green","YellowShooting","TurquoiseShooting","PurpleShooting","RedShooting","CustomCode"]}),isc.XSComplexType.create({textContentProperty:"xmlTextContent",mustQualify:true,fields:{minimum:{name:"minimum",type:"string",xmlAttribute:true},xmlTextContent:{name:"xmlTextContent",type:"boolean",xmlRequired:false}},xsdSimpleContent:true,ID:"FeedbackRequirementsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"FeedbackResponseCodeType",valueMap:["Reply","FollowUp"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BidRetractionFeedbackPeriodArray:{name:"BidRetractionFeedbackPeriodArray",type:"FeedbackPeriodArrayType",xmlRequired:false},NegativeFeedbackPeriodArray:{name:"NegativeFeedbackPeriodArray",type:"FeedbackPeriodArrayType",xmlRequired:false},NeutralFeedbackPeriodArray:{name:"NeutralFeedbackPeriodArray",type:"FeedbackPeriodArrayType",xmlRequired:false},PositiveFeedbackPeriodArray:{name:"PositiveFeedbackPeriodArray",type:"FeedbackPeriodArrayType",xmlRequired:false},TotalFeedbackPeriodArray:{name:"TotalFeedbackPeriodArray",type:"FeedbackPeriodArrayType",xmlRequired:false},NeutralCommentCountFromSuspendedUsers:{name:"NeutralCommentCountFromSuspendedUsers",type:"int",xmlRequired:false},UniqueNegativeFeedbackCount:{name:"UniqueNegativeFeedbackCount",type:"int",xmlRequired:false},UniquePositiveFeedbackCount:{name:"UniquePositiveFeedbackCount",type:"int",xmlRequired:false},SellerAverageRatingDetailArray:{name:"SellerAverageRatingDetailArray",type:"AverageRatingDetailArrayType",xmlRequired:false}},ID:"FeedbackSummaryType"}),isc.XSComplexType.create({mustQualify:true,fields:{Fee:{name:"Fee",type:"FeeType",xmlRequired:false}},ID:"FeesType"}),isc.XSComplexType.create({mustQualify:true,fields:{FinanceOffer:{name:"FinanceOffer",type:"FinanceOfferType",xmlRequired:false}},ID:"FinanceOfferArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{FinanceOfferID:{name:"FinanceOfferID",type:"string",xmlRequired:false},BuyerTerms:{name:"BuyerTerms",type:"string",xmlRequired:false},SellerTerms:{name:"SellerTerms",type:"string",xmlRequired:false},StartDate:{name:"StartDate",type:"dateTime",xmlRequired:false},LastModifiedDate:{name:"LastModifiedDate",type:"dateTime",xmlRequired:false},MinimumAmount:{name:"MinimumAmount",type:"AmountType",xmlRequired:false},RateFactor:{name:"RateFactor",type:"double",xmlRequired:true},Priority:{name:"Priority",type:"int",xmlRequired:true}},ID:"FinanceOfferType"}),isc.SimpleType.create({inheritsFrom:"token",name:"FlatRateInsuranceRangeCodeType",valueMap:["FlatRateInsuranceRange1","FlatRateInsuranceRange2","FlatRateInsuranceRange3","FlatRateInsuranceRange4","FlatRateInsuranceRange5","FlatRateInsuranceRange6","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{FlatRateInsuranceRange:{name:"FlatRateInsuranceRange",type:"FlatRateInsuranceRangeCodeType",xmlRequired:false},InsuranceCost:{name:"InsuranceCost",type:"AmountType",xmlRequired:false}},ID:"FlatRateInsuranceRangeCostType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DiscountName:{name:"DiscountName",type:"DiscountNameCodeType",xmlRequired:false},DiscountProfile:{name:"DiscountProfile",type:"DiscountProfileType",xmlRequired:false}},ID:"FlatShippingDiscountType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AmountPerAdditionalItem:{name:"AmountPerAdditionalItem",type:"AmountType",xmlRequired:false},DeductionAmountPerAdditionalItem:{name:"DeductionAmountPerAdditionalItem",type:"AmountType",xmlRequired:false},FlatRateInsuranceRangeCost:{name:"FlatRateInsuranceRangeCost",type:"FlatRateInsuranceRangeCostType",xmlRequired:false},FlatShippingRateOption:{name:"FlatShippingRateOption",type:"FlatShippingRateOptionCodeType",xmlRequired:false},InsuranceOption:{name:"InsuranceOption",type:"InsuranceOptionCodeType",xmlRequired:false}},ID:"FlatShippingPreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"FlatShippingRateOptionCodeType",valueMap:["ChargeAmountForEachAdditionalItem","DeductAmountFromEachAdditionalItem","ShipAdditionalItemsFree","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"GallerySortFilterCodeType",valueMap:["ShowAnyItems","ShowItemsWithGalleryImagesFirst","ShowOnlyItemsWithGalleryImages","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"GalleryTypeCodeType",valueMap:["None","Featured","Gallery","Plus","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"GeneralPaymentMethodCodeType",valueMap:["Other","Echeck","ACH","Creditcard","PayPalBalance","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"GetAllBiddersModeCodeType",valueMap:["ViewAll","EndedListing","SecondChanceEligibleEndedListing","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ListingFlow:{name:"ListingFlow",type:"ListingFlowCodeType",xmlRequired:false},Item:{name:"Item",type:"ItemType",xmlRequired:false},RecommendationEngine:{name:"RecommendationEngine",type:"RecommendationEngineCodeType",xmlRequired:false},Query:{name:"Query",type:"string",xmlRequired:false},CorrelationID:{name:"CorrelationID",type:"string",xmlRequired:false},DeletedField:{name:"DeletedField",type:"string",xmlRequired:false}},ID:"GetRecommendationsRequestContainerType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ListingAnalyzerRecommendations:{name:"ListingAnalyzerRecommendations",type:"ListingAnalyzerRecommendationsType",xmlRequired:false},SIFFTASRecommendations:{name:"SIFFTASRecommendations",type:"SIFFTASRecommendationsType",xmlRequired:false},PricingRecommendations:{name:"PricingRecommendations",type:"PricingRecommendationsType",xmlRequired:false},AttributeRecommendations:{name:"AttributeRecommendations",type:"AttributeRecommendationsType",xmlRequired:false},ProductRecommendations:{name:"ProductRecommendations",type:"ProductRecommendationsType",xmlRequired:false},CorrelationID:{name:"CorrelationID",type:"string",xmlRequired:false}},ID:"GetRecommendationsResponseContainerType"}),isc.SimpleType.create({inheritsFrom:"token",name:"GiftServicesCodeType",valueMap:["GiftExpressShipping","GiftShipToRecipient","GiftWrap","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"GranularityLevelCodeType",valueMap:["Coarse","Fine","Medium"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{MaxGroups:{name:"MaxGroups",type:"int",xmlRequired:false},MaxEntriesPerGroup:{name:"MaxEntriesPerGroup",type:"int",xmlRequired:false}},ID:"GroupType"}),isc.SimpleType.create({inheritsFrom:"token",name:"HandlingNameCodeType",valueMap:["EachAdditionalAmount","EachAdditionalAmountOff","EachAdditionalPercentOff","IndividualHandlingFee","CombinedHandlingFee","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{id:{name:"id",type:"string",xmlAttribute:true},name:{name:"name",type:"string",xmlAttribute:true},Count:{name:"Count",type:"int",xmlRequired:false}},ID:"HistogramEntryType"}),isc.SimpleType.create({inheritsFrom:"token",name:"HitCounterCodeType",valueMap:["NoHitCounter","HonestyStyle","GreenLED","Hidden","BasicStyle","RetroStyle","HiddenStyle","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"HomePageFeaturedEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{InsuranceFee:{name:"InsuranceFee",type:"AmountType",xmlRequired:false},InsuranceOption:{name:"InsuranceOption",type:"InsuranceOptionCodeType",xmlRequired:false}},ID:"InsuranceDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"InsuranceOptionCodeType",valueMap:["Optional","Required","NotOffered","IncludedInShippingHandling","NotOfferedOnSite","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"InsuranceSelectedCodeType",valueMap:["NotOffered","OfferedNotSelected","OfferedSelected","Required","IncludedInShippingHandling","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ShippingService:{name:"ShippingService",type:"token",xmlRequired:false},ShippingServiceCost:{name:"ShippingServiceCost",type:"AmountType",xmlRequired:false},ShippingServiceAdditionalCost:{name:"ShippingServiceAdditionalCost",type:"AmountType",xmlRequired:false},ShippingServicePriority:{name:"ShippingServicePriority",type:"int",xmlRequired:false},ShipToLocation:{name:"ShipToLocation",type:"string",xmlRequired:false},ShippingInsuranceCost:{name:"ShippingInsuranceCost",type:"AmountType",xmlRequired:false}},ID:"InternationalShippingServiceOptionsType"}),isc.XSComplexType.create({mustQualify:true,fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false}},ID:"ItemArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},BidCount:{name:"BidCount",type:"int",xmlRequired:false},SellerID:{name:"SellerID",type:"UserIDType",xmlRequired:false},LastBidTime:{name:"LastBidTime",type:"dateTime",xmlRequired:false}},ID:"ItemBidDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ItemConditionCodeType",valueMap:["New","Used","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ItemFormatSortFilterCodeType",valueMap:["ShowAnyItems","ShowItemsWithBINFirst","ShowOnlyItemsWithBIN","ShowOnlyStoreItems","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false}},ID:"ItemIDArrayType"}),isc.SimpleType.create({inheritsFrom:"string",name:"ItemIDType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Include:{name:"Include",type:"boolean",xmlRequired:false},ListingType:{name:"ListingType",type:"ListingTypeCodeType",xmlRequired:false},Sort:{name:"Sort",type:"ItemSortTypeCodeType",xmlRequired:false},DurationInDays:{name:"DurationInDays",type:"int",xmlRequired:false},IncludeNotes:{name:"IncludeNotes",type:"boolean",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false}},ID:"ItemListCustomizationType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ItemLocationCodeType",valueMap:["ItemAvailableIn","ItemLocatedIn","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{ItemRatingDetails:{name:"ItemRatingDetails",type:"ItemRatingDetailsType",xmlRequired:false}},ID:"ItemRatingDetailArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{RatingDetail:{name:"RatingDetail",type:"FeedbackRatingDetailCodeType",xmlRequired:false},Rating:{name:"Rating",type:"int",xmlRequired:false}},ID:"ItemRatingDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ItemSortFilterCodeType",valueMap:["EndingLast","EndingSoonest","HighestPrice","LowestPrice","NewlyListed","RandomlySelected","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ItemSortTypeCodeType",valueMap:["ItemID","Price","StartPrice","Title","BidCount","Quantity","StartTime","EndTime","SellerUserID","TimeLeft","ListingDuration","ListingType","CurrentPrice","ReservePrice","MaxBid","BidderCount","HighBidderUserID","BuyerUserID","BuyerPostalCode","BuyerEmail","SellerEmail","TotalPrice","WatchCount","BestOfferCount","QuestionCount","ShippingServiceCost","FeedbackReceived","FeedbackLeft","UserID","QuantitySold","BestOffer","QuantityAvailable","QuantityPurchased","WonPlatform","SoldPlatform","ListingDurationDescending","ListingTypeDescending","CurrentPriceDescending","ReservePriceDescending","MaxBidDescending","BidderCountDescending","HighBidderUserIDDescending","BuyerUserIDDescending","BuyerPostalCodeDescending","BuyerEmailDescending","SellerEmailDescending","TotalPriceDescending","WatchCountDescending","QuestionCountDescending","ShippingServiceCostDescending","FeedbackReceivedDescending","FeedbackLeftDescending","UserIDDescending","QuantitySoldDescending","BestOfferCountDescending","QuantityAvailableDescending","QuantityPurchasedDescending","BestOfferDescending","ItemIDDescending","PriceDescending","StartPriceDescending","TitleDescending","BidCountDescending","QuantityDescending","StartTimeDescending","EndTimeDescending","SellerUserIDDescending","TimeLeftDescending","WonPlatformDescending","SoldPlatformDescending","LeadCount","NewLeadCount","LeadCountDescending","NewLeadCountDescending","ClassifiedAdPayPerLeadFee","ClassifiedAdPayPerLeadFeeDescending","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{TotalQuantity:{name:"TotalQuantity",type:"long",xmlRequired:false},TotalValue:{name:"TotalValue",type:"AmountType",xmlRequired:false}},ID:"ItemTotalsType"}),isc.XSComplexType.create({mustQualify:true,fields:{ItemTransactionID:{name:"ItemTransactionID",type:"ItemTransactionIDType",xmlRequired:false}},ID:"ItemTransactionIDArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false}},ID:"ItemTransactionIDType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ApplicationData:{name:"ApplicationData",type:"string",xmlRequired:false},AttributeSetArray:{name:"AttributeSetArray",type:"AttributeSetArrayType",xmlRequired:false},AttributeArray:{name:"AttributeArray",type:"AttributeArrayType",xmlRequired:false},LookupAttributeArray:{name:"LookupAttributeArray",type:"LookupAttributeArrayType",xmlRequired:false},ApplyShippingDiscount:{name:"ApplyShippingDiscount",type:"boolean",xmlRequired:false},AutoPay:{name:"AutoPay",type:"boolean",xmlRequired:false},PaymentDetails:{name:"PaymentDetails",type:"PaymentDetailsType",xmlRequired:false},BiddingDetails:{name:"BiddingDetails",type:"BiddingDetailsType",xmlRequired:false},MotorsGermanySearchable:{name:"MotorsGermanySearchable",type:"boolean",xmlRequired:false},BuyerProtection:{name:"BuyerProtection",type:"BuyerProtectionCodeType",xmlRequired:false},BuyItNowPrice:{name:"BuyItNowPrice",type:"AmountType",xmlRequired:false},CategoryMappingAllowed:{name:"CategoryMappingAllowed",type:"boolean",xmlRequired:false},Charity:{name:"Charity",type:"CharityType",xmlRequired:false},Country:{name:"Country",type:"CountryCodeType",xmlRequired:false},CrossPromotion:{name:"CrossPromotion",type:"CrossPromotionsType",xmlRequired:false},Currency:{name:"Currency",type:"CurrencyCodeType",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false},DescriptionReviseMode:{name:"DescriptionReviseMode",type:"DescriptionReviseModeCodeType",xmlRequired:false},Distance:{name:"Distance",type:"DistanceType",xmlRequired:false},FinanceOfferID:{name:"FinanceOfferID",type:"string",xmlRequired:false},GiftIcon:{name:"GiftIcon",type:"int",xmlRequired:false},GiftServices:{name:"GiftServices",type:"GiftServicesCodeType",xmlRequired:false},HitCounter:{name:"HitCounter",type:"HitCounterCodeType",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},ListingDetails:{name:"ListingDetails",type:"ListingDetailsType",xmlRequired:false},ListingDesigner:{name:"ListingDesigner",type:"ListingDesignerType",xmlRequired:false},ListingDuration:{name:"ListingDuration",type:"token",xmlRequired:false},ListingEnhancement:{name:"ListingEnhancement",type:"ListingEnhancementsCodeType",xmlRequired:false},ListingType:{name:"ListingType",type:"ListingTypeCodeType",xmlRequired:false},ListingSubtype:{name:"ListingSubtype",type:"ListingSubtypeEnum",xmlRequired:false},Location:{name:"Location",type:"string",xmlRequired:false},LotSize:{name:"LotSize",type:"int",xmlRequired:false},NowAndNew:{name:"NowAndNew",type:"boolean",xmlRequired:false},PartnerCode:{name:"PartnerCode",type:"string",xmlRequired:false},PartnerName:{name:"PartnerName",type:"string",xmlRequired:false},PaymentMethods:{name:"PaymentMethods",type:"BuyerPaymentMethodCodeType",xmlRequired:false},PayPalEmailAddress:{name:"PayPalEmailAddress",type:"string",xmlRequired:false},PrimaryCategory:{name:"PrimaryCategory",type:"CategoryType",xmlRequired:false},PrivateListing:{name:"PrivateListing",type:"boolean",xmlRequired:false},ProductListingDetails:{name:"ProductListingDetails",type:"ProductListingDetailsType",xmlRequired:false},Quantity:{name:"Quantity",type:"int",xmlRequired:false},PrivateNotes:{name:"PrivateNotes",type:"string",xmlRequired:false},RegionID:{name:"RegionID",type:"string",xmlRequired:false},RelistLink:{name:"RelistLink",type:"boolean",xmlRequired:false},ReservePrice:{name:"ReservePrice",type:"AmountType",xmlRequired:false},ReviseStatus:{name:"ReviseStatus",type:"ReviseStatusType",xmlRequired:false},ScheduleTime:{name:"ScheduleTime",type:"dateTime",xmlRequired:false},SecondaryCategory:{name:"SecondaryCategory",type:"CategoryType",xmlRequired:false},FreeAddedCategory:{name:"FreeAddedCategory",type:"CategoryType",xmlRequired:false},Seller:{name:"Seller",type:"UserType",xmlRequired:false},SellingStatus:{name:"SellingStatus",type:"SellingStatusType",xmlRequired:false},ShippingDetails:{name:"ShippingDetails",type:"ShippingDetailsType",xmlRequired:false},ShipToLocations:{name:"ShipToLocations",type:"string",xmlRequired:false},Site:{name:"Site",type:"SiteCodeType",xmlRequired:false},StartPrice:{name:"StartPrice",type:"AmountType",xmlRequired:false},Storefront:{name:"Storefront",type:"StorefrontType",xmlRequired:false},SubTitle:{name:"SubTitle",type:"string",xmlRequired:false},TimeLeft:{name:"TimeLeft",type:"duration",xmlRequired:false},Title:{name:"Title",type:"string",xmlRequired:false},UUID:{name:"UUID",type:"UUIDType",xmlRequired:false},VATDetails:{name:"VATDetails",type:"VATDetailsType",xmlRequired:false},SellerVacationNote:{name:"SellerVacationNote",type:"string",xmlRequired:false},WatchCount:{name:"WatchCount",type:"long",xmlRequired:false},HitCount:{name:"HitCount",type:"long",xmlRequired:false},DisableBuyerRequirements:{name:"DisableBuyerRequirements",type:"boolean",xmlRequired:false},BuyerRequirements:{name:"BuyerRequirements",type:"BuyerRequirementsType",xmlRequired:false},BestOfferDetails:{name:"BestOfferDetails",type:"BestOfferDetailsType",xmlRequired:false},LiveAuctionDetails:{name:"LiveAuctionDetails",type:"LiveAuctionDetailsType",xmlRequired:false},LocationDefaulted:{name:"LocationDefaulted",type:"boolean",xmlRequired:false},ThirdPartyCheckout:{name:"ThirdPartyCheckout",type:"boolean",xmlRequired:false},UseTaxTable:{name:"UseTaxTable",type:"boolean",xmlRequired:false},GetItFast:{name:"GetItFast",type:"boolean",xmlRequired:false},BuyerResponsibleForShipping:{name:"BuyerResponsibleForShipping",type:"boolean",xmlRequired:false},LimitedWarrantyEligible:{name:"LimitedWarrantyEligible",type:"boolean",xmlRequired:false},eBayNotes:{name:"eBayNotes",type:"string",xmlRequired:false},QuestionCount:{name:"QuestionCount",type:"long",xmlRequired:false},Relisted:{name:"Relisted",type:"boolean",xmlRequired:false},QuantityAvailable:{name:"QuantityAvailable",type:"int",xmlRequired:false},SKU:{name:"SKU",type:"SKUType",xmlRequired:false},CategoryBasedAttributesPrefill:{name:"CategoryBasedAttributesPrefill",type:"boolean",xmlRequired:false},SearchDetails:{name:"SearchDetails",type:"SearchDetailsType",xmlRequired:false},PostalCode:{name:"PostalCode",type:"string",xmlRequired:false},ShippingTermsInDescription:{name:"ShippingTermsInDescription",type:"boolean",xmlRequired:false},ExternalProductID:{name:"ExternalProductID",type:"ExternalProductIDType",xmlRequired:false},SellerInventoryID:{name:"SellerInventoryID",type:"string",xmlRequired:false},PictureDetails:{name:"PictureDetails",type:"PictureDetailsType",xmlRequired:false},DigitalDeliveryDetails:{name:"DigitalDeliveryDetails",type:"DigitalDeliveryDetailsType",xmlRequired:false},DispatchTimeMax:{name:"DispatchTimeMax",type:"int",xmlRequired:false},SkypeEnabled:{name:"SkypeEnabled",type:"boolean",xmlRequired:false},SkypeID:{name:"SkypeID",type:"string",xmlRequired:false},SkypeContactOption:{name:"SkypeContactOption",type:"SkypeContactOptionCodeType",xmlRequired:false},BestOfferEnabled:{name:"BestOfferEnabled",type:"boolean",xmlRequired:false},LocalListing:{name:"LocalListing",type:"boolean",xmlRequired:false},ThirdPartyCheckoutIntegration:{name:"ThirdPartyCheckoutIntegration",type:"boolean",xmlRequired:false},ExpressOptOut:{name:"ExpressOptOut",type:"boolean",xmlRequired:false},ListingCheckoutRedirectPreference:{name:"ListingCheckoutRedirectPreference",type:"ListingCheckoutRedirectPreferenceType",xmlRequired:false},ExpressDetails:{name:"ExpressDetails",type:"ExpressDetailsType",xmlRequired:false},SellerContactDetails:{name:"SellerContactDetails",type:"AddressType",xmlRequired:false},TotalQuestionCount:{name:"TotalQuestionCount",type:"long",xmlRequired:false},ProxyItem:{name:"ProxyItem",type:"boolean",xmlRequired:false},ExtendedSellerContactDetails:{name:"ExtendedSellerContactDetails",type:"ExtendedContactDetailsType",xmlRequired:false},LeadCount:{name:"LeadCount",type:"int",xmlRequired:false},NewLeadCount:{name:"NewLeadCount",type:"int",xmlRequired:false},ItemSpecifics:{name:"ItemSpecifics",type:"NameValueListArrayType",xmlRequired:false},GroupCategoryID:{name:"GroupCategoryID",type:"string",xmlRequired:false},ClassifiedAdPayPerLeadFee:{name:"ClassifiedAdPayPerLeadFee",type:"AmountType",xmlRequired:false},BidGroupItem:{name:"BidGroupItem",type:"boolean",xmlRequired:false}},ID:"ItemType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ItemTypeFilterCodeType",valueMap:["AuctionItemsOnly","FixedPricedItem","AllItems","StoreInventoryOnly","FixedPriceExcludeStoreInventory","ExcludeStoreInventory","AllItemTypes","AllFixedPriceItemTypes","CustomCode","ClassifiedItemsOnly"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{visible:{name:"visible",type:"boolean",xmlAttribute:true},Name:{name:"Name",type:"string",xmlRequired:false}},ID:"LabelType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ListingTipArray:{name:"ListingTipArray",type:"ListingTipArrayType",xmlRequired:false}},ID:"ListingAnalyzerRecommendationsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ProStoresStoreName:{name:"ProStoresStoreName",type:"string",xmlRequired:false},SellerThirdPartyUsername:{name:"SellerThirdPartyUsername",type:"string",xmlRequired:false}},ID:"ListingCheckoutRedirectPreferenceType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{LayoutID:{name:"LayoutID",type:"int",xmlRequired:false},OptimalPictureSize:{name:"OptimalPictureSize",type:"boolean",xmlRequired:false},ThemeID:{name:"ThemeID",type:"int",xmlRequired:false}},ID:"ListingDesignerType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Adult:{name:"Adult",type:"boolean",xmlRequired:false},BindingAuction:{name:"BindingAuction",type:"boolean",xmlRequired:false},CheckoutEnabled:{name:"CheckoutEnabled",type:"boolean",xmlRequired:false},ConvertedBuyItNowPrice:{name:"ConvertedBuyItNowPrice",type:"AmountType",xmlRequired:false},ConvertedStartPrice:{name:"ConvertedStartPrice",type:"AmountType",xmlRequired:false},ConvertedReservePrice:{name:"ConvertedReservePrice",type:"AmountType",xmlRequired:false},HasReservePrice:{name:"HasReservePrice",type:"boolean",xmlRequired:false},RelistedItemID:{name:"RelistedItemID",type:"ItemIDType",xmlRequired:false},SecondChanceOriginalItemID:{name:"SecondChanceOriginalItemID",type:"ItemIDType",xmlRequired:false},StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false},ViewItemURL:{name:"ViewItemURL",type:"anyURI",xmlRequired:false},HasUnansweredQuestions:{name:"HasUnansweredQuestions",type:"boolean",xmlRequired:false},HasPublicMessages:{name:"HasPublicMessages",type:"boolean",xmlRequired:false},BuyItNowAvailable:{name:"BuyItNowAvailable",type:"boolean",xmlRequired:false},SellerBusinessType:{name:"SellerBusinessType",type:"SellerBusinessCodeType",xmlRequired:false},MinimumBestOfferPrice:{name:"MinimumBestOfferPrice",type:"AmountType",xmlRequired:false},MinimumBestOfferMessage:{name:"MinimumBestOfferMessage",type:"string",xmlRequired:false},LocalListingDistance:{name:"LocalListingDistance",type:"string",xmlRequired:false},ExpressListing:{name:"ExpressListing",type:"boolean",xmlRequired:false},ExpressItemRequirements:{name:"ExpressItemRequirements",type:"ExpressItemRequirementsType",xmlRequired:false},TCROriginalItemID:{name:"TCROriginalItemID",type:"ItemIDType",xmlRequired:false},ViewItemURLForNaturalSearch:{name:"ViewItemURLForNaturalSearch",type:"anyURI",xmlRequired:false},PayPerLeadEnabled:{name:"PayPerLeadEnabled",type:"boolean",xmlRequired:false}},ID:"ListingDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ListingDurationCodeType",valueMap:["Days_1","Days_3","Days_5","Days_7","Days_10","Days_14","Days_21","Days_30","Days_60","Days_90","Days_120","GTC","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{durationSetID:{name:"durationSetID",type:"int",xmlAttribute:true},Duration:{name:"Duration",type:"token",xmlRequired:false}},ID:"ListingDurationDefinitionType"}),isc.XSComplexType.create({mustQualify:true,fields:{Version:{name:"Version",type:"int",xmlAttribute:true},ListingDuration:{name:"ListingDuration",type:"ListingDurationDefinitionType",xmlRequired:false}},ID:"ListingDurationDefinitionsType"}),isc.XSComplexType.create({textContentProperty:"xmlTextContent",mustQualify:true,fields:{type:{name:"type",type:"ListingTypeCodeType",xmlAttribute:true},xmlTextContent:{name:"xmlTextContent",type:"int",xmlRequired:false}},xsdSimpleContent:true,ID:"ListingDurationReferenceType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ListingEnhancementsCodeType",valueMap:["Border","BoldTitle","Featured","Highlight","HomePageFeatured","ProPackBundle","BasicUpgradePackBundle","ValuePackBundle","ProPackPlusBundle","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ListingFlowCodeType",valueMap:["AddItem","ReviseItem","RelistItem","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ListingStatusCodeType",valueMap:["Active","Ended","Completed","CustomCode","Custom"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ListingSubtypeEnum",valueMap:["ClassifiedAd"]}),isc.XSComplexType.create({mustQualify:true,fields:{ListingTip:{name:"ListingTip",type:"ListingTipType",xmlRequired:false}},ID:"ListingTipArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ListingTipFieldID:{name:"ListingTipFieldID",type:"string",xmlRequired:false},FieldTip:{name:"FieldTip",type:"string",xmlRequired:false},CurrentFieldText:{name:"CurrentFieldText",type:"string",xmlRequired:false},CurrentFieldValue:{name:"CurrentFieldValue",type:"string",xmlRequired:false}},ID:"ListingTipFieldType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ListingTipMessageID:{name:"ListingTipMessageID",type:"string",xmlRequired:false},ShortMessage:{name:"ShortMessage",type:"string",xmlRequired:false},LongMessage:{name:"LongMessage",type:"string",xmlRequired:false},HelpURLPath:{name:"HelpURLPath",type:"string",xmlRequired:false}},ID:"ListingTipMessageType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ListingTipID:{name:"ListingTipID",type:"string",xmlRequired:false},Priority:{name:"Priority",type:"int",xmlRequired:false},Message:{name:"Message",type:"ListingTipMessageType",xmlRequired:false},Field:{name:"Field",type:"ListingTipFieldType",xmlRequired:false}},ID:"ListingTipType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ListingTypeCodeType",valueMap:["Unknown","Chinese","Dutch","Live","Auction","AdType","StoresFixedPrice","PersonalOffer","FixedPriceItem","Half","LeadGeneration","Express","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{LiveAuctionStatus:{name:"LiveAuctionStatus",type:"LiveAuctionApprovalStatusType",xmlRequired:false}},ID:"LiveAuctionApprovalStatusArrayType"}),isc.XSComplexType.create({mustQualify:true,fields:{UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},Status:{name:"Status",type:"string",xmlRequired:false}},ID:"LiveAuctionApprovalStatusType"}),isc.XSComplexType.create({mustQualify:true,fields:{LiveAuctionBid:{name:"LiveAuctionBid",type:"LiveAuctionBidType",xmlRequired:false}},ID:"LiveAuctionBidArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{RequestedBiddingLimit:{name:"RequestedBiddingLimit",type:"AmountType",xmlRequired:false},BidderStatus:{name:"BidderStatus",type:"BidderStatusCodeType",xmlRequired:false},ApprovedBiddingLimit:{name:"ApprovedBiddingLimit",type:"AmountType",xmlRequired:false},DeclinedComment:{name:"DeclinedComment",type:"string",xmlRequired:false}},ID:"LiveAuctionBidType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{UserCatalogID:{name:"UserCatalogID",type:"int",xmlRequired:false},CatalogName:{name:"CatalogName",type:"string",xmlRequired:false},Schedule:{name:"Schedule",type:"ScheduleType",xmlRequired:false}},ID:"LiveAuctionCatalogType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{UserCatalogID:{name:"UserCatalogID",type:"int",xmlRequired:false},ScheduleID:{name:"ScheduleID",type:"int",xmlRequired:false},LotNumber:{name:"LotNumber",type:"string",xmlRequired:false},HighEstimate:{name:"HighEstimate",type:"AmountType",xmlRequired:false},LowEstimate:{name:"LowEstimate",type:"AmountType",xmlRequired:false}},ID:"LiveAuctionDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"LocalListingDistancesNonSubscriptionDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"LocalListingDistancesRegularDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"LocalListingDistancesSpecialtyDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"LocalMarketNonSubscriptionDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"LocalMarketPremiumSubscriptionDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"LocalMarketRegularSubscriptionDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"LocalMarketSpecialitySubscriptionDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{MaxDistance:{name:"MaxDistance",type:"int",xmlRequired:true},PostalCode:{name:"PostalCode",type:"string",xmlRequired:true}},ID:"LocalSearchType"}),isc.SimpleType.create({inheritsFrom:"token",name:"LogoTypeCodeType",valueMap:["WinningBidderNotice","Store","Custom","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{LookupAttribute:{name:"LookupAttribute",type:"LookupAttributeType",xmlRequired:false}},ID:"LookupAttributeArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Name:{name:"Name",type:"string",xmlRequired:false},Value:{name:"Value",type:"string",xmlRequired:false}},ID:"LookupAttributeType"}),isc.SimpleType.create({inheritsFrom:"token",name:"MailOptionsTypeCodeType",valueMap:["DoNotSendEmail","EmailCopyToSender","HideSenderEmailAddress","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Type:{name:"Type",type:"MarkUpMarkDownEventTypeCodeType",xmlRequired:false},Time:{name:"Time",type:"dateTime",xmlRequired:false},Reason:{name:"Reason",type:"string",xmlRequired:false}},ID:"MarkUpMarkDownEventType"}),isc.SimpleType.create({inheritsFrom:"token",name:"MarkUpMarkDownEventTypeCodeType",valueMap:["MarkUp","MarkDown","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{MarkUpMarkDownEvent:{name:"MarkUpMarkDownEvent",type:"MarkUpMarkDownEventType",xmlRequired:false}},ID:"MarkUpMarkDownHistoryType"}),isc.XSComplexType.create({mustQualify:true,fields:{MaximumItemCount:{name:"MaximumItemCount",type:"int",xmlRequired:false},MinimumFeedbackScore:{name:"MinimumFeedbackScore",type:"int",xmlRequired:false}},ID:"MaximumItemRequirementsType"}),isc.XSComplexType.create({mustQualify:true,fields:{MemberMessageExchange:{name:"MemberMessageExchange",type:"MemberMessageExchangeType",xmlRequired:false}},ID:"MemberMessageExchangeArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false},Question:{name:"Question",type:"MemberMessageType",xmlRequired:false},Response:{name:"Response",type:"string",xmlRequired:false},MessageStatus:{name:"MessageStatus",type:"MessageStatusTypeCodeType",xmlRequired:false},CreationDate:{name:"CreationDate",type:"dateTime",xmlRequired:false},LastModifiedDate:{name:"LastModifiedDate",type:"dateTime",xmlRequired:false}},ID:"MemberMessageExchangeType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{MessageType:{name:"MessageType",type:"MessageTypeCodeType",xmlRequired:false},QuestionType:{name:"QuestionType",type:"QuestionTypeCodeType",xmlRequired:false},EmailCopyToSender:{name:"EmailCopyToSender",type:"boolean",xmlRequired:false},HideSendersEmailAddress:{name:"HideSendersEmailAddress",type:"boolean",xmlRequired:false},DisplayToPublic:{name:"DisplayToPublic",type:"boolean",xmlRequired:false},SenderID:{name:"SenderID",type:"string",xmlRequired:false},SenderEmail:{name:"SenderEmail",type:"string",xmlRequired:false},RecipientID:{name:"RecipientID",type:"string",xmlRequired:false},Subject:{name:"Subject",type:"string",xmlRequired:false},Body:{name:"Body",type:"string",xmlRequired:false},MessageID:{name:"MessageID",type:"string",xmlRequired:false},ParentMessageID:{name:"ParentMessageID",type:"string",xmlRequired:false}},ID:"MemberMessageType"}),isc.SimpleType.create({inheritsFrom:"token",name:"MerchDisplayCodeType",valueMap:["DefaultTheme","StoreTheme","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"MerchandizingPrefCodeType",valueMap:["OptIn","OptOut","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"MessageStatusTypeCodeType",valueMap:["Answered","Unanswered","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"MessageTypeCodeType",valueMap:["AskSellerQuestion","ResponseToASQQuestion","ContactEbayMember","ContactTransactionPartner","ResponseToContacteBayMember","ContacteBayMemberViaCommunityLink","CustomCode","All","ContactMyBidder"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"MinimumReservePriceDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ModifyActionCodeType",valueMap:["Add","Delete","Update","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{Alert:{name:"Alert",type:"MyMessagesAlertType",xmlRequired:false}},ID:"MyMessagesAlertArrayType"}),isc.XSComplexType.create({mustQualify:true,fields:{AlertID:{name:"AlertID",type:"MyMessagesAlertIDType",xmlRequired:false}},ID:"MyMessagesAlertIDArrayType"}),isc.SimpleType.create({inheritsFrom:"string",name:"MyMessagesAlertIDType"}),isc.SimpleType.create({inheritsFrom:"token",name:"MyMessagesAlertResolutionStatusCode",valueMap:["Unresolved","ResolvedByAutoResolution","ResolvedByUser"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Sender:{name:"Sender",type:"string",xmlRequired:false},RecipientUserID:{name:"RecipientUserID",type:"string",xmlRequired:false},Subject:{name:"Subject",type:"string",xmlRequired:false},Priority:{name:"Priority",type:"string",xmlRequired:false},AlertID:{name:"AlertID",type:"MyMessagesAlertIDType",xmlRequired:false},ExternalAlertID:{name:"ExternalAlertID",type:"string",xmlRequired:false},ContentType:{name:"ContentType",type:"string",xmlRequired:false},Text:{name:"Text",type:"string",xmlRequired:false},ResolutionStatus:{name:"ResolutionStatus",type:"MyMessagesAlertResolutionStatusCode",xmlRequired:false},Read:{name:"Read",type:"boolean",xmlRequired:false},CreationDate:{name:"CreationDate",type:"dateTime",xmlRequired:false},ReceiveDate:{name:"ReceiveDate",type:"dateTime",xmlRequired:false},ExpirationDate:{name:"ExpirationDate",type:"dateTime",xmlRequired:false},ResolutionDate:{name:"ResolutionDate",type:"dateTime",xmlRequired:false},LastReadDate:{name:"LastReadDate",type:"dateTime",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},IsTimedResolution:{name:"IsTimedResolution",type:"boolean",xmlRequired:false},ActionURL:{name:"ActionURL",type:"string",xmlRequired:false},ResponseDetails:{name:"ResponseDetails",type:"MyMessagesResponseDetailsType",xmlRequired:false},ForwardDetails:{name:"ForwardDetails",type:"MyMessagesForwardDetailsType",xmlRequired:false},Folder:{name:"Folder",type:"MyMessagesFolderType",xmlRequired:false}},ID:"MyMessagesAlertType"}),isc.SimpleType.create({inheritsFrom:"token",name:"MyMessagesFolderOperationCodeType",valueMap:["Display","Rename","Remove","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{FolderID:{name:"FolderID",type:"long",xmlRequired:false},FolderName:{name:"FolderName",type:"string",xmlRequired:false},NewAlertCount:{name:"NewAlertCount",type:"int",xmlRequired:false},NewMessageCount:{name:"NewMessageCount",type:"int",xmlRequired:false},TotalAlertCount:{name:"TotalAlertCount",type:"int",xmlRequired:false},TotalMessageCount:{name:"TotalMessageCount",type:"int",xmlRequired:false}},ID:"MyMessagesFolderSummaryType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{FolderID:{name:"FolderID",type:"long",xmlRequired:false},FolderName:{name:"FolderName",type:"string",xmlRequired:false}},ID:"MyMessagesFolderType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{UserForwardDate:{name:"UserForwardDate",type:"dateTime",xmlRequired:false},ForwardMessageEncoding:{name:"ForwardMessageEncoding",type:"string",xmlRequired:false}},ID:"MyMessagesForwardDetailsType"}),isc.XSComplexType.create({mustQualify:true,fields:{Message:{name:"Message",type:"MyMessagesMessageType",xmlRequired:false}},ID:"MyMessagesMessageArrayType"}),isc.XSComplexType.create({mustQualify:true,fields:{MessageID:{name:"MessageID",type:"MyMessagesMessageIDType",xmlRequired:false}},ID:"MyMessagesMessageIDArrayType"}),isc.SimpleType.create({inheritsFrom:"string",name:"MyMessagesMessageIDType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Sender:{name:"Sender",type:"string",xmlRequired:false},RecipientUserID:{name:"RecipientUserID",type:"string",xmlRequired:false},SendToName:{name:"SendToName",type:"string",xmlRequired:false},Subject:{name:"Subject",type:"string",xmlRequired:false},MessageID:{name:"MessageID",type:"MyMessagesMessageIDType",xmlRequired:false},ExternalMessageID:{name:"ExternalMessageID",type:"string",xmlRequired:false},ContentType:{name:"ContentType",type:"string",xmlRequired:false},Text:{name:"Text",type:"string",xmlRequired:false},Flagged:{name:"Flagged",type:"boolean",xmlRequired:false},Read:{name:"Read",type:"boolean",xmlRequired:false},CreationDate:{name:"CreationDate",type:"dateTime",xmlRequired:false},ReceiveDate:{name:"ReceiveDate",type:"dateTime",xmlRequired:false},ExpirationDate:{name:"ExpirationDate",type:"dateTime",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},ResponseDetails:{name:"ResponseDetails",type:"MyMessagesResponseDetailsType",xmlRequired:false},ForwardDetails:{name:"ForwardDetails",type:"MyMessagesForwardDetailsType",xmlRequired:false},Folder:{name:"Folder",type:"MyMessagesFolderType",xmlRequired:false}},ID:"MyMessagesMessageType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ResponseEnabled:{name:"ResponseEnabled",type:"boolean",xmlRequired:false},ResponseURL:{name:"ResponseURL",type:"anyURI",xmlRequired:false},UserResponseDate:{name:"UserResponseDate",type:"dateTime",xmlRequired:false}},ID:"MyMessagesResponseDetailsType"}),isc.XSComplexType.create({mustQualify:true,fields:{FolderSummary:{name:"FolderSummary",type:"MyMessagesFolderSummaryType",xmlRequired:false},NewAlertCount:{name:"NewAlertCount",type:"int",xmlRequired:false},NewMessageCount:{name:"NewMessageCount",type:"int",xmlRequired:false},UnresolvedAlertCount:{name:"UnresolvedAlertCount",type:"int",xmlRequired:false},FlaggedMessageCount:{name:"FlaggedMessageCount",type:"int",xmlRequired:false},TotalAlertCount:{name:"TotalAlertCount",type:"int",xmlRequired:false},TotalMessageCount:{name:"TotalMessageCount",type:"int",xmlRequired:false}},ID:"MyMessagesSummaryType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{TotalAvailable:{name:"TotalAvailable",type:"int",xmlRequired:false},FavoriteSearch:{name:"FavoriteSearch",type:"MyeBayFavoriteSearchType",xmlRequired:false}},ID:"MyeBayFavoriteSearchListType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SearchName:{name:"SearchName",type:"string",xmlRequired:false},SearchQuery:{name:"SearchQuery",type:"string",xmlRequired:false}},ID:"MyeBayFavoriteSearchType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{TotalAvailable:{name:"TotalAvailable",type:"int",xmlRequired:false},FavoriteSeller:{name:"FavoriteSeller",type:"MyeBayFavoriteSellerType",xmlRequired:false}},ID:"MyeBayFavoriteSellerListType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{UserID:{name:"UserID",type:"string",xmlRequired:false},StoreName:{name:"StoreName",type:"string",xmlRequired:false}},ID:"MyeBayFavoriteSellerType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{TotalAvailable:{name:"TotalAvailable",type:"int",xmlRequired:false},SecondChanceOffer:{name:"SecondChanceOffer",type:"ItemType",xmlRequired:false}},ID:"MyeBaySecondChanceOfferListType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Include:{name:"Include",type:"boolean",xmlRequired:false},Sort:{name:"Sort",type:"SortOrderCodeType",xmlRequired:false},MaxResults:{name:"MaxResults",type:"int",xmlRequired:false}},ID:"MyeBaySelectionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ActiveAuctionCount:{name:"ActiveAuctionCount",type:"int",xmlRequired:false},AuctionSellingCount:{name:"AuctionSellingCount",type:"int",xmlRequired:false},AuctionBidCount:{name:"AuctionBidCount",type:"int",xmlRequired:false},TotalAuctionSellingValue:{name:"TotalAuctionSellingValue",type:"AmountType",xmlRequired:false},TotalSoldCount:{name:"TotalSoldCount",type:"int",xmlRequired:false},TotalSoldValue:{name:"TotalSoldValue",type:"AmountType",xmlRequired:false},SoldDurationInDays:{name:"SoldDurationInDays",type:"int",xmlRequired:false},ClassifiedAdCount:{name:"ClassifiedAdCount",type:"int",xmlRequired:false},TotalLeadCount:{name:"TotalLeadCount",type:"int",xmlRequired:false},ClassifiedAdOfferCount:{name:"ClassifiedAdOfferCount",type:"int",xmlRequired:false},TotalListingsWithLeads:{name:"TotalListingsWithLeads",type:"int",xmlRequired:false}},ID:"MyeBaySellingSummaryType"}),isc.XSComplexType.create({mustQualify:true,fields:{NameValueList:{name:"NameValueList",type:"NameValueListType",xmlRequired:false}},ID:"NameValueListArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Name:{name:"Name",type:"string",xmlRequired:false},Value:{name:"Value",type:"string",xmlRequired:false}},ID:"NameValueListType"}),isc.SimpleType.create({inheritsFrom:"token",name:"NotificationDeliveryStatusCodeType",valueMap:["CustomCode","Delivered","Failed","Rejected","MarkedDown"]}),isc.XSComplexType.create({mustQualify:true,fields:{NotificationDetails:{name:"NotificationDetails",type:"NotificationDetailsType",xmlRequired:false}},ID:"NotificationDetailsArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DeliveryURL:{name:"DeliveryURL",type:"anyURI",xmlRequired:false},ReferenceID:{name:"ReferenceID",type:"string",xmlRequired:false},ExpirationTime:{name:"ExpirationTime",type:"dateTime",xmlRequired:false},Type:{name:"Type",type:"NotificationEventTypeCodeType",xmlRequired:false},Retries:{name:"Retries",type:"int",xmlRequired:false},DeliveryStatus:{name:"DeliveryStatus",type:"NotificationEventStateCodeType",xmlRequired:false},NextRetryTime:{name:"NextRetryTime",type:"dateTime",xmlRequired:false},DeliveryTime:{name:"DeliveryTime",type:"dateTime",xmlRequired:false},ErrorMessage:{name:"ErrorMessage",type:"string",xmlRequired:false}},ID:"NotificationDetailsType"}),isc.XSComplexType.create({mustQualify:true,fields:{NotificationEnable:{name:"NotificationEnable",type:"NotificationEnableType",xmlRequired:false}},ID:"NotificationEnableArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{EventType:{name:"EventType",type:"NotificationEventTypeCodeType",xmlRequired:false},EventEnable:{name:"EventEnable",type:"EnableCodeType",xmlRequired:false}},ID:"NotificationEnableType"}),isc.SimpleType.create({inheritsFrom:"token",name:"NotificationEventPropertyNameCodeType",valueMap:["TimeLeft","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{EventType:{name:"EventType",type:"NotificationEventTypeCodeType",xmlRequired:false},Name:{name:"Name",type:"NotificationEventPropertyNameCodeType",xmlRequired:false},Value:{name:"Value",type:"string",xmlRequired:false}},ID:"NotificationEventPropertyType"}),isc.SimpleType.create({inheritsFrom:"token",name:"NotificationEventStateCodeType",valueMap:["New","Failed","MarkedDown","Pending","FailedPending","MarkedDownPending","Delivered","Undeliverable","Rejected","Canceled","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"NotificationEventTypeCodeType",valueMap:["None","OutBid","EndOfAuction","AuctionCheckoutComplete","FixedPriceEndOfTransaction","CheckoutBuyerRequestsTotal","Feedback","FeedbackForSeller","FixedPriceTransaction","SecondChanceOffer","AskSellerQuestion","ItemListed","ItemRevised","BuyerResponseDispute","SellerOpenedDispute","SellerRespondedToDispute","SellerClosedDispute","BestOffer","MyMessagesAlertHeader","MyMessagesAlert","MyMessageseBayMessageHeader","MyMessageseBayMessage","MyMessagesM2MMessageHeader","MyMessagesM2MMessage","INRBuyerOpenedDispute","INRBuyerRespondedToDispute","INRBuyerClosedDispute","INRSellerRespondedToDispute","Checkout","WatchedItemEndingSoon","ItemClosed","ItemSuspended","ItemSold","ItemExtended","UserIDChanged","EmailAddressChanged","PasswordChanged","PasswordHintChanged","PaymentDetailChanged","AccountSuspended","AccountSummary","ThirdPartyCartCheckout","CustomCode"]}),isc.XSElement.create({mustQualify:true,inheritsFrom:"NotificationMessageType",fields:{},ID:"NotificationMessage"}),isc.XSComplexType.create({mustQualify:true,useParentFieldOrder:true,inheritsFrom:"AbstractResponseType",fields:{MessageBody:{name:"MessageBody",type:"string",xmlRequired:false},EIAS:{name:"EIAS",type:"string",xmlRequired:false}},ID:"NotificationMessageType"}),isc.SimpleType.create({inheritsFrom:"token",name:"NotificationPayloadTypeCodeType",valueMap:["eBLSchemaSOAP","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"NotificationRoleCodeType",valueMap:["Application","User","UserData","Event","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DeliveredCount:{name:"DeliveredCount",type:"int",xmlRequired:false},QueuedNewCount:{name:"QueuedNewCount",type:"int",xmlRequired:false},QueuedPendingCount:{name:"QueuedPendingCount",type:"int",xmlRequired:false},ExpiredCount:{name:"ExpiredCount",type:"int",xmlRequired:false},ErrorCount:{name:"ErrorCount",type:"int",xmlRequired:false}},ID:"NotificationStatisticsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SMSSubscription:{name:"SMSSubscription",type:"SMSSubscriptionType",xmlRequired:false},SummarySchedule:{name:"SummarySchedule",type:"SummaryEventScheduleType",xmlRequired:false}},ID:"NotificationUserDataType"}),isc.XSComplexType.create({mustQualify:true,fields:{Offer:{name:"Offer",type:"OfferType",xmlRequired:false}},ID:"OfferArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Action:{name:"Action",type:"BidActionCodeType",xmlRequired:false},Currency:{name:"Currency",type:"CurrencyCodeType",xmlRequired:false},ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},MaxBid:{name:"MaxBid",type:"AmountType",xmlRequired:false},Quantity:{name:"Quantity",type:"int",xmlRequired:false},SecondChanceEnabled:{name:"SecondChanceEnabled",type:"boolean",xmlRequired:false},SiteCurrency:{name:"SiteCurrency",type:"CurrencyCodeType",xmlRequired:false},TimeBid:{name:"TimeBid",type:"dateTime",xmlRequired:false},HighestBid:{name:"HighestBid",type:"AmountType",xmlRequired:false},ConvertedPrice:{name:"ConvertedPrice",type:"AmountType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},User:{name:"User",type:"UserType",xmlRequired:false},UserConsent:{name:"UserConsent",type:"boolean",xmlRequired:false},BidCount:{name:"BidCount",type:"int",xmlRequired:false}},ID:"OfferType"}),isc.SimpleType.create({inheritsFrom:"token",name:"OperationTypeCodeType",valueMap:["ItemRules","ReplaceAllDefaultRules","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{Order:{name:"Order",type:"OrderType",xmlRequired:false}},ID:"OrderArrayType"}),isc.XSComplexType.create({mustQualify:true,fields:{OrderID:{name:"OrderID",type:"OrderIDType",xmlRequired:false}},ID:"OrderIDArrayType"}),isc.SimpleType.create({inheritsFrom:"string",name:"OrderIDType"}),isc.SimpleType.create({inheritsFrom:"token",name:"OrderRoleCodeType",valueMap:["Buyer","Seller","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"OrderStatusCodeType",valueMap:["Active","Inactive","Completed","Cancelled","Shipped","Default","Authenticated","InProcess","Invalid","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{OrderTransaction:{name:"OrderTransaction",type:"OrderTransactionType",xmlRequired:false}},ID:"OrderTransactionArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Order:{name:"Order",type:"OrderType",xmlRequired:false},Transaction:{name:"Transaction",type:"TransactionType",xmlRequired:false}},ID:"OrderTransactionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{OrderID:{name:"OrderID",type:"OrderIDType",xmlRequired:false},OrderStatus:{name:"OrderStatus",type:"OrderStatusCodeType",xmlRequired:false},AdjustmentAmount:{name:"AdjustmentAmount",type:"AmountType",xmlRequired:false},AmountPaid:{name:"AmountPaid",type:"AmountType",xmlRequired:false},AmountSaved:{name:"AmountSaved",type:"AmountType",xmlRequired:false},CheckoutStatus:{name:"CheckoutStatus",type:"CheckoutStatusType",xmlRequired:false},ShippingDetails:{name:"ShippingDetails",type:"ShippingDetailsType",xmlRequired:false},CreatingUserRole:{name:"CreatingUserRole",type:"TradingRoleCodeType",xmlRequired:false},CreatedTime:{name:"CreatedTime",type:"dateTime",xmlRequired:false},FinanceOfferID:{name:"FinanceOfferID",type:"string",xmlRequired:false},PaymentMethods:{name:"PaymentMethods",type:"BuyerPaymentMethodCodeType",xmlRequired:false},SellerEmail:{name:"SellerEmail",type:"string",xmlRequired:false},ShippingAddress:{name:"ShippingAddress",type:"AddressType",xmlRequired:false},ShippingServiceSelected:{name:"ShippingServiceSelected",type:"ShippingServiceOptionsType",xmlRequired:false},Subtotal:{name:"Subtotal",type:"AmountType",xmlRequired:false},Total:{name:"Total",type:"AmountType",xmlRequired:false},ExternalTransaction:{name:"ExternalTransaction",type:"ExternalTransactionType",xmlRequired:false},DigitalDelivery:{name:"DigitalDelivery",type:"boolean",xmlRequired:false},TransactionArray:{name:"TransactionArray",type:"TransactionArrayType",xmlRequired:false},BuyerUserID:{name:"BuyerUserID",type:"UserIDType",xmlRequired:false}},ID:"OrderType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemArray:{name:"ItemArray",type:"ItemArrayType",xmlRequired:false},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false}},ID:"PaginatedItemArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{OrderTransactionArray:{name:"OrderTransactionArray",type:"OrderTransactionArrayType",xmlRequired:false},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false}},ID:"PaginatedOrderTransactionArrayType"}),isc.XSComplexType.create({mustQualify:true,fields:{TransactionArray:{name:"TransactionArray",type:"TransactionArrayType",xmlRequired:false},PaginationResult:{name:"PaginationResult",type:"PaginationResultType",xmlRequired:false}},ID:"PaginatedTransactionArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{TotalNumberOfPages:{name:"TotalNumberOfPages",type:"int",xmlRequired:false},TotalNumberOfEntries:{name:"TotalNumberOfEntries",type:"int",xmlRequired:false}},ID:"PaginationResultType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PaidStatusCodeType",valueMap:["NotPaid","BuyerHasNotCompletedCheckout","PaymentPendingWithPayPal","PaidWithPayPal","MarkedAsPaid","PaymentPendingWithEscrow","PaidWithEscrow","EscrowPaymentCancelled","PaymentPendingWithPaisaPay","PaidWithPaisaPay","PaymentPending","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"PayPalAccountLevelCodeType",valueMap:["Unverified","InternationalUnverified","Verified","InternationalVerified","Trusted","Unknown","Invalid","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"PayPalAccountStatusCodeType",valueMap:["Active","Closed","HighRestricted","LowRestricted","Locked","CustomCode","WireOff","Unknown","Invalid"]}),isc.SimpleType.create({inheritsFrom:"token",name:"PayPalAccountTypeCodeType",valueMap:["Personal","Premier","Business","Unknown","Invalid","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{HoursToDeposit:{name:"HoursToDeposit",type:"int",xmlRequired:false},DaysToFullPayment:{name:"DaysToFullPayment",type:"int",xmlRequired:false}},ID:"PaymentDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PaymentMethodSearchCodeType",valueMap:["PayPal","PaisaPay","PayPalOrPaisaPay"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{PaymentOption:{name:"PaymentOption",type:"BuyerPaymentMethodCodeType",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false}},ID:"PaymentOptionDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PaymentStatusCodeType",valueMap:["NoPaymentFailure","BuyerECheckBounced","BuyerCreditCardFailed","BuyerFailedPaymentReportedBySeller","PayPalPaymentInProcess","PaymentInProcess","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"PaymentTypeCodeType",valueMap:["Sale","Refund","SellerDeniedPayment","AdminReversal","AllOther","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"PhotoDisplayCodeType",valueMap:["None","SlideShow","SuperSize","PicturePack","SiteHostedPictureShow","VendorHostedPictureShow","SuperSizePictureShow","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{GalleryType:{name:"GalleryType",type:"GalleryTypeCodeType",xmlRequired:false},GalleryURL:{name:"GalleryURL",type:"anyURI",xmlRequired:false},PhotoDisplay:{name:"PhotoDisplay",type:"PhotoDisplayCodeType",xmlRequired:false},PictureURL:{name:"PictureURL",type:"anyURI",xmlRequired:false},PictureSource:{name:"PictureSource",type:"PictureSourceCodeType",xmlRequired:false}},ID:"PictureDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PictureManagerActionCodeType",valueMap:["Add","Delete","Rename","Move","Change","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"PictureManagerDetailLevelCodeType",valueMap:["ReturnAll","ReturnSubscription","ReturnPicture","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SubscriptionLevel:{name:"SubscriptionLevel",type:"PictureManagerSubscriptionLevelCodeType",xmlRequired:false},StorageUsed:{name:"StorageUsed",type:"int",xmlRequired:false},TotalStorageAvailable:{name:"TotalStorageAvailable",type:"int",xmlRequired:false},KeepOriginal:{name:"KeepOriginal",type:"boolean",xmlRequired:false},WatermarkEPS:{name:"WatermarkEPS",type:"boolean",xmlRequired:false},WatermarkUserID:{name:"WatermarkUserID",type:"boolean",xmlRequired:false},Folder:{name:"Folder",type:"PictureManagerFolderType",xmlRequired:false}},ID:"PictureManagerDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{FolderID:{name:"FolderID",type:"int",xmlRequired:false},Name:{name:"Name",type:"string",xmlRequired:false},Picture:{name:"Picture",type:"PictureManagerPictureType",xmlRequired:false}},ID:"PictureManagerFolderType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DisplayType:{name:"DisplayType",type:"PictureManagerPictureDisplayTypeCodeType",xmlRequired:false},URL:{name:"URL",type:"anyURI",xmlRequired:false},Size:{name:"Size",type:"int",xmlRequired:false},Height:{name:"Height",type:"int",xmlRequired:false},Width:{name:"Width",type:"int",xmlRequired:false}},ID:"PictureManagerPictureDisplayType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PictureManagerPictureDisplayTypeCodeType",valueMap:["Thumbnail","BIBO","Standard","Large","Supersize","Original","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{PictureURL:{name:"PictureURL",type:"anyURI",xmlRequired:false},Name:{name:"Name",type:"string",xmlRequired:false},Date:{name:"Date",type:"dateTime",xmlRequired:false},DisplayFormat:{name:"DisplayFormat",type:"PictureManagerPictureDisplayType",xmlRequired:false}},ID:"PictureManagerPictureType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PictureManagerSubscriptionLevelCodeType",valueMap:["Free","Level1","Level2","Level3","Level4","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SubscriptionLevel:{name:"SubscriptionLevel",type:"PictureManagerSubscriptionLevelCodeType",xmlRequired:false},Fee:{name:"Fee",type:"AmountType",xmlRequired:false},StorageSize:{name:"StorageSize",type:"int",xmlRequired:false}},ID:"PictureManagerSubscriptionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PictureSourceCodeType",valueMap:["EPS","PictureManager","Vendor","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{MaxPrice:{name:"MaxPrice",type:"AmountType",xmlRequired:false},MinPrice:{name:"MinPrice",type:"AmountType",xmlRequired:false}},ID:"PriceRangeFilterType"}),isc.XSComplexType.create({mustQualify:true,fields:{ProductInfo:{name:"ProductInfo",type:"ProductInfoType",xmlRequired:false}},ID:"PricingRecommendationsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ProPackEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ProPackPlusEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CheckoutRedirectProStores:{name:"CheckoutRedirectProStores",type:"boolean",xmlRequired:false},ProStoresDetails:{name:"ProStoresDetails",type:"ProStoresDetailsType",xmlRequired:false,inapplicable:true}},ID:"ProStoresCheckoutPreferenceType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SellerThirdPartyUsername:{name:"SellerThirdPartyUsername",type:"string",xmlRequired:false},StoreName:{name:"StoreName",type:"string",xmlRequired:false},Status:{name:"Status",type:"EnableCodeType",xmlRequired:false}},ID:"ProStoresDetailsType"}),isc.XSComplexType.create({mustQualify:true,fields:{Product:{name:"Product",type:"ExpressProductType",xmlRequired:false}},ID:"ProductArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{hasMoreChildren:{name:"hasMoreChildren",type:"boolean",xmlAttribute:true},ParentProduct:{name:"ParentProduct",type:"ProductType",xmlRequired:false},FamilyMembers:{name:"FamilyMembers",type:"ProductType",xmlRequired:false}},ID:"ProductFamilyType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DisplayName:{name:"DisplayName",type:"string",xmlRequired:false},DisplayValue:{name:"DisplayValue",type:"string",xmlRequired:false}},ID:"ProductFinderConstraintType"}),isc.XSComplexType.create({mustQualify:true,fields:{productInfoID:{name:"productInfoID",type:"string",xmlAttribute:true},AverageStartPrice:{name:"AverageStartPrice",type:"AmountType",xmlRequired:false},AverageSoldPrice:{name:"AverageSoldPrice",type:"AmountType",xmlRequired:false},Title:{name:"Title",type:"string",xmlRequired:false}},ID:"ProductInfoType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ProductID:{name:"ProductID",type:"string",xmlRequired:false},IncludeStockPhotoURL:{name:"IncludeStockPhotoURL",type:"boolean",xmlRequired:false},IncludePrefilledItemInformation:{name:"IncludePrefilledItemInformation",type:"boolean",xmlRequired:false},UseStockPhotoURLAsGallery:{name:"UseStockPhotoURLAsGallery",type:"boolean",xmlRequired:false},StockPhotoURL:{name:"StockPhotoURL",type:"anyURI",xmlRequired:false},Copyright:{name:"Copyright",type:"string",xmlRequired:false}},ID:"ProductListingDetailsType"}),isc.XSComplexType.create({mustQualify:true,fields:{Product:{name:"Product",type:"ProductInfoType",xmlRequired:false}},ID:"ProductRecommendationsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SearchCharacteristicsSet:{name:"SearchCharacteristicsSet",type:"CharacteristicsSetType",xmlRequired:false},SearchType:{name:"SearchType",type:"CharacteristicsSearchCodeType",xmlRequired:false},SortCharacteristics:{name:"SortCharacteristics",type:"CharacteristicType",xmlRequired:false},DataElementSet:{name:"DataElementSet",type:"DataElementSetType",xmlRequired:false}},ID:"ProductSearchPageType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ID:{name:"ID",type:"string",xmlRequired:false},NumProducts:{name:"NumProducts",type:"string",xmlRequired:false},AttributeSet:{name:"AttributeSet",type:"ResponseAttributeSetType",xmlRequired:false},DisplayStockPhotos:{name:"DisplayStockPhotos",type:"boolean",xmlRequired:false}},ID:"ProductSearchResultType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ProductSearchID:{name:"ProductSearchID",type:"string",xmlRequired:false},AttributeSetID:{name:"AttributeSetID",type:"int",xmlRequired:true},ProductFinderID:{name:"ProductFinderID",type:"int",xmlRequired:false},ProductID:{name:"ProductID",type:"string",xmlRequired:false},SortAttributeID:{name:"SortAttributeID",type:"int",xmlRequired:false},MaxChildrenPerFamily:{name:"MaxChildrenPerFamily",type:"int",xmlRequired:false},SearchAttributes:{name:"SearchAttributes",type:"SearchAttributesType",xmlRequired:false},Pagination:{name:"Pagination",type:"PaginationType",xmlRequired:false},AvailableItemsOnly:{name:"AvailableItemsOnly",type:"boolean",xmlRequired:false},QueryKeywords:{name:"QueryKeywords",type:"string",xmlRequired:false},CharacteristicSetIDs:{name:"CharacteristicSetIDs",type:"CharacteristicSetIDsType",xmlRequired:false},ProductReferenceID:{name:"ProductReferenceID",type:"string",xmlRequired:false},ExternalProductID:{name:"ExternalProductID",type:"ExternalProductIDType",xmlRequired:false}},ID:"ProductSearchType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ProductSortCodeType",valueMap:["PopularityAsc","PopularityDesc","RatingAsc","RatingDesc","ReviewCountAsc","ReviewCountDesc","ItemCountAsc","ItemCountDesc","TitleAsc","TitleDesc","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{productID:{name:"productID",type:"string",xmlAttribute:true},stockPhotoURL:{name:"stockPhotoURL",type:"anyURI",xmlAttribute:true},title:{name:"title",type:"string",xmlAttribute:true},CharacteristicsSet:{name:"CharacteristicsSet",type:"CharacteristicsSetType",xmlRequired:false},DetailsURL:{name:"DetailsURL",type:"anyURI",xmlRequired:false},NumItems:{name:"NumItems",type:"int",xmlRequired:false},MinPrice:{name:"MinPrice",type:"AmountType",xmlRequired:false},MaxPrice:{name:"MaxPrice",type:"AmountType",xmlRequired:false}},ID:"ProductType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ProductUseCaseCodeType",valueMap:["AddItem","ReviseItem","RelistItem","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},PictureURL:{name:"PictureURL",type:"string",xmlRequired:false},Position:{name:"Position",type:"int",xmlRequired:false},SelectionType:{name:"SelectionType",type:"PromotionItemSelectionCodeType",xmlRequired:false},Title:{name:"Title",type:"string",xmlRequired:false},ListingType:{name:"ListingType",type:"ListingTypeCodeType",xmlRequired:false},PromotionDetails:{name:"PromotionDetails",type:"PromotionDetailsType",xmlRequired:false},TimeLeft:{name:"TimeLeft",type:"duration",xmlRequired:false}},ID:"PromotedItemType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{PromotionPrice:{name:"PromotionPrice",type:"AmountType",xmlRequired:false},PromotionPriceType:{name:"PromotionPriceType",type:"PromotionItemPriceTypeCodeType",xmlRequired:false},BidCount:{name:"BidCount",type:"int",xmlRequired:false},ConvertedPromotionPrice:{name:"ConvertedPromotionPrice",type:"AmountType",xmlRequired:false}},ID:"PromotionDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PromotionItemPriceTypeCodeType",valueMap:["AuctionPrice","BuyItNowPrice","BestOfferOnlyPrice","ClassifiedAdPrice","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"PromotionItemSelectionCodeType",valueMap:["Manual","Automatic","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"PromotionMethodCodeType",valueMap:["CrossSell","UpSell","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{PromotionRule:{name:"PromotionRule",type:"PromotionRuleType",xmlRequired:false}},ID:"PromotionRuleArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{PromotedItem:{name:"PromotedItem",type:"PromotedItemType",xmlRequired:false},SiteID:{name:"SiteID",type:"SiteCodeType",xmlRequired:false},PromotedStoreCategoryID:{name:"PromotedStoreCategoryID",type:"long",xmlRequired:false},PromotedeBayCategoryID:{name:"PromotedeBayCategoryID",type:"string",xmlRequired:false},PromotedKeywords:{name:"PromotedKeywords",type:"string",xmlRequired:false},ReferringItemID:{name:"ReferringItemID",type:"ItemIDType",xmlRequired:false},ReferringStoreCategoryID:{name:"ReferringStoreCategoryID",type:"long",xmlRequired:false},ReferringeBayCategoryID:{name:"ReferringeBayCategoryID",type:"string",xmlRequired:false},ReferringKeywords:{name:"ReferringKeywords",type:"string",xmlRequired:false},PromotionScheme:{name:"PromotionScheme",type:"PromotionSchemeCodeType",xmlRequired:false},PromotionMethod:{name:"PromotionMethod",type:"PromotionMethodCodeType",xmlRequired:false}},ID:"PromotionRuleType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PromotionSchemeCodeType",valueMap:["ItemToItem","ItemToStoreCat","StoreToStoreCat","ItemToDefaultRule","DefaultRule","CategoryProximity","RelatedCategoryRule","DefaultUpSellLogic","DefaultCrossSellLogic","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{PromotionalSale:{name:"PromotionalSale",type:"PromotionalSaleType",xmlRequired:false}},ID:"PromotionalSaleArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{OriginalPrice:{name:"OriginalPrice",type:"AmountType",xmlRequired:false},StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},EndTime:{name:"EndTime",type:"dateTime",xmlRequired:false}},ID:"PromotionalSaleDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PromotionalSaleStatusCodeType",valueMap:["Active","Scheduled","Processing","Inactive","Deleted","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{PromotionalSaleID:{name:"PromotionalSaleID",type:"long",xmlRequired:false},PromotionalSaleName:{name:"PromotionalSaleName",type:"string",xmlRequired:false},PromotionalSaleItemIDArray:{name:"PromotionalSaleItemIDArray",type:"ItemIDArrayType",xmlRequired:false},Status:{name:"Status",type:"PromotionalSaleStatusCodeType",xmlRequired:false},DiscountType:{name:"DiscountType",type:"DiscountCodeType",xmlRequired:false},DiscountValue:{name:"DiscountValue",type:"double",xmlRequired:false},PromotionalSaleStartTime:{name:"PromotionalSaleStartTime",type:"dateTime",xmlRequired:false},PromotionalSaleEndTime:{name:"PromotionalSaleEndTime",type:"dateTime",xmlRequired:false}},ID:"PromotionalSaleType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DiscountName:{name:"DiscountName",type:"DiscountNameCodeType",xmlRequired:false},ShippingCost:{name:"ShippingCost",type:"AmountType",xmlRequired:false},OrderAmount:{name:"OrderAmount",type:"AmountType",xmlRequired:false},ItemCount:{name:"ItemCount",type:"int",xmlRequired:false}},ID:"PromotionalShippingDiscountDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{MaxDistance:{name:"MaxDistance",type:"int",xmlRequired:true},PostalCode:{name:"PostalCode",type:"string",xmlRequired:false}},ID:"ProximitySearchType"}),isc.SimpleType.create({inheritsFrom:"token",name:"PurchasePurposeTypeCodeType",valueMap:["Other","BuyNowItem","ShoppingCart","AuctionItem","GiftCertificates","Subscription","Donation","eBayBilling","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"QuantityOperatorCodeType",valueMap:["LessThan","LessThanOrEqual","Equal","GreaterThan","GreaterThanOrEqual","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"QuestionTypeCodeType",valueMap:["General","Shipping","Payment","MultipleItemShipping","CustomizedSubject","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"RCSPaymentStatusCodeType",valueMap:["Canceled","Paid","Pending","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"RangeCodeType",valueMap:["High","Low","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{codeID:{name:"codeID",type:"long",xmlAttribute:true},BriefText:{name:"BriefText",type:"string",xmlRequired:false},DetailedText:{name:"DetailedText",type:"string",xmlRequired:false}},ID:"ReasonCodeDetailType"}),isc.SimpleType.create({inheritsFrom:"token",name:"RecipientRelationCodeType",valueMap:["1","2","3","4","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"RecommendationEngineCodeType",valueMap:["ListingAnalyzer","SIFFTAS","ProductPricing","CustomCode","SuggestedAttributes"]}),isc.XSComplexType.create({mustQualify:true,fields:{Refund:{name:"Refund",type:"RefundType",xmlRequired:false}},ID:"RefundArrayType"}),isc.SimpleType.create({inheritsFrom:"token",name:"RefundReasonCodeType",valueMap:["CannotShipProduct","WrongItemShipped","ItemBadQuality","ItemDamaged","BuyerRemorse","Other","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{RefundFromSeller:{name:"RefundFromSeller",type:"AmountType",xmlRequired:false},TotalRefundToBuyer:{name:"TotalRefundToBuyer",type:"AmountType",xmlRequired:false},RefundTime:{name:"RefundTime",type:"dateTime",xmlRequired:false}},ID:"RefundType"}),isc.SimpleType.create({inheritsFrom:"token",name:"RefundTypeCodeType",valueMap:["Full","FullPlusShipping","CustomOrPartial","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{RegionID:{name:"RegionID",type:"string",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false}},ID:"RegionDetailsType"}),isc.XSComplexType.create({mustQualify:true,fields:{Keyword:{name:"Keyword",type:"string",xmlRequired:false}},ID:"RelatedSearchKeywordArrayType"}),isc.XSComplexType.create({mustQualify:true,fields:{DurationInDays:{name:"DurationInDays",type:"int",xmlRequired:false},Include:{name:"Include",type:"boolean",xmlRequired:false}},ID:"ReminderCustomizationType"}),isc.XSComplexType.create({mustQualify:true,fields:{PaymentToSendCount:{name:"PaymentToSendCount",type:"int",xmlRequired:false},FeedbackToReceiveCount:{name:"FeedbackToReceiveCount",type:"int",xmlRequired:false},FeedbackToSendCount:{name:"FeedbackToSendCount",type:"int",xmlRequired:false},OutbidCount:{name:"OutbidCount",type:"int",xmlRequired:false},PaymentToReceiveCount:{name:"PaymentToReceiveCount",type:"int",xmlRequired:false},SecondChanceOfferCount:{name:"SecondChanceOfferCount",type:"int",xmlRequired:false},ShippingNeededCount:{name:"ShippingNeededCount",type:"int",xmlRequired:false},RelistingNeededCount:{name:"RelistingNeededCount",type:"int",xmlRequired:false},TotalNewLeadsCount:{name:"TotalNewLeadsCount",type:"int",xmlRequired:false}},ID:"RemindersType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CategoriesOnly:{name:"CategoriesOnly",type:"boolean",xmlRequired:false},MaxCategories:{name:"MaxCategories",type:"int",xmlRequired:false},MaxSubcategories:{name:"MaxSubcategories",type:"int",xmlRequired:false},Levels:{name:"Levels",type:"int",xmlRequired:false},DemandData:{name:"DemandData",type:"boolean",xmlRequired:false}},ID:"RequestCategoriesType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ApproximatePages:{name:"ApproximatePages",type:"int",xmlRequired:true},AttributeSetID:{name:"AttributeSetID",type:"int",xmlRequired:true},HasMore:{name:"HasMore",type:"boolean",xmlRequired:true},ProductFamilies:{name:"ProductFamilies",type:"ProductFamilyType",xmlRequired:false},ProductFinderConstraints:{name:"ProductFinderConstraints",type:"ProductFinderConstraintType",xmlRequired:false},TooManyMatchesFound:{name:"TooManyMatchesFound",type:"boolean",xmlRequired:true},TotalProducts:{name:"TotalProducts",type:"int",xmlRequired:true}},ID:"ResponseAttributeSetType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AverageRating:{name:"AverageRating",type:"float",xmlRequired:false},Review:{name:"Review",type:"ReviewType",xmlRequired:false}},ID:"ReviewDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{URL:{name:"URL",type:"anyURI",xmlRequired:false},Title:{name:"Title",type:"string",xmlRequired:false},Rating:{name:"Rating",type:"int",xmlRequired:false},Text:{name:"Text",type:"string",xmlRequired:false},UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},CreationTime:{name:"CreationTime",type:"dateTime",xmlRequired:false}},ID:"ReviewType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemRevised:{name:"ItemRevised",type:"boolean",xmlRequired:true},BuyItNowAdded:{name:"BuyItNowAdded",type:"boolean",xmlRequired:false},BuyItNowLowered:{name:"BuyItNowLowered",type:"boolean",xmlRequired:false},ReserveLowered:{name:"ReserveLowered",type:"boolean",xmlRequired:false},ReserveRemoved:{name:"ReserveRemoved",type:"boolean",xmlRequired:false}},ID:"ReviseStatusType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AttributeSetArray:{name:"AttributeSetArray",type:"AttributeSetArrayType",xmlRequired:false}},ID:"SIFFTASRecommendationsType"}),isc.XSComplexType.create({mustQualify:true,fields:{SKU:{name:"SKU",type:"SKUType",xmlRequired:false}},ID:"SKUArrayType"}),isc.SimpleType.create({inheritsFrom:"string",name:"SKUType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SMSSubscriptionErrorCodeCodeType",valueMap:["SMSAggregatorNotAvailable","PhoneNumberInvalid","PhoneNumberChanged","PhoneNumberCarrierChanged","UserRequestedUnregistration","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SMSPhone:{name:"SMSPhone",type:"string",xmlRequired:false},UserStatus:{name:"UserStatus",type:"SMSSubscriptionUserStatusCodeType",xmlRequired:false},CarrierID:{name:"CarrierID",type:"WirelessCarrierIDCodeType",xmlRequired:false},ErrorCode:{name:"ErrorCode",type:"SMSSubscriptionErrorCodeCodeType",xmlRequired:false},ItemToUnsubscribe:{name:"ItemToUnsubscribe",type:"ItemIDType",xmlRequired:false}},ID:"SMSSubscriptionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SMSSubscriptionUserStatusCodeType",valueMap:["Registered","Unregistered","Pending","Failed","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"SafePaymentRequiredDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SalesTaxPercent:{name:"SalesTaxPercent",type:"float",xmlRequired:false},SalesTaxState:{name:"SalesTaxState",type:"string",xmlRequired:false},ShippingIncludedInTax:{name:"ShippingIncludedInTax",type:"boolean",xmlRequired:false},SalesTaxAmount:{name:"SalesTaxAmount",type:"AmountType",xmlRequired:false}},ID:"SalesTaxType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ScheduleID:{name:"ScheduleID",type:"int",xmlRequired:false},ScheduleTime:{name:"ScheduleTime",type:"dateTime",xmlRequired:false}},ID:"ScheduleType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{MaxScheduledMinutes:{name:"MaxScheduledMinutes",type:"int",xmlRequired:false},MinScheduledMinutes:{name:"MinScheduledMinutes",type:"int",xmlRequired:false},MaxScheduledItems:{name:"MaxScheduledItems",type:"int",xmlRequired:false}},ID:"SchedulingInfoType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AttributeID:{name:"AttributeID",type:"int",xmlRequired:true},DateSpecifier:{name:"DateSpecifier",type:"DateSpecifierCodeType",xmlRequired:false},RangeSpecifier:{name:"RangeSpecifier",type:"RangeCodeType",xmlRequired:false},ValueList:{name:"ValueList",type:"ValType",xmlRequired:false}},ID:"SearchAttributesType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BuyItNowEnabled:{name:"BuyItNowEnabled",type:"boolean",xmlRequired:false},Picture:{name:"Picture",type:"boolean",xmlRequired:false},RecentListing:{name:"RecentListing",type:"boolean",xmlRequired:false}},ID:"SearchDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SearchFlagsCodeType",valueMap:["Charity","SearchInDescription","PayPalBuyerPaymentOption","NowAndNew","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CountryCode:{name:"CountryCode",type:"CountryCodeType",xmlRequired:false},ItemLocation:{name:"ItemLocation",type:"ItemLocationCodeType",xmlRequired:false},SearchLocation:{name:"SearchLocation",type:"SearchLocationType",xmlRequired:false},Currency:{name:"Currency",type:"CurrencyCodeType",xmlRequired:false}},ID:"SearchLocationFilterType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{RegionID:{name:"RegionID",type:"string",xmlRequired:false},SiteLocation:{name:"SiteLocation",type:"SiteLocationType",xmlRequired:false}},ID:"SearchLocationType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ProductFinderID:{name:"ProductFinderID",type:"int",xmlRequired:false},SearchAttributes:{name:"SearchAttributes",type:"SearchAttributesType",xmlRequired:false}},ID:"SearchRequestType"}),isc.XSComplexType.create({mustQualify:true,fields:{SearchResultItem:{name:"SearchResultItem",type:"SearchResultItemType",xmlRequired:false}},ID:"SearchResultItemArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Item:{name:"Item",type:"ItemType",xmlRequired:false},ItemSpecific:{name:"ItemSpecific",type:"NameValueListArrayType",xmlRequired:false},SearchResultValues:{name:"SearchResultValues",type:"SearchResultValuesCodeType",xmlRequired:false}},ID:"SearchResultItemType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SearchResultValuesCodeType",valueMap:["Escrow","New","CharityListing","Picture","Gift","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"SearchSortOrderCodeType",valueMap:["SortByEndDate","SortByStartDate","SortByCurrentBid","SortByListingDate","SortByCurrentBidAsc","SortByCurrentBidDesc","SortByPayPalAsc","SortByPayPalDesc","SortByEscrowAsc","SortByEscrowDesc","SortByCountryAsc","SortByCountryDesc","SortByDistanceAsc","SortByBidCountAsc","SortByBidCountDesc","BestMatchSort","CustomCode","BestMatchCategoryGroup"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{StoreName:{name:"StoreName",type:"string",xmlRequired:false},StoreSearch:{name:"StoreSearch",type:"StoreSearchCodeType",xmlRequired:false}},ID:"SearchStoreFilterType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SearchTypeCodeType",valueMap:["All","Gallery","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"SecondChanceOfferDurationCodeType",valueMap:["Days_1","Days_3","Days_5","Days_7","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"string",name:"SelectionModeCodeType",valueMap:["Automatic","Manual","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"SellerBusinessCodeType",valueMap:["Undefined","Private","Commercial"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"SellerContactDetailsEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SearchKeywords:{name:"SearchKeywords",type:"string",xmlRequired:false},StoreCategoryID:{name:"StoreCategoryID",type:"long",xmlRequired:false},ListingType:{name:"ListingType",type:"ListingTypeCodeType",xmlRequired:false},SearchSortOrder:{name:"SearchSortOrder",type:"StoreItemListSortOrderCodeType",xmlRequired:false},MinPrice:{name:"MinPrice",type:"AmountType",xmlRequired:false},MaxPrice:{name:"MaxPrice",type:"AmountType",xmlRequired:false},FavoriteItemID:{name:"FavoriteItemID",type:"ItemIDType",xmlRequired:false}},ID:"SellerFavoriteItemPreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SellerGuaranteeLevelCodeType",valueMap:["NotEligible","Regular","Premium","Ultra","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"SellerLevelCodeType",valueMap:["Bronze","Silver","Gold","Platinum","Titanium","None","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"SellerPaymentMethodCodeType",valueMap:["NothingOnFile","CreditCard","DirectDebit","DirectDebitPendingSignatureMandate","eBayDirectPay","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AlwaysUseThisPaymentAddress:{name:"AlwaysUseThisPaymentAddress",type:"boolean",xmlRequired:false},DisplayPayNowButton:{name:"DisplayPayNowButton",type:"DisplayPayNowButtonCodeType",xmlRequired:false},PayPalPreferred:{name:"PayPalPreferred",type:"boolean",xmlRequired:false},DefaultPayPalEmailAddress:{name:"DefaultPayPalEmailAddress",type:"string",xmlRequired:false},PayPalAlwaysOn:{name:"PayPalAlwaysOn",type:"boolean",xmlRequired:false},SellerPaymentAddress:{name:"SellerPaymentAddress",type:"AddressType",xmlRequired:false},UPSRateOption:{name:"UPSRateOption",type:"UPSRateOptionCodeType",xmlRequired:false}},ID:"SellerPaymentPreferencesType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},OrderID:{name:"OrderID",type:"OrderIDType",xmlRequired:false},SellerInventoryID:{name:"SellerInventoryID",type:"string",xmlRequired:false},PrivateNotes:{name:"PrivateNotes",type:"string",xmlRequired:false},ExternalProductID:{name:"ExternalProductID",type:"ExternalProductIDType",xmlRequired:false},Title:{name:"Title",type:"string",xmlRequired:false},PaymentType:{name:"PaymentType",type:"PaymentTypeCodeType",xmlRequired:false},TransactionPrice:{name:"TransactionPrice",type:"AmountType",xmlRequired:false},ShippingReimbursement:{name:"ShippingReimbursement",type:"AmountType",xmlRequired:false},Commission:{name:"Commission",type:"AmountType",xmlRequired:false},AmountPaid:{name:"AmountPaid",type:"AmountType",xmlRequired:false},PaidTime:{name:"PaidTime",type:"dateTime",xmlRequired:false}},ID:"SellerPaymentType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{PaisaPayStatus:{name:"PaisaPayStatus",type:"int",xmlRequired:false},AllowPaymentEdit:{name:"AllowPaymentEdit",type:"boolean",xmlRequired:true},BillingCurrency:{name:"BillingCurrency",type:"CurrencyCodeType",xmlRequired:false},CheckoutEnabled:{name:"CheckoutEnabled",type:"boolean",xmlRequired:true},CIPBankAccountStored:{name:"CIPBankAccountStored",type:"boolean",xmlRequired:true},GoodStanding:{name:"GoodStanding",type:"boolean",xmlRequired:true},LiveAuctionAuthorized:{name:"LiveAuctionAuthorized",type:"boolean",xmlRequired:true},MerchandizingPref:{name:"MerchandizingPref",type:"MerchandizingPrefCodeType",xmlRequired:false},QualifiesForB2BVAT:{name:"QualifiesForB2BVAT",type:"boolean",xmlRequired:true},SellerGuaranteeLevel:{name:"SellerGuaranteeLevel",type:"SellerGuaranteeLevelCodeType",xmlRequired:false},SellerLevel:{name:"SellerLevel",type:"SellerLevelCodeType",xmlRequired:false},SellerPaymentAddress:{name:"SellerPaymentAddress",type:"AddressType",xmlRequired:false},SchedulingInfo:{name:"SchedulingInfo",type:"SchedulingInfoType",xmlRequired:false},StoreOwner:{name:"StoreOwner",type:"boolean",xmlRequired:true},StoreURL:{name:"StoreURL",type:"anyURI",xmlRequired:false},SellerBusinessType:{name:"SellerBusinessType",type:"SellerBusinessCodeType",xmlRequired:false},RegisteredBusinessSeller:{name:"RegisteredBusinessSeller",type:"boolean",xmlRequired:false},ExpressEligible:{name:"ExpressEligible",type:"boolean",xmlRequired:false},PaymentMethod:{name:"PaymentMethod",type:"SellerPaymentMethodCodeType",xmlRequired:false},ProStoresPreference:{name:"ProStoresPreference",type:"ProStoresCheckoutPreferenceType",xmlRequired:false},ExpressWallet:{name:"ExpressWallet",type:"boolean",xmlRequired:false},ExpressSellerRequirements:{name:"ExpressSellerRequirements",type:"ExpressSellerRequirementsType",xmlRequired:false},CharityRegistered:{name:"CharityRegistered",type:"boolean",xmlRequired:false},SafePaymentExempt:{name:"SafePaymentExempt",type:"boolean",xmlRequired:false}},ID:"SellerType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ProductName:{name:"ProductName",type:"string",xmlRequired:false},PartNumber:{name:"PartNumber",type:"int",xmlRequired:false},ProductPartNumber:{name:"ProductPartNumber",type:"string",xmlRequired:false}},ID:"SellingManagerProductDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BidCount:{name:"BidCount",type:"int",xmlRequired:false},BidIncrement:{name:"BidIncrement",type:"AmountType",xmlRequired:false},ConvertedCurrentPrice:{name:"ConvertedCurrentPrice",type:"AmountType",xmlRequired:false},CurrentPrice:{name:"CurrentPrice",type:"AmountType",xmlRequired:false},HighBidder:{name:"HighBidder",type:"UserType",xmlRequired:false},LeadCount:{name:"LeadCount",type:"int",xmlRequired:false},MinimumToBid:{name:"MinimumToBid",type:"AmountType",xmlRequired:false},QuantitySold:{name:"QuantitySold",type:"int",xmlRequired:false},ReserveMet:{name:"ReserveMet",type:"boolean",xmlRequired:false},SecondChanceEligible:{name:"SecondChanceEligible",type:"boolean",xmlRequired:false},BidderCount:{name:"BidderCount",type:"long",xmlRequired:false},ListingStatus:{name:"ListingStatus",type:"ListingStatusCodeType",xmlRequired:false},FinalValueFee:{name:"FinalValueFee",type:"AmountType",xmlRequired:false},PromotionalSaleDetails:{name:"PromotionalSaleDetails",type:"PromotionalSaleDetailsType",xmlRequired:false}},ID:"SellingStatusType"}),isc.XSComplexType.create({mustQualify:true,fields:{ActiveAuctionCount:{name:"ActiveAuctionCount",type:"int",xmlRequired:false},AuctionSellingCount:{name:"AuctionSellingCount",type:"int",xmlRequired:false},AuctionBidCount:{name:"AuctionBidCount",type:"int",xmlRequired:false},TotalAuctionSellingValue:{name:"TotalAuctionSellingValue",type:"AmountType",xmlRequired:false},TotalSoldCount:{name:"TotalSoldCount",type:"int",xmlRequired:false},TotalSoldValue:{name:"TotalSoldValue",type:"AmountType",xmlRequired:false},SoldDurationInDays:{name:"SoldDurationInDays",type:"int",xmlRequired:false}},ID:"SellingSummaryType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SetUserNotesActionCodeType",valueMap:["AddOrUpdate","Delete"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ShipmentDeliveryStatusCodeType",valueMap:["Created","DroppedOff","InTransit","Delivered","Returned","Canceled","LabelPrinted","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ShipmentStatusCodeType",valueMap:["Active","Canceled","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{EstimatedDeliveryDate:{name:"EstimatedDeliveryDate",type:"dateTime",xmlRequired:false},InsuredValue:{name:"InsuredValue",type:"AmountType",xmlRequired:false},PackageDepth:{name:"PackageDepth",type:"MeasureType",xmlRequired:false},PackageLength:{name:"PackageLength",type:"MeasureType",xmlRequired:false},PackageWidth:{name:"PackageWidth",type:"MeasureType",xmlRequired:false},PayPalShipmentID:{name:"PayPalShipmentID",type:"string",xmlRequired:false},ShipmentID:{name:"ShipmentID",type:"long",xmlRequired:false},PostageTotal:{name:"PostageTotal",type:"AmountType",xmlRequired:false},PrintedTime:{name:"PrintedTime",type:"dateTime",xmlRequired:false},ShipFromAddress:{name:"ShipFromAddress",type:"AddressType",xmlRequired:false},ShippingAddress:{name:"ShippingAddress",type:"AddressType",xmlRequired:false},ShippingCarrierUsed:{name:"ShippingCarrierUsed",type:"ShippingCarrierCodeType",xmlRequired:false},ShippingFeature:{name:"ShippingFeature",type:"ShippingFeatureCodeType",xmlRequired:false},ShippingPackage:{name:"ShippingPackage",type:"ShippingPackageCodeType",xmlRequired:false},ShippingServiceUsed:{name:"ShippingServiceUsed",type:"token",xmlRequired:false},ShipmentTrackingNumber:{name:"ShipmentTrackingNumber",type:"string",xmlRequired:false},WeightMajor:{name:"WeightMajor",type:"MeasureType",xmlRequired:false},WeightMinor:{name:"WeightMinor",type:"MeasureType",xmlRequired:false},ItemTransactionID:{name:"ItemTransactionID",type:"ItemTransactionIDType",xmlRequired:false},DeliveryDate:{name:"DeliveryDate",type:"dateTime",xmlRequired:false},DeliveryStatus:{name:"DeliveryStatus",type:"ShipmentDeliveryStatusCodeType",xmlRequired:false},RefundGrantedTime:{name:"RefundGrantedTime",type:"dateTime",xmlRequired:false},RefundRequestedTime:{name:"RefundRequestedTime",type:"dateTime",xmlRequired:false},Status:{name:"Status",type:"ShipmentStatusCodeType",xmlRequired:false}},ID:"ShipmentType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ShippingCarrierCodeType",valueMap:["UPS","USPS","DeutschePost","DHL","Hermes","iLoxx","Other","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AllowPaymentEdit:{name:"AllowPaymentEdit",type:"boolean",xmlRequired:false},ApplyShippingDiscount:{name:"ApplyShippingDiscount",type:"boolean",xmlRequired:false},CalculatedShippingRate:{name:"CalculatedShippingRate",type:"CalculatedShippingRateType",xmlRequired:false},ChangePaymentInstructions:{name:"ChangePaymentInstructions",type:"boolean",xmlRequired:false},InsuranceFee:{name:"InsuranceFee",type:"AmountType",xmlRequired:false},InsuranceOption:{name:"InsuranceOption",type:"InsuranceOptionCodeType",xmlRequired:false},InsuranceWanted:{name:"InsuranceWanted",type:"boolean",xmlRequired:false},PaymentEdited:{name:"PaymentEdited",type:"boolean",xmlRequired:false},PaymentInstructions:{name:"PaymentInstructions",type:"string",xmlRequired:false},SalesTax:{name:"SalesTax",type:"SalesTaxType",xmlRequired:false},ShippingRateErrorMessage:{name:"ShippingRateErrorMessage",type:"string",xmlRequired:false},ShippingRateType:{name:"ShippingRateType",type:"ShippingRateTypeCodeType",xmlRequired:false},ShippingServiceOptions:{name:"ShippingServiceOptions",type:"ShippingServiceOptionsType",xmlRequired:false},InternationalShippingServiceOption:{name:"InternationalShippingServiceOption",type:"InternationalShippingServiceOptionsType",xmlRequired:false},ShippingType:{name:"ShippingType",type:"ShippingTypeCodeType",xmlRequired:false},SellingManagerSalesRecordNumber:{name:"SellingManagerSalesRecordNumber",type:"int",xmlRequired:false},ThirdPartyCheckout:{name:"ThirdPartyCheckout",type:"boolean",xmlRequired:false},TaxTable:{name:"TaxTable",type:"TaxTableType",xmlRequired:false},GetItFast:{name:"GetItFast",type:"boolean",xmlRequired:false},ShipmentTrackingNumber:{name:"ShipmentTrackingNumber",type:"string",xmlRequired:false},ShippingServiceUsed:{name:"ShippingServiceUsed",type:"token",xmlRequired:false},DefaultShippingCost:{name:"DefaultShippingCost",type:"AmountType",xmlRequired:false},InsuranceDetails:{name:"InsuranceDetails",type:"InsuranceDetailsType",xmlRequired:false},InternationalInsuranceDetails:{name:"InternationalInsuranceDetails",type:"InsuranceDetailsType",xmlRequired:false},ShippingDiscountProfileID:{name:"ShippingDiscountProfileID",type:"string",xmlRequired:false},FlatShippingDiscount:{name:"FlatShippingDiscount",type:"FlatShippingDiscountType",xmlRequired:false},CalculatedShippingDiscount:{name:"CalculatedShippingDiscount",type:"CalculatedShippingDiscountType",xmlRequired:false},PromotionalShippingDiscount:{name:"PromotionalShippingDiscount",type:"boolean",xmlRequired:false},InternationalShippingDiscountProfileID:{name:"InternationalShippingDiscountProfileID",type:"string",xmlRequired:false},InternationalFlatShippingDiscount:{name:"InternationalFlatShippingDiscount",type:"FlatShippingDiscountType",xmlRequired:false},InternationalCalculatedShippingDiscount:{name:"InternationalCalculatedShippingDiscount",type:"CalculatedShippingDiscountType",xmlRequired:false},InternationalPromotionalShippingDiscount:{name:"InternationalPromotionalShippingDiscount",type:"boolean",xmlRequired:false},PromotionalShippingDiscountDetails:{name:"PromotionalShippingDiscountDetails",type:"PromotionalShippingDiscountDetailsType",xmlRequired:false}},ID:"ShippingDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ShippingFeatureCodeType",valueMap:["DeliveryConfirmation","SignatureConfirmation","StealthPostage","SaturdayDelivery","Other","NotDefined","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{InsuranceOption:{name:"InsuranceOption",type:"InsuranceOptionCodeType",xmlRequired:false},FlatRateInsuranceRangeCost:{name:"FlatRateInsuranceRangeCost",type:"FlatRateInsuranceRangeCostType",xmlRequired:false}},ID:"ShippingInsuranceType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ShippingLocation:{name:"ShippingLocation",type:"string",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false}},ID:"ShippingLocationDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ShippingPackageCodeType",valueMap:["None","Letter","LargeEnvelope","USPSLargePack","VeryLargePack","ExtraLargePack","UPSLetter","USPSFlatRateEnvelope","PackageThickEnvelope","Roll","Europallet","OneWayPallet","BulkyGoods","Furniture","Cars","Motorbikes","Caravan","IndustryVehicles","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ShippingRateTypeCodeType",valueMap:["OnDemand","DailyPickup","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ShippingRegionCodeType",valueMap:["Africa","Asia","Caribbean","Europe","LatinAmerica","MiddleEast","NorthAmerica","Oceania","SouthAmerica","EuropeanUnion","WillNotShip","Worldwide","Americas","None","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"ShippingServiceCodeType",valueMap:["UPSGround","UPS3rdDay","UPS2ndDay","UPSNextDay","USPSPriority","USPSParcel","USPSMedia","USPSFirstClass","ShippingMethodStandard","ShippingMethodExpress","USPSExpressMail","UPSNextDayAir","UPS2DayAirAM","Other","LocalDelivery","NotSelected","InternationalNotSelected","StandardInternational","ExpeditedInternational","USPSGlobalExpress","USPSGlobalPriority","USPSEconomyParcel","USPSEconomyLetter","USPSAirmailLetter","USPSAirmailParcel","UPSWorldWideExpressPlus","UPSWorldWideExpress","UPSWorldWideExpedited","UPSStandardToCanada","OtherInternational","AT_StandardDispatch","AT_InsuredDispatch","AT_Writing","AT_COD","AT_ExpressOrCourier","AT_InsuredExpressOrCourier","AT_SpecialDispatch","AT_InsuredSpecialDispatch","AT_Sonstige","AT_UnversicherterVersandInternational","AT_VersicherterVersandInternational","AT_SonstigerVersandInternational","AT_UnversicherterExpressVersandInternational","AT_VersicherterExpressVersandInternational","AU_Regular","AU_Express","AU_Registered","AU_Courier","AU_Other","AU_EMSInternationalCourierParcels","AU_EMSInternationalCourierDocuments","AU_ExpressPostInternationalDocuments","AU_AirMailInternational","AU_EconomyAirInternational","AU_SeaMailInternational","AU_StandardInternational","AU_ExpeditedInternational","AU_OtherInternational","BEFR_StandardDelivery","BEFR_PriorityDelivery","BEFR_ParcelPost","BEFR_RegisteredMail","BEFR_Other","BEFR_DePostInternational","BEFR_UPSInternational","BEFR_FedExInternational","BEFR_DHLInternational","BEFR_TPGPostTNTInternational","BEFR_StandardInternational","BEFR_ExpeditedInternational","BEFR_OtherInternational","BEFR_LaPosteInternational","BENL_StandardDelivery","BENL_PriorityDelivery","BENL_ParcelPost","BENL_RegisteredMail","BENL_Other","BENL_DePostInternational","BENL_UPSInternational","BENL_FedExInternational","BENL_DHLInternational","BENL_TPGPostTNTInternational","BENL_StandardInternational","BENL_ExpeditedInternational","BENL_OtherInternational","BENL_LaPosteInternational","CA_StandardDelivery","CA_ExpeditedDelivery","CA_PostLettermail","CA_PostRegularParcel","CA_PostExpeditedParcel","CA_PostXpresspost","CA_PostPriorityCourier","CA_StandardInternational","CA_ExpeditedInternational","CA_OtherInternational","CA_PostExpeditedParcelUSA","CA_PostSmallPacketsUSA","CA_PostXpresspostUSA","CA_PostXpresspostInternational","CA_PostInternationalParcelSurface","CA_PostInternationalParcelAir","CA_SmallPacketsInternational","CA_PurolatorInternational","CA_PostSmallPacketsUSAGround","CA_PostSmallPacketsUSAAir","CA_SmallPacketsInternationalGround","CA_SmallPacketsInternationalAir","CA_PostUSALetterPost","CA_PostInternationalLetterPost","CA_UPSExpressCanada","CA_UPSExpressSaverCanada","CA_UPSExpeditedCanada","CA_UPSStandardCanada","CA_UPSExpressUnitedStates","CA_UPSExpeditedUnitedStates","CA_UPS3DaySelectUnitedStates","CA_UPSStandardUnitedStates","CA_UPSWorldWideExpress","CA_UPSWorldWideExpedited","CH_StandardDispatchAPost","CH_StandardDispatchBPost","CH_InsuredDispatch","CH_Writing","CH_COD","CH_ExpressOrCourier","CH_InsuredExpressOrCourier","CH_SpecialDispatch","CH_InsuredSpecialDispatch","CH_Sonstige","CH_SonstigerVersandInternational","CH_EconomySendungenInternational","CH_PrioritySendungenInternational","CH_UrgentSendungenInternational","CN_PersonalDelivery","CN_RegularPackage","CN_DeliveryCompanyExpress","CN_PostOfficeExpress","CN_Others","CN_FastPostOffice","CN_ExpressDeliverySameCity","CN_ExpressDeliveryOtherCities","CN_StandardInternational","CN_ExpeditedInternational","CN_OtherInternational","CN_CODInternational","CN_StandardMailingInternational","CN_RegularLogisticsInternational","CN_EMSInternational","CN_OthersInternational","DE_StandardDispatch","DE_InsuredDispatch","DE_Writing","DE_COD","DE_ExpressOrCourier","DE_InsuredExpressOrCourier","DE_SpecialDispatch","DE_InsuredSpecialDispatch","DE_UnversicherterVersand","DE_DeutschePostBrief","DE_DHLPostpaket","DE_DHLPackchen","DE_DeutschePostWarensendung","DE_DeutschePostBuchersendung","DE_HermesPaketUnversichert","DE_HermesPaketVersichert","DE_IloxxTransportXXL","DE_IloxxUbernachtExpress","DE_IloxxStandard","DE_Sonstige","DE_UnversicherterVersandInternational","DE_VersicherterVersandInternational","DE_DHLPostpaketInternational","DE_DHLPackchenInternational","DE_SonstigerVersandInternational","DE_UnversicherterExpressVersandInternational","DE_VersicherterExpressVersandInternational","DE_DeutschePostBriefLandInternational","DE_DeutschePostBriefLuftInternational","DE_IloxxEuropaInternational","DE_IloxxWorldWideInternational","ES_CartasNacionalesHasta20","ES_CartasNacionalesDeMas20","ES_CartasInternacionalesHasta20","ES_CartasInternacionalesDeMas20","ES_PaqueteAzulHasta2kg","ES_PaqueteAzulDeMas2kg","ES_PaqueteInternacionalEconomico","ES_Urgente","ES_Otros","ES_StandardInternational","ES_ExpeditedInternational","ES_OtherInternational","ES_CartasPostalInternational","ES_EmsPostalExpressInternational","ES_EconomyPacketInternational","FR_ChronoposteInternationalClassic","FR_ColiposteColissimoDirect","FR_DHLExpressEuropack","FR_UPSStandard","FR_PostOfficeLetter","FR_PostOfficeLetterFollowed","FR_PostOfficeLetterRecommended","FR_ColiposteColissimo","FR_ColiposteColissimoRecommended","FR_UPSStandardAgainstRefund","FR_Autre","FR_Ecopli","FR_Colieco","FR_AuteModeDenvoiDeColis","FR_RemiseEnMainPropre","FR_StandardInternational","FR_ExpeditedInternational","FR_OtherInternational","FR_LaPosteInternationalPriorityCourier","FR_LaPosteInternationalEconomyCourier","FR_LaPosteColissimoInternational","FR_LaPosteColisEconomiqueInternational","FR_LaPosteColissimoEmballageInternational","FR_ChronopostClassicInternational","FR_ChronopostPremiumInternational","FR_UPSStandardInternational","FR_UPSExpressInternational","FR_DHLInternational","IN_Regular","IN_Express","IN_NationalCOD","IN_Courier","IN_LocalCOD","IN_StandardInternational","IN_ExpeditedInternational","IN_OtherInternational","IN_FlatRateCOD","IN_BuyerPicksUpAndPays","IT_RegularMail","IT_PriorityMail","IT_MailRegisteredLetter","IT_MailRegisteredLetterWithMark","IT_InsuredMail","IT_QuickMail","IT_RegularPackage","IT_QuickPackage1","IT_QuickPackage3","IT_ExpressCourier","IT_StandardInternational","IT_ExpeditedInternational","IT_OtherInternational","NL_StandardDelivery","NL_ParcelPost","NL_RegisteredMail","NL_Other","NL_TPGPostTNTInternational","NL_UPSInternational","NL_FedExInternational","NL_DHLInternational","NL_DPDGBRInternational","NL_GLSBusinessInternational","NL_StandardInternational","NL_ExpeditedInternational","NL_OtherInternational","TW_RegisteredMail","TW_UnregisteredMail","TW_COD","TW_DwellingMatchPost","TW_DwellingMatchCOD","TW_SelfPickup","TW_ParcelPost","TW_ExpressMail","TW_Other","TW_CPInternationalLetterPost","TW_CPInternationalParcelPost","TW_CPInternationalRegisteredLetterPost","TW_CPInternationalRegisteredParcelPost","TW_CPInternationalEMS","TW_CPInternationalOceanShippingParcel","TW_FedExInternationalPriority","TW_FedExInternationalEconomy","TW_UPSWorldwideExpedited","TW_UPSWorldwideExpress","TW_UPSWorldwideExpressPlus","TW_OtherInternational","UK_RoyalMailFirstClassStandard","UK_RoyalMailSecondClassStandard","UK_RoyalMailFirstClassRecorded","UK_RoyalMailSecondClassRecorded","UK_RoyalMailSpecialDelivery","UK_RoyalMailStandardParcel","UK_Parcelforce24","UK_Parcelforce48","UK_OtherCourier","UK_SellersStandardRate","UK_CollectInPerson","UK_SellersStandardInternationalRate","UK_RoyalMailAirmailInternational","UK_RoyalMailAirsureInternational","UK_RoyalMailSurfaceMailInternational","UK_RoyalMailInternationalSignedFor","UK_RoyalMailHMForcesMailInternational","UK_ParcelForceInternationalDatapost","UK_ParcelForceIreland24International","UK_ParcelForceEuro48International","UK_ParcelForceInternationalScheduled","UK_OtherCourierOrDeliveryInternational","UK_CollectInPersonInternational","IE_SellersStandardRate","IE_FirstClassLetterService","IE_SwiftPostNational","IE_RegisteredPost","IE_EMSSDSCourier","IE_EconomySDSCourier","IE_OtherCourier","IE_CollectionInPerson","IE_SellersStandardRateInternational","IE_InternationalEconomyService","IE_InternationalPriorityService","IE_SwiftPostExpressInternational","IE_SwiftPostInternational","IE_EMSSDSCourierInternational","IE_EconomySDSCourierInternational","IE_OtherCourierInternational","IE_CollectionInPersonInternational","PL_DomesticRegular","PL_DomesticSpecial","FreightShipping","FreightShippingInternational","USPSGround","ShippingMethodOvernight","CustomCode","USPSPriorityFlatRateEnvelope","USPSPriorityFlatRateBox","USPSGlobalPrioritySmallEnvelope","USPSGlobalPriorityLargeEnvelope","USPSExpressFlatRateEnvelope","UPSWorldWideExpressBox10kg","UPSWorldWideExpressBox25kg","UPSWorldWideExpressPlusBox10kg","UPSWorldWideExpressPlusBox25kg","HK_LocalPickUpOnly","HK_LocalCourier","HK_DomesticRegularShipping","HK_DomesticSpecialShipping","HK_InternationalRegularShipping","HK_InternationalSpecialShipping","SG_LocalPickUpOnly","SG_LocalCourier","SG_DomesticStandardMail","SG_DomesticNonStandardMail","SG_DomesticSpeedpostIslandwide","SG_InternationalStandardMail","SG_InternationalExpressMailService","SG_InternationalCourier","BENL_DePostZendingNONPRIOR","BENL_DePostZendingPRIOR","BENL_DePostZendingAangetekend","BENL_KilopostPakje","BENL_Taxipost","BENL_KialaAfhaalpunt","BENL_VasteKostenStandaardVerzending","BENL_VasteKostenVersneldeVerzending","BENL_VerzekerdeVerzending","BEFR_LaPosteEnvoiNONPRIOR","BEFR_LaPosteEnvoiPRIOR","BEFR_LaPosteEnvoiRecommande","BEFR_PaquetKilopost","BEFR_Taxipost","BEFR_PointRetraitKiala","BEFR_LivraisonStandardPrixforFaitaire","BEFR_LivraisonExpressPrixforFaitaire","BEFR_LivraisonSecurise","BENL_DePostZendingPRIORInternational","BENL_DePostZendingNONPRIORInternational","BENL_DePostZendingAangetekendInternational","BENL_KilopostPakjeInternational","BENL_TaxipostExpressverzending","BENL_VerzekerdeVerzendingInternational","BEFR_LaPosteenvoiePRIOR","BEFR_LaPosteenvoieNONPRIOR","BEFR_LaPosteenvoieRecommande","BEFR_PaquetKilopostInternationale","BEFR_ExpressTaxipost","BEFR_LivraisonStandardInternationalePrixforFaitaire","BEFR_LivraisonExpressInternationalePrixforFaitaire","BEFR_LivraisonSecuriseInternational","FR_Chronopost","UK_RoyalMailSpecialDeliveryNextDay","CA_PostLightPacketInternational","CA_PostLightPacketUSA","PL_DHLInternational","PL_InternationalRegular","PL_InternationalSpecial","PL_UPSInternational","CAFR_StandardDelivery","CAFR_ExpeditedDelivery","CAFR_PostLettermail","CAFR_PostRegularParcel","CAFR_PostExpeditedParcel","CAFR_PostXpresspost","CAFR_PostPriorityCourier","CAFR_StandardInternational","CAFR_ExpeditedInternational","CAFR_OtherInternational","CAFR_PostExpeditedParcelUSA","CAFR_PostSmallPacketsUSA","CAFR_PostXpresspostUSA","CAFR_PostXpresspostInternational","CAFR_PostInternationalParcelSurface","CAFR_PostInternationalParcelAir","CAFR_SmallPacketsInternational","CAFR_PurolatorInternational","CAFR_PostSmallPacketsUSAGround","CAFR_PostSmallPacketsUSAAir","CAFR_SmallPacketsInternationalGround","CAFR_SmallPacketsInternationalAir","CAFR_PostUSALetterPost","CAFR_PostInternationalLetterPost","CAFR_UPSExpressCanada","CAFR_UPSExpressSaverCanada","CAFR_UPSExpeditedCanada","CAFR_UPSStandardCanada","CAFR_UPSExpressUnitedStates","CAFR_UPSExpeditedUnitedStates","CAFR_UPS3DaySelectUnitedStates","CAFR_UPSStandardUnitedStates","CAFR_UPSWorldWideExpress","CAFR_UPSWorldWideExpedited","UK_RoyalMailSpecialDelivery9am","USPSFirstClassMailInternational","USPSPriorityMailInternational","USPSExpressMailInternational"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Description:{name:"Description",type:"string",xmlRequired:false},ExpeditedService:{name:"ExpeditedService",type:"boolean",xmlRequired:false},InternationalService:{name:"InternationalService",type:"boolean",xmlRequired:false},ShippingService:{name:"ShippingService",type:"token",xmlRequired:false},ShippingServiceID:{name:"ShippingServiceID",type:"int",xmlRequired:false},ShippingTimeMax:{name:"ShippingTimeMax",type:"int",xmlRequired:false},ShippingTimeMin:{name:"ShippingTimeMin",type:"int",xmlRequired:false},ShippingServiceCode:{name:"ShippingServiceCode",type:"ShippingServiceCodeType",xmlRequired:false}},ID:"ShippingServiceDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ShippingInsuranceCost:{name:"ShippingInsuranceCost",type:"AmountType",xmlRequired:false},ShippingService:{name:"ShippingService",type:"token",xmlRequired:false},ShippingServiceCost:{name:"ShippingServiceCost",type:"AmountType",xmlRequired:false},ShippingServiceAdditionalCost:{name:"ShippingServiceAdditionalCost",type:"AmountType",xmlRequired:false},ShippingServicePriority:{name:"ShippingServicePriority",type:"int",xmlRequired:false},ExpeditedService:{name:"ExpeditedService",type:"boolean",xmlRequired:false},ShippingTimeMin:{name:"ShippingTimeMin",type:"int",xmlRequired:false},ShippingTimeMax:{name:"ShippingTimeMax",type:"int",xmlRequired:false},ShippingSurcharge:{name:"ShippingSurcharge",type:"AmountType",xmlRequired:false}},ID:"ShippingServiceOptionsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ShippingTermRequiredDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"ShippingTypeCodeType",valueMap:["Flat","Calculated","Freight","Free","NotSpecified","FlatDomesticCalculatedInternational","CalculatedDomesticFlatInternational","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"SiteCodeType",valueMap:["US","Canada","UK","Australia","Austria","Belgium_French","France","Germany","Italy","Belgium_Dutch","Netherlands","Spain","Switzerland","Taiwan","eBayMotors","HongKong","Singapore","India","China","Ireland","Malaysia","Philippines","Poland","Sweden","CustomCode","CanadaFrench"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ListingDuration:{name:"ListingDuration",type:"ListingDurationReferenceType",xmlRequired:false},ShippingTermsRequired:{name:"ShippingTermsRequired",type:"boolean",xmlRequired:false},BestOfferEnabled:{name:"BestOfferEnabled",type:"boolean",xmlRequired:false},DutchBINEnabled:{name:"DutchBINEnabled",type:"boolean",xmlRequired:false},UserConsentRequired:{name:"UserConsentRequired",type:"boolean",xmlRequired:false},HomePageFeaturedEnabled:{name:"HomePageFeaturedEnabled",type:"boolean",xmlRequired:false},ProPackEnabled:{name:"ProPackEnabled",type:"boolean",xmlRequired:false},BasicUpgradePackEnabled:{name:"BasicUpgradePackEnabled",type:"boolean",xmlRequired:false},ValuePackEnabled:{name:"ValuePackEnabled",type:"boolean",xmlRequired:false},ProPackPlusEnabled:{name:"ProPackPlusEnabled",type:"boolean",xmlRequired:false},AdFormatEnabled:{name:"AdFormatEnabled",type:"AdFormatEnabledCodeType",xmlRequired:false},DigitalDeliveryEnabled:{name:"DigitalDeliveryEnabled",type:"DigitalDeliveryEnabledCodeType",xmlRequired:false},BestOfferCounterEnabled:{name:"BestOfferCounterEnabled",type:"boolean",xmlRequired:false},BestOfferAutoDeclineEnabled:{name:"BestOfferAutoDeclineEnabled",type:"boolean",xmlRequired:false},LocalMarketSpecialitySubscription:{name:"LocalMarketSpecialitySubscription",type:"boolean",xmlRequired:false},LocalMarketRegularSubscription:{name:"LocalMarketRegularSubscription",type:"boolean",xmlRequired:false},LocalMarketPremiumSubscription:{name:"LocalMarketPremiumSubscription",type:"boolean",xmlRequired:false},LocalMarketNonSubscription:{name:"LocalMarketNonSubscription",type:"boolean",xmlRequired:false},ExpressEnabled:{name:"ExpressEnabled",type:"boolean",xmlRequired:false},ExpressPicturesRequired:{name:"ExpressPicturesRequired",type:"boolean",xmlRequired:false},ExpressConditionRequired:{name:"ExpressConditionRequired",type:"boolean",xmlRequired:false},MinimumReservePrice:{name:"MinimumReservePrice",type:"double",xmlRequired:false},SellerContactDetailsEnabled:{name:"SellerContactDetailsEnabled",type:"boolean",xmlRequired:false},TransactionConfirmationRequestEnabled:{name:"TransactionConfirmationRequestEnabled",type:"boolean",xmlRequired:false},StoreInventoryEnabled:{name:"StoreInventoryEnabled",type:"boolean",xmlRequired:false},SkypeMeTransactionalEnabled:{name:"SkypeMeTransactionalEnabled",type:"boolean",xmlRequired:false},SkypeMeNonTransactionalEnabled:{name:"SkypeMeNonTransactionalEnabled",type:"boolean",xmlRequired:false},LocalListingDistancesRegular:{name:"LocalListingDistancesRegular",type:"string",xmlRequired:false},LocalListingDistancesSpecialty:{name:"LocalListingDistancesSpecialty",type:"string",xmlRequired:false},LocalListingDistancesNonSubscription:{name:"LocalListingDistancesNonSubscription",type:"string",xmlRequired:false},ClassifiedAdPaymentMethodEnabled:{name:"ClassifiedAdPaymentMethodEnabled",type:"ClassifiedAdPaymentMethodEnabledCodeType",xmlRequired:false},ClassifiedAdShippingMethodEnabled:{name:"ClassifiedAdShippingMethodEnabled",type:"boolean",xmlRequired:false},ClassifiedAdBestOfferEnabled:{name:"ClassifiedAdBestOfferEnabled",type:"ClassifiedAdBestOfferEnabledCodeType",xmlRequired:false},ClassifiedAdCounterOfferEnabled:{name:"ClassifiedAdCounterOfferEnabled",type:"boolean",xmlRequired:false},ClassifiedAdAutoDeclineEnabled:{name:"ClassifiedAdAutoDeclineEnabled",type:"boolean",xmlRequired:false},ClassifiedAdContactByPhoneEnabled:{name:"ClassifiedAdContactByPhoneEnabled",type:"boolean",xmlRequired:false},ClassifiedAdContactByEmailEnabled:{name:"ClassifiedAdContactByEmailEnabled",type:"boolean",xmlRequired:false},SafePaymentRequired:{name:"SafePaymentRequired",type:"boolean",xmlRequired:false},ClassifiedAdPayPerLeadEnabled:{name:"ClassifiedAdPayPerLeadEnabled",type:"boolean",xmlRequired:false}},ID:"SiteDefaultsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Site:{name:"Site",type:"SiteCodeType",xmlRequired:false},SiteID:{name:"SiteID",type:"int",xmlRequired:false}},ID:"SiteDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SiteIDFilterCodeType",valueMap:["ListedInCurrencyImplied","LocatedInCountryImplied","AvailableInCountryImplied","SiteImplied","BelgiumListing","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SiteID:{name:"SiteID",type:"SiteIDFilterCodeType",xmlRequired:false}},ID:"SiteLocationType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CharacteristicsSet:{name:"CharacteristicsSet",type:"CharacteristicsSetType",xmlRequired:false},ExcludeCategoryID:{name:"ExcludeCategoryID",type:"string",xmlRequired:false}},ID:"SiteWideCharacteristicsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SkypeContactOptionCodeType",valueMap:["Chat","Voice","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"SkypeMeNonTransactionalEnabledDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"SkypeMeTransactionalEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SortOrderCodeType",valueMap:["Ascending","Descending","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{MatchingItemCount:{name:"MatchingItemCount",type:"int",xmlRequired:false},Text:{name:"Text",type:"string",xmlRequired:false}},ID:"SpellingSuggestionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreCategoryUpdateActionCodeType",valueMap:["Add","Delete","Move","Rename","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{ColorScheme:{name:"ColorScheme",type:"StoreColorSchemeType",xmlRequired:false}},ID:"StoreColorSchemeArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ColorSchemeID:{name:"ColorSchemeID",type:"int",xmlRequired:false},Name:{name:"Name",type:"string",xmlRequired:false},Color:{name:"Color",type:"StoreColorType",xmlRequired:false},Font:{name:"Font",type:"StoreFontType",xmlRequired:false}},ID:"StoreColorSchemeType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Primary:{name:"Primary",type:"string",xmlRequired:false},Secondary:{name:"Secondary",type:"string",xmlRequired:false},Accent:{name:"Accent",type:"string",xmlRequired:false}},ID:"StoreColorType"}),isc.XSComplexType.create({mustQualify:true,fields:{CustomCategory:{name:"CustomCategory",type:"StoreCustomCategoryType",xmlRequired:false}},ID:"StoreCustomCategoryArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{CategoryID:{name:"CategoryID",type:"long",xmlRequired:true},Name:{name:"Name",type:"string",xmlRequired:false},Order:{name:"Order",type:"int",xmlRequired:true},ChildCategory:{name:"ChildCategory",type:"StoreCustomCategoryType",xmlRequired:false}},ID:"StoreCustomCategoryType"}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreCustomHeaderLayoutCodeType",valueMap:["NoHeader","CustomHeaderShown","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreCustomListingHeaderDisplayCodeType",valueMap:["None","Full","FullAndLeftNavigationBar","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreCustomListingHeaderLinkCodeType",valueMap:["None","AboutMePage","CustomPage","CustomCategory","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{LinkID:{name:"LinkID",type:"int",xmlRequired:true},Order:{name:"Order",type:"int",xmlRequired:true},LinkType:{name:"LinkType",type:"StoreCustomListingHeaderLinkCodeType",xmlRequired:false}},ID:"StoreCustomListingHeaderLinkType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{DisplayType:{name:"DisplayType",type:"StoreCustomListingHeaderDisplayCodeType",xmlRequired:false},Logo:{name:"Logo",type:"boolean",xmlRequired:false},SearchBox:{name:"SearchBox",type:"boolean",xmlRequired:false},LinkToInclude:{name:"LinkToInclude",type:"StoreCustomListingHeaderLinkType",xmlRequired:false},AddToFavoriteStores:{name:"AddToFavoriteStores",type:"boolean",xmlRequired:false},SignUpForStoreNewsletter:{name:"SignUpForStoreNewsletter",type:"boolean",xmlRequired:false}},ID:"StoreCustomListingHeaderType"}),isc.XSComplexType.create({mustQualify:true,fields:{CustomPage:{name:"CustomPage",type:"StoreCustomPageType",xmlRequired:false}},ID:"StoreCustomPageArrayType"}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreCustomPageStatusCodeType",valueMap:["Active","Delete","Inactive","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Name:{name:"Name",type:"string",xmlRequired:false},PageID:{name:"PageID",type:"long",xmlRequired:false},URLPath:{name:"URLPath",type:"string",xmlRequired:false},URL:{name:"URL",type:"anyURI",xmlRequired:false},Status:{name:"Status",type:"StoreCustomPageStatusCodeType",xmlRequired:false},Content:{name:"Content",type:"string",xmlRequired:false},LeftNav:{name:"LeftNav",type:"boolean",xmlRequired:false},PreviewEnabled:{name:"PreviewEnabled",type:"boolean",xmlRequired:false},Order:{name:"Order",type:"int",xmlRequired:false}},ID:"StoreCustomPageType"}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreFontFaceCodeType",valueMap:["Arial","Courier","Times","Verdana","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreFontSizeCodeType",valueMap:["XXS","XS","S","M","L","XL","XXL","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{NameFace:{name:"NameFace",type:"StoreFontFaceCodeType",xmlRequired:false},NameSize:{name:"NameSize",type:"StoreFontSizeCodeType",xmlRequired:false},NameColor:{name:"NameColor",type:"string",xmlRequired:false},TitleFace:{name:"TitleFace",type:"StoreFontFaceCodeType",xmlRequired:false},TitleSize:{name:"TitleSize",type:"StoreFontSizeCodeType",xmlRequired:false},TitleColor:{name:"TitleColor",type:"string",xmlRequired:false},DescFace:{name:"DescFace",type:"StoreFontFaceCodeType",xmlRequired:false},DescSize:{name:"DescSize",type:"StoreFontSizeCodeType",xmlRequired:false},DescColor:{name:"DescColor",type:"string",xmlRequired:false}},ID:"StoreFontType"}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreHeaderStyleCodeType",valueMap:["Full","Minimized","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"StoreInventoryEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreItemListLayoutCodeType",valueMap:["ListView","GalleryView","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreItemListSortOrderCodeType",valueMap:["EndingFirst","NewlyListed","LowestPriced","HighestPriced","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{Logo:{name:"Logo",type:"StoreLogoType",xmlRequired:false}},ID:"StoreLogoArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{LogoID:{name:"LogoID",type:"int",xmlRequired:false},Name:{name:"Name",type:"string",xmlRequired:false},URL:{name:"URL",type:"anyURI",xmlRequired:false}},ID:"StoreLogoType"}),isc.XSComplexType.create({mustQualify:true,fields:{VacationPreferences:{name:"VacationPreferences",type:"StoreVacationPreferencesType",xmlRequired:false}},ID:"StorePreferencesType"}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreSearchCodeType",valueMap:["AllItemsInTheStore","AuctionItemsInTheStore","BuyItNowItemsInTheStore","BuyItNowItemsInAllStores","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{Subscription:{name:"Subscription",type:"StoreSubscriptionType",xmlRequired:false}},ID:"StoreSubscriptionArrayType"}),isc.SimpleType.create({inheritsFrom:"token",name:"StoreSubscriptionLevelCodeType",valueMap:["Close","Basic","Featured","Anchor","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Level:{name:"Level",type:"StoreSubscriptionLevelCodeType",xmlRequired:false},Fee:{name:"Fee",type:"AmountType",xmlRequired:false}},ID:"StoreSubscriptionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Theme:{name:"Theme",type:"StoreThemeType",xmlRequired:false},GenericColorSchemeArray:{name:"GenericColorSchemeArray",type:"StoreColorSchemeArrayType",xmlRequired:false}},ID:"StoreThemeArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ThemeID:{name:"ThemeID",type:"int",xmlRequired:false},Name:{name:"Name",type:"string",xmlRequired:false},ColorScheme:{name:"ColorScheme",type:"StoreColorSchemeType",xmlRequired:false}},ID:"StoreThemeType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Name:{name:"Name",type:"string",xmlRequired:false},URLPath:{name:"URLPath",type:"string",xmlRequired:false},URL:{name:"URL",type:"anyURI",xmlRequired:false},SubscriptionLevel:{name:"SubscriptionLevel",type:"StoreSubscriptionLevelCodeType",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false},Logo:{name:"Logo",type:"StoreLogoType",xmlRequired:false},Theme:{name:"Theme",type:"StoreThemeType",xmlRequired:false},HeaderStyle:{name:"HeaderStyle",type:"StoreHeaderStyleCodeType",xmlRequired:false},HomePage:{name:"HomePage",type:"long",xmlRequired:false},ItemListLayout:{name:"ItemListLayout",type:"StoreItemListLayoutCodeType",xmlRequired:false},ItemListSortOrder:{name:"ItemListSortOrder",type:"StoreItemListSortOrderCodeType",xmlRequired:false},CustomHeaderLayout:{name:"CustomHeaderLayout",type:"StoreCustomHeaderLayoutCodeType",xmlRequired:false},CustomHeader:{name:"CustomHeader",type:"string",xmlRequired:false},ExportListings:{name:"ExportListings",type:"boolean",xmlRequired:false},CustomCategories:{name:"CustomCategories",type:"StoreCustomCategoryArrayType",xmlRequired:false},CustomListingHeader:{name:"CustomListingHeader",type:"StoreCustomListingHeaderType",xmlRequired:false},MerchDisplay:{name:"MerchDisplay",type:"MerchDisplayCodeType",xmlRequired:false},LastOpenedTime:{name:"LastOpenedTime",type:"dateTime",xmlRequired:false}},ID:"StoreType"}),isc.XSComplexType.create({mustQualify:true,fields:{OnVacation:{name:"OnVacation",type:"boolean",xmlRequired:false},ReturnDate:{name:"ReturnDate",type:"dateTime",xmlRequired:false},HideFixedPriceStoreItems:{name:"HideFixedPriceStoreItems",type:"boolean",xmlRequired:false},MessageItem:{name:"MessageItem",type:"boolean",xmlRequired:false},MessageStore:{name:"MessageStore",type:"boolean",xmlRequired:false},DisplayMessageStoreCustomText:{name:"DisplayMessageStoreCustomText",type:"boolean",xmlRequired:false},MessageStoreCustomText:{name:"MessageStoreCustomText",type:"string",xmlRequired:false}},ID:"StoreVacationPreferencesType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{StoreCategoryID:{name:"StoreCategoryID",type:"long",xmlRequired:true},StoreCategory2ID:{name:"StoreCategory2ID",type:"long",xmlRequired:true},StoreURL:{name:"StoreURL",type:"anyURI",xmlRequired:false},StoreName:{name:"StoreName",type:"string",xmlRequired:false}},ID:"StorefrontType"}),isc.SimpleType.create({inheritsFrom:"token",name:"StringMatchCodeType",valueMap:["CustomCode","StartsWith","Contains"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{EIASToken:{name:"EIASToken",type:"string",xmlRequired:false},SiteID:{name:"SiteID",type:"SiteCodeType",xmlRequired:false},Active:{name:"Active",type:"boolean",xmlRequired:false}},ID:"SubscriptionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{SuggestedCategory:{name:"SuggestedCategory",type:"SuggestedCategoryType",xmlRequired:false}},ID:"SuggestedCategoryArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Category:{name:"Category",type:"CategoryType",xmlRequired:false},PercentItemFound:{name:"PercentItemFound",type:"int",xmlRequired:true}},ID:"SuggestedCategoryType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{EventType:{name:"EventType",type:"NotificationEventTypeCodeType",xmlRequired:false},SummaryPeriod:{name:"SummaryPeriod",type:"SummaryWindowPeriodCodeType",xmlRequired:false},Frequency:{name:"Frequency",type:"SummaryFrequencyCodeType",xmlRequired:false}},ID:"SummaryEventScheduleType"}),isc.SimpleType.create({inheritsFrom:"token",name:"SummaryFrequencyCodeType",valueMap:["EverySunday","EveryMonday","EveryTuesday","EveryWednesday","EveryThursday","EveryFriday","EverySaturday","MonthlyOn1st","MonthlyOn2nd","MonthlyOn3rd","MonthlyOn4th","MonthlyOn5th","MonthlyOn6th","MonthlyOn7th","MonthlyOn8th","MonthlyOn9th","MonthlyOn10th","MonthlyOn11th","MonthlyOn12th","MonthlyOn13th","MonthlyOn14th","MonthlyOn15th","MonthlyOn16th","MonthlyOn17th","MonthlyOn18th","MonthlyOn19th","MonthlyOn20th","MonthlyOn21st","MonthlyOn22nd","MonthlyOn23rd","MonthlyOn24th","MonthlyOn25th","MonthlyOn26th","MonthlyOn27th","MonthlyOn28th","MonthlyOn29th","MonthlyOn30th","MonthlyOn31st","Every31Days","Every60Days"]}),isc.SimpleType.create({inheritsFrom:"token",name:"SummaryWindowPeriodCodeType",valueMap:["Last24Hours","Last7Days","Last31Days","CurrentWeek","LastWeek","CurrentMonth","LastMonth","Last60Days"]}),isc.XSComplexType.create({mustQualify:true,fields:{EventType:{name:"EventType",type:"NotificationEventTypeCodeType",xmlRequired:false}},ID:"SupportedEventTypesArrayType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"TCREnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"TaskStatusCodeType",valueMap:["Pending","InProgress","Complete","Failed","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{JurisdictionID:{name:"JurisdictionID",type:"string",xmlRequired:false},SalesTaxPercent:{name:"SalesTaxPercent",type:"float",xmlRequired:false},ShippingIncludedInTax:{name:"ShippingIncludedInTax",type:"boolean",xmlRequired:false},JurisdictionName:{name:"JurisdictionName",type:"string",xmlRequired:false}},ID:"TaxJurisdictionType"}),isc.XSComplexType.create({mustQualify:true,fields:{TaxJurisdiction:{name:"TaxJurisdiction",type:"TaxJurisdictionType",xmlRequired:false}},ID:"TaxTableType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{GroupID:{name:"GroupID",type:"int",xmlRequired:false},GroupName:{name:"GroupName",type:"string",xmlRequired:false},ThemeID:{name:"ThemeID",type:"int",xmlRequired:false},ThemeTotal:{name:"ThemeTotal",type:"int",xmlRequired:false}},ID:"ThemeGroupType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{EventType:{name:"EventType",type:"TicketEventTypeCodeType",xmlRequired:false},EventDate:{name:"EventDate",type:"DateType",xmlRequired:false},StateOrProvince:{name:"StateOrProvince",type:"string",xmlRequired:false},CityName:{name:"CityName",type:"string",xmlRequired:false},TicketQuantity:{name:"TicketQuantity",type:"int",xmlRequired:false}},ID:"TicketDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"TicketEventTypeCodeType",valueMap:["Any","DE_ComedyAndKabarett","DE_FreizeitAndEvents","DE_KonzerteAndFestivals","DE_KulturAndKlassik","DE_MusicalsAndShows","DE_Sportveranstaltungen","DE_Sonstige","UK_AmusementParks","UK_Comedy","UK_ConcertsAndGigs","UK_ConferencesAndSeminars","UK_ExhibitionsAndShows","UK_Experiences","UK_SportingEvents","UK_TheatreCinemaAndCircus","UK_Other","US_Concerts","US_Movies","US_SportingEvents","US_Theater","US_Other","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{TimeZoneID:{name:"TimeZoneID",type:"string",xmlRequired:false},StandardLabel:{name:"StandardLabel",type:"string",xmlRequired:false},StandardOffset:{name:"StandardOffset",type:"string",xmlRequired:false},DaylightSavingsLabel:{name:"DaylightSavingsLabel",type:"string",xmlRequired:false},DaylightSavingsOffset:{name:"DaylightSavingsOffset",type:"string",xmlRequired:false},DaylightSavingsInEffect:{name:"DaylightSavingsInEffect",type:"boolean",xmlRequired:false}},ID:"TimeZoneDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"TokenReturnMethodCodeType",valueMap:["Redirect","FetchToken","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"TradingRoleCodeType",valueMap:["Buyer","Seller","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{Transaction:{name:"Transaction",type:"TransactionType",xmlRequired:false}},ID:"TransactionArrayType"}),isc.SimpleType.create({inheritsFrom:"token",name:"TransactionPlatformType",valueMap:["eBay","Express"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{eBayPaymentStatus:{name:"eBayPaymentStatus",type:"PaymentStatusCodeType",xmlRequired:false},CheckoutStatus:{name:"CheckoutStatus",type:"CheckoutStatusCodeType",xmlRequired:false},LastTimeModified:{name:"LastTimeModified",type:"dateTime",xmlRequired:false},PaymentMethodUsed:{name:"PaymentMethodUsed",type:"BuyerPaymentMethodCodeType",xmlRequired:false},CompleteStatus:{name:"CompleteStatus",type:"CompleteStatusCodeType",xmlRequired:false},BuyerSelectedShipping:{name:"BuyerSelectedShipping",type:"boolean",xmlRequired:false}},ID:"TransactionStatusType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AmountPaid:{name:"AmountPaid",type:"AmountType",xmlRequired:false},AdjustmentAmount:{name:"AdjustmentAmount",type:"AmountType",xmlRequired:false},ConvertedAdjustmentAmount:{name:"ConvertedAdjustmentAmount",type:"AmountType",xmlRequired:false},Buyer:{name:"Buyer",type:"UserType",xmlRequired:false},ShippingDetails:{name:"ShippingDetails",type:"ShippingDetailsType",xmlRequired:false},ConvertedAmountPaid:{name:"ConvertedAmountPaid",type:"AmountType",xmlRequired:false},ConvertedTransactionPrice:{name:"ConvertedTransactionPrice",type:"AmountType",xmlRequired:false},CreatedDate:{name:"CreatedDate",type:"dateTime",xmlRequired:false},DepositType:{name:"DepositType",type:"DepositTypeCodeType",xmlRequired:false},Item:{name:"Item",type:"ItemType",xmlRequired:false},QuantityPurchased:{name:"QuantityPurchased",type:"int",xmlRequired:false},Status:{name:"Status",type:"TransactionStatusType",xmlRequired:false},TransactionID:{name:"TransactionID",type:"string",xmlRequired:false},TransactionPrice:{name:"TransactionPrice",type:"AmountType",xmlRequired:false},BestOfferSale:{name:"BestOfferSale",type:"boolean",xmlRequired:false},VATPercent:{name:"VATPercent",type:"decimal",xmlRequired:false},ExternalTransaction:{name:"ExternalTransaction",type:"ExternalTransactionType",xmlRequired:false},SellingManagerProductDetails:{name:"SellingManagerProductDetails",type:"SellingManagerProductDetailsType",xmlRequired:false},ShippingServiceSelected:{name:"ShippingServiceSelected",type:"ShippingServiceOptionsType",xmlRequired:false},BuyerMessage:{name:"BuyerMessage",type:"string",xmlRequired:false},DutchAuctionBid:{name:"DutchAuctionBid",type:"AmountType",xmlRequired:false},BuyerPaidStatus:{name:"BuyerPaidStatus",type:"PaidStatusCodeType",xmlRequired:false},SellerPaidStatus:{name:"SellerPaidStatus",type:"PaidStatusCodeType",xmlRequired:false},PaidTime:{name:"PaidTime",type:"dateTime",xmlRequired:false},ShippedTime:{name:"ShippedTime",type:"dateTime",xmlRequired:false},TotalPrice:{name:"TotalPrice",type:"AmountType",xmlRequired:false},FeedbackLeft:{name:"FeedbackLeft",type:"FeedbackInfoType",xmlRequired:false},FeedbackReceived:{name:"FeedbackReceived",type:"FeedbackInfoType",xmlRequired:false},ContainingOrder:{name:"ContainingOrder",type:"OrderType",xmlRequired:false},FinalValueFee:{name:"FinalValueFee",type:"AmountType",xmlRequired:false},TransactionPlatform:{name:"TransactionPlatform",type:"TransactionPlatformType",xmlRequired:false},ListingCheckoutRedirectPreference:{name:"ListingCheckoutRedirectPreference",type:"ListingCheckoutRedirectPreferenceType",xmlRequired:false},RefundArray:{name:"RefundArray",type:"RefundArrayType",xmlRequired:false}},ID:"TransactionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"UPSRateOptionCodeType",valueMap:["UPSDailyRates","UPSOnDemandRates","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{URLType:{name:"URLType",type:"URLTypeCodeType",xmlRequired:false},URL:{name:"URL",type:"anyURI",xmlRequired:false}},ID:"URLDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"URLTypeCodeType",valueMap:["ViewItemURL","ViewUserURL","MyeBayURL","MyeBayBiddingURL","MyeBayNotWonURL","MyeBayWonURL","MyeBayWatchingURL","eBayStoreURL","SmallLogoURL","MediumLogoURL","LargeLogoURL","CustomCode"]}),isc.SimpleType.create({inheritsFrom:"token",name:"UnitCodeType",valueMap:["kg","lbs","oz","cm","inches","ft","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"UserConsentRequiredDefinitionType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{UserID:{name:"UserID",type:"UserIDType",xmlRequired:false}},ID:"UserIDArrayType"}),isc.SimpleType.create({inheritsFrom:"string",name:"UserIDType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ExcludeSellers:{name:"ExcludeSellers",type:"UserIDType",xmlRequired:false},IncludeSellers:{name:"IncludeSellers",type:"UserIDType",xmlRequired:false}},ID:"UserIdFilterType"}),isc.SimpleType.create({inheritsFrom:"token",name:"UserStatusCodeType",valueMap:["Unknown","Suspended","Confirmed","Unconfirmed","Ghost","InMaintenance","Deleted","CreditCardVerify","AccountOnHold","Merged","RegistrationCodeMailOut","TermPending","UnconfirmedHalfOptIn","CreditCardVerifyHalfOptIn","UnconfirmedPassport","CreditCardVerifyPassport","UnconfirmedExpress","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{AboutMePage:{name:"AboutMePage",type:"boolean",xmlRequired:false},EIASToken:{name:"EIASToken",type:"string",xmlRequired:false},RESTToken:{name:"RESTToken",type:"string",xmlRequired:false},Email:{name:"Email",type:"string",xmlRequired:false},FeedbackScore:{name:"FeedbackScore",type:"int",xmlRequired:false},UniqueNegativeFeedbackCount:{name:"UniqueNegativeFeedbackCount",type:"int",xmlRequired:false},UniquePositiveFeedbackCount:{name:"UniquePositiveFeedbackCount",type:"int",xmlRequired:false},PositiveFeedbackPercent:{name:"PositiveFeedbackPercent",type:"float",xmlRequired:false},FeedbackPrivate:{name:"FeedbackPrivate",type:"boolean",xmlRequired:false},FeedbackRatingStar:{name:"FeedbackRatingStar",type:"FeedbackRatingStarCodeType",xmlRequired:false},IDVerified:{name:"IDVerified",type:"boolean",xmlRequired:false},eBayGoodStanding:{name:"eBayGoodStanding",type:"boolean",xmlRequired:false},NewUser:{name:"NewUser",type:"boolean",xmlRequired:false},RegistrationAddress:{name:"RegistrationAddress",type:"AddressType",xmlRequired:false},RegistrationDate:{name:"RegistrationDate",type:"dateTime",xmlRequired:false},Site:{name:"Site",type:"SiteCodeType",xmlRequired:false},Status:{name:"Status",type:"UserStatusCodeType",xmlRequired:false},UserID:{name:"UserID",type:"UserIDType",xmlRequired:false},UserIDChanged:{name:"UserIDChanged",type:"boolean",xmlRequired:false},UserIDLastChanged:{name:"UserIDLastChanged",type:"dateTime",xmlRequired:false},VATStatus:{name:"VATStatus",type:"VATStatusCodeType",xmlRequired:false},BuyerInfo:{name:"BuyerInfo",type:"BuyerType",xmlRequired:false},SellerInfo:{name:"SellerInfo",type:"SellerType",xmlRequired:false},CharityAffiliations:{name:"CharityAffiliations",type:"CharityAffiliationsType",xmlRequired:false},CharitySeller:{name:"CharitySeller",type:"CharitySellerType",xmlRequired:false},PayPalAccountLevel:{name:"PayPalAccountLevel",type:"PayPalAccountLevelCodeType",xmlRequired:false},PayPalAccountType:{name:"PayPalAccountType",type:"PayPalAccountTypeCodeType",xmlRequired:false},PayPalAccountStatus:{name:"PayPalAccountStatus",type:"PayPalAccountStatusCodeType",xmlRequired:false},UserSubscription:{name:"UserSubscription",type:"EBaySubscriptionTypeCodeType",xmlRequired:false},SiteVerified:{name:"SiteVerified",type:"boolean",xmlRequired:false},SkypeID:{name:"SkypeID",type:"string",xmlRequired:false},eBayWikiReadOnly:{name:"eBayWikiReadOnly",type:"boolean",xmlRequired:false},TUVLevel:{name:"TUVLevel",type:"int",xmlRequired:false},VATID:{name:"VATID",type:"string",xmlRequired:false},MotorsDealer:{name:"MotorsDealer",type:"boolean",xmlRequired:false},SellerPaymentMethod:{name:"SellerPaymentMethod",type:"SellerPaymentMethodCodeType",xmlRequired:false},BiddingSummary:{name:"BiddingSummary",type:"BiddingSummaryType",xmlRequired:false},UserAnonymized:{name:"UserAnonymized",type:"boolean",xmlRequired:false}},ID:"UserType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{BusinessSeller:{name:"BusinessSeller",type:"boolean",xmlRequired:false},RestrictedToBusiness:{name:"RestrictedToBusiness",type:"boolean",xmlRequired:false},VATPercent:{name:"VATPercent",type:"float",xmlRequired:false}},ID:"VATDetailsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"VATStatusCodeType",valueMap:["NoVATTax","VATTax","VATExempt","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ValueLiteral:{name:"ValueLiteral",type:"string",xmlRequired:false},SuggestedValueLiteral:{name:"SuggestedValueLiteral",type:"string",xmlRequired:false},ValueID:{name:"ValueID",type:"int",xmlRequired:false}},ID:"ValType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{},ID:"ValuePackEnabledDefinitionType"}),isc.SimpleType.create({inheritsFrom:"token",name:"VeROItemStatusCodeType",valueMap:["Received","Submitted","Removed","SubmissionFailed","ClarificationRequired","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{VeROSiteDetail:{name:"VeROSiteDetail",type:"VeROSiteDetailType",xmlRequired:false}},ID:"VeROReasonCodeDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},VeROReasonCodeID:{name:"VeROReasonCodeID",type:"long",xmlRequired:false},MessageToSeller:{name:"MessageToSeller",type:"string",xmlRequired:false},CopyEmailToRightsOwner:{name:"CopyEmailToRightsOwner",type:"boolean",xmlRequired:false}},ID:"VeROReportItemType"}),isc.XSComplexType.create({mustQualify:true,fields:{ReportItem:{name:"ReportItem",type:"VeROReportItemType",xmlRequired:false}},ID:"VeROReportItemsType"}),isc.SimpleType.create({inheritsFrom:"token",name:"VeROReportPacketStatusCodeType",valueMap:["Received","InProcess","Processed","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,fields:{ReportedItem:{name:"ReportedItem",type:"VeROReportedItemType",xmlRequired:false}},ID:"VeROReportedItemDetailsType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{ItemID:{name:"ItemID",type:"ItemIDType",xmlRequired:false},ItemStatus:{name:"ItemStatus",type:"VeROItemStatusCodeType",xmlRequired:false},ItemReasonForFailure:{name:"ItemReasonForFailure",type:"string",xmlRequired:false}},ID:"VeROReportedItemType"}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{Site:{name:"Site",type:"SiteCodeType",xmlRequired:false},ReasonCodeDetail:{name:"ReasonCodeDetail",type:"ReasonCodeDetailType",xmlRequired:false}},ID:"VeROSiteDetailType"}),isc.XSComplexType.create({mustQualify:true,fields:{VerifiedUser:{name:"VerifiedUser",type:"boolean",xmlRequired:false},MinimumFeedbackScore:{name:"MinimumFeedbackScore",type:"int",xmlRequired:false}},ID:"VerifiedUserRequirementsType"}),isc.XSComplexType.create({mustQualify:true,fields:{WantItNowPost:{name:"WantItNowPost",type:"WantItNowPostType",xmlRequired:false}},ID:"WantItNowPostArrayType"}),isc.XSComplexType.create({mustQualify:true,fields:{CategoryID:{name:"CategoryID",type:"string",xmlRequired:false},Description:{name:"Description",type:"string",xmlRequired:false},PostID:{name:"PostID",type:"ItemIDType",xmlRequired:false},Site:{name:"Site",type:"SiteCodeType",xmlRequired:false},StartTime:{name:"StartTime",type:"dateTime",xmlRequired:false},ResponseCount:{name:"ResponseCount",type:"int",xmlRequired:false},Title:{name:"Title",type:"string",xmlRequired:false}},ID:"WantItNowPostType"}),isc.SimpleType.create({inheritsFrom:"token",name:"WirelessCarrierIDCodeType",valueMap:["Cingular","TMobile","Sprint","Nextel","Verizon","CincinnatiBell","Dobson","Alltel","Leap","USCellular","Movistar","Amena","Vodafone","ATT","CustomCode"]}),isc.XSComplexType.create({mustQualify:true,xsdAnyElement:true,fields:{FileName:{name:"FileName",type:"string",xmlRequired:false},FileVersion:{name:"FileVersion",type:"string",xmlRequired:false},FileContent:{name:"FileContent",type:"string",xmlRequired:false}},ID:"XSLFileType"})]})
+isc.WebService.create({dataURL:"https://api.ebay.com/wsapi",serviceNamespace:"urn:ebay:apis:eBLBaseComponents",soapStyle:"document",operations:[{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddDisputeRequest",outputMessage:"AddDisputeResponse",name:"AddDispute",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddDisputeResponseRequest",outputMessage:"AddDisputeResponseResponse",name:"AddDisputeResponse",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddItemRequest",outputMessage:"AddItemResponse",name:"AddItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddLiveAuctionItemRequest",outputMessage:"AddLiveAuctionItemResponse",name:"AddLiveAuctionItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddMemberMessageAAQToPartnerRequest",outputMessage:"AddMemberMessageAAQToPartnerResponse",name:"AddMemberMessageAAQToPartner",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddMemberMessageRTQRequest",outputMessage:"AddMemberMessageRTQResponse",name:"AddMemberMessageRTQ",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddMemberMessagesAAQToBidderRequest",outputMessage:"AddMemberMessagesAAQToBidderResponse",name:"AddMemberMessagesAAQToBidder",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddOrderRequest",outputMessage:"AddOrderResponse",name:"AddOrder",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddSecondChanceItemRequest",outputMessage:"AddSecondChanceItemResponse",name:"AddSecondChanceItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddToItemDescriptionRequest",outputMessage:"AddToItemDescriptionResponse",name:"AddToItemDescription",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddToWatchListRequest",outputMessage:"AddToWatchListResponse",name:"AddToWatchList",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"AddTransactionConfirmationItemRequest",outputMessage:"AddTransactionConfirmationItemResponse",name:"AddTransactionConfirmationItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"ApproveLiveAuctionBiddersRequest",outputMessage:"ApproveLiveAuctionBiddersResponse",name:"ApproveLiveAuctionBidders",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"CompleteSaleRequest",outputMessage:"CompleteSaleResponse",name:"CompleteSale",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"DeleteMyMessagesRequest",outputMessage:"DeleteMyMessagesResponse",name:"DeleteMyMessages",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"EndItemRequest",outputMessage:"EndItemResponse",name:"EndItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"FetchTokenRequest",outputMessage:"FetchTokenResponse",name:"FetchToken",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetAccountRequest",outputMessage:"GetAccountResponse",name:"GetAccount",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetAdFormatLeadsRequest",outputMessage:"GetAdFormatLeadsResponse",name:"GetAdFormatLeads",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetAllBiddersRequest",outputMessage:"GetAllBiddersResponse",name:"GetAllBidders",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetApiAccessRulesRequest",outputMessage:"GetApiAccessRulesResponse",name:"GetApiAccessRules",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetAttributesCSRequest",outputMessage:"GetAttributesCSResponse",name:"GetAttributesCS",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetAttributesXSLRequest",outputMessage:"GetAttributesXSLResponse",name:"GetAttributesXSL",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetBestOffersRequest",outputMessage:"GetBestOffersResponse",name:"GetBestOffers",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetBidderListRequest",outputMessage:"GetBidderListResponse",name:"GetBidderList",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetCartRequest",outputMessage:"GetCartResponse",name:"GetCart",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetCategoriesRequest",outputMessage:"GetCategoriesResponse",name:"GetCategories",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetCategory2CSRequest",outputMessage:"GetCategory2CSResponse",name:"GetCategory2CS",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetCategory2FinanceOfferRequest",outputMessage:"GetCategory2FinanceOfferResponse",name:"GetCategory2FinanceOffer",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetCategoryFeaturesRequest",outputMessage:"GetCategoryFeaturesResponse",name:"GetCategoryFeatures",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetCategoryListingsRequest",outputMessage:"GetCategoryListingsResponse",name:"GetCategoryListings",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetCategoryMappingsRequest",outputMessage:"GetCategoryMappingsResponse",name:"GetCategoryMappings",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetChallengeTokenRequest",outputMessage:"GetChallengeTokenResponse",name:"GetChallengeToken",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetCharitiesRequest",outputMessage:"GetCharitiesResponse",name:"GetCharities",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetContextualKeywordsRequest",outputMessage:"GetContextualKeywordsResponse",name:"GetContextualKeywords",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetCrossPromotionsRequest",outputMessage:"GetCrossPromotionsResponse",name:"GetCrossPromotions",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetDescriptionTemplatesRequest",outputMessage:"GetDescriptionTemplatesResponse",name:"GetDescriptionTemplates",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetDisputeRequest",outputMessage:"GetDisputeResponse",name:"GetDispute",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetFeedbackRequest",outputMessage:"GetFeedbackResponse",name:"GetFeedback",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetFinanceOffersRequest",outputMessage:"GetFinanceOffersResponse",name:"GetFinanceOffers",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetHighBiddersRequest",outputMessage:"GetHighBiddersResponse",name:"GetHighBidders",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetItemRequest",outputMessage:"GetItemResponse",name:"GetItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetItemRecommendationsRequest",outputMessage:"GetItemRecommendationsResponse",name:"GetItemRecommendations",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetItemShippingRequest",outputMessage:"GetItemShippingResponse",name:"GetItemShipping",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetItemTransactionsRequest",outputMessage:"GetItemTransactionsResponse",name:"GetItemTransactions",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetItemsAwaitingFeedbackRequest",outputMessage:"GetItemsAwaitingFeedbackResponse",name:"GetItemsAwaitingFeedback",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetLiveAuctionBiddersRequest",outputMessage:"GetLiveAuctionBiddersResponse",name:"GetLiveAuctionBidders",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetLiveAuctionCatalogDetailsRequest",outputMessage:"GetLiveAuctionCatalogDetailsResponse",name:"GetLiveAuctionCatalogDetails",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetMemberMessagesRequest",outputMessage:"GetMemberMessagesResponse",name:"GetMemberMessages",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetMessagePreferencesRequest",outputMessage:"GetMessagePreferencesResponse",name:"GetMessagePreferences",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetMyMessagesRequest",outputMessage:"GetMyMessagesResponse",name:"GetMyMessages",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetMyeBayBuyingRequest",outputMessage:"GetMyeBayBuyingResponse",name:"GetMyeBayBuying",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetMyeBayRemindersRequest",outputMessage:"GetMyeBayRemindersResponse",name:"GetMyeBayReminders",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetMyeBaySellingRequest",outputMessage:"GetMyeBaySellingResponse",name:"GetMyeBaySelling",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetNotificationPreferencesRequest",outputMessage:"GetNotificationPreferencesResponse",name:"GetNotificationPreferences",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetNotificationsUsageRequest",outputMessage:"GetNotificationsUsageResponse",name:"GetNotificationsUsage",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetOrderTransactionsRequest",outputMessage:"GetOrderTransactionsResponse",name:"GetOrderTransactions",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetOrdersRequest",outputMessage:"GetOrdersResponse",name:"GetOrders",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetPictureManagerDetailsRequest",outputMessage:"GetPictureManagerDetailsResponse",name:"GetPictureManagerDetails",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetPictureManagerOptionsRequest",outputMessage:"GetPictureManagerOptionsResponse",name:"GetPictureManagerOptions",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetPopularKeywordsRequest",outputMessage:"GetPopularKeywordsResponse",name:"GetPopularKeywords",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetProductFamilyMembersRequest",outputMessage:"GetProductFamilyMembersResponse",name:"GetProductFamilyMembers",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetProductFinderRequest",outputMessage:"GetProductFinderResponse",name:"GetProductFinder",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetProductFinderXSLRequest",outputMessage:"GetProductFinderXSLResponse",name:"GetProductFinderXSL",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetProductSearchPageRequest",outputMessage:"GetProductSearchPageResponse",name:"GetProductSearchPage",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetProductSearchResultsRequest",outputMessage:"GetProductSearchResultsResponse",name:"GetProductSearchResults",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetProductSellingPagesRequest",outputMessage:"GetProductSellingPagesResponse",name:"GetProductSellingPages",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetProductsRequest",outputMessage:"GetProductsResponse",name:"GetProducts",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetPromotionRulesRequest",outputMessage:"GetPromotionRulesResponse",name:"GetPromotionRules",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetPromotionalSaleDetailsRequest",outputMessage:"GetPromotionalSaleDetailsResponse",name:"GetPromotionalSaleDetails",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetReturnURLRequest",outputMessage:"GetReturnURLResponse",name:"GetReturnURL",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetRuNameRequest",outputMessage:"GetRuNameResponse",name:"GetRuName",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetSearchResultsRequest",outputMessage:"GetSearchResultsResponse",name:"GetSearchResults",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetSearchResultsExpressRequest",outputMessage:"GetSearchResultsExpressResponse",name:"GetSearchResultsExpress",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetSellerEventsRequest",outputMessage:"GetSellerEventsResponse",name:"GetSellerEvents",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetSellerListRequest",outputMessage:"GetSellerListResponse",name:"GetSellerList",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetSellerPaymentsRequest",outputMessage:"GetSellerPaymentsResponse",name:"GetSellerPayments",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetSellerTransactionsRequest",outputMessage:"GetSellerTransactionsResponse",name:"GetSellerTransactions",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetShippingDiscountProfilesRequest",outputMessage:"GetShippingDiscountProfilesResponse",name:"GetShippingDiscountProfiles",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetStoreRequest",outputMessage:"GetStoreResponse",name:"GetStore",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetStoreCategoryUpdateStatusRequest",outputMessage:"GetStoreCategoryUpdateStatusResponse",name:"GetStoreCategoryUpdateStatus",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetStoreCustomPageRequest",outputMessage:"GetStoreCustomPageResponse",name:"GetStoreCustomPage",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetStoreOptionsRequest",outputMessage:"GetStoreOptionsResponse",name:"GetStoreOptions",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetStorePreferencesRequest",outputMessage:"GetStorePreferencesResponse",name:"GetStorePreferences",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetSuggestedCategoriesRequest",outputMessage:"GetSuggestedCategoriesResponse",name:"GetSuggestedCategories",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetTaxTableRequest",outputMessage:"GetTaxTableResponse",name:"GetTaxTable",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetUserRequest",outputMessage:"GetUserResponse",name:"GetUser",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetUserContactDetailsRequest",outputMessage:"GetUserContactDetailsResponse",name:"GetUserContactDetails",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetUserDisputesRequest",outputMessage:"GetUserDisputesResponse",name:"GetUserDisputes",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetUserPreferencesRequest",outputMessage:"GetUserPreferencesResponse",name:"GetUserPreferences",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetVeROReasonCodeDetailsRequest",outputMessage:"GetVeROReasonCodeDetailsResponse",name:"GetVeROReasonCodeDetails",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetVeROReportStatusRequest",outputMessage:"GetVeROReportStatusResponse",name:"GetVeROReportStatus",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetWantItNowPostRequest",outputMessage:"GetWantItNowPostResponse",name:"GetWantItNowPost",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GetWantItNowSearchResultsRequest",outputMessage:"GetWantItNowSearchResultsResponse",name:"GetWantItNowSearchResults",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GeteBayDetailsRequest",outputMessage:"GeteBayDetailsResponse",name:"GeteBayDetails",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"GeteBayOfficialTimeRequest",outputMessage:"GeteBayOfficialTimeResponse",name:"GeteBayOfficialTime",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"IssueRefundRequest",outputMessage:"IssueRefundResponse",name:"IssueRefund",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"LeaveFeedbackRequest",outputMessage:"LeaveFeedbackResponse",name:"LeaveFeedback",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"PlaceOfferRequest",outputMessage:"PlaceOfferResponse",name:"PlaceOffer",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"RelistItemRequest",outputMessage:"RelistItemResponse",name:"RelistItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"RemoveFromWatchListRequest",outputMessage:"RemoveFromWatchListResponse",name:"RemoveFromWatchList",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"RespondToBestOfferRequest",outputMessage:"RespondToBestOfferResponse",name:"RespondToBestOffer",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"RespondToFeedbackRequest",outputMessage:"RespondToFeedbackResponse",name:"RespondToFeedback",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"RespondToWantItNowPostRequest",outputMessage:"RespondToWantItNowPostResponse",name:"RespondToWantItNowPost",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"ReviseCheckoutStatusRequest",outputMessage:"ReviseCheckoutStatusResponse",name:"ReviseCheckoutStatus",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"ReviseItemRequest",outputMessage:"ReviseItemResponse",name:"ReviseItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"ReviseLiveAuctionItemRequest",outputMessage:"ReviseLiveAuctionItemResponse",name:"ReviseLiveAuctionItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"ReviseMyMessagesRequest",outputMessage:"ReviseMyMessagesResponse",name:"ReviseMyMessages",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"ReviseMyMessagesFoldersRequest",outputMessage:"ReviseMyMessagesFoldersResponse",name:"ReviseMyMessagesFolders",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SellerReverseDisputeRequest",outputMessage:"SellerReverseDisputeResponse",name:"SellerReverseDispute",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SendInvoiceRequest",outputMessage:"SendInvoiceResponse",name:"SendInvoice",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetCartRequest",outputMessage:"SetCartResponse",name:"SetCart",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetMessagePreferencesRequest",outputMessage:"SetMessagePreferencesResponse",name:"SetMessagePreferences",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetNotificationPreferencesRequest",outputMessage:"SetNotificationPreferencesResponse",name:"SetNotificationPreferences",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetPictureManagerDetailsRequest",outputMessage:"SetPictureManagerDetailsResponse",name:"SetPictureManagerDetails",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetPromotionRulesRequest",outputMessage:"SetPromotionRulesResponse",name:"SetPromotionRules",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetPromotionalSaleRequest",outputMessage:"SetPromotionalSaleResponse",name:"SetPromotionalSale",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetPromotionalSaleListingsRequest",outputMessage:"SetPromotionalSaleListingsResponse",name:"SetPromotionalSaleListings",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetReturnURLRequest",outputMessage:"SetReturnURLResponse",name:"SetReturnURL",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetShippingDiscountProfilesRequest",outputMessage:"SetShippingDiscountProfilesResponse",name:"SetShippingDiscountProfiles",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetStoreRequest",outputMessage:"SetStoreResponse",name:"SetStore",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetStoreCategoriesRequest",outputMessage:"SetStoreCategoriesResponse",name:"SetStoreCategories",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetStoreCustomPageRequest",outputMessage:"SetStoreCustomPageResponse",name:"SetStoreCustomPage",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetStorePreferencesRequest",outputMessage:"SetStorePreferencesResponse",name:"SetStorePreferences",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetTaxTableRequest",outputMessage:"SetTaxTableResponse",name:"SetTaxTable",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetUserNotesRequest",outputMessage:"SetUserNotesResponse",name:"SetUserNotes",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"SetUserPreferencesRequest",outputMessage:"SetUserPreferencesResponse",name:"SetUserPreferences",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"ValidateChallengeInputRequest",outputMessage:"ValidateChallengeInputResponse",name:"ValidateChallengeInput",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"ValidateTestUserRegistrationRequest",outputMessage:"ValidateTestUserRegistrationResponse",name:"ValidateTestUserRegistration",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"VeROReportItemsRequest",outputMessage:"VeROReportItemsResponse",name:"VeROReportItems",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"VerifyAddItemRequest",outputMessage:"VerifyAddItemResponse",name:"VerifyAddItem",soapAction:""},{inputEncoding:"literal",outputEncoding:"literal",inputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],outputHeaders:[{encoding:"literal",part:"RequesterCredentials",message:"RequesterCredentials"}],inputMessage:"VerifyAddSecondChanceItemRequest",outputMessage:"VerifyAddSecondChanceItemResponse",name:"VerifyAddSecondChanceItem",soapAction:""}],messages:[isc.WSDLMessage.create({fields:{RequesterCredentials:{name:"RequesterCredentials",type:"RequesterCredentials",xmlRequired:true}},ID:"message:RequesterCredentials"}),isc.WSDLMessage.create({fields:{AddDisputeResponse:{name:"AddDisputeResponse",type:"AddDisputeResponse",xmlRequired:true}},ID:"message:AddDisputeResponse"}),isc.WSDLMessage.create({fields:{AddDisputeRequest:{name:"AddDisputeRequest",type:"AddDisputeRequest",xmlRequired:true}},ID:"message:AddDisputeRequest"}),isc.WSDLMessage.create({fields:{AddDisputeResponseResponse:{name:"AddDisputeResponseResponse",type:"AddDisputeResponseResponse",xmlRequired:true}},ID:"message:AddDisputeResponseResponse"}),isc.WSDLMessage.create({fields:{AddDisputeResponseRequest:{name:"AddDisputeResponseRequest",type:"AddDisputeResponseRequest",xmlRequired:true}},ID:"message:AddDisputeResponseRequest"}),isc.WSDLMessage.create({fields:{AddItemResponse:{name:"AddItemResponse",type:"AddItemResponse",xmlRequired:true}},ID:"message:AddItemResponse"}),isc.WSDLMessage.create({fields:{AddItemRequest:{name:"AddItemRequest",type:"AddItemRequest",xmlRequired:true}},ID:"message:AddItemRequest"}),isc.WSDLMessage.create({fields:{AddLiveAuctionItemResponse:{name:"AddLiveAuctionItemResponse",type:"AddLiveAuctionItemResponse",xmlRequired:true}},ID:"message:AddLiveAuctionItemResponse"}),isc.WSDLMessage.create({fields:{AddLiveAuctionItemRequest:{name:"AddLiveAuctionItemRequest",type:"AddLiveAuctionItemRequest",xmlRequired:true}},ID:"message:AddLiveAuctionItemRequest"}),isc.WSDLMessage.create({fields:{AddMemberMessageAAQToPartnerResponse:{name:"AddMemberMessageAAQToPartnerResponse",type:"AddMemberMessageAAQToPartnerResponse",xmlRequired:true}},ID:"message:AddMemberMessageAAQToPartnerResponse"}),isc.WSDLMessage.create({fields:{AddMemberMessageAAQToPartnerRequest:{name:"AddMemberMessageAAQToPartnerRequest",type:"AddMemberMessageAAQToPartnerRequest",xmlRequired:true}},ID:"message:AddMemberMessageAAQToPartnerRequest"}),isc.WSDLMessage.create({fields:{AddMemberMessageRTQResponse:{name:"AddMemberMessageRTQResponse",type:"AddMemberMessageRTQResponse",xmlRequired:true}},ID:"message:AddMemberMessageRTQResponse"}),isc.WSDLMessage.create({fields:{AddMemberMessageRTQRequest:{name:"AddMemberMessageRTQRequest",type:"AddMemberMessageRTQRequest",xmlRequired:true}},ID:"message:AddMemberMessageRTQRequest"}),isc.WSDLMessage.create({fields:{AddMemberMessagesAAQToBidderResponse:{name:"AddMemberMessagesAAQToBidderResponse",type:"AddMemberMessagesAAQToBidderResponse",xmlRequired:true}},ID:"message:AddMemberMessagesAAQToBidderResponse"}),isc.WSDLMessage.create({fields:{AddMemberMessagesAAQToBidderRequest:{name:"AddMemberMessagesAAQToBidderRequest",type:"AddMemberMessagesAAQToBidderRequest",xmlRequired:true}},ID:"message:AddMemberMessagesAAQToBidderRequest"}),isc.WSDLMessage.create({fields:{AddOrderResponse:{name:"AddOrderResponse",type:"AddOrderResponse",xmlRequired:true}},ID:"message:AddOrderResponse"}),isc.WSDLMessage.create({fields:{AddOrderRequest:{name:"AddOrderRequest",type:"AddOrderRequest",xmlRequired:true}},ID:"message:AddOrderRequest"}),isc.WSDLMessage.create({fields:{AddSecondChanceItemResponse:{name:"AddSecondChanceItemResponse",type:"AddSecondChanceItemResponse",xmlRequired:true}},ID:"message:AddSecondChanceItemResponse"}),isc.WSDLMessage.create({fields:{AddSecondChanceItemRequest:{name:"AddSecondChanceItemRequest",type:"AddSecondChanceItemRequest",xmlRequired:true}},ID:"message:AddSecondChanceItemRequest"}),isc.WSDLMessage.create({fields:{AddToItemDescriptionResponse:{name:"AddToItemDescriptionResponse",type:"AddToItemDescriptionResponse",xmlRequired:true}},ID:"message:AddToItemDescriptionResponse"}),isc.WSDLMessage.create({fields:{AddToItemDescriptionRequest:{name:"AddToItemDescriptionRequest",type:"AddToItemDescriptionRequest",xmlRequired:true}},ID:"message:AddToItemDescriptionRequest"}),isc.WSDLMessage.create({fields:{AddToWatchListResponse:{name:"AddToWatchListResponse",type:"AddToWatchListResponse",xmlRequired:true}},ID:"message:AddToWatchListResponse"}),isc.WSDLMessage.create({fields:{AddToWatchListRequest:{name:"AddToWatchListRequest",type:"AddToWatchListRequest",xmlRequired:true}},ID:"message:AddToWatchListRequest"}),isc.WSDLMessage.create({fields:{AddTransactionConfirmationItemResponse:{name:"AddTransactionConfirmationItemResponse",type:"AddTransactionConfirmationItemResponse",xmlRequired:true}},ID:"message:AddTransactionConfirmationItemResponse"}),isc.WSDLMessage.create({fields:{AddTransactionConfirmationItemRequest:{name:"AddTransactionConfirmationItemRequest",type:"AddTransactionConfirmationItemRequest",xmlRequired:true}},ID:"message:AddTransactionConfirmationItemRequest"}),isc.WSDLMessage.create({fields:{ApproveLiveAuctionBiddersResponse:{name:"ApproveLiveAuctionBiddersResponse",type:"ApproveLiveAuctionBiddersResponse",xmlRequired:true}},ID:"message:ApproveLiveAuctionBiddersResponse"}),isc.WSDLMessage.create({fields:{ApproveLiveAuctionBiddersRequest:{name:"ApproveLiveAuctionBiddersRequest",type:"ApproveLiveAuctionBiddersRequest",xmlRequired:true}},ID:"message:ApproveLiveAuctionBiddersRequest"}),isc.WSDLMessage.create({fields:{CompleteSaleResponse:{name:"CompleteSaleResponse",type:"CompleteSaleResponse",xmlRequired:true}},ID:"message:CompleteSaleResponse"}),isc.WSDLMessage.create({fields:{CompleteSaleRequest:{name:"CompleteSaleRequest",type:"CompleteSaleRequest",xmlRequired:true}},ID:"message:CompleteSaleRequest"}),isc.WSDLMessage.create({fields:{DeleteMyMessagesResponse:{name:"DeleteMyMessagesResponse",type:"DeleteMyMessagesResponse",xmlRequired:true}},ID:"message:DeleteMyMessagesResponse"}),isc.WSDLMessage.create({fields:{DeleteMyMessagesRequest:{name:"DeleteMyMessagesRequest",type:"DeleteMyMessagesRequest",xmlRequired:true}},ID:"message:DeleteMyMessagesRequest"}),isc.WSDLMessage.create({fields:{EndItemResponse:{name:"EndItemResponse",type:"EndItemResponse",xmlRequired:true}},ID:"message:EndItemResponse"}),isc.WSDLMessage.create({fields:{EndItemRequest:{name:"EndItemRequest",type:"EndItemRequest",xmlRequired:true}},ID:"message:EndItemRequest"}),isc.WSDLMessage.create({fields:{FetchTokenResponse:{name:"FetchTokenResponse",type:"FetchTokenResponse",xmlRequired:true}},ID:"message:FetchTokenResponse"}),isc.WSDLMessage.create({fields:{FetchTokenRequest:{name:"FetchTokenRequest",type:"FetchTokenRequest",xmlRequired:true}},ID:"message:FetchTokenRequest"}),isc.WSDLMessage.create({fields:{GetAccountResponse:{name:"GetAccountResponse",type:"GetAccountResponse",xmlRequired:true}},ID:"message:GetAccountResponse"}),isc.WSDLMessage.create({fields:{GetAccountRequest:{name:"GetAccountRequest",type:"GetAccountRequest",xmlRequired:true}},ID:"message:GetAccountRequest"}),isc.WSDLMessage.create({fields:{GetAdFormatLeadsResponse:{name:"GetAdFormatLeadsResponse",type:"GetAdFormatLeadsResponse",xmlRequired:true}},ID:"message:GetAdFormatLeadsResponse"}),isc.WSDLMessage.create({fields:{GetAdFormatLeadsRequest:{name:"GetAdFormatLeadsRequest",type:"GetAdFormatLeadsRequest",xmlRequired:true}},ID:"message:GetAdFormatLeadsRequest"}),isc.WSDLMessage.create({fields:{GetAllBiddersResponse:{name:"GetAllBiddersResponse",type:"GetAllBiddersResponse",xmlRequired:true}},ID:"message:GetAllBiddersResponse"}),isc.WSDLMessage.create({fields:{GetAllBiddersRequest:{name:"GetAllBiddersRequest",type:"GetAllBiddersRequest",xmlRequired:true}},ID:"message:GetAllBiddersRequest"}),isc.WSDLMessage.create({fields:{GetApiAccessRulesResponse:{name:"GetApiAccessRulesResponse",type:"GetApiAccessRulesResponse",xmlRequired:true}},ID:"message:GetApiAccessRulesResponse"}),isc.WSDLMessage.create({fields:{GetApiAccessRulesRequest:{name:"GetApiAccessRulesRequest",type:"GetApiAccessRulesRequest",xmlRequired:true}},ID:"message:GetApiAccessRulesRequest"}),isc.WSDLMessage.create({fields:{GetAttributesCSResponse:{name:"GetAttributesCSResponse",type:"GetAttributesCSResponse",xmlRequired:true}},ID:"message:GetAttributesCSResponse"}),isc.WSDLMessage.create({fields:{GetAttributesCSRequest:{name:"GetAttributesCSRequest",type:"GetAttributesCSRequest",xmlRequired:true}},ID:"message:GetAttributesCSRequest"}),isc.WSDLMessage.create({fields:{GetAttributesXSLResponse:{name:"GetAttributesXSLResponse",type:"GetAttributesXSLResponse",xmlRequired:true}},ID:"message:GetAttributesXSLResponse"}),isc.WSDLMessage.create({fields:{GetAttributesXSLRequest:{name:"GetAttributesXSLRequest",type:"GetAttributesXSLRequest",xmlRequired:true}},ID:"message:GetAttributesXSLRequest"}),isc.WSDLMessage.create({fields:{GetBestOffersResponse:{name:"GetBestOffersResponse",type:"GetBestOffersResponse",xmlRequired:true}},ID:"message:GetBestOffersResponse"}),isc.WSDLMessage.create({fields:{GetBestOffersRequest:{name:"GetBestOffersRequest",type:"GetBestOffersRequest",xmlRequired:true}},ID:"message:GetBestOffersRequest"}),isc.WSDLMessage.create({fields:{GetBidderListResponse:{name:"GetBidderListResponse",type:"GetBidderListResponse",xmlRequired:true}},ID:"message:GetBidderListResponse"}),isc.WSDLMessage.create({fields:{GetBidderListRequest:{name:"GetBidderListRequest",type:"GetBidderListRequest",xmlRequired:true}},ID:"message:GetBidderListRequest"}),isc.WSDLMessage.create({fields:{GetCartResponse:{name:"GetCartResponse",type:"GetCartResponse",xmlRequired:true}},ID:"message:GetCartResponse"}),isc.WSDLMessage.create({fields:{GetCartRequest:{name:"GetCartRequest",type:"GetCartRequest",xmlRequired:true}},ID:"message:GetCartRequest"}),isc.WSDLMessage.create({fields:{GetCategoriesResponse:{name:"GetCategoriesResponse",type:"GetCategoriesResponse",xmlRequired:true}},ID:"message:GetCategoriesResponse"}),isc.WSDLMessage.create({fields:{GetCategoriesRequest:{name:"GetCategoriesRequest",type:"GetCategoriesRequest",xmlRequired:true}},ID:"message:GetCategoriesRequest"}),isc.WSDLMessage.create({fields:{GetCategory2CSResponse:{name:"GetCategory2CSResponse",type:"GetCategory2CSResponse",xmlRequired:true}},ID:"message:GetCategory2CSResponse"}),isc.WSDLMessage.create({fields:{GetCategory2CSRequest:{name:"GetCategory2CSRequest",type:"GetCategory2CSRequest",xmlRequired:true}},ID:"message:GetCategory2CSRequest"}),isc.WSDLMessage.create({fields:{GetCategory2FinanceOfferResponse:{name:"GetCategory2FinanceOfferResponse",type:"GetCategory2FinanceOfferResponse",xmlRequired:true}},ID:"message:GetCategory2FinanceOfferResponse"}),isc.WSDLMessage.create({fields:{GetCategory2FinanceOfferRequest:{name:"GetCategory2FinanceOfferRequest",type:"GetCategory2FinanceOfferRequest",xmlRequired:true}},ID:"message:GetCategory2FinanceOfferRequest"}),isc.WSDLMessage.create({fields:{GetCategoryFeaturesResponse:{name:"GetCategoryFeaturesResponse",type:"GetCategoryFeaturesResponse",xmlRequired:true}},ID:"message:GetCategoryFeaturesResponse"}),isc.WSDLMessage.create({fields:{GetCategoryFeaturesRequest:{name:"GetCategoryFeaturesRequest",type:"GetCategoryFeaturesRequest",xmlRequired:true}},ID:"message:GetCategoryFeaturesRequest"}),isc.WSDLMessage.create({fields:{GetCategoryListingsResponse:{name:"GetCategoryListingsResponse",type:"GetCategoryListingsResponse",xmlRequired:true}},ID:"message:GetCategoryListingsResponse"}),isc.WSDLMessage.create({fields:{GetCategoryListingsRequest:{name:"GetCategoryListingsRequest",type:"GetCategoryListingsRequest",xmlRequired:true}},ID:"message:GetCategoryListingsRequest"}),isc.WSDLMessage.create({fields:{GetCategoryMappingsResponse:{name:"GetCategoryMappingsResponse",type:"GetCategoryMappingsResponse",xmlRequired:true}},ID:"message:GetCategoryMappingsResponse"}),isc.WSDLMessage.create({fields:{GetCategoryMappingsRequest:{name:"GetCategoryMappingsRequest",type:"GetCategoryMappingsRequest",xmlRequired:true}},ID:"message:GetCategoryMappingsRequest"}),isc.WSDLMessage.create({fields:{GetChallengeTokenResponse:{name:"GetChallengeTokenResponse",type:"GetChallengeTokenResponse",xmlRequired:true}},ID:"message:GetChallengeTokenResponse"}),isc.WSDLMessage.create({fields:{GetChallengeTokenRequest:{name:"GetChallengeTokenRequest",type:"GetChallengeTokenRequest",xmlRequired:true}},ID:"message:GetChallengeTokenRequest"}),isc.WSDLMessage.create({fields:{GetCharitiesResponse:{name:"GetCharitiesResponse",type:"GetCharitiesResponse",xmlRequired:true}},ID:"message:GetCharitiesResponse"}),isc.WSDLMessage.create({fields:{GetCharitiesRequest:{name:"GetCharitiesRequest",type:"GetCharitiesRequest",xmlRequired:true}},ID:"message:GetCharitiesRequest"}),isc.WSDLMessage.create({fields:{GetContextualKeywordsResponse:{name:"GetContextualKeywordsResponse",type:"GetContextualKeywordsResponse",xmlRequired:true}},ID:"message:GetContextualKeywordsResponse"}),isc.WSDLMessage.create({fields:{GetContextualKeywordsRequest:{name:"GetContextualKeywordsRequest",type:"GetContextualKeywordsRequest",xmlRequired:true}},ID:"message:GetContextualKeywordsRequest"}),isc.WSDLMessage.create({fields:{GetCrossPromotionsResponse:{name:"GetCrossPromotionsResponse",type:"GetCrossPromotionsResponse",xmlRequired:true}},ID:"message:GetCrossPromotionsResponse"}),isc.WSDLMessage.create({fields:{GetCrossPromotionsRequest:{name:"GetCrossPromotionsRequest",type:"GetCrossPromotionsRequest",xmlRequired:true}},ID:"message:GetCrossPromotionsRequest"}),isc.WSDLMessage.create({fields:{GetDescriptionTemplatesResponse:{name:"GetDescriptionTemplatesResponse",type:"GetDescriptionTemplatesResponse",xmlRequired:true}},ID:"message:GetDescriptionTemplatesResponse"}),isc.WSDLMessage.create({fields:{GetDescriptionTemplatesRequest:{name:"GetDescriptionTemplatesRequest",type:"GetDescriptionTemplatesRequest",xmlRequired:true}},ID:"message:GetDescriptionTemplatesRequest"}),isc.WSDLMessage.create({fields:{GetDisputeResponse:{name:"GetDisputeResponse",type:"GetDisputeResponse",xmlRequired:true}},ID:"message:GetDisputeResponse"}),isc.WSDLMessage.create({fields:{GetDisputeRequest:{name:"GetDisputeRequest",type:"GetDisputeRequest",xmlRequired:true}},ID:"message:GetDisputeRequest"}),isc.WSDLMessage.create({fields:{GetFeedbackResponse:{name:"GetFeedbackResponse",type:"GetFeedbackResponse",xmlRequired:true}},ID:"message:GetFeedbackResponse"}),isc.WSDLMessage.create({fields:{GetFeedbackRequest:{name:"GetFeedbackRequest",type:"GetFeedbackRequest",xmlRequired:true}},ID:"message:GetFeedbackRequest"}),isc.WSDLMessage.create({fields:{GetFinanceOffersResponse:{name:"GetFinanceOffersResponse",type:"GetFinanceOffersResponse",xmlRequired:true}},ID:"message:GetFinanceOffersResponse"}),isc.WSDLMessage.create({fields:{GetFinanceOffersRequest:{name:"GetFinanceOffersRequest",type:"GetFinanceOffersRequest",xmlRequired:true}},ID:"message:GetFinanceOffersRequest"}),isc.WSDLMessage.create({fields:{GetHighBiddersResponse:{name:"GetHighBiddersResponse",type:"GetHighBiddersResponse",xmlRequired:true}},ID:"message:GetHighBiddersResponse"}),isc.WSDLMessage.create({fields:{GetHighBiddersRequest:{name:"GetHighBiddersRequest",type:"GetHighBiddersRequest",xmlRequired:true}},ID:"message:GetHighBiddersRequest"}),isc.WSDLMessage.create({fields:{GetItemResponse:{name:"GetItemResponse",type:"GetItemResponse",xmlRequired:true}},ID:"message:GetItemResponse"}),isc.WSDLMessage.create({fields:{GetItemRequest:{name:"GetItemRequest",type:"GetItemRequest",xmlRequired:true}},ID:"message:GetItemRequest"}),isc.WSDLMessage.create({fields:{GetItemRecommendationsResponse:{name:"GetItemRecommendationsResponse",type:"GetItemRecommendationsResponse",xmlRequired:true}},ID:"message:GetItemRecommendationsResponse"}),isc.WSDLMessage.create({fields:{GetItemRecommendationsRequest:{name:"GetItemRecommendationsRequest",type:"GetItemRecommendationsRequest",xmlRequired:true}},ID:"message:GetItemRecommendationsRequest"}),isc.WSDLMessage.create({fields:{GetItemShippingResponse:{name:"GetItemShippingResponse",type:"GetItemShippingResponse",xmlRequired:true}},ID:"message:GetItemShippingResponse"}),isc.WSDLMessage.create({fields:{GetItemShippingRequest:{name:"GetItemShippingRequest",type:"GetItemShippingRequest",xmlRequired:true}},ID:"message:GetItemShippingRequest"}),isc.WSDLMessage.create({fields:{GetItemTransactionsResponse:{name:"GetItemTransactionsResponse",type:"GetItemTransactionsResponse",xmlRequired:true}},ID:"message:GetItemTransactionsResponse"}),isc.WSDLMessage.create({fields:{GetItemTransactionsRequest:{name:"GetItemTransactionsRequest",type:"GetItemTransactionsRequest",xmlRequired:true}},ID:"message:GetItemTransactionsRequest"}),isc.WSDLMessage.create({fields:{GetItemsAwaitingFeedbackResponse:{name:"GetItemsAwaitingFeedbackResponse",type:"GetItemsAwaitingFeedbackResponse",xmlRequired:true}},ID:"message:GetItemsAwaitingFeedbackResponse"}),isc.WSDLMessage.create({fields:{GetItemsAwaitingFeedbackRequest:{name:"GetItemsAwaitingFeedbackRequest",type:"GetItemsAwaitingFeedbackRequest",xmlRequired:true}},ID:"message:GetItemsAwaitingFeedbackRequest"}),isc.WSDLMessage.create({fields:{GetLiveAuctionBiddersResponse:{name:"GetLiveAuctionBiddersResponse",type:"GetLiveAuctionBiddersResponse",xmlRequired:true}},ID:"message:GetLiveAuctionBiddersResponse"}),isc.WSDLMessage.create({fields:{GetLiveAuctionBiddersRequest:{name:"GetLiveAuctionBiddersRequest",type:"GetLiveAuctionBiddersRequest",xmlRequired:true}},ID:"message:GetLiveAuctionBiddersRequest"}),isc.WSDLMessage.create({fields:{GetLiveAuctionCatalogDetailsResponse:{name:"GetLiveAuctionCatalogDetailsResponse",type:"GetLiveAuctionCatalogDetailsResponse",xmlRequired:true}},ID:"message:GetLiveAuctionCatalogDetailsResponse"}),isc.WSDLMessage.create({fields:{GetLiveAuctionCatalogDetailsRequest:{name:"GetLiveAuctionCatalogDetailsRequest",type:"GetLiveAuctionCatalogDetailsRequest",xmlRequired:true}},ID:"message:GetLiveAuctionCatalogDetailsRequest"}),isc.WSDLMessage.create({fields:{GetMemberMessagesResponse:{name:"GetMemberMessagesResponse",type:"GetMemberMessagesResponse",xmlRequired:true}},ID:"message:GetMemberMessagesResponse"}),isc.WSDLMessage.create({fields:{GetMemberMessagesRequest:{name:"GetMemberMessagesRequest",type:"GetMemberMessagesRequest",xmlRequired:true}},ID:"message:GetMemberMessagesRequest"}),isc.WSDLMessage.create({fields:{GetMessagePreferencesResponse:{name:"GetMessagePreferencesResponse",type:"GetMessagePreferencesResponse",xmlRequired:true}},ID:"message:GetMessagePreferencesResponse"}),isc.WSDLMessage.create({fields:{GetMessagePreferencesRequest:{name:"GetMessagePreferencesRequest",type:"GetMessagePreferencesRequest",xmlRequired:true}},ID:"message:GetMessagePreferencesRequest"}),isc.WSDLMessage.create({fields:{GetMyMessagesResponse:{name:"GetMyMessagesResponse",type:"GetMyMessagesResponse",xmlRequired:true}},ID:"message:GetMyMessagesResponse"}),isc.WSDLMessage.create({fields:{GetMyMessagesRequest:{name:"GetMyMessagesRequest",type:"GetMyMessagesRequest",xmlRequired:true}},ID:"message:GetMyMessagesRequest"}),isc.WSDLMessage.create({fields:{GetMyeBayBuyingResponse:{name:"GetMyeBayBuyingResponse",type:"GetMyeBayBuyingResponse",xmlRequired:true}},ID:"message:GetMyeBayBuyingResponse"}),isc.WSDLMessage.create({fields:{GetMyeBayBuyingRequest:{name:"GetMyeBayBuyingRequest",type:"GetMyeBayBuyingRequest",xmlRequired:true}},ID:"message:GetMyeBayBuyingRequest"}),isc.WSDLMessage.create({fields:{GetMyeBayRemindersResponse:{name:"GetMyeBayRemindersResponse",type:"GetMyeBayRemindersResponse",xmlRequired:true}},ID:"message:GetMyeBayRemindersResponse"}),isc.WSDLMessage.create({fields:{GetMyeBayRemindersRequest:{name:"GetMyeBayRemindersRequest",type:"GetMyeBayRemindersRequest",xmlRequired:true}},ID:"message:GetMyeBayRemindersRequest"}),isc.WSDLMessage.create({fields:{GetMyeBaySellingResponse:{name:"GetMyeBaySellingResponse",type:"GetMyeBaySellingResponse",xmlRequired:true}},ID:"message:GetMyeBaySellingResponse"}),isc.WSDLMessage.create({fields:{GetMyeBaySellingRequest:{name:"GetMyeBaySellingRequest",type:"GetMyeBaySellingRequest",xmlRequired:true}},ID:"message:GetMyeBaySellingRequest"}),isc.WSDLMessage.create({fields:{GetNotificationPreferencesResponse:{name:"GetNotificationPreferencesResponse",type:"GetNotificationPreferencesResponse",xmlRequired:true}},ID:"message:GetNotificationPreferencesResponse"}),isc.WSDLMessage.create({fields:{GetNotificationPreferencesRequest:{name:"GetNotificationPreferencesRequest",type:"GetNotificationPreferencesRequest",xmlRequired:true}},ID:"message:GetNotificationPreferencesRequest"}),isc.WSDLMessage.create({fields:{GetNotificationsUsageResponse:{name:"GetNotificationsUsageResponse",type:"GetNotificationsUsageResponse",xmlRequired:true}},ID:"message:GetNotificationsUsageResponse"}),isc.WSDLMessage.create({fields:{GetNotificationsUsageRequest:{name:"GetNotificationsUsageRequest",type:"GetNotificationsUsageRequest",xmlRequired:true}},ID:"message:GetNotificationsUsageRequest"}),isc.WSDLMessage.create({fields:{GetOrderTransactionsResponse:{name:"GetOrderTransactionsResponse",type:"GetOrderTransactionsResponse",xmlRequired:true}},ID:"message:GetOrderTransactionsResponse"}),isc.WSDLMessage.create({fields:{GetOrderTransactionsRequest:{name:"GetOrderTransactionsRequest",type:"GetOrderTransactionsRequest",xmlRequired:true}},ID:"message:GetOrderTransactionsRequest"}),isc.WSDLMessage.create({fields:{GetOrdersResponse:{name:"GetOrdersResponse",type:"GetOrdersResponse",xmlRequired:true}},ID:"message:GetOrdersResponse"}),isc.WSDLMessage.create({fields:{GetOrdersRequest:{name:"GetOrdersRequest",type:"GetOrdersRequest",xmlRequired:true}},ID:"message:GetOrdersRequest"}),isc.WSDLMessage.create({fields:{GetPictureManagerDetailsResponse:{name:"GetPictureManagerDetailsResponse",type:"GetPictureManagerDetailsResponse",xmlRequired:true}},ID:"message:GetPictureManagerDetailsResponse"}),isc.WSDLMessage.create({fields:{GetPictureManagerDetailsRequest:{name:"GetPictureManagerDetailsRequest",type:"GetPictureManagerDetailsRequest",xmlRequired:true}},ID:"message:GetPictureManagerDetailsRequest"}),isc.WSDLMessage.create({fields:{GetPictureManagerOptionsResponse:{name:"GetPictureManagerOptionsResponse",type:"GetPictureManagerOptionsResponse",xmlRequired:true}},ID:"message:GetPictureManagerOptionsResponse"}),isc.WSDLMessage.create({fields:{GetPictureManagerOptionsRequest:{name:"GetPictureManagerOptionsRequest",type:"GetPictureManagerOptionsRequest",xmlRequired:true}},ID:"message:GetPictureManagerOptionsRequest"}),isc.WSDLMessage.create({fields:{GetPopularKeywordsResponse:{name:"GetPopularKeywordsResponse",type:"GetPopularKeywordsResponse",xmlRequired:true}},ID:"message:GetPopularKeywordsResponse"}),isc.WSDLMessage.create({fields:{GetPopularKeywordsRequest:{name:"GetPopularKeywordsRequest",type:"GetPopularKeywordsRequest",xmlRequired:true}},ID:"message:GetPopularKeywordsRequest"}),isc.WSDLMessage.create({fields:{GetProductFamilyMembersResponse:{name:"GetProductFamilyMembersResponse",type:"GetProductFamilyMembersResponse",xmlRequired:true}},ID:"message:GetProductFamilyMembersResponse"}),isc.WSDLMessage.create({fields:{GetProductFamilyMembersRequest:{name:"GetProductFamilyMembersRequest",type:"GetProductFamilyMembersRequest",xmlRequired:true}},ID:"message:GetProductFamilyMembersRequest"}),isc.WSDLMessage.create({fields:{GetProductFinderResponse:{name:"GetProductFinderResponse",type:"GetProductFinderResponse",xmlRequired:true}},ID:"message:GetProductFinderResponse"}),isc.WSDLMessage.create({fields:{GetProductFinderRequest:{name:"GetProductFinderRequest",type:"GetProductFinderRequest",xmlRequired:true}},ID:"message:GetProductFinderRequest"}),isc.WSDLMessage.create({fields:{GetProductFinderXSLResponse:{name:"GetProductFinderXSLResponse",type:"GetProductFinderXSLResponse",xmlRequired:true}},ID:"message:GetProductFinderXSLResponse"}),isc.WSDLMessage.create({fields:{GetProductFinderXSLRequest:{name:"GetProductFinderXSLRequest",type:"GetProductFinderXSLRequest",xmlRequired:true}},ID:"message:GetProductFinderXSLRequest"}),isc.WSDLMessage.create({fields:{GetProductSearchPageResponse:{name:"GetProductSearchPageResponse",type:"GetProductSearchPageResponse",xmlRequired:true}},ID:"message:GetProductSearchPageResponse"}),isc.WSDLMessage.create({fields:{GetProductSearchPageRequest:{name:"GetProductSearchPageRequest",type:"GetProductSearchPageRequest",xmlRequired:true}},ID:"message:GetProductSearchPageRequest"}),isc.WSDLMessage.create({fields:{GetProductSearchResultsResponse:{name:"GetProductSearchResultsResponse",type:"GetProductSearchResultsResponse",xmlRequired:true}},ID:"message:GetProductSearchResultsResponse"}),isc.WSDLMessage.create({fields:{GetProductSearchResultsRequest:{name:"GetProductSearchResultsRequest",type:"GetProductSearchResultsRequest",xmlRequired:true}},ID:"message:GetProductSearchResultsRequest"}),isc.WSDLMessage.create({fields:{GetProductSellingPagesResponse:{name:"GetProductSellingPagesResponse",type:"GetProductSellingPagesResponse",xmlRequired:true}},ID:"message:GetProductSellingPagesResponse"}),isc.WSDLMessage.create({fields:{GetProductSellingPagesRequest:{name:"GetProductSellingPagesRequest",type:"GetProductSellingPagesRequest",xmlRequired:true}},ID:"message:GetProductSellingPagesRequest"}),isc.WSDLMessage.create({fields:{GetProductsResponse:{name:"GetProductsResponse",type:"GetProductsResponse",xmlRequired:true}},ID:"message:GetProductsResponse"}),isc.WSDLMessage.create({fields:{GetProductsRequest:{name:"GetProductsRequest",type:"GetProductsRequest",xmlRequired:true}},ID:"message:GetProductsRequest"}),isc.WSDLMessage.create({fields:{GetPromotionRulesResponse:{name:"GetPromotionRulesResponse",type:"GetPromotionRulesResponse",xmlRequired:true}},ID:"message:GetPromotionRulesResponse"}),isc.WSDLMessage.create({fields:{GetPromotionRulesRequest:{name:"GetPromotionRulesRequest",type:"GetPromotionRulesRequest",xmlRequired:true}},ID:"message:GetPromotionRulesRequest"}),isc.WSDLMessage.create({fields:{GetPromotionalSaleDetailsResponse:{name:"GetPromotionalSaleDetailsResponse",type:"GetPromotionalSaleDetailsResponse",xmlRequired:true}},ID:"message:GetPromotionalSaleDetailsResponse"}),isc.WSDLMessage.create({fields:{GetPromotionalSaleDetailsRequest:{name:"GetPromotionalSaleDetailsRequest",type:"GetPromotionalSaleDetailsRequest",xmlRequired:true}},ID:"message:GetPromotionalSaleDetailsRequest"}),isc.WSDLMessage.create({fields:{GetReturnURLResponse:{name:"GetReturnURLResponse",type:"GetReturnURLResponse",xmlRequired:true}},ID:"message:GetReturnURLResponse"}),isc.WSDLMessage.create({fields:{GetReturnURLRequest:{name:"GetReturnURLRequest",type:"GetReturnURLRequest",xmlRequired:true}},ID:"message:GetReturnURLRequest"}),isc.WSDLMessage.create({fields:{GetRuNameResponse:{name:"GetRuNameResponse",type:"GetRuNameResponse",xmlRequired:true}},ID:"message:GetRuNameResponse"}),isc.WSDLMessage.create({fields:{GetRuNameRequest:{name:"GetRuNameRequest",type:"GetRuNameRequest",xmlRequired:true}},ID:"message:GetRuNameRequest"}),isc.WSDLMessage.create({fields:{GetSearchResultsResponse:{name:"GetSearchResultsResponse",type:"GetSearchResultsResponse",xmlRequired:true}},ID:"message:GetSearchResultsResponse"}),isc.WSDLMessage.create({fields:{GetSearchResultsRequest:{name:"GetSearchResultsRequest",type:"GetSearchResultsRequest",xmlRequired:true}},ID:"message:GetSearchResultsRequest"}),isc.WSDLMessage.create({fields:{GetSearchResultsExpressResponse:{name:"GetSearchResultsExpressResponse",type:"GetSearchResultsExpressResponse",xmlRequired:true}},ID:"message:GetSearchResultsExpressResponse"}),isc.WSDLMessage.create({fields:{GetSearchResultsExpressRequest:{name:"GetSearchResultsExpressRequest",type:"GetSearchResultsExpressRequest",xmlRequired:true}},ID:"message:GetSearchResultsExpressRequest"}),isc.WSDLMessage.create({fields:{GetSellerEventsResponse:{name:"GetSellerEventsResponse",type:"GetSellerEventsResponse",xmlRequired:true}},ID:"message:GetSellerEventsResponse"}),isc.WSDLMessage.create({fields:{GetSellerEventsRequest:{name:"GetSellerEventsRequest",type:"GetSellerEventsRequest",xmlRequired:true}},ID:"message:GetSellerEventsRequest"}),isc.WSDLMessage.create({fields:{GetSellerListResponse:{name:"GetSellerListResponse",type:"GetSellerListResponse",xmlRequired:true}},ID:"message:GetSellerListResponse"}),isc.WSDLMessage.create({fields:{GetSellerListRequest:{name:"GetSellerListRequest",type:"GetSellerListRequest",xmlRequired:true}},ID:"message:GetSellerListRequest"}),isc.WSDLMessage.create({fields:{GetSellerPaymentsResponse:{name:"GetSellerPaymentsResponse",type:"GetSellerPaymentsResponse",xmlRequired:true}},ID:"message:GetSellerPaymentsResponse"}),isc.WSDLMessage.create({fields:{GetSellerPaymentsRequest:{name:"GetSellerPaymentsRequest",type:"GetSellerPaymentsRequest",xmlRequired:true}},ID:"message:GetSellerPaymentsRequest"}),isc.WSDLMessage.create({fields:{GetSellerTransactionsResponse:{name:"GetSellerTransactionsResponse",type:"GetSellerTransactionsResponse",xmlRequired:true}},ID:"message:GetSellerTransactionsResponse"}),isc.WSDLMessage.create({fields:{GetSellerTransactionsRequest:{name:"GetSellerTransactionsRequest",type:"GetSellerTransactionsRequest",xmlRequired:true}},ID:"message:GetSellerTransactionsRequest"}),isc.WSDLMessage.create({fields:{GetShippingDiscountProfilesResponse:{name:"GetShippingDiscountProfilesResponse",type:"GetShippingDiscountProfilesResponse",xmlRequired:true}},ID:"message:GetShippingDiscountProfilesResponse"}),isc.WSDLMessage.create({fields:{GetShippingDiscountProfilesRequest:{name:"GetShippingDiscountProfilesRequest",type:"GetShippingDiscountProfilesRequest",xmlRequired:true}},ID:"message:GetShippingDiscountProfilesRequest"}),isc.WSDLMessage.create({fields:{GetStoreResponse:{name:"GetStoreResponse",type:"GetStoreResponse",xmlRequired:true}},ID:"message:GetStoreResponse"}),isc.WSDLMessage.create({fields:{GetStoreRequest:{name:"GetStoreRequest",type:"GetStoreRequest",xmlRequired:true}},ID:"message:GetStoreRequest"}),isc.WSDLMessage.create({fields:{GetStoreCategoryUpdateStatusResponse:{name:"GetStoreCategoryUpdateStatusResponse",type:"GetStoreCategoryUpdateStatusResponse",xmlRequired:true}},ID:"message:GetStoreCategoryUpdateStatusResponse"}),isc.WSDLMessage.create({fields:{GetStoreCategoryUpdateStatusRequest:{name:"GetStoreCategoryUpdateStatusRequest",type:"GetStoreCategoryUpdateStatusRequest",xmlRequired:true}},ID:"message:GetStoreCategoryUpdateStatusRequest"}),isc.WSDLMessage.create({fields:{GetStoreCustomPageResponse:{name:"GetStoreCustomPageResponse",type:"GetStoreCustomPageResponse",xmlRequired:true}},ID:"message:GetStoreCustomPageResponse"}),isc.WSDLMessage.create({fields:{GetStoreCustomPageRequest:{name:"GetStoreCustomPageRequest",type:"GetStoreCustomPageRequest",xmlRequired:true}},ID:"message:GetStoreCustomPageRequest"}),isc.WSDLMessage.create({fields:{GetStoreOptionsResponse:{name:"GetStoreOptionsResponse",type:"GetStoreOptionsResponse",xmlRequired:true}},ID:"message:GetStoreOptionsResponse"}),isc.WSDLMessage.create({fields:{GetStoreOptionsRequest:{name:"GetStoreOptionsRequest",type:"GetStoreOptionsRequest",xmlRequired:true}},ID:"message:GetStoreOptionsRequest"}),isc.WSDLMessage.create({fields:{GetStorePreferencesResponse:{name:"GetStorePreferencesResponse",type:"GetStorePreferencesResponse",xmlRequired:true}},ID:"message:GetStorePreferencesResponse"}),isc.WSDLMessage.create({fields:{GetStorePreferencesRequest:{name:"GetStorePreferencesRequest",type:"GetStorePreferencesRequest",xmlRequired:true}},ID:"message:GetStorePreferencesRequest"}),isc.WSDLMessage.create({fields:{GetSuggestedCategoriesResponse:{name:"GetSuggestedCategoriesResponse",type:"GetSuggestedCategoriesResponse",xmlRequired:true}},ID:"message:GetSuggestedCategoriesResponse"}),isc.WSDLMessage.create({fields:{GetSuggestedCategoriesRequest:{name:"GetSuggestedCategoriesRequest",type:"GetSuggestedCategoriesRequest",xmlRequired:true}},ID:"message:GetSuggestedCategoriesRequest"}),isc.WSDLMessage.create({fields:{GetTaxTableResponse:{name:"GetTaxTableResponse",type:"GetTaxTableResponse",xmlRequired:true}},ID:"message:GetTaxTableResponse"}),isc.WSDLMessage.create({fields:{GetTaxTableRequest:{name:"GetTaxTableRequest",type:"GetTaxTableRequest",xmlRequired:true}},ID:"message:GetTaxTableRequest"}),isc.WSDLMessage.create({fields:{GetUserResponse:{name:"GetUserResponse",type:"GetUserResponse",xmlRequired:true}},ID:"message:GetUserResponse"}),isc.WSDLMessage.create({fields:{GetUserRequest:{name:"GetUserRequest",type:"GetUserRequest",xmlRequired:true}},ID:"message:GetUserRequest"}),isc.WSDLMessage.create({fields:{GetUserContactDetailsResponse:{name:"GetUserContactDetailsResponse",type:"GetUserContactDetailsResponse",xmlRequired:true}},ID:"message:GetUserContactDetailsResponse"}),isc.WSDLMessage.create({fields:{GetUserContactDetailsRequest:{name:"GetUserContactDetailsRequest",type:"GetUserContactDetailsRequest",xmlRequired:true}},ID:"message:GetUserContactDetailsRequest"}),isc.WSDLMessage.create({fields:{GetUserDisputesResponse:{name:"GetUserDisputesResponse",type:"GetUserDisputesResponse",xmlRequired:true}},ID:"message:GetUserDisputesResponse"}),isc.WSDLMessage.create({fields:{GetUserDisputesRequest:{name:"GetUserDisputesRequest",type:"GetUserDisputesRequest",xmlRequired:true}},ID:"message:GetUserDisputesRequest"}),isc.WSDLMessage.create({fields:{GetUserPreferencesResponse:{name:"GetUserPreferencesResponse",type:"GetUserPreferencesResponse",xmlRequired:true}},ID:"message:GetUserPreferencesResponse"}),isc.WSDLMessage.create({fields:{GetUserPreferencesRequest:{name:"GetUserPreferencesRequest",type:"GetUserPreferencesRequest",xmlRequired:true}},ID:"message:GetUserPreferencesRequest"}),isc.WSDLMessage.create({fields:{GetVeROReasonCodeDetailsResponse:{name:"GetVeROReasonCodeDetailsResponse",type:"GetVeROReasonCodeDetailsResponse",xmlRequired:true}},ID:"message:GetVeROReasonCodeDetailsResponse"}),isc.WSDLMessage.create({fields:{GetVeROReasonCodeDetailsRequest:{name:"GetVeROReasonCodeDetailsRequest",type:"GetVeROReasonCodeDetailsRequest",xmlRequired:true}},ID:"message:GetVeROReasonCodeDetailsRequest"}),isc.WSDLMessage.create({fields:{GetVeROReportStatusResponse:{name:"GetVeROReportStatusResponse",type:"GetVeROReportStatusResponse",xmlRequired:true}},ID:"message:GetVeROReportStatusResponse"}),isc.WSDLMessage.create({fields:{GetVeROReportStatusRequest:{name:"GetVeROReportStatusRequest",type:"GetVeROReportStatusRequest",xmlRequired:true}},ID:"message:GetVeROReportStatusRequest"}),isc.WSDLMessage.create({fields:{GetWantItNowPostResponse:{name:"GetWantItNowPostResponse",type:"GetWantItNowPostResponse",xmlRequired:true}},ID:"message:GetWantItNowPostResponse"}),isc.WSDLMessage.create({fields:{GetWantItNowPostRequest:{name:"GetWantItNowPostRequest",type:"GetWantItNowPostRequest",xmlRequired:true}},ID:"message:GetWantItNowPostRequest"}),isc.WSDLMessage.create({fields:{GetWantItNowSearchResultsResponse:{name:"GetWantItNowSearchResultsResponse",type:"GetWantItNowSearchResultsResponse",xmlRequired:true}},ID:"message:GetWantItNowSearchResultsResponse"}),isc.WSDLMessage.create({fields:{GetWantItNowSearchResultsRequest:{name:"GetWantItNowSearchResultsRequest",type:"GetWantItNowSearchResultsRequest",xmlRequired:true}},ID:"message:GetWantItNowSearchResultsRequest"}),isc.WSDLMessage.create({fields:{GeteBayDetailsResponse:{name:"GeteBayDetailsResponse",type:"GeteBayDetailsResponse",xmlRequired:true}},ID:"message:GeteBayDetailsResponse"}),isc.WSDLMessage.create({fields:{GeteBayDetailsRequest:{name:"GeteBayDetailsRequest",type:"GeteBayDetailsRequest",xmlRequired:true}},ID:"message:GeteBayDetailsRequest"}),isc.WSDLMessage.create({fields:{GeteBayOfficialTimeResponse:{name:"GeteBayOfficialTimeResponse",type:"GeteBayOfficialTimeResponse",xmlRequired:true}},ID:"message:GeteBayOfficialTimeResponse"}),isc.WSDLMessage.create({fields:{GeteBayOfficialTimeRequest:{name:"GeteBayOfficialTimeRequest",type:"GeteBayOfficialTimeRequest",xmlRequired:true}},ID:"message:GeteBayOfficialTimeRequest"}),isc.WSDLMessage.create({fields:{IssueRefundResponse:{name:"IssueRefundResponse",type:"IssueRefundResponse",xmlRequired:true}},ID:"message:IssueRefundResponse"}),isc.WSDLMessage.create({fields:{IssueRefundRequest:{name:"IssueRefundRequest",type:"IssueRefundRequest",xmlRequired:true}},ID:"message:IssueRefundRequest"}),isc.WSDLMessage.create({fields:{LeaveFeedbackResponse:{name:"LeaveFeedbackResponse",type:"LeaveFeedbackResponse",xmlRequired:true}},ID:"message:LeaveFeedbackResponse"}),isc.WSDLMessage.create({fields:{LeaveFeedbackRequest:{name:"LeaveFeedbackRequest",type:"LeaveFeedbackRequest",xmlRequired:true}},ID:"message:LeaveFeedbackRequest"}),isc.WSDLMessage.create({fields:{PlaceOfferResponse:{name:"PlaceOfferResponse",type:"PlaceOfferResponse",xmlRequired:true}},ID:"message:PlaceOfferResponse"}),isc.WSDLMessage.create({fields:{PlaceOfferRequest:{name:"PlaceOfferRequest",type:"PlaceOfferRequest",xmlRequired:true}},ID:"message:PlaceOfferRequest"}),isc.WSDLMessage.create({fields:{RelistItemResponse:{name:"RelistItemResponse",type:"RelistItemResponse",xmlRequired:true}},ID:"message:RelistItemResponse"}),isc.WSDLMessage.create({fields:{RelistItemRequest:{name:"RelistItemRequest",type:"RelistItemRequest",xmlRequired:true}},ID:"message:RelistItemRequest"}),isc.WSDLMessage.create({fields:{RemoveFromWatchListResponse:{name:"RemoveFromWatchListResponse",type:"RemoveFromWatchListResponse",xmlRequired:true}},ID:"message:RemoveFromWatchListResponse"}),isc.WSDLMessage.create({fields:{RemoveFromWatchListRequest:{name:"RemoveFromWatchListRequest",type:"RemoveFromWatchListRequest",xmlRequired:true}},ID:"message:RemoveFromWatchListRequest"}),isc.WSDLMessage.create({fields:{RespondToBestOfferResponse:{name:"RespondToBestOfferResponse",type:"RespondToBestOfferResponse",xmlRequired:true}},ID:"message:RespondToBestOfferResponse"}),isc.WSDLMessage.create({fields:{RespondToBestOfferRequest:{name:"RespondToBestOfferRequest",type:"RespondToBestOfferRequest",xmlRequired:true}},ID:"message:RespondToBestOfferRequest"}),isc.WSDLMessage.create({fields:{RespondToFeedbackResponse:{name:"RespondToFeedbackResponse",type:"RespondToFeedbackResponse",xmlRequired:true}},ID:"message:RespondToFeedbackResponse"}),isc.WSDLMessage.create({fields:{RespondToFeedbackRequest:{name:"RespondToFeedbackRequest",type:"RespondToFeedbackRequest",xmlRequired:true}},ID:"message:RespondToFeedbackRequest"}),isc.WSDLMessage.create({fields:{RespondToWantItNowPostResponse:{name:"RespondToWantItNowPostResponse",type:"RespondToWantItNowPostResponse",xmlRequired:true}},ID:"message:RespondToWantItNowPostResponse"}),isc.WSDLMessage.create({fields:{RespondToWantItNowPostRequest:{name:"RespondToWantItNowPostRequest",type:"RespondToWantItNowPostRequest",xmlRequired:true}},ID:"message:RespondToWantItNowPostRequest"}),isc.WSDLMessage.create({fields:{ReviseCheckoutStatusResponse:{name:"ReviseCheckoutStatusResponse",type:"ReviseCheckoutStatusResponse",xmlRequired:true}},ID:"message:ReviseCheckoutStatusResponse"}),isc.WSDLMessage.create({fields:{ReviseCheckoutStatusRequest:{name:"ReviseCheckoutStatusRequest",type:"ReviseCheckoutStatusRequest",xmlRequired:true}},ID:"message:ReviseCheckoutStatusRequest"}),isc.WSDLMessage.create({fields:{ReviseItemResponse:{name:"ReviseItemResponse",type:"ReviseItemResponse",xmlRequired:true}},ID:"message:ReviseItemResponse"}),isc.WSDLMessage.create({fields:{ReviseItemRequest:{name:"ReviseItemRequest",type:"ReviseItemRequest",xmlRequired:true}},ID:"message:ReviseItemRequest"}),isc.WSDLMessage.create({fields:{ReviseLiveAuctionItemResponse:{name:"ReviseLiveAuctionItemResponse",type:"ReviseLiveAuctionItemResponse",xmlRequired:true}},ID:"message:ReviseLiveAuctionItemResponse"}),isc.WSDLMessage.create({fields:{ReviseLiveAuctionItemRequest:{name:"ReviseLiveAuctionItemRequest",type:"ReviseLiveAuctionItemRequest",xmlRequired:true}},ID:"message:ReviseLiveAuctionItemRequest"}),isc.WSDLMessage.create({fields:{ReviseMyMessagesResponse:{name:"ReviseMyMessagesResponse",type:"ReviseMyMessagesResponse",xmlRequired:true}},ID:"message:ReviseMyMessagesResponse"}),isc.WSDLMessage.create({fields:{ReviseMyMessagesRequest:{name:"ReviseMyMessagesRequest",type:"ReviseMyMessagesRequest",xmlRequired:true}},ID:"message:ReviseMyMessagesRequest"}),isc.WSDLMessage.create({fields:{ReviseMyMessagesFoldersResponse:{name:"ReviseMyMessagesFoldersResponse",type:"ReviseMyMessagesFoldersResponse",xmlRequired:true}},ID:"message:ReviseMyMessagesFoldersResponse"}),isc.WSDLMessage.create({fields:{ReviseMyMessagesFoldersRequest:{name:"ReviseMyMessagesFoldersRequest",type:"ReviseMyMessagesFoldersRequest",xmlRequired:true}},ID:"message:ReviseMyMessagesFoldersRequest"}),isc.WSDLMessage.create({fields:{SellerReverseDisputeResponse:{name:"SellerReverseDisputeResponse",type:"SellerReverseDisputeResponse",xmlRequired:true}},ID:"message:SellerReverseDisputeResponse"}),isc.WSDLMessage.create({fields:{SellerReverseDisputeRequest:{name:"SellerReverseDisputeRequest",type:"SellerReverseDisputeRequest",xmlRequired:true}},ID:"message:SellerReverseDisputeRequest"}),isc.WSDLMessage.create({fields:{SendInvoiceResponse:{name:"SendInvoiceResponse",type:"SendInvoiceResponse",xmlRequired:true}},ID:"message:SendInvoiceResponse"}),isc.WSDLMessage.create({fields:{SendInvoiceRequest:{name:"SendInvoiceRequest",type:"SendInvoiceRequest",xmlRequired:true}},ID:"message:SendInvoiceRequest"}),isc.WSDLMessage.create({fields:{SetCartResponse:{name:"SetCartResponse",type:"SetCartResponse",xmlRequired:true}},ID:"message:SetCartResponse"}),isc.WSDLMessage.create({fields:{SetCartRequest:{name:"SetCartRequest",type:"SetCartRequest",xmlRequired:true}},ID:"message:SetCartRequest"}),isc.WSDLMessage.create({fields:{SetMessagePreferencesResponse:{name:"SetMessagePreferencesResponse",type:"SetMessagePreferencesResponse",xmlRequired:true}},ID:"message:SetMessagePreferencesResponse"}),isc.WSDLMessage.create({fields:{SetMessagePreferencesRequest:{name:"SetMessagePreferencesRequest",type:"SetMessagePreferencesRequest",xmlRequired:true}},ID:"message:SetMessagePreferencesRequest"}),isc.WSDLMessage.create({fields:{SetNotificationPreferencesResponse:{name:"SetNotificationPreferencesResponse",type:"SetNotificationPreferencesResponse",xmlRequired:true}},ID:"message:SetNotificationPreferencesResponse"}),isc.WSDLMessage.create({fields:{SetNotificationPreferencesRequest:{name:"SetNotificationPreferencesRequest",type:"SetNotificationPreferencesRequest",xmlRequired:true}},ID:"message:SetNotificationPreferencesRequest"}),isc.WSDLMessage.create({fields:{SetPictureManagerDetailsResponse:{name:"SetPictureManagerDetailsResponse",type:"SetPictureManagerDetailsResponse",xmlRequired:true}},ID:"message:SetPictureManagerDetailsResponse"}),isc.WSDLMessage.create({fields:{SetPictureManagerDetailsRequest:{name:"SetPictureManagerDetailsRequest",type:"SetPictureManagerDetailsRequest",xmlRequired:true}},ID:"message:SetPictureManagerDetailsRequest"}),isc.WSDLMessage.create({fields:{SetPromotionRulesResponse:{name:"SetPromotionRulesResponse",type:"SetPromotionRulesResponse",xmlRequired:true}},ID:"message:SetPromotionRulesResponse"}),isc.WSDLMessage.create({fields:{SetPromotionRulesRequest:{name:"SetPromotionRulesRequest",type:"SetPromotionRulesRequest",xmlRequired:true}},ID:"message:SetPromotionRulesRequest"}),isc.WSDLMessage.create({fields:{SetPromotionalSaleResponse:{name:"SetPromotionalSaleResponse",type:"SetPromotionalSaleResponse",xmlRequired:true}},ID:"message:SetPromotionalSaleResponse"}),isc.WSDLMessage.create({fields:{SetPromotionalSaleRequest:{name:"SetPromotionalSaleRequest",type:"SetPromotionalSaleRequest",xmlRequired:true}},ID:"message:SetPromotionalSaleRequest"}),isc.WSDLMessage.create({fields:{SetPromotionalSaleListingsResponse:{name:"SetPromotionalSaleListingsResponse",type:"SetPromotionalSaleListingsResponse",xmlRequired:true}},ID:"message:SetPromotionalSaleListingsResponse"}),isc.WSDLMessage.create({fields:{SetPromotionalSaleListingsRequest:{name:"SetPromotionalSaleListingsRequest",type:"SetPromotionalSaleListingsRequest",xmlRequired:true}},ID:"message:SetPromotionalSaleListingsRequest"}),isc.WSDLMessage.create({fields:{SetReturnURLResponse:{name:"SetReturnURLResponse",type:"SetReturnURLResponse",xmlRequired:true}},ID:"message:SetReturnURLResponse"}),isc.WSDLMessage.create({fields:{SetReturnURLRequest:{name:"SetReturnURLRequest",type:"SetReturnURLRequest",xmlRequired:true}},ID:"message:SetReturnURLRequest"}),isc.WSDLMessage.create({fields:{SetShippingDiscountProfilesResponse:{name:"SetShippingDiscountProfilesResponse",type:"SetShippingDiscountProfilesResponse",xmlRequired:true}},ID:"message:SetShippingDiscountProfilesResponse"}),isc.WSDLMessage.create({fields:{SetShippingDiscountProfilesRequest:{name:"SetShippingDiscountProfilesRequest",type:"SetShippingDiscountProfilesRequest",xmlRequired:true}},ID:"message:SetShippingDiscountProfilesRequest"}),isc.WSDLMessage.create({fields:{SetStoreResponse:{name:"SetStoreResponse",type:"SetStoreResponse",xmlRequired:true}},ID:"message:SetStoreResponse"}),isc.WSDLMessage.create({fields:{SetStoreRequest:{name:"SetStoreRequest",type:"SetStoreRequest",xmlRequired:true}},ID:"message:SetStoreRequest"}),isc.WSDLMessage.create({fields:{SetStoreCategoriesResponse:{name:"SetStoreCategoriesResponse",type:"SetStoreCategoriesResponse",xmlRequired:true}},ID:"message:SetStoreCategoriesResponse"}),isc.WSDLMessage.create({fields:{SetStoreCategoriesRequest:{name:"SetStoreCategoriesRequest",type:"SetStoreCategoriesRequest",xmlRequired:true}},ID:"message:SetStoreCategoriesRequest"}),isc.WSDLMessage.create({fields:{SetStoreCustomPageResponse:{name:"SetStoreCustomPageResponse",type:"SetStoreCustomPageResponse",xmlRequired:true}},ID:"message:SetStoreCustomPageResponse"}),isc.WSDLMessage.create({fields:{SetStoreCustomPageRequest:{name:"SetStoreCustomPageRequest",type:"SetStoreCustomPageRequest",xmlRequired:true}},ID:"message:SetStoreCustomPageRequest"}),isc.WSDLMessage.create({fields:{SetStorePreferencesResponse:{name:"SetStorePreferencesResponse",type:"SetStorePreferencesResponse",xmlRequired:true}},ID:"message:SetStorePreferencesResponse"}),isc.WSDLMessage.create({fields:{SetStorePreferencesRequest:{name:"SetStorePreferencesRequest",type:"SetStorePreferencesRequest",xmlRequired:true}},ID:"message:SetStorePreferencesRequest"}),isc.WSDLMessage.create({fields:{SetTaxTableResponse:{name:"SetTaxTableResponse",type:"SetTaxTableResponse",xmlRequired:true}},ID:"message:SetTaxTableResponse"}),isc.WSDLMessage.create({fields:{SetTaxTableRequest:{name:"SetTaxTableRequest",type:"SetTaxTableRequest",xmlRequired:true}},ID:"message:SetTaxTableRequest"}),isc.WSDLMessage.create({fields:{SetUserNotesResponse:{name:"SetUserNotesResponse",type:"SetUserNotesResponse",xmlRequired:true}},ID:"message:SetUserNotesResponse"}),isc.WSDLMessage.create({fields:{SetUserNotesRequest:{name:"SetUserNotesRequest",type:"SetUserNotesRequest",xmlRequired:true}},ID:"message:SetUserNotesRequest"}),isc.WSDLMessage.create({fields:{SetUserPreferencesResponse:{name:"SetUserPreferencesResponse",type:"SetUserPreferencesResponse",xmlRequired:true}},ID:"message:SetUserPreferencesResponse"}),isc.WSDLMessage.create({fields:{SetUserPreferencesRequest:{name:"SetUserPreferencesRequest",type:"SetUserPreferencesRequest",xmlRequired:true}},ID:"message:SetUserPreferencesRequest"}),isc.WSDLMessage.create({fields:{ValidateChallengeInputResponse:{name:"ValidateChallengeInputResponse",type:"ValidateChallengeInputResponse",xmlRequired:true}},ID:"message:ValidateChallengeInputResponse"}),isc.WSDLMessage.create({fields:{ValidateChallengeInputRequest:{name:"ValidateChallengeInputRequest",type:"ValidateChallengeInputRequest",xmlRequired:true}},ID:"message:ValidateChallengeInputRequest"}),isc.WSDLMessage.create({fields:{ValidateTestUserRegistrationResponse:{name:"ValidateTestUserRegistrationResponse",type:"ValidateTestUserRegistrationResponse",xmlRequired:true}},ID:"message:ValidateTestUserRegistrationResponse"}),isc.WSDLMessage.create({fields:{ValidateTestUserRegistrationRequest:{name:"ValidateTestUserRegistrationRequest",type:"ValidateTestUserRegistrationRequest",xmlRequired:true}},ID:"message:ValidateTestUserRegistrationRequest"}),isc.WSDLMessage.create({fields:{VeROReportItemsResponse:{name:"VeROReportItemsResponse",type:"VeROReportItemsResponse",xmlRequired:true}},ID:"message:VeROReportItemsResponse"}),isc.WSDLMessage.create({fields:{VeROReportItemsRequest:{name:"VeROReportItemsRequest",type:"VeROReportItemsRequest",xmlRequired:true}},ID:"message:VeROReportItemsRequest"}),isc.WSDLMessage.create({fields:{VerifyAddItemResponse:{name:"VerifyAddItemResponse",type:"VerifyAddItemResponse",xmlRequired:true}},ID:"message:VerifyAddItemResponse"}),isc.WSDLMessage.create({fields:{VerifyAddItemRequest:{name:"VerifyAddItemRequest",type:"VerifyAddItemRequest",xmlRequired:true}},ID:"message:VerifyAddItemRequest"}),isc.WSDLMessage.create({fields:{VerifyAddSecondChanceItemResponse:{name:"VerifyAddSecondChanceItemResponse",type:"VerifyAddSecondChanceItemResponse",xmlRequired:true}},ID:"message:VerifyAddSecondChanceItemResponse"}),isc.WSDLMessage.create({fields:{VerifyAddSecondChanceItemRequest:{name:"VerifyAddSecondChanceItemRequest",type:"VerifyAddSecondChanceItemRequest",xmlRequired:true}},ID:"message:VerifyAddSecondChanceItemRequest"})]})
+isc.EBay=isc.WebService.get("urn:ebay:apis:eBLBaseComponents");isc.A=isc.EBay.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.sandboxEndpoint="https://api.sandbox.ebay.com/wsapi";isc.B.push(isc.A.setAuthToken=function isc_EBay_setAuthToken(_1){this.$459=_1}
+,isc.A.getAuthToken=function isc_EBay_getAuthToken(){if(this.$459)return this.$459;var _1=this.$46a?this.$46b:this.$46c;if(!_1){this.logWarn("getAuthToken() called, but no token is available for the "+(this.$46a?"production":"sandbox")+" environment. Please provide your token(s) by editing"+" /tools/visualBuilder/eBayAuthToken.js");return null}
+return _1}
+,isc.A.setSandboxToken=function isc_EBay_setSandboxToken(_1){this.$46c=_1}
+,isc.A.setProductionToken=function isc_EBay_setProductionToken(_1){this.$46b=_1}
+,isc.A.setUseProduction=function isc_EBay_setUseProduction(_1){this.$46a=_1}
+,isc.A.getWebServiceEndpoint=function isc_EBay_getWebServiceEndpoint(){return this.$46a?this.dataURL:this.sandboxEndpoint}
+);isc.B._maxIndex=isc.C+6;isc.defineClass("EBaySoapDataSource","DataSource");isc.A=isc.EBaySoapDataSource.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.soapVersion=509;isc.B.push(isc.A.transformRequest=function isc_EBaySoapDataSource_transformRequest(_1){_1.headerData=isc.addProperties({RequesterCredentials:{eBayAuthToken:isc.EBay.getAuthToken()}},this.headerData);_1.actionURL=isc.EBay.getWebServiceEndpoint();_1.params={callname:this.wsOperation,siteid:0,version:this.soapVersion};_1.data.version=this.soapVersion;return _1.data}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("EBayCategoriesDS","EBaySoapDataSource");isc.A=isc.EBayCategoriesDS.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.resultTreeClass="CategoryResultTree";isc.A.serviceNamespace="urn:ebay:apis:eBLBaseComponents";isc.A.wsOperation="GetCategories";isc.A.recordXPath="//default:Category";isc.A.defaultCriteria={LevelLimit:1,CategorySiteID:0,ViewAllNodes:true,DetailLevel:"ReturnAll"};isc.B.push(isc.A.transformRequest=function isc_EBayCategoriesDS_transformRequest(_1){this.Super("transformRequest",arguments);if(_1.data.CategoryParent==null)delete _1.data.CategoryParent;var _2=(_1.parentNode?_1.parentNode.CategoryLevel:null);if(_2!=null){_1.data.CategoryLevel=new Number(_2)+1;_1.data.LevelLimit=_1.data.CategoryLevel}
+return _1.data}
+,isc.A.transformResponse=function isc_EBayCategoriesDS_transformResponse(_1,_2,_3){if(_2.data.CategoryLevel){_1.data=_1.data.findAll("CategoryLevel",_2.data.CategoryLevel+"")}
+return _1}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("EBayGetItemDS","EBaySoapDataSource");isc.A=isc.EBayGetItemDS.getPrototype();isc.A.serviceNamespace="urn:ebay:apis:eBLBaseComponents";isc.A.wsOperation="GetItem";isc.A.recordXPath="//default:Item";isc.A.defaultCriteria={DetailLevel:"ReturnAll",ItemTypeFilter:"AllItems"};isc.EBayGetItemDS.create({ID:"getItemDS",fields:[{name:"ItemID"}]});isc.defineClass("EBayCategoryItemListingsDS","EBaySoapDataSource");isc.A=isc.EBayCategoryItemListingsDS.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.serviceNamespace="urn:ebay:apis:eBLBaseComponents";isc.A.wsOperation="GetCategoryListings";isc.A.recordXPath="//default:Item";isc.A.defaultCriteria={DetailLevel:"ReturnAll",ItemTypeFilter:"AllItems"};isc.A.maxPageOverflow=10;isc.B.push(isc.A.transformRequest=function isc_EBayCategoryItemListingsDS_transformRequest(_1){this.Super("transformRequest",arguments);if(_1.startRow!=null&&_1.endRow!=null){var _2=_1.endRow-_1.startRow+1;var _3=Math.ceil((_1.endRow+1)/_2);if((_1.endRow+1)%_2!=0){if((_1.endRow+1)<(_2*3)){_2=_1.endRow+1;_3=1;_1.startRow=0}else{_3=Math.ceil(_3/ 2);_2*=2;_1.startRow=(_3-1)*_2+1}}
+_1.data.Pagination={PageNumber:_3,EntriesPerPage:_2}}
+return _1.data}
+,isc.A.transformResponse=function isc_EBayCategoryItemListingsDS_transformResponse(_1,_2,_3){_1.data=_1.data||[];if(_1.data.length){_1.startRow=_2.startRow;_1.endRow=_2.startRow+_1.data.length-1;_1.totalRows=_3.selectNumber("//default:TotalNumberOfEntries")}
+return _1}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("EBaySearchItemListingsDS","EBayCategoryItemListingsDS");isc.A=isc.EBaySearchItemListingsDS.getPrototype();isc.A.wsOperation="GetSearchResults";isc.defineClass("CategoryResultTree","ResultTree");isc.A=isc.CategoryResultTree.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.isFolder=function isc_CategoryResultTree_isFolder(_1){if(_1.LeafCategory)return _1.LeafCategory=="false";return this.Super("isFolder",arguments)}
+);isc.B._maxIndex=isc.C+1;isc._moduleEnd=isc._EBay_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('EBay module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'EBay'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_EBay.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_EBay.js.gz
new file mode 100755
index 0000000..15c9538
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_EBay.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Forms.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Forms.js
new file mode 100755
index 0000000..5111f2d
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Forms.js
@@ -0,0 +1,3713 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_Forms){isc.module_Forms=1;isc._moduleStart=isc._Forms_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'Forms load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.A=isc.Canvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.applyTableResizePolicy=function isc_c_Canvas_applyTableResizePolicy(_1,_2,_3,_4,_5,_6,_7){var _8=this.logIsDebugEnabled("tablePolicy"),_9=this.logIsInfoEnabled("tablePolicy"),_10=this.logIsDebugEnabled("tablePlacement");var _11=_1.$8j;if(!this.$8k(_1)){_11=_1.$8j=[];var _12=0,_13=0;for(var _14=0;_14<_1.length;_14++){var _15=_1[_14];if(!_15.alwaysTakeSpace&&!_15.visible)continue;var _16=_15.getColSpan(),_17=_15.getRowSpan();if(_17==0||_16==0)continue;if(_16==null)_16=1;if(_17==null)_17=1;var _18=_16;if(_16=="*")_18=1;var _19=_15.getTitleOrientation();if(_15.showTitle&&(_19==isc.Canvas.LEFT||_19==isc.Canvas.RIGHT))
+{_18+=(_15.getTitleColSpan()||1);if(_16!="*")_16+=(_15.getTitleColSpan()||1)}
+var _20=(_15.isStartRow?_15.isStartRow():_15.startRow),_21=(_15.isEndRow?_15.isEndRow():_15.endRow);if(_10){this.logDebug("at: "+["row"+_12,"col"+_13]+", item: "+(_15.name||_15.Class)+(_16=="*"?", colSpan:'*'":"")+", required cols:"+_18+(_17>1?", rowSpan:"+_17:"")+(_20?", startRow:true":"")+(_21?", endRow:true":""),"tablePlacement")}
+var _22=null,_23=null;if(_13>=_4||(_20&&_13!=0)){_12++;_13=0;_15.$8l=true}else{_15.$8l=false}
+if(_12<_11.length){for(;_12<_11.length;_12++){var _24=_11[_12];if(_24==null)break;for(;_13<_4;_13++){if(_24[_13]!=null)continue;for(var j=_13;j<_4;j++){if(_24[j]!=null)break;if((j-_13)+1>=_18){_22=_12;_23=_13;break}}
+if(_23!=null)break}
+if(_23!=null)break;_13=0;_15.$8l=true}}
+if(_23==null){_22=_12;_23=0;_15.$8l=true}
+_13=_23;if(_16=="*")_16=_4-_13;if(!isc.isA.Number(_17))_17=1;for(var r=_12;r<_12+_17;r++){if(!_11[r])_11[r]=[];for(var c=_13;c<_13+_16;c++){_11[r][c]=_14}}
+_15.$8m=[_23,_22,_23+_16,_22+_17];_13+=_16;if(_21)_13=_4;if(_10){this.logDebug("item: "+(_15.name||_15.Class)+" placed at: "+["row"+_22,"col"+_23]+(_15.$8l?", marked startRow ":"")+", rowTable: "+this.echoAll(_11),"tablePlacement")}}
+var _28=0;for(var r=0;r<_11.length;r++){var _29=_11[r];if(_29==null)break;var _30=0,_31=null;for(var c=0;c<_29.length;c++){if(_29[c]==null){_30++;continue}
+if(r>0&&_11[r-1]!=null&&_29[c]==_11[r-1][c])continue;var _14=_29[c],_15=_1[_14];if(_15==_31||_15==null)continue;_15.$8n=_28;_15.$8o=_30;if(_10&&(_30>0||_28>0)){this.logDebug("itemNum:"+_14+" ("+(_15.name||_15.Class)+") at: "+["row"+_22,"col"+_23]+" preceded by "+(_30>0?_30+" empty cells":"")+(_28>0?" "+_28+" empty rows":""),"tablePlacement")}
+_30=_28=0;_31=_15}
+if(_31==null){_28++;_30=0}}}
+if(!_5||!isc.isAn.Array(_5)){if(!isc.isAn.Array(_5)){this.logWarn(" 'colWidths' not an array - Ignoring.","tableResizePolicy")}
+_5=[]}
+_5=_5.duplicate();for(var c=0;c<_5.length;c++){var _32=_5[c];if(isc.isA.String(_32)){if(_32=="*")_5[c]=[0,10000,0,1];else if(_32.contains("*"))_5[c]=[0,10000,0,parseInt(_32)];else if(_32.contains("%"))_5[c]=[0,10000,parseInt(_32),0];else{var _33=parseInt(_32);if(_33==_32){_5[c]=_33}else{this.logWarn("Failed to understand specified colWidth:"+_32);_5[c]=[0,10000,0,1]}}}}
+_1.colWidths=_5;if(!_6){_6=[];for(var r=0;r<_11.length;r++){var _29=_11[r],_34=null,_35=100000,_36=0,_37=0;if(!_29)continue;for(var c=0;c<_29.length;c++){var _15=_1[_29[c]];if(!_15)continue;var _38=_15.getCellHeight(_7);var _17=(_15.$8m[3]-_15.$8m[1]);if(_8)this.logWarn("item at: "+[r,c]+" has height: "+_38+", item is: "+_15);_15.$8p=false;if(isc.isA.Number(_38)){_38=Math.floor(_38/ _17);if(_8)this.logWarn("item: "+_15+" has pixel size: "+_38);if(_34==null||_38>_34){_34=_38}
+if(_38>_35)_35=_38}else if(isc.isA.String(_38)){if(_38.contains("*")){_15.$8p=true;var _39=(_38=="*"?1:parseFloat(_38))
+/ _17; if (_8) this.logWarn("item: " + _15 + " has star size: " + _39); _37 = Math.max(_37, _39); // else if height is a percentage
+ } else { _15.$8p = true; // get the percentage as a number
+ // NOTE: if the item takes up more than one row, split it evenly across
+ // its rows
+ var _40 = parseFloat(_38) /_17;if(_8)this.logWarn("item: "+_15+" has percent size: "+_40);if(_40>_36)_36=_40}
+if(_15.minHeight>_34){_34=_15.minHeight}
+if(_15.minHeight>_35){_35=_15.minHeight}
+if(_15.maxHeight<_35&&_34<_15.maxHeight)
+{_35=_15.maxHeight}}
+if(_36>0||_37>0){if(_34==null)_34=0;_6[r]=[_34,_35,_36,_37]}else{if(_34==null){_34=_1.$8q||22}
+_6[r]=_34}}}}
+_1.rowHeights=_6;if(_9)this.logInfo("\ntotalWidth: "+_2+", totalHeight: "+_3+"\nspecified sizes:\n"+"cols:"+this.echoAll(_1.colWidths)+", rows: "+this.echoAll(_1.rowHeights),"tablePolicy");_1.$8r=_5=isc.Canvas.stretchResizeList(_1.colWidths,_2);_1.$8s=_6=isc.Canvas.stretchResizeList(_1.rowHeights,_3);if(_9)this.logInfo("\nderived sizes:\n"+"cols:"+this.echoAll(_1.$8r)+", rows: "+this.echoAll(_1.$8s),"tablePolicy");for(_14=0;_14<_1.length;_14++){_15=_1[_14];if(!_15.visible)continue;var _41=isc.isA.Canvas(_15),_32=_41?_15.getWidth():_15.width,_42=_41?_15.getHeight():_15.getCellHeight(_7),_19=_15.getTitleOrientation(),_43=_15.$8m,_44=0;if(_15.showTitle){if(_19==isc.Canvas.LEFT){_44=_5[_43[0]]}else{_44=_5[_43[2]]}}
+if(_32=="*"){_32=0;var _45=(_15.showTitle&&_19==isc.Canvas.LEFT)?1:0,_46=(_15.showTitle&&_19==isc.Canvas.RIGHT)?1:0,_47=_43[0]+_45,_48=Math.min(_5.length,_43[2]-_46);for(var c=_47;c<_48;c++){_32+=_5[c]}}
+if(_15.$8p){_42=0;var _20=_43[1],_21=_43[3];for(var c=_20;c<_21;c++){_42+=_6[c]}}
+_15.$8t=[_32,_42];_15.$8u=_44}}
+,isc.A.$8k=function isc_c_Canvas__tableResizePolicyIsValid(_1){if(!_1.$8j)return false;return true}
+,isc.A.invalidateTableResizePolicy=function isc_c_Canvas_invalidateTableResizePolicy(_1){delete _1.$8j;delete _1.$8s;delete _1.$8r}
+,isc.A.stretchResizeList=function isc_c_Canvas_stretchResizeList(_1,_2){var _3=0,_4=0,_5=0,_6=_1.duplicate();for(var i=0;i<_1.length;i++){var _8=_6[i];if(isc.isA.Number(_8)){_8=Math.max(_8,1);_5+=_8;_6[i]=_8}else{var _9=_8[2],_10=_8[3];if(_10==0){_3+=_9}
+_4+=_10}}
+if(_4){var _11=0;if(_3<100){_11=(100-_3)/_4}
+for(var r=0;r<_1.length;r++){var _8=_6[r];if(isc.isA.Number(_8))continue;var _9=_8[2],_10=_8[3],_13=_10*_11;if(_9<_13){_8[2]=_13}
+if(_10>0)_3+=_8[2]}}
+if(_3<=0)return _6;var _14=Math.max(0,_2-_5);for(var r=0;r<_1.length;r++){var _15=Math.max(0,_14/ _3),_8=_6[r];if(isc.isA.Number(_8))continue;var _16=_8[0];if(_16==0)continue;var _17=_8[2],_18=_15*_17;if(_18<_16){_6[r]=_16;_14-=_16;_3-=_17;r=0}}
+for(var r=0;r<_1.length;r++){var _15=Math.max(0,_14/ _3),_8=_6[r];if(isc.isA.Number(_8))continue;var _19=_8[1],_17=_8[2],_18=_15*_17;if(_18>_19){_6[r]=_19;_14-=_19;_3-=_17;r=0}}
+_15=Math.max(0,_14/ _3);for(var r=0;r<_1.length;r++){_8=_6[r];if(isc.isA.Number(_8))continue;var _17=_8[2];_6[r]=Math.floor(_17*_15)}
+return _6}
+);isc.B._maxIndex=isc.C+4;isc.ClassFactory.defineClass("ButtonTable",isc.Canvas);isc.A=isc.ButtonTable.getPrototype();isc.A.cellSpacing=0;isc.A.cellPadding=2;isc.A.cellBorder=0;isc.A.tableStyle="menuTable";isc.A.baseButtonStyle="button";isc.A.backgroundColor="CCCCCC";isc.A=isc.ButtonTable.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setItems=function isc_ButtonTable_setItems(_1){this.items=isc.shallowClone(_1);this.redraw()}
+,isc.A.getInnerHTML=function isc_ButtonTable_getInnerHTML(){var _1=isc.SB.newInstance();_1.append("<TABLE"," CLASS=",this.tableStyle," WIDTH=",this.getWidth()-(this.overflow==isc.Canvas.SCROLL||this.overflow==isc.Canvas.AUTO?this.getScrollbarSize():0)," HEIGHT=",this.getHeight()," CELLSPACING=",this.cellSpacing," CELLPADDING=",this.cellPadding," BORDER=",this.cellBorder,"><TR>");for(var r=0;r<this.items.length;r++){var _3=this.items[r];_1.append("<TR>");if(!isc.isAn.Array(_3))_3=[_3];for(var i=0;i<_3.length;i++){var _5=_3[i];if(_5.action){_1.append(this.getCellButtonHTML(_5.contents,_5.action,_5.style,_5.disabled,_5.selected,_5.align,_5.extraTagStuff))}else{_1.append(this.getCellHTML(_5.contents,_5.style,_5.align,_5.extraTagStuff))}}
+_1.append("</TR>")}
+_1.append("</TABLE>");return _1.toString()}
+,isc.A.showModal=function isc_ButtonTable_showModal(){this.showClickMask(this.getID()+".hide()");this.show();this.unmask();this.bringToFront()}
+,isc.A.hide=function isc_ButtonTable_hide(){this.Super("hide",arguments);this.hideClickMask();this.$8v=null}
+,isc.A.getButtonBaseStyle=function isc_ButtonTable_getButtonBaseStyle(_1){var _2;if(_1)_2=_1.getAttribute("basestyle");if(!_2)_2=this.baseButtonStyle;return _2}
+,isc.A.getMouseOutStyle=function isc_ButtonTable_getMouseOutStyle(_1){var _2=this.getButtonBaseStyle(_1);if(this.buttonIsSelected(_1)){_2+="Selected"}
+if(this.buttonIsDisabled(_1)){_2+="Disabled"}
+return _2}
+,isc.A.buttonIsSelected=function isc_ButtonTable_buttonIsSelected(_1){return _1&&_1.getAttribute("buttonselected")}
+,isc.A.buttonIsDisabled=function isc_ButtonTable_buttonIsDisabled(_1){return _1&&_1.getAttribute("buttondisabled")}
+,isc.A.cellButtonOver=function isc_ButtonTable_cellButtonOver(_1){var _2=this.getButtonBaseStyle(_1);if(this.buttonIsSelected(_1))_2+="Selected";if(_1)_1.className=_2+"Over"}
+,isc.A.cellButtonOut=function isc_ButtonTable_cellButtonOut(_1){if(!_1)return;_1.className=this.getMouseOutStyle(_1)}
+,isc.A.cellButtonDown=function isc_ButtonTable_cellButtonDown(_1){if(_1){var _2=this.getButtonBaseStyle(_1);if(this.buttonIsSelected(_1))_2+="Selected";_2+="Down"
+_1.className=_2}}
+,isc.A.getCellHTML=function isc_ButtonTable_getCellHTML(_1,_2,_3,_4){return isc.StringBuffer.concat("<TD ALIGN=",(_3||isc.Canvas.CENTER)," CLASS=",(_2||this.baseButtonStyle+"Disabled"),(_4||_4),">",_1,"</TD>")}
+,isc.A.getCellButtonHTML=function isc_ButtonTable_getCellButtonHTML(_1,_2,_3,_4,_5,_6,_7){if(_3==null)_3=this.baseButtonStyle;var _8=_3;if(_4)_8+="Selected";if(_5)_8+="Disabled";var _9=isc.Browser.isTouch?"ONTOUCHEND":"ONCLICK";return isc.StringBuffer.concat("<TD ALIGN=",(_6||isc.Canvas.CENTER)," CLASS=",_8," ONMOUSEOVER='",this.getID(),".cellButtonOver(this);return false;' "," ONMOUSEOUT='",this.getID(),".cellButtonOut(this);return true;'"," ONMOUSEDOWN='",this.getID(),".cellButtonDown(this);return true;'"," ONMOUSEUP='",this.getID(),".cellButtonOut(this)';return true;"," basestyle='",_3,"'",(_4?" buttonselected='true'":null),(_5?" buttondisabled='true'":null),(_7?" "+_7:null)," "+_9+"=\""+_2+"\">",_1,"</TD>")}
+);isc.B._maxIndex=isc.C+13;isc.ClassFactory.defineClass("DateChooser","ButtonTable");isc.A=isc.DateChooser.getPrototype();isc.A.defaultWidth=150;isc.A.defaultHeight=171;isc.A.showHeader=true;isc.A.headerHeight=20;isc.A.showYearButtons=true;isc.A.showYearChooser=true;isc.A.showMonthButtons=true;isc.A.showMonthChooser=true;isc.A.skinImgDir="images/common/";isc.A.prevYearIcon="[SKIN]doubleArrow_left.gif";isc.A.prevYearIconWidth=14;isc.A.prevYearIconHeight=7;isc.A.prevMonthIcon="[SKIN]arrow_left.gif";isc.A.prevMonthIconWidth=7;isc.A.prevMonthIconHeight=7;isc.A.nextYearIcon="[SKIN]doubleArrow_right.gif";isc.A.nextYearIconWidth=14;isc.A.nextYearIconHeight=7;isc.A.nextMonthIcon="[SKIN]arrow_right.gif";isc.A.nextMonthIconWidth=7;isc.A.nextMonthIconHeight=7;isc.A.showDoubleYearIcon=true;isc.A.yearMenuStyle="dateChooserYearMenu";isc.A.startYear=1995;isc.A.endYear=2015;isc.A.monthMenuStyle="dateChooserMonthMenu";isc.A.showTodayButton=true;isc.A.showCancelButton=false;isc.A.todayButtonTitle="Today";isc.A.cancelButtonTitle="Cancel";isc.A.disableWeekends=false;isc.A.showWeekends=true;isc.A.firstDayOfWeek=0;isc.A.year=new Date().getFullYear();isc.A.month=new Date().getMonth();isc.A.chosenDate=new Date();isc.A.baseButtonStyle="dateChooserButton";isc.A.alternateStyleSuffix="Dark";isc.A.headerStyle="dateChooserButtonDisabled";isc.A.useBackMask=true;isc.A.canFocus=true;isc.A=isc.DateChooser.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dayNameLength=2;isc.B.push(isc.A.show=function isc_DateChooser_show(){var _1=this.Super("show",arguments);if(this.autoClose){this.showClickMask(this.getID()+".close();",true,this);this.bringToFront()}}
+,isc.A.setData=function isc_DateChooser_setData(_1){if(!isc.isA.Date(_1))_1=new Date();this.year=_1.getFullYear();this.month=_1.getMonth();this.chosenDate=_1;this.markForRedraw()}
+,isc.A.getData=function isc_DateChooser_getData(){return this.chosenDate}
+,isc.A.getInnerHTML=function isc_DateChooser_getInnerHTML(){if(!this.showHeader)this.headerHeight=0;this.baseWeekdayStyle=this.baseWeekdayStyle||this.baseButtonStyle;this.baseWeekendStyle=this.baseWeekendStyle||this.baseWeekdayStyle;var _1=this.baseNavButtonStyle||this.baseButtonStyle;var d=Date.createLogicalDate(this.year,this.month,1),_3=Date.createLogicalDate(this.year,this.month,1),_4=isc.SB.create();if(this.showHeader){_4.append("<TABLE WIDTH=100%"," HEIGHT=",(this.headerHeight+1)," CELLSPACING=",this.cellSpacing," CELLPADDING=",this.cellPadding," BORDER=",this.cellBorder,"><TR>");if(this.showYearButtons){var _5;if(this.showDoubleYearIcon){var _6=this.imgHTML(this.prevMonthIcon,this.prevMonthIconWidth,this.prevMonthIconHeight);_5=_8?" ":"<NOBR>"+_6+_6+"<\/NOBR>"}else{_5=_8?" ":this.imgHTML(this.prevYearIcon,this.prevYearIconWidth,this.prevYearIconHeight)}
+_4.append(this.getCellButtonHTML(_5,this.getID()+".showPrevYear()",_1,null,null,isc.Canvas.CENTER," WIDTH=15"))}
+if(this.showMonthButtons){_4.append(this.getCellButtonHTML(this.imgHTML(this.prevMonthIcon,this.prevMonthIconWidth,this.prevMonthIconHeight),this.getID()+".showPrevMonth()",_1,null,null,isc.Canvas.CENTER," WIDTH=15"))}
+if(this.showMonthChooser){_4.append(this.getCellButtonHTML(_3.getShortMonthName(),this.getID()+".showMonthMenu()",_1,null,null,isc.Canvas.RIGHT," WIDTH=50%"))}else{_4.append(this.getCellHTML(_3.getShortMonthName(),_1+"Disabled"))}
+if(this.showYearChooser){_4.append(this.getCellButtonHTML(_3.getFullYear(),this.getID()+".showYearMenu()",_1,null,null,isc.Canvas.LEFT," WIDTH=50%"))}else{_4.append(this.getCellHTML(_3.getShortFullName(),_1+"Disabled"))}
+if(this.showMonthButtons){var _7=(_3.getFullYear()==9999&&_3.getMonth()==11);_4.append(this.getCellButtonHTML(_7?" ":this.imgHTML(this.nextMonthIcon,this.nextMonthIconWidth,this.nextMonthIconHeight),_7?"":this.getID()+".showNextMonth()",_1,null,_7?true:null,isc.Canvas.CENTER," WIDTH=15"))}
+if(this.showYearButtons){var _8=_3.getFullYear()==9999;var _9;if(this.showDoubleYearIcon){var _6=this.imgHTML(this.nextMonthIcon,this.nextMonthIconWidth,this.nextMonthIconHeight);_9=_8?" ":"<NOBR>"+_6+_6+"<\/NOBR>"}else{_9=_8?" ":this.imgHTML(this.nextYearIcon,this.nextYearIconWidth,this.nextYearIconHeight)}
+_4.append(this.getCellButtonHTML(_9,_8?"":this.getID()+".showNextYear()",_1,null,_8?true:null,isc.Canvas.CENTER," WIDTH=15"))}
+_4.append("<\/TR><\/TABLE>")}
+_4.append("<TABLE WIDTH=100% HEIGHT=",(this.getHeight()-this.headerHeight)," CELLSPACING=0 CELLPADDING=2 BORDER=",this.cellBorder,">");_4.append("<TR HEIGHT=15>");var _10=this.getDayNames();var _11=Date.getWeekendDays();for(var i=0;i<_10.length;i++){var _13=_11.contains((i+this.firstDayOfWeek)%7)
+if(_13&&!this.showWeekends)continue;var _14=(_13&&this.weekendHeaderStyle)?this.weekendHeaderStyle:this.headerStyle;_4.append(this.getCellHTML("<B>"+_10[(i+this.firstDayOfWeek)%7]+"</B>",_14))}
+_4.append("<\/TR>");_3.setDate(_3.getDate()
+-_3.getDay()+this.firstDayOfWeek
+-((_3.getDay()<this.firstDayOfWeek)?7:0));var _15;var _16=false;while(true){if(this.alternateWeekStyles)_16=!_16;_4.append("<TR>");for(var i=0;i<7;i++){var _17=_3.getDay(),_18=_11.contains(_17);if(!(!this.showWeekends&&_18)){var _19=!_18?this.baseWeekdayStyle:this.baseWeekendStyle;if(_16)_19+=this.alternateStyleSuffix;_4.append(this.getDayCellButtonHTML((_15?null:_3),_19))}
+if(this.year==9999&&this.month==11&&_3.getDate()==31){_15=true}else{var _20=_3.getDate();_3.setDate(_3.getDate()+1);if(_20==_3.getDate())_3.setDate(_3.getDate()+1)}}
+_4.append("<\/TR>");if(_3.getMonth()!=this.month||_15)break}
+if(this.showTodayButton||this.showCancelButton){_4.append("<TR");if(this.todayButtonHeight!=null)_4.append(" HEIGHT=",this.todayButtonHeight);_4.append(">");if(this.showTodayButton){var _21=!this.showCancelButton?(this.showWeekends?7:5):(!this.showWeekends?3:4);_4.append(this.getCellButtonHTML(this.todayButtonTitle,this.getID()+".todayClick()",this.baseBottomButtonStyle||this.baseButtonStyle,null,null,isc.Canvas.CENTER," COLSPAN="+_21))}
+if(this.showCancelButton){var _21=!this.showTodayButton?(this.showWeekends?7:5):(!this.showWeekends?2:4);_4.append(this.getCellButtonHTML(this.cancelButtonTitle,this.getID()+".cancelClick()",this.baseBottomButtonStyle||this.baseButtonStyle,null,null,isc.Canvas.CENTER," COLSPAN="+_21))}
+_4.append("<\/TR>")}
+_4.append("<\/TABLE>");return _4.toString()}
+,isc.A.getDayNames=function isc_DateChooser_getDayNames(){if(isc.DateChooser.$8w==null){isc.DateChooser.$8w=[Date.getShortDayNames(1),Date.getShortDayNames(2),Date.getShortDayNames(3)]}
+return isc.DateChooser.$8w[this.dayNameLength-1]}
+,isc.A.getDayCellButtonHTML=function isc_DateChooser_getDayCellButtonHTML(_1,_2,_3){if(_1==null)
+return this.getCellButtonHTML(" ",null,_2,false,false,isc.Canvas.CENTER);var _4=(this.chosenDate&&(Date.compareLogicalDates(_1,this.chosenDate)==0)),_5=(_1.getMonth()!=this.month);var _6=this.getID()+".dateClick("+_1.getFullYear()+","+_1.getMonth()+","+_1.getDate()+");";if(this.disableWeekends&&Date.getWeekendDays().contains(_1.getDay())){_5=true;_6="return false;"}
+return this.getCellButtonHTML(_1.getDate(),_6,_2,_4,_5,isc.Canvas.CENTER)}
+,isc.A.dateIsSelected=function isc_DateChooser_dateIsSelected(_1){return null}
+,isc.A.showPrevMonth=function isc_DateChooser_showPrevMonth(){if(this.month==0){if(this.year>this.startYear){this.month=11;this.year--}else return}else this.month--;this.markForRedraw()}
+,isc.A.showNextMonth=function isc_DateChooser_showNextMonth(){if(this.month==11){if(this.year<this.endYear){this.month=0;this.year++}else return}else this.month++;this.markForRedraw()}
+,isc.A.showMonth=function isc_DateChooser_showMonth(_1){this.month=_1;if(this.monthMenu)this.monthMenu.hide();this.bringToFront();this.markForRedraw()}
+,isc.A.showMonthMenu=function isc_DateChooser_showMonthMenu(){if(!this.monthMenu){var _1=[[]],_2=Date.createLogicalDate(2001,0,1);for(var i=0;i<12;i++){_2.setMonth(i);_1[_1.length-1].add({contents:_2.getShortMonthName(),action:this.getID()+".showMonth("+i+")"});if((i+1)%3==0)_1.add([])}
+this.monthMenu=isc.ButtonTable.newInstance({styleName:this.monthMenuStyle,left:this.getPageLeft()+5,top:this.getPageTop()+this.headerHeight,width:Math.min(this.getWidth(),120),height:Math.min(this.getHeight()-this.headerHeight,80),items:_1,visibility:isc.Canvas.HIDDEN,baseButtonStyle:this.baseButtonStyle});this.monthMenu.setPageLeft(this.getPageLeft()+((this.width-this.monthMenu.width)/2))}else{var _4=this.getPageTop()+this.headerHeight,_5=Math.min(this.getWidth(),120),_6=Math.min(this.getHeight()-this.headerHeight,80),_7=this.getPageLeft()+((this.width-_5)/2)
+this.monthMenu.setPageRect(_7,_4,_5,_6)}
+this.monthMenu.showModal()}
+,isc.A.showPrevYear=function isc_DateChooser_showPrevYear(){if(this.year>this.startYear){this.year--;this.markForRedraw()}}
+,isc.A.showNextYear=function isc_DateChooser_showNextYear(){if(this.year<this.endYear){this.year++;this.markForRedraw()}}
+,isc.A.showYear=function isc_DateChooser_showYear(_1){if(_1<this.startYear||_1>this.endYear)return;this.year=_1;if(this.yearMenu)this.yearMenu.hide();this.markForRedraw()}
+,isc.A.showYearMenu=function isc_DateChooser_showYearMenu(){var _1=(this.endYear-this.startYear),_2=Math.round(_1/ 10)>3?Math.round(_1/ 10):3;var _3=[[]];for(var i=0;i<=(this.endYear-this.startYear);i++){var _5=i+this.startYear;_3[_3.length-1].add({contents:_5,action:this.getID()+".showYear("+_5+")"});if((i+1)%_2==0)_3.add([])}
+if(!this.yearMenu){this.yearMenu=isc.ButtonTable.newInstance({styleName:this.yearMenuStyle,top:this.getPageTop()+this.headerHeight,width:Math.min(this.getWidth(),(40*_2)),height:Math.min(this.getHeight()-this.headerHeight,80),items:_3,visibility:isc.Canvas.HIDDEN,baseButtonStyle:this.baseButtonStyle});this.yearMenu.setPageLeft(this.getPageLeft()+((this.width-this.yearMenu.width)/2))}else{var _6=this.getPageTop()+this.headerHeight,_7=Math.min(this.getWidth(),(40*_2)),_8=Math.min(this.getHeight()-this.headerHeight,80),_9=this.getPageLeft()+((this.width-_7)/2);this.yearMenu.setItems(_3);this.yearMenu.setPageRect(_9,_6,_7,_8)}
+this.yearMenu.showModal()}
+,isc.A.dateClick=function isc_DateChooser_dateClick(_1,_2,_3){var _4=this.chosenDate=Date.createLogicalDate(_1,_2,_3);this.month=_2;this.year=_1;this.dataChanged();if(window.dateClickCallback){if(isc.isA.String(window.dateClickCallback)){window.dateClickCallback=new Function("date",window.dateClickCallback)}
+window.dateClickCallback(_4)}
+if(this.autoHide)this.hide();if(this.autoClose)this.close();if(this.isDrawn())this.markForRedraw();return _4}
+,isc.A.dataChanged=function isc_DateChooser_dataChanged(){}
+,isc.A.cancelClick=function isc_DateChooser_cancelClick(){this.close()}
+,isc.A.todayClick=function isc_DateChooser_todayClick(){this.dateClick(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())}
+,isc.A.close=function isc_DateChooser_close(){this.hideClickMask();if(this.yearMenu&&this.yearMenu.isVisible())this.yearMenu.hide();if(this.monthMenu&&this.monthMenu.isVisible())this.monthMenu.hide();if(this.isDrawn())this.clear()}
+);isc.B._maxIndex=isc.C+20;isc.A=isc.DateChooser;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getSharedDateChooser=function isc_c_DateChooser_getSharedDateChooser(_1){if(!this.$8x){this.$8x=this.create(_1,{_generated:true,autoHide:true,showCancelButton:true});return this.$8x}
+isc.addProperties(this.$8x,_1);return this.$8x}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("Slider",isc.Canvas);isc.A=isc.Slider;isc.A.DOWN="down";isc.A.UP="";isc.A.EVENTNAME="sliderMove";isc.A=isc.Slider.getPrototype();isc.A.title="Set Value";isc.A.length=200;isc.A.vertical=true;isc.A.thumbThickWidth=23;isc.A.thumbThinWidth=17;isc.A.trackWidth=7;isc.A.skinImgDir="images/Slider/";isc.A.thumbSrc="thumb.gif";isc.A.trackSrc="track.gif";isc.A.trackCapSize=6;isc.A.trackImageType=isc.Img.STRETCH;isc.A.showTitle=true;isc.A.showRange=true;isc.A.showValue=true;isc.A.labelWidth=50;isc.A.labelHeight=20;isc.A.labelSpacing=5;isc.A.titleStyle="sliderTitle";isc.A.rangeStyle="sliderRange";isc.A.valueStyle="sliderValue";isc.A.value=1;isc.A.minValue=1;isc.A.maxValue=100;isc.A.roundValues=true;isc.A.roundPrecision=1;isc.A.flipValues=false;isc.A.canFocus=true;isc.A.stepPercent=5;isc.A.animateThumbTime=250;isc.A.animateThumbAcceleration="slowStartandEnd";isc.A.valueChangedOnDrag=true;isc.A.valueChangedOnRelease=true;isc.A.valueChangedOnClick=true;isc.A=isc.Slider.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.hValueLabelWidth=5;isc.A.trackConstructor="StretchImg";isc.A.thumbConstructor="Img";isc.B.push(isc.A.initWidget=function isc_Slider_initWidget(){this.Super("initWidget",arguments);if(!(this.minValue<=this.maxValue)){this.logWarn("Slider specified with minValue:"+this.minValue+", greater than maxValue:"+this.maxValue+" - reversing max and min value.");var _1=this.minValue;this.minValue=this.maxValue;this.maxValue=_1}
+if(this.minValue!=null)this.minValue=this.$85d(this.minValue);if(this.maxValue!=null)this.maxValue=this.$85d(this.maxValue);this.setUpSize();this.$80();if(this.showTitle)this._titleLabel=this.addChild(this.$54());if(this.showRange){this.$50=this.addChild(this.$51("min"));this.$52=this.addChild(this.$51("max"))}
+if(this.showValue){this._valueLabel=this._thumb.addPeer(this.$53());this._valueLabel.sendToBack();this.$81()}
+this.setValue(this.value,!(this.animateThumbInit==true))}
+,isc.A.setUpSize=function isc_Slider_setUpSize(){var _1=this.$pn,_2=this.$po;if(this.vertical){if(_1==null){var _3=Math.max(this.thumbThickWidth,this.trackWidth);if(this.showValue)_3+=this.labelWidth+this.labelSpacing;if(this.showRange)_3+=this.labelWidth+this.labelSpacing;this.logInfo("defaulting width to "+_3+"px");this.setWidth(_3)}
+if(_2==null){var _4=this.length;if(this.showTitle)_4+=this.labelHeight+this.labelSpacing;if(this.showValue&&(this.labelHeight>this.thumbThinWidth)){_4+=(this.labelHeight-this.thumbThinWidth)}
+this.logInfo("no specified height on vertical Slider - defaulting to:"+_4+" based on slider.length of "+this.length);this.setHeight(_4)}else{this.length=this.getHeight();if(this.showTitle)this.length-=(this.labelHeight+this.labelSpacing);if(this.showValue&&(this.labelHeight>this.thumbThinWidth)){this.length-=(this.labelHeight-this.thumbThinWidth)}
+this.logInfo("setting slider track length to:"+this.length+", based on specified height")}}else{if(_2==null){var _4=Math.max(this.thumbThickWidth,this.trackWidth);if(this.showValue)_4+=this.labelHeight+this.labelSpacing;if(this.showRange)_4+=this.labelHeight+this.labelSpacing;this.logInfo("defaulting height to "+_4+"px");this.setHeight(_4)}
+if(_1==null){var _3=(this.length+(this.showTitle?this.labelWidth+this.labelSpacing:0));if(this.showValue&&(this.labelWidth>this.thumbThinWidth)){_3+=(this.labelWidth-this.thumbThinWidth)}
+this.logInfo("no specified width on horizontal Slider - defaulting to:"+_3+" based on slider.length of "+this.length);this.setWidth(_3)}else{this.length=this.getWidth();if(this.showTitle)this.length-=(this.labelWidth+this.labelSpacing);if(this.showValue&&(this.hValueLabelWidth>this.thumbThinWidth)){this.length-=(this.hValueLabelWidth-this.thumbThinWidth)}
+this.logInfo("setting slider track length to:"+this.length+", based on specified width")}}
+this.$8y=this.length-this.thumbThinWidth;if(this.numValues&&this.numValues>1){this.$8z=this.$8y/(this.numValues-1)}}
+,isc.A.resizeBy=function isc_Slider_resizeBy(_1,_2){this.Super("resizeBy",arguments);if(!this._track)return;var _3=this.vertical;if((_3&&_2!=0)||(!_3&&_1!=0)){this.length+=_3?_2:_1;this.$8y=this.length-this.thumbThinWidth;if(_3)this._track.resizeBy(0,_2)
+else this._track.resizeBy(_1,0);if(this.numValues&&this.numValues>1){this.$8z=this.$8y/(this.numValues-1)}
+this.setValue(this.value,true,true);if(this.showRange){if(this.vertical){var _4=this.flipValues?this.$52:this.$50;_4.moveBy(0,_2)}else{var _4=this.flipValues?this.$50:this.$52;_4.moveBy(_1,0)}}}}
+,isc.A.$51=function isc_Slider__createRangeLabel(_1){var _2,_3,_4,_5,_6=(this.vertical?_1=="max":_1=="min");if(this.flipValues)_6=!_6;if(this.vertical){_2=Math.max(this.thumbThickWidth,this.trackWidth)+this.labelSpacing+(this.showValue?this.labelWidth+this.labelSpacing:0);_4=isc.Canvas.LEFT;if(_6){_3=(this.showTitle?this.labelHeight+this.labelSpacing:0);_5=isc.Canvas.TOP}else{_3=(this.showTitle?this.labelHeight+this.labelSpacing:0)+(this.length-this.labelHeight);_5=isc.Canvas.BOTTOM}}else{_3=Math.max(this.thumbThickWidth,this.trackWidth)+this.labelSpacing+(this.showValue?this.labelHeight+this.labelSpacing:0);_5=isc.Canvas.TOP;if(_6){_2=(this.showTitle?this.labelWidth+this.labelSpacing:0);_4=isc.Canvas.LEFT}else{_2=(this.showTitle?this.labelWidth+this.labelSpacing:0)+this.length-this.labelWidth;_4=isc.Canvas.RIGHT}}
+return isc.Label.create({ID:this.getID()+"_"+_1+"Label",autoDraw:false,left:_2,top:_3,width:this.labelWidth,height:this.labelHeight,wrap:false,align:_4,valign:_5,className:this.rangeStyle,contents:(_1=="min"?(this.minValueLabel?this.minValueLabel:this.minValue):(this.maxValueLabel?this.maxValueLabel:this.maxValue))})}
+,isc.A.$54=function isc_Slider__createTitleLabel(){var _1=(this.vertical?isc.Canvas.CENTER:isc.Canvas.RIGHT);return isc.Label.create({ID:this.getID()+"_titleLabel",autoDraw:false,left:0,top:0,width:(this.vertical?this.getWidth():this.labelWidth),height:(this.vertical?this.labelHeight:this.getHeight()),align:_1,className:this.titleStyle,contents:this.title})}
+,isc.A.$53=function isc_Slider__createValueLabel(){var _1,_2,_3,_4,_5;if(this.vertical){_1=this._thumb.getLeft()-this.labelWidth-this.labelSpacing;_2=this._thumb.getTop()+parseInt(this._thumb.getHeight()/2-this.labelHeight/ 2);_4=isc.Canvas.RIGHT;_5=isc.Canvas.CENTER;_3=this.labelWidth}else{_1=this._thumb.getLeft()+parseInt(this._thumb.getWidth()/2-this.labelWidth/ 2);_2=this._thumb.getTop()-this.labelHeight-this.labelSpacing;_4=isc.Canvas.CENTER;_5=isc.Canvas.BOTTOM;_3=this.hValueLabelWidth}
+var _6=isc.Label.create({ID:this.getID()+"_valueLabel",autoDraw:false,left:_1,top:_2,width:_3,height:this.labelHeight,wrap:false,align:_4,className:this.valueStyle,contents:this.value,mouseUp:function(){return false},moveWithMaster:false,observes:[{source:this,message:"valueChanged",action:"this.$81();"}]});if(!this.vertical){isc.addMethods(_6,{draw:function(){var _7=this.visibility
+this.hide();this.Super("draw",arguments);this.parentElement.$81();this.setVisibility(this.prevVis)}})};return _6}
+,isc.A.$80=function isc_Slider__createTrackLayout(){var _1=this.$82(),_2,_3,_4=(this.vertical?this.trackWidth:this.length),_5=(this.vertical?this.length:this.trackWidth),_6,_7,_8=(this.vertical?this.thumbThickWidth:this.thumbThinWidth),_9=(this.vertical?this.thumbThinWidth:this.thumbThickWidth);var _10=this.thumbThickWidth>this.trackWidth;if(_10){if(this.vertical){_6=_1[0];_2=_6+parseInt(this.thumbThickWidth/ 2-this.trackWidth/ 2);_3=_1[1];_7=_1[1]}else{_7=_1[1];_3=_7+parseInt(this.thumbThickWidth/ 2-this.trackWidth/ 2);_2=_1[0];_6=_1[0]}}else{if(this.vertical){_2=_1[0];_6=_2+parseInt(this.trackWidth/ 2-this.thumbThinWidth/ 2);_3=_1[1];_7=_1[1]}else{_3=_1[1];_7=_3+parseInt(this.trackWidth/ 2-this.thumbThinWidth/ 2);_2=_1[0];_6=_1[0]}}
+this.logDebug("calculated coords for track:"+[_2,_3,_4,_5]);this.logDebug("calculated coords for thumb:"+[_6,_7,_8,_9]);this._track=this.addChild(this.$83(_3,_2,_4,_5));this._thumb=this._track.addPeer(this.$84(_7,_6,_8,_9))}
+,isc.A.$82=function isc_Slider__getTrackLayoutPos(){var _1=this.vertical?(this.showValue?this.labelWidth+this.labelSpacing:0):(this.showTitle?this.labelWidth+this.labelSpacing:0),_2=this.vertical?(this.showTitle?this.labelHeight+this.labelSpacing:0):(this.showValue?this.labelHeight+this.labelSpacing:0);if(this.showValue){if(this.vertical&&(this.labelHeight>this.thumbThinWidth))
+_2+=Math.round((this.labelHeight-this.thumbThinWidth)/2);if(this.horizontal&&(this.labelWidth>this.thumbThinWidth))
+_1+=Math.round((this.labelWidth-this.thumbThinWidth)/2)}
+return[_1,_2]}
+,isc.A.$83=function isc_Slider__createTrack(_1,_2,_3,_4){return this.createAutoChild("track",{left:_2,top:_1,width:_3,height:_4,vertical:this.vertical,capSize:this.trackCapSize,src:"[SKIN]"+(this.vertical?"v":"h")+this.trackSrc,skinImgDir:this.skinImgDir,imageType:this.trackImageType,styleName:this[(this.vertical?"v":"h")+"TrackStyle"],overflow:"hidden",showDisabled:true,canFocus:true,tabIndex:-1,cacheImageSizes:false})}
+,isc.A.$84=function isc_Slider__createThumb(_1,_2,_3,_4){var _5
+return this.createAutoChild("thumb",{left:_2,top:_1,width:_3,height:_4,src:"[SKIN]"+(this.vertical?"v":"h")+this.thumbSrc,skinImgDir:this.skinImgDir,overflow:"hidden",showDisabled:true,styleName:this[(this.vertical?"v":"h")+"ThumbStyle"],canDrag:true,dragAppearance:isc.EventHandler.NONE,cursor:isc.Canvas.HAND,dragMove:function(){this.parentElement.$85();return false},$jo:false,dragStart:function(){var _6=isc.EventHandler;_6.dragOffsetX=-1*(this.getPageLeft()-_6.mouseDownEvent.x);_6.dragOffsetY=-1*(this.getPageTop()-_6.mouseDownEvent.y);this.parentElement.$86=true;return _6.STOP_BUBBLING},dragStop:function(){this.parentElement.$86=false;this.setState(isc.Slider.UP);if(this.parentElement.valueChangedOnRelease){this.parentElement.valueChanged(this.parentElement.value)}
+return false},mouseDown:function(){this.setState(isc.Slider.DOWN)},mouseUp:function(){this.setState(isc.Slider.UP);return false},canFocus:true,tabIndex:-1})}
+,isc.A.$85=function isc_Slider__thumbMove(_1){var _2,_3;if(this.vertical){var _4=this._track.getTop(),_5=this.$8y+_4;_2=isc.EventHandler.getY()-isc.EventHandler.dragOffsetY-this.getPageTop();_2=Math.max(_4,Math.min(_5,_2));var _6=_2-_4;if(this.numValues){_6=Math.round(_6/ this.$8z)*this.$8z;_2=Math.round(_6)+_4}
+if(_2==this._thumb.getTop())return;this.logDebug("drag-moving thumb to:"+_2)
+if(_1&&this.animateThumb){this.$87=this._thumb.animateMove(this._thumb.getLeft(),_2,null,this.animateThumbTime,this.animateThumbAcceleration)}else{this._thumb.setTop(_2)}
+_3=(this.flipValues?_6/ this.$8y:1-_6/ this.$8y)}else{var _7=this._track.getLeft(),_5=this.$8y+_7;_2=isc.EventHandler.getX()-isc.EventHandler.dragOffsetX-this.getPageLeft();_2=Math.max(_7,Math.min(_5,_2));var _6=_2-_7;if(this.numValues){_6=Math.round(_6/ this.$8z)*this.$8z;_2=Math.round(_6)+_7}
+if(_2==this._thumb.getLeft())return;this.logDebug("drag-moving thumb to:"+_2)
+if(_1&&this.animateThumb){this.$87=this._thumb.animateMove(_2,this._thumb.getTop(),null,this.animateThumbTime,this.animateThumbAcceleration)}else{this._thumb.setLeft(_2)}
+_3=(this.flipValues?1-_6/ this.$8y:_6/ this.$8y)}
+if(this.maxValue==this.minValue){this.value=this.minValue}else{var _8=_3*(this.maxValue-this.minValue)+this.minValue
+_8=this.$85d(_8);this.value=_8}
+this.logDebug("slider value from drag-move:"+this.value);if(this.valueChangedOnDrag||!this.$86){this.valueChanged(this.value)}
+if(this.sliderTarget)isc.EventHandler.handleEvent(this.sliderTarget,isc.Slider.EVENTNAME,this)}
+,isc.A.$85d=function isc_Slider__getRoundedValue(_1){if(this.roundValues)_1=Math.round(_1);else if(this.roundPrecision!=null){var _2=Math.pow(10,this.roundPrecision);_1=(Math.round(_1*_2))/_2}
+return _1}
+,isc.A.$81=function isc_Slider__updateValueLabel(){var _1=this._valueLabel;if(_1==null)return;_1.setContents(this.getValue());var _2=this._thumb;if(this.vertical){_1.setTop(parseInt((_2.getTop()+_2.getHeight()/2)-_1.getHeight()/2))}else{if(_1.isDrawn())_1.redraw("sizing label");var _3=_1.getVisibleWidth(),_4=parseInt((_2.getLeft()+_2.getWidth()/2)-_3/ 2);if(_4+_3>this.getWidth()){_4=this.getWidth()-_3}
+if(_4<0)_4=0;_1.setLeft(_4)}}
+,isc.A.mouseUp=function isc_Slider_mouseUp(){isc.EventHandler.dragOffsetX=isc.EventHandler.dragOffsetY=Math.floor(this.thumbThinWidth/ 2);if(this.valueChangedOnClick)this.$85(true)}
+,isc.A.setValue=function isc_Slider_setValue(_1,_2,_3){var _4,_5;if(!isc.isA.Number(_1))return;_1=Math.max(this.minValue,(Math.min(_1,this.maxValue)));_1=this.$85d(_1);this.value=_1;if(this.minValue==this.maxValue)_4=1;else _4=(this.value-this.minValue)/(this.maxValue-this.minValue);_5=_4*this.$8y;var _6;if(this.vertical){_6=this._track.getTop()+parseInt(this.flipValues?_5:this.$8y-_5);if(this.animateThumb&&!_2){this.$87=this._thumb.animateMove(this._thumb.getLeft(),_6,null,this.animateThumbTime,this.animateThumbAcceleration)}else{this._thumb.setTop(_6)}}else{_6=this._track.getLeft()+parseInt(this.flipValues?this.$8y-_5:_5);if(this.animateThumb&&!_2){this.$87=this._thumb.animateMove(_6,this._thumb.getTop(),null,this.animateThumbTime,this.animateThumbAcceleration)}else{this._thumb.setLeft(_6)}}
+if(!_3)this.valueChanged(this.value);if(this.sliderTarget)isc.EventHandler.handleEvent(this.sliderTarget,isc.Slider.EVENTNAME,this)}
+,isc.A.getValue=function isc_Slider_getValue(){return this.value}
+,isc.A.valueChanged=function isc_Slider_valueChanged(_1){}
+,isc.A.valueIsChanging=function isc_Slider_valueIsChanging(){return(this.$86==true)}
+,isc.A.handleKeyPress=function isc_Slider_handleKeyPress(_1,_2){var _3=_1.keyName;if(_3=="Home"){this.setValue(this.minValue,true);return false}
+if(_3=="End"){this.setValue(this.maxValue,true);return false}
+var _4=(this.maxValue-this.minValue)*this.stepPercent/ 100;if(this.roundValues&&_4<1)_4=1;if(this.vertical){if((this.flipValues&&_3=="Arrow_Up")||(!this.flipValues&&_3=="Arrow_Down"))
+{this.setValue(this.getValue()-_4,true);return false}else if((this.flipValues&&_3=="Arrow_Down")||(!this.flipValues&&_3=="Arrow_Up"))
+{this.setValue(this.getValue()+_4,true);return false}}else{if((this.flipValues&&_3=="Arrow_Left")||(!this.flipValues&&_3=="Arrow_Right"))
+{this.setValue(this.getValue()+_4,true)
+return false}else if((this.flipValues&&_3=="Arrow_Right")||(!this.flipValues&&_3=="Arrow_Left"))
+{this.setValue(this.getValue()-_4,true)
+return false}}
+if(this.keyPress){this.convertToMethod("keyPress");return this.keyPress(_1,_2)}}
+,isc.A.setCanFocus=function isc_Slider_setCanFocus(_1){this.Super("canFocus",arguments);if(this._thumb!=null)this._thumb.setCanFocus(_1);if(this._track!=null)this._track.setCanFocus(_1)}
+,isc.A.setMinValue=function isc_Slider_setMinValue(_1){_1=this.$85d(_1);this.minValue=_1;if(this.$50)this.$50.setContents(_1);if(this.getValue()<this.minValue)this.setValue(this.minValue)}
+,isc.A.setMaxValue=function isc_Slider_setMaxValue(_1){_1=this.$85d(_1);this.maxValue=_1;if(this.$52)this.$52.setContents(_1);if(this.getValue()>this.maxValue)this.setValue(this.maxValue)}
+,isc.A.setNumValues=function isc_Slider_setNumValues(_1){this.numValues=_1;this.$8z=this.$8y/(this.numValues-1);this.setValue(this.minValue)}
+,isc.A.setTitle=function isc_Slider_setTitle(_1){this._titleLabel.setContents(_1)}
+,isc.A.setLength=function isc_Slider_setLength(_1){this.length=_1;this.setUpSize()}
+,isc.A.$74i=function isc_Slider__refreshChildren(){this._titleLabel.destroy();this._track.destroy();this._thumb.destroy();this._valueLabel.destroy();this.$50.destroy();this.$52.destroy();this.initWidget()}
+,isc.A.setVertical=function isc_Slider_setVertical(_1){this.vertical=_1;this.$74i()}
+,isc.A.setThumbThickWidth=function isc_Slider_setThumbThickWidth(_1){this.thumbThickWidth=_1;this.$74i()}
+,isc.A.setThumbThinWidth=function isc_Slider_setThumbThinWidth(_1){this.thumbThinWidth=_1;this.$74i()}
+,isc.A.setTrackWidth=function isc_Slider_setTrackWidth(_1){this.trackWidth=_1;this.$74i()}
+,isc.A.setThumbSrc=function isc_Slider_setThumbSrc(_1){this.thumbSrc=_1;this.$74i()}
+,isc.A.setTrackSrc=function isc_Slider_setTrackSrc(_1){this.trackSrc=_1;this.$74i()}
+,isc.A.setTrackCapSize=function isc_Slider_setTrackCapSize(_1){this.trackCapSize=_1;this.$74i()}
+,isc.A.setTrackImageType=function isc_Slider_setTrackImageType(_1){this.trackImageType=_1;this.$74i()}
+,isc.A.setShowTitle=function isc_Slider_setShowTitle(_1){this.showTitle=_1;this.$74i()}
+,isc.A.setShowRange=function isc_Slider_setShowRange(_1){this.showRange=_1;this.$74i()}
+,isc.A.setShowValue=function isc_Slider_setShowValue(_1){this.showValue=_1;this.$74i()}
+,isc.A.setLabelWidth=function isc_Slider_setLabelWidth(_1){this.labelWidth=_1;this.$74i()}
+,isc.A.setLabelHeight=function isc_Slider_setLabelHeight(_1){this.labelHeight=_1;this.$74i()}
+,isc.A.setLabelSpacing=function isc_Slider_setLabelSpacing(_1){this.labelSpacing=_1;this.$74i()}
+,isc.A.setMaxValueLabel=function isc_Slider_setMaxValueLabel(_1){this.$52.setContents(_1)}
+,isc.A.setRoundValues=function isc_Slider_setRoundValues(_1){this.roundValues=_1;this.$74i()}
+,isc.A.setRoundPrecision=function isc_Slider_setRoundPrecision(_1){this.roundPrecision=_1;this.$74i()}
+,isc.A.setFlipValues=function isc_Slider_setFlipValues(_1){this.flipValues=_1;this.$74i()}
+,isc.A.setStepPercent=function isc_Slider_setStepPercent(_1){this.stepPercent=_1;this.$74i()}
+);isc.B._maxIndex=isc.C+45;isc.Slider.registerStringMethods({valueChanged:"value"})
+if(isc.ListGrid){isc.ClassFactory.defineClass("ScrollingMenu","ListGrid");isc.A=isc.ScrollingMenu.getPrototype();isc.A.useBackMask=true;isc.A.canFocus=true;isc.A.showHeader=false;isc.A.showEdges=false;isc.A.autoDraw=false;isc.A.className="scrollingMenu";isc.A.bodyStyleName="scrollingMenuBody";isc.A.selectionType="single";isc.A.showRollOver=false;isc.A.leaveScrollbarGap=false;isc.A.generateClickOnSpace=false;isc.A.generateDoubleClickOnEnter=false;isc.A.generateClickOnEnter=true;isc.A.showModal=true;isc.A.arrowKeyAction="focus";isc.A.enableSelectOnRowOver=true;isc.A.filterOnKeypress=true;isc.ScrollingMenu.changeDefaults("filterEditorDefaults",{backgroundColor:"white",editorKeyPress:function(_1,_2,_3){if(_2=="Arrow_Down"){this.sourceWidget.$318(1);return false}
+if(_2=="Arrow_Up"){this.sourceWidget.$318(-1);return false}
+if(_2=="Enter"){this.sourceWidget.$240();return}
+return this.Super("editorKeyPress",arguments)}});isc.A=isc.ScrollingMenu.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.hiliteOnNativeRowFocus=false;isc.A.$859=true;isc.B.push(isc.A.show=function isc_ScrollingMenu_show(){if(this.showModal)this.showClickMask({target:this,methodName:"cancel"},false,[this]);this.Super("show",arguments);if(this.showModal)this.body.focus()}
+,isc.A.recordClick=function isc_ScrollingMenu_recordClick(_1,_2,_3,_4,_5,_6,_7){this.hide();if(_2!=null)this.itemClick(_2)}
+,isc.A.itemClick=function isc_ScrollingMenu_itemClick(_1){}
+,isc.A.rowOver=function isc_ScrollingMenu_rowOver(_1,_2,_3){if(this.enableSelectOnRowOver)this.selection.selectOnRowOver(_1)}
+,isc.A.createSelectionModel=function isc_ScrollingMenu_createSelectionModel(_1,_2,_3,_4,_5){var _6=this.invokeSuper("ScrollingMenu","createSelectionModel",_1,_2,_3,_4,_5);this.selection.addProperties({selectOnRowOver:function(_7){this.selectSingle(_7);this.selectionFromMouse=true},setSelected:function(_7,_8){this.selectionFromMouse=false;return this.Super("setSelected",arguments)}});return _6}
+,isc.A.$88=function isc_ScrollingMenu__hiliteRecord(_1){this.Super("$88",arguments);this.selection.selectSingle(this.getRecord(_1))}
+,isc.A.bodyKeyPress=function isc_ScrollingMenu_bodyKeyPress(_1,_2){var _3=_1.keyName;if(_3==this.$10j){var _4=this.selection;if(_4&&_4.selectionFromMouse){this.cancel();return false}}
+if(_3=="Escape"){this.cancel();return false}
+return this.Super("bodyKeyPress",arguments)}
+,isc.A.cancel=function isc_ScrollingMenu_cancel(){this.hide()}
+,isc.A.hide=function isc_ScrollingMenu_hide(){this.hideClickMask();return this.Super("hide",arguments)}
+,isc.A.dataChanged=function isc_ScrollingMenu_dataChanged(){var _1=this.Super("dataChanged",arguments);if(!this.$859)return;if(this.data&&this.data.getLength()>0&&this.selection&&!this.selection.anySelected()&&(isc.isA.ResultSet==null||!isc.isA.ResultSet(this.data)||this.data.rowIsLoaded(0)))
+{this.selection.selectItem(0)}
+return _1}
+);isc.B._maxIndex=isc.C+10}
+isc.ClassFactory.defineClass("DynamicForm","Canvas","DataBoundComponent");isc.addGlobal("FormLayout",isc.DynamicForm);isc.A=isc.DynamicForm;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.GET="GET";isc.A.POST="POST";isc.A.NORMAL="normal";isc.A.MULTIPART="multipart";isc.A.NORMAL_ENCODING="application/x-www-form-urlencoded";isc.A.MULTIPART_ENCODING="multipart/form-data";isc.A.$89="$89";isc.A.$9a="$9a";isc.A.$9b="$9b";isc.A.$9c="$9d";isc.A.$9e="$9f";isc.A.$9g="$9g";isc.B.push(isc.A.buildOperatorIndex=function isc_c_DynamicForm_buildOperatorIndex(){if(isc.DataSource==null)return;var _1=isc.getValues(isc.DataSource.getSearchOperators());_1=_1.sortByProperties(["symbol"],[false],[function(_4,_5,_6){var _2=_4[_5],_3=isc.isA.String(_2)?_2.length:0;return _3}]);this.$85l=_1.makeIndex("symbol",true)}
+,isc.A.getOperatorIndex=function isc_c_DynamicForm_getOperatorIndex(){return this.$85l}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.DynamicForm.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.flattenItems=false;isc.A.numCols=2;isc.A.fixedColWidths=false;isc.A.fixedRowHeights=false;isc.A.colWidths=null;isc.A.minColWidth=20;isc.A.cellSpacing=0;isc.A.cellPadding=2;isc.A.cellBorder=0;isc.A.defaultRowHeight=22;isc.A.sectionVisibilityMode="multiple";isc.A.allowContentAndChildren=true;isc.A.separateContentInsertion=true;isc.A.$r9=true;isc.A.fieldIdProperty="name";isc.A.titleField="title";isc.A.showDetailFields=true;isc.A.longTextEditorThreshold=255;isc.A.longTextEditorType="textArea";isc.A.titlePrefix="";isc.A.rightTitlePrefix=": ";isc.A.titleSuffix=" :";isc.A.rightTitleSuffix="";isc.A.titleWidth=100;isc.A.showInlineErrors=true;isc.A.showErrorIcons=true;isc.A.showErrorText=false;isc.A.showErrorStyle=true;isc.A.errorOrientation="left";isc.A.errorItemDefaults={type:"blurb",wrap:true,showIf:function(){return!this.form.showInlineErrors&&this.form.hasErrors()},defaultDynamicValue:function(_1,_2,_3){return _2.getErrorsHTML(_2.getErrors())}};isc.A.errorItemCellStyle="formCellError";isc.A.errorsPreamble="The following errors were found.";isc.A.hiliteRequiredFields=true;isc.A.requiredTitlePrefix="<b>";isc.A.requiredRightTitlePrefix="<b>: ";isc.A.requiredTitleSuffix=" :</b>";isc.A.requiredRightTitleSuffix="</b>";isc.A.canHover=false;isc.A.itemHoverDelay=500;isc.A.itemHoverStyle="formHover";isc.A.overflow=isc.Canvas.VISIBLE;isc.A.defaultHeight=20;isc.A.validateOnChange=false;isc.A.implicitSaveDelay=2000;isc.A.synchronousValidation=false;isc.A.autoFocus=false;isc.A.selectOnFocus=false;isc.A.canFocus=true;isc.A._useNativeTabIndex=false;isc.A._useFocusProxy=false;isc.A.uniqueMatch=true;isc.A.browserSpellCheck=true;isc.A.cancelParamName="org.apache.struts.taglib.html.CANCEL";isc.A.cancelParamValue="cancel";isc.A.action="#";isc.A.method=isc.DynamicForm.POST;isc.A.encoding=isc.DynamicForm.NORMAL_ENCODING;isc.A.writeFormTag=true;isc.A.autoSendTargetFieldName="__target__";isc.A.useNativeSelectItems=false;isc.A.hideUsingDisplayNone=isc.Browser.isMoz&&isc.Browser.isMac;isc.A.operator="and";isc.A.nestedEditorType="NestedEditorItem";isc.A.nestedListEditorType="NestedListEditorItem";isc.A.canDropItems=false;isc.A.canAddColumns=true;isc.B.push(isc.A.hasInherentHeight=function isc_DynamicForm_hasInherentHeight(){if(this.inherentHeight!=null)return this.inherentHeight;return(this.overflow==isc.Canvas.VISIBLE||this.overflow==isc.Canvas.CLIP_H)}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.DynamicForm.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$9i="upload";isc.A.$9j="mutex";isc.A.$9k=["name","editorType","readOnlyEditorType","type","valueMap","defaultValue","showTitle","left","top","width","height"];isc.A.dataArity="single";isc.A.$refPropName="__ref";isc.A.$70l="/";isc.A.$9l="form";isc.A.$9m="$9n";isc.A.$9o="$9p";isc.A.$9q="absolute";isc.A.$9r="showIf";isc.A.$9s="item,value,form,values";isc.A.$9t="</FORM>";isc.A.$9u="tablePolicy";isc.A.$9v="<COL WIDTH=";isc.A.$9w=(isc.Browser.isIE?"<TR STYLE='position:absolute'>":"<TR>");isc.A.$9y=(isc.Browser.isSafari?"</div></TD>":"</TD>");isc.A.$5u="<TD>";isc.A.$5v="</TD>";isc.A.$5s="<TR>";isc.A.$5t="</TR>";isc.A.$9z="<br>";isc.A.$90="</TABLE></FORM>";isc.A.$91=["<INPUT TYPE=HIDDEN NAME='",,"' VALUE='",,"'>"];isc.A.titleHeight=15;isc.A.$92="height:";isc.A.$93="width:";isc.A.$11j="max-width:";isc.A.$94="max-height:";isc.A.$92="height:";isc.A.$95="<NOBR>";isc.A.$96="</td></tr></TABLE>";isc.A.$97="</DIV>";isc.A.$98="</TD>";isc.A.$99=["<TD ",," CLASS='",,"' ALIGN='",,"' VALIGN='",,"'",,,">"];isc.A.$10a=["<DIV style='overflow:hidden;text-overflow:ellipsis;",,,,"'>"];isc.A.$63z="$428";isc.A.$10c=["<FORM ","ID","=",,," METHOD=",," ACTION='",,"' ENCTYPE=",,,,," ONSUBMIT='return ",,".$10d()' ONRESET='",,".resetValues(); return false;'",(isc.Browser.isSafari?" STYLE='display:inline;'":null)," STYLE='margin-bottom:0px;'>"];isc.A.$10e=" STYLE='position:absolute;left:0px;top:0px;'";isc.A.$10f=" TARGET='";isc.A.$10g=["<TABLE role='presentation' ID='",,"' ","WIDTH=",," CELLSPACING=",," CELLPADDING=",," BORDER=",,(isc.Browser.isMoz?"><TBODY>":">")];isc.A.$10h="table";isc.A.formSubmitFailedWarning="Form was unable to be submitted. The most likely cause for this is an "+"invalid value in an upload field.";isc.A.$10i="requiredIf";isc.A.$842="required";isc.A.$10j="Enter";isc.A.$118={"Arrow_Up":true,"Arrow_Down":true,"Arrow_Right":true,"Arrow_Left":true,"Page_Up":true,"Page_Down":true,"Home":true,"End":true,"Backspace":true,"Delete":true,"Tab":true};isc.B.push(isc.A.initWidget=function isc_DynamicForm_initWidget(){if(isc.$cv)arguments.$cw=this;if(!isc.DynamicForm.$85l)isc.DynamicForm.buildOperatorIndex();this.setColWidths(this.colWidths);this.Super("initWidget",arguments);if(this.showComplexFieldsRecursively)this.showComplexFields=true;if(this.fields&&this.items==null)this.items=this.fields;if(this.defaultItems!=null&&this.items==null){this.items=[];for(var i=0;i<this.defaultItems.length;i++){this.items[i]=isc.addProperties({},this.defaultItems[i])}}
+if(this.values==null)this.values={};if(this.action!=isc.DynamicForm.getPrototype().action&&this.action!=null&&!isc.isA.emptyString(this.action))
+{this.setAction(this.action)}
+if(this.valuesManager!=null){if(isc.isA.String(this.valuesManager))this.valuesManager=window[this.valuesManager];if(this.dataSource==null&&this.valuesManager.dataSource!=null){this.dataSource=this.valuesManager.dataSource}}
+if(!this.dataSource){var _2=this.items||[];for(var i=0;i<_2.length;i++){if(_2[i]==null)continue;if(this.dataPath||_2[i].dataPath){this.$834=isc.shallowClone(_2);break}}}
+this.setItems(this.items?this.items:[],true);if(this.isDisabled()){this.setDisabled(true)}
+this.setErrors(this.errors?this.errors:{});this.setValues(this.values,true);if(this.selectionComponent!=null)this.setSelectionComponent(this.selectionComponent,true)}
+,isc.A.$10k=function isc_DynamicForm__destroyItems(_1){if(!_1)return;if(!isc.isA.FormItem(_1[0]))return;_1.map("destroy");this.destroyOrphanedItems("containing form destroyed")}
+,isc.A.destroy=function isc_DynamicForm_destroy(){if(this.valuesManager&&this.valuesManager.removeMember){this.valuesManager.removeMember(this)}
+this.$10k(this.items);this.Super("destroy",arguments)}
+,isc.A.setHandleDisabled=function isc_DynamicForm_setHandleDisabled(_1){if(this.isDrawn()){if(this.redrawOnDisable)this.markForRedraw("setDisabled");this.disableKeyboardEvents(_1,null,true)}
+var _2=this.getItems();for(var i=0;i<_2.length;i++){_2[i].updateDisabled()}}
+,isc.A.disableKeyboardEvents=function isc_DynamicForm_disableKeyboardEvents(_1,_2,_3){this.Super("disableKeyboardEvents",arguments);if(!_3){if(_1){this.$551=this.getTabIndex();this.$vk(-1)}else{this.$vk(this.$551)}}}
+,isc.A.applyFieldDefaults=function isc_DynamicForm_applyFieldDefaults(_1){if(_1==null)return;for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3==null)return}}
+,isc.A.getEditorType=function isc_DynamicForm_getEditorType(_1){return this.getClass().getEditorType(_1,this)}
+,isc.A.setItems=function isc_DynamicForm_setItems(_1,_2){if(_1!=null){for(var i=0;i<_1.length;i++){var _4=false;if(_1[i]==null){this.logWarn("Encountered empty entry in items array - removing this entry.")
+_4=true}
+if(isc.isA.Canvas(_1[i])){this.logWarn("Encountered a Canvas instance:"+_1[i]+" in the items "+"array - the DynamicForm items array should contain only FormItem "+"definitions. Removing this entry.");_4=true}
+if(_4){_1.removeAt(i);i-=1}}}
+_1=this.bindToDataSource(_1);if(!_1)_1=[];else if(_1==this.items)_1=_1.duplicate();if(this.items!=null&&this.items.length>0&&!_2)this.removeItems(this.items);this.$10l(_1,null,true,_2)}
+,isc.A.setFields=function isc_DynamicForm_setFields(_1){this.setItems(_1)}
+,isc.A.getFields=function isc_DynamicForm_getFields(){return this.items}
+,isc.A.getItems=function isc_DynamicForm_getItems(){return this.items}
+,isc.A.visibleAtPoint=function isc_DynamicForm_visibleAtPoint(_1,_2,_3,_4){if(this.invokeSuper(isc.DynamicForm,"visibleAtPoint",_1,_2,_3,_4))
+return true;var _5=this.items||[],_6={},_7=_5.indexOf(this.getFocusSubItem());for(var i=-1;i<_5.length;i++){var _9=i;if(i==-1){_9=_7}else if(_9==_7)continue;if(_9==-1)continue;var _10=_5[_9],_11=_10.containerWidget;if(_11==this||!_10.isDrawn()||!_10.isVisible())continue;var _12=_11.getID();if(_6[_12]==null){_6[_12]=_11.visibleAtPoint(_1,_2,_3,_4)}
+if(!_6[_12])continue;var _13=_10.getPageLeft(),_14=_10.getPageTop();if(_13<=_1&&(_13+_10.getVisibleWidth())>=_1&&_14<=_2&&(_14+_10.getVisibleHeight())>=_2){return true}}
+return false}
+,isc.A.addItems=function isc_DynamicForm_addItems(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];if(this.dataSource){var _3=isc.DS.get(this.dataSource);for(var i=0;i<_1.length;i++){_1[i]=this.combineFieldData(_1[i]);var _5=_1[i].name;if(_5&&this.getItem(_5)){this.removeItem(_5)}}}
+this.addFieldValidators(_1);if(_2==null||_2>this.items.length)_2=this.items.length;this.$10l(_1,_2)}
+,isc.A.$10l=function isc_DynamicForm__addItems(_1,_2,_3,_4){var _5=this.isDrawn(),_6=_5?this.getTabIndexSpan():null;this.applyFieldDefaults(_1);var _7=[];var _8=false,_9=false,_10=(this.sectionVisibilityMode==this.$9j);for(var _11=0;_11<_1.length;_11++){var _12=_1[_11];if(!_12){_1.removeItem(_11);_11--;continue}
+var _13=isc.DynamicForm.canEditField(_12,this);if(!_13&&_12.readOnlyEditorProperties){_12=isc.addProperties({},_12,_12.readOnlyEditorProperties)}else if(_12.editorProperties){_12=isc.addProperties({},_12,_12.editorProperties)}
+var _14=this.getEditorType(_12);_1[_11]=_12=this.createItem(_12,_14);if(_14==this.$9i)_8=true;if(isc.FileItem&&isc.isA.FileItem(_12)&&_9){this.logWarn("Attempting to creating a form with multiple FileItems. This is "+"not currently supported - only the first file type field value will "+"be committed on submission of this form.")}
+if(isc.isA.SectionItem(_12)){_7.add(_12);if(_12.sectionExpanded&&_10)
+this.$6l=_12}}
+if(_3)this.items=_1
+else this.items.addListAt(_1,_2);if(!_4){this.setItemValues(this.getValues(),false,true,_1)}
+if(_8)this.encoding=isc.DynamicForm.MULTIPART_ENCODING;for(var i=0;i<_7.length;i++){var _16=_7[i],_17=_16.sectionExpanded;if(_17&&(!_10||(this.$6l==_16))){_16.expandSection()}else{_16.collapseSection()}}
+this.$10m=true;var _18=this.getTabIndex();if(_5&&_18!=-1){this.$10o();var _19=this.getTabIndexSpan();if(_19>_6){var _20=this.$vy();if(_20){var _21=_20.getTabIndex();if(_21<(_18+_19)){_20.$v3((_18+_19)-_21)}}}}
+this.markForRedraw("Form items added")}
+,isc.A.copyKnownProperties=function isc_DynamicForm_copyKnownProperties(_1,_2,_3){var _4;for(var i=0;i<_3.length;i++){var _6=_3[i],_7=_2[_6];if(_7!==_4){_1[_6]=_7;delete _2[_6]}}}
+,isc.A.createItem=function isc_DynamicForm_createItem(_1,_2){if(_1.form!=null&&!(_1.form==this.getID()||_1.form!=this)){this.logWarn("Unsupported 'form' property ["+_1.form+"] set on item:"+_1+". Ignoring.")}
+if(_1.destroyed&&isc.isA.FormItem(_1)){this.logWarn("destroyed FormItem passed to setItems()/addItem(): FormItems cannot be "+"re-used with different DynamicForms")}
+var _3=isc.FormItemFactory.getItemClassName(_1,_2,this),_4=isc.FormItemFactory.getItemClass(_3);if(!_4){this.logWarn("Problem initializing item: "+isc.Log.echo(_1)+" - derived FormItem class is: "+_3+". Please make sure the relevant module is loaded");return}
+var _5=_1;_1=_4.createRaw();_1.form=_1.containerWidget=_1.eventParent=this;var _6=null;if(_1["validators"]!=null&&_5["validators"]!=null){_6=_1.validators}
+if(isc.Browser.isIE&&this.canAlterItems){this.copyKnownProperties(_1,_5,this.$9k)}
+if(this.autoChildItems){if(_1.ID==null)_1.ID=null;this.$d3(_4.Class,_1,_5)}else{_1.completeCreation(_5);if(_6!=null){if(!_1.validators){_1.validators=_6}else{if(!isc.isAn.Array(_1.validators)){_1.validators=[_1.validators]}
+if(_1.validators.$69){_1.validators=_1.validators.duplicate()}
+_1.validators.addList(_6)}}}
+_1.form=this;if(_1.destroyed)_1.destroyed=false;if(_1.shouldSaveValue&&(_1[this.fieldIdProperty]==null||isc.isAn.emptyString(_1[this.fieldIdProperty]))&&(_1.dataPath==null||isc.isAn.emptyString(_1.dataPath)))
+{this.logWarn(_1.getClass()+" form item defined with no '"+this.fieldIdProperty+"' property - Value will not be saved."+" To explicitly exclude a form item from the set of values to "+"be saved, set 'shouldSaveValue' to false for this item.")
+_1.shouldSaveValue=false}
+return _1}
+,isc.A.removeItems=function isc_DynamicForm_removeItems(_1){if(_1==null)return;if(!isc.isAn.Array(_1))_1=[_1];if(_1==this.items)_1=this.items.duplicate();_1=this.map("getItem",_1);this.items.removeList(_1);if(this.$89t==null){this.$89t=[]}
+for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3==null)continue;if(_3.items!=null){_1.addList(_3.items,i+1)}
+if(this.$10n==_3)delete this.$10n;if(!this.items.contains(_3)&&isc.isA.FormItem(_3)){if(this.isDrawn()){this.$89t.add(_3)}else{_3.destroy()}}}
+this.$10m=true;this.markForRedraw("Form items removed")}
+,isc.A.addField=function isc_DynamicForm_addField(_1,_2){this.addItems(_1,_2)}
+,isc.A.removeField=function isc_DynamicForm_removeField(_1){this.removeItems(_1)}
+,isc.A.addItem=function isc_DynamicForm_addItem(_1,_2){this.addItems(_1,_2)}
+,isc.A.removeItem=function isc_DynamicForm_removeItem(_1){this.removeItems(_1)}
+,isc.A.addFields=function isc_DynamicForm_addFields(_1,_2){return this.addItems(_1,_2)}
+,isc.A.removeFields=function isc_DynamicForm_removeFields(_1){return this.removeItems(_1)}
+,isc.A.$kk=function isc_DynamicForm__canFocus(_1,_2,_3,_4){if(this.canFocus==true)return true;var _5=this.getItems();for(var i=0;i<_5.length;i++){if(_5[i].$kk())return true}
+return this.invokeSuper(isc.DynamicForm,"$kk",_1,_2,_3,_4)}
+,isc.A.$10o=function isc_DynamicForm__assignTabIndices(){var _1=this.items;if(!_1||_1.length==0)return;var _2=[],_3={};for(var i=0;i<_1.length;i++){var _5=_1[i],_6=_5.tabIndex;if(_6!=null&&_6!=-1){if(_2[_6]!=null&&!_3[_6]){this.logWarn("More than one item in this form have an explicitly specified tabIndex of '"+_6+"'. Tab order cannot be guaranteed within this form.");_3[_6]=true}
+_2[_6]=_5}}
+var _7=1;for(var i=0;i<_1.length;i++){var _5=_1[i];if(!isc.isA.FormItem(_5)){if(this.logIsDebugEnabled())
+this.logDebug("$10o() fired before all form items have been initialized"+this.getStackTrace());continue}
+if(!_5.$kk()||_5.tabIndex!=null||_5.globalTabIndex!=null){continue}
+_7+=1;while(_2[_7]!=null){_7+=1}
+_5.$10p=_7;if(isc.isA.CanvasItem(_5)){var _8=_5.canvas;if(_8&&_8.getTabIndexSpan){_7+=_8.getTabIndexSpan()}}}}
+,isc.A.$v2=function isc_DynamicForm__slotChildrenIntoTabOrder(){return}
+,isc.A.getTabIndexSpan=function isc_DynamicForm_getTabIndexSpan(){var _1=this.items;var _2=1;if(!_1){return _2}
+for(var i=0;i<_1.length;i++){var _4=_1[i];if(!isc.isA.FormItem(_4)){return _1.length}
+if(!_4.$kk()||_4.globalTabIndex!=null){continue}
+var _5=_4.tabIndex||_4.$10p;if(_5==null){this.$10o();_5=_4.$10p}
+if(isc.isA.CanvasItem(_4)){var _6=_4.canvas,_7=0;if(_6&&_6.getTabIndexSpan)_7=_6.getTabIndexSpan();if(_7>1){_5+=_7-1}}
+if(_5!=null&&_5>_2)_2=_5}
+return _2}
+,isc.A.$vk=function isc_DynamicForm__setTabIndex(){this.Super("$vk",arguments);if(this.items){for(var i=0;i<this.items.length;i++){if(!isc.isA.FormItem(this.items[i]))continue;this.items[i].updateTabIndex()}}}
+,isc.A.handleMoved=function isc_DynamicForm_handleMoved(_1,_2,_3,_4){this.invokeSuper(isc.DynamicForm,"handleMoved",_1,_2,_3,_4);this.itemsMoved()}
+,isc.A.handleParentMoved=function isc_DynamicForm_handleParentMoved(_1,_2,_3,_4){this.invokeSuper(isc.DynamicForm,"handleParentMoved",_1,_2,_3,_4);this.itemsMoved()}
+,isc.A.zIndexChanged=function isc_DynamicForm_zIndexChanged(_1,_2,_3,_4){this.invokeSuper(isc.DynamicForm,"zIndexChanged",_1,_2,_3,_4);this.itemsZIndexChanged()}
+,isc.A.parentZIndexChanged=function isc_DynamicForm_parentZIndexChanged(_1,_2,_3,_4){this.invokeSuper(isc.DynamicForm,"parentZIndexChanged",_1,_2,_3,_4);this.itemsZIndexChanged()}
+,isc.A.itemsMoved=function isc_DynamicForm_itemsMoved(){var _1=this.getItems();if(!_1)return;for(var i=0;i<_1.length;i++){if(_1[i].isVisible)_1[i].moved()}}
+,isc.A.itemsVisibilityChanged=function isc_DynamicForm_itemsVisibilityChanged(){var _1=this.getItems();if(!_1)return;for(var i=0;i<_1.length;i++){if(_1[i].visibilityChanged)_1[i].visibilityChanged()}}
+,isc.A.itemsZIndexChanged=function isc_DynamicForm_itemsZIndexChanged(){var _1=this.getItems();if(!_1)return;for(var i=0;i<_1.length;i++){_1[i].zIndexChanged()}}
+,isc.A.scrollTo=function isc_DynamicForm_scrollTo(_1,_2,_3){var _4=this.getScrollLeft(),_5=this.getScrollTop();this.Super("scrollTo",arguments);if(_4!=this.getScrollLeft()||_5!=this.getScrollTop())this.itemsMoved()}
+,isc.A.$1f=function isc_DynamicForm__canAnimateClip(){if(this.canAnimateClip!=null)return this.canAnimateClip;return true}
+,isc.A.setTitleOrientation=function isc_DynamicForm_setTitleOrientation(_1){this.titleOrientation=_1;this.$10m=true;this.markForRedraw()}
+,isc.A.setNumCols=function isc_DynamicForm_setNumCols(_1){this.numCols=_1;this.$10m=true;this.markForRedraw()}
+,isc.A.setAutoComplete=function isc_DynamicForm_setAutoComplete(_1){this.autoComplete=_1;for(var i=0;i<this.items.length;i++){this.items[i].$10q()}}
+,isc.A.setValues=function isc_DynamicForm_setValues(_1,_2){delete this.$76u;if(isc.isAn.Array(_1)){var _3=isc.isA.Object(_1[0]);this.logWarn("values specified as an array."+(_3?" Treating the first item in the array as intended values.":" Ignoring specified values (resetting to defaults)."));if(_3)_1=_1[0];else _1=null}
+if(_1==null)_1={};this.$10r(_1);var _4=this.items;for(var i=0;i<_4.length;i++){if(_4[i].shouldSaveValue&&this.$425(_4[i])){_4[i].$426()}}
+this.setItemValues(_1,null,_2);this.rememberValues();if(this.rulesEngine!=null){this.rulesEngine.processEditStart(_1)}
+this.markForRedraw("setValues")}
+,isc.A.$425=function isc_DynamicForm__useDisplayFieldValue(_1){if(!_1||!_1.displayField)return false;if(_1.optionDataSource!=null)return false;if(_1.getValueFieldName()!=_1.getFieldName())return false;return true}
+,isc.A.setData=function isc_DynamicForm_setData(_1){this.setValues(_1)}
+,isc.A.setDataSource=function isc_DynamicForm_setDataSource(_1,_2){this.Super("setDataSource",arguments);this.clearErrors()}
+,isc.A.rememberValues=function isc_DynamicForm_rememberValues(){var _1=this.getValues(),_2=this.$10s={};this.$10t=[];var _3="__ref";var _4=[],_5={},_6=this.getItems()||[];for(var i=0;i<_6.length;i++){if(_6[i].dataPath!=null){_4[_4.length]=_6[i].dataPath.split("/")}}
+if(_4.length>0){for(var i=0;i<_4.length;i++){var _8=_1,_9=_2,_10=_4[i];_5[_10[0]]=true;for(var _11=0;_11<_10.length;_11++){var _12=_10[_11];if(_8[_12]!=null){var _13=_8[_12],_14=_9[_12],_15=isc.isAn.Object(_13);if(_15&&(_14==null||_14==_13)){if(isc.isA.Date(_14)){_9[_12]=new Date(_14.getTime())}else if(isc.isAn.Array(_14)){_9[_12]=_14.duplicate()}else{_9[_12]=isc.addProperties({},_13)}}else if(_14==null){_9[_12]=_13}
+_8=_8[_12];_9=_9[_12]}else{break}}}}
+for(var _16 in _1){if(isc.isA.Function(_1[_16]))continue;if(_16==_3)continue;if(_5[_16]==true)continue;if(isc.isA.Date(_1[_16])){_2[_16]=new Date();_2[_16].setTime(_1[_16].getTime())}else{_2[_16]=_1[_16]}
+var _17=this.getItem(_16);if(_17&&_17.isSetToDefaultValue())this.$10t.add(_16)}
+return _2}
+,isc.A.resetValues=function isc_DynamicForm_resetValues(){this.clearErrors();var _1={};for(var _2 in this.$10s){if(this.$10t.contains(_2))continue;if(isc.isA.Date(_1[_2])&&isc.isA.Date(this.$10s[_2]))
+_1[_2].setTime(this.$10s[_2].getTime());else
+_1[_2]=this.$10s[_2]}
+this.setValues(_1)}
+,isc.A.clearValues=function isc_DynamicForm_clearValues(){this.setValues();var _1=this.getItems();for(var i=0;i<_1.length;i++){if(_1[i].shouldSaveValue==false)_1[i].setValue(null)}
+this.clearErrors();this.rememberValues();this.markForRedraw("clearValues")}
+,isc.A.valuesHaveChanged=function isc_DynamicForm_valuesHaveChanged(_1,_2,_3){if(_2==null)_2=this.getValues();if(_3==null)_3=this.$10s||{};return isc.DynamicForm.valuesHaveChanged(this,_1,_2,_3)}
+,isc.A.getOldValues=function isc_DynamicForm_getOldValues(){var _1={};isc.addProperties(_1,this.$10s);return _1}
+,isc.A.getOldValue=function isc_DynamicForm_getOldValue(_1){return this.getOldValues()[_1]}
+,isc.A.getChangedValues=function isc_DynamicForm_getChangedValues(){return this.valuesHaveChanged(true)}
+,isc.A.getValues=function isc_DynamicForm_getValues(){this.updateFocusItemValue();return this.values}
+,isc.A.updateFocusItemValue=function isc_DynamicForm_updateFocusItemValue(){var _1=this.getFocusSubItem();if(!this.$10u&&_1!=null&&_1.$10v()){_1.updateValue()}}
+,isc.A.getData=function isc_DynamicForm_getData(){return this.getValues()}
+,isc.A.getValuesAsCriteria=function isc_DynamicForm_getValuesAsCriteria(_1,_2,_3){if(_1==null){_1=(this.operator!="and")||this.getItems().map("hasAdvancedCriteria").contains(true)||this.allowExpressions||(this.$76u!=null)}
+if(!_1){var _4=this.$76v();if(_3)return _4;return isc.DataSource.filterCriteriaForFormValues(_4)}
+var _5=this.$76u?isc.clone(this.$76u):{operator:this.operator,_constructor:"AdvancedCriteria",criteria:[]};var _6=this.$76v(true,_2);_6.removeEmpty();if(_6&&_6.length>0)_5.criteria.addList(_6);return isc.DS.checkEmptyCriteria(_5)}
+,isc.A.$76v=function isc_DynamicForm__getMappedCriteriaValues(_1,_2){var _3=isc.addProperties({},this.getValues()),_4={},_5=[];var _6=this.getFields();for(var i=0;i<_6.length;i++){if(!_6[i].shouldSaveValue)continue;var _8=_6[i],_9=_6[i].getFieldName(),_10=_6[i].getCriteriaFieldName();delete _3[_9];if(!_1){if(_10!=null){_4[_10]=_6[i].getCriteriaValue()}}else{var _11=_8.getCriterion(_2);if(_11!=null)_5.add(_11)}}
+if(!_1){return isc.addProperties(_3,_4)}else{for(var _12 in _3){if(_5.find("fieldName",_12))continue;if(_3[_12]==null)continue;_5.add({operator:isc.DataSource.getCriteriaOperator(_3[_12],_2),fieldName:_12,value:_3[_12]})}
+return _5}}
+,isc.A.getFilterCriteria=function isc_DynamicForm_getFilterCriteria(){return this.getValuesAsCriteria()}
+,isc.A.setValuesAsCriteria=function isc_DynamicForm_setValuesAsCriteria(_1,_2){this.setValues({});if(!_2&&!isc.DataSource.isAdvancedCriteria(_1)){this.$10r(_1);var _3=this.items||[];for(var i=0;i<_3.length;i++){for(var _5 in _1){if(_3[i].canEditSimpleCriterion(_5)){_3[i].setSimpleCriterion(_1[_5],_5);break}}}
+this.rememberValues()}else{_1=isc.clone(_1);var _6=_1.operator;if(_6!=this.operator){this.logWarn("Dynamic Form editing advanced criteria object:"+isc.Comm.serialize(_1)+". Form level operator specified as '"+this.operator+"' - Criteria returned from this form will be nested in an outer "+this.operator+" clause.");_1._constructor=null;_1={_constructor:"AdvancedCriteria",operator:this.operator,criteria:[_1]}}
+var _3=this.getItems(),_7=_1.criteria,_8={};for(var i=0;i<_7.length;i++){for(var _9=0;_9<_3.length;_9++){if(!_3[_9].shouldSaveValue)continue;var _10=_3[_9];if(this.shouldApplyCriterionToItem(_3[_9],_7[i])){var _11=_3[_9].getID();if(_8[_11]==null){_8[_11]=_7[i]}else{var _12=_8[_11];var _13=isc.DataSource.combineCriteria(_12,_7[i],this.operator,null,true);if(!_10.canEditCriterion(_13)){this.logInfo("setValuesAsCriteria(): criteria include:"+this.echoFull(_12)+" and "+this.echoFull(_7[i])+". Both of these "+"could be applied to item:"+_10+". However, the item is unable to edit a composite criterion "+"resulting from combining these criteria. Therefore "+this.echoFull(_7[i])+" will not be applied to this item","AdvancedCriteria");continue}else{this.logDebug("setValuesAsCriteria(): Combined multiple criteria into "+"composite criterion:"+this.echoFull(_13)+" and assigned to item:"+_10,"AdvancedCriteria");_8[_11]=_13}}
+_7[i]=null;break}}}
+_7.removeEmpty();for(var _11 in _8){var _10=window[_11];_10.setCriterion(_8[_11])}
+this.$76u=_1}}
+,isc.A.shouldApplyCriterionToItem=function isc_DynamicForm_shouldApplyCriterionToItem(_1,_2){if(_1.canEditCriterion(_2))return true;if(_2.fieldName!=null&&_2.fieldName==_1.getCriteriaFieldName()){this.logInfo("Editing AdvancedCriteria in a dynamicForm. Criteria "+"includes a value for field:"+_2.fieldName+". This form includes an item "+_1+" with the same fieldName"+" but the specified operator '"+_2.operator+"' does not match the operator for this form item:"+_1.getOperator()+". Original criterion will be retained and combined with any "+"criterion returned from this item.","AdvancedCriteria")}
+return false}
+,isc.A.getValuesAsAdvancedCriteria=function isc_DynamicForm_getValuesAsAdvancedCriteria(_1,_2){return this.getValuesAsCriteria(true,_1,_2)}
+,isc.A.getItem=function isc_DynamicForm_getItem(_1){if(isc.isA.FormItem(_1))return _1;var _2=isc.Class.getArrayItem(_1,this.items,this.fieldIdProperty);if(_2!=null)return _2;for(var i=0;i<this.items.length;i++){var _4=this.items[i].dataPath;if(_4==_1)return this.items[i];if(this.dataPath){if(this.dataPath.endsWith("/")){if(this.dataPath+_4==_1)return this.items[i]}else if(this.dataPath+"/"+_4==_1)return this.items[i]}}
+if(isc.isA.Number(_1-1)){return this.items[parseInt(_1)]}
+return null}
+,isc.A.getField=function isc_DynamicForm_getField(_1){return this.getItem(_1)}
+,isc.A.getSubItem=function isc_DynamicForm_getSubItem(_1){return this.getItem(_1)}
+,isc.A.getItemById=function isc_DynamicForm_getItemById(_1){var _2;if(isc.isA.String(_1)){_2=window[_1]}else _2=_1;if(isc.isA.FormItem(_2))return _2;return null}
+,isc.A.getValue=function isc_DynamicForm_getValue(_1){var _2=this.getItem(_1);if(_2&&isc.isA.Function(_2.getValue))return _2.getValue();return this.$70p(_1)}
+,isc.A.$70p=function isc_DynamicForm__getValue(_1){return isc.DynamicForm.$70o(_1,this.values)}
+,isc.A.setValue=function isc_DynamicForm_setValue(_1,_2){var _3=this.getItem(_1);if(_3!=null)return _3.setValue(_2);else if(this.values!=null){this.$10w(_1,_2);return _2}}
+,isc.A.clearValue=function isc_DynamicForm_clearValue(_1){var _2=this.getItem(_1);if(_2!=null)_2.clearValue();else if(this.values)isc.DynamicForm.$70m(_1,this.values)}
+,isc.A.showItem=function isc_DynamicForm_showItem(_1){var _2=this.getItem(_1);if(_2!=null)return _2.show()}
+,isc.A.hideItem=function isc_DynamicForm_hideItem(_1){var _2=this.getItem(_1);if(_2!=null)return _2.hide()}
+,isc.A.saveItemValue=function isc_DynamicForm_saveItemValue(_1,_2){if(_1.shouldSaveValue==false)return;var _3=isc.DynamicForm.$702(this.dataPath,_1.getDataPath()||_1.getFieldName());if(_3!=null){this.$10w(_3,_2)}else{return}
+if(this.$425(_1)&&(_1.displayField!=_3)){var _4=_1.mapValueToDisplay(_2);this.setValue(_1.displayField,_4)}
+_1.$10x()}
+,isc.A.$10w=function isc_DynamicForm__saveValue(_1,_2){var _3;if(isc.ValuesManager&&isc.isA.ValuesManager(this.valuesManager)){var _4=this.valuesManager.getField(_1);if(_4)_3=_4.name}
+isc.DynamicForm.$70n(_1,_2,this.values,this,true,false,_3);var _5=this.selectionComponent;if(!_5&&this.valuesManager!=null){if(isc.isA.ValuesManager(this.valuesManager)&&this.valuesManager.members&&this.valuesManager.members.contains(this))
+{this.valuesManager.$10y(_1,_2,this)}}}
+,isc.A.clearItemValue=function isc_DynamicForm_clearItemValue(_1){var _2=isc.DynamicForm.$702(this.dataPath,_1.getDataPath()||_1.getFieldName());isc.DynamicForm.$70m(_2,this.values);if(!this.selectionComponent&&isc.isA.ValuesManager(this.valuesManager)&&this.valuesManager.members&&this.valuesManager.members.contains(this))
+{this.valuesManager.$10z(_2,this)}}
+,isc.A.$10r=function isc_DynamicForm__saveValues(_1){this.values=_1;if(!this.selectionComponent&&isc.isA.ValuesManager(this.valuesManager)&&this.valuesManager.members&&this.valuesManager.members.contains(this))
+{var _2=isc.getKeys(this.values);for(var i in _1){this.valuesManager.$10y(i,_1[i],this);_2.remove(i)}
+for(var i=0;i<_2.length;i++){this.valuesManager.$10z(_2[i],this)}}}
+,isc.A.getSavedItemValue=function isc_DynamicForm_getSavedItemValue(_1){if(_1.shouldSaveValue==false)return null;var _2=isc.DynamicForm.$702(this.dataPath,_1.getDataPath())||_1.getFieldName();return this.$70p(_2)}
+,isc.A.resetValue=function isc_DynamicForm_resetValue(_1){var _2=this.getItem(_1);return(_2?_2.resetValue():null)}
+,isc.A.getValueMap=function isc_DynamicForm_getValueMap(_1){var _2=this.getItem(_1);return(_2?_2.getValueMap():null)}
+,isc.A.setValueMap=function isc_DynamicForm_setValueMap(_1,_2){var _3=this.getItem(_1);return(_3?_3.setValueMap(_2):null)}
+,isc.A.getOptions=function isc_DynamicForm_getOptions(_1){return this.getValueMap(_1)}
+,isc.A.setOptions=function isc_DynamicForm_setOptions(_1,_2){return this.setValueMap(_1,_2)}
+,isc.A.getForm=function isc_DynamicForm_getForm(_1){var _2=(_1==null?[this.getFormID()]:arguments);return this.Super("getForm",_2)}
+,isc.A.getFormID=function isc_DynamicForm_getFormID(){return this.$qs(this.$9l)}
+,isc.A.getSerializeableFields=function isc_DynamicForm_getSerializeableFields(_1,_2){_1.addList(["items"]);return this.Super("getSerializeableFields",arguments)}
+,isc.A.expandSection=function isc_DynamicForm_expandSection(_1){var _2=this.getItem(_1);if(isc.isA.SectionItem(_2))_2.expandSection()}
+,isc.A.collapseSection=function isc_DynamicForm_collapseSection(_1){var _2=this.getItem(_1);if(isc.isA.SectionItem(_2))_2.collapseSection()}
+,isc.A.$100=function isc_DynamicForm__sectionExpanding(_1){if(this.isDrawn()){this.blur();this.$86o=this.notifyAncestorsOnReflow;this.notifyAncestorsOnReflow=true}
+if(this.sectionVisibilityMode=="mutex"&&this.$6l&&this.$6l!=_1)
+{this.$6l.collapseSection()}
+this.$6l=_1}
+,isc.A.$101=function isc_DynamicForm__sectionCollapsing(_1){if(this.isDrawn()){this.blur();this.$86o=this.notifyAncestorsOnReflow;this.notifyAncestorsOnReflow=true}}
+,isc.A.getErrors=function isc_DynamicForm_getErrors(){return this.errors}
+,isc.A.getFieldErrors=function isc_DynamicForm_getFieldErrors(_1){if(!this.errors)return null;var _2;if(isc.isA.FormItem(_1)){var _3=_1;_1=_3.getFieldName();_2=this.buildFieldDataPath(this.getFullDataPath(),_3)}
+var _4=this.errors[_1];if(isc.isA.String(_4)||isc.isAn.Array(_4)){return _4}
+if(_2!=null){if(isc.isA.String(_4)||isc.isAn.Array(_4))return _4}
+return null}
+,isc.A.getDataPathErrors=function isc_DynamicForm_getDataPathErrors(_1){var _2=_1.split("/");var _3=this.errors;for(var i=0;i<_2.length;i++){_3=_3[_2[i]];if(!_3)return null}
+return _3}
+,isc.A.setErrors=function isc_DynamicForm_setErrors(_1,_2){this.errors=isc.DynamicForm.formatValidationErrors(_1);var _3=false,_4={};for(var _5 in this.errors){var _6=this.getItem(_5);if(!_6||!_6.visible){_4[_5]=this.errors[_5];_3=true}}
+if(_2)this.showErrors(this.errors,_4)}
+,isc.A.setError=function isc_DynamicForm_setError(_1,_2){var _3=this.errors[_1];if(!_3)this.errors[_1]=_2;else{if(isc.isA.String(_3))this.errors[_1]=[_3,_2];else this.errors[_1].add(_2)}}
+,isc.A.addFieldErrors=function isc_DynamicForm_addFieldErrors(_1,_2,_3){if(!this.errors)this.errors={};this.addValidationError(this.errors,_1,_2);if(_3)this.showFieldErrors(_1)}
+,isc.A.setFieldErrors=function isc_DynamicForm_setFieldErrors(_1,_2,_3){if(this.errors==null)this.errors={};this.errors[_1]=_2;if(_3)this.showFieldErrors(_1)}
+,isc.A.clearFieldErrors=function isc_DynamicForm_clearFieldErrors(_1,_2,_3){if(this.errors==null)return;if(!this.errors[_1])return;delete this.errors[_1];if(_2){this.showFieldErrors(_1)}}
+,isc.A.clearErrors=function isc_DynamicForm_clearErrors(_1){this.setErrors({},_1)}
+,isc.A.hasErrors=function isc_DynamicForm_hasErrors(){var _1=this.errors;if(!_1)return false;for(var _2 in _1){if(_1[_2]!=null)return true}
+return false}
+,isc.A.hasFieldErrors=function isc_DynamicForm_hasFieldErrors(_1){var _2=this.errors;return(_2&&_2[_1]!=null)}
+,isc.A.draw=function isc_DynamicForm_draw(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return this;this.invokeSuper(isc.DynamicForm,this.$ny,_1,_2,_3,_4);this.$102();var _5=this.autoFocus,_6=(!_5?this.$9m:this.$9o);this.$10u=true;isc.Page.setEvent(isc.EH.IDLE,this,isc.Page.FIRE_ONCE,_6);if(this.position==isc.Canvas.RELATIVE){isc.Page.setEvent(isc.EH.LOAD,this,isc.Page.FIRE_ONCE,"$103")}
+return this}
+,isc.A.$us=function isc_DynamicForm__adjustOverflowForPageLoad(){if(isc.Browser.isSafari){var _1=this.getItems();if(this.isDrawn()&&_1){for(var i=0;i<_1.length;i++){_1[i].$104();if(this.isDirty())break}}}
+return this.Super("$us",arguments)}
+,isc.A.$9n=function isc_DynamicForm__delayedSetValues(){this.setItemValues(null,true);this.rememberValues();delete this.$10u}
+,isc.A.$9p=function isc_DynamicForm__delayedSetValuesFocus(){this.$9n();this.focus()}
+,isc.A.redraw=function isc_DynamicForm_redraw(){this.$107();this.$106();if(this.$11v!=null)delete this.$11v;this.Super("redraw",arguments);this.$108();this.setItemValues(null,true);var _1,_2,_3;if(isc.Browser.isMoz){_3=this.getClipHandle();if(_3){_1=_3.scrollLeft;_2=_3.scrollTop}}
+if(isc.Browser.isMoz){if(_1!=null&&_3.scrollLeft!=_1)
+_3.scrollLeft=_1;if(_2!=null&&_3.scrollTop!=_2)
+_3.scrollTop=_2}
+this.itemsMoved();if(this.$86o!=null){this.notifyAncestorsOnReflow=this.$86o;this.$86o=null}}
+,isc.A.$102=function isc_DynamicForm__itemsDrawn(){var _1=this.items;for(var i=0;i<_1.length;i++){if(_1[i]&&_1[i].visible)_1[i].drawn()}}
+,isc.A.$108=function isc_DynamicForm__itemsRedrawn(){var _1=this.items;for(var i=0;i<_1.length;i++){var _3=_1[i];if(!_3)continue;if(_3.visible){_3.isDrawn()?_3.redrawn():_3.drawn()}else if(_3.isDrawn()){_3.cleared()}}
+this.destroyOrphanedItems("Delayed destroy of removed items on form redraw")}
+,isc.A.$11a=function isc_DynamicForm__itemsCleared(){var _1=this.items;for(var i=0;i<_1.length;i++){if(_1[i].isDrawn&&_1[i].isDrawn())_1[i].cleared()}
+this.destroyOrphanedItems("Delayed destroy of removed items on clear")}
+,isc.A.destroyOrphanedItems=function isc_DynamicForm_destroyOrphanedItems(_1){if(this.$89t!=null){this.$89t.map("destroy",[_1]);delete this.$89t}}
+,isc.A.$107=function isc_DynamicForm__itemsRedrawing(){var _1=this.items;for(var i=0;i<_1.length;i++){var _3=_1[i];if(!_3)continue;if(_3.visible&&_3.isDrawn())_3.redrawing()}}
+,isc.A.modifyContent=function isc_DynamicForm_modifyContent(){this.$103()}
+,isc.A.$103=function isc_DynamicForm__placeCanvasItems(){return this.$11c("placeCanvas")}
+,isc.A.$11c=function isc_DynamicForm__notifyCanvasItems(_1){if(!isc.CanvasItem)return;for(var i=0;i<this.items.length;i++){var _3=this.items[i];if(_3&&isc.isA.CanvasItem(_3))_3[_1]()}}
+,isc.A.redrawFormItem=function isc_DynamicForm_redrawFormItem(_1,_2){var _3=this.getItems();if(!_1)return;while(_1.parentItem)_1=_1.parentItem;if(!_3.contains(_1))return;this.$10m=true;this.markForRedraw(_1.ID+": "+(_2?_2:"redrawFormItem"))}
+,isc.A.getElementValues=function isc_DynamicForm_getElementValues(){var _1={};for(var i=0;i<this.items.length;i++){var _3=this.items[i],_4=_3.getDataElement()?_3.getDataElement().value:"[no element]";_1[_3[this.fieldIdProperty]]=_4}
+return _1}
+,isc.A.setItemValues=function isc_DynamicForm_setItemValues(_1,_2,_3,_4){var _5=(_1==null);if(_5)_1=this.getValues();if(_1==null)_1={};var _6;if(_3){_6=this.$76u?this.$76u.criteria:null}
+_4=_4||this.items;for(var _7=0;_7<_4.length;_7++){var _8=_4[_7],_9=_8.getFieldName(),_10=_8.getFullDataPath(),_11=_8.isSetToDefaultValue(),_12;if(_10){_12=isc.DynamicForm.$70o(_10,_1,this,true)}else if(_9)_12=_1[_9];if(_2&&isc.CanvasItem&&isc.isA.CanvasItem(_8)&&!_8.$11d())
+{continue}
+var _13,_14=((!_9&&!_10)||_12===_13);var _15=null;if(_3&&_14&&_8.value!=null){_15=_8.value;if(_15!=_8._value)_11=false}
+var _16=null;if(_14&&_6!=null){for(var i=0;i<_6.length;i++){if(_8.canEditCriterion(_6[i])){_14=false;if(_16==null){_16=_6[i]}else{var _18=isc.DataSource.combineCriteria(_16,_6[i],this.operator,null,true);if(!_8.canEditCriterion(_18)){this.logInfo("setItemValues(): current values include multiple extra criteria "+"that could be applied to form item:"+_8+". Criteria include:"+this.echoFull(_16)+" and "+this.echoFull(_6[i])+". However, the item is unable to edit a composite criterion "+"resulting from combining these criteria. Therefore "+this.echoFull(_6[i])+" will not be applied to this item","AdvancedCriteria");continue}else{this.logInfo("setItemValues(): Combined multiple 'extra' criteria into "+"composite criterion:"+this.echoFull(_18)+" and assigned to item:"+_8,"AdvancedCriteria");_16=_18}}
+_6.removeAt(i);if(_6.length==0){delete this.$76u}else{i--}}}}
+if(_8.shouldSaveValue==false){if(!_14){this.logInfo("DynamicForm.setValues() passed a value for '"+_8[this.fieldIdProperty]+"'."+" The corresponding form item was declared with 'shouldSaveValue' set to "+" false to exclude its value from the form's values object."+" Setting 'shouldSaveValue' to true for this item."+"\n[To avoid seeing this message in the future, set 'shouldSaveValue'"+" to true for any form items whose values are to be managed via "+" form.setValues() / form.getValues().]")
+_8.shouldSaveValue=true}else{var _19=(_11?null:_8._value);if(_15!=null)_19=_15;_8.setValue(_19,(_11?false:_2));continue}}
+if(_15!=null){_14=false;_12=_15}
+if(_14||(_16==null&&_5&&_11)){var _20;if(!_3)_8.clearValue();else if(_3&&_11&&_8._value!==_20){_8.saveValue(_8._value,true)}}else{if(_16!=null){_8.setCriterion(_16)}else{_8.setValue(_12,true)}}}}
+,isc.A.$11e=function isc_DynamicForm__absPos(){return this.itemLayout==this.$9q}
+,isc.A.setColWidths=function isc_DynamicForm_setColWidths(_1){if(_1==null)return;if(isc.isA.String(_1)){var _2=_1.split(/[, ]+/);if(_2==null||_2.length==0){this.logWarn("ignoring invalid colWidths string: "+_1);if(_1==this.colWidths)this.colWidths=null;return}
+_1=_2}else if(isc.isAn.Array(_1)&&_1.length==1&&isc.isA.String(_1[0]))
+{var _2=_1[0].split(/[, ]+/);if(_2!=null||_2.length>1){_1=_2}}
+this.colWidths=_1;if(this.isDrawn())this.markForRedraw()}
+,isc.A.getInnerHTML=function isc_DynamicForm_getInnerHTML(){if(this.autoDupMethods)this.duplicateMethod("getInnerHTML");var _1=isc.StringBuffer.create();if(this.writeFormTag&&!this.isPrinting)_1.append(this.getFormTagStartHTML());var _2=this.values,_3=this.items;var _4=false;for(var _5=0;_5<_3.length;_5++){var _6=_3[_5],_7=_6.visible;if(_6.showIf){isc.Func.replaceWithMethod(_6,this.$9r,this.$9s);var _8=_6.getValue();_7=(_6.showIf(_6,_8,this,_2)==true)}
+if(_7&&this.isPrinting){if(_6.shouldPrint!=null){_7=_6.shouldPrint}else if(_7&&this.currentPrintProperties.omitControls){var _9=this.currentPrintProperties.omitControls;for(var i=0;i<_9.length;i++){var _11=_9[i];if(isc.isA[_11]&&isc.isA[_11](_6)){_7=false}}}}
+if(_7!=_6.visible){_6.visible=_7;if(!_6.alwaysTakeSpace)_4=true}}
+if(_4||this.$10m)isc.Canvas.invalidateTableResizePolicy(_3);this.$10m=false;this.setRequiredIf();if(this.flattenItems){var _12=null;for(var _5=0;_5<_3.length;_5++){var _6=_3[_5];if(_6.visible||_6.alwaysTakeSpace)_12++;if(_6.showTitle&&_6.titleOrientation!="top")
+_12++;_6.$58l=_6.colSpan||null;_6.colSpan=null}
+if(_12){this.numCols=_12;this.$10m=true;this.markForRedraw()}}
+if(this.$11e()){_1.append(this.getAbsPosHTML());_1.append(this.$9t);return _1.release()}
+_1.append(this.getTableStartHTML());if(this.titleWidth==this.$pa&&!this.colWidths){this.colWidths=[];for(var i=0;i<this.numCols;i++)this.colWidths[i]=this.$pa}
+var _13;if(this.colWidths){_13=this.colWidths;if(_13.length>this.numCols){if(!this.$76z){this.logWarn("colWidths Array longer than numCols, using only first "+this.numCols+" column widths")}
+_13=_13.slice(0,this.numCols)}else if(_13.length<this.numCols){if(!this.$76z){this.logWarn("colWidths Array shorter than numCols, remaining columns get '*' size")}
+for(var i=_13.length;i<this.numCols;i++)_13[i]=isc.star}}else{_13=[];var _14=this.getInnerContentWidth();_14-=(this.cellBorder!=null?this.cellBorder:0);var _15=Math.floor(this.numCols/ 2),_16=_14-(_15*this.titleWidth),_17;if(this.isPrinting){_17="*"}else{_17=Math.floor(_16/(this.numCols-_15));_17=Math.max(this.minColWidth,_17)}
+for(var i=0;i<_15;i++){_13.add(this.titleWidth);_13.add(_17)}
+if((this.numCols%2)!=0)_13.add(_17);if(this.logIsInfoEnabled(this.$9u)){this.logInfo("totalWidth: "+_14+", generated colWidths: "+_13,this.$9u)}}
+var _18=this.getInnerContentWidth(),_19=this.getInnerContentHeight();if(this.cellSpacing!=0){if(isc.Browser.isMoz)_19-=2*this.cellSpacing;else if(isc.Browser.isSafari)_19-=this.cellSpacing}
+_3.$8q=this.defaultRowHeight;isc.Canvas.applyTableResizePolicy(_3,_18,_19,this.numCols,_13);var _20=false;if(isc.CanvasItem){for(var i=0;i<_3.length;i++){var _6=_3[i];if(isc.isA.CanvasItem(_6)&&_6.checkCanvasOverflow()){if(!_20&&this.logIsInfoEnabled(this.$9u)){this.logInfo("CanvasItem: "+_6+" overflowed, rerunning policy",this.$9u)}
+_20=true}}}
+if(_20){isc.Canvas.applyTableResizePolicy(_3,_18,_19,this.numCols,_13,null,true)}
+if(!this.isPrinting){_13=_3.$8r}
+for(var _21=0;_21<_13.length;_21++){var _22=_13[_21];if(_22=="*"){_1.append("<COL>")}else{_1.append(this.$9v,_22,this.$oa)}}
+if(this.isPrinting){_1.append("<tr>")}else{_1.append(this.$9w)}
+var _23=isc.DynamicForm.$817();for(var _21=0;_21<_13.length;_21++){if(!isc.isA.Number(_13[_21])){_1.append(_23.join(isc.emptyString),this.$9y)}else{var _18=_13[_21];_18-=(this.cellSpacing!=null?(2*this.cellSpacing):0);if(isc.Browser.isIE8Strict){_18-=this.cellPadding!=null?(2*this.cellPadding):0}
+_23[3]=(isc.FormItem?isc.FormItem.getPrototype().baseStyle:null);var _24=isc.Browser.isIE?1:0,_25=_23.join(isc.emptyString);_1.append(_25,this.fixedColWidths?isc.Canvas.spacerHTML(_18,_24):null,this.$9y)}}
+_1.append(this.$5t);if(this.autoSendTarget&&this.target)_1.append(this.$11f());var _26=[];for(var _5=0,_27=_3.length;_5<_27;_5++){var _6=_3[_5];if(!_6)continue;var _7=_6.visible;_6.$10x();if(this.logIsDebugEnabled())this.logDebug("Drawing FormItem: "+_6);if(!_6.alwaysTakeSpace&&!_7)continue;if((_6.rowSpan==0||_6.colSpan==0)&&_5<_27-1){_26.add(_6);continue}
+var _28=_6.getFieldName(),_29=_6.getErrors(),_8=_6.getValue(),_30=this.getTitleOrientation(_6);if(isc.is.emptyString(_29))_29=null;if(_6.$8l||_5==0){if(_5!=0)_1.append(this.$5t);if(_6.$8n>0){for(var i=0;i<_6.$8n;i++)_1.append(this.$5s,this.$5t)}
+_1.append(this.$5s);if(_6.$8o>0){for(var i=0;i<_6.$8o;i++)_1.append(this.$5u,this.$5v)}}
+if(_30==isc.Canvas.LEFT){_1.append(this.getTitleCellHTML(_6,_29))}
+_1.append(this.getCellStartHTML(_6,_29));if(_7&&_30==isc.Canvas.TOP){_1.append(this.getTitleSpanHTML(_6,_29),this.$9z)}
+var _31=(_7&&_29&&this.showInlineErrors);if(_31&&_6.getErrorOrientation()==isc.Canvas.TOP){_1.append(this.getItemErrorHTML(_6,_29))}
+if(_26.length>0){for(var m=0;m<_26.length;m++){if(!_26[m].visible)continue;_1.append(_26[m].getInnerHTML(_26[m].getValue()))}
+_26.length=0}
+if(_7){_1.append(_6.getInnerHTML(_8,true,this.showInlineErrors))}else _1.append(isc.Canvas.spacerHTML(_6.width,_6.height));if(_31&&_6.getErrorOrientation()==isc.Canvas.BOTTOM){_1.append(this.getItemErrorHTML(_6,_29))}
+_1.append(this.getCellEndHTML(_6,_29));if(_30==isc.Canvas.RIGHT){_1.append(this.getTitleCellHTML(_6,_29))}}
+if(_3.length>0)_1.append(this.$5t);if(this.writeFormTag&&!this.isPrinting)_1.append(this.$90);else _1.append("</TABLE>");return _1.release()}
+);isc.evalBoundary;isc.B.push(isc.A.getPrintChildren=function isc_DynamicForm_getPrintChildren(){return null}
+,isc.A.getCanvasItemCanvii=function isc_DynamicForm_getCanvasItemCanvii(){var _1=this.items||[],_2=[];for(var i=0;i<_1.length;i++){if(_1[i].isA("CanvasItem")&&isc.isA.Canvas(_1[i].canvas)){_2.add(_1[i].canvas)}}
+return _2}
+,isc.A.createErrorItem=function isc_DynamicForm_createErrorItem(){var _1=isc.addProperties({cellStyle:this.errorItemCellStyle},this.errorItemDefaults,this.errorItemProperties);this.addItems([_1],0);this.$52o=this.getItem(0)}
+,isc.A.getErrorsHTML=function isc_DynamicForm_getErrorsHTML(_1){if(!_1||isc.isAn.emptyObject(_1))return isc.emptyString;var _2=this.errorsPreamble;_2+="<UL>";for(var _3 in _1){var _4=this.getItem(_3),_5;if(_4)_5=_4.getErrorMessage(_1[_3])
+else{_5=_1[_3];if(isc.isAn.Array(_5))
+_5="<ul><li>"+_5.join("</li><li>")+"</li></ul>"}
+_2+="<LI>"+(_4?_4.getTitle():_3)+" : "+_5+"</LI>"}
+_2+="</UL>";return _2}
+,isc.A.getItemErrorHTML=function isc_DynamicForm_getItemErrorHTML(_1,_2){return _1.getErrorHTML(_2)}
+,isc.A.$11f=function isc_DynamicForm__getAutoSendTargetHTML(){this.$91[1]=this.autoSendTargetFieldName;this.$91[3]=this.target;return this.$91.join(isc.emptyString)}
+,isc.A.getCellStartHTML=function isc_DynamicForm_getCellStartHTML(_1,_2){var _3=_1.getColSpan(),_4=_1.getRowSpan();if(_3==0)_3=1;if(_4==0)_4=1;if(_3=="*"){var _5=(_1.$8m?_1.$8m[0]:0);_3=(this.numCols-_5)}
+var _6=_1.getCellStyle();var _7=this.fixedRowHeights||_1.shouldFixRowHeight();var _8=_1.$8t?_1.$8t[1]:null;if(isc.isA.Number(_8)&&this.cellSpacing!=0)_8-=2*this.cellSpacing;return this.$11g((_1.align?_1.align:((this.form?this.form.isRTL():this.isRTL())?isc.Canvas.RIGHT:isc.Canvas.LEFT)),_1.vAlign,_6,_4,_3,null,(_7?_8:null),null,_1.cssText,(this.form?this.form.getID():this.getID()),_1.getItemID(),_1.getFormCellID())}
+,isc.A.$11g=function isc_DynamicForm__getCellStartHTML(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13){var _14=isc.StringBuffer.create(),_15=isc.$ad;_14.append("<TD ALIGN=",_1,(_2==null?_15:" VALIGN="+_2),(_3!=null?" CLASS='"+_3+"'":_15)," STYLE='",(_9!=null?_9:_15),"'",(_4>1?" ROWSPAN="+_4:_15),(_5>1?" COLSPAN="+_5:_15),(_6!=null?" WIDTH="+_6:_15),(_7!=null?" HEIGHT="+_7:_15),(_8!=null?_8:_15));if(_12){_14.append(" ID=",_12," ")}
+if(_11&&_10){_14.append(isc.DynamicForm.$89,"='",_11,"'")}
+_14.append(_13?"><NOBR>":">");return _14.release()}
+,isc.A.getCellEndHTML=function isc_DynamicForm_getCellEndHTML(_1,_2){return this.$11h()}
+,isc.A.$11h=function isc_DynamicForm__getCellEndHTML(_1){return _1?"</NOBR></TD>":"</TD>"}
+,isc.A.getTitleOrientation=function isc_DynamicForm_getTitleOrientation(_1){if(_1&&!_1.shouldShowTitle())return null;return(_1?_1.titleOrientation:null)||this.titleOrientation||isc.Canvas.LEFT}
+,isc.A.getTitleAlign=function isc_DynamicForm_getTitleAlign(_1){var _2=this.form||this;return(_1.titleAlign?_1.titleAlign:this.titleAlign?this.titleAlign:this.isRTL()?isc.Canvas.LEFT:isc.Canvas.RIGHT)}
+,isc.A.getTitleVAlign=function isc_DynamicForm_getTitleVAlign(_1){var _2=(_1.titleVAlign?_1.titleVAlign:this.titleVAlign?this.titleVAlign:isc.Canvas.CENTER);return(_2==isc.Canvas.CENTER?isc.Canvas.MIDDLE:_2)}
+,isc.A.getTitleHeight=function isc_DynamicForm_getTitleHeight(_1){var _2=this.form||this;return(_1.titleHeight!=null?_1.titleHeight:this.titleHeight)}
+,isc.A.getTitleSpanHTML=function isc_DynamicForm_getTitleSpanHTML(_1,_2){var _3=isc.StringBuffer.create();_3.append("<SPAN ",this.$11i(_1)," CLASS='",_1.getTitleStyle(),"' ALIGN=",this.getTitleAlign(_1),">");_3.append(this.getTitleHTML(_1,_2));_3.append("</SPAN>");return _3.release()}
+,isc.A.shouldClipTitle=function isc_DynamicForm_shouldClipTitle(_1){if(!_1||!_1.form==this)return false;return(_1.clipTitle!=null?_1.clipTitle:this.clipItemTitles)}
+,isc.A.getTitleCellHTML=function isc_DynamicForm_getTitleCellHTML(_1,_2){var _3=isc.StringBuffer.create(),_4=_1.getTitleStyle(),_5=this.getTitleAlign(_1),_6=this.getTitleVAlign(_1);var _7=this.$99;_7[1]=this.$11i(_1);_7[3]=_4;_7[5]=_5;_7[7]=_6;if(_1.getRowSpan()>1)_7[9]=" ROWSPAN="+_1.getRowSpan();else _7[9]=null;if(_1.getTitleColSpan()>1)_7[10]=" COLSPAN="+_1.getTitleColSpan();else _7[10]=null;_3.append(_7.join(isc.emptyString));_3.append(this.getTitleCellInnerHTML(_1,_2));_3.append(this.$98);return _3.release()}
+,isc.A.getTitleCellInnerHTML=function isc_DynamicForm_getTitleCellInnerHTML(_1,_2){var _3=isc.StringBuffer.create(),_4=_1.getTitleStyle(),_5=this.getTitleAlign(_1),_6=_1.$8u||null,_7=_1.$8t?_1.$8t[1]:null,_8=this.shouldClipTitle(_1),_9=(_1.wrapTitle!=null?_1.wrapTitle:(this.wrapItemTitles!=null?this.wrapItemTitles:!_8));if(_7){if(this.cellSpacing)_7-=2*this.cellSpacing;var _10,_11;if(_4){_10=isc.Element.$tt(_4,true);_11=isc.Element.$tu(_4,true)}
+if(_10==null)_10=this.cellPadding||0;if(_11==null)_11=this.cellPadding||0;_7-=(_10+_11)
+if(_4)_7-=isc.Element.$ym(_4)}
+if(_6){if(this.cellSpacing)_6-=2*this.cellSpacing;var _12,_13;if(_4){_12=isc.Element.$tr(_4,true);_13=isc.Element.$ts(_4,true)}
+if(_12==null)_12=this.cellPadding||0;if(_13==null)_13=this.cellPadding||0;_6-=(_12+_13)
+_6-=isc.Element.$yn(_4)}
+var _14=isc.Browser.isMoz?this.$94:this.$92,_15=isc.Browser.isMoz?this.$11j:this.$93;if(_8){var _16=this.$10a;if(_9||!isc.Browser.isMoz)_16[1]=null;else _16[1]="white-space:nowrap;";if(_6!=null)_16[2]=_15+_6+"px;"
+else _16[2]=null;if(_7!=null)_16[3]=_14+_7+"px;"
+else _16[3]=null;_3.append(_16.join(isc.emptyString));if(!isc.Browser.isMoz){var _17=isc.DynamicForm.$818();_17[1]=_7;_17[3]=_4;_17[5]=_5;if(!_9)_17[7]=this.$95
+else _17[7]=null;_3.append(_17.join(isc.emptyString))}}else if(!_9){_3.append(this.$95)}
+_3.append(this.getTitleHTML(_1,_2));if(_8){if(!isc.Browser.isMoz)_3.append(this.$96);_3.append(this.$97)}
+return _3.release()}
+,isc.A.$11i=function isc_DynamicForm__containsItemTitleAttrHTML(_1){if(!isc.DynamicForm.$11k){isc.DynamicForm.$11l=[" ",isc.DynamicForm.$89,"='",null,"' ",isc.DynamicForm.$9a,"='",isc.DynamicForm.$9g,"' ","ID="]}
+isc.DynamicForm.$11l[3]=_1.getItemID();isc.DynamicForm.$11l[10]=this.$427(_1);return isc.DynamicForm.$11l.join(isc.emptyString)}
+,isc.A.$427=function isc_DynamicForm__getTitleCellID(_1){return this.$qs(_1.getID()+this.$63z)}
+,isc.A.getTitleCell=function isc_DynamicForm_getTitleCell(_1){if(!this.isDrawn())return null;_1=this.getItem(_1);if(!_1)return null;return isc.Element.get(this.$427(_1))}
+,isc.A.updateTitleCellState=function isc_DynamicForm_updateTitleCellState(_1){var _2=this.getTitleCell(_1);if(_2==null)return;_1=this.getItem(_1);_2.className=_1.getTitleStyle();_2.innerHTML=this.getTitleCellInnerHTML(_1,_1.getErrors())}
+,isc.A.getTitleHTML=function isc_DynamicForm_getTitleHTML(_1,_2){var _3=isc.StringBuffer.create();var _4=_1.visible?_1.getTitleHTML():null;if(_4){var _5=this.isRequired(_1),_6=this.getTitleOrientation(_1),_7=(_6==isc.Canvas.LEFT||_6==isc.Canvas.TOP);_3.append((_5&&this.hiliteRequiredFields?(_7?this.requiredTitlePrefix:this.requiredRightTitlePrefix):(_7?this.titlePrefix:this.rightTitlePrefix)),_4,(_5&&this.hiliteRequiredFields?(_7?this.requiredTitleSuffix:this.requiredRightTitleSuffix):(_7?this.titleSuffix:this.rightTitleSuffix)))}else{_3.append(" ")}
+return _3.release()}
+,isc.A.getFormTagStartHTML=function isc_DynamicForm_getFormTagStartHTML(){var _1=this.$10c,_2=this.getFormID(),_3=this.getID();_1[3]=_2;if(this.$11e())_1[4]=this.$10e;else _1[4]=null;_1[6]=this.method;_1[8]=this.action;if(this.isMultipart())_1[10]=isc.DynamicForm.MULTIPART_ENCODING;else _1[10]=isc.DynamicForm.NORMAL_ENCODING;if(this.target!=null){_1[11]=this.$10f;_1[12]=this.target;_1[13]=this.$ob}else{_1[11]=null;_1[12]=null;_1[13]=null}
+_1[15]=_3;_1[17]=_3;return _1.join(isc.emptyString)}
+,isc.A.getTableStartHTML=function isc_DynamicForm_getTableStartHTML(){var _1=isc.isA.DynamicForm(this)?this.$10g:isc.DynamicForm.getPrototype().$10g;_1[1]=this.$11n();_1[4]=this.isPrinting?"100%":(this.getInnerContentWidth!=null?this.getInnerContentWidth():this.getInnerWidth());_1[6]=this.cellSpacing;_1[8]=this.cellPadding;_1[10]=this.cellBorder;return _1.join(isc.emptyString)}
+,isc.A.$11n=function isc_DynamicForm__getTableElementID(){return this.$qs(this.$10h)}
+,isc.A.$11o=function isc_DynamicForm__getTableElement(){return isc.Element.get(this.$11n())}
+,isc.A.layoutChildren=function isc_DynamicForm_layoutChildren(_1,_2,_3,_4){this.invokeSuper(isc.DynamicForm,"layoutChildren",_1,_2,_3,_4);var _5=this.getItems();if(!_5)return;for(var i=0;i<_5.length;i++){var _7=_5[i].width,_8=_5[i].height;if((isc.isA.String(_7)&&(_7.contains("%")||_7.contains("*")))||(isc.isA.String(_8)&&(_8.contains("%")||_8.contains("*"))))
+{this.markForRedraw("size change with dynamic size children");break}}}
+,isc.A.getAbsPosHTML=function isc_DynamicForm_getAbsPosHTML(){var _1=isc.SB.create();for(var _2=0,_3=this.items.length;_2<_3;_2++){var _4=this.items[_2];if(!_4)continue;_4.$10x();if(!_4.visible)continue;var _5=!_4.$712(),_6=this.showInlineErrors;_1.append(_4.getStandaloneItemHTML(_4.getValue(),_5,_6))}
+return _1.release()}
+,isc.A.getScrollWidth=function isc_DynamicForm_getScrollWidth(_1){if(this.$qz){this.$qz=null;this.adjustOverflow("widthCheckWhileDeferred")}
+if(!_1&&this.$su!=null)return this.$su;var _2;if(!isc.Browser.isIE||!this.$11e()||!(this.isDrawn()||this.handleDrawn())||this.items==null)
+{_2=isc.Canvas.$b4.getScrollWidth.call(this,_1)}else{_2=0;for(var i=0;i<this.items.length;i++){var _4=this.items[i];if(_4.visible==false||!_4.isDrawn())continue;var _5=_4.getAbsDiv();if(_5){var _6=_5.scrollWidth+_4.$11p(_4.left);if(_6>_2)_2=_6}}}
+this.$su=_2;return _2}
+,isc.A.getScrollHeight=function isc_DynamicForm_getScrollHeight(_1){if(this.$qz){this.$qz=null;this.adjustOverflow("heightCheckWhileDeferred")}
+if(!_1&&this.$sz!=null)return this.$sz;var _2;if(!isc.Browser.isIE||!this.$11e()||!(this.isDrawn()||this.handleDrawn())||this.items==null)
+{_2=isc.Canvas.$b4.getScrollHeight.call(this,_1)}else{_2=0;for(var i=0;i<this.items.length;i++){var _4=this.items[i];if(_4.visible==false||!_4.isDrawn())continue;var _5=_4.getAbsDiv();if(_5){var _6=_5.scrollHeight+_4.$11p(_4.top,true);if(_6>_2)_2=_6}}}
+this.$sz=_2;return _2}
+,isc.A.$11q=function isc_DynamicForm__formWillSubmit(){return this.canSubmit||this.isMultipart()||(this.action!=isc.DynamicForm.getPrototype().action)}
+,isc.A.submitForm=function isc_DynamicForm_submitForm(){if(!this.$11q()){this.logWarn("Attempt to perform direct submission on DynamicForm where this.canSubmit "+"is false. Please set this property to true, or use the standard databinding "+"interfaces to send data to the server.")}
+if(this.getFileItemForm()!=null){this.logWarn("Performing a direct submission on a DynamicForm containing a FileItem. "+"Note: This item's value will not be submitted to the server. FileItems "+"are intended for use with databound forms backed by the SmartClient server "+"only. If you are not using the SmartClient Databinding subsystem, "+"use an UploadItem rather than a FileItem to submit a file as part of a raw "+"HTTP request. Otherwise use saveData() rather than a direct call to "+"submitForm() to save the full set of values for the form.")}
+var _1=this.getForm();if(!_1)return;if(_1.action!=this.action)_1.action=this.action;try{return _1.submit()}catch(e){this.logWarn("Form submission was unsuccessful. In some browsers this can occur when "+"an upload item is present and has an invalid value.\n"+e.message);this.formSubmitFailed()}}
+,isc.A.performImplicitSave=function isc_DynamicForm_performImplicitSave(_1,_2){this.implicitSaveInProgress=true;if(_1){if(_1.$887){_1.parentItem.updateValue()}
+if(_1.awaitingImplicitSave)delete _1.awaitingImplicitSave;if(_1.$da!=null)isc.Timer.clear(_1.$da)}
+if(this.awaitingImplicitSave)delete this.awaitingImplicitSave;this.logInfo("implicitSave called "+(!_2?"by editorExit()":"after implicitSaveDelay ("+this.implicitSaveDelay+"ms)")+" for item "+_1.name+".");this.saveData(this.getID()+".$888(data)",{showPrompt:false})}
+,isc.A.$888=function isc_DynamicForm__implicitSaveCallback(_1){delete this.implicitSaveInProgress;this.implicitSaveCallback(_1)}
+,isc.A.implicitSaveCallback=function isc_DynamicForm_implicitSaveCallback(_1){}
+,isc.A.formSubmitFailed=function isc_DynamicForm_formSubmitFailed(){isc.warn(this.formSubmitFailedWarning);var _1=this.getValues()._transaction;if(_1!=null&&isc.RPCManager&&isc.XMLTools){var _2=isc.XMLTools.parseXML(this.getValues()._transaction),_3;if(_2)_3=isc.XMLTools.selectNumber(_2,"//transactionNum");if(_3!=null){isc.RPCManager.doClearPrompt(_3);isc.RPCManager.clearTransaction(_3)}
+var _4=this.getItem("_transaction");if(_4&&isc.isA.HiddenItem(_4)){this.clearValue("_transaction")}}}
+,isc.A.setAction=function isc_DynamicForm_setAction(_1,_2){this.action=_1;var _3=this.getForm();if(_3)_3.action=_1;this.$66g=!_2}
+,isc.A.setTarget=function isc_DynamicForm_setTarget(_1){this.target=_1;var _2=this.getForm();if(_2)_2.target=_1}
+,isc.A.setMethod=function isc_DynamicForm_setMethod(_1){this.method=_1;var _2=this.getForm();if(_2)_2.method=_1}
+,isc.A.getFileItemForm=function isc_DynamicForm_getFileItemForm(){if(!isc.FileItem)return null;var _1=this.getItems()||[];for(var i=0;i<_1.length;i++){if(isc.isA.FileItem(_1[i]))return _1[i].canvas}
+return null}
+,isc.A.$10d=function isc_DynamicForm__handleNativeSubmit(){return false}
+,isc.A.validate=function isc_DynamicForm_validate(_1,_2,_3,_4,_5){if(this.disableValidation)return true;if(this.dataSource&&this.dataSource.useLocalValidators!=null&&this.useLocalValidators==false)return true;var _6=this.hasErrors(),_7=false,_8=this.getForm(),_9=false;var _10={},_11={},_12=this.getValues(),_13=(_1&&!_2&&this.dataSource)?isc.addProperties({},this.getDataSource().getFields()):null;var _14={unknownErrorMessage:this.unknownErrorMessage,serverValidationMode:"full"};if(_3)
+_14.typeValidationsOnly=_3;if(_5)
+_14.skipServerValidation=_5;var _15=isc.rpc?isc.rpc.startQueue():false;for(var _16=0;_16<this.items.length;_16++){var _17=false,_18=this.items[_16],_19=_18.getFieldName(),_20=isc.DynamicForm.$702(this.dataPath,_18.getDataPath()),_21=_18.getValue(),_22=!_18.visible||isc.isA.HiddenItem(_18);if(_22&&!_1)continue;if(_18.validators!=null){if(!isc.isAn.Array(_18.validators)){_18.validators=[_18.validators]}
+var _23=this.validateField(_18,_18.validators,_21,_12,_14);if(_23!=null){if(_23.errors!=null){_17=this.addValidationError(_10,_19||_20,_23.errors);if(_17)_7=true}
+if(_23.resultingValue!=null){_21=_23.resultingValue;if(_20){isc.DynamicForm.$70n(_20,_21,_12)}else if(_19){_12[_19]=_21}
+_9=true}}}
+if(_22&&_17)_11[_19||_20]=_10[_19||_20];if(_13)delete _13[_19]}
+if(_13){_14.dontValidateNullValues=true;delete _14.typeValidationsOnly;for(var i in _13){var _25=_13[i],_26=i,_27=_25.validators,_21=_12[_26];if(_27!=null){var _21=_12[_26];var _23=this.validateField(_25,_27,_21,_12,_14);if(_23!=null&&_23.errors!=null){this.addValidationError(_10,_26,_23.errors)}}
+if(_10[_26]!=null)_11[_26]=_10[_26]}}
+if(!_15&&isc.rpc)isc.rpc.sendQueue();if(_7)this.logInfo("Validation errors: "+isc.Log.echoAll(_10));if(_4)return(_7?_10:true);this.setErrors(_10);if(_9){this.setItemValues(_12);for(var _28 in _12){if(this.getItem(_28)==null)this.$10w(_28,_12[_28])}}
+if(_7||_6)this.showErrors(_10,_11);return!_7}
+,isc.A.valuesAreValid=function isc_DynamicForm_valuesAreValid(_1,_2){var _3=this.validate(_1,null,null,true);if(_3===true){return(_2?null:true)}else{return(_2?_3:false)}}
+,isc.A.getValidatedValues=function isc_DynamicForm_getValidatedValues(){if(!this.validate())return null;return this.getValues()}
+,isc.A.showErrors=function isc_DynamicForm_showErrors(_1,_2,_3){var _4;if(_2===_4)_2=this.getHiddenErrors();if(_1===_4)_1=this.getErrors();if(_1&&!this.showInlineErrors&&(!this.$52o||this.$52o.destroyed||!this.items.contains(this.$52o)))
+{this.createErrorItem()}
+this.markForRedraw("Validation Errors Changed");if(_1&&!isc.isAn.emptyObject(_1)&&!_3){for(var _5 in _1){var _6=this.getItem(_5);if(_6&&_6.isVisible()&&_6.isDrawn()){this.$11b(_6);break}}}
+if(!this.showInlineErrors){this.delayCall("scrollIntoView",[0,0],100)}
+if(_2){this.$21z(_2)}}
+,isc.A.getHiddenErrors=function isc_DynamicForm_getHiddenErrors(){if(!this.errors)return null;var _1=false,_2={};for(var _3 in this.errors){var _4=this.getItem(_3);if(!_4||!_4.visible){_1=true;_2[_3]=this.errors[_3]}}
+return(_1?_2:null)}
+,isc.A.showFieldErrors=function isc_DynamicForm_showFieldErrors(_1,_2){var _3;return this.showErrors(_3,_3,_2)}
+,isc.A.$21z=function isc_DynamicForm__handleHiddenValidationErrors(_1){if(_1==null||isc.isAn.emptyObject(_1))return;var _2;if(this.handleHiddenValidationErrors){_2=this.handleHiddenValidationErrors(_1)}
+if(_2==false)return;var _3="Validation errors occurred for the following fields "+"with no visible form items:";for(var _4 in _1){var _5=_1[_4];if(!isc.isAn.Array(_5))_5=[_5];if(_5.length==0)continue;_3+="\n"+_4+":";for(var i=0;i<_5.length;i++){_3+=(i==0?"- ":"\n - ")+_5[i]}}
+this.logWarn(_3,"validation")}
+,isc.A.isRequired=function isc_DynamicForm_isRequired(_1){return(isc.DynamicForm.canEditField(_1,this)&&(_1.required||_1.$11m||this.isXMLRequired(_1)))}
+,isc.A.setRequiredIf=function isc_DynamicForm_setRequiredIf(){var _1=this.getValues();for(var _2=0;_2<this.items.length;_2++){var _3=this.items[_2],_4=_3.validators;delete _3.$11m;if(!_3.visible||!_4||_4.length==0)continue;for(var v=0;v<_4.length;v++){var _6=_4[v];if(!_6)continue;var _7=isc.Validator.getValidatorType(_6);if(_7==this.$10i){var _8=_3.getValue();if(_6.expression!=null&&!isc.isA.Function(_6.expression)){isc.Func.replaceWithMethod(_6,"expression","item,validator,value")}
+_3.$11m=_6.expression.apply(this,[_3,_6,_8])}else if(_7==this.$842){_3.$11m=true}}}}
+,isc.A.setFocusItem=function isc_DynamicForm_setFocusItem(_1){_1=this.getItem(_1);this.$10n=_1}
+,isc.A.getFocusItem=function isc_DynamicForm_getFocusItem(){var _1=this.getFocusSubItem();while(_1&&_1.parentItem!=null){_1=_1.parentItem}
+return _1}
+,isc.A.getFocusSubItem=function isc_DynamicForm_getFocusSubItem(){return this.$10n}
+,isc.A.$vl=function isc_DynamicForm__readyToSetFocus(){return!this.isDisabled()}
+,isc.A.setFocus=function isc_DynamicForm_setFocus(_1){if(!this.$vl())return;var _2=this.isVisible();if(_1){var _3=this.getFocusSubItem();if(_3==null){var _4=this.getItems();if(_4!=null){for(var i=0;i<_4.length;i++){var _6=_4[i];if(_6.$kk()&&_6.isDrawn()&&_6.isVisible()&&!_6.isDisabled())
+{_3=_6;break}}}}
+var _7=isc.EH.lastEvent;if(_3!=null&&!(_7.target==this&&_7.eventType==isc.EH.MOUSE_DOWN)){return this.focusInItem(_3)}}
+this.Super("setFocus",arguments);if(!_1){this.$11r(this.getFocusSubItem())}}
+,isc.A.$kf=function isc_DynamicForm__focusInNextTabElement(_1,_2,_3){if(_3||!this.items||this.items.length==0||(_2&&isc.EH.targetIsMasked(this,_2)))
+{return this.Super("$kf",arguments)}
+var _4=this.items,_5=this.getFocusSubItem();if(_5==null){this.focusAtEnd(_1);return}
+while(_5.parentItem){if(_5.$11s(_1))return;_5=_5.parentItem}
+if(_5.$11s(_1))return;_5=this.$11t(_5,_1);if(_5!=null){this.focusInItem(_5)}else{if(isc.EH.$kj==this&&isc.EH.$kl==this){this.focusAtEnd(_1)}else{return this.Super("$kf",arguments)}}}
+,isc.A.$11t=function isc_DynamicForm__getNextFocusItem(_1,_2){var _3=this.items,_4=_1,_5=_1.getGlobalTabIndex(),_6,_7,_8=_3.indexOf(_1);for(var i=0;i<_3.length;i++){var _10=_3[i];if(_10==_1)continue;var _11=_10.getGlobalTabIndex();if(_11<0){continue}
+if(!this.$11u(_10,true))continue;if(_2){if(_11==_5&&i>_8){_6=_10;break}
+if(_11>_5&&(_7==null||_7>_11))
+{_6=_10;_7=_11}}else{if((_11<_5||(_11==_5&&_8>i))&&(_7==null||_7<=_11))
+{_6=_10;_7=_11}}}
+return _6}
+,isc.A.focusAtEnd=function isc_DynamicForm_focusAtEnd(_1){if(!this.items)return;var _2,_3,_4=this.items;for(var i=0;i<_4.length;i++){var _6=_4[i],_7=_6.getGlobalTabIndex();if(_7<0||!this.$11u(_6,true))continue;if((_3==null)||(_1&&_7<_3)||(!_1&&_7>=_3))
+{_2=_6;_3=_7}}
+if(_2&&this.$11u(_2,true))this.focusInItem(_2,!!_1);else{var _8,_9=isc.EH.clickMaskRegistry;if(_9){for(var i=_9.length-1;i>=0;i--){if(isc.EH.isHardMask(_9[i])){_8=_9[i];break}}}
+this.$kf(_1,_8,true)}}
+,isc.A.$11u=function isc_DynamicForm__canFocusInItem(_1,_2){if(isc.isA.String(_1))_1=this.getItem(_1);return _1&&_1.$kk()&&_1.isDrawn()&&_1.isVisible()&&!_1.isDisabled()&&(!_2||_1.tabIndex!=-1)}
+,isc.A.focusInItem=function isc_DynamicForm_focusInItem(_1,_2){if(_1!=null){var _3=this.getItem(_1)}else{var _3=this.getFocusSubItem()}
+if(!_3){if(_1!=null)this.logWarn("couldn't find focus item: "+_1);return}
+if(_3.$kk()){_3.focusInItem(_2);this.setFocusItem(_3);if(this.$10u){var _4=this;isc.Page.setEvent("idle",function(){if(!_4.destroyed)_4.focusInItem()},isc.Page.FIRE_ONCE)}}else{this.logWarn("focusInItem: item cannot accept focus: "+_3)}}
+,isc.A.clearFocusItem=function isc_DynamicForm_clearFocusItem(){delete this.$10n}
+,isc.A.blurFocusItem=function isc_DynamicForm_blurFocusItem(){var _1=this.getFocusSubItem();if(_1!=null){this.$11r(_1);this.clearFocusItem()}}
+,isc.A.$11r=function isc_DynamicForm__blurItem(_1){if(_1!=null)_1.blurItem()}
+,isc.A.$106=function isc_DynamicForm__blurFocusItemWithoutHandler(){var _1=this.getFocusSubItem();if(_1!=null&&_1.hasFocus){if(this.$11v==null)this.$11v=0;else this.$11v+=1;this.$11r(_1)}else{this.logDebug("blur w/o handler: no item to blur")}}
+,isc.A.$11b=function isc_DynamicForm__focusInItemWithoutHandler(_1){if(!_1||!this.$11u(_1)){var _2;if(_1&&_1.parentItem){this.$11b(_1.parentItem);_2=true}
+this.logInfo("$11b("+_1+"): not calling focus as item not focusable or item already has focus"+(_2?". Putting focus into containerItem instead.":""),"nativeFocus")
+return}
+var _3=_1.hasFocus;if(isc.Browser.isIE){var _4=isc.DynamicForm.$mu(document.activeElement);_3=(_4&&_4.item==_1)}
+if(_3)return;this.$65n(_1);this.focusInItem(_1)}
+,isc.A.$65n=function isc_DynamicForm__suppressFocusHandlerForItem(_1){if(this.$11w==null)this.$11w=0;else this.$11w+=1;this.$11x=_1}
+,isc.A.setOpacity=function isc_DynamicForm_setOpacity(_1,_2,_3,_4,_5,_6){var _7=this.opacity;this.invokeSuper(isc.DynamicForm,"setOpacity",_1,_2,_3,_4,_5,_6);_1=this.opacity;if(isc.Browser.isMoz&&this.hasFocus&&(_1!=_7)&&(_1==null||_1==100||_7==null||_7==100))
+{var _8=this.getFocusSubItem();if(_8&&_8.$429()){this.$106();this.$11b(_8)}}}
+,isc.A.clearingElement=function isc_DynamicForm_clearingElement(_1){if(this.$11w!=null&&this.$11x==_1){delete this.$11w;delete this.$11x}
+if(this.$11v!=null&&(this.getFocusSubItem()==_1)){delete this.$11v}}
+,isc.A.hide=function isc_DynamicForm_hide(){if(isc.Browser.isMoz)this.$11r(this.getFocusSubItem());this.Super("hide",arguments)}
+,isc.A.setVisibility=function isc_DynamicForm_setVisibility(_1,_2,_3,_4){this.invokeSuper(isc.DynamicForm,"setVisibility",_1,_2,_3,_4);this.itemsVisibilityChanged();if(this.isVisible()&&this.isDrawn()&&this.autoFocus)this.focus()}
+,isc.A.clear=function isc_DynamicForm_clear(){this.Super("clear",arguments);this.itemsVisibilityChanged()
+this.$11a()}
+,isc.A.$lf=function isc_DynamicForm__focusChanged(_1){this.Super("$lf",arguments);if(!this.hasFocus)this.$11r(this.getFocusSubItem())}
+,isc.A.parentVisibilityChanged=function isc_DynamicForm_parentVisibilityChanged(_1){if(!this.isVisible()&&isc.Browser.isMoz)this.$11r(this.getFocusSubItem());this.Super("parentVisibilityChanged",arguments);this.itemsVisibilityChanged();if(this.isVisible()&&this.autoFocus)this.focus()}
+,isc.A.$kr=function isc_DynamicForm__allowNativeTextSelection(_1){var _2=this.$ne(_1);if(_2.item){var _3=_2.item.$kr(_1,_2);if(_3!=null)return _3}
+return this.Super("$kr",arguments)}
+,isc.A.prepareForDragging=function isc_DynamicForm_prepareForDragging(_1,_2,_3,_4){var _5=this.ns.EH;if(_5.dragTarget)return;var _6=_5.lastEvent,_7=this.$ne(_6);if(_7.item&&(_7.overElement||_7.overTextBox||_7.overControlTable))return false;return this.invokeSuper(isc.DynamicForm,"prepareForDragging",_1,_2,_3,_4)}
+,isc.A.$ne=function isc_DynamicForm__getEventTargetItemInfo(_1){if(!_1)_1=isc.EH.lastEvent;var _2=isc.EH.isMouseEvent(_1.eventType)?_1.nativeTarget:_1.nativeKeyTarget;var _3=isc.DynamicForm.$mu(_2,this);_1.itemInfo=_3;return _3}
+,isc.A.getEventItem=function isc_DynamicForm_getEventItem(){var _1=isc.EH.lastEvent.itemInfo;if(_1!=null&&!_1.inactiveContext&&!_1.overTitle)return _1.item;return null}
+,isc.A.getEventItemInfo=function isc_DynamicForm_getEventItemInfo(){var _1=this.$ne();if(_1==null||_1.inactiveContext)return null;return{item:_1.item,overItem:(_1.overElement||_1.overTextBox||_1.overControlTable),overTitle:_1.overTitle,icon:_1.overIcon}}
+,isc.A.handleMouseStillDown=function isc_DynamicForm_handleMouseStillDown(_1,_2){if(isc.$cv)arguments.$cw=this;var _3=this.$ne(_1),_4=((_3.overTitle||_3.inactiveContext)?null:_3.item);if(_4!=null){if(_4.form!=this)return;if(_4.mouseStillDown){if(_4.handleMouseStillDown(_1)==false)return false}}}
+,isc.A.handleMouseDown=function isc_DynamicForm_handleMouseDown(_1,_2){var _3=this.$ne(_1),_4=(_3.overTitle?null:_3.item);if(_4!=null){if(_4.form!=this)return;this.$92i=_4;_4.handleMouseDown(_1);if(isc.Browser.isSafari&&!_3.inactiveContext&&_3.overElement&&isc.isA.CheckboxItem(_4))
+{_4.focusInItem()}}}
+,isc.A.$11y=function isc_DynamicForm__itemMouseEvent(_1,_2){var _3=this.$11z,_4=this.$110,_5=this.$111,_6=_1.item,_7=_1.overTitle,_8=_1.overIcon;if(_1.inactiveContext!=null){_6=null;_7=null;_8=null}
+if(_3&&_3.destroyed){_3=null;this.$11z=null;this.$111=null;this.$110=null}
+if(_6&&_6.destroyed){_6=null;_7=null;_8=null}
+this.$11z=_6;this.$110=_7;this.$111=_8;if(_2==isc.EH.MOUSE_OVER){if(_6){if(_7)_6.handleTitleOver();else{if(_8)this.$111=null;_6.handleMouseOver()}}}else if(_2==isc.EH.MOUSE_OUT){if(_3){if(_4)_3.handleTitleOut();else{if(_5)_3.$114(_5);_3.handleMouseOut()}}}else{var _9=(_3!=_6||_4!=_7);if(_9){if(_3){if(_4)_3.handleTitleOut();else{if(_5)_3.$114(_5);_3.handleMouseOut()}}
+if(_6){if(_7)_6.handleTitleOver();else{if(_8)_6.$113(_8);_6.handleMouseOver()}}}else{if(_7)_6.handleTitleMove();else{if(_5!=_8){if(_5)_6.$114(_5);if(_8)_6.$113(_8)}else if(_6){if(_8)_6.$115(_8);_6.handleMouseMove()}}}}}
+,isc.A.handleMouseOver=function isc_DynamicForm_handleMouseOver(_1,_2){if(this.mouseOver&&this.mouseOver(_1,_2)==false)return false;this.$11y(this.$ne(_1),isc.EH.MOUSE_OVER)}
+,isc.A.handleMouseMove=function isc_DynamicForm_handleMouseMove(_1,_2){if(this.mouseMove&&this.mouseMove(_1,_2)==false)return false;var _3=this.$ne(_1);this.$11y(_3,isc.EH.MOUSE_MOVE)}
+,isc.A.handleMouseOut=function isc_DynamicForm_handleMouseOut(_1,_2){this.$11y({},isc.EH.MOUSE_OUT);if(this.mouseOut&&this.mouseOut(_1,_2)==false)return false}
+,isc.A.bubbleItemHandler=function isc_DynamicForm_bubbleItemHandler(_1,_2,_3,_4,_5,_6){var _7=this.getItemById(_1),_8=null;for(;_7!=null;_7=_7.parentItem){if(_7.form!=this)continue;if(_7[_2]!=null&&!isc.isA.Function(_7[_2])){isc.Func.replaceWithMethod(_7,_2,"arg1,arg2,arg3,arg4")}
+if(_7[_2]==null){this.logWarn("handler:"+_2+" is not present on itemID "+_1);return false}
+_8=_7[_2](_3,_4,_5,_6);if(_8==false)return _8}
+return _8}
+,isc.A.bubbleInactiveEditorEvent=function isc_DynamicForm_bubbleInactiveEditorEvent(_1,_2,_3){return this.bubbleItemHandler(_1,"$680",_2,_3.inactiveContext,_3)}
+,isc.A.elementChanged=function isc_DynamicForm_elementChanged(_1){var _2=this.bubbleItemHandler(_1,"elementChanged",_1);return(_2!=false)}
+,isc.A.handleClick=function isc_DynamicForm_handleClick(_1,_2){var _3=this.$ne(_1);if(this.$92i&&this.$92i!=_3.item){if(this.$92i.blurItem){this.$92i.blurItem()}
+delete this.$92i;return}
+if(this.editingOn){if(!_3||!_3.item||(!_3.inactiveContext&&!_3.overTitle&&!_3.overIcon&&!_3.overElement&&!_3.overTextBox&&!_3.overControlTable)){var _4=false;if(_3&&_3.item&&_3.item.isA("SpacerItem")){_4=true}
+this.logWarn("No item clicked upon, passing the click to the DF","EventHandler");if(!_4)return this.Super("handleClick",arguments)}}
+var _5;if(_3&&_3.item){var _6=_3.item;if(_3.inactiveContext){this.logInfo("Bubbling inactive editor event for "+_6.ID,"EventHandler");_5=this.bubbleInactiveEditorEvent("click",_6,_3)}else{if(_3.overTitle){this.logInfo("Bubbling handleTitleClick event for "+_6.ID,"EventHandler");_5=this.bubbleItemHandler(_6,"handleTitleClick",_6)}else{var _7=(_3.overElement||_3.overTextBox||_3.overControlTable);_7=_7||_6.isA("SpacerItem");if(_3.overIcon&&(_6.form==this)){if(_6.$116(_3.overIcon)==false)
+return false;var _8=_6.getIcon(_3.overIcon);if(_8&&_8.writeIntoItem)
+_7=true}
+if(_7)this.logInfo("Bubbling handleClick event for "+_6.ID,"EventHandler");if(_7&&this.bubbleItemHandler(_6,"handleClick",_6)==false){_5=false}else{if(_7)this.logInfo("Bubbling handleCellClick event for "+_6.ID,"EventHandler");_5=this.bubbleItemHandler(_6,"handleCellClick",_6)}}}}
+if(_5==false||_5==isc.EH.STOP_BUBBLING)return _5;return this.Super("handleClick",arguments)}
+,isc.A.handleDoubleClick=function isc_DynamicForm_handleDoubleClick(_1,_2){var _3=this.$ne(_1);var _4;if(_3&&_3.item){var _5=_3.item;if(_3.inactiveContext){_4=this.bubbleInactiveEditorEvent(_5,"doubleClick",_3)}else if(_3.overTitle){_4=this.bubbleItemHandler(_5,"handleTitleDoubleClick",_5)}else{var _6=(_3.overElement||_3.overTextBox||_3.overControlTable);if(_3.overIcon){if(_5.$116(_3.overIcon)==false)return false;var _7=_5.getIcon(_3.overIcon);if(_7&&_7.writeIntoItem)_6=true}
+if(_6&&this.bubbleItemHandler(_5,"handleDoubleClick",_5)==false){_4=false}else{_4=this.bubbleItemHandler(_5,"handleCellDoubleClick",_5)}}}
+if(_4==false||_4==isc.EH.STOP_BUBBLING)return _4;return this.Super("handleDoubleClick",arguments)}
+,isc.A.elementFocus=function isc_DynamicForm_elementFocus(_1,_2){if(!this.hasFocus)isc.EventHandler.focusInCanvas(this);var _3=this.getItemById(_2);this.setFocusItem(_3);var _4=true,_5=false;if(this.$11w!=null){if(this.$11x!=_3){delete this.$11w;delete this.$11x}else{_5=true;this.$11w-=1;if(this.$11w<0){delete this.$11w;delete this.$11x}}}
+_4=this.bubbleItemHandler(_2,"elementFocus",_5);return(_4!=false)}
+);isc.evalBoundary;isc.B.push(isc.A.elementBlur=function isc_DynamicForm_elementBlur(_1,_2){if(!isc.isA.FormItem(this.getItemById(_2)))return;var _3=true;if(this.$11v==null)_3=this.bubbleItemHandler(_2,"elementBlur");else{this.$11v-=1;if(this.$11v<0)delete this.$11v}
+this.clearPrompt();return(_3!=false)}
+,isc.A.handleKeyPress=function isc_DynamicForm_handleKeyPress(_1,_2){if(_1.keyName==this.$10j){if(this.saveOnEnter){var _3=this.getFocusSubItem();if(_3&&_3.shouldSaveOnEnter()){this.submit()}}}
+if(_1.characterValue!=null&&_1.characterValue!=0&&(_1.keyName!="Escape"))
+{return isc.EventHandler.STOP_BUBBLING}
+if(this.$118[_1.keyName]&&_1.keyTarget!=this){return isc.EventHandler.STOP_BUBBLING}
+return this.Super("handleKeyPress",arguments)}
+,isc.A.handleKeyDown=function isc_DynamicForm_handleKeyDown(_1,_2){var _3
+if(this.convertToMethod("keyDown")){_3=this.keyDown(_1,_2)}
+var _4=isc.EH.getKey();if(_3!=false&&this.$118[_4]){return isc.EH.STOP_BUBBLING}
+return _3}
+,isc.A.itemHoverHTML=function isc_DynamicForm_itemHoverHTML(_1){if(_1.implementsPromptNatively)return null;var _2=_1.prompt;if(!_2&&_1.parentItem)_2=this.itemHoverHTML(_1.parentItem)
+return _2}
+,isc.A.titleHoverHTML=function isc_DynamicForm_titleHoverHTML(_1){if(_1.prompt)return _1.prompt;if(this.shouldClipTitle(_1))return _1.getTitle()}
+,isc.A.$119=function isc_DynamicForm__showItemHover(_1,_2){if(_2&&!isc.is.emptyString(_2)&&_1.showHover!=false){var _3=this.$wc(_1);isc.Hover.show(_2,_3,(_1.hoverRect||this.itemHoverRect))}else isc.Hover.clear()}
+,isc.A.$wc=function isc_DynamicForm__getHoverProperties(_1){if(!isc.isA.FormItem(_1))_1=this.getItem(_1);var _2={};if(_1){_2=isc.addProperties({},{align:(_1.hoverAlign!=null?_1.hoverAlign:this.itemHoverAlign),hoverDelay:(_1.hoverDelay!=null?_1.hoverDelay:this.itemHoverDelay),height:(_1.hoverHeight!=null?_1.hoverHeight:this.itemHoverHeight),opacity:(_1.hoverOpacity!=null?_1.hoverOpacity:this.itemHoverOpacity),baseStyle:(_1.hoverStyle!=null?_1.hoverStyle:this.itemHoverStyle),showHover:(_1.showHover!=null?_1.showHover:this.showHover),valign:(_1.hoverVAlign!=null?_1.hoverVAlign:this.itemHoverVAlign),width:(_1.hoverWidth!=null?_1.hoverWidth:this.itemHoverWidth),wrap:(_1.hoverWrap!=null?_1.hoverWrap:this.itemHoverWrap)})}else{_2=isc.addProperties({},{align:this.hoverAlign,hoverDelay:this.hoverDelay,height:this.hoverHeight,opacity:this.hoverOpacity,baseStyle:this.hoverStyle,valign:this.hoverVAlign,width:this.hoverWidth})}
+_2.moveWithMouse=this.hoverMoveWithMouse;return _2}
+,isc.A.showPrompt=function isc_DynamicForm_showPrompt(_1){window.status=_1}
+,isc.A.clearPrompt=function isc_DynamicForm_clearPrompt(){window.status=""}
+,isc.A.isMultipart=function isc_DynamicForm_isMultipart(){return!(this.encoding==isc.DynamicForm.NORMAL||this.encoding==isc.DynamicForm.NORMAL_ENCODING)}
+,isc.A.itemIsLastInRow=function isc_DynamicForm_itemIsLastInRow(_1,_2){var _3=this.items.$8j,_4=_3[_2],_5=this.getItems().indexOf(_1);if(!_4||_5<0)return false;if(_4[this.numCols-1]==_5)return true;return false}
+,isc.A.getColumnWidths=function isc_DynamicForm_getColumnWidths(){var _1=this.items.$8j,_2=[];_2.length=this.numCols;for(var j=0;j<_2.length;j++)_2[j]=0;for(var _4=0;_4<_1.length;_4++){var _5=_1[_4];for(var i=0;i<_5.length;i++){var _7=this.items.get(_5[i]);if(_7.colSpan&&_7.colSpan>1)continue;if(_7.showTitle&&(this.titleOrientation=="left"||!this.titleOrientation)){if(_7.getVisibleTitleWidth()>_2[i]){_2[i]=_7.getVisibleTitleWidth()}
+i++}
+if(_7.width>_2[i])_2[i]=_7.width;if(_7.showTitle&&_7.titleOrientation=="right"&&_7.getVisibleTitleWidth()>_2[i+1]){_2[++i]=_7.getVisibleTitleWidth()}}}
+return _2}
+,isc.A.getItemTableOffsets=function isc_DynamicForm_getItemTableOffsets(_1,_2){var _3=_2||this.items.$8j,_4=this.getItems().indexOf(_1),_5={};_5.itemIndex=_4
+for(var _6=0;_6<_3.length;_6++){var _7=_3[_6],_8=_7.indexOf(_4),_9=_7.lastIndexOf(_4);if(_8>-1&&_9>-1){if(!_5.left||_8<_5.left)_5.left=_8;if(!_5.width||_5.width<_9-_8)_5.width=_9-_8+1;if(!_5.top||_6<_5.top)_5.top=_6;if(!_5.height||_5.height<_6-_5.top){_5.height=_6-_5.top+1}}}
+return _5}
+,isc.A.getItemDropIndex=function isc_DynamicForm_getItemDropIndex(_1,_2){if(!_1)return;if(!_2)_2="L";var _3=this.getItemTableOffsets(_1),_4=this.items.$8j;if(_2=="L")return _3.itemIndex;if(_2=="R"){if(this.itemIsLastInRow(_1)&&this.canAddColumns!=true){return _3.itemIndex+1}
+return _3.itemIndex+1}
+if(_2=="T"){return this.getItemIndexAtTableLocation(_3.top-(_3.top==0?0:1),_3.left)}
+if(_2=="B"){var _5=_3.top+_3.height-1;var _6=this.getItemIndexAtTableLocation(_5+1,_3.left);if(_6==null){_6=this.items.length}
+return _6}}
+,isc.A.getItemIndexAtTableLocation=function isc_DynamicForm_getItemIndexAtTableLocation(_1,_2){var _3=this.items.$8j;if(!_3[_1])return;return _3[_1][_2]}
+,isc.A.getItemAtPageOffset=function isc_DynamicForm_getItemAtPageOffset(_1,_2){this.items.$69e=this.getColumnWidths();var _3=this.items.$8j,_4=this.items.$69e,_5=this.items.$8s;var _6=this.inWhichPosition(_4,_1-this.getPageLeft()),_7=this.inWhichPosition(_5,_2-this.getPageTop());_6=_6==-1?0:_6==-2?_4.length:_6;_7=_7==-1?0:_7==-2?_5.length:_7;if(!_3[_7])return null;var _8=_3[_7][_6],_9=this.getItem(_8);if(_9!=null){_9.$69f=_7;_9.$69g=_6;_9.$69d=_8}
+return _9}
+,isc.A.getNearestItem=function isc_DynamicForm_getNearestItem(_1,_2){var _3=9999999999,_4;this.logDebug("Computing nearest item to ("+_1+","+_2+")","formItemDragDrop");for(var i=0;i<this.items.length;i++){var _6=this.items[i];var _7=_6.getPageRect(true),_8=_7[0],_9=_7[1],_10=_7[2],_11=_7[3],_12=0,_13=0;if(_1>=_8&&_1<=_8+_10&&_2>=_9&&_2<=_9+_11)
+{return _6}
+if(_1>_8){if(_1>_8+_10){_12=_1-(_8+_10)}}else{_12=_8-_1}
+if(_2>_9){if(_2>_9+_11){_13=_2-(_9+_11)}}else{_13=_9-_2}
+var _14=Math.sqrt(_12*_12+_13*_13);this.logDebug("Item "+_6.name+": (l,t,w,h) = "+_7,"formItemDragDrop");this.logDebug("XDelta: "+_12+", yDelta: "+_13+", straight line distance: "+_14,"formItemDragDrop");if(_14<_3){this.logDebug("Item "+_6.name+": distance is shorter than "+_3+", it is now the nearest item","formItemDragDrop");_3=_14;_4=_6}}
+return _4}
+,isc.A.showDragLineForItem=function isc_DynamicForm_showDragLineForItem(_1,_2,_3){this.makeDragLine();if(!_1){this._dragLine.hide();return}
+var _4=_1.getPageRect(),_5=_4[0],_6=_4[1],_7=_4[2],_8=_1.getVisibleHeight(),_9=this.titleOrientation||"left";if(_1.showTitle!=false){if(_9=="left"||_9=="right")_7+=_1.getVisibleTitleWidth();if(_9=="left")_5-=_1.getVisibleTitleWidth()}
+var _10;if(_2<=_5)_2=_5+1;else if(_2>=_5+_7){_2=_5+_7-1;_10=true}
+var _11=_7/ 4;if(_11>20)_11=20;if(_3<=_6)_3=_6+1;else if(_3>=_6+_8)_3=_6+_8-1;var _12=_2-_5,_13=Math.round(_7/ _12),_14=_3-_6,_15=Math.round(_8/ _14),_16=(_5+_7)-_2,_17=Math.round(_7/ _16),_18=(_6+_8)-_3,_19=Math.round(_8/ _18),_20="R",_21,_22,_23,_24;_5--;_6--;if(_10||(Math.min(_13,_17)<Math.min(_15,_19)&&((_13>_17&&_12<_11)||(_17>_13&&_16<_11)))){_20=_10?"R":_13>_17?"L":"R";_22=3;_21=_8;_23=_20=="L"?_5:_5+_7-1;_24=_6}else{_20=_15>_19?"T":"B";_22=_7;_23=_5;_21=3;_24=_20=="T"?_6:_6+_8-1}
+_1.dropSide=_20;if(this.itemIsLastInRow(_1,_1.$69f)&&!this.canAddColumns&&_1.dropSide=="R"){this.hideDragLine();this.setNoDropIndicator();this.$69h=this.currentCursor;this.setCursor("not-allowed")}
+else{if(this.$uh){this.clearNoDropIndicator()
+this.setCursor(this.$69h)}
+var _25={left:_23,top:_24};this.adjustDragLinePosition(_25,_1,_20);_23=_25.left;_24=_25.top;this._dragLine.resizeTo(_22,_21);this._dragLine.setPageRect(_23,_24);this._dragLine.bringToFront();this._dragLine.show()}}
+,isc.A.adjustDragLinePosition=function isc_DynamicForm_adjustDragLinePosition(_1,_2,_3){var _4=this.items.$8j,_5=this.items.indexOf(_2),_6,_7,_8;for(var i=0;i<_4.length;i++){if(_4[i].indexOf(_5)!=-1){_6=i;_7=_4[i].indexOf(_5);_8=_4[i].lastIndexOf(_5);break}}
+if(_6==null||_7==null||_8==null)return;if(_3=="T"){if(_6==0)return;if(_4[_6-1][_7]==_4[_6-1][_8]&&_4[_6-1][_7-1]!=_4[_6-1][_7]&&_4[_6-1][_8+1]!=_4[_6-1][_7])
+{var _10=this.items[_4[_6-1][_7]].getPageRect(true);var _11=_10[1]+_10[3];_1.top-=Math.round((_1.top-_11)/2)}}
+if(_3=="B"){if(_6==_4.length-1)return;if(_4[_6+1][_7]==_4[_6+1][_8]&&_4[_6+1][_7-1]!=_4[_6+1][_7]&&_4[_6+1][_8+1]!=_4[_6+1][_7])
+{var _10=this.items[_4[_6+1][_7]].getPageRect(true);var _11=_10[1];_1.top+=Math.round((_11-_1.top)/2)}}
+if(_3=="L"){if(_7==0)return;var _10=this.items[_4[_6][_7-1]].getPageRect(true);var _12=_10[0]+_10[2];_1.left-=Math.round((_1.left-_12)/2)}
+if(_3=="R"){if(_8==_4[_6].length-1)return;var _10=this.items[_4[_6][_8+1]].getPageRect(true);var _12=_10[0];_1.left+=Math.round((_12-_1.left)/2)}}
+,isc.A.showDragLineForForm=function isc_DynamicForm_showDragLineForForm(){this.makeDragLine();this._dragLine.resizeTo(3,this.getHeight());this._dragLine.setPageRect(this.getPageLeft(),this.getPageTop());this._dragLine.bringToFront();this._dragLine.show()}
+,isc.A.enableField=function isc_DynamicForm_enableField(_1){if(_1==null||isc.isAn.emptyString(_1))return;var _2=this.getItem(_1);if(_2)_2.enable()}
+,isc.A.disableField=function isc_DynamicForm_disableField(_1){if(_1==null||isc.isAn.emptyString(_1))return;var _2=this.getItem(_1);if(_2)_2.disable()}
+,isc.A.showField=function isc_DynamicForm_showField(_1){if(_1==null||isc.isAn.emptyString(_1))return;var _2=this.getItem(_1);if(_2)_2.show()}
+,isc.A.hideField=function isc_DynamicForm_hideField(_1){if(_1==null||isc.isAn.emptyString(_1))return;var _2=this.getItem(_1);if(_2)_2.hide()}
+,isc.A.getSelectionChain=function isc_DynamicForm_getSelectionChain(){if(!this.selectionComponent)return[];var _1=[];var _2=this;while(_2.selectionComponent){_1.add(_2.selectionComponent);_2=_2.selectionComponent}
+var _3=[];for(var i=_1.length-1;i>=0;i--){_3.add(_1[i].getRecordIndex(_1[i].getSelectedRecord()))}
+return _3}
+,isc.A.setCanEdit=function isc_DynamicForm_setCanEdit(_1){this.canEdit=_1;if(this.isDrawn())this.markForRedraw("setCanEdit")}
+,isc.A.setFieldCanEdit=function isc_DynamicForm_setFieldCanEdit(_1,_2){if(_1==null||isc.isAn.emptyString(_1))return;var _3=this.getField(_1);if(_3){if(_3.setCanEdit)_3.setCanEdit(_2);else{_3.canEdit=_2;this.redraw()}}}
+);isc.B._maxIndex=isc.C+235;isc.A=isc.DynamicForm;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.defaultFieldType="text";isc.A.$12a="link";isc.A.$gx="text";isc.A.$12b="select";isc.A.$12c="checkbox";isc.A.$12d="staticText";isc.A.$g2="boolean";isc.A.$12e="binary";isc.A.$12f="blob";isc.A.$52w="multifile";isc.A.$12g="multiupload";isc.A.$9i="upload";isc.A.$52x="file";isc.A.$51x="base64Binary";isc.A.$12h="enum";isc.A.$12i="CycleItem";isc.A.$12j="selectOther";isc.A.$12k="relation";isc.A.$67f="NestedEditorItem";isc.A.$67g="NestedListEditorItem";isc.A.$677="imageFile";isc.A.$678="ViewFileItem";isc.A.$77j="section";isc.A.$77k="SectionItem";isc.A.$77l="button";isc.A.$77m="ButtonItem";isc.A.$450="id";isc.A.$refPropName="__ref";isc.B.push(isc.A.getEditorType=function isc_c_DynamicForm_getEditorType(_1,_2){if(_1._constructor==isc.FormItem.Class)_1._constructor=null;var _3=_2.getDataSource();var _4=this.canEditField(_1,_2),_5=this.defaultFieldType,_6=(_4==false&&_1.readOnlyEditorType)||_1.editorType||_1.formItemType||_1._constructor||_1.type||_5;if((_4==false&&_1.readOnlyEditorType)||_1.editorType||_1.formItemType||_1._constructor)
+{return _6}
+if(_6==this.$12a){if(!this.canEditField(_1,_2))_6=this.$12a;else _6=this.$gx}else if(!_4){if(_6==this.$12e||_6==this.$52x||_6==this.$677)
+_6=this.$678;else if(_6!=this.$77j&&_6!=this.$77k&&_6!=this.$77l&&_6!=this.$77m)
+{_6=this.$12d}}else if(_6==this.$g2){var _7=_1.valueMap;if(!isc.isAn.Array(_7)&&isc.isAn.Object(_7))_6=this.$12b;else _6=this.$12c}else if(_6==this.$12e||_6==this.$12f||_6==this.$52x||_6==this.$677)
+{if(_1.dataSource)_6=this.$52w
+else _6=this.$52x}else if(_6==this.$12g){_6=this.$52w}else if(_6==this.$51x){_6=this.$51x}else if(_6==this.$12h){if(_1.showValueIconOnly)_6=this.$12i
+else _6=this.$12b}else if(isc.DataSource&&isc.isA.DataSource(_3)&&_3.fieldIsComplexType(_1.name)){_6=_1.multiple?_2.nestedListEditorType:_2.nestedEditorType}else{if(!_1.type||(_1.type==_5)||(_1.type!=this.$12j&&(isc.FormItemFactory.getItemClass(_1.type)==null)))
+{if(_1.dataSource){_6=this.$12k}else if(_1.valueMap||_1.optionDataSource||_1.displayField){_6=(_1.showValueIconOnly?this.$12i:this.$12b)}else if(_2&&(_1.length&&_1.length>_2.longTextEditorThreshold))
+{_6=_2.longTextEditorType}else{_6=_5}}}
+return _6}
+,isc.A.canEditField=function isc_c_DynamicForm_canEditField(_1,_2){if(_2&&_2.canEditField){this.logDebug("Component "+_2+" calling 'canEditField()' method for field:"+_1.name,"canEditField");return _2.canEditField()}
+if(_1.canEdit!=null)return _1.canEdit;if(_2.canEdit!=null)return _2.canEdit;return true}
+,isc.A.$mu=function isc_c_DynamicForm__getItemInfoFromElement(_1,_2){var _3=_2?_2.getClipHandle():document,_4={},_5=isc.DynamicForm.$89,_6=isc.DynamicForm.$9a,_7=isc.DynamicForm.$9b,_8=isc.DynamicForm.$9c,_9=isc.DynamicForm.$9e,_10=isc.DynamicForm.$9g;while(_1&&_1!=_3&&_1!=document){var _11=_1.getAttribute?_1.getAttribute(_5):null;if(_11!=null&&!isc.isAn.emptyString(_11)){var _12=window[_11];if(_12&&!_12.destroyed){_4.item=_12;var _13=_12.$681(_1);if(_13!=null){if(this.logIsDebugEnabled("inactiveEditorHTML")){this.logDebug("Event occurred over inactive HTML for item:"+_12+" inactiveContext:"+this.echo(_13),"inactiveEditorHTML")}
+_4.inactiveContext=_13}
+var _14=_1.getAttribute(_6);if(_14==_7)_4.overElement=true;else if(_14==_10)_4.overTitle=true;else if(_14==_8)_4.overTextBox=true;else if(_14==_9)_4.overControlTable=true;else if(_14&&!isc.isAn.emptyString(_14))
+_4.overIcon=_14;break}}
+_1=_1.parentNode}
+return _4}
+,isc.A.getSimpleErrors=function isc_c_DynamicForm_getSimpleErrors(_1){var _2={};if(isc.isAn.Array(_1))_1=_1[0];for(var _3 in _1){var _4=_1[_3];if(_3=="recordPath"&&!isc.isAn.Object(_4))continue;if(isc.isAn.Array(_4)){_2[_3]=[];for(var i=0;i<_4.length;i++){var _6=_4[i];_2[_3][i]=isc.isAn.Object(_6)?isc.shallowClone(_6):{errorMessage:_6}}}else{_2[_3]=isc.isAn.Object(_4)?isc.shallowClone(_4):{errorMessage:_4}}}
+return _2}
+,isc.A.formatValidationErrors=function isc_c_DynamicForm_formatValidationErrors(_1){var _2={};if(isc.isAn.Array(_1))_1=_1[0];for(var _3 in _1){var _4=_1[_3];if(_3=="recordPath"&&!isc.isAn.Object(_4))continue;if(isc.isAn.Array(_4)){_2[_3]=[];for(var i=0;i<_4.length;i++){var _6=_4[i];if(isc.isAn.Object(_6))_6=_6.errorMessage;_2[_3][i]=_6}}else{_2[_3]=isc.isAn.Object(_4)?_4.errorMessage:_4}}
+return _2}
+,isc.A.compareValues=function isc_c_DynamicForm_compareValues(_1,_2){if(_1==_2)return true;if(isc.isA.Date(_1)&&isc.isA.Date(_2))
+return(Date.compareDates(_1,_2)==0);else if(isc.isAn.Array(_1)&&isc.isAn.Array(_2)){return _1.equals(_2)}else{if(isc.isA.Number(_1)||isc.isA.String(_1)||isc.isA.Boolean(_1)){_1=_1.valueOf()}
+if(isc.isA.Number(_2)||isc.isA.String(_2)||isc.isA.Boolean(_2)){_2=_2.valueOf()}
+if(_1==_2)return true;if(isc.isAn.Object(_1)&&isc.isAn.Object(_2)){var _3=isc.addProperties({},_2);for(var _4 in _1){if(_2[_4]!=_1[_4])return false;delete _3[_4]}
+for(var _4 in _3){return false}
+return true}}
+return false}
+,isc.A.valuesHaveChanged=function isc_c_DynamicForm_valuesHaveChanged(_1,_2,_3,_4,_5){var _6=false,_7={};for(var _8 in _3){if(isc.isA.Function(_3[_8]))continue;if(_8==this.$84h)continue;if(isc.isAn.Instance(_3[_8])||isc.isA.Class(_3[_8]))continue;var _9=_5==null?_8:_5+"/"+_8;var _10=_1.getItem(_9);if(_10!=null){_6=!_10.compareValues(_3[_8],_4[_8]);if(_6&&_2)_7[_8]=_3[_8]}else{var _11=_3[_8],_12=_4[_8];var _13=isc.isA.Object(_11),_14=isc.isAn.Object(_12);if(_13&&(isc.isA.Number(_11)||isc.isA.String(_11)||isc.isA.Boolean(_11)))
+{_11=_11.valueOf();_13=false}
+if(_14&&(isc.isA.Number(_12)||isc.isA.String(_12)||isc.isA.Boolean(_12)))
+{_12=_12.valueOf();_14=false}
+if(_13&&!isc.isAn.Array(_11)&&!isc.isA.Date(_11)&&_14&&!isc.isAn.Array(_12)&&!isc.isA.Date(_12))
+{var _15=this.valuesHaveChanged(_1,_2,_3[_8],_4[_8],_9);if(!_2&&_15){_6=true;break}else if(!isc.isAn.emptyObject(_15)){if(_7[_8]==null)_7[_8]={};isc.addProperties(_7[_8],_15)}}else{_6=!isc.DynamicForm.compareValues(_11,_12);if(_6&&_2)_7[_8]=_11}}
+if(_6&&!_2){return true}}
+return(_2?_7:_6)}
+,isc.A.getFilterCriteria=function isc_c_DynamicForm_getFilterCriteria(){var _1={};for(var i=0;i<arguments.length;i++){var _3=arguments[i];if(_3==null)continue;isc.addProperties(_1,_3.getFilterCriteria())}
+return _1}
+,isc.A.$817=function isc_c_DynamicForm__getTopRowCellStart(){if(!this.$819){isc.Canvas.$816.add({target:this,methodName:"$82a"});this.$819=true}
+if(this.$9x==null){this.$9x=["<TD style='",isc.Canvas.$42a,"height:0px;overflow:hidden;padding:0px;' class='",null,"'>",(isc.Browser.isSafari?"<div style='overflow:hidden;height:0px'>":"")]}
+return this.$9x}
+,isc.A.$818=function isc_c_DynamicForm__getTitleInnerTableTemplate(){if(!this.$819){isc.Canvas.$816.add({target:this,methodName:"$82a"});this.$819=true}
+if(this.$10b==null){this.$10b=["<TABLE height=",," border=0 cellspacing=0 cellpadding=0><tr><td class='",,"' style='"+isc.Canvas.$42a+"' ALIGN='",,"'>",null]}
+return this.$10b}
+,isc.A.$82a=function isc_c_DynamicForm__doublingStringsChanged(){this.$9x=null;this.$10b=null}
+);isc.B._maxIndex=isc.C+11;isc.defineClass("InlineFormItem","DynamicForm");isc.A=isc.InlineFormItem.getPrototype();isc.A.position="relative";isc.A.writeFormTag=false;isc.A.canSubmit=true;isc.A.numCols=1;isc.A.autoDraw=true;isc.A=isc.InlineFormItem;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.create=function isc_c_InlineFormItem_create(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13){var _14=isc.addProperties({showTitle:false,validate:function(){this.form.validate()},destroy:function(){this.form.destroy()}},_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13);var _15=this.createRaw().completeCreation({fields:[_14],valuesManager:_14.valuesManager},_14.formProperties);return _15.getItem(0)}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.DynamicForm;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.makeInlineItem=function isc_c_DynamicForm_makeInlineItem(_1,_2,_3,_4){return isc.InlineFormItem.create({name:_1,type:_2,formProperties:_4},_3)}
+,isc.A.getFormValues=function isc_c_DynamicForm_getFormValues(_1){return isc.Canvas.getFormValues(_1)}
+);isc.B._maxIndex=isc.C+2;isc.DynamicForm.registerStringMethods({itemChanged:"item,newValue",itemChange:"item,newValue,oldValue",itemKeyPress:"item,keyName,characterValue",submitValues:"values,form",handleHiddenValidationErrors:"errors"});isc.ClassFactory.defineClass("FormItem");isc.A=isc.FormItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$68s=[null,"_inactiveContext",null];isc.A.$557=isc.Canvas.getPrototype().$557;isc.A.$63x=isc.Canvas.getPrototype().$63x;isc.A.reuseDOMIDs=false;isc.B.push(isc.A.$qs=function isc_FormItem__getDOMID(_1,_2,_3,_4){if(_4==null&&this.isInactiveHTML()){_4=this.$68u}
+if(_4!=null){this.$68s[0]=_1;this.$68s[2]=_4;_1=this.$68s.join(isc.emptyString);if(this.logIsDebugEnabled("inactiveEditorHTML")){this.logDebug("$qs called for inactive HTML -- generated partName:"+_1,"inactiveEditorHTML")}
+_2=false}
+return isc.Canvas.getPrototype().$qs.apply(this,[_1,_2,_3])}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.FormItem;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.create=function isc_c_FormItem_create(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13){this.logWarn("Unsupported call to "+this.getClassName()+".create(). FormItems must be created "+"by their containing form. To create form items, use the 'items' property of a DynamicForm "+"instance. See documentation for more details.");return isc.addProperties({},_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13)}
+,isc.A.getNewTagID=function isc_c_FormItem_getNewTagID(){if(this.$12m==null)this.$12m=0;this.$12m+=1;return"isc_FormItemElement_ID_"+this.$12m}
+,isc.A.setElementTabIndex=function isc_c_FormItem_setElementTabIndex(_1,_2){_1.tabIndex=_2;if(isc.Browser.isMoz){_1.style.MozUserFocus=(_2<0?"ignore":"normal")}}
+,isc.A.$12n=function isc_c_FormItem__aboutToFireNativeElementFocus(_1){if(!isc.Browser.isIE)return;var _2=this.getActiveElement();if(_2&&_2.tagName==null)_2=null;if(_2&&((_2.tagName.toLowerCase()==this.$12o&&_2.type.toLowerCase()==this.$12p)||_2.tagName.toLowerCase()==this.$12q))
+{var _3=_2.createTextRange();_3.execCommand("Unselect")}}
+,isc.A.$12r=function isc_c_FormItem__textBasedItem(_1,_2){if(isc.isA.FormItem(_1))_1=_1.getClassName();if(!this.$12s){this.$12s={text:true,TextItem:true,textItem:true,textArea:true,TextAreaItem:true,textAreaItem:true}
+this.$12t={popUpTextArea:true,PopUpTextAreaItem:true,popUpTextAreaItem:true}}
+return this.$12s[_1]||(!_2||this.$12t[_1])}
+,isc.A.$12u=function isc_c_FormItem__nativeFocusHandler(){if(!window.isc||!isc.DynamicForm)return;isc.EH.$h1("IFCS");var _1;if(isc.Log.supportsOnError){_1=isc.FormItem.$763(this)}else{try{_1=isc.FormItem.$763(this)}catch(e){isc.Log.$am(e)}}
+isc.EH.$h2();return _1}
+,isc.A.$763=function isc_c_FormItem___nativeFocusHandler(_1){var _2=isc.DynamicForm.$mu(_1),_3=_2.item;if(_3&&_3.isDisabled()){_1.blur();return}
+if(_3){return _3.$12v(_1,_3)}
+isc.EH.$h2()}
+,isc.A.$12w=function isc_c_FormItem__nativeBlurHandler(){if(!window.isc||!isc.DynamicForm)return;isc.EH.$h1("IBLR");var _1;if(isc.Log.supportsOnError){_1=isc.FormItem.$764(this)}else{try{_1=isc.FormItem.$764(this)}catch(e){isc.Log.$am(e)}}
+isc.EH.$h2();return _1}
+,isc.A.$764=function isc_c_FormItem___nativeBlurHandler(_1){var _2=isc.DynamicForm.$mu(_1),_3=_2.item;if(_3&&_3.hasFocus){return _3.$12x(_1,_3)}}
+,isc.A.$43a=function isc_c_FormItem__nativeCutPaste(){if(!window.isc)return;var _1=this,_2=isc.DynamicForm.$mu(_1),_3=_2.item;if(_3&&_3.hasFocus){return _3.$43a(_1,_3)}}
+,isc.A.$12y=function isc_c_FormItem__nativeChangeHandler(){if(!window.isc||!isc.DynamicForm)return;var _1=this,_2=isc.DynamicForm.$mu(_1),_3=_2.item;if(_3)return _3.$12z()}
+,isc.A.$120=function isc_c_FormItem__nativeIconFocus(){var _1=this,_2=isc.DynamicForm.$mu(_1),_3=_2.item,_4=_2.overIcon;if(_3){if(_3.iconIsDisabled(_4))_1.blur();else return _3.$121(_4,_1)}}
+,isc.A.$122=function isc_c_FormItem__nativeIconBlur(){if(!window.isc)return;var _1=this,_2=isc.DynamicForm.$mu(_1),_3=_2.item,_4=_2.overIcon;if(_3&&!_3.iconIsDisabled(_4))return _3.$123(_4,_1)}
+,isc.A.$124=function isc_c_FormItem__nativeIconClick(){return false}
+,isc.A.getErrorPromptString=function isc_c_FormItem_getErrorPromptString(_1){var _2="";if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){_2+=(i>0?"<br>":"")+_1[i].asHTML()};return _2}
+,isc.A.$82b=function isc_c_FormItem__getOuterTableStartTemplate(){if(!this.$819){isc.Canvas.$816.add({target:this,methodName:"$82a"});this.$819=true}
+if(this.$13y==null){this.$13y=["<TABLE role='presentation' CELLSPACING=0 CELLPADDING=0 BORDER=0 ID='",,"' STYLE='"+isc.Canvas.$42a,,"' CLASS='",,"'><TR>",,"<TD style='",,"' VALIGN=",,">"]}
+return this.$13y}
+,isc.A.$82c=function isc_c_FormItem__getIconsCellTemplate(){if(!this.$819){isc.Canvas.$816.add({target:this,methodName:"$82a"});this.$819=true}
+if(this.$131==null){this.$131=["</TD><TD VALIGN=",," WIDTH=",," style='"+isc.Canvas.$42a+"' class='",,"'>",null]}
+return this.$131}
+,isc.A.$82a=function isc_c_FormItem__doublingStringsChanged(){this.$13y=null;this.$131=null}
+);isc.B._maxIndex=isc.C+18;isc.A=isc.FormItem;isc.A.$12o="input";isc.A.$12p="text";isc.A.$12q="textarea";isc.A=isc.FormItem.getPrototype();isc.A.emptyDisplayValue="";isc.A.multipleValueSeparator=", ";isc.A.fetchMissingValues=true;isc.A.alwaysFetchMissingValues=false;isc.A.useShortDateFormat=true;isc.A.valueIconSize=16;isc.A.valueIconLeftPadding=0;isc.A.valueIconRightPadding=3;isc.A.showFocusedPickerIcon=false;isc.A.pickerIconHSpace=0;isc.A.pickerIconName="picker";isc.A.pickerIconSrc="";isc.A.visible=true;isc.A.disableIconsOnReadOnly=true;isc.A.accessKey=null;isc.A.changeOnKeypress=true;isc.A.maintainSelectionOnTransform=true;isc.A.dirtyOnKeyDown=true;isc.A.showTitle=true;isc.A.width="*";isc.A.height=20;isc.A.titleColSpan=1;isc.A.colSpan=1;isc.A.rowSpan=1;isc.A.browserInputTypeMap={"text":"text","email":"email","url":"url","tel":"tel","phone":"tel","number":"[0-9]*","zip":"[0-9]*"};isc.A.defaultIconSrc="[SKIN]/DynamicForm/default_formItem_icon.gif";isc.A.iconHSpace=3;isc.A.iconVAlign=isc.Canvas.BOTTOM;isc.A.iconHeight=20;isc.A.iconWidth=20;isc.A.iconPrompt="";isc.A.showIcons=true;isc.A.redrawOnShowIcon=true;isc.A.errorIconHeight=16;isc.A.errorIconWidth=16;isc.A.errorIconSrc="[SKIN]/DynamicForm/validation_error_icon.png";isc.A.showHint=true;isc.A.showFocused=false;isc.A.showDisabled=true;isc.A.cellStyle="formCell";isc.A.hintStyle="formHint";isc.A.titleStyle="formTitle";isc.A.$125=false;isc.A=isc.FormItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$o5="height";isc.A.$o6="width";isc.A.$126="colSpan";isc.A.$127="rowSpan";isc.A.$pa="*";isc.A.$bv="_";isc.A.$128="value";isc.A.$129="dataElement";isc.A.$o9="%";isc.A.errorMessageWidth=80;isc.A.$68w=1;isc.A.$682=new RegExp(".*_inactiveContext(.*)$");isc.A.$13a="<DIV STYLE='position:absolute;left:";isc.A.$13b="px;top:";isc.A.$13c="px;width:";isc.A.$13d="px;height:";isc.A.$13e="px;' ID='";isc.A.$13f="'>";isc.A.$13g="</DIV>";isc.A.$13h=["<SPAN style='white-space:nowrap;' eventProxy=",," "+isc.DynamicForm.$89+"='",,"' ID='",,"'>"];isc.A.$13i="</SPAN>";isc.A.$13j="$13k";isc.A.$13l="$13m";isc.A.$13n=["<DIV isDisabledEventMask='true' style='overflow:hidden;position:absolute;width:",null,"px;height:",null,"px' "+isc.DynamicForm.$89+"='",null,"' "+isc.DynamicForm.$9a+"='"+isc.DynamicForm.$9b+"' ID='",,"'>",null,"</DIV>"];isc.A.$13o="hiddenDataElement";isc.A.$13p="control";isc.A.$13q="textBox";isc.A.$13r="pickerIconCell";isc.A.$59p="hintCell";isc.A.$13s="FormItemStyling";isc.A.$13t="deprecated";isc.A.$13u="Over";isc.A.$13v="Down";isc.A.$13w="Disabled";isc.A.$13x="valueIcon";isc.A.$13z="</TD></TR></TABLE>";isc.A.$130=["<TABLE role='presentation' ID='",,"' "+isc.DynamicForm.$89+"='",,"' "+isc.DynamicForm.$9a+"='"+isc.DynamicForm.$9e,"' CELLPADDING=0 CELLSPACING=0 STYLE='",,"' CLASS='",,"'><TR><TD style='",,"'>",,"</TD><TD ID='",,"' CLASS='",,"' STYLE='",,"'>",,"</TD></TR></TABLE>"];isc.A.$132=["</TD><TD ID='",,"' CLASS='",,"'>"];isc.A.$133="$134";isc.A.$135="white-space:normal;";isc.A.$136="white-space:nowrap;";isc.A.$137="min-width:";isc.A.$138="min-height:";isc.A.$93="width:";isc.A.$92="height:";isc.A.$38="px;";isc.A.$39=";";isc.A.$139={};isc.A.$14a="cursor:default;";isc.A.$14b="overflow:hidden;";isc.A.$14c="text-align:";isc.A.$14d="font-size:";isc.A.$14e=" ACCESSKEY='";isc.A.$14f=" TABINDEX='";isc.A.$ob="'";isc.A.$14g=["<DIV ID='",,"' "+isc.DynamicForm.$89+"='",,"' "+isc.DynamicForm.$9a+"='"+isc.DynamicForm.$9c,"' CLASS='",,"' STYLE='",,"'",,">",,,"</DIV>"];isc.A.$n3="drawing";isc.A.$14h="#";isc.A.$80b="<table role='presentation' cellpadding=0 cellspacing=0 margin=0><tr>";isc.A.$14i="vertical-align:";isc.A.$14j={};isc.A._$_iLink_="_iLink_";isc.A._$_iImg_="_iImg_";isc.A.$14k="cell";isc.A.applyStaticTypeFormat=true;isc.A.$14l="smart";isc.A.$14m={"Tab":true,"Arrow_Left":true,"Arrow_Right":true,"Arrow_Up":true,"Arrow_Down":true,"Home":true,"End":true,"Page_Up":true,"Page_Down":true,"Enter":true};isc.A.shouldSaveValue=true;isc.A.$14n="character";isc.A.$14o="EndToEnd";isc.A.$14p="EndToStart";isc.A.$14n="character";isc.A.$683={};isc.A.$115=isc.Class.NO_OP;isc.A.$10j="Enter";isc.A.$304="Space";isc.A.iconClickOnEnter=true;isc.A.iconClickOnSpace=true;isc.A.$54n="img";isc.A.$jf="Tab";isc.A.$14q="$14r";isc.A.$14s={colSpan:true,rowSpan:true,startRow:true,endRow:true,showTitle:true,showHint:true};isc.A.$59q={baseStyle:true,showErrorStyle:true,showFocused:true,showErrorStyle:true,controlStyle:true,pickerIconStyle:true,textBoxStyle:true};isc.A.$59r="itemCellStyle";isc.A.useWildCardsByDefault=true;isc.A.$87p="ZZZZZZZZZZ";isc.B.push(isc.A.init=function isc_FormItem_init(){if(isc.$cv)arguments.$cw=this;if(this.ID==null||window[this.ID]!=this){isc.ClassFactory.addGlobalID(this)}
+if(this.options&&!this.valueMap){this.valueMap=this.options;delete this.options}
+this.$14t(this.$o5);this.$14t(this.$o6);this.$14t(this.$126);this.$14t(this.$127);this._value=this.getDefaultValue();this.$14u=true;this.$14v();if((!this.validateOnExit||!this.synchronousValidation)&&this.validators&&this.validators.length>0)
+{for(var i=0;i<this.validators.length;i++){if(this.validators[i].stopOnError){this.validateOnExit=true;this.synchronousValidation=true;break}}}
+if((!this.validateOnExit||!this.synchronousValidation)&&((this.stopOnError==null&&this.form&&this.form.stopOnError)||this.stopOnError))
+{this.validateOnExit=true;this.synchronousValidation=true}
+this.onInit(this)}
+,isc.A.onInit=function isc_FormItem_onInit(_1){}
+,isc.A.$14t=function isc_FormItem__convertRawToMeasure(_1){var _2=this[_1];if(_2==null||isc.isA.Number(_2)||_2==this.$pa)return _2;var _3=parseInt(_2);if(_3==_2){this[_1]=_3;return _2}
+return _2}
+,isc.A.destroy=function isc_FormItem_destroy(){this.invalidateDisplayValueCache(true);if(this.isDrawn())this.cleared();var _1=this.pickList;this.pickList=null;if(_1!=null){if(_1.formItem==this)delete _1.formItem;if(_1.isVisible())_1.hide();if(!this.reusePickList())_1.destroy()}
+this.destroyed=true;this.form=null;this.$14x=null;var _2;isc.ClassFactory.dereferenceGlobalID(this);this.$63x();if(isc.EH.$52d==this)isc.EH.$52d=null}
+,isc.A.clear=function isc_FormItem_clear(){if(this.picker)this.picker.clear()}
+,isc.A.toString=function isc_FormItem_toString(){var _1=this.getFieldName(),_2=this.ID,_3="["+this.Class+" instance "+(_1!=null?" name ='"+_1+"', ":"")+"global ID="+_2+"]";return _3}
+,isc.A.getDataSource=function isc_FormItem_getDataSource(){if(isc.isA.String(this.dataSource))return isc.DS.get(this.dataSource);return this.dataSource}
+,isc.A.registerWithDataView=function isc_FormItem_registerWithDataView(_1){if(!this.inputDataPath)return;if(!_1){_1=this.form;while(_1&&!isc.isA.DataView(_1))_1=_1.parentElement}
+if(!_1){this.logWarn("Component initialized with an inputDataPath property, but no DataView "+"was found in the parent hierarchy. inputDataPath is only applicable to "+"DataBoundComponents and FormItems being managed by a DataView");return}
+_1.registerItem(this)}
+,isc.A.getFieldName=function isc_FormItem_getFieldName(){return this.name}
+,isc.A.getDataPath=function isc_FormItem_getDataPath(){return this.dataPath}
+,isc.A.getFullDataPath=function isc_FormItem_getFullDataPath(){var _1=this.getDataPath()||this.getFieldName();if(!_1){if(this.shouldSaveValue){this.logWarn("Encountered field with neither name nor dataPath: "+this.echo(this))}
+_1=""}
+if(!isc.isA.String(_1))_1=_1+"";if(_1.startsWith(isc.Canvas.$70l))return _1;var _2=this.form.getFullDataPath();if(_2&&_2!=isc.Canvas.$70l){return _2+isc.Canvas.$70l+_1}
+return _1}
+,isc.A.shouldSaveOnEnter=function isc_FormItem_shouldSaveOnEnter(){var _1=this.saveOnEnter!=null?this.saveOnEnter:false;return _1}
+,isc.A.getItemName=function isc_FormItem_getItemName(){return this.getFieldName()}
+,isc.A.getElementName=function isc_FormItem_getElementName(){if(this.isInactiveHTML())return"";var _1=this.getFieldName();if(this.parentItem){var _2=this.parentItem.getElementName();if(_1==isc.emptyString)_1=_2;else _1=[_2,this.$bv,_1].join(isc.emptyString)}
+if(_1==null||_1==this.getID()||_1==isc.emptyString){_1=this.$qs(this.$128)}
+return _1}
+,isc.A.getDataElementId=function isc_FormItem_getDataElementId(){if(this.isInactiveHTML())return this.$qs(this.$129);if(this.$14y==null){this.$14y=this.$qs(this.$129,true)}
+return this.$14y}
+,isc.A.getItemID=function isc_FormItem_getItemID(){return this.getID()}
+,isc.A.getID=function isc_FormItem_getID(){if(this.ID==null){isc.ClassFactory.addGlobalID(this)}
+return this.ID}
+,isc.A.shouldShowTitle=function isc_FormItem_shouldShowTitle(){return this.showTitle}
+,isc.A.getTitleHTML=function isc_FormItem_getTitleHTML(){var _1=this.getTitle();if(!this.$kk())return _1;if(this.accessKey!=null){_1=isc.Canvas.hiliteCharacter(_1,this.accessKey)}
+var _2;if(this.hasDataElement())_2=this.getDataElementId();if(!_2)return _1;return isc.SB.concat("<LABEL FOR=",_2,(this.accessKey!=null?" ACCESSKEY="+this.accessKey:isc.$ad),">",_1,"</LABEL>")}
+,isc.A.getTitle=function isc_FormItem_getTitle(){var _1;if(this[this.form.titleField]!==_1)return this[this.form.titleField];return this[this.form.fieldIdProperty]}
+,isc.A.getTitleOrientation=function isc_FormItem_getTitleOrientation(){return this.form.getTitleOrientation(this)}
+,isc.A.isVisible=function isc_FormItem_isVisible(){if(!this.containerWidget.isVisible())return false;if(this.visible==false)return false;if(this.parentItem&&!this.parentItem.isVisible())return false;return true}
+,isc.A.getRowSpan=function isc_FormItem_getRowSpan(){return this.rowSpan}
+,isc.A.getColSpan=function isc_FormItem_getColSpan(){if(this.colSpan==0)this.colSpan=1;return this.colSpan}
+,isc.A.getTitleColSpan=function isc_FormItem_getTitleColSpan(){if(this.titleColSpan==0)this.titleColSpan=1;return this.titleColSpan}
+,isc.A.isStartRow=function isc_FormItem_isStartRow(){return this.startRow}
+,isc.A.isEndRow=function isc_FormItem_isEndRow(){return this.endRow}
+,isc.A.getRect=function isc_FormItem_getRect(){return[this.getLeft(),this.getTop(),this.getVisibleWidth(),this.getVisibleHeight()]}
+,isc.A.getPageRect=function isc_FormItem_getPageRect(_1){if(_1)return this.getPageRectIncludingTitle();return[this.getPageLeft(),this.getPageTop(),this.getVisibleWidth(),this.getVisibleHeight()]}
+,isc.A.getPeerRect=function isc_FormItem_getPeerRect(){return this.getPageRect()}
+,isc.A.getPageRectIncludingTitle=function isc_FormItem_getPageRectIncludingTitle(){var _1=this.getPageLeft(),_2=this.getPageTop(),_3=this.getVisibleWidth(),_4=this.getVisibleHeight();if(this.showTitle){var _5=this.getTitlePageLeft(),_6=this.getTitlePageTop(),_7=this.getVisibleTitleWidth(),_8=this.form.getTitleHeight(this);;if(this.titleOrientation=="left"||this.titleOrientation=="left"||this.titleOrientation==null)
+{_1=_1<_5?_1:_5;_3+=_7}else{_1=_1<_5?_1:_5;_3=_3>_7?_3:_7;if(isc.isA.Number(_8))_4+=_8}}
+return[_1,_2,_3,_4]}
+,isc.A.getCellHeight=function isc_FormItem_getCellHeight(_1){if(isc.$cv)arguments.$cw=this;if(this.cellHeight!=null)return this.cellHeight;var _2=this.getHeight(_1);if(!isc.isA.Number(_2))return _2;var _3=this.getIconsHeight();if(_2<_3){_2=_3}
+if(this.showPickerIcon&&this.pickerIconHeight){var _4=this.pickerIconHeight+this.$14z();if(_4>_2)_2=_4}
+var _5=this.containerWidget;if(this.$11e()||!isc.isA.DynamicForm(_5))return _2;_2+=this.$140();if(this.showTitle&&this.form.getTitleOrientation(this)==isc.Canvas.TOP){_2+=this.form.getTitleHeight(this)}
+return _2}
+,isc.A.shouldFixRowHeight=function isc_FormItem_shouldFixRowHeight(){return this.cellHeight!=null}
+,isc.A.$140=function isc_FormItem__getCellVBorderPadSpacing(){var _1=0,_2=this.form,_3=this.getCellStyle();if(this.parentItem)_2=this.parentItem;_1+=2*_2.cellSpacing;var _4=isc.isA.Number(_2.cellPadding)?_2.cellPadding:0,_5=isc.Element.$tt(_3,true);if(_5==null)_5=_4
+var _6=isc.Element.$tu(_3,true);if(_6==null)_6=_4;_1+=_5;_1+=_6;_1+=isc.Element.$ym(_3);return _1}
+,isc.A.$141=function isc_FormItem__getCellHBorderPadSpacing(){var _1=0,_2=this.form,_3=this.getCellStyle();if(this.parentItem)_2=this.parentItem;if(isc.isA.Number(_2.cellSpacing))_1+=2*_2.cellSpacing;var _4=isc.isA.Number(_2.cellPadding)?_2.cellPadding:0,_5=isc.Element.$tr(_3,true);if(_5==null)_5=_4;var _6=isc.Element.$ts(_3,true);if(_6==null)_6=_4;_1+=_5;_1+=_6;_1+=isc.Element.$yn(_3);return _1}
+,isc.A.getInnerHeight=function isc_FormItem_getInnerHeight(){var _1=this.containerWidget;if(this.$11e())return this.$11p(this.height,true);if(this.$8t==null&&this.height!=null&&isc.isA.String(this.height)&&this.containerWidget&&!isc.isA.DynamicForm(this.containerWidget)&&this.containerWidget.sizeFormItem!=null)
+{this.containerWidget.sizeFormItem(this)}
+if(this.$8t){var _2=this.$8t[1];if(!isc.isA.Number(_2))return _2;if(this.$142()){_2-=this.$140()}
+return _2}
+return this.getHeight()}
+,isc.A.getInnerWidth=function isc_FormItem_getInnerWidth(_1){var _2=this.containerWidget;if(this.$11e())return this.$11p(this.width);if(this.$8t==null&&this.width!=null&&isc.isA.String(this.width)&&this.containerWidget&&!isc.isA.DynamicForm(this.containerWidget)&&this.containerWidget.sizeFormItem!=null)
+{this.containerWidget.sizeFormItem(this)}
+var _3=this.$8t?this.$8t[0]:this.width;if(!isc.isA.Number(_3)){return _3}
+if(this.$142()){_3-=this.$141()}
+return _3}
+,isc.A.getColWidth=function isc_FormItem_getColWidth(){var _1=this.form?this.form.items:null;if(_1&&_1.$8r!=null&&this.$8m!=null){var _2=this.$8m[0],_3=this.$8m[2];if(this.showTitle){var _4=this.getTitleOrientation();if(_4==isc.Canvas.LEFT)_2+=1;else if(_4==isc.Canvas.RIGHT)_3-=1}
+var _5=0;for(var c=_2;c<_3;c++){_5+=_1.$8r[c]}
+return _5}
+return null}
+,isc.A.$11e=function isc_FormItem__absPos(){return(this.containerWidget.$11e&&this.containerWidget.$11e())}
+,isc.A.$142=function isc_FormItem__writtenIntoCell(){return(this.containerItem!=null||(this.form==this.containerWidget&&!this.$11e()))}
+,isc.A.$11p=function isc_FormItem__getPercentCoord(_1,_2){if(isc.isA.String(_1)&&isc.endsWith(_1,this.$o9)){var _3=this.containerWidget,_4=_2?_3.getInnerHeight():_3.getInnerWidth();return Math.round((parseInt(_1,10)/100)*_4)}
+return _1}
+,isc.A.getElementWidth=function isc_FormItem_getElementWidth(){var _1=this.getInnerWidth();if(!isc.isA.Number(_1))return null;_1-=this.getTotalIconsWidth();return(isc.isA.Number(_1)?Math.max(_1,1):null)}
+,isc.A.getTextBoxWidth=function isc_FormItem_getTextBoxWidth(_1){var _2=this.getElementWidth();if(!isc.isA.Number(_2))return _2;if(this.textBoxStyle){var _3=this.getTextBoxStyle();_2-=(isc.Element.$tf(_3)+isc.Element.$tg(_3));if(this.$143()){_2-=isc.Element.$yp(_3)}}
+if(this.showPickerIcon){_2-=this.getPickerIconWidth();var _4=this.getPickerIcon();if(_4.hspace!=null)_2-=_4.hspace;if(this.pickerIconStyle)
+_2-=isc.Element.$yp(this.getPickerIconStyle());if(this.controlStyle)
+_2-=isc.Element.$yp(this.getControlStyle())}
+if(this.hasDataElement()&&this.$144(_1)){_2-=((this.getValueIconWidth()||0)+(this.valueIconLeftPadding+this.valueIconRightPadding))}
+return _2-this.$672()}
+,isc.A.getErrorWidth=function isc_FormItem_getErrorWidth(){var _1=0;if(this.form.showInlineErrors&&this.hasErrors()){var _2=this.getErrorOrientation();if(_2==isc.Canvas.LEFT||_2==isc.Canvas.RIGHT){if(this.shouldShowErrorText()){_1+=this.errorMessageWidth}else if(this.shouldShowErrorIcon()){_1+=this.errorIconWidth+this.iconHSpace}}}
+return _1}
+,isc.A.$672=function isc_FormItem__getErrorWidthAdjustment(){var _1=this.getErrorWidth();if(_1!=0&&this.expandHintAndErrors&&(this.getColWidth()!=null)){var _2=this.getColWidth()-this.getInnerWidth();if(_2>0)_1-=_2;if(_1<0)_1=0}
+return _1}
+,isc.A.getValueIconHeight=function isc_FormItem_getValueIconHeight(){var _1=this.valueIconHeight;if(_1==null)_1=this.valueIconSize;return _1}
+,isc.A.getValueIconWidth=function isc_FormItem_getValueIconWidth(){var _1=this.valueIconWidth;if(_1==null)_1=this.valueIconSize;return _1}
+,isc.A.getTextBoxHeight=function isc_FormItem_getTextBoxHeight(){var _1=(isc.isA.Number(this.getHeight())?this.getHeight():this.getInnerHeight());if(!isc.isA.Number(_1))return _1;if(this.valueIcons!=null||this.getValueIcon!=null){var _2=this.getValueIconHeight();if(_2>_1)_1=_2}
+if(this.textBoxStyle){var _3=this.getTextBoxStyle();_1-=(isc.Element.$th(_3)+isc.Element.$ti(_3));if(this.$143()){_1-=isc.Element.$yo(_3)}}
+if(this.showPickerIcon&&this.controlStyle){_1-=isc.Element.$yo(this.getControlStyle())}
+if(this.showTitle&&this.form.getTitleOrientation(this)==isc.Canvas.TOP&&!isc.isA.Number(this.getCellHeight()))
+{_1-=this.form.getTitleHeight(this)}
+return _1}
+,isc.A.$143=function isc_FormItem__sizeTextBoxAsContentBox(){return!isc.Browser.isBorderBox}
+,isc.A.getPickerIconWidth=function isc_FormItem_getPickerIconWidth(){return(this.pickerIconWidth!=null?this.pickerIconWidth:this.getPickerIconHeight())}
+,isc.A.getPickerIconHeight=function isc_FormItem_getPickerIconHeight(){if(this.pickerIconHeight!=null)return this.pickerIconHeight;else{var _1=(isc.isA.Number(this.getHeight())?this.getHeight():this.getInnerHeight());if(!isc.isA.Number(_1))return null;_1-=this.$14z();this.pickerIconHeight=_1;return _1}}
+,isc.A.$14z=function isc_FormItem__getPickerIconVPad(){var _1=0;if(this.controlStyle){_1+=isc.Element.$yo(this.controlStyle)}
+if(this.pickerIconStyle){_1+=isc.Element.$yo(this.pickerIconStyle)}
+return _1}
+,isc.A.getHeight=function isc_FormItem_getHeight(){return this.height}
+,isc.A.getVisibleHeight=function isc_FormItem_getVisibleHeight(){var _1=this.isDrawn()?this.getOuterElement():null;if(_1==null){this.logInfo("getVisibleHeight() - unable to determine drawn height for this item -"+" returning pixel height from specified height","sizing");if(isc.isA.Number(this.height)){return this.height}
+this.logWarn("getVisibleHeight() unable to determine height - returning zero","sizing");return 0}
+return _1.offsetHeight}
+,isc.A.getIconHeight=function isc_FormItem_getIconHeight(_1){if(_1==null&&this.icons!=null&&this.icons.getLength()>0)_1=this.icons[0];else if(!this.$145(_1)){this.logWarn("getIconHeight() passed invalid icon:"+isc.Log.echoAll(_1));return null}
+return(_1.height!=null?_1.height:this.iconHeight)}
+,isc.A.getTitleVisibleHeight=function isc_FormItem_getTitleVisibleHeight(){var _1=this.isDrawn()&&this.form?isc.Element.get(this.form.$427(this)):null;if(_1==null){var _2="getTitleHeight() Unable to determine position for "+(this.name==null?"this item ":this.name)+". ";if(this.isDrawn()){_2+="This method is not supported by items of type "+this.getClass()}else{_2+="Position cannot be determined before the element is drawn"}
+_2+=" - returning zero.";this.form.logWarn(_2);return 0}
+return isc.Element.getVisibleHeight(_1)}
+,isc.A.getWidth=function isc_FormItem_getWidth(){return this.width}
+,isc.A.getVisibleWidth=function isc_FormItem_getVisibleWidth(){var _1=this.isDrawn()?this.getOuterElement():null;if(_1==null){this.logInfo("getVisibleWidth() - unable to determine drawn width for this item -"+" returning pixel width from specified width","sizing");if(isc.isA.Number(this.width)){return this.width}else if(this.form&&this.form.items.$8r!=null){return this.form.items.$8r[this.form.getItems().indexOf(this)]}
+this.logWarn("getVisibleWidth() unable to determine width - returning zero","sizing");return 0}
+return _1.offsetWidth}
+,isc.A.getVisibleTitleWidth=function isc_FormItem_getVisibleTitleWidth(){var _1=this.isDrawn()&&this.form?isc.Element.get(this.form.$427(this)):null;if(_1==null){this.logInfo("getVisibleTitleWidth() - unable to determine drawn width for this "+"item - returning 0","sizing");return 0}
+return _1.offsetWidth}
+,isc.A.getIconWidth=function isc_FormItem_getIconWidth(_1){if(_1==null&&this.icons!=null&&this.icons.getLength()>0)_1=this.icons[0];else if(!this.$145(_1)){this.logWarn("getIconWidth() passed invalid icon:"+isc.Log.echoAll(_1));return null}
+return(_1.width!=null?_1.width:this.iconWidth)}
+,isc.A.setHeight=function isc_FormItem_setHeight(_1){this.height=_1;this.redraw()}
+,isc.A.setWidth=function isc_FormItem_setWidth(_1){this.width=_1;this.redraw()}
+,isc.A.setLeft=function isc_FormItem_setLeft(_1){this.left=_1;this.redraw()}
+,isc.A.setTop=function isc_FormItem_setTop(_1){this.top=_1;this.redraw()}
+,isc.A.moved=function isc_FormItem_moved(){}
+,isc.A.visibilityChanged=function isc_FormItem_visibilityChanged(){}
+,isc.A.zIndexChanged=function isc_FormItem_zIndexChanged(){}
+,isc.A.getInactiveEditorHTML=function isc_FormItem_getInactiveEditorHTML(_1,_2,_3,_4){this.$68x=true;this.$68u=this.setupInactiveContext(_4);if(this.logIsDebugEnabled("inactiveEditorHTML")){this.logDebug("getInactiveEditorHTML() called - context passed in:"+this.echo(_4)+" generated context ID:"+this.$68u,"inactiveEditorHTML")}
+var _5=this.getStandaloneItemHTML(_1,_2,_3);delete this.$68u;delete this.$68x;return _5}
+,isc.A.setupInactiveContext=function isc_FormItem_setupInactiveContext(_1){if(_1==null)_1={};if(this.$68y())_1.isPrintHTML=true;var _2=this.$68w++;_1.inactiveContextID=_2;_1.formItem=this;if(!this.$68v)this.$68v={};this.$68v[_2]=_1;return _2}
+,isc.A.clearAllInactiveEditorContexts=function isc_FormItem_clearAllInactiveEditorContexts(){delete this.$68v}
+,isc.A.clearInactiveEditorContext=function isc_FormItem_clearInactiveEditorContext(_1){if(isc.isAn.Object(_1))_1=_1.inactiveContextID;if(this.$68v)delete this.$68v[_1]}
+,isc.A.$681=function isc_FormItem__getInactiveContextFromElement(_1){if(_1&&_1.id!=null&&this.$68v!=null){var _2=_1.id,_3=this.$557(_2);if(_3){var _4=_3.match(this.$682);if(_4){return this.$68v[_4[1]]}}}
+return null}
+,isc.A.isInactiveHTML=function isc_FormItem_isInactiveHTML(){if(this.parentItem&&this.parentItem.isInactiveHTML())return true;return this.$68y()||this.$68x}
+,isc.A.$68y=function isc_FormItem__isPrinting(){return this.containerWidget&&this.containerWidget.isPrinting}
+,isc.A.getStandaloneItemHTML=function isc_FormItem_getStandaloneItemHTML(_1,_2,_3){var _4=isc.SB.create(),_5=this.form;if(_5){if(this.$11e()){var _6=this.$11p(this.left),_7=this.$11p(this.top,true),_8=this.getInnerWidth(),_9=this.getInnerHeight();if(!isc.isA.Number(_6))_6=0;if(!isc.isA.Number(_7))_7=0;_4.append(this.$13a);_4.appendNumber(_6);_4.append(this.$13b);_4.appendNumber(_7);if(isc.isA.Number(_8)){_4.append(this.$13c);_4.appendNumber(_8)}
+if(isc.isA.Number(_9)){_4.append(this.$13d);_4.appendNumber(_9)}
+_4.append(this.$13e,this.$146(),this.$13f)}
+var _10=this.$13h,_11=_5.getID(),_12=this.getID();_10[1]=_11;_10[3]=_12;_10[5]=this.$qs(this.$13j);_4.append(_10);_4.append(this.getInnerHTML(_1,_2,_3,true));_4.append(this.$13i);if(this.$11e()){_4.append(this.$13g)}}
+return _4.release()}
+,isc.A.$146=function isc_FormItem__getAbsDivID(){return this.$qs(this.$13l)}
+,isc.A.getAbsDiv=function isc_FormItem_getAbsDiv(){if(this.$13m)return this.$13m;if(!this.isDrawn())return;this.$13m=isc.Element.get(this.$146());return this.$13m}
+,isc.A.$147=function isc_FormItem__hasExternalIcons(){var _1=this.icons;if(!_1)return false;for(var i=0;i<_1.length;i++){if(!_1[i].writeIntoItem)return true}
+return false}
+,isc.A.useDisabledEventMask=function isc_FormItem_useDisabledEventMask(){return(isc.Browser.isMoz&&this.hasDataElement())||(isc.Browser.isIE&&isc.isA.TextItem(this))}
+,isc.A.$148=function isc_FormItem__getEventMaskHTML(){var _1=this.$13n;_1[1]=this.$149();_1[3]=this.getHeight();_1[5]=this.getItemID();_1[7]=this.$qs("eventMask");_1[9]=this.$92j();return _1.join(isc.emptyString)}
+,isc.A.$92j=function isc_FormItem__getEventMaskSpacerHTML(){return(isc.Browser.isIE?isc.Canvas.spacerHTML(1600,100):" ")}
+,isc.A.$43b=function isc_FormItem__getEventMaskElement(){return isc.Element.get(this.$qs("eventMask"))}
+,isc.A.$149=function isc_FormItem__getEventMaskWidth(){return this.getElementWidth()}
+,isc.A.getBrowserSpellCheck=function isc_FormItem_getBrowserSpellCheck(){if(this.browserSpellCheck!=null)return this.browserSpellCheck;return this.form.browserSpellCheck}
+,isc.A.$11d=function isc_FormItem__useHiddenDataElement(){return(this.shouldSaveValue&&!this.hasDataElement()&&this.shouldSubmitValue())}
+,isc.A.$15a=function isc_FormItem__getHiddenDataElementID(){return this.$qs(this.$13o)}
+,isc.A.$15b=function isc_FormItem__getHiddenDataElement(){return this.$15c(this.$13o)}
+,isc.A.$15c=function isc_FormItem__getHTMLPartHandle(_1){if(!this.isDrawn())return null;if(!this.$15d)this.$15d={};var _2=this.$15d[_1];if(_2==null){_2=isc.Element.get(this.$qs(_1));if(_2!=null)this.$15d[_1]=_2}
+return _2}
+,isc.A.$15e=function isc_FormItem__getControlTableID(){return this.$qs(this.$13p)}
+,isc.A.$15f=function isc_FormItem__getControlTableElement(){return this.$15c(this.$13p)}
+,isc.A.$15g=function isc_FormItem__getTextBoxID(){return this.$qs(this.$13q)}
+,isc.A.$15h=function isc_FormItem__getTextBoxElement(){if(this.hasDataElement()&&this.$15i)return this.getDataElement();return this.$15c(this.$13q)}
+,isc.A.$15j=function isc_FormItem__getPickerIconCellID(){return this.$qs(this.$13r)}
+,isc.A.$15k=function isc_FormItem__getPickerIconCellElement(){return this.$15c(this.$13r)}
+,isc.A.$15l=function isc_FormItem__getHiddenDataElementHTML(){return"<INPUT type='hidden' name='"+this.getFieldName()+"' ID='"+this.$15a()+"'>"}
+,isc.A.$59s=function isc_FormItem__getHintCellID(){return this.$qs(this.$59p)}
+,isc.A.$59t=function isc_FormItem__getHintCellElement(){return this.$15c(this.$59p)}
+,isc.A.updateState=function isc_FormItem_updateState(){if(!this.isDrawn())return;var _1=this.logIsDebugEnabled(this.$13s);if(this.containerWidget==this.form&&!this.$11e()){var _2=this.getCellStyle();if(_1)this.logDebug("About to apply basic cell style:"+_2,"FormItemStyling");var _3=this.getFormCell();if(_3)_3.className=_2;var _4=this.getOuterTableElement();if(_4)_4.className=_2;if(this.showTitle)this.form.updateTitleCellState(this)}
+if(this.showPickerIcon){var _5=this.getControlStyle(),_6=this.getPickerIconStyle();if(_1){this.logDebug("About to apply cell styles to control box and picker icon cell:"+[_5,_6],"FormItemStyling")}
+var _7=this.$15f();if(_7)_7.className=_5;var _8=this.$15k();if(_8)_8.className=_6}
+var _9=this.getTextBoxStyle();if(_1)this.logDebug("About to apply text box style:"+_9,"FormItemStyling");var _10=this.$15h();if(_10){_10.className=_9}
+if(this.$15m()&&_10){if(!this.$15n){var _11=this.getTextBoxWidth(),_12=this.getTextBoxHeight();_11+=isc.Element.getHBorderSize(_10)-2;_12+=isc.Element.getVBorderSize(_10)-2;var _13=this.$qs("focusOutline");isc.Element.insertAdjacentHTML(_10,"beforeBegin","<DIV ID='"+_13+(this.textBoxStyle?"' CLASS='"+this.textBoxStyle+"Focused'":"'")+" STYLE='background-image:none;background-color:transparent;position:absolute;width:"+_11+"px;height:"+_12+"px;visibility:hidden;border:1px dotted white;z-index:100;'> </DIV>");this.$15n=isc.Element.get(_13)}
+if(this.hasFocus)this.$15n.style.visibility="inherit";else this.$15n.style.visibility="hidden"}}
+,isc.A.$15o=function isc_FormItem__warnDeprecated(_1,_2,_3){if(!this.logIsInfoEnabled(this.$13t))return;if(!this.$15p)this.$15p={};if(this.$15p[_1]==true)return;if(_3==null)_3="5.5";var _4=isc.SB.create();_4.append("Using '",_1,"': ",this[_1]," to style this form item. This property is deprecated as of SmartClient Version ",_3," - we recommend removing this property and using '",_2,"' instead.");this.logInfo(_4.release(),"deprecated");this.$15p[_1]=true}
+,isc.A.getInnerHTML=function isc_FormItem_getInnerHTML(_1,_2,_3,_4){var _5,_6;if(this.isInactiveHTML()&&this.$68u==null){_5=true;var _7,_8=this.parentItem;if(_8!=null&&_8.isInactiveHTML()){if(_8.$68u==null){_8.setupInactiveContext();_6=true}
+_7=_8.$68v[_8.$68u]}
+this.$68u=this.setupInactiveContext(_7);if(this.logIsDebugEnabled("inactiveEditorHTML")){this.logDebug("getInnerHTML(): Item is marked as inactive - set up "+"new inactive context ID:"+this.$68u,"inactiveEditorHTML")}}
+this.$15q=_2&&!this.$712();var _9;if((this.isInactiveHTML()||this.isDisabled())&&this.useDisabledEventMask()){_9=isc.SB.create();_9.append(this.$148())}
+if(this.$11d()){if(!_9)_9=isc.SB.create();_9.append(this.$15l())}
+if(this.$712())_2=false;var _10=this.$15r(_1,_2,_3);var _11;if(_9!=null){_9.append(_10);if(_4)_11=_9.getArray();_11=_9.release()}else{_11=(_4?_10:_10.join(isc.emptyString))}
+if(_5)delete this.$68u;if(this.parentItem&&_6)
+delete this.parentItem.$68u;return _11}
+,isc.A.$15s=function isc_FormItem__writeOuterTable(_1,_2){if(_2)return true;if(_1&&this.getHint()!=null)return true;if(this.icons&&this.icons.length>0)return true}
+,isc.A.$144=function isc_FormItem__getValueIcon(_1){if(this.suppressValueIcon)return null;var _2,_3;if(_1===_3)_1=this.getValue();if(this.getValueIcon)_2=this.getValueIcon(_1);else{if(_1==null)_2=this.emptyValueIcon;else if(this.valueIcons!=null)_2=this.valueIcons[_1]}
+if(_2==null)return null;var _4=((this.isDisabled()||this.isReadOnly())&&this.showValueIconDisabled?this.$13w:this.$15t);if(_4!=null){if(!isc.CheckboxItem.$15u)isc.CheckboxItem.$15u={};var _5=isc.CheckboxItem.$15u[_2];if(!_5){_5={};_5.Over=isc.Img.urlForState(_2,false,false,this.$13u);_5.Down=isc.Img.urlForState(_2,false,false,this.$13v);_5.Disabled=isc.Img.urlForState(_2,false,false,this.$13w);isc.CheckboxItem.$15u[_2]=_5}
+_2=_5[_4]}
+return _2}
+,isc.A.$xq=function isc_FormItem__getValueIconHTML(_1){var _2=this.$144(_1);if(_2==null){return isc.emptyString}
+var _3=this.imageURLPrefix||this.baseURL||this.imgDir,_4=this.imageURLSuffix;if(_4)_2=_2+_4;var _5=this.getValueIconWidth();var _6=this.getValueIconHeight();return isc.Canvas.$xq(_2,_3,_5,_6,this.valueIconLeftPadding,this.valueIconRightPadding,this.$qs(this.$13x))}
+,isc.A.$15v=function isc_FormItem__getValueIconHandle(){if(!this.isDrawn())return null;var _1=isc.Element.get(this.$qs(this.$13x));return _1}
+,isc.A.$15r=function isc_FormItem__getTableHTML(_1,_2,_3){var _4=this.getErrorOrientation(),_5,_6=_4==isc.Canvas.LEFT,_7,_8=this.isReadOnly();if(_3&&(_6||_4==isc.Canvas.RIGHT))
+{var _9=this.getErrors();if(_9){_5=true;_7=this.getErrorHTML(_9)}}
+var _10=this.iconVAlign,_11=this.mapValueToDisplay(_1),_12=this.$15s(_2,_5),_13=this.showPickerIcon;;var _14=_12?isc.FormItem.$82b():[];if(_12){_14.length=13;_14[1]=this.$15w();_14[3]=this.getOuterTableCSS();if(this.containerWidget==this.form&&!this.$11e()){_14[5]=this.getCellStyle()}else{_14[5]=null}
+if(_5&&_6){_14[7]=isc.StringBuffer.concat("<TD STYLE='",isc.Canvas.$42a,"' CLASS='",this.getCellStyle(),"'>",_7,"</TD>")}else _14[7]=null;if(!_13)_14[9]=this.getTextBoxCellCSS();else _14[9]=isc.Canvas.$42a;_14[11]=_10}
+if(!_13){_14[_14.length]=(_8?this.getReadOnlyHTML(_11,_1):this.getElementHTML(_11,_1))}else{var _15=this.getPickerIconStyle(),_16=this.getID(),_17=this.getControlStyle(),_18=this.$130,_19=this.$15e(),_20=this.$15g(),_21=this.$15j();_18[1]=_19;_18[3]=_16;_18[6]=this.getControlTableCSS();if(_17==null&&this.containerWidget==this.form&&!this.$11e()){_18[8]=this.getCellStyle();_18[6]+=isc.Canvas.$42a}else{_18[8]=_17}
+_18[10]=this.getTextBoxCellCSS();_18[12]=(_8?this.getReadOnlyHTML(_11,_1):this.getElementHTML(_11,_1));_18[14]=_21;_18[16]=_15;_18[18]=this.getPickerIconCellCSS();var _22=this.getPickerIcon(),_23=_22&&this.hasFocus&&this.showFocusedPickerIcon&&(_22.showFocusedWithItem!=false);_18[20]=this.getIconHTML(this.getPickerIcon(),_23);for(var i=0;i<_18.length;i++){_14[_14.length]=_18[i]}}
+if(_12){if(this.$147()){var _25=isc.FormItem.$82c();_25[1]=_10;_25[3]=this.getTotalIconsWidth();_25[5]=this.getCellStyle();_25[7]=this.getIconsHTML();for(var i=0;i<_25.length;i++){_14[_14.length]=_25[i]}}
+var _26=(_5&&!_6);var _27;if(_2){_27=this.getHint();if(isc.isA.emptyString(_27))_27=null}
+if(_27||_26){var _28=this.$132;_28[1]=this.$59s();_28[3]=_27?this.getHintStyle():null;_28[5]=(_27||"")+(_26?_7||"":"");for(var i=0;i<_28.length;i++){_14[_14.length]=this.$132[i]}}
+_14[_14.length]=this.$13z}
+return _14}
+,isc.A.$15w=function isc_FormItem__getOuterTableID(){return this.$qs(this.$133)}
+,isc.A.$15x=function isc_FormItem__getCellStyle(_1){var _2=this.hasErrors();if(!isc.FormItem.$15y)isc.FormItem.$15y={};var _3=isc.FormItem.$15y[_1];if(!_3){_3={};_3.Error=_1+"Error";_3.Focused=_1+"Focused"
+_3.Disabled=_1+"Disabled"
+isc.FormItem.$15y[_1]=_3}
+if(_2){return(this.shouldShowErrorStyle()&&this.form.showInlineErrors?_3.Error:_1)}else{if(this.showFocused&&this.hasFocus&&!this.isInactiveHTML())
+return _3.Focused;if(this.showDisabled&&this.isDisabled())return _3.Disabled;return _1}}
+,isc.A.getCellStyle=function isc_FormItem_getCellStyle(){if(this.parentItem!=null){if(this.parentItem.itemCellStyle)return this.$15x(this.parentItem.itemCellStyle)}
+var _1=this.$15x(this.cellStyle);if(!this.hasErrors()){if(this.cellClassName!=null){this.$15o("cellClassName","cellStyle");_1=this.cellClassName}}else{if(this.errorCellClassName!=null){this.$15o("errorCellClassname","cellStyle");_1=this.errorCellClassName}}
+return _1}
+,isc.A.getTitleStyle=function isc_FormItem_getTitleStyle(){if(this.$68y()&&this.printTitleStyle){return this.$15x(this.printTitleStyle)}
+var _1=this.getErrors();if(_1==isc.emptyString)_1=null;var _2=this.$15x(this.titleStyle);if(!_1){if(this.titleClassName!=null){this.$15o("titleClassName","titleStyle");_2=this.titleClassName}}else{if(this.titleErrorClassName!=null){this.$15o("titleErrorClassName","titleStyle");_2=this.titleErrorClassName}}
+return _2}
+,isc.A.getHintStyle=function isc_FormItem_getHintStyle(){if(this.hintClassName!=null){this.$15o("hintClassName","hintStyle");return this.hintClassName}
+if(this.hintStyle!=null)return this.hintStyle}
+,isc.A.getTextBoxStyle=function isc_FormItem_getTextBoxStyle(){if(this.$68y()&&this.printTextBoxStyle){return this.$15x(this.printTextBoxStyle)}
+var _1=this.textBoxStyle?this.$15x(this.textBoxStyle):null;if(this.elementClassName!=null){this.$15o("elementClassName","textBoxStyle");_1=this.elementClassName}
+return _1}
+,isc.A.getPickerIconStyle=function isc_FormItem_getPickerIconStyle(){if(this.pickerIconStyle!=null)return this.$15x(this.pickerIconStyle);return null}
+,isc.A.getControlStyle=function isc_FormItem_getControlStyle(){if(this.controlStyle!=null)return this.$15x(this.controlStyle);return null}
+,isc.A.getOuterTableCSS=function isc_FormItem_getOuterTableCSS(){var _1=this.$139;var _2,_3=this.expandHintAndErrors;if(!this.$68y()||isc.isA.Number(this.width)){if(_3&&this.getHint()==null){var _4=this.getErrorOrientation();_3=(_4==isc.Canvas.LEFT||_4==isc.Canvas.RIGHT)}
+if(_3&&(this.getColWidth()!=null)){_2=Math.max(this.getInnerWidth(),this.getColWidth())}else{_2=this.getInnerWidth()}}
+if(!isc.isA.Number(_2)){if(!this.$15z)
+this.$15z=this.$135;return this.$15z}else if(_1[_2]!=null){return _1[_2]}
+var _5=isc.SB.create();_5.append(this.$135);_5.append(this.$93);_5.appendNumber(_2,5);_5.append(isc.semi);_1[_2]=_5.release();return _1[_2]}
+,isc.A.getControlTableCSS=function isc_FormItem_getControlTableCSS(){var _1=isc.SB.create();_1.append(this.$14a);var _2=this.getElementWidth()-this.$672();if(isc.isA.Number(_2))_1.append(this.$93,_2,this.$38);return _1.release()}
+,isc.A.getTextBoxCellCSS=function isc_FormItem_getTextBoxCellCSS(){return this.textBoxCellCSS!=null?this.textBoxCellCSS:isc.Canvas.$42a}
+);isc.evalBoundary;isc.B.push(isc.A.getTextBoxCSS=function isc_FormItem_getTextBoxCSS(){var _1=isc.SB.create();if(!this.$68y()||isc.isA.Number(this.width)){var _2=this.getTextBoxWidth();if(isc.isA.Number(_2)){if((isc.Browser.isOpera||isc.Browser.isMoz||isc.Browser.isSafari)&&!this.clipValue){_1.append(this.$137,_2,this.$38)}else{_1.append(this.$93,_2,this.$38)}}}
+var _3=this.getTextBoxHeight();if(isc.isA.Number(_3)){if(isc.Browser.isMoz&&!this.clipValue){_1.append(this.$138,_3,this.$38)}else{_1.append(this.$92,_3,this.$38)}}
+if(this.clipValue)_1.append(this.$14b);if(this.wrap)_1.append(this.$135)
+else _1.append(this.$136);if(this.textAlign!=null){_1.append(this.$14c,this.textAlign,this.$39)}
+return _1.release()}
+,isc.A.getPickerIconCellCSS=function isc_FormItem_getPickerIconCellCSS(){if(isc.Browser.isIE)return isc.emptyString;var _1=this.getPickerIconHeight();if(isc.isA.Number(_1)&&_1<this.getInnerHeight()){return this.$14d+_1+this.$38}
+return isc.emptyString}
+,isc.A.getPickerIcon=function isc_FormItem_getPickerIcon(){if(this.$150==null){var _1=this.getPickerIconWidth(),_2=this.getPickerIconHeight();var _3={pickerIcon:true,writeIntoItem:true,showOver:this.showOver,showFocused:this.showFocusedPickerIcon,hspace:this.pickerIconHSpace,width:_1,height:_2,src:this.pickerIconSrc,click:function(_4,_5,_6){_5.showPicker()}};isc.addProperties(_3,this.pickerIconDefaults,this.pickerIconProperties);this.$753(_3,this.pickerIconName);this.$150=_3;if(this.iconIsDisabled(_3))_3.$153=true}
+return this.$150}
+,isc.A.getElementHTML=function isc_FormItem_getElementHTML(_1,_2){var _3=isc.SB.create(),_4=this.$15m();var _5=this.$872(),_6,_7;if(_5){var _8=this.$154(),_9=this.isDisabled()?null:this.accessKey;if(_4){_7=isc.Canvas.getFocusProxyString(this.getID(),false,0,0,this.getTextBoxWidth(),this.getTextBoxHeight(),this.isVisible(),!this.isDisabled(),_8,_9,false)}else{var _10=isc.SB.create();if(_9!=null)_10.append(this.$14e,_9,this.$ob);_10.append(this.$14f,_8,this.$ob);_6=_10.release()}}
+if(_7!=null)_3.append(_7);var _11=this.$14g;_11[1]=this.$15g();_11[3]=this.getID();_11[6]=this.getTextBoxStyle();_11[8]=this.getTextBoxCSS();_11[10]=_6;_11[12]=this.$xq(_2);_11[13]=(this.showValueIconOnly?null:_1);_3.append(_11);return _3.release()}
+,isc.A.getReadOnlyHTML=function isc_FormItem_getReadOnlyHTML(_1,_2){return this.getElementHTML()}
+,isc.A.$15m=function isc_FormItem__writeOutFocusProxy(){if(this.useFocusProxy!=null)return this.useFocusProxy;return(isc.Browser.isMoz&&isc.Browser.geckoVersion<20051111)&&this.$kk()&&!this.hasDataElement()}
+,isc.A.$155=function isc_FormItem__getItemElementAttributeHTML(){if(!isc.FormItem.$156){isc.FormItem.$156=[" ",isc.DynamicForm.$89,"='",null,"' ",isc.DynamicForm.$9a,"='",isc.DynamicForm.$9b,"'"]}
+isc.FormItem.$156[3]=this.getItemID();return isc.FormItem.$156.join(isc.emptyString)}
+,isc.A.getErrors=function isc_FormItem_getErrors(){if(this.form)return this.form.getFieldErrors(this)}
+,isc.A.getError=function isc_FormItem_getError(){this.logWarn("call to deprecated method FormItem.getError()."+" Use FormItem.getErrors() instead.");return this.getErrors()}
+,isc.A.getErrorMessage=function isc_FormItem_getErrorMessage(_1){return(isc.isAn.Array(_1)?"<UL><LI>"+_1.join("</LI><LI>")+"</LI></UL>":_1)}
+,isc.A.shouldShowErrorIcon=function isc_FormItem_shouldShowErrorIcon(){return this.showErrorIcon!=null?this.showErrorIcon:this.form.showErrorIcons}
+,isc.A.shouldShowErrorText=function isc_FormItem_shouldShowErrorText(){return this.showErrorText!=null?this.showErrorText:this.form.showErrorText}
+,isc.A.shouldShowErrorStyle=function isc_FormItem_shouldShowErrorStyle(){return this.showErrorStyle!=null?this.showErrorStyle:this.form.showErrorStyle}
+,isc.A.shouldShowErrorIconPrompt=function isc_FormItem_shouldShowErrorIconPrompt(){return this.shouldShowErrorIcon&&!this.shouldShowErrorText()}
+,isc.A.getErrorOrientation=function isc_FormItem_getErrorOrientation(){return this.errorOrientation!=null?this.errorOrientation:this.form.errorOrientation}
+,isc.A.getErrorHTML=function isc_FormItem_getErrorHTML(_1){var _2=this.shouldShowErrorText(),_3=this.shouldShowErrorIcon();if(!_2&&!_3)return isc.emptyString;var _4=this.form,_5=_3&&_2,_6=!_5&&_3&&((this.getErrorOrientation()==isc.Canvas.LEFT)||(this.getErrorOrientation()==isc.Canvas.RIGHT)),_7=(_2&&this.form.showTitlesWithErrorMessages&&this.getTitle()!=null?this.getTitle()+": ":null),_8,_9=_2?this.getErrorMessage(_1):null;if(!_5){_8=isc.SB.concat("<DIV ",(_6?"style='display:inline;'":null)," CLASS='",this.getCellStyle(),"'>",(_3?this.getErrorIconHTML(_1)+" ":null),_7,_9,"</DIV>")}else{_8=isc.SB.concat("<TABLE role='presentation' WIDTH=100% CELLSPACING=0 CELLPADDING=0><TR>","<TD WIDTH=",this.errorIconWidth,">",this.getErrorIconHTML(_1),"</TD><TD STYLE='",isc.Canvas.$42a,"' CLASS='",this.getCellStyle(),"'> ",_7,_9,"</TD></TR></TABLE>")}
+return _8}
+,isc.A.getErrorIconHTML=function isc_FormItem_getErrorIconHTML(_1){this.$79u=_1;var _2=this.getErrorIconId();var _3="";if(_1!=null&&isc.Canvas.ariaEnabled()&&!isc.Canvas.useLiteAria()){if(isc.isAn.Array(_1))_1=_1.join(",");_3=' aria-label="'+_1.replace("\"",""")+'"'}
+return this.$157(_2,this.errorIconWidth,this.errorIconHeight,"top",0,null,null,this.form.getImgURL(this.errorIconSrc),this.getID(),_2,null,true,isc.DynamicForm.$89+"='"+this.getID()+"' "+isc.DynamicForm.$9a+"='"+_2+"'"+_3)}
+,isc.A.getErrorIconId=function isc_FormItem_getErrorIconId(){return this.$qs("error")}
+,isc.A.getHint=function isc_FormItem_getHint(){if(!this.showHint||!this.hint)return null
+return this.hint}
+,isc.A.drawn=function isc_FormItem_drawn(){if(this.logIsInfoEnabled(this.$n3)){this.logInfo("Form item drawn "+(this.containerWidget==this.form?"in form "+this.form.getID():"in container widget "+this.containerWidget.getID())+(this.logIsDebugEnabled("drawing")?this.getStackTrace():""),"drawing")}
+this.$if=true;if(this.$15q)this.$158=true;this.$15q=null;this.$159();if(isc.screenReader)this.addContentRoles()}
+,isc.A.redrawing=function isc_FormItem_redrawing(){if(this.$16j(true)){this.$516()}
+this.form.clearingElement(this);this.$13m=null}
+,isc.A.redrawn=function isc_FormItem_redrawn(){if(this.logIsInfoEnabled("drawing")){this.logInfo("Form item redrawn "+(this.containerWidget==this.form?"in form "+this.form.getID():"in container widget "+this.containerWidget.getID())+(this.logIsDebugEnabled("drawing")?this.getStackTrace():""),"drawing")}
+this.$16a();this.$159();if(isc.screenReader)this.addContentRoles();if(this.$16j(true)){if(isc.Browser.isIE){this.delayCall("$109",[true],100)}else{this.$109()}}}
+,isc.A.$516=function isc_FormItem__storeFocusForRedraw(){this.$105=true;this.rememberSelection();if(this.items){for(var i=0;i<this.items.length;i++){if(this.items[i].hasFocus){return this.items[i].$516()}}}
+var _2=this.$166();if(_2!=null&&_2!=this.getFocusElement()){var _3=this.getPickerIcon();if(_3!=null&&this.$16g(_3)==_2){this.$65o=_3}else if(this.icons){for(var i=0;i<this.icons.length;i++){if(this.$16g(this.icons[i])==_2){this.$65o=this.icons[i];break}}}}}
+,isc.A.$109=function isc_FormItem__refocusAfterRedraw(_1){var _2=this.isDrawn()&&this.isVisible();if(_2){var _3=isc.EH.getFocusCanvas();if(_3!=null&&_3!=this.form){_2=false}else{var _4=this.form.getFocusSubItem();if(_4!=this&&_4!=this.parentItem&&(!this.items||!this.items.contains(_4)))
+{_2=false}}}
+delete this.$105;if(_1&&_2)this.resetToLastSelection();if(this.items){for(var i=0;i<this.items.length;i++){if(this.items[i].$16j()){return this.items[i].$109()}}}
+if(_2)this.form.$65n(this);if(this.$65o){var _6=this.getIcon(this.$65o);delete this.$65o;if(_6){if(_2){this.focusInIcon(_6)}
+return}}
+if(_2){this.$92k=true;this.focusInItem()}}
+,isc.A.$159=function isc_FormItem__applyHandlersToElement(){if(this.$kk()){var _1=this.getFocusElement();if(!_1){this.logWarn("Attempting to apply event handlers to this item. "+"Unable to get a pointer to this item's focus element");return}
+_1.onfocus=isc.FormItem.$12u;_1.onblur=isc.FormItem.$12w;if(isc.Browser.isIE){_1.onpaste=isc.FormItem.$43a;_1.oncut=isc.FormItem.$43a}
+if(this.$16b){for(var _2 in this.$16b){if(this.$16b[_2]==null)continue;_1[_2]=this.$16b[_2]}}}
+this.$16c()}
+,isc.A.$16c=function isc_FormItem__setUpIconEventHandlers(){if(this.showPickerIcon)this.$16d(this.getPickerIcon());if(this.showIcons&&this.icons&&this.icons.length>0){for(var i=0;i<this.icons.length;i++){var _2=this.icons[i];if(_2&&(this.$16e(_2)||this.$16f(_2)))
+this.$16d(_2)}}}
+,isc.A.$16d=function isc_FormItem__iconDrawn(_1){if(!_1.imgOnly){var _2=this.$16g(_1);if(_2){_2.onfocus=isc.FormItem.$120
+_2.onblur=isc.FormItem.$122
+_2.href=this.$14h;_2.onclick=isc.FormItem.$124;if(isc.Browser.isSafari){if(!isc.FormItem.$16h){isc.FormItem.$16h=function(){var _3=isc.DynamicForm.$mu(this),_4=_3.item,_5=_3.overIcon;if(_4)return _4.focusInIcon(_5)}}
+_2.onmousedown=isc.FormItem.$16h}}}}
+,isc.A.cleared=function isc_FormItem_cleared(){if(this.logIsInfoEnabled("drawing")){this.logInfo("Form item cleared "+(this.containerWidget==this.form?"from within form "+this.form.getID():"from within container widget "+this.containerWidget.getID())+(this.logIsDebugEnabled("drawing")?this.getStackTrace():""),"drawing")}
+this.form.clearingElement(this);this.$16a();this.$158=false;this.$15q=false;this.$if=false}
+,isc.A.$16a=function isc_FormItem__clearCachedHandles(){this.$14x=null;this.$13m=null;this.$16i=null;this.$15d={}}
+,isc.A.isDrawn=function isc_FormItem_isDrawn(){return this.$if}
+,isc.A.$14v=function isc_FormItem__setUpIcons(){var _1=this.icons;if(_1==null)return;for(var i=0;i<_1.length;i++){var _3=_1[i];this.$36c(_3)}}
+,isc.A.$36c=function isc_FormItem__setUpIcon(_1){this.$753(_1);if(this.iconIsDisabled(_1))_1.$153=true}
+,isc.A.getIconsHTML=function isc_FormItem_getIconsHTML(_1){if(!this.showIcons||(this.icons==null&&(!_1||!this.showPickerIcon))){return""}
+var _2=this.$16j(true);if(this.showIconsOnFocus&&!_2){this.hideAllIcons();return""}
+var _3=isc.SB.create(),_4=false;var _5=this.icons;if(_1&&this.showPickerIcon){_5=[this.getPickerIcon()];_5.addList(this.icons)}
+for(var i=0;i<_5.length;i++){var _7=_5[i];if(!this.$16f(_7)||this.$16e(_7))continue;if(_4==false){_4=true;_3.append(this.$80b)}
+_3.append("<td>");var _8=_2&&this.$54o(_7,true);_3.append(this.getIconHTML(_7,null,this.iconIsDisabled(_7),!!_8));_3.append("</td>")}
+if(_4)_3.append("</table>");return _3.release()}
+,isc.A.$16j=function isc_FormItem__hasRedrawFocus(_1){var _2=this.hasFocus||this.$105;if(_1&&!_2&&this.items!=null){for(var i=0;i<this.items.length;i++){if(this.items[i].hasFocus||this.items[i].$105)_2=true;break}}
+return _2}
+,isc.A.$753=function isc_FormItem__setupIconName(_1,_2){if(_2==null)_2=_1.name;if(_2==null&&_1.$151!=null){this.logWarn("Attempting to use '$151' property as icon name - this property has been deprecated in favor of 'name'");_2=_1.$151}
+if(_2!=null){var _3=this.icons?this.icons.findAll("name",_2):[];if(_3!=null&&_3.length>0&&(_3.length>1||_3[0]!=_1))
+{this.logWarn("This form item has more than one icon with the same specified name:"+_2+". Ignoring this name and using an auto-generated one instead.");_2=null}else{_1.name=_2;return _1}}
+if(this.$16k==null)this.$16k=0;_1.name="_"+this.$16k++;return _1}
+,isc.A.$16l=function isc_FormItem__getIconVAlign(_1){if(this.$150&&(_1==this.$150))return null;var _2=this.iconVAlign;if(_2==isc.Canvas.TOP){return"top"}else if(_2==isc.Canvas.BOTTOM){return(isc.Browser.isSafari?"bottom":"text-bottom")}else if(_2==isc.Canvas.CENTER){return"middle"}
+return _2}
+,isc.A.$16m=function isc_FormItem__getIconVMargin(){return 0}
+,isc.A.getIconPrompt=function isc_FormItem_getIconPrompt(_1){if(this.iconIsDisabled(_1))return null;return _1.prompt||this.iconPrompt}
+,isc.A.getIconURL=function isc_FormItem_getIconURL(_1,_2,_3,_4){var _5=_1.src||this.defaultIconSrc,_6=(this.showDisabled&&(_3||this.iconIsDisabled(_1)))?isc.StatefulCanvas.STATE_DISABLED:_2?isc.StatefulCanvas.STATE_OVER:null;_5=isc.Img.urlForState(_5,false,_4,_6);return _5}
+,isc.A.getIconHTML=function isc_FormItem_getIconHTML(_1,_2,_3,_4){var _5=this.getIconURL(_1,_2,_3,_4),_6=this.getIconWidth(_1),_7=this.getIconHeight(_1),_8=(_1.hspace!=null?_1.hspace:this.iconHSpace),_9=_1.backgroundColor,_10=this.form.getID(),_11=this.getItemID(),_12=_1.name;if(_1.imgOnly){return this.$157(this.$16n(_12),_6,_7,this.$16l(_1),this.$16m(_1),_8,_9,_5,_11,_12)}else{if(isc.FormItem.$16o==null){isc.FormItem.$16o=["<a role='button' ID='",,"'"," style='margin-left:",,"px;"+(isc.Browser.isMoz?"-moz-user-focus:":""),,,"' tabIndex=",," ",isc.DynamicForm.$89,"='",,"' ",isc.DynamicForm.$9a,"='",,"' handleNativeEvents=false>",,"</a>"]}
+var _13=isc.FormItem.$16o;var _3=this.iconIsDisabled(_1),_14=(_3||this.canTabToIcons==false)?-1:this.$16p(_1);_13[1]=this.$16q(_12);var _15=this.$16r(_1);if(_15)_13[4]=_8;else _13[4]="0"
+if(isc.Browser.isMoz)_13[6]=(_14<0?"ignore;":"normal;");_13[7]=_3?"cursor:default;":null;_13[9]=_14;if(isc.Canvas.ariaEnabled()&&!isc.Canvas.useLiteAria()){_13[10]=" ";if(_1.prompt){_13[10]=" aria-label='"+_1.prompt.replace("'","'")+"' "}
+if(_3)_13[10]+=" aria-disabled='true' "}
+_13[13]=_11;_13[17]=_12;_13[19]=this.$157(this.$16n(_12),_6,_7,this.$16l(_1),this.$16m(_1),(!_15?_8:null),_9,_5,_11,_12,_8);return _13.join(isc.emptyString)}}
+,isc.A.$16r=function isc_FormItem__applyIconHSpaceToLink(_1){return(!isc.Browser.isIE&&!isc.Browser.isSafari&&!_1.imgOnly&&!isc.Browser.isStrict)}
+,isc.A.$157=function isc_FormItem__getIconImgHTML(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13){if(isc.FormItem.$16s==null){isc.FormItem.$16s=["ID='",,"' style='",,,";margin-top:",,"px;margin-bottom:",,"px;",,,,"'"]}
+var _14=isc.FormItem.$16s;_14[1]=_1
+if(_4!=null){_14[3]=this.$14i;_14[4]=_4}else{_14[3]=null;_14[4]=null}
+_14[6]=_5;_14[8]=_5;if(_6!=null){_14[10]="margin-left:"+_6+"px;"}else{_14[10]=null}
+_14[11]=(_7!=null?"background-color:"+_7+";":null);if(isc.Browser.isStrict&&!isc.Browser.isTransitional&&!_12)
+_14[12]="display:block;"
+else _14[12]=null;if(_13)_14[14]=_13;var _13=_14.join(isc.emptyString);_14.length=14;var _15=isc.FormItem.$4s=isc.FormItem.$4s||{align:isc.Browser.isSafari?"absmiddle":"TEXTTOP"};_15.src=_8;_15.width=_2;_15.height=_3;_15.extraStuff=_13;return isc.Canvas.imgHTML(_15)}
+,isc.A.$16q=function isc_FormItem__getIconLinkId(_1){if(this.isInactiveHTML()){return this.$qs(this._$_iLink_+_1)}
+if(!this.$16t)this.$16t={};var _2=this.$16t;if(!_2[_1]){_2[_1]=this.$qs(this._$_iLink_+_1,true)}
+return _2[_1]}
+,isc.A.$16n=function isc_FormItem__getIconImgId(_1){if(this.isInactiveHTML()){return this.$qs(this._$_iImg_+_1)}
+if(!this.$16u)this.$16u={};var _2=this.$16u;if(!_2[_1]){_2[_1]=this.$qs(this._$_iImg_+_1,true)}
+return _2[_1]}
+,isc.A.$16g=function isc_FormItem__getIconLinkElement(_1){_1=this.getIcon(_1);if(_1==null||_1.imgOnly)return null;var _2=this.$16q(_1.name);return isc.Element.get(_2)}
+,isc.A.$16v=function isc_FormItem__getIconImgElement(_1){_1=this.getIcon(_1);if(_1==null)return null;var _2=this.$16n(_1.name);return isc.Element.get(_2)}
+,isc.A.$16w=function isc_FormItem__getTargetIcon(_1){if(!_1||!this.icons)return null;var _2=isc.DynamicForm.$mu(_1);if(!_2||_2.item!=this)return null;return _2.icon}
+,isc.A.$16f=function isc_FormItem__shouldShowIcon(_1){if(_1.showIf==null)return true;isc.Func.replaceWithMethod(_1,"showIf","form,item");return!!_1.showIf(this.form,this)}
+,isc.A.$16e=function isc_FormItem__writeIconIntoItem(_1){if(_1.writeIntoItem)return true;return false}
+,isc.A.$16x=function isc_FormItem__mayShowIcons(){if(!this.showIcons||this.icons==null||(this.showIconsOnFocus&&!this.hasFocus))return false;return true}
+,isc.A.getTotalIconsWidth=function isc_FormItem_getTotalIconsWidth(){if(!this.$16x())return 0;var _1=0;for(var i=0;i<this.icons.length;i++){var _3=this.icons[i];if(!this.$16f(_3)||this.$16e(_3))continue;_1+=(_3.width!=null?_3.width:this.iconWidth)+(_3.hspace!=null?_3.hspace:this.iconHSpace)}
+return _1}
+,isc.A.getIconsHeight=function isc_FormItem_getIconsHeight(){if(!this.$16x())return 0;var _1=0;for(var i=0;i<this.icons.length;i++){var _3=this.icons[i];if(!this.$16f(_3)||this.$16e(_3))continue;var _4=(_3.height!=null?_3.height:this.iconHeight);_4+=this.$16m()*2;if(_4>_1)_1=_4}
+return _1}
+,isc.A.setIcons=function isc_FormItem_setIcons(_1){this.icons=_1;this.$14v();this.redraw()}
+,isc.A.addIcon=function isc_FormItem_addIcon(_1){if(!this.icons)this.icons=[];this.icons.add(_1);this.setIcons(this.icons);return _1}
+,isc.A.getIconByProperty=function isc_FormItem_getIconByProperty(_1,_2){if(this.icons)return this.icons.find(_1,_2)}
+,isc.A.setIconEnabled=function isc_FormItem_setIconEnabled(_1){_1=this.getIcon(_1);if(!_1)return;var _2=!this.iconIsDisabled(_1);if(!!_1.$153!=_2)return;if(!_2)_1.$153=true;else delete _1.$153;if(!this.isDrawn())return;var _3=this.$16g(_1),_4=this.$16v(_1);if(_3){if(!_2){isc.FormItem.setElementTabIndex(_3,-1);_3.style.cursor="default"}else{isc.FormItem.setElementTabIndex(_3,this.$16p(_1))
+_3.style.cursor=""}}
+if(_4){var _5=this.getIconURL(_1,null,!_2);isc.Canvas.$wg(_4,_5)}}
+,isc.A.showIcon=function isc_FormItem_showIcon(_1,_2){delete this.$16y;if(!isc.isAn.Object(_1))return;if(_1.name==null){this.$753(_1)}
+var _3=this.$16f(_1);_1.showIf=function(){return true}
+if(!_3&&this.showIcons&&this.containerWidget.isDrawn()&&this.isVisible())
+{if(this.redrawOnShowIcon||_1.writeIntoItem){this.redraw()}else{var _4;for(var i=(this.icons.indexOf(_1)-1);i>=0;i--){var _6=this.icons[i];if(!_6.writeIntoItem&&this.$16f(_6)){_4=_6;break}}
+var _7=true;if(_4!=null){var _8;_8=_4.imgOnly?this.$16v(_4):this.$16g(_4);if(_8!=null){var _9=this.getIconHTML(_1,null,this.isDisabled(),_2);var _10="<td>"+_9+"</td>",_11=_8.parentNode;isc.Element.insertAdjacentHTML(_11,"afterEnd",_10);this.$16z();_7=false}}
+if(_7){this.logInfo("showIcon(): Unable to dynamically update icon visibility - "+"redrawing the form");return this.redraw()}else{this.$16d(_1)}}}}
+,isc.A.hideIcon=function isc_FormItem_hideIcon(_1){if(!isc.isAn.Object(_1))return;var _2=this.$16f(_1);_1.showIf=function(){return false}
+if(_2&&this.showIcons&&this.containerWidget.isDrawn()&&this.isVisible())
+{if(this.redrawOnShowIcon||_1.writeIntoItem){this.redraw()}
+else{var _3=_1.imgOnly?this.$16v(_1):this.$16g(_1);if(_3==null){this.logInfo("hideIcon(): Unable to dynamically update icon visibility - "+"redrawing the form");return this.redraw()}
+var _4=_3.parentNode,_5=_4.parentNode;if(_4.tagName.toLowerCase()!="td"){isc.Element.clear(_3)}else{if(_5.cells.length==1){isc.Element.clear(_3.parentNode)}else{isc.Element.clear(_4)}}
+this.$16z()}}}
+,isc.A.$16z=function isc_FormItem__iconVisibilityChanged(){this.$160()}
+,isc.A.showAllIcons=function isc_FormItem_showAllIcons(_1){if(this.$161!=null){isc.Timer.clear(this.$161);delete this.$161}
+this.$162(this.icons,_1)}
+,isc.A.hideAllIcons=function isc_FormItem_hideAllIcons(){if(this.$161!=null)delete this.$161;this.$163(this.icons);this.$16y=true}
+,isc.A.$162=function isc_FormItem__showIcons(_1,_2){if(_1==null||_1.length==0)return;for(var i=0;i<_1.length;i++){_2=_2&&this.$54o(_1[i],true);this.showIcon(_1[i],_2)}}
+,isc.A.$163=function isc_FormItem__hideIcons(_1){if(_1==null||_1.length==0)return;for(var i=0;i<_1.length;i++){this.hideIcon(_1[i])}}
+,isc.A.getIcon=function isc_FormItem_getIcon(_1){if(_1==null)return;var _2;if(this.icons){for(var i=0;i<this.icons.length;i++){if(this.icons[i]==_1||this.icons[i].name==_1)_2=this.icons[i]}}
+if(!_2&&this.showPickerIcon){if(isc.isAn.Object(_1))_1=_1.name;var _4=this.getPickerIcon();if(_4&&_4.name==_1)_2=_4}
+if(!_2){this.logInfo("FormItem unable to get pointer to icon with name:"+_1+" - Invalid name, or icons array has been inappropriately modified."+" To update icon[s] for some form item, use the method 'setIcons()'.")}
+return _2}
+,isc.A.$164=function isc_FormItem__setIconImgState(_1,_2,_3){if(this.isDisabled())return;if(_3==null)_3=this.hasFocus&&this.$54o(_1,true)
+var _4=this.$16v(_1);if(_4!=null){var _5=this.getIconURL(_1,_2,null,_3);isc.Canvas.$wg(_4,_5)}}
+,isc.A.$165=function isc_FormItem__iconShouldShowOver(_1){if(this.isDisabled())return false;if(_1.showOver!=null)return _1.showOver;return this.showOverIcons}
+,isc.A.$54o=function isc_FormItem__iconShouldShowFocused(_1,_2){if(!_1||this.isDisabled())return false;if(_2&&_1.showFocusedWithItem==false)return false;if(_1.showFocused!=null)return _1.showFocused;return this.showFocusedIcons}
+,isc.A.setIconBackgroundColor=function isc_FormItem_setIconBackgroundColor(_1,_2){_1.backgroundColor=_2;var _3=this.$16v(_1);if(_3!=null){try{_3.style.backgroundColor=_2}catch(e){}}}
+,isc.A.showPicker=function isc_FormItem_showPicker(_1,_2,_3,_4){var _5=this.picker;_3=isc.addProperties(_3||{},{callingForm:this.form,callingFormItem:this});if(isc.isA.String(_5)&&isc.isA.Canvas(window[_5])){_5=this.picker=window[_5]}
+if(!_5){_5=this.picker=this.createPicker(_3);if(!isc.isA.Function(_5.dataChanged)){_5.dataChanged=new Function()}
+_5.observe(_5,"resized","observed.placeNear(observed.lastShowRect)");if(this.pickerDataChanged&&_5.dataChanged){this.observe(_5,"dataChanged","observer.pickerDataChanged(observed)")}}else{isc.addProperties(_5,_3)}
+var _6=_5.getID();if(!_4){if(this.getPickerRect){_4=this.getPickerRect()}else if(_2){var _7=this.getIconPageRect(_2);_4=[_7[0],_7[1]]}
+else _4=[isc.EH.getX(),isc.EH.getY()]}
+_5.lastShowRect=_4;_5.setRect(_4);if(!_5.isDrawn()){_5.moveTo(null,-9999);_5.draw()}
+this.picker.placeNear(_4);if(isc.isA.Function(_5.setData)){if(isc.isA.Function(this.getPickerData)){_5.setData(this.getPickerData(_5))}else _5.setData(this.getValue(_5))}
+var _8=_1?null:_6+".hide()";if(_1&&isc.isA.Function(_5.clickMaskClicked))
+_8=_6+".clickMaskClicked()";_5.showClickMask(_8,!_1,_5);if(_1!=null&&_5.isModal==null)_5.isModal=_1;_5.show();_5.bringToFront();_5.focus();return false}
+,isc.A.createPicker=function isc_FormItem_createPicker(_1){return this.createAutoChild("picker",_1)}
+,isc.A.hidePicker=function isc_FormItem_hidePicker(){if(!this.picker)return;this.picker.hideClickMask();this.picker.hide()}
+,isc.A.redraw=function isc_FormItem_redraw(_1){if(!this.isDrawn())return;if(this.hasFocus)this.$105=true;if(!this.hasFocus&&this.items!=null){for(var i=0;i<this.items.length;i++){if(this.items[i].hasFocus)this.$105=true}}
+if(this.containerWidget.redrawFormItem){this.containerWidget.redrawFormItem(this,_1)}else{this.containerWidget.markForRedraw("Form item redrawn"+(_1?": "+_1:isc.emptyString))}}
+,isc.A.adjustOverflow=function isc_FormItem_adjustOverflow(_1){if(!this.$43c){this.$43c=[this.getID()," overflow changed: "]}
+if(_1==null)this.$43c[2]="No Reason Specified.";else this.$43c[2]=_1;if(isc.isA.DynamicForm(this.containerWidget)){this.containerWidget.$103();this.containerWidget.adjustOverflow(this.$43c.join(isc.emptyString))}}
+,isc.A.show=function isc_FormItem_show(_1){if(this.visible==true)return;this.visible=true;if(!_1)this.showIf=null;if(this.containerWidget.redrawFormItem)this.containerWidget.redrawFormItem(this,"showing form item");else this.containerWidget.markForRedraw("showing form item");this.visibilityChanged(true)}
+,isc.A.hide=function isc_FormItem_hide(_1){if(this.visible==false)return;this.visible=false;if(!_1)this.showIf=null;if(this.containerWidget.redrawFormItem)this.containerWidget.redrawFormItem(this,"hiding form item");else this.containerWidget.markForRedraw("hiding form item");this.visibilityChanged(true)}
+,isc.A.$104=function isc_FormItem__updateHTMLForPageLoad(){if(!isc.Browser.isSafari||!this.isDrawn())return;this.$160()}
+,isc.A.$160=function isc_FormItem__resetWidths(){if(!this.isDrawn())return;var _1=this.clipValue;var _2=this.getOuterTableElement();if(_2)_2.style.width=this.getInnerWidth();if(this.showPickerIcon){var _3=this.$15f();if(_3)_3.style.width=this.getElementWidth();var _4=this.getPickerIcon(),_5=this.$16v(_4);if(_5){_5.style.height=this.getPickerIconHeight();_5.style.width=this.getPickerIconWidth()}}
+var _6=this.getTextBoxWidth(),_7=this.getTextBoxHeight(),_8=this.$15h();if(_8){if(_1)_8.style.width=_6+"px";else _8.style.minWidth=_6+"px";_8.style.height=_7+"px"}
+if(this.$15m()){var _9=this.getFocusElement()
+if(_9){_9.style.width=_6;_9.style.height=_7}}}
+,isc.A.hasElement=function isc_FormItem_hasElement(){return this.hasDataElement()}
+,isc.A.hasDataElement=function isc_FormItem_hasDataElement(){return this.$125}
+,isc.A.getElement=function isc_FormItem_getElement(_1){return this.getDataElement(_1)}
+,isc.A.getFocusElement=function isc_FormItem_getFocusElement(){if(!this.isDrawn()||!this.$kk())return null;if(this.hasDataElement())return this.getDataElement();if(this.$15m()){if(!this.$16i){this.$16i=isc.Element.get(this.getID()+"__focusProxy")}
+return this.$16i}
+return this.$872()?this.$15h():null}
+,isc.A.$166=function isc_FormItem__getCurrentFocusElement(){if(this.hasFocus==null&&!isc.EH.$vm==this){return null}
+var _1=this.$167;if(isc.Browser.isIE&&_1!=this.getActiveElement()){this.logInfo("not returning focus element "+this.echoLeaf(_1)+" since it's not active"+isc.EH.$lb(),"nativeFocus");if(this.hasFocus){this.hasFocus=false;this.elementBlur()}
+this.$167=null;return null}
+return _1}
+,isc.A.getDataElement=function isc_FormItem_getDataElement(_1){if(_1==null){var _2=this}else{var _2=this.form.getItem(_1)}
+if(!_2.hasDataElement())return null;if(!this.isDrawn())return;var _3=this.$14x;if(_3==null){_3=(this.$14x=isc.Element.get(this.getDataElementId()))}
+return _3}
+,isc.A.getOuterElement=function isc_FormItem_getOuterElement(){if(!this.isDrawn())return null;var _1=this.$158;if(this.$15s(_1)){return this.getOuterTableElement()}
+if(this.showPickerIcon){return this.$15f()}
+var _2=this.$15h();if(_2==null){_2=this.getHandle()}
+return _2}
+,isc.A.getHandle=function isc_FormItem_getHandle(){if(!this.isDrawn())return null;if(this.$11e())return this.getAbsDiv();if(this.containerWidget==this.form)return this.getFormCell();return isc.Element.get(this.$qs(this.$13j))}
+,isc.A.getOuterTableElement=function isc_FormItem_getOuterTableElement(){return this.$15c(this.$133)}
+,isc.A.$168=function isc_FormItem__overElement(_1){if(!_1)_1=isc.EH.lastEvent;var _2=_1.itemInfo;return(_2&&_2.overElement)}
+,isc.A.$169=function isc_FormItem__overTextBox(_1){if(!_1)_1=isc.EH.lastEvent;var _2=_1.itemInfo;return(_2&&(_2.overTextBox||_2.overElement))}
+,isc.A.$17a=function isc_FormItem__overControlTable(_1){if(!_1)_1=isc.EH.lastEvent;var _2=_1.itemInfo;return(_2&&(_2.overControlTable||this.$169(_1)||(_2.overIcon&&this.getIcon(_2.overIcon)==this.getPickerIcon())))}
+,isc.A.getFormCellID=function isc_FormItem_getFormCellID(){return this.$qs(this.$14k)}
+,isc.A.getFormCell=function isc_FormItem_getFormCell(){return isc.Element.get(this.getFormCellID())}
+,isc.A.getDisplayValue=function isc_FormItem_getDisplayValue(_1){var _2;return this.mapValueToDisplay(_1!==_2?_1:this.getValue())}
+,isc.A.mapValueToDisplay=function isc_FormItem_mapValueToDisplay(_1){var _2=this.$17b(_1);_1=this.$17c(_2);return _1}
+,isc.A.shouldApplyStaticTypeFormat=function isc_FormItem_shouldApplyStaticTypeFormat(){return this.applyStaticTypeFormat}
+,isc.A.$17c=function isc_FormItem__formatDataType(_1){var _2=this.shouldApplyStaticTypeFormat();if(_2){if(this.formatValue!=null){var _3=this.form,_4=this.form?this.form.values:{};return this.formatValue(_1,_4,_3,this)}}else if(this.formatEditorValue!=null){var _3=this.form,_4=this.form?this.form.values:{};return this.formatEditorValue(_1,_4,_3,this)}else if(this.$65!=null){var _3=this.form,_4=this.form?this.form.values:{};if(this.$62&&this.$62.editFormatter){return this.$62.editFormatter(_1,this,_3,_4)}else{return this.$65(_1,this,_3,_4)}}
+if(isc.isA.Date(_1)){if(this.$851()){var _5=this.$30o();var _6=isc.SimpleType.inheritsFrom(this.getType(),"time");return isc.Time.toTime(_1,_5,_6)}else{var _5=this.$45i();var _7=this.getType(),_8=isc.SimpleType.inheritsFrom(_7,"date"),_9=isc.SimpleType.inheritsFrom(_7,"datetime");if(_8&&!_9){return _1.toShortDate(_5,false)}else{if(this.useShortDateFormat){return _9?_1.toShortDatetime(_5,true):_1.toShortDate(_5,true)}else{return _1.toNormalDate(_5)}}}}
+if(this.$62&&isc.isA.Function(this.$62.normalDisplayFormatter)&&_2)
+{return this.$62.normalDisplayFormatter(_1,this,this.form,this.form.values)}
+if(this.$64&&_2){return this.$64(_1,this,this.form,this.form.values)}
+if(_1==null)_1=this.emptyDisplayValue;else{_1=isc.iscToLocaleString(_1);if(this.emptyDisplayValue!=isc.emptyString&&_1==isc.emptyString)
+_1=this.emptyDisplayValue}
+return _1}
+,isc.A.$851=function isc_FormItem__formatAsTime(){var _1=this.getType(),_2=isc.SimpleType.inheritsFrom(_1,"time"),_3=_2;if(this.timeFormatter==null&&this.dateFormatter!=null)_3=false;if(this.dateFormatter==null&&this.timeFormatter!=null)_3=true;return _3}
+,isc.A.$45i=function isc_FormItem__getDateFormatter(){if(this.dateFormatter!=null)return this.dateFormatter;var _1=this.getType(),_2=isc.SimpleType.inheritsFrom(_1,"date"),_3=isc.SimpleType.inheritsFrom(_1,"datetime");if(_2&&this.displayFormat!=null)return this.displayFormat;if(_3&&this.form.datetimeFormatter!=null)return this.form.datetimeFormatter;return this.form.dateFormatter}
+,isc.A.$30o=function isc_FormItem__getTimeFormatter(){if(this.timeFormatter!=null)return this.timeFormatter;if(this.displayFormat!=null&&isc.SimpleType.inheritsFrom(this.type,"time")){return this.displayFormat}
+return this.form.timeFormatter}
+,isc.A.mapDisplayToValue=function isc_FormItem_mapDisplayToValue(_1){_1=this.$79d(_1);return this.$17d(_1)}
+,isc.A.$79d=function isc_FormItem__parseDisplayValue(_1){var _2=this.shouldApplyStaticTypeFormat();if(!_2){if(this.parseEditorValue!=null){_1=this.parseEditorValue(_1,this.form,this)}else if(this.$66!=null){var _3=this.form,_4=_3?_3.values:{};if(this.$62&&this.$62.parseInput){_1=this.$62.parseInput(_1,this,_3,_4)}else{_1=this.$66(_1,this,_3,_4)}}
+if(_1!=null&&isc.isA.String(_1)){var _5=this.getType();var _6=isc.SimpleType.inheritsFrom(_5,"date"),_7=isc.SimpleType.inheritsFrom(_5,"time"),_8=_6&&isc.SimpleType.inheritsFrom(_5,"datetime"),_9=(_1=="");if(_6||_7){if(this.$851()){if(_9&&this.allowEmptyValue){_1=null}else{var _10;if(!_7&&isc.isA.Date(this._value)){_10=this._value}
+var _11=isc.Time.parseInput(_1,false,false,!_7,_10);if(isc.isA.Date(_11))_1=_11}}else{var _12=this.inputFormat;if(_12==null){_12=Date.mapDisplayFormatToInputFormat(this.$45i())}
+var _13=_6&&!_8;var _14=Date.parseInput(_1,_12,this.centuryThreshold,false,!_13);if(isc.isA.Date(_14))_1=_14}}}}
+return _1}
+,isc.A.getType=function isc_FormItem_getType(){if(this.type!=null)return this.type;if(this.criteriaField&&this.form&&this.form.dataSource){var _1=isc.DataSource.get(this.form.dataSource);var _2=_1.getField(this.criteriaField);if(_2)return _2.type}
+return null}
+,isc.A.setToZeroTime=function isc_FormItem_setToZeroTime(_1){Date.setToZeroTime(_1)}
+,isc.A.$17b=function isc_FormItem__mapKey(_1,_2){var _3=_2?null:_1;var _4=this.getValueMap();if(!_4)return _3;if(isc.isA.String(_4))_4=this.getGlobalReference(_4);if(isc.isAn.Array(_4)&&!isc.isAn.Array(_1))return _3;var _5;if(isc.isAn.Array(_1)){_5="";for(var i=0;i<_1.length;i++){var _7=isc.getValueForKey(_1[i],_4,_1[i]);var _8=this.$xq(_1[i]);if(_8!=null&&_1.length>1)_5+=_8;_5+=_7;if(i!=_1.length-1)_5+=this.multipleValueSeparator}}else{_5=isc.getValueForKey(_1,_4,_3)}
+return _5}
+,isc.A.$17d=function isc_FormItem__unmapKey(_1){var _2=this.getValueMap();if(!_2)return _1;if(isc.isA.String(_2))_2=this.getGlobalReference(_2);if(isc.isAn.Array(_2))return _1;var _3=isc.getKeyForValue(_1,_2);if(_3==_1&&_3==this.emptyDisplayValue)_3="";return _3}
+,isc.A.setValueMap=function isc_FormItem_setValueMap(_1){this.valueMap=_1;this.updateValueMap()}
+,isc.A.setValueIcons=function isc_FormItem_setValueIcons(_1){this.valueIcons=_1;if(this.isDrawn())this.redraw()}
+,isc.A.setOptions=function isc_FormItem_setOptions(_1){return this.setValueMap(_1)}
+,isc.A.updateValueMap=function isc_FormItem_updateValueMap(_1){if(_1!=false){this.setElementValue(this.mapValueToDisplay(this.getValue()))}
+if(this.hasElement())this.setElementValueMap(this.getValueMap())}
+,isc.A.setElementValueMap=function isc_FormItem_setElementValueMap(_1){}
+,isc.A.getValueMap=function isc_FormItem_getValueMap(){var _1=this.valueMap;if(isc.isA.String(_1)){_1=this.getGlobalReference(_1)}
+var _2=this.$43d;if(_2!=null){if(_1==null)_1=_2;else{if(isc.isAn.Array(_1)){var _3=_1;_1={};for(var i=0;i<_3.length;i++){_1[_3[i]]=_3[i]}}
+isc.addProperties(_1,_2)}}
+return _1}
+,isc.A.getValueFieldName=function isc_FormItem_getValueFieldName(){if(this.valueField)return this.valueField;if(this.form.dataSource&&this.foreignKey)
+return isc.DS.getForeignFieldName(this,this.form.dataSource);var _1=this.getFieldName();return _1||"name"}
+,isc.A.getDisplayFieldName=function isc_FormItem_getDisplayFieldName(){if(this.displayField)return this.displayField;var _1=this.getOptionDataSource();var _2=this.getValueFieldName();if(_1&&_1!=isc.DataSource.getDataSource(this.form.dataSource)&&_1.getField(_2)&&_1.getField(_2).hidden==true){return _1.getTitleField()}}
+,isc.A.$426=function isc_FormItem__displayFieldValueFromFormValues(){if(this.displayField!=null){var _1=this.form.getValues(),_2=_1[this.getFieldName()],_3=_1[this.displayField];if(_3!=null){var _4={};_4[_2]=_3}
+this.$43d=_4}}
+,isc.A.getOptions=function isc_FormItem_getOptions(){return this.getValueMap()}
+,isc.A.getOptionDataSource=function isc_FormItem_getOptionDataSource(){var _1=this.optionDataSource;if(_1==null&&this.form&&this.form.dataSource){if(this.foreignKey)_1=isc.DS.getForeignDSName(this,this.form.dataSource);else _1=this.form.dataSource}
+if(isc.isA.String(_1))_1=isc.DataSource.getDataSource(_1);return _1}
+,isc.A.getValueMapTitle=function isc_FormItem_getValueMapTitle(_1){var _2=this.getValueMap();if(isc.isAn.Array(_2))return(_2.contains(_1)?_1:"");return _2[_1]}
+,isc.A.saveValue=function isc_FormItem_saveValue(_1,_2){var _3;this._value=_1;this.$14u=_2;if(this.isDrawn()){if(this.$11d())this.$17e(_1)}
+if(this.form==null)return;if(_1==_3&&this.$17f){this.form.clearItemValue(this)}else{this.form.saveItemValue(this,_1)}}
+);isc.evalBoundary;isc.B.push(isc.A.$17e=function isc_FormItem__setHiddenDataElementValue(_1){var _2=this.$15b();if(_2)_2.value=_1}
+,isc.A.setValue=function isc_FormItem_setValue(_1,_2,_3){this.$17g=true;var _4=(this.maintainSelectionOnTransform&&this.hasFocus&&(this.$17h()!=this.$14l));if(_4)this.rememberSelection(_3);if(this.$17i!=null){isc.Timer.clearTimeout(this.$17i);this.$17i=null}
+var _5;if(_1==null&&!_2){var _6=this.getDefaultValue();if(_6!=null){_5=true;_1=_6}}
+if(this.length!=null&&_1!=null&&isc.isA.String(_1)&&_1.length>this.length)
+{_1=_1.substring(0,this.length)}
+this.saveValue(_1,_5);if(_1!=null&&this.shouldFetchMissingValue(_1)){this.$78w();this.$43f(_1)}else{if(this.$78y==null||!this.compareValues(this.$78y,this._value))
+{this.$846()}}
+var _7=this.mapValueToDisplay(_1);this.setElementValue(_7,_1);if(_4)this.resetToLastSelection(true);return _1}
+,isc.A.shouldFetchMissingValue=function isc_FormItem_shouldFetchMissingValue(_1){if(this.fetchMissingValues==false)return false;if(this.getOptionDataSource()==null)return false;var _2=false;if(this.$847!=null&&(this.$43e||this.$847.find(this.getValueFieldName(),_1)!=null))
+{_2=true}
+if(_2)return false;if(this.alwaysFetchMissingValues)return true;if(this.getDisplayFieldName()==null)return false;var _3=(this.$17b(_1,true)!=null);return!_3}
+,isc.A.setDefaultValue=function isc_FormItem_setDefaultValue(_1){var _2=this.defaultValue,_3;this.defaultValue=_1;if(this.isSetToDefaultValue()||(this._value==null&&_2===_3))
+this.clearValue()}
+,isc.A.$43f=function isc_FormItem__checkForDisplayFieldValue(_1){if(this.$63l==null||!this.$63l[_1]){if(!this.$63l)this.$63l={};this.$63l[_1]=true;var _2=isc.addProperties({},this.optionCriteria);if(!this.filterLocally){var _3={};_3[this.getValueFieldName()]=_1;_2=isc.DataSource.combineCriteria(_2,_3)}
+var _4=isc.addProperties({},this.optionFilterContext,{showPrompt:false,clientContext:{dataValue:_1,filterLocally:this.filterLocally},componentId:this.containerWidget.getID(),componentContext:this.getFieldName()});var _5;if(this.optionOperationId!==_5){_4.operationId=this.optionOperationId}
+this.getOptionDataSource().fetchData(_2,{target:this,methodName:"fetchMissingValueReply"},_4)}}
+,isc.A.fetchMissingValueReply=function isc_FormItem_fetchMissingValueReply(_1,_2,_3){var _4,_5=_1.clientContext.dataValue,_6=_1.clientContext.filterLocally,_7=this.getDisplayFieldName(),_8=this.getValueFieldName();delete this.$63l[_5];if(_2)_4=_2.find(_8,_5);if(!_4){this.logInfo("Unable to retrieve display value for data value:"+_5+" from dataSource "+this.getOptionDataSource());if(!_6){if(_2!=null&&_2.getLength()>0){this.logWarn("FetchMissingValues - filterLocally is false yet optionDataSource "+"fetch included records that do not match our current data value. Ignoring "+"these values.","fetchMissingValues");this.logDebug("Data returned:"+this.echoAll(_2),"fetchMissingValues")}
+return}}
+this.$848(_2);if(_6)this.$43e=true;var _9=(this._value==_5)&&this.$849();this.updateDisplayValueMap(_9)}
+,isc.A.$848=function isc_FormItem__addDataToDisplayFieldCache(_1,_2){if(this.$847==null){this.$847=[]}
+if(_2){var _3=this.$847,_4=_3.length,_5=this.getValueFieldName();for(var i=0;i<_1.length;i++){var _7=true,_8=_1[i];for(var j=0;j<_4;j++){if(_3[j][_5]==_8[_5]){_7=false;break}}
+if(_7==false)continue;_3[_3.length]=_8}}else{this.$847.addList(_1)}
+var _10=this.getOptionDataSource();if(!this.isObserving(_10,"dataChanged")){this.observe(_10,"dataChanged","observer.dataSourceDataChanged(observed,dsRequest,dsResponse)")}}
+,isc.A.$849=function isc_FormItem__refreshForDisplayValueChange(){return true}
+,isc.A.updateDisplayValueMap=function isc_FormItem_updateDisplayValueMap(_1){this.$846();var _2=this.$847,_3=this.getDisplayFieldName(),_4=this.getValueFieldName();var _5=this.$43d={};var _6;for(var i=0;i<_2.length;i++){var _8=_2[i];var _9=_8[_4],_10=_8[_3];if(_5[_9]!==_6){if(_5[_9]!=_10){this.logWarn("Deriving valueMap for '"+_4+"' from dataSource based on displayField '"+_3+"'. This dataSource contains more than one record with "+_4+" set to "+_9+" with differing "+_3+" values."+" Derived valueMap is therefore unpredictable.","fetchMissingValues")}
+continue}
+_5[_8[_4]]=_8[_3]}
+this.updateValueMap(_1)}
+,isc.A.invalidateDisplayValueCache=function isc_FormItem_invalidateDisplayValueCache(_1){this.$43d=null;this.$847=null;this.$78w();this.$43e=false;var _2=this.getOptionDataSource();if(_2!=null&&this.isObserving(_2,"dataChanged")){this.ignore(_2,"dataChanged")}
+if(_1)return;if(this.form.$425(this)){this.$426()}else if(this._value!=null&&this.shouldFetchMissingValue(this._value)){this.$78w();this.$43f(this._value)}
+this.updateValueMap()}
+,isc.A.dataSourceDataChanged=function isc_FormItem_dataSourceDataChanged(_1,_2,_3){var _4=this.logIsDebugEnabled("fetchMissingValues");if(_4){this.logDebug("dataSourceDataChanged is firing for request:"+this.echo(_2),"fetchMissingValues")}
+var _5=this.$847;if(_5==null)return;if(_3.invalidateCache){if(_4){this.logDebug("Request had invalidateCache set, dropping cached display values","fetchMissingValues")}
+this.invalidateDisplayValueCache()}else{var _6=this.getDisplayFieldName(),_7=this.getValueFieldName();var _8=_1.getUpdatedData(_2,_3,true),_9=_2.operationType=="add",_10=_2.operationType=="update",_11=_2.operationType=="remove";if(_4){this.logDebug("Operation type:"+_2.operationType+", updateData:"+this.echoAll(_8),"fetchMissingValues")}
+if(_8==null||(!_9&&!_11&&!_10))return;if(!isc.isAn.Array(_8)){_8=[_8]}
+var _12=false,_7=this.getValueFieldName();if(_9){_5.addList(_8);_12=_8.find(_7,this._value)!=null}else{var _13=_1.getPrimaryKeyFields();for(var i=0;i<_8.length;i++){var _15=_8[i],_16=isc.applyMask(_15,_13);var _17=_1.findByKeys(_16,_5);if(_17==-1){if(_11)continue;_5.add(_15)}else{if(_5[_17][_7]==this._value){_12=true}
+if(_11){_5.removeAt(_17)}else{_5[_17]=_15}}}}
+this.updateDisplayValueMap(_12&&this.$849())}}
+,isc.A.getSelectedRecord=function isc_FormItem_getSelectedRecord(){if(this.$78y!=null){if(!this.compareValues(this.$78y,this._value)){this.logInfo("getSelectedRecord - cached record doesn't match new value - dropping","fetchMissingValues");this.$78w()}}
+return this.$751}
+,isc.A.$846=function isc_FormItem__updateSelectedRecord(){if(this._value==null||this.$847==null){this.$78w()}else{var _1=this.getValueFieldName();this.$751=this.$847.find(_1,this._value);this.$78y=this._value}}
+,isc.A.$78w=function isc_FormItem__clearSelectedRecord(){delete this.$751;delete this.$78y}
+,isc.A.clearValue=function isc_FormItem_clearValue(){this.$17f=true;this.setValue();delete this.$17f}
+,isc.A.setElementValue=function isc_FormItem_setElementValue(_1,_2){if(!this.isDrawn())return;var _3;if(_2===_3){_2=this._value}
+if(this.hasDataElement()){var _4=this.getDataElement();if(_4!=null){this.$17j(_2);return _4.value=_1}}
+var _5=this.$15h();if(_5!=null){if(this.showValueIconOnly)_1=isc.emptyString;var _6=this.$xq(_2);if(_6!=null)
+_1=_6+(_1!=null?_1:isc.emptyString);if(isc.Browser.isIE){if(_1&&_1.startsWith("<nobr>"))
+_1=_1.substring(6);if(_1&&_1.endsWith("</nobr>"))
+_1=_1.substring(0,_1.length-7);try{_5.innerHTML=_1}catch(e){var _7=document.createElement("span");_7.innerHTML=_1;_5.innerHTML="";_5.appendChild(_7)}}else{_5.innerHTML=_1}
+if(!this.clipValue||this.height==null||this.width==null){this.adjustOverflow("textBox value changed")}}}
+,isc.A.$17j=function isc_FormItem__updateValueIcon(_1){if(this.suppressValueIcon||!this.isDrawn())return;var _2=this.$144(_1),_3=this.$15v();if(_2!=null){if(this.imageURLSuffix!=null)_2+=this.imageURLSuffix;_2=isc.Canvas.getImgURL(_2,this.imageURLPrefix||this.baseURL||this.imgDir);if(_3!=null){_3.src=_2}else{var _4=false;if(this.hasDataElement()){var _5=this.getDataElement();if(_5!=null){isc.Element.insertAdjacentHTML(_5,"beforeBegin",this.$xq(_1));_5.style.width=this.getTextBoxWidth(_1);_4=true}}else{var _6=this.$15h();if(_6!=null){isc.Element.insertAdjacentHTML(_6,"afterBegin",this.$xq(_1));_4=true}}
+if(!_4)this.redraw()}}else if(_3!=null&&!(isc.isAn.Array(_1)&&_1.length>1)){isc.Element.clear(_3);if(this.hasDataElement()){var _5=this.getDataElement();_5.style.width=this.getTextBoxWidth(_1)}}}
+,isc.A.setPrompt=function isc_FormItem_setPrompt(_1){this.prompt=_1}
+,isc.A.setHint=function isc_FormItem_setHint(_1){this.hint=_1;if(this.showHint)this.redraw()}
+,isc.A.setHintStyle=function isc_FormItem_setHintStyle(_1){if(!this.$712()&&this.getHint()){var _2=this.$59t();if(_2)_2.className=_1}}
+,isc.A.$66t=function isc_FormItem__showInFieldHint(){if(!this.$66u){var _1=this.getDataElement();if(_1){_1.className=this.$66v();if(this.isA.TextItem){this.$857=_1.type;_1.type="text"}}else{var _2=this.$15h();if(_2!=null){_2.className=this.$66v()}}
+var _3=this.getHint();if(_3)_3=_3.unescapeHTML();this.setElementValue(_3);this.$66u=true}}
+,isc.A.$66s=function isc_FormItem__hideInFieldHint(){if(this.$66u){var _1=this.getDataElement();if(_1){_1.className=this.getTextBoxStyle();if(this.$857){_1.type=this.$857;delete this.$857}}else{var _2=this.$15h();if(_2!=null){_2.className=this.getTextBoxStyle()}}
+this.setElementValue(isc.emptyString);this.$66u=false}}
+,isc.A.$66v=function isc_FormItem__getInFieldHintStyle(){return this.textBoxStyle+"Hint"}
+,isc.A.$712=function isc_FormItem__getShowHintInField(){if(this.showHint&&this.showHintInField){if(isc.isA.TextItem(this)||isc.isA.TextAreaItem(this)||isc.isA.SelectItem(this))
+{return true}}
+return false}
+,isc.A.getDefaultValue=function isc_FormItem_getDefaultValue(){if(this.defaultDynamicValue){this.convertToMethod("defaultDynamicValue");var _1=this,_2=this.form,_3=this.form.getValues();return this.defaultDynamicValue(_1,_2,_3)}
+return this.defaultValue}
+,isc.A.setToDefaultValue=function isc_FormItem_setToDefaultValue(){return this.clearValue()}
+,isc.A.isSetToDefaultValue=function isc_FormItem_isSetToDefaultValue(){return(this.$14u==true)}
+,isc.A.updateValue=function isc_FormItem_updateValue(){if(!this.hasElement()||this.getDataElement()==null)return;var _1=this.getElementValue();return this.$10y(_1)}
+,isc.A.$10y=function isc_FormItem__updateValue(_1){if(this.$17k){_1=this.$17l(_1)}
+_1=this.mapDisplayToValue(_1);return this.storeValue(_1)}
+,isc.A.storeValue=function isc_FormItem_storeValue(_1){if(this.compareValues(_1,this._value)){return true}
+if(this.$17m){if(this.compareValues(_1,this.$17n)){return true}}
+var _2=this.handleChange(_1,this._value);if(this.destroyed)return;_1=this.$17n;this.updateAppearance(_1);if(!this.compareValues(_1,this._value))this.saveValue(_1);delete this.$17n;this.handleChanged(this._value);return _2}
+,isc.A.handleChanged=function isc_FormItem_handleChanged(_1){if(this.form.rulesEngine!=null){this.form.rulesEngine.processChanged(this.form,this)}
+if(this.changed)this.changed(this.form,this,_1);if(this.form){if(!this.suppressItemChanged&&this.form.itemChanged!=null)
+this.form.itemChanged(this,_1);this.checkForImplicitSave()}}
+,isc.A.checkForImplicitSave=function isc_FormItem_checkForImplicitSave(){if(this.getImplicitSave()){var _1=this;this.form.awaitingImplicitSave=true;this.form.fireOnPause("fiImplicitSave",function(){if(_1.form.awaitingImplicitSave){_1.form.performImplicitSave(_1,true)}},this.form.implicitSaveDelay)}}
+,isc.A.updateAppearance=function isc_FormItem_updateAppearance(_1){if(this.valueIcons||this.getValueIcon){this.$17j(_1)}}
+,isc.A.getValue=function isc_FormItem_getValue(){if(this.destroyed||this.destroying)return;var _1;if(this._value!==_1){return this._value}
+return this.form.getSavedItemValue(this)}
+,isc.A.getElementValue=function isc_FormItem_getElementValue(){if(this.$66u)return null;var _1=this.getDataElement();if(!_1)return null;return _1.value}
+,isc.A.resetValue=function isc_FormItem_resetValue(){var _1=this.form.$10s[this.getFieldName()];this.setValue(_1)}
+,isc.A.shouldSubmitValue=function isc_FormItem_shouldSubmitValue(){return this.form.$11q()}
+,isc.A.setCanEdit=function isc_FormItem_setCanEdit(_1){var _2=!this.isReadOnly();this.canEdit=_1;var _3=!this.isReadOnly();if(_2!=_3)this.updateCanEdit()}
+,isc.A.getCanEdit=function isc_FormItem_getCanEdit(){return!this.isReadOnly()}
+,isc.A.updateCanEdit=function isc_FormItem_updateCanEdit(){if(this.isDisabled())return;var _1=this.isReadOnly();this.setElementReadOnly(_1);this.$177();this.$17j();this.updateState()}
+,isc.A.setElementReadOnly=function isc_FormItem_setElementReadOnly(_1){if(this.hasDataElement())this.redraw()}
+,isc.A.$86y=function isc_FormItem__setElementReadOnly(_1){if(this.hasDataElement()){var _2=this.getDataElement();if(_2){if(!_1&&!_2.readOnly){_2.disabled=_1}else{_2.readOnly=_1}
+_2.tabIndex=this.$154()}}else if(this.$kk()){var _2=this.getFocusElement();if(_2)_2.tabIndex=this.$154()}}
+,isc.A.isReadOnly=function isc_FormItem_isReadOnly(){var _1=this.form;var _2=this;while(_2.parentItem){if(_2.canEdit!=null)return!_2.canEdit;_2=_2.parentItem}
+return!isc.DynamicForm.canEditField(_2,_1)}
+,isc.A.isEditable=function isc_FormItem_isEditable(){return true}
+,isc.A.getCriteriaFieldName=function isc_FormItem_getCriteriaFieldName(){return this.criteriaField||this.includeFrom||this.getFieldName()}
+,isc.A.getCriteriaValue=function isc_FormItem_getCriteriaValue(){return this.getValue()}
+,isc.A.hasAdvancedCriteria=function isc_FormItem_hasAdvancedCriteria(){return this._value!=null&&this.operator!=null||this.$85m()}
+,isc.A.$85m=function isc_FormItem__shouldAllowExpressions(){var _1=isc.isA.TextItem(this)||isc.isA.TextAreaItem(this)||isc.isA.CanvasItem(this)||isc.isA.ContainerItem(this)||isc.isA.DateItem(this);if(!_1)return false;_1=this.allowExpressions;if(_1==null)_1=this.form.allowExpressions;return _1}
+,isc.A.getOperator=function isc_FormItem_getOperator(_1,_2){var _3;if(this.operator){_3=this.operator}else if(_2){_3="inSet"}else{var _4=this.getType();if(this.valueMap||this.optionDataSource||isc.SimpleType.inheritsFrom(_4,"enum")||isc.SimpleType.inheritsFrom(_4,"boolean")||isc.SimpleType.inheritsFrom(_4,"float")||isc.SimpleType.inheritsFrom(_4,"integer"))
+{_3="equals"}else{if(_1==null)_1="substring";_3=isc.DataSource.getCriteriaOperator(null,_1)}}
+return _3}
+,isc.A.canEditCriterion=function isc_FormItem_canEditCriterion(_1,_2){if(_1.fieldName!=null&&_1.fieldName==this.getCriteriaFieldName()&&_1.operator==this.getOperator(null,isc.isAn.Array(_1.value)))
+{return true}
+if(this.$85m()){var _3=isc.DS.getCriteriaFields(_1,this.form.expressionDataSource||this.form.dataSource,true);return _3.contains(this.getCriteriaFieldName())}
+return false}
+,isc.A.canEditSimpleCriterion=function isc_FormItem_canEditSimpleCriterion(_1){var _2=this.getCriteriaFieldName();return _2==_1}
+,isc.A.setSimpleCriterion=function isc_FormItem_setSimpleCriterion(_1,_2){this.setValue(_1)}
+,isc.A.getCriterion=function isc_FormItem_getCriterion(_1){var _2=this.getCriteriaValue();if(_2==null||isc.is.emptyString(_2))return;if(isc.isAn.Array(_2)){var _3=_2.getUniqueItems();if(_2.length==0||(_3.length==1&&isc.isA.String(_2[0])&&isc.is.emptyString(_2[0])))return}
+var _4=this.getOperator(_1,isc.isAn.Array(_2)),_5=this.getCriteriaFieldName();var _6={fieldName:_5,operator:_4,value:_2};if(this.$85m()){var _7=this.parseValueExpressions(_2,_5,_4);if(_7!=null)_6=_7}
+return _6}
+,isc.A.setCriterion=function isc_FormItem_setCriterion(_1){var _2=this.$85m(),_3=_1?_1.value:null;if(_2){_3=this.buildValueExpressions(_1)}
+this.setValue(_3)}
+,isc.A.clearErrors=function isc_FormItem_clearErrors(){var _1=this.getFieldName();if(_1)this.form.clearFieldErrors(_1,true)}
+,isc.A.setError=function isc_FormItem_setError(_1){var _2=this.getFieldName();if(_2)this.form.setError(_2,_1)}
+,isc.A.hasErrors=function isc_FormItem_hasErrors(){if(this.parentItem!=null)return this.parentItem.hasErrors();var _1=this.getFieldName();if(_1&&this.form)return this.form.hasFieldErrors(_1);var _2=this.getDataPath();if(_2&&this.form)return this.form.hasFieldErrors(_2);return false}
+,isc.A.validate=function isc_FormItem_validate(){var _1=this.hasErrors(),_2=[],_3=null,_4=false;var _5=isc.rpc.startQueue();var _6=this.getValue(),_7=isc.addProperties({},this.form.getValues()),_8={unknownErrorMessage:this.form.unknownErrorMessage,typeValidationsOnly:this.form.validateTypeOnly};var _9=this.form.validateFieldAndDependencies(this,this.validators,_6,_7,_8);var _10=this.name;if(_10==null)_10=this.getDataPath();if(_10==null){this.logWarn("item has no specified name or dataPath - "+"unable to meaningfully store validation errors.")}
+if(!_5)isc.rpc.sendQueue();if(_9!=null){if(_9.resultingValue!=null){this.setValue(_9.resultingValue)}
+if(!_9.valid){_2=_9.errors[_10];if(_2==null)_2=[]}
+_4=_9.stopOnError;_3=_9.errors}
+var _11=false;if(_2.length>0||_1){if(_2.length>0){this.form.setFieldErrors(_10,_2,false)}else{this.form.clearFieldErrors(_10,false)}
+_11=true;if(_4)this.focusInItem()}
+for(var _12 in _3){if(_12!=_10){var _13=_3[_12];if((_13!=null&&!isc.isAn.emptyObject(_13))||this.form.hasFieldErrors(_12))
+{this.form.setFieldErrors(_12,_13,false);_11=true}}}
+if(_11){this.redraw()}
+return(_2.length==0)}
+,isc.A.setRequired=function isc_FormItem_setRequired(_1){if(_1==this.required)return;this.required=_1;if(this.form==null)return;if(_1){var _2=this.form.getRequiredValidator(this);this.addValidator(_2)}else{this.removeValidator({type:"required"})}
+this.redraw()}
+,isc.A.addValidator=function isc_FormItem_addValidator(_1){if(this.validators==null)this.validators=[];else if(!isc.isAn.Array(this.validators))this.validators=[this.validators];if(this.validators.$69){this.validators=this.validators.duplicate()}
+this.validators.add(_1)}
+,isc.A.removeValidator=function isc_FormItem_removeValidator(_1){if(this.validators==null)return;if(!isc.isAn.Array(this.validators))this.validators=[this.validators];if(this.validators.$69){this.validators=this.validators.duplicate()}
+var _2=this.validators.find(_1);this.validators.remove(_2)}
+,isc.A.setAutoComplete=function isc_FormItem_setAutoComplete(_1){this.autoComplete=_1;this.$10q()}
+,isc.A.$10q=function isc_FormItem__handleAutoCompleteChange(){var _1=this.$17h();if(isc.Browser.isIE&&this.hasDataElement()){var _2=this.getDataElement();if(_2)_2.autoComplete=(_1=="native"?"":"off")}}
+,isc.A.$17h=function isc_FormItem__getAutoCompleteSetting(){if(this.autoComplete!=null)return this.autoComplete;return this.form.autoComplete}
+,isc.A.autoCompleteEnabled=function isc_FormItem_autoCompleteEnabled(){if(isc.Browser.isSafari)return false;return this.$17h()=="smart"}
+,isc.A.uniqueMatchOnly=function isc_FormItem_uniqueMatchOnly(){if(this.uniqueMatch!=null)return this.uniqueMatch;return this.form.uniqueMatch}
+,isc.A.getCandidates=function isc_FormItem_getCandidates(){var _1=this.autoCompleteCandidates;if(_1==null){var _2=this.getValueMap();if(_2!=null){if(isc.isAn.Array(_2))_1=_2;else _1=isc.getValues(_2)}else if(this.form.grid){var _3=this.form.grid.data;if(isc.isA.ResultSet!=null&&isc.isA.ResultSet(_3))_1=_3.getValuesList(this.name);else _1=_3.getProperty(this.name)}}
+if(_1!=null)_1=_1.getUniqueItems();return _1}
+,isc.A.getCompletion=function isc_FormItem_getCompletion(_1){if(_1==null)return;var _2=this.getCandidates();if(_2==null||_2.length==0)return;var _3=_1.toUpperCase(),_4=this.uniqueMatchOnly(),_5;for(var i=0;i<_2.length;i++){var _7=_2[i],_8=_7!=null?_7.toUpperCase():null;if(_8==_3)return null;if(isc.startsWith(_8,_3)){if(!_4)return _7;if(_5!=null)return null;_5=_7}}
+return _5}
+,isc.A.showCompletion=function isc_FormItem_showCompletion(_1){this.clearCompletion();if(!this.canAutoComplete||!this.hasDataElement()||!this.autoCompleteEnabled())return;var _2=isc.EH.lastEvent.keyName;if(_2=="Backspace"||_2=="Delete")return;var _3=this.getCompletion(_1);if(_3==null){return}
+this.form.$106();this.form.$11b(this);this.setElementValue(_1+_3.substring(_1.length));this.$17o=_1;this.$17k=_3;this.setSelectionRange(_1.length,_3.length)}
+,isc.A.$17l=function isc_FormItem__handleChangeWithCompletion(_1){var _2=this.$17k,_3=isc.EH.lastEvent.keyName;if(this.$14m[_3]==true){this.acceptCompletion(_3==this.$10j);return _2}
+var _4=_2.substring(this.$17o.length);if(!_1.endsWith(_4)){this.clearCompletion();return _1}
+if(this.getSelectedText()==_4){return this.$17o}
+this.clearCompletion();return _1}
+,isc.A.clearCompletion=function isc_FormItem_clearCompletion(){delete this.$17k;delete this.$17o}
+,isc.A.acceptCompletion=function isc_FormItem_acceptCompletion(_1){var _2=this.$17k;if(!_2)return;if(this.autoCompleteEnabled()){var _3=_1?[_2.length,_2.length]:null;if(this.getElementValue()!=_2){if(!_1)_3=this.getSelectionRange();this.setElementValue(_2)}
+if(this.hasFocus&&_3)
+this.setSelectionRange(_3[0],_3[1])}
+this.clearCompletion()}
+,isc.A.setSelectionRange=function isc_FormItem_setSelectionRange(_1,_2){if(!isc.isA.TextItem(this)&&!isc.isA.TextAreaItem(this))return;if(!this.isDrawn())return;if(!isc.isA.Number(_1))_1=0;if(!isc.isA.Number(_2))_2=0;if(_1>_2){var _3=_2;_2=_1;_1=_3}
+var _4=this.getDataElement();if(_4==null)return;if(this.logIsInfoEnabled("nativeFocus")&&!this.$820()){this.logInfo("setSelectionRange() about to change focus "+isc.EH.$lb()+(this.logIsDebugEnabled("traceFocus")?this.getStackTrace():""),"nativeFocus")}
+if(isc.Browser.isIE){isc.EH.$904=true;var _5=_4.createTextRange();_5.collapse(true);_5.moveStart(this.$14n,_1);_5.moveEnd(this.$14n,(_2-_1));_5.select();delete isc.EH.$904}else{_4.focus();_4.setSelectionRange(_1,_2)}}
+,isc.A.selectValue=function isc_FormItem_selectValue(){var _1=this.getElementValue(),_2=isc.isA.String(_1)?_1.length:0;this.setSelectionRange(0,_2)}
+,isc.A.deselectValue=function isc_FormItem_deselectValue(_1){if(!this.hasFocus)return;if(_1)this.setSelectionRange(0,0);else{var _2=this.getElementValue(),_3=isc.isA.String(_2)?_2.length:0;this.setSelectionRange(_3,_3)}}
+,isc.A.getSelectionRange=function isc_FormItem_getSelectionRange(_1){if(!isc.isA.TextItem(this)&&!isc.isA.TextAreaItem(this))return;if(isc.isA.UploadItem(this))return;if(!this.$820())return;var _2=this.getDataElement();if(_2==null)return;if(isc.Browser.isIE){var _3=[],_4=this.$17p();var _5=_2.createTextRange();if(_5==null||_4==null)return;if(isc.isA.TextAreaItem(this)){if(!this.supportsSelectionRange)return null;var _6=_5.text.length;if(_6==_4.text.length){return[0,_6]}else{if(_1){if(_5.offsetLeft==_4.offsetLeft&&_5.offsetTop==_4.offsetTop)
+{return[0,_4.text.length]}else{_5.collapse(false);if(_5.offsetLeft==_4.offsetLeft&&_5.offsetTop==_4.offsetTop)
+{return[_6,_6]}}}else{for(var i=0;i<=_6;i++){if(_5.offsetLeft==_4.offsetLeft&&_5.offsetTop==_4.offsetTop)
+{return[i,i+_4.text.length]}
+_5.moveStart(this.$14n)}}}
+return null}
+if(_5.compareEndPoints(this.$14o,_4)==0){_3[1]=_5.text.length}else{_5.setEndPoint(this.$14o,_4);_3[1]=_5.text.length}
+_5.setEndPoint(this.$14p,_4);_3[0]=_5.text.length;return _3}else if(isc.Browser.isMoz||isc.Browser.isSafari||isc.Browser.isOpera){return[_2.selectionStart,_2.selectionEnd]}}
+,isc.A.$820=function isc_FormItem__hasNativeFocus(){var _1=this.getFocusElement(),_2=this.getActiveElement();return(_1==_2)}
+,isc.A.getSelectedText=function isc_FormItem_getSelectedText(){if(!isc.isA.TextItem(this)&&!isc.isA.TextAreaItem(this)){return}
+if(isc.Browser.isIE){var _1=this.$17p();if(_1)return _1.text}else if(isc.Browser.isMoz||isc.Browser.isSafari){var _2=this.getElement();if(_2!=null){return _2.value.substring(_2.selectionStart,_2.selectionEnd)}}}
+,isc.A.$17p=function isc_FormItem__getIESelectionRange(){if(!isc.Browser.isIE)return;if(isc.isA.TextAreaItem(this)&&!this.supportsSelectionRange)return null;var _1=this.getDocument().selection,_2=(_1!=null?_1.createRange():null);if(_2!=null&&_2.parentElement().id==this.getDataElementId())return _2;return null}
+,isc.A.rememberSelection=function isc_FormItem_rememberSelection(_1){if(!this.isDrawn())return;if(!isc.isA.TextItem(this)&&!isc.isA.TextAreaItem(this))return;var _2=this.getElementValue();if(_2==isc.emptyString)return;this.$17q=_2;var _3=this.getSelectionRange(_1);if(_3){this.$17r=_3[0];this.$17s=_3[1]}}
+,isc.A.resetToLastSelection=function isc_FormItem_resetToLastSelection(_1){if(!this.isDrawn()||this.$17r==null)return;var _2,_3=this.getElementValue(),_4=this.$17q;if(!_1)_2=(_3==_4);else{if(this.$17r==0&&this.$17s==_4.length){_2=true;this.$17s=_3.length}else{_2=(_3.toLowerCase()==_4.toLowerCase())}}
+if(_2)this.setSelectionRange(this.$17r,this.$17s);delete this.$17r;delete this.$17s;delete this.$17q}
+,isc.A.handleChange=function isc_FormItem_handleChange(_1,_2){if(this.$17m&&this.compareValues(_1,this.$17n))return true;this.$17m=true;this.$17n=_1;var _3=_1;if(isc.isA.Date(_3))_3=_3.duplicate();else if(isc.isAn.Array(_3))_3=_3.duplicate();else if(isc.isAn.Object(_3))_3=isc.addProperties({},_3);if(this.transformInput){_1=this.transformInput(this.form,this,_1,_2)}
+var _4=this.hasErrors(),_5=false,_6=[],_7=null,_8;if(this.length!=null&&isc.isA.String(_1)&&_1.length>this.length){_1=_1.substring(0,this.length)}
+var _9=isc.rpc.startQueue();var _10=isc.addProperties({},this.form.values),_11={unknownErrorMessage:this.form.unknownErrorMessage,changing:true},_12=this.form.validateFieldAndDependencies(this,this.validators,_1,_10,_11);if(!_9)isc.rpc.sendQueue();if(_12!=null){_5=!_12.valid;if(_12.resultingValue!=null){_8=_12.resultingValue}
+if(!_12.valid){_6=_12.errors[this.name];if(_6==null)_6=[]}
+_7=_12.errors}
+var _13;if(_5&&_8===_13&&this.$65v())
+{_8=_2;if(_2==null)_8=null}
+if(_8!==_13)_1=_8;if(_5){this.clearErrors();this.setError(_6)}else if(_12!=null&&_4){this.clearErrors()}
+this.$17g=false;if((!_5||this.changeOnError)){if(this.change!=null){if(this.change(this.form,this,_1,_2)==false){_1=_2;_5=true}}
+if(this.destroyed)return;if(!_5&&this.form&&this.form.itemChange!=null){if(this.form.itemChange(this,_1,_2)==false){_1=_2;_5=true}}}
+var _14=this.$17g;var _15=!this.compareValues(_1,_3);if((_5||_15)&&!_14)
+{this.setValue(_1,null,true);if(_5&&this.maintainSelectionOnTransform){this.$17t()}else if(this.hasFocus){this.delayCall("setSelectionRange",[_1.length,_1.length])}}
+if(this.$17g)this.$17n=this._value;if((this.redrawOnChange||_6.length>0||(_6.length==0&&_12!=null&&_4)))
+{this.redraw()}
+for(var _16 in _7){if(_16!=this.name){this.form.setFieldErrors(_16,_7[_16],true)}}
+if(!_5&&this.hasFocus)this.showCompletion(_1);delete this.$17m;return(!_5)}
+,isc.A.$65v=function isc_FormItem__rejectInvalidValueOnChange(){return(this.rejectInvalidValueOnChange!=null)?this.rejectInvalidValueOnChange:this.form.rejectInvalidValueOnChange}
+,isc.A.compareValues=function isc_FormItem_compareValues(_1,_2){return isc.DynamicForm.compareValues(_1,_2)}
+,isc.A.elementChanged=function isc_FormItem_elementChanged(){var _1=(isc.EH.$lc!=null);if(!_1)isc.EH.$h1("ICHG");this.logDebug("native change");if(isc.Log.supportsOnError){this.updateValue()}else{try{this.updateValue()}catch(e){isc.Log.$am(e)}}
+if(!_1)isc.EH.$h2();return true}
+,isc.A.$680=function isc_FormItem__handleInactiveEditorEvent(_1,_2,_3){if(this.logIsDebugEnabled("inactiveEditorHTML")){this.logDebug("handling inactive editor event:"+_1+", inactive context:"+this.echo(_2),"inactiveEditorHTML")}
+var _4=this.$683[_1];if(_4==null){_4=this.$683[_1]="inactiveEditor"+_1.substring(0,1).toUpperCase()+_1.substring(1)}
+if(this[_4]!=null){return this[_4](_2,_3)}}
+,isc.A.$17u=function isc_FormItem__fireStandardHandler(_1){this.convertToMethod(_1);return this[_1](this.form,this,isc.EH.lastEvent)}
+,isc.A.handleTitleClick=function isc_FormItem_handleTitleClick(){if(this.isDisabled())return;if(this.editingOn){this.editClick();this.handleClick();return false}
+return this.$17u("titleClick")}
+,isc.A.handleTitleDoubleClick=function isc_FormItem_handleTitleDoubleClick(){if(this.isDisabled())return;return this.$17u("titleDoubleClick")}
+,isc.A.handleClick=function isc_FormItem_handleClick(){if(this.editingOn){isc.EditContext.selectCanvasOrFormItem(this,true);return false}
+if(this.isDisabled())return;return this.$17u("click")}
+,isc.A.handleDoubleClick=function isc_FormItem_handleDoubleClick(){if(this.isDisabled())return;return this.$17u("doubleClick")}
+,isc.A.handleCellClick=function isc_FormItem_handleCellClick(){if(this.isDisabled())return;return this.$17u("cellClick")}
+,isc.A.handleCellDoubleClick=function isc_FormItem_handleCellDoubleClick(){if(this.isDisabled())return;return this.$17u("cellDoubleClick")}
+,isc.A.$12z=function isc_FormItem__handleElementChanged(){return this.form.elementChanged(this.getID())}
+,isc.A.handleMouseMove=function isc_FormItem_handleMouseMove(){if(!this.isDisabled()&&(this.showValueIconOver||this.showValueIconDown)){var _1=isc.EH.lastEvent.itemInfo,_2=(_1.overElement||_1.overTextBox||_1.overControlTable),_3=this.$15t;if(_2){if(this.$j6&&this.showValueIconDown){if(_3!=this.$13v){this.$15t=this.$13v;this.$17j()}}else if(this.showValueIconOver&&_3!=this.$13u){this.$15t=this.$13u;this.$17j()}}else{var _4=(this.showValueIconFocused&&this.showValueIconOver&&this.hasFocus)?this.$13u:null;if(_3!=_4){this.$15t=_4;this.$17j()}}}
+if(this.$17u("mouseMove")==false)return false}
+,isc.A.handleMouseOver=function isc_FormItem_handleMouseOver(){isc.Hover.setAction(this,this.$wb,null,this.$17v());return this.$17u("mouseOver")}
+,isc.A.handleMouseOut=function isc_FormItem_handleMouseOut(){var _1=(this.showValueIconFocused&&this.showValueIconOver&&this.hasFocus)?this.$13u:null;if(this.$15t!=_1){this.$15t=_1;this.$17j()}
+this.stopHover();return this.$17u("mouseOut")}
+,isc.A.handleMouseDown=function isc_FormItem_handleMouseDown(){var _1=isc.EH.lastEvent.itemInfo,_2=_1.inactiveContext;if(_2!=null){return this.form.bubbleInactiveEditorEvent(this,"mouseDown",_1)}
+if(!this.isDisabled()&&this.showValueIconDown){var _3=(_1.overElement||_1.overTextBox||_1.overControlTable);if(_3){this.$15t=this.$13v;this.$j6=true;isc.Page.setEvent(isc.EH.MOUSE_UP,this,isc.Page.FIRE_ONCE,"$17w");this.$17j()}}
+if(this.mouseDown)return this.$17u("mouseDown")}
+,isc.A.stopHover=function isc_FormItem_stopHover(){isc.Hover.clear()}
+,isc.A.$17w=function isc_FormItem__clearMouseDown(){this.$j6=null;if(this.$15t==this.$13v){this.$15t=this.showValueIconOver?this.$13u:null;this.$17j()}}
+,isc.A.handleMouseStillDown=function isc_FormItem_handleMouseStillDown(_1){if(this.mouseStillDown){return this.$17u("mouseStillDown")}}
+,isc.A.$17v=function isc_FormItem__getHoverDelay(){return this.hoverDelay!=null?this.hoverDelay:this.form.itemHoverDelay}
+,isc.A.handleTitleMove=function isc_FormItem_handleTitleMove(){return this.$17u("titleMove")}
+,isc.A.handleTitleOver=function isc_FormItem_handleTitleOver(){isc.Hover.setAction(this,this.$17x,null,this.$17v());return this.$17u("titleOver")}
+,isc.A.handleTitleOut=function isc_FormItem_handleTitleOut(){this.stopHover();return this.$17u("titleOut")}
+,isc.A.$121=function isc_FormItem__iconFocus(_1,_2){var _3=this.getIcon(_1);if(_3!=null){var _4=(_3.prompt!=null?_3.prompt:this.iconPrompt)
+window.status=_4;if(this.$54o(_3)){this.$164(_3,false,true)}
+else if(this.$165(_3))this.$164(_3,true)}
+return this.$12v(_2,this)}
+,isc.A.$123=function isc_FormItem__iconBlur(_1,_2){var _3=this.getIcon(_1);if(_3!=null){window.status="";var _4=this.$54o(_3),_5=_3.showFocusedWithItem!=false,_6=this.showIconsOnFocus;if(_4&&(!_6||!_5)){this.$164(_3,false,false)}
+if(this.$165(_3))this.$164(_3,false,false)}
+return this.$12x(_2,this)}
+,isc.A.$113=function isc_FormItem__iconMouseOver(_1){if(_1==this.getErrorIconId())return this.$17y();var _2=this.getIcon(_1);if(_2!=null){if(this.$165(_2))this.$164(_2,true);this.$17z=_2;isc.Hover.setAction(this,this.$170,null,this.$17v());var _3=(_2.prompt!=null?_2.prompt:this.iconPrompt)
+window.status=_3;return true}}
+,isc.A.$114=function isc_FormItem__iconMouseOut(_1){if(_1==this.getErrorIconId())return this.$171();var _2=this.getIcon(_1);if(_2!=null){window.status="";if(this.$165(_2))this.$164(_2,false);delete this.$17z;isc.Hover.setAction(this,this.$wb,null,this.$17v());return true}}
+,isc.A.$116=function isc_FormItem__iconClick(_1){var _2=this.getIcon(_1);if(_2==null)return;if(this.iconIsDisabled(_2))return;if(_2.click!=null){if(!isc.isA.Function(_2.click)){isc.Func.replaceWithMethod(_2,"click","form,item,icon")}
+if(_2.click(this.form,this,_2)==false)return false}
+if(this.iconClick)this.iconClick(this.form,this,_2)}
+,isc.A.$172=function isc_FormItem__iconKeyPress(_1){var _2=this.getIcon(_1);if(_2){var _3=isc.EH.getKey(),_4=isc.EH.getKeyEventCharacter();if(_2.keyPress){if(!isc.isA.Function(_2.keyPress)){isc.Func.replaceWithMethod(_2,"keyPress","keyName, character,form,item,icon")}
+if(_2.keyPress(_3,_4,this.form,this,_2)==false)
+return false}
+if(this.iconKeyPress)this.iconKeyPress(_3,_4,this.form,this,_2);if((this.iconClickOnEnter&&_3==this.$10j)||(this.iconClickOnSpace&&_3==this.$304))
+{if(this.$116(_2)==false)return false}}}
+,isc.A.$17y=function isc_FormItem__handleErrorIconMouseOver(){isc.Hover.setAction(this,this.$79v,null,this.$17v())}
+,isc.A.$171=function isc_FormItem__handleErrorIconMouseOut(){isc.Hover.setAction(this,this.$wb,null,this.$17v())}
+,isc.A.$79v=function isc_FormItem__handleErrorIconHover(){if(this.itemHover&&this.itemHover(this,this.form)==false)return false;var _1=this.shouldShowErrorIconPrompt()?isc.FormItem.getErrorPromptString(this.$79u):isc.emptyString;if(_1&&!isc.is.emptyString(_1))
+isc.Hover.show(_1,this.form.$wc(this));else isc.Hover.setAction(this,this.$wb,null,this.$17v())}
+,isc.A.$wb=function isc_FormItem__handleHover(_1){if(this.itemHover&&this.itemHover(this,this.form)==false)return false;var _2;if(this.itemHoverHTML)_2=this.itemHoverHTML(this,this.form);else _2=this.form.itemHoverHTML(this,this.form);this.form.$119(this,_2)}
+,isc.A.$17x=function isc_FormItem__handleTitleHover(_1){if(this.titleHover&&this.titleHover(this,this.form)==false)return false;var _2;if(this.titleHoverHTML)_2=this.titleHoverHTML(this,this.form);else _2=this.form.titleHoverHTML(this,this.form);this.form.$119(this,_2)}
+,isc.A.$170=function isc_FormItem__handleIconHover(){if(this.itemHover&&this.itemHover(this,this.form)==false)return false;var _1=this.$17z,_2=this.getIconPrompt(_1);if(_2&&!isc.is.emptyString(_2))
+isc.Hover.show(_2,this.form.$wc(this));else isc.Hover.setAction(this,this.$wb,null,this.$17v())}
+);isc.evalBoundary;isc.B.push(isc.A.getGlobalTabIndex=function isc_FormItem_getGlobalTabIndex(){if(this.globalTabIndex==null){if(this.tabIndex==-1)this.globalTabIndex=-1;else{var _1=this.form.getTabIndex(),_2=this.getTabIndex();if(_1==-1)return-1;return(_1+_2)}}
+return this.globalTabIndex}
+,isc.A.getTabIndex=function isc_FormItem_getTabIndex(){if(this.tabIndex!=null)return this.tabIndex;if(this.globalTabIndex||!this.$kk())return null;if(this.$10p==null){this.form.$10o()}
+return this.$10p}
+,isc.A.setGlobalTabIndex=function isc_FormItem_setGlobalTabIndex(_1){this.globalTabIndex=_1;this.$173(_1)}
+,isc.A.setTabIndex=function isc_FormItem_setTabIndex(_1){this.globalTabIndex=null;this.tabIndex=_1;this.$173(_1)}
+,isc.A.$154=function isc_FormItem__getElementTabIndex(_1){if(this.isInactiveHTML()||(!_1&&this.isDisabled()))
+{return-1}
+if(this.$174!=null)return this.$174;return this.getGlobalTabIndex()}
+,isc.A.$173=function isc_FormItem__setElementTabIndex(_1){this.$174=_1;if(!this.$kk()||!this.isDrawn())return;if(this.getFocusElement()!=null){isc.FormItem.setElementTabIndex(this.getFocusElement(),_1);this.$175()}else{this.redraw("set tab index")}}
+,isc.A.updateTabIndex=function isc_FormItem_updateTabIndex(){if(!this.$kk()||!this.isDrawn()||this.isDisabled())return;var _1=this.getGlobalTabIndex();if(this.$174!=_1)this.$173(_1)}
+,isc.A.$16p=function isc_FormItem__getIconTabIndex(_1){if(_1.tabIndex==-1||this.iconIsDisabled(_1))return-1;return this.$154(true)}
+,isc.A.$175=function isc_FormItem__updateIconTabIndices(){var _1=[];_1.addList(this.icons);if(this.showPickerIcon)_1.add(this.getPickerIcon());for(var i=0;i<_1.length;i++){var _3=_1[i];if(!_3||_3.imgOnly)continue;var _4=this.$16g(_3);if(_4!=null){isc.FormItem.setElementTabIndex(_4,this.$16p(_3))}}}
+,isc.A.setDisabled=function isc_FormItem_setDisabled(_1){var _2=this.isDisabled();this.disabled=_1;var _3=this.isDisabled();if(_2!=_3)this.updateDisabled()}
+,isc.A.setShowDisabled=function isc_FormItem_setShowDisabled(_1){this.showDisabled=_1;this.updateDisabled()}
+,isc.A.updateDisabled=function isc_FormItem_updateDisabled(){var _1=this.isDisabled();this.$176(!_1);this.$177();this.$17j();if(this.showDisabled)this.updateState()}
+,isc.A.setEnabled=function isc_FormItem_setEnabled(_1){return this.setDisabled(!_1)}
+,isc.A.isDisabled=function isc_FormItem_isDisabled(){var _1=this.disabled;if(!_1){if(this.parentItem!=null)_1=this.parentItem.isDisabled();else{_1=this.form.isDisabled();if(!_1&&this.containerWidget!=this.form)_1=this.containerWidget.isDisabled()}}
+return _1}
+,isc.A.enable=function isc_FormItem_enable(){this.setDisabled(false)}
+,isc.A.disable=function isc_FormItem_disable(){this.setDisabled(true)}
+,isc.A.$176=function isc_FormItem__setElementEnabled(_1){if(this.hasDataElement()){var _2=this.getDataElement();if(_2){_2.disabled=!_1;_2.tabIndex=this.$154();if(this.useDisabledEventMask()){var _3=this.$43b();if(_3&&(!_3.getAttribute||_3.getAttribute("isDisabledEventMask")!="true"))
+{_3=null}
+if(_1&&_3){isc.Element.clear(_3)}else if(!_1&&!_3){isc.Element.insertAdjacentHTML(_2,"beforeBegin",this.$148())}}}}else if(this.$kk()){var _2=this.getFocusElement();if(_2)_2.tabIndex=this.$154()}}
+,isc.A.$177=function isc_FormItem__setIconsEnabled(){if(this.showPickerIcon){var _1=this.getPickerIcon();this.setIconEnabled(_1)}
+if(!this.icons||this.icons.length<1)return;for(var i=0;i<this.icons.length;i++){this.setIconEnabled(this.icons[i])}}
+,isc.A.iconIsDisabled=function isc_FormItem_iconIsDisabled(_1){_1=this.getIcon(_1);if(!_1)return;if(this.containerWidget&&this.containerWidget.isDisabled())return true;if(_1.neverDisable)return false;if(this.isDisabled())return true;var _2=_1.disableOnReadOnly;if(_2==null){_2=this.disableIconsOnReadOnly}
+if(_2)return this.isReadOnly();return false}
+,isc.A.$kk=function isc_FormItem__canFocus(){if(this.canFocus!=null)return this.canFocus;return this.hasDataElement()}
+,isc.A.$872=function isc_FormItem__canFocusInTextBox(){return this.$kk()}
+,isc.A.getCanFocus=function isc_FormItem_getCanFocus(){return this.$kk()}
+,isc.A.focusInItem=function isc_FormItem_focusInItem(){var _1=this.isVisible()&&this.$kk()&&!this.isDisabled(),_2=_1?this.getFocusElement():null;if(!_1||!_2){return}
+if(_2.focus){var _3=this.getActiveElement();if(!isc.Browser.isIE||_3!=_2){this.logInfo("about to call element.focus() "+isc.EH.$lb()+(this.logIsDebugEnabled("traceFocus")?this.getStackTrace():""),"nativeFocus");isc.FormItem.$12n(this);isc.EventHandler.$lg=this;_2.focus()}else{this.logInfo("element already focused, not focus()ing","nativeFocus")}
+if(isc.Browser.isIE){isc.EH.$vm=this;this.$167=_2}}else{this.logInfo("can't call element focus, no element","nativeFocus")}
+var _4=this.selectOnFocus;if(_4==null&&this.form)_4=this.form.selectOnFocus;if(this.$92k)_4=false;if(_4&&_2.select)_2.select()}
+,isc.A.blurItem=function isc_FormItem_blurItem(){if(!this.isVisible()||!(this.hasFocus||isc.EH.$vm==this))return;var _1=this.$166();if(_1&&_1.blur){this.logInfo("about to call element blur"+isc.EH.$lb()+(this.logIsDebugEnabled("traceBlur")?this.getStackTrace():""),"nativeFocus");isc.EH.$ld=this;if(isc.Browser.isIE){try{_1.blur()}catch(e){}}else{_1.blur()}}else{this.logInfo("can't call element blur, no element","nativeFocus")}}
+,isc.A.focusInIcon=function isc_FormItem_focusInIcon(_1){_1=this.getIcon(_1);if(_1==null||_1.imgOnly)return;var _2=this.$16g(_1);if(_2!=null)_2.focus()}
+,isc.A.blurIcon=function isc_FormItem_blurIcon(_1){if(isc.isA.String(_1))_1=this.getIcon(_1);if(_1==null||!this.icons||!this.icons.contains(_1)||_1.imgOnly)return;var _2=this.$16g(_1);if(_2!=null)_2.blur()}
+,isc.A.$12v=function isc_FormItem__nativeElementFocus(_1,_2){if(this.$92k)delete this.$92k;if(isc.EH.$lg==this)delete isc.EH.$lg
+isc.EH.$la(this,true);if(isc.Browser.isMoz&&!this.isVisible()){this.logWarn("calling element.blur() to correct focus in hidden item: "+this,"nativeFocus");_1.blur();return}
+this.hasFocus=true;this.$167=_1;var _3=this.form.elementFocus(_1,_2);return _3}
+,isc.A.$12x=function isc_FormItem__nativeElementBlur(_1,_2){if(isc.EH.$ld==this)delete isc.EH.$ld
+if(this.$17i!=null){isc.Timer.clearTimeout(this.$17i);this.$14r()}
+isc.EH.$la(this);this.hasFocus=false;delete this.$167;var _3=this.form.elementBlur(_1,_2);return _3}
+,isc.A.elementFocus=function isc_FormItem_elementFocus(_1){if(this.prompt)this.form.showPrompt(this.prompt);if(this.showIconsOnFocus&&this.showIcons){this.showAllIcons(true)}else{if(this.icons)this.updateIconsForFocus(this.icons,true)}
+if(this.showFocusedPickerIcon&&this.showPickerIcon){var _2=this.getPickerIcon();if(_2)this.updateIconsForFocus(_2,true)}
+if(this.showFocused)this.updateState();if(this.showValueIconFocused&&this.showValueIconOver&&this.$15t==null){this.$15t=this.$13u;this.$17j()}
+if(_1)return;if((this.grid&&this.grid.blockOnFieldBusy(this))||(!this.grid&&this.form.blockOnFieldBusy(this)))
+{return false}
+this.handleEditorEnter()
+if(this.focus){this.convertToMethod("focus");return this.focus(this.form,this)}
+return true}
+,isc.A.updateIconsForFocus=function isc_FormItem_updateIconsForFocus(_1,_2){if(_1==null)return;_2=!!_2;if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){if(this.$54o(_1[i],true)){var _4=this.$16v(_1[i]);if(_4!=null){isc.Canvas.$wg(_4,this.getIconURL(_1[i],false,null,_2))}}}}
+,isc.A.elementBlur=function isc_FormItem_elementBlur(){if(this.prompt)this.form.clearPrompt();if(this.showIconsOnFocus&&this.showIcons){if(this.$161==null){this.$161=this.delayCall("hideAllIcons",[],0)}}else if(this.hideIconsOnKeypress&&this.showIcons){this.showAllIcons()}else{if(this.icons)this.updateIconsForFocus(this.icons,false)}
+if(this.showFocusedPickerIcon&&this.showPickerIcon){var _1=this.getPickerIcon();if(_1)this.updateIconsForFocus(_1,false)}
+if(this.showFocused){this.updateState()}
+if(this.$15t==this.$13u){this.$15t=null
+this.$17j()}
+this.acceptCompletion();this.handleEditorExit();if(this.blur){this.convertToMethod("blur");return this.blur(this.form,this)}
+return true}
+,isc.A.$11s=function isc_FormItem__moveFocusWithinItem(_1){var _2=this.items,_3=this.icons;if(this.$150!=null){_3=[this.$150];_3.addList(this.icons)}
+if((_2==null||_2.length==0)&&(_3==null||_3.length==0)){return false}
+var _4=this.getFocusIconIndex(true),_5;if(_4==null){var _6=isc.EventHandler.lastEvent.keyTarget;if(_6==this)_5=0;else if(_2){_5=_2.indexOf(_6)}}
+if((_5==null||_5==-1)&&_4==null){return false}
+if(_1){if(_5!=null&&_2!=null){while(_5<_2.length-1){_5+=1
+var _7=_2[_5];if(_7.$kk()){_7.focusInItem();return true}}}
+if(_4==null)_4=-1;if(this.canTabToIcons!=false&&this.showIcons&&_3!=null){while(_4<_3.length-1){_4+=1;var _8=_3[_4];if(this.$16f(_8)&&!_8.imgOnly&&_8.tabIndex!=-1){this.focusInIcon(_8);return true}}}
+return false}else{if(this.canTabToIcons!=false&&_4!=null){while(_4>0){_4-=1;var _8=_3[_4]
+if(this.$16f(_8)&&!this.imgOnly&&_8.tabIndex!=-1){this.focusInIcon(_8);return true}}}
+if(_5==null)
+_5=_2!=null?_2.length:1;while(_5>0){var _7;_5-=1
+if(_2==null){_7=this}else{_7=_2[_5]}
+if(_7.$kk()){_7.focusInItem();return true}}
+return false}}
+,isc.A.getFocusIconIndex=function isc_FormItem_getFocusIconIndex(_1){var _2=this.$166();var _3;if(_1&&this.$150!=null){_3=[this.$150];_3.addList(this.icons)}else{_3=this.icons}
+if(_2==null||_3==null||_3.length==0)return null;for(var i=0;i<_3.length;i++){if(this.$16g(_3[i])==_2)return i}
+return null}
+,isc.A.$kr=function isc_FormItem__allowNativeTextSelection(_1,_2){if(_2.overTitle)return;if(_2.overIcon)return false;if(_1==null)_1=isc.EH.lastEvent;if(_1.nativeTarget&&(_1.nativeTarget.tagName.toLowerCase()==this.$54n))
+return false;return this.canSelectText!=false}
+,isc.A.handleEditorExit=function isc_FormItem_handleEditorExit(){if(!this.$178)return;this.$178=null;var _1=this.getValue();if(!this.$843)this.$844(_1);if(this.getImplicitSave()&&this.form&&this.form.awaitingImplicitSave&&!this.form.implicitSaveInProgress&&this.$10v()&&this.getImplicitSaveOnBlur()!=false)
+{this.form.performImplicitSave(this,false)}
+if(this.editorExit)this.editorExit(this.form,this,_1)}
+,isc.A.getImplicitSave=function isc_FormItem_getImplicitSave(){return(this.implicitSave!=null?this.implicitSave:this.form.implicitSave)}
+,isc.A.getImplicitSaveOnBlur=function isc_FormItem_getImplicitSaveOnBlur(){if(this.getImplicitSave()==false)return false;return(this.implicitSaveOnBlur!=null?this.implicitSaveOnBlur:this.form.implicitSaveOnBlur)}
+,isc.A.$844=function isc_FormItem__performValidateOnEditorExit(_1){if(this.validateOnExit||this.form.validateOnExit){if(this.$84r||(this.form.isNewRecord&&this.form.isNewRecord())||!this.compareValues(_1,this.$75h))
+{this.validate()}
+this.$84r=null;this.$75h=null}
+var _2=this.form.rulesEngine;if(_2!=null){_2.processEditorExit(this.form,this)}}
+,isc.A.handleEditorEnter=function isc_FormItem_handleEditorEnter(){if(this.$178)return;this.$178=true;var _1=this.getValue();if(this.validateOnExit||this.form.validateOnExit)this.$75h=_1;if(this.editorEnter)this.editorEnter(this.form,this,_1);if(this.form.rulesEngine!=null){this.form.rulesEngine.processEditorEnter(this.form,this)}}
+,isc.A.$179=function isc_FormItem__setupFocusCheck(){var _1=this;this.$18a=isc.Page.setEvent(isc.EH.MOUSE_UP,function(){if(!_1.destroyed)_1.$18b()})}
+,isc.A.$18b=function isc_FormItem__checkNativeFocus(){isc.Page.clearEvent(isc.EH.MOUSE_UP,this.$18a);delete this.$18a;if(this.getActiveElement()==document.body){this.focusInItem()}}
+,isc.A.$429=function isc_FormItem__willHandleInput(){return false}
+,isc.A.$43g=function isc_FormItem__handleInput(){isc.EH.$h1("INP");if(!this.mask){if(this.changeOnKeypress){if(isc.Log.supportsOnError){this.updateValue()}else{try{this.updateValue()}catch(e){isc.Log.$am(e)}}}else if(this.hasDataElement()&&this.length!=null){var _1=this.getElementValue();if(isc.isA.String(_1)&&_1.length>this.length){this.setElementValue(_1.substring(0,this.length))}}}
+isc.EH.$h2()}
+,isc.A.$43a=function isc_FormItem__nativeCutPaste(_1,_2){if(this.changeOnKeypress)this.$18c()}
+,isc.A.handleKeyPress=function isc_FormItem_handleKeyPress(_1,_2){if(!this.form)return;var _3=this.form.$ne(_1),_4=_1.keyName;if(_3.overIcon){if(this.$172(_3.overIcon)==false)return false}else{if(!this.$429()&&this.changeOnKeypress)this.$18c();if(this.hideIconsOnKeypress&&!this.$16y&&_4!=this.$jf){this.hideAllIcons()}}
+return this.$18d(this,this.form,_4,_1.characterValue)}
+,isc.A.$18d=function isc_FormItem__fireKeyPressHandlers(_1,_2,_3,_4){if(this.keyPress!=null&&this.keyPress(_1,_2,_3,_4)==false){return false}
+if(!this.form)return false;if(this.$86z!=null&&this.$86z(_1,_2,_3,_4)==false)
+{return false}
+if(this.parentItem==null&&this.form.itemKeyPress!=null){return this.form.itemKeyPress(_1,_3,_4)}}
+,isc.A.$18c=function isc_FormItem__queueForUpdate(){if(this.$17i!=null){isc.Timer.clearTimeout(this.$17i);this.$14r()}
+if(this.maintainSelectionOnTransform&&(this.$17h()!=this.$14l))
+{this.$18e()}
+this.$17i=isc.Timer.setTimeout({target:this,methodName:this.$14q},0)}
+,isc.A.$14r=function isc_FormItem__delayedUpdate(){delete this.$17i;this.updateValue();this.$18f()}
+,isc.A.$18e=function isc_FormItem__rememberPreChangeSelection(){if(this.$18g!=null)return;var _1=this.getSelectionRange(true);if(_1){this.$18g=_1[0];this.$18h=_1[1]}}
+,isc.A.$17t=function isc_FormItem__revertToPreChangeSelection(){if(this.$18g==null)return;this.setSelectionRange(this.$18g,this.$18h)}
+,isc.A.$18f=function isc_FormItem__clearPreChangeSelection(){delete this.$18g;delete this.$18h}
+,isc.A.handleKeyDown=function isc_FormItem_handleKeyDown(_1,_2){if(this.dirtyOnKeyDown)this.$18i();var _3=this,_4=this.form,_5=_1.keyName;if(this.keyDown!=null&&this.keyDown(_3,_4,_5)==false)return false}
+,isc.A.$10v=function isc_FormItem__itemValueIsDirty(){return this.$18j==true}
+,isc.A.$18i=function isc_FormItem__markValueAsDirty(){this.$18j=true}
+,isc.A.$10x=function isc_FormItem__markValueAsNotDirty(){this.$18j=false}
+,isc.A.handleKeyUp=function isc_FormItem_handleKeyUp(_1,_2){if(!this.form)return;var _3=this,_4=this.form,_5=_1.keyName;if(this.keyUp!=null&&this.keyUp(_3,_4,_5)==false)return false}
+,isc.A.getSerializeableFields=function isc_FormItem_getSerializeableFields(_1,_2){_1.addList(["form"]);return this.Super("getSerializeableFields",arguments)}
+,isc.A.getLeft=function isc_FormItem_getLeft(){var _1=this.isDrawn()?this.getOuterElement():null;if(_1==null){var _2="getLeft() Unable to determine position for "+(this.name==null?"this item ":this.name)+". ";if(this.isDrawn()){_2+="This method is not supported by items of type "+this.getClass()}else{_2+="Position cannot be determined before the element is drawn"}
+_2+=" - returning zero.";this.form.logWarn(_2);return 0}
+return this.$18k(_1)}
+,isc.A.getTitleLeft=function isc_FormItem_getTitleLeft(){var _1=this.isDrawn()&&this.form?isc.Element.get(this.form.$427(this)):null;if(_1==null){var _2="getTitleLeft() Unable to determine position for "+(this.name==null?"this item ":this.name)+". ";if(this.isDrawn()){_2+="This method is not supported by items of type "+this.getClass()}else{_2+="Position cannot be determined before the element is drawn"}
+_2+=" - returning zero.";this.form.logWarn(_2);return 0}
+return this.$18k(_1)}
+,isc.A.$18k=function isc_FormItem__getElementLeft(_1){var _2=_1.offsetParent,_3=this.containerWidget.getHandle(),_4=_3.offsetParent,_5=isc.Element.getOffsetLeft(_1);while(_2&&_2!=_3&&_2!=_4){_5+=isc.Element.getOffsetLeft(_2)
+_5-=(_2.scrollLeft||0);var _6=(isc.Browser.isIE?parseInt(_2.currentStyle.borderLeftWidth):parseInt(isc.Element.getComputedStyleAttribute(_2,"borderLeftWidth")));if(isc.isA.Number(_6))_5+=_6;var _7=(isc.Browser.isIE?parseInt(_2.currentStyle.marginLeft):parseInt(isc.Element.getComputedStyleAttribute(_2,"marginLeft")));if(isc.isA.Number(_7))_5+=_7;_2=_2.offsetParent}
+if(_2==_4){_5-=isc.Element.getOffsetLeft(_3)}
+return _5}
+,isc.A.$145=function isc_FormItem__isValidIcon(_1){return(_1!=null&&(this.icons&&this.icons.contains(_1)||this.showPickerIcon&&this.getPickerIcon()==_1))}
+,isc.A.getIconLeft=function isc_FormItem_getIconLeft(_1){if(_1==null&&this.icons!=null&&this.icons.getLength()>0)_1=this.icons[0];else if(!this.$145(_1)){this.logWarn("getIconLeft() passed invalid icon:"+isc.Log.echoAll(_1));return null}
+var _2=this.$16v(_1);if(_2==null){this.logWarn("getIconLeft() unable to return position of icon - "+"this icon is not currently drawn into the page. Returning null");return null}
+return isc.Element.getLeftOffset(_2,this.containerWidget.getClipHandle())}
+,isc.A.getTop=function isc_FormItem_getTop(){var _1=this.isDrawn()?this.getOuterElement():null;if(_1==null){var _2="getTop() Unable to determine position for "+(this.name==null?"this item ":this.name)+". ";if(this.isDrawn()){_2+="This method is not supported by items of type "+this.getClass()}else{_2+="Position cannot be determined before the element is drawn"}
+_2+=" - returning zero.";this.form.logWarn(_2);return 0}
+var _3=this.$18l(_1);return _3}
+,isc.A.getTitleTop=function isc_FormItem_getTitleTop(){var _1=this.isDrawn()&&this.form?isc.Element.get(this.form.$427(this)):null;if(_1==null){var _2="getTitleTop() Unable to determine position for "+(this.name==null?"this item ":this.name)+". ";if(this.isDrawn()){_2+="This method is not supported by items of type "+this.getClass()}else{_2+="Position cannot be determined before the element is drawn"}
+_2+=" - returning zero.";this.form.logWarn(_2);return 0}
+return this.$18l(_1)}
+,isc.A.$18l=function isc_FormItem__getElementTop(_1){var _2=this.containerWidget.getHandle(),_3=_2.offsetParent,_4=_1.offsetParent,_5=isc.Element.getOffsetTop(_1);while(_4&&_4!=_2&&_4!=_3){_5+=isc.Element.getOffsetTop(_4)
+_5-=(_4.scrollTop||0);var _6=(isc.Browser.isMoz?0:(isc.Browser.isIE?parseInt(_4.currentStyle.borderTopWidth):parseInt(isc.Element.getComputedStyleAttribute(_4,"borderTopWidth"))));if(isc.isA.Number(_6))_5+=_6;var _7=(isc.Browser.isIE?parseInt(_4.currentStyle.marginTop):parseInt(isc.Element.getComputedStyleAttribute(_4,"marginTop")));if(isc.isA.Number(_7))_5+=_7;_4=_4.offsetParent}
+if(_4==_3){_5-=isc.Element.getOffsetTop(_2)}
+return _5}
+,isc.A.getIconTop=function isc_FormItem_getIconTop(_1){if(_1==null&&this.icons!=null&&this.icons.getLength()>0)_1=this.icons[0];else if(!this.$145(_1)){this.logWarn("getIconTop() passed invalid icon:"+isc.Log.echoAll(_1));return null}
+var _2=this.$16v(_1);if(_2==null){this.logWarn("getIconTop() unable to return position of icon - "+"this icon is not currently drawn into the page. Returning null");return null}
+return isc.Element.getTopOffset(_2,this.containerWidget.getClipHandle())}
+,isc.A.getPageLeft=function isc_FormItem_getPageLeft(){return this.getLeft()+((this.containerWidget.getPageLeft()+this.containerWidget.getLeftMargin()+this.containerWidget.getLeftBorderSize())
+-this.containerWidget.getScrollLeft())}
+,isc.A.getPageTop=function isc_FormItem_getPageTop(){return this.getTop()+((this.containerWidget.getPageTop()+this.containerWidget.getTopMargin()+this.containerWidget.getTopBorderSize())
+-this.containerWidget.getScrollTop())}
+,isc.A.getTitlePageLeft=function isc_FormItem_getTitlePageLeft(){return this.getTitleLeft()+((this.containerWidget.getPageLeft()+this.containerWidget.getLeftMargin()+this.containerWidget.getLeftBorderSize())
+-this.containerWidget.getScrollLeft())}
+,isc.A.getTitlePageTop=function isc_FormItem_getTitlePageTop(){return this.getTitleTop()+((this.containerWidget.getPageTop()+this.containerWidget.getTopMargin()+this.containerWidget.getTopBorderSize())
+-this.containerWidget.getScrollTop())}
+,isc.A.getIconRect=function isc_FormItem_getIconRect(_1){return[this.getIconLeft(_1),this.getIconTop(_1),this.getIconWidth(_1),this.getIconHeight(_1)]}
+,isc.A.getIconPageRect=function isc_FormItem_getIconPageRect(_1){var _2=this.getIconRect(_1);_2[0]+=this.containerWidget.getPageLeft();_2[1]+=this.containerWidget.getPageTop();return _2}
+,isc.A.propertyChanged=function isc_FormItem_propertyChanged(_1,_2){if(this.$14s[_1]==true)this.$18m=true;if(this.$59q[_1]==true)this.updateState();if(_1==this.$59r&&this.items){for(var i=0;i<this.items.length;i++){this.items[i].updateState()}}}
+,isc.A.doneSettingProperties=function isc_FormItem_doneSettingProperties(){if(this.$18m){var _1=this.form,_2=_1.items;_2.$8j=null;_1.markForRedraw()}
+delete this.$18m}
+,isc.A.setEditMode=function isc_FormItem_setEditMode(_1,_2,_3){if(_1==null)_1=true;if(this.editingOn==_1)return;this.editingOn=_1;if(this.editingOn){this.editContext=_2}
+this.editNode=_3}
+,isc.A.editClick=function isc_FormItem_editClick(){var _1=this.getTitlePageLeft(),_2=this.getVisibleTitleWidth(),_3,_4,_5,_6;_4=this.getTitlePageTop();_6=this.getTitleVisibleHeight();_5=this.getVisibleHeight();_3=(_6==_5)?_4:_4+((_6-_5)/2);isc.EditContext.manageTitleEditor(this,_1,_2,_3,null)}
+,isc.A.parseValueExpressions=function isc_FormItem_parseValueExpressions(_1,_2){var _3=this.getType(),_4=(isc.SimpleType.inheritsFrom(_3,"integer")||isc.SimpleType.inheritsFrom(_3,"float")||isc.SimpleType.inheritsFrom(_3,"date")),_5=isc.DynamicForm.getOperatorIndex(),_6=isc.getKeys(_5),_7={operator:"and",criteria:[]},_8=_7.criteria,_9=[],_10=this.$85m(),_11=isc.DS.get(this.form.expressionDataSource||this.form.dataSource);if(!_1)_1=this.getValue();if(!_1)return;if(!isc.isA.String(_1))_1+="";var _12=this.getOperator();if(_12)_6.add(_12);var _13=_11?_11.getSearchOperator(_12):{id:_12};var _14=_13.caseInsensitive;if(_4&&_1.contains(" and ")){_9=_1.split(" and ")}else if(_4&&_1.contains(" or ")){_9=_1.split(" or ");_7.operator="or"}else if(_1.contains("...")){_9=_1.split("...");if(_9.length==2){var _15=_5["..."],_16;if(_15)_16=(_14?_15.find("caseInsensitive",true):_15[0]);var _17=_11?_11.getField(_2):null;if(_17&&isc.SimpleType.inheritsFrom(_17.type,"date")){_9[0]=new Date(Date.parse(_9[0]));_9[0].logicalDate=true;_9[1]=new Date(Date.parse(_9[1]));_9[1].logicalDate=true}else if(_17&&_17.type=="text"){if(!_9[1].endsWith(this.$87p)){_9[1]+=this.$87p}}
+return{fieldName:_2,operator:_16.ID,start:_9[0],end:_9[1]}}}else{_9=[_1]}
+var _18=[" and "," or "];for(var i=0;i<_9.length;i++){var _20=_9[i],_21={fieldName:_2}
+_17=_11?_11.getField(_2):null,_22=(_17?_17&&isc.SimpleType.inheritsFrom(_17.type,"date"):false),_23=false;for(var _24 in _5){if(!_24)continue;var _25=_5[_24],_26=false,_27;if(_24=="=="&&isc.isA.String(_20)&&_20.startsWith("=")&&!_20.startsWith("==")&&!_20.startsWith("=("))
+{_26=true}
+if(_25&&_25.length){var _28=_25.findAll("caseInsensitive",_14);if(_28==null||_28.length==0)_28=_25;if(_28.length>1){}
+_27=_28[0]}
+if(!_27||!_27.symbol||_18.contains(_27.symbol)){continue}
+if(_6.contains(_27.symbol)&&((isc.isA.String(_20)&&(_20.startsWith(_27.symbol)||(_27.symbol=="..."&&_20.contains(_27.symbol))))||_26))
+{_23=true;if(_20.startsWith(_27.symbol)){_20=_20.substring(_27.symbol.length-(_26?1:0))}
+if(_27.closingSymbol){if(_20.endsWith(_27.closingSymbol)){_20=_20.substring(0,_20.length-_27.closingSymbol.length)}}
+if(_20.contains("...")){var _29=_20.split("...");if(_29.length==2){var _15=_5["..."],_16;if(_15)_16=(_14?_15.find("caseInsensitive",true):_15[0]);var _17=_11?_11.getField(_2):null;if(_17&&isc.SimpleType.inheritsFrom(_17.type,"date")){_29[0]=new Date(Date.parse(_29[0]));_29[0].logicalDate=true;_29[1]=new Date(Date.parse(_29[1]));_29[1].logicalDate=true}else if(_17&&_17.type=="text"){if(!_29[1].endsWith(this.$87p)){_29[1]+=this.$87p}}
+_7.criteria.add({fieldName:_2,operator:_16.ID,start:_29[0],end:_29[1]});continue}}
+if(_22){_20=new Date(Date.parse(_20));_20.logicalDate=true}
+_21.operator=_27.ID;if(_27.processValue){_20=_27.processValue(_20,_11)}
+if(_27.wildCard&&isc.isA.String(_20)&&_20.contains(_27.wildCard)){var _30=_20.split(_27.wildCard),_31;if(_30.length>1){for(var _32=0;_32<_30.length;_32++){var _33=_30[_32];if(!_33||_33.length==0)continue;_31={fieldName:_2,value:_33};var _34=_32>0,_35=_30.length-1>_32;if(_34&&_35){_31.operator=_14?"iContains":"contains"}else if(_34){_31.operator=_14?"iEndsWith":"endsWith"}else if(_35){_31.operator=_14?"iStartsWith":"startsWith"}
+_7.criteria.add(_31)}
+this.$877=true;_21.operator=null}}else{if(_27.valueType!="none")_21.value=_20}
+break}}
+if(!_23){_21.operator=_12;_21.value=_20}
+if(_21.operator)_7.criteria.add(_21)}
+if(_7.criteria.length==1)_7=_7.criteria[0];if(_7.criteria&&_7.criteria.length==0)_7=null;return _7}
+,isc.A.flattenExpressionCriteria=function isc_FormItem_flattenExpressionCriteria(_1){var _2=[];for(var i=0;i<_1.length;i++){var _4=_1[i];if(!_4.criteria){_2.add(_4)}else{_2.addList(this.flattenExpressionCriteria(_4.criteria))}}
+return _2}
+,isc.A.buildValueExpressions=function isc_FormItem_buildValueExpressions(_1){var _2=_1,_3=isc.shallowClone(_2),_4=" "+_3.operator+" ",_5=[_4],_6=[],_7="",_8=isc.DS.get(this.form.expressionDataSource||this.form.dataSource);if(_2.criteria){_3.criteria=this.flattenExpressionCriteria(_2.criteria)}
+var _9=isc.DynamicForm.getOperatorIndex(),_10=isc.getKeys(_9),_11=this.validOperators;if(!_11){_11=[];for(var j=0;j<_10.length;j++){var _13=_9[_10[j]];_11.addList(_13.getProperty("ID"))}}
+var _14=this.getOperator();if(_14)_11.add(_14);var _15=_8?_8.getSearchOperator(_14):{id:_14};var _16=_15.caseInsensitive,_17=false,_18;if(!_3.criteria){var _19=[_3];_3={criteria:_19}}
+var _20=["startsWith","iStartsWith","contains","iContains","endsWith","iEndsWith"];if(this.useWildCardsByDefault&&this.type=="text"&&(_3.criteria.length>1||(_3.criteria.length==1&&_20.contains(_3.criteria[0].operator)&&_3.criteria[0].value&&_3.criteria[0].value.startsWith("=")&&!_3.criteria[0].value.startsWith("==")&&!_3.criteria[0].value.startsWith("=("))||this.$877))
+{_17=true;var _13=_9["=="];var _21=_13.find({"ID":"equals"});_18=_21.wildCard;_5[0]=""}
+var _22=0;for(var i=0;i<_3.criteria.length;i++){var _24=_3.criteria[i],_25=_24.operator,_26=_24.value,_27=_8?_8.getField(_24.fieldName):null;for(var j=0;j<_10.length;j++){var _13=_9[_10[j]];var _28=_13.find({"ID":_25});if(_28){_25=_28;break}}
+if(i>0){_5.add(_4)}
+if(isc.isA.String(_25)){this.logWarn("Unknown filter-expression operator: '"+_25+"'")}else if(_17){if(_25.ID=="contains"||_25.ID=="iContains"){if(_6[_6.length-1]!=_18)_6.add(_18);_6.add(_24.value);_6.add(_18)}else if(_25.ID=="startsWith"||_25.ID=="iStartsWith"){_6.add(_24.value);_6.add(_18)}else if(_25.ID=="endsWith"||_25.ID=="iEndsWith"){if(_6[_6.length-1]!=_18)_6.add(_18);_6.add(_24.value)}}else if(_25.ID==_14){_6.add(_24.value)}else if(_25.ID=="betweenInclusive"||_25.ID=="iBetweenInclusive"){if(_3.criteria.length>1)_5.addAt(_25.symbol,_22);else _5[_22]=_25.symbol
+_22++;var _29=_24.end;if(_27&&_27.type=="text"){if(_29&&_29.endsWith(this.$87p)){_29=_29.replace(this.$87p,"")}}
+_6.addList([_24.start,_29])}else if(_25.ID=="isNull"||_25.ID=="notNull"){_6.add(_25.symbol)}else if(_11.contains(_25.ID)){var _30=_25;if(isc.isAn.Array(_26))_26=_26.join(_25.valueSeparator);if(_30.ID!=_15){_26=(_30&&_30.symbol?_30.symbol:"")+_26;if(_30.closingSymbol)_26+=_30.closingSymbol}
+_6.add(_26)}else if(_25.ID.startsWith("i")){var _31=_25.ID.substring(1),_32=_31.charAt(0);_31=_32.toLowerCase()+_31.substring(1)
+if(_11.contains(_31)){var _33=_10.find("ID",_31);if(_33.ID!=_15){_26=(_30&&_30.symbol?_30.symbol:"")+_26;if(_30.closingSymbol)_26+=_30.closingSymbol}
+_6.add(_26)}}
+_22++}
+if(_17)_6.addAt("=",0);if(_5.length>1){for(var i=0;i<_6.length;i++){_7+=_6[i];if(i<_6.length-1)_7+=_5[i]}}else{_7=_6.join((_6.length>1?_5[0]:""))}
+delete this.$877;return _7.length>0?_7:null}
+);isc.B._maxIndex=isc.C+429;isc.FormItem.registerStringMethods({showIf:"item,value,form,values",defaultDynamicValue:"item,form,values",focus:"form,item",blur:"form,item",editorEnter:"form,item,value",editorExit:"form,item,value",click:"form,item",doubleClick:"form,item",iconClick:"form,item,icon",iconKeyPress:"keyName,character,form,item,icon",change:"form,item,value,oldValue",changed:"form,item,value",transformInput:"form,item,value,oldValue",cellClick:"form,item",cellDoubleClick:"form,item",titleClick:"form,item",titleDoubleClick:"form,item",mouseMove:"form,item",mouseOver:"form,item",mouseOut:"form,item",titleMove:"form,item",titleOver:"form,item",titleOut:"form,item",itemHover:"item,form",titleHover:"item,form",keyPress:"item, form, keyName, characterValue",keyDown:"item,form,keyName",keyUp:"item,form,keyName",getValueIcon:"value",formSaved:"request,response,data",formatValue:"value,record,form,item",formatEditorValue:"value,record,form,item",parseEditorValue:"value,form,item"});isc.FormItem.getPrototype().toString=function(){return"["+this.Class+" ID:"+this.ID+(this.name!=null?" name:"+this.name:"")+"]"};isc.ClassFactory.defineClass("FormItemFactory");isc.A=isc.FormItemFactory;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$gx="text";isc.A.$18n="Item";isc.A.$18o="TextareaItem";isc.A.$679="TextAreaItem";isc.A.$68a="DatetimeItem";isc.A.$68b="DateTimeItem";isc.A.$18p={};isc.B.push(isc.A.getItemClassName=function isc_c_FormItemFactory_getItemClassName(_1,_2,_3,_4){if(_2==null)_2=_1.editorType||_1.formItemType||_1.type;if(isc.isA.String(_2)){var _5=_2.toLowerCase();if(_5.contains(isc.DynamicForm.$12b)){if(_5=="selectother"||_5=="selectotheritem"){_5="select";if(!_4)_1.isSelectOther=true}
+if(_5=="select"||_5=="selectitem"){_3=_1.form||_3;var _6=(!isc.ListGrid||(_1.multiple&&_1.multipleAppearance=="grid")||(_3?_3.useNativeSelectItems:false));if(_6)_2="NativeSelectItem"
+else _2="SelectItem"}}
+if(_5==isc.DynamicForm.$52w)_2="MultiFileItem";else if(_5==isc.DynamicForm.$12g)_2="MultiUploadItem";else if(_5==isc.DynamicForm.$51x.toLowerCase())_2="SOAPUploadItem"}
+return _2}
+,isc.A.getItemClass=function isc_c_FormItemFactory_getItemClass(_1){var _2=isc.ClassFactory.getClass(_1);if(!_2||!isc.isA.FormItem(_2)){if(_1!=null&&_1.startsWith("T")){var _3=_1.substring(1),_2=isc.ClassFactory.getClass(_3);if(isc.isA.FormItem(_2))return _2}
+if(_1==null)_1=this.$gx;var _4=this.$18p,_5=_4[_1];if(!_5){_5=_4[_1]=_1.substring(0,1).toUpperCase()+_1.substring(1)+this.$18n}
+if(_5==this.$18o)_5=this.$679;if(_5==this.$68a)_5=this.$68b;_2=isc.ClassFactory.getClass(_5)}
+return _2}
+,isc.A.makeItem=function isc_c_FormItemFactory_makeItem(_1){if(_1==null)return null;if(isc.isA.FormItem(_1)){return _1}
+var _2=this.getItemClassName(_1),_3=this.getItemClass(_2);if(!_3){this.logWarn("makeItem(): type "+_1.type+" not recognized, using TextItem");_3=isc.TextItem}
+return isc.ClassFactory.newInstance(_3,_1)}
+);isc.B._maxIndex=isc.C+3;isc.ClassFactory.defineClass("Validator");isc.Validator.addProperties({})
+isc.A=isc.Validator;isc.A.notABoolean="Must be a true/false value";isc.A.notAString="Must be a string.";isc.A.notAnInteger="Must be a whole number.";isc.A.notADecimal="Must be a valid decimal.";isc.A.notADate="Must be a date.";isc.A.notATime="Must be a time.";isc.A.notAnIdentifier="Identifiers must start with a letter, underscore or $ character, "+"and may contain only letters, numbers, underscores or $ characters.";isc.A.notARegex="Must be a valid regular expression.";isc.A.notAColor="Must be a CSS color identifier.";isc.A.mustBeLessThan="Must be no more than ${max}";isc.A.mustBeGreaterThan="Must be at least ${min}";isc.A.mustBeLaterThan="Must be later than ${min.toShortDate()}";isc.A.mustBeLaterThanTime="Must be later than ${isc.Time.toShortTime(min)}";isc.A.mustBeEarlierThan="Must be earlier than ${max.toShortDate()}";isc.A.mustBeEarlierThanTime="Must be earlier than ${isc.Time.toShortTime(max)}";isc.A.mustBeShorterThan="Must be no more than ${max} characters";isc.A.mustBeLongerThan="Must be at least ${min} characters";isc.A.mustBeExactLength="Must be exactly ${max} characters";isc.A.notAMeasure='Must be a whole number, percentage, "*" or "auto"';isc.A.requiredField="Field is required";isc.A.notOneOf="Not a valid option";isc.A.notAFunction='Must be a function.';isc.A.$18q="true";isc.A.$18r="false";isc.A.$605=".";isc.A.READONLY="readOnly";isc.A.HIDDEN="hidden";isc.A.DISABLED="disabled";isc.A.$74u={isBoolean:{type:"isBoolean",title:"Value is boolean",valueType:"none",dataType:"none",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(isc.isA.Boolean(_3))return true;if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.notABoolean}
+if(isc.isA.String(_3)){var _4=isc.Validator;_2.resultingValue=(_3==_4.$18q);return(_3==_4.$18q||_3==_4.$18r)}else if(isc.isA.Number(_3)){_2.resultingValue=(_3!=0);return(_3==0||_3==1)}
+_2.resultingValue=!!_3;return false}},isString:{type:"isString",title:"Value is a string",valueType:"none",dataType:"none",condition:function(_1,_2,_3){if(_3==null||isc.isA.String(_3))return true;if(!_2.errorMessage)_2.defaultErrorMessage=isc.Validator.notAString;_2.resultingValue=isc.iscToLocaleString(_3);return true}},isInteger:{type:"isInteger",title:"Value is a whole number",valueType:"none",dataType:"none",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(!_2.errorMessage)_2.defaultErrorMessage=isc.Validator.notAnInteger;if(isNaN(_3))return false;var _4=parseInt(_3,10),_5=(_3==_4);if(_2.convertToInteger){var _6=parseFloat(_3),_4=Math.round(_6);_2.resultingValue=_4;return true}else{if(_5){_2.resultingValue=_4;return true}else return false}}},isFloat:{type:"isFloat",title:"Value is a floating point number",valueType:"none",dataType:"none",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(!_2.errorMessage)_2.defaultErrorMessage=isc.Validator.notADecimal;var _4;if(_3==isc.Validator.$605){_4="0."}else{_4=parseFloat(_3);if(isNaN(_4)||_4!=_3)return false}
+_2.resultingValue=_4;return true}},isDate:{type:"isDate",title:"Value is a date",valueType:"none",dataType:"none",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3)||isc.isA.Date(_3))return true;if(!_2.errorMessage)_2.defaultErrorMessage=isc.Validator.notADate;var _4=Date.parseSchemaDate(_3);if(_4==null)return false;_2.resultingValue=_4;return true}},isTime:{type:"isTime",title:"Value is a logical Time value",valueType:"none",dataType:"none",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3)||isc.isA.Date(_3))return true;if(!_2.errorMessage)_2.defaultErrorMessage=isc.Validator.notATime;var _4=isc.Time.parseInput(_3,true);if(_4==null){_4=Date.parseSchemaDate(_3)}
+if(_4!=null){_2.resultingValue=_4;return true}
+return false}},isIdentifier:{type:"isIdentifier",valueType:"none",dataType:"none",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.notAnIdentifier}
+return _3.match(/^[a-zA-Z_\$][\w\$]*$/)!=null}},isRegexp:{type:"isRegexp",valueType:"none",dataType:"none",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(!_2.errorMessage)_2.defaultErrorMessage=isc.Validator.notARegex;if(typeof _3=='object'&&_3.constructor==RegExp)return true;if(isc.Browser.isDOM){if(!isc.Validator.$18t){isc.Validator.$18t=new Function("value","try{var regex=new RegExp(value)}catch(e){return false}return true")}
+return isc.Validator.$18t(_3)}else{var _4=new RegExp(_3);return true}}},isFunction:{type:"isFunction",valueType:"none",dataType:"none",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3)||_3==isc.Class.NO_OP||isc.isA.StringMethod(_3))
+{return true}
+if(!_2.errorMessage)_2.defaultErrorMessage=isc.Validator.notAFunction;try{isc.Func.expressionToFunction("",_3)}catch(e){return false}
+if(_3.iscAction)_3=_3.iscAction;_2.resultingValue=isc.StringMethod.create({value:_3});return true}},isColor:{type:"isColor",valueType:"none",dataType:"text",isColor:function(_1,_2,_3){if(!_2.errorMessage)_2.defaultErrorMessage=isc.Validator.notAColor;if(!_3)return true;return isc.isA.color(_3)}},isMeasure:{type:"isMeasure",valueType:"none",dataType:["integer","string"],condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3)||_3=="*")return true;if(!_2.errorMessage)_2.defaultErrorMessage=isc.Validator.notAMeasure;if(isc.isA.String(_3)&&_3.charAt(_3.length-1)=='%'){_3=_3.slice(0,-1);return _3.match(/\d+\.?\d*/)!=null}
+return isc.Validator.processValidator(_1,_2,_3,"integerOrAuto")}},integerOrAuto:{type:"integerOrAuto",valueType:"none",dataType:["integer","string"],condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3)||(isc.isA.String(_3)&&_3.toLowerCase()=="auto"))return true;return isc.Validator.processValidator(_1,_2,_3,"isInteger")}},integerRange:{type:"integerRange",title:"Value is an integer within the specified range",valueType:"valueRange",dataType:"integer",rangeStartAttribute:"min",rangeEndAttribute:"max",condition:function(_1,_2,_3){var _4=_3;if(!isc.isA.String(_3))_3=parseInt(_3,10);if(isNaN(_3)||_3!=_4)return true;_2.dynamicErrorMessageArguments={validator:_2,max:_2.max,min:_2.min}
+if(isc.isA.Number(_2.max)&&((!_2.exclusive&&_3>_2.max)||(_2.exclusive&&_3>=_2.max)))
+{if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.mustBeLessThan}
+return false}
+if(isc.isA.Number(_2.min)&&((!_2.exclusive&&_3<_2.min)||(_2.exclusive&&_3<=_2.min)))
+{if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.mustBeGreaterThan}
+return false}
+return true}},lengthRange:{type:"lengthRange",title:"Value is a string whose length falls within the specified range",valueType:"valueRange",dataType:"text",rangeStartAttribute:"min",rangeEndAttribute:"max",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(!isc.isA.String(_3))return true;_2.dynamicErrorMessageArguments={validator:_2,max:_2.max,min:_2.min}
+var _4=_3.length,_5=_2.max!=null?parseInt(_2.max,10):null,_6=_2.min!=null?parseInt(_2.min,10):null;if(!isc.isA.Number(_5))_5=null;if(!isc.isA.Number(_6))_6=null;if(_5!=null&&_4>_5){_2.defaultErrorMessage=(_5==_6?isc.Validator.mustBeExactLength:isc.Validator.mustBeShorterThan);return false}
+if(_6!=null&&_4<_6){_2.defaultErrorMessage=(_5==_6?isc.Validator.mustBeExactLength:isc.Validator.mustBeLongerThan);return false}
+return true}},contains:{type:"contains",title:"Value contains the specified substring",valueType:"fieldType",dataType:"text",valueAttribute:"substring",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(!isc.isA.String(_3))_3=isc.iscToLocaleString(_3);return _3.indexOf(_2.substring)>-1}},doesntContain:{type:"doesntContain",title:"Value does not contain the specified substring",valueType:"fieldType",dataType:"text",valueAttribute:"substring",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(!isc.isA.String(_3))_3=isc.iscToLocaleString(_3);return _3.indexOf(_2.substring)==-1}},substringCount:{type:"substringCount",title:"Value contains a specified substring multiple times",valueType:"custom",dataType:"text",editorType:"SubstringCountEditor",getAttributesFromEditor:function(_1,_2){var _3=_2.canvas;return _3.getValues()},setEditorAttributes:function(_1,_2,_3){var _4=_2.canvas;if(_3==null){_4.clearValues();return}
+_4.setValue("substring",_3.substring);_4.setValue("count",_3.count);_4.setValue("operator",_3.operator)},condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;var _4=_2.substring;for(var _5=0,_6=0;_5<_3.length;_5++){_5=_3.indexOf(_4,_5);if(_5>-1)_6++;else break}
+var _7=_2.operator,_8=_2.count;if(!_7)_7="==";if(!_8)_8=0;switch(_7){case"==":return _6==_8;case"!=":return _6!=_8;case"<":return _6<_8;case"<=":return _6<=_8;case">":return _6>_8;case">=":return _6>=_8}
+return false}},regexp:{type:"regexp",title:"Value matches a regular expression",valueType:"fieldType",dataType:"text",valueAttribute:"expression",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;var _4=_2.expression;if(isc.isA.String(_4)){_4=new RegExp(_4)}
+return _4.test(_3)}},mask:{type:"mask",title:"Value matches a regular expression mask",valueType:"custom",dataType:"text",editorType:"MaskRuleEditor",getAttributesFromEditor:function(_1,_2){var _3=_2.canvas;return _3.getValues()},setEditorAttributes:function(_1,_2,_3){var _4=_2.canvas;if(_3==null){_4.clearValues();return}
+_4.setValue("mask",_3.mask);_4.setValue("transformTo",_3.transformTo)},condition:function(_1,_2,_3){if(_3==null)return true;if(!isc.isA.String(_3)&&isc.isA.Function(_3.toString))
+_3=_3.toString();if(isc.is.emptyString(_3))return true;var _4=_2.mask;if(isc.isA.String(_4))_4=_2.mask=new RegExp(_4);if(!_4.test(_3)){return false}else{if(_2.transformTo){_2.resultingValue=_3.replace(_4,_2.transformTo)}}
+return true}},dateRange:{type:"dateRange",title:"Value is a date within the specified range",valueType:"valueRange",dataType:"date",rangeStartAttribute:"min",rangeEndAttribute:"max",editorType:"RelativeDateItem",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(!isc.isA.Date(_3))return false;var _4=_2.min,_5=_2.max;if(_4!=null&&!isc.isA.Date(_4))_4=_2.min=Date.parseSchemaDate(_4);if(_5!=null&&!isc.isA.Date(_5))_5=_2.max=Date.parseSchemaDate(_5);_2.dynamicErrorMessageArguments={validator:_2,max:_5,min:_4}
+if(isc.isA.Date(_4)&&((!_2.exclusive&&_3.getTime()<_4.getTime())||(_2.exclusive&&_3.getTime()<=_4.getTime())))
+{if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.mustBeLaterThan}
+return false}
+if(isc.isA.Date(_5)&&((!_2.exclusive&&_3.getTime()>_5.getTime())||(_2.exclusive&&_3.getTime()>=_5.getTime())))
+{if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.mustBeEarlierThan}
+return false}
+return true}},timeRange:{type:"timeRange",description:"Value is a logical time value within the specified range",valueType:"valueRange",dataType:"time",rangeStartAttribute:"min",rangeEndAttribute:"max",condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;if(!isc.isA.Date(_3))return false;var _4=_2.min,_5=_2.max;if(_4!=null&&!isc.isA.Date(_4)){if(isc.isA.String(_4)&&_4.contains(":")){var _6=_4.split(":"),_7=_6[0]||0,_8=_6[1]||0,_9=_6[2]||0,_10=_6[3]||0;_4=_2.min=new Date(0,0,0,_7,_8,_9,_10)}else{_4=_2.min=Date.parseSchemaDate(_4)}}
+if(_5!=null&&!isc.isA.Date(_5)){if(isc.isA.String(_5)&&_5.contains(":")){var _6=_5.split(":"),_7=_6[0]||0,_8=_6[1]||0,_9=_6[2]||0,_10=_6[3]||0;_5=_2.max=new Date(0,0,0,_7,_8,_9,_10)}else{_5=_2.max=Date.parseSchemaDate(_5)}}
+_2.dynamicErrorMessageArguments={validator:_2,max:_5,min:_4};_4.setFullYear(_3.getFullYear());_4.setMonth(_3.getMonth());_4.setDate(_3.getDate());_5.setFullYear(_3.getFullYear());_5.setMonth(_3.getMonth());_5.setDate(_3.getDate());if(isc.isA.Date(_4)&&((!_2.exclusive&&_3<_4)||(_2.exclusive&&_3<=_4)))
+{if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.mustBeLaterThanTime}
+return false}
+if(isc.isA.Date(_5)&&((!_2.exclusive&&_3>_5)||(_2.exclusive&&_3>=_5)))
+{if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.mustBeEarlierThanTime}
+return false}
+return true}},floatLimit:{type:"floatLimit",valueType:"custom",dataType:"float",condition:function(_1,_2,_3){var _4;if(_2.precision!=null){if(_2.roundToPrecision==null)_2.roundToPrecision=true;if(!isc.Validator.processValidator(_1,_2,_3,"floatPrecision"))
+return false;if(_2.resultingValue!=null)
+_3=_4=_2.resultingValue}
+if(_2.min!=null||_2.max!=null){if(!isc.Validator.processValidator(_1,_2,_3,"floatRange")){return false}else{if(_4!=null&&_2.resultingValue==null&&_2.roundToPrecision)
+_2.resultingValue=_4}}
+return true}},floatRange:{type:"floatRange",title:"Value is a floating point number within the specified range",valueType:"custom",dataType:"float",editorType:"FloatRangeEditor",getAttributesFromEditor:function(_1,_2){var _3=_2.canvas;return _3.getValues()},setEditorAttributes:function(_1,_2,_3){var _4=_2.canvas;if(_3==null){_4.clearValues();return}
+_4.setValue("min",_3.min);_4.setValue("max",_3.max);_4.setValue("exclusive",!!_3.exclusive)},condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;var _4=_3;if(!isc.isA.String(_3))_4=parseFloat(_4);if(isNaN(_4)||_4!=_3)return true;_2.dynamicErrorMessageArguments={validator:_2,max:_2.max,min:_2.min}
+var _5,_6;if(_2.max!=null){_5=isc.isA.Number(_2.max)?_2.max:parseFloat(_2.max)}
+if(_2.min!=null){_6=isc.isA.Number(_2.min)?_2.min:parseFloat(_2.min)}
+if(isc.isA.Number(_5)&&((!_2.exclusive&&_4>_5)||(_2.exclusive&&_4>=_5)))
+{if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.mustBeLessThan}
+return false}
+if(isc.isA.Number(_6)&&((!_2.exclusive&&_4<_6)||(_2.exclusive&&_4<=_6)))
+{if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.mustBeGreaterThan}
+return false}
+return true}},floatPrecision:{type:"floatPrecision",title:"Value is a floating point number specified to the appropriate precision",valueType:"custom",dataType:"float",editorType:"FloatPrecisionEditor",getAttributesFromEditor:function(_1,_2){var _3=_2.canvas;return _3.getValues()},setEditorAttributes:function(_1,_2,_3){var _4=_2.canvas;if(_3==null){_4.clearValues();return}
+_4.setValue("precision",_3.precision);_4.setValue("roundToPrecision",_3.roundToPrecision)},condition:function(_1,_2,_3){if(_3==null||isc.is.emptyString(_3))return true;var _4=parseFloat(_3);if(isNaN(_4)||_4!=_3)return false;if(isc.isA.Number(_2.precision)){var _5=Math.pow(10,_2.precision);var _6=(Math.round(_4*_5))/_5;if(_2.roundToPrecision){_2.resultingValue=_6;return true}else{return(_4==_6)}}}},requiredIf:{type:"requiredIf",title:"Conditionally required field",valueType:"fieldType",dataType:"none",valueAttribute:"expression",editorType:"TextAreaItem",condition:function(_1,_2,_3,_4){if(_2.expression!=null&&!isc.isA.Function(_2.expression)){isc.Func.replaceWithMethod(_2,"expression","item,validator,value,record")}
+var _5=_2.expression(_1,_2,_3,_4);if(_2.errorMessage==null)
+_2.errorMessage=isc.Validator.requiredField;return!_5||(_3!=null&&!isc.is.emptyString(_3))}},isOneOf:{type:"isOneOf",title:"Is one of list",valueType:"valueSet",dataType:"none",valueAttribute:"list",condition:function(_1,_2,_3,_4){if(_3==null||isc.is.emptyString(_3))return true;var _5=_2.list||(_1?(_1.getValueMap?_1.getValueMap():_1.valueMap):null),_6=_5;if(!isc.isAn.Array(_5)&&isc.isAn.Object(_5)){_6=isc.getKeys(_5)}
+if(_6!=null){for(var i=0,_8=_6.length;i<_8;i++){if(_6[i]==_3)return true}}else{isc.Log.logWarn("isOneOf validator specified with no specified list of options "+"or valueMap - validator will always fail. "+"Field definition:"+isc.Log.echo(_1),"validation")}
+if(!_2.errorMessage){_2.defaultErrorMessage=isc.Validator.notOneOf}
+return false}},required:{type:"required",title:"Required field",valueType:"none",dataType:"none",condition:function(_1,_2,_3,_4){if(_2.errorMessage==null)
+_2.errorMessage=isc.Validator.requiredField;return(_3!=null&&!isc.is.emptyString(_3))},action:function(_1,_2,_3,_4,_5){if(!_2.required){_2.$11m=(_1!=null)}}},readOnly:{type:"readOnly",valueType:"custom",dataType:"none",editorType:"ReadOnlyRuleEditor",valueAttribute:"fieldAppearance",title:"Set field read-only state/appearance",condition:function(_1,_2,_3,_4){return true},action:function(_1,_2,_3,_4,_5){if(_3.readOnlyComponent!=null){var _5=window[_3.readOnlyComponent];if(_5==null){this.logWarn("ReadOnly validator has specified component:"+_3.readOnlyComponent+" - unable to find a component with this "+" ID. Ignoring.");return}
+if(_3.fieldAppearance==isc.Validator.HIDDEN){if(_1==true)_5.setVisibility("hidden");else _5.setVisibility("inherit")}else{if(_3.fieldAppearance!=isc.Validator.DISABLED){this.logWarn("ReadOnly type rule has field appearance set to:"+_3.fieldAppearance+" and has a specified readOnlyComponent"+". This is not supported - using appearance disabled instead.")}
+if(_1==true)_5.setDisabled(true);else _5.setDisabled(false)}
+return}
+var _6=_2.name;if(_3.fieldAppearance==isc.Validator.HIDDEN){if(_1==true)_5.hideField(_6);else _5.showField(_6)}else if(_3.fieldAppearance==isc.Validator.DISABLED){if(_1==true)_5.disableField(_6);else _5.enableField(_6)}else{if(_1==true)_5.setFieldCanEdit(_6,false);else _5.setFieldCanEdit(_6,true)}}},matchesField:{type:"matchesField",title:"Matches another field value",valueType:"fieldName",dataType:"none",valueAttribute:"otherField",condition:function(_1,_2,_3,_4){if(_2.otherField==null){isc.logWarn("matchesField validator is missing 'otherField' definition. "+"Validator forced false.");return false}
+return(_3==_4[_2.otherField])}},isUnique:{type:"isUnique",valueType:"none",dataType:"none",title:"Validate field value is unique on DataSource",requiresServer:true},hasRelatedRecord:{type:"hasRelatedRecord",valueType:"none",dataType:"none",title:"Validate field value exists on a related DataSource",requiresServer:true},serverCustom:{type:"serverCustom",valueType:"none",dataType:"none",title:"Validate field value using a custom server expression",requiresServer:true},message:{type:"message",title:"displays an informational or warning message",valueType:"none",dataType:"none",condition:function(_1,_2,_3,_4){return true},action:function(_1,_2,_3,_4,_5){var _6=_3.displayMode,_7=(_3.message==null?"errorMessage":"message"),_8=isc.Validator.getErrorMessage(_3,_7);if(_6=="form"){if(!_5.addFieldErrors){return}
+if(_1==true){_5.addFieldErrors(_2.name,_8,true)}else{_5.setFieldErrors(_2.name,null,true)}}else if(_6=="transient"){if(_1==true){var _9=function(){if(_5&&_5.hasFocus)_5.blur();isc.showFadingPrompt(_8,_3.duration)};isc.Page.setEvent("idle",_9,isc.Page.FIRE_ONCE)}}else{var _10=_3.severity;if(_1==true){var _9=function(){if(_5&&_5.hasFocus)_5.blur();if(_10=="warning"){isc.warn(_8)}else{isc.say(_8)}};isc.Page.setEvent("idle",_9,isc.Page.FIRE_ONCE)}}}},populate:{type:"populate",title:"Populates a target field with a value calculated based on values in other fields",valueType:"custom",dataType:"none",editorType:"PopulateRuleEditor",getAttributesFromEditor:function(_1,_2){return _2.getValue()},setEditorAttributes:function(_1,_2,_3){if(_3!=null&&_3.formula!=null){_2.setValue({formula:_3.formula,formulaVars:_3.formulaVars})}else{_2.clearValue()}},condition:function(_1,_2,_3,_4){return true},action:function(_1,_2,_3,_4,_5){if(_1!=true)return;if(_3.$89d==null){var _6={};var _7=_6.formulaVars=_3.formulaVars;_6.text=_3.formula;var _8=[];for(var _9 in _7){var _10={};_10.mappingKey=_9;_10.name=_7[_9];_8.add(_10)}
+_3.$89d=isc.FormulaBuilder.generateFunction(_6,_8,null,true)}
+var _11=_3.$89d(_4,_5);if(_2.setValue){_2.setValue(_11)}else if(_5&&_5.setValue){var _12=_2.fieldName;if(_12==null)_12=_2.dataPath;_5.setValue(_12,_11)}}},setRequired:{type:"setRequired",valueType:"none",dataType:"none",condition:function(_1,_2,_3,_4){return true},action:function(_1,_2,_3,_4,_5){var _6=!!_1;var _7=_2;if(!_7.setRequired&&_5.getItem){_7=_5.getItem(_2.name||_2.dataPath)}
+if(_7&&_7.setRequired){_7.setRequired(_6)}else{_2.required=_6}}}};isc.A=isc.Validator;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getValidatorType=function isc_c_Validator_getValidatorType(_1){var _2=_1.type;if(_2==null&&_1._constructor)_2=_1._constructor;return _2}
+,isc.A.isServerValidator=function isc_c_Validator_isServerValidator(_1){if(_1.serverOnly)return true;var _2=this.$74u[this.getValidatorType(_1)];if(_2!=null&&_2.requiresServer)return true;return false}
+,isc.A.processValidator=function isc_c_Validator_processValidator(_1,_2,_3,_4,_5){if(_2.serverOnly)return true;if(_4==null)_4=isc.Validator.getValidatorType(_2);var _6=true;var _7;if(_4!=null)_7=this.$74u[_4];var _8;if(_7==null){if(_2.condition){if(!isc.isA.Function(_2.condition)){this.logDebug("Creating function for validation condition:\r"+_2.condition);isc.Func.replaceWithMethod(_2,"condition","item,validator,value,record")}
+_8=_2.condition}}else{if(_7.requiresServer==true){return true}
+_8=_7.condition;if(!_2.errorMessage){_2.defaultErrorMessage=_7.defaultErrorMessage}}
+if(_8!=null){var _9=_2.validateEachItem;if(_9==null)_9=_1.validateEachItem;if(_1&&_1.multiple&&_9&&isc.isAn.Array(_3)){var _10=[];for(var i=0;i<_3.length;i++){delete _2.resultingValue;_6=_6&&_8(_1,_2,_3[i],_5);_10[i]=(_2.resultingValue!=null?_2.resultingValue:_3[i])}
+_2.resultingValue=_10}else{delete _2.resultingValue;_6=_8(_1,_2,_3,_5)}}else{this.logWarn("validator not understood on item: "+isc.echo(_1)+":\r"+isc.echoFull(_2))}
+return _6}
+,isc.A.performAction=function isc_c_Validator_performAction(_1,_2,_3,_4,_5){var _6=this.getValidatorType(_3);var _7;if(_6!=null)_7=this.$74u[_6];var _8;if(_7!=null){_8=_7.action}
+if(_8==null&&_3.action){if(!isc.isA.Function(_3.action)){this.logDebug("Creating function for validation action:\r"+_3.action);isc.Func.replaceWithMethod(_3,"action","result,item,validator,record,component")}
+_8=_3.action}
+if(_8!=null){_8(_1,_2,_3,_4,_5)}}
+,isc.A.getErrorMessage=function isc_c_Validator_getErrorMessage(_1,_2){var _3=_2?_1[_2]:_1.errorMessage;if(_3==null)_3=_1.defaultErrorMessage;if(_3&&_1.dynamicErrorMessageArguments){_3=_3.evalDynamicString(null,_1.dynamicErrorMessageArguments)}
+return _3}
+,isc.A.addValidator=function isc_c_Validator_addValidator(_1,_2){if(isc.isA.String(_1)){var _3={};_3[_1]=_2;return this.addValidators(_3)}}
+,isc.A.addValidators=function isc_c_Validator_addValidators(_1){for(var _2 in _1){var _3={};_3.type=_2;_3.condition=_1[_2];if(!isc.isA.Function(_3.condition)){isc.Func.replaceWithMethod(_3,"condition","item,validator,value")}
+_1[_2]=_3}
+this.addValidatorDefinitions(_1)}
+,isc.A.addValidatorDefinition=function isc_c_Validator_addValidatorDefinition(_1,_2){if(!isc.isAn.Object(_2)){isc.logWarn("Invalid validator in call to addValidatorDefinition. Ignored.")}
+var _3={};_3[_1]=_2;return this.addValidatorDefinitions(_3)}
+,isc.A.addValidatorDefinitions=function isc_c_Validator_addValidatorDefinitions(_1){if(!_1||!isc.isAn.Object(_1))return;for(var _2 in _1){if(this.$74u[_2]){isc.logWarn("addValidatorDefinitions: Validator definition already exists "+"for type "+_2+". Replacing.")}}
+isc.addProperties(this.$74u,_1)}
+);isc.B._maxIndex=isc.C+9;isc.ClassFactory.defineClass("ContainerItem","FormItem");isc.A=isc.ContainerItem.getPrototype();isc.A.cellSpacing=0;isc.A.cellPadding=2;isc.A.cellBorder=0;isc.A.recalculateItemsOnRedraw=false;isc.A.$125=false;isc.A.changeOnKeypress=false;isc.ContainerItem.addMethods(isc.applyMask(isc.DynamicForm.getPrototype(),["getTableStartHTML","$11n","$11o","getCellStartHTML","$11g","getCellEndHTML","$11h","getTitleAlign","getItemPromptHTML","getItem","fieldIdProperty"]))
+isc.A=isc.ContainerItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.writeOutLabelTag=true;isc.B.push(isc.A.init=function isc_ContainerItem_init(){this.Super("init",arguments);this.setItems(this.items?this.items:null)}
+,isc.A.destroy=function isc_ContainerItem_destroy(){this.Super("destroy",arguments);if(this.items){for(var i=0;i<this.items.length;i++){this.items[i].destroy()}}}
+,isc.A.setItems=function isc_ContainerItem_setItems(_1){var _2=this.items?this.items:null;if(_1)this.items=_1;else _1=this.items;if(!this.items)return null;this.logDebug("Creating "+this.items.length+" contained items");var _3=false;for(var _4=0;_4<_1.length;_4++){var _5=_1[_4];if(!_5){_1.removeItem(_4--);continue}
+isc.addMethods(_5,{$154:function(){return this.parentItem.$154()}});_5.containerWidget=this.containerWidget;_5.parentItem=this;_5.eventParent=this;_5.form=this.form;_5.showTitle=false;if(!isc.isA.FormItem(_5))_1[_4]=_5=isc.FormItemFactory.makeItem(_5);if(this.accessKey!=null&&!_3&&_5.$kk()){_5.accessKey=this.accessKey;_3=true}
+if(_5.name!=null)this[_5.name]=_5}
+if(this.isDrawn()){if(_2&&_2!=this.items){this.$60r={};for(var i=0;i<_2.length;i++){var _7=_2[i];if(!_1.contains(_2[i])){this.$60r[_2[i].getID()]=true}}}}
+this.redraw()}
+,isc.A.getItems=function isc_ContainerItem_getItems(){return this.items}
+,isc.A.getTitleHTML=function isc_ContainerItem_getTitleHTML(){var _1,_2;var _3=this.getTitle();if(!this.writeOutLabelTag||!this.getCanFocus()){return _3}
+if(this.accessKey!=null){_3=isc.Canvas.hiliteCharacter(_3,this.accessKey)}
+for(var i=0;i<this.items.length;i++){if(this.items[i].getCanFocus()&&this.items[i].hasDataElement()){_2=this.items[i];break}}
+if(!_2){return _3}
+return isc.SB.concat("<LABEL FOR=",_2.getDataElementId(),">",_3,"</LABEL>")}
+,isc.A.$173=function isc_ContainerItem__setElementTabIndex(_1){if(!this.isVisible()||!this.containerWidget.isDrawn())return;this.$174=_1;for(var i=0;i<this.items.length;i++){if(this.items[i].$kk())this.items[i].$173(_1)}
+if(!this.form.isDirty()){this.$175()}}
+,isc.A.isEditable=function isc_ContainerItem_isEditable(){return false}
+,isc.A.$kk=function isc_ContainerItem__canFocus(){if(!this.items)return false;for(var i=0;i<this.items.length;i++){if(this.items[i].$kk())return true}
+return false}
+,isc.A.focusInItem=function isc_ContainerItem_focusInItem(){if(!this.isVisible()||!this.$kk())return;for(var i=0;i<this.items.length;i++){if(this.items[i].$kk()){this.items[i].focusInItem();break}}}
+,isc.A.blurItem=function isc_ContainerItem_blurItem(){for(var i=0;i<this.items.length;i++){if(this.items[i].hasFocus){this.items[i].blurItem();break}}}
+,isc.A.$159=function isc_ContainerItem__applyHandlersToElement(){this.$16c()}
+,isc.A.drawn=function isc_ContainerItem_drawn(){var _1=this.items;if(!_1)return;for(var i=0;i<_1.length;i++){if(_1[i].visible!=false)_1[i].drawn()}
+return this.Super("drawn",arguments)}
+,isc.A.redrawn=function isc_ContainerItem_redrawn(){var _1=this.items;if(!_1)return;for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3.visible!=false){if(!_3.isDrawn())_3.drawn();else _3.redrawn()}else{if(_3.isDrawn())_3.cleared()}}
+if(this.$60r){for(var _4 in this.$60r){if(window[_4]!=null)window[_4].cleared()}
+delete this.$60r}
+return this.Super("redrawn",arguments)}
+,isc.A.cleared=function isc_ContainerItem_cleared(){var _1=this.items;if(!_1)return;for(var i=0;i<_1.length;i++){if(_1[i].isDrawn())_1[i].cleared()}
+if(this.$60r){for(var _3 in this.$60r){if(window[_3]!=null)window[_3].cleared()}
+delete this.$60r}
+return this.Super("cleared",arguments)}
+,isc.A.makeNamedItem=function isc_ContainerItem_makeNamedItem(_1,_2){if(!this.itemCache)this.itemCache={};var _3=this.itemCache[_1];if(!_3){_3=(this[_1]||this.getClass()[_1]);if(_2!=null){_3=isc.addProperties({},_3,_2)}
+_3=this.itemCache[_1]=isc.FormItemFactory.makeItem(_3)}
+return _3}
+,isc.A.getInnerHTML=function isc_ContainerItem_getInnerHTML(_1,_2,_3,_4){if(!_1)_1={};if(!this.items||this.recalculateItemsOnRedraw||!isc.isA.FormItem(this.items[0]))this.setItems();if(!this.items)return"No items set for containerItem "+this;var _5;if(this.isInactiveHTML()&&this.$68u==null){_5=true;this.$68u=this.setupInactiveContext(null);if(this.logIsDebugEnabled("inactiveEditorHTML")){this.logDebug("getInnerHTML(): Item is marked as inactive - set up "+"new inactive context ID:"+this.$68u,"inactiveEditorHTML")}}
+var _6=this.getErrorOrientation(),_7,_8=_6==isc.Canvas.LEFT,_9;if(_3&&(_8||_6==isc.Canvas.RIGHT))
+{var _10=this.getErrors();if(_10){_7=true;_9=this.getErrorHTML(_10)}}
+var _11=isc.StringBuffer.newInstance();if(this.$11d()){_11.append(this.$15l())}
+_11.append(this.getTableStartHTML());var _12=this.items;for(var _13=0;_13<_12.length;_13++){var _14=_12[_13];_14.$10x()
+_14.form=this.form;if(_14.showIf){if(!isc.isA.Function(_14.showIf)){isc.Func.replaceWithMethod(_14,"showIf","item,value,form")}
+var _15=this.getItemValue(_14,_1);var _16=(_14.showIf(_14,_15,this.form)!=false);if(_16!=_14.visible){_14.visible=_16}}}
+for(var _13=0,_17=this.items.length;_13<_17;_13++){var _14=this.items[_13];if(!_14)continue;if(!_14.visible)continue;var _15=this.getItemValue(_14,_1);if(_14.$8l||_13==0){if(_13!=0)_11.append("</TR>");_11.append("<TR>")}
+if(_13==0&&_7&&_8){var _18=1;for(var _19=1;_19<this.items.length;_19++){if(this.items[_19].$8l)_18++}
+_11.append("<TD ROWSPAN=",_18,">",_9,"</TD>")}
+_11.append(this.getCellStartHTML(_14));_11.append(_14.getInnerHTML(_15,true));_11.append(this.getCellEndHTML(_14))}
+if(this.showPickerIcon||(this.showIcons&&this.icons!=null)){var _20=this.getTotalIconsWidth();if(this.showPickerIcon)_20+=this.getPickerIconWidth();_11.append(this.$11g((this.form.isRTL()?isc.Canvas.RIGHT:isc.Canvas.LEFT),null,this.getCellStyle(),1,1,_20,null,null,isc.Canvas.$42a,null,null,null,(this.icons&&(this.showPickerIcon||this.icons.length>1))));_11.append(this.getIconsHTML(true));_11.append(this.$11h(true))}
+if(_7&&!_8)_2=true;if(_2){var _21=this.getHint(),_22=!_8?_9:null,_23=(_21&&_22)?_21+_22:(_21||_22);if(_23&&!isc.isA.emptyString(_23)){this.$132[1]=this.$59s();this.$132[3]=this.getHintStyle();this.$132[5]=_23;_11.append(this.$132)}}
+_11.append("</TR></TABLE>");if(_5)delete this.$68u;return _11.toString()}
+,isc.A.getPickerIcon=function isc_ContainerItem_getPickerIcon(){var _1=this.Super("getPickerIcon",arguments);_1.writeIntoItem=false;return _1}
+,isc.A.getItemValue=function isc_ContainerItem_getItemValue(_1,_2){if(_2==null)_2={};if(!isc.isA.FormItem(_1))_1=this.getItem(_1);if(!_1)return null;var _3=_1.getFieldName(),_4=null;if(_1.value!=null)_4=_1.value;if(_4==null&&_3){_4=_2[_3]}
+if(_4==null){_4=_1.getDefaultValue();if(_4==null&&this.form&&this.form.values)_4=this.form.values[_3]}
+return _4}
+,isc.A.$10v=function isc_ContainerItem__itemValueIsDirty(){if(this.items==null)return false;for(var i=0;i<this.items.length;i++){if(this.items[i].$10v())return true}
+return this.$18j}
+,isc.A.$10x=function isc_ContainerItem__markValueAsNotDirty(){this.$18j=false;for(var i=0;i<this.items.length;i++){this.items[i].$10x()}}
+,isc.A.updateDisabled=function isc_ContainerItem_updateDisabled(){this.Super("updateDisabled",arguments);if(this.items){for(var i=0;i<this.items.length;i++)this.items[i].updateDisabled()}}
+,isc.A.updateCanEdit=function isc_ContainerItem_updateCanEdit(){this.Super("updateCanEdit",arguments);if(this.items){for(var i=0;i<this.items.length;i++)this.items[i].updateCanEdit()}}
+,isc.A.getTextDirection=function isc_ContainerItem_getTextDirection(){return this.form.getTextDirection()}
+,isc.A.getLeft=function isc_ContainerItem_getLeft(){var _1=this.$11o();if(_1==null){this.logWarn("getLeft() Unable to determine position for "+(this.name==null?"this item ":this.name)+". Position cannot be determined before the item is drawn "+"- returning zero");return 0}
+return this.$18k(_1)}
+,isc.A.getTop=function isc_ContainerItem_getTop(){var _1=this.$11o();if(_1==null){this.logWarn("getTop() Unable to determine position for "+(this.name==null?"this item ":this.name)+". Position cannot be determined before the item is drawn "+"- returning zero");return 0}
+return this.$18l(_1)}
+,isc.A.getVisibleWidth=function isc_ContainerItem_getVisibleWidth(){var _1=this.$11o();if(_1==null)return this.Super("getVisibleWidth",arguments);return _1.offsetWidth}
+,isc.A.getVisibleHeight=function isc_ContainerItem_getVisibleHeight(){var _1=this.$11o();if(_1==null)return this.Super("getVisibleHeight",arguments);return _1.offsetHeight}
+);isc.B._maxIndex=isc.C+27;isc.ClassFactory.defineClass("CanvasItem","FormItem");isc.A=isc.CanvasItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.width="*";isc.A.height=null;isc.A.shouldSaveValue=false;isc.B.push(isc.A.setElementValue=function isc_CanvasItem_setElementValue(_1,_2){var _3;if(_2===_3){_2=this._value}
+this.showValue(_1,_2,this.form,this)}
+,isc.A.showValue=function isc_CanvasItem_showValue(_1,_2){}
+,isc.A.$18v=function isc_CanvasItem__canvas_resized(_1,_2,_3){this.Super("resized",arguments);if(!this.dragResizing()&&this.canvasItem){this.canvasItem.canvasResized(_1,_2,_3)}}
+,isc.A.$18w=function isc_CanvasItem__canvas_dragResized(){this.canvasItem.canvasResized(1,1);return this.Super("dragResized",arguments)}
+,isc.A.$18x=function isc_CanvasItem__canvas_focusInNextTabElement(_1,_2){if(isc.isA.DynamicForm(this)){return this.Super("$kf",arguments)}else
+return this.canvasItem.form.$kf(_1,_2)}
+,isc.A.$89x=function isc_CanvasItem__canvas_getTabIndexSpan(){if(isc.isA.DynamicForm(this)){return this.Super("getTabIndexSpan",arguments)}
+var _1=[];this.canvasItem.$89y(this,_1);var _2=0;for(var i=0;i<_1.length;i++){if(_1[i]==this)_2+=1
+else _2+=_1[i].getTabIndexSpan()}
+return _2}
+);isc.B._maxIndex=isc.C+6;isc.A=isc.CanvasItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.editCriteriaInInnerForm=true;isc.A.applyPromptToCanvas=true;isc.B.push(isc.A.init=function isc_CanvasItem_init(){this.Super("init",arguments);this.$18y(this.form,this)}
+,isc.A.isEditable=function isc_CanvasItem_isEditable(){return false}
+,isc.A.$kk=function isc_CanvasItem__canFocus(){if(this.canFocus==true)return this.canFocus;var _1=this.canvas;if(_1&&_1.$kk)return _1.$kk();return false}
+,isc.A.$18y=function isc_CanvasItem__createCanvas(){if(this.createCanvas!=null){var _1=this.canvas;this.canvas=this.fireCallback("createCanvas");if(this.canvas==null)this.canvas=_1}
+if(!isc.isAn.Object(this.canvas)&&!this.canvasProperties&&!window[this.canvas]){if(isc.designTime)return;this.logWarn("CanvasItem: "+(this.getFieldName()?this.getFieldName():this.getID())+" defined with no canvas property - creating a default "+"canvas for this item.")}
+if(!isc.isAn.Object(this.canvas)&&isc.isA.Canvas(window[this.canvas])){this.canvas=window[this.canvas]}
+var _2={_redrawWithParent:false,$so:true,tabIndex:-1,canvasItem:this,disabled:this.shouldDisableCanvas()};_2.resized=this.$18v;_2.dragResized=this.$18w;_2.handleClick=function(){var _3=this.Super("handleClick",arguments);if(!isc.isA.StatefulCanvas(this)&&this.canvasItem){_3=this.canvasItem.handleClick()&&_3}
+return _3}
+_2.handleActivate=function(){var _3=this.Super("handleActivate",arguments);if(this.canvasItem)_3=this.canvasItem.handleClick()&&_3;return _3}
+_2.handleDoubleClick=function(){var _3=this.Super("handleDoubleClick",arguments);if(this.canvasItem)_3=this.canvasItem.handleDoubleClick()&&_3;return _3}
+_2.handleKeyPress=function(){var _3=this.Super("handleKeyPress",arguments);if(this.canvasItem){var _4=this.canvasItem.$18d(this.canvasItem,this.canvasItem.form,isc.EH.getKey(),isc.EH.getKeyEventCharacterValue());if(_4==false)_3=false}
+return _3}
+_2.handleKeyDown=function(_8,_9){var _3=this.Super("handleKeyDown",arguments);if(this.canvasItem){var _4=this.canvasItem.handleKeyDown(_8,_9);if(_4==false)_3=false}
+return _3}
+_2.handleKeyUp=function(_8,_9){var _3=this.Super("handleKeyUp",arguments);if(this.canvasItem){var _4=this.canvasItem.handleKeyUp(_8,_9);if(_4==false)_3=false}
+return _3}
+_2.$kf=this.$18x;_2.getTabIndexSpan=this.$89x;if(this.dataSource)_2.dataSource=this.dataSource;if(this.prompt&&this.applyPromptToCanvas)_2.prompt=this.prompt;if(this.overflow!=null)_2.overflow=this.overflow;if(this.accessKey!=null)_2.accessKey=this.accessKey;if(this.showFocused!=null)_2.showFocused=this.showFocused;if(this.showFocusedAsOver!=null)_2.showFocusedAsOver=this.showFocusedAsOver;if(isc.isA.String(this.canvas)&&window[this.canvas])this.canvas=window[this.canvas];if(!isc.isA.Canvas(this.canvas)){isc.addProperties(_2,this.canvas);if(_2.ID==null)_2.ID=null;this.autoDestroy=true;this.addAutoChild("canvas",_2,isc.Canvas,this.containerWidget)}else{this.canvas.setTabIndex(-1);if(this.applyPromptToCanvas)this.canvas.setPrompt(this.prompt);this.canvas.setAccessKey(this.accessKey);isc.addProperties(this.canvas,_2);if(_2.dataSource)this.canvas.bindToDataSource();this.canvas.setDisabled(this.shouldDisableCanvas());this.containerWidget.addChild(this.canvas)}
+if(this.containerWidget!=this.form){if(isc.EH.clickMaskUp()){var _5=isc.EH.getAllClickMaskIDs();for(var i=_5.length-1;i>=0;i--){var _7=isc.EH.targetIsMasked(this.containerWidget,_5[i]);if(!_7){isc.EH.addUnmaskedTarget(this.canvas,_5[i]);break}}}}
+if(this.canvas)this.observe(this.canvas,"$lf","observer.canvasFocusChanged()");if(isc.isA.DynamicForm(this.canvas)){this.observe(this.canvas,"setFocusItem","observer.nestedFormSetFocusItem()")}}
+,isc.A.setCanvas=function isc_CanvasItem_setCanvas(_1){if(isc.isA.Canvas(this.canvas)&&this.canvas!=_1){this.ignore(this.canvas,"$lf");if(isc.isA.DynamicForm(this.canvas))this.ignore(this.canvas,"setFocusItem")}
+if(_1)this.canvas=_1;this.$18y()}
+,isc.A.redrawn=function isc_CanvasItem_redrawn(_1){this.Super("redrawn",arguments);var _2=this.shouldDisableCanvas();if(this.canvas.isDisabled()!=_2)this.canvas.setDisabled(_2)}
+,isc.A.destroy=function isc_CanvasItem_destroy(){if(this.canvas){delete this.canvas.canvasItem;if(this.autoDestroy)this.canvas.destroy(true);else if(this.canvas.visibility!=isc.Canvas.HIDDEN)this.canvas.hide()}
+return this.Super("destroy",arguments)}
+,isc.A.placeCanvas=function isc_CanvasItem_placeCanvas(_1){var _2=this.canvas;if(this.visible==false){_2.hide();isc.Canvas.moveOffscreen(_2);return}
+if(this.form&&!this.form.isDrawn()&&this.form.position==isc.Canvas.RELATIVE){_2.hide();return}
+var _3=this.containerWidget.getClipHandle(),_4=isc.Element.get(this.getID()+"$18z");var _5=isc.Element.getLeftOffset(_4,_3),_6=isc.Element.getTopOffset(_4,_3);_2.moveTo(_5,_6);if(_2.visibility==isc.Canvas.HIDDEN){_2.show()}
+if(!_1&&isc.Browser.isMac&&isc.Browser.isMoz&&_5==0&&_6==0){isc.Timer.setTimeout({target:this,methodName:"$180"},0)}}
+,isc.A.$180=function isc_CanvasItem__delayedPlaceCanvas(){this.placeCanvas(true)}
+,isc.A.cleared=function isc_CanvasItem_cleared(){this.Super("cleared",arguments);if(this.canvas&&this.canvas.isDrawn())this.canvas.clear()}
+,isc.A.moved=function isc_CanvasItem_moved(){if(this.isDrawn())this.placeCanvas()}
+,isc.A.checkCanvasOverflow=function isc_CanvasItem_checkCanvasOverflow(){return this.sizeCanvas(true)}
+,isc.A.sizeCanvas=function isc_CanvasItem_sizeCanvas(_1){var _2=this.canvas;if(_1&&!(_2.overflow==isc.Canvas.VISIBLE||_2.overflow==isc.Canvas.CLIP_H))
+{this.logDebug("ignoring first pass, can't overflow","canvasItemSizing");return}
+var _3=this.getInnerWidth(),_4=this.getInnerHeight(),_5,_6;if(this.showTitle&&this.getTitleOrientation()==isc.Canvas.TOP){_4-=this.form.getTitleHeight(this)}
+_6=_4;var _7=_2.$pn||this.width;_5=(_7==null||_7=="*"?_3:_7);if(!_2.isDirty()&&(_5==null||_5<=_2.getVisibleWidth())&&_2.getHeight()<_2.getVisibleHeight()&&_6<=_2.getVisibleHeight())
+{this.logDebug("not applying height: "+_6+" to overflowed Canvas with height: "+_2.getVisibleHeight(),"canvasItemSizing");_6=null}
+if(!isc.isA.Number(_5))_5=null;if(!isc.isA.Number(_6))_6=null;this.$602(_5,_6);this.logDebug("this.$8t: "+this.$8t+", policy size: "+[_3,_4]+", specifiedSize: "+[_7,_2.$po||this.height]+", Resized Canvas to: "+[_5,_6],"canvasItemSizing");if(!_2.isDrawn()){var _8=this.containerWidget.getDrawnState();if(_8==isc.Canvas.COMPLETE||_8==isc.Canvas.HANDLE_DRAWN){isc.Canvas.moveOffscreen(_2);_2.draw()}}else _2.redrawIfDirty("CanvasItem getting new size");var _9=_2.getVisibleWidth(),_10=_2.getVisibleHeight();this.logDebug("visible size of embedded Canvas: "+[_9,_10],"canvasItemSizing");if(!_1)this.minHeight=null;else this.minHeight=_10>_2.getHeight()?_10:null;if(_10>_4)return true}
+,isc.A.$602=function isc_CanvasItem__setCanvasSize(_1,_2){this.$181=true;this.canvas.resizeTo(_1,_2);this.$181=false}
+,isc.A.getElementHTML=function isc_CanvasItem_getElementHTML(_1){var _2=this.canvas;if(_2&&this.$68y()){return _2.getPrintHTML(this.containerWidget.currentPrintProperties)}
+this.sizeCanvas();this.$173(this.getGlobalTabIndex());return"<SPAN style='padding:0px;margin:0px;' ID='"+this.getID()+"$18z'>"+isc.Canvas.spacerHTML(_2.getVisibleWidth(),_2.getVisibleHeight())+"</SPAN>"}
+,isc.A.$159=function isc_CanvasItem__applyHandlersToElement(){this.$16c()}
+,isc.A.getHeight=function isc_CanvasItem_getHeight(_1){var _2=this.canvas;if(_1){var _3=_2.getVisibleHeight();if(_3>_2.getHeight())return _3}
+return this.canvas.$po||this.height||this.canvas.defaultHeight}
+,isc.A.getWidth=function isc_CanvasItem_getWidth(){return this.canvas.$pn||this.width||this.canvas.defaultWidth}
+,isc.A.canvasResized=function isc_CanvasItem_canvasResized(_1,_2,_3){if(this.$181)return;var _4=this.canvas,_5=_4.getWidth(),_6=_4.getHeight();if(!_4.isDrawn())return;if(_3!="overflow"){if(_1!=null&&_1!=0)_4.$pn=_5;if(_2!=null&&_2!=0)_4.$po=_6}
+this.logDebug("canvas resized: new specified sizes: "+[_5,_6],"canvasItemSizing");this.redraw()}
+,isc.A.shouldDisableCanvas=function isc_CanvasItem_shouldDisableCanvas(){return this.disabled==true||this.isReadOnly()}
+,isc.A.updateDisabled=function isc_CanvasItem_updateDisabled(){this.Super("updateDisabled",arguments);this.canvas.setDisabled(this.shouldDisableCanvas())}
+,isc.A.updateCanEdit=function isc_CanvasItem_updateCanEdit(){this.Super("updateCanEdit",arguments);this.canvas.setDisabled(this.shouldDisableCanvas())}
+,isc.A.setElementReadOnly=function isc_CanvasItem_setElementReadOnly(){this.$176(!this.isReadOnly()&&!this.isDisabled())}
+,isc.A.$173=function isc_CanvasItem__setElementTabIndex(_1){this.$182(_1)}
+,isc.A.$89y=function isc_CanvasItem__getCanvasTabDescendents(_1,_2){if(_1.canvasItem!=null&&_1.canvasItem!=this)return;_2.add(_1);var _3=_1.members||_1.children||{};for(var i=0;i<_3.length;i++){this.$89y(_3[i],_2)}}
+,isc.A.$182=function isc_CanvasItem__setCanvasTabIndex(_1){var _2=this.canvas,_3=[];if(_2)this.$89y(_2,_3);for(var i=0;i<_3.length;i++){_2=_3[i];_2.$rp();_2.$vk(_1,false);_1+=_2==this.canvas?1:_2.getTabIndexSpan()}}
+,isc.A.focusInItem=function isc_CanvasItem_focusInItem(_1){if(this.canvas){var _2=[],_3;this.$89y(this,_2);var _4=_1==false?_2.length-1:0,_5=_1==false?0:_2.length-1,_6=_1==false?-1:1;for(var i=_4;_1?i>=_5:i<=_5;i+=_6){if(_2[i].$kk()){_3=_2[i];break}}
+if(_3){if(_1!=null){this.canvas.focusAtEnd(_1)}else{this.canvas.focus()}}}
+return this.Super("focusInItem",arguments)}
+,isc.A.blurItem=function isc_CanvasItem_blurItem(){if(this.canvas)this.canvas.blur();return this.Super("blurItem",arguments)}
+,isc.A.canvasFocusChanged=function isc_CanvasItem_canvasFocusChanged(){if(this.canvas.hasFocus){this.form.setFocusItem(this);this.elementFocus()}else this.elementBlur()}
+,isc.A.nestedFormSetFocusItem=function isc_CanvasItem_nestedFormSetFocusItem(){this.form.setFocusItem(this)}
+,isc.A.hasAdvancedCriteria=function isc_CanvasItem_hasAdvancedCriteria(){if(this.editCriteriaInInnerForm&&isc.isA.DynamicForm(this.canvas))return true;return this.Super("hasAdvancedCriteria",arguments)}
+,isc.A.canEditCriterion=function isc_CanvasItem_canEditCriterion(_1){if(this.editCriteriaInInnerForm&&isc.isA.DynamicForm(this.canvas)){if(_1.operator!=this.canvas.operator)return false;for(var i=0;i<_1.criteria;i++){var _3=this.canvas.getItems(),_4;for(var _5=0;_5<_3.length;_5++){if(_3[_5].canEditCriterion(_1.criteria[i])){_4=true;break}}
+if(!_4)return false}
+return true}
+return this.Super("canEditCriterion",arguments)}
+,isc.A.getCriterion=function isc_CanvasItem_getCriterion(){if(this.editCriteriaInInnerForm&&isc.isA.DynamicForm(this.canvas)){return this.canvas.getValuesAsAdvancedCriteria()}else return this.Super("getCriterion",arguments)}
+,isc.A.setCriterion=function isc_CanvasItem_setCriterion(_1){if(this.editCriteriaInInnerForm&&isc.isA.DynamicForm(this.canvas)){this.canvas.setValuesAsCriteria(_1,true)}else return this.Super("setCriterion",arguments)}
+,isc.A.setPrompt=function isc_CanvasItem_setPrompt(_1){this.Super("setPrompt",_1);if(this.applyPromptToCanvas&&this.canvas){if(isc.isA.Canvas(this.canavs))this.canvas.setPrompt(_1);else this.canvas.prompt=_1}}
+);isc.B._maxIndex=isc.C+35;isc.CanvasItem.registerStringMethods({createCanvas:"form,item",showValue:"displayValue,dataValue,form,item"});isc.ClassFactory.defineClass("TextItem","FormItem");isc.A=isc.TextItem;isc.A.DEFAULT="default";isc.A.UPPER="upper";isc.A.LOWER="lower";isc.A.$713={'0':{charFilter:"[0-9+\\-]"},'#':{charFilter:"[0-9]"},'9':{charFilter:"[0-9 ]"},'L':{charFilter:"[A-Za-z]"},'?':{charFilter:"[A-Za-z ]"},'a':{charFilter:"[0-9A-Za-z]"},'A':{charFilter:"[0-9A-Za-z]"},'C':{charFilter:"."}};isc.A=isc.TextItem.getPrototype();isc.A.width=150;isc.A.height=isc.Browser.isSafari?22:19;isc.A.textBoxStyle="textItem";isc.A.length=null;isc.A.canAutoComplete=true;isc.A.$183="TEXT";isc.A.$125=true;isc.A.$15i=true;isc.A.emptyStringValue=null;isc.A.redrawOnShowIcon=false;isc.A.clipValue=true;isc.A.$16b={onmousedown:(isc.Browser.isIE?function(){var _1=this,_2=isc.DynamicForm.$mu(_1),_3=_2.item;if(_3)_3.$179()}:isc.Browser.isTouch&&!isc.Browser.isAndroid?function(_1){var _2=isc.EventHandler;_2.DOMevent=_1;var _3=_2.getMouseEventProperties(_1);return _2.handleMouseDown(_1,_3)}:null),onmouseup:(isc.Browser.isTouch&&!isc.Browser.isAndroid?function(_1){var _2=isc.EventHandler;_2.DOMevent=_1;var _3=_2.getMouseEventProperties(_1);return _2.handleMouseUp(_1,_3)}:null)};isc.A.printFullText=false;isc.A.saveOnEnter=true;isc.A=isc.TextItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$186=[,"<INPUT TYPE=",," NAME='",,"' ID='",,"' handleNativeEvents=false"];isc.A.$14f=" TABINDEX=";isc.A.$oa=">";isc.A.$pi=" DISABLED ";isc.A.$187="native";isc.A.$188=" AUTOCOMPLETE=OFF ";isc.A.$14e=" ACCESSKEY=";isc.A.$19a=[" CLASS='",,"' STYLE='",,,,,,,,,,,,,,,,(isc.Browser.isMoz?"-moz-user-focus:":null),,"' "];isc.A.$93="WIDTH:";isc.A.$38="px;";isc.A.$92="HEIGHT:";isc.A.$14c="text-align:";isc.A.$39=";";isc.A.$19b="normal;";isc.A.$19c="ignore;";isc.A.$78v="margin-top:-1px;margin-bottom:-1px;";isc.A.applyStaticTypeFormat=false;isc.A.characterCasing=isc.TextItem.DEFAULT;isc.A.formatOnFocusChange=false;isc.A.maskPadChar=" ";isc.A.maskPromptChar="_";isc.B.push(isc.A.$43h=function isc_TextItem__handleCutPaste(){if(this.changeOnKeypress)this.$18c()}
+,isc.A.$429=function isc_TextItem__willHandleInput(){return!isc.Browser.isIE}
+,isc.A.getTextBoxCellCSS=function isc_TextItem_getTextBoxCellCSS(){return this.$136}
+,isc.A.setElementReadOnly=function isc_TextItem_setElementReadOnly(_1){this.$86y(_1)}
+,isc.A.getElementHTML=function isc_TextItem_getElementHTML(_1,_2){var _3=this.$xq(_2);if(this.showValueIconOnly)return _3;var _4;if(this.$68y()&&this.printFullText){_4=isc.StringBuffer.concat("<SPAN ",this.getElementStyleHTML(),">",_2==null?" ":_2.asHTML(),"</SPAN>")}else{var _5=this.$186,_6=this.form,_7=_6.getID(),_8=this.getItemID();_5[0]=_3;_5[2]=this.$183;_5[4]=this.getElementName();_5[6]=this.getDataElementId();_5[8]=this.$155();if(isc.Browser.isMoz||isc.Browser.isSafari){if(this.getBrowserSpellCheck())_5[_5.length]=" spellcheck=true";else _5[_5.length]=" spellcheck=false"}
+if(isc.Browser.isSafari){if(this.browserAutoCapitalize==false){_5[_5.length]=" autocapitalize=off"}
+if(this.browserAutoCorrect==false){_5[_5.length]=" autocorrect=off"}
+if(this.browserInputType!=null){var _9=this.browserInputTypeMap[this.browserInputType];if(_9==null)_9=this.browserInputType;_5[_5.length]=" type='"+_9+"'"}}
+if(this.$429){_5[_5.length]=" ONINPUT='"
+_5[_5.length]=this.getID()
+_5[_5.length]=".$43g()'"}
+if(this.isDisabled()||(this.$183=="FILE"&&this.isReadOnly())){_5[_5.length]=this.$pi}
+if(this.isInactiveHTML()||this.isReadOnly()){_5[_5.length]=" READONLY=TRUE"}
+if(this.isInactiveHTML()&&_1!=null&&_1!=isc.emptyString){_5[_5.length]=" value='"+isc.makeXMLSafe(_1)+"'"}
+if(this.$17h()!=this.$187){_5[_5.length]=this.$188}
+_5[_5.length]=this.getElementStyleHTML();var _10=this.$154();if(_10!=null){var _11=_5.length;_5[_11]=this.$14f;isc.$bk(_5,_10,_11+1,5)}
+if(this.showTitle==false&&this.accessKey!=null){_5[_5.length]=this.$14e;_5[_5.length]=this.accessKey}
+_5[_5.length]=this.$oa;_4=_5.join(isc.emptyString);_5.length=8}
+return _4}
+,isc.A.$143=function isc_TextItem__sizeTextBoxAsContentBox(){return isc.Browser.isStrict}
+,isc.A.$12x=function isc_TextItem__nativeElementBlur(_1,_2){if(this.form&&!this.form.$10u){this.form.elementChanged(this)}
+var _3=this.Super("$12x",arguments);if(this.formatOnFocusChange||this.mask!=null||this.$84f==null||this.$84f!=this.getEnteredValue())
+{this.refreshDisplayValue()}
+if(this.showHintInField){var _4;var _5=this.getElementValue();if(_5===_4||_5==null||isc.is.emptyString(_5)){this.$66t()}}
+if(this.$85u!=null){isc.Timer.clear(this.$85u);this.$85u=null}
+return _3}
+,isc.A.refreshDisplayValue=function isc_TextItem_refreshDisplayValue(){var _1=this.getValue();if(this.mapValueToDisplay){_1=this.mapValueToDisplay(_1)}
+if(!this.hasFocus&&this.showHintInField&&(_1==null||_1=="")){this.$66t()}else{this.setElementValue(_1)}}
+,isc.A.getElementStyleHTML=function isc_TextItem_getElementStyleHTML(){var _1=this.$68y()&&this.printFullText;var _2=this.$19a,_3=this.getTextBoxWidth(),_4=this.getTextBoxHeight(),_5=this.getTextBoxStyle();_2[1]=_5;if(isc.isA.Number(_3)){_2[3]=this.$93;isc.$bk(_2,_3,4,4);_2[8]=this.$38}else{_2[3]=_2[4]=_2[5]=_2[6]=_2[7]=_2[8]=null}
+if(isc.isA.Number(_4)){_2[9]=this.$92;isc.$bk(_2,_4,10,4);_2[14]=this.$38}else{_2[9]=_2[10]=_2[11]=_2[12]=_2[13]=_2[14]=null}
+if(this.textAlign){_2[15]=this.$14c;_2[16]=this.textAlign;_2[17]=this.$39}else{_2[15]=_2[16]=_2[17]=null}
+if(isc.Browser.isIE){_2[18]=_1?null:this.$78v}
+if(isc.Browser.isMoz&&!_1){_2[19]=(this.$154()>0?this.$19b:this.$19c)}
+return _2.join(isc.emptyString)}
+,isc.A.getEnteredValue=function isc_TextItem_getEnteredValue(){return this.getElementValue()}
+,isc.A.mapValueToDisplay=function isc_TextItem_mapValueToDisplay(_1){if(this.mask){var x=this.$715();if(!this.hasFocus)
+x=this.$714(_1);return x}
+var _3=isc.FormItem.$b4.mapValueToDisplay.call(this,_1);if(_3==null)return isc.emptyString;return _3}
+,isc.A.mapDisplayToValue=function isc_TextItem_mapDisplayToValue(_1){var _2;if(this.mask){_2=this.$716(_1)}else{_2=this.$17d(_1)}
+_2=this.$79d(_2);if(isc.is.emptyString(_2))_2=this.emptyStringValue;return _2}
+,isc.A.saveValue=function isc_TextItem_saveValue(_1,_2){if(this.mask)this.$714(_1);this.Super("saveValue",arguments)}
+,isc.A.setValue=function isc_TextItem_setValue(_1,_2,_3,_4){this.$66s();var _5;if(_1!==_5&&(_1==null||isc.is.emptyString(_1)))
+this.emptyStringValue=_1;if(_1!==_5&&_1!=null&&this.characterCasing!=isc.TextItem.DEFAULT){if(this.characterCasing==isc.TextItem.UPPER){_1=_1.toUpperCase()}else if(this.characterCasing==isc.TextItem.LOWER){_1=_1.toLowerCase()}}
+_1=this.invokeSuper(isc.TextItem,"setValue",_1,_2,_3,_4);if(!this.hasFocus&&this.showHint&&this.showHintInField&&this.getHint()){if(_1===_5||_1==null||isc.is.emptyString(_1)){this.$66t()}}
+return _1}
+,isc.A.getCriteriaFieldName=function isc_TextItem_getCriteriaFieldName(){if(this.criteriaField)return this.criteriaField;if(this.displayField)return this.displayField;return this.Super("getCriteriaFieldName",arguments)}
+,isc.A.$884=function isc_TextItem__shouldSelectOnFocus(){var _1=this.selectOnFocus;if(_1==null&&this.form)_1=this.form.selectOnFocus;if(_1){var _2=isc.EH.isMouseEvent();if(_2)_1=false}
+return _1}
+,isc.A.$12v=function isc_TextItem__nativeElementFocus(_1,_2){var _3=this.$92k;var _4=this.Super("$12v",arguments);this.$66s();if(this.formatOnFocusChange)this.refreshDisplayValue()
+if(this.mask){this.$717(false);var _5=0;var _6=this.$718;var _7=!_3&&this.$884();if(!_7){_5=this.$719();var _8=this.getValue();if(_5==0&&_8!=null&&_8.length>0){_5=this.getSelectionRange()[0]}
+_6=_5}
+this.$85u=this.delayCall("$85v",[_5,_6])}else{var _7=!_3&&this.$884();var _8=this.getEnteredValue();if(_7){if(_8!=null){this.$85u=this.delayCall("$85w")}}
+this.$84f=_8}
+return _4}
+,isc.A.$85v=function isc_TextItem__delayed_setSelection(_1,_2){this.$85u=null;if(!this.$820())return;this.$72a(_1,_2)}
+,isc.A.$85w=function isc_TextItem__delayed_selectValue(){this.$85u=null;if(!this.$820())return;this.selectValue()}
+,isc.A.setKeyPressFilter=function isc_TextItem_setKeyPressFilter(_1){if(this.mask){this.logWarn("setKeyPressFilter() ignored because mask is enabled");return}
+this.keyPressFilter=_1;this.$66y=null;if(this.keyPressFilter){this.$66y=new RegExp(this.keyPressFilter)}}
+,isc.A.init=function isc_TextItem_init(){this.Super("init",arguments);if(this.mask){if((isc.ComboBoxItem&&isc.isA.ComboBoxItem(this))||(isc.SpinnerItem&&isc.isA.SpinnerItem(this)))
+{this.logWarn("item.mask is unsupported for this FormItem type. "+"This item has mask specified as '"+this.mask+"' - ignoring.");this.mask=null}else{this.$72b();if(this.keyPressFilter){this.logWarn("init: keyPressFilter ignored because mask is enabled")}}}else if(this.keyPressFilter){this.$66y=new RegExp(this.keyPressFilter)}}
+,isc.A.handleKeyPress=function isc_TextItem_handleKeyPress(_1,_2){if(this.Super("handleKeyPress",arguments)==false)
+return false;if(this.isReadOnly())return true;if(isc.EventHandler.ctrlKeyDown()||isc.EventHandler.altKeyDown()||isc.EH.metaKeyDown()){return true}
+if((!this.characterCasing||this.characterCasing==isc.TextItem.DEFAULT)&&!this.$66y&&!this.mask)
+{return true}
+var _3=_1.keyName,_4=_1.characterValue;if(this.mask){var _5=this.$72c();var _6=isc.Browser.isSafari;var _7=_5.begin;if(_3=="Backspace"||_3=="Delete"){if((_5.begin-_5.end)!=0||(_6&&this.$72d))
+{if(isc.Browser.isSafari&&this.$72d){_5=this.$72d;this.$72d=null}
+if(this.maskOverwriteMode){this.$72e(_5.begin,_5.end)}else{var _8=_5.end-_5.begin;this.$72f(_5.begin,_8)}
+this.$717(true);this.$73t(_5.begin,0)}else{if(_3=="Backspace"){var _9=((_6&&_5.begin==_5.end)?_7:_7-1);if(_9>=0){if(this.maskOverwriteMode){while(!this.$72i[_9]&&_9>=0)_9--;this.$72l[_9]=this.maskPromptChar}else{this.$72f(_9)}
+this.$717(true);this.$73t(_9,-1)}}else{if(this.maskOverwriteMode){if(_7==this.$72h(_7-1)){this.$72l[_7]=this.maskPromptChar}}else{this.$72f(_7)}
+this.$717(true);this.$73t(_7,0)}}
+return false}
+if(this.$660(_4)&&((_5.begin-_5.end)!=0||(_6&&this.$72d)))
+{if(isc.Browser.isSafari&&this.$72d){_5=this.$72d;this.$72d=null}
+if(this.maskOverwriteMode){this.$72e(_5.begin,_5.end)}else{var _8=_5.end-_5.begin;this.$72f(_5.begin,_8)}}
+if(_6&&(_5.begin-_5.end)!=0&&!this.$660(_4))
+{this.$72d=_5}else{this.$72d=null}
+if(_3=="Escape"){this.$72e(0,this.$718)
+this.$717(true);this.$72a(this.$72g);return false}}
+if((this.mask&&!this.$660(_4))||(!this.mask&&((!this.$66y&&!this.$66z(_4))||(this.$66y&&!this.$660(_4)))))
+{return true}
+var c=String.fromCharCode(_4);if(this.mask){var p=this.$72h(_7-1);if(p<this.$718){var _12=this.$72i[p];if(_12){if(_12.casing){c=this.$72j(c,_12.casing)}
+if(_12.filter.test(c)){if(!this.maskOverwriteMode)this.$72k(p);this.$72l[p]=c;var _13=p;if(this.$717(true)){_13=this.$72h(p)}
+this.$72a(_13)}}}
+return false}
+var _14=c;if(!this.mask)_14=this.$72j(c,this.characterCasing);if(c==_14&&!this.$66y)return true;if(this.$66y){if(this.$660(_4)&&!this.$66y.test(_14)){return false}}
+if(c==_14)return true;var _15=this.getValue()||"";var _5=this.getSelectionRange();if((_5[0]-_5[1])!=0){_15=_15.substring(0,_5[0])+_14+_15.substring(_5[1]+1)}else{_15=_15.substring(0,_5[0])+_14+_15.substring(_5[1])}
+if(this.changeOnKeypress){this.setElementValue(_15);this.updateValue()}else{this.setValue(_15)}
+this.setSelectionRange(_5[0]+1,_5[0]+1);return false}
+,isc.A.$660=function isc_TextItem__isTypableCharacter(_1){return((_1>=32&&_1<=126)||_1>127)}
+,isc.A.$66z=function isc_TextItem__isAlphaCharacter(_1){return(_1>=65&&_1<=90)||(_1>=97&&_1<=122)}
+,isc.A.$72j=function isc_TextItem__mapCharacterCase(_1,_2){if(_2==isc.TextItem.UPPER){_1=_1.toUpperCase()}else if(_2==isc.TextItem.LOWER){_1=_1.toLowerCase()}
+return _1}
+,isc.A.setMask=function isc_TextItem_setMask(_1){if(isc.isA.ComboBoxItem(this)||isc.isA.SpinnerItem(this)){return}
+this.mask=_1;this.$72b();if(this.keyPressFilter){this.$66y=null;this.logWarn("setMask: keyPressFilter ignored because mask is enabled")}
+this.setValue("")}
+,isc.A.$72b=function isc_TextItem__parseMask(){this.$72i=[];this.$72l=[];this.$718=0;var _1=null;var _2=false;var _3=false;var _4="";var _5=this.mask.split("");for(var i=0;i<_5.length;i++){var c=_5[i];if(c=="<"){_1=(_1==isc.TextItem.LOWER?null:isc.TextItem.LOWER)}else if(c==">"){_1=(_1==isc.TextItem.UPPER?null:isc.TextItem.UPPER)}else{if(!_2&&c=="\\"){_2=true}else if(_2){this.$72m(c,_1);_2=false}else{if(!_3&&c=="["){_3=true;_4+=c}else if(_3&&c=="]"){_3=false;_4+=c;this.$72i.push({filter:new RegExp(_4),casing:_1});if(this.$72g==null){this.$72g=this.$72i.length-1}
+this.$72l.push(this.maskPromptChar);this.$718++;_4=""}else if(_3){_4+=c}else{this.$72n(c,_1)}}}}}
+,isc.A.$72m=function isc_TextItem__addLiteralToMask(_1,_2){this.$72i.push(null);this.$72l.push(_1);this.$718++}
+,isc.A.$72n=function isc_TextItem__addUnknownToMask(_1,_2){var _3=isc.TextItem.$713[_1];if(_3){this.$72i.push({filter:new RegExp(_3.charFilter),casing:_2});if(this.$72g==null){this.$72g=this.$72i.length-1}
+this.$72l.push(this.maskPromptChar)}else{this.$72i.push(null);this.$72l.push(_1)}
+this.$718++}
+,isc.A.$72c=function isc_TextItem__getSelection(){var _1=this.getSelectionRange();if(_1==null)_1=[0,0];return{begin:_1[0],end:_1[1]}}
+,isc.A.$72a=function isc_TextItem__setSelection(_1,_2){if(this.hasFocus){_2=(isc.isA.Number(_2)?_2:_1);this.setSelectionRange(_1,_2)}}
+,isc.A.$72h=function isc_TextItem__getNextEntryPosition(_1){while(++_1<this.$718){if(this.$72i[_1])return _1}
+return this.$718}
+,isc.A.$719=function isc_TextItem__getEndPosition(){var _1=0;for(var i=this.$718-1;i>=0;i--){if(this.$72i[i]){if(this.$72l[i]==this.maskPromptChar)
+_1=i;else
+break}}
+return _1}
+,isc.A.$714=function isc_TextItem__maskValue(_1){if(_1==null)_1="";if(!isc.isA.String(_1))_1=_1.toString();this.$72e(0,this.$718);var _2=-1;if(this.maskSaveLiterals){for(var i=0,_4=0;i<_1.length;i++){if(this.$72i[i]){var c=_1.charAt(i);if(c==" "){if(!this.hasFocus)
+this.$72l[i]=c}else if(this.$72i[i].filter.test(c)){this.$72l[i]=c;_2=i}}}}else{for(var i=0,_4=0;i<this.$718;i++){if(this.$72i[i]){while(_4<_1.length){var c=_1.charAt(_4++);if(c==" "){if(!this.hasFocus)this.$72l[i]=c;break}else if(this.$72i[i].filter.test(c)){this.$72l[i]=c;_2=i;break}}
+if(_4>_1.length)break}}}
+_1=this.$715();if(!this.hasFocus){if(_2>=0){for(var i=_2+1;i<this.$718;i++){if(this.$72i[i])break;_2++}}
+_1=_1.substring(0,_2+1)}
+return _1}
+,isc.A.$716=function isc_TextItem__unmaskValue(_1){if(_1==null)_1="";var _2=false;var _3=-1;var _4="";for(var i=0,_6=0;i<_1.length;i++){var c=_1.charAt(i);if(this.$72i[i]){if(c!=this.maskPromptChar&&this.$72i[i].filter.test(c)){_4+=c;_2=true;_3=_6++}else{_4+=this.maskPadChar;_6++}}else if(this.maskSaveLiterals){_4+=c;_3=_6++}}
+if(!_2){_4=""}else{_4=_4.substring(0,_3+1)}
+return _4}
+,isc.A.$715=function isc_TextItem__getMaskBuffer(){if(this.$72l==null)return"";return this.$72l.join('')}
+,isc.A.$72e=function isc_TextItem__clearMaskBuffer(_1,_2){for(var i=_1;i<_2&&i<this.$718;i++){if(this.$72i[i])this.$72l[i]=this.maskPromptChar}}
+,isc.A.$717=function isc_TextItem__saveMaskBuffer(_1){var _2=this.$715();this.setElementValue(_2);if(_1&&this.changeOnKeypress){var _3=this.$716(_2);var _4=this.handleChange(_3,this._value);if(this.destroyed)return;_3=this.$17n;this.updateAppearance(_3);this.saveValue(_3);this.handleChanged(_3);return _4}
+return true}
+,isc.A.$73t=function isc_TextItem__positionCaret(_1,_2){if(_2<0){while(!this.$72i[_1]&&_1>=0)_1--}else{while(!this.$72i[_1]&&_1<this.$718)_1++}
+this.$72a(_1)}
+,isc.A.$72f=function isc_TextItem__shiftMaskBufferLeft(_1,_2){if(!_2)_2=1;while(!this.$72i[_1]&&_1>=0)_1--;for(var i=_1,_4=i+_2-1;i<this.$718;i++,_4=j){if(this.$72i[i]){this.$72l[i]=this.maskPromptChar;var j=this.$72h(_4++);var _6=this.$72i[i];var c=this.$72l[j];if(j<this.$718&&_6.filter.test(c)){if(_6.casing){c=this.$72j(c,_6.casing)}
+this.$72l[i]=c}else{while(i<j){if(this.$72i[i])this.$72l[i]=this.maskPromptChar;i++}
+break}}}}
+,isc.A.$72k=function isc_TextItem__shiftMaskBufferRight(_1){for(var i=_1,c=this.maskPromptChar;i<this.$718;i++){var _4=this.$72i[i];if(_4){if(_4.casing){c=this.$72j(c,_4.casing)}
+var j=this.$72h(i);var t=this.$72l[i];this.$72l[i]=c;if(j<this.$718&&this.$72i[j].filter.test(t)){c=t}else{break}}}}
+);isc.B._maxIndex=isc.C+41;isc.ClassFactory.defineClass("BlurbItem","FormItem");isc.A=isc.BlurbItem.getPrototype();isc.A.shouldSaveValue=false;isc.A.height=null;isc.A.showTitle=false;isc.A.colSpan="*";isc.A.startRow=true;isc.A.endRow=true;isc.A.textBoxStyle="staticTextItem";isc.A.emptyDisplayValue=" ";isc.ClassFactory.defineClass("ButtonItem","CanvasItem");isc.A=isc.ButtonItem.getPrototype();isc.A.canFocus=true;isc.A.shouldSaveValue=false;isc.A.height=null;isc.A.width=null;isc.A.titleStyle=null;isc.A.showTitle=false;isc.A.startRow=true;isc.A.endRow=true;isc.A.buttonConstructor=isc.Button;isc.A.autoFit=true;isc.A.buttonDefaults={getTitle:function(){return this.canvasItem.getTitle()}};isc.A.autoDestroy=true;isc.A=isc.ButtonItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$19d={width:true,height:true,icon:true};isc.B.push(isc.A.getTitleHTML=function isc_ButtonItem_getTitleHTML(){return this.getTitle()}
+,isc.A.setTitle=function isc_ButtonItem_setTitle(_1){this.title=_1;if(this.canvas)this.canvas.setTitle(_1)}
+,isc.A.$18y=function isc_ButtonItem__createCanvas(){var _1={canFocus:this.$kk(),disabled:this.isDisabled(),width:this.width};if(this.height!=null)_1.height=this.height;if(this.icon)_1.icon=this.icon;if(this.titleStyle)_1.titleStyle=this.titleStyle;if(this.baseStyle)_1.baseStyle=this.baseStyle;if(this.autoFit!=null)_1.autoFit=this.autoFit;this.canvas=this.button=this.createAutoChild("button",_1,this.buttonConstructor);this.Super("$18y",arguments)}
+,isc.A.$602=function isc_ButtonItem__setCanvasSize(_1,_2,_3,_4){if(_1==null&&_2==null)return;return this.invokeSuper(isc.ButtonItem,"$602",_1,_2,_3,_4)}
+,isc.A.propertyChanged=function isc_ButtonItem_propertyChanged(_1,_2){if(this.canvas!=null&&this.$19d[_1]){this.canvas.setProperty(_1,_2)}}
+,isc.A.handleClick=function isc_ButtonItem_handleClick(){if(this.editingOn){if(isc.VisualBuilder&&isc.VisualBuilder.titleEditEvent=="click")this.editClick();return false}
+return this.Super("handleClick",arguments)}
+,isc.A.handleDoubleClick=function isc_ButtonItem_handleDoubleClick(){if(this.editingOn){if(isc.VisualBuilder&&isc.VisualBuilder.titleEditEvent=="doubleClick")this.editClick();return false}
+return this.Super("handleDoubleClick",arguments)}
+,isc.A.$85m=function isc_ButtonItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+8;if(isc.ListGrid){isc.ClassFactory.defineInterface("PickList");isc.ClassFactory.defineClass("PickListMenu","ScrollingMenu");isc.A=isc.PickListMenu;isc.A.$51t={};isc.A.pickListCacheLimit=50;isc.A=isc.PickListMenu.getPrototype();isc.A.useAllDataSourceFields=false;isc.A.tabIndex=-1;isc.A.canResizeFields=false;isc.A.canFreezeFields=false;isc.A.styleName="pickListMenu";isc.A.bodyStyleName="pickListMenuBody";isc.A.normalCellHeight=16;isc.A=isc.PickListMenu.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$19e="background-color:";isc.A.$19f="color:";isc.B.push(isc.A.getValueIcon=function isc_PickListMenu_getValueIcon(_1,_2,_3){var _4=this.formItem;var _5=_4&&!_4.suppressValueIcons&&(_4.valueIcons!=null||_4.getValueIcon!=null);if(_5){var _6=_4.getValueFieldName(),_7=_4.valueIconField||_4.getDisplayFieldName()||_6;if(this.getFieldName(_1)==_7){return _4.$144(_3[_6])}}
+return this.Super("getValueIcon",arguments)}
+,isc.A.recordClick=function isc_PickListMenu_recordClick(_1,_2,_3,_4,_5,_6,_7){if(!this.allowMultiSelect)this.hide();if(_2!=null)this.itemClick(_2)}
+,isc.A.headerClick=function isc_PickListMenu_headerClick(_1,_2){var _3=this.Super("headerClick",arguments);var _4=this.getField(_1);if(this.isCheckboxField(_4)&&this.allowMultiSelect){this.multiSelectChanged()}
+return _3}
+,isc.A.multiSelectChanged=function isc_PickListMenu_multiSelectChanged(){var _1=this.formItem,_2=_1.getValueFieldName(),_3=this.getSelection(),_4=true,_5=[];for(var i=0;i<_3.length;i++){_4=false;var _7=_3[i];_5.add(_7[_2])}
+_1.pickValue(_4?null:_5)}
+,isc.A.itemClick=function isc_PickListMenu_itemClick(_1){if(this.allowMultiSelect){this.multiSelectChanged()}else{var _2=this.formItem,_3=_2.getValueFieldName();var _4=_1[_3];_2.pickValue(_4)}}
+,isc.A.hide=function isc_PickListMenu_hide(_1,_2,_3,_4){var _5=this.isVisible()&&this.isDrawn();this.invokeSuper(isc.PickListMenu,"hide",_1,_2,_3,_4);if(!this.formItem)return;if(_5&&this.showModal)this.formItem.focusInItem();this.formItem.$19g=null;if(_5)this.formItem.$19h();delete this.formItem.$19i}
+,isc.A.show=function isc_PickListMenu_show(){var _1=this.isVisible()&&this.isDrawn();this.bringToFront();this.Super("show",arguments);if(!_1){this.formItem.$19j()}}
+,isc.A.showClickMask=function isc_PickListMenu_showClickMask(){if(!this.clickMaskUp(this.getID())){var _1=this.Super("showClickMask",arguments);if(this.formItem){var _2=this.formItem.form,_3=isc.EH.clickMaskRegistry.find("ID",_1);if(_3.$li)_3.$li=null}}}
+,isc.A.getCellCSSText=function isc_PickListMenu_getCellCSSText(_1,_2,_3){if(_1==this.selection.getSelectedRecord()){var _4=[];if(this.hiliteColor!=null)
+_4[0]=this.$19e
+_4[1]=this.hiliteColor
+_4[2]=isc.$19k;if(this.hiliteTextColor!=null)
+_4[3]=this.$19f;_4[4]=this.hiliteTextColor;_4[5]=isc.semi;return _4.join(isc.emptyString)}}
+,isc.A.keyDown=function isc_PickListMenu_keyDown(){var _1=isc.EH.lastEvent.keyName;if(_1=="Tab"){this.hide();return false}}
+,isc.A.$315=function isc_PickListMenu__formatCellValue(_1,_2,_3,_4,_5){if(this.formItem==null)return this.Super("$315",arguments);var _6=this.getFieldName(_5);_1=this.formItem.formatPickListValue(_1,_6,_2);return this.Super("$315",[_1,_2,_3,_4,_5])}
+,isc.A.bodyKeyPress=function isc_PickListMenu_bodyKeyPress(_1,_2){var _3=isc.EH.lastEvent.keyName;if(isc.Browser.isSafari){if(_3=="Tab"){this.hide();return false}}
+var _4=isc.EH.getKeyEventCharacterValue();if(_4!=null){var _5=this.formItem.getAllLocalOptions();if(isc.isAn.Array(_5)&&_5.length>1){var _6=String.fromCharCode(_4),_6=_6.toLowerCase(),_7=this.formItem,_8=_7.getValueFieldName(),_9=_5.indexOf(this.getSelectedRecord()),_10=_9<(_5.length-1)?_9+1:0;while(_10!=_9){if(_9<0)_9=0;var _11=_5[_10][_8];_11=_7.mapValueToDisplay(_11);if(isc.isA.String(_11)&&_11.length>0&&_11.charAt(0).toLowerCase()==_6){this.scrollRecordIntoView(_10);this.$88(_10);return}
+_10+=1;if(_10>=_5.length)_10=0}}}
+if(this.getFocusRow()==null&&_3=="Enter"){this.cancel();return false}
+return this.Super("bodyKeyPress",arguments)}
+,isc.A.dataChanged=function isc_PickListMenu_dataChanged(_1,_2,_3,_4){var _5=this.data;if(!_5)return;var _5=this.requestVisibleRows();if(_5&&Array.isLoading(_5[0])){return}
+this.Super("dataChanged",arguments);var _6=this.formItem;if(_2&&this.getSelectedRecord()==_2&&_6){var _7=this.data.indexOf(_2),_8=_7==-1?null:this.data.get(_7);if(_8){var _9=_6.getValueFieldName();_6.setValue(_8[_9])}else{_6.clearValue()}}}
+);isc.B._maxIndex=isc.C+13;isc.PickList.addInterfaceProperties({pickListHeight:300,emptyPickListHeight:100,pickListMaxWidth:400,pickListBaseStyle:"pickListCell",pickListAnimationTime:200,fetchDelay:200,pickListCellHeight:16,pickListHeaderHeight:22,allowMultiSelect:true});isc.PickList.addInterfaceMethods({showPickList:function(_1,_2){this.$19g=true;if(!this.pickList)this.makePickList(_1,null,_2);else this.setUpPickList(_1,_2);if(!_1&&(!this.pickList.isDrawn()||!this.pickList.isVisible())){this.$19l()}},$19l:function(){var _1=this.pickList;if(!this.isDrawn()||(this.shouldHideEmptyPickList()&&_1.getTotalRows()<1)){return}
+this.placePickList();if(!_1.isDrawn()||!_1.isVisible()){if(this.animatePickList)this.pickList.animateShow("wipe",null,this.pickListAnimationTime);else
+this.pickList.show()}},fetchData:function(_1,_2,_3){if(this.getOptionDataSource()==null){this.logWarn("fetchData() called for a non-databound pickList. Ignoring");return}
+if(_2==null)_2={};if(_1!=null){if(_2.clientContext==null)_2.clientContext={};_2.clientContext.$03=_1}
+_2.componentContext=this.form.ID+"."+this.name;if(!this.pickList){this.makePickList(false,_2,false,true)}else{this.filterDataBoundPickList(_2,!_3)}},mapValueToDisplay:function(_1,_2,_3,_4){if(this.isSelectOther){if(_1==this.otherValue)return this.otherTitle;if(_1==this.separatorValue)return this.separatorTitle}
+return this.invokeSuper(isc.SelectItem,"mapValueToDisplay",_1,_2,_3,_4)},makePickList:function(_1,_2,_3,_4){var _5=isc.timeStamp();var _6=this.reusePickList();if(_6){this.pickList=this.getSharedPickList()}
+if(!this.pickList){var _7=this.pickListProperties||{};if(this.multiple){if(_7.noDoubleClicks==null){_7.noDoubleClicks=true}}else{if(_7.noDoubleClicks==null){_7.noDoubleClicks=false}}
+if(this.sortField!=null)_7.sortField=this.sortField;if(this.sortFieldNum!=null)_7.sortFieldNum=this.sortFieldNum;if(this.sortDirection!=null)_7.sortDirection=this.sortDirection;this.pickList=isc.PickListMenu.create({headerHeight:this.pickListHeaderHeight},_7);var _8=this.pickList.dataProperties||{};if(this.filterLocally)_8.fetchMode="local";this.pickList.dataProperties=_8;if(_6)this.storeSharedPickList()}
+if(this.fetchDisplayedFieldsOnly&&this.optionDataSource&&(!this.optionFilterContext||!this.optionFilterContext.outputs))
+{var _9=this.pickListFields||[];if(this.valueField)_9.add(this.valueField);if(this.displayField)_9.add(this.displayField);if(_9.length>0){if(!this.optionFilterContext)this.optionFilterContext={};this.optionFilterContext.outputs=_9.getUniqueItems().join(',')}}
+this.setUpPickList(_1,_3,_2,_4);if(this.logIsInfoEnabled("timing"))
+this.logInfo("Time to initially create pickList:"+(isc.timeStamp()-_5),"timing")},cachePickListResults:true,reusePickList:function(){return this.pickListProperties==null&&this.cachePickListResults},getSharedPickList:function(){if(this.$19m()){var _1=this.getOptionDataSource().getID(),_2=isc.PickListMenu.$51t[_1];if(_2){for(var i=0;i<_2.length;i++){if(_2[i].$51u==this.pickListFields){_2[i].$511=isc.timeStamp();var _4=_2[i].$51v;if(_4.destroyed){_2.removeAt(i);this.$82l(_4);i--;continue}
+return _4}}}
+return null}else{if(isc.PickList.$14w&&isc.PickList.$14w.destroyed){this.$82l(isc.PickList.$14w);isc.PickList.$14w=null;return null}
+return isc.PickList.$14w}},$82l:function(_1){if(_1.$513!=null){for(var _2 in _1.$513){if(window[_2]&&window[_2].pickList==_1){delete window[_2].pickList}}}},storeSharedPickList:function(){if(this.$19m()){var _1=this.getOptionDataSource().getID(),_2=isc.PickListMenu.$51t;if(!_2[_1])_2[_1]=[];var _3={$51v:this.pickList,$51u:this.pickListFields,$511:isc.timeStamp()}
+_2[_1].add(_3);if(isc.PickListMenu.$512==null){isc.PickListMenu.$512=1}else{isc.PickListMenu.$512+=1;if(isc.PickListMenu.$512>isc.PickListMenu.pickListCacheLimit){var _4,_5=isc.timeStamp();for(var _1 in _2){var _6=_2[_1];for(var i=0;i<_6.length;i++){var _8=_6[i];if(_8.$511<=_5&&(_8!=_3)){_4=_8;_5=_8.$511}}}
+if(_4){isc.PickListMenu.$512-=1;var _9=_4.$51v;var _6=_2[_9.getDataSource().getID()];_6.remove(_4);if(_9.$513!=null){for(var _10 in _9.$513){if(window[_10]&&window[_10].pickList==_9)
+delete window[_10].pickList}}
+_4.$51v.delayCall("destroy")}}}}else{isc.PickList.$14w=this.pickList}},getPickListCellHeight:function(){var _1=this.pickListCellHeight;if(this.pickListProperties&&this.pickListProperties.cellHeight!=null){_1=this.pickListProperties.cellHeight}
+if(this.valueIcons!=null||this.getValueIcon!=null){var _2=this.getValueIconHeight();if(_2>_1)_1=_2}
+return _1},setUpPickList:function(_1,_2,_3,_4){var _5=this.pickList;var _6=this.getPickListCellHeight();_5.setCellHeight(_6);this.$19n();this.setUpPickListFields();if(!_5.originalEmptyMessage)_5.originalEmptyMessage=_5.emptyMessage;_5.emptyMessage=this.emptyPickListMessage||_5.originalEmptyMessage;this.pickList.emptyMessageHeight=this.emptyPickListHeight;this.pickList.setWidth(Math.max(1,this.pickListWidth||this.getElementWidth()));var _7=this.autoSizePickList&&!this.pickList.showHeader;this.pickList.autoFitFieldWidths=_7;this.pickList.setAutoFitData(_7?"both":"vertical");var _8=1;if(this.pickList.showHeader)_8+=this.pickList.headerHeight;if(this.pickList.showFilterEditor)_8+=this.pickList.filterEditorHeight;this.pickList.setHeight(_8);this.pickList.setAutoFitMaxHeight(this.pickListHeight);this.pickList.setAutoFitMaxWidth(this.pickListMaxWidth);this.filterPickList(_1,_2,_3,_4)},$19n:function(){var _1=this.pickList.formItem;if(_1==this)return;var _2={};isc.addProperties(_2,{formItem:this,normalBaseStyle:this.pickListBaseStyle,tallBaseStyle:(this.pickListTallBaseStyle||this.pickListBaseStyle),hiliteColor:this.pickListHiliteColor,hiliteTextColor:this.pickListHiliteTextColor,showModal:this.modalPickList,dateFormatter:this.dateFormatter,dataArrived:function(_3,_4){if(isc.$cv)arguments.$cw=this;this.Super("dataArrived",arguments);if(this.formItem)this.formItem.handleDataArrived(_3,_4,this.data)}});if(this.multiple&&this.multipleAppearance=="picklist"&&this.allowMultiSelect)
+{_2.selectionAppearance="checkbox";_2.allowMultiSelect=true;_2.enableSelectOnRowOver=false;_2.selectionType="simple";_2.$859=false;_2.className="listGrid";_2.bodyStyleName="gridBody"}else{_2.selectionAppearance="rowStyle";_2.allowMultiSelect=false;_2.enableSelectOnRowOver=true;_2.selectionType="single";_2.$859=true;_2.className="scrollingMenu",_2.bodyStyleName="pickListMenuBody"}
+if(this.pickListProperties){isc.addProperties(_2,this.pickListProperties)}
+this.pickList.setProperties(_2);if(!this.pickList.$513)this.pickList.$513={};this.pickList.$513[this.getID()]=true;if(_1){if(this.pickList.isObserving(_1.containerWidget,"hide")){this.pickList.ignore(_1.containerWidget,"hide")}
+if(this.pickList.isObserving(_1.containerWidget,"clear")){this.pickList.ignore(_1.containerWidget,"clear")}}
+if(!this.pickList.isObserving(this.containerWidget,"hide")){this.pickList.observe(this.containerWidget,"hide","observer.hide();")}
+if(!this.pickList.isObserving(this.containerWidget,"clear")){this.pickList.observe(this.containerWidget,"clear","if(observer.isDrawn())observer.clear();")}
+this.pickList.markForRedraw()},getPickListFields:function(){if(this.pickListFields)return this.pickListFields;var _1=this.getDisplayFieldName(),_2;if(_1!=null){_2={width:"*",name:_1}
+_2.formatCellValue=this.$500}else{_2={width:"*",name:this.getValueFieldName(),valueMap:this.getValueMap()}}
+if(this.emptyDisplayValue!=null)_2.emptyCellValue=this.emptyDisplayValue;if(this.dateFormatter!=null){_2.type="date"}
+_2.$720=true;return[_2]},$500:function(_1,_2,_3,_4,_5){if(_1!=null)return _1;var _6=_5.formItem,_7=_6?_6.getValueFieldName():null;if(_2[_7]==null&&_6)return _6.emptyCellValue;return _1},formatPickListValue:function(_1,_2,_3){if(this.pickList.getField(_2).$720){return this.$17c(_1)}
+return _1},getPickListFilterCriteria:function(){var _1=isc.addProperties({},this.optionCriteria);return isc.DataSource.combineCriteria(_1,this.pickListCriteria,null,this.textMatchStyle)},getAllLocalOptions:function(){return this.$19m()?null:this.getClientPickListData()},$19o:function(_1,_2,_3){var _4=this.getOptionDataSource();if(_4==null){return}
+var _5=this.pickList&&!this.pickList.destroyed?(this.pickList.originalData||this.pickList.data):null;if(!_5||!(_5.localData||_5.allRows))return;var _6=(_2?this.getValueFieldName():this.getDisplayFieldName()||this.getValueFieldName()),_7=(_2?this.getDisplayFieldName()||this.getValueFieldName():this.getValueFieldName());if(_6==_7&&!_3)return _1;var _8=_5.allRows||_5.localData;var _9;if(isc.isAn.Array(_1)){_9="";var _10=isc.shallowClone(_1);for(var i=0;i<_1.length;i++){var _12=_10[i];var _13=_8.find(_7,_1[i]);if(_13!=null){_9+=_13[_6]}else continue;if(i!=_1.length-1)_9+=this.multipleValueSeparator}}else{var _13=_8.find(_7,_1);if(_13!=null)_9=_13[_6]}
+return _9},$18q:"true",setUpPickListFields:function(){var _1=this.getPickListFields(),_2=this.pickList.fields;var _3=!_2||(_2.length!=_1.length);if(!_3){for(var i=0;i<_1.length;i++){var _5=_1[i],_6=_2[i];for(var _7 in _5){if(_5[_7]!=_6[_7]){_3=true;break}}
+if(_3)break}}
+if(!_3)return;for(var i=0;i<_1.length;i++){if(_1[i].showIf==null){_1[i].showIf=this.$18q}}
+if(this.valueIcons!=null||this.getValueIcon!=null){for(var i=0;i<_1.length;i++){var _5=_1[i];if(_5[this.form.fieldIdProperty]==this.getValueFieldName()){if(_5.valueIconHeight==null)
+_5.valueIconHeight=this.valueIconHeight;if(_5.valueIconWidth==null)
+_5.valueIconWidth=this.valueIconWidth;if(_5.valueIconSize==null)
+_5.valueIconSize=this.valueIconSize;if(_5.imageURLPrefix==null)
+_5.imageURLPrefix=this.imageURLPrefix||this.baseURL||this.imgDir;if(_5.imageURLSuffix==null)
+_5.imageURLSuffix=this.imageURLSuffix}}}
+this.pickList.setFields(_1);var _8;if(this.pickListHeaderHeight==0)_8=false;else if(this.pickListProperties){if(this.pickListProperties.showHeader!=null){_8=this.pickListProperties.showHeader}else if(this.pickListProperties.headerHeight==0){_8=false}};if(_8==null){var _9=this.pickList.getFields();var _10=(this.multiple&&this.multipleAppearance=="picklist"&&this.allowMultiSelect==true)?2:1;_8=(_9.length>_10)}
+if(_8){this.pickList.setHeaderHeight(this.pickListHeaderHeight);this.pickList.setShowHeader(true)}else{this.pickList.setShowHeader(false)}},$19m:function(){if(this.optionDataSource)return true;if((this.showOptionsFromDataSource||!this.valueMap)&&this.getOptionDataSource()!=null)return true;return false},filterPickList:function(_1,_2,_3,_4){if(!_2)
+this.$19p(_1,_3,null,_4);else{this.$82m=true;this.$43i=_1;this.fireOnPause("fetch",{target:this,methodName:"$19p",args:[null,_3,true,_4]},this.fetchDelay)}},$19p:function(_1,_2,_3,_4){this.$82m=null;if(_3)_1=this.$43i;delete this.$43i;this.$19i=_1;var _5=this.$19m();if(_5){var _6=this.getOptionDataSource();if(this.pickList.getDataSource()!=_6){this.pickList.setDataSource(_6,(this.pickList.completeFields||this.pickList.fields))}
+this.filterDataBoundPickList(_2,_4)}else{var _7=this.filterClientPickListData();if(this.pickList.data!=_7)this.pickList.setData(_7);this.filterComplete()}},$61x:function(_1){if(!this.$19m()||!_1)return;var _2=this.getOptionDataSource();if(_1.getDataSource()==_2&&_1.data){var _3=_1.data.context,_4=_1.data.criteria;if(_3.textMatchStyle!=this.textMatchStyle)return true;if(this.optionFilterContext!=null){for(var _5 in this.optionFilterContext){if(this.optionFilterContext[_5]!=_3[_5])return true}}
+if(_2.compareCriteria(_4,this.getPickListFilterCriteria(),_3)==0){return false}}
+return true},getFirstOptionValue:function(){var _1;if(this.$19m()){var _2=this.pickList||(this.reusePickList()?this.getSharedPickList():null);if(_2&&!this.$61x(_2)){var _3=_2.data.get(0);if(_3==null||Array.isLoading(_3)){_1=null}else{_1=_3[this.getValueFieldName()]}}else{this.fetchData(null,null,true)}}else{var _4=this.valueMap;if(isc.isAn.Array(_4))_1=_4[0];else if(isc.isAn.Object(_4)){for(var _5 in _4){_1=_5;break}}}
+return _1},getClientPickListData:function(){return isc.PickList.optionsFromValueMap(this)},$19h:function(){if(isc.Canvas.ariaEnabled()){this.setAriaState("expanded",false);this.clearAriaState("owns")}
+if(this.pickListHidden)this.pickListHidden()},$19j:function(){if(isc.Canvas.ariaEnabled()){this.setAriaState("expanded",true);this.setAriaState("owns",this.pickList.getCanvasName())}
+if(this.pickListShown)this.pickListShown()},selectDefaultItem:function(){return this.selectItemFromValue(this.getValue())},selectItemFromValue:function(_1){if(!isc.isAn.Array(_1))_1=[_1];var _2=this.pickList.getSelection(),_3=this.getValueFieldName(),_4=true,_5;for(var i=0;i<_1.length;i++){var _7=_1[i],_8;if(_2.find(_3,_7))continue;var _9=this.pickList.getData();if(isc.ResultSet&&isc.isA.ResultSet(_9)){var _10=_9.localData;if(_10)_8=_10.find(_3,_7)}else{_8=_9.find(_3,_7)}
+if(_8&&_8!=Array.LOADING){if(this.pickList.allowMultiSelect)this.pickList.selectRecord(_8);else this.pickList.selection.selectSingle(_8);_5=_9.indexOf(_8)}else{_4=false}}
+if(_5!=null)this.pickList.scrollRecordIntoView(_5);return _4},filterComplete:function(_1,_2,_3,_4){if(!_4&&_3!=null&&_3.clientContext!=null){var _5=this.$84p,_6=_3.clientContext.fetchID;if(_5==null||_5<_6){this.$84p=_6}else{this.logWarn("Server returned out of order responses for databound fetch requests."+" Ignoring superceded request results");return}}
+this.$43j=false;this.$82n(_1,_2,_3);this.$82o(_1,_2,_3);var _7=(_3&&_3.clientContext?_3.clientContext.$03:null);if(_7){this.fireCallback(_7,"item,dsResponse,data,dsRequest",[this,_1,_2,_3])}},$82n:function(_1,_2,_3){var _4=this.pickList;if(!_4||_4.destroyed)return;var _5=_4.hasFocus||(_4.body&&_4.body.hasFocus);var _2=_4.getData();if(_2.getLength()==0&&_4.isVisible()&&_4.isDrawn()){if(this.hideEmptyPickList){_4.hide();if(_5)this.focusInItem()}else{var _6=this.getPickListPosition();if(this.allowPickListToClip)_4.setRect([_6[0],_6[1]]);else _4.placeNear(_6[0],_6[1])}}else{if(this.$19i)this.$19l();else if(_4.isVisible()&&_4.isDrawn())this.placePickList();delete this.$19i}},$82o:function(_1,_2,_3){this.selectDefaultItem();if(_1!=null&&_2!=null){this.$848(_2,true);this.updateDisplayValueMap(false)}
+if(this.$43k){delete this.$43k;this.$43f(this._value)}
+this.$19v()},$19v:function(){if(this.isDrawn()&&this.getValueFieldName()!=null&&this.$19m())
+{if(this.isA("ComboBoxItem")){if(this.addUnknownValues==true){this.updateValue()}
+if(this.hasFocus)return}
+var _1;if(!this.$10v())_1=this.getValue();else{if(this.isA("SelectItem"))_1=this.$19w;else _1=this.mapDisplayToValue(this.getElementValue())}
+var _2=this.getSelectedRecord();if(_2){var _3=this.mapValueToDisplay(_1);if(this.$19z!=_3){this.setElementValue(_3)}}}},$84q:0,filterDataBoundPickList:function(_1,_2){if(isc.$cv)arguments.$cw=this;var _3=this.getPickListFilterCriteria(),_4={textMatchStyle:this.textMatchStyle,showPrompt:false};if(this.optionFilterContext!=null)isc.addProperties(_4,this.optionFilterContext);if(this.optionOperationId!=null)_4.operationId=this.optionOperationId;if(_1!=null){isc.addProperties(_4,_1)}
+var _5=false,_6=false;var _7=this.pickList.originalData||this.pickList.data;if(_7&&isc.ResultSet&&isc.isA.ResultSet(_7)){if(_2){_7.$394()}else{if(!_7.willFetchData(_3,this.textMatchStyle)){if(!_7.lengthIsKnown()||(_7.getLength()!=0&&!_7.rowIsLoaded(0))){_5=true;if(this.pickList.$85a!=this.getID()){if(!this.isObserving(_7,"fetchRemoteDataReply")){this.observe(_7,"fetchRemoteDataReply","observer.$85b(observed, dsResponse, data, request)");this.$85c=_7.$39v}}}else{_6=true}}}
+if(!_5){_4.fetchID=this.$84q++;if(this.isObserving(_7,"fetchRemoteDataReply")){this.ignore(_7,"fetchRemoteDataReply")}}}
+this.pickList.filterData(_3,{target:this,methodName:"filterComplete"},_4);if(_6&&this.pickList.data.getLength()>0&&(this.pickList.data.rowIsLoaded&&!this.pickList.data.rowIsLoaded(0)))
+{this.logInfo("filterData with new criteria caused async fetch even though "+"data.willFetchData() returned false.","pickListFilter");_6=false}
+if(_6)this.filterComplete();else{this.$43j=true;if(!_5){this.pickList.$85a=this.getID()}}},$85b:function(_1,_2,_3,_4){if(this.$85c!=_4.clientContext.requestIndex){return}
+this.ignore(_1,"fetchRemoteDataReply");this.filterComplete(_2,_3,_4,true)},handleDataArrived:function(_1,_2,_3){if(this.defaultToFirstOption&&this.getValue()==null&&_1==0){this.setToDefaultValue()}
+this.$19v();if(this.dataArrived)this.dataArrived(_1,_2,_3)},dataArrived:function(_1,_2,_3){},textMatchStyle:"startsWith",$19q:"substring",separatorRows:[{isSeparator:true}],filterClientPickListData:function(){var _1=this.getClientPickListData();var _2=this.getPickListFilterCriteria();if(_2==null||isc.isA.emptyObject(_2))return _1;var _3=[],_4;if(this.showAllOptions)_4=this.separatorRows.duplicate();var _5=false;for(var _6 in _2){var _7=_2[_6];if(!_7||isc.isA.emptyString(_7))continue;_5=true;if(!isc.isAn.Array(_7))_7=[_7];for(var _8=0;_8<_7.length;_8++){var _9=_7[_8];if(!isc.isA.String(_9))_9+=isc.emptyString;_9=_9.toLowerCase();var _10=_1.getLength(),_11=this.getValueFieldName();for(var i=0;i<_10;i++){var _13=_1[i][_6];if(this.filterDisplayValue&&_6==_11){_13=this.mapValueToDisplay(_13)}
+if(!isc.isA.String(_13))_13+="";_13=_13.toLowerCase();if((this.textMatchStyle==this.$19q&&!_13.contains(_9))||(this.textMatchStyle!=this.$19q&&!isc.startsWith(_13,_9)))
+{if(this.showAllOptions)_4.add(_1[i])}else{_3.add(_1[i])}}}}
+if(!_5)_3=_1.duplicate();if(this.showAllOptions&&_4.length>1)_3.addList(_4);return _3},shouldHideEmptyPickList:function(){if(this.hideEmptyPickList!=null)return this.hideEmptyPickList;return!this.$19m()},getPickListPosition:function(){return[this.getPageLeft(),this.getPageTop()+this.getHeight()]},placePickList:function(){var _1=this.pickList;if(_1.isDirty()||(_1.body&&_1.body.isDirty())){_1.redraw("Refreshing stale pickList content before positioning")}else if(!_1.isDrawn()){isc.Canvas.moveOffscreen(_1);_1.setVisibility("hidden");_1.draw()}
+var _2=this.getPickListPosition(),_3=_2[0],_4=_2[1];if(this.allowPickListToClip)_1.setRect([_3,_4]);else _1.placeNear(_3,_4)},pickValue:function(_1){}});isc.A=isc.PickList;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.optionsFromValueMap=function isc_c_PickList_optionsFromValueMap(_1){var _2=_1.getValueMap(),_3=[];if(_2==null)_2=[];var _4=_1.getValueFieldName(),_5=_1.getDisplayFieldName();if(isc.isAn.Array(_2)){for(var i=0;i<_2.length;i++){_3[i]={}
+_3[i][_4]=_2[i];if(_5!=null)_3[i][_5]=_2[i]}}else if(isc.isAn.Object(_2)){var i=0;var _7=_1.getType(),_8,_9,_10;if(_7!=null){if(isc.SimpleType.inheritsFrom(_7,"integer"))
+{_8=true}else if(isc.SimpleType.inheritsFrom(_7,"float")){_9=true}else if(isc.SimpleType.inheritsFrom(_7,"boolean")){_10=true}}
+for(var j in _2){_3[i]={};var _12=j;if(_8){var _13=parseInt(_12);if(_13==_12)_12=_13}else if(_9){var _14=parseFloat(_12);if(_14==_12)_12=_14}else if(_10){var _15=(_12=="true"?true:(_12=="false"?false:null));if(_15!=null)_12=_15}
+_3[i][_4]=_12;if(_5!=null)_3[i][_5]=_2[j];i++}
+_3.$882=true}
+return _3}
+);isc.B._maxIndex=isc.C+1}
+isc.ClassFactory.defineClass("NativeSelectItem","FormItem");isc.A=isc.NativeSelectItem;isc.A.DEFAULT_ROW_COUNT=6;isc.A.instances=[];isc.NativeSelectItem.addProperties(isc.$19s)
+isc.A=isc.NativeSelectItem.getPrototype();isc.A.height=null;isc.A.$125=true;isc.A.$15i=true;isc.A.$16b={onchange:isc.FormItem.$12y};isc.A=isc.NativeSelectItem;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getOptionsHTML=function isc_c_NativeSelectItem_getOptionsHTML(_1,_2){var _3=isc.SB.create();if(isc.isAn.Array(_1)){for(var i=0,_5=_1.length;i<_5;i++){var _6=_1[i];_3.append(this.$196(_6,_6,_2))}}else{for(var _6 in _1){var _7=_1[_6];_3.append(this.$196(_6,_7,_2))}}
+return _3.toString()}
+,isc.A.$196=function isc_c_NativeSelectItem__getOptionHTML(_1,_2,_3){var _4=this.$197;if(!_4){this.$198=" SELECTED ";_4=this.$197=[];_4[0]="<OPTION ";_4[2]=' VALUE="';_4[4]='">';_4[6]="</OPTION>"}
+_4[1]=(_1==_3?this.$198:null);_4[3]=_1;_4[5]=_2;return _4.join(isc.$ad)}
+,isc.A.getOptionCount=function isc_c_NativeSelectItem_getOptionCount(_1){if(isc.isAn.Array(_1)){return _1.length}else{var _2=0;for(var _3 in _1){_2++}
+return _2}}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.NativeSelectItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.textMatchStyle="startsWith";isc.B.push(isc.A.getPickListFilterCriteria=function isc_NativeSelectItem_getPickListFilterCriteria(){var _1=this.optionCriteria||{};return isc.addProperties(_1,this.pickListCriteria)}
+,isc.A.init=function isc_NativeSelectItem_init(){this.Super("init",arguments);isc.NativeSelectItem.instances.add(this);if(this.optionDataSource){var _1=this.getOptionDataSource();var _2=this.getValueFieldName();var _3=this.getDisplayFieldName();var _4=this;var _5={textMatchStyle:this.textMatchStyle,showPrompt:false};if(this.optionFilterContext!=null)isc.addProperties(_5,this.optionFilterContext);if(this.optionOperationId!=null)_5.operationId=this.optionOperationId;var _6=this.getPickListFilterCriteria();_1.fetchData(_6,function(_10,_11){var _7;if(!_3)_7=[];else _7={};for(var i=0;i<_11.getLength();i++){var _9=_11[i];if(!_3){_7.add(_9[_2])}else{_7[_9[_2]]=_9[_3]}}
+_4.setValueMap(_7)},_5)}}
+,isc.A.destroy=function isc_NativeSelectItem_destroy(){isc.NativeSelectItem.instances.remove(this);this.Super("destroy",arguments)}
+,isc.A.getTextBoxCellCSS=function isc_NativeSelectItem_getTextBoxCellCSS(){return this.$136}
+,isc.A.setElementReadOnly=function isc_NativeSelectItem_setElementReadOnly(_1){this.$176(!_1&&!this.isDisabled())}
+,isc.A.getElementHTML=function isc_NativeSelectItem_getElementHTML(_1,_2){this.$199=false;var _3=this.form,_4=_3.getID(),_5=isc.StringBuffer.newInstance(),_6=this.getItemID();var _7=isc.$ad;var _8=this.$xq(_2);if(_8!=null)_5.append(_8);if(!this.showValueIconOnly){_5.append("<SELECT"," NAME=",this.getElementName()," ID=",this.getDataElementId(),this.$155(),(!this.showTitle&&this.accessKey!=null?" ACCESSKEY="+this.accessKey:_7),((this.isReadOnly()||this.isDisabled())?" DISABLED ":_7),this.getElementStyleHTML(),(this.multiple?" MULTIPLE":_7)," TABINDEX=",this.$154()," handleNativeEvents=false>");_5.append(this.getOptionsHTML(this.getValueMap()));_5.append("</SELECT>")}
+return _5.toString()}
+,isc.A.$12z=function isc_NativeSelectItem__handleElementChanged(_1){if(isc.Browser.isIE&&!_1){isc.Timer.setTimeout(this.getID()+".$12z(true)",10);return true}
+return this.form.elementChanged(this.getID())}
+,isc.A.$12x=function isc_NativeSelectItem__nativeElementBlur(_1,_2){var _3=this.Super("$12x",arguments);if(this.changeOnBlur)this.form.elementChanged(this)}
+,isc.A.getOptionsHTML=function isc_NativeSelectItem_getOptionsHTML(_1){var _2=isc.NativeSelectItem.getOptionsHTML(_1?_1:this.getValueMap());if(this.isSelectOther){_2+="<OPTION VALUE=\""+this.separatorValue+"\">"+this.separatorTitle+"<OPTION VALUE=\""+this.otherValue+"\">"+this.otherTitle}
+return _2}
+,isc.A.getOptionCount=function isc_NativeSelectItem_getOptionCount(_1){return isc.NativeSelectItem.getOptionCount(_1?_1:this.getValueMap())}
+,isc.A.getElementStyleHTML=function isc_NativeSelectItem_getElementStyleHTML(){var _1=isc.SB.create(),_2=isc.SB.create();if(this.textBoxStyle!=null)_1.append(" CLASS='",this.getTextBoxStyle(),"' ");if(this.multiple||this.rows){var _3=this.rows;if(!isc.isA.Number(_3)||_3<1)
+_3=Math.min(isc.NativeSelectItem.DEFAULT_ROW_COUNT,this.getOptionCount());if(this.height){if(isc.isA.Number(this.height))_2.append("HEIGHT:",this.height,"px;")}
+_1.append(" SIZE=",_3)}
+if(isc.Browser.isDOM){var _4=this.getElementWidth();if(isc.isA.Number(_4)){_4=Math.max(_4,1);_2.append("WIDTH:",_4,"px;")}
+if(isc.Browser.isMoz){_2.append("-moz-user-focus:",(this.$154()>0?"normal;":"ignore;"))}
+_2.append("margin-top:0px;margin-bottom:0px;");_2=_2.toString();if(_2.length>0)_1.append(" STYLE='",_2,"'")}
+return _1.toString()}
+,isc.A.$16z=function isc_NativeSelectItem__iconVisibilityChanged(){if(!isc.isA.Number(this.width))return;return this.Super("$16z",arguments)}
+,isc.A.$16m=function isc_NativeSelectItem__getIconVMargin(){return 0}
+,isc.A.mapValueToDisplay=function isc_NativeSelectItem_mapValueToDisplay(_1){if(isc.isAn.Array(_1)){var _2=[];for(var i=0;i<_1.length;i++){_2[i]=this.mapValueToDisplay(_1[i])}
+return _2}
+return this.Super("mapValueToDisplay",arguments)}
+,isc.A.setElementValue=function isc_NativeSelectItem_setElementValue(_1,_2){if(arguments.length==1)_2=_1;var _3=this.getDataElement();if(!_3)return null;var _4=_3.options;if(!_4){this.logDebug("setElementValue(): element.options is null. ???");return null}
+this.$17j(_2);if(!this.multiple){if(_2==null)_2="";for(var i=0;i<_4.length;i++){if(_4[i].value==_2){if(_3.selectedIndex!=i){_3.selectedIndex=i}
+return _3.selectedIndex}}
+for(var i=0;i<_4.length;i++){if(_4[i].text==_2){if(_3.selectedIndex!=i){_3.selectedIndex=i}
+_3.selectedIndex=i;return _3.selectedIndex}}
+if(this.addUnknownValues){if(isc.Browser.isIE){var _6=0;if(this.$199){_4[_6].text=_1;_4[_6].value=_2}else{_4.add(new Option(_2,_1),_6);this.$199=true}}else{if(this.$199){var _6=_4.length-1;_4[_6].value=_2;_4[_6].text=_1}else{var _6=_4.length;_4[_6]=new Option(_2,_1);this.$199=true}}
+if(_3.selectedIndex!=_6){_3.selectedIndex=_6}
+return _3.selectedIndex}else{return null}}else{if(_2==null){_2=[]}else if(isc.isA.String(_2)&&_2.contains(",")){_2=_2.split(",")}else if(!isc.isAn.Array(_2)){_2=[_2]}else{_2=_2.duplicate()}
+if(_1==null){_1=[]}else if(isc.isA.String(_1)&&_1.contains(",")){_1=_1.split(",")}else if(!isc.isAn.Array(_1)){_1=[_1]}else{_1=_1.duplicate()}
+for(var i=0;i<_4.length;i++){var _7=_3.options[i];var _8=_2.indexOf(_7.value);if(_8>-1){if(_7.selected!=true)_7.selected=true;_2.removeItem(_8)}else{if(_7.selected!=false)_7.selected=false}}
+if(_2.length!=0){for(var i=0;i<_4.length;i++){var _7=_3.options[i];var _8=_2.indexOf(_7.text);if(_8>-1){if(_7.selected!=true)_7.selected=true;_2.removeItem(_8)}}}
+if(_2.length!=0&&this.addUnknownValues){for(var i=0;i<_2.length;i++){var _9=_4[_4.length]=new Option(_2[i],_1[i]);_9.selected=true}}
+return _2}}
+,isc.A.getElementValue=function isc_NativeSelectItem_getElementValue(){var _1=this.getDataElement();if(!_1)return null;var _2=_1.options;if(!_2||_2.length==0)return null;if(!this.multiple){var _3=_2[_1.selectedIndex];if(!_3)return null;return(_3.value!=null?_3.value:_3.text)}else{var _4=[];for(var i=0;i<_2.length;i++){var _3=_2[i];if(_3.selected){_4.add(_3.value!=null?_3.value:_3.text)}}
+if(_4.length<2)return _4[0];return _4}}
+,isc.A.setElementValueMap=function isc_NativeSelectItem_setElementValueMap(_1){this.$199=false;this.Super("setElementValueMap",arguments);var _2=this.getDataElement();if(_2==null)return;var _3=_2.options;_3.length=0;if(isc.isAn.Array(_1)){for(var i=0;i<_1.length;i++){_3[i]=new Option(_1[i],_1[i])}}else{for(var _5 in _1){_3[_3.length]=new Option(_1[_5],_5)}}
+if(this.isSelectOther){_3[_3.length]=new Option(this.separatorTitle,this.separatorValue);_3[_3.length]=new Option(this.otherTitle,this.otherValue)}}
+,isc.A.updateValue=function isc_NativeSelectItem_updateValue(){if(this.isSelectOther){if(!this.hasElement()||this.getDataElement()==null)return;var _1=this._value,_2=this.getElementValue();if(_2==this.separatorValue){this.setValue(_1);return false}
+if(_2==this.otherValue){var _3=this.getValueMapTitle(_1);_2=prompt("Other value for \r'"+this.getTitle()+"'?",(_3?_3:""));if(_2==null){this.setValue(_1);return false}
+this.setElementValue(_2)}}
+return this.Super("updateValue",arguments)}
+);isc.B._maxIndex=isc.C+18;if(isc.ListGrid){isc.ClassFactory.defineClass("SelectItem","FormItem");isc.$19s={textBoxStyle:"selectItemText",height:19,width:150,dirtyOnKeyDown:false,changeOnKeypress:false,redrawOnShowIcon:false,addUnknownValues:true,autoSizePickList:true,multipleAppearance:"picklist",separatorTitle:"--------------------",separatorValue:"----",otherTitle:"Other...",otherValue:"***other***"};isc.SelectItem.addProperties(isc.$19s)
+isc.A=isc.SelectItem.getPrototype();isc.A.showPickerIcon=true;isc.A.emptyDisplayValue=" ";isc.A.controlStyle="selectItemControl";isc.A.pickerIconStyle="selectItemPickerIcon";isc.A.canFocus=true;isc.A.showFocused=true;isc.A.pickerIconSrc="[SKIN]/DynamicForm/SelectItem_PickButton_icon.gif";isc.A.pickerIconDefaults={tabIndex:-1,click:function(){}};isc.A.clipValue=true;isc.A.showOver=true;isc.A.modalPickList=true;isc.A.changeOnValueChange=true;isc.A.changeOnKeyboardNavigation=true;isc.A.canSelectText=false;isc.A.allowEmptyValue=false;isc.A.autoFetchData=true;isc.A.saveOnEnter=true;isc.A=isc.SelectItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.selectOtherPrompt="Other value for <br>${item.getTitle()}?";isc.A.dialogWidth=250;isc.B.push(isc.A.init=function isc_SelectItem_init(){if(this.hiliteOnFocus!=null){this.$15o("hiliteOnFocus","showFocused");this.showFocused=this.hiliteOnFocus}
+if(this.pickButtonWidth!=null){this.$15o("pickButtonWidth","pickerIconWidth");this.pickerIconWidth=this.pickButtonWidth}
+if(this.pickButtonHeight!=null){this.$15o("pickButtonHeight","pickerIconHeight");this.pickerIconHeight=this.pickButtonHeight}
+if(this.pickButtonSrc!=null){this.$15o("pickButtonSrc","pickerIconSrc");this.pickerIconSrc=this.pickButtonSrc}
+return this.Super("init",arguments)}
+,isc.A.drawn=function isc_SelectItem_drawn(_1,_2,_3,_4){this.invokeSuper(isc.SelectItem,"drawn",_1,_2,_3,_4);if(this.autoFetchData&&this.$19m()){this.fetchData(null,null,true)}}
+,isc.A.$16m=function isc_SelectItem__getIconVMargin(){return 0}
+,isc.A.$121=function isc_SelectItem__iconFocus(_1,_2){var _3=this.getIcon(_1);if(_3==this.getPickerIcon()){_2.blur();this.focusInItem();return}
+return this.Super("$121",arguments)}
+,isc.A.setElementReadOnly=function isc_SelectItem_setElementReadOnly(_1){}
+,isc.A.handleMouseMove=function isc_SelectItem_handleMouseMove(){if(this.showOver&&!this.isDisabled()){if(this.$17a())this.$164(this.getPickerIcon(),true);else this.$164(this.getPickerIcon(),false)}
+return this.Super("handleMouseMove",arguments)}
+,isc.A.handleMouseOut=function isc_SelectItem_handleMouseOut(){if(this.showOver&&!this.isDisabled()){this.$164(this.getPickerIcon(),false)}
+return this.Super("handleMouseOut",arguments)}
+,isc.A.$114=function isc_SelectItem__iconMouseOut(_1,_2,_3,_4,_5){if(this.getIcon(_1)==this.getPickerIcon()&&this.$17a())return;return this.invokeSuper("SelectItem","$114",_1,_2,_3,_4,_5)}
+,isc.A.handleClick=function isc_SelectItem_handleClick(){if(!(this.isDisabled())&&!(this.isReadOnly())){this.focusInItem();this.showPickList()}
+return this.Super("handleClick",arguments)}
+,isc.A.handleKeyPress=function isc_SelectItem_handleKeyPress(_1,_2){var _3=this.Super("handleKeyPress",arguments);if(_3==false)return false;if(this.isReadOnly())return _3;var _4=_1.keyName;if(_4=="Enter"&&this.isSelectOther){if(this.$19u!=null)this.updateValue()}else if(_4=="Arrow_Down"){if(isc.EH.altKeyDown())this.showPickList();else this.moveToNextValue(1);_3=false}else if(_4=="Arrow_Up"){if(isc.EH.altKeyDown())this.showPickList();else this.moveToNextValue(-1);_3=false}else if(_4=="Home"){this.moveToFirstValue();_3=false}else if(_4=="End"){this.moveToLastValue();_3=false}else{var _5=_1.characterValue;if(_5!=null){this.moveToChar(_5)}}
+return _3}
+,isc.A.$12x=function isc_SelectItem__nativeElementBlur(_1,_2){var _3=this.Super("$12x",arguments);if(this.changeOnBlur||this.$10v()||this.$19u){if(isc.Browser.isMoz&&this.$19u==this.otherValue)
+this.form.$11w=true;this.updateValue()}
+return _3}
+,isc.A.showPickList=function isc_SelectItem_showPickList(_1,_2){var _3=isc.PickList.getPrototype().showPickList;_3.apply(this,arguments);if(this.pickList){this.pickList.deselectAllRecords();if(this.getValue())this.selectItemFromValue(this.getValue())}}
+,isc.A.handleEditorExit=function isc_SelectItem_handleEditorExit(){if(this.$19g)return;return this.Super("handleEditorExit",arguments)}
+,isc.A.editorEnter=function isc_SelectItem_editorEnter(_1,_2,_3){this.$66s()}
+,isc.A.editorExit=function isc_SelectItem_editorExit(_1,_2,_3){var _4;if(this.showHintInField&&(_3===_4||_3==null||isc.is.emptyString(_3)))
+{this.$66t()}}
+,isc.A.$19j=function isc_SelectItem__pickListShown(){this.handleEditorEnter();if(this.pickListShown)this.pickListShown()}
+,isc.A.$19h=function isc_SelectItem__pickListHidden(){if(this.fireChangeOnSelect==false)this.updateValue();if(this.pickListHidden)this.pickListHidden()}
+,isc.A.getAllLocalOptions=function isc_SelectItem_getAllLocalOptions(){var _1;if(this.$19m()){if(!this.pickList||this.pickList.destroyed)return;var _2=this.pickList.data;if(!_2||!_2.lengthIsKnown()||!_2.allMatchingRowsCached())return;var _3=this.getPickListFilterCriteria();if(_2.compareCriteria(_3,_2.criteria)!=0){if(!_2.allRowsCached()||!_2.useClientFiltering)return;this.filterPickList(false,false)}
+_1=_2.getAllRows()}else{_1=this.getClientPickListData()}
+return _1}
+,isc.A.moveToChar=function isc_SelectItem_moveToChar(_1){var _2=this.getAllLocalOptions();if(!_2||_2.length<2)return;var _3=String.fromCharCode(_1);if(_3==null)return;_3=_3.toLowerCase();var _4=(this.isSelectOther&&this.$19u!=null)?this.$19u:(this.$10v()?this.$19w:this.getValue()),_5=this.getValueFieldName(),_6=_2.findIndex(_5,_4),i=(_6==_2.length-1?0:_6+1);while(i!=_6){if(_6<0)_6=0;var _8=_2[i][this.getValueFieldName()],_9=this.mapValueToDisplay(_8);if(isc.isA.String(_9)){var _10=_9.charAt(0).toLowerCase();if(_10==_3){var _11=_8;this.changeToValue(_11,(this.changeOnValueChange&&this.changeOnKeyboardNavigation));return}}
+i+=1;if(i>=_2.length)i=0}}
+,isc.A.moveToNextValue=function isc_SelectItem_moveToNextValue(_1){var _2=this.getAllLocalOptions();if(!_2||_2.length<1)return;var _3;if(this.isSelectOther&&this.$19u!=null)_3=this.$19u;else _3=(this.$10v()?this.$19w:this.getValue());var _4=this.getValueFieldName(),_5=_2.findIndex(_4,_3);_5+=_1;if(_5>=_2.length||_5<0)return;var _6=_2[_5][_4];this.changeToValue(_6,(this.changeOnValueChange&&this.changeOnKeyboardNavigation))}
+,isc.A.moveToFirstValue=function isc_SelectItem_moveToFirstValue(){if(this.optionDataSource)return;var _1=this.getClientPickListData(),_2=this.getValueFieldName(),_3=_1[0][_2];this.changeToValue(_3,(this.changeOnValueChange&&this.changeOnKeyboardNavigation))}
+,isc.A.moveToLastValue=function isc_SelectItem_moveToLastValue(){if(this.optionDataSource)return;var _1=this.getClientPickListData(),_2=this.getValueFieldName(),_3=_1[_1.length-1][_2]
+this.changeToValue(_3,(this.changeOnValueChange&&this.changeOnKeyboardNavigation))}
+,isc.A.$kk=function isc_SelectItem__canFocus(){return true}
+,isc.A.$19x=function isc_SelectItem__getIconMouseDownFunction(){if(!this.$19y){this.$19y=new Function("if(window."+this.getID()+")window."+this.getID()+".$19g=true;")}
+return this.$19y}
+,isc.A.$159=function isc_SelectItem__applyHandlersToElement(_1,_2,_3,_4){this.invokeSuper(isc.SelectItem,"$159",_1,_2,_3,_4);if(isc.Browser.isIE){var _5=this.$16v(this.getPickerIcon());if(_5){_5.onmousedown=this.$19x()}}}
+,isc.A.makePickList=function isc_SelectItem_makePickList(_1){if(!this.filterLocally&&this.allowEmptyValue&&this.$19m()){if(this.pickListProperties==null)
+this.pickListProperties={};if(this.pickListProperties.dataProperties==null)
+this.pickListProperties.dataProperties={};this.pickListProperties.dataProperties.fetchMode="basic"}
+var _2=isc.PickList.getPrototype().makePickList;return _2.apply(this,arguments)}
+,isc.A.changeToValue=function isc_SelectItem_changeToValue(_1,_2){var _3=(this.$19u||this.$19w||this.getValue());if(_3==_1)return;if(this.isSelectOther&&(_1==this.separatorValue||_1==this.otherValue))
+{this.setElementValue(this.mapValueToDisplay(_1));this.$19u=_1;return}else{delete this.$19u}
+this.setLocalValue(_1);if(_2)this.updateValue()}
+,isc.A.setLocalValue=function isc_SelectItem_setLocalValue(_1){this.$19w=_1;if(this.isVisible()&&this.containerWidget.isDrawn()){if(_1==null)_1=null;this.setElementValue(this.mapValueToDisplay(_1),_1)}
+this.$18i()}
+,isc.A.setElementValue=function isc_SelectItem_setElementValue(_1,_2,_3,_4,_5){this.$19z=_1;if(this.showHintInField&&this.getHint()){var _6;if(_1===_6||_1==null||isc.is.emptyString(_1)||_1==this.emptyDisplayValue)
+{if(this.hasDataElement()){var _7=this.getDataElement();_7.className=this.$66v()}else{var _8=this.$15h();if(_8!=null)
+_8.className=this.$66v()}
+var _9=this.getHint();if(_9)_9=_9.unescapeHTML();_1=_9;this.$66u=true}}
+return this.invokeSuper(isc.SelectItem,"setElementValue",_1,_2,_3,_4,_5)}
+,isc.A.updateValue=function isc_SelectItem_updateValue(){if(this.isSelectOther&&this.$19u!=null){var _1=this.getSelectOtherValue(this.$19u);delete this.$19u;this.setLocalValue(_1)}
+if(!this.$10v())return;var _2=this.$19w;this.$10y(_2)}
+,isc.A.mapDisplayToValue=function isc_SelectItem_mapDisplayToValue(_1){return _1}
+,isc.A.getSelectOtherValue=function isc_SelectItem_getSelectOtherValue(_1){if(_1==this.separatorValue)return(this.$19w||this.getValue());if(_1==this.otherValue){var _2=this.$19w||this.getValue(),_3=(_2==null?"":this.mapValueToDisplay(_2)),_4=this.selectOtherPrompt.evalDynamicString(null,{item:this,value:_2}),_5=isc.addProperties({width:this.dialogWidth},this.dialogDefaults,this.dialogProperties);isc.askForValue(_4,this.getID()+".getSelectOtherValueCallback(value)",_5);return true}}
+,isc.A.getSelectOtherValueCallback=function isc_SelectItem_getSelectOtherValueCallback(_1){if(_1!=null){_1=this.mapDisplayToValue(_1);this.changeToValue(_1,this.changeOnValueChange)}}
+,isc.A.setValue=function isc_SelectItem_setValue(_1,_2,_3,_4){_1=this.$190(_1);var _5,_6=this.$19w;if(_6===_5)_6=this._value;this.invokeSuper(isc.SelectItem,"setValue",_1,_2,_3,_4);_1=this.getValue();if(_1!=_6)this.setLocalValue(_1);if(this.pickList&&this.pickList.isDrawn()&&this.pickListVisible()){this.setUpPickList(true)}
+if(!this.hasFocus&&this.showHint&&this.showHintInField&&this.getHint()){if(_1===_5||_1==null||isc.is.emptyString(_1)){this.$66t()}}
+return _1}
+,isc.A.saveValue=function isc_SelectItem_saveValue(_1,_2,_3,_4,_5){var _6=this._value;if(this.$191(_6,_1))delete this.$192;return this.invokeSuper(isc.SelectItem,"saveValue",_1,_2,_3,_4,_5)}
+,isc.A.$191=function isc_SelectItem__dropCacheOnValueChange(_1,_2){return(this.addUnknownValues&&this.$192&&((_1!=null&&!this.$193(_1))||(_2!=null&&!this.$193(_2))))}
+,isc.A.$10x=function isc_SelectItem__markValueAsNotDirty(_1,_2,_3,_4){this.invokeSuper(isc.SelectItem,"$10x",_1,_2,_3,_4);delete this.$19w}
+,isc.A.getDefaultValue=function isc_SelectItem_getDefaultValue(){var _1=this.Super("getDefaultValue",arguments);if(_1==null&&this.defaultToFirstOption)_1=this.getFirstOptionValue();return this.$190(_1)}
+,isc.A.$190=function isc_SelectItem__getValidValue(_1){if(!this.$194(_1)){var _2=this.$195;this.$195=true;var _3;if(_2)_3=_1;else _3=this.$19w||this.getValue();if(_1==_3||!this.$194(_3)){_3=null}
+_1=_3}
+return _1}
+,isc.A.$194=function isc_SelectItem__valueIsValid(_1){if(this.addUnknownValues||this.optionDataSource)return true;if(_1==null)return true;if(isc.isAn.Array(_1)){for(var i=0;i<_1.length;i++){if(!this.$193(_1[i]))return false}
+return true}else{return this.$193(_1)}}
+,isc.A.$193=function isc_SelectItem__valueInValueMap(_1){var _2=this.getValueMap(),_3;if(isc.isAn.Array(_2)){return _2.contains(_1)}else if(isc.isAn.Object(_2)){return(_2[_1]!==_3)}
+return false}
+,isc.A.mapValueToDisplay=function isc_SelectItem_mapValueToDisplay(_1,_2,_3,_4){if(this.isSelectOther){if(_1==this.otherValue)return this.otherTitle;if(_1==this.separatorValue)return this.separatorTitle}
+return this.invokeSuper(isc.SelectItem,"mapValueToDisplay",_1,_2,_3,_4)}
+,isc.A.getSelectedRecord=function isc_SelectItem_getSelectedRecord(){if(this.pickList==null||this.pickList.destroyed)this.makePickList(false);var _1,_2=this.$19w;if(_2===_1)_2=this.getValue();if(this.selectItemFromValue(_2)){return this.pickList.getSelectedRecord()}
+return this.Super("getSelectedRecord",arguments)}
+,isc.A.getSelectedRecords=function isc_SelectItem_getSelectedRecords(){var _1=this.$19w;this.selectItemFromValue(_1);var _2=this.pickList.getSelection();if(_2.length>0)return _2;else return null}
+,isc.A.$17b=function isc_SelectItem__mapKey(_1,_2,_3,_4,_5,_6){var _7=this.invokeSuper(isc.SelectItem,"$17b",_1,true,_3,_4,_5,_6);if(_7==null&&this.getDisplayFieldName()!=null)
+_7=this.$19o(_1,false);if(_7==null&&!_2)_7=_1;return _7}
+,isc.A.$43f=function isc_SelectItem__checkForDisplayFieldValue(_1,_2){var _3=(this.$17b(_1,true)!=null);if(_3)return;if(this.$43j){this.$43k=true;return}
+this.invokeSuper(isc.SelectItem,"$43f",_1)}
+,isc.A.getClientPickListData=function isc_SelectItem_getClientPickListData(){if(this.$192)return this.$192;var _1=isc.PickList.optionsFromValueMap(this),_2=this.getValueFieldName();if(this.allowEmptyValue&&!this.multiple&&(_1.find(_2,null)==null)){var _3={};_3[_2]=null;_1.addAt(_3,0)}
+var _4=this.getValue();if(_4!=null&&!isc.isAn.Array(_4)){if(_1.find(_2,_4)==null){var _5={};_5[_2]=_4;_1.addAt(_5,0)}}
+if(this.isSelectOther){var _6={},_7={};_6[_2]=this.separatorValue;_7[_2]=this.otherValue;_1.addListAt([_6,_7],_1.length)}
+this.$192=_1;return _1}
+,isc.A.formatPickListValue=function isc_SelectItem_formatPickListValue(_1,_2,_3){if(this.isSelectOther&&(_2==this.getValueFieldName())){if(_1==this.otherValue)return this.otherTitle;if(_1==this.separatorValue)return this.separatorTitle}
+if(this.pickList.getField(_2).$720){return this.$17c(_1)}
+return _1}
+,isc.A.pickValue=function isc_SelectItem_pickValue(_1){if(this.isSelectOther){if(this.getSelectOtherValue(_1))return}
+this.changeToValue(_1,(this.changeOnValueChange&&this.fireChangeOnSelect!=false))}
+,isc.A.getPickListPosition=function isc_SelectItem_getPickListPosition(){var _1=this.getPageTop(),_2=_1+this.getHeight(),_3=this.getPageLeft(),_4=isc.Page.getScrollTop(),_5=isc.Page.getHeight()+_4;var _6;if(!this.pickList.isDrawn()){var _7=this.pickList.data;if(_7==null||_7.getLength()==0){_6=this.emptyPickListHeight}else{_6=Math.min((_7.getLength()*this.pickList.cellHeight)+(this.pickList.showHeader?this.pickList.headerHeight:0)+(this.pickList.showFilterEditor?this.pickList.filterEditorHeight:0),this.pickListHeight)}}else{_6=this.pickList.getVisibleHeight()}
+if(_2+_6>_5){_2=Math.max(_4,(_1-_6))}
+return[_3,_2]}
+,isc.A.setValueMap=function isc_SelectItem_setValueMap(){this.Super("setValueMap",arguments);if(this.$192)delete this.$192;if(this.hasPickList()){if(this.pickList.isVisible()&&this.pickList.isDrawn()){this.pickList.hide()}
+delete this.pickList.formItem}
+var _1=this.getValue(),_2=this.$190(_1);if(_1!=_2){this.setValue(_2)}else{this.setElementValue(this.mapValueToDisplay(_2))}}
+,isc.A.hasPickList=function isc_SelectItem_hasPickList(){return(this.pickList&&!this.pickList.destroyed&&this.pickList.formItem==this)}
+,isc.A.pickListVisible=function isc_SelectItem_pickListVisible(){return(this.hasPickList()&&this.pickList.isDrawn()&&this.pickList.isVisible())}
+,isc.A.cleared=function isc_SelectItem_cleared(){var _1=this.Super("cleared",arguments);if(this.pickListVisible())this.pickList.hide();return _1}
+,isc.A.filterComplete=function isc_SelectItem_filterComplete(){if(this.allowEmptyValue&&!this.multiple&&this.$19m()){var _1=this.pickList.data,_2=_1.isLocal()?_1.allRows:_1.localData,_3=this.getValueFieldName();if(_2&&!_2.find(_3,null)){var _4={};_4[_3]=null;_1.insertCacheData({},0)}}
+var _5=isc.PickList.getPrototype().filterComplete;_5.apply(this,arguments)}
+);isc.B._maxIndex=isc.C+55;isc.ClassFactory.mixInInterface("SelectItem","PickList");isc.SelectItem.registerStringMethods({dataArrived:"startRow,endRow,data",getPickListFilterCriteria:""})}else{isc.ClassFactory.defineClass("SelectItem","NativeSelectItem")}
+isc.defineClass("CycleItem","FormItem");isc.A=isc.CycleItem.getPrototype();isc.A.canSelectText=false;isc.A.canFocus=true;isc.A.iconVAlign="middle";isc.A=isc.CycleItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.handleKeyPress=function isc_CycleItem_handleKeyPress(){var _1=isc.EH.getKey();var _2=this.isReadOnly();if(!_2&&_1=="Space"){this.advanceValue();return false}
+return this.Super("handleKeyPress",arguments)}
+,isc.A.handleClick=function isc_CycleItem_handleClick(){if(this.isDisabled()||this.isReadOnly())return;if(!this.hasFocus)this.focusInItem();this.advanceValue()}
+,isc.A.handleDoubleClick=function isc_CycleItem_handleDoubleClick(){if(this.isDisabled()||this.isReadOnly())return;this.advanceValue()}
+,isc.A.advanceValue=function isc_CycleItem_advanceValue(){var _1=this.getValueMap();if(isc.isA.Object(_1)&&!isc.isA.Array(_1)){_1=isc.getKeys(_1)}
+if(_1==null||_1.length<2){this.logInfo("CycleItem is non interactive as there are no options for this item.");return}
+var _2=this.getValue(),_3=_1.indexOf(_2);if(_3==_1.length-1)_3=-1;var _4=_1[_3+1];if(!this.compareValues(_4,this._value)){var _5=this.mapValueToDisplay(_4);this.setElementValue(_5,_4);if(isc.Canvas.ariaEnabled())this.setAriaState("checked",!!_4);this.$10y(_4)}}
+,isc.A.setElementReadOnly=function isc_CycleItem_setElementReadOnly(_1){this.$176(!_1&&!this.isDisabled())}
+);isc.B._maxIndex=isc.C+5;isc.defineClass("CheckboxItem","CycleItem");isc.A=isc.CheckboxItem;isc.A.trueFalseValueMap=[true,false];isc.A.trueFalseNullValueMap=[true,false,null];isc.A=isc.CheckboxItem.getPrototype();isc.A.textBoxStyle="labelAnchor";isc.A.showLabel=true;isc.A.height=20;isc.A.requiredTitlePrefix="<b>";isc.A.requiredTitleSuffix="</b>";isc.A.valueIconLeftPadding=4;isc.A.valueIconRightPadding=3;isc.A.showValueIconOver=true;isc.A.showValueIconFocused=true;isc.A.showValueIconDown=true;isc.A.showValueIconDisabled=true;isc.A.checkedImage="[SKINIMG]/DynamicForm/checked.gif";isc.A.uncheckedImage="[SKINIMG]/DynamicForm/unchecked.gif";isc.A.partialSelectedImage="[SKINIMG]/DynamicForm/partialcheck.gif";isc.A.unsetImage="[SKINIMG]/DynamicForm/unsetcheck.gif";isc.A.valueIconWidth=13;isc.A.valueIconHeight=13;isc.A=isc.CheckboxItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.allowEmptyValue=false;isc.A.$18q="true";isc.A.$18r="false";isc.A.emptyValueKey="**NULL**";isc.A.$13u="Over";isc.A.$13v="Down";isc.A.$13w="Disabled";isc.A.$20a="height:";isc.A.$ph="px";isc.B.push(isc.A.getValueMap=function isc_CheckboxItem_getValueMap(){if(this.$20b)return this.$20b;var _1=this.Super("getValueMap",arguments);if(_1!=null){var _2=false,_3=isc.isAn.Object(_1);if(isc.isAn.Array(_1)){_3=false;if(_1.length!=2){_1=null}else{var _4=_1.indexOf(this.$18r);if(_4!=-1)_1[_4]=false;var _5=_1.indexOf(this.$18q);if(_5!=-1)_1[_5]=true;if(!((_1[0]&&!_1[1])||(!_1[0]&&_1[1]))){this.logInfo("Checkbox item created with valueMap:"+_1+"which has no explicit true/false display values. Mapping the first value to true and the second to false.");var _6={};_6[_1[0]]=true;_6[_1[1]]=false;this.valueMap=_1=_6;_3=true}else{_2=true}}}
+if(_3){var _7=[],_8=[],_9;for(var _10 in _1){if(_7.length==2){_9=true;break}
+var _11=_1[_10];if(_10==this.$18r)_10=false;else if(_10==this.$18q)_10=true;if(_11==this.$18r){_11=_1[_10]=false}else if(_11==this.$18q){_11=_1[_10]=true}
+_8[_8.length]=_10;_7[_7.length]=_11}
+if(_7.length!=2)_9=true;if(!_9){if((_7[0]&&!_7[1])||(!_7[0]&&_7[1])){}else if((_8[0]&&!_8[1])||(!_8[0]&&_8[1])){_1=_8}else _9=true}
+if(_9)_1=null}else if(!_2){_1=null}}
+if(_1&&this.allowEmptyValue){if(_2)_1.add(null);else _1[this.emptyValueKey]=null}
+return(this.$20b=_1||(this.allowEmptyValue?isc.CheckboxItem.trueFalseNullValueMap:isc.CheckboxItem.trueFalseValueMap))}
+,isc.A.$17d=function isc_CheckboxItem__unmapKey(){var _1=this.Super("$17d",arguments);if(_1==this.emptyValueKey)_1=null;return _1}
+,isc.A.setValueMap=function isc_CheckboxItem_setValueMap(){this.$20b=null;return this.Super("setValueMap",arguments)}
+,isc.A.init=function isc_CheckboxItem_init(_1,_2,_3,_4){this.invokeSuper(isc.CheckboxItem,"init",_1,_2,_3,_4);if(this.showValueIconOnly==null)this.showValueIconOnly=!this.showLabel;if(this.textAlign==null&&this.align!=null){this.textAlign=this.align}}
+,isc.A.setShowLabel=function isc_CheckboxItem_setShowLabel(_1){this.showLabel=_1;this.showValueIconOnly=!_1;if(this.isDrawn())this.redraw()}
+,isc.A.mapValueToDisplay=function isc_CheckboxItem_mapValueToDisplay(_1,_2,_3,_4){if(this.labelAsTitle)return isc.emptyString;var _5=this.invokeSuper(isc.CheckboxItem,"getTitleHTML",_1,_2,_3,_4);var _6=this.form;if((this.required||this.$11m)&&_6&&_6.hiliteRequiredFields){_5=this.requiredTitlePrefix+_5+this.requiredTitleSuffix}
+return _5}
+,isc.A.getValueIcon=function isc_CheckboxItem_getValueIcon(_1){var _2=this.getValueMap();if(!isc.isAn.Array(_2)&&isc.isAn.Object(_2))_1=_2[_1];if(_1)return this.checkedImage;else if(_1===false)return this.uncheckedImage;else{if(this.showUnsetImage!=null){return this.showUnsetImage?this.unsetImage:this.uncheckedImage}
+return this.allowEmptyValue?this.unsetImage:this.uncheckedImage}}
+,isc.A.getTitleHTML=function isc_CheckboxItem_getTitleHTML(_1,_2,_3){if(this.labelAsTitle)return this.invokeSuper(isc.CheckboxItem,"getTitleHTML",_1,_2,_3);return isc.emptyString}
+,isc.A.$15s=function isc_CheckboxItem__writeOuterTable(){return true}
+,isc.A.getTextBoxHeight=function isc_CheckboxItem_getTextBoxHeight(){return null}
+,isc.A.getTextBoxCellCSS=function isc_CheckboxItem_getTextBoxCellCSS(){var _1=isc.Canvas.$42a;var _2=this.invokeSuper(isc.CheckboxItem,"getTextBoxHeight");if(_2&&isc.isA.Number(_2))
+_1+=this.$20a+_2+this.$ph;return _1}
+,isc.A.$85m=function isc_CheckboxItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+12;isc.ClassFactory.defineClass("NativeCheckboxItem","FormItem");isc.A=isc.NativeCheckboxItem.getPrototype();isc.A.textBoxStyle="labelAnchor";isc.A.implementsPromptNatively=isc.screenReader;isc.A.$183="CHECKBOX";isc.A.$125=true;isc.A.showLabel=true;isc.A.$16b={onclick:isc.FormItem.$12y};isc.A=isc.NativeCheckboxItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$20c=["<TABLE role='presentation' CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>","<TD WIDTH=20><INPUT TYPE=",," NAME=",," ID=",,,,,,," handleNativeEvents=false ",,,," TABINDEX=",,(isc.Browser.isMoz?" STYLE='-moz-user-focus:":null),,"></TD>",,"</TR></TABLE>"];isc.A.$20d=["<TD CLASS='",,"' ALIGN=LEFT",,,,," style='",,"'>",,"</TD>"];isc.A.$20e=["<A HREF='javascript:void ",,".boxTitleClick()' ONMOUSEOVER='window.status = \"",,"\"; return true' ONMOUSEOUT='window.status = \"\"; return true' CLASS='",,"' title=\"",,"\">",,"</A>"];isc.B.push(isc.A.getInnerWidth=function isc_NativeCheckboxItem_getInnerWidth(_1,_2,_3,_4){if(!this.showLabel||this.showValueIconOnly){return 20}
+return this.invokeSuper(isc.NativeCheckboxItem,"getInnerWidth",_1,_2,_3,_4)}
+,isc.A.getElementHTML=function isc_NativeCheckboxItem_getElementHTML(_1){var _2=this.form.getID(),_3=this.getItemID(),_4=this.$20c,_5=this.getAnchorTitle();_4[2]=this.$183;_4[4]=this.getElementName();_4[6]=this.getDataElementId();_4[7]=this.$155();if(this.value!=null){_4[8]=" VALUE='";_4[9]=this.value;_4[10]="'";if(this.containerWidget&&this.containerWidget.isPrinting){if(_1==this.value)_4[10]+=" CHECKED='true'"}}else{_4[8]=null;_4[9]=null;_4[10]=null}
+if(this.isDisabled()||this.isReadOnly())_4[11]=" DISABLED";else _4[11]=null;if(this.implementsPromptNatively){if(this.prompt!=null){_4[13]=" TITLE='";_4[14]=this.prompt;_4[15]="'"}else{_4[13]=_4[14]=_4[15]=null}}
+var _6=this.$154();_4[17]=_6;if(isc.Browser.isMoz){_4[19]=(_6>0?"normal;'":"ignore;'")}
+if(this.showLabel&&!this.showValueIconOnly){var _7=this.getElementWidth(),_8=this.getInnerHeight();if(isc.isA.Number(_7))_7=Math.max(20,_7-20);if(isc.Browser.isSafari&&!this.isDisabled()&&(isc.Browser.isChrome?isc.Browser.safariVersion<535:isc.Browser.safariVersion<534.5))
+{var _9=this.$20e;_9[1]=_3;_9[3]=this.prompt;_9[5]=this.getTextBoxStyle();_9[7]=this.prompt;_9[9]=_5;_5=_9.join(isc.emptyString)}
+var _10=this.$20d;_10[1]=this.getTextBoxStyle();if(_7!=null){_10[3]=" WIDTH=";_10[4]=_7}else{_10[3]=null;_10[4]=null}
+if(_8!=null){_10[5]=" HEIGHT=";_10[6]=_8}else{_10[5]=null;_10[6]=null}
+if(this.wrap==false){_10[8]=this.$136}else{_10[8]=null}
+_10[10]=_5;_4[21]=_10.join(isc.emptyString)}else{_4[21]=null}
+return _4.join(isc.emptyString)}
+,isc.A.getOuterElement=function isc_NativeCheckboxItem_getOuterElement(_1,_2,_3){if(!this.isDrawn())return null;var _4;if(!this.$15s(this.$158)&&!this.showPickerIcon){_4=this.getDataElement()}
+return this.invokeSuper(isc.NativeCheckboxItem,"getOuterElement",_1,_2,_3)}
+,isc.A.getTitleHTML=function isc_NativeCheckboxItem_getTitleHTML(){return""}
+,isc.A.getAnchorTitle=function isc_NativeCheckboxItem_getAnchorTitle(_1,_2,_3,_4){return this.invokeSuper(isc.NativeCheckboxItem,"getTitleHTML",_1,_2,_3,_4)}
+,isc.A.setElementValue=function isc_NativeCheckboxItem_setElementValue(_1){var _2=this.getDataElement();if(!_2)return null;return _2.checked=(_1&&_1!="false")}
+,isc.A.getElementValue=function isc_NativeCheckboxItem_getElementValue(){var _1=this.getDataElement();if(!_1)return null;return(_1.checked==true)}
+,isc.A.boxTitleClick=function isc_NativeCheckboxItem_boxTitleClick(){var _1=this.getDataElement();if(_1)_1.checked=!_1.checked;this.form.elementChanged(this.getItemID())}
+,isc.A.setElementReadOnly=function isc_NativeCheckboxItem_setElementReadOnly(_1){this.$860(_1)}
+,isc.A.updateDisabled=function isc_NativeCheckboxItem_updateDisabled(){if(this.isDrawn())this.redraw()}
+);isc.B._maxIndex=isc.C+10;isc.ClassFactory.defineClass("HeaderItem","FormItem");isc.A=isc.HeaderItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.shouldSaveValue=false;isc.A.defaultValue="Header";isc.A.height=20;isc.A.showTitle=false;isc.A.textBoxStyle="headerItem";isc.A.colSpan="*";isc.A.startRow=true;isc.A.endRow=true;isc.A.emptyDisplayValue=" ";isc.B.push(isc.A.isEditable=function isc_HeaderItem_isEditable(){return false}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("SectionItem","CanvasItem");isc.A=isc.SectionItem.getPrototype();isc.A.shouldSaveValue=false;isc.A.defaultValue="Section Header";isc.A.sectionVisible=true;isc.A.sectionExpanded=true;isc.A.sectionHeaderClass="SectionHeader";isc.A.canCollapse=true;isc.A.autoDestroy=true;isc.A.showTitle=false;isc.A.startRow=true;isc.A.endRow=true;isc.A.colSpan="*";isc.A.width="*";isc.A.height=20;isc.addGlobal("GroupItem",isc.SectionItem);isc.A=isc.SectionItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_SectionItem_init(){if(this.sectionVisible==false)this.sectionExpanded=false;this.Super("init",arguments)}
+,isc.A.$18y=function isc_SectionItem__createCanvas(){var _1=isc.ClassFactory.getClass(this.sectionHeaderClass),_2={autoDraw:false,section:this,title:this.defaultValue,expanded:this.sectionExpanded,layout:this,height:this.height,canCollapse:this.canCollapse,canDrag:false,getCurrentCursor:function(){if(this.canvasItem&&this.canvasItem.cursor!=null)return this.canvasItem.cursor;return this.canCollapse==false?isc.Canvas.DEFAULT:isc.Canvas.HAND}};if(this.baseStyle!=null)_2.baseStyle=this.baseStyle;if(this.printStyleName!=null)_2.printStyleName=this.printStyleName;isc.addProperties(_2,this.canvasDefaults,this.canvasProperties);var _3=_1.create(_2);this.canvas=_3;this.Super("$18y",arguments)}
+,isc.A.isEditable=function isc_SectionItem_isEditable(){return false}
+,isc.A.isExpanded=function isc_SectionItem_isExpanded(){return this.sectionExpanded==true?true:false}
+,isc.A.setValue=function isc_SectionItem_setValue(_1){this.Super("setValue",arguments);if(this.canvas)this.canvas.setTitle(this.getValue())}
+,isc.A.sectionHeaderClick=function isc_SectionItem_sectionHeaderClick(){this.cellClick()}
+,isc.A.cellClick=function isc_SectionItem_cellClick(){if(this.sectionExpanded){this.collapseSection()}else{this.expandSection()}}
+,isc.A.expandSection=function isc_SectionItem_expandSection(){this.form.$100(this);this.$20f();if(this.itemIds==null){this.logWarn("sectionItem defined with no items or itemIds");return}
+for(var i=0;i<this.itemIds.length;i++){var _2=this.itemIds[i],_3=this.form.getItem(_2);if(_3==null){this.logWarn("expandSection: no such item: "+_2);continue}
+if(_3.showIf==null&&_3.$20g!=null)_3.showIf=_3.$20g;_3.show(true)}
+this.canvas.setExpanded(true);this.sectionExpanded=true;this.form.$10m=true}
+,isc.A.$20f=function isc_SectionItem__createItems(){if(this.items!=null&&!this.$20h){this.form.addItems(this.items,this.form.items.indexOf(this)+1);this.itemIds=[];for(var i=0;i<this.items.length;i++){this.itemIds[i]=this.items[i].getFieldName();if(this.itemIds[i]==null){this.logWarn("unable to include item:"+this.items[i]+" with no name in section")}}
+this.$20h=true}}
+,isc.A.addItem=function isc_SectionItem_addItem(_1,_2){this.form.addItems(_1,this.form.items.indexOf(this)+1+(_2||0));this.itemIds=this.itemIds||[];this.itemIds.add(_1.name)}
+,isc.A.removeItem=function isc_SectionItem_removeItem(_1){var _2=(isc.isA.Object(_1)?_1.name:_1);this.itemIds.remove(_2);this.form.removeItems(_1)}
+,isc.A.getItem=function isc_SectionItem_getItem(_1){return this.form.getItem(_1)}
+,isc.A.collapseSection=function isc_SectionItem_collapseSection(){this.form.$101(this);if(this.itemIds==null){if(this.items==null||this.$20h){this.logWarn("collapseSection with no sectionItem.itemIds");return}}else{for(var i=0;i<this.itemIds.length;i++){var _2=this.itemIds[i],_3=this.form.getItem(_2);if(_3==null){this.logWarn("collapseSection: no such item: "+_2);continue}
+if(_3.showIf!=null)_3.$20g=_3.showIf;_3.hide()}}
+this.canvas.setExpanded(false);this.sectionExpanded=false;this.form.$10m=true}
+,isc.A.$85m=function isc_SectionItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+14;isc.ClassFactory.defineClass("HiddenItem","FormItem");isc.A=isc.HiddenItem.getPrototype();isc.A.showTitle=false;isc.A.cellStyle=null;isc.A.width=0;isc.A.height=0;isc.A.colSpan=0;isc.A.rowSpan=0;isc.A.$125=true;isc.A.canFocus=false;isc.A=isc.HiddenItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.isEditable=function isc_HiddenItem_isEditable(){return false}
+,isc.A.getInnerHTML=function isc_HiddenItem_getInnerHTML(_1){var _2=isc.StringBuffer.concat("<INPUT ID='",this.getDataElementId(),"' TYPE=HIDDEN NAME=",this.getElementName(),">");return _2.toString()}
+,isc.A.getRowSpan=function isc_HiddenItem_getRowSpan(){return 0}
+,isc.A.getColSpan=function isc_HiddenItem_getColSpan(){return 0}
+,isc.A.shouldShowTitle=function isc_HiddenItem_shouldShowTitle(){return false}
+,isc.A.getErrorHTML=function isc_HiddenItem_getErrorHTML(_1){this.logError("Error in hidden field '"+this.getFieldName()+"':\r "+_1);return null}
+,isc.A.isStartRow=function isc_HiddenItem_isStartRow(){return false}
+,isc.A.isEndRow=function isc_HiddenItem_isEndRow(){return false}
+);isc.B._maxIndex=isc.C+8;isc.ClassFactory.defineClass("StaticTextItem","FormItem");isc.A=isc.StaticTextItem.getPrototype();isc.A.height=null;isc.A.width=null;isc.A.wrap=true;isc.A.textBoxStyle="staticTextItem";isc.A.redrawOnShowIcon=false;isc.A.useShortDateFormat=false;isc.A.escapeHTML=null;isc.A.emptyDisplayValue=" ";isc.A=isc.StaticTextItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$54t=" ";isc.B.push(isc.A.mapValueToDisplay=function isc_StaticTextItem_mapValueToDisplay(_1,_2,_3,_4,_5){var _6=this.invokeSuper(isc.StaticTextItem,"mapValueToDisplay",_1,_2,_3,_4,_5);var _7=this.escapeHTML||this.outputAsHTML||this.asHTML;if(_7&&(_1==null||_1==isc.emptyString)&&_6==this.$54t)
+{_7=false}
+if(isc.isA.String(_6)&&_7){_6=_6.asHTML()}
+return _6}
+,isc.A.isEditable=function isc_StaticTextItem_isEditable(){return false}
+,isc.A.$kk=function isc_StaticTextItem__canFocus(){if(this.canFocus!=null)return this.canFocus;return isc.screenReader}
+);isc.B._maxIndex=isc.C+3;isc.ClassFactory.defineClass("LinkItem","TextItem");isc.A=isc.LinkItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.disableIconsOnReadOnly=false;isc.A.wrap=false;isc.A.height=null;isc.A.canEdit=false;isc.A.readOnlyTextBoxStyle="staticTextItem";isc.B.push(isc.A.shouldApplyStaticTypeFormat=function isc_LinkItem_shouldApplyStaticTypeFormat(){return!this.canEdit}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.LinkItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$14g=["<DIV ID='",,"' "+isc.DynamicForm.$89+"='",,,"' CLASS='",,"' STYLE='",,"'>",,"</DIV>"];isc.A.inactiveEditorLinkDisabled=true;isc.B.push(isc.A.$15m=function isc_LinkItem__writeOutFocusProxy(){return(this.isReadOnly()?false:this.Super("$15m",arguments))}
+,isc.A.$20i=function isc_LinkItem__getLinkElement(){if(!this.isReadOnly())return this.Super("$20i",arguments);if(!this.isDrawn())return null;return(isc.Element.get(this.getID()+"$20j"))}
+,isc.A.getFocusElement=function isc_LinkItem_getFocusElement(){return(this.isReadOnly()?this.$20i():this.Super("getFocusElement",arguments))}
+,isc.A.hasDataElement=function isc_LinkItem_hasDataElement(){return!this.isReadOnly()}
+,isc.A.$kk=function isc_LinkItem__canFocus(){return(this.isReadOnly()?true:this.Super("$kk",arguments))}
+,isc.A.getTextBoxStyle=function isc_LinkItem_getTextBoxStyle(){if(!this.isReadOnly())return this.Super("getTextBoxStyle",arguments);if(this.$68y()&&this.printTextBoxStyle){return this.$15x(this.printTextBoxStyle)}
+return(this.readOnlyTextBoxStyle?this.$15x(this.readOnlyTextBoxStyle):null)}
+,isc.A.$92l=function isc_LinkItem__inactiveLinkClicked(_1){if(!this.inactiveEditorLinkDisabled){return this.$30i(_1)}
+if(!isc.Browser.isIE){_1.prenvtDefault()}
+return false}
+,isc.A.$30i=function isc_LinkItem__linkClicked(_1){var _2=(this.destroyed||!this.isDrawn()||!this.isVisible()||this.isDisabled());if(!_2){_2=isc.EH.targetIsMasked(this.containerWidget);if(_2&&(this.form!=this.containerWidget)){_2=isc.EH.targetIsMasked(this.form)}}
+if(!_2&&this.target=="javascript"){_2=true;this.handleClick()}
+if(_2){if(!isc.Browser.isIE){_1.preventDefault()}
+return false}
+return true}
+,isc.A.getReadOnlyHTML=function isc_LinkItem_getReadOnlyHTML(_1){var _2=this.getLinkHTML(_1);var _3=this.$14g;_3[1]=this.$15g();_3[3]=this.getID();_3[6]=this.getTextBoxStyle();_3[8]=this.getTextBoxCSS();_3[10]=_2;return _3.join(isc.emptyString)}
+,isc.A.getLinkHTML=function isc_LinkItem_getLinkHTML(_1){var _2=this.$xq(this._value);if(this.showValueIconOnly)return _2;if(_1!=null)_1=isc.iscToLocaleString(_1);if(_1==null)_1=isc.emptyString;var _3=this.linkTitle;if(_3==null)_3=_1;var _4=this.target;if(_4=="javascript"){_1="javascript:void"}
+var _5=[" onclick='if(window.",this.getID(),") return ",this.getID()];if(this.isInactiveHTML()){_5.add(".$92l(event); "+"else {if (event.preventDefault != null) event.preventDefault(); return false}' ")}else _5.add(".$30i(event);' ");_5=_5.join("");_1=isc.Canvas.linkHTML(_1,_3,_4,(this.getID()+"$20j"),this.getGlobalTabIndex(),this.accessKey,_5,isc.DynamicForm.$9a+"='"+isc.DynamicForm.$9c+"'");if(_2!=null)_1=_2+_1;return _1}
+,isc.A.setElementValue=function isc_LinkItem_setElementValue(_1){if(!this.isReadOnly())return this.Super("setElementValue",arguments);if(this.isDrawn()){var _2=this.$15h();if(_2)_2.innerHTML=this.getLinkHTML(_1);this.$159()}}
+,isc.A.setLinkTitle=function isc_LinkItem_setLinkTitle(_1){this.linkTitle=_1;this.redraw()}
+,isc.A.setElementReadOnly=function isc_LinkItem_setElementReadOnly(_1){this.redraw()}
+);isc.B._maxIndex=isc.C+13;isc.ClassFactory.defineClass("PasswordItem","TextItem");isc.A=isc.PasswordItem.getPrototype();isc.A.$183="PASSWORD";isc.ClassFactory.defineClass("RadioGroupItem","ContainerItem");isc.A=isc.RadioGroupItem.getPrototype();isc.A.itemHeight=20;isc.A.vertical=true;isc.A.prompt=null;isc.A.textBoxStyle="labelAnchor";isc.A.writeOutLabelTag=false;isc.A=isc.RadioGroupItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_RadioGroupItem_init(){if(this.disabledValues!=null){this.$821={};for(var i=0;i<this.disabledValues.length;i++){var _2=this.disabledValues[i];this.$821[_2]=true}}
+return this.Super("init",arguments)}
+,isc.A.$11d=function isc_RadioGroupItem__useHiddenDataElement(){return false}
+,isc.A.setItems=function isc_RadioGroupItem_setItems(){var _1=this.getValueMap();if(!this.itemCache)this.itemCache={};var _2=[];if(isc.isAn.Array(_1)){for(var i=0;i<_1.length;i++){var _4=_1[i];_2.add(this.$20k(_4,_4))}}else{for(var _4 in _1){var _5=_1[_4];_2.add(this.$20k(_5,_4))}}
+return this.Super("setItems",[_2])}
+,isc.A.$20k=function isc_RadioGroupItem__getRadioItem(_1,_2){var _3=this.itemCache[_2+"|"+_1];if(_3){delete _3._value;delete _3.hasFocus;delete _3.disabled}else{var _4;if(this.itemPrompt){var _5=new RegExp("\\*","g");_4=this.itemPrompt.replace(_5,_1)}
+var _6={type:"radio",name:"$540"+_2,value:_2,getElementName:function(){return this.parentItem.getElementName()},title:_1,prompt:_4,height:this.itemHeight,$8l:this.vertical,textBoxStyle:this.textBoxStyle,wrap:this.wrap,updateValue:function(){this.parentItem.updatePreviousSelection(this.value);return this.Super("updateValue",arguments)},setDisabled:function(_8){this.parentItem.$822(this.value,_8);return this.Super("setDisabled",arguments)},shouldSaveValue:false,suppressItemChanged:true};isc.addProperties(_6,this.itemProperties);var _7=this;if(!_6.itemHoverHTML&&this.valueHoverHTML){_6.itemHoverHTML=function(){return _7.valueHoverHTML(_2,_7,_7.form)}}
+_3=this.itemCache[_2+"|"+_1]=isc.FormItemFactory.makeItem(_6)}
+if(this.$821!=null&&this.$821[_2]!=null){_3.disabled=this.$821[_2]}
+return _3}
+,isc.A.getItemValue=function isc_RadioGroupItem_getItemValue(_1){var _2=_1.value;if(_2==this.getValue())return _2;return _1.unselectedValue}
+,isc.A.itemForValue=function isc_RadioGroupItem_itemForValue(_1){return this["$540"+_1]}
+,isc.A.setValueDisabled=function isc_RadioGroupItem_setValueDisabled(_1,_2){if(this.$821!=null&&this.$821[_1]==_2)return;var _3=this.itemForValue(_1);if(_3&&this.items.contains(_3)){_3.setDisabled(_2)}else{this.$821[_1]=_2}}
+,isc.A.$822=function isc_RadioGroupItem__itemDisabled(_1,_2){if(this.$821==null)this.$821={};this.$821[_1]=_2}
+,isc.A.getInnerHTML=function isc_RadioGroupItem_getInnerHTML(_1){this.setItems();return this.Super("getInnerHTML",arguments)}
+,isc.A.isEditable=function isc_RadioGroupItem_isEditable(){return true}
+,isc.A.setElementReadOnly=function isc_RadioGroupItem_setElementReadOnly(_1){}
+,isc.A.setValue=function isc_RadioGroupItem_setValue(_1){this.$17g=true;var _2=(this.valueMap==null)||(isc.isAn.Array(this.valueMap)?!this.valueMap.contains(_1):!isc.propertyDefined(this.valueMap,_1));if(_1==null||_2){_1=this.getDefaultValue()}
+if(this.items!=null){var _3=this.itemForValue(_1);if(_3!=null){this.itemForValue(_1).setValue(_1)}
+if(this._value!=null&&this._value!=_1){var _4=this.itemForValue(this._value);if(_4)_4.setValue(null)}}
+this.saveValue(_1)}
+,isc.A.updatePreviousSelection=function isc_RadioGroupItem_updatePreviousSelection(_1){var _2=this.getValue();if(isc.isA.String(_1))_2=_2+"";if(_2==null||_1==_2||this.itemForValue(_2)==null)
+{return}
+this.itemForValue(_2).updateValue()}
+,isc.A.updateValue=function isc_RadioGroupItem_updateValue(){var _1;for(var i=0;i<this.items.length;i++){_1=this.items[i].getValue();if(_1!=null)break}
+if(_1==this._value)return;if(this.handleChange(_1,this._value)==false)return;_1=this.$17n;this.saveValue(_1);this.handleChanged(_1)}
+,isc.A.setValueMap=function isc_RadioGroupItem_setValueMap(_1){this.Super("setValueMap",arguments);this.redraw()}
+,isc.A.getHeight=function isc_RadioGroupItem_getHeight(){var _1=this.getValueMap(),_2=0;if(isc.isAn.Array(_1)){_2=_1.length}else{for(var _3 in _1){_2++}}
+return _2*this.itemHeight}
+);isc.B._maxIndex=isc.C+16;isc.ClassFactory.defineClass("RadioItem","NativeCheckboxItem");isc.A=isc.RadioItem.getPrototype();isc.A.$183="RADIO";isc.A.value=true;isc.A.defaultValue=null;isc.A=isc.RadioItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setElementValue=function isc_RadioItem_setElementValue(_1){var _2=this.getDataElement();if(!_2)return null;if(isc.isA.String(this.value))_1=(_1+"");return _2.checked=(this.value==_1)}
+,isc.A.getElementValue=function isc_RadioItem_getElementValue(){var _1=this.getDataElement(),_2=this.value,_3=this.unselectedValue;if(!_1)return _3;return(_1.checked?_2:_3)}
+,isc.A.boxTitleClick=function isc_RadioItem_boxTitleClick(){var _1=this.getDataElement();if(_1&&!_1.checked){_1.checked=true;this.form.elementChanged(this.getItemID())}}
+,isc.A.mapValueToDisplay=function isc_RadioItem_mapValueToDisplay(_1){return _1}
+,isc.A.mapDisplayToValue=function isc_RadioItem_mapDisplayToValue(_1){return _1}
+,isc.A.setElementReadOnly=function isc_RadioItem_setElementReadOnly(_1){this.$176(!_1&&!this.isDisabled())}
+);isc.B._maxIndex=isc.C+6;isc.ClassFactory.defineClass("ResetItem","ButtonItem");isc.A=isc.ResetItem.getPrototype();isc.A.title="Reset";isc.A=isc.ResetItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.handleClick=function isc_ResetItem_handleClick(){if(this.Super("handleClick",arguments)==false)return false;this.form.resetValues()}
+);isc.B._maxIndex=isc.C+1;if(isc.ListGrid){isc.defineClass("DateItem","ContainerItem");isc.A=isc.DateItem;isc.A.mapCache={};isc.A.DAY_MONTH_YEAR="DMY";isc.A.MONTH_DAY_YEAR="MDY";isc.A.YEAR_MONTH_DAY="YMD";isc.A.DAY_MONTH="DM";isc.A.MONTH_DAY="MD";isc.A.YEAR_MONTH="YM";isc.A.MONTH_YEAR="MY";isc.A.DEFAULT_START_DATE=Date.createLogicalDate(1995,0,1);isc.A.DEFAULT_END_DATE=Date.createLogicalDate(2015,11,31);isc.A.DEFAULT_CENTURY_THRESHOLD=25;isc.A.chooserWidth=150;isc.A.chooserHeight=171;isc.A=isc.DateItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.textFieldDefaults={name:"dateTextField",type:"text",changeOnBlur:true,changeOnKeypress:true,changed:function(){this.isDirty=true},blur:function(){this.isDirty=false;if(this.parentItem)this.parentItem.updateValue()},shouldSaveValue:false,getTextBoxWidth:function(){if(this.parentItem)return this.parentItem.getTextBoxWidth();return this.Super("getTextBoxWidth",arguments)},$887:true};isc.A.daySelectorDefaults={name:"daySelector",title:"Day",prompt:"Choose a day",type:"select",valueMap:"this.parentItem.getDayOptions()",shouldSaveValue:false,saveValue:function(){this.Super("saveValue",arguments);this.parentItem.updateValue()},getErrorWidth:function(){return 0},cssText:"padding-left:3px;",width:45,suppressItemChanged:true};isc.A.monthSelectorDefaults={name:"monthSelector",title:"Month",prompt:"Choose a month",type:"select",valueMap:"this.parentItem.getMonthOptions()",shouldSaveValue:false,saveValue:function(){this.Super("saveValue",arguments);this.parentItem.updateValue()},getErrorWidth:function(){return 0},width:55,suppressItemChanged:true};isc.A.yearSelectorDefaults={name:"yearSelector",title:"Year",prompt:"Choose a year",type:"select",valueMap:"this.parentItem.getYearOptions()",shouldSaveValue:false,saveValue:function(){this.Super("saveValue",arguments);this.parentItem.updateValue()},cssText:"padding-left:3px;",getErrorWidth:function(){return 0},width:60,suppressItemChanged:true};isc.A.width=150;isc.A.cellPadding=0;isc.A.useSharedPicker=true;isc.A.pickerConstructor="DateChooser";isc.A.pickerDefaults={width:isc.DateItem.chooserWidth,height:isc.DateItem.chooserHeight,border:"1px solid black;",showCancelButton:true,autoHide:true};isc.A.textAlign=isc.Canvas.RIGHT;isc.A.enforceDate=false;isc.A.invalidDateStringMessage="Invalid date";isc.A.showPickerIcon=true;isc.A.pickerIconWidth=20;isc.A.pickerIconHeight=20;isc.A.pickerIconSrc="[SKIN]/DynamicForm/DatePicker_icon.gif";isc.A.pickerIconHSpace=3;isc.A.pickerIconPrompt="Show Date Chooser";isc.A.pickerIconProperties={};isc.A.startDate=isc.DateItem.DEFAULT_START_DATE;isc.A.endDate=isc.DateItem.DEFAULT_END_DATE;isc.A.centuryThreshold=isc.DateItem.DEFAULT_CENTURY_THRESHOLD;isc.B.push(isc.A.getOperator=function isc_DateItem_getOperator(_1){if(!this.operator)return"equals";return this.operator}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.DateItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$792="[01][0-9]";isc.A.$793="[0-3]#";isc.A.$794="####";isc.A.$73d="[0-2][0-9]:[0-6][0-9]";isc.A.$73r={"MDY":"toUSShortDate","DMY":"toEuropeanShortDate","YMD":"toJapanShortDate"};isc.A.selectorPadding=2;isc.B.push(isc.A.init=function isc_DateItem_init(){if(this.useTextField==null)this.useTextField=this.useMask||false;return this.Super("init",arguments)}
+,isc.A.getSelectorFormat=function isc_DateItem_getSelectorFormat(){if(this.selectorFormat){return this.selectorFormat}else if(this.inputFormat&&isc.isA.String(this.inputFormat)){return this.inputFormat}else{var _1=Date.getInputFormat();if(isc.isA.String(_1))return _1;this.logInfo("DateItem selectorFormat unspecified - assuming US format");return"MDY"}}
+,isc.A.getInputFormatMask=function isc_DateItem_getInputFormatMask(_1){var _2=this.maskDateSeparator||this.$79w();var _3;if(_1=="YMD"){_3=[this.$794,_2,this.$792,_2,this.$793]}else if(_1=="DMY"){_3=[this.$793,_2,this.$792,_2,this.$794]}else{_3=[this.$792,_2,this.$793,_2,this.$794]}
+if(isc.isA.DateTimeItem(this)){_3.addList([" ",this.$73d])}
+return _3.join("")}
+,isc.A.$79w=function isc_DateItem__getDefaultDateSeparator(){return Date.getDefaultDateSeparator()}
+,isc.A.$79x=function isc_DateItem__getDefaultDateSeparatorRegex(){var _1=this.$79w();return new RegExp(_1,"/g")}
+,isc.A.setItems=function isc_DateItem_setItems(_1){var _2=isc.DateItem,_3=this.getSelectorFormat();if(_1!=null&&_1.length!=0){this.logWarn("setItems() called for dateItem with itemList:"+_1+" - ignoring, and making use of default date fields")}
+_1=this.items=[];if(this.useTextField){var _4={textAlign:this.textAlign,emptyDisplayValue:this.emptyDisplayValue,operator:this.operator,title:this.title};if(this.showHintInField){_4.showHintInField=this.showHintInField;_4.hint=this.hint;this.hint=null}
+var _5={};if(this.useMask){var _6=this.getInputFormat();if(!_6)_6="MDY";var _7=this.getInputFormatMask(_6);_5.mask=_7;_5.maskSaveLiterals=true;_5.maskOverwriteMode=true;if(this.inputFormat){this.dateFormatter=this.$73r[_6]}}
+var _8=isc.addProperties(_4,this.textFieldDefaults,_2.TEXT_FIELD,this.textFieldProperties,_5);_8.name="dateTextField";if(this.height&&(!this.textFieldProperties||!this.textFieldProperties.height))
+{_8.height=this.getTextBoxHeight()}
+_1.add(_8);var _9;this.daySelector=this.yearSelector=this.monthSelector=_9}else{for(var i=0;i<_3.length;i++){var _11=_3.charAt(i);var _12,_13,_14;if(_11=="D"){var _12;if(this.daySelectorProperties!=null){_12=isc.addProperties({},this.daySelectorDefaults,_2.DAY_SELECTOR,this.daySelectorProperties)}else{_12=isc.addProperties({},this.daySelectorDefaults,_2.DAY_SELECTOR)}
+_12.name="daySelector";_1.add(_12)}else if(_11=="M"){var _13;if(this.monthSelectorProperties!=null){_13=isc.addProperties({},this.monthSelectorDefaults,_2.MONTH_SELECTOR,this.monthSelectorProperties)}else{_13=isc.addProperties({},this.monthSelectorDefaults,_2.MONTH_SELECTOR)}
+_13.name="monthSelector";_1.add(_13)}else if(_11=="Y"){var _14;if(this.yearSelectorProperties!=null){_14=isc.addProperties({},this.yearSelectorDefaults,_2.YEAR_SELECTOR,this.yearSelectorProperties)}else{_14=isc.addProperties({},this.yearSelectorDefaults,_2.YEAR_SELECTOR)}
+_14.name="yearSelector";_1.add(_14)}}}
+this.Super("setItems",[_1]);if(this.useTextField){this.textField=this.dateTextField}}
+,isc.A.getInnerWidth=function isc_DateItem_getInnerWidth(){if(this.useTextField){return this.Super("getInnerWidth",arguments)}
+var _1=0,_2=0;if(this.daySelector){_2+=1;_1+=this.daySelector.width}
+if(this.monthSelector){_2+=1;_1+=this.monthSelector.width}
+if(this.yearSelector){_2+=1;_1+=this.yearSelector.width}
+if(this.showPickerIcon)_1+=this.getPickerIconWidth();if(_2>0)_1+=(_2-1)*this.selectorPadding;return _1}
+,isc.A.isEditable=function isc_DateItem_isEditable(){return true}
+,isc.A.getEnteredValue=function isc_DateItem_getEnteredValue(){if(this.useTextField&&this.textField!=null){return this.textField.getEnteredValue()}
+return this.getValue()}
+,isc.A.setElementReadOnly=function isc_DateItem_setElementReadOnly(_1){}
+,isc.A.setValue=function isc_DateItem_setValue(_1){this.$17g=true;var _2=false;if(_1==null){var _3=this.getDefaultValue();var _4;if(_3!==_4){_1=_3;_2=true}}
+var _5=(isc.isA.Date(_1)&&isc.isA.Date(this._value)?(this.useLogicalDates()?(Date.compareLogicalDates(_1,this._value)==0):(Date.compareDates(_1,this._value)==0)):_1==this._value);var _6,_7;if(isc.is.emptyString(_1))_1=null;if(_1==null){_7=true;_6=_1}else{_6=this.parseDate(_1);if(_6==null){_7=true;_6=_1}}
+if(_7){var _8;if(!this.useTextField){_8=true}else if(this.enforceDate&&_1!=null){var _9=this.dateTextField;_8=!this.$20m||!_9||(_9.getValue()!=_1)}
+if(_8){this.logInfo("dateItem.setValue(): invalid date passed: '"+_1+"'. Ignoring this value. Non date values are only supported "+" for dateItems where useTextField is true and enforceDate is false.");return false}}
+if(!_7&&this.$20m){delete this.$20m;this.clearErrors();this.redraw()}
+this.saveValue(_6,_2);this.$20l=true;if(this.useTextField){if(this.dateTextField){if(_5&&this.dateTextField.isDirty){this.dateTextField.setValue(this.dateTextField._value)}else{var _10=_7?_6:this.formatDate(_6);this.dateTextField.setValue(_10);delete this.dateTextField.isDirty}}}
+if(this.daySelector)this.daySelector.setValue(_6.getDate());if(this.monthSelector)this.monthSelector.setValue(_6.getMonth());if(this.yearSelector)this.yearSelector.setValue(_6.getFullYear());delete this.$20l;return true}
+,isc.A.$17e=function isc_DateItem__setHiddenDataElementValue(_1){var _2=this.$15b();if(_2!=null){if(isc.isA.Date(_1))_2.value=_1.toDBDate();else _2.value=_1}}
+,isc.A.getCellHeight=function isc_DateItem_getCellHeight(){var _1=this.Super("getCellHeight",arguments);if(isc.Browser.isIE&&this.useTextField&&isc.isA.Number(_1))_1+=2;return _1}
+,isc.A.elementChanged=function isc_DateItem_elementChanged(){return}
+,isc.A.getCriteriaValue=function isc_DateItem_getCriteriaValue(){return this.parseDate(this.getValue())}
+,isc.A.updateValue=function isc_DateItem_updateValue(){if(this.$20l)return;this.$20l=true;var _1;if(this.useTextField){this.dateTextField.updateValue();var _2=this.dateTextField.getValue(),_3;var _4=_2;if(_2==isc.emptyString||_2==null)_1=null;else{_1=this.parseDate(_2);if(_1==null){_3=true;_1=_2}else{_4=this.formatDate(_1);if(_2!=_4){this.dateTextField.setValue(_4)}}}
+if(this._value==_1||(isc.isA.Date(this._value)&&(this.formatDate(this._value)==_4)))
+{delete this.$20l;return}
+if(this.enforceDate){if(this.$20m&&!_3){delete this.$20m;this.clearErrors();this.redraw()}else if(_3){this.logWarn("Invalid date string entered in date text field :"+_1);if(!this.$20m){this.$20m=true;this.setError(this.invalidDateStringMessage);this.redraw()}}}}else{_1=(this._value||this.getDefaultValue());_1=_1.duplicate();var _5,_6,_7;_5=(this.daySelector?this.daySelector.getValue():_1.getDate());_1.setDate(1);if(this.yearSelector){_7=this.yearSelector.getValue()
+_1.setYear(_7)}
+if(this.monthSelector){_6=this.monthSelector.getValue();_1.setMonth(_6)}
+_1.setDate(_5);if(_6!=_1.getMonth()){_5=_5-_1.getDate();if(this.daySelector)this.daySelector.setValue(_5);_1.setMonth(_6);_1.setDate(_5)}}
+delete this.$20l;if(this.compareValues(_1,this._value)==true)return false;if(this.handleChange(_1,this._value)==false)return;_1=this.$17n;this.saveValue(_1);this.handleChanged(_1)}
+,isc.A.saveValue=function isc_DateItem_saveValue(_1){if(isc.isA.Date(_1)&&_1.logicalDate==null&&_1.logicalTime==null){if(this.useLogicalDates())_1.logicalDate=true}
+return this.Super("saveValue",arguments)}
+,isc.A.resetValue=function isc_DateItem_resetValue(){var _1=this.form.$10s[this.getFieldName()];if(isc.isA.Date(_1)&&isc.isA.Date(this._value))
+_1=this._value.setTime(_1.getTime());this.setValue(_1)}
+,isc.A.getItemValue=function isc_DateItem_getItemValue(_1,_2){if(isc.isAn.emptyObject(_2))_2=null;var _3=isc.isA.Date(_2),_4=isc.isA.Date(this._value);if(_2==this._value||(_3&&_4&&(Date.compareDates(_2,this._value)==0)))
+{return _1.getValue()}
+if(_1==this.dateTextField)return _3?this.formatDate(_2):_2;else if(_1==this.daySelector)return _3?_2.getDate():null;else if(_1==this.monthSelector)return _3?_2.getMonth():null;else if(_1==this.yearSelector)return _3?_2.getFullYear():null}
+,isc.A.getDisplayValue=function isc_DateItem_getDisplayValue(){var _1=this.getValue();if(!isc.isA.Date(_1))return this.Super("getDisplayValue",arguments);if(this.useTextField||!this.items){return this.formatDate(_1)}else{if(!this.isDrawn()){if(this.yearSelector)this.yearSelector.setValue(_1.getFullYear());if(this.monthSelector)this.monthSelector.setValue(_1.getMonth());if(this.daySelector)this.daySelector.setValue(_1.getDate())}
+return this.items.map("getDisplayValue").join(" ")}}
+,isc.A.getDefaultValue=function isc_DateItem_getDefaultValue(){var _1=this.Super("getDefaultValue");if(!isc.isA.Date(_1)){var _2=this.parseDate(_1);if(isc.isA.Date(_2))_1=_2;else if(!this.useTextField||this.enforceDate){var _3;if(_1!=null){this.logWarn("Default DateItem value provided as:"+_1+". This is not recognized as a valid date - defaulting to a new date");_3=this.defaultValue==_1}
+if(!this.useTextField)_1=this.$603();if(_3)this.defaultValue=_1}}
+return _1}
+,isc.A.$603=function isc_DateItem__getEmptyDate(){var _1=Date.createLogicalDate();return _1}
+,isc.A.useLogicalDates=function isc_DateItem_useLogicalDates(){var _1=this.getType(),_2=isc.SimpleType.inheritsFrom(_1,"date"),_3=isc.SimpleType.inheritsFrom(_1,"datetime");return _1!=null&&_2&&!_3}
+,isc.A.getStartDate=function isc_DateItem_getStartDate(){var _1=this.startDate;if(isc.isA.String(_1))_1=this.parseDate(this.startDate);if(!isc.isA.Date(_1)){this.logWarn("startDate was not in valid date format - using default start date");_1=isc.DateItem.DEFAULT_START_DATE}
+return _1}
+,isc.A.getEndDate=function isc_DateItem_getEndDate(){var _1=this.endDate;if(isc.isA.String(_1))_1=this.parseDate(this.endDate);if(!isc.isA.Date(_1)){this.logWarn("endDate was not in valid date format - using default end date");_1=isc.DateItem.DEFAULT_END_DATE}
+return _1}
+,isc.A.$kk=function isc_DateItem__canFocus(){if(this.canFocus!=null)return this.canFocus;return true}
+,isc.A.focusInItem=function isc_DateItem_focusInItem(){if(!this.isVisible())return;if(this.useTextField){if(this.dateTextField)this.dateTextField.focusInItem()}else{var _1=this.getSelectorFormat(),_2=_1.charAt(0);if(_2=="D"&&this.daySelector)this.daySelector.focusInItem();if(_2=="M"&&this.monthSelector)this.monthSelector.focusInItem();if(_2=="Y"&&this.yearSelector)this.yearSelector.focusInItem()}}
+,isc.A.setSelectionRange=function isc_DateItem_setSelectionRange(_1,_2){if(this.dateTextField)return this.dateTextField.setSelectionRange(_1,_2)}
+,isc.A.getSelectionRange=function isc_DateItem_getSelectionRange(){if(this.dateTextField)return this.dateTextField.getSelectionRange()}
+,isc.A.selectValue=function isc_DateItem_selectValue(){if(this.dateTextField)return this.dateTextField.selectValue()}
+,isc.A.deselectValue=function isc_DateItem_deselectValue(_1){if(this.dateTextField)return this.dateTextField.deselectValue()}
+,isc.A.getDayOptions=function isc_DateItem_getDayOptions(){var _1=this.getStartDate(),_2=this.getEndDate();var _3=1,_4=31;if(_1.getYear()==_2.getYear()&&_1.getMonth()==_2.getMonth())
+{_3=_1.getDate()
+_4=_2.getDate()}
+var _5="day."+_3+"."+_4;if(isc.DateItem.mapCache[_5])return isc.DateItem.mapCache[_5];var _6=isc.DateItem.mapCache[_5]=[];for(var i=_3;i<=_4;i++)_6[i-_3]=i;return _6}
+,isc.A.getMonthOptions=function isc_DateItem_getMonthOptions(){var _1=this.getStartDate(),_2=this.getEndDate();var _3=0,_4=11;if(_1.getYear()==_2.getYear()){_3=_1.getMonth()
+_4=_2.getMonth()}
+var _5="month."+_3+"."+_4;if(isc.DateItem.mapCache[_5])return isc.DateItem.mapCache[_5];var _6=isc.DateItem.mapCache[_5]={};var _7=Date.getShortMonthNames();for(;_3<=_4;_3++){_6[_3]=_7[_3]}
+return _6}
+,isc.A.getYearOptions=function isc_DateItem_getYearOptions(){var _1=this.getStartDate().getFullYear(),_2=this.getEndDate().getFullYear();var _3="year."+_1+"."+_2;if(isc.DateItem.mapCache[_3])return isc.DateItem.mapCache[_3];var _4=isc.DateItem.mapCache[_3]=[];for(var i=_1;i<=_2;i++){_4[i-_1]=i}
+return _4}
+,isc.A.parseDate=function isc_DateItem_parseDate(_1,_2){if(isc.isA.Date(_1))return _1;if(this.parseEditorValue!=null){var _3=this.parseEditorValue(_1,this.form,this);return _3}
+if(_2==null)_2=this.getInputFormat();var _4=this.useLogicalDates();var _5=Date.parseInput(_1,_2,this.centuryThreshold,true,!_4);return _5}
+,isc.A.formatDate=function isc_DateItem_formatDate(_1){if(this.formatEditorValue!=null){var _2=this.form?this.form.values:{};return this.formatEditorValue(_1,_2,this.form,this)}
+if(!isc.isA.Date(_1))return _1;var _3=this.$45i(),_4=this.getType(),_5=isc.SimpleType.inheritsFrom(_4,"date"),_6=isc.SimpleType.inheritsFrom(_4,"datetime");return this.showTime?_1.toShortDatetime(_3,_6||!_5):_1.toShortDate(_3,_6||!_5)}
+,isc.A.getInputFormat=function isc_DateItem_getInputFormat(){if(this.inputFormat)return this.inputFormat;var _1=this.$45i();return Date.mapDisplayFormatToInputFormat(_1)}
+,isc.A.getPickerIcon=function isc_DateItem_getPickerIcon(_1,_2,_3,_4){var _5=this.invokeSuper(isc.DateItem,"getPickerIcon",_1,_2,_3,_4);if(_5.prompt==null)_5.prompt=this.pickerIconPrompt;return _5}
+,isc.A.showPicker=function isc_DateItem_showPicker(){if(!this.form.$10u)this.updateValue();if(!this.picker){if(this.useSharedPicker)this.picker=isc.DateChooser.getSharedDateChooser();else{this.picker=isc[this.pickerConstructor].create(isc.addProperties({},this.pickerDefaults,this.pickerProperties,{border:"none",_generated:true,autoHide:true,showCancelButton:true}))}}
+var _1=this.picker;var _2=_1.callingFormItem;if(_2!=this){if(_2)_2.ignore(_1,"dataChanged");this.observe(_1,"dataChanged","observer.pickerDataChanged(observed)");_1.callingFormItem=this;_1.callingForm=this.form;_1.locatorParent=this.form}
+_1.startYear=this.getStartDate().getFullYear();_1.endYear=this.getEndDate().getFullYear();return this.Super("showPicker",arguments)}
+,isc.A.getPickerRect=function isc_DateItem_getPickerRect(){var _1=this.getPageLeft(),_2=this.getPageTop(),_3=isc.DateItem.chooserWidth+3,_4=isc.DateItem.chooserHeight+3;_1+=Math.round((this.getVisibleWidth()-(this.getPickerIconWidth()/2))-
+(_3/ 2));_2+=Math.round((this.getPickerIconHeight()/2)-(_4/ 2));return[_1,_2]}
+,isc.A.pickerDataChanged=function isc_DateItem_pickerDataChanged(_1){var _2=_1.getData();var _3=_2.getFullYear(),_4=_2.getMonth(),_5=_2.getDate(),_6=_2.getTime();var _7=this.useLogicalDates();if(!_7){this.setToZeroTime(_2)}
+this.$20l=true;if(this.useTextField){var _8=this.formatDate(_2);this.dateTextField.setValue(_8)}else{var _2=this._value||this.getDefaultValue(),_9;if(this.yearSelector)this.yearSelector.setValue(_3);else{_2.setFullYear(_3);_9=true}
+if(this.monthSelector)this.monthSelector.setValue(_4);else{_2.setMonth(_4-1);_9=true}
+if(this.daySelector)this.daySelector.setValue(_5);else{_2.setDate(_5);_9=true}
+if(_9){this._value=_2}}
+this.$20l=false;this.updateValue();if(!this.hasFocus)this.focusInItem();var _10=this.getErrors();if(_10&&_10.length>0)this.validate();if(this.validateOnExit||this.form.validateOnExit){this.$84r=true}}
+,isc.A.setHint=function isc_DateItem_setHint(_1){if(this.useTextField&&this.showHintInField){this.dateTextField.setHint(_1)}else{this.Super("setHint",arguments)}}
+,isc.A.getPickerData=function isc_DateItem_getPickerData(){var _1=this.getValue();if(_1!=null){if(!isc.isA.Date(_1)){_1=new Date(_1)}
+if(isc.isA.Date(_1)&&!isNaN(_1.getTime()))return _1}
+return this.getDefaultChooserDate()}
+,isc.A.getDefaultChooserDate=function isc_DateItem_getDefaultChooserDate(){return this.defaultChooserDate}
+,isc.A.$85m=function isc_DateItem__shouldAllowExpressions(){if(this.useTextField){return this.Super("$85m",arguments)}else{return false}}
+,isc.A.propertyChanged=function isc_DateItem_propertyChanged(_1){if(_1=="useTextField"||_1=="useMask")this.setItems()}
+);isc.B._maxIndex=isc.C+46}
+if(isc.ListGrid){isc.defineClass("DateTimeItem","DateItem");isc.A=isc.DateTimeItem.getPrototype();isc.A.useTextField=true;isc.A.showTime=true}
+isc.ClassFactory.defineClass("SpacerItem","FormItem");isc.A=isc.SpacerItem.getPrototype();isc.A.shouldSaveValue=false;isc.A.showTitle=false;isc.A.width=20;isc.A.height=20;isc.A.showHint=false;isc.A.showIcons=false;isc.A=isc.SpacerItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.isEditable=function isc_SpacerItem_isEditable(){return false}
+,isc.A.getElementHTML=function isc_SpacerItem_getElementHTML(_1){return isc.Canvas.spacerHTML(this.width,this.height)}
+,isc.A.shouldShowTitle=function isc_SpacerItem_shouldShowTitle(){return false}
+);isc.B._maxIndex=isc.C+3;isc.ClassFactory.defineClass("RowSpacerItem","SpacerItem");isc.A=isc.RowSpacerItem.getPrototype();isc.A.showTitle=false;isc.A.colSpan="*";isc.A.startRow=true;isc.A.endRow=true;isc.A.width=20;isc.A.height=20;isc.ClassFactory.defineClass("SubmitItem","ButtonItem");isc.A=isc.SubmitItem.getPrototype();isc.A.title="Submit";isc.A=isc.SubmitItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.handleClick=function isc_SubmitItem_handleClick(){if(this.Super("handleClick",arguments)==false)return false;this.form.submit();this.form.completeEditing()}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("CancelItem","ButtonItem");isc.A=isc.CancelItem.getPrototype();isc.A.title="Cancel";isc.A=isc.CancelItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.handleClick=function isc_CancelItem_handleClick(){if(this.Super("handleClick",arguments)==false)return false;this.form.cancelEditing()}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("TextAreaItem","FormItem");isc.A=isc.TextAreaItem;isc.A.OFF="OFF";isc.A.SOFT="SOFT";isc.A.VIRTUAL="SOFT";isc.A.ON="HARD";isc.A.HARD="HARD";isc.A.PHYSICAL="HARD";isc.A=isc.TextAreaItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.wrap=isc.TextAreaItem.VIRTUAL;isc.A.width=150;isc.A.height=100;isc.A.textBoxStyle="textItem";isc.A.redrawOnShowIcon=false;isc.A.clipValue=true;isc.A.$125=true;isc.A.$15i=true;isc.A.emptyStringValue=null;isc.A.lineBreakValue="\n";isc.A.iconVAlign=isc.Canvas.TOP;isc.A.$16b={onmousedown:(isc.Browser.isIE?function(){var _1=this,_2=isc.DynamicForm.$mu(_1),_3=_2.item;if(_3)_3.$179()}:null)};isc.A.supportsSelectionRange=true;isc.A.printFullText=true;isc.B.push(isc.A.getEnteredValue=function isc_TextAreaItem_getEnteredValue(){return this.getElementValue()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.TextAreaItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.allowNativeResize=false;isc.A.minHeight=16;isc.A.applyStaticTypeFormat=false;isc.B.push(isc.A.getTextBoxCellCSS=function isc_TextAreaItem_getTextBoxCellCSS(){return this.$136}
+,isc.A.$143=function isc_TextAreaItem__sizeTextBoxAsContentBox(){return isc.Browser.isStrict}
+,isc.A.$429=function isc_TextAreaItem__willHandleInput(){return!isc.Browser.isIE}
+,isc.A.setElementReadOnly=function isc_TextAreaItem_setElementReadOnly(_1){this.$86y(_1)}
+,isc.A.getElementHTML=function isc_TextAreaItem_getElementHTML(_1,_2){var _3=this.form,_4=_3.getID(),_5=this.getItemID(),_6=isc.StringBuffer.create(),_7=this.$xq(_2);if(_7!=null)_6.append(_7);if(!this.showValueIconOnly){if(!this.printFullText||!this.$68y()){_6.append("<TEXTAREA NAME=",this.getElementName()," ID=",this.getDataElementId(),this.$155(),this.getElementStyleHTML(),(this.isDisabled()?" DISABLED ":""),(this.$17h()!="native"?" AUTOCOMPLETE=OFF ":""),((isc.Browser.isMoz||isc.Browser.isSafari)?(this.getBrowserSpellCheck()?" spellcheck=true":" spellcheck=false"):null)," WRAP=",this.wrap," TABINDEX=",this.$154(),(this.showTitle==false&&this.accessKey!=null?" ACCESSKEY="+this.accessKey:""),(this.$429?" ONINPUT='"+this.getID()+".$43g()'":null),(this.isReadOnly()||this.isInactiveHTML()?" READONLY=TRUE":null)," handleNativeEvents=false>",(this.isInactiveHTML()?_1:null),"</TEXTAREA>")}else{if(_1==null)_1="";_6.append("<DIV style='",(isc.isA.Number(this.width)?"width:"+this.width+"px;":null),"' class='",this.getTextBoxStyle(),"'>",_1.asHTML(),"</DIV>")}}
+return _6.release()}
+,isc.A.handleMouseMove=function isc_TextAreaItem_handleMouseMove(){var _1=this.Super("handleMouseMove",arguments);if(_1==false||!this.allowNativeResize)return false;if(isc.EH.mouseIsDown()&&this.$90g==null){this.$90g=isc.Page.setEvent("idle",this.getID()+".$90h()")}}
+,isc.A.$90h=function isc_TextAreaItem__checkForElementResize(){var _1=false;var _2=this.getDataElement();if(_2){if(_2.offsetWidth!=this.getTextBoxWidth())_1=true;if(_2.offsetHeight!=this.getTextBoxHeight())_1=true}
+if(_1)this.$90i();if(!isc.EH.mouseIsDown()){isc.Page.clearEvent("idle",this.$90g);this.$90g=null}}
+,isc.A.$90i=function isc_TextAreaItem__nativeElementResize(){var _1=this.containerWidget;if(_1)_1.$t6("Native textarea resize")}
+,isc.A.$12v=function isc_TextAreaItem__nativeElementFocus(_1,_2){var _3=this.Super("$12v",arguments);this.$66s();this.$84f=this.getEnteredValue();return _3}
+,isc.A.$12x=function isc_TextAreaItem__nativeElementBlur(_1,_2){var _3=this.Super("$12x",arguments);this.form.elementChanged(this);if(this.$84f==null||this.$84f!=this.getEnteredValue())
+{var _4=this.getValue();if(this.mapValueToDisplay){_4=this.mapValueToDisplay(_4)}
+this.setElementValue(_4)}
+if(this.showHintInField){var _5;var _4=this.getElementValue();if(_4===_5||_4==null||isc.is.emptyString(_4)){this.$66t()}}
+return _3}
+,isc.A.getElementStyleHTML=function isc_TextAreaItem_getElementStyleHTML(){var _1=this.getTextBoxWidth(),_2=this.getTextBoxHeight();return isc.StringBuffer.concat(" CLASS='"+this.getTextBoxStyle(),(isc.Browser.isMoz&&isc.isA.String(this.wrap)&&this.wrap.toLowerCase()!="off"?"' ROWS=10 COLS=10":"'")," STYLE='",this.getElementCSSText(_1,_2),"' ")}
+,isc.A.getElementCSSText=function isc_TextAreaItem_getElementCSSText(_1,_2){if(isc.isA.Number(_1)&&_1<=0)_1=1;if(isc.isA.Number(_2)&&_2<this.minHeight)_2=this.minHeight;return isc.StringBuffer.concat(this.allowNativeResize?null:"resize:none;",(isc.Browser.isIE?"margin-top:-1px;margin-bottom:-1px;margin-left:0px;margin-right:0px;":"margin:0px;"),(isc.isA.Number(_1)?"WIDTH:"+_1+"px;":""),(isc.isA.Number(_2)?"HEIGHT:"+_2+"px;":""),(this.textAlign?"text-align:"+this.textAlign+";":""),(isc.Browser.isMoz?"-moz-user-focus:"+(this.$154()>0?"normal;":"ignore;"):""))}
+,isc.A.mapValueToDisplay=function isc_TextAreaItem_mapValueToDisplay(_1,_2,_3,_4,_5){var _6=this.invokeSuper(isc.TextAreaItem,"mapValueToDisplay",_1,_2,_3,_4,_5);if(_6==null)_6=isc.emptyString;return _6}
+,isc.A.mapDisplayToValue=function isc_TextAreaItem_mapDisplayToValue(_1){if(!this.applyStaticTypeFormat&&this.parseEditorValue!=null){return this.parseEditorValue(_1,this.form,this)}
+var _2=this.$17d(_1);if(isc.is.emptyString(_2))_2=this.emptyStringValue;return _2}
+,isc.A.setValue=function isc_TextAreaItem_setValue(_1){this.$66s();var _2;if(_1!==_2&&(_1==null||isc.is.emptyString(_1)))
+this.emptyStringValue=_1;delete this.$20n;_1=this.Super("setValue",arguments);if(!this.hasFocus&&this.showHint&&this.showHintInField&&this.getHint()){if(_1===_2||_1==null||isc.is.emptyString(_1)){this.$66t()}}
+return _1}
+,isc.A.updateValue=function isc_TextAreaItem_updateValue(){this.$20n=true;return this.Super("updateValue",arguments)}
+,isc.A.getValue=function isc_TextAreaItem_getValue(){var _1=this.Super("getValue",arguments);if(this.$20n&&isc.isA.String(_1)){if(!this.$20o)
+this.$20o=new RegExp("(\\r\\n|[\\r\\n])","g");_1=""+_1;_1=_1.replace(this.$20o,this.lineBreakValue)}
+return _1}
+,isc.A.getScrollHeight=function isc_TextAreaItem_getScrollHeight(){var _1=this.$15h();if(_1==null)return this.getHeight();return _1.scrollHeight}
+,isc.A.getScrollWidth=function isc_TextAreaItem_getScrollWidth(){var _1=this.$15h();if(_1==null)return this.getWidth();return _1.scrollWidth}
+,isc.A.$20p=function isc_TextAreaItem__hscrollOn(){var _1=this.$15h();return _1&&_1.scrollWidth>_1.clientWidth}
+,isc.A.$20q=function isc_TextAreaItem__vscrollOn(){var _1=this.$15h();return _1&&_1.scrollHeight>_1.clientHeight}
+,isc.A.getScrollTop=function isc_TextAreaItem_getScrollTop(){var _1=this.$15h();if(_1==null)return 0;return _1.scrollTop}
+,isc.A.getScrollLeft=function isc_TextAreaItem_getScrollLeft(){var _1=this.$15h();if(_1==null)return 0;return _1.scrollLeft}
+,isc.A.scrollTo=function isc_TextAreaItem_scrollTo(_1,_2){var _3=this.$15h();if(_3==null)return;if(_1!=null)_3.scrollLeft=_1;if(_2!=null)_3.scrollTop=_2}
+,isc.A.scrollToTop=function isc_TextAreaItem_scrollToTop(){this.scrollTo(null,0)}
+,isc.A.scrollToBottom=function isc_TextAreaItem_scrollToBottom(){var _1=this.getScrollHeight()-this.getInnerHeight();if(_1>=0){if(this.$20p())_1+=this.form.getScrollbarSize();this.scrollTo(null,_1)}}
+);isc.B._maxIndex=isc.C+26;isc.ClassFactory.defineClass("AutoFitTextAreaItem","TextAreaItem");isc.A=isc.AutoFitTextAreaItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.supportsSelectionRange=true;isc.B.push(isc.A.getTestBox=function isc_AutoFitTextAreaItem_getTestBox(_1){var _2=this.mapValueToDisplay(this.getValue());var _3=isc.AutoFitTextAreaItem;if(!_3.$552){_3.$552=isc.Canvas.create({autoDraw:true,overflow:"hidden",left:0,top:-100,contents:["<textarea ID='isc_autoFitTextArea_sizeTester'","style='overflow:hidden;",(isc.Browser.isIE?"margin-top:-1px;margin-bottom:-1px;margin-left:0px;margin-right:0px;":"margin:0px;"),"'></textarea>"].join("")})}
+var _4=isc.Element.get("isc_autoFitTextArea_sizeTester");if(_3.currentItem!=this||_1){_4.className=this.getTextBoxStyle();if(isc.Browser.isMoz){if(isc.isA.String(this.wrap)&&this.wrap.toLowerCase()!="off"){_4.rows=10;_4.cols=10}else{_4.rows="";_4.cols=""}}
+_4.setAttribute("wrap",this.wrap);_4.style.width=this.getTextBoxWidth();_4.style.height=this.getTextBoxHeight();_4.style.textAlign=this.textAlign||"";_4.cssText=this.getElementCSSText(this.getTextBoxWidth(),this.getTextBoxHeight());_3.currentItem=this}
+_4.value=_2;var _5=_4.scrollHeight;return _4}
+,isc.A.getScrollHeight=function isc_AutoFitTextAreaItem_getScrollHeight(_1){var _2=this.getTestBox(_1);return _2.scrollHeight}
+,isc.A.getScrollWidth=function isc_AutoFitTextAreaItem_getScrollWidth(_1){var _2=this.getTestBox(_1);return _2.scrollWidth}
+,isc.A.getElementCSSText=function isc_AutoFitTextAreaItem_getElementCSSText(_1,_2){var _3=this.Super("getElementCSSText",arguments);_3+="overflow:hidden;"
+return _3}
+,isc.A.$553=function isc_AutoFitTextAreaItem__getTextBoxHPadding(){if(this.$554!=null)return this.$554;var _1=this.getDataElement();if(!_1)return 0;var _2=parseInt(isc.Element.getComputedStyleAttribute(_1,"paddingLeft")),_3=parseInt(isc.Element.getComputedStyleAttribute(_1,"paddingRight")),_4=(isc.isA.Number(_2)?_2:0)+(isc.isA.Number(_3)?_3:0);this.$554=_4;return _4}
+,isc.A.$555=function isc_AutoFitTextAreaItem__getTextBoxVPadding(){if(this.$556!=null)return this.$556;var _1=this.getDataElement();if(!_1)return 0;if(isc.Browser.isIE&&_1.currentStyle==null)return 0;var _2=parseInt(isc.Element.getComputedStyleAttribute(_1,"paddingTop")),_3=parseInt(isc.Element.getComputedStyleAttribute(_1,"paddingBottom")),_4=(isc.isA.Number(_2)?_2:0)+(isc.isA.Number(_3)?_3:0);this.$556=_4;return _4}
+,isc.A.updateSize=function isc_AutoFitTextAreaItem_updateSize(_1){var _2=this.getDataElement();if(!_2)return;var _3,_4;var _5=this.getTextBoxHeight(),_6=this.$555(),_7=this.getScrollHeight(_1),_8=_2.offsetHeight;if((_7+_6)>_8){_2.style.height=_7+_6;_4=true}else if((_7+_6)<_8&&_8>_5){if((_7+_6)<_8){_3=true;_2.style.height=Math.max(_7+_6,_5)}
+_4=true}
+var _9=this.getTextBoxWidth(),_10=isc.Browser.isIE?0:this.$553(),_11=this.getScrollWidth(_1),_12=_2.offsetWidth;if((_11+_10)>_12){_2.style.width=(_11+_10);_4=true}else if((_11+_10)<_12&&_12>_9){_2.style.width=Math.max(_9,_11+_10);_3=true
+_4=true}
+if(_3)this.containerWidget.$t5=true;if(_4)this.adjustOverflow("Updated size to fit content")}
+,isc.A.handleChanged=function isc_AutoFitTextAreaItem_handleChanged(){this.updateSize();return this.Super("handleChanged",arguments)}
+,isc.A.drawn=function isc_AutoFitTextAreaItem_drawn(){this.Super("drawn",arguments);delete this.$554;delete this.$556;this.updateSize(true)}
+,isc.A.redrawn=function isc_AutoFitTextAreaItem_redrawn(){this.Super("redrawn",arguments);delete this.$554;delete this.$556;this.updateSize(true)}
+);isc.B._maxIndex=isc.C+10;isc.ClassFactory.defineClass("TimeItem","TextItem");isc.A=isc.TimeItem;isc.A.DEFAULT_TIME="00:00:00";isc.A=isc.TimeItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.changeOnBlur=true;isc.A.changeOnKeypress=false;isc.A.width=100;isc.A.timeFormatter="toShort24HourTime";isc.A.allowEmptyValue=true;isc.B.push(isc.A.handleKeyPress=function isc_TimeItem_handleKeyPress(){var _1=this.Super("handleKeyPress",arguments);if(_1!=false){var _2=isc.EH.getKey();if(_2=="Enter"){this.updateValue()}}
+return _1}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.TimeItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.short24TimeFormat="HH:MM";isc.A.shortTimeFormat="HH:MM [am|pm]";isc.A.long24TimeFormat="HH:MM:SS";isc.A.longTimeFormat="HH:MM:SS [am|pm]";isc.A.formatterMap={toTime:{mask:"[0-1]#:[0-6]#:[0-6]# [ap]m",formatter:"toPaddedTime"},to24HourTime:{mask:"[0-2]#:[0-6]#:[0-6]#",formatter:"toPadded24HourTime"},toPaddedTime:{mask:"[0-1]#:[0-6]#:[0-6]# [ap]m"},toPadded24HourTime:{mask:"[0-2]#:[0-6]#:[0-6]#"},toShortTime:{mask:"[0-1]#:[0-6]# [ap]m",formatter:"toShortPaddedTime"},toShort24HourTime:{mask:"[0-2]#:[0-6]#",formatter:"toShortPadded24HourTime"},toShortPaddedTime:{mask:"[0-1]#:[0-6]# [ap]m"},toShortPadded24HourTime:{mask:"[0-2]#:[0-6]#"}};isc.B.push(isc.A.getHint=function isc_TimeItem_getHint(){if(!this.showHint)return"";if(this.hint!=null)return this.hint;var _1=this.$30o();switch(_1){case"to24HourTime":case"toPadded24HourTime":return this.long24TimeFormat;case"toTime":case"toPaddedTime":return this.longTimeFormat;case"toShort24HourTime":case"toShortPadded24HourTime":return this.short24TimeFormat;case"toShortTime":case"toShortPaddedTime":return this.shortTimeFormat}
+return""}
+,isc.A.getDefaultValue=function isc_TimeItem_getDefaultValue(){var _1=this.defaultValue;if(!_1&&!this.allowEmptyValue)_1=isc.TimeItem.DEFAULT_TIME;if(_1&&!isc.isA.Date(_1))
+_1=isc.Time.parseInput(_1);return _1}
+,isc.A.mapValueToDisplay=function isc_TimeItem_mapValueToDisplay(_1){if(this.allowEmptyValue&&_1==null)return isc.emptyString;if(!isc.isA.Date(_1))_1=isc.Time.parseInput(_1);var _2=isc.Time.format(_1,this.$30o());_2=this.Super("mapValueToDisplay",_2);return _2}
+,isc.A.mapDisplayToValue=function isc_TimeItem_mapDisplayToValue(_1){var _2=this.Super("mapDisplayToValue",arguments);if((_2==null||isc.isAn.emptyString(_2))&&this.allowEmptyValue){_2=null}else{_2=isc.Time.parseInput(_2)}
+return _2}
+,isc.A.updateValue=function isc_TimeItem_updateValue(){this.Super("updateValue",arguments);if(!this.mask){this.setElementValue(this.mapValueToDisplay(this.getValue()))}}
+,isc.A.setValue=function isc_TimeItem_setValue(_1){if(isc.isA.String(_1))_1=isc.Time.parseInput(_1);return this.Super("setValue",[_1])}
+,isc.A.compareValues=function isc_TimeItem_compareValues(_1,_2){if(_1==_2)return true;if(isc.isA.Date(_1)&&isc.isA.Date(_2)&&isc.Time.compareTimes(_1,_2))return true;return false}
+,isc.A.init=function isc_TimeItem_init(){if(this.useMask){var _1=this.formatterMap[this.$30o()];if(!_1){this.useMask=false;this.mask=null;this.logWarn("Mask will not be used because timeFormatter "+this.$30o()+" is not recognized")}else{if(_1.formatter)this.timeFormatter=_1.formatter;this.mask=_1.mask}
+if(this.mask){this.maskSaveLiterals=true;this.maskOverwriteMode=true}}else if(this.mask){this.mask=null}
+this.Super("init",arguments)}
+,isc.A.setMask=function isc_TimeItem_setMask(_1){this.logWarn("setMask: custom mask ignored")}
+);isc.B._maxIndex=isc.C+9;isc.ClassFactory.defineClass("ToolbarItem","CanvasItem");isc.A=isc.ToolbarItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canFocus=true;isc.A.shouldSaveValue=false;isc.A.showTitle=false;isc.A.buttonSpace=4;isc.A.startRow=true;isc.A.endRow=true;isc.A.colSpan="*";isc.A.canvasConstructor=isc.Toolbar;isc.A.vertical=false;isc.A.buttonConstructor=isc.AutoFitButton;isc.B.push(isc.A.isEditable=function isc_ToolbarItem_isEditable(){return false}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.ToolbarItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$18y=function isc_ToolbarItem__createCanvas(){var _1=(this.buttons||this.items||[]),_2=this.buttonProperties||{};isc.addProperties(_2,{handleActivate:function(){var _3=this.parentElement.canvasItem,_4=_3.form;if(this.click!=null)return this.click(_4,_3)}});if(this.buttonBaseStyle&&!_2.baseStyle){_2.baseStyle=this.buttonBaseStyle}
+if(this.buttonTitleStyle&&!_2.titleStyle){_2.titleStyle=this.buttonTitleStyle}
+this.$20r(_1);this.canvas={overflow:isc.Canvas.VISIBLE,buttons:_1,membersMargin:this.buttonSpace,vertical:this.vertical,buttonProperties:_2};var _5=this.height,_6=this.width;if(!isc.isA.Number(_6)&&this.$8t)
+_6=isc.isA.Number(this.$8t[0])?this.$8t[0]:null;if(!isc.isA.Number(_5)&&this.$8t)
+_5=isc.isA.Number(this.$8t[1])?this.$8t[1]:null;if(_5)this.canvas.height=_5;if(_6)this.canvas.width=_6;if(this.buttonConstructor!=null)
+this.canvas.buttonConstructor=this.buttonConstructor;return this.Super("$18y",arguments)}
+,isc.A.$20r=function isc_ToolbarItem__updateButtons(_1){if(!_1||_1.length==0)return;for(var i=0;i<_1.length;i++){if(_1[i].click&&isc.isA.String(_1[i].click)){_1[i].click=isc.Func.expressionToFunction("form,item",_1[i].click)}}}
+,isc.A.getButton=function isc_ToolbarItem_getButton(_1){return isc.Class.getArrayItem(_1,this.buttons,"name")}
+,isc.A.addButton=function isc_ToolbarItem_addButton(_1,_2){this.buttons=this.buttons||[];this.buttons.addAt(_1,_2);this.setButtons(this.buttons)}
+,isc.A.removeButton=function isc_ToolbarItem_removeButton(_1){var _2=isc.Class.getArrayItemIndex(_1,this.buttons,"name");if(_2!=-1){this.buttons.removeAt(_2);this.setButtons(this.buttons)}}
+,isc.A.setButtons=function isc_ToolbarItem_setButtons(_1){this.$20r(_1);this.buttons=_1;if(!this.canvas)return;this.canvas.setButtons(_1)}
+,isc.A.setItems=function isc_ToolbarItem_setItems(_1){return this.setButtons(_1)}
+);isc.B._maxIndex=isc.C+7;isc.ClassFactory.defineClass("UploadItem","TextItem");isc.A=isc.UploadItem.getPrototype();isc.A.$183="FILE";isc.A.$16b={onchange:isc.FormItem.$12y};isc.A=isc.UploadItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.elementHeight=(isc.Browser.isMoz?18:null);isc.B.push(isc.A.getTextBoxWidth=function isc_UploadItem_getTextBoxWidth(){if(isc.Browser.isMoz)return null;return this.Super("getTextBoxWidth",arguments)}
+,isc.A.getTextBoxHeight=function isc_UploadItem_getTextBoxHeight(){if(this.elementHeight)return this.elementHeight;return this.Super("getTextBoxHeight",arguments)}
+,isc.A.$149=function isc_UploadItem__getEventMaskWidth(){var _1=this.getElementWidth();if(!isc.isA.Number(_1))_1=185;return _1}
+,isc.A.$10y=function isc_UploadItem__updateValue(_1){_1=this.mapDisplayToValue(_1);if(_1==this._value)return true;var _2=this.handleChange(_1,this._value);if(this.$17n!=_1){this.logWarn("Upload Items do not support programmatically modifying the value entered "+"by the user. Ignoring attempt to update from change handler")}
+this.saveValue(this.mapDisplayToValue(this.getElementValue()));return _2}
+,isc.A.redrawn=function isc_UploadItem_redrawn(){this.Super("redrawn",arguments);this.updateValue(this.getElementValue())}
+,isc.A.setElementReadOnly=function isc_UploadItem_setElementReadOnly(_1){this.$176(!_1&&!this.isDisabled())}
+,isc.A.setValue=function isc_UploadItem_setValue(_1){var _2=this.getValue();if(_1==null||isc.isAn.emptyString(_1)){if(_2==null||isc.isAn.emptyString(_2))return;return this.Super("setValue",arguments)}
+if(_1==_2){this.logInfo("Attempting to set the value for an upload form item to:"+_1+" This is the current value for the item so no action to take, but setting "+"UploadItems to a new value is always disabled.");return}
+this.logWarn("Attempting to set the value for an upload form item. This is disallowed "+"for security reasons - returning the current value of the form item")}
+,isc.A.$12z=function isc_UploadItem__handleElementChanged(){this.Super("$12z",arguments);this.checkForImplicitSave()}
+,isc.A.setElementValue=function isc_UploadItem_setElementValue(_1){if(_1==null||isc.isAn.emptyString(_1)){if(isc.Browser.isIE){this.redraw();return}
+return this.Super("setElementValue",arguments)}
+this.logInfo("Attempting to set the value for an upload form item. This is disallowed "+"for security reasons - returning the current value of the form item");return this.getElementValue()}
+,isc.A.refreshDisplayValue=function isc_UploadItem_refreshDisplayValue(){}
+,isc.A.$85m=function isc_UploadItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+11;if(isc.Browser.isSafari){isc.A=isc.UploadItem.getPrototype();isc.A.colSpan="*";isc.A.startRow=true;isc.A.endRow=true;isc.A.width=300}
+isc.defineClass("ComboBoxItem","TextItem","PickList");isc.A=isc.ComboBoxItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoSizePickList=true;isc.A.showPickerIcon=true;isc.A.pickerIconWidth=15;isc.A.pickerIconSrc="[SKIN]/DynamicForm/ComboBoxItem_PickButton_icon.gif";isc.A.pickerIconProperties={tabIndex:-1,showOver:true};isc.A.modalPickList=false;isc.A.showPickListOnKeypress=true;isc.A.saveOnEnter=true;isc.A.$20s="Arrow_Up";isc.A.$20t="Arrow_Down";isc.A.$20u="Page_Up";isc.A.$20v="Page_Down";isc.A.$20w="Escape";isc.A.$10j="Enter";isc.A.$jf="Tab";isc.A.addUnknownValues=true;isc.A.filterDisplayValue=true;isc.A.autoFetchData=false;isc.B.push(isc.A.drawn=function isc_ComboBoxItem_drawn(_1,_2,_3,_4){this.invokeSuper(isc.ComboBoxItem,"drawn",_1,_2,_3,_4);if(this.autoFetchData&&this.$19m()){this.filterWithValue=false;this.fetchData(null,null,true)}}
+,isc.A.pickListShown=function isc_ComboBoxItem_pickListShown(){if(this.pickList.isVisible()){this.$20x=this.ns.Page.setEvent("mouseDown",this,null,"$20y")}}
+,isc.A.$20y=function isc_ComboBoxItem__clickOutside(){var _1=this.pickList;if(!_1||!_1.isVisible())return;var _2=isc.EH.lastEvent.target;if(!_1.contains(_2,true)&&(!_1.$314||!_1.$314.contains(_2,true)))
+{_1.hide()}
+if(!this.$43l){this.$43l=this.ns.Page.setEvent("mouseUp",this,isc.Page.FIRE_ONCE,"$20z")}
+if(!this.$43m){this.$43m=this.ns.Page.setEvent("dragStop",this,isc.Page.FIRE_ONCE,"$43n")}}
+,isc.A.$20z=function isc_ComboBoxItem__dismissPickListClick(){if(this.form.$ne().item==this){this.ns.Page.clearEvent("dragStop",this.$43m);delete this.$43m;delete this.$43l;return false}
+this.$43n(true)}
+,isc.A.$43n=function isc_ComboBoxItem__refocusFromPLMouseUp(_1){if(_1==true){this.ns.Page.clearEvent("dragStop",this.$43m)}else{this.ns.Page.clearEvent("mouseUp",this.$43l)}
+delete this.$43m;delete this.$43l;if(this.pickList&&this.pickList.isVisible()&&this.pickList.contains(isc.EH.getTarget()))
+{this.focusInItem()}}
+,isc.A.pickListHidden=function isc_ComboBoxItem_pickListHidden(){if(this.$20x)this.ns.Page.clearEvent("mouseDown",this.$20x);delete this.$20x}
+,isc.A.handleKeyPress=function isc_ComboBoxItem_handleKeyPress(){if(!this.hasFocus||this.isReadOnly())return this.Super("handleKeyPress",arguments);var _1=isc.EH.lastEvent.keyName,_2=this.pickList,_3=(_2?(_2.isDrawn()&&_2.isVisible()):false);if(_3&&(_1==this.$20v||_1==this.$20u)){return _2.body.handleKeyPress(isc.EH.lastEvent)}
+var _4=this.getEnteredValue(),_5=this.getValue(),_6=(!_4||_4==isc.emptyString);if(_1==this.$20t&&isc.EH.altKeyDown()){this.$84k=_4;this.$200=_6;this.filterWithValue=false;this.showPickList();return false}
+if(_1==this.$20w&&this.addUnknownValues==false){var _7=this.mapValueToDisplay(_5);this.setElementValue(_7)}
+var _8=_1==this.$10j,_9=false;if(_8&&_3){if(this.addUnknownValues==false)_9=true;else if(this.$823)_9=true;else if(this.completeOnEnter!=null)_9=this.completeOnEnter;else{_9=!this.form.isSearchForm||!this.$19m()}}
+var _10=_3&&(_1==this.$20t||_1==this.$20s);this.$823=_10;if(_3){if(_10||(_8&&_9)||_1==this.$20w)
+{_2.bodyKeyPress(isc.EH.lastEvent);return false}
+if(_8)this.hidePicker()}
+if(!this.addUnknownValues)this.$82s();return this.Super("handleKeyPress",arguments)}
+,isc.A.shouldCompleteOnTab=function isc_ComboBoxItem_shouldCompleteOnTab(){return this.completeOnTab||(this.addUnknownValues==false)}
+,isc.A.handleKeyDown=function isc_ComboBoxItem_handleKeyDown(){if(!this.hasFocus||this.isReadOnly())return this.Super("handleKeyDown",arguments);var _1=isc.EH.lastEvent.keyName,_2=this.pickList,_3=(_2?(_2.isDrawn()&&_2.isVisible()):false);this.$82p=null;if(_1==this.$jf&&(this.shouldCompleteOnTab()||this.$17h()==this.$14l))
+{if(this.$82q()){this.$82p=this.getEnteredValue()}else if(_3){this.$82r()}}
+return this.Super("handleKeyDown",arguments)}
+,isc.A.$82q=function isc_ComboBoxItem__loadingData(){return(this.$82m||this.$43j)}
+,isc.A.$82r=function isc_ComboBoxItem__fireTabCompletion(){var _1=this.pickList;var _2=_1.getSelectedRecord();if(_2!=null)_1.itemClick(_2)}
+,isc.A.refreshDisplayValue=function isc_ComboBoxItem_refreshDisplayValue(){if(this.$82q())return;return this.Super("refreshDisplayValue",arguments)}
+,isc.A.isUnknownValue=function isc_ComboBoxItem_isUnknownValue(_1){var _2=this.getValueMap();if(_2!=null){if(isc.isAn.Array(_2)){if(_2.contains(_1))return false}else if(isc.isAn.Object(_2)){for(var _3 in _2){if(_2[_3]==_1)return false}}}
+var _4=this.getOptionDataSource();if(_4!=null){return this.$19o(_1,true,true)==null}
+return true}
+,isc.A.handleEditorExit=function isc_ComboBoxItem_handleEditorExit(){if(this.$84z())return;this.$823=false;var _1=this.getEnteredValue(),_2=this.getValue();if(this.$82p!=null&&this.$82p==_1&&!this.$82q())
+{this.$82r();this.$82p=null;_1=this.getEnteredValue()}
+if(this.$82p==null){if(this.addUnknownValues){var _3=this.getOptionDataSource();if(_2==_1&&(_3==null||this.getDisplayFieldName!=null)){if(_2!=null&&this.shouldFetchMissingValue(_2)){this.$43f(_2)}
+var _4=this.mapValueToDisplay(_2);if(_4!=_2)this.setElementValue(_4)}}else{if(!this.$82q()){if(this.isUnknownValue(_1)){this.setElementValue("");_1=""}
+this.$10y(_1,true)}}}
+this.$843=(this.$82p!=null);var _5=this.Super("handleEditorExit",arguments);this.$843=null;return _5}
+,isc.A.$82o=function isc_ComboBoxItem__updateValueForFilterComplete(_1,_2,_3){this.selectDefaultItem();if(!this.hasFocus){if(this.$82p!=null&&this.$82p==this.getEnteredValue())
+{this.$82r();this.$82p=null}
+if(!this.addUnknownValues){var _4=this.getEnteredValue();if(this.isUnknownValue(_4)){this.setElementValue("");_4=""}
+this.$10y(_4,true);_4=this.getEnteredValue();if(this.showHintInField&&(_4==null||isc.is.emptyString(_4))){this.$66t()}}
+this.$844(this.getValue())}
+this.$19v()}
+,isc.A.$82s=function isc_ComboBoxItem__markPending(){var _1=this.$82t;this.$82t=true;this.$824=this.getEnteredValue();if(!_1)this.updateState()}
+,isc.A.$82u=function isc_ComboBoxItem__markNotPending(){if(!this.$82t)return;this.$82t=null;this.$824=null;this.updateState()}
+,isc.A.getTextBoxStyle=function isc_ComboBoxItem_getTextBoxStyle(){if(this.pendingTextBoxStyle==null||!this.$82t||this.$68y()){return this.Super("getTextBoxStyle",arguments)}
+return this.pendingTextBoxStyle}
+,isc.A.$10y=function isc_ComboBoxItem__updateValue(_1,_2){var _3=!_2&&!this.$201&&this.addUnknownValues==false;if(!_3){this.$82u();var _4=this.mapDisplayToValue(_1);this.explicitChoice=this.$201;if(this.compareValues(_4,this._value)){return true}
+return this.Super("$10y",arguments)}else{if(this.changeOnKeypress&&this.length!=null&&isc.isA.String(_1)&&_1.length>this.length){_1=_1.substring(0,this.length);this.setElementValue(_1)}
+if(this.$84z())return;if(this.$82t==null)return;this.refreshPickList(_1)}}
+,isc.A.handleChanged=function isc_ComboBoxItem_handleChanged(_1,_2){var _3=this.Super("handleChanged",arguments);this.refreshPickList(this.getEnteredValue());return _3}
+,isc.A.refreshPickList=function isc_ComboBoxItem_refreshPickList(_1){var _2=(!_1||_1==isc.emptyString);if(!_2)delete this.$200;var _3=this.pickList,_4=(_3?_3.isVisible():false);if(_2&&!this.$200){if(_4)_3.hide()}else if(this.showPickListOnKeypress||_4){if(!this.$201&&this.hasFocus){if(!this.filterWithValue&&(this.$84k!=_1)){this.filterWithValue=true;delete this.$84k}
+this.showPickList(true,true)}}}
+,isc.A.selectDefaultItem=function isc_ComboBoxItem_selectDefaultItem(){if(this.pickList==null||this.pickList.destroyed)return;var _1=this.pickList.selection;if(this.pickList.selection.anySelected()){if(this.optionDataSource){var _2=this.getSelectedRecord();if(_2){this.pickList.clearLastHilite();this.delayCall("selectItemFromValue",[_2[this.valueField]])}}
+return}
+var _2=this.pickList.getRecord(0);if(_2==null||Array.isLoading(_2)||_2[this.pickList.isSeparatorProperty])return;_1.selectSingle(_2);this.pickList.clearLastHilite();this.pickList.scrollRecordIntoView(0)}
+,isc.A.getSelectedRecord=function isc_ComboBoxItem_getSelectedRecord(){var _1=this.Super("getSelectedRecord",arguments);if(_1==null&&this._value!=null&&this.getOptionDataSource()){if(this.pickList==null||this.pickList.destroyed)this.makePickList(false);if(this.pickList&&this.pickList.data){_1=this.pickList.data.find(this.getValueFieldName(),this._value);if(_1!=null){this.$848([_1]);this.$846()}}}
+return _1}
+,isc.A.getPickListFilterOperator=function isc_ComboBoxItem_getPickListFilterOperator(){return(this.textMatchStyle=="startsWith"?"iStartsWith":this.textMatchStyle=="exact"?"iEquals":"iContains")}
+,isc.A.getPickListFilterCriteria=function isc_ComboBoxItem_getPickListFilterCriteria(){var _1=this.optionCriteria,_2=this.pickListCriteria;if(_2!=null){if(_1==null)_1=_2;else{_1=isc.DataSource.combineCriteria(_1,_2)}}
+if(this.alwaysFilterWithValue||this.filterWithValue){var _3=this.filterFields;if(_3==null){_3=[this.getDisplayFieldName()||this.getValueFieldName()]}
+var _4=this.getEnteredValue();var _5;if(_3.length==1){_5={};_5[_3[0]]=_4}else{_5={_constructor:"AdvancedCriteria",operator:"or",criteria:[]}
+for(var i=0;i<_3.length;i++){_5.criteria.add({fieldName:_3[i],value:_4,operator:this.getPickListFilterOperator()})}}
+if(_1==null)_1=_5;else _1=isc.DataSource.combineCriteria(_1,_5)}
+return _1||{}}
+,isc.A.$849=function isc_ComboBoxItem__refreshForDisplayValueChange(){if(!this.hasFocus)return true;if(!this.addUnknownValues)return!this.$82t;return!!this.explicitChoice}
+,isc.A.elementBlur=function isc_ComboBoxItem_elementBlur(){this.Super("elementBlur",arguments);if(isc.Browser.isMobile){this.delayCall("hidePickListOnBlur",[true],100)}else{this.hidePickListOnBlur()}}
+,isc.A.hidePickListOnBlur=function isc_ComboBoxItem_hidePickListOnBlur(_1){if(_1&&((this.hasFocus&&this.containerWidget.hasFocus)||(this.pickList&&this.pickList.body.hasFocus)))
+{return}
+if(this.pickList&&this.pickList.$92m)return;var _2=this.pickList,_3=isc.EH,_4=_3.lastEvent;if(this.$84z()||(isc.Browser.isIE&&this.getActiveElement()==this.getDataElement()))
+{return}
+delete this.$19i;delete this.$43i;if(!_2||!_2.isVisible()||_2.formItem!=this)return;_2.hide()}
+,isc.A.$84z=function isc_ComboBoxItem__mouseDownInPickList(){var _1=this.pickList;if(!_1||!_1.isVisible()||!_1.isDrawn())return false;var _2=isc.EH,_3=isc.EH.lastEvent;if((_3.eventType=="selectionChange"&&_1.contains(isc.EH.mouseDownTarget()))||((_3.eventType==_2.MOUSE_DOWN||_3.eventType==_2.CLICK)&&_1.contains(_3.target,true)))
+{return true}
+return false}
+,isc.A.editorEnter=function isc_ComboBoxItem_editorEnter(_1,_2,_3){this.$66s()}
+,isc.A.editorExit=function isc_ComboBoxItem_editorExit(_1,_2,_3){var _4;if(this.showHintInField&&(_3===_4||_3==null||isc.is.emptyString(_3)))
+{this.$66t()}}
+,isc.A.showPicker=function isc_ComboBoxItem_showPicker(){this.focusInItem();this.filterWithValue=false;var _1=this.getEnteredValue(),_2=(!_1||_1==isc.emptyString);this.$84k=_1;this.$200=_2;return this.showPickList()}
+,isc.A.pickValue=function isc_ComboBoxItem_pickValue(_1){this.$66s();var _2=this.mapValueToDisplay(_1);this.setElementValue(_2);if(this.hasFocus)this.selectValue();this.$201=true;this.$66x={};this.$66x[_2]=_1;this.updateValue();delete this.$201}
+,isc.A.setValueMap=function isc_ComboBoxItem_setValueMap(){this.Super("setValueMap",arguments);if(this.pickList){if(this.pickList.isVisible())this.pickList.hide();delete this.pickList.formItem
+this.setUpPickList(this.pickList.isVisible())}
+if(this.addUnknownValues){this.setElementValue(this.mapValueToDisplay(this.getValue()))}}
+,isc.A.setValue=function isc_ComboBoxItem_setValue(_1,_2,_3,_4,_5){var _6=this._value!=_1;if(!_6){if(this.$82t){this.setElementValue(this.$824);return}}
+this.$82u();this.$43o=true;this.invokeSuper(isc.ComboBoxItem,"setValue",_1,_2,_3,_4,_5);delete this.$43o;if(!this.hasFocus&&this.showHint&&this.showHintInField&&this.getHint()){var _7;if(_1===_7||_1==null||isc.is.emptyString(_1)){this.$66t()}}
+if(_3||_1==null){this.explicitChoice=false}else if(_6){this.explicitChoice=true}}
+,isc.A.getDefaultValue=function isc_ComboBoxItem_getDefaultValue(){var _1=this.Super("getDefaultValue",arguments);if(_1==null&&this.defaultToFirstOption){_1=this.getFirstOptionValue()}
+return _1}
+,isc.A.shouldGenerateExactMatchCriteria=function isc_ComboBoxItem_shouldGenerateExactMatchCriteria(){if(this.generateExactMatchCriteria!=null)return this.generateExactMatchCriteria;var _1=this.form.getDataSource();if(_1&&_1.supportsAdvancedCriteria())return true;return false}
+,isc.A.hasAdvancedCriteria=function isc_ComboBoxItem_hasAdvancedCriteria(){if(this.Super("hasAdvancedCriteria",arguments))return true;if(this.addUnknownValues&&this.explicitChoice&&this.shouldGenerateExactMatchCriteria())
+return true;return false}
+,isc.A.getCriteriaFieldName=function isc_ComboBoxItem_getCriteriaFieldName(){if(this.criteriaField!=null)return this.criteriaField;if(this.displayField!=null&&this.addUnknownValues&&!this.explicitChoice){return this.displayField}
+return this.getFieldName()}
+,isc.A.getCriteriaValue=function isc_ComboBoxItem_getCriteriaValue(){if(this.displayField!=null&&this.addUnknownValues&&!this.explicitChoice){return this.getEnteredValue()}
+return this.Super("getCriteriaValue",arguments)}
+,isc.A.getOperator=function isc_ComboBoxItem_getOperator(_1){var _2;if(this.addUnknownValues&&!this.explicitChoice){_2=this.getPickListFilterOperator()}else{_2=this.Super("getOperator",arguments)}
+return _2}
+,isc.A.canEditSimpleCriterion=function isc_ComboBoxItem_canEditSimpleCriterion(_1){if(this.criterionField)return _1==this.criterionField;if(this.displayField&&_1==this.displayField)return true;return this.getFieldName()==_1}
+,isc.A.setSimpleCriterion=function isc_ComboBoxItem_setSimpleCriterion(_1,_2){if(this.criterionField==null&&this.displayField!=null&&_2==this.displayField){this.setValue(_1,null,true)}else{this.setValue(_1)}}
+,isc.A.canEditCriterion=function isc_ComboBoxItem_canEditCriterion(_1,_2){if(!this.addUnknownValues){return this.Super("canEditCriterion",arguments)}
+var _3=_1.fieldName,_4=this.criterionField||this.getFieldName(),_5=this.Super("getOperator",[]);if(_3!=null){if(this.displayField==null){if(_3==_4){return _1.operator==_5||_1.operator==this.getPickListFilterOperator()}}else{if(_3==_4){return _1.operator==_5}else if(_3==this.displayField){return _1.operator==this.getPickListFilterOperator()}}}
+return false}
+,isc.A.setCriterion=function isc_ComboBoxItem_setCriterion(_1){if(!this.addUnknownValues||this.displayField==null||_1.fieldName!=this.displayField)
+{return this.Super("setCriterion",arguments)}
+var _2=_1.value;this.setElementValue(_2);this.$43f(_2);var _3=this.mapDisplayToValue(_2);if(!this.compareValues(_3,this._value))this.saveValue(_3)}
+,isc.A.$43f=function isc_ComboBoxItem__checkForDisplayFieldValue(_1,_2){var _3=(this.$17b(_1,true)!=null);if(_3){return}
+if(this.$43j){this.$43k=true;return}
+if(this.pickList!=null&&this.pickList.formItem==this&&isc.isA.ResultSet(this.pickList.data)&&this.pickList.data.allRowsCached())
+{return}
+this.invokeSuper(isc.ComboBoxItem,"$43f",_1)}
+,isc.A.$17b=function isc_ComboBoxItem__mapKey(_1,_2,_3,_4,_5,_6){var _7=this.invokeSuper(isc.ComboBoxItem,"$17b",_1,true,_3,_4,_5,_6);if(_7==null&&this.getDisplayFieldName()!=null)
+_7=this.$19o(_1,false);if(_7==null&&!_2)_7=_1;return _7}
+,isc.A.mapDisplayToValue=function isc_ComboBoxItem_mapDisplayToValue(_1,_2,_3,_4){if(this.$66x){for(var i in this.$66x){if(i==_1){return this.$66x[i]}}
+delete this.$66x}
+if(this.getDisplayFieldName()!=null){var _6;_6=this.$19o(_1,true);if(_6!=null)_1=_6}
+return this.invokeSuper(isc.ComboBoxItem,"mapDisplayToValue",_1,_2,_3,_4)}
+,isc.A.$85m=function isc_ComboBoxItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+49;isc.ComboBoxItem.registerStringMethods({dataArrived:"startRow,endRow,data",getPickListFilterCriteria:""});isc.ClassFactory.defineClass("FileItem","CanvasItem");isc.A=isc.FileItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.shouldSaveValue=true;isc.A.$12f="blob";isc.B.push(isc.A.$18y=function isc_FileItem__createCanvas(){if(!isc.isA.Canvas(this.canvas)){this.$861=this.isReadOnly();this.canvas=(this.$861?this.$862():this.$863())}
+this.containerWidget.addChild(this.canvas)}
+,isc.A.$862=function isc_FileItem__createReadOnlyCanvas(){var _1;if(this.type==this.$12f){_1=isc.DynamicForm.create({autoDraw:false,_redrawWithParent:false,redrawOnResize:false,canSubmit:true,action:this.action,targetItem:this,items:[{type:"text",editorType:"StaticText",width:this.width,height:this.height,name:this.getFieldName(),showTitle:false}]})}else{_1=isc.Canvas.create({height:10})}
+return _1}
+,isc.A.$863=function isc_FileItem__createEditableCanvas(){return isc.DynamicForm.create({autoDraw:false,_redrawWithParent:false,redrawOnResize:false,canSubmit:true,action:this.action,targetItem:this,getSaveOperationType:function(){if(this.targetItem&&this.targetItem.form)
+return this.targetItem.form.getSaveOperationType();return this.Super("getSaveOperationType",arguments)},items:[{targetItem:this,type:"upload",width:this.width,height:this.height,name:this.getFieldName(),showTitle:false,saveValue:function(_1,_2,_3,_4){this.Super("saveValue",arguments);this.targetItem.saveValue(_1,_2,_3,_4)}},{name:"_transaction",type:"HiddenItem"}]})}
+,isc.A.setElementReadOnly=function isc_FileItem_setElementReadOnly(_1){this.redraw()}
+,isc.A.redraw=function isc_FileItem_redraw(){if(this.$861!=this.isReadOnly()){var _1=this.getValue();if(this.canvas){delete this.canvas.canvasItem;this.canvas.destroy(true)}
+this.$861=this.isReadOnly();this.setCanvas(this.$861?this.$862():this.$863());this.setValue(_1)}
+this.Super("redraw",arguments)}
+,isc.A.getValue=function isc_FileItem_getValue(){return(this.$861?this.Super("getValue",arguments):this.canvas.getValue(this.getFieldName()))}
+,isc.A.setValue=function isc_FileItem_setValue(_1){if(this.isReadOnly()){var _2=this.form,_3=_2.getValues();if(this.type=="blob"){this.canvas.getItem(this.getFieldName()).setValue(_1)}else if(this.type=="imageFile"&&this.showFileInline!=false){this.canvas.setHeight("*");this.canvas.setWidth("*");this.canvas.setContents(this.getImageHTML())}else{if(this.showFileInline==true){this.logWarn("setValue(): Unsupported field-type for showFileInline: "+this.type)}
+this.canvas.setHeight(20);this.canvas.setWidth("100%");this.canvas.setContents(this.getViewDownloadHTML(_1,_3))}
+return this.Super("setValue",arguments)}else{if(_1==null||isc.isA.emptyString(_1)){this.canvas.getItem(this.getFieldName()).setValue(_1);return this.Super("setValue",arguments)}else{this.logWarn("Cannot programatically set the value of an upload field due to security restraints");return}}}
+,isc.A.setWidth=function isc_FileItem_setWidth(_1){if(this.canvas&&!this.isReadOnly()){this.canvas.items[0].setWidth(_1)}
+this.Super("setWidth",arguments)}
+,isc.A.setHeight=function isc_FileItem_setHeight(_1){if(this.canvas&&!this.isReadOnly()){this.canvas.items[0].setHeight(_1)}
+this.Super("setHeight",arguments)}
+,isc.A.getViewDownloadHTML=function isc_FileItem_getViewDownloadHTML(_1,_2){if(isc.isA.String(_1))return _1;if(_2==null)return null;var _3=_2[this.name+"_filename"];if(_3==null||isc.isA.emptyString(_3))return this.emptyCellValue;var _4=isc.Canvas.imgHTML("[SKIN]actions/view.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='"+this.getID()+".viewFile()'");var _5=isc.Canvas.imgHTML("[SKIN]actions/download.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='"+this.getID()+".downloadFile()'");return"<nobr>"+_4+" "+_5+" "+_3+"</nobr>"}
+,isc.A.getImageHTML=function isc_FileItem_getImageHTML(){var _1=this.form.getValues(),_2=this.form.getField(this.name),_3=this.name+"$68c",_4;if(!_1[this.name])return" ";if(!_1[_3]){var _5=isc.Canvas.getFieldImageDimensions(_2,_1);_4=_1[_3]=isc.Canvas.imgHTML(this.form.getDataSource().streamFile(_1,_2.name),_5.width,_5.height)}else
+_4=_1[_3];return _4}
+,isc.A.viewFile=function isc_FileItem_viewFile(){isc.DS.get(this.form.dataSource).viewFile(this.form.getValues(),this.name)}
+,isc.A.downloadFile=function isc_FileItem_downloadFile(){isc.DS.get(this.form.dataSource).downloadFile(this.form.getValues(),this.name)}
+,isc.A.$85m=function isc_FileItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+14;if(isc.ListGrid){isc.ClassFactory.defineClass("RelationItem","CanvasItem");isc.A=isc.RelationItem.getPrototype();isc.A.canvasConstructor="ListGrid";isc.A.canvasDefaults={canEdit:true};isc.A.pickerConstructor="RelationPicker";isc.A.showEditButton=true;isc.A.editButtonDefaults={click:"item.showPicker(!form.saveOperationIsAdd(), icon)",prompt:"Edit new/selected item"};isc.A.showRemoveButton=true;isc.A.removeButtonDefaults={src:"[SKIN]DynamicForm/Remove_icon.gif",click:"item.removeSelectedData()",prompt:"Remove selected item"};isc.A.canEditWithNoMasterRecord=false;isc.A=isc.RelationItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_RelationItem_init(){this.disabled=!this.canEditWithNoMasterRecord;this.Super("init",arguments);if(!this.pickerDefaults)this.pickerDefaults={};isc.addProperties(this.pickerDefaults,{dataSource:this.dataSource});if(this.showEditButton)this.editButton=this.addIcon(this.editButtonDefaults);if(this.showRemoveButton)this.removeButton=this.addIcon(this.removeButtonDefaults)}
+,isc.A.getPickerData=function isc_RelationItem_getPickerData(){var _1=this.canvas.getSelectedRecord();if(_1)return _1;return this.getDataSource().getForeignKeysByRelation(this.form.getValues(),this.form.dataSource)}
+,isc.A.showPicker=function isc_RelationItem_showPicker(_1,_2,_3,_4){this.Super("showPicker",arguments);var _5={};if(!this.form.saveOperationIsAdd())
+_5=this.getDataSource().getForeignKeysByRelation(this.form.getValues(),this.form.dataSource);this.picker.setForeignKeyValues(_5)}
+,isc.A.getValue=function isc_RelationItem_getValue(){return}
+,isc.A.removeSelectedData=function isc_RelationItem_removeSelectedData(){this.canvas.removeSelectedData()}
+,isc.A.setValue=function isc_RelationItem_setValue(){this.delayCall("filterRelation")}
+,isc.A.filterRelation=function isc_RelationItem_filterRelation(){var _1=this.form.getValues();if(this.form.saveOperationIsAdd()){this.canvas.setData([]);this.setDisabled(!this.canEditWithNoMasterRecord)}else{this.canvas.filterData(this.getDataSource().getForeignKeysByRelation(_1,this.form.dataSource));this.enable()}
+if(this.picker)this.picker.clearData()}
+,isc.A.$85m=function isc_RelationItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+8;isc.defineClass("RelationPicker","VLayout");isc.A=isc.RelationPicker.getPrototype();isc.A.className="dialogBackground";isc.A=isc.RelationPicker.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.creatorName="picker";isc.B.push(isc.A.initWidget=function isc_RelationPicker_initWidget(){this.Super("initWidget",arguments);this.addAutoChild("editor",{dataSource:this.dataSource},"DynamicForm");this.addAutoChild("toolbar",{membersMargin:2},"HLayout");this.addAutoChild("saveButton",{title:"Save",click:"this.picker.editor.saveData(this.picker.getID()+'.hide()')"},"AutoFitButton",this.toolbar);this.addAutoChild("clearButton",{title:"Clear",click:"this.picker.clearData();"},"AutoFitButton",this.toolbar);this.addAutoChild("cancelButton",{title:"Cancel",click:"this.picker.hide();this.picker.clearData()"},"AutoFitButton",this.toolbar)}
+,isc.A.hide=function isc_RelationPicker_hide(){this.Super("hide",arguments);this.hideClickMask()}
+,isc.A.setData=function isc_RelationPicker_setData(_1){this.editor.setData(_1)}
+,isc.A.getData=function isc_RelationPicker_getData(){return this.editor.getValues()}
+,isc.A.clearData=function isc_RelationPicker_clearData(){this.editor.clearValues();this.setData(this.foreignKeyValues)}
+,isc.A.dataChanged=function isc_RelationPicker_dataChanged(){}
+,isc.A.setForeignKeyValues=function isc_RelationPicker_setForeignKeyValues(_1){this.foreignKeyValues=_1}
+);isc.B._maxIndex=isc.C+7;}
+if(isc.ListGrid){isc.ClassFactory.defineClass("MultiFileItem","RelationItem");isc.A=isc.MultiFileItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.pickerConstructor="MultiFilePicker";isc.A.canvasDefaults={showHeader:false,canHover:true,cellHoverHTML:function(_1,_2,_3){if(this.canvasItem.form.saveOperationIsAdd())
+return _1[this.getFieldName(_3)]},getCellValue:function(_1,_2,_3){var _1=this.Super("getCellValue",arguments);if(this.canvasItem.form.saveOperationIsAdd()){if(!this.displayShortName||!_1)return _1;_1=_1.replace(/.*(\\|\/)/g,isc.emptyString)}
+return _1}};isc.A.emptyMessage="Click icon to add...";isc.A.displayShortName=true;isc.A.iconWidth=16;isc.A.iconHeight=16;isc.A.editButtonDefaults=isc.addProperties({},isc.RelationItem.getInstanceProperty('editButtonDefaults'),{prompt:"Add files",src:"[SKIN]MultiUploadItem/icon_add_files.png",showOver:false});isc.A.removeButtonDefaults=isc.addProperties({},isc.RelationItem.getInstanceProperty('removeButtonDefaults'),{src:"[SKIN]MultiUploadItem/icon_remove_files.png",showOver:false,prompt:"Remove selected files"});isc.A.canEditWithNoMasterRecord=true;isc.B.push(isc.A.getDynamicDefaults=function isc_MultiFileItem_getDynamicDefaults(_1){if(_1=="canvas"){var _2={};if(this.emptyMessage!=null)_2.emptyMessage=this.emptyMessage;if(this.displayShortName!=null)_2.displayShortName=this.displayShortName;return _2}
+return this.Super("getDynamicDefaults",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.MultiFileItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.removeSelectedData=function isc_MultiFileItem_removeSelectedData(){if(!this.form.saveOperationIsAdd())return this.Super("removeSelectedData",arguments);var _1=this.canvas.getSelection();for(var i=0;i<_1.length;i++)this.picker.removeUploadField(_1[i]._form,true)}
+,isc.A.formSaved=function isc_MultiFileItem_formSaved(_1,_2,_3){if(this.picker){this.showPicker(true,this.editButton);this.picker.setForeignKeyValues(this.getDataSource().getForeignKeysByRelation(_3,this.form.dataSource));this.picker.saveData(this.getID()+".saveDataCallback()");return false}else{this.saveDataCallback()}}
+,isc.A.saveDataCallback=function isc_MultiFileItem_saveDataCallback(){if(this.picker)this.picker.hide();this.form.formSavedComplete()}
+,isc.A.pickerDataChanged=function isc_MultiFileItem_pickerDataChanged(_1){if(!this.form.saveOperationIsAdd())return;this.canvas.setData(this.picker.getData())}
+,isc.A.destroy=function isc_MultiFileItem_destroy(){this.Super("destroy");if(this.picker)this.picker.destroy()}
+);isc.B._maxIndex=isc.C+5;isc.defineClass("MultiFilePicker","VStack");isc.A=isc.MultiFilePicker.getPrototype();isc.A.height=1;isc.A.layoutMargin=10;isc.A.styleName="dialogBackground";isc.A.minUploadFields=1;isc.A.minFileSizeForProgressBar=204800;isc.A.progressCheckFrequency=1000;isc.A.progressMeterConstructor="MultiFileProgressMeter";isc.A.uploadLayoutConstructor="VStack";isc.A.uploadWithPKButtonName="Save";isc.A.uploadWithoutPKButtonName="OK";isc.A.cancelButtonName="Cancel";isc.A.showUploadRemoveButton=true;isc.A.uploadWithoutPK=false;isc.A=isc.MultiFilePicker.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.creatorName="picker";isc.B.push(isc.A.initWidget=function isc_MultiFilePicker_initWidget(){this.Super("initWidget",arguments);this.addAutoChild("uploadLayout",{height:1});this.addAutoChild("addAnotherFileButton",{width:75,height:20,align:"left",cursor:isc.Canvas.HAND,icon:"[SKIN]MultiUploadItem/icon_add_files.png",contents:"<u>Add another</u>",click:"this.picker.addUploadField()"},"Label");this.addAutoChild("toolbar",{width:1,height:1,membersMargin:10,layoutMargin:10,layoutAlign:"right"},"HStack");this.addAutoChild("saveButton",{title:this.hasKeys()?this.uploadWithPKButtonName:this.uploadWithoutPKButtonName,width:80,updateTitle:function(){var _1=this.parentElement.picker;var _2=_1.hasKeys()?_1.uploadWithPKButtonName:_1.uploadWithoutPKButtonName;if(_2!=this.title)this.setTitle(_2)},click:function(){var _1=this.parentElement.picker;if(!_1.hasKeys()&&!_1.uploadWithoutPK){_1.hide();_1.dataChanged()}else{_1.saveData()}},observes:[{source:this,message:"setForeignKeyValues",action:"observer.updateTitle()"}]},"IButton",this.toolbar);this.addAutoChild("cancelButton",{title:this.cancelButtonName,width:80,click:function(){this.picker.hide();if(this.picker.creator.form.saveOperationIsAdd())this.picker.clearData()}},"IButton",this.toolbar);this.clearData()}
+,isc.A.hasKeys=function isc_MultiFilePicker_hasKeys(){return(this.foreignKeyValues&&!isc.isAn.emptyObject(this.foreignKeyValues))}
+,isc.A.setForeignKeyValues=function isc_MultiFilePicker_setForeignKeyValues(_1){this.foreignKeyValues=_1}
+,isc.A.clearData=function isc_MultiFilePicker_clearData(){var _1=this.getForms();for(var i=0;i<_1.length;i++)this.removeUploadField(_1[i]);for(var i=0;i<this.minUploadFields;i++)this.addUploadField()}
+,isc.A.addUploadField=function isc_MultiFilePicker_addUploadField(){if(this.dataSource==null){isc.logWarn("A datasource must be defined on a MultiFileItem ("+this.id+") or it will both not function and elements will not render properly.")}
+var _1=this.createAutoChild("uploadForm",{dataSource:this.dataSource,cellPadding:0,numCols:2,colWidths:['*','*'],width:250,elementChanged:function(){this.Super("elementChanged",arguments);this.picker.dataChanged()}},isc.DynamicForm);var _2=this.createAutoChild("uploadFormLayout",{members:[_1],height:21},isc.HLayout);this.uploadLayout.addMember(_2);if(this.showUploadRemoveButton){var _3=this.createAutoChild("uploadRemoveButton",{form:_1,picker:this,contents:isc.emptyString,cursor:isc.Canvas.HAND,icon:"[SKIN]MultiUploadItem/icon_remove_files.png",click:"this.picker.removeUploadField(this.form, true)",iconSpacing:6,width:22,height:20},isc.Label);_2.addMember(_3,0)}
+if(this.maxUploadFields&&this.maxUploadFields<=this.uploadLayout.getMembers().length)
+this.addAnotherFileButton.hide()}
+,isc.A.removeUploadField=function isc_MultiFilePicker_removeUploadField(_1,_2){if(_1.$203){isc.rpc.cancelQueue(_1.$203);this.transactionNum=null;if(this.progressMeter)this.progressMeter.hide()}
+_1.parentElement.destroy();if(_2&&this.uploadLayout.getMembers().length<this.minUploadFields){this.addUploadField()}
+if(this.maxUploadFields&&this.maxUploadFields>this.uploadLayout.getMembers().length){this.addAnotherFileButton.show()}
+this.dataChanged()}
+,isc.A.getForms=function isc_MultiFilePicker_getForms(){return this.uploadLayout.getMembers().map("getMember",this.showUploadRemoveButton?1:0)}
+,isc.A.dataChanged=function isc_MultiFilePicker_dataChanged(){}
+,isc.A.hide=function isc_MultiFilePicker_hide(){this.Super("hide",arguments);this.hideClickMask()}
+,isc.A.getData=function isc_MultiFilePicker_getData(){var _1=[];var _2=this.getForms();for(var i=0;i<_2.length;i++){var _4=_2[i];var _5=_4.getValues();if(isc.isAn.emptyObject(_5))continue;_5._form=_4;_1[_1.length]=_5}
+return _1}
+,isc.A.saveData=function isc_MultiFilePicker_saveData(_1){if(!_1)_1=this.saveCallback;if(!_1)_1=this.getID()+".hide()";this.saveCallback=_1;var _2=this.getForms();this.saveButton.setTitle(this.uploadWithPKButtonName);var _3;var _4;while(_2.length>0){_3=_2[0];_4=_3.getFields()[0].getValue();if(!_4){this.removeUploadField(_3);_2.remove(_3)}
+else break}
+if(_2.length==0){if(this.progressMeter){this.progressMeter.hide()}
+this.transactionNum=null;delete this.saveCallback;this.fireCallback(_1);this.clearData();return}
+if(!_3.validate())return;if(!this.progressMeter){this.progressMeter=this.createAutoChild("progressMeter",{progressCheckFrequency:this.progressCheckFrequency});this.addMember(this.progressMeter,0)}
+_4=_4.replace(/.*(\\|\/)/g,isc.emptyString);this.progressMeter.setFileName(_4);this.progressMeter.hideProgressBar();this.progressMeter.show();if(this.hasKeys()){for(var _5 in this.foreignKeyValues)_3.setValue(_5,this.foreignKeyValues[_5])}
+var _6=_3.saveData(this.getID()+".saveDataCallback(dsRequest, dsResponse, data)",{params:{formID:_3.getID()},willHandleError:true,form:_3,showPrompt:false,saveDataCallback:_1,timeout:0});this.transactionNum=_6.transactionNum;_3.$203=this.transactionNum;this.progressCheck(_3.getID(),this.transactionNum)}
+,isc.A.saveDataCallback=function isc_MultiFilePicker_saveDataCallback(_1,_2,_3){var _4=_1.form;if(_2.status!=isc.RPCResponse.STATUS_SUCCESS){this.progressMeter.hide();this.transactionNum=null;if(_2.status==isc.RPCResponse.STATUS_VALIDATION_ERROR){_4.setErrors(_2.errors,true)}else{isc.warn(_3)}
+return}
+_4.$203=null;this.removeUploadField(_4);this.saveData(_1.saveDataCallback);if(this.callingFormItem.fileUploaded){this.callingFormItem.fileUploaded(_1,_2)}}
+,isc.A.progressCheck=function isc_MultiFilePicker_progressCheck(_1,_2){this.lastProgressCheckTime=new Date().getTime();isc.DMI.callBuiltin({methodName:"uploadProgressCheck",callback:this.getID()+".progressCallback(rpcRequest, rpcResponse, data, "+_2+")",arguments:_1,requestParams:{willHandleError:true,showPrompt:false,formID:_1}})}
+,isc.A.progressCallback=function isc_MultiFilePicker_progressCallback(_1,_2,_3,_4){var _5=_1.formID;var _6=window[_5];if(!_6||this.transactionNum!==_4)return;if(_2.status!=isc.RPCResponse.STATUS_SUCCESS)this.progressCheck(_5);if(_3.errors){isc.rpc.cancelQueue(this.transactionNum);_6.setErrors(_3.errors,true);this.saveButton.show();this.transactionNum=null;this.progressMeter.hide();return}
+this.progressMeter.setFileSize(_3.totalBytes);if(_3.totalBytes<this.minFileSizeForProgressBar){this.progressMeter.hideProgressBar();return}
+this.progressMeter.setBytesReceived(_3.bytesSoFar);this.progressMeter.showProgressBar();this.progressMeter.setPercentDone(100*_3.bytesSoFar/ _3.totalBytes);var _7=this.progressCheckFrequency-(new Date().getTime()-this.lastProgressCheckTime);if(_7<0)_7=0;this.delayCall("progressCheck",[_5,_4],_7)}
+);isc.B._maxIndex=isc.C+14;isc.defineClass("MultiFileProgressMeter","VStack");isc.A=isc.MultiFileProgressMeter;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.formatBytes=function isc_c_MultiFileProgressMeter_formatBytes(_1){var _2;if(_1<1024){_1=Math.round(_1/ 1024);_2="B"}else if(_1<(1024*1024)){_1=Math.round(_1/ 1024);_2="KB"}else{_1=Math.round(_1/(1024*1024)*100)/100;_2="MB"}
+return _1+" "+_2}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.MultiFileProgressMeter.getPrototype();isc.A.height=50;isc.A=isc.MultiFileProgressMeter.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_MultiFileProgressMeter_initWidget(){this.Super("initWidget",arguments);this.addAutoChild("progressLabel",{height:1,dynamicContentsVars:{progressMeter:this},dynamicContents:true,contents:"<b><nobr>Saving ${progressMeter.fileName} ${progressMeter.getFormattedFileSize()}</nobr></b>"},"Canvas")}
+,isc.A.setFileName=function isc_MultiFileProgressMeter_setFileName(_1){this.fileName=_1;delete this.fileSize;this.bytesSoFar=0;this.bytesReceived=0;this.progressLabel.markForRedraw();if(this.progressBar)this.setPercentDone(0)}
+,isc.A.setFileSize=function isc_MultiFileProgressMeter_setFileSize(_1){this.fileSize=_1;this.progressLabel.markForRedraw()}
+,isc.A.setBytesReceived=function isc_MultiFileProgressMeter_setBytesReceived(_1){this.bytesSoFar=this.bytesReceived;;this.bytesReceived=_1;this.progressLabel.markForRedraw()}
+,isc.A.getFormattedFileSize=function isc_MultiFileProgressMeter_getFormattedFileSize(){if(!this.fileSize)return isc.emptyString;var _1="<br>";if(this.bytesReceived){_1+=isc.MultiFileProgressMeter.formatBytes(this.bytesReceived)+" of "}
+_1+=isc.MultiFileProgressMeter.formatBytes(this.fileSize);if(this.bytesSoFar&&this.progressCheckFrequency){var _2=this.bytesReceived-this.bytesSoFar;_2=isc.MultiFileProgressMeter.formatBytes(_2*1000/this.progressCheckFrequency);_1+=" ("+_2+"/sec)"}
+return _1}
+,isc.A.showProgressBar=function isc_MultiFileProgressMeter_showProgressBar(){this.addAutoChild("progressBar",{overflow:"visible"},"Progressbar");this.progressBar.show()}
+,isc.A.hideProgressBar=function isc_MultiFileProgressMeter_hideProgressBar(){if(this.progressBar)this.progressBar.hide()}
+,isc.A.setPercentDone=function isc_MultiFileProgressMeter_setPercentDone(_1){this.progressBar.setPercentDone(_1)}
+);isc.B._maxIndex=isc.C+8;}
+isc.addGlobal("MultiUploadItem",isc.MultiFileItem);isc.addGlobal("MultiUploadPicker",isc.MultiFilePicker);if(isc.ListGrid){isc.defineClass("DialogUploadItem","StaticTextItem");isc.A=isc.DialogUploadItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.iconHeight=16;isc.A.iconWidth=16;isc.A.icons=[{src:"[SKIN]MultiUploadItem/icon_add_files.png",name:"upload",prompt:"Upload File",click:"item.showPicker(true)"},{src:"[SKIN]MultiUploadItem/icon_remove_files.png",name:"remove",prompt:"Remove File",click:"item.removeFile()"}];isc.A.pickerConstructor="DialogUploadPicker";isc.A.noFileString="[NONE]";isc.B.push(isc.A.init=function isc_DialogUploadItem_init(){this.Super("init",arguments);if(!this.pickerDefaults)this.pickerDefaults={};isc.addProperties(this.pickerDefaults,{dataSource:this.dataSource})}
+,isc.A.mapValueToDisplay=function isc_DialogUploadItem_mapValueToDisplay(_1){return _1==null?this.noFileString:this.Super("mapValueToDisplay",arguments)}
+,isc.A.showPicker=function isc_DialogUploadItem_showPicker(){this.Super("showPicker",arguments);var _1=this.getValue('primaryKey');this.picker.foreignKeyValues={primaryKey:_1}}
+,isc.A.removeFile=function isc_DialogUploadItem_removeFile(){var _1=this.getValue();if(_1!=this.defaultValue){var _2=isc.DataSource.get(this.dataSource);_2.removeData({primaryKey:_1},this.getID()+".removeFileCallback(dsResponse)")}}
+,isc.A.removeFileCallback=function isc_DialogUploadItem_removeFileCallback(_1){if(_1.status!=isc.DSResponse.STATUS_SUCCESS){isc.warn("Unable to remove file: "+_1.data);return}
+this.setValue(this.defaultValue)}
+,isc.A.fileUploaded=function isc_DialogUploadItem_fileUploaded(_1,_2){var _3=_2.data;var _4={};_4[_3.primaryKey]=_3.file_filename;this.setValueMap(_4);this.setValue(_3.primaryKey)}
+,isc.A.destroy=function isc_DialogUploadItem_destroy(){this.Super("destroy");if(this.picker)this.picker.destroy()}
+,isc.A.$85m=function isc_DialogUploadItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+8;isc.defineClass("DialogUploadPicker","MultiFilePicker");isc.A=isc.DialogUploadPicker.getPrototype();isc.A.maxUploadFields=1;isc.A.uploadWithoutPKButtonName="Upload";isc.A.uploadWithPKButtonName="Upload";isc.A.showUploadRemoveButton=false;isc.A.uploadWithoutPK=true}
+if(isc.ListGrid){isc.ClassFactory.defineClass("SOAPUploadItem","DialogUploadItem");isc.A=isc.SOAPUploadItem.getPrototype();isc.A.dataSource="sessionFiles"}isc.ClassFactory.defineClass("SpinnerItem","TextItem");isc.A=isc.SpinnerItem;isc.A.INCREASE_ICON={width:16,height:9,src:"[SKIN]/DynamicForm/Spinner_increase_icon.png",name:"increase",showOver:true,imgOnly:true,hspace:0};isc.A.DECREASE_ICON={width:16,height:9,src:"[SKIN]/DynamicForm/Spinner_decrease_icon.png",name:"decrease",showOver:true,imgOnly:true,hspace:0};isc.A=isc.SpinnerItem.getPrototype();isc.A.changeOnKeypress=false;isc.A.canTabToIcons=false;isc.A.height=18;isc.A.step=1;isc.A=isc.SpinnerItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_SpinnerItem_init(){this.Super("init",arguments);var _1=this.step;if(_1!=null&&!isc.isA.Number(_1)){_1=parseFloat(_1);if(!isc.isA.Number(_1))_1=1;this.step=_1}}
+,isc.A.$14v=function isc_SpinnerItem__setUpIcons(){if(this.icons==null)this.icons=[];var _1=isc.addProperties({},isc.SpinnerItem.INCREASE_ICON),_2=isc.addProperties({},isc.SpinnerItem.DECREASE_ICON);this.icons.addListAt([_1,_2],0);this.Super("$14v",arguments)}
+,isc.A.getIconsHTML=function isc_SpinnerItem_getIconsHTML(){if(!this.showIcons)return"";var _1=isc.SB.create();if(!this.$204){var _2="<TD tabIndex=-1"+(isc.Browser.isIE?" style='font-size:0px'":"")+">",_3={},_4=this.$16l(_3),_5=this.$16m(_3);this.$204=["<TABLE role='presentation' STYLE='vertical-align:",_4,";margin-top:",_5,";margin-bottom:",_5,";display:inline;' BORDER=0 CELLPADDING=0 CELLSPACING=0><TR>",_2,this.getIconHTML(this.icons[0]),"<TD></TR><TR>",_2,this.getIconHTML(this.icons[1]),"</TD></TR></TABLE>"]}else{this.$204[8]=this.getIconHTML(this.icons[0]);this.$204[11]=this.getIconHTML(this.icons[1])}
+_1.append(this.$204);for(var i=2;i<this.icons.length;i++){var _7=this.icons[i];if(!this.$16f(_7)||this.$16e(_7))continue;_1.append(this.getIconHTML(_7))}
+return _1.toString()}
+,isc.A.$16m=function isc_SpinnerItem__getIconVMargin(_1){if(_1==this.icons[0]||_1==this.icons[1])return 0;return this.Super("$16m",arguments)}
+,isc.A.getTotalIconsWidth=function isc_SpinnerItem_getTotalIconsWidth(){var _1=this.Super("getTotalIconsWidth",arguments);if(_1>0){var _2=Math.max(this.icons[0].width,this.icons[1].width);_1-=_2}
+return _1}
+,isc.A.mouseStillDown=function isc_SpinnerItem_mouseStillDown(_1,_2,_3){if(this.isDisabled()||this.isReadOnly())return;this.$205++;if(this.$18j)this.updateValue();var _4=_3.nativeTarget;if(_4==this.$16v(this.icons[0])){this.increaseValue()}else if(_4==this.$16v(this.icons[1])){this.decreaseValue()}}
+,isc.A.mouseDown=function isc_SpinnerItem_mouseDown(_1,_2,_3){if(this.isDisabled()||this.isReadOnly())return;if(!this.hasFocus)this.focusInItem();this.$205=0}
+,isc.A.handleKeyPress=function isc_SpinnerItem_handleKeyPress(_1,_2){if(this.Super("handleKeyPress",arguments)==false)return false;var _3=_1.keyName,_4=this.isReadOnly();if(!_4&&_3=="Arrow_Up"){this.increaseValue();return false}
+if(!_4&&_3=="Arrow_Down"){this.decreaseValue();return false}}
+,isc.A.increaseValue=function isc_SpinnerItem_increaseValue(){this.updateValue();var _1=this.getValue();if(_1!=null&&this.max==_1)return;var _2=this.$205;var _3=this.step*(_2!=null?Math.pow(2,Math.floor(this.$205/(2000/isc.EH.STILL_DOWN_DELAY))):1);return this.$206(_1,_3)}
+,isc.A.decreaseValue=function isc_SpinnerItem_decreaseValue(){this.updateValue();var _1=this.getValue();if(_1!=null&&this.min==_1)return;var _2=this.$205,_3=(0-this.step)*(_2!=null?Math.pow(2,Math.floor(this.$205/(2000/isc.EH.STILL_DOWN_DELAY))):1);return this.$206(_1,_3)}
+,isc.A.$206=function isc_SpinnerItem__increaseValue(_1,_2){var _3=this.min,_4=this.max;if(!isc.isA.Number(_1)){_1=0;if((_3!=null&&_1<_3)||(_4!=null&&_1>_4)){_1=(_3!=null?_3:_4)}}else{var _5,_6;if(Math.round(_2)==_2){_5=0}else{var _7=_2+"";_5=_7.length-(_7.indexOf(".")+1)}
+if(Math.round(_1)==_1){_6=0}else{var _8=_1+"";_6=_8.length-(_8.indexOf(".")+1)}
+_1+=_2;var _9=Math.max(_5,_6);if(_9>0){_1=parseFloat(_1.toFixed(_9))}
+if(_2>0&&_4!=null&&_1>_4)_1=_4;else if(_2<0&&_3!=null&&_1<_3)_1=_3}
+this.setElementValue(_1);this.updateValue()}
+,isc.A.mapDisplayToValue=function isc_SpinnerItem_mapDisplayToValue(_1){_1=this.Super("mapDisplayToValue",arguments);if(isc.isA.String(_1)){var _2=parseFloat(_1);if(_2==_1)_1=_2}
+return _1}
+,isc.A.updateValue=function isc_SpinnerItem_updateValue(){var _1=this.getElementValue();_1=this.mapDisplayToValue(_1);if(_1==this._value)return;if(_1!=null&&(!isc.isA.Number(_1)||(this.max!=null&&_1>this.max)||(this.min!=null&&_1<this.min)))
+{var _2=this.mapValueToDisplay(this._value);this.setElementValue(_2);return}
+this.Super("updateValue",arguments)}
+,isc.A.setValue=function isc_SpinnerItem_setValue(_1,_2,_3,_4,_5,_6){if(_1!=null&&!isc.isA.Number(_1)){var _7=parseFloat(_1);if(_7==_1)_1=_7;else{this.logWarn("setValue(): passed '"+_1+"'. This is not a valid number - rejecting this value");_1=null}}
+if(_1!=null){if(this.max!=null&&_1>this.max){this.logWarn("setValue passed "+_1+" - exceeds specified maximum. Clamping to this.max.");_1=this.max}
+if(this.min!=null&&_1<this.min){this.logWarn("setValue passed "+_1+" - less than specified minimum. Clamping to this.min.");_1=this.min}}
+return this.invokeSuper(isc.SpinnerItem,"setValue",_1,_2,_3,_4,_5,_6)}
+);isc.B._maxIndex=isc.C+14;isc.ClassFactory.defineClass("SliderItem","CanvasItem");isc.A=isc.SliderItem.getPrototype();isc.A.vertical=false;isc.A.minValue=1;isc.A.maxValue=100;isc.A.roundValues=true;isc.A.roundPrecision=1;isc.A.defaultValue=1;isc.A.shouldSaveValue=true;isc.A.sliderDefaults={autoDraw:false,showTitle:false,valueChanged:function(){if(this.canvasItem)this.canvasItem.sliderChange()}};isc.A.autoDestroy=true;isc.A=isc.SliderItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.changeOnDrag=true;isc.B.push(isc.A.init=function isc_SliderItem_init(){this.Super("init",arguments);this.$207=this.getDefaultValue()}
+,isc.A.$18y=function isc_SliderItem__createCanvas(){var _1=this.sliderDefaults;var _2=isc.addProperties({},_1,{vertical:this.vertical,minValue:this.minValue,maxValue:this.maxValue,value:this.defaultValue,numValues:this.numValues,roundValues:this.roundValues,roundPrecision:this.roundPrecision,tabIndex:this.getGlobalTabIndex()},this.sliderProperties);this.canvas=isc.Slider.create(_2);this.Super("$18y",arguments)}
+,isc.A.isEditable=function isc_SliderItem_isEditable(){return true}
+,isc.A.setValue=function isc_SliderItem_setValue(_1){this.$17g=true;var _2;if(_1==null){_2=this.getDefaultValue();if(_2!=null)_1=_2}
+this.$207=_1;this.canvas.setValue(_1,(_2!=null))}
+,isc.A.getValue=function isc_SliderItem_getValue(){return this.canvas.getValue()}
+,isc.A.sliderChange=function isc_SliderItem_sliderChange(){var _1=this.canvas.getValue();if(this.$207!=_1){if(this.changeOnDrag||!this.canvas.valueIsChanging()){this.$10y(_1);this.$207=_1}}else{this.saveValue(_1)}}
+,isc.A.setMinValue=function isc_SliderItem_setMinValue(_1){this.canvas.setMinValue(_1)}
+,isc.A.setMaxValue=function isc_SliderItem_setMaxValue(_1){this.canvas.setMaxValue(_1)}
+,isc.A.setNumValues=function isc_SliderItem_setNumValues(_1){this.canvas.setNumValues(_1)}
+,isc.A.$85m=function isc_SliderItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+10;isc.ClassFactory.defineClass("ColorItem","TextItem");isc.A=isc.ColorItem.getPrototype();isc.A.changeOnBlur=true;isc.A.changeOnKeypress=false;isc.A.pickerConstructor="ColorPicker";isc.A.pickerDefaults={colorSelected:function(_1,_2){this.callingFormItem.pickerColorSelected(_1,_2)}};isc.A.showPickerIcon=true;isc.A.pickerIconWidth=18;isc.A.pickerIconHeight=18;isc.A.pickerIconSrc="[SKIN]/DynamicForm/ColorPicker_icon.png";isc.A.pickerIconProperties={prompt:"Click to select a new color",showOver:false};isc.A.defaultPickerMode="simple";isc.A.allowComplexMode=true;isc.A.supportsTransparency=false;isc.A.browserSpellCheck=false;isc.A=isc.ColorItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_ColorItem_init(){this.pickerDefaults.defaultPickMode=this.defaultPickerMode;this.pickerDefaults.allowComplexMode=this.allowComplexMode;this.pickerDefaults.supportsTransparency=this.supportsTransparency;this.Super("init",arguments)}
+,isc.A.updateValue=function isc_ColorItem_updateValue(){var _1=this._value,_2=this.getElementValue();_2=this.mapDisplayToValue(_2);if(_2==this._value)return;if(_2!=null&&!isc.isA.color(_2)){this.setElementValue(_1);return}
+this.Super("updateValue",arguments);if(this.showPickerIcon&&this._value!=_1){this.setIconBackgroundColor(this.getPickerIcon(),this._value)}}
+,isc.A.getDefaultValue=function isc_ColorItem_getDefaultValue(){var _1=this.Super("getDefaultValue",arguments);if(_1&&!isc.isA.color(_1)){this.logWarn("Default value:"+_1+" is not a valid color identifier."+" Ignoring this default.");_1=this.defaultValue=null}
+return _1}
+,isc.A.showPicker=function isc_ColorItem_showPicker(){this.picker=isc.ColorChooser.getSharedColorPicker(this.pickerDefaults);var _1=this.picker;var _2=_1.callingFormItem;if(_2!=this){_1.callingFormItem=this;_1.callingForm=this.form;_1.setSupportsTransparency(this.supportsTransparency)}
+_1.setHtmlColor(this._value||"");return this.Super("showPicker",arguments)}
+,isc.A.pickerColorSelected=function isc_ColorItem_pickerColorSelected(_1,_2){if(!this.mask){_1=this.mapValueToDisplay(_1)}
+this.setElementValue(_1);this.updateValue()}
+,isc.A.setValue=function isc_ColorItem_setValue(_1){this.Super("setValue",arguments);this.setIconBackgroundColor(this.getPickerIcon(),this._value)}
+);isc.B._maxIndex=isc.C+6;if(isc.ListGrid){isc.ClassFactory.defineClass("ValueMapEditor","VLayout");isc.A=isc.ValueMapEditor.getPrototype();isc.A.mapTypeConstructor=isc.Button;isc.A.mapTypeDefaults={autoDraw:false,width:"100%",click:function(){this.creator.canvasItem.toggleObjectArray()},showIf:function(){return this.creator.canvasItem.showMapTypeButton},getTitle:function(){var _1=this.creator.canvasItem,_2=_1.saveAsObject;if(_2)return _1.saveAsObjectTitle;else return _1.saveAsArrayTitle}};isc.A.selectorConstructor=isc.ListGrid;isc.A.selectorDefaults={height:1,overflow:"visible",bodyOverflow:"visible",inherentHeight:true,showNewRecordRow:true,listEndEditAction:"next",canEdit:true,editEvent:isc.EH.CLICK,cellHeight:22,selectionType:isc.Selection.NONE,selectOnEdit:false,leaveScrollbarGap:false,showSortArrow:isc.ListGrid.NONE,canSort:false,canResizeFields:false,dataChanged:function(){this.Super("dataChanged",arguments);if(this.creator&&this.creator.canvasItem)
+this.creator.canvasItem.updateValue()},stopOnErrors:true,validateCellValue:function(_1,_2,_3,_4){var _5=this.getFieldName(_2),_6=this.creator.canvasItem,_7=_6.$208(_5,_1,_3);if(_7)return _7;return this.Super("validateCellValue",arguments)},cellContextClick:function(_1,_2,_3){var _4=this.creator.canvasItem.getSelectorContextMenu(_1);_4.showContextMenu();return false},getHeaderContextMenu:function(){return this.creator.canvasItem.getSelectorContextMenu()}};isc.A=isc.ValueMapEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_ValueMapEditor_initWidget(){if(!this.canvasItem){this.logWarn("ValueMapEditors are not supported as standalone widgets at this time.");return}
+this.Super("initWidget",arguments);this.addAutoChild("mapType",{});this.addAutoChild("selector",{newRecordRowMessage:this.canvasItem.newOptionRowMessage,showHeader:this.showHeader,fields:this.canvasItem.$209(),data:this.canvasItem.$21a()})}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("ValueMapItem","CanvasItem");isc.A=isc.ValueMapItem.getPrototype();isc.A.height=1;isc.A.autoDestroy=true;isc.A.shouldSaveValue=true;isc.A.showMapTypeButton=true;isc.A.showHeader=true;isc.A.newOptionRowMessage="Click to add a new option";isc.A.displayTitle="Display";isc.A.valueTitle="Value";isc.A.undefinedKeyErrorMessage="Each valueMap option must have a defined value";isc.A.duplicateValueErrorMessage="Please enter a unique value for this option";isc.A.saveAsArrayTitle="Stored == Displayed";isc.A.saveAsObjectTitle="Stored != Displayed";isc.A=isc.ValueMapItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$18y=function isc_ValueMapItem__createCanvas(){if(this.canvas)return;if(this._value==null)this._value=[];this.canvas=isc.ValueMapEditor.create({autoDraw:false,_generated:true,ID:this.getID()+"$21b",canvasItem:this,showMapType:this.showMapTypeButton,showHeader:this.showHeader,height:this.height,overflow:isc.Canvas.VISIBLE});this.Super("$18y",arguments)}
+,isc.A.$21c=function isc_ValueMapItem__getMapTypeButton(){return this.canvas.mapType}
+,isc.A.$21d=function isc_ValueMapItem__getSelectorGrid(){return this.canvas.selector}
+,isc.A.$21a=function isc_ValueMapItem__getSelectorData(_1){var _1=_1||this.getValue();if(!_1)_1=this.saveAsObject?{}:[];var _2=[];if(isc.isAn.Array(_1)){for(var i=0;i<_1.length;i++){_2[i]={value:_1[i]}}}else{var i=0;for(var _4 in _1){_2[i]={value:_4,display:_1[_4]}
+i++}}
+return _2}
+,isc.A.$209=function isc_ValueMapItem__getSelectorFields(){if(!this.$21e||!this.$21f){this.$21e={name:"display",title:this.displayTitle};this.$21f={name:"value",title:this.valueTitle}}
+var _1=[this.$21f];if(this.saveAsObject)_1.add(this.$21e);return _1}
+,isc.A.$208=function isc_ValueMapItem__validateSelectorCellValue(_1,_2,_3){if(_1!="value")return;if(!this.saveAsObject&&this.allowDuplicates)return;var _4=this.$21d(),_5=_2>_4.data.getLength(),_6=this._value,_7;if(this.saveAsObject){if(_3==null||_3==""){return[this.undefinedKeyErrorMessage]}
+_7=isc.getKeys(_6)}else{_7=_6||[]}
+var _8;if(_5){if(_7.contains(_3))_8=true}else{for(var i=0;i<_7.length;i++){if(_2==i)continue;if(_3==_7[i]){_8=true;break}}}
+if(_8)return[this.duplicateValueErrorMessage];return null}
+,isc.A.getSelectorContextMenu=function isc_ValueMapItem_getSelectorContextMenu(_1){if(!this.$21g){var _2=[{title:"Add new option",click:"menu.canvasItem.addOption()"},{title:"Delete option",enableIf:"this.record != null",click:"menu.canvasItem.removeOption(menu.record)"}];if(this.showMapTypeButton){_2.add({dynamicTitle:"this.canvasItem.$21h()",click:"menu.canvasItem.toggleObjectArray()"})}
+this.$21g=this.ns.Menu.create({canvasItem:this,ID:this.getID()+"$21i",data:_2})}
+this.$21g.record=_1;return this.$21g}
+,isc.A.addOption=function isc_ValueMapItem_addOption(){this.$21d().startEditingNew()}
+,isc.A.removeOption=function isc_ValueMapItem_removeOption(_1){var _2=this.$21d();_2.data.remove(_1);_2.data.dataChanged()}
+,isc.A.$21h=function isc_ValueMapItem__getToggleObjectArrayTitle(){var _1=this.saveAsObject;return _1?this.saveAsArrayTitle:this.saveAsObjectTitle}
+,isc.A.toggleObjectArray=function isc_ValueMapItem_toggleObjectArray(){this.setSaveAsObject(!this.saveAsObject)}
+,isc.A.setSaveAsObject=function isc_ValueMapItem_setSaveAsObject(_1){if(this.saveAsObject==_1)return;var _2,_3=this.getValue();if(_1){_2={};if(_3!=null){for(var i=0;i<_3.length;i++){_2[_3[i]]=_3[i]}}}else{_2=[];for(var _5 in _3){_2.add(_5)}}
+this._value=_2;this.saveAsObject=_1;var _6=this.$21d(),_7=this.$21a();if(!_6)return;_6.setData(_7);_6.setFields(this.$209());if(this.showMapTypeButton)this.$21c().markForRedraw()}
+,isc.A.isEditable=function isc_ValueMapItem_isEditable(){return true}
+,isc.A.updateValue=function isc_ValueMapItem_updateValue(){var _1=this.$21d(),_2=_1.data,_3=this.saveAsObject,_4=_3?{}:[],_5;if(_3){var _6={};if(isc.isAn.Array(this._value)){_5=true}else{isc.addProperties(_6,this._value)}
+var _7=isc.getKeys(_6);for(var i=0;i<_2.length;i++){var _9=_2[i],_10=_9.display;_4[_9.value]=_9.display;if(!_7.contains(_10)||(_6[_9.value]!=_10))
+_5=true;delete _6[_9.value]}
+if(isc.getKeys(_6).length!=0)_5=true}else{if(!isc.isAn.Array(this._value)||(this._value.length!=_2.length)){_5=true}
+for(var i=0;i<_2.length;i++){var _9=_2[i],_10=_9.value;_4[i]=_10;if(!_5&&(this._value[i]!=_10))_5=true}}
+if(!_5)return;if(this.handleChange(_4,this._value)==false)return;_4=this.$17n;delete this.$17n;this.saveValue(_4)}
+,isc.A.setValue=function isc_ValueMapItem_setValue(_1){this.$17g=true;if(_1!=null&&!isc.isAn.Object(_1)){this.logWarn("setValue() passed an invalid object. Must be a valueMap (either "+"specified as an array or a raw JS object.");return}
+var _2=isc.isAn.Array(_1),_3=(!!this.saveAsObject);if(_1!=null&&_2==_3){this.logInfo("setValue() passed a valueMap of type "+(_2?"Array":"Object")+". Updating this.saveAsObject to match this data type.");this.setSaveAsObject(!_2);_3=this.saveAsObject}
+this._value=_1;this.$21d().setData(this.$21a())}
+);isc.B._maxIndex=isc.C+15}
+isc.defineClass("ArrayItem",isc.ValueMapItem);isc.A=isc.ArrayItem.getPrototype();isc.A.showMapTypeButton=false;isc.A.showHeader=false;isc.A.saveAsObject=false;isc.A.allowDuplicates=true;isc.A.newOptionRowMessage="Click to add values";isc.defineClass("MappingItem",isc.ValueMapItem);isc.A=isc.MappingItem.getPrototype();isc.A.showMapTypeButton=false;isc.A.saveAsObject=true;if(isc.ListGrid){isc.ClassFactory.defineClass("PickTreeItem","CanvasItem");isc.A=isc.PickTreeItem;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$21j=function isc_c_PickTreeItem__itemSelected(_1){return this.canvasItem.$21j(_1)}
+,isc.A.$21k=function isc_c_PickTreeItem__getButtonTitle(){var _1=this.getSelectedItem();if(_1==null){var _2=this.canvasItem,_3=this.canvasItem.getValue();if(_3!=null)return _2.mapValueToDisplay(_3)}
+return this.Super("getTitle",arguments)}
+,isc.A.$21l=function isc_c_PickTreeItem__treeDataLoaded(){var _1=this.canvasItem;_1.setValue(_1.getValue())}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.PickTreeItem.getPrototype();isc.A.canFocus=true;isc.A.shouldSaveValue=true;isc.A.buttonDefaults={height:19};isc.A.emptyMenuMessage="No items to display";isc.A=isc.PickTreeItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.buttonConstructor="TreeMenuButton";isc.B.push(isc.A.init=function isc_PickTreeItem_init(){this.Super("init",arguments);if(this.dataSource==null&&this.valueTree==null)
+this.logWarn("This form item requires a 'valueTree'.")}
+,isc.A.getOptionDataSource=function isc_PickTreeItem_getOptionDataSource(){var _1=this.optionDataSource||this.dataSource;if(_1!=null)_1=isc.DataSource.get(_1);return _1}
+,isc.A.getDisplayValue=function isc_PickTreeItem_getDisplayValue(){return this.canvas.getTitle()}
+,isc.A.$18y=function isc_PickTreeItem__createCanvas(){var _1={getTitle:isc.PickTreeItem.$21k,canFocus:this.$kk(),disabled:this.isDisabled(),dataSource:this.getOptionDataSource(),criteria:this.optionCriteria,data:this.valueTree,canSelectParentItems:this.canSelectParentItems,itemSelected:isc.PickTreeItem.$21j,emptyMenuMessage:this.emptyMenuMessage,loadDataOnDemand:this.loadDataOnDemand,treeDataLoaded:isc.PickTreeItem.$21l,displayField:this.displayField};this.canvas=this.addAutoChild("button",_1,this.buttonConstructor,this.container);this.autoDestroy=true;this.Super("$18y",arguments);if(this._value!=null)this.setValue(this._value)}
+,isc.A.$21j=function isc_PickTreeItem__itemSelected(_1){var _2=this.$21m(_1);this.$92n=_1;var _3=this.$10y(_2);if(_3==false)delete this.$92n;return _3}
+,isc.A.saveValue=function isc_PickTreeItem_saveValue(_1,_2){if(this.$92n!=null){this.$21n=this.$92n;delete this.$92n}else{this.$21n=this.$21s(_1);if(this.canvas){this.canvas.setSelectedItem(this.$21n)}}
+return this.Super("saveValue",arguments)}
+,isc.A.$21m=function isc_PickTreeItem__mapNodeToValue(_1){if(this.$21o())return this.valueTree.getPath(_1);return _1[this.$21p()]}
+,isc.A.$21o=function isc_PickTreeItem__usePathAsId(){return(!this.valueField&&this.valueTree&&(this.valueTree.modelType!="parent"))}
+,isc.A.$21p=function isc_PickTreeItem__getValueFieldName(){var _1=this.valueField;if(!_1){_1=this.valueTree?this.valueTree.idField:this.$21q()}
+return _1}
+,isc.A.$21q=function isc_PickTreeItem__getPrimaryKeyFieldName(){if(!this.getOptionDataSource())return null;if(!this.$21r){var _1=isc.DataSource.getDataSource(this.getOptionDataSource()),_2=_1.getPrimaryKeyFieldNames(),_3=isc.isAn.Array(_2)?_2[0]:_2;if(isc.isAn.Array(_2)&&_2.length>1){this.logWarn("Multiple primary key fields not supported by PickTreeItem - using '"+_3+"' as single primary key field")}
+this.$21r=_3}
+return this.$21r}
+,isc.A.getSelectedNode=function isc_PickTreeItem_getSelectedNode(){return this.$21n}
+,isc.A.getSelectedRecord=function isc_PickTreeItem_getSelectedRecord(){return this.getSelectedNode()}
+,isc.A.updateValueMap=function isc_PickTreeItem_updateValueMap(_1){this.Super("updateValueMap",arguments);if(_1)this.canvas.markForRedraw()}
+,isc.A.$21s=function isc_PickTreeItem__getNode(_1){if(!_1)return null;var _2=(this.getOptionDataSource()?this.canvas.getTree():this.valueTree);if(this.$21o())return this.valueTree.find(_1);return _2.find(this.$21p(),_1)}
+,isc.A.$85m=function isc_PickTreeItem__shouldAllowExpressions(){return false}
+,isc.A.fetchData=function isc_PickTreeItem_fetchData(){var _1=this.getOptionDataSource();if(_1==null){this.logWarn("fetchData() called on pickTree item with no option data source. Ignoring.");return}
+var _2=this.canvas.getTree();if(!_2||!_2.invalidateCache){return}
+_2.invalidateCache()}
+);isc.B._maxIndex=isc.C+16;isc.defineClass("IPickTreeItem","PickTreeItem");isc.A=isc.IPickTreeItem.getPrototype();isc.A.buttonConstructor="ITreeMenuButton"}
+isc.ClassFactory.defineClass("PopUpTextAreaItem","StaticTextItem");isc.A=isc.PopUpTextAreaItem.getPrototype();isc.A.canFocus=true;isc.A.wrap=false;isc.A.width=150;isc.A.clipValue=true;isc.A.popUpOnEnter=false;isc.A.popUpOnAnyClick=true;isc.A.textAreaWidth=100;isc.A.textAreaHeight=100;isc.A.iconOnly=false;isc.A.popUpIconSrc="[SKIN]/DynamicForm/PopUpTextAreaEditor_icon.gif";isc.A.popUpIconWidth=20;isc.A.popUpIconHeight=20;isc.A.iconVAlign=isc.Canvas.CENTER;isc.A=isc.PopUpTextAreaItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$14v=function isc_PopUpTextAreaItem__setUpIcons(){if(this.icons==null)this.icons=[];var _1={name:"popUpIcon",src:this.popUpIconSrc,showOver:false,width:this.popUpIconWidth,height:this.popUpIconHeight,click:this.$43p};this.icons.addAt(_1,0);this.Super("$14v",arguments)}
+,isc.A.$43p=function isc_PopUpTextAreaItem__popUpIconClick(_1,_2,_3){if(_2.popUpOnAnyClick||_2.isDisabled())return;_2.showPopUp(true)}
+,isc.A.handleCellClick=function isc_PopUpTextAreaItem_handleCellClick(){if(this.Super("handleCellClick")==false)return false;if(this.popUpOnAnyClick&&!this.isDisabled())this.showPopUp(true)}
+,isc.A.showPopUp=function isc_PopUpTextAreaItem_showPopUp(_1){var _2=this.getValue();if(!this.$21t)this.setupPopUpForm();this.placePopUp();var _3=this.$21t.getItem("textArea");_3.setValue(_2);this.$21t.bringToFront();this.$21t.show();if(_1)this.$21t.focusInItem("textArea");this.$21t.showClickMask({target:this,methodName:"hidePopUp"},true,[this.$21t])}
+,isc.A.visibilityChanged=function isc_PopUpTextAreaItem_visibilityChanged(){if(!this.isVisible())this.$21u()}
+,isc.A.$21u=function isc_PopUpTextAreaItem__hiddenObservation(){var _1=this.$21t;if(!_1||!(_1.isVisible()&&_1.isDrawn()))return;_1.hide()}
+,isc.A.moved=function isc_PopUpTextAreaItem_moved(){this.$21v()}
+,isc.A.$21v=function isc_PopUpTextAreaItem__movedObservation(){var _1=this.$21t;if(!_1||!(_1.isVisible()&&_1.isDrawn()))return;var _2=this.getTop(),_3=this.getLeft(),_4=this.getInnerWidth(),_5=this.getInnerHeight(),_6=this.containerWidget,_7=_6.getScrollTop(),_8=_6.getScrollLeft(),_9=_6.getViewportWidth(),_10=_6.getViewportHeight();if(_2<_7||(_2+_5)>(_7+_10)||_3<_8||(_3+_4)>(_8+_9))
+{_1.hide()}else{this.placePopUp()}}
+,isc.A.zIndexChanged=function isc_PopUpTextAreaItem_zIndexChanged(){var _1=this.$21t;if(!_1||!(_1.isVisible()&&_1.isDrawn()))return;_1.bringToFront()}
+,isc.A.placePopUp=function isc_PopUpTextAreaItem_placePopUp(){var _1=this.getTextAreaTop(),_2=this.getTextAreaLeft(),_3=this.getTextAreaWidth(),_4=this.getTextAreaHeight();this.$21t.moveTo(_2,_1);this.$21t.resizeTo(_3,_4);var _5=this.$21t.getItem("textArea");_5.setWidth(_3);_5.setHeight(_4)}
+,isc.A.setupPopUpForm=function isc_PopUpTextAreaItem_setupPopUpForm(){if(this.$21t!=null)return;var _1=isc.DynamicForm.create({autoDraw:false,ID:this.getID()+"$21t",_generated:true,separateContentInsertion:false,cellPadding:0,targetItem:this,values:{textArea:this.getValue()},items:[{name:"textArea",showTitle:false,type:"textArea",selectOnFocus:true,targetItem:this,focus:function(_4){this.targetItem.textAreaFocus()},keyDown:function(_4,_5,_6,_7){this.targetItem.$18i();return this.targetItem.textAreaKeyDown(_4,_6,_7)},keyPress:function(_4,_5,_6,_7){return this.targetItem.textAreaKeyPress(_4,_6,_7)},blur:function(){this.targetItem.textAreaBlur()}}],hide:function(_4,_5,_6,_7){var _2=this.invokeSuper(isc.DynamicForm,"hide",_4,_5,_6,_7);this.hideClickMask();return _2}});this.$21t=_1;var _3=this.containerWidget;_1.observe(_3,"destroy","observer.hide();observer.destroy()")}
+,isc.A.hidePopUp=function isc_PopUpTextAreaItem_hidePopUp(){if(this.$21t){this.updateValue();this.$21t.hide()}}
+,isc.A.destroy=function isc_PopUpTextAreaItem_destroy(){if(this.$21t){this.$21t.destroy();delete this.$21t}
+return this.Super("destroy",arguments)}
+,isc.A.getTextAreaTop=function isc_PopUpTextAreaItem_getTextAreaTop(){var _1=this.getPageTop();if(isc.Browser.isIE)_1-=1;return _1}
+,isc.A.getTextAreaLeft=function isc_PopUpTextAreaItem_getTextAreaLeft(){return this.getPageLeft()}
+,isc.A.getTextAreaWidth=function isc_PopUpTextAreaItem_getTextAreaWidth(){return Math.max(this.textAreaWidth,this.getInnerWidth())}
+,isc.A.getTextAreaHeight=function isc_PopUpTextAreaItem_getTextAreaHeight(){return this.textAreaHeight}
+,isc.A.mapValueToDisplay=function isc_PopUpTextAreaItem_mapValueToDisplay(){if(this.iconOnly)return"";return this.Super("mapValueToDisplay",arguments)}
+,isc.A.textAreaBlur=function isc_PopUpTextAreaItem_textAreaBlur(){this.hidePopUp()}
+,isc.A.textAreaFocus=function isc_PopUpTextAreaItem_textAreaFocus(){}
+,isc.A.textAreaKeyPress=function isc_PopUpTextAreaItem_textAreaKeyPress(_1,_2,_3){}
+,isc.A.textAreaKeyDown=function isc_PopUpTextAreaItem_textAreaKeyDown(_1,_2,_3){}
+,isc.A.setValue=function isc_PopUpTextAreaItem_setValue(_1){var _2=this.mapValueToDisplay(this.getValue());this.Super("setValue",arguments);var _3=this.mapValueToDisplay(this.getValue());if(_2!=_3){this.setElementValue(_3)
+if(this.$21t&&this.$21t.isVisible()){this.$21t.setValue("textArea",_3)}}}
+,isc.A.updateValue=function isc_PopUpTextAreaItem_updateValue(){if(this.$21t&&this.$21t.isVisible()&&!this.$21t.$10u)
+{var _1=this.$21t.getItem("textArea");_1.updateValue();var _2=this.$21t.getValue("textArea");this.setElementValue(this.mapValueToDisplay(_2));this.$10y(_2)}else{return this.Super("updateValue",arguments)}}
+,isc.A.setElementValue=function isc_PopUpTextAreaItem_setElementValue(_1){if(this.iconOnly)return;return this.Super("setElementValue",arguments)}
+,isc.A.focusInItem=function isc_PopUpTextAreaItem_focusInItem(){if(this.$21t&&this.$21t.isVisible()){this.$21t.focusInItem('textArea')}else if(this.showIcons){this.focusInIcon(this.icons[0])}else{this.showPopUp(true)}}
+,isc.A.$173=function isc_PopUpTextAreaItem__setElementTabIndex(_1){this.$174=_1;if(!this.isVisible()||!this.containerWidget.isDrawn())return;this.$175()}
+,isc.A.setElementReadOnly=function isc_PopUpTextAreaItem_setElementReadOnly(_1){}
+);isc.B._maxIndex=isc.C+28;isc.defineClass("ExpressionItem","PopUpTextAreaItem");isc.A=isc.ExpressionItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.textAreaWidth=400;isc.A.showActionIcon=true;isc.A.actionIconSrc="[SKIN]/actions/add.png";isc.A.actionIconWidth=20;isc.A.actionIconHeight=20;isc.A.actionIconPosition=1;isc.B.push(isc.A.mapValueToDisplay=function isc_ExpressionItem_mapValueToDisplay(_1){if(isc.isA.StringMethod(_1))return _1.getDisplayValue();else if(isc.isA.Function(_1)){if(_1.iscAction){return"["+_1.iscAction.title+"]"}
+return isc.Func.getBody(_1)}
+else return this.Super("mapValueToDisplay",arguments)}
+,isc.A.getValue=function isc_ExpressionItem_getValue(){var _1=this.Super("getValue");if(isc.isA.Function(_1))return isc.Func.getBody(_1);else return _1}
+,isc.A.$14v=function isc_ExpressionItem__setUpIcons(){this.Super("$14v",arguments);if(this.showActionIcon){if(this.icons==null)this.icons=[];var _1=this.actionIconPosition;this.icons.addAt({name:"action",src:this.actionIconSrc,showOver:false,width:this.actionIconWidth,height:this.actionIconHeight,click:this.getID()+".showActionMenu();return false;"},_1);this.$36c(this.icons[_1])}}
+,isc.A.updateAppearance=function isc_ExpressionItem_updateAppearance(_1){this.setElementValue(this.mapValueToDisplay(_1))}
+,isc.A.showActionMenu=function isc_ExpressionItem_showActionMenu(){var _1=this,_2=isc.ActionMenu.create({sourceComponent:this.form.currentComponent,sourceMethod:this.name,components:this.form.allComponents,bindingComplete:function(_4){_1.$10y(_4)}});_2.show();var _3=this.getIconPageRect(this.icons[1]);_2.placeNear(_3[0]+this.actionIconWidth,_3[1]+this.actionIconHeight-this.containerWidget.getScrollTop())}
+);isc.B._maxIndex=isc.C+5;isc.ClassFactory.defineClass("SearchForm","DynamicForm");isc.A=isc.SearchForm.getPrototype();isc.A.canEditFieldAttribute="canFilter";isc.A.isSearchForm=true;isc.A.hiliteRequiredFields=false;isc.A.operationType="fetch";isc.A.$66m=true;isc.A.allowEmptyValues=true;isc.A=isc.SearchForm.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$21w="DateItem";isc.A.defaultDateEditorType="DateRangeItem";isc.B.push(isc.A.createItem=function isc_SearchForm_createItem(_1,_2,_3,_4,_5){var _6=this.getDataSource(),_7=_6?_6.getField(_1[this.fieldIdProperty])!=null:false;if(_7){var _8=isc.FormItemFactory.getItemClassName(_1,_2,this),_9=isc.FormItemFactory.getItemClass(_8);if(_9==isc.DateItem&&_1&&(_1.useTextField==null))
+_1.useTextField=true;if(_1.allowEmptyValue==null){_1.allowEmptyValue=this.allowEmptyValues}}
+return this.invokeSuper(isc.SearchForm,"createItem",_1,_2,_3,_4,_5)}
+,isc.A.submitValues=function isc_SearchForm_submitValues(_1,_2){if(this.search!=null){return this.search(this.getValuesAsCriteria(),this)}}
+,isc.A.validate=function isc_SearchForm_validate(_1,_2,_3){if(this.validateTypeOnly){return this.invokeSuper(isc.SearchForm,"validate",_1,_2,true)}else{return this.invokeSuper(isc.SearchForm,"validate",_1,_2,_3)}}
+,isc.A.getEditorType=function isc_SearchForm_getEditorType(_1){if(_1.editorType!=null)return _1.editorType;var _2=_1.type;if(_2&&isc.SimpleType.inheritsFrom(_2,"date")){if(_1.editorType==null){return this.defaultDateEditorType}}
+return this.Super("getEditorType",arguments)}
+);isc.B._maxIndex=isc.C+4;isc.A=isc.SearchForm.getPrototype();isc.A.showFilterFieldsOnly=true;isc.A.validateTypeOnly=true;isc.SearchForm.registerStringMethods({search:"criteria,form"});isc.ClassFactory.defineClass("ValuesManager");isc.A=isc.ValuesManager.getPrototype();isc.A.unknownErrorMessage=null;isc.A=isc.ValuesManager.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_ValuesManager_init(){this.ns.ClassFactory.addGlobalID(this);if(this.unknownErrorMessage==null){this.unknownErrorMessage=isc.Canvas.getPrototype().unknownErrorMessage}
+if(this.dataSource)this.bindToDataSource(this.dataSource);this.values=isc.addProperties({},this.values);if(this.members!=null){var _1=this.members;this.members=null;if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){this.addMember(_1[i])}}
+this.rememberValues()}
+,isc.A.destroy=function isc_ValuesManager_destroy(){var _1=this.members;if(_1){for(var i=_1.length-1;i>=0;i--){this.removeMember(_1[i])}}
+window[this.getID()]=null}
+,isc.A.$49z=function isc_ValuesManager__saveDataReply(_1,_2,_3){if(!this.suppressServerDataSync&&_2&&_2.status>=0&&_3!=null){if(isc.isAn.Array(_3))_3=_3[0];if(_1.data)_1.data=isc.shallowClone(_1.data);this.setValues(_3)}
+this.$491={request:_1,response:_2,data:_3};this.formSavedComplete()}
+,isc.A.$71e=function isc_ValuesManager__updateMultipleMemberValue(_1,_2,_3,_4){_2=(_2!=null)?this.$702(_1,_2):_1;return this.$10y(_2,_3,_4)}
+,isc.A.$10y=function isc_ValuesManager__updateValue(_1,_2,_3){if(this.$835)return;if(isc.isA.DynamicForm(_3)&&_3.getItem(_1)==null){this.$66q(_3,_1);return}
+var _4;var _5=_3.getFullDataPath();if(isc.isA.String(_1)&&_1.startsWith(isc.Canvas.$70l)){_4=true}else if(_5){_1=(_1!=null)?this.$702(_5,_1):_5;_4=true}else{_4=_1.contains(isc.Canvas.$70l)}
+if(!_4){this.values[_1]=_2}else{isc.DynamicForm.$70n(_1,_2,this.values,_3,true)}
+if(_4&&this.autoSynchronize!==false){var _6=_1.split(isc.Canvas.$70l);if(parseInt(_6[_6.length-1])==_6[_6.length-1]){this.synchronizeMembers(_3)}else{var _7=this.getFieldsForDataPath(_1);this.$835=true;for(var i=0;i<_7.length;i++){if(_7[i].form==_3)continue;_7[i].saveValue(_2)}
+delete this.$835}}}
+,isc.A.synchronizeMembers=function isc_ValuesManager_synchronizeMembers(_1){if(!this.members)return;this.$835=true;for(var i=0;i<this.members.length;i++){if(!_1||this.members[i].selectionComponent==_1){this.$707(this.members[i])}}
+delete this.$835}
+,isc.A.$702=function isc_ValuesManager__combineDataPaths(_1,_2){return isc.DynamicForm.$702(_1,_2)}
+,isc.A.$66q=function isc_ValuesManager__itemlessValueWarning(_1,_2){this.logWarn("Member Form: "+_1+" has explicitly specified value for field[s] '"+_2+"', but has"+" no item associated with this fieldName. Ignoring this value. "+"Values may be set for fields with no associated form item directly "+"on the valuesManager via valuesManager.setValues(), but not on "+"member forms. See ValuesManager documentation for more info.")}
+,isc.A.$10z=function isc_ValuesManager__clearValue(_1,_2){var _3=_2.getFullDataPath();if(_3)_1=this.$702(_3,_1);return isc.DynamicForm.$70m(_1,this.values)}
+,isc.A.bindToDataSource=function isc_ValuesManager_bindToDataSource(_1){if(!isc.isA.DataSource(_1))_1=isc.DataSource.getDataSource(_1);if(_1!=null)this.dataSource=_1}
+,isc.A.setDataSource=function isc_ValuesManager_setDataSource(_1,_2){this.bindToDataSource(_1)}
+,isc.A.getDataSource=function isc_ValuesManager_getDataSource(){if(isc.isA.String(this.dataSource)){if(this.serviceNamespace||this.serviceName){this.dataSource=this.lookupSchema()}else{var _1=isc.DS.get(this.dataSource);if(_1!=null)return _1;_1=this.getWindow()[this.dataSource];if(_1&&isc.isA.DataSource(_1))return(this.dataSource=_1)}}
+return this.dataSource}
+,isc.A.lookupSchema=function isc_ValuesManager_lookupSchema(){var _1;if(this.serviceName)_1=isc.WebService.getByName(this.serviceName,this.serviceNamespace);else _1=isc.WebService.get(this.serviceNamespace);if((this.serviceNamespace||this.serviceName)&&_1==null){this.logWarn("Could not find WebService definition: "+(this.serviceName?"serviceName: "+this.serviceName:"")+(this.serviceNamespace?" serviceNamespace: "+this.serviceNamespace:"")+this.getStackTrace())}
+if(!isc.isA.String(this.dataSource)){this.logWarn("this.dataSource was not a String in lookupSchema");return}
+if(_1)return _1.getSchema(this.dataSource)}
+,isc.A.getDataSourceField=function isc_ValuesManager_getDataSourceField(_1){var _2=this.getDataSource();if(!_2||!_1)return null;_1=_1.trim("/");var _3=this.getDataSource(),_4=_1.split("/"),_5;for(var i=0;i<_4.length;i++){if(isc.isAn.emptyString(_4[i]))continue;var _7=_4[i];_5=_3.getField(_7);_3=_5?isc.DataSource.getDataSource(_5.type):_3}
+return _5}
+,isc.A.getItems=function isc_ValuesManager_getItems(){if(!this.members)return;var _1=[];for(var i=0;i<this.members.length;i++){var _3=this.members[i];if(!_3.getItems)continue;_1.addList(_3.getItems())}
+return _1}
+,isc.A.getFields=function isc_ValuesManager_getFields(){return this.getItems()}
+,isc.A.getItem=function isc_ValuesManager_getItem(_1,_2){return this.$706(_1,true,_2)}
+,isc.A.getField=function isc_ValuesManager_getField(_1){return this.getItem(_1)}
+,isc.A.getFieldsForDataPath=function isc_ValuesManager_getFieldsForDataPath(_1){return this.getItem(_1,true)}
+,isc.A.getMembers=function isc_ValuesManager_getMembers(){return this.members}
+,isc.A.getMember=function isc_ValuesManager_getMember(_1){var _2=window[_1];if(this.members&&this.members.contains(_2))return _2;return null}
+,isc.A.getMemberForField=function isc_ValuesManager_getMemberForField(_1,_2){return this.$706(_1,false,_2)}
+,isc.A.$706=function isc_ValuesManager__findMemberByField(_1,_2,_3){if(!this.members||_1==null||isc.isAn.emptyString(_1))return null;var _4=_1.trim(isc.Canvas.$70l);var _5=_4.split(isc.Canvas.$70l);var _6=_3?[]:null;for(var i=0;i<this.members.length;i++){var _8=this.members[i],_9=_8.getFullDataPath();if(_9==isc.Canvas.$70l||isc.isAn.emptyString(_9)){_9=null}else if(_9!=null){_9=_9.trim(isc.Canvas.$70l)}
+if(_5&&_5.length>0&&_9!=null){var _10=null;for(var _11=0;_11<_5.length;_11++){_10=!_10?_5[_11]:(_10+isc.Canvas.$70l+_5[_11]);if(_9.endsWith(isc.Canvas.$70l)){_9=_9.substring(0,_9.length-1)}
+if(_9==_10){if(!_2&&(_11==_5.length-1)){if(!_3)return _8;_6.add(_8);break}
+if(_8.getField){var _12=_5.slice(_11+1).join(isc.Canvas.$70l);var _13=_8.getField(_12);if(_13){if(_2){if(!isc.isA.FormItem(_13))_13=null;if(_3){if(_13)_6.add(_13)}else{return _13}}else{if(_3)_6.add(_8);else return _8}}}}}}else{if(this.members[i].getItem){var _14=this.members[i].getField(_1);if(!_14){if(_1.startsWith(isc.Canvas.$70l)){_14=this.members[i].getField(_1.substring(1))}}
+if(_14){if(_2){if(!isc.isA.FormItem(_14))_14=null;if(_3){if(_14)_6.add(_14)}else{return _14}}else{if(_3)_6.add(_8);else return _8}}}}}
+return _3?_6:null}
+,isc.A.getFileItemForm=function isc_ValuesManager_getFileItemForm(){if(!this.members)return;var _1=false,_2;for(var i=0;i<this.members.length;i++){if(this.members[i].getFileItemForm==null)continue;var _4=this.members[i].getFileItemForm();if(_4){if(_1){this.logWarn("ValuesManager defined with more than one member form "+" containing a FileItem. This is not supported - binary data may "+"only be uploaded from one FileItem when saving ValuesManager data")}else{_2=_4;_1=true}}}
+return _2}
+,isc.A.validate=function isc_ValuesManager_validate(){if(this.disableValidation)return true;if(this.dataSource&&this.dataSource.useLocalValidators!=null&&this.useLocalValidators==false)return true;this.clearHiddenErrors();var _1=true,_2=this.dataSource?isc.addProperties({},this.getDataSource().getFields()):null,_3={},_4={},_5=false;this.buildDataPathsRecursively(_4,"",this.getDataSource());if(this.members){for(var i=0;i<this.members.length;i++){if(!isc.isA.DynamicForm(this.members[i]))continue;var _7=this.members[i],_8=_7.disableValidation,_9=this.members[i].getItems();if(!_8){if(_7.handleHiddenValidationErrors!=null){this.logInfo("form level 'handleHiddenValidationErrors' method suppressed "+"in favor of valuesManager level handler","validation");_7.$43q=_7.handleHiddenValidationErrors}
+_7.handleHiddenValidationErrors=this.$43r}
+for(var j=0;j<_9.length;j++){var _11=_9[j].getFullDataPath()||_9[j].getFieldName();_5=_5||(_11&&_11.contains(isc.Canvas.$70l));if(_2&&this.members[i].getDataSource()==this.getDataSource()){delete _2[_11]}
+if(_4&&_11){delete _4[_11.trim(isc.Canvas.$70l)]}}
+var _12=_8?true:_7.validate(true,true)
+_1=(_1&&_12);if(!_8){if(_7.$43s)_7.handleHiddenValidationErrors=_7.$43s;else delete _7.handleHiddenValidationErrors}
+if(!_12&&!(_7.isDrawn()&&_7.isVisible())){this.addHiddenErrors(_7.errors,_7)}}}
+var _13=this.getValues(),_14={},_15=_5?_4:_2;for(var _11 in _15){var _16=_15[_11],_3=_16.validators,_17=isc.DynamicForm.$70o(_11,_13);if(_3!=null){for(var i=0;i<_3.length;i++){var _18=_3[i];if(!_18)continue;if(_17==null&&_18.type!='required'&&_18.type!="requiredIf")
+{continue}
+if(!this.processValidator(_16,_18,_17,null,_13)){if(_14[_11]==null)_14[_11]=[];var _19=_18.errorMessage||this.unknownErrorMessage;_14[_11].add(_19)}}}
+if(_14[_11]&&_14[_11].length==1)_14[_11]=_14[_11][0]}
+this.addHiddenErrors(_14);this.$21z(true);if(isc.getKeys(_14).length>0)_1=false;return _1}
+,isc.A.buildDataPathsRecursively=function isc_ValuesManager_buildDataPathsRecursively(_1,_2,_3){if(!isc.isA.DataSource(_3))return;if(_3.$85e){this.logWarn("detected ds loop at: "+_2+", refusing to recurse further");return}
+_3.$85e=true;var _4=_3.getFields();for(var _5 in _4){_1[_2+_5]=_4[_5];if(_3.fieldIsComplexType(_5)){var _6=_3.getSchema(_4[_5].type);this.buildDataPathsRecursively(_1,_2+_5+isc.Canvas.$70l,_6)}}
+delete _3.$85e}
+,isc.A.getValidatedValues=function isc_ValuesManager_getValidatedValues(){if(!this.validate())return null;return this.getValues()}
+,isc.A.$43r=function isc_ValuesManager__handleHiddenFormErrors(_1){var _2=this.valuesManager;_2.addHiddenErrors(_1,this);return false}
+,isc.A.clearHiddenErrors=function isc_ValuesManager_clearHiddenErrors(){delete this.hiddenErrors}
+,isc.A.addHiddenErrors=function isc_ValuesManager_addHiddenErrors(_1,_2){if(_1==null||isc.isAn.emptyObject(_1))return;if(!this.hiddenErrors)this.hiddenErrors={};if(_2){if(isc.isA.Canvas(_2))_2=_2.getID()}else _2=this.getID();if(!this.hiddenErrors[_2])this.hiddenErrors[_2]={};for(var _3 in _1){this.hiddenErrors[_2][_3]=this.$43t(this.hiddenErrors[_2][_3],_1[_3])}}
+,isc.A.getHiddenErrors=function isc_ValuesManager_getHiddenErrors(_1){if(!_1){this.synchHiddenErrors()}
+if(!this.hiddenErrors)return null;var _2={};for(var _3 in this.hiddenErrors){this.assembleHiddenErrorsRecursively(_2,this.hiddenErrors[_3])}
+return _2}
+,isc.A.assembleHiddenErrorsRecursively=function isc_ValuesManager_assembleHiddenErrorsRecursively(_1,_2,_3,_4){if(_3==null)_3="";var _5=_3;if(_4!=null)_5+="["+_4+"]";if(isc.isA.List(_2)){for(var i=0;i<_2.length;i++){if(_2[i]!==null){if(isc.isAn.Object(_2[i])){this.assembleHiddenErrorsRecursively(_1,_2[i],_5,i)}else{if(_1[_5]==null)_1[_5]=[];_1[_5][i]=_2[i]}}}}else if(isc.isAn.Object(_2)){for(var _7 in _2){if(isc.isAn.Object(_2[_7])){if(_5==""){this.assembleHiddenErrorsRecursively(_1,_2[_7],_7)}else{this.assembleHiddenErrorsRecursively(_1,_2[_7],_5+isc.Canvas.$70l+_7)}}else{if(_5==""){_1[_7]=_2[_7]}else{_1[_5+isc.Canvas.$70l+_7]=_2[_7]}}}}else{_1[_5]=_2}
+return _1}
+,isc.A.synchHiddenErrors=function isc_ValuesManager_synchHiddenErrors(){var _1=this.hiddenErrors,_2=this.getID();if(_1&&_1[_2]){for(var _3 in _1[_2]){var _4=_1[_2][_3],_5=this.getItem(_3),_6=_5?_5.form:null;if(_5){_6.addFieldErrors(_3,_4);delete _1[_2][_3]}}}
+var _7=_1[_2];_1=this.hiddenErrors={};if(_7)_1[_2]=_7;if(this.members){for(var i=0;i<this.members.length;i++){if(!isc.isA.DynamicForm(this.members[i]))continue;var _9=this.members[i],_10=_9.getID(),_11=_9.errors;if(!_11||isc.isAn.emptyObject(_11))continue;if(!_9.isVisible()||!_9.isDrawn()){_11=isc.addProperties({},_11);_1[_10]=_11}else{for(var _3 in _11){var _5=_9.getItem(_3);if(!_5){if(!_1[_2])_1[_2]={};_1[_2][_3]=_11[_3];delete _11[_3]}else if(!_5.visible){if(!_1[_10])_1[_10]={};_1[_10][_3]=_11[_3]}}}}}}
+,isc.A.processValidator=function isc_ValuesManager_processValidator(_1,_2,_3,_4,_5){return isc.Validator.processValidator(_1,_2,_3,_4,_5)}
+,isc.A.$21z=function isc_ValuesManager__handleHiddenValidationErrors(_1){var _2=this.getHiddenErrors(_1);if(_2==null||isc.getKeys(_2).length==0)return;var _3;if(this.handleHiddenValidationErrors){_3=this.handleHiddenValidationErrors(_2)}
+if(_3==false)return;var _4="Validation failed with the following errors:";var _5=isc.isAn.Array(_2)?_2:[_2];for(var i=0;i<_5.length;i++){var _7=_5[i];for(var _8 in _7){var _9=_2[_8];if(!isc.isAn.Array(_9))_9=[_9];if(_9.length==0)continue;_4+="\n"+_8+":";for(var i=0;i<_9.length;i++){_4+=(i==0?"- ":"\n - ")+_9[i]}}}
+this.logWarn(_4,"validation")}
+,isc.A.setErrors=function isc_ValuesManager_setErrors(_1,_2){this.clearHiddenErrors();if(isc.isA.List(_1))_1=_1[0];var _3=(this.members?this.members.duplicate():[]);for(var i=0;i<_3.length;i++){if(!isc.isA.DynamicForm(_3[i]))continue;var _5=_3[i],_6=!_5.isVisible()||!_5.isDrawn(),_7=_5.getItems(),_8={},_9={},_10=_5.getSelectionChain();for(var j=0;j<_7.getLength();j++){var _12=_7[j],_13=_12.getFullDataPath(),_14=_12.getFieldName(),_15=this.getItemErrors(_1,_13,_10);if(_15!=null){_8[_14]=_15;if(_6||!_12.visible){_9[_14]=_15}
+this.deleteItemErrors(_1,_13,_10)}}
+_5.setErrors(_8,false);if(!isc.isAn.emptyObject(_9))
+this.addHiddenErrors(_9,_5)}
+this.addHiddenErrors(_1);if(_2)this.showErrors(true)}
+,isc.A.getItemErrors=function isc_ValuesManager_getItemErrors(_1,_2,_3){var _4=_2.trim(isc.Canvas.$70l),_5=_4.contains(isc.Canvas.$70l);if(isc.isAn.Array(_1))_1=_1[0];if(!_5){var _6=_1[_2]}else{var _7=_4.split(isc.Canvas.$70l),_6=_1,_8=0;for(var i=0;i<_7.length;i++){_6=_6[_7[i]];if(isc.isAn.Array(_6)){if(_3.length>_8){_6=_6[_3[_8++]]}else{_6=_6[0]}}
+if(!_6)break}}
+if(_6){if(!isc.isAn.Array(_6))_6=[_6];var _10=[];for(var i=0;i<_6.length;i++){if(_6[i].errorMessage){_10.add(_6[i].errorMessage)}else{_10.add(_6[i])}}
+return _10.length>1?_10:_10[0]}}
+,isc.A.deleteItemErrors=function isc_ValuesManager_deleteItemErrors(_1,_2,_3){var _4=_2.trim(isc.Canvas.$70l),_5=_4.contains(isc.Canvas.$70l);if(isc.isAn.Array(_1))_1=_1[0];if(!_5){delete _1[_2]}else{var _6=_4.split(isc.Canvas.$70l);var _7=_1,_8=[],_9=0;for(var i=0;i<_6.length;i++){_8.add(_7);_7=_7[_6[i]];if(isc.isAn.Array(_7)){if(_3.length>_9){_7=_7[_3[_9++]]}else{_7=_7[0]}}
+if(!_7)break}
+if(_7)delete _7;for(var i=_8.length-1;i>=0;i--){if(isc.isAn.emptyObject(_8[i])){delete _8[i]}}}}
+,isc.A.$43t=function isc_ValuesManager__addFieldErrors(_1,_2){if(!_1)return _2;if(!_2)return _1;if(!isc.isAn.Array(_1))_1=[_1];if(isc.isA.String(_2))_1.add(_2);else _1.addList(_2);return _1}
+,isc.A.addFieldErrors=function isc_ValuesManager_addFieldErrors(_1,_2,_3){var _4=true;var _5=this.getMemberForField(_1);if(_5!=null&&isc.isA.DynamicForm(_5)){_5.addFieldErrors(_1,_2,false);var _6=_5.getItem();if(_5.isVisible()&&_5.isDrawn()&&_6&&_6.visible){_4=false}}
+if(_4){if(!this.hiddenErrors)this.hiddenErrors={};var _7=_5?_5.getID():this.getID();if(!this.hiddenErrors[_7])this.hiddenErrors[_7]={};this.hiddenErrors[_7][_1]=this.$43t(this.hiddenErrors[_7][_1],_2)}
+if(_3)this.showFieldErrors(_1)}
+,isc.A.setFieldErrors=function isc_ValuesManager_setFieldErrors(_1,_2,_3){var _4=true;var _5=this.getMemberForField(_1);if(_5!=null&&isc.isA.DynamicForm(_5)){_5.setFieldErrors(_1,_2,false);var _6=_5.getItem();if(_5.isVisible()&&_5.isDrawn()&&_6&&_6.visible){_4=false}}
+if(_4){if(!this.hiddenErrors)this.hiddenErrors={};this.hiddenErrors[_1]=_2}
+if(_3)this.showFieldErrors(_1)}
+,isc.A.clearErrors=function isc_ValuesManager_clearErrors(_1){this.setErrors({},_1)}
+,isc.A.clearFieldErrors=function isc_ValuesManager_clearFieldErrors(_1,_2){var _3=this.getMemberForField(_1);if(_3&&isc.isA.DynamicForm(_3))_3.clearFieldErrors(_1,_2);if(this.hiddenErrors)delete this.hiddenErrors[_1]}
+,isc.A.getErrors=function isc_ValuesManager_getErrors(){var _1=isc.addProperties({},this.getHiddenErrors(true));if(this.members){for(var i=0;i<this.members.length;i++){if(!isc.isA.DynamicForm(this.members[i]))continue;isc.addProperties(_1,this.members[i].getErrors())}}
+if(!isc.isA.emptyObject(_1))return _1
+return null}
+,isc.A.getFieldErrors=function isc_ValuesManager_getFieldErrors(_1){var _2=this.getMemberForField(_1)
+if(_2&&isc.isA.DynamicForm(_2))return _2.getFieldErrors(_1);if(this.hiddenErrors&&this.hiddenErrors[this.getID()])
+return this.hiddenErrors[this.getID()][_1]}
+,isc.A.hasErrors=function isc_ValuesManager_hasErrors(){if(this.hiddenErrors&&!isc.isA.emptyObject(this.hiddenErrors)){for(var _1 in this.hiddenErrors){if(this.hiddenErrors[_1]&&!isc.isAn.emptyObject(this.hiddenErrors[_1]))
+return true}}
+if(this.members==null)return false;for(var i=0;i<this.members.length;i++){if(isc.isA.DynamicForm(this.members[i])&&this.members[i].hasErrors())return true}
+return false}
+,isc.A.hasFieldErrors=function isc_ValuesManager_hasFieldErrors(_1){var _2=this.getMemberForField(_1);if(_2&&isc.isA.DynamicForm(_2)&&_2.hasFieldErrors(_1))return true;var _3=this.getHiddenErrors(true);if(_3&&_3[_1]!=null)return true;return false}
+,isc.A.showErrors=function isc_ValuesManager_showErrors(_1){if(this.members){for(var i=0;i<this.members.length;i++){if(!isc.isA.DynamicForm(this.members[i]))continue;if(!this.members[i].isDrawn()||!this.members[i].isVisible())continue;this.members[i].markForRedraw("ValuesManager validation errors")}}
+if(this.hiddenErrors!=null){this.$21z(_1)}}
+,isc.A.showFieldErrors=function isc_ValuesManager_showFieldErrors(_1){var _2=this.getMemberForField(_1);if(_2&&isc.isA.DynamicForm(_2)&&_2.isVisible()&&_2.isDrawn()){var _3=_2.getItem(_1);if(_3&&_3.visible){_3.redraw("Validation errors modified");return}}
+this.$21z()}
+,isc.A.getFilterCriteria=function isc_ValuesManager_getFilterCriteria(){var _1={};if(this.members){for(var i=0;i<this.members.length;i++){isc.addProperties(_1,this.members[i].getFilterCriteria())}}
+var _3=this.getValues(),_4;for(var _5 in _3){if(_1[_5]!==_4)delete _3[_5]}
+isc.addProperties(_1,isc.DataSource.filterCriteriaForFormValues(_3));return _1}
+,isc.A.getValues=function isc_ValuesManager_getValues(){if(this.members!=null){var _1=isc.EH.getFocusCanvas();if(this.members.contains(_1)&&_1.updateFocusItemValue)_1.updateFocusItemValue()}
+return isc.addProperties({},this.values)}
+,isc.A.setValues=function isc_ValuesManager_setValues(_1){if(isc.isAn.Array(_1)){var _2=isc.isA.Object(_1[0]);this.logWarn("values specified as an array."+(_2?" Treating the first item in the array as intended values.":" Ignoring specified values."));if(_2)_1=_1[0];else _1=null}
+var _3={};this.$708(_3,_1,this.getDataSource());_1=_3;this.values=_1;if(this.members){for(var i=0;i<this.members.length;i++){this.$707(this.members[i])}}
+this.rememberValues()}
+,isc.A.setData=function isc_ValuesManager_setData(_1){return this.setValues(_1)}
+,isc.A.clearValues=function isc_ValuesManager_clearValues(){this.setValues({})}
+,isc.A.getMemberValues=function isc_ValuesManager_getMemberValues(_1){var _2=this.getMember(_1);if(_2!=null)return _2.getValues()}
+,isc.A.setMemberValues=function isc_ValuesManager_setMemberValues(_1,_2){var _3=this.getMember(_1);if(_3!=null)return _3.setValues(_2)}
+,isc.A.rememberValues=function isc_ValuesManager_rememberValues(){var _1=this.getValues();this.$10s={}
+this.$10t=[]
+this.$708(this.$10s,_1,this.getDataSource(),null,true);return this.$10s}
+,isc.A.getOldValues=function isc_ValuesManager_getOldValues(){var _1={};isc.addProperties(_1,this.$10s);return _1}
+,isc.A.getChangedValues=function isc_ValuesManager_getChangedValues(){return this.valuesHaveChanged(true)}
+,isc.A.$708=function isc_ValuesManager__cloneValues(_1,_2,_3,_4,_5,_6){if(_2==null)return;var _7=_3?_3.deepCloneOnEdit:this.deepCloneOnEdit,_8=_7==null?isc.DataSource.deepCloneOnEdit:_7;if(isc.isAn.Array(_2)){for(var i=0;i<_2.length;i++){var _10=_2[i];if(isc.isA.Function(_10))continue;if(isc.isAn.Instance(_2[_13])||isc.isA.Class(_2[_13]))continue;if(_10==null||isc.isA.String(_10)||isc.isA.Boolean(_10)||isc.isA.Number(_10))
+{_1[_1.length]=_10}else if(isc.isA.Date(_10)){_1[_1.length]=new Date(_10.getTime())}else if(isc.isAn.Object(_10)){var _11;if(isc.isAn.Array(_10)){_11=_1[_1.length]=[]}else{_11=_1[_1.length]={}}
+this.$708(_11,_10,_3,(_5?_4:null),_5)}}
+return}
+if(_2.$42c!=null){_2=isc.JSONEncoder.$42b(_2)}
+var _12={__ref:true,$81y:true,$29a:true};if(isc.DataSource.cloneValuesSafely){if(!_6)_6=[];if(_6.contains(_2)){_1=_2;return}
+_6.add(_2)}
+for(var _13 in _2){if(isc.isA.Function(_2[_13]))continue;if(_12[_13]==true)continue;if(isc.isAn.Instance(_2[_13])||isc.isA.Class(_2[_13]))continue;var _14;if(_5){if(_4){_14=_4+_13}else{_14=_13}
+var _15=this.getItem(_14);if(_15&&_15.isSetToDefaultValue()){this.$10t.add(_14)}}
+var _16=_2[_13];if(isc.isA.Date(_16)){_1[_13]=_16.duplicate()}else if(isc.isAn.Object(_16)&&!isc.isAn.Array(_16)){var _17=_3?_3.getField(_13):null;if(!_17){_1[_13]=_2[_13]}else{if(_17.deepCloneOnEdit==true||(_17.deepCloneOnEdit==null&&_8))
+{if(isc.DataSource.cloneValuesSafely){if(_6.contains(_16)){_1[_13]=_2[_13];continue}
+_6.add(_16)}
+_1[_13]={};this.$708(_1[_13],_16,isc.DataSource.get(_17.type),_5?(_14+isc.Canvas.$70l):null,_5,_6)}else{_1[_13]=_2[_13]}}}else if(isc.isAn.Array(_16)){var _17=_3?_3.getField(_13):null;if(!_17){_1[_13]=_2[_13]}else{if(_17.deepCloneOnEdit==true||(_17.deepCloneOnEdit==null&&_8))
+{if(isc.DataSource.cloneValuesSafely){if(_6.contains(_16)){_1[_13]=_2[_13];continue}
+_6.add(_16)}
+_1[_13]=[];this.$708(_1[_13],_16,isc.DataSource.get(_17.type),_5?(_14+isc.Canvas.$70l):null,_5,_6)}else{_1[_13]=_2[_13]}}}else{_1[_13]=_2[_13]}}}
+,isc.A.resetValues=function isc_ValuesManager_resetValues(){var _1={};for(var _2 in this.$10s){if(this.$10t.contains(_2))continue;if(isc.isA.Date(this.$10s[_2])){var _3=this.getValue(_2);if(isc.isA.Date(_3)){_3.setTime(this.$10s[_2].getTime())
+_1[_2]=_3}else{_1[_2]=this.$10s[_2].duplicate()}}else{_1[_2]=this.$10s[_2]}}
+this.setValues(_1)}
+,isc.A.valuesHaveChanged=function isc_ValuesManager_valuesHaveChanged(_1){var _2=this.getValues();var _3=this.$10s||{};return isc.DynamicForm.valuesHaveChanged(this,_1,_2,_3)}
+,isc.A.getValue=function isc_ValuesManager_getValue(_1,_2){return isc.DynamicForm.$70o(_1,this.values,_2)}
+,isc.A.setValue=function isc_ValuesManager_setValue(_1,_2){var _3=false,_4,_5;if(this.members){var _6=this.getItem(_1,true);for(var i=0;i<_6.length;i++){var _8=_6[i];if(_8&&_8.setValue){if(_2===_5)_8.clearValue();else _8.setValue(_2);_3=true}}}
+if(!_3){if(_2===_5){isc.DynamicForm.$70m(_1,this.values)}else{isc.DynamicForm.$70n(_1,_2,this.values)}}
+var _9=this.$706(_1,false,true);if(_9){for(var i=0;i<_9.length;i++){if(_4&&_4.setData){var _10=_1;if(_1.indexOf(isc.Canvas.$70l)!=-1){_10=_1.substring(0,_1.lastIndexOf(isc.Canvas.$70l));_4.setData(isc.DynamicForm.$70o(_10,this.values))}}}}}
+,isc.A.clearValue=function isc_ValuesManager_clearValue(_1){this.setValue(_1)}
+,isc.A.addMember=function isc_ValuesManager_addMember(_1,_2){if(isc.isA.String(_1))_1=window[_1];if(!isc.isA.Canvas(_1)){this.logWarn("addMember() passed invalid object: "+this.echo(_1)+" - this should be a Canvas instance");return}
+if(_1.valuesManager!=null)_1.valuesManager.removeMember(_1);if(this.members==null)this.members=[];var _3=_1.getDataSource();if(_3!=null&&!_2&&_3!=this.getDataSource()){this.logWarn("addMember(): mismatched DataSources; new member form "+_1+" has dataSource: '"+_3.ID+"', valuesManager has DataSource "+(this.getDataSource()!=null?"'"+this.getDataSource().ID+"'":"[NONE]"))}
+if(this.getDataSource()!=null&&_1.isMultipart&&_1.isMultipart()&&_1.isMultipart())
+{this.logWarn("addMember(): new member form "+_1+" is flagged as using multipart encoding. Multipart forms require direct form "+"submission to transfer uploaded files to the server - any uploaded files from "+"this member form will be dropped when saving values from this ValuesManager to "+"the server.")}
+if(_1.dataArity=="single"&&_1.autoTrackSelection){if(_1.selectionComponent==null||_1.$837){var _4=_1.getFullDataPath(),_5=_4?this.getDataSourceField(_4):null,_6=isc.DynamicForm.$70o(_4,this.values),_7=isc.isAn.Array(_6)||(_5&&_5.multiple);if(_7){var _8=this.getMemberForField(_4,true);if(_8&&_8.length>0){for(var i=0;i<_8.length;i++){var _10=_8[i];if(_10.dataArity=="multiple"){_1.setSelectionComponent(_10);_1.$837=true;break}}}}}}else{var _4=_1.getFullDataPath(),_11=this.getMemberForField(_4,true);if(_11&&_11.length>0){for(var i=0;i<_11.length;i++){if(_11[i].dataArity=="single"&&_11[i].autoTrackSelection&&(_11[i].selectionComponent==null||_11[i].$837==true))
+{_11[i].setSelectionComponent(_1);_11[i].$837=true}}}}
+if(_1.dataArity=="multiple"&&_1.autoTrackSelection){var _4=_1.getFullDataPath(),_12=_4&&_4.contains(isc.Canvas.$70l);if(_12){var _13=_4.split(isc.Canvas.$70l);_4="/";for(var i=_13.length-2;i>=0;i--){for(var j=0;j<=i;j++){_4+=_13[j];if(j!=i)_4+="/"}
+var _5=this.getDataSourceField(_4),_6=isc.DynamicForm.$70o(_4,this.values),_7=isc.isAn.Array(_6)||(_5&&_5.multiple);if(_7)break}}
+if(_7){var _8=this.getMemberForField(_4,true);if(_8&&_8.length>0){for(var i=0;i<_8.length;i++){var _10=_8[i];if(_10.dataArity=="multiple"){_1.setSelectionComponent(_10);_1.$837=true;break}}}}
+var _4=_1.getFullDataPath();if(_4&&_4!=""){var _15=this.members;for(var i=0;i<_15.length;i++){if(_15[i]==_1)continue;if(_15[i].dataArity=="single")continue;var _16=_15[i].getFullDataPath();if(_16&&_16!=_4&&_16.startsWith(_4))
+{if(_15[i].selectionComponent!=null){if(_15[i].$837){var _17=_15[i].selectionComponent.getFullDataPath();if(_4.length>_17.length){_15[i].setSelectionComponent(_1);_15[i].$837=true}}}}}}}
+this.members.add(_1);if(_1.dataSource==null&&this.dataSource!=null&&_1.getFields){var _18=isc.isA.DynamicForm(_1)?_1.$834:_1.getFields();_18=_18||_1.getFields();_1.setDataSource(this.dataSource,_18)}
+this.$707(_1,true);_1.valuesManager=this;_1.$703=_2;this.rememberValues()}
+,isc.A.$707=function isc_ValuesManager__setMemberValues(_1,_2){if(_1.getFields==null)return;var _3=_1.getFullDataPath(),_4=this.getField(_3),_5=isc.DynamicForm.$70o(_3,this.values,_1,true),_6=isc.isAn.Array(_5)||(_4&&_4.multiple),_7=_1.selectionComponent;if(_6){if(_1.dataArity=="single"){if(_7!=null){_5=_5[_7.getRecordIndex(_7.getSelectedRecord())]}else{if(isc.isAn.Array(_5))_5=_5[0]}}}else{if(_5!=null&&_1.dataArity=="multiple")_5=[_5]}
+if(!isc.isA.DynamicForm(_1)){if(!_1.setData)return;var _8=_1.getFullDataPath(),_9=_2?_1.getData():null;if(_5==null){if(_2)isc.DynamicForm.$70n(_8,_9)}else{if(_2&&_9!=null&&!isc.isAn.emptyObject(_9)&&!isc.isAn.emptyArray(_9))
+{this.logInfo("ValuesManager member:"+_1.getID()+" has existing values:"+this.echo(_9)+", replacing with values from this valuesManager:"+this.echo(_5))}
+_1.setData(_5)}}else{var _10=_1.getItems(),_11;for(var i=0;i<_10.getLength();i++){var _13=_10[i];var _14=_13.getDataPath()||_13.getFieldName();if(!_14)continue;var _15=_14,_3=_1.getFullDataPath();if(_3&&!_15.startsWith(isc.Canvas.$70l)){_15=this.$702(_3,_15)}
+var _16=isc.DynamicForm.$70o(_15,_1.values,_1,true);var _17=isc.DynamicForm.$70o(_15,this.values,_1,true);if(_16!==_11){if(_17!==_11){this.logInfo("Member form "+_1+" has specified value for field '"+_15+"' which collides with an already specified value in this "+"ValuesManager. Resetting the value on the member form.");_1.setValue(_15,_17)}else{if(!_2)_1.clearValue(_15)}}else if(_17!==_11){_1.setValue(_15,_17)}
+var _18=_1.getValue(_15);if(_13.shouldSaveValue!=false){if(_18===_11){isc.DynamicForm.$70m(_15,this.values)}else{isc.DynamicForm.$70n(_15,_1.getValue(_15),this.values,_1)}}}
+if(_2){this.$709(_1)}}}
+,isc.A.$709=function isc_ValuesManager__findItemlessFormValues(_1,_2,_3,_4,_5){if(_2==null)_2=_1.getValues();if(_4==null)_4=[];for(var _6 in _2){var _7=_3?this.$702(_3,_6):_6;if(!_1.getItem(_7)){var _8=_2[_6];if(!isc.isAn.Object(_8)||isc.isA.Date(_8)||isc.isAn.Array(_8)){_4.add(_7);_1.clearValue(_7)}else{this.$709(_1,_8,_3,_4,true)}}}
+if(!_5&&_4.length>0){this.$66q(_1,_4)}}
+,isc.A.addMembers=function isc_ValuesManager_addMembers(_1){if(!isc.isAn.Array(_1))this.addMember(_1);else{for(var i=0;i<_1.length;i++){this.addMember(_1[i])}}}
+,isc.A.removeMember=function isc_ValuesManager_removeMember(_1){if(isc.isA.String(_1)){_1=isc.Class.getArrayItem(_1,this.members);if(_1==null)return}else if(this.members&&!this.members.contains(_1))return;if(this.members)this.members.remove(_1);delete _1.valuesManager}
+,isc.A.removeMembers=function isc_ValuesManager_removeMembers(_1){if(!isc.isAn.Array(_1))this.removeMember(_1);else{for(var i=0;i<_1.length;i++){this.removeMember(_1[i])}}}
+,isc.A.getPrintHTML=function isc_ValuesManager_getPrintHTML(){var _1=this.getValues(),_2=isc.StringBuffer.create();_2.append("<TABLE border=1><TR><TD align='center' style='font-weight:bold;'>Field</TD>","<TD align='center' style='font-weight:bold;'>Value</TD>");for(var _3 in _1){_2.append("<TR><TD>",_3,"</TD><TD>",_1[_3],"</TD></TR>")}
+_2.append("</TABLE>");return _2.toString()}
+,isc.A.getAllDBCs=function isc_ValuesManager_getAllDBCs(_1){var _2=[];if(_1==null){for(var i=0;i<this.members.length;i++){_2.addAll(this.getAllDBCs(this.members[i]))}
+var _4=[];for(var i=0;i<_2.length;i++){if(!_4.contains(_2[i]))_4.add(_2[i])}
+return _4}
+if(isc.isA.DataBoundComponent(_1))_2.add(_1);var _5=_1.children;if(!_5)return _2;for(var i=0;i<_5.length;i++){var _1=_5[i];if(isc.isA.DataBoundComponent(_1))_2.add(_1);_2.addAll(this.getAllDBCs(_1))}
+return _2}
+);isc.B._maxIndex=isc.C+73;isc.ValuesManager.registerStringMethods({handleHiddenValidationErrors:"errors",submitValues:"values,valuesManager"});if(isc.Window){isc.ClassFactory.defineClass("ColorPicker",isc.Window);isc.A=isc.ColorPicker;isc.A.MORE_BUTTON_TITLE="More >>";isc.A.LESS_BUTTON_TITLE="<< Less";isc.A=isc.ColorPicker;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getSharedColorPicker=function isc_c_ColorPicker_getSharedColorPicker(_1,_2){_1=_1||{};if(!isc.isA.ColorPicker(this.$56b)){this.$56b=isc.ColorPicker.create(_1)}else{if(_1.colorSelected==null)delete this.$56b.colorSelected;if(_1.colorChanged==null)delete this.$56b.colorChanged;this.$56b.setProperties(_1)}
+if(!_2){var _3=this.$56b;if(_3.$56c!=_3.defaultPickMode){_3.$56c=_3.defaultPickMode;if(_3.$56c=='simple'){_3.removeComplexElements();if(_3.allowComplexMode){_3.modeToggleButton.setTitle(isc.ColorPicker.MORE_BUTTON_TITLE)}}else{if(!_3.$56i){_3.createComplexElements()}
+_3.addComplexElements();_3.modeToggleButton.setTitle(isc.ColorPicker.LESS_BUTTON_TITLE)}}
+_3.setHtmlColor(_3.defaultColor);_3.$56d=this.defaultOpacity}
+return this.$56b}
+);isc.B._maxIndex=isc.C+1;isc.addGlobal("ColorChooser",isc.ColorPicker);isc.A=isc.ColorPicker.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.title="Select a Color";isc.A.autoSize=true;isc.A.isModal=true;isc.A.autoCenter=true;isc.A.autoDraw=false;isc.A.showMinimizeButton=false;isc.A.layoutMargin=2;isc.A.canFocus=false;isc.A.showOkButton=true;isc.A.okButtonConstructor=isc.IButton;isc.A.okButtonDefaults={title:"OK",width:80,autoParent:"buttonLayout",click:function(){if(this.creator.colorSelected){this.creator.colorSelected(this.creator.getHtmlColor(),this.creator.getOpacity())}
+this.creator.hide()}};isc.A.showCancelButton=true;isc.A.cancelButtonConstructor=isc.IButton;isc.A.cancelButtonDefaults={title:"Cancel",width:80,autoParent:"buttonLayout",click:function(){this.creator.hide()}};isc.A.showModeToggleButton=true;isc.A.modeToggleButtonConstructor=isc.IButton;isc.A.modeToggleButtonDefaults={title:isc.ColorPicker.MORE_BUTTON_TITLE,width:80,autoParent:"buttonLayout",click:function(){this.creator.$56e()}};isc.A.showButtonLayout=true;isc.A.buttonLayoutConstructor="HLayout";isc.A.buttonLayoutDefaults={autoParent:"contentLayout"};isc.A.defaultColor="#808080";isc.A.colorButtonSize=20;isc.A.colorButtonBaseStyle="colorChooserCell";isc.A.colorArray=["#000000","#996100","#636300","#006300","#006366","#000080","#636399","#636363","#800000","#FF6600","#808000","#8000FF","#008080","#0000FF","#666699","#808080","#FF0000","#FF9900","#99CC00","#639966","#63CCCC","#6366FF","#800080","#999999","#FF00FF","#FFCC00","#FFFF00","#00FF00","#00FFFF","#00CCFF","#996366","#C0C0C0","#FF99CC","#FFCC99","#FFFF99","#CCFFCC","#CCFFFF","#99CCFF","#CC99FF","#FFFFFF"];isc.A.swatchWidth=170;isc.A.swatchHeight=170;isc.A.lumStep=4;isc.A.lumWidth=15;isc.A.supportsTransparency=true;isc.A.opacityText="Lorem ipsum dolor sit amet, consectetuer adipiscing elit.";isc.A.swatchImageURL="[SKIN]ColorPicker/spectrum.png";isc.A.crosshairImageURL="[SKIN]ColorPicker/crosshair.png";isc.A.basicColorLabel="Basic Colors:";isc.A.selectedColorLabel="Selected Color:";isc.A.opacitySliderLabel="Opacity:";isc.A.defaultOpacity=100;isc.A.autoPosition=true;isc.A.autoCenterOnShow=true;isc.A.defaultPickMode="simple";isc.A.allowComplexMode=true;isc.A.$56f=true;isc.B.push(isc.A.closeClick=function isc_ColorPicker_closeClick(){this.hide()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.ColorPicker.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.show=function isc_ColorPicker_show(){if(this.autoPosition){this.autoCenter=false;var _1=isc.EH.getLastEvent();this.placeNear(_1.x,_1.y)}else{if(this.autoCenterOnShow)this.autoCenter=true}
+this.Super("show",arguments)}
+,isc.A.initWidget=function isc_ColorPicker_initWidget(){this.$56c=this.defaultPickMode;this.basicColorLayout=isc.VLayout.create({autoDraw:false});for(var i=0;i<5;i++){var _2=isc.HLayout.create({autoDraw:false,layoutBottomMargin:1,membersMargin:1,height:this.colorButtonSize});for(var j=0;j<8;j++){var _4=isc.StatefulCanvas.create({autoDraw:false,width:this.colorButtonSize,height:this.colorButtonSize,overflow:"hidden",title:"",backgroundColor:this.colorArray[i*8+j],baseStyle:this.colorButtonBaseStyle,showRollOver:true,picker:this,click:function(){this.picker.setHtmlColor(this.backgroundColor);if(this.picker.$56c=="simple"){this.picker.$56g(this.backgroundColor)}}});_2.addMember(_4)}
+this.basicColorLayout.addMember(_2)}
+this.leftHandLayout=isc.VLayout.create({autoDraw:false});this.leftHandLayout.addMember(this.basicColorLayout);this.innerContentLayout=isc.HLayout.create({autoDraw:false,align:"center",members:[this.leftHandLayout]});this.contentLayout=isc.VLayout.create({autoDraw:false,members:[this.innerContentLayout]});this.addItem(this.contentLayout);if(this.$56c=="simple"){this.showOkButton=false;if(!this.allowComplexMode){this.showModeToggleButton=false}}else{this.showModeToggleButton=false}
+this.addAutoChildren(["buttonLayout","okButton","cancelButton","modeToggleButton"]);if(this.$56c=="complex"){this.createComplexElements();this.addComplexElements()}
+this.setHtmlColor(this.defaultColor);this.$56h();this.setOpacity(this.defaultOpacity);this.Super("initWidget",arguments)}
+,isc.A.createComplexElements=function isc_ColorPicker_createComplexElements(){if(this.$56c!='complex'){return}
+this.$56i=isc.DynamicForm.create({autoDraw:false,cellPadding:1,padding:10,width:65,fields:[{name:"pickerRedVal",title:"Red",type:"text",width:"40",defaultValue:this.$56j,prompt:"The Red component of the selected color",picker:this,changed:function(_2,_3,_4){this.picker.setRed(_4)}},{name:"pickerGrnVal",title:"Green",type:"text",width:"40",defaultValue:this.$56k,prompt:"The Green component of the selected color",picker:this,changed:function(_2,_3,_4){this.picker.setGreen(_4)}},{name:"pickerBluVal",title:"Blue",type:"text",width:"40",defaultValue:this.$56l,prompt:"The Blue component of the selected color",picker:this,changed:function(_2,_3,_4){this.picker.setBlue(_4)}},{name:"pickerHtmlVal",title:"HTML",type:"text",width:"65",defaultValue:this.$56m,prompt:"The selected color's HTML coding",picker:this,changed:function(_2,_3,_4){this.picker.setHtmlColor(_4)}}]});this.$56n=isc.DynamicForm.create({autoDraw:false,cellPadding:1,padding:10,width:65,fields:[{name:"pickerHueVal",title:"Hue",type:"text",width:"40",defaultValue:this.$56o,prompt:"The Hue (base tone) of the selected color",picker:this,changed:function(_2,_3,_4){this.picker.setHue(_4)}},{name:"pickerSatVal",title:"Sat",type:"text",width:"40",defaultValue:this.$56p,prompt:"The Saturation (color purity) of the selected color",picker:this,changed:function(_2,_3,_4){this.picker.setSaturation(_4)}},{name:"pickerLumVal",title:"Lum",type:"text",width:"40",defaultValue:this.$56q,prompt:"The Luminosity (brightness) of the selected color",picker:this,changed:function(_2,_3,_4){this.picker.setLuminosity(_4)}}]});this.$56r=isc.Img.create({autoDraw:false,imageWidth:16,imageHeight:16,src:this.crosshairImageURL,width:16,height:16,imageType:"normal",canDrag:true,canDrop:true,dragAppearance:"target",picker:this,dragMove:function(){this.picker.$56s=true;this.picker.$56t(this.parentElement.getOffsetX(),this.parentElement.getOffsetY())}});this.$56u=isc.Canvas.create({autoDraw:false,width:100,height:40,backgroundColor:this.getHtmlColor()});this.$56v=isc.Canvas.create({autoDraw:false,width:60,height:40,overflow:"hidden",border:"1px black solid",contents:this.opacityText,children:[this.$56u]});this.$56w=isc.VStack.create({lumWidth:15,height:this.swatchHeight,margin:5,border:"1px solid black"});for(var i=0;i<this.swatchHeight/ this.lumStep;i++){this.$56w.addMember(isc.Canvas.create({width:this.lumWidth,height:this.lumStep,margin:0,padding:0,overflow:"hidden"}))}
+this.$56x=isc.Slider.create({minValue:0,maxValue:240,numValues:240,margin:5,length:this.swatchHeight,width:10,showTitle:false,showValue:false,showRange:false});if(this.supportsTransparency){this.$56y=isc.Slider.create({autoDraw:false,vertical:false,margin:5,minValue:0,maxValue:100,numValues:100,length:100,height:12,width:100,thumbThickWidth:15,thumbThinWidth:10,showTitle:false,showValue:false,showRange:false,value:100});this.$56z=isc.HLayout.create({autoDraw:false,layoutLeftMargin:5,layoutRightMargin:5,membersMargin:5,members:[isc.Label.create({autoDraw:false,margin:5,contents:this.opacitySliderLabel,width:this.swatchWidth-105,height:10}),this.$56y]})}
+this.$560=isc.VLayout.create({autoDraw:false,layoutLeftMargin:5,layoutRightMargin:5,membersMargin:5,members:[isc.HLayout.create({autoDraw:false,height:this.swatchHeight,members:[isc.Img.create({autoDraw:false,margin:5,width:this.swatchWidth+12,height:this.swatchHeight+12,src:this.swatchImageURL,overflow:"hidden",border:"1px black solid",picker:this,click:function(){this.picker.$56t(this.getOffsetX(),this.getOffsetY())},children:[this.$56r]}),this.$56w,this.$56x]}),isc.HLayout.create({autoDraw:false,layoutLeftMargin:5,layoutRightMargin:5,membersMargin:5,members:[isc.Label.create({autoDraw:false,margin:5,contents:this.selectedColorLabel,width:this.swatchWidth-63,height:15}),this.$56v]})]});if(this.$56x)this.observe(this.$56x,"valueChanged","observer.$561()");if(this.$56y)this.observe(this.$56y,"valueChanged","observer.$562()")}
+,isc.A.initComplexElements=function isc_ColorPicker_initComplexElements(){this.$56x.setValue(this.$56q);this.$56h();this.$563(this.$56o,this.$56p);if(this.$56m)this.setHtmlColor(this.$56m);this.$56u.setBackgroundColor(isc.ColorUtils.hslToHtml(this.$56o,this.$56p,this.$56q));if(this.supportsTransparency){this.$56u.setOpacity(this.$56d);this.$56y.setValue(this.$56d)}}
+,isc.A.addComplexElements=function isc_ColorPicker_addComplexElements(){if(this.$56c!='complex'){return}
+this.showOkButton=true;this.setAutoChild("okButton");this.basicLabel=isc.Label.create({autoDraw:false,margin:5,contents:this.basicColorLabel,width:100,height:15});this.formLayout=isc.HLayout.create({autoDraw:false,members:[this.$56i,this.$56n]});this.leftHandLayout.addMember(this.basicLabel,0);this.leftHandLayout.addMember(this.formLayout);if(this.supportsTransparency){this.$560.addMember(this.$56z)}
+this.innerContentLayout.addMember(this.$560);this.initComplexElements()}
+,isc.A.removeComplexElements=function isc_ColorPicker_removeComplexElements(){if(this.$56c=='complex'){return}
+this.showOkButton=false;this.setAutoChild("okButton");if(this.formLayout){this.leftHandLayout.removeMembers([this.basicLabel,this.formLayout]);this.innerContentLayout.removeMember(this.$560)}}
+,isc.A.setSupportsTransparency=function isc_ColorPicker_setSupportsTransparency(_1){this.supportsTransparency=_1;if(this.$56c=='complex'){if(this.supportsTransparency){this.$560.addMember(this.$56z)}else{this.$560.removeMember(this.$56z)}}}
+,isc.A.getRed=function isc_ColorPicker_getRed(){return this.$56j}
+,isc.A.getGreen=function isc_ColorPicker_getGreen(){return this.$56k}
+,isc.A.getBlue=function isc_ColorPicker_getBlue(){return this.$56l}
+,isc.A.getHue=function isc_ColorPicker_getHue(){return this.$56o}
+,isc.A.getSaturation=function isc_ColorPicker_getSaturation(){return this.$56p}
+,isc.A.getLuminosity=function isc_ColorPicker_getLuminosity(){return this.$56q}
+,isc.A.getHtmlColor=function isc_ColorPicker_getHtmlColor(){return this.$56m}
+,isc.A.getOpacity=function isc_ColorPicker_getOpacity(){return this.$56d}
+,isc.A.setRed=function isc_ColorPicker_setRed(_1){if(_1<0)this.$56j=0;else if(_1>255)this.$56j=255;else this.$56j=_1/ 1;if(this.$56c=='complex'){this.$56i.setValue("pickerRedVal",this.$56j)}
+if(this.$56f===true)
+this.$564('rgb')}
+,isc.A.setGreen=function isc_ColorPicker_setGreen(_1){if(_1<0)this.$56k=0;else if(_1>255)this.$56k=255;else this.$56k=_1/ 1;if(this.$56c=='complex'){this.$56i.setValue("pickerGrnVal",this.$56k)}
+if(this.$56f===true)
+this.$564('rgb')}
+,isc.A.setBlue=function isc_ColorPicker_setBlue(_1){if(_1<0)this.$56l=0;else if(_1>255)this.$56l=255;else this.$56l=_1/ 1;if(this.$56c=='complex'){this.$56i.setValue("pickerBluVal",this.$56l)}
+if(this.$56f===true)
+this.$564('rgb')}
+,isc.A.setHue=function isc_ColorPicker_setHue(_1){if(_1<0)this.$56o=0;else if(_1>239)this.$56o=239;else this.$56o=_1/ 1;if(this.$56c=='complex'){this.$56n.setValue("pickerHueVal",this.$56o)}
+if(this.$56f===true)
+this.$564('hsl')}
+,isc.A.setSaturation=function isc_ColorPicker_setSaturation(_1){if(_1<0)this.$56p=0;else if(_1>240)this.$56p=240;else this.$56p=_1/ 1;if(this.$56c=='complex'){this.$56n.setValue("pickerSatVal",this.$56p)}
+if(this.$56f===true)
+this.$564('hsl')}
+,isc.A.setLuminosity=function isc_ColorPicker_setLuminosity(_1){if(_1<0)this.$56q=0;else if(_1>240)this.$56q=240;else this.$56q=_1/ 1;if(this.$56c=='complex'){this.$56n.setValue("pickerLumVal",this.$56q)}
+if(this.$56f===true)
+this.$564('hsl')}
+,isc.A.setHtmlColor=function isc_ColorPicker_setHtmlColor(_1){if(isc.ColorUtils.encodingIsValid(_1)===true){this.$56m=_1.toUpperCase();if(this.$56c=='complex'){this.$56i.setValue("pickerHtmlVal",this.$56m)}
+if(this.$56f===true)
+this.$564('html')}}
+,isc.A.setOpacity=function isc_ColorPicker_setOpacity(_1){if(this.$56c=='complex'&&this.supportsTransparency){if(_1<0)this.$56d=0;else if(_1>100)this.$56d=100;else this.$56d=_1/ 1;if(this.$56f===true)
+this.$564('opacity')}}
+,isc.A.$564=function isc_ColorPicker__changeColor(_1){if(_1=='rgb'){var _2=isc.ColorUtils.rgbToHsl(this.$56j,this.$56k,this.$56l);this.$56f=false;this.setHue(_2.h);this.setSaturation(_2.s);this.setLuminosity(_2.l);this.setHtmlColor(isc.ColorUtils.rgbToHtml(this.$56j,this.$56k,this.$56l));this.$56f=true;this.$563(this.$56o,this.$56p)}else if(_1=='hsl'){var _3=isc.ColorUtils.hslToRgb(this.$56o,this.$56p,this.$56q);this.$56f=false;this.setRed(_3.r);this.setGreen(_3.g);this.setBlue(_3.b);this.setHtmlColor(isc.ColorUtils.rgbToHtml(this.$56j,this.$56k,this.$56l));this.$56f=true;if(this.$56o!=this.$565||this.$56p!=this.$566){this.$563(this.$56o,this.$56p)}}else if(_1=='html'){var _3=isc.ColorUtils.htmlToRgb(this.$56m);this.$56f=false;this.setRed(_3.r);this.setGreen(_3.g);this.setBlue(_3.b);var _2=isc.ColorUtils.rgbToHsl(this.$56j,this.$56k,this.$56l);this.setHue(_2.h);this.setSaturation(_2.s);this.setLuminosity(_2.l);this.$56f=true;this.$563(this.$56o,this.$56p)}
+if(this.$56c=='complex'){this.$56x.setValue(this.$56q)}
+if(this.$56c=='complex'){this.$56u.setBackgroundColor(isc.ColorUtils.hslToHtml(this.$56o,this.$56p,this.$56q))}
+if(this.$56o!=this.$565||this.$56p!=this.$566){this.$56h()}
+if(this.$56c=='complex')
+this.$56u.setOpacity(this.$56d);this.$565=this.$56o;this.$566=this.$56p;if(this.colorChanged)this.colorChanged()}
+,isc.A.$56g=function isc_ColorPicker__oneClickColorSelected(_1){this.hide();if(this.colorSelected)this.colorSelected(_1)}
+,isc.A.$563=function isc_ColorPicker__positionCrossHair(_1,_2){if(this.$56c!='complex'){return}
+if(this.$56s===true){this.$56s=false;return}
+var _3=_1/ 239.0;var _4=_2/ 240.0;_3*=this.swatchWidth;_4=this.swatchHeight-(_4*this.swatchHeight);_3=parseInt(_3)-8;_4=parseInt(_4)-8;this.$56r.setLeft(_3);this.$56r.setTop(_4)}
+,isc.A.$56t=function isc_ColorPicker__crosshairMoved(_1,_2){_1-=5;_2-=5;_1/=this.swatchWidth;_2=1.0-_2/ this.swatchHeight;this.$56f=false;this.setHue(Math.floor(_1*239.0+0.5));this.$56f=true;this.setSaturation(Math.floor(_2*240.0+0.5))}
+,isc.A.$56h=function isc_ColorPicker__setLumVals(){if(this.$56c!='complex'){return}
+for(var i=0;i<this.swatchHeight/ this.lumStep;i++){this.$56w.members[i].setBackgroundColor(isc.ColorUtils.hslToHtml(this.$56o,this.$56p,240-(i*240/(this.swatchHeight/ this.lumStep))))}}
+,isc.A.$561=function isc_ColorPicker__lumSliderChanged(){var _1=this.$56x.getValue();if(this.$56q!=_1){this.setLuminosity(_1)}}
+,isc.A.$562=function isc_ColorPicker__opSliderChanged(){this.setOpacity(this.$56y.getValue())}
+,isc.A.$56e=function isc_ColorPicker__togglePickMode(){if(this.$56c=="simple"){this.$56c="complex";if(!this.$560){this.createComplexElements()}
+this.addComplexElements();this.modeToggleButton.setTitle(isc.ColorPicker.LESS_BUTTON_TITLE)}else{this.$56c="simple";this.removeComplexElements();this.modeToggleButton.setTitle(isc.ColorPicker.MORE_BUTTON_TITLE)}
+this.modeToggleButton.setState("")}
+);isc.B._maxIndex=isc.C+31;isc.ColorPicker.registerStringMethods({colorChanged:"",colorSelected:"color,opacity"});isc.defineClass("ColorUtils",isc.Class);isc.A=isc.ColorUtils;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.hexToDec=function isc_c_ColorUtils_hexToDec(_1){return parseInt(_1,16)}
+,isc.A.decToHex=function isc_c_ColorUtils_decToHex(_1){var d=_1/ 1;var h=d.toString(16);if(h.length==1){h="0"+h}
+return h}
+,isc.A.brightness=function isc_c_ColorUtils_brightness(_1,_2,_3){var _4=isc.ColorUtils.rgbToHsl(_1,_2,_3);return(_4.l/ 240.0)}
+,isc.A.encodingIsValid=function isc_c_ColorUtils_encodingIsValid(_1){return(_1.substring(0,1)=='#'&&isc.isA.color(_1))}
+,isc.A.rgbToHtml=function isc_c_ColorUtils_rgbToHtml(_1,_2,_3){var _4='#'+isc.ColorUtils.decToHex(_1)+isc.ColorUtils.decToHex(_2)+isc.ColorUtils.decToHex(_3);return _4}
+,isc.A.hslToHtml=function isc_c_ColorUtils_hslToHtml(_1,_2,_3){var _4=isc.ColorUtils.hslToRgb(_1,_2,_3);var _5='#'+isc.ColorUtils.decToHex(_4.r)+isc.ColorUtils.decToHex(_4.g)+isc.ColorUtils.decToHex(_4.b);return _5}
+,isc.A.htmlToRgb=function isc_c_ColorUtils_htmlToRgb(_1){var r=_1.substring(1,3);var g=_1.substring(3,5);var b=_1.substring(5,7);return{r:isc.ColorUtils.hexToDec(r),g:isc.ColorUtils.hexToDec(g),b:isc.ColorUtils.hexToDec(b)}}
+,isc.A.htmlToHsl=function isc_c_ColorUtils_htmlToHsl(_1){var r=_1.substring(1,3);var g=_1.substring(3,5);var b=_1.substring(5,7);return isc.ColorUtils.rgbToHsl(isc.ColorUtils.hexToDec(r),isc.ColorUtils.hexToDec(g),isc.ColorUtils.hexToDec(b))}
+,isc.A.rgbToHsl=function isc_c_ColorUtils_rgbToHsl(_1,_2,_3){var _4=_1/ 255.0;var _5=_2/ 255.0;var _6=_3/ 255.0;var _7=Math.min(Math.min(_4,_5),_6);var _8=Math.max(Math.max(_4,_5),_6);var _9=_8-_7;var h=0,s=0,l=0;l=(_8+_7)/2.0;if(_8==_7){s=0;h=0}else{if(l<0.5){s=(_8-_7)/(_8+_7)}else{s=(_8-_7)/(2.0-_8-_7)}
+if(_4==_8)
+h=(_5-_6)/_9;else if(_5==_8)
+h=2+(_6-_4)/_9;else
+h=4+(_4-_5)/_9}
+h=Math.floor(h*40+0.5);if(h<0)h+=240;s=Math.floor(s*240+0.5);l=Math.floor(l*240+0.5);return{h:h,s:s,l:l}}
+,isc.A.hslToRgb=function isc_c_ColorUtils_hslToRgb(_1,_2,_3){var _4=_1/ 239.0;var _5=_2/ 240.0;var _6=_3/ 240.0;var _7,_8,_9,_10,_11;var r=0,g=0,b=0;if(_5==0){r=_6;g=_6;b=_6}else{if(_6<0.5){_8=_6*(1.0+_5)}else{_8=(_6+_5)-(_6*_5)}
+_7=(2.0*_6)-_8;_9=_4+0.3333;_10=_4;_11=_4-0.3333;if(_9<0)_9+=1.0;if(_10<0)_10+=1.0;if(_11<0)_11+=1.0;if(_9>1)_9-=1.0;if(_10>1)_10-=1.0;if(_11>1)_11-=1.0;if(_9*6.0<1)
+r=_7+(_8-_7)*6.0*_9;else if(_9*2.0<1)
+r=_8;else if(_9*3.0<2)
+r=_7+(_8-_7)*(0.6667-_9)*6.0;else
+r=_7;if(_10*6.0<1)
+g=_7+(_8-_7)*6.0*_10;else if(_10*2.0<1)
+g=_8;else if(_10*3.0<2)
+g=_7+(_8-_7)*(0.6667-_10)*6.0;else
+g=_7;if(_11*6.0<1)
+b=_7+(_8-_7)*6.0*_11;else if(_11*2.0<1)
+b=_8;else if(_11*3.0<2)
+b=_7+(_8-_7)*(0.6667-_11)*6.0;else
+b=_7}
+r=Math.floor(r*255.0+0.5);g=Math.floor(g*255.0+0.5);b=Math.floor(b*255.0+0.5);return{r:r,g:g,b:b}}
+);isc.B._maxIndex=isc.C+10}
+isc.ClassFactory.defineClass("NestedEditorItem","CanvasItem");isc.A=isc.NestedEditorItem.getPrototype();isc.A.shouldSaveValue=true;isc.A.editorConstructor="DynamicForm";isc.A.editorDefaults={itemChanged:function(_1,_2){this.creator.updateValue(this.getValuesAsCriteria())}};isc.A=isc.NestedEditorItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_NestedEditorItem_init(){this.$67h();this.Super("init",arguments)}
+,isc.A.isEditable=function isc_NestedEditorItem_isEditable(){return true}
+,isc.A.$67h=function isc_NestedEditorItem__createEditor(){var _1;var _2={};if(this.form.dataSource){_1=isc.DataSource.getDataSource(this.form.dataSource);var _3=_1.getField(this.name);if(_3){_2.dataSource=_1.getFieldDataSource(_3)}}
+if(this.form&&this.form.showComplexFieldsRecursively){_2.showComplexFields=true;_2.showComplexFieldsRecursively=true}else{_2.showComplexFields=false}
+this.addAutoChild("editor",_2);this.canvas=this.editor}
+,isc.A.setValue=function isc_NestedEditorItem_setValue(_1){this.editor.setValues(_1)}
+,isc.A.updateValue=function isc_NestedEditorItem_updateValue(_1){this.$10y(_1)}
+,isc.A.$85m=function isc_NestedEditorItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+6;isc.ClassFactory.defineClass("NestedListEditorItem","CanvasItem");isc.A=isc.NestedListEditorItem.getPrototype();isc.A.shouldSaveValue=true;isc.A.editorConstructor="ListEditor";isc.A.editorDefaults={inlineEdit:false,height:155,saveRecord:function(){if(!this.form.validate())return false;var _1=this.form.getValues();this.showList();if(this.inlineEdit){this.grid.setEditValues(this.grid.getEditRow(),_1)}else{if(this.form.saveOperationType=="add"){this.grid.addData(_1)}else{isc.addProperties(this.currentRecord,_1);this.grid.markForRedraw()}
+if(!this.inlineEdit){this.form.clearValues()}
+this.creator.updateValue(this.grid.data)}
+return true}};isc.A=isc.NestedListEditorItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_NestedListEditorItem_init(){this.$67h();this.Super("init",arguments)}
+,isc.A.isEditable=function isc_NestedListEditorItem_isEditable(){return true}
+,isc.A.$67h=function isc_NestedListEditorItem__createEditor(){var _1;var _2={};if(this.form.dataSource){_1=isc.DataSource.getDataSource(this.form.dataSource);var _3=_1.getField(this.name);if(_3){_2.dataSource=_1.getFieldDataSource(_3)}}
+if(this.form&&this.form.showComplexFieldsRecursively){_2.formProperties={showComplexFields:true,showComplexFieldsRecursively:true};_2.gridProperties={showComplexFields:true,showComplexFieldsRecursively:true,canRemoveRecords:true,saveLocally:true,data:[]}}else{_2.formProperties={showComplexFields:false};_2.gridProperties={showComplexFields:false,canRemoveRecords:true,saveLocally:true}}
+this.addAutoChild("editor",_2);this.canvas=this.editor}
+,isc.A.updateValue=function isc_NestedListEditorItem_updateValue(_1){this.editor.setData(_1);this.$10y(_1)}
+,isc.A.setValue=function isc_NestedListEditorItem_setValue(_1){this.editor.setData(_1);this.Super("setValue",arguments)}
+,isc.A.$85m=function isc_NestedListEditorItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+6;isc.ClassFactory.defineClass("ViewFileItem","CanvasItem");isc.A=isc.ViewFileItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.shouldSaveValue=false;isc.A.colSpan="*";isc.A.height=20;isc.A.width="*";isc.A.overflow="visible";isc.A.canvasDefaults={_constructor:"Canvas",height:10,width:"100%"};isc.B.push(isc.A.isEditable=function isc_ViewFileItem_isEditable(){return false}
+,isc.A.init=function isc_ViewFileItem_init(){this.addAutoChild("canvas");this.Super('init',arguments)}
+,isc.A.setValue=function isc_ViewFileItem_setValue(_1){var _2=this.form,_3=_2.getValues();if(this.type=="imageFile"&&this.showFileInline!=false){this.canvas.setHeight("*");this.canvas.setWidth("*");this.canvas.setContents(this.getImageHTML()||" ")}else{if(this.showFileInline==true){this.logWarn("setValue(): Unsupported field-type for showFileInline: "+this.type)}
+this.canvas.setHeight(20);this.canvas.setWidth("*");this.canvas.setContents(this.getViewDownloadHTML(_1,_3)||" ")}
+this.Super("setValue",arguments)}
+,isc.A.getViewDownloadHTML=function isc_ViewFileItem_getViewDownloadHTML(_1,_2){if(isc.isA.String(_1))return _1;if(_2==null)return null;var _3=this.nativeName||this.name,_4=_2[_3+"_filename"];if(_4==null||isc.isA.emptyString(_4))return this.emptyCellValue;var _5=isc.Canvas.imgHTML("[SKIN]actions/view.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='"+this.getID()+".viewFile()'");var _6=isc.Canvas.imgHTML("[SKIN]actions/download.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='"+this.getID()+".downloadFile()'");return"<nobr>"+_5+" "+_6+" "+_4+"</nobr>"}
+,isc.A.getImageHTML=function isc_ViewFileItem_getImageHTML(){var _1=this.form.getValues(),_2=this.form.getField(this.name),_3=this.name+"$68c",_4;if(!_1[_3]){var _5=isc.Canvas.getFieldImageDimensions(_2,_1);_4=_1[_3]=isc.Canvas.imgHTML(this.form.getDataSource().streamFile(_1,_2.name),_5.width,_5.height)}else
+_4=_1[_3];return _4}
+,isc.A.viewFile=function isc_ViewFileItem_viewFile(){isc.DS.get(this.form.dataSource).viewFile(this.form.getValues(),this.name)}
+,isc.A.downloadFile=function isc_ViewFileItem_downloadFile(){isc.DS.get(this.form.dataSource).downloadFile(this.form.getValues(),this.name)}
+,isc.A.$85m=function isc_ViewFileItem__shouldAllowExpressions(){return false}
+);isc.B._maxIndex=isc.C+8;isc.defineClass("PanelHeader","ImgSectionHeader");isc.A=isc.PanelHeader.getPrototype();isc.A.width="100%";isc.A.height=22;isc.A.baseStyle="sectionHeader";isc.A=isc.PanelHeader.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.showSelectedIcon=false;isc.A.showRollOverIcon=false;isc.A.showDisabledIcon=false;isc.A.showDownIcon=false;isc.A.showFocusedIcon=false;isc.B.push(isc.A.initWidget=function isc_PanelHeader_initWidget(){this.setPanelTitleFromCanvas()}
+,isc.A.setPanelTitleFromCanvas=function isc_PanelHeader_setPanelTitleFromCanvas(){if(this.canvas){if(this.canvas.title)this.title=this.canvas.title;if(this.canvas.icon)this.icon=this.canvas.icon}}
+);isc.B._maxIndex=isc.C+2;isc.PanelHeader.registerStringMethods({iconClick:""});isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.panelHeaderDefaults={_constructor:"PanelHeader"};isc.A.panelHeaderProperties={};isc.A.panelHeaderPlacement="peer";isc.B.push(isc.A.setupPanelHeader=function isc_Canvas_setupPanelHeader(){if(!this.showPanelHeader)return;this.panelHeader=this.createAutoChild("panelHeader",{canvas:this,snapTo:"T"});if(isc.isA.Layout(this))this.panelHeaderPlacement="member";else this.panelHeaderPlacement="peer";this.panelHeaderPlacement="peer";if(this.panelHeaderPlacement=="member"){this.addMember(this.panelHeader,0)}
+else if(this.panelHeaderPlacement=="peer"){this.addPeer(this.panelHeader);this.panelHeader.moveAbove(this);this.$wi(this.panelHeader,isc.Canvas.TOP)}
+else if(this.panelHeaderPlacement=="custom"){}}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.panelActionControls=[];isc.B.push(isc.A.refreshPanelControls=function isc_Canvas_refreshPanelControls(){var _1=this.panelControls||[];if(!this.panelHeader.controls)this.panelHeader.controls=[];else this.panelHeader.controls.setLength(0);for(var i=0;i<_1.length;i++){var _3=_1.get(i),_4=null;if(isc.isAn.Object(_3)){_4=isc.addProperties({},_3)}else if(_3.startsWith("action:")){var _5=_3.substring(7,_3.length),_6=isc.Canvas.getRegisteredAction(_5);if(this.canPerformAction(_6)){if(this.showActionInPanel(_6))
+_4=this.getPanelActionControl(_6)}}else{_4=this.createAutoChild(_3)}
+if(_4){this.panelHeader.controls.add(_4)}else{}}
+var _7=this.panelHeader;_7.addControls()}
+,isc.A.canPerformAction=function isc_Canvas_canPerformAction(_1){var _2=_1.name,_3=_1.enableProperty||"can"+_2.substring(0,1).toUpperCase()+_2.substring(1,_2.length);return this[_3]&&this[_3]==true?true:false}
+,isc.A.showActionInPanel=function isc_Canvas_showActionInPanel(_1){return _1.showInPanel}
+,isc.A.getPanelActionControl=function isc_Canvas_getPanelActionControl(_1){var _2=this.panelActionControls[_1.name],_3=_1.controlConstructor||"ImgButton";_2=isc.ClassFactory.newInstance(_3,{ID:this.getID()+"_"+_1.name,width:18,height:18,src:_1.icon,showRollOver:false,showDown:false,showDisabled:false,showFocused:false,actionTarget:this,actionObject:_1,prompt:_1.tooltip,click:function(){this.actionTarget[this.actionObject.methodName]()}});this.panelActionControls[_1.name]=_2;return this.panelActionControls[_1.name]}
+,isc.A.showPrintPreview=function isc_Canvas_showPrintPreview(_1,_2,_3,_4){isc.Canvas.showPrintPreview(this,_1,_2,_3,_4)}
+);isc.B._maxIndex=isc.C+5;isc.A=isc.Canvas;isc.A.$71k={};isc.A=isc.Canvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.registerAction=function isc_c_Canvas_registerAction(_1){if(!this.$71k[_1.name]){this.$71k[_1.name]=_1}}
+,isc.A.getRegisteredActionNames=function isc_c_Canvas_getRegisteredActionNames(){return isc.getKeys(this.$71k)}
+,isc.A.getRegisteredActions=function isc_c_Canvas_getRegisteredActions(){return isc.getValues(this.$71k)}
+,isc.A.getRegisteredActionIndex=function isc_c_Canvas_getRegisteredActionIndex(){var _1=this.getRegisteredActions(),_2=_1.makeIndex("name",false);return _2}
+,isc.A.getRegisteredAction=function isc_c_Canvas_getRegisteredAction(_1){return this.$71k[_1]}
+,isc.A.isActionRegistered=function isc_c_Canvas_isActionRegistered(_1){return!this.$71k[_1]?false:true}
+);isc.B._maxIndex=isc.C+6;isc.defineClass("Action","Class");isc.A=isc.Action.getPrototype();isc.A.name=null;isc.A.title=null;isc.A.icon=null;isc.A.tooltip=null;isc.A.methodName=null;isc.A.controlConstructor="ImgButton";isc.A.enableProperty=null;isc.A.showInPanel=true;isc.Canvas.registerAction(isc.Action.create({name:"edit",title:"Edit",icon:"[SKINIMG]/actions/edit.png",tooltip:"Put the component into Edit mode",methodName:"startEditing",showInPanel:false}));isc.Canvas.registerAction(isc.Action.create({name:"editNew",title:"Edit New",icon:"[SKINIMG]/SectionHeader/opener_closed.png",tooltip:"Add a new Record to the component",methodName:"startEditingNew",showInPanel:false}));isc.Canvas.registerAction(isc.Action.create({name:"sort",title:"Sort",icon:"[SKINIMG]/actions/sort_ascending.png",tooltip:"Sort the records in the component",methodName:"sort",controlConstructor:"SortActionSelector",enableProperty:"canSortFields",showInPanel:false}));isc.Canvas.registerAction(isc.Action.create({name:"export",title:"Export",icon:"[SKINIMG]/actions/redo.png",tooltip:"Export the data in the component",methodName:"exportData",showInPanel:true}));isc.Canvas.registerAction(isc.Action.create({name:"print",title:"Print",icon:"[SKINIMG]/actions/print.png",tooltip:"Print the data in the component",methodName:"showPrintPreview",showInPanel:true}));isc.defineClass("SortActionSelector","DynamicForm");isc.A=isc.SortActionSelector.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.width=100;isc.A.height=20;isc.A.numCols=4;isc.A.fields=[{name:"sortField",showTitle:false,colSpan:2,type:"select",width:80,prompt:"Sort Field",startRow:false,endRow:false,changed:function(_1,_2,_3){var _4=_1.getField("sortDirection").getValue(),_5=_4?"ascending":"descending";if(_1.actionTarget.sort)_1.actionTarget.sort(_3,_5);else _1.actionTarget.data.sortByProperty(_3,_4)}},{name:"sortDirection",showTitle:true,showLabel:false,type:"checkbox",width:20,prompt:"Sort Direction: Checked is Ascending",startRow:false,endRow:false,changed:function(_1,_2,_3){var _4=_3,_5=_4?"ascending":"descending",_6=_1.getField("sortField").getValue();if(_1.actionTarget.sort)_1.actionTarget.sort(_6,_5);else _1.actionTarget.data.sortByProperty(_6,_4)}}];isc.B.push(isc.A.initWidget=function isc_SortActionSelector_initWidget(){this.Super("initWidget",arguments)}
+,isc.A.draw=function isc_SortActionSelector_draw(){this.Super("draw",arguments);var _1=this.actionTarget.getDataSource(),_2=_1?isc.getValues(_1.getFields()):[],_3={};for(var i=0;i<_2.length;i++){var _5=_2.get(i);_3[_5.name]=_5.title}
+this.getField("sortField").setValueMap(_3)}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("DataPathItem","TextItem");isc.A=isc.DataPathItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.operationsTreeDefaults={_constructor:"TTreeGrid",autoDraw:false,recordDoubleClick:function(){this.creator.operationSelected()},getIcon:function(_1){var _2=this.creator.form.creator,_3=(_2&&_2.getServiceElementIcon)?_2.getServiceElementIcon(_1):null;if(_3)return _3;return this.Super("getIcon",arguments)}};isc.A.operationsTreeSelectButtonDefaults={_constructor:"TButton",autoDraw:false,title:"Select",click:function(){if(this.creator.operationsTree.anySelected())
+this.creator.operationSelected()}};isc.A.defaultIcons=[{src:"[SKINIMG]/actions/edit.png",click:"item.showOperationsTreeData()",width:16,height:16},{src:"[SKINIMG]/actions/remove.png",click:"item.clearFormValues()",width:16,height:16}];isc.A.baseManagedProperties=["dataPath","schemaDataSource","serviceName","serviceNamespace"];isc.B.push(isc.A.getPropertyName=function isc_DataPathItem_getPropertyName(_1){if(this.isInput)
+return"input"+_1.substring(0,1).toUpperCase()+_1.substring(1);else return _1}
+,isc.A.initManagedProperties=function isc_DataPathItem_initManagedProperties(){this.managedProperties=[];var _1=this.baseManagedProperties;for(var i=0;i<_1.length;i++){this.managedProperties.add(this.getPropertyName(_1[i]))}}
+,isc.A.keyPress=function isc_DataPathItem_keyPress(_1,_2,_3){if(_3!="Arrow_Left"&&_3!="Arrow_Right"&&_3!="Home"&&_3!="End")return false;this.Super("keyPress",arguments)}
+,isc.A.init=function isc_DataPathItem_init(){this.icons=isc.clone(this.defaultIcons);this.initManagedProperties();this.Super("init",arguments);if(this.operationsTreeData){this.addAutoChildren(["operationsTree","operationsTreeSelectButton"])}}
+,isc.A.showOperationsTreeData=function isc_DataPathItem_showOperationsTreeData(){if(!this.operationsTreeData)return;if(!this.operationsTree)
+this.addAutoChildren(["operationsTree","operationsTreeSelectButton"]);var _1;if(isc.isA.Tree(this.operationsTreeData)){_1=this.operationsTreeData}else{_1=isc.Tree.create({modelType:"children",root:{children:this.operationsTreeData},nameProperty:"name",childrenProperty:"children"});_1.openAll()}
+this.operationsTree.setData(_1);var _2=this.isInput?"formInputs":"formOutputs";var _3=_2+"/"+this.getValue(),_4=_1.find(_3);if(_4)this.operationsTree.selectRecord(_4);if(!this.schemaDialog){this.schemaDialog=isc.TWindow.create({title:"Select element from message",autoCenter:true,height:"90%",width:"60%",isModal:true,showModalMask:true,items:[isc.VLayout.create({width:"100%",height:"100%",members:[this.operationsTree,this.operationsTreeSelectButton]})]})}else this.schemaDialog.show()}
+,isc.A.operationSelected=function isc_DataPathItem_operationSelected(){var _1=this.operationsTree,_2=_1.data,_3=_1.getSelectedRecord();this.schemaDialog.hide();this.setDataPathProperties(_3)}
+,isc.A.setDataPathProperties=function isc_DataPathItem_setDataPathProperties(_1){var _2=_1.initData||_1.defaults;this.dataPathProps=isc.applyMask(_2,this.managedProperties);if(this.logIsInfoEnabled()){this.logInfo("setDPProps, editNode: "+this.echoAll(_1)+" defaults: "+this.echo(_2)+", managedProps: "+this.managedProperties+", props: "+this.echo(this.dataPathProps))}
+this.saveFormValues()}
+,isc.A.saveFormValues=function isc_DataPathItem_saveFormValues(){for(var i=0;i<this.managedProperties.length;i++){var _2=this.managedProperties[i],_3=this.dataPathProps[_2];this.form.setValue(_2,_3)}
+if(this.form.saveProperties){this.form.saveProperties(this.dataPathProps,this.form.currentComponent)}}
+,isc.A.clearFormValues=function isc_DataPathItem_clearFormValues(){for(var i=0;i<this.managedProperties.length;i++){this.form.setValue(this.managedProperties[i],null)}
+if(this.form.saveProperties){this.form.saveProperties(this.dataPathProps,this.form.currentComponent)}}
+);isc.B._maxIndex=isc.C+9;if(isc.ListGrid){isc.defineClass("RelativeDateItem","CanvasItem");isc.A=isc.RelativeDateItem;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$85j={ms:"millisecond",s:"second",mn:"minute",h:"hour",d:"day",w:"week",m:"month",q:"quarter",y:"year",dc:"decade",c:"century"};isc.B.push(isc.A.getAbsoluteDate=function isc_c_RelativeDateItem_getAbsoluteDate(_1,_2,_3,_4){var _5=false;if(isc.SimpleType.inheritsFrom(_3,"date")&&!isc.SimpleType.inheritsFrom(_3,"datetime"))
+{_5=true}
+var _6=isc.DateUtil.getAbsoluteDate(_1,_2,_4,_5);return _6}
+,isc.A.getPeriodName=function isc_c_RelativeDateItem_getPeriodName(_1){var _2=_1.toLowerCase();return this.$85j[_2]||_2}
+,isc.A.getPeriodKey=function isc_c_RelativeDateItem_getPeriodKey(_1){if(this.$85k==null){this.$85k=isc.makeReverseMap(this.$85j)}
+_1=_1.toLowerCase();return this.$85k[_1]||_1}
+,isc.A.getRelativeDateParts=function isc_c_RelativeDateItem_getRelativeDateParts(_1){return isc.DateUtil.getRelativeDateParts(_1)}
+,isc.A.isRelativeDate=function isc_c_RelativeDateItem_isRelativeDate(_1){return isc.DateUtil.isRelativeDate(_1)}
+);isc.B._maxIndex=isc.C+5;isc.A=isc.RelativeDateItem.getPrototype();isc.A.height=20;isc.A.cellHeight=20;isc.A.canFocus=true;isc.A.timeUnitOptions=["day","week","month"];isc.A.showPastOptions=true;isc.A.showFutureOptions=true;isc.A.rangeRoundingGranularity={"year":"day","month":"day","week":"day","day":"day","hour":"minute","minute":"second","second":"second"};isc.A.millisecondsAgoTitle="N milliseconds ago";isc.A.secondsAgoTitle="N seconds ago";isc.A.minutesAgoTitle="N minutes ago";isc.A.hoursAgoTitle="N hours ago";isc.A.daysAgoTitle="N days ago";isc.A.weeksAgoTitle="N weeks ago";isc.A.monthsAgoTitle="N months ago";isc.A.yearsAgoTitle="N years ago";isc.A.millisecondsFromNowTitle="N milliseconds from now";isc.A.secondsFromNowTitle="N seconds from now";isc.A.minutesFromNowTitle="N minutes from now";isc.A.hoursFromNowTitle="N hours from now";isc.A.daysFromNowTitle="N days from now";isc.A.weeksFromNowTitle="N weeks from now";isc.A.monthsFromNowTitle="N months from now";isc.A.yearsFromNowTitle="N years from now";isc.A.defaultValue="$today";isc.A.operator="greaterThan";isc.A.presetOptions={"$today":"Today","$yesterday":"Yesterday","$tomorrow":"Tomorrow","$weekAgo":"Current day of last week","$weekFromNow":"Current day of next week","$monthAgo":"Current day of last month","$monthFromNow":"Current day of next month"};isc.A.valueFieldDefaults={editorType:"ComboBoxItem",name:"valueField",showTitle:false,shouldSaveValue:false,validateOnChange:false,getInnerWidth:function(_1){var _2=this.Super("getInnerWidth",arguments);var _3=this.form.canvasItem;if(_3==null||this.$11e()||!_3.$142()||!isc.isA.Number(_2)){return _2}
+return _2-_3.$141()}};isc.A.defaultQuantity=1;isc.A.quantityFieldDefaults={editorType:"SpinnerItem",name:"quantityField",width:50,min:0,step:1,showTitle:false,shouldSaveValue:false,selectOnFocus:true};isc.A.showChooserIcon=true;isc.A.pickerIconDefaults={name:"chooserIcon",showOver:false,showFocused:false,showFocusedWithItem:false,neverDisable:true,width:16,height:16,src:"[SKIN]/DynamicForm/DatePicker_icon.gif"};isc.A.iconVAlign="center";isc.A.pickerIconPrompt="Show Date Chooser";isc.A.pickerConstructor="DateChooser";isc.A.showCalculatedDateField=true;isc.A.invalidCalculatedDatePrompt="";isc.A.calculatedDateFieldDefaults={editorType:"BlurbItem",name:"calculatedDateField",border:"1px solid black;",width:"*",setValue:function(_1){if(_1==null||_1=="")_1=this.defaultValue;return this.Super("setValue",arguments)},startRow:false,showTitle:false,shouldSaveValue:false};isc.A.startDate=isc.DateItem.DEFAULT_START_DATE;isc.A.endDate=isc.DateItem.DEFAULT_END_DATE;isc.A.centuryThreshold=isc.DateItem.DEFAULT_CENTURY_THRESHOLD;isc.A.shouldSaveValue=true;isc.A.editCriteriaInInnerForm=false;isc.A.editorConstructor="DynamicForm";isc.A.editorDefaults={numCols:4,cellPadding:0,colWidths:[130,"*","*","*"],itemChanged:function(_1,_2){this.creator.updateValue()},itemKeyPress:function(_1,_2,_3){var _1=this.canvasItem;if(_1&&_1.form){if(_2=="Enter"&&_1.form.saveOnEnter)_1.form.submit();return _1.$18d(_1,_1.form,_2,_3)}}};isc.A.useSharedPicker=false;isc.A.pickerDefaults={width:isc.DateItem.chooserWidth,height:isc.DateItem.chooserHeight,showCancelButton:true,autoHide:true};isc.A=isc.RelativeDateItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoDestroy=true;isc.A.validators=[{type:"isDate"}];isc.B.push(isc.A.init=function isc_RelativeDateItem_init(){this.$67h();this.Super("init",arguments)}
+,isc.A.isEditable=function isc_RelativeDateItem_isEditable(){return true}
+,isc.A.$67h=function isc_RelativeDateItem__createEditor(){var _1;var _2={$76z:true};this.addAutoChild("editor",_2);this.canvas=this.editor;var _3=this,_4=[],_5=2;_4[0]=isc.addProperties({},this.valueFieldDefaults,this.valueFieldProperties,{valueMap:this.getValueFieldOptions()});_4[1]=isc.addProperties({},this.quantityFieldDefaults,this.quantityFieldProperties,{defaultValue:this.defaultQuantity});if(this.showChooserIcon){_5=3;_4[2]={name:"iconPlaceholder",type:"staticText",width:1,showTitle:false,canFocus:true,$872:function(){return false},iconVAlign:"center",icons:[isc.addProperties({prompt:this.pickerIconPrompt},this.pickerIconDefaults,this.pickerIconProperties,{click:function(){_3.showPicker()}})]}}
+var _6=this.getType(),_7=false;if(isc.SimpleType.inheritsFrom(_6,"date")&&!isc.SimpleType.inheritsFrom(_6,"datetime"))
+{_7=true}
+this.baseDate=this.baseDate||(_7?isc.Date.createLogicalDate():new Date());if(this.showCalculatedDateField){_4[_5]=isc.addProperties({},this.calculatedDateFieldDefaults,this.calculatedDateFieldProperties,{cellStyle:this.getHintStyle(),defaultValue:this.invalidCalculatedDatePrompt})}
+this.canvas.setFields(_4);this.valueField=this.canvas.getField("valueField");this.quantityField=this.canvas.getField("quantityField");if(this.showCalculatedDateField)
+this.calculatedDateField=this.canvas.getField("calculatedDateField");if(this.showChooserIcon){this.iconPlaceholder=this.canvas.getField("iconPlaceholder");this.pickerIcon=this.iconPlaceholder.icons.find("name","chooserIcon")}
+this.setValue(this.value||this.defaultValue)}
+,isc.A.updateEditor=function isc_RelativeDateItem_updateEditor(){if(!this.valueField||!this.quantityField)return;var _1,_2,_3=false;if(this.valueField.hasFocus){_1=this.valueField;_2=this.valueField.getSelectionRange()}else if(this.quantityField.hasFocus){_1=this.quantityField;_2=this.quantityField.getSelectionRange()}
+var _4=this.valueField.getValue(),_5=this.quantityField.getValue();var _6=(_4&&isc.isA.String(_4)&&this.relativePresets[_4]);if(!_6){if(this.quantityField.isVisible()){_3=true;this.editor.colWidths=[130,22,"*","*"];this.quantityField.hide()}}else{if(!this.quantityField.isVisible()){_3=true;this.editor.colWidths=[130,50,22,"*"];this.quantityField.show()}}
+if(this.calculatedDateField){var _4=this.getAbsoluteDate();var _7=this.calculatedDateField.getValue();var _8=!_4?"":"("+this.formatDate(_4)+")";if(_7!=_8){_3=true;this.calculatedDateField.setValue(_8)}}
+if(_3&&_1!=null){if(!_6&&_1==this.quantityField){this.valueField.focusInItem()}else{if(_2){_1.delayCall("setSelectionRange",[_2[0],_2[1]])}}}}
+,isc.A.getValueFieldOptions=function isc_RelativeDateItem_getValueFieldOptions(){var _1=isc.addProperties({},this.presetOptions);this.relativePresets={};for(var i=0;i<this.timeUnitOptions.length;i++){var _3=this.timeUnitOptions[i];if(this.showPastOptions){_1[_3+"_ago"]=this[_3+"sAgoTitle"];this.relativePresets[_3+"_ago"]=true}
+if(this.showFutureOptions){_1[_3+"_fromNow"]=this[_3+"sFromNowTitle"];this.relativePresets[_3+"_fromNow"]=true}}
+return _1}
+,isc.A.setValue=function isc_RelativeDateItem_setValue(_1,_2){if(!this.valueField)return this.Super("setValue",arguments);if(_1==null&&!_2){var _3=this.getDefaultValue();if(_3!=null){_1=_3}}
+if(isc.isA.Date(_1)&&_1.$84l!=null&&this.compareValues(this.$84m,_1.$84l))
+{if(_1.getTime()==_1.$84n){_1=_1.$84l}}
+var _4=false;if(_1==null){this.valueField.setValue(null)}else if(isc.isA.Date(_1)||this.valueField.valueMap[_1]||(_1.value&&this.valueField.valueMap[_1.value]))
+{var _5=isc.isA.Date(_1);_4=!_5;this.valueField.setValue(_5?this.formatDate(_1):_1.value?_1.value:_1)}else if(this.timeUnitOptions.contains(_1)){_4=true;_1+="_fromNow";this.valueField.setValue(_1)}else{var _6,_4=isc.RelativeDateItem.isRelativeDate(_1);if(_4||isc.isA.String(_1)){_6=isc.RelativeDateItem.getAbsoluteDate(_1,this.baseDate,this.getType(),this.rangePosition)}
+if(!isc.isA.Date(_6)){_4=false;this.valueField.setValue(null)}else{var _7=_4?_1.value:_1;_7=isc.DateUtil.mapRelativeDateShortcut(_7,this.rangePosition);var _8,_9,_10=isc.RelativeDateItem.getRelativeDateParts(_7),_11=isc.RelativeDateItem.getPeriodName(_10.period),_12=(_10.direction=="+"?"fromNow":"ago");_9=_10?_10.countValue:null;_8=_11?_11.toLowerCase()+"_"+_12:null;if(_8&&this.valueField.valueMap[_8]){this.valueField.setValue(_8);this.quantityField.setValue(_9);_4=true}else{_4=false;this.valueField.setValue(this.formatDate(_6))}}}
+if(_4){this.$84m=this.getDataValue();_1=this.$84o(this.$84m)}else{this.$84m=null}
+this.Super("setValue",[_1,_2],arguments);this.updateEditor()}
+,isc.A.$84o=function isc_RelativeDateItem__convertToAbsoluteDate(_1){var _2=_1.value?_1.value:_1;var _3=isc.RelativeDateItem.getAbsoluteDate(_2,this.baseDate,this.getType(),this.rangePosition);if(isc.isA.Date(_3)){_3.$84l=_1;_3.$84n=_3.getTime()}
+return _3}
+,isc.A.getAbsoluteDate=function isc_RelativeDateItem_getAbsoluteDate(){return this.getDataValue(true)}
+,isc.A.getRelativeDate=function isc_RelativeDateItem_getRelativeDate(){var _1=this.valueField.getValue(),_2=this.quantityField.getValue();if(!_1||!isc.isA.String(_1))return null;var _3=_1.substring(0,1);if(_3=="+"||_3=="-"||_3=="$"){return this.getRelativeDateObject(_1)}
+var _4=_1.indexOf("_");if(_4>=0){var _5=_1.substring(0,_4),_6=(_1.substring(_4+1)=="ago"),_7=isc.RelativeDateItem.getPeriodKey(_5);if(_7){var _8=(_6?"-":"+")+_2+_7;var _9=this.rangePosition=="end"?"+":"-",_10=this.rangeRoundingGranularity[_5];if(_10!=null&&_10.toLowerCase()!="millisecond"){_10=isc.RelativeDateItem.getPeriodKey(_10).toUpperCase();_8+="["+_9+"0"+_10+"]"}
+return this.getRelativeDateObject(_8)}}
+return null}
+,isc.A.getRelativeDateObject=function isc_RelativeDateItem_getRelativeDateObject(_1){var _2={_constructor:"RelativeDate",value:_1};if(this.rangePosition)_2.rangePosition=this.rangePosition;return _2}
+,isc.A.getDataValue=function isc_RelativeDateItem_getDataValue(_1){var _2=this.valueField.getValue(),_3;if(_2==null||isc.isAn.emptyString(_2)){_3=null}else{var _4=this.getRelativeDate();if(_4){if(_1){_3=this.$84o(_4)}else{_3=_4}}else{_3=this.parseDate(_2,this.getInputFormat())}
+if(isc.isA.Date(_3)){var _5=this.getType();if(_5==null||(!isc.SimpleType.inheritsFrom(_5,"datetime")&&!isc.SimpleType.inheritsFrom(_5,"time")))
+{_3.logicalDate=true}}}
+return _3}
+,isc.A.updateValue=function isc_RelativeDateItem_updateValue(){if(!this.valueField||!this.quantityField)return;var _1=this._value,_2=this.$84m,_3=this.getDataValue(false),_4=(_3==null||isc.isA.Date(_3))?_3:this.$84o(_3);if(_3!=_4){this.$84m=_3}else{this.$84m=null}
+if(this.compareValues(_1,_4)&&this.compareValues(_2,this.$84m))return;this.$10y(_4);this.updateEditor()}
+,isc.A.hasAdvancedCriteria=function isc_RelativeDateItem_hasAdvancedCriteria(){return(this.valueField&&this.valueField.getValue()!=null)}
+,isc.A.getCriterion=function isc_RelativeDateItem_getCriterion(_1){var _2=this.getDataValue(_1);if(_2==null)return null;var _3=this.getCriteriaFieldName();return{operator:this.operator,value:_2,fieldName:_3}}
+,isc.A.getCellHeight=function isc_RelativeDateItem_getCellHeight(){var _1=this.Super("getCellHeight",arguments);if(isc.Browser.isIE&&this.useTextField&&isc.isA.Number(_1))_1+=2;return _1}
+,isc.A.getPickerIcon=function isc_RelativeDateItem_getPickerIcon(_1,_2,_3,_4){var _5=this.invokeSuper(isc.DateItem,"getPickerIcon",_1,_2,_3,_4);if(_5.prompt==null)_5.prompt=this.pickerIconPrompt;return _5}
+,isc.A.showPicker=function isc_RelativeDateItem_showPicker(){if(!this.picker){if(this.useSharedPicker)this.picker=isc.DateChooser.getSharedDateChooser();else{this.picker=isc[this.pickerConstructor].create(isc.addProperties({},this.pickerDefaults,this.pickerProperties,{_generated:true,autoHide:true,showCancelButton:true}))}}
+var _1=this.picker;var _2=_1.callingFormItem;if(_2!=this){if(_2)_2.ignore(_1,"dataChanged");this.observe(_1,"dataChanged","observer.pickerDataChanged(observed)");_1.callingFormItem=this;_1.callingForm=this.canvas;_1.locatorParent=this.canvas}
+_1.startYear=this.getStartDate().getFullYear();_1.endYear=this.getEndDate().getFullYear();return this.Super("showPicker",arguments)}
+,isc.A.getPickerRect=function isc_RelativeDateItem_getPickerRect(){var _1=this.getPageLeft(),_2=this.getPageTop(),_3=isc.DateItem.chooserWidth+3,_4=isc.DateItem.chooserHeight+3,_5=this.canvas,_6;_6=_5.getItem("iconPlaceholder");_1+=_6.getLeft();_1+=Math.round((_6.getVisibleWidth()-(this.getPickerIconWidth()/2))-
+(_3/ 2));_2+=Math.round((this.getPickerIconHeight()/2)-(_4/ 2));return[_1,_2]}
+,isc.A.pickerDataChanged=function isc_RelativeDateItem_pickerDataChanged(_1){var _2=_1.getData();var _3=this.getType(),_4=isc.SimpleType.inheritsFrom(_3,"date"),_5=isc.SimpleType.inheritsFrom(_3,"datetime");if(!_4||_5){this.setToZeroTime(_2);if(this.rangePosition=="end")_2=isc.DateUtil.getEndOf(_2,"D")}
+this.$20l=true;this.valueField.setValue(this.formatDate(_2));this.$20l=false;this.updateValue();if(!this.hasFocus)this.focusInItem()}
+,isc.A.getStartDate=function isc_RelativeDateItem_getStartDate(){var _1=this.parseDate(this.startDate);if(!isc.isA.Date(_1)){this.logWarn("startDate was not in valid date format - using default start date");_1=isc.DateItem.DEFAULT_START_DATE}
+return _1}
+,isc.A.getEndDate=function isc_RelativeDateItem_getEndDate(){var _1=this.parseDate(this.endDate);if(!isc.isA.Date(_1)){this.logWarn("endDate was not in valid date format - using default end date");_1=isc.DateItem.DEFAULT_END_DATE}
+return _1}
+,isc.A.parseDate=function isc_RelativeDateItem_parseDate(_1,_2){if(_2==null)_2=this.getInputFormat();var _3=this.getType(),_4=isc.SimpleType.inheritsFrom(_3,"date")&&!isc.SimpleType.inheritsFrom(_3,"datetime");return Date.parseInput(_1,_2,this.centuryThreshold,true,!_4)}
+,isc.A.formatDate=function isc_RelativeDateItem_formatDate(_1){if(!isc.isA.Date(_1))return _1;var _2=this.$45i();var _3=this.getType(),_4=false,_5=isc.SimpleType.inheritsFrom(_3,"date");if(!_5||isc.SimpleType.inheritsFrom(_3,"datetime"))_4=true;if(_4){return _1.toShortDatetime(_2,true)}else{return _1.toShortDate(_2,!_5)}}
+,isc.A.getInputFormat=function isc_RelativeDateItem_getInputFormat(){if(this.inputFormat)return this.inputFormat;var _1=this.$45i();if(_1){return Date.mapDisplayFormatToInputFormat(_1)}
+return null}
+,isc.A.getEnteredValue=function isc_RelativeDateItem_getEnteredValue(){if(this.valueField)return this.valueField.getValue();return this.getValue()}
+,isc.A.getValue=function isc_RelativeDateItem_getValue(){var _1=this.Super("getValue",arguments);return _1||(this.valueField&&this.valueField.getValue())}
+);isc.B._maxIndex=isc.C+26}
+if(isc.ListGrid){isc.defineClass("DateRangeItem","CanvasItem");isc.A=isc.DateRangeItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.shouldSaveValue=true;isc.A.fromTitle="From";isc.A.toTitle="To";isc.A.allowRelativeDates=false;isc.A.dateRangeFormDefaults={_constructor:"DynamicForm",margin:0,padding:0,itemChanged:function(_1,_2){var _3=this.getValues(),_4={_constructor:"DateRange"};if(_3.fromField!=null)_4.start=_3.fromField;if(_3.toField!=null)_4.end=_3.toField;this.creator.$10y(_4)}};isc.B.push(isc.A.setFromDate=function isc_DateRangeItem_setFromDate(_1){this.fromDate=_1;if(this.fromField)this.fromField.setValue(this.fromDate)}
+,isc.A.setToDate=function isc_DateRangeItem_setToDate(_1){this.toDate=_1;if(this.toField)this.toField.setValue(this.toDate)}
+,isc.A.hasAdvancedCriteria=function isc_DateRangeItem_hasAdvancedCriteria(){return this.fromField&&this.toField&&(this.fromField.getValue()!=null||this.toField.getValue()!=null)}
+,isc.A.getCriterion=function isc_DateRangeItem_getCriterion(_1){_1=_1||!this.allowRelativeDates;var _2=_1?this.fromField.getValue():this.fromField.getRelativeDate()||this.fromField.getValue(),_3=_2!=null,_4=_1?this.toField.getValue():this.toField.getRelativeDate()||this.toField.getValue(),_5=_4!=null,_6=null;if(_3||_5){_6={_constructor:"AdvancedCriteria",operator:"and",criteria:[]};if(_3){if(isc.isA.RelativeDateItem(_2)){_2.rangePosition="start"}
+_6.criteria.add({fieldName:this.getCriteriaFieldName(),operator:"greaterOrEqual",value:_2})}
+if(_5){if(isc.isA.RelativeDateItem(_4)){_4.rangePosition="end"}
+_6.criteria.add({fieldName:this.getCriteriaFieldName(),operator:"lessOrEqual",value:_4})}}
+return _6}
+,isc.A.canEditCriterion=function isc_DateRangeItem_canEditCriterion(_1){if(_1==null)return false;var _2=this.getCriteriaFieldName();if(_1.operator=="and"){var _3=_1.criteria;if(_3.length==0||_3.length>2){return false}else if(_3.length==1){var _4=_3[0];if(_4.fieldName!=_2)return false;if(_4.operator=="equals"){this.logWarn("DynamicForm editing Advanced criteria. Includes criterion for "+"field "+_2+". A dateRange editor is showing for this field and "+"the existing criteria has operator: "+_4.operator+". DateRange "+"items can only edit criteria greaterThan/greaterOrEqual or lessThan/lessOrEqual. "+"However, for the 'equals' operator, a dateRange will be constructed for you, "+"as greaterOrEqual to [value] and lessOrEqual to [value], ie, one day.");return true}}
+for(var i=0;i<_3.length;i++){var _6=_3[i];if(_6.fieldName!=_2)return false;if(_6.operator!="greaterThan"&&_6.operator!="greaterOrEqual"&&_6.operator!="lessThan"&&_6.operator!="lessOrEqual")
+{this.logWarn("DynamicForm editing Advanced criteria. Includes criterion for "+"field "+_2+". A dateRange editor is showing for this field but "+"the existing criteria has operator:"+_6.operator+". DateRange "+"items can only edit criteria greaterThan/greaterOrEqual or lessThan/lessOrEqual "+"so leaving this unaltered.");return false}}
+return true}else if(_1.fieldName==_2){var _7="DynamicForm editing Advanced criteria. Includes criterion for "+"field "+_2+". A dateRange editor is showing for this field and "+"the existing criteria has operator:"+_1.operator+". DateRange "+"items can only edit criteria greaterThan/greaterOrEqual or lessThan/lessOrEqual";if(_1.operator=="equals"){this.logWarn(_7+". However, for the 'equals' operator, a dateRange will be "+"constructed for you, as greaterOrEqual to [value] and lessOrEqual to [value], "+"ie, one day.");return true}
+if(_1.operator!="greaterThan"&&_1.operator!="greaterOrEqual"&&_1.operator!="lessThan"&&_1.operator!="lessOrEqual")
+{this.logWarn(_7+" so leaving this unaltered.");return false}
+return true}
+return false}
+,isc.A.setCriterion=function isc_DateRangeItem_setCriterion(_1){if(!_1)return;if(_1.operator=="equals"){var _2={_constructor:"AdvancedCriteria",operator:"and",criteria:[{fieldName:_1.fieldName,operator:"greaterOrEqual",value:_1.value},{fieldName:_1.fieldName,operator:"lessOrEqual",value:_1.value}]};_1=_2}
+var _3,_4;if(_1.operator=="and"){_3=_1.criteria.find("operator","greaterThan");if(!_3)_3=_1.criteria.find("operator","greaterOrEqual");_4=_1.criteria.find("operator","lessThan");if(!_4)_4=_1.criteria.find("operator","lessOrEqual")}else{if(_1.operator=="greaterThan")_3=_1;else if(_1.operator=="greaterOrEqual")_3=_1;else if(_1.operator=="lessThan")_4=_1;else if(_1.operator=="lessOrEqual")_4=_1}
+if(_3!=null){this.fromField.setValue(_3.value)}
+if(_4!=null){this.toField.setValue(_4.value)}}
+);isc.B._maxIndex=isc.C+6;isc.A=isc.DateRangeItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoDestroy=true;isc.B.push(isc.A.init=function isc_DateRangeItem_init(){this.$67h();this.Super("init",arguments)}
+,isc.A.isEditable=function isc_DateRangeItem_isEditable(){return true}
+,isc.A.$67h=function isc_DateRangeItem__createEditor(){var _1;var _2={$76z:true};if(this.form.dataSource){_1=isc.DataSource.getDataSource(this.form.dataSource);var _3=_1.getField(this.name);if(_3){_2.dataSource=_1.getFieldDataSource(_3)}}
+if(this.form&&this.form.showComplexFieldsRecursively){_2.showComplexFields=true;_2.showComplexFieldsRecursively=true}else{_2.showComplexFields=false}
+_2.height=22;var _4=this.innerTitleOrientation||this.titleOrientation||this.form.titleOrientation||"left";_2.titleOrientation=_4;if(_4=="left"||_4=="right"){_2.numCols=2;_2.colWidths=[50,"*"]}else{_2.numCols=1;_2.colWidths=["*"]}
+this.addAutoChild("dateRangeForm",_2);this.canvas=this.dateRangeForm;var _5=this.getType(),_6=false;if(isc.SimpleType.inheritsFrom(_5,"date")&&!isc.SimpleType.inheritsFrom(_5,"datetime"))
+{_6=true}
+this.baseDate=this.baseDate||(_6?isc.Date.createLogicalDate():new Date());var _7=this,_8=this.allowRelativeDates?"RelativeDateItem":"DateItem",_9=[];_9[0]=isc.addProperties({},this.fromFieldDefaults,this.fromFieldProperties,{name:"fromField",_constructor:_8,baseDate:this.baseDate,dateFormatter:(this.dateDisplayFormat||this.dateFormatter),type:this.getType(),inputFormat:(this.dateInputFormat||this.inputFormat),rangePosition:"start",title:this.fromTitle,defaultValue:this.fromValue,useTextField:(_8=="DateItem"?true:null)});_9[1]=isc.addProperties({},this.toFieldDefaults,this.toFieldProperties,{name:"toField",_constructor:_8,baseDate:this.baseDate,dateFormatter:(this.dateDisplayFormat||this.dateFormatter),type:this.getType(),inputFormat:(this.dateInputFormat||this.inputFormat),rangePosition:"end",title:this.toTitle,defaultValue:this.toValue,useTextField:(_8=="DateItem"?true:null)});this.canvas.setFields(_9);this.toField=this.canvas.getField("toField");this.fromField=this.canvas.getField("fromField");if(this.allowRelativeDates){this.fromField.canvas.$v4=this.toField.canvas;this.toField.canvas.$vw=this.fromField.canvas}
+if(this.defaultValue){this.setValue(this.defaultValue)}else{if(this.fromDate)this.setFromDate(this.fromDate);if(this.toDate)this.setToDate(this.toDate)}}
+,isc.A.fieldChanged=function isc_DateRangeItem_fieldChanged(){}
+,isc.A.setValue=function isc_DateRangeItem_setValue(_1){var _2=_1?_1.start:null,_3=_1?_1.end:null,_4=isc.RelativeDateItem;if(!this.allowRelativeDates&&_4.isRelativeDate(_2))this.setFromDate(null);else this.setFromDate(_2);if(!this.allowRelativeDates&&_4.isRelativeDate(_3))this.setToDate(null);else this.setToDate(_3);this.Super("setValue",arguments)}
+,isc.A.getValue=function isc_DateRangeItem_getValue(){if(!this.fromField||!this.toField)return;var _1=this.allowRelativeDates,_2=_1&&this.fromField.getRelativeDate()?this.fromField.getRelativeDate():this.fromField.getValue(),_3=_1&&this.toField.getRelativeDate()?this.toField.getRelativeDate():this.toField.getValue(),_4={_constructor:"DateRange"};if(_2==null&&_3==null)return null;if(_2!=null)_4.start=_2;if(_3!=null)_4.end=_3;return _4}
+,isc.A.destroy=function isc_DateRangeItem_destroy(){if(this.dateRangeForm)this.dateRangeForm.destroy();this.Super("destroy",arguments)}
+);isc.B._maxIndex=isc.C+7;if(isc.Window){isc.defineClass("DateRangeDialog","Window");isc.A=isc.DateRangeDialog;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.askForRange=function isc_c_DateRangeDialog_askForRange(_1,_2,_3,_4){var _5=isc.DateRangeDialog.create({allowRelativeDates:_1!=null?_1:true,rangeItemProperties:_2,callback:_4},_3);_5.show()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.DateRangeDialog.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.isModal=true;isc.A.showModalMask=true;isc.A.dismissOnEscape=true;isc.A.autoCenter=true;isc.A.autoSize=true;isc.A.vertical="true";isc.A.showMinimizeButton=false;isc.A.headerIconProperties={src:"[SKIN]/DynamicForm/DatePicker_icon.gif"};isc.A.returnCriterion=false;isc.A.headerTitle="Select Date Range";isc.A.mainLayoutDefaults={_constructor:"VLayout",width:380,height:105,layoutMargin:5};isc.A.rangeFormDefaults={_constructor:"DynamicForm",numCols:1,height:"100%",autoParent:"mainLayout"};isc.A.rangeItemDefaults={_constructor:"DateRangeItem",allowRelativeDates:true,showTitle:false};isc.A.buttonLayoutDefaults={_constructor:"HLayout",width:"100%",height:22,layoutAlign:"right",align:"right",membersMargin:5,autoParent:"mainLayout"};isc.A.clearButtonTitle="Clear";isc.A.clearButtonDefaults={_constructor:"IButton",height:22,width:80,canFocus:true,autoParent:"buttonLayout",click:function(){this.creator.clearValues()}};isc.A.okButtonTitle="OK";isc.A.okButtonDefaults={_constructor:"IButton",height:22,width:80,canFocus:true,autoParent:"buttonLayout",click:function(){this.creator.accept()}};isc.A.cancelButtonTitle="Cancel";isc.A.cancelButtonDefaults={_constructor:"IButton",height:22,width:80,canFocus:true,autoParent:"buttonLayout",click:function(){this.creator.cancel()}};isc.A.destroyOnClose=true;isc.B.push(isc.A.destroy=function isc_DateRangeDialog_destroy(){if(this.rangeForm){this.rangeForm.markForDestroy()}
+this.Super("destroy",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.DateRangeDialog.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_DateRangeDialog_initWidget(){this.title=this.headerTitle;this.Super("initWidget",arguments);this.addAutoChild("mainLayout");this.addAutoChild("rangeForm",{$76z:true,items:[isc.addProperties({},this.rangeItemDefaults,this.rangeItemProperties,{name:"rangeItem",fromDate:this.fromDate,toDate:this.toDate,dateDisplayFormat:this.dateDisplayFormat})]});var _1=this.rangeItem=this.rangeForm.getField("rangeItem");var _2=_1.innerTitleOrientation||_1.titleOrientation||"left";_1.canvas.titleOrientation=_2;if(_2=="left"||_2=="right"){_1.canvas.numCols=2;_1.canvas.colWidths=[50,"*"]}else{_1.canvas.numCols=1;_1.canvas.colWidths=["*"]}
+this.addAutoChild("buttonLayout");this.addAutoChild("clearButton",{canFocus:true,title:this.clearButtonTitle});this.addAutoChild("okButton",{canFocus:true,title:this.okButtonTitle});this.addAutoChild("cancelButton",{canFocus:true,title:this.cancelButtonTitle});this.addItem(this.mainLayout)}
+,isc.A.clearValues=function isc_DateRangeDialog_clearValues(){if(this.rangeItem)this.rangeItem.setValue(null)}
+,isc.A.accept=function isc_DateRangeDialog_accept(){this.finished(this.rangeItem.returnCriterion?this.rangeItem.getCriterion():this.rangeItem.getValue())}
+,isc.A.cancel=function isc_DateRangeDialog_cancel(){this.hide();if(this.destroyOnClose)this.markForDestroy()}
+,isc.A.finished=function isc_DateRangeDialog_finished(_1){if(this.callback)this.fireCallback(this.callback,"value",[_1]);this.hide();if(this.destroyOnClose)this.markForDestroy()}
+);isc.B._maxIndex=isc.C+5;isc.defineClass("MiniDateRangeItem","StaticTextItem");isc.A=isc.MiniDateRangeItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.textBoxStyle="textItem";isc.A.clipValue=true;isc.A.wrap=false;isc.A.iconVAlign="top";isc.A.height=20;isc.A.width=100;isc.A.shouldSaveValue=true;isc.A.rangeDialogDefaults={_constructor:"DateRangeDialog",autoDraw:false,destroyOnClose:false};isc.A.canFocus=true;isc.A.canTabToIcons=true;isc.A.fromDateOnlyPrefix="Since";isc.A.toDateOnlyPrefix="Before";isc.A.pickerIconPrompt="Show Date Chooser";isc.A.pickerIconDefaults={name:"showDateRange",src:"[SKIN]/DynamicForm/DatePicker_icon.gif",width:16,height:16,showOver:false,showFocused:false,showFocusedWithItem:false,hspace:0,click:function(_1,_2,_3){if(!_2.disabled)_2.showRangeDialog()}};isc.A.iconVAlign="center";isc.A.allowRelativeDates=true;isc.B.push(isc.A.getFocusElement=function isc_MiniDateRangeItem_getFocusElement(){return this.$16g(this.icons[0])}
+,isc.A.$872=function isc_MiniDateRangeItem__canFocusInTextBox(){return false}
+,isc.A.handleClick=function isc_MiniDateRangeItem_handleClick(){if(!this.disabled)this.showRangeDialog()}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.MiniDateRangeItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_MiniDateRangeItem_init(){this.addAutoChild("rangeDialog",{fromDate:this.fromDate,toDate:this.toDate,rangeItemProperties:{allowRelativeDates:this.allowRelativeDates,type:this.getType()},dateDisplayFormat:this.dateDisplayFormat,callback:this.getID()+".rangeDialogCallback(value)"});this.icons=[isc.addProperties({prompt:this.pickerIconPrompt},this.pickerIconDefaults,this.pickerIconProperties)];this.canTabToIcons=true;this.rangeItem=this.rangeDialog.rangeItem;this.rangeItem.name=this.name;if(this.defaultValue){this.setValue(this.defaultValue)}}
+,isc.A.showRangeDialog=function isc_MiniDateRangeItem_showRangeDialog(){this.rangeDialog.rangeItem.setFromDate(this.fromDate);this.rangeDialog.rangeItem.setToDate(this.toDate);this.rangeDialog.show()}
+,isc.A.rangeDialogCallback=function isc_MiniDateRangeItem_rangeDialogCallback(_1){if(!this.$10y(_1))return;this.displayValue(_1)}
+,isc.A.hasAdvancedCriteria=function isc_MiniDateRangeItem_hasAdvancedCriteria(){return this.rangeItem!=null&&this.rangeItem.hasAdvancedCriteria()}
+,isc.A.getCriterion=function isc_MiniDateRangeItem_getCriterion(){var _1=this.rangeItem?this.rangeItem.getCriterion():null;return _1}
+,isc.A.setCriterion=function isc_MiniDateRangeItem_setCriterion(_1){if(this.rangeItem){this.rangeItem.setCriterion(_1);var _2=this.rangeItem.getValue();this.setValue(_2,null,true)}}
+,isc.A.canEditCriterion=function isc_MiniDateRangeItem_canEditCriterion(_1){return this.rangeItem?this.rangeItem.canEditCriterion(_1):false}
+,isc.A.setValue=function isc_MiniDateRangeItem_setValue(_1,_2,_3){this.updateStoredDates(_1);if(!_3){this.rangeItem.setFromDate(this.fromDate);this.rangeItem.setToDate(this.toDate)}
+var _4=[this.getValue()];this.Super("setValue",_4,arguments)}
+,isc.A.updateStoredDates=function isc_MiniDateRangeItem_updateStoredDates(_1){if(_1!=null){if(isc.DataSource.isAdvancedCriteria(_1)){var _2={};for(var i=0;i<_1.criteria.length;i++){var _4=_1.criteria[i];if(_4.operator=="greaterThan"||_4.operator=="greaterOrEqual")
+_2.start=_4.value;else if(_4.operator=="lessThan"||_4.operator=="lessOrEqual")
+_2.end=_4.value}
+_1=_2}
+this.fromDate=_1.start;this.toDate=_1.end}else{this.fromDate=null;this.toDate=null}}
+,isc.A.saveValue=function isc_MiniDateRangeItem_saveValue(){this.Super("saveValue",arguments);this.updateStoredDates(this._value)}
+,isc.A.displayValue=function isc_MiniDateRangeItem_displayValue(_1){var _2=this.mapValueToDisplay(_1)||"";this.setElementValue(_2,_1)}
+,isc.A.mapValueToDisplay=function isc_MiniDateRangeItem_mapValueToDisplay(_1){if(_1==null)return"";var _2=_1.start,_3=_1.end,_4=isc.RelativeDateItem,_5=(_4.isRelativeDate(_2)?_4.getAbsoluteDate(_2.value,null,null,"start"):_2),_6=(_4.isRelativeDate(_3)?_4.getAbsoluteDate(_3.value,null,null,"end"):_3);var _7;if(_5||_6){if(this.dateDisplayFormat){if(_5)_7=this.formatDate(_5);if(_6){if(_7)_7+=" - "+this.formatDate(_6);else _7=this.formatDate(_6)}}else _7=Date.getFormattedDateRangeString(_5,_6);if(!_5)_7=this.toDateOnlyPrefix+" "+_7;else if(!_6)_7=this.fromDateOnlyPrefix+" "+_7}
+this.prompt=_7||"";return this.prompt}
+,isc.A.getValue=function isc_MiniDateRangeItem_getValue(){if(!this.rangeItem)return;return this.rangeItem.getValue()}
+,isc.A.formatDate=function isc_MiniDateRangeItem_formatDate(_1){if(!isc.isA.Date(_1))return _1;var _2=this.getType(),_3=isc.SimpleType.inheritsFrom(_2,"date")&&!isc.SimpleType.inheritsFrom(_2,"datetime");return _1.toShortDate(this.$45i(),!_3)}
+,isc.A.getCriteriaValue=function isc_MiniDateRangeItem_getCriteriaValue(){return this.getCriterion()}
+,isc.A.destroy=function isc_MiniDateRangeItem_destroy(){if(this.rangeDialog)this.rangeDialog.markForDestroy();this.Super("destroy",arguments)}
+);isc.B._maxIndex=isc.C+16}}
+if(isc.Portal){isc.defineClass("EntityEditorHeader","VLayout");isc.A=isc.EntityEditorHeader.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.height=1;isc.A.padding=10;isc.A.border="2px solid black";isc.A.headerLayoutDefaults={_constructor:"VLayout",width:"100%",height:1,membersMargin:5};isc.A.headerLabelTitle="<B><H2>Editing ${entityType}</H2><br>"+"<H3>This UI lets you edit the entire data-structure for this Entity-type</H3></B>";isc.A.headerLabelDefaults={_constructor:"Label",width:"100%",height:30,autoParent:"headerLayout"};isc.A.showDetailLabel=false;isc.A.defaultDetailLabelTitle="<B><H3>This UI lets you edit the entire data-structure for this Entity-type</H3></B>";isc.A.detailLabelTitle="<B><H3>$entityComment</H3></B>";isc.A.detailLabelDefaults={_constructor:"Label",width:"100%",height:20,autoParent:"headerLayout"};isc.A.unknownEntityTitle="[Unknown Entity-type]";isc.B.push(isc.A.initWidget=function isc_EntityEditorHeader_initWidget(){var _1=this.headerLabelTitle;var _2=this.detailLabelTitle;if(this.dataSource)this.getDataSource(this.dataSource);if(!this.entityName)this.entityName=this.getEntityName(this.dataSource);if(!this.entityComment)this.entityComment=this.getEntityComment(this.dataSource);if(this.entityName)
+_1=_1.evalDynamicString(this,{entityType:this.entityName});if(this.entityComment)
+_2=_2.evalDynamicString(this,{entityType:this.entityComment});this.headerLayout=this.addAutoChild("headerLayout");this.headerLabel=this.addAutoChild("headerLabel",{contents:_1});this.detailLabel=this.addAutoChild("detailLabel",{contents:_2});this.headerLayout.addMembers([this.headerLabel,this.detailLabel]);this.addMember(this.headerLayout)}
+,isc.A.getEntityName=function isc_EntityEditorHeader_getEntityName(_1){var _2=this.unknownEntityTitle;if(_1){if(isc.isA.Function(_1.getEntityName))
+_2=_1.getEntityName();else _2=_1.ID}
+return _2}
+,isc.A.getEntityComment=function isc_EntityEditorHeader_getEntityComment(_1){var _2=this.defaultDetailLabelTitle;if(_1){if(isc.isA.Function(_1.getEntityComment))
+_2=_1.getEntityComment();else _2="Allows hierarchical editing of data in "+_1.ID+" DataSource"}
+return _2}
+);isc.B._maxIndex=isc.C+3;isc.defineClass("EntityEditorForm","Portlet");isc.A=isc.EntityEditorForm.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.addButtonDefaults={_constructor:"IButton",title:"Add",autoFit:true,layoutAlign:"right",click:function(){this.creator.addRecord()}};isc.A.formDefaults={_constructor:"DynamicForm",numCols:6,colWidths:["*","*","*","*","*","*"],width:"100%",implicitSave:true,initWidget:function(){this.Super("initWidget",arguments);if(this.record&&this.relation){var _1={};if(!this.relation.direction){_1[this.relation.baseFieldName]=this.record[this.relation.baseFieldName]}else{_1[this.relation.baseFieldName]=this.record[this.relation.relatedFieldName]}
+this.fetchData(_1)}},implicitSaveCallback:function(_1){if(!this.record||!this.record[this.relation.baseFieldName]){this.creator.setRecord(_1);this.setValues(_1);this.saveOperationType="update"}}};isc.B.push(isc.A.initWidget=function isc_EntityEditorForm_initWidget(){this.Super("initWidget",arguments);this.addAutoChild("addButton");this.addAutoChild("form",isc.addProperties({},this.formProperties,{dataSource:this.dataSource,title:this.title,record:this.record,relation:this.relation}));if(isc.isA.Portlet(this))this.addItems([this.addButton,this.form]);else this.addMembers([this.addButton,this.form])}
+,isc.A.fetchData=function isc_EntityEditorForm_fetchData(){var _1={};if(!this.relation.direction){if(this.isTopLevel())
+_1[this.relation.baseFieldName]=this.record[this.relation.baseFieldName]}else{_1[this.relation.baseFieldName]=this.record[this.relation.relatedFieldName]}
+this.form.fetchData(_1)}
+,isc.A.addRecord=function isc_EntityEditorForm_addRecord(){var _1={};if(!this.relation.direction){if(!this.isTopLevel())
+_1[this.relation.baseFieldName]=this.record[this.relation.baseFieldName]}else{_1[this.relation.baseFieldName]=this.record[this.relation.relatedFieldName]}
+this.record=_1;this.form.editNewRecord(_1)}
+,isc.A.isTopLevel=function isc_EntityEditorForm_isTopLevel(){return this.relation.relatedDS==null}
+,isc.A.setRecord=function isc_EntityEditorForm_setRecord(_1){if(this.isTopLevel()){this.creator.updateTopLevel()}else{this.fetchData()}
+this.record=_1;this.form.record=_1;if(this.addButton)this.addButton.setDisabled(this.record==null)}
+,isc.A.getData=function isc_EntityEditorForm_getData(){return null}
+,isc.A.getCriteria=function isc_EntityEditorForm_getCriteria(){return this.form.getValuesAsCriteria()}
+,isc.A.enterSearchMode=function isc_EntityEditorForm_enterSearchMode(_1){this.addButton.setDisabled(true);this.record=this.form.record=null;this.form.implicitSave=false;this.form.setData([]);if(_1)this.form.setValues(_1)}
+,isc.A.exitSearchMode=function isc_EntityEditorForm_exitSearchMode(){}
+);isc.B._maxIndex=isc.C+9;isc.defineClass("EntityEditorGrid","Portlet");isc.A=isc.EntityEditorGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.addButtonDefaults={_constructor:"IButton",title:"Add",autoFit:true,layoutAlign:"right",click:function(){this.creator.addRecord()}};isc.A.gridDefaults={_constructor:"ListGrid",width:"100%",height:"100%",autoFitMaxRecords:4,autoFetchData:false,canEdit:true,autoSaveEdits:true,initWidget:function(){if(this.record&&this.relation){this.initialCriteria={};this.initialCriteria[this.relation.baseFieldName]=this.record[this.relation.relatedFieldName]}
+this.Super("initWidget",arguments)}};isc.B.push(isc.A.initWidget=function isc_EntityEditorGrid_initWidget(){this.addAutoChild("addButton");if(!isc.isA.DataSource(this.dataSource))
+this.dataSource=isc.DS.get(this.dataSource);this.addAutoChild("grid",isc.addProperties({},this.gridProperties,{dataSource:this.dataSource,title:this.title,record:this.record,relation:this.relation}));if(this.record)this.fetchData();if(this.addButton)this.addButton.setDisabled(this.record==null);if(isc.isA.Portlet(this))this.addItems([this.addButton,this.grid]);else this.addMembers([this.addButton,this.grid]);this.Super("initWidget",arguments)}
+,isc.A.setData=function isc_EntityEditorGrid_setData(_1){}
+,isc.A.fetchData=function isc_EntityEditorGrid_fetchData(){var _1={};if(this.record){_1[this.relation.baseFieldName]=this.record[this.relation.relatedFieldName]}
+this.grid.fetchData(_1)}
+,isc.A.addRecord=function isc_EntityEditorGrid_addRecord(){var _1={};_1[this.relation.baseFieldName]=this.record[this.relation.relatedFieldName];this.grid.startEditingNew(_1)}
+,isc.A.setRecord=function isc_EntityEditorGrid_setRecord(_1){this.record=_1;this.fetchData();if(this.addButton)this.addButton.setDisabled(this.record==null)}
+,isc.A.getData=function isc_EntityEditorGrid_getData(){return null}
+,isc.A.getCriteria=function isc_EntityEditorGrid_getCriteria(){return this.grid.getFilterEditorCriteria()}
+,isc.A.enterSearchMode=function isc_EntityEditorGrid_enterSearchMode(_1){this.addButton.setDisabled(true);this.record=this.grid.record=null;this.grid.setData([]);this.grid.setShowFilterEditor(true);if(_1)this.grid.setCriteria(_1)}
+,isc.A.exitSearchMode=function isc_EntityEditorGrid_exitSearchMode(){}
+);isc.B._maxIndex=isc.C+9;isc.defineClass("EntityEditor","VLayout");isc.A=isc.EntityEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.membersMargin=10;isc.A.padding=10;isc.A.dataSource="";isc.A.modeFormDefaults={_constructor:"DynamicForm",height:1,width:"100%",fields:[{name:"edit",title:"options",defaultToFirstOption:true,valueMap:["Edit","Search"],changed:function(_1,_2,_3){_1.creator.setMode(_3)}}]};isc.A.formEntityDefaults={_constructor:"EntityEditorForm",height:1,width:"100%"};isc.A.gridEntityDefaults={_constructor:"EntityEditorGrid",height:1,width:"100%"};isc.A.showTabset=false;isc.A.tabsetDefaults={_constructor:"TabSet",width:"100%",height:"100%"};isc.A.portalDefaults={_constructor:"PortalLayout",width:"100%",height:"100%",showColumnMenus:false,numColumns:1};isc.B.push(isc.A.getDataSourceHierarchy=function isc_EntityEditor_getDataSourceHierarchy(_1,_2){var _3=[];if(!isc.isA.DataSource(_1))
+_1=isc.DS.getDataSource(_1);if(!isc.isA.DataSource(_1)){this.logWarn("No datasource provided..");return _3}
+if(!_2)_2=[];if(_2.contains(_1.ID)){return null}
+var _4=isc.getValues(_1.getFields()),_5=[];for(var i=0;i<_4.length;i++){if(_4[i].foreignKey!=null){_5.add(_4[i])}}
+var _7=_1.ID,_8=[],_9=[];isc.DS.registerDataSource(_1);var _10=_1.getChildDataSources();if(_10){for(var i=0;i<_10.length;i++){var _11=_10[i],_12=isc.getValues(_11.getFields());for(var j=0;j<_12.length;j++){var _14=_12[j];if(!_14.foreignKey||isc.DS.getForeignDSName(_14,_11)!=_1.ID)continue;var _15=isc.DS.getForeignFieldName(_14,_11);var _16=_4.find("name",_15);if(_16&&_14.entityEditMode!="picker"){var _17=_7,_18=_16.name,_19=_11.ID,_20=_14.name,_21=_16.relationArity,_22="out";if(!_2.contains(_19)){_3.add({baseDS:_19,baseFieldName:_20,relatedDS:_17,relatedFieldName:_18,relationArity:_16.relationArity})}}}}}
+for(var j=0;j<_5.length;j++){var _16=_5[j];if(!_16.foreignKey)continue;var _23=isc.DS.getForeignFieldName(_16,_1),_11=isc.DS.getDataSource(isc.DS.getForeignDSName(_16,_1)),_12=isc.getValues(_11.getFields());var _14=_12.find("name",_23);if(_14&&_16.entityEditMode!="picker"){var _17=_7,_18=_16.name,_19=this.getDSName(_11),_20=_14.name,_21=_16.relationArity,_22="out";if(!_2.contains(_19)){_3.add({baseDS:_19,baseFieldName:_20,relatedDS:_17,relatedFieldName:_18,relationArity:_21,direction:_22})}}}
+return _3}
+,isc.A.getDSName=function isc_EntityEditor_getDSName(_1){if(isc.isA.String(_1))return _1;if(isc.isA.DataSource(_1))return _1.ID;return null}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.EntityEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_EntityEditor_initWidget(){this.vertical=true;if(!isc.isA.DataSource(this.dataSource))
+this.dataSource=isc.DS.getDataSource(this.dataSource);if(!this.dataSource)this.logWarn("No dataSource provided - no entity to edit");else this.entityTree=this.getEntityTree();this.addAutoChild("modeForm");this.addAutoChild("tabset");this.addAutoChild("portal");this.addMember(this.modeForm);if(this.tabset)this.addMember(this.tabset);if(this.portal)this.addMember(this.portal)}
+,isc.A.getEntityTree=function isc_EntityEditor_getEntityTree(){if(!isc.isA.DataSource(this.dataSource))
+return{baseDS:"NoDSProvided",relations:[]};var _1={baseDS:this.dataSource.ID,baseFieldName:this.dataSource.getPrimaryKeyFieldNames()[0],relations:[]};_1.relations=this.getDataSourceHierarchy(this.dataSource);return _1}
+,isc.A.fetchDataByPK=function isc_EntityEditor_fetchDataByPK(_1){if(!this.dataSource)return;var _2=this;this.dataSource.fetchData(_1,function(_3,_4){_2.fetchDataReply(_4)})}
+,isc.A.fetchDataReply=function isc_EntityEditor_fetchDataReply(_1){this.clearEntity();this.record=_1[0];this.showEntity()}
+,isc.A.clearEntity=function isc_EntityEditor_clearEntity(){if(this.entities&&this.entities.length>0){if(this.showTabset){for(var i=this.tabset.tabs.length-1;i>=0;i--){this.entities[i].markForDestroy();this.tabset.removeTab(i)}}else if(this.portal){this.portal.members.removeAll();for(var i=this.entities.length-1;i>=0;i--){this.entities[i].markForDestroy()}}else{for(var i=this.members.length-1;i>=1;i--){this.removeMember(i);this.entities[i-1].markForDestroy()}}}
+this.entities=[];this.record=null}
+,isc.A.showEntity=function isc_EntityEditor_showEntity(){var _1=this.entityTree;if(!this.entities)this.entities=[];if(!this.entityTree)return;this.addEditor(_1);this.topLevelComponent=this.entities[0];if(_1&&_1.relations&&_1.relations.length>0){for(var i=0;i<_1.relations.length;i++){var _3=_1.relations[i];if(this.shouldShowEntity(_3.baseDS)){if(_3.relationArity=="one"){this.addEditor(_3)}else{this.addGrid(_3)}}}}}
+,isc.A.updateTopLevel=function isc_EntityEditor_updateTopLevel(){for(var i=1;i<this.entities.length;i++){this.entities[i].setRecord(this.topLevelComponent.record)}}
+,isc.A.getData=function isc_EntityEditor_getData(){return[]}
+,isc.A.getDataSourceSpec=function isc_EntityEditor_getDataSourceSpec(_1,_2){if(this.dataSources){var _3=this.dataSources[_1];if(!_3)_3=this.dataSources[_1+"!"+_2];return _3}
+return null}
+,isc.A.getRelatedEditorProperties=function isc_EntityEditor_getRelatedEditorProperties(_1,_2){var _3=this.getDataSourceSpec(_1,_2);if(_3)return _3.editorProperties;return null}
+,isc.A.shouldShowEntity=function isc_EntityEditor_shouldShowEntity(_1){if(this.dataSources){var _2=this.dataSources[_1],_3;if(_2===_3)return true;return(_2!==null)}
+return true}
+,isc.A.addEditor=function isc_EntityEditor_addEditor(_1){var _2=this.createAutoChild("formEntity",{height:"100%",width:"100%",dataSource:_1.baseDS,title:this.getEntityTitle(_1),record:this.record,relation:_1,formProperties:this.getRelatedEditorProperties(_1.baseDS,_1.relatedFieldName)});this.addEntityLink(_2);this.logWarn("adding linked single-record entity")}
+,isc.A.addGrid=function isc_EntityEditor_addGrid(_1){var _2=this.createAutoChild("gridEntity",{height:"100%",width:"100%",dataSource:_1.baseDS,title:this.getEntityTitle(_1),record:this.record,relation:_1,gridProperties:this.getRelatedEditorProperties(_1.baseDS,_1.relatedFieldName)});this.addEntityLink(_2);this.logWarn("added linked multiple-record entity")}
+,isc.A.addEntityLink=function isc_EntityEditor_addEntityLink(_1){this.entities.add(_1);if(this.showTabset){this.addEntityTab(_1)}else{var _2=_1.relation,_3=this.getDataSourceSpec(_2.baseDS,_2.relatedFieldName),_4=(_3&&_3.rowNum!=null?_3.rowNum:-1),_5=(_3&&_3.offsetInRow!=null?_3.offsetInRow:-1);if(this.portal){if(_3&&_3.userHeight!=null)_1.$po=_3.userHeight;if(_4!=-1){this.portal.getColumn(0).addPortletToExistingRow(_1,_4,_5)}else{this.portal.getColumn(0).addPortlet(_1)}}
+else this.addMember(_1)}}
+,isc.A.getEntityName=function isc_EntityEditor_getEntityName(_1){var _2=this.getDSName(_1.baseDS),_3=this.getDSName(_1.relatedDS),_4=_1.relatedFieldName||_1.baseFieldName;return _2+"_"+_4}
+,isc.A.getEntityTitle=function isc_EntityEditor_getEntityTitle(_1){var _2=this.getDataSourceSpec(_1.baseDS,_1.baseFieldName),_3=this.getDSName(_1.baseDS),_4=this.getDSName(_1.relatedDS),_5=_1.relatedFieldName||_1.baseFieldName,_6;if(_2&&_2.entityTitle){_6=_2.entityTitle}else if(!_4){_6=isc.DS.getAutoTitle(_3)}else if(_3!=_4){_6=isc.DS.getAutoTitle(_3)}else{_6=isc.DS.getAutoTitle(_5)}
+return _6}
+,isc.A.addEntityTab=function isc_EntityEditor_addEntityTab(_1){var _2=this.getEntityName(_1.relation),_3=this.getEntityTitle(_1.relation);if(_1){_1.setWidth("100%");_1.setHeight("100%")}
+this.tabset.addTab({name:_2,title:_3,pane:_1,relation:_1.relation})}
+,isc.A.setMode=function isc_EntityEditor_setMode(_1){var i,_3;if(_1=="Search"){if(this.entities&&this.entities.length>0){for(i=0;i<this.entities.length;i++){_3=this.entities[i];if(isc.isA.EntityEditorGrid(_3)){_3.enterSearchMode(this.getEntityCriteria(_3));_3.markForRedraw()}else if(isc.isA.EntityEditorForm(_3)){_3.enterSearchMode(this.getEntityCriteria(_3));_3.markForRedraw()}}}}else{if(!this.entityCriteria)this.entityCriteria={};if(this.entities&&this.entities.length>0){for(i=0;i<this.entities.length;i++){_3=this.entities[i];var _4=_3.getCriteria();if(_4){this.entityCriteria[_3.getID()]={relation:_3.relation,criteria:_4}}}}}}
+,isc.A.getEntityCriteria=function isc_EntityEditor_getEntityCriteria(_1){if(this.entityCriteria){return this.entityCriteria[_1.getID()]}
+return null}
+);isc.B._maxIndex=isc.C+19}
+if(isc.ReportBuilder){isc.defineClass("ReportChooserItem","ComboBoxItem");isc.A=isc.ReportChooserItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.title="Report";isc.A.optionDataSource=isc.ReportBuilder.defaultDataSource;isc.A.valueField=isc.ReportBuilder.reportIdField;isc.A.displayField=isc.ReportBuilder.reportNameField;isc.A.categoryField=isc.ReportBuilder.reportCategoryField;isc.A.pickListWidth=250;isc.A.pickListProperties={showHeader:false,overFlow:"visible",groupStartOpen:"all",retainOpenStateOnRegroup:false,dataFetchMode:"local",dataProperties:{dataArrived:function(_1,_2){var _3=this.localData,_4={reportId:-299,reportName:"Configure...",reportCategory:"Configuration"};_3.add(_4);var _5=window[this.componentId];if(_5&&_5.regroup){_5.regroup()}}}};isc.B.push(isc.A.init=function isc_ReportChooserItem_init(){this.pickListFields=[{name:this.valueField,showIf:"false"},{name:this.categoryField,showIf:"false"},{name:this.displayField,title:"Report Name",width:"100%"}];this.pickListProperties.autoFitFieldWidths=false;this.pickListProperties.groupByField=this.categoryField}
+,isc.A.change=function isc_ReportChooserItem_change(_1,_2,_3,_4){if(this.grid&&_3==-299){isc.ReportBuilder.showReportBuilder(this.grid,this.getID()+".reportBuilderReply()");if(this.pickList)this.pickList.invalidateCache();return false}else return true}
+,isc.A.changed=function isc_ReportChooserItem_changed(_1,_2,_3){var _4=this.getSelectedRecord();if(this.grid&&_4&&_4.reportId!=-299){isc.ReportBuilder.setLinkedGridState(_4,this.grid)}}
+,isc.A.reportBuilderReply=function isc_ReportChooserItem_reportBuilderReply(){this.pickList.invalidateCache();this.setValue(null)}
+);isc.B._maxIndex=isc.C+4}
+isc._moduleEnd=isc._Forms_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Forms module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Forms'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Forms.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Forms.js.gz
new file mode 100755
index 0000000..6c6ccd9
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Forms.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Foundation.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Foundation.js
new file mode 100755
index 0000000..707c564
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Foundation.js
@@ -0,0 +1,1281 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_Foundation){isc.module_Foundation=1;isc._moduleStart=isc._Foundation_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'Foundation load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.ClassFactory.defineClass("Animation");isc.A=isc.Animation;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.interval=40;isc.A.registry=[];isc.A.animateTime=1000;isc.B.push(isc.A.smoothStart=function isc_c_Animation_smoothStart(_1){return Math.pow(_1,2)}
+,isc.A.smoothEnd=function isc_c_Animation_smoothEnd(_1){return 1-Math.abs(Math.pow(_1-1,2))}
+,isc.A.smoothStartEnd=function isc_c_Animation_smoothStartEnd(_1){return(-Math.cos(_1*Math.PI)+1)/2.0}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.Animation;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$0c="ratio,ID,earlyFinish";isc.B.push(isc.A.generateAnimationID=function isc_c_Animation_generateAnimationID(){if(!this.$0d)this.$0d=0;return"_"+(this.$0d++)}
+,isc.A.timeoutAction=function isc_c_Animation_timeoutAction(){if(isc.Animation)isc.Animation.fireTimer()}
+,isc.A.registerAnimation=function isc_c_Animation_registerAnimation(_1,_2,_3,_4){if(!this.$0e){this.$0e=isc.Timer.setTimeout(this.timeoutAction,this.interval);this.$0f=isc.timeStamp()}
+if(!_4)_4=this;if(!_2)_2=this.animateTime;if(isc.isA.String(_3)){if(!isc.Animation.accelerationMap){isc.Animation.accelerationMap={smoothStart:isc.Animation.smoothStart,smoothEnd:isc.Animation.smoothEnd,smoothStartEnd:isc.Animation.smoothStartEnd}}
+_3=isc.Animation.accelerationMap[_3]}
+var _5=this.generateAnimationID();this.registry.add({ID:_5,target:_4,callback:_1,duration:_2,elapsed:0,totalFrames:Math.round(_2/ this.interval),currentFrame:0,maxDuration:_2*3,acceleration:_3});return _5}
+,isc.A.clearAnimation=function isc_c_Animation_clearAnimation(_1){for(var i=0;i<this.registry.length;i++){if(this.registry[i]&&this.registry[i].ID==_1){this.registry.removeAt(i);break}}}
+,isc.A.finishAnimation=function isc_c_Animation_finishAnimation(_1){for(var i=0;i<this.registry.length;i++){if(this.registry[i]&&this.registry[i].ID==_1){var _3=this.registry[i];break}}
+this.clearAnimation(_1);if(_3)this.fireAction(_3,1,true)}
+,isc.A.fireTimer=function isc_c_Animation_fireTimer(){var _1=isc.timeStamp(),_2=(_1-this.$0f),_3=Math.max(0,this.interval-(_2-this.interval));this.$0e=isc.Timer.setTimeout(this.timeoutAction,_3);this.$0f=_1;for(var i=0;i<this.registry.length;i++){var _5=this.registry[i];if(_5==null)continue;_5.elapsed+=_2;var _6=_5.currentFrame+1;if(!isc.Animation.timeBased&&((_5.elapsed/ _5.maxDuration)>(_6/ _5.totalFrames)))
+{_6=Math.min(_5.totalFrames,Math.ceil((_5.elapsed/ _5.maxDuration)*_5.totalFrames))}
+_5.currentFrame=_6;var _7=isc.Animation.timeBased?_5.elapsed/ _5.duration:_5.currentFrame/ _5.totalFrames;var _8=_7,_9=_5.acceleration;if(_9&&isc.isA.Function(_9)){try{_8=_5.acceleration(_8)}catch(e){this.logWarn("Custom ratio function for animation:"+isc.Log.echoAll(_5)+"\nCaused an error:"+(e.message?e.message:e));_5.acceleration=null}}
+if(_7>=1){_8=1;this.registry[i]=null}
+var _10=null;try{_10=this.fireAction(_5,_8)}catch(e){_10=e}
+if(_10!=null){this.logWarn("Attempt to fire registered animation:"+isc.Log.echoAll(_5)+"\nCaused an error:"+(_10.message?_10.message:_10));this.registry[i]=null}
+if(_7>=1){this.logDebug("animation "+_5.ID+" completed","animation")}}
+this.registry.removeEmpty();if(this.registry.length==0){isc.Timer.clearTimeout(this.$0e);this.$0e=null}}
+,isc.A.fireAction=function isc_c_Animation_fireAction(_1,_2,_3){var _4=_1.target;if(!_4||_4.destroyed){return"No valid target. Target may have been destroyed since animation commenced"}
+_4.fireCallback(_1.callback,this.$0c,[_2,_1.ID,_3])}
+,isc.A.isActive=function isc_c_Animation_isActive(){return(this.registry&&this.registry.length>0)}
+);isc.B._maxIndex=isc.C+8;isc.A=isc.Canvas.getPrototype();isc.A.animateTime=300;isc.A.animateAcceleration="smoothEnd";isc.A.$0g=["rect","fade","scroll","show","hide"];isc.A.animateShowEffect="wipe";isc.A.animateHideEffect="wipe";isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$0h={};isc.A.$0i={};isc.A.$0j={};isc.A.$747="Animation";isc.A.$0k={};isc.A.$0l={};isc.A.$743=0;isc.A.$0m="move";isc.A.$nx="resize";isc.A.$0n="rect";isc.A.$do="show";isc.A.$0o="slide";isc.A.$0p="wipe";isc.A.$0q="fade";isc.A.$0r="fly";isc.A.$0s="T";isc.A.$0t="L";isc.A.$0u={slide:"show",wipe:"show",fly:"move",fade:"fade"};isc.A.$zb="hide";isc.A.$0v={slide:"hide",wipe:"hide",fly:"move",fade:"fade"};isc.B.push(isc.A.registerAnimation=function isc_Canvas_registerAnimation(_1,_2,_3){if(!_3)_3=this.animationAcceleration;if(!_2)_2=this.animateTime;return isc.Animation.registerAnimation(_1,_2,_3,this)}
+,isc.A.cancelAnimation=function isc_Canvas_cancelAnimation(_1){isc.Animation.clearAnimation(_1)}
+,isc.A.getAnimateTime=function isc_Canvas_getAnimateTime(_1){if(!isc.isA.String(_1)||isc.isAn.emptyString(_1))return this.animateTime;if(!this.$0h[_1]){this.$0h[_1]="animate"+_1.substring(0,1).toUpperCase()+_1.substring(1)+"Time"}
+return this[this.$0h[_1]]||this.animateTime}
+,isc.A.getAnimateAcceleration=function isc_Canvas_getAnimateAcceleration(_1){if(!isc.isA.String(_1)||isc.isAn.emptyString(_1))return this.animateAcceleration;if(!this.$0i[_1]){this.$0i[_1]="animate"+_1.substring(0,1).toUpperCase()+_1.substring(1)+"Acceleration"}
+return this[this.$0i[_1]]||this.animateAcceleration}
+,isc.A.$0w=function isc_Canvas__getAnimationID(_1){if(!this.$0j[_1]){this.$0j[_1]=_1+this.$747}
+return this.$0j[_1]}
+,isc.A.$0x=function isc_Canvas__getAnimationMethodName(_1){if(!this.$0k[_1]){this.$0k[_1]="fireAnimation"+_1.substring(0,1).toUpperCase()+_1.substring(1)}
+return this.$0k[_1]}
+,isc.A.$0y=function isc_Canvas__startAnimation(_1,_2,_3,_4){var _5=this.$0w(_1);if(this[_5])this.finishAnimation(_1);if(!this.$0l[_1]){this.$0l[_1]="$"+_1+"AnimationInfo"}
+this[this.$0l[_1]]=_2;if(_3==null)_3=this.getAnimateTime(_1);if(_4==null)_4=this.getAnimateAcceleration(_1);var _6=this[_5]=this.registerAnimation(this[this.$0x(_1)],_3,_4);if(this.logIsInfoEnabled("animation")){this.logInfo("starting animation "+_6+" of type: "+_1+", duration: "+_3+", acceleration: "+this.echoLeaf(_4),"animation")}
+this.$743++;return _6}
+,isc.A.$744=function isc_Canvas__clearAnimationInfo(_1){var _2=this.$0w(_1);if(!this[_2]){return}
+delete this[_2];delete this[this.$0l[_1]];this.$743--}
+,isc.A.animationComplete=function isc_Canvas_animationComplete(_1){}
+,isc.A.$0z=function isc_Canvas__fireAnimationCompletionCallback(_1,_2,_3){if(!_1)return;var _4=this;var _5=function(){_4.fireCallback(_1,"earlyFinish",[_2]);_4.animationComplete(_2)}
+if(_2||_3){_5()}else{isc.Timer.setTimeout(_5,0)}}
+,isc.A.finishAnimation=function isc_Canvas_finishAnimation(_1){if(_1==null){for(var i=0;i<this.$0g.length;i++){this.finishAnimation(this.$0g[i])}
+return}
+var _3=this.$0w(_1);if(!this[_3])return;if(this.logIsInfoEnabled("animation")){this.logInfo("manual finish for animations: "+this.echoAll(this[_3])+(this.logIsDebugEnabled("animation")?this.getStackTrace():""),"animation")}
+isc.Animation.finishAnimation(this[_3])}
+,isc.A.animateMove=function isc_Canvas_animateMove(_1,_2,_3,_4,_5){return this.animateRect(_1,_2,null,null,_3,_4,_5,this.$0m)}
+,isc.A.fireAnimationMove=function isc_Canvas_fireAnimationMove(_1,_2,_3){return this.fireAnimationRect(_1,_2,_3,this.$0m)}
+,isc.A.animateResize=function isc_Canvas_animateResize(_1,_2,_3,_4,_5){return this.animateRect(null,null,_1,_2,_3,_4,_5,this.$nx)}
+,isc.A.fireAnimationResize=function isc_Canvas_fireAnimationResize(_1,_2,_3){return this.fireAnimationRect(_1,_2,_3,this.$nx)}
+,isc.A.animateRect=function isc_Canvas_animateRect(_1,_2,_3,_4,_5,_6,_7,_8){if(_8==null){_8=this.$0n;if(this.resizeAnimation!=null)this.finishAnimation(this.$nx);if(this.moveAnimation!=null)this.finishAnimation(this.$0m)}
+var _9={$00:this.getRect(),_left:_1,_top:_2,$02:_3,$o8:_4,$03:_5};return this.$0y(_8,_9,_6,_7)}
+,isc.A.fireAnimationRect=function isc_Canvas_fireAnimationRect(_1,_2,_3,_4){var _5=(_4==this.$nx?this.$resizeAnimationInfo:(_4==this.$0m?this.$moveAnimationInfo:this.$rectAnimationInfo)),_6=_5.$00,_7=_5._left,_8=_5._top,_9=_5.$02,_10=_5.$o8,_11=_7!=null?this.$04(_6[0],_7,_1):null,_12=_8!=null?this.$04(_6[1],_8,_1):null;var _13,_14;if(_9!=null&&_11!=null&&(_7-_6[0]!=0)){var _15=(_9-_6[2])/(_7-_6[0]);if(Math.floor(_15)==_15){_13=_6[2]+(_15*(_11-_6[0]))}}
+if(_10!=null&&_12!=null&&(_8-_6[1]!=0)){var _15=(_10-_6[3])/(_8-_6[1]);if(Math.floor(_15)==_15){_14=_6[3]+(_15*(_12-_6[1]))}}
+if(_13==null&&_9!=null){_13=this.$04(_6[2],_9,_1)}
+if(_14==null&&_10!=null){_14=this.$04(_6[3],_10,_1)}
+if(_1==1){if(_4==null)_4="rect";this.$744(_4)}
+this.setRect(_11,_12,_13,_14,(_1<1));if(this.isDirty())this.redraw("animated resize");if(_1==1){this.$0z(_5.$03,_3)}}
+,isc.A.$04=function isc_Canvas__getRatioTargetValue(_1,_2,_3){if(_2==null)return _1;return(_1+Math.floor(_3*(_2-_1)))}
+,isc.A.animateFade=function isc_Canvas_animateFade(_1,_2,_3,_4){if(!this.isDrawn()){this.setOpacity(_1);this.$0z(_2,true);return}
+if(this.visibility==isc.Canvas.HIDDEN){this.setOpacity(0);this.show()}
+if(_1==null)_1=100;var _5={$05:this.opacity!=null?this.opacity:100,$06:_1,$03:_2};return this.$0y("fade",_5,_3,_4)}
+,isc.A.fireAnimationFade=function isc_Canvas_fireAnimationFade(_1,_2,_3){var _4=this.$fadeAnimationInfo,_5=_4.$05,_6=_4.$06;var _7=this.$04(_5,_6,_1);if(isc.Browser.isIE&&_7>0&&!_4.$07){var _8=this.getStyleHandle();if(_8){_8.visibility=isc.Canvas.VISIBLE;_8.visibility=isc.Canvas.INHERIT}
+var _9=this.peers;if(_9&&_9.length>0){for(var i=0;i<_9.length;i++){if(_9[i].$nt){var _8=_9[i].getStyleHandle();if(_8){_8.visibility=isc.Canvas.VISIBLE;_8.visibility=isc.Canvas.INHERIT}}}}
+_4.$07=true}
+if(_1==1){this.$744("fade")}
+this.setOpacity(_7,(_1<1));if(_1==1)this.$0z(_4.$03,_3)}
+,isc.A.animateScroll=function isc_Canvas_animateScroll(_1,_2,_3,_4,_5){var _6=this.overflow;if(this.overflow==isc.Canvas.VISIBLE)return;var _7={$08:this.getScrollLeft(),$09:this.getScrollTop(),$1a:_1,$1b:_2,$03:_3};return this.$0y("scroll",_7,_4,_5)}
+,isc.A.fireAnimationScroll=function isc_Canvas_fireAnimationScroll(_1,_2,_3){var _4=this.$scrollAnimationInfo,_5=_4.$08,_6=_4.$1a,_7=_4.$09,_8=_4.$1b,_9=this.$04(_5,_6,_1),_10=this.$04(_7,_8,_1);if(_1==1){this.$744("scroll")}
+this.scrollTo(_9,_10,null,(_1<1));if(_1==1&&_4.$03){this.$0z(_4.$03,_3)}}
+,isc.A.animateShow=function isc_Canvas_animateShow(_1,_2,_3,_4){if(_1==null)_1=this.animateShowEffect;var _5;if(isc.isAn.Object(_1)){_5=_1;_1=_1.effect}
+if(this.$va!=null)this.finishAnimation(this.$va);if(this.isDrawn()&&this.isVisible()){return}
+if(this.$vc!=null){return}
+if(!this.isDrawn()){if(this.parentElement&&!this.parentElement.isDrawn()){this.show();this.logInfo("not animating show, component not drawn","animation");this.animateShowComplete(true);return}else{this.draw()}}
+this.$vc=this.$0u[_1]||this.$do;this.$1c=_2;if(!this.$1d)
+this.$1d={target:this,methodName:"animateShowComplete"}
+if(_1==this.$0q){var _6=this.opacity;this.$1e=_2;this.setOpacity(0);this.show();if(_3==null)_3=this.animateShowTime;if(_4==null)_4=this.animateShowAcceleration;return this.animateFade(_6,this.$1d,_3,_4)}else if(_1==this.$0r){if(this.parentElement!=null){this.logInfo("animateShow() called with 'fly' effect - not supported for child widgets"+" defaulting to standard 'wipe' animation instead.","animation");_1=this.$0p}else{if(_3==null)_3=this.animateShowTime;if(_4==null)_4=this.animateShowAcceleration;var _7=this.isRTL(),_8=this.getLeft(),_9=_7?isc.Page.getWidth()+isc.Page.getScrollLeft():0-this.getVisibleWidth();this.$58w=this._percent_left,this.setLeft(_9);this.show();return this.animateMove(_8,null,this.$1d,_3,_4)}}
+if(!this.$1f(_1)){this.logInfo("not animating show, can't do clip animations","animation");this.show();this.animateShowComplete(true);return}
+if(this.isVisible())this.hide();var _10=this.getVisibleHeight(),_11=this.getVisibleWidth(),_12=_5?_5.startFrom==this.$0s:true,_13=(_12?this.getScrollTop():this.getScrollLeft()),_14=(_1=="slide"),_15={$po:this.$po,$1g:this.getHeight(),$1h:_10,$pn:this.$pn,$1i:this.getWidth(),$1j:_11,$58x:this._percent_width,$58y:this._percent_height,$1k:this.overflow,$1l:_12,$1m:_13,$1n:_14,$03:this.$1d};if(_12){if(this.vscrollOn&&this.vscrollbar){_15.$495=this.vscrollbar.thumb.getTop();_15.$496=this.vscrollbar.thumb.getHeight();if(this.vscrollbar.thumb){this.vscrollbar.thumb.$jq=false;this.vscrollbar.thumb.$493=true}
+this.vscrollbar.$494=true;this.vscrollbar.$493=true;this.vscrollbar.setHeight(1)}
+if(this.hscrollOn&&this.hscrollbar){this.hscrollbar.$493=true;if(this.hscrollbar.thumb)this.hscrollbar.thumb.$493=true;if(!_15.$1n){this.hscrollbar.$jq=false}else{this.hscrollbar.setTop(this.getTop());this.hscrollbar.setHeight(1)}}}else{if(this.hscrollOn&&this.hscrollbar){_15.$495=this.hscrollbar.thumb.getLeft();_15.$496=this.hscrollbar.thumb.getWidth();this.hscrollbar.$494=true;this.hscrollbar.$493=true;if(this.hscrollbar.thumb){this.hscrollbar.thumb.$jq=false;this.hscrollbar.thumb.$493=true}
+this.hscrollbar.setWidth(1)}
+if(this.vscrollOn&&this.vscrollbar){this.vscrollbar.$493=true;if(this.vscrollbar.thumb)this.vscrollbar.thumb.$493=true;if(!_15.$1n){this.vscrollbar.$jq=false}else{this.vscrollbar.setLeft(this.getLeft());this.vscrollbar.setWidth(1)}}}
+if(this.showEdges&&this.$l0){this.$l0.$za=true}
+if(this.overflow==isc.Canvas.VISIBLE){this.setOverflow(isc.Canvas.HIDDEN)}
+if(this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL){this.$417=true}
+this.resizeTo((_12?_11:1),(_12?1:_10),true);if(_14)this.scrollTo((_12?null:_13+(_11-1)),(_12?_13+(_10-1):null));if(this.showEdges&&this.$l0){if(_12)
+this.$u9(this.$l0.getHandle().firstChild.style,"height",_10);else
+this.$u9(this.$l0.getHandle().firstChild.style,"width",_11);this.$l0.setOverflow(isc.Canvas.HIDDEN);if(_14){if(_12){var _16=this.$l0.$td;this.$u9(this.getStyleHandle(),"marginTop",(this.getTopMargin()-_16))}else{var _16=this.$l0.$tb;this.$u9(this.getStyleHandle(),"marginLeft",(this.getLeftMargin()-_16))}}
+this.$l0.show()}else{var _17=_12?(this.hscrollOn?this.hscrollbar:null):(this.vscrollOn?this.vscrollbar:null),_18=_12?(this.vscrollOn?this.vscrollbar:null):(this.hscrollOn?this.hscrollbar:null);if(_17&&_15.$1n){_17.show();if(_18)_18.show()}else{this.show()}}
+return this.$0y(this.$do,_15,_3,_4)}
+,isc.A.fireAnimationShow=function isc_Canvas_fireAnimationShow(_1,_2,_3){var _4=this.$showAnimationInfo,_5=_4.$1l;if(_1<1){var _6=(_5?_4.$1h:_4.$1j),_7=this.$04(1,_6,_1),_8=_6-_7,_9=(this.showEdges&&this.$l0),_10,_11;if(_9){_10=(_4.$1n?(_5?this.$l0.$te:this.$l0.$tc):(_5?this.$l0.$td:this.$l0.$tb)),_11=(_4.$1n?(_5?this.$l0.$td:this.$l0.$tb):(_5?this.$l0.$te:this.$l0.$tc));this.$l0.resizeTo((_5?null:_7),(_5?_7:null),true);if(_4.$1n){if(_5)this.$l0.scrollToBottom();else this.$l0.scrollToRight()}
+if(_7<_10)return;if(_8<=_11){if(_4.$1n){var _12=(_5?"marginTop":"marginLeft"),_13=(_5?this.getTopMargin()-_8:this.getLeftMargin()-_8);this.$u9(this.getStyleHandle(),_12,_13);this.scrollTo((_5?null:_4.$1m),(_5?_4.$1o:null),null,true)}
+return}
+if(!this.isVisible()){this.$vd=true;this.show();delete this.$vd}}
+var _14=_5?this.vscrollOn:this.hscrollOn,_15=_5?this.hscrollOn:this.vscrollOn;if(_14){var _16;if(_5){_16=this.vscrollbar;if(_16)_16.resizeTo(null,_7)}else{_16=this.hscrollbar;var _17=_7;if(this.vscrollOn){if(_4.$1n){_17-=this.scrollbarSize}else{_17=Math.min(_7,_6-this.scrollbarSize)}}
+if(_17>0){if(_16)_16.resizeTo(_17,null)}}
+if(_4.$1n&&_16){if(_5)_16.scrollToBottom();else _16.scrollToRight()}
+if(_16&&_16.thumb){var _18=_16.thumb;if(_4.$1n){var _19=_4.$495-_8,_20=_19+Math.min(_7,_4.$496),_21=_5?this.getTop():this.getLeft();if(_20<=_21){}else{_19=Math.max(_21,_19);var _22=Math.min(_20-_19,_7);_18.resizeTo(_5?null:_22,_5?_22:null);if(_5)_18.scrollToBottom()
+else _18.scrollToRight();_18.moveTo(_5?null:_19,_5?_19:null);if(!_18.isVisible())_18.show()}}else{var _19=_4.$495,_20=Math.min((_19+_4.$496),(_5?this.getTop()+_7:this.getLeft()+_7));var _23=(_5?this.getTop():this.getLeft())+_7
+if(_23<=_19){}else{if(_5)_18.setHeight(_20-_19);else _18.setWidth(_20-_19);if(!_18.isVisible())_18.show()}}}}
+var _24=0;if(_15&&_25){var _25=_5?this.hscrollbar:this.vscrollbar;if(_4.$1n){var _26=_5?(this.getTop()+Math.max(0,(_7-this.scrollbarSize))):(this.getLeft()+Math.max(0,(_7-this.scrollbarSize)))
+_25.moveTo(_5?null:_26,_5?_26:null);var _27=Math.min(_7,this.scrollbarSize);_25.resizeTo(_5?null:_27,_5?_27:null);if(_5){_25.scrollToBottom();if(_25.thumb)_25.thumb.scrollToBottom()}else{_25.scrollToRight();if(_25.thumb)_25.thumb.scrollToRight()}
+if(_7>this.scrollbarSize&&!this.isVisible()){this.$vd=true;this.show();delete this.$vd}}else{if(_8<=this.scrollbarSize){if(!_25.isVisible())_25.show();_25.resizeTo(_5?null:this.scrollbarSize-_8,_5?this.scrollbarSize-_8:null)}}
+if(_25.isVisible()){_24=this.scrollbarSize-
+(_5?_25.getHeight():_25.getWidth())}else{_24=this.scrollbarSize}}
+var _28=_7;if(_9)_28+=_11;if(_24)_28+=_24
+if(!this.resizeTo((_5?null:_28),(_5?_28:null),true))
+{this.$5y()}
+if(_4.$1n){this.scrollTo((_5?null:_4.$1m+_8),(_5?_4.$1m+_8:null),null,true)}}else{if(!this.isVisible())this.show();this.$744("show");this.setOverflow(_4.$1k);if(this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL){delete this.$417;if(this.vscrollOn&&this.vscrollbar){if(this.vscrollbar.visibility==isc.Canvas.HIDDEN)this.vscrollbar.show();if(_5)delete this.vscrollbar.$494;delete this.vscrollbar.$493;this.vscrollbar.$jq=true;if(_4.$1n)this.vscrollbar.scrollTo(0,0);if(this.vscrollbar.thumb){delete this.vscrollbar.thumb.$493;this.vscrollbar.thumb.$jq=true;if(_4.$497)this.vscrollbar.thumb.scrollTo(0,0)}
+if(!_5){this.vscrollbar.setWidth(this.getScrollbarSize());this.vscrollbar.setThumb()}}
+if(this.hscrollOn&&this.hscrollbar){if(this.hscrollbar.visibility==isc.Canvas.HIDDEN)this.hscrollbar.show();if(!_5){delete this.hscrollbar.$494}else{this.hscrollbar.setHeight(this.getScrollbarSize());this.hscrollbar.setThumb()}
+delete this.hscrollbar.$493;this.hscrollbar.$jq=true;if(_4.$1n)this.hscrollbar.scrollTo(0,0);if(this.hscrollbar.thumb){delete this.hscrollbar.thumb.$493;this.hscrollbar.thumb.$jq=true;if(_4.$1n)this.hscrollbar.thumb.scrollTo(0,0)}}}
+if(this.showEdges&&this.$l0){if(_4.$1n){var _12=(_5?"marginTop":"marginLeft"),_13=(_5?this.getTopMargin():this.getLeftMargin());this.$u9(this.getStyleHandle(),_12,_13);this.$l0.scrollTo((_5?null:0),(_5?0:null))}
+if(_5)
+this.$l0.getHandle().firstChild.style.height="100%";else
+this.$l0.getHandle().firstChild.style.width="100%";this.$l0.setOverflow(isc.Canvas.VISIBLE);delete this.$l0.$za}
+if(!this.resizeTo(_4.$1i,_4.$1g)){this.$5y()}
+this.$pn=_4.$pn;this.$po=_4.$po;this._percent_width=_4.$58x;this._percent_height=_4.$58y;if(_4.$1n)this.scrollTo((_5?null:_4.$1m),(_5?_4.$1m:null));if(_4.$03){this.$0z(_4.$03,_3)}}}
+,isc.A.animateShowComplete=function isc_Canvas_animateShowComplete(_1){if(this.$58w!=null){this._percent_left=this.$58w;delete this.$58w}
+this.$vc=null;var _2=this.$1c;this.$1c=null;if(_2)this.$0z(_2,_1,true)}
+,isc.A.$1f=function isc_Canvas__canAnimateClip(_1){if(this.canAnimateClip!=null)return this.canAnimateClip;return(this.scrollTo==isc.Canvas.getInstanceProperty("scrollTo"))}
+,isc.A.animateHide=function isc_Canvas_animateHide(_1,_2,_3,_4,_5){if(_1==null)_1=this.animateHideEffect;var _6;if(isc.isAn.Object(_1)){_6=_1;_1=_6.effect}
+if(this.$vc!=null){this.finishAnimation(this.$vc)}
+if(!this.isVisible())return;if(this.$va!=null)return;if(!this.isDrawn()&&!isc.isA.LayoutSpacer(this)){this.hide();if(_2)this.$0z(_2,true);return}
+this.$va=this.$0v[_1]||this.$zb;this.$1p=_2;if(!this.$1q)
+this.$1q={target:this,methodName:"$1r"}
+if(_1==this.$0q){this.$1s=this.opacity;this.$1t=true;if(_3==null)_3=this.animateHideTime;if(_4==null)_4=this.animateHideAcceleration;return this.animateFade(0,this.$1q,_3,_4,_5)}else if(_1==this.$0r){this.$1u=this.getLeft();this.$58z=this._percent_left;if(this.parentElement!=null){this.logInfo("animateHide() called with 'fly' effect - not supported for child widgets"+" defaulting to standard 'wipe' animation instead.","animation");_1=this.$0p}else{if(_3==null)_3=this.animateShowTime;if(_4==null)_4=this.animateShowAcceleration;var _7=this.isRTL(),_8=_7?isc.Page.getWidth()+isc.Page.getScrollLeft():0-this.getVisibleWidth();return this.animateMove(_8,null,this.$1q,_3,_4,_5)}}
+if((!this.$1f(_1)||!this.isDrawn())&&!this.isA(isc.LayoutSpacer))
+{this.logInfo("not animating hide, can't do clip animations","animation");this.hide();this.$1r(true);return}
+var _9=this.getVisibleHeight(),_10=this.getVisibleWidth(),_11=(_6?_6.endAt==this.$0s:true),_12={$po:this.$po,$1g:this.getHeight(),$1h:_9,$pn:this.$pn,$1i:this.getWidth(),$1j:_10,$1m:(_11?this.getScrollTop():this.getScrollLeft()),$1l:_11,$1v:_1=="slide",$1k:this.overflow,$03:this.$1q,$1w:_5};if(_12.$1v){if(_11&&this.vscrollOn&&this.vscrollbar){_12.$495=this.vscrollbar.thumb.getTop();_12.$496=this.vscrollbar.thumb.getHeight()}else if(!_11&&this.hscrollOn&&this.hscrollbar){_12.$495=this.hscrollbar.thumb.getLeft();_12.$496=this.hscrollbar.thumb.getWidth()}}
+this.resizeTo(_10,_9,true);if(this.overflow==isc.Canvas.VISIBLE)this.setOverflow(isc.Canvas.HIDDEN);if(this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL){this.$417=true;if(this.vscrollOn&&this.vscrollbar){this.vscrollbar.$jq=false;if(_11)this.vscrollbar.$494=true;this.vscrollbar.$493=true;if(this.vscrollbar.thumb){this.vscrollbar.thumb.$493=true}}
+if(this.hscrollOn&&this.hscrollbar){this.hscrollbar.$jq=false;if(!_11)this.hscrollbar.$494=true;this.hscrollbar.$493=true;if(this.hscrollbar.thumb){this.hscrollbar.thumb.$493=true}}}
+if(this.showEdges){this.$l0.setOverflow("hidden");this.$l0.$za=true;this.$u9(this.$l0.getHandle().firstChild.style,(_11?"height":"width"),(_11?this.$l0.getHeight():this.$l0.getWidth()))}
+return this.$0y(this.$zb,_12,_3,_4)}
+,isc.A.fireAnimationHide=function isc_Canvas_fireAnimationHide(_1,_2,_3){var _4=this.$hideAnimationInfo,_5=_4.$1l;if(_1<1){var _6=(_5?_4.$1h:_4.$1j),_7=this.$04(_6,1,_1),_8=_6-_7,_9=(this.showEdges&&this.$l0),_10,_11,_12=this.hscrollOn&&this.hscrollbar,_13=this.vscrollOn&&this.vscrollbar;if(_9){_10=(_4.$1v?(_5?this.$l0.$td:this.$l0.$tb):(_5?this.$l0.$te:this.$l0.$tc));_11=(_4.$1v?(_5?this.$l0.$te:this.$1x.$tc):(_5?this.$l0.$td:this.$l0.$tb));this.$l0.resizeTo((_5?null:_7),(_5?_7:null),true);if(_4.$1v){if(_5)this.$l0.scrollToBottom();else this.$l0.scrollToRight()}
+if(_8<_10){if(_4.$1v){var _14=(_5?"marginTop":"marginLeft"),_15=(_5?this.getTopMargin():this.getLeftMargin())
+this.$u9(this.getStyleHandle(),_14,(_15-_8))}
+this.$5y();return}
+if(_4.$1v&&!this.$1y){var _14=(_5?"marginTop":"marginLeft"),_15=(_5?this.getTopMargin():this.getLeftMargin())
+this.$u9(this.getStyleHandle(),_14,(_15-_10));this.$1y=true}
+if(_9&&_7<=_11){this.$vb=true;this.getStyleHandle().visibility=isc.Canvas.HIDDEN;delete this.$vb}}
+var _16=_5?(_13?this.vscrollbar:null):(_12?this.hscrollbar:null);if(_16){if(_5)_16.setHeight(_7);else{var _17=_7;if(this.vscrollOn){if(_4.$1v){_17-=this.scrollbarSize}else{_17=Math.min(_7,_6-this.scrollbarSize)}}
+if(_17>0)_16.setWidth(_17);else _16.hide()}
+if(_4.$1v){if(_5)_16.scrollToBottom();else _16.scrollToRight()}
+if(_16.thumb&&_16.thumb.isVisible()){if(_4.$1v){var _18=_4.$495-_8,_19=_5?this.getTop():this.getLeft();if(_18>=_19){_16.thumb.moveTo(_5?null:_18,_5?_18:null)}else{_16.thumb.moveTo(_5?null:this.getLeft(),_5?this.getTop():null);var _20=_4.$496+(_18-_19);if(_20>0){_16.thumb.resizeTo(_5?null:_20,_5?_20:null);_16.thumb.scrollTo(_5?null:_19-_18,_5?_19-_18:null)}else{_16.thumb.hide()}}}else{if(_5){var _21=(this.getTop()+_7)
+if(_16.thumb.getBottom()>_21){var _22=_21-_16.thumb.getTop();if(_22>0)_16.thumb.setHeight(_22);else _16.thumb.hide()}}else{var _23=(this.getLeft()+_7)
+if(_16.thumb.getRight()>_23){var _24=_23-_16.thumb.getLeft();if(_24>0)_16.thumb.setWidth(_24);else _16.thumb.hide()}}}}}
+var _25=_5?(_12?this.hscrollbar:null):(_13?this.vscrollbar:null),_26=0;if(_25){var _27=this.scrollbarSize;if(_4.$1v){if(_7>=_27){var _28=(_5?this.getTop():this.getLeft())+_7-_27;_25.moveTo(_5?null:_28,_5?_28:null)}else{_25.moveTo(_5?null:this.getLeft(),_5?this.getTop():null);_25.resizeTo(_5?null:_7,_5?_7:null);if(_5)_25.scrollToBottom();else _25.scrollToRight();var _29=_25.thumb
+if(_29){_29.resizeTo(_5?null:_7,_5?_7:null);if(_5)_29.scrollToBottom();else _29.scrollToRight()}}
+if(_7<=_27){this.$vb=true;if(this.isVisible())this.hide();delete this.$vb;return}}else{if(_8<=_27){_25.resizeTo(_5?null:_27-_8,_5?_27-_8:null);if(_25.thumb){_25.thumb.resizeTo(_5?null:_27-_8,_5?_27-_8:null)}}else{if(_25.isVisible())_25.hide()}}
+if(_25.isVisible()){_26=this.scrollbarSize-
+(_5?_25.getHeight():_25.getWidth())}else{_26=this.scrollbarSize}}
+var _30=_7;if(_9)_30+=_10;if(_26)_30+=_26;if(!this.resizeTo((_5?null:_30),(_5?_30:null),true))
+{this.$5y()}
+var _31;if(_4.$1v){this.scrollTo((_5?null:_4.$1m+_8),(_5?_4.$1m+_8:null),null,true)}}else{this.$744("hide");if(this.isVisible())this.hide();if(_4.$1k)this.setOverflow(_4.$1k);if(this.showEdges&&this.$l0){delete this.$1y;this.$l0.setOverflow(isc.Canvas.VISIBLE);delete this.$l0.$za;if(_5)this.$l0.getHandle().firstChild.style.height="100%";else this.$l0.getHandle().firstChild.style.width="100%"
+if(_4.$1v){var _32=this.$sd(),_14=(_5?"marginTop":"marginLeft"),_15=(_5?_32.top:_32.left)
+this.$u9(this.getStyleHandle(),_14,_15)}}
+if(this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL){delete this.$417;if(_5){if(this.vscrollOn&&this.vscrollbar){if(this.vscrollbar.isVisible())this.vscrollbar.hide();delete this.vscrollbar.$494;delete this.vscrollbar.$493;this.vscrollbar.$jq=true;if(this.vscrollbar.thumb){delete this.vscrollbar.thumb.suppressImageResize}
+if(_4.$1v){this.vscrollbar.scrollTo(0,0);this.vscrollbar.setHeight(this.getHeight());if(this.vscrollbar.thumb)this.vscrollbar.thumb.scrollTo(0,0)}}
+if(this.hscrollOn&&this.hscrollbar){if(this.hscrollbar.isVisible())this.hscrollbar.hide();this.hscrollbar.$jq=true;delete this.hscrollbar.$493;if(_4.$1v)this.hscrollbar.scrollTo(0,0);if(this.hscrollbar.thumb){delete this.hscrollbar.thumb.$493;if(_4.$1v)this.hscrollbar.thumb.scrollTo(0,0)}}}else{if(this.hscrollOn&&this.hscrollbar){if(this.hscrollbar.isVisible())this.hscrollbar.hide();delete this.hscrollbar.$494;delete this.hscrollbar.$493;this.hscrollbar.$jq=true;if(this.hscrollbar.thumb)
+delete this.hscrollbar.$493;if(_4.$1v){this.hscrollbar.scrollTo(0,0);this.hscrollbar.setWidth(this.getWidth());if(this.hscrollbar.thumb)this.hscrollbar.thumb.scrollTo(0,0)}}
+if(this.vscrollOn&&this.vscrollbar){if(this.vscrollbar.isVisible())this.vscrollbar.hide();this.vscrollbar.$jq=true;delete this.vscrollbar.$493;if(_4.$1v)this.vscrollbar.scrollTo(0,0);if(this.vscrollbar.thumb){if(_4.$1v)this.vscrollbar.thumb.scrollTo(0,0);delete this.vscrollbar.$493}}}}
+this.resizeTo(_4.$1i,_4.$1g);this.$po=_4.$po;this.$pn=_4.$pn;if(_4.$1v)this.scrollTo((_5?null:_4.$1m),(_5?_4.$1m:null));if(_4.$03){this.$0z(_4.$03,_3,true)}}}
+,isc.A.$1r=function isc_Canvas__animateHideComplete(_1){delete this.$va;var _2=this.$1p;delete this.$1p;if(this.isVisible())this.hide();if(this.$1t){this.setOpacity(this.$1s);delete this.$1s;delete this.$1t}
+if(this.$1u!=null){this.setLeft(this.$1u);delete this.$1u}
+if(this.$58z!=null){this._percent_left=this.$58z;delete this.$58z}
+if(_2){this.$0z(_2,_1,true)}}
+,isc.A.isAnimating=function isc_Canvas_isAnimating(_1){if(_1==null)return this.$743>0;if(_1&&!isc.isAn.Array(_1)){if(!this.$745)this.$745=[];this.$745[0]=_1;_1=this.$745}
+if(!_1)_1=this.$0g;for(var i=0;i<_1.length;i++){if(this[this.$0w(_1[i])]!=null){return true}}
+return false}
+);isc.B._maxIndex=isc.C+30;isc.ClassFactory.defineClass("StatefulCanvas","Canvas");isc.A=isc.StatefulCanvas;isc.A.STATE_UP="";isc.A.STATE_DOWN="Down";isc.A.STATE_OVER="Over";isc.A.STATE_DISABLED="Disabled";isc.A.BUTTON="button";isc.A.CHECKBOX="checkbox";isc.A.RADIO="radio";isc.A.FOCUSED="Focused";isc.A.SELECTED="Selected";isc.A.UNSELECTED="";isc.A.$1z={};isc.A=isc.StatefulCanvas.getPrototype();isc.A.state="";isc.A.showFocusedAsOver=true;isc.A.showDisabled=true;isc.A.actionType="button";isc.A.cursor=isc.Canvas.ARROW;isc.A.capSize=0;isc.A.align=isc.Canvas.CENTER;isc.A.valign=isc.Canvas.CENTER;isc.A.autoFitDirection=isc.Canvas.BOTH;isc.A.iconSize=16;isc.A.iconOrientation="left";isc.A.iconSpacing=6;isc.A.showIconState=true;isc.A.showDisabledIcon=true;isc.A.gripImgSuffix="grip";isc.A.overCanvasConstructor="Canvas";isc.A.overCanvasDefaults={mouseOut:function(){if(isc.EH.getTarget()!=this.creator)this.clear();return this.Super("mouseOut",arguments)}};isc.A=isc.StatefulCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$42d="visualState";isc.A.$54k="SelectedFocused";isc.A.labelDefaults={$kk:function(){return this.masterElement.$kk()},focusChanged:function(_1){if(this.hasFocus)this.eventProxy.focus()},getContents:function(){return this.masterElement.getTitleHTML()},adjustOverflow:function(_1,_2,_3,_4){this.invokeSuper(null,"adjustOverflow",_1,_2,_3,_4);if(this.masterElement)this.masterElement.$10()}};isc.A.$11="label";isc.A.$12="Label overflowed.";isc.A.$64x="$5y";isc.B.push(isc.A.initWidget=function isc_StatefulCanvas_initWidget(){if(this.src==null)this.src=this.vertical?this.vSrc:this.hSrc;var _1=!this.isDisabled();if(!_1){this.$42e=this.state;if(this.showDisabled)this.state=isc.StatefulCanvas.STATE_DISABLED}
+this.baseStyle=this.baseStyle||this.className;this.styleName=(this.suppressClassName?null:this.getStateName());this.className=this.styleName;if(this.radioGroup!=null){var _2=this.radioGroup;this.radioGroup=null;this.addToRadioGroup(_2)}
+this.setAutoFit(this.autoFit,true);if(this.showGrip){this.showTitle=true;this.labelVPad=0;this.labelHPad=0;this.iconSpacing=0;this.align=isc.Canvas.CENTER;this.icon=this.getImgURL(this.getURL(this.gripImgSuffix));this.iconSize=this.gripSize;this.iconWidth=this.vertical?this.gripBreadth:this.gripLength;this.iconHeight=this.vertical?this.gripLength:this.gripBreadth;this.showRollOverIcon=this.showRollOverGrip;this.showDownIcon=this.showDownGrip}
+var _3=this.shouldShowLabel();if(_3)this.makeLabel();if(isc.screenReader&&!_3&&!this.showGrip&&(this.prompt||this.title)){var _4=this.getAriaLabel();if(_4!=null){this.ariaState={label:_4}}}}
+,isc.A.getAriaLabel=function isc_StatefulCanvas_getAriaLabel(){var _1=this.prompt||this.title;if(_1!=null&&_1!=""&&isc.Button.getInstanceProperty("title")!=_1)
+{return _1}
+return null}
+,isc.A.getURL=function isc_StatefulCanvas_getURL(_1,_2,_3,_4){return isc.Img.urlForState(this.src,_3!=null?_3:this.selected,_4!=null?_4:this.getFocusedState(),_2!=null?_2:this.state,_1,this.getCustomState())}
+,isc.A.shouldShowLabel=function isc_StatefulCanvas_shouldShowLabel(){return this.showTitle}
+,isc.A.stateChanged=function isc_StatefulCanvas_stateChanged(){if(this.destroyed)return;if(this.logIsDebugEnabled(this.$42d)){this.logDebug("state changed to: "+this.getStateName(),"visualState")}
+if(this.redrawOnStateChange){this.markForRedraw("state change")}
+if(!this.suppressClassName){this.setClassName(this.getStateName())}
+var _1=this.label;if(_1!=null){_1.setState(this.getState());_1.setSelected(this.isSelected());_1.setCustomState(this.getCustomState())}}
+,isc.A.setBaseStyle=function isc_StatefulCanvas_setBaseStyle(_1){this.baseStyle=_1;if(this.label&&this.titleStyle==null)this.label.setBaseStyle(_1);this.stateChanged()}
+,isc.A.setTitleStyle=function isc_StatefulCanvas_setTitleStyle(_1){this.titleStyle=_1;if(this.label){this.label.setBaseStyle(_1||this.baseStyle)}
+this.stateChanged()}
+,isc.A.setState=function isc_StatefulCanvas_setState(_1){if(this.state==_1)return;this.state=_1;this.stateChanged()}
+,isc.A.$sn=function isc_StatefulCanvas__updateChildrenTopElement(){this.Super("$sn",arguments);this.setHandleDisabled(this.isDisabled())}
+,isc.A.getState=function isc_StatefulCanvas_getState(){return this.state}
+,isc.A.setSelected=function isc_StatefulCanvas_setSelected(_1){if(this.selected==_1)return;if(_1&&this.radioGroup!=null){var _2=isc.StatefulCanvas.$1z[this.radioGroup];if(_2==null){this.logWarn("'radioGroup' property set for this widget, but no corresponding group "+"exists. To set up a new radioGroup containing this widget, or add this "+" widget to an existing radioGroup at runtime, call 'addToRadioGroup(groupID)'")}else{for(var i=0;i<_2.length;i++){if(_2[i]!=this&&_2[i].isSelected())
+_2[i].setSelected(false)}}}
+this.selected=_1;if(this.label)this.label.setSelected(this.isSelected());this.stateChanged()}
+,isc.A.select=function isc_StatefulCanvas_select(){this.setSelected(true)}
+,isc.A.deselect=function isc_StatefulCanvas_deselect(){this.setSelected(false)}
+,isc.A.isSelected=function isc_StatefulCanvas_isSelected(){return this.selected}
+,isc.A.getActionType=function isc_StatefulCanvas_getActionType(){return this.actionType}
+,isc.A.setActionType=function isc_StatefulCanvas_setActionType(_1){if(_1==isc.StatefulCanvas.BUTTON&&this.isSelected()){this.setSelected(false)}
+this.actionType=_1}
+,isc.A.addToRadioGroup=function isc_StatefulCanvas_addToRadioGroup(_1){if(_1==null||this.radioGroup==_1)return;if(this.radioGroup!=null)this.removeFromRadioGroup();this.radioGroup=_1;if(isc.StatefulCanvas.$1z[this.radioGroup]==null){isc.StatefulCanvas.$1z[this.radioGroup]=[this]}else{isc.StatefulCanvas.$1z[this.radioGroup].add(this)}}
+,isc.A.removeFromRadioGroup=function isc_StatefulCanvas_removeFromRadioGroup(_1){if(this.radioGroup==null||(_1!=null&&_1!=this.radioGroup))return;var _2=isc.StatefulCanvas.$1z[this.radioGroup];_2.remove(this);delete this.radioGroup}
+,isc.A.setHandleDisabled=function isc_StatefulCanvas_setHandleDisabled(_1,_2,_3,_4){this.invokeSuper(isc.StatefulCanvas,"setHandleDisabled",_1,_2,_3,_4);if(!this.showDisabled)return;var _5=(this.state==isc.StatefulCanvas.STATE_DISABLED);if(_5==_1)return;if(_1==false){if(this.$13)this.setCursor(this.$13);var _6=this.$42e||isc.StatefulCanvas.STATE_UP;this.setState(_6)}else{this.$13=this.cursor;this.setCursor(isc.StatefulCanvas.ARROW);this.$42e=this.state;this.setState(isc.StatefulCanvas.STATE_DISABLED)}}
+,isc.A.getStateName=function isc_StatefulCanvas_getStateName(){var _1=this.getStateSuffix();if(_1)return this.baseStyle+_1;return this.baseStyle}
+,isc.A.getStateSuffix=function isc_StatefulCanvas_getStateSuffix(){var _1=this.getState(),_2=this.isSelected()?isc.StatefulCanvas.SELECTED:null,_3=this.getFocusedState()?isc.StatefulCanvas.FOCUSED:null,_4=this.getCustomState();return this.$61l(_1,_2,_3,_4)}
+,isc.A.$61l=function isc_StatefulCanvas__getStateSuffix(_1,_2,_3,_4){var _5;if(_2||_3){_5=(_2&&_3)?this.$54k:_2?_2:_3}
+if(!_4){if(_5)return _1?_5+_1:_5;else return _1}else if(_5){return _1?_5+_1+_4:_5+_4}else{return _1?_1+_4:_4}}
+,isc.A.setCustomState=function isc_StatefulCanvas_setCustomState(_1){if(_1==this.customState)return;this.customState=_1;this.stateChanged()}
+,isc.A.getCustomState=function isc_StatefulCanvas_getCustomState(){return this.customState}
+,isc.A.getPrintStyleName=function isc_StatefulCanvas_getPrintStyleName(){return this.printStyleName||this.getStateName()}
+,isc.A.makeLabel=function isc_StatefulCanvas_makeLabel(){var _1=this.getAutoChildClass(this.$11,null,isc.Label);var _2=this.label=_1.createRaw();_2.align=this.align;_2.valign=this.valign;_2.$jo=false;_2.$jp=false;_2._redrawWithParent=false;_2.containedPeer=true;_2.icon=this.icon;_2.iconWidth=this.iconWidth;_2.iconHeight=this.iconHeight;_2.iconSize=this.iconSize;_2.iconOrientation=this.iconOrientation;_2.iconAlign=this.iconAlign;_2.iconSpacing=this.iconSpacing;_2.showDownIcon=this.showDownIcon;_2.showSelectedIcon=this.showSelectedIcon;_2.showRollOverIcon=this.showRollOverIcon;_2.showFocusedIcon=this.showFocusedIcon;_2.showDisabledIcon=this.showDisabledIcon;if(this.showIconState!=null)_2.showIconState=this.showIconState;_2.getFocusedState=function(){var _3=this.masterElement;if(_3&&_3.getFocusedState)return _3.getFocusedState()}
+_2.skinImgDir=this.labelSkinImgDir||this.skinImgDir;_2.baseStyle=this.titleStyle||this.baseStyle;_2.state=this.getState();_2.customState=this.getCustomState();_2.getPrintStyleName=function(){return this.masterElement.getPrintStyleName()}
+_2.overflow=this.overflow;_2.width=this.$15();_2.height=this.$16();_2.left=this.$17();_2.top=this.$18();_2.wrap=this.wrap!=null?this.wrap:this.vertical;_2.eventProxy=this;_2.isMouseTransparent=true;_2.zIndex=this.getZIndex(true)+1;_2.tabIndex=-1;this.$d3(this.$11,_2);this.label.setSelected(this.isSelected());this.addPeer(this.label,null,null,true)}
+,isc.A.setLabelSkinImgDir=function isc_StatefulCanvas_setLabelSkinImgDir(_1){this.labelSkinImgDir=_1;if(this.label!=null)this.label.setSkinImgDir(_1)}
+,isc.A.setSkinImgDir=function isc_StatefulCanvas_setSkinImgDir(_1){this.Super("setSkinImgDir",arguments);if(this.labelSkinImgDir==null&&this.label!=null)this.label.setSkinImgDir(_1)}
+,isc.A.setIconOrientation=function isc_StatefulCanvas_setIconOrientation(_1){this.iconOrientation=_1;if(this.label){this.label.iconOrientation=_1;this.label.markForRedraw()}else{this.markForRedraw()}}
+,isc.A.setAutoFit=function isc_StatefulCanvas_setAutoFit(_1,_2){if(_2){this.$19=true;if(!_1)return}
+if(!this.$19)return;_1=!!_1;if(!_2&&(!!this.autoFit==_1))return;this.$2a=true;this.autoFit=_1;var _3=(this.autoFitDirection==isc.Canvas.BOTH)||(this.autoFitDirection==isc.Canvas.HORIZONTAL),_4=(this.autoFitDirection==isc.Canvas.BOTH)||(this.autoFitDirection==isc.Canvas.VERTICAL);this.inherentWidth=_1&&_3;this.inherentHeight=_1&&_4;if(_1){this.$2b=this.overflow;this.setOverflow(isc.Canvas.VISIBLE);if(_3){this.$2c=this.width;this.setWidth(1)}
+if(_4){this.$2d=this.height;this.setHeight(1)}}else{var _5=this.$2c||this.defaultWidth,_6=this.$2d||this.defaultHeight;if(_3)this.setWidth(_5);if(_4)this.setHeight(_6);if(this.parentElement&&isc.isA.Layout(this.parentElement)){if(_3&&!this.$2c)this.$pn=null;if(_4&&!this.$2d)this.$po=null}
+this.$2c=null;this.$2d=null;if(this.$2b)this.setOverflow(this.$2b);this.$2b=null}
+delete this.$2a}
+,isc.A.resizeBy=function isc_StatefulCanvas_resizeBy(_1,_2,_3,_4,_5,_6){if(this.autoFit&&this.$19&&!this.$2a){var _7=false;if(_1!=null&&(this.autoFitDirection==isc.Canvas.BOTH||this.autoFitDirection==isc.Canvas.HORIZONTAL))
+{this.$2c=(1+_1);_7=true;_1=null}
+if(_2!=null&&(this.autoFitDirection==isc.Canvas.BOTH||this.autoFitDirection==isc.Canvas.VERTICAL))
+{this.$2d=(1+_2);_7=true;_2=null}
+if(_7)this.setAutoFit(false)}
+return this.invokeSuper(isc.StatefulCanvas,"resizeBy",_1,_2,_3,_4,_5,_6)}
+,isc.A.getLabelHPad=function isc_StatefulCanvas_getLabelHPad(){if(this.labelHPad!=null)return this.labelHPad;if(this.vertical){return this.labelBreadthPad!=null?this.labelBreadthPad:0}else{return this.labelLengthPad!=null?this.labelLengthPad:this.capSize}}
+,isc.A.getLabelVPad=function isc_StatefulCanvas_getLabelVPad(){if(this.labelVPad!=null)return this.labelVPad;if(!this.vertical){return this.labelBreadthPad!=null?this.labelBreadthPad:0}else{return this.labelLengthPad!=null?this.labelLengthPad:this.capSize}}
+,isc.A.$17=function isc_StatefulCanvas__getLabelLeft(){var _1;if(this.isDrawn()){_1=(this.position==isc.Canvas.RELATIVE&&this.parentElement==null?this.getPageLeft():this.getOffsetLeft())}else{_1=this.getLeft()}
+_1+=this.getLabelHPad();return _1}
+,isc.A.$18=function isc_StatefulCanvas__getLabelTop(){var _1;if(this.isDrawn()){_1=(this.position==isc.Canvas.RELATIVE&&this.parentElement==null?this.getPageTop():this.getOffsetTop())}else{_1=this.getTop()}
+_1+=this.getLabelVPad();return _1}
+,isc.A.$15=function isc_StatefulCanvas__getLabelSpecifiedWidth(){var _1=this.getInnerWidth();_1-=2*this.getLabelHPad();return Math.max(_1,1)}
+,isc.A.$16=function isc_StatefulCanvas__getLabelSpecifiedHeight(){var _1=this.getInnerHeight();_1-=2*this.getLabelVPad();return Math.max(_1,1)}
+,isc.A.getImgBreadth=function isc_StatefulCanvas_getImgBreadth(){if(this.overflow==isc.Canvas.VISIBLE&&isc.isA.Canvas(this.label))
+{return this.vertical?this.$2e():this.$2f()}
+return(this.vertical?this.getInnerWidth():this.getInnerHeight())}
+,isc.A.getImgLength=function isc_StatefulCanvas_getImgLength(){if(this.overflow==isc.Canvas.VISIBLE&&isc.isA.Canvas(this.label))
+{return this.vertical?this.$2f():this.$2e()}
+return(this.vertical?this.getInnerHeight():this.getInnerWidth())}
+,isc.A.$2f=function isc_StatefulCanvas__getAutoInnerHeight(){var _1=this.getInnerHeight();if(!isc.isA.Canvas(this.label))return _1;var _2=this.getLabelVPad();var _3=this.label.getVisibleHeight()+2*_2;return Math.max(_3,_1)}
+,isc.A.$2e=function isc_StatefulCanvas__getAutoInnerWidth(){var _1=this.getInnerWidth();if(!isc.isA.Canvas(this.label))return _1;var _2=this.getLabelHPad();var _3=this.label.getVisibleWidth()+2*_2;return Math.max(_3,_1)}
+,isc.A.$10=function isc_StatefulCanvas__labelAdjustOverflow(){if(this.overflow!=isc.Canvas.VISIBLE)return;this.adjustOverflow(this.$12)}
+,isc.A.getScrollWidth=function isc_StatefulCanvas_getScrollWidth(_1,_2,_3,_4){if(this.overflow!=isc.Canvas.VISIBLE||!isc.isA.Canvas(this.label))
+return this.invokeSuper(isc.StatefulCanvas,"getScrollWidth",_1,_2,_3,_4);if(this.$qz){this.$qz=null;this.adjustOverflow("widthCheckWhileDeferred")}
+if(!_1&&this.$su!=null)return this.$su;var _5=this.$2e()
+return(this.$su=_5)}
+,isc.A.getScrollHeight=function isc_StatefulCanvas_getScrollHeight(_1,_2,_3,_4){if(this.overflow!=isc.Canvas.VISIBLE||!isc.isA.Canvas(this.label))
+return this.invokeSuper(isc.StatefulCanvas,"getScrollHeight",_1,_2,_3,_4);if(this.$qz){this.$qz=null;this.adjustOverflow("heightCheckWhileDeferred")}
+if(!_1&&this.$sz!=null)return this.$sz;var _5=this.$2f()
+return(this.$sz=_5)}
+,isc.A.setOverflow=function isc_StatefulCanvas_setOverflow(_1,_2,_3,_4,_5){if(this.autoFit&&this.$19&&!this.$2a&&_1!=isc.Canvas.VISIBLE){this.$2b=_1;this.setAutoFit(false);return}
+this.invokeSuper(isc.StatefulCanvas,"setOverflow",_1,_2,_3,_4,_5);if(isc.isA.Canvas(this.label))this.label.setOverflow(_1,_2,_3,_4,_5)}
+,isc.A.$5y=function isc_StatefulCanvas__resized(_1,_2,_3,_4,_5){this.invokeSuper(isc.StatefulCanvas,this.$64x,_1,_2,_3,_4,_5);if(this.label)this.label.resizeTo(this.$15(),this.$16())}
+,isc.A.draw=function isc_StatefulCanvas_draw(_1,_2,_3){if(isc.$cv)arguments.$cw=this;var _4=isc.Canvas.$b4.draw.call(this,_1,_2,_3);if(this.position!=isc.Canvas.ABSOLUTE&&isc.isA.Canvas(this.label)){if(isc.Page.isLoaded())this.$42f();else isc.Page.setEvent("load",this.getID()+".$42f()")}
+if(this.label!=null&&isc.Canvas.ariaEnabled()){var _5=this.getAriaLabel();if(_5!=null)this.setAriaState("label",_5)}
+return _4}
+,isc.A.$42f=function isc_StatefulCanvas__positionLabel(){if(!this.isDrawn())return;this.label.moveTo(this.$17(),this.$18())}
+,isc.A.setAlign=function isc_StatefulCanvas_setAlign(_1){this.align=_1;if(this.isDrawn())this.markForRedraw();if(this.label)this.label.setAlign(_1)}
+,isc.A.setVAlign=function isc_StatefulCanvas_setVAlign(_1){this.valign=_1;if(this.isDrawn())this.markForRedraw();if(this.label)this.label.setVAlign(_1)}
+,isc.A.getPrintHTML=function isc_StatefulCanvas_getPrintHTML(){var _1=this.shouldShowLabel();if(_1){if(this.label==null){this.makeLabel()}
+return this.label.getPrintHTML()}
+return this.Super("getPrintHTML",arguments)}
+,isc.A.shouldHiliteAccessKey=function isc_StatefulCanvas_shouldHiliteAccessKey(){return this.hiliteAccessKey}
+,isc.A.getTitleHTML=function isc_StatefulCanvas_getTitleHTML(){var _1=this.getTitle();if(!this.shouldHiliteAccessKey()||!isc.isA.String(_1)||this.accessKey==null)
+return _1;return isc.Canvas.hiliteCharacter(_1,this.accessKey)}
+,isc.A.getTitle=function isc_StatefulCanvas_getTitle(){return this.title}
+,isc.A.setTitle=function isc_StatefulCanvas_setTitle(_1){this.title=_1;var _1=this.getTitleHTML();if(this.label){this.label.setContents(_1);this.label.setState(this.getState());this.label.setSelected(this.isSelected())}else if(this.title!=null&&this.shouldShowLabel()){this.makeLabel()}
+this.markForRedraw()}
+,isc.A.setZIndex=function isc_StatefulCanvas_setZIndex(_1,_2,_3){isc.Canvas.$b4.setZIndex.call(this,_1,_2,_3);if(isc.isA.Canvas(this.label))this.label.moveAbove(this)}
+,isc.A.$ur=function isc_StatefulCanvas__updateCanFocus(){this.Super("$ur",arguments);if(this.label!=null)this.label.$ur()}
+,isc.A.setIcon=function isc_StatefulCanvas_setIcon(_1){this.icon=_1;if(this.label)this.label.setIcon(_1);else if(_1&&this.shouldShowLabel())this.makeLabel()}
+,isc.A.mouseOver=function isc_StatefulCanvas_mouseOver(){if(this.showDown&&this.ns.EH.mouseIsDown()){this.setState(isc.StatefulCanvas.STATE_DOWN)}else{if(this.showRollOver){this.setState(isc.StatefulCanvas.STATE_OVER)}
+if(this.showOverCanvas){if(!this.overCanvas){this.addAutoChild("overCanvas",{autoDraw:false})}
+if(!this.overCanvas.isDrawn())this.overCanvas.draw()}}}
+,isc.A.mouseOut=function isc_StatefulCanvas_mouseOut(){if(this.showRollOver){this.setState(isc.StatefulCanvas.STATE_UP)}else if(this.showDown&&this.ns.EH.mouseIsDown()){this.setState(isc.StatefulCanvas.STATE_UP)}
+if(this.showOverCanvas&&this.overCanvas&&this.overCanvas.isVisible()&&(isc.EH.getTarget()!=this.overCanvas))
+{this.overCanvas.clear()}}
+,isc.A.$lf=function isc_StatefulCanvas__focusChanged(_1,_2,_3,_4){var _5=this.invokeSuper(isc.StatefulCanvas,"$lf",_1,_2,_3,_4);if(!(_1&&isc.Browser.isIE&&(this.getFocusHandle()!=this.getDocument().activeElement)))
+{this.updateStateForFocus(_1)}
+return _5}
+,isc.A.updateStateForFocus=function isc_StatefulCanvas_updateStateForFocus(_1){if(!this.showFocused)return;if(this.showFocusedAsOver){if(!this.showRollOver)return;var _2=this.getState();if(_1&&!this.isDisabled()){if(_2==isc.StatefulCanvas.STATE_UP)this.setState(isc.StatefulCanvas.STATE_OVER)}else{if(_2==isc.StatefulCanvas.STATE_OVER)this.setState(isc.StatefulCanvas.STATE_UP)}}else{this.stateChanged();if(this.label)this.label.stateChanged()}}
+,isc.A.getFocusedState=function isc_StatefulCanvas_getFocusedState(){if(!this.showFocused||this.showFocusedAsOver||this.isDisabled())return false;return this.hasFocus}
+,isc.A.handleMouseDown=function isc_StatefulCanvas_handleMouseDown(_1,_2){if(_1.target==this&&this.useEventParts){if(this.firePartEvent(_1,isc.EH.MOUSE_DOWN)==false)return false}
+if(this.showDown)this.setState(isc.StatefulCanvas.STATE_DOWN);if(this.mouseDown)return this.mouseDown(_1,_2)}
+,isc.A.handleMouseUp=function isc_StatefulCanvas_handleMouseUp(_1,_2){if(_1.target==this&&this.useEventParts){if(this.firePartEvent(_1,isc.EH.MOUSE_UP)==false)return false}
+if(this.showDown){this.setState(this.showRollOver?isc.StatefulCanvas.STATE_OVER:isc.StatefulCanvas.STATE_UP)}
+if(this.mouseUp)return this.mouseUp(_1,_2)}
+,isc.A.handleActivate=function isc_StatefulCanvas_handleActivate(_1,_2){var _3=this.getActionType();if(_3==isc.StatefulCanvas.RADIO){this.select()}else if(_3==isc.StatefulCanvas.CHECKBOX){this.setSelected(!this.isSelected())}
+if(this.activate)return this.activate(_1,_2);if(this.action)return this.action();if(this.click)return this.click(_1,_2)}
+,isc.A.handleClick=function isc_StatefulCanvas_handleClick(_1,_2){if(isc.$cv)arguments.$cw=this;if(_1.target==this&&this.useEventParts){if(this.firePartEvent(_1,isc.EH.CLICK)==false)return false}
+return this.handleActivate(_1,_2)}
+,isc.A.handleKeyPress=function isc_StatefulCanvas_handleKeyPress(_1,_2){if(isc.$cv)arguments.$cw=this;if(this.keyPress&&(this.keyPress(_1,_2)==false))return false;if(_1.keyName=="Space"||_1.keyName=="Enter"){if(this.handleActivate(_1,_2)==false)return false}
+return true}
+,isc.A.destroy=function isc_StatefulCanvas_destroy(){this.removeFromRadioGroup();return this.Super("destroy",arguments)}
+);isc.B._maxIndex=isc.C+69;isc.StatefulCanvas.registerStringMethods({activate:isc.EH.$i3,action:""});isc.ClassFactory.defineClass("Layout","Canvas");isc.A=isc.Layout;isc.A.FILL="fill";isc.A=isc.Layout.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.orientation="horizontal";isc.A.vPolicy=isc.Layout.FILL;isc.A.hPolicy=isc.Layout.FILL;isc.A.minMemberSize=1;isc.A.enforcePolicy=true;isc.A.paddingAsLayoutMargin=true;isc.A.$415=true;isc.A.membersMargin=0;isc.A.defaultResizeBars="marked";isc.A.resizeBarClass="Splitbar";isc.A.resizeBarSize=7;isc.A.animateMemberEffect="slide";isc.A.canDropComponents=true;isc.A.dropLineThickness=2;isc.A.membersAreChildren=true;isc.B.push(isc.A.setDefaultResizeBars=function isc_Layout_setDefaultResizeBars(_1){if(this.defaultResizeBars==_1)return;this.defaultResizeBars=_1;this.$86g()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.Canvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setShowResizeBar=function isc_Canvas_setShowResizeBar(_1){if(this.showResizeBar==_1)return;this.showResizeBar=_1;var _2=this.parentElement;if(_2==null||!isc.isA.Layout(_2))return;_2.$86g()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.Layout.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.managePercentBreadth=true;isc.A.$2g="layout";isc.A.$2h=["show","hide","rect"];isc.A.$2i=["rect","move"];isc.A.$2j=[];isc.A.$2k="membersAdded";isc.A.$2l="membersRemoved";isc.A.placeHolderDefaults={styleName:"layoutPlaceHolder",overflow:isc.Canvas.HIDDEN};isc.A.dropLineDefaults={styleName:"layoutDropLine",overflow:"hidden",isMouseTransparent:true};isc.B.push(isc.A.getMemberLength=function isc_Layout_getMemberLength(_1){return this.vertical?_1.getVisibleHeight():_1.getVisibleWidth()}
+,isc.A.getMemberBreadth=function isc_Layout_getMemberBreadth(_1){return this.vertical?_1.getVisibleWidth():_1.getVisibleHeight()}
+,isc.A.setMemberBreadth=function isc_Layout_setMemberBreadth(_1,_2){if(this.logIsDebugEnabled(this.$2g))this.$42g(_1,_2);this.vertical?_1.setWidth(_2):_1.setHeight(_2)}
+,isc.A.getLength=function isc_Layout_getLength(){if(this.vertical)return this.getInnerHeight();var _1=this.getInnerWidth();if(this.leaveScrollbarGap&&!this.vscrollOn)_1-=this.getScrollbarSize();return _1}
+,isc.A.getBreadth=function isc_Layout_getBreadth(){if(!this.vertical)return this.getInnerHeight();var _1=this.getInnerWidth();if(this.leaveScrollbarGap&&!this.vscrollOn)_1-=this.getScrollbarSize();return _1}
+,isc.A.getLengthPolicy=function isc_Layout_getLengthPolicy(){return this.vertical?this.vPolicy:this.hPolicy}
+,isc.A.getBreadthPolicy=function isc_Layout_getBreadthPolicy(){return this.vertical?this.hPolicy:this.vPolicy}
+,isc.A.memberHasInherentLength=function isc_Layout_memberHasInherentLength(_1){if(!(this.vertical?_1.hasInherentHeight():_1.hasInherentWidth())){return false}
+var _2=this.$2m(_1);if(isc.isA.String(_2)&&(_2.endsWith(this.$o9)||_2==this.$pa))
+{return false}
+return true}
+,isc.A.memberHasInherentBreadth=function isc_Layout_memberHasInherentBreadth(_1){return(this.vertical?_1.hasInherentWidth():_1.hasInherentHeight())}
+,isc.A.$2n=function isc_Layout__overflowsLength(_1){return((this.vertical&&_1.canOverflowHeight())||(!this.vertical&&_1.canOverflowWidth()))}
+,isc.A.$2m=function isc_Layout__explicitLength(_1){return this.vertical?_1.$po:_1.$pn}
+,isc.A.$2o=function isc_Layout__explicitBreadth(_1){return this.vertical?_1.$pn:_1.$po}
+,isc.A.$2p=function isc_Layout__memberPercentLength(_1){return this.vertical?_1._percent_height:_1._percent_width}
+,isc.A.scrollingOnLength=function isc_Layout_scrollingOnLength(){return this.vertical?this.vscrollOn:this.hscrollOn}
+,isc.A.getMemberGap=function isc_Layout_getMemberGap(_1){return(_1.extraSpace||0)-(this.memberOverlap||0)+(_1.$22||0)}
+,isc.A.initWidget=function isc_Layout_initWidget(){if(isc.$cv)arguments.$cw=this;var _1=isc.Layout;if(this.vertical==null){this.vertical=(this.orientation==_1.VERTICAL)}else{this.orientation=(this.vertical?_1.VERTICAL:_1.HORIZONTAL)}
+if(this.isRTL()&&!this.vertical)this.reverseOrder=!this.reverseOrder;if(this.members==null)this.members=[];else if(!isc.isA.Array(this.members))this.members=[this.members];if(this.membersAreChildren){if(this.members.length==0&&this.children!=null&&!this.$2q())
+{this.members=this.children=this.createMemberCanvii(this.children)}else{this.members=this.createMemberCanvii(this.members);if(this.children==null)this.children=[];this.children.addList(this.members)}}else{this.logInfo("members are peers","layout");this.addMethods({draw:this.$2r});this.members=this.createMemberCanvii(this.members);if(this.peers==null)this.peers=[];this.peers.addList(this.members)}
+this.setLayoutMargin();if(this.members&&this.members.length>0)this.$62s()}
+,isc.A.createMemberCanvii=function isc_Layout_createMemberCanvii(_1){_1=this.createCanvii(_1);for(var i=_1.length-1;i>=0;i--){if(_1[i]==null)continue;if(!isc.isA.Canvas(_1[i])){this.logWarn("Layout unable to resolve member:"+this.echo(_1[i])+" to a Canvas - ignoring this member");_1.removeAt(i)}}
+return _1}
+,isc.A.$2q=function isc_Layout__allGeneratedChildren(){for(var i=0;i<this.children.length;i++){var _2=this.children[i];if(_2!=null&&!_2._generated)return false}
+return true}
+,isc.A.setLayoutMargin=function isc_Layout_setLayoutMargin(_1){if(_1!=null)this.layoutMargin=_1;var _2=this.layoutHMargin,_3=this.layoutVMargin,_4=this.layoutMargin,_5=this.reverseOrder?this.layoutEndMargin:this.layoutStartMargin,_6=this.reverseOrder?this.layoutStartMargin:this.layoutEndMargin;var _7,_8,_9,_10;if(this.paddingAsLayoutMargin){var _11=this.$tq();_7=_11.left;_8=_11.right;_9=_11.top;_10=_11.bottom}
+this.$tb=this.$du(this.layoutLeftMargin,(!this.vertical?_5:null),_2,_4,_7,0);this.$tc=this.$du(this.layoutRightMargin,(!this.vertical?_6:null),_2,_4,_8,0);this.$td=this.$du(this.layoutTopMargin,(this.vertical?_5:null),_3,_4,_9,0);this.$te=this.$du(this.layoutBottomMargin,(this.vertical?_6:null),_3,_4,_10,0);this.$2s=true;this.reflow()}
+,isc.A.$2t=function isc_Layout__getSideMargin(_1){if(this.$tb==null)this.setLayoutMargin();if(_1)return this.$tb+this.$tc;else return this.$td+this.$te}
+,isc.A.$2u=function isc_Layout__getBreadthMargin(){return this.$2t(this.vertical)}
+,isc.A.$2v=function isc_Layout__getLengthMargin(){return this.$2t(!this.vertical)}
+,isc.A.$2r=function isc_Layout__drawOverride(){if(isc.$cv)arguments.$cw=this;if(!this.membersAreChildren){this.$2w();this.layoutChildren(this.$od);this.drawPeers();this.$if=true;return}
+isc.Canvas.$b4.draw.apply(this,arguments)}
+,isc.A.resizePeersBy=function isc_Layout_resizePeersBy(_1,_2,_3){if(!this.membersAreChildren)return;isc.Canvas.$b4.resizePeersBy.call(this,_1,_2,_3)}
+,isc.A.markForRedraw=function isc_Layout_markForRedraw(){if(this.membersAreChildren)return this.Super("markForRedraw",arguments);this.reflow("markedForRedraw")}
+,isc.A.drawChildren=function isc_Layout_drawChildren(){if(this.membersAreChildren){this.$2w();this.layoutChildren(this.$od);this.$2x()}
+return}
+,isc.A.$2y=function isc_Layout__memberCanFocus(_1){return true}
+,isc.A.$2w=function isc_Layout__setupMembers(){if(!this.members)return;for(var i=0;i<this.members.length;i++){var _2=this.members[i];if(_2==null){this.logWarn("members array: "+this.members+" includes null entry at position "+i+". Removing");this.members.removeAt(i);i-=1;continue}
+if(this.$2y(_2)&&(_2.$sp||_2.tabIndex==null))
+{this.updateMemberTabIndex(_2)}
+this.autoSetBreadth(_2)}}
+,isc.A.childCanFocusChanged=function isc_Layout_childCanFocusChanged(_1){if(!this.members.contains(_1))return;this.updateMemberTabIndex(_1)}
+,isc.A.$2x=function isc_Layout__drawNonMemberChildren(){if(!this.membersAreChildren||!this.children)return;for(var i=0;i<this.children.length;i++){var _2=this.children[i];if(this.members.contains(_2))continue;if(!isc.isA.Canvas(_2)){_2.autoDraw=false;_2=isc.Canvas.create(_2)}
+if(!_2.isDrawn())_2.draw()}}
+,isc.A.$54l=function isc_Layout__getMemberDefaultBreadth(_1){var _2=this.$2o(_1),_3=isc.isA.String(_2)&&isc.endsWith(_2,this.$o9)?_2:null,_4=Math.max(this.getBreadth()-this.$2u(),1);if(this.$3a&&!this.leaveScrollbarGap){_4-=this.getScrollbarSize()}
+var _5=(_3==null?_4:Math.floor(_4*(parseInt(_3)/100)));if(this.getMemberDefaultBreadth==null)return _5;return this.getMemberDefaultBreadth(_1,_5)}
+,isc.A.autoSetBreadth=function isc_Layout_autoSetBreadth(_1){if(!this.shouldAlterBreadth(_1))return false;var _2=this.$2z;this.$2z=true;this.setMemberBreadth(_1,this.$54l(_1));this.$2z=_2;return true}
+,isc.A.shouldAlterBreadth=function isc_Layout_shouldAlterBreadth(_1){var _2=this.$2o(_1);if(_2!=null){return(this.managePercentBreadth&&this.getBreadthPolicy()==isc.Layout.FILL&&isc.isA.String(_2)&&isc.endsWith(_2,this.$o9))}
+if(this.vertical&&_1.inherentWidth)return false;if(this.getBreadthPolicy()==isc.Layout.FILL)return true;return false}
+,isc.A.$20=function isc_Layout__moveOffscreen(_1){return isc.Canvas.moveOffscreen(_1)}
+,isc.A.getMarginSpace=function isc_Layout_getMarginSpace(){var _1=this.$2v();for(var i=0;i<this.members.length;i++){var _3=this.members[i];if(_3.$86h){_1+=this.resizeBarSize}else if(i<this.members.length-1&&!this.$21(this.members[i+1])){_1+=this.membersMargin}
+_1+=this.getMemberGap(_3)}
+if(this.members.length!=0&&this.$21(this.members[0])){_1-=this.membersMargin}
+if(this.memberOverlap!=null)_1+=this.memberOverlap
+return _1}
+,isc.A.getTotalMemberSpace=function isc_Layout_getTotalMemberSpace(){return this.getLength()-this.getMarginSpace()}
+,isc.A.$23=function isc_Layout__getTotalMemberLength(){var _1=0;for(var i=0;i<this.members.length;i++){var _3=this.members[i];if(this.$21(_3))continue;_1+=this.getMemberLength(_3)}
+return _1+this.getMarginSpace()}
+,isc.A.ignoreMember=function isc_Layout_ignoreMember(_1){if(!_1||!this.members||this.members.indexOf(_1)==-1)return;_1.$52f=true}
+,isc.A.stopIgnoringMember=function isc_Layout_stopIgnoringMember(_1){_1.$52f=false;this.reflow()}
+,isc.A.isIgnoringMember=function isc_Layout_isIgnoringMember(_1){if(_1.$52f)
+return _1.$52f;return false}
+,isc.A.$21=function isc_Layout__shouldIgnoreMember(_1){if(_1.visibility==isc.Canvas.HIDDEN&&!(_1.$l0&&_1.$l0.isVisible()))return true;if(this.isIgnoringMember(_1))return true;return false}
+,isc.A.ignoreMemberZIndex=function isc_Layout_ignoreMemberZIndex(_1){if(!_1||!this.members||this.members.indexOf(_1)==-1)return;_1.$52g=true;this.reflow()}
+,isc.A.stopIgnoringMemberZIndex=function isc_Layout_stopIgnoringMemberZIndex(_1){_1.$52g=false;this.reflow()}
+,isc.A.$52h=function isc_Layout__isIgnoringMemberZIndex(_1){if(this.isIgnoringMember(_1))
+return true;else if(_1.$52g)
+return _1.$52g;return false}
+,isc.A.gatherSizes=function isc_Layout_gatherSizes(_1,_2,_3){if(!_2){_2=this.$25;if(_2==null){_2=this.$25=[]}else{_2.length=0}}
+var _4=this.getLengthPolicy();var _5=this.logIsInfoEnabled(this.$2g);for(var i=0;i<this.members.length;i++){var _7=this.members[i];var _8=_2[i];if(_8==null){_8=_2[i]={}}
+if(this.$21(_7)&&!_7.$26){_8.$27=0;if(_5)_8.$28="hidden";continue}
+if(this.memberHasInherentLength(_7)||_4==isc.Layout.NONE){_8.$27=this.getMemberLength(_7);if(_5){_8.$28=(_4==isc.Layout.NONE?"no length policy":"inherent size")}
+continue}
+if(_1&&this.$2n(_7)){var _9=this.getMemberLength(_7);if(_9!=_3[i]){if(_5){this.logInfo("member: "+_7+" overflowed. set length: "+_3[i]+" got length: "+_9,"layout")}
+_8.$29=true;_8.$27=_9}
+continue}
+if(this.$2m(_7)!=null){_8.$27=this.vertical?_7.$po:_7.$pn;if(_5)_8.$28="explicit size";continue}
+if(this.respectSizeLimits){var _10=this.vertical?_7.minHeight:_7.minWidth,_11=this.vertical?_7.maxHeight:_7.maxWidth;if(_10!=null&&_3[i]!=null&&_10>_3[i]){_8.$27=_10;if(_5)_8.$28="minimum size";continue}
+if(_11!=null&&_3[i]!=null&&_11<_3[i]){_8.$27=_11;if(_5)_8.$28="maximum size";continue}}
+if(_8.$27==null){_8.$27=this.$pa;if(_5)_8.$28="no length specified"}}
+return _2}
+,isc.A.resizeMembers=function isc_Layout_resizeMembers(_1,_2,_3){var _4=this.logIsInfoEnabled(this.$2g);for(var i=0;i<this.members.length;i++){var _6=this.members[i],_7=_2[i];if(this.$21(_6))continue;if(_3&&!this.$2n(_6))continue;var _8=null;if(this.shouldAlterBreadth(_6)){if(_4)
+_7.$3b="breadth policy: "+this.getBreadthPolicy();_8=_7.$3c=this.$54l(_6)}else{_7.$3c=this.getMemberBreadth(_6);if(_4){_7.$3b=(this.getBreadthPolicy()==isc.Layout.NONE?"no breadth policy":"explicit size")}}
+var _9=null;if(this.getLengthPolicy()!=isc.Layout.NONE&&(!this.memberHasInherentLength(_6)&&!_7.$29))
+{_9=_7.$3d=_1[i]}
+if(_9!=null&&this.$2n(_6)&&!_6.isDirty()){var _10=(this.vertical?_6.getHeight():_6.getWidth()),_11=this.getMemberLength(_6);if(_11>_10&&_9<=_11&&(_8==null||_8<=this.getMemberBreadth(_6)))
+{if(_4)this.logInfo("not applying "+this.getLengthAxis()+": "+_9+" to overflowed member: "+_6+" w/"+this.getLengthAxis()+": "+_11,"layout");_9=null}}
+if(this.logIsDebugEnabled(this.$2g))this.$42g(_6,_8,_9);if(!_6.isAnimating(this.$2h)){if(this.vertical){_6.resizeTo(_8,_9)}else{_6.resizeTo(_9,_8)}}
+if(_6.isDrawn()){if(_6.isDirty())_6.redraw("Layout getting new size")}else{if(!_6.isDrawn())_6.$3e=true}}}
+,isc.A.$52i=function isc_Layout__enforceStackZIndex(){if(!this.stackZIndex||this.members.length<2)return;for(var _1=0;_1<this.members.length;_1++)
+if(!this.$52h(this.members[_1]))break;var _2=this.members[_1],_3=_2.getZIndex();var _4,_5;for(var i=_1+1;i<this.members.length;i++){if(this.$52h(this.members[i]))continue;_4=_2;_5=_4.getZIndex();_2=this.members[i];_3=_2.getZIndex();if((_3<=_5)&&this.stackZIndex=="lastOnTop")
+_2.moveAbove(_4);else if((_3>=_5)&&this.stackZIndex=="firstOnTop")
+_2.moveBelow(_4)}}
+,isc.A.stackMembers=function isc_Layout_stackMembers(_1,_2,_3){if(_3==null)_3=true;var _4=(this.membersAreChildren?0:this.getOffsetLeft()),_5=(this.membersAreChildren?0:this.getOffsetTop()),_6=this.reverseOrder,_7=(_6?-1:1);var _8=(this.vertical?this.getInnerWidth():this.getInnerHeight())
+-this.$2u();if((this.vertical&&this.canOverflowWidth())||(!this.vertical&&this.canOverflowHeight()))
+{for(var i=0;i<this.members.length;i++){var _10=this.members[i];if(this.$21(_10))continue;var _11=this.getMemberBreadth(_10);if(_11>_8)_8=_11}}
+if(this.logIsDebugEnabled(this.$2g)){this.logDebug("centering wrt visible breadth: "+_8,this.$2g)}
+var _12;if(_6){if(this.isRTL()&&!this.vertical){_12=this.getLength()}else{_12=Math.max(this.getLength(),this.$23())}}
+var _13=(this.vertical?(!_6?_5:_5+_12):(!_6?_4:_4+_12));if(this.align!=null){var _14=this.$23(),_15=Math.max(this.getLength(),_14),_16=_15-_14;if(((!_6&&(this.align==isc.Canvas.BOTTOM||this.align==isc.Canvas.RIGHT))||(_6&&(this.align==isc.Canvas.LEFT||this.align==isc.Canvas.TOP))))
+{_13+=(_7*_16)}else if(this.align==isc.Canvas.CENTER){_13+=Math.round(_16/ 2)}}
+var _17=(this.vertical?_4+this.$tb:_5+this.$td),_18=false,_19=false,_20=0;for(var i=0;i<_1.length;i++){var _10=_1[i],_21=_2?_2[i]:null;if(i==0){var _22;if(this.vertical)_22=(_6?this.$te:this.$td);else _22=(_6?this.$tc:this.$tb);_13+=(_7*_22)}else{if(_18){_13+=(_7*this.resizeBarSize)}else if(!_19){_13+=(_7*this.membersMargin)}}
+var _23=_10.isAnimating(this.$2i);if(this.$21(_10)){if(!this.isIgnoringMember(_10)&&!_23){_10.moveTo(_4+this.$tb,_5+this.$td)}
+if(_10.$86h){var _24=this.getBreadth()-this.$2u();this.makeResizeBar(_10,_17,_13,_24);_18=true}else{if(_10.$3f!=null)_10.$3f.hide();_18=false}
+_19=true;_20++;continue}else{_19=false}
+var _25=_17,_26=isc.Canvas,_27=this.getLayoutAlign(_10);if(_27==_26.RIGHT||_27==_26.BOTTOM){_25=_8-this.getMemberBreadth(_10)+(this.vertical?this.$tb:this.$td)}else if(_27==_26.CENTER){_25=Math.floor((_8-this.getMemberBreadth(_10))/2)+(this.vertical?this.$tb:this.$td)}
+if(this.getMemberOffset!=null)
+_25=this.getMemberOffset(_10,_25,_27);var _28=this.getMemberLength(_10);if(!_23){if(this.vertical){if(!_6)_10.moveTo(_25,_13);else _10.moveTo(_25,_13-_28)}else{if(!_6)_10.moveTo(_13,_25);else _10.moveTo(_13-_28,_25)}}
+_13+=(_7*_28);_13+=(_7*this.getMemberGap(_10));if(_10.$86h){var _24=this.getBreadth()-this.$2u();this.makeResizeBar(_10,_17,_13,_24)}else{if(_10.$3f!=null)_10.$3f.hide()}
+_18=_10.$86h;if(_3)this.memberSizes[i-_20]=_28;if(_2)_21.$3g=_28}
+if(_3)this.memberSizes.length=(i-_20);if(this.overflow!=isc.Canvas.VISIBLE)this.$3h();this.$52i()}
+,isc.A.getLayoutAlign=function isc_Layout_getLayoutAlign(_1){if(_1.layoutAlign!=null)return _1.layoutAlign;if(this.defaultLayoutAlign!=null)return this.defaultLayoutAlign;return this.vertical?(this.isRTL()?isc.Canvas.RIGHT:isc.Canvas.LEFT):isc.Canvas.TOP}
+,isc.A.$3h=function isc_Layout__enforceScrollSize(){var _1,_2,_3=false,_4=false,_5,_6,_7,_8,_9=this.vertical;if(_9){_2=this.$te||0;_1=this.$tc||0}else{_2=this.$tc||0;_1=this.$te||0}
+if(_2>0||_1>0)_3=true;var _10=this.getInnerWidth(),_11=this.getInnerHeight();if(_3){for(var i=this.members.length-1;i>=0;i--){_6=this.members[i];if(!_6.isVisible())continue;if(_9){if(_5==null){_5=_6;_7=_6.getTop()+_6.getVisibleHeight()}
+var _13=_6.getLeft()+_6.getVisibleWidth();if(_8==null||_8<_13)_8=_13}else{if(_5==null){_5=_6;_8=_6.getLeft()+_6.getVisibleWidth()}
+var _14=_6.getTop()+_6.getVisibleHeight();if(_7==null||_7<_14)_7=_14}}
+if(_7==null)_7=0;if(_8==null)_8=0}else{var _15=false;for(var i=this.members.length-1;i>=0;i--){var _6=this.members[i];if(isc.isA.LayoutSpacer(_6)&&_6.isVisible()){var _16=_6.getWidth(),_17=_6.getHeight();if(i==this.members.length-1){_4=true;if(_9)_7=_6.getTop()+_17;else _8=_6.getLeft()+_16}
+if(_9){if(_16>_10&&(_8==null||_16>_8)){_15=true;_8=_16}}else if(_17>_11&&(_7==null||_17>_7)){_15=true;_7=_17}}}
+if(_15&&!_4){for(var i=this.members.length-1;i>=0;i--){var _6=this.members[i];if(isc.isA.LayoutSpacer(_6))continue;if(this.vertical){var _16=_6.getVisibleWidth();if(_16>=_8){_15=false;break}}else{var _17=_6.getVisibleHeight();if(_17>=_7){_15=false;break}}}
+if(_15)_4=true}
+if(_4){if(_8==null)_8=1;if(_7==null)_7=1}}
+if(_4||_3){if(this.vertical){_8+=_1;_7+=_2}else{_8+=_2;_7+=_1}
+this.enforceScrollSize(_8,_7)}
+else this.stopEnforcingScrollSize()}
+,isc.A.setOverflow=function isc_Layout_setOverflow(_1,_2,_3,_4,_5){var _6=this.overflow;if(_6==isc.Canvas.VISIBLE&&_1!=isc.Canvas.VISIBLE){this.$3h()}else if(_6!=isc.Canvas.VISIBLE&&_1==isc.Canvas.VISIBLE){this.stopEnforcingScrollSize()}
+return this.invokeSuper(isc.Layout,"setOverflow",_1,_2,_3,_4,_5)}
+,isc.A.layoutChildren=function isc_Layout_layoutChildren(_1,_2,_3){if(isc.$cv)arguments.$cw=this;if(this.destroying)return;if(this.$3i==null)this.$3i=1;else this.$3i++;var _4=this.$2z;if(!this.members)this.members=[];if(this.children&&this.children.length){for(var i=0;i<this.children.length;i++){this.$60y(this.children[i])}}
+if(!this.isDrawn()&&_1!=this.$od)return;this.$2z=true;if(_2!=null||_3!=null){if((this.vertical&&isc.isA.Number(_2))||(!this.vertical&&isc.isA.Number(_3)))
+{this.$2s=true}}
+if(this.isDrawn()&&this.getLengthPolicy()==isc.Layout.NONE&&!this.$2s){if(this.logIsInfoEnabled(this.$2g)){this.logInfo("Restacking, reason: "+_1,this.$2g)}
+this.stackMembers(this.members);this.$2s=false;this.$3j(_1,_4);return}
+this.$2s=false;var _6=this.getTotalMemberSpace();var _7=this.$3k(_6),_8=this.$25;if(!this.scrollingOnLength()&&this.overflow==isc.Canvas.AUTO&&_7.sum()>this.getLength())
+{this.logInfo("scrolling will be required on length axis",this.$2g);this.$3a=true}
+this.resizeMembers(_7,_8,true);if(this.manageChildOverflow)this.$qv=true;for(var i=0;i<this.members.length;i++){var _9=this.members[i],_10=this.$2y(_9);if(_9.$3e){this.$20(_9);_9.draw();_9.$3e=null;if(!_10&&this.$2y(_9)){this.updateMemberTabIndex(_9)}}}
+if(this.manageChildOverflow)this.$qx(this.members);var _11=this.memberSizes=this.$3k(_6,true,_7,_8);if(!this.$3a&&!this.scrollingOnLength()&&this.overflow==isc.Canvas.AUTO&&_11.sum()>this.getLength())
+{this.logInfo("scrolling will be required on length axis, after overflow",this.$2g);this.$3a=true}
+this.resizeMembers(_11,_8,false);if(this.manageChildOverflow)this.$qv=true;for(var i=0;i<this.members.length;i++){var _9=this.members[i];if(_9.$3e){this.$20(_9);_9.draw();_9.$3e=null}}
+if(this.manageChildOverflow)this.$qx(this.members);this.stackMembers(this.members,_8);this.reportSizes(_8,_1);this.$3j(_1,_4)}
+,isc.A.$60y=function isc_Layout__resolvePercentageSizeForChild(_1){var _2=_1._percent_height,_3=_1._percent_width;if(_1.snapTo){_1.$qw();return}
+var _4=(this.getLengthPolicy()==isc.Layout.FILL);if(!(_1._percent_left||_1._percent_top||_2||_3))return;if(_4&&this.vertical){if(_2!=null&&this.members.contains(_1))_2=null}else if(_4&&!this.vertical){if(_3!=null&&this.members.contains(_1))_3=null}
+_1.setRect(_1._percent_left,_1._percent_top,_3,_2)}
+,isc.A.$3k=function isc_Layout__getMemberSizes(_1,_2,_3,_4){if(!_3){_3=this.$3l;if(_3==null)_3=this.$3l=[];else _3.length=this.members.length}
+_4=this.gatherSizes(_2,_4,_3);this.$3m(_3,_4);return this.getClass().applyStretchResizePolicy(_3,_1,this.minMemberSize,true,this)}
+,isc.A.$3j=function isc_Layout__layoutChildrenDone(_1,_2){this.$3a=false;this.$3n=false;this.$2z=_2;if(this.$rm&&this.isDrawn()&&!this.$uw&&(_1!="resized"||this.shouldRedrawOnResize()))
+{if(this.notifyAncestorsOnReflow&&this.parentElement!=null){this.notifyAncestorsAboutToReflow()}
+this.adjustOverflow();if(this.notifyAncestorsOnReflow&&this.parentElement!=null){this.notifyAncestorsReflowComplete()}}
+if(!this.enforcePolicy){this.vertical?this.vPolicy=isc.Layout.NONE:this.hPolicy=isc.Layout.NONE}}
+,isc.A.$3m=function isc_Layout__getPolicyLengths(_1,_2){for(var i=0;i<_2.length;i++){_1[i]=_2[i].$27}}
+,isc.A.getMemberSizes=function isc_Layout_getMemberSizes(){if(this.memberSizes)return this.memberSizes.duplicate();return this.memberSizes}
+,isc.A.getScrollWidth=function isc_Layout_getScrollWidth(_1){if(isc.$cv)arguments.$cw=this;if(this.$qz){this.$qz=null;this.adjustOverflow("widthCheckWhileDeferred")}
+if(!_1&&this.$su!=null)return this.$su;var _2=this.children?this.$sy(this.children,true):0,_3=this.members?this.$sy(this.members,true):0,_4=Math.max(_2,_3+this.$tc);return(this.$su=_4)}
+,isc.A.getScrollHeight=function isc_Layout_getScrollHeight(_1){if(isc.$cv)arguments.$cw=this;if(this.$qz){this.$qz=null;this.adjustOverflow("heightCheckWhileDeferred")}
+if(!_1&&this.$sz!=null)return this.$sz;var _2=this.children?this.$s3(this.children,true):0,_3=this.children?this.$s3(this.members,true):0,_4=Math.max(_2,_3+this.$te);return(this.$sz=_4)}
+,isc.A.layoutIsDirty=function isc_Layout_layoutIsDirty(){return this.$3n==true}
+,isc.A.reflow=function isc_Layout_reflow(_1){if(this.$3n)return;if(this.isDrawn()){this.$3n=true;if(this.instantRelayout){this.layoutChildren(_1)}else{var _2=this,_3=this.$3i;isc.EH.$ms(function(){if(!_2.destroyed)_2.reflowNow(_1,_3)})}}}
+,isc.A.reflowNow=function isc_Layout_reflowNow(_1,_2){if(_2!=null&&_2<this.$3i)return;this.layoutChildren(_1)}
+,isc.A.childResized=function isc_Layout_childResized(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(this.suppressMemberAnimations){var _5=false;if(_1.isAnimating(this.$do)){_5=true;_1.finishAnimation(this.$do)}
+if(_1.isAnimating(this.$zb)){_5=true;_1.finishAnimation(this.$zb)}
+if(_1.isAnimating(this.$3o)){_5=true;_1.finishAnimation(this.$3o)}
+if(_5)return}
+this.$t6("child resize");if(this.$2z)return;if(_1.$pp)return;if(!this.members.contains(_1))return;var _6=_1;if(_4!="overflow"&&_4!="overflow changed"){if(_2!=null&&_2!=0){var _7=_6.$pn;_6.$pn=_6._percent_width||_6.getWidth();this.$3p(_7,_6,_4,true)}
+if(_3!=null&&_3!=0){var _8=_6.$po;_6.$po=_6._percent_height||_6.getHeight();this.$3p(_8,_6,_4)}}
+var _9=isc.SB.concat("memberResized: (",_2,",",_3,"): ",_6.getID());if(_5)this.reflowNow(_9);else
+this.reflow(_9)}
+,isc.A.$3p=function isc_Layout__reportNewSize(_1,_2,_3,_4){if(!this.logIsDebugEnabled(this.$2g))return;var _5=_4?_2.$pn:_2.$po;if(_5!=_1){this.logDebug("new user "+(_4?"width: ":"height: ")+_5+" for member "+_2+", oldSize: "+_1+" reason: "+_3+(this.logIsDebugEnabled("userSize")?this.getStackTrace():""),"layout")}}
+,isc.A.childVisibilityChanged=function isc_Layout_childVisibilityChanged(_1,_2){if(!this.members.contains(_1))return;if(!_1.isDrawn())this.$2s=true;this.reflow("member changed visibility: "+_1);if(_1.$3f&&_1.$3f.showGrip&&_1.$3f.showClosedGrip){if(_1.$3f.label)_1.$3f.label.stateChanged()}
+this.$t6("child visibility changed")}
+,isc.A.pageResize=function isc_Layout_pageResize(){var _1=this.$3i;this.Super("pageResize",arguments);if(this.isDrawn()&&(this.$3i==null||_1==this.$3i))
+{this.reflow("pageResize")}}
+,isc.A.sectionHeaderClick=function isc_Layout_sectionHeaderClick(_1){var _2=_1.section;if(_2==null)return;if(!isc.isAn.Array(_2))_2=[_2];var _3=false;for(var i=0;i<_2.length;i++){if(isc.isA.String(_2[i]))_2[i]=window[_2[i]];if(_2[i].visibility!="hidden")_3=true}
+if(_3){_2.map("hide");_1.setExpanded(false)}else{_2.map("show");_1.setExpanded(true)}}
+,isc.A.getMember=function isc_Layout_getMember(_1){var _2=this.getMemberNumber(_1);if(_2==-1)return null;return this.members[_2]}
+,isc.A.getMemberNumber=function isc_Layout_getMemberNumber(_1){if(isc.isA.String(_1)){_1=window[_1];return this.members.indexOf(_1)}else if(isc.isA.Canvas(_1)){return this.members.indexOf(_1)}
+if(isc.isA.Number(_1))return _1;return-1}
+,isc.A.hasMember=function isc_Layout_hasMember(_1){return this.members.contains(_1)}
+,isc.A.getMembers=function isc_Layout_getMembers(_1){return this.members}
+,isc.A.getPrintChildren=function isc_Layout_getPrintChildren(){var _1=this.members;if(!_1||_1.length==0)return;var _2=[];for(var i=0;i<_1.length;i++){if(this.shouldPrintChild(_1[i]))_2.add(_1[i])}
+return(_2.length>0)?_2:null}
+,isc.A.getChildPrintHTML=function isc_Layout_getChildPrintHTML(_1,_2,_3){if(!_2)_2={};if(_2.inline==null&&!this.vertical&&!this.printVertical){_2.inline=true}
+return this.Super("getChildPrintHTML",[_1,_2,_3])}
+,isc.A.getCompletePrintHTMLFunction=function isc_Layout_getCompletePrintHTMLFunction(_1,_2){var _3=this;return function(_5){_3.isPrinting=false;var _4=_3.vertical||_3.printVertical;if(isc.isAn.Array(_5)&&_5.length>0){if(_4)_5=_5.join(isc.emptyString);else{_5="<TABLE WIDTH=100%><TR><TD valign=top>"+_5.join("</TD><TD valign=top>")+"</TD></TR></TABLE>"}}
+if(_5)_1[2]=_5;_1=_1.join(isc.emptyString);delete _3.currentPrintProperties;if(_2){_3.fireCallback(_2,"html, callback",[_1,_2]);return null}else{return _1}}}
+,isc.A.addMember=function isc_Layout_addMember(_1,_2,_3){this.addMembers(_1,_2,_3);return this}
+,isc.A.addMembers=function isc_Layout_addMembers(_1,_2,_3){if(!_1)return;if(isc.$cv)arguments.$cw=this;this.$3q();if(this.logIsInfoEnabled(this.$2g)){this.logInfo("adding newMembers: "+_1+(_2!=null?" at position: "+_2:""),"layout")}
+if(!isc.isAn.Array(_1)){this.$2j[0]=_1;_1=this.$2j}
+if(this.members==null)this.members=[];if(_2>this.members.length)_2=this.members.length;var _4=this.isDrawn();for(var i=0;i<_1.length;i++){var _6=_1[i];if(!_6)continue;if(!isc.isAn.Instance(_6)){_6=this.createCanvas(_6)}
+if(!isc.isA.Canvas(_6)){this.logWarn("addMembers() unable to resolve member:"+this.echo(_6)+" to a Canvas - ignoring");continue}
+if(this.members.contains(_6)){if(_2!=null){this.members.slide(this.members.indexOf(_6),_2+i)}
+continue}
+if(_6.addAsPeer||_6.snapEdge){this.addPeer(_6,null,false);continue}else if(_6.addAsChild||_6.snapTo){this.addChild(_6,null,false);continue}
+if(_6.parentElement)_6.deparent();if(_6.isDrawn())_6.clear();if(_2!=null){this.members.addAt(_6,_2+i)}else{this.members.add(_6)}
+this.$42h(_6);this.autoSetBreadth(_6);var _7=_4&&this.animateMembers&&!_3&&_1.length==1&&_6.visibility!=isc.Canvas.HIDDEN;if(_7)_6.hide();var _8=(_4&&this.getLengthPolicy()==isc.Layout.NONE);if(this.membersAreChildren){this.addChild(_6,null,_8)}else{this.addPeer(_6,null,_8)}
+_6.moveTo(0,0);if(this.isDrawn())this.updateMemberTabIndex(_6);if(this.isDrawn()&&this.memberHasInherentLength(_6)){this.$20(_6);if(!_6.isDrawn())_6.draw()}}
+this.$2j[0]=null;if(_7){this.$3r(_6)}else
+this.reflow(this.$2k);this.$62s()}
+,isc.A.$42h=function isc_Layout__getUserSizes(_1){if(_1._percent_height)_1.$po=_1._percent_height;if(_1._percent_width)_1.$pn=_1._percent_width;if(this.memberHasInherentLength(_1)){if(!_1.$po&&!_1.$t9){_1.restoreDefaultSize(true)}
+if(!_1.$pn&&!_1.$t8){_1.restoreDefaultSize()}}}
+,isc.A.$3s=function isc_Layout__animateMargin(_1,_2){var _3=this;var _4=_1;var _5=this.getMemberNumber(_1);if(_5==this.members.length-1)_1=this.getMember(_5-1);if(!_1)return;var _6=this.membersMargin+this.getMemberGap(_1);if(_2)_1.$22=-(_6+1);this.registerAnimation(function(_8){var _7=Math.floor(_8*_6);if(_2)_7=_6-_7;_1.$22=-_7;if(_8==1)_1.$22=null},this.animateMemberTime)}
+,isc.A.removeChild=function isc_Layout_removeChild(_1,_2){isc.Canvas.$b4.removeChild.call(this,_1,_2);if(this.membersAreChildren&&this.members.contains(_1)){this.removeMember(_1)}}
+,isc.A.removeMember=function isc_Layout_removeMember(_1,_2){this.removeMembers(_1,_2)}
+,isc.A.removeMembers=function isc_Layout_removeMembers(_1,_2){if(!_1)return;this.$3q();if(!isc.isAn.Array(_1)){this.$2j[0]=_1;_1=this.$2j}
+if(_1===this.members)_1=_1.duplicate();for(var i=0;i<_1.length;i++){var _4=_1[i];if(isc.isA.Canvas(_6))continue;_1[i]=this.getMember(_4);if(_1[i]==null){this.logWarn("couldn't find member to remove: "+this.echoLeaf(_4));_1.removeAt(i);i-=1}}
+var _5=(this.animateMembers&&_1.length==1&&!_2),_6=(_5?_1[0]:null);if(_5){if(_6.parentElement!=this||_6.destroying||!_6.isVisible())
+{_5=false}}
+if(_5){var _7=this,_8=_1.duplicate(),_9=function(){_7.$3t(_8)};this.$3u(_6,_9)}else{this.$3t(_1)}
+this.$2j[0]=null;this.$62s()}
+,isc.A.$3t=function isc_Layout__completeRemoveMembers(_1){if(!_1)return;for(var i=0;i<_1.length;i++){var _3=_1[i];this.members.remove(_3);if(this.membersAreChildren&&_3.parentElement==this)_3.deparent();_3.$t9=_3.$t8=null;if(_3.$3f){_3.$3f.destroy();_3.$3f=null}
+if(_3.showTarget==this)delete _3.showTarget;if(_3.$3v)_3.destroy()}
+this.reflow(this.$2l)}
+,isc.A.setMembers=function isc_Layout_setMembers(_1){if(_1==this.members||!isc.isAn.Array(_1))return;var _2=[];for(var i=0;i<this.members.length;i++){if(!_1.contains(this.members[i]))_2.add(this.members[i])}
+var _4=this.instantRelayout;this.instantRelayout=false;this.removeMembers(_2,true);this.addMembers(_1,0,true);this.instantRelayout=_4;if(_4)this.reflow("set members")}
+,isc.A.showMember=function isc_Layout_showMember(_1,_2){return this.showMembers([_1],_2)}
+,isc.A.showMembers=function isc_Layout_showMembers(_1,_2){if(this.isDrawn()&&this.animateMembers&&_1.length==1){this.$3r(_1[0],_2)}else{for(var i=0;i<_1.length;i++){var _4=this.getMember(_1[i]);_4.show()}
+if(_2)this.fireCallback(_2)}}
+,isc.A.$3r=function isc_Layout__animateMemberShow(_1,_2){_1=this.getMember(_1);this.setNewMemberLength(_1);_1.animateShow(this.animateMemberEffect,_2,this.animateMemberTime);if(_1.isAnimating())this.$3s(_1,true)}
+,isc.A.setNewMemberLength=function isc_Layout_setNewMemberLength(_1){_1.$26=true;var _2=this.$3k(this.getTotalMemberSpace());delete _1.$26;var _3=_2[this.members.indexOf(_1)];var _4=this.$2z;this.$2z=true;this.vertical?_1.setHeight(_3):_1.setWidth(_3);this.$2z=_4}
+,isc.A.hideMember=function isc_Layout_hideMember(_1,_2){return this.hideMembers([_1],_2)}
+,isc.A.hideMembers=function isc_Layout_hideMembers(_1,_2){this.$3x=_2;if(this.animateMembers&&_1.length==1){this.$3u(_1[0],_2)}else{for(var i=0;i<_1.length;i++){var _4=this.getMember(_1[i]);_4.hide()}
+this.fireCallback(_2)}}
+,isc.A.$3u=function isc_Layout__animateMemberHide(_1,_2){_1=this.getMember(_1);_1.animateHide(this.animateMemberEffect,_2,this.animateMemberTime);if(_1.isAnimating())this.$3s(_1)}
+,isc.A.setVisibleMember=function isc_Layout_setVisibleMember(_1){var _2=this.getMember(_1);if(_2==null)return;this.hideMembers(this.members);this.showMember(_2)}
+,isc.A.reorderMember=function isc_Layout_reorderMember(_1,_2){this.reorderMembers(_1,_1+1,_2)}
+,isc.A.reorderMembers=function isc_Layout_reorderMembers(_1,_2,_3){this.members.slideRange(_1,_2,_3);this.$87o("membersReordered")}
+,isc.A.$87o=function isc_Layout__membersReordered(_1){this.layoutChildren(_1);this.$62s()}
+,isc.A.replaceMember=function isc_Layout_replaceMember(_1,_2){var _3=this.instantRelayout;this.instantRelayout=false;var _4=this.getMemberNumber(_1);this.removeMember(_1,true);this.addMember(_2,_4,true);this.instantRelayout=_3;if(_3)this.reflowNow()}
+,isc.A.$62s=function isc_Layout__membersChanged(){if(!this.destroying){this.$86g()}
+if(this.membersChanged)this.membersChanged()}
+,isc.A.$86g=function isc_Layout__computeShowResizeBarsForMembers(){var _1=this.defaultResizeBars;for(var i=this.members.length-1;i>=0;i--){var _3=this.members[i];if(_3==null)continue;var _4=false;if(_1==isc.Canvas.MARKED){_4=_3.showResizeBar}else if(_1==isc.Canvas.MIDDLE){_4=(i<this.members.length-1)&&(_3.showResizeBar!=false)}else if(_1==isc.Canvas.ALL){_4=_3.showResizeBar!=false}
+var _5=_3.$86h;_3.$86h=_4;if(_5!=_4)this.reflow("$86h changed")}}
+,isc.A.updateMemberTabIndex=function isc_Layout_updateMemberTabIndex(_1){if(!this.$2y(_1)||(_1.tabIndex!=null&&!_1.$sp))return;var _2,_3=this.members.indexOf(_1);while(_3>0&&_2==null){_3-=1
+_2=this.members[_3].$v5()}
+if(_2==null&&(this.tabIndex==null||this.$sp))
+_2=this;if(_2){_1.$sq(_2)}}
+,isc.A.dragRepositionStart=function isc_Layout_dragRepositionStart(){var _1=isc.EH.dragTarget;if(!this.hasMember(_1)||_1.getDragAppearance(isc.EH.DRAG_REPOSITION)!="target")return;var _2=_1.getPageLeft(),_3=_1.getPageTop();this.$3y(_1,_2,_3)}
+,isc.A.$3y=function isc_Layout__popOutDraggingMember(_1,_2,_3){this.$3z=_1;var _4=this.$30(_1,"$31",this.showDragPlaceHolder)
+_1.$32=_4;var _5=this.instantRelayout;this.instantRelayout=false;this.addMember(_4,this.getMemberNumber(_1),true);_1.deparent();_1.eventParent=this;this.instantRelayout=_5;_1.moveTo(_2,_3);_1.draw()}
+,isc.A.dragRepositionStop=function isc_Layout_dragRepositionStop(){var _1=isc.EH.dragTarget;if(!this.members.contains(_1)&&_1!=this.$3z)return;var _2=_1.getDragAppearance(isc.EH.DRAG_REPOSITION),_3=_2==isc.EH.TARGET;if(!_3&&(_2!=isc.EH.OUTLINE))return false;var _4=_3?isc.EH.STOP_BUBBLING:false;this.$3z=null;if(_1.eventParent==this)_1.eventParent=null;if(_1.dropSucceeded)return _4;var _5=_1.$32;if(_5!=null){if(_1.parentElement!=null||_1.destroyed){this.$33(_1)}else{_1.$32=null;var _6=this.getMemberNumber(_5),_7=_5.getPageRect(),_8=this,_9=function(){_8.replaceMember(_5,_1)};if(this.animateMembers){_1.animateRect(_7[0],_7[1],_7[2],_7[3],_9)}else
+_9(true)}}
+return _4}
+,isc.A.$30=function isc_Layout__createSpacer(_1,_2,_3){var _4,_5;if(_3){_4=this.createAutoChild("placeHolder",_5,isc.Canvas)}else{_4=isc.LayoutSpacer.create(_5)}
+_4.setRect(_1.getRect());_4.$pn=_4.getWidth();_4.$po=_4.getHeight();_4.layoutAlign=_1.layoutAlign;_4.extraSpace=(_1.extraSpace||0);_4.$3v=true;return _4}
+,isc.A.removePlaceHolder=function isc_Layout_removePlaceHolder(_1){if(this.animateMembers&&!isc.isA.LayoutSpacer(_1)){var _2=this.$30(_1);this.replaceMember(_1,_2);_1.destroy();_1=_2}
+this.removeMember(_1)}
+);isc.evalBoundary;isc.B.push(isc.A.willAcceptDrop=function isc_Layout_willAcceptDrop(){if(!this.canDropComponents){return this.canAcceptDrop==null?false:this.canAcceptDrop}else if(!this.canAcceptDrop)return false;return this.invokeSuper(isc.Layout,"willAcceptDrop")}
+,isc.A.dropOver=function isc_Layout_dropOver(){if(!this.willAcceptDrop())return;this.showDropLine();isc.EventHandler.dragTarget.bringToFront();return true}
+,isc.A.dropMove=function isc_Layout_dropMove(){if(!this.willAcceptDrop())return;this.showDropLine()}
+,isc.A.dropOut=function isc_Layout_dropOut(){this.hideDropLine()}
+,isc.A.dropStop=function isc_Layout_dropStop(){this.hideDropLine()}
+,isc.A.getDropComponent=function isc_Layout_getDropComponent(_1,_2){if(!isc.isA.Palette(_1))return _1;var _3=_1.transferDragData(),_4=(isc.isAn.Array(_3)?_3[0]:_3);return _4.liveObject}
+,isc.A.drop=function isc_Layout_drop(){if(!this.willAcceptDrop()||this.$88z)return;var _1=this.getDropPosition();var _2=this.getDropComponent(isc.EventHandler.getDragTarget(),_1);if(!_2)return;var _3=this.members.indexOf(_2);if(_3==-1&&_2.$32)
+_3=this.members.indexOf(_2.$32)
+if(_3!=-1&&(_3==_1||_3+1==_1))
+{return false}
+_2.dropSucceeded=true;if(isc.Browser.isMoz){this.delayCall("$34",[_2,_1])}else{this.$34(_2,_1)}
+return isc.EH.STOP_BUBBLING}
+,isc.A.$34=function isc_Layout__completeDrop(_1,_2){this.hideDropLine();var _3=_1.parentElement;if(_3&&_1.getDragAppearance(isc.EH.dragOperation)==isc.EH.OUTLINE&&this.animateMembers&&isc.isA.Layout(_3)&&_3.hasMember(_1))
+{_3.$3y(_1,isc.EH.dragOutline.getPageLeft(),isc.EH.dragOutline.getPageTop())}
+var _4=false;if(this.members.contains(_1)){var _5=this.members.indexOf(_1);if(_5<_2)_4=true;this.removeMember(_1,true)}else{var _6=_1.$32;if(_6!=null){var _7=this.getMemberNumber(_6)
+if((_7>=0)&&(_7<_2)){_4=true}
+_6.parentElement.$33(_1)}}
+var _8=_2-(_4?1:0);if(!this.animateMembers||(_1.dragAppearance!="target"&&_1.dragAppearance!="outline")){this.addMember(_1,_8);delete _1.dropSucceeded;return}
+var _9=this.$30(_1,"$35");this.addMember(_9,_2);this.reflowNow();this.$36=_1;var _10=this,_11=_9.getPageLeft(),_12=_9.getPageTop();if(_4){var _13=this.membersMargin+this.getMemberGap(_1);if(this.vertical)_12-=(_1.getVisibleHeight()+_13);else _11-=(_1.getVisibleWidth()+_13)}
+if(_9==this.members.last()&&this.members.length>1){var _14=(this.members[this.members.length-2].$22||0);if(this.vertical)_12-=_14;else _11-=_14}
+_1.animateMove(_11,_12,function(){_10.$36=null;var _15=_10.instantRelayout;_10.instantRelayout=false;_9.destroy();_1.dropSucceeded=null;_10.addMember(_1,_8,true);_10.instantRelayout=_15;if(_15)_10.reflowNow()},this.animateMemberTime)}
+,isc.A.$33=function isc_Layout__cleanUpPlaceHolder(_1){var _2=_1.$32;if(this.hasMember(_2)){_1.$32=null;this.removePlaceHolder(_2)}}
+,isc.A.$3q=function isc_Layout__finishDropAnimation(){if(this.$36!=null){this.$36.finishAnimation("move")}}
+,isc.A.getDropPosition=function isc_Layout_getDropPosition(){var _1=this.vertical?this.getOffsetY():this.getOffsetX();if(_1<0)return 0;var _2=this.vertical?this.$td:this.$tb;for(var i=0;i<this.memberSizes.length;i++){var _4=this.memberSizes[i],_5=this.members[i];if(_1<(_2+(_4/ 2))){if(_5.canDropBefore===false)return false;return i}
+_2+=_4+this.membersMargin+this.getMemberGap(_5)}
+return this.members.length}
+,isc.A.$37=function isc_Layout__getChildInset(_1){return(_1?this.getTopMargin()+this.getTopBorderSize():this.getLeftMargin()+this.getLeftBorderSize())}
+,isc.A.getPositionOffset=function isc_Layout_getPositionOffset(_1){if(this.members.length==0){return this.vertical?this.getPageTop()+this.$37(true)+this.$td:this.getPageLeft()+this.$37()+this.$tb}
+if(_1<this.members.length){var _2=this.members[_1];return(this.vertical?_2.getPageTop():_2.getPageLeft())}else{var _2=this.members[_1-1];return(this.vertical?_2.getPageBottom():_2.getPageRight())}}
+,isc.A.showDropLine=function isc_Layout_showDropLine(){if(this.$88z)return;if(this.showDropLines==false){return}
+var _1=this.getDropPosition();if(!isc.isA.Number(_1)){this.hideDropLine();return}
+if(_1<0)return;if(this.$3n)this.reflowNow();if(!this._dropLine)this._dropLine=this.makeDropLine();var _2=this.dropLineThickness,_3=this.getPositionOffset(_1);var _4;if(this.$tb==null)this.setLayoutMargin();if(_1==0){_4=this.vertical?this.$td:this.$tb}else if(_1==this.members.length){_4=-(this.vertical?this.$te:this.$tc)}else{_4=this.membersMargin}
+_3=_3-Math.round((_4+_2)/2);var _5=this.vertical?this.$tb+this.$37():this.$td+this.$37(true);var _6=this.vertical?this.getVisibleWidth()-this.getVMarginBorder()-this.$2u():this.getVisibleHeight()-this.getHMarginBorder()-this.$2v();var _7=_6+this.$2v();this._dropLine.setPageRect((this.vertical?this.getPageLeft()+_5:_3),(this.vertical?_3:this.getPageTop()+_5),(this.vertical?_6:_2),(this.vertical?_2:_7));var _8=this.topElement||this;if(this._dropLine.getZIndex()<_8.getZIndex())this._dropLine.moveAbove(_8);this._dropLine.show()}
+,isc.A.hideDropLine=function isc_Layout_hideDropLine(){if(this._dropLine)this._dropLine.hide()}
+,isc.A.makeDropLine=function isc_Layout_makeDropLine(){var _1=this.createAutoChild("dropLine",null,isc.Canvas);_1.dropTarget=this;return _1}
+,isc.A.createResizeBar=function isc_Layout_createResizeBar(_1,_2,_3,_4){var _5=isc.ClassFactory.getClass(this.resizeBarClass).createRaw();_5.autoDraw=false;_5.target=_1;_5.targetAfter=_3;_5.hideTarget=_4;_5.layout=this;_5.vertical=!this.vertical;_5.dragScrollDirection=this.vertical?isc.Canvas.VERTICAL:isc.Canvas.HORIZONTAL;_5.dragScrollType="parentsOnly";_5.init();return _5}
+,isc.A.makeResizeBar=function isc_Layout_makeResizeBar(_1,_2,_3,_4){var _5=_1.$3f;if(_5==null){var _6=_1,_7,_8,_9=this.getMember(this.getMemberNumber(_1)+1)||_1;if(_1.resizeBarTarget=="next"){_6=_9;_7=true}
+if(_1.resizeBarHideTarget!=null){if(_1.resizeBarHideTarget=="next")_8=_9;else _8=_1}else{_8=_6}
+_5=this.createResizeBar(_6,_3,_7,_8);_1.$3f=_5}
+if(this.vertical){_5.setRect(_2,_3,_4,this.resizeBarSize)}else{if(this.isRTL())_3-=this.resizeBarSize;_5.setRect(_3,_2,this.resizeBarSize,_4)}
+if(this.membersAreChildren){this.addChild(_5)}else{this.addPeer(_5)}
+if(!_5.isDrawn())_5.draw();if(!_5.isVisible())_5.show();return _5}
+,isc.A.propertyChanged=function isc_Layout_propertyChanged(_1,_2){this.invokeSuper(isc.Layout,"propertyChanged",_1,_2);if(isc.endsWith(_1,"Margin"))this.setLayoutMargin()}
+,isc.A.getLengthAxis=function isc_Layout_getLengthAxis(){return this.vertical?"height":"width"}
+,isc.A.$42g=function isc_Layout__reportResize(_1,_2,_3){var _4=this.vertical?_2:_3,_5=this.vertical?_3:_2,_6=_1.getDelta("width",_4,_1.getWidth()),_7=_1.getDelta("height",_5,_1.getHeight());if((_6!=null&&_6!=0)||(_7!=null&&_7!=0)){this.logDebug("resizing "+_1+(_1.isDrawn()?" (drawn): ":": ")+(_2!=null?_2+(this.vertical?"w ":"h "):"")+(_3!=null?_3+(this.vertical?"h":"w"):""),"layout")}}
+,isc.A.reportSizes=function isc_Layout_reportSizes(_1,_2){if(!this.logIsInfoEnabled(this.$2g))return;var _3="layoutChildren (reason: "+_2+"):\nlayout specified size: "+this.getWidth()+"w x "+this.getHeight()+"h\n"+"drawn size: "+this.getVisibleWidth(true)+"w x "+this.getVisibleHeight(true)+"h\n"+"available size: "+this.getInnerWidth()+(!this.vertical?"w (length) x ":"w x ")+this.getInnerHeight()+(this.vertical?"h (length)\n":"h\n");for(var i=0;i<_1.length;i++){var _5=_1[i];_3+=" "+this.members[i]+"\n";_3+=" "+_5.$3g+" drawn length"+(_5.$3d?" (resizeLength: "+_5.$3d+")":"")+" (policyLength: "+_5.$27+")"+" ("+_5.$28+")\n";_3+=" "+_5.$3c+" drawn breadth ("+_5.$3b+")\n"}
+if(_1.length==0)_3+="[No members]";this.logInfo(_3,"layout")}
+);isc.B._maxIndex=isc.C+125;isc.defineClass("HLayout","Layout");isc.A=isc.HLayout.getPrototype();isc.A.orientation="horizontal";isc.A.animateMemberEffect={effect:"slide",startFrom:"L",endAt:"L"};isc.defineClass("VLayout","Layout");isc.A=isc.VLayout.getPrototype();isc.A.orientation="vertical";isc.defineClass("HStack","Layout");isc.A=isc.HStack.getPrototype();isc.A.orientation="horizontal";isc.A.hPolicy=isc.Layout.NONE;isc.A.animateMemberEffect={effect:"slide",startFrom:"L",endAt:"L"};isc.A.defaultWidth=20;isc.defineClass("VStack","Layout");isc.A=isc.VStack.getPrototype();isc.A.orientation="vertical";isc.A.vPolicy=isc.Layout.NONE;isc.A.defaultHeight=20;isc.defineClass("LayoutSpacer","Canvas");isc.A=isc.LayoutSpacer.getPrototype();isc.A.overflow="hidden";isc.A.draw=isc.Canvas.NO_OP;isc.A.redraw=isc.Canvas.NO_OP;isc.A.$59d=true;isc.Layout.registerDupProperties("members");isc.defineClass("Button","StatefulCanvas");isc.A=isc.Button.getPrototype();isc.A.title="Untitled Button";isc.A.suppressClassName=true;isc.A.useEventParts=true;isc.A.autoFitDirection="horizontal";isc.A.baseStyle="button";isc.A.showDown=true;isc.A.showFocused=true;isc.A.showRollOver=true;isc.A.mozOutlineOffset="0px";isc.A.wrap=false;isc.A.height=20;isc.A.width=100;isc.A.overflow=isc.Canvas.HIDDEN;isc.A.redrawOnDisable=false;isc.A.redrawOnStateChange=false;isc.A.cursor=isc.Canvas.HAND;isc.A.className=null;isc.A.canFocus=true;isc.A=isc.Button.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$38="px;";isc.A.$39=";";isc.A.$4a="border:";isc.A.$4b="padding-top:0px;padding-bottom:0px;";isc.A.$4c="padding:";isc.A.$4d="background-color:";isc.A.$4e="margin:0px;";isc.A.$4f=["' style='",,,,,,,,,,,null];isc.A.$4g="</td></tr></tbody></table>";isc.A.$4h="<table cellspacing='0' cellpadding='0'><tbody><tr><td ";isc.A.$4i="<table width='100%' cellspacing='0' cellpadding='0'><tbody><tr><td ";isc.A.$4j="font-size:1px;padding-right:";isc.A.$4k="font-size:1px;padding-left:";isc.A.$4l="px'>";isc.A.$4m="</td><td ";isc.A.$4n="class='";isc.A.$4p="'>";isc.A.$4q="' nowrap='true'>";isc.A.$4r="</td></tr></tbody></table>";isc.A.$o1="right";isc.A.$4s={align:"absmiddle",extraStuff:" style='vertical-align:middle' eventpart='icon'"};isc.A.$4t=[null,"$4u"];isc.B.push(isc.A.initWidget=function isc_Button_initWidget(){if(this.border!=null){this.$4v=this.border;this.border=null}
+if(this.padding!=null){this.$4w=this.padding;this.padding=null}
+if(this.backgroundColor!=null){this.$4x=this.backgroundColor;this.backgroundColor=null}
+var _1=isc.Button.$762;if(_1==null){_1=isc.Button.$762=(isc.Browser.isIE||(isc.Browser.isMoz&&!isc.Browser.isStrict&&isc.Canvas.getInstanceProperty("$ks"))?false:true)}
+this.redrawOnResize=_1;return isc.StatefulCanvas.$b4.initWidget.call(this)}
+,isc.A.getInnerHTML=function isc_Button_getInnerHTML(){var _1=isc.Button;if(!_1.$4y){_1._100Size=" width='100%' height='100%";_1._100Width=" width='100%";_1.$xf="width='";_1.$xg="' height='";_1.$4z="' style='table-layout:fixed;overflow:hidden;";_1.$40="'><tbody><tr><td class='";_1.$41="'><tbody><tr><td nowrap='true' class='";var _2=_1.$4y=[];_2[0]="<table cellspacing='0' cellpadding='0' ";_2[9]="' align='";_1.$42="' valign='center";_1.$43="' valign='top";_1.$44="' valign='bottom";_1.$45="' tabindex='-1' onfocus='";_1.$46=".$47()'>";_1.$48="'>"}
+var _2=_1.$4y;if(this.isPrinting||this.redrawOnResize==false){_2[1]=(this.isPrinting?_1._100Width:_1._100Size);_2[2]=null;_2[3]=null;_2[4]=null}else{_2[1]=_1.$xf;_2[2]=this.getInnerWidth();_2[3]=_1.$xg;_2[4]=this.getInnerHeight()}
+if(this.overflow==isc.Canvas.VISIBLE){_2[5]=null}else{_2[5]=_1.$4z}
+_2[6]=(this.wrap?_1.$40:_1.$41);_2[7]=this.isPrinting?this.getPrintStyleName():this.getStateName();var _3=(this.cssText||this.$4v||this.$4w||this.$4x||this.margin||this.$49());if(_3)_2[8]=this.$5a();else _2[8]=null;_2[10]=(this.$5b()?isc.Canvas.CENTER:this.align);_2[11]=(this.valign==isc.Canvas.TOP?_1.$43:(this.valign==isc.Canvas.BOTTOM?_1.$44:_1.$42));if(this.$kk()&&this._useNativeTabIndex){_2[12]=_1.$45;_2[13]=this.getID();_2[14]=_1.$46}else{_2[12]=_1.$48;_2[13]=_2[14]=null}
+this.fillInCell(_2,15)
+return _2.join(isc.emptyString)}
+,isc.A.setOverflow=function isc_Button_setOverflow(){var _1=this.isDirty();this.Super("setOverflow",arguments);if(!_1)this.redraw()}
+,isc.A.getPrintTagStart=function isc_Button_getPrintTagStart(_1){var _2=this.currentPrintProperties,_3=_2.topLevelCanvas==this,_4=!_1&&!_3&&_2.inline;return[(_4?"<span ":"<div "),this.getPrintTagStartAttributes(_1),">"].join(isc.emptyString)}
+,isc.A.$5a=function isc_Button__getCellStyleHTML(){var _1=this.$4f;_1[1]=(this.cssText?this.cssText:null);if(this.$4v!=null){_1[2]=this.$4a;_1[3]=this.$4v;_1[4]=this.$39}else{_1[2]=null;_1[3]=null;_1[4]=null}
+var _2=this.$4w;if(_2!=null){_1[5]=this.$4c;_1[6]=_2;_1[7]=this.$39}else{_1[5]=null;_1[6]=null;_1[7]=null}
+if(this.$49()){_1[7]=(_1[7]||isc.emptyString)+this.$4b}
+if(this.$4x!=null){_1[8]=this.$4d;_1[9]=this.$4x;_1[10]=this.$39}else{_1[8]=null;_1[9]=null;_1[10]=null}
+if(this.margin!=null)_1[11]=this.$4e;else _1[11]=null;return _1.join(isc.emptyString)}
+,isc.A.$49=function isc_Button__writeZeroVPadding(){return this.overflow==isc.Canvas.HIDDEN&&!this.isAnimating()&&(isc.Browser.isMoz||isc.Browser.isSafari||isc.Browser.isIE)}
+,isc.A.setBorder=function isc_Button_setBorder(_1){this.$4v=_1;this.markForRedraw()}
+,isc.A.setPadding=function isc_Button_setPadding(_1){this.$4w=_1;this.markForRedraw()}
+,isc.A.setBackgroundColor=function isc_Button_setBackgroundColor(_1){this.$4x=_1;this.markForRedraw()}
+,isc.A.$5c=function isc_Button__endTemplate(_1,_2){_1[_2]=this.$4g;_1.length=_2+1;return _1}
+,isc.A.$5b=function isc_Button__iconAtEdge(){return this.icon!=null&&this.iconAlign!=null&&(this.iconAlign==this.iconOrientation)&&(this.iconAlign!=this.align)}
+,isc.A.fillInCell=function isc_Button_fillInCell(_1,_2){var _3=this.isRTL();var _4=this.getTitleHTML();if(!this.icon){if(isc.Browser.isMoz){var _5=this.reliableMinHeight;_1[_2]=(_5?"<div>":null);_1[_2+1]=_4;_1[_2+2]=(_5?"</div>":null);this.$5c(_1,_2+3)}else{_1[_2]=_4;this.$5c(_1,_2+1)}
+return}
+var _6=this.iconOrientation!=this.$o1,_7=this.$5d();if(this.noIconSubtable){var _8=isc.Canvas.spacerHTML(this.iconSpacing,1);_1[_2]=(_6?isc.SB.concat(_7,_8,_4):isc.SB.concat(_4,_8,_7));this.$5c(_1,_2+1)
+return}
+var _9=this.$5b(),_10;if(_9){_10=(this.iconWidth?this.iconWidth:this.iconSize)+(isc.Browser.isBorderBox?this.iconSpacing:0)}
+_1[_2]=(_9?this.$4i:this.$4h);var _11=this.isPrinting?this.getPrintStyleName():(this.titleStyle?this.titleStyle+(this.isDisabled()?isc.StatefulCanvas.STATE_DISABLED:isc.emptyString):this.getStateName());if(_6){_1[++_2]=this.$4n;_1[++_2]=_11;_1[++_2]=this.$4o;_1[++_2]=!_3?this.$4j:this.$4k;_1[++_2]=this.iconSpacing;if(_9){_1[++_2]="px;width:";_1[++_2]=_10}
+_1[++_2]=this.$4l;_1[++_2]=_7;_1[++_2]=this.$4m;_1[++_2]=this.$4n;_1[++_2]=_11;_1[++_2]=this.$4o;if(_9){_1[++_2]="' align='"
+_1[++_2]=this.align}
+_1[++_2]=(this.wrap?this.$4p:this.$4q)
+_1[++_2]=_4}else{_1[++_2]=this.$4n;_1[++_2]=_11;_1[++_2]=this.$4o;if(_9){_1[++_2]="' align='";_1[++_2]=this.align}
+_1[++_2]=(this.wrap?this.$4p:this.$4q)
+_1[++_2]=_4;_1[++_2]=this.$4m;_1[++_2]=this.$4n;_1[++_2]=_11;_1[++_2]=this.$4o;_1[++_2]=!_3?this.$4k:this.$4j;_1[++_2]=this.iconSpacing;if(_9){_1[++_2]="px;width:";_1[++_2]=_10}
+_1[++_2]=this.$4l;_1[++_2]=_7}
+_1[++_2]=this.$4r;this.$5c(_1,_2+1)}
+,isc.A.$5d=function isc_Button__generateIconImgHTML(){var _1=this.$4s;if(this.$5e==null){this.$4t[0]=this.getID();this.$5e=this.$4t.join(isc.emptyString)}
+_1.name=this.$5e;_1.width=this.iconWidth||this.iconSize;_1.height=this.iconHeight||this.iconSize;_1.src=this.$5f();return this.imgHTML(_1)}
+,isc.A.$5f=function isc_Button__getIconURL(){var _1=this.state,_2=this.selected,_3=this.getCustomState(),_4=isc.StatefulCanvas;if(_1==_4.STATE_DISABLED&&!this.showDisabledIcon)_1=null;else if(_1==_4.STATE_DOWN&&!this.showDownIcon)_1=null;else if(_1==_4.STATE_OVER&&!this.showRollOverIcon)_1=null;if(!this.showIconState){_1=null;_3=null}
+if(_2&&!this.showSelectedIcon)_2=false;var _5=this.showFocusedIcon?this.getFocusedState():null;var _6=this.icon;if(isc.isAn.Object(_6))_6=_6.src;return isc.Img.urlForState(_6,_2,_5,_1,null,_3)}
+,isc.A.getTitleHTML=function isc_Button_getTitleHTML(_1,_2,_3,_4){var _5=this.invokeSuper(isc.Button,"getTitleHTML",_1,_2,_3,_4);if(!this.padTitle||this.align==isc.Canvas.CENTER)return _5;if(this.align==isc.Canvas.RIGHT)return _5+isc.nbsp;else if(this.align==isc.Canvas.LEFT)return isc.nbsp+_5}
+,isc.A.setWrap=function isc_Button_setWrap(_1){if(this.wrap!=_1){this.wrap=_1;this.markForRedraw("wrapChanged")}}
+,isc.A.getTitleCell=function isc_Button_getTitleCell(){if(!this.getHandle())return null;var _1=this.getHandle().firstChild.rows[0].cells[0];return _1}
+,isc.A.getButtonMinHeight=function isc_Button_getButtonMinHeight(){var _1=this.getTitleCell();if(!isc.Browser.isMoz){return _1.scrollHeight+isc.Element.$ym(this.getStateName())}
+return _1.firstChild.offsetHeight+isc.Element.$ym(this.getStateName())}
+,isc.A.getPreferredWidth=function isc_Button_getPreferredWidth(){var _1=this.wrap,_2=this.overflow,_3=this.width;this.setWrap(false);this.overflow=isc.Canvas.VISIBLE;this.setWidth(1);this.redrawIfDirty("getPreferredWidth");var _4=this.getScrollWidth();this.setWrap(_1);this.overflow=_2;this.setWidth(_3);return _4}
+,isc.A.getTitle=function isc_Button_getTitle(){if(this.useContents)return this.getContents();return this.title}
+,isc.A.setTitle=function isc_Button_setTitle(_1){this.title=_1;this.markForRedraw("setTitle")}
+,isc.A.stateChanged=function isc_Button_stateChanged(){if(this.redrawOnStateChange||!this.isDrawn()){return this.Super("stateChanged")}else{var _1=this.isPrinting?this.getPrintStyleName():this.getStateName();if(!this.suppressClassName)this.setClassName(_1);else this.setTableClassName(_1);if(this.icon){this.setImage(this.$5e,this.$5f())}}}
+,isc.A.setTableClassName=function isc_Button_setTableClassName(_1){var _2=this.getTitleCell();if(!_2)return;if(_2.className!=_1)_2.className=_1;if(this.icon&&!this.noIconSubtable&&!this.titleStyle){var _3=_2.firstChild.rows[0].cells[(this.iconOrientation==this.$o1?0:1)];if(_3&&_3.className!=_1)_3.className=_1}
+if(this.overflow==isc.Canvas.VISIBLE)this.adjustOverflow()}
+,isc.A.setTitleStyle=function isc_Button_setTitleStyle(_1){this.titleStyle=_1;if(!this.isDrawn()||!this.icon||this.noIconSubtable)return
+var _2=this.getTitleCell();if(!_2)return;var _3=_2.firstChild.rows[0].cells[1];if(_3&&_3.className!=_1)_3.className=_1}
+,isc.A.setIcon=function isc_Button_setIcon(_1){var _2=this.icon!=null;this.icon=_1;if(_2&&(_1!=null))this.setImage(this.$5e,this.$5f());else this.redraw()}
+,isc.A.$47=function isc_Button__cellFocus(){isc.EH.$h1("cFCS");this.focus();isc.EH.$h2()}
+,isc.A.$ur=function isc_Button__updateCanFocus(){this.Super("$ur",arguments);if(this._useNativeTabIndex)this.markForRedraw()}
+);isc.B._maxIndex=isc.C+27;isc.Button.registerStringMethods({getTitle:null});isc.ClassFactory.defineClass("AutoFitButton","Button");isc.A=isc.AutoFitButton.getPrototype();isc.A.autoFit=true;isc.Button.registerStringMethods({iconClick:"element,ID,event"});isc.addGlobal("IButton",isc.Button);isc.defineClass("Img","StatefulCanvas");isc.A=isc.Img;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$5g=[];isc.B.push(isc.A.urlForState=function isc_c_Img_urlForState(_1,_2,_3,_4,_5,_6){if(!_1)return _1;if(!_4&&!_5&&!_2&&!_3&&!_6)return _1;var _7=_1.lastIndexOf(isc.dot),_8=_1.substring(0,_7),_9=_1.substring(_7+1),_10=this.$5g;_10.length=1;_10[0]=_8;if(_2){_10[1]=isc.$ag;_10[2]=isc.StatefulCanvas.SELECTED}
+if(_3){_10[3]=isc.$ag;_10[4]=isc.StatefulCanvas.FOCUSED}
+if(_4){_10[5]=isc.$ag;_10[6]=_4}
+if(_6){_10[7]=isc.$ag;_10[8]=_6}
+if(_5){_10[9]=isc.$ag;_10[10]=_5}
+_10[11]=isc.dot;_10[12]=_9;var _11=_10.join(isc.$ad);return _11}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.Img.getPrototype();isc.A.name="main";isc.A.src="blank.gif";isc.A.imageType=isc.Img.STRETCH;isc.A.suppressClassName=false;isc.A.mozOutlineOffset="0px";isc.A.showTitle=false;isc.A.usePNGFix=true;isc.A=isc.Img.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$5h="<TABLE WIDTH=";isc.A.$5i=" HEIGHT=";isc.A.$5j=" BORDER=0 CELLSPACING=0 CELLPADDING=0><TR>";isc.A.$5k="<TD VALIGN=center ALIGN=center>";isc.A.$5l="<TD BACKGROUND=";isc.A.$5m="</TD></TR></TABLE>";isc.A.sizeImageToFitOverflow=false;isc.B.push(isc.A.initWidget=function isc_Img_initWidget(){isc.StatefulCanvas.$b4.initWidget.call(this);this.redrawOnResize=(this.imageType!=isc.Img.STRETCH)}
+,isc.A.setImageType=function isc_Img_setImageType(_1){if(this.imageType==_1)return;this.imageType=_1;this.markForRedraw();this.redrawOnResize=(this.imageType!=isc.Img.STRETCH)}
+,isc.A.getInnerHTML=function isc_Img_getInnerHTML(){var _1=this.sizeImageToFitOverflow?this.getOverflowedInnerWidth():this.getInnerWidth(),_2=this.sizeImageToFitOverflow?this.getOverflowedInnerHeight():this.getInnerHeight(),_3=this.imageType;var _4=this.extraStuff;if(this.altText!=null){var _5=this.altText;_5=" alt='"+_5.replace("'","'")+"'"
+if(_4==null)_4=_5;else _4+=" "+_5}
+if(_3==isc.Img.STRETCH||_3==isc.Img.NORMAL){if(_3==isc.Img.NORMAL){_1=this.imageWidth;_2=this.imageHeight}
+return this.imgHTML(this.getURL(),_1,_2,this.name,_4,null,this.activeAreaHTML)}
+var _6=isc.SB.create();_6.append(this.$5h,_1,this.$5i,_2,this.$5j);if(_3==isc.Img.TILE){_6.append(this.$5l,this.getImgURL(this.getURL()),this.$oa,isc.Canvas.spacerHTML(_1,_2))}else{_6.append(this.$5k,this.imgHTML(this.getURL(),this.imageWidth,this.imageHeight,this.name,_4,null,this.activeAreaHTML))}
+_6.append(this.$5m);return _6.toString()}
+,isc.A.getOverflowedInnerWidth=function isc_Img_getOverflowedInnerWidth(){return this.getVisibleWidth()-this.getHMarginBorder()}
+,isc.A.getOverflowedInnerHeight=function isc_Img_getOverflowedInnerHeight(){return this.getVisibleHeight()-this.getVMarginBorder()}
+,isc.A.$ub=function isc_Img__handleResized(_1,_2){if(this.redrawOnResize!=false||!this.isDrawn())return;var _3=this.getImage(this.name).style;var _4=this.sizeImageToFitOverflow?this.getOverflowedInnerWidth():this.getInnerWidth(),_5=this.sizeImageToFitOverflow?this.getOverflowedInnerHeight():this.getInnerHeight();this.$u9(_3,this.$o6,_4);this.$u9(_3,this.$o5,_5)}
+,isc.A.$10=function isc_Img__labelAdjustOverflow(){this.Super("$10",arguments);if(this.overflow!=isc.Canvas.VISIBLE||!this.sizeImageToFitOverflow)return;var _1=this.getImage(this.name),_2=_1?_1.style:null;if(_2==null)return;var _3=this.getOverflowedInnerWidth(),_4=this.getOverflowedInnerHeight();this.$u9(_2,this.$o6,_3);this.$u9(_2,this.$o5,_4)}
+,isc.A.setSrc=function isc_Img_setSrc(_1){if(_1==null||this.src==_1)return;this.src=_1;this.resetSrc()}
+,isc.A.resetSrc=function isc_Img_resetSrc(){if(!this.isDrawn())return;if(this.imageType!=isc.Img.TILE){this.setImage(this.name,this.getURL())}else{this.markForRedraw("setSrc on tiled image")}}
+,isc.A.stateChanged=function isc_Img_stateChanged(){this.Super("stateChanged");if(!this.statelessImage)this.resetSrc()}
+,isc.A.getHoverHTML=function isc_Img_getHoverHTML(){if(this.altText){if(isc.Browser.isIE)return null;if(this.prompt&&this.prompt!=this.altText){this.logWarn("Img component specified with altText:"+this.altText+" and prompt:"+this.prompt+". Value for 'prompt' attribute will be ignored in favor of 'altText' value.")}
+return this.altText}
+return this.Super("getHoverHTML",arguments)}
+);isc.B._maxIndex=isc.C+11;isc.ClassFactory.defineClass("StretchImg","StatefulCanvas");isc.A=isc.StretchImg.getPrototype();isc.A.vertical=true;isc.A.capSize=2;isc.A.overflow=isc.Canvas.HIDDEN;isc.A.imageType=isc.Img.STRETCH;isc.A.items=[{name:"start",width:"capSize",height:"capSize"},{name:"stretch",width:"*",height:"*"},{name:"end",width:"capSize",height:"capSize"}];isc.A.autoCalculateSizes=true;isc.A.cacheImageSizes=true;isc.A.suppressClassName=false;isc.A.mozOutlineOffset="0px";isc.A.showTitle=false;isc.A=isc.StretchImg.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$5o="<NOBR>";isc.A.$5p="</NOBR>";isc.A.$5q="<BR>";isc.A.$5r=" STYLE='display:block'";isc.A.$5h="<TABLE style='font-size:1px;' CELLPADDING=0 CELLSPACING=0 BORDER=0>";isc.A.$5m="</TABLE>";isc.A.$5s="<TR><TD class='";isc.A.$5t="</TD></TR>";isc.A.$5u="<TD class='";isc.A.$61k="'>";isc.A.$5v="</TD>";isc.A.renderStretchImgInTable=isc.Browser.isMoz||isc.Browser.isIE8Strict;isc.A.oversizeStretchImg=isc.Browser.isMoz&&isc.Browser.isUnix;isc.A.$5w="blank";isc.B.push(isc.A.initWidget=function isc_StretchImg_initWidget(){isc.StatefulCanvas.$b4.initWidget.call(this);this.redrawOnResize=(this.imageType!=isc.Img.STRETCH)}
+,isc.A.shouldShowLabel=function isc_StretchImg_shouldShowLabel(){if(this.showGrip)return true;return this.Super("shouldShowLabel",arguments)}
+,isc.A.getPart=function isc_StretchImg_getPart(_1){for(var i=0,_3=this.items.length,_4;i<_3;i++){_4=this.items[i];if(_4.name==_1)return _4}
+return null}
+,isc.A.getPartNum=function isc_StretchImg_getPartNum(_1){for(var i=0,_3=this.items.length,_4;i<_3;i++){_4=this.items[i];if(_4.name==_1)return i}
+return null}
+,isc.A.getSize=function isc_StretchImg_getSize(_1){if(!this.$5x||this.$64y)this.resizeImages();return this.$5x[_1]}
+,isc.A.$10=function isc_StretchImg__labelAdjustOverflow(_1,_2,_3,_4){if(this.overflow==isc.Canvas.VISIBLE)this.$ub(null,null,true);this.invokeSuper(isc.StretchImg,"$10",_1,_2,_3,_4)}
+,isc.A.setOverflow=function isc_StretchImg_setOverflow(_1,_2,_3,_4){var _5=false;if(this.overflow==isc.Canvas.VISIBLE&&((this.getScrollWidth()>this.getWidth())||(this.getScrollHeight()>this.getHeight())))
+{_5=true}
+this.invokeSuper(isc.StretchImg,"setOverflow",_1,_2,_3,_4);if(_5)this.$ub(null,null,true)}
+,isc.A.$ub=function isc_StretchImg__handleResized(_1,_2,_3){if(this.redrawOnResize!=false||!this.isDrawn()){this.$64y=true;return}
+if(this.$493)return;this.resizeImages();var _4=this.items,_5=_3||(isc.isA.Number(_1)&&_1!=0),_6=_3||(isc.isA.Number(_2)&&_2!=0),_7=(this.vertical&&_5)||(!this.vertical&&_6),_8=(this.vertical&&_6)||(!this.vertical&&_5);for(var i=0;i<_4.length;i++){var _10=this.getImage(_4[i].name);if(_10==null)continue;var _11=this.oversizeStretchImg&&(this.vertical?_4[i].height==isc.star:_4[i].width==isc.star),_12=_11?_10.parentNode:null;if(_7){var _13=this.vertical?this.getWidth():this.getHeight();this.$u9(_10.style,this.vertical?this.$o6:this.$o5,_13);if(_11&&_12!=null){this.$u9(_12.style,this.vertical?this.$o6:this.$o5,_13)}}
+if(_8){var _13=this.$5x[i];if(_11&&_12!=null){this.$u9(_12.style,this.vertical?this.$o5:this.$o6,_13);_13+=2}
+this.$u9(_10.style,this.vertical?this.$o5:this.$o6,_13)}}}
+,isc.A.resizeImages=function isc_StretchImg_resizeImages(){if(this.$493)return;var _1=(this.vertical?this.$o5:this.$o6),_2=this.items,_3=this.$5x;if(_3==null)_3=this.$5x=[];_3.length=_2.length;for(var i=0;i<_2.length;i++){_3[i]=_2[i][_1]}
+isc.Canvas.applyStretchResizePolicy(_3,this.getImgLength(),1,true,this)}
+,isc.A.getInnerHTML=function isc_StretchImg_getInnerHTML(){var _1=this.items,_2=_1.length,_3=this.vertical;if(this.$64y||!this.$5x||(this.autoCalculateSizes&&!this.cacheImageSizes))this.resizeImages();delete this.$64y;var _4=this.$5x,_5=(_3?this.getImgBreadth():this.getImgLength()),_6=(_3?this.getImgLength():this.getImgBreadth()),_7=isc.SB.create();if(this.logIsDebugEnabled(this.$n3)){this.logDebug("drawing with imageType: '"+this.imageType+"' and sizes "+this.$5x,"drawing")}
+var _8=!_3&&this.isRTL();if(this.imageType==isc.Img.TILE){_7.append("<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=",_5," HEIGHT=",_6,"><TBODY>",(_3?"":"<TR>"));for(var j=0;j<_2;j++){var i=_8?_2-j-1:j;var _11=_4[i];if(_11>0){var _12=_1[i],_13=this.getImgURL(this.$5z(_12));if(_3){_7.append("<TR><TD WIDTH=",_5," HEIGHT=",_11,_12.name?(" NAME=\""+this.getCanvasName()+_12.name+"\""):null," BACKGROUND=\"",_13,"\" class=\"",this.getItemStyleName(_12),"\">",isc.Canvas.spacerHTML(1,_11),"</TD></TR>")}else{_7.append("<TD WIDTH=",_11," HEIGHT=",_6,_12.name?(" NAME=\""+this.getCanvasName()+_12.name+"\""):null," BACKGROUND=\"",_13,"\" class=\"",this.getItemStyleName(_12),"\">",isc.Canvas.spacerHTML(_11,1),"</TD>")}}}
+_7.append((_3?"":"</TR>"),"</TABLE>")}else if(this.imageType==isc.Img.CENTER){_7.append("<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=",_5," HEIGHT=",_6,"><TBODY>",(_3?"":"<TR VALIGN=center>"));for(var j=0;j<_2;j++){var i=_8?_2-j-1:j;var _11=_4[i];if(_11>0){var _12=_1[i],_13=this.$5z(_12);if(_3){_7.append("<TR VALIGN=center><TD WIDTH=",_5," HEIGHT=",_11," ALIGN=center"," class=\"",this.getItemStyleName(_12),"\">",this.imgHTML(_13,null,null,_12.name),"</TD></TR>")}else{_7.append("<TD WIDTH=",_11," HEIGHT=",_6," ALIGN=center"," class=\"",this.getItemStyleName(_12),"\">",this.imgHTML(_13,null,null,_12.name),"</TD>")}}}
+_7.append((_3?"":"</TR>"),"</TABLE>")}else{var _14=this.renderStretchImgInTable;if(_14)_7.append(this.$5h);else if(!_3)_7.append(this.$5o);var _15=[" class=",null," "];for(var j=0;j<_2;j++){var i=_8?_2-j-1:j;var _16=(j==0);var _17=(j==_2-1);var _11=_4[i];if(_11>0){var _12=_1[i],_13=this.$5z(_12),_18;var _18;if(!_14){var _19=this.getItemStyleName(_12);if(_19){_15[1]=_19;_18=_15.join(isc.emptyString)}else{_18=isc.emptyString}}
+if(!_3){if(_14){_7.append(_16?this.$5s:this.$5u);_7.append(this.getItemStyleName(_12));_7.append(this.$61k)}
+var _20=_11,_21=(this.oversizeStretchImg&&(_12.width==isc.star));if(_21){_7.append("<div style='overflow:hidden;width:",_11,"px;height:",_6,"px;'>")
+_20=_11+2}
+_7.append(this.imgHTML(_13,_20,_6,_12.name,_18));if(_21){_7.append("</div>")}
+if(_14)_7.append(_17?this.$5t:this.$5v)}else{if(_14){_7.append(this.$5s);_7.append(this.getItemStyleName(_12));_7.append(this.$61k)}
+var _22=_11,_21=(this.oversizeStretchImg&&(_12.width==isc.star));if(_21){_7.append("<div style='overflow:hidden;height:",_11,"px;width:",_5,"px;'>")
+_22=_11+2}
+_7.append(this.imgHTML(_13,_5,_22,_12.name,isc.Browser.isDOM?((_18?_18:"")+this.$5r):_18));if(_21){_7.append("</div>")}
+if(_14)_7.append(this.$5t);else if(!isc.Browser.isDOM&&i<_2-1)_7.append(this.$5q)}}}
+if(_14)_7.append(this.$5m)
+else if(!_3)_7.append(this.$5p)}
+return _7.toString()}
+,isc.A.getItemStyleName=function isc_StretchImg_getItemStyleName(_1){var _2=_1.baseStyle||this.itemBaseStyle;if(!_2)return null;var _3=_1.state?_1.state:this.getState(),_4=_1.selected!=null?_1.selected:this.selected,_5=this.showFocused&&!this.showFocusedAsOver&&!this.isDisabled()?(_1.focused!=null?_1.focused:this.focused):false;return _2+this.$61l(_3,_4?isc.StatefulCanvas.SELECTED:null,_5?isc.StatefulCanvas.FOCUSED:null)}
+,isc.A.$5z=function isc_StretchImg__getItemURL(_1){if(_1.src)return _1.src;if(_1.name==this.$5w)return isc.Canvas.$wz;return this.getURL(_1.name,(_1.state?_1.state:this.getState()),(_1.selected!=null?_1.selected:this.selected),(this.showFocused&&!this.showFocusedAsOver&&!this.isDisabled()?(_1.focused!=null?_1.focused:this.focused):false))}
+,isc.A.setState=function isc_StretchImg_setState(_1,_2){if(_2==null){var _3=this.items.clearProperty("state"),_4=this.state!=_1;this.Super("setState",[_1]);if(_3&&!_4)this.stateChanged()}else{var _5=this.getPart(_2);if(_5){if(_5.state==_1)return;_5.state=_1}
+this.stateChanged()}}
+,isc.A.stateChanged=function isc_StretchImg_stateChanged(_1){this.Super("stateChanged");if(!this.isDrawn())return;if(this.imageType==isc.Img.TILE||this.$5x==null){this.markForRedraw("setState (tiled images)")}else{if(isc.Browser.isWin2k&&isc.Browser.isIE){this.markForRedraw("Win2k IE image state change");return}
+var _2=0;for(var i=0;i<this.items.length;i++){if(this.$5x[i]>0){var _4=this.items[i];if((!_1||_4.name==_1)&&_4.name!=this.$5w){this.setImage(_4.name,this.$5z(_4));var _5=this.getImage(_4.name);if(_5){if(isc.Browser.isMoz){_5=_5.parentNode}
+_5.className=this.getItemStyleName(_4)}}}else{_2++}}}}
+,isc.A.setSrc=function isc_StretchImg_setSrc(_1){if(_1==null||this.src==_1)return;this.src=_1;this.markForRedraw()}
+,isc.A.inWhichPart=function isc_StretchImg_inWhichPart(){if(this.vertical){var _1=this.inWhichPosition(this.$5x,this.getOffsetY())}else{var _1=this.inWhichPosition(this.$5x,this.getOffsetX(),this.getTextDirection())}
+var _2=this.items[_1];return(_2?_2.name:null)}
+);isc.B._maxIndex=isc.C+16;isc.defineClass("Label","Button");isc.A=isc.Label.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.align=isc.Canvas.LEFT;isc.A.wrap=true;isc.A.showTitle=false;isc.A.height=null;isc.A.width=null;isc.A.overflow="visible";isc.A.canFocus=false;isc.A.styleName="normal";isc.A.baseStyle=null;isc.A.cursor="default";isc.A.showRollOver=false;isc.A.showFocus=false;isc.A.showDown=false;isc.A.showDisabled=false;isc.A.useContents=true;isc.B.push(isc.A.setStyleName=function isc_Label_setStyleName(_1){this.setBaseStyle(_1)}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("Progressbar","StretchImg");isc.A=isc.Progressbar.getPrototype();isc.A.percentDone=0;isc.A.length=100;isc.A.breadth=20;isc.A.vertical=false;isc.A.skinImgDir="images/Progressbar/";isc.A.src="[SKIN]progressbar.gif";isc.A.cacheImageSizes=false;isc.A.backgroundColor="CCCCCC";isc.A.verticalItems=[{name:"v_empty_end",size:3},{name:"v_empty_stretch",size:0},{name:"v_empty_start",size:3},{name:"v_end",size:3},{name:"v_stretch",size:0},{name:"v_start",size:3}];isc.A.horizontalItems=[{name:"h_start",size:3},{name:"h_stretch",size:0},{name:"h_end",size:3},{name:"h_empty_start",size:3},{name:"h_empty_stretch",size:0},{name:"h_empty_end",size:3}];isc.A=isc.Progressbar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_Progressbar_initWidget(){if(this.vertical){this.setWidth(this.breadth);this.setHeight(this.length);this.items=this.verticalItems}else{this.setWidth(this.length);this.setHeight(this.breadth);this.items=this.horizontalItems}
+this.Super(this.$oc)}
+,isc.A.resizeImages=function isc_Progressbar_resizeImages(){var _1=this.getLength(),_2=this.items,_3=this.$5x=[],_4=this.percentDone;if(this.vertical){_3[0]=(_4<100?_2[0].size:0);_3[2]=(_4<100?_2[2].size:0);_3[3]=(_4>0?_2[3].size:0);_3[5]=(_4>0?_2[5].size:0)}else{_3[0]=(_4>0?_2[0].size:0);_3[2]=(_4>0?_2[2].size:0);_3[3]=(_4<100?_2[3].size:0);_3[5]=(_4<100?_2[5].size:0)}
+_1-=_3[0]+_3[2]+_3[3]+_3[5];if(this.vertical){_3[4]=Math.ceil(_1*_4/ 100);_3[1]=Math.floor(_1*(100-_4)/100)}else{_3[1]=Math.ceil(_1*_4/ 100);_3[4]=Math.floor(_1*(100-_4)/100)}}
+,isc.A.setPercentDone=function isc_Progressbar_setPercentDone(_1){if(this.percentDone==_1)return;_1=Math.min(100,(Math.max(0,_1)));this.percentDone=_1;if(this.isDrawn())this.markForRedraw("percentDone updated");this.percentChanged()}
+,isc.A.percentChanged=function isc_Progressbar_percentChanged(){}
+,isc.A.getLength=function isc_Progressbar_getLength(){return this.vertical?this.getHeight():this.getWidth()}
+,isc.A.getBreadth=function isc_Progressbar_getBreadth(){return this.vertical?this.getWidth():this.getHeight()}
+,isc.A.setLength=function isc_Progressbar_setLength(_1){this.length=_1;this.vertical?this.setHeight(_1):this.setWidth(_1)}
+,isc.A.setBreadth=function isc_Progressbar_setBreadth(_1){this.breadth=_1;this.vertical?this.setWidth(_1):this.setHeight(_1)}
+);isc.B._maxIndex=isc.C+8;isc.ClassFactory.defineClass("Rangebar","Progressbar");isc.A=isc.Rangebar.getPrototype();isc.A.value=0;isc.A.minValue=0;isc.A.maxValue=99;isc.A.title="";isc.A.vertical=true;isc.A.showTitle=true;isc.A.showRange=true;isc.A.showValue=true;isc.A.allLabelDefaults={width:50,height:20,spacing:5};isc.A.titleLabelDefaults={width:100,className:"rangebarTitle"};isc.A.rangeLabelDefaults={className:"rangebarRange"};isc.A.valueLabelDefaults={className:"rangebarValue"};isc.A.forceOverrides={$jo:false,autoDraw:false};isc.A.flipValues=false;isc.A=isc.Rangebar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_Rangebar_initWidget(){this.Super(this.$oc);this.titleLabelDefaults=isc.addProperties({},this.allLabelDefaults,this.titleLabelDefaults);this.valueLabelDefaults=isc.addProperties({},this.allLabelDefaults,this.valueLabelDefaults);this.rangeLabelDefaults=isc.addProperties({},this.allLabelDefaults,this.rangeLabelDefaults);if(this.showRange){this.$50=this.addPeer(this.$51("min"));this.$52=this.addPeer(this.$51("max"))}
+if(this.showValue)this._valueLabel=this.addPeer(this.$53());if(this.showTitle)this._titleLabel=this.addPeer(this.$54());this.setValue(this.value)}
+,isc.A.resized=function isc_Rangebar_resized(_1,_2){this.$55()}
+,isc.A.$55=function isc_Rangebar__adjustPeerPositions(){if(this.showRange&&this.$50&&this.$52){var _1=this.$56("min");var _2=this.$56("max");this.$50.moveTo(_1.left,_1.top);this.$52.moveTo(_2.left,_2.top)}
+if(this.showValue&&this._valueLabel){var _3=this.$57();this._valueLabel.moveTo(_3.left,_3.top)}
+if(this.showTitle&&this._titleLabel){var _3=this.$58();this._titleLabel.moveTo(_3.left,_3.top)}}
+,isc.A.$51=function isc_Rangebar__createRangeLabel(_1){var _2=this.$56(_1);return isc.Label.newInstance({ID:this.getID()+"_"+_1+"Label",contents:(_1=="min"?(this.minValueLabel?this.minValueLabel:this.minValue):(this.maxValueLabel?this.maxValueLabel:this.maxValue))},this.rangeLabelDefaults,_2,this.forceOverrides)}
+,isc.A.$56=function isc_Rangebar__computeRangeLabelProperties(_1){var _2={},_3=this.rangeLabelDefaults,_4=((_1=="min"&&!this.flipValues)||(_1="max"&&this.flipValues));if(this.vertical){_2.left=this.left+this.width+_3.spacing,_2.align=isc.Canvas.LEFT;if(_4){_2.top=this.getTop()+this.getHeight()-_3.height;_2.valign=isc.Canvas.BOTTOM}else{_2.top=this.getTop();_2.valign=isc.Canvas.TOP}}else{_2.top=this.getTop()+this.getHeight()+_3.spacing,_2.valign=isc.Canvas.TOP;if(_4){_2.left=this.getLeft();_2.align=isc.Canvas.LEFT}else{_2.left=this.getLeft()+this.getWidth()-_3.width;_2.align=isc.Canvas.RIGHT}}
+return _2}
+,isc.A.$54=function isc_Rangebar__createTitleLabel(){var _1=this.$58();return isc.Label.newInstance({ID:this.getID()+"_titleLabel",contents:this.title},this.titleLabelDefaults,_1,this.forceOverrides)}
+,isc.A.$58=function isc_Rangebar__computeTitleLabelProperties(){var _1={};var _2=this.titleLabelDefaults;if(this.vertical){_1.left=this.left+this.width/ 2-_2.width/ 2;_1.top=this.top-_2.height-_2.spacing;_1.align=isc.Canvas.CENTER}else{_1.left=this.left-_2.width-_2.spacing;_1.top=this.top+this.getHeight()/2-_2.height/ 2;_1.align=isc.Canvas.RIGHT}
+return _1}
+,isc.A.$53=function isc_Rangebar__createValueLabel(){var _1=this.$57();return isc.Label.newInstance({ID:this.getID()+"_valueLabel",contents:this.value,mouseUp:"return false;",observes:[{source:this,message:"valueChanged",action:"observer.setContents(this.getValue())"}]},this.valueLabelDefaults,_1,this.forceOverrides)}
+,isc.A.$57=function isc_Rangebar__computeValueLabelProperties(){var _1={};var _2=this.valueLabelDefaults;if(this.vertical){_1.left=this.left-_2.width-_2.spacing;_1.top=this.top+this.getHeight()/2-_2.height/ 2;_1.align=isc.Canvas.RIGHT;_1.valign=isc.Canvas.CENTER}else{_1.left=this.left+this.width/ 2-_2.width/ 2;_1.top=this.top-_2.height-_2.spacing;_1.align=isc.Canvas.CENTER;_1.valign=isc.Canvas.BOTTOM}
+return _1}
+,isc.A.getValue=function isc_Rangebar_getValue(){return this.value}
+,isc.A.setValue=function isc_Rangebar_setValue(_1){if(this.value==_1)return;if(_1>this.maxValue)_1=this.maxValue;else if(_1<this.minValue)_1=this.minValue;this.value=_1;this.percentDone=100*(this.value-this.minValue)/(this.maxValue-this.minValue);this.markForRedraw();this.valueChanged()}
+,isc.A.valueChanged=function isc_Rangebar_valueChanged(){}
+);isc.B._maxIndex=isc.C+12;isc.ClassFactory.defineClass("Toolbar","Layout");isc.A=isc.Toolbar.getPrototype();isc.A.vertical=false;isc.A.overflow=isc.Canvas.HIDDEN;isc.A.height=20;isc.A.buttonConstructor="Button";isc.A.canReorderItems=false;isc.A.canResizeItems=false;isc.A.canRemoveItems=false;isc.A.reorderOnDrop=true;isc.A.tabWithinToolbar=true;isc.A.allowButtonReselect=false;isc.A.buttonDefaults={click:function(){this.Super("click",arguments);this.parentElement.itemClick(this,this.parentElement.getButtonNumber(this))},doubleClick:function(){this.Super("doubleClick",arguments);this.parentElement.itemDoubleClick(this,this.parentElement.getButtonNumber(this))},setSelected:function(){var _1=this.isSelected();this.Super("setSelected",arguments);if(this.parentElement.allowButtonReselect||_1!=this.isSelected()){if(this.isSelected())this.parentElement.buttonSelected(this);else this.parentElement.buttonDeselected(this)}},dragAppearance:isc.EventHandler.NONE,setTabIndex:function(_1){this.Super("setTabIndex",arguments);this.$59=null},setAccessKey:function(_1,_2){if(!_2)this.$6a=null;this.Super("setAccessKey",[_1])},focusChanged:function(_1){if(this.hasFocus&&this.parentElement.$6b){this.parentElement.$6b(this)}},$kf:function(_1,_2){if(this.parentElement.$kf){this.parentElement.$kf(_1,_2,this)}}};isc.A=isc.Toolbar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.draw=function isc_Toolbar_draw(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return this;if(!this.$6c)this.setButtons();this.invokeSuper(isc.Toolbar,"draw",_1,_2,_3,_4)}
+,isc.A.keyPress=function isc_Toolbar_keyPress(){var _1=this.ns.EH.lastEvent.keyName;if(!this.tabWithinToolbar){if((this.vertical&&_1=="Arrow_Up")||(!this.vertical&&_1=="Arrow_Left")){this.$6d(false);return false}else if((this.vertical&&_1=="Arrow_Down")||(!this.vertical&&_1=="Arrow_Right")){this.$6d();return false}}
+return this.Super("keyPress",arguments)}
+,isc.A.$6d=function isc_Toolbar__focusInNextButton(_1,_2){_1=(_1!=false);var _3=(_2!=null?_2:this.getFocusButtonIndex());if(_3==null)_3=(_1?-1:this.buttons.length);_3+=_1?1:-1;while(_3>=0&&_3<this.buttons.length){var _4=this.getMembers()[_3];if(_4.$kk()){_4.focus();return true}
+_3+=_1?1:-1}
+return false}
+,isc.A.getFocusButtonIndex=function isc_Toolbar_getFocusButtonIndex(){var _1=this.getButtons(),_2;for(var i=0;i<_1.length;i++){if(_1[i].hasFocus){_2=i;break}}
+return _2}
+,isc.A.$kf=function isc_Toolbar__focusInNextTabElement(_1,_2,_3){if(!isc.EH.targetIsMasked(this,_2)){var _4=_3?this.members.indexOf(_3):null;if(!this.tabWithinToolbar){if(_1&&_4==null){var _5=this.$6g;if(_5!=null)return this.fb.focus()}}else if(this.$6d(_1,_4))return}
+return this.Super("$kf",arguments)}
+,isc.A.$kk=function isc_Toolbar__canFocus(_1,_2,_3,_4){var _5=this.members;if(_5&&_5.length>0){for(var i=0;i<_5.length;i++){if(_5[i].$kk())return true}}
+return this.invokeSuper(isc.Toolbar,"$kk",_1,_2,_3,_4)}
+,isc.A.setFocus=function isc_Toolbar_setFocus(_1){if(!this.$vl())return;var _2=this.getFocusButtonIndex();if(!_1){if(_2!=null&&this.members)this.members[_2].setFocus(false)}else{if(_2!=null)return;if(this.$6g)this.$6g.setFocus(true);else this.$6d()}}
+,isc.A.focusAtEnd=function isc_Toolbar_focusAtEnd(_1){_1=!!_1;var _2=(_1?-1:this.buttons.length);this.$6d(_1,_2)}
+,isc.A.$6e=function isc_Toolbar__setButtonTabIndex(_1,_2){if(!_1.$59&&(_1.$vy()!=null||_1.$vz()!=null))
+{_1.$rp()}
+_1.$59=true;if(_1.tabIndex!=_2)_1.$vk(_2,false)}
+,isc.A.updateMemberTabIndex=function isc_Toolbar_updateMemberTabIndex(){}
+,isc.A.$v2=function isc_Toolbar__slotChildrenIntoTabOrder(){}
+,isc.A.$6f=function isc_Toolbar__setButtonAccessKey(_1,_2){_1.$6a=true;_1.setAccessKey(_2,true)}
+,isc.A.setupButtonFocusProperties=function isc_Toolbar_setupButtonFocusProperties(){var _1=this.$6g;if((!_1||!isc.isA.Canvas(_1)||_1.visibility==isc.Canvas.HIDDEN)&&this.buttons.length>0)
+{var _2;for(var i=0;i<this.members.length;i++){if(isc.isA.Canvas(this.members[i])&&this.members[i].visibility!=isc.Canvas.HIDDEN)
+{_2=this.members[i];break}}
+this.$6b(_2)
+_1=this.$6g}
+var _4;if(this.tabWithinToolbar){_4=this.getTabIndex()}else{_4=-1}
+var _5=this.getButtons();for(var i=0;i<_5.length;i++){var _6=_5[i];if(_6!=_1&&(_6.tabIndex==null||_6.$sp))
+{this.$6e(_6,_4)}}}
+,isc.A.$6b=function isc_Toolbar__updateFocusButton(_1){if(this.$6g==_1){return}
+if(_1.accessKey!=this.accessKey&&(_1.accessKey==null||_1.$6a))
+{this.$6f(_1,this.accessKey)}
+if(_1.tabIndex==null||_1.$sp||_1.$59)
+{this.$6e(_1,this.getTabIndex())}
+var _2=this.$6g;if(_2!=null&&(_2.tabIndex==null||_2.$sp||_2.$59))
+{if(!this.tabWithinToolbar)this.$6e(_2,-1);if(_2.accessKey!=null&&_2.$6a)
+{this.$6f(_2,null)}}
+this.$6g=_1}
+,isc.A.$vk=function isc_Toolbar__setTabIndex(_1,_2,_3,_4){this.invokeSuper(isc.Toolbar,"$vk",_1,_2,_3,_4);if(this.tabWithinToolbar){var _5=this.getButtons();for(var i=0;i<_5.length;i++){if(_5[i].tabIndex==null||_5[i].$sp||_5[i].$59)
+this.$6e(_5[i],this.getTabIndex())}}else{var _7=this.$6g;if(_7!=null){this.$6g=null;this.$6b(_7)}}}
+,isc.A.setAccessKey=function isc_Toolbar_setAccessKey(_1){this.Super("setAccessKey",arguments);var _2=this.$6g;if(_2!=null){this.$6g=null;this.$6b(_2)}}
+,isc.A.getLength=function isc_Toolbar_getLength(_1,_2,_3,_4){if(this.innerWidth!=null)return this.innerWidth;return this.invokeSuper(isc.Toolbar,"getLength",_1,_2,_3,_4)}
+,isc.A.setButtons=function isc_Toolbar_setButtons(_1){this.$6c=true;if(_1)this.buttons=_1;if(this.members==null)this.members=[];var _2=this.members.duplicate();for(var i=0;i<_2.length;i++){var _4=_2[i];if(!this.buttons.contains(_4)){_2[i].destroy()}}
+if(this.buttons==null)this.buttons=[];var _5=[];for(var i=0;i<this.buttons.length;i++){var _6=this.buttons[i];if(!isc.isA.Canvas(_6))_6=this.makeButton(_6);_5[_5.length]=_6;if(isc.isA.StatefulCanvas(_6)){var _7=_6.getActionType();if(_7==isc.StatefulCanvas.RADIO){if(_6.selected)this.lastSelectedButton=_6}}}
+this.addMembers(_5,0);if(this.canResizeItems)this.setResizeRules();this.setupButtonFocusProperties()}
+,isc.A.buttonShouldHiliteAccessKey=function isc_Toolbar_buttonShouldHiliteAccessKey(){if(this.$6a)return false;return this.hiliteAccessKey}
+,isc.A.makeButton=function isc_Toolbar_makeButton(_1){_1.width=_1.width||null;_1.height=_1.height||null;_1.canDrag=this.canReorderItems||this.canDragSelectItems||this.canRemoveItems;_1.canDragResize=(_1.canDragResize!=null?_1.canDragResize&&this.canResizeItems:this.canResizeItems);_1.canAcceptDrop=this.canAcceptDrop;_1.canDrop=this.canRemoveItems;_1.shouldHiliteAccessKey=this.buttonShouldHiliteAccessKey;return this.$6h(_1,null)}
+,isc.A.$6h=function isc_Toolbar__makeItem(_1,_2){var _3=(_1.buttonConstructor?_1.buttonConstructor:this.buttonConstructor);_3=this.ns.ClassFactory.getClass(_3);var _4=_3.newInstance({autoDraw:false},this.buttonDefaults,this.buttonProperties,_1,_2);if(!isc.isA.StatefulCanvas(_4))return _4;var _5;if((_4.getActionType()==isc.StatefulCanvas.RADIO&&_4.radioGroup===_5)||_4.defaultRadioGroup!=null){var _6=_4.defaultRadioGroup!=null?_4.defaultRadioGroup:this.getID();_4.addToRadioGroup(_6)}
+return _4}
+,isc.A.addButtons=function isc_Toolbar_addButtons(_1,_2){if(_1==null)return;if(!isc.isAn.Array(_1))_1=[_1];if(!this.$6c)this.setButtons();_1.removeEvery(null);var _3;if(isc.isAn.Array(_2)){if(_2.length!=_1.length){this.logWarn("addButtons passed "+_1.length+" buttons with "+_2.length+" discrete positions specified. Ignoring.");return}
+var _4={};for(var i=0;i<_2.length;i++){_4[_2[i]]=_1[i]}
+_2.sort();_3=[];var _6={buttons:[],position:_2[0]},_7=0;for(var i=0;i<_2.length;i++){var _8=_2[i],_9=_4[_8];_6.buttons.add(_9);var _10=_2[i+1]
+if(_10==null||_10!=_8+1){_3[_7]=_6;_7++
+if(_10!=null)_6={buttons:[],position:_10}}}
+for(var i=0;i<_3.length;i++){this.buttons.addListAt(_3[i].buttons,_3[i].position)}}else{this.buttons.addListAt(_1,_2)}
+var _11=this.instantRelayout;this.instantRelayout=false;var _12;if(_3==null){_12=this.$82x(_1);this.addMembers(_12,_2)}else{for(var i=0;i<_3.length;i++){var _13=this.$82x(_3[i].buttons);this.addMembers(_13,_3[i].position);if(_12==null)_12=_13;else _12.addList(_13)}}
+if(_11){this.instantRelayout=true;if(this.$3n)this.$3n=false;this.reflow("addButtons")}
+if(this.canResizeItems)this.setResizeRules();_12.map("show")}
+,isc.A.$82x=function isc_Toolbar__createButtonInstances(_1){var _2=[];for(var i=0;i<_1.length;i++){var _4=_1[i],_5=isc.isA.Canvas(_4)?_4:this.makeButton(_4);_2[i]=_5}
+return _2}
+,isc.A.removeButtons=function isc_Toolbar_removeButtons(_1){if(_1==null)return;if(!isc.isAn.Array(_1))_1=[_1];var _2=[];for(var i=0;i<_1.length;i++){_1[i]=this.buttons[this.getButtonNumber(_1[i])];if(_1[i]==null){this.logWarn("removeButtons(): unable to find button for item number "+i+" in the array passed in. Skipping this item.");_1.removeItem(i);i-=1;continue}
+_2[i]=this.getButton(this.buttons.indexOf(_1[i]))}
+var _4=this.buttons;_4.removeList(_1);this.removeMembers(_2)}
+,isc.A.getButton=function isc_Toolbar_getButton(_1){_1=this.getButtonNumber(_1);return this.getMember(_1)}
+,isc.A.getButtonNumber=function isc_Toolbar_getButtonNumber(_1){if(isc.isAn.Object(_1)&&!isc.isA.Canvas(_1))return this.buttons.indexOf(_1);return this.getMemberNumber(_1)}
+,isc.A.getButtons=function isc_Toolbar_getButtons(){return this.members}
+,isc.A.setCanResizeItems=function isc_Toolbar_setCanResizeItems(_1){if(this.canResizeItems==_1)return;this.canResizeItems=_1;var _2=this.getButtons();if(!_2)return;for(var i=0;i<_2.length;i++){var _4=_2[i];_4.canDragResize=(_4.canDragResize!=null?_4.canDragResize&&_1:_1)}
+this.setResizeRules()}
+,isc.A.setResizeRules=function isc_Toolbar_setResizeRules(){if(!this.members)return;var _1=this.isRTL();var _2,_3,_4;if(this.vertical){_2={"T":isc.Canvas.ROW_RESIZE,"B":isc.Canvas.ROW_RESIZE};_3=["T","B"];_4=["B"]}else{_2={"L":isc.Canvas.COL_RESIZE,"R":isc.Canvas.COL_RESIZE};_3=["L","R"];if(!_1){_4=["R"]}else{_4=["L"]}}
+var _5=false;for(var i=0;i<this.members.length;i++){var _7=this.members[i];if(!_7.canDragResize){_7.resizeFrom=_7.edgeCursorMap=null;_5=true}else{if(_5||i==0)
+{_7.resizeFrom=_4}else{_7.resizeFrom=_3}
+_7.edgeCursorMap=_2;_5=false}}}
+,isc.A.getSelectedButton=function isc_Toolbar_getSelectedButton(){return this.lastSelectedButton}
+,isc.A.selectButton=function isc_Toolbar_selectButton(_1){if(!this.members)return;var _2=this.getButton(_1);if(_2&&isc.isA.StatefulCanvas(_2))_2.select()}
+,isc.A.deselectButton=function isc_Toolbar_deselectButton(_1){var _2=this.getButton(_1);if(_2)_2.deselect()}
+,isc.A.buttonSelected=function isc_Toolbar_buttonSelected(_1){if(_1.getActionType()==isc.Button.RADIO){this.lastSelectedButton=_1}}
+,isc.A.buttonDeselected=function isc_Toolbar_buttonDeselected(_1){}
+,isc.A.itemClick=function isc_Toolbar_itemClick(_1,_2){}
+,isc.A.itemDoubleClick=function isc_Toolbar_itemDoubleClick(_1,_2){}
+,isc.A.getMouseOverButtonIndex=function isc_Toolbar_getMouseOverButtonIndex(){var _1=this.vertical?this.getOffsetY():this.getOffsetX();return this.inWhichPosition(this.memberSizes,_1,this.getTextDirection())}
+,isc.A.prepareForDragging=function isc_Toolbar_prepareForDragging(){var _1=this.ns.EH;var _2=_1.lastEvent.target;while(_2.dragTarget){_2=_2.dragTarget}
+var _3=_1.dragOperation;if(((this.canResizeItems&&_3=="dragResize")||(this.canReorderItems&&_3=="drag"))&&this.members.contains(_2))
+{if(_3=="dragResize"){if((this.vertical&&["T","B"].contains(_1.resizeEdge))||(!this.vertical&&["L","R"].contains(_1.resizeEdge)))
+{_1.dragOperation="dragResizeMember";return}}else if(_3=="drag"){_1.dragOperation="dragReorder";return}}
+return this.Super("prepareForDragging",arguments)}
+,isc.A.getDropPosition=function isc_Toolbar_getDropPosition(){var _1=this.getMouseOverButtonIndex();var _2=this.ns.EH,_3=(this.reorderStyle=="explorer"||(_2.dropTarget&&_2.dropTarget.parentElement==this));if(_3&&_1>=0){var _4=this.memberSizes[_1],_5=(this.vertical?this.getOffsetY():this.getOffsetX());_5-=this.memberSizes.slice(0,_1).sum();var _6=_1;if(_5>_4/ 2)_1++}
+var _7=this.members.length,_8=(_3?_7:_7-1);if(_1==-2&&this.containsEvent())return _8;var _9=this.dragStartPosition||0;if(_1<0||_1>_8)_1=_9;else if(_2.dragTarget&&_2.dragTarget.parentElement==this&&(this.members[_1]&&this.members[_1].canReorder==false))
+{_1=_9}
+return _1}
+,isc.A.dragReorderStart=function isc_Toolbar_dragReorderStart(){var _1=this.ns.EH,_2=_1.dragTarget;if(_2.canReorder==false)return false;if(_2.showDown)_2.setState(isc.StatefulCanvas.STATE_DOWN);this.dragStartPosition=this.getButtonNumber(_2);return _1.STOP_BUBBLING}
+,isc.A.dragReorderMove=function isc_Toolbar_dragReorderMove(){var _1=this.ns.EH,_2=_1.dragTarget,_3=this.dragStartPosition,_4=this.getDropPosition();this.dragCurrentPosition=_4;var _5=this.members.duplicate();_5.slide(_3,_4);this.stackMembers(_5,null,false);return _1.STOP_BUBBLING}
+,isc.A.dragReorderStop=function isc_Toolbar_dragReorderStop(){var _1=this.ns.EH,_2=_1.dragTarget,_3=this.dragStartPosition,_4=this.dragCurrentPosition;_2.setState(isc.StatefulCanvas.STATE_UP);if(_4==_3)return false;if(this.reorderOnDrop)this.reorderItem(_4,_3);if(this.itemDragReordered)this.itemDragReordered(_3,_4);return _1.STOP_BUBBLING}
+,isc.A.dragStop=function isc_Toolbar_dragStop(){var _1=this.ns.EH,_2=_1.dragTarget,_3=this.dragStartPosition;_2.setState(isc.StatefulCanvas.STATE_UP);this.hideDropLine();return _1.STOP_BUBBLING}
+,isc.A.reorderItem=function isc_Toolbar_reorderItem(_1,_2){this.reorderItems(_1,_1+1,_2)}
+,isc.A.reorderItems=function isc_Toolbar_reorderItems(_1,_2,_3){this.buttons.slideRange(_1,_2,_3);this.reorderMembers(_1,_2,_3);this.setResizeRules()}
+,isc.A.dragResizeMemberStart=function isc_Toolbar_dragResizeMemberStart(){var _1=this.ns.EH,_2=_1.dragTarget,_3=this.getButtonNumber(_2),_4=this.isRTL();var _5=false;if((!_4&&_1.resizeEdge=="L")||(_4&&_1.resizeEdge=="R")){_5=true;_3--;_1.resizeEdge=(_4?"L":"R")}else if(_1.resizeEdge=="T"){_5=true;_3--;_1.resizeEdge="B"}
+if(_3<0||_3>=this.members.length||_2==null)return false;_1.dragTarget=_2=this.members[_3];_2.$6i=_2.canDrop;_2.canDrop=false;this.$6j=_3;if(_2.showDown)_2.setState(isc.StatefulCanvas.STATE_DOWN);if(_5){var _6=this.members[_3+1];if(_6)_6.setState(isc.StatefulCanvas.STATE_UP)}
+return _1.STOP_BUBBLING}
+,isc.A.dragResizeMemberMove=function isc_Toolbar_dragResizeMemberMove(){var _1=this.ns.EH,_2=_1.dragTarget;_2.resizeToEvent();_2.redrawIfDirty("dragResize");return _1.STOP_BUBBLING}
+,isc.A.dragResizeMemberStop=function isc_Toolbar_dragResizeMemberStop(){var _1=this.ns.EH,_2=_1.dragTarget;_2.canDrop=_2.$6i;_2.setState(isc.StatefulCanvas.STATE_UP);_2.resizeToEvent();var _3=(this.vertical?_2.getHeight():_2.getWidth());this.resizeItem(this.$6j,_3);if(this.itemDragResized)this.itemDragResized(this.$6j,_3);return _1.STOP_BUBBLING}
+,isc.A.resizeItem=function isc_Toolbar_resizeItem(_1,_2){var _3=this.members[_1];if(this.vertical)_3.setHeight(_2);else _3.setWidth(_2)}
+);isc.B._maxIndex=isc.C+49;isc.Toolbar.registerStringMethods({itemClick:"item,itemNum",itemDragResized:"itemNum,newSize",itemDragReordered:"itemNum,newPosition"});isc.defineClass("ImgButton","Img");isc.A=isc.ImgButton.getPrototype();isc.A.baseStyle="imgButton";isc.A.showDown=true;isc.A.showFocused=true;isc.A.showRollOver=true;isc.A.showTitle=false;isc.A.cursor=isc.Button.$b4.cursor;isc.A.src="[SKIN]/ImgButton/button.png";isc.A.canFocus=true;isc.A.overflow=isc.Canvas.HIDDEN;isc.defineClass("StretchImgButton","StretchImg");isc.A=isc.StretchImgButton.getPrototype();isc.A.useEventParts=true;isc.A.baseStyle="stretchImgButton";isc.A.showDown=true;isc.A.showFocused=true;isc.A.showRollOver=true;isc.A.showTitle=true;isc.A.hiliteAccessKey=true;isc.A.src="[SKIN]/button/button.png";isc.A.vertical=false;isc.A.capSize=12;isc.A.autoFitDirection="horizontal";isc.A.cursor=isc.Button.$b4.cursor;isc.A.canFocus=true;isc.StretchImgButton.registerStringMethods({iconClick:""})
+isc.defineClass("ToolStrip","Layout");isc.A=isc.ToolStrip.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.height=20;isc.A.defaultWidth=250;isc.A.styleName="toolStrip";isc.A.vertical=false;isc.A.resizeBarClass="ToolStripResizer";isc.A.resizeBarSize=14;isc.A.separatorClass="ToolStripSeparator";isc.A.separatorSize=8;isc.A.showGroupTitle=true;isc.A.groupTitleAlign="center";isc.A.groupTitleOrientation="top";isc.A.groupConstructor="ToolStripGroup";isc.A.formWrapperConstructor="DynamicForm";isc.A.formWrapperDefaults={showTitle:false,numCols:1,overflow:"visible",width:1,height:1};isc.B.push(isc.A.initWidget=function isc_ToolStrip_initWidget(_1,_2,_3,_4,_5,_6){this.members=this.$62r(this.members);this.invokeSuper(isc.ToolStrip,this.$oc,_1,_2,_3,_4,_5,_6);if(this.vertical&&this.verticalStyleName!=null){this.setStyleName(this.verticalStyleName)}}
+,isc.A.$62r=function isc_ToolStrip__convertMembers(_1){var _2=isc.ClassFactory.getClass(this.separatorClass);if(_1==null)return null;var _3=[];for(var i=0;i<_1.length;i++){var m=_1[i];if(m=="separator"){var _6=_2.createRaw();_6.autoDraw=false;_6.vertical=!this.vertical;if(this.vertical){_6.height=this.separatorSize}else{_6.width=this.separatorSize}
+_6.completeCreation();_3.add(_6)}else if(m=="resizer"&&i>0){_1[i-1].showResizeBar=true}else if(m=="starSpacer"){_3.add(isc.LayoutSpacer.create({width:"*"}))}else if(isc.isA.ToolStripResizer(m)&&i>0){_1[i-1].showResizeBar=true;m.destroy()}else{if(isc.isA.ToolStripSeparator(m)){var _6=m;_6.vertical=!this.vertical;_6.setSrc(this.vertical?_6.hSrc:_6.vSrc);if(this.vertical){_6.setHeight(this.separatorSize)}else{_6.setWidth(this.separatorSize)}
+_6.markForRedraw()}else if(isc.isA.ToolStripGroup(m)){if(!m.showTitle)m.setShowTitle(this.showGroupTitle);if(!m.titleAlign)m.setTitleAlign(this.groupTitleAlign);if(!m.titleOrientation)m.setTitleOrientation(this.groupTitleOrientation)}
+_3.add(m)}}
+return _3}
+,isc.A.addMembers=function isc_ToolStrip_addMembers(_1,_2,_3,_4,_5){if(!_1)return;if(!isc.isAn.Array(_1))_1=[_1];var _6=_1[0],_7=isc.isA.ToolStripResizer(_6);if(_6=="resizer"||_7){_2=_2||this.members.length;var _8=Math.min(_2,this.members.length)-1;if(_8>0){var _9=this.getMember(_8);if(_9!=null){_9.showResizeBar=true;this.reflow()}}
+var _10=_1.shift();if(_7)_10.destroy()}
+_1=this.$62r(_1);return this.invokeSuper(isc.ToolStrip,"addMembers",_1,_2,_3,_4,_5)}
+,isc.A.addToolStripGroup=function isc_ToolStrip_addToolStripGroup(_1,_2){if(!_1)return null;if(!isc.isA.Class(_1)){var _3=this.groupConstructor;if(isc.isA.String(_3))_3=isc.ClassFactory.getClass(this.groupConstructor);_1=_3.create(_1)}
+if(!_1||!isc.isA.ToolStripGroup(_1))return null;if(_1.showTitle==null)_1.setShowTitle(this.showGroupTitle);if(!_1.titleAlign)_1.setTitleAlign(this.groupTitleAlign);if(!_1.titleOrientation)_1.setTitleOrientation(this.groupTitleOrientation);this.addMember(_1,_2);return _1}
+,isc.A.addFormItem=function isc_ToolStrip_addFormItem(_1,_2,_3){if(isc.isA.Canvas(_1)){this.addMember(_1,_3);return _1}
+var _4=this.createAutoChild("formWrapper",_2);_4.setItems([_1]);this.addMember(_4,_3);return _4}
+);isc.B._maxIndex=isc.C+5;isc.defineClass("ToolStripSeparator","Img");isc.A=isc.ToolStripSeparator.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.skinImgDir="images/ToolStrip/";isc.A.vSrc="[SKIN]separator.png";isc.A.hSrc="[SKIN]hseparator.png";isc.A.layoutAlign="center";isc.B.push(isc.A.initWidget=function isc_ToolStripSeparator_initWidget(){if(isc.isA.Img(this))this.src=this.vertical?this.vSrc:this.hSrc;this.Super("initWidget",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("ToolStripButton","StretchImgButton");isc.A=isc.ToolStripButton.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.showTitle=true;isc.A.showRollOver=true;isc.A.showDown=true;isc.A.labelHPad=6;isc.A.labelVPad=0;isc.A.autoFit=true;isc.A.src="[SKIN]/ToolStrip/button/button.png";isc.A.capSize=3;isc.A.height=22;isc.B.push(isc.A.initWidget=function isc_ToolStripButton_initWidget(){if(!this.title)this.iconSpacing=0;this.Super("initWidget",arguments)}
+,isc.A.setTitle=function isc_ToolStripButton_setTitle(_1){if(!_1){this.iconSpacing=0;if(this.label)this.label.iconSpacing=0}
+this.Super("setTitle",arguments)}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("ToolStripGroup","VLayout");isc.A=isc.ToolStripGroup.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.styleName="toolStripGroup";isc.A.layoutMargin=2;isc.A.membersMargin=1;isc.A.layoutAlign="top";isc.A.autoDraw=false;isc.A.height=1;isc.A.width=1;isc.A.overflow="visible";isc.A.labelLayoutDefaults={_constructor:"HLayout",width:"100%",height:22};isc.A.labelConstructor="Label";isc.A.labelDefaults={width:"100%",height:22,autoDraw:true,wrap:false,overflow:"hidden",border:"none"};isc.A.titleStyle="toolStripGroupTitle";isc.A.bodyConstructor="HLayout";isc.A.bodyDefaults={width:"*",height:"*",overflow:"visible",membersMargin:2,autoDraw:false};isc.A.columnLayoutDefaults={_constructor:"VLayout",width:1,membersMargin:2,height:"100%",overflow:"visible",autoDraw:false,numRows:0,addMember:function(_1,_2){this.Super("addMember",arguments);if(_1.rowSpan==null)_1.rowSpan=1;var _3=_1.rowSpan*this.creator.rowHeight+((_1.rowSpan-1)*this.membersMargin);if(_1.orientation=="vertical"){_1.rowSpan=this.maxRows;_3=(_1.rowSpan*this.creator.rowHeight)+((this.maxRows-1)*this.membersMargin)}
+_1.setHeight(_3);this.numRows+=_1.rowSpan;if(this.numRows>this.maxRows)this.numRows=this.maxRows},removeMember:function(_1){this.Super("removeMember",arguments);if(_1.rowSpan==null)_1.rowSpan=1;this.numRows-=_1.rowSpan;_1.markForDestroy();_1=null}};isc.A.numRows=1;isc.A.rowHeight=20;isc.A.defaultColWidth="*";isc.A.titleHeight=18;isc.A.autoHideOnLastRemove=false;isc.B.push(isc.A.initWidget=function isc_ToolStripGroup_initWidget(){this.Super("initWidget",arguments);var _1=this.showTitle!=false&&this.showLabel!=false;if(_1){this.addAutoChild("labelLayout",{height:this.titleHeight});this.addAutoChild("label",isc.addProperties({},this.titleProperties||{},{styleName:this.titleStyle,height:this.titleHeight,align:this.titleAlign,contents:this.title,autoDraw:false}));this.labelLayout.addMember(this.label);if(this.showTitle==false)this.labelLayout.hide();this.addMember(this.labelLayout)}
+this.addAutoChild("body",{_constructor:this.bodyConstructor,height:this.numRows*this.rowHeight});this.addMember(this.body,_1?(this.titleOrientation=="bottom"?0:1):0);if(this.controls){this.addControls(this.controls,false)}}
+,isc.A.setTitle=function isc_ToolStripGroup_setTitle(_1){if(this.label)this.label.setContents(_1)}
+,isc.A.setShowTitle=function isc_ToolStripGroup_setShowTitle(_1){this.showTitle=_1;if(!_1&&this.labelLayout.isVisible())this.labelLayout.hide();else if(_1&&!this.labelLayout.isVisible())this.labelLayout.show()}
+,isc.A.setTitleAlign=function isc_ToolStripGroup_setTitleAlign(_1){this.titleAlign=_1;if(this.label)this.label.setAlign(this.titleAlign)}
+,isc.A.setTitleOrientation=function isc_ToolStripGroup_setTitleOrientation(_1){this.titleOrientation=_1;if(this.label&&this.labelLayout){if(this.titleOrientation=="top"){this.removeMember(this.labelLayout);this.addMember(this.labelLayout,0)}else if(this.titleOrientation=="bottom"){this.removeMember(this.labelLayout);this.addMember(this.labelLayout,1)}}}
+,isc.A.addColumn=function isc_ToolStripGroup_addColumn(_1,_2){var _3;if(_1===null||_1===_3){_1=this.body.members.length}
+var _4=this.defaultColWidth;if(this.colWidths&&this.colWidths[_1]!=null)_4=this.colWidths[_1];var _5=this.createAutoChild("columnLayout",{maxRows:this.numRows,numRows:0,width:_4,height:this.body.getVisibleHeight()-1});this.body.addMember(_5,_1);if(_2)_5.addMembers(_2);return _5}
+,isc.A.getAvailableColumn=function isc_ToolStripGroup_getAvailableColumn(_1){var _2=this.body.members;if(_2&&_2.length>0){for(var i=0;i<_2.length;i++){var _4=_2[i];if(_4.numRows<_4.maxRows)return _4}}
+if(_1!=false)return this.addColumn();return null}
+,isc.A.getControlColumn=function isc_ToolStripGroup_getControlColumn(_1){var _2=this.body.members;if(_2&&_2.length>0){for(var i=_2.length-1;i>=0;i--){if(_2[i].members.contains(_1))return _2[i]}}
+return null}
+,isc.A.setControls=function isc_ToolStripGroup_setControls(_1,_2){if(this.controls){this.removeAllControls()}
+this.addControls(_1,_2)}
+,isc.A.addControls=function isc_ToolStripGroup_addControls(_1,_2){if(!_1)return;if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){this.addControl(_1[i],null,_2)}}
+,isc.A.addControl=function isc_ToolStripGroup_addControl(_1,_2,_3){if(!_1)return null;var _4;if(_2===null||_2===_4||_2>=this.numRows)_2=this.numRows-1;var _5=this.getAvailableColumn(true);if(!this.controls)this.controls=[];if(_3!=false)this.controls.add(_1);_5.addMember(_1,_2);_5.reflowNow()}
+,isc.A.removeControl=function isc_ToolStripGroup_removeControl(_1){_1=isc.isAn.Object(_1)?_1:this.getMember(_1);if(!_1)return null;var _2=this.getControlColumn(_1);if(_2){_2.removeMember(_1);this.controls.remove(_1);if(_2.members.length<=1){_2.hide();this.body.removeMember(_2);_2.markForDestroy();_2=null}}
+if(this.body.members.length==0&&this.autoHideOnLastRemove){this.hide()}}
+,isc.A.removeAllControls=function isc_ToolStripGroup_removeAllControls(){if(!this.controls||this.controls.length==0)return null;for(var i=this.controls.length-1;i>=0;i--){var _2=this.controls[i];_2.hide();this.removeControl(_2);_2.markForDestroy();_2=null}}
+,isc.A.resized=function isc_ToolStripGroup_resized(){this.$87v()}
+,isc.A.draw=function isc_ToolStripGroup_draw(){this.Super("draw",arguments);this.$87v()}
+,isc.A.redraw=function isc_ToolStripGroup_redraw(){this.Super("redraw",arguments);this.$87v()}
+,isc.A.$87v=function isc_ToolStripGroup__updateLabel(){var _1=this.getVisibleWidth(),_2=this.layoutMargin,_3=this.getVisibleWidth()-(this.layoutMargin*3);this.labelLayout.setWidth(_3);this.label.setWidth(_3)}
+);isc.B._maxIndex=isc.C+17;isc.defineClass("IconButton","Button");isc.A=isc.IconButton.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.width=1;isc.A.overflow="visible";isc.A.height=1;isc.A.padding=3;isc.A.autoDraw=false;isc.A.usePartEvents=true;isc.A.orientation="horizontal";isc.A.baseStyle="iconButton";isc.A.showMenuIcon=false;isc.A.menuIconSrc="[SKINIMG]/Menu/submenu_down.png";isc.A.menuIconOverSrc="[SKINIMG]/Menu/submenu_downOver.png";isc.A.menuIconWidth=14;isc.A.menuIconHeight=13;isc.A.menuIconStyleCSS="vertical-align:middle; border:1px solid transparent; -moz-border-radius: 3px; "+"-webkit-border-radius: 3px; -khtml-border-radius: 3px; border-radius: 3px;";isc.A.menuIconOverBorderCSS="1px solid #A7ABB4";isc.A.menuConstructor=isc.Menu;isc.A.iconSize=16;isc.A.largeIconSize=32;isc.A.showMenuIconOver=false;isc.B.push(isc.A.initWidget=function isc_IconButton_initWidget(){if(this.orientation=="vertical"){this.align="center";this.valign="top"}else{this.align="left";this.valign="center"}
+this.$87r=this.title;this.$87s=this.icon;this.Super("initWidget",arguments)}
+,isc.A.getTitle=function isc_IconButton_getTitle(){var _1=this.orientation=="vertical",_2=(_1?this.largeIcon||this.$87s:this.$87s),_3=(_1?this.largeIconSize:this.iconSize),_4=this.$87r;if(this.showDisabledIcon&&this.disabled){var _5=_2.lastIndexOf("."),_6=_2.substring(0,_5)+"_Disabled"+_2.substring(_5);_2=_6}
+var _7="vertical-align:middle;"+(_1?"margin-bottom:5px;":""),_8=this.menuIconStyleCSS+(_1?"margin-top:4px;":""),_9=this.imgHTML(_2,_3,_3,null," style='"+_7+"' eventpart='icon'"),_10=this.showMenuIcon?this.imgHTML(this.menuIconSrc,this.menuIconWidth,this.menuIconHeight,"menuIcon"," style='"+_8+"' eventpart='menuIcon' "):null;;if(this.orientation=="vertical"){this.icon=null;var _11="<span style='font-size:4px'><br></span>";_4=_9+"<br>"+_4;if(_10)_4+="<br>"+_10}else{if(this.showMenuIcon&&_10)_4+=" "+_10}
+this.title=_4;return _4}
+,isc.A.mouseOut=function isc_IconButton_mouseOut(){this.Super("mouseOut",arguments);if(this.showingMenuButtonOver)this.menuIconMouseOut()}
+,isc.A.menuIconClick=function isc_IconButton_menuIconClick(){}
+,isc.A.menuIconMouseMove=function isc_IconButton_menuIconMouseMove(){if(!this.showMenuIconOver||this.showingMenuButtonOver)return;var _1=this.getImage("menuIcon");if(_1){this.showingMenuButtonOver=true;_1.style.border=this.menuIconOverBorderCSS}}
+,isc.A.menuIconMouseOut=function isc_IconButton_menuIconMouseOut(){if(!this.showMenuIconOver)return;var _1=this.getImage("menuIcon");if(_1){this.showingMenuButtonOver=false;_1.style.border="1px solid transparent"}}
+);isc.B._maxIndex=isc.C+6;isc.defineClass("IconMenuButton","IconButton");isc.A=isc.IconMenuButton.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.usePartEvents=true;isc.A.showMenuIcon=true;isc.A.menu=null;isc.B.push(isc.A.menuIconClick=function isc_IconMenuButton_menuIconClick(){this.showMenu()}
+,isc.A.showMenu=function isc_IconMenuButton_showMenu(){if(isc.isA.String(this.menu))this.menu=window[this.menu];if(!isc.isA.Menu(this.menu))this.$36d(this.menu);if(!isc.isA.Menu(this.menu))return;var _1=this.menu;_1.$8h();var _2=this.getPageLeft();var _3=this.getPageTop()+this.getVisibleHeight()+1;_1.placeNear(_2,_3);_1.show(this.menuAnimationEffect)}
+,isc.A.$36d=function isc_IconMenuButton__createMenu(_1){if(!_1)return;_1.autoDraw=false;var _2=this.menuConstructor||isc.Menu;this.menu=_2.create(_1)}
+);isc.B._maxIndex=isc.C+3;isc.defineClass("RibbonBar","ToolStrip");isc.A=isc.RibbonBar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.groupConstructor="RibbonGroup";isc.B.push(isc.A.addGroup=function isc_RibbonBar_addGroup(_1,_2){return this.addToolStripGroup(_1,_2)}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("RibbonGroup","ToolStripGroup");isc.A=isc.RibbonGroup.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.newControlConstructor="IconButton";isc.A.newControlDefaults={};isc.B.push(isc.A.createControl=function isc_RibbonGroup_createControl(_1,_2){var _3=this.createAutoChild("newControl",_1);return this.addControl(_3,_2)}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("SectionStack","VLayout");isc.addGlobal("ListBar",isc.SectionStack);isc.A=isc.SectionStack.getPrototype();isc.A.overflow="hidden";isc.A.styleName="sectionStack";isc.A.sectionHeaderClass="SectionHeader";isc.A.headerHeight=20;isc.A.printHeaderStyleName="printHeader";isc.A.canResizeSections=true;isc.A.canResizeStack=true;isc.A.canReorderSections=false;isc.A.scrollSectionIntoView=true;isc.A.useGlobalSectionIDs=false;isc.A.animateMemberEffect="wipe";isc.A.visibilityMode="mutex";isc.A.forceFill=true;isc.A.itemIndent=0;isc.A.showExpandControls=true;isc.A=isc.SectionStack.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.sectionNameIndex=0;isc.B.push(isc.A.initWidget=function isc_SectionStack_initWidget(){this.Super(this.$oc);if(this.canReorderSections)this.canAcceptDrop=true;if(this.animateSections!=null)this.animateMembers=this.animateSections
+if(this.groups!=null&&this.sections==null)this.sections=this.groups;var _1=this.sections;this.sections=[];this.addSections(_1,null,true)}
+,isc.A.$735=function isc_SectionStack__dragIsSectionReorder(){if(this.canReorderSections){var _1=this.ns.EH.dragTarget;return(this.sections!=null&&this.sections.contains(_1))}
+return false}
+,isc.A.willAcceptDrop=function isc_SectionStack_willAcceptDrop(){if(this.$735()){var _1=this.ns.EH.dragTarget;return(_1.canReorder!=false)}
+return this.Super("willAcceptDrop",arguments)}
+,isc.A.getDropPosition=function isc_SectionStack_getDropPosition(_1){if(!this.$735()){return this.getEditModeDropPosition(_1)}
+var _2=this.vertical?this.getOffsetY():this.getOffsetX();if(_2<0)return 0;var _3=this.vertical?this.$td:this.$tb,_4=this.sections[0],_5=0,_6=0,_7=0;while(_7<this.members.length){var _8=0,_9=this.members[_7],_10=0;while(_9!=null&&(_9==_4||(_4.items&&_4.items.contains(_9)))){if(_9.isVisible()){_8+=this.memberSizes[_6];_10=this.membersMargin+this.getMemberGap(_9);_8+=_10;_6++}
+_7+=1
+_9=this.members[_7]}
+if(_2<(_3+((_8-_10)/2))){if(_4&&_4.canDropBefore===false)return false;return this.members.indexOf(_4)}
+_3+=_8;_5+=1;_4=this.sections[_5]}
+return this.members.length}
+,isc.A.drop=function isc_SectionStack_drop(){if(!this.willAcceptDrop())return;var _1=this.getDropPosition(),_2=this.getDropComponent(isc.EventHandler.getDragTarget(),_1);if(this.canReorderSections&&_2!=null&&this.sections.contains(_2)){var _3=this.sections.indexOf(_2),_4;var _5=this.members[_1];if(_5==null){_4=this.sections.length}else{for(var i=0;i<this.sections.length;i++){if(_5==this.sections[i]||(this.sections[i].items&&this.sections[i].items.contains(_5)))
+{_4=i}}}
+var _7=_4>_3;if(_7){_4-=1}
+if(_4==_3){return}
+this.sections.slide(_3,_4);var _8=this.members.indexOf(_2),_9=_8+1,_10=_2.items||[];for(var i=0;i<_10.length;i++){if(this.members.contains(_10[i]))_9+=1}
+if(_7)_1-=(_9-_8);this.logInfo("Drag reorder of sections - section:"+_2+" moved to:"+_4+" - reordering members from "+_8+" to "+_9+" target position:"+_1);this.reorderMembers(_8,_9,_1)}}
+,isc.A.addItem=function isc_SectionStack_addItem(_1,_2,_3){var _4=this.createCanvas(_2);if(!isc.isA.Canvas(_4)){this.logWarn("addItem passed:"+this.echo(_2)+" cannot be resolved to a Canvas - ignoring");return}
+var _5=this.getSection(_1);if(_3==null)_3=0;if(_3>=_5.items.length)_3=_5.items.length;_5.items.addAt(_4,_3);if(this.isDrawn()&&_5.expanded){var _6=1+this.members.indexOf(_5)+_3;this.addMember(_4,_6)}else if(_4.isDrawn()){_4.clear();_4.deparent()}}
+,isc.A.removeItem=function isc_SectionStack_removeItem(_1,_2){var _3=this.getSection(_1);_3.items.remove(_2);if(this.members.contains(_2))this.removeMember(_2)}
+,isc.A.setSectionProperties=function isc_SectionStack_setSectionProperties(_1,_2){var _1=this.getSection(_1);if(_1!=null){if(isc.isA.Canvas(_1)){_1.setProperties(_2)}else{isc.addProperties(_1,_2)}}}
+,isc.A.removeChild=function isc_SectionStack_removeChild(_1,_2){isc.Layout.$b4.removeChild.call(this,_1,_2);var _3=this.sections;if(_3){for(var i=0;i<_3.length;i++){var _5=_3[i];if(_1==_5){this.removeSection(_1);break}else if(_5.items&&_5.items.contains(_1)){this.removeItem(_5,_1);break}}}}
+,isc.A.addSections=function isc_SectionStack_addSections(_1,_2,_3){if(_1==null)return;if(!isc.isAn.Array(_1))_1=[_1];if(_2==null||_2>this.sections.length){_2=this.sections.length}
+for(var i=0;i<_1.length;i++){var _5=_1[i];if(!_5)continue;if(_5.showHeader==null)_5.showHeader=true;if(_5.canHide==null)_5.canHide=true;var _6=_5.expanded!=null?_5.expanded:_5.autoShow||_5.showHeader==false;if(_5.hidden==null)_5.hidden=false;if(_5.items==null)_5.items=[];else if(!isc.isA.Array(_5.items))_5.items=[_5.items];for(var j=0;j<_5.items.length;j++){if(isc.isAn.Object(_5.items[j]))_5.items[j].$86x=this.ID};var _8=isc.ClassFactory.getClass(this.sectionHeaderClass),_9=_8.createRaw();_9.autoDraw=false;_9._generated=true;_9.expanded=_6;_9.isSectionHeader=true;if(!this.editingOn)
+_9.noDoubleClicks=true;_9.visibility=(_5.hidden||_5.showHeader==false)?isc.Canvas.HIDDEN:isc.Canvas.INHERIT;_9.dragScrollType="parentsOnly";_9.dragScrollDirection=this.vertical?isc.Canvas.VERTICAL:isc.Canvas.HORIZONTAL;_9.layout=this;if(this.vertical)_9.height=this.headerHeight;else _9.width=this.headerHeight;var _10=null,_11=null;if(_5.name!=null)_10=_5.name;if(_5.ID!=null){if(_10==null)_10=_5.ID;if(!this.useGlobalSectionIDs){_11=_5.ID;delete _5.ID}else{var _12=window[_5.ID];if(_12!=null){this.logWarn("Note: Section Stack Section has ID specified as '"+_5.ID+"'. This collides with an existing "+(isc.isA.Canvas(_12)?"SmartClient component ID.":"object reference.")+" The existing object will be replaced by the generated header"+" for this section. To avoid applying section IDs to their"+" corresponding section headers, you can set"+" sectionStack.useGlobalSectionIDs to false")}}}
+if(_10==null){_10="section"+this.sectionNameIndex++}
+var _13=_10,_14=this.sections.find("name",_10);while(_14!=_5&&_14!=null){_10="section"+this.sectionNameIndex++;_14=this.sections.find("name",_10)}
+if(_13!=_10){this.logWarn("Specified name for section:"+_13+" collided with name for "+"existing section in this stack. Replacing with auto-generated name:"+_10)}
+_5.name=_10;isc.addProperties(_9,_5);_9.__ref=null;_9.$75q=_5;_5.$75r=_9;_9.getSectionConfig=function(){return this.$75q}
+_5.getSectionHeader=function(){return this.$75r}
+if(_11!=null){_5.ID=_11}
+if(this.canReorderSections&&_9.canReorder!=false){_9.canDragReposition=true;_9.canDrop=true}
+_9.completeCreation();_5=_9;this.sections.addAt(_5,_2+i);this.addMember(_5,this.$6k(_5));if(_6&&!_5.hidden){this.expandSection(_5);this.$6l=_5}else{for(var _15=0;_15<_5.items.length;_15++){var _16=_5.items[_15];if(_16.parentElement&&_16.parentElement!=this)_16.deparent();if(isc.isA.Canvas(_16)&&_16.isDrawn())_16.clear()}}
+if(_5.items){if(!this.canResizeSections)_5.items.setProperty("resizeable",false);else if(_5.resizeable!=null){_5.items.setProperty("resizeable",_5.resizeable)}}}
+if(_3&&this.$6l==null){var _17=_1.first();if(!(_17.expanded==false)){var _18=this.sections.first();this.expandSection(_18);this.$6l=_18}}}
+,isc.A.addSection=function isc_SectionStack_addSection(_1,_2){this.addSections(_1,_2)}
+,isc.A.removeSection=function isc_SectionStack_removeSection(_1){if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){var _3=_1[i];_3=this.getSectionHeader(_3);for(var _4=0;_4<_3.items.length;_4++){var _5=_3.items[_4];if(this.members.contains(_5))this.removeMember(_5)}
+this.sections.remove(_3);if(!_3.destroying&&!_3.destroyed)_3.destroy()}}
+,isc.A.getSections=function isc_SectionStack_getSections(){return this.sections.getProperty("name")}
+,isc.A.reorderSection=function isc_SectionStack_reorderSection(_1,_2){this.moveSection(_1,_2)}
+,isc.A.moveSection=function isc_SectionStack_moveSection(_1,_2){if(_2==null)return;if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<_1.length;i++){var _4=this.getSectionHeader(_1[i]);if(_4==null){this.logInfo("moveSection(): Unable to find header for specified section:"+_1[i]+", skipping");i--;_1.removeAt(i)}else{_1[i]=_4;this.sections[this.sections.indexOf(_4)]=null}}
+this.sections.removeEmpty();this.sections.addListAt(_1,_2);var _5=0;for(var i=0;i<this.sections.length;i++){var _6=this.getSectionHeader(i),_7=this.members.indexOf(_6),_8=_7+1;var _9=_6.items;if(_9!=null&&_9.length!=0&&this.members.contains(_9[0])){if(_7==-1){_7=this.members.indexOf(_9[0]);_8=_7}
+_8+=_9.length}
+if(_7==-1)continue;this.members.slideRange(_7,_8,_5);_5+=(_8-_7)}
+this.$87o("moveSection() called")}
+,isc.A.showSection=function isc_SectionStack_showSection(_1,_2){this.$6m(_1,true,false,_2)}
+,isc.A.expandSection=function isc_SectionStack_expandSection(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];if(this.visibilityMode=="mutex"){this.collapseSection(this.$6l)}
+this.$6m(_1,false,true,_2)}
+,isc.A.$6m=function isc_SectionStack__showSection(_1,_2,_3,_4){if(_1==null)return;if(!isc.isAn.Array(_1))_1=[_1];var _5=[];for(var i=0;i<_1.length;i++){var _7=this.getSectionHeader(_1[i]);if(_7==null){this.logWarn("showSection(): no such section ["+i+"]: "+this.echo(_1[i]));continue}
+if(_7.showHeader&&_7.hidden&&(_2||_3)){_5.add(_7);_7.hidden=false}
+if(_3||_7.expanded){if(_7.setExpanded&&!_7.setOpen)_7.setExpanded(true);else if(_7.setOpen)_7.setOpen(true);this.$6l=_7;if(_7.items){for(var _8=_7.items.length-1;_8>=0;_8--){var _9=this.createCanvas(_7.items[_8]);if(!isc.isA.Canvas(_9)){this.logWarn("Section with title:"+_7.title+" contains invalid item:"+_7.items[_8]+" - ignoring this item.");_7.items.removeAt(_8);continue}
+_7.items[_8]=_9}
+var _10=this.$6k(_7)+1;this.addMembers(_7.items,_10,true);_5.addList(_7.items)}}}
+var _11=this;this.showMembers(_5,function(){_11.$6n(_1,_4)})}
+,isc.A.$6n=function isc_SectionStack__completeShowOrExpandSection(_1,_2){if(_1.length==0)return;if(this.isDrawn()){var _3=this.getSectionHeader(_1[0]);if(this.vscrollOn&&this.scrollSectionIntoView){var _4=(_3.showHeader?_3:_3.items.first()),_5=_3.items.last();this.delayCall("scrollIntoView",[_4.getLeft(),_4.getTop(),_4.getVisibleWidth(),_5.getVisibleHeight(),"left","top"],0)}}
+if(_2!=null)this.fireCallback(_2)}
+,isc.A.sectionForItem=function isc_SectionStack_sectionForItem(_1){if(this.sections){for(var i=0;i<this.sections.length;i++){for(var j=0;j<this.sections[i].items.length;i++){if(this.sections[i].items[j]==_1){return this.sections[i]}}}}}
+,isc.A.hideSection=function isc_SectionStack_hideSection(_1,_2){this.$6o(_1,true,false,_2)}
+,isc.A.collapseSection=function isc_SectionStack_collapseSection(_1,_2){this.$6o(_1,false,true,_2)}
+,isc.A.$6o=function isc_SectionStack__hideSection(_1,_2,_3,_4){if(_1==null)return;if(!isc.isAn.Array(_1))_1=[_1];var _5=[];for(var i=0;i<_1.length;i++){var _7=this.getSectionHeader(_1[i]);if(_7==null){this.logWarn("hideSection(): no such section ["+i+"]: "+this.echo(_1[i]));continue}
+if(_2&&!_7.hidden){_7.hidden=true;_5.add(_7)}
+if(_3||_7.expanded){if(_3){if(_7.setExpanded&&!_7.setOpen)_7.setExpanded(false);else if(_7.setOpen)_7.setOpen(false)}
+if(_7.items){for(var j=0;j<_7.items.length;j++){if(this.members.contains(_7.items[j]))_5.add(_7.items[j])}}}}
+if(this.forceFill&&this.getVisibleHeight()<=this.getHeight()){var _9=this.getMemberNumber(this.getSectionHeader(_1[0]));var _10;var _11=false;for(var i=_9-1;i>=0;i--){var _12=this.members[i];if(_5.contains(_12))continue;if(this.memberIsDragResizeable(_12)){if(this.memberHasAutoResizeableHeight(_12)){_11=true;break}else if(_10==null){_10=_12}}}
+if(!_11){for(var i=_9+1;i<this.members.length;i++){var _12=this.members[i];if(_5.contains(_12))continue;if(this.memberIsDragResizeable(_12)){if(this.memberHasAutoResizeableHeight(_12)){_11=true;break}else if(_10==null){_10=_12}}}}
+if(!_11&&_10!=null){_10.$po=null}}
+this.hideMembers(_5,_4)}
+,isc.A.sectionIsVisible=function isc_SectionStack_sectionIsVisible(_1){_1=this.getSectionHeader(_1);if(!_1)return false;if(_1.showHeader&&_1.isVisible())return true;var _2=_1.items.first();if(_2==null||!isc.isA.Canvas(_2)||!_2.isDrawn()||_2.visibility==isc.Canvas.HIDDEN)return false;return true}
+,isc.A.getVisibleSections=function isc_SectionStack_getVisibleSections(){var _1=[];for(var i=0;i<this.sections.length;i++)
+if(this.sectionIsVisible(this.sections[i]))_1.add(this.sections[i].name);return _1}
+,isc.A.sectionIsExpanded=function isc_SectionStack_sectionIsExpanded(_1){return this.getSectionHeader(_1).expanded}
+,isc.A.getExpandedSections=function isc_SectionStack_getExpandedSections(){var _1=this.sections.findAll("expanded",true);return _1==null?[]:_1.getProperty("name")}
+,isc.A.setSectionTitle=function isc_SectionStack_setSectionTitle(_1,_2){var _3=this.getSectionHeader(_1);if(_3)_3.setTitle(_2)}
+,isc.A.getSectionHeader=function isc_SectionStack_getSectionHeader(_1){return isc.Class.getArrayItem(_1,this.sections,"name")}
+,isc.A.getSection=function isc_SectionStack_getSection(_1){return this.getSectionHeader(_1)}
+,isc.A.getSectionConfig=function isc_SectionStack_getSectionConfig(_1){var _2=this.getSectionHeader(_1);if(!isc.isA.Canvas(_2))return _2;return _2.$75q}
+,isc.A.getSectionNumber=function isc_SectionStack_getSectionNumber(_1){if(isc.isA.String(_1)){return this.sections.findIndex("name",_1)}else{return this.sections.indexOf(_1)}}
+,isc.A.$6k=function isc_SectionStack__getSectionPosition(_1){var _2=this.getMemberNumber(_1);if(_2!=-1)return _2;var _3=this.sections.indexOf(_1);if(_3<=0)return _3;var _4=this.sections[_3-1],_5=_4.items?_4.items.last():null;if(this.hasMember(_5)){return this.getMemberNumber(_5)+1}else{return this.getMemberNumber(_4)+1}}
+,isc.A.sectionHeaderClick=function isc_SectionStack_sectionHeaderClick(_1){if(this.onSectionHeaderClick&&(this.onSectionHeaderClick(_1)==false)){return false}
+if(this.visibilityMode=="mutex"){if(this.sectionIsExpanded(_1)){var _2=this.sections.indexOf(_1);if(_2==this.sections.getLength()-1)_2=0;else _2+=1;var _3=this.sections[_2];this.collapseSection(_1);this.expandSection(_3);this.$6l=_3;return false}
+this.collapseSection(this.$6l);this.expandSection(_1)}else{if(!this.sectionIsExpanded(_1)){this.expandSection(_1)}else{this.collapseSection(_1)}}
+this.$6l=_1;return false}
+,isc.A.getSectionCursor=function isc_SectionStack_getSectionCursor(_1){var _2;var _3=this.getSectionConfig(_1);if(_3==null)_2=isc.Canvas.DEFAULT;else if(_3.cursor)_2=_3.cursor;else{if(_3.canCollapse!=false){_2=isc.Canvas.HAND}else if(this.canRorderSections&&_3.canReorder!=false){_2="move"}else{_2=isc.Canvas.DEFAULT}}
+return _2}
+,isc.A.getDragResizeTarget=function isc_SectionStack_getDragResizeTarget(_1){var _2=this.getMemberNumber(_1);var _3;this.$6p=0;for(var i=_2-1;i>=0;i--){var _1=this.getMember(i);if(this.memberIsDragResizeable(_1)){_3=_1;break}
+if(_1.isSectionHeader||(!_1.resizeable&&_1.isVisible()))
+this.$6p+=_1.getVisibleHeight()}
+if(!_3)return null;if(this.canResizeStack)return _3;var _5=this.getMembers().length;for(var i=_2+1;i<_5;i++){var _1=this.getMember(i);if(this.memberIsDragResizeable(_1))return _3}
+return null}
+,isc.A.memberIsDragResizeable=function isc_SectionStack_memberIsDragResizeable(_1){if(!_1.isSectionHeader&&_1.resizeable!==false&&_1.isVisible()&&(!this.memberHasInherentLength(_1)||_1.resizeable))return true}
+,isc.A.memberHasAutoResizeableHeight=function isc_SectionStack_memberHasAutoResizeableHeight(_1){var _2=_1.$po;return _2==null||(isc.isA.String(_2)&&(_2=="*"||isc.endsWith(_2,"%")))}
+,isc.A.getMemberDefaultBreadth=function isc_SectionStack_getMemberDefaultBreadth(_1,_2){var _3=_2;if(!_1.isSectionHeader){if(this.itemStartIndent!=null||this.itemEndIndent!=null)
+_3-=this.itemStartIndent+this.itemEndIndent;else _3-=this.itemIndent}
+return _3}
+,isc.A.getMemberOffset=function isc_SectionStack_getMemberOffset(_1,_2,_3){var _4=this.itemIndent;if(_1.isSectionHeader)return _2;if(this.itemStartIndent!=null)_4=this.itemStartIndent;if(_3==isc.Canvas.RIGHT||_3==isc.Canvas.BOTTOM)
+_4*=-1;return _2+_4}
+);isc.B._maxIndex=isc.C+40;isc.$6q={icon:"[SKIN]SectionHeader/opener.gif",overflow:"hidden",baseStyle:"sectionHeader",showDisabled:true,expanded:false,setExpanded:function(_1){this.expanded=_1;this.stateChanged()},setOpen:function(_1){this.setExpanded(_1)},getCustomState:function(){return this.expanded?"opened":"closed"}};isc.$6r={overflow:"hidden",wrap:false,height:20,expanded:false,canCollapse:true,getSectionStack:function(){var _1=this.layout;if(_1)return isc.isA.String(_1)?window[_1]:_1;else return null},keyPress:function(){var _1=this.getSectionStack();if(_1==null)return;var _2=isc.EH.getKey();if(_2=="Enter"||_2=="Space"){if(this.canCollapse)return _1.sectionHeaderClick(this)}else if(_2=="Arrow_Up"||_2=="Arrow_Down"){var _3=_1.getDragResizeTarget(this);if(_3==null)return false;var _4=(_2=="Arrow_Up"?-5:5);this.bringToFront();this.resizeTarget(_3,true,this.resizeInRealTime,0,0,(this.getPageTop()+_4))
+this.$6s=_3}},keyUp:function(){if(this.$6s){var _1=isc.EH.getKey();if(_1=="Arrow_Up"||_1=="Arrow_Down"){this.finishTargetResize(this.$6s,true,this.resizeInRealTime);this.$6s=null}}},$kk:function(){if(this.canTabToHeader!=null)return this.canTabToHeader;var _1=this.getSectionStack();if(_1){if(_1.canTabToHeaders!=null)return _1.canTabToHeaders;if(_1.canTabToHeader!=null)return _1.canTabToHeader;if(isc.SectionItem&&isc.isA.SectionItem(_1)){var _2=_1.form;if(_2&&_2.canTabToSectionHeaders!=null)return _2.canTabToSectionHeaders}
+return!!isc.screenReader}
+else return true},$71i:function(){var _1=this.getSectionStack();return _1?true:false},schemaName:"SectionStackSection",addItem:function(_1,_2){if(!this.$71i())return;var _3=this.getSectionStack();_3.addItem(this,_1,_2);_3.expandSection(this)},removeItem:function(_1){if(!this.$71i())return;this.getSectionStack().removeItem(this,_1)},canDrag:true,dragAppearance:"none",isSectionHeader:true,dragStart:function(){if(!this.$71i())return;var _1=this.getSectionStack().getDragResizeTarget(this);this.$6t=_1;if(_1==null)return false;this.bringToFront()},dragMove:function(){if(!this.$71i())return;var _1=this.getSectionStack().$6p;var _2=0-isc.EH.dragOffsetY;this.resizeTarget(this.$6t,true,this.resizeInRealTime,_2,_1)},dragStop:function(){this.finishTargetResize(this.$6t,true,this.resizeInRealTime)},destroy:function(){if(!this.expanded&&this.items){var _1=this.items;for(var i=0;i<_1.length;i++){if(isc.isA.Canvas(_1[i])&&_1[i].parentElement!=this.parentElement){_1[i].destroy()}}}
+var _3=this.controls,_4=this.controlsLayout;if(_3){if(!isc.isAn.Array(_3))_3=[_3];for(var _5=0;_5<_3.length;_5++){if(_3[_5].destroy&&!_3[_5].destroyed&&(_4==null||_3[_5].parentElement!=_4))
+{_3[_5].destroy()}}}
+return this.Super("destroy",arguments)},controlsLayoutDefaults:{_constructor:isc.HStack,defaultLayoutAlign:"center",snapTo:"R",membersMargin:5,layoutEndMargin:5,addAsChild:true},addControls:function(){if(!this.controls)return;this.addAutoChild("controlsLayout",{height:this.getInnerHeight(),align:this.isRTL()?"left":"right",members:this.controls});this.allowContentAndChildren=true},refreshControls:function(){if(!this.controls)return;if(!this.controlsLayout)this.addControls();var _1=this.controlsLayout;_1.addMembers(this.controls);this.allowContentAndChildren=true},getPrintStyleName:function(){var _1=this.parentElement;if(_1&&_1.printHeaderStyleName!=null){this.printStyleName=_1.printHeaderStyleName}
+return this.Super("getPrintStyleName",arguments)},shouldPrint:true};isc.defineClass("SectionHeader","Label");isc.A=isc.SectionHeader.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.useContents=false;isc.B.push(isc.A.click=function isc_SectionHeader_click(){if(this.contains(isc.EH.lastTarget))return;if(!this.canCollapse||!this.$71i())return;return this.getSectionStack().sectionHeaderClick(this)}
+,isc.A.draw=function isc_SectionHeader_draw(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return;this.align=this.isRTL()?"right":"left";if(!this.canCollapse||(this.$71i()&&this.getSectionStack()&&this.getSectionStack().showExpandControls==false))
+{this.icon=null;this.showIconState=false}
+this.setCursor(this.getCurrentCursor());this.invokeSuper(isc.SectionHeader,"draw",_1,_2,_3,_4);this.addControls();if(this.headerControls!=null){this.headerLayout=isc.HLayout.create({autoDraw:false,width:this.getInnerWidth(),height:this.getInnerHeight(),members:this.headerControls});this.addChild(this.headerLayout);this.allowContentAndChildren=true}}
+,isc.A.getCurrentCursor=function isc_SectionHeader_getCurrentCursor(){var _1=this.cursor;if(this.getSectionStack()&&this.getSectionStack().getSectionCursor!=null){_1=this.getSectionStack().getSectionCursor(this)}
+return _1}
+);isc.B._maxIndex=isc.C+3;isc.SectionHeader.addMethods(isc.$6r, isc.$6q);isc.defineClass("ImgSectionHeader","HLayout");isc.A=isc.ImgSectionHeader.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.backgroundDefaults=isc.addProperties({titleStyle:"sectionHeaderTitle",src:"[SKIN]SectionStack/header.gif",backgroundColor:"#a0a0a0",click:function(){if(this.parentElement&&this.parentElement.editingOn){return this.Super("click",arguments)}
+if(this.parentElement.canCollapse){if(this.parentElement.getSectionStack())
+return this.parentElement.getSectionStack().sectionHeaderClick(this.parentElement)}},width:"100%",height:"100%",addAsChild:true,getPrintStyleName:function(){if(this.parentElement)return this.parentElement.getPrintStyleName();return this.Super("getPrintStyleName",arguments)}},isc.$6q);isc.B.push(isc.A.setExpanded=function isc_ImgSectionHeader_setExpanded(_1){this.expanded=_1;if(this.background)this.background.setExpanded(_1)}
+,isc.A.setOpen=function isc_ImgSectionHeader_setOpen(_1){this.setExpanded(_1)}
+,isc.A.setTitle=function isc_ImgSectionHeader_setTitle(_1){this.title=_1;if(this.background)this.background.setTitle(_1)}
+,isc.A.draw=function isc_ImgSectionHeader_draw(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return;this.setupBackground();this.addControls();this.addAutoChildren(this.headerControls);this.background.sendToBack();this.invokeSuper(isc.ImgSectionHeader,"draw",_1,_2,_3,_4)}
+,isc.A.setupBackground=function isc_ImgSectionHeader_setupBackground(){var _1={title:this.title,expanded:this.expanded,canFocus:false};if(this.icon)_1.icon=this.icon;if(!this.canCollapse||(this.$71i()&&this.getSectionStack()&&this.getSectionStack().showExpandControls==false))
+{_1.icon=null;_1.showIconState=false}
+_1.align=this.isRTL()?"right":"left";_1.canDragReposition=this.canDragReposition;_1.canDrop=this.canDrop;_1.dragTarget=this;var _2=this.getCurrentCursor();this.setCursor(_2);_1.cursor=_2;if(this.background==null){this.addAutoChild("background",_1,isc.StretchImgButton)}else{this.background.setProperties(_1)}}
+,isc.A.getCurrentCursor=function isc_ImgSectionHeader_getCurrentCursor(){var _1=this.cursor;if(this.getSectionStack()&&this.getSectionStack().getSectionCursor!=null){_1=this.getSectionStack().getSectionCursor(this)}
+return _1}
+,isc.A.getPrintHTML=function isc_ImgSectionHeader_getPrintHTML(_1){if(this.background==null)this.setupBackground();return this.background.getPrintHTML(_1)}
+);isc.B._maxIndex=isc.C+7;isc.ImgSectionHeader.addMethods(isc.$6r)
+isc.SectionStack.registerStringMethods({onSectionHeaderClick:"sectionHeader"});isc.SectionStack.registerDupProperties("sections",["items"]);isc.ClassFactory.defineClass("Scrollbar","StretchImg");isc.$89p={autoDraw:false,_generated:true,$jp:false,$jo:false,_redrawWithParent:false,containedPeer:true,showDisabled:false,skinImgDir:"images/Scrollbar/",canDrag:true,dragAppearance:isc.EventHandler.NONE,dragStartDistance:0,dragScrollType:"parentsOnly",click:isc.EventHandler.stopBubbling,doubleClick:isc.EventHandler.stopBubbling,mouseMove:isc.EventHandler.stopBubbling,mouseOver:function(){return this.scrollbar.thumbOver()},mouseOut:function(){return this.scrollbar.thumbOut()},mouseDown:function(){return this.scrollbar.thumbDown()},dragStart:function(){return this.scrollbar.thumbDragStart()},dragMove:function(){return this.scrollbar.thumbMove()},dragStop:function(){return this.scrollbar.thumbDragStop()},mouseUp:function(){return this.scrollbar.thumbUp()},keyPress:function(){return this.ns.EH.bubbleEvent(this.scrollbar,this.ns.EH.eventTypes.KEY_PRESS)},keyDown:function(){return this.ns.EH.bubbleEvent(this.scrollbar,this.ns.EH.eventTypes.KEY_DOWN)},keyUp:function(){return this.ns.EH.bubbleEvent(this.scrollbar,this.ns.EH.eventTypes.KEY_UP)},mouseWheel:function(){return this.ns.EH.bubbleEvent(this.scrollbar,this.ns.EH.eventTypes.MOUSE_WHEEL)},masterMoved:function(){var _1=this.masterElement;if(_1&&_1.$ss)return;this.Super("masterMoved",arguments)}};isc.defineClass("ScrollThumb","StretchImg").addProperties(isc.$89p)
+isc.A=isc.ScrollThumb.getPrototype();isc.A.hSrc="[SKIN]hthumb.gif";isc.A.vSrc="[SKIN]vthumb.gif";isc.A.backgroundColor="#EEEEEE";isc.A.textDirection="ltr";isc.A.capSize=2;isc.defineClass("HScrollThumb",isc.ScrollThumb);isc.A=isc.HScrollThumb.getPrototype();isc.A.vertical=false;isc.defineClass("VScrollThumb",isc.ScrollThumb);isc.defineClass("SimpleScrollThumb","Img").addProperties(isc.$89p)
+isc.A=isc.SimpleScrollThumb.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.title=" ";isc.A.titleStyle="normal";isc.A.overflow="hidden";isc.A.vBaseStyle="vScrollThumb";isc.A.hBaseStyle="hScrollThumb";isc.A.imageType="center";isc.A.hSrc="[SKIN]hthumb_grip.gif";isc.A.vSrc="[SKIN]vthumb_grip.gif";isc.A.showRollOver=true;isc.A.statelessImage=true;isc.B.push(isc.A.initWidget=function isc_SimpleScrollThumb_initWidget(){if(this.vertical){this.src=this.vSrc||this.src;this.baseStyle=this.vBaseStyle||this.baseStyle}else{this.src=this.hSrc||this.src;this.baseStyle=this.hBaseStyle||this.baseStyle}
+this.Super("initWidget",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("HSimpleScrollThumb",isc.SimpleScrollThumb);isc.A=isc.HSimpleScrollThumb.getPrototype();isc.A.vertical=false;isc.defineClass("VSimpleScrollThumb",isc.SimpleScrollThumb);isc.A=isc.VSimpleScrollThumb.getPrototype();isc.A.vertical=true;isc.A=isc.Scrollbar.getPrototype();isc.A.btnSize=16;isc.A.state=isc.StatefulCanvas.STATE_UP;isc.A.autoEnable=true;isc.A.allowThumbDownState=false;isc.A.allowThumbOverState=false;isc.A.showTrackEnds=false;isc.A.thumbMinSize=12;isc.A.trackEndWidth=12;isc.A.trackEndHeight=12;isc.A.thumbOverlap=1;isc.A.thumbInset=0;isc.A.overflow=isc.Canvas.HIDDEN;isc.A.skinImgDir="images/Scrollbar/";isc.A.cornerSrc="[SKIN]corner.gif";isc.A.hSrc="[SKIN]hscroll.gif";isc.A.vSrc="[SKIN]vscroll.gif";isc.A.hThumbClass=isc.HScrollThumb;isc.A.vThumbClass=isc.VScrollThumb;isc.A.startImg={name:"start",width:"btnSize",height:"btnSize"};isc.A.trackStartImg={name:"track_start",width:"trackStartSize",height:"trackStartSize"};isc.A.trackImg={name:"track",width:"*",height:"*"};isc.A.trackEndImg={name:"track_end",width:"trackEndSize",height:"trackEndSize"};isc.A.endImg={name:"end",width:"btnSize",height:"btnSize"};isc.A.textDirection="ltr";isc.A.$u3=true;isc.A.showThumb=true;isc.A=isc.Scrollbar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$61m="start";isc.A.$61n="end";isc.A.$50x="track";isc.A.$52j="track_start";isc.A.$52k="track_end";isc.A.$52l="thumb";isc.A.$52m="corner";isc.A.$52m="corner";isc.A.click=isc.EventHandler.stopBubbling;isc.A.mouseOver=isc.EH.stopBubbling;isc.B.push(isc.A.initWidget=function isc_Scrollbar_initWidget(){this.invokeSuper(isc.Scrollbar,"initWidget");var _1=this.cornerSize||this.getID()+".btnSize-1";this.$6x={name:"corner",width:_1,height:_1};if(null==this.startThumbOverlap)this.startThumbOverlap=this.thumbOverlap;if(null==this.endThumbOverlap)this.endThumbOverlap=this.thumbOverlap;this.setItems();if(this.vertical)this.setWidth(this.btnSize);else this.setHeight(this.btnSize);this.makeThumb();this.addPeer(this.thumb);this.setScrollTarget();this.setThumb()}
+,isc.A.setItems=function isc_Scrollbar_setItems(){if(this.showTrackEnds==true){this.items=[this.startImg,this.trackStartImg,this.trackImg,this.trackEndImg,this.endImg]}else{this.items=[this.startImg,this.trackImg,this.endImg]}
+if(this.showCorner)this.items.add(this.$6x)}
+,isc.A.setShowCorner=function isc_Scrollbar_setShowCorner(_1){_1=_1!=false;if(this.showCorner!=_1){this.showCorner=_1;this.setItems();this.resizeImages();this.markForRedraw("showCorner")}
+return _1}
+,isc.A.setScrollTarget=function isc_Scrollbar_setScrollTarget(_1){if(this.$u3&&this.scrollTarget!=null&&this.isObserving(this.scrollTarget,"scrollTo"))
+{this.ignore(this.scrollTarget,"scrollTo")}
+if(_1!=null)this.scrollTarget=_1;if(this.scrollTarget==null)this.scrollTarget=this;if(this.$u3&&this.scrollTarget!=this&&this.scrollTarget!=_1){this.observe(this.scrollTarget,"scrollTo","observer.setThumb()")}}
+,isc.A.setHandleDisabled=function isc_Scrollbar_setHandleDisabled(_1){this.Super("setHandleDisabled",arguments);if(this.thumb){if(this.scrollTarget&&this.scrollTarget.$61c){if(_1)this.thumb.delayCall("setVisibility",[isc.Canvas.HIDDEN]);else this.thumb.delayCall("setVisibility",[this.visibility])}else{if(_1)this.thumb.setVisibility(isc.Canvas.HIDDEN);else this.thumb.setVisibility(this.visibility)}
+this.thumb.$jq=!_1}
+if(_1==(this.state==isc.StatefulCanvas.STATE_UP)){this.setState(_1?isc.StatefulCanvas.STATE_DISABLED:isc.StatefulCanvas.STATE_UP)}}
+,isc.A.setVisibility=function isc_Scrollbar_setVisibility(_1,_2,_3,_4){this.invokeSuper(isc.Scrollbar,"setVisibility",_1,_2,_3,_4);if(this.isVisible())this.setThumb()}
+,isc.A.parentVisibilityChanged=function isc_Scrollbar_parentVisibilityChanged(_1,_2,_3,_4){this.invokeSuper(isc.Scrollbar,"parentVisibilityChanged",_1,_2,_3,_4);if(this.isVisible())this.setThumb()}
+,isc.A.drawPeers=function isc_Scrollbar_drawPeers(_1,_2,_3,_4){this.setThumb();this.invokeSuper(isc.Scrollbar,"drawPeers",_1,_2,_3,_4)}
+,isc.A.resizePeersBy=function isc_Scrollbar_resizePeersBy(_1,_2){this.setThumb()}
+,isc.A.makeThumb=function isc_Scrollbar_makeThumb(){if(!this.showThumb)return;var _1=this.vertical?this.vThumbClass:this.hThumbClass;this.thumb=_1.create({ID:this.getID()+"_thumb",scrollbar:this,state:this.state,visibility:this.visibility,width:this.vertical?this.getWidth():1,height:!this.vertical?this.getHeight():1,dragScrollDirection:this.vertical?isc.Canvas.VERTICAL:isc.Canvas.HORIZONTAL});if(this.thumb.showRollOver){this.allowThumbOverState=true
+this.thumb.showRollOver=false}
+if(this.thumb.showDown){this.allowThumbDownState=true;this.thumb.showDown=false}}
+,isc.A.updateButtonsOnEdges=function isc_Scrollbar_updateButtonsOnEdges(){if(this.disableButtonsOnEdges){var _1=this.scrollTarget.getScrollRatio(this.vertical);var _2=this.scrollTarget.getViewportRatio(this.vertical);if(_1==0){this.setState(isc.StatefulCanvas.STATE_DISABLED,this.$61m)}else{this.setState(isc.StatefulCanvas.STATE_UP,this.$61m)}
+if(_1==1||_2>=1){this.setState(isc.StatefulCanvas.STATE_DISABLED,this.$61n)}else{this.setState(isc.StatefulCanvas.STATE_UP,this.$61n)}}}
+,isc.A.setThumb=function isc_Scrollbar_setThumb(){this.updateButtonsOnEdges();if(this.thumb==null||this.$494)return;var _1=this.thumb,_2=this.trackSize();if(this.isDrawn()&&_1.isDrawn())_1.moveAbove(this);var _3=Math.round(this.scrollTarget.getViewportRatio(this.vertical)*_2);if(!isc.isA.Number(_3)||_3<this.thumbMinSize)_3=this.thumbMinSize;if(_3>_2)_3=_2;var _4=Math.max(1,(this.vertical?this.getWidth():this.getHeight())
+-(2*this.thumbInset));this.vertical?_1.resizeTo(_4,_3):_1.resizeTo(_3,_4);this.moveThumb()}
+,isc.A.setZIndex=function isc_Scrollbar_setZIndex(_1){this.Super("setZIndex",arguments);if(this.thumb)this.thumb.moveAbove(this)}
+,isc.A.moveThumbTo=function isc_Scrollbar_moveThumbTo(_1){if(!this.thumb)return;if(this.vertical)
+return this.thumb.moveTo(this.getLeft()+this.thumbInset,_1);else
+return this.thumb.moveTo(_1,this.getTop()+this.thumbInset)}
+,isc.A.thumbSize=function isc_Scrollbar_thumbSize(){if(!this.thumb)return;return(this.vertical?this.thumb.getHeight():this.thumb.getWidth())}
+,isc.A.moveThumb=function isc_Scrollbar_moveThumb(){var _1=(this.$u3||this.scrollTarget.canScroll(this.vertical));if(!_1){if(this.autoEnable)this.disable();this.moveThumbTo(this.trackStart());return}
+if(this.autoEnable&&!this.scrollTarget.isDisabled())this.enable();var _2=this.scrollTarget.getScrollRatio(this.vertical),_3=this.trackSize()-this.thumbSize(),_4=Math.round(_2*_3);this.moveThumbTo(_4+this.trackStart());var _5=isc.EH;if(_5.mouseIsDown()&&(_5.mouseDownTarget()==this)&&this.thumb.containsEvent())
+this.doneTrackScrolling()}
+,isc.A.trackSize=function isc_Scrollbar_trackSize(){if(this.showTrackEnds==true)
+return this.getSize(this.getPartNum(this.$50x))+this.getSize(this.getPartNum(this.$52j))+this.getSize(this.getPartNum(this.$52k))+this.startThumbOverlap+this.endThumbOverlap;else return this.getSize(this.getPartNum(this.$50x))+this.startThumbOverlap+this.endThumbOverlap}
+,isc.A.trackStart=function isc_Scrollbar_trackStart(){if(this.vertical)
+return this.getTop()+this.btnSize-this.startThumbOverlap;else
+return this.getLeft()+this.btnSize-this.startThumbOverlap}
+,isc.A.directionRelativeToThumb=function isc_Scrollbar_directionRelativeToThumb(){if(!this.thumb){if(this.clickPart==this.$61m)return-1;else return 1}
+var _1,_2=this.thumb,_3,_4;if(this.vertical){_1=isc.EH.getY();_3=_2.getPageTop();_4=_2.getHeight()}else{_1=isc.EH.getX();_3=_2.getPageLeft();_4=_2.getWidth()}
+if(_1<_3)return-1;else if(_1>_3+_4)return 1;return 0}
+,isc.A.mouseDown=function isc_Scrollbar_mouseDown(){this.clickPart=this.inWhichPart();if(this.clickPart==this.$52m){this.clickPart=null;return isc.EH.STOP_BUBBLING}
+this.$615(isc.StatefulCanvas.STATE_DOWN,this.clickPart);this.startDirection=this.directionRelativeToThumb();return isc.EH.STOP_BUBBLING}
+,isc.A.mouseStillDown=function isc_Scrollbar_mouseStillDown(){if(this.clickPart==this.$50x||this.showTrackEnds==true&&(this.clickPart==this.$52j||this.clickPart==this.$52k)){var _1=this.directionRelativeToThumb();if(_1!=0&&_1==this.startDirection){if(this.$50y){delete this.$50y;this.$50o=true}else if(!this.$50o)
+this.$50y=true;this.scrollTarget.scrollByPage(this.vertical,this.startDirection,"trackClick")}}else{this.scrollTarget.scrollByDelta(this.vertical,this.startDirection,"trackButtonClick")}
+return true}
+,isc.A.doubleClick=function isc_Scrollbar_doubleClick(){if(isc.Browser.isIE)return this.mouseStillDown();return isc.EH.STOP_BUBBLING}
+,isc.A.$615=function isc_Scrollbar__updateItemStates(_1,_2){if(_2==null)return this.setState(_1);var _3=isc.StatefulCanvas.STATE_UP,_4=(_2==this.$50x||_2==this.$52j||_2==this.$52k),_5=!_4&&_2==this.$61m,_6=!_4&&!_5&&_2==this.$61n,_7=!_4&&!_5&&!_6,_8=_4?_1:_3;this.setState(_5?_1:_3,this.$61m);this.setState(_8,this.$50x);if(this.showTrackEnds)this.setState(_8,this.$52j);if(this.showTrackEnds)this.setState(_8,this.$52k);this.setState(_6?_1:_3,this.$61n);if(this.showCorner)this.setState(_7?_1:_3,this.$52m)}
+,isc.A.mouseUp=function isc_Scrollbar_mouseUp(){if(this.clickPart){var _1=this.showRollOver?isc.StatefulCanvas.STATE_OVER:isc.StatefulCanvas.STATE_UP;this.$615(_1,this.clickPart)}
+this.clickPart=null;this.doneTrackScrolling();this.updateButtonsOnEdges();return isc.EventHandler.STOP_BUBBLING}
+,isc.A.mouseMove=function isc_Scrollbar_mouseMove(){if(this.ns.EH.mouseIsDown()&&this.clickPart){}else if(this.showRollOver){this.$615(isc.StatefulCanvas.STATE_OVER,this.inWhichPart())}
+return isc.EH.STOP_BUBBLING}
+,isc.A.mouseOut=function isc_Scrollbar_mouseOut(){if(this.ns.EH.mouseIsDown())return isc.EH.STOP_BUBBLING;if(this.showRollOver){this.setState(isc.StatefulCanvas.STATE_UP)}
+return isc.EH.STOP_BUBBLING}
+,isc.A.prepareForDragging=function isc_Scrollbar_prepareForDragging(){return false}
+,isc.A.isDragScrolling=function isc_Scrollbar_isDragScrolling(){return this.$50p}
+,isc.A.isRepeatTrackScrolling=function isc_Scrollbar_isRepeatTrackScrolling(){return this.$50o}
+,isc.A.doneTrackScrolling=function isc_Scrollbar_doneTrackScrolling(){delete this.$50y;if(this.isRepeatTrackScrolling()){delete this.$50o;if(this.scrollTarget&&this.scrollTarget.doneFastScrolling)this.scrollTarget.doneFastScrolling()}}
+,isc.A.thumbOver=function isc_Scrollbar_thumbOver(){if(this.allowThumbOverState){this.thumb.setState(isc.StatefulCanvas.STATE_OVER)}}
+,isc.A.thumbOut=function isc_Scrollbar_thumbOut(){if(!isc.EH.mouseIsDown()){this.thumb.setState(isc.StatefulCanvas.STATE_UP)}}
+,isc.A.thumbDown=function isc_Scrollbar_thumbDown(){this.clickPart=this.$52l;if(this.allowThumbDownState){this.thumb.setState(isc.StatefulCanvas.STATE_DOWN)}
+return isc.EventHandler.STOP_BUBBLING}
+,isc.A.thumbDragStart=function isc_Scrollbar_thumbDragStart(){var _1=isc.EH;_1.dragOffsetX=this.thumb.getOffsetX(_1.mouseDownEvent);_1.dragOffsetY=this.thumb.getOffsetY(_1.mouseDownEvent);this.$50p=true;return _1.STOP_BUBBLING}
+,isc.A.getEventCoord=function isc_Scrollbar_getEventCoord(){var _1=isc.EH;if(this.vertical)
+return _1.getY()-this.getPageTop()-this.btnSize+this.startThumbOverlap-_1.dragOffsetY;else
+return _1.getX()-this.getPageLeft()-this.btnSize+this.startThumbOverlap-_1.dragOffsetX}
+,isc.A.masterMoved=function isc_Scrollbar_masterMoved(_1,_2,_3,_4,_5,_6){if(this.masterElement.$ss)return;return this.invokeSuper(isc.Scrollbar,"masterMoved",_1,_2,_3,_4,_5,_6)}
+,isc.A.thumbMove=function isc_Scrollbar_thumbMove(){var _1=this.trackSize()-this.thumbSize(),_2=this.getEventCoord(),_3=_2/ _1;_3=Math.max(0,Math.min(_3,1));this.scrollTarget.scrollToRatio(this.vertical,_3,"thumbMove");return isc.EventHandler.STOP_BUBBLING}
+,isc.A.thumbUp=function isc_Scrollbar_thumbUp(){if(this.clickPart!=this.$52l)
+return this.mouseUp();var _1=this.allowThumbOverState&&this.thumb.containsEvent()?isc.StatefulCanvas.STATE_OVER:isc.StatefulCanvas.STATE_UP;this.thumb.setState(_1);return isc.EventHandler.STOP_BUBBLING}
+,isc.A.thumbDragStop=function isc_Scrollbar_thumbDragStop(){delete this.$50p;if(this.scrollTarget&&this.scrollTarget.doneFastScrolling)this.scrollTarget.doneFastScrolling();return this.thumbUp()}
+,isc.A.keyPress=function isc_Scrollbar_keyPress(){return this.ns.EH.bubbleEvent(this.scrollTarget,this.ns.EH.eventTypes.KEY_PRESS)}
+,isc.A.keyDown=function isc_Scrollbar_keyDown(){return this.ns.EH.bubbleEvent(this.scrollTarget,this.ns.EH.eventTypes.KEY_DOWN)}
+,isc.A.keyUp=function isc_Scrollbar_keyUp(){return this.ns.EH.bubbleEvent(this.scrollTarget,this.ns.EH.eventTypes.KEY_UP)}
+,isc.A.mouseWheel=function isc_Scrollbar_mouseWheel(){return this.ns.EH.bubbleEvent(this.scrollTarget,this.ns.EH.eventTypes.MOUSE_WHEEL)}
+,isc.A.hide=function isc_Scrollbar_hide(_1,_2,_3,_4){this.invokeSuper("Scrollbar","hide",_1,_2,_3,_4);if(!this.$u3&&this.scrollTarget!=null){this.moveTo(this.scrollTarget.getLeft(),this.scrollTarget.getTop());this.resizeTo(1,1)}}
+);isc.B._maxIndex=isc.C+44;isc.ClassFactory.defineClass("NativeScrollbar","Canvas");isc.A=isc.NativeScrollbar;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getScrollbarSize=function isc_c_NativeScrollbar_getScrollbarSize(){return isc.Element.getNativeScrollbarSize()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.NativeScrollbar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.vertical=true;isc.A.showCustomScrollbars=false;isc.A.overflow="hidden";isc.A.autoEnable=true;isc.A.scrollbarCanvasDefaults={overflow:"scroll",showCustomScrollbars:false,$lh:function(_1,_2){this.Super("$lh",arguments);if(isc.Browser.isMoz&&!_1&&(_2||isc.Browser.geckoVersion<20030312))
+{return}
+if(this.$u7)return;this.creator.scrollbarCanvasScrolled()},parentResized:function(){this.creator.sizeScrollbarCanvas();this.creator.adjustOverflow()}};isc.A.scrollbarCanvasThickness=100;isc.B.push(isc.A.initWidget=function isc_NativeScrollbar_initWidget(){var _1=isc.NativeScrollbar.getScrollbarSize();if(this.vertical){this.setWidth(_1)}else{this.setHeight(_1)}
+this.setOverflow(isc.Canvas.HIDDEN);this.addAutoChild("scrollbarCanvas");this.sizeScrollbarCanvas();this.setScrollTarget();this.setThumb()}
+,isc.A.sizeScrollbarCanvas=function isc_NativeScrollbar_sizeScrollbarCanvas(){var _1=isc.Element.getNativeScrollbarSize();var _2=this.vertical?this.scrollbarCanvasThickness:this.getInnerWidth()+(this.showCorner?0:_1),_3=!this.vertical?this.scrollbarCanvasThickness:this.getInnerHeight()+(this.showCorner?0:_1);this.scrollbarCanvas.resizeTo(_2,_3)}
+,isc.A.$ut=function isc_NativeScrollbar__adjustOverflow(){this.Super("$ut",arguments);if(this.vertical){this.scrollToTop();this.scrollToRight()}else{this.scrollToLeft();this.scrollToBottom()}}
+,isc.A.setScrollTarget=function isc_NativeScrollbar_setScrollTarget(_1){if(this.$u3&&this.scrollTarget!=null&&this.isObserving(this.scrollTarget,"scrollTo")){this.ignore(this.scrollTarget,"scrollTo")}
+if(_1!=null)this.scrollTarget=_1;if(this.scrollTarget==null)this.scrollTarget=this;if(this.$u3&&this.scrollTarget!=this&&this.scrollTarget!=_1){this.observe(this.scrollTarget,"scrollTo","observer.setThumb()")}}
+,isc.A.setThumb=function isc_NativeScrollbar_setThumb(){if(this.$494)return;var _1=this.scrollbarCanvas,_2=(this.$u3||this.scrollTarget.canScroll(this.vertical)),_3=1,_4=1;if(_2){var _5=this.scrollTarget.getViewportRatio(this.vertical);var _6=(this.vertical?_1.getViewportHeight():_1.getViewportWidth()),_7=Math.round(_6/ _5);if(this.vertical)_4=_7;else _3=_7}
+if(_1.spacerLength!=_7){_1.setContents(isc.Canvas.spacerHTML(_3,_4));_1.spacerLength=_7}
+this.moveThumb()}
+,isc.A.setVisibility=function isc_NativeScrollbar_setVisibility(_1,_2,_3,_4){this.invokeSuper(isc.Scrollbar,"setVisibility",_1,_2,_3,_4);if(this.isVisible())this.setThumb()}
+,isc.A.parentVisibilityChanged=function isc_NativeScrollbar_parentVisibilityChanged(_1,_2,_3,_4){this.invokeSuper(isc.Scrollbar,"parentVisibilityChanged",_1,_2,_3,_4);if(this.isVisible())this.setThumb()}
+,isc.A.moveThumb=function isc_NativeScrollbar_moveThumb(){var _1=this.scrollTarget.getScrollRatio(this.vertical);var _2=this.scrollbarCanvas;var _3=this.vertical?_2.getScrollHeight()-_2.getViewportHeight():_2.getScrollWidth()-_2.getViewportWidth(),_4=Math.round(_1*_3);_2.scrollTo(this.vertical?0:_4,this.vertical?_4:0)}
+,isc.A.scrollbarCanvasScrolled=function isc_NativeScrollbar_scrollbarCanvasScrolled(){var _1=this.scrollbarCanvas,_2=this.vertical?_1.getScrollTop()/(_1.getScrollHeight()-_1.getViewportHeight()):_1.getScrollLeft()/(_1.getScrollWidth()-_1.getViewportWidth());this.scrollTarget.scrollToRatio(this.vertical,_2)}
+,isc.A.setShowCorner=function isc_NativeScrollbar_setShowCorner(_1){this.showCorner=_1;this.sizeScrollbarCanvas()}
+);isc.B._maxIndex=isc.C+10;isc.$6y={canDrag:true,dragAppearance:"none",dragStartDistance:1,canCollapse:true,cursor:"hand",vResizeCursor:"row-resize",hResizeCursor:"col-resize",resizeInRealTime:false,$jp:false,$jo:false,overflow:"hidden",isMouseTransparent:true};isc.$6z={initWidget:function(){if(isc.isA.Img(this))this.src=this.vertical?this.vSrc:this.hSrc;if(this.vertical){this.defaultWidth=this.defaultWidth||10;this.cursor=this.hResizeCursor;this.baseStyle=this.vBaseStyle||this.baseStyle}else{this.defaultHeight=this.defaultHeight||10;this.cursor=this.vResizeCursor;this.baseStyle=this.hBaseStyle||this.baseStyle}
+this.Super("initWidget",arguments);if(isc.Browser.isMoz)this.bringToFront()},prepareForDragging:function(){if(this.$91z==null){this.$91z=this.canDrag}
+if(this.target.visibility==isc.Canvas.HIDDEN){this.canDrag=false}else{this.canDrag=this.$91z}
+return this.Super("prepareForDragging",arguments)},makeLabel:function(){this.Super("makeLabel",arguments);this.label.addMethods({getCustomState:function(){var _1=this.masterElement;if(!_1.showClosedGrip)return
+var _2=_1.target,_3=_2.visibility==isc.Canvas.HIDDEN;if((!_1.targetAfter&&_3)||(_1.targetAfter&&!_3)){return"closed"}}})},dragStart:function(){if(this.showDown)this.setState("Down");this.bringToFront()},dragMove:function(){var _1=this.vertical?(0-isc.EH.dragOffsetX):(0-isc.EH.dragOffsetY);this.resizeTarget(this.target,!this.vertical,this.resizeInRealTime,_1,null,null,this.targetAfter)},dragStop:function(){if(this.showDown)this.setState("");this.finishTargetResize(this.target,!this.vertical,this.resizeInRealTime)},click:function(){if(this.canCollapse!=true)return;var _1=this.hideTarget||this.target;if(!this.target)return;if(_1.visibility=='hidden'){if(isc.isA.Layout(_1.parentElement))_1.parentElement.showMember(_1);else _1.show()}else{if(isc.isA.Layout(_1.parentElement))_1.parentElement.hideMember(_1);else _1.hide()}
+this.setState("")}};isc.defineClass("Splitbar","StretchImg");isc.A=isc.Splitbar.getPrototype();isc.A.skinImgDir="images/Splitbar/";isc.A.imageType="stretch";isc.A.capSize=3;isc.A.vSrc="[SKIN]vsplit.gif";isc.A.hSrc="[SKIN]hsplit.gif";isc.Splitbar.addMethods(isc.$6y,isc.$6z)
+isc.defineClass("ImgSplitbar","Img");isc.A=isc.ImgSplitbar.getPrototype();isc.A.skinImgDir="images/Splitbar/";isc.A.imageType="center";isc.A.hSrc="[SKIN]hgrip.png";isc.A.vSrc="[SKIN]vgrip.png";isc.A.styleName="splitbar";isc.A.showDown=true;isc.ImgSplitbar.addMethods(isc.$6y,isc.$6z)
+isc.addGlobal("StretchImgSplitbar",isc.Splitbar);isc.addGlobal("LayoutResizeBar",isc.Splitbar);isc.defineClass("HSplitbar","Splitbar");isc.A=isc.HSplitbar.getPrototype();isc.A.vertical=false;isc.defineClass("VSplitbar","Splitbar");isc.defineClass("Stretchbar","Splitbar");isc.A=isc.Stretchbar.getPrototype();isc.A.canResize=false;isc.A.skinImgDir="images/Stretchbar/";isc.A.showRollOver=true;isc.defineClass("HStretchbar","Stretchbar");isc.A=isc.HStretchbar.getPrototype();isc.A.vertical=false;isc.A.src="[SKIN]hsplit.gif";isc.A.defaultHeight=10;isc.defineClass("VStretchbar","Stretchbar");isc.A=isc.VStretchbar.getPrototype();isc.A.src="[SKIN]vsplit.gif";isc.A.defaultWidth=10;isc.defineClass("Snapbar","Splitbar");isc.A=isc.Snapbar.getPrototype();isc.A.showRollOver=true;isc.A.showDown=true;isc.A.showGrip=true;isc.A.showDownGrip=true;isc.A.showRollOverGrip=true;isc.A.showClosedGrip=true;isc.A.gripImgSuffix="snap";isc.defineClass("ToolStripResizer","ImgSplitbar");isc.A=isc.ToolStripResizer.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.skinImgDir="images/ToolStrip/";isc.A.vSrc="[SKIN]resizer.png";isc.A.hSrc="[SKIN]hresizer.png";isc.A.layoutAlign="center";isc.A.resizeInRealTime=true;isc.A.showDown=false;isc.A.imageLength=20;isc.A.imageBreadth=14;isc.A.imageType="center";isc.B.push(isc.A.initWidget=function isc_ToolStripResizer_initWidget(){this.imageWidth=this.vertical?this.imageBreadth:this.imageLength;this.imageHeight=this.vertical?this.imageLength:this.imageBreadth;this.Super("initWidget",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.Canvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$o9="%";isc.A.$60="listPolicy";isc.B.push(isc.A.applyStretchResizePolicy=function isc_c_Canvas_applyStretchResizePolicy(_1,_2,_3,_4,_5){if(!_1)return;var _6=0,_7=0,_8=0,_9=0,_10=(_4?_1:[]),_11=this.logIsDebugEnabled(this.$60),_3=(_3||1);if(_11&&_4)_1=_1.duplicate();for(var i=0;i<_1.length;i++){_9=_1[i];if(_9==null||isc.is.emptyString(_9))_1[i]=_9=isc.star;if(isc.isA.Number(_9)){_10[i]=_9}else{if(_9==isc.star){_7++;_9=0}else if(_9.indexOf(this.$o9)>=0){if(_5!=null&&_5.fixedPercents){var _13=parseInt(_9);_9=_10[i]=Math.round((_13/ 100)*_2)}else{_6+=parseInt(_9);_9=0}}else{if(_5&&isc.isA.Number(_5[_9])){_9=_10[i]=_5[_9]}else{var _14=parseInt(_9);if(isc.isA.Number(_14)&&_14>=0){_10[i]=_9=_14}else{try{_9=isc.eval(_9)}catch(e){var _15=_5&&_5.logWarn?_5:this;_15.logWarn("StretchResizePolicy: "+" unable to convert size:"+_9+" to a valid size - reported error: '"+e+"'\n Complete set of sizes:"+_1);_9=null}
+if(!isc.isA.Number(_9))_9=0;_10[i]=_9}}}}
+_9=Math.max(_9,0);_8+=_9}
+var _16=0;if(_7){if(_6>=100){_8+=(_7*_3)}else{_16=(100-_6)/_7;_6=100}}
+if(_6>0){var _17=_2-_8,_18=Math.max(0,_17/ _6),_19=null;for(i=0;i<_1.length;i++){_9=_1[i];if(isc.isA.String(_9)){var _20;if(_9==isc.star){_20=_16*_18}else if(_9.indexOf(this.$o9)>=0){_20=parseInt(_9)*_18}else{continue}
+_20=Math.max(Math.floor(_20),_3);_17-=_20;_19=i;_10[i]=_20}}
+if(_17>0)_10[_19]+=_17}
+if(_11){this.logDebug("stretchResize"+(_5?" for "+_5.ID:"")+" with totalSize: "+_2+", desired sizes: "+_1+", calculated sizes: "+_10,"listPolicy")}
+return _10}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("GroupingMessages");isc.A=isc.GroupingMessages;isc.A.upcomingTodayTitle="Today";isc.A.upcomingTomorrowTitle="Tomorrow";isc.A.upcomingThisWeekTitle="This Week";isc.A.upcomingNextWeekTitle="Next Week";isc.A.upcomingNextMonthTitle="Next Month";isc.A.upcomingBeforeTitle="Before";isc.A.upcomingLaterTitle="Later";isc.A.byDayTitle="by Day";isc.A.byWeekTitle="by Week";isc.A.byMonthTitle="by Month";isc.A.byQuarterTitle="by Quarter";isc.A.byYearTitle="by Year";isc.A.byDayOfMonthTitle="by Day of Month";isc.A.byUpcomingTitle="by Upcoming";isc.A.byHoursTitle="by Hours";isc.A.byMinutesTitle="by Minutes";isc.A.bySecondsTitle="by Seconds";isc.A.byMillisecondsTitle="by Milliseconds";isc.builtinTypes={text:{validators:{type:"isString",typeCastValidator:true}},"boolean":{validators:{type:"isBoolean",typeCastValidator:true}},integer:{validators:{type:"isInteger",typeCastValidator:true},normalDisplayFormatter:function(_1,_2){if(isc.isA.Number(_1))return _1.toFormattedString();return _1},getGroupValue:function(_1,_2,_3,_4,_5){var g=_3.groupGranularity;return g?Math.ceil(_1/ g):_1},getGroupTitle:function(_1,_2,_3,_4,_5){var g=_3.groupGranularity;return g?((_1-1)*g)+" - "+(_1*g):_1}},"float":{validators:{type:"isFloat",typeCastValidator:true},normalDisplayFormatter:function(_1,_2){if(isc.isA.Number(_1))return _1.toFormattedString();return _1},getGroupValue:function(_1,_2,_3,_4,_5){_3.groupPrecision=parseInt(_3.groupPrecision);if(_3.groupPrecision<0)_3.groupPrecision=_3.groupPrecision*-1;var p=_3.groupPrecision?Math.pow(10,_3.groupPrecision):null;return p?Math.floor(_1*p)/p:_1},getGroupTitle:function(_1,_2,_3,_4,_5){return _3.groupPrecision?_1+"*":_1}},date:{validators:{type:"isDate",typeCastValidator:true},normalDisplayFormatter:function(_1,_2){if(isc.isA.Date(_1))return _1.toNormalDate();return _1},groupingModes:{day:isc.GroupingMessages.byDayTitle,week:isc.GroupingMessages.byWeekTitle,month:isc.GroupingMessages.byMonthTitle,quarter:isc.GroupingMessages.byQuarterTitle,year:isc.GroupingMessages.byYearTitle,dayOfMonth:isc.GroupingMessages.byDayOfMonthTitle,upcoming:isc.GroupingMessages.byUpcomingTitle},defaultGroupingMode:"day",groupingMode:this.defaultGroupingMode,getGroupValue:function(_1,_2,_3,_4,_5){var _6=_1;var _7=_3.groupingMode=(_3.groupingMode||_3.$62.defaultGroupingMode||null);if(isc.isA.Date(_1)&&_7){switch(_7){case"year":_6=_1.getFullYear();break;case"quarter":_6=Math.floor(_1.getMonth()/3)+1;break;case"month":_6=_1.getMonth();break;case"week":_6=_1.getWeek();break;case"day":case"dayOfWeek":_6=_1.getDay();break;case"dayOfMonth":_6=_1.getDate();break;case"timezoneHours":_6=_1.getTimezoneOffset()/60;break;case"timezoneMinutes":_6=_1.getTimezoneOffset();break;case"timezoneSeconds":_6=_1.getTimezoneOffset()*60;break;case"upcoming":var _8=new Date();if(_8.isToday(_1))return 1;else if(_8.isTomorrow(_1))return 2;else if(_8.isThisWeek(_1))return 3;else if(_8.isNextWeek(_1))return 4;else if(_8.isNextMonth(_1))return 5;else if(_8.isBeforeToday(_1))return 7;else return 6;break}}
+return _6},getGroupTitle:function(_1,_2,_3,_4,_5){var _6=_1;var _7=_3.groupingMode=(_3.groupingMode||_3.$62.defaultGroupingMode||null);if(_7&&_1!="-none-"){switch(_7){case"month":_6=Date.getShortMonthNames()[_1];break;case"quarter":_6="Q"+_1;break;case"week":_6="Week #"+_1;break;case"day":case"dayOfWeek":_6=Date.getShortDayNames()[_1];break;case"dayOfMonth":_6=_1;break;case"timezoneHours":_6="GMT+"+_1;break;case"timezoneMinutes":_6="GMT+"+_1+" minutes";break;case"timezoneSeconds":_6="GMT+"+_1+" seconds";break;case"upcoming":var _8=new Date();if(_1==1)return isc.GroupingMessages.upcomingTodayTitle;else if(_1==2)return isc.GroupingMessages.upcomingTomorrowTitle;else if(_1==3)return isc.GroupingMessages.upcomingThisWeekTitle;else if(_1==4)return isc.GroupingMessages.upcomingNextWeekTitle;else if(_1==5)return isc.GroupingMessages.upcomingNextMonthTitle;else if(_1==7)return isc.GroupingMessages.upcomingBeforeTitle;else return isc.GroupingMessages.upcomingLaterTitle;break}}
+return _6}},time:{validators:{type:"isTime",typeCastValidator:true},normalDisplayFormatter:function(_1,_2){if(isc.isA.Date(_1))return isc.Time.toTime(_1,null,true);return _1},groupingModes:{hours:isc.GroupingMessages.byHoursTitle,minutes:isc.GroupingMessages.byMinutesTitle,seconds:isc.GroupingMessages.bySecondsTitle,milliseconds:isc.GroupingMessages.byMillisecondsTitle},defaultGroupingMode:"hours",groupingMode:this.defaultGroupingMode,getGroupValue:function(_1,_2,_3,_4,_5){var _6=_1;var _7=_3.groupingMode=(_3.groupingMode||_3.$62.defaultGroupingMode||null);if(isc.isA.Date(_1)&&_7){switch(_7){case"hours":_6=_1.getHours();break;case"minutes":_6=_1.getMinutes();break;case"seconds":_6=_1.getSeconds();break;case"milliseconds":_6=_1.getMilliseconds();break}}
+return _6},getGroupTitle:function(_1,_2,_3,_4,_5){var _6=_1;var _7=_3.groupingMode||_3.$62.defaultGroupingMode||null;if(_7&&_1!="-none-"){switch(_7){case"hours":case"minutes":case"seconds":case"milliseconds":_6=_1;break}}
+return _6}},string:{inheritsFrom:"text"},"int":{inheritsFrom:"integer"},"long":{inheritsFrom:"integer"},number:{inheritsFrom:"integer"},decimal:{inheritsFrom:"float"},"double":{inheritsFrom:"float"},datetime:{inheritsFrom:"date",normalDisplayFormatter:function(_1,_2){if(isc.isA.Date(_1))return _1.toShortDateTime(null,true);return _1}},dateTime:{inheritsFrom:"datetime"},positiveInteger:{inheritsFrom:"integer",validators:{type:"integerRange",min:0}},integerPercent:{inheritsFrom:"integer",validators:{type:"integerRange",min:0,max:100}},percent:{inheritsFrom:"integerPercent"},sequence:{inheritsFrom:"integer"},"enum":{validators:"isOneOf"},"intEnum":{inheritsFrom:"integer",validators:"isOneOf"},regexp:{inheritsFrom:"text",validators:"isRegexp"},identifier:{inheritsFrom:"text",validators:"isIdentifier"},URL:{inheritsFrom:"text"},image:{inheritsFrom:"text"},HTML:{inheritsFrom:"text"},measure:{validators:"isMeasure"},integerOrAuto:{validators:"integerOrAuto"},expression:{inheritsFrom:"text"},method:{inheritsFrom:"text"},"function":{inheritsFrom:"text"},alignEnum:{inheritsFrom:"enum",valueMap:{left:"left",center:"center",right:"right"}},valignEnum:{inheritsFrom:"enum",valueMap:{top:"top",bottom:"bottom",center:"center"}},sideEnum:{inheritsFrom:"enum",valueMap:{left:"left",right:"right",top:"top",bottom:"bottom"}},color:{inheritsFrom:"string",validators:"isColor"},modifier:{inheritsFrom:"text",hidden:true,canEdit:false},modifierTimestamp:{inheritsFrom:"datetime",hidden:true,canEdit:false},creator:{inheritsFrom:"text",hidden:true,canEdit:false},creatorTimestamp:{inheritsFrom:"datetime",hidden:true,canEdit:false},password:{inheritsFrom:"text",normalDisplayFormatter:function(_1,_2){return new Array((_1&&_1.length>0?_1.length+1:0)).join("*")},shortDisplayFormatter:function(_1,_2){return new Array((_1&&_1.length>0?_1.length+1:0)).join("*")}}};(function(){for(var _1 in isc.builtinTypes){isc.builtinTypes[_1].name=_1}})();isc.defineClass("SimpleType");isc.A=isc.SimpleType;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$7a="typeCastValidator";isc.A.$71g={title:function(_1,_2){if(_2.summaryValueTitle!=null)return _2.summaryValueTitle;return _2.title},sum:function(_1,_2){var _3=_2.name;if(!_3)return;var _4=0;for(var i=0;i<_1.length;i++){var _6=_1[i][_3],_7=parseFloat(_6);if(_6==null||_6==isc.emptyString)continue;if(isc.isA.Number(_7)&&(_7==_6))_4+=_7;else return null}
+return _4},avg:function(_1,_2){var _3=_2.name;if(!_3)return;var _4=0,_5=0;for(var i=0;i<_1.length;i++){var _7=_1[i][_3],_8=parseFloat(_7);if(_7==null||_7==isc.emptyString)continue;if(isc.isA.Number(_8)&&(_8==_7)){_5+=1;_4+=_8}else{return null}}
+return _5>0?_4/ _5:null},max:function(_1,_2){var _3=_2?_2.name:null;if(!_3)return;var _4=(_2&&(_2.type=="date"));var _5;for(var i=0;i<_1.length;i++){var _7=_1[i][_3];if(_7==null||_7==isc.emptyString)continue;if(_4){if(!isc.isA.Date(_7))return null;if(_5==null||_7.getTime()>_5.getTime())_5=_7.duplicate()}else{var _8=parseFloat(_7);if(isc.isA.Number(_8)&&(_8==_7)){if(_5==null)_5=_8;else if(_5<_7)_5=_8}else{return null}}}
+return _5},min:function(_1,_2){var _3=_2?_2.name:null;if(!_3)return;var _4=(_2.type=="date")
+var _5;for(var i=0;i<_1.length;i++){var _7=_1[i][_3];if(_7==null||_7==isc.emptyString)continue;if(_4){if(!isc.isA.Date(_7))return null;if(_5==null||_7.getTime()<_5.getTime())_5=_7.duplicate()}else{var _8=parseFloat(_7);if(isc.isA.Number(_8)&&(_8==_7)){if(_5==null)_5=_8;else if(_5>_7)_5=_8}else{return null}}}
+return _5},multiplier:function(_1,_2){var _3=_2?_2.name:null;if(!_3)return;var _4=0;for(var i=0;i<_1.length;i++){var _6=_1[i][_3];var _7=parseFloat(_6);if(isc.isA.Number(_7)&&(_7==_6)){if(i==0)_4=_7;else _4=(_4*_7)}else{return null}}
+return _4},count:function(_1,_2){return _1.length}};isc.B.push(isc.A.getType=function isc_c_SimpleType_getType(_1,_2){if(_2)return _2.getType(_1);var _3=isc.builtinTypes[_1];return _3}
+,isc.A.getBaseType=function isc_c_SimpleType_getBaseType(_1,_2){if(isc.isA.String(_1))_1=this.getType(_1,_2);if(_1==null)return null;while(_1.inheritsFrom){var _3=this.getType(_1.inheritsFrom,_2);if(_3==null)return null;_1=_3}
+return _1.name}
+,isc.A.inheritsFrom=function isc_c_SimpleType_inheritsFrom(_1,_2,_3){if(_2==null){this.logWarn("inheritsFrom passed null type");return false}
+if(isc.isA.String(_1))_1=this.getType(_1,_3);if(_1==null)return false;if(_1.name==_2)return true;while(_1.inheritsFrom){var _4=this.getType(_1.inheritsFrom,_3);if(_4==null)return null;if(_4.name==_2)return true;_1=_4}
+return false}
+,isc.A.validateValue=function isc_c_SimpleType_validateValue(_1,_2,_3){var _4={name:"$42j",type:_1};isc.SimpleType.addTypeDefaults(_4);var _3=_3||isc.DS.get("Object");return _3.validateFieldValue(_4,_2)}
+,isc.A.addTypeDefaults=function isc_c_SimpleType_addTypeDefaults(_1,_2){if(_1==null||_1.$61)return;_1.$61=true;var _3=this.getType(_1.type,_2);if(_3==null)return;_1.$62=_3;if(_1.valueMap==null){var _4=this.getInheritedProperty(_3,"valueMap",_2);if(_4!=null)_3.valueMap=_1.valueMap=_4}
+if(_1.editorType==null){var _5=this.getInheritedProperty(_3,"editorType",_2);if(_5!=null)_3.editorType=_1.editorType=_5}
+if(_1.readOnlyEditorType==null){var _5=this.getInheritedProperty(_3,"readOnlyEditorType",_2);if(_5!=null)_3.readOnlyEditorType=_1.readOnlyEditorType=_5}
+var _6=this.getInheritedProperty(_3,"editorProperties",_2);if(_6!=null){if(_1.editorProperties!=null){isc.addProperties(_6,_1.editorProperties)}
+_1.editorProperties=_6}
+var _7=this.getInheritedProperty(_3,"readOnlyEditorProperties",_2);if(_7!=null){if(_1.readOnlyEditorProperties!=null){isc.addProperties(_7,_1.readOnlyEditorProperties)}
+_1.readOnlyEditorProperties=_7}
+var _8=this.getInheritedProperty(_3,"shortDisplayFormatter",_2)
+if(_8!=null)_3.shortDisplayFormatter=_1.$63=_8;var _8=this.getInheritedProperty(_3,"normalDisplayFormatter",_2)
+if(_8!=null)_3.normalDisplayFormatter=_1.$64=_8;var _8=this.getInheritedProperty(_3,"editFormatter",_2)
+if(_8!=null)_3.editFormatter=_1.$65=_8;var _9=this.getInheritedProperty(_3,"parseInput",_2)
+if(_9!=null)_3.parseInput=_1.$66=_9;var _10=this.getValidators(_3,_2);if(_10==null)return;if(!_1.validators){_1.validators=_10}else{if(!isc.isAn.Array(_1.validators))_1.validators=[_1.validators];_1.validators.addAsList(_10);this.$67(_1.validators)}}
+,isc.A.getInheritedProperty=function isc_c_SimpleType_getInheritedProperty(_1,_2,_3){while(_1!=null){if(_1[_2]!=null)return _1[_2]
+_1=this.getType(_1.inheritsFrom,_3)}}
+,isc.A.getValidators=function isc_c_SimpleType_getValidators(_1,_2){if(isc.isA.String(_1))_1=this.getType(_1,_2);if(_1.$68)return _1.validators;var _3=_1.validators;if(_3!=null){if(!isc.isAn.Array(_3))_3=[_3];var _4=[];for(var i=0;i<_3.length;i++){var _6=_3[i];if(isc.isA.String(_6)){_6={"type":_6}}else if(_6.type==null&&isc.isAn.emptyObject(_6)){continue}
+_6._generated=true;_4.add(_6)}
+_3=_4}
+var _7=_1.inheritsFrom;if(_7!=null){var _8=this.getType(_7,_2);if(_8!=null){var _9=this.getValidators(_8,_2);if(_9!=null){_3=_3||[];_3.addAsList(_9);this.$67(_3)}}}
+if(_3)_3.$69=true;_1.validators=_3;_1.$68=true;return _3}
+,isc.A.$67=function isc_c_SimpleType__reorderTypeValidator(_1){var _2=_1.find(this.$7a,true);if(_2){var _3=_2.type;for(var i=0;i<_1.length;i++){if(_1[i].type==_3)break}
+if(i!=0)_1.unshift(_1[i]);_1[0].stopIfFalse=true}}
+,isc.A.registerSummaryFunction=function isc_c_SimpleType_registerSummaryFunction(_1,_2){if(_1==null)return;if(isc.isA.String(_2)){_2=isc.Func.expressionToFunction("records,field",_1)}
+this.$71g[_1]=_2}
+,isc.A.setDefaultSummaryFunction=function isc_c_SimpleType_setDefaultSummaryFunction(_1,_2){var _3=this.getType(_1);if(_3)_3.$71h=_2}
+,isc.A.getDefaultSummaryFunction=function isc_c_SimpleType_getDefaultSummaryFunction(_1){var _2=this.getType(_1);if(_2){if(_2.$71h!=null){return _2.$71h}
+if(_2.inheritsFrom!=null&&_2.inheritsFrom!=_1){return this.getDefaultSummaryFunction(_2.inheritsFrom)}}}
+,isc.A.applySummaryFunction=function isc_c_SimpleType_applySummaryFunction(_1,_2,_3){if(!_3||!_2||!_1)return;if(isc.isA.String(_3)){if(this.$71g[_3]){_3=this.$71g[_3]}else{_3=isc.Func.expressionToFunction("records,field",_3)}}
+if(isc.isA.Function(_3)){return _3(_1,_2)}}
+);isc.B._maxIndex=isc.C+12;isc.SimpleType.setDefaultSummaryFunction("integer","sum");isc.SimpleType.setDefaultSummaryFunction("float","sum");isc.A=isc.SimpleType.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_SimpleType_init(){if(!this.name)this.name=isc.ClassFactory.getNextGlobalID(this);if(isc.builtinTypes[this.name]!=null){if(!this.xmlSource){this.logWarn("SimpleType '"+this.name+"' defined twice: "+this.getStackTrace());isc.builtinTypes[this.name]=this}}else{isc.builtinTypes[this.name]=this}
+if(this.validOperators!=null){isc.DataSource.setTypeOperators(this.name,this.validOperators)}}
+);isc.B._maxIndex=isc.C+1;isc.SimpleType.getPrototype().toString=function(){return"["+this.Class+" name="+this.name+(this.inheritsFrom?" inheritsFrom="+this.inheritsFrom:"")+"]"};isc.defineClass("NavigationButton","Button");isc.A=isc.NavigationButton.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.height=30;isc.A.autoFit=true;isc.A.baseStyle="navButton";isc.A.backBaseStyle="navBackButton";isc.A.forwardBaseStyle="navForwardButton";isc.A.direction="none";isc.B.push(isc.A.initWidget=function isc_NavigationButton_initWidget(){this.setBaseStyle(this.getBaseStyleName())}
+,isc.A.setNavigationDirection=function isc_NavigationButton_setNavigationDirection(_1){this.direction=_1;this.setBaseStyle(this.getBaseStyleName())}
+,isc.A.getNavigationDirection=function isc_NavigationButton_getNavigationDirection(){return this.direction}
+,isc.A.getBaseStyleName=function isc_NavigationButton_getBaseStyleName(){if(this.direction=="back"){return this.backBaseStyle}
+if(this.direction=="forward"){return this.forwardBaseStyle}
+return this.baseStyle}
+);isc.B._maxIndex=isc.C+4;isc.defineClass("NavigationBar","HLayout");isc.A=isc.NavigationBar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.width="100%";isc.A.height=44;isc.A.styleName="navToolbar";isc.A.leftButtonTitle=" ";isc.A.leftButtonDefaults={_constructor:"NavigationButton",direction:"back",layoutAlign:"center"};isc.A.titleLabelDefaults={_constructor:"Label",width:"*",styleName:"navBarHeader",align:"center",valign:"center"};isc.A.rightButtonTitle=" ";isc.A.rightButtonDefaults={_constructor:"NavigationButton",direction:"forward",layoutAlign:"center"};isc.A.showRightButton=false;isc.A.autoChildren=["leftButton","titleLabel","rightButton"];isc.A.controls=["leftButton","titleLabel","rightButton"];isc.B.push(isc.A.setControls=function isc_NavigationBar_setControls(_1){this.controls=_1;var _2=[];for(var i=0;i<_1.length;i++){var _4=_1[i];if(isc.isA.String(_4))_4=this[_4];_2[i]=_4}
+this.setMembers(_2)}
+,isc.A.initWidget=function isc_NavigationBar_initWidget(){this.Super("initWidget",arguments);var _1={click:function(){if(this.creator.navigationClick)this.creator.navigationClick(this.direction)}};if(this.leftButtonTitle!=null)_1.title=this.leftButtonTitle;if(this.leftButtonIcon!=null)_1.icon=this.leftButtonIcon;this.leftButton=this.createAutoChild("leftButton",_1);this.setShowLeftButton(this.showLeftButton!=false);this.titleLabel=this.createAutoChild("titleLabel",{contents:this.title});var _2={click:function(){if(this.creator.navigationClick)this.creator.navigationClick(this.direction)}};if(this.rightButtonTitle!=null)_2.title=this.rightButtonTitle;if(this.rightButtonIcon!=null)_2.icon=this.rightButtonIcon;this.rightButton=this.createAutoChild("rightButton",_2);this.setShowRightButton(this.showRightButton!=false);this.setControls(this.controls)}
+,isc.A.setTitle=function isc_NavigationBar_setTitle(_1){this.title=_1;this.titleLabel.setContents(this.title)}
+,isc.A.setLeftButtonTitle=function isc_NavigationBar_setLeftButtonTitle(_1){this.leftButtonTitle=_1;if(this.leftButton)this.leftButton.setTitle(_1)}
+,isc.A.setLeftButtonIcon=function isc_NavigationBar_setLeftButtonIcon(_1){this.leftButtonIcon=_1;if(this.leftButton)this.leftButton.setIcon(_1)}
+,isc.A.setShowLeftButton=function isc_NavigationBar_setShowLeftButton(_1){if(this.leftButton==null)return;var _2=(this.leftButton.visibility!=isc.Canvas.HIDDEN);if(_1==_2)return;this.leftButton.setVisibility(_1?isc.Canvas.INHERIT:isc.Canvas.HIDDEN)}
+,isc.A.setRightButtonTitle=function isc_NavigationBar_setRightButtonTitle(_1){if(this.rightButton)this.rightButton.setTitle(_1)}
+,isc.A.setRightButtonIcon=function isc_NavigationBar_setRightButtonIcon(_1){this.rightButtonIcon=_1;if(this.rightButton)this.rightButton.setIcon(_1)}
+,isc.A.setShowRightButton=function isc_NavigationBar_setShowRightButton(_1){if(this.rightButton==null)return;var _2=(this.rightButton.visibility!=isc.Canvas.HIDDEN);if(_1==_2)return;this.rightButton.setVisibility(_1?isc.Canvas.INHERIT:isc.Canvas.HIDDEN)}
+);isc.B._maxIndex=isc.C+9;isc.NavigationBar.registerStringMethods({navigationClick:"direction"});isc.defineClass("SplitPane","VLayout");isc.A=isc.SplitPane.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.mainLayoutDefaults={_constructor:"HLayout",width:"100%",height:"100%"};isc.A.leftLayoutDefaults={_constructor:"VLayout",width:320,height:"100%"};isc.A.rightLayoutDefaults={_constructor:"VLayout",width:"*",height:"100%"};isc.A.navigationLayoutDefaults={_constructor:"VLayout",width:"100%",height:"100%"};isc.A.listLayoutDefaults={_constructor:"VLayout",width:"100%",height:"100%"};isc.A.detailLayoutDefaults={_constructor:"VLayout",width:"100%",height:"100%"};isc.A.navigationBarDefaults={_constructor:"NavigationBar",hieght:44,navigationClick:function(_1){this.creator.navigationClick(_1)}};isc.A.detailToolStripDefaults={_constructor:"NavigationBar",hieght:44};isc.A.autoChildren=["mainLayout","leftLayout","rightLayout","navigationLayout","navigationBar","listLayout","detailLayout","detailToolStrip"];isc.A.showLeftButton=true;isc.A.showRightButton=true;isc.B.push(isc.A.setDetailToolButtons=function isc_SplitPane_setDetailToolButtons(_1){this.detailToolButtons=_1;this.updateDetailToolStrip()}
+,isc.A.isHandset=function isc_SplitPane_isHandset(){return this.layoutMode=="handset"||isc.Browser.isHandset}
+,isc.A.isTablet=function isc_SplitPane_isTablet(){return this.layoutMode=="tablet"||isc.Browser.isTablet}
+,isc.A.getPageOrientation=function isc_SplitPane_getPageOrientation(){return this.pageOrientation||isc.Page.getOrientation()}
+,isc.A.initWidget=function isc_SplitPane_initWidget(){this.Super("initWidget",arguments);this.addAutoChildren(this.autoChildren,"none");this.addMember(this.mainLayout);if(this.navigationPane!=null)this.$79k(this.navigationPane);if(this.detailPane!=null)this.$79l(this.detailPane);isc.Page.setEvent("orientationChange",this.getID()+".pageOrientationChanged()");if(this.initialPane!=null){this.currentPane=this.initialPane}else{if(this.isHandset()){if(this.listPane!=null){this.currentPane="list"}else{this.currentPane="navigation"}}else{this.currentPane="detail"}}
+this.pageOrientationChanged()}
+,isc.A.pageOrientationChanged=function isc_SplitPane_pageOrientationChanged(){this.updateUI()}
+,isc.A.updateUI=function isc_SplitPane_updateUI(_1){var _2=this.currentUIConfig,_3=this.$79m;var _4=this.currentUIConfig=this.getUIConfiguration(),_5=this.$79m=this.currentPane;if(!_1&&_4==_2&&_5==_3)return;if(_4=="handset"){this.updateNavigationBar();if(_5=="navigation"){this.navigationLayout.setMembers([this.navigationBar,this.navigationPane]);this.mainLayout.setMembers([this.navigationLayout])}else if(_5=="detail"){var _6=[this.navigationBar,this.detailPane];if(this.detailToolButtons!=null){this.updateDetailToolStrip();_6.add(this.detailToolStrip)}
+this.detailLayout.setMembers(_6);this.mainLayout.setMembers([this.detailLayout])}else{var _6=[this.navigationBar,this.listPane];this.listLayout.setMembers(_6);this.mainLayout.setMembers([this.listLayout])}}else if(_4=="portrait"){this.updateDetailToolStrip();this.detailLayout.setMembers([this.detailToolStrip,this.detailPane]);this.mainLayout.setMembers([this.detailLayout]);if(this.currentPane=="navigation"){if(this.listPopUp!=null&&this.listPopUp.isVisible()){this.listPopUp.hide()}
+this.updateNavigationBar();if(this.navigationPopUp==null){var _7=isc.PopupWindow||isc.Window;this.navigationPopUp=this.createAutoChild("navigationPopUp",{_constructor:_7,headerControls:[this.navigationBar],items:[this.navigationPane],width:"50%",height:"80%",isModal:true,showModalMask:true,dismissOnOutsideClick:true,closeClick:function(){this.creator.showDetailPane()}})}else{this.navigationPopUp.setHeaderControls([this.navigationBar]);if(!this.navigationPopUp.items||!this.navigationPopUp.items.contains(this.navigationPane))
+{this.navigationPopUp.addItem(this.navigationPane)}}
+this.delayCall("$79n")}else if(this.currentPane=="list"){if(this.navigationPopUp!=null&&this.navigationPopUp.isVisible()){this.navigationPopUp.hide()}
+if(this.listPopUp==null){var _7=isc.PopupWindow||isc.Window;this.listPopUp=this.createAutoChild("listPopUp",{_constructor:_7,headerControls:[this.navigationBar],items:[this.listPane],width:"50%",height:"80%",isModal:true,showModalMask:true,dismissOnOutsideClick:true,closeClick:function(){this.creator.showDetailPane()}})}else{this.listPopUp.setHeaderControls([this.navigationBar]);if(!this.listPopUp.items||!this.listPopUp.items.contains(this.listPane))
+{this.listPopUp.addItem(this.listPane)}}
+this.delayCall("$80y")}else{if(this.navigationPopUp!=null&&this.navigationPopUp.isVisible()){this.navigationPopUp.hide()}
+if(this.listPopUp!=null&&this.listPopUp.isVisible()){this.listPopUp.hide()}}}else if(_4=="landscape"){if(this.navigationPopUp!=null){if(this.navigationPopUp.isVisible())this.navigationPopUp.hide();if(this.navigationPopUp.items&&this.navigationPopUp.items.contains(this.navigationPane))
+{this.navigationPopUp.removeItem(this.navigationPane)}}
+this.updateNavigationBar();this.navigationLayout.setMembers([this.navigationBar,this.navigationPane]);this.updateDetailToolStrip();this.detailLayout.setMembers([this.detailToolStrip,this.detailPane]);if(this.listPane!=null){if(_5!="navigation"){this.listLayout.setMembers([this.navigationBar,this.listPane]);this.leftLayout.setMembers([this.listLayout])}else{this.leftLayout.setMembers([this.navigationLayout])}}else{this.leftLayout.setMembers([this.navigationLayout])}
+this.rightLayout.setMembers([this.detailLayout]);if(this.spacer==null){this.spacer=isc.Canvas.create({backgroundColor:"black",overflow:"hidden",height:"100%",width:1,autoDraw:false})}
+this.mainLayout.setMembers([this.leftLayout,this.spacer,this.rightLayout])}else{this.updateNavigationBar();this.navigationLayout.setMembers([this.navigationBar,this.navigationPane]);this.updateDetailToolStrip();if(this.listPane!=null){this.listLayout.setMembers([this.detailToolStrip,this.listPane]);this.detailLayout.setMembers([this.detailPane])}else{this.detailLayout.setMembers([this.detailToolStrip,this.detailPane])}
+this.leftLayout.setMembers([this.navigationLayout]);var _6=(this.listPane!=null?[this.listLayout]:[]);_6.add(this.detailLayout);this.rightLayout.setMembers(_6);this.mainLayout.setMembers([this.leftLayout,this.rightLayout])}}
+,isc.A.$79n=function isc_SplitPane__showNavPopUp(){if(!this.navigationPopUp||(this.navigationPopUp.isVisible()&&this.navigationPopUp.isDrawn()))return;this.navigationPopUp.setPageTop(this.navigationPopUpButton.getPageBottom());this.navigationPopUp.setPageLeft(this.navigationPopUpButton.getPageLeft());this.navigationPopUp.show()}
+,isc.A.$80y=function isc_SplitPane__showListPopUp(){if(!this.listPopUp||(this.listPopUp.isVisible()&&this.listPopUp.isDrawn()))return;this.listPopUp.setPageTop(this.listPopUpButton.getPageBottom());this.listPopUp.setPageLeft(this.listPopUpButton.getPageLeft());this.listPopUp.show()}
+,isc.A.updateDetailToolStrip=function isc_SplitPane_updateDetailToolStrip(){if(this.currentUIConfig=="handset"){var _1=[isc.LayoutSpacer.create({width:"*"})];_1.addList(this.detailToolButtons);_1.add(isc.LayoutSpacer.create({width:"*"}));if(this.detailTitleLabel&&this.detailTitleLabel.isDrawn()){this.detailTitleLabel.deparent()}
+this.detailToolStrip.setMembers(_1)}else if(this.currentUIConfig=="portrait"){if(this.navigationPopUpButton==null){this.navigationPopUpButton=this.createAutoChild("navigationPopUpButton",{_constructor:"IButton",title:this.navigationTitle,click:function(){this.creator.showNavigationPane()}})}else{this.navigationPopUpButton.setTitle(this.navigationTitle)}
+if(this.listPopUpButton==null){this.listPopUpButton=this.createAutoChild("listPopUpButton",{_constructor:"IButton",title:this.listTitle,click:function(){this.creator.showListPane()}})}else{this.listPopUpButton.setTitle(this.listTitle)}
+this.updateDetailTitleLabel();var _1=[(this.currentPane!="navigation"?this.listPopUpButton:this.navigationPopUpButton),this.detailNavigationControl,this.detailTitleLabel];if(this.detailToolButtons!=null){_1.addList(this.detailToolButtons)}
+_1.removeEmpty();this.detailToolStrip.setMembers(_1)}else{this.updateDetailTitleLabel();var _1=[this.detailTitleLabel];if(this.detailToolButtons!=null){_1.addList(this.detailToolButtons)}
+this.detailToolStrip.setMembers(_1)}}
+,isc.A.updateDetailTitleLabel=function isc_SplitPane_updateDetailTitleLabel(){if(this.detailTitleLabel==null){this.detailTitleLabel=isc.Label.create({autoDraw:false,align:"center",valign:"center",width:"*",height:this.detailToolStrip.getHeight()})}
+this.detailTitleLabel.setContents(this.detailTitle)}
+,isc.A.updateNavigationBar=function isc_SplitPane_updateNavigationBar(){this.logInfo("updateNavigationBar, currentPane: "+this.currentPane+", currentUI: "+this.currentUIConfig);if((this.currentUIConfig=="handset"&&this.currentPane!="navigation")||(this.currentUIConfig=="portrait"&&this.currentPane=="list")||(this.currentUIConfig=="landscape"&&this.currentPane!="navigation"))
+{var _1;if(this.currentUIConfig=="landscape"){_1=this.listPane!=null&&this.listPane.isVisible()?this.listTitle:this.navigationTitle}else{_1=(this.currentPane=="detail"?this.detailTitle:(this.currentPane=="list"?this.listTitle:this.navigationTitle))}
+if(_1==null)_1=" ";this.navigationBar.setTitle(_1);if(this.showNavigationPaneButton==null){this.showNavigationPaneButton=this.createAutoChild("showNavigationPaneButton",{_constructor:isc.NavigationButton,direction:"back",title:(this.currentPane=="detail"&&this.listPane!=null?this.listTitle:this.navigationTitle),click:function(){if(this.creator.currentPane=="detail"&&this.creator.listPane!=null&&!(this.creator.listPane.isVisible()&&this.creator.listPane.isDrawn()))
+{this.creator.showListPane()}else{this.creator.showNavigationPane()}}})}else{this.showNavigationPaneButton.setTitle(this.currentPane=="detail"&&this.listPane!=null&&!(this.listPane.isVisible()&&this.listPane.isDrawn())?this.listTitle:this.navigationTitle)}
+var _2=[this.showNavigationPaneButton,"titleLabel"];if(this.detailNavigationControl!=null){_2.add(this.detailNavigationControl)}
+this.navigationBar.setControls(_2)}else{this.navigationBar.setTitle(this.navigationTitle);this.navigationBar.setLeftButtonTitle(this.leftButtonTitle);this.navigationBar.setRightButtonTitle(this.rightButtonTitle);this.navigationBar.setControls(["leftButton","titleLabel","rightButton"]);this.navigationBar.setShowLeftButton(this.showLeftButton);this.navigationBar.setShowRightButton(this.showRightButton)}}
+,isc.A.$80z=function isc_SplitPane__getShowNavigationPaneButton(_1){if(this.showNavigationPaneButton==null){this.showNavigationPaneButton=this.createAutoChild("showNavigationPaneButton",{_constructor:isc.NavigationButton,direction:"back",title:_1,click:function(){this.creator.showNavigationPane()}})}else{this.showNavigationPaneButton.setTitle(_1)}
+return this.showNavigationPaneButton}
+,isc.A.getUIConfiguration=function isc_SplitPane_getUIConfiguration(){if(this.uiConfiguration!=null)return this.uiConfiguration;if(this.isHandset())return"handset";else if(this.isTablet()&&this.getPageOrientation()=="portrait")return"portrait";else if(this.isTablet()&&this.getPageOrientation()=="landscape")return"landscape";else return"desktop"}
+,isc.A.setShowLeftButton=function isc_SplitPane_setShowLeftButton(_1){this.showLeftButton=_1;this.updateNavigationBar()}
+,isc.A.setLeftButtonTitle=function isc_SplitPane_setLeftButtonTitle(_1){this.leftButtonTitle=_1;this.updateNavigationBar()}
+,isc.A.setLeftButtonIcon=function isc_SplitPane_setLeftButtonIcon(_1){this.leftButtonIcon=_1;this.updateNavigationBar()}
+,isc.A.setShowRightButton=function isc_SplitPane_setShowRightButton(_1){this.showRightButton=_1;this.updateNavigationBar()}
+,isc.A.setRightButtonTitle=function isc_SplitPane_setRightButtonTitle(_1){this.rightButtonTitle=_1;this.updateNavigationBar()}
+,isc.A.setRightButtonIcon=function isc_SplitPane_setRightButtonIcon(_1){this.rightButtonIcon=_1;this.updateNavigationBar()}
+,isc.A.$79k=function isc_SplitPane__setNavigationPane(_1){this.navigationPane=_1;this.navigationPane.setWidth("100%");this.navigationPane.setHeight("100%");this.navigationPane.splitPane=this}
+,isc.A.setNavigationPane=function isc_SplitPane_setNavigationPane(_1){this.$79k(_1);if(this.currentView=="navigation"){this.updateUI(true)}}
+,isc.A.setNavigationTitle=function isc_SplitPane_setNavigationTitle(_1){this.navigationTitle=_1;this.updateNavigationBar()}
+,isc.A.showNavigationPane=function isc_SplitPane_showNavigationPane(){var _1=this.currentPane!=null&&this.currentPane!="navigation";this.currentPane="navigation";this.updateUI();if(_1&&this.paneChanged!=null)this.paneChanged("navigation")}
+,isc.A.$800=function isc_SplitPane__setListPane(_1){this.listPane=_1;this.listPane.setWidth("100%");this.listPane.setHeight("100%");this.listPane.splitPane=this}
+,isc.A.setListPane=function isc_SplitPane_setListPane(_1){this.$800(_1);this.updateUI(true)}
+,isc.A.showListPane=function isc_SplitPane_showListPane(){var _1=(this.listPane!=null?"list":"detail");var _2=(_1!=this.currentPane);this.currentPane=_1
+this.updateUI();if(_2&&this.paneChanged!=null)this.paneChanged(_1)}
+,isc.A.setListTitle=function isc_SplitPane_setListTitle(_1){this.listTitle=_1;this.updateNavigationBar();this.updateDetailToolStrip()}
+,isc.A.$79l=function isc_SplitPane__setDetailPane(_1){this.detailPane=_1;this.detailPane.setWidth("100%");this.detailPane.setHeight("100%");this.detailPane.splitPane=this}
+,isc.A.setDetailPane=function isc_SplitPane_setDetailPane(_1){this.$79l(_1);this.updateUI(true)}
+,isc.A.showDetailPane=function isc_SplitPane_showDetailPane(){var _1=(this.currentPane!="detail");this.currentPane="detail";this.updateUI();if(_1&&this.paneChanged!=null)this.paneChanged("detail")}
+,isc.A.setDetailTitle=function isc_SplitPane_setDetailTitle(_1){this.detailTitle=_1;if(this.currentUIConfig=="handset"){if(this.currentPane=="detail")this.updateNavigationBar()}else{this.updateDetailToolStrip()}}
+,isc.A.navigationClick=function isc_SplitPane_navigationClick(_1){}
+,isc.A.setDetailNavigationControl=function isc_SplitPane_setDetailNavigationControl(_1){this.detailNavigationControl=_1;var _2=this.currentUIConfig!="landscape"&&this.currentPane=="detail";if(_2)this.updateUI(true)}
+);isc.B._maxIndex=isc.C+34;isc.SplitPane.registerStringMethods({paneChanged:"pane"});isc._moduleEnd=isc._Foundation_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Foundation module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Foundation'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Foundation.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Foundation.js.gz
new file mode 100755
index 0000000..a898a13
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Foundation.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Grids.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Grids.js
new file mode 100755
index 0000000..a98010b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Grids.js
@@ -0,0 +1,4260 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_Grids){isc.module_Grids=1;isc._moduleStart=isc._Grids_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'Grids load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.ClassFactory.defineInterface("List");isc.List.addInterfaceMethods({init:function(){if(!this.data)this.data=[]},first:function(){return this.get(0)},last:function(){return this.get(this.getLength()-1)},indexOf:function(_1,_2,_3){if(_2==null)_2=0;if(_3==null)_3=this.getLength()-1;for(var i=_2;i<=_3;i++){if(this.get(i)==_1)return i}
+return-1},lastIndexOf:function(_1,_2,_3){if(_2==null)_2=this.getLength()-1;if(_3==null)_3=0;for(var i=_2;i>=_3;i--)
+if(this.get(i)==_1)return i;return-1},findNextIndex:function(_1,_2,_3,_4){var _5=this.getLength();if(_1==null)_1=0;else if(_1>=_5)return-1;if(_4==null)_4=_5-1;if(_2==null)return-1;if(isc.isA.String(_2)){for(var i=_1;i<=_4;i++){var _7=this.get(i);if(_7&&_7[_2]==_3)return i}
+return-1}else{return this.findNextMatch(_2,_1,_4)}},findAll:function(_1,_2){if(_1==null)return null;if(isc.isA.String(_1)){var _3=null,l=this.getLength();for(var i=0;i<l;i++){var _6=this.get(i);if(_6&&_6[_1]==_2){if(_3==null)_3=[];_3.add(_6)}}
+return _3}else{return this.findAllMatches(_1)}},getRange:function(_1,_2){if(_2==null)_2=this.getLength()-1;var _3=[];for(var i=_1;i<_2;i++){_3[_3.length]=this.get(i)}
+return _3},duplicate:function(){return this.newInstance().addList(this)},add:function(_1,_2){var _3;if(_2!==_3){return this.addAt(_1,_2)}
+this.addAt(_1,this.getLength());return _1},setLength:function(_1){this.$ed();if(_1>this.getLength()){var _2;while(_1>this.getLength())this.add(_2)}else{while(_1<this.getLength())this.removeAt(this.getLength()-1)}
+this.$ee()},addListAt:function(_1,_2){this.$ed();var _3=_1.getLength();for(var i=0;i<_3;i++){this.addAt(_1.get(i),_2+i)}
+this.$ee();return _1},remove:function(_1){var _2=this.indexOf(_1);if(_2==-1)return false;this.$ed();var _3=this.getLength();for(var i=_2;i<_3;i++)this.set(i,this.get(i+1));this.setLength(_3-1);this.$ee();return true},removeList:function(_1){if(_1==null)return null;this.$ed();var _2=false;for(var i=0;i<this.getLength();i++){var _4=this.get(i);if(_1.contains(_4)){_2=true;this.removeAt(i);i--}}
+this.$ee();return _1},sort:function(_1){var _2=this.getRange(0,this.getLength());_2.sort(_1);for(var i=0;i<_2.length;i++)this.set(i,_2[i]);return this},getProperty:function(_1){var _2=[];for(var i=0;i<this.getLength();i++){var _4=this.get(i);_2[i]=_4!=null?_4[_1]:null}
+return _2},sortByProperty:function(_1,_2,_3,_4){var _5=this.getRange(0,this.getLength());_5.sortByProperty(_1,_2,_3,_4);for(var i=0;i<_5.length;i++)this.set(i,_5[i]);return this},dataChanged:function(){if(this.onDataChanged)this.onDataChanged()}});isc.$27b=function(){var _1=["isEmpty","contains","containsAll","intersect","equals","getItems","addList","getValueMap","removeEvery","$ed","$ee","$52z","getItem","setItem","removeItem","clearAll","find","findIndex","findAllIndices","findNextMatch","findAllMatches","findByKeys","size","subList","addAll","removeAll","clear"];var _2={};for(var i=0;i<_1.length;i++){var _4=_1[i];_2[_4]=Array.prototype[_4]}
+isc.List.addInterfaceMethods(_2)}
+isc.$27b();isc.A=isc.isA;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$27c="List";isc.B.push(isc.A.List=function isc_isA_List(_1){if(_1==null)return false;if(isc.isA.Array(_1))return true;return _1.isA&&_1.isA(this.$27c)}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("Tree",null,"List");isc.A=isc.Tree.getPrototype();isc.A.getProperty=isc.List.getInstanceProperty("getProperty");isc.A=isc.Tree;isc.A.FOLDERS_AND_LEAVES=null;isc.A.FOLDERS_ONLY="folders";isc.A.LEAVES_ONLY="leaves";isc.A.UNLOADED=null;isc.A.LOADING="loading";isc.A.FOLDERS_LOADED="foldersLoaded";isc.A.LOADED="loaded";isc.A.PARENT="parent";isc.A.CHILDREN="children";isc.A.STRICT="strict";isc.A.KEEP_PARENTS="keepParents";isc.A.autoID=0;isc.A=isc.Tree.getPrototype();isc.A.modelType="children";isc.A.isFolderProperty="isFolder";isc.A.reportCollisions=true;isc.A.autoSetupParentLinks=true;isc.A.pathDelim="/";isc.A.treeProperty="$42c";isc.A.nameProperty="name";isc.A.titleProperty="title";isc.A.childrenProperty="children";isc.A.cacheOpenList=true;isc.A.discardParentlessNodes=false;isc.A.indexByLevel=false;isc.A.showOpenIcon=false;isc.A.showDropIcon=false;isc.A.sortDirection=Array.ASCENDING;isc.A.showRoot=false;isc.A.autoOpenRoot=true;isc.A.separateFolders=false;isc.A.sortFoldersBeforeLeaves=true;isc.A.defaultNodeTitle="Untitled";isc.A.defaultLoadState=isc.Tree.UNLOADED;isc.A=isc.Tree.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$864=["autoOpenRoot","childrenProperty","defaultIsFolder","defaultNodeTitle","discardParentlessNodes","idField","isFolderProperty","modelType","nameProperty","parentIdField","pathDelim","reportCollisions","rootValue","showRoot","titleProperty","isMultiDSTree","dataSource","operation"];isc.A.$865="openProperty";isc.A.$64z="treeLinking";isc.A.$27d=0;isc.A.loadBatchSize=50;isc.B.push(isc.A.init=function isc_Tree_init(){this.setupProperties();this.setRoot(this.root||this.makeRoot());if(this.loadOnInit&&this.loadBatchSize>=0)this.loadSubtree(null,null,true)}
+,isc.A.setupProperties=function isc_Tree_setupProperties(){if(this.ID==null||window[this.ID]!=this)isc.ClassFactory.addGlobalID(this);if(!this.parentProperty)this.parentProperty="_parent_"+this.ID;if(!this.isFolderProperty)this.isFolderProperty="_isFolder_"+this.ID;if(this.idField==null)this.idField="id";if(this.parentIdField==null)this.parentIdField="parentId";if(!this.openProperty)this.openProperty="_isOpen_"+this.ID;if(this.indexByLevel)this.$76h=[]}
+,isc.A.duplicate=function isc_Tree_duplicate(_1,_2){var _3=isc.Tree.create();var _4;for(var i=0;i<this.$864.length;i++){var _6=this.$864[i],_7=this[_6];if(_7!==_4)_3[_6]=_7}
+var _7=this[this.$865];if(_7!==_4&&!_7.startsWith("_isOpen_"))_3[this.$865]=_7;_3.setRoot(this.getCleanNodeData(this.getRoot(),false,_2));if(_1){var _8=this.getOpenList(null,isc.Tree.FOLDERS_AND_LEAVES,null,null,null,null,true);_8=this.getCleanNodeData(_8,false,_2);_3.linkNodes(_8)}
+return _3}
+,isc.A.destroy=function isc_Tree_destroy(){this.destroyed=true;if(window[this.ID]==this)window[this.ID]=null}
+,isc.A.makeRoot=function isc_Tree_makeRoot(){var _1={};var _2;if(this.idField!==_2)_1[this.idField]=this.rootValue;_1[this.treeProperty]=this.ID;return _1}
+,isc.A.convertToFolder=function isc_Tree_convertToFolder(_1){_1[this.isFolderProperty]=true}
+,isc.A.makeNode=function isc_Tree_makeNode(_1,_2){var _3=this.find(_1);if(_3){if(_2)this.convertToFolder(_3);return _3}
+var _4=_1.split(this.pathDelim);var _5=this.getRoot()[this.nameProperty];if(_5.endsWith(this.pathDelim)){_5=_5.substring(0,_5.length-this.pathDelim.length)}
+if(_4[0]!=_5)_4.addAt(_5,0);var _6=_4[_4.length-1],_7=(_6!=isc.emptyString);if(!_7){_4.length=_4.length-1;_6=_4[_4.length-1]}
+var _8=_4.slice(0,(_4.length-1)).join(this.pathDelim)+this.pathDelim;var _9=this.find(_8);if(_9==null){_9=this.find(_8.substring(0,_8.length-this.pathDelim.length))}
+if(!_9){_9=this.makeNode(_8,_2)}else if(!this.isFolder(_9)){this.convertToFolder(_9)}
+var _3={};_3[this.nameProperty]=_6;if(!_7)this.convertToFolder(_3);return this.add(_3,_9)}
+,isc.A.isRoot=function isc_Tree_isRoot(_1){return this.root==_1}
+,isc.A.setupParentLinks=function isc_Tree_setupParentLinks(_1){if(!_1)_1=this.root;if(_1[this.idField]!=null)this.nodeIndex[_1[this.idField]]=_1;var _2=_1[this.childrenProperty];if(_2){this.setLoadState(_1,isc.Tree.LOADED);if(!isc.isAn.Array(_2)){_2=_1[this.childrenProperty]=[_2]}}
+if(!_2||_2.length==0)return;for(var i=0,_4=_2.length,_5;i<_4;i++){_5=_2[i];if(!_5)continue;if(_5[this.parentIdField]==null&&_1[this.idField]!=null)
+_5[this.parentIdField]=_1[this.idField];_5[this.parentProperty]=_1;this.$76i(_5,_1);if(this.isFolder(_5)){this.setupParentLinks(_5)}else if(_5[this.idField]!=null){this.nodeIndex[_5[this.idField]]=_5}}}
+,isc.A.connectByParentID=function isc_Tree_connectByParentID(_1,_2,_3,_4,_5){this.linkNodes(_1,_2,_3,_4,_5)}
+,isc.A.connectByParentId=function isc_Tree_connectByParentId(_1,_2,_3,_4,_5){this.linkNodes(_1,_2,_3,_4,_5)}
+,isc.A.linkNodes=function isc_Tree_linkNodes(_1,_2,_3,_4,_5,_6,_7){if(this.modelType=="fields"){this.connectByFields(_1);return}
+_1=_1||this.data;_2=(_2!=null)?_2:this.idField;_3=(_3!=null)?_3:this.parentIdField;_4=(_4!=null)?_4:this.rootValue;var _8=[];_8.addList(_1);var _9={};for(var i=0;i<_8.length;i++){var _11=_8[i][_2];if(_11!=null)_9[_11]=_8[i]}
+for(var i=0;i<_8.length;i++){var _12=_8[i];if(this.nodeIndex[_12[_2]]==_12)continue;if(_12==null)continue;var _13=_12[_3],_14=_13!=null?_9[_13]:null,_15=[];while(_14!=null){if(_14)_15.add(_14);_13=_14[_3];_14=_13!=null&&_13!=_12[_3]?_9[_13]:null}
+if(_15.length>0){for(var _16=(_15.length-1);_16>=0;_16--){if(this.logIsDebugEnabled(this.$64z)){this.logDebug("linkNodes running - adding interlinked parents to the tree in "+" reverse hierarchical order -- currently adding node with id:"+_15[_16][_2],this.$64z)}
+this.$640(_15[_16],_2,_3,_6,_4);delete _9[_15[_16][_2]]}}
+this.$640(_12,_2,_3,_6,_4);delete _9[_12[_2]]}
+this.$736(true);if(!_7)this.dataChanged()}
+,isc.A.connectByParentID=function isc_Tree_connectByParentID(_1,_2,_3,_4,_5){this.linkNodes(_1,_2,_3,_4,_5)}
+,isc.A.connectByParentId=function isc_Tree_connectByParentId(_1,_2,_3,_4,_5){this.linkNodes(_1,_2,_3,_4,_5)}
+,isc.A.$640=function isc_Tree__linkNode(_1,_2,_3,_4,_5){var _6=this.logIsDebugEnabled(this.$64z);var _7=_1[_2],_8=_1[_3],_9,_10=(_5==null),_11=(_8==null||_8==-1||_8===isc.emptyString),_12=this.nodeIndex[_8];if(_12){if(_6){this.logDebug("found parent "+_12[_2]+" for child "+_1[_2],this.$64z)}
+this.$27e(_1,_12)}else if(!_10&&_8==_5){if(_6){this.logDebug("root node: "+_1[_2],this.$64z)}
+this.$27e(_1,this.root)}else{if(!_11&&this.discardParentlessNodes){this.logWarn("Couldn't find parent: "+_8+" for node with id:"+_7,this.$64z)}else{var _13=_4||this.root;if(_6){this.logDebug("child:"+_1[_2]+(_11?" has no explicit parent ":(" unable to find specified parent:"+_8))+"- linking to default node "+_13[_2],this.$64z)}
+this.$27e(_1,_13)}}}
+,isc.A.connectByFields=function isc_Tree_connectByFields(_1){if(!_1)_1=this.data;for(var i=0;i<_1.length;i++){this.addNodeByFields(_1[i])}}
+,isc.A.addNodeByFields=function isc_Tree_addNodeByFields(_1){var _2=this.root;for(var i=0;i<this.fieldOrder.length;i++){var _4=this.fieldOrder[i],_5=_1[_4];var _6=isc.isA.String(_5)?_5:_5+isc.emptyString,_7=this.findChildNum(_2,_6),_8;if(_7!=-1){_8=this.getChildren(_2).get(_7)}else{_8={};_8[this.nameProperty]=_6;this.add(_8,_2);this.convertToFolder(_8)}
+_2=_8}
+this.add(_1,_2)}
+,isc.A.getRoot=function isc_Tree_getRoot(){return this.root}
+,isc.A.setRoot=function isc_Tree_setRoot(_1,_2){this.root=_1;if(_1&&isc.endsWith(this.parentProperty,this.ID))_1[this.parentProperty]=null;this.root[this.treeProperty]=this.ID;if(this.rootValue==null)this.rootValue=this.root[this.idField];var _3=this.root[this.nameProperty];if(_3==null||_3==isc.emptyString)this.root[this.nameProperty]=this.pathDelim;if(!this.isFolder(this.root))this.convertToFolder(this.root);this.nodeIndex={};if("parent"==this.modelType){if(this.data)this.linkNodes()}else if("fields"==this.modelType){if(this.data)this.connectByFields()}else if("children"==this.modelType){if(this.autoSetupParentLinks)this.setupParentLinks();if(this.data){var _4=this.data;this.data=null;this.addList(_4,this.root)}}else{this.logWarn("Unsupported modelType: "+this.modelType)}
+if(_2!==false&&(this.autoOpenRoot||_2)){this.openFolder(_1)}
+this.setupParentLinks();this.$736();this.dataChanged()}
+,isc.A.getCleanNodeData=function isc_Tree_getCleanNodeData(_1,_2,_3,_4){if(_1==null)return null;var _5=[],_6=false;if(!isc.isAn.Array(_1)){_1=[_1];_6=true}
+for(var i=0;i<_1.length;i++){var _8=_1[i],_9={};for(var _10 in _8){if(_10==this.parentProperty||(!_4&&_10=="$27g")||_10=="$42c"||_10=="__ref"||_10.startsWith("_isOpen_")||_10.startsWith("_isFolder_")||_10.startsWith("$399")||_10=="$40a"||_10.startsWith("_selection_")||(_2==false&&_10==this.childrenProperty))continue;_9[_10]=_8[_10];if(_10==this.childrenProperty&&isc.isAn.Array(_9[_10])){_9[_10]=this.getCleanNodeData(_9[_10],false,_3,_4)}}
+_5.add(_9)}
+if(_6)return _5[0];return _5}
+,isc.A.getName=function isc_Tree_getName(_1){var _2=isc.$ad;if(!_1)return _2;var _3=_1[this.nameProperty];if(_3==null)_3=_1[this.idField];if(_3==null){if(!this.isDescendantOf(_1,this.root)&&_1!=this.root)return null;if(!this.$27h)this.$27h=isc.Tree.autoID+++"_";_3=this.$27h+this.$27d++}
+if(!isc.isA.String(_3))_3=_2+_3;_1[this.nameProperty]=_3;return _3}
+,isc.A.getTitle=function isc_Tree_getTitle(_1){if(!_1)return null;if(_1[this.titleProperty]!=null)return _1[this.titleProperty];var _2=_1[this.nameProperty];if(_2==null)_2=this.defaultNodeTitle;return(isc.endsWith(_2,this.pathDelim)?_2.substring(0,_2.length-this.pathDelim.length):_2)}
+,isc.A.getPath=function isc_Tree_getPath(_1){var _2=this.getParent(_1);if(_2==null)return this.getName(_1);var _3=this.getName(_2);return this.getPath(_2)+(_3==this.pathDelim?isc.emptyString:this.pathDelim)+this.getName(_1)}
+,isc.A.getParentPath=function isc_Tree_getParentPath(_1){var _2=this.getName(_1),_3=this.getPath(_1);return _3.substring(0,_3.length-_2.length-this.pathDelim.length)}
+,isc.A.getParent=function isc_Tree_getParent(_1){if(_1==null)return null;return _1[this.parentProperty]}
+,isc.A.getParents=function isc_Tree_getParents(_1){var _2=[],_3=this.getParent(_1);while(_3){_2.add(_3);if(_3==this.root)break;_3=this.getParent(_3)}
+return _2}
+,isc.A.getLevel=function isc_Tree_getLevel(_1){return this.getParents(_1).length}
+,isc.A.$59a=function isc_Tree__getFollowingSiblingLevels(_1){var _2=[],_3=this.getParents(_1),_4=_3.length;for(var i=0;i<_4;i++){var _6=this.getChildren(_3[i]);if(_6.indexOf(_1)!=_6.length-1)_2.add(_4-i);_1=_3[i]}
+return _2}
+,isc.A.isFolder=function isc_Tree_isFolder(_1){if(_1==null)return false;var _2=_1[this.isFolderProperty];if(_2!=null)return _2;if(_1[this.childrenProperty])return true;var _3=this.getName(_1);if(_3==null)return false;return isc.endsWith(_3,this.pathDelim)}
+,isc.A.isLeaf=function isc_Tree_isLeaf(_1){return!this.isFolder(_1)}
+,isc.A.isFirst=function isc_Tree_isFirst(_1){var _2=this.getParent(_1);if(!_2)return true;var _3=this.getChildren(_2,this.opendisplayNodeType,this.$27i,this.sortDirection,null,this.$45g);return _3[0]==_1}
+,isc.A.isLast=function isc_Tree_isLast(_1){var _2=this.getParent(_1);if(!_2)return true;var _3=this.getChildren(_2,this.opendisplayNodeType,this.$27i,this.sortDirection,null,this.$45g);return _3[_3.length-1]==_1}
+,isc.A.findById=function isc_Tree_findById(_1){return this.find(this.idField,_1)}
+,isc.A.find=function isc_Tree_find(_1,_2){var _3;if(_2===_3&&isc.isA.String(_1))return this.$27j(_1);if(_2!==_3){if(_1==this.idField)return this.nodeIndex[_2];if(this.root[_1]==_2)return this.root;return this.getDescendants().find(_1,_2)}else{var _4=this.getDescendants();_4.add(this.root);return _4.find(_1)}}
+,isc.A.findAll=function isc_Tree_findAll(_1,_2){return this.getDescendants().findAll(_1,_2)}
+,isc.A.$27j=function isc_Tree__findByPath(_1){if(_1==this.pathDelim)return this.root;var _2=this.getPath(this.root);if(_1==_2)return this.root;var _3=this.root,_4=0,_5=this.pathDelim.length;if(isc.startsWith(_1,_2)){_4=_2.length}else if(isc.startsWith(_1,this.pathDelim)){_4+=_5}
+while(true){var _6=_1.indexOf(this.pathDelim,_4);if(_6==_4){_4+=_5;continue}
+var _7=(_6!=-1),_8=_1.substring(_4,_7?_6:_1.length),_9=this.findChildNum(_3,_8);if(_9==-1)return null;_3=_3[this.childrenProperty][_9];if(!_7)return _3;_4=_6+_5;if(_4==_1.length)return _3}}
+,isc.A.findChildNum=function isc_Tree_findChildNum(_1,_2){var _3=this.getChildren(_1);if(_3==null)return-1;if(_2==null)return-1;var _4=_3.getLength(),_5=isc.endsWith(_2,this.pathDelim),_6=this.pathDelim.length;for(var i=0;i<_4;i++){var _8=this.getName(_3.get(i)),_9=_8.length-_2.length;if(_9==0&&_8==_2)return i;if(_9==_6){if(isc.startsWith(_8,_2)&&isc.endsWith(_8,this.pathDelim)&&!_5)
+{return i}}else if(_5&&_9==-_6){if(isc.startsWith(_2,_8))return i}}
+return-1}
+,isc.A.getChildren=function isc_Tree_getChildren(_1,_2,_3,_4,_5,_6,_7){if(_3==null&&this.$27i==null&&this.separateFolders){this.sortByProperty()}
+if(_1==null)_1=this.root;if(this.isLeaf(_1))return null;if(_1[this.childrenProperty]==null){if(_7)return null;var _8=[];_1[this.childrenProperty]=_8;return _8}
+var _9=_1[this.childrenProperty],_10;if(_5){_10=[];for(var i=0,_12=_9.length;i<_12;i++){var _13=_9[i];if(this.fireCallback(_5,"node,parent,tree",[_13,_1,this]))
+_10[_10.length]=_13}
+_9=_10}
+if(_2==isc.Tree.FOLDERS_ONLY){_10=[];for(var i=0,_12=_9.length;i<_12;i++){if(this.isFolder(_9[i]))_10[_10.length]=_9[i]}}else if(_2==isc.Tree.LEAVES_ONLY){_10=[];for(var i=0,_12=_9.length;i<_12;i++){if(this.isLeaf(_9[i]))_10[_10.length]=_9[i]}}else{_10=_9}
+if(_3){if(!this.$684||this.alwaysSortGroupHeaders||(this.$684!=this.sortProp&&_1!=this.getRoot())||(this.$684==this.sortProp&&_1==this.getRoot()))
+{_10.sortByProperty(this.sortProp,_4,_3,_6)}}
+return _10}
+,isc.A.getFolders=function isc_Tree_getFolders(_1,_2,_3,_4,_5){return this.getChildren(_1,isc.Tree.FOLDERS_ONLY,_2,_3,_4,_5)}
+,isc.A.getLeaves=function isc_Tree_getLeaves(_1,_2,_3,_4,_5){return this.getChildren(_1,isc.Tree.LEAVES_ONLY,_2,_3,_4,_5)}
+,isc.A.getLevelNodes=function isc_Tree_getLevelNodes(_1,_2){if(this.indexByLevel&&(_2==null||_2==this.getRoot())){return this.$76h[_1]||[]}else{if(!_2)_2=this.getRoot();var _3=this.getChildren(_2);if(_1==0)return _3;var _4=[];if(!_3)return _4;for(var i=0;i<_3.length;i++){var _6=this.getLevelNodes(_1-1,_3[i]);if(_6)_4.addList(_6)}
+return _4}}
+,isc.A.getDepth=function isc_Tree_getDepth(){if(this.$76h)return this.$76h.length;return null}
+,isc.A.hasChildren=function isc_Tree_hasChildren(_1,_2){var _3=this.getChildren(_1,_2);return _3!=null&&_3.length>0}
+,isc.A.hasFolders=function isc_Tree_hasFolders(_1){return this.hasChildren(_1,isc.Tree.FOLDERS_ONLY)}
+,isc.A.hasLeaves=function isc_Tree_hasLeaves(_1){return this.hasChildren(_1,isc.Tree.LEAVES_ONLY)}
+,isc.A.isDescendantOf=function isc_Tree_isDescendantOf(_1,_2){if(_1==_2)return false;var _3=_1;while(_3!=null){if(_3==_2)return true;_3=_3[this.parentProperty]}
+return false}
+,isc.A.getDescendants=function isc_Tree_getDescendants(_1,_2,_3){if(!_1)_1=this.root;var _4=[];if(!_3)_3=function(){return true};if(this.isLeaf(_1))return _4;var _5=this.getChildren(_1);if(!_5)return _4;for(var i=0,_7=_5.length,_8;i<_7;i++){_8=_5[i];if(this.isFolder(_8)){if(_2!=isc.Tree.LEAVES_ONLY&&_3(_8))
+_4[_4.length]=_8;_4=_4.concat(this.getDescendants(_8,_2,_3))}else{if(_2!=isc.Tree.FOLDERS_ONLY&&_3(_8)){_4[_4.length]=_8}}}
+return _4}
+,isc.A.getDescendantFolders=function isc_Tree_getDescendantFolders(_1,_2){return this.getDescendants(_1,isc.Tree.FOLDERS_ONLY,_2)}
+,isc.A.getDescendantLeaves=function isc_Tree_getDescendantLeaves(_1,_2){return this.getDescendants(_1,isc.Tree.LEAVES_ONLY,_2)}
+,isc.A.dataChanged=function isc_Tree_dataChanged(){}
+,isc.A.add=function isc_Tree_add(_1,_2,_3){if(_2==null&&this.modelType==isc.Tree.PARENT){var _4=_1[this.parentIdField];if(_4!=null)_2=this.findById(_4)}
+if(isc.isA.String(_2)){_2=this.find(_2)}else if(!this.getParent(_2)&&_2!==this.getRoot()){isc.logWarn('Tree.add(): specified parent node:'+this.echo(_2)+' is not in the tree, returning');return null}
+if(!_2){var _5=this.getParentPath(_1);if(_5)_2=this.find(_5);if(!_2)return null}
+this.$27e(_1,_2,_3);this.$736(true);this.dataChanged();return _1}
+,isc.A.$580=function isc_Tree__reportCollision(_1){if(this.reportCollisions){this.logWarn("Adding node to tree with id property set to:"+_1+". A node with this ID is already present in this Tree - that node will be "+"replaced. Note that this warning may be disabled by setting the "+"reportCollisions attribute to false.")}}
+,isc.A.$27e=function isc_Tree__add(_1,_2,_3){var _4=_1[this.idField];if(_4!=null&&this.modelType==isc.Tree.PARENT){var _5=this.findById(_4);if(_5){this.$580(_4);this.remove(_5)}}
+this.getName(_1);this.convertToFolder(_2);var _6=_2[this.childrenProperty];if(!_6)_6=_2[this.childrenProperty]=[];if(_6!=null&&!isc.isAn.Array(_6))
+_2[this.childrenProperty]=_6=[_6];if(_3==null||_3>_6.length){_6.add(_1)}else{_6.addAt(_1,_3)}
+var _7=this.idField
+_1[this.parentIdField]=_2[_7];_1[this.parentProperty]=_2;_1[this.treeProperty]=this.ID;if(_1[_7]!=null)this.nodeIndex[_1[_7]]=_1;this.setLoadState(_2,isc.Tree.LOADED);this.$76i(_1,_2,_3)
+var _8=_1[this.childrenProperty];if(_8!=null){_1[this.childrenProperty]=[];if(!isc.isAn.Array(_8))this.$27e(_8,_1);else if(_8.length>0)this.$27k(_8,_1);this.setLoadState(_1,isc.Tree.LOADED)}else{var _9=_1[this.isFolderProperty];if(_9!=null&&!isc.isA.Boolean(_9))
+_9=isc.booleanValue(_9,true);if(_9==null&&this.defaultIsFolder)_9=true;_1[this.isFolderProperty]=_9}}
+,isc.A.$76i=function isc_Tree__addToLevelCache(_1,_2,_3){if(!this.indexByLevel)return;var _4=this.getLevel(_2);if(!this.$76h[_4])this.$76h[_4]=[];var _5=this.$76h[_4];if(_5.length==0){if(!isc.isAn.Array(_1)){_5.push(_1)}else{_5.concat(_1)}}else{if(!isc.isAn.Array(_1)){if(_5.contains(_1))return}else{var _6=[];for(var j=0;j<_1.length;j++){if(!_5.contains(_1[j])){_6.push(_1[j])}}}
+var _8=false,_9=0,i=0;for(i;i<_5.length;i++){if(this.getParent(_5[i])==_2){_8=true}else if(_8){break}else{continue}
+if(_9===_3){break}
+_9++}
+if(!isc.isAn.Array(_1)){_5.splice(i,0,_1)}else{if(i==0){this.$76h[_4]=_6.concat(_5)}else if(i==_5.length){this.$76h[_4]=_5.concat(_6)}else{this.$76h[_4]=_5.slice(0,i).concat(_6,_5.slice(i))}}}}
+,isc.A.addList=function isc_Tree_addList(_1,_2,_3){if(isc.isA.String(_2))_2=this.find(_2);if(!_2)return false;this.$27k(_1,_2,_3);this.$736(true);this.dataChanged();return _1}
+,isc.A.$27k=function isc_Tree__addList(_1,_2,_3){for(var i=0,_5=_1.length;i<_5;i++){this.$27e(_1[i],_2,_3!=null?_3++:null)}}
+,isc.A.move=function isc_Tree_move(_1,_2,_3){this.moveList([_1],_2,_3)}
+,isc.A.moveList=function isc_Tree_moveList(_1,_2,_3){var _4=_1[0],_5=this.getParent(_4),_6=this.getChildren(_5).indexOf(_4);this.removeList(_1);if(_2==_5&&_1.length==1){if(_3>_6)_3--}else{var _7=this.getChildren(_2);if(_7&&_3>_7.length)_3=_7.length}
+this.addList(_1,_2,_3);this.dataChanged()}
+,isc.A.remove=function isc_Tree_remove(_1,_2){var _3=this.getParent(_1);if(!_3)return false;var _4=this.getChildren(_3);if(!_4)return false;if(_4.remove(_1)){delete this.nodeIndex[_1[this.idField]];if(!_2){this.$736(true);this.dataChanged()}
+this.removeChildrenFromNodeIndex(_1);this.$76j(_1);return true}
+return false}
+,isc.A.removeChildrenFromNodeIndex=function isc_Tree_removeChildrenFromNodeIndex(_1){var _2=this.getChildren(_1,null,null,null,null,null,true);if(!_2)return;for(var i=0;i<_2.length;i++){this.removeChildrenFromNodeIndex(_2[i]);delete this.nodeIndex[_2[i][this.idField]]}}
+,isc.A.removeList=function isc_Tree_removeList(_1){var _2=false;for(var _3=_1.length-1,i=_3;i>=0;i--){if(this.remove(_1[i],true))_2=true}
+if(_2){this.$736(true);this.dataChanged()}
+return _2}
+,isc.A.$76j=function isc_Tree__removeFromLevelCache(_1,_2){if(!this.indexByLevel)return;_2=_2||this.getLevel(_1)-1;var _3=this.getChildren(_1);if(_3){for(var i=0;i<_3.length;i++){this.$76j(_3[i],_2+1)}}
+if(this.$76h[_2]){var _5=this.$76h[_2];for(var i=0;i<_5.length;i++){if(_5[i]==_1){_5.splice(i,1);break}}}}
+,isc.A.getLoadState=function isc_Tree_getLoadState(_1){if(!_1)return null;if(!_1.$27g)return this.defaultLoadState;return _1.$27g}
+,isc.A.isLoaded=function isc_Tree_isLoaded(_1){var _2=this.getLoadState(_1);return(_2==isc.Tree.LOADED||_2==isc.Tree.LOADING)}
+,isc.A.setLoadState=function isc_Tree_setLoadState(_1,_2){_1.$27g=_2}
+,isc.A.loadRootChildren=function isc_Tree_loadRootChildren(_1){this.loadChildren(this.root,_1)}
+,isc.A.loadChildren=function isc_Tree_loadChildren(_1,_2){if(!_1)_1=this.root;this.setLoadState(_1,isc.Tree.LOADED);if(_2){this.fireCallback(_2,"node",[_1],this)}}
+,isc.A.unloadChildren=function isc_Tree_unloadChildren(_1,_2){if(this.isLeaf(_1))return;var _3;if(_2==isc.Tree.LEAVES_ONLY){_3=this.getLeaves(_1);_1[this.childrenProperty]=this.getFolders(_1);this.setLoadState(_1,isc.Tree.FOLDERS_LOADED)}else{_3=_1[this.childrenProperty];_1[this.childrenProperty]=[];this.setLoadState(_1,isc.Tree.UNLOADED)}
+if(_3){for(var i=0;i<_3.length;i++){var _1=_3[i];delete this.nodeIndex[_1[this.idField]]}}
+this.$736(true);this.dataChanged()}
+,isc.A.reloadChildren=function isc_Tree_reloadChildren(_1,_2){this.unloadChildren(_1,_2);this.loadChildren(_1,_2)}
+,isc.A.$736=function isc_Tree__clearNodeCache(_1){if(_1)this.$737=null;this.$27m=null}
+,isc.A.isOpen=function isc_Tree_isOpen(_1){return _1!=null&&!!_1[this.openProperty]}
+,isc.A.getOpenFolders=function isc_Tree_getOpenFolders(_1){if(_1==null)_1=this.root;var _2=this.getDescendantFolders(_1,new Function("node","return node."+this.openProperty));if(this.isOpen(_1))_2.add(_1);return _2}
+,isc.A.getOpenFolderPaths=function isc_Tree_getOpenFolderPaths(_1){var _2=this.getOpenFolders(_1);for(var i=0;i<_2.length;i++){_2[i]=this.getPath(_2[i])}
+return _2}
+,isc.A.changeDataVisibility=function(node,newState,callback){if(this.isLeaf(node))return false;node[this.openProperty]=newState;this.$736();if(newState&&!this.isLoaded(node)){this.loadChildren(node,callback)}}
+,isc.A.toggleFolder=function isc_Tree_toggleFolder(_1){this.changeDataVisibility(_1,!this.isOpen(_1))}
+,isc.A.openFolder=function isc_Tree_openFolder(_1,_2){if(_1==null)_1=this.root;if(!this.isOpen(_1)){this.changeDataVisibility(_1,true,_2)}}
+,isc.A.openFolders=function isc_Tree_openFolders(_1){for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3==null)continue;if(isc.isA.String(_3))_3=this.find(_3);if(_3!=null){this.openFolder(_3)}}}
+,isc.A.closeFolder=function isc_Tree_closeFolder(_1){if(this.isOpen(_1)){this.changeDataVisibility(_1,false)}}
+,isc.A.closeFolders=function isc_Tree_closeFolders(_1){for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3==null)continue;if(isc.isA.String(_3))_3=this.find(_3);if(_3!=null){this.closeFolder(_3)}}}
+,isc.A.openAll=function isc_Tree_openAll(_1){if(!_1)_1=this.root;var _2=this.getDescendants(_1,isc.Tree.FOLDERS_ONLY);for(var i=0,_4=_2.length;i<_4;i++){if(!this.isOpen(_2[i])){this.changeDataVisibility(_2[i],true)}}
+this.changeDataVisibility(_1,true)}
+,isc.A.closeAll=function isc_Tree_closeAll(_1){if(!_1)_1=this.root;var _2=this.getDescendants(_1,isc.Tree.FOLDERS_ONLY);for(var i=0,_4=_2.length;i<_4;i++){if(this.isOpen(_2[i])){this.changeDataVisibility(_2[i],false)}}
+if(!(_1==this.root&&this.showRoot==false))this.changeDataVisibility(_1,false)}
+,isc.A.getOpenList=function isc_Tree_getOpenList(_1,_2,_3,_4,_5,_6,_7){if(!_1)_1=this.root;if(_3==null)_3=this.$27i;if(_4==null)_4=this.sortDirection;if(_6==null)_6=this.$45g;if(this.isLeaf(_1)){if(_1==this.root)return[];return null}
+var _8=[];if(_2!=isc.Tree.LEAVES_ONLY)_8[_8.length]=_1;if(!_7&&!this.isOpen(_1))return _8;var _9=this.getChildren(_1,_2,_3,_4,_5,_6);for(var i=0,_11=_9.length,_12;i<_11;i++){_12=_9[i];if(!_12){continue}
+var _13=_12[this.childrenProperty];if(_13&&_13.length){_8=_8.concat(this.getOpenList(_12,_2,_3,_4,_5,_6,_7))}else{if(_2!=isc.Tree.FOLDERS_ONLY){_8[_8.length]=_12}}}
+if(!this.showRoot&&_8[0]==this.root){_8=_8.slice(1,_8.length)}
+return _8}
+,isc.A.$27l=function isc_Tree__getOpenList(){if(!this.$27m||!this.cacheOpenList){this.$27m=this.getOpenList(this.root,this.openDisplayNodeType,this.$27i,this.sortDirection,this.openListCriteria)}
+return this.$27m}
+,isc.A.getNodeList=function isc_Tree_getNodeList(){if(!this.$737||!this.cacheAllList){this.$737=this.getAllNodes(this.root)}
+return this.$737}
+,isc.A.getAllNodes=function isc_Tree_getAllNodes(_1){return this.getOpenList(_1,null,null,null,null,null,true)}
+,isc.A.getLength=function isc_Tree_getLength(){return this.$27l().length}
+,isc.A.get=function isc_Tree_get(_1){return this.$27l()[_1]}
+,isc.A.getRange=function isc_Tree_getRange(_1,_2){return this.$27l().slice(_1,_2)}
+,isc.A.indexOf=function isc_Tree_indexOf(_1,_2,_3){return this.$27l().indexOf(_1,_2,_3)}
+,isc.A.lastIndexOf=function isc_Tree_lastIndexOf(_1,_2,_3){return this.$27l().lastIndexOf(_1,_2,_3)}
+,isc.A.getAllItems=function isc_Tree_getAllItems(){return this.$27l()}
+,isc.A.sortByProperty=function isc_Tree_sortByProperty(_1,_2,_3,_4){if(_1!=null)this.sortProp=_1;if(_2!=null)this.sortDirection=_2;if(_3&&isc.isA.Function(_3)){this.$27i=_3}else{this.$27n()}
+this.$45g=_4;this.$736(true);this.dataChanged()}
+,isc.A.$27n=function isc_Tree__makeOpenNormalizer(){var _1=this.sortProp,_2=this.sortDirection,_3=this.separateFolders!=false;var _4=isc.SB.create();_4.append("var __tree__ = ",this.getID(),";\rvar value = '';");_4.append("if (__tree__ == null) return;\r");if(_3){var _5,_6;if(this.sortFoldersBeforeLeaves){_5="0:";_6="1:"}else{_5="1:";_6="0:"}
+_4.append("value+=(__tree__.isFolder(obj) ? '"+_5+"' : '"+_6+"');")}
+if(_1&&_1!="title"){_4.append("var prop = obj['",_1,"'];","if (isc.isA.Number(prop)) {","if (prop > 0) prop = '1' + prop.stringify(12,true);","else {","prop = 999999999999 + prop;","prop = '0' + prop.stringify(12,true);","}","} else if (isc.isA.Date(prop)) prop = prop.getTime();","if (prop != null) value += prop + ':';")}
+if(_1){_4.append("var title = __tree__.getTitle(obj);","if (isc.isA.Number(title)) {","if (title > 0) title = '1' + title.stringify(12,true);","else {","title = 999999999999 + prop;","title = '0' + title.stringify(12,true);","}","} else if (isc.isA.Date(title)) title = title.getTime();","if (title != null) {title = title + ''; value += title.toLowerCase()}")}
+_4.append("return value;");this.addMethods({$27i:new Function("obj,property",_4.toString())})}
+,isc.A.loadSubtree=function isc_Tree_loadSubtree(_1,_2,_3){if(!_1)_1=this.getRoot();if(_2==null)_2=this.loadBatchSize;this.$27o=_3?2:1;var _4=0,_5=1;while(_4<_2){var _6=this.$27p(_2,_1,_4,_5++);if(_6==0)break;_4+=_6}
+this.$27o=null;if(_4>0)this.$736(true)}
+,isc.A.loadingBatch=function isc_Tree_loadingBatch(_1){if(_1)return this.$27o==2;else return this.$27o}
+,isc.A.$27p=function isc_Tree__loadToDepth(_1,_2,_3,_4){var _5=0;if(!this.isOpen(_2)){if(!this.isLoaded(_2))this.loadChildren(_2);if(this.isLoaded(_2)){if(this.openFolder(_2)===false)return _5}
+if(_2.children){_5+=_2.children.length;_3+=_2.children.length}}
+var _6=_2.children;if(_3>=_1||_4==0||_6==null)return _5;for(var i=0;i<_6.length;i++){var _8=_6[i];var _9=this.$27p(_1,_8,_3,_4-1);_5+=_9;_3+=_9;if(_3>=_1)return _5}
+return _5}
+,isc.A.getFilteredTree=function isc_Tree_getFilteredTree(_1,_2,_3){_2=_2||isc.Tree.STRICT;var _3=this.dataSource||_3;if(!_3){isc.logWarn("Cannot apply filter to Tree without dataSource");return null}
+var _4=this.duplicate(true,true);_4.$866(_1,_2,_3,_4.getRoot());return _4}
+,isc.A.$866=function isc_Tree__filterChildren(_1,_2,_3,_4){if(_4.children==null||_4.children.length==0)return false;var _5=_4.children,_6=false;if(isc.isA.String(_3))_3=isc.DS.get(_3);for(var i=_5.length-1;i>=0;i--){var _8=_5[i],_9=false;if(_8.children!=null&&_8.children.length>0){_9=this.$866(_1,_2,_3,_8)}
+_6=_6||_9;if(!_9||_2==isc.Tree.STRICT){var _10=_3.applyFilter([_8],_1);if(_10!=null&&_10.length>0){_6=true}else{this.remove(_8,true)}}}
+return _6}
+);isc.B._maxIndex=isc.C+98;isc.A=isc.Tree;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.findChildrenProperty=function isc_c_Tree_findChildrenProperty(_1,_2){if(!isc.isAn.Object(_1))return;if(!_2)_2="any";var _3=(_2=="any"),_4=(_2=="object"),_5=(_2=="array"),_6=(_2=="objectArray");for(var _7 in _1){var _8=_1[_7];if(isc.isAn.Object(_8)){if(_3)return _7;if(isc.isAn.Array(_8)){if(isc.isAn.Object(_8[0]))return _7;if(!_4&&!_6)return _7}else{if(_4)return _7}}}}
+,isc.A.discoverTree=function isc_c_Tree_discoverTree(_1,_2,_3){if(!_2)_2={};var _4=_2.childrenMode||"any";var _5=_2.scanMode||"branch";var _6=_2.tieMode||"node";var _7=_2.newChildrenProperty||isc.Tree.getInstanceProperty("childrenProperty"),_8=_2.typeProperty||"nodeType",_9=_2.nameProperty||"name";if(!isc.isAn.Array(_1))_1=[_1];var _10;if(_5=="level"||_5=="branch"){var _11={};for(var i=0;i<_1.length;i++){var _13=_1[i],_14=null;if(_13.$72r)continue;_14=this.findChildrenProperty(_13,_4);if(_14==null)continue;_11[_14]=(_11[_14]||0);_11[_14]++}
+var _15=isc.getValues(_11),_16=isc.getKeys(_11);if(_16.length==0){return}else if(_16.length==1){_10=_16[0]}else if(_6=="node"){}else if(_6=="stop"){return}else{var _17=_15.max(),_18=_15.indexOf(_17);_10=_16[_18]}}
+var _19=[];for(var i=0;i<_1.length;i++){var _13=_1[i];var _20=_10;if(_13.$72r)continue;if(!_20){_20=this.findChildrenProperty(_13,_4)}
+if(_20==null)continue;var _21=_13[_20];if(_21!=null&&!isc.isAn.Array(_21))_21=[_21];else if(_21==null)_21=[];_13[_7]=_21;for(var j=0;j<_21.length;j++){var _23=_21[j];if(isc.isA.String(_23)){_21[j]=_23={name:_23,$72r:true}}
+_23[_8]=_20}
+if(_5=="level"){_19.addAll(_21)}else{this.discoverTree(_21,_2,_20)}}
+if(_5=="level"&&_19.length>0)this.discoverTree(_19,_2)}
+,isc.A.getCleanNodeData=function isc_c_Tree_getCleanNodeData(_1,_2,_3,_4){if(_1==null)return null;var _5=[],_6=false;if(!isc.isAn.Array(_1)){_1=[_1];_6=true}
+for(var i=0;i<_1.length;i++){var _8=_1[i],_9={};if(_4==null){var _10=_8.$42c;if(_10)_4=window[_10]}
+for(var _11 in _8){if((_4!=null&&_11==_4.parentProperty)||_11=="$27g"||_11=="$42c"||_11=="__ref"||_11.startsWith("_isOpen_")||_11.startsWith("_isFolder_")||_11.startsWith("$399")||_11=="$40a"||_11.startsWith("_selection_")||(_2==false&&_4&&_11==_4.childrenProperty))
+{continue}
+_9[_11]=_8[_11];if(_3&&_4&&_11==_4.childrenProperty&&isc.isAn.Array(_9[_11]))
+{_9[_11]=_4.getCleanNodeData(_9[_11],true,true,_4)}}
+_5.add(_9)}
+if(_6)return _5[0];return _5}
+);isc.B._maxIndex=isc.C+3;isc.ClassFactory.defineClass("Selection");isc.A=isc.Selection.getPrototype();isc.A.enabledProperty="enabled";isc.A.canSelectProperty="canSelect";isc.A.cascadeSelection=false;isc.A.$q7=true;isc.A=isc.Selection;isc.A.NONE="none";isc.A.SINGLE="single";isc.A.MULTIPLE="multiple";isc.A.SIMPLE="simple";isc.A.$24e=0;isc.A=isc.Selection.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$74f="up";isc.A.$74g="down";isc.A.selectionRangeNotLoadedMessage="Can't select that many records at once.<br><br>"+"Please try working in smaller batches.";isc.B.push(isc.A.init=function isc_Selection_init(){if(!this.selectionProperty)this.selectionProperty="_selection_"+isc.Selection.$24e++;this.partialSelectionProperty="$74h"+this.selectionProperty;this.setData((this.data?this.data:[]))}
+,isc.A.destroy=function isc_Selection_destroy(){if(this.data)this.ignoreData(this.data);delete this.data}
+,isc.A.setData=function isc_Selection_setData(_1){if(this.data!=null)this.ignoreData(this.data);this.data=_1;if(this.data!=null)this.observeData(this.data);this.markForRedraw()}
+,isc.A.observeData=function isc_Selection_observeData(_1){this.observe(_1,"dataChanged","observer.dataChanged()");if(_1.dataArrived)this.observe(_1,"dataArrived","observer.dataChanged()")}
+,isc.A.ignoreData=function isc_Selection_ignoreData(_1){if(!_1)return;if(this.isObserving(_1,"dataChanged"))this.ignore(_1,"dataChanged");if(this.isObserving(_1,"dataArrived"))this.ignore(_1,"dataArrived")}
+,isc.A.dataChanged=function isc_Selection_dataChanged(){this.markForRedraw()}
+,isc.A.markForRedraw=function isc_Selection_markForRedraw(){this.$q7=true}
+,isc.A.isSelected=function isc_Selection_isSelected(_1){if(this.$q7){this.cacheSelection()}
+if(_1==null)return false;if(isc.isAn.XMLNode(_1))return"true"==_1.getAttribute(this.selectionProperty);return!!_1[this.selectionProperty]}
+,isc.A.isPartiallySelected=function isc_Selection_isPartiallySelected(_1){if(this.$q7)this.cacheSelection();if(_1==null)return false;if(isc.isAn.XMLNode(_1))return"true"==_1.getAttribute(this.partialSelectionProperty);return!!_1[this.partialSelectionProperty]}
+,isc.A.anySelected=function isc_Selection_anySelected(){return this.getSelection().length>0}
+,isc.A.multipleSelected=function isc_Selection_multipleSelected(){return this.getSelection().length>1}
+,isc.A.getSelection=function isc_Selection_getSelection(_1){if(this.$q7){if(this.$89z)this.$89z=false;this.cacheSelection()}
+var _2=this.$27q;if(_1==true&&_2!=null&&_2.length>0){var _3=this.$27q;_2=[];for(var i=0;i<_3.length;i++){var _5=_3[i];if(!this.isPartiallySelected(_5)){_2[_2.length]=_5}}}
+return _2}
+,isc.A.getSelectedRecord=function isc_Selection_getSelectedRecord(){var _1=this.getSelection();if(_1&&_1.length>0)return _1[0]}
+,isc.A.cacheSelection=function isc_Selection_cacheSelection(){if(this.$89z||this.$890||this.$92o)return;this.$27q=[];var _1=this.getItemList(),_2=isc.isA.ResultSet!=null&&isc.isA.ResultSet(_1),_3=_1.getLength();if(_2&&!_1.lengthIsKnown()){this.$q7=false;return}
+this.$89z=true;var _4=false;for(var i=0;i<_3;i++){if(_2&&!_1.rowIsLoaded(i))continue;var _6=_1.get(i);if(_6!=null&&this.isSelected(_6)){if(this.cascadeSelection&&!this.isPartiallySelected(_6)){this.setSelected(_6,true,null,true);_4=true}
+if(!_4){this.$27q[this.$27q.length]=_6}}}
+if(_4){this.$27q=[];for(var i=0;i<_3;i++){if(_2&&!_1.rowIsLoaded(i))continue;var _6=_1.get(i);if(_6!=null&&this.isSelected(_6)){this.$27q[this.$27q.length]=_6}}}
+this.$89z=false;this.$q7=false}
+,isc.A.setSelected=function isc_Selection_setSelected(_1,_2,_3,_4){if(_1==null)return false;if(this.data==null||this.data.destroyed)return false;if(_1[this.enabledProperty]==false)return false;if(_1[this.canSelectProperty]==false)return false;var _5=this.$890;this.$890=true;var _6=this.selectionProperty,_7=this.partialSelectionProperty,_8=this.data.childrenProperty||"children",_9=isc.isAn.XMLNode(_1),_10=(_9?_1.getAttribute(_7):_1[_7]);if(_2==null)_2=true;if(this.cascadeSelection&&!this.useRemoteSelection){if(_3==this.$74f){var _11=false,_12=_1[_8]?_1[_8].length:0;for(var i=0;i<_12;i++){var _14=_1[_8].get(i),_15=isc.isAn.XMLNode(_14),_16=(_15?_14.getAttribute(_7):_14[_7]);if(_16||(_2&&!this.isSelected(_14))||(!_2&&this.isSelected(_14)))
+{_11=true;break}}
+if(_9){_1.setAttribute(_7,_11+"")}else{_1[_7]=_11}
+if(_2!=_11)_2=true}else if(_1[_8]&&_1[_8].length>0){if(_9){_1.removeAttribute(_7)}else{delete _1[_7]}}}
+var _17=_9?_1.getAttribute(_6):_1[_6];if(_17==null)_17=false;if(_9){_1.setAttribute(_6,(_2==true)+"")}else{_1[_6]=_2}
+this.lastSelectionItem=_1;this.lastSelectionState=_2;this.lastSelectionPreviousState=_17;this.lastSelectionPartialValue=_11;this.lastSelectionPreviousPartialValue=_10;var _18=(_9?_1.getAttribute(_7):_1[_7]);var _19=true;if(_2==_17&&_18==_10){_19=false}
+if(!_4&&_19==false){if(!_5)this.$890=false;return false}
+this.markForRedraw();if(_19&&this.target&&this.target.selectionChange){this.target.selectionChange(_1,_2)}
+if(this.cascadeSelection&&!this.useRemoteSelection)
+{var _20=_1,_21=_2,_22=_17,_23=_11,_24=_10;var _25=false;if(this.cascadeSyncOnly==null){_25=true;this.cascadeSyncOnly=!_19}
+if(_3!=this.$74f&&!_9&&_1[_8]&&_1[_8].length>0)
+{this.selectList(_1[_8],_2,this.$74g)}
+if(_19||_25){if(_3!=this.$74g&&isc.isA.Tree(this.data)){var _26=this.data.getParent(_1);if(_26){this.setSelected(_26,_2,this.$74f)}}}
+this.lastSelectionItem=_20;this.lastSelectionState=_21;this.lastSelectionPreviousState=_22;this.lastSelectionPartialValue=_23;this.lastSelectionPreviousPartialValue=_24;if(_25){this.cascadeSyncOnly=null}}
+if(!_5)this.$890=false;return true}
+,isc.A.select=function isc_Selection_select(_1){return this.setSelected(_1,true)}
+,isc.A.deselect=function isc_Selection_deselect(_1){return this.setSelected(_1,false)}
+,isc.A.selectSingle=function isc_Selection_selectSingle(_1){this.deselectAll();return this.select(_1)}
+,isc.A.selectList=function isc_Selection_selectList(_1,_2){if(_2==null)_2=true;if(!_1)return false;this.cacheSelection();var _3=this.$27q;var _4=_1.getLength(),_5=[],_6=[];for(var i=0;i<_4;i++){var _8=_1.get(i),_9=this.isSelected(_8);if(_9==_2)continue;_5[_5.length]=_8;if(!_2){_6[_5.length-1]=_3.indexOf(_8)}}
+var _10=this.$92o;this.$92o=true;var _11=false,_4=_5.length;for(var i=0;i<_4;i++){var _8=_5[i];if(_2){_3[_3.length]=_8}else{_3.removeAt(_6[i])}
+_11=this.setSelected(_8,_2)||_11}
+this.$92o=_10;this.cacheSelection();return _11}
+,isc.A.deselectList=function isc_Selection_deselectList(_1){this.selectList(_1,false)}
+,isc.A.selectAll=function isc_Selection_selectAll(){return this.selectRange(0,this.getItemList().getLength())}
+,isc.A.deselectAll=function isc_Selection_deselectAll(){return this.deselectList(this.getSelection())}
+,isc.A.selectItem=function isc_Selection_selectItem(_1){return this.selectRange(_1,_1+1)}
+,isc.A.deselectItem=function isc_Selection_deselectItem(_1){return this.deselectRange(_1,_1+1)}
+,isc.A.selectRange=function isc_Selection_selectRange(_1,_2,_3){if(_3==null)_3=true;var _4=this.data;if(isc.isA.ResultSet!=null&&isc.isA.ResultSet(_4)&&!_4.rangeIsLoaded(_1,_2))
+{isc.warn(this.selectionRangeNotLoadedMessage);return false}
+return this.selectList(_4.getRange(_1,_2),_3)}
+,isc.A.deselectRange=function isc_Selection_deselectRange(_1,_2){return this.selectRange(_1,_2,false)}
+,isc.A.selectOnMouseDown=function isc_Selection_selectOnMouseDown(_1,_2){var _3=_1.selectionType||isc.Selection.MULTIPLE;if(_3==isc.Selection.NONE)return false;this.startRow=this.lastRow=_2;this.logDebug("selectOnMouseDown: recordNum: "+_2);var _4=this.data.get(_2),_5=this.isSelected(_4),_6=this.getSelection();if(Array.isLoading(_4))return false;this.deselectRecordOnMouseUp=false;this.deselectOthersOnMouseUp=false;var _7=(isc.Browser.isMac?isc.EventHandler.metaKeyDown():isc.EventHandler.ctrlKeyDown()),_8=isc.EH.shiftKeyDown();if(_3==isc.Selection.SINGLE){if(_7&&_5)this.deselect(_4);else if(!_5)this.selectSingle(_4);return true}else if(_8){if(_6.length==0){this.select(_4);return true}else{var _9=this.data,_10=_9.indexOf(_6[0]),_11=_9.indexOf(_6.last());if(_2>=_11){this.selectRange(_10,_2+1)}else if(_2<=_10){this.selectRange(_2,_11+1)}else{this.selectRange(_10,_2+1);this.deselectRange(_2+1,_11+1)}
+return true}}else if(_3==isc.Selection.SIMPLE){if(!_5){this.select(_4);return true}else{this.deselectRecordOnMouseUp=true;return false}}else if(_7){this.setSelected(_4,!_5);return true}else{if(!_5){this.selectSingle(_4);return true}else if(isc.EventHandler.rightButtonDown()){this.deselectOnDragMove=true;return false}else{if(this.dragSelection){if(this.simpleDeselect){this.deselectAll();this.selectOriginOnDragMove=true;return true}
+this.selectSingle(_4);return true}else{if(this.simpleDeselect){this.deselectAllOnMouseUp=true}else{this.deselectOthersOnMouseUp=(_6.length>1)}
+return false}}}}
+,isc.A.selectOnDragMove=function isc_Selection_selectOnDragMove(_1,_2){var _3=this.startRow,_4=this.lastRow;if(_2<0){this.logWarn("selectOnDragMove: got negative coordinate: "+_2);return}
+if(_2==_4)return;if(this.selectOriginOnDragMove){this.select(this.data.getItem(_3));this.selectOriginOnDragMove=false}else if(this.deselectOnDragMove||this.deselectAllOnMouseUp||this.deselectOthersOnMouseUp){this.selectSingle(this.data.getItem(_3));this.deselectAllOnMouseUp=this.deselectOthersOnMouseUp=this.deselectOnDragMove=false}
+if((_2>_3&&_3>_4)||(_4>_3&&_3>_2))
+{this.deselectAll();if(_3>_2){this.selectRange(_2,_3+1)}else{this.selectRange(_3,_2+1)}}else if(_3>=_4&&_4>_2){this.selectRange(_2,_4)}else if(_3>=_2&&_2>_4){this.deselectRange(_4,_2)}else if(_3<=_2&&_2<_4){this.deselectRange(_2+1,_4+1)}else if(_3<=_4&&_4<_2){this.selectRange(_4,_2+1)}else{this.logWarn("dragMove case not handled: lastRow: "+_4+", currRow: "+_2+", startRow "+_3)}
+this.lastRow=_2}
+,isc.A.selectOnMouseUp=function isc_Selection_selectOnMouseUp(_1,_2){if(_1.selectionType==isc.Selection.NONE)return false;this.logDebug("selectOnMouseUp: recordNum: "+_2);if(this.deselectOthersOnMouseUp){this.selectSingle(this.data.getItem(_2));this.deselectOthersOnMouseUp=false;return true}else if(this.deselectRecordOnMouseUp){this.deselect(this.data.getItem(_2));this.deselectRecordOnMouseUp=false;return true}else if(this.deselectAllOnMouseUp){this.deselectAll();this.deselectAllOnMouseUp=false;return true}else
+return false}
+,isc.A.getItemList=function isc_Selection_getItemList(){if(this.data&&isc.isA.Tree(this.data))return this.data.getNodeList();return(this.data?this.data:[])}
+);isc.B._maxIndex=isc.C+30;isc.ClassFactory.defineClass("DetailViewer","Canvas","DataBoundComponent");isc.A=isc.DetailViewer.getPrototype();isc.A.dataFetchMode="basic";isc.A.dataArity="either";isc.A.fieldIdProperty="name";isc.A.recordsPerBlock=1;isc.A.blockSeparator="<br><br>";isc.A.showEmptyField=true;isc.A.emptyCellValue=" ";isc.A.labelPrefix="";isc.A.labelSuffix=":";isc.A.valueAlign="left";isc.A.wrapValues=true;isc.A.useInnerWidth=true;isc.A.clipValues=false;isc.A.styleName="detailViewer";isc.A.blockStyle="detailBlock";isc.A.labelStyle="detailLabel";isc.A.cellStyle="detail";isc.A.headerStyle="detailHeader";isc.A.separatorStyle="detail";isc.A.cellPadding=3;isc.A.showEmptyMessage=true;isc.A.emptyMessage="No items to display.";isc.A.emptyMessageStyle="normal";isc.A.loadingMessage=" ${loadingImage}";isc.A.loadingMessageStyle="normal";isc.A.defaultHeight=35;isc.A.showLabel=true;isc.A=isc.DetailViewer.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$g4="date";isc.B.push(isc.A.initWidget=function isc_DetailViewer_initWidget(){this.Super("initWidget",arguments);if(this.fieldState!=null)this.setFieldState(this.fieldState);else this.setFields(this.fields)}
+,isc.A.setData=function isc_DetailViewer_setData(_1){if(this.data)this.ignore(this.data,"dataChanged");this.data=_1;if(this.data&&this.data.dataChanged){this.observe(this.data,"dataChanged","observer.dataChanged()")}
+this.markForRedraw("new data")}
+,isc.A.dataChanged=function isc_DetailViewer_dataChanged(){this.applyHilites();this.markForRedraw()}
+,isc.A.getData=function isc_DetailViewer_getData(){return this.data}
+,isc.A.getFields=function isc_DetailViewer_getFields(){return this.fields}
+,isc.A.getInnerHTML=function isc_DetailViewer_getInnerHTML(){var _1=this.getData();if(this.fields==null||this.fields.length==0){return"Note: you must define detailViewer.fields to specify what to display!"}
+if(isc.ResultSet!=null&&isc.isA.ResultSet(_1)&&!_1.lengthIsKnown()){_1.get(0);return this.loadingMessageHTML()}
+if(_1==null||(_1.getLength&&_1.getLength()==0)){return this.emptyMessageHTML()}
+if(!isc.isA.List(_1))_1=[_1];if(Array.isLoading(_1.get(0))&&this.isOffline()){return this.emptyMessageHTML()}
+if(_1.getLength()==1||this.recordsPerBlock=="*"){return this.getBlockHTML(_1)}else{var _2=isc.StringBuffer.newInstance();for(var _3=0;_3<_1.getLength();_3+=this.recordsPerBlock){_2.append(this.getBlockHTML(_1.getRange(_3,_3+this.recordsPerBlock)),this.blockSeparator)}
+return _2.toString()}}
+,isc.A.getBlockHTML=function isc_DetailViewer_getBlockHTML(_1){var _2=_1.getLength();var _3="<TABLE BORDER=0 CELLSPACING=0 CLASS="+this.blockStyle+" WIDTH="+(this.useInnerWidth&&!this.isPrinting?this.getInnerWidth():"'100%'")+" CELLPADDING="+this.cellPadding+(this.clipValues?" STYLE='table-layout:fixed'":"");_3+=">";var _4=this.fields;for(var _5=0,_6=_4.length;_5<_6;_5++){var _7=_4[_5];if(!_7||_7.hidden||_7.visible==false)continue;if(_7.showIf){if(!isc.isA.Function(_7.showIf)){isc.Func.replaceWithMethod(_7,"showIf","viewer,valueList")}
+if(_7.showIf(this,_1)==false)continue}
+var _8=_7.type?_7.type:"";if(_8!="separator"&&_8!="header"&&!this.showEmptyField){var _9=true;for(var i=0;i<_1.getLength();i++){var _11=_1.get(i)[_7[this.fieldIdProperty]]
+if(!(_11==null||_11=="")){_9=false;break}}
+if(_9)continue}
+if(_7.output){if(!isc.isA.Function(_7.output)){isc.Func.replaceWithMethod(_7,"output","fieldNum,field,valueList")}
+_3+=_7.output(_5,_7,_1)}else{_3+=this.outputItem(_5,_7,_1)}}
+_3+="</TABLE>";return _3}
+,isc.A.outputItem=function isc_DetailViewer_outputItem(_1,_2,_3){var _4=(_2.type?_2.type:"value"),_5="output_"+_4,_6="";if(!this[_5])_5="output_value";_6+="<TR"+(this.rowClass!=null?" CLASS='"+this.rowClass+"'":"")+">";_6+=this[_5](_1,_2,_3);_6+="</TR>\r";return _6}
+,isc.A.output_blob=function isc_DetailViewer_output_blob(_1,_2,_3){return this.output_binary(_1,_2,_3)}
+,isc.A.output_upload=function isc_DetailViewer_output_upload(_1,_2,_3){return this.output_binary(_1,_2,_3)}
+,isc.A.output_binary=function isc_DetailViewer_output_binary(_1,_2,_3){var _4="<TD WIDTH=10% CLASS='"+(this.isPrinting?this.printLabelStyle||this.labelStyle:this.labelStyle)+"' ALIGN=RIGHT"+(this.wrapLabel?">":" NOWRAP><NOBR>")+this.labelPrefix+(_2.title?_2.title:_2[this.fieldIdProperty])+this.labelSuffix+"<\/NOBR><\/TD>";for(var i=0;i<_3.getLength();i++){var _6=_3.get(i),_7=this.getData().indexOf(_6),_8=_2.nativeName||_2.name,_9=_6[_8+"_filename"],_10=isc.Canvas.imgHTML("[SKIN]actions/view.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='"+this.getID()+".viewRow("+_7+")'"),_11=isc.Canvas.imgHTML("[SKIN]actions/download.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='"+this.getID()+".downloadRow("+_7+")'"),_12=_10+" "+_11+" "+_9;_4+="<TD CLASS='"+this.getCellStyle(_12,_2,_6,this)+"'>"+_12+"<\/TD>"}
+return _4}
+,isc.A.viewRow=function isc_DetailViewer_viewRow(_1){isc.DS.get(this.dataSource).viewFile(this.getData().get(_1))}
+,isc.A.downloadRow=function isc_DetailViewer_downloadRow(_1){isc.DS.get(this.dataSource).downloadFile(this.getData().get(_1))}
+,isc.A.output_value=function isc_DetailViewer_output_value(_1,_2,_3){var _4;if(this.showLabel){_4="<TD WIDTH=10% CLASS='"+(this.isPrinting?this.printLabelStyle||this.labelStyle:this.labelStyle)+"' ALIGN=RIGHT"+(this.wrapLabel?">":" NOWRAP><NOBR>")+this.labelPrefix+(_2.title?_2.title:_2[this.fieldIdProperty])+this.labelSuffix+"<\/NOBR><\/TD>"}else{_4=""}
+if(_2.valueMap&&isc.isA.String(_2.valueMap))
+_2.valueMap=this.getGlobalReference(_2.valueMap);for(var i=0;i<_3.getLength();i++){var _6=_3.get(i),_7;if(_2.type=="image"){var _8=isc.Canvas.getFieldImageDimensions(_2,_6);var _9=this.getCellValue(_6,_2),_10=_2.imageURLPrefix||_2.baseURL||_2.imgDir;_7=this.imgHTML(_9,_8.width,_8.height,null,_2.extraStuff,_10,_2.activeAreaHTML)}else{_7=this.getCellValue(_6,_2)}
+var _11=this.getRawValue(_6,_2);var _12;if(_2.getCellStyle){_12=_2.getCellStyle(_11,_2,_6,this)}else{_12=(this.getCellStyle(_11,_2,_6,this)||this.cellStyle)}
+var _13=" style='";if(this.clipValues)_13+="overflow:hidden;";_13+="text-align:"+this.valueAlign;if(this.getCellCSSText){var _14=this.getCellCSSText(_11,_2,_6,this);if(_14!=null)_13+=isc.semi+_14}
+_13+="'";_4+="<TD CLASS='"+_12+"'"+_13+(this.wrapValues?">":" NOWRAP><NOBR>")+_7+(this.wrapValues?"<\/NOBR>":"")+"<\/TD>"}
+return _4}
+,isc.A.getRawValue=function isc_DetailViewer_getRawValue(_1,_2){if(!_1||!_2)return null;if(_2.dataPath)return isc.Canvas.$70o(_2.dataPath,_1);return _1[_2.name]}
+,isc.A.getCellCSSText=function isc_DetailViewer_getCellCSSText(_1,_2,_3,_4){return this.getRecordHiliteCSSText(_3,"",_2)}
+,isc.A.getCellStyle=function isc_DetailViewer_getCellStyle(_1,_2,_3,_4){if(_2){if(_2.getCellStyle)return _2.getCellStyle(_1,_2,_3,_4);if(this.isPrinting&&_2.printCellStyle){return _2.printCellStyle}
+if(_2.cellStyle){return _2.cellStyle}}
+return(this.isPrinting&&this.printCellStyle!=null)?this.printCellStyle:this.cellStyle}
+,isc.A.getSelectedRecord=function isc_DetailViewer_getSelectedRecord(){return this.data.get(0)}
+,isc.A.getCellValue=function isc_DetailViewer_getCellValue(_1,_2){var _3=this.getRawValue(_1,_2);if(isc.isA.String(_2.formatCellValue)){_2.formatCellValue=isc.Func.expressionToFunction("value,record,field,viewer",_2.formatCellValue)}
+if(_2.getCellValue!=null){if(isc.isA.String(_2.getCellValue)){_2.getCellValue=isc.Func.expressionToFunction("value,record,field,viewer",_2.getCellValue)}
+_3=_2.getCellValue(_3,_1,_2,this);if(_2.formatCellValue)_3=_2.formatCellValue(_3,_1,_2,this)}else{if(_2.valueMap!=null)_3=isc.getValueForKey(_3,_2.valueMap);if(_2.formatCellValue)_3=_2.formatCellValue(_3,_1,_2,this);if(_3==null||isc.is.emptyString(_3))_3=this.emptyCellValue}
+if(_2.formatCellValue==null&&this.formatCellValue){_3=this.formatCellValue(_3,_1,_2)}else{_3=this.$17c(_1,_2,_3);var _4=_2.escapeHTML;if(_4==null)_4=_2.asHTML;if(_4)_3=_3.asHTML()}
+if(_2){if(_2.userFormula)_3=this.getFormulaFieldValue(_2,_1);else if(_2.userSummary)_3=this.getSummaryFieldValue(_2,_1);else if(_2.type=="imageFile"){if(_2.showFileInline!=false){if(!_1[_2[this.fieldIdProperty]+"$68c"]){var _5=isc.Canvas.getFieldImageDimensions(_2,_1),_6=this.getDataSource().streamFile(_1);_3=_1[_2[this.fieldIdProperty]+"$68c"]=this.imgHTML(_6,_5.width,_5.height)}else
+_3=_1[_2[this.fieldIdProperty]+"$68c"]}else{_3=this.getViewDownloadHTML(_2,_1)}}else if(_2.showFileInline==true){this.logWarn("getCellValue(): Unsupported field-type for showFileInline: "+_2.type)}}
+var _7=this.getFieldHilites(_1,_2);if(_7!=null)_3=this.applyHiliteHTML(_7,_3);return _3}
+,isc.A.getViewDownloadHTML=function isc_DetailViewer_getViewDownloadHTML(_1,_2){if(_2==null)return null;var _3=_1.nativeName||_1.name,_4=_2[_3+"_filename"];if(_4==null||isc.isA.emptyString(_4))return" ";var _5=isc.Canvas.imgHTML("[SKIN]actions/view.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='"+this.getID()+".viewFile("+_2+","+_1+")'");var _6=isc.Canvas.imgHTML("[SKIN]actions/download.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='alert('running');"+this.getID()+".downloadFile("+_2+","+_1+")'");return"<nobr>"+_5+" "+_6+" "+_4+"</nobr>"}
+,isc.A.viewFile=function isc_DetailViewer_viewFile(_1,_2){isc.DS.get(this.dataSource).viewFile(_1,_2.name)}
+,isc.A.downloadFile=function isc_DetailViewer_downloadFile(_1,_2){isc.DS.get(this.dataSource).downloadFile(_1,_2.name)}
+,isc.A.$17c=function isc_DetailViewer__formatDataType(_1,_2,_3){if(isc.isA.Date(_3)){if(this.$851(_2)){var _4=isc.SimpleType.inheritsFrom(_2.type,"time");_3=isc.Time.toTime(_3,this.$30o(_2),_4)}else{if(isc.SimpleType.inheritsFrom(_2.type,"date")&&!isc.SimpleType.inheritsFrom(_2.type,"datetime"))
+{_3=_3.toShortDate(this.$45i(_2),false)}else{_3=_3.toNormalDate(this.$45i(_2))}}}
+if(_2.$64!=null){_3=_2.$62.normalDisplayFormatter(_3,_2,this,_1)}
+return isc.iscToLocaleString(_3)}
+,isc.A.$851=function isc_DetailViewer__formatAsTime(_1){if(_1==null)return false;if(_1.dateFormatter==null&&_1.timeFormatter!=null)return true;if(_1.timeFormatter==null&&_1.dateFormatter!=null)return false;return isc.SimpleType.inheritsFrom(_1.type,"time")}
+,isc.A.$45i=function isc_DetailViewer__getDateFormatter(_1){if(_1.dateFormatter)return _1.dateFormatter;if(_1.displayFormat!=null&&isc.SimpleType.inheritsFrom(_1.type,"date")){return _1.displayFormat}
+if(this.datetimeFormatter!=null&&isc.SimpleType.inheritsFrom(_1.type,"datetime")){return this.datetimeFormatter}
+return this.dateFormatter}
+,isc.A.$30o=function isc_DetailViewer__getTimeFormatter(_1){if(_1.timeFormatter)return _1.timeFormatter;if(_1.displayFormat!=null&&isc.SimpleType.inheritsFrom(_1.type,"time")){return _1.displayFormat}
+return this.timeFormatter}
+,isc.A.getRecordIndex=function isc_DetailViewer_getRecordIndex(_1){var _2=this.Super('getRecordIndex',arguments);if(_2==-1)_2=0;return _2}
+,isc.A.output_header=function isc_DetailViewer_output_header(_1,_2,_3){return"<TD COLSPAN="+(_3.getLength()+1)+" CLASS='"+(this.isPrinting&&this.printHeaderStyle?this.printHeaderStyle:this.headerStyle)+"'>"+_2.value+"</TD>"}
+,isc.A.output_separator=function isc_DetailViewer_output_separator(_1,_2,_3){var _4=(_2.width==null?_2.defaultSeparatorWidth:_2.width),_5=(_2.height==null?_2.defaultSeparatorHeight:_2.height);return"<TD COLSPAN="+(_3.getLength()+1)+" CLASS='"+this.separatorStyle+"'>"+isc.Canvas.spacerHTML(_4,_5)+"</TD>"}
+,isc.A.getEmptyMessage=function isc_DetailViewer_getEmptyMessage(){return this.emptyMessage}
+,isc.A.getLoadingMessage=function isc_DetailViewer_getLoadingMessage(){return this.loadingMessage==null?" ":this.loadingMessage.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)})}
+,isc.A.emptyMessageHTML=function isc_DetailViewer_emptyMessageHTML(){if(this.isOffline()){if(!this.showOfflineMessage)return" "}else{if(!this.showEmptyMessage)return" "}
+return"<TABLE WIDTH=100%>"+"<TR><TD CLASS='"+this.emptyMessageStyle+"' ALIGN=CENTER><BR><BR>"+(this.isOffline()?this.offlineMessage:this.getEmptyMessage())+"<\/TD><\/TR><\/TABLE>"}
+,isc.A.loadingMessageHTML=function isc_DetailViewer_loadingMessageHTML(){return"<TABLE WIDTH=100%>"+"<TR><TD CLASS='"+this.loadingMessageStyle+"' ALIGN=CENTER><BR><BR>"+this.getLoadingMessage()+"<\/TD><\/TR><\/TABLE>"}
+,isc.A.setFieldState=function isc_DetailViewer_setFieldState(_1){if(_1==null&&this.fieldState!=null){if(isc.isA.String(this.fieldState)){_1=this.evalViewState(this.fieldState,"fieldState")}}else _1=this.evalViewState(_1,"fieldState");this.completeFields=this.$31y(_1,true);this.setFields(this.completeFields);this.markForRedraw();this.fieldStateChanged()}
+,isc.A.setFields=function isc_DetailViewer_setFields(_1){if(this.completeFields==null||this.fields==null)this.fields=[];this.completeFields=this.bindToDataSource(_1);if(this.completeFields==null)this.completeFields=[];this.deriveVisibleFields()}
+,isc.A.deriveVisibleFields=function isc_DetailViewer_deriveVisibleFields(){this.fields.setArray(this.getVisibleFields(this.completeFields))}
+,isc.A.getVisibleFields=function isc_DetailViewer_getVisibleFields(_1){var _2=_1.duplicate();for(var i=0;i<_1.length;i++){var _4=_1.get(i);if(!this.fieldShouldBeVisible(_4)||_4.visible==false)_2.remove(_4)}
+return _2}
+,isc.A.getTitleFieldValue=function isc_DetailViewer_getTitleFieldValue(_1){var _2=this.getDataSource().getTitleField(),_3=this.getCellValue(_1,this.getDataSource().getField(_2));return _3}
+,isc.A.getStandaloneFieldValue=function isc_DetailViewer_getStandaloneFieldValue(_1,_2){var _3=this.getCellValue(_1,this.getField(_2));return _3}
+,isc.A.hideField=function isc_DetailViewer_hideField(_1){this.toggleField(_1,false)}
+,isc.A.showField=function isc_DetailViewer_showField(_1){this.toggleField(_1,true)}
+,isc.A.toggleField=function isc_DetailViewer_toggleField(_1,_2){var _3=this.getField(_1);_3.showIf=_2?"true":"false";_3.visible=_2;this.setFields(this.getAllFields());this.markForRedraw();this.fieldStateChanged()}
+,isc.A.getField=function isc_DetailViewer_getField(_1){var _2=this.getAllFields(),_3=this.fields,_4;if(isc.isAn.Object(_1)&&_1[this.fieldIdProperty]!=null){_4=_2.find(this.fieldIdProperty,_1[this.fieldIdProperty])||_3.find(this.fieldIdProperty,_1[this.fieldIdProperty])}else if(isc.isA.Number(_1)){_4=_2[_1]||_3[_1]}else{_4=_2.find(this.fieldIdProperty,_1)||_3.find(this.fieldIdProperty,_1)}
+return _4}
+,isc.A.getFormattedValue=function isc_DetailViewer_getFormattedValue(_1,_2,_3){return this.getCellValue(_1,this.getSpecifiedField(_2))}
+,isc.A.getPivotedExportData=function isc_DetailViewer_getPivotedExportData(_1){var _2=[],_3=this.getAllFields(),_4=this.data,_5,_6,_7;if(isc.isA.Object(_1)){_5=_1.includeHiddenFields;_6=_1.allowedProperties;_7=_1.alwaysExportExpandedStyles}
+if(isc.isA.ResultSet(_4))_4=_4.getAllLoadedRows();if(!isc.isA.Array(_4))_4=[_4];for(var _8=0;_8<_3.length;_8++){var _9=_3[_8],_10={},_11=this.recordsPerBlock;_10.title=_9.title||_9.name;if(isc.isA.String(_10.title))_10.title=this.htmlUnescapeExportFieldTitle(_10.title);if(_11==null)_11=1;if(_11=="*")_11=100000;if((!this.fields.contains(_9))&&!_5)continue;for(var _12=0;_12<_11&&_12<_4.getLength();_12++)
+{var _13=_4[_12],_14=this.getFieldNum(_9.name),_15="value"+(_12+1),_16=_15+"$style";var _17=this.getExportFieldValue(_13,_9.name,_14);if(!(_17==null||_17==" "))_10[_15]=_17;this.addDetailedExportFieldValue(_10,_16,_13,_9,_14,_6,_7);if(_10[_16]==null||_10[_16]==" ")
+delete _10[_16]}
+_2.push(_10)}
+return _2}
+);isc.B._maxIndex=isc.C+45;isc.DetailViewer.registerStringMethods({getCellValue:"record,field",getCellStyle:"value,field,record,viewer",getCellCSSText:"value,field,record,viewer",formatCellValue:"value,record,field,viewer",fieldStateChanged:""});isc.ClassFactory.defineClass("GridRenderer","Canvas");isc.A=isc.GridRenderer;isc.A.SELECTED="Selected";isc.A.DISABLED="Disabled";isc.A.OVER="Over";isc.A.standardStyleSuffixes=["","Over","Selected","SelectedOver","Disabled","DisabledOver","DisabledSelected","DisabledSelectedOver","Dark","OverDark","SelectedDark","SelectedOverDark","DisabledDark"];isc.A=isc.GridRenderer.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.totalRows=0;isc.A.drawAllMaxCells=250;isc.A.recordCanSelectProperty="canSelect";isc.A.isSeparatorProperty="isSeparator";isc.A.singleCellValueProperty="singleCellValue";isc.A.instantScrollTrackRedraw=true;isc.A.scrollRedrawDelay=75;isc.A.drawAheadRatio=1.3;isc.A.quickDrawAheadRatio=1.0;isc.A.cellHeight=20;isc.A.fixedRowHeights=true;isc.A.fixedColumnWidths=true;isc.A.cellSpacing=0;isc.A.cellPadding=2;isc.A.canSelectOnRightMouse=true;isc.A.hoverByCell=true;isc.A.backgroundColor="white";isc.A.tableStyle="listTable";isc.A.baseStyle="cell";isc.A.alternateRowFrequency=1;isc.A.emptyCellValue=" ";isc.A.fastCellUpdates=true;isc.A.overflow="auto";isc.A.$r9=true;isc.A.canFocus=true;isc.A.animateRowsMaxTime=1000;isc.A.snapToCells=false;isc.A.snapInsideBorder=false;isc.A.snapHDirection=isc.Canvas.BEFORE;isc.A.snapVDirection=isc.Canvas.BEFORE;isc.B.push(isc.A.setFastCellUpdates=function isc_GridRenderer_setFastCellUpdates(_1){if(_1&&!isc.Browser.isIE){this.fastCellUpdates=false;return}
+if(_1==this.fastCellUpdates)return;this.fastCellUpdates=_1;this.markForRedraw()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.GridRenderer.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$57k=["<DIV style='position:"+(isc.Page.isRTL()?"inline":"relative")+";z-index:",,";'>",,"</DIV>"];isc.A.$623="<table style='position:absolute;top:0px;font-size:1px;height:100%;width:100%;z-index:1;overflow:hidden;visibility:hidden;'><tr><td> </td></tr></table>";isc.A.maxAnimateSlideInRows=100;isc.A.$27r="none";isc.A.screenReader_suppressHandleFocus=true;isc.A.$77c={};isc.A.$27s="<DIV role='presentation' cellClipDiv=true style='overflow:hidden;";isc.A.$80q="<div>";isc.A.$80r="</div>";isc.A.$57l="within";isc.A.$57m="expand";isc.A.$14k="cell";isc.A.alignSnapToMap={left:{top:"TL",center:"L",bottom:"BL"},right:{top:"TR",center:"R",bottom:"BR"},center:{top:"T",center:"C",bottom:"B"}};isc.A.recordCustomStyleProperty="customStyle";isc.A.showSelectedStyle=true;isc.A.$27t="NOBR";isc.A.$27u="cellClipDiv";isc.A.$o5="height";isc.A.$27v="minHeight";isc.A.$39=";";isc.A.$721="padding-top:0px;padding-bottom:0px;";isc.A.$722="overflow:hidden;";isc.A.avgRowHeight=60;isc.B.push(isc.A.initWidget=function isc_GridRenderer_initWidget(){if(!this.$26a)this.setColumnWidths([]);if(this.selection)this.setSelection(this.selection);if(this.overflow==isc.Canvas.VISIBLE){this.showAllRows=true}
+if(!this.fixedRowHeights&&this.virtualScrolling==null)this.virtualScrolling=true;if(!this.fixedRowHeights&&!this.showAllRows){if(this.showCustomScrollbars==false){this.logInfo("Variable height records cannot be used with native scrollbars;"+" setting showCustomScrollbars:true on this GridRenderer and using"+" the special 'NativeScrollbar' class as a scrollbarConstructor.");this.showCustomScrollbars=true;this.scrollbarConstructor="NativeScrollbar"}}
+this.setFastCellUpdates(this.fastCellUpdates)}
+,isc.A.shouldShowAllColumns=function isc_GridRenderer_shouldShowAllColumns(){if(this.showAllColumns)return true;if(!this.fixedRowHeights&&!this.showAllRows)return true;if(this.overflow==isc.Canvas.VISIBLE){return true}
+return false}
+,isc.A.isEmpty=function isc_GridRenderer_isEmpty(){return false}
+,isc.A.$27w=function isc_GridRenderer__showEmptyMessage(_1,_2){return this.getEmptyMessageHTML(_1,_2,this.grid.isOffline())}
+,isc.A.getEmptyMessageHTML=function isc_GridRenderer_getEmptyMessageHTML(_1,_2,_3){if(!_3){if(!this.showEmptyMessage)return" "}else{if(!this.showOfflineMessage)return" "}
+if(this.isPrinting){if(_1==null)_1=0;if(_2==null)_2=this.fields?this.fields.getLength()-1:0;return"<TABLE role='presentation' cellspacing=0 style='width:100%'"+(this.emptyMessageTableStyle?(" class='"+this.emptyMessageTableStyle+"'"):"")+">"+this.grid.getPrintHeaders(_1,_2)+"<TR><TD ALIGN=CENTER VALIGN=TOP class='"+(_3?this.offlineMessageStyle:this.emptyMessageStyle)+"' colspan='"+((_2-_1)+1)+"'>"+(_3?this.getOfflineMessage():this.getEmptyMessage())+"</TD></TR></TABLE>"}
+var _4=this.getInnerWidth(),_5=0;if(this.expandEmptyMessageToMatchFields&&this.$26a){_5=this.$26a.sum()-_4;if(_5<0)_5=0}
+var _6=_5&&this.overflow!=isc.Canvas.VISIBLE;var _7=isc.StringBuffer.create();_7.append("<TABLE role='presentation' BORDER=0 MARGIN=0 CELLSPACING=0",(this.emptyMessageTableStyle?(" CLASS='"+this.emptyMessageTableStyle+"'"):"")," style='width:",(_4+_5),"px;",(isc.Browser.isSafari?"height"+this.getInnerHeight()+":px;'":"' HEIGHT=100%"),"><TR><TD ALIGN=CENTER VALIGN=TOP CLASS='",(_3?this.offlineMessageStyle:this.emptyMessageStyle),"' style='padding-left:0px;padding-right:0px;'>",(_3?this.getOfflineMessage():this.getEmptyMessage()),(_5&&_6?"<br>"+isc.Canvas.spacerHTML(_4,1):null),"</TD>");if(_5&&_6){_7.append("<TD style='padding-left:0px;padding-right:0px;'>",isc.Canvas.spacerHTML(_5,1),"</TD>")}
+_7.append("</TR></TABLE>");return _7.release()}
+,isc.A.getEmptyMessage=function isc_GridRenderer_getEmptyMessage(){return this.emptyMessage}
+,isc.A.getOfflineMessage=function isc_GridRenderer_getOfflineMessage(){return this.grid.offlineMessage}
+,isc.A.getInnerHTML=function isc_GridRenderer_getInnerHTML(){var _1=this.getTableHTML(),_2=this.$57k;_2[1]=this.getTableZIndex();_2[3]=_1;if(isc.Browser.isMoz)_2[5]=this.$623;return _2.join(isc.emptyString)}
+,isc.A.isFastScrolling=function isc_GridRenderer_isFastScrolling(){return this.isDragScrolling()||this.isRepeatTrackScrolling()}
+,isc.A.shouldUseQuickDrawAheadRatio=function isc_GridRenderer_shouldUseQuickDrawAheadRatio(){return this.useQuickDrawAheadRatio||this.isFastScrolling()}
+,isc.A.doneFastScrolling=function isc_GridRenderer_doneFastScrolling(){var _1=this.$50z;if(_1){this.$50v=true;this.markForRedraw("Done Fast scrolling.")}}
+,isc.A.addDrawAhead=function isc_GridRenderer_addDrawAhead(_1,_2,_3,_4,_5){var _6=this.shouldUseQuickDrawAheadRatio(),_7=_6&&this.quickDrawAheadRatio!=null?this.quickDrawAheadRatio:this.drawAheadRatio,_8=Math.ceil((_2-_1)*_7);if(this.$50v)_4=null;if(_4!=null){if(_4)_2=_1+_8;else _1=_2-_8}else{if(_1==0)_2=_8;else{var _9=Math.ceil((_8-(_2-_1))/2);_1-=_9;_2+=_9}}
+if(_1<0){_2-=_1;_1=0}
+if(_2>=_3){var _10=_2-(_3-1);_1=Math.max(0,(_1-_10));_2=Math.max(0,_3-1)}
+if(_6)this.$50z=true;else delete this.$50z;return[_1,_2]}
+,isc.A.getExtraRowHeight=function isc_GridRenderer_getExtraRowHeight(_1,_2){var _3=0;for(var _4=_1;_4<_2;_4++){var _5=this.getRowHeight(this.getCellRecord(_4,0),_4),_6=(_5-this.cellHeight);if(_6>0){_3+=_6}}
+return _3}
+,isc.A.getDrawArea=function isc_GridRenderer_getDrawArea(_1){var _2=this.getTotalRows(),_3,_4,_5;var _6=_2*this.fields.length,_7=_6<=this.drawAllMaxCells&&!isc.EH.dragging&&!this.isAnimating()&&!(this.parentElement&&this.parentElement.isAnimating());if(this.showAllRows||_7){_3=0;_4=Math.max(_2-1,0)}else{var _8=this.$80e();_3=_8[0];_4=_8[1];_5=_8[2]}
+var _9,_10,_11=this.fields.length,_12;if(_1!=null){_9=_1;_10=_1+1}else if(_7||this.shouldShowAllColumns()){_9=0;_10=_11-1}else{var _13=this.getVisibleColumns();_12=(this.lastScrollLeft==null?null:this.lastScrollLeft<this.getScrollLeft());var _14=this.addDrawAhead(_13[0],_13[1],_11,_12);_9=_14[0];_10=_14[1]}
+if(this.cacheDOM&&!this.$508){this.$508=_4-_3;this.$509=_10-_9}
+return[_3,_4,_9,_10]}
+,isc.A.$80e=function isc_GridRenderer__getDrawRows(){var _1=this.$27x();var _2=(this.lastScrollTop==null?null:this.lastScrollTop<this.getScrollTop());var _3=this.getTotalRows();var _4=this.addDrawAhead(_1[0],_1[1],_3,_2,true);_4[2]=_2;return _4}
+,isc.A.getRowCoordinate=function isc_GridRenderer_getRowCoordinate(_1){var _2=this.getEventRow(_1),_3=this.getRowTop(_2),_4=_1-_3,_5=this.getRowSize(_2),_6=_4/ _5;return _2+_6}
+,isc.A.scrollToRatio=function isc_GridRenderer_scrollToRatio(_1,_2,_3,_4,_5){if(!_1||!this.$60s){return this.invokeSuper(isc.GridRenderer,"scrollToRatio",_1,_2,_3,_4,_5)}
+var _6=this.getTotalRows()-1,_7=_2*_6,_8=Math.floor(_7),_9=Math.round((_7-_8)*this.getRowSize(_8));this.$27y=_8;this.$27z=_9;this.$270(_3||"scrollToRatio");if(this.isDirty()){this.$271=_2;this.$27y=_8;this.$27z=_9}}
+,isc.A.getScrollRatio=function isc_GridRenderer_getScrollRatio(_1,_2,_3,_4){if(!_1||!this.$60s){return this.invokeSuper(isc.GridRenderer,"getScrollRatio",_1,_2,_3,_4)}
+if(this.isDirty()&&this.$271!=null)return this.$271;var _5=this.getTotalRows()-1;if(_5<=0)return 0;var _6=this.getScrollTop(),_7=this.getRowCoordinate(_6),_8=_7/ _5;return Math.min(1,_8)}
+,isc.A.getViewportRatio=function isc_GridRenderer_getViewportRatio(_1,_2,_3,_4){if(!_1||!this.$60s){return this.invokeSuper(isc.GridRenderer,"getViewportRatio",_1,_2,_3,_4)}
+var _5=this.$272||this.getAvgRowHeight();return Math.min(1,(this.getViewportHeight()/_5)/this.getTotalRows())}
+,isc.A.$273=function isc_GridRenderer__storeTargetRow(_1,_2){if(this.$274)return;if(this.isEmpty())return;var _3,_4,_5=this.getTotalRows()-1;if(_2>0){_3=_1+this.getViewportHeight();_4=this.getEventRow(_3);if(_4==-2&&_5>=0){_4=_5}}else{_3=_1;_4=this.getEventRow(_3)}
+var _6=_1;if(_4<0||_4>_5){this.$27y=_5;this.$27z=0;_6=this.getRowTop(_5)}else{this.$27y=_4;this.$27z=_1-this.getRowTop(this.$27y)+_2;if(Math.abs(this.$27z)>this.getViewportHeight()){this.logInfo("storeTargetRow: targetRow: "+_4+" with offset: "+this.$27z+", clearing","virtualScrolling");this.$27z=this.$27y=null}}
+return _6}
+,isc.A.$270=function isc_GridRenderer__scrollToTargetRow(_1){var _2=this.$27y,_3=this.$27z;var _4=this.getRowTop(_2)+_3;this.$274=true;this.$sz=null;this.scrollTo(null,_4,_1||"targetRow");this.$274=false;this.$271=null}
+,isc.A.scrollIntoView=function isc_GridRenderer_scrollIntoView(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10){if((_10!=null)&&(_10!=this)){return}
+this.invokeSuper(isc.GridRenderer,"scrollIntoView",_1,_2,_3,_4,_5,_6,_7,_8,_9,_10)}
+,isc.A.scrollTo=function isc_GridRenderer_scrollTo(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(this.$60s&&_2!=null&&_3!="nativeScroll"){var _5=this.getScrollTop(),_6=_2-_5;if(_6!=0){this.$273(_5,_6);_2=Math.min(_2,this.getRowTop(this.getTotalRows()-1))}}
+this.invokeSuper(isc.GridRenderer,"scrollTo",_1,_2,_3,_4);if(this.isDirty()||this.$80f)return;var _7=(this.$276()||this.$277());if(_7){if(!this.isFastScrolling()&&this.instantScrollTrackRedraw){this.redraw("scrolled")}else if(this.scrollRedrawDelay==0){this.markForRedraw("scrolled")}else{var _8=this;this.fireOnPause("scrollRedraw",function(){_8.markForRedraw("scrolled")},this.scrollRedrawDelay)}
+this.$250=true}}
+,isc.A.$276=function isc_GridRenderer__needRowRedraw(){if(this.showAllRows)return false;var _1=this.getVisibleRows(),_2=_1[0],_3=_1[1];var _4=this.getTotalRows();if(_3>_4-1)_3=_4-1;var _5=(_2<this.$252||_3>this.$253);return _5}
+,isc.A.$277=function isc_GridRenderer__needColumnRedraw(){if(this.shouldShowAllColumns())return false;var _1=this.getVisibleColumns(),_2=_1[0],_3=_1[1],_4=(_2<this.$254||_3>this.$255);return _4}
+,isc.A.setOverflow=function isc_GridRenderer_setOverflow(_1){if(_1==isc.Canvas.VISIBLE){this.showAllRows=true}
+return this.Super("setOverflow",arguments)}
+,isc.A.getRowChunkNum=function isc_GridRenderer_getRowChunkNum(_1){return Math.round(_1/ this.$508)}
+,isc.A.getColChunkNum=function isc_GridRenderer_getColChunkNum(_1){return Math.round(_1/ this.$509)}
+,isc.A.getTableChunk=function isc_GridRenderer_getTableChunk(_1,_2){var _3=this.$51a;if(!_3)return;_1=_1||0;_2=_2||0;var _4=_3[_1];return _4?_4[_2]:null}
+,isc.A.getTableChunkAt=function isc_GridRenderer_getTableChunkAt(_1,_2){var _3=this.getRowChunkNum(_1),_4=this.getColChunkNum(_2),_5=this.getTableChunk(_3,_4);if(_5!=null){this.$51b=_3*this.$508;this.$254=_4*this.$509;return _5}}
+,isc.A.$rd=function isc_GridRenderer__updateInnerHTML(_1,_2,_3,_4){if(this.cacheDOM){this.drawVisibleChunks()}else{this.$29j();this.$756=true;this.invokeSuper(isc.GridRenderer,"$rd",_1,_2,_3,_4);delete this.$756}}
+,isc.A.$p9=function isc_GridRenderer__updateParentHTML(_1,_2,_3,_4){this.$29j();this.$756=true;this.invokeSuper(isc.GridRenderer,"$p9",_1,_2,_3,_4);delete this.$756}
+,isc.A.drawVisibleChunks=function isc_GridRenderer_drawVisibleChunks(){var _1=this.getVisibleRows(),_2=this.getVisibleColumns(),_3=this.getRowChunkNum(_1[0]),_4=this.getColChunkNum(_2[0]),_5=this.getRowChunkNum(_1[1]),_6=this.getColChunkNum(_2[1]);for(var _7=_3;_7<_5;_7++){for(var _8=_4;_8<_6;_8++){if(this.getTableChunk(_7,_8)==null){this.logWarn("drawing chunk: "+[_7,_8]);this.renderTableChunk(_7,_8)}}}
+var _9=this.getTableHTML()}
+,isc.A.renderTableChunk=function isc_GridRenderer_renderTableChunk(_1,_2){var _3=_1*this.$508,_4=_3+this.$508,_5=_2*this.$509,_6=_5+this.$509;var _7=this.getTableHTML([_5,_6],_3,_4),_8=isc.Element.insertAdjacentHTML(this.getHandle(),"beforeEnd",_7,true);var _9=this.$51a=this.$51a||[],_10=_9[_1]=_9[_1]||[];_10[_2]=_8}
+,isc.A.getDrawnRows=function isc_GridRenderer_getDrawnRows(){return this.getVisibleRows()}
+,isc.A.startRowAnimation=function isc_GridRenderer_startRowAnimation(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10){this.finishRowAnimation();if(!this.isDrawn()||!this.isVisible()){if(_4!=null){var _11=_9?this.parentElement:this;_11.fireCallback(_4)}
+return}
+if(_1==null)_1=true;if(_2==null)_2=0;if(_3==null)_3=this.getTotalRows()-1;if(_2==_3){this.logWarn("startRowAnimation passed empty row range, aborting: "+[_2,_3]);return}
+var _12=this.readyToRedraw("animating show / hide of rows",false);if(!_12){this.$278=[_1,_2,_3,_4,_5,_6,_7,_8,_9];this.$279=isc.Timer.setTimeout({target:this,methodName:"$28a"},0);return}
+if((_3-_2)>this.maxAnimateSlideInRows)_8=false;this.$73q=_8;var _13=this.$28b(_1,_2,_3,_4,_9);this.animateRowHeight(this.$28c,(_1?_13:0),{target:this,methodName:"$28d"},_5,_6,_7,_8)}
+,isc.A.$28a=function isc_GridRenderer__delayedStartRowAnimation(){if(this.$278==null){this.logWarn("Unable to perform delayed row animation - bailing");return}
+var _1=this.$278,_2=_1[0],_3=_1[1],_4=_1[2],_5=_1[3],_6=_1[4],_7=_1[5],_8=_1[6],_9=_1[7],_10=_1[8];this.$278=null;this.$279=null;this.startRowAnimation(_2,_3,_4,_5,_6,_7,_8,_9,_10,true)}
+,isc.A.$28b=function isc_GridRenderer__initializeShowHideRow(_1,_2,_3,_4,_5){var _6=0;if(this.$28c==_2&&this.$28e==_3){var _7=this.getTableElement(this.$28c,0),_8=this.$28g(_7);if(!_8){_6=(_3-_2)*this.cellHeight}else _6=_8.scrollHeight}else{this.$28c=_2;this.$28e=_3;if(!_1){var _9=this.$26b();for(var i=_2;i<_3;i++){_6+=_9[i]}
+this.$28f=_6;this.redraw("initializing animated hide row")}else{this.$28f=1;this.redraw("initializing animated show row");var _7=this.getTableElement(this.$28c,0),_8=this.$28g(_7);if(!_8){_6=(_3-_2)*this.cellHeight}else _6=_8.scrollHeight}
+if(this.isDirty())this.redraw("Initializing row animation requires second redraw")}
+this.$28h={callback:_4,target:(_5?this.parentElement:this)};return _6}
+,isc.A.finishRowAnimation=function isc_GridRenderer_finishRowAnimation(){if(this.$28c!=null){this.finishAnimateRowHeight()}else{if(this.$279!=null){isc.Timer.clearTimeout(this.$279);var _1=this.$278,_2=_1[0],_3=_1[1],_4=_1[2],_5=_1[3],_6=_1[4],_7=_1[5];delete this.$278;delete this.$279;if(!this.readyToRedraw()){this.logWarn("Finish row animation called while Grid is not ready to redraw. "+"GridRenderer HTML will not be updated when callback fires.","animation");var _8=_7?this.parentElement:this;if(_5)_8.fireCallback(_5)}else{var _9=this.$28b(_2,_3,_4,_5,_7);this.setRowHeight(_3,(_2?_9:1));this.$28d()}}}}
+,isc.A.$28d=function isc_GridRenderer__rowShowComplete(){var _1=this.$28h;delete this.$28h;delete this.$28c;delete this.$28e;delete this.$28f;if(_1&&_1.callback)_1.target.fireCallback(_1.callback)}
+,isc.A.animateRowHeight=function isc_GridRenderer_animateRowHeight(_1,_2,_3,_4,_5,_6,_7,_8){if(!this.isDrawn()){if(_3){var _9=(_8?this.parentElement:this);_9.fireCallback(_3)}
+return}
+if(this.$28i!=null){this.logInfo("early finish of row animation, because new animation started","animation")
+this.finishAnimateRowHeight()}
+var _10=this.getRowSize(_1);if(_4!=null){var _11=(_2-_10);if(_11<0)_11=0-_11;_5=Math.round((_11/ _4)*1000);if(_5>this.animateRowsMaxTime)_5=this.animateRowsMaxTime}
+this.$28j={$24t:_1,$28k:_10,$28l:_2,$03:_3,$1n:_7,$28m:_8}
+_6=(_6||this.$27r);if(this.logIsInfoEnabled("animation")){this.logInfo("starting row animation, duration: "+_5+", effect: "+_6,"animation")}
+this.$28i=this.registerAnimation({target:this,method:this.$28n},_5,_6);if(this.overflow==isc.Canvas.AUTO||this.overflow==isc.Canvas.SCROLL)
+this.$417=true}
+,isc.A.$28n=function isc_GridRenderer__fireRowAnimation(_1){var _2=this.$28j,_3=_2.$24t,_4=this.$04(_2.$28k,_2.$28l,_1);if(isc.Browser.isSafari&&_2.$28k>_2.$28l)
+this.$28o=true;this.setRowHeight(_3,_4,null,isc.emptyString,true,true,true);if(isc.Browser.isSafari)delete this.$28o;if(_2.$1n){var _5=this.$28g(this.getTableElement(_3,0));if(_5){var _6=_5.scrollHeight,_7=_5.offsetHeight;if(_6>_7)_5.scrollTop=_6-_7;else _5.scrollTop=0}}
+if(_1==1){isc.Timer.setTimeout({target:this,methodName:"$28p"},0)}}
+,isc.A.$28p=function isc_GridRenderer__rowAnimationComplete(){delete this.$417;this.adjustOverflow("row animation complete");var _1=this.$28j;delete this.$28i;delete this.$28j;if(_1&&_1.$03){var _2=_1.$28m?this.parentElement:this;_2.fireCallback(_1.$03)}}
+,isc.A.finishAnimateRowHeight=function isc_GridRenderer_finishAnimateRowHeight(){if(!this.$28i)return;this.cancelAnimation(this.$28i);this.$28n(1)}
+,isc.A.$80s=function isc_GridRenderer__getPrintChildren(){return this.$29a}
+,isc.A.getTablePrintHTML=function isc_GridRenderer_getTablePrintHTML(_1,_2,_3,_4,_5){return this.getTableHTML(_1,_2,_3,_4,_5)}
+,isc.A.draw=function isc_GridRenderer_draw(){if(isc.screenReader&&this.screenReader_suppressHandleFocus){this.clipHandleIsFocusHandle=this.isEmpty()}
+return this.Super("draw",arguments)}
+,isc.A.handleKeyDown=function isc_GridRenderer_handleKeyDown(_1,_2){var _3=this.Super("handleKeyDown",arguments);if(_3!=false&&isc.screenReader&&this.screenReader_suppressHandleFocus){var _4=isc.EH.clickMaskUp(),_5=false;if(_4){var _6=isc.EH.clickMaskRegistry;for(var i=0;i<_6.length;i++){if(isc.EH.isHardMask(_6[i])){_5=true;break}}}
+if(!_5){var _8=_1.keyName;if(_8=="Tab"){this.$kf(!isc.EH.shiftKeyDown())
+return false}}}
+return _3}
+,isc.A.getTableHTML=function isc_GridRenderer_getTableHTML(_1,_2,_3,_4,_5,_6){if(isc.$cv)arguments.$cw=this;var _7=isc.timeStamp();if(this.isEmpty()){this.$252=this.$253=this.$254=this.$255=null;if(this.isPrinting){if(this.$568&&this.printChunkOnly)return this.$27w();return this.grid.getPrintHeaders(_26,_27)+this.$27w()+this.grid.getPrintFooters(_26,_27)}
+return this.$27w()}
+if(this.isPrinting&&(!this.$568||_2==0)){var _8=this.$80s();if(_8!=null&&_8.length>0){for(var i=0;i<_8.length;i++){var _10=_8[i];if(_10.$80t!=null)continue;var _11={component:_10,colNum:_1,startRow:_2,endRow:_3,descreteCols:_4,asyncCallback:_5};var _12=_8[i].getPrintHTML(this.printProperties,_5==null?null:{target:this,methodName:"gotComponentPrintHTML",context:_11});if(_12!=null){_10.$80t=_12}else{return null}}}}
+var _13=(_2!=null&&_3!=null),_14=_2!=null?_2:0,_15=_3!=null?_3:this.getTotalRows();var _16=this.getDrawArea(),_17=this.grid,_18;if(_17){if(_17.$30d){_18=_17.$30d==null?0:isc.isAn.Array(_17.$30d)?_17.$30d[0]:_17.$30d}else if(_17.data&&_17.data.getFirstUsedIndex&&_16[0]==0){_18=_17.data.getFirstUsedIndex()}
+if(_18){var _19=_16[1]-_16[0],_20=_18+_19,_21=this.getTotalRows();if(_20>=_21){_18-=(_20-(_21-1))
+_20=_21-1}
+if(_18<0)_18=0;_16[0]=_18;_16[1]=_20}}
+if(!_13){this.$252=_16[0];this.$253=_16[1];if(this.$28c!=null){this.$253+=(this.$28e-this.$28c);var _21=this.getTotalRows();if(this.$253>=_21)this.$253=_21-1}
+_2=this.$252;_3=this.$253+1;var _22=(_2==0&&_3==this.getTotalRows());if(this.virtualScrolling){this.$60s=!_22&&!this.fixedRowHeights}
+if(!this.$60s){delete this.$27y;delete this.$60t;delete this.$271;delete this.$60u}}else{var _23=_16[0],_24=_16[1]+1;if(this.$28q){if(_23>_3||_24<_2){_2=_3}else{if(!this.$73q){_2=Math.max(_2,_23);_3=Math.min(_3,_24)}}}}
+this.$254=_16[2];this.$255=_16[3];var _25=_1!=null&&isc.isAn.Array(_1),_26,_27;if(!_25)_4=false;if(_1!=null){if(_25){_26=_1[0];_27=_1[1]+1}else{_26=_1;_27=_1+1}}else{_26=this.$254;_27=this.$255+1}
+var _28;if(_4)_28=_1;else{_28=[];for(var i=_26;i<_27;i++){_28[_28.length]=i}}
+var _29=_28.length;var _30=(this.shouldShowAllColumns()||_1!=null);var _31=isc.StringBuffer.create(),_32=this.fields,_33=this.$26a;this.$28r=_28[0]!=0?null:this.$26a[0];var _34,_35,_36,_37;if(!_30||this.leftSpace!=null||this.rightSpace!=null){_34=(this.leftSpace!=null)?this.leftSpace:0;_35=(this.rightSpace!=null)?this.rightSpace:0;if(!_30){_34+=this.$26a.slice(0,_26).sum();_35+=this.$26a.slice(_27,this.$26a.length).sum()}
+_36=this.$26a.sum()
+_37=(this.cacheDOM||(isc.Browser.isIE&&!isc.Browser.isIE8)?"margin":"padding")}
+var _38=this.autoFit;var _39="";if(_1!=null){if(!_38&&this.fixedColumnWidths){_39=" WIDTH=100%"}}else if(this.isPrinting&&this.autoFit){_39=" WIDTH=100%"}else if((isc.Browser.isIE8Strict||isc.Browser.isMoz||isc.Browser.isSafari)&&!_38)
+{var _40=this.$26a.slice(_26,_27).sum();_39=" WIDTH="+_40}
+var _41=this.startSpace||0;if(_2!=_14){var _42=((_2-_14)*this.getAvgRowHeight());this.$514=_42;_41+=_42}else{this.$514=0}
+var _43=true;var _44=(_15-_14)*this.getAvgRowHeight();if(isc.Browser.isIE){if(_44>1300000)_43=false}
+if(!_13)this.$79b=_43;if(_44>10000000){this.logWarn("This grid is showing "+(_15-_14).toLocalizedString()+" rows. Due to native rendering limitations, grids with this many rows"+" may not appear correctly on all browsers. Consider filtering the data"+" displayed to the user to reduce the total number of rows displayed at a time."+" This will improve usability as well as avoiding unpredictable behavior.")}
+if(!this.cacheDOM&&!this.isPrinting){_31.append("<DIV style='width:1px;");if(_43){_31.append("height:",_41,"px;overflow:hidden;")}
+if(_41==0)_31.append("display:none;");_31.append("' ");if(_13||this.isPrinting){_31.append(">")}else{_31.append(" ID="+this.getID()+"$28s>")}
+_31.append(isc.Canvas.spacerHTML(1,_41),"</DIV>")}
+if(!this.$568||(_2==0&&!this.printChunkOnly)){_31.append("<TABLE role='presentation' BORDER=0",_39,((!_13&&!this.isPrinting)?" ID="+this.getTableElementId():null),(this.tableStyle&&isc.Browser.isDOM?" CLASS='"+this.tableStyle+this.$ob:isc.$ad)," CELLSPACING=",this.cellSpacing," CELLPADDING=",this.cellPadding," STYLE='",(isc.Browser.isDOM&&!_38&&this.fixedColumnWidths?"table-layout:fixed;overflow:hidden;wrap:false;":""),(!_30?_37+(this.isRTL()?"-right: ":"-left:")+_34+"px;"+_37+(this.isRTL()?"-left:":"-right:")+_35+"px;":""),(this.cacheDOM&&this.$514>0?"margin-top:"+this.$514+"px;":""),(this.$27y!=null&&!(isc.Browser.isIE&&this.$r9)?"visibility:hidden;":""),"'>",(isc.Browser.isMoz?"<TBODY>":""));var _45=0,_46=0,_47=this.$54p();if(isc.Browser.isStrict&&(isc.Browser.isSafari||isc.Browser.isIE)){if((isc.Browser.isIE&&!isc.Browser.isIE8)||(isc.Browser.isSafari&&isc.Browser.safariVersion<530))
+{_46=this.$54q()}
+_45=(this.fixedRowHeights?0:this.cellPadding*2);_45+=(this.fixedRowHeights?isc.Element.$ym(_47):isc.Element.$yo(_47))}
+this.$28t=_45;this.$28u=_46;if(!_38&&isc.Browser.isDOM){for(var i=0;i<_28.length;i++){_31.append("<COL WIDTH=",(_33[_28[i]]-_46),">")}}
+_31.append("<TBODY>")}
+var _48=this.cellHeight,_49=(this.wrapCells?"":"<NOBR>"),_50=(this.wrapCells?"":"</NOBR>");var _51=0;if(isc.Browser.isDOM){var _52=this.$28v(_48);var _53=[];_53[0]="<TD";_53[3]=" ALIGN=";_53[17]=this.fastCellUpdates?"' ":"' CLASS=";if(!_13&&!this.isPrinting&&this.getCellElementId)_53[19]=" ID=";_53[23]=">"+_49;_53[30]=_50+(_52?"</DIV></TD>":"</TD>");var _54=1,_55=2,_56=4,_57=5,_58=6,_59=7,_60=9,_61=10,_62=11,_63=18,_64=20,_65=21,_66=24;var _67="<TR",_68="</TR>",_69=">",_70=" HEIGHT=",_71=" VALIGN=";if(isc.Browser.isMobileWebkit)_67+=" onmousedown=\"return true;\"";var _72;if(isc.screenReader){_72=" tabIndex=-1"}
+var _73=isc.Canvas.ariaEnabled();var _74=[],_75=0,_76=[];this.$50d(_28,_38,_46,_52);if(this.isPrinting&&(!this.$568||(_2==0&&!this.printChunkOnly))){_31.append(this.grid.getPrintHeaders(_26,_27))}
+for(var _77=_2;_77<_3;_77++){var _78=(!_13&&this.$28c==_77);var _79=this.getCellRecord(_77);var _80=_78||this.$282(_77,_79);_31.append(_67);if(_72!=null){if(this.screenReader_suppressHandleFocus){if(this.getNativeFocusRow()==_77){_31.append(" tabIndex=",this.getTabIndex(),isc.Canvas.$ry,this.$qn(),isc.Canvas.$rz,this.$qo())}else{_31.append(_72)}}else{_31.append(_72)}}
+if(!_13&&!this.isPrinting&&this.getRowElementId){_31.append(" ID=",this.getRowElementId(_77,_77-_2))}
+if(_73&&this.getRowRole!=null){var _81=this.getRowRole(_77,_79);if(_81!=null)_31.append(" role='",_81,"'");var _82=this.getRowAriaState(_77,_79);if(_82)_31.append(isc.Canvas.getAriaStateAttributes(_82))}
+_31.append(_69);var _83=_78?this.$28f:(this.getRowHeight!=null?this.getRowHeight(_79,_77):_48);var _84;if(_78){_84=true}else{_84=this.fixedRowHeights;if(_84&&this.shouldFixRowHeight!=null){_84=(this.shouldFixRowHeight(_79,_77)!=false)}}
+if(_84){_53[_54]=_70;_53[_55]=_83-_45;_53[_61]=null}else{_53[_54]=null;_53[_55]=null;if(!_80&&_83==this.cellHeight&&!this.fixedRowHeights)
+{_53[_61]=null}else{_53[_61]=this.$281(_79,_77)}}
+if(_52){_53[_65]=">"+this.$27s+this.$283(_83,_79,_77,_78)}
+var _85=_80?this.$67p(_79,_77,_26,_27):null;for(var i=0;i<_28.length;i++){_1=_28[i];if(this.useCellRecords)_79=this.getCellRecord(_77,_1);var _86=_32[_1],_87=_79;if(_87==null)_87=this.getCellRecord(_77,_1);if(_74[_1]>0){_86.$28w[_77]=_76[_1];_74[_1]--;if(_74[_1]==0){_75--;_76[_1]=null}
+continue}
+_53[_56]=this.getCellAlign(_79,_86,_77,_1);var _88=this.getCellVAlign(_79,_86,_77,_1);if(_88!=null){_53[_57]=_71
+_53[_58]=_88}
+if(_85!=null&&(_1==_85[0])){_51++;_53[_59]=this.$67q(_85[1]-_85[0]);if(_52){_53[_65+1]=this.$ob}}else{_53[_59]=_86.$28x;if(this.getRowSpan){var _89=this.getRowSpan(_79,_77,_1);if(_89>1){var _90=" ROWSPAN="+_89;if(_53[_56]!=null)
+_53[_56]+=_90;else
+_53[_56]=_90;_74[_1]=_89-1;_75++;_76[_1]=_77;if(_86.$28w==null)_86.$28w={};_86.$28w[_77]=_77}}
+if(_73&&this.getCellRole!=null){var _91=this.getCellRole(_77,_1,_79);if(_91!=null){var _92=this.getCellAriaState(_77,_1,_79);_53[_60]=" role='"+_91+(_92?isc.Canvas.getAriaStateAttributes(_92):"")}else{_53[_60]=null}}
+if(_52){_53[_65+1]=_86.$28y}else{_53[_65+1]=null}}
+var _93=this.getCellStyle(_79,_77,_1),_94=(this.getCellCSSText?this.getCellCSSText(_79,_77,_1):null);if(_78){var _95="padding:0px;border:0px;";if(_94)_94+=";"+_95
+else _94=_95}
+if(!this.fastCellUpdates){_53[_62]=_94
+_53[_63]=_93}else{var _96=this.$77d(_93);_53[_62]=_96;_53[_62+1]=_94}
+if(_78){this.$28q=true;var _97=this.getTableHTML(null,this.$28c,this.$28e);delete this.$28q;if(!_52){_53[_66]=isc.SB.concat(this.$27s,this.$283(_83,_79,_77,_78),this.$ob,this.$oa,_97,"</DIV>")}else{_53[_66]=_97}}else
+_53[_66]=this.$22k(_79,_77,_1);if(!_13&&this.getCellElementId){_53[_64]=this.getCellElementId(_77,_77-_2,_1,_1-_26)}
+_31.append(_53);if(!_13&&_87!=null&&_87.$29a!=null){if(_87.$29a[0]&&_87.$29a[0].rowNum==null)
+{this.updateEmbeddedComponentCoords(_87.$29a,_87,_77,_1)}}
+if(_80&&(_1==_85[0])){i+=_85[1]-_85[0]}}
+_31.append(_68);if(this.isPrinting&&_79.$29a!=null){var _98=_79.$29a;for(var _99=0;_99<_98.length;_99++){var _100=_98[_99];if(_100.$57n==null&&_100.$80t!=null){_31.append(_67,_69,'<td colspan="',_29,'">',_100.$80t,"</td>",_68);delete _100.$80t}}}
+if(_78){_77=this.$28e-1}}}
+if(!this.$568||(_3==this.getTotalRows()&&!this.printChunkOnly)){if(this.grid&&this.isPrinting){_31.append(this.grid.getPrintFooters(_26,_27))}
+_31.append("</TABLE>")}
+var _101=_15-_3,_102=(!_13&&this.$60s);var _103=this.cacheDOM?0:(this.endSpace||0);this.$515=0;if(!this.showAllRows&&(_101!=0||_102)){var _104=_101*this.getAvgRowHeight();if(_102&&_101==0){var _105=this.getViewportHeight();if(_104<_105){_104=_105}}
+this.$515=_104;_103+=this.$515}
+if(!this.cacheDOM&&!this.isPrinting){_31.append("<DIV style='width:1px;");if(_43){_31.append("height:",_103,"px;overflow:hidden;")}
+if(_103==0)_31.append("display:none;");_31.append("' ");if(_13||this.isPrinting){_31.append(">")}else{_31.append(" ID="+this.getID()+"$284>")}
+_31.append(isc.Canvas.spacerHTML(1,_103),"</DIV>")}
+if(this.logIsDebugEnabled("gridHTML")){var _106=(isc.timeStamp()-_7),_107=(_29*(_3-_2)),_108=(_106/ _107),_109=(1000/_108);if(_108.toFixed!=null)_108=_108.toFixed(2);if(_109.toFixed!=null)_109=_109.toFixed(2);this.logDebug("getTableHTML: columns "+(_4?_28:_26+"->"+(_27-1))+", rows "+_2+"->"+(_3-1)+", time: "+_106+"ms ("+_107+" cells at "+_108+"ms per cell, "+_109+" cells per second), "+"spacerHeights: ["+[_41,_103]+"], "+"left/right pad: ["+[_34,_35]+"], "+_51+" single cell rows","gridHTML")}
+var _110=_31.release();if(_6){if(_5!=null){this.fireCallback(_5,"HTML,callback",[_110,_5])}
+return null}
+return _110}
+,isc.A.setFocus=function isc_GridRenderer_setFocus(_1,_2){if(isc.screenReader&&_2=="focus on mousedown"){var _3=this.getEventRow();if(_3!=null&&!this.isEmpty()){if(_3==-2)_3=this.getTotalRows()-1;if(_3>=0){this.$86a(_3,true)}}}
+return this.Super("setFocus",arguments)}
+,isc.A.$86a=function isc_GridRenderer__putNativeFocusInRow(_1,_2){var _3=this.screenReader_suppressHandleFocus;if(_3)this.$vj(false);this.$86b=_1;if(_3)this.$vj(true);if(this.screenReader_suppressHandleFocus){this.clipHandleIsFocusHandle=this.isEmpty()}
+if(_2==null)_2=!this.hasFocus;if(_2){return}
+var _4=this.getFocusHandle();if(_4)_4.focus();if(!_3)isc.EH.$ke=null;_4.focus();if(!_3)isc.EH.$ke=this}
+,isc.A.getFocusHandle=function isc_GridRenderer_getFocusHandle(){if(!isc.screenReader)return this.Super("getFocusHandle",arguments);if(isc.screenReader){var _1=this.getNativeFocusRow();var _2=this.getTableElement(_1);if(_2!=null)return _2;return this.Super("getFocusHandle",arguments)}}
+,isc.A.gotComponentPrintHTML=function isc_GridRenderer_gotComponentPrintHTML(_1,_2){var _3=_2.context,_4=_3.component;if(_3.asyncCallback==null){return}
+_4.$80t=_1;return this.getTableHTML(_3.colNum,_3.startRow,_3.endRow,_3.discreteCols,_3.asyncCallback,true)}
+,isc.A.$77d=function isc_GridRenderer__getEscapedStyleText(_1){if(this.$77c[_1]!=null)return this.$77c[_1];var _2=isc.Element.getStyleText(_1,true);this.$77c[_1]=_2.replaceAll("'",'"');return this.$77c[_1]}
+,isc.A.getCellVAlign=function isc_GridRenderer_getCellVAlign(_1,_2,_3,_4){return null}
+,isc.A.getCellAlign=function isc_GridRenderer_getCellAlign(_1,_2,_3,_4){return _2.cellAlign||_2.align}
+,isc.A.$67p=function isc_GridRenderer__getSingleCellSpan(_1,_2,_3,_4){return[_3,_4]}
+,isc.A.$67q=function isc_GridRenderer__getTDSpanHTML(_1){if(!isc.GridRenderer.$67r){isc.GridRenderer.$67r={$67s:{},$67t:{}}}
+var _2=this.fixedRowHeights?isc.GridRenderer.$67r.$67s:isc.GridRenderer.$67r.$67t;if(_2[_1])return _2[_1];else{return _2[_1]=" COLSPAN="+_1+" STYLE='"+(this.fixedRowHeights?"padding-top:0px;padding-bottom:0px;":"")}}
+,isc.A.$54p=function isc_GridRenderer__getFirstRecordStyle(){var _1=this.grid,_2=0;if(_1){if(_1.$30d){_2=_1.$30d==null?0:isc.isAn.Array(_1.$30d)?_1.$30d[0]:_1.$30d}else if(_1.data&&_1.data.getFirstUsedIndex){_2=_1.data.getFirstUsedIndex()}}
+return(this.getBaseStyle!=null?this.getBaseStyle(this.getCellRecord(_2,0),0,0):this.baseStyle)}
+,isc.A.$50d=function isc_GridRenderer__cacheColumnHTML(_1,_2,_3,_4){var _5=this.fields,_6=this.$26a;for(var i=0;i<_1.length;i++){var _8=_1[i],_9=_5[_8];_9.$28w=null;if(_2){_9.$28x=(isc.Browser.isIE&&!isc.Browser.isIEStrict)?" STYLE='":" STYLE='OVERFLOW:hidden;";_9.$28y=this.$ob}else{var _10=isc.Browser.isIE8Strict?" STYLE='overflow:hidden;":" STYLE='";_9.$28x=(isc.Browser.isIE?" WIDTH="+(_6[_8]-_3)+_10:" STYLE='"+this.$28z(_8));if(_4){_9.$28y=this.$280(_8)+this.$ob}}
+if(!this.fixedRowHeights){_9.$28x+=this.$281()}
+if(this.fixedRowHeights)_9.$28x+="padding-top:0px;padding-bottom:0px;"}}
+,isc.A.$28v=function isc_GridRenderer__writeDiv(_1){return(isc.Browser.isSafari||(isc.Browser.isOpera&&!this.autoFit&&(this.fixedColumnWidths||this.fixedRowHeights))||(isc.Browser.isMoz&&isc.Browser.geckoVersion>=20040113&&this.fixedColumnWidths&&!this.autoFit)||(this.fixedRowHeights&&(this.wrapCells||this.enforceVClipping)&&(isc.Browser.isMoz||(isc.Browser.isStrict&&isc.Browser.isIE))))}
+,isc.A.$282=function isc_GridRenderer__drawRecordAsSingleCell(_1,_2){return(_2&&(_2[this.singleCellValueProperty]!=null||_2[this.isSeparatorProperty]||(Array.isLoading(_2)&&!(isc.Browser.isSafari&&(_1==0||_1==this.$252)))))}
+,isc.A.$283=function isc_GridRenderer__getCellDivCSSHeight(_1,_2,_3,_4){var _5=_4||(this.fixedRowHeights&&(this.enforceVClipping||this.wrapCells)&&(this.shouldFixRowHeight==null||this.shouldFixRowHeight(_2,_3)!=false));if(_5){var _6=_1-2*this.cellSpacing-
+(_4?0:2);if(_3==this.$285){for(var i=0;i<this.$286.getItems().length;i++){_6=Math.max(this.$286.getItems()[i].getHeight(),this.$286.getItems()[i].iconHeight)}}
+if(_6<1)_6=1;return(isc.Browser.isMoz||isc.Browser.isSafari?"MAX-HEIGHT:":"HEIGHT:")+_6+"px;"}
+return isc.$ad}
+,isc.A.$280=function isc_GridRenderer__getFieldDivWidthHTML(_1){if(!this.fixedColumnWidths||this.autoFit)return isc.emptyString;return"WIDTH:"+this.getInnerColumnWidth(_1)+"px;"}
+,isc.A.$281=function isc_GridRenderer__getMinHeightCSSText(_1,_2){var _3=(_2!=null?this.getRowHeight(_1,_2):this.cellHeight),_4=isc.Browser.isIE,_5=isc.Browser.isStrict;if(_5&&(_4||isc.Browser.isSafari))_3-=this.$28t;if(_4&&!_5&&!(this.autoFit||!this.fixedColumnWidths)){return"MIN-HEIGHT:"+_3+"px;"}
+return"HEIGHT:"+_3+"px;"}
+,isc.A.$28z=function isc_GridRenderer__getCSSTextForColWidth(_1){if(isc.Browser.isIE||this.autoFit)return isc.$ad;if(this.$287==null){this.$287=[];for(var i=0;i<this.$26a.length;i++){var _3=this.$26a[i];this.$287[i]="WIDTH:"+_3+(this.fixedColumnWidths?"px;OVERFLOW:hidden;":"px;")}}
+return this.$287[_1]}
+,isc.A.getCellRecord=function isc_GridRenderer_getCellRecord(_1,_2){return null}
+,isc.A.findRowNum=function isc_GridRenderer_findRowNum(_1){return-1}
+,isc.A.findColNum=function isc_GridRenderer_findColNum(_1){return-1}
+,isc.A.$22k=function isc_GridRenderer__getCellValue(_1,_2,_3){var _4=this.getCellValue(_1,_2,_3,this);if(!this.isPrinting&&this.$80g(_1)){var _5=this.$667(_1);if(_5.allWithin){if(_5.extraHeight&&(_5.extraHeight>this.cellHeight)){_4=[_4,this.$80q,isc.Canvas.spacerHTML(1,_5.extraHeight-this.cellHeight),this.$80r].join(isc.emptyString)}}else if(_5.extraHeight&&_5.extraHeight>0){_4=[_4,this.$80q,isc.Canvas.spacerHTML(1,_5.extraHeight),this.$80r].join(isc.emptyString)}}else if(_1&&_1.$29a!=null){var _6=_1.$29a||[];for(var i=0;i<_6.length;i++){var _8=_1.$29a[i];if(_8==null)continue;if(_8.$57n!=_3)continue;var _9=(_8.embeddedPosition==this.$57l);var _10=_8.$80t;if(_10!=null){_4+=_9?this.$80q+_10+this.$80r:_10;delete _8.$80t}}}
+return _4}
+,isc.A.$80g=function isc_GridRenderer__writeEmbeddedComponentSpacer(_1){return(_1&&_1.$29a)!=null}
+,isc.A.getCellValue=function isc_GridRenderer_getCellValue(_1,_2,_3){return this.emptyCellValue}
+,isc.A.getTotalRows=function isc_GridRenderer_getTotalRows(){return this.totalRows}
+);isc.evalBoundary;isc.B.push(isc.A.setColumnWidth=function isc_GridRenderer_setColumnWidth(_1,_2){this.fields[_1].width=this.$26a[_1]=_2;this.$287=null;this.markForRedraw("setColumnWidth")}
+,isc.A.setColumnWidths=function isc_GridRenderer_setColumnWidths(_1){var _2=this.$26a;this.$26a=_1.duplicate();this.$287=null;if(_2!=null&&_1!=null&&_2.length==_1.length){if(_2==_1)return;var _3=false;for(var i=0;i<_2.length;i++){if(_2[i]!=_1[i])_3=true}
+if(!_3)return;if(!this.fixedColumnWidths&&!this.wrapCells&&this.isDrawn()&&_1.length==1){var _5=this.$28r||_2[0],_6=_1[0],_7=this.getColumnSize(0);if((_5==_6)||(_7>_5&&_7>=_6)){return}}}
+this.markForRedraw("setColumnWidths")}
+,isc.A.shouldRedrawOnResize=function isc_GridRenderer_shouldRedrawOnResize(_1,_2,_3){if(this.redrawOnResize!=null)return this.redrawOnResize;if(isc.isA.ListGrid(this.parentElement)&&isc.isA.Layout(this.parentElement.parentElement))
+{var _4=this.parentElement.parentElement.getMembers();if(_4&&_4.map("isAnimating").or())return false}
+if(this.$276()||this.$277())return true;if(this.isEmpty())return true;return false}
+,isc.A.getRowHeight=function isc_GridRenderer_getRowHeight(_1,_2){var _3=this.updateHeightForEmbeddedComponents(_1,_2,this.cellHeight);return _3}
+,isc.A.updateHeightForEmbeddedComponents=function isc_GridRenderer_updateHeightForEmbeddedComponents(_1,_2,_3){if(_1&&_1.$29a){var _4=this.$667(_1,_2);if(_4.allWithin&&_4.extraHeight>0){_3=Math.max(_3,_4.extraHeight)}else{_3+=_4.extraHeight}}
+return _3}
+,isc.A.$667=function isc_GridRenderer__getExtraEmbeddedComponentHeight(_1,_2){var _3=_1.$29a||[],_4=0,_5=true,_6=this.isPrinting;for(var i=0;i<_3.length;i++){var _8=_1.$29a[i];if(_6)continue;if(_2!=null)_8.$289=_2;var _9=(_8.embeddedPosition==this.$57l);if(!_9)_5=false;var _10=_8.getVisibleHeight();var _11=(_9?(_10>this.cellHeight?_10:0):_10);if(_8._percent_height!=null){_8.height=_8._percent_height;_11=this.cellHeight}
+var _12=_8.specifiedHeight;if(_9&&_12&&isc.isA.String(_12)&&_12.contains("%"))
+_11=0;if(_11>_4){_4=_11}}
+return{allWithin:_5,extraHeight:_4}}
+,isc.A.getCellStartRow=function isc_GridRenderer_getCellStartRow(_1,_2){var _3=this.fields[_2].$28w;if(_3==null||_3[_1]==null)return _1;return _3[_1]}
+,isc.A.getCellRowSpan=function isc_GridRenderer_getCellRowSpan(_1,_2){var _3=this.fields[_2].$28w;var _4=this.getCellStartRow(_1,_2);if(_4==_1)return 1;var _5=_1+1,_6=_1-_4+1;while(_5<=this.$253&&_3[_5]==_4)
+{_5++;_6++}
+return _6}
+,isc.A.addEmbeddedComponent=function isc_GridRenderer_addEmbeddedComponent(_1,_2,_3,_4,_5){if(_5==null)_5=this.$57m;var _6=((_5==this.$57m)||!this.fixedRowHeights);if(!isc.isA.Canvas(_1)){_1.autoDraw=false;var _7=isc.ClassFactory.getClass(_1._constructor);if(_7==null)_7=isc.Canvas;_1=_7.create(_1)}
+var _8=false;if(this.$29a&&this.$29a.contains(_1)){if(_2.$29a&&_2.$29a.contains(_1)&&_1.embeddedPosition==_5&&_1.$289==_3&&_1.$57n==_4)
+{return}
+if(_5==_1.embeddedPosition&&!_6){_8=!this.isDirty()}
+this.removeEmbeddedComponent(_1.embeddedRecord,_1,true)}else if(!_6){_8=!this.isDirty()}
+if(!_2.$29a)_2.$29a=[];_2.$29a.add(_1);if(this.$29a==null)this.$29a=[];this.$29a.add(_1);_1.embeddedPosition=_5;_1.embeddedRecord=_2;_1.$289=_3;_1.$57n=_4;_1.$669=this.getID();_1.percentBox="custom";if(_1.parentElement!=this){var _9=this.$417;this.$417=true;_1.hide();this.addChild(_1);if(_9==null)delete this.$417}
+this.observe(_1,"resized","observer.$80d(observed, deltaX, deltaY)");_1.$29b=_1._redrawWithParent;_1._redrawWithParent=false;_1.$668=_1.bubbleMouseEvents;if(!_1.bubbleMouseEvents){_1.bubbleMouseEvents=["mouseDown","mouseUp","click","doubleClick","contextClick"]}
+if(_8&&(_3==-1||_4==-1)){_8=false}
+if(_8){this.placeEmbeddedComponent(_1)}else{this.markForRedraw("added embedded component")}
+return _1}
+,isc.A.$80d=function isc_GridRenderer__handleEmbeddedComponentResize(_1,_2,_3){var _4=_1.embeddedPosition;if(_4!=this.$57l){if(_3!=null&&_3!=0)this.markForRedraw('embedded component resized')}else{this.placeEmbeddedComponent(_1)}}
+,isc.A.updateEmbeddedComponentCoords=function isc_GridRenderer_updateEmbeddedComponentCoords(_1,_2,_3,_4){_1.setProperty("$289",_3)}
+,isc.A.placeEmbeddedComponent=function isc_GridRenderer_placeEmbeddedComponent(_1){var _2=_1.$289;if(_2==null||(this.$252==null||this.$253==null)||(_2<this.$252||_2>this.$253))
+{if(_1.isDrawn())_1.clear();return}
+var _3=_1.embeddedRecord,_4=_1.embeddedPosition,_5=_1.$57n,_6=this.getRowTop(_2),_7=_5!=null?this.getColumnLeft(_5):0,_8=(_5!=null&&_5>=0)?this.getColumnWidth(_5):Math.min(this.getInnerWidth()+this.getScrollLeft(),this.$26a.sum());if(_4==this.$57l){var _9=this.getEmbeddedComponentSnapTo(_1,_3,_2,_5),_10=_1.snapEdge||_9;var _11=this.getRowSize(_2),_12=_1._percent_width,_13=_1._percent_height,_14,_15;var _16=0,_17=_3.$29a;for(var i=0;i<_17.length;i++){var _19=_3.$29a[i];var _20=(_19.embeddedPosition==this.$57l);if(_20)continue;var _21=_19.getVisibleHeight();if(_21>_16){_16=_21}}
+_11-=_16;if(_1.snapOffsetLeft)_8-=_1.snapOffsetLeft;if(isc.isA.String(_12)&&_12.endsWith("%")){_14=Math.round((parseInt(_12)*_8)/100)}
+if(isc.isA.String(_13)&&_13.endsWith("%")){_15=Math.round((parseInt(_13)*_11)/100)}
+var _22=_15!=null?_15:_1.getHeight(),_23=_14!=null?_14:_1.getWidth();if(_15||_14){_1.resizeTo(_14,_15);_1._percent_width=_12;_1._percent_height=_13}
+isc.Canvas.snapToEdge([_7,_6,_8,_11],_9,_1,_10)}else{_1.moveTo(_7,_6);_1.setWidth(_8)}
+var _24=this.isDrawn();if(_24&&!_1.isDrawn())_1.draw();var _25=this.isDirty(),_26=this.getRowHeight(_3,_2),_27=!this.isDirty()||_25;if(_27&&(_26!=this.getRowSize(_2))){this.setRowHeight(_2,_26,_3);this.refreshRow(_2)}
+if(_24){if(_4!=this.$57l){var _28=this.getDrawnRowHeight(_2)-_1.getVisibleHeight()-1;_1.moveTo(null,this.getRowTop(_2)+_28)}
+if(!_1.isVisible()){if(this.shouldAnimateEmbeddedComponent(_1)){_1.animateShow()}else{_1.show()}}}
+this.updateEmbeddedComponentZIndex(_1)}
+,isc.A.getEmbeddedComponentSnapTo=function isc_GridRenderer_getEmbeddedComponentSnapTo(_1,_2,_3,_4){if(_1.snapTo!=null)return _1.snapTo;if(_4==null){return"TL"}
+var _5=this.getCellAlign(_2,this.fields[_4],_3,_4)||"center",_6=this.getCellVAlign(_2,this.fields[_4],_3,_4)||"center";var _7=this.alignSnapToMap[_5][_6];return _7}
+,isc.A.shouldAnimateEmbeddedComponent=function isc_GridRenderer_shouldAnimateEmbeddedComponent(_1){return false}
+,isc.A.updateEmbeddedComponentZIndex=function isc_GridRenderer_updateEmbeddedComponentZIndex(_1){}
+,isc.A.getEmbeddedComponent=function isc_GridRenderer_getEmbeddedComponent(_1,_2){if(isc.isA.Number(_1))_1=this.getCellRecord(_1,0);var _3=_1.$29a;if(_3==null)return;var _4=null;if(isc.isA.Number(_2))
+_4=_3.find({$57n:_2,$669:this.getID()});return _4}
+,isc.A.removeEmbeddedComponent=function isc_GridRenderer_removeEmbeddedComponent(_1,_2,_3){if(isc.isA.Number(_1))_1=this.getCellRecord(_1,0);var _4=_1.$29a;if(_4==null)return;if(isc.isA.Number(_2))
+_2=_4.find({$57n:_2,$669:this.getID()});if(!_2)
+_2=_4.find({$669:this.getID()});if(!_4.contains(_2))return;if(this.isObserving(_2,"resized")){this.ignore(_2,"resized")}
+_1.$29a.remove(_2);if(_1.$29a.length==0)_1.$29a=null;if(this.$29a)this.$29a.remove(_2);_2._redrawWithParent=_2.$29b;_2.$29b=null;_2.bubbleMouseEvents=_2.$668;var _5=_2.embeddedPosition==this.$57m;_2.embeddedPosition=null;_2.$289=null;_2.$57n=null;_2.$669=null;if(_3){_2.hide();return}
+if(_2.destroyOnUnEmbed)_2.destroy();else{this.removeChild(_2)}
+if(_5){this.markForRedraw("removed embedded component")}}
+,isc.A.$29c=function isc_GridRenderer__resetEmbeddedComponents(){var _1=this.$29a;if(_1==null)return;_1.setProperty("$289",null)}
+,isc.A.$29d=function isc_GridRenderer__placeEmbeddedComponents(){var _1=this.$29a;if(_1==null)return;_1.sortByProperty("$289",true);for(var i=0;i<_1.length;i++){this.placeEmbeddedComponent(_1[i])}}
+,isc.A.getTableZIndex=function isc_GridRenderer_getTableZIndex(){return 1000}
+,isc.A.getCellStyle=function isc_GridRenderer_getCellStyle(_1,_2,_3){if(_1&&_1[this.recordCustomStyleProperty]!=null){return _1[this.recordCustomStyleProperty]}
+var _4=this.getCellStyleIndex(_1,_2,_3);return this.getCellStyleName(_4,_1,_2,_3)}
+,isc.A.getCellStyleName=function isc_GridRenderer_getCellStyleName(_1,_2,_3,_4){var _5=isc.GridRenderer.standardStyleSuffixes;if(this.getBaseStyle){var _6=this.getBaseStyle(_2,_3,_4);if(_6!==this.baseStyle){if(_1==0)return _6;return _6+_5[_1]}}
+if(!this.$29e){this.$29e=[];for(var i=0;i<_5.length;i++){this.$29e[i]=this.baseStyle+_5[i]}}
+return this.$29e[_1]}
+,isc.A.getCellStyleIndex=function isc_GridRenderer_getCellStyleIndex(_1,_2,_3){var _4=0;var _5=true;if(this.grid!=null){var _6=this.grid.getField(this.grid.getFieldNumFromLocal(_3,this));_5=!_6?true:_6.showAlternateStyle!=false}
+if(this.alternateRowStyles&&_5){var _7=(Math.floor(_2/ this.alternateRowFrequency)%2==1);if(_7)_4+=8}
+if(!this.cellIsEnabled(_2,_3)){_4+=4}else{if(this.shouldShowRollOver(_2,_3)&&!this.isPrinting&&_2==this.lastOverRow&&(!this.useCellRollOvers||_3==this.lastOverCol))
+{_4+=1}
+if(this.showSelectedStyle&&this.selectionEnabled()){var _8=(this.canSelectCells?this.selection.cellIsSelected(_2,_3):this.selection.isSelected(_1));if(_8)_4+=2}}
+return _4}
+,isc.A.cellIsEnabled=function isc_GridRenderer_cellIsEnabled(_1,_2){return true}
+,isc.A.getTableElementId=function isc_GridRenderer_getTableElementId(){return this.getCanvasName()+"table"}
+,isc.A.getDOMTable=function isc_GridRenderer_getDOMTable(_1,_2){if(this.cacheDOM)return this.getTableChunkAt(_1,_2);if((_1!=null&&(_1-this.$252<0||_1>this.$253))||(_2!=null&&(_2-this.$254<0||_2>this.$255)))
+return null;var _3=this.$29f;if(_3==null){var _4=this.getTableElementId();var _3=isc.Element.get(_4);if(_3==null)return null;if(this.$756){this.logInfo("getTableElement() called while updating table HTML. "+"This call may be invalid as the table is being rewritten in the DOM. "+"Suppressing caching of the current element.","redrawing");return _3}}
+return this.$29f=_3}
+,isc.A.getTableElement=function isc_GridRenderer_getTableElement(_1,_2){var _3=this.getDOMTable(_1,_2);if(_1==null)return _3;if(!_3)return null;var _4=_1-(this.$252>0?this.$252:0);if(_4<0){return null}
+var _5;if(this.$29g!=null)_5=this.$29g[_4];if(_5==null)_5=_3.rows[_4];if(_5==null)return null;if(!this.$756){if(this.$29g==null)this.$29g=[];this.$29g[_4]=_5}
+if(_2==null)return _5;var _6=_2-this.$254;if(_6<0){return null}
+if(this.getRowSpan){var _7=this.getCellStartRow(_1,_6);if(_7!=_4){_4=_7;_5=this.getTableElement(_7)}
+if(_5.cells.length<(this.$255-this.$254+1)){var _8=0;for(var i=0;i<_6;i++){if(this.fields[i].$28w!=null&&this.fields[i].$28w[_4]!=null&&this.fields[i].$28w[_4]!=_4)_8++}
+_6-=_8}}
+return _5.cells[_6]}
+,isc.A.$29h=function isc_GridRenderer__updateCellStyle(_1,_2,_3,_4,_5){if(_4==null)_4=this.getTableElement(_2,_3);if(_4==null)return;if(_1==null)_1=this.getCellRecord(_2,_3);if(_5==null)_5=this.getCellStyle(_1,_2,_3);if(this.fastCellUpdates){_4.style.cssText=this.$29i(_1,_2,_3,_5)}else{if(_4.className!=_5)_4.className=_5;if(this.getCellCSSText){_4.style.cssText=this.$29i(_1,_2,_3,_5)}}
+if(this.shouldRefreshCellHTML(_1,_2,_3)){this.refreshCellValue(_2,_3)}
+if(!this.isDrawn())return;var _6=this.fixedRowHeights&&(this.shouldFixRowHeight==null||this.shouldFixRowHeight(_1,_2)!=false),_7=(this.getRowHeight!=null?this.getRowHeight(_1,_2):this.cellHeight);this.setRowHeight(_2,_7,_1,_5,_6)}
+,isc.A.$28g=function isc_GridRenderer__getCellClipDiv(_1){if(_1==null)return null;var _2=_1.childNodes[0];if(!_2)return null;if(_2.tagName==this.$27t)_2=_2.childNodes[0];if(_2&&(_2.cellClipDiv||(_2.getAttribute&&_2.getAttribute(this.$27u))))
+{return _2}
+return null}
+,isc.A.setRowHeight=function isc_GridRenderer_setRowHeight(_1,_2,_3,_4,_5,_6){var _7=this.$254,_8=this.$255;if(_5==null){if(_3==null)_3=this.getCellRecord(_1,_7);_5=this.fixedRowHeights&&(this.shouldFixRowHeight==null||this.shouldFixRowHeight(_3,_1)!=false)}
+var _9=this.getTableElement(_1,_7),_10=_9?parseInt(_9.height):null,_11;if(!isc.isA.Number(_10))_10=null;if((isc.Browser.isSafari||isc.Browser.isIE)&&isc.Browser.isStrict){if(_3==null)_3=this.getCellRecord(_1,_7);var _12=_4;if(_12==null)_12=this.getCellStyle(_3,_1,_7)
+_2-=this.fixedRowHeights?isc.Element.$ym(_12):isc.Element.$yo(_12);if(!this.fixedRowHeights)_2-=(this.cellPadding*2)}
+if((!_5&&_10!=null)||(_10!=_2&&!(_10==null&&_2==isc.emptyString)))
+{_11=true}
+if(!_11)return;var _13=isc.isA.Number(_2);if(_13&&_2<=0)_2=_5?0:1;var _14=this.getTableElement(_1);if(_2==0&&_5){_14.style.display="none"}else{_14.style.display=isc.emptyString;for(var i=_7;i<=_8;i++){var _16=this.getTableElement(_1,i);if(_16){var _17=(!isc.Browser.isIE||isc.Browser.isStrict)?this.$o5:this.$27v;if(_5){_16.height=_2;_16.style[_17]=isc.emptyString}else{_16.height=isc.emptyString;_16.style[_17]=_2}
+var _18=this.$28g(_16),_19=(_5?(_13?_2+isc.px:_2):isc.emptyString);if(_18){if(isc.Browser.isMoz||isc.Browser.isSafari)
+_18.style.maxHeight=_19;else
+_18.style.height=_19}}}}
+if(isc.Browser.isSafari&&this.$28o){var _20=this.getTableElement(_1);if(_20!=null){_20.innerHTML=_20.innerHTML}}
+this.$29j();if(_6){this.adjustOverflow("cell height changed")}else{this.$t6("cell height changed")}}
+,isc.A.$29i=function isc_GridRenderer__getCompleteCellCSSText(_1,_2,_3,_4){var _5=null;if(this.fixedRowHeights)_5=this.$721;else{_5=this.$281(_1,_2)}
+if(isc.Browser.isIE8Strict){if(_5==null)_5=this.$722;else _5+=this.$722}
+if(isc.Browser.isMoz||isc.Browser.isSafari){if(_5==null)_5=this.$28z(_3);else _5+=this.$28z(_3)}
+if(this.fastCellUpdates){if(_4==null)_4=this.getCellStyle(_1,_2,_3);var _6=isc.Element.getStyleText(_4,true);if(_6==null&&isc.Page.$29k){this.logInfo("fastCellUpdates set to true but this page loads styles from a "+"remote stylesheet. This is unsupported - disabling fastCellUpdates.");this.fastCellUpdates=false;this.redraw()}
+if(_5!=null)_5+=_6;else _5=_6}
+if(this.getCellCSSText){var _7=this.getCellCSSText(_1,_2,_3)
+if(_7!=null){if(!_7.endsWith(this.$39)){_7+=this.$39}
+if(_5!=null)_5+=_7
+else _5=_7}}
+return _5}
+,isc.A.shouldRefreshCellHTML=function isc_GridRenderer_shouldRefreshCellHTML(_1,_2,_3){return this.showHiliteInCells}
+,isc.A.$29l=function isc_GridRenderer__readyToRefreshCell(_1,_2){if((isc.EH.$ku||isc.EH.$km)&&isc.EH.lastEvent.target==this){var _3=this.getEventRow();if(_3!=_1)return true;if(_2!=null){var _4=this.getEventColumn();if(_2!=_4)return true}
+return false}
+return true}
+,isc.A.refreshCellValue=function isc_GridRenderer_refreshCellValue(_1,_2){var _3=this.getTableElement(_1,_2);if(!_3)return;if(!this.$29l(_1,_2)){this.delayCall("refreshCellValue",[_1,_2]);return}
+var _4=this.getCellRecord(_1,_2),_5=this.fields[_2];if(!_5){this.logDebug("refreshCell called for invalid field "+_2);return}
+var _6="";var _7=this.getCellStyle(_4,_1,_2),_8=this.$28v(_9);if(_8){_6+=this.$27s;var _9=(this.getRowHeight!=null?this.getRowHeight(_4,_1):this.cellHeight);_6+=this.$283(_9,_4,_1);var _10=this.$282(_1,_4);if(!_10){_6+=this.$280(_2)}
+_6+="'>"}
+if(!this.wrapCells)_6+="<NOBR>";_6+=this.$22k(_4,_1,_2);if(!this.wrapCells)_6+="</NOBR>";if(_8)_6+="</DIV>";_3.innerHTML=_6}
+,isc.A.setCellStyle=function isc_GridRenderer_setCellStyle(_1,_2,_3){return this.setRowStyle(_1,_3,_2)}
+,isc.A.setRowStyle=function isc_GridRenderer_setRowStyle(_1,_2,_3){if(isc.$cv)arguments.$cw=this;if(_1==null||_1<0){this.logWarn("setRowStyle: bad rowNum: "+_1);return false}
+var _4=this.getTableElement(_1,_3);if(_4==null){return false}
+var _5=this.getCellRecord(_1,_3);if(_5&&_5.$29m){return}
+if(_3!=null){this.$29h(_5,_1,_3,_4,_2)}else{var _6=this.getTableElement(_1);if(_6!=null){var _7="TD",_8=(!this.shouldShowAllColumns()?this.$254:0),_9=(!this.shouldShowAllColumns()?this.$255:this.fields.length-1),_10=0;for(var _11=_8;_11<=_9;_11++,_10++){var _4;if(this.showColumnsSeparately||this.cacheDOM){_4=this.getTableElement(_1,_11)}else{_4=_6.cells[_10]}
+if(_4==null)continue;this.$29h(_5,_1,_11,_4,_2)}}}
+return true}
+,isc.A.refreshCellStyle=function isc_GridRenderer_refreshCellStyle(_1,_2,_3){return this.setCellStyle(_1,_2,_3)}
+,isc.A.refreshCell=function isc_GridRenderer_refreshCell(_1,_2){this.refreshCellStyle(_1,_2);if(!this.shouldRefreshCellHTML())this.refreshCellValue(_1,_2)}
+,isc.A.refreshRow=function isc_GridRenderer_refreshRow(_1){if(!this.$29l(_1)){this.delayCall("refreshRow",[_1])}
+for(var i=0;i<this.fields.length;i++){this.refreshCell(_1,i)}}
+,isc.A.refreshCellStyles=function isc_GridRenderer_refreshCellStyles(_1,_2){this.logDebug("refreshing cell styles: "+_1.length+" cells");for(var i=0;i<_1.length;i++){var _4=_1[i][0],_5=_1[i][1];var _6=this.getTableElement(_4,_5);if(_6==null){continue}else{this.$29h(null,_4,_5,_6,_2)}}
+return true}
+,isc.A.getCellPageRect=function isc_GridRenderer_getCellPageRect(_1,_2){return[this.getColumnPageLeft(_2),this.getRowPageTop(_1),this.getColumnSize(_2),this.getRowSize(_1)]}
+,isc.A.getColumnLeft=function isc_GridRenderer_getColumnLeft(_1){if(this.isRTL()){return this.getScrollWidth()-this.$26a.sum(0,_1+1)-
+(this.vscrollOn?this.getScrollbarSize():0)}else{return this.$26a.sum(0,_1)}}
+,isc.A.getColumnPageLeft=function isc_GridRenderer_getColumnPageLeft(_1){return this.getPageLeft()-this.getScrollLeft()+this.getColumnLeft(_1)+(this.isRTL()&&this.vscrollOn?this.getScrollbarSize():0)}
+,isc.A.getColumnWidth=function isc_GridRenderer_getColumnWidth(_1){return this.$26a[_1]}
+,isc.A.getInnerColumnWidth=function isc_GridRenderer_getInnerColumnWidth(_1){var _2=this.getColumnWidth(_1);if(_2==null)return null;return(_2-(2*this.cellSpacing+this.$54q()))}
+,isc.A.$54q=function isc_GridRenderer__getCellHBorderPad(_1){if(!_1&&this.$54r!=null)return this.$54r;var _2=this.$54p(),_3=isc.Element.$tr(_2,true),_4=isc.Element.$ts(_2,true),_5=isc.Element.$yn(_2);if(_3==null)_3=this.cellPadding;if(_4==null)_4=this.cellPadding;this.$54r=(_3+_4+_5);return this.$54r}
+,isc.A.getRowTop=function isc_GridRenderer_getRowTop(_1){if(_1<this.$252)return this.getAvgRowHeight()*_1;var _2=this.$29n(),_3=this.$26b();if(_1>this.$253){return _2+_3.sum()+(((_1-1)-this.$253)*this.getAvgRowHeight())}
+return _2+_3.sum(0,_1-this.$252)}
+,isc.A.getRowPageTop=function isc_GridRenderer_getRowPageTop(_1){return this.getPageTop()+this.getTopBorderSize()+(this.getRowTop(_1)-this.getScrollTop())}
+,isc.A.getRowSize=function isc_GridRenderer_getRowSize(_1){return this.getDrawnRowHeight(_1)}
+,isc.A.getDrawnRowHeight=function isc_GridRenderer_getDrawnRowHeight(_1){if(this.$252==null||this.$253==null||_1<this.$252||_1>this.$253)
+{return this.getAvgRowHeight()}
+var _2=_1-this.$252,_3=this.$26b();return _3[_2]}
+,isc.A.getColumnSize=function isc_GridRenderer_getColumnSize(_1){if((this.fixedFieldWidths&&!this.autoSize)||(_1<this.$254||_1>this.$255))
+{return this.getColumnWidth(_1)}
+var _2=_1-this.$254,_3=this.getColumnSizes();return _3[_2]}
+,isc.A.$29n=function isc_GridRenderer__getUndrawnHeight(){return this.$252*this.getAvgRowHeight()}
+,isc.A.$26b=function isc_GridRenderer__getDrawnRowHeights(){if(this.$8s!=null)return this.$8s;var _1=this.$8s=[];var _2=this.getTableElement();if(!_2||!_2.rows){delete this.$8s;return _1}
+var _3=this.getDrawnRows(),_4=_3[1]-_3[0]+1,_5=false;for(var _6=0;_6<=_4;_6++){var _7=this.cacheDOM?this.getTableElement(_6+this.$252):_2.rows[_6];if(_7){var _8=isc.Browser.isSafari&&isc.Browser.safariVersion<500;if(this.getRowSpan&&this.fullRowSpans){_1[_6]=_7.offsetHeight;_5=true;continue}
+var _9=(_8&&(this.fixedRowHeights==false||(this.shouldFixRowHeight!=null&&this.shouldFixRowHeight(this.getCellRecord(_6),_6)==false))),_10,_11=[];if(!_8||!_9){_10=_7.cells[_7.cells.length-1]}else{for(var k=0;k<_7.cells.length;k++){_11[k]=_7.cells[k]}}
+if(_9){_1[_6]=0;for(var _13=0;_13<_11.length;_13++){var _14=_11[_13],_15=_14.offsetHeight;var _16=parseInt(_14.style?_14.style.height:null);if(isc.Browser.isStrict){if(this.cellPadding)_16+=this.cellPadding;_16+=isc.Element.$yo(_14.className)}
+if(isc.isA.Number(_16)&&_16>_15)
+_15=_16;if(_15>_1[_6])_1[_6]=_15}
+_1[_6]+=this.cellSpacing}else if(_10){if(!_8){_1[_6]=_10.offsetHeight}else{var _17=parseInt(_10.height);if(_17!=null&&isc.isA.Number(_17)){if(isc.Browser.isStrict){_17+=isc.Element.$ym(_10.className)}}else{_17=_10.offsetHeight||0}
+_1[_6]=_17}
+_1[_6]+=this.cellSpacing}}
+var _15=_1[_6];if(_15!=0&&_15!=null)_5=true}
+_1[0]+=this.cellSpacing;if(!_5){this.logWarn("row heights not yet available; returning all zeroes");this.$8s=null}
+if(isc.Browser.isSafari&&!isc.Page.isLoaded())this.$8s=null;return _1}
+,isc.A.getColumnSizes=function isc_GridRenderer_getColumnSizes(){if(this.$29o!=null)return this.$29o;if(!this.isDrawn())return this.$26a.duplicate()||[];if(this.fixedColumnWidths&&isc.Browser.version>=5){return(this.$29o=this.$26a.duplicate())}else{var _1=this.$29o=[];var _2=this.getTableElement(this.$252);if(_2==null){this.$29o=_1.concat(this.$26a);return this.$29o}
+var _3=(isc.Browser.isMac?this.cellSpacing:0);for(var _4=0;_4<this.fields.length;_4++){var _5;if(this.showColumnsSeparately){_5=this.getTableElement(this.$252,_4)}else if(!(isc.Browser.isSafari&&isc.Browser.safariVersion<125)){_5=_2.cells[_4]}
+if(_5){_1[_4]=_5.offsetWidth+_3}else{_1[_4]=this.$26a[_4]}}
+this.innerWidth=this.getTableElement().offsetWidth;return _1}}
+,isc.A.getEventRow=function isc_GridRenderer_getEventRow(_1){if(this.isEmpty())return-2;if(_1==null)_1=this.getOffsetY();if(this.startSpace)_1-=this.startSpace;var _2=this.$29n();if(_1<=_2)return Math.floor(_1/ this.getAvgRowHeight());var _3=_1-_2,_4=this.$26b();var _5=this.inWhichPosition(_4,_3),_6;if(_5>=0){_6=this.$252+_5}else{var _7=_3-_4.sum();_6=this.$253+1+Math.floor(_7/ this.getAvgRowHeight());if(_6>=this.getTotalRows())_6=-2}
+return _6}
+,isc.A.getEventColumn=function isc_GridRenderer_getEventColumn(_1){var _2=this.getColumnSizes();if(_1==null)_1=this.getOffsetX();return this.inWhichPosition(_2,_1,this.getTextDirection())}
+,isc.A.getFocusRow=function isc_GridRenderer_getFocusRow(){return 0}
+,isc.A.getFocusCol=function isc_GridRenderer_getFocusCol(){return 0}
+,isc.A.getNativeFocusRow=function isc_GridRenderer_getNativeFocusRow(){var _1=this.$86b;if(_1==null)_1=this.getFocusRow();var _2=this.getDrawnRows();if(_2!=null&&_2.length>0&&(_1==null||_1<_2[0]||_1>_2[1])){_1=this.$27x()[0];if(this.getRowTop(_1)<this.getScrollTop())_1+=1}
+return _1}
+,isc.A.getNearestRowToEvent=function isc_GridRenderer_getNearestRowToEvent(){var _1=this.getEventRow();if(_1<0){var _2=this.getVisibleRows();if(_1==-1)return _2[0];if(_1==-2)return _2[1]}
+return _1}
+,isc.A.getNearestColToEvent=function isc_GridRenderer_getNearestColToEvent(){var _1=this.getEventColumn();if(_1<0){var _2=this.getVisibleColumns();if(_1==-1)return _2[0];if(_1==-2)return _2[1]}
+return _1}
+,isc.A.$27x=function isc_GridRenderer__getViewportFillRows(){var _1=Math.floor(this.getScrollTop()/this.getAvgRowHeight()),_2=_1+Math.ceil(this.getViewportHeight()/this.cellHeight);if(this.startSpace){var _3=Math.floor(this.startSpace/ this.getAvgRowHeight());_1=Math.max(0,_1-_3);_2=Math.max(0,_2-_3)}
+var _4=this.virtualScrolling&&!this.fixedRowHeights&&this.$27y!=null;if(_4){if(_1==0&&_2>=(this.getTotalRows()-1))_4=false}
+if(!_4)return[_1,_2];var _5=this.$27y;if(this.$27z<0)_5+=Math.floor(this.$27z/ this.cellHeight);if(_5<0)_5=0;var _6=_5+Math.ceil(this.getViewportHeight()/this.cellHeight);return[_5,_6]}
+,isc.A.getAvgRowHeight=function isc_GridRenderer_getAvgRowHeight(){return this.fixedRowHeights?this.cellHeight:Math.max(this.cellHeight,this.avgRowHeight)}
+,isc.A.getVisibleRows=function isc_GridRenderer_getVisibleRows(){var _1=this.getScrollTop();var _2=[this.getEventRow(_1),this.getEventRow(_1+this.getInnerHeight())];if(_2[1]==-2){var _3=this.getTotalRows();if(_3==0){_2[0]=-1;_2[1]=-1}else{_2[1]=this.getTotalRows()-1}}
+return _2}
+,isc.A.getVisibleColumns=function isc_GridRenderer_getVisibleColumns(){var _1=this.$26a;if(this.overflow==isc.Canvas.VISIBLE)return[0,_1.length-1];var _2=this.getScrollLeft();if(this.isRTL()){var _3=this.getScrollWidth()-this.getInnerWidth(),_2=_3-_2}
+var _4=this.inWhichPosition(_1,_2),_5=this.inWhichPosition(_1,_2+this.getInnerWidth());if(_5==-2)_5=this.$26a.length-1;return[_4,_5]}
+,isc.A.getDrawnRows=function isc_GridRenderer_getDrawnRows(){if(this.cacheDOM)return this.getVisibleRows();return[this.$252,this.$253]}
+,isc.A.shouldShowRollOver=function isc_GridRenderer_shouldShowRollOver(_1,_2){return(this.showRollOver&&!this.$28j)}
+,isc.A.updateRollOver=function isc_GridRenderer_updateRollOver(_1,_2){this.setRowStyle(_1,null,(this.useCellRollOvers?_2:null))}
+,isc.A.startHover=function isc_GridRenderer_startHover(){}
+,isc.A.mouseMove=function isc_GridRenderer_mouseMove(_1,_2){if(this.$29p())return;var _3=this.getEventRow(),_4=this.getEventColumn();var _5=(_3>=0&&_4>=0&&this.cellIsEnabled(_3,_4));var _6=this.lastOverRow,_7=this.lastMouseOverRow,_8=this.lastOverCol,_9=this.lastMouseOverCol;if(!(_3==_6&&_4==_8)){if(_6!=null&&_8!=null){this.lastOverRow=null;this.lastOverCol=null;if(_3!=_6||_4<0||this.useCellRollOvers){this.updateRollOver(_6,_8,_5)}}
+if(_5){this.lastOverRow=_3;this.lastOverCol=_4;if(_6!=_3||this.useCellRollOvers){if(this.shouldShowRollOver(_3,_4)){this.updateRollOver(_3,_4)}}}}
+if(!(_3==_7&&_4==_9)){if(_7!=null&&_9!=null){this.lastMouseOverRow=null;this.lastMouseOverCol=null;if((_3!=_7||_4<0||this.hoverByCell)&&this.getCanHover()&&!this.keepHoverActive)
+{this.stopHover()}
+var _10=this.getCellRecord(_7,_9);if(this.cellOut){this.cellOut(_10,_7,_9)}
+if(_3!=_7&&this.rowOut){this.rowOut(_10,_7,_9)}}
+if(_5){this.lastMouseOverRow=_3;this.lastMouseOverCol=_4;if(_3!=_7||this.hoverByCell){if(this.getCanHover()){isc.Hover.setAction(this,this.$29q,[_3,_4],this.hoverDelay)}}
+if(this.cellOver){this.cellOver(this.getCellRecord(_3,_4),_3,_4)}
+if(_3!=_7&&this.rowOver){this.rowOver(this.getCellRecord(_3,_4),_3,_4)}}}
+if(_3>=0&&_4>=0){if(this.cellMove){this.cellMove(this.getCellRecord(_3,_4),_3,_4)}
+if(this.rowMove){this.rowMove(this.getCellRecord(_3,_4),_3,_4)}}}
+,isc.A.$29p=function isc_GridRenderer__suppressEventHandling(){if(this.$28j!=null)return true;return false}
+,isc.A.mouseOut=function isc_GridRenderer_mouseOut(){var _1=isc.EH.getTarget();if(this.$29a){var _2=this.$29a;for(var i=0;i<_2.length;i++){if(_2[i].contains(_1,true)){return}}}
+if(_1==this&&!isc.EH.getDragTarget()){return}
+if(this.getCanHover())this.stopHover();if(this.lastOverRow!=null&&this.lastOverCol!=null){var _4=this.lastOverRow,_5=this.lastOverCol;this.lastOverRow=null;this.lastOverCol=null;if(this.shouldShowRollOver(_4,_5)){this.updateRollOver(_4,_5)}}
+if(this.lastMouseOverRow!=null&&this.lastMouseOverCol!=null){var _4=this.lastMouseOverRow,_5=this.lastMouseOverCol,_6=this.getCellRecord(_4,_5);this.lastMouseOverRow=null;this.lastMouseOverCol=null;if(this.cellOut){this.cellOut(_6,_4,_5)}
+if(this.rowOut){this.rowOut(_6,_4,_5)}}}
+,isc.A.$29q=function isc_GridRenderer__cellHover(_1,_2){var _3=this.getCellRecord(_1,_2);var _4;if(this.cellHover&&this.cellHover(_3,_1,_2)==false)_4=false;if(this.rowHover&&this.rowHover(_3,_1,_2)==false)_4=false;if(_4==false)return;if(this.showHover)this.$29r(_3,_1,_2)}
+,isc.A.$29r=function isc_GridRenderer__showHover(_1,_2,_3){var _4=this.$wc();var _5=this.$784(_1,_2,_3);if(!_5)_5=this.cellHoverHTML(_1,_2,_3);isc.Hover.show(_5,_4,this.cellHoverBoundary(_2,_3),this.getHoverTarget())}
+,isc.A.$784=function isc_GridRenderer__getCellHoverComponent(_1,_2,_3){}
+,isc.A.getHoverTarget=function isc_GridRenderer_getHoverTarget(){return this}
+,isc.A.cellHoverHTML=function isc_GridRenderer_cellHoverHTML(_1,_2,_3){return null}
+,isc.A.getCellHoverComponent=function isc_GridRenderer_getCellHoverComponent(_1,_2,_3){return null}
+,isc.A.cellHoverBoundary=function isc_GridRenderer_cellHoverBoundary(_1,_2){return null}
+,isc.A.showContextMenu=function isc_GridRenderer_showContextMenu(){if(this.$29p())return false;var _1=this.getEventRow(),_2=this.getEventColumn();var _3=isc.EH.isKeyEvent();if(_3){_1=this.getFocusRow(),_2=this.getFocusCol()}
+if(_1>=0&&_2>=0&&this.cellIsEnabled(_1,_2)){var _4=this.getCellRecord(_1,_2),_5;if(this.cellContextClick)
+if(this.cellContextClick(_4,_1,_2)==false)_5=false;if(this.rowContextClick)
+if(this.rowContextClick(_4,_1,_2)==false)_5=false;if(this.recordContextClick)
+if(this.recordContextClick(_4,_1,_2)==false)_5=false;if(_5==false)return false}
+return this.Super("showContextMenu")}
+,isc.A.setSelection=function isc_GridRenderer_setSelection(_1){this.selection=_1;if(this.selection.isA("CellSelection")){this.observe(this.selection,"selectionChanged","observer.$29s(observed.changedCells)")}else{this.observe(this.selection,"setSelected","observer.$895(observed);")}}
+,isc.A.clearSelection=function isc_GridRenderer_clearSelection(){if(this.selection){if(this.isObserving(this.selection,"selectionChanged"))
+this.ignore(this.selection,"selectionChanged");if(this.isObserving(this.selection,"setSelected"))
+this.ignore(this.selection,"setSelected");delete this.selection}}
+,isc.A.$29s=function isc_GridRenderer__cellSelectionChanged(_1){if(this.cellSelectionChanged){if(this.cellSelectionChanged(_1)==false)return false}
+this.refreshCellStyles(_1)}
+,isc.A.$895=function isc_GridRenderer__setSelectedObservation(_1){var _2=false;if(!!_1.lastSelectionPreviousState!=!!_1.lastSelectionState){_2=true}else if(_1.lastSelectionState&&(!!_1.lastSelectionPartialValue!=!!_1.lastSelectionPreviousPartialValue))
+{_2=true}
+if(_2){this.$29t(_1.lastSelectionItem,!!_1.lastSelectionState,_1.cascadeSyncOnly)}}
+,isc.A.$29t=function isc_GridRenderer__rowSelectionChanged(_1,_2,_3){if(!_3){if(this.handleSelectionChanged(_1,_2)==false){return false}}
+var _4=this.selection,_5=_4.lastSelectionItem,_6=_4.data.indexOf(_5,this.$252,this.$253);if(_6==-1)_6=_4.data.indexOf(_5);if(_6==-1)return;this.updateRowSelection(_6)}
+,isc.A.handleSelectionChanged=function isc_GridRenderer_handleSelectionChanged(_1,_2){if(this.selectionChanged)return this.selectionChanged(_1,_2)}
+,isc.A.updateRowSelection=function isc_GridRenderer_updateRowSelection(_1){this.setRowStyle(_1)}
+,isc.A.selectionEnabled=function isc_GridRenderer_selectionEnabled(){return this.selection!=null}
+,isc.A.canSelectRecord=function isc_GridRenderer_canSelectRecord(_1){return(_1!=null&&_1[this.recordCanSelectProperty]!==false)}
+,isc.A.mouseDown=function isc_GridRenderer_mouseDown(){if(this.$29p())return;var _1=this.getEventRow(),_2=this.getEventColumn();if(!(_1>=0&&_2>=0))return;if(!this.cellIsEnabled(_1,_2))return false;this.$29u=_1;this.$29v=_2;this.$723=isc.EH.getX();this.$724=isc.EH.getY();var _3=this.getCellRecord(_1,_2);if(!isc.EH.rightButtonDown()){return this.$29w(_3,_1,_2)}else{return this.$29x(_3,_1,_2)}}
+,isc.A.rightMouseDown=function isc_GridRenderer_rightMouseDown(){return this.mouseDown()}
+,isc.A.$29w=function isc_GridRenderer__cellMouseDown(_1,_2,_3){var _4;if(this.cellMouseDown&&(this.cellMouseDown(_1,_2,_3)==false))_4=false;if(this.rowMouseDown&&(this.rowMouseDown(_1,_2,_3)==false))_4=false;if(this.recordMouseDown&&this.recordMouseDown(_2,_3)==false)_4=false;if(_4==false)return false;this.selectOnMouseDown(_1,_2,_3)}
+,isc.A.selectOnMouseDown=function isc_GridRenderer_selectOnMouseDown(_1,_2,_3){if(!this.selectionEnabled())return true;if(_2>=0&&_3>=0&&this.canSelectRecord(_1)&&!this.$89v()){this.$828=true;var _4=this.selection.selectOnMouseDown(this,_2,_3);if(_4&&this.fireSelectionUpdated()){this.fireSelectionUpdated()}}}
+,isc.A.$89v=function isc_GridRenderer__shouldSelectOnMouseUp(){if(isc.EH.dragTarget!=null&&isc.EH.dragOperation==isc.EH.DRAG_SCROLL){return true}
+return false}
+,isc.A.$29x=function isc_GridRenderer__cellRightMouseDown(_1,_2,_3){if(this.canSelectOnRightMouse)this.selectOnRightMouseDown(_1,_2,_3)}
+,isc.A.selectOnRightMouseDown=function isc_GridRenderer_selectOnRightMouseDown(_1,_2,_3){this.selectOnMouseDown(_1,_2,_3)}
+,isc.A.mouseUp=function isc_GridRenderer_mouseUp(){if(this.$29p())return;var _1=this.getEventRow(),_2=this.getEventColumn();if(!(_1>=0&&_2>=0))return;if(!this.cellIsEnabled(_1,_2))return;var _3=this.getCellRecord(_1,_2);var _4;if(this.cellMouseUp&&(this.cellMouseUp(_3,_1,_2)==false))_4=false;if(this.rowMouseUp&&(this.rowMouseUp(_3,_1,_2)==false))_4=false;if(this.recordMouseUp&&this.recordMouseUp(_1,_2)==false)_4=false;if(_4==false)return _4;this.selectOnMouseUp(_3,_1,_2)}
+,isc.A.selectOnMouseUp=function isc_GridRenderer_selectOnMouseUp(_1,_2,_3){if(!this.selectionEnabled())return true;if(_2>=0&&_3>=0){if(this.$89v()){this.selection.selectOnMouseDown(this,_2,_3)}
+this.grid.$67j=true;var _4=this.selection.selectOnMouseUp(this,_2,_3);this.grid.$67j=null;if(_4){this.markForRedraw();if(this.$828){if(this.fireSelectionUpdated)this.fireSelectionUpdated();if(this.grid.getCurrentCheckboxField()!=null){this.grid.updateCheckboxHeaderState()}
+this.$828=null}}}}
+,isc.A.click=function isc_GridRenderer_click(){if(this.$29p())return;var _1=this.getEventRow(),_2=this.getEventColumn();return this.$29y(_1,_2)}
+,isc.A.$29y=function isc_GridRenderer__rowClick(_1,_2){this.$29z=this.$290=null;var _3=this.$29u;if(_3!=null&&_1!=_3){if(isc.EH.getX()==this.$723){_1=this.$29u}else{return}}
+if(isc.EH.getY()==this.$724){_2=this.$29v}
+if(!(_1>=0&&_2>=0))return;if(!this.cellIsEnabled(_1,_2))return false;this.$29z=_1;var _4=this.getCellRecord(_1,_2),_5;if(!this.$22n(_4,_1,_2))_5=false;if(this.rowClick&&(this.rowClick(_4,_1,_2)==false))
+_5=false;this.$29u=null;return _5}
+,isc.A.$22n=function isc_GridRenderer__cellClick(_1,_2,_3){if(this.$29v!=_3){this.$290=null;return}
+this.$290=_3;this.$291=null;return!(this.cellClick&&(this.cellClick(_1,_2,_3)==false))}
+,isc.A.doubleClick=function isc_GridRenderer_doubleClick(){if(this.$29p())return;var _1=this.getEventRow(),_2=this.getEventColumn();if(!(_1>=0&&_2>=0))return;if(!this.cellIsEnabled(_1,_2))return false;if(_1!=this.$29z){return this.$29y(_1,_2)}
+var _3=this.getCellRecord(_1,_2),_4;if(_2!=this.$290){_4=this.$22n(_3,_1,_2)}else if(this.cellDoubleClick&&(this.cellDoubleClick(_3,_1,_2)==false))
+{_4=false}
+if(this.rowDoubleClick&&(this.rowDoubleClick(_3,_1,_2)==false))
+_4=false;this.$29u=this.$29v=null;this.$29z=this.$290=null;if(_4==false)return false}
+,isc.A.dragMove=function isc_GridRenderer_dragMove(){if(this.$29p()||!this.selectionEnabled()||!this.canDragSelect)
+return true;var _1=this.getNearestRowToEvent(),_2=this.getNearestColToEvent();this.selection.selectOnDragMove(this,_1,_2)}
+,isc.A.dragStop=function isc_GridRenderer_dragStop(){this.fireSelectionUpdated()}
+,isc.A.noSnapDragOffset=function isc_GridRenderer_noSnapDragOffset(_1){return this.snapToCells}
+,isc.A.getHSnapPosition=function isc_GridRenderer_getHSnapPosition(_1,_2){if(!this.snapToCells){return this.Super("getHSnapPosition",arguments)}
+var _3=this.ns.EH,_4=_2||this.snapHDirection,_5=this.snapHGap?Math.floor(_1/ this.snapHGap):this.getEventColumn(_1),_6=this.snapHGap?(_5*this.snapHGap):this.getColumnLeft(_5),_7=this.snapHGap?_6+this.snapHGap:this.getColumnLeft(_5)+this.getColumnSize(_5),_8=this.snapHGap?_5+1:this.getEventColumn(_7+1),_9;if(_8>=0){_9=this.snapHGap?_8*this.snapHGap:this.getColumnLeft(_8)}else{_9=_6}
+var _10=_6+(this.snapHGap?this.snapHGap:this.getColumnSize(_5))/2;if(this.snapInsideBorder){var _11=isc.Element.$tl(this.baseStyle)
+var _12=isc.Element.$tm(this.baseStyle)
+_6+=_11;_7-=_12;_9+=_11}
+if(_3.dragOperation==_3.DRAG_RESIZE){var _13=isc.EH.resizeEdge.contains("L");return _13?_6:_7}else{if(_4==isc.Canvas.BEFORE){return _6}else if(_4==isc.Canvas.AFTER){return _9}else{if(_1<=_10){return _6}else{return _9}}}}
+);isc.evalBoundary;isc.B.push(isc.A.getVSnapPosition=function isc_GridRenderer_getVSnapPosition(_1,_2){if(!this.snapToCells){return this.Super("getVSnapPosition",arguments)}
+var _3=this.ns.EH,_4=_2||this.snapVDirection,_5=this.snapVGap?Math.floor(_1/ this.snapVGap):this.getEventRow(_1),_6=this.snapVGap?(_5*this.snapVGap):this.getRowTop(_5),_7=this.snapVGap?_6+this.snapVGap:this.getRowTop(_5)+this.getRowSize(_5),_8=this.snapVGap?_5+1:this.getEventRow(_7+1),_9;if(_8>=0){_9=this.snapVGap?_8*this.snapVGap:this.getRowTop(_8)}else{_9=_6}
+var _10=_6+(this.snapVGap?this.snapVGap:this.getRowSize(_5))/2;if(this.snapInsideBorder){var _11=isc.Element.$tn(this.baseStyle)
+var _12=isc.Element.$to(this.baseStyle)
+_6+=_11;_7-=_12;_9+=_11}
+if(_3.dragOperation==_3.DRAG_RESIZE){var _13=isc.EH.resizeEdge.contains("T");return _13?_6:_7}else{if(_4==isc.Canvas.BEFORE){return _6}else if(_4==isc.Canvas.AFTER){return _9}else{if(_1<=_10)return _6;else return _9}}}
+,isc.A.getColumnAutoSize=function isc_GridRenderer_getColumnAutoSize(_1,_2,_3){if(this.getTotalRows()==0){return null}
+var _4=this.$292=this.$292||isc.Canvas.create({columnSizer:true,overflow:"hidden",top:-1000,width:1,height:1,autoDraw:false,_generated:true});var _5=this.autoFit,_6=this.wrapCells;this.autoFit=true;this.wrapCells=false;if(_2==null||_3==null){var _7=this.getDrawArea();_2=_7[0];_3=_7[1]+1}
+this.$92p=true;_4.setContents(this.getTableHTML(_1,_2,_3,true));delete this.$92p;this.autoFit=_5;this.wrapCells=_6;if(!_4.isDrawn()){_4.draw()}else{if(_4.isDirty())_4.redraw();if(_4.$uu)_4.adjustOverflow("Check autoFit column sizing")}
+var _8;if(isc.isA.Array(_1)){var _9,_10=_4.getHandle().childNodes;for(var i=0;i<_10.length;i++){if(_10[i].tagName.toLowerCase()=="table"){_9=_10[i];break}}
+if(_9&&_9.rows[0]){var _12=_9.rows[0],_13=_12.cells;_8=[];for(var i=0;i<_13.length;i++){_8[i]=_13[i].clientWidth}}}else{_8=_4.getScrollWidth()}
+return _8}
+,isc.A.redraw=function isc_GridRenderer_redraw(_1,_2,_3,_4){this.$29c();this.invokeSuper(isc.GridRenderer,"redraw",_1,_2,_3,_4);delete this.$50v}
+,isc.A.modifyContent=function isc_GridRenderer_modifyContent(){if(!this.$28c)this.$29d();if(this.$27y!=null){this.$80f=true;this.$270("scrollToRow in modifyContent");this.$80f=null;var _1=this.getTableElement();if(_1)_1.style.visibility="inherit"}
+if(this.$60s){var _2=this.$26b().sum();if(_2<this.getViewportHeight()){this.$515=0;var _3=isc.Element.get(this.getID()+"$284"),_4=this.$515+(this.endSpace||0);if(_3){if(_4==0)_3.style.display="none"
+else _3.style.display="";_3.style.height=_4+"px"}}
+var _5=this.getVisibleRows(),_6=Math.max(1,_5[1]-_5[0]),_7=_6/ this.getTotalRows(),_8=this.getViewportRatio(true);if(isc.isA.Number(_7)&&((_8==1&&_7<1)||_8/ _7>1.25))
+{this.$272=Math.max(this.cellHeight,Math.round(this.getViewportHeight()/_6))}}}
+,isc.A.setStartSpace=function isc_GridRenderer_setStartSpace(_1){if(!isc.isA.Number(_1)||_1==this.startSpace)return;var _2=this.startSpace&&this.startSpace>_1;this.startSpace=_1;if(!this.isDrawn())return;var _3=_1+this.$514,_4=isc.Element.get(this.getID()+"$28s");if(_4){if(_3==0)_4.style.display="none";else _4.style.display="";if(this.$79b){_4.style.height=_3+"px"}
+if(!_2||!this.$79b){_4.innerHTML=isc.Canvas.spacerHTML(1,_3)}
+this.$t6()}}
+,isc.A.setEndSpace=function isc_GridRenderer_setEndSpace(_1){if(!isc.isA.Number(_1)||_1==this.endSpace)return;var _2=this.endSpace&&this.endSpace>_1;this.endSpace=_1;if(!this.isDrawn())return;var _3=_1+this.$515,_4=isc.Element.get(this.getID()+"$284");if(_4){if(_3==0)_4.style.display="none";else _4.style.display="";if(this.$79b)_4.style.height=_3+"px";if(!_2||!this.$79b){_4.innerHTML=isc.Canvas.spacerHTML(1,_3)}
+this.$t6()}}
+,isc.A.setLeftSpace=function isc_GridRenderer_setLeftSpace(_1){if(this.leftSpace==_1)return;this.leftSpace=_1;this.redraw()}
+,isc.A.setRightSpace=function isc_GridRenderer_setRightSpace(_1){if(this.rightSpace==_1)return;this.rightSpace=_1;this.redraw()}
+,isc.A.clear=function isc_GridRenderer_clear(){this.Super("clear",arguments);this.$29j();delete this.$50v}
+,isc.A.$29j=function isc_GridRenderer__clearTableCache(){this.$29g=null;this.$29f=null;delete this.$29o;delete this.$293;delete this.$8s;this.$250=false}
+);isc.B._maxIndex=isc.C+189;isc.GridRenderer.$294={getCellRecord:"rowNum,colNum",getCellValue:"record,rowNum,colNum,gridBody",findRowNum:"record",findColNum:"record",getBaseStyle:"record,rowNum,colNum",getCellStyle:"record,rowNum,colNum",getCellCSSText:"record,rowNum,colNum",cellIsEnabled:"rowNum,colNum",getRowHeight:"record,rowNum",getRowSpan:"record,rowNum,colNum",cellOut:"record,rowNum,colNum",cellOver:"record,rowNum,colNum",rowOut:"record,rowNum,colNum",rowOver:"record,rowNum,colNum",cellMove:"record,rowNum,colNum",rowMove:"record,rowNum,colNum",cellContextClick:"record,rowNum,colNum",rowContextClick:"record,rowNum,colNum",recordContextClick:"record,recordNum,fieldNum",cellMouseDown:"record,rowNum,colNum",rowMouseDown:"record,rowNum,colNum",recordMouseDown:"recordNum,fieldNum",cellMouseUp:"record,rowNum,colNum",rowMouseUp:"record,rowNum,colNum",recordMouseUp:"recordNum,fieldNum",selectOnMouseDown:"record,rowNum,colNum",selectOnRightMouseDown:"record,rowNum,colNum",selectOnMouseUp:"record,rowNum,colNum",cellClick:"record,rowNum,colNum",cellDoubleClick:"record,rowNum,colNum",rowClick:"record,rowNum,colNum",rowDoubleClick:"record,rowNum,colNum",cellHover:"record,rowNum,colNum",rowHover:"record,rowNum,colNum",cellHoverHTML:"record,rowNum,colNum",getCellHoverComponent:"record,rowNum,colNum",selectionChanged:"record,state",selectionUpdated:"record,recordList",cellSelectionChanged:"cellList",getRowElementId:"rowNum,physicalRowNum",getCellElementId:"rowNum,physicalRowNum,colNum,physicalColNum",shouldFixRowHeight:"record,rowNum",updateEmbeddedComponentZIndex:"component",updateEmbeddedComponentCoords:"component,record,rowNum,colNum",getRowRole:"rowNum,record",getRowAriaState:"rowNum,record",getCellRole:"rowNum,colNum,record",getCellAriaState:"rowNum,colNum,record"};isc.GridRenderer.registerStringMethods(isc.GridRenderer.$294);isc.ClassFactory.defineClass("ListGrid","VLayout","DataBoundComponent");isc.addGlobal("ListViewer",isc.ListGrid);isc.defineClass("GridBody",isc.GridRenderer);isc.A=isc.GridBody.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.adjustOverflowWhileDirty=false;isc.A.expandEmptyMessageToMatchFields=true;isc.B.push(isc.A.adjustOverflow=function isc_GridBody_adjustOverflow(_1,_2,_3,_4,_5){if(this.$80o)return;var _6=this.grid;if(_6==null)return this.Super("adjustOverflow",arguments);var _7=_6.data,_8=false;;if(isc.isA.ResultSet(_7)&&!_7.lengthIsKnown()){if(_6.emptyMessageHeight==null){return this.invokeSuper(isc.GridBody,"adjustOverflow",_1,_2,_3,_4,_5)}
+_8=true}
+var _9=(this.autoFitData=="both"),_10=_9,_11=_6&&_6.frozenFields!=null,_12=_11&&_6&&(_6.frozenBody==this);if(!_9)_9=(this.autoFitData=="vertical");if(!_10)_10=(this.autoFitData=="horizontal");if(_10||_9){var _13,_14,_15,_16,_17,_18,_19;if(_9){var _20=this.grid.getAutoFitMinBodyHeight();_13=_20;var _21=_8?0:this.getTotalRows(),_22=_21;_15=0;if(this.autoFitMaxRecords){_22=Math.min(_22,this.autoFitMaxRecords)}
+if(_22>0){var _23=this.$26b();var _24=this.$252,_25=this.$253;if(this.$252==null){_24=_22;_25=_22}
+if(_24>0){_24=Math.min(_24,_22);for(var i=0;i<_24;i++){_15+=this.getRowHeight?this.getRowHeight(i):this.cellHeight}}
+if(_25<_22-1){for(var i=_25+1;i<_22;i++){_15+=this.getRowHeight?this.getRowHeight(i):this.cellHeight}}
+_25=Math.min(_25,_22-1);for(var i=0;i<=_25-_24;i++){_15+=_23[i]}
+_17=_21>_22;var _27=this.getAutoFitMaxHeight();if(_27&&_15>_27){_15=_27;_17=true}}else{if(this.grid.emptyMessageHeight!=null){_15=this.grid.emptyMessageHeight}}
+if(this.autoFitExtraRecords&&this.autoFitExtraRecords>0){var _28=Math.round(this.autoFitExtraRecords*this.cellHeight);_15+=_28}}else{_17=this.getScrollHeight()>this.getHeight()}
+if(_10&&!_12){var _14=this.grid.getInnerWidth(),_29;if(_11){var _30=this.grid.getFrozenSlots(this.grid.$26a);_29=_30.sum();_14-=_29}
+var _31=this.getColumnSizes(),_32=_31.sum();if(this.autoFitMaxColumns){var _33=this.autoFitMaxColumns;if(_11){_33=Math.max(1,_33-this.grid.frozenFields.length)}
+if(_33<_31.length){_31=_31.slice(0,this.autoFitMaxColumns)}}
+var _34=_31.sum();if(this.autoFitMaxWidth){var _35=this.autoFitMaxWidth;if(_11)_35=Math.max(20,_35-_29);_34=Math.min(_35,_34)}
+_16=(this.overflow==isc.Canvas.SCROLL)?true:(this.overflow==isc.Canvas.AUTO)?(_32>Math.max(_14,_34)):false}else{_16=this.overflow==isc.Canvas.SCROLL?true:this.overflow==isc.Canvas.AUTO?this.getScrollWidth()>this.getWidth():false}
+if(_9&&_15!=null){_15+=this.getVBorderPad()+this.getVMarginSize();if(_16){_15+=this.getScrollbarSize();var _27=this.getAutoFitMaxHeight()
+if(_27&&_15>_27){_15=_27}}
+if(_15>_13){_13=_15;this.$70u=true}else{if(this.$70u)delete this.$70u}}
+if(_10&&!_12&&_34!=null){_34+=this.getHBorderPad()+this.getHMarginSize();if(_17||this.alwaysShowVScrollbar){_34+=this.getScrollbarSize();if(this.autoFitMaxWidth){var _35=this.autoFitMaxWidth;if(_11)_35=Math.max(20,_35-_29);_34=Math.min(_35,_34)}}
+if(_34>_14){_14=_34;this.$70v=true}else{if(this.$70v)delete this.$70v}}
+this.$80o=true;_19=this.getDelta(this.$o5,_13,this.getHeight());_18=this.getDelta(this.$o6,_14,this.getWidth());delete this.$80o;if(_19!=null||_18!=null){this.resizeBy(_18,_19,null,null,true)}
+if(_18!=null||(_12&&_10)){var _36=this.grid,_37=(_14-(_17?_36.getScrollbarSize():0)),_38=_37;if(_11&&_36.headerLayout){if(_12){_38=this.getWidth()+_36.body.getWidth();if(_36.autoFitMaxWidth!=null&&(_38+_36.getHBorderPad()+_36.getHMarginSize()>_36.autoFitMaxWidth))
+{return _36.body.adjustOverflow()}
+_38-=(_36.body.vscrollOn?_36.getScrollbarSize():0)}else{_38=_37+_36.frozenBody.getWidth()}
+_36.headerLayout.setWidth(_38)}
+if(!_12){var _39=_36.header;if(_39&&_39.isDrawn()){_39.setWidth(_37)}}}}
+var _40=(!_9&&this.$70u),_41=(!_10&&this.$70v);if(_40||_41){delete this.$70u;delete this.$70v;var _42=_40?this.grid.getAutoFitMinBodyHeight():null,_43=_41?(!_11?this.grid.getInnerWidth():(this.grid.getInnerWidth()-this.grid.frozenBody.getWidth())):null;this.resizeTo(_14,_13);this.grid.$45m("autoFitData mode changed")}
+var _44=this.invokeSuper(isc.GridBody,"adjustOverflow",_1,_2,_3,_4,_5);if(!_12)this.grid.bodyOverflowed();return _44}
+,isc.A.getAutoFitMaxHeight=function isc_GridBody_getAutoFitMaxHeight(){return this.grid?this.grid.getAutoFitMaxBodyHeight():null}
+,isc.A.resizeBy=function isc_GridBody_resizeBy(_1,_2,_3,_4,_5){if(!_5){this.$1i=this.getWidth()+(_1!=null?_1:0)}
+return this.invokeSuper(isc.GridBody,"resizeBy",_1,_2,_3,_4,_5)}
+,isc.A.cellContextClick=function isc_GridBody_cellContextClick(_1,_2,_3){var _4=this.grid.getFieldNumFromLocal(_3,this);return this.grid.$298(_1,_2,_4)}
+,isc.A.$29y=function isc_GridBody__rowClick(_1,_2){if(!this.grid)return;var _3;var _4=this.grid.getFieldNumFromLocal(_2,this);var _5=this.grid.getField(_4)
+if(_5&&_5.isRemoveField){this.grid.removeRecordClick(_1,_2);_3=false}else{_3=this.Super("$29y",arguments)}
+return _3}
+,isc.A.$784=function isc_GridBody__getCellHoverComponent(_1,_2,_3){if(this.grid&&isc.isA.ListGrid(this.grid)){var _4=this.grid.getFieldNumFromLocal(_3,this);return this.grid.$784(_1,_2,_4)}}
+,isc.A.getInnerHTML=function isc_GridBody_getInnerHTML(){this.grid.bodyDrawing(this);return this.Super("getInnerHTML",arguments)}
+,isc.A.getTablePrintHTML=function isc_GridBody_getTablePrintHTML(_1){var _2=_1.startRow,_3=_1.endRow,_4=_3!=null?(_3-_2):this.getTotalRows(),_5=this.printMaxRows,_6=_1.printWidths,_7=_1.printProps;var _8={target:this,methodName:"gotTablePrintHTML",printContext:_1,printCallback:_1.callback}
+_1.callback=_8;if(_5<_4){this.logDebug("get table print html - breaking HTML into chunks","printing");if(_2==null)_2=_1.startRow=0;if(_3==null)_3=_1.endRow=this.getTotalRows();this.getPrintHTMLChunk(_1);return null}
+var _9=this.grid.$569(_6,_7);var _10=this.getTableHTML(null,_2,_3,null,_8);this.grid.$57a(_9);return _10}
+,isc.A.gotTablePrintHTML=function isc_GridBody_gotTablePrintHTML(_1,_2){var _3=_2.printCallback;if(_3){this.fireCallback(_3,"HTML,callback",[_1,_3])}}
+,isc.A.getPrintHTMLChunk=function isc_GridBody_getPrintHTMLChunk(_1,_2){var _3=this.grid.$569(_1.printWidths);this.$568=true;this.$80u=true;var _4=_1.startRow,_5=_1.endRow,_6=this.printMaxRows,_7=_1.callback;this.currentPrintProperties=_1.printProps;if(!_1.html)_1.html=[];var _8=_1.chunkEndRow=Math.min(_5,(_4+_6)),_9=this.getTableHTML(null,_4,_8,null,{target:this,methodName:"gotPrintChunkHTML",printContext:_1,printCallback:_1.callback});this.grid.$57a(_3);this.$568=false;if(_9!=null){delete this.$80u;this.gotPrintChunkHTML(_9,{printContext:_1});if(_2)return _9}}
+,isc.A.gotPrintChunkHTML=function isc_GridBody_gotPrintChunkHTML(_1,_2){var _3=_2.printContext,_4=_3.startRow,_5=_3.endRow,_6=_3.chunkEndRow,_7=this.printMaxRows,_8=_3.callback;_3.html.add(_1);if(_6<_5){_3.startRow=_6;return this.delayCall("getPrintHTMLChunk",[_3],0)}
+if(_8!=null){var _9=_3.html.join(isc.emptyString);this.fireCallback(_8,"HTML,callback",[_9,_8])}}
+,isc.A.gotComponentPrintHTML=function isc_GridBody_gotComponentPrintHTML(_1,_2){var _3=_2.context.asyncCallback,_4=_3.printContext;var _5=_4.printWidths;var _6=this.grid.$569(_5);if(this.$80u){this.$568=true}
+var _1=this.Super("gotComponentPrintHTML",arguments);if(this.$568)delete this.$568;if(_1!=null){delete this.$80u}else{this.grid.$57a(_6)}}
+,isc.A.getCellVAlign=function isc_GridBody_getCellVAlign(_1,_2,_3,_4){if(this.grid&&this.grid.getCellVAlign){var _5=this.grid.getFieldNumFromLocal(_4,this);return this.grid.getCellVAlign(_1,_3,_5)}}
+,isc.A.getCellAlign=function isc_GridBody_getCellAlign(_1,_2,_3,_4){if(this.grid&&this.grid.getCellAlign!=null){var _5=this.grid.getFieldNumFromLocal(_4,this);return this.grid.getCellAlign(_1,_3,_5)}else return _2.cellAlign||_2.align}
+,isc.A.$282=function isc_GridBody__drawRecordAsSingleCell(_1,_2,_3){var _4=this.grid;if(_4.showNewRecordRow&&_4.$299(_1))return true;return isc.GridRenderer.$b4.$282.call(this,_1,_2,_3)}
+,isc.A.showSingleCellCheckboxField=function isc_GridBody_showSingleCellCheckboxField(_1){var _2=this.grid;return _2&&_2.showSingleCellCheckboxField(_1)}
+,isc.A.$67p=function isc_GridBody__getSingleCellSpan(_1,_2,_3,_4){if(_2==this.$28c||!this.showSingleCellCheckboxField(_1)||(this.grid&&this.grid.frozenBody!=null&&this.grid.frozenBody!=this))
+{return[_3,_4]}
+return[Math.max(_3,1),_4]}
+,isc.A.mouseWheel=function isc_GridBody_mouseWheel(){if(this.frozen&&this.grid!=null){var _1=this.ns.EH.lastEvent.wheelDelta;var _2=this.scrollTop+Math.round(_1*isc.Canvas.scrollWheelDelta);this.grid.body.scrollTo(null,_2,"frozenMouseWheel");return false}
+return this.Super("mouseWheel",arguments)}
+,isc.A.$80e=function isc_GridBody__getDrawRows(){if(this.frozen&&this.grid){var _1=this.grid;return _1.body.$80e()}
+return this.Super("$80e",arguments)}
+,isc.A.doneFastScrolling=function isc_GridBody_doneFastScrolling(){if(!this.frozen&&this.grid!=null&&this.grid.frozenBody!=null){var _1=this.$50z;this.Super("doneFastScrolling",arguments);if(_1){this.grid.frozenBody.$50v=true;this.grid.frozenBody.markForRedraw("Done fast scrolling on unfrozen body")}}}
+,isc.A.scrollTo=function isc_GridBody_scrollTo(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(_1!=null){var _5=this.getScrollWidth()-this.getViewportWidth();_1=Math.max(0,Math.min(_5,_1))}
+if(_2!=null){var _6=this.getScrollHeight()-this.getViewportHeight();_2=Math.max(0,Math.min(_6,_2))}
+var _7=this.grid;this.invokeSuper(null,"scrollTo",_1,_2,_3,_4);var _8=this.$80h;if(!_8)_7.bodyScrolled(_1,_2,this.frozen);if(!this.isDirty()&&_7.$30a){_7.$286.itemsMoved()}}
+,isc.A.addEmbeddedComponent=function isc_GridBody_addEmbeddedComponent(_1,_2,_3,_4,_5){var _6=this.invokeSuper(isc.GridBody,"addEmbeddedComponent",_1,_2,_3,_4,_5);if(_1.$57n!=null&&_1.$57n!=-1){var _4=_1.$57n;_1.$81k=this.fields[_4].name}
+return _1}
+,isc.A.updateHeightForEmbeddedComponents=function isc_GridBody_updateHeightForEmbeddedComponents(_1,_2,_3){if(_1&&!_1.$29a&&this.grid.showRecordComponents&&this.grid.recordComponentHeight!=null)
+{var _4=this.$667(_1,_2);if(_4.allWithin&&_4.extraHeight>0){_3=Math.max(_3,_4.extraHeight)}else{_3+=_4.extraHeight}
+return _3}
+return this.invokeSuper(isc.GridBody,"updateHeightForEmbeddedComponents",_1,_2,_3)}
+,isc.A.$667=function isc_GridBody__getExtraEmbeddedComponentHeight(_1,_2){var _3=this.invokeSuper(isc.GridBody,"$667",_1,_2);if(this.grid.showRecordComponents&&this.grid.recordComponentHeight!=null){_3.extraHeight=Math.max(_3.extraHeight,this.grid.recordComponentHeight)}
+return _3}
+,isc.A.$80g=function isc_GridBody__writeEmbeddedComponentSpacer(_1){if(_1&&this.grid&&this.grid.showRecordComponents&&this.grid.recordComponentHeight!=null)
+{return true}
+return this.invokeSuper(isc.GridBody,"$80g",_1)}
+,isc.A.getAvgRowHeight=function isc_GridBody_getAvgRowHeight(){if(this.grid)return this.grid.getAvgRowHeight(this);return this.Super("getAvgRowHeight",arguments)}
+,isc.A.shouldShowAllColumns=function isc_GridBody_shouldShowAllColumns(){if(this.showAllColumns){return true}
+if(!this.fixedRowHeights&&!this.showAllRows){if(this.grid.canExpandRecords&&this.grid.$82v){return false}
+return true}
+if(this.overflow==isc.Canvas.VISIBLE){return true}
+return false}
+,isc.A.redraw=function isc_GridBody_redraw(_1,_2,_3,_4){this.$58p=true;var _5=this.grid;if(_5.alwaysShowEditors&&!_5.$30a){_5.startEditing(null,null,true,null,true)}
+var _6=_5.$286,_7=_5.$30a,_8,_9,_10,_11,_12;_5.$69l();if(!_5.leaveScrollbarGap&&_5.predictScrollbarGap&&(this.overflow==isc.Canvas.AUTO)){var _13=this.vscrollOn,_14=!_5.isEmpty()&&(_5.getTotalRows()*_5.cellHeight)>this.getInnerHeight();if(_13!=_14){delete this.$773;_5.$45m("body redrawing with changed vertical scroll-state")}}
+var _15=false;if(_7){this.logInfo("redraw with editors showing, editForm.hasFocus: "+_6.hasFocus,"gridEdit");_8=_5.getEditCol();this.$516();_12=this.$517()}else if(isc.screenReader){_15=(this.hasFocus||isc.EH.$lg==this)||(this.editForm&&this.editForm.hasFocus())}
+if(this.$773!=null){var _16=this.$773;delete this.$773;_5.$45m(_16)}
+var _17=this.getDrawArea();var _18=this.grid,_19=this.$74k;if(!_19)_19=this.$74k=[0,0,0,0];var _18=this.grid,_20=_18.getRecord(_17[0]),_21=_18.getRecord(_17[1]),_22=(_20&&_20!=Array.LOADING)&&(_21&&_21!=Array.LOADING);;if(_22&&!_19.equals(_17))
+{if(!this.frozen){_18.$74l(_19[0],_19[1],_19[2],_19[3],this);this.$74k=_17}}
+if(!(this.frozen&&(_1==this.$81l||_1=="scrolled"))){_18.updateRecordComponents()}
+delete this.$316;this.invokeSuper(isc.GridBody,"redraw",_1,_2,_3,_4);delete this.$58p;if(_7){if(_12!=null&&_12.length>0){_6.removeItems(_12)}
+_5.$30b(null,true,this);_5.updateEditRow(_5.getEditRow());if(_6.hasFocus||(this.$519&&isc.EH.getFocusCanvas()==null))
+{this.$518(_8)}else{delete this.$519}}else{if(_6!=null){_5.$30b(null,null,this)}
+if(isc.screenReader){this.$86a(this.getNativeFocusRow(),!_15)}}}
+,isc.A.setHandleDisabled=function isc_GridBody_setHandleDisabled(_1){var _2=this.grid;if(this.isDrawn()&&_2&&_2.$30a){this.markForRedraw("Grid body disabled while editing")}
+return this.Super("setHandleDisabled",arguments)}
+,isc.A.$517=function isc_GridBody__updateEditItems(){var _1=this.grid,_2=_1.getEditForm(),_3=[],_4=_2.getItems();if(!_1.editByCell){var _5=_1.getEditRow(),_6=_1.getRecord(_5),_7=_1.getEditFormItemFieldWidths(_6);var _4=_2.getItems(),_8=_4.getProperty(this.fieldIdProperty),_9=_1.getDrawnFields(),_10=_9.getProperty(this.fieldIdProperty);var _11=_4.length==_9.length,_12=false;for(var i=0;i<_4.length;i++){var _14=_10.indexOf(_8[i]);if(_14==-1){_12=true;_3.add(_4[i])}else{_4[i].width=_7[_4[i].colNum];_4[i].$8t=null;_4[i].redrawing()}}
+if(!_11||_12){var _15=_1.getEditedRecord(_5,0);for(var i=0;i<_9.length;i++){if(!_8.contains(_10[i])){var _16=_1.fields.indexOf(_9[i]);var _17=_1.getEditItem(_9[i],_6,_15,_5,_16,_7[_16]);_2.addItem(_17)}}}}
+return _3}
+,isc.A.$516=function isc_GridBody__storeFocusForRedraw(){var _1=this.grid,_2=_1.getEditForm(),_3=_1.getEditCol();if(_2.hasFocus){var _4=_2.getFocusSubItem();if(_4){_4.updateValue();var _5=_4;while(_4.parentItem!=null){_4=_4.parentItem}
+if(!_1.canEditCell(_4.rowNum,_4.colNum)||_3!=_4.colNum){_2.blur()}else{if(_4.hasFocus){_4.rememberSelection();this.$519=[_4.$17r,_4.$17s]}
+_2.$106()}}}
+_2.$10u=true}
+,isc.A.$518=function isc_GridBody__restoreFocusAfterRedraw(_1){var _2=this.grid,_3=_2.getEditForm(),_4=_3.getItem(_2.getEditorName(_2.getEditRow(),_1));if(_4!=null&&_4.isDrawn()){var _5=_2.body.getScrollLeft(),_6=_2.body.getScrollTop(),_7=_2.body.getViewportWidth(),_8=_2.body.getViewportHeight(),_9=_4.getRect(),_10=_9[0]<_5||_9[1]<_6||_9[0]+_9[2]>(_5+_7)||_9[1]+_9[3]>(_6+_8);if(!_10){_3.$11b(_4);if(this.$519&&this.$519[0]!=null){_4.setSelectionRange(this.$519[0],this.$519[1])}
+delete this.$519}}}
+,isc.A.focusAtEnd=function isc_GridBody_focusAtEnd(_1){var _2=this.grid,_3=_2?_2.getEditForm():null;if(_3){_3.focusAtEnd(_1)}else{return this.Super("focusAtEnd",arguments)}}
+,isc.A.isDirty=function isc_GridBody_isDirty(_1,_2,_3){return this.invokeSuper(null,"isDirty",_1,_2,_3)||this.grid.isDirty()}
+,isc.A.cellMove=function isc_GridBody_cellMove(_1,_2,_3){var _4=isc.EH.lastEvent?isc.EH.lastEvent.nativeTarget:null;if(_4&&_4.getAttribute!=null&&(_4.getAttribute("isErrorIcon")=="true"))
+{if(this.grid.$79y!=null){var _5=this.grid.$79y[0],_6=this.grid.$79y[1];if(_5!=_2||_6!=_3){this.grid.$790()}}
+if(this.grid.$79y==null){this.grid.$79z(_2,_3)}}else{if(this.grid.$79y!=null){this.grid.$790()}}}
+,isc.A.shouldShowRollOver=function isc_GridBody_shouldShowRollOver(_1,_2,_3,_4){if(!this.grid.showRollOver||this.$28j)return false;var _5=this.grid;if(_5.$30a&&!_5.editByCell&&_1==_5.$285)return false;return true}
+,isc.A.updateRollOver=function isc_GridBody_updateRollOver(_1,_2,_3){var _4=this.grid;if(_4.showRollOverCanvas){if(!_3){var _5=!(this.lastOverRow==_1&&this.lastOverCol==_2);_4.updateRollOverCanvas(_1,_2,_5)}}
+this.setRowStyle(_1,null,(this.useCellRollOvers?_2:null));var _6=(this==_4.body?_4.frozenBody:_4.body);if(_6){_6.lastOverRow=this.lastOverRow;_6.lastOverCol=this.lastOverCol;_6.setRowStyle(_1,null,(this.useCellRollOvers?_2:null))}}
+,isc.A.selectOnMouseDown=function isc_GridBody_selectOnMouseDown(_1,_2,_3){var _4=true,_5=this.grid.selectionAppearance,_6=(_5=="checkbox");if(_6){if((this.grid.frozenFields!=null&&this.grid.frozenBody!=this)||(this.grid.getCheckboxFieldPosition()!=_3))
+{_4=false}}
+if(_4){this.invokeSuper(isc.GridBody,"selectOnMouseDown",_1,_2,_3)}
+if(isc.screenReader){this.$86a(_2)}}
+,isc.A.mouseUp=function isc_GridBody_mouseUp(){var _1=isc.EH.getTarget();if(this.grid&&_1!=this&&this.grid.$30a){var _2=this.grid.getEditForm();while(_1!=this){if(_1.canvasItem&&_2.items.contains(_1.canvasItem)){return}}}
+return this.Super("mouseUp",arguments)}
+,isc.A.selectOnMouseUp=function isc_GridBody_selectOnMouseUp(_1,_2,_3){var _4=this.grid.getCheckboxFieldPosition(),_5=this.grid.selectionAppearance;if(_5!="checkbox"||(_5=="checkbox"&&_4==_3)){this.invokeSuper(isc.GridBody,"selectOnMouseUp",_1,_2,_3)}}
+,isc.A.handleSelectionChanged=function isc_GridBody_handleSelectionChanged(_1,_2){var _3=this.Super("handleSelectionChanged",arguments);this.grid.handleViewStateChanged();return _3}
+,isc.A.$29h=function isc_GridBody__updateCellStyle(_1,_2,_3,_4,_5,_6,_7,_8){this.invokeSuper(isc.GridBody,"$29h",_1,_2,_3,_4,_5,_6,_7,_8);var _9=this.grid;if(_9&&_9.getEditRow()==_2){var _10=_9.getFieldName(_9.getFieldNumFromLocal(_3,this)),_11=_9.getEditForm(),_12=_11?_11.getItem(_10):null;if(_12&&_12.gridCellStyleChanged){if(_5==null)_5=this.getCellStyle(_1,_2,_3);_12.gridCellStyleChanged(_1,_2,_3,_5)}}}
+,isc.A.getHoverTarget=function isc_GridBody_getHoverTarget(){return this.grid}
+,isc.A.keyPress=function isc_GridBody_keyPress(_1,_2){return this.grid.bodyKeyPress(_1,_2)}
+,isc.A.getFocusRow=function isc_GridBody_getFocusRow(){return this.grid.getFocusRow()}
+,isc.A.getFocusCol=function isc_GridBody_getFocusCol(){var _1=this.grid.$32b();return this.grid.getLocalFieldNum(_1)}
+,isc.A.$lf=function isc_GridBody__focusChanged(_1){var _2=this.Super("$lf",arguments);var _3=isc.EH.lastEvent;if(_3.target==this&&(_3.eventType==isc.EH.MOUSE_DOWN||_3.eventType==isc.EH.MOUSE_UP||_3.eventType==isc.EH.CLICK||_3.eventType==isc.EH.DOUBLE_CLICK))return _2;var _4,_5=this.grid;if(_1&&_5.isEditable()){if(_5.editOnFocus&&_5.isEditable()&&_5.getEditRow()==null)
+{if(this.logIsInfoEnabled("gridEdit")){this.logInfo("Editing on focus: eventType: "+_3.eventType+", lastTarget "+_3.target,"gridEdit")}
+if(_5.$30c){delete _5.$30c}else{_4=_5.findNextEditCell(0,0,true,true);if(_4!=null)
+_5.handleEditCellEvent(_4[0],_4[1],isc.ListGrid.FOCUS)}}}
+if(isc.screenReader){if(_1){if(_4==null){var _3=isc.EH.lastEvent,_6=_3.eventType;var _7=this.getNativeFocusRow();_5.$88(_7);this.$86a(_7)}}else{_5.clearLastHilite()}}
+return _2}
+,isc.A.$86a=function isc_GridBody__putNativeFocusInRow(_1,_2){var _3=this.grid;if(_3&&_3.hiliteOnNativeRowFocus&&!_2)_3.$88(_1);return this.Super("$86a",arguments)}
+,isc.A.updateRowSelection=function isc_GridBody_updateRowSelection(_1){var _2=this.grid;if(!_2)return;if(_2.showSelectionCanvas)_2.updateSelectionCanvas();if(_2.$67j)return;this.invokeSuper(isc.GridBody,"updateRowSelection",_1);if(isc.Canvas.ariaEnabled()&&_2.selection){this.setRowAriaState(_1,"selected",_2.selection.isSelected(_2.getRecord(_1)))}
+if(_2.getCurrentCheckboxField()!=null){var _3=_2.getCheckboxFieldPosition();if(_2)_2.refreshCell(_1,_3);var _4=(isc.isAn.Array(_2.data)||(isc.isA.ResultSet(_2.data)&&_2.data.allMatchingRowsCached())),_5=_2.getSelection()||[];if(_4){if(_5.length==_2.data.getLength()){_2.$63m(true)}else{_2.$63m(false)}}}else if(_2.getTreeFieldNum&&_2.selectionAppearance=="checkbox"){var _6=_2.getTreeFieldNum();_2.refreshCell(_1,_6)}}
+,isc.A.$29s=function isc_GridBody__cellSelectionChanged(_1,_2,_3,_4){var _5=this.grid;if(_5&&_5.showSelectionCanvas)_5.updateSelectionCanvas();return this.invokeSuper(isc.GridBody,"$29s",_1,_2,_3,_4)}
+,isc.A.shouldAnimateEmbeddedComponent=function isc_GridBody_shouldAnimateEmbeddedComponent(_1){var _2=this.grid;if(_1==_2.selectionCanvas)return _2.animateSelection;if(_1==_2.selectionUnderCanvas)return _2.animateSelectionUnder;if(_1==_2.rollOverCanvas)return _2.animateRollOver;if(_1==_2.rollUnderCanvas)return _2.animateRollUnder;return false}
+,isc.A.$80d=function isc_GridBody__handleEmbeddedComponentResize(_1,_2,_3){this.Super("$80d",arguments);this.grid.$80d(this,_1,_2,_3)}
+,isc.A.draw=function isc_GridBody_draw(_1,_2,_3,_4){var _5=this.grid;if(_5.getEditRow()!=null){var _6=_5.getEditRow(),_7=_5.getRecord(_6),_8=_5.getEditCol(),_9=_5.$286,_10=_5.getEditRowItems(_7,_6,_8,_5.editByCell),_11=_9.getItems();var _12=_11==null||_10.length!=_11.length;if(!_12){var _13=_11.getProperty("name");for(var i=0;i<_10.length;i++){if(!_13.contains(_10[i].name)){_12=true;break}}}
+if(_12){this.logDebug("calling setItems on form from body draw","gridEdit");_9.setItems(_10)}else{this.logDebug("Skipping setItems() on form from body draw","gridEdit")}
+_9.$10u=true}
+delete this.$316;this.invokeSuper(null,"draw",_1,_2,_3,_4);if(_5.$286){_5.$30b(null,null,this)}
+_5.updateEditRow(_5.getEditRow());if(_5.$30d!=null){var _15=isc.isAn.Array(_5.$30d)?_5.$30d[0]:_5.$30d,_16=isc.isAn.Array(_5.$30d)?_5.$30d[1]||0:0;_5.scrollCellIntoView(_15,_16);delete _5.$30d}
+this.grid.updateRecordComponents()}
+,isc.A.layoutChildren=function isc_GridBody_layoutChildren(_1,_2,_3,_4){this.invokeSuper(null,"layoutChildren",_1,_2,_3,_4);if(!this.isDrawn()||(this.grid.frozenFields&&!this.grid.bodyLayout.isDrawn())){return}
+if(_1=="scrolling state changed"){if(this.$28i==null){this.grid.layoutChildren("body scroll changed");delete this.$30e}else{this.$30e=true}}}
+,isc.A.$28p=function isc_GridBody__rowAnimationComplete(){this.Super("$28p",arguments);if(this.$30e){this.grid.layoutChildren("body scroll changed during animation");delete this.$30e}}
+,isc.A.handleMoved=function isc_GridBody_handleMoved(_1,_2,_3,_4){this.invokeSuper(null,"handleMoved",_1,_2,_3,_4);var _5=this.grid;if(_5.$30a){_5.$286.itemsMoved()}}
+,isc.A.handleParentMoved=function isc_GridBody_handleParentMoved(_1,_2,_3,_4){this.invokeSuper(null,"handleParentMoved",_1,_2,_3,_4);var _5=this.grid;if(_5.$30a){_5.$286.itemsMoved()}}
+,isc.A.setVisibility=function isc_GridBody_setVisibility(_1,_2,_3,_4){this.invokeSuper(null,"setVisibility",_1,_2,_3,_4);var _5=this.grid;if(_5.$30a)_5.$286.itemsVisibilityChanged()}
+,isc.A.parentVisibilityChanged=function isc_GridBody_parentVisibilityChanged(_1,_2,_3,_4){this.invokeSuper(null,"parentVisibilityChanged",_1,_2,_3,_4);var _5=this.grid;if(_5.$30a)_5.$286.itemsVisibilityChanged()}
+,isc.A.clear=function isc_GridBody_clear(){var _1=this.grid;_1.$69l();this.Super("clear",arguments);if(_1.$30a){_1.$30b(null,null,this);_1.$286.itemsVisibilityChanged()}}
+,isc.A.zIndexChanged=function isc_GridBody_zIndexChanged(){this.Super("zIndexChanged",arguments);var _1=this.grid;if(_1&&_1.$30a)_1.$286.itemsZIndexChanged()}
+,isc.A.parentZIndexChanged=function isc_GridBody_parentZIndexChanged(_1,_2,_3,_4){this.invokeSuper(null,"zIndexChanged",_1,_2,_3,_4);var _5=this.grid;if(_5.$30a)_5.$286.itemsZIndexChanged()}
+,isc.A.redrawFormItem=function isc_GridBody_redrawFormItem(_1,_2){var _3=this.grid;if(_3&&(_1.form==_3.$286)){var _4=_3.getEditRow(),_5=_3.getColNum(_1.getFieldName());if(_3.getEditCol()==_5){_3.storeUpdatedEditorValue()}
+_3.refreshCell(_4,_5,false,true)}else
+return this.markForRedraw("Form Item Redraw "+(_2?_2:isc.emptyString))}
+,isc.A.sizeFormItem=function isc_GridBody_sizeFormItem(_1){var _2=this.grid;var _3=_1.width,_4;if(isc.isA.String(_3)){var _5=_2.getEditFormItemFieldWidths(_1.record),_6=_5[_2.getFieldNum(_1.getFieldName())];if(_3=="*"){_4=_6}else if(_3[_3.length-1]=="%"){var _7=parseInt(_3);if(isc.isA.Number(_7)){_4=Math.floor(_6*(_7/ 100))}}}
+var _8=_1.height,_9;if(isc.isA.String(_8)){var _10=_2.cellHeight;if(_3=="*"){_9=_10}else if(_8[_8.length-1]=="%"){var _11=parseInt(_8);if(isc.isA.Number(_11)){_9=Math.floor(_10*(_11/ 100))}}}
+if(_9!=null||_4!=null){_1.$8t=[_4==null?_1.width:_4,_9==null?_1.height:_9]}}
+,isc.A.startRowAnimation=function isc_GridBody_startRowAnimation(_1,_2,_3,_4,_5,_6,_7,_8,_9){this.finishRowAnimation();var _10=(_9&&(this.$34y!=null)),_11=this.grid;if(_10){_11.$34v=true;_11.data.openFolder(this.$34y);_11.$34v=null}
+this.Super("startRowAnimation",arguments);if(_10){_11.$34v=true;_11.data.closeFolder(this.$34y);_11.$34v=null}
+delete this.$34y}
+);isc.B._maxIndex=isc.C+65;isc.A=isc.ListGrid;isc.A.CORNER="corner";isc.A.FIELD="field";isc.A.BEFORE="before";isc.A.AFTER="after";isc.A.OVER="over";isc.A.CLICK_OUTSIDE="click_outside";isc.A.CLICK="click";isc.A.DOUBLE_CLICK="doubleClick";isc.A.ENTER_KEYPRESS="enter";isc.A.ESCAPE_KEYPRESS="escape";isc.A.UP_ARROW_KEYPRESS="arrow_up";isc.A.DOWN_ARROW_KEYPRESS="arrow_down";isc.A.LEFT_ARROW_KEYPRESS="arrow_left";isc.A.RIGHT_ARROW_KEYPRESS="arrow_right";isc.A.TAB_KEYPRESS="tab";isc.A.SHIFT_TAB_KEYPRESS="shift_tab";isc.A.EDIT_FIELD_CHANGE="field_change";isc.A.EDIT_ROW_CHANGE="row_change";isc.A.PROGRAMMATIC="programmatic";isc.A.FOCUS="focus";isc.A.$295=["selection","selectionType","canSelectCells","canDragSelect","canSelectOnRightMouse","recordCanSelectProperty","canDrag","canAcceptDrop","canDrop","autoFit","wrapCells","cellSpacing","cellPadding","cellHeight","enforceVClipping","autoFitData","autoFitMaxRecords","autoFitMaxWidth","autoFitMaxColumns","autoFitMaxHeight","autoFitExtraRecords","showAllColumns","drawAllMaxCells","drawAheadRatio","quickDrawAheadRatio","instantScrollTrackRedraw","scrollRedrawDelay","printMaxRows","animateRowsMaxTime","fastCellUpdates","showRollOver","useCellRollOvers","canHover","showHover","hoverDelay","hoverWidth","hoverHeight","hoverAlign","hoverVAlign","hoverStyle","hoverOpacity","hoverMoveWithMouse","hoverByCell","keepHoverActive","cellHoverOutset","showEmptyMessage","emptyMessageStyle","emptyMessageTableStyle","showOfflineMessage","offlineMessageStyle","useCellRecords","singleCellValueProperty","isSeparatorProperty","accessKey","canFocus","_useNativeTabIndex","tableStyle","baseStyle","recordCustomStyleProperty","showSelectedStyle","fullRowSpans","showFocusOutline"];isc.A.$296=["getCellStyleName","getCellStyleIndex","getRowTop","getRowPageTop","getRowSize","getDrawnRowHeight","getCellPageRect","getVisibleRows","getDrawnRows"];isc.A.$297=["getTotalRows","isEmpty","cellIsEnabled","willAcceptDrop","scrolled","getTableElementId","getRowElementId","getCellElementId","shouldFixRowHeight","getEmptyMessage","getCanHover","stopHover","updateEmbeddedComponentZIndex"];isc.A=isc.ListGrid;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.makeBodyMethods=function isc_c_ListGrid_makeBodyMethods(_1){var _2=this.$cf;if(_2==null){_2=this.$cf=[,"this.grid.$81e = this;"+"var returnVal = this.grid.",,"(",,");"+"this.grid.$81e=null;"+"return returnVal;"]}
+var _3={};for(var i=0;i<_1.length;i++){var _5=_1[i],_6=isc.GridRenderer.getArgString(_5);if(isc.contains(_6,"colNum")){_2[0]="if (this.fields[colNum]) colNum = this.fields[colNum].masterIndex;"}else if(isc.isAn.emptyString(_6)){_6="body";_2[0]="body = this;"}else{_2[0]=null}
+_2[2]=_5;_2[4]=_6;var _7=_2.join(isc.emptyString);_3[_5]=new Function(_6,_7)}
+return _3}
+,isc.A.classInit=function isc_c_ListGrid_classInit(){this.addMethods(isc.ClassFactory.makePassthroughMethods(this.$296,"body"));var _1={};var _2=isc.getKeys(isc.GridRenderer.$294),_1=isc.ListGrid.makeBodyMethods(_2);isc.addProperties(_1,isc.ListGrid.makeBodyMethods(this.$297));this.$30f=_1;var _3={},_4=[,"var $81e = this.$81e || this.body;"+" if ($81e == null) {"+"return;"+"}"+"if($81e.__orig_",,")return $81e.__orig_",,"(",,")"],_5="__orig_",_6=isc.GridRenderer.getPrototype();for(var i=0;i<_2.length;i++){var _8=_2[i],_9=isc.GridRenderer.getArgString(_8);if(isc.ListGrid.getInstanceProperty(_8)==null){if(isc.contains(_9,"colNum")){_4[0]="if (colNum != null && colNum >= 0) colNum = this.getLocalFieldNum(colNum);"}else{_4[0]=null}
+_4[2]=_4[4]=_8;_4[6]=_9
+_3[_8]=new Function(_9,_4.join(isc.emptyString))}
+_6[_5+_8]=_6[_8]}
+this.$30g=_3;this.addMethods(_3)}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.ListGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.styleName="listGrid";isc.A.useCellRecords=false;isc.A.recordEnabledProperty="enabled";isc.A.canExpandRecordProperty="canExpand";isc.A.animateFolders=true;isc.A.animateFolderTime=100;isc.A.animateFolderSpeed=3000;isc.A.animateRowsMaxTime=1000;isc.A.autoFetchDisplayMap=true;isc.A.warnOnUnmappedValueFieldChange=true;isc.A.showDetailFields=true;isc.A.groupStartOpen="first";isc.A.canCollapseGroup=true;isc.A.showGroupTitleColumn=true;isc.A.groupTitleColumnDefaults={canEdit:false,canFilter:false,canHide:false,canReorder:false,showDefaultContextMenu:false,showHeaderContextMenuButton:false,autoFreeze:true,sortNormalizer:function(_1,_2,_3){return _1.groupTitle},autoFitWidth:true,autoFitWidthApproach:"value",title:" "};isc.A.groupTitleColumnName="groupTitle";isc.A.showGroupSummaryInHeader=false;isc.A.groupNodeStyle="groupNode";isc.A.groupIcon="[SKINIMG]/TreeGrid/opener.gif";isc.A.groupIconSize=16;isc.A.groupIndentSize=20;isc.A.groupLeadingIndent=10;isc.A.canGroupBy=true;isc.A.groupByMaxRecords=1000;isc.A.nullGroupTitle="-none-";isc.A.valueIconSize=16;isc.A.valueIconLeftPadding=2;isc.A.valueIconRightPadding=2;isc.A.imageSize=16;isc.A.headerSpanVAlign="center";isc.A.showTreeColumnPicker=true;isc.A.fetchDelay=300;isc.A.uniqueMatch=true;isc.A.overflow=isc.Canvas.HIDDEN;isc.A.backgroundColor="white";isc.A.minHeight=50;isc.A.defaultWidth=200;isc.A.drawAllMaxCells=250;isc.A.drawAheadRatio=1.3;isc.A.quickDrawAheadRatio=1.0;isc.A.scrollRedrawDelay=75;isc.A.dataFetchDelay=300;isc.A.bodyConstructor="GridBody";isc.A.bodyOverflow=isc.Canvas.AUTO;isc.A.bodyBackgroundColor="white";isc.A.allowMismatchedHeaderBodyBorder=true;isc.A.emptyCellValue=" ";isc.A.cellHeight=20;isc.A.normalCellHeight=20;isc.A.fixedRecordHeights=true;isc.A.fixedFieldWidths=true;isc.A.autoFitMaxRecords=50;isc.A.autoFitMaxColumns=50;isc.A.canAutoFitFields=true;isc.A.headerAutoFitEvent="doubleClick";isc.A.autoFitFieldsFillViewport=true;isc.A.autoFitWidthApproach="value";isc.A.autoFitIconFields="title";isc.A.leaveScrollbarGap=true;isc.A.resizeFieldsForScrollbar=true;isc.A.cellSpacing=0;isc.A.cellPadding=2;isc.A.timeFormatter="toShortPaddedTime";isc.A.$30h=["<a href='",,"' target='",,"' onclick='if(window.",,") return ",,".$30i(event,",,",",,");'>",,"</a>"];isc.A.$30j="\\'";isc.A.$30k="_blank";isc.A.linkTextProperty="linkText";isc.A.fastCellUpdates=isc.Browser.isIE&&!isc.Browser.isIE9;isc.A.normalBaseStyle="cell";isc.A.tallBaseStyle="cell";isc.A.editFailedBaseStyle=null;isc.A.editFailedCSSText="color:red;border:1px solid red;";isc.A.editPendingBaseStyle=null;isc.A.editPendingCSSText="color:#0066CC;";isc.A.recordCustomStyleProperty="customStyle";isc.A.recordBaseStyleProperty="_baseStyle";isc.A.shrinkForFreeze=false;isc.A.alternateRecordFrequency=1;isc.A.recordCSSTextProperty="cssText";isc.A.showSelectedStyle=true;isc.A.generateClickOnSpace=true;isc.A.generateDoubleClickOnEnter=true;isc.A.arrowKeyAction="select";isc.A.recordComponentPoolingMode="viewport";isc.A.poolComponentsPerColumn=true;isc.A.showRollOver=!isc.Browser.isTouch;isc.A.backgroundComponentDefaults={snapTo:"TL",autoDraw:false,opacity:"50%"};isc.A.showHover=true;isc.A.cellHoverOutset=5;isc.A.hoverStyle="gridHover";isc.A.selectionAppearance="rowStyle";isc.A.recordCanSelectProperty="canSelect";isc.A.showEmptyMessage=true;isc.A.emptyMessage="No items to show.";isc.A.emptyMessageStyle="emptyMessage";isc.A.filterButtonPrompt="Filter";isc.A.loadingDataMessage="${loadingImage} Loading data...";isc.A.loadingDataMessageStyle="loadingDataMessage";isc.A.loadingMessage=" ";isc.A.singleCellValueProperty="singleCellValue";isc.A.isSeparatorProperty="isSeparator";isc.A.filterEditorDefaults={shouldPrint:false};isc.A.filterEditorHeight=22;isc.A.autoFetchTextMatchStyle="substring";isc.A.canEditNew=false;isc.A.recordEditProperty="_canEdit";isc.A.editValuesTestedProperty="$30l";isc.A.autoValidate=true;isc.A.warnOnRemoval=false;isc.A.warnOnRemovalMessage="Are you sure you want to delete this record?";isc.A.recordRemovedProperty="$899";isc.A.removedCSSText="text-decoration:line-through;";isc.A.removeIcon="[SKIN]/actions/remove.png";isc.A.unremoveIcon="[SKIN]/actions/undo.png";isc.A.removeIconSize=16;isc.A.animateRemoveRecord=true;isc.A.animateRemoveTime=100;isc.A.animateRemoveSpeed=200;isc.A.removeFieldTitle="[Remove record]";isc.A.removeFieldDefaults={type:"icon",width:21,showHeaderContextMenuButton:false,showDefaultContextMenu:false,showTitle:false,canEdit:false,canSort:false,canGroupBy:false,canExport:false,canFilter:false,showGroupSummary:false,showGridSummary:false,summaryValue:" "};isc.A.autoSaveEdits=true;isc.A.showErrorIcons=true;isc.A.errorIconHeight=16;isc.A.errorIconWidth=16;isc.A.errorIconSrc="[SKIN]/validation_error_icon.png";isc.A.cancelEditingConfirmationMessage="Cancelling this edit will discard unsaved changes for this record. Continue?";isc.A.confirmDiscardEdits=true;isc.A.confirmDiscardEditsMessage="This action will discard all unsaved changes for this list.";isc.A.discardEditsSaveButtonTitle="Save";isc.A.newRecordRowMessage="-- Add New Row --";isc.A.enterKeyEditAction="done";isc.A.escapeKeyEditAction="cancel";isc.A.editEvent=isc.EH.DOUBLE_CLICK;isc.A.editOnF2Keypress=true;isc.A.selectOnEdit=true;isc.A.enumCriteriaAsInitialValues=true;isc.A.autoSelectEditors=true;isc.A.editFormDefaults={canSelectText:true,autoDraw:false,errorOrientation:"left",showErrorText:false,showErrorStyle:false,itemKeyPress:function(_1,_2,_3){return this.grid.editorKeyPress(_1,_2,_3)}};isc.A.longTextEditorThreshold=255;isc.A.longTextEditorType="PopUpTextAreaItem";isc.A.headerHeight=22;isc.A.minFieldWidth=15;isc.A.showHeader=true;isc.A.headerBackgroundColor="#CCCCCC";isc.A.headerDefaults={instantRelayout:true,enforcePolicy:false,itemClick:function(_1,_2){this.Super("itemClick",arguments);this.grid.$666(_2,this)},itemDoubleClick:function(_1,_2){this.Super("itemDoubleClick",arguments);this.grid.$774(_2,this)},showContextMenu:function(){return this.grid.headerBarContextClick(this)},backgroundRepeat:isc.Canvas.NO_REPEAT,shouldPrint:false};isc.A.headerButtonDefaults={getCurrentCursor:function(){var _1=this.parentElement?this.parentElement.grid:null;var _2;if(_1&&this.masterIndex!=null){var _3=_1.getField(this.masterIndex),_4=(_1.canSort!=false&&_1.$91k(_3)!=false);if(_4)_2=isc.Canvas.HAND;else _2=isc.Canvas.DEFAULT}else{if(this.isSorterButton){if(!_1&&isc.isA.ListGrid(this.parentElement))_1=this.parentElement;var _4=(_1.canSort!=false&&_1.$91k(_1.$60z())!=false);if(_4)_2=isc.Canvas.HAND;else _2=isc.Canvas.DEFAULT}else{_2=this.getClass().getPrototype().cursor}}
+this.cursor=_2;return this.Super("getCurrentCursor",arguments)},dragScrollType:"parentsOnly",minWidth:20};isc.A.sorterConstructor=isc.Button;isc.A.sorterDefaults={_redrawWithParent:false,getTitle:function(){return this.creator.getSortArrowImage()},click:function(){return this.creator.sorterClick()},showContextMenu:function(){return this.creator.sorterContextClick()},isSorterButton:true,showTitle:true,align:"center",canFocus:false};isc.A.canSort=true;isc.A.canUnsort=false;isc.A.invalidateCacheOnUnsort=false;isc.A.sortDirection=Array.ASCENDING;isc.A.canPickFields=true;isc.A.canPickOmittedFields=false;isc.A.openRecordEditorContextMenuItemTitle="Edit";isc.A.dismissEmbeddedComponentContextMenuItemTitle="Dismiss";isc.A.deleteRecordContextMenuItemTitle="Delete";isc.A.canOpenRecordDetailGrid=true;isc.A.canOpenRecordEditor=true;isc.A.recordEditorSaveButtonTitle="Save";isc.A.recordEditorCancelButtonTitle="Cancel";isc.A.headerMenuButtonIcon="[SKIN]/ListGrid/headerMenuButton_icon.gif";isc.A.headerMenuButtonIconWidth=7;isc.A.headerMenuButtonIconHeight=7;isc.A.headerMenuButtonWidth=16;isc.A.headerMenuButtonHeight="100%";isc.A.canDragRecordsOut=false;isc.A.canReorderFields=true;isc.A.canResizeFields=true;isc.A.dragAppearance=isc.EH.TRACKER;isc.A.dragResizeAppearance=isc.EH.OUTLINE;isc.A.dragTrackerMode="title";isc.A.resizeFieldsInRealTime=(isc.Browser.isIE&&isc.Browser.isWin)||(isc.Browser.isFirefox&&isc.Browser.geckoVersion>=20080529)||(isc.Browser.isSafari&&isc.Browser.safariVersion>=500);isc.A.embeddedComponentIndent=25;isc.A.nestedGridDefaults={height:150};isc.A.skinImgDir="images/ListGrid/";isc.A.sortAscendingImage={src:"[SKIN]sort_ascending.gif",width:7,height:7};isc.A.sortDescendingImage={src:"[SKIN]sort_descending.gif",width:7,height:7};isc.A.trackerImage={src:"[SKIN]tracker.gif",width:16,height:16};isc.A.booleanTrueImage=null;isc.A.booleanFalseImage=null;isc.A.booleanPartialImage=null;isc.A.booleanImageWidth=16;isc.A.booleanImageHeight=16;isc.A.mozBodyOutlineColor="white";isc.A.mozBodyNoHeaderOutlineColor="red";isc.A.rowNumberStyle="specialCol";isc.A.rowNumberStart=1;isc.A.rowNumberFieldDefaults={name:"$74y",excludeFromState:true,canEdit:false,canFilter:false,canGroupBy:false,canSort:false,canExport:false,canHide:false,canReorder:false,canDragResize:false,canHilite:false,showAlternateStyle:false,$74z:true,showHeaderContextMenuButton:false,showDefaultContextMenu:false,keyboardFiresRecordClick:false,showGroupSummary:false,showGridSummary:false,summaryValue:" ",formatCellValue:function(_1,_2,_3,_4,_5){if(_5.isGrouped){if(_2==null||_2.$52e)return" ";var _6=_5.getGroupedRecordIndex(_2);if(_6==-1)return null;return(_5.rowNumberStart+_6)}else{return this.rowNumberStart+_3}},autoFreeze:true};isc.A.$740=30;isc.A.canExpandMultipleRecords=true;isc.A.maxExpandedRecordsPrompt="This grid is limited to \${count} simultaneously expanded records. Please collapse some expanded records and retry.";isc.A.expansionFieldDefaults={name:"$72v",canEdit:false,canFilter:false,canGroupBy:false,canSort:false,canExport:false,canHide:false,canReorder:false,canDragResize:false,canHilite:false,$72w:true,showHeaderContextMenuButton:false,showDefaultContextMenu:false,keyboardFiresRecordClick:false,cellAlign:"center",showGroupSummary:false,showGridSummary:false,summaryValue:" ",recordClick:function(_1,_2,_3,_4,_5,_6,_7){if(!_1.canExpandRecords||!_4.$72w)return;if(!_1.$811(_2,_3))return;if(_2.expanded)_1.collapseRecord(_2);else _1.expandRecord(_2)},formatCellValue:function(_1,_2,_3,_4,_5){_2=_5.getCellRecord(_3,_4);if(_2==null||_2.$52e)return null;if(!_5.$811(_2,_3))return null;return _5.getValueIconHTML(_2.expanded?_5.expansionFieldTrueImage:_5.expansionFieldFalseImage,this)},autoFreeze:true};isc.A.expansionFieldTrueImage="[SKINIMG]/ListGrid/group_opened.gif";isc.A.expansionFieldFalseImage="[SKINIMG]/ListGrid/group_opening.gif";isc.A.expansionFieldExtraWidth=16;isc.A.$74a=0;isc.A.expansionDetailFieldDefaults={_constructor:isc.HTMLFlow,autoDraw:false,width:"100%",height:"100%"};isc.A.expansionDetailsDefaults={_constructor:isc.DetailViewer,autoDraw:false,width:"100%"};isc.A.expansionRelatedDefaults={_constructor:isc.ListGrid,autoDraw:false,width:"100%",autoFitData:"vertical",autoFitMaxRecords:4};isc.A.expansionEditorSaveDialogPrompt="You have unsaved changes - do you want to save them now?";isc.A.expansionEditorShowSaveDialog=false;isc.A.expansionEditorDefaults={_constructor:"DynamicForm",autoDraw:false,numCols:4,colWidths:["*","*","*","*"],width:"100%",saveOperationType:"update"};isc.A.expansionDetailRelatedDefaults={_constructor:isc.HLayout,autoDraw:false,width:"100%",height:"100%"};isc.A.expansionLayoutDefaults={_constructor:isc.VLayout,autoDraw:false,width:"100%",height:10,overflow:"visible"};isc.A.recordDetailDSProperty="detailDS";isc.A.expansionCanEdit=false;isc.B.push(isc.A.shouldAnimateFolder=function isc_ListGrid_shouldAnimateFolder(_1){if(!this.animateFolders||!this.isDrawn())return false;var _2=this.data.isFolder(_1)?this.data.getOpenList(_1):null;if(_2==null||_2.length<=1)return false;return(_2.length<=this.getAnimateFolderMaxRows())}
+,isc.A.getAnimateFolderMaxRows=function isc_ListGrid_getAnimateFolderMaxRows(){var _1=this.animateFolderMaxRows;if(_1==null){var _2=this.body?this.body.$27x():[0,0];_1=Math.min(75,(_2[1]-_2[0])*3)}
+return _1}
+,isc.A.getGroupTitleField=function isc_ListGrid_getGroupTitleField(){return this.groupTitleField}
+,isc.A.showingGroupTitleColumn=function isc_ListGrid_showingGroupTitleColumn(){return(this.isGrouped&&this.showGroupSummary&&this.showGroupSummaryInHeader&&this.showGroupTitleColumn&&this.getGroupTitleField()==null)}
+,isc.A.getGroupTitleColumn=function isc_ListGrid_getGroupTitleColumn(){var _1=this;var _2=isc.addProperties({$84g:true,getAutoFreezePosition:function(){return _1.getGroupTitleColumnPosition()}},this.groupTitleColumnDefaults,this.groupTitleColumnProperties);if(_2.name==null){_2.name=this.groupTitleColumnName}
+return _2}
+,isc.A.getGroupTitleColumnPosition=function isc_ListGrid_getGroupTitleColumnPosition(){if(!this.showingGroupTitleColumn())return-1;return(this.showRowNumbers?1:0)}
+,isc.A.singleCellGroupHeaders=function isc_ListGrid_singleCellGroupHeaders(){if(this.getGroupTitleField()!=null)return false;if(this.showGroupSummary&&this.showGroupSummaryInHeader)return false;return true}
+,isc.A.getBreadth=function isc_ListGrid_getBreadth(){return this.getInnerWidth()}
+,isc.A.$30m=function isc_ListGrid__formatDateCellValue(_1,_2,_3,_4,_5,_6){if(isc.isA.Date(_1)){if(_3.$851(_2)){var _7=_3.$30o(_2);var _8=isc.SimpleType.inheritsFrom(_2.type,"time");return isc.Time.toTime(_1,_7,_8)}
+var _9=_2&&isc.SimpleType.inheritsFrom(_2.type,"datetime"),_10=!_9&&isc.SimpleType.inheritsFrom(_2.type,"date"),_7=_3.$45i(_2);if(_9)return _1.toShortDateTime(_7,true);return _1.toShortDate(_7,!_10)}
+return _1}
+,isc.A.$851=function isc_ListGrid__formatAsTime(_1){if(_1==null)return false;if(_1.timeFormatter!=null&&_1.dateFormatter==null)return true;if(_1.dateFormatter!=null&&_1.timeFormatter==null)return false;return isc.SimpleType.inheritsFrom(_1.type,"time")}
+,isc.A.$45i=function isc_ListGrid__getDateFormatter(_1){if(_1==null)return this.dateFormatter;if(_1.dateFormatter!=null)return _1.dateFormatter;if(_1.displayFormat!=null&&isc.SimpleType.inheritsFrom(_1.type,"date")){return _1.displayFormat}
+if(this.datetimeFormatter!=null&&isc.SimpleType.inheritsFrom(_1.type,"datetime")){return this.datetimeFormatter}
+return this.dateFormatter}
+,isc.A.$45j=function isc_ListGrid__getDateInputFormat(_1){var _2;if(_1)_2=_1.inputFormat
+if(!_2)_2=this.dateInputFormat;return _2}
+,isc.A.$30n=function isc_ListGrid__formatNumberCellValue(_1,_2,_3,_4,_5,_6){if(isc.isA.Number(_1)){var _7=(_2.numberFormatter||_2.formatter||_3.numberFormatter);return _1.toFormattedString(_7)}
+return _1}
+,isc.A.$30o=function isc_ListGrid__getTimeFormatter(_1){if(_1!=null){if(_1.timeFormatter!=null)return _1.timeFormatter;if(_1.displayFormat!=null&&isc.SimpleType.inheritsFrom(_1.type,"time")){return _1.displayFormat}}
+return this.timeFormatter}
+,isc.A.$30p=function isc_ListGrid__formatTimeCellValue(_1,_2,_3,_4,_5,_6){var _7=_1;if(isc.isA.String(_7)){_7=isc.Time.parseInput(_7,true)}
+if(isc.isA.Date(_7)){if(!_3.$851(_2)){return _7.toShortDate(_3.$45i(_2),true)}
+var _8=_3.$30o(_2);return isc.Time.toTime(_7,_8,true)}
+return _1}
+,isc.A.$30q=function isc_ListGrid__formatBinaryCellValue(_1,_2,_3,_4,_5,_6){if(isc.isA.String(_1))return _1;if(_4==null)return null;var _7=_2.name,_8=_2.nativeName||_7,_9=_4[_8+"_filename"],_1;if(_2.type=="imageFile"&&_2.showFileInline==true){var _10=_7+"$68c";if(!_4[_10]){var _11=isc.Canvas.getFieldImageDimensions(_2,_4),_12=_3.getDataSource().streamFile(_4,_2.name);_11.width=_11.width||_3.imageSize;_11.height=_11.height||_3.imageSize;_1=_4[_10]=isc.Canvas.imgHTML(_12,_11.width,_11.height)}else
+_1=_4[_10]}else{if(_2.showFileInline==true){this.logWarn("$30q(): Unsupported field-type for showFileInline: "+_2.type)}
+if(_9==null||isc.isA.emptyString(_9))return this.emptyCellValue;var _13=isc.Canvas.imgHTML("[SKIN]actions/view.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='"+_3.getID()+".viewRow("+_5+")'");var _14=isc.Canvas.imgHTML("[SKIN]actions/download.png",16,16,null,"style='cursor:"+isc.Canvas.HAND+"' onclick='"+_3.getID()+".downloadRow("+_5+")'");_1=_13+" "+_14+" "+_9}
+return _1}
+,isc.A.$30r=function isc_ListGrid__formatLinkCellValue(_1,_2,_3,_4,_5,_6){if(_1==null||isc.is.emptyString(_1))return _1;var _7=_2.target?_2.target.replaceAll(_3.$ob,_3.$30j):_3.$30k;var _8=_2.linkTextProperty?_2.linkTextProperty:_3.linkTextProperty;var _9=(_4&&_4[_8])?_4[_8]:_2.linkText||_1;var _10=_1;if(_2.linkURLPrefix)_10=_2.linkURLPrefix+_10;if(_2.linkURLSuffix)_10=_10+_2.linkURLSuffix;_10=_10.replaceAll(_3.$ob,_3.$30j);if(_7=="javascript"){_10="javascript:void"}
+var _11=_3.$30h;_11[1]=_10;_11[3]=_7;var _12=_3.getID();_11[5]=_12;_11[7]=_12;_11[9]=_5;_11[11]=_6;_11[13]=_9;return _11.join(isc.emptyString)}
+,isc.A.$30i=function isc_ListGrid__linkClicked(_1,_2,_3){var _4=(this.destroyed||!this.isDrawn()||!this.isVisible()||isc.EH.targetIsMasked(this.body)||!this.recordIsEnabled(_2,_3));var _5=this.getRecord(_2),_6=this.getField(_3);if(_1.target=="javascript"||_6.target=="javascript"){_4=true;this.cellClick(_5,_2,_3)}
+if(_4){if(!isc.Browser.isIE){_1.preventDefault()}
+return false}
+return true}
+,isc.A.$30s=function isc_ListGrid__formatImageCellValue(_1,_2,_3,_4,_5,_6){if(_1==null||_1==isc.emptyString)return isc.emptyString;var _7=isc.Canvas.getFieldImageDimensions(_2,_4);_7.width=_7.width||_3.imageSize;_7.height=_7.height||_3.imageSize;var _8=_1,_9=_2.imageURLPrefix||_2.baseURL||_2.imgDir;if(_2.imageURLSuffix!=null)_8+=_2.imageURLSuffix;return isc.Canvas.imgHTML(_8,_7.width,_7.height,null,_2.extraStuff,_9,_2.activeAreaHTML)}
+,isc.A.$59e=function isc_ListGrid__formatIconCellValue(_1,_2,_3,_4,_5,_6){if(isc.isA.RecordEditor(_3)&&_3.isAFilterEditor()&&_2.canFilter==false)return null;if(_2.$59f)return _2.$59f;_2.$59f=isc.Canvas.imgHTML(_2.cellIcon||_2.icon,_2.iconWidth||_2.iconSize||_3.imageSize,_2.iconHeight||_2.iconSize||_3.imageSize);return _2.$59f}
+,isc.A.setFastCellUpdates=function isc_ListGrid_setFastCellUpdates(_1){if(this.body!=null){this.body.setFastCellUpdates(_1);_1=this.body.fastCellUpdates}
+if(this.frozenBody!=null){this.frozenBody.setFastCellUpdates(_1)}
+this.fastCellUpdates=_1}
+,isc.A.shouldShowRemoveField=function isc_ListGrid_shouldShowRemoveField(){if(this.fieldSourceGrid!=null)return this.fieldSourceGrid.shouldShowRemoveField();return this.canRemoveRecords}
+,isc.A.markRecordRemoved=function isc_ListGrid_markRecordRemoved(_1,_2){if(!isc.isA.Number(_1))_1=this.findRowNum(_1);if(this.getEditRow()==_1)this.hideInlineEditor();var _3=this.getRecord(_1);this.selection.deselect(_3);this.setEditValue(_1,this.recordRemovedProperty,true,false,false);if(!_2)this.refreshRow(_1)}
+,isc.A.recordMarkedAsRemoved=function isc_ListGrid_recordMarkedAsRemoved(_1){if(_1==null)return;if(!isc.isA.Number(_1))_1=this.findRowNum(_1);return(this.getEditValue(_1,this.recordRemovedProperty)==true)}
+,isc.A.unmarkRecordRemoved=function isc_ListGrid_unmarkRecordRemoved(_1,_2){if(!isc.isA.Number(_1))_1=this.findRowNum(_1);this.clearEditValue(_1,this.recordRemovedProperty);if(!_2)this.refreshRow(_1)}
+,isc.A.markSelectionRemoved=function isc_ListGrid_markSelectionRemoved(){var _1=this.getSelectedRecords();if(_1!=null){for(var i=0;i<_1.length;i++){this.markRecordRemoved(_1[i],true)}}
+this.markForRedraw()}
+,isc.A.shouldDeferRemoval=function isc_ListGrid_shouldDeferRemoval(){if(this.deferRemoval!=null)return this.deferRemoval;return!this.autoSaveEdits}
+,isc.A.editorKeyDown=function isc_ListGrid_editorKeyDown(_1,_2){if(isc.Browser.isMoz&&_1&&_1.multiple&&isc.isA.NativeSelectItem(_1)&&_2=="Enter")
+{_1.$695=_1.getValue()}
+if(_2=="Tab"){_1.$90y=true}
+if(isc.Browser.isSafari&&isc.Browser.safariVersion>=525.13&&_2=="Tab"){return false}}
+,isc.A.editorKeyPress=function isc_ListGrid_editorKeyPress(_1,_2,_3){var _4=isc.EH,_5,_6;var _7=isc.isA.PopUpTextAreaItem(_1)||(isc.RichTextItem&&isc.isA.RichTextItem(_1))||isc.isA.TextAreaItem(_1);if(_2=="Tab"){if(!_1.$90y)return;delete _1.$90y;var _8=_4.shiftKeyDown();if(this.ns.isA.ContainerItem(_1)||(_1.icons!=null&&_1.icons.length>0&&!this.ns.isA.PopUpTextAreaItem(_1)))
+{if(!this.$11s(_1,_8)){return false}}
+_6=_8?isc.ListGrid.SHIFT_TAB_KEYPRESS:isc.ListGrid.TAB_KEYPRESS;_5=false}else if(_2=="Enter"){if(_1.getFocusIconIndex()!=null)return;if(_7&&isc.EH.altKeyDown()==false){return _5}
+if(_1.$695!=null){var _9=_1.$695;delete _1.$695;_1.setValue(_9)}
+_6=isc.ListGrid.ENTER_KEYPRESS;_5=false}else if(_2=="Escape"){_6=isc.ListGrid.ESCAPE_KEYPRESS;_5=false}else if(_2=="Arrow_Up"){var _10=_7;if(_10&&!isc.EH.altKeyDown())return _5;if(isc.isA.SelectItem(_1)&&!isc.EH.ctrlKeyDown())return _5;if(isc.EH.ctrlKeyDown()&&isc.EH.shiftKeyDown())return _5;_6=isc.ListGrid.UP_ARROW_KEYPRESS;_5=false}else if(_2=="Arrow_Down"){var _10=_7;if(_10&&!isc.EH.altKeyDown())return _5;if(isc.isA.SelectItem(_1)&&!isc.EH.ctrlKeyDown())return _5;if(isc.EH.ctrlKeyDown&&isc.EH.shiftKeyDown())return _5;_6=isc.ListGrid.DOWN_ARROW_KEYPRESS;_5=false}else if(this.moveEditorOnArrow&&this.$51k){if(_2=="Arrow_Left"){_6=isc.ListGrid.LEFT_ARROW_KEYPRESS;_5=false}else if(_2=="Arrow_Right"){_6=isc.ListGrid.RIGHT_ARROW_KEYPRESS;_5=false}}
+if(_6!=null){if(isc.EH.clickMaskUp()){isc.EH.setMaskedFocusCanvas(null,isc.EH.clickMaskRegistry.last())}
+this.cellEditEnd(_6)}
+return _5}
+,isc.A.$11s=function isc_ListGrid__moveFocusWithinItem(_1,_2){if(!_1)return true;return(!_1.$11s(!_2))}
+,isc.A.$30t=function isc_ListGrid__editFormItem_elementFocus(_1){var _2=this.form,_3=_2.grid;var _4,_5,_6,_7;if(_3.$30a){_4=_3.$285;if(!_3.editByCell){_4=_3.$285;_6=this.getFieldName();_5=_3.fields.findIndex(_3.fieldIdProperty,_6);if(!_1){_7=(_3.$30u!=_5);if(_7){_3.setNewEditCell(_4,_5);_3.cellEditEnd(isc.ListGrid.EDIT_FIELD_CHANGE)}}}else{_5=_3.$30u}}
+this.Super("elementFocus",arguments);if(_3.$30a){var _8=this.$30v,_9=this.$30w;delete this.$30v;delete this.$30w;var _10=isc.addProperties({},_3.getCellRecord(_4,_5),_3.$300(_4,_5));if(_9){var _6=_3.getFieldName(_5);_3.$30x(this,_4,_5,_10[_6])}
+if(_8)_3.$30z(this,_4,_10)}else{_3.logWarn("suppressing editorEnter handlers on focus as listGrid.$30a is null")}}
+,isc.A.getParentGroupIndex=function isc_ListGrid_getParentGroupIndex(_1){if(!this.isGrouped)return 0;var _2=this.groupTree,_3=_2.getParent(_1),_4=_2.getChildren(_2.getParent(_3)),_5=0;for(var i=0;i<_4.length;i++){var _7=_4[i];if(_7.groupValue==_3.groupValue){_5=i;break}}
+return _5}
+,isc.A.getGroupedRecordIndex=function isc_ListGrid_getGroupedRecordIndex(_1){if(!this.isGrouped)return-1;var _2=this.groupTree,_3=_2==null?null:_2.getParent(_1);if(_3==null)return-1;var _4=_2.getChildren(_2.getParent(_3)),_5=0,_6=0;for(var i=0;i<_4.length;i++){var _8=_4[i];if(_8.groupValue==_3.groupValue){var _9=_2.getChildren(_8);for(var j=0;j<_9.length;j++){if(this.objectsAreEqual(_9[j],_1)){return _6+j}}}
+var _11=_2.getChildren(_8),_12=_11.length;if(this.showGroupSummary&&!this.showGroupSummaryInHeader){for(var _13=_12-1;_13>=0;_13--){if(_11[_13].groupSummaryRecordProperty)_12-=1;else break}}
+_6+=_12}
+return _6}
+,isc.A.objectsAreEqual=function isc_ListGrid_objectsAreEqual(_1,_2){for(var _3 in _1){if(_1[_3]!=_2[_3])return false}
+return true}
+,isc.A.getRowNumberField=function isc_ListGrid_getRowNumberField(){var _1=this,_2={width:this.$740,baseStyle:this.rowNumberStyle,rowNumberStart:this.rowNumberStart,getAutoFreezePosition:function(){return _1.getRowNumberFieldPosition()}};isc.addProperties(_2,this.rowNumberFieldDefaults,this.rowNumberFieldProperties);_2.title=" ";return _2}
+,isc.A.getCurrentRowNumberField=function isc_ListGrid_getCurrentRowNumberField(){var _1=this.completeFields||this.fields,_2=_1.find(this.fieldIdProperty,"$74y");return!_2?null:isc.isAn.Array(_2)?_2[0]:_2}
+,isc.A.isRowNumberField=function isc_ListGrid_isRowNumberField(_1){if(!_1||!_1.$74z)return false;else return true}
+,isc.A.getRowNumberFieldPosition=function isc_ListGrid_getRowNumberFieldPosition(){if(this.fieldSourceGrid)return this.fieldSourceGrid.getRowNumberFieldPosition();if(!this.showRowNumbers)return-1;return 0}
+,isc.A.shouldShowRowNumberField=function isc_ListGrid_shouldShowRowNumberField(){return this.fieldSourceGrid?this.fieldSourceGrid.shouldShowRowNumberField():(this.showRowNumbers==true)}
+,isc.A.shouldShowExpansionField=function isc_ListGrid_shouldShowExpansionField(){return this.fieldSourceGrid?this.fieldSourceGrid.shouldShowExpansionField():this.canExpandRecords==true}
+,isc.A.getExpansionField=function isc_ListGrid_getExpansionField(){var _1=this,_2={excludeFromState:true,width:this.$72y()+this.expansionFieldExtraWidth,getAutoFreezePosition:function(){return _1.getExpansionFieldPosition()}};_2.valueIconWidth=this.$72y();_2.valueIconHeight=this.$72z();isc.addProperties(_2,this.expansionFieldDefaults,this.expansionFieldProperties);_2.title=" ";return _2}
+,isc.A.getCurrentExpansionField=function isc_ListGrid_getCurrentExpansionField(){var _1=this.completeFields||this.fields,_2=_1.find(this.fieldIdProperty,"$72v");return!_2?null:isc.isAn.Array(_2)?_2[0]:_2}
+,isc.A.$72y=function isc_ListGrid__getExpansionFieldImageWidth(){return this.expansionFieldImageWidth||this.booleanImageWidth||(isc.CheckboxItem?isc.CheckboxItem.getInstanceProperty("valueIconWidth"):null)}
+,isc.A.$72z=function isc_ListGrid__getExpansionFieldImageHeight(){return this.expansionFieldImageHeight||this.booleanImageHeight||(isc.CheckboxItem?isc.CheckboxItem.getInstanceProperty("valueIconHeight"):null)}
+,isc.A.isExpansionField=function isc_ListGrid_isExpansionField(_1){if(!_1||!_1.$72w)return false;else return true}
+,isc.A.getExpansionFieldPosition=function isc_ListGrid_getExpansionFieldPosition(){if(this.fieldSourceGrid!=null)return this.fieldSourceGrid.getExpansionFieldPosition();if(!this.canExpandRecords)return-1;var _1=0;if(this.showRowNumbers)_1+=1;if(this.showingGroupTitleColumn())_1+=1;return _1}
+,isc.A.$811=function isc_ListGrid__canExpandRecord(_1,_2){if(_1==null)_1=this.getRecord(_2);if(_1==null)return false;return this.canExpandRecord(_1,_2)}
+,isc.A.canExpandRecord=function isc_ListGrid_canExpandRecord(_1,_2){return _1[this.canExpandRecordProperty]==false?false:true&&(this.canExpandRecords!=false)}
+,isc.A.setCanExpandRecords=function isc_ListGrid_setCanExpandRecords(_1){if(this.canExpandRecords==_1)return;if(!_1){var _2=this.data;if(_2){var _3=this.data.findAll("expanded",true);if(_3!=null){for(var i=0;i<_3.length;i++){this.collapseRecord(_3[i])}}}}
+this.canExpandRecords=_1;this.refreshFields()}
+,isc.A.expandRecord=function isc_ListGrid_expandRecord(_1){var _2,_3=this.getRecordIndex(_1);if(!_1.expanded){if(this.onExpandRecord!=null&&!this.onExpandRecord(_1))return;if(!this.canExpandMultipleRecords){if(this.$74b)
+this.collapseRecord(this.$74b);this.$74b=_1}else if(this.maxExpandedRecords){if(this.$74a==this.maxExpandedRecords){var _4=this.maxExpandedRecordsPrompt.evalDynamicString(this,{count:this.maxExpandedRecords});isc.say(_4);return}}
+_2=this.getExpansionComponent(_1);var _5=this.createAutoChild("expansionLayout",{layoutLeftMargin:this.embeddedComponentIndent,members:[_2]});_5.isExpansionComponent=true;this.addEmbeddedComponent(_5,_1,this.data.indexOf(_1));_1.expanded=true;_1.hasExpansionComponent=true;this.$74a++;if(!this.canExpandMultipleRecords)this.$74b=_1}
+this.delayCall("markForRedraw",["Expanded Record"]);this.refreshRow(_3)}
+,isc.A.collapseRecord=function isc_ListGrid_collapseRecord(_1){var _2=(_1&&_1.$29a)?_1.$29a.find("isExpansionComponent",true):null;if(isc.isA.Layout(_2)){var _3=_2.getMember(0);if(isc.isA.DynamicForm(_3)&&_3.valuesHaveChanged()){if(this.autoSaveEdits==true){var _4=this;if(this.expansionEditorShowSaveDialog){isc.confirm(this.expansionEditorSaveDialogPrompt,function(_8){if(_8){_4.saveExpansionDetail(_3,_2,_1)}else{_4.$84t(_1,_2)}})}else{this.saveExpansionDetail(_3,_2,_1)}
+return}else{var _5=_3.getChangedValues(),_6=this.getRecordIndex(_1),_4=this;if(this.expansionEditorShowSaveDialog){isc.confirm("You have unsaved changes - do you want to save them now?",function(_8){if(_8){for(var _7 in _5){_4.setEditValue(_6,_7,_5[_7])}
+_4.$84t(_1,_2)}else{_4.$84t(_1,_2)}});return}else{for(var _7 in _5){this.setEditValue(_6,_7,_5[_7])}
+this.$84t(_1,_2);return}}}}
+this.$84t(_1,_2)}
+,isc.A.saveExpansionDetail=function isc_ListGrid_saveExpansionDetail(_1,_2,_3){var _4=this;_1.saveData(function(_5,_6,_7){if(_6){_3=_6;_4.$84t(_3,_2)}},{showPrompt:true,promptStyle:"cursor"})}
+,isc.A.$84t=function isc_ListGrid__collapseRecord(_1,_2){_2=_2||(_1&&_1.$29a?_1.$29a.find("isExpansionComponent",true):null);if(_1.expanded){if(this.onCollapseRecord!=null&&!this.onCollapseRecord(_1))return;if(this.$74b&&this.$74b==_1)
+delete this.$74b;this.removeEmbeddedComponent(_1,_2?_2:this.frozenFields?this.frozenFields.length:0);this.$74a--}
+_1.expanded=false;this.$74c();this.markForRedraw()}
+,isc.A.getCurrentExpansionComponent=function isc_ListGrid_getCurrentExpansionComponent(_1){if(isc.isA.Number(_1))_1=this.getRecord(_1);if(!_1.hasExpansionComponent)return null;var _2=_1.$29a?_1.$29a.find("isExpansionComponent",true):null;if(_2){return _2.members[0]}
+return null}
+,isc.A.getExpansionComponent=function isc_ListGrid_getExpansionComponent(_1){return this.$84d(_1,true,false)}
+,isc.A.getRelatedDataSource=function isc_ListGrid_getRelatedDataSource(_1){return isc.DS.getDataSource(_1[this.recordDetailDSProperty])||isc.DS.get(this.detailDS)}
+);isc.B._maxIndex=isc.C+56;isc.A=isc.ListGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.warnOnReusedFields=true;isc.A.autoFitExpandLengthThreshold=10;isc.A.$81l="dataChanged";isc.A.$70q=0;isc.A.$g2="boolean";isc.A.$604="set fields";isc.A.$12c="checkbox";isc.A.checkboxFieldDefaults={name:"_checkboxField",excludeFromState:true,canEdit:false,shouldPrint:false,canFilter:false,canGroupBy:false,canSort:false,canExport:false,canHide:false,canReorder:false,canDragResize:false,canHilite:false,$63f:true,type:"boolean",showDefaultContextMenu:false,showHeaderContextMenuButton:false,hoverHTML:"return null;",autoFreeze:true,showGroupSummary:false,showGridSummary:false,summaryValue:" "};isc.A.$63g=15;isc.A.$812="Getting listGrid fieldWidths. ";isc.A.gridComponents=["filterEditor","header","body","summaryRow"];isc.A.showComponentPropertyMap={header:"showHeader",filterEditor:"showFilterEditor",summaryRow:"showGridSummary"};isc.A.$880="body";isc.A.$881="header";isc.A.iconPadding=2;isc.A.$71t="summary";isc.A.$302="<HR>";isc.A.$303=["style='margin-left:",,"px;margin-right:",,"px;'"];isc.A.$g2="boolean";isc.A.$gx="text";isc.A.$54y={" ":true,"\n":true,"\r":true,"\r\n":true};isc.A.$54t=" ";isc.A.$687={text:true,TextItem:true,select:true,SelectItem:true,combobox:true,ComboBoxItem:true,comboBox:true,checkbox:true,CheckboxItem:true,date:true,DateItem:true,spinner:true,SpinnerItem:true,popUpTextArea:true,PopUpTextAreaItem:true};isc.A.$18r="false";isc.A.$18q="true";isc.A.$81m="$81n";isc.A.$81o=0;isc.A.$57m="expand";isc.A.printAutoFit=true;isc.A.printWrapCells=true;isc.A.printHeaderStyle="printHeader";isc.A.printMaxRows=100;isc.A.defaultCellHoverComponentWidth=300;isc.A.defaultCellHoverComponentHeight=150;isc.A.$20s="Arrow_Up";isc.A.$20t="Arrow_Down";isc.A.$304="Space";isc.A.$10j="Enter";isc.A.$51g="f2";isc.A.$51g="f2";isc.A.$20w="Escape";isc.A.$51h="Backspace";isc.A.$51i="Delete";isc.A.$51l="keyPress";isc.A.$27r="none";isc.A.$305="focus";isc.A.$12b="select";isc.A.$306="activate";isc.A.hiliteOnNativeRowFocus=true;isc.A._useFocusProxy=false;isc.A.showFocusOutline=!isc.Browser.isSafari;isc.A.showGridSummary=false;isc.A.invalidSummaryValue=" ";isc.A.includeInSummaryProperty="includeInSummary";isc.A.gridSummaryRecordProperty="isGridSummary";isc.A.groupSummaryRecordProperty="isGroupSummary";isc.A.$71t="summary";isc.A.recordSummaryBaseStyle="recordSummaryCell";isc.A.summaryRowConstructor="ListGrid";isc.A.summaryRowDefaults={showRollOver:false};isc.A.summaryRowHeight=20;isc.A.summaryRowStyle="gridSummaryCell";isc.A.$18q="true";isc.A.updateEditorItemsInPlace=true;isc.A.$307={time:true,TimeItem:true};isc.A.$g5="time";isc.A.$308={date:true,DateItem:true};isc.A.$68k={datetime:true,dateTime:true,DatetimeItem:true,DateTimeItem:true};isc.A.$g4="date";isc.A.$68l="datetime";isc.A.$309={popUpTextArea:true,PopUpTextAreaItem:true};isc.A.$31a={checkbox:true,CheckboxItem:true};isc.A.$g2="boolean";isc.A.$12c="checkbox";isc.A.$12i="CycleItem";isc.A.$31b={select:true,SelectItem:true};isc.A.$45k=["change","changed","defaultDynamicValue"];isc.A.$31c=["change","changed","defaultDynamicValue","keyPress","click","showIf","enableIf"];isc.A.$31d={};isc.A.$81p="column remap";isc.A.$31e=0;isc.A.$31f="rowNum,colNum,editCompletionEvent,success";isc.A.$88z=true;isc.A.$60m="toggle frozen fields";isc.A.$81q="rebuilding body";isc.A.selectionCanvasDefaults={opacity:20};isc.A.selectionUnderCanvasDefaults={};isc.A.rollOverCanvasDefaults={snapTo:"TL",width:"100%",height:"100%"};isc.A.rollUnderCanvasDefaults={snapTo:"TL",width:"100%",height:"100%"};isc.A.$616="header height changed";isc.A.$617="header visibility changed";isc.A.headerMenuButtonDefaults={snapTo:"R",canFocus:false,resizeFrom:"R",title:null,iconSpacing:0,click:function(){this.parentElement.grid.headerMenuButtonClick()},mouseOut:function(){var _1=isc.EH.getTarget();if(!_1||!this.parentElement.contains(_1))this.hide();this.Super("mouseOut",arguments)}};isc.A.predictScrollbarGap=true;isc.A.sortFieldAscendingText="Sort Ascending";isc.A.sortFieldDescendingText="Sort Descending";isc.A.clearSortFieldText="Clear Sort";isc.A.clearAllSortingText="Clear All Sorting";isc.A.clearFilterText="Clear Filter";isc.A.configureSortText="Configure Sort";isc.A.autoFitFieldText="Auto Fit";isc.A.autoFitAllText="Auto Fit All Columns";isc.A.fieldVisibilitySubmenuTitle="Columns";isc.A.freezeFieldText="Freeze ${title}";isc.A.unfreezeFieldText="Unfreeze ${title}";isc.A.groupByText="Group by ${title}";isc.A.ungroupText="Ungroup";isc.A.headerContextMenuConstructor="Menu";isc.A.headerContextMenuDefaults={hide:function(){this.Super("hide",arguments);if(this.grid){this.grid.$92m=false;if(this.grid.headerMenuButton&&this.grid.headerMenuButton.isVisible()){this.grid.headerMenuButton.hide()}}},doSort:function(_1,_2){if(_2=="unsort")this.grid.toggleSort(this.grid.getFieldName(_1),_2);else this.grid.sort(_1,_2)},canHover:true,showHover:true,cellHoverHTML:function(_1,_2,_3){return _1.prompt},groupField:function(_1){var _2=this.grid;if((_1.targetField&&_1.targetField.groupingMode)||((!_2.groupByField)||!_2.groupByField.contains(_1.fieldName))){_2.groupBy(_1.fieldName)}},ungroup:function(){this.grid.ungroup()}};isc.A.$31g="sort";isc.A.canMultiSort=true;isc.A.sortNumeralStyle="sortNumeral";isc.A.$73y="setSort";isc.A.chartConstructor="FacetChart";isc.A.chartType="Column";isc.A.groupIdField="groupId";isc.A.groupParentIdField="groupParentId";isc.A.retainOpenStateOnRegroup=true;isc.A.groupIconPadding=5;isc.A.showGroupSummary=false;isc.A.groupSummaryStyle="gridSummaryCell";isc.A.$31h={canDragSelect:true,canDragSelectText:true,canDragRecordsOut:true,canReorderRecords:true,canAcceptDroppedRecords:true};isc.A.$45l={bodyBackgroundColor:"backgroundColor",bodyStyleName:"styleName",fixedRecordHeights:"fixedRowHeights",fixedFieldWidths:"fixedColumnWidths",alternateRecordStyles:"alternateRowStyles",alternateRecordFrequency:"alternateRowFrequency",showAllRecords:"showAllRows",canSelectText:"canDragSelectText"};isc.B.push(isc.A.initWidget=function isc_ListGrid_initWidget(){this.Super("initWidget",arguments);if(this.showRecordComponents){delete this.showRecordComponents;this.setShowRecordComponents(true)}
+if(this.fields==null&&this.defaultFields!=null){this.fields=isc.shallowClone(this.defaultFields)}else if(this.warnOnReusedFields&&this.fields!=null){if(this.fields.$696){this.logWarn("ListGrid initialized with this.fields attribute set to an array "+"which is already being displayed in another ListGrid instance. To reuse "+"standard field configuration across multiple ListGrids, use "+"listGrid.defaultFields rather than assigning directly to listGrid.fields.")}else{var _1;if(isc.isAn.Array(this.fields)){_1=this.fields.findIndex("$697",true)!=-1}else if(isc.isAn.Object(this.fields)){for(var _2 in this.fields){var _3=this.fields[_2];if(_3&&_3.$697){_1=true;break}}}
+if(_1){this.logWarn("ListGrid initialized with this.fields attribute set to an array "+"containing fields which are already being displayed in another ListGrid "+"instance. To reuse standard field configuration across multiple ListGrids, use "+"listGrid.defaultFields rather than assigning directly to listGrid.fields.")}}}
+if(this.canEditNew)this.listEndEditAction=this.rowEndEditAction="next";if(this.alwaysShowEditors){this.editByCell=false;this.selectionType="none";this.selectOnEdit=false;if(this.canGroup!=false){this.logInfo("grouping functionality is not supported when alwaysShowEditors is true."+" Explicitly disabling this.canGroup","inactiveEditorHTML");this.canGroup=false}
+if(this.modalEditing){this.logInfo("modalEditing is not supported when alwaysShowEditors is true."+" Explicitly setting this.modalEditing to fales","inactiveEditorHTML");this.modalEditing=false}
+this.editEvent="click";if(!this.isEditable()){this.logInfo("alwaysShowEditors has been set for this grid but canEdit is unset and "+"no fields are explicitly marked as editable. Defaulting this.canEdit to true. "+"Note that to avoid this override developers can explicitly specify canEdit "+"at the grid or field level","inactiveEditorHTML");this.canEdit=true}}
+if(this.canExpandRecords||(this.fixedRecordHeights==false&&this.virtualScrolling==null))
+{if(this.fixedRecordHeights)this.$82v=this.fixedRecordHeights;this.fixedRecordHeights=false;this.virtualScrolling=true}
+if(this.canAddFormulaFields&&isc.FormulaBuilder==null){this.logInfo("Required modules for adding formula fields not present - setting "+"canAddFormulaFields to false.");this.canAddFormulaFields=false}
+if(this.canAddSummaryFields&&isc.SummaryBuilder==null){this.logInfo("Required modules for adding summary fields not present - setting "+"canAddSummaryFields to false.");this.canAddSummaryFields=false}
+if(this.loadingMessage==null||this.loadingMessage==isc.emptyString)
+this.loadingMessage=" ";if(this.autoFitData!=null){this.$58o=this.overflow;this.setOverflow("visible")}
+if(this.canCollapseGroup==false)this.groupStartOpen="all";this.$765=this.sortDirection?"ascending":"descending";this.setData(this.data?null:this.getDefaultData());this.setSelectionAppearance(this.selectionAppearance,true);this.$31i()}
+,isc.A.getDefaultData=function isc_ListGrid_getDefaultData(){return[]}
+,isc.A.$31i=function isc_ListGrid__setUpDragProperties(){this.canDrag=!this.canDragSelectText&&(this.canDrag||this.canDragRecordsOut||this.canReorderRecords||this.canDragSelect);this.canDrop=(this.canDrop||this.canDragRecordsOut||this.canReorderRecords);this.canAcceptDrop=(this.canAcceptDrop||this.canAcceptDroppedRecords||this.canReorderRecords)}
+,isc.A.getEmptyMessage=function isc_ListGrid_getEmptyMessage(){if(isc.ResultSet&&isc.isA.ResultSet(this.data)&&!this.data.lengthIsKnown()){if(isc.Offline&&isc.Offline.isOffline()){return this.offlineMessage}
+return this.loadingDataMessage==null?" ":this.loadingDataMessage.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)})}
+if(this.isOffline()){return this.offlineMessage}
+return this.emptyMessage==null?" ":this.emptyMessage.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)})}
+,isc.A.isEmpty=function isc_ListGrid_isEmpty(){if(!this.data)return true;if(!this.fields||this.fields.length==0)return true;if(isc.ResultSet&&isc.isA.ResultSet(this.data)){if(this.data.isPaged()){if(!this.data.isEmpty())return false;var _1=this.getAllEditRows();if(_1&&_1.length>0){for(var i=0;i<_1.length;i++){if(_1[i]>=0)return false}}
+return true}else{if(this.data.lengthIsKnown())return this.getTotalRows()<=0;else return true}}else{return(this.getTotalRows()<=0)}}
+,isc.A.setData=function isc_ListGrid_setData(_1){if(this.data==_1)return;if(!this.preserveEditsOnSetData)this.discardAllEdits();this.clearLastHilite();if(this.data){this.$31j(this.data);if(this.data.$31k&&isc.isA.Function(this.data.destroy))
+this.data.destroy()}
+if(_1)this.data=_1;if(!this.data)return;this.$31m(this.data);this.regroup(true);this.calculateRecordSummaries(null,true);if(!this.selection||(this.data!=this.selection.data)){this.createSelectionModel()}
+if(this.preserveEditsOnSetData)this.$31n();var _2=isc.ResultSet&&isc.isA.ResultSet(this.data)&&!this.data.lengthIsKnown();if(!_2&&this.$686()&&!this.$30a){this.startEditing(null,null,true,null,true)}
+var _3=this.getSort();if(_3)this.setSort(_3);if(this.hilites!=null)this.applyHilites();if(isc.ResultSet&&isc.isA.ResultSet(this.data)&&this.body&&this.body.overflow=="visible")
+{this.body.showAllRows=false}
+if(this.summaryRow&&this.showGridSummary){this.summaryRow.$855()}
+this.$74a=0;if(!this.canExpandMultipleRecords&&this.$74b)
+delete this.$74b;if(this.$75p){this.setSelectedState(this.$75p);delete this.$75p}
+this.updateFieldWidthsForAutoFitValue("setData called.");this.$25a("setData")}
+,isc.A.getAutoFitExpandField=function isc_ListGrid_getAutoFitExpandField(){if(!this.autoFitFieldsFillViewport)return null;if(this.autoFitExpandField!=null){var _1=this.getField(this.autoFitExpandField);if(_1!=null&&this.fields&&this.fields.contains(_1)&&(!this.frozenFields||!this.frozenFields.contains(_1)))
+{return _1}}
+var _2=[],_3=[];if(this.fields){for(var i=0;i<this.fields.length;i++){var _1=this.fields[i];if(!_1.showValueIconOnly&&(_1.type=="text"||_1.type==null))
+{if(!this.$54d&&_1.frozen)continue;_2.add(_1);if(_2[i]!=null&&_2[i].length!=null){_3.add(_2[i])}}}}
+if(_3.length>0){_3.sortByProperty("length",Array.DESCENDING);if(_3.last().length>=this.autoFitExpandLengthThreshold||_3.length==_2.length)
+{return _3[0]}}
+if(_2.length>0){var i=0;_1=_2[i]
+while(_1!=null&&_1.length!=null&&_1.length<this.autoFitExpandLengthThreshold)
+{i++;_1=_2[i]}
+return _1}
+return null}
+,isc.A.updateFieldWidthsForAutoFitValue=function isc_ListGrid_updateFieldWidthsForAutoFitValue(_1){if(!this.body||this.body.$773){return}
+var _2=this.fields||[];for(var i=0;i<_2.length;i++){var _4=this.shouldAutoFitField(_2[i]);if(!_4)continue;var _5=this.getAutoFitWidthApproach(_2[i]);if(_5=="value"||_5=="both"){this.fields.$775=false;this.body.$773="Updating field widths for field auto-fit"+(_1?(":"+_1):".");break}}}
+,isc.A.invalidateCache=function isc_ListGrid_invalidateCache(){if(this.getCheckboxFieldPosition()!=-1){this.deselectAllRecords();this.$63m(false)}
+if(this.body&&this.body.$74k)delete this.body.$74k;return this.Super("invalidateCache",arguments)}
+,isc.A.$66c=function isc_ListGrid__canSort(_1){if(!isc.isAn.Object(_1)){_1=this.getSpecifiedField(_1)}
+if(_1==null)return false;var _2=(_1.canSort==false)?false:this.canSort==false?false:true;_2=_2&&this.$91k(_1);return _2}
+,isc.A.$91k=function isc_ListGrid__canSortData(_1){var _2=isc.isAn.Object(_1)?_1:this.getSpecifiedField(_1);if(_2==null)return false;if(isc.isAn.Array(this.data))return true;if(_2.canSortClientOnly==true){if(isc.isA.ResultSet(this.data)){if(!this.data.lengthIsKnown()||!this.data.canSortOnClient()){return false}}}
+return true}
+,isc.A.$91d=function isc_ListGrid__canMultiSort(){var _1=(this.canMultiSort!=false)&&this.canSort&&this.$91l();return _1}
+,isc.A.$91l=function isc_ListGrid__canMultiSortData(){var _1=this.canMultiSort;if(!this.data.setSort){_1=false}else if(this.getDataSource()&&_1!=false){_1=this.getDataSource().canMultiSort&&this.canSort}
+return _1}
+,isc.A.$766=function isc_ListGrid__getFieldSortDirection(_1){var _2;var _3=_1?_1.sortDirection:null;if(_3!=null){_2=Array.shouldSortAscending(_3)?"ascending":"descending"}else if(this.sortDirection!=null){_2=Array.shouldSortAscending(this.sortDirection)?"ascending":"descending"}else{_2=Array.shouldSortAscending(this.$765)?"ascending":"descending"}
+return _2}
+,isc.A.createSelectionModel=function isc_ListGrid_createSelectionModel(){this.invokeSuper(isc.ListGrid,"createSelectionModel",arguments);if(isc.isA.Canvas(this.body)){this.body.setSelection(this.selection);if(this.frozenBody)this.frozenBody.setSelection(this.selection)}}
+,isc.A.destroySelectionModel=function isc_ListGrid_destroySelectionModel(){if(this.body)this.body.clearSelection();if(this.frozenBody)this.frozenBody.clearSelection();return this.Super("destroySelectionModel",arguments)}
+,isc.A.setSelectionType=function isc_ListGrid_setSelectionType(_1,_2){this.selectionType=_1;if(this.body)this.body.selectionType=_1}
+,isc.A.setSelectionAppearance=function isc_ListGrid_setSelectionAppearance(_1,_2){if(this.selectionAppearance==_1&&!_2)return;this.selectionAppearance=_1;if(_2&&this.selectionType==null){this.selectionType=(_1=="checkbox"?isc.Selection.SIMPLE:isc.Selection.MULTIPLE)}
+if(this.completeFields!=null){var _3=[];for(var i=0;i<this.completeFields.length;i++){var _5=this.completeFields[i];if(this.isCheckboxField(_5))continue;_3.add(_5)}
+this.setFields(_3)}}
+,isc.A.setBodyOverflow=function isc_ListGrid_setBodyOverflow(_1){this.bodyOverflow=_1;if(this.body)this.body.setOverflow(this.bodyOverflow)}
+,isc.A.setBodyStyleName=function isc_ListGrid_setBodyStyleName(_1){this.bodyStyleName=_1;if(this.body&&(!this.alternateBodyStyleName||!this.alternateRecordStyles)){this.body.setStyleName(_1)}}
+,isc.A.setAlternateBodyStyleName=function isc_ListGrid_setAlternateBodyStyleName(_1){this.alternateBodyStyleName=_1;if(this.body&&this.alternateRecordStyles){this.body.setStyleName(_1||this.bodyStyleName)}}
+,isc.A.setAlternateRecordStyles=function isc_ListGrid_setAlternateRecordStyles(_1){if(this.alternateRecordStyles==_1)return;this.alternateRecordStyles=_1;if(this.body&&(this.alternateBodyStyleName!=null)){if(_1)this.body.setStyleName(this.alternateBodyStyleName);else this.body.setStyleName(this.bodyStyleName)}}
+,isc.A.hasInherentHeight=function isc_ListGrid_hasInherentHeight(_1,_2,_3,_4){if(this.inherentHeight!=null)return this.inherentHeight;if(this.autoFitData==isc.Canvas.VERTICAL||this.autoFitData==isc.Canvas.BOTH){return true}
+return this.invokeSuper(isc.ListGrid,"hasInherentHeight",_1,_2,_3,_4)}
+,isc.A.hasInherentWidth=function isc_ListGrid_hasInherentWidth(_1,_2,_3,_4){if(this.inherentWidth!=null)return this.inherentWidth;if(this.autoFitData==isc.Canvas.HORIZONTAL||this.autoFitData==isc.Canvas.BOTH){return true}
+return this.invokeSuper(isc.ListGrid,"hasInherentWidth",_1,_2,_3,_4)}
+,isc.A.setAutoFitData=function isc_ListGrid_setAutoFitData(_1){this.autoFitData=_1;if(this.$60v&&(_1=="both"||_1=="horizontal"||_1=="vertical")){delete this.$60v;delete this.canFreezeFields}
+if(_1==null&&this.$58o){this.setOverflow(this.$58o)}else if(this.overflow!="visible"){this.$58o=this.overflow;this.setOverflow("visible")}
+if(this.body){this.body.autoFitData=this.autoFitData;this.body.adjustOverflow()}}
+,isc.A.setAutoFitExtraRecords=function isc_ListGrid_setAutoFitExtraRecords(_1){this.autoFitExtraRecords=_1;if(this.body){this.body.autoFitExtraRecords=_1;this.body.adjustOverflow()}}
+,isc.A.setAutoFitMaxRecords=function isc_ListGrid_setAutoFitMaxRecords(_1){this.autoFitMaxRecords=_1;if(this.body){this.body.autoFitMaxRecords=_1;this.body.adjustOverflow()}}
+,isc.A.setAutoFitMaxHeight=function isc_ListGrid_setAutoFitMaxHeight(_1){this.autoFitMaxHeight=_1;if(this.body){this.body.adjustOverflow()}}
+,isc.A.getAutoFitMaxBodyHeight=function isc_ListGrid_getAutoFitMaxBodyHeight(){if(this.autoFitMaxHeight==null)return null;var _1=this.getVBorderPad();if(this.showHeader)_1+=this.headerHeight;if(this.showFilterEditor)_1+=this.filterEditorHeight;return this.autoFitMaxHeight-_1}
+,isc.A.getAutoFitMinBodyHeight=function isc_ListGrid_getAutoFitMinBodyHeight(){var _1=this.getHeight(),_2=this.getVBorderPad();if(this.showHeader)_2+=this.headerHeight;if(this.showFilterEditor)_2+=this.filterEditorHeight;return(_1-_2)}
+,isc.A.setAutoFitMaxColumns=function isc_ListGrid_setAutoFitMaxColumns(_1){this.autoFitMaxColumns=_1;if(this.body){this.body.autoFitMaxColumns=_1;this.body.adjustOverflow()}}
+,isc.A.setAutoFitMaxWidth=function isc_ListGrid_setAutoFitMaxWidth(_1){this.autoFitMaxWidth=_1;if(this.body){this.body.autoFitMaxWidth=_1;this.body.adjustOverflow()}}
+,isc.A.autoFitField=function isc_ListGrid_autoFitField(_1,_2){var _3=this.getField(_1),_4=this.getFieldNum(_3);if(_3==null||_4==-1)return;var _5=this.getFieldAutoFitWidth(_3);if(_5==null||_5==this.$26a[_4])return;var _6=this.shouldAutoFitField(_3);this.resizeField(_1,_5,!_6);if(_6)_3.$776=this.$26a[_4];if(_2)this.scrollColumnIntoView(_4,false);return _5}
+,isc.A.autoFitFields=function isc_ListGrid_autoFitFields(_1){if(_1==null)_1=this.fields;for(var i=0;i<_1.length;i++){this.autoFitField(_1[i])}}
+,isc.A.shouldAutoFitField=function isc_ListGrid_shouldAutoFitField(_1){if(_1.autoFitWidth!=null)return _1.autoFitWidth;return this.autoFitFieldWidths}
+,isc.A.getFieldAutoFitWidth=function isc_ListGrid_getFieldAutoFitWidth(_1,_2){if(this.body==null)return;var _3=this.getAutoFitWidthApproach(_1),_4=_3!="value",_5=_3!="title",_6,_7,_8;var _9=this.getColNum(_1);if(_4){var _10=this.getFieldHeaderButton(_9);if(_10!=null){var _11=_10.getWidth(),_12=_10.getOverflow();_10.setWidth(_2||this.minFieldWidth||1);_10.setOverflow("visible");if(_10.label&&_10.label.isDirty())_10.label.redraw();_10.parentElement.reflow();_6=_10.getVisibleWidth();_10.setWidth(_11);_8=_6}}
+if(_5){var _13=this.getAutoFitValueWidths([this.fields[_9]]),_7=_13?_13[_9]:null;if(_7!=null&&(_8==null||_8<_7))_8=_7}
+if(_8!=null){if(_2==null||_2<this.minFieldWidth)_2=this.minFieldWidth;if(_2!=null&&_8<_2)_8=_2}
+return _8}
+,isc.A.setAutoFitWidth=function isc_ListGrid_setAutoFitWidth(_1,_2){var _3=this.getField(_1);if(_3==null)return;if(_3.autoFitWidth==_2)return;_3.autoFitWidth=_2;if(_2)this.autoFitField(_3)}
+,isc.A.setAutoFitFieldWidths=function isc_ListGrid_setAutoFitFieldWidths(_1,_2){if(_1==this.autoFitFieldWidths)return;this.autoFitFieldWidths=_1
+if(_1){this.$45m("autoFitFieldWidths enabled")}else if(!_2){if(this.showHeader&&this.headerHeight>0)this.updateHeader();this.fields.$775=false;this.$45m("autoFitFieldWidths disabled")}}
+,isc.A.setAutoFitWidthApproach=function isc_ListGrid_setAutoFitWidthApproach(_1){if(this.autoFitWidthApproach==_1)return;this.autoFitWidthApproach=_1;if(this.showHeader&&this.headerHeight>0)this.updateHeader();this.fields.$775=false;this.$45m("autoFitFieldWidthApproach changed")}
+,isc.A.$25a=function isc_ListGrid__markBodyForRedraw(_1){if(this.bodies){this.bodies.map("markForRedraw",_1)}else{this.markForRedraw(_1)}}
+,isc.A.redraw=function isc_ListGrid_redraw(_1,_2,_3,_4){if(this.body){if(this.body.$30e){this.$45m("scrollbar change during animation");delete this.body.$30e}}
+this.invokeSuper(isc.ListGrid,"redraw",_1,_2,_3,_4)}
+,isc.A.$31m=function isc_ListGrid__observeData(_1){if(!this.isObserving(_1,"dataChanged")){this.observe(_1,"dataChanged","observer.dataChanged("+(isc.ResultSet&&isc.isA.ResultSet(_1)?"arguments[0],arguments[1],arguments[2],arguments[3],arguments[4])":")"))}
+if(!this.isObserving(_1,"dataArrived")){if(isc.ResultSet&&isc.isA.ResultSet(_1)){this.observe(_1,"dataArrived","observer.$66d(arguments[0],arguments[1])")}else if(isc.ResultTree&&isc.isA.ResultTree(_1)){this.observe(_1,"dataArrived","observer.$66d(arguments[0])")}}
+if(isc.isA.Tree(_1)){this.observe(_1,"changeDataVisibility","observer.$34u(node, newState)")}}
+,isc.A.groupTreeChanged=function isc_ListGrid_groupTreeChanged(){if(this.$67i)return;if(!this.$31o&&!this.suppressEditRowRemap)this.$31n();var _1=this.getTotalRows()-1;if(this.body){if(this.body.lastOverRow>_1)delete this.body.lastOverRow;if(this.body.lastMouseOverRow>_1)delete this.body.lastMouseOverRow;if(this.body.$31p>_1)delete this.body.$31p}
+if(this.$31q>_1)delete this.$31q;if(this.hilites)this.applyHilites();if(!this.$50w)this.$25a(this.$81l)}
+,isc.A.$606=function isc_ListGrid__observeGroupData(_1){this.observe(_1,"dataChanged","observer.groupTreeChanged()");this.observe(_1,"changeDataVisibility","observer.$34u(node,newState)")}
+,isc.A.$34u=function isc_ListGrid__folderToggleObservation(_1,_2){if(_1!=null&&this.hilites&&_2&&this.data.getLoadState(_1)==isc.Tree.LOADED){this.applyHilites(true)}
+if(this.$34v){this.$31n();return}
+if(this.body)this.body.finishRowAnimation();this.$31n();this.$25a('folderToggled')}
+,isc.A.toggleFolder=function isc_ListGrid_toggleFolder(_1){if(this.data.isOpen(_1)){this.closeFolder(_1)}else{this.openFolder(_1);if(this.frozenBody)this.frozenBody.markForRedraw()}}
+,isc.A.openFolder=function isc_ListGrid_openFolder(_1){if(this.folderOpened!=null){this.convertToMethod("folderOpened");if(this.folderOpened(_1)==false)return false}
+if(this.animateFolders){this.animateOpen(_1)}else{this.data.openFolder(_1)}}
+,isc.A.animateOpen=function isc_ListGrid_animateOpen(_1){var _2=this.data;if(_2.isOpen(_1))return;this.$34v=true;_2.openFolder(_1);delete this.$34v;var _3=_2.getParent(_1);if(_3&&!_2.isOpen(_3))return;if(_2.getLoadState(_1)!=isc.Tree.LOADED){this.$34z=_1;return}
+this.$340(_1)}
+,isc.A.closeFolder=function isc_ListGrid_closeFolder(_1){if(this.folderClosed!=null){this.convertToMethod("folderClosed");if(this.folderClosed(_1)==false)return false}
+if(this.getEditRow()!=null){var _2=this.getRecord(this.getEditRow());if(this.data.isDescendantOf(_2,_1))this.endEditing()}
+if(this.shouldAnimateFolder(_1))
+this.animateClose(_1);else
+this.data.closeFolder(_1)}
+,isc.A.animateClose=function isc_ListGrid_animateClose(_1){if(!this.data.isOpen(_1))return;var _2=this.data.getParent(_1);if(_2&&!this.data.isOpen(_2)){return this.closeFolder(_1)}
+var _3=this.data,_4=_3.indexOf(_1),_5=_3.getOpenList(_1).getLength()-1;this.startRowAnimation(false,_4+1,_4+_5+1,{target:this,methodName:"redraw"},this.animateFolderSpeed,this.animateFolderTime,this.animateFolderEffect,true);this.$34v=true;this.data.closeFolder(_1);delete this.$34v
+if(this.body&&this.body.$279!=null){this.body.$34y=_1}}
+,isc.A.$340=function isc_ListGrid__startFolderAnimation(_1){if(!this.shouldAnimateFolder(_1)){this.markForRedraw();return}
+var _2=this.data,_3=_2.indexOf(_1),_4=_2.getOpenList(_1).getLength()-1;if(_3<0||_4<=0)return;this.startRowAnimation(true,_3+1,(_3+_4+1),{target:(this.bodyLayout||this.body),methodName:"redraw"},this.animateFolderSpeed,this.animateFolderTime,this.animateFolderEffect,true)}
+,isc.A.$45q=function isc_ListGrid__addNodeToOpenState(_1,_2,_3,_4){if(!_1.isOpen(_2)||!_1.isLoaded(_2))return false;var _5=_1.getFolders(_2),_6=false;if(_5!=null){for(var i=0;i<_5.length;i++){_6=this.$45q(_1,_5[i],_3,_4)||_6}}
+if(_4){var _8={};_8[_2.groupName]=_2.groupValue;_3.add(_8)}else{_3[_3.length]=_1.getPath(_2)}
+return true}
+,isc.A.dataChanged=function isc_ListGrid_dataChanged(_1,_2,_3,_4,_5){if(isc.$cv)arguments.$cw=this;this.$67i=true;var _6=_5||_1=="add"||_1=="remove";if(!_6&&_1=="replace"){if(_2==null||_3==null)_6=true;else{var _7=_11.get(_3);if(_7==null)_6=true;else{for(var i=0;i<this.fields.length;i++){if(this.shouldAutoFitField(this.fields[i])){var _9=this.getFieldName(this.fields[i]);if(_7[_9]!=_4[_9]){_6=true;break}}}}}}
+this.calculateRecordSummaries(null,false);var _10=this.getGroupByFields();if(_10!=null&&!this.$52y){if(_1=="add"||_1=="remove"||_1=="replace"||(_1=="update"&&(_2==null||_3==null)))
+{this.$52y=true}else if(_1=="update"){var _11=this.data;if(this.data.isGroupedOutput&&this.originalData)_11=this.originalData;var _7=_11.get(_3);if(_7==null)this.$52y=true;if(!this.$52y){var _12=(this.dataSource!=null?this.getDataSource().getPrimaryKeyFieldNames():[]);for(var i=0;i<_12.length;i++){if(_2[_12[i]]!=_7[_12[i]]){this.$52y=true;break}}}
+if(!this.$52y)for(var i=0;i<_10.length;i++){var _13,_9=_10[i];if(_2[_9]!==_13&&!this.fieldValuesAreEqual(_9,_2[_9],_7[_9])){this.$52y=true;break}}
+if(!this.$52y){var _14=this.getDataSource().getPrimaryKeyFieldNames()[0];var _15=this.data.find(_14,_7[_14]);isc.addProperties(_15,_7)}}}
+if(this.$52y&&!this.$31o&&(!isc.isA.ResultSet(this.data)||this.data.lengthIsKnown()))
+{this.$52y=false;this.$75p=this.getSelectedState(true);this.regroup();if(this.$75p){this.setSelectedState(this.$75p);delete this.$75p}}
+if(this.body)this.body.finishRowAnimation();if(!this.$31o&&!this.suppressEditRowRemap)this.$31n();this.$74c();if(this.$686()&&!this.$30a){this.startEditing(null,null,true,null,true)}
+var _16=this.getTotalRows()-1;if(this.body){if(this.body.lastOverRow>_16)delete this.body.lastOverRow;if(this.body.lastMouseOverRow>_16)delete this.body.lastMouseOverRow;if(this.body.$31p>_16)delete this.body.$31p}
+if(this.$31q>_16)delete this.$31q;if(this.hilites)this.applyHilites();if(!this.$50w){if(_6)this.updateFieldWidthsForAutoFitValue(this.$81l);this.$25a(this.$81l);if(this.summaryRow&&this.showGridSummary)this.summaryRow.$855()}
+if(this.$75p&&(!isc.isA.ResultSet(this.data)||this.data.lengthIsKnown()))
+{this.setSelectedState(this.$75p);delete this.$75p}
+delete this.$67i}
+,isc.A.$66d=function isc_ListGrid__dataArrived(_1,_2){var _3=this.$60z();if(_3!=null&&_3!=-1){var _4=this.getFieldNum(_3),_5=this.getField(_4);if(_5&&_5.canSortClientOnly&&!this.$91k(_5)){this.$600(null);if(_3!=null&&this.header&&isc.isA.Toolbar(this.header)){this.header.deselectButton(_3);var _6=this.header.getButton(_3);if(_6)_6.setTitle(this.getHeaderButtonTitle(_6))}
+if(this.sorter)this.sorter.setTitle(this.sorter.getTitle())}}
+if(this.getCurrentCheckboxField()){var _7=this.getCheckboxFieldPosition(),_5=this.getField(_7),_8=this.checkboxFieldFalseImage||this.booleanFalseImage;if(isc.ResultSet&&isc.isA.ResultSet(this.data)&&!this.data.allMatchingRowsCached())
+{var _9={disabled:true,showHover:true,prompt:this.selection.selectionRangeNotLoadedMessage,title:this.canSelectAll==false?" ":this.getValueIconHTML(_8.replace(".","_Disabled."),_5)}
+this.setFieldProperties(_7,_9)}else{var _9={disabled:false,showHover:false,prompt:null,title:this.canSelectAll==false?" ":this.getValueIconHTML(_8,_5)}
+this.setFieldProperties(_7,_9)}}
+if(isc.screenReader&&this.body!=null){if(isc.isA.Tree(this.data)){var _10=_1;if(this.data.isOpen(_10)&&this.data.hasChildren(_10)){var _11=this.data.getChildren(_10);if(_11&&_11.length>0)_10=_11[0]}
+var _12=this.data.indexOf(_10);this.body.$86a(_12,!this.hasFocus)}}
+this.dataArrived(_1,_2)}
+,isc.A.dataArrived=function isc_ListGrid_dataArrived(_1,_2){}
+,isc.A.$31j=function isc_ListGrid__ignoreData(_1){if(this.body)this.body.finishRowAnimation();if(isc.isA.Tree(this.data))this.ignore(_1,"changeDataVisibility");this.ignore(_1,"dataChanged");if(this.isObserving(_1,"dataArrived")){this.ignore(_1,"dataArrived")}
+if(this.selection)this.selection.deselectAll()}
+,isc.A.applyFieldDefaults=function isc_ListGrid_applyFieldDefaults(_1){if(_1==null)return;for(var i=0;i<_1.length;i++){var _3=_1[i];if(_3==null)continue;if(!this.allowNamelessFields&&_3[this.fieldIdProperty]==null){if(_3.dataPath==null){this.logWarn("unable to process field with no name / dataPath:"+this.echo(_3));continue}
+_3[this.fieldIdProperty]="field"+this.$70q++}
+var _4=this.isRTL()?isc.Canvas.RIGHT:isc.Canvas.LEFT;var _5=this.getFieldDisplayType(_3);var _6=(_5!=null?isc.SimpleType.getBaseType(_5):null);if(isc.SimpleType.inheritsFrom(_5,"image")){_3.$31r=this.$30s}else if(_6==this.$gx){if(_3.width==null&&_3.length!=null){if(_3.length<15&&!_3.valueMap){_3.width=_3.length*7}}}else if(_6=="integer"||_6=="float"){_4=isc.Canvas.RIGHT
+_3.$31r=this.$30n}else if(_6=="date"){var _7=(this.canEdit==true&&_3.canEdit!=false)||(this.canEdit!=false&&_3.canEdit==true);_3.width=_3.width||(_7?100:80);_4=isc.Canvas.RIGHT;_3.$31r=this.$30m}else if(_6=="time"){_3.width=_3.width||80;_3.$31r=this.$30p;_4=isc.Canvas.RIGHT}else if(_5=="binary"||_5=="blob"||_5=="upload"||_5=="imageFile"){_3.$31r=this.$30q}else if(_5=="link"){_3.$31r=this.$30r}else if(_5=="icon"){if(_3.width==null&&_3.autoFitWidth==null){if(this.autoFitIconFields!="none"){_3.autoFitWidth=true;_3.autoFitWidthApproach=(this.autoFitIconFields=="title")?"both":"value"}}
+if(_3.width==null&&_3.autoFitWidth==null){if(this.autoFitIconFields!="none"){_3.autoFitWidth=true;_3.autoFitWidthApproach=(this.autoFitIconFields=="title")?"both":"value";_3.width=this.getDefaultFieldWidth(_3)}}
+_3.align=_3.align||"center";_3.$31r=this.$59e;_3.title=_3.title||" "}else if(_5=="boolean"||_5=="checkbox"){if(_3.canToggle==null)_3.canToggle=true}
+if(_3.formatCellValue!=null&&!isc.isA.Function(_3.formatCellValue))
+isc.Func.replaceWithMethod(_3,"formatCellValue","value,record,rowNum,colNum,grid");if(this.showValueIconOnly(_3)){_4=isc.Canvas.CENTER;if(_3.width==null&&_3.autoFitWidth==null){if(this.autoFitIconFields!="none"){_3.autoFitWidth=true;_3.autoFitWidthApproach=(this.autoFitIconFields=="title")?"both":"value";_3.width=this.getDefaultFieldWidth(_3)}}}
+if(!_3.align)_3.align=_4;if(_3.multiple&&_3.validateEachItem==null)_3.validateEachItem=true}}
+,isc.A.getDisplayField=function isc_ListGrid_getDisplayField(_1){var _2=_1.displayField;if(_2!=null){var _3=_1.optionDataSource?isc.DataSource.get(_1.optionDataSource):null;if(_3!=null)_2=_3.getField(_2);else{_2=this.getField(_2);if(_2==null&&this.dataSource!=null){_2=this.getDataSource().getField(_1.displayField)}}}
+return _2}
+,isc.A.getFieldDisplayType=function isc_ListGrid_getFieldDisplayType(_1){var _2=this.getDisplayField(_1),_3;if(_2!=null)_3=_2.type;if(_3==null)_3=_1.type;return _3}
+,isc.A.$31s=function isc_ListGrid__formatBooleanFieldAsImages(_1){if(this.booleanTrueImage==null&&this.booleanFalseImage==null)return false;var _2=this.getFieldDisplayType(_1),_3=(_2!=null?isc.SimpleType.getBaseType(_2):null);if(_3!=this.$g2)return false;return(!_1.suppressValueIcon&&_1.showValueIconOnly==null&&_1.valueIcons==null&&_1.formatCellValue==null)}
+,isc.A.setFieldProperties=function isc_ListGrid_setFieldProperties(_1,_2){var _3,_4=this.getAllFields();var _5=_1;if(isc.isA.Number(_1)){_3=this.getField(_1)}else{var _6=isc.Class.getArrayItemIndex(_1,_4,this.fieldIdProperty);_3=_4[_6];_1=this.getFieldNum(_3)}
+if(!_3)return;isc.addProperties(_3,_2);if(this.header!=null&&this.header.isDrawn()){var _7=this.getFieldHeader(_1),_8=_7.getMember(this.getLocalFieldNum(_1));if(_8)_8.setProperties(_2)}}
+,isc.A.setFieldTitle=function isc_ListGrid_setFieldTitle(_1,_2){this.setFieldProperties(_1,{title:_2})}
+,isc.A.setFieldIcon=function isc_ListGrid_setFieldIcon(_1,_2){var _3=this.getField(_1);this.setFieldProperties(_1,{icon:_2});if(_3&&_3.type=="icon"&&_3.cellIcon==null){delete _3.$59f
+this.body.markForRedraw("Field icon changed")}}
+,isc.A.setFieldCellIcon=function isc_ListGrid_setFieldCellIcon(_1,_2){this.setFieldProperties(_1,{cellIcon:_2});var _3=this.getField(_1);if(_3&&_3.type=="icon"){delete _3.$59f
+this.body.markForRedraw("Field cell icon changed")}}
+,isc.A.setAutoComplete=function isc_ListGrid_setAutoComplete(_1){this.autoComplete=_1}
+,isc.A.setFieldAutoComplete=function isc_ListGrid_setFieldAutoComplete(_1,_2){_1=this.getField(_1);if(_1)_1.autoComplete=_2}
+,isc.A.showFields=function isc_ListGrid_showFields(_1,_2){return this.showField(_1,_2)}
+,isc.A.showField=function isc_ListGrid_showField(_1,_2){arguments.$cw=this;if(!isc.isAn.Array(_1)){_1=[_1]}
+var _3=true,_4=true;var _5=this.completeFields!=null,_6=(!_5||this.frozenFields||this.$54d);for(var i=0;i<_1.length;i++){var _8=_1[i],_9=_8;_9=this.getSpecifiedField(_9);if(_9==null){_1[i]=null;this.logWarn("showField(): unable to find field object for field: "+_8+". Taking no action. Call setFields() to add new fields.")
+continue}
+_3=false;if(_9.showIf!=null)_9.showIf=null;if(_9.frozen)_6=true;if(this.spanMap&&this.spanMap[_9.name]!=null)_6=true;if(_6)continue;if(this.fields.contains(_9)){_1[i]=null;continue}
+_4=false;_1[i]=_9}
+if(_6){this.setFields(this.completeFields||this.fields);this.handleFieldStateChanged();return}
+if(_3||_4)return;this.deriveVisibleFields();_1.removeEmpty();var _10=[],_11=0;for(var i=0;i<this.fields.length;i++){var _12=_1.indexOf(this.fields[i]);if(_12!=-1){_10[_12]=i;_11++;if(_11==_1.length)break}}
+var _13=this.header;if(_13!=null){if(!_2)this.header.hPolicy="fill";this.header.addButtons(_1.duplicate(),_10)}
+if(this.body){if(this.$30a){var _14=this.getEditRow(),_15=this.getRecord(_14),_16=this.getEditedRecord(_14),_17=false,_18=this.getEditForm().items,_19=_18.length-1,_20=_18[_19],_21=_20.colNum;_10.sort();for(var i=_10.length-1;i>=0;i--){var _22=i+1,_23=_10[i],_24=(_23-i);if(!_17&&this.$30u>=_23){this.$30u+=_22}
+var _9=this.fields[_23],_25=this.getEditFormItemFieldWidths(_15)[_23],_26;while(_20!=null&&_21>=_24){_20.colNum+=_22;_19--;_20=(_19>=0)?_18[_19]:null;_21=(_20!=null)?_20.colNum:null}
+var _27=this.body.getDrawArea();if(!this.editByCell&&_23>=_27[2]&&_23<=_27[3]){_26=this.getEditItem(_9,_15,_16,_14,_23,_25)}
+if(_26!=null){this.$286.addItems([_26],_19+1)}}}
+this.body.fields=this.normalFields||this.fields;this.setBodyFieldWidths(this.getFieldWidths());this.$75n(this.body);if(this.body.isDrawn())this.body.redraw("show field")}
+if(this.sortField!=null){this.sortFieldNum=null;this.sortFieldNum=this.$60z()}
+if(this.filterEditor!=null)this.filterEditor.showField(_1,_2);this.recalculateSummaries();if(this.summaryRow!=null&&this.showGridSummary){this.summaryRow.showField(_1,_2)}
+this.markForRedraw("showField");this.handleFieldStateChanged()}
+);isc.evalBoundary;isc.B.push(isc.A.hideFields=function isc_ListGrid_hideFields(_1,_2){return this.hideField(_1,_2)}
+,isc.A.hideField=function isc_ListGrid_hideField(_1,_2){arguments.$cw=this;var _3=true,_4=true;if(!isc.isAn.Array(_1)){_1=[_1]}
+var _5=[];var _6=(this.completeFields==null||this.frozenFields);var _7=this.$30a,_8=_7?this.getEditRow():null,_9=_7?this.getEditCol():null,_10=false;for(var i=0;i<_1.length;i++){var _12=_1[i],_13=_12;_13=this.getSpecifiedField(_13);if(_13==null){this.logWarn("hideField(): unable to find field object for field: "+_12+". Taking no action. To add this field use the setFields() method.");_1[i]=null;continue}
+_3=false;_13.showIf=this.$18r;if(!this.fields.contains(_13)){_1[i]=null;continue}
+_4=false;if(_6)continue;var _14=this.fields.indexOf(_13),_15=this.getFieldName(_14);_5.add(_14);if(_7){if(_9==_14)_10=true;var _16=this.getEditFormItem(_15);if(_16&&_16.hasFocus)_16.blurItem();this.clearEditValue(_8,_14,true)}}
+if(_3||_4)return;if(_6){this.setFields(this.completeFields||this.fields);this.handleFieldStateChanged();return}
+_1.removeEmpty();if(_7){if(_10){if(this.editByCell){this.cancelEditing(isc.ListGrid.PROGRAMMATIC);_7=false}else{var _17=_9-1,_18=false;while(_17>=0){if(!_5.contains(_17)&&this.canEditCell(_8,_17)&&this.$60w(_8,_17))
+{_18=true;break}
+_17--}
+if(!_18){_17=_9+1;while(_17<this.fields.length){if(!_5.contains(_17)&&this.canEditCell(_8,_17)&&this.$60w(_8,_17))
+{_18=true;break}
+_17++}}
+if(!_18){this.cancelEditing(isc.ListGrid.PROGRAMMATIC);_7=false}else{this.$31u(_8,_17,!this.getEditForm().hasFocus)}}}}
+this.deriveVisibleFields();var _19=this.header;if(_19!=null){if(!_2)this.header.hPolicy="fill";var _20=[];for(var i=0;i<_5.length;i++){var _14=_5[i];var _21=this.header.getButton(_14);_20[_20.length]=_21;if(this.headerMenuButton&&this.headerMenuButton.masterElement==_21){this.headerMenuButton.depeer()}}
+this.header.removeButtons(_20.duplicate());_20.map("destroy")}
+var _22=[];if(_7){_5.sort();var _23=this.$286,_24=_23.getItems(),_25=_24.length-1,_26=_24[_25],_27=_26.colNum,_28=false;for(var i=_5.length-1;i>=0;i--){var _29=i+1,_30=_5[i];if(!_28&&this.$30u>_30){this.$30u-=_29;_28=true}
+while(_26!=null&&_27>=_30){if(_27==_30)_22.add(_26);else _26.colNum-=_29;_25--;_26=(_25>=0)?_24[_25]:null;_27=(_26!=null)?_26.colNum:null}}}
+if(this.body){this.body.fields=this.normalFields||this.fields;this.setBodyFieldWidths(this.getFieldWidths());this.$75n(this.body);if(this.body.isDrawn())this.body.redraw("hide field")}
+if(_7&&_22.length>0){for(var i=0;i<_22.length;i++){var _26=_22[i];this.$286.removeItems([_26])}}
+if(this.sortField!=null){this.sortFieldNum=null;this.sortFieldNum=this.$60z()}
+if(this.filterEditor!=null)this.filterEditor.hideField(_1,_2);if(this.summaryRow&&this.showGridSummary){this.summaryRow.$855();this.summaryRow.hideField(_1,_2)}
+this.$74c();this.handleFieldStateChanged()}
+,isc.A.fieldIsVisible=function isc_ListGrid_fieldIsVisible(_1){var _2=_1;if(!isc.isAn.Object(_2))_2=this.getSpecifiedField(_1);return this.fields.contains(_2)}
+,isc.A.showActionInPanel=function isc_ListGrid_showActionInPanel(_1){if(_1.name=="editNew")return true;return this.Super("showActionInPanel",arguments)}
+,isc.A.setFields=function isc_ListGrid_setFields(_1){if(isc.$cv)arguments.$cw=this;if(_1!=null&&this.fields!=null&&this.fields!=_1&&this.completeFields!=_1)
+{delete this.fields.$775}
+if(!_1&&this.getDataSource()&&!this.getDataSource().hasFields()){this.logWarn("ListGrid.setFields() : neither this ListGrid nor its dataSource have fields")}
+if(!this.booleanFalseImage&&!this.booleanTrueImage&&!this.booleanPartialImage){this.booleanTrueImage=isc.CheckboxItem?isc.CheckboxItem.getInstanceProperty("checkedImage"):null;this.booleanFalseImage=isc.CheckboxItem?isc.CheckboxItem.getInstanceProperty("uncheckedImage"):null;this.booleanPartialImage=isc.CheckboxItem?isc.CheckboxItem.getInstanceProperty("partialSelectedImage"):null;this.booleanImageWidth=isc.CheckboxItem?isc.CheckboxItem.getInstanceProperty("valueIconWidth"):null;this.booleanImageHeight=isc.CheckboxItem?isc.CheckboxItem.getInstanceProperty("valueIconHeight"):null}
+var _2=this.$60z(),_3=(_2!=null&&this.fields?this.fields[_2]:null);var _4=this.$30a,_5=this.getEditRow(),_6=this.getEditCol(),_7=this.$286,_8=this.fields?this.getEditFieldName():null;if(this.completeFields==null)this.fields=[];this.completeFields=this.bindToDataSource(_1,this.canPickOmittedFields);if(this.completeFields==null)this.completeFields=[];if(this.shouldShowRowNumberField()){var _9=this.getCurrentRowNumberField(),_10=this.getRowNumberFieldPosition(),_11=!_9;if(_11&&_1&&_1.find(this.fieldIdProperty,"$74y")!=null)
+{_11=false}
+if(_11)_9=this.getRowNumberField();if(_11)this.completeFields.addAt(_9,_10);else this.completeFields.slideList([_9],_10)}else{var _9=this.getCurrentRowNumberField();if(_9)this.completeFields.remove(_9)}
+if(this.shouldShowExpansionField()){var _12=this.getCurrentExpansionField(),_13=this.getExpansionFieldPosition(),_11=!_12;if(_11)_12=this.getExpansionField();if(_11)this.completeFields.addAt(_12,_13);else this.completeFields.slideList([_12],_13)}else{var _12=this.getCurrentExpansionField();if(_12)this.completeFields.remove(_12)}
+if(this.shouldShowCheckboxField()){var _14=this.getCurrentCheckboxField(),_15=this.getCheckboxFieldPosition(),_11=!_14;if(_11&&_1&&_1.find(this.fieldIdProperty,"_checkboxField")){_11=false}
+if(_11)_14=this.getCheckboxField();if(_15>this.completeFields.length)_15=this.completeFields.length;if(_11)this.completeFields.addAt(_14,_15);else this.completeFields.slideList([_14],_15)}else{var _14=this.getCurrentCheckboxField();if(_14)this.completeFields.remove(_14)}
+if(this.shouldShowRemoveField()){var _16=this.completeFields.findIndex("isRemoveField",true),_17=(_16>=0)?this.completeFields[_16]:{excludeFromState:true,isRemoveField:true};if(_16==-1&&_1){_16=_1.findIndex("isRemoveField",true)}
+if(!_17.$61a){isc.addProperties(_17,this.removeFieldDefaults,this.removeFieldProperties);if(_17.name==null)_17.name="$61b";if(_17.title==null)_17.title=this.removeFieldTitle;if(_17.cellIcon==null&&_17.formatCellValue==null){_17.formatCellValue=function(_32,_33,_34,_35,_36){if(!this.removeIconHTML){this.removeIconHTML=isc.Canvas.imgHTML(_36.removeIcon,_36.removeIconSize);this.unremoveIconHTML=isc.Canvas.imgHTML(_36.unremoveIcon,_36.removeIconSize)}
+if(_36.recordMarkedAsRemoved(_34)){return this.unremoveIconHTML}else{return this.removeIconHTML}}}
+if(_16==-1){this.completeFields.add(_17)}
+_17.$61a=true}}
+if(isc.DataSource)this.$45n();if(this.fieldState!=null)this.setFieldState();this.applyFieldDefaults(this.completeFields);this.completeFields.$696=true;this.completeFields.setProperty("$697",true);this.deriveVisibleFields();if(this.fields.length==0&&this.completeFields.length>0){this.logWarn("All specified fields for this component are hidden. Note that fields "+"may be hidden via 'showIf' or 'detail' attribute values. "+"In order to display data this grid must have some visible fields.")}
+this.$26a=null;var _18,_19,_20;if(_4){this.storeUpdatedEditorValue();_18=this.fields.findIndex(this.fieldIdProperty,_8);if(_18!=-1&&!this.canEditCell(_5,_18))
+_18=-1;if(_18==-1){var _21;if(!this.editByCell)_21=this.findNextEditCell(_5,0,1,true,true,false,true);if(_21!=null&&_21[0]==_5){_18=_21[1]}
+if(_18==-1){this.cancelEditing(isc.ListGrid.PROGRAMMATIC);_4=false}}else{var _22=_7.getItem(_8);if(_22){_20=_22.hasFocus;if(_20)_7.$106()}
+_19=true}
+if(_4)this.hideInlineEditor(false,true)}
+var _23=(this.canFreezeFields==null||this.$60v)&&this.fixedRecordHeights!=false&&this.fixedFieldWidths!=false&&this.autoFitData!="horizontal"&&this.autoFitData!="both"&&this.bodyOverflow!="visible";if(_23){if(this.completeFields.getProperty("overflow").contains("visible"))_23=false}
+if(_23){this.$60v=true;this.canFreezeFields=true}else if(this.$60v){delete this.$60v;this.canFreezeFields=null}
+if(this.canSelectCells)this.selection.numCols=this.fields.length;if(_3){var _24=this.fields.indexOf(_3);if(_24==-1)_24=null;this.$600(_24)}
+if(this.showHeader&&this.headerHeight>0&&this.header!=null){this.updateHeader();if(this.body!=null){this.syncHeaderScrolling(this.body.getScrollLeft())}}
+this.updateBody();if(this.filterEditor){this.filterEditor.updateDataSource(this.getDataSource());var _25=this.completeFields||[];this.filterEditor.setFields(_25.duplicate())}
+this.layoutChildren(this.$604);if(this.$52b!=null){var _26={};for(var i in this.$52b){if(this.$52b[i]==null)continue;var _28=this.$52b[i].$31x,_29=(this.dataSource!=null?this.getDataSource().getPrimaryKeyFieldNames():[]);for(var _30 in _28){if(!this.fields.containsProperty(this.fieldIdProperty,_30)&&!_29.contains(_30)){_26[_30]=true;this.clearEditValue(_28,_30,true)}}}
+_26=isc.getKeys(_26);if(_26.length>0){this.logInfo("'setFields()' removed the following fields which had pending edit "+"values for some row[s]: '"+_26.join("', '")+"'.\n"+"Edit values for these fields have been dropped.","gridEdit")}}
+if(_4){if(_19){this.showInlineEditor(_5,_18,false,false,true);if(_20)_7.$11b(_31)}else{this.$31u(_5,_18,!_20)}
+if(_20){var _31=this.getEditFieldName();if(_31==_8){_7.$11b(_31)}else{_7.focusInItem(_31)}}}
+var _2=this.$60z();if(_2!=null&&this.$91k(_2))this.resort();if(this.summaryRow&&this.showGridSummary){this.summaryRow.setFields(this.completeFields.duplicate());this.summaryRow.$855()}
+if(!this.$92q)this.defaultFieldState=this.getFieldState()}
+,isc.A.addField=function isc_ListGrid_addField(_1,_2){return this.Super("addField",[_1,_2,this.completeFields],arguments)}
+,isc.A.removeField=function isc_ListGrid_removeField(_1){return this.Super("removeField",[_1,this.completeFields],arguments)}
+,isc.A.shouldShowCheckboxField=function isc_ListGrid_shouldShowCheckboxField(){if(this.fieldSourceGrid)return this.fieldSourceGrid.shouldShowCheckboxField();return(this.selectionAppearance==this.$12c&&this.selectionType!=this.$27r&&!isc.isA.TreeGrid(this))}
+,isc.A.focusInFilterEditor=function isc_ListGrid_focusInFilterEditor(_1){if(this.filterEditor==null)return;var _2=_1!=null?this.getColNum(_1):null;this.filterEditor.startEditing(0,_2)}
+,isc.A.filterByEditor=function isc_ListGrid_filterByEditor(){if(this.filterEditor!=null)this.filterEditor.performAction()}
+,isc.A.bindToDataSource=function isc_ListGrid_bindToDataSource(_1,_2,_3,_4,_5,_6){var _7=false;var _8=this.invokeSuper(isc.ListGrid,"bindToDataSource",_1,_2,_3,_4,_5,_6);if(this.showDetailFields&&_8!=null){for(var i=0;i<_8.length;i++){var _10=_8[i];if(_10.showIf==null&&_10.detail==true){_10.showIf=this.$18r}
+if(isc.isA.Number(parseInt(_10.name))&&parseInt(_10.name).toString()==_10.name)
+{_7=true}
+_10.$81f=true}}
+this.$81g=!_7;return _8}
+,isc.A.setFieldState=function isc_ListGrid_setFieldState(_1){if(this.completeFields==null)this.setFields(this.fields);if(_1==null&&this.fieldState!=null){if(isc.isA.String(this.fieldState)){_1=this.evalViewState(this.fieldState,"fieldState")}else{_1=this.fieldState}
+this.completeFields=this.$31y(_1);this.fieldState=null;return}
+_1=this.evalViewState(_1,"fieldState")
+if(_1){this.completeFields=this.$31y(_1);this.refreshFields()}}
+,isc.A.handleFieldStateChanged=function isc_ListGrid_handleFieldStateChanged(){this.fieldStateChanged();this.handleViewStateChanged()}
+,isc.A.getCheckboxField=function isc_ListGrid_getCheckboxField(){var _1=this,_2={width:this.$63g+this.$65a(),getAutoFreezePosition:function(){return _1.getCheckboxFieldPosition()}};isc.addProperties(_2,this.checkboxFieldDefaults,this.checkboxFieldProperties);var _3=this.checkboxFieldFalseImage||this.booleanFalseImage;_2.title=(this.canSelectAll==false||this.selectionType=="single"?" ":this.getValueIconHTML(_3,_2));return _2}
+,isc.A.getCurrentCheckboxField=function isc_ListGrid_getCurrentCheckboxField(){var _1=this.completeFields||this.fields;if(!_1)return null;var _2=_1.find(this.fieldIdProperty,"_checkboxField");return!_2?null:isc.isAn.Array(_2)?_2[0]:_2}
+,isc.A.$65a=function isc_ListGrid__getCheckboxFieldImageWidth(){return this.checkboxFieldImageWidth||this.booleanImageWidth||(isc.CheckboxItem?isc.CheckboxItem.getInstanceProperty("valueIconWidth"):null)}
+,isc.A.$65b=function isc_ListGrid__getCheckboxFieldImageHeight(){return this.checkboxFieldImageHeight||this.booleanImageHeight||(isc.CheckboxItem?isc.CheckboxItem.getInstanceProperty("valueIconWidth"):null)}
+,isc.A.isCheckboxField=function isc_ListGrid_isCheckboxField(_1){if(!_1||!_1.$63f)return false;else return true}
+,isc.A.getCheckboxFieldPosition=function isc_ListGrid_getCheckboxFieldPosition(){if(this.fieldSourceGrid)return this.fieldSourceGrid.getCheckboxFieldPosition();if(this.selectionAppearance!="checkbox"||isc.isA.TreeGrid(this))return-1;var _1=0;if(this.showRowNumbers)_1+=1;if(this.showingGroupTitleColumn())_1+=1;if(this.canExpandRecords)_1+=1;return _1}
+,isc.A.getSelectedState=function isc_ListGrid_getSelectedState(_1){if(!this.selection)return null;if(!this.dataSource||isc.isAn.emptyObject(this.getDataSource().getPrimaryKeyFields()))
+{if(!_1){this.logWarn("can't getSelectedState without a DataSource "+"with a primary key field set")}
+return null}
+var _2=this.selection.getSelection()||[],_3=[];for(var i=0;i<_2.length;i++){_3[i]=this.getPrimaryKeys(_2[i])}
+return isc.Comm.serialize(_3,false)}
+,isc.A.setSelectedState=function isc_ListGrid_setSelectedState(_1){_1=this.evalViewState(_1,"selectedState")
+if(!_1){if(this.selection)this.selection.deselectAll();return}
+var _2=this.selection,_3=this.originalData||this.data;if(isc.ResultSet&&isc.isA.ResultSet(_3)&&!_3.lengthIsKnown())return;if(_3&&_2){_2.deselectAll();var _4=[];for(var i=0;i<_1.length;i++){var _6=_1[i];var _7=_3.findByKeys(_1[i],this.getDataSource());if(_7!=-1)_4.add(_3.get(_7))}
+this.selection.selectList(_4)}}
+,isc.A.getSortState=function isc_ListGrid_getSortState(){if(this.logIsInfoEnabled("sorting")){this.logInfo("\n"+"grid.sortFieldNum is: "+this.sortFieldNum+"\n"+"grid.sortField is: "+this.sortField+"\n"+"grid.getField(grid.sortFieldNum) is:\n"+isc.echoAll(this.getField(this.sortFieldNum))+"\n"+"-----------------------------------------\n"+"grid.$60z() is: "+this.$60z()+"\n"+"grid.getField(grid.$60z()) is:\n"+isc.echoAll(this.getField(this.$60z()))+"\n"+"","sorting")}
+var _1=this.$60z(),_2=(_1!=null?this.getField(_1):null),_3=_2!=null?this.getFieldName(_2):null,_4=this.$766(_2),_5={fieldName:_3,sortDir:_4};if(this.$73p&&this.$73p.length>0){var _6=isc.shallowClone(this.$73p);_6.clearProperty("primarySort");_6.clearProperty("sortIndex");_6.clearProperty("normalizer");_6.clearProperty("context");_5.sortSpecifiers=_6}
+return"("+isc.Comm.serialize(_5,false)+")"}
+,isc.A.setSortState=function isc_ListGrid_setSortState(_1){_1=this.evalViewState(_1,"sortState")
+if(!_1){this.clearSort();return}
+if(_1.sortSpecifiers){this.setSort(isc.shallowClone(_1.sortSpecifiers))}else if(_1.fieldName==null){this.clearSort()}else{var _2=this.getFieldNum(_1.fieldName)
+if(_2!=-1)this.sort(_2,_1.sortDir)}}
+,isc.A.getViewState=function isc_ListGrid_getViewState(_1){var _2={selected:this.getSelectedState(true),field:this.getFieldState(),sort:this.getSortState(),hilite:this.getHiliteState(),group:this.getGroupState()};if(_1)return _2;return"("+isc.Comm.serialize(_2,false)+")"}
+,isc.A.getGroupState=function isc_ListGrid_getGroupState(){var _1=this.getGroupByFields();if(_1==null)_1="";else _1=_1.join(",");return _1}
+,isc.A.setGroupState=function isc_ListGrid_setGroupState(_1){if(_1)this.groupBy(_1.split(","))
+else this.ungroup()}
+,isc.A.setViewState=function isc_ListGrid_setViewState(_1){_1=this.evalViewState(_1,"viewState")
+if(!_1)return;if(_1.field)this.setFieldState(_1.field);this.setSortState(_1.sort);this.setGroupState(_1.group);this.setHiliteState(_1.hilite);this.setSelectedState(_1.selected)}
+,isc.A.handleViewStateChanged=function isc_ListGrid_handleViewStateChanged(){this.fireOnPause("viewStateChangeNotification",{target:this,methodName:"viewStateChanged"},0)}
+,isc.A.getViewStateChangedFunction=function isc_ListGrid_getViewStateChangedFunction(){if(this.$84i==null){var _1=this;this.$84i=function(){if(_1.destroyed)return;_1.viewStateChanged()}}
+return this.$84i}
+,isc.A.viewStateChanged=function isc_ListGrid_viewStateChanged(){}
+,isc.A.setDataSource=function isc_ListGrid_setDataSource(_1,_2){var _3=this.getDataSource();if(_3!=null&&_3!=_1&&_3.ID!=_1){var _4=this.getGroupByFields();if(_4!=null&&_4.length>0&&_4[0]!=null&&this.originalData!=null)
+{this.ungroup()}}
+this.Super("setDataSource",arguments);this.clearFilterValues();this.discardAllEdits()}
+,isc.A.deriveVisibleFields=function isc_ListGrid_deriveVisibleFields(){this.fields.setArray(this.getVisibleFields(this.completeFields));this.deriveFrozenFields();this.refreshMasterIndex()}
+,isc.A.refreshFields=function isc_ListGrid_refreshFields(){this.$92q=true;this.setFields(this.completeFields);delete this.$92q}
+,isc.A.getFieldWidths=function isc_ListGrid_getFieldWidths(_1){var _2=this.$78q();if(this.autoFitFieldWidths&&!this.$813){this.$813=true;var _3=_2.duplicate(),_4=null;if(this.frozenFields!=null){var _5=this.freezeLeft;if(_5){_4=_3.slice(0,this.frozenFields.length);_3=_3.slice(this.frozenFields.length)}else{_4=_3.slice(this.frozenFields.length);_3=_3.slice(0,this.frozenFields.length)}}
+var _6=this.getAvailableFieldWidth(true),_7=_3.sum();var _8=_6;if(_4!=null)_8-=_4.sum();var _9=true;if(this.autoFitWidthApproach!="title"){var _10=this.getDrawArea();if(!this.data||Array.isLoading(this.data.get(_10[0]))){_9=false}}
+if(_7<_8&&_9){var _11=this.getAutoFitExpandField();if(_11){var _12=this.getFieldNum(_11);var _13=_8-_7;_2[_12]+=_13;var _14=this.getFieldHeaderButton(_12);if(_14&&_14.isDrawn()){_14.setWidth(_2[_12])}}}else if(_7>_8&&this.autoFitClipFields!=null){var _15;if(this.header&&this.header.isDrawn()){_15=this.header.hPolicy;this.header.hPolicy="fill"}
+var _16=this.autoFitClipFields;for(var i=0;i<_16.length;i++){var _18=this.getField(_16[i]),_19=this.getFieldNum(_18);if(_18==null||_19<0)continue;if(!this.$54d&&_18.frozen){this.logInfo("auto-fitting field:"+_18.name+" is present in the autoFitClipFields array for this grid, but is"+" currently frozen. This is not supported - the field will not be clipped.","frozenFields");continue}
+delete _18.$776;var _20=this.getFieldHeader(_19);if(_20&&_20.isDrawn()){_14=_20.getMember(this.getLocalFieldNum(_19));_14.setWidth(_18.width||"*");_14.setOverflow("hidden")}}
+if(this.header&&this.header.isDrawn()){var _21=this.$812;if(_1!=null)_21+=_1;this.header.reflowNow(_21);this.header.hPolicy=_15;if(this.frozenHeader){this.frozenHeader.hPolicy="fill";this.frozenHeader.reflowNow(_21);this.frozenHeader.hPolicy=_15}}
+_2=this.$78q()}
+this.$813=false}
+return _2}
+,isc.A.$78q=function isc_ListGrid__getCalculatedFieldWidths(){var _1=this.header;if(isc.isA.Layout(_1)&&_1.isDrawn()){var _2=_1.members;for(var i=0;i<_2.length;i++){if(_2[i].isDirty())_2[i].redraw();if(_2[i].label!=null&&_2[i].label.isDirty())_2[i].label.redraw()}
+var _4=_1.getMemberSizes();if(_4.length>0){if(this.allowMismatchedHeaderBodyBorder){var _5=_1.getLeftBorderSize()+_1.getLeftMargin(),_6=_1.getRightBorderSize()+_1.getRightMargin();if(_5!=0){_4[0]+=_5}}
+var _7=_4.sum(),_8=_1.getInnerWidth();if(this.allowMismatchedHeaderBodyBorder){var _9=_7-_8;if(_9>0){_4[_4.length-1]+=Math.min(_9,_6)}}}
+if(this.frozenFields){var _10=this.frozenHeader.getMemberSizes();_4.addListAt(_10,this.freezeLeft()?0:_4.length)}}else{var _4=this.getStretchResizeWidths()}
+return _4}
+,isc.A.getStretchResizeWidths=function isc_ListGrid_getStretchResizeWidths(){if(this.fields==null)return[];var _1=this.fields.getProperty("width"),_2=this.fields.getProperty("$776");for(var i=0;i<_1.length;i++){if(_2[i]!=null)_1[i]=_2[i]}
+return isc.Canvas.applyStretchResizePolicy(_1,(this.innerWidth!=null?this.innerWidth:this.getAvailableFieldWidth()),this.minFieldSize)}
+,isc.A.getAvailableFieldWidth=function isc_ListGrid_getAvailableFieldWidth(_1){if(_1==null){_1=this.autoFitData!="both"&&this.autoFitData!="horizontal"}
+var _2=(!_1?this.getVisibleWidth():this.getWidth())-this.getHMarginBorderPad();var _3=this.$54u();if(_3){_2-=this.body?this.body.getScrollbarSize():this.getScrollbarSize()}
+return _2}
+,isc.A.getFieldWidth=function isc_ListGrid_getFieldWidth(_1){_1=this.getFieldNum(_1);if(_1==-1||!this.fields||_1>=this.fields.length)return null;if(this.body!=null)return this.getColumnWidth(_1);return this.getFieldWidths()[_1]}
+,isc.A.$310=function isc_ListGrid__adjustFieldSizesForBodyStyling(_1,_2){if(_2==null)_2=false;if(_1==null||_1.length==0)return _1;if(!this.body){return _1}
+_1[_1.length-1]=this.$311(_1[_1.length-1],_1.sum(),_2);_1[0]=this.$312(_1[0],_2);return _1}
+,isc.A.$312=function isc_ListGrid__adjustFirstFieldForBodyStyling(_1,_2){if(!this.body)return _1;var _3=(_2?this.body.getTopBorderSize()+this.body.getTopMargin():this.body.getLeftBorderSize()+this.body.getLeftMargin());if(_3!=0)_1-=_3;return Math.max(0,_1)}
+,isc.A.$311=function isc_ListGrid__adjustLastFieldForBodyStyling(_1,_2,_3){if(!this.body)return _1;var _4=(_3?this.body.getBottomBorderSize()+this.body.getBottomMargin():this.body.getRightBorderSize()+this.body.getRightMargin());if(_4!=0){var _5=_2-
+(_3?this.body.getInnerHeight():this.body.getInnerWidth());if(_5>0){_1-=Math.min(_5,_4)}}
+return Math.max(_1,1)}
+,isc.A.setBodyFieldWidths=function isc_ListGrid_setBodyFieldWidths(_1){this.$26a=_1;var _2=_1;if(this.allowMismatchedHeaderBodyBorder){if(isc.isAn.Array(_1)){_1=this.$310(_1.duplicate())}}
+var _3=this.frozenFields;if(_3){var _4=this.getFrozenSlots(_1);_1=this.getUnfrozenSlots(_1);this.frozenBody.setColumnWidths(_4);var _5=_4.sum();this.frozenBody.setWidth(_5);this.frozenBody.$pn=_5;if(this.frozenHeader)this.frozenHeader.setWidth(_5)}
+if(this.body!=null)this.body.setColumnWidths(_1);if(this.$30a){var _6=this.$286.getItems(),_7=this.getRecord(this.getEditRow()),_8=this.getEditFormItemFieldWidths(_7);for(var i=0;i<_6.length;i++){var _10=_6[i].colNum;if(_6[i].width!=_8[_10])
+_6[i].setWidth(_8[_10])}}}
+,isc.A.getGridMembers=function isc_ListGrid_getGridMembers(){var _1=this.gridComponents,_2=[],_3;for(var i=0;i<_1.length;i++){var _5=_1[i],_6=null;if(isc.isA.Canvas(_5)){_6=_5}else if(isc.isA.String(_5)){if(!this.shouldShowGridComponent(_5))continue;switch(_5){case"filterEditor":if(this.filterEditor==null)this.makeFilterEditor();_6=this.filterEditor;break;case"header":if(this.header==null){this.makeHeader()}
+_6=this.headerLayout||this.header;break;case"body":_3=true;if(this.body==null){this.createBodies()}
+_6=this.bodyLayout||this.body;break;case"summaryRow":_6=this.getSummaryRow();break}}
+if(_5!=null&&_6==null){_6=this.createCanvas(_5)}
+_2.add(_6)}
+if(!_3){this.logWarn("ListGrid specified with gridComponents:"+_1+". This does not include a \"body\" entry. ListGrids with no body are unsupported,"+" displaying the body as the last member in the grid.");_2[_2.length]=this.createBodies()}
+return _2}
+,isc.A.shouldShowGridComponent=function isc_ListGrid_shouldShowGridComponent(_1){if(_1==this.$880)return true;if(_1==this.$881&&this.headerHeight==0){return false}
+var _2=this.showComponentPropertyMap[_1];if(_2==null){this.showComponentPropertyMap[_1]=_2="show"+_1.substring(0,1).toUpperCase+_1.substring(1)}
+return this[_2]}
+,isc.A.createChildren=function isc_ListGrid_createChildren(){this.updateGridComponents();if(isc.Browser.isMoz&&isc.Browser.geckoVersion>=20051111){if(this.header){this.body.mozOutlineOffset="0px";if(this.body.mozOutlineColor==null)
+this.body.mozOutlineColor=this.mozBodyOutlineColor}else{if(this.body.mozOutlineColor==null)
+this.body.mozOutlineColor=this.mozBodyNoHeaderOutlineColor;this.body.mozOutlineOffset="-1px"}}
+this._useNativeTabIndex=false}
+,isc.A.updateGridComponents=function isc_ListGrid_updateGridComponents(){this.setMembers(this.getGridMembers())}
+,isc.A.layoutChildren=function isc_ListGrid_layoutChildren(_1,_2,_3){if(this.body!=null){this.$45m(_1,_2,_3)}
+isc.VLayout.$b4.layoutChildren.call(this,_1,_2,_3);if(this.body!=null){if(this.frozenBody){var _4=this.shrinkForFreeze&&this.body.hscrollOn;var _5=this.bodyLayout.getInnerHeight();if(_4)_5-=this.body.getScrollbarSize();this.frozenBody.setHeight(_5);if(this.frozenBody.$276())this.frozenBody.markForRedraw("height changed");this.frozenBody.$po=_5}}}
+,isc.A.$45m=function isc_ListGrid__updateFieldWidths(_1,_2,_3){if(this.body==null)return;if(this.$92r)return;this.$92r=true;this.$26a=null;if(this.fields&&!this.fields.$775&&!this.skipAutoFitWidths){var _4=this.getAutoFitValueWidths(null,true);if(_4==null){this.fields.setProperty("$776",null)}else{for(var i=0;i<this.fields.length;i++){var _6=this.fields[i];if(_4[i]==null){_6.$776=null;continue}
+var _7=_6.width;if(!isc.isA.Number(_7))_7=this.minFieldWidth;if(!isc.isA.Number(_7))_7=1;if(_7<_4[i]){_6.$776=_4[i];var _8=this.getFieldHeaderButton(i);if(_8!=null){_8.setWidth(_4[i]);_8.parentElement.reflow()}}else if(_6.$776!=null){_6.$776=null;var _8=this.getFieldHeaderButton(i);if(_8!=null){_8.setWidth(_7);_8.parentElement.reflow()}}}
+this.fields.$775=true}}
+var _9=this.getAvailableFieldWidth(true),_10=(_9!=this.innerWidth);this.innerWidth=_9;var _11=this.header,_12=(this.showHeader?this.headerHeight:0);if(_11!=null){var _13=(this.isRTL()&&this.$54u()?this.body.getScrollbarSize():0);_11.hPolicy="fill";if(this.frozenHeader)this.frozenHeader.hPolicy="fill";var _14=this.innerWidth,_15;if(this.autoFitData=="horizontal"||this.autoFitData=="both"){_15=this.getFieldWidths(_1+" [sizing horizontal auto-fit header]");_14=Math.max(_14,_15.sum())}
+if(!this.leaveScrollbarGap&&_11.isDrawn()&&_14!=_11.getWidth()&&_1=="body scroll changed"){if(this.$54e||!this.resizeFieldsForScrollbar){_11.hPolicy="none"}}
+var _16=this.headerLayout||_11;_16.resizeTo(_14,_12);var _17=(_1=="initial draw");if(!_11.isDrawn()&&(_17||this.isDrawn())){if(!this.frozenFields){if(_17)this.$20(_11);_11.draw()}else{if(_15==null){_15=this.getFieldWidths(_1+" [sizing frozen fields]")}
+var _18=this.getFrozenSlots(_15);this.frozenHeader.setWidth(_18.sum());if(_17)this.$20(this.headerLayout);this.headerLayout.draw()}}
+if(_11.isDrawn())_11.hPolicy="none";if(this.frozenHeader&&this.frozenHeader.isDrawn())this.frozenHeader.hPolicy="none";if(this.sorter){this.updateSorter()}}
+if((!this.$26a||_10)&&((_11&&_11.isDrawn())||_12==0))
+{var _15=this.getFieldWidths(_1);this.setBodyFieldWidths(_15);if(this.filterEditor&&this.filterEditor.body!=null){this.filterEditor.setBodyFieldWidths(_15.duplicate())}
+if(this.summaryRow&&this.showGridSummary&&this.summaryRow.body!=null){this.summaryRow.setBodyFieldWidths(_15.duplicate())}
+if(this.logIsDebugEnabled("layout")){this.logDebug("new field widths: "+this.$26a,"layout")}}
+if((this.autoFitData=="horizontal"||this.autoFitData=="both")&&this.filterEditor){this.filterEditor.setWidth(this.body.getVisibleWidth())}
+this.$92r=false}
+,isc.A.getAutoFitValueWidths=function isc_ListGrid_getAutoFitValueWidths(_1,_2){if(this.data==null)return;if(isc.isA.ResultSet(this.data)){var _3=this.body.getDrawArea();if(!this.data.rangeIsLoaded(_3[0],_3[1])){if(_1==null){this.updateFieldWidthsForAutoFitValue("Delayed resize pending data load")}
+return}}
+var _4=(_1==null);if(_1==null){_1=[];for(var i=0;i<this.fields.length;i++){var _6=this.fields[i];if(this.shouldAutoFitField(_6)){if(!_2||this.getAutoFitWidthApproach(_6)!="title"){_1.add(_6);_4=false}}}}
+if(_4)return;var _7=[],_8=[];for(var i=0;i<_1.length;i++){var _6=_1[i],_9=this.getFieldNum(_6);if(!this.$54d&&_6.frozen){_7.add(_9)}else{_8.add(_9)}}
+var _10=[];for(var i=0;i<this.fields.length;i++){if(_1.contains(this.fields[i])){_10[i]=this.getDefaultFieldWidth(this.fields[i])}}
+return _10}
+,isc.A.getDefaultFieldWidth=function isc_ListGrid_getDefaultFieldWidth(_1){if(_1.type=="icon"){return(_1.iconWidth||_1.iconSize)+2*this.cellPadding+2*this.iconPadding}else if(this.showValueIconOnly(_1)){return this.getValueIconWidth(_1)+(2*this.cellPadding)+this.getValueIconRightPadding(_1)+this.getValueIconLeftPadding(_1)}
+var _2=this.getLocalFieldNum(this.getFieldNum(_1));var _3;if(!this.$54d&&_1.frozen){_3=this.frozenBody.getColumnAutoSize(_2)}else{_3=this.body.getColumnAutoSize(_2)}
+if(_3==null)_3=_1.width;return _3}
+,isc.A.getAutoFitWidthApproach=function isc_ListGrid_getAutoFitWidthApproach(_1){if(_1.autoFitWidthApproach!=null)return _1.autoFitWidthApproach;return this.autoFitWidthApproach}
+,isc.A.draw=function isc_ListGrid_draw(_1,_2,_3,_4){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return this;this.prepareForDraw();this.invokeSuper(isc.ListGrid,"draw",_1,_2,_3,_4);this.body.getColumnSizes();for(var i=0;i<this.bodies.length;i++){var _6=this.bodies[i];if(_6.$29a)this.markForRedraw()}
+var _7=this.$60z();if(this.header&&_7!=null){var _8=this.getFieldHeader(_7),_9=this.getFieldHeaderButton(_7);_8.selectButton(_9)}
+this.bodyScrolled();if(this.sorter)this.updateSorter();return this}
+,isc.A.$686=function isc_ListGrid__alwaysShowEditors(_1,_2){if(!_2&&this.getTotalRows()==0)return false;if(this.alwaysShowEditors)return true;var _3=_1?[_1]:this.fields;if(_3){for(var i=0;i<_3.length;i++){if(_3[i].alwaysShowEditors){return true}}}
+return false}
+,isc.A.prepareForDraw=function isc_ListGrid_prepareForDraw(){if(this.completeFields==null)this.setFields(this.fields);if(this.getEditRow()==null){var _1=this.$686();if(_1)this.startEditing(null,null,true,null,true)}
+if(this.groupByField){var _2;if(isc.isA.Array(this.groupByField)){_2=this.groupByField}else{_2=[this.groupByField]}
+this.groupByField=null;this.groupBy(_2)}
+this.createChildren()}
+,isc.A.getGroupByFields=function isc_ListGrid_getGroupByFields(){var _1=this.groupByField;if(_1!=null&&!isc.isAn.Array(_1)){_1=[_1]}
+return _1}
+,isc.A.destroy=function isc_ListGrid_destroy(_1){if(this._dragLine){this._dragLine.destroy();this._dragLine=null}
+if(this.$314)this.$314.destroy();if(this.$58q)this.$58q.destroy();if(this.cellContextMenu)this.cellContextMenu.destroy();if(this.$286){this.$286.destroy();delete this.$286;delete this.$30a}
+if(this.data){if(this.data.$31k&&isc.isA.Function(this.data.destroy)){this.data.destroy()}else{this.$31j(this.data);delete this.data}}
+if(this.selection){this.destroySelectionModel()}
+if(this.selectionCanvas)this.selectionCanvas.destroy();if(this.selectionUnderCanvas)this.selectionUnderCanvas.destroy();if(this.rollOverCanvas)this.rollOverCanvas.destroy();if(this.rollUnderCanvas)this.rollUnderCanvas.destroy();this.$67a();var _2=this.getRecordComponentPool();if(_2){for(var i=0;i<_2.length;i++){var _4=_2[i];if(_4&&_4.destroy&&!_4.destroyed){if(!_4.dontAutoDestroy)_4.destroy();else _4.deparent()}}}
+if(this.$89r!=null){for(var _5 in this.$89r){var _4=this.$89r[_5];if(!_4||_4.destroyed||_4.destroying||_4.$65i)
+{continue}
+if(!_4.dontAutoDestroy)_4.destroy();else _4.deparent()}}
+this.Super("destroy",arguments)}
+,isc.A.redrawHeader=function isc_ListGrid_redrawHeader(){if(this.header)this.header.markForRedraw()}
+,isc.A.getBaseStyle=function isc_ListGrid_getBaseStyle(_1,_2,_3){if(this.canEdit==true&&!this.isPrinting){if(this.editFailedBaseStyle&&this.cellHasErrors(_2,_3))
+return this.editFailedBaseStyle;if(this.editPendingBaseStyle&&this.cellHasChanges(_2,_3,false))
+return this.editPendingBaseStyle}
+if(_1&&this.recordBaseStyleProperty&&_1[this.recordBaseStyleProperty])
+return _1[this.recordBaseStyleProperty];var _4=this.getField(_3);if(_4&&_4.baseStyle)return _4.baseStyle;if(_4&&_4.type=="summary"&&this.recordSummaryBaseStyle)
+return this.recordSummaryBaseStyle;if(_4&&_4.frozen&&!this.$54d&&this.frozenBaseStyle){return this.frozenBaseStyle}
+if(this.isPrinting&&(this.printBaseStyle!=null))return this.printBaseStyle;var _5=this.baseStyle;if(_5==null){if(this.cellHeight!=this.normalCellHeight||this.fastCellUpdates||!this.shouldFixRowHeight(_1,_2)||(_1!=null&&_1.$29a))
+{_5=this.tallBaseStyle}else{_5=this.normalBaseStyle}}
+return _5}
+,isc.A.getCellCSSText=function isc_ListGrid_getCellCSSText(_1,_2,_3){if(_1){var _4=_1[this.recordCSSTextProperty];if(_4!=null)return _4}
+var _4;if(this.recordMarkedAsRemoved(_1)&&this.removedCSSText){_4=this.removedCSSText}else{if(this.isEditable()){if(this.editFailedBaseStyle==null&&this.editFailedCSSText&&this.cellHasErrors(_2,_3))
+{_4=this.editFailedCSSText}else if(this.editPendingBaseStyle==null&&this.editPendingCSSText&&this.cellHasChanges(_2,_3,false))
+{_4=this.editPendingCSSText}}}
+_4=this.getRecordHiliteCSSText(_1,_4,this.getField(_3));return _4}
+,isc.A.getRawCellValue=function isc_ListGrid_getRawCellValue(_1,_2,_3,_4){var _5,_6,_7;if(_4){_6=_3
+_5=this.completeFields?isc.Class.getArrayItem(_6,this.completeFields,this.fieldIdProperty):this.getField(_6)}else{_5=this.fields[_3];_6=_5[this.fieldIdProperty]}
+_7=_5?_5.dataPath:null;if(_6==null&&_7==null)return this.emptyCellValue;var _8,_9,_10;if(this.rowEditNotComplete(_2)){_8=this.$30y(_2,_3)}
+if(_8!==_10){return _8}else{if(_1==null)return this.emptyCellValue;if(this.data.getFieldValue&&_5){_9=this.data.getFieldValue(_1,_6,_5)}else if(_1.ownerDocument&&_5){_9=isc.xml.getFieldValue(_1,_6,_5)}else{if(_7!=null){_9=isc.Canvas.$70o(this.$840(_7),_1,this,true)}else{_9=_1[_6]}}}
+if(this.shouldShowRecordSummary(_5,_1)&&!this.shouldApplyRecordSummaryToRecord(_5))
+{_9=this.getRecordSummary(_2,_5)}
+if(_5&&_5.getRawCellValue){isc.Func.replaceWithMethod(_5,"getRawCellValue","viewer,record,recordNum,field,fieldNum,value");_9=_5.getRawCellValue(this,_1,_2,_5,_3,_9)}
+if(_5){if(_5.userFormula)_9=this.getFormulaFieldValue(_5,_1);if(_5.userSummary)this.getSummaryFunction(_5)}
+return _9}
+,isc.A.$840=function isc_ListGrid__trimDataPath(_1){if(!_1)return _1;var _2=_1.trim(isc.Canvas.$70l);if(!_2.contains(isc.Canvas.$70l))return _1;var _3=this.getFullDataPath();if(_3==null||_3=="")return _2;_3=_3.trim(isc.Canvas.$70l);var _4=_3.split(isc.Canvas.$70l);var _5=_2.split(isc.Canvas.$70l);for(var i=0;i<_4.length;i++){if(_4[i]!=_5[i]){break}}
+if(i==0)return _1;var _7="";for(var j=i;j<_5.length;j++){_7+=_5[j];_7+="/"}
+return _7}
+,isc.A.shouldShowRecordSummary=function isc_ListGrid_shouldShowRecordSummary(_1,_2){if(_1&&_1.type==this.$71t){if(_2[this.groupSummaryRecordProperty]){return(_1.summaryFunction==null&&_1.getGroupSummary==null)}else if(_2[this.gridSummaryRecordProperty]){return(_1.summaryFunction==null&&_1.getGridSummary==null)}
+return true}
+return false}
+,isc.A.getCellValue=function isc_ListGrid_getCellValue(_1,_2,_3,_4){if(_4==null)_4=this.getFieldBody(_3);if(_1==null){if(this.showNewRecordRow&&this.$299(_2)){return this.getNewRecordRowCellValue()}
+_1=this.$300(_2,_3)}else{if(_1[this.isSeparatorProperty])return this.$302;if(_1.$52e){var _5=this.fields[_3],_6=this.getGroupTitleField(),_7;if(_6==null){_7=_5.$84g}else{_7=_5.name==_6}
+if(this.singleCellGroupHeaders()||_7){return this.getGroupNodeHTML(_1,_4)}else if(!this.showGroupSummaryInHeader){return" "}}}
+var _8=this.fields[_3],_9=null;if(_8==null)return"";if(this.$92s&&_8.summaryValue){return _8.summaryValue}
+if(this.isCheckboxField(_8)){var _10;if(!this.body.canSelectRecord(_1)){_10="[SKINIMG]/blank.gif"}else{var _11=this.selection.isSelected(_1)?true:false;_10=_11?(this.checkboxFieldTrueImage||this.booleanTrueImage):(this.checkboxFieldFalseImage||this.booleanFalseImage)}
+if(_1&&_1[this.recordEnabledProperty]==false){_10=_10.replace(".","_Disabled.")}
+var _12=this.getValueIconHTML(_10,_8);return _12}
+var _10,_13=this.showValueIconOnly(_8),_14;if(_1!=null){if(_1[this.singleCellValueProperty]!=null){return _1[this.singleCellValueProperty]}
+if(Array.isLoading(_1)){if(!isc.Browser.isSafari||_3==0){return this.loadingMessage}
+return" "}
+_14=(this.$30a&&this.$285==_2&&(!this.editByCell||this.$30u==_3)&&this.canEditCell(_2,_3));if(_14){if(_4&&_4.$92p){_9=this.getInactiveEditorCellValue(_1,_2,_3)}else{_9=this.getEditItemCellValue(_1,_2,_3)}}else if(this.$68z(_3)&&this.canEditCell(_2,_3)){_9=this.getInactiveEditorCellValue(_1,_2,_3);_14=true}else{var _8=this.fields[_3],_15,_16;if(_8.displayField!=null){_16=!_8.valueMap&&!_8.getCellValue&&this.$425(_8);if(_16){var _17=_8.displayField;_15=this.getRawCellValue(_1,_2,_17,true)}}
+_9=this.getRawCellValue(_1,_2,_3);if(_8.getCellValue){isc.Func.replaceWithMethod(_8,"getCellValue","viewer,record,recordNum,field,fieldNum,value");_9=_8.getCellValue(this,_1,_2,_8,_3,_9)}
+_10=this.getValueIcon(_8,_9,_1,_2);if(!_13){var _18=_8.valueMap;if(_18){if(isc.isA.String(_18))_18=this.getGlobalReference(_18);if(!isc.isAn.Array(_18)){if(isc.isAn.Array(_9)){var _19=[];for(var i=0;i<_9.length;i++){var _21=isc.getValueForKey(_9[i],_18,_9[i]);_19[_19.length]=_21}
+_9=_19}else{_9=isc.getValueForKey(_9,_18)}}}}
+if(_16)_9=_15}}
+if(!_14){if(_1&&((_1[this.groupSummaryRecordProperty]&&!this.shouldShowGroupSummary(_8))||(_1[this.gridSummaryRecordProperty]&&!this.shouldShowGridSummary(_8))))
+{_9=this.emptyCellValue}else{var _22=null;if(_10!=null){_22=this.getValueIconHTML(_10,_8)}
+if(_13){if(!_22||isc.isAn.emptyString(_22))_22=this.emptyCellValue;_9=_22}else{_9=this.$315(_9,_1,_8,_2,_3);var _23=this.getFieldHilites(_1,_8);if(_23)_9=this.applyHiliteHTML(_23,_9);if(_22){if(_8.valueIconOrientation!=isc.Canvas.RIGHT)
+_9=_22+_9;else
+_9=_9+_22}}
+if(this.isEditable()&&this.showErrorIcons&&this.cellHasErrors(_2,_3)){_9=this.getErrorIconHTML(_2,_3)+_9}}}
+var _24=this.isGrouped?this.getGroupTitleField():null;if(_24&&this.fields[_3].name==_24){var _25=isc.Canvas.spacerHTML(this.groupIndentSize+this.groupLeadingIndent,1);_9=_25+_9}
+return _9}
+);isc.evalBoundary;isc.B.push(isc.A.getTitleFieldValue=function isc_ListGrid_getTitleFieldValue(_1){var _2=this.getDataSource().getTitleField(),_3=this.getCellValue(_1,this.getRecordIndex(_1),this.getFieldNum(_2),this.body);if(!_3||_3==""){_3=this.getRawCellValue(_1,this.getRecordIndex(_1),_2,true)}
+return _3}
+,isc.A.getRawValue=function isc_ListGrid_getRawValue(_1,_2){var _3=this.getRecordIndex(_1),_4=this.getSpecifiedField(_2);if(_1[_4[this.fieldIdProperty]]!=null)return _1[_4[this.fieldIdProperty]];else return this.getRawCellValue(_1,_3,_2,true)}
+,isc.A.getFormattedValue=function isc_ListGrid_getFormattedValue(_1,_2,_3){var _4=this.getRecordIndex(_1),_5=this.getSpecifiedField(_2),_6=this.getFieldNum(_2);if(this.fieldIsVisible(_5)&&_3==null)
+return this.getCellValue(_1,_4,_6,this.body);if(_3==null)_3=this.getRawValue(_1,_2);var _7=_5?_5.valueMap:null;if(_7){if(isc.isA.String(_7))_7=this.getGlobalReference(_7);if(!isc.isAn.Array(_7)){if(isc.isAn.Array(_3)){var _8=[];for(var i=0;i<_3.length;i++){var _10=isc.getValueForKey(_3[i],_7,_3[i]);_8[_8.length]=_10}
+_3=_8}else{_3=isc.getValueForKey(_3,_7)}}}
+var _11=this.$315(_3,_1,_5,_4,_6);return _11}
+,isc.A.getSpecifiedFieldWidth=function isc_ListGrid_getSpecifiedFieldWidth(_1){_1=this.getField(_1);var _2=_1[this.fieldIdProperty],_3=this.header?this.header.members:null,_4=this.frozenFields&&this.frozenHeader?this.frozenHeader.members:null,_5;if(_3||_4){var _6;if(_3)_6=_3.find(this.fieldIdProperty,_2);if(!_6&&_4){_6=_4.find(this.fieldIdProperty,_2)}
+if(_6&&_6.$pn&&isc.isA.Number(_6.$pn)){_5=_6.$pn}}
+return _5}
+,isc.A.getValueIconHTML=function isc_ListGrid_getValueIconHTML(_1,_2){var _3=_2.imageURLPrefix||_2.baseURL||_2.imgDir,_4=_2.imageURLSuffix,_5=this.getValueIconWidth(_2),_6=this.getValueIconHeight(_2),_7=this.getValueIconLeftPadding(_2),_8=this.getValueIconRightPadding(_2);if(_4!=null)_1+=_4;var _9=isc.Canvas.$xq(_1,_3,_5,_6,_7,_8,null,this);return _9}
+,isc.A.getCellAlign=function isc_ListGrid_getCellAlign(_1,_2,_3){if(_1&&_1[this.singleCellValueProperty]!=null&&(!this.showSingleCellCheckboxField(_1)||!this.isCheckboxField(this.getField(_3))))
+{return this.isRTL()?isc.Canvas.RIGHT:isc.Canvas.LEFT}
+var _4=_3;var _5=this.fields[_4];if(!_5)return isc.Canvas.LEFT;if(_5.userFormula||_5.userSummary){return this.isRTL()?isc.Canvas.LEFT:isc.Canvas.RIGHT}
+return _5.cellAlign||_5.align}
+,isc.A.showSingleCellCheckboxField=function isc_ListGrid_showSingleCellCheckboxField(_1){return(this.getCurrentCheckboxField()!=null)&&_1&&!_1.$52e&&!_1[this.isSeparatorProperty]}
+,isc.A.$425=function isc_ListGrid__useDisplayFieldValue(_1){if(!_1||_1.valueMap||_1.displayField==null||(_1.displayField==_1.name))
+{return false}
+if(_1.optionDataSource==null){if(_1.displayValueFromRecord==false)return false;return true}
+var _2=_1.autoFetchDisplayMap;if(_2==null)_2=this.autoFetchDisplayMap;if(_2)return false;if(_1.displayValueFromRecord!=null)return _1.displayValueFromRecord;return(_1.valueField==null||_1.valueField==_1.name)&&(isc.DS.get(_1.optionDataSource)==this.getDataSource())}
+,isc.A.getValueIcon=function isc_ListGrid_getValueIcon(_1,_2,_3,_4){if(!_1.valueIcons||_1.suppressValueIcon){if(this.$31s(_1)){var _5=(_2?this.booleanTrueImage:this.booleanFalseImage);_4=(_4!=null)?_4:this.findRowNum(_3);var _6=_1.masterIndex;if(!this.canEditCell(_4,_6)&&_1.canToggle){_5=isc.Img.urlForState(_5,false,false,"Disabled")}
+if(_5==null)_5=isc.Canvas.getImgURL(isc.Canvas.$wz);return _5}
+return null}
+var _7=_1.valueIcons[_2];return _7}
+,isc.A.getValueIconLeftPadding=function isc_ListGrid_getValueIconLeftPadding(_1){return(_1&&_1.valueIconLeftPadding!=null?_1.valueIconLeftPadding:this.valueIconLeftPadding||0)}
+,isc.A.getValueIconRightPadding=function isc_ListGrid_getValueIconRightPadding(_1){return(_1&&_1.valueIconRightPadding!=null?_1.valueIconRightPadding:this.valueIconRightPadding||0)}
+,isc.A.showValueIconOnly=function isc_ListGrid_showValueIconOnly(_1){if(_1.showValueIconOnly!=null)return _1.showValueIconOnly;if(_1.valueIcons!=null&&_1.valueMap!=null)return true;return this.$31s(_1)}
+,isc.A.getValueIconWidth=function isc_ListGrid_getValueIconWidth(_1){if(this.isCheckboxField(_1))return this.$65a();if(this.$31s(_1))return this.booleanImageWidth;return(_1.valueIconWidth!=null?_1.valueIconWidth:(_1.valueIconSize!=null?_1.valueIconSize:(this.valueIconWidth!=null?this.valueIconWidth:this.valueIconSize)))}
+,isc.A.getValueIconHeight=function isc_ListGrid_getValueIconHeight(_1){if(this.isCheckboxField(_1))return this.$65b();if(this.isExpansionField(_1))return this.$72z();if(this.$31s(_1))return this.booleanImageHeight;return(_1.valueIconHeight!=null?_1.valueIconHeight:(_1.valueIconSize!=null?_1.valueIconSize:(this.valueIconHeight!=null?this.valueIconHeight:this.valueIconSize)))}
+,isc.A.$299=function isc_ListGrid__isNewRecordRow(_1){return this.showNewRecordRow&&(_1==this.getTotalRows()-1)}
+,isc.A.getNewRecordRowCellValue=function isc_ListGrid_getNewRecordRowCellValue(){return'<div align="center">'+this.newRecordRowMessage+'</div>'}
+,isc.A.getErrorIconHTML=function isc_ListGrid_getErrorIconHTML(_1,_2){var _3=this.getCellErrors(_1,_2);if(_3==null)return isc.$ad;var _4=this.imgHTML(this.errorIconSrc,this.errorIconWidth,this.errorIconHeight,null," isErrorIcon='true'");if(isc.Browser.isIE&&this.$30a&&this.getEditRow()==_1&&(!this.editByCell||this.getEditCol()==_2)){_4+=" "}else{_4+=isc.Canvas.spacerHTML(this.cellPadding,"auto")}
+return _4}
+,isc.A.$79z=function isc_ListGrid__handleErrorIconOver(_1,_2){this.$79y=[_1,_2];isc.Hover.setAction(this,this.$79v)}
+,isc.A.$79v=function isc_ListGrid__handleErrorIconHover(){if(this.$79y==null)return;var _1=this.$79y[0],_2=this.$79y[1];var _3=this.getCellErrors(_1,_2);if(_3==null)return;var _4=isc.FormItem.getErrorPromptString(_3);isc.Hover.show(_4,this.$wc())}
+,isc.A.$790=function isc_ListGrid__handleErrorIconOut(){delete this.$79y;if(isc.Hover.isActive){isc.Hover.clear()}}
+,isc.A.$315=function isc_ListGrid__formatCellValue(_1,_2,_3,_4,_5){if(_3&&_3.userSummary){_1=this.getSummaryFieldValue(_3,_2)}else{if(_3&&_3.formatCellValue!=null){_1=_3.formatCellValue(_1,_2,_4,_5,this)}else if(_3&&_3.cellValueTemplate){_1=_3.cellValueTemplate.evalDynamicString(this,{value:_1,record:_2,field:_3})}else if(this.formatCellValue!=null){_1=this.formatCellValue(_1,_2,_4,_5)}else{_1=this.applyCellTypeFormatters(_1,_2,_3,_4,_5)}}
+_1=this.formatValueAsString(_1,_2,_3,_4,_5);if(this.formatDisplayValue){_1=this.formatDisplayValue(_1,_2,_4,_5)}
+if(_3&&_3.escapeHTML){if(isc.isA.String(_1)&&_1!=this.$54t){_1=_1.asHTML()}}
+return _1}
+,isc.A.getDefaultFormattedValue=function isc_ListGrid_getDefaultFormattedValue(_1,_2,_3){var _4=this.getField(_3);var _5=this.applyCellTypeFormatters(this.getRawCellValue(_1,_2,_3),_1,_4,_2,_3);return this.formatValueAsString(_5,_1,_4,_2,_3)}
+,isc.A.applyCellTypeFormatters=function isc_ListGrid_applyCellTypeFormatters(_1,_2,_3,_4,_5){if(_3&&_3.$63!=null){_1=_3.$62.shortDisplayFormatter(_1,_3,this,_2,_4,_5)}else if(_3&&_3.$31r!=null){_1=_3.$31r(_1,_3,this,_2,_4,_5)}
+return _1}
+,isc.A.formatValueAsString=function isc_ListGrid_formatValueAsString(_1,_2,_3,_4,_5){if(_1==null||isc.is.emptyString(_1)){if(_3.emptyCellValue!=null){_1=_3.emptyCellValue}else if(_3.type=="summary"){_1=this.invalidSummaryValue}else{_1=this.emptyCellValue}}else if(this.$54y[_1]==true){_1=this.$54t}else if(!isc.isA.String(_1)){if(isc.isA.Date(_1)){if(this.$851(_3)){var _6=this.$30o(_3);var _7=isc.SimpleType.inheritsFrom(_3.type,"time");_1=isc.Time.toTime(_1,_6,_7)}else{var _8=_3&&isc.SimpleType.inheritsFrom(_3.type,"datetime"),_9=!_8&&_3&&isc.SimpleType.inheritsFrom(_3.type,"date"),_6=this.$45i(_3);if(_8)_1=_1.toShortDateTime(_6,true);else _1=_1.toShortDate(_6,!_9)}}else{_1=isc.iscToLocaleString(_1)}}
+return _1}
+,isc.A.getEditItemCellValue=function isc_ListGrid_getEditItemCellValue(_1,_2,_3){var _4=this.getEditorName(_2,_3);if(!this.$286||!this.$286.getItem(_4)){return" "}
+var _5=this.getCellErrors(_2,_3);if(_5){this.$286.setFieldErrors(_4,_5)}
+var _6=this.$286.getItem(_4),_7=_6.getStandaloneItemHTML(_6.getValue(),false,true);if(_5){this.$286.setFieldErrors(_4,null)}
+var _8=_6.containerWidget;if(!_8.$316)_8.$316=[];if(!_8.$316.contains(_6)){_8.$316.add(_6)}
+return _7}
+,isc.A.$68z=function isc_ListGrid__showInactiveEditor(_1){return this.$686(_1)}
+,isc.A.getInactiveEditorCellValue=function isc_ListGrid_getInactiveEditorCellValue(_1,_2,_3){var _4=this.getEditorName(_2,_3);var _5=this.$286.getItem(_4),_6=isc.DynamicForm.getEditorType(_5,this.$286),_7=this.getRawCellValue(_1,_2,_3),_8;if(this.shouldShowEditorPlaceholder(this.getField(_3),_6)){_8=this.getEditorPlaceholderHTML(_6,_7,_1,_2,_3)}else{var _9={grid:this.getID(),record:_1,rowNum:_2,colNum:_3}
+_8=_5.getInactiveEditorHTML(_7,false,true,_9);if(!this.$69m)this.$69m={};var _10="_"+_2+"_"+_3;if(this.$69m[_10]){this.logWarn("creating new inactiveEditor context for a cell without having cleared "+"the previous one."+this.getStackTrace(),"inactiveEditorHTML")}
+this.$69m[_10]=_9}
+return _8}
+,isc.A.shouldShowEditorPlaceholder=function isc_ListGrid_shouldShowEditorPlaceholder(_1,_2){if(_1.showEditorPlaceholder!=null)return _1.showEditorPlaceholder;return!this.$687[_2]}
+,isc.A.getEditorPlaceholderHTML=function isc_ListGrid_getEditorPlaceholderHTML(_1,_2,_3,_4,_5){return _2}
+,isc.A.$30b=function isc_ListGrid__editItemsDrawingNotification(_1,_2,_3){var _4;if(_1)_4=[_1];else{_4=[];var _5=this.$286.getItems();for(var i=0;i<_5.length;i++){if(_5[i].containerWidget==_3)_4.add(_5[i])}}
+var _7=_3.$316;for(var i=0;i<_4.length;i++){var _8=_4[i],_9=_8.isDrawn(),_10=_7?_7.contains(_8):false,_11=isc.CanvasItem&&isc.isA.CanvasItem(_8);if(_9){if(_10){_8.redrawn();if(_2)_8.moved()}else{_8.cleared()}}else if(_10){if(_11)_8.placeCanvas();_8.drawn()}}
+if(this.$286){this.$286.destroyOrphanedItems("Grid edit-items removed")}
+delete _3.$316}
+,isc.A.$69l=function isc_ListGrid__clearingInactiveEditorHTML(_1,_2){if(this.$69m==null)return;if(!this.$286||!this.$686((_2!=null?this.getField(_2):null),true))return;if(_1!=null){var _3="_"+_1+"_"+_2,_4=this.$69m[_3];if(_4){_4.formItem.clearInactiveEditorContext(_4);delete this.$69m[_3]}}else{var _5=this.getEditForm(),_6=_5.getItems();for(var i=0;i<_6.length;i++){_6[i].clearAllInactiveEditorContexts()}
+delete this.$69m}}
+,isc.A.setRecordValues=function isc_ListGrid_setRecordValues(_1,_2){if(!this.shouldSaveLocally()){this.logWarn("setRecordValues() not supported for grids where saveLocally is false");return}
+if(!this.data)return;var _3=this.data.indexOf(_1),_4=this.data.get(_3);var _5=isc.Canvas.$70o(this.dataPath,_2,this);this.combineObjects(_4,_5);this.calculateRecordSummaries([_4]);if(this.useCellRecords){_3=this.findRowNum(_4);var _6=this.findColNum(_4);this.refreshCell(_3,_6)}else{this.refreshRow(_3)}
+if(this.valuesManager!=null){this.valuesManager.$71e(_3,null,_4,this)}}
+,isc.A.combineObjects=function isc_ListGrid_combineObjects(_1,_2){return isc.combineObjects(_1,_2)}
+,isc.A.setRawCellValue=function isc_ListGrid_setRawCellValue(_1,_2,_3,_4){var _5=this.fields[_3];if(!_1||!_5)return;if(_5.setRawCellValue){isc.Func.replaceWithMethod(_5,"setRawCellValue","viewer,record,recordNum,field,fieldNum,value");_5.setRawCellValue(this,_1,_2,_5,_3,_4)}else{if(_5.dataPath){isc.Canvas.$70n(this.$840(_5.dataPath),_4,_1,this,true)}else{_1[_5[this.fieldIdProperty]]=_4}}
+this.data.dataChanged()}
+,isc.A.getCellBooleanProperty=function isc_ListGrid_getCellBooleanProperty(_1,_2,_3,_4){var _5=false,_6=this[_1];if(_6==false||_6==this.$18r)return false;var _7=this.fields[_3][_1];if(_7==false||_7==this.$18r)return false;if(_4!=null){var _8=this.getRecord(_2,_3),_9=(_8!=null?_8[_4]:false);if(_9==false||_9==this.$18r)return false;if(_9==true||_9==this.$18q)return true}
+return(_6==true)||(_7==true)||(_6==this.$18q)||(_7==this.$18q)}
+,isc.A.setShowRecordComponents=function isc_ListGrid_setShowRecordComponents(_1){if(this.showRecordComponents==_1)return;if(_1){if(this.animateFolders){this.$805=true
+this.animateFolders=false}}else{if(this.$805){this.animateFolders=true;delete this.$805}}
+this.showRecordComponents=_1;this.$80i();if(_1){this.$74p=this.drawAllMaxCells;this.drawAllMaxCells=0;if(this.body!=null)this.body.drawAllMaxCells=0}else{if(this.$74p!=null){this.drawAllMaxCells=this.$74p;if(this.body!=null)this.body.drawAllMaxCells=this.$74p;delete this.$74p}}
+this.invalidateRecordComponents()}
+,isc.A.$80i=function isc_ListGrid__updateVirtualScrollingForRecordComponents(){if(!this.showRecordComponents){if(this.$80j){delete this.virtualScrolling;delete this.$80j}}else{if(this.virtualScrolling==null||this.$80j){if(this.frozenFields==null){this.virtualScrolling=true;this.$80j=true}else{if(this.recordComponentHeight==null){this.logWarn("This grid has frozen fields and is showing "+"recordComponents. This may lead to unpredictable row heights which "+"are not supported with frozen fields. Setting "+"listGrid.recordComponentHeight will avoid this issue.","recordComponents")}
+if(this.$80j){delete this.virtualScrolling;delete this.$80j}}}}
+if(this.body&&this.virtualScrolling!=this.body.virtualScrolling){this.body.virtualScrolling=this.virtualScrolling;if(this.frozenBody){this.frozenBody.virtualScrolling=this.virtualScrolling}}}
+,isc.A.getDrawArea=function isc_ListGrid_getDrawArea(){if(this.body){var _1=this.body.getDrawArea();if(this.frozenFields&&this.freezeLeft()){_1[2]+=this.frozenFields.length;_1[3]+=this.frozenFields.length}
+return _1}
+return null}
+,isc.A.$74l=function isc_ListGrid__drawAreaChanged(_1,_2,_3,_4,_5){if(this.frozenFields&&this.freezeLeft()){_3+=this.frozenFields.length;_4+=this.frozenFields.length}
+var _6=[_1,_2,_3,_4];if(_6.equals(this.getDrawArea()))return;this.drawAreaChanged(_1,_2,_3,_4)}
+,isc.A.drawAreaChanged=function isc_ListGrid_drawAreaChanged(){}
+,isc.A.updateRecordComponents=function isc_ListGrid_updateRecordComponents(){var _1=this.logIsDebugEnabled("recordComponents");if(this.$81r){if(_1){this.logDebug("updateRecordComponents called recursively - returning","recordComponents")}
+return}
+var _2=this.body,_3=this.frozenBody;if(_2==null)return;if(_2.$28c!=null){return}
+if((!_2.isDrawn()||_2.$26a==null||(_2.$26a.length==0&&_2.fields.length>0))||(_3&&(!_3.isDrawn()||_3.$26a==null||(_3.$26a.length==0&&_3.fields.length>0))))
+{return}
+this.$81r=true;var _4=this.$81s||[],_5=this.$81t||{};if(_1){this.logDebug("updateRecordComponents - old record components before refreshing:"+this.echo(_4),"recordComponents")}
+this.$81t={};this.$81s=[];if(this.showRecordComponents||this.showBackgroundComponents){var _6=this.body.getDrawArea(),_7=this.showRecordComponentsByCell,_8=this.body.getID(),_9=this.frozenBody?this.frozenBody.getID():null;if(_1){this.logDebug("updating to potentially show recordComponents for drawArea:"+_6,"recordComponents")}
+for(var _10=_6[0];_10<=_6[1];_10++){var _11=this.getRecord(_10);if(_11==null||Array.isLoading(_11))continue;if(this.showRecordComponents){if(!_7){var _12=this.shouldShowRecordComponent(_11),_13=null;if(_12){_13=this.$81u(_11,null,_8);if(_13!=null){if(_13.isNullMarker){_13=null}else{var _14=_13.getID();_5[_14]=null}}else{_13=this.$81v(_11,null,this.body,_10)}}
+if(_13!=null){var _14=_13.getID();this.$81t[_14]=true;this.$81s[this.$81s.length]=_13}}else{if(this.frozenBody!=null){for(var _15=0;_15<this.frozenBody.fields.length;_15++){var _16=this.frozenBody.fields[_15],_17=_16.name;var _12=this.shouldShowRecordComponent(_11,_16.masterIndex),_13=null;if(_12){_13=this.$81u(_11,_17,_9);if(_13!=null){if(!_13.isNullMarker){var _14=_13.getID();_5[_14]=null}else{_13=null}}else{_13=this.$81v(_11,_17,this.frozenBody,_10,_15)}}
+if(_13!=null){var _14=_13.getID();this.$81t[_14]=true;this.$81s[this.$81s.length]=_13}}}
+for(var _18=_6[2];_18<=_6[3];_18++){var _16=this.body.fields[_18],_17=_16.name;var _12=this.shouldShowRecordComponent(_11,_16.masterIndex),_13=null;if(_12){var _13=this.$81u(_11,_17,_8);if(_13!=null){if(!_13.isNullMarker){var _14=_13.getID();_5[_14]=null}else{_13=null}}else{_13=this.$81v(_11,_17,this.body,_10,_18)}}
+if(_13!=null){var _14=_13.getID();this.$81t[_14]=true;this.$81s[this.$81s.length]=_13}}}}
+if(this.showBackgroundComponents){if(_11&&_11.backgroundComponent){var _19=_11.$29a?_11.$29a.find("isBackgroundComponent",true):null;if(!_19){if(isc.isA.Canvas(_11.backgroundComponent)){var _20=_11.backgroundComponent.addProperties(this.backgroundComponentProperties,{isBackgroundComponent:true})}else{var _21=isc.addProperties({isBackgroundComponent:true},this.backgroundComponentProperties,_11.backgroundComponent);var _20=this.createAutoChild("backgroundComponent",_21)}
+var _22=_2.getTableZIndex();_20.setZIndex(_22-49);_20.setWidth("100%");_20.setHeight("100%");_20.setOverflow("hidden");this.addEmbeddedComponent(_11.backgroundComponent,_11,_10,null,"within")}}}}}
+if(this.logIsInfoEnabled("recordComponents")){this.logInfo("updateRecordComponents - new recordComponents:"+this.echo(this.$81t)+", old record components (will be cleaned up if value is 'true'):"+this.echo(_5),"recordComponents")}
+for(var i=0;i<_4.length;i++){var _14=_4[i].getID();if(_5[_14]!=true){continue}
+if(_1){this.logDebug("cleaning up RecordComponent:"+_4[i],"recordComponents")}
+this.$81w(_4[i]);_5[_14]=null}
+delete this.$81r}
+,isc.A.$81v=function isc_ListGrid__applyNewRecordComponent(_1,_2,_3,_4,_5){if(this.logIsDebugEnabled("recordComponents")){this.logDebug("getting record component for row/field:"+[_4,_2],"recordComponents")}
+var _6=_3.getID();var _7=this.recordComponentPoolingMode=="recycle",_8,_9,_10=_2==null?null:this.getColNum(_2);if(_7){var _11=this.getFromRecordComponentPool(_1,_2);_8=_11?_11[0]:null;_9=_11?_11[1]:null}
+if(!_8){if(this.createRecordComponent&&isc.isA.Function(this.createRecordComponent)){_8=this.createRecordComponent(_1,this.getColNum(_2));if(_8!=null)_8.isRecordComponent=true;this.logDebug("created new record component:"+_8,"recordComponents")}}else{if(this.updateRecordComponent&&isc.isA.Function(this.updateRecordComponent)){var _12=_8;_8=this.updateRecordComponent(_1,_10,_8,!_9);if(_8==null){if(this.logIsInfoEnabled("recordComponents")){this.logInfo("showRecordComponents: updateRecordComponent() method "+"failed to return an updated component.","recordComponents")}
+this.addToRecordComponentPool(_12)}
+this.logDebug("updated record component from pool:"+_8,"recordComponents")}}
+var _13=_8==null;if(_13){_8={isNullMarker:true,$669:_6,$81x:this.$81o}}
+if(_1.$81y==null){_1.$81y={}}
+if(_2==null)_2=this.$81m;_1.$81y[_2]=_8;if(_7&&!_13){_8.currentFieldName=_2;_8.currentRecord=_1}
+if(!_13){return _3.addEmbeddedComponent(_8,_1,_4,_5,this.getRecordComponentPosition())}}
+,isc.A.setDontAutoDestroyComponent=function isc_ListGrid_setDontAutoDestroyComponent(_1,_2){_1.dontAutoDestroy=_2}
+,isc.A.$81w=function isc_ListGrid__cleanUpRecordComponent(_1,_2){if(this.logIsDebugEnabled("recordComponents")){this.logDebug("cleaning up recordComponent:"+_1,"recordComponents")}
+var _3=this.recordComponentPoolingMode;if(_2)_3="viewport";if(_3=="data"){if(!_1.destroyed&&!_1.destroying&&!_1.$65i){if(this.$89r==null){this.$89r={}}
+var _4=_1.ID;if(this.$89r[_4]!=_1){this.$89r[_1.ID]=_1;if(_1.pointersToThis==null)_1.pointersToThis=[];_1.pointersToThis.add({object:this.$89r,property:_1.ID})}}}else{var _4=_1.ID,_5=isc.Canvas.getById(_1.$669),_6=_1.embeddedRecord,_7=_1.$81k;if(_6.$81y){if(_6.$81y[_7]==_1){delete _6.$81y[_7]}
+delete _6.$81y[_7]}
+if(_5!=null){_5.removeEmbeddedComponent(_1.embeddedRecord,_1)}
+if(_3=="viewport"){if(!_1.dontAutoDestroy)_1.markForDestroy()}else{if(_1.destroying||_1.destroyed||_1.$65i)return;this.addToRecordComponentPool(_1)}}}
+,isc.A.getLiveRecordComponent=function isc_ListGrid_getLiveRecordComponent(_1,_2,_3){if(!_1)return null;if(isc.isA.Number(_1))_1=this.getRecord(_1);if(!_3)_3=this.body.getID();var _4=this.$81u(_1,_2,_3);return _4}
+,isc.A.$81u=function isc_ListGrid__getLiveRecordComponent(_1,_2,_3){if(_2==null)_2=this.$81m;var _4=_1.$81y;if(_4==null||_4[_2]==null)return null;var _5=_4[_2];if(_5.$669!=_3){return null}
+if(_5.isNullMarker&&_5.$81x!=this.$81z){return null}
+if(_5.destroyed||_5.destroying||_5.$65i){this.logWarn("Destroyed or Destroying record component:"+_5+" present on record. Ignoring","recordComponents");_4[_2]=null;return null}
+return _5}
+,isc.A.invalidateRecordComponents=function isc_ListGrid_invalidateRecordComponents(){this.dropRecordComponents(true);if(this.showRecordComponents&&this.isDrawn()){this.updateRecordComponents()}}
+,isc.A.dropRecordComponents=function isc_ListGrid_dropRecordComponents(_1){this.$81o++;var _2=this.$81s||[];delete this.$81s;delete this.$81t;for(var i=0;i<_2.length;i++){this.$81w(_2[i],_1)}}
+,isc.A.refreshRecordComponent=function isc_ListGrid_refreshRecordComponent(_1,_2){if(!this.showRecordComponents||_1==null||this.body==null)return;if(this.showRecordComponentsByCell&&_2==null){this.logWarn("refreshRecordComponent() called with no colNum. This parameter is required when "+"showRecordComponentsByCell is true. Taking no action.");return}
+var _3=this.getRecord(_1);if(_3==null||Array.isLoading(_3))return;var _4=this.body,_5=null,_6=null;if(this.showRecordComponentsByCell){_4=this.getFieldBody(_2);_5=this.getLocalFieldNum(_2);_6=this.getFieldName(_2)}
+var _7=this.$81u(_3,_6,_4.getID());if(_7!=null&&_7.isNullMarker)_7=null;if(_7!=null){this.$81w(_7,(this.recordComponentPoolingMode!="recycle"))}
+var _8;if(this.shouldShowRecordComponent(_3,_2)){_8=this.$81v(_3,_6,_4,_1,_5);if(_8&&_8.isNullMarker)_8=null}
+var _9=this.$81s.length;if(_7){var _10=_7.getID();this.$81t[_7.getID()]=null;if(_8!=null){_9=this.$81s.indexOf(_7);this.$81s[_9]=null}else{this.$81s.remove(_7)}}
+if(_8!=null){var _10=_8.getID();this.$81t[_10]=true;this.$81s[_9]=_8}}
+,isc.A.getRecordComponentPosition=function isc_ListGrid_getRecordComponentPosition(){if(this.recordComponentPosition!=null)return this.recordComponentPosition;return(this.showRecordComponentsByCell?"within":"expand")}
+,isc.A.getRecordComponentPool=function isc_ListGrid_getRecordComponentPool(){if(!this.$74m)this.$74m=[];return this.$74m}
+,isc.A.getFromRecordComponentPool=function isc_ListGrid_getFromRecordComponentPool(_1,_2){var _3=this.getRecordComponentPool(),_4=[],_5;if(!_3||_3.length==0)return null;if(this.showRecordComponentsByCell&&this.poolComponentsPerColumn==true){_4=_3.findAll("currentFieldName",_2)}else{_4=_3}
+if(!_4||_4.length==0)return null;for(var i=0;i<_4.length;i++){_5=_4[i];var _7=_5.currentRecord;if(this.comparePrimaryKeys(_7,_1)){_3.remove(_5);return[_5,true]}}
+_3.length-=1;return[_5,false]}
+,isc.A.addToRecordComponentPool=function isc_ListGrid_addToRecordComponentPool(_1){var _2=this.getRecordComponentPool();_2.add(_1)}
+,isc.A.shouldShowRecordComponent=function isc_ListGrid_shouldShowRecordComponent(_1,_2){if(_1==null||_1.$52e||_1[this.isSeparatorProperty]||Array.isLoading(_1))
+{return false}
+return this.showRecordComponent(_1,_2)}
+,isc.A.showRecordComponent=function isc_ListGrid_showRecordComponent(){return true}
+,isc.A.bodyDrawing=function isc_ListGrid_bodyDrawing(_1){if(isc.$cv)arguments.$cw=this;if(_1!=this.body)return;var _2;if(this.$31v){_2=!isc.RPCManager.startQueue();this.$67b()}
+this.requestVisibleRows();if(_2)isc.RPCManager.sendQueue();this.$31v=null}
+,isc.A.setRecordComponentHeight=function isc_ListGrid_setRecordComponentHeight(_1){this.recordComponentHeight=_1;if(this.isDrawn())this.markForRedraw()}
+,isc.A.getAvgRowHeight=function isc_ListGrid_getAvgRowHeight(_1){if(this.showRecordComponents&&this.recordComponentHeight!=null){return this.getRecordComponentRowHeight()}
+return _1.fixedRowHeights?_1.cellHeight:Math.max(_1.cellHeight,_1.avgRowHeight)}
+,isc.A.getRecordComponentRowHeight=function isc_ListGrid_getRecordComponentRowHeight(){if(this.recordComponentHeight==null)return null;var _1=this.getRecordComponentPosition();if(_1==this.$57m)return this.cellHeight+this.recordComponentHeight;else return Math.max(this.recordComponentHeight,this.cellHeight)}
+,isc.A.$45n=function isc_ListGrid__setOptionDataSources(){this.$31v=null;var _1=this.$45o;this.$45o=[];var _2=this.getDataSource();for(var i=0;i<this.completeFields.length;i++){var _4=this.completeFields[i];if(_4==null){this.logWarn("Fields array contains an empty entry");continue}
+var _5=_4.displayField||_4[this.fieldIdProperty],_6=_4.valueField||_4[this.fieldIdProperty];if(_4.optionDataSource==null||_4.displayField==null||(_4.displayField==_4.valueField)||(_4.valueField==null&&(_4.displayField==_4[this.fieldIdProperty]))||(_4.autoFetchDisplayMap==false)||(this.autoFetchDisplayMap==false&&_4.autoFetchDisplayMap==null))
+{continue}
+var _7=isc.DS.get(_4.optionDataSource);if(_7==null){this.logWarn(_4.optionDataSource+" dataSource not found, check value of "+"optionDataSource property on the "+_4[this.fieldIdProperty]+" field");continue}
+var _8=_7.ID,_9=_4[this.fieldIdProperty],_10=_4.optionCriteria;var _11=false;if(_1&&!_4.optionFilterContext){for(var _12=0;_12<_1.length;_12++){var _13=_1[_12];if(_13==null)continue;if(this.$68m(_4,_13)){_13.$51u=[_4];this.$45o.add(_13);_1[_12]=null;_11=true;break}}}
+if(!_11&&!_4.optionFilterContext){for(var _12=0;_12<this.$45o.length;_12++){var _13=this.$45o[_12];if(this.$68m(_4,_13)){_13.$51u.add(_4);_11=true;break}}}
+if(!_11){this.$45o.add({$68n:_8,$51u:[_4],$51w:_4.optionTextMatchStyle,$68o:_10,$68p:_4.optionFilterContext,$68r:_4.optionOperationId});this.$31v=true}}
+for(var i=0;i<this.$45o.length;i++){if(this.$45o[i].$68q!=null){this.$67c(this.$45o[i])}}
+if(_1!=null){for(var i=0;i<_1.length;i++){if(_1[i]&&_1[i].$68q)_1[i].$68q.destroy()}}}
+,isc.A.$68m=function isc_ListGrid__fieldMatchesODSConfig(_1,_2){return(_2.$68n==_1.optionDataSource&&(_1.optionTextMatchStyle==_2.$51w)&&(_1.optionOperationId==_2.$68r)&&(isc.DataSource.getDataSource(_2.$68n).compareCriteria(_1.optionCriteria||{},_2.$68o||{})==0))}
+,isc.A.$67c=function isc_ListGrid__updateValueMapFromODS(_1){var _2=_1.$68n,_3=_1.$51u;if(_3==null||_3.length==0){this.logWarn("$67c fired for dataSource:"+_2+" which no longer applies to any fields in this ListGrid");return}
+var _4=_1.$68q;if(_4==null||(isc.isA.ResultSet(_4)&&!_4.lengthIsKnown()))return;var _5=this.getGroupByFields()||[],_6=_3.getProperty(this.fieldIdProperty);if(!isc.isAn.Array(_5))_5=[_5];for(var i=0;i<_3.length;i++){var _8=_3[i],_9=(_8.valueField||_8[this.fieldIdProperty]),_10=_4.getValueMap(_9,_8.displayField);if(this.getField(_8[this.fieldIdProperty])==null){_8.valueMap=_10}else{this.setValueMap(_8[this.fieldIdProperty],_10)}
+if(_5.contains(_8.valueField)||_5.contains(_8.displayField)){this.$92t=true}}
+if(this.$92t){var _11=true;for(var i=0;i<this.$45o.length;i++){var _1=this.$45o[i];if(!_1.$68q){_11=false;break}}
+if(_11){this.regroup(true);delete this.$92t}}}
+,isc.A.$67b=function isc_ListGrid__fetchValueMapData(){var _1;for(var i=0;i<this.$45o.length;i++){var _3=this.$45o[i];if(_3.$68q==null){if(_1==null){_1=!isc.RPCManager.startQueue()}
+var _4=_3.$68n;var _5,_6=_3.$51u;if(_6&&_6.length>0){_5="";for(var _7=0;_7<_6.length;_7++){_5+=_6[_7].name;if(_7<_6.length-1)_5+=","}}
+var _8=_3.$68p||{};isc.addProperties(_8,{showPrompt:false,clientContext:{ODSConfig:_3},componentContext:_5,textMatchStyle:_3.$51w});if(_3.$68r!=null){_8.operationId=_3.$68r}
+isc.DataSource.getDataSource(_4).fetchData(_3.$68o,{target:this,methodName:"$317"},_8)}}
+if(_1)isc.RPCManager.sendQueue()}
+,isc.A.$317=function isc_ListGrid__fetchValueMapCallback(_1,_2,_3){var _4=_3.clientContext.ODSConfig;if(!_4||(_4.$68q!=null)||!this.$45o||!this.$45o.contains(_4))
+{return}
+_4.$68q=isc.ResultSet.create({dataSource:_4.$68n,ODSConfig:_4,targetGrid:this,dataChanged:"this.targetGrid.$67c(this.ODSConfig)",initialData:_2})
+this.$67c(_4);return true}
+,isc.A.$67a=function isc_ListGrid__dropODSData(){if(this.$45o==null)return;for(var i=0;i<this.$45o.length;i++){var _2=this.$45o[i].$68q;if(_2)_2.destroy()}
+delete this.$45o}
+,isc.A.requestVisibleRows=function isc_ListGrid_requestVisibleRows(){if(isc.ResultSet&&isc.isA.ResultSet(this.data)){if(this.body==null)return this.data.getRange(0,this.dataPageSize);if(this.data.lengthIsKnown()&&this.data.getLength()==0)return;if(!this.data.lengthIsKnown()){this.body.showAllRows=false}else{this.body.showAllRows=(this.body.overflow==isc.Canvas.VISIBLE?true:this.showAllRecords)}
+var _1=this.body.getDrawArea();if(this.$30d&&isc.isAn.Array(this.$30d)){var _2=_1[1]-_1[0];_1[0]=this.$30d[0];_1[1]=_1[0]+_2}
+if(this.isGrouped){return this.data.getRange(0,this.groupByMaxRecords)}else{return this.data.getRange(_1[0],_1[1])}}
+return null}
+,isc.A.getPrintHeaders=function isc_ListGrid_getPrintHeaders(_1,_2){var _3=isc.SB.create();var _4=(this.isRTL()?isc.Canvas.LEFT:isc.Canvas.RIGHT);var _5,_6,_7=(this.headerSpans==null?null:[]),_8=[];var _9=["<TD CLASS=",(this.printHeaderStyle||this.headerBaseStyle)," ALIGN="].join("");for(var _10=_1;_10<_2;_10++){var _11=this.body.fields[_10];if(this.headerSpans!=null){if(_5==null){_5=this.headerSpans[0];_6=1}else{if(!_5.fields.contains(_11[this.fieldIdProperty])){_7.addList([_9,"center colspan=",_6,">",_5.title,"</TD>"]);_5=this.headerSpans[this.headerSpans.indexOf(_5)+1];_6=1}else{_6++}}}
+var _12=_11.align||_4;_8.addList([_9,_12,">",this.getHeaderButtonTitle(_11.masterIndex),"</TD>"])}
+if(_5!=null){_7.addList([_9,"center colspan=",_6,">",_5.title,"</TD>"]);_3.append("<TR>",_7.join(""),"</TR>")}
+_3.append("<TR>",_8.join(""),"</TR>");return _3.toString()}
+,isc.A.getPrintFooters=function isc_ListGrid_getPrintFooters(_1,_2){if(!(this.summaryRow)||!(this.summaryRow.body)||!(this.showGridSummary)){return""}
+var _3={startRow:0,endRow:this.summaryRow.getTotalRows(),maxRows:this.summaryRow.printMaxRows,printProps:this.printProperties||{},html:[]}
+var _4=isc.Canvas.applyStretchResizePolicy(this.fields.getProperty("width"),_3.printProps.width||isc.Page.getWidth());_3.printWidths=_4;this.summaryRow.body.printChunkOnly=true;var _5=this.summaryRow.body.getPrintHTMLChunk(_3,true);delete this.summaryRow.body.printChunkOnly;return _5}
+,isc.A.getPrintHTML=function isc_ListGrid_getPrintHTML(_1,_2){var _3=this.body;if(_3==null){this.createChildren();_3=this.body}
+if(this.isDirty()||_3.isDirty()){this.redraw("updating HTML for printing")}
+var _4=isc.addProperties({},_1,this.printProperties);var _5,_6;if(isc.isA.ResultSet(this.data)&&!this.data.allMatchingRowsCached()){var _7=this.body.getVisibleRows(),_8=_7?_7[0]:null,_9=this.data.getCachedRange(_8);if(_9!=null){_5=_9[0];_6=_9[1]}}
+var _10=isc.Canvas.applyStretchResizePolicy(this.fields.getProperty("width"),_4.width||isc.Page.getWidth());return _3.getTablePrintHTML({startRow:_5,endRow:_6,callback:_2,printWidths:_10,printProps:_4})}
+,isc.A.$569=function isc_ListGrid__prepareForPrinting(_1,_2){this.isPrinting=this.body.isPrinting=true;this.currentPrintProperties=_2;var _3=this.body,_4=this.$30a;var _5=isc.getProperties(_3,["autoFit","wrapCells","showAllRows","showAllColumns","fixedRowHeights","$26a","fields"]);_3.showAllRows=true;_3.showAllColumns=true;this.$30a=false;_3.autoFit=this.printAutoFit;_3.wrapCells=this.printWrapCells;_3.fixedRowHeights=!this.printWrapCells;var _6=this.fields.duplicate();_6.removeAll(_6.findAll("shouldPrint",false));_3.fields=_6;var _7=this.frozenFields;delete this.frozenFields;_3.$26a=_1;return{oldEditorShowing:_4,oldFrozenFields:_7,origProps:_5}}
+,isc.A.$57a=function isc_ListGrid__donePrinting(_1){var _2=this.body,_3=_1.origProps,_4=_1.oldEditorShowing;isc.addProperties(_2,_3);if(_3.showAllRows==null)_2.showAllRows=null;this.$30a=_4;this.frozenFields=_1.oldFrozenFields;delete this.currentPrintProperties;this.isPrinting=this.body.isPrinting=false;this.body.redraw()}
+,isc.A.rowClick=function isc_ListGrid_rowClick(_1,_2,_3,_4){this.$31q=_2;var _1=this.getCellRecord(_2,_3),_5=this.fields[_3];if(Array.isLoading(_1))return;var _6=this.getCellValue(_1,_2,_3);var _7=this.getRawCellValue(_1,_2,_3);if(_1!=null&&_1.$52e){if(this.canCollapseGroup==false)return;if(_4){var _8=isc.EH.getKey();if(_8!="Space"&&_8!="Enter")return}
+var _9=this,_10=_1;if(this.getEditRow()!=null)this.saveAllEdits(null,function(){_9.toggleFolder(_10)});else this.toggleFolder(_1);return}
+if(_5.recordClick&&!(_4&&_5.keyboardFiresRecordClick==false)){isc.Func.replaceWithMethod(_5,"recordClick","viewer,record,recordNum,field,fieldNum,value,rawValue");var _11=_5.recordClick(this,_1,_2,_5,_3,_6,_7);if(_11==false)return false}
+if(this.recordClick){var _11=this.recordClick(this,_1,_2,_5,_3,_6,_7);if(_11==false)return false}
+var _12=this.isEditable()&&(this.editEvent==isc.EH.CLICK||this.editOnFocus);if(_5.canToggle&&this.canEditCell(_2,_3)&&this.shouldToggle(_5)){var _13=this.getEditorValueMap(_5,this.getEditedRecord(_2,_3));if(_13==null&&isc.SimpleType.getBaseType(_5.type)==this.$g2){_13=[true,false]}
+if(_13!=null){if(!isc.isAn.Array(_13))_13=isc.getKeys(_13);if(_13.length>1){var _14=this.getFieldName(_3),_15=this.getEditedCell(_2,_3),_16=_13.indexOf(_15);_16+=1;if(_16>=_13.length)_16=0;var _17=_15;_15=_13[_16];var _18;if(_5.change!=null){this.logInfo("canToggle firing specified field.change() event directly","gridEdit");_18=this.fireCallback(_5.change,"form,item,value,oldValue",[null,null,_15,_17])==false}
+if(!_18){if(!_12&&this.autoSaveEdits){this.setEditValue(_2,_3,_15,true,false)}else{this.setEditValue(_2,_3,_15)}
+if(_5.changed!=null){this.logInfo("canToggle firing specified field.changed() event directly","gridEdit");this.fireCallback(_5.changed,"form,item,value",[null,null,_15])}
+if(this.autoSaveEdits)this.saveEdits(null,null,_2,_3)}}}}
+if(_12){if(this.handleEditCellEvent(_2,_3,isc.ListGrid.CLICK)==true){return true}
+if(_4){for(var i=0;i<this.fields.length;i++){if(i==_3)continue;if(this.handleEditCellEvent(_2,i,isc.ListGrid.CLICK)==true){return true}}}}}
+);isc.evalBoundary;isc.B.push(isc.A.shouldToggle=function isc_ListGrid_shouldToggle(_1){if(!this.$31s(_1))return true;var _2=this.getEventPart();return(_2&&_2.part=="valueicon")}
+,isc.A.rowDoubleClick=function isc_ListGrid_rowDoubleClick(_1,_2,_3,_4){var _5=this.fields[_3],_6=this.getCellValue(_1,_2,_3),_7=this.getRawCellValue(_1,_2,_3);if(_1!=null&&_1.$52e)return;if(_5.recordDoubleClick){isc.Func.replaceWithMethod(_5,"recordDoubleClick","viewer,record,recordNum,field,fieldNum,value,rawValue");var _8=_5.recordDoubleClick(this,_1,_2,_5,_3,_6,_7);if(_8==false)return _8}
+if(this.recordDoubleClick!=null){var _8=this.recordDoubleClick(this,_1,_2,_5,_3,_6,_7);if(_8==false)return _8}
+if(this.isEditable()&&this.editEvent==isc.EH.DOUBLE_CLICK){if(this.handleEditCellEvent(_2,_3,isc.ListGrid.DOUBLE_CLICK)==true)return true;if(_4){for(var i=0;i<this.fields.length;i++){if(i==_3)continue;if(this.handleEditCellEvent(_2,i,isc.ListGrid.DOUBLE_CLICK)==true)return true}}}}
+,isc.A.$298=function isc_ListGrid__cellContextClick(_1,_2,_3){this.cellContextItems=null;if(this.cellContextClick){var _1=this.getCellRecord(_2,_3);if(this.cellContextClick(_1,_2,_3)==false)return false}
+if(this.showCellContextMenus){if(!this.cellContextMenu)this.cellContextMenu=this.getMenuConstructor().create(this.contextMenuProperties);if(!this.cellContextItems){this.cellContextItems=this.makeCellContextItems(this.getCellRecord(_2,_3),_2,_3)}
+if(isc.isAn.Array(this.cellContextItems)&&this.cellContextItems.length>0){this.cellContextMenu.setData(this.cellContextItems);this.cellContextMenu.showContextMenu(this)}
+return false}else{return true}}
+,isc.A.getShowChildDataSourceContextMenuItemTitle=function isc_ListGrid_getShowChildDataSourceContextMenuItemTitle(_1){return"Show "+_1.getPluralTitle()}
+,isc.A.makeCellContextItems=function isc_ListGrid_makeCellContextItems(_1,_2,_3){if(this.dataSource!=null){var _4=[];if(this.canOpenRecordDetailGrid){var _5=isc.DS.get(this.getRecordDataSource(_1)),_6=_5.getChildDataSources();if(_6!=null){for(var i=0;i<_6.length;i++){var _8=_6[i];_4.add({title:this.getShowChildDataSourceContextMenuItemTitle(_8),record:_1,dataSource:_8,click:"target.openRecordDetailGrid(item.record, item.dataSource)"})}}}
+if(this.canOpenRecordEditor){_4.add({title:this.openRecordEditorContextMenuItemTitle,record:_1,click:"target.endEditing();target.openRecordEditor(item.record)"})}
+if(_1!=null&&this.$32o==_1){_4.add({title:this.dismissEmbeddedComponentContextMenuItemTitle,click:"target.closeRecord()"})}
+_4.add({title:this.deleteRecordContextMenuItemTitle,click:"target.removeSelectedData()"});return(_4.length>0?_4:null)}
+return null}
+,isc.A.getCanHover=function isc_ListGrid_getCanHover(){if(this.canHover!=null)return this.canHover;var _1=this.getFields();if(_1!=null){for(var i=0;i<_1.length;i++){if(_1[i].showHover)return true}}
+return this.canHover}
+,isc.A.cellHoverHTML=function isc_ListGrid_cellHoverHTML(_1,_2,_3){if(this.$30a&&this.getEditRow()==_2&&this.canEditCell(_2,_3)&&(!this.editByCell||this.getEditCol()==_3)){return null}
+var _4=this.getField(_3);if(_4.showHover==false)return null;if(_4.showHover==null&&!this.canHover)return null;var _5=this.getCellValue(_1,_2,_3);if(_4.hoverHTML){isc.Func.replaceWithMethod(_4,"hoverHTML","record,value,rowNum,colNum,grid");return _4.hoverHTML(_1,_5,_2,_3,this)}
+if(_5!=null&&!isc.isAn.emptyString(_5)&&_5!=this.emptyCellValue){return _5}}
+,isc.A.$784=function isc_ListGrid__getCellHoverComponent(_1,_2,_3){if(!this.showHoverComponents)return null;if(this.$30a&&this.getEditRow()==_2&&(!this.editByCell||this.getEditCol()==_3))return null;var _4=this.getField(_3);if(_4.showHover==false)return null;if(_4.showHover==null&&!this.canHover)return null;if(this.getCellHoverComponent&&isc.isA.Function(this.getCellHoverComponent)){return this.getCellHoverComponent(_1,_2,_3)}else return null}
+,isc.A.getCellHoverComponent=function isc_ListGrid_getCellHoverComponent(_1,_2,_3){return this.$84d(_1,false,true,_2,_3)}
+,isc.A.$84d=function isc_ListGrid__getStockEmbeddedComponent(_1,_2,_3,_4,_5){var _6=this.getFields(),_7=this.dataSource?isc.getValues(this.getDataSource().getFields()):_6,_8=(!_3?null:this.hoverWidth||this.hoverSize||this.defaultCellHoverComponentWidth),_9=(!_3?null:this.hoverHeight||this.hoverSize||this.defaultCellHoverComponentHeight),_10=[],_11;for(var i=0;i<_7.length;i++){var _13=_7.get(i);if(this.dataSource){if(!_6.find("name",_13.name)){_10.add(_13)}}else{if(!this.isExpansionField(_13)){_10.add(_13)}}}
+var _14=(_3?this.hoverMode:(_2?this.expansionMode:null));var _15;if(_14=="detailField"){_11=this.createAutoChild("expansionDetailField",{contents:_1[this.detailField]});_15={width:(_3?_8:"100%"),height:(_3?_9:"100%"),members:[_11]};if(_3){_15=isc.addProperties(_15,{hoverAutoDestroy:this.hoverAutoDestroy,overflow:"auto"})}
+_11=isc.VLayout.create(_15)}else if(_14=="details"){_15={dataSource:this.dataSource,fields:_10};if(_3){_15=isc.addProperties(_15,{width:_8,height:_9,hoverAutoDestroy:this.hoverAutoDestroy})}
+_11=this.createAutoChild("expansionDetails",_15);_11.setData(_1)}else if(_14=="related"){_15={dataSource:this.getRelatedDataSource(_1)};if(_3){_15=isc.addProperties(_15,{canEdit:false,width:_8,height:_9,dataProperties:{context:{showPrompt:false}},hoverAutoDestroy:this.hoverAutoDestroy})}
+if(_2){_15=isc.addProperties(_15,{canExpandRecords:this.childExpansionMode?true:false,expansionMode:this.childExpansionMode,canEdit:this.expansionCanEdit})}
+_11=this.createAutoChild("expansionRelated",_15);if(this.expansionCanEdit)_11.autoSaveEdits=true;_11.delayCall("fetchRelatedData",[_1,this.dataSource])}else if(_14=="detailRelated"){_15={dataSource:this.dataSource,fields:_10};if(_3){_15=isc.addProperties(_15,{dataProperties:{context:{showPrompt:false}},hoverAutoDestroy:this.hoverAutoDestroy})}
+var _16=this.createAutoChild("expansionDetails",_15)
+_16.setData(_1);_15={dataSource:this.getRelatedDataSource(_1),height:"100%",canEdit:(_3?false:(_2?this.expansionCanEdit:null))};if(_3){_15=isc.addProperties(_15,{dataProperties:{context:{showPrompt:false}},hoverAutoDestroy:this.hoverAutoDestroy})}
+if(_2){_15=isc.addProperties(_15,{canExpandRecords:this.childExpansionMode?true:false,expansionMode:this.childExpansionMode})}
+var _17=this.createAutoChild("expansionRelated",_15);_15={members:[_16,_17]};if(_3){_15=isc.addProperties(_15,{width:_8,height:_9,hoverAutoDestroy:this.hoverAutoDestroy})}
+_11=this.createAutoChild("expansionDetailRelated",_15)}else if(_14=="editor"){_11=this.createAutoChild("expansionEditor",{dataSource:this.dataSource,fields:_10});_11.editRecord(this.getEditedRecord(_4)||_1)}
+return _11}
+,isc.A.selectAllRecords=function isc_ListGrid_selectAllRecords(){this.$67j=true;this.selection.selectAll();this.$67j=null;this.$25a("select all");if(this.getCurrentCheckboxField()!=null)this.$63m(true);this.fireSelectionUpdated()}
+,isc.A.deselectAllRecords=function isc_ListGrid_deselectAllRecords(){this.$67j=true;this.selection.deselectAll();this.$67j=null;this.$25a("deselect all");if(this.getCurrentCheckboxField()!=null)this.$63m(false);this.fireSelectionUpdated()}
+,isc.A.bodyKeyPress=function isc_ListGrid_bodyKeyPress(_1,_2){if(this.onBodyKeyPress(_1,_2)==false)return false;if(this.$30a){var _3=_1.keyTarget,_4;while(_4==null&&_3!=this&&_3!=null){_4=_3.canvasItem;_3=_3.parentElement}
+if(_4!=null&&_4.form==this.getEditForm()){var _5=this.editorKeyPress(_4,isc.EH.getKey(),isc.EH.getKeyEventCharacterValue());return(_5==null?isc.EH.STOP_BUBBLING:_5)}}
+if(this.data.getLength()>0){var _6=isc.EventHandler,_7=_1.keyName;var _8=this.editOnKeyPress&&this.isEditable();if(_8&&this.$51j(_1,_2))return false;if(_7==this.$20s){return this.$318(-1)}else if(_7==this.$20t){return this.$318(1)}else if(_7==this.$304){if(this.generateClickOnSpace)
+if(this.$240()==false)return false;if(this.generateDoubleClickOnSpace)
+return this.$241()}else if(_7==this.$10j){if(this.generateClickOnEnter)
+if(this.$240()==false)return false;if(this.generateDoubleClickOnEnter)
+return this.$241()}else if(_7==this.$51g&&this.editOnF2Keypress&&this.isEditable()&&this.editEvent!="none")
+{var _9=this.getFocusRow();if(_9==null)_9=0;this.startEditing(_9);return false}}
+return true}
+,isc.A.$51j=function isc_ListGrid__editOnKeyPress(_1,_2){var _3=_2.keyName,_4=isc.EH.getKeyEventCharacter(_1);if(_3!=this.$51g&&_3!=this.$51i&&_3!=this.$51h&&(_3==this.$20w||isc.EH.$i8[_3]||_4==null||_4==isc.emptyString))
+{return false}
+var _5=this.getFocusCell(),_6=_5[0]||0,_7=_5[1]||0;if(this.$30a)return false;var _8;if(_3==this.$10j||_3==this.$51g)_4=null;var _9;if(_4!=null){if(_3==this.$51i||_3==this.$51h){_9=null}else if(this.autoSelectEditors){_9=_4}else{_9=this.getEditedCell(_6,_7)+_4}
+this.$51m=true}
+return this.handleEditCellEvent(_5[0],_5[1],this.$51l,_9)}
+,isc.A.getArrowKeyAction=function isc_ListGrid_getArrowKeyAction(){var _1=this.arrowKeyAction;if(_1==this.$27r)return this.$27r;if(isc.EH.ctrlKeyDown())return this.$305;return _1}
+,isc.A.$318=function isc_ListGrid__navigateToNextRecord(_1){var _2=this.getArrowKeyAction();if(_2==this.$27r)return true;if(_1==null)_1=1;var _3;_3=this.getFocusRow(_1>0);if(_3==null)_3=this.$31q;var _4=isc.isA.Number(_3)?_3:0;if(isc.isA.Number(_3))_3+=_1;else _3=0;var _5=this.getTotalRows()-1;if(_3<0||_3>_5){if(_5<0)return true;_3=_4}
+while(!this.recordIsEnabled(_3,0)){_3+=_1;if(_3<0||_3>_5){_3=_4;break}}
+if(isc.screenReader){this.body.$86a(_3)}
+if(_2==this.$305)this.$88(_3);else{if(_3==_4){var _6=this.$32b();if(this.body.selectionEnabled()&&this.recordIsEnabled(_3,_6))
+{this.selection.selectOnMouseDown(this,_3,_6);this.selection.selectOnMouseUp(this,_3,_6)}}
+else if(_2==this.$12b)this.$319(_3);else if(_2==this.$306)this.$32a(_3)}
+this.scrollRecordIntoView(_3)
+return false}
+,isc.A.$32b=function isc_ListGrid__getKeyboardClickNum(){var _1=this.keyboardClickField;if(_1==null)return 0;if(isc.isA.Number(_1)&&_1>0&&_1<this.fields.length)return _1;var _2=this.fields.find(this.fieldIdProperty,_1),_3=(_2?this.fields.indexOf(_2):0);return _3}
+,isc.A.$319=function isc_ListGrid__generateRecordClick(_1){this.clearLastHilite();if(isc.isAn.Object(_1))_1=this.getRecordIndex(_1);if(!isc.isA.Number(_1)||_1<0)_1=0;if(_1>=this.data.getLength())_1=this.data.getLength()-1;this.body.$31p=_1;var _2=this.$32b();var _3=(this.body.selectionEnabled()&&this.recordIsEnabled(_1,_2));if(_3)this.body.selectOnMouseDown(this,_1,_2);this.rowClick(this.getCellRecord(_1,_2),_1,_2,true);if(_3)this.body.selectOnMouseUp(this,_1,_2);return false}
+,isc.A.getFocusRow=function isc_ListGrid_getFocusRow(_1){if(this.body.$31p!=null&&((this.body.$31p==this.body.lastOverRow)||(this.body.$31p==this.$31q)))
+{return this.body.$31p}
+delete this.body.$31p;var _2=this.getSelection();if(_2.length==0)return null;_2=_2[(_1?_2.length-1:0)]
+return this.getRecordIndex(_2)}
+,isc.A.getFocusCell=function isc_ListGrid_getFocusCell(){return[this.getFocusRow(),this.$32b()]}
+,isc.A.$240=function isc_ListGrid__generateFocusRecordClick(){var _1=this.getFocusRow();if(_1!=null){this.$319(_1);return false}
+return true}
+,isc.A.$32a=function isc_ListGrid__generateRecordDoubleClick(_1){var _2=this.$32b();this.rowDoubleClick(this.getCellRecord(_1,_2),_1,_2,true)}
+,isc.A.$241=function isc_ListGrid__generateFocusRecordDoubleClick(){var _1=this.$32b(),_2=this.getFocusRow();if(_2!=null){this.$32a(_2);return false}
+return true}
+,isc.A.scrollRecordToTop=function isc_ListGrid_scrollRecordToTop(_1){return this.scrollRecordIntoView(_1,false)}
+,isc.A.scrollRecordIntoView=function isc_ListGrid_scrollRecordIntoView(_1,_2){return this.scrollCellIntoView(_1,null,_2)}
+,isc.A.scrollColumnIntoView=function isc_ListGrid_scrollColumnIntoView(_1,_2){return this.scrollCellIntoView(null,_1,_2)}
+,isc.A.scrollToRow=function isc_ListGrid_scrollToRow(_1){this.scrollCellIntoView(_1,0);return this}
+,isc.A.scrollCellCallback=function isc_ListGrid_scrollCellCallback(_1,_2,_3,_4,_5){if(_5==this.$77o){this.$77o=null;this.scrollCellIntoView(_1,_2,_3,_4)}}
+,isc.A.scrollCellIntoView=function isc_ListGrid_scrollCellIntoView(_1,_2,_3,_4){if((isc.isAn.Array(this.data)&&this.data.length==0&&this.dataSource)||(isc.ResultSet&&isc.isA.ResultSet(this.data)&&!this.data.lengthIsKnown())){if(!this.$77o)this.$77o=1;else this.$77o+=1;var _5=this.$77o;isc.Page.waitFor(this,"dataArrived",{method:this.scrollCellCallback,args:[_1,_2,_3,_4,_5],target:this});return}
+if(!this.body||!this.body.isDrawn()){this.logInfo("scrollCellIntoView() called before the body has been drawn. Cell "+_1+","+_2+" will scrolled into view on draw().");this.$30d=[_1,_2];return}
+if(_3==null)_3=true;var x,y,_8,_9,_10=this.body;if(_1!=null){if(!_10.$60s){y=_10.getRowTop(_1);_9=_10.getRowSize(_1)}else{var _11=_10.$252==null||_1<_10.$252||_1>_10.$253,_12=!_11;if(_12){var _13=_10.getRowTop(_1),_14=_10.getRowHeight?_10.getRowHeight(this.getCellRecord(_1),_1):_10.cellHeight,_15=_10.getScrollTop();if(_15>_13||((_10.getViewportHeight()+_15)<(_13+_14)))
+{_12=false}}
+if(!_12){_10.$27y=_1;if(_3){_10.$27z=-1*((_10.getViewportHeight()/2)-_10.cellHeight)}else{_10.$27z=0}
+_10.$270()}
+return}}
+if(_2!=null){if(this.frozenFields!=null&&_2<this.frozenFields.length){_2=null}else{x=this.getColumnLeft(_2);_8=this.getColumnWidth(_2)}}
+if(this.isDirty()||this.body.isDirty()){var _16;if(_1!=null){var _17=_10.getScrollHeight();if(y+_9>_17)_16=true}
+if(!_16&&_2!=null){var _18=_10.getScrollWidth();if(x+_8>_18)_16=true}
+if(_16)this.redraw("scrollIntoView")}
+_10.scrollIntoView(x,y,_8,_9,(_3?"center":"left"),(_3?"center":"top"),null,null,_4)}
+,isc.A.bodyScrolled=function isc_ListGrid_bodyScrolled(_1,_2,_3){if(_3){this.body.$80h=true;var _4=this.frozenBody;if(_4.$274){this.body.$27y=_4.$27y;this.body.$27z=_4.$27z;this.body.$271=_4.$271;this.body.$270()}else{this.body.scrollTo(null,_2,"scrollSync")}
+delete this.body.$80h
+return}
+if(this.frozenBody!=null){this.frozenBody.$80h=true;var _5=this.body,_4=this.frozenBody;if(_5.$274){_4.$27y=_5.$27y;_4.$27z=_5.$27z;_4.$271=_5.$271;_4.$270()}else{_4.scrollTo(null,_2,"bodyScrollSync")}
+delete this.frozenBody.$80h}
+this.syncHeaderScrolling(_1,_2);this.syncFilterEditorScrolling(_1,_2);this.syncSummaryRowScrolling(_1,_2);if(this.$30a&&this.$519){var _6=this.getEditForm(),_7=this.getEditRow(),_8=this.getEditCol(),_9=_6.getItem(this.getEditorName(_7,_8));if(_9){if(!_9.hasFocus&&(_6.hasFocus||isc.EH.getFocusCanvas()==null))
+{this.$518(_8)}else{delete this.$519}}}}
+,isc.A.syncHeaderScrolling=function isc_ListGrid_syncHeaderScrolling(_1,_2){if(_1!=null&&this.header){if(!this.isRTL()){if(_1!=this.header.getScrollLeft())this.header.scrollTo(_1,null,"headerScrollSync")}else{var _3=this.header,_4=this.body,_5=_3.getScrollWidth()-_3.getViewportWidth(),_6=_5-_3.getScrollLeft(),_7=_4.getScrollWidth()-_4.getViewportWidth(),_8=_7-_1;if(_8!=_6){_3.scrollTo(_5-_8,null,"scrollSync")}}}}
+,isc.A.headerScrolled=function isc_ListGrid_headerScrolled(){if(!this.$32c){this.$32c=this.delayCall("syncBodyScrolling")}}
+,isc.A.syncBodyScrolling=function isc_ListGrid_syncBodyScrolling(){delete this.$32c;var _1=this.header.getScrollLeft();if(this.body){if(!this.isRTL()){if(_1!=this.body.getScrollLeft())this.body.scrollTo(_1,null,"scrollSync")}else{var _2=this.header,_3=this.body,_4=_2.getScrollWidth()-_2.getViewportWidth(),_5=_4-_2.getScrollLeft(),_6=_3.getScrollWidth()-_3.getViewportWidth(),_7=_6-_1;if(_7!=_5){_3.scrollTo(_6-_5,null,"scrollSync")}}}}
+,isc.A.syncFilterEditorScrolling=function isc_ListGrid_syncFilterEditorScrolling(_1,_2){if(this.filterEditor!=null&&this.filterEditor.body!=null&&this.filterEditor.body.getScrollLeft()!=_1)
+{this.filterEditor.body.scrollTo(_1,null,"scrollSync")}}
+,isc.A.syncSummaryRowScrolling=function isc_ListGrid_syncSummaryRowScrolling(_1,_2){if(this.summaryRow!=null&&this.showGridSummary&&this.summaryRow.body!=null&&this.summaryRow.body.getScrollLeft()!=_1)
+{this.summaryRow.body.scrollTo(_1,null,"scrollSync")}}
+,isc.A.$88=function isc_ListGrid__hiliteRecord(_1){if(!isc.isA.Number(_1)){_1=this.getRecordIndex(_1)}
+if(!isc.isA.Number(_1)||_1<0)_1=0;if(_1>=this.data.getLength())_1=this.data.getLength()-1;this.clearLastHilite();this.body.$31p=_1;this.body.lastOverRow=_1;this.body.lastOverCol=0;this.bodies.map("setRowStyle",_1)}
+,isc.A.clearLastHilite=function isc_ListGrid_clearLastHilite(){if(!this.body)return;this.body.$31p=null;var _1=this.body.lastOverRow;if(isc.isA.Number(_1)){delete this.body.lastOverRow;if(this.showRollOver)this.body.updateRollOver(_1)}}
+,isc.A.setAccessKey=function isc_ListGrid_setAccessKey(_1){this.Super("setAccessKey",arguments)
+if(this.body!=null)this.body.setAccessKey(_1)}
+,isc.A.setFocus=function isc_ListGrid_setFocus(_1){if(this.body!=null)this.body.setFocus(_1)}
+,isc.A.focusAtEnd=function isc_ListGrid_focusAtEnd(_1){if(!this.$90d){this.$90d=true;var _2=false;var _3=isc.EH.getFocusCanvas();if(this.contains(_3)||(isc.isA.DynamicForm(_3)&&(_3.grid==this||this.contains(_3.grid))))
+{_2=true}
+if(_2)this.$kf(_1);this.$90d=false;if(_2)return}
+if(_1)this.members[0].focusAtEnd(_1);else this.members.last().focusAtEnd(_1)}
+,isc.A.$kk=function isc_ListGrid__canFocus(){if(this.body)return this.body.$kk();return false}
+,isc.A.recordClick=function isc_ListGrid_recordClick(){}
+,isc.A.recordDoubleClick=function isc_ListGrid_recordDoubleClick(){}
+,isc.A.setShowGridSummary=function isc_ListGrid_setShowGridSummary(_1){if(this.showGridSummary==_1)return;this.showGridSummary=_1;if(this.showGridSummary){this.showSummaryRow()}else{this.clearSummaryRow()}}
+,isc.A.recalculateSummaries=function isc_ListGrid_recalculateSummaries(_1,_2){_2=(_2!=null?_2:true);this.calculateRecordSummaries(_1,_2,true);this.$855(_2)}
+,isc.A.$855=function isc_ListGrid__recalculateSummaries(_1){if(this.showGridSummary&&this.summaryRow!=null&&_1!=false){this.summaryRow.$855()}
+if(this.showGroupSummary){this.refreshGroupSummary()}}
+,isc.A.recalculateGridSummary=function isc_ListGrid_recalculateGridSummary(){if(this.showGridSummary&&this.summaryRow!=null){this.summaryRow.$855()}}
+,isc.A.shouldShowGridSummary=function isc_ListGrid_shouldShowGridSummary(_1){if(_1.showGridSummary!=null)return _1.showGridSummary;return(_1.getGridSummary!=null||this.getGridSummaryFunction(_1)!=null)}
+,isc.A.getGridSummaryFunction=function isc_ListGrid_getGridSummaryFunction(_1){if(!_1)return;var _2=_1.summaryFunction||isc.SimpleType.getDefaultSummaryFunction(_1.type);return _2}
+,isc.A.getGridSummary=function isc_ListGrid_getGridSummary(_1){if(!_1||!this.data||(isc.isA.ResultSet(this.data)&&!this.data.lengthIsKnown()))
+return;var _2=this.getOriginalData(),_3=isc.ResultSet&&isc.isA.ResultSet(_2),_4=isc.isA.Tree(_2);if(_4){_2=_2.getDescendants(_2.getRoot());_3=isc.ResultSet&&isc.isA.ResultSet(_2)}
+if(_3&&!_2.allMatchingRowsCached()){this.logWarn("Unable to show summary values - dataset not completely loaded");return}
+var _5=_3?_2.getRange(0,_2.getLength()):_2;var _6=this.getAllEditRows();if(_6!=null&&_6.length>0){_5=_5.duplicate();for(var i=0;i<_5.length;i++){var _8=_5[i];var _9=this.getEditSessionRowNum(_8);if(_9!=null)_5[i]=this.getEditedRecord(_9,null,true)}}
+if(_1.getGridSummary){var _10;if(this.isGrouped&&this.showGroupSummary&&(this.groupTree!=null)){_10=this.assembleGroupSummaries()}
+return _1.getGridSummary(_5,_1,_10)}
+return this.getSummaryValue(_5,_1)}
+,isc.A.getSummaryRowDataSource=function isc_ListGrid_getSummaryRowDataSource(){return this.summaryRowDataSource}
+,isc.A.getSummaryRowCriteria=function isc_ListGrid_getSummaryRowCriteria(){if(this.summaryRowCriteria!=null)return this.summaryRowCriteria;var _1=this.getOriginalData();if(isc.ResultSet&&isc.isA.ResultSet(_1)){return this.data.getCriteria()}
+return this.getInitialCriteria()}
+,isc.A.getSummaryRowFetchRequestConfig=function isc_ListGrid_getSummaryRowFetchRequestConfig(){return isc.addProperties({textMatchStyle:this.autoFetchTextMatchStyle,showPrompt:false,startRow:0,endRow:1},this.summaryRowFetchRequestDefaults,this.summaryRowFetchRequestProperties)}
+,isc.A.getGridSummaryData=function isc_ListGrid_getGridSummaryData(_1){if(this.$84c&&!_1)return this.$84c;var _2=this.completeFields||this.fields,_3=[];for(var i=0;i<_2.length;i++){var _5=_2[i],_6=_2[i].name;if(!this.shouldShowGridSummary(_5))continue;var _7=this.getGridSummary(_5);if(!isc.isAn.Array(_7)){_7=[_7]}
+for(var _8=0;_8<_7.length;_8++){if(_3[_8]==null){_3[_8]={};_3[_8][this.gridSummaryRecordProperty]=true;_3[_8][this.recordCanSelectProperty]=false}
+_3[_8][_6]=_7[_8]}}
+this.$84c=_3;return _3}
+,isc.A.getGroupSummaryData=function isc_ListGrid_getGroupSummaryData(_1,_2){var _3=[];for(var i=0;i<this.fields.getLength();i++){var _5=this.getField(i),_6=_5.name,_7;if(this.shouldShowGroupSummary(_5)){_7=this.getGroupSummary(_1,_5,_2);if(!isc.isAn.Array(_7))_7=[_7];for(var _8=0;_8<_7.length;_8++){var _9=_3[_8];if(_9==null){_9=_3[_8]={};_9.customStyle=this.groupSummaryStyle;_9[this.recordEnabledProperty]=false;_9[this.includeInSummaryProperty]=false;_9[this.groupSummaryRecordProperty]=true}
+var _10=_7[_8];if(_10==null){_10=this.invalidSummaryValue}else{if(_5.formatGroupSummary){if(isc.isA.String(_5.formatGroupSummary)){_5.formatGroupSummary=isc.Func.expressionToFunction("value",_5.formatGroupSummary)}
+_10=_5.formatGroupSummary(_10)}else{var _11=this.getGridSummaryFunction(_5);if(!isc.isAn.Array(_11))_11=[_11];if(_11[_8]=="count"){var _12=_5.pluralTitle;if(_12==null)_12=_5.title;if(_12!=null)_10+=" "+_12}}}
+_9[_6]=_10}}}
+return _3}
+,isc.A.assembleGroupSummaries=function isc_ListGrid_assembleGroupSummaries(_1,_2){var _3=this.groupTree;if(!_1)_1=_3.getRoot();if(!_2)_2=[];var _4=_3.getFolders(_1);for(var i=0;i<_4.length;i++){var _6=_4[i];if(this.groupByFieldSummaries==null||this.groupByFieldSummaries.contains(_6.groupName))
+{var _7=_3.combineWithEditVals(_3.getRecordsInGroup(_6));var _8=this.getGroupSummaryData(_7,_6);for(var _9=0;_9<_8.length;_9++){var _10=isc.addProperties({},_8[_9]);delete _10.customStyle;delete _10[this.recordEnabledProperty];delete _10[this.includeInSummaryProperty];_10.groupName=_6.groupName;_10.groupValue=_6.groupValue;_2.add(_10)}}
+this.assembleGroupSummaries(_4[i],_2)}
+return _2}
+,isc.A.getSummaryValue=function isc_ListGrid_getSummaryValue(_1,_2){var _3=[];for(var i=0;i<_1.length;i++){var _5=_1[i];if(!_5||(_5[this.includeInSummaryProperty]==false))continue;_3[_3.length]=_5}
+var _6=this.getGridSummaryFunction(_2);if(_6!=null){if(!isc.isAn.Array(_6)){_6=[_6]}
+var _7=[];for(var i=0;i<_6.length;i++){var _8=_6[i];if(_8!=null){_7[i]=isc.SimpleType.applySummaryFunction(_3,_2,_8)}}
+return _7}
+return null}
+,isc.A.shouldShowGroupSummary=function isc_ListGrid_shouldShowGroupSummary(_1){if(_1.showGroupSummary!=null)return _1.showGroupSummary;return(_1.getGroupSummary!=null||this.getGridSummaryFunction(_1)!=null)}
+,isc.A.getGroupSummary=function isc_ListGrid_getGroupSummary(_1,_2,_3){var _4;if(_2.getGroupSummary!=null){_4=_2.getGroupSummary(_1,_2,_3)}else{_4=this.getSummaryValue(_1,_2)}
+return _4}
+,isc.A.getRecordSummary=function isc_ListGrid_getRecordSummary(_1,_2){var _3=isc.isAn.Object(_1)?_1:this.getEditedRecord(_1);if(_2.getRecordSummary!=null){return _2.getRecordSummary(_3,_2)}
+var _4=[],_5=this.fields;for(var i=0;i<_5.length;i++){var _7=_5[i];if(_7.name==_2.name){if(_2.partialSummary)break;continue}
+var _8=_7.includeInRecordSummary;if(_8==null&&(_7.type=="integer"||_7.type=="float")){_8=true}
+if(_8&&_7.includeInRecordSummaryFields!=null){if((isc.isA.String(_7.includeInRecordSummaryFields)&&_7.includeInRecordSummaryFields!=_2.name)||(isc.isAn.Array(_7.includeInRecordSummaryFields)&&!_7.includeInRecordSummaryFields.contains(_2.name)))
+{_8=false}}
+if(_8){_4.add(_7)}}
+var _9=_2.recordSummaryFunction||"sum";var _10=isc.DataSource.applyRecordSummaryFunction(_9,_3,_4,_2);return _10}
+,isc.A.shouldApplyRecordSummaryToRecord=function isc_ListGrid_shouldApplyRecordSummaryToRecord(_1){return _1&&(_1.type==this.$71t)&&(_1.summaryFunction!=null||_1.getGroupSummary!=null)}
+,isc.A.calculateRecordSummaries=function isc_ListGrid_calculateRecordSummaries(_1,_2,_3){if(!this.fields)return;if(_1==null){_1=this.getOriginalData()}
+if(_1==null||(isc.isA.ResultSet(_1)&&!_1.lengthIsKnown()))
+return;var _4=false;var _5=[];for(var i=0;i<this.fields.length;i++){var _7=this.getField(i);if(this.shouldApplyRecordSummaryToRecord(_7)){_5.add(_7)}}
+if(_5.length>0){for(var i=0;i<_1.getLength();i++){var _8=_1.get(i),_9=this.getEditValues(_8),_10=_9?isc.addProperties({},_8,_9):_8;if(_8==null)continue;for(var _11=0;_11<_5.length;_11++){var _7=_5[_11];if(!this.shouldShowRecordSummary(_7,_8))continue;var _12=_8[_7.name];var _13=this.getRecordSummary(_10,_7);_8[_7.name]=_13;if(!this.fieldValuesAreEqual(_7,_12,_13)){_4=true}}}}
+if((_3||_4)&&!_2){if(!this.isDirty())this.markForRedraw();if(this.showGridSummary&&this.summaryRow)this.summaryRow.$855()}}
+,isc.A.getSummaryRow=function isc_ListGrid_getSummaryRow(){if(!this.summaryRow){var _1=this.getSummaryRowDataSource();var _2;if(this.completeFields)_2=this.completeFields.duplicate();else if(this.fields)_2=this.fields.duplicate();var _3=this.summaryRowHeight;this.summaryRow=this.createAutoChild("summaryRow",{warnOnReusedFields:false,autoDraw:false,width:"100%",height:_3,autoFitData:"vertical",bodyOverflow:"hidden",showHeader:false,getBaseStyle:function(){return this.creator.summaryRowStyle},alternateRecordStyles:false,disabled:this.disabled,$67b:function(){},$31s:function(_10){return false},dataSource:_1,data:_1==null?this.getGridSummaryData():null,$855:function(){var _4=this.creator,_5=_4.data;if(!_4.fields||(isc.isA.ResultSet(_5)&&!_5.lengthIsKnown()))return;if(this.dataSource!=null){var _6=_4.getSummaryRowCriteria(),_7=isc.ResultSet&&isc.isA.ResultSet(this.data)&&!this.data.willFetchData(_6);this.fetchData(_6,null,_4.getSummaryRowFetchRequestConfig());if(_7)this.invalidateCache()}else{this.setData(_4.getGridSummaryData(true))}},fieldSourceGrid:this,fields:_2,skipAutoFitWidths:true,getFieldWidths:function(){return this.creator.getFieldWidths()},$315:function(_10,_11,_12,_13,_14){var _4=this.creator;if(_4.shouldShowGridSummary(_12)){if(_10==null)return this.invalidSummaryValue;if(_12.formatGridSummary){if(!isc.isA.Function(_12.formatGridSummary)){_12.formatGridSummary=isc.Func.expressionToFunction("value",_12.formatGridSummary)}
+if(isc.isA.Function(_12.formatGridSummary)){return _12.formatGridSummary(_10)}}else{var _8=this.creator.getGridSummaryFunction(_12);if(!isc.isAn.Array(_8)){_8=[_8]}
+if(_8[_13]=="count"){var _9=_12.pluralTitle;if(_9==null)_9=_12.title;if(_9!=null)_10+=" "+_9;return _10}}
+return this.Super("$315",arguments)}
+return this.Super("$315",arguments)},$92s:true})}else{this.summaryRow.setDataSource(this.getSummaryRowDataSource(),this.completeFields.duplicate());this.summaryRow.$855()}
+return this.summaryRow}
+,isc.A.showSummaryRow=function isc_ListGrid_showSummaryRow(){var _1=this.gridComponents.indexOf("summaryRow");if(_1==-1){this.logWarn("showGridSummary set to true, but gridComponents array does not include an "+"entry for the summary row - not showing.");return}
+this.updateGridComponents()
+this.syncSummaryRowScrolling(this.body.getScrollLeft(),this.body.getScrollTop)}
+,isc.A.clearSummaryRow=function isc_ListGrid_clearSummaryRow(){if(this.summaryRow&&this.summaryRow.parentElement==this){this.removeMember(this.summaryRow)}}
+,isc.A.setShowFilterEditor=function isc_ListGrid_setShowFilterEditor(_1){if(this.showFilterEditor==_1)return;this.showFilterEditor=_1;if(_1){var _2=this.gridComponents.indexOf("filterEditor");if(_2==-1){_1=false;this.logWarn("setShowFilterEditor(true) called, but gridComponents array does not "+"include the filterEditor. FilterEditor will not be shown.")}}
+if(_1){if(this.isDrawn()){this.updateGridComponents()}}else if(this.filterEditor){this.filterEditor.destroy();this.filterEditor=null}
+this.layoutChildren()}
+,isc.A.makeFilterEditor=function isc_ListGrid_makeFilterEditor(){var _1=isc.addProperties({autoDraw:false,warnOnReusedFields:false,$67b:function(){},height:this.filterEditorHeight,disabled:this.disabled,sourceWidget:this,ID:this.getID()+"filterEditor",_generated:true,fieldShouldBeVisible:function(_2,_3){return this.sourceWidget.fieldShouldBeVisible(_2,_3)},fieldSourceGrid:this,actionType:"filter",actionButtonPrompt:this.filterButtonPrompt,actionButtonProperties:this.filterButtonProperties,fetchDelay:this.fetchDelay,allowFilterExpressions:this.allowFilterExpressions,expressionDataSource:this.getDataSource()},this.filterEditorDefaults,this.filterEditorProperties);if(_1.bodyDefaults==null)_1.bodyDefaults={};_1.bodyDefaults.focusChanged=function(_2){if(_2)this.parentElement.startEditing()}
+this.filterEditor=isc.RecordEditor.create(_1)}
+,isc.A.onBodyKeyPress=function isc_ListGrid_onBodyKeyPress(){}
+,isc.A.getFilterEditorValueMap=function isc_ListGrid_getFilterEditorValueMap(_1){return _1.filterEditorValueMap||_1.valueMap}
+,isc.A.getFilterEditorType=function isc_ListGrid_getFilterEditorType(_1){if(_1.filterEditorType!=null)return _1.filterEditorType;if(isc.SimpleType.inheritsFrom(_1.type,"date")&&this.getDataSource()&&this.getDataSource().supportsAdvancedCriteria())
+{return"MiniDateRangeItem"}
+var _2=isc.addProperties({},_1,{canEdit:_1.canFilter!==false,length:null});if(_2._constructor!=null)delete _2._constructor;if(_1.filterEditorType!=null)_2.editorType=_1.filterEditorType;isc.addProperties(_2,_1.filterEditorProperties);var _3=isc.DynamicForm.getEditorType(_2,this);return _3}
+,isc.A.getFilterEditorProperties=function isc_ListGrid_getFilterEditorProperties(_1){var _2=_1.filterEditorProperties||{};if(_1.filterOperator)_2.operator=_1.filterOperator;return _2}
+,isc.A.getFilterEditor=function isc_ListGrid_getFilterEditor(){return this.filterEditor}
+,isc.A.setFilterEditorCriteria=function isc_ListGrid_setFilterEditorCriteria(_1){if(this.filterEditor){this.setFilterValues(_1)}}
+,isc.A.getFilterEditorCriteria=function isc_ListGrid_getFilterEditorCriteria(_1){if(this.filterEditor){if(!_1||!this.filterEditor.getEditForm()){return this.filterEditor.getValuesAsCriteria(this.autoFetchTextMatchStyle)}else{var _2=this.filterEditor.getEditForm().getItems(),_3=true,_4={},_5={operator:"and",criteria:[]};for(var i=0;i<_2.length;i++){if(_2[i].hasAdvancedCriteria()){var _7=_2[i].getCriterion();if(_7!=null){_3=false;_5.criteria.add(_7)}}else{var _8=_2[i].getValue();if(_8!=null){_4[_2[i].getFieldName()]=_8}}}
+if(!_3){_4=isc.DataSource.combineCriteria(_4,_5)}
+return _4}}}
+,isc.A.setCriteria=function isc_ListGrid_setCriteria(_1){if(this.filterEditor!=null){this.setFilterValues(_1)}
+return this.Super("setCriteria",arguments)}
+,isc.A.setFilterValues=function isc_ListGrid_setFilterValues(_1){this.$32d=isc.addProperties({},_1);this.updateFilterEditor()}
+,isc.A.updateFilterEditor=function isc_ListGrid_updateFilterEditor(){var _1=this.filterEditor;if(!_1)return;var _2=this.$32e();this.filterEditor.setValuesAsCriteria(_2,true)}
+,isc.A.$32e=function isc_ListGrid__getFilterEditorValues(){var _1=isc.addProperties({},this.$32d);if(this.updateFilterEditorValues!=null){_1=this.updateFilterEditorValues(_1,this.autoFetchTextMatchStyle)}
+if(_1==null){_1={};for(var i=0;i<this.completeFields.length;i++){_1[this.completeFields[i].name]=this.completeFields[i].defaultFilterValue}}
+return _1}
+,isc.A.clearFilterValues=function isc_ListGrid_clearFilterValues(){this.$32d=null;this.updateFilterEditor()}
+,isc.A.handleFilterEditorSubmit=function isc_ListGrid_handleFilterEditorSubmit(_1,_2){if(this.filterEditorSubmit!=null&&this.filterEditorSubmit(_1)==false)return;this.filterData(_1,null,_2)}
+,isc.A.getInitialCriteria=function isc_ListGrid_getInitialCriteria(){var _1={},_2,_3=this.getFields(),_4;for(var i=0;i<_3.length;i++){if(_3[i].defaultFilterValue!==_4){_2=true;var _6=this.getFieldName(_3[i]);_1[_6]=_3[i].defaultFilterValue}}
+if(!_2){_1=this.initialCriteria||this.getCriteria()}else{isc.addProperties(_1,this.initialCriteria||this.getCriteria())}
+return _1}
+,isc.A.$v6=function isc_ListGrid__adjustSpecialPeers(_1){if(this.filterEditor!=null)this.filterEditor.setZIndex(_1-1);return this.Super("$v6",arguments)}
+,isc.A.canEditCell=function isc_ListGrid_canEditCell(_1,_2){if(_2<0||_2>=this.fields.length)return false;var _3=this.getCellRecord(_1,_2);if(_3!=null){if(!this.recordIsEnabled(_1,_2))return false;if(this.$32o==_3)return false}
+var _4=this.getField(_2);if(_4&&_4.disabled)return false;if(_4&&_4.type=="summary")return false;if(!this.isEditable()||this.getCellBooleanProperty("canEdit",_1,_2,(_3!=null?this.recordEditProperty:null))==false){return false}
+return true}
+,isc.A.isEditable=function isc_ListGrid_isEditable(){if(this.canEdit==false)return false;if(this.canEdit==true||this.canEdit==this.$18q){var _1=this.getFields()||[];for(var i=0;i<_1.length;i++){if(_1[i].canEdit!=false)return true}
+return false}else{var _1=this.getFields()||[];for(var i=0;i<_1.length;i++){if(_1[i].canEdit==true)return true}
+return false}}
+,isc.A.setCanEdit=function isc_ListGrid_setCanEdit(_1){if(_1==false){if(this.getEditRow()!=null)this.cancelEditing(isc.ListGrid.PROGRAMMATIC);this.canEdit=false}else{this.canEdit=_1}}
+,isc.A.setFieldCanEdit=function isc_ListGrid_setFieldCanEdit(_1,_2){if(isc.isA.String(_1))_1=this.getField(_1);if(_1==null||!this.completeFields.contains(_1)||_1.canEdit==_2)return;_1.canEdit=_2;if(this.$30a){var _3=this.getEditRow(),_4=_1[this.fieldIdProperty],_5=this.getColNum(_1);if(this.editByCell){if(!_2&&_5==this.getEditCol()){this.cancelEditing(isc.ListGrid.PROGRAMMATIC)}}else if(_5>=0){if(!_2&&_5==this.getEditCol()){var _6=this.$286.getItem(_4),_7=_6.hasFocus;var _8=this.findNextEditCell(_3,_5,-1,true,false,false,true);if(_8==null||_8[0]!=_3)
+_8=this.findNextEditCell(_3,_5,1,true,false,false,true);if(_8==null||_8[0]!=_3){this.cancelEditing(isc.ListGrid.PROGRAMMATIC);return}
+this.startEditing(_8[0],_8[1],!_7)}
+this.refreshCell(this.getEditRow(),_5)}}}
+,isc.A.handleEditCellEvent=function isc_ListGrid_handleEditCellEvent(_1,_2,_3,_4){if(_3==this.$51l)this.$51k=true;else delete this.$51k
+if(_1<0||_2<0)return false;if(this.editByCell){if(!this.canEditCell(_1,_2))return false}else{var _5=this.findNextEditCell(_1,_2,-1,true,true,false,true);if(_5==null||_5[0]!=_1)
+_5=this.findNextEditCell(_1,_2,1,true,false,false,true);if(_5==null||_5[0]!=_1)return false;_2=_5[1]}
+var _6;if(_4!==_6){this.setEditValue(_1,_2,_4)}
+return this.startEditing(_1,_2,null,_3)}
+,isc.A.startEditing=function isc_ListGrid_startEditing(_1,_2,_3,_4,_5){if(!this.canEdit&&!(this.completeFields||this.fields).getProperty("canEdit").or()){this.canEdit=true}
+if(this.completeFields==null)this.setFields(this.fields);var _6=(_1==null),_7=(_2==null);if(_6||_7){var _8=(_6?0:_1),_9=(_7?0:_2);var _10=this.findNextEditCell(_8,_9,1,_7,true);if(_10==null){this.logInfo("startEditing() passed bad cell coordinates:"+[_1,_2],"gridEdit")}else{this.logInfo("startEditing() using derived coordinates:"+_10,"gridEdit");_1=_10[0];_2=_10[1]}}
+if(_1==null||_1<0||_1>this.getTotalRows()){if(!_5){this.logWarn("startEditing() passed bad cell coordinates:"+[_1,_2]+", can't edit"+this.getStackTrace(),"gridEdit")}
+return false}
+if(!this.canEditCell(_1,_2)){this.logInfo("startEditing(): cell "+[_1,_2]+" is non editable. Returning.","gridEdit");return false}
+if(this.$30a){this.$32f((_4||isc.ListGrid.PROGRAMMATIC),this.getEditRow(),this.getEditCol(),_1,_2)}else{this.$31u(_1,_2,_3)}
+return true}
+);isc.evalBoundary;isc.B.push(isc.A.$32f=function isc_ListGrid__changeEditCell(_1,_2,_3,_4,_5){var _6=this.getEditValue(_2,_3);var _7=this.getFieldName(_3),_8=this.$286,_9=_8?_8.getItem(_7):null,_10=_9?!_9.$30w:true;if(_9){delete _9.$30w;delete _9.$30v;if(this.$32g(_9,_2,_4,_5)){this.$32h(_9,_3)}}
+var _11=(_4!=_2),_12=this.$300(_2,_3);if(_10){var _13=!this.$32i(_1,_2,_3,_6);if(_11&&!_13){_13=!this.$32j(_1,_2,_12)}
+if(_13){if(_1==isc.ListGrid.EDIT_FIELD_CHANGE){var _14=this.getFieldName(_5);if(_9&&_8.getItem(_14).hasFocus){_9.focusInItem()}}
+return false}}
+var _15=(this.autoSaveEdits&&((_11&&this.shouldSaveOnRowExit(_2,_3,_1))||this.shouldSaveOnCellExit(_2,_3,_1)));if(!_15&&this.$32k()){var _16,_17=_11&&this.shouldValidateByRow(_2,_3,_1);if(_17&&!this.usingCellRecords){_16=!this.validateRow(_2)}else{if(_17||this.shouldValidateByCell(_2,_3,_1))
+{_16=!this.validateCell(_2,_3)}}
+if(this.stopOnErrors&&_16)return false}
+if(_15){return this.$32l(_4,_5,_1)}else{this.$31u(_4,_5)}
+if(_11&&this.isGrouped&&(!_15||!this.shouldSaveLocally())){this.$75i(_2)}}
+,isc.A.$75i=function isc_ListGrid__updateGroupForEditValueChange(_1){if(!this.isGrouped||!isc.isA.Tree(this.data))return;var _2=this.data.get(_1),_3=_2,_4=false;if(_2==null)return;var _5=this.getGroupByFields();if(!isc.isAn.Array(_5))_5=[_5];var _6=this.getEditedRecord(_1);for(var i=_5.length-1;i>=0;i--){var _8=_5[i],_3=this.data.getParent(_3);if(_3==null||_3.groupName!=_8){this.logWarn("error updating group for edit value change - unexpected group "+"tree structure. Regrouping.");_4=true;break}
+var _9=_6[_8];if(_3.groupValue!=_9){_4=true;break}}
+if(_4){this.regroup();this.$31n();this.markForRedraw()}
+return _4}
+,isc.A.$32g=function isc_ListGrid__shouldParkFocus(_1,_2,_3,_4){if(!isc.Browser.isIE)return false;var _5=(isc.isA.PopUpTextAreaItem(_1)&&_1.$32m&&_1.$21t.hasFocus)||(_1.hasFocus&&isc.FormItem.$12r(_1));if(!this.editByCell&&_3==_2)return false;var _6=this.getEditorType(this.getField(_4),this.getCellRecord(_3,_4));return!(_6==null||isc.FormItem.$12r(_6,true))}
+,isc.A.$31u=function isc_ListGrid__startEditing(_1,_2,_3){if(_1=="delayed"){var _4=this.$32n;if(_4==null)return;_1=_4[0];_2=_4[1];_3=_4[2]}else if(this.isDrawn()&&(!this.body.readyToRedraw()||(this.frozenBody&&!this.frozenBody.readyToRedraw())))
+{if(!this.$32n){this.delayCall("$31u",['delayed'],0)}
+this.$32n=[_1,_2,_3];return}
+delete this.$32n;var _5=this.getEditRow()!=_1;if(!_5&&!_3&&(this.getEditCol()==_2)){this.getEditForm().focusInItem(this.getEditorName(_1,_2));return}
+this.logInfo("Starting editing at row "+_1+", colNum "+_2,"gridEdit");if(this.$32o!=null)this.closeRecord();if(this.$30a){if(this.editByCell||_5){this.hideInlineEditor(false,true)}}
+var _6=(this.$32p==null)||_5||this.saveByCell;if(_6){this.$32p=this.$32q()}
+var _7=this.$30a&&(this.getEditRow()==_1)
+this.initializeEditValues(_1,_2,_7);var _8=this.getCellRecord(_1,_2);if(this.selectOnEdit&&_8!=null)this.selectRecordForEdit(_8);if(this.modalEditing)this.clearLastHilite();if(_8==null&&this.addNewBeforeEditing){this.$285=_1;this.$30u=_2;var _9=this.shouldWaitForSave();var _10="this.$32r("+_9+","+_3+")";this.saveEdits(isc.ListGrid.PROGRAMMATIC,_10);if(_9)return;else{_1=this.$285;_2=this.$30u}}
+this.showInlineEditor(_1,_2,true,_5,_3);return true}
+,isc.A.selectRecordForEdit=function isc_ListGrid_selectRecordForEdit(_1){if(!this.editByCell)_1.$29m=true;if(this.canSelectCells){var _2=this.getRecordCellIndex(_1);this.selection.selectSingleCell(_2[0],_2[1])}else if(this.selection!=null&&(!this.selection.isSelected(_1)||this.selection.multipleSelected())){if(this.selectionType==isc.Selection.NONE){this.logInfo("selectOnEdit is true, but this.selectionType is set to 'none'."+" Unable to perform a selection on edit.","gridEdit")}else if(this.selectionType==isc.Selection.SIMPLE)this.selection.select(_1);else this.selection.selectSingle(_1)}
+delete _1.$29m}
+,isc.A.$51n=function isc_ListGrid__updateEditorSelection(_1){if(!isc.isA.TextItem(_1)&&!isc.isA.TextAreaItem(_1)&&!(isc.isA.DateItem(_1)&&_1.useTextField))return;if(_1.$897)return;var _2=isc.isA.DateItem(_1)?_1.dateTextField.getDataElement():_1.getDataElement();if(!_2)return;if(this.$51m||!this.autoSelectEditors){var _3=_1.getDataElement().value||"";_1.setSelectionRange(_3.length,_3.length);delete this.$51m}else{_2.select()}}
+,isc.A.$32r=function isc_ListGrid__updateNewEditRowValues(_1,_2){var _3=this.$285,_4=this.$30u,_5=this.getCellRecord(_3,_4);if(_5!=null&&_5!="loading"){var _6=this.getEditValues(_3,_4);for(var i in _5){if(_5[i]!=null&&_6[i]==null){_6[i]=_5[i]}}}
+if(_1)this.showInlineEditor(_3,_4,true,true,_2);else this.updateEditRow(_3)}
+,isc.A.editField=function isc_ListGrid_editField(_1,_2){if(this.completeFields==null)this.setFields(this.fields);var _3;if(isc.isA.Number(_1))_3=_1;else _3=this.fields.findIndex(this.fieldIdProperty,_1);if(_2==null){_2=this.getEditRow();if(_2==null){this.logWarn("editField(): unable to determine which row to edit - returning.","gridEdit");return}}
+return this.startEditing(_2,_3)}
+,isc.A.showInlineEditor=function isc_ListGrid_showInlineEditor(_1,_2,_3,_4,_5){if(this.$30a){if(_1!=this.getEditRow()||(this.editByCell&&_2!=this.getEditCol())){this.logWarn("Unexpected call to 'showInlineEditor' during another edit "+"- cancelling previous edit","gridEdit");this.cancelEditing();this.startEditing(_1,_2);return}}
+if(this.$82k&&this.$82k[_1]==_1&&this.$82k[_2]==_2)
+{return}
+this.$82k=[_1,_2];var _6=this.suppressEditScrollIntoView||_5;this.logDebug("showing inline editor at: "+[_1,_2]+", will focus: "+!_5,"gridEdit");var _7=this.body&&(!this.body.shouldShowAllColumns()||!this.body.showAllRows);if(_7&&!_6){var _8=this.body.scrollRedrawDelay;this.body.scrollRedrawDelay=0;this.scrollCellIntoView(_1,_2,false);this.body.scrollRedrawDelay=_8}
+if(this.rollOverCanvas&&this.rollOverCanvas.$289==_1){this.updateRollOverCanvas(this.rollOverCanvas.$289,this.rollOverCanvas.$57n,true)}
+var _9;if(!this.$30a){var _10=this.makeEditForm(_1,_2);if(this.$686()&&_10){this.logInfo("Edit Form rebuilt with alwaysShowEditors:true, requires full redraw","inactiveEditorHTML");_9=true}}
+this.$285=_1;this.$30u=_2;this.$31q=_1;this.$32s(_1,_2,_9);this.$82k=null;if(this.body&&!_6){var _11;if(!_7)_11=true;else{var _12=this.body,_13=_12.getRowTop(_1),_14=_12.getRowSize(_1),_15=_12.getScrollTop(),_16=_12.getViewportHeight();_11=(_13<_15)||(_13+_14>_15+_16)}
+if(_11){this.scrollCellIntoView(_1,_2,false)}}
+if(!this.isDrawn()){return}
+this.$32t();var _17=this.getEditorName(_1,_2),_18=this.$286.getItem(_17);if(_18==null){this.logWarn("ListGrid showing inline editor. Unable to get a pointer to the edit "+"form item for field:"+_17)}else{if(_3)_18.$30w=true;if(_4)_18.$30v=true;if(!_5){if(isc.Browser.isMoz){var _19=this.body.getClipHandle(),_20=_19.scrollTop}
+var _21=isc.EH.lastEvent;var _22=false;if(isc.Browser.isIE&&_21.eventType==isc.EH.MOUSE_DOWN){var _23=_21.target;if(_23!=this.$286){_22=true;var _24=this.$286.getCanvasItemCanvii();for(var i=0;i<_24.length;i++){if(_24[i]==_23||_24[i].contains(_23)){_22=false;break}}}}
+if(isc.Browser.isIE){var _26=isc.ListGrid.$32u;if(_26&&(_26.hasFocus||_26.itemHasFocus()))_22=true}
+if(_22){this.$32v=isc.Timer.setTimeout(this.$286.getID()+".focusInItem('"+_17+"');",0)}else{if(isc.Browser.isMoz&&this.body.overflow==isc.Canvas.VISIBLE){this.adjustOverflow()}
+this.$286.focusInItem(_17)}}}}
+,isc.A.$32s=function isc_ListGrid__showEditForm(_1,_2,_3){var _4=this.$30a;this.$30a=true;if(!this.isDrawn()||!this.body)return;var _5=this.isEmpty()||(!_4&&(_1>=this.data.getLength())&&(this.showNewRecordRow||(this.body.getTableElement(_1)==null)));var _6=this.$686();var _7=this.getCellRecord(_1,_2);if(_7&&_7.$29a!=null&&_7.$29a.length>0){_3=true}
+if(_3||_5||this.body.isDirty()||(this.frozenBody&&this.frozenBody.isDirty())){var _8=this.bodyLayout?this.bodyLayout:this.body;_8.redraw("Showing editor");return}
+if(this.editByCell){var _9=(this.frozenFields!=null)||(this.baseStyle==null);if(_9)this.refreshRow(_1);else this.refreshCell(_1,_2)}else{var _10=this.getDrawnFields();for(var i=0;i<_10.length;i++){if(this.isCheckboxField(_10[i]))continue;var _12=_10[i],_13=_10[i][this.fieldIdProperty],_14=this.$286.getItem(_13),_2=_14.colNum,_15=!!(_4&&_14.isDrawn()),_16=this.canEditCell(_1,_2);if(_15!=_16)this.refreshCell(_1,_2);else if(this.selectOnEdit||this.lastOverRow){var _8=(_12.frozen&&!this.$54d)?this.frozenBody:this.body;_8.$29h(this.getCellRecord(_1,_2),_1,_2)}}}}
+,isc.A.$32t=function isc_ListGrid__showEditClickMask(){if(!this.modalEditing){if(this.canHover)this.stopHover();return}
+if(!this.$286.clickMaskUp()){if(!this.$32w)
+this.$32w=new Function(this.getID()+".$32x()");this.$286.showClickMask(this.$32w,(this.stopOnErrors?isc.EH.SOFT_CANCEL:isc.EH.SOFT),this.$286)}}
+,isc.A.stopHover=function isc_ListGrid_stopHover(){if(this.$30a&&isc.EH.getTarget()==this.getEditForm())return;return this.Super("stopHover",arguments)}
+,isc.A.shouldWaitForSave=function isc_ListGrid_shouldWaitForSave(){if(this.stopOnErrors&&!this.waitForSave){var _1="Note: ListGrid initialized with 'waitForSave' false, and 'stopOnErrors' true."+" In this case user input will be be blocked during save, to allow server side "+" errors to be determined before the editor is hidden. Setting 'waitForSave' to true.";if(this.waitForSave==false)this.logWarn(_1,"gridEdit");else this.logInfo(_1,"gridEdit");this.waitForSave=true}
+return!!(this.waitForSave||this.stopOnErrors)}
+,isc.A.hideInlineEditor=function isc_ListGrid_hideInlineEditor(_1,_2){_1=_1&&(this.hasFocus||(this.body&&this.body.hasFocus)||(this.getEditForm()&&this.getEditForm().hasFocus)||(isc.ListGrid.$32u&&isc.ListGrid.$32u.hasFocus));if(!this.$30a)return false;this.$30a=null;this.$519=null;var _3=this.$285,_4=this.$30u;this.$285=this.$30u=null;if(!_2)this.$286.hideClickMask();if(this.getEditValues(_3,_4)!=null&&(!this.$31o||!this.$31o[this.getEditValuesID(_3,_4)])&&!this.recordHasChanges(_3,_4,false)&&!this.recordMarkedAsRemoved(_3))
+{this.logInfo("hideInlineEditor for row with no edits - dropping edit values","gridEdit");this.$321(_3,_4)}
+if(!this.body)return true;var _5=this.$286;if(_5.hasFocus){_5.blur()}
+if(isc.Browser.isIE){var _6=_5.getFocusSubItem(),_7=isc.EH.$ld;if(_5.hasFocus||(_7&&((_7==_5)||(isc.EH.$ld.form==_5))))
+{_6.elementBlur();this.$32h(_6,_4)}}
+var _8=this.getCellRecord(_3,_4),_9=false;if(_8&&_8.$29a!=null&&_8.$29a.length>0){_9=true}
+if(!this.body.isDirty()&&(!this.bodyLayout||!this.bodyLayout.isDirty())&&!this.isDirty())
+{if(_9||_3>=this.getTotalRows()){var _10=this.bodyLayout||this.body;_10.markForRedraw("Editor Hidden")}else{if(this.editByCell){var _11=(this.frozenFields!=null)||(this.baseStyle==null);if(_11)this.refreshRow(_3);else this.refreshCell(_3,_4)}
+else this.refreshRow(_3);this.refreshGroupSummary(_3)}}
+if(_1){this.$30c=true;this.body.focus()}
+return true}
+,isc.A.$32h=function isc_ListGrid__parkFocus(_1,_2){if(isc.isA.TextItem(_1)||isc.isA.TextAreaItem(_1)||isc.isA.PopUpTextAreaItem(_1))
+{var _3=isc.ListGrid.$32u;if(!_3){_3=isc.ListGrid.$32u=isc.DynamicForm.create({pointersToThis:[{object:isc.ListGrid,property:"$32u"}],getFocusParkItem:function(){return this.getItem(0)},autoDraw:false,_redrawWithParent:false,ID:"$322",_generated:true,selectOnFocus:true,tabIndex:-1,numCols:1,items:[{name:"focusPark",type:"text",showTitle:false,handleKeyPress:function(){return false}}],width:1,height:1,overflow:isc.Canvas.HIDDEN,itemHasFocus:function(){var _4=this.getFocusParkItem();if(_4.hasFocus)return true;if(isc.Browser.isIE&&this.isDrawn()&&this.isVisible()&&(this.getActiveElement()==this.getFocusParkItem().getFocusElement()))
+return true;return false},redraw:function(){var _5=false;if(this.itemHasFocus())_5=true;this.Super("redraw",arguments);if(_5)this.focusInItem(this.getFocusParkItem())}})}
+if(_3.isVisible())_3.hide();_3.moveTo(this.getPageLeft()+(this.getColumnLeft(_2)-this.body.getScrollLeft()),this.getPageTop()+Math.min(((this.showHeader?this.headerHeight:0)+this.getRowTop(this.getEditRow())
+-this.body.getScrollTop()),this.getScrollHeight()-1));_3.sendToBack();_3.show();if(this.$286.clickMaskUp())_3.unmask(this.$286.getID());_3.getFocusParkItem().focusInItem();_1.form.hasFocus=false}}
+,isc.A.makeEditForm=function isc_ListGrid_makeEditForm(_1,_2){var _3=this.getCellRecord(_1,_2),_4=this.getEditDisplayValues(_1,_2),_5;if(this.updateEditorItemsInPlace&&this.$286!=null){_5=true;var _6=this.editByCell?[this.getField(_2)]:this.getDrawnFields();if(_6){if(_6.length!=this.$286.getItems().length){_5=false}else{for(var i=0;i<_6.length;i++){var _8=_6[i],_9=this.getEditorName(_1,_8),_10=this.$286.getItem(_9);if(_10==null||(this.getEditorType(_8,_4)!=this.$286.getEditorType(_10)))
+{_5=false;break}}}}
+if(_5&&_6){var _11=this.getDrawnFieldWidths(_3,_6);for(var i=0;i<_6.length;i++){var _8=_6[i],_12=this.getColNum(_8),_9=this.getEditorName(_1,_8),_10=this.$286.getItem(_9),_3=this.getRecord(_1),_13=this.getEditedRecord(_1),_14=this.getEditItem(_8,_3,_13,_1,_12,_11[i],true);_10.setProperties(_14);_10.$8t=null;if(_8.frozen){_10.containerWidget=this.frozenBody}else{_10.containerWidget=this.body}}}else{var _15=this.getEditRowItems(_3,_1,_2,this.editByCell);this.$286.setItems(_15)}
+this.$286.setValues(_4)}else{var _15=this.getEditRowItems(_3,_1,_2,this.editByCell);var _16=isc.addProperties({},this.editFormDefaults,{grid:this,locatorParent:this,showErrorIcons:this.showErrorIcons,tabIndex:this.getTabIndex(),dataSource:this.dataSource,autoComplete:this.autoComplete,uniqueMatch:this.uniqueMatch,autoFocus:false,items:_15,values:_4},this.editFormProperties);if(this.dateFormatter!=null&&_16.dateFormatter==null){_16.dateFormatter=this.dateFormatter}
+if(this.datetimeFormatter!=null&&_16.datetimeFormatter==null){_16.datetimeFormatter=this.datetimeFormatter}
+if(this.timeFormatter!=null&&_16.timeFormatter==null){_16.timeFormatter=this.timeFormatter}
+this.$286=isc.DynamicForm.create(_16)}
+if(this.logIsDebugEnabled()){this.logDebug("editRowForm created with values: "+this.echo(this.$286.getValues()),"gridEdit")}
+return!_5}
+,isc.A.getEditForm=function isc_ListGrid_getEditForm(){return this.$30a?this.$286:null}
+,isc.A.getEditFormItem=function isc_ListGrid_getEditFormItem(_1){var _2=this.getEditForm();if(!_2)return null;var _3=this.getEditorName(this.getEditRow(),_1),_4=_2.getItem(_3);if(!isc.isA.Number(_1)||(_4&&_4.colNum==_1))return _4}
+,isc.A.getEditFormValue=function isc_ListGrid_getEditFormValue(_1){var _2=this.getEditFormItem(_1);return(_2?_2.getValue():null)}
+,isc.A.$33g=function isc_ListGrid__updateEditItemValues(){if(!this.$286)return;var _1=this.getEditRow(),_2=this.getEditCol(),_3=this.getEditDisplayValues(_1,_2);this.$286.setValues(_3)}
+,isc.A.getEditDisplayValues=function isc_ListGrid_getEditDisplayValues(_1,_2){var _3=this.getEditValues(_1,_2),_4=this.getCellRecord(_1,_2),_5={};for(var _6 in _4){_5[_6]=_4[_6]}
+for(var _6 in _3){_5[_6]=_3[_6]}
+return _5}
+,isc.A.getEditFormItemFieldWidths=function isc_ListGrid_getEditFormItemFieldWidths(_1){var _2=[];for(var i=0;i<this.fields.length;i++){var _4=this.getLocalFieldNum(i),_5=this.fields[i],_6=(!this.$54d&&_5.frozen)?this.frozenBody:this.body;_2[i]=_6.getInnerColumnWidth(_4)}
+return _2}
+,isc.A.getEditorValueMap=function isc_ListGrid_getEditorValueMap(_1,_2){if(_1.getEditorValueMap!=null){isc.Func.replaceWithMethod(_1,"getEditorValueMap","values,field,grid");return _1.getEditorValueMap(_2,_1,this)}
+if(_1.editorValueMap!=null){return _1.editorValueMap}
+if(_1.editorProperties&&_1.editorProperties.valueMap){return _1.editorProperties.valueMap}
+return _1.valueMap}
+,isc.A.getEditorValueIcons=function isc_ListGrid_getEditorValueIcons(_1,_2){return _1.editorValueIcons||_1.valueIcons}
+,isc.A.getEditorValueIconWidth=function isc_ListGrid_getEditorValueIconWidth(_1){if(_1.editorValueIconWidth!=null)return _1.editorValueIconWidth;return(_1.valueIconWidth!=null?_1.valueIconWidth:_1.valueIconSize)}
+,isc.A.getEditorValueIconHeight=function isc_ListGrid_getEditorValueIconHeight(_1){if(_1.editorValueIconHeight!=null)return _1.editorValueIconHeight;return _1.valueIconHeight!=null?_1.valueIconHeight:_1.valueIconSize}
+,isc.A.setEditorValueMap=function isc_ListGrid_setEditorValueMap(_1,_2){var _3=this.getColNum(_1),_4=this.getField(_1),_5=_4[this.fieldIdProperty];_4.editorValueMap=_2;if(this.$30a){var _6=this.getEditRow(),_7=this.getEditedRecord(_6,_3);this.$286.setValueMap(_5,this.getEditorValueMap(_4,_7))}}
+,isc.A.getEditorType=function isc_ListGrid_getEditorType(_1,_2){var _3=isc.addProperties({},_1,_1.editorProperties);return isc.DynamicForm.getEditorType(_3,this)}
+,isc.A.getEditorProperties=function isc_ListGrid_getEditorProperties(_1,_2,_3){return isc.addProperties({},this.editorProperties,_1.editorProperties)}
+,isc.A.getEditRowItems=function isc_ListGrid_getEditRowItems(_1,_2,_3,_4){var _5=this.body;if(_5==null)return[];var _6,_7,_8=[],_9=[];var _10=this.getEditedRecord(_2,_3);var _11;if(_4)_11=[this.getField(_3)]
+else _11=this.getDrawnFields();_8=this.getDrawnFieldWidths(_1,_11);if(_11!=null){for(var i=0;i<_11.length;i++){var _13=this.getColNum(_11[i]);var _14=this.getEditItem(_11[i],_1,_10,_2,_13,_8[i])
+if(_14==null)continue;_9[_9.length]=_14}}
+return _9}
+,isc.A.getDrawnFields=function isc_ListGrid_getDrawnFields(){if(!this.body)return null;var _1=[],_2=this.body;var _3=this.frozenFields,_4=this.freezeLeft();if(_3&&_4){_1.addList(_3)}
+var _5,_6;if((_2.$254==null)||!_2.isDrawn()||_2.isDirty()||_2.$58p){var _7=_2.getDrawArea();_5=_7[2];_6=_7[3]}else{_5=_2.$254;_6=_2.$255}
+if(_3&&_4){_5+=_3.length;_6+=_3.length}
+for(var i=_5;i<=_6;i++){_1.add(this.fields[i])}
+if(_3&&!_4){_1.addList(_3)}
+return _1}
+,isc.A.getDrawnFieldWidths=function isc_ListGrid_getDrawnFieldWidths(_1,_2){if(!_2)_2=this.getDrawnFields();if(!_2)return null;var _3=this.getEditFormItemFieldWidths(_1),_4=[];for(var i=0;i<_2.length;i++){_4[i]=_3[_2[i].masterIndex]}
+return _4}
+,isc.A.$323=function isc_ListGrid__popUpTextAreaItemKeyPress(_1,_2,_3){return this.grid.editorKeyPress(this,_2,_3)}
+,isc.A.$54z=function isc_ListGrid__popUpTextAreaItemKeyDown(_1,_2,_3){return this.grid.editorKeyDown(this,_2,_3)}
+,isc.A.$62k=function isc_ListGrid__popUpTextAreaItemFocus(){var _1=this.form,_2=this.grid,_3,_4,_5,_6;if(_2.$30a){_3=_2.$285;if(!_2.editByCell){_3=_2.$285;_5=this.getFieldName(),_4=_2.fields.findIndex(_2.fieldIdProperty,_5);_6=(_2.$30u!=_4);if(_6){_2.setNewEditCell(_3,_4);_2.cellEditEnd(isc.ListGrid.EDIT_FIELD_CHANGE)}}}}
+,isc.A.$324=function isc_ListGrid__getPopUpTextAreaTop(){var _1=this.grid,_2=this.getFieldName(),_3=_1.getEditRow(),_4=_1.getCellStyle(_1.getRecord(_3),_3,_1.getColNum(_2)),_5=_1.getRowPageTop(_3)+isc.Element.$tn(_4)+isc.Element.$tt(_4);return _5}
+,isc.A.$581=function isc_ListGrid__checkboxClick(_1,_2,_3,_4){if(!this.hasFocus){var _5=this.grid;_5.setNewEditCell(this.rowNum,this.colNum);_5.cellEditEnd(isc.ListGrid.EDIT_FIELD_CHANGE);this.$30w=true}
+return this.invokeSuper("CheckboxItem","handleClick",_1,_2,_3,_4)}
+,isc.A.handleEditorChanged=function isc_ListGrid_handleEditorChanged(_1){var _2=_1.getFieldName(),_3=this.getField(_2),_4;if(_3&&_3.validateOnChange!=null)_4=_3.validateOnChange;else _4=this.validateOnChange;var _5=this.getEditRow();if(_5==null||_5!=_1.rowNum)return;if(_4){this.validateCell(_5,_2,false,true)}else if(!_1.hasFocus&&!this.editByCell){if(_1.isDrawn()&&_1.isVisible()){this.storeUpdatedEditorValue(false,_1.colNum);if(this.saveByCell&&this.autoSaveEdits){var _6=isc.ListGrid.EDIT_FIELD_CHANGE;this.saveEdits(_6,null,_5,_1.colNum)}else if(this.validateByCell)this.validateCell(_5,_2)}}}
+,isc.A.$325=function isc_ListGrid__editorHandleChangedOverride(_1,_2,_3,_4){this.invokeSuper(this.getClassName(),"handleChanged",_1,_2,_3,_4);if(!this.destroyed)this.grid.handleEditorChanged(this)}
+,isc.A.$45p=function isc_ListGrid__editorGetAutoComplete(){var _1=this.grid;if(!_1)return null;var _2=_1.getField(this.getFieldName());if(_2.autoComplete!=null)return _2.autoComplete;if(_1.autoComplete!=null)return _1.autoComplete;return this.Super("$17h",arguments)}
+,isc.A.getEditItem=function isc_ListGrid_getEditItem(_1,_2,_3,_4,_5,_6,_7){var _8={};_8.width=_6;_8.record=_2;_8.rowNum=_4;_8.colNum=_5;_8.getGlobalTabIndex=function(){if(!this.containerWidget)return this.Super("getGlobalTabIndex",arguments);return this.containerWidget.getTabIndex()};var _9=this.getEditorName(_4,_1);_8[this.fieldIdProperty]=_9;if(_1.title!=null)_8.title=_1.title;_8.valueMap=this.getEditorValueMap(_1,_3);if(_1.multiple!=null)_8.multiple=_1.multiple;if(_1.valueField!=null)_8.valueField=_1.valueField
+if(_1.displayField!=null)_8.displayField=_1.displayField
+if(_1.optionDataSource)_8.optionDataSource=_1.optionDataSource
+if(_1.optionFilterContext)_8.optionFilterContext=_1.optionFilterContext
+if(_1.optionCriteria)_8.optionCriteria=_1.optionCriteria
+if(_1.optionOperationId!=null)_8.optionOperationId=_1.optionOperationId;_8.valueIcons=this.getEditorValueIcons(_1,_3);var _10=this.getEditorValueIconWidth(_1),_11=this.getEditorValueIconHeight(_1);if(_10)_8.valueIconWidth=_10;if(_11)_8.valueIconHeight=_11;_8.imageURLPrefix=(_1.editorImageURLPrefix||_1.imageURLPrefix);_8.imageURLSuffix=(_1.editorimageURLSuffix||_1.imageURLSuffix);_8.baseURL=_1.baseURL;_8.imgDir=_1.imgDir;var _12;if(_1.icons!==_12)_8.icons=_1.icons;if(_1.showPickerIcon!==_12)_8.showPickerIcon=_1.showPickerIcon;if(_1.pickerIconSrc!==_12)_8.pickerIconSrc=_1.pickerIconSrc;if(_1.pickerIconWidth!==_12)_8.pickerIconWidth=_1.pickerIconWidth;if(_1.pickerIconHeight!==_12)_8.pickerIconHeight=_1.pickerIconHeight;if(_1.defaultIconSrc!==_12)_8.defaultIconSrc=_1.defaultIconSrc;var _13=(_1.editorIconHeight||_1.iconHeight);if(_13!==_12)_8.iconHeight=_13
+var _14=(_1.editorIconWidth||_1.iconWidth);if(_14!==_12)_8.iconWidth=_14;if(_1.iconPrompt!==_12)_8.iconPrompt=_1.iconPrompt;if(_1.iconHSpace!==_12)_8.iconHSpace=_1.iconHSpace;if(_1.iconVAlign!==_12)_8.iconVAlign=_1.iconVAlign;if(this.showValueIconOnly(_1)){if(_1.editorProperties==null)_1.editorProperties={};_1.editorProperties.showValueIconOnly=true}
+if(_1.pickListWidth!=null)_8.pickListWidth=_1.pickListWidth;if(_1.pickListFields!=null)_8.pickListFields=_1.pickListFields;_8.textAlign=(_1.cellAlign||_1.align);if(_1.editorProperties!=null){for(var i=0;i<this.$31c.length;i++){var _16=this.$31c[i],_17=_1.editorProperties[_16];if(_17!=null&&!isc.isA.Function(_17)){var _18=isc.FormItem._stringMethodRegistry;_1.editorProperties[_16]=_17=isc.Func.expressionToFunction(_18[_16],_17)}
+if(_17!=null)_1.editorProperties[_16]=_17}}
+for(var i=0;i<this.$45k.length;i++){var _16=this.$45k[i];if(_1.editorProperties&&_1.editorProperties[_16]!=null){continue}
+var _17=_1[_16];if(_17!=null){if(_1.editorProperties==null)_1.editorProperties={};if(!isc.isA.Function(_17)){var _18=isc.FormItem._stringMethodRegistry;_17=isc.Func.expressionToFunction(_18[_16],_17)}
+_1.editorProperties[_16]=_17}}
+_8.valueIconLeftPadding=this.getValueIconLeftPadding(_1);_8.valueIconRightPadding=this.getValueIconRightPadding(_1);if(!_7){_8.$17h=this.$45p;_8.autoCompleteCandidates=_1.autoCompleteCandidates;_8.uniqueMatch=_1.uniqueMatch;_8.containerWidget=(!this.$54d&&_1.frozen)?this.frozenBody:this.body;_8.grid=this;_8.handleChanged=this.$325;_8.keyDown=function(_8,_24,_25){return this.form.grid.editorKeyDown(_8,_25)}
+_8.inactiveEditorMouseDown=function(_24,_25){if(_24&&(_24.grid==this.form.grid.getID())&&_24.rowNum!=null&&_24.colNum!=null)
+{this.form.grid.startEditing(_24.rowNum,_24.colNum)}}
+_8.type=_1.type;_8.editorType=this.getEditorType(_1,_2);var _19=_8.editorType;if(_1.dateFormatter!=null)_8.dateFormatter=_1.dateFormatter;if(_1.timeFormatter!=null)_8.timeFormatter=_1.timeFormatter;if(_1.displayFormat!=null)_8.displayFormat=_1.displayFormat;var _20=this.$45j(_1);if(_20)_8.inputFormat=_20;if(this.$308[_19]==true||this.$68k[_19]==true||(_1.type==this.$g4&&_19==null)){_8.editorType=(this.$68k[_19]==true?this.$68l:this.$g4);_8.useTextField=true;_8.cellPadding=0;_8.itemCellStyle=null;_8.pickerIconHSpace=0}
+if(this.$309[_19]==true){_8.getTextBoxStyle=function(){var _21=this.grid,_2=_21.getCellRecord(this.rowNum,this.colNum);this.textBoxStyle=_21.getCellStyle(_2,this.rowNum,this.colNum);return this.Super("getTextBoxStyle",arguments)}
+_8.gridCellStyleChanged=function(_2,_4,_5,_24){var _22=this.$15h();if(_22){_22.className=this.textBoxStyle=_24}}
+_8.textBoxCellCSS=isc.Canvas.$42a
+_8.textAreaKeyDown=this.$54z;_8.textAreaKeyPress=this.$323;_8.getTextAreaTop=this.$324;if(_8.popUpOnEnter==null)_8.popUpOnEnter=true;_8.textAreaFocus=this.$62k}
+if(this.$31a[_19]==true||(_1.type==this.$g2&&_19==null)){if(_8.showLabel==null)_8.showLabel=false;if(_8.handleClick==null){_8.handleClick=this.$581}}
+if(_19=="RichTextItem"||_19=="richText"){if(_8.overflow==null)_8.overflow="auto"}
+_8.elementFocus=this.$30t;_8.canTabToIcons=false;_8.focusInItem=this.$51o;_8.$109=this.$898}
+var _23=this.getEditorProperties(_1,_2,_4);isc.addProperties(_8,_23);return _8}
+,isc.A.$51o=function isc_ListGrid__editFormItem_focusInItem(){this.Super("focusInItem",arguments);this.grid.$51n(this)}
+,isc.A.$898=function isc_ListGrid__editFormItem_refocusAfterRedraw(){this.$897=true;this.Super("$109",arguments);this.$897=false}
+,isc.A.getEditorName=function isc_ListGrid_getEditorName(_1,_2,_3){_2=this.getField(_2);if(!_2)return null;if(_3&&_2.dataPath)return _2.dataPath;return _2[this.fieldIdProperty]}
+,isc.A.refreshCell=function isc_ListGrid_refreshCell(_1,_2,_3,_4){if(_1==null){this.logInfo("ListGrid.refreshCell(): first parameter rowNum not present, returning");return}
+if(!this.isDrawn()||!this.body)return;var _5=this.getFieldBody(_2);if(_5.isDirty()){this.logDebug("refresh cell redrawing body","gridEdit");_5.redraw("refresh cell");return false}
+if(this.$686(this.getField(_2),true)){this.$69l(_1,_2)}
+var _6=this.getLocalFieldNum(_2);_5.refreshCellStyle(_1,_6);if(!_5.shouldRefreshCellHTML()){this.refreshCellValue(_1,_2,_3,_4)}}
+,isc.A.refreshCellValue=function isc_ListGrid_refreshCellValue(_1,_2,_3,_4){if(!this.isDrawn()||!this.body)return;var _5=this.getFieldBody(_2),_6=this.getLocalFieldNum(_2);if(!_5.$29l(_1,_6)){this.delayCall("refreshCellValue",[_1,_2,_3,_4]);return}
+var _7=this.getEditorName(_1,_2),_8=this.getFieldName(_2),_9=this.$286,_10,_11=false,_12,_13;if(_9){var _10=_9.getItem(_7),_14=(this.$30a&&_1==this.getEditRow());if(_10&&_10.colNum!=_2)_10=null;if(_14){_12=(_10&&_10.isDrawn());_13=this.canEditCell(_1,_2);if(_10!=null&&_9.hasFocus){var _15=_9.getFocusSubItem();_11=(_15==_10||(_10.items&&_10.items.contains(_15)))}}else if(_10&&_10.rowNum==_1){_13=false;_12=_10.isDrawn()}}
+if(!_4&&(_11&&_12&&_13))
+{return}
+if(_12){this.getUpdatedEditorValue();if(_10!=null){if(_11){if(_13){_9.$106()}
+else _10.blurItem()}
+if(_13)_10.redrawing()}}
+delete _5.$316;_5.refreshCellValue(_1,_6);if(_10&&(_12||_13)){this.$30b(_10,null,_5);if(_13){_10.setValue(this.getEditDisplayValue(_1,_2));if(_11){_9.$11b(_10)}}}}
+,isc.A.refreshRow=function isc_ListGrid_refreshRow(_1){if(!this.body||!this.isDrawn())return;var _2=this.frozenFields&&this.frozenFields.length>0;if(_2&&!this.frozenBody)_2=false;var _3=false;if(this.body.isDirty())_3=true;if(_2&&!_3){if(this.frozenBody.isDirty()||this.bodyLayout.isDirty())_3=true}
+if(_3){var _4=_2?this.bodyLayout:this.body;return _4.redraw("refresh row")}
+if(this.$30a&&this.$286!=null){this.logInfo("refresh row: "+_1,"gridEdit")}
+if(_2){for(var i=0;i<this.frozenFields.length;i++){this.refreshCell(_1,this.getFieldNum(this.frozenFields[i]),true)}}
+var _6=this.body.$254,_7=this.body.$255;for(var i=_6;i<=_7;i++){var _8=this.getFieldNumFromLocal(i,this.body);this.refreshCell(_1,_8,true)}}
+,isc.A.startEditingNew=function isc_ListGrid_startEditingNew(_1,_2){if(!this.canEdit&&!(this.completeFields||this.fields).getProperty("canEdit").or()){this.canEdit=true}
+if(isc.isAn.Array(this.data)&&this.data.length==0&&this.dataSource&&!this.shouldSaveLocally())
+{this.fetchData(null,null,{$326:true});this.data.setFullLength(0)}
+var _3=this.body?this.body.getTotalRows():this.getTotalRows();if(this.showNewRecordRow)_3-=1;var _4=this.findNextEditCell(_3,0,1,true,true,true);if(_4==null){this.logInfo("startEditingNew() failed to find any editable fields in this grid.","gridEdit");return}
+if(_1!=null)this.setEditValues(_4,isc.addProperties({},_1),true);this.startEditing(_4[0],_4[1],_2)}
+,isc.A.updateEditRow=function isc_ListGrid_updateEditRow(_1){if(this.$285!=_1||!this.$286){return}
+this.$286.setItemValues();delete this.$286.$10u;this.$286.$327=false}
+,isc.A.shouldFixRowHeight=function isc_ListGrid_shouldFixRowHeight(_1,_2){if(this.canEdit!=false&&this.$30a&&_2==this.$285){return false}
+return this.fixedRecordHeights}
+,isc.A.$32q=function isc_ListGrid__getNextEditFlowID(){if(this.$328==null)this.$328=isc.timeStamp();return this.$328++}
+,isc.A.$32x=function isc_ListGrid__handleClickOutsideEditor(){var _1=this.getEditRow();this.cellEditEnd(isc.ListGrid.CLICK_OUTSIDE)}
+,isc.A.getEditDisplayValue=function isc_ListGrid_getEditDisplayValue(_1,_2,_3){var _4;if(_3===_4)_3=this.getCellRecord(_1,_2);var _5=this.$30y(_1,_2);if(_5===_4&&_3!=null){_5=this.getRawCellValue(_3,_1,_2)}
+_5=this.$329(_5,_3,_1,_2);return _5}
+,isc.A.$329=function isc_ListGrid__formatEditorValue(_1,_2,_3,_4){if(_2==null)_2=this.$300(_3,_4);var _5=this.fields[_4];if(_5&&_5.formatEditorValue!=null){isc.Func.replaceWithMethod(_5,"formatEditorValue","value,record,rowNum,colNum,grid");_1=_5.formatEditorValue(_1,_2,_3,_4,this)}else if(this.formatEditorValue!=null){_1=this.formatEditorValue(_1,_2,_3,_4)}
+return _1}
+,isc.A.getEditValuesID=function isc_ListGrid_getEditValuesID(_1){if(_1==null||this.$52b==null)return null;if(isc.isA.String(_1)&&this.$52b[_1]!=null)return _1;if(isc.isA.Number(_1)){return this.$33a[_1]}
+for(var i in this.$52b){var _3=this.$52b[i];if(_3==_1)return i;var _4=_3.$33b;if(_4&&this.comparePrimaryKeys(_4,_1)){return i}}
+return null}
+,isc.A.getEditSession=function isc_ListGrid_getEditSession(_1,_2){if(this.$52b==null)return null;if(!isc.isA.String(_1))_1=this.getEditValuesID(_1,_2);return this.$52b[_1]}
+,isc.A.getEditSessionRowNum=function isc_ListGrid_getEditSessionRowNum(_1){_1=this.getEditSession(_1);return(_1!=null?_1.$24t:null)}
+,isc.A.getEditSessionColNum=function isc_ListGrid_getEditSessionColNum(_1){_1=this.getEditSession(_1);return(_1!=null?_1.$24u:null)}
+,isc.A.getAllEditRows=function isc_ListGrid_getAllEditRows(_1){return this.getAllEditCells(_1,true)}
+,isc.A.getAllEditCells=function isc_ListGrid_getAllEditCells(_1,_2){var _3=this.$52b,_4=[];if(!_3)return _4;if(_1)return isc.getKeys(this.$52b);for(var i in _3){var _6=_3[i].$24t;_6=parseInt(_6);if(_6==null||_6<0||isNaN(_6))continue;if(_2)_4[_4.length]=_6
+else{var _7=_3[i].$24u;if(_7==null){_7=this.$30a&&(_6==this.getEditRow())?this.getEditCol():this.getRowEditColNum(_6)}
+if(_7!=null&&!isc.isA.Number(_7))_7=parseInt(_7);_4[_4.length]=[_6,_7]}}
+return _4}
+,isc.A.getEditValues=function isc_ListGrid_getEditValues(_1,_2){if(_1==null){return this.logWarn("getEditValues() called with no valuesID. "+(this.logIsDebugEnabled("gridEdit")?this.getStackTrace():""))}
+if(_2==null&&isc.isA.Array(_1)){_2=_1[1];_1=_1[0]}
+var _3=(isc.isA.Number(_1)?_1:this.getEditSessionRowNum(_1));if(this.$30a&&(this.getEditRow()==_3)){this.storeUpdatedEditorValue()}
+var _4=isc.addProperties({},this.$300(_1,_2));if(_4!=null){delete _4[this.recordRemovedProperty]}
+return _4}
+,isc.A.$300=function isc_ListGrid__getEditValues(_1,_2){var _3=this.getEditSession(_1,_2);return _3!=null?_3.$31x:null}
+,isc.A.getEditedRecord=function isc_ListGrid_getEditedRecord(_1,_2,_3){if(_1==null)return this.logWarn("getEditedRecord() called with no valuesID");if(!isc.isA.Number(_1)){_1=this.getEditSessionRowNum(_1);_2=this.getEditSessionColNum(_1)}
+var _4=this.getCellRecord(_1,_2),_5=_3?this.$300(_1,_2):this.getEditValues(_1,_2);if(_5!=null){delete _5[this.recordRemovedProperty]}
+return isc.addProperties({},_4,_5)}
+,isc.A.getEditedCell=function isc_ListGrid_getEditedCell(_1,_2){if(_1==null||_2==null)
+return this.logWarn("getEditedCell() called with no record / field parameter");var _3=this.getEditValues(_1,_2),_4=isc.isA.Number(_1)?_1:this.getEditSessionRowNum(_1),_5=isc.isA.Number(_2)?_2:this.getFieldNum(_2),_1=this.getCellRecord(_4,_5);var _6=this.getEditorName(_4,this.getField(_5))
+var _7;if(_3&&_3[_6]!==_7)return _3[_6];return _1?_1[_6]:null}
+,isc.A.rememberSubmittedEditValues=function isc_ListGrid_rememberSubmittedEditValues(_1,_2){var _3=this.getEditSession(_1);if(_3!=null){_3.$33e=isc.addProperties({},_3.$31x)}}
+,isc.A.getSubmittedEditValues=function isc_ListGrid_getSubmittedEditValues(_1,_2){var _3=this.getEditSession(_1,_2);return _3!=null?_3.$33e:null}
+,isc.A.clearSubmittedEditValues=function isc_ListGrid_clearSubmittedEditValues(_1,_2){var _3=this.getEditSession(_1);if(_3==null)return;var _4=_3.$33e;if(!_4)return;for(var _5 in _2){if(_4[_5]==_2[_5])delete _4[_5]}
+if(isc.isA.emptyObject(_4))_3.$33e=null}
+,isc.A.createEditValues=function isc_ListGrid_createEditValues(_1){var _2=this.body.getTotalRows();this.setEditValues(_2,_1);return this.getEditValuesID(_2)}
+,isc.A.initializeEditValues=function isc_ListGrid_initializeEditValues(_1,_2,_3){if(this.$300(_1,_2)==null){this.setEditValues([_1,_2],{},_3)}}
+,isc.A.setEditValues=function isc_ListGrid_setEditValues(_1,_2,_3){var _4;if(isc.isAn.Array(_1)){_4=_1[1];_1=_1[0]}
+if(!isc.isA.Number(_1)){this.logWarn("setEditValues() called with bad rowNum: "+this.echo(_1));return}
+if(_2==null)_2={};var _5,_6,_7=true;if(!_3){var _8=this.getCellRecord(_1,_4);if(_8==null)_8={};else _7=false;_5=this.getEditValues(_1,_4);if(_5!=null)_7=false;_6=isc.addProperties({},_5);for(var i in _6){_6[i]=_8[i]}
+isc.addProperties(_6,_2)}
+if(this.logIsInfoEnabled("gridEdit")){_5=_5||this.getEditValues(_1,_4);if(!_5){this.logInfo("establishing new edit session at row: "+_1+(_4!=null?", col:"+_4:"")+(this.logIsDebugEnabled("gridEdit")?" with values: "+this.echo(_2):""),"gridEdit")}}
+var _10=this.recordMarkedAsRemoved(_1);if(_10)_2[this.recordRemovedProperty]=true;this.$33f(_1,_4,_2);var _11=!isc.isAn.emptyObject(_6);if(_3||!this.isDrawn()||!this.body){if(_11){if(this.summaryRow&&this.showGridSummary)this.summaryRow.$855()}
+return}
+if(_11&&_1<this.data.getLength()){this.calculateRecordSummaries([this.data.get(_1)],true)}
+var _12=(_7||this.body.isDirty());if(_12){var _13=this.isEditingRecord(_1,_4)&&this.$286!=null
+if(_13)this.$33g();this.body.markForRedraw();if(_11&&this.summaryRow&&this.showGridSummary){this.summaryRow.$855()}}else{this.$50r(_1,_4,_6)}}
+);isc.evalBoundary;isc.B.push(isc.A.$50r=function isc_ListGrid__displayNewEditValues(_1,_2,_3,_4){if(!_3||isc.isAn.emptyObject(_3)){return}
+var _5=this.isEditingRecord(_1,_2)&&this.$286!=null
+var _6=false;for(var _7 in _3){var _8=this.getColNum(_7);var _9;if(_5){this.$286.setValue(_7,_3[_7]);var _10=this.$286.getItem(_7);_9=(_8>=0&&_10&&this.canEditCell(_1,_8))}
+if(_8==-1)continue;_6=true;if(!_9){this.refreshCell(_1,_8)}else if(_4&&_4[_7]){this.showCellErrors(_1,_8)}}
+if(_6&&this.summaryRow&&this.showGridSummary){this.summaryRow.$855();this.refreshGroupSummary(_1)}}
+,isc.A.$33f=function isc_ListGrid__storeEditValues(_1,_2,_3,_4){var _5=this.getCellRecord(_1,_2);var _6=this.getEditSession(_1,_2)||this.createEditSession(_1,_2,_5,_4);if(this.dataSource!=null){if(_5=="loading"){_6.$33i=true}else if(_5!=null){var _7=this.getDataSource(),_8=_7.getPrimaryKeyFieldNames();for(var i=0;i<_8.length;i++){_3[_8[i]]=_5[_8[i]]}}}
+if(_5==null){_6.$33i=true;var _10=this.completeFields||this.fields||[],_11;for(var i=0;i<_10.length;i++){var _12=_10[i],_13=_12[this.fieldIdProperty];if(_3[_13]===_11){var _14=this.getDefaultEditValue(_13,_12);if(_14!=null){_3[_13]=_14}}}}
+for(var i in _6.$31x){delete _6.$31x[i]}
+for(var i in _3){_6.$31x[i]=_3[i]}
+if(this.$33j==null||_1>=this.$33j){this.$33j=_1}}
+,isc.A.getDefaultEditValue=function isc_ListGrid_getDefaultEditValue(_1,_2){var _3=_2.defaultValue;if(_3==null&&this.enumCriteriaAsInitialValues&&_2.type=="enum"&&this.$32d!=null&&this.$32d[_1]!=null)
+{_3=this.$32d[_1]}
+return _3}
+,isc.A.createEditSession=function isc_ListGrid_createEditSession(_1,_2,_3,_4){var _5={};if(_3!=null&&_3!=Array.LOADING)
+_5.$33b=this.getPrimaryKeys(_3);_5.$24t=_1;if(this.useCellRecords){_5.$24u=_2;if(this.getCellFacetValues)_5.$507=this.getCellFacetValues(_1,_2)}
+_5.$31x={};if(this.$52b==null)this.$52b={};if(_4==null){if(this.$33k==null)this.$33k=0;_4="_"+this.$33k++}
+this.$52b[_4]=_5;if(this.$33a==null)this.$33a={};this.$33a[_1]=_4;return _5}
+,isc.A.setEditValue=function isc_ListGrid_setEditValue(_1,_2,_3,_4,_5){if(isc.isA.String(_1)){isc.logWarn("Warning: first parameter rowNum is a string, expecting a number");return}
+var _6=isc.isA.String(_2)?_2:this.getEditorName(_1,_2,true);_6=this.$840(_6);if(isc.isA.String(_2))_2=this.getFieldNum(_2);var _7=this.$33l(_1,_2,_6,_3,_5);if(!_7)return;var _8=this.getField(_6);if(_8&&this.$425(_8)){var _9=false,_10;var _11=this.getEditForm(),_12=_11?_11.getItem(_6):null;if(_12&&this.getEditRow()==_1&&this.fieldValuesAreEqual(_8,_11.getValue(_6),_3))
+{_9=true;_10=_12.mapValueToDisplay(_3)}
+if(!_9&&(_8.valueField==null||_8.valueField==_8.name)&&(!_8.optionDataSource||isc.DS.get(_8.optionDataSource)==this.getDataSource()))
+{var _13=this.data;if(isc.ResultSet&&isc.isA.ResultSet(_13))_13=_13.localData;if(_13){var _14=_13.find(_6,_3);if(_14){_9=true;_10=_14[_8.displayField]}}}
+if(_9){this.setEditValue(_1,_8.displayField,_10,_4,true)}else{if(this.warnOnUnmappedValueFieldChange){this.logWarn("Edit value updated for field:"+_6+". This field has 'displayField' attribute specified as '"+_8.displayField+((_8.optionDataSource==null||isc.DataSource.get(_8.optionDataSource)==this.getDataSource())?"', and no unique optionDataSource, ":"', ")+"so display value is derived from the "+"current record. In order to ensure the display value is updated to "+"reflect the new edit-value for this field, developers can explicitly update the "+"edit value for the display-field on this record. To avoid seeing this method "+"set listGrid.warnOnUnmappedValueFieldChange to false.")}}}
+if(_4){if(this.summaryRow&&this.showGridSummary)this.summaryRow.$855();return}
+this.setRowEditFieldName(_1,_6);if(!isc.isA.Number(_1)){_2=this.getEditSessionColNum(_1);_1=this.getEditSessionRowNum(_1)}else if(!isc.isA.Number(_2)){_2=this.getFieldNum(_2)}
+var _15={};_15[_6]=_3;this.$50r(_1,_2,_15)}
+,isc.A.$33l=function isc_ListGrid__storeEditValue(_1,_2,_3,_4,_5){var _6=true,_7=false,_8,_9,_10,_11;_8=this.getEditSession(_1,_2)
+if(_8!=null){_9=_8.$31x;_10=isc.Canvas.$70o(_3,_9,this,true)}else{this.logInfo("creating new edit values for row: "+_1,"gridEdit");this.initializeEditValues(_1,_2,true);_8=this.getEditSession(_1,_2);_9=_8.$31x}
+if(_10===_11){var _12=this.getCellRecord(_1,_2);_10=_12?isc.Canvas.$70o(_3,_12,this,true):null}else _7=true;var _13=this.getField(_3);if(this.fieldValuesAreEqual(_13,_10,_4))_6=false;if(_4===_11){isc.Canvas.$70m(_3,_9,this,true)}else if(_7||_6){isc.Canvas.$70n(_3,_4,_9,this,true)}
+if(_6&&!_5){this.$33m(_1,_2,_4,_10)}
+return _6}
+,isc.A.setRowEditFieldName=function isc_ListGrid_setRowEditFieldName(_1,_2){var _3=this.getEditSession(_1);if(!_3){var _4=this.getColNum(_2);this.setEditValues([_1,_4],null,true);_3=this.getEditSession(_1)}
+if(isc.isA.Number(_2))_2=this.getFieldName(_2);_3.$33n=_2}
+,isc.A.getRowEditFieldName=function isc_ListGrid_getRowEditFieldName(_1){var _2=this.getEditSession(_1);return(_2?_2.$33n:null)}
+,isc.A.getRowEditColNum=function isc_ListGrid_getRowEditColNum(_1){var _2=this.getRowEditFieldName(_1);return _2?this.getColNum(_2):null}
+,isc.A.getEditValue=function isc_ListGrid_getEditValue(_1,_2){var _3=_2
+if(isc.isA.String(_2))_2=this.getColNum(_2);if(this.$30a&&(this.getEditRow()==_1)&&(this.getEditCol()==_2))
+{this.storeUpdatedEditorValue()}
+return this.$30y(_1,_3)}
+,isc.A.$30y=function isc_ListGrid__getEditValue(_1,_2){var _3=this.$300(_1,_2);if(_3==null)return;if(!isc.isA.String(_2))_2=this.getEditorName(_1,_2,true);return isc.Canvas.$70o(this.$840(_2),_3,this)}
+,isc.A.clearEditValue=function isc_ListGrid_clearEditValue(_1,_2,_3,_4){var _5=(isc.isA.Number(_1)?_1:this.getEditSessionRowNum(_1));var _6=_2;if(isc.isA.Number(_6))_6=this.getEditorName(_5,_6);else _2=this.getColNum(_6);if(this.$30a){if(this.getEditRow()==_5&&this.getEditFieldName()==_6){this.storeUpdatedEditorValue(true)}}
+var _7=this.getEditSession(_1,_2);if(_7==null)return;var _8=_7.$31x,_9=false,_10=_7.$33e,_11=_7.$33o,_12=_11&&_11[_6],_5=_7.$24t;if(_8!=null){var _13=this.getRecord(_5);_9=isc.propertyDefined(_8,_6)&&((_5==null||_13==null)||!this.fieldValuesAreEqual(this.getField(_6),_8[_6],_13[_6]));delete _8[_6];if(_10)delete _10[_6];if(_11!=null)delete _11[_6];if(!_4&&isc.isAn.emptyObject(_8)){this.logDebug("no edit values left for row, discarding editSession","gridEdit");return this.$321(_1,_2,_3)}}
+var _14=this.getField(_6);if(_14&&this.$425(_14)&&(_14.displayField!=_6)){this.clearEditValue(_1,_14.displayField,_3,_4)}
+if(_3||_5==null)return;if(_9){var _15;if(this.$30a&&this.getEditRow()==_5){var _16=_13?_13[_6]:null;this.$286.setValue(_6,_16);_15=_2>=0&&this.canEditCell(_5,_2)&&this.$286.getItem(_6)}
+if(_2>=0&&!_15)this.refreshCell(_5,_2)}else if(_12&&_2>=0){if(_12)this.showCellErrors(_5,_2)}}
+,isc.A.$321=function isc_ListGrid__clearEditValues(_1,_2,_3){if(_1==null){return}
+if(!isc.isA.String(_1))_1=this.getEditValuesID(_1,_2);var _4=this.getEditSession(_1);if(_4==null)return;var _5=_4.$24t;if(_5!=null)delete this.$33a[_5];if(_2==null)_2=_4.$24u;var _6=this.$52b[_1];delete this.$52b[_1];var _7=this.$34e();delete this.$33j;if(_5!=null&&_4.$33i){var _8=this.getEditRow();for(var i=_5+1;i<=_7;i++){var _10=this.getEditSession(i);var _11=_10.$24t;_10.$24t=i-1;this.$33a[i-1]=this.$33a[i];delete this.$33a[i]}
+if(_8!=null&&_8>_5)this.$285-=1;if(!_3){if(this.$30a){if(_5==_8)this.hideInlineEditor();else{if(_5<_8)this.$50s(_8-1,null,"Earlier temp edit row removed")}}
+if(this.body){var _12=this.frozenBody!=null?this.bodyLayout:this.body;_12.markForRedraw("clear edit values, remove row")}}}else if(_5!=null&&!_3){var _13={},_14=this.data.get(_5);for(var _15 in _6.$31x){_13[_15]=_14?_14[_15]:null}
+this.$50r(_5,_2,_13,_6.$33o)}}
+,isc.A.newRecordForEditValues=function isc_ListGrid_newRecordForEditValues(_1,_2){var _3=this.getEditSession(_1),_4=_3.$31x;_3.$33b=this.getPrimaryKeys(_2);var _5=this.getDataSource().getPrimaryKeyFieldNames();for(var i=0;i<_5.length;i++){var _7=_5[i];_4[_7]=_2[_7]}
+delete _3.$33i}
+,isc.A.$31n=function isc_ListGrid__remapEditRows(_1){delete this.$33j;delete this.$33q;if(this.$52b==null)return false;var _2=false;var _3=this.getEditRow(),_4=this.getEditCol(),_5=false;var _6=this.data.getLength(),_7={};var _8=isc.getKeys(this.$52b);for(var i=0;i<_8.length;i++){var _10=_8[i],_11=this.$52b[_10];var _12=_11.$24t;var _13=this.$52p(_11,_6);if(_11.$33b==null)_6++;if(_13==null)continue;var _14=_13[0],_15=_13[1];if(_14!=null&&_14>=0){if(_14!=_12)_2=true;if(_3!=null&&_3==_11.$24t&&(!this.useCellRecords||(_4==_11.$24u)))
+{_5=true;if(!_1)this.$50s(_14,_15,"remapEditRows")}
+_7[_14]=_10;_11.$24t=_14;if(this.useCellRecords)_11.$24u=_15}else{if(_12!=null&&_12>=0)_2=true;var _16=this.getOriginalData();var _17=!this.dataSource||this.shouldSaveLocally()||(isc.ResultSet&&isc.isA.ResultSet(_16)&&_16.allRowsCached());if(_17&&!isc.isA.Tree(this.data)&&(!this.isGrouped||!this.data.find(_11.$33b)))
+{this.logWarn("Record:"+this.echo(_11.$33b)+", is no longer present in this List.<br>Clearing edit values for this record.");delete this.$52b[this.getEditValuesID(_10)]}else{this.logWarn("Record:"+this.echo(_11.$33b)+(_17?", hidden in grouped tree data. ":", lost from local cache in paged result set. ")+"Pending edits for this record will be maintained.");delete _11.$24t;delete _11.$24u;this.$33q=true}}}
+this.$33a=_7;if(_3!=null&&!_5&&!_1){this.hideInlineEditor(true)}
+return _2}
+,isc.A.$74c=function isc_ListGrid__remapEmbeddedComponents(){if(!this.body||this.body.$29a==null)return;var _1=this.body.$29a,_2=[];for(var i=0;i<_1.length;i++){var _4=_1[i],_5=_4.embeddedRecord,_6=this.getPrimaryKeys(_5),_7=this.findRowNum(_6),_8;if(_7>=0){_8=this.data.get(_7);if(!_8.$29a)_8.$29a=[];if(!_8.$29a.contains(_4)){_4.$289=_7;_4.embeddedRecord=_8;_8.$29a.add(_4);if(_4.isExpansionComponent){_8.expanded=true
+_8.hasExpansionComponent=true;if(!this.canExpandMultipleRecords)this.$74b=_8}}}else{if(this.$74d==false||(this.showRecordComponents&&this.recordComponentPoolingMode=="data")){_2.add(_4)}}}
+if(_2.length>0){for(var i=0;i<_2.length;i++){var _9=_2[i];if(this.canExpandRecords){this.$74a--;if(this.$74b&&this.$74b==_9.embeddedRecord)
+delete this.$74b}
+this.body.$29a.remove(_9);if(this.shouldDestroyOnUnembed(_9,this.$81l)){_9.markForDestroy()}else{_9.deparent()}}}}
+,isc.A.$75n=function isc_ListGrid__remapEmbeddedComponentColumns(_1){if(_1.$29a==null)return;var _2=_1.$29a,_3={},_4=false;for(var i=0;i<_1.fields.length;i++){_3[_1.fields[i].name]=i}
+var _6=[];for(var i=0;i<_2.length;i++){var _7=_2[i].$81k;if(_7==null){continue}
+var _8=_3[_7];if(_8==null){_6[_6.length]=_2[i]}else{if(_2[i].$57n!=_8){_4=true;_2[i].$57n=_8}}}
+if(_6.length>0){for(var i=0;i<_6.length;i++){var _9=_6[i];_1.removeEmbeddedComponent(_9.embeddedRecord,_9);if(this.shouldDestroyOnUnembed(_9,this.$81p)){_9.markForDestroy()}}}
+if(_4){_1.$29d()}}
+,isc.A.$52p=function isc_ListGrid__calculateEditCell(_1,_2){var _3,_4,_5=_1.$33b;if(_5==null){_3=_2}else{var _6=_1.$31x,_7=false,_8;if(_1.$33o!=null&&!isc.isA.emptyObject(_1._validationErrors_))
+{_7=true}else{for(var _9 in _6){if(_6[_9]!=_5[_9]||_5[_9]===_8){_7=true;break}}}
+if(!_7&&_1.$24t!=null&&!this.isEditingRecord(_1.$24t,_1.$24u))
+{this.logInfo("dropping empty editSession","gridEdit");delete this.$52b[this.getEditValuesID(_1)];return null}
+_3=this.findRowNum(_5,_1);_4=this.findColNum(_5,_1)}
+return[_3,_4]}
+,isc.A.$wo=function isc_ListGrid__filter(_1,_2,_3,_4,_5){if(!_5&&this.confirmDiscardEdits&&this.dataSource!=null){var _6=this.getOriginalData();if(this.hasChanges()&&!(isc.ResultSet&&isc.isA.ResultSet(_6)&&_6.compareCriteria(_2,_6.getCriteria())==0))
+{this.showLostEditsConfirmation({target:this,methodName:"$33r"},{target:this,methodName:"$33s"});this.$33t={type:_1,criteria:_2,callback:_3,requestProperties:_4}
+return}}
+var _7=_2
+if(isc.isA.Class(_7)){_7=isc.DynamicForm.getFilterCriteria(_7)}
+this.setFilterValues(_7);return this.Super("$wo",[_1,_2,_3,_4],arguments)}
+,isc.A.$33r=function isc_ListGrid__continueFilter(){var _1=this.$33t,_2=_1.type,_3=_1.criteria,_4=_1.callback,_5=_1.requestProperties;delete this.$33t;this.$wo(_2,_3,_4,_5,true)}
+,isc.A.$33s=function isc_ListGrid__cancelFilter(){delete this.$33t}
+,isc.A.showLostEditsConfirmation=function isc_ListGrid_showLostEditsConfirmation(_1,_2){this.$33u=_1;this.$33v=_2;isc.confirm(this.confirmDiscardEditsMessage,"if(window[this.targetGridID])window[this.targetGridID].lostEditsCallback(value, this);",{targetGridID:this.getID(),buttons:[isc.Dialog.OK,{title:this.discardEditsSaveButtonTitle,width:75,click:"this.hide();this.topElement.returnValue('save');"},isc.Dialog.CANCEL]})}
+,isc.A.lostEditsCallback=function isc_ListGrid_lostEditsCallback(_1,_2){var _3=this.$33u,_4=this.$33v;delete this.$33u;delete this.$33v;if(_1==null){this.fireCallback(_4)}else if(_1==true){this.discardAllEdits();this.fireCallback(_3)}else if(_1=="save"){this.saveAllEdits(null,_3)}
+_2.targetGrid=null}
+,isc.A.findRowNum=function isc_ListGrid_findRowNum(_1){return this.data.indexOf(_1)}
+,isc.A.findColNum=function isc_ListGrid_findColNum(_1){return-1}
+,isc.A.$50s=function isc_ListGrid__moveEditor(_1,_2,_3){if(!this.$30a||_1==this.$285){return}
+var _4=this.$285;this.logInfo(_3+": editSession: "+this.getEditValuesID(_1)+" with values: "+this.echo(this.$300(_1,_2))+" was being edited at row: "+_4+", will now edit at row: "+_1,"gridEdit");this.$285=_1;var _5=this.$286,_6=_5?_5.getItems():null;if(_6){for(var i=0;i<_6.length;i++){_6[i].rowNum=_1}}}
+,isc.A.rowEditNotComplete=function isc_ListGrid_rowEditNotComplete(_1){return(this.$33a!=null&&this.$33a[_1]!=null)}
+,isc.A.$33m=function isc_ListGrid__editorChange(_1,_2,_3,_4){var _5=this.getCellRecord(_1,_2);if(this.editorChange!=null)this.editorChange(_5,_3,_4,_1,_2);var _6=this.getFieldName(_2);if(this.editValueChanged!=null)
+this.editValueChanged(_1,_6,_3,_4);if(this.$30a&&this.isEditingRecord(_1,_2)&&this.fields!=null){_5=isc.addProperties({},this.$300(_1,_2),_5);var _7=!this.editByCell?this.fields:[this.getEditField()];for(var i=0;i<_7.length;i++){var _9=_7[i],_10=this.$286.getItem(_9[this.fieldIdProperty]);if(_10==null)continue;var _11=this.getEditorValueMap(_9,this.getEditedRecord(_1,_2,true));if(_10.valueMap!=_11){var _12=true;if(isc.isAn.Array(_11)&&isc.isAn.Array(_10.valueMap)){_12=!_11.equals(_10.valueMap)}else if(isc.isAn.Object(_11)&&isc.isAn.Object(_10.valueMap)){if(isc.getKeys(_11).equals(isc.getKeys(_10.valueMap))){_12=false;for(var _13 in _11){if(_11[_13]!=_10.valueMap[_13]){_12=true;break}}}}
+if(_12)_10.setValueMap(_11)}}}}
+,isc.A.getEditRow=function isc_ListGrid_getEditRow(){return this.$285}
+,isc.A.getEditCol=function isc_ListGrid_getEditCol(){return this.$30u}
+,isc.A.getEditField=function isc_ListGrid_getEditField(){return this.getField(this.getEditCol())}
+,isc.A.getEditFieldName=function isc_ListGrid_getEditFieldName(){return this.getFieldName(this.getEditCol())}
+,isc.A.getEditRecord=function isc_ListGrid_getEditRecord(){return this.getCellRecord(this.getEditRow(),this.getEditCol())}
+,isc.A.cancelEditing=function isc_ListGrid_cancelEditing(_1){if(!this.$30a)return;this.discardEdits(this.getEditRow(),this.getEditCol(),false,_1)}
+,isc.A.cellEditEnd=function isc_ListGrid_cellEditEnd(_1,_2){if(this.$51k&&_1!=isc.ListGrid.TAB_KEYPRESS&&_1!=isc.ListGrid.SHIFT_TAB_KEYPRESS&&_1!=isc.ListGrid.UP_ARROW_KEYPRESS&&_1!=isc.ListGrid.DOWN_ARROW_KEYPRESS&&_1!=isc.ListGrid.LEFT_ARROW_KEYPRESS&&_1!=isc.ListGrid.RIGHT_ARROW_KEYPRESS)delete this.$51k
+var _3=this.getEditRow(),_4=this.getEditCol();if(_3==null&&_4==null)return;if(arguments.length>=2){this.setEditValue(_3,_4,_2)}
+var _5=this.getFieldName(_4),_6=this.shouldCancelEdit(_3,_4,_1);if(_6)return this.cancelEditing(_1);var _7=this.getNextEditCell(_3,_4,_1);this.clearNewEditCell();if(_7==null){this.logInfo("cellEditEnd: ending editing, completion event: "+_1,"gridEdit");this.$33x(_1);return}
+if(Array.isLoading(this.getCellRecord(_7[0],_7[1]))){return false}
+this.$32f(_1,_3,_4,_7[0],_7[1])}
+,isc.A.getUpdatedEditorValue=function isc_ListGrid_getUpdatedEditorValue(){if(!this.$30a)return;var _1=this.$286.getItem(this.getEditFieldName()),_2=this.getEditField(),_3;if(_1){if(_1.$10v())_1.updateValue();_3=_1.getValue();return this.$33y(_3,_2,this.getEditRow(),this.getEditCol())}else{return this.getEditDisplayValue(this.getEditRow(),this.getEditCol())}}
+,isc.A.storeUpdatedEditorValue=function isc_ListGrid_storeUpdatedEditorValue(_1,_2){if(!this.isDrawn()||!this.$30a)return;var _3=this.getEditRow();if(_2==null)_2=this.getEditCol();var _4=this.getField(_2),_5=this.$286,_6=this.getEditFormItem(_2),_7;if(_6){if(_6.$10v())_6.updateValue();_7=this.$33y(_6.getValue(),_4,_3,_2);var _8;if(_7===_8)_7=null;var _9=this.$30y(_3,_2),_10;if(_9===_10||!this.fieldValuesAreEqual(_4,_9,_7)){this.setEditValue(_3,_2,_7,true,_1)}}}
+,isc.A.$32i=function isc_ListGrid__handleEditorExit(_1,_2,_3,_4){var _5=this.getCellRecord(_2,_3),_6=this.getField(_3),_7=this.getEditorName(_2,_6),_8=true;var _9=this.$286.getItem(_7);if(isc.isA.PopUpTextAreaItem(_9))_9.hidePopUp();if(_6&&_6.editorExit!=null){isc.Func.replaceWithMethod(_6,"editorExit","editCompletionEvent,record,newValue,rowNum,colNum,grid");_8=(_6.editorExit(_1,_5,_4,_2,_3,this)
+!=false)}
+if(_8&&this.editorExit!=null)
+_8=this.editorExit(_1,_5,_4,_2,_3)!=false;return _8}
+,isc.A.$32j=function isc_ListGrid__handleRowEditorExit(_1,_2,_3){var _4=this.getRecord(_2);if(this.rowEditorExit!=null)
+return(this.rowEditorExit(_1,_4,_3,_2)!=false);return true}
+,isc.A.$30x=function isc_ListGrid__handleEditorEnter(_1,_2,_3,_4){var _5=this.getCellRecord(_2,_3),_6=this.getFieldName(_3),_7=this.getField(_3),_8=true;if(isc.isA.PopUpTextAreaItem(_1)&&_1.popUpOnEnter){_1.showPopUp(true)}
+if(_7&&_7.editorEnter!=null){isc.Func.replaceWithMethod(_7,"editorEnter","record,value,rowNum,colNum,grid");_8=_7.editorEnter(_5,_4,_2,_3,this)!=false}
+if(_8&&this.editorEnter!=null)
+_8=this.editorEnter(_5,_4,_2,_3)!=false;return _8}
+,isc.A.$30z=function isc_ListGrid__handleRowEditorEnter(_1,_2,_3){var _4=this.getRecord(_2);if(this.rowEditorEnter!=null)
+return this.rowEditorEnter(_4,_3,_2)!=false;return true}
+,isc.A.$32k=function isc_ListGrid__validationEnabled(){if(!isc.DS)return false;var _1=isc.DS.get(this.dataSource);return!this.neverValidate&&!(_1&&_1.useLocalValidators!=null&&_1.useLocalValidators==false)}
+,isc.A.shouldSaveOnCellExit=function isc_ListGrid_shouldSaveOnCellExit(_1,_2){if(this.getCellRecord(_1,_2)==null)return false;return(this.saveByCell!=null?this.saveByCell:this.editByCell)}
+,isc.A.shouldSaveOnRowExit=function isc_ListGrid_shouldSaveOnRowExit(_1,_2,_3){return true}
+,isc.A.shouldValidateByCell=function isc_ListGrid_shouldValidateByCell(_1,_2,_3){var _4=this.getField(_2);if(_4&&_4.validateByCell!=null)return _4.validateByCell;return(this.validateByCell!=null?this.validateByCell:this.editByCell)}
+,isc.A.shouldValidateByRow=function isc_ListGrid_shouldValidateByRow(_1,_2,_3){return this.autoValidate}
+,isc.A.shouldCancelEdit=function isc_ListGrid_shouldCancelEdit(_1,_2,_3){if(_3==isc.ListGrid.ESCAPE_KEYPRESS){var _4=this.getField(_2),_5=_4.escapeKeyEditAction||this.escapeKeyEditAction;if(_5=="cancel")return true}
+return false}
+,isc.A.$33w=function isc_ListGrid__killEdit(_1,_2,_3){if(this.$32p!=_1)return;if(this.confirmCancelEditing){if(_3==null){var _4=this.getID()+".$33w('"+_1+"','"+_2+"',value);";isc.ask(this.cancelEditingConfirmationMessage,_4);var _5=isc.Dialog.Warn.toolbar.getButton(0);if(_5.isDrawn())_5.focus()
+else isc.Timer.setTimeout({target:_5,methodName:"focus"},0);return}else if(_3==false)return}
+var _6=this.getEditRow(),_7=this.getEditCol(),_8=this.getUpdatedEditorValue(),_9=this.getEditValues(_6,_7);if(!this.$32i(_2,_6,_7,_8)||!this.$32j(_2,_6,_9))
+{return}
+var _10,_11=[],_12=this.$285,_13=this.getEditValues(_12,_7),_14=this.body?this.body.getDrawArea():[null,null,1,0],_15=_14[2],_16=_14[3],_17;if(_13!=null){if(this.isNewEditRecord(_12,_7)){if(this.isDrawn())this.body.markForRedraw("clearing extra edit row");_10=true}else{for(var i=_15;i<=_16;i++){if(_13[this.getFieldName(i)]!==_17&&((this.editByCell&&this.$30u!=i)||!this.canEditCell(_12,i)))
+{_11.add(i)}}}
+this.$321(this.$285,_7,true);if(this.isGrouped&&this.$75i(_12)){_10=true}}
+if(this.body){this.hideInlineEditor(true);if(this.isDrawn()){if(!_10){for(var i=0;i<_11.length;i++){this.refreshCell(_12,_11[i])}}}}}
+,isc.A.isNewEditRecord=function isc_ListGrid_isNewEditRecord(_1){var _2=this.getEditSession(_1);return _2&&_2.$33i}
+,isc.A.endEditing=function isc_ListGrid_endEditing(){if(this.getEditRow()!=null)this.$33x(isc.ListGrid.PROGRAMMATIC)}
+,isc.A.$33x=function isc_ListGrid__saveAndHideEditor(_1){if(this.$686()){this.saveEdits(_1);return}
+var _2=this.getEditRow(),_3=this.getEditCol(),_4=this.getEditValue(_2,_3),_5=this.getEditValues(_2,_3);if(!this.$32i(_1,_2,_3,_4)||!this.$32j(_1,_2,_5))return;var _6=(this.autoSaveEdits&&this.shouldWaitForSave()),_7=(this.autoSaveEdits&&this.stopOnErrors),_8;if(_6)_8="if((success||!this.stopOnErrors)&&"+"(this.$32p=="+this.$32p+"))"+"this.hideInlineEditor(true);";var _9=_1==isc.ListGrid.ESCAPE_KEYPRESS,_10=this.autoSaveEdits&&!_9;if(_10){this.saveEdits(_1,_8)}else{var _11=this.getFieldName(_3);var _12=!_9&&this.$32k()&&(this.shouldValidateByCell(_2,_3,_1)||this.shouldValidateByRow(_2,_3,_1));if(_12){var _13;if(this.useCellRecords){_13=!this.validateCell(_2,_3)}else{_13=!this.validateRow(_2)}
+if(this.stopOnErrors&&_13)return false}
+if(!this.rowHasChanges(_2,false)){this.logInfo("editor hiding at "+[_2,_3]+", no actual changes, dropping editSession","gridEdit");this.$321(_2,_3)}}
+if(!_6)this.hideInlineEditor(true);if(this.isGrouped&&(!_10||!this.shouldSaveLocally())){this.$75i(_2)}}
+,isc.A.saveAndEditNewCell=function isc_ListGrid_saveAndEditNewCell(_1,_2,_3){if(_3==null)_3=isc.ListGrid.PROGRAMMATIC;this.$32l(_1,_2,_3)}
+,isc.A.$32l=function isc_ListGrid__saveAndStartEditing(_1,_2,_3){var _4=this.shouldWaitForSave(),_5;if(_4){_5="if((success||!this.stopOnErrors)&&"+"(this.$32p=="+this.$32p+"))"+"this.$31u("+_1+","+_2+");"}
+this.saveEdits(_3,_5);if(!_4){this.$31u(_1,_2)}}
+,isc.A.$33z=function isc_ListGrid__saveAndEditNextCell(_1,_2){var _3=this.getEditRow(),_4=this.getEditCol(),_5=isc.ListGrid.PROGRAMMATIC,_6=this.findNextEditCell(_3,_4,_1,_2,false);this.$32l(_6[0],_6[1],_5)}
+,isc.A.saveAndEditNextCell=function isc_ListGrid_saveAndEditNextCell(){this.$33z(1,true)}
+,isc.A.saveAndEditPreviousCell=function isc_ListGrid_saveAndEditPreviousCell(){this.$33z(-1,true)}
+,isc.A.saveAndEditNextRow=function isc_ListGrid_saveAndEditNextRow(){this.$33z(1,false)}
+,isc.A.saveAndEditPreviousRow=function isc_ListGrid_saveAndEditPreviousRow(){this.$33z(-1,false)}
+,isc.A.getNextEditCell=function isc_ListGrid_getNextEditCell(_1,_2,_3){switch(_3){case isc.ListGrid.CLICK_OUTSIDE:case isc.ListGrid.ESCAPE_KEYPRESS:return null;case isc.ListGrid.ENTER_KEYPRESS:var _4=this.getField(_2),_5=_4.enterKeyEditAction||this.enterKeyEditAction;if(_5=="done")return null;else if(_5=="nextCell")
+return this.findNextEditCell(_1,_2,1,true,false);else if(_5=="nextRow")
+return this.findNextEditCell(_1,_2,1,false,false);else if(_5=="nextRowStart"){var _6=this.listEndEditAction||"done";if(_1+1<this.getTotalRows()||_6=="next"){return this.findNextEditCell(_1+1,0,1,true,true)}else{if(_6=="stop")return[_1,_2];return null}}
+case isc.ListGrid.EDIT_FIELD_CHANGE:case isc.ListGrid.PROGRAMMATIC:return this.getNewEditCell();case isc.ListGrid.UP_ARROW_KEYPRESS:return this.findNextEditCell(_1,_2,-1,false,false);case isc.ListGrid.DOWN_ARROW_KEYPRESS:return this.findNextEditCell(_1,_2,1,false,false);case isc.ListGrid.TAB_KEYPRESS:case isc.ListGrid.RIGHT_ARROW_KEYPRESS:var _4=this.getField(_2);if(_4.nextTabColNum!=null){return this.findNextEditCell(_1+1,_4.nextTabColNum,1,true,true)}else{return this.findNextEditCell(_1,_2,1,true,false)}
+case isc.ListGrid.SHIFT_TAB_KEYPRESS:case isc.ListGrid.LEFT_ARROW_KEYPRESS:var _4=this.getField(_2)
+if(_4.previousTabColNum!=null){return this.findNextEditCell(_1-1,_4.previousTabColNum,-1,true,true)}else
+return this.findNextEditCell(_1,_2,-1,true,false)}
+this.logWarn("getNextEditCell(): Passed unrecognized editCompletionEvent type:"+_3+", returning null");return null}
+,isc.A.findNextEditCell=function isc_ListGrid_findNextEditCell(_1,_2,_3,_4,_5,_6,_7,_8){var _9=_1,_10=_2,_11,_12=this.getFields().length;if(_12==0)return;_11=(_7?_9:(this.listEndEditAction=="next"||_6)?this.getTotalRows():this.getTotalRows()-1);if(_9>this.getTotalRows())_11=_9;if((_5!=false||_3==0)&&_9<=_11&&_9>=0&&_10<_12&&_10>=0&&this.canEditCell(_9,_10)&&(_8||this.$60w(_9,_10)))
+{return[_9,_10]}
+if(_3==0)return null;var _13=this.canEditCell(_9,_10)&&this.$60w(_9,_10),_14=_7?_9:0;if(_4){var _15=this.rowEndEditAction||"next";while(_9<(_11+1)&&_9>=_14){if(isc.ResultSet&&isc.isA.ResultSet(this.data)){if(_9<this.data.getLength()&&!this.data.rowIsLoaded(_9))return null}
+_10+=_3;if(_15=="same"&&_2==_10){return _13?[_1,_2]:null}
+if(_10<0||_10>=_12){if(_15=="done"||isc.isA.RecordEditor(this))return null;if(_15=="stop")return(_13?[_1,_2]:null)
+else{_10=(_3>0?-1:_12);if(_15=="next")_9+=_3}}else if(this.canEditCell(_9,_10)&&(_8||this.$60w(_9,_10)))
+{return[_9,_10]}}
+if(this.listEndEditAction=="stop"||(this.listEndEditAction=="next"&&_9<_14))
+{if(_13)return[_1,_2];else return null}else{return null}}else{_9+=_3
+while(_9>=_14&&_9<=_11){if(this.canEditCell(_9,_10)&&(_8||this.$60w(_9,_10))){return[_9,_10]}
+_9+=_3}
+if(this.listEndEditAction=="stop"||(this.listEndEditAction=="next"&&_9<_14))
+{return _13?[_1,_2]:null}
+return null}}
+,isc.A.$60w=function isc_ListGrid__canFocusInEditor(_1,_2){var _3=this.getFieldName(_2),_4=this.$286;if(_4==null){this.makeEditForm(_1,_2);_4=this.$286}
+var _5=_4?_4.getItem(_3):null;if(_5)return _5.$kk();var _6=this.getField(_3);if(_6.canFocus!=null)return _6.canFocus;var _7=this.getEditorType(_6,this.getEditedRecord(_1));_7=isc.FormItemFactory.getItemClassName(_6,_7,null,true);var _8=_7=isc.FormItemFactory.getItemClass(_7);return _8?_8.getPrototype().$kk():false}
+,isc.A.setNewEditCell=function isc_ListGrid_setNewEditCell(_1,_2){this.$330=[_1,_2]}
+,isc.A.getNewEditCell=function isc_ListGrid_getNewEditCell(){if(this.canEditCell(this.$330[0],this.$330[1]))return this.$330;return null}
+,isc.A.clearNewEditCell=function isc_ListGrid_clearNewEditCell(){this.$330=null}
+,isc.A.discardAllEdits=function isc_ListGrid_discardAllEdits(_1,_2){if(_1==null)_1=this.getAllEditRows(true);else{for(var i=0;i<_1.length;i++){if(isc.isA.Array(_1[i]))_1[i]=this.getEditValuesID(_1[i][0],_1[i][1]);if(isc.isA.Number(_1[i]))_1[i]=this.getEditValuesID(_1[i])}}
+if(_1==null)return;for(var i=0;i<_1.length;i++)this.discardEdits(_1[i],null,_2)}
+,isc.A.discardEdits=function isc_ListGrid_discardEdits(_1,_2,_3,_4){if(_1==null)return;var _5;if(isc.isA.Number(_1)){_5=this.getEditValuesID(_1,_2)}else{_5=_1;_1=this.getEditSessionRowNum(_5,_2)}
+var _6=this.recordMarkedAsRemoved(_1);if(!_3&&this.$686()&&(!(this.getTotalRows()==1&&_1==0)))
+{this.logInfo("Refusing to hide editor on 'discardEdits' [editCompletionEvent:"+_4+"] due to alwaysShowEditors settings","inactiveEditorHTML");_3=true}
+if(!_3&&this.$30a&&this.getEditRow()==_1){if(_4==null)_4=isc.ListGrid.PROGRAMMATIC;return this.$33w(this.$32p,_4)}else{if(this.$30a&&this.getEditRow()==_1){this.storeUpdatedEditorValue(true)}
+this.$321(_5,_2)}
+if(_6)this.refreshRow(_1)}
+,isc.A.saveEdits=function isc_ListGrid_saveEdits(_1,_2,_3,_4,_5,_6){if(_1==null)_1=isc.ListGrid.PROGRAMMATIC;if(_3==null){_3=this.getEditRow()
+_4=this.getEditCol()}else if(_4==null){_4=(_3==this.getEditRow()?this.getEditCol():this.getRowEditColNum(_3))}
+if(_3==null)return false;if(this.recordMarkedAsRemoved(_3)){if(_5){return true}
+var _7=this.isNewEditRecord(_3,_4);if(_7){this.discardEdits(_3);this.$332(_2,_3,_4,_1,true)}else{var _8=this;var _9=function(_18,_19,_20){_8.fireCallback(_2,"rowNum,colNum,editCompletionEvent,success",[_3,_4,_1,true])};this.removeData(this.getCellRecord(_3,_4),_9);return}}
+var _10=this.getEditValues(_3,_4),_11=this.getCellRecord(_3,_4),_12=this.getEditValuesID(_3,_4);var _13;if(_11!=null&&!Array.isLoading(_11)){if(isc.isA.Tree(this.data)){_13=this.data.getCleanNodeData(_11,false)}else{_13=isc.addProperties({},_11)}
+if(_13&&this.selection)delete _13[this.selection.selectionProperty]}
+var _14={rowNum:_3,colNum:_4,oldValues:_13,editValuesID:_12,values:_10,editCompletionEvent:_1,newRecord:(_3>this.data.getLength())};if(this.logIsDebugEnabled("gridEdit")){this.logDebug("change detection: newValues: "+this.echo(_10)+", oldValues: "+this.echo(_13),"gridEdit")}
+var _15=this.recordHasChanges(_3,_4,false);if(!_6&&this.$32k()){this.$81c=(_5||_15);var _16;if(this.useCellRecords){_16=!this.validateCell(_3,_4)}else{_16=!this.validateRow(_3)}
+if(_16){if(!_5)this.$331(_14,_2);return false}}
+if(_5)return true;if(!_15){this.logInfo("saveEdits: no actual change, not saving","gridEdit");this.$321(_12,_4);this.$332(_2,_3,_4,_1,true);return}
+_10=this.$300(_3,_4);this.logInfo("Saving newValues '"+isc.echoAll(_10)+"'","gridEdit");this.rememberSubmittedEditValues(_3,_4);_10=isc.addProperties({},_10);var _17=this.saveEditedValues(_3,_4,_10,_13,_12,_1,_2);if(_17===false){this.$331(_14,_2);return false}
+return true}
+,isc.A.rowHasChanges=function isc_ListGrid_rowHasChanges(_1,_2){return this.recordHasChanges(_1,null,_2)}
+,isc.A.recordHasChanges=function isc_ListGrid_recordHasChanges(_1,_2,_3){if(_3==null)_3=true;var _4=false,_5=(_3?this.getEditValues(_1,_2):this.$300(_1,_2)),_6=this.getCellRecord(_1,_2);if(!_6)return true;var _7=isc.addProperties({},_6,this.getSubmittedEditValues(_1,_2));for(var _8 in _5){if(_8==this.removeRecordProperty)continue;var _9=_7[_8],_10=_5[_8];if(!this.fieldValuesAreEqual(this.getField(_8),_9,_10)){_4=true;break}}
+return _4}
+,isc.A.hasChanges=function isc_ListGrid_hasChanges(_1){var _2=this.getAllEditRows();if(_2!=null){for(var i=0;i<_2.length;i++){if(this.recordMarkedAsRemoved(_2[i]))return true;if(this.rowHasChanges(_2[i],_1))return true}}
+return false}
+,isc.A.cellHasChanges=function isc_ListGrid_cellHasChanges(_1,_2,_3){if(_1==null||_2==null)return false;var _4=this.getField(_2),_5=_4?_4.dataPath:null,_6=this.getEditorName(_1,_2),_7=(_3?this.getEditValues(_1,_2):this.$300(_1,_2));if(!_7)return false;var _8=this.getCellRecord(_1,_2);if(!_8)return true;var _9;if(_5){_9=isc.Canvas.$70o(this.$840(_5),_7)}else{_9=_7[_6]}
+var _10;if(_9===_10)return false;var _11=this.getSubmittedEditValues(_1,_2),_12;if(_5){if(_11){_12=isc.Canvas.$70o(this.$840(_5),_11)}
+if(_12==null){_12=isc.Canvas.$70o(this.$840(_5),_8)}
+if(_12==null){_12=isc.Canvas.$70o(this.$840(_5),_11)}}else{_12=_11!=null?this.$du(_11[_6],_8[_6]):_8[_6]}
+return!this.fieldValuesAreEqual(_4,_12,_9)}
+,isc.A.saveAllEdits=function isc_ListGrid_saveAllEdits(_1,_2){this.$333=this.$333||{};this.$90a=this.$90a||{};this.$334=this.$334||{};if(_1==null)_1=this.getAllEditCells();if(_1==null)return false;if(!isc.isAn.Array(_1))_1=[_1];if(this.$32k()){for(var i=0;i<_1.length;i++){var _4=isc.isAn.Array(_1[i])?_1[i][0]:_1[i],_5=isc.isAn.Array(_1[i])?_1[i][1]:null;var _6=this.recordMarkedAsRemoved(_4)||this.saveEdits(null,null,_4,_5,true);if(!_6){if(this.stopOnErrors)return false;else{_1[i]=null;_2=null}}}}
+var _7=(this.dataSource!=null&&!this.shouldSaveLocally()),_8=false;if(_7)_8=!isc.RPCManager.startQueue();var _9=this.$31e++,_10=this.$333[_9]=[],_11=this.$90a[_9]=[];this.$334[_9]=_2;var _12=false;var _13=["this.$335('",,"',rowNum,"+_9+",colNum,editCompletionEvent,success)"];for(var i=0;i<_1.length;i++){if(_1[i]==null)continue;var _4=_1[i],_5;if(isc.isAn.Array(_4)){_5=_4[1];_4=_4[0]}
+var _14=this.recordMarkedAsRemoved(_4);if(!this.recordHasChanges(_4,_5)&&!_14){continue}
+_12=true;var _15=this.getEditValuesID(_4);_13[1]=_15;if(_14){_11[_11.length]=_15}else{_10[_10.length]=_15}
+this.saveEdits(null,_13.join(""),_4,_5,false,true)}
+if(_8){isc.RPCManager.sendQueue(null,null,null,true)}
+return _12}
+,isc.A.$335=function isc_ListGrid__saveAllEditsRowCallback(_1,_2,_3,_4,_5,_6){if(!_6){delete this.$334[_3];delete this.$333[_3];delete this.$90a[_3];return}
+var _7=this.$333[_3],_8=this.$90a[_3];if(_7==null&&_8==null)return;var _9,_10,_11;for(_9=0;_9<_7.length;_9++){var _12=_7[_9];if(_12==_1){_10=true;break}}
+if(!_10){for(_9=0;_9<_8.length;_9++){var _12=_8[_9];if(_12==_1){_10=true;break}}
+if(_10)_11=true}
+if(_11){_8.removeAt(_9)}else{_7.removeAt(_9)}
+if(_7.length==0&&_8.length==0){this.$332(this.$334[_3],_2,_4,_5);delete this.$334[_3];delete this.$333[_3];delete this.$90a[_3]}}
+,isc.A.$33y=function isc_ListGrid__parseEditorValue(_1,_2,_3,_4,_5){var _6;if(_5===_6)_5=this.getCellRecord(_3,_4);if(_2&&_2.parseEditorValue!=null){isc.Func.replaceWithMethod(_2,"parseEditorValue","value,record,rowNum,colNum,grid");_1=_2.parseEditorValue(_1,_5,_3,_4,this)}else if(this.parseEditorValue!=null){_1=this.parseEditorValue(_1,_5,_3,_4)}
+return _1}
+,isc.A.saveEditedValues=function isc_ListGrid_saveEditedValues(_1,_2,_3,_4,_5,_6,_7){var _8={editValuesID:_5,rowNum:_1,colNum:_2,values:_3,oldValues:_4,editCompletionEvent:_6};if(this.shouldSaveLocally()){if(this.useRemoteValidators==true){var _9=false,_10=this.getDataSource(),_11=_10?_10.getFieldNames():null;if(_11!=null){for(var i=0;i<_11.length;i++){var _13=_10.getField(_11[i]),_14=_13.validators;if(_14==null)continue;if(!isc.isAn.Array(_14))_14=[_14];for(var _15=0;_15<_14.length;_15++){if(isc.Validator.isServerValidator(_14[_15])){_9=true;break}}
+if(_9)break}}
+if(_9){var _16={validationMode:"partial",prompt:isc.RPCManager.validateDataPrompt,showPrompt:this.shouldWaitForSave(),clientContext:{editInfo:_8,saveCallback:_7},componentID:this.ID};_10.validateData(_8.values,{target:this,methodName:"remoteValidationForLocalSaveComplete"},_16);if(this.$31o==null)this.$31o={};this.$31o[_8.editValuesID]=true;return}}
+return this.$336(_8,_7)}
+if(isc.Offline&&isc.Offline.isOffline()&&!this.dataSource.clientOnly){isc.warn(this.offlineSaveMessage);return false}
+var _17=this.getID()+".$337(dsResponse, dsRequest)",_18={operation:(_4==null?this.addOperation:this.updateOperation)||this.saveOperation,application:this.application,willHandleError:true,showPrompt:this.shouldWaitForSave(),oldValues:_4,$52s:this.getRecord(_1,_2),clientContext:{saveCallback:_7,newValues:_3,editInfo:_8},componentId:this.ID};if(this.saveRequestProperties){isc.addProperties(_18,this.saveRequestProperties)}
+this.$338(_3,_4);if(this.$31o==null)this.$31o={};this.$31o[_8.editValuesID]=true;var _10=isc.DS.get(this.dataSource);if(_4==null){var _19=isc.addProperties({},_4,_3);_10.addData(_19,_17,_18)}else{var _20=isc.DS.get(this.dataSource).filterPrimaryKeyFields(_4),_21=isc.addProperties({},_20,_3);_10.updateData(_21,_17,_18)}}
+);isc.evalBoundary;isc.B.push(isc.A.$336=function isc_ListGrid__saveLocally(_1,_2){var _3=_1.rowNum,_4=_1.colNum,_5=_1.oldValues,_6=_1.values;var _7=this.getCellRecord(_3,_4),_8=(_7==null);if(_8){var _9=this.getData();var _10=this.getEditSession(_3);_10.$33b=this.getPrimaryKeys(_6);delete _10.$33i;_9.add(_6);_9.dataChanged()}else{var _11,_12;var _13={};for(var i=0;i<this.completeFields.length;i++){var _15=this.completeFields[i],_16=this.getEditorName(_3,_15,true);_11=isc.Canvas.$70o(this.$840(_16),_6,this,true);if(_11!==_12){var _17=this.fields.indexOf(_15);if(_17!=-1){this.setRawCellValue(_7,_3,_17,_11)}else{if(_15.dataPath){isc.Canvas.$70n(this.$840(_15.dataPath),_11,_7,this,true)}else{_7[_15[this.fieldIdProperty]]=_11}}}
+var _18=_16;if(_16.indexOf("/")!=null){_18=_16.substring(0,_16.indexOf("/"))}
+_13[_18]=true}
+for(var _19 in _6){if(_13[_19]==true)continue;_7[_19]=_6[_19]}}
+this.$338(_6,_5);this.$339(_1,_2);if(this.valuesManager!=null){this.valuesManager.$71e(_3,null,_7,this)}}
+,isc.A.remoteValidationForLocalSaveComplete=function isc_ListGrid_remoteValidationForLocalSaveComplete(_1,_2,_3){var _4=_1.clientContext,_5=_4.editInfo;if(this.$31o&&this.$31o[_5.editValuesID]){delete this.$31o[_5.editValuesID];if(isc.isAn.emptyObject(this.$31o))delete this.$31o}
+if(_1.status<0&&_1.status!=isc.RPCResponse.STATUS_VALIDATION_ERROR){isc.logWarn("Server-side validation failed: "+_1.data);isc.RPCManager.handleError(_1,_3);return}
+var _6=this.$300(_5.editValuesID);if(_1.errors){var _7=isc.DynamicForm.getSimpleErrors(_1.errors),_8=false;for(var _9 in _7){_8=true;if(_6==null){this.logWarn("Asynchronous remote validation failed for attempted save of edits "+"for row:"+_5.rowNum+" but edit values have subsequently been "+"discarded. Ignoring validation failure. Validation failure details:\n"+this.echoFull(_7));break}
+var _10=_7[_9],_11=this.getField(_9);if(_10!=null&&_11!=null){var _12=_5.values[_9],_13=_6[_9];if(_12!=_13&&!(isc.isA.Date(_13)&&isc.isA.Date(_12)&&(_13.getTime()==_12.getTime())))
+{this.logWarn("Asynchronous remote validation failed for attempted save of edits "+"for row:"+_5.rowNum+". Submitted value for field "+_9+" was "+_12+", but the edit value has subsequently been modified "+"and is now:"+_13+". Not showing the following validation "+"error[s] for this field:\n"+this.echoAll(_10));continue}
+if(!isc.isAn.Array(_10))_10=[_10];_10=_10.getProperty("errorMessage");this.setFieldError(_5.rowNum,_9,_10,false)}}
+if(_8)return}
+this.$336(_5,_4.saveCallback)}
+,isc.A.$338=function isc_ListGrid__unsortOnChange(_1,_2){var _3=this.$60z();if(_3==null)return;var _4=this.fields[_3];if(_4==null)return;var _5=_4[this.fieldIdProperty];var _6;if(_5!=null&&_1[_5]!==_6&&(_2==null||_1[_5]!=_2[_5]))
+{this.unsort()}}
+,isc.A.$337=function isc_ListGrid__updateRecordReply(_1,_2){var _3=_1.data,_4=_1.clientContext,_5=_4.editInfo,_6=_5.colNum,_7=this.fields[_6];if(this.$31o&&this.$31o[_5.editValuesID]){delete this.$31o[_5.editValuesID];if(isc.isAn.emptyObject(this.$31o))delete this.$31o}
+var _8=this.getEditSession(_5.editValuesID);if(_8!=null){_5.rowNum=_8.$24t}else{if(_3&&_3[0]){_5.rowNum=this.findRowNum(_3[0]);if(this.useCellRecords)_5.colNum=this.findColNum(_3[0])}
+else _5.rowNum=-1}
+var _9=_5.rowNum,_6=_5.colNum;if(_1.status<0){var _10=this.parseServerErrors(_1.errors);this.logInfo("error on save, status: "+_1.status+", errors: "+this.echo(_1.errors),"gridEdit");if(isc.isAn.Array(_10)){if(_10.length!=1)
+this.logWarn("Server reports validation errors for multiple records - only "+"displaying errors for the first record.","gridEdit");_10=_10[0]}
+if(this.useCellRecords)this.setCellErrors(_9,_6,_10[this.getEditorName(_9,_6)]);else this.setRowErrors(_9,_10);this.$331(_5,_4.saveCallback,_1,_2);return false}
+this.$339(_5,_4.saveCallback,_1,_2)}
+,isc.A.parseServerErrors=function isc_ListGrid_parseServerErrors(_1){if(isc.isAn.Array(_1)){if(_1.length>1){this.logWarn("server returned errors for multiple records - dropping all but the "+"first record returned")}
+_1=_1[0]}
+if(_1&&_1.recordPath)delete _1.recordPath;for(var _2 in _1){var _3=_1[_2];if(_3==null)_3="Unspecified error";if(isc.isAn.Array(_3)){for(var i=0;i<_3.length;i++){_3[i]=_3[i].errorMessage}}else if(_3.errorMessage){_1[_2]=[_3.errorMessage]}else{_1[_2]=[_3]}}
+return _1}
+,isc.A.$339=function isc_ListGrid__editCompleteCallback(_1,_2,_3,_4){if(this.$30a&&this.getEditForm().hasFocus)this.storeUpdatedEditorValue(true);var _5=_1.rowNum,_6=_1.colNum,_7=_1.editValuesID,_8=this.getEditSession(_7);var _9;if(_3!=null){var _10=isc.DataSource.getUpdatedData(_4,_3,true),_9=isc.isAn.Array(_10)?_10[0]:_10;if(_9==null){return}
+if(_8&&_8.$33b==null){this.newRecordForEditValues(_7,_9)}}else{_9=this.getCellRecord(_5,_6)}
+var _11=_1.values,_12=this.$300(_7),_13=this.isEditingRecord(_5,_6),_14=this.dataSource?isc.DS.get(this.dataSource).getPrimaryKeyFieldNames():null;var _15=false;for(var _16 in _12){var _17=_14&&_14.contains(_16);if(this.fieldValuesAreEqual(this.getField(_16),_12[_16],_11[_16]))
+{if(!(_13&&_17))this.clearEditValue(_7,_16,true,true)}else{if(!_17)_15=true}}
+if(!_13&&!_15){this.$321(_7,_6)}
+if(_3!=null||_1.newRecord){this.displayUpdatedDSRecord(_5,_6,_9)}
+var _18=_1.values,_19=_1.oldValues,_20=_1.editCompletionEvent;if(_5==-1)_5=_1.rowNum;if(this.convertToMethod("editComplete")){this.editComplete(_5,_6,_18,_19,_20,_3)}
+this.$50u(_9,_5,_6,_18,_19,_4);if(_2)this.$332(_2,_5,_6,_20,true)}
+,isc.A.displayUpdatedDSRecord=function isc_ListGrid_displayUpdatedDSRecord(_1,_2,_3){if(this.$31n()){this.suppressEditRowRemap=true;this.dataChanged();this.suppressEditRowRemap=false}else if(this.isGrouped){this.regroup()}}
+,isc.A.isEditingRecord=function isc_ListGrid_isEditingRecord(_1,_2){return this.getEditRow()==_1}
+,isc.A.$332=function isc_ListGrid__fireSaveCallback(_1,_2,_3,_4,_5){if(_1!=null){this.fireCallback(_1,this.$31f,[_2,_3,_4,_5])}}
+,isc.A.$50u=function isc_ListGrid__fireCellChanged(_1,_2,_3,_4,_5,_6){var _7,_8;for(var i in _4){var _10=(_5==null?null:_5[i]);if(_4[i]==_10)continue;var _11=this.fields.find(this.fieldIdProperty,i);if(!_11)continue;if(this.isGrouped&&_11){var _12=this.getGroupByFields();if(_12.contains(_11.name))_7=true}
+if(this.shouldAutoFitField(_11)){_8=true}
+this.$34a(_1,_11,_4[i],_10,_2,this.fields.indexOf(_11))}
+if(_8){if(this.shouldSaveLocally()){this.updateFieldWidthsForAutoFitValue("Local edit")}}
+if(_7){if(this.shouldSaveLocally()){this.$607(_1,_1,_2,_4)}
+this.$34v=false;this.$34u()}}
+,isc.A.$34a=function isc_ListGrid__cellChanged(_1,_2,_3,_4,_5,_6){if(_2&&_2.cellChanged){if(!isc.isA.Function(_2.cellChanged)){isc.Func.replaceWithMethod(_2,"cellChanged","record,newValue,oldValue,rowNum,colNum,grid,recordNum,fieldNum")}
+_2.cellChanged.call(this,_1,_3,_4,_5,_6,this,_5,_6)}else if(this.cellChanged){this.cellChanged(_1,_3,_4,_5,_6,this,_5,_6)}}
+,isc.A.$331=function isc_ListGrid__editFailedCallback(_1,_2,_3,_4){var _5=_1.rowNum,_6=_1.colNum,_7=_1.values,_8=_1.oldValues,_9=_1.editCompletionEvent;if(this.convertToMethod("editFailed")){this.editFailed(_5,_6,_7,_8,_9,_3,_4)}
+if(_2!=null)this.$332(_2,_5,_6,_9,false);this.clearSubmittedEditValues(_1.editValuesID,_7)}
+,isc.A.editFailed=function isc_ListGrid_editFailed(_1,_2,_3,_4,_5,_6,_7){if(_6!=null&&_6.errors==null){isc.RPCManager.$a0(_6,_7)}}
+,isc.A.validateRow=function isc_ListGrid_validateRow(_1,_2){return this.validateRecord(_1,_2)}
+,isc.A.validateRecord=function isc_ListGrid_validateRecord(_1,_2){var _3,_4;if(isc.isAn.Array(_1)){_3=_1[0];_4=_1[1]}else{_3=_1}
+var _5=this.getEditValues(_3,_4);if(_5==null)return true;var _6=this.getCellRecord(_3,_4),_7=this.getFields().getProperty(this.fieldIdProperty);var _8=isc.rpc.startQueue();var _9=this.validateRowValues(_5,_6,_3,_7);if(!_8)isc.rpc.sendQueue();this.setRowErrors(_3,_9,_2);return(_9==null)}
+,isc.A.validateRowValues=function isc_ListGrid_validateRowValues(_1,_2,_3,_4){var _5=true,_6={};if(!isc.isAn.Array(_4))_4=[_4];var _7=false;if(_2==null){_7=true;_2={}}
+for(var i=0;i<_4.length;i++){var _9,_10;if(isc.isA.Number(_4[i])){_10=_4[i];_9=_4[i]=this.getFieldName(_10)}else{_9=_4[i];_10=this.getFields().findIndex(this.fieldIdProperty,_9)}
+if(_10<0)continue;var _11=((_7&&this.canEditCell(_3,_10))||isc.propertyDefined(_1,_9));if(!_11)continue;var _12=_1[_9],_13=_2[_9],_14=this.validateCellValue(_3,_10,_12,_13);if(_14!=null){_5=false;_6[_9]=_14}}
+if(!_5)return _6;return null}
+,isc.A.validateCell=function isc_ListGrid_validateCell(_1,_2,_3,_4){var _5;if(isc.isA.String(_2))_5=this.getColNum(_2);else{_5=_2;_2=this.getEditorName(_1,_5)}
+if(this.$30a&&(this.getEditRow()==_1)&&this.getEditForm().getItem(_2)!=null)
+{this.storeUpdatedEditorValue(null,_5)}
+var _6=this.getEditValues(_1,_5),_7=this.cellHasErrors(_1,_2),_8=_6?_6[_2]:null,_9=this.getCellRecord(_1,_5),_10=_9?_9[_2]:null;if(_9!=null&&(!_6||!isc.propertyDefined(_6,_2))){return true}
+var _11=this.validateCellValue(_1,_5,_8,_10,_4);if(_11!=null){this.setFieldError(_1,_2,_11);return false}
+if(_7){this.setFieldError(_1,_2,null)}
+return true}
+,isc.A.validateCellValue=function isc_ListGrid_validateCellValue(_1,_2,_3,_4,_5){var _6=this.getCellRecord(_1,_2);var _7=this.getField(_2);return this.validateFieldValue(_3,_4,_6,_7,_1,_2,_5)}
+,isc.A.getRequiredFieldMessage=function isc_ListGrid_getRequiredFieldMessage(_1,_2){return isc.Validator.requiredField}
+,isc.A.validateFieldValue=function isc_ListGrid_validateFieldValue(_1,_2,_3,_4,_5,_6,_7){var _8=[],_9=true;var _10=this.cellIsRequired(_5,_6);if(_10&&(_1==null||isc.isAn.emptyString(_1))){var _11=this.getRequiredFieldMessage(_4,_3);_8.add(_11);_9=false}
+var _12=this.getCellValidators(_5,_6);if(_12){if(this.logIsDebugEnabled("gridEdit")){this.logDebug((this.useCellRecords?"At col:"+_6:"At field: "+_4.name)+" applying validators: "+this.echoAll(_12)+" to value:"+_1,"gridEdit")}
+var _13,_14=this.getEditedRecord(_5,_6),_15=null,_16={rowNum:_5};if(this.$81c==true){_16.skipServerValidation=true;this.$81c=null}
+if(_7){_13=this.validateFieldAndDependencies(_4,_12,_1,_14,_16)}else{_13=this.validateField(_4,_12,_1,_14,_16)}
+if(_13!=null){if(_13.valid!=true){_9=false;if(_7)
+_8=_13.errors[_4.name]||[];else
+_8=_13.errors||[]}else{if(_13.resultingValue!=null){this.setEditValue(_5,_6,_13.resultingValue);_1=_13.resultingValue}}
+_15=_13.errors;if(this.logIsInfoEnabled("gridEdit")){this.logInfo("validateFieldValue, newValue: "+this.echo(_1)+", passed validation: "+_9+", resultingValue: "+this.echo(_13.resultingValue),"gridEdit")}}}
+if(_7){for(var _17 in _15){if(_17!=_4.name){this.setFieldError(_5,_17,_15[_17],true)}}}
+if(_9)return null
+else return _8}
+,isc.A.cellIsRequired=function isc_ListGrid_cellIsRequired(_1,_2){var _3=this.getField(_2);return _3&&(_3.required||this.isXMLRequired(_3))}
+,isc.A.getCellValidators=function isc_ListGrid_getCellValidators(_1,_2){var _3=this.getField(_2);return _3?_3.validators:null}
+,isc.A.hasErrors=function isc_ListGrid_hasErrors(){var _1=this.getAllEditRows(true);for(var i=0;i<_1.length;i++){if(this.rowHasErrors(_1[i]))return true}
+return false}
+,isc.A.rowHasErrors=function isc_ListGrid_rowHasErrors(_1,_2){var _3=this.getEditSession(_1,_2);return(_3&&_3.$33o&&!isc.isA.emptyObject(_3.$33o))}
+,isc.A.cellHasErrors=function isc_ListGrid_cellHasErrors(_1,_2){var _3=this.getEditorName(_1,_2),_4=this.getEditSession(_1,_2),_5=_4?_4.$33o:null;return(_5!=null&&_5[_3]!=null)}
+,isc.A.getRowValidationErrors=function isc_ListGrid_getRowValidationErrors(_1){return this.getRowErrors(_1)}
+,isc.A.getRowErrors=function isc_ListGrid_getRowErrors(_1,_2){var _3=this.getEditSession(_1,_2);return(_3!=null?_3.$33o:null)}
+,isc.A.getCellErrors=function isc_ListGrid_getCellErrors(_1,_2){var _3=this.getEditSession(_1,_2);if(_3==null)return null;if(isc.isA.Number(_2))_2=this.getEditorName(_1,_2);var _4=_3.$33o;return(_4==null?null:_4[_2])}
+,isc.A.setCellErrors=function isc_ListGrid_setCellErrors(_1,_2,_3,_4){return this.setFieldError(_1,_2,_3,_4)}
+,isc.A.setFieldError=function isc_ListGrid_setFieldError(_1,_2,_3,_4){var _5=_2;if(isc.isA.Number(_5))_5=this.getEditorName(_1,_5);if(_3==null||(isc.isAn.Array(_3)&&_3.length==0)){if(!this.cellHasErrors(_1,_2))return;var _6=this.getEditSession(_1,_2);delete _6.$33o[_5];if(isc.isAn.emptyObject(_6.$33o))delete _6.$33o}else{if(_5==null){this.logWarn("setFieldError() passed field identifier '"+_2+"'. "+"Unable to find corresponding field in this grid - not setting error.");return}
+var _7=this.getFields().getProperty(this.fieldIdProperty);if(!_7.contains(_5))
+{this.logWarn("setFieldError() passed field identifier '"+_2+"'. This "+"is not a visible field in the grid - error may not be visible to user.")}
+var _8;if(isc.isAn.Array(_3))_8=_3
+else _8=[_3];var _6=this.getEditSession(_1,_2);if(_6==null){var _9=this.getColNum(_2),_10=this.getCellRecord(_1,_9);_6=this.createEditSession(_1,_9,_10)}
+if(_6.$33o==null)_6.$33o={};_6.$33o[_5]=_8}
+if(!_4){if(this.useCellRecords)this.showCellErrors(_1,_2)
+else this.showErrors(_1,[_5])}}
+,isc.A.addFieldErrors=function isc_ListGrid_addFieldErrors(_1,_2,_3,_4){this.setFieldError(_4,_1,_2)}
+,isc.A.setRowErrors=function isc_ListGrid_setRowErrors(_1,_2,_3){if(_1==null||_1==-1)return;var _4=this.getRowErrors(_1);if(!_2&&!_4)return;var _5=this.getEditSession(_1);if(_5==null)_5=this.createEditSession(_1,null,this.getRecord(_1));if(_2){var _6=this.getFields().getProperty(this.fieldIdProperty);for(var _7 in _2){if(!_3&&!_6.contains(_7)){this.logWarn("setRowErrors() passed error for non-visible field: '"+_7+"'")}
+if(!isc.isAn.Array(_2[_7]))_2[_7]=[_2[_7]]}}
+_5.$33o=_2;if(!_3){var _8=_2?isc.getKeys(_2):[];for(var _7 in _4){var _9=this.getColNum(_7);if(!_8.contains(_7))_8.add(_7)}
+this.showErrors(_1,_8)}}
+,isc.A.clearFieldError=function isc_ListGrid_clearFieldError(_1,_2,_3){return this.setFieldError(_1,_2,null,_3)}
+,isc.A.clearRowErrors=function isc_ListGrid_clearRowErrors(_1,_2){this.setRowErrors(_1,null,_2)}
+,isc.A.showErrors=function isc_ListGrid_showErrors(_1,_2){if(_2==null)_2=this.getFields().getProperty(this.fieldIdProperty);var _3=this.getRowErrors(_1);if(_3==null)_3={};var _4;for(var i=0;i<_2.length;i++){var _6=_2[i];this.showCellErrors(_1,_6);if(_4==null&&_3[_6])_4=_6}
+var _7=this.assembleErrorMessage(_3,_2);if(_7){this.displayRowErrorMessages(_7)}
+if(this.stopOnErrors&&_4!=null){var _8=this.getFields().findIndex(this.fieldIdProperty,_4);this.showInlineEditor(_1,_8)}}
+,isc.A.showCellErrors=function isc_ListGrid_showCellErrors(_1,_2){var _3;if(isc.isA.Number(_2)){this.getEditorName(_1,_2)}else{_3=_2;_2=this.getColNum(_3)}
+if(_2==-1)return;if(this.showErrorIcons){this.refreshCell(_1,_2,null,true)}else{this.body.$29h(null,_1,_2)}}
+,isc.A.assembleErrorMessage=function isc_ListGrid_assembleErrorMessage(_1,_2){var _3=false,_4="Validation Errors occurred:\r\n";for(var _5 in _1){if(_2&&!_2.contains(_1))continue;var _6=this.$34b(_5,_1[_5]);if(_6!=null){_3=true;_4+=_6}}
+return(_3?_4:null)}
+,isc.A.$34b=function isc_ListGrid__createFieldErrorString(_1,_2){var _3,_4,_5=this.getField(_1),_6=_5&&_5.title?_5.title:_1;for(var i=0;i<_2.length;i++){var _8=_2[i];if(_8!=null){if(_4==null){_4="<br>Field '"+_6+"':"}
+_4+="<br>* "+_8}}
+return _4}
+,isc.A.displayRowErrorMessages=function isc_ListGrid_displayRowErrorMessages(_1){if(this.stopOnErrors)isc.warn(_1,"var LG="+this.getID()+";if(LG.$286)LG.$286.focus()")}
+,isc.A.removeData=function isc_ListGrid_removeData(_1,_2,_3){_3=isc.addProperties({},_3);if(_3.clientContext==null){_3.clientContext={}}
+_3.clientContext.removeDataCallback=_2;if(this.getDataSource()!=null&&!this.shouldSaveLocally()){return this.Super("removeData",[_1,{target:this,methodName:"removeDataComplete"},_3],arguments)}
+if(this.data){var _4=this.getEditValuesID(_1);if(_4!=null)this.discardEdits(_4);this.getOriginalData().remove(_1);this.updateFieldWidthsForAutoFitValue("removeData");this.regroup()}
+this.fireCallback({target:this,methodName:"removeDataComplete"},"dsResponse,data,dsRequest",[null,_1,_3])}
+,isc.A.removeDataComplete=function isc_ListGrid_removeDataComplete(_1,_2,_3){if(_1&&_1.status!=0){}else{if(!isc.isAn.Array(_2))_2=[_2];for(var i=0;i<_2.length;i++){var _5=this.getEditValuesID(_2[i]);if(_5!=null){this.discardEdits(_5)}}}
+if(_3&&_3.clientContext&&_3.clientContext.removeDataCallback){this.fireCallback(_3.clientContext.removeDataCallback,"dsResponse,data,dsRequest",[_1,_2,_3])}}
+,isc.A.removeRecordClick=function isc_ListGrid_removeRecordClick(_1,_2){var _3=this.warnOnRemoval,_4=this.shouldDeferRemoval();if(_3&&_4&&this.recordMarkedAsRemoved(_1))_3=false;if(_3){isc.ask(this.warnOnRemovalMessage,this.getID()+".completeRemoveRecordClick(value, "+_1+","+_2+")")}else{this.completeRemoveRecordClick(true,_1,_2)}}
+,isc.A.completeRemoveRecordClick=function isc_ListGrid_completeRemoveRecordClick(_1,_2,_3){if(!_1)return;if(this.shouldDeferRemoval()){if(this.recordMarkedAsRemoved(_2)){this.unmarkRecordRemoved(_2)}else{this.markRecordRemoved(_2)}}else{var _4=this.getAllEditRows(),_5=_4.contains(_2);if(_5)this.discardEdits(_2,_3);var _6=this.getCellRecord(_2,_3);if(_6==null)return;this.delayCall("removeRecord",[_2,_6])}}
+,isc.A.removeRecord=function isc_ListGrid_removeRecord(_1,_2){if(_2==null)_2=this.data.get(_1);else _1=(this.data?this.data.indexOf(_2):null)
+if(_2==null||_1==null||_1==-1||!this.data)return;if(isc.Offline&&isc.Offline.isOffline()&&this.dataSource&&!this.dataSource.clientOnly){isc.warn(this.offlineSaveMessage);return}
+var _3=this.animateRemoveRecord&&this.isDrawn()&&this.isVisible()&&this.body&&_1>=this.body.$252&&_1<=this.body.$253;if(_2.$29a&&_2.$29a.length>0){_3=false}
+if(_3){this.$50w=true;var _4=1;if(isc.isA.Tree(this.data)&&this.data.isFolder(_2)&&this.data.isOpen(_2)){var _5=this.data.getChildren(_2);if(_5)_4+=_5.getLength()}
+this.$63o=_4;this.body.$28b(false,_1,_1+_4)}
+var _6=this.getDataSource(),_7=(_6==null||this.shouldSaveLocally());if(!_7){if(!_6.getPrimaryKeyField){this.logWarn("DataSource:"+_6+" has no primary key field - unable to remove records");return}}
+var _8;if(_3){_8=this.getID()+".showRemoveCompleteAnimation("+_1+", data,dsResponse);"}
+this.removeData(_2,_8,{showPrompt:false})}
+,isc.A.showRemoveCompleteAnimation=function isc_ListGrid_showRemoveCompleteAnimation(_1,_2,_3){if(_3&&_3.status<0){this.logWarn("Removal of record failed");_2=null}
+if(!_2){delete this.$50w;if(this.body){delete this.body.$28c;delete this.body.$28e;delete this.body.$28f;delete this.body.$28h}
+this.markForRedraw()}else{this.startRowAnimation(false,_1,_1+this.$63o,{target:this,methodName:"$63d"},this.animateRemoveSpeed,this.animateRemoveTime);delete this.$63o}}
+,isc.A.$63d=function isc_ListGrid__removeDataAnimationComplete(){delete this.$50w;this.redraw()}
+,isc.A.startRowAnimation=function isc_ListGrid_startRowAnimation(_1,_2,_3,_4,_5,_6,_7,_8,_9){if(!this.body)return;this.finishRowAnimation();this.$64v=_4;if(this.frozenBody){this.frozenBody.startRowAnimation(_1,_2,_3,{target:this,methodName:"rowAnimationComplete",argNames:"body,hasFrozenBody",args:[this.frozenBody,true]},_5,_6,_7,_8,true,_9)}
+this.body.startRowAnimation(_1,_2,_3,{target:this,methodName:"rowAnimationComplete",argNames:"body,hasFrozenBody",args:[this.body,(this.frozenBody!=null)]},_5,_6,_7,_8,true,_9)}
+,isc.A.rowAnimationComplete=function isc_ListGrid_rowAnimationComplete(_1,_2){var _3=!_2||this.$64w;if(!_3){this.$64w=true}else{delete this.$64w;var _4=this.$64v;delete this.$64v;if(_4!=null)this.fireCallback(_4)}}
+,isc.A.finishRowAnimation=function isc_ListGrid_finishRowAnimation(){if(this.body)this.body.finishRowAnimation();if(this.frozenBody)this.frozenBody.finishRowAnimation()}
+,isc.A.animateRowHeight=function isc_ListGrid_animateRowHeight(_1,_2,_3,_4,_5,_6,_7){if(!this.body)return;return this.body.animateRowHeight(_1,_2,_3,_4,_5,_6,_7,true)}
+,isc.A.setCellHeight=function isc_ListGrid_setCellHeight(_1){var _2=this.cellHeight;this.cellHeight=_1;if(this.body)this.body.cellHeight=_1;if(_2!=_1&&this.isDrawn()){this.body.markForRedraw("Cell height changed");if(this.frozenBody)this.frozenBody.markForRedraw("Cell height changed")}}
+,isc.A.setRowHeight=function isc_ListGrid_setRowHeight(_1,_2){if(!this.body)return;if(this.frozenBody!=null)this.frozenBody.setRowHeight(_1,_2);return this.body.setRowHeight(_1,_2)}
+,isc.A.getDragTrackerIcon=function isc_ListGrid_getDragTrackerIcon(_1){var _2=_1?_1[0]:null,_3;if(_2){var _4=this.getTitleField();_3=this.getValueIcon(this.getField(_4),_2[_4],_2)}
+if(_3==null)_3=this.trackerImage;return _3}
+,isc.A.getDragTrackerTitle=function isc_ListGrid_getDragTrackerTitle(_1,_2){var _3=this.getTitleField(),_4=this.getColNum(_3),_5=this.getCellValue(_1,_2,_4);return"<nobr>"+_5+"</nobr>"}
+,isc.A.dragStart=function isc_ListGrid_dragStart(){if(this.canDragSelect)return true;var _1=this.selection.getSelection();if(!_1||_1.length==0)return false;for(var i=0;i<_1.length;i++){if(_1[i].canDrag==false)return false}
+this.$758=_1;return true}
+,isc.A.dragMove=function isc_ListGrid_dragMove(){var _1=isc.EH.dropTarget;if(!this.canDragRecordsOut&&_1!=null&&_1!=this&&!this.contains(_1))
+{return false}}
+,isc.A.dropMove=function isc_ListGrid_dropMove(){if(!this.canAcceptDroppedRecords&&isc.EH.dragTarget!=this)return true;if(!this.willAcceptDrop()){this.body.setNoDropIndicator()}else{this.body.clearNoDropIndicator()}
+if(!this.canReorderRecords)return true;this.showDragLineForRecord()}
+,isc.A.dropOut=function isc_ListGrid_dropOut(){this.body.clearNoDropIndicator();this.hideDragLine()}
+,isc.A.dragStop=function isc_ListGrid_dragStop(){this.body.clearNoDropIndicator();this.hideDragLine();this.$758=null}
+,isc.A.willAcceptDrop=function isc_ListGrid_willAcceptDrop(){var _1=this.ns.EH;if(!this.Super("willAcceptDrop",arguments)&&_1.dragTarget!=this.body)return false;if(_1.dragTarget==this){if(!this.$34c())return false}else{if(!this.canAcceptDroppedRecords)return false}
+if(!isc.isAn.Object(_1.dragTarget.getDragData()))return false;isc.$54j=true;var _2=this.getEventRecordNum(),_3=this.getEventFieldNum();var _4=this.getReorderPosition(_2);if(_2!=-2&&_4==isc.ListGrid.AFTER)_2+=1;isc.$54j=false;if(_2<-1)return true;if(_2==-1)return false;var _5=this.getRecord(_2,_3);if(!this.recordIsEnabled(_2,_3)||(_5!=null&&_5.canAcceptDrop==false))return false;return true}
+,isc.A.$34c=function isc_ListGrid__canDragRecordsToSelf(){return this.canReorderRecords}
+,isc.A.drop=function isc_ListGrid_drop(){if(this.willAcceptDrop()==false)return false;var _1=this.ns.EH.dragTarget;var _2=this.getDropIndex();var _3=_1.cloneDragData();var _4=(_2!=-2?this.data.get(_2):null);if(this.onRecordDrop!=null&&(this.onRecordDrop(_3,_4,_2,_1)==false))
+{return false}
+return this.recordDrop(_3,_4,_2,_1)}
+,isc.A.recordDrop=function isc_ListGrid_recordDrop(_1,_2,_3,_4){this.transferRecords(_1,_2,(this.canReorderRecords?_3:null),_4);if(this.recordsDropped)this.recordsDropped(_1,_3,this,_4);return false}
+,isc.A.viewRow=function isc_ListGrid_viewRow(_1){this.getDataSource().viewFile(this.getRecord(_1))}
+,isc.A.downloadRow=function isc_ListGrid_downloadRow(_1){this.getDataSource().downloadFile(this.getRecord(_1))}
+,isc.A.autoSizeColumn=function isc_ListGrid_autoSizeColumn(_1){var _2=this.body.getColumnAutoSize(_1);if(_2!=null)this.resizeField(_1,_2)}
+,isc.A.getRecord=function isc_ListGrid_getRecord(_1,_2){return this.getCellRecord(_1,_2)}
+,isc.A.getCellRecord=function isc_ListGrid_getCellRecord(_1,_2){if(!isc.isA.Number(_1)){this.logWarn("getCellRecord called with bad rowNum: "+this.echo(_1));return}
+if(!this.data||_1>=this.data.getLength())return null;var _3=this.data.get(_1);if(this.$33q)this.$34d(_3,_1);return _3}
+,isc.A.$34d=function isc_ListGrid__testRowEditData(_1,_2){if(_1==null||_1[this.editValuesTestedProperty])return;if(this.$33a==null)this.$33a={};var _3=true;for(var i in this.$52b){var _5=this.$52b[i];if(_5!=null&&_5.$24t==null){if(this.comparePrimaryKeys(_1,_5.$33b)){_5.$24t=_2;this.$33a[_2]=i}else{_3=false}}}
+if(_3)delete this.$33q;_1[this.editValuesTestedProperty]=true}
+,isc.A.comparePrimaryKeys=function isc_ListGrid_comparePrimaryKeys(_1,_2){var _3=this.getPrimaryKeys(_1);if(!this.dataSource||this.shouldSaveLocally())return(_3==_2);for(var _4 in _3){if(_3[_4]!=_2[_4])return false}
+return true}
+,isc.A.getPrimaryKeys=function isc_ListGrid_getPrimaryKeys(_1){if(this.shouldSaveLocally())return _1;var _2=this.getDataSource(),_3=_2.getPrimaryKeyFieldNames(),_4={};if(!isc.isAn.Array(_3))_3=[_3];for(var i=0;i<_3.length;i++){_4[_3[i]]=_1[_3[i]]}
+return _4}
+,isc.A.getTotalRows=function isc_ListGrid_getTotalRows(){if(this.data==null)return 0;if(this.data.getLength==null){this.logWarn("GetTotalRows: ListGrid has invalid data object:"+this.echo(this.data));return 0}
+var _1=this.data.getLength(),_2=this.$34e();if(_2!=null&&_2+1>_1)_1=_2+1;if(this.showNewRecordRow)_1+=1;return _1}
+,isc.A.$34e=function isc_ListGrid__getLastEditRow(){if(this.$33j==null){var _1=-1,_2=(this.$33a?isc.getKeys(this.$33a):[]);for(var i=0;i<_2.length;i++){var _4=parseInt(_2[i]);if(_4>_1)_1=_4}
+this.$33j=_1}
+return this.$33j}
+,isc.A.recordIsEnabled=function isc_ListGrid_recordIsEnabled(_1,_2){var _3=this.getCellRecord(_1,_2);if(_3==null)return true;if(this.recordMarkedAsRemoved(_1))return false;return(_3[this.recordEnabledProperty]!=false&&_3[this.isSeparatorProperty]!=true)}
+,isc.A.cellIsEnabled=function isc_ListGrid_cellIsEnabled(_1,_2){return this.recordIsEnabled(_1,_2)}
+,isc.A.getCellField=function isc_ListGrid_getCellField(_1,_2){return this.getField(_2)}
+,isc.A.getFields=function isc_ListGrid_getFields(){return this.fields}
+,isc.A.getAllFields=function isc_ListGrid_getAllFields(){return this.completeFields||this.fields}
+,isc.A.getSpecifiedField=function isc_ListGrid_getSpecifiedField(_1){var _2=this.completeFields;if(_2==null)_2=this.fields;if(_2==null)return;if(isc.isAn.Object(_1)){if(_2.contains(_1))return _1;return null}else if(isc.isA.String(_1))return _2.find(this.fieldIdProperty,_1);else return(_2[_1])}
+,isc.A.getFieldName=function isc_ListGrid_getFieldName(_1){var _2=this.getField(_1);return _2?_2[this.fieldIdProperty]:null}
+,isc.A.getField=function isc_ListGrid_getField(_1){if(this.fields==null||_1==null)return null;var _2;if(this.$81g){_2=this.fields[_1];if(_2!=null)return _2}else{if(isc.isA.Number(_1))return this.fields[_1]}
+if(_1.$81f||isc.isAn.Object(_1))return _1;if(isc.isA.String(_1)){var _3=_1.contains(isc.Canvas.$70l);if(!_3){return this.fields.find(this.fieldIdProperty,_1)}else{var _4,_5,_6,_7=_1.trim(isc.Canvas.$70l),_8,_9,_10,_11;if(_1.startsWith(isc.Canvas.$70l)){_5=_1.substring(1);if(_1.endsWith(isc.Canvas.$70l)){_6=_1.substring(0,_1.length)}else{_4=_1+"/"}}else{if(_1.endsWith(isc.Canvas.$70l)){_6=_1.substring(0,_1.length);_4="/"+_1}else{_4="/"+_1+"/"}
+_8="/"+_1}
+var _12=_7.lastIndexOf(isc.Canvas.$70l);if(_12!=-1){_9=_7.substring(_12+1);_10=_9+"/"}
+for(var i=0;i<this.fields.length;i++){var _14=this.fields[i].dataPath;if(!_14)continue;if(_14==_1||(_5&&_14==_5)||(_6&&_14==_6)||(_7&&_14==_7)||(_8&&_14==_8)||(_4&&_14==_4)||(_9&&_14==_9)||(_10&&_14==_10))
+{return this.fields[i]}}}}
+return null}
+,isc.A.getColNum=function isc_ListGrid_getColNum(_1){return this.getFieldNum(_1)}
+,isc.A.getFieldTitle=function isc_ListGrid_getFieldTitle(_1){var _2;if(isc.isAn.Object(_1))_2=_1;else _2=this.fields[_1];if(!_2)return"Unknown field";if(_2.getFieldTitle){isc.Func.replaceWithMethod(_2,"getFieldTitle","viewer,fieldNum");return _2.getFieldTitle(this,_1)}
+return _2.title||_2.name}
+,isc.A.getSummaryTitle=function isc_ListGrid_getSummaryTitle(_1){var _2;if(_1.getSummaryTitle!=null){isc.Func.replaceWithMethod(_1,"getSummaryTitle","viewer,field");_2=_1.getSummaryTitle(this,_1)}else if(_1.summaryTitle!=null){_2=_1.summaryTitle}else{_2=this.getFieldTitle(_1)}
+return _2}
+,isc.A.setValueMap=function isc_ListGrid_setValueMap(_1,_2){this.Super("setValueMap",arguments);if(this.$30a){var _3,_4;var _5=this.getColNum(_1);if(_5!=-1&&_5<this.fields.length){var _4=this.getField(_1),_3=_4[this.fieldIdProperty];this.$286.setValueMap(_3,this.getEditorValueMap(_4,this.getEditedRecord(this.getEditRow(),_5)))}}
+if(this.summaryRow){this.summaryRow.setValueMap(_1,_2)}
+if(this.isDrawn()&&this.isVisible()){this.$25a("setValueMap")}}
+,isc.A.getDisplayValue=function isc_ListGrid_getDisplayValue(_1,_2){var _3=this.getField(_1),_4=_3?_3.valueMap:null;if(isc.isAn.Object(_4)&&!isc.isAn.Array(_4)&&isc.propertyDefined(_4,_2))
+{return _4[_2]}
+return _2}
+,isc.A.getData=function isc_ListGrid_getData(){return this.data}
+,isc.A.getRecordIndex=function isc_ListGrid_getRecordIndex(_1){var _2=-1;if(this.body&&this.body.isDrawn()){_2=this.data.indexOf(_1,this.body.$252,this.body.$253)}
+if(_2==-1)_2=this.data.indexOf(_1);return _2}
+,isc.A.getRecordCellIndex=function isc_ListGrid_getRecordCellIndex(_1){return[this.getRecordIndex(),0]}
+,isc.A.getEventRow=function isc_ListGrid_getEventRow(_1){if(this.header&&this.header.containsPoint(this.ns.EH.getX(),this.ns.EH.getY())){return-1}
+return this.body.getEventRow(_1)}
+,isc.A.getEventColumn=function isc_ListGrid_getEventColumn(_1){return this.body.getEventColumn(_1)}
+,isc.A.getEventRecordNum=function isc_ListGrid_getEventRecordNum(_1){return this.getEventRow(_1)}
+,isc.A.getEventFieldNum=function isc_ListGrid_getEventFieldNum(_1){return this.getEventColumn(_1)}
+,isc.A.getReorderPosition=function isc_ListGrid_getReorderPosition(_1,_2){if(_2==null)_2=this.body.getOffsetY();if(_1==null)_1=this.getEventRow(_2);if(_1==-2)return isc.ListGrid.AFTER;if(_1>=this.getTotalRows())return isc.ListGrid.BEFORE;var _3=this.body.getRowTop(_1),_4=this.body.getRowSize(_1);if(_2>Math.round(_3+_4/ 2)){return isc.ListGrid.AFTER}else{return isc.ListGrid.BEFORE}}
+,isc.A.getDropIndex=function isc_ListGrid_getDropIndex(_1,_2){if(this.data.getLength()==0){return 0}
+if(_1==null)_1=this.getEventRow();if(_2==null)_2=this.getReorderPosition(_1);if(this.canReorderRecords){if(_1==-2)_1=this.data.getLength()-1;if(_2==isc.ListGrid.AFTER)_1++}
+return _1}
+,isc.A.selectionChanged=function isc_ListGrid_selectionChanged(){}
+,isc.A.getSerializeableFields=function isc_ListGrid_getSerializeableFields(_1,_2){_1.addList(["header","selection"]);return this.Super("getSerializeableFields",arguments)}
+,isc.A.deriveFrozenFields=function isc_ListGrid_deriveFrozenFields(){var _1=this.frozenFields=this.fields.findAll("frozen",true),_2=this.fields.findAll("autoFreeze",true),_3=this.fields.findAll("$74j",true);if(_1&&_3&&_1.length==_3.length){for(var i=0;i<_3.length;i++){var _5=_3[i];_5.frozen=false;delete _5.$74j}
+_1=this.frozenFields=null}
+var _6=this.completeFields.findAll("frozen",true);if(_1&&_1.length==this.fields.length){_1=this.frozenFields=null;this.$54d=true}else this.$54d=false;if(_1){if(_2){for(var i=0;i<_2.length;i++){var _5=_2[i];if(!_5.frozen){_5.frozen=true;_5.$74j=true;var _7=_5.getAutoFreezePosition?_5.getAutoFreezePosition():this.freezeLeft()?0:this.fields.length,_8=_5.getAutoFreezePosition?_5.getAutoFreezePosition():this.freezeLeft()?0:this.completeFields.length;_1.addAt(_5,_7);_6.addAt(_5,_8)}}}
+this.fields.slideList(_1,this.freezeLeft()?0:this.fields.length);this.completeFields.slideList(_6,this.freezeLeft()?0:this.completeFields.length);this.resizeFieldsInRealTime=false}
+for(var i=0;i<this.fields.length;i++){var _5=this.fields[i];_5.masterIndex=i}
+if(_1){var _9=this.normalFields=[];for(var i=0;i<this.fields.length;i++){var _5=this.fields[i];if(!_5.frozen)_9.add(_5)}}else this.normalFields=null}
+,isc.A.rebuildForFreeze=function isc_ListGrid_rebuildForFreeze(_1){if(!this.body)return;if(this.filterEditor){this.filterEditor.deriveVisibleFields();this.filterEditor.updateBody(_1);this.filterEditor.remapEditFieldsForFreeze();this.filterEditor.layoutChildren(this.$60m)}
+this.endEditing();this.deriveVisibleFields();this.updateHeader();this.updateBody(_1);this.layoutChildren(this.$60m);if(this.frozenBody){this.frozenBody.markForRedraw("Recalculating draw area from initial sizing of body")}
+if(this.summaryRow&&this.showGridSummary){this.summaryRow.setFields(this.completeFields.duplicate());this.summaryRow.rebuildForFreeze(_1);this.summaryRow.$855()}}
+,isc.A.setCanFreezeFields=function isc_ListGrid_setCanFreezeFields(_1){this.canFreezeFields=_1;delete this.$60v}
+,isc.A.refreshMasterIndex=function isc_ListGrid_refreshMasterIndex(){if(!this.body)return;if(this.header)this.$51c(this.header.getMembers());if(this.body)this.$51c(this.body.fields);if(!this.frozenFields)return;if(this.frozenHeader)this.$51c(this.frozenHeader.getMembers());if(this.frozenBody)this.$51c(this.frozenBody.fields)}
+,isc.A.$51c=function isc_ListGrid__refreshMasterIndexForFields(_1){for(var i=0;i<_1.length;i++){_1[i].masterIndex=this.fields.findIndex("name",_1[i].name)}}
+,isc.A.getFreezeOn=function isc_ListGrid_getFreezeOn(){return(this.freezeOn!=null?this.freezeOn:this.isRTL()?"right":"left")}
+,isc.A.freezeLeft=function isc_ListGrid_freezeLeft(){return this.getFreezeOn()=="left"}
+,isc.A.getLeftBody=function isc_ListGrid_getLeftBody(){return this.frozenFields&&this.freezeLeft()?this.frozenBody:this.body}
+,isc.A.getRightBody=function isc_ListGrid_getRightBody(){return this.frozenFields&&!this.freezeLeft()?this.frozenBody:this.body}
+,isc.A.setFreezeOn=function isc_ListGrid_setFreezeOn(_1){var _2=this.get
+this.freezeOn=_1;if(_1!=_2)this.rebuildForFreeze(true)}
+,isc.A.getFrozenSlots=function isc_ListGrid_getFrozenSlots(_1){var _2=this.frozenFields;if(!_2)return _1;return this.freezeLeft()?_1.slice(0,_2.length):_1.slice(_1.length-_2.length)}
+,isc.A.getUnfrozenSlots=function isc_ListGrid_getUnfrozenSlots(_1){var _2=this.frozenFields;if(!_2)return _1;return this.freezeLeft()?_1.slice(_2.length):_1.slice(0,_1.length-_2.length)}
+,isc.A.fieldIsFrozen=function isc_ListGrid_fieldIsFrozen(_1){if(!this.frozenFields)return false;var _2=this.getField(_1);return _2&&_2.frozen}
+,isc.A.getFieldBody=function isc_ListGrid_getFieldBody(_1){if(!this.frozenFields)return this.body;return this.fieldIsFrozen(_1)?this.frozenBody:this.body}
+,isc.A.getFieldHeader=function isc_ListGrid_getFieldHeader(_1){if(!this.frozenFields)return this.header;return this.fieldIsFrozen(_1)?this.frozenHeader:this.header}
+,isc.A.getFieldHeaderButton=function isc_ListGrid_getFieldHeaderButton(_1){var _2=this.getFieldHeader(_1);return _2?_2.getMember(this.getLocalFieldNum(_1)):null}
+,isc.A.getLocalFieldNum=function isc_ListGrid_getLocalFieldNum(_1){if(this.body&&this.body.isPrinting){var _2=this.fields[_1];if(!this.$54d&&_2.frozen&&this.frozenBody){return this.frozenBody.fields.indexOf(_2)}else{return this.body.fields.indexOf(_2)}}
+if(!this.frozenFields)return _1;var _3;_3=this.frozenFields.length;if(!this.fieldIsFrozen(_1))return _1-_3;return this.freezeLeft()?_1:_1-(this.fields.length-this.frozenFields.length)}
+,isc.A.getFieldNumFromLocal=function isc_ListGrid_getFieldNumFromLocal(_1,_2){if(this.isPrinting){var _3=this.frozenFields!=null?(_2==this.frozenBody?this.frozenFields:this.unfrozenFields):this.fields;var _4=_2.fields[_1];for(var i=0;i<_3.length;i++){if(_3[i].name==_4.name)break;if(_3[i].shouldPrint==false)_1++}}
+if(!this.frozenFields)return _1;if(_2==this.frozenBody){if(this.freezeLeft())return _1;else{var _6=this.fields.length-this.frozenFields.length;return _1+_6}}else{var _7=this.freezeLeft()?this.frozenFields.length:0;return _1+_7}}
+,isc.A.getColumnLeft=function isc_ListGrid_getColumnLeft(_1){var _2=this.getFieldBody(_1);return _2.getColumnLeft(this.getLocalFieldNum(_1))}
+,isc.A.getColumnPageLeft=function isc_ListGrid_getColumnPageLeft(_1){var _2=this.getFieldBody(_1);return _2.getColumnPageLeft(this.getLocalFieldNum(_1))}
+,isc.A.getColumnWidth=function isc_ListGrid_getColumnWidth(_1){var _2=this.getFieldBody(_1);return _2.getColumnWidth(this.getLocalFieldNum(_1))}
+,isc.A.refreshCellStyle=function isc_ListGrid_refreshCellStyle(_1,_2,_3){var _4=this.getFieldBody(_2);return _4.refreshCellStyle(_1,this.getLocalFieldNum(_2),_3)}
+);isc.evalBoundary;isc.B.push(isc.A.freezeField=function isc_ListGrid_freezeField(_1){return this.toggleFrozen(_1,true)}
+,isc.A.unfreezeField=function isc_ListGrid_unfreezeField(_1){return this.toggleFrozen(_1,false)}
+,isc.A.toggleFrozen=function isc_ListGrid_toggleFrozen(_1,_2){if(!isc.isAn.Array(_1))_1=[_1];var _3=false;for(var i=0;i<_1.length;i++){var _5=this.getField(_1[i]);if(!_5||!this.fieldIsVisible(_5)||this.isCheckboxField(_5))
+{continue}
+var _6=_2;if(_6==null)_6=!_5.frozen;if(_5.frozen==_2)continue;_3=true;_5.frozen=_6}
+if(!_3)return false;this.rebuildForFreeze();this.handleViewStateChanged();return true}
+,isc.A.updateBody=function isc_ListGrid_updateBody(_1){if(_1||(this.frozenFields&&!this.frozenBody)||(this.frozenBody&&!this.frozenFields))
+{_1=true;this.dropRecordComponents();if(this.frozenFields){this.$62b=this.showRollOverCanvas;this.$62c=this.showSelectionCanvas;this.showRollOverCanvas=false;this.showSelectionCanvas=false;if(this.$62b)this.updateRollOverCanvas();if(this.$62c)this.updateSelectionCanvas()}else{if(this.$62b)this.showRollOverCanvas=true;if(this.$62c)this.showSelectionCanvas=true;delete this.$62b;delete this.$62c}
+if(this.body){this.$810()}
+if(this.bodyLayout)this.bodyLayout.destroy();if(this.body)this.body.destroy();this.body=this.bodyLayout=this.frozenBody=null;this.createBodies()}
+if(this.isDrawn()){this.updateGridComponents()}
+if(this.body){this.body.fields=this.normalFields||this.fields;if(!_1)this.$75n(this.body);this.body.markForRedraw("fields change")}
+if(this.frozenBody){this.frozenBody.fields=this.frozenFields;if(!_1)this.$75n(this.frozenBody);this.frozenBody.markForRedraw("fields change")}}
+,isc.A.shouldDestroyOnUnembed=function isc_ListGrid_shouldDestroyOnUnembed(_1,_2){if(_1.dontAutoDestroy)return false;if(_1.isBackgroundComponent){if(_2==this.$81l&&_1.creator==this)return true;return false}
+if(_1.isRecordComponent){if(_2==this.$81l)return true;return false}
+if(_1.destroyOnUnembed!=null)return _1.destroyOnUnembed;if(_2==this.$81p)return false;return true}
+,isc.A.$810=function isc_ListGrid__destroyEmbeddedComponentsForRebuild(){var _1=this.body.$29a;if(this.frozenBody){var _2=[];if(_1==null)_1=_2;else _1=_2.addList(_1);_1.addList(this.frozenBody.$29a||[])}
+if(_1&&_1.length>0){for(var i=0;i<_1.length;i++){var _4=_1[i].embeddedRecord,_5=false;if(_4.$29a){for(var j=0;j<_4.$29a.length;j++){var _7=_4.$29a[j];_5=_5||_7.isExpansionComponent;if(this.shouldDestroyOnUnembed(_7,this.$81q)){_7.markForDestroy()}else{_7.deparent()}}
+_4.$29a=null;if(_5)_4.expanded=false;delete _4.$29a}}}}
+,isc.A.createBodies=function isc_ListGrid_createBodies(){if(this.body!=null)return;this.$80i();this.body=this.createBody(this.ID+"_body",this.normalFields||this.fields);this.body.resizeTo("100%","100%");this.bodies=[this.body];this.dragScrollTarget=this.body;var _1=this.frozenFields;if(_1==null||_1.length==0){return this.body}
+this.frozenBody=this.createBody(this.ID+"$51d",_1,true);if(this.body.hscrollOn&&!this.shrinkForFreeze){this.frozenBody.setEndSpace(this.body.getScrollbarSize())}
+if(this.freezeLeft()){this.bodies.unshift(this.frozenBody)}else{this.bodies.add(this.frozenBody)}
+this.bodyLayout=this.createAutoChild("bodyLayout",{width:"100%",height:"100%",autoDraw:false,members:this.bodies},isc.HLayout)}
+,isc.A.bodyOverflowed=function isc_ListGrid_bodyOverflowed(){if(this.summaryRow!=null&&this.summaryRow.body){this.summaryRow.body.setRightSpace(this.body.vscrollOn?this.body.getScrollbarSize():0)}
+if(!this.frozenBody)return;this.frozenBody.setEndSpace(this.body.hscrollOn&&!this.shrinkForFreeze?this.body.getScrollbarSize():0)}
+,isc.A.createBody=function isc_ListGrid_createBody(_1,_2,_3){var _4=isc.ClassFactory.getClass(this.bodyConstructor).createRaw();_4.ID=_1;_4.autoDraw=false;_4.grid=this;_4.fields=_2;_4.frozen=_3;_4.overflow=_3?"hidden":this.bodyOverflow;_4.backgroundColor=this.bodyBackgroundColor;var _5=this.bodyStyleName;if(this.alternateBodyStyleName!=null&&this.alternateRecordStyles){_5=this.alternateBodyStyleName}
+_4.styleName=_5;_4.allowContentAndChildren=true;_4.fixedRowHeights=this.fixedRecordHeights;_4.fixedColumnWidths=this.fixedFieldWidths;_4.alternateRowStyles=this.alternateRecordStyles;_4.alternateRowFrequency=this.alternateRecordFrequency;_4.canSelectText=this.canDragSelectText;_4.showAllRows=this.showAllRecords;if(this.virtualScrolling!=null)_4.virtualScrolling=this.virtualScrolling;if(_4.virtualScrolling)_4.fixedRowHeights=false;_4.dragTarget=this.canDragSelect?null:this;_4.dragAppearance=isc.EventHandler.NONE;_4.locatorParent=this;_4.selectionAppearance=this.selectionAppearance;var _6=isc.ListGrid.$295;for(var i=0;i<_6.length;i++){var _8=_6[i],_9=this[_8];if(_9!=null)_4[_8]=_9}
+isc.addProperties(_4,this.bodyDefaults,this.bodyProperties);this.$51e(_4);if(_3)_4.showEmptyMessage=false;_4.completeCreation();return _4}
+,isc.A.getRowHeight=function isc_ListGrid_getRowHeight(_1,_2){var _3=this.cellHeight;if(this.frozenFields&&this.getEditRow()==_2){var _4=this.getEditForm(),_5=_4?_4.getItems():[];for(var i=0;i<_5.length;i++){var _7=(_5[i].getHeight()+2*this.cellPadding);if(_7>_3)_3=_7}}
+return this.body.updateHeightForEmbeddedComponents(_1,_2,_3)}
+,isc.A.makeSelectionCanvas=function isc_ListGrid_makeSelectionCanvas(_1){this.selectionCanvas=this.createAutoChild("selectionCanvas",{eventProxy:this.body,snapTo:"TL",width:"100%",height:"100%",bubbleMouseEvents:true,destroyOnUnEmbed:false,percentSource:this,percentBox:"custom",grid:this,autoDraw:false});this.selectionUnderCanvas=this.createAutoChild("selectionUnderCanvas",{eventProxy:this.body,snapTo:"TL",width:"100%",height:"100%",bubbleMouseEvents:true,destroyOnUnEmbed:false,percentSource:this,percentBox:"custom",grid:this,autoDraw:false})}
+,isc.A.getSelectionCanvas=function isc_ListGrid_getSelectionCanvas(){if(!this.selectionCanvas)this.makeSelectionCanvas();return this.selectionCanvas}
+,isc.A.getSelectionUnderCanvas=function isc_ListGrid_getSelectionUnderCanvas(){if(!this.selectionUnderCanvas)this.makeSelectionCanvas();return this.selectionUnderCanvas}
+,isc.A.updateSelectionCanvas=function isc_ListGrid_updateSelectionCanvas(){var _1=this.selection,_2,_3,_4;if(isc.isA.CellSelection(_1)){var _5=_1.getSelectedCells()[0];_2=_5?_5[0]:-1,_3=_5?_5[1]:-1;_4=_5?this.getCellRecord(_2,_3):null}else{var _4=this.getSelectedRecord();_2=this.data?this.data.indexOf(_4):-1}
+var _6=this.selectionCanvas,_7=_6?_6.embeddedRecord:null,_8=_6?_6.$289:-1,_9=_6?_6.$57n:-1;if(this.selectionCanvas==null){if(_4==null||!this.showSelectionCanvas)return}else if(this.showSelectionCanvas&&_7==_4&&_8==_2&&_9==_3)
+{return}
+if(this.showSelectionCanvas&&this.selectionType!=isc.Selection.SINGLE&&this.selectionType!=isc.Selection.NONE)
+{this.logWarn("showSelectionCanvas is set to true, but not supported for selectionType "+this.selectionType);this.showSelectionCanvas=false}
+if(!_4||_2==-1||!this.showSelectionCanvas){if(_7){this.removeEmbeddedComponent(_7,_6);var _10=this.selectionUnderCanvas;this.removeEmbeddedComponent(_7,_10)}
+return}
+var _6=this.getSelectionCanvas(),_10=this.getSelectionUnderCanvas();_6.record=_4;_10.record=_4;this.addEmbeddedComponent(_6,_4,_2,_3,"within");this.addEmbeddedComponent(_10,_4,_2,_3,"within")}
+,isc.A.makeRollOverCanvas=function isc_ListGrid_makeRollOverCanvas(){this.rollOverCanvas=this.createAutoChild("rollOverCanvas",{eventProxy:this.body,percentSource:this,percentBox:"custom",bubbleMouseEvents:true,destroyOnUnEmbed:false,grid:this,autoDraw:false});this.rollUnderCanvas=this.createAutoChild("rollUnderCanvas",{eventProxy:this.body,percentSource:this,percentBox:"custom",bubbleMouseEvents:true,destroyOnUnEmbed:false,grid:this,autoDraw:false})}
+,isc.A.getRollOverCanvas=function isc_ListGrid_getRollOverCanvas(_1,_2){if(!this.rollOverCanvas)this.makeRollOverCanvas();return this.rollOverCanvas}
+,isc.A.getRollUnderCanvas=function isc_ListGrid_getRollUnderCanvas(_1,_2){if(!this.rollUnderCanvas)this.makeRollOverCanvas();return this.rollUnderCanvas}
+,isc.A.updateRollOverCanvas=function isc_ListGrid_updateRollOverCanvas(_1,_2,_3){var _4=false,_5;if(_3||!this.showRollOverCanvas||_1==-1){_4=true}else{var _5=this.getCellRecord(_1,_2);if(_5==null||Array.isLoading(_5)){_4=true}}
+if(_4){if(this.rollOverCanvas){this.removeEmbeddedComponent(this.rollOverCanvas.embeddedRecord,this.rollOverCanvas);this.removeEmbeddedComponent(this.rollUnderCanvas.embeddedRecord,this.rollUnderCanvas)}
+return}
+if(!this.useCellRollOvers)_2=null;var _6=this.rollOverCanvas=this.getRollOverCanvas(_1,_2),_7=this.rollUnderCanvas=this.getRollUnderCanvas(_1,_2);_6.record=_5;_7.record=_5;this.addEmbeddedComponent(_6,_5,_1,_2,"within");this.addEmbeddedComponent(_7,_5,_1,_2,"within")}
+,isc.A.updateEmbeddedComponentZIndex=function isc_ListGrid_updateEmbeddedComponentZIndex(_1){if(!_1)return;if(this.selectionCanvas==_1){var _2=this.body.getTableZIndex();this.selectionCanvas.setZIndex(_2+50)}
+if(this.selectionUnderCanvas==_1){var _2=this.body.getTableZIndex();this.selectionUnderCanvas.setZIndex(_2-100)}
+if(this.rollOverCanvas==_1){var _2=this.body.getTableZIndex();_1.setZIndex(_2+100)}
+if(this.rollUnderCanvas==_1){var _2=this.body.getTableZIndex();_1.setZIndex(_2-50)}}
+,isc.A.$80d=function isc_ListGrid__handleEmbeddedComponentResize(_1,_2,_3,_4){if(this.frozenBody!=null&&_4!=null&&_4!=0){var _5=(_1==this.frozenBody)?this.body:this.frozenBody;_5.markForRedraw("Embedded component requires row resizing")}}
+,isc.A.getButtonProperties=function isc_ListGrid_getButtonProperties(){var _1={align:null};if(this.headerTitleStyle!=null)_1.titleStyle=this.headerTitleStyle;if(this.headerBaseStyle!=null)_1.baseStyle=this.headerBaseStyle;if(this.headerButtonSrc!=null)_1.src=this.headerButtonSrc;if(this.frozenHeaderBaseStyle!=null)
+_1.frozenBaseStyle=this.frozenHeaderBaseStyle;if(this.frozenHeaderTitleStyle!=null)
+_1.frozenTitleStyle=this.frozenHeaderTitleStyle;if(this.frozenHeaderButtonSrc!=null)
+_1.frozenSrc=this.frozenHeaderButtonSrc;var _2=isc.addProperties({},this.headerButtonDefaults,_1,this.headerButtonProperties);return _2}
+,isc.A.getHeaderButtonProperties=function isc_ListGrid_getHeaderButtonProperties(_1){var _2=this.getButtonProperties();if(this.buttonTitleFunction==null){this.buttonTitleFunction=new Function("return this.parentElement.grid.getHeaderButtonTitle(this)")}
+isc.addProperties(_2,{defaultRadioGroup:this.getID()+"$34f",getActionType:function(_9,_10,_11,_12){var _3=this.parentElement,_4;if(_3)_4=_3.grid;if(_4&&isc.isA.ListGrid(_4)){var _5=_4.fields[_3.getButtonNumber(this)];var _6=(_4.canSort!=false);if(_6&&_5!=null)_6=(_4.$66c(_5)!=false);if(_6)return isc.Button.RADIO}
+return this.invokeSuper(null,"getActionType",_9,_10,_11,_12)},getTitle:this.buttonTitleFunction,mouseOver:function(){var _4=this.parentElement.grid;if(_4.shouldShowHeaderMenuButton(this)){var _7=_4.getHeaderMenuButton(this);this.addPeer(_7);_7.addProperties({dragTarget:this});if(this.zIndex>_7.zIndex)_7.bringToFront();if(!_7.isVisible()){_7.show()}}
+return this.Super("mouseOver",arguments)},mouseOut:function(){var _4=this.parentElement.grid,_8=_4.headerMenuButton;if(_8&&_8.isVisible()&&_8.masterElement==this&&isc.EH.getTarget()!=_8)
+{_4.headerMenuButton.hide()}
+return this.Super("mouseOut",arguments)}},_1);return _2}
+,isc.A.makeHeader=function isc_ListGrid_makeHeader(){if(this.header!=null)return;if(this.headerSpans){this.spanMap={};for(var i=0;i<this.headerSpans.length;i++){var _2=this.headerSpans[i];for(var j=0;j<_2.fields.length;j++){this.spanMap[_2.fields[j]]=_2}}}
+var _4=this.header=this.makeHeaderForFields(this.normalFields||this.fields);_4.locatorParent=this;if(this.sorter==null)this.makeCornerSortButton();this.headers=[_4];if(this.frozenFields){var _5=this.frozenHeader=this.makeHeaderForFields(this.frozenFields,"visible",this.getID()+"$51f");if(this.freezeLeft()){this.headers.unshift(this.frozenHeader)}else{this.headers.add(this.frozenHeader)}
+var _6=this.headers.duplicate();this.headerLayout=this.createAutoChild("headerLayout",{autoDraw:false,overflow:"hidden",height:this.headerHeight,members:_6},isc.HLayout)}
+var _7=this.headerLayout||this.header;this.observe(_7,"moved","observer.updateSorter()");this.observe(_7,"resized","observer.updateSorter()")}
+,isc.A.updateSorter=function isc_ListGrid_updateSorter(){if(!this.sorter)return;if(this.$rm||this.$qz){this.delayCall("updateSorter");return}
+var _1=(this.header||this.headerLayout)&&this.$313();if(_1){this.sorter.moveTo(this.getSorterLeft(),this.getSorterTop())}else{this.sorter.moveTo(0,0)}
+this.sorter.setVisibility(_1?isc.Canvas.INHERIT:isc.Canvas.HIDDEN);if(_1&&this.isDrawn()&&!this.sorter.isDrawn())this.sorter.draw()}
+,isc.A.makeHeaderForFields=function isc_ListGrid_makeHeaderForFields(_1,_2,_3){var _4=this.createHeader({ID:_3,grid:this,buttons:_1.duplicate(),reorderOnDrop:false,height:null,minMemberSize:this.minFieldWidth,tabWithinToolbar:false,overflow:_2||"hidden",_redrawWithParent:!this.fixedFieldWidths})
+this.observe(_4,"scrollTo","observer.headerScrolled()");return _4}
+,isc.A.createHeader=function isc_ListGrid_createHeader(_1){var _2=this;var _3=this.canTabToHeader||(this.canTabToHeader==null&&isc.screenReader);var _4=isc.addProperties({makeButton:function(_6,_26,_27,_28,_29){_6=isc.addProperties({},_6);if(_6.headerTitleStyle)_6.titleStyle=_6.headerTitleStyle;else if(_6.frozen&&this.buttonProperties.frozenTitleStyle)
+_6.titleStyle=_6.frozenTitleStyle;if(_6.frozen&&this.buttonProperties.frozenSrc)
+_6.src=this.buttonProperties.frozenSrc;_6.showIf=null;_6.grid=_2;if(_2.shouldAutoFitField(_6)){var _5=_2.getAutoFitWidthApproach(_6);if(_5=="title"||_5=="both"){_6.overflow="visible";_6.resized=function(){if(this.isDrawn()&&this.grid){this.grid.headerButtonResized(this)}}}}
+if(_6.$776){_6.width=_6.$776}else if(_6.width==null&&_2.shouldAutoFitField(_6)){_6.width=this.minFieldWidth||1}
+_6.sizeImageToFitOverflow=true;var _6=this.Super("makeButton",[_6,_26,_27,_28,_29]);var _7;if(_6.headerBaseStyle){_6.baseStyle=_6.headerBaseStyle;_7=true}else if(!_7){if(_6.frozen&&this.buttonProperties.frozenBaseStyle)
+_6.setBaseStyle(this.buttonProperties.frozenBaseStyle);else if(this.buttonProperties.baseStyle!=null)
+_6.setBaseStyle(this.buttonProperties.baseStyle)}
+return _6},buttonProperties:this.getHeaderButtonProperties(),border:this.headerBorder,styleName:this.headerBarStyle,backgroundColor:this.headerBackgroundColor,backgroundImage:this.headerBackgroundImage,canResizeItems:this.canResizeFields,canReorderItems:this.canReorderFields,dontObserve:false,childVisibilityChanged:function(){this.Super("childVisibilityChanged",arguments);this.$55g()},$3j:function(){this.Super("$3j",arguments);this.$55g()},spannedFields:Array.create({sortUnique:true}),addSpan:function(_18,_26){if(!this.$55h)this.$55h=[];this.$55h.add(_18);this.spannedFields.addList(_26);if(this.isDrawn()){this.$55i(_18);this.addChild(_18)}},$55g:function(){if(!this.$55h||!this.isDrawn())return;var _8=this.instantRelayout;this.instantRelayout=false;for(var i=0;i<this.$55h.length;i++)this.$55i(this.$55h[i]);this.instantRelayout=_8},$82w:function(_18){if(_18.$82y!=null){return _18.$82y}
+var _10=[],_11=_18.fields.length,_12=true;for(var i=0;i<this.members.length;i++){if(_18.$55k[this.members[i].name]==true){_12=false;_10[_10.length]=this.members[i];_11--}
+if(_11==0)break}
+_18.$82y=_10;return _12?null:_10},$55i:function(_18){if(!this.isDrawn()){return}
+if(_18.$55j){_18.setHeight(Math.floor(this.getHeight()/2))}
+var _13=this.$82w(_18);if(!_13){if(this.isVisible()){_18.hide()}
+return}
+var _14,_15=0;for(var i=0;i<_13.length;i++){var _16=_13[i];_16.canReorder=false;_16.layoutAlign="bottom";if(_16.visibility!=isc.Canvas.HIDDEN){_15+=_16.getVisibleWidth();if(!_14||this.isRTL())_14=_16}}
+if(_14){_18.setVisibility(isc.Canvas.INHERIT);_18.setLeft(_14.getLeft());_18.setWidth(_15)}},$58r:function(){if(!this.$55h)return;this.$55g();var _17=this.getVisibleHeight();for(var i=0;i<this.$55h.length;i++){var _18=this.$55h[i];this.addChild(_18);var _13=this.$82w(_18);if(!_13)continue;for(var j=0;j<_13.length;j++){var _20=_13[j],_21=_20.getVisibleHeight(),_22=_18.getVisibleHeight();if(_22+_21>_17)_20.setHeight(_21-_22)}
+_18.bringToFront()}},removeButtons:function(_26){if(_2.headerSpans)_2.$82z(_26,this);this.Super("removeButtons",arguments)},addButtons:function(_26,_27){this.Super("addButtons",arguments);if(_2.headerSpans)_2.$60x(_26,this);this.$58r()},draw:function(){if(this.$55h&&_2.unspannedHeaderVAlign){for(var i=0;i<this.buttons.length;i++){var _6=this.buttons[i];if(!this.spannedFields.contains(_6.name))_6.valign=_2.unspannedHeaderVAlign}}
+this.Super("draw",arguments);this.$58r()},getStandardChildLocator:function(_26){var _23=_26.masterIndex,_2=this.grid;if(_23!=null&&_2!=null){var _24=_2.getFieldName(_23);return isc.AutoTest.createLocatorFallbackPath("headerButton",{fieldName:_24})}
+return this.Super("getStandardChildLocator",_26)},getChildFromLocatorSubstring:function(_26){if(isc.isA.Canvas(this[_26]))return this[_26];var _25=isc.AutoTest.parseLocatorFallbackPath(_26);if(this.grid&&_25&&_25.name=="headerButton"){var _24=_25.config.fieldName,_23=this.grid.getFieldNum(_24),_20=this.grid.getFieldHeader(_23);if(_23==-1||_20==null){this.logWarn("fieldName:"+_24+", gave fieldNum:"+_23+" unable to find header button for this field.");return}
+if(_20!=this){this.logWarn("AutoTest locator string specified this header for field "+_24+" but that header button is contained in header "+_20+". This can happen if headers have been frozen / "+"unfrozen since the locator string was created. Redirecting to that widget.");return _20.getChildFromLocatorSubstring(_26)}
+return this.members[this.grid.getLocalFieldNum(_23)]}
+return this.Super("getChildFromLocatorSubstring",arguments)}},_1);if(!_3){_4.tabIndex=-1}
+if(this.headerButtonConstructor!=null)
+_4.buttonConstructor=this.headerButtonConstructor;var _20=this.createAutoChild("header",_4,isc.Toolbar);if(_20.canReorderItems&&!_20.dontObserve){this.observe(_20,"itemDragReordered","observer.headerDragReordered(itemNum,newPosition,this)")}
+if(_20.canResizeItems&&!_20.dontObserve)this.$62l(_20);if(this.headerSpans)this.$60x(_1.buttons,_20);return _20}
+,isc.A.headerButtonResized=function isc_ListGrid_headerButtonResized(_1){this.$45m("header button resized")}
+,isc.A.$60x=function isc_ListGrid__addHeaderSpans(_1,_2){var _3=[],_4=_1.getProperty(this.fieldIdProperty);for(var i=0;i<this.headerSpans.length;i++){var _6=this.headerSpans[i];if(_4.intersect(_6.fields).length){_3.add(_6)}}
+for(var i=0;i<_3.length;i++){var _6=_3[i];var _7=this,_8=_6.liveObject;if(_8==null||_8.destroyed||_8.destroying||_8.$65i){var _9=isc.addProperties(this.getButtonProperties(),{_constructor:_2.buttonConstructor,height:this.headerSpanHeight,align:"center",valign:this.headerSpanVAlign,showRollOver:false,showContextMenu:function(){return _7.headerSpanContextClick(this)}},_6);_8=_6.liveObject=this.createAutoChild("headerSpan",_9);_8.$55j=this.headerSpanHeight==null;if(_8.$55j){var _10=_6.height||(this.headerSpanProperties?this.headerSpanProperties.height:null)||(this.headerSpanDefaults?this.headerSpanDefaults.height:null);if(_10!=null)_8.$55j=false}}
+_8.$55k={};for(var _11=0;_11<_6.fields.length;_11++){_8.$55k[_6.fields[_11]]=true}
+_8.$82y=null;_2.addSpan(_8,_8.fields)}}
+,isc.A.$82z=function isc_ListGrid__removeHeaderSpans(_1,_2){var _3=[],_4=_1.getProperty(this.fieldIdProperty);for(var i=0;i<this.headerSpans.length;i++){var _6=this.headerSpans[i];if(_4.intersect(_6.fields).length){var _7=_6.liveObject;if(_7)_7.$82y=null}}}
+,isc.A.dirtyHeader=function isc_ListGrid_dirtyHeader(){if(this.header)this.header.markForRedraw()}
+,isc.A.updateHeader=function isc_ListGrid_updateHeader(){var _1=this.frozenHeader?this.headerLayout:this.header;if(_1){_1.markForDestroy();_1.clear();if(this.showHeader){var _2=[this.frozenHeader,this.header];for(var i=0;i<_2.length;i++){if(_2[i]==null)continue;if(_2[i].$55h!=null){for(var _4=0;_4<_2[i].$55h.length;_4++){var _5=_2[i].$55h[_4];if(_5)_5.deparent()}}}}
+_1.clearIDs()}
+this.header=this.frozenHeader=this.headerLayout=null;if(this.headerMenuButton&&this.headerMenuButton.destroyed){this.headerMenuButton=null}
+var _6=this.showHeader,_7;if(_6){_7=this.gridComponents.indexOf(this.$881);if(_7==-1){_6=false;this.logWarn("showHeader set to true, but header not included in grid header components."+" The header will not be shown.")}}
+if(_6){this.makeHeader();if(this.isDrawn()){this.updateGridComponents()}}else if(this.sorter){this.sorter.hide()}}
+,isc.A.setHeaderHeight=function isc_ListGrid_setHeaderHeight(_1){var _2=this.headerHeight;if(_2==_1)return;this.headerHeight=_1;if(this.showHeader==false)return;if(!this.header&&_1>0){var _3=this.gridComponents.indexOf("header");if(_3==-1){return}
+if(this.isDrawn()){this.updateGridComponents()}}else{if(_2==0)this.updateHeader();this.layoutChildren(this.$616)}}
+,isc.A.setShowHeader=function isc_ListGrid_setShowHeader(_1){if(_1==this.showHeader)return;this.showHeader=_1;this.updateHeader();this.layoutChildren(this.$617)}
+,isc.A.shouldShowHeaderMenuButton=function isc_ListGrid_shouldShowHeaderMenuButton(_1){var _2;if(_1.showDefaultContextMenu==false){_2=false}else if(_1.showHeaderContextMenuButton!=null){_2=_1.showHeaderContextMenuButton}else{_2=this.showHeaderMenuButton}
+if(this.showHeaderContextMenu&&_2){var _3=this.getHeaderContextMenuItems(_1.masterIndex);return(_3&&_3.length>0)}
+return false}
+,isc.A.getHeaderMenuButton=function isc_ListGrid_getHeaderMenuButton(_1){if(!this.headerMenuButton||this.headerMenuButton.destroyed){var _2={};if(this.headerMenuButtonHeight)_2.height=this.headerMenuButtonHeight;if(this.headerMenuButtonWidth)_2.width=this.headerMenuButtonWidth;if(this.headerMenuButtonIcon)_2.icon=this.headerMenuButtonIcon;if(this.headerMenuButtonIconHeight){_2.iconHeight=this.headerMenuButtonIconHeight}
+if(this.headerMenuButtonIconWidth){_2.iconWidth=this.headerMenuButtonIconWidth}
+if(this.headerMenuButtonBaseStyle){_2.baseStyle=this.headerMenuButtonBaseStyle}
+if(this.headerMenuButtonTitleStyle){_2.titleStyle=this.headerMenuButtonTitleStyle}
+if(this.headerMenuButtonSrc)_2.src=this.headerMenuButtonSrc;this.createAutoChild("headerMenuButton",_2,"Button",true)}
+this.headerMenuButton.canDragResize=(_1&&_1.canDragResize!=null?_1.canDragResize&&this.canResizeFields:this.canResizeFields);this.headerMenuButton.addProperties({doubleClick:function(){this.creator.headerMenuButtonDoubleClick()}});return this.headerMenuButton}
+,isc.A.headerMenuButtonClick=function isc_ListGrid_headerMenuButtonClick(){var _1=this.header,_2=_1.containsEvent()?_1.getMouseOverButtonIndex():-1;if(_2<0&&this.frozenHeader){_1=this.frozenHeader;_2=_1.getMouseOverButtonIndex()}
+if(_2==-1)return;var _3=_1.getMember(_2);var _4=_3.getPageBottom(),_5=this.$314?this.$314.getVisibleWidth():isc.Menu.getPrototype().defaultWidth,_6=Math.max(_3.getPageLeft(),(_3.getPageRight()-_5));this.displayHeaderContextMenu(_3,[_6,_4]);this.headerMenuButton.bringToFront()}
+,isc.A.headerMenuButtonDoubleClick=function isc_ListGrid_headerMenuButtonDoubleClick(){var _1=this.header,_2=_1.getMouseOverButtonIndex();if(_2==-1&&this.frozenHeader){_1=this.frozenHeader;_2=_1.getMouseOverButtonIndex()}
+if(_2==-1)return;var _3=_1.getMember(_2);this.headerDoubleClick(_2,_1);isc.Menu.hideAllMenus()}
+,isc.A.getHeaderButtonTitle=function isc_ListGrid_getHeaderButtonTitle(_1){var _2=_1;if(isc.isA.Object(_1))_2=_1.masterIndex;var _3=this.fields[_2];if(!_3)return"";var _4=_3[this.fieldIdProperty],_5=this.isSortField(_4),_6=(_5)&&(!this.showSortArrow||this.showSortArrow==isc.ListGrid.FIELD||this.showSortArrow==isc.ListGrid.BOTH),_7=(this.showSortNumerals==false?false:_5&&this.getSortFieldCount()>1),_8=this.getFieldTitle(_2);var _9;if(_7){var _10=this.getSortSpecifier(_4);_9=_10.sortIndex}
+var _11=_8+(_6?" "+this.getSortArrowImage(_2):"")+(_7?" "+this.getSortNumeralHTML(_4,_9):"");if(this.$913(_1)&&this.shouldShowHeaderMenuButton(_1)){_11+=isc.Canvas.spacerHTML(this.headerMenuButtonWidth,1)}
+return _3.showTitle!=false?_11:isc.nbsp}
+,isc.A.$913=function isc_ListGrid__shouldLeaveHeaderMenuButtonSpace(_1){if(this.leaveHeaderMenuButtonSpace!=null)return this.leaveHeaderMenuButtonSpace;else return _1.align!=isc.Canvas.CENTER}
+,isc.A.$63m=function isc_ListGrid__setCheckboxHeaderState(_1){var _2=this.getCheckboxFieldPosition(),_3=this.fields[_2];if(!this.isCheckboxField(_3))return;var _4=_1?(this.checkboxFieldTrueImage||this.booleanTrueImage):(this.checkboxFieldFalseImage||this.booleanFalseImage),_5=(this.canSelectAll==false||this.selectionType=="single")?" ":this.getValueIconHTML(_4,_3);this.setFieldTitle(_2,_5);_3.$63h=_1}
+,isc.A.updateCheckboxHeaderState=function isc_ListGrid_updateCheckboxHeaderState(){var _1=(isc.isAn.Array(this.data)||(isc.isA.ResultSet(this.data)&&this.data.allMatchingRowsCached())),_2=this.getSelection()||[];if(_1){if(_2.length==this.data.getLength()){this.$63m(true)}else{this.$63m(false)}}}
+,isc.A.$666=function isc_ListGrid__headerClick(_1,_2){var _3=_2.getMember(_1).masterIndex;return this.headerClick(_3,_2)}
+,isc.A.headerClick=function isc_ListGrid_headerClick(_1,_2){if(this.onHeaderClick&&(this.onHeaderClick(_1,_2)==false)){return}
+var _3=this.fields[_1];if(this.isCheckboxField(_3)&&this.selectionType!="single"&&this.canSelectAll!=false){if(_3.$63h){this.deselectAllRecords();this.$63m(false)}else{this.selectAllRecords();if(!isc.ResultSet||!isc.isA.ResultSet(this.data)||this.data.allMatchingRowsCached())
+{this.$63m(true)}}
+return false}
+if(this.canAutoFitFields&&this.headerAutoFitEvent=="click"){this.autoFitField(_1)}
+if(!this.$66c(_3))return false;var _4=_3[this.fieldIdProperty],_5=this.isSortField(_4)?this.getSortSpecifier(_4):null,_6=isc.EventHandler,_7=_6.getKey(),_8=_6.shiftKeyDown(),_9=this.$765,_10=_3.sortDirection;if(_8&&this.$91d()&&this.$91k(_3)){if(this.isSortField(_4)){if(_10==_9||this.canUnsort==false){this.toggleSort(_4)}else{this.toggleSort(_4,"unsort")}}else{this.$73z(_3)}}else{if(this.isSortField(_4)&&this.getSortFieldCount()==1){if(_10==_9||this.canUnsort==false){this.toggleSort(_4)}else{this.toggleSort(_4,"unsort")}}else{var _11=this.$766(_3);this.setSort([{property:_4,direction:_11}])}}
+return false}
+,isc.A.$774=function isc_ListGrid__headerDoubleClick(_1,_2){var _3=_2.getMember(_1).masterIndex;return this.headerDoubleClick(_3,_2)}
+,isc.A.headerDoubleClick=function isc_ListGrid_headerDoubleClick(_1,_2){var _3=this.fields[_1];if(this.isCheckboxField(_3))return;if(this.canAutoFitFields&&this.headerAutoFitEvent=="doubleClick"){this.autoFitField(_1)}
+return false}
+,isc.A.fieldDragResizeStart=function isc_ListGrid_fieldDragResizeStart(){this.makeDragLine();this._dragLine.resizeTo(2,this.getVisibleHeight()-(this.body.hscrollOn?this.body.getScrollbarSize():0));var _1=this.ns.EH.dragTarget;var _2=this.getField(_1.masterIndex);if(_2)_2.autoFitWidth=false;_1.setWidth(_1.getVisibleWidth());_1.setOverflow("hidden")}
+,isc.A.fieldDragResizeMove=function isc_ListGrid_fieldDragResizeMove(_1){var _2=this.ns.EH,_3=_2.dragTarget;var _4=this.header.$6j;this.showDragLineForField(_4);if(this.resizeFieldsInRealTime){var _5=_2.dragResizeWidth;this.$26a[_4]=_5;this.$54e=true;this.setBodyFieldWidths(this.$26a);this.body.useQuickDrawAheadRatio=true;this.body.redraw("fieldDragResize");delete this.body.useQuickDrawAheadRatio;delete this.body.$54e;var _6=this.body.getScrollLeft();if(_6>0)this.header.scrollTo(_6,null,"headerResize")}}
+,isc.A.fieldDragResizeStop=function isc_ListGrid_fieldDragResizeStop(){this.hideDragLine()}
+,isc.A.headerDragReordered=function isc_ListGrid_headerDragReordered(_1,_2,_3){var _4=_3.getMember(_1).masterIndex,_5=_3.getMember(_2).masterIndex;this.reorderField(_4,_5)}
+,isc.A.reorderField=function isc_ListGrid_reorderField(_1,_2){this.reorderFields(_1,_1+1,_2-_1)}
+,isc.A.reorderFields=function isc_ListGrid_reorderFields(_1,_2,_3){if(this.showFilterEditor&&this.filterEditor!=null){this.filterEditor.reorderFields(_1,_2,_3)}
+if(this.summaryRow&&this.showGridSummary){this.summaryRow.reorderFields(_1,_2,_3)}
+var _4=this.fields[_1],_5=this.fields[_2-1],_6=_1+_3,_7=this.fields[_6];var _8=this.$60z(),_9=this.fields[_8];if(this.$26a!=null)this.$26a.slideRange(_1,_2,_1+_3);if(this.completeFields==null)this.setFields(this.fields);if(this.completeFields.contains(_7)){var _10=this.completeFields.indexOf(_4),_11=this.completeFields.indexOf(_5)+1,_12=this.completeFields.indexOf(_7);this.completeFields.slideRange(_10,_11,_12)}
+this.deriveVisibleFields();if(_8!=null){_8=this.fields.indexOf(_9);if(_8==-1)_8=null;this.$600(_8)}
+var _13;if(!this.frozenFields){_13=this.getFieldHeader(_1);if(_13){_13.reorderItems(this.getLocalFieldNum(_1),this.getLocalFieldNum(_2),this.getLocalFieldNum(_1+_3))}}else{_13=this.getFieldHeader(_1);this.rebuildForFreeze();this.syncHeaderScrolling(this.body.getScrollLeft())}
+if(_8!=null&&_13)
+_13.selectButton(this.getLocalFieldNum(_8));var _14=this.$30a;if(_14){var _15=this.$286,_16=this.getEditRow(),_17=this.getEditField(),_18=[]
+for(var i=0;i<_15.items.length;i++){var _20=_15.items[i];_20.colNum=this.fields.findIndex(this.fieldIdProperty,_20.getFieldName());for(var j=0;j<=_18.length;j++){if(_18[j]==null||_18[j].colNum>_20.colNum){_18.addAt(_20,j);break}}}
+_15.items.setArray(_18);this.$30u=this.fields.indexOf(_17)}
+var _22=this.body;if(this.frozenFields&&_1<this.frozenFields.length){_22=this.frozenBody}
+if(_22){this.body.fields=this.normalFields||this.fields;if(this.frozenBody)this.frozenBody.fields=this.frozenFields;this.setBodyFieldWidths(this.$26a);if(_22.$29a!=null){this.$75n(_22)}
+if(!_22.isDirty())this.$25a("reorderFields")}
+this.handleFieldStateChanged()}
+,isc.A.remapEditFieldsForFreeze=function isc_ListGrid_remapEditFieldsForFreeze(){if(this.$30a){var _1=this.getEditForm(),_2=_1.getItems();for(var i=0;i<_2.length;i++){var _4=_2[i];_4.colNum=this.fields.findIndex(this.fieldIdProperty,_4.getFieldName());var _5=this.fields[_4.colNum];if(!this.$54d&&_5.frozen)_4.containerWidget=this.frozenBody;else _4.containerWidget=this.body}}}
+,isc.A.headerDragResized=function isc_ListGrid_headerDragResized(_1,_2,_3){var _4=_3.getMember(_1).masterIndex;this.resizeField(_4,_2,true)}
+,isc.A.setCanResizeFields=function isc_ListGrid_setCanResizeFields(_1){if(this.canResizeFields==_1)return;this.canResizeFields=_1;if(this.header)this.header.setCanResizeItems(_1);if(this.frozenHeader)this.frozenHeader.setCanResizeItems(_1);if(this.headerMenuButton)this.headerMenuButton.canDragResize=_1;if(_1){if(this.header&&!this.header.dontObserve)this.$62l(this.header);if(this.frozenHeader&&!this.frozenHeader.dontObserve)
+this.$62l(this.frozenHeader)}else{if(this.header)this.$62m(this.header);if(this.frozenHeader)this.$62m(this.frozenHeader)}}
+,isc.A.$62l=function isc_ListGrid__observeHeaderResize(_1){this.observe(_1,"itemDragResized","observer.headerDragResized(itemNum,newSize,this)");this.observe(_1,"dragResizeMemberStart","observer.fieldDragResizeStart()");this.observe(_1,"dragResizeMemberMove","observer.fieldDragResizeMove()");this.observe(_1,"dragResizeMemberStop","observer.fieldDragResizeStop()")}
+,isc.A.$62m=function isc_ListGrid__ignoreHeaderResize(_1){if(this.isObserving(_1,"itemDragResized"))
+this.ignore(_1,"itemDragResized");if(this.isObserving(_1,"dragResizeMemberStart"))
+this.ignore(_1,"dragResizeMemberStart");if(this.isObserving(_1,"dragResizeMemberMove"))
+this.ignore(_1,"dragResizeMemberMove");if(this.isObserving(_1,"dragResizeMemberStop"))
+this.ignore(_1,"dragResizeMemberStop")}
+,isc.A.resizeField=function isc_ListGrid_resizeField(_1,_2,_3){if(!isc.isA.Number(_1))_1=this.getFieldNum(_1);if(_1==-1)return;if(this.header&&this.header.isDrawn()){var _4=this.getFieldHeader(_1),_5=this.getLocalFieldNum(_1);_4.getMember(_5).setWidth(_2)}
+if(_3==null||_3){this.fields[_1].width=_2;this.fields[_1].autoFitWidth=false}
+if(!this.isDrawn())return;this.$26a[_1]=_2;this.$54e=true;this.setBodyFieldWidths(this.$26a);if(this.body.isDirty())this.body.redraw("setting body field widths");delete this.$54e;if(this.showFilterEditor&&this.filterEditor){this.filterEditor.resizeField(_1,_2,_3)}
+if(this.summaryRow&&this.showGridSummary){this.summaryRow.resizeField(_1,_2,_3)}
+this.handleFieldStateChanged()}
+,isc.A.$313=function isc_ListGrid__showSortButton(){var _1=this.showSortArrow;if(_1!=null){return(_1==isc.ListGrid.CORNER||_1==isc.ListGrid.BOTH)}
+return this.$54u()}
+,isc.A.$54u=function isc_ListGrid__shouldLeaveScrollbarGap(){if(this.leaveScrollbarGap)return true;if(!this.body||this.isEmpty())return false;if(this.body.vscrollOn)return true;var _1=this.body,_2=this.headerHeight,_3=this.getInnerHeight()-this.body.getVMarginBorder()-
+(this.showHeader?_2:0);if(this.autoFitData==isc.Canvas.VERTICAL||this.autoFitData==isc.Canvas.BOTH){_3=(this.getTotalRows()*this.cellHeight);var _4=this.getAutoFitMaxBodyHeight();if(_4&&_4<_3){_3=_4}
+if(this.autoFitMaxRows&&(this.autoFitMaxRows*this.cellHeight)>_3){_3=(this.autoFitMaxRows*this.cellHeight)}}
+if(_3<=0)return false;return this.predictScrollbarGap&&this.bodyOverflow==isc.Canvas.AUTO&&(this.getTotalRows()*this.cellHeight>_3)}
+,isc.A.getSorterTop=function isc_ListGrid_getSorterTop(){return(this.headerLayout||this.header).getTop()}
+,isc.A.getSorterLeft=function isc_ListGrid_getSorterLeft(){if(this.isRTL()){return this.getLeftMargin()+this.getLeftBorderSize()+this.getLeftPadding();}else{var _1=(this.headerLayout||this.header);return _1.getWidth()+_1.getLeft()}}
+,isc.A.makeCornerSortButton=function isc_ListGrid_makeCornerSortButton(){this.sorter=this.createAutoChild("sorter",isc.addProperties(this.getButtonProperties(),this.sorterDefaults,{ID:this.getID()+"_sorter",width:this.getScrollbarSize(),height:this.headerHeight,backgroundColor:this.headerBackgroundColor,imgDir:this.widgetImgDir,visibility:(this.$313()?isc.Canvas.INHERIT:isc.Canvas.HIDDEN)}));this.addChild(this.sorter,"sorter",false)}
+,isc.A.sorterContextClick=function isc_ListGrid_sorterContextClick(){var _1=this.showHeaderContextMenu;if(this.showCornerContextMenu!=null)_1=this.showCornerContextMenu;if(_1)return this.displayHeaderContextMenu(this.sorter)}
+,isc.A.headerBarContextClick=function isc_ListGrid_headerBarContextClick(_1){var _2=this.showHeaderContextMenu;if(this.showCornerContextMenu!=null)_2=this.showCornerContextMenu;if(_2){return this.displayHeaderContextMenu(_1.getMember(_1.getMouseOverButtonIndex()))}}
+,isc.A.headerSpanContextClick=function isc_ListGrid_headerSpanContextClick(_1){var _2=this.getHeaderSpanContextMenuItems(_1);if(!_2||_2.length==0)return false;if(!this.$58q){this.$58q=this.getMenuConstructor().create({items:_2})}else{this.$58q.setItems(_2)}
+this.$58q.showContextMenu();return false}
+,isc.A.displayHeaderContextMenu=function isc_ListGrid_displayHeaderContextMenu(_1,_2){if(!_1)return;var _3=this.fields[_1.masterIndex];if(_3&&_3.showDefaultContextMenu==false)return false;var _4=this.getHeaderContextMenuItems(_1.masterIndex);if(_4.length==0)return;if(!this.$314)this.$314=this.getHeaderContextMenu(_1);this.$314.setData(_4);this.$92m=true;if(_2!=null&&_2.length>0){this.$314.moveTo(0,0);this.$314.setVisibility("hidden");if(!this.$314.isDrawn())this.$314.draw();else this.$314.redraw();this.$314.placeNear(_2[0],_2[1]);this.$314.show();return false}else{return this.$314.showContextMenu(_1)}}
+,isc.A.getToggleFreezeText=function isc_ListGrid_getToggleFreezeText(_1){var _2={field:_1,viewer:this,title:this.getSummaryTitle(_1)}
+return(!this.$54d&&_1.frozen)?this.unfreezeFieldText.evalDynamicString(this,_2):this.freezeFieldText.evalDynamicString(this,_2)}
+,isc.A.getGroupByText=function isc_ListGrid_getGroupByText(_1){var _2={field:_1,title:this.getSummaryTitle(_1),viewer:this}
+return this.groupByText.evalDynamicString(this,_2)}
+,isc.A.$58f=function isc_ListGrid__shouldGroupByField(_1){var _1=this.getField(_1);return!!(_1&&this.$58g(_1)&&this.data.getLength()<=this.groupByMaxRecords)}
+,isc.A.$58g=function isc_ListGrid__canGroupByField(_1){var _1=this.getField(_1);return!!(_1&&((this.canGroupBy==true&&_1.canGroupBy!=false)||(this.canGroupBy!=false&&_1.canGroupBy==true)))}
+);isc.evalBoundary;isc.B.push(isc.A.getHeaderSpanContextMenuItems=function isc_ListGrid_getHeaderSpanContextMenuItems(_1){if(!this.showTreeColumnPicker&&!this.showHeaderSpanContextMenu)return false;var _2=[{title:this.fieldVisibilitySubmenuTitle,submenu:this.getColumnPickerItems(),icon:"[SKINIMG]actions/column_preferences.png"}];var _3=this,_4;for(var i=0;i<_1.fields.length;i++){var _6=_1.fields[i],_7=this.getField(_6);if(_7&&!this.$54d&&_7.frozen){_4=true;break}}
+if(this.canFreezeFields&&this.fields.length>1&&(_4||this.frozenFields==null||this.normalFields.length>_1.fields.length))
+{_2.add({isSeparator:true});_2.add({title:(_4?"Unfreeze ":"Freeze ")+_1.title,grid:this,spanFields:_1.fields,frozen:_4,icon:(_4?"[SKINIMG]actions/unfreeze.png":"[SKINIMG]actions/freezeLeft.png"),click:function(){for(var i=0;i<this.spanFields.length;i++){_3.completeFields.find(_3.fieldIdProperty,this.spanFields[i]).frozen=!this.frozen}
+_3.rebuildForFreeze()}})}
+return _2}
+,isc.A.shouldShowColumnPicker=function isc_ListGrid_shouldShowColumnPicker(_1){if(_1.treeField||_1.canHide===false)return false;var _2=this.getSummaryTitle(_1);if(_2==null||isc.isAn.emptyString(_2))return false;return true}
+,isc.A.getColumnPickerItems=function isc_ListGrid_getColumnPickerItems(){var _1=[],_2=this;for(var i=0;i<this.completeFields.length;i++){var _4=this.completeFields[i];if(!this.shouldShowColumnPicker(_4))continue;var _5=this.getSummaryTitle(_4);var _6=this.spanMap?this.spanMap[_4.name]:null;if(this.showTreeColumnPicker&&_6){if(!_1.find("spanConfig",_6)){_1.add({title:_6.title,autoDismiss:false,spanConfig:_6,click:function(_16,_9,_17){var _7=this.spanConfig.fields;var _8=this.anySpannedFieldsVisible();if(_8)_2.hideFields(_7)
+else _2.showFields(_7);_17.body.delayCall("markForRedraw")},anySpannedFieldsVisible:function(){var _7=this.spanConfig.fields;for(var i=0;i<_7.length;i++){if(_2.fieldIsVisible(_7[i]))return true}
+return false},enableIf:function(_16,_17,_9){var _6=this.spanConfig;for(var i=0;i<_17.data.length;i++){var _9=_17.data[i];if(_2.fieldIsVisible(_9.fieldName)&&!_6.fields.contains(_9.fieldName))return true}
+return false},checkIf:function(_16,_17,_9){return this.anySpannedFieldsVisible()}})}
+_5=" "+_5}
+_1.add({title:_5,fieldName:_4.name,prompt:_4.prompt,autoDismiss:false,checkIf:function(_16,_17,_9){return _2.fieldIsVisible(this.fieldName)},enableIf:function(_16,_17,_9){return!(_2.fields.length==1&&_2.fieldIsVisible(this.fieldName))},click:function(_16,_9,_17){var _10=_17.$35q,_11=_10?_10.data.findIndex("groupItem",true):null,_12=_10?_10.data[_11]:null,_13=(_12&&_12.fieldName==_9.fieldName);if(_2.fieldIsVisible(this.fieldName)){var _14=_2.fields.length;if(_2.getCurrentCheckboxField()!=null)_14-=1;if(_14>1){_2.hideField(_9.fieldName)}
+if(_14==1){var _15=_17.data.find("fieldName",_2.fields[0].name);_17.setItemEnabled(_15,false);this.$58s=_15}}else{_2.showField(_9.fieldName);if(this.$58s){_17.setItemEnabled(this.$58s,true);this.$58s=null}}
+if(_13){_10.setItemEnabled(_11,_2.$58f(_12.fieldName))}
+_17.body.delayCall("markForRedraw")}})}
+return _1}
+,isc.A.getColumnPickerMenu=function isc_ListGrid_getColumnPickerMenu(_1){var _2={canHover:true,showIcons:true,showHover:true,cellHoverHTML:function(_3){return _3.prompt},items:_1};return{title:this.fieldVisibilitySubmenuTitle,submenu:_2,icon:"[SKINIMG]actions/column_preferences.png"}}
+,isc.A.getHeaderContextMenuItems=function isc_ListGrid_getHeaderContextMenuItems(_1){var _2=this.getField(_1);var _3=[],_4=false;var _5=this.$66c(_2);if(_5||!_2){if(_2){var _6=_1!=null?_1:this.$60z();_3[0]={title:this.sortFieldAscendingText,icon:"[SKINIMG]actions/sort_ascending.png",click:"menu.doSort("+_6+", 'ascending')"};_3[1]={title:this.sortFieldDescendingText,icon:"[SKINIMG]actions/sort_descending.png",click:"menu.doSort("+_6+", 'descending')"};_4=true}
+if(this.$91d()){_3.add({title:this.configureSortText,click:"menu.grid.askForSort();"});_4=true;if(!_2||this.isSortField(_2[this.fieldIdProperty])){_3.add({title:_2?this.clearSortFieldText:this.clearAllSortingText,field:_2,enableIf:function(_14,_15,_16){return(_2||(!_2&&_15.grid.getSortFieldCount()>0))},click:_2?"menu.doSort("+_6+", 'unsort')":"menu.grid.clearSort();"});_4=true}}}
+var _7=this.canAutoFitFields&&_2;if(_7){_3.add({title:this.autoFitAllText,click:"menu.grid.autoFitFields()"});_3.add({title:this.autoFitFieldText,click:"menu.grid.autoFitField("+_1+",true);"})}
+if(!_2&&this.showFilterEditor){if(_4)_3.add({isSeparator:true});_3.add({title:this.clearFilterText,click:"menu.grid.setFilterEditorCriteria(null); menu.grid.filterByEditor();"});_4=true}
+if(this.canPickFields&&this.completeFields.length>1){var _8=this.getColumnPickerItems();if(_8.length>1){if(_4)_3.add({isSeparator:true});_3.add(this.getColumnPickerMenu(_8));_4=true}}
+var _9=_2&&this.$58g(_2),_10=(this.canGroupBy!=false)&&_2&&_2.canGroupBy!=false&&this.isGrouped;if(_4&&(_10||_9)){_3.add({isSeparator:true})}
+if(_9){var _11=(!_2.getGroupValue?_2.groupingModes?_2.groupingModes:(_2.$62?_2.$62.groupingModes:false):false);var _12=null;if(_11){_12=[];for(var _13 in _11){_12.add({title:_11[_13],groupType:_13,targetField:_2,fieldName:_2.name,prompt:_2.prompt,checked:(_2.groupingMode==_13),click:function(_14,_15,_16){this.targetField.groupingMode=this.groupType;_16.$35q.groupField(_15)}})}}
+_3.add({groupItem:true,title:this.getGroupByText(_2),fieldName:_2.name,targetField:_2,prompt:_2.prompt,icon:"[SKINIMG]actions/groupby.png",click:function(_14,_15,_16){this.targetField.groupingMode=this.targetField.defaultGroupingMode||null;_16.groupField(_15)},enabled:this.$58f(_2),canSelectParent:true,submenu:_12});_4=true}
+if(_10){_3.add({title:this.ungroupText,click:"menu.ungroup()",icon:"[SKINIMG]actions/ungroup.png"});_4=true}
+if(_2){if(this.canFreezeFields&&this.fields.length>1&&(_2.frozen||(this.frozenFields==null||this.normalFields.length>1))&&!(this.spanMap&&this.spanMap[_2.name])&&_2.canFreeze!=false)
+{if(_4)_3.add({isSeparator:true});_3.add({title:this.getToggleFreezeText(_2),grid:this,field:_2,icon:(_2.frozen?"[SKINIMG]actions/unfreeze.png":"[SKINIMG]actions/freezeLeft.png"),click:"item.grid.toggleFrozen(this.field,!this.field.frozen)"});_4=true}}
+if(this.canAddFormulaFields){if(_4)_3.add({isSeparator:true});if(_2&&_2.userFormula){_3.add({title:this.editFormulaFieldText,grid:this,field:_2,click:"item.grid.editFormulaField(item.field)",icon:"[SKINIMG]ListGrid/formula_menuItem.png"});_3.add({title:this.removeFormulaFieldText,grid:this,field:_2,click:"item.grid.removeField(item.field.name)",icon:"[SKINIMG]ListGrid/formula_menuItem.png"})}
+_3.add({title:this.addFormulaFieldText,grid:this,click:"item.grid.addFormulaField()",icon:"[SKINIMG]ListGrid/formula_menuItem.png"});_4=true}
+if(this.canAddSummaryFields){if(_4)_3.add({isSeparator:true});if(_2&&_2.userSummary){_3.add({title:this.editSummaryFieldText,grid:this,field:_2,click:"item.grid.editSummaryField(item.field)",icon:"[SKINIMG]ListGrid/formula_menuItem.png"});_3.add({title:this.removeSummaryFieldText,grid:this,field:_2,click:"item.grid.removeField(item.field.name)",icon:"[SKINIMG]ListGrid/formula_menuItem.png"})}
+_3.add({title:this.addSummaryFieldText,grid:this,click:"item.grid.addSummaryField()",icon:"[SKINIMG]ListGrid/formula_menuItem.png"})}
+return _3}
+,isc.A.getHeaderContextMenu=function isc_ListGrid_getHeaderContextMenu(){return this.createAutoChild("headerContextMenu",{ID:this.getID()+"$314",grid:this})}
+,isc.A.getSortArrowImage=function isc_ListGrid_getSortArrowImage(_1){var _2;if(_1==null||_1==_2)_1=this.$60z();if(this.showSortArrow!=false&&_1!=null){return this.imgHTML(Array.shouldSortAscending(this.getField(_1).sortDirection)?this.sortAscendingImage:this.sortDescendingImage,null,null,null,null,this.widgetImgDir)}else{return isc.Canvas.spacerHTML(1,1)}}
+,isc.A.sorterClick=function isc_ListGrid_sorterClick(){var _1=this.$60z();if(!this.$66c(_1))return false;if(_1!=null){var _2=this.getField(_1),_3=_2[this.fieldIdProperty],_4=this.$765,_5=this.$766(_2);if(this.isSortField(_3)){if(_4==_5||this.canUnsort==false){this.toggleSort(_3)}else{this.toggleSort(_3,"unsort")}}else{this.setSort({property:_3,direction:_4})}}else{this.sort(_1,(_1!=null?!Array.shouldSortAscending(this.getField(_1).sortDirection):null))}}
+,isc.A.showDragLineForRecord=function isc_ListGrid_showDragLineForRecord(_1,_2){var _3=this.body;if(_1==null)_1=this.getEventRecordNum();var _4=_3.getVisibleRows()[1];if(_1==-2)_1=_4;if(this._dragLine&&!this.recordIsEnabled(_1)&&_1!=_4)return this._dragLine.hide();if(_2==null)_2=this.getReorderPosition(_1);var _5=this.getLeftBody();var _6=_5.getPageLeft()+(this.isRTL()&&_5.vscrollOn?_5.getScrollbarSize():0);if(_2==isc.ListGrid.BEFORE){this.showHDragLine(_6,_3.getRowPageTop(_1));this._dragLine.afterRow=_1-1}else if(_2==isc.ListGrid.AFTER){this.showHDragLine(_6,(_3.getRowPageTop(_1)+_3.getRowSize(_1)));this._dragLine.afterRow=_1}else{return this._dragLine.hide()}
+if(this.recordDropMove){this.fireCallback("recordDropMove","viewer,recordNum,record,position",[this,_1,this.getRecord(_1),_2])}}
+,isc.A.showHDragLine=function isc_ListGrid_showHDragLine(_1,_2){this.makeDragLine();this._dragLine.resizeTo(this.getViewportWidth()-(this.body.vscrollOn?this.body.getScrollbarSize():0),2);var _3=this.body.getPageTop(),_4=_3+this.body.getVisibleHeight();if(_2<_3)_2=_3;else if(_2>_4)_2=_4;this._dragLine.setPageRect(_1,_2);this._dragLine.show();this._dragLine.bringToFront()}
+,isc.A.showDragLineForField=function isc_ListGrid_showDragLineForField(_1,_2){this.makeDragLine();if(_2==true){this._dragLine.resizeTo(2,this.headerHeight)}else{this._dragLine.resizeTo(2,this.getOuterViewportHeight())}
+if(_1==null)_1=this.getEventFieldNum();if(_1<0){this._dragLine.hide();return}
+var _3=this.ns.EH.dragTarget,_4=(!this.isRTL()?_3.getPageLeft()+this.ns.EH.dragResizeWidth:_3.getPageRight()-this.ns.EH.dragResizeWidth)-1;this._dragLine.setPageRect(_4,this.getPageTop()+(this.showFilterEditor?this.filterEditorHeight:0));this._dragLine.bringToFront();this._dragLine.show()}
+,isc.A.unsort=function isc_ListGrid_unsort(){this.setSort(null)}
+,isc.A.resort=function isc_ListGrid_resort(){if(this.$73p)return this.setSort(isc.shallowClone(this.$73p));var _1=this.$60z();if(_1!=null){var _2=this.getField(_1),_3=this.$766(_2);this.sort(_1,_3)}}
+,isc.A.sort=function isc_ListGrid_sort(_1,_2){var _3,_4;if(isc.isA.String(_1)){_3=_1;_1=this.getFieldNum(_3);if(_1<0){_4=this.getUnderlyingField(_3)}}
+if(!_4){var _5=this.$60z(),_6=(_5!=null?Array.shouldSortAscending(this.getField(_5).sortDirection):null);if(_1==null){if(_5!=null){_1=_5}else{for(var i=0;i<this.fields.length;i++){if(this.$91k(this.fields[i])!=false){_1=i;break}}}}
+if(_1==null)return false;_4=this.getField(_1)}
+if(_4==null){return}
+if(_2==null){_2=this.$766(_4)}
+if(_5==_1&&_2==_4.sortDirection)return;var _8={property:_4[this.fieldIdProperty],direction:Array.shouldSortAscending(_2)?"ascending":"descending"};return this.setSort([_8])}
+,isc.A.$60z=function isc_ListGrid__getSortFieldNum(){if(this.sortFieldNum!=null)return this.sortFieldNum;if(this.sortField!=null){var _1=this.getFieldNum(this.sortField);if(_1==-1)_1=null;this.sortFieldNum=_1;var _2=this.getFieldName(this.sortFieldNum);if(_2)this.sortField=_2;return _1}
+return null}
+,isc.A.$600=function isc_ListGrid__setSortFieldNum(_1){this.sortFieldNum=_1;var _2=this.getFieldName(_1);this.sortField=_2}
+,isc.A.getSortField=function isc_ListGrid_getSortField(){return this.sortField}
+,isc.A.getUnderlyingField=function isc_ListGrid_getUnderlyingField(_1){if(!this.fields&&!this.completeFields&&!this.dataSource){this.logWarn("fields and completeFields are null and there is no DataSource");return null}
+var _2=null;if(this.fields){_2=isc.Class.getArrayItem(_1,this.fields,this.fieldIdProperty)}
+if(!_2&&this.completeFields){_2=isc.Class.getArrayItem(_1,this.completeFields,this.fieldIdProperty)}
+if(!_2&&this.dataSource){if(!isc.isA.DataSource(this.dataSource))this.dataSource=this.getDataSource(this.dataSource);_2=this.dataSource.getField(_1)}
+return _2}
+,isc.A.toggleSort=function isc_ListGrid_toggleSort(_1,_2){var _3=this.getSpecifiedField(_1),_4=this.$73p?isc.shallowClone(this.$73p):[],_5=_4.find("property",_1);if(!_5&&_3.displayField){_5=_4.find("property",_3.displayField);if(!_5)return}
+if(!_2)
+_2=Array.shouldSortAscending(_5.direction)?"descending":"ascending";if(_2=="unsort")_4.remove(_5);else _5.direction=_2;this.setSort(_4)}
+,isc.A.$73z=function isc_ListGrid__addSort(_1,_2){if(!isc.isAn.Object(_1)){_1=this.getSpecifiedField(_1)}
+var _3=_2||this.$766(_1);this.addSort({property:_1[this.fieldIdProperty],direction:Array.shouldSortAscending(_3)?"ascending":"descending"})}
+,isc.A.addSort=function isc_ListGrid_addSort(_1){var _2=this.$73p?isc.shallowClone(this.$73p):[];_2.add(_1);this.setSort(_2)}
+,isc.A.getSort=function isc_ListGrid_getSort(){if(this.$73p){return isc.shallowClone(this.$73p)}else if(this.initialSort){return isc.shallowClone(this.initialSort)}else{var _1;if(this.sortFieldNum!=null)_1=this.getField(this.sortFieldNum);if(!_1&&this.sortField!=null){_1=this.getUnderlyingField(this.sortField)}
+if(_1){var _2=this.$766(_1);return[{property:_1[this.fieldIdProperty],direction:_2}]}}}
+,isc.A.getSortSpecifier=function isc_ListGrid_getSortSpecifier(_1){var _2=null;if(this.$73p&&this.$73p.length>0){_2=this.$73p.find("property",_1);if(!_2){var _3=this.getSpecifiedField(_1);if(_3&&_3.displayField&&!_3.optionDataSource){_2=this.$73p.find("property",_3.displayField)}}}
+return _2}
+,isc.A.getSortFieldCount=function isc_ListGrid_getSortFieldCount(){return this.$73p?this.$73p.length:0}
+,isc.A.isSortField=function isc_ListGrid_isSortField(_1){var _2=this.getSortSpecifier(_1)?true:false;if(!_2){var _3=this.getSpecifiedField(_1);if(_3&&_3.displayField&&!_3.optionDataSource){_2=this.getSortSpecifier(_3.displayField)?true:false}}
+return _2}
+,isc.A.getSortNumeralHTML=function isc_ListGrid_getSortNumeralHTML(_1,_2){return"<span class="+this.sortNumeralStyle+">"+(_2+1)+"</span>"}
+,isc.A.clearSort=function isc_ListGrid_clearSort(){this.setSort(null)}
+,isc.A.setSort=function isc_ListGrid_setSort(_1){if(this.logIsInfoEnabled("sorting"))this.logInfo("Entering setSort","sorting");if(!this.fields&&!this.getDataSource()){if(this.logIsInfoEnabled("sorting")){this.logInfo("setSort() not performing sort - no fields","sorting")}
+return false}
+if(this.confirmDiscardEdits&&this.dataSource!=null){if(this.hasChanges()&&isc.ResultSet&&isc.isA.ResultSet(this.data)&&!this.data.allMatchingRowsCached())
+{this.showLostEditsConfirmation({target:this,methodName:"$34g"},{target:this,methodName:"$34h"});this.$34i=_1
+return}}
+var _2=[],_3;if(this.$73p){for(var i=0;i<this.$73p.length;i++){var _5=this.$73p[i],_6=_1?_1.find("property",_5.property):null;if(!_6){_2.add(isc.shallowClone(_5));if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort - marking field "+_5.property+" for removal","sorting")}}}}
+_1=_1||[];if(!_1||_1.length==0){if(this.logIsInfoEnabled("sorting")){this.logInfo("null or zero-length sortSpecifiers - unsorting only","sorting")}}
+var _7=[];for(var i=0;i<_1.length;i++){var _8=_1[i],_9=this.getUnderlyingField(_8.property),_10=this.getField(_8.property),_11=null;if(_9){if(!this.$91k(_9)){isc.logWarn("Removing field '"+_9[this.fieldIdProperty]+"' from the "+"sortSpecifier array because it specifies canSortClientOnly: true and all "+"data is not yet client-side.","sorting");continue}
+if(_10){if(!_3)_3=_10}
+if(!_8.normalizer){if(_9.sortNormalizer){_11=_9.sortNormalizer}else if(_9.valueMap){_11=isc.isA.String(_9.valueMap)?this.getGlobalReference(_9.valueMap):_9.valueMap}else if(_9.type!=null){_11=_9.type}
+_8.normalizer=_11}
+if(_8.direction==null){_8.direction=this.$766(_8[this.fieldIdProperty])}
+if(_3&&_3==_10){_8.primarySort=true}
+if(_8.primarySort){this.sortDirection=Array.shouldSortAscending(_8.direction)}
+if(!_8.context)_8.context=this;_8.sortIndex=i;_7.add(_8)}}
+this.$73p=_7;var _12=this.$73p[0],_13=_12?_12.property:null,_14=_13?this.getFieldNum(_13):null,_15=_13?this.getUnderlyingField(_13):null,_16=_12?Array.shouldSortAscending(_12.direction):null;if(!_15){if(_12)this.logWarn("Field does not exist: "+_12.property)}
+if(_14>=0){this.$600(_14)}else{this.$600(null)}
+if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort - ready to sort on specifiers:\n"+isc.echoAll(this.$73p),"sorting")}
+if(this.$73p&&this.$73p.length>0){if(this.data&&(this.data.setSort||this.data.length>0||isc.isA.ResultTree(this.data)||isc.isA.Tree(this.data)))
+{if(this.data.setSort){if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort - Calling data.setSort with specifiers:\n"+isc.echoAll(this.$73p),"sorting")}
+this.data.setSort(this.$73p)}else if(this.data.sortByProperty){if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort - Calling data.sortByProperty with specifier:\n"+isc.echoAll(_12),"sorting")}
+this.data.sortByProperty(_12.property,Array.shouldSortAscending(_12.direction),_12.normalizer,_12.context)}}else{if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort - not sorting:\nthis.data is"+this.echoAll(this.data),"sorting")}}}else{if(this.data){if(this.data.setSort!=null)this.data.setSort([]);else if(this.data.unsort)this.data.unsort()}
+if(this.invalidateCacheOnUnsort){this.invalidateCache()}}
+var _17=(this.header&&isc.isA.Toolbar(this.header));if(_2){if(_2.length>0){if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort - Removing sort-media from now unsorted fields:\n"+isc.echoAll(_2),"sorting")}}
+for(var i=0;i<_2.length;i++){var _18=_2[i],_9=this.getSpecifiedField(_18.property),_19=[];if(_9){_19.add(_9);if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort, removing sort-media for fieldName '"+_9.name+"'","sorting")}}
+var _20=this.getFields();if(_20){var _21=_20.findAll("displayField",_18.property);if(_21){_21.removeUnless("optionDataSource",null);if(_21.length>0){_19.addList(_21);if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort, removing sort-media for fields with displayField "+"'"+_9.name+"' - these are: "+isc.echoFull(_21.getProperty("name").join(", ")),"sorting")}}}}
+for(var j=0;j<_19.length;j++){var _23=_19[j],_24=this.getFieldNum(_23.name);if(_23){_23.sortDirection=_23.originalSortDirection}
+if(_24>=0&&_17){var _25=this.getFieldHeaderButton(_24);if(_25)_25.setTitle(_25.getTitle())}}}}
+if(this.$73p&&this.$73p.length>0){this.logInfo("In setSort - Setting sort-media for sorted fields:\n"+isc.echoAll(this.$73p),"sorting");var _26=false;for(var i=0;i<this.$73p.length;i++){var _18=this.$73p[i],_9=this.getSpecifiedField(_18.property),_19=[];if(_9){_19.add(_9);if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort, adding sort-media for fieldName '"+_9.name+"'","sorting")}}
+var _20=this.getFields();if(_20){var _21=_20.findAll("displayField",_18.property);if(_21){_19.addList(_21);if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort, adding sort-media for fields with displayField "+"'"+_9.name+"' - these are: "+isc.echoFull(_21.getProperty("name").join(", ")),"sorting")}}}
+for(var j=0;j<_19.length;j++){var _23=_19[j],_24=this.getFieldNum(_23.name);if(_23){if(_23.sortDirection&&!_23.originalSortDirection){_23.originalSortDirection=_23.sortDirection}
+_23.sortDirection=_18.direction}
+if(_17&&_24>=0){var _27=this.getFieldHeader(_24),_25=this.getFieldHeaderButton(_24);if(_25){if(!_26){_27.selectButton(_25);_26=true}
+_25.setTitle(this.getHeaderButtonTitle(_25))}}}}}else if(_17){var _28;if(this.header){_28=this.header.getSelectedButton();if(_28)_28.deselect()}
+if(this.frozenHeader){_28=this.frozenHeader.getSelectedButton();if(_28)_28.deselect()}}
+if(_14>=0){if(this.logIsInfoEnabled("sorting")){this.logInfo("In setSort - $600 called with fieldNum: "+_14+" - sortField is now: "+this.sortField+"\ngetSortState() now returns: "+isc.echoAll(this.getSortState()),"sorting")}}
+if(this.sorter){this.sorter.setTitle(this.sorter.getTitle())}
+if(this.body&&this.showRecordComponents)delete this.body.$74k;this.$25a(this.$73y);if(this.logIsInfoEnabled("sorting"))this.logInfo("Leaving setSort","sorting");this.handleSortChanged(this.$73p);return true}
+,isc.A.handleSortChanged=function isc_ListGrid_handleSortChanged(_1){this.sortChanged(_1);this.handleViewStateChanged()}
+,isc.A.sortChanged=function isc_ListGrid_sortChanged(_1){}
+,isc.A.$34g=function isc_ListGrid__continueSort(){var _1=this.$34i;delete this.$34i;this.setSort(_1)}
+,isc.A.$34h=function isc_ListGrid__cancelSort(){var _1;var _1=this.$34i?this.$34i[0]:null;delete this.$34i;if(_1!=null){var _2=this.getFieldNum(_1.property);if(_2!=-1&&this.sortFieldNum!=_2){this.header.deselectButton(_2)}}}
+,isc.A.sortData=function isc_ListGrid_sortData(){if(!this.data||!this.fields)return;var _1=this.fields[this.$60z()],_2=null;if(_1==null){this.$600(0);_1=this.fields[0]}
+if(_1.sortNormalizer){_2=_1.sortNormalizer}else if(_1.valueMap){_2=_1.valueMap;if(isc.isA.String(_1.valueMap))_2=this.getGlobalReference(_1.valueMap)}else if(_1.type!=null){_2=_1.type}
+this.data.sortByProperty(_1[this.fieldIdProperty],_1.sortDirection,_2,this)}
+,isc.A.getEmbeddedComponentCount=function isc_ListGrid_getEmbeddedComponentCount(_1){var _2=this.body?this.body.$29a:null;if(this.frozenBody&&this.frozenBody.$29a!=null){_2=(_2?_2.duplicate():[]).addList(this.frozenBody.$29a)}
+if(!_2)return 0;if(_1=="recordComponent"){_2=_2.findAll("isRecordComponent",true)}else if(_1=="backgroundComponent"){_2=_2.findAll("isBackgroundComponent",true)}
+return _2==null?0:_2.length}
+,isc.A.addEmbeddedComponent=function isc_ListGrid_addEmbeddedComponent(_1,_2,_3,_4,_5){var _6=this.getFieldBody(_4),_4=this.getLocalFieldNum(_4),_3=(_3!=null?_3:this.getRecordIndex(_2));_6.addEmbeddedComponent(_1,_2,_3,_4,_5);if(this.frozenBody!=null){var _7=_6==this.frozenBody?this.body:this.frozenBody;if(_3>=0&&_7.isDrawn()&&!_7.isDirty()){var _8=_7.getRowHeight(_2,_3);if(_8!=_6.getRowSize(_3)){_7.markForRedraw()}}}}
+,isc.A.removeEmbeddedComponent=function isc_ListGrid_removeEmbeddedComponent(_1,_2,_3){var _4;if(isc.isA.Canvas(_1)){_2=_1;_1=_2.embeddedRecord}
+if(isc.isA.Number(_2)){_4=this.getFieldBody(_2);_2=this.getLocalFieldNum(_2)}else{if(!_2){if(!_1.$29a||_1.$29a.length==0)return;_2=_1.$29a[0]}
+_4=isc.Canvas.getById(_2.$669)}
+if(_4==null){return}
+_4.removeEmbeddedComponent(_1,_2,_3)}
+,isc.A.getEmbeddedComponent=function isc_ListGrid_getEmbeddedComponent(_1,_2){var _3;if(isc.isA.Number(_2)){_3=this.getFieldBody(_2);_2=this.getLocalFieldNum(_2)}else{_3=isc.Canvas.getById(_2.$669)}
+return _3.getEmbeddedComponent(_1,_2)}
+,isc.A.getRecordDataSource=function isc_ListGrid_getRecordDataSource(_1){return this.dataSource}
+,isc.A.openRecordEditor=function isc_ListGrid_openRecordEditor(_1){if(this.$32o!=null)this.closeRecord();var _2=isc.addProperties({},_1);var _3=this.ns.DynamicForm.create(this.recordEditorProperties,{autoDraw:false,dataSource:this.getRecordDataSource(_1),numCols:4,values:_2,$34j:_1});var _4=this.ns.VStack.create({autoDraw:false,width:this.getAvailableFieldWidth()-this.embeddedComponentIndent,left:this.embeddedComponentIndent,destroyOnUnEmbed:true,members:[_3,this.ns.Toolbar.create({autoDraw:false,width:200,buttons:[{title:this.recordEditorSaveButtonTitle,click:this.getID()+".embeddedSaveRecord("+_3.getID()+")",extraSpace:10},{title:this.recordEditorCancelButtonTitle,record:_1,grid:this,click:function(){var _5=this.parentElement.parentElement;this.grid.closeRecord(this.record,_5)}}]})]});this.addEmbeddedComponent(_4,_1,this.data.indexOf(_1));this.$32o=_1;this.$57o=_4}
+,isc.A.embeddedSaveRecord=function isc_ListGrid_embeddedSaveRecord(_1){_1.saveData({target:this,methodName:"embeddedEditComplete"},{$34j:_1.$34j,$57p:_1})}
+,isc.A.embeddedEditComplete=function isc_ListGrid_embeddedEditComplete(_1,_2,_3){if(_1.status==0){this.removeEmbeddedComponent(_3.$34j,_3.$57p)}}
+,isc.A.closeRecord=function isc_ListGrid_closeRecord(_1,_2){if(!_1)_1=this.$32o;if(!_2)_2=this.$57o;this.removeEmbeddedComponent(_1,_2);this.$32o=null;this.$57o=null}
+,isc.A.openRecordDetailGrid=function isc_ListGrid_openRecordDetailGrid(_1,_2){if(this.$32o!=null)this.closeRecord();var _3=this.getRecordDetailGrid(_1,_2);var _4=isc.VLayout.create({autoDraw:false,destroyOnUnEmbed:true,height:this.cellHeight,left:this.embeddedComponentIndent,width:this.getAvailableFieldWidth()-this.embeddedComponentIndent,resizeBarSize:4,members:[_3]});this.addEmbeddedComponent(_4,_1,this.data.indexOf(_1));var _2=isc.DataSource.getDataSource(_3.dataSource);_3.fetchRelatedData(_1,this.getRecordDataSource(_1));this.$32o=_1;this.$57o=_4}
+,isc.A.getRecordDetailGrid=function isc_ListGrid_getRecordDetailGrid(_1,_2){_2=isc.DataSource.getDataSource(_2);var _3=isc.ListGrid.create(this.recordDetailGridProperties,{autoDraw:false,dataSource:_2,showResizeBar:true,showCellContextMenus:this.showCellContextMenus},this.nestedGridDefaults);return _3}
+,isc.A.chartData=function isc_ListGrid_chartData(_1,_2,_3,_4,_5){this.checkChartConstructor();if(_1)_1=this.getField(_1);if(_2)_2=this.map("getField",_2);else{_2=this.fields.duplicate();_2.remove(_1)}
+if(!_3){if(!isc.ResultSet||!isc.isA.ResultSet(this.data)){_3=this.data}else if(this.data.allMatchingRowsCached()){_3=this.data.getAllRows()}else{var _6=this.getVisibleRows();_3=this.data.getRange(_6[0],_6[1])}}
+var _7,_8;if(_2.length>=1){for(var i=0;i<_2.length;i++){var _10=_2[i];_2[i]={id:_10.name,title:this.htmlUnescapeExportFieldValue(_10.title),type:_10.type}}
+_8={id:"columnFacet",title:this.valueTitle,values:_2,inlinedValues:true}}
+if(_3.length>=1&&_1){_7={id:_1.name}}
+var _11=[_8,_7];_11.removeAll([null]);if(_5)_11.reverse();var _12=isc.addProperties({data:_3,facets:_11,title:this.chartTitle,chartType:this.chartType},_4);if(_7&&!_8)_12.valueProperty=_2[0].name;return this.createAutoChild("chart",_12,this.chartConstructor)}
+,isc.A.checkChartConstructor=function isc_ListGrid_checkChartConstructor(){var _1=this.chartConstructor;if(isc.isA.String(_1)){_1=window.isc[this.chartConstructor]}
+if(_1==null){this.logWarn('Component chartConstructor attribute set to "'+this.chartConstructor+'" - this cannot be resolved to a valid SmartClient class. Verify that all '+'appropriate modules are loaded and that this class exists.')}else if(_1.invalidClass){var _2='Component chartConstructor attribute set to "'+this.chartConstructor+'". ';if(_1.invalidErrorMessage)_2+=_1.invalidErrorMessage;else _2+=".This class is invalid - verify all appropriate modules are loaded.";this.logWarn(_2)}}
+,isc.A.chartRow=function isc_ListGrid_chartRow(_1,_2,_3){return this.chartData(null,_2,[this.getRecord(_1)],_3)}
+,isc.A.chartColumn=function isc_ListGrid_chartColumn(_1,_2,_3){return this.chartData(_2,[_1],null,_3)}
+,isc.A.regroup=function isc_ListGrid_regroup(_1){if(!this.isGrouped)return;var _2=this.getGroupByFields();if(_2==null||_2.length==0)return;if(this.inhibitRegroup||!(this.originalData||this.data))
+{return}
+var _3;if(this.data.isGroupedOutput&&this.originalData)_3=this.originalData;else this.originalData=_3=this.data;var _4=_3.getLength();if(isc.ResultSet&&isc.isA.ResultSet(_3)&&(!_3.lengthIsKnown()||(_4<this.groupByMaxRecords&&!_3.rangeIsLoaded(0,_4-1))))
+{_3.getRange(0,_4-1);this.$52y=true;this.logInfo("postponing grouping until data is loaded","grouping");return}
+if(_4>=this.groupByMaxRecords){this.logInfo("Results too numerous - disabling grouping.","grouping");this.clearGroupBy();return}
+var _5;if(this.groupTree){if(!_1&&this.canCollapseGroup&&this.retainOpenStateOnRegroup&&(this.groupTree.getLength()>0)&&(this.groupTree.$684==this.groupByField))
+{_5=[];this.$45q(this.groupTree,this.groupTree.getRoot(),_5,true)}
+this.ignore(this.groupTree,"changeDataVisibility");this.groupTree.destroy()}
+this.groupTree=this.createAutoChild("groupTree",{idField:this.groupIdField,parentIdField:this.groupParentIdField,titleProperty:"groupValue",childrenProperty:"groupMembers",parentProperty:"_groupTree_"+this.ID,showRoot:false,isGroupedOutput:true,alwaysSortGroupHeaders:(this.showGroupSummary&&this.showGroupSummaryInHeader),$684:this.groupByField,separateFolders:true,getCriteria:function(){var _6=this.creator.originalData;if(_6&&_6.getCriteria)return _6.getCriteria();return null},getChildren:function(_31,_32,_33,_34,_35,_36,_37){var _7=this.Super("getChildren",arguments);if(_37||_32==isc.Tree.FOLDERS_ONLY||_31==null||_31==this.getRoot())
+{return _7}
+var _8=this.creator;if(_8&&_8.showGroupSummary&&!_8.showGroupSummaryInHeader){var _9=_31.groupName;if(_8.groupByFieldSummaries!=null&&!_8.groupByFieldSummaries.contains(_9))
+{return _7}
+var _10=_7?_7.duplicate():[],_11=this.getRecordsInGroup(_31);_11=this.combineWithEditVals(_11);var _12=_8.getGroupSummaryData(_11,_31)
+if(!_12!=null){if(!isc.isAn.Array(_12))_12=[_12];_10.addList(_12)}
+return _10}else{return _7}},getRecordsInGroup:function(_31){var _8=this.creator,_13=_8.getGroupByFields(),_9=_31.groupName;var _7=this.getChildren(_31,null,null,null,null,null,true);var _14=[];if(_9==_13[_13.length-1]){_14.addList(_7)}else{if(_7!=null){for(var i=0;i<_7.length;i++){var _16=this.getRecordsInGroup(_7[i]);if(_16!=null&&_16.length>0)_14.addList(_16)}}}
+return _14},combineWithEditVals:function(_7){var _8=this.creator,_11=[];_11.addList(_7);var _17=_8.getAllEditRows();if(_17.length>0){var _18;for(var i=0;i<_11.length;i++){var _19=_8.getEditSession(_11[i]);if(_19){var _20=isc.addProperties({},_11[i],_19.$31x);_11[i]=_20}}}
+return _11},primaryKeyFields:this.dataSource?this.getDataSource().getPrimaryKeyFieldNames():null,indexOf:function(_31){var _21=this.Super("indexOf",arguments);if(_21==-1&&this.creator.getDataSource()!=null){var _22=this.$27l();_21=_22.findByKeys(_31,this.creator.getDataSource())}
+return _21}},isc.Tree);this.logInfo("Adding "+_3.getLength()+" records to groups","grouping");for(var i=0;i<_3.getLength();i++){this.$52u(_3.get(i),false,_5)}
+var _23=this.groupTree.getRoot(),_24=0,_25=0,_26=this.groupTree,_2=this.getGroupByFields();while(_23!=null&&_25<_2.length){var _27=_26.getChildren(_23),_28=this.getUnderlyingField(_2[_25]);for(var i=0;i<_27.length;i++){var _29=_27[i],_30=this.getGroupTitle(_29,_28);if(!this.singleCellGroupHeaders()){_29.groupTitle=_30}else _29[this.singleCellValueProperty]=_30;if(this.showGroupSummary&&this.showGroupSummaryInHeader){this.applyGroupSummaryToHeader(_29)}}
+if(_26.getParent(_23)&&_26.getChildren(_26.getParent(_23))[_24+1]){_24++;_23=_26.getChildren(_26.getParent(_23))[_24]}else{_23=_26.getChildren(_23).first();_24=0;_25++}}
+if(!_5)this.openInitialGroups();this.data=_26;if(!_1){this.$606(this.data)}else{this.observe(_26,"changeDataVisibility","observer.$34u(node, newState)")}
+this.createSelectionModel();if(this.$75p){this.setSelectedState(this.$75p);delete this.$75p}
+if(this.fields.find("$84g",true)!=null){this.updateFieldWidthsForAutoFitValue("regroup with group title column showing")}
+this.markForRedraw("regroup")}
+,isc.A.$607=function isc_ListGrid__incrementalRegroup(_1,_2,_3,_4){this.$34v=true;var _5=this.data.getParents(_2);var _6=this.data.remove(_2);var _7=this.getGroupByFields();for(var i=0,j=_7.length-1;i<_5.length-1;i++){var _10=_5[i];if(_10.groupMembers.getLength()==0)this.data.remove(_10);else{var _11=(this.completeFields||this.fields).find(this.fieldIdProperty,_10);if(this.singleCellGroupHeaders()){_10[this.singleCellValueProperty]=this.getGroupTitle(_10,_11)}else{_10.groupTitle=this.getGroupTitle(_10,_11)}}
+j--}
+if(!(_2&&!_6)&&(_1||_4))
+this.$52u(_1||_4,true)}
+,isc.A.openInitialGroups=function isc_ListGrid_openInitialGroups(){var _1=this.groupTree;if(this.groupStartOpen=="all"){_1.openAll()}else if(this.groupStartOpen=="first"){_1.openAll(_1.getChildren(_1.getRoot()).first())}else if(isc.isAn.Array(this.groupStartOpen)){var _2=_1.getChildren(_1.getRoot());for(var i=0;i<this.groupStartOpen.length;i++){var _4=this.groupStartOpen[i];var _5=_2.find("groupValue",_4);if(_5)_1.openFolder(_5)}}}
+,isc.A.groupBy=function isc_ListGrid_groupBy(_1){var _2=[];if(isc.isAn.Array(_1)){_2=_1}else{for(var i=0;i<arguments.length;i++){_2[i]=arguments[i]}}
+for(var i=0;i<_2.length;i++){if(_2[i]!=null&&!this.getUnderlyingField(_2[i])){this.logWarn("groupBy() passed field:"+_2[i]+" - this is not a valid field"+" within this grid - ignoring","grouping");return}}
+if(this.handleGroupBy!=null&&this.handleGroupBy(_2)==false){return}
+this.handleViewStateChanged();if(_2.length==0||_2[0]==null){this.clearGroupBy();return}
+if(isc.isAn.Array(this.groupByField))this.groupByField.setLength(0);else this.groupByField=[];for(var i=0;i<_2.length;i++){if(this.isCheckboxField(_2[i]))continue;var _4=this.getUnderlyingField(_2[i]);if(_4&&_4.displayField!=null&&this.getField(_4.displayField)&&_4.optionDataSource==null){this.groupByField.add(_4.displayField)}else{this.groupByField.add(_2[i])}}
+this.isGrouped=true;if(this.showGroupSummary&&this.showGroupSummaryInHeader&&this.getGroupTitleField()==null&&this.showGroupTitleColumn)
+{if(this.groupTitleColumn==null){this.groupTitleColumn=this.getGroupTitleColumn()}
+if(this.fields.indexOf(this.groupTitleColumn)==-1){this.addField(this.groupTitleColumn,this.getGroupTitleColumnPosition())}}
+this.logInfo("groupBy: "+this.groupByField,"grouping");this.$52y=true;this.dataChanged()}
+,isc.A.clearGroupBy=function isc_ListGrid_clearGroupBy(){this.logInfo("ungrouping","grouping");this.isGrouped=false;if(this.originalData){var _1=this.preserveEditsOnSetData;this.preserveEditsOnSetData=true;this.setData(this.originalData);this.preserveEditsOnSetData=_1;delete this.originalData;delete this.groupTree;if(this.groupByField)this.groupByField=null}
+if(this.groupTitleColumn!=null){var _2=this.completeFields||this.fields,_3=_2.indexOf(this.groupTitleColumn);if(_3!=-1){var _4=[];for(var i=0;i<_2.length;i++){if(i==_3)continue;_4[_4.length]=_2[i]}
+this.setFields(_4)}}}
+,isc.A.getGroupTitle=function isc_ListGrid_getGroupTitle(_1,_2){if(!_2){var _3=this.data.getLevel(_1)-1;var _4=this.getGroupByFields(),_2=this.getUnderlyingField(_4[_3])}
+if(_2==null){return}
+if(_2.getGroupTitle){return _2.getGroupTitle(_1.groupValue,_1,_2,_2.name,this)}
+else if(!_2.getGroupValue&&_2.$62&&_2.$62.getGroupTitle){return _2.$62.getGroupTitle(_1.groupValue,_1,_2,_2.name,this)}else if(!this.singleCellGroupHeaders()){return _1.groupTitle}else{return _1[this.singleCellValueProperty]}}
+,isc.A.getGroupNodeHTML=function isc_ListGrid_getGroupNodeHTML(_1,_2){var _3=this.frozenBody===_2;if(this.frozenBody&&!_3)return this.emptyCellValue;var _4=this.data.isOpen(_1)?"opened":"closed",_5=isc.Img.urlForState(this.groupIcon,null,null,_4),_6=isc.Canvas.spacerHTML(this.groupIconPadding,1),_7=isc.Canvas.spacerHTML((this.data.getLevel(_1)-1)*this.groupIndentSize+this.groupLeadingIndent,1);var _8=this.imgHTML(_5,this.groupIconSize,this.groupIconSize);var _9=(this.canCollapseGroup?_7+_8+_6+this.getGroupTitle(_1):_7+_6+this.getGroupTitle(_1));return _9}
+,isc.A.$52u=function isc_ListGrid__addRecordToGroup(_1,_2,_3){var _4,_5=this.groupTree.getRoot(),_6=this.getGroupByFields();for(var i=0;i<_6.length;i++){var _8=_6[i],_9=this.getUnderlyingField(_8),_10=this.data.indexOf(_1);var _11=this.getRawCellValue(_1,_10,_8,true);if(_9.getGroupValue){_11=_9.getGroupValue(_11,_1,_9,_8,this)}else if(_9.userFormula){_11=this.getFormulaFieldValue(_9,_1)}else if(_9.userSummary){_11=this.getSummaryFieldValue(_9,_1)}else if(_9.$62&&_9.$62.getGroupValue){_11=_9.$62.getGroupValue(_11,_1,_9,_8,this)}
+if(_9.valueMap&&_9.valueMap[_11]){_11=_9.valueMap[_11]}
+if(_11==null||isc.isAn.emptyString(_11)){_11=this.nullGroupTitle}
+var _12=this.groupTree.getChildren(_5);if(_12==null)_4=null;else _4=_12.find('groupValue',_11);if(!_4){_4={groupName:_8,groupValue:_11,$52e:true,canDrag:false,canSelect:false};if(this.singleCellGroupHeaders())_4.singleCellValue=_11;else _4.groupTitle=_11;_4[_8]=_11;_4[this.recordCustomStyleProperty]=this.groupNodeStyle
+_4[this.recordEditProperty]=false
+if(_3!=null){_4[this.groupTree.openProperty]=_3.find(_8,_11)?true:false}
+this.groupTree.add(_4,_5)}
+_5=_4}
+this.groupTree.add(_1,_5);if(_2){var _13=this.groupTree.getParents(_1);for(var i=_13.length-2,j=0;i>=0;i--,j++){var _15=this.getGroupTitle(_13[i]);if(!this.singleCellGroupHeaders())_13[i].groupTitle=_15;else _13[i][this.singleCellValueProperty]=_15}}}
+,isc.A.applyGroupSummaryToHeader=function isc_ListGrid_applyGroupSummaryToHeader(_1){var _2=_1.groupName;if(this.groupByFieldSummaries!=null&&!this.groupByFieldSummaries.contains(_2)){return}
+var _3=this.groupTree,_4=_3.combineWithEditVals(_3.getRecordsInGroup(_1));var _5=this.getGroupSummaryData(_4,_1);if(isc.isAn.Array(_5))_5=_5[0];var _6=this.completeFields||this.fields;for(var i=0;i<_6.length;i++){var _8=_6[i].name;if(_8=="groupTitle")continue;_1[_8]=_5[_8]}
+_1.isGroupSummary=true}
+);isc.evalBoundary;isc.B.push(isc.A.setShowGroupSummaryInHeader=function isc_ListGrid_setShowGroupSummaryInHeader(_1){if(this.showGroupSummaryInHeader==_1)return;this.showGroupSummaryInHeader=_1;var _2=this.getGroupByFields();if(_2!=null&&_2.length>0){this.ungroup();this.groupBy(_2)}}
+,isc.A.ungroup=function isc_ListGrid_ungroup(){this.$75p=this.getSelectedState(true);this.groupBy(null)}
+,isc.A.setHeaderSpans=function isc_ListGrid_setHeaderSpans(_1){this.headerSpans=_1;this.updateHeader();this.layoutChildren("headerSpans changed")}
+,isc.A.setHeaderSpanTitle=function isc_ListGrid_setHeaderSpanTitle(_1,_2){var _3=this.headerSpans.find("name",_1);if(!_3){this.logWarn("setHeaderSpanTitle() - unable to locate span named: "+_1+this.getStackTrace());return}
+_3.title=_2;if(_3.liveObject)_3.liveObject.setTitle(_2)}
+,isc.A.refreshGroupSummary=function isc_ListGrid_refreshGroupSummary(_1){if(!this.isGrouped||!this.showGroupSummary||!this.groupTree)return;if(this.showGroupSummaryInHeader){if(_1!=null){var _2=this.groupTree.getParent(this.groupTree.get(_1));this.applyGroupSummaryToHeader(_2);this.refreshRow(this.groupTree.indexOf(_2))}else{var _3=this.groupTree.findAll("$52e",true);for(var i=0;i<_3.length;i++){this.applyGroupSummaryToHeader(_3[i])}
+this.markForRedraw("refresh group summaries")}}else{var _5;if(_1!=null)_5=this.groupTree.getLength();this.groupTree.$736();if(_1==null||(_5!=this.groupTree.getLength())){this.body.markForRedraw("refresh group summaries")}else{var _6=this.groupTree.getParent(this.groupTree.get(_1));if(_6){var _7=this.groupTree.indexOf(_6),_8=this.groupTree.getChildren(_6);for(var i=0;i<_8.length;i++){if(_8[i].isGroupSummary)this.refreshRow(_7+1+i)}}}}}
+,isc.A.addBodyPassthroughMethods=function isc_ListGrid_addBodyPassthroughMethods(_1){if(this.body)this.$51e(this.body);if(this.frozenBody)this.$51e(this.frozenBody)}
+,isc.A.$51e=function isc_ListGrid__addBodyPassthroughMethods(_1){var _2={},_3=isc.getKeys(isc.ListGrid.$30f);for(var i=0;i<_3.length;i++){var _5=_3[i],_6=this[_5];if(_5=="cellContextClick")continue;if(_6==null){_2[_5]=_1.getClass().getPrototype()[_5]}else if(_6!=isc.ListGrid.$30g[_5]){_2[_5]=isc.ListGrid.$30f[_5]}}
+_1.addMethods(_2)}
+,isc.A.addProperties=function isc_ListGrid_addProperties(_1){this.Super("addProperties",arguments);this.addBodyPassthroughMethods()}
+,isc.A.addMethods=function isc_ListGrid_addMethods(_1){this.Super("addMethods",arguments);this.addBodyPassthroughMethods()}
+,isc.A.propertyChanged=function isc_ListGrid_propertyChanged(_1,_2){this.invokeSuper(isc.ListGrid,"propertyChanged",_1,_2);if(this.$31h[_1])this.$34k=true;if(this.body==null)return;if(isc.ListGrid.$295.contains(_1)){this.body[_1]=_2}
+if(this.$45l[_1]!=null){this.body.setProperty(this.$45l[_1],_2);this.markForRedraw()}}
+,isc.A.doneSettingProperties=function isc_ListGrid_doneSettingProperties(){if(this.$34k)this.$31i()}
+,isc.A.setChildEditableProperties=function isc_ListGrid_setChildEditableProperties(_1,_2,_3,_4){var _5=isc.DS.get(_3.type);if(_5&&_5.inheritsSchema("ListGridField")){isc.addProperties(_1,_2);this.setFields(this.completeFields||this.fields)}else{this.Super("setChildEditableProperties",arguments)}}
+,isc.A.getExportFieldValue=function isc_ListGrid_getExportFieldValue(_1,_2,_3){var _4=this.getSpecifiedField(_2);if(this.isCheckboxField(_4)||_4.valueIcons||this.$31s(_4))
+{var _5=(_4.displayField!=null&&!_4.valueMap&&!_4.getCellValue&&this.$425(_4));var _6=this.getRecordIndex(_1),_7;_7=this.getRawCellValue(_1,_6,_5?_4.displayField:_2,true);_7=this.$315(_7,_1,_4,_6,_3);var _8=this.getFieldHilites(_1,_4);if(_8)_7=this.applyHiliteHTML(_8,_7);return this.htmlUnescapeExportFieldTitle(_7.toString())}
+return this.Super("getExportFieldValue",arguments)}
+,isc.A.getOriginalData=function isc_ListGrid_getOriginalData(){return(this.isGrouped&&this.originalData)?this.originalData:this.getData()}
+);isc.B._maxIndex=isc.C+696;isc.ListGrid.registerStringMethods(isc.GridRenderer.$294);isc.ListGrid.registerStringMethods({recordClick:"viewer,record,recordNum,field,fieldNum,value,rawValue",recordDoubleClick:"viewer,record,recordNum,field,fieldNum,value,rawValue",recordsDropped:"records,rowNum,viewer,sourceWidget",recordDropMove:"viewer,recordNum,record,position",editValueChanged:"rowNum,fieldName,newValue,oldValue",editorChange:"record,newValue,oldValue,rowNum,colNum",cellChanged:"record,newValue,oldValue,rowNum,colNum,grid,recordNum,fieldNum",editComplete:"rowNum,colNum,newValues,oldValues,editCompletionEvent,dsResponse",editFailed:"rowNum,colNum,newValues,oldValues,editCompletionEvent,dsResponse,dsRequest",editorEnter:"record,value,rowNum,colNum",rowEditorEnter:"record,editValues,rowNum",editorExit:"editCompletionEvent,record,newValue,rowNum,colNum",rowEditorExit:"editCompletionEvent,record,newValues,rowNum",validateCellValue:"rowNum,colNum,newValue,oldValue",validateFieldValue:"newValue,oldValue,record,field,rowNum,colNum",formatCellValue:"value,record,rowNum,colNum",formatEditorValue:"value,record,rowNum,colNum",parseEditorValue:"value,record,rowNum,colNum",sortChanged:"sortSpecifiers",fieldStateChanged:"",viewStateChanged:"",dataArrived:"startRow,endRow",headerClick:"fieldNum",onHeaderClick:"fieldNum",onRecordDrop:"dropRecords,targetRecord,index,sourceWidget",onExpandRecord:"record",onCollapseRecord:"record",drawAreaChanged:"oldStartRow,oldEndRow,oldStartCol,oldEndCol",showRecordComponent:"record,colNum",createRecordComponent:"record,colNum",updateRecordComponent:"record,colNum,component,recordChanged",updateFilterEditorValues:"criteria",filterEditorSubmit:"criteria",handleGroupBy:"fields"});isc.ListGrid.$24j=isc.addProperties({},isc.ListGrid.getInstanceProperty("headerDefaults"));isc.ListGrid.$24k=isc.addProperties({},isc.ListGrid.getInstanceProperty("headerButtonDefaults"));isc.ListGrid.classInit();isc.defineClass("LineEditor",isc.ListGrid);isc.A=isc.LineEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canEdit=true;isc.A.editEvent="click";isc.A.editOnFocus=true;isc.A.modalEditing=true;isc.A.enterKeyEditAction="nextRowStart";isc.A.listEndEditAction="next";isc.A.height=50;isc.A.emptyMessage="Click to add data";isc.A.emptyMessageStyle="normal";isc.A.autoFitData="vertical";isc.A.leaveScrollbarGap=false;isc.B.push(isc.A.click=function isc_LineEditor_click(){var _1=this.getRecord(this.getEventRow());this.Super("click",arguments);if(_1==null&&isc.EH.lastEvent.target==this.body)this.startEditingNew()}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("TreeGrid","ListGrid");isc.addGlobal("TreeViewer",isc.TreeGrid);isc.defineClass("TreeGridBody",isc.GridBody);isc.A=isc.TreeGridBody.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$34w="TABLE";isc.A.$34x="padding:0px;border:0px;";isc.B.push(isc.A.$29h=function isc_TreeGridBody__updateCellStyle(_1,_2,_3,_4,_5){if(_4==null)_4=this.getTableElement(_2,_3);if(_4==null)return;if(!this.showHiliteInCells&&_3==this.grid.getLocalFieldNum(this.grid.getTreeFieldNum()))
+{if(_1==null)_1=this.getCellRecord(_2,_3);if(_5==null)_5=this.getCellStyle(_1,_2,_3);var _6=_4.childNodes[0];while(_6&&_6.tagName!=this.$34w)_6=_6.childNodes[0];if(_6){var _7;if(this.getCellCSSText){_7=this.getCellCSSText(_1,_2,_3);if(_7!=null&&!isc.isAn.emptyString(_7)){_7+=isc.Canvas.$42a}else _7=null}
+_6.className=_5;if(_7!=null)_6.cssText=_7;var _8=_6.rows,_9=_8[0].cells;if(_9&&_9.length>0){for(var i=0;i<_9.length;i++){_9[i].className=_5;if(_7){if(i==_9.length-1){_7+="paddingLeft:"+this.iconPadding}
+_9[i].cssText=_7}}}}}
+return isc.GridRenderer.getPrototype().$29h.apply(this,[_1,_2,_3,_4,_5])}
+,isc.A.click=function isc_TreeGridBody_click(_1,_2){if(!this.$29p()){var _3=this.grid,_4=_3.getEventRecordNum(),_5=_3.getRecord(_4);if(_3.data.isFolder(_5)&&_3.clickInOpenArea(_5)){if(isc.screenReader){this.$86a(_4)}
+_3.toggleFolder(_5);_3.clearLastHilite();_3.$31q=null;return isc.EH.STOP_BUBBLING}}
+return this.Super("click",arguments)}
+,isc.A.mouseDown=function isc_TreeGridBody_mouseDown(){var _1=this.getEventRow(),_2=this.grid.data.get(_1);if(_2!=null&&this.grid.clickInOpenArea(_2)){return isc.EH.STOP_BUBBLING}else if(this.grid.clickInCheckboxArea(_2)&&this.canSelectRecord(_2)){var _3=this.grid.selectionType;if(_3==isc.Selection.SINGLE){this.selectSingleRecord(_2)}else if(_3==isc.Selection.SIMPLE||_3==isc.Selection.MULTIPLE){if(this.selection.isSelected(_2)){this.deselectRecord(_2)}else{try{this.selectRecord(_2)}catch(e){isc.logWarn(isc.echoFull(e))}}}
+return isc.EH.STOP_BUBBLING}else{return this.Super("mouseDown",arguments)}}
+,isc.A.mouseUp=function isc_TreeGridBody_mouseUp(){var _1=this.getEventRow(),_2=this.grid.data.get(_1);if(_2!=null&&(this.grid.clickInOpenArea(_2)||this.grid.clickInCheckboxArea(_2)))
+{return isc.EH.STOP_BUBBLING}else{return this.Super("mouseUp",arguments)}}
+,isc.A.placeEmbeddedComponent=function isc_TreeGridBody_placeEmbeddedComponent(_1){if(this.grid.indentRecordComponents){var _2=_1.$57n;if(_2==this.grid.getTreeFieldNum()&&!_1.snapOffsetLeft){var _3=_1.embeddedRecord;if(_3!=null){_1.snapOffsetLeft=this.grid.getOpenAreaWidth(_3)+this.grid.iconPadding}}}
+return this.Super("placeEmbeddedComponent",arguments)}
+);isc.B._maxIndex=isc.C+5;isc.A=isc.TreeGrid;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.TREE_FIELD={name:"nodeTitle",treeField:true,getCellValue:function(_1,_2,_3,_4){if(!_1.getNodeTitle){var _5=_4==null?null:_1.getFieldName(_4);return _2==null||_5==null?null:_2[_5]}
+return _1.getNodeTitle(_2,_3,this)},canFilter:false,getFieldTitle:function(_1,_2){var _3=_1.getField(_2);if(_3.name=="nodeTitle")return _1.treeFieldTitle;return _3.title||_3.name}};isc.B.push(isc.A.$82d=function isc_c_TreeGrid__getTreeCellTemplate(){if(!this.$819){isc.Canvas.$816.add({target:this,methodName:"$82a"});this.$819=true}
+if(this.$34p==null){this.$34p=["<table role='presentation' cellpadding=0 cellspacing=0 class='",,"' style='",,isc.Canvas.$42a+"'><tr><td style='",,isc.Canvas.$42a+"' class='",,"'>",,"</td>"]}
+return this.$34p}
+,isc.A.$82e=function isc_c_TreeGrid__getTreeCellTitleTemplate(){if(!this.$819){isc.Canvas.$816.add({target:this,methodName:"$82a"});this.$819=true}
+if(this.$34q==null){this.$34q=["<td style='",,";"+isc.Canvas.$42a+"' class='",,"'>"+(isc.Browser.isSafari||isc.Browser.isIE?"<nobr>":""),,,,(isc.Browser.isSafari?"</nobr>":"")+"</td><td style='",,";"+isc.Canvas.$42a+"padding-left:",,"px;' class='",,"'>",,,"</td>"]}
+return this.$34q}
+,isc.A.$82a=function isc_c_TreeGrid__doublingStringsChanged(){this.$34p=null;this.$34q=null}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.TreeGrid.getPrototype();isc.A.autoFetchTextMatchStyle="exact";isc.A.cascadeSelection=false;isc.A.showPartialSelection=false;isc.A.treeFieldTitle="Name";isc.A.autoAssignTreeField=true;isc.A.showRoot=false;isc.A.displayNodeType=isc.Tree.FOLDERS_AND_LEAVES;isc.A.canDragRecordsOut=false;isc.A.dragDataAction=isc.ListGrid.MOVE;isc.A.openDropFolderDelay=600;isc.A.parentAlreadyContainsChildMessage="This item already contains a child item with that name.";isc.A.cantDragIntoSelfMessage="You can't drag an item into itself.";isc.A.cantDragIntoChildMessage="You can't drag an item into one of it's children.";isc.A.fixedFieldWidths=true;isc.A.wrapCells=false;isc.A.showHiliteInCells=false;isc.A.indentSize=20;isc.A.extraIconGap=2;isc.A.iconSize=16;isc.A.skinImgDir="images/TreeGrid/";isc.A.folderIcon="[SKIN]/folder.gif";isc.A.dropIconSuffix="drop";isc.A.openIconSuffix="open";isc.A.closedIconSuffix="closed";isc.A.nodeIcon="[SKIN]/file.gif";isc.A.showOpenIcons=true;isc.A.showDropIcons=true;isc.A.customIconProperty="icon";isc.A.customIconOpenProperty="showOpenIcon";isc.A.customIconDropProperty="showDropIcon";isc.A.showCustomIconOpen=false;isc.A.showCustomIconDrop=false;isc.A.manyItemsImage="[SKIN]folder_file.gif";isc.A.showConnectors=false;isc.A.showFullConnectors=true;isc.A.showOpener=true;isc.A.openerImage="[SKIN]opener.gif";isc.A.connectorImage="[SKIN]connector.gif";isc.A.offlineNodeMessage="This data not available while offline";isc.A.indentRecordComponents=true;isc.A.canGroupBy=false;isc.A.ignoreEmptyCriteria=false;isc.A.drawAllMaxCells=50;isc.A.drawAheadRatio=1.0;isc.A.$34l="open_icon_";isc.A.$349="extra_icon_";isc.A.$34n="icon_";isc.A.$34o="nodeTitle";isc.A=isc.TreeGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.bodyConstructor="TreeGridBody";isc.A.iconPadding=3;isc.A.$64o="</tr></table>";isc.A.$39=";";isc.A.$12c="checkbox";isc.A.$34r="absmiddle";isc.A.$76g=["style='margin-right:",,"px;'"];isc.A.$4s={};isc.B.push(isc.A.initWidget=function isc_TreeGrid_initWidget(){this.invokeSuper(isc.TreeGrid,this.$oc);if(!this.dataSource&&this.data!=null&&this.data.dataSource){this.dataSource=this.data.dataSource}
+if(!this.fields||this.fields.length==0){this.fields=[isc.TreeGrid.TREE_FIELD]}}
+,isc.A.setDataSource=function isc_TreeGrid_setDataSource(_1,_2){if(_2==null||_2.length==0){_2=[isc.TreeGrid.TREE_FIELD]}
+return this.Super("setDataSource",[_1,_2])}
+,isc.A.$34s=function isc_TreeGrid__initTreeField(){if(!this.fields||this.fields.length==0){this.fields=[isc.TreeGrid.TREE_FIELD]}else{var _1=this.completeFields,_2=this.fields,_3;for(var i=0;i<_1.length;i++){if(_1[i].treeField){_3=_2.indexOf(_1[i]);break}}
+if(_3==null){if(!this.autoAssignTreeField)return;var _5=this.data.titleProperty,_6=_2.findIndex(this.fieldIdProperty,_5);if(_6!=-1)_3=_6}
+if(_3==null)_3=0;if(this.isCheckboxField(this.fields[_3]))_3+=1;this.$34t=_3;var _7=_2[_3],_8=isc.TreeGrid.TREE_FIELD,_9=_7.formatCellValue!=null||_7.displayField!=null;for(var _10 in _8){if(_9&&_10=="getCellValue"){continue}
+if(_7[_10]==null){_7[_10]=_8[_10]}}}}
+,isc.A.deriveVisibleFields=function isc_TreeGrid_deriveVisibleFields(_1,_2,_3,_4){this.invokeSuper(isc.TreeGrid,"deriveVisibleFields",_1,_2,_3,_4);this.$34s()}
+,isc.A.getEmptyMessage=function isc_TreeGrid_getEmptyMessage(){if(this.isOffline()){return this.offlineMessage}
+if(isc.isA.Tree(this.data)&&this.data.getLoadState(this.data.getRoot())==isc.Tree.LOADING)
+return this.loadingDataMessage==null?" ":this.loadingDataMessage.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)});return this.emptyMessage.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)})}
+,isc.A.isEmpty=function isc_TreeGrid_isEmpty(){if(!isc.isA.Tree(this.data))return true;var _1=this.data.getRoot();if(_1==null)return true;var _2=this.data.hasChildren(_1);if(_2||this.showRoot||this.data.showRoot)return false;return true}
+,isc.A.getOpenState=function isc_TreeGrid_getOpenState(){var _1=this.data;if(_1==null){this.logWarn("getOpenState() called for a treeGrid with no data");return[]}
+if(_1.getOpenState)return _1.getOpenState();var _2=_1.getRoot(),_3=[];this.$45q(_1,_2,_3);return isc.Comm.serialize(_3)}
+,isc.A.setOpenState=function isc_TreeGrid_setOpenState(_1){if(this.data&&this.data.setOpenState){this.data.setOpenState(_1);return}
+_1=this.evalViewState(_1,"openState")
+if(!_1)return;if(!this.data){this.logWarn("unable to set open state for this treeGrid as this.data is unset");return}
+this.data.closeAll();this.data.openFolders(_1)}
+,isc.A.getSelectedPaths=function isc_TreeGrid_getSelectedPaths(){if(!this.selection)return null;var _1=this.selection.getSelection()||[],_2=[];for(var i=0;i<_1.length;i++){_2[i]=this.data.getPath(_1[i])}
+return isc.Comm.serialize(_2)}
+,isc.A.showActionInPanel=function isc_TreeGrid_showActionInPanel(_1){return this.Super("showActionInPanel",arguments)}
+,isc.A.setSelectedPaths=function isc_TreeGrid_setSelectedPaths(_1){_1=this.evalViewState(_1,"selectedPaths")
+if(!_1)return;var _2=this.selection,_3=this.data;if(_3&&_2){_2.deselectAll();var _4=[];for(var i=0;i<_1.length;i++){var _6=_3.find(_1[i]);if(_6)_4.add(_6)}
+this.selection.selectList(_4)}}
+,isc.A.getViewState=function isc_TreeGrid_getViewState(){var _1=this.Super("getViewState",[true]);_1.open=this.getOpenState();return"("+isc.Comm.serialize(_1)+")"}
+,isc.A.setViewState=function isc_TreeGrid_setViewState(_1){this.Super("setViewState",arguments);_1=this.evalViewState(_1,"viewState",true)
+if(!_1)return;if(_1.open)this.setOpenState(_1.open);if(_1.selected)this.setSelectedState(_1.selected)}
+,isc.A.getDefaultData=function isc_TreeGrid_getDefaultData(){return isc.Tree.create({$31k:true})}
+,isc.A.setData=function isc_TreeGrid_setData(_1,_2,_3,_4){this.invokeSuper(isc.TreeGrid,"setData",_1,_2,_3,_4);if(!this.data)return;if(this.separateFolders!=null)this.data.separateFolders=this.separateFolders;if(this.sortFoldersBeforeLeaves!=null)
+this.data.sortFoldersBeforeLeaves=this.sortFoldersBeforeLeaves;if(this.showRoot&&isc.ResultTree&&isc.isA.ResultTree(this.data)){this.logWarn("showRoot may not be set with a databound treeGrid, unexpected "+"results may occur")}
+this.data.showRoot=this.showRoot;this.data.openDisplayNodeType=this.displayNodeType}
+,isc.A.draw=function isc_TreeGrid_draw(_1,_2,_3,_4){if(this.initialData&&(!isc.ResultSet||!isc.isA.ResultSet(this.data))){this.setData(this.createResultTree())}
+this.invokeSuper(isc.TreeGrid,"draw",_1,_2,_3,_4)}
+,isc.A.bodyKeyPress=function isc_TreeGrid_bodyKeyPress(_1){var _2=this.selection;if(this.selectionType!=isc.Selection.NONE&&this.data.getLength()>0&&_2.anySelected()&&!_2.multipleSelected())
+{var _3=this.selection.getSelectedRecord();if(_1.keyName=="Arrow_Left"){if(this.data.isFolder(_3)&&this.data.isOpen(_3)){this.closeFolder(_3)}else{this.$319(this.data.getParent(_3),true)}
+return false}else if(_1.keyName=="Arrow_Right"){if(this.data.isFolder(_3)){if(!this.data.isOpen(_3)){this.openFolder(_3);return false}else{var _4=this.getRecord(this.data.indexOf(_3)+1);if(_4!=null&&this.data.getParent(_4)==_3){this.$319(_4,true);return false}}}}}
+return this.Super("bodyKeyPress",arguments)}
+,isc.A.$298=function isc_TreeGrid__cellContextClick(_1,_2,_3){if(_2<0||_3<0)return true;var _4=this.data.isFolder(_1);if(this.nodeContextClick&&this.nodeContextClick(this,_1,_2)==false){return false}
+if(_4){if(this.folderContextClick&&this.folderContextClick(this,_1,_2)==false){return false}}else{if(this.leafContextClick&&this.leafContextClick(this,_1,_2)==false){return false}}
+return this.Super("$298",arguments)}
+,isc.A.handleEditCellEvent=function isc_TreeGrid_handleEditCellEvent(_1,_2){var _3=this.getRecord(_1);if(this.clickInOpenArea(_3)||this.clickInCheckboxArea(_3))return false;return this.Super("handleEditCellEvent",arguments)}
+,isc.A.canEditCell=function isc_TreeGrid_canEditCell(_1,_2){if(this.Super("canEditCell",arguments)==false)return false;if(this.getField(_2)[this.fieldIdProperty]==this.data.nameProperty)return false;if(this.getField(_2)[this.fieldIdProperty]==this.$34o)return false;return true}
+,isc.A.getEditFormItemFieldWidths=function isc_TreeGrid_getEditFormItemFieldWidths(_1){var _2=this.data.getLevel(_1);if(!this.showRoot)_2--;var _3=this.getOpenerIconSize(_1),_4=_2*(this.showConnectors?_3:this.indentSize);_4+=this.iconSize+_3;if(this.$739(_1)){_4+=(this.$65a()+this.extraIconGap)}else if(this.getExtraIcon(_1)){_4+=(this.iconSize+this.extraIconGap)}
+var _5=this.Super("getEditFormItemFieldWidths",arguments),_6=this.getTreeFieldNum();_5[_6]-=_4;return _5}
+,isc.A.getRecordDataSource=function isc_TreeGrid_getRecordDataSource(_1){return this.data.getNodeDataSource(_1)}
+,isc.A.rowClick=function isc_TreeGrid_rowClick(_1,_2,_3){var _4=_1;if(this.clickInOpenArea(_4)||this.clickInCheckboxArea(_4))return false;this.$31q=_2;if(_2<0||_3<0)return false;var _4=this.getRecord(_2),_5=this.data.isFolder(_4);if(this.nodeClick)this.nodeClick(this,_4,_2);if(_5){if(this.folderClick)this.folderClick(this,_4,_2)}else{if(this.leafClick)this.leafClick(this,_4,_2)}
+return this.Super("rowClick",arguments)}
+,isc.A.recordDoubleClick=function isc_TreeGrid_recordDoubleClick(_1,_2,_3,_4,_5,_6,_7){if(this.clickInOpenArea(_2)||this.clickInCheckboxArea(_2))return false;if(this.isEditable()&&this.editEvent==isc.EH.DOUBLE_CLICK&&this.canEditCell(_3,_5))
+{return true}
+if(this.data.isFolder(_2)){return this.toggleFolder(_2)}else
+return this.openLeaf(_2)}
+,isc.A.dataChanged=function isc_TreeGrid_dataChanged(){this.Super("dataChanged",arguments);var _1=this.$34z;if(_1&&this.data.isOpen(_1)&&this.data.getLoadState(_1)==isc.Tree.LOADED)
+{this.$340(_1);this.$34z=null}}
+,isc.A.openLeaf=function isc_TreeGrid_openLeaf(_1){}
+,isc.A.getDragTrackerIcon=function isc_TreeGrid_getDragTrackerIcon(_1){var _2;if(_1&&_1.length>1&&this.manyItemsImage!=null)
+_2=this.manyItemsImage;else if(_1&&_1[0])_2=this.getIcon(_1[0],true);return _2}
+,isc.A.getDragTrackerTitle=function isc_TreeGrid_getDragTrackerTitle(_1,_2,_3,_4,_5,_6){var _7=this.getFieldNum(this.getTitleField());if(_7!=this.getTreeFieldNum())
+return this.invokeSuper(isc.TreeGrid,"getDragTrackerTitle",_1,_2,_3,_4,_5,_6);var _8=this.getCellStyle(_1,_2,_7),_9=this.getCellCSSText(_1,_2,_7);if(this.selection.isSelected(_1)){var _10=this.body.getCellStyleIndex(_1,_2,_7),_11=this.body.getCellStyleName(_10,_1,_2,_7);if(_11==_8){_10-=2;_8=this.body.getCellStyleName(_10,_1,_2,_7)}}
+var _12=this.invokeSuper(isc.TreeGrid,"getCellValue",_1,_2,_7);var _13=this.$342(_12,_1,_2,_7,false,_8,_9).join(isc.emptyString);return["<table class='",_8,"' style='",_9,"'><tr>",_13,"</tr></table>"].join(isc.emptyString)}
+,isc.A.willAcceptDrop=function isc_TreeGrid_willAcceptDrop(){if(!this.Super("willAcceptDrop",arguments))return false;isc.$54j=true;var _1=this.getEventRecordNum(),_2=this.data.get(_1);isc.$54j=false;if(_2==null)_2=this.data.getRoot();if(!_2||_2.canAcceptDrop==false)return false;var _3=this.data.isFolder(_2);if(!_3&&!(this.canReorderRecords||this.canDropOnLeaves))return false;var _4=isc.EH.dragTarget.getDragData();if(!isc.isAn.Object(_4)||this.getDropError(_4,_2)!=null){return false}
+if(!_3){_2=this.data.getParent(_2);if(_2.canAcceptDrop==false)return false}
+if(isc.EH.dragTarget!=this)return true;var _5=this.canReparentNodes;if(_5==null&&this.canAcceptDroppedRecords)_5=true;if(!_5){if(!isc.isAn.Array(_4))_4=[_4];var _6;_6=this.data.getParent(_4[0]);if(_6!=_2)return false;for(var i=1;i<_4.length;i++){if(_6!=this.data.getParent(_4[i]))return false}}
+return true}
+,isc.A.$31i=function isc_TreeGrid__setUpDragProperties(){this.canDrag=(this.canDrag||this.canDragRecordsOut||this.$34c()||this.canDragSelect);this.canDrop=(this.canDrop||this.canDragRecordsOut||this.$34c());this.canAcceptDrop=(this.canAcceptDrop||this.canAcceptDroppedRecords||this.$34c())}
+,isc.A.$34c=function isc_TreeGrid__canDragRecordsToSelf(){var _1=this.canReparentNodes;if(_1==null&&this.canAcceptDroppedRecords){if(!this.$343){this.logInfo("'canReparentNodes' is unset. Allowing node reparenting as "+"'canAcceptDroppedRecords' is set to true. For explicit control, "+"use 'canReparentNodes' instead.","dragDrop");this.$343=true}
+_1=this.canAcceptDroppedRecords}
+return this.canReorderRecords||_1}
+,isc.A.getDropError=function isc_TreeGrid_getDropError(_1,_2){for(var i=0,_4=_1.length;i<_4;i++){if(this.data.isDescendantOf(_2,_1[i])){return this.cantDragIntoChildMessage}}
+var _5=this.data.isFolder(_2);if(_5){for(i=0;i<_4;i++){if(_1[i]==_2){return this.cantDragIntoSelfMessage}}}
+return null}
+,isc.A.dropMove=function isc_TreeGrid_dropMove(){var _1=this.getEventRow();if(_1==-1)return;var _2=(_1==-2?this.data.getRoot():this.data.get(_1)),_3=this.getDropFolder(),_4=(this.canReorderRecords?this.getReorderPosition(_1):null);if(_3!=this.lastDropFolder||_2!=this.$344||_4!=this.$345){if(!this.$346){this.$346=this.getID()+".openDropFolder()"}
+if(this.openDropFolderTimer)isc.Timer.clear(this.openDropFolderTimer);if(!this.data.isOpen(_3)){this.openDropFolderTimer=isc.Timer.setTimeout(this.$346,this.openDropFolderDelay)}
+this.updateDropFolder(_3)}
+if(!this.willAcceptDrop()){this.body.setNoDropIndicator()}else{this.body.clearNoDropIndicator()}
+if(this.canReorderRecords){if(this.data.isOpen(_3))this.showDragLineForRecord(_1,_4);else this.hideDragLine()}
+this.$344=_2;this.$345=_4}
+,isc.A.getDropFolder=function isc_TreeGrid_getDropFolder(){var _1=this.getEventRow(),_2=this.data,_3=(_1<0?_2.getRoot():_2.get(_1));if(_2.isRoot(_3))return _2.getRoot();var _4=_2.isFolder(_3);if(!this.canReorderRecords)return(_4?_3:_2.getParent(_3));var _5=this.getReorderPosition(_3);if(!_4||_5==isc.ListGrid.BEFORE||(_5==isc.ListGrid.AFTER&&(!_2.isOpen(_3)||!_2.hasChildren(_3))))
+{return _2.getParent(_3)}else{return _3}}
+,isc.A.openDropFolder=function isc_TreeGrid_openDropFolder(){var _1=this.lastDropFolder;if(!_1||!this.data.isFolder(_1)||this.data.isOpen(_1))return false;this.openFolder(_1);if(this.canReorderRecords)
+this.showDragLineForRecord(this.data.indexOf(_1),isc.ListGrid.OVER)}
+,isc.A.getReorderPosition=function isc_TreeGrid_getReorderPosition(_1,_2,_3,_4,_5){if(_2==null)_2=this.body.getOffsetY();if(_1==null)_1=this.getEventRow(_2);var _6=this.data;if(!isc.isA.Number(_1))_1=_6.indexOf(_1);var _7=_6.get(_1);if(_7&&_6.isFolder(_7)){var _8=_2-this.body.getRowTop(_1),_9=this.body.getRowSize(_1);if(_8<(_9/ 4)){return isc.ListGrid.BEFORE}else if(_8>(3*_9/ 4)){return isc.ListGrid.AFTER}else{return isc.ListGrid.OVER}}
+return this.invokeSuper(isc.TreeGrid,"getReorderPosition",_1,_2,_3,_4,_5)}
+,isc.A.showDragLineForRecord=function isc_TreeGrid_showDragLineForRecord(_1,_2,_3,_4,_5){if(_1==null)_1=this.getEventRecordNum();if(_2==null)_2=this.getReorderPosition(_1);if(_2==isc.ListGrid.OVER){var _6=this.getRecord(_1),_7=this.data;if(_7.isFolder(_6)&&_7.isOpen(_6))_2=isc.ListGrid.AFTER}
+return this.invokeSuper(isc.TreeGrid,"showDragLineForRecord",_1,_2,_3,_4,_5)}
+,isc.A.dropOut=function isc_TreeGrid_dropOut(){this.hideDragLine();this.body.clearNoDropIndicator();this.$344=null;this.updateDropFolder();if(this.openDropFolderTimer)isc.Timer.clear(this.openDropFolderTimer)}
+,isc.A.updateDropFolder=function isc_TreeGrid_updateDropFolder(_1){var _2=this.lastDropFolder;this.lastDropFolder=_1;if(_1){_1.$347=this.body.willAcceptDrop(_1)
+this.setRowIcon(_1,this.getIcon(_1))}
+if(_2&&_2!=_1){delete _2.$347;this.setRowIcon(_2,this.getIcon(_2))}}
+,isc.A.transferSelectedData=function isc_TreeGrid_transferSelectedData(_1,_2,_3,_4){if(!this.isValidTransferSource(_1)){if(_4)this.fireCallback(_4);return}
+if(_3==null)_3=0;if(_2==null)_2=this.data.getRoot();var _5=_1.cloneDragData();this.transferNodes(_5,_2,_3,_1,_4)}
+,isc.A.drop=function isc_TreeGrid_drop(){if(!this.willAcceptDrop())return false;var _1=isc.EH.dragTarget.cloneDragData(),_2=this.getEventRecordNum(),_3=this.getReorderPosition(_2),_4=this.data.get(_2)||this.data.getRoot(),_5=this.getDropFolder();var _6=isc.EH.dragTarget.getData(),_7=(isc.isA.Tree(_6)&&isc.isA.Tree(this.data)&&_6.getRoot()==this.data.getRoot());for(var i=0;i<_1.length;i++){var _9=_1[i];var _10=(this.data.findChildNum(_5,this.data.getName(_9))!=-1);var _11=_7&&this.canReorderRecords&&_5==this.data.getParent(_9);if(_10&&!_11){this.logInfo("already a child named: "+this.data.getName(_9)+" under parent: "+this.data.getPath(_5));isc.warn(this.parentAlreadyContainsChildMessage);return false}}
+var _12=null;if(this.canReorderRecords){if(_2<0){_5=_4;_12=this.data.getChildren(_5).getLength()}else if(_4==_5){_12=0}else{_12=(_3==isc.ListGrid.AFTER?1:0)+this.data.getChildren(_5).indexOf(_4)}}
+if(this.onFolderDrop!=null&&(this.onFolderDrop(_1,_5,_12,isc.EH.dragTarget)==false))return false;this.folderDrop(_1,_5,_12,isc.EH.dragTarget);this.data.openFolder(_5);return false}
+,isc.A.folderDrop=function isc_TreeGrid_folderDrop(_1,_2,_3,_4,_5){this.transferNodes(_1,_2,_3,_4,_5)}
+,isc.A.transferNodes=function isc_TreeGrid_transferNodes(_1,_2,_3,_4,_5){if(!this.$67u("transferNodes",_1,_2,_3,_4,_5)){return}
+_2=_2||this.data.root;var _6=_4.getData(),_7=(isc.isA.Tree(_6)&&isc.isA.Tree(this.data)&&_6.getRoot()==this.data.getRoot());var _8=this.getDataSource(),_9=_4.getDataSource();if(_7&&(this.dragDataAction!=isc.TreeGrid.COPY&&this.dragDataAction!=isc.TreeGrid.CLONE))
+{if(_8!=null&&this.data!=null&&isc.ResultTree&&isc.isA.ResultTree(this.data))
+{this.$67k[0].noRemove=true;var _10=isc.rpc.startQueue();var _11=_6.getChildren(_2);var _12,_13;if(_3!=null){if(_3<_11.length){_12=_11[_3]}}
+if(_12==_13){_12=_11[_11.length-1]}
+for(var i=0;i<_1.length;i++){var _15=_1[i];if(this.shouldSaveLocally()||_15[this.data.parentIdField]==_2[this.data.idField])
+{if(_3!=null){_11=_6.getChildren(_2);_6.move(_15,_2,_11.indexOf(_12))}}else{var _16=_1[i]["_isOpen_"+this.data.ID];var _15=isc.addProperties({},this.data.getCleanNodeData(_1[i],true,false)),_17=isc.addProperties({},_15);if(_16!=null)_15["_isOpen_"+this.data.ID]=_16;_15[this.data.parentIdField]=_2[this.data.idField];var _18=null,_19=this.data.getChildren(_2);if(_3==null){_18=_19.get(_19.length-1)}else if(_3>0){_18=_19.get(_3-1)}
+this.updateDataViaDataSource(_15,_8,{oldValues:_17,parentNode:this.data.getParent(_1[i]),newParentNode:_2,dragTree:_6,draggedNode:_15,draggedNodeList:_1,dropNeighbor:_18,dropIndex:_3},_4)}}}else{_6.moveList(_1,_2,_3)}}else if(_8!=null){var _20;if(this.dragRecategorize||(_9!=null&&_9!=_8&&this.data!=null&&isc.ResultTree&&isc.isA.ResultTree(this.data)&&_4.dragDataAction==isc.TreeGrid.MOVE))
+{var _21=_9.getTreeRelationship(_8);if(_21!=null&&_21.parentIdField){var _22=false,_23=_9.getPrimaryKeyFields();for(var _24 in _23){if(_24==_21.parentIdField){this.logWarn("dragRecategorize: data source has dataSource:"+_9.getID()+". foreignKey relationship with "+"target dataSource "+_8.getID()+" is based on primary key which cannot be modified.");_22=true}}
+if(!_22)_20=true;this.logInfo("Recategorizing dropped nodes in dataSource:"+_9.getID())}
+this.$67k[0].noRemove=true;var _10=isc.rpc.startQueue();for(var i=0;i<_1.length;i++){var _15={};var _25=_9.getPrimaryKeyFieldNames();for(var j=0;j<_25.length;j++){_15[_25[j]]=_1[i][_25[j]]}
+if(_20){_15[_21.parentIdField]=_2[_21.idField]}
+isc.addProperties(_15,this.getDropValues(_15,_9,_2,_3,_4));this.updateDataViaDataSource(_15,_9,null,_4)}}else{var _10=isc.rpc.startQueue();for(var i=0;i<_1.length;i++){var _27=_1[i],_28=this.data;if(_28){_27[_28.parentIdField]=_2[_28.idField]}
+isc.addProperties(_27,this.getDropValues(_27,_9,_2,_3,_4));this.$61d(_27,_9,_4,null,_3,_2)}}}else{for(var i=0;i<_1.length;i++){this.$61d(_1[i],_9,_4,null,_3,_2)}}
+if(!this.$67l){isc.Log.logDebug("Invoking transferDragData from inside transferNodes - no server "+"queries needed?","dragDrop");_4.transferDragData(this.$67n,this);if(_8){if(!this.$67o)isc.rpc.sendQueue()}}
+this.$67m=false}
+,isc.A.$67w=function isc_TreeGrid__updateComplete(_1,_2,_3){if(!_3.dragTree)return;if(_3.newParentNode!=this.data.root&&_3.dragTree.getParent(_3.newParentNode)==null)
+{isc.logWarn("Target folder is no longer in the Tree in TreeGrid cache sync");return}
+var _4=_3.dropNeighbor,_5=_3.dragTree,_6=_5.getChildren(_3.newParentNode),_7=_3.draggedNodeList,_8=_5.idField,_9=_7.findIndex(_8,_3.draggedNode[_8]),_10,_11;if(_4==null){_10=0}else{for(var i=0;i<_6.length;i++){var _13=_6[i];if(_13==_4){_10=i+1;break}}}
+if(_10!==_11){while(_10<_6.length){var _14=_7.findIndex(_8,_6[_10][_8]);if(_14==-1||_14>_9)break;_10++}}
+if(_10===_11){isc.logWarn("Could not order dropped node by reference to neighbor; trying absolute index");_10=_3.dropIndex}
+if(_10===_11){isc.logWarn("Unable to determine drop location in TreeGrid cache sync");return}
+var _15=this.data.find(_8,_3.draggedNode[_8]);_5.move(_15,this.data.getParent(_15),_10);this.Super("$67w",arguments)}
+,isc.A.getTreeCellValue=function isc_TreeGrid_getTreeCellValue(_1,_2,_3,_4){if(_2==null){return _1}
+var _5=this.data.getLevel(_2),_6=isc.TreeGrid.$82d(),_7=this.getCellCSSText(_2,_3,_4),_8=this.getCellStyle(_2,_3,_4);_6[1]=_8
+_6[3]=_7
+if(_6[3]!=null&&!_6[3].endsWith(this.$39))_6[3]+=this.$39;_6[5]=_7;_6[7]=_8;_6[9]=this.getIndentHTML(_5,_2);var _9=this.$342(_1,_2,_3,_4,true,_8,_7);for(var i=0,j=11;i<_9.length;i++){_6[j]=_9[i];j++}
+_6[j]=this.$64o
+return _6.join(isc.emptyString)}
+,isc.A.$342=function isc_TreeGrid__getTreeCellTitleArray(_1,_2,_3,_4,_5,_6,_7){if(_7==null)_7=this.getCellCSSText(_2,_3,_4);if(_6==null)_6=this.getCellStyle(_2,_3,_4);var _8=isc.TreeGrid.$82e();_8[1]=_7;_8[3]=_6;if(_5){var _9=this.getOpenIcon(_2),_10=this.openerIconSize||(this.showConnectors?this.cellHeight:null),_11=(_3!=null?this.$34l+_3:null);if(_9){_8[5]=this.getIconHTML(_9,_11,_10)}else{_8[5]=this.$348(_10||this.iconSize)}}else _8[5]=null;var _12=this.$739(_2),_13=_12||this.getExtraIcon(_2),_14=(_3!=null?this.$349+_3:null),_15=(_12!=null?this.$65a():this.iconSize),_16=this.extraIconGap,_17=this.getIcon(_2),_18=(_3!=null?this.$34n+_3:null);_8[6]=(_13?this.getIconHTML(_13,_14,_15,_16):null);_8[7]=this.getIconHTML(_17,_18,_2.iconSize);_8[9]=_7;_8[11]=this.iconPadding;_8[13]=_6;_8[15]=this.wrapCells?null:"<NOBR>"
+_8[16]=_1;return _8}
+,isc.A.getCellAlign=function isc_TreeGrid_getCellAlign(_1,_2,_3){var _4=this.getField(_3);if(_4&&_4.treeField){return this.isRTL()?"right":"left"}
+return this.Super("getCellAlign",arguments)}
+,isc.A.getCellValue=function isc_TreeGrid_getCellValue(_1,_2,_3,_4,_5,_6,_7){var _8=this.invokeSuper(isc.TreeGrid,"getCellValue",_1,_2,_3,_4,_5,_6,_7);if(_3==this.getTreeFieldNum()){_8=this.getTreeCellValue(_8,_1,_2,_3)}
+return _8}
+,isc.A.bodyDrawing=function isc_TreeGrid_bodyDrawing(_1,_2,_3,_4,_5){this.$35a={};return this.invokeSuper(isc.TreeGrid,"bodyDrawing",_1,_2,_3,_4,_5)}
+,isc.A.getNodeTitle=function isc_TreeGrid_getNodeTitle(_1,_2,_3){if(_3.name&&_3.name!=this.$34o){if(_2==-1)return _1[_3.name];return this.getEditedRecord(_2)[_3.name]}
+return this.data.getTitle(_1)}
+,isc.A.getTitleField=function isc_TreeGrid_getTitleField(){if(this.titleField!=null)return this.titleField;return this.getFieldName(this.getTreeFieldNum())}
+,isc.A.getTreeFieldNum=function isc_TreeGrid_getTreeFieldNum(){return this.$34t}
+,isc.A.getOpenAreaWidth=function isc_TreeGrid_getOpenAreaWidth(_1){var _2=this.getOpenerIconSize(_1),_3=(this.showConnectors?_2:this.indentSize);return((this.data.getLevel(_1)-(this.showRoot?0:1))*_3)+_2}
+,isc.A.getOpenerIconSize=function isc_TreeGrid_getOpenerIconSize(_1){return(this.openerIconSize||(this.showConnectors?this.cellHeight:this.iconSize))}
+,isc.A.clickInOpenArea=function isc_TreeGrid_clickInOpenArea(_1){if(!this.data.isFolder(_1))return false;var _2=this.getTreeFieldNum(),_3=this.getFieldBody(_2),_4=this.getLocalFieldNum(_2),_5=_3.getColumnLeft(_4),_6=_3.getColumnWidth(_4),_7=this.getOpenAreaWidth(_1),x=_3.getOffsetX();if(this.isRTL()){var _9=_5+_6;return x>=(_9-_7)&&x<=_9}else{return x>=_5&&x<_5+_7}}
+,isc.A.clickInCheckboxArea=function isc_TreeGrid_clickInCheckboxArea(_1){if(this.selectionAppearance!=this.$12c)return false;var _2=this.getTreeFieldNum(),_3=this.getFieldBody(_2),_4=this.getLocalFieldNum(_2),_5=_3.getColumnLeft(_4),_6=_3.getColumnWidth(_4),_7=this.getOpenAreaWidth(_1),_8=this.$65a(),x=_3.getOffsetX();if(this.isRTL()){var _10=_5+_6;return(x>=(_10-_7-_8)&&x<=(_10-_7))}else{return(x>=(_5+_7)&&x<(_5+_7+_8))}}
+,isc.A.getIndentHTML=function isc_TreeGrid_getIndentHTML(_1,_2){var _3=_1;if(!this.showRoot)_3--;var _4=(this.showConnectors?this.getOpenerIconSize(_2):this.indentSize);if(this.showConnectors&&this.showFullConnectors){var _5=this.data.$59a(_2);_5.remove(_1);if(!this.showRoot)_5.remove(0);if(_5.length!=0){if(!this.$59b){var _6=isc.Img.urlForState(this.connectorImage,null,null,"ancestor"),_7=this.getIconHTML(_6,null,this.cellHeight);this.$59c=_7}
+var _8=this.$348(_4),_9=isc.StringBuffer.create(isc.emptyString);_9.append("<NOBR>");for(var i=(this.showRoot?0:1);i<_1;i++){if(_5.contains(i))_9.append(this.$59c);else _9.append(_8)}
+_9=_9.release();return _9}}
+var _11=this.$348(_3*_4);if(isc.Browser.isIE9||(isc.Browser.isStrict&&(isc.Browser.isIE7||isc.Browser.isIE8))){_11="<NOBR>"+_11+"</NOBR>"}
+return _11}
+,isc.A.$348=function isc_TreeGrid__indentHTML(_1){if(_1==0)return isc.emptyString;var _2=isc.TreeGrid.$35c;if(_2==null)_2=isc.TreeGrid.$35c={};if(_2[_1]==null)_2[_1]=isc.Canvas.spacerHTML(_1,1);return _2[_1]}
+,isc.A.getOpenIcon=function isc_TreeGrid_getOpenIcon(_1){if(this.showOpener==false)return null;if(!this.data)return null;if(isc.isA.Number(_1))_1=this.data.get(_1);if(_1==null)return null;if(_1.openIcon){return _1.openIcon}else{var _2=this.data.isFolder(_1),_3=_2,_4=_2,_5,_6;if(_2){var _7=this.data.getLoadState(_1);if(_7==isc.Tree.UNLOADED||(_7==isc.Tree.FOLDERS_LOADED&&this.displayNodeType!=isc.Tree.FOLDERS_ONLY))
+{_3=true;_4=false}else{_3=this.data.hasChildren(_1,this.displayNodeType);_4=_3&&this.data.isOpen(_1)}}
+if(_4&&!this.showFullConnectors)_6=true
+else{_6=!this.$35d(_1)}
+_5=!this.$35e(_1);return this.getOpenerImageURL(_3,_4,_5,_6)}}
+,isc.A.$35e=function isc_TreeGrid__shouldShowPreviousLine(_1){var _2=this.data.indexOf(_1);if(_2==0)return false;if(this.showFullConnectors)return true;var _3=this.getRecord(_2-1),_4=this.data.getParent(_1);if(_3==null)return false;return(_4==_3||_4==this.data.getParent(_3))}
+,isc.A.$35d=function isc_TreeGrid__shouldShowNextLine(_1){if(this.showFullConnectors){var _2=this.data,_3=_2.getParent(_1),_4=_2.getChildren(_3);return _4.indexOf(_1)!=_4.length-1}
+var _5=this.data.indexOf(_1),_6=this.getRecord(_5+1);if(_6==null)return false;return(this.data.getParent(_1)==this.data.getParent(_6))}
+,isc.A.getOpenerImageURL=function isc_TreeGrid_getOpenerImageURL(_1,_2,_3,_4){if(!this.$35f){var _5=this.openerImage;this.$35f={opened:isc.Img.urlForState(_5,null,null,"opened"),closed:isc.Img.urlForState(_5,null,null,(this.isRTL()?"closed_rtl":"closed")),opening:isc.Img.urlForState(_5,null,null,"opening")}}
+if(this.showConnectors&&!this.$35g){var _5=this.connectorImage,_6=["single","start","end","middle","opened_single","opened_start","opened_middle","opened_end","closed_single","closed_start","closed_middle","closed_end"],_7={},_8=this.isRTL(),_9="$35h";for(var i=0;i<_6.length;i++){var _11=_6[i],_12=_11;if(_8)_12+=_9;_7[_11]=isc.Img.urlForState(_5,null,null,_12)}
+this.$35g=_7}
+if(this.showConnectors){var _13=this.$35g;if(_1){if(_2){if(!this.showFullConnectors){if(_3)return _13.opened_single;return _13.opened_end}
+if(_3&&_4)return _13.opened_single;else if(_3)return _13.opened_start;else if(_4)return _13.opened_end;else return _13.opened_middle}else{if(_3&&_4)return _13.closed_single;if(_3)return _13.closed_start;if(_4)return _13.closed_end;return _13.closed_middle}}else{if(_3&&_4)return _13.single;if(_3)return _13.start;if(_4)return _13.end;return _13.middle}}else{var _13=this.$35f;if(!_1)return null;if(_2)return _13.opened;return _13.closed}}
+,isc.A.$739=function isc_TreeGrid__getCheckboxIcon(_1){var _2=null;if(this.selectionAppearance==this.$12c){var _3=this.selection.isSelected(_1)?true:false;var _4=(_3&&this.showPartialSelection&&this.selection.isPartiallySelected(_1))?true:false;_2=_4?(this.checkboxFieldPartialImage||this.booleanPartialImage):_3?(this.checkboxFieldTrueImage||this.booleanTrueImage):(this.checkboxFieldFalseImage||this.booleanFalseImage);if(!this.body.canSelectRecord(_1)){if(this.showDisabledSelectionCheckbox){_2=isc.Img.urlForState(_2,null,null,"Disabled")}else{_2="[SKINIMG]/blank.gif"}}}
+return _2}
+,isc.A.getExtraIcon=function isc_TreeGrid_getExtraIcon(_1){return null}
+,isc.A.getIcon=function isc_TreeGrid_getIcon(_1,_2){if(isc.isA.Number(_1))_1=this.data.get(_1);if(!_1)return null;var _3=_1[this.customIconProperty],_4=(_3!=null),_5=this.data.isFolder(_1);if(!_4){if(_5)_3=this.folderIcon;else _3=this.nodeIcon}
+var _6;if(_5){var _7=_2?false:(this.lastDropFolder==_1&&_1.$347),_8=_2?false:!!this.data.isOpen(_1);if(_7){if(_1.dropIcon!=null)_3=_1.dropIcon;else if(!_4&&this.folderDropImage!=null)_3=this.folderDropImage;else{var _9;if(_4){_9=_1[this.customIconDropProperty];if(_9==null)_9=this.showCustomIconDrop}else{_9=this.showDropIcons}
+if(_9)_6=this.dropIconSuffix}}else if(_8){if(_1.openedIcon!=null)_3=_1.openedIcon;else if(!_4&&this.folderOpenImage!=null)_3=this.folderOpenImage;else{var _10;if(_4){_10=_1[this.customIconOpenProperty];if(_10==null)_10=this.showCustomIconOpen}else{_10=this.showOpenIcons}
+if(_10)_6=this.openIconSuffix;else if(!_4)_6=this.closedIconSuffix}}else{if(!_4){if(this.folderClosedImage)_3=this.folderClosedImage;else _6=this.closedIconSuffix}}}else{if(!_4&&this.fileImage)_3=this.fileImage}
+return isc.Img.urlForState(_3,false,false,_6)}
+,isc.A.getIconHTML=function isc_TreeGrid_getIconHTML(_1,_2,_3,_4){if(_1==null)return isc.emptyString;if(_3==null)_3=this.iconSize;var _5=this.$35a.iconHTML;if(_5==null)_5=this.$35a.iconHTML={};if(_5[_1]==null){var _6;if(_4){var _7=this.$76g;_7[1]=_4;_6=_7.join(isc.emptyString)}
+var _8=this.$4s;_8.src=_1;_8.width=_8.height=_3;_8.name=_2;_8.align=this.$34r;_8.extraStuff=_6;_5[_1]=this.$wf(_8)}
+var _9=_5[_1];_9[14]=_2;return _9.join(isc.$ad)}
+,isc.A.setRowIcon=function isc_TreeGrid_setRowIcon(_1,_2){if(!isc.isA.Number(_1))_1=this.data.indexOf(_1);if(_1!=-1&&this.getIcon(_1)!=null){this.setImage(this.$34n+_1,_2)}}
+,isc.A.setNodeIcon=function isc_TreeGrid_setNodeIcon(_1,_2){_1[this.customIconProperty]=_2;this.setImage(this.$34n+this.getRecordIndex(_1),_2)}
+,isc.A.getPrintHTML=function isc_TreeGrid_getPrintHTML(_1,_2){var _3=this.printExpandTree;if(_3==null)_3=_1?_1.expandTrees:null;if(_3&&this.data){if(isc.ResultTree&&isc.isA.ResultTree(this.data)&&this.data.loadDataOnDemand){this.logWarn("Printing TreeGrid with option to expand folders on print not supported "+"for load on demand trees.")}else{this.data.openAll()}}
+return this.Super("getPrintHTML",arguments)}
+,isc.A.getExportFieldValue=function isc_TreeGrid_getExportFieldValue(_1,_2,_3){var _4=this.Super("getExportFieldValue",arguments);if(_3==this.getTreeFieldNum()&&this.exportIndentString){var _5=this.data.getLevel(_1);while(--_5>0)_4=this.exportIndentString+_4}
+return _4}
+);isc.B._maxIndex=isc.C+70;isc.TreeGrid.registerStringMethods({folderOpened:"node",folderClosed:"node",folderClick:"viewer,folder,recordNum",leafClick:"viewer,leaf,recordNum",nodeClick:"viewer,node,recordNum",folderContextClick:"viewer,folder,recordNum",leafContextClick:"viewer,leaf,recordNum",nodeContextClick:"viewer,node,recordNum",dataArrived:"parentNode",onFolderDrop:"nodes,folder,index,sourceWidget"});isc.defineInterface("Observer").addInterfaceProperties({registerObserved:isc.ClassFactory.TARGET_IMPLEMENTS,unregisterObserved:isc.ClassFactory.TARGET_IMPLEMENTS});isc.defineInterface("AutoObserver","Observer").addInterfaceProperties({observedName:"observed",observations:{},registerObserved:function(_1){this[this.observedName]=_1;for(var _2 in this.observations){this.observe(_1,_2,this.observations[_2])}
+if(isc.isA.Canvas(_1)){this.observe(_1,"destroy","observer.unregisterObserved(observed)")}},unregisterObserved:function(_1){this[this.observedName]=null;for(var _2 in this.observations){this.ignore(_1,_2)}}});isc.defineInterface("GridAutoObserver","AutoObserver").addInterfaceProperties({observedName:"grid"});isc.defineClass("GridTotalRowsIndicator","Label","GridAutoObserver");isc.A=isc.GridTotalRowsIndicator.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.height=1;isc.A.overflow="visible";isc.A.valign="center";isc.A.observations={"dataArrived":"observer.gridDataChanged()","setData":"observer.gridDataChanged()"};isc.A.dynamicContents=true;isc.A.contents="Total Rows: ${this.rowCount}";isc.A.rowCount="N/A";isc.B.push(isc.A.gridDataChanged=function isc_GridTotalRowsIndicator_gridDataChanged(){var _1=this.grid.data;if(!_1)this.rowCount="N/A";if(isc.isA.ResultSet(_1)){if(_1.lengthIsKnown())this.rowCount=_1.getLength();else this.rowCount="N/A"}else if(isc.isAn.Array(_1)){this.rowCount=_1.getLength()}
+this.markForRedraw()}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("ObserverToolStrip","ToolStrip");isc.A=isc.ObserverToolStrip.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_ObserverToolStrip_initWidget(){this.Super("initWidget",arguments);for(var i=0;i<this.members.length;i++){var m=this.members[i];if(isc.isAn.Observer(m)){m.registerObserved(this.grid)}}}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("GridToolStrip","ObserverToolStrip");isc.A=isc.GridToolStrip.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.membersMargin=5;isc.A.addButtonDefaults={_constructor:"Img",size:16,layoutAlign:"center",src:"[SKIN]/actions/add.png",click:"this.creator.grid.startEditingNew()"};isc.A.removeButtonDefaults={_constructor:"Img",size:16,layoutAlign:"center",src:"[SKIN]/actions/remove.png",click:"this.creator.grid.removeSelectedData()"};isc.A.refreshButtonDefaults={_constructor:"Img",size:16,layoutAlign:"center",src:"[SKIN]/actions/refresh.png",click:"this.creator.grid.invalidateCache()"};isc.A.exportButtonDefaults={_constructor:"IButton",title:"Export to CSV",layoutAlign:"center",click:"this.creator.grid.exportData()"};isc.A.totalRowsIndicatorDefaults={_constructor:"GridTotalRowsIndicator",layoutAlign:"center"};isc.A.members=["autoChild:removeButton","autoChild:addButton","autoChild:exportButton","starSpacer","autoChild:refreshButton","autoChild:totalRowsIndicator"];isc.B.push(isc.A.initWidget=function isc_GridToolStrip_initWidget(){this.Super("initWidget",arguments)}
+);isc.B._maxIndex=isc.C+1;isc.ClassFactory.defineClass("RecordEditor","ListGrid");isc.A=isc.RecordEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoDraw=false;isc.A.cellSpacing=0;isc.A.cellPadding=0;isc.A.selectionType="none";isc.A.showRollOver=false;isc.A.baseStyle="recordEditorCell";isc.A.showHeader=false;isc.A.showEmptyMessage=false;isc.A.bodyOverflow="hidden";isc.A.fixedRecordHeights=true;isc.A.drawAllMaxCells=0;isc.A.skinImgDir="images/RecordEditor/";isc.A.saveImg={src:"[SKIN]add.png",width:16,height:16,showOver:true};isc.A.filterImg={src:"[SKIN]filter.png",width:16,height:16,showOver:true};isc.A.actionButtonStyle="normal";isc.A.listEndEditAction="next";isc.A.canEdit=true;isc.A.editByCell=false;isc.A.$jo=false;isc.A.bodyStyleName="normal";isc.A.styleName="normal";isc.B.push(isc.A.shouldAutoFitField=function isc_RecordEditor_shouldAutoFitField(){return false}
+,isc.A.$32t=function isc_RecordEditor__showEditClickMask(){}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.RecordEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$65g="filter";isc.B.push(isc.A.initWidget=function isc_RecordEditor_initWidget(){if(this.sourceWidget!=null){var _1=this.sourceWidget;this.setWidth(_1.getInnerContentWidth());this.observe(_1,"resized","observer.sourceWidgetResized(observed)");this.leaveScrollbarGap=this.sourceWidget.leaveScrollbarGap;if(this.isAFilterEditor()){this.actOnCellChange=this.sourceWidget.filterByCell;this.actOnKeypress=this.sourceWidget.filterOnKeypress}else{this.actOnCellChange=this.sourceWidget.saveByCell}
+isc.addProperties(this.editFormDefaults,{autoFocus:false});this.fieldIDProperty=this.sourceWidget.fieldIDProperty;this.fields=this.sourceWidget.completeFields.duplicate();this.cellHeight=this.getInnerHeight()}else{this.logWarn("RecordEditor initialized without a sourceWidget property. "+"This widget is not supported as a standalone component.")}
+return this.Super(this.$oc)}
+,isc.A.destroy=function isc_RecordEditor_destroy(){this.ignore(this.sourceWidget,"resized");this.Super("destroy",arguments)}
+,isc.A.sourceWidgetResized=function isc_RecordEditor_sourceWidgetResized(_1){this.setWidth(_1.getInnerContentWidth())}
+,isc.A.isAFilterEditor=function isc_RecordEditor_isAFilterEditor(){return(this.actionType==this.$65g)}
+,isc.A.$315=function isc_RecordEditor__formatCellValue(_1,_2,_3,_4,_5){if(_3.isRemoveField)return" "
+return this.Super("$315",arguments)}
+,isc.A.$425=function isc_RecordEditor__useDisplayFieldValue(_1){return false}
+,isc.A.draw=function isc_RecordEditor_draw(){var _1=this.sourceWidget;this.setWidth(_1.getInnerContentWidth());var _2=this.findNextEditCell(0,0,1,true,true,false,true,true);if(_2==null){this.logWarn("No editable fields in this record editor."+(this.isAFilterEditor()?" Check the 'canFilter' property for each field in ":" Check the 'canEdit' property for each field in ")+this.sourceWidget.getID())}else{var _3=this.isAFilterEditor(),_4;if(_3){_4=this.sourceWidget.$32e()}else{var _5;_4={};for(var i=0;i<this.fields.length;i++){var _7=this.fields[i];if(_7.defaultValue!==_5){_4[_7[this.fieldIdProperty]]=_7.defaultValue}}}
+if(this.isAFilterEditor())this.setValuesAsCriteria(_4);else this.setEditValues(0,_4);var _8=_2[1];this.$31u(0,_8)}
+this.Super("draw",arguments);this.$35i.bringToFront()}
+,isc.A.setFields=function isc_RecordEditor_setFields(){this.Super("setFields",arguments);var _1=this.findNextEditCell(0,0,1,true,true);if(_1==null)_1=[0,0];if(this.isDrawn()&&!this.$30a)this.$31u(0,_1[1])}
+,isc.A.createChildren=function isc_RecordEditor_createChildren(){this.Super("createChildren",arguments);var _1=this.getEditForm();if(_1!=null&&this.$789){_1.setValuesAsCriteria(this.$789);delete this.$789;if(this.isAFilterEditor())_1.isSearchForm=true}
+if(!this.$35i)this.makeActionButton()}
+,isc.A.makeActionButton=function isc_RecordEditor_makeActionButton(){var _1;if(this.isAFilterEditor()){_1=this.filterImg}else{_1=this.saveImg}
+this.$35i=isc.Button.create({recordEditor:this,left:this.getInnerWidth()-this.getScrollbarSize(),width:this.getScrollbarSize(),autoDraw:false,baseStyle:this.actionButtonStyle,skinImgDir:this.skinImgDir,icon:_1.src,showRollOverIcon:_1.showOver,showFocusedIcon:_1.showFocused,showFocusedAsOver:false,prompt:this.actionButtonPrompt,click:function(){this.recordEditor.performAction()}},this.actionButtonDefaults,this.actionButtonProperties);this.addChild(this.$35i)}
+,isc.A.performAction=function isc_RecordEditor_performAction(_1){if(this.isAFilterEditor())this.performFilter(_1);else this.performSave(_1)}
+,isc.A.setValuesAsCriteria=function isc_RecordEditor_setValuesAsCriteria(_1,_2){var _3=this.getEditForm();if(_3==null){this.$789=_1;return}
+_3.setValuesAsCriteria(_1);if(_2)this.refreshRow(0)}
+,isc.A.makeEditForm=function isc_RecordEditor_makeEditForm(){var _1=this.editFormProperties=this.editFormProperties||{};if(_1.allowExpressions==null&&this.allowFilterExpressions!=null)
+_1.allowExpressions=this.allowFilterExpressions;_1.expressionDataSource=this.expressionDataSource;var _2=this.getEditForm(),_3;if(_2==null){_3=this.$789}else{_3=_2.getValuesAsCriteria();_2.expressionDataSource=this.expressionDataSource}
+this.Super("makeEditForm",arguments);_2=this.getEditForm();if(_2!=null){_2.setValuesAsCriteria(_3);delete this.$789;if(this.isAFilterEditor())_2.isSearchForm=true}}
+,isc.A.updateDataSource=function isc_RecordEditor_updateDataSource(_1){this.expressionDataSource=_1;var _2=this.getEditForm();if(_2)_2.expressionDataSource=this.expressionDataSource}
+,isc.A.getEditDisplayValue=function isc_RecordEditor_getEditDisplayValue(_1,_2,_3){if(this.isAFilterEditor()&&this.$286!=null){var _4=this.getFieldName(_2);return this.$286.getValue(_4)}
+return this.Super("getEditDisplayValue",arguments)}
+,isc.A.performFilter=function isc_RecordEditor_performFilter(_1){var _2=this.$74n(this.sourceWidget.autoFetchTextMatchStyle);var _3={};if(_1)_3.showPrompt=false;_3.textMatchStyle=this.sourceWidget.autoFetchTextMatchStyle;var _4=this.sourceWidget.data;if((isc.isA.ResultSet(_4)&&_4.willFetchData(_2,_3.textMatchStyle))||(isc.isA.Tree(_4)&&this.sourceWidget.dataSource!=null))
+{this.fireOnPause("performFilter",{target:this.sourceWidget,methodName:"handleFilterEditorSubmit",args:[_2,_3]},this.fetchDelay)}else{this.sourceWidget.handleFilterEditorSubmit(_2,_3)}}
+,isc.A.$74n=function isc_RecordEditor__getFilterCriteria(_1){var _2=this.getEditForm();if(_2==null){return this.$789}
+return _2.getValuesAsCriteria(null,_1)}
+,isc.A.performSave=function isc_RecordEditor_performSave(_1){var _2=this.getEditRow(),_3=this.getEditCol(),_4=this.getFieldName(_3),_5=this.$286.getValue(_4);this.setEditValue(_2,_3,_5);var _6=this.getEditValues(0),_7=this.getFields().getProperty(this.fieldIdProperty);if(!this.validateRowValues(_6,{},0,_7))return;this.$321(0);this.$31u(0,0);for(var _4 in _6){this.refreshCell(0,_3)}}
+,isc.A.getValues=function isc_RecordEditor_getValues(){var _1=this.getEditCol(),_2=this.getEditFieldName();this.setEditValue(0,_1,this.$286.getValue(_2));var _3=this.$74n();return _3}
+,isc.A.getValuesAsCriteria=function isc_RecordEditor_getValuesAsCriteria(_1){var _2=this.getEditCol(),_3=this.getEditFieldName();var _4=this.$74n(_1);return _4}
+,isc.A.canEditCell=function isc_RecordEditor_canEditCell(_1,_2){if(this.isAFilterEditor()){var _3=this.getField(_2);if(_3==null)return false;return(_3.canFilter!=false)}else{return this.sourceWidget.canEditCell(_1,_2)}}
+,isc.A.getEditorValueMap=function isc_RecordEditor_getEditorValueMap(_1,_2){if(this.isAFilterEditor()){return this.sourceWidget.getFilterEditorValueMap(_1)}else{return this.sourceWidget.getEditorValueMap(_1,_2)}}
+,isc.A.getEditorType=function isc_RecordEditor_getEditorType(_1,_2){if(this.isAFilterEditor()){return this.sourceWidget.getFilterEditorType(_1)}else{return this.sourceWidget.getEditorType(_1,_2)}}
+,isc.A.$45r=function isc_RecordEditor__editorChanged(){this.form.grid.editorChanged(this)}
+,isc.A.editorChanged=function isc_RecordEditor_editorChanged(_1){var _2=_1.actOnKeypress!=null?_1.actOnKeypress:this.actOnKeypress;if(_2){this.performAction(true)}}
+,isc.A.getEditorProperties=function isc_RecordEditor_getEditorProperties(_1){var _2={height:this.cellHeight};if(_1.displayField&&!_1.optionDataSource)
+_2.optionDataSource=this.sourceWidget.dataSource;if(this.isAFilterEditor()){_2.allowEmptyValue=true;_2.changed=this.$45r;_2.actOnKeypress=_1.filterOnKeypress;return isc.addProperties(_2,this.sourceWidget.getFilterEditorProperties(_1))}else{return isc.addProperties(_2,this.sourceWidget.getEditorProperties(_1))}}
+,isc.A.getEditItem=function isc_RecordEditor_getEditItem(_1,_2,_3,_4,_5,_6){var _7=this.Super("getEditItem",arguments);if(!this.isAFilterEditor())return _7;var _8=this.sourceWidget.getFilterEditorProperties(_1),_9;if(!_8)_8={};if(_1.defaultValue!=null&&_8.defaultValue===_9){delete _7.defaultValue}
+if(_1.change!=null&&_8.change===_9){delete _7.change}
+if(_1.defaultDynamicValue!=null&&_8.defaultDynamicValue!=null)
+{delete _7.defaultDynamicValue}
+if(_1.icons!=null&&_8.icons===_9){delete _7.icons}
+if(_1.showPickerIcon!=null&&_8.showPickerIcon===_9){delete _7.showPickerIcon}
+return _7}
+,isc.A.getDefaultEditValue=function isc_RecordEditor_getDefaultEditValue(_1,_2){if(this.isAFilterEditor())return null;return this.Super("getDefaultEditValue",arguments)}
+,isc.A.cellEditEnd=function isc_RecordEditor_cellEditEnd(_1,_2){if(_1!=isc.ListGrid.ENTER_KEYPRESS&&_1!=isc.ListGrid.TAB_KEYPRESS&&_1!=isc.ListGrid.SHIFT_TAB_KEYPRESS&&_1!=isc.ListGrid.EDIT_FIELD_CHANGE)return true;var _3;if(_2===_3)_2=this.getUpdatedEditorValue();var _4=this.getEditRow(),_5=this.getEditCol();this.setEditValue(_4,_5,_2);if(_1==isc.ListGrid.ENTER_KEYPRESS||this.actOnCellChange){this.performAction();if(_1==isc.ListGrid.ENTER_KEYPRESS)return}
+var _6=this.getNextEditCell(_4,_5,_1);if(_6==null||_6[0]!=_4){if(_1==isc.ListGrid.TAB_KEYPRESS){this.$35i.focus()}else{this.$kf(false)}
+return}
+return this.Super("cellEditEnd",arguments)}
+,isc.A.clearEditValue=function isc_RecordEditor_clearEditValue(_1,_2){return this.Super("clearEditValue",[_1,_2,null,true])}
+,isc.A.layoutChildren=function isc_RecordEditor_layoutChildren(){this.Super("layoutChildren",arguments);if(this.$35i)
+this.$35i.setLeft(this.getInnerWidth()-this.getScrollbarSize())
+if(this.body){var _1=this.body;if(this.bodyLayout)_1=this.bodyLayout;_1.setWidth(this.getInnerWidth()-this.getScrollbarSize())}
+if(this.$35i&&this.body)this.$35i.$sq(this.body)}
+,isc.A.adjustOverflow=function isc_RecordEditor_adjustOverflow(){this.Super("adjustOverflow",arguments);if(this.$35i){this.$35i.setHeight(this.body.getVisibleHeight())}}
+,isc.A.bodyScrolled=function isc_RecordEditor_bodyScrolled(_1,_2){this.Super("bodyScrolled",arguments);if(this.$35j!=null){isc.Timer.clear(this.$35j)}
+this.$35j=this.delayCall("syncSourceScrolling",[],0)}
+,isc.A.syncSourceScrolling=function isc_RecordEditor_syncSourceScrolling(){var _1=this.body.getScrollLeft();if(this.sourceWidget&&this.sourceWidget.body&&this.sourceWidget.body.getScrollLeft()!=_1){this.sourceWidget.body.scrollTo(_1)}}
+,isc.A.getFieldWidths=function isc_RecordEditor_getFieldWidths(){var _1=this.sourceWidget.getFieldWidths();if(isc.isA.Array(_1))_1=_1.duplicate();return _1}
+,isc.A.$57q=function isc_RecordEditor__correctForActionButtonClipping(){return(this.sourceWidget&&this.sourceWidget.body&&!this.sourceWidget.body.vscrollOn)}
+,isc.A.getEditFormItemFieldWidths=function isc_RecordEditor_getEditFormItemFieldWidths(_1){var _2=this.Super("getEditFormItemFieldWidths",arguments);if(this.$57q()){var _3=_2.sum(),_4=this.getInnerWidth()-this.getScrollbarSize();if(_3>_4){_2[_2.length-1]-=Math.min(this.getScrollbarSize(),(_3-_4))}}
+return _2}
+,isc.A.getCellAlign=function isc_RecordEditor_getCellAlign(_1,_2,_3,_4){if(!_4&&_3==this.fields.getLength()-1){return isc.Browser.isRTL?"right":"left"}
+return this.Super("getCellAlign",arguments)}
+,isc.A.getCellValue=function isc_RecordEditor_getCellValue(_1,_2,_3,_4){var _5=this.fields[_3];if(_5&&(this.isCheckboxField(_5)||this.isExpansionField(_5)||this.isRowNumberField(_5)))
+return" "
+var _6=this.Super("getCellValue",arguments);if(_3==this.fields.getLength()-1){var _5=this.getField(_3),_7=this.getEditForm(),_8=_7?_7.getItem(_5.name):null,_9=(_8!=null)?_8.getWidth():null;if(_9!=null){_6="<div style='text-align:"+this.getCellAlign(_1,_2,_3,true)+";width:"+_9+"px;'>"+_6+"</div>"}}
+return _6}
+,isc.A.rebuildForFreeze=function isc_RecordEditor_rebuildForFreeze(){}
+,isc.A.rowClick=function isc_RecordEditor_rowClick(){}
+,isc.A.rowDoubleClick=function isc_RecordEditor_rowDoubleClick(){}
+);isc.B._maxIndex=isc.C+42;isc.ClassFactory.defineClass("Menu","ListGrid");isc.A=isc.Menu;isc.A.standardFields={icon:"ICON_FIELD",title:"TITLE_FIELD",key:"KEY_FIELD",subMenu:"SUBMENU_FIELD"};isc.A.ICON_FIELD={name:"icon",width:25,getCellValue:function(_1,_2){return _1.getIcon(_2)}};isc.A.TITLE_FIELD={name:"title",width:"*",getCellValue:function(_1,_2){return _1.getItemTitle(_2)}};isc.A.KEY_FIELD={name:"keys",width:35,getCellValue:function(_1,_2){return _1.getKeyTitle(_2)}};isc.A.SUBMENU_FIELD={name:"submenu",width:18,getCellValue:function(_1,_2){return _1.getSubmenuImage(_2)}};isc.A.$kc=[];isc.A.SHIFT=(isc.Browser.isWin?"Shift+":"shift-");isc.A.CTRL=(isc.Browser.isWin?"Ctrl+":"ctrl-");isc.A.ALT=(isc.Browser.isWin?"Alt+":"option-");isc.A.META=(isc.Browser.isWin?"Windows+":"command-");isc.A=isc.Menu.getPrototype();isc.A.fixedIconWidth=true;isc.A.styleName="normal";isc.A.bodyStyleName="normal";isc.A.submenuDelay=200;isc.A.submenuOffset=-4;isc.A.defaultWidth=150;isc.A.defaultHeight=20;isc.A.enforceMaxHeight=true;isc.A.maxHeight=null;isc.A.backgroundColor=null;isc.A.overflow=isc.Canvas.VISIBLE;isc.A.bodyOverflow=isc.Canvas.VISIBLE;isc.A.arrowKeyAction="focus";isc.A.selectionType=isc.Selection.NONE;isc.A.autoDraw=false;isc.A.tableStyle="menuTable";isc.A.showRollOver=true;isc.A.showFocusOutline=false;isc.A.showAllRecords=true;isc.A.fixedFieldWidths=false;isc.A.fixedRecordHeights=false;isc.A.leaveScrollbarGap=false;isc.A.baseStyle="menu";isc.A.alternateRecordStyles=false;isc.A.showHeader=false;isc.A.showSortArrow=isc.ListGrid.NONE;isc.A.canDrag=false;isc.A.canAcceptDrop=false;isc.A.canReorderRecords=false;isc.A.useKeys=true;isc.A.showKeys=true;isc.A.showIcons=true;isc.A.showSubmenus=true;isc.A.submenuDirection="right";isc.A.showFieldsSeparately=false;isc.A.emptyMessage="[Empty menu]";isc.A.cellSpacing=0;isc.A.cellPadding=2;isc.A.iconWidth=16;isc.A.iconHeight=16;isc.A.autoSetDynamicItems=true;isc.A.skinImgDir="images/Menu/";isc.A.submenuImage={src:"[SKIN]submenu.gif",width:7,height:7};isc.A.submenuDisabledImage={src:"[SKIN]submenu_disabled.gif",width:7,height:7};isc.A.checkmarkImage={src:"[SKIN]check.gif",width:9,height:9};isc.A.checkmarkDisabledImage={src:"[SKIN]check_disabled.gif",width:9,height:9};isc.A.useBackMask=true;isc.A.submenuInheritanceMask=["submenuConstructor","$35k","className","submenuDelay","submenuOffset","defaultWidth","backgroundColor","tableStyle","showRollOver","baseStyle","emptyMessage","canDrag","canAcceptDrop","canReorderRecords","useKeys","showKeys","showIcons","showSubmenus","submenuDirection","cellPadding","iconWidth","iconHeight","autoSetDynamicItems","skinImgDir","submenuImage","submenuDisabledImage","checkmarkImage","checkmarkDisabledImage","bodyDefaults","itemClick","canSelectParentItems","childrenProperty","inheritedProperties"];isc.A.mergeSingleParent=true;isc.A.autoDismiss=true;isc.A.cascadeAutoDismiss=true;isc.A.autoDismissOnBlur=true;isc.A.fetchSubmenus=true;isc.A=isc.Menu.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$oz="left";isc.A.$o1="right";isc.B.push(isc.A.initWidget=function isc_Menu_initWidget(){this.$35l();this.position=isc.Canvas.ABSOLUTE;if(this.dataSource!=null&&!this.hasFlatDataSource()){var _1=this.initialCriteria||this.criteria;var _2=this.createResultTree(_1,null,{showPrompt:false,dataProperties:{autoOpenRoot:false}});if(this.items)_2.addList(this.items,_2.getRoot());if(this.loadDataOnDemand==false){_2.loadChildren(_2.getRoot(),{caller:this,methodName:"treeDataLoaded"})}
+this.data=_2}else if(this.dataSource!=null){var _3=isc.DataSource.get(this.dataSource);_3.fetchData(null,{caller:this,methodName:"flatDataLoaded"})}
+if(this.data==null&&this.items!=null)this.data=this.items;if(isc.Tree&&isc.isA.Tree(this.data)){this.$35k=this.data;this.childrenProperty=this.data.childrenProperty;var _4=this.data.getChildren(),_5=this.mergeSingleParent&&!isc.isA.ResultTree(this.$35k)&&_4.length==1&&this.data.hasChildren(_4[0]);if(_5){var _6=_4[0];this.data=this.data.getChildren(_6).duplicate();this.data.add({isSeparator:true});var _7={};isc.addProperties(_7,_6);_7[this.childrenProperty]=null;this.data.add(_7)}else{this.data=null}}
+this.Super(this.$oc);if(!this.fields){this.$51r=true;this.fields=[];var _8=(this.submenuDirection==this.$oz);if(_8&&this.showSubmenus)this.fields.add(isc.Menu.SUBMENU_FIELD);if(this.showIcons)this.fields.add(isc.Menu.ICON_FIELD);this.fields.add(isc.Menu.TITLE_FIELD);if(this.showKeys)this.fields.add(isc.Menu.KEY_FIELD);if(!_8&&this.showSubmenus)this.fields.add(isc.Menu.SUBMENU_FIELD)}else{this.$51r=false;for(var i=0;i<this.fields.length;i++){var _10=this.fields[i];if(isc.isA.String(_10)){if(isc.Menu.standardFields[_10]!=null){this.fields[i]=isc.Menu[isc.Menu.standardFields[_10]]}else{this.logWarn("Menu field specified as :"+_10+". This is not a recognized standard field name");this.fields.removeAt(i);i-=1}}}}
+if(this.iconBodyStyleName!=null&&this.fields!=null){for(var i=0;i<this.fields.length;i++){if(this.fields[i]=="icon"||this.fields[i]==isc.Menu.ICON_FIELD){this.bodyStyleName=this.iconBodyStyleName;break}}}
+if(isc.Browser.isSafari){isc.addProperties(this.submenuImage,{align:"BOTTOM"});isc.addProperties(this.submenuDisabledImage,{align:"BOTTOM"})}
+if(this.useKeys)this.setUpKeyListening();if(this.$35k){if(!this.treeParentNode)this.treeParentNode=this.$35k.getRoot();this.setTreeNode(this.treeParentNode)}}
+,isc.A.hasFlatDataSource=function isc_Menu_hasFlatDataSource(){var _1=isc.DataSource.get(this.dataSource);var _2=_1.getFieldNames();var _3=false,_4=false;for(var i=0;i<_2.length;i++){var _6=_1.getField(_2[i]);if(_6.primaryKey)_3=true;if(_6.foreignKey)_4=true}
+return!(_3&&_4)}
+,isc.A.setFields=function isc_Menu_setFields(_1,_2,_3,_4,_5){if(_1&&(_1!=this.fields)){this.$51r=false}
+this.invokeSuper(isc.Menu,"setFields",_1,_2,_3,_4,_5)}
+,isc.A.treeDataLoaded=function isc_Menu_treeDataLoaded(){this.treeDataArrived(this.$35m)}
+,isc.A.setTreeNode=function isc_Menu_setTreeNode(_1){var _2=this.$35k.getLoadState(_1);this.$35m=_1;if(_2==isc.Tree.LOADED){this.treeDataArrived(_1)}else if(_2!=isc.Tree.LOADING){this.$35k.loadChildren(_1,this.getID()+".treeDataArrived(node)");this.$35n=true;this.setData(null)}}
+,isc.A.treeDataArrived=function isc_Menu_treeDataArrived(_1){delete this.$35n;if(_1==this.$35m){this.setData(this.$35k.getChildren(_1));if(this.masterMenu&&this.masterMenu.isVisible())
+this.masterMenu.placeSubmenu(_1,this)}}
+,isc.A.flatDataLoaded=function isc_Menu_flatDataLoaded(_1,_2){this.setData(_2)}
+,isc.A.getEmptyMessage=function isc_Menu_getEmptyMessage(){if(this.$35n){return this.loadingDataMessage==null?" ":this.loadingDataMessage.evalDynamicString(this,{loadingImage:this.imgHTML(isc.Canvas.loadingImageSrc,isc.Canvas.loadingImageSize,isc.Canvas.loadingImageSize)})}
+return this.Super("getEmptyMessage",arguments)}
+,isc.A.isEmpty=function isc_Menu_isEmpty(){if(this.$35n)return true;return this.Super("isEmpty",arguments)}
+,isc.A.$35l=function isc_Menu__setUpEmptyMessage(){isc.addProperties(this,{emptyMessageTableStyle:this.tableStyle,emptyMessageStyle:this.baseStyle+isc.GridRenderer.standardStyleSuffixes[4]})}
+,isc.A.$31m=function isc_Menu__observeData(_1,_2,_3,_4,_5){var _6;if(this.$35k){_6=this.isObserving(this.$35k,"dataChanged");_1=this.$35k}
+if(!_6)this.invokeSuper(isc.Menu,"$31m",_1,_2,_3,_4,_5);if(this.autoSetDynamicItems){this.$35o()}}
+,isc.A.$31j=function isc_Menu__ignoreData(_1){this.Super("$31j",arguments);if(this.autoSetDynamicItems){delete this.setDynamicItems}}
+,isc.A.rowClick=function isc_Menu_rowClick(_1,_2,_3){this.Super("rowClick",arguments);this.selectMenuItem(_2,_3)}
+,isc.A.selectMenuItem=function isc_Menu_selectMenuItem(_1,_2){if(_1==null)_1=this.getEventRecordNum();_1=this.getItem(_1);var _3=true;if(_1==null||!this.itemIsEnabled(_1)){isc.Menu.hideAllMenus("itemClick");return false}
+if(this.hasSubmenu(_1)&&!this.canSelectParentItems&&!_1.canSelectParent){if(this.submenuTimer)this.submenuTimer=isc.Timer.clear(this.submenuTimer);if(this.$35p!=_1)this.hideSubmenu();this.showSubmenu(_1);return false}
+var _4=this;while(_4.$35q){_4=_4.$35q}
+if(this.autoDismiss&&(_1.autoDismiss||_1.autoDismiss==null)){isc.Menu.hideAllMenus("itemClick")}
+if(_1.action){if(!isc.isA.Function(_1.action)){isc.Func.replaceWithMethod(_1,"action","")}
+if(_1.action()==false)return false}
+if(_1.click){if(!isc.isA.Function(_1.click)){isc.Func.replaceWithMethod(_1,"click","target,item,menu,colNum")}
+var _5=(this.target?this.target:this);_3=_1.click(_5,_1,this,_2)}
+if(_3!=false){_3=this.itemClick(_1,_2)}
+if(!(this.autoDismiss&&(_1.autoDismiss||_1.autoDismiss==null))){this.refreshRow(this.getRecordIndex(_1))}
+return _3}
+,isc.A.mouseOver=function isc_Menu_mouseOver(){var _1=this.$35q;if(_1&&_1.body.lastOverRow!=this.$35r){if(_1.submenuTimer)_1.submenuTimer=isc.Timer.clear(_1.submenuTimer);_1.$88(this.$35r)}}
+,isc.A.rowOver=function isc_Menu_rowOver(_1,_2){if(this.submenuTimer)this.submenuTimer=isc.Timer.clear(this.submenuTimer);this.submenuTimer=isc.Timer.setTimeout({target:this,method:this.changeSubmenu},this.submenuDelay)}
+,isc.A.itemClick=function isc_Menu_itemClick(_1,_2){}
+,isc.A.getShowSubmenuKey=function isc_Menu_getShowSubmenuKey(){return this.submenuDirection=="right"?"Arrow_Right":"Arrow_Left"}
+,isc.A.getHideSubmenuKey=function isc_Menu_getHideSubmenuKey(){return this.submenuDirection=="right"?"Arrow_Left":"Arrow_Right"}
+,isc.A.bodyKeyPress=function isc_Menu_bodyKeyPress(_1,_2){var _3=isc.EventHandler.lastEvent.keyName;if(_3==this.getHideSubmenuKey()){if(this.$35q!=null){this.$35q.hideSubmenu();this.$35q.focus();return false}}else if(_3==this.getShowSubmenuKey()){var _4=this.getItem(this.getFocusRow());if(this.hasSubmenu(_4)){this.changeSubmenu();this.$35s.$318(1);return false}}else if(_3=="Escape"&&this.autoDismissOnBlur!=false){if(this.$35q!=null){this.$35q.hideSubmenu();this.$35q.focus()}else{isc.Menu.hideAllMenus("outsideClick")}
+return false}else if(_3=="Enter"){return this.$240()}
+return this.Super("bodyKeyPress",arguments)}
+,isc.A.$318=function isc_Menu__navigateToNextRecord(_1){var _2=this.getFocusRow();if(_2==null)_2=0;if(_1==-1){do{_2+=_1;if(_2<0){this.hide();return false}}while(!this.itemIsEnabled(_2))}
+return this.Super("$318",arguments)}
+,isc.A.show=function isc_Menu_show(_1){if(this.$35t){this.moveTo(this.$35u[0],this.$35u[1]);this.$35t=null}
+if(_1==null)_1=this.showAnimationEffect;var _2=!this.$35v&&(_1!=null)&&(_1!="none");if(_2){this.$35v=true;this.animateShow(_1,"this.$35w()")
+return}
+if(this.setDynamicItems)this.setDynamicItems()
+if(!this.isDrawn()){this.draw(true)}
+this.body.focusOnHide=isc.EH.getFocusCanvas();isc.Menu.$kc.add(this);if(this.autoDismissOnBlur)isc.Menu.$781();this.bringToFront();this.Super("show",arguments);if(!this.$35v)this.$35w()}
+,isc.A.$35w=function isc_Menu__showComplete(){if(this.$35v)delete this.$35v;if(isc.Browser.isMoz){this.getClipHandle().offsetLeft}
+this.body.focus()}
+,isc.A.hide=function isc_Menu_hide(){if(this.visibility==isc.Canvas.HIDDEN)return;this.Super("hide",arguments);this.$91y();this.clearLastHilite();this.$31q=null;if(this.$35p)delete this.$35p;if(this.submenuTimer)isc.Timer.clearTimeout(this.submenuTimer)}
+,isc.A.showContextMenu=function isc_Menu_showContextMenu(_1){if(_1&&(_1.target==this||(this.body&&_1.target==this.body))){if(this.body){if(isc.Browser.isSafari){this.body.$29u=this.getEventRow();this.body.$29v=this.getEventColumn()}
+this.body.click()}
+return false}
+var _2;if(isc.isA.Canvas(_1))_2=_1;if(_1!=null&&_1.target!=null)_2=_1.target;if(_2!=null)this.target=_2;this.positionContextMenu();this.show();return false}
+,isc.A.getMaxHeight=function isc_Menu_getMaxHeight(){if(this.maxHeight!=null)return this.maxHeight;return isc.Page.getHeight()-this.getScrollbarSize()}
+,isc.A.$8h=function isc_Menu__showOffscreen(){if(!this.isDrawn()){this.setVisibility(isc.Canvas.HIDDEN);this.draw()}
+this.setVisibility(isc.Canvas.VISIBLE);this.$91y();if(this.isDirty()||this.body.isDirty())this.redraw();if(this.$rm)this.adjustOverflow();if(!this.$35y&&this.enforceMaxHeight){if(this.overflow!=isc.Canvas.VISIBLE){this.leaveScrollbarGap=false;this.setOverflow(isc.Canvas.VISIBLE);this.setHeight(this.defaultHeight);this.setWidth(this.$35z||this.defaultWidth);this.adjustOverflow()}
+var _1=this.getVisibleHeight(),_2=this.getVisibleWidth(),_3=this.getMaxHeight();if(this.overflow==isc.Canvas.VISIBLE&&_1>_3){this.leaveScrollbarGap=true;this.setHeight(_3);this.$35z=this.getWidth();this.setWidth(this.getVisibleWidth()+this.getScrollbarSize())
+this.setOverflow(isc.Canvas.AUTO);this.adjustOverflow()}
+this.$35y=true}
+this.setVisibility(isc.Canvas.HIDDEN)}
+,isc.A.dataChanged=function isc_Menu_dataChanged(_1,_2,_3,_4){if(this.$35k&&this.$35m!=null){if(!this.$501(this.$35m)){if(this.$35q==null){this.setTreeNode(this.$35k.getRoot())}else{this.destroy(true);return}}}
+var _5=this.invokeSuper(isc.Menu,"dataChanged",_1,_2,_3,_4);delete this.$35y;if(this.autoSetDynamicItems){this.$795()}
+return _5}
+,isc.A.$501=function isc_Menu__treeContains(_1){while(_1){if(this.$35k.isRoot(_1))return true;_1=this.$35k.getParent(_1)}
+return false}
+,isc.A.setData=function isc_Menu_setData(_1,_2,_3,_4){var _5=this.invokeSuper(isc.Menu,"setData",_1,_2,_3,_4);delete this.$35y;return _5}
+,isc.A.setItems=function isc_Menu_setItems(_1,_2,_3,_4){return this.setData(_1,_2,_3,_4)}
+,isc.A.getMenuItem=function isc_Menu_getMenuItem(_1){return isc.Class.getArrayItem(_1,this.data,"name")}
+,isc.A.$91y=function isc_Menu__moveMenuOffscreen(){if(this.parentElement!=null)return;if(this.$35t)return;this.$35u=[this.getLeft(),this.getTop()];this.moveTo(null,-9999);this.$35t=true}
+,isc.A.moveBy=function isc_Menu_moveBy(){var _1=this.Super("moveBy",arguments);if(this.$35t)this.$35t=false;return _1}
+,isc.A.resizeBy=function isc_Menu_resizeBy(_1,_2,_3,_4,_5,_6){if((_1!=null&&_1!=0)||(_2!=null&&_2!=0))delete this.$35y;return this.invokeSuper(isc.Menu,"resizeBy",_1,_2,_3,_4,_5,_6)}
+,isc.A.hideContextMenu=function isc_Menu_hideContextMenu(){this.hide()}
+,isc.A.positionContextMenu=function isc_Menu_positionContextMenu(){this.$8h();var _1=isc.EH.getLastEvent();this.placeNear(_1.x,_1.y)}
+,isc.A.getItem=function isc_Menu_getItem(_1){return isc.Class.getArrayItem(_1,this.data,"name")}
+,isc.A.setItemProperties=function isc_Menu_setItemProperties(_1,_2){var _1=this.getItem(_1);if(_1!=null){isc.addProperties(_1,_2)}
+if(this.isVisible())this.redraw()}
+,isc.A.getItemNum=function isc_Menu_getItemNum(_1){return isc.Class.getArrayItemIndex(_1,this.data,"name")}
+,isc.A.getItems=function isc_Menu_getItems(){return this.getData()}
+,isc.A.addItem=function isc_Menu_addItem(_1,_2){if(_2==null)_2=this.data.getLength();this.data.addAt(_1,_2);this.markForRedraw()}
+,isc.A.removeItem=function isc_Menu_removeItem(_1){this.data.remove(_1);this.markForRedraw()}
+,isc.A.changeSubmenu=function isc_Menu_changeSubmenu(){var _1=this.getItem(this.body.lastOverRow);if(_1&&this.$35p==_1)return;this.hideSubmenu();if(_1!=null)this.showSubmenu(_1)}
+,isc.A.hasSubmenu=function isc_Menu_hasSubmenu(_1){if(!_1)return false;if(_1.submenu)return true;if(this.fetchSubmenus==false||_1.fetchSubmenus==false)return false;if(isc.isA.Tree(this.$35k)){return(this.$35k.isFolder(_1)&&((isc.ResultTree&&isc.isA.ResultTree(this.$35k))||this.$35k.hasChildren(_1)))}
+return false}
+,isc.A.showSubmenu=function isc_Menu_showSubmenu(_1){var _2=this.getSubmenu(_1);if(!_2)return;this.placeSubmenu(_1,_2)}
+,isc.A.getSubmenu=function isc_Menu_getSubmenu(_1){_1=this.getItem(_1);if(!this.hasSubmenu(_1))return;var _2=isc.applyMask(this,this.submenuInheritanceMask);if(!this.$51r){var _3=[];for(var i=0;i<this.fields.length;i++){_3[i]=isc.addProperties({},this.fields[i])}
+_2.fields=_3}
+if(this.cascadeAutoDismiss){_2.autoDismiss=this.autoDismiss}
+var _5=_1.submenu;if(!_5){var _6=(this.$350||this),_7=(_6==this?0:this.$351);if(!_6.$352)_6.$352=[];this.logDebug("RootMenu:"+_6.getID()+", submenus:"+_6.$352+", Level:"+_7);_5=_6.$352[_7];if(!_5){isc.addProperties(_2,{ID:(_6.getID()+"_childrenSubMenu_"+_7),$350:_6,$351:_7+1,autoDraw:false,treeParentNode:this.$35k?_1:null,masterMenu:this});var _8=this.submenuConstructor||isc.Menu;_5=_8.create(_2);_6.$352[_7]=_5;_6.observe(_5,"destroy","observer.submenuDestroyed("+_7+");")}}else if(!isc.isA.Menu(_5)){if(!this.$352)this.$352=[];if(isc.isA.String(_5)){_5=window[_5]}else if(isc.isAn.Array(_5)){_5=this.getMenuConstructor().create({autoDraw:false,data:_5},_2);this.$352.add(_5)}else if(isc.isAn.Object(_5)){_5=this.getMenuConstructor().create(isc.addProperties({autoDraw:false},_2,_5));this.$352.add(_5)}
+_1.submenu=_5}
+if(this.$35k)_5.setTreeNode(_1);return _5}
+,isc.A.submenuDestroyed=function isc_Menu_submenuDestroyed(_1){delete this.$352[_1]}
+,isc.A.placeSubmenu=function isc_Menu_placeSubmenu(_1,_2){if(this.$35p==_1&&this.$35s==_2)return;this.$35p=_1;this.$35s=_2;_2.$8h();var _3=this.getItemNum(_1),_4=_2.getPeerRect(),_5=isc.Canvas.$t7(_4[2],_4[3],{left:this.getPageLeft()-this.submenuOffset,width:this.getVisibleWidth()+this.submenuOffset,top:this.body.getRowPageTop(_3)},this.submenuDirection==this.$oz?this.$oz:this.$o1,false)
+_2.setPageRect(_5[0],_5[1]);if(this.target!=this&&_2.target!=_2){_2.target=this.target}
+_2.show();_2.$35q=this;_2.$35r=_3;if(isc.Menu.$353)delete isc.Menu.$353[this.getID()]}
+,isc.A.hideMenuTree=function isc_Menu_hideMenuTree(){this.hideSubmenu();this.hide()}
+,isc.A.hideSubmenu=function isc_Menu_hideSubmenu(){if(this.$35s){this.$35s.hideSubmenu();this.$35s.hide();delete this.$35s;delete this.$35p}}
+,isc.A.getSubmenuImage=function isc_Menu_getSubmenuImage(_1){if(!this.hasSubmenu(_1))return" ";if(!this.$354){var _2=(this.submenuDirection==this.$oz),_3=isc.addProperties({},this.submenuImage),_4=isc.addProperties({},this.submenuDisabledImage);_3.src=isc.Img.urlForState(_3.src,null,null,(_2?this.$oz:null));_4.src=isc.Img.urlForState(_4.src,null,null,(_2?this.$oz:null));this.$354=this.imgHTML(_3);this.$355=this.imgHTML(_4)}
+return(this.itemIsEnabled(_1)?this.$354:this.$355)}
+,isc.A.itemIsEnabled=function isc_Menu_itemIsEnabled(_1){_1=this.getItem(_1);return(_1&&_1.enabled!=false&&_1.isSeparator!=true)}
+,isc.A.$35o=function isc_Menu__makeDynamicItemsFunction(){var _1=isc.SB.create();if(this.enableIf)_1.append(this.enableIf,";");_1.append("var menu=this;\r");for(var i=0;i<this.data.length;i++){var _3=this.getItem(i);if(!_3)continue;_1.append("var item=this.data["+i+"];\r");if(_3.enableIf){if(isc.isA.String(_3.enableIf)){_1.append("changed|=this.$59g(",i,",",_3.enableIf,");\r")}else if(isc.isA.Function(_3.enableIf)){_1.append("changed|=this.$59g(",i,",this.data[",i,"].enableIf(target,menu,item));\r")}}
+if(_3.checkIf){if(isc.isA.String(_3.checkIf)){_1.append("changed|=this.$59h(",i,",",_3.checkIf,");\r")}else if(isc.isA.Function(_3.checkIf)){_1.append("changed|=this.$59h(",i,",this.data[",i,"].checkIf(target,menu,item));\r")}}
+if(_3.dynamicTitle){if(isc.isA.String(_3.dynamicTitle)){_1.append("changed|=this.setItemTitle(",i,",",_3.dynamicTitle,");\r")}else if(isc.isA.Function(_3.dynamicTitle)){_1.append("changed|=this.setItemTitle(",i,",this.data[",i,"].dynamicTitle(target,menu,item));\r")}}
+if(_3.dynamicIcon){if(isc.isA.String(_3.dynamicIcon)){_1.append("changed|=this.setItemIcon(",i,",",_3.dynamicIcon,");\r")}else if(isc.isA.Function(_3.dynamicIcon)){_1.append("changed|=this.setItemIcon(",i,",this.data[",i,"].dynamicIcon(target,menu,item));\r")}}}
+var _4=_1.toString();if(_4=="")return;_1=isc.SB.create();_1.append("var target=this.target, changed=false;\r",_4,"if(changed&&this.isDrawn()){\r","this.redraw('dynamic item change');\r",(isc.Browser.isIE?"this.body.setRowStyle(0);\r":""),"}");this.addMethods({setDynamicItems:new Function(_1.toString())});this.setDynamicItems.$796=this.data.duplicate()}
+,isc.A.$795=function isc_Menu__refreshDynamicItemsFunction(){if(this.setDynamicItems==null||!this.setDynamicItems.$796.equals(this.data)){this.$35o()}}
+,isc.A.refreshRow=function isc_Menu_refreshRow(){if(this.setDynamicItems)this.setDynamicItems();return this.Super("refreshRow",arguments)}
+,isc.A.$59g=function isc_Menu__setItemEnabled(_1,_2){return this.setItemEnabled(_1,!!_2)}
+,isc.A.$59h=function isc_Menu__setItemChecked(_1,_2){return this.setItemChecked(_1,!!_2)}
+,isc.A.setItemEnabled=function isc_Menu_setItemEnabled(_1,_2){if(_2==null)_2=true;_1=this.getItem(_1);if(!_1)return;if(_1.enabled!=_2){_1.enabled=_2;this.markForRedraw("itemEnabled");return true}
+return false}
+,isc.A.setItemChecked=function isc_Menu_setItemChecked(_1,_2){if(_2==null)_2=true;_1=this.getItem(_1);if(!_1)return;if(_1.checked!=_2){_1.checked=_2;this.markForRedraw("itemChecked");return true}
+return false}
+,isc.A.setItemTitle=function isc_Menu_setItemTitle(_1,_2){_1=this.getItem(_1);if(!_1)return;if(_1.title!=_2){_1.title=_2;this.markForRedraw("item title change");return true}
+return false}
+,isc.A.setItemIcon=function isc_Menu_setItemIcon(_1,_2,_3){_1=this.getItem(_1);if(!_1)return;if(_1.icon!=_2){_1.icon=_2;if(_3)_1.disabledIcon=_3;this.markForRedraw("item icon change");return true}
+return false}
+,isc.A.getIcon=function isc_Menu_getIcon(_1){var _2=this.fixedIconWidth&&this.getRecordIndex(_1)==0,_3=_2?this.iconWidth:null;var _4;if(_1.icon){var _5=(this.itemIsEnabled(_1)||!_1.disabledIcon?_1.icon:_1.disabledIcon);_4=this.imgHTML(_5,(_1.iconWidth?_1.iconWidth:this.iconWidth),(_1.iconHeight?_1.iconHeight:this.iconHeight));if(_2&&(_1.iconWidth==null||_1.iconWidth>=_3)){_2=false}else{_3-=_1.iconWidth}}
+if(_1.checked){_4=this.getCheckmarkImage(_1);if(_2){var _6=this.checkmarkImage?this.checkmarkImage.width:this.iconWidth;if(_6<_3){_3-=_6}else{_2=false}}}
+if(_2){if(_4)return _4+this.imgHTML("[SKIN]/../blank.gif",_3,1);else return this.imgHTML("[SKIN]/../blank.gif",_3,1)}
+return _4||" "}
+,isc.A.getItemTitle=function isc_Menu_getItemTitle(_1){var _2;if(this.$35k){_2=this.$35k.getTitle(_1)}else{_2=_1.title||_1.name||_1.id}
+_2=_2||" ";return _2}
+,isc.A.getKeyTitle=function isc_Menu_getKeyTitle(_1){if(_1.keyTitle)return _1.keyTitle;return" "}
+,isc.A.getCheckmarkImage=function isc_Menu_getCheckmarkImage(_1){if(!this.$356){this.$356=this.imgHTML(this.checkmarkImage);this.$357=this.imgHTML(this.checkmarkDisabledImage)}
+return(this.itemIsEnabled(_1)?this.$356:this.$357)}
+,isc.A.setUpKeyListening=function isc_Menu_setUpKeyListening(){var _1="";var _2,_3,_4=this.data.length;for(var i=0;i<_4;i++){_2=this.getItem(i);if(!_2)continue;_3=_2.keys;if(!_3)continue;if(!isc.isAn.Array(_3))_3=[_3];for(var _6,k=0,_8=_3.length;k<_8;k++){_6=_3[k];if(_6==null)continue;isc.Page.registerKey(_6,"target.menuKey("+i+");",this);if(!this.registeredKeys)this.registeredKeys=[];this.registeredKeys.add(_6)}
+if(!_2.keyTitle)this.setItemKeyTitle(_2,_3[0])}}
+,isc.A.destroy=function isc_Menu_destroy(_1){if(this.registeredKeys){for(var i=0;i<this.registeredKeys.length;i++){isc.Page.unregisterKey(this.registeredKeys[i],this)}}
+if(this.$352)this.$352.map("destroy");this.Super("destroy",arguments);if(this.$35k){var _3=this.$35k;if(!_1&&_3.$31k&&isc.isA.Function(_3.destroy)&&(_3.componentId==this.ID))
+{_3.destroy()}else{this.$31j(_3)}
+delete this.$35k}}
+,isc.A.menuKey=function isc_Menu_menuKey(_1){if(this.setDynamicItems)this.setDynamicItems();return this.selectMenuItem(_1)}
+,isc.A.setItemKeyTitle=function isc_Menu_setItemKeyTitle(_1,_2){var _3;if(isc.isA.String(_2))_3=_2
+else if(isc.isAn.Object(_2)){if(_2.title)_3=_2.title
+else _3=_2.keyName}
+_1.keyTitle=_3}
+);isc.B._maxIndex=isc.C+70;isc.A=isc.Menu;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.hideAllMenus=function isc_c_Menu_hideAllMenus(_1){var _2=_1=="itemClick",_3=_1=="outsideClick";var _4=true;if(isc.Menu.$kc.length>0){var _5=isc.Menu.$kc,_6=false,_7,_8=isc.EH.getFocusCanvas();isc.Menu.$kc=[];for(var i=_5.length-1;i>=0;i--){var _10=_5[i];if(!_10.isVisible()){continue}
+if(_2&&_10.autoDismiss==false){isc.Menu.$kc.addAt(_10,0);_4=false;continue}
+if(_3&&_10.autoDismissOnBlur==false){isc.Menu.$kc.addAt(_10,0);_4=false;continue}
+if(_10.$sr(_8)){if(_7==null)_7=_10;_6=true}
+_10.hide()}
+if(_6&&isc.isA.Canvas(_7.body.focusOnHide)){_7.body.focusOnHide.focus()}}
+isc.Menu.$353={};if(_4){if(isc.Menu.$35x){isc.EH.hideClickMask(isc.Menu.$35x);isc.Menu.$35x=null}}else{if(!isc.EH.clickMaskUp(isc.Menu.$35x)){this.$781()}}
+if(isc.Menu.$358!=null){var _11=isc.Menu.$358;delete isc.Menu.$358;if(isc.EH.lastEvent.eventType==isc.EH.MOUSE_DOWN&&isc.EH.lastEvent.target==_11)
+{_11.$359=true;isc.Page.setEvent(isc.EH.CLICK,_11,isc.Page.FIRE_ONCE,"$36a")}}}
+,isc.A.$79j=function isc_c_Menu__getAutoDismissOnBlurMenus(){if(this.$kc==null||this.$kc.length==0)return[];var _1=[];for(var i=0;i<this.$kc.length;i++){if(this.$kc[i].autoDismissOnBlur!=false)_1.add(this.$kc[i])}
+return _1}
+,isc.A.$781=function isc_c_Menu__showMenuClickMask(){if(isc.Menu.$79j().length>0&&(isc.Menu.$35x==null||!isc.EH.clickMaskUp(isc.Menu.$35x)))
+{isc.Menu.$35x=isc.EH.showClickMask("isc.Menu.hideAllMenus('outsideClick')",true)}}
+,isc.A.menuForValueMap=function isc_c_Menu_menuForValueMap(_1,_2){var _3=[];if(isc.isA.String(_1))_1=this.getPrototype().getGlobalReference(_1);if(isc.isAn.Array(_1)){for(var i=0;i<_1.length;i++){_3[i]={value:_1[i],title:_1[i]}}}else{for(var _5 in _1){_3.add({value:_5,title:_1[_5]})}}
+var _6=isc.Menu.$36b;if(_2==false||isc.Menu.$36b==null){_6=isc.Menu.newInstance({autoDraw:false,itemClick:function(_7){if(this.target.valueMapMenuSelected){this.target.valueMapMenuSelected(_7.value)}}})}
+if(_2!=false&&isc.Menu.$36b==null)isc.Menu.$36b=_6;_6.setData(_3);return _6}
+);isc.B._maxIndex=isc.C+4;isc.Menu.registerStringMethods({itemClick:"item"})
+isc.A=isc.ListGrid.getPrototype();isc.A.showHeaderContextMenu=true;isc.A=isc.ListGrid.getPrototype();isc.A.showHeaderMenuButton=false;isc.$75j={title:"Show Menu",height:22,showMenuButtonImage:true,menuButtonImage:"[SKIN]menu_button.gif",menuButtonImageUp:"[SKIN]menu_button_up.gif",hiliteAccessKey:true,iconWidth:7,iconHeight:7,iconOrientation:"right",iconAlign:"right",align:"left",showMenuBelow:true,alignMenuLeft:true,menu:null,initWidget:function(_1,_2,_3,_4){if(this.showMenuButtonImage)this.$36c();return this.invokeSuper(isc.MenuButton,"initWidget",_1,_2,_3,_4)},autoDestroyMenu:true,destroy:function(_1,_2,_3,_4,_5){if(this.menu!=null&&this.autoDestroyMenu&&this.menu.destroy!=null&&!this.menu.destroyed&&!this.menu.destroying)
+{this.menu.destroy();this.menu=null}
+return this.invokeSuper(isc.MenuButton,"destroy",_1,_2,_3,_4,_5)},setShowMenuButtonImage:function(_1){if(_1==this.showMenuButtonImage)return;this.showMenuButtonImage=_1;if(_1)this.$36c();else this.icon=null;if(this.isDrawn())this.markForRedraw()},setShowMenuBelow:function(_1){if(_1!=this.showMenuBelow){this.showMenuBelow=_1;if(this.showMenuButtonImage){this.$36c();if(this.isDrawn())this.markForRedraw()}}},$36c:function(){var _1=this.showMenuBelow?this.menuButtonImage:this.menuButtonImageUp;if(isc.isAn.Object(_1)){if(_1.width)this.iconWidth=_1.width;if(_1.height)this.iconHeight=_1.height;this.icon=_1.src}else{this.icon=_1}},handleClick:function(){if(this.Super("handleClick",arguments)==false)return;if(this.$359)return;this.showMenu()},$36a:function(){if(this.$359){var _1=this;isc.Page.setEvent(isc.EH.IDLE,function(){_1.$359=null},isc.Page.FIRE_ONCE)}},keyPress:function(){if(isc.EventHandler.lastEvent.keyName=="Arrow_Down"){this.showMenu();return false}
+return this.Super("keyPress",arguments)},$ur:function(){this.Super("$ur",arguments);this.markForRedraw()},$86e:function(_1,_2){if(!_1||!_2)return;_1.rootMenuButton=_2;_1.autoDismissOnBlur=false;_1.mouseOver=function(){var _3=this.rootMenuButton;if(!_3.showMenuOnRollOver)return this.Super("mouseOver",arguments);_3.checkRollOverMouseOver(_3,this)};_1.mouseOut=function(){var _3=this.rootMenuButton;if(!_3.showMenuOnRollOver)return this.Super("mouseOut",arguments);_3.checkRollOverMouseOut(_3,this)}},checkRollOverMouseOver:function(_1,_2){if(_1.$86f!=null){isc.Timer.clear(_1.$86f)}
+if(_1.menu!=null&&!(_1.menu.isVisible()&&_1.menu.isDrawn())){isc.Menu.hideAllMenus();_1.showMenu()}},checkRollOverMouseOut:function(_1,_2){if(_1.$86f!=null){_1.$86f=null}
+if(_1.menu!=null&&_1.menu.isVisible()&&_1.menu.isDrawn()){_1.$86f=isc.Timer.setTimeout(function(){if(_1.menu!=null&&_1.menu.isVisible()&&_1.menu.isDrawn()){isc.Menu.hideAllMenus();_1.$86f=null}},_1.rollOverMenuHideDelay)}},showMenu:function(){if(isc.isA.String(this.menu))this.menu=window[this.menu];if(!isc.isA.Menu(this.menu))this.$36d(this.menu);if(!isc.isA.Menu(this.menu))return;isc.Menu.$358=this;var _1=this.menu;if(this.showMenuOnRollOver){var _2=this;this.$86e(_1,this);_1.getSubmenu=function(_6){var _3=this.Super("getSubmenu",arguments);if(_3)_2.$86e(_3,_2);return _3}}
+_1.$8h();var _4=this.getPageLeft();if(!this.alignMenuLeft){_4=_4-(_1.getVisibleWidth()-this.getVisibleWidth())}
+var _5=this.showMenuBelow?this.getPageTop()+this.getVisibleHeight()+1:this.getPageTop()-_1.getVisibleHeight()+2;_1.placeNear(_4,_5);_1.show(this.menuAnimationEffect)},$36d:function(_1){if(!_1)return;_1.autoDraw=false;if(this.showMenuOnRollOver){var _2=this;_1.getSubmenu=function(_5){var _3=this.Super("getSubmenu",arguments);_2.$86e(_3,_2);return _3}}
+var _4=this.menuConstructor||isc.Menu;this.menu=_4.create(_1)},rollOverMenuHideDelay:250,mouseMove:function(){if(this.showMenuOnRollOver)this.mouseOver()},mouseOver:function(){if(!this.showMenuOnRollOver)return this.Super("mouseOver",arguments);this.checkRollOverMouseOver(this,this)},mouseOut:function(){if(!this.showMenuOnRollOver)return this.Super("mouseOut",arguments);this.checkRollOverMouseOut(this,this)}};isc.ClassFactory.defineClass("MenuButton","Button");isc.MenuButton.addProperties(isc.$75j)
+isc.A=isc.MenuButton.getPrototype();isc.A.skinImgDir="images/Menu/";isc.A.baseStyle="menuButton";isc.ClassFactory.defineClass("IMenuButton","StretchImgButton");isc.IMenuButton.addProperties(isc.$75j)
+isc.A=isc.IMenuButton.getPrototype();isc.A.labelSkinImgDir="images/Menu/";isc.defineClass("ToolStripMenuButton","IMenuButton");isc.A=isc.ToolStripMenuButton.getPrototype();isc.A.showTitle=true;isc.A.showRollOver=true;isc.A.showDown=true;isc.A.labelVPad=0;isc.A.labelHPad=7;isc.A.autoFit=true;isc.A.src="[SKIN]/ToolStrip/button/button.png";isc.A.capSize=3;isc.A.height=22;isc.ClassFactory.defineClass("SelectionTreeMenu","Menu")
+isc.A=isc.SelectionTreeMenu.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.itemClick=function isc_SelectionTreeMenu_itemClick(_1){this.inheritedProperties.button.$21j(_1)}
+,isc.A.getBaseStyle=function isc_SelectionTreeMenu_getBaseStyle(_1,_2,_3){var _4=this.inheritedProperties.button;if(_4.$36e(_1))return _4.selectedBaseStyle;return this.Super("getBaseStyle",arguments)}
+,isc.A.show=function isc_SelectionTreeMenu_show(){if(this.body){for(var i=0;i<this.getTotalRows();i++){this.body.setRowStyle(i)}}
+return this.Super("show",arguments)}
+,isc.A.getItemTitle=function isc_SelectionTreeMenu_getItemTitle(_1,_2,_3,_4,_5){var _6=this.inheritedProperties.button;if(_6.displayField)return _1[_6.displayField];return this.invokeSuper(isc.SelectionTreeMenu,"getItemTitle",_1,_2,_3,_4,_5)}
+);isc.B._maxIndex=isc.C+4;isc.ClassFactory.defineClass("TreeMenuButton","MenuButton");isc.ClassFactory.defineClass("ITreeMenuButton","IMenuButton");isc.$75k={title:null,unselectedTitle:"Choose a value",showPath:false,pathSeparatorString:" > ",selectedBaseStyle:"treeMenuSelected",overflow:isc.Canvas.VISIBLE,menuConstructor:isc.SelectionTreeMenu,getTitle:function(){if(this.title)return this.title;var _1=this.getSelectedItem();if(_1){if(!this.showPath){if(!isc.isA.Menu(this.menu))this.$36d(this.menu);return this.menu.getItemTitle(_1)}else{var _2=this.getTree();var _3=_2.getParents(_1),_4=[];for(var i=_3.length-1;i>=0;i--){if(!_2.showRoot&&i==_3.length-1)continue;_4.add(this.menu.getItemTitle(_3[i]))}
+_4.add(this.menu.getItemTitle(_1));return _4.join(this.pathSeparatorString)}}else{return this.unselectedTitle}},$36d:function(_1){_1=isc.addProperties(this.menuDefaults||{},_1,{inheritedProperties:{button:this},canSelectParentItems:this.canSelectParentItems,submenuConstructor:isc.SelectionTreeMenu,dataSource:this.dataSource,criteria:this.criteria,data:this.data});if(this.emptyMenuMessage)_1.emptyMessage=this.emptyMenuMessage;if(this.loadDataOnDemand!=null)_1.loadDataOnDemand=this.loadDataOnDemand;var _2=this.Super("$36d",[_1]);this.observe(this.menu,"treeDataLoaded","observer.$21l()");return _2},$21l:function(){if(this.treeDataLoaded)this.treeDataLoaded()},getTree:function(){if(!isc.isA.Menu(this.menu))this.$36d(this.menu);return this.menu.$35k},$21j:function(_1){if(this.itemSelected&&this.itemSelected(_1,this.$36f)==false)
+return;this.setSelectedItem(_1)},setSelectedItem:function(_1){this.$36f=_1;this.setTitle()},getSelectedItem:function(){return this.$36f},$36e:function(_1){var _2=this.getSelectedItem(),_3=this.getTree();while(_2){if(_1==_2)return true;_2=_3.getParent(_2)}
+return false}};isc.TreeMenuButton.addProperties(isc.$75k)
+isc.ITreeMenuButton.addProperties(isc.$75k)
+isc.TreeMenuButton.registerStringMethods({itemSelected:"item, oldItem"});isc.ITreeMenuButton.registerStringMethods({itemSelected:"item, oldItem"});isc.ClassFactory.defineClass("TileLayout","Canvas");isc.A=isc.TileLayout.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.layoutPolicy="fit";isc.A.tileSize=50;isc.A.tileMargin=10;isc.A.layoutMargin=5;isc.A.paddingAsLayoutMargin=true;isc.A.animateTileChange=true;isc.A.orientation="horizontal";isc.A.overflow="auto";isc.A.canFocus=true;isc.A.expandMargins=true;isc.A.autoWrapLines=true;isc.A.dragLineDefaults={overflow:"hidden",styleName:"layoutDropLine"};isc.A.$66i=true;isc.A.relayoutProperties=["tilesPerLine","orientation","tileWidth","tileHeight","expandMargins"];isc.A.canDrop=true;isc.A.$66e=2;isc.B.push(isc.A.initWidget=function isc_TileLayout_initWidget(){this.$73g();this.invokeSuper(isc.TileLayout,"initWidget");if(!this.tiles)this.tiles=[];this.data=this.tiles}
+,isc.A.draw=function isc_TileLayout_draw(_1,_2,_3,_4){this.invokeSuper(isc.TileLayout,"draw",_1,_2,_3,_4);this.$73k();this.logDebug('calling layoutTiles from draw',"TileLayout");this.layoutTiles()}
+,isc.A.resized=function isc_TileLayout_resized(){this.Super("resized",arguments);this.logDebug('calling layoutTiles from resized',"TileLayout");this.layoutTiles()}
+,isc.A.childResized=function isc_TileLayout_childResized(_1,_2,_3,_4){this.invokeSuper(isc.TileLayout,"childResized",_1,_2,_3,_4);this.logDebug('calling layoutTiles from childResized',"TileLayout");isc.Timer.setTimeout(this.ID+".layoutTiles()",100)}
+,isc.A.$73g=function isc_TileLayout__enforceLegalLayoutPolicy(){if(this.layoutPolicy!="fit"&&this.layoutPolicy!="flow"){this.layoutPolicy="fit"}}
+,isc.A.willScroll=function isc_TileLayout_willScroll(){var _1=this.orientation=="horizontal";var _2=this.$td;var _3=this.$te;var _4=this.$tb;var _5=this.$tc;var _6,_7;if(this.$66i){_7=this.getUserVisibleTiles();_6=_7.getLength()}else{_6=this.getLength()}
+if(this.layoutPolicy=="flow"){if(this.overflow!="auto"&&this.overflow!="scroll")return false;var _8=_1?this.getInnerWidth()-_5:this.getInnerHeight()-_3;var _9=_1?this.getInnerHeight()-_3:this.getInnerWidth()-_4;var _10=_1?_4:_2;var _11=_1?_2:_4;var _12=0;var _13=0;var _14=_1?this.getTileHMargin():this.getTileVMargin();var _15=_1?this.getTileVMargin():this.getTileHMargin();for(var i=0;i<_6;i++){var _17=_7?_7[i]:this.getTile(i);if(!this.autoWrapLines&&_17.startLine)_10=0;var _18=_1?_17.getVisibleWidth():_17.getVisibleHeight();if((this.autoWrapLines&&_10+_18>_8)||(!this.autoWrapLines&&_17.endLine)){_10=_1?_4:_2;;_11+=_12+_15;_12=0;_13++}
+var _19=_1?_17.getVisibleHeight():_17.getVisibleWidth();if(_11+_19>_9)return true;if(_12<_19){_12=_19}
+_10+=_18+_14}
+return false}else{var _9=_1?this.getVisibleHeight()-(_2+_3):this.getVisibleWidth()-(_5+_4);var _19=_1?this.getTileHeight():this.getTileWidth();var _15=_1?this.getTileVMargin():this.getTileHMargin();var _20=this.getTilesPerLine();var _21=Math.floor(_9/(_19+_15));var _22=_20*_21;return(_6>_22)}}
+,isc.A.layoutTiles=function isc_TileLayout_layoutTiles(_1){if(!this.isDrawn()||this.getLength()==0)return;this.$585=[];this.$608=0;this.$619=[this.getScrollLeft(),this.getScrollTop(),this.getInnerWidth(),this.getInnerHeight()];var _2,_3,_4,_5;if(this.paddingAsLayoutMargin){var _6=this.$tq();_4=_6.left;_5=_6.right;_2=_6.top;_3=_6.bottom}
+var _7=this.$td=this.$du(this.layoutMargin,_2,0);var _8=this.$te=this.$du(this.layoutMargin,_3,0);var _9=this.$tb=this.$du(this.layoutMargin,_4,0);var _10=this.$tc=this.$du(this.layoutMargin,_5,0);var _11,_12;if(this.$66i){_12=this.getUserVisibleTiles();_11=_12.getLength()}else{_11=this.getLength()}
+if(this.layoutPolicy=="flow"){this.logDebug("starting flow layout","TileLayout");var _13=this.orientation=="horizontal";var _14=_13?this.getInnerWidth()-_10:this.getInnerHeight()-_8;if(this.willScroll())_14-=this.getScrollbarSize();var _15=_13?_9:_7;var _16=_13?_7:_9;var _17=0;var _18=0;var _19=_13?this.getTileHMargin():this.getTileVMargin();var _20=_13?this.getTileVMargin():this.getTileHMargin();for(var i=0;i<_11;i++){var _22=_12?_12[i]:this.getTile(i);if(!this.autoWrapLines&&_22.startLine)_15=0;var _23=_13?_22.getVisibleWidth():_22.getVisibleHeight();if((this.autoWrapLines&&_15+_23>_14)||(!this.autoWrapLines&&_22.endLine)){_15=_13?_9:_7;;_16+=_17+(i==0?0:_20);_17=0;_18++}
+var _24=_13?_16:_15;var _25=_13?_15:_16;var _26=_12?_12[i]:i;this.processTile(_26,_24,_25);var _27=_13?_22.getVisibleHeight():_22.getVisibleWidth();if(_17<_27){_17=_27}
+_15+=_23+_19}}else{this.logDebug("starting fit layout:"+this.$35v,"TileLayout");var _28=this.getTilesPerLine();var _29=this.getTileHeight();var _30=this.getTileWidth();var _13=this.orientation=="horizontal";var _31,_32,_33;var _34,_35,_36,_37,_38,_39;if(this.shouldUseIncrRendering()){this.logDebug("fit layout, using incremental rendering","TileLayout");var _40=this.getVisibleTiles();this.$57r=_40;_35=_40[0];_34=_11;var _41=this.getVisibleLines();_38=_41[0];_39=_41[0]+_41[1];if(!this.hasAllVisibleTiles(_40,true))return}else{this.logDebug("fit layout, rendering all tiles","TileLayout");_34=_11;_35=0;_38=0;_39=Math.ceil(_34/ _28);_31=this.getTileHMargin();_32=this.getTileVMargin()}
+var _42=Math.ceil(_11/ _28);var _32=this.getTileVMargin();var _31=this.getTileHMargin();var _27=_13?_29:_30;var _43=_13?_32:_31;var _44=((_27+_43)*_42)-_43+(_13?_7+_8:_9+_10);_37=this.$58t();_13?_37.setHeight(_44):_37.setWidth(_44);_37.sendToBack();_33=this.getExtraMarginPixels(_28,_29,_30,_31,_32);for(var i=_38;i<_39;i++){var _45=_33;for(var j=0;j<_28;j++){var _47=_13?i:j;var _48=_13?j:i;var _24=(_47*_29)+(_47*_32)+_7;if(!_13&&j+1<=_33)_24+=j+1;var _25=(_48*_30)+(_48*_31)+_9;if(_13&&j+1<=_33)_25+=j+1;var _26=_12?_12[_35]:_35
+var _22=this.processTile(_26,_24,_25,this.getTileHeight(),this.getTileWidth());_35++;if(_35>=_34)break}
+if(_35>=_34)break}}}
+,isc.A.hasAllVisibleTiles=function isc_TileLayout_hasAllVisibleTiles(){return true}
+,isc.A.getUserVisibleTiles=function isc_TileLayout_getUserVisibleTiles(){var _1=[];for(var i=0;i<this.getLength();i++){var _3=this.getTile(i);if(!_3.$66j)_1.add(_3)}
+return _1}
+,isc.A.processTile=function isc_TileLayout_processTile(_1,_2,_3,_4,_5){var _6;if(this.$35v){if(isc.isA.Canvas(_1))_6=_1;else _6=this.getRecordTile(_1);if(!_6)return;if(this.$584!=null&&this.$584.findIndex("ID",_6.ID)==-1)return;if(!_6)return;if(_4)_6.setHeight(_4);if(_5)_6.setWidth(_5);if(_6.getTop()!=_2||_6.getLeft()!=_3){_6.$589=_2;_6.$588=_3;this.$586.add(_6)}
+var _7=[_3,_2,_6.getVisibleWidth(),_6.getVisibleHeight()];if(isc.Canvas.rectsIntersect(this.$619,_7)){this.$585.add(_6)}}else{if(isc.isA.Canvas(_1))_6=_1;else _6=this.getTile(_1);if(!_6)return;if(_6.isDirty())_6.redraw();if(_4)_6.setHeight(_4);if(_5)_6.setWidth(_5);_6.setTop(_2);_6.setLeft(_3);this.addChild(_6);_6.$66k=true;_6.show();_6.$66k=null;var _7=[_6.getLeft(),_6.getTop(),_6.getVisibleWidth(),_6.getVisibleHeight()];if(isc.Canvas.rectsIntersect(this.$619,_7)){this.$585.add(_6)}
+this.$608+=1;return _6}}
+,isc.A.$58t=function isc_TileLayout__getSpacerCanvas(){if(!this.$58u){this.$58u=isc.Canvas.create({autoDraw:false});this.addChild(this.$58u)}
+return this.$58u}
+,isc.A.getDrawnStartIndex=function isc_TileLayout_getDrawnStartIndex(){if(this.$57r)return this.$57r[0];else return null}
+,isc.A.getDrawnEndIndex=function isc_TileLayout_getDrawnEndIndex(){if(this.$57r)return this.$57r[1];else return null}
+,isc.A.shouldUseIncrRendering=function isc_TileLayout_shouldUseIncrRendering(){if(this.$35v){return true}else if(!this.showAllRecords&&this.layoutPolicy=="fit"&&(this.overflow=="auto"||this.overflow=="hidden")){return true}else{return false}}
+,isc.A.getLength=function isc_TileLayout_getLength(){if(!this.tiles)return 0;else return this.tiles.getLength()}
+,isc.A.getTilesPerLine=function isc_TileLayout_getTilesPerLine(){if(this.tilesPerLine)return this.tilesPerLine;else{var _1=this.orientation=="horizontal"?this.getTileWidth():this.getTileHeight();var _2=this.orientation=="horizontal"?(this.tileHMargin||this.tileMargin):(this.tileVMargin||this.tileMargin);var _3=this.orientation=="horizontal"?this.getInnerWidth():this.getInnerHeight();var _4=Math.floor(_3/ _1);var _5=this.orientation=="horizontal"?this.$tb+this.$tc:this.$td+this.$te;var _6=_2*(_4-1)+(_4*_1)+_5;if(_6>_3){var _7=Math.ceil((_6-_3)/_1);_4-=_7}
+if(_4<1)_4=1;return _4}}
+,isc.A.$73k=function isc_TileLayout__setTileSize(){var _1=this.orientation=="horizontal";if(this.layoutPolicy!="fit"||this.expandMargins||!this.tilesPerLine||(_1&&this.tileWidth)||(!_1&&this.tileHeight))return;var _2=_1?(this.tileHMargin||this.tileMargin):(this.tileVMargin||this.tileMargin);var _3=_1?this.getInnerWidth():this.getInnerHeight();var _4=this.layoutMargin*2;var _5=_3-_4;if(!this.tilesPerLine){this.tileSize=50}else{var _6=Math.floor(_5/ this.tilesPerLine);_6-=_2;isc.logWarn('setTileSize:'+[_6,_3,this.layoutMargin]);if(this.orientation=="horizontal")this.tileWidth=_6;else this.tileHeight=_6}}
+,isc.A.getVisibleLines=function isc_TileLayout_getVisibleLines(){var _1=(this.orientation=="horizontal");var _2=_1?this.getScrollTop():this.getScrollLeft();var _3=_1?this.getTileHeight()+this.getTileVMargin():this.getTileWidth()+this.getTileHMargin();var _4=_1?this.getInnerHeight():this.getInnerWidth();var _5=Math.floor(_2/ _3);if(_5>0)_5--;var _6=Math.ceil(_4/ _3)+2;return[_5,_6]}
+,isc.A.getVisibleTiles=function isc_TileLayout_getVisibleTiles(){var _1=this.getVisibleLines();var _2=this.getTilesPerLine();var _3=_1[0]*_2;var _4=(_1[0]+_1[1])*_2;return[_3,_4]}
+,isc.A.scrolled=function isc_TileLayout_scrolled(){if(this.shouldUseIncrRendering()){if(this.$57s)isc.Timer.clear(this.$57s);this.$57s=isc.Timer.setTimeout(this.ID+".layoutAfterScroll()")}}
+,isc.A.layoutAfterScroll=function isc_TileLayout_layoutAfterScroll(){this.logDebug('layoutAfterScroll',"TileLayout");if(this.shouldLayoutTiles()){this.logDebug('calling layoutTiles from layoutAfterScroll',"TileLayout");this.layoutTiles()}}
+,isc.A.shouldLayoutTiles=function isc_TileLayout_shouldLayoutTiles(){var _1=this.getVisibleTiles();if(_1[0]==this.getDrawnStartIndex()&&_1[1]==this.getDrawnEndIndex()){return false}else{return true}}
+,isc.A.getTileWidth=function isc_TileLayout_getTileWidth(){if(this.tileWidth){if(isc.isA.String(this.tileWidth)){this.tileWidth=parseInt(this.tileWidth);if(!isc.isA.Number(this.tileWidth))this.tileWidth=this.tileSize}
+return this.tileWidth}
+else return this.tileSize}
+,isc.A.getTileHeight=function isc_TileLayout_getTileHeight(){if(this.tileHeight){if(isc.isA.String(this.tileHeight)){this.tileHeight=parseInt(this.tileHeight);if(!isc.isA.Number(this.tileHeight))this.tileHeight=this.tileSize}
+return this.tileHeight}
+else return this.tileSize}
+,isc.A.getInnerBreadth=function isc_TileLayout_getInnerBreadth(){var _1=this.orientation=="horizontal"?this.getInnerWidth():this.getInnerHeight();return _1}
+,isc.A.getTileHMargin=function isc_TileLayout_getTileHMargin(){var _1;if(this.tileHMargin){_1=this.tileHMargin}else{_1=this.tileMargin}
+if(this.layoutPolicy=="fit"&&this.expandMargins&&this.orientation=="horizontal"){var _2=this.getTilesPerLine();var _3=this.$tb+this.$tc;var _4=_2-1;if(_4==0)_4=1;var _5=Math.floor((this.getInnerBreadth()-(_2*this.getTileWidth())-_3)/_4);if(_5<_1)return _1;else return _5}else{return _1}}
+,isc.A.getTileVMargin=function isc_TileLayout_getTileVMargin(){var _1;if(this.tileHMargin){_1=this.tileVMargin}else{_1=this.tileMargin}
+if(this.layoutPolicy=="fit"&&this.expandMargins&&this.orientation=="vertical"){var _2=this.getTilesPerLine();var _3=this.$td+this.$te;var _4=_2-1;if(_4==0)_4=1;var _5=Math.floor((this.getInnerBreadth()-(_2*this.getTileHeight())-_3)/_4);if(_5<_1)return _1;else return _5}else{return _1}}
+,isc.A.getExtraMarginPixels=function isc_TileLayout_getExtraMarginPixels(_1,_2,_3,_4,_5){if(this.expandMargins&&this.orientation=="horizontal"){var _6=(_1*_3)+((_1-1)*_4)+(this.$tb+this.$tc);return this.getInnerBreadth()-_6}else if(this.expandMargins&&this.orientation=="vertical"){var _6=(_1*_2)+((_1-1)*_5)+(this.$td+this.$te);return this.getInnerBreadth()-_6}else{return 0}}
+,isc.A.getTile=function isc_TileLayout_getTile(_1){return isc.Class.getArrayItem(_1,this.tiles)}
+,isc.A.addTile=function isc_TileLayout_addTile(_1,_2){if(!this.tiles)return;if(!_2)_2=this.tiles.getLength();this.tiles.addAt(_1,_2);this.reLayout()}
+,isc.A.removeTile=function isc_TileLayout_removeTile(_1){if(!this.tiles)return;if(!isc.isA.Canvas(_1)){var _2=this.tiles.findIndex("ID",_1);if(_2==-1)_1=this.tiles.get(_1);else _1=this.tiles.get(_2)}
+this.removeChild(_1)}
+,isc.A.removeChild=function isc_TileLayout_removeChild(_1,_2){var _3=this.tiles.findIndex("ID",_1.ID);if(_3>-1)this.tiles.removeAt(_3);this.invokeSuper(isc.TileLayout,"removeChild",_1,_2);this.reLayout()}
+,isc.A.getRecordTile=function isc_TileLayout_getRecordTile(_1){if(_1==null)return null;return this.tiles.get(_1)}
+,isc.A.childVisibilityChanged=function isc_TileLayout_childVisibilityChanged(_1,_2){if(!this.$35v&&!_1.$66l){if(_2=="hidden")_1.$66j=true;else _1.$66j=null;this.reLayout()}}
+,isc.A.propertyChanged=function isc_TileLayout_propertyChanged(_1,_2){this.invokeSuper(isc.TileLayout,"propertyChanged",_1,_2);if(isc.endsWith(_1,"Margin")||this.relayoutProperties.contains(_1))
+{this.layoutTiles()}}
+,isc.A.showDragLineForRecord=function isc_TileLayout_showDragLineForRecord(){if(isc.isAn.Array(this.data)||(isc.isA.ResultSet(this.data))){var x=this.getOffsetX(),y=this.getOffsetY(),_3=this.getPageLeft(),_4=this.getPageTop();if(this.data.getLength()==0){return}
+var _5=this.findIndexForCoord(x,y);if(this.$66f==null)this.$66f=_5;var _6,_7,_8=this.getRecordTile(_5);if(_8!=null){if((this.orientation=="horizontal"&&x>_8.getLeft()+(_8.getVisibleWidth()/2))||(this.orientation=="vertical"&&y>_8.getTop()+(_8.getVisibleHeight()/2))){_5++;_8=this.getRecordTile(_5)}}
+if(_5==null||_8==null){_5=this.data.getLength();_8=this.getRecordTile(_5-1);if(this.orientation=="horizontal"){_6=_8.getLeft()+_8.getVisibleWidth()-this.$66e;_7=_8.getTop()}else{_6=_8.getLeft();_7=_8.getTop()+_8.getVisibleHeight()-this.$66e}}else{_6=_8.getLeft();_7=_8.getTop()}
+this.$610=_5;var _9,_10;if(this.orientation=="horizontal"){_10=_8.getVisibleHeight();_9=this.$66e}
+else{_9=_8.getVisibleWidth();_10=this.$66e}
+this.showDragLine(_3+(_6-this.getScrollLeft()),_4+(_7-this.getScrollTop()),_9,_10)}}
+,isc.A.showDragLine=function isc_TileLayout_showDragLine(_1,_2,_3,_4){this.makeDragLine();var _5=this.getVisibleHeight();var _6=Math.round((_5-this.getInnerHeight())/2);var _7=this.getPageTop();var _8=_7+_6;var _9=_7+_5-_6;if(_2<_8){_4=_4-(_8-_2);_2=_8}else if(_2+_4>_9){if(_2>=_9){_4=0}else{_4=_4-((_2+_4)-_9)}}
+this._dragLine.moveTo(_1,_2);this._dragLine.resizeTo(_3,_4);this._dragLine.show()}
+,isc.A.dropOut=function isc_TileLayout_dropOut(){this.hideDragLine()}
+,isc.A.dropMove=function isc_TileLayout_dropMove(){this.showDragLineForRecord()}
+,isc.A.findIndexForCoord=function isc_TileLayout_findIndexForCoord(_1,_2){var _3=this.getDrawnStartIndex(),_4=this.getDrawnEndIndex();if(_3==null||_4==null){_3=0;_4=this.data.getLength()}
+var _5=this.ns.EH;var _6=_5.dragTarget,_7;if(_6)_7=_6.ID;for(var i=_3;i<_4;i++){var _9=this.getRecordTile(i);if(!_9)continue;if(_9.ID==_7)continue;if(_9.getLeft()+_9.getVisibleWidth()>_1&&_9.getTop()+_9.getVisibleHeight()>_2)return i}
+return null}
+,isc.A.drop=function isc_TileLayout_drop(){var _1=this.$610||0;var _2=this.ns.EH.dragTarget;var _3=this.$66f;this.$66f=null;if(!isc.isAn.Array(_2))_2=[_2];var _4=_2[0].parentElement;var _5=this.data.get(_1);this.transferRecords(_2,_5,_1,_4);this.reLayout()}
+,isc.A.reLayout=function isc_TileLayout_reLayout(){if(this.destroying)return;if(this.animateTileChange){isc.Timer.setTimeout(this.ID+".$583()",200)}else{this.logDebug('calling layoutTiles from reLayout',"TileLayout");this.layoutTiles()}}
+,isc.A.$583=function isc_TileLayout__animateChange(){this.logDebug("starting $583()","TileLayout");this.$35v=true;this.$0j=[];var _1=this.$584=this.$585;this.$586=[];this.layoutTiles();if(_1!=null){for(var i=0;i<_1.length;i++){if(!this.$585.contains(_1[i])){_1[i].hide()}}}
+var _3=this.$586.length;if(_3==0){this.$587();return}
+for(var i=0;i<_3;i++){var _4=this.$586[i];_4.show();var _5;if(i==_3-1){_5=_4.animateMove(_4.$588,_4.$589,this.getID()+".$587()")}else{_5=_4.animateMove(_4.$588,_4.$589)}
+this.$0j.add({ID:_5,tile:_4})}}
+,isc.A.$587=function isc_TileLayout__finishAnimating(){this.$35v=false;this.$584=null;delete this.$584;this.$586=null;delete this.$586;this.logDebug('calling layoutTiles from $587',"TileLayout");this.layoutTiles()}
+,isc.A.setTileSize=function isc_TileLayout_setTileSize(_1){this.tileSize=_1;this.layoutTiles()}
+,isc.A.setTileWidth=function isc_TileLayout_setTileWidth(_1){this.tileWidth=_1;this.layoutTiles()}
+,isc.A.setTileHeight=function isc_TileLayout_setTileHeight(_1){this.tileHeight=_1;this.layoutTiles()}
+,isc.A.setTileMargin=function isc_TileLayout_setTileMargin(_1){this.tileMargin=_1;this.layoutTiles()}
+,isc.A.setTileHMargin=function isc_TileLayout_setTileHMargin(_1){this.tileHMargin=_1;this.layoutTiles()}
+,isc.A.setTileVMargin=function isc_TileLayout_setTileVMargin(_1){this.tileVMargin=_1;this.layoutTiles()}
+);isc.B._maxIndex=isc.C+50;isc.ClassFactory.defineClass("FlowLayout","TileLayout");isc.A=isc.FlowLayout.getPrototype();isc.A.layoutPolicy="flow";isc.ClassFactory.defineClass("TileGrid","TileLayout","DataBoundComponent");isc.A=isc.TileGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.tileValueStyle="tileValue";isc.A.valuesShowRollOver=false;isc.A.valuesShowSelected=true;isc.A.valuesShowDown=false;isc.A.tileValueAlign="center";isc.A.showLabels=false;isc.A.tileLabelStyle="tileLabel";isc.A.wrapValues=false;isc.A.canSortFields=true;isc.A.autoFetchTextMatchStyle="substring";isc.A.selectionType=isc.Selection.MULTIPLE;isc.A.tileConstructor="SimpleTile";isc.A.detailViewerConstructor="DetailViewer";isc.A.recycleTiles=true;isc.A.animateTileChange=true;isc.A.styleName="tileGrid";isc.A.$66i=false;isc.A.$726=[];isc.A.$727=10;isc.A.$20s="Arrow_Up";isc.A.$20t="Arrow_Down";isc.A.$60n="Arrow_Left";isc.A.$60o="Arrow_Right";isc.A.dragAppearance=isc.EH.TRACKER;isc.A.dragTrackerMode="title";isc.A.tileDragAppearance=isc.EH.TRACKER;isc.B.push(isc.A.initWidget=function isc_TileGrid_initWidget(){this.$73g();if(isc.FormulaBuilder==null)this.canAddFormulaFields=false;if(isc.SummaryBuilder==null)this.canAddSummaryFields=false;if(this.layoutPolicy=="flow"){isc.logWarn("TileGrid does not support layoutPolicy 'flow'; there may by unexpected behavior."+"Use a TileLayout instead for flow layout.")}
+this.$31i();this.invokeSuper(isc.TileLayout,"initWidget");if(!this.tiles)this.tiles=[];if(this.showAllRecords)this.recycleTiles=false;if(this.getDataSource()){this.$601={};if(this.getDataSource().getPrimaryKeyFieldNames().length==0){this.animateTileChange=false}}
+this.detailViewer=this.createAutoChild("detailViewer",{tileGrid:this,showLabel:this.showLabels,showBorder:false,cellStyle:this.tileValueStyle,labelStyle:this.tileLabelStyle,blockStyle:"normal",wrapValues:this.wrapValues,cellPadding:0,valueAlign:this.tileValueAlign,useInnerWidth:false,clipValues:true,width:10,height:10,data:[],dataSource:this.getDataSource(),getCellStyle:function(_2,_3,_4,_5){var _1=(_3.cellStyle||this.cellStyle);if(this.tileGrid.valuesShowRollOver&&this.currentTile.state==isc.StatefulCanvas.STATE_OVER){_1+=this.currentTile.getStateSuffix()}else if(this.tileGrid.valuesShowDown&&this.currentTile.state==isc.StatefulCanvas.STATE_DOWN){_1+=this.currentTile.getStateSuffix()}else if(this.tileGrid.valuesShowSelected&&this.currentTile.isSelected()){_1+=this.currentTile.getStateSuffix()}
+return _1}});if(this.fieldState!=null)this.setFieldState(this.fieldState);else this.setFields(this.fields,true);this.membersMargin=this.tileMargin;this.setData(this.data)}
+,isc.A.setDataSource=function isc_TileGrid_setDataSource(_1,_2){this.Super("setDataSource",arguments);if(this.getDataSource()){this.$601={};if(this.getDataSource().getPrimaryKeyFieldNames().length==0){this.animateTileChange=false}}}
+,isc.A.shouldUseField=function isc_TileGrid_shouldUseField(_1,_2){if(this.Super("shouldUseField",arguments))return true;if(_2){var _3=isc.DS.get(_2).getIconField();if(_1==_3||_1.name==_3||(_3&&_1.name==_3.name))
+{return true}}
+return false}
+,isc.A.setFields=function isc_TileGrid_setFields(_1,_2){if(!_1&&this.getDataSource()){var _3=this.getDataSource().getIconField();if(_3){_1=[];_1.add({name:_3,type:_3.type});_1.add({name:this.getDataSource().getTitleField()})}}
+if(this.completeFields==null)this.fields=[];this.completeFields=this.bindToDataSource(_1);if(this.completeFields==null)this.completeFields=[];if(!this.completeFields)return;this.deriveVisibleFields();this.detailViewer.fields=this.completeFields.duplicate();if(!_2){this.logDebug('calling layoutTiles from setFields',"TileGrid");this.layoutTiles()}}
+,isc.A.deriveVisibleFields=function isc_TileGrid_deriveVisibleFields(){this.fields.setArray(this.getVisibleFields(this.completeFields))}
+,isc.A.getVisibleFields=function isc_TileGrid_getVisibleFields(_1){var _2=_1.duplicate();for(var i=0;i<_1.length;i++){var _4=_1.get(i);if(!this.fieldShouldBeVisible(_4)||_4.visible==false)_2.remove(_4)}
+return _2}
+,isc.A.computeTileDimensions=function isc_TileGrid_computeTileDimensions(_1){if(((this.tileHeight&&this.tileWidth)||(this.tileSize))&&!_1)return;if(!((isc.ResultSet&&isc.isA.ResultSet(this.data)&&this.data.resultSize>=this.data.getLength())||isc.isAn.Array(this.data))){return}
+if(this.layoutPolicy!="fit")return;var _2=0,_3=0;this.detailViewer.clipValues=false;for(var i=0;i<this.data.getLength();i++){var t=this.getTile(i);var _6=t.overflow;t.setOverflow("visible");t.redraw();t.show();var _7=t.getVisibleHeight();var _8=t.getVisibleWidth();if(_7>_2)_2=_7;if(_8>_3)_3=_8;t.setOverflow(_6);t.hide()}
+this.detailViewer.clipValues=true;if(!this.tileHeight&&_2>0)this.tileHeight=_2;if(!this.tileWidth&&_3>0)this.tileWidth=_3}
+,isc.A.getTileID=function isc_TileGrid_getTileID(_1){if(!_1)return null;var _2=this.getDataSource();if(_2&&_2.getPrimaryKeyFieldNames().length>0){var _3=_2.getPrimaryKeyFields();var _4="";for(var _5 in _3){_4+=_1[_5]}
+return this.$601[_4]}else{return _1.$57v}}
+,isc.A.setTileID=function isc_TileGrid_setTileID(_1,_2){var _3=this.getDataSource();if(_3&&_3.getPrimaryKeyFieldNames().length>0){var _4=_3.getPrimaryKeyFields();var _5="";for(var _6 in _4){_5+=_1[_6]}
+this.$601[_5]=_2}else{_1.$57v=_2}}
+,isc.A.getTileRecord=function isc_TileGrid_getTileRecord(_1){var _2=this;var _3=_2.data;var _4,_5;if(isc.isA.ResultSet(this.data)&&!this.data.lengthIsKnown())return null;if(this.showAllRecords||_2.getDrawnStartIndex()==null||_2.getDrawnEndIndex()==null){_4=0;_5=_3.getLength()}else{_4=_2.getDrawnStartIndex();_5=_2.getDrawnEndIndex()+1;if(_5>_3.getLength())_5=_3.getLength()}
+for(var i=_4;i<_5;i++){var _7=_3.get(i);if(_2.getTileID(_7)==_1.ID)return _7}
+return null}
+,isc.A.setTileRecord=function isc_TileGrid_setTileRecord(_1,_2){return null}
+,isc.A.setData=function isc_TileGrid_setData(_1){if(this.$35v){return false}
+if(!_1)return;if(this.data){this.ignore(this.data,"dataChanged");this.ignore(this.data,"dataArrived")}
+if(_1)this.data=_1;if(!this.data)return;if(this.data){if(isc.ResultSet&&isc.isA.ResultSet(this.data)){this.observe(this.data,"dataArrived","observer.dataArrived(arguments[0],arguments[1])");this.observe(this.data,"dataChanged","observer.dataChanged(operationType, originalRecord, rowNum, updateData)")}else{this.observe(this.data,"dataChanged","observer.dataChanged()")}}
+if(!this.selection||(this.data!=this.selection.data)){this.createSelectionModel()}
+this.dataChanged()}
+,isc.A.getData=function isc_TileGrid_getData(){return this.data}
+,isc.A.getPrimaryKeys=function isc_TileGrid_getPrimaryKeys(_1){var _2=this.data;if(!isc.ResultSet||!isc.isA.ResultSet(_2))return _1;var _3=this.getDataSource(),_4=_3.getPrimaryKeyFieldNames(),_5={};if(!isc.isAn.Array(_4))_4=[_4];for(var i=0;i<_4.length;i++){_5[_4[i]]=_1[_4[i]]}
+return _5}
+,isc.A.setRecordValues=function isc_TileGrid_setRecordValues(_1,_2){if(!this.data)return;var _3=this.data.indexOf(_1);if(_3==-1)return;var _4=this.data.get(_3);isc.combineObjects(_4,_2);if(this.valuesManager!=null){this.valuesManager.$71e(_3,null,_4,this)}
+this.logDebug('calling layoutTiles from setRecordValues',"TileGrid");this.layoutTiles()}
+,isc.A.dataArrived=function isc_TileGrid_dataArrived(_1,_2){}
+,isc.A.dataChanged=function isc_TileGrid_dataChanged(_1,_2,_3,_4){if(!this.data||(isc.ResultSet&&isc.isA.ResultSet(this.data)&&!this.data.lengthIsKnown()))
+{this.logDebug("dataChanged: returning due to no data yet","TileGrid");return}
+this.computeTileDimensions();if(!this.$257)this.$257=0;if(_1=="add"){this.logDebug("add","TileGrid");this.layoutTiles()}else if(_1=="remove"){this.logDebug("remove","TileGrid");if((this.recycleTiles&&this.data.getLength()<this.getDrawnEndIndex()-this.getDrawnStartIndex()+1)||!this.recycleTiles){var _5=this.tiles[_3];this.tiles.remove(_5);_5.destroy()}
+this.layoutTiles()}else if(_1=="update"){this.logDebug("update","TileGrid");this.layoutTiles()}else if(this.data.getLength()>=this.$257){this.logDebug("filter or sort, new data same or longer","TileGrid");if(this.$257>0)this.$582();else this.layoutTiles()}else{this.logDebug("filter or sort, new data shorter","TileGrid");this.selection.deselectAll();var _6=this.getDrawnEndIndex()+1;var _7=_6>this.data.getLength()?this.data.getLength():_6;var _8=this.getTilesPerLine();if(Math.floor(_6/ _8)>Math.floor(_7/ _8)&&this.getScrollTop()!=0&&this.recycleTiles){this.scrollToTop();this.layoutTiles()}else{this.$582()}}
+this.$257=this.data.getLength();if(this.data.getLength()==0){this.cleanupExtraTiles(0)}}
+,isc.A.$582=function isc_TileGrid__layoutAfterDataChange(){if(this.destroying)return;if(this.animateTileChange){if(this.$35v){var _1=this.$0j;for(var i=0;i<_1.length;i++){this.finishAnimation(_1[i].ID);_1[i].tile.hide()}
+return}
+this.fireOnPause("tileGridAnimate",this.$583)}else{this.logDebug('calling layoutTiles from layoutAfterDataChange',"TileGrid");this.layoutTiles()}}
+,isc.A.cleanupExtraTiles=function isc_TileGrid_cleanupExtraTiles(_1){var _2=this.tiles;for(var i=_1;i<_2.length;i++){var _4=_2[i];_4.hide();_4.moveTo(0,0)}}
+,isc.A.destroy=function isc_TileGrid_destroy(){if(this.data){this.ignore(this.data,"dataChanged");this.ignore(this.data,"dataArrived");if(this.data.$31k&&isc.isA.Function(this.data.destroy))
+this.data.destroy()}
+this.Super("destroy",arguments)}
+,isc.A.$57t=function isc_TileGrid__getTileID(_1){return this.ID+"_tile_"+_1}
+,isc.A.getLength=function isc_TileGrid_getLength(){if(!this.data||(isc.ResultSet&&isc.isA.ResultSet(this.data)&&!this.data.lengthIsKnown()))return 0;else return this.data.getLength()}
+,isc.A.makeTile=function isc_TileGrid_makeTile(_1,_2){var _3={ID:this.$57t(_2),tileNum:_2,canHover:true,handleHover:function(){if(this.creator.itemHover)this.creator.fireCallback("itemHover","item",[this])},mouseDown:function(){this.creator.$673(this);this.creator.focus()},rightMouseDown:function(){var _4=this.creator.$90l(this);if(_4==false)return false;this.creator.focus();return _4},mouseUp:function(){this.creator.$674(this)},doubleClick:function(){var _5=this.creator.getTileRecord(this);return this.creator.recordDoubleClick(this.creator,this,_5)}};if(_1.tileProperties)isc.addProperties(_3,_1.tileProperties);var _6=_1.tileConstructor?_1.tileConstructor:this.tileConstructor;var _7=this.createAutoChild("tile",_3,_6);this.detailViewer.setWidth(_7.getInnerWidth());this.detailViewer.setHeight(_7.getInnerHeight());return _7}
+,isc.A.getTileHTML=function isc_TileGrid_getTileHTML(_1){return this.detailViewer.getBlockHTML([_1])}
+,isc.A.getTile=function isc_TileGrid_getTile(_1){var _2,_3,_4;if(isc.isAn.Object(_1)){_3=_1;_4=this.data.indexOf(_1);_2=this.getTileID(_1)}else{_3=this.data.get(_1);if(!_3)return null;_2=this.$57t(_1);_4=_1}
+if(!_2)_2=this.$57t(_4);if(this.canReclaimTile(_4)&&!_3.tileConstructor){var _5=this.$57w(_4);_5.redraw();if(this.selection.isSelected(_3)){_5.setSelected(true)}else{_5.setSelected(false)}
+return _5}else if(_2&&window[_2]){var _5=this.$57w(_4,window[_2]);_5.redraw();if(this.selection.isSelected(_3)){_5.setSelected(true)}else{_5.setSelected(false)}
+return _5}else{var _6=this.$57t(_4),_7;this.setTileID(_3,_6);_7=this.makeTile(_3,_4);if(!this.tiles)this.tiles=[];this.tiles.add(_7);return _7}}
+,isc.A.$728=function isc_TileGrid__clearLogs(){this.$726=[]}
+,isc.A.$729=function isc_TileGrid__limitLog(_1,_2){if(!this.$726.find("key",_2)){this.$726.add({key:_2,logs:this.$727})}
+if(this.$726.find("key",_2).logs>0){isc.logWarn(_1);this.$726.find("key",_2).logs-=1}}
+,isc.A.layoutTiles=function isc_TileGrid_layoutTiles(){this.computeTileDimensions();this.invokeSuper(isc.TileGrid,"layoutTiles");var _1=this.tiles?this.tiles.length:0;var _2=this.$608;if(!this.$35v&&_2<_1)this.cleanupExtraTiles(_2)}
+,isc.A.$57w=function isc_TileGrid__reclaimTile(_1,_2){var _3=this.data.get(_1),_4;if(!_2){var _5=_1-this.getDrawnStartIndex();_4=this.tiles[_5]}else{_4=_2}
+var _6=this.getTileRecord(_4);if(_6)this.setTileID(_6,null);this.setTileID(_3,_4.ID);_4.tileNum=_1;return _4}
+,isc.A.canReclaimTile=function isc_TileGrid_canReclaimTile(_1){var _2=this.getDrawnStartIndex()||0;if(this.recycleTiles&&this.tiles&&this.tiles.length>_1-_2){return true}else{return false}}
+,isc.A.$90l=function isc_TileGrid__tileRightMouseDown(_1){var _2=this.getTileRecord(_1);if(this.recordContextClick!=null){if(this.recordContextClick(this,_1,_2)==false)return false}
+return this.$673(_1)}
+,isc.A.$673=function isc_TileGrid__tileMouseDown(_1){var _2=this.getTileRecord(_1);if(_2)this.selection.selectOnMouseDown(this,_1.tileNum);this.recordClick(this,_1,_2);var _3,_4;if(_1.getTop()<this.getScrollTop()){_4="top"}else if(_1.getTop()+_1.getVisibleHeight()>this.getScrollTop()+this.getInnerHeight()){_4="bottom"}
+if(_1.getLeft()<this.getScrollLeft()){_3="left"}else if(_1.getLeft()+_1.getVisibleWidth()>this.getScrollLeft()+this.getInnerWidth()){_3="right"}
+if(_3||_4){this.scrollIntoView(_1.getLeft(),_1.getTop(),_1.getVisibleWidth(),_1.getVisibleHeight(),_3,_4,true)}}
+,isc.A.$674=function isc_TileGrid__tileMouseUp(_1){this.selection.selectOnMouseUp(this,_1.tileNum)}
+,isc.A.recordClick=function isc_TileGrid_recordClick(){return true}
+,isc.A.recordDoubleClick=function isc_TileGrid_recordDoubleClick(){return true}
+,isc.A.recordContextClick=function isc_TileGrid_recordContextClick(){}
+,isc.A.selectionChange=function isc_TileGrid_selectionChange(_1,_2){if(this.selectionChanged&&(this.selectionChanged(_1,_2)==false))return false;var _3=this.selection,_4=_3.lastSelectionItem;var _5=window[this.getTileID(_4)];if(_5&&_5.setSelected){_5.setSelected(_2)}}
+,isc.A.keyPress=function isc_TileGrid_keyPress(_1,_2){if(this.isAnimating("scroll"))return false;var _3=this.selection.lastSelectionItem;if(!_3)return;var _4=_1.keyName,_5=this.selection.data.indexOf(_3),_6=this.orientation=="horizontal",_7;if(_4==this.$20s){_7=_6?this.$60p(_5,"above"):_5-1}else if(_4==this.$20t){_7=_6?this.$60p(_5,"below"):_5+1}else if(_4==this.$60n){_7=_6?_5-1:this.$60p(_5,"above")}else if(_4==this.$60o){_7=_6?_5+1:this.$60p(_5,"below")}else{return}
+if(_7==-1||_7>this.data.getLength()-1)return;if(_7==null)return false;var _8=this.selection.data.get(_7),_9=window[this.getTileID(_8)];if(_9){this.$673(_9)}
+return false}
+,isc.A.$60p=function isc_TileGrid__adjacentTileIndex(_1,_2){var _3=this.selection.data,_4=_1,_5=window[this.getTileID(_3.get(_4))],_6=this.orientation=="horizontal",_7=_6?_5.getTop():_5.getLeft(),_8=_6?_5.getLeft():_5.getTop(),_9=_6?_5.getVisibleWidth():_5.getVisibleHeight(),_10=_5;while(_7==(_6?_10.getTop():_10.getLeft())){_4=_2=="above"?_4-1:_4+1;if(_4<0||_4>_3.getLength()-1){return-1}
+_10=window[this.getTileID(_3.get(_4))];if(!_10)return-1}
+var _11=_6?_10.getTop():_10.getLeft();var _12=-1,_13=0;while((_6?_10.getTop():_10.getLeft())==_11){var _14=_6?_10.getLeft():_10.getTop(),_15=_6?_10.getVisibleWidth():_10.getVisibleHeight(),_16=this.$60q([_8,_8+_9],[_14,_14+_15]);if(_16>_13){_12=_4;_13=_16}
+_4=_2=="above"?_4-1:_4+1;if(_4<0||_4>_3.getLength()-1)break;_10=window[this.getTileID(_3.get(_4))];if(!_10)break}
+return _12}
+,isc.A.$60q=function isc_TileGrid__getCommonRange(_1,_2){if((_2[0]>=_1[0]&&_2[0]<=_1[1])||(_2[1]>=_1[0]&&_2[1]<=_1[1])||(_2[0]<=_1[0]&&_2[1]>=_1[1]))
+{var _3=_2[0]>_1[0]?_2[0]:_1[0];var _4=_2[1]>_1[1]?_1[1]:_2[1];return _4-_3}
+return 0}
+,isc.A.addTile=function isc_TileGrid_addTile(){return false}
+,isc.A.removeTile=function isc_TileGrid_removeTile(){return false}
+,isc.A.getRecordTile=function isc_TileGrid_getRecordTile(_1){if(_1==null)return null;if(_1>=this.data.getLength())return null;var _2=this.getTileID(this.data.get(_1));if(!_2)return null;else return window[_2]}
+,isc.A.childVisibilityChanged=function isc_TileGrid_childVisibilityChanged(_1,_2){this.invokeSuper(isc.TileLayout,"childVisibilityChanged",_1,_2)}
+,isc.A.hasAllVisibleTiles=function isc_TileGrid_hasAllVisibleTiles(_1,_2){if(isc.isA.ResultSet(this.data)){if(!this.data.lengthIsKnown())return false;var _3=_1[1]+1;if(_3>this.data.getLength())_3=this.data.getLength();if(this.data.rangeIsLoaded(_1[0],_3)){return true}else{if(_2){this.logDebug("in hasAllVisibleTiles, fetching range: "+_1[0]+" to "+_3+", total length: "+this.data.getLength(),"TileGrid");this.data.getRange(_1[0],_3)}
+return false}}else{return true}}
+,isc.A.$31i=function isc_TileGrid__setUpDragProperties(){this.canReorderTiles=(this.canDrag||this.canReorderTiles);this.canDragTilesOut=(this.canDrag||this.canDragTilesOut);this.canAcceptDroppedRecords=(this.canAcceptDrop||this.canAcceptDroppedRecords)
+this.canDrag=(this.canDrag||this.canDragTilesOut||this.canReorderTiles);this.canAcceptDrop=(this.canAcceptDrop||this.canAcceptDroppedRecords||this.canReorderTiles)}
+,isc.A.getDragTrackerTitle=function isc_TileGrid_getDragTrackerTitle(_1){var _2=this.getTitleField(),_3=_1[_2];return"<nobr>"+_3+"</nobr>"}
+,isc.A.drop=function isc_TileGrid_drop(){var _1=this.$610||0;if(_1>this.data.getLength())_1=0;var _2=this.ns.EH.dragTarget;var _3=this.$66f;this.$66f=null;var _4=_2.getDataSource(),_5=_2.cloneDragData();var _6=this.data.get(_1);this.transferRecords(_5,_6,_1,_2)}
+,isc.A.dropMove=function isc_TileGrid_dropMove(){if(!this.canReorderTiles)return true;if(!this.canAcceptDroppedRecords&&isc.EH.dragTarget!=this)return true;this.showDragLineForRecord()}
+,isc.A.dragMove=function isc_TileGrid_dragMove(){var _1=isc.EH.dropTarget;if(!this.canDragTilesOut&&_1!=null&&_1!=this)
+{return false}
+var _2=this.getSelectedRecord();if(this.tileDragAppearance=="outline"){var _3=this.ns.EH;var _4=this.getTileID(_2);var _5=window[_4];var _6="<div style='width:"+_5.getVisibleWidth()+";height:"+_5.getVisibleHeight()+"'>"+_3.getDragOutline(_5).getInnerHTML()+"</div>";_3.setDragTracker(_6)}else if(this.tileDragAppearance=="target"){var _3=this.ns.EH;var _4=this.getTileID(_2);var _5=window[_4];var _6="<div style='width:"+_5.getVisibleWidth()+";height:"+_5.getVisibleHeight()+"'>"+_5.getInnerHTML()+"</div>";_3.setDragTracker(_6);_5.hide();this.$815=_5;if(!_3.dragMoveAction)_3.dragMoveAction=_3.$ll;if(_3.dragTarget.showDragShadow)_3.$lm();if(_3.dragTarget.dragOpacity!=null)_3.$ln()}}
+,isc.A.willAcceptDrop=function isc_TileGrid_willAcceptDrop(){var _1=this.ns.EH;if(!this.Super("willAcceptDrop",arguments))return false;var _2=_1.dragTarget;if(_2==this){if(!this.canReorderTiles)return false}else{if(!this.canAcceptDroppedRecords)return false}
+if(!isc.isAn.Object(_2.getDragData()))return false;return true}
+,isc.A.dragStop=function isc_TileGrid_dragStop(){this.Super("dropOut",arguments);if(this.$815){this.$815.show();this.$815=null}}
+,isc.A.getCellValue=function isc_TileGrid_getCellValue(_1,_2){return this.detailViewer.getStandaloneFieldValue(_1,_2[this.fieldIdProperty])}
+,isc.A.getStandaloneFieldValue=function isc_TileGrid_getStandaloneFieldValue(_1,_2){var _3=this.getCellValue(_1,this.getField(_2));return _3}
+,isc.A.getTitleFieldValue=function isc_TileGrid_getTitleFieldValue(_1){var _2=this.getDataSource().getTitleField(),_3=this.getCellValue(_1,this.getDataSource().getField(_2));return _3}
+,isc.A.hideField=function isc_TileGrid_hideField(_1){this.getField(_1).showIf="false";this.getField(_1).hidden=true;this.fieldStateChanged()}
+,isc.A.showField=function isc_TileGrid_showField(_1){this.getField(_1).showIf="true";this.getField(_1).hidden=false;this.fieldStateChanged()}
+,isc.A.getField=function isc_TileGrid_getField(_1){if(!this.fields)return null;return isc.Class.getArrayItem(_1,this.fields,this.fieldIdProperty)}
+,isc.A.getFields=function isc_TileGrid_getFields(){return this.fields}
+,isc.A.getAllFields=function isc_TileGrid_getAllFields(){return this.fields}
+,isc.A.setFieldState=function isc_TileGrid_setFieldState(_1){if(isc.isA.String(_1))_1=this.evalViewState(_1,"fieldState")
+if(_1){this.completeFields=this.$31y(_1);this.setFields(_1);this.markForRedraw();this.fieldStateChanged()}}
+,isc.A.showActionInPanel=function isc_TileGrid_showActionInPanel(_1){if(_1.name=="sort")return true;return this.Super("showActionInPanel",arguments)}
+,isc.A.getPrintHTML=function isc_TileGrid_getPrintHTML(){if(!this.data.lengthIsKnown()){isc.logWarn("Attempt to print TileGrid "+this.ID+" while data is loading will be ignored");return""}
+var _1=this.data.getLength();if(!this.data.rangeIsLoaded(0,_1)){isc.logWarn("Make sure all data is loaded before attempting to print "+"TileGrid: "+this.ID);return""}
+var _2;var _3=this.printTilesPerLine?this.printTilesPerLine:this.getTilesPerLine();if(this.orientation=="horizontal"){var _4=this.getInnerWidth();_2="<table width='"+_4+"'>";for(var i=0;i<_1;i++){var _6=this.getTile(i);if(i%_3==0){if(i==0)_2+="<tr>";else if(i<_1-1)_2+="</tr><tr>"}
+_2+="<td>"+_6.getPrintHTML()+"</td>"}
+_2+="</tr></table>"}else{_2="<table>";for(var i=0;i<_3;i++){_2+="<tr>";for(var j=i;j<_1;j+=_3){var _6=this.getTile(j);_2+="<td>"+_6.getPrintHTML()+"</td>"}
+_2+="</tr>"}
+_2+="</table>"}
+return _2}
+);isc.B._maxIndex=isc.C+63;isc.ClassFactory.defineClass("SimpleTile","StatefulCanvas");isc.A=isc.SimpleTile.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.baseStyle="simpleTile";isc.A.overflow="hidden";isc.A.showRollOver=true;isc.A.redrawOnStateChange=true;isc.A._redrawWithParent=false;isc.B.push(isc.A.initWidget=function isc_SimpleTile_initWidget(){this.invokeSuper(isc.SimpleTile,"initWidget",arguments);this.showDown=this.creator.valuesShowDown}
+,isc.A.getInnerHTML=function isc_SimpleTile_getInnerHTML(){this.creator.detailViewer.currentTile=this;var _1=this.creator.getTileRecord(this);if(!_1)return null;return this.creator.getTileHTML(_1)}
+,isc.A.getRecord=function isc_SimpleTile_getRecord(){return this.creator.getTileRecord(this)}
+);isc.B._maxIndex=isc.C+3;isc.TileGrid.registerStringMethods({dataArrived:"startRecord,endRecord",selectionChanged:"record,state",itemHover:"item",itemClick:"item",recordClick:"viewer,tile,record",recordDoubleClick:"viewer,tile,record",recordContextClick:"viewer,tile,record",fieldStateChanged:""});isc.ClassFactory.defineClass("ColumnTree","Layout","DataBoundComponent");isc.A=isc.ColumnTree;isc.A.TREE_FIELD={name:"treeField",width:"*",getCellValue:function(_1,_2,_3,_4){return _1.creator.getCellValue(_1,_2,_3,_4)}};isc.A=isc.ColumnTree.getPrototype();isc.A.orientation="horizontal";isc.A.animateMemberEffect={effect:"slide",startFrom:"L",endAt:"R"};isc.A.folderIcon="[SKIN]/folder.gif";isc.A.customIconProperty="icon";isc.A.skinImgDir="images/TreeGrid/";isc.A.nodeIcon="[SKIN]file.gif";isc.A.openIconSuffix="open";isc.A.closedIconSuffix="closed";isc.A.showOpenIcons=true;isc.A.showCustomIconOpen=false;isc.A.customIconOpenProperty="showOpenIcon";isc.A.showColumn=true;isc.A.columnConstructor="ListGrid";isc.A.columnDefaults={animateTime:100,animateEffect:"slide",canAddFormulaFields:false,canAddSummaryFields:false,canSort:false,canGroupBy:false,showHeaderMenuButton:false,selectionChanged:function(_1,_2){if(_2){this.creator.nodeSelected(this,_1)}},bodyProperties:{$29h:function(_1,_2,_3,_4,_5){var _6="padding:0px;border:0px;";if(_4==null)_4=this.getTableElement(_2,_3);if(_4==null)return;if(!this.showHiliteInCells)
+{if(_1==null)_1=this.getCellRecord(_2,_3);if(_5==null)_5=this.getCellStyle(_1,_2,_3);var _7=_4.childNodes[0];while(_7&&_7.tagName!="TABLE")_7=_7.childNodes[0];if(_7){_7.className=_5;if(this.getCellCSSText){_4.style.cssText=isc.StringBuffer.concat(this.$29i(_1,_2,_3,_5),this.zeroBorderPadding)}}}
+return isc.GridRenderer.getPrototype().$29h.apply(this,[_1,_2,_3,_4,_5])}}};isc.A.showHeaders=false;isc.A.firstColumnTitle=" ";isc.A.showNodeCount=false;isc.A.wrapCells=false;isc.A.iconPadding=3;isc.A.ignoreEmptyCriteria=false;isc.A.backButtonTitle="Back";isc.A.backButtonDefaults={_constructor:"IButton",snapTo:"TR",left:5,top:5,autoFit:true,click:function(){this.creator.navigateBack()}};isc.A.overflow="hidden";isc.A=isc.ColumnTree.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$34p=["<table cellpadding=0 cellspacing=0 class='",,"' style='",,"border:0px;padding:0px;'><tr><td>",,"</td>","<td>"+(isc.Browser.isSafari||isc.Browser.isIE?"<nobr>":""),,,,(isc.Browser.isSafari?"</nobr>":"")+"</td><td style='padding-left:",,"px;'>",,,"</td>","</tr></table>"];isc.A.$34q=["<td>"+(isc.Browser.isSafari||isc.Browser.isIE?"<nobr>":""),,,,(isc.Browser.isSafari?"</nobr>":"")+"</td><td style='padding-left:",,"px;'>",,,"</td>"];isc.A.$34r="absmiddle";isc.A.$4s={};isc.B.push(isc.A.getDynamicDefaults=function isc_ColumnTree_getDynamicDefaults(_1){if(_1=="column"){return{autoDraw:false,showHiliteInCells:true,leaveScrollbarGap:false,selectionType:"single",showHeader:false,fields:isc.clone(this.fields)}}}
+,isc.A.initWidget=function isc_ColumnTree_initWidget(){this.Super("initWidget",arguments);if(this.showMultipleColumns==null)
+this.showMultipleColumns=!isc.Browser.isHandset;this.columns=[];if(!this.dataSource&&this.data!=null&&this.data.dataSource){this.dataSource=this.data.dataSource}
+if(!this.fields||this.fields.length==0){this.fields=[isc.ColumnTree.TREE_FIELD]}
+if(this.showMultipleColumns==false&&this.showHeaders&&this.showBackButton!=false){this.backButton=this.createAutoChild("backButton",{title:this.backButtonTitle,disabled:true});this.addChild(this.backButton);this.backButton.bringToFront()}
+this.columns[0]=this.createAutoChild("column",this.getColumnProperties(this.data?this.data.getRoot():null,0),null,false);this.addColumn(this.columns[0],0);this.currentColumn=0;if(this.data)this.populateFirstColumn()}
+,isc.A.populateFirstColumn=function isc_ColumnTree_populateFirstColumn(){if(this.data.showRoot){this.columns[0].setData([this.data.getRoot()])}else{this.columns[0].setData(this.data.getChildren(this.data.getRoot()))}
+if(this.shouldShowHeader(null,0)){this.columns[0].setShowHeader(true);this.columns[0].setFieldProperties(0,{title:this.getColumnTitle(null,0)})}}
+,isc.A.treeIsTied=function isc_ColumnTree_treeIsTied(_1,_2){return false}
+,isc.A.getSelectedRecord=function isc_ColumnTree_getSelectedRecord(){if(this.currentColumn<=0)return this.data.getRoot();var _1=this.getColumn(this.currentColumn-1);return _1.getSelectedRecord()}
+,isc.A.navigateBack=function isc_ColumnTree_navigateBack(){if(this.currentColumn<=0)return;var _1,_2;if(this.currentColumn>=2){_1=this.getColumn(this.currentColumn-2);_2=_1.getSelectedRecord()}else{_1=this.getColumn(0);_2=this.data.getRoot()}
+this.logInfo("navigating to column: "+(this.currentColumn-1)+" to node: "+this.data.getTitle(_2));this.nodeSelected(_1,_2,true)}
+,isc.A.slideTransition=function isc_ColumnTree_slideTransition(_1,_2,_3,_4){if(!isc.Browser.isWebKit){if(_4){_2.deselectAllRecords();_2.animateShow()}else{_1.animateHide();_2.show()}
+_2.bringToFront();return}
+this.logInfo((_4?"right":"left")+" slideTransition from: "+_1+" to "+_2+" within "+_3);_2.hide();_3.addChild(_2);if(!_2.isDrawn())_2.draw();var _5=_1.getStyleHandle();var _6=_2.getStyleHandle();_6.setProperty("-webkit-transition","none");var _7="translate3d("+(_4?"-":"")+_3.getViewportWidth()+"px, 0%, 0%)";_6.setProperty("-webkit-transform",_7);var _8=_3.overflow;_3.setOverflow("hidden");_2.show();isc.Timer.setTimeout(function(){_5.setProperty("-webkit-transition","-webkit-transform 0.3s ease-in-out");_6.setProperty("-webkit-transition","-webkit-transform 0.3s ease-in-out");_7="translate3d("+(_4?"":"-")+_3.getViewportWidth()+"px, 0%, 0%)";_5.setProperty("-webkit-transform",_7);_6.setProperty("-webkit-transform","translate3d(0px, 0%, 0%)");isc.Timer.setTimeout(function(){_1.hide();_3.setOverflow(_8)},350)},0)}
+,isc.A.nodeSelected=function isc_ColumnTree_nodeSelected(_1,_2,_3){if(this.onNodeSelected!=null&&(this.onNodeSelected(_1,_2)==false)){return}
+var _4=this.getColumnIndex(_2),_5=this.data.isFolder(_2);var _6=_4+1;if(!_5)_6-=1;var _7=this.columns[_6];if(!this.treeIsTied(_1,_2)){if(this.showMultipleColumns!=false)this.hideColumnsToRight(_6);if(!_5)return;this.data.openFolder(_2);if(isc.isA.ListGrid(_7)){_7.deselectAllRecords();_7.setData(this.data.getChildren(_2));this.addColumn(_7,_6)}else{_7=this.columns[_6]=this.createAutoChild("column",this.getColumnProperties(_2,_4+1),null,false);_7.setData(this.data.getChildren(_2));this.addColumn(_7,_6)}
+if(this.shouldShowHeader(_2,_6)){_7.setShowHeader(true);var _8=this.getColumnTitle(_2,_6);_7.setFieldProperties(0,{title:_8})}
+if(_7.data.getLength()>0){this.updateHeadingNodeCount(_2)}}
+var _9=(_3?this.columns[this.currentColumn]:_1);var _10=_7;if(this.showMultipleColumns==false){this.slideTransition(_9,_10,this,_3?true:false)}else{_10.show()}
+this.currentColumn=(_6<0?0:_6);this.logInfo("currentColumn is now: "+this.currentColumn);if(this.backButton){this.backButton.bringToFront();this.backButton.setDisabled(this.currentColumn<=0)}}
+,isc.A.addColumn=function isc_ColumnTree_addColumn(_1,_2){if(this.showMultipleColumns==false){_1.resizeTo("100%","100%");this.addChild(_1,_2)}else{this.addMember(_1,_2)}}
+,isc.A.getCurrentTitle=function isc_ColumnTree_getCurrentTitle(){return this.columns[this.currentColumn].getFieldTitle(0)}
+,isc.A.getPreviousTitle=function isc_ColumnTree_getPreviousTitle(){if(this.currentColumn<=0)return"";return this.columns[this.currentColumn-1].getFieldTitle(0)}
+,isc.A.updateHeadingNodeCount=function isc_ColumnTree_updateHeadingNodeCount(_1){var _2=this.getColumnIndex(_1);if(!this.shouldShowHeader(_1,_2)||!this.showNodeCount)return;if(_2<0)return;if(this.columns[_2+1].data.getLength()==0)return;var _3=this.data.getTitle(_1);if(this.showNodeCount){_3=_3+" ("+this.columns[_2+1].data.getLength()+")"}
+this.columns[_2+1].setFieldProperties(0,{title:_3})}
+,isc.A.getColumnIndex=function isc_ColumnTree_getColumnIndex(_1){if(this.data.showRoot){return this.data.getLevel(_1)}else{var _2=this.data.getLevel(_1);return _2-1}}
+,isc.A.hideColumnsToRight=function isc_ColumnTree_hideColumnsToRight(_1){for(var i=_1+1;i<this.columns.length;i++){this.columns[i].hide();this.columns[i].deselectAllRecords()}}
+,isc.A.shouldShowHeader=function isc_ColumnTree_shouldShowHeader(_1,_2){return this.showHeaders}
+,isc.A.getColumnTitle=function isc_ColumnTree_getColumnTitle(_1,_2){if(_2==0){return this.firstColumnTitle}else{return this.data.getTitle(_1)}}
+,isc.A.getRecord=function isc_ColumnTree_getRecord(_1,_2){if(_1==null||_1<0)return null;if(_2!=null){if(_2<0||_2>this.columns.length){return null}
+if(_1>this.columns[_2].data.length||!this.columns[_2].isVisible()){return null}
+return this.columns[_2].data[_1]}
+var _3=0;for(var _4=0;_4<this.columns.length;_4++){if(!this.columns[_4].isVisible())continue;if(_3+this.columns[_4].data.length>_1){return this.columns[_4].data[_1-_3]}
+_3+=this.columns[_4].data.length}
+return null}
+,isc.A.getTreeCellValue=function isc_ColumnTree_getTreeCellValue(_1,_2,_3,_4,_5){if(_3==null){return _1}
+var _6=this.$34p;_6[1]=_2.getCellStyle(_3,_4,_5);_6[3]=_2.getCellCSSText(_3,_4,_5);var _7=this.$342(_1,_3,_4,true);for(var i=0;i<10;i++){_6[6+i]=_7[i]}
+return _6.join(isc.emptyString)}
+,isc.A.$342=function isc_ColumnTree__getTreeCellTitleArray(_1,_2,_3,_4){var _5=this.$34q;_5[1]=null;var _6=this.getIcon(_2),_7=(_3!=null?this.$34n+_3:null);_5[2]=null;_5[3]=this.getIconHTML(_6,_7,_2.iconSize);_5[5]=this.iconPadding;_5[7]=this.wrapCells?null:"<NOBR>"
+_5[8]=_1;return _5}
+,isc.A.getCellValue=function isc_ColumnTree_getCellValue(_1,_2,_3,_4,_5,_6,_7,_8){var _9=this.getNodeTitle(_2,_3);_9=this.getTreeCellValue(_9,_1,_2,_3,_4);return _9}
+,isc.A.getIcon=function isc_ColumnTree_getIcon(_1,_2){if(isc.isA.Number(_1))_1=this.data.get(_1);if(!_1)return null;var _3=_1[this.customIconProperty],_4=(_3!=null),_5=this.data.isFolder(_1);if(!_4){if(_5)_3=this.folderIcon;else _3=this.nodeIcon}
+var _6;if(_5){var _7=_2?false:(this.lastDropFolder==_1&&_1.$347),_8=_2?false:!!this.data.isOpen(_1);if(_7){if(_1.dropIcon!=null)_3=_1.dropIcon;else if(!_4&&this.folderDropImage!=null)_3=this.folderDropImage;else{var _9;if(_4){_9=_1[this.customIconDropProperty];if(_9==null)_9=this.showCustomIconDrop}else{_9=this.showDropIcons}
+if(_9)_6=this.dropIconSuffix}}else if(_8){if(_1.openedIcon!=null)_3=_1.openedIcon;else if(!_4&&this.folderOpenImage!=null)_3=this.folderOpenImage;else{var _10;if(_4){_10=_1[this.customIconOpenProperty];if(_10==null)_10=this.showCustomIconOpen}else{_10=this.showOpenIcons}
+if(_10)_6=this.openIconSuffix;else if(!_4)_6=this.closedIconSuffix}}else{if(!_4){if(this.folderClosedImage)_3=this.folderClosedImage;else _6=this.closedIconSuffix}}}else{if(!_4&&this.fileImage)_3=this.fileImage}
+return isc.Img.urlForState(_3,false,false,_6)}
+,isc.A.getIconHTML=function isc_ColumnTree_getIconHTML(_1,_2,_3){if(_1==null)return isc.emptyString;if(_3==null)_3=this.iconSize;var _4=this.$4s;_4.src=_1;_4.width=_4.height=_3;_4.name=_2;_4.align=this.$34r;var _5=this.$wf(_4);_5[14]=_2;return _5.join(isc.$ad)}
+,isc.A.getNodeTitle=function isc_ColumnTree_getNodeTitle(_1,_2,_3){return this.data.getTitle(_1)}
+,isc.A.getData=function isc_ColumnTree_getData(){return this.data}
+,isc.A.setData=function isc_ColumnTree_setData(_1,_2,_3,_4){if(!isc.isA.Tree(_1))return;this.data=_1;this.data.columnTree=this;this.data.dataArrived="this.columnTree.updateHeadingNodeCount(parentNode);";this.data.separateFolders=this.separateFolders;if(this.showRoot&&isc.isA.ResultTree(this.data)){this.logWarn("showRoot may not be set with a databound columnTree, unexpected "+"results may occur")}
+this.data.showRoot=this.showRoot;this.data.openDisplayNodeType=this.displayNodeType;this.data.openFolder(this.data.root);this.hideColumnsToRight(0);this.populateFirstColumn()}
+,isc.A.useExistingDataModel=function isc_ColumnTree_useExistingDataModel(_1,_2,_3){return false}
+,isc.A.createDataModel=function isc_ColumnTree_createDataModel(_1,_2,_3){return this.createResultTree(_1,_3.afterFlowCallback,_3,null)}
+,isc.A.updateDataModel=function isc_ColumnTree_updateDataModel(_1,_2,_3){}
+,isc.A.getColumn=function isc_ColumnTree_getColumn(_1){if(isc.isAn.Object(_1)){var _2=this.getColumnIndex(_1)+1;if(this.columns[_2]&&this.columns[_2].isVisible())return this.columns[_2]}else{if(this.columns[_1]&&_1<=this.currentColumn)return this.columns[_1]}
+return null}
+,isc.A.getColumnProperties=function isc_ColumnTree_getColumnProperties(_1,_2){}
+,isc.A.selectAllRecords=function isc_ColumnTree_selectAllRecords(_1){if(_1==null)_1=0;if(!this.columns[_1])return;this.columns[_1].selectAllRecords()}
+,isc.A.deselectAllRecords=function isc_ColumnTree_deselectAllRecords(_1){if(_1==null)_1=0;if(!this.columns[_1])return;this.columns[_1].deselectAllRecords()}
+,isc.A.anySelected=function isc_ColumnTree_anySelected(_1){if(_1==null)_1=0;if(!this.columns[_1])return false;return this.columns[_1].anySelected()}
+,isc.A.getSelection=function isc_ColumnTree_getSelection(_1){if(_1==null)_1=0;if(!this.columns[_1])return[];return this.columns[_1].getSelection()}
+,isc.A.getSelectionObject=function isc_ColumnTree_getSelectionObject(_1){if(_1==null)_1=0;if(!this.columns[_1])return null;return this.columns[_1].selection}
+);isc.B._maxIndex=isc.C+35;isc.ColumnTree.registerStringMethods({nodeSelected:"column, node",onNodeSelected:"column,node"})
+isc.ClassFactory.defineClass("TableView","ListGrid");isc.A=isc.TableView;isc.A.PLAIN="plain";isc.A.GROUPED="grouped";isc.A.TITLE_ONLY="titleOnly";isc.A.TITLE_DESCRIPTION="titleAndDescription";isc.A.SUMMARY_INFO="summaryInfo";isc.A.SUMMARY_DATA="summaryData";isc.A.SUMMARY_FULL="summaryFull";isc.A.WHOLE_RECORD="wholeRecord";isc.A.NAVICON_ONLY="navIconOnly";isc.A=isc.TableView.getPrototype();isc.A.iconField="icon";isc.A.showIconField=true;isc.A.titleField="title";isc.A.infoField="info";isc.A.dataField="data";isc.A.descriptionField="description";isc.A.recordNavigationProperty="$79p";isc.A.tableMode=isc.TableView.PLAIN;isc.A.recordLayout=isc.TableView.TITLE_ONLY;isc.A.navIcon="[SKINIMG]/iOS/listArrow_button.png";isc.A.wholeRecordNavIcon="[SKINIMG]/iOS/listArrow.png";isc.A.navigationMode=isc.TableView.WHOLE_RECORD;isc.A.recordTitleStyle="recordTitle";isc.A.recordDescriptionStyle="recordDescription";isc.A.recordDataStyle="recordData";isc.A.recordInfoStyle="recordInfo";isc.A.iconFieldDefaults={width:50,imageSize:30,align:"center",type:"image"};isc.A.titleFieldDefaults={name:"TVtitleField",width:"*",type:"text",formatCellValue:function(_1,_2,_3,_4,_5){if(_5.formatRecord!=null){return _5.formatRecord(_2)}
+var _6=_5.$80v(_2,_5.titleField),_7=_5.$80v(_2,_5.descriptionField),_8=_5.$80v(_2,_5.infoField),_9=_5.$80v(_2,_5.dataField),_10="";if(_5.recordLayout==isc.TableView.SUMMARY_INFO||_5.recordLayout==isc.TableView.SUMMARY_FULL)
+{_10+="<span class='"+_5.recordInfoStyle+"'>"+_8+"</span>"}
+_10+="<span class='"+_5.recordTitleStyle+"'>"+_6+"</span>";if(_5.recordLayout!=isc.TableView.TITLE_ONLY){_10+="<span class='"+_5.recordDescriptionStyle+"'>"+_7+"</span>"}
+if(_5.recordLayout==isc.TableView.SUMMARY_DATA||_5.recordLayout==isc.TableView.SUMMARY_FULL)
+{_10+="<span class='"+_5.recordDataStyle+"'>"+_9+"</span>"}
+return _10}};isc.A.navigationFieldDefaults={name:"TVnavigationField",width:54,align:"right",formatCellValue:function(_1,_2,_3,_4,_5){if(_5.getShowNavigation(_2)){var _6=isc.Img.create({autoDraw:false,autoFit:true,imageType:"normal",src:_5.getNavigationIcon(_2)});return _6.getInnerHTML()}
+return _5.$54t}};isc.A.groupByFieldDefaults={showIf:"false"};isc.A.canAddFormulaFields=false;isc.A.canAddSummaryFields=false;isc.A.showHeader=false;isc.A.selectionType="none";isc.A.skinImgDir="images/iOS/";isc.A.baseStyle="tableCell";isc.A.border="0px";isc.A.wrapCells=false;isc.A.cellHeight=44;isc.A.alternateRecordStyles=false;isc.A.canCollapseGroup=false;isc.A.groupStartOpen="all";isc.A.ignoreEmptyCriteria=false;isc.A=isc.TableView.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_TableView_initWidget(){this.Super("initWidget",arguments);this.$80w={};if(this.formatRecord!=null&&!isc.isA.Function(this.formatRecord))
+isc.Func.replaceWithMethod(this,"formatRecord","record")}
+,isc.A.setFields=function isc_TableView_setFields(_1){this.invokeSuper(isc.TableView,"setFields",this.$80x(_1))}
+,isc.A.$80x=function isc_TableView__defineTableFields(_1){var _2=_1||[];for(var i=0;i<_2.length;i++){_2[i].showIf="false"}
+if(this.showIconField){var _4=_2.find(this.fieldIdProperty,this.iconField);if(_4)_2.remove(_4);this.$79q=_2.length;_2[_2.length]=isc.addProperties({name:this.iconField},this.iconFieldDefaults,this.iconFieldProperties)}
+var _4=_2.find(this.fieldIdProperty,this.titleFieldDefaults.name);if(_4)_2.remove(_4);_2[_2.length]=isc.addProperties({},this.titleFieldDefaults,this.titleFieldProperties);var _4=_2.find(this.fieldIdProperty,this.navigationFieldDefaults.name);if(_4)_2.remove(_4);this.$79r=_2.length;_2[_2.length]=isc.addProperties({},this.navigationFieldDefaults,this.navigationFieldProperties);if(this.groupByField){var _5;if(isc.isA.Array(this.groupByField)){_5=this.groupByField}else{_5=[this.groupByField]}
+for(var i=0;i<_5.length;i++){var _6=_2.find(this.fieldIdProperty,_5[i]);if(_6){isc.addProperties(_6,this.groupByFieldDefaults,this.groupByFieldProperties)}else{_2[_2.length]=isc.addProperties({name:_5[i]},this.groupByFieldDefaults,this.groupByFieldProperties)}}}
+return _2}
+,isc.A.$80v=function isc_TableView__getFormattedFieldValue(_1,_2){var _3=_1[_2]||this.$54t,_4=this.$80w[_2],_5;if(_4==null||_4==_5){_4=isc.Class.getArrayItemIndex(_2,this.getAllFields(),this.fieldIdProperty);this.$80w[_2]=_4}
+if(_4>=0){_3=this.getFormattedValue(_1,_2,_3)}
+return _3}
+,isc.A.getNavigationIcon=function isc_TableView_getNavigationIcon(_1){return(this.navigationMode==isc.TableView.NAVICON_ONLY?this.navIcon:this.wholeRecordNavIcon)}
+,isc.A.getShowNavigation=function isc_TableView_getShowNavigation(_1){if(_1&&_1[this.recordNavigationProperty]!=null){return _1[this.recordNavigationProperty]}
+return this.showNavigation}
+,isc.A.canSelectRecord=function isc_TableView_canSelectRecord(_1){return this.body.canSelectRecord(_1)}
+,isc.A.recordClick=function isc_TableView_recordClick(_1,_2,_3,_4,_5,_6,_7){if(_5!=this.$79q&&_5!=this.$79r&&this.canSelectRecord(_2))
+{this.selectSingleRecord(_2)}
+if(_5==this.$79r||this.navigationMode==isc.TableView.WHOLE_RECORD){if(this.recordNavigationClick){isc.Func.replaceWithMethod(this,"recordNavigationClick","record");this.recordNavigationClick(_2)}}else if(_5==this.$79q){if(this.imageClick){isc.Func.replaceWithMethod(this,"imageClick","record");this.imageClick(_2)}}}
+,isc.A.getBaseStyle=function isc_TableView_getBaseStyle(_1,_2,_3){if(this.isGrouped){var _4=this.data.get(_2),_5=this.data.isFirst(_4),_6=this.data.isLast(_4);if(_5&&_6){return(_3==0?"cellOnlyLeft":(_3==this.fields.length-1?"cellOnlyRight":"cellOnly"))}else if(_5){return(_3==0?"cellTopLeft":(_3==this.fields.length-1?"cellTopRight":"cellTop"))}else if(_6){return(_3==0?"cellBottomLeft":(_3==this.fields.length-1?"cellBottomRight":"cellBottom"))}}
+return this.Super("getBaseStyle",arguments)}
+);isc.B._maxIndex=isc.C+9;isc.TableView.registerStringMethods({recordNavigationClick:"record",imageClick:"record",formatRecord:"record"});isc.ClassFactory.defineClass("DOMTree","Tree");isc.A=isc.DOMTree.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.tagNameProperty="tagName";isc.A.elementProperty="$9b";isc.A.loadOnInit=true;isc.A.loadDataOnDemand=true;isc.A.hideTextNodes=true;isc.B.push(isc.A.makeRoot=function isc_DOMTree_makeRoot(){var _1=this.Super("makeRoot",arguments);_1[this.elementProperty]=this.rootElement;return _1}
+,isc.A.getElement=function isc_DOMTree_getElement(_1){return _1[this.elementProperty]}
+,isc.A.getElementTitle=function isc_DOMTree_getElementTitle(_1){var _2=_1.getAttribute(this.titleProperty);if(!this.valueIsEmpty(_2))return _2;_2=_1.getAttribute(this.nameProperty);if(!this.valueIsEmpty(_2))return _2;if(!isc.xml.hasElementChildren(_1)){_2=isc.xml.getElementText(_1);if(!this.valueIsEmpty(_2))return _2}
+return _1.tagName||_1.nodeName}
+,isc.A.valueIsEmpty=function isc_DOMTree_valueIsEmpty(_1){return _1==null||isc.isAn.emptyString(_1)}
+,isc.A.isFolder=function isc_DOMTree_isFolder(_1){if(_1==this.root||_1.children!=null)return true;var _2=_1[this.elementProperty];if(!_2||!_2.childNodes||_2.childNodes.length==0)return false;if(!this.hideTextNodes)return true;return isc.xml.hasElementChildren(_2)}
+,isc.A.moveList=function isc_DOMTree_moveList(_1,_2,_3){var _4=_1[0],_5=this.getElement(_4);this.logWarn("moveList: "+this.echoAll(_1)+", newParent: "+this.echo(_2)+", index: "+_3);this.$36g(_5,_2,_3);this.Super("moveList",arguments)}
+,isc.A.remove=function isc_DOMTree_remove(_1){var _2=this.getElement(_1);_2.parentNode.removeChild(_2);return this.Super("remove",arguments)}
+,isc.A.addElement=function isc_DOMTree_addElement(_1,_2,_3){this.$36g(_1,_2,_3);if(this.isLoaded(_2)){var _4=this.nodeForElement(_1);this.add(_4,_2,_3)}else{this.dataChanged()}}
+,isc.A.$36g=function isc_DOMTree__addToDOM(_1,_2,_3){var _4=this.getElement(_2);if(_3==null){this.logWarn("appending: "+this.echoLeaf(_1)+" to: "+this.echoLeaf(_4));_4.appendChild(_1)}else{var _5=this.getChildren(_2)[_3],_6=this.getElement(_5);this.logWarn("inserting into: "+this.echoLeaf(_4)+", before: "+this.echoLeaf(_6));_4.insertBefore(_1,_6)}}
+,isc.A.nodeForElement=function isc_DOMTree_nodeForElement(_1){var _2={};_2[this.elementProperty]=_1;_2[this.titleProperty]=this.getElementTitle(_1);if(this.tagNameProperty){_2[this.tagNameProperty]=_1.tagName||_1.nodeName}
+if(this.copyAttributes){for(var j=0;j<this.copyAttributes.length;j++){var _4=this.copyAttributes[j];_2[_4]=_1.getAttribute(_4)}}
+return _2}
+,isc.A.loadChildren=function isc_DOMTree_loadChildren(_1){if(this.isLoaded(_1))return;try{var _2=_1.$9b;if(_2==null)return;var _3=_2.childNodes;if(isc.Browser.isMoz&&_2.contentDocument){_3=[_2.contentDocument.documentElement]}else{if(this.loadingBatch()&&!isc.xml.hasElementChildren(_2))return}
+_1[this.openProperty]=true;if(_3!=null){for(var i=0;i<_3.length;i++){var _5=_3[i];if(this.hideTextNodes&&_5.nodeName.startsWith("#"))continue;var _6=this.nodeForElement(_5);this.add(_6,_1)}}
+this.setLoadState(_1,isc.Tree.LOADED)}catch(e){this.logWarn("parent node: "+this.echo(_1)+", at path: "+this.getPath(_1)+", error: "+this.echo(e)+this.getStackTrace())}}
+);isc.B._maxIndex=isc.C+11;isc.defineClass("DOMGrid","TreeGrid");isc.A=isc.DOMGrid.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.canDragRecordsOut=true;isc.A.canAcceptDroppedRecords=true;isc.A.canReorderRecords=true;isc.A.showRoot=true;isc.A.$36h="<";isc.A.$36i=">";isc.A.$36j=[" ",,'="',,'"'];isc.A.colorMap={table:"#009900",tr:"#333399",td:"#663366",form:"#CC6600",input:"#3333FF",textarea:"#3333FF",div:"#663300",span:"#663300"};isc.A.colorPrefix="color:";isc.A.$36k={};isc.B.push(isc.A.initWidget=function isc_DOMGrid_initWidget(){this.Super(this.$oc);if(this.url){isc.xml.loadXML(this.url,this.getID()+".setRootElement(xmlDoc.documentElement)")}}
+,isc.A.getDefaultData=function isc_DOMGrid_getDefaultData(){return null}
+,isc.A.getElement=function isc_DOMGrid_getElement(_1){return this.data.getElement(_1)}
+,isc.A.setRootElement=function isc_DOMGrid_setRootElement(_1){this.rootElement=_1;var _2=isc.DOMTree.create({rootElement:_1});this.setData(_2)}
+,isc.A.getIcon=function isc_DOMGrid_getIcon(){}
+,isc.A.getNodeTitle=function isc_DOMGrid_getNodeTitle(_1,_2,_3){if(_1==null)return null;if(_1.$9g)return _1.$9g;var _4=this.htmlMode?this.$36l(_1):this.$36m(_1);return(_1.$9g=_4)}
+,isc.A.dataChanged=function isc_DOMGrid_dataChanged(){this.Super("dataChanged",arguments);this.data.getOpenList().setProperty("$9g",null)}
+,isc.A.$36m=function isc_DOMGrid__getXMLNodeTitle(_1){if(_1.$9b==null){this.logWarn("no element for node: "+this.echo(_1))}
+var _2=_1.$9b,_3=isc.emptyString,_4=this.$36n;if(_4==null)_4=this.$36n=isc.SB.create();else _4.clear();_4.append(this.$36h,(_2.tagName||_2.nodeName));var _5=_2.attributes;if(_5!=null){var _6=this.$36j;for(var i=0;i<_5.length;i++){var _8=_5[i];_6[1]=_8.name;_6[3]=_8.value;_4.append(_6)}}
+if(!isc.xml.hasElementChildren(_2)){_4.append(this.$36i,isc.xml.getElementText(_2),"</",(_2.tagName||_2.nodeName),this.$36i)}else if(_2.childNodes.length>0){_4.append(this.$36i)}else{_4.append("/>")}
+return _4.toString()}
+,isc.A.$36l=function isc_DOMGrid__getHTMLNodeTitle(_1){var _2=_1.$9b,_3=isc.emptyString,_4,_5;if(isc.Browser.isIE&&_2.scopeName=="VML"){_4=(_2.style?_2.style.width:null);_5=(_2.style?_2.style.height:null)}else{_4=_2.width||(_2.style?_2.style.width:null);_5=_2.height||(_2.style?_2.style.height:null)}
+var _6=(_2.tagName&&_2.tagName.toLowerCase()=="td");return isc.SB.concat(this.$36h,(_2.tagName||_2.nodeName),(_2.id?" ID="+_2.id:_3),(!this.valueIsEmpty(_4)?" WIDTH="+_4:_3),(!this.valueIsEmpty(_5)?" HEIGHT="+_5:_3),(_6&&_2.rowSpan>1?" ROWSPAN="+_2.rowSpan:_3),(_6&&_2.colSpan>1?" COLSPAN="+_2.colSpan:_3),this.$36i)}
+,isc.A.valueIsEmpty=function isc_DOMGrid_valueIsEmpty(_1){return _1==null||isc.isAn.emptyString(_1)}
+,isc.A.getCellCSSText=function isc_DOMGrid_getCellCSSText(_1,_2,_3){var _4=this.data.getElement(_1);if(_4==null)return null;var _5=_4.tagName;if(_5==null)return null;if(this.$36k[_5]){_5=this.$36k[_5]}else{this.$36k=_5=_5.toLowerCase()}
+if(this.colorMap[_5]!=null){return isc.SB.concat(this.colorPrefix,this.colorMap[_5],isc.semi)}}
+);isc.B._maxIndex=isc.C+11;isc.ClassFactory.defineClass("MenuBar","Toolbar");isc.addGlobal("Menubar",isc.MenuBar);isc.A=isc.MenuBar.getPrototype();isc.A.overflow=isc.Canvas.VISIBLE;isc.A.defaultHeight=22;isc.A.menuConstructor="Menu";isc.A.buttonConstructor="MenuBarButton";isc.A.tabIndex=-1;isc.A.tabWithinToolbar=false;isc.A.buttonDefaults={showDown:false,showRollOver:true,showFocused:true,showFocusedAsOver:true};isc.A=isc.MenuBar.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_MenuBar_initWidget(){this.Super("initWidget",arguments)}
+,isc.A.setButtons=function isc_MenuBar_setButtons(){var _1=[];if(this.menus){for(var i=0;i<this.menus.length;i++){var _3=this.menus[i];_1[i]=this.$36o(_3,i)}}
+return this.Super("setButtons",[_1],arguments)}
+,isc.A.$36o=function isc_MenuBar__getButtonProperties(_1,_2){return{title:_1.title,width:(_1.menuButtonWidth?_1.menuButtonWidth:_1.width),menuNum:_2,focusChanged:function(_3){if(isc.Browser.isMoz&&_3)this.bringToFront()}}}
+,isc.A.setMenus=function isc_MenuBar_setMenus(_1){if(!isc.isAn.Array(_1))_1=[_1];for(var i=0;i<this.members.length;i++){var _3=this.members[i],_4=this.menus[_3.menuNum];if(_3.isObserving(_4,"hide")){_3.ignore(_4,"hide")}}
+this.menus=_1;this.setButtons()}
+,isc.A.$36p=function isc_MenuBar__remapButton(_1,_2){if(!_1)return;if(_2==-1){var _3=_1.menuNum,_4=this.menus[_1.menuNum];if(_1.isObserving(_4,"hide")){_1.ignore(_4,"hide")}}
+_1.menuNum=_2}
+,isc.A.addMenus=function isc_MenuBar_addMenus(_1,_2){if(!_1)return;if(!isc.isAn.Array(_1))_1=[_1];if(!this.menus)this.menus=[];if(_2==null)_2=this.menus.length;if(!this.$6c){this.menus.addListAt(_1,_2)}else{for(var i=_2;i<this.members.length;i++){this.$36p(this.members[i],(i+_1.length))}
+this.menus.addListAt(_1,_2);var _4=[];for(var i=0;i<_1.length;i++){var _5=this.menus.indexOf(_1[i]);_4[i]=this.$36o(_1[i],_5)}
+this.addButtons(_4,_2)}}
+,isc.A.removeMenus=function isc_MenuBar_removeMenus(_1){if(_1==null)return;if(!isc.isAn.Array(_1))_1=[_1];var _2=[],_3=this.menus.duplicate();for(var i=0;i<_1.length;i++){var _5=_1[i];if(isc.isA.Number(_5))_5=this.menus[_5];else if(!this.menus.contains(_5))continue;_3.remove(_5);var _6=this.menus.indexOf(_5);if(this.$6c)_2.add(this.members[_6])}
+if(!this.$6c){this.menus=_3;return}
+for(var i=0;i<this.menus.length;i++){if(this.menus[i]==_3[i])continue;this.$36p(this.members[i],_3.indexOf(this.menus[i]))}
+this.menus=_3;this.removeButtons(_2)}
+,isc.A.showMenu=function isc_MenuBar_showMenu(_1){var _2;if(isc.isA.Number(_1))_2=this.menus[_1];else{_2=_1;_1=this.menus.indexOf(_2)}
+if(!_2){this.logWarn("showMenu() called with invalid menu number: "+_1+". No effect.");return}
+var _3;for(var i=0;i<this.members.length;i++){if(this.members[i].menuNum==_1){_3=this.members[i]}}
+if(!isc.isA.Canvas(_2)){if(_2.ID==null)_2.ID=this.getID()+"_menu"+_1;_2.autoDraw=false;_2=this.menus[_1]=isc.ClassFactory.newInstance(this.menuConstructor,_2,this.menuDefaults)}
+if(this.activeMenu!=null){this.menus[this.activeMenu].hideMenuTree()}
+_2.keyEventParent=this;_2.moveTo(_3.getPageLeft(),_3.getPageBottom());_2.show();_3.$36q=_3.showRollOver;_3.showRollOver=false;_3.setState(isc.StatefulCanvas.STATE_DOWN);this.activeMenu=_1;if(!_3.isObserving(_2,"hide")){_3.observe(_2,"hide","observer.menuHidden(observed)")}
+var _5=isc.EH;if(_5.targetIsMasked(this))this.bringToFront();var _6=_5.clickMaskRegistry.last(),_7=_5.getMaskedFocusCanvas(_6);if(this.members.contains(_7))_5.setMaskedFocusCanvas(null,_6);_2.body.focusOnHide=_3}
+,isc.A.$6d=function isc_MenuBar__focusInNextButton(_1){if(!this.activeMenu==null)return this.Super("$6d",arguments);if(_1==null)_1=true;var _2=this.activeMenu,_3=_1?1:-1,_4=_2+_3,_5=this.getMembers();while(_2!=_4){if(_4<0)_4=_5.length-1;else if(_4>=this.members.length)_4=0;var _6=_5[_4];if(!_6.isDisabled()){_6.showMenu();break}
+_4+=_3}}
+,isc.A.getFocusButtonIndex=function isc_MenuBar_getFocusButtonIndex(){if(this.activeMenu!=null)return this.activeMenu;return this.Super("getFocusButtonIndex",arguments)}
+);isc.B._maxIndex=isc.C+10;isc.ClassFactory.defineClass("MenuBarButton","MenuButton");isc.A=isc.MenuBarButton.getPrototype();isc.A.showMenuButtonImage=false;isc.A.showDown=false;isc.A.autoDraw=false;isc.A.align="center";isc.A=isc.MenuBarButton.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.mouseOver=function isc_MenuBarButton_mouseOver(){this.Super("mouseOver",arguments);var _1=this.parentElement.activeMenu;if(_1!=null&&_1!=this.menuNum){this.showMenu()}}
+,isc.A.mouseDown=function isc_MenuBarButton_mouseDown(){if(this.parentElement.activeMenu==this.menuNum){isc.Menu.hideAllMenus()}else{this.showMenu()}}
+,isc.A.mouseUp=function isc_MenuBarButton_mouseUp(){}
+,isc.A.click=function isc_MenuBarButton_click(){}
+,isc.A.mouseOut=function isc_MenuBarButton_mouseOut(){if(this.parentElement.activeMenu!=this.menuNum){this.Super("mouseOut",arguments)}}
+,isc.A.handleKeyPress=function isc_MenuBarButton_handleKeyPress(_1,_2){if(_1.keyName=="Space"||_1.keyName=="Enter")return this.showMenu();if(this.keyPress){this.convertToMethod("keyPress");return this.keyPress(_1,_2)}}
+,isc.A.showMenu=function isc_MenuBarButton_showMenu(){this.parentElement.showMenu(this.menuNum)}
+,isc.A.menuHidden=function isc_MenuBarButton_menuHidden(_1){if(isc.$cv)arguments.$cw=this;if(this.state==isc.StatefulCanvas.STATE_DOWN){if(this.hasFocus&&this.showFocused)this.setState(isc.StatefulCanvas.STATE_OVER);else this.setState(isc.StatefulCanvas.STATE_UP)}
+this.showRollOver=this.$36q;delete this.$36q;this.menuIsDown=false;if(this.parentElement.activeMenu==this.menuNum){this.parentElement.activeMenu=null}
+delete _1.eventParent;this.ignore(_1,"hide")}
+);isc.B._maxIndex=isc.C+8;isc.ClassFactory.defineClass("CellSelection");isc.A=isc.CellSelection;isc.A.$24e=0;isc.A.COL_SELECTION_FLAGS=null;isc.A=isc.CellSelection;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.generateFlagTable=function isc_c_CellSelection_generateFlagTable(){isc.CellSelection.COL_SELECTION_FLAGS=[];for(var i=0;i<32;i++)
+isc.CellSelection.COL_SELECTION_FLAGS[i]=Math.pow(2,i)}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.CellSelection.getPrototype();isc.A.data=null;isc.A.numCols=0;isc.A.selectionProperty=null;isc.A.$q7=true;isc.A.$24f=[];isc.A.lastSelectedCell=[];isc.A.changedCells=[];isc.A=isc.CellSelection.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.init=function isc_CellSelection_init(){if(!isc.CellSelection.COL_SELECTION_FLAGS)isc.CellSelection.generateFlagTable();if(!this.selectionProperty)this.selectionProperty="_cellSelection_"+isc.CellSelection.$24e++;this.setData((this.data?this.data:[]))}
+,isc.A.setData=function isc_CellSelection_setData(_1){if(this.data!=null)this.ignoreData(this.data);this.data=_1;if(this.data!=null)this.observeData(this.data)}
+,isc.A.observeData=function isc_CellSelection_observeData(_1){this.observe(_1,"dataChanged","observer.$q7 = true")}
+,isc.A.ignoreData=function isc_CellSelection_ignoreData(_1){this.ignore(_1,"dataChanged")}
+,isc.A.cellIsSelected=function isc_CellSelection_cellIsSelected(_1,_2){var _3=this.data[_1],_4=(_3?_3[this.selectionProperty]:null),_5=(_4?_4[Math.floor(_2/ 32)]:null),_6=isc.CellSelection.COL_SELECTION_FLAGS[_2%32];return(_5!=null&&((_5&_6)!=0))}
+,isc.A.rowHasSelection=function isc_CellSelection_rowHasSelection(_1){var _2=this.data[_1],_3=(_2?_2[this.selectionProperty]:null),_4=Math.ceil(this.numCols/ 32);if(!_2||!_2[this.selectionProperty])return false;for(var i=0;i<_4;i++){if(_3[i])return true}
+return false}
+,isc.A.colHasSelection=function isc_CellSelection_colHasSelection(_1){if(_1>this.numCols-1)return false;var _2=isc.CellSelection.COL_SELECTION_FLAGS[_1%32],_3=Math.floor(_1/ 32);var _4=this.data,_5=_4.length;for(var i=0;i<_5;i++){var _7=_4[i][this.selectionProperty];if(_7&&_7[_3]&&((_7[_3]&_2)!=0))
+return true}
+return false}
+,isc.A.anySelected=function isc_CellSelection_anySelected(){var _1=Math.ceil(this.numCols/ 32);var _2=this.data,_3=_2.length;for(var i=0;i<_3;i++){var _5=_2[i][this.selectionProperty];if(!_5)continue;for(var j=0;j<_1;j++){if(_5[j])return true}}
+return false}
+,isc.A.getSelectedCells=function isc_CellSelection_getSelectedCells(){if(!this.$q7)return this.$24f;var _1=[],_2=isc.CellSelection.COL_SELECTION_FLAGS,_3=Math.ceil(this.numCols/ 32),_4=this.data,_5=_4.length,_6;for(var i=0;i<_5;i++){_6=_4[i][this.selectionProperty];if(!_6)continue;for(var j=0,_9,_10;j<_3;j++){_9=_6[j];if(!_9)continue;_10=(j==_3-1&&this.numCols%32!=0)?this.numCols%32:32;for(var k=0;k<_10;k++){if((_9&_2[k])!=0){_1[_1.length]=[i,j*32+k]}}}}
+this.$24f=_1;this.$q7=false;return _1}
+,isc.A.getSelectionRowNums=function isc_CellSelection_getSelectionRowNums(){var _1=[],_2=Math.ceil(this.numCols/ 32),_3=this.data,_4=_3.length,_5;for(var i=0;i<_4;i++){_5=_3[i][this.selectionProperty];if(!_5)continue;for(var j=0,_8;j<_2;j++){if(_5[j]){_1[_1.length]=i;break}}}
+return _1}
+,isc.A.getSelectionColNums=function isc_CellSelection_getSelectionColNums(){var _1=[],_2=[],_3=isc.CellSelection.COL_SELECTION_FLAGS,_4=Math.ceil(this.numCols/ 32),_5=this.data,_6=_5.length,_7;for(var i=0;i<_6;i++){_7=_5[i][this.selectionProperty];if(!_7)continue;for(var j=0,_10;j<_4;j++){if(_7[j]){_2[j]=_2[j]|_7[j]}}}
+if(_2.length==0)return _1;for(var i=0,_11=this.numCols;i<_11;i++){if((_2[Math.floor(i/ 32)]&_3[i%32])!=0)
+_1[_1.length]=i}
+return _1}
+,isc.A.getSelectionBounds=function isc_CellSelection_getSelectionBounds(){var _1=this.getSelectionRowNums(),_2=this.getSelectionColNums();return[_1.first(),_2.first(),_1.last(),_2.last()]}
+,isc.A.$24g=function isc_CellSelection__setCellSelection(_1,_2,_3){var _4=this.data[_1],_5=(_4?_4[this.selectionProperty]:null),_6=Math.floor(_2/ 32),_7=(_5?_5[Math.floor(_2/ 32)]:0),_8=isc.CellSelection.COL_SELECTION_FLAGS[_2%32];if(!_4||_2>this.numCols-1)return false;if(_4.enabled==false)return false;if(_5==null){_5=_4[this.selectionProperty]=[];for(var i=0,_10=Math.ceil(this.numCols/ 32);i<_10;i++)_5[i]=0}
+else if(_7==null){_5[_6]=0}
+if(((_7&_8)!=0)==_3)return false;_5[_6]=_7^_8;if(_3)this.lastSelectedCell=[_1,_2];this.$q7=true;return true}
+,isc.A.setCellRangeSelection=function isc_CellSelection_setCellRangeSelection(_1,_2,_3,_4,_5){this.changedCells=this.$24h(_1,_2,_3,_4,_5);return this.$24i()}
+,isc.A.$24h=function isc_CellSelection__setCellRangeSelection(_1,_2,_3,_4,_5){var _6=[],_7,_8,_9,_10;if(_1<=_3){_7=_1;_8=_3}else{_7=_3;_8=_1}
+if(_2<=_4){_9=_2;_10=_4}else{_9=_4;_10=_2}
+if(this.logIsDebugEnabled()){this.logDebug((_5?"selecting ":"deselecting ")+[_7,_9]+" through "+[_8,_10])}
+for(var _11=_7;_11<=_8;_11++){for(var _12=_9;_12<=_10;_12++){if(this.$24g(_11,_12,_5)){_6[_6.length]=[_11,_12]}}}
+return _6}
+,isc.A.setCellListSelection=function isc_CellSelection_setCellListSelection(_1,_2){if(!_1)return false;var _3=[];for(var i=0,_5=_1.length,_6,_7;i<_5;i++){_6=_1[i][0];_7=_1[i][1];if(this.$24g(_6,_7,_2))
+_3[_3.length]=[_6,_7]}
+this.changedCells=_3;return this.$24i()}
+,isc.A.$24i=function isc_CellSelection__cellSelectionsChanged(){if(this.changedCells.length>0){this.selectionChanged();return true}else
+return false}
+,isc.A.selectionChanged=function isc_CellSelection_selectionChanged(){}
+,isc.A.setCellSelection=function isc_CellSelection_setCellSelection(_1,_2,_3){if(this.$24g(_1,_2,_3)){this.changedCells=[[_1,_2]];this.selectionChanged();return true}else
+return false}
+,isc.A.selectCell=function isc_CellSelection_selectCell(_1,_2){return this.setCellSelection(_1,_2,true)}
+,isc.A.deselectCell=function isc_CellSelection_deselectCell(_1,_2){return this.setCellSelection(_1,_2,false)}
+,isc.A.selectCellRange=function isc_CellSelection_selectCellRange(_1,_2,_3,_4){this.changedCells=this.$24h(_1,_2,_3,_4,true);return this.$24i()}
+,isc.A.deselectCellRange=function isc_CellSelection_deselectCellRange(_1,_2,_3,_4){this.changedCells=this.$24h(_1,_2,_3,_4,false);return this.$24i()}
+,isc.A.selectRow=function isc_CellSelection_selectRow(_1){return this.selectCellRange(_1,0,_1,this.numCols-1)}
+,isc.A.deselectRow=function isc_CellSelection_deselectRow(_1){return this.deselectCellRange(_1,0,_1,this.numCols-1)}
+,isc.A.selectCol=function isc_CellSelection_selectCol(_1){return this.selectCellRange(0,_1,this.data.length-1,_1)}
+,isc.A.deselectCol=function isc_CellSelection_deselectCol(_1){return this.deselectCellRange(0,_1,this.data.length-1,_1)}
+,isc.A.selectAll=function isc_CellSelection_selectAll(){return this.selectCellRange(0,0,this.data.length-1,this.numCols-1)}
+,isc.A.deselectAll=function isc_CellSelection_deselectAll(){return this.deselectCellRange(0,0,this.data.length-1,this.numCols-1)}
+,isc.A.selectCellList=function isc_CellSelection_selectCellList(_1){return this.setCellListSelection(_1,true)}
+,isc.A.deselectCellList=function isc_CellSelection_deselectCellList(_1){return this.setCellListSelection(_1,false)}
+,isc.A.selectSingleCell=function isc_CellSelection_selectSingleCell(_1,_2){var _3=this.cellIsSelected(_1,_2);this.changedCells=this.$24h(0,0,this.data.length-1,this.numCols-1,false);this.$24g(_1,_2,true);if(!_3)
+this.changedCells[this.changedCells.length]=[_1,_2];return this.$24i()}
+,isc.A.selectSingleRow=function isc_CellSelection_selectSingleRow(_1){var _2=[];if(_1>0)
+_2=this.$24h(0,0,_1-1,this.numCols-1,false);_2=_2.concat(this.$24h(_1,0,_1,this.numCols-1,true));if(_1<this.data.length-1)
+_2=_2.concat(this.$24h(_1+1,0,this.data.length-1,this.numCols-1,false));this.changedCells=_2;return this.$24i()}
+,isc.A.selectSingleCol=function isc_CellSelection_selectSingleCol(_1){var _2=[];if(_1>0)
+_2=this.$24h(0,0,this.data.length-1,_1-1,false);_2=_2.concat(this.$24h(0,_1,this.data.length-1,_1,true));if(_1<this.numCols-1)
+_2=_2.concat(this.$24h(0,_1+1,this.data.length-1,this.numCols-1,false));this.changedCells=_2;return this.$24i()}
+,isc.A.selectOnMouseDown=function isc_CellSelection_selectOnMouseDown(_1,_2,_3){if(_1.selectionType==isc.Selection.NONE)return false;this.startRow=this.lastRow=_2;this.startCol=this.lastCol=_3;var _4=this.cellIsSelected(_2,_3),_5=this.getSelectedCells(),_6=this.getSelectionBounds();this.deselectCellOnMouseUp=false;this.deselectOthersOnMouseUp=false;if(_1.selectionType==isc.Selection.SINGLE){this.selectSingleCell(_2,_3);return true}else if(isc.EventHandler.shiftKeyDown()){if(_5.length==0){this.selectCell(_2,_3);return true}else{var _7=_6[0],_8=_6[1],_9=_6[2],_10=_6[3];if(_2<_7)
+_7=_2;else if(_2>=_9)
+_9=_2;else{this.deselectCellRange(_2+1,_8,_9,_10);_9=_2}
+if(_3<_8)
+_8=_3;else if(_3>=_10)
+_10=_3;else{this.deselectCellRange(_7,_3+1,_9,_10);_10=_3}
+this.selectCellRange(_7,_8,_9,_10);return true}}else if(_1.selectionType==isc.Selection.SIMPLE){if(!_4){this.selectCell(_2,_3);return true}else{this.deselectCellOnMouseUp=true;return false}}else if(isc.Browser.isMac?isc.EventHandler.metaKeyDown():isc.EventHandler.ctrlKeyDown()){this.setCellSelection(_2,_3,!_4);return true}else{if(!_4){this.selectSingleCell(_2,_3);return true}else if(isc.EventHandler.rightButtonDown()){this.deselectOnDragMove=true;return false}else{if(this.dragSelection){if(this.simpleDeselect){this.deselectAll();this.selectOriginOnDragMove=true;return true}
+this.selectSingleCell(_2,_3);return true}else{if(this.simpleDeselect){this.deselectAllOnMouseUp=true}else{this.deselectOthersOnMouseUp=(_5.length>1)}
+return false}}}}
+,isc.A.selectOnDragMove=function isc_CellSelection_selectOnDragMove(_1,_2,_3){var _4=this.startRow,_5=this.startCol,_6=this.lastRow,_7=this.lastCol;if(_2<0||_3<0){this.logWarn("selectOnDragMove: aborting due to negative coordinate: "+[_2,_3]);return}
+if(_2==_6&&_3==_7)return;if(_1.selectionType==isc.Selection.SINGLE){this.selectSingleCell(_2,_3);return}
+var _8=[];if(this.selectOriginOnDragMove){this.$24g(_4,_5);_8.add([_4,_5]);this.selectOriginOnDragMove=false}else if(this.deselectOnDragMove||this.deselectAllOnMouseUp||this.deselectOthersOnMouseUp)
+{this.selectSingleCell(_4,_5);this.deselectAllOnMouseUp=this.deselectOthersOnMouseUp=this.deselectOnDragMove=false}
+if((_2!=_6&&((_6>=_4&&_4>=_2)||(_2>=_4&&_4>=_6)))||(_3!=_7&&((_7>=_5&&_5>=_3)||(_3>=_5&&_5>=_7))))
+{this.$24g(_4,_5,false);_8.addList(this.$24h(_4,_5,_6,_7,false));this.$24g(_4,_5,true);_8.addList(this.$24h(_4,_5,_2,_3,true));this.changedCells=_8;this.$24i();this.lastRow=_2;this.lastCol=_3;return}
+if(_2>=0&&_2!=_6){if(_4>=_6&&_6>_2){_8.addList(this.$24h(_2,_5,_6-1,_7,true))}else if(_4>=_2&&_2>_6){_8.addList(this.$24h(_6,_5,_2-1,_7,false))}else if(_4<=_2&&_2<_6){_8.addList(this.$24h(_2+1,_5,_6,_7,false))}else if(_4<=_6&&_6<_2){_8.addList(this.$24h(_6+1,_5,_2,_7,true))}
+_6=this.lastRow=_2}
+if(_3>=0&&_3!=_7){if(_5>=_7&&_7>_3){_8.addList(this.$24h(_4,_3,_6,_7-1,true))}else if(_5>=_3&&_3>_7){_8.addList(this.$24h(_4,_7,_6,_3-1,false))}else if(_5<=_3&&_3<_7){_8.addList(this.$24h(_4,_3+1,_6,_7,false))}else if(_5<=_7&&_7<_3){_8.addList(this.$24h(_4,_7+1,_6,_3,true))}
+this.lastCol=_3}
+this.changedCells=_8;this.$24i()}
+,isc.A.selectOnMouseUp=function isc_CellSelection_selectOnMouseUp(_1,_2,_3){if(_1.selectionType==isc.Selection.NONE)return false;if(this.deselectOthersOnMouseUp){this.selectSingleCell(_2,_3);this.deselectOthersOnMouseUp=false;return true}else if(this.deselectRecordOnMouseUp){this.deselectCell(_2,_3);this.deselectRecordOnMouseUp=false;return true}else if(this.deselectAllOnMouseUp){this.deselectAll();this.deselectAllOnMouseUp=false}else
+return false}
+);isc.B._maxIndex=isc.C+37;if(isc.Window){isc.ClassFactory.defineClass("FieldEditor","Window");isc.A=isc.FieldEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.isModal=true;isc.A.showMinimizeButton=false;isc.A.autoCenter=true;isc.A.autoSize=true;isc.A.defaultWidth=475;isc.A.visibleFieldsConstructor="ListGrid";isc.A.hiddenFieldsConstructor="ListGrid";isc.A.showFooter=false;isc.A.title="Customize Fields";isc.A.showInstructionsPane=true;isc.A.bodyProperties={layoutMargin:5};isc.A.instructionsPaneDefaults={_constructor:isc.HTMLFlow,padding:5,height:1};isc.A.instructions="Drag fields between grids to control which fields are visible "+"and the order in which fields are displayed";isc.B.push(isc.A.initWidget=function isc_FieldEditor_initWidget(){this.invokeSuper(isc.FieldEditor,"initWidget");if(!this.fields){isc.logWarn('FieldEditor can not be created because no fields were provided');return}
+this.addItem(this.addAutoChild("instructionsPane",{contents:this.instructions}));this.visibleFieldsDefaults=this.hiddenFieldsDefaults={height:200,width:200,leaveScrollbarGap:false,canDragRecordsOut:true,canAcceptDroppedRecords:true,canReorderRecords:true,dragDataAction:"move"};var _1=this.visibleFieldsGrid=this.createAutoChild("visibleFields",{fields:[{name:"title",title:"Visible Fields",formatCellValue:"value || record.name"}]});var _2=this.fields;var _3=_2.findAll("visible",null);var _4=_2.findAll("visible",false);_1.setData(_3);var _5=this.hiddenFieldsGrid=this.createAutoChild("hiddenFields",{canReorderRecords:false,fields:[{name:"title",title:"Hidden Fields",formatCellValue:"value || record.name"}]});_5.setData(_4);var _6=isc.HLayout.create({membersMargin:10,layoutMargin:5,height:1,overflow:"visible",members:[_1,isc.VStack.create({width:32,height:74,layoutAlign:"center",membersMargin:10,members:[isc.Img.create({src:"[SKINIMG]actions/back.png",width:16,height:16,visFieldsGrid:_1,hidFieldsGrid:_5,layoutAlign:"center",click:"this.visFieldsGrid.transferSelectedData(this.hidFieldsGrid)"}),isc.Img.create({src:"[SKINIMG]actions/forward.png",width:16,height:16,layoutAlign:"center",visFieldsGrid:_1,hidFieldsGrid:_5,click:"this.hidFieldsGrid.transferSelectedData(this.visFieldsGrid)"})]}),_5]});this.addItem(_6);var _7=this.createAutoChild("okButton",{autoDraw:false,title:"Done",fieldEditor:this,click:function(){this.creator.okClick()},layoutAlign:"center"},isc.IButton);this.addItem(_7)}
+,isc.A.okClick=function isc_FieldEditor_okClick(){var _1=isc.clone(this.visibleFieldsGrid.data);var _2=isc.clone(this.hiddenFieldsGrid.data);_1.setProperty("visible",null);_2.setProperty("visible",false);_1.addList(_2);var _3=_1.getProperties(["name","visible"]);this.done(_1,_3);this.hide();this.destroy()}
+,isc.A.done=function isc_FieldEditor_done(_1,_2){}
+);isc.B._maxIndex=isc.C+3}
+isc.ClassFactory.defineClass("FormulaBuilder","VLayout");isc.A=isc.FormulaBuilder.getPrototype();isc.A.vertical=true;isc.A.padding=10;isc.A.showFormulaField=true;isc.A.formulaFieldDefaults={type:"text",formItemType:"AutoFitTextAreaItem",height:20,width:"*",hoverWidth:300,keyPress:function(){if(this.form.creator.autoTest){this.fireOnPause("autoTest",{target:this.form.creator,methodName:"testFunction"},this.form.creator.autoTestDelay)}}};isc.A.showTitleField=true;isc.A.titleFieldDefaults={type:"text",width:"*"};isc.A.showHelpIcon=true;isc.A.helpIconDefaults={src:"[SKIN]actions/help.png"};isc.A.autoHideCheckBoxLabel="Auto hide fields used in formula";isc.A.showAutoHideCheckBox=true;isc.A.autoHideCheckBoxDefaults={type:"boolean"};isc.A.builderTypeText="Formula";isc.A.helpTextIntro="For basic arithmetic, type in symbols (+-/%) directly.<P>The following functions are also available:";isc.A.fieldKeyDefaults={_constructor:"ListGrid",leaveScrollbarGap:false,showResizeBar:true,autoFitData:"vertical",autoFitMaxRecords:6,autoFetchData:true,showRollOver:false,selectionType:"none",defaultFields:[{name:"mappingKey",width:40},{name:"title"},{name:"sourceDS",showIf:"list.creator.dataSources != null"},{name:"name",showIf:"false"},{name:"type",showIf:"false"},{name:"length",showIf:"false"}],recordClick:function(_1,_2){var _3=this.creator.formulaField;if(_3){var _4=_3.getEnteredValue()||"";var _5=_3.getSelectionRange();if(_5!=null){_4=_4.substring(0,_5[0])+_2.mappingKey+_4.substring(_5[1])}else{_4+=_2.mappingKey}
+_3.setValue(_4);_3.focusInItem();if(this.creator.autoTest){this.fireOnPause("autoTest",{target:this.creator,methodName:"testFunction"},this.creator.autoTestDelay)}}}};isc.A.instructionsTextStart="The following fields are available for use in this \${builderType}";isc.A.instructionsDefaults={_constructor:"Label",height:1,extraSpace:10,overflow:"visible"};isc.A.titleFormDefaults={_constructor:"DynamicForm",extraSpace:5};isc.A.formulaFormDefaults={_constructor:"DynamicForm",extraSpace:5};isc.A.hideFieldsFormDefaults={_constructor:"DynamicForm",extraSpace:20};isc.A.sampleHeaderDefaults={_constructor:"Label",height:15,extraSpace:5};isc.A.sampleLabelDefaults={_constructor:"Canvas",height:40,width:"100%",align:"center",valign:"top",extraSpace:10,showHover:true,overflow:"hidden",styleName:"sampleOutput"};isc.A.messageLabelDefaults={_constructor:"Label",height:20,width:"100%",align:"right",valign:"center",overflow:"hidden",showHover:true};isc.A.buttonLayoutDefaults={_constructor:"HLayout",width:"100%",align:"right"};isc.A.cancelButtonDefaults={_constructor:"IButton",autoParent:"buttonLayout",autoFit:true,extraSpace:10,click:function(){this.creator.completeEditing(true)}};isc.A.testButtonDefaults={_constructor:"IButton",autoParent:"buttonLayout",autoFit:true,extraSpace:10,click:function(){this.creator.testFunction()}};isc.A.saveAddAnotherButtonDefaults={_constructor:"IButton",autoParent:"buttonLayout",autoFit:true,extraSpace:10,click:function(){if(!this.creator.showTitleForm||this.creator.titleForm.validate())this.creator.saveAddAnother()}};isc.A.saveButtonDefaults={_constructor:"IButton",autoParent:"buttonLayout",autoFit:true,click:function(){if(!this.creator.showTitleForm||this.creator.titleForm.validate())this.creator.save()}};isc.A.fieldType="float";isc.A.allowEscapedKeys=false;isc.A.invalidBuilderPrompt="Invalid \${builderType}: \${errorText}";isc.A.defaultErrorText="[No Explicit Error]";isc.A.invalidBlankPrompt="Invalid blank \${builderType}";isc.A.validBuilderPrompt="Valid \${builderType}";isc.A.helpWindowTitle="\${builderType} Help";isc.A.titleFieldTitle="Title";isc.A.defaultNewFieldTitle="New Field";isc.A.keyColumnTitle="Key";isc.A.sourceFieldColumnTitle="Source Field";isc.A.sourceDSColumnTitle="Source DataSource";isc.A.cancelButtonTitle="Cancel";isc.A.saveAddAnotherButtonTitle="Save & Add Another";isc.A.saveButtonTitle="Save";isc.A.saveConfirmationPrompt="Save changes to this \${builderType}?";isc.A.invalidGeneratedFunctionPrompt="The generated function is invalid - Check your \${builderType} and retry.";isc.A.sampleHeaderTitle="Sample:";isc.A.testButtonTitle="Test";isc.A=isc.FormulaBuilder.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.warnDuplicateTitlesMessage="Another field already has the title '${fieldTitle}'. Continue anyway?";isc.A.autoTest=true;isc.A.autoTestDelay=200;isc.A.samplePrompt="<nobr>For Record: ${title}</nobr><br><nobr>Output: ${output}</nobr>";isc.B.push(isc.A.getValue=function isc_FormulaBuilder_getValue(){return this.formulaField?this.formulaField.getValue():null}
+,isc.A.setValue=function isc_FormulaBuilder_setValue(_1){if(this.formulaField){this.formulaField.setValue(_1)}}
+,isc.A.setFormula=function isc_FormulaBuilder_setFormula(_1){this.setValue(_1)}
+,isc.A.getFieldIdProperty=function isc_FormulaBuilder_getFieldIdProperty(){return this.getClass().getFieldIdProperty(this.component)}
+,isc.A.getTitle=function isc_FormulaBuilder_getTitle(){return this.titleField?this.titleField.getValue():null}
+,isc.A.setTitle=function isc_FormulaBuilder_setTitle(_1){if(this.titleField){this.titleField.setValue(_1)}}
+,isc.A.getFieldFromMappingKey=function isc_FormulaBuilder_getFieldFromMappingKey(_1){var _2=this.getAvailableFields();for(var i=0;i<_2.length;i++){var _4=_2.get(i);if(_4.mappingKey==_1)return _4}
+return null}
+,isc.A.getFields=function isc_FormulaBuilder_getFields(){if(this.fields)return this.fields;if(this.component)return this.component.getAllFields();var _1;if(this.dataSources){_1=[];for(var i=0;i<this.dataSources.length;i++){var _3=this.dataSources[i],_4=_3.getFields();for(var _5 in _4){var _6=isc.addProperties({},_4[_5],{name:_3.getID()+"."+_5,sourceDS:_3.getID()});_1.add(_6)}}}else{_1=isc.getValues(this.dataSource.getFields())}
+return _1}
+,isc.A.shouldHideUsedFields=function isc_FormulaBuilder_shouldHideUsedFields(){if(this.showAutoHideCheckBox&&this.autoHideCheckBox&&this.autoHideCheckBox.getValue()){return this.autoHideCheckBox.getValue()}else return false}
+,isc.A.getHelpText=function isc_FormulaBuilder_getHelpText(){return this.getHoverText()}
+,isc.A.initWidget=function isc_FormulaBuilder_initWidget(){this.Super("initWidget",arguments);if(this.dataSource)this.dataSource=isc.DataSource.get(this.dataSource);if(this.dataSources){var _1=[];for(var i=0;i<this.dataSources.length;i++){_1[i]=isc.DataSource.get(this.dataSources[i])}}
+var _3=this.getAvailableFields();if(!this.field){this.field={name:this.getUniqueFieldName(),title:this.defaultNewFieldTitle,type:this.fieldType,width:"50",canFilter:false,canSortClientOnly:true,originalOrder:this.availableFields.length}}
+this.instructions=this.createAutoChild("instructions",{contents:this.instructionsTextStart.evalDynamicString(this,{builderType:this.builderTypeText})});this.addMember(this.instructions);this.fieldKeyDS=isc.DataSource.create({ID:this.getID()+"DS",clientOnly:true,testData:_3,fields:[{name:"mappingKey",title:this.keyColumnTitle,width:40},{name:"title",title:this.sourceFieldColumnTitle},{name:"sourceDS",title:this.sourceDSColumnTitle,showIf:"false"},{name:"name",showIf:"false",primaryKey:true},{name:"type",showIf:"false"},{name:"length",showIf:"false"}]});this.fieldKey=this.createAutoChild("fieldKey",{dataSource:this.fieldKeyDS});if(this.fieldKey.showFilterEditor!==false&&this.fieldKey.autoFitMaxRecords&&_3.length>this.fieldKey.autoFitMaxRecords)
+{this.fieldKey.setShowFilterEditor(true)}
+this.addMember(this.fieldKey);if(this.showTitleField){this.addAutoChild("titleForm",{fields:[isc.addProperties(this.titleFieldDefaults,this.titleFieldProperties,{title:this.titleFieldTitle,name:"titleField"})]});this.titleField=this.titleForm.getField("titleField");this.setTitle(this.field.title||isc.DataSource.getAutoTitle(this.field.name))}
+if(this.showFormulaField){this.addAutoChild("formulaForm",{fields:[isc.addProperties({title:this.builderTypeText},this.formulaFieldDefaults,this.formulaFieldProperties,this.showHelpIcon?{icons:[isc.addProperties({prompt:this.getHelpText()},this.helpIconDefaults,this.helpIconProperties,{click:"form.creator.showHelpWindow();"})]}:{},{name:"formulaField"})]});this.formulaField=this.formulaForm.getField("formulaField");if(this.showHelpIcon)this.helpIcon=this.formulaField.icons[0]}
+this.addAutoChild("messageLabel");this.addAutoChild("sampleHeader",{contents:this.sampleHeaderTitle});this.addAutoChild("sampleLabel");if(this.showAutoHideCheckBox){this.addAutoChild("hideFieldsForm",{fields:[isc.addProperties({title:this.autoHideCheckBoxLabel},this.autoHideCheckBoxDefaults,this.autoHideCheckBoxProperties,{name:"autoHide"})]});this.autoHideCheckBox=this.hideFieldsForm.getField("autoHide")}
+this.addAutoChild("buttonLayout");this.addAutoChild("cancelButton",{title:this.cancelButtonTitle});if(!this.autoTest)this.addAutoChild("testButton",{title:this.testButtonTitle});this.addAutoChild("saveAddAnotherButton",{title:this.saveAddAnotherButtonTitle});this.addAutoChild("saveButton",{title:this.saveButtonTitle});if(this.showTitleField)this.titleForm.focusInItem(this.titleField);else this.formulaForm.focusInItem(this.formulaField);this.setInitialValue();if(this.editMode&&this.autoTest)this.testFunction()}
+,isc.A.getUniqueFieldName=function isc_FormulaBuilder_getUniqueFieldName(){return this.getNewUniqueFieldName("formulaField")}
+,isc.A.getNewUniqueFieldName=function isc_FormulaBuilder_getNewUniqueFieldName(_1){if(!_1||_1=="")_1="field";var _2=this.getFields(),_3=1,_4=_1.length;for(var i=0;i<_2.length;i++){var _6=_2.get(i);if(_6.name.startsWith(_1)){var _7=_6.name.substr(_4),_8=new Number(_7);if(_8&&_8>=_3)_3=_8+1}}
+return _1+_3}
+,isc.A.destroy=function isc_FormulaBuilder_destroy(){if(this.fieldKeyDS)this.fieldKeyDS.destroy();this.Super("destroy",arguments)}
+,isc.A.setInitialValue=function isc_FormulaBuilder_setInitialValue(){if(this.editMode&&this.field.userFormula){this.initialValue=this.field.userFormula.text;if(this.field.userFormula.allowEscapedKeys)
+this.allowEscapedKeys=this.field.userFormula.allowEscapedKeys}
+this.initialValue=this.initialValue||"";this.setValue(this.initialValue)}
+,isc.A.showHelpWindow=function isc_FormulaBuilder_showHelpWindow(){var _1=this.locatorParent,_2=_1?_1.getTop():this.top,_3=_1?_1.getLeft():this.left,_4=_1?_1.getWidth():this.width,_5=_1?_1.getVisibleHeight():this.getVisibleHeight();if(_1)_1.centerInPage();if(this.helpWindow&&this.helpWindow!=null){this.hideHelpWindow()}else{this.helpIcon.prompt=null;this.formulaField.stopHover();_3-=(_4/ 2);if(_1)_1.setLeft(_3);this.helpWindow=isc.Window.create({autoDraw:true,title:this.helpWindowTitle.evalDynamicString(this,{builderType:this.builderTypeText}),showMinimizeButton:false,showMaximizeButton:false,showCloseButton:false,isModal:false,headerIconProperties:{src:"[SKIN]actions/help.png"},items:[isc.Label.create({contents:this.getHelpText(),padding:10})]});this.helpWindow.moveTo(_3+_4,_2);this.helpWindow.resizeTo(_4,_5)}}
+,isc.A.hideHelpWindow=function isc_FormulaBuilder_hideHelpWindow(){if(this.helpWindow){this.helpWindow.destroy();this.helpWindow=null}
+this.helpIcon.prompt=this.getHelpText();this.formulaField.stopHover()}
+,isc.A.getHoverText=function isc_FormulaBuilder_getHoverText(){var _1=isc.SB.create();_1.append("<b>",this.helpTextIntro,"</b> <P>");_1.append("<ul>");var _2=isc.MathFunction.getRegisteredFunctionIndex(),_3=this.mathFunctions;if(_3&&_3.length>0){for(var i=0;i<_3.length;i++){var _5=_2[_3[i]];_1.append("<li> <b>",_5.name,": </b> ",_5.description,"<p>");_1.append("<i>usage: ",_5.usage,"</i> </li>")}}
+_1.append("</ul>");return _1.toString()}
+,isc.A.getAvailableFields=function isc_FormulaBuilder_getAvailableFields(){if(!this.availableFields){this.availableFields=this.getClass().getAvailableFields(this.getFields(),this.field)}
+return this.availableFields}
+,isc.A.getUsedFields=function isc_FormulaBuilder_getUsedFields(){return this.getClass().getUsedFields(this.getValue(),this.getAvailableFields(),this.field)}
+,isc.A.getCompleteValueObject=function isc_FormulaBuilder_getCompleteValueObject(){var _1=this.getUsedFields(),_2=this.generateFunction(),_3={sortNormalizer:_2,$65w:_2,type:this.fieldType,userFormula:{text:this.getValue(),formulaVars:{}}},_4=this.getFieldIdProperty();if(this.allowEscapedKeys)_3.userFormula.allowEscapedKeys=true;for(var i=0;i<_1.length;i++){var _6=_1.get(i);_3.userFormula.formulaVars[_6.mappingKey]=_6[_4]}
+return _3}
+,isc.A.getBasicValueObject=function isc_FormulaBuilder_getBasicValueObject(){var _1=this.getUsedFields(),_2={text:this.getValue(),formulaVars:{}},_3=this.getFieldIdProperty();if(this.allowEscapedKeys)_2.allowEscapedKeys=true;for(var i=0;i<_1.length;i++){var _5=_1.get(i);_2.formulaVars[_5.mappingKey]=_5[_3]}
+return _2}
+,isc.A.getUpdatedFieldObject=function isc_FormulaBuilder_getUpdatedFieldObject(){return isc.addProperties(this.field,{title:this.getTitle()},this.getCompleteValueObject())}
+,isc.A.testFunction=function isc_FormulaBuilder_testFunction(){var _1=this.getClass().testFunction(this.field,this.getBasicValueObject(),this.component,this.getFields());var _2="",_3=_1.errorText||this.defaultErrorText;if(_1.failedGeneration||_1.failedExecution){_2=this.invalidBuilderPrompt.evalDynamicString(this,{builderType:this.builderTypeText,errorText:_3})}else if(_1.emptyTestValue){_2=this.invalidBlankPrompt.evalDynamicString(this,{builderType:this.builderTypeText})}else{_2=this.validBuilderPrompt.evalDynamicString(this,{builderType:this.builderTypeText})}
+this.setTestMessage(_2);this.setSamplePrompt(this.getSamplePrompt(_1));return _1}
+,isc.A.getTestRecord=function isc_FormulaBuilder_getTestRecord(){if(this.testRecord)return this.testRecord;return this.getClass().getTestRecord(this.component,this.getAvailableFields())}
+,isc.A.setTestMessage=function isc_FormulaBuilder_setTestMessage(_1){this.messageLabel.setContents(_1)}
+,isc.A.setSamplePrompt=function isc_FormulaBuilder_setSamplePrompt(_1){this.sampleLabel.setContents("<center>"+_1+"</center>")}
+,isc.A.generateFunction=function isc_FormulaBuilder_generateFunction(){return this.getClass().generateFunction(this.getBasicValueObject(),this.getUsedFields(),this.component)}
+,isc.A.saveAddAnother=function isc_FormulaBuilder_saveAddAnother(){this.restartBuilder=true;this.save()}
+,isc.A.fieldTitleIsUnique=function isc_FormulaBuilder_fieldTitleIsUnique(_1){var _2=this.component?this.component.getAllFields():null,_3=_2?_2.findAll({"title":_1}):null,_4=true;if(_3&&_3.length>0){for(var i=0;i<_3.length;i++){if(_3[i].name!=this.field.name){_4=false;break}}}
+return _4}
+,isc.A.save=function isc_FormulaBuilder_save(){var _1=this.testFunction();if(this.warnDuplicateTitles&&!this.duplicateTitleAccepted){var _2=this.getTitle();if(!this.fieldTitleIsUnique(_2)){var _3=this.warnDuplicateTitlesMessage.evalDynamicString(this,{fieldTitle:_2})
+var _4=this;isc.confirm(_3,function(_5){if(_5){_4.duplicateTitleAccepted=true;_4.delayCall("save")}else{_4.restartBuilder=false}});return null}}
+delete this.duplicateTitleAccepted;if(_1.emptyTestValue){isc.warn(this.invalidBlankPrompt.evalDynamicString(this,{builderType:this.builderTypeText}));return}else if(_1.failedGeneration||_1.failedExecution){isc.warn(this.invalidGeneratedFunctionPrompt.evalDynamicString(this,{builderType:this.builderTypeText}));return}
+this.completeEditing(false)}
+,isc.A.completeEditing=function isc_FormulaBuilder_completeEditing(_1,_2){this.cancelled=_1;if(_1){if(this.editMode&&!_2){if(this.getValue()!=this.initialValue){var _3=this;var _4=this.saveConfirmationPrompt.evalDynamicForm(this,{builderType:this.builderTypeText});isc.confirm(_4,function(_5){if(_5){_3.save()}else{_3.completeEditing(true,true)}});return}}}
+if(this.helpWindow)this.hideHelpWindow();if(this.availableFields){this.availableFields=this.availableFields.sortByProperty("originalOrder",true);this.availableFields.clearProperty("originalOrder")}
+this.fireOnClose()}
+,isc.A.fireOnClose=function isc_FormulaBuilder_fireOnClose(){}
+,isc.A.getSamplePrompt=function isc_FormulaBuilder_getSamplePrompt(_1){var _2=this.dataSource?this.dataSource.getTitleField():isc.firstKey(_1.record),_3=_1.result!=null?_1.result:this.invalidBuilderPrompt.evalDynamicString(this,{builderType:this.builderTypeText,errorText:_1.errorText||this.defaultErrorText}),_4=_1.record[_2];return this.samplePrompt.evalDynamicString(this,{title:_4,output:_3})}
+);isc.B._maxIndex=isc.C+34;isc.A=isc.FormulaBuilder;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.mappingKeyForIndex=function isc_c_FormulaBuilder_mappingKeyForIndex(_1){var _2="",_3=Math.floor(_1/(26*27)),_4=_1%(26*26),_5=Math.floor(_4/ 26);if(_3>=1)_2+=String.fromCharCode(65+(_3-1));if(_5>=1){if(_3>=1){_2+=String.fromCharCode(65+(_5-1));_2+=String.fromCharCode(65+(_1-(26*27))%26)}else{_2+=String.fromCharCode(65+(_5-1));_2+=String.fromCharCode(65+_1%26)}}else{if(_3>=1){_2+=String.fromCharCode(65)}
+_2+=String.fromCharCode(65+_1%26)}
+return _2}
+,isc.A.getFieldIdProperty=function isc_c_FormulaBuilder_getFieldIdProperty(_1){return _1?_1.fieldIdProperty:"name"}
+,isc.A.getAvailableFields=function isc_c_FormulaBuilder_getAvailableFields(_1,_2){var _3=[],j=0;if(!_1)return _3;for(var i=0;i<_1.getLength();i++){var _6=_1.get(i),_7=_6.type;_6.originalOrder=i;if(_2&&_2.name==_6.name)continue;if(_6.userFormula||isc.SimpleType.inheritsFrom(_7,"integer")||isc.SimpleType.inheritsFrom(_7,"float"))
+{_6.mappingKey=isc.FormulaBuilder.mappingKeyForIndex(j++);if(!_6.title)_6.title=isc.DataSource.getAutoTitle(_6.name);_3.add(_6)}}
+var _8=_2&&_2.userFormula?_2.userFormula.formulaVars:{};for(var _9 in _8){var _10=_3.find("mappingKey",_9),_11=_3.find("name",_8[_9]),_12=_11.mappingKey;_11.mappingKey=_10.mappingKey;_10.mappingKey=_12}
+_3=_3.sortByProperties(["mappingKey"],[true],[function(_6,_14,_15){var _13=_6[_14];if(_13.length==1)_13=' '+_13;else if(_13.length==2)_13=' '+_13;return _13}]);return _3}
+,isc.A.getUsedFields=function isc_c_FormulaBuilder_getUsedFields(_1,_2,_3){var _4=this.getAvailableFields(_2,_3),_5=[];if(!_4||!_1)return _5;_4=_4.sortByProperties(["mappingKey"],[false],[function(_8,_9,_10){var _6=_8[_9];if(_6.length==1)_6=' '+_6;else if(_6.length==2)_6=' '+_6;return _6}]);for(var i=0;i<_4.length;i++){var _8=_4.get(i);if(this.allowEscapedKeys){if(_1.indexOf("#"+_8.mappingKey)>=0||_1.indexOf("#{"+_8.mappingKey+"}")>=0)
+{_5.add(_8)}}else if(_1.indexOf(_8.mappingKey)>=0){_5.add(_8)}}
+return _5}
+,isc.A.getFieldDetailsFromValue=function isc_c_FormulaBuilder_getFieldDetailsFromValue(_1,_2,_3){var _4=_1,_5=this.getFieldIdProperty(_3),_6={usedFields:[],missingFields:[]};for(var _7 in _4){var _8=_4[_7],_9=_2.findIndex(_5,_8);if(!_2[_9]){isc.logWarn("Field "+_8+" is not in the list of available-fields");_6.missingFields.add(_8)}else{var _10=isc.addProperties({},_2[_9]);_10.mappingKey=_7;_6.usedFields.add(_10)}}
+return _6}
+,isc.A.testFunction=function isc_c_FormulaBuilder_testFunction(_1,_2,_3,_4){var _5={};try{_5.component=_3;_5.record=this.getTestRecord(_3,_4);if(_2.text==""){_5.emptyTestValue=true;return _5}
+_5.jsFunction=this.generateFunction(_2,_4,_3);_5.result=_5.jsFunction(_5.record,_3)}catch(err){if(!_5.jsFunction)_5.failedGeneration=true;_5.failedExecution=true;_5.errorText=err.message}
+return _5}
+,isc.A.getTestRecord=function isc_c_FormulaBuilder_getTestRecord(_1,_2){var _3=this.getFieldIdProperty(_1),_4;if(_1){_4=_1.getSelectedRecord();if(!_4){if(_1.body){var _5=_1.body.getVisibleRows();_4=_5?_1.getRecord(_5[0]):_1.data.get(0)}else{_4=_1.data.get(0)}}}
+if(!_4&&_2){_4={};for(var i=0;i<_2.length;i++){var _7=_2.get(i);if(_7.userFormula){_7.$65w=_7.sortNormalizer=isc.FormulaBuilder.generateFunction(_7.userFormula,_2,_1)}
+if(_7.$65w){isc.DataSource.setPathValue(_4,_7[_3],_7.$65w(_4,_1))}else if(_7.type)
+if(isc.SimpleType.inheritsFrom(_7.type,"integer")||isc.SimpleType.inheritsFrom(_7.type,"float"))
+{isc.DataSource.setPathValue(_4,_7[_3],1)}else{isc.DataSource.setPathValue(_4,_7[_3],_7[_3])}
+else{isc.DataSource.setPathValue(_4,_7[_3],_7[_3])}}}
+return _4}
+,isc.A.generateFunction=function isc_c_FormulaBuilder_generateFunction(_1,_2,_3,_4){var _5=isc.SB.create(),_6=_1.text,_7=this.getFieldIdProperty(_3),_8=this.getFieldDetailsFromValue(_1.formulaVars,_2,_3),_9=_8.usedFields,_10=_8.missingFields;_9=_9.sortByProperties(["mappingKey"],[false],[function(_13,_18,_19){var _11=_13[_18];if(_11.length==1)_11=' '+_11;else if(_11.length==2)_11=' '+_11;return _11}]);if(_10.length==0){if(_9.length>0){for(var i=0;i<_9.length;i++){var _13=_9.get(i);var _14=_13[_7];_5.append("var ");_5.append(_13.mappingKey,"=isc.DataSource.getPathValue(record,'",_14,"');","\nif(",_13.mappingKey,"==null)",_13.mappingKey,"= (component ? component.getStandaloneFieldValue(record, '",_14,"', true) : "+(_4?"null)":"0)"));_5.append(";\n");if(_1.allowEscapedKeys){_6=_6.replaceAll("#"+_13.mappingKey,_13.mappingKey);_6=_6.replaceAll("#{"+_13.mappingKey+"}",_13.mappingKey)}}
+_5.append("\n")}
+var _15=isc.MathFunction.getRegisteredFunctions();if(_15&&_15.length>0){_5.append("var functions=isc.MathFunction.getRegisteredFunctionIndex(),\n");for(var i=0;i<_15.length;i++){var _13=_15.get(i);_5.append(" ");_5.append(_13.name,"=","functions.",_13.name,".jsFunction");_5.append(i==_15.length-1?";":",","\n")}
+_5.append("\n")}
+_5.append("var value=",_6,";",(_4?null:"if (isNaN(value)) return (component && component.badFormulaResultValue) || '.'; "),"return value;")}else{this.logWarn("Formula failed due to missing fields: "+_10.join(", ")+".");var _11=(_3&&_3.badFormulaResultValue)||".";if(_11)_11="'"+_11+"'";_5.append("return ",_11,";")}
+var _16=_5.toString();var _17=new Function("record,component",_16);return _17}
+);isc.B._maxIndex=isc.C+8;isc.ClassFactory.defineClass("SummaryBuilder","FormulaBuilder");isc.A=isc.SummaryBuilder.getPrototype();isc.A.builderTypeText="Summary";isc.A.fieldType="text";isc.A.autoHideCheckBoxLabel="Auto hide fields used in Summary";isc.A.helpTextIntro="Building Summary Columns";isc.A.allowBasicMultiCharKeys=false;isc.A=isc.SummaryBuilder.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setSummary=function isc_SummaryBuilder_setSummary(_1){this.setValue(_1)}
+,isc.A.setInitialValue=function isc_SummaryBuilder_setInitialValue(){if(this.editMode&&this.field.userSummary){this.initialValue=this.field.userSummary.text}
+this.initialValue=this.initialValue||"";this.setValue(this.initialValue)}
+,isc.A.getUniqueFieldName=function isc_SummaryBuilder_getUniqueFieldName(){return this.getNewUniqueFieldName("summaryField")}
+,isc.A.getHoverText=function isc_SummaryBuilder_getHoverText(){var _1=isc.SB.create(),_2=this.getTestRecord(),_3=this.getFieldIdProperty(),_4=this.getFieldFromMappingKey("A"),_5=_4[_3],_6=_4?_4.title||_4.name:null,_7=this.getFieldFromMappingKey("B"),_8=_7?_7[_3]:null,_9=_7?_7.title||_7.name:null;_1.append("<b>",this.helpTextIntro,"</b> <P>");_1.append("Summary columns are user-created fields that combine dynamic-values "+"from other fields in the current record with static text specified by the user.<P>");_1.append("Dynamic-values are specified by prefixing a mapping-key from the table "+"opposite with #");if(this.getFields().length>26)_1.append(", or by using #{key} when the key "+"is 2 or more characters long,");_1.append(" and everything else is copied directly into the output.<P>");if(this.dataSource){_1.append("For example, in the current DataSource, key <b>A</b> maps to field <i>",_6,"</i> and <b>B</b> is <i>",!_7?"missing":_9,"</i>.<P>");_1.append("So, if we enter the Summary format-string as:<P>","<i>#A is relative to #B</i><P>","then example output using the current data would look like:<P>");if(_2){_1.append("<i>",_2[_5]," is relative to ",!_7?"{missing}":_2[_8],"</i><P>")}}
+return _1.toString()}
+,isc.A.getAvailableFields=function isc_SummaryBuilder_getAvailableFields(){if(!this.availableFields){this.availableFields=this.getClass().getAvailableFields(this.getFields(),this.field)}
+return this.availableFields}
+,isc.A.getUsedFields=function isc_SummaryBuilder_getUsedFields(){return this.getClass().getUsedFields(this.getValue(),this.getAvailableFields(),this.allowBasicMultiCharKeys,this.field)}
+,isc.A.getCompleteValueObject=function isc_SummaryBuilder_getCompleteValueObject(){var _1=this.getUsedFields(),_2=this.generateFunction(),_3=this.getFieldIdProperty(),_4={sortNormalizer:_2,$652:_2,type:this.fieldType,userSummary:{text:this.getValue()}};if(_1&&_1.length>0){_4.userSummary.summaryVars={};for(var i=0;i<_1.length;i++){var _6=_1.get(i);_4.userSummary.summaryVars[_6.mappingKey]=_6[_3]}}
+return _4}
+,isc.A.getBasicValueObject=function isc_SummaryBuilder_getBasicValueObject(){var _1=this.getUsedFields(),_2=this.getFieldIdProperty(),_3={text:this.getValue(),summaryVars:{}};for(var i=0;i<_1.length;i++){var _5=_1.get(i);_3.summaryVars[_5.mappingKey]=_5[_2]}
+return _3}
+,isc.A.generateFunction=function isc_SummaryBuilder_generateFunction(){return this.getClass().generateFunction(this.getBasicValueObject(),this.getUsedFields(),this.component)}
+,isc.A.initWidget=function isc_SummaryBuilder_initWidget(){this.Super("initWidget",arguments)}
+);isc.B._maxIndex=isc.C+10;isc.A=isc.SummaryBuilder;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getAvailableFields=function isc_c_SummaryBuilder_getAvailableFields(_1,_2){var _3=[];if(!_1)return _3;for(var i=0,j=0;i<_1.getLength();i++){var _6=_1.get(i);if(_2&&_2.name==_6.name)continue;_6.originalOrder=i;_6.mappingKey=isc.FormulaBuilder.mappingKeyForIndex(j++);if(!_6.title)_6.title=isc.DataSource.getAutoTitle(_6.name);_3.add(_6)}
+var _7=_2&&_2.userSummary?_2.userSummary.summaryVars:{};for(var _8 in _7){var _9=_3.find("mappingKey",_8),_10=_3.find("name",_7[_8]),_11=_10.mappingKey;_10.mappingKey=_9.mappingKey;_9.mappingKey=_11}
+_3=_3.sortByProperties(["mappingKey"],[true],[function(_6,_13,_14){var _12=_6[_13];if(_12.length==1)_12=' '+_12;else if(_12.length==2)_12=' '+_12;return _12}]);return _3}
+,isc.A.getUsedFields=function isc_c_SummaryBuilder_getUsedFields(_1,_2,_3,_4){var _5=this.getAvailableFields(_2,_4),_6=[];if(!_5||!_1)return _6;_5=_5.sortByProperties(["mappingKey"],[false],[function(_9,_10,_11){var _7=_9[_10];if(_7.length==1)_7=' '+_7;else if(_7.length==2)_7=' '+_7;return _7}]);for(var i=0;i<_5.length;i++){var _9=_5.get(i);if(_1.indexOf("#{"+_9.mappingKey+"}")>=0)
+_6.add(_9);else if((_9.mappingKey.length==1||_3)&&_1.indexOf("#"+_9.mappingKey)>=0)_6.add(_9)}
+return _6}
+,isc.A.testFunction=function isc_c_SummaryBuilder_testFunction(_1,_2,_3,_4){var _5={},_6=this.getFieldIdProperty(_3);try{_5.component=_3;_5.record=this.getTestRecord(_3,_4);if(_2.text==""){_5.emptyTestValue=true;return _5}
+_5.jsFunction=this.generateFunction(_2,_4,_3);_5.result=_5.jsFunction(_5.record,_1[_6],_3)}catch(err){if(!_5.jsFunction)_5.failedGeneration=true;_5.failedExecution=true;_5.errorText=err.message}
+return _5}
+,isc.A.generateFunction=function isc_c_SummaryBuilder_generateFunction(_1,_2,_3){var _4=isc.SB.create(),_5=_1.text,_6=this.getFieldIdProperty(_3),_7=this.getFieldDetailsFromValue(_1.summaryVars,_2,_3),_8=_7.usedFields,_9=_7.missingFields;_8=_8.sortByProperties(["mappingKey"],[false],[function(_12,_15,_16){var _10=_12[_15];if(_10.length==1)_10=' '+_10;else if(_10.length==2)_10=' '+_10;return _10}]);if(_8.length>0){_4.append("var ");for(var i=0;i<_8.length;i++){var _12=_8.get(i);if(i>0)_4.append(" ");_4.append(_12.mappingKey,"=(component ? component.getStandaloneFieldValue(record,'",_12[_6],"') : record['",_12[_6],"']");_4.append(i==_8.length-1?");":"),","\n");_5=_5.replaceAll("#{"+_12.mappingKey+"}","'+"+_12.mappingKey+"+'");_5=_5.replaceAll("#"+_12.mappingKey,"'+"+_12.mappingKey+"+'")}
+_4.append("\n")}
+_5=_5.replace(/(#({[A-Z][A-Z]?}|[A-Z][A-Z]?))/g,(_3&&_3.missingSummaryFieldValue)||"-");if(_5.substr(0,2)=="'+"){_5=_5.substr(2)}else if(_5.substr(0,1)!="'"){_5="'"+_5}
+if(_5.substr(_5.length-2)=="+'"){_5=_5.substr(0,_5.length-2)}else if(_5.substr(_5.length-1)!="'"){_5=_5+"'"}
+_4.append("return ",_5,";");var _13=_4.toString(),_14=new Function("record,fieldName,component",_13);return _14}
+);isc.B._maxIndex=isc.C+4;isc.defineClass("HiliteRule","HLayout");isc.A=isc.HiliteRule.getPrototype();isc.A.height=1;isc.A.width="100%";isc.A.overflow="visible";isc.A.clauseConstructor="FilterClause";isc.A.clauseProperties={width:"100%",fieldPickerWidth:"*",clauseDefaults:{canEditField:function(){return true}},operatorPickerWidth:140,valueItemWidth:130,excludeNonFilterableFields:false};isc.A.hiliteFormDefaults={_constructor:"DynamicForm",numCols:3,colWidths:[90,40,80],width:210,items:[{name:"colorType",type:"SelectItem",showTitle:false,valign:"center",valueMap:{foreground:"Foreground",background:"Background"},defaultValue:"foreground",width:"*"},{name:"color",title:"Color",type:"ColorItem",width:"*"}]};isc.A.advancedClauseLayoutDefaults={_constructor:"HLayout",height:1,width:"100%"};isc.A.advancedClauseLabelDefaults={_constructor:"Label",autoParent:"advancedClauseLayout",width:"*",overflow:"hidden",height:18,valign:"center",wrap:false,padding:1};isc.A.advancedClauseEditButtonDefaults={_constructor:"ImgButton",autoParent:"advancedClauseLayout",width:18,height:18,layoutAlign:"center",src:"[SKINIMG]/actions/edit.png",showRollOver:false,showDown:false,showDisabled:false,click:function(){this.creator.editAdvancedRule()}};isc.A.showRemoveButton=true;isc.A.removeButtonPrompt="Remove";isc.A.removeButtonDefaults={_constructor:isc.ImgButton,width:18,height:18,layoutAlign:"center",src:"[SKIN]/actions/remove.png",showRollOver:false,showDown:false,showDisabled:false,hoverWidth:80,click:function(){this.creator.remove()}};isc.A=isc.HiliteRule.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_HiliteRule_initWidget(){if(!this.isAdvanced&&this.hilite){var _1=this.hilite.criteria;if(_1&&_1.criteria&&isc.isAn.Array(_1.criteria))
+this.isAdvanced=true}
+if(isc.isA.String(this.dataSource))this.dataSource=isc.DS.getDataSource(this.dataSource);if(this.hilite)this.checkHiliteProperties(this.hilite);if(this.isAdvanced){var _2=isc.FilterBuilder.getFilterDescription(this.hilite.criteria,this.dataSource);var _3=(_2.indexOf(isc.FilterBuilder.missingFieldPrompt)>=0);this.membersMargin=2;this.addAutoChild("advancedClauseLayout");this.addAutoChild("removeButton",{disabled:_3?true:false,autoParent:"advancedClauseLayout"});this.addAutoChild("advancedClauseLabel",{contents:_2,prompt:_2,disabled:_3?true:false});this.addAutoChild("advancedClauseEditButton",{disabled:_3?true:false})}else{var _3=(this.dataSource.getField(this.fieldName)==null);this.addAutoChild("clause",{dataSource:this.dataSource,field:this.dataSource.getField(this.fieldName),fieldName:this.fieldName,criterion:this.hilite?this.hilite.criteria:null,showRemoveButton:this.showRemoveButton,disabled:_3?true:false,remove:function(){this.creator.remove()}});this.addMember(this.clause);this.addAutoChild("hiliteForm",{disabled:_3?true:false});if(this.hilite){this.hiliteForm.setValues({colorType:(this.hilite.textColor?"foreground":"background"),color:(this.hilite.textColor?this.hilite.textColor:this.hilite.backgroundColor)})}
+this.addMember(this.hiliteForm)}}
+,isc.A.checkHiliteProperties=function isc_HiliteRule_checkHiliteProperties(_1){if(!_1)return;if(_1.cssText){var _2=_1.cssText.split(";");for(var i=0;i<_2.length;i++){var _4=_2[i],_5=_4.split(":");if(_5[0]=="textColor"&&!_1.textColor)
+_1.textColor=_5[1];else if(_5[0]=="backgroundColor"&&!_1.backgroundColor)
+_1.backgroundColor=_5[1]}}else if(_1.textColor||_1.backgroundColor){_1.cssText="";if(_1.textColor)
+_1.cssText+="color:"+_1.textColor+";";if(_1.backgroundColor)
+_1.cssText+="background-color:"+_1.backgroundColor+";"}}
+,isc.A.remove=function isc_HiliteRule_remove(){this.markForDestroy()}
+,isc.A.getHilite=function isc_HiliteRule_getHilite(){if(this.isAdvanced){return this.hilite}
+var _1=this.hilite=isc.addProperties(this.hilite||{},{fieldName:this.fieldName}),_2=this.hiliteForm.getValue("colorType"),_3=this.hiliteForm.getValue("color"),_4=this.clause.getCriterion();_1.criteria=_4;if(_2=="foreground"){_1.textColor=_3;_1.cssText="color:"+_3+";"}else{_1.backgroundColor=_3;_1.cssText="background-color:"+_3+";"}
+if(this.hilite&&this.hilite.id)_1.id=this.hilite.id;return _1}
+,isc.A.editAdvancedRule=function isc_HiliteRule_editAdvancedRule(){var _1=this.getID()+".editAdvancedRuleReply(hilite)";this.advancedHiliteDialog=isc.Window.create({title:"Advanced Highlight Editor",width:Math.round(isc.Page.getWidth()/2),height:1,isModal:true,showModalMask:true,showResizer:true,autoSize:true,autoCenter:true,items:[isc.AdvancedHiliteEditor.create({width:"100%",height:"100%",dataSource:this.fieldDataSource?null:this.dataSource,fieldDataSource:this.fieldDataSource,hilite:this.hilite,callback:_1})]});this.advancedHiliteDialog.show()}
+,isc.A.editAdvancedRuleReply=function isc_HiliteRule_editAdvancedRuleReply(_1){this.advancedHiliteDialog.hide();this.advancedHiliteDialog.markForDestroy();if(_1){this.hilite=_1;var _2=isc.FilterBuilder.getFilterDescription(this.hilite.criteria,this.dataSource);this.advancedClauseLabel.setContents(_2);this.advancedClauseLabel.setPrompt(_2)}}
+);isc.B._maxIndex=isc.C+6;isc.defineClass("HiliteEditor","VLayout");isc.A=isc.HiliteEditor.getPrototype();isc.A.mainLayoutDefaults={_constructor:"HLayout",width:"100%",extraSpace:5};isc.A.fieldLayoutDefaults={_constructor:"VLayout",width:180,autoParent:"mainLayout",showResizeBar:true};isc.A.addAdvancedHiliteButtonDefaults={_constructor:"IButton",title:"Add Advanced Rule",align:"center",width:"100%",height:22,autoParent:"fieldLayout",click:function(){this.creator.addAdvancedHilite()}};isc.A.fieldListDefaults={_constructor:"ListGrid",width:"100%",height:"*",autoParent:"fieldLayout",fields:[{name:"name",showIf:"false"},{name:"title",title:"Available Fields"}],recordClick:function(_1,_2){this.creator.addHilite(_2)}};isc.A.ruleLayoutDefaults={_constructor:"VLayout",top:22,membersMargin:1,padding:1,overflow:"auto",autoParent:"mainLayout",border:"1px solid grey",width:"100%",height:"100%"};isc.A.hiliteRuleDefaults={_constructor:"HiliteRule"};isc.A.hiliteButtonsDefaults={_constructor:"HLayout",layoutMargin:5,membersMargin:8,height:1};isc.A.saveButtonDefaults={_constructor:"IButton",autoParent:"hiliteButtons",title:"Save",click:function(){this.creator.saveHilites()}};isc.A.cancelButtonDefaults={_constructor:"IButton",autoParent:"hiliteButtons",title:"Cancel",click:function(){this.creator.completeEditing()}};isc.A.defaultWidth=800;isc.A.defaultHeight=300;isc.A=isc.HiliteEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_HiliteEditor_initWidget(){this.Super("initWidget",arguments);this.addAutoChildren(["mainLayout","fieldLayout","addAdvancedHiliteButton","fieldList","ruleLayout","hiliteButtons","saveButton","cancelButton"]);this.setDataSource(this.dataSource);this.setHilites(this.hilites)}
+,isc.A.setDataSource=function isc_HiliteEditor_setDataSource(_1){this.dataSource=_1;if(this.fieldDataSource&&!this.fieldDataSource.$782){this.setupFieldList()}else if(this.dataSource){this.getClientOnlyFieldDS()}else{this.logWarn("No DataSource present, can't edit hilites")}
+this.fieldList.markForRedraw()}
+,isc.A.setFieldDataSource=function isc_HiliteEditor_setFieldDataSource(_1){this.fieldDataSource=_1;this.setupFieldList()}
+,isc.A.setupFieldList=function isc_HiliteEditor_setupFieldList(){this.fieldList.showFilterEditor=true;this.fieldList.setDataSource(this.fieldDataSource);this.fieldList.setFields([{name:"name",showIf:"false"},{name:"title",title:"Available Fields"},{name:"type",showIf:"false"}]);this.fieldList.fetchData()}
+,isc.A.getClientOnlyFieldDS=function isc_HiliteEditor_getClientOnlyFieldDS(){var _1=isc.getValues(this.dataSource.getFields());var _2=[];for(var i=0;i<_1.length;i++){var _4=_1[i];if(!_4.hidden)_2.add(_4)}
+this.fieldDataSource=isc.DataSource.create({$782:true,fields:[{name:"name",showIf:"false"},{name:"title",title:"Available Fields"},{name:"type",showIf:"false"}],cacheData:_2,clientOnly:true});this.setupFieldList()}
+,isc.A.addHilite=function isc_HiliteEditor_addHilite(_1){var _2=this.createAutoChild("hiliteRule",{width:"100%",fieldName:_1.name,dataSource:this.dataSource});this.showNewHilite(_2)}
+,isc.A.removeHilite=function isc_HiliteEditor_removeHilite(_1){this.ruleLayout.members.remove(_1);_1.destroy()}
+,isc.A.showNewHilite=function isc_HiliteEditor_showNewHilite(_1){this.ruleLayout.addMember(_1)}
+,isc.A.addAdvancedHilite=function isc_HiliteEditor_addAdvancedHilite(){var _1=this.getID()+".addAdvancedHiliteReply(hilite)";this.advancedHiliteDialog=isc.Window.create({title:"Advanced Hilite Editor",width:Math.round(isc.Page.getWidth()/2),height:1,isModal:true,showModalMask:true,showResizer:true,canDragResize:true,autoSize:true,autoCenter:true,items:[isc.AdvancedHiliteEditor.create({width:"100%",height:"100%",dataSource:this.fieldDataSource?null:this.dataSource,fieldDataSource:this.fieldDataSource,callback:_1})]});this.advancedHiliteDialog.show()}
+,isc.A.addAdvancedHiliteReply=function isc_HiliteEditor_addAdvancedHiliteReply(_1){this.advancedHiliteDialog.hide();this.advancedHiliteDialog.markForDestroy();if(!_1)return;var _2=this.createAutoChild("hiliteRule",{width:"100%",isAdvanced:true,dataSource:this.dataSource,fieldDataSource:this.fieldDataSource,fieldName:_1.fieldName,hilite:_1});this.showNewHilite(_2)}
+,isc.A.clearHilites=function isc_HiliteEditor_clearHilites(){for(var i=this.ruleLayout.members.length-1;i>=0;i--)
+this.removeHilite(this.ruleLayout.getMember(i))}
+,isc.A.setHilites=function isc_HiliteEditor_setHilites(_1){_1=this.hilites=_1||[];for(var i=0;i<_1.length;i++){var _3=_1[i],_4=this.createAutoChild("hiliteRule",{fieldName:_3.fieldName,hilite:_3,dataSource:this.dataSource});this.showNewHilite(_4)}}
+,isc.A.saveHilites=function isc_HiliteEditor_saveHilites(_1){var _2=this.getHilites();this.completeEditing(_2)}
+,isc.A.getHilites=function isc_HiliteEditor_getHilites(){var _1=this.ruleLayout.members,_2=[];for(var i=0;i<_1.length;i++){var _4=_1[i],_5=_4.getHilite();_2.add(_5)}
+return _2}
+,isc.A.getHiliteState=function isc_HiliteEditor_getHiliteState(){var _1=this.getHilites();if(_1==null)return null;return"("+isc.JSON.encode(_1,{dateFormat:"dateConstructor"})+")"}
+,isc.A.completeEditing=function isc_HiliteEditor_completeEditing(_1){if(this.logIsInfoEnabled())this.logInfo("returning hilites: "+isc.echoFull(_1));if(this.callback)this.fireCallback(this.callback,"hilites",[_1])}
+);isc.B._maxIndex=isc.C+16;isc.defineClass("AdvancedHiliteEditor","VStack");isc.A=isc.AdvancedHiliteEditor.getPrototype();isc.A.padding=10;isc.A.membersMargin=10;isc.A.filterBuilderDefaults={_constructor:"FilterBuilder",isGroup:true,groupTitle:"Filter",padding:8,maxHeight:200,overflow:"visible"};isc.A.hiliteFormDefaults={_constructor:"DynamicForm",isGroup:true,groupTitle:"Appearance",extraSpace:4,padding:8,width:"100%",numCols:6,colWidths:[200,150,100,150,100,150]};isc.A.hiliteButtonsDefaults={_constructor:isc.HLayout,membersMargin:8,height:1};isc.A.saveButtonDefaults={_constructor:"IButton",autoParent:"hiliteButtons",title:"Save",click:function(){this.creator.saveHilite()}};isc.A.cancelButtonDefaults={_constructor:"IButton",autoParent:"hiliteButtons",title:"Cancel",click:function(){this.creator.cancelEditing()}};isc.A.defaultWidth=800;isc.A.defaultHeight=600;isc.A.visibilityMode="multiple";isc.A.invalidHilitePrompt="Enter at least one rule, a color and a target field, or press 'Cancel' to abandon changes.";isc.A=isc.AdvancedHiliteEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initWidget=function isc_AdvancedHiliteEditor_initWidget(){this.Super("initWidget",arguments);var _1=this.getDataSource(),_2=this;this.addAutoChild("filterBuilder",{dataSource:_1,fieldDataSource:this.fieldDataSource,fieldNameChanged:function(_10){this.Super("fieldNameChanged",arguments);_2.fieldChosen(_10.getFieldName())}});var _3=[{title:"Target Field(s)",name:"fieldName",multiple:true,allowMultiSelect:true,type:"select"},{title:"Text",name:"textColor",type:"color"},{title:"Background",name:"backgroundColor",type:"color"}];this.addAutoChild("hiliteForm");if(this.fieldDataSource){_3[0]=isc.addProperties({},_3[0],{valueField:"name",displayField:"title",optionDataSource:this.fieldDataSource});delete _3[0].defaultDynamicValue;this.hiliteForm.addItems(_3)}else{var _4=this.fieldNames||_1.getFieldNames(),_5=this.fieldMap={};for(var i=0;i<_4.length;i++){var _7=_4[i],_8=_1.getField(_7),_9=_8.title;if(_8.hidden)continue;_9=_9?_9:_7;_5[_7]=_9}
+this.fieldMap=_5;_3[0].valueMap=_5;this.hiliteForm.addItems(_3)}
+this.addAutoChildren(["hiliteButtons","saveButton","cancelButton"]);this.addMembers([this.filterBuilder,this.hiliteForm,this.hiliteButtons]);if(this.hilite!=null){this.filterBuilder.setCriteria(this.hilite.criteria);this.hiliteForm.editRecord(this.hilite)}}
+,isc.A.fieldChosen=function isc_AdvancedHiliteEditor_fieldChosen(_1){if(_1&&this.hiliteForm.getValue("fieldName")==null){this.hiliteForm.setValue("fieldName",_1)}}
+,isc.A.saveHilite=function isc_AdvancedHiliteEditor_saveHilite(){this.hiliteForm.setValue("criteria",this.filterBuilder.getCriteria());var _1=this.hiliteForm.getValues();if(_1.criteria.criteria==null||_1.criteria.criteria.length==0||(!_1.textColor&&!_1.backgroundColor)||_1.fieldName==null)
+{isc.say(this.invalidHilitePrompt);return}
+var _2="";if(_1.textColor&&_1.textColor!=""){_2+="color:"+_1.textColor+";"}
+if(_1.backgroundColor&&_1.backgroundColor!=""){_2+="background-color:"+_1.backgroundColor+";"}
+_1.cssText=_2;if(this.hilite&&this.hilite.id)_1.id=this.hilite.id;this.completeEditing(_1)}
+,isc.A.cancelEditing=function isc_AdvancedHiliteEditor_cancelEditing(){this.completeEditing(null)}
+,isc.A.completeEditing=function isc_AdvancedHiliteEditor_completeEditing(_1){if(this.callback)this.fireCallback(this.callback,["hilite"],[_1])}
+);isc.B._maxIndex=isc.C+5;isc.ClassFactory.defineClass("ReportBuilder","VLayout");isc.A=isc.ReportBuilder;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.reportIdField="reportId";isc.A.reportNameField="reportName";isc.A.reportCategoryField="reportCategory";isc.A.reportCreatorField="reportCreator";isc.A.reportIsSharedField="reportIsShared";isc.A.reportIsDefaultField="reportIsDefault";isc.A.reportViewStateField="reportViewState";isc.A.defaultDataSource="ReportChooserDS";isc.B.push(isc.A.showReportBuilder=function isc_c_ReportBuilder_showReportBuilder(_1,_2,_3,_4,_5){var _6=isc.Window.create(isc.addProperties({},{isModal:true,width:"90%",height:"90%",title:"Report Builder",vertical:true,autoSize:true,autoCenter:true,visible:false,callback:_2,showMinimizeButton:false,closeClick:function(){if(this.callback)this.fireCallback(this.callback);return this.Super("closeClick")}},_4));var _7=isc.ReportBuilder.create(isc.addProperties({},{width:"100%",height:"100%",dataSource:_5||isc.DS.get(this.defaultDataSource),grid:_1,callback:_2},_3));_6.body.addChild(_7);_6.show()}
+,isc.A.setLinkedGridState=function isc_c_ReportBuilder_setLinkedGridState(_1,_2){_2=_2||this.previewGrid;if(!_2||!_1)return;var _3=_1["reportViewState"],_4=isc.ReportBuilder.getObjectFromState(_3);_2.setCriteria(_4&&_4.criteria?isc.ReportBuilder.getObjectFromState(_4.criteria):null);var _5=isc.ReportBuilder.getObjectFromState(_4.field);_2.setFieldState(_5?_5.field:null);_2.setSortState(_5?_5.sort:null);_2.ungroup();if(_5.group&&_5.group.length>0)
+_2.groupBy(_5?_5.group:null);_2.setHiliteState(_4.hilite)}
+,isc.A.getObjectFromState=function isc_c_ReportBuilder_getObjectFromState(_1){if(_1==null)return null;var _2=eval(_1);return _2}
+,isc.A.getStateForObject=function isc_c_ReportBuilder_getStateForObject(_1){if(_1==null)return null;return"("+isc.JSON.encode(_1,{dateFormat:"dateConstructor"})+")"}
+);isc.B._maxIndex=isc.C+4;isc.A=isc.ReportBuilder.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.vertical=true;isc.A.padding=10;isc.A.width=830;isc.A.height=600;isc.A.layoutDefaults={_constructor:"VLayout",width:"100%",height:1};isc.A.reportGridDefaults={_constructor:"ListGrid",width:"100%",height:122,autoParent:"layout",canEdit:false,autoFetchData:true,recordClick:function(_1,_2){this.creator.showRecord(_2)},dataArrived:function(_1,_2){var _3=this.getSelection();if(_3&&_3.length==0){this.selectSingleRecord(0);this.recordClick(this,this.getRecord(0))}},fields:[{name:"reportName",title:"Report Name"},{name:"reportDescription",title:"Description"},{name:"reportCreator",title:"Created By"},{name:"reportIsDefault",type:"boolean",title:"Default"},{name:"reportIsShared",type:"boolean",title:"Shared"},{name:"reportCategory",title:"Category"}]};isc.A.reportGridButtonLayoutDefaults={_constructor:"HLayout",width:"100%",height:1,overflow:"visible",autoParent:"layout",align:"right"};isc.A.cloneSelectedButtonTitle="Clone";isc.A.cloneSelectedButtonDefaults={_constructor:"IButton",autoFit:true,click:"this.creator.cloneSelected();",autoParent:"reportGridButtonLayout"};isc.A.addNewButtonTitle="+";isc.A.addNewButtonDefaults={_constructor:"IButton",width:18,click:"this.creator.addNew();",autoParent:"reportGridButtonLayout"};isc.A.removeSelectedButtonTitle="-";isc.A.removeSelectedButtonDefaults={_constructor:"IButton",width:18,click:"this.creator.removeSelected();",autoParent:"reportGridButtonLayout"};isc.A.editorLayoutDefaults={_constructor:"VLayout",width:"100%",height:1,overflow:"visible",layoutTopMargin:15,autoParent:"layout"};isc.A.editorFormDefaults={_constructor:"DynamicForm",width:"100%",numCols:7,colWidths:[100,"*","*",120,60,60,80],fields:[{name:"reportName",type:"text",colSpan:2,width:"*",title:"Report Name"},{name:"reportIsDefault",type:"boolean",colSpan:1,width:"*",showTitle:false},{name:"reportIsShared",type:"boolean",colSpan:1,width:"*",title:"Shared",showTitle:false},{name:"reportCategory",type:"select",width:"*",title:"Category",endRow:true,valueMap:["Financial","HR"]},{name:"reportDescription",type:"textArea",colSpan:"*",width:"*",height:66,title:"Description",endRow:true}],autoParent:"editorLayout"};isc.A.editorTabSetDefaults={_constructor:"TabSet",width:"100%",height:200,autoParent:"editorLayout"};isc.A.editorButtonLayoutDefaults={_constructor:"HLayout",width:"100%",height:1,overflow:"visible",autoParent:"editorLayout",backgroundColor:"lightblue",membersMargin:5,padding:3,align:"right"};isc.A.editorPreviewLabelTitle="Preview";isc.A.editorPreviewLabelDefaults={_constructor:"Label",width:"*",height:22,layoutAlign:"right",autoParent:"editorButtonLayout"};isc.A.editorTryItButtonTitle="Apply";isc.A.editorTryItButtonDefaults={_constructor:"IButton",autoFit:true,click:"this.creator.tryIt();",layoutAlign:"right",autoParent:"editorButtonLayout"};isc.A.editorSaveButtonTitle="Save";isc.A.editorSaveButtonDefaults={_constructor:"IButton",autoFit:true,click:"this.creator.saveEditor();",layoutAlign:"right",autoParent:"editorButtonLayout"};isc.A.editorCancelButtonTitle="Revert";isc.A.editorCancelButtonDefaults={_constructor:"IButton",autoFit:true,click:"this.creator.cancelEditor();",layoutAlign:"right",autoParent:"editorButtonLayout"};isc.A.criteriaPaneDefaults={_constructor:"VLayout",width:"100%",height:"100%",formDefaults:{_constructor:"DynamicForm",width:160,height:22,fields:[{name:"criteriaType",type:"radioGroup",colSpan:"*",width:"*",showTitle:false,vertical:false,valueMap:["Basic","Advanced"],defaultValue:"Advanced",changed:function(_1,_2,_3){_1.creator.showFilterBuilder(_3)}}],extraSpace:10},filterBuilderDefaults:{_constructor:"FilterBuilder",width:"100%",height:"100%"},initWidget:function(){this.Super("initWidget",arguments);if(this.criteriaState){this.initialCriteria=this.getState(this.criteriaState)}
+this.addAutoChild("form");this.addAutoChild("filterBuilder",{dataSource:this.dataSource,criteria:this.initialCriteria});this.addMember(this.filterBuilder)},showFilterBuilder:function(_1){var _2=this.filterBuilder.getCriteria();this.removeMember(this.filterBuilder);this.filterBuilder.destroy();this.filterBuilder=null;var _3={dataSource:this.dataSource,criteria:_2};if(_1=="Basic")_3.topOperatorAppearance="radio";this.addAutoChild("filterBuilder",_3);this.addMember(this.filterBuilder)},getCriteria:function(){var _1=this.filterBuilder.getCriteria();if(!_1||_1.criteria.length==0)return null;return _1},setCriteria:function(_1){return this.filterBuilder.setCriteria(_1)},getState:function(_1){_1=_1||this.getCriteria();if(_1==null)return null;return"("+isc.JSON.encode(_1,{dateFormat:"dateConstructor"})+")"},setState:function(state){if(state==null)this.setCriteria(null);var crit=eval(state);this.setCriteria(crit)}};isc.A.columnPaneDefaults={_constructor:"VLayout",width:"100%",height:"100%",layoutDefaults:{_constructor:"VLayout",width:"100%",height:"100%"},layoutLabelDefaults:{_constructor:"Label",width:"100%",height:"30",contents:"Use the arrows or drag and drop column-names to configure visible columns."+" You may also directly manipulate the Preview grid below.",autoParent:"layout"},childLayoutDefaults:{_constructor:"HLayout",width:"100%",height:"100%",autoParent:"layout"},fieldGridDefaults:{_constructor:"ListGrid",width:"30%",height:"100%",autoParent:"childLayout",fields:[{name:"title",title:"Title"},{name:"type",title:"Type"}],canDragRecordsOut:true,canAcceptDroppedRecords:true,canReorderRecords:true,dragDataAction:"move",transferRecords:function(_1,_2,_3,_4,_5){_1.setProperty("isInGrid",false);this.Super("transferRecords",arguments)}},buttonLayoutDefaults:{_constructor:"VLayout",width:1,height:"100%",autoParent:"childLayout",padding:10,align:"center",layoutAlign:"center"},moveLeftButtonDefaults:{_constructor:"IButton",width:30,height:30,title:"<<",autoParent:"buttonLayout",layoutAlign:"center",disabled:true,click:"this.creator.moveSelectionLeft()"},moveRightButtonDefaults:{_constructor:"IButton",width:30,height:30,title:">>",autoParent:"buttonLayout",layoutAlign:"center",disabled:true,click:"this.creator.moveSelectionRight()"},configGridDefaults:{_constructor:"ListGrid",width:"*",height:"100%",autoParent:"childLayout",fields:[{name:"name",showIf:"false",title:"Name"},{name:"title",title:"Title"},{name:"width",title:"Width"},{name:"frozen",canToggle:true,type:"boolean",title:"Frozen"},{name:"sortIndex",title:"Sort Order"},{name:"sortDirection",type:"select",title:"Sort Direction",valueMap:{ascending:"Ascending",descending:"Descending"}},{name:"groupIndex",title:"Group By Order"},{name:"masterIndex",showIf:"false"}],initialCriteria:{_constructor:"AdvancedCriteria",operator:"and",criteria:[{fieldName:"isInGrid",operator:"equal",value:true}]},initialSort:[{property:"masterIndex",direction:"ascending"}],canEdit:true,autoSaveEdits:true,canDragRecordsOut:true,canAcceptDroppedRecords:true,canReorderRecords:true,dragDataAction:"move",transferRecords:function(_1,_2,_3,_4,_5){_1.setProperty("isInGrid",true);this.Super("transferRecords",arguments)}},getPreviewGrid:function(){if(!this.previewGrid){this.previewGrid=this.creator.previewGrid;var _1=this;this.observe(this.previewGrid,"viewStateChanged","observer.setData(observer.previewGrid);")}
+return this.previewGrid},initWidget:function(){this.Super("initWidget",arguments);this.addAutoChild("layout");this.addAutoChild("layoutLabel");this.addAutoChild("childLayout");this.addAutoChild("fieldGrid");this.addAutoChildren(["buttonLayout","moveLeftButton","moveRightButton"]);this.addAutoChild("configGrid",{previewGrid:this.getPreviewGrid()});if(this.columnState){this.setState(this.columnState)}else{this.setInitialData()}},moveSelectionLeft:function(){var _1=this.configGrid.getSelection();_1.setProperty("isInGrid",false);if(_1)this.fieldGrid.transferRecords(_1,null,null,this.configGrid)},moveSelectionRight:function(){var _1=this.fieldGrid.getSelection();if(_1)this.configGrid.transferRecords(_1,this.configGrid.data.length-1,this.configGrid.data.length,this.fieldGrid)},getState:function(){return isc.ReportBuilder.getStateForObject(this.getData())},setState:function(_1){if(!_1){this.setInitialData();return}
+var _2=isc.ReportBuilder.getObjectFromState(_1),_3=this.getPreviewGrid(),_4=this.linkedGrid;_3.setFieldState(_2.field);_3.setSortState(_2.sort);if(_2&&_2.group=="")_2.group=null;_3.groupByFields=_2.group;_3.groupBy(_2.group);this.setData(_3)},setInitialData:function(){this.setData(this.linkedGrid)},getData:function(){var _1=this.getPreviewGrid();var _2={field:isc.ReportBuilder.getObjectFromState(_1.getFieldState()),sort:{}};var _3=this.configGrid.data,_4=[],_5=[]
+for(var i=0;i<_2.field.length;i++){var _7=_2.field[i],_8=_3.find("name",_7.name);if(_8){delete _7.visible;_7.frozen=_8.frozen;delete _7.$776;if(_8.width=="AutoFit"){_7.autoFitWidth=true;delete _7.width}else{var _9=_8.width!=null?_8.width:"*";delete _7.autoFitWidth;var _10=parseInt(_9);_7.width=!isNaN(_10)?_10:_9}
+if(_8.groupIndex!=null){_4.add({name:_8.name,groupIndex:_8.groupIndex})}
+if(_8.sortIndex!=null){_5.add({name:_8.name,sortDirection:_8.sortDirection,sortIndex:_8.sortIndex})}}else{_7.visible=false}}
+if(_5){_5=_5.sortByProperty("sortIndex",true);for(var i=0;i<_5.length;i++){if(!_2.sort.sortSpecifiers)_2.sort.sortSpecifiers=[];_2.sort.sortSpecifiers.add({property:_5[i].name,direction:_5[i].sortDirection})}}
+if(_4){_4=_4.sortByProperty("groupIndex",true);_2.group=_4.getProperty("name").join(",")}
+return _2},setData:function(_1){var _2=_1.getAllFields();var _3=_1.getFields(),_4=_1.getSort(),_5=_1.getGroupByFields(),_6=[];for(var i=0;i<_2.length;i++){var _8=isc.shallowClone(_2[i]),_9=_3.find("name",_8.name),_10=_1.getSortSpecifier(_8.name),_11=_10?_4.indexOf(_4.find("property",_8.name)):0,_12=_5?_5.contains(_8.name):false,_13=_12?_5.indexOf(_8.name):0;if(_9&&_9.visible!=false){_8.isInGrid=true}else{_8.isInGrid=false}
+if(_8.autoFitWidth)_8.width="AutoFit";if(!_8.width)_8.width="*";if(_10){_8.sortIndex=_11+1;_8.sortDirection=_10.direction}else{delete _8.sortIndex;delete _8.sortDirection}
+if(_12){_8.groupIndex=_13+1}else{delete _8.groupIndex}
+_6.add(_8)}
+var _14;if(this.fieldGrid){_14=_6.findAll("isInGrid",false);this.fieldGrid.setData(_14?_14.duplicate():[])}
+if(this.configGrid){_14=_6.findAll("isInGrid",true);this.configGrid.setData(_14?_14.duplicate():[])}}};isc.A.hilitePaneDefaults={_constructor:"VLayout",width:"100%",height:"100%",overflow:"auto",hiliteEditorDefaults:{_constructor:"HiliteEditor",width:"100%",height:"100%",showHiliteButtons:false},initWidget:function(){this.Super("initWidget",arguments);if(this.hiliteState){this.hilites=this.getState(this.hiliteState)}
+this.addAutoChild("hiliteEditor",{dataSource:this.dataSource,hilites:this.hilites});this.addMember(this.hiliteEditor)},getState:function(_1){var _2=_1||this.hiliteEditor.getHiliteState();return _2},setState:function(state){this.hiliteEditor.clearHilites();if(state==null){this.hiliteEditor.setHilites(null);return}
+var hilites=eval(state);this.hiliteEditor.setHilites(hilites)}};isc.A.formulaPaneDefaults={_constructor:"VLayout",width:"100%",height:"100%",layoutDefaults:{_constructor:"VLayout",width:"100%",height:"100%"},childLayoutDefaults:{_constructor:"HLayout",width:"100%",height:"100%",autoParent:"layout"},fieldGridDefaults:{_constructor:"ListGrid",width:"30%",height:"100%",autoParent:"childLayout",fields:[{name:"title",title:"Title"},{name:"type",title:"Type"}]},builderDefaults:{_constructor:"FormulaBuilder",width:"*",height:"100%",autoParent:"childLayout"},initWidget:function(){this.Super("initWidget",arguments);if(this.formulaState){}
+this.addAutoChild("layout");this.addAutoChild("layoutLabel");this.addAutoChild("childLayout");this.addAutoChild("fieldGrid");this.addAutoChild("builder",{dataSource:this.dataSource});this.addMember(this.layout)},getState:function(_1){},setState:function(state){}};isc.A.summaryPaneDefaults={_constructor:"VLayout",width:"100%",height:"100%",layoutDefaults:{_constructor:"VLayout",width:"100%",height:"100%"},childLayoutDefaults:{_constructor:"HLayout",width:"100%",height:"100%",autoParent:"layout"},fieldGridDefaults:{_constructor:"ListGrid",width:"30%",height:"100%",autoParent:"childLayout",fields:[{name:"title",title:"Title"},{name:"type",title:"Type"}]},builderDefaults:{_constructor:"SummaryBuilder",width:"*",height:"100%",autoParent:"childLayout"},initWidget:function(){this.Super("initWidget",arguments);if(this.summaryState){}
+this.addAutoChild("layout");this.addAutoChild("layoutLabel");this.addAutoChild("childLayout");this.addAutoChild("fieldGrid");this.addAutoChild("builder",{dataSource:this.dataSource});this.addMember(this.layout)},getState:function(_1){},setState:function(state){}};isc.A.previewGridDefaults={_constructor:"ListGrid",width:"100%",height:122,autoParent:"layout",canEdit:false,autoFetchData:true};isc.A.normalAutoChildren=["layout","reportGrid","reportGridButtonLayout","cloneSelectedButton","adddNewButton","removeSelectedButton"];isc.A.editorAutoChildren=["editorLayout","editorForm","editorTabSet","editorButtonLayout","editorPreviewLabel","editorSaveButton","editorCancelButton"];isc.A.otherAutoChildren=["previewGrid"];isc.B.push(isc.A.initWidget=function isc_ReportBuilder_initWidget(){this.Super("initWidget",arguments);this.reportIdField=this.reportIdField||this.getClass().reportIdField;this.reportNameField=this.reportNameField||this.getClass().reportNameField;this.reportCategoryField=this.reportCategoryField||this.getClass().reportCategoryField;this.reportCreatorField=this.reportCreatorField||this.getClass().reportCreatorField;this.reportIsSharedField=this.reportSharedField||this.getClass().reportIsSharedField;this.reportIsDefaultField=this.reportIsDefaultField||this.getClass().reportIsDefaultField;this.reportViewStateField=this.reportViewStateField||this.getClass().reportViewStateField;this.dataSource=isc.DS.get(this.dataSource);if(!isc.isA.DataSource(this.dataSource))
+this.dataSource=isc.DS.get(this.getClass().defaultDataSource);this.addAutoChild("layout");var _1={dataSource:this.dataSource};var _2=null;this.addAutoChild("reportGrid",{dataSource:this.dataSource,initialCriteria:_2});this.addAutoChild("reportGridButtonLayout");this.addAutoChild("cloneSelectedButton",{title:this.cloneSelectedButtonTitle});this.addAutoChild("addNewButton",{title:this.addNewButtonTitle});this.addAutoChild("removeSelectedButton",{title:this.removeSelectedButtonTitle});this.createEditorLayout();var _3=this.getGrid();this.addAutoChild("previewGrid",{dataSource:_3.dataSource});var _4=_3.getViewState();this.previewGrid.setViewState(_4)}
+,isc.A.createEditorLayout=function isc_ReportBuilder_createEditorLayout(){if(!this.editorLayout){this.addAutoChild("editorLayout");this.addAutoChild("editorForm",{dataSource:this.dataSource,extraSpace:10});this.addMember(isc.LayoutSpacer.create({width:"100%",height:10}));this.addAutoChild("editorTabSet");this.editorTabSet.addTabs([{ID:"criteria_tab",name:"criteriaPane",title:"Criteria",selected:true},{ID:"columns_tab",name:"columnsPane",title:"Columns"},{ID:"hilites_tab",name:"hilitesPane",title:"Hilites"},{ID:"formula_tab",name:"formulaPane",title:"Calculated Columns"},{ID:"summary_tab",name:"summaryPane",title:"Summary Columns"}]);this.editorTabSet.selectTab(0);this.addAutoChild("criteriaPane",{dataSource:this.getGridDataSource()});this.editorTabSet.setTabPane(0,this.criteriaPane);this.addAutoChild("columnPane",{dataSource:this.getGridDataSource(),linkedGrid:this.getGrid()});this.editorTabSet.setTabPane(1,this.columnPane);this.addAutoChild("hilitePane",{dataSource:this.getGridDataSource()});this.editorTabSet.setTabPane(2,this.hilitePane);this.addAutoChild("formulaPane",{dataSource:this.getGridDataSource()});this.editorTabSet.setTabPane(3,this.formulaPane);this.addAutoChild("summaryPane",{dataSource:this.getGridDataSource()});this.editorTabSet.setTabPane(4,this.summaryPane);this.addAutoChild("editorButtonLayout");this.addAutoChild("editorPreviewLabel",{contents:this.editorPreviewLabelTitle});this.addAutoChild("editorTryItButton",{title:this.editorTryItButtonTitle});this.addAutoChild("editorSaveButton",{title:this.editorSaveButtonTitle});this.addAutoChild("editorCancelButton",{title:this.editorCancelButtonTitle})}else{this.editorLayout.show()}}
+,isc.A.getUserID=function isc_ReportBuilder_getUserID(){return"testUser"}
+,isc.A.getSelected=function isc_ReportBuilder_getSelected(){var _1=this.reportGrid.getSelection();if(isc.isAn.Array(_1)&&_1.length>0)return _1[0];return null}
+,isc.A.cloneSelected=function isc_ReportBuilder_cloneSelected(){var _1=this.getSelected();if(_1){var _2=isc.addProperties({},_1);_2[this.dataSource.getPrimaryKeyFieldNames()[0]]=null;this.showEditor(_2,"add")}}
+,isc.A.showRecord=function isc_ReportBuilder_showRecord(_1){if(_1)this.showEditor(_1)}
+,isc.A.addNew=function isc_ReportBuilder_addNew(){this.showEditor(null,"add")}
+,isc.A.removeSelected=function isc_ReportBuilder_removeSelected(){var _1=this.getSelected();if(_1){this.reportGrid.removeRecord(null,_1)}}
+,isc.A.getGrid=function isc_ReportBuilder_getGrid(){return this.grid}
+,isc.A.setGrid=function isc_ReportBuilder_setGrid(_1){this.grid=_1}
+,isc.A.getGridDataSource=function isc_ReportBuilder_getGridDataSource(){var _1=this.getGrid();if(!_1)return this.dataSource;return _1.getDataSource()}
+,isc.A.showEditor=function isc_ReportBuilder_showEditor(_1,_2){this.setEditorData(_1,_2)}
+);isc.B._maxIndex=isc.C+12;isc.A=isc.ReportBuilder.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getEditorCriteriaState=function isc_ReportBuilder_getEditorCriteriaState(){return this.criteriaPane?this.criteriaPane.getState():null}
+,isc.A.setEditorCriteriaState=function isc_ReportBuilder_setEditorCriteriaState(_1){if(this.criteriaPane)
+this.criteriaPane.setState(_1?_1.criteria:null)}
+,isc.A.getEditorColumnState=function isc_ReportBuilder_getEditorColumnState(){return this.columnPane?this.columnPane.getState():null}
+,isc.A.setEditorColumnState=function isc_ReportBuilder_setEditorColumnState(_1){if(this.columnPane)this.columnPane.setState(_1?_1.field:null)}
+,isc.A.getEditorHiliteState=function isc_ReportBuilder_getEditorHiliteState(){return this.hilitePane?this.hilitePane.getState():null}
+,isc.A.setEditorHiliteState=function isc_ReportBuilder_setEditorHiliteState(_1){if(this.hilitePane)this.hilitePane.setState(_1?_1.hilite:null)}
+,isc.A.getEditorSummaryState=function isc_ReportBuilder_getEditorSummaryState(){return this.summaryPane?this.summaryPane.getState():null}
+,isc.A.setEditorSummaryState=function isc_ReportBuilder_setEditorSummaryState(_1){if(this.summaryPane)this.summaryPane.setState(_1?_1.summary:null)}
+,isc.A.getEditorFormulaState=function isc_ReportBuilder_getEditorFormulaState(){return this.formulaPane?this.formulaPane.getState():null}
+,isc.A.setEditorFormulaState=function isc_ReportBuilder_setEditorFormulaState(_1){if(this.formulaPane)this.formulaPane.setState(_1?_1.formula:null)}
+,isc.A.setEditorData=function isc_ReportBuilder_setEditorData(_1,_2){var _3=this.editorForm;if(!_1||_2=="add"){_3.editNewRecord(isc.addProperties({},_1,{reportCreator:this.getUserID()}))}else _3.editRecord(_1);var _4=_1?isc.ReportBuilder.getObjectFromState(_1[this.reportViewStateField]):null;this.setEditorCriteriaState(_4);this.setEditorColumnState(_4);this.setEditorHiliteState(_4);this.setEditorFormulaState(_4);this.setEditorSummaryState(_4);this.tryIt()}
+,isc.A.clearEditorData=function isc_ReportBuilder_clearEditorData(){this.setEditorData(null,null)}
+,isc.A.hideEditor=function isc_ReportBuilder_hideEditor(){this.editorLayout.hide();var _1=this.getSelected();this.cloneSelectedButton.setDisabled(!_1);this.addNewButton.enable();this.removeSelectedButton.setDisabled(!_1);this.reportGrid.enable()}
+,isc.A.updateFormRecord=function isc_ReportBuilder_updateFormRecord(){var _1=this.editorForm;var _2={criteria:this.getEditorCriteriaState(),field:this.getEditorColumnState(),hilite:this.getEditorHiliteState(),formula:this.getEditorFormulaState(),summary:this.getEditorSummaryState()};_1.setValue(this.reportViewStateField,isc.ReportBuilder.getStateForObject(_2))}
+,isc.A.saveEditor=function isc_ReportBuilder_saveEditor(){this.updateFormRecord();this.editorForm.saveData()}
+,isc.A.cancelEditor=function isc_ReportBuilder_cancelEditor(){var _1=this.getSelected(),_2=this.editorForm.formOperationType,_3=0;if(_2!="add"){_3=this.reportGrid.getRecordIndex(_1)}
+this.clearEditorData();this.reportGrid.deselectAllRecords();this.reportGrid.selectSingleRecord(_3);this.showEditor(this.reportGrid.getRecord(_3))}
+,isc.A.tryIt=function isc_ReportBuilder_tryIt(){if(this.columnPane&&this.columnPane.configGrid)this.columnPane.configGrid.endEditing();this.updateFormRecord();isc.ReportBuilder.setLinkedGridState(this.editorForm.getData(),this.previewGrid)}
+);isc.B._maxIndex=isc.C+17;isc._moduleEnd=isc._Grids_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Grids module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Grids'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Grids.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Grids.js.gz
new file mode 100755
index 0000000..1f4d672
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Grids.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_History.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_History.js
new file mode 100755
index 0000000..b98f63e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_History.js
@@ -0,0 +1,69 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+var isc = window.isc ? window.isc : {};if(window.isc&&!window.isc.module_History){isc.module_History=1;isc._moduleStart=isc._History_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'History load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;var isc=window.isc?window.isc:{};isc.$d=new Date().getTime();isc.version="v8.2p_2012-06-03/LGPL Development Only";isc.versionNumber="v8.2p_2012-06-03";isc.buildDate="2012-06-03";isc.expirationDate="";isc.licenseType="LGPL";isc.licenseCompany="Isomorphic Software";isc.licenseSerialNumber="ISC_LGPL_NIGHTLY";isc.licensingPage="http://smartclient.com/product/";isc.$41r={SCServer:{present:"false",name:"SmartClient Server",serverOnly:true,isPro:true},Drawing:{present:"true",name:"Drawing Module"},PluginBridges:{present:"true",name:"PluginBridges Module"},RichTextEditor:{present:"true",name:"RichTextEditor Module"},Calendar:{present:"true",name:"Calendar Module"},Analytics:{present:"false",name:"Analytics Module"},Charts:{present:"false",name:"Charts Module"},Tools:{present:"${includeTools}",name:"Portal and Tools Module"},NetworkPerformance:{present:"false",name:"Network Performance Module"},FileLoader:{present:"false",name:"Network Performance Module"},RealtimeMessaging:{present:"false",name:"RealtimeMessaging Module"},serverCriteria:{present:"false",name:"Server Advanced Filtering",serverOnly:true,isFeature:true},customSQL:{present:"false",name:"SQL Templating",serverOnly:true,isFeature:true},chaining:{present:"false",name:"Transaction Chaining",serverOnly:true,isFeature:true},batchDSGenerator:{present:"false",name:"Batch DS-Generator",serverOnly:true,isFeature:true},batchUploader:{present:"false",name:"Batch Uploader",serverOnly:true,isFeature:true},transactions:{present:"false",name:"Automatic Transaction Management",serverOnly:true,isFeature:true}};isc.canonicalizeModules=function(_1){if(!_1)return null;if(isc.isA.String(_1)){if(_1.indexOf(",")!=-1){_1=_1.split(",");var _2=/^\s+/,_3=/\s+$/;for(var i=0;i<_1.length;i++){_1[i]=_1[i].replace(_2,"").replace(_3,"")}}else _1=[_1]}
+return _1};isc.hasOptionalModules=function(_1){if(!_1)return true;_1=isc.canonicalizeModules(_1);for(var i=0;i<_1.length;i++)if(!isc.hasOptionalModule(_1[i]))return false;return true};isc.getMissingModules=function(_1){var _2=[];_1=isc.canonicalizeModules(_1);for(var i=0;i<_1.length;i++){var _4=_1[i];if(!isc.hasOptionalModule(_4))_2.add(isc.$41r[_4])}
+return _2};isc.hasOptionalModule=function(_1){var v=isc.$41r[_1];if(!v){if(isc.Log)isc.Log.logWarn("isc.hasOptionalModule - unknown module: "+_1);return false}
+return v.present=="true"||v.present.charAt(0)=="$"};isc.getOptionalModule=function(_1){return isc.$41r[_1]};isc.$a=window.isc_useSimpleNames;if(isc.$a==null)isc.$a=true;if(window.OpenAjax){isc.$b=isc.versionNumber.replace(/[a-zA-Z_]+/,".0");OpenAjax.registerLibrary("SmartClient","http://smartclient.com/SmartClient",isc.$b,{namespacedMode:!isc.$a,iscVersion:isc.version,buildDate:isc.buildDate,licenseType:isc.licenseType,licenseCompany:isc.licenseCompany,licenseSerialNumber:isc.licenseSerialNumber});OpenAjax.registerGlobals("SmartClient",["isc"])}
+isc.$e=window.isc_useLongDOMIDs;isc.$f="isc.";isc.addGlobal=function(_1,_2){if(_1.indexOf(isc.$f)==0)_1=_1.substring(4);isc[_1]=_2;if(isc.$a)window[_1]=_2}
+isc.onLine=true;isc.isOffline=function(){return!isc.onLine};isc.goOffline=function(){isc.onLine=false};isc.goOnline=function(){isc.onLine=true};if(window.addEventListener){window.addEventListener("online",isc.goOnline,false);window.addEventListener("offline",isc.goOffline,false)}
+isc.addGlobal("Browser",{isSupported:false});isc.Browser.isOpera=(navigator.appName=="Opera"||navigator.userAgent.indexOf("Opera")!=-1);isc.Browser.isNS=(navigator.appName=="Netscape"&&!isc.Browser.isOpera);isc.Browser.isIE=(navigator.appName=="Microsoft Internet Explorer"&&!isc.Browser.isOpera);isc.Browser.isMSN=(isc.Browser.isIE&&navigator.userAgent.indexOf("MSN")!=-1);isc.Browser.minorVersion=parseFloat(isc.Browser.isIE?navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE")+5):navigator.appVersion);isc.Browser.version=parseInt(isc.Browser.minorVersion);isc.Browser.isIE6=isc.Browser.isIE&&isc.Browser.version<=6;isc.Browser.isMoz=(navigator.userAgent.indexOf("Gecko")!=-1)&&(navigator.userAgent.indexOf("Safari")==-1)&&(navigator.userAgent.indexOf("AppleWebKit")==-1);isc.Browser.isCamino=(isc.Browser.isMoz&&navigator.userAgent.indexOf("Camino/")!=-1);if(isc.Browser.isCamino){isc.Browser.caminoVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Camino/")+7)}
+isc.Browser.isFirefox=(isc.Browser.isMoz&&navigator.userAgent.indexOf("Firefox/")!=-1);if(isc.Browser.isFirefox){isc.Browser.firefoxVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox/")+8)}
+if(isc.Browser.isMoz){isc.Browser.$g=navigator.userAgent.indexOf("Gecko/")+6;isc.Browser.geckoVersion=parseInt(navigator.userAgent.substring(isc.Browser.$g,isc.Browser.$g+8));if(isc.Browser.isFirefox){if(isc.Browser.firefoxVersion.match(/^1\.0/))isc.Browser.geckoVersion=20050915;else if(isc.Browser.firefoxVersion.match(/^2\.0/))isc.Browser.geckoVersion=20071108}}
+isc.Browser.isStrict=document.compatMode=="CSS1Compat";if(isc.Browser.isStrict&&isc.Browser.isMoz){isc.Browser.$51p=document.doctype.publicId;isc.Browser.$51q=document.doctype.systemId}
+isc.Browser.isTransitional=/.*(Transitional|Frameset)/.test((document.all&&document.all[0]&&document.all[0].nodeValue)||(document.doctype&&document.doctype.publicId));isc.Browser.isIE7=isc.Browser.isIE&&isc.Browser.version==7;isc.Browser.isIE8=isc.Browser.isIE&&isc.Browser.version>=8&&document.documentMode==8
+isc.Browser.isIE8Strict=isc.Browser.isIE&&isc.Browser.isStrict&&document.documentMode>=8;isc.Browser.isIE9=isc.Browser.isIE&&isc.Browser.version>=9&&document.documentMode>=9;isc.Browser.isAIR=(navigator.userAgent.indexOf("AdobeAIR")!=-1);isc.Browser.AIRVersion=(isc.Browser.isAIR?navigator.userAgent.substring(navigator.userAgent.indexOf("AdobeAir/")+9):null);isc.Browser.isWebKit=navigator.userAgent.indexOf("WebKit")!=-1;isc.Browser.isSafari=isc.Browser.isAIR||navigator.userAgent.indexOf("Safari")!=-1||navigator.userAgent.indexOf("AppleWebKit")!=-1;isc.Browser.isChrome=isc.Browser.isSafari&&(navigator.userAgent.indexOf("Chrome/")!=-1);if(isc.Browser.isSafari){if(isc.Browser.isAIR){isc.Browser.safariVersion=530}else{if(navigator.userAgent.indexOf("Safari/")!=-1){isc.Browser.rawSafariVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Safari/")+7)}else if(navigator.userAgent.indexOf("AppleWebKit/")!=-1){isc.Browser.rawSafariVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("AppleWebKit/")+12)}else{isc.Browser.rawSafariVersion="530"}
+isc.Browser.safariVersion=(function(){var _1=isc.Browser.rawSafariVersion,_2=_1.indexOf(".");if(_2==-1)return parseInt(_1);var _3=_1.substring(0,_2+1),_4;while(_2!=-1){_2+=1;_4=_1.indexOf(".",_2);_3+=_1.substring(_2,(_4==-1?_1.length:_4));_2=_4}
+return parseFloat(_3)})()}}
+isc.Browser.isWin=navigator.platform.toLowerCase().indexOf("win")>-1;isc.Browser.isWin2k=navigator.userAgent.match(/NT 5.01?/)!=null;isc.Browser.isMac=navigator.platform.toLowerCase().indexOf("mac")>-1;isc.Browser.isUnix=(!isc.Browser.isMac&&!isc.Browser.isWin);isc.Browser.isAndroid=navigator.userAgent.indexOf("Android")>-1;isc.Browser.isRIM=isc.Browser.isBlackBerry=navigator.userAgent.indexOf("BlackBerry")>-1||navigator.userAgent.indexOf("PlayBook")>-1;isc.Browser.isMobileWebkit=(isc.Browser.isSafari&&navigator.userAgent.indexOf(" Mobile/")>-1||isc.Browser.isAndroid||isc.Browser.isBlackBerry);isc.Browser.isMobile=(isc.Browser.isMobileWebkit);isc.Browser.isTouch=(isc.Browser.isMobileWebkit);isc.Browser.isIPhone=(isc.Browser.isMobileWebkit&&navigator.userAgent.indexOf("AppleWebKit"));isc.Browser.isHandset=(isc.Browser.isMobileWebkit&&navigator.userAgent.indexOf("iPad")==-1);isc.Browser.isIPad=(isc.Browser.isIPhone&&navigator.userAgent.indexOf("iPad"));isc.Browser.isTablet=(isc.Browser.isIPad)||(isc.Browser.isRIM&&navigator.userAgent.indexOf("Tablet")>-1)
+isc.Browser.isBorderBox=(isc.Browser.isIE&&!isc.Browser.isStrict);isc.Browser.lineFeed=(isc.Browser.isWin?"\r\n":"\r");isc.Browser.$h=false;isc.Browser.isDOM=(isc.Browser.isMoz||isc.Browser.isOpera||isc.Browser.isSafari||(isc.Browser.isIE&&isc.Browser.version>=5));isc.Browser.isSupported=((isc.Browser.isIE&&isc.Browser.minorVersion>=5.5&&isc.Browser.isWin)||isc.Browser.isMoz||isc.Browser.isOpera||isc.Browser.isSafari||isc.Browser.isAIR);isc.Browser.allowsXSXHR=((isc.Browser.isFirefox&&isc.Browser.firefoxVersion>="3.5")||(isc.Browser.isChrome)||(isc.Browser.isSafari&&isc.Browser.safariVersion>=531));if(isc.addProperties==null){isc.addGlobal("addProperties",function(_1,_2){for(var _3 in _2)
+_1[_3]=_2[_3];return _1})}
+isc.addGlobal("evalSA",function(_1){if(isc.eval)isc.eval(_1);else eval(_1)});isc.addGlobal("defineStandaloneClass",function(_1,_2){if(isc[_1])return;isc.addGlobal(_1,_2);isc.addProperties(_2,{$i:_1,fireSimpleCallback:function(_3){_3.method.apply(_3.target?_3.target:window,_3.args?_3.args:[])},logMessage:function(_3,_4,_5){if(isc.Log){isc.Log.logMessage(_3,_4,_5);return}
+if(!isc.$j)isc.$j=[];isc.$j[isc.$j.length]={priority:_3,message:_4,category:_5,timestamp:new Date()}},logWarn:function(_3){this.logMessage(3,_3,this.$i)},logInfo:function(_3){this.logMessage(4,_3,this.$i)},logDebug:function(_3){this.logMessage(5,_3,this.$i)},isAString:function(_3){if(_3==null)return false;if(_3.constructor&&_3.constructor.$k!=null){return _3.constructor.$k==4}
+return typeof _3=="string"}});_2.isAn=_2.isA;return _2});isc.defineStandaloneClass("SA_Page",{$l:false,$m:[],isLoaded:function(){return this.$l},onLoad:function(_1,_2,_3){this.$m.push({method:_1,target:_2,args:_3});if(!this.$n){this.$n=true;if(isc.Browser.isIE||isc.Browser.isOpera){window.attachEvent("onload",function(){isc.SA_Page.$o()})}else{window.addEventListener("load",function(){isc.SA_Page.$o()},true)}}},$o:function(){if(!window.isc||this.$l)return;this.$l=true;for(var i=0;i<this.$m.length;i++){var _2=this.$m[i];this.fireSimpleCallback(_2)}
+delete this.$m}});isc.SA_Page.onLoad(function(){this.$l=true},isc.SA_Page);isc.defineStandaloneClass("History",{registerCallback:function(_1,_2){this.$p=_1;this.$72o=_2},getCurrentHistoryId:function(){var _1=this.$r(location.href);if(_1=="$69i")return null;return _1},getHistoryData:function(_1){return this.historyState?this.historyState.data[_1]:null},setHistoryTitle:function(_1){this.historyTitle=_1},addHistoryEntry:function(_1,_2,_3){this.logDebug("addHistoryEntry: id="+_1+" data="+isc.echoAll(_3));if(_1==null)_1="";if(isc.Browser.isSafari&&isc.Browser.safariVersion<500){return}
+if(!isc.SA_Page.isLoaded()){this.logWarn("You must wait until the page has loaded before calling "+"isc.History.addHistoryEntry()");return}
+var _4=this.$r(location.href);var _5;if(_3===_5)_3=null;if(_4==_1){this.historyState.data[_1]=_3;this.$s();return}
+while(this.historyState.stack.length){var _6=this.historyState.stack.pop();if(_6==_4){this.historyState.stack.push(_6);break}
+delete this.historyState.data[_6]}
+this.historyState.stack.add(_1);this.historyState.data[_1]=_3;this.logDebug("historyState[id]: "+isc.echoAll(this.historyState.data[_1]));this.$s();if(isc.Browser.isIE){if(_1!=null&&document.getElementById(_1)!=null){this.logWarn("Warning - attempt to add synthetic history entry with id that conflicts"+" with an existing DOM element node ID - this is known to break in IE")}
+if(_4==null){var _7=location.href;var _8=document.getElementsByTagName("title");if(_8.length)_7=_8[0].innerHTML;this.$t("$69i",_7)}
+this.$t(_1,_2)}else{location.href=this.$u(location.href,_1)}
+this.$v=location.href},$t:function(_1,_2){this.$w=true;var _3=!this.isAString(_1)?_1:_1.replace(/\\/g,"\\\\").replace(/\"/g,"\\\"").replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/\n/g,"\\n");var _4="<HTML><HEAD><TITLE>"+(_2!=null?_2:this.historyTitle!=null?this.historyTitle:_1)+"</TITLE></HEAD><BODY><SCRIPT>var pwin = window.parent;if (pwin && pwin.isc)pwin.isc.History.historyCallback(window,\""+_3+"\");</SCRIPT></BODY></HTML>";var _5=this.$x.contentWindow;_5.document.open();_5.document.write(_4);_5.document.close()},haveHistoryState:function(_1){if(isc.Browser.isIE&&!isc.SA_Page.isLoaded()){this.logWarn("haveHistoryState() called before pageLoad - this always returns false"+" in IE because state information is not available before pageLoad")}
+var _2;return this.historyState&&this.historyState.data[_1]!==_2},$y:function(){return window.isomorphicDir?window.isomorphicDir:"../isomorphic/"},$z:function(){this.logInfo("History initializing");if(this.$0)return;this.$0=true;if(isc.Browser.isSafari&&isc.Browser.safariVersion<500)return;var _1="<form style='position:absolute;top:-1000px' id='isc_historyForm'>"+"<textarea id='isc_historyField' style='display:none'></textarea></form>";document.write(_1);if(isc.Browser.isIE){var _2="<iframe id='isc_historyFrame' src='"+this.getBlankFrameURL()+"' style='position:absolute;visibility:hidden;top:-1000px'></iframe>";document.write(_2);this.$x=document.getElementById('isc_historyFrame');document.write("<span id='isc_history_buffer_marker' style='display:none'></span>")}
+if(isc.Browser.isIE){isc.SA_Page.onLoad(function(){this.$1()},this)}else if(isc.Browser.isMoz||isc.Browser.isOpera||(isc.Browser.isSafari&&isc.Browser.safariVersion>=500)){this.$1()}},getBlankFrameURL:function(){if(isc.Page)return isc.Page.getBlankFrameURL();if(isc.Browser.isIE&&("https:"==window.location.protocol||document.domain!=location.hostname))
+{var _1,_2=window.isomorphicDir;if(_2&&(_2.indexOf("/")==0||_2.indexOf("http")==0))
+{_1=_2}else{_1=window.location.href;if(_1.charAt(_1.length-1)!="/"){_1=_1.substring(0,_1.lastIndexOf("/")+1)}
+_1+=(_2==null?"../isomorphic/":_2)}
+_1+="system/helpers/empty.html";return _1}
+return"about:blank"},$2:function(){var _1=document.getElementById("isc_historyField");return _1?_1.value:null},$3:function(_1){var _2=document.getElementById("isc_historyField");if(_2)_2.value=_1},$1:function(){var _1=this.$2();if(_1){_1=new Function("return ("+_1+")")()}
+if(!_1)_1={stack:[],data:{}};this.historyState=_1;this.logInfo("History init complete");this.$v=location.href;this.$4=window.setInterval("isc.History.$5()",this.$6);if(isc.Browser.isIE||isc.Browser.isMoz||isc.Browser.isOpera||(isc.Browser.isSafari&&isc.Browser.safariVersion>=500))
+{isc.SA_Page.onLoad(this.$q,this)}},$q:function(){if(this.$7)return;if(this.$p&&isc.SA_Page.isLoaded()){this.$7=true;var _1=this.$r(location.href);this.$8(_1)}},$u:function(_1,_2){var _3=_1.match(/([^#]*).*/);return _3[1]+"#"+encodeURI(_2)},$r:function(_1){var _2=location.href.match(/([^#]*)#(.*)/);return _2?decodeURI(_2[2]):null},$6:100,$s:function(){if(isc.Comm){this.$3(isc.Comm.serialize(this.historyState))}},$5:function(){if(location.href!=this.$v){var _1=this.$r(location.href);this.$8(_1)}
+this.$v=location.href},historyCallback:function(_1,_2){if(_2=="$69i")_2="";var _3=this.$u(location.href,_2);if(isc.SA_Page.isLoaded()){location.href=_3;this.$v=_3}else{isc.SA_Page.onLoad(function(){location.href=this.$u(location.href,_2);this.$v=_3},this)}
+if(this.$w){this.$w=false;return}
+if(isc.SA_Page.isLoaded()){this.$8(_2)}else{isc.SA_Page.onLoad(function(){this.$8(_2)},this)}},$8:function(_1){if(this.$ab==_1){if(this.$80a)return}
+this.$80a=true;if(!this.$p){this.logWarn("ready to fire history callback, but no callback registered."+"Please call isc.History.registerCallback() before pageLoad."+" If you can't register your callback before pageLoad, you"+" can call isc.History.getCurrentHistoryId() to get the ID"+" when you're ready.");return}
+if(_1=="$69i")_1=null;var _2=this.$p;var _3;if(!this.haveHistoryState(_1)){if(this.$72o){this.logWarn("User navigated to URL associated with synthetic history ID:"+_1+". This ID is not associated with any synthetic history entry generated via "+"History.addHistoryEntry(). Not firing registered historyCallback as "+"callback was registered with parameter requiring a data object. "+"This can commonly occur when the user navigates to a stored history entry "+"via a bookmarked URL.");return}}else{_3=this.historyState.data[_1]}
+this.$ab=_1;this.logDebug("history callback: "+_1);if(isc.Class&&this.isAString(_2)){isc.Class.fireCallback(_2,["id","data"],[_1,_3])}else{_2=isc.addProperties({},_2);_2.args=[_1,_3];this.fireSimpleCallback(_2)}}});isc.History.$z();isc._moduleEnd=isc._History_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('History module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'History'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_History.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_History.js.gz
new file mode 100755
index 0000000..512430c
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_History.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Kapow.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Kapow.js
new file mode 100755
index 0000000..2bf5f6e
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Kapow.js
@@ -0,0 +1,28 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_Kapow){isc.module_Kapow=1;isc._moduleStart=isc._Kapow_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'Kapow load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.defineClass("RobotServerPicker","Window");isc.A=isc.RobotServerPicker.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoCenter=true;isc.A.autoSize=true;isc.A.isModal=true;isc.A.title="Select Robot Server";isc.A.formConstructor="DynamicForm";isc.A.formDefaults={width:300,numCols:2,colWidths:[150,"*"],defaultItems:[{name:"robotServerURL",title:"Robot Server URL",defaultValue:"http://127.0.0.1:50080"},{name:"next",type:"button",title:"Next",click:"form.creator.nextClick()",startRow:true},{name:"cancel",type:"button",title:"Cancel",click:"form.creator.hide()",endRow:false,startRow:false}]};isc.A.myAutoChildren=["form"];isc.B.push(isc.A.initWidget=function isc_RobotServerPicker_initWidget(){this.Super("initWidget",arguments);this.form=this.createAutoChild("form");this.addItem(this.form)}
+,isc.A.nextClick=function isc_RobotServerPicker_nextClick(){var _1=this.form.getValue("robotServerURL");window.robotServerURL=_1;this.hide();this.fireCallback("robotServerSelected","robotServerURL",[_1])}
+);isc.B._maxIndex=isc.C+2;isc.RobotServerPicker.registerStringMethods({robotServerSelected:"robotServerURL"});isc._moduleEnd=isc._Kapow_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Kapow module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Kapow'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Kapow.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Kapow.js.gz
new file mode 100755
index 0000000..47cacfb
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Kapow.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_PluginBridges.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_PluginBridges.js
new file mode 100755
index 0000000..02e223c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_PluginBridges.js
@@ -0,0 +1,83 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_PluginBridges){isc.module_PluginBridges=1;isc._moduleStart=isc._PluginBridges_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'PluginBridges load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.ClassFactory.defineClass("BrowserPlugin","Canvas");isc.A=isc.BrowserPlugin;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.instances=[];isc.B.push(isc.A.handleDragMoveNotify=function isc_c_BrowserPlugin_handleDragMoveNotify(){}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.BrowserPlugin.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.src="";isc.A.extraHTML="";isc.A.installPlugin=true;isc.A.redrawOnResize=false;isc.A.$jp=false;isc.A._redrawWithParent=false;isc.A.useDragMask=true;isc.A.usePlaceholderDragMask=!isc.Browser.isMoz;isc.A.dragPlaceholderMessage="Dragging...";isc.A.dragPlaceholderStyle="normal";isc.B.push(isc.A.initWidget=function isc_BrowserPlugin_initWidget(){isc.BrowserPlugin.instances.add(this);if(this.useDragMask)isc.EH.registerMaskableItem(this,true)}
+,isc.A.destroy=function isc_BrowserPlugin_destroy(){isc.BrowserPlugin.instances.remove(this);this.Super("destroy",arguments)}
+,isc.A.draw=function isc_BrowserPlugin_draw(){this.Super("draw",arguments);if(this.backMaskCausesBurnThrough){var _1=this;this.getParentElements().map(function(_2){if(_2.useBackMask){_1.logInfo("Suppressing backmask of ancestor: "+_2.getID());if(_2._backMask){_2._backMask.suppressed=true;_2._backMask.hide()}else{if(!_2.$49t)_2.$49t={};_2.$49t.suppressed=true}}})}}
+,isc.A.getPluginHandle=function isc_BrowserPlugin_getPluginHandle(){return document.getElementById(this.getPluginID())}
+,isc.A.getPluginID=function isc_BrowserPlugin_getPluginID(){return this.getID()+"_plugin"}
+,isc.A.$mb=function isc_BrowserPlugin__showDragMask(){if(!this.usePlaceholderDragMask)return this.Super("$mb",arguments);var _1=this.getPluginHandle();if(_1){_1.style.visibility="hidden";if(!this.$49u)this.$49u=this.createDragPlaceholder();if(this.$49u){isc.addProperties(this.$49u,{$jr:this,getTarget:function(){return this.$jr}});this.$49u.setRect(this.getPageRect());this.$49u.show()}}}
+,isc.A.$mc=function isc_BrowserPlugin__hideDragMask(){if(!this.usePlaceholderDragMask)return this.Super("$mc",arguments);var _1=this.getPluginHandle();if(_1){_1.style.visibility="inherit";if(this.$49u)this.$49u.hide()}}
+,isc.A.createDragPlaceholder=function isc_BrowserPlugin_createDragPlaceholder(){return isc.Label.create({align:"center",contents:this.dragPlaceholderMessage,styleName:this.dragPlaceholderStyle})}
+);isc.B._maxIndex=isc.C+8;isc.ClassFactory.defineClass("Applet","BrowserPlugin");isc.A=isc.Applet;isc.A.appletScanInterval=500;isc.A=isc.Applet;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.initComplete=function isc_c_Applet_initComplete(_1){this.jvmVersionString=_1;this.jvmVersion=parseFloat(_1);this.logInfo("ISCEventProxy init complete - jvmVersion: "+_1+" - derived version: "+this.jvmVersion)}
+,isc.A.idForName=function isc_c_Applet_idForName(_1){if(_1&&_1.endsWith("$260"))return _1.substring(0,_1.length-7)}
+,isc.A.startJavaEventProxy=function isc_c_Applet_startJavaEventProxy(){if(this.eventProxyApplet)return;this.eventProxyApplet=isc.Applet.create({top:-1000,width:10,height:10,autoDraw:false,useJavaEventProxy:false,useDragMask:true,params:{debug:this.debug,useEventMasks:this.useEventMasks,appletScanInterval:this.appletScanInterval},$mb:function(){var _1=this.getPluginHandle();if(_1)_1.showDragMask()},$mc:function(){var _1=this.getPluginHandle();if(_1)_1.hideDragMask()},ID:"isc_eventProxyApplet",archive:isc.Page.getURL("[HELPERS]isomorphic_applets.jar"),code:"com/isomorphic/applets/ISCEventProxy.class"});this.eventProxyApplet.draw()}
+);isc.B._maxIndex=isc.C+3;isc.A=isc.Applet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.mayScript=true;isc.A.scriptable=true;isc.A.classID="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93";isc.A.objectCodeBase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0";isc.A.useTag="applet";isc.A.useClipDiv=false;isc.A.useJavaEventProxy=isc.Browser.isIE;isc.A.useDragMask=!isc.Browser.isIE;isc.A.usePlaceholderDragMask=false;isc.A.backMaskCausesBurnThrough=isc.Browser.isMoz;isc.B.push(isc.A.draw=function isc_Applet_draw(){if(this.useJavaEventProxy)isc.Applet.startJavaEventProxy();this.Super("draw",arguments)}
+,isc.A.getInnerHTML=function isc_Applet_getInnerHTML(){var _1=isc.StringBuffer.newInstance();if(this.code==null&&this.src!=null)this.code=this.src;if(this.useTag=="applet"){_1.append("<applet name='",this.getPluginID(),"' width='100%' height='100%'"," iscCanvasID='",this.getID(),"'");if(this.mayScript)_1.append(" mayScript");if(this.scriptable)_1.append(" scriptable");if(this.code)_1.append(" code='",this.code,"'");if(this.codeBase)_1.append(" codeBase='",this.codeBase,"'");if(this.archive)_1.append(" archive='",this.archive,"'");if(this.alt)_1.append(" alt='",this.alt,"'");if(this.extraHTML)_1.append(" ",this.extraHTML);_1.append(">");if(this.params){for(var _2 in this.params){_1.append("<param name='",_2,"' value='",this.params[_2],"'>")}}
+if(this.altHTML)_1.append(this.altHTML);_1.append("</applet>")}else if(this.useTag=="object"){_1.append("<object classid='",this.classID,"' codebase='",this.objectCodeBase,"' width='100%' height='100%'");if(this.extraHTML)_1.append(" ",this.extraHTML);_1.append(">");_1.append("<param name='name' value='",this.getPluginID(),"'>");_1.append("<param name='iscCanvasID' value='",this.getID(),"'>");if(this.mayScript)_1.append("<param name='mayscript' value='true'>");if(this.scriptable)_1.append("<param name='scriptable' value='true'>");if(this.code)_1.append("<param name='code' value='",this.code,"'>");if(this.codeBase)_1.append("<param name='codeBase' value='",this.codeBase,"'>");if(this.archive)_1.append("<param name='archive' value='",this.archive,"'>");if(this.alt)_1.append("<param name='alt' value='",this.alt,"'>");if(this.params){for(var _2 in this.params){_1.append("<param name='",_2,"' value='",this.params[_2],"'>")}}
+_1.append("</object>")}
+return _1.toString()}
+,isc.A.getPluginID=function isc_Applet_getPluginID(){if(!this.name)this.name=this.getID()+"$260";return this.name}
+,isc.A.getPluginHandle=function isc_Applet_getPluginHandle(){return document[this.getPluginID()]}
+,isc.A.repaint=function isc_Applet_repaint(){var _1=this.getPluginHandle();if(_1)_1.repaint()}
+,isc.A.repaintOnDragStop=function isc_Applet_repaintOnDragStop(){return this.useJavaEventProxy&&isc.Applet.jvmVersion<1.4}
+,isc.A.$mc=function isc_Applet__hideDragMask(){this.Super("$mc",arguments);if(this.repaintOnDragStop())this.repaint()}
+);isc.B._maxIndex=isc.C+7;isc.ClassFactory.defineClass("Flashlet","BrowserPlugin");isc.A=isc.Flashlet;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.flashAvailable=function isc_c_Flashlet_flashAvailable(){if(this.flashSupported!=null)return this.flashSupported;isc.Flashlet.flashVersion=0;isc.Flashlet.flashSupported=false;if(isc.Browser.isIE){var _1=isc.StringBuffer.concat('on error resume next\n','For i = 2 to 9\n','If Not(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & i))) Then\n','Else\n','isc.Flashlet.flashSupported = true\n','isc.Flashlet.flashVersion = i\n','End If\n','Next');window.execScript(_1,"VBScript")}else{var _2=navigator.plugins["Shockwave Flash"];if(_2==null)_2=navigator.plugins["Shockwave Flash 2.0"];if(_2!=null){this.flashSupported=true;var _3=_2.description.substring(16),_4=parseFloat(_3.split(" ")[0]);this.$43y=_3;this.flashVersion=_4}else{this.flashSupported=false}}
+return this.flashSupported}
+,isc.A.getFlashVersion=function isc_c_Flashlet_getFlashVersion(){if(this.flashAvailable())return this.flashVersion}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.Flashlet.getPrototype();isc.A.useClipDiv=false;isc.A.useDragMask=false;isc.A.classID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";isc.A.codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0";isc.A.pluginsPage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash";isc.A.type="application/x-shockwave-flash";isc.A=isc.Flashlet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.setSrc=function isc_Flashlet_setSrc(_1){this.src=_1;this.markForRedraw()}
+,isc.A.getInnerHTML=function isc_Flashlet_getInnerHTML(){var _1=isc.SB.create();if(this.name==null)this.name=this.getPluginID();var _2=window.location.protocol,_3=this.codeBase;if(_2&&_2.startsWith("https")&&_3&&_3.startsWith("http://")){_3=_3.replace("http://","https://")}
+_1.append("<object classid='",this.classID,"' codebase='",_3,"' width='100%' height='100%' ID='",this.name,"'");if(this.extraObjectHTML)_1.append(" ",this.extraObjectHTML);_1.append(">");var _4={};isc.addProperties(_4,this.params);if(!_4.movie)_4.movie=this.src||this.movie;if(!_4.wmode)_4.wmode="opaque"
+for(var _5 in _4)
+_1.append("<param name='",_5,"' value='",_4[_5],"'>");_1.append("<embed width='100%' height='100%' name='",this.name,"' src=\"",this.src,"\" pluginspage=\"",this.pluginsPage,"\" type='",this.type,"'");for(var _5 in _4)
+_1.append(" ",_5,"='",_4[_5],"'");if(this.extraEmbedHTML)_1.append(" ",this.extraEmbedHTML);_1.append(">");_1.append("</embed>");_1.append("</object>");return _1.toString()}
+,isc.A.getPluginID=function isc_Flashlet_getPluginID(){return this.getID()+"$261"}
+,isc.A.getPluginHandle=function isc_Flashlet_getPluginHandle(){if(this.name==null)return null;if(isc.Browser.isIE)return window[this.name];return document[this.name]}
+);isc.B._maxIndex=isc.C+4;isc.ClassFactory.defineClass("SVG","BrowserPlugin");isc.A=isc.SVG.getPrototype();isc.A.useNativeMask=true;isc.A.pluginsPage="http://www.adobe.com/svg/viewer/install/";isc.A.src=isc.Page.getHelperDir()+"svgCanvas.svg";isc.A=isc.SVG;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.register=function isc_c_SVG_register(_1){var _2=_1.getTarget();var _3=_2.getOwnerDocument();var _4=this.getSVGCanvas(_3);_4.addProperties({svgElement:_2,svgDocument:_3,svgDoc:_3,svgRoot:_3.getRootElement()});var _5=_4.getPluginHandle();if(_5["window"])_5["window"].svgCanvas=_4;if(isc.isA.Function(_4.initSVG))_4.initSVG();else if(isc.isA.Function(_4.initsvg))_4.initsvg();if(_4.useNativeMask)_4.$266();if(_4.$267)_4.showNativeMask()}
+,isc.A.getSVGCanvas=function isc_c_SVG_getSVGCanvas(_1){var _2=_1.getURL();if(_2.indexOf("#")==-1){this.logError("Can't locate svgCanvas for svgDocument. Use SVG.create() to render SVGs");return null}
+var _3=_2.substring(_2.indexOf("#")+1,_2.length);var _4=window[_3];if(!_4){this.logError("Can't locate svg instance for id: "+_3+" did you call SVG.register(evt)?");return null}
+return _4}
+);isc.B._maxIndex=isc.C+2;isc.A=isc.SVG.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.draw=function isc_SVG_draw(){this.Super("draw",arguments);if(isc.Browser.isIE)isc.EH.registerMaskableItem(this,true)}
+,isc.A.mouseOut=function isc_SVG_mouseOut(){if(this.useNativeMask){this.hideNativeMask();this.Super("$mc")}}
+,isc.A.$mb=function isc_SVG__showDragMask(){if(this.useNativeMask)this.showNativeMask();else this.Super("$mb")}
+,isc.A.$mc=function isc_SVG__hideDragMask(){if(this.useNativeMask)this.hideNativeMask();else this.Super("$mc")}
+,isc.A.handleSVGEvent=function isc_SVG_handleSVGEvent(_1){if(_1.type=="mousemove"){if(this.lastMouseMoveX==_1.clientX&&this.lastMouseMoveY==_1.clientY)return;this.lastMouseMoveX=_1.clientX;this.lastMouseMoveY=_1.clientY}
+var _2={type:_1.type,target:this,clientX:_1.clientX,clientY:_1.clientY};isc.EventHandler.handleSyntheticEvent(_2)}
+,isc.A.$266=function isc_SVG__makeSVGEventMask(){this.$268=this.svgDoc.createElement("rect");this.$269=this.getID()+"_SVGEventMask";var _1={id:this.$269,x:"-1073741823",y:"-1073741823",width:"2147483647",height:"2147483647",opacity:"0.0",visibility:"hidden",onmousemove:"svgCanvas.handleSVGEvent(evt)",onmouseup:"svgCanvas.handleSVGEvent(evt)",onmouseout:"svgCanvas.handleSVGEvent(evt)",onclick:"svgCanvas.handleSVGEvent(evt)",oncontextmenu:"svgCanvas.handleSVGEvent(evt)"};for(var _2 in _1)this.$268.setAttribute(_2,_1[_2]);this.svgRoot.appendChild(this.$268)}
+,isc.A.setZIndex=function isc_SVG_setZIndex(){}
+,isc.A.showNativeMask=function isc_SVG_showNativeMask(){if(!this.svgDoc){this.logWarn("showNativeMask called before SVG.register() - deferring until SVG.register()");this.$267=true;return}
+if(this.$268){this.svgRoot.removeChild(this.$268);this.svgRoot.appendChild(this.$268)}else{this.$266()}
+this.$268.setAttribute("visibility","visible")}
+,isc.A.hideNativeMask=function isc_SVG_hideNativeMask(){if(this.$268)this.$268.setAttribute("visibility","hidden")}
+,isc.A.getInnerHTML=function isc_SVG_getInnerHTML(){if(isc.Browser.isIE){return"<embed name='"+this.getPluginID()+"' src=\""+isc.Page.getURL(this.src)+"#"+this.getID()+"\" width='100%' height='100%'"+(this.installPlugin?"pluginspage='"+this.pluginsPage+"'":"")+" type='image/svg+xml' "+this.extraHTML+" >"}
+return this.Super("getInnerHTML",arguments)}
+,isc.A.destroy=function isc_SVG_destroy(){if(this.$268)delete this.$268;var _1=this.getPluginHandle();if(_1&&_1["window"])delete _1["window"].svgCanvas;this.Super("destroy")}
+,isc.A.setNodeAttributes=function isc_SVG_setNodeAttributes(_1,_2){for(var _3 in _2)_1.setAttribute(_3,_2[_3])}
+);isc.B._maxIndex=isc.C+12;isc.ClassFactory.defineClass("ActiveXControl","BrowserPlugin");isc.A=isc.ActiveXControl.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.getInnerHTML=function isc_ActiveXControl_getInnerHTML(){var _1=isc.StringBuffer.newInstance();var _2=this.classID?this.classID:"clsid:"+this.uuid;_1.append("<object classid='",_2,"' codebase='",this.codeBase,"' id='"+this.getPluginID(),"' width='100%' height='100%'");if(this.extraHTML)_1.append(" ",this.extraHTML);_1.append(">");_1.append("<param name='iscCanvasID' value='",this.getID(),"'>");if(this.params){for(var _3 in this.params){_1.append("<param name='",_3,"' value='",this.params[_3],"'>")}}
+_1.append("</object>");return _1.toString()}
+,isc.A.getPluginID=function isc_ActiveXControl_getPluginID(){if(!this.id)this.id=this.getID()+"$27a";return this.id}
+,isc.A.getPluginHandle=function isc_ActiveXControl_getPluginHandle(){return window[this.getPluginID()]}
+);isc.B._maxIndex=isc.C+3;isc._moduleEnd=isc._PluginBridges_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('PluginBridges module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'PluginBridges'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_PluginBridges.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_PluginBridges.js.gz
new file mode 100755
index 0000000..c04e19a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_PluginBridges.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_RichTextEditor.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_RichTextEditor.js
new file mode 100755
index 0000000..e40db75
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_RichTextEditor.js
@@ -0,0 +1,234 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_RichTextEditor){isc.module_RichTextEditor=1;isc._moduleStart=isc._RichTextEditor_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'RichTextEditor load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.ClassFactory.defineClass("RichTextCanvas","Canvas");isc.A=isc.RichTextCanvas;isc.A.FULL="full";isc.A.unsupportedErrorMessage="Rich text editing not supported in this browser";isc.A=isc.RichTextCanvas.getPrototype();isc.A.editable=true;isc.A.canSelectText=true;isc.A.canFocus=true;isc.A._useFocusProxy=false;isc.A.overflow=isc.Canvas.AUTO;isc.A.showCustomScrollbars=false;isc.A.fullSyntaxHiliteDelay=3000;isc.A.contents="";isc.A=isc.RichTextCanvas;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.supportsRichTextEditing=function isc_c_RichTextCanvas_supportsRichTextEditing(){var _1=((isc.Browser.isSafari&&isc.Browser.safariVersion>=312)||(isc.Browser.isIE)||(isc.Browser.isMoz&&!isc.Browser.isCamino)||isc.Browser.isOpera);return _1}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.RichTextCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.$9z="<BR>";isc.A.$10j="Enter";isc.A.ignoreKeys=["Arrow_Up","Arrow_Down","Arrow_Left","Arrow_Right","Ctrl","Alt"];isc.B.push(isc.A.initWidget=function isc_RichTextCanvas_initWidget(){if(!isc.RichTextCanvas.supportsRichTextEditing()){var _1=isc.RichTextCanvas.unsupportedErrorMessage;this.logError(_1)}
+if(this.overflow!=isc.Canvas.AUTO){this.logWarn('RichTextCanvas class currently only supports an overflow property of "auto"');this.overflow=isc.Canvas.AUTO}
+if(this.$22y()){this._useNativeTabIndex=false}
+this.Super("initWidget",arguments)}
+,isc.A.$rw=function isc_RichTextCanvas__getHandleOverflow(){if(this.$22y()){var _1;if(this.$ks){_1="-moz-scrollbars-none";this.$r3=true}else{_1=this.$nz}
+return _1}else return this.Super("$rw",arguments)}
+,isc.A.getInnerHTML=function isc_RichTextCanvas_getInnerHTML(){if(this.$22y()&&!this.isPrinting){return this.getIFrameHTML()}
+return this.getContents(true)}
+,isc.A.$22y=function isc_RichTextCanvas__useDesignMode(){return isc.Browser.isMoz||isc.Browser.isSafari}
+,isc.A.getIFrameHTML=function isc_RichTextCanvas_getIFrameHTML(){var _1=isc.Browser.isSafari,_2=_1?isc.Page.getBlankFrameURL():null,_3=this.getContentFrameWidth()+isc.px,_4=this.getContentFrameHeight()+isc.px,_5=["<IFRAME STYLE='margin:0px;padding:0px;border:0px;width:",_3,";height:",_4,";'",(_1||true?" src='"+isc.Page.getURL("[HELPERS]empty.html")+"'":null)," ONLOAD='",this.getID(),".$22z();'"," TABINDEX=",this.getTabIndex()," ID='",this.getIFrameID(),"'></IFRAME>"];return _5.join(isc.emptyString)}
+,isc.A.$vi=function isc_RichTextCanvas__setHandleTabIndex(_1){if(this.$22y()){var _2=this.getContentFrame();if(_2!=null)_2.tabIndex=_1}else{return this.Super("$vi",arguments)}}
+,isc.A.getBrowserSpellCheck=function isc_RichTextCanvas_getBrowserSpellCheck(){return true}
+,isc.A.$22z=function isc_RichTextCanvas__frameLoaded(){if(!this.$220)return;delete this.$220;if(!this.isDrawn())return;this.$221()}
+,isc.A.getIFrameID=function isc_RichTextCanvas_getIFrameID(){return this.getID()+"$222"}
+,isc.A.getContentDocument=function isc_RichTextCanvas_getContentDocument(){if(isc.Browser.isIE)return document;var _1=this.getContentWindow(),_2=_1?_1.document:null;if(_2==null){this.logDebug("Unable to get pointer to content document. Content may not be written out")}
+return _2}
+,isc.A.getContentBody=function isc_RichTextCanvas_getContentBody(){var _1=this.getContentDocument();if(_1)return _1.body;return null}
+,isc.A.getContentWindow=function isc_RichTextCanvas_getContentWindow(){var _1=this.getContentFrame();return _1?_1.contentWindow:null}
+,isc.A.getContentFrame=function isc_RichTextCanvas_getContentFrame(){if(!this.$22y()||!this.isDrawn())return null;return isc.Element.get(this.getIFrameID())}
+,isc.A.setOverflow=function isc_RichTextCanvas_setOverflow(){}
+,isc.A.getScrollHandle=function isc_RichTextCanvas_getScrollHandle(){if(this.$22y())return this.getContentBody();return this.Super("getScrollHandle",arguments)}
+,isc.A.$ux=function isc_RichTextCanvas___adjustOverflow(){this.Super("$ux",arguments);if(!this.$22y()||this.overflow!=isc.Canvas.AUTO)return;var _1=this.getScrollHeight(),_2=this.getScrollWidth(),_3=this.getHeight(),_4=this.getWidth(),_5=this.getScrollbarSize(),_6=false,_7=false;if(_1>_3)_7=true;if(_6)_4-=_5;if(_2>_4)_6=true;if(_6&&!_7&&(_1>_3-_5))_7=true;this.hscrollOn=_6;this.vscrollOn=_7}
+,isc.A.getContentFrameWidth=function isc_RichTextCanvas_getContentFrameWidth(){return this.getWidth()-this.getHMarginBorderPad()}
+,isc.A.getContentFrameHeight=function isc_RichTextCanvas_getContentFrameHeight(){return this.getHeight()-this.getHMarginBorderPad()}
+,isc.A.$q5=function isc_RichTextCanvas__setHandleRect(_1,_2,_3,_4){this.Super("$q5",arguments);if(this.$22y()){var _5=this.getContentFrame();if(_5!=null){var _6=this.getContentFrameWidth(),_7=this.getContentFrameHeight();_5.style.width=_6+"px";_5.style.height=_7+"px"}}}
+,isc.A.getScrollWidth=function isc_RichTextCanvas_getScrollWidth(_1){if((this.$su&&!_1)||!this.$22y())
+return this.Super("getScrollWidth",arguments);var _2=this.getContentBody();if(!_2)return this.Super("getScrollWidth",arguments);this.$su=isc.Element.getScrollWidth(_2);return this.$su}
+,isc.A.getScrollHeight=function isc_RichTextCanvas_getScrollHeight(_1){if((this.$sz&&!_1)||!this.$22y())
+return this.Super("getScrollHeight",arguments);var _2=this.getContentBody();if(!_2)return this.Super("getScrollHeight",arguments);this.$sz=isc.Element.getScrollHeight(_2);return this.$sz}
+,isc.A.$223=function isc_RichTextCanvas__rememberSelection(){if(!isc.Browser.isIE)return;if(!this.$224())return;this.$225=document.selection.createRange();this.$226=this.$225.text}
+,isc.A.$224=function isc_RichTextCanvas__hasSelection(){if(!this.isDrawn())return false
+if(!isc.Browser.isIE)return;if(this.$22y()){return(this.getActiveElement()==this.getContentFrame())}
+var _1=this.getHandle();if(!_1)return false;var _2=isc.Element.$mk();if(!_2)return false;return(_1==_2||_1.contains(_2))}
+,isc.A.selectionChange=function isc_RichTextCanvas_selectionChange(){if(!this.$227)this.$223()}
+,isc.A.$228=function isc_RichTextCanvas__resetSelection(){if(!this.editable||!this.isDrawn()||!this.isVisible())return;if(isc.Browser.isIE){if(!this.$225)return;if(this.$226!=this.$225.text){this.$225.collapse(false)}
+isc.EH.$mj=true;this.$225.select();delete isc.EH.$mj}}
+,isc.A.setFocus=function isc_RichTextCanvas_setFocus(_1){this.$227=true;this.Super("setFocus",arguments);this.$227=false;if(this.$22y()){var _2=this.getContentWindow();if(!_2)return;if(_1)_2.focus()
+else window.focus()}else{if(_1){this.$228()}}}
+,isc.A.draw=function isc_RichTextCanvas_draw(){this.Super("draw",arguments);if(!isc.Browser.isSafari&&this.$22y())
+isc.EventHandler.registerMaskableItem(this,true);if(this.$22y()){this.$220=true}else{this.$221()}}
+,isc.A.redraw=function isc_RichTextCanvas_redraw(){var _1=this.$22y();if(_1)this.$229();this.Super("redraw",arguments);if(_1)this.$220=true}
+,isc.A.$221=function isc_RichTextCanvas__setupEditArea(){var _1=this.$22y();if(_1){if(!this.$23a){this.$23a=new Function("event","var returnValue="+this.getID()+".$23b(event);"+"if(returnValue==false && event.preventDefault)event.preventDefault()")}
+if(!this.$23c){this.$23c=new Function("event","var returnValue="+this.getID()+".$23d(event);"+"if(returnValue==false && event.preventDefault)event.preventDefault()")}
+if(!this.$23e){this.$23e=new Function("event","var returnValue="+this.getID()+".$23f(event);"+"if(returnValue==false && event.preventDefault)event.preventDefault()")}
+if(!this.$23g){this.$23g=new Function("event","var returnValue="+this.getID()+".$23h(event);"+"if(returnValue==false && event.preventDefault)event.preventDefault()")}
+if(!this.$82f){this.$82f=new Function("event",this.getID()+".$82g();")}
+if(!this.$82h){this.$82h=new Function("event",this.getID()+".$82i();")}
+var _2=this.getContentWindow();_2.addEventListener("keypress",this.$23a,false);_2.addEventListener("keydown",this.$23c,false);_2.addEventListener("keyup",this.$23e,false);_2.addEventListener("scroll",this.$23g,false);_2.addEventListener("focus",this.$82f,false);_2.addEventListener("blur",this.$82h,false);var _3=this.getContentBody().style;_3.margin="0px";var _4=isc.Element.getStyleDeclaration(this.className);if(_4!=null){var _5=isc.Canvas.textStyleAttributes;for(var i=0;i<_5.length;i++){var _7=_5[i];_3[_7]=_4[_7]}}}
+if(isc.Browser.isMoz){this.getContentBody().spellcheck=(!!this.getBrowserSpellCheck())}
+var _8=(this.editable&&!this.isDisabled());if(!_1)this.$23i(_8);else{this.delayCall("$23i",[_8,true],0)}
+if(this.syntaxHiliter&&!this.formattedOnce){this.formattedOnce=true;this.contents=this.hiliteAndCount(this.contents)}
+this.$23j(this.contents)}
+,isc.A.$23b=function isc_RichTextCanvas__iFrameKeyPress(_1){isc.EH.getKeyEventProperties(_1);return isc.EH.handleKeyPress(_1,{keyTarget:this})}
+,isc.A.$23d=function isc_RichTextCanvas__iFrameKeyDown(_1){isc.EH.getKeyEventProperties(_1);return isc.EH.handleKeyDown(_1,{keyTarget:this})}
+,isc.A.$23f=function isc_RichTextCanvas__iFrameKeyUp(_1){isc.EH.getKeyEventProperties(_1);return isc.EH.handleKeyUp(_1,{keyTarget:this})}
+,isc.A.$23h=function isc_RichTextCanvas__iFrameScroll(_1){return this.$lh(_1)}
+,isc.A.$82g=function isc_RichTextCanvas__iFrameOnFocus(){if(this.destroyed)return;isc.EH.focusInCanvas(this,true);return true}
+,isc.A.$82i=function isc_RichTextCanvas__iFrameOnBlur(){if(this.destroyed)return;isc.EH.blurFocusCanvas(this,true);return true}
+,isc.A.handleKeyPress=function isc_RichTextCanvas_handleKeyPress(_1,_2){var _3=isc.EH.getKey();if(this.ignoreKeys.contains(_3))return isc.EH.STOP_BUBBLING;if(this.countLines)this.rememberSelectionStartLine();this.$23k();var _4=this.Super("handleKeyPress",arguments);if(isc.Browser.isIE&&this.$23l){isc.Timer.clearTimeout(this.$23l);delete this.$23l}
+if(_4!=false&&isc.Browser.isIE&&_3==this.$10j){this.$223();this.$225.pasteHTML(this.$9z);this.$225.collapse(true);this.$225.select();_4=false}
+return _4}
+,isc.A.$23k=function isc_RichTextCanvas__queueContentsChanged(){if(!this.$23m){this.$23m=true;if(!this.$23n)this.$23n="$23o";isc.Page.setEvent(isc.EH.IDLE,this,isc.Page.FIRE_ONCE,this.$23n)}}
+,isc.A.$23o=function isc_RichTextCanvas__contentsChanged(){delete this.$23m;var _1=this.contents,_2=this.getContents();if(_1==_2)return;if(this.countLines&&this.selectionIsCollapsed())this.doLinesChanged(_1,_2);this.adjustOverflow("edited");if(this.changed!=null)this.changed(_1,_2);this.contents=_2}
+,isc.A.setSyntaxHiliter=function isc_RichTextCanvas_setSyntaxHiliter(_1){if(_1==null){this.removeSyntaxHiliter();return}
+this.syntaxHiliter=_1;this.countLines=true;var _2=this.getContents()||isc.emptyString;this.setContents(_2)}
+,isc.A.removeSyntaxHiliter=function isc_RichTextCanvas_removeSyntaxHiliter(){var _1=this.getContents()||isc.emptyString;delete this.syntaxHiliter;delete this.countLines;this.setContents(_1)}
+,isc.A.doLinesChanged=function isc_RichTextCanvas_doLinesChanged(_1,_2){var _3=this.getLastSelectionStartLine();if(_3==null)return;var _4=this.getLine(_3);var _5=isc.emptyString;var _6=this.markCurrentSelection();if(isc.Browser.isIE){if(!_4){this.getLineContainer().innerHTML=isc.emptyString;var _7=this.createLine();this.getLineContainer().appendChild(_7);var _8=document.selection.createRange();_8.moveToElementText(_7);_8.collapse();_8.select();_6=this.markCurrentSelection();_3=0;_4=this.getLine(0)}
+_5=_4.innerHTML}else{var _9=this.getSelectionStartLine();var _10=this.getLineNumber(_9);if(_10<_3){_4=_9;_3=_10}
+var _11=_4;var _12=0;while(_11&&_11!=_9){if(_11.innerHTML){_5+=_11.innerHTML}
+_12++;_11=_11.nextSibling}
+var _13=_9.nextSibling;if(_13&&_13.tagName.toLowerCase()=="br"){_13.parentNode.removeChild(_13);_9.appendChild(_13)}
+_5+=_9.innerHTML;if(!_5.replace(/\n|\r/g,isc.emptyString).match(/<br>$/i)){if(_9.nextSibling){_5+=_9.nextSibling.innerHTML;_12++}}}
+if(!_1){_1=this.contents;_2=this.getContents()}
+if(this.linesChanged){this.linesChanged(_1,_2,_3,_12,_5,_6)}else if(this.syntaxHiliter){this.doSyntaxHilite(_1,_2,_3,_12,_5,_6)}}
+,isc.A.doSyntaxHilite=function isc_RichTextCanvas_doSyntaxHilite(_1,_2,_3,_4,_5,_6){var _7=this.removeMarkup(_5,true);var _8=this.getSelectionMarkerIndex(_7);if(_8==-1){this.doFullSyntaxHilite();return}
+_7=this.removeMarkup(_5);var _9=this.syntaxHiliter.hilite(_7,true,_8,this.$23p(_6));this.overwriteLines(_3,_4,_9);this.moveSelectionToMarker(_6)}
+,isc.A.doFullSyntaxHilite=function isc_RichTextCanvas_doFullSyntaxHilite(){var _1=this.markCurrentSelection();var _2=this.$23q();var _3=this.removeMarkup(_2,true);var _4=this.getSelectionMarkerIndex(_3);if(_4==-1){_4=_2.length}
+_3=this.removeMarkup(_2);this.setContents(_3,true,_4,this.$23p(_1));this.moveSelectionToMarker(_1);delete this.fullHiliteTimer}
+,isc.A.queueFullHilite=function isc_RichTextCanvas_queueFullHilite(){if(this.fullHiliteTimer)isc.Timer.clearTimeout(this.fullHiliteTimer);this.fullHiliteTimer=this.delayCall("doFullSyntaxHilite",[],this.fullSyntaxHiliteDelay)}
+,isc.A.selectionIsCollapsed=function isc_RichTextCanvas_selectionIsCollapsed(){if(isc.Browser.isIE){var _1=document.selection.createRange();return _1.text.length==0}else if(isc.Browser.isMoz){var _2=this.getContentWindow().getSelection();return _2.isCollapsed}}
+,isc.A.rememberSelectionStartLine=function isc_RichTextCanvas_rememberSelectionStartLine(){this.startLineNum=this.getLineNumber(this.getSelectionStartLine())}
+,isc.A.getLastSelectionStartLine=function isc_RichTextCanvas_getLastSelectionStartLine(){return this.startLineNum}
+,isc.A.$23r=function isc_RichTextCanvas__setPasteTimer(){this.$23l=this.delayCall("doLinesChanged",[],0)}
+,isc.A.$23s=function isc_RichTextCanvas__getOnBeforePaste(){if(!this.$23t)
+this.$23t=this.getID()+".rememberSelectionStartLine();event.returnValue=true";return this.$23t}
+,isc.A.$23u=function isc_RichTextCanvas__getOnPaste(){if(!this.$23v)this.$23v=this.getID()+".$23r();event.returnValue=true"
+return this.$23v}
+,isc.A.$23w=function isc_RichTextCanvas__getLineSpanHTML(){if(!this.$23x){this.$23x="<span isLine='true'";if(this.syntaxHiliter&&!this.syntaxHiliter.autoWrap)
+this.$23x+=" style='white-space:nowrap'";if(isc.Browser.isIE){this.$23x+=" onbeforepaste='"+this.$23s()+"' onpaste='"+this.$23u()+"'"}
+this.$23x+=">$1</span>"}
+return this.$23x}
+,isc.A.createLine=function isc_RichTextCanvas_createLine(_1){var _2=this.getContentDocument();var _3=_2.createElement("span");_3.setAttribute("isLine","true");if(this.syntaxHiliter&&!this.syntaxHiliter.autoWrap)
+_3.setAttribute("style","white-space:nowrap");if(isc.Browser.isIE){_3.setAttribute("onbeforepaste",this.$23s());_3.setAttribute("onpaste",this.$23u())}
+_3.innerHTML=_1?_1:"<br>";return _3}
+,isc.A.$23y=function isc_RichTextCanvas__getNextSelectionId(){if(!this.selectionIdSequence)this.selectionIdSequence=0;return this.getID()+"_selection_"+this.selectionIdSequence++}
+,isc.A.getSelectionStartLine=function isc_RichTextCanvas_getSelectionStartLine(){var _1=this.getContentDocument();var _2;if(isc.Browser.isIE){var _3=this.$23y();var _4=_1.selection.createRange();_4.collapse();_4.pasteHTML("<span id='"+_3+"'></span>");var _5=_1.getElementById(_3);_2=_5.parentNode;_2.removeChild(_5)}else if(isc.Browser.isMoz){var _6=this.getContentWindow().getSelection();var _2=_6.anchorNode}
+var _7=_2;while(_2.parentNode!=null){if(_2.getAttribute&&_2.getAttribute("isLine")!=null)_7=_2;_2=_2.parentNode}
+return _7}
+,isc.A.$23p=function isc_RichTextCanvas__getSelectionSpanHTML(_1){return"<span isSelectionSpan='true' id='"+_1+"'></span>"}
+,isc.A.markCurrentSelection=function isc_RichTextCanvas_markCurrentSelection(){var _1=this.$23y();var _2=this.getContentDocument();if(isc.Browser.isIE){var _3=_2.selection.createRange();_3.collapse();_3.pasteHTML(this.$23p(_1))}else if(isc.Browser.isMoz){var _4=_2.createElement("span");_4.setAttribute('isSelectionSpan',"true");_4.setAttribute('id',_1);var _5=this.getContentWindow().getSelection();var _3=_5.getRangeAt(0);if(_5.isCollapsed){_3.insertNode(_4)}else{var _6=_3.cloneRange();_6.collapse(false);_6.insertNode(_4);_6.detach()}}
+return _1}
+,isc.A.overwriteLines=function isc_RichTextCanvas_overwriteLines(_1,_2,_3){if(!isc.isAn.Array(_3))_3=[_3];var _4=this.getLine(_1);while(_1>=0&&(!_4||!_4.getAttribute||!_4.getAttribute("isLine"))){_4=this.getLine(_1);_1--}
+if(_1<0){this.getLineContainer().innerHTML=isc.emptyString;_4=this.createLine();this.getLineContainer().appendChild(_4);if(isc.Browser.isMoz)_1++}
+var _5=_4.parentNode;_4.innerHTML=_3[0];while(_2!=null&&_2-->0){var _6=this.getLine(_1+1);if(_6){_5.removeChild(_6)}}
+for(var i=1;i<_3.length;i++){if(_3[i]!=-1)this.addLineAfter(_1+i-1,_3[i])}}
+,isc.A.addLineAfter=function isc_RichTextCanvas_addLineAfter(_1,_2){var _3=this.getLine(_1);var _4=this.getNextLine(_3);_2=this.createLine(_2);if(_4){_4.parentNode.insertBefore(_2,_4)}else{_3.parentNode.appendChild(_2)}}
+,isc.A.escapeSelection=function isc_RichTextCanvas_escapeSelection(_1,_2){if(_2==null)_2=isc.emptyString;return _1.replace(/<span [^>]*isSelectionSpan[^>]*><\/span>/gi,_2)}
+,isc.A.getSelectionMarkerIndex=function isc_RichTextCanvas_getSelectionMarkerIndex(_1){var _2=new RegExp("<span [^>]*isSelectionSpan[^>]*>","i");var _3=_2.exec(_1);if(_3)return _3.index;return-1}
+,isc.A.getLineNumber=function isc_RichTextCanvas_getLineNumber(_1){var _2=_1.parentNode.childNodes;for(var i=0;i<_2.length;i++)
+if(_2[i]==_1)return i}
+,isc.A.getPreviousLine=function isc_RichTextCanvas_getPreviousLine(_1){return _1.previousSibling}
+,isc.A.getNextLine=function isc_RichTextCanvas_getNextLine(_1){return _1.nextSibling}
+,isc.A.getLineContainer=function isc_RichTextCanvas_getLineContainer(){return isc.Browser.isIE?this.getHandle():this.getContentBody()}
+,isc.A.getLine=function isc_RichTextCanvas_getLine(_1){return this.getLineContainer().childNodes[_1]}
+,isc.A.getLineHTML=function isc_RichTextCanvas_getLineHTML(_1){return _1.innerHTML}
+,isc.A.getLineContents=function isc_RichTextCanvas_getLineContents(_1){return this.removeMarkup(this.getLineHTML(_1))}
+,isc.A.removeMarkup=function isc_RichTextCanvas_removeMarkup(_1,_2){if(_2){_1=_1.replace(/\n|\r|(<\/?(?!br|BR|([^>]*isSelectionSpan)).*?>)/gi,isc.emptyString)}else{_1=_1.replace(/\n|\r|(<\/?(?!br|BR).*?>)/gi,isc.emptyString)}
+_1=_1.unescapeHTML();if(isc.Browser.isOpera){var _3=new RegExp(String.fromCharCode(160),"g");_1=_1.replace(_3," ")}
+return _1}
+,isc.A.moveSelectionToMarker=function isc_RichTextCanvas_moveSelectionToMarker(_1){var _2=this.getContentDocument();var _3=_2.getElementById(_1);if(isc.Browser.isIE){var _4=_2.selection.createRange();_4.moveToElementText(_3);_4.collapse();_4.select()}else if(isc.Browser.isMoz){var _5=this.getContentWindow().getSelection();_5.removeAllRanges();var _4=_2.createRange();_4.setStartBefore(_3);_4.setEndBefore(_3);_5.addRange(_4)}
+this.destroySelectionMarker(_1)}
+,isc.A.destroySelectionMarker=function isc_RichTextCanvas_destroySelectionMarker(_1){var _2=this.getContentDocument();var _3=_2.getElementById(_1);if(_3)_3.parentNode.removeChild(_3)}
+,isc.A.setEditable=function isc_RichTextCanvas_setEditable(_1){if(_1==this.editable)return;this.editable=_1;this.$23i(_1)}
+,isc.A.$23i=function isc_RichTextCanvas__setHandleEditable(_1,_2){if(this.$22y()){var _3=this.getContentDocument();if(_3){if(_1||_2)_3.designMode="on";if(isc.Browser.isMoz)_3.execCommand("readonly",false,_1);if(!_1)_3.designMode="off"}}else{var _4=this.getHandle();if(_4!=null){_4.contentEditable=(_1?true:"inherit");if(isc.Browser.isIE){if(!this.isVisible()&&this.$224())
+this.$23z();else if(isc.Browser.version<6)
+this.$223()}}}}
+,isc.A.parentVisibilityChanged=function isc_RichTextCanvas_parentVisibilityChanged(_1){if(!this.$22y()&&isc.Browser.isIE&&(_1==isc.Canvas.HIDDEN)&&this.$224())
+{this.$23z()}
+return this.Super("parentVisibilityChanged",arguments)}
+,isc.A.$23z=function isc_RichTextCanvas__emptySelectionForHide(){document.body.focus();var _1=isc.EH.getFocusCanvas();if(_1!=this&&_1!=null){_1.focus()}}
+,isc.A.disableKeyboardEvents=function isc_RichTextCanvas_disableKeyboardEvents(_1){this.Super("disableKeyboardEvents",arguments);if(this.editable)this.$23i(_1?false:true)}
+,isc.A.$229=function isc_RichTextCanvas__rememberContents(){if(!this.isDrawn()||this.$220)return;var _1=this.$23q();if(_1!=null)this.contents=_1}
+,isc.A.$23q=function isc_RichTextCanvas__getContents(){var _1;if(this.$22y()){var _2=this.getContentBody();if(!_2)return;_1=_2.innerHTML}else{var _3=this.getHandle();if(_3)_1=_3.innerHTML}
+return _1}
+,isc.A.getContents=function isc_RichTextCanvas_getContents(_1){this.$229();if((this.syntaxHiliter||this.countLines)&&!_1){return this.removeMarkup(this.contents)}else{return this.contents}}
+,isc.A.setContents=function isc_RichTextCanvas_setContents(_1,_2,_3,_4){if(_1==this.contents&&!_2)return;this.contents=_1;if(!this.isDrawn()||this.$220)return;this.$23j(this.hiliteAndCount(_1,_3,_4))}
+,isc.A.$23j=function isc_RichTextCanvas__setContents(_1){this.contents=_1;if(!this.isDrawn())return;if(this.$22y()){var _2=this.getContentBody();if(!_2)return;_2.innerHTML=_1}else{var _3=this.getHandle();if(_3)_3.innerHTML=_1}
+this.adjustOverflow()}
+,isc.A.hiliteAndCount=function isc_RichTextCanvas_hiliteAndCount(_1,_2,_3){if(this.syntaxHiliter){_1=this.syntaxHiliter.hilite(_1,false,_2,_3)}
+if(this.countLines){if(_1==isc.emptyString)_1="<BR>";_1=_1.replace(/((?:.*?<br>)|(?:.+$))/gi,this.$23w())}
+return _1}
+,isc.A.appendContents=function isc_RichTextCanvas_appendContents(_1,_2,_3){_1=this.hiliteAndCount(_1,_2,_3);var _4=this.$22y()?this.getContentBody():this.getHandle();_4.innerHTML+=_1;this.adjustOverflow()}
+,isc.A.$230=function isc_RichTextCanvas__execCommand(_1,_2){if(!this.isDrawn()||!this.editable)return;if(!isc.Page.isLoaded()){this.logWarn("Unsupported attempt to manipulate RichTextCanvas content style "+"before page load: postponed until the page has done loading.");isc.Page.setEvent("Load",this.getID()+".$230('"+_1+"','"+_2+"');");return}
+this.focus();var _3=this.$22y(),_4=_3?this.getContentDocument():document;if(!_4)return;if(!this.$231(_1))return false;try{_4.execCommand(_1,false,_2)}catch(e){return false}
+if(_3){var _5=this.getContentWindow();_5.focus()}else{this.$223()}
+this.$23o()}
+,isc.A.$231=function isc_RichTextCanvas__commandEnabled(_1){try{var _2=this.$22y()?this.getContentDocument():document;if(!_2)return false;if(!_2.queryCommandEnabled(_1))return false}catch(e){return false}
+return true}
+,isc.A.boldSelection=function isc_RichTextCanvas_boldSelection(){this.$230("bold")}
+,isc.A.italicSelection=function isc_RichTextCanvas_italicSelection(){this.$230("italic")}
+,isc.A.underlineSelection=function isc_RichTextCanvas_underlineSelection(){this.$230("underline")}
+,isc.A.strikethroughSelection=function isc_RichTextCanvas_strikethroughSelection(){this.$230("strikethrough")}
+,isc.A.showClipboardDisabledError=function isc_RichTextCanvas_showClipboardDisabledError(){var _1="Your browser does not allow web pages to access the clipboard programmatically.";isc.warn(_1)}
+,isc.A.copySelection=function isc_RichTextCanvas_copySelection(){if(this.$230("copy")==false)this.showClipboardDisabledError()}
+,isc.A.cutSelection=function isc_RichTextCanvas_cutSelection(){if(this.$230("cut")==false)this.showClipboardDisabledError();}
+,isc.A.pasteOverSelection=function isc_RichTextCanvas_pasteOverSelection(){if(this.$230("paste")==false)this.showClipboardDisabledError()}
+,isc.A.deleteSelection=function isc_RichTextCanvas_deleteSelection(){this.$230("delete")}
+,isc.A.indentSelection=function isc_RichTextCanvas_indentSelection(){this.$230("indent")}
+,isc.A.outdentSelection=function isc_RichTextCanvas_outdentSelection(){this.$230("outdent")}
+,isc.A.justifySelection=function isc_RichTextCanvas_justifySelection(_1){if(_1==isc.RichTextCanvas.CENTER){this.$230("justifycenter")}else if(_1==isc.RichTextCanvas.FULL){this.$230("justifyfull")}else if(_1==isc.RichTextCanvas.RIGHT){this.$230("justifyright")}else if(_1==isc.RichTextCanvas.LEFT){this.$230("justifyleft")}}
+,isc.A.setSelectionColor=function isc_RichTextCanvas_setSelectionColor(_1){this.$230("forecolor",_1)}
+,isc.A.setSelectionBackgroundColor=function isc_RichTextCanvas_setSelectionBackgroundColor(_1){var _2=isc.Browser.isMoz?"hilitecolor":"backcolor";this.$230(_2,_1)}
+,isc.A.setSelectionFont=function isc_RichTextCanvas_setSelectionFont(_1){this.$230("fontname",_1)}
+,isc.A.setSelectionFontSize=function isc_RichTextCanvas_setSelectionFontSize(_1){this.$230("fontsize",_1)}
+,isc.A.createLink=function isc_RichTextCanvas_createLink(_1){this.$230("CreateLink",_1)}
+);isc.B._maxIndex=isc.C+101;isc.RichTextCanvas.registerStringMethods({changed:"oldValue,newValue"});isc.ClassFactory.defineClass("RichTextEditor","VLayout");isc.A=isc.RichTextEditor.getPrototype();isc.A.editAreaConstructor="RichTextCanvas";isc.A.editAreaBackgroundColor="white";isc.A.editAreaClassName="normal";isc.A.value="";isc.A.toolbarConstructor="HLayout";isc.A.toolbarHeight=24;isc.A.toolbarBackgroundColor="#CCCCCC";isc.A.toolbarSeparatorSrc="[SKIN]/RichTextEditor/separator.png";isc.A.controlButtonWidth=20;isc.A.defaultControlConstructor=isc.Button;isc.A.controlGroups=["fontControls","formatControls","styleControls","colorControls"];isc.A.styleControls=["boldSelection","italicSelection","underlineSelection"];isc.A.fontPrompt="Set Font ...";isc.A.fontSizePrompt="Set Font Size ...";isc.A.linkUrlTitle="Hyperlink URL:";isc.A.boldSelectionDefaults={title:"<b>B</b>",prompt:"Make selection bold"};isc.A.italicSelectionDefaults={title:"<i>I</i>",prompt:"Make selection italic"};isc.A.underlineSelectionDefaults={title:"<u>U</u>",prompt:"Make selection underlined"};isc.A.strikethroughSelectionDefaults={title:"<del>S</del>",prompt:"Strike through selection"};isc.A.fontControls=["fontSelector","fontSizeSelector"];isc.A.fontSelectorConstructor=isc.DynamicForm;isc.A.fontSizeSelectorConstructor=isc.DynamicForm;isc.A.fontNames={"arial,helvetica,sans-serif":"Arial",'courier new,courier,monospace':"Courier New",'georgia,times new roman,times,serif':"Georgia",'tahoma,arial,helvetica,sans-serif':"Tahoma",'times new roman,times,serif':"Times New Roman",'verdana,arial,helvetica,sans-serif':"Verdana","impact":"Impact"};isc.A.fontSizes={"1":"1 (8 pt)","2":"2 (10 pt)","3":"3 (12 pt)","4":"4 (14 pt)","5":"5 (18 pt)","6":"6 (24 pt)","7":"7 (36 pt)"};isc.A.editControls=["copySelection","cutSelection","pasteSelection"];isc.A.copySelectionDefaults={icon:"[SKIN]/RichTextEditor/copy.png",prompt:"Copy Selection"};isc.A.cutSelectionDefaults={icon:"[SKIN]/RichTextEditor/cut.png",prompt:"Cut Selection"};isc.A.pasteSelectionDefaults={icon:"[SKIN]/RichTextEditor/paste.png",prompt:"Paste"};isc.A.formatControls=["alignLeft","alignRight","alignCenter","justify"];isc.A.alignLeftDefaults={icon:"[SKIN]/RichTextEditor/text_align_left.png",prompt:"Left align selection",click:function(){this.creator.fireAction('justifySelection','left')}};isc.A.alignCenterDefaults={icon:"[SKIN]/RichTextEditor/text_align_center.png",prompt:"Center selection",click:function(){this.creator.fireAction('justifySelection','center')}};isc.A.alignRightDefaults={icon:"[SKIN]/RichTextEditor/text_align_right.png",prompt:"Right align selection",click:function(){this.creator.fireAction('justifySelection','right')}};isc.A.justifyDefaults={icon:"[SKIN]/RichTextEditor/text_align_justified.png",prompt:"Full justify selection",click:function(){this.creator.fireAction('justifySelection','full')}};isc.A.indentSelectionDefaults={icon:"[SKIN]/RichTextEditor/indent.png",prompt:"Indent selection"};isc.A.outdentSelectionDefaults={icon:"[SKIN]/RichTextEditor/outdent.png",prompt:"Decrease selection indent"};isc.A.colorControls=["color","backgroundColor"];isc.A.colorDefaults={icon:"[SKIN]/RichTextEditor/text_color.gif",prompt:"Set selection color",click:"this.creator.chooseTextColor()"};isc.A.backgroundColorDefaults={icon:"[SKIN]/RichTextEditor/background_color.gif",prompt:"Set selection background color",click:"this.creator.chooseBackgroundColor()"};isc.A.insertControls=["link"];isc.A.linkDefaults={icon:"[SKIN]/RichTextEditor/link_new.png",prompt:"Edit hyperlink",click:"this.creator.createLink()"};isc.A.canFocus=true;isc.A._useFocusProxy=false;isc.A._useNativeTabIndex=false;isc.A=isc.RichTextEditor;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$232=function isc_c_RichTextEditor__canvasContentsChanged(_1,_2){this.creator.$233(_1,_2)}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.RichTextEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dragStartDistance=1;isc.B.push(isc.A.initWidget=function isc_RichTextEditor_initWidget(){this.Super("initWidget",arguments);this.createChildren()}
+,isc.A.doWarn=function isc_RichTextEditor_doWarn(){isc.logWarn("Warning: Not all Rich Text Editing features are supported in this browser.")}
+,isc.A.createChildren=function isc_RichTextEditor_createChildren(){if(!this.richEditorSupported())this.delayCall("doWarn");if(!this.autoChildDefaults)this.autoChildDefaults={};this.autoChildDefaults.width=this.controlButtonWidth;this.autoChildDefaults.click=function(){if(this.isControl&&isc.isA.StatefulCanvas(this))this.creator.fireAction(this.controlName)}
+if(this.toolbarHeight>0)this.$234();this.addAutoChild("editArea",{top:this.toolbarHeight,className:this.editAreaClassName,backgroundColor:this.editAreaBackgroundColor,left:0,width:"100%",height:"*",contents:this.value,tabIndex:-1,getTabIndex:function(){var _1=(this.parentElement)?this.parentElement.getTabIndex():-1;this.tabIndex=_1;return _1},$kf:function(_2,_3){if(this.parentElement!=null){return this.parentElement.$kf(_2,_3)}else{return this.Super("$kf",arguments)}},changed:isc.RichTextEditor.$232,focusChanged:function(){if(this.parentElement!=null)this.parentElement.editAreaFocusChanged()},getBrowserSpellCheck:function(){return this.parentElement.getBrowserSpellCheck()}})}
+,isc.A.editAreaFocusChanged=function isc_RichTextEditor_editAreaFocusChanged(){}
+,isc.A.richEditorSupported=function isc_RichTextEditor_richEditorSupported(){return!(isc.Browser.isSafari||isc.Browser.isOpera)}
+,isc.A.getBrowserSpellCheck=function isc_RichTextEditor_getBrowserSpellCheck(){return this.browserSpellCheck}
+,isc.A.$234=function isc_RichTextEditor__createToolbar(){this.addAutoChild("toolbar",{top:0,left:0,shouldPrint:false,width:"100%",height:this.toolbarHeight,overflow:isc.Canvas.VISIBLE,backgroundColor:this.toolbarBackgroundColor});for(var i=0;i<this.controlGroups.length;i++){if(i>0)
+this.toolbar.addMember(this.$235());var _2=this[this.controlGroups[i]];if(!_2){this.logWarn("Unable to find countrol group '"+this.controlGroups[i]+"'. This group should be specified as an array of "+"control names, but is not present");continue}
+for(var j=0;j<_2.length;j++){this.addAutoChild(_2[j],{canFocus:false,isControl:true,controlName:_2[j],layoutAlign:isc.Canvas.CENTER},this.defaultControlConstructor,this.toolbar)}}}
+,isc.A.$235=function isc_RichTextEditor__createToolbarSeparator(){if(!this.$236)this.$236={autoDraw:false,width:12,height:"100%",src:this.toolbarSeparatorSrc};return isc.Img.create(this.$236)}
+,isc.A.setFocus=function isc_RichTextEditor_setFocus(_1){var _2=this.editArea;if(!_2)return;return _2.setFocus(_1)}
+,isc.A.$vk=function isc_RichTextEditor__setTabIndex(_1,_2){this.Super("$vk",arguments);if(this.editArea)this.editArea.$vk(this.getTabIndex(),_2)}
+,isc.A.$237=function isc_RichTextEditor__makeFontMap(_1,_2){var _3={$238:_1};return isc.addProperties(_3,_2)}
+,isc.A.$239=function isc_RichTextEditor__makeFontNamesMap(){return this.$237(this.fontPrompt,this.fontNames)}
+,isc.A.$24a=function isc_RichTextEditor__makeFontSizesMap(){return this.$237(this.fontSizePrompt,this.fontSizes)}
+,isc.A.fontSelector_autoMaker=function isc_RichTextEditor_fontSelector_autoMaker(_1){isc.addProperties(_1,{numCols:1,cellPadding:1,items:[{type:"select",name:"fontname",showTitle:false,tabIndex:-1,pickListProperties:{cellHeight:16,getCellValue:function(_4,_5,_6){var _2=this.Super("getCellValue",arguments),_3=_4?_4.fontname:null;if(_3&&_3!="$238"){_2="<SPAN style='font-family:"+_3+";'>"+_2+"</SPAN>"}
+return _2}},defaultValue:"$238",valueMap:this.$239(),pickValue:function(_4){this.Super("pickValue",arguments);if(_4!="$238"){this.form.creator.fireAction('setSelectionFont',_4)}}}]});return this.createAutoChild("fontSelector",_1)}
+,isc.A.fontSizeSelector_autoMaker=function isc_RichTextEditor_fontSizeSelector_autoMaker(_1){isc.addProperties(_1,{numCols:1,cellPadding:1,items:[{type:"select",name:"fontsize",showTitle:false,tabIndex:-1,defaultValue:"$238",valueMap:this.$24a(),pickValue:function(_2){this.Super("pickValue",arguments);if(_2!="$238"){this.form.creator.fireAction('setSelectionFontSize',_2)}}}]});return this.createAutoChild("fontSizeSelector",_1)}
+,isc.A.fireAction=function isc_RichTextEditor_fireAction(_1,_2){var _3=this.editArea;if(!_3||!_1||!_3[_1]||!isc.isA.Function(_3[_1]))
+return;this.editArea[_1](_2)}
+,isc.A.chooseColor=function isc_RichTextEditor_chooseColor(_1){this.colorChooser=isc.ColorPicker.getSharedColorPicker({creator:this,ID:this.getID()+"$24b",showNullValue:false,colorSelected:function(_2){this.creator.$24c(_2)},cancel:function(){this.Super("cancel",arguments);this.creator.editArea.focus()}})
+this.$24d=_1;this.colorChooser.show()}
+,isc.A.$24c=function isc_RichTextEditor__colorSelected(_1){var _2=this.$24d?"setSelectionColor":"setSelectionBackgroundColor";delete this.$24d;this.fireAction(_2,_1)}
+,isc.A.chooseTextColor=function isc_RichTextEditor_chooseTextColor(){this.chooseColor(true)}
+,isc.A.chooseBackgroundColor=function isc_RichTextEditor_chooseBackgroundColor(){this.chooseColor(false)}
+,isc.A.createLink=function isc_RichTextEditor_createLink(){var _1=this;isc.askForValue(this.linkUrlTitle,function(_2){if(_2==null)return;_1.fireAction("createLink",_2)},{defaultValue:"http://",width:320})}
+,isc.A.$233=function isc_RichTextEditor__valueChanged(_1,_2){if(this.valueChanged)this.valueChanged(_1,_2)}
+,isc.A.getValue=function isc_RichTextEditor_getValue(){if(this.editArea)this.value=this.editArea.getContents();return this.value}
+,isc.A.setValue=function isc_RichTextEditor_setValue(_1){this.value=_1;if(this.editArea)this.editArea.setContents(this.value)}
+);isc.B._maxIndex=isc.C+24;isc.RichTextEditor.registerStringMethods({valueChanged:"oldValue,newValue"});isc.ClassFactory.defineClass("RichTextItem",isc.CanvasItem);isc.A=isc.RichTextItem.getPrototype();isc.A.canFocus=true;isc.A.shouldSaveValue=true;isc.A.showTitle=false;isc.A.startRow=true;isc.A.endRow=true;isc.A.colSpan="*";isc.A.width=550;isc.A.canvasConstructor="RichTextEditor";isc.A=isc.RichTextItem.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$18y=function isc_RichTextItem__createCanvas(){var _1=this.getValue();_1=this.mapValueToDisplay(_1);var _2={ID:this.getID()+"$21b",width:this.width,height:this.height,getBrowserSpellCheck:function(){return this.canvasItem.getBrowserSpellCheck()},value:_1,valueChanged:"this.canvasItem.updateValue()",editAreaFocusChanged:function(){this.canvasItem.editAreaFocusChanged()}}
+var _3=this.controlGroups;if(_3!=null){var _4="Properties",_5="_autoMaker",_6="Constructor";_2.controlGroups=_3;for(var i=0;i<_3.length;i++){if(this[_3[i]]){var _8=_3[i],_9=this[_8];_2[_8]=_9;for(var _10=0;_10<_9.length;_10++){var _11=_9[_10]+_4,_12=_9[_10]+_5,_13=_9[_10]+_6;if(this[_11])_2[_11]=this[_11];if(this[_12])_2[_12]=this[_12];if(this[_13])
+_2[_13]=this[_13]}}}}
+if(this.defaultControlConstructor!=null)
+_2.defaultControlConstructor=this.defaultControlConstructor;this.canvas=_2;this.Super("$18y",arguments)}
+,isc.A.editAreaFocusChanged=function isc_RichTextItem_editAreaFocusChanged(){if(this.canvas.editArea.hasFocus)this.elementFocus();else this.elementBlur()}
+,isc.A.mapValueToDisplay=function isc_RichTextItem_mapValueToDisplay(_1){var _2=this.Super("mapValueToDisplay",_1);if(_2==null)return"";return _2}
+,isc.A.setValue=function isc_RichTextItem_setValue(_1){this.Super("setValue",arguments);_1=this._value;this.canvas.setValue(this.mapValueToDisplay(_1));this.updateValue()}
+,isc.A.getValue=function isc_RichTextItem_getValue(){if(this.canvas)this.updateValue();return this.Super("getValue",arguments)}
+,isc.A.updateValue=function isc_RichTextItem_updateValue(){if(!this.canvas)return
+var _1=this.canvas.getValue();return this.$10y(_1)}
+);isc.B._maxIndex=isc.C+6;isc._moduleEnd=isc._RichTextEditor_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('RichTextEditor module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'RichTextEditor'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_RichTextEditor.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_RichTextEditor.js.gz
new file mode 100755
index 0000000..628d076
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_RichTextEditor.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SalesForce.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SalesForce.js
new file mode 100755
index 0000000..2558a6c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SalesForce.js
@@ -0,0 +1,4584 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_SalesForce){isc.module_SalesForce=1;isc._moduleStart=isc._SalesForce_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'SalesForce load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.SchemaSet.create({
+qualifyAll:true,
+schemaNamespace:"urn:sobject.partner.soap.sforce.com",
+serviceNamespace:"urn:partner.soap.sforce.com",
+schemaImports:[
+{
+location:"",
+namespace:"urn:partner.soap.sforce.com"
+}
+],
+schema:[
+isc.XSComplexType.create({
+ID:"sObject",
+mustQualify:true,
+xsdAnyElement:true,
+fields:[
+{
+name:"type",
+type:"string",
+xmlRequired:true
+},
+{
+name:"fieldsToNull",
+nillable:"true",
+type:"string",
+xmlRequired:false
+},
+{
+name:"Id",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+]
+})
+isc.SchemaSet.create({
+qualifyAll:true,
+schemaNamespace:"urn:partner.soap.sforce.com",
+serviceNamespace:"urn:partner.soap.sforce.com",
+schemaImports:[
+{
+location:"",
+namespace:"urn:sobject.partner.soap.sforce.com"
+}
+],
+schema:[
+isc.XSElement.create({
+ID:"login",
+mustQualify:true,
+fields:[
+{
+name:"username",
+type:"string",
+xmlRequired:true
+},
+{
+name:"password",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"loginResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"LoginResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"describeSObject",
+mustQualify:true,
+fields:[
+{
+name:"sObjectType",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"describeSObjectResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+nillable:"true",
+type:"DescribeSObjectResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"describeSObjects",
+mustQualify:true,
+fields:[
+{
+name:"sObjectType",
+type:"string",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"describeSObjectsResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+nillable:"true",
+type:"DescribeSObjectResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"describeGlobal",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"describeGlobalResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"DescribeGlobalResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"describeLayout",
+mustQualify:true,
+fields:[
+{
+name:"sObjectType",
+type:"string",
+xmlRequired:true
+},
+{
+name:"recordTypeIds",
+type:"ID",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"describeLayoutResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+nillable:"true",
+type:"DescribeLayoutResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"describeSoftphoneLayout",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"describeSoftphoneLayoutResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+nillable:"true",
+type:"DescribeSoftphoneLayoutResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"describeTabs",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"describeTabsResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+nillable:"true",
+type:"DescribeTabSetResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"create",
+mustQualify:true,
+fields:[
+{
+name:"sObjects",
+type:"sObject",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"createResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"SaveResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"update",
+mustQualify:true,
+fields:[
+{
+name:"sObjects",
+type:"sObject",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"updateResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"SaveResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"upsert",
+mustQualify:true,
+fields:[
+{
+name:"externalIDFieldName",
+type:"string",
+xmlRequired:true
+},
+{
+name:"sObjects",
+type:"sObject",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"upsertResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"UpsertResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"merge",
+mustQualify:true,
+fields:[
+{
+name:"request",
+type:"MergeRequest",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"mergeResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"MergeResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"delete",
+mustQualify:true,
+fields:[
+{
+name:"ids",
+type:"ID",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"deleteResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"DeleteResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"undelete",
+mustQualify:true,
+fields:[
+{
+name:"ids",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"undeleteResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"UndeleteResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"process",
+mustQualify:true,
+fields:[
+{
+name:"actions",
+type:"ProcessRequest",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"processResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"ProcessResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"retrieve",
+mustQualify:true,
+fields:[
+{
+name:"fieldList",
+type:"string",
+xmlRequired:true
+},
+{
+name:"sObjectType",
+type:"string",
+xmlRequired:true
+},
+{
+name:"ids",
+type:"ID",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"retrieveResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+nillable:"true",
+type:"sObject",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"convertLead",
+mustQualify:true,
+fields:[
+{
+name:"leadConverts",
+type:"LeadConvert",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"convertLeadResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"LeadConvertResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"getUpdated",
+mustQualify:true,
+fields:[
+{
+name:"sObjectType",
+type:"string",
+xmlRequired:true
+},
+{
+name:"startDate",
+type:"dateTime",
+xmlRequired:true
+},
+{
+name:"endDate",
+type:"dateTime",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"getUpdatedResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"GetUpdatedResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"getDeleted",
+mustQualify:true,
+fields:[
+{
+name:"sObjectType",
+type:"string",
+xmlRequired:true
+},
+{
+name:"startDate",
+type:"dateTime",
+xmlRequired:true
+},
+{
+name:"endDate",
+type:"dateTime",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"getDeletedResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"GetDeletedResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"query",
+mustQualify:true,
+fields:[
+{
+name:"queryString",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"queryResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"QueryResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"queryAll",
+mustQualify:true,
+fields:[
+{
+name:"queryString",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"queryAllResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"QueryResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"queryMore",
+mustQualify:true,
+fields:[
+{
+name:"queryLocator",
+type:"QueryLocator",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"queryMoreResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"QueryResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"search",
+mustQualify:true,
+fields:[
+{
+name:"searchString",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"searchResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"SearchResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"getServerTimestamp",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"getServerTimestampResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"GetServerTimestampResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"setPassword",
+mustQualify:true,
+fields:[
+{
+name:"userId",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"password",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"setPasswordResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"SetPasswordResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"resetPassword",
+mustQualify:true,
+fields:[
+{
+name:"userId",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"resetPasswordResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"ResetPasswordResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"getUserInfo",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"getUserInfoResponse",
+mustQualify:true,
+fields:[
+{
+name:"result",
+type:"GetUserInfoResult",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"SessionHeader",
+mustQualify:true,
+fields:[
+{
+name:"sessionId",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"LoginScopeHeader",
+mustQualify:true,
+fields:[
+{
+name:"organizationId",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"CallOptions",
+mustQualify:true,
+fields:[
+{
+name:"client",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"QueryOptions",
+mustQualify:true,
+fields:[
+{
+name:"batchSize",
+type:"int",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"MruHeader",
+mustQualify:true,
+fields:[
+{
+name:"updateMru",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"EmailHeader",
+mustQualify:true,
+fields:[
+{
+name:"triggerAutoResponseEmail",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"triggerOtherEmail",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"triggerUserEmail",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"AssignmentRuleHeader",
+mustQualify:true,
+fields:[
+{
+name:"assignmentRuleId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"useDefaultRule",
+nillable:"true",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"UserTerritoryDeleteHeader",
+mustQualify:true,
+fields:[
+{
+name:"transferToUserId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.SimpleType.create({
+inheritsFrom:"string",
+name:"ID",
+xmlNonEmpty:true,
+xmlSource:"SimpleType",
+validators:[
+{
+max:18.0,
+min:18.0,
+type:"lengthRange"
+},
+{
+expression:"[a-zA-Z0-9]{18}",
+type:"regexp"
+}
+]
+})
+,
+isc.SimpleType.create({
+inheritsFrom:"string",
+name:"QueryLocator",
+xmlSource:"SimpleType"
+})
+,
+isc.XSComplexType.create({
+ID:"QueryResult",
+mustQualify:true,
+fields:[
+{
+name:"done",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"queryLocator",
+nillable:"true",
+type:"QueryLocator",
+xmlRequired:true
+},
+{
+name:"records",
+nillable:"true",
+type:"sObject",
+xmlRequired:false
+},
+{
+name:"size",
+type:"int",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"SearchResult",
+mustQualify:true,
+fields:[
+{
+name:"searchRecords",
+type:"SearchRecord",
+xmlRequired:false
+},
+{
+name:"sforceReserved",
+type:"string",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"SearchRecord",
+mustQualify:true,
+fields:[
+{
+name:"record",
+type:"sObject",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"GetUpdatedResult",
+mustQualify:true,
+fields:[
+{
+name:"ids",
+type:"ID",
+xmlRequired:false
+},
+{
+name:"latestDateCovered",
+type:"dateTime",
+xmlRequired:true
+},
+{
+name:"sforceReserved",
+type:"string",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"GetDeletedResult",
+mustQualify:true,
+fields:[
+{
+name:"deletedRecords",
+type:"DeletedRecord",
+xmlRequired:false
+},
+{
+name:"earliestDateAvailable",
+type:"dateTime",
+xmlRequired:true
+},
+{
+name:"latestDateCovered",
+type:"dateTime",
+xmlRequired:true
+},
+{
+name:"sforceReserved",
+type:"string",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DeletedRecord",
+mustQualify:true,
+fields:[
+{
+name:"deletedDate",
+type:"dateTime",
+xmlRequired:true
+},
+{
+name:"id",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"GetServerTimestampResult",
+mustQualify:true,
+fields:[
+{
+name:"timestamp",
+type:"dateTime",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"SetPasswordResult",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"ResetPasswordResult",
+mustQualify:true,
+fields:[
+{
+name:"password",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"GetUserInfoResult",
+mustQualify:true,
+fields:[
+{
+name:"accessibilityMode",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"currencySymbol",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"licenseType",
+type:"string",
+xmlRequired:true
+},
+{
+name:"organizationId",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"organizationMultiCurrency",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"organizationName",
+type:"string",
+xmlRequired:true
+},
+{
+name:"profileId",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"roleId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"userDefaultCurrencyIsoCode",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"userEmail",
+type:"string",
+xmlRequired:true
+},
+{
+name:"userFullName",
+type:"string",
+xmlRequired:true
+},
+{
+name:"userId",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"userLanguage",
+type:"string",
+xmlRequired:true
+},
+{
+name:"userLocale",
+type:"string",
+xmlRequired:true
+},
+{
+name:"userName",
+type:"string",
+xmlRequired:true
+},
+{
+name:"userTimeZone",
+type:"string",
+xmlRequired:true
+},
+{
+name:"userUiSkin",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"LoginResult",
+mustQualify:true,
+fields:[
+{
+name:"passwordExpired",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"serverUrl",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"sessionId",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"userId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"userInfo",
+type:"GetUserInfoResult",
+xmlRequired:false
+}
+]
+})
+,
+isc.SimpleType.create({
+inheritsFrom:"string",
+name:"StatusCode",
+xmlSource:"SimpleType",
+valueMap:[
+"ALREADY_IN_PROCESS",
+"ASSIGNEE_TYPE_REQUIRED",
+"BAD_CUSTOM_ENTITY_PARENT_DOMAIN",
+"CANNOT_CASCADE_PRODUCT_ACTIVE",
+"CANNOT_CREATE_ANOTHER_MANAGED_PACKAGE",
+"CANNOT_DEACTIVATE_DIVISION",
+"CANNOT_DELETE_MANAGED_OBJECT",
+"CANNOT_DISABLE_LAST_ADMIN",
+"CANNOT_ENABLE_IP_RESTRICT_REQUESTS",
+"CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY",
+"CANNOT_MODIFY_MANAGED_OBJECT",
+"CANNOT_REPARENT_RECORD",
+"CANNOT_RESOLVE_NAME",
+"CANNOT_UPDATE_CONVERTED_LEAD",
+"CANT_DISABLE_CORP_CURRENCY",
+"CANT_UNSET_CORP_CURRENCY",
+"CHILD_SHARE_FAILS_PARENT",
+"CIRCULAR_DEPENDENCY",
+"CUSTOM_CLOB_FIELD_LIMIT_EXCEEDED",
+"CUSTOM_ENTITY_OR_FIELD_LIMIT",
+"CUSTOM_FIELD_INDEX_LIMIT_EXCEEDED",
+"CUSTOM_INDEX_EXISTS",
+"CUSTOM_LINK_LIMIT_EXCEEDED",
+"CUSTOM_TAB_LIMIT_EXCEEDED",
+"DELETE_FAILED",
+"DELETE_REQUIRED_ON_CASCADE",
+"DEPENDENCY_EXISTS",
+"DUPLICATE_CASE_SOLUTION",
+"DUPLICATE_CUSTOM_ENTITY_DEFINITION",
+"DUPLICATE_CUSTOM_TAB_MOTIF",
+"DUPLICATE_DEVELOPER_NAME",
+"DUPLICATE_EXTERNAL_ID",
+"DUPLICATE_MASTER_LABEL",
+"DUPLICATE_USERNAME",
+"DUPLICATE_VALUE",
+"EMPTY_SCONTROL_FILE_NAME",
+"ENTITY_FAILED_IFLASTMODIFIED_ON_UPDATE",
+"ENTITY_IS_ARCHIVED",
+"ENTITY_IS_DELETED",
+"ENTITY_IS_LOCKED",
+"FAILED_ACTIVATION",
+"FIELD_CUSTOM_VALIDATION_EXCEPTION",
+"FIELD_INTEGRITY_EXCEPTION",
+"IMAGE_TOO_LARGE",
+"INACTIVE_OWNER_OR_USER",
+"INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY",
+"INSUFFICIENT_ACCESS_OR_READONLY",
+"INVALID_ACCESS_LEVEL",
+"INVALID_ARGUMENT_TYPE",
+"INVALID_ASSIGNEE_TYPE",
+"INVALID_ASSIGNMENT_RULE",
+"INVALID_BATCH_OPERATION",
+"INVALID_CREDIT_CARD_INFO",
+"INVALID_CROSS_REFERENCE_KEY",
+"INVALID_CROSS_REFERENCE_TYPE_FOR_FIELD",
+"INVALID_CURRENCY_CONV_RATE",
+"INVALID_CURRENCY_ISO",
+"INVALID_EMAIL_ADDRESS",
+"INVALID_EMPTY_KEY_OWNER",
+"INVALID_FIELD",
+"INVALID_FIELD_FOR_INSERT_UPDATE",
+"INVALID_FILTER_ACTION",
+"INVALID_ID_FIELD",
+"INVALID_INET_ADDRESS",
+"INVALID_LINEITEM_CLONE_STATE",
+"INVALID_MASTER_OR_TRANSLATED_SOLUTION",
+"INVALID_OPERATION",
+"INVALID_OPERATOR",
+"INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST",
+"INVALID_PERSON_ACCOUNT_OPERATION",
+"INVALID_STATUS",
+"INVALID_TYPE",
+"INVALID_TYPE_FOR_OPERATION",
+"INVALID_TYPE_ON_FIELD_IN_RECORD",
+"IP_RANGE_LIMIT_EXCEEDED",
+"LAST_MODIFIED_SINCE_TOO_OLD",
+"LICENSE_LIMIT_EXCEEDED",
+"LIMIT_EXCEEDED",
+"MALFORMED_ID",
+"MANAGER_NOT_DEFINED",
+"MAXIMUM_CCEMAILS_EXCEEDED",
+"MAXIMUM_DASHBOARD_COMPONENTS_EXCEEDED",
+"MAXIMUM_SIZE_OF_ATTACHMENT",
+"MAXIMUM_SIZE_OF_DOCUMENT",
+"MAX_ACTIONS_PER_RULE_EXCEEDED",
+"MAX_ACTIVE_RULES_EXCEEDED",
+"MAX_APPROVAL_STEPS_EXCEEDED",
+"MAX_RULES_EXCEEDED",
+"MAX_RULE_ENTRIES_EXCEEDED",
+"MAX_TASK_DESCRIPTION_EXCEEEDED",
+"MAX_TM_RULES_EXCEEDED",
+"MAX_TM_RULE_ITEMS_EXCEEDED",
+"MISSING_ARGUMENT",
+"NONUNIQUE_SHIPPING_ADDRESS",
+"NO_APPLICABLE_PROCESS",
+"NUMBER_OUTSIDE_VALID_RANGE",
+"NUM_HISTORY_FIELDS_BY_SOBJECT_EXCEEDED",
+"PRIVATE_CONTACT_ON_ASSET",
+"REQUIRED_FIELD_MISSING",
+"SHARE_NEEDED_FOR_CHILD_OWNER",
+"STANDARD_PRICE_NOT_DEFINED",
+"STORAGE_LIMIT_EXCEEDED",
+"TABSET_LIMIT_EXCEEDED",
+"TERRITORY_REALIGN_IN_PROGRESS",
+"TEXT_DATA_OUTSIDE_SUPPORTED_CHARSET",
+"TOO_MANY_ENUM_VALUE",
+"TRANSFER_REQUIRES_READ",
+"UNAVAILABLE_RECORDTYPE_EXCEPTION",
+"UNDELETE_FAILED",
+"UNKNOWN_EXCEPTION",
+"UNSPECIFIED_EMAIL_ADDRESS"
+]
+})
+,
+isc.XSComplexType.create({
+ID:"Error",
+mustQualify:true,
+fields:[
+{
+name:"fields",
+nillable:"true",
+type:"string",
+xmlRequired:false
+},
+{
+name:"message",
+type:"string",
+xmlRequired:true
+},
+{
+name:"statusCode",
+type:"StatusCode",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"SaveResult",
+mustQualify:true,
+fields:[
+{
+name:"errors",
+type:"Error",
+xmlRequired:false
+},
+{
+name:"id",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"success",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"UpsertResult",
+mustQualify:true,
+fields:[
+{
+name:"created",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"errors",
+type:"Error",
+xmlRequired:false
+},
+{
+name:"id",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"success",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"MergeRequest",
+mustQualify:true,
+fields:[
+{
+name:"masterRecord",
+type:"sObject",
+xmlRequired:true
+},
+{
+name:"recordToMergeIds",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"MergeResult",
+mustQualify:true,
+fields:[
+{
+name:"errors",
+type:"Error",
+xmlRequired:false
+},
+{
+name:"id",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"mergedRecordIds",
+type:"ID",
+xmlRequired:false
+},
+{
+name:"success",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"updatedRelatedIds",
+type:"ID",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"ProcessRequest",
+mustQualify:true,
+fields:[
+{
+name:"comments",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"nextApproverIds",
+nillable:"true",
+type:"ID",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"ProcessSubmitRequest",
+inheritsFrom:"ProcessRequest",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+{
+name:"objectId",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"ProcessWorkitemRequest",
+inheritsFrom:"ProcessRequest",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+{
+name:"action",
+type:"string",
+xmlRequired:true
+},
+{
+name:"workitemId",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"ProcessResult",
+mustQualify:true,
+fields:[
+{
+name:"entityId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"errors",
+type:"Error",
+xmlRequired:false
+},
+{
+name:"instanceId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"instanceStatus",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"newWorkitemIds",
+nillable:"true",
+type:"ID",
+xmlRequired:false
+},
+{
+name:"success",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DeleteResult",
+mustQualify:true,
+fields:[
+{
+name:"errors",
+nillable:"true",
+type:"Error",
+xmlRequired:false
+},
+{
+name:"id",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"success",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"UndeleteResult",
+mustQualify:true,
+fields:[
+{
+name:"errors",
+type:"Error",
+xmlRequired:false
+},
+{
+name:"id",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"success",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"LeadConvert",
+mustQualify:true,
+fields:[
+{
+name:"accountId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"contactId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"convertedStatus",
+type:"string",
+xmlRequired:true
+},
+{
+name:"doNotCreateOpportunity",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"leadId",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"opportunityName",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"overwriteLeadSource",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"ownerId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"sendNotificationEmail",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"LeadConvertResult",
+mustQualify:true,
+fields:[
+{
+name:"accountId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"contactId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"errors",
+type:"Error",
+xmlRequired:false
+},
+{
+name:"leadId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"opportunityId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"success",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeSObjectResult",
+mustQualify:true,
+fields:[
+{
+name:"activateable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"childRelationships",
+type:"ChildRelationship",
+xmlRequired:false
+},
+{
+name:"createable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"custom",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"deletable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"fields",
+nillable:"true",
+type:"Field",
+xmlRequired:false
+},
+{
+name:"keyPrefix",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"label",
+type:"string",
+xmlRequired:true
+},
+{
+name:"labelPlural",
+type:"string",
+xmlRequired:true
+},
+{
+name:"layoutable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"mergeable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"name",
+type:"string",
+xmlRequired:true
+},
+{
+name:"queryable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"recordTypeInfos",
+type:"RecordTypeInfo",
+xmlRequired:false
+},
+{
+name:"replicateable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"retrieveable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"searchable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"undeletable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"updateable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"urlDetail",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"urlEdit",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"urlNew",
+nillable:"true",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"ChildRelationship",
+mustQualify:true,
+fields:[
+{
+name:"cascadeDelete",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"childSObject",
+type:"string",
+xmlRequired:true
+},
+{
+name:"field",
+type:"string",
+xmlRequired:true
+},
+{
+name:"relationshipName",
+type:"string",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeGlobalResult",
+mustQualify:true,
+fields:[
+{
+name:"encoding",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"maxBatchSize",
+type:"int",
+xmlRequired:true
+},
+{
+name:"types",
+nillable:"true",
+type:"string",
+xmlRequired:false
+}
+]
+})
+,
+isc.SimpleType.create({
+inheritsFrom:"string",
+name:"fieldType",
+xmlSource:"SimpleType",
+valueMap:[
+"string",
+"picklist",
+"multipicklist",
+"combobox",
+"reference",
+"base64",
+"boolean",
+"currency",
+"textarea",
+"int",
+"double",
+"percent",
+"phone",
+"id",
+"date",
+"datetime",
+"url",
+"email",
+"anyType"
+]
+})
+,
+isc.SimpleType.create({
+inheritsFrom:"string",
+name:"soapType",
+xmlSource:"SimpleType",
+valueMap:[
+"tns:ID",
+"xsd:base64Binary",
+"xsd:boolean",
+"xsd:double",
+"xsd:int",
+"xsd:string",
+"xsd:date",
+"xsd:dateTime",
+"xsd:anyType"
+]
+})
+,
+isc.XSComplexType.create({
+ID:"Field",
+mustQualify:true,
+fields:[
+{
+name:"autoNumber",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"byteLength",
+type:"int",
+xmlRequired:true
+},
+{
+name:"calculated",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"calculatedFormula",
+type:"string",
+xmlRequired:false
+},
+{
+name:"caseSensitive",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"controllerName",
+type:"string",
+xmlRequired:false
+},
+{
+name:"createable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"custom",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"defaultValueFormula",
+type:"string",
+xmlRequired:false
+},
+{
+name:"defaultedOnCreate",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"dependentPicklist",
+type:"boolean",
+xmlRequired:false
+},
+{
+name:"digits",
+type:"int",
+xmlRequired:true
+},
+{
+name:"externalId",
+type:"boolean",
+xmlRequired:false
+},
+{
+name:"filterable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"htmlFormatted",
+type:"boolean",
+xmlRequired:false
+},
+{
+name:"label",
+type:"string",
+xmlRequired:true
+},
+{
+name:"length",
+type:"int",
+xmlRequired:true
+},
+{
+name:"name",
+type:"string",
+xmlRequired:true
+},
+{
+name:"nameField",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"namePointing",
+type:"boolean",
+xmlRequired:false
+},
+{
+name:"nillable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"picklistValues",
+nillable:"true",
+type:"PicklistEntry",
+xmlRequired:false
+},
+{
+name:"precision",
+type:"int",
+xmlRequired:true
+},
+{
+name:"referenceTo",
+nillable:"true",
+type:"string",
+xmlRequired:false
+},
+{
+name:"relationshipName",
+type:"string",
+xmlRequired:false
+},
+{
+name:"restrictedPicklist",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"scale",
+type:"int",
+xmlRequired:true
+},
+{
+name:"soapType",
+type:"soapType",
+xmlRequired:true
+},
+{
+name:"sortable",
+type:"boolean",
+xmlRequired:false
+},
+{
+name:"type",
+type:"fieldType",
+xmlRequired:true
+},
+{
+name:"unique",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"updateable",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"PicklistEntry",
+mustQualify:true,
+fields:[
+{
+name:"active",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"defaultValue",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"label",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"validFor",
+type:"base64Binary",
+xmlRequired:false
+},
+{
+name:"value",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeSoftphoneLayoutResult",
+mustQualify:true,
+fields:[
+{
+name:"callTypes",
+type:"DescribeSoftphoneLayoutCallType",
+xmlRequired:true
+},
+{
+name:"id",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"name",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeSoftphoneLayoutCallType",
+mustQualify:true,
+fields:[
+{
+name:"infoFields",
+type:"DescribeSoftphoneLayoutInfoField",
+xmlRequired:true
+},
+{
+name:"name",
+type:"string",
+xmlRequired:true
+},
+{
+name:"sections",
+type:"DescribeSoftphoneLayoutSection",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeSoftphoneLayoutInfoField",
+mustQualify:true,
+fields:[
+{
+name:"name",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeSoftphoneLayoutSection",
+mustQualify:true,
+fields:[
+{
+name:"entityApiName",
+type:"string",
+xmlRequired:true
+},
+{
+name:"items",
+type:"DescribeSoftphoneLayoutItem",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeSoftphoneLayoutItem",
+mustQualify:true,
+fields:[
+{
+name:"itemApiName",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeLayoutResult",
+mustQualify:true,
+fields:[
+{
+name:"layouts",
+type:"DescribeLayout",
+xmlRequired:true
+},
+{
+name:"recordTypeMappings",
+type:"RecordTypeMapping",
+xmlRequired:false
+},
+{
+name:"recordTypeSelectorRequired",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeLayout",
+mustQualify:true,
+fields:[
+{
+name:"detailLayoutSections",
+type:"DescribeLayoutSection",
+xmlRequired:false
+},
+{
+name:"editLayoutSections",
+type:"DescribeLayoutSection",
+xmlRequired:false
+},
+{
+name:"id",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"relatedLists",
+type:"RelatedList",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeLayoutSection",
+mustQualify:true,
+fields:[
+{
+name:"columns",
+type:"int",
+xmlRequired:true
+},
+{
+name:"heading",
+type:"string",
+xmlRequired:true
+},
+{
+name:"layoutRows",
+type:"DescribeLayoutRow",
+xmlRequired:true
+},
+{
+name:"rows",
+type:"int",
+xmlRequired:true
+},
+{
+name:"useCollapsibleSection",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"useHeading",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeLayoutRow",
+mustQualify:true,
+fields:[
+{
+name:"layoutItems",
+type:"DescribeLayoutItem",
+xmlRequired:true
+},
+{
+name:"numItems",
+type:"int",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeLayoutItem",
+mustQualify:true,
+fields:[
+{
+name:"editable",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"label",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"layoutComponents",
+type:"DescribeLayoutComponent",
+xmlRequired:false
+},
+{
+name:"placeholder",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"required",
+type:"boolean",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeLayoutComponent",
+mustQualify:true,
+fields:[
+{
+name:"displayLines",
+type:"int",
+xmlRequired:true
+},
+{
+name:"tabOrder",
+type:"int",
+xmlRequired:true
+},
+{
+name:"type",
+type:"layoutComponentType",
+xmlRequired:true
+},
+{
+name:"value",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.SimpleType.create({
+inheritsFrom:"string",
+name:"layoutComponentType",
+xmlSource:"SimpleType",
+valueMap:[
+"Field",
+"Separator"
+]
+})
+,
+isc.XSComplexType.create({
+ID:"RecordTypeInfo",
+mustQualify:true,
+fields:[
+{
+name:"available",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"defaultRecordTypeMapping",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"name",
+type:"string",
+xmlRequired:true
+},
+{
+name:"recordTypeId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"RecordTypeMapping",
+mustQualify:true,
+fields:[
+{
+name:"available",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"defaultRecordTypeMapping",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"layoutId",
+type:"ID",
+xmlRequired:true
+},
+{
+name:"name",
+type:"string",
+xmlRequired:true
+},
+{
+name:"picklistsForRecordType",
+nillable:"true",
+type:"PicklistForRecordType",
+xmlRequired:false
+},
+{
+name:"recordTypeId",
+nillable:"true",
+type:"ID",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"PicklistForRecordType",
+mustQualify:true,
+fields:[
+{
+name:"picklistName",
+type:"string",
+xmlRequired:true
+},
+{
+name:"picklistValues",
+nillable:"true",
+type:"PicklistEntry",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"RelatedList",
+mustQualify:true,
+fields:[
+{
+name:"columns",
+type:"RelatedListColumn",
+xmlRequired:true
+},
+{
+name:"custom",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"field",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"label",
+type:"string",
+xmlRequired:true
+},
+{
+name:"limitRows",
+type:"int",
+xmlRequired:true
+},
+{
+name:"name",
+type:"string",
+xmlRequired:true
+},
+{
+name:"sobject",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"sort",
+type:"RelatedListSort",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"RelatedListColumn",
+mustQualify:true,
+fields:[
+{
+name:"field",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"format",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"label",
+type:"string",
+xmlRequired:true
+},
+{
+name:"name",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"RelatedListSort",
+mustQualify:true,
+fields:[
+{
+name:"ascending",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"column",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeTabSetResult",
+mustQualify:true,
+fields:[
+{
+name:"label",
+type:"string",
+xmlRequired:true
+},
+{
+name:"logoUrl",
+type:"string",
+xmlRequired:true
+},
+{
+name:"namespace",
+type:"string",
+xmlRequired:false
+},
+{
+name:"selected",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"tabs",
+type:"DescribeTab",
+xmlRequired:false
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"DescribeTab",
+mustQualify:true,
+fields:[
+{
+name:"custom",
+type:"boolean",
+xmlRequired:true
+},
+{
+name:"label",
+type:"string",
+xmlRequired:true
+},
+{
+name:"sobjectName",
+nillable:"true",
+type:"string",
+xmlRequired:true
+},
+{
+name:"url",
+type:"string",
+xmlRequired:true
+}
+]
+})
+]
+})
+isc.SchemaSet.create({
+qualifyAll:true,
+schemaNamespace:"urn:fault.partner.soap.sforce.com",
+serviceNamespace:"urn:partner.soap.sforce.com",
+schemaImports:[
+],
+schema:[
+isc.SimpleType.create({
+inheritsFrom:"string",
+name:"ExceptionCode",
+xmlSource:"SimpleType",
+valueMap:[
+"API_CURRENTLY_DISABLED",
+"API_DISABLED_FOR_ORG",
+"CLIENT_NOT_ACCESSIBLE_FOR_USER",
+"CLIENT_REQUIRE_UPDATE_FOR_USER",
+"EMAIL_BATCH_SIZE_LIMIT_EXCEEDED",
+"EMAIL_TO_CASE_INVALID_ROUTING",
+"EMAIL_TO_CASE_LIMIT_EXCEEDED",
+"EMAIL_TO_CASE_NOT_ENABLED",
+"EXCEEDED_ID_LIMIT",
+"EXCEEDED_LEAD_CONVERT_LIMIT",
+"EXCEEDED_MAX_SIZE_REQUEST",
+"EXCEEDED_MAX_TYPES_LIMIT",
+"EXCEEDED_QUOTA",
+"FUNCTIONALITY_NOT_ENABLED",
+"INACTIVE_OWNER_OR_USER",
+"INSUFFICIENT_ACCESS",
+"INVALID_ASSIGNMENT_RULE",
+"INVALID_BATCH_SIZE",
+"INVALID_CLIENT",
+"INVALID_CROSS_REFERENCE_KEY",
+"INVALID_FIELD",
+"INVALID_ID_FIELD",
+"INVALID_LOCATOR",
+"INVALID_LOGIN",
+"INVALID_NEW_PASSWORD",
+"INVALID_OPERATION",
+"INVALID_OPERATION_WITH_EXPIRED_PASSWORD",
+"INVALID_QUERY_FILTER_OPERATOR",
+"INVALID_QUERY_LOCATOR",
+"INVALID_QUERY_SCOPE",
+"INVALID_REPLICATION_DATE",
+"INVALID_SEARCH",
+"INVALID_SEARCH_SCOPE",
+"INVALID_SESSION_ID",
+"INVALID_SOAP_HEADER",
+"INVALID_SSO_GATEWAY_URL",
+"INVALID_TYPE",
+"INVALID_TYPE_FOR_OPERATION",
+"LOGIN_DURING_RESTRICTED_DOMAIN",
+"LOGIN_DURING_RESTRICTED_TIME",
+"MALFORMED_ID",
+"MALFORMED_QUERY",
+"MALFORMED_SEARCH",
+"MISSING_ARGUMENT",
+"NOT_MODIFIED",
+"NUMBER_OUTSIDE_VALID_RANGE",
+"OPERATION_TOO_LARGE",
+"ORG_LOCKED",
+"PASSWORD_LOCKOUT",
+"QUERY_TIMEOUT",
+"QUERY_TOO_COMPLICATED",
+"REQUEST_LIMIT_EXCEEDED",
+"REQUEST_RUNNING_TOO_LONG",
+"SERVER_UNAVAILABLE",
+"SSO_SERVICE_DOWN",
+"TRIAL_EXPIRED",
+"UNKNOWN_EXCEPTION",
+"UNSUPPORTED_API_VERSION",
+"UNSUPPORTED_CLIENT"
+]
+})
+,
+isc.SimpleType.create({
+inheritsFrom:"QName",
+name:"FaultCode",
+xmlSource:"SimpleType",
+valueMap:[
+"fns:API_CURRENTLY_DISABLED",
+"fns:API_DISABLED_FOR_ORG",
+"fns:CLIENT_NOT_ACCESSIBLE_FOR_USER",
+"fns:CLIENT_REQUIRE_UPDATE_FOR_USER",
+"fns:EMAIL_BATCH_SIZE_LIMIT_EXCEEDED",
+"fns:EMAIL_TO_CASE_INVALID_ROUTING",
+"fns:EMAIL_TO_CASE_LIMIT_EXCEEDED",
+"fns:EMAIL_TO_CASE_NOT_ENABLED",
+"fns:EXCEEDED_ID_LIMIT",
+"fns:EXCEEDED_LEAD_CONVERT_LIMIT",
+"fns:EXCEEDED_MAX_SIZE_REQUEST",
+"fns:EXCEEDED_MAX_TYPES_LIMIT",
+"fns:EXCEEDED_QUOTA",
+"fns:FUNCTIONALITY_NOT_ENABLED",
+"fns:INACTIVE_OWNER_OR_USER",
+"fns:INSUFFICIENT_ACCESS",
+"fns:INVALID_ASSIGNMENT_RULE",
+"fns:INVALID_BATCH_SIZE",
+"fns:INVALID_CLIENT",
+"fns:INVALID_CROSS_REFERENCE_KEY",
+"fns:INVALID_FIELD",
+"fns:INVALID_ID_FIELD",
+"fns:INVALID_LOCATOR",
+"fns:INVALID_LOGIN",
+"fns:INVALID_NEW_PASSWORD",
+"fns:INVALID_OPERATION",
+"fns:INVALID_OPERATION_WITH_EXPIRED_PASSWORD",
+"fns:INVALID_QUERY_FILTER_OPERATOR",
+"fns:INVALID_QUERY_LOCATOR",
+"fns:INVALID_QUERY_SCOPE",
+"fns:INVALID_REPLICATION_DATE",
+"fns:INVALID_SEARCH",
+"fns:INVALID_SEARCH_SCOPE",
+"fns:INVALID_SESSION_ID",
+"fns:INVALID_SOAP_HEADER",
+"fns:INVALID_SSO_GATEWAY_URL",
+"fns:INVALID_TYPE",
+"fns:INVALID_TYPE_FOR_OPERATION",
+"fns:LOGIN_DURING_RESTRICTED_DOMAIN",
+"fns:LOGIN_DURING_RESTRICTED_TIME",
+"fns:MALFORMED_ID",
+"fns:MALFORMED_QUERY",
+"fns:MALFORMED_SEARCH",
+"fns:MISSING_ARGUMENT",
+"fns:NOT_MODIFIED",
+"fns:NUMBER_OUTSIDE_VALID_RANGE",
+"fns:OPERATION_TOO_LARGE",
+"fns:ORG_LOCKED",
+"fns:PASSWORD_LOCKOUT",
+"fns:QUERY_TIMEOUT",
+"fns:QUERY_TOO_COMPLICATED",
+"fns:REQUEST_LIMIT_EXCEEDED",
+"fns:REQUEST_RUNNING_TOO_LONG",
+"fns:SERVER_UNAVAILABLE",
+"fns:SSO_SERVICE_DOWN",
+"fns:TRIAL_EXPIRED",
+"fns:UNKNOWN_EXCEPTION",
+"fns:UNSUPPORTED_API_VERSION",
+"fns:UNSUPPORTED_CLIENT"
+]
+})
+,
+isc.XSComplexType.create({
+ID:"ApiFault",
+mustQualify:true,
+fields:[
+{
+name:"exceptionCode",
+type:"ExceptionCode",
+xmlRequired:true
+},
+{
+name:"exceptionMessage",
+type:"string",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSElement.create({
+ID:"fault",
+inheritsFrom:"ApiFault",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"ApiQueryFault",
+inheritsFrom:"ApiFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+{
+name:"row",
+type:"int",
+xmlRequired:true
+},
+{
+name:"column",
+type:"int",
+xmlRequired:true
+}
+]
+})
+,
+isc.XSComplexType.create({
+ID:"LoginFault",
+inheritsFrom:"ApiFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"LoginFault",
+inheritsFrom:"LoginFault",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"InvalidQueryLocatorFault",
+inheritsFrom:"ApiFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"InvalidQueryLocatorFault",
+inheritsFrom:"InvalidQueryLocatorFault",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"InvalidNewPasswordFault",
+inheritsFrom:"ApiFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"InvalidNewPasswordFault",
+inheritsFrom:"InvalidNewPasswordFault",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"InvalidIdFault",
+inheritsFrom:"ApiFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"InvalidIdFault",
+inheritsFrom:"InvalidIdFault",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"UnexpectedErrorFault",
+inheritsFrom:"ApiFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"UnexpectedErrorFault",
+inheritsFrom:"UnexpectedErrorFault",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"InvalidFieldFault",
+inheritsFrom:"ApiQueryFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"InvalidFieldFault",
+inheritsFrom:"InvalidFieldFault",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"InvalidSObjectFault",
+inheritsFrom:"ApiQueryFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"InvalidSObjectFault",
+inheritsFrom:"InvalidSObjectFault",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"MalformedQueryFault",
+inheritsFrom:"ApiQueryFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"MalformedQueryFault",
+inheritsFrom:"MalformedQueryFault",
+mustQualify:true,
+fields:[
+]
+})
+,
+isc.XSComplexType.create({
+ID:"MalformedSearchFault",
+inheritsFrom:"ApiQueryFault",
+mustQualify:true,
+useParentFieldOrder:true,
+fields:[
+]
+})
+,
+isc.XSElement.create({
+ID:"MalformedSearchFault",
+inheritsFrom:"MalformedSearchFault",
+mustQualify:true,
+fields:[
+]
+})
+]
+})
+isc.WebService.create({
+dataURL:"https://www.salesforce.com/services/Soap/u/8.0",
+serviceNamespace:"urn:partner.soap.sforce.com",
+soapStyle:"document",
+wsdlImports:[
+],
+schemaImports:[
+{
+location:"",
+namespace:"urn:sobject.partner.soap.sforce.com"
+},
+{
+location:"",
+namespace:"urn:partner.soap.sforce.com"
+},
+{
+location:"",
+namespace:"urn:partner.soap.sforce.com"
+},
+{
+location:"",
+namespace:"urn:sobject.partner.soap.sforce.com"
+},
+{
+location:"",
+namespace:"urn:fault.partner.soap.sforce.com"
+}
+],
+bindings:[
+{
+name:"SoapBinding",
+portTypeName:"Soap",
+operation:[
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"login",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"LoginScopeHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"describeSObject",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"describeSObjects",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"describeGlobal",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"describeLayout",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"describeSoftphoneLayout",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"describeTabs",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"create",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"AssignmentRuleHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"MruHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"EmailHeader"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"update",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"AssignmentRuleHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"MruHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"EmailHeader"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"upsert",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"AssignmentRuleHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"MruHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"EmailHeader"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"merge",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"AssignmentRuleHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"MruHeader"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"delete",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"UserTerritoryDeleteHeader"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"undelete",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"retrieve",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"QueryOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"MruHeader"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"process",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"convertLead",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"getDeleted",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"getUpdated",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"query",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"QueryOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"MruHeader"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"queryAll",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"QueryOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"queryMore",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"QueryOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"search",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"getServerTimestamp",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"setPassword",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"resetPassword",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"EmailHeader"
+}
+]
+},
+{
+inputEncoding:"literal",
+inputParts:"parameters",
+name:"getUserInfo",
+outputEncoding:"literal",
+outputParts:"",
+soapAction:"",
+inputHeaders:[
+{
+encoding:"literal",
+message:"Header",
+part:"SessionHeader"
+},
+{
+encoding:"literal",
+message:"Header",
+part:"CallOptions"
+}
+]
+}
+]
+}
+],
+portTypes:[
+{
+portTypeName:"Soap",
+operation:[
+{
+inputMessage:"loginRequest",
+name:"login",
+outputMessage:"loginResponse"
+},
+{
+inputMessage:"describeSObjectRequest",
+name:"describeSObject",
+outputMessage:"describeSObjectResponse"
+},
+{
+inputMessage:"describeSObjectsRequest",
+name:"describeSObjects",
+outputMessage:"describeSObjectsResponse"
+},
+{
+inputMessage:"describeGlobalRequest",
+name:"describeGlobal",
+outputMessage:"describeGlobalResponse"
+},
+{
+inputMessage:"describeLayoutRequest",
+name:"describeLayout",
+outputMessage:"describeLayoutResponse"
+},
+{
+inputMessage:"describeSoftphoneLayoutRequest",
+name:"describeSoftphoneLayout",
+outputMessage:"describeSoftphoneLayoutResponse"
+},
+{
+inputMessage:"describeTabsRequest",
+name:"describeTabs",
+outputMessage:"describeTabsResponse"
+},
+{
+inputMessage:"createRequest",
+name:"create",
+outputMessage:"createResponse"
+},
+{
+inputMessage:"updateRequest",
+name:"update",
+outputMessage:"updateResponse"
+},
+{
+inputMessage:"upsertRequest",
+name:"upsert",
+outputMessage:"upsertResponse"
+},
+{
+inputMessage:"mergeRequest",
+name:"merge",
+outputMessage:"mergeResponse"
+},
+{
+inputMessage:"deleteRequest",
+name:"delete",
+outputMessage:"deleteResponse"
+},
+{
+inputMessage:"undeleteRequest",
+name:"undelete",
+outputMessage:"undeleteResponse"
+},
+{
+inputMessage:"retrieveRequest",
+name:"retrieve",
+outputMessage:"retrieveResponse"
+},
+{
+inputMessage:"processRequest",
+name:"process",
+outputMessage:"processResponse"
+},
+{
+inputMessage:"convertLeadRequest",
+name:"convertLead",
+outputMessage:"convertLeadResponse"
+},
+{
+inputMessage:"getDeletedRequest",
+name:"getDeleted",
+outputMessage:"getDeletedResponse"
+},
+{
+inputMessage:"getUpdatedRequest",
+name:"getUpdated",
+outputMessage:"getUpdatedResponse"
+},
+{
+inputMessage:"queryRequest",
+name:"query",
+outputMessage:"queryResponse"
+},
+{
+inputMessage:"queryAllRequest",
+name:"queryAll",
+outputMessage:"queryAllResponse"
+},
+{
+inputMessage:"queryMoreRequest",
+name:"queryMore",
+outputMessage:"queryMoreResponse"
+},
+{
+inputMessage:"searchRequest",
+name:"search",
+outputMessage:"searchResponse"
+},
+{
+inputMessage:"getServerTimestampRequest",
+name:"getServerTimestamp",
+outputMessage:"getServerTimestampResponse"
+},
+{
+inputMessage:"setPasswordRequest",
+name:"setPassword",
+outputMessage:"setPasswordResponse"
+},
+{
+inputMessage:"resetPasswordRequest",
+name:"resetPassword",
+outputMessage:"resetPasswordResponse"
+},
+{
+inputMessage:"getUserInfoRequest",
+name:"getUserInfo",
+outputMessage:"getUserInfoResponse"
+}
+]
+}
+],
+messages:[
+isc.WSDLMessage.create({
+ID:"message:Header",
+fields:[
+{
+name:"LoginScopeHeader",
+partName:"LoginScopeHeader",
+type:"LoginScopeHeader",
+xmlRequired:true,
+xsElementRef:true
+},
+{
+name:"SessionHeader",
+partName:"SessionHeader",
+type:"SessionHeader",
+xmlRequired:true,
+xsElementRef:true
+},
+{
+name:"CallOptions",
+partName:"CallOptions",
+type:"CallOptions",
+xmlRequired:true,
+xsElementRef:true
+},
+{
+name:"QueryOptions",
+partName:"QueryOptions",
+type:"QueryOptions",
+xmlRequired:true,
+xsElementRef:true
+},
+{
+name:"AssignmentRuleHeader",
+partName:"AssignmentRuleHeader",
+type:"AssignmentRuleHeader",
+xmlRequired:true,
+xsElementRef:true
+},
+{
+name:"MruHeader",
+partName:"MruHeader",
+type:"MruHeader",
+xmlRequired:true,
+xsElementRef:true
+},
+{
+name:"EmailHeader",
+partName:"EmailHeader",
+type:"EmailHeader",
+xmlRequired:true,
+xsElementRef:true
+},
+{
+name:"UserTerritoryDeleteHeader",
+partName:"UserTerritoryDeleteHeader",
+type:"UserTerritoryDeleteHeader",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:ApiFault",
+fields:[
+{
+name:"fault",
+partName:"fault",
+type:"fault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:LoginFault",
+fields:[
+{
+name:"LoginFault",
+partName:"fault",
+type:"LoginFault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:InvalidQueryLocatorFault",
+fields:[
+{
+name:"InvalidQueryLocatorFault",
+partName:"fault",
+type:"InvalidQueryLocatorFault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:InvalidNewPasswordFault",
+fields:[
+{
+name:"InvalidNewPasswordFault",
+partName:"fault",
+type:"InvalidNewPasswordFault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:InvalidIdFault",
+fields:[
+{
+name:"InvalidIdFault",
+partName:"fault",
+type:"InvalidIdFault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:UnexpectedErrorFault",
+fields:[
+{
+name:"UnexpectedErrorFault",
+partName:"fault",
+type:"UnexpectedErrorFault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:InvalidFieldFault",
+fields:[
+{
+name:"InvalidFieldFault",
+partName:"fault",
+type:"InvalidFieldFault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:InvalidSObjectFault",
+fields:[
+{
+name:"InvalidSObjectFault",
+partName:"fault",
+type:"InvalidSObjectFault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:MalformedQueryFault",
+fields:[
+{
+name:"MalformedQueryFault",
+partName:"fault",
+type:"MalformedQueryFault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:MalformedSearchFault",
+fields:[
+{
+name:"MalformedSearchFault",
+partName:"fault",
+type:"MalformedSearchFault",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:loginRequest",
+fields:[
+{
+name:"login",
+partName:"parameters",
+type:"login",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:loginResponse",
+fields:[
+{
+name:"loginResponse",
+partName:"parameters",
+type:"loginResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeSObjectRequest",
+fields:[
+{
+name:"describeSObject",
+partName:"parameters",
+type:"describeSObject",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeSObjectResponse",
+fields:[
+{
+name:"describeSObjectResponse",
+partName:"parameters",
+type:"describeSObjectResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeSObjectsRequest",
+fields:[
+{
+name:"describeSObjects",
+partName:"parameters",
+type:"describeSObjects",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeSObjectsResponse",
+fields:[
+{
+name:"describeSObjectsResponse",
+partName:"parameters",
+type:"describeSObjectsResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeGlobalRequest",
+fields:[
+{
+name:"describeGlobal",
+partName:"parameters",
+type:"describeGlobal",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeGlobalResponse",
+fields:[
+{
+name:"describeGlobalResponse",
+partName:"parameters",
+type:"describeGlobalResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeLayoutRequest",
+fields:[
+{
+name:"describeLayout",
+partName:"parameters",
+type:"describeLayout",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeLayoutResponse",
+fields:[
+{
+name:"describeLayoutResponse",
+partName:"parameters",
+type:"describeLayoutResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeSoftphoneLayoutRequest",
+fields:[
+{
+name:"describeSoftphoneLayout",
+partName:"parameters",
+type:"describeSoftphoneLayout",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeSoftphoneLayoutResponse",
+fields:[
+{
+name:"describeSoftphoneLayoutResponse",
+partName:"parameters",
+type:"describeSoftphoneLayoutResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeTabsRequest",
+fields:[
+{
+name:"describeTabs",
+partName:"parameters",
+type:"describeTabs",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:describeTabsResponse",
+fields:[
+{
+name:"describeTabsResponse",
+partName:"parameters",
+type:"describeTabsResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:createRequest",
+fields:[
+{
+name:"create",
+partName:"parameters",
+type:"create",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:createResponse",
+fields:[
+{
+name:"createResponse",
+partName:"parameters",
+type:"createResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:updateRequest",
+fields:[
+{
+name:"update",
+partName:"parameters",
+type:"update",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:updateResponse",
+fields:[
+{
+name:"updateResponse",
+partName:"parameters",
+type:"updateResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:upsertRequest",
+fields:[
+{
+name:"upsert",
+partName:"parameters",
+type:"upsert",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:upsertResponse",
+fields:[
+{
+name:"upsertResponse",
+partName:"parameters",
+type:"upsertResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:mergeRequest",
+fields:[
+{
+name:"merge",
+partName:"parameters",
+type:"merge",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:mergeResponse",
+fields:[
+{
+name:"mergeResponse",
+partName:"parameters",
+type:"mergeResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:deleteRequest",
+fields:[
+{
+name:"delete",
+partName:"parameters",
+type:"delete",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:deleteResponse",
+fields:[
+{
+name:"deleteResponse",
+partName:"parameters",
+type:"deleteResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:undeleteRequest",
+fields:[
+{
+name:"undelete",
+partName:"parameters",
+type:"undelete",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:undeleteResponse",
+fields:[
+{
+name:"undeleteResponse",
+partName:"parameters",
+type:"undeleteResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:retrieveRequest",
+fields:[
+{
+name:"retrieve",
+partName:"parameters",
+type:"retrieve",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:retrieveResponse",
+fields:[
+{
+name:"retrieveResponse",
+partName:"parameters",
+type:"retrieveResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:processRequest",
+fields:[
+{
+name:"process",
+partName:"parameters",
+type:"process",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:processResponse",
+fields:[
+{
+name:"processResponse",
+partName:"parameters",
+type:"processResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:convertLeadRequest",
+fields:[
+{
+name:"convertLead",
+partName:"parameters",
+type:"convertLead",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:convertLeadResponse",
+fields:[
+{
+name:"convertLeadResponse",
+partName:"parameters",
+type:"convertLeadResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:getDeletedRequest",
+fields:[
+{
+name:"getDeleted",
+partName:"parameters",
+type:"getDeleted",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:getDeletedResponse",
+fields:[
+{
+name:"getDeletedResponse",
+partName:"parameters",
+type:"getDeletedResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:getUpdatedRequest",
+fields:[
+{
+name:"getUpdated",
+partName:"parameters",
+type:"getUpdated",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:getUpdatedResponse",
+fields:[
+{
+name:"getUpdatedResponse",
+partName:"parameters",
+type:"getUpdatedResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:queryRequest",
+fields:[
+{
+name:"query",
+partName:"parameters",
+type:"query",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:queryResponse",
+fields:[
+{
+name:"queryResponse",
+partName:"parameters",
+type:"queryResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:queryAllRequest",
+fields:[
+{
+name:"queryAll",
+partName:"parameters",
+type:"queryAll",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:queryAllResponse",
+fields:[
+{
+name:"queryAllResponse",
+partName:"parameters",
+type:"queryAllResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:queryMoreRequest",
+fields:[
+{
+name:"queryMore",
+partName:"parameters",
+type:"queryMore",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:queryMoreResponse",
+fields:[
+{
+name:"queryMoreResponse",
+partName:"parameters",
+type:"queryMoreResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:searchRequest",
+fields:[
+{
+name:"search",
+partName:"parameters",
+type:"search",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:searchResponse",
+fields:[
+{
+name:"searchResponse",
+partName:"parameters",
+type:"searchResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:getServerTimestampRequest",
+fields:[
+{
+name:"getServerTimestamp",
+partName:"parameters",
+type:"getServerTimestamp",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:getServerTimestampResponse",
+fields:[
+{
+name:"getServerTimestampResponse",
+partName:"parameters",
+type:"getServerTimestampResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:setPasswordRequest",
+fields:[
+{
+name:"setPassword",
+partName:"parameters",
+type:"setPassword",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:setPasswordResponse",
+fields:[
+{
+name:"setPasswordResponse",
+partName:"parameters",
+type:"setPasswordResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:resetPasswordRequest",
+fields:[
+{
+name:"resetPassword",
+partName:"parameters",
+type:"resetPassword",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:resetPasswordResponse",
+fields:[
+{
+name:"resetPasswordResponse",
+partName:"parameters",
+type:"resetPasswordResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:getUserInfoRequest",
+fields:[
+{
+name:"getUserInfo",
+partName:"parameters",
+type:"getUserInfo",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+,
+isc.WSDLMessage.create({
+ID:"message:getUserInfoResponse",
+fields:[
+{
+name:"getUserInfoResponse",
+partName:"parameters",
+type:"getUserInfoResponse",
+xmlRequired:true,
+xsElementRef:true
+}
+]
+})
+]
+})
+isc.SForce=isc.WebService.get("urn:partner.soap.sforce.com");if(isc.SForce){isc.A=isc.SForce.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.detailFields=["Id","Type","ParentId","LastModifiedDate","LastModifiedById","LastActivityDate","CreatedDate","CreatedById"];isc.A.hiddenFields=["SystemModstamp"];isc.B.push(isc.A.getHeaderData=function isc_SForce_getHeaderData(_1){var _2={};if(_1.operationType=="fetch")_2.QueryOptions={batchSize:75};if(this.sessionId!=null)_2.SessionHeader={sessionId:this.sessionId};return _2}
+,isc.A.login=function isc_SForce_login(_1,_2,_3){this.callOperation("login",{username:_1,password:_2},"//default:result",{target:this,methodName:"loginReply"},{willHandleError:true,$40z:_3,showPrompt:true,prompt:"Logging into SalesForce.."})}
+,isc.A.loginReply=function isc_SForce_loginReply(_1,_2,_3,_4){if(_3.status<0){return this.fireCallback(_4.$40z,"loginData",[false])}
+var _5=_1[0];this.logDebug("login data: "+this.echo(_5));this.dataURL=_5.serverUrl;this.sessionId=_5.sessionId;this.logInfo("got sessionID: "+this.sessionId);this.fireCallback(_4.$40z,"loginData",[_5])}
+,isc.A.ensureLoggedIn=function isc_SForce_ensureLoggedIn(_1,_2,_3){if(this.sessionId)return this.fireCallback(_1);var _4=this;isc.showLoginDialog(function(_5,_6){if(_5==null)return;_4.login(_5.username,_5.password,function(_7){_6(_7);if(_7)isc.Class.fireCallback(_1)})},isc.addProperties({title:"Please log in to SalesForce",dismissable:_2},_3))}
+,isc.A.getEntityList=function isc_SForce_getEntityList(_1){this.$400=_1;this.callOperation("describeGlobal",null,"//default:types",{target:this,methodName:"describeGlobalReply"})}
+,isc.A.describeGlobalReply=function isc_SForce_describeGlobalReply(_1){this.fireCallback(this.$400,"list",[_1])}
+,isc.A.getEntity=function isc_SForce_getEntity(_1,_2){var _3=this;this.callOperation("describeSObjects",{sObjectType:_1},null,function(_4){_3.describeObjectReply(_4,_1,_2)})}
+,isc.A.describeObjectReply=function isc_SForce_describeObjectReply(_1,_2,_3){var _4=_1.result,_5=_4.fields;var _6=this.convertSchema(_4,_2);if(this.logIsDebugEnabled()){this.logDebug("converted schema: "+this.echoAll(_6.getFields()))}
+_6.sfFields=_4.fields;this.fireCallback(_3,"schema",[_6])}
+,isc.A.convertSchema=function isc_SForce_convertSchema(_1,_2){var _3=_1.fields,_4=[];for(var i=0;i<_3.length;i++){var _6=_3[i],_7={};_7.name=_6.name;if(this.detailFields.contains(_7.name))_7.detail=true;if(this.hiddenFields.contains(_7.name))_7.hidden=true;var _8=_6.soapType;if(_8.contains(":"))_8=_8.substring(_8.indexOf(":")+1);_7.type=_8;_7.title=_6.label;_7.canEdit=_6.updateable;if(_6.type=="id")_7.primaryKey=true;if(_6.length!=0)_7.length=_6.length;_4.add(_7)}
+var _9=_1.childRelationships,_10=[];if(_9){for(var i=0;i<_9.length;i++){var _11=_9[i];_10.add({dsName:_11.childSObject,fieldName:_11.field})}}
+return isc.SFDataSource.create({sfName:_1.name,ID:_2,childRelations:_10,fields:_4})}
+,isc.A.deploySControl=function isc_SForce_deploySControl(_1,_2){if(this.SControlDS==null){this.getEntity("SControl",function(_3){isc.SForce.SControlDS=_3;isc.SForce.deploySControl(_1,_2)});return}
+var _3=this.SControlDS;_3.fetchData({Name:_1},function(_4,_5){isc.SForce.installSControl(_1,_2,_5,_3)})}
+,isc.A.installSControl=function isc_SForce_installSControl(_1,_2,_3,_4){var _5=this.getSControlHTML(_2);if(_3.length>0){_4.updateData({Id:_3[0].Id,HTMLWrapper:_5})}else{_4.addData({Name:_1,HTMLWrapper:_5})}}
+,isc.A.getSControlHTML=function isc_SForce_getSControlHTML(_1){if(this.htmlPrefix==null){var _2=this.controlIsomorphicDir;this.htmlPrefix=["<HTML>\r<BODY>\r<SCRIPT>window.isomorphicDir = '",_2,"'</SCRIPT>\r","<SCRIPT src='",_2,"system/modules/ISC_Core.js'></SCRIPT>\r","<SCRIPT src='",_2,"system/modules/ISC_Foundation.js'></SCRIPT>\r","<SCRIPT src='",_2,"system/modules/ISC_Containers.js'></SCRIPT>\r","<SCRIPT src='",_2,"system/modules/ISC_Grids.js'></SCRIPT>\r","<SCRIPT src='",_2,"system/modules/ISC_Forms.js'></SCRIPT>\r","<SCRIPT src='",_2,"system/modules/ISC_DataBinding.js'></SCRIPT>\r","<SCRIPT src='",_2,"system/modules/ISC_SalesForce.js'></SCRIPT>\r","<SCRIPT src='",_2,"system/modules/ISC_Kapow.js'></SCRIPT>\r","<SCRIPT src='",_2,"skins/",this.controlSkin,"/load_skin.js'></SCRIPT>\r","<SCRIPT>\r",' var service = isc.WebService.get("urn:partner.soap.sforce.com");\r',' service.sessionId = "{!User_Session_ID}";\r',' service.dataURL = "{!API_Partner_Server_URL_60}";\r\r'].join("")}
+return this.htmlPrefix+_1+'</SCRIPT>\r</BODY></HTML>'}
+);isc.B._maxIndex=isc.C+12;isc.defineClass("SFResultSet","ResultSet");isc.A=isc.SFResultSet.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.transformData=function isc_SFResultSet_transformData(_1,_2){this.context=this.context||{};this.context.queryLocator=_2.queryLocator}
+,isc.A.setCriteria=function isc_SFResultSet_setCriteria(_1){var _2=this.Super("setCriteria",arguments);if(_2){this.context=this.context||{};this.context.queryLocator=null}}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("SFDataSource","DataSource");isc.A=isc.SFDataSource.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.serviceNamespace="urn:partner.soap.sforce.com";isc.A.operationBindings=[{operationType:"fetch",wsOperation:"query",recordXPath:"//schema:records"},{operationType:"fetch",operationId:"queryMore",wsOperation:"queryMore",recordXPath:"//schema:records"},{operationType:"update",wsOperation:"update",recordName:"SaveResult"},{operationType:"add",wsOperation:"create",recordName:"SaveResult"},{operationType:"remove",wsOperation:"delete",recordName:"DeleteResult"}];isc.A.resultSetClass="SFResultSet";isc.A.autoLogin=true;isc.B.push(isc.A.transformRequest=function isc_SFDataSource_transformRequest(_1){var _2=_1.data;if(!isc.isAn.Array(_2))_2=[_2];if(_1.operationType=="remove"){return{ids:_2.getProperty("Id")}}
+if(_1.operationType!="fetch"){_2.setProperty("type",this.sfName||this.ID);return{sObjects:_2}}
+if(_1.queryLocator){_1.operationId="queryMore";return{queryLocator:_1.queryLocator}}
+var _3=_1.data,_4="select "+this.getFieldNames().join(",")+" "+"from "+(this.sfName||this.ID);if(_3!=null&&!isc.isAn.emptyObject(_3)){_4+=" where ";for(var _5 in _3){_4+=_5+"='"+_3[_5]+"' "}}
+return{queryString:_4}}
+,isc.A.transformResponse=function isc_SFDataSource_transformResponse(_1,_2,_3){var _4=_2.operationType;if(_4!="fetch"){var _5=_3.selectString("//default:success");if(_5!="true"){_1.errors=this.convertValidationErrors(_3);this.logWarn("save failed, errors are: "+this.echo(_1.errors));_1.status=-1;return _1}
+if(_4!="remove"){var _6=isc.addProperties({},_2.oldValues,_2.data.sObjects[0]);if(_4=="add"){_6.Id=_1.data[0].id}
+_1.data=_6}else{var _7=_1.data[0].id;_1.data={Id:_7};this.logWarn("cache sync data on remove: "+this.echo(_1.data))}
+return _1}
+var _8=_3.selectString("//default:queryLocator");if(_8!=null&&!isc.isAn.emptyString(_8)){_1.queryLocator=_8}
+_1.totalRows=_3.selectNumber("//default:size");var _9=_1.data;for(var i=0;i<_9.length;i++){if(isc.isAn.Array(_9[i].Id))_9[i].Id=_9[i].Id[0]}
+return _1}
+,isc.A.fetchData=function isc_SFDataSource_fetchData(_1,_2,_3,_4){var _5=this;if(this.autoLogin&&!_4){isc.SForce.ensureLoggedIn(function(){_5.fetchData(_1,_2,_3,true)});return}
+return this.Super("fetchData",arguments)}
+,isc.A.convertValidationErrors=function isc_SFDataSource_convertValidationErrors(_1){var _2=_1.selectNodes("//default:errors"),_3={};for(var i=0;i<_2.length;i++){var _5=_2[i];_5=isc.xml.toJS(_5);_3[_5.fields]=_5.message}
+return _3}
+);isc.B._maxIndex=isc.C+4}
+isc._moduleEnd=isc._SalesForce_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('SalesForce module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'SalesForce'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SalesForce.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SalesForce.js.gz
new file mode 100755
index 0000000..0cf109a
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SalesForce.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Scheduler.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Scheduler.js
new file mode 100755
index 0000000..8a2da96
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Scheduler.js
@@ -0,0 +1,207 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_SQLBrowser){isc.module_SQLBrowser=1;isc._moduleStart=isc._SQLBrowser_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'SQLBrowser load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.DataSource.create({
+ID:"QuartzScheduler",
+serverConstructor:"com.isomorphic.scheduler.QuartzScheduler",
+fields:[
+{
+canEdit:false,
+name:"name",
+type:"text"
+},
+{
+canEdit:false,
+name:"state",
+type:"intEnum",
+valueMap:{
+"0":"Shutdown",
+"1":"Standby",
+"2":"Started"
+}
+}
+],
+operationBinding:[
+{
+operationId:"start",
+operationType:"custom"
+},
+{
+operationId:"shutdown",
+operationType:"custom"
+},
+{
+operationId:"standby",
+operationType:"custom"
+},
+{
+operationId:"doit",
+operationType:"custom",
+serverObject:{
+className:"com.isomorphic.scheduler.QuartzScheduler",
+methodName:"doit"
+}
+}
+]
+})
+isc.DataSource.create({
+ID:"QuartzJobs",
+serverConstructor:"com.isomorphic.scheduler.QuartzJobs",
+fields:[
+{
+name:"group",
+primaryKey:true,
+required:true,
+type:"string"
+},
+{
+name:"name",
+primaryKey:true,
+required:true,
+type:"string"
+},
+{
+name:"description",
+type:"string"
+},
+{
+name:"className",
+required:true,
+type:"string"
+},
+{
+defaultValue:"false",
+name:"volatility",
+type:"boolean"
+},
+{
+defaultValue:"true",
+name:"durability",
+type:"boolean"
+},
+{
+defaultValue:"true",
+name:"recover",
+type:"boolean"
+},
+{
+name:"dataMap",
+showIf:"false",
+type:"Object"
+}
+]
+})
+isc.DataSource.create({
+ID:"QuartzTriggers",
+serverConstructor:"com.isomorphic.scheduler.QuartzTriggers",
+fields:[
+{
+name:"jobGroup",
+required:true,
+showIf:"false",
+type:"string"
+},
+{
+name:"jobName",
+required:true,
+showIf:"false",
+type:"string"
+},
+{
+name:"group",
+primaryKey:true,
+required:true,
+type:"string"
+},
+{
+name:"name",
+primaryKey:true,
+required:true,
+type:"string"
+},
+{
+name:"description",
+type:"string"
+},
+{
+name:"dataMap",
+showIf:"false",
+type:"Object"
+},
+{
+name:"startTime",
+type:"date"
+},
+{
+name:"endTime",
+type:"date"
+},
+{
+name:"cronExpression",
+required:true,
+type:"text"
+},
+{
+name:"timeZone",
+type:"text"
+},
+{
+defaultValue:"false",
+name:"volatility",
+type:"boolean"
+},
+{
+defaultValue:"0",
+name:"misfireInstruction",
+type:"intEnum",
+valueMap:{
+"0":"MISFIRE_INSTRUCTION_SMART_POLICY",
+"1":"MISFIRE_INSTRUCTION_FIRE_ONCE_NOW",
+"2":"MISFIRE_INSTRUCTION_DO_NOTHING"
+}
+},
+{
+canEdit:false,
+name:"state",
+type:"intEnum",
+valueMap:{
+"0":"Normal",
+"1":"Paused",
+"2":"Complete",
+"3":"Error",
+"4":"Blocked",
+"-1":"None"
+}
+}
+]
+})
+isc.defineClass("QuartzManager","SectionStack");isc.A=isc.QuartzManager.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.visibilityMode="multiple";isc.A.jobsPauseBtnDefaults={_constructor:"IButton",title:"Pause Job",prompt:"Suspends all triggers associated with selected job",click:function(){var _1=this.creator.jobsGrid;if(!_1.anySelected()){isc.say("Please select a job first");return}
+var _2=_1.getSelectedRecord();var _3=this;QuartzJobs.performCustomOperation("pauseJob",{group:_2.group,name:_2.name},function(_4){_3.creator.triggersGrid.invalidateCache();isc.say('Job Paused')})}};isc.A.jobsResumeBtnDefaults={_constructor:"IButton",title:"Resume Job",prompt:"Resumes all triggers associated with selected job",click:function(){var _1=this.creator.jobsGrid;if(!_1.anySelected()){isc.say("Please select a job first");return}
+var _2=_1.getSelectedRecord();var _3=this;QuartzJobs.performCustomOperation("resumeJob",{group:_2.group,name:_2.name},function(_4){_3.creator.triggersGrid.invalidateCache();isc.say('Job Resumed')})}};isc.A.jobsTriggerBtnDefaults={_constructor:"IButton",title:"Trigger Job",prompt:"Triggers selected job immediately",click:function(){var _1=this.creator.jobsGrid;if(!_1.anySelected()){isc.say("Please select a job first");return}
+var _2=_1.getSelectedRecord();QuartzJobs.performCustomOperation("triggerJob",{group:_2.group,name:_2.name},function(_3){isc.say('Job Triggered')})}};isc.A.jobsRefreshBtnDefaults={_constructor:"ImgButton",showRollOver:false,size:16,src:"[SKIN]actions/refresh.png",prompt:"Refresh jobs",click:function(){this.creator.jobsGrid.invalidateCache();this.creator.triggersGrid.setData([])}};isc.A.jobsAddBtnDefaults={_constructor:"ImgButton",size:16,showRollOver:false,src:"[SKIN]actions/add.png",prompt:"Add job",click:"this.creator.jobsGrid.startEditingNew()"};isc.A.jobsRemoveBtnDefaults={_constructor:"ImgButton",size:16,showRollOver:false,src:"[SKIN]actions/remove.png",prompt:"Remove job",click:function(){var _1=this;isc.ask("Are you sure you wish to delete the selected job? This will remove all"+" triggers associated with this job.",function(_2){if(_2)_1.creator.jobsGrid.removeSelectedData(function(_3){_1.creator.triggersGrid.setData([])})})}};isc.A.jobsGridDefaults={_constructor:"ListGrid",autoDraw:false,height:"30%",dataSource:"QuartzJobs",useAllDataSourceFields:true,autoFetchData:true,selectionType:"single",recordDoubleClick:function(){isc.say("The Quartz APIs do not allow modification of job metadata without destroying"+" all triggers attached to the job, so you must remove and re-create the job if"+" that's your intention");return},selectionChanged:function(_1,_2){if(_2){this.creator.triggersGrid.filterData({jobGroup:_1.group,jobName:_1.name})}else{this.creator.triggersGrid.setData([])}},remove:function(){}};isc.A.triggersPauseBtnDefaults={_constructor:"IButton",title:"Pause Trigger",prompt:"Suspends selected trigger",click:function(){var _1=this.creator.triggersGrid;if(!_1.anySelected()){isc.say("Please select a trigger first");return}
+var _2=_1.getSelectedRecord();QuartzTriggers.performCustomOperation("pauseTrigger",{group:_2.group,name:_2.name},function(_3){_1.invalidateCache();isc.say('Trigger Paused')})}};isc.A.triggersResumeBtnDefaults={_constructor:"IButton",title:"Resume Trigger",prompt:"Resumes selected trigger",click:function(){var _1=this.creator.triggersGrid;if(!_1.anySelected()){isc.say("Please select a trigger first");return}
+var _2=_1.getSelectedRecord();QuartzTriggers.performCustomOperation("resumeTrigger",{group:_2.group,name:_2.name},function(_3){_1.invalidateCache();isc.say('Trigger Resumed')})}};isc.A.triggersRefreshBtnDefaults={_constructor:"ImgButton",showRollOver:false,size:16,src:"[SKIN]actions/refresh.png",prompt:"Refresh jobs",click:"this.creator.triggersGrid.invalidateCache()"};isc.A.triggersAddBtnDefaults={_constructor:"ImgButton",size:16,showRollOver:false,src:"[SKIN]actions/add.png",prompt:"Add trigger",click:function(){var _1=this.creator.jobsGrid;if(!_1.anySelected()){isc.say("Please select a job first");return}
+var _2=_1.getSelectedRecord();this.creator.triggersGrid.startEditingNew({jobGroup:_2.group,jobName:_2.name})}};isc.A.triggersRemoveBtnDefaults={_constructor:"ImgButton",size:16,showRollOver:false,src:"[SKIN]actions/remove.png",prompt:"Remove job",click:function(){var _1=this;isc.ask("Are you sure you wish to remove the selected trigger?",function(_2){if(_2)_1.creator.jobsGrid.removeSelectedData(function(_3){_1.creator.triggersGrid.invalidateCache()})})}};isc.A.triggersGridDefaults={_constructor:"ListGrid",canEdit:true,autoDraw:false,dataSource:"QuartzTriggers",useAllDataSourceFields:true,selectionType:"single",remove:function(){}};isc.B.push(isc.A.initWidget=function isc_QuartzManager_initWidget(){this.Super("initWidget",arguments);this.jobsPauseBtn=this.createAutoChild("jobsPauseBtn");this.jobsResumeBtn=this.createAutoChild("jobsResumeBtn");this.jobsTriggerBtn=this.createAutoChild("jobsTriggerBtn");this.jobsRefreshBtn=this.createAutoChild("jobsRefreshBtn");this.jobsAddBtn=this.createAutoChild("jobsAddBtn");this.jobsRemoveBtn=this.createAutoChild("jobsRemoveBtn");this.jobsGrid=this.createAutoChild("jobsGrid");this.addSection({title:"Jobs",expanded:true,items:[this.jobsGrid],controls:[this.jobsPauseBtn,this.jobsResumeBtn,this.jobsTriggerBtn,this.jobsRefreshBtn,this.jobsAddBtn,this.jobsRemoveBtn]});;this.triggersPauseBtn=this.createAutoChild("triggersPauseBtn");this.triggersResumeBtn=this.createAutoChild("triggersResumeBtn");this.triggersRefreshBtn=this.createAutoChild("triggersRefreshBtn");this.triggersAddBtn=this.createAutoChild("triggersAddBtn");this.triggersRemoveBtn=this.createAutoChild("triggersRemoveBtn");this.triggersGrid=this.createAutoChild("triggersGrid");this.addSection({title:"Triggers",expanded:true,items:[this.triggersGrid],controls:[this.triggersPauseBtn,this.triggersResumeBtn,this.triggersRefreshBtn,this.triggersAddBtn,this.triggersRemoveBtn]});}
+);isc.B._maxIndex=isc.C+1;isc._moduleEnd=isc._SQLBrowser_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('SQLBrowser module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'SQLBrowser'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Scheduler.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Scheduler.js.gz
new file mode 100755
index 0000000..e5022e2
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Scheduler.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SQLBrowser.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SQLBrowser.js
new file mode 100755
index 0000000..d4d9e19
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SQLBrowser.js
@@ -0,0 +1,188 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_SQLBrowser){isc.module_SQLBrowser=1;isc._moduleStart=isc._SQLBrowser_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'SQLBrowser load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.defineClass("SQLEditor","VLayout");isc.A=isc.SQLEditor.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.sqlInputFormDefaults={_constructor:"DynamicForm",height:150,showResizeBar:true};isc.A.actionButtonsDefaults={_constructor:"HLayout",layoutMargin:5,membersMargin:5,height:20};isc.A.execSQLButtonDefaults={_constructor:"IButton",title:"Exec SQL",click:"this.creator.execSQL();",autoParent:"actionButtons"};isc.A.previewGridDefaults={_constructor:"ListGrid",minFieldWidth:100,autoFetchData:false};isc.B.push(isc.A.initWidget=function isc_SQLEditor_initWidget(){this.Super("initWidget",arguments);var _1=this;this.addAutoChild("sqlInputForm",{fields:[{name:"sql",showTitle:false,type:"textarea",width:"*",height:"*",colSpan:"*",keyPress:function(_2,_3,_4){if(_4=='Enter'&&isc.EH.ctrlKeyDown()){if(isc.Browser.isSafari)_2.setValue(_2.getElementValue());_1.execSQL();if(isc.Browser.isSafari)return false}}}]});this.addAutoChildren(["actionButtons","execSQLButton"])}
+,isc.A.execSQL=function isc_SQLEditor_execSQL(){var _1=this.sqlInputForm.getValue("sql");if(_1){_1=_1.trim().replace(/(.*);+/,"$1");var _2=isc.DataSource.get("DataSourceStore");_2.performCustomOperation("dsFromSQL",{dbName:this.config.name,sql:_1},this.getID()+".dsLoaded(data)")}}
+,isc.A.dsLoaded=function isc_SQLEditor_dsLoaded(_1){var _2=_1.ds;if(!this.previewGrid)this.addAutoChild("previewGrid",{dataSource:_2});else this.previewGrid.setDataSource(_2);this.previewGrid.fetchData()}
+);isc.B._maxIndex=isc.C+3;isc.defineClass("SQLTableBrowser","VLayout");isc.A=isc.SQLTableBrowser.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.previewGridDefaults={_constructor:"ListGrid",canDragSelectText:true,autoFetchData:false,height:"*",minFieldWidth:100,showFilterEditor:true,canEdit:true};isc.A.previewGridStripDefaults={_constructor:"GridToolStrip",width:"100%",generateDSButtonDefaults:{_constructor:"IAutoFitButton",title:"Show DataSource",layoutAlign:"center",click:"this.creator.creator.showDS()"},members:["autoChild:removeButton","autoChild:addButton","autoChild:exportButton","autoChild:generateDSButton","starSpacer","autoChild:refreshButton","autoChild:totalRowsIndicator"]};isc.B.push(isc.A.initWidget=function isc_SQLTableBrowser_initWidget(){this.Super("initWidget",arguments);var _1=isc.DataSource.get("DataSourceStore");_1.performCustomOperation("dsFromTable",{schema:this.schema,dbName:this.dbName,tableName:this.config.name},this.getID()+".dsLoaded(data)")}
+,isc.A.dsLoaded=function isc_SQLTableBrowser_dsLoaded(_1){this.dataSource=_1.ds;this.dataSourceXML=_1.dsXML;this.addAutoChild("previewGrid",{dataSource:this.dataSource});this.addAutoChild("previewGridStrip",{grid:this.previewGrid});this.previewGrid.filterData()}
+,isc.A.showDS=function isc_SQLTableBrowser_showDS(){isc.say(this.dataSourceXML.asHTML(),null,{blurbProperties:{canSelectText:true,wrap:false}})}
+);isc.B._maxIndex=isc.C+3;isc.defineClass("DBPane","TabSet");isc.A=isc.DBPane.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.sqlEditorDefaults={_constructor:"SQLEditor"};isc.A.tablePaneDefaults={_constructor:"SQLTableBrowser"};isc.B.push(isc.A.initWidget=function isc_DBPane_initWidget(){this.Super("initWidget",arguments);this.sqlEditor=this.createAutoChild("sqlEditor",{config:this.config});this.addTab({title:"SQL Editor",pane:this.sqlEditor})}
+,isc.A.showTableBrowser=function isc_DBPane_showTableBrowser(_1){var _2=this.escapeForId(this.config.name+'_'+_1.name);this.showPane({ID:_2,title:_1.name,paneClass:"tablePane"},_1)}
+,isc.A.escapeForId=function isc_DBPane_escapeForId(_1){return isc.isA.String(_1)?_1.replace(/(\/|\.)/g,'_'):_1}
+,isc.A.showPane=function isc_DBPane_showPane(_1,_2){var _3=this.getTab(_1.ID);if(_3){this.selectTab(_3);return}
+_3={};isc.addProperties(_3,_1,{canClose:true,pane:this.createAutoChild(_1.paneClass,{config:_2,dbName:this.config.name})});this.addTab(_3);this.selectTab(_3);this.currentPane=_3.pane}
+);isc.B._maxIndex=isc.C+4;isc.DataSource.create({
+ID:"DBSchema",
+fields:[
+{
+name:"name"
+},
+{
+name:"itemType"
+},
+{
+name:"type"
+},
+{
+name:"length",
+type:"integer"
+},
+{
+name:"primaryKey",
+type:"boolean"
+},
+{
+hidden:true,
+name:"path",
+primaryKey:true
+},
+{
+foreignKey:"DBSchema.path",
+hidden:true,
+name:"parentID"
+}
+],
+operationBindings:[
+{
+language:"groovy",
+operationType:"fetch",
+script:"\n if (!com.isomorphic.auth.DevModeAuthFilter.devModeAuthorized(request)) throw new Exception(\"Not Authorized\");\n import com.isomorphic.sql.*;\n \n\n "
+}
+]
+})
+isc.defineClass("DBSchemaTree","ListGrid");isc.A=isc.DBSchemaTree.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.showFilterEditor=true;isc.A.filterOnKeypress=true;isc.A.serverType="sql";isc.A.emptyMessage="No tables defined";isc.A.canExpandRecords=true;isc.A.detailDefaults={_constructor:"ListGrid",autoFitData:"vertical",autoFitMaxRecords:8,showResizeBar:true};isc.B.push(isc.A.initWidget=function isc_DBSchemaTree_initWidget(){this.dataSource=isc.DataSource.create({ID:this.getID()+"$73h",clientOnly:true,fields:[{name:"name",title:"Name"},{name:"type",title:"Type",width:60,valueMap:["table","view"]}]});this.Super("initWidget",arguments)}
+,isc.A.selectionChanged=function isc_DBSchemaTree_selectionChanged(_1,_2){this.tableSelected(_1.name)}
+,isc.A.tableSelected=function isc_DBSchemaTree_tableSelected(_1){}
+,isc.A.getExpansionComponent=function isc_DBSchemaTree_getExpansionComponent(_1){var _2=this.createAutoChild("detail",{sortField:"primaryKey",sortDirection:"descending",fields:[{name:"name",title:"Column",formatCellValue:function(_3,_1){if(_1.primaryKey)return"<b>"+_3+"</b>";return _3}},{name:"type",title:"Type",width:50},{name:"length",title:"Length",width:45},{name:"primaryKey",title:"PK",type:"boolean",showIf:"false",width:22}]});isc.DMI.call("isc_builtin","com.isomorphic.tools.BuiltinRPC","getFieldsFromTable",_1.name,this.schema,this.serverType,this.db.name,function(_3,_4){_2.setData(_4)});return _2}
+,isc.A.invalidateCache=function isc_DBSchemaTree_invalidateCache(){this.setData([]);this.loadSchema(this.db)}
+,isc.A.loadSchema=function isc_DBSchemaTree_loadSchema(_1){this.db=_1;isc.showPrompt("Loading schema for database: "+_1.name);isc.DMI.call("isc_builtin","com.isomorphic.tools.BuiltinRPC","getTables",this.serverType,_1.name,true,true,this.catalog,this.schema,this.includeList,this.excludeList,this.getID()+".loadSchemaReply(data)")}
+,isc.A.loadSchemaReply=function isc_DBSchemaTree_loadSchemaReply(_1){isc.clearPrompt();for(var i=0;i<_1.length;i++){_1[i].name=_1[i].TABLE_NAME;_1[i].type=_1[i].TABLE_TYPE.toLowerCase()}
+this.setData(isc.ResultSet.create({dataSource:this.dataSource,allRows:_1}));this.sort("name");if(this.schemaLoaded)this.fireCallback("schemaLoaded")}
+);isc.B._maxIndex=isc.C+7;isc.DBSchemaTree.registerStringMethods({schemaLoaded:""});isc.DataSource.create({
+ID:"DataSourceStore",
+fields:[
+{
+name:"ID",
+primaryKey:true
+},
+{
+name:"version"
+},
+{
+length:50000,
+name:"dsXML",
+type:"text"
+},
+{
+hidden:true,
+name:"config"
+},
+{
+hidden:true,
+name:"dbName"
+},
+{
+hidden:true,
+name:"tableName"
+},
+{
+hidden:true,
+name:"schema"
+},
+{
+hidden:true,
+name:"sql"
+},
+{
+hidden:true,
+name:"ds",
+type:"DataSource"
+}
+],
+operationBindings:[
+{
+language:"groovy",
+operationId:"dsFromSQL",
+operationType:"custom",
+script:"\n if (!com.isomorphic.auth.DevModeAuthFilter.devModeAuthorized(request)) throw new Exception(\"Not Authorized\");\n import com.isomorphic.sql.*;\n \n def dsId = values.dbName+\"_devSqlBrowser_\"+System.currentTimeMillis();\n def conn = SQLConnectionManager.getConnection(values.dbName);\n def ds = SQLDataSource.fromTable(conn, null, values.schema, dsId, \"sql\", values.dbName,\n [operationType:\"fetch\", customSQL: values.sql], true, null);\n SQLConnectionManager.free(conn);\n\n/*\n def ds = DataSource.fromConfig([\n ID: dsId,\n dbName: values.dbName,\n serverType: \"sql\",\n autoDeriveSchema: \"true\",\n operationBindings: [\n [type: \"fetch\", autoDeriveSchemaOperation: \"true\", tableClause: values.sql]\n ]\n ]);\n*/\n return [ds:ds];\n "
+},
+{
+language:"groovy",
+operationId:"dsFromTable",
+operationType:"custom",
+script:"\n if (!com.isomorphic.auth.DevModeAuthFilter.devModeAuthorized(request)) throw new Exception(\"Not Authorized\");\n import com.isomorphic.sql.*;\n\n def dsId = values.dbName+\"_\"+values.tableName+\"_devTableBrowser_\"+System.currentTimeMillis();\n def ds = SQLDataSource.fromTable(null, values.tableName, values.schema, dsId, \"sql\", values.dbName);\n return [ds:ds, dsXML:ds.toXML()];\n "
+},
+{
+language:"groovy",
+operationId:"dsFromConfig",
+operationType:"custom",
+script:"\n if (!com.isomorphic.auth.DevModeAuthFilter.devModeAuthorized(request)) throw new Exception(\"Not Authorized\");\n import com.isomorphic.store.*;\n import com.isomorphic.datasource.*;\n\n def ds = DataSource.fromConfig(values.config, dsRequest);\n if (ds != null) {\n DataStructCache.addCachedObjectWithNoConfigFile(ds.getName(), ds);\n }\n return [ds:ds, dsXML: ds.toXML()];\n "
+}
+]
+})
+isc.DataSource.create({
+ID:"DBListDS",
+dropExtraFields:false,
+fields:[
+{
+name:"name",
+primaryKey:true
+},
+{
+name:"type"
+},
+{
+name:"version"
+},
+{
+name:"status"
+}
+],
+operationBindings:[
+{
+language:"groovy",
+operationType:"fetch",
+script:"\n if (!com.isomorphic.auth.DevModeAuthFilter.devModeAuthorized(request)) throw new Exception(\"Not Authorized\");\n import com.isomorphic.sql.*;\n import com.isomorphic.tools.*;\n\n def dbNames = SQLConnectionManager.getDefinedDatabaseNames();\n dbNames.collect{\n def name = it;\n\n // type and version\n def type = \"N/A\";\n def version = \"N/A\";\n def status = \"OK\";\n try {\n def conn = SQLConnectionManager.getConnection(name);\n def smd = new SQLMetaData(conn);\n def result = smd.getProductNameAndVersion();\n SQLConnectionManager.free(conn);\n type = result.productName;\n version = result.productVersion;\n } catch (Exception e) { \n if (e.toString() =~ /ClassNotFoundException/) status = \"JDBC driver not installed\";\n else status = \"Unable to connect\";\n }\n\n [name:name, status: status, type: type, version: version];\n }\n "
+}
+]
+})
+isc.defineClass("DBCompactList","DynamicForm");isc.A=isc.DBCompactList.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.width=200;isc.A.numCols=2;isc.A.colWidths=[80,"*"];isc.B.push(isc.A.initWidget=function isc_DBCompactList_initWidget(){this.fields=[{name:"dbName",title:"Database",type:"select",width:"*",type:"select",width:120,optionDataSource:"DBListDS",displayField:"name",valueField:"name",change:"if (this.form.databaseChanged) this.form.fireCallback('databaseChanged', 'dbName', [value])",valueMap:{}}];this.Super("initWidget",arguments)}
+,isc.A.getSelectedDB=function isc_DBCompactList_getSelectedDB(){return this.getValue("dbName")}
+,isc.A.setSelectedDB=function isc_DBCompactList_setSelectedDB(_1){return this.setValue("dbName",_1)}
+);isc.B._maxIndex=isc.C+3;isc.DBCompactList.registerStringMethods({databaseChanged:"dbName"});isc.defineClass("DBList","ListGrid");isc.A=isc.DBList.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dataSource="DBListDS";isc.A.showFilterEditor=true;isc.A.filterOnKeypress=true;isc.A.sortField="name";isc.B.push(isc.A.initWidget=function isc_DBList_initWidget(){this.Super("initWidget",arguments)}
+,isc.A.dataArrived=function isc_DBList_dataArrived(){this.Super("dataArrived",arguments);if(!this.initialCriteriaSet){var _1={status:"OK"};this.setFilterEditorCriteria(_1);this.initialCriteriaSet=true;this.filterData(_1)}
+this.initialCriteriaSet=false}
+,isc.A.cellHoverHTML=function isc_DBList_cellHoverHTML(_1){if(!this.hoverDV)this.hoverDV=isc.DetailViewer.create({dataSource:this.dataSource,width:200,autoDraw:false});this.hoverDV.setData(_1);return this.hoverDV.getInnerHTML()}
+,isc.A.destroy=function isc_DBList_destroy(){this.Super("destroy",arguments);if(this.hoverDV)this.hoverDV.destroy()}
+);isc.B._maxIndex=isc.C+4;isc.defineClass("SQLBrowser","VLayout");isc.A=isc.SQLBrowser;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.showWindow=function isc_c_SQLBrowser_showWindow(_1,_2){isc.Window.create({title:"SQL Browser",width:"100%",height:"100%",canDragReposition:false,closeClick:function(){this.destroy()},items:[isc.SQLBrowser.create({autoDraw:false},_2)]},_1).show()}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.SQLBrowser.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.dbListDefaults={_constructor:"DBList",height:150,canDragSelectText:true,autoFetchData:true,canHover:true,defaultFields:[{name:"name"},{name:"status"}]};isc.A.dbListRefreshButtonDefaults={_constructor:"Img",size:16,src:"[SKIN]/actions/refresh.png",click:"this.creator.dbList.invalidateCache()"};isc.A.dbSchemaTreeDefaults={_constructor:"DBSchemaTree",canDragSelectText:true,animateFolders:false,showConnectors:false,recordClick:function(_1,_2){this.creator.showTablePane(_2)}};isc.A.dbSchemaRefreshButtonDefaults={_constructor:"Img",size:16,src:"[SKIN]/actions/refresh.png",click:"this.creator.dbSchemaTree.invalidateCache()"};isc.A.leftSectionDefaults={_constructor:"SectionStack",headerHeight:25,width:300,showResizeBar:true,animateSections:isc.Browser.isSafari,visibilityMode:"visible",autoParent:"mainLayout"};isc.A.mainLayoutDefaults={_constructor:"HLayout",height:"*"};isc.A.rightPaneDefaults={_constructor:"TabSet",tabs:[{name:"welcome",title:"Welcome",ID:"dsb_welcome_tab",canClose:true,pane:isc.Label.create({height:10,autoDraw:false,overflow:"visible",contents:"Select a database on the left..."})}]};isc.A.autoChildren=["mainLayout"];isc.A.dbPaneDefaults={_constructor:"DBPane"};isc.B.push(isc.A.initWidget=function isc_SQLBrowser_initWidget(){this.Super("initWidget",arguments);this.dbList=this.createAutoChild("dbList",{selectionChanged:"if (state) this.creator.databaseChanged(record)"});this.dbListRefreshButton=this.createAutoChild("dbListRefreshButton");this.dbSchemaTree=this.createAutoChild("dbSchemaTree",{});this.dbSchemaRefreshButton=this.createAutoChild("dbSchemaRefreshButton");this.leftSection=this.createAutoChild("leftSection",{sections:[{name:"databases",title:"Databases",expanded:true,controls:[this.dbListRefreshButton],items:[this.dbList]},{name:"tables",title:"Tables & Views",expanded:true,controls:[this.dbSchemaRefreshButton],items:[this.dbSchemaTree]}]});this.addAutoChildren(this.autoChildren);this.mainLayout.addMember(this.leftSection);this.rightPane=this.createAutoChild("rightPane");this.mainLayout.addMember(this.rightPane)}
+,isc.A.showDBPane=function isc_SQLBrowser_showDBPane(){var _1=this.db;this.showPane({ID:this.escapeForId("db_"+_1.name),title:_1.name,paneClass:"dbPane"},_1)}
+,isc.A.databaseChanged=function isc_SQLBrowser_databaseChanged(_1){if(_1.status=="OK"){this.db=_1;this.dbSchemaTree.loadSchema(_1);this.showDBPane()}}
+,isc.A.showTablePane=function isc_SQLBrowser_showTablePane(_1){this.showDBPane();this.currentPane.showTableBrowser(_1)}
+,isc.A.escapeForId=function isc_SQLBrowser_escapeForId(_1){return isc.isA.String(_1)?_1.replace(/(\/|\.)/g,'_'):_1}
+,isc.A.showPane=function isc_SQLBrowser_showPane(_1,_2){var _3=this.rightPane.getTab(_1.ID);if(_3){this.currentPane=_3.pane;this.rightPane.selectTab(_3);return}
+_3={};isc.addProperties(_3,_1,{canClose:true,pane:this.createAutoChild(_1.paneClass,{config:_2})});var _4=this.rightPane.getTab(0);if(_4&&_4.name=="welcome")this.rightPane.removeTab(0);this.rightPane.addTab(_3);this.rightPane.selectTab(_3);this.currentPane=_3.pane}
+);isc.B._maxIndex=isc.C+6;isc._moduleEnd=isc._SQLBrowser_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('SQLBrowser module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'SQLBrowser'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SQLBrowser.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SQLBrowser.js.gz
new file mode 100755
index 0000000..16a522b
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_SQLBrowser.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Workflow.js b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Workflow.js
new file mode 100755
index 0000000..1b911f3
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Workflow.js
@@ -0,0 +1,96 @@
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
+if(window.isc&&window.isc.module_Core&&!window.isc.module_Workflow){isc.module_Workflow=1;isc._moduleStart=isc._Workflow_start=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc._moduleEnd&&(!isc.Log||(isc.Log && isc.Log.logIsDebugEnabled('loadTime')))){isc._pTM={ message:'Workflow load/parse time: ' + (isc._moduleStart-isc._moduleEnd) + 'ms', category:'loadTime'};
+if(isc.Log && isc.Log.logDebug)isc.Log.logDebug(isc._pTM.message,'loadTime')
+else if(isc._preLog)isc._preLog[isc._preLog.length]=isc._pTM
+else isc._preLog=[isc._pTM]}isc.definingFramework=true;isc.defineClass("ProcessElement");isc.ProcessElement.addProperties({})
+isc.defineClass("ProcessSequence","ProcessElement");isc.ProcessSequence.addProperties({})
+isc.defineClass("Task","ProcessElement");isc.Task.addProperties({})
+isc.defineClass("Process","Task");isc.A=isc.Process.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.autoStart=false;isc.B.push(isc.A.init=function isc_Process_init(){var _1=this.Super("init",arguments);if(this.autoStart)this.start();return _1}
+,isc.A.getElement=function isc_Process_getElement(_1){return this.$87g(this,_1)}
+,isc.A.$87g=function isc_Process__searchElement(_1,_2){if(_1.sequences){for(var i=0;i<_1.sequences.length;i++){var s=_1.sequences[i];if(s.ID==_2){return s}else if(s.sequences||s.elements){var _5=this.$87g(s,_2);if(_5)return _5}}}
+if(_1.elements){for(var i=0;i<_1.elements.length;i++){var e=_1.elements[i];if(e.ID==_2){return e}else if(e.sequences||e.elements){var _5=this.$87g(e,_2);if(_5)return _5}}}}
+,isc.A.start=function isc_Process_start(){if(this.executionStack==null){this.executionStack=[]}
+while(this.$39n()){var _1=this.$87h();if(_1){if(!_1.executeElement(this)){return}}}
+if(this.finished)this.finished(this.state)}
+,isc.A.$39n=function isc_Process__next(){var _1=this.executionStack.last();if(_1==null){if(this.startElement){return this.$87i(this,this.startElement)}else if(this.sequences&&this.sequences.length>0){this.executionStack.add({el:this,sIndex:0});return this.sequences[0]}else if(this.elements&&this.elements.length>0){this.executionStack.add({el:this,eIndex:0});return this.elements[0]}else{isc.logWarn("There are neither sequences or elements. Nothing to execute.")}}else{var _2=null;if(_1.sIndex!=null){_2=_1.el.sequences[_1.sIndex]}else if(_1.eIndex!=null){_2=_1.el.elements[_1.eIndex]}
+if(_2.nextElement){this.executionStack=[];return this.$87i(this,_2.nextElement)}else{return this.$87j()}}}
+,isc.A.$87i=function isc_Process__gotoElement(_1,_2){var _3={el:_1};this.executionStack.add(_3);if(_1.sequences){for(var i=0;i<_1.sequences.length;i++){var s=_1.sequences[i];_3.sIndex=i;if(s.ID==_2){return s}else if(s.sequences||s.elements){var _6=this.$87i(s,_2);if(_6)return _6}}}
+delete _3.sIndex;if(_1.elements){for(var i=0;i<_1.elements.length;i++){var e=_1.elements[i];_3.eIndex=i;if(e.ID==_2){return e}else if(e.sequences||e.elements){var _6=this.$87i(e,_2);if(_6)return _6}}}
+this.executionStack.removeAt(this.executionStack.length-1)}
+,isc.A.$87j=function isc_Process__findNextElement(){var _1=this.executionStack.last();if(_1.eIndex!=null&&_1.el!=this){if(_1.eIndex==_1.el.elements.length-1){this.executionStack.removeAt(this.executionStack.length-1);if(_1.el==this){return}else{return this.$87j()}}else{_1.eIndex++;return _1.el.elements[_1.eIndex]}}}
+,isc.A.$87h=function isc_Process__getFirstTask(){var _1=this.executionStack.last();var _2=null;if(_1.sIndex!=null){_2=_1.el.sequences[_1.sIndex]}else if(_1.eIndex!=null){_2=_1.el.elements[_1.eIndex]}
+if(_2.sequences==null&&_2.elements==null){return _2}
+var _3={el:_2};this.executionStack.add(_3);if(_2.sequences){for(var i=0;i<_2.sequences.length;i++){_3.sIndex=i
+var _5=this.$87h(_2.sequences[i]);if(_5)return _5}}
+if(_2.elements){for(var i=0;i<_2.elements.length;i++){_3.eIndex=i
+var _5=this.$87h(_2.elements[i]);if(_5)return _5}}
+this.executionStack.removeAt(this.executionStack.length-1)}
+,isc.A.setNextElement=function isc_Process_setNextElement(_1){this.executionStack=[];this.startElement=_1}
+);isc.B._maxIndex=isc.C+9;isc.Process.registerStringMethods({finished:"state"});isc.defineClass("ServiceTask","Task");isc.A=isc.ServiceTask.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.operationType="fetch";isc.B.push(isc.A.executeElement=function isc_ServiceTask_executeElement(_1){var _2=this.dataSource;if(_2.getClassName==null||_2.getClassName()!="DataSource"){_2=isc.DataSource.get(_2)}
+var _3={};if(this.inputFieldList){for(var i=0;i<this.inputFieldList.length;i++){_3[this.inputFieldList[i]]=_1.state[this.inputFieldList[i]]}}
+if(this.inputField){_3[this.inputField]=_1.state[this.inputField]}
+var _5=null;if(this.operationType=="fetch"){if(this.criteria){_5=this.criteria;this.$87k(_5,_3)}
+if(this.fixedCriteria){if(_5==null){_5=this.fixedCriteria}else{_5=isc.DataSource.combineCriteria(_5,this.fixedCriteria)}}}
+if(_5==null){_5=_3}
+var _6=this;_2.performDSOperation(this.operationType,_5,function(_11){if(_11.data.length>0){if(_6.outputField&&_6.outputField.startsWith("$")){var _5=_11.data;if(_5.length==1)_5=_5[0];var _7=_6.outputField.substring(1);isc.Class.evaluate("state."+_7+" = data",{state:_1.state,data:_5})}else{var _8=[];if(_6.outputFieldList){_8.addList(_6.outputFieldList)}
+if(_6.outputField)_8.add(_6.outputField);for(var i=0;i<_8.length;i++){var _9=_8[i];var _10=_11.data[0][_9];if(typeof _10!='undefined'){if(_11.data.length>1){_10=[_10];for(var i=1;i<_11.data.length;i++){_10.add(_11.data[i][_9])}}
+_1.state[_9]=_10}}}}
+_1.start()});return false}
+,isc.A.$87k=function isc_ServiceTask__processCriteriaExpressions(_1,_2){for(var _3 in _1){if(_3=="criteria"){this.$87k(_1.criteria,_2)}else if(_1[_3].startsWith("$input")){var _4="state."+_1[_3].replace("$input",this.inputField);_1[_3]=isc.Class.evaluate(_4,{state:_2})}else if(_1[_3].startsWith("$inputRecord")){var _4=_1[_3].replace("$inputRecord","state");_1[_3]=isc.Class.evaluate(_4,{state:_2})}}}
+);isc.B._maxIndex=isc.C+2;isc.defineClass("ScriptTask","Task");isc.A=isc.ScriptTask.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.isAsync=false;isc.B.push(isc.A.getInputData=function isc_ScriptTask_getInputData(){return this.inputData}
+,isc.A.setOutputData=function isc_ScriptTask_setOutputData(_1){this.$87l(this.process,null,_1)}
+,isc.A.getInputRecord=function isc_ScriptTask_getInputRecord(){return this.inputRecord}
+,isc.A.setOutputRecord=function isc_ScriptTask_setOutputRecord(_1){this.$87l(this.process,_1)}
+,isc.A.executeElement=function isc_ScriptTask_executeElement(_1){var _2;var _3;if(this.inputFieldList){_3={};for(var i=0;i<this.inputFieldList.length;i++){_3[this.inputFieldList[i]]=_1.state[this.inputFieldList[i]]}}
+if(this.inputField){_2=_1.state[this.inputField];if(_3){_3[this.inputField]=_2}}
+this.inputData=_2;this.inputRecord=_3;this.process=_1;try{var _5=this.execute(_2,_3)}catch(e){isc.logWarn("Error while executing ScriptTask: "+e.toString())}
+if(this.isAsync){return false}
+if(typeof _5=='undefined'){return true}
+this.$87m(_1,_5);return true}
+,isc.A.$87m=function isc_ScriptTask__processTaskOutput(_1,_2){if(this.outputFieldList){for(var i=0;i<this.outputFieldList.length;i++){if(typeof _2[this.outputFieldList[i]]!='undefined'){_1.state[this.outputFieldList[i]]=_2[this.outputFieldList[i]]}}}
+if(this.outputField){if(this.outputFieldList==null){if(typeof _2!='undefined'){_1.state[this.outputField]=_2}}else{if(typeof _2[this.outputField]!='undefined'){_1.state[this.outputField]=_2[this.outputField]}}}}
+,isc.A.$87l=function isc_ScriptTask__finishTask(_1,_2,_3){if(_2==null){this.$87m(_1,_3)}else{if(_3){_2[this.outputField]=_3}
+this.$87m(_1,_2)}
+if(this.isAsync){_1.start()}}
+);isc.B._maxIndex=isc.C+7;isc.ScriptTask.registerStringMethods({execute:"input,inputRecord"});isc.defineClass("XORGateway","ProcessElement");isc.A=isc.XORGateway;isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.$87n=function isc_c_XORGateway__processFieldsRecursively(_1,_2){var _3=[];for(var _4 in _1){if(isc.isA.Object(_1[_4])&&!isc.isA.Array(_1[_4])&&!isc.isA.RegularExpression(_1[_4])&&!isc.isA.Date(_1[_4]))
+{var _5=_2==null?_4:(_2+"."+_4);_3.addList(this.$87n(_1[_4],_5))}else{_3.add({name:(_2==null?_4:(_2+"."+_4))})}}
+return _3}
+);isc.B._maxIndex=isc.C+1;isc.A=isc.XORGateway.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.executeElement=function isc_XORGateway_executeElement(_1){var _2=isc.XORGateway.$87n(_1.state);var _3=isc.DataSource.create({fields:_2});if(_3.applyFilter([_1.state],this.criteria).length==1){if(this.nextElement)_1.setNextElement(this.nextElement)}else{if(this.failureElement)_1.setNextElement(this.failureElement)}
+return true}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("DecisionGateway","ProcessElement");isc.A=isc.DecisionGateway.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.executeElement=function isc_DecisionGateway_executeElement(_1){var _2=isc.XORGateway.$87n(_1.state);var _3=isc.DataSource.create({fields:_2});for(var _4 in this.criteriaMap){if(_3.applyFilter([_1.state],this.criteriaMap[_4]).length==1){_1.setNextElement(_4);return true}}
+if(this.defaultElement)_1.setNextElement(this.defaultElement);return true}
+);isc.B._maxIndex=isc.C+1;isc.defineClass("UserTask","Task");isc.A=isc.UserTask.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.B.push(isc.A.cancelEditing=function isc_UserTask_cancelEditing(){if(this.process){var _1=this.process
+delete this.process;_1.setNextElement(this.cancelElement);_1.start()}}
+,isc.A.completeEditing=function isc_UserTask_completeEditing(){if(this.process){var _1;if(this.targetVM){_1=this.targetVM.getValues()}else if(this.targetForm){_1=this.targetForm.getValues()}
+var _2=this.process;delete this.process;_2.state[this.inputField]=_1;_2.start()}}
+,isc.A.executeElement=function isc_UserTask_executeElement(_1){this.process=_1;if(this.targetView&&isc.isA.String(this.targetView)){this.targetView=window[this.targetView]}
+if(this.targetVM&&isc.isA.String(this.targetVM)){this.targetVM=window[this.targetVM]}
+if(this.targetForm&&isc.isA.String(this.targetForm)){this.targetForm=window[this.targetForm]}
+if(this.targetView==null){isc.logWarn("TargetView should be set for UserTask");return true}
+if(this.targetForm==null){if(this.targetView.getClassName()=="DynamicForm"){this.targetForm=this.targetView}}
+if(this.targetForm==null&&this.targetVM==null){isc.logWarn("Rather targetForm or targetVM should be set for UserTask or "+"targetView should be a DynamicForm");return true}
+this.targetView.showRecursively();if(this.targetVM){this.targetVM.setValues(isc.clone(_1.state[this.inputField]));this.targetVM.userTask=this}
+if(this.targetForm){this.targetForm.setValues(isc.clone(_1.state[this.inputField]));this.targetForm.userTask=this}
+return false}
+);isc.B._maxIndex=isc.C+3;isc._moduleEnd=isc._Workflow_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Workflow module init time: ' + (isc._moduleEnd-isc._moduleStart) + 'ms','loadTime');delete isc.definingFramework;}else{if(window.isc && isc.Log && isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Workflow'.");}
+/*
+ * Isomorphic SmartClient
+ * Version v8.2p_2012-06-03 (2012-06-03)
+ * Copyright(c) 1998 and beyond Isomorphic Software, Inc. All rights reserved.
+ * "SmartClient" is a trademark of Isomorphic Software, Inc.
+ *
+ * licensing@smartclient.com
+ *
+ * http://smartclient.com/license
+ */
+
diff --git a/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Workflow.js.gz b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Workflow.js.gz
new file mode 100755
index 0000000..55ffa27
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/smart-client/system/modules/ISC_Workflow.js.gz differ
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/css/bootstrap.min.css b/sm-shop/src/main/webapp/resources/templates/bootstrap/css/bootstrap.min.css
new file mode 100644
index 0000000..1c75d0c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/css/bootstrap.min.css
@@ -0,0 +1,9 @@
+/*!
+ * Bootstrap v2.0.3
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.127659574%;*margin-left:2.0744680846382977%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:99.99999998999999%;*width:99.94680850063828%}.row-fluid .span11{width:91.489361693%;*width:91.4361702036383%}.row-fluid .span10{width:82.97872339599999%;*width:82.92553190663828%}.row-fluid .span9{width:74.468085099%;*width:74.4148936096383%}.row-fluid .span8{width:65.95744680199999%;*width:65.90425531263828%}.row-fluid .span7{width:57.446808505%;*width:57.3936170156383%}.row-fluid .span6{width:48.93617020799999%;*width:48.88297871863829%}.row-fluid .span5{width:40.425531911%;*width:40.3723404216383%}.row-fluid .span4{width:31.914893614%;*width:31.8617021246383%}.row-fluid .span3{width:23.404255317%;*width:23.3510638276383%}.row-fluid .span2{width:14.89361702%;*width:14.8404255306383%}.row-fluid .span1{width:6.382978723%;*width:6.329787233638298%}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;content:""}.container-fluid:after{clear:both}p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px}p small{font-size:11px;color:#999}.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px}h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999}h1{font-size:30px;line-height:36px}h1 small{font-size:18px}h2{font-size:24px;line-height:36px}h2 small{font-size:18px}h3{font-size:18px;line-height:27px}h3 small{font-size:14px}h4,h5,h6{line-height:18px}h4{font-size:14px}h4 small{font-size:12px}h5{font-size:12px}h6{font-size:11px;color:#999;text-transform:uppercase}.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eee}.page-header h1{line-height:1}ul,ol{padding:0;margin:0 0 9px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}ul{list-style:disc}ol{list-style:decimal}li{line-height:18px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}dl{margin-bottom:18px}dt,dd{line-height:18px}dt{font-weight:bold;line-height:17px}dd{margin-left:9px}.dl-horizontal dt{float:left;width:120px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:130px}hr{margin:18px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}strong{font-weight:bold}em{font-style:italic}.muted{color:#999}abbr[title]{cursor:help;border-bottom:1px dotted #ddd}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px}blockquote small{display:block;line-height:18px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:18px;font-style:normal;line-height:18px}small{font-size:100%}cite{font-style:normal}code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:18px}pre code{padding:0;color:inherit;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 18px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333;border:0;border-bottom:1px solid #eee}legend small{font-size:13.5px;color:#999}label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px;color:#333}input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555;background-color:#fff;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.uneditable-textarea{width:auto;height:auto}label input,label textarea,label select{display:block}input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;background-color:transparent;border:0 \9;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}input[type="image"]{border:0}input[type="file"]{width:auto;padding:initial;line-height:initial;background-color:#fff;background-color:initial;border:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto}select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px}input[type="file"]{line-height:18px \9}select{width:220px;background-color:#fff}select[multiple],select[size]{height:auto}input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}textarea{height:auto}input[type="hidden"]{display:none}.radio,.checkbox{min-height:18px;padding-left:18px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-ms-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}input:focus,textarea:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:930px}input.span11,textarea.span11,.uneditable-input.span11{width:850px}input.span10,textarea.span10,.uneditable-input.span10{width:770px}input.span9,textarea.span9,.uneditable-input.span9{width:690px}input.span8,textarea.span8,.uneditable-input.span8{width:610px}input.span7,textarea.span7,.uneditable-input.span7{width:530px}input.span6,textarea.span6,.uneditable-input.span6{width:450px}input.span5,textarea.span5,.uneditable-input.span5{width:370px}input.span4,textarea.span4,.uneditable-input.span4{width:290px}input.span3,textarea.span3,.uneditable-input.span3{width:210px}input.span2,textarea.span2,.uneditable-input.span2{width:130px}input.span1,textarea.span1,.uneditable-input.span1{width:50px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee;border-color:#ddd}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #ddd;*zoom:1}.form-actions:before,.form-actions:after{display:table;content:""}.form-actions:after{clear:both}.uneditable-input{overflow:hidden;white-space:nowrap;cursor:not-allowed;background-color:#fff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}:-moz-placeholder{color:#999}::-webkit-input-placeholder{color:#999}.help-block,.help-inline{color:#555}.help-block{display:block;margin-bottom:9px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-prepend,.input-append{margin-bottom:5px}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:middle;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{z-index:2}.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc}.input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;height:18px;min-width:16px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc}.input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append .uneditable-input{border-right-color:#ccc;border-left-color:#eee}.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:9px}legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:18px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:160px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:160px}.form-horizontal .help-block{margin-top:9px;margin-bottom:0}.form-horizontal .form-actions{padding-left:160px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:18px}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9}.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5}table .span1{float:none;width:44px;margin-left:0}table .span2{float:none;width:124px;margin-left:0}table .span3{float:none;width:204px;margin-left:0}table .span4{float:none;width:284px;margin-left:0}table .span5{float:none;width:364px;margin-left:0}table .span6{float:none;width:444px;margin-left:0}table .span7{float:none;width:524px;margin-left:0}table .span8{float:none;width:604px;margin-left:0}table .span9{float:none;width:684px;margin-left:0}table .span10{float:none;width:764px;margin-left:0}table .span11{float:none;width:844px;margin-left:0}table .span12{float:none;width:924px;margin-left:0}table .span13{float:none;width:1004px;margin-left:0}table .span14{float:none;width:1084px;margin-left:0}table .span15{float:none;width:1164px;margin-left:0}table .span16{float:none;width:1244px;margin-left:0}table .span17{float:none;width:1324px;margin-left:0}table .span18{float:none;width:1404px;margin-left:0}table .span19{float:none;width:1484px;margin-left:0}table .span20{float:none;width:1564px;margin-left:0}table .span21{float:none;width:1644px;margin-left:0}table .span22{float:none;width:1724px;margin-left:0}table .span23{float:none;width:1804px;margin-left:0}table .span24{float:none;width:1884px;margin-left:0}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0}.icon-white{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";opacity:.3;filter:alpha(opacity=30)}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:4px 0;margin:1px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#08c}.open{*z-index:1000}.open .dropdown-menu{display:block}.pull-right .dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0,0,0,0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;filter:alpha(opacity=0);-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-ms-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1;filter:alpha(opacity=100)}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-ms-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 10px 4px;margin-bottom:0;*margin-left:.3em;font-size:13px;line-height:18px;*line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-ms-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(top,#fff,#e6e6e6);background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-ms-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.btn-large [class^="icon-"]{margin-top:1px}.btn-small{padding:5px 9px;font-size:11px;line-height:16px}.btn-small [class^="icon-"]{margin-top:-1px}.btn-mini{padding:2px 6px;font-size:11px;line-height:14px}.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#ccc;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.btn-primary{background-color:#0074cc;*background-color:#05c;background-image:-ms-linear-gradient(top,#08c,#05c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#05c));background-image:-webkit-linear-gradient(top,#08c,#05c);background-image:-o-linear-gradient(top,#08c,#05c);background-image:-moz-linear-gradient(top,#08c,#05c);background-image:linear-gradient(top,#08c,#05c);background-repeat:repeat-x;border-color:#05c #05c #003580;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc',endColorstr='#0055cc',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#05c;*background-color:#004ab3}.btn-primary:active,.btn-primary.active{background-color:#004099 \9}.btn-warning{background-color:#faa732;*background-color:#f89406;background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{background-color:#da4f49;*background-color:#bd362f;background-image:-ms-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(top,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#bd362f',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{background-color:#5bb75b;*background-color:#51a351;background-image:-ms-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(top,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#51a351',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{background-color:#49afcd;*background-color:#2f96b4;background-image:-ms-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(top,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#2f96b4',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{background-color:#414141;*background-color:#222;background-image:-ms-linear-gradient(top,#555,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#555),to(#222));background-image:-webkit-linear-gradient(top,#555,#222);background-image:-o-linear-gradient(top,#555,#222);background-image:-moz-linear-gradient(top,#555,#222);background-image:linear-gradient(top,#555,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#555555',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-group{position:relative;*margin-left:.3em;*zoom:1}.btn-group:before,.btn-group:after{display:table;content:""}.btn-group:after{clear:both}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:9px;margin-bottom:9px}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1}.btn-group>.btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.dropdown-toggle{*padding-top:4px;padding-right:8px;*padding-bottom:4px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini.dropdown-toggle{padding-right:5px;padding-left:5px}.btn-group>.btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px}.btn-group>.btn-large.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#05c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:7px;margin-left:0}.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100)}.btn-mini .caret{margin-top:5px}.btn-small .caret{margin-top:6px}.btn-large .caret{margin-top:6px;border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-top:0;border-bottom:5px solid #000}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:.75;filter:alpha(opacity=75)}.alert{padding:8px 35px 8px 14px;margin-bottom:18px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert-heading{color:inherit}.alert .close{position:relative;top:-2px;right:-21px;line-height:18px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:18px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:18px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333;border-bottom-color:#333}.nav>.dropdown.active>a:hover{color:#000;cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.navbar{*position:relative;*z-index:2;margin-bottom:18px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top,#333,#222);background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1)}.navbar .container{width:auto}.nav-collapse.collapse{height:auto}.navbar{color:#999}.navbar .brand:hover{text-decoration:none}.navbar .brand{display:block;float:left;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#999}.navbar .navbar-text{margin-bottom:0;line-height:40px}.navbar .navbar-link{color:#999}.navbar .navbar-link:hover{color:#fff}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn{margin:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#fff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right}.navbar .nav>li{display:block;float:left}.navbar .nav>li>a{float:none;padding:9px 10px 11px;line-height:19px;color:#999;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar .btn{display:inline-block;padding:4px 10px 4px;margin:5px 5px 6px;line-height:18px}.navbar .btn-group{padding:5px 5px 6px;margin:0}.navbar .nav>li>a:hover{color:#fff;text-decoration:none;background-color:transparent}.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#fff;text-decoration:none;background-color:#222}.navbar .divider-vertical{width:1px;height:40px;margin:0 9px;overflow:hidden;background-color:#222;border-right:1px solid #333}.navbar .nav.pull-right{margin-right:0;margin-left:10px}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;background-color:#2c2c2c;*background-color:#222;background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-image:-moz-linear-gradient(top,#333,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{background-color:#222;*background-color:#151515}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#080808 \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown .dropdown-toggle .caret,.navbar .nav li.dropdown.open .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.active .caret{opacity:1;filter:alpha(opacity=100)}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:transparent}.navbar .nav li.dropdown.active>.dropdown-toggle:hover{color:#fff}.navbar .pull-right .dropdown-menu,.navbar .dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right .dropdown-menu:before,.navbar .dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right .dropdown-menu:after,.navbar .dropdown-menu.pull-right:after{right:13px;left:auto}.breadcrumb{padding:7px 14px;margin:0 0 18px;list-style:none;background-color:#fbfbfb;background-image:-moz-linear-gradient(top,#fff,#f5f5f5);background-image:-ms-linear-gradient(top,#fff,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fff,#f5f5f5);background-image:-o-linear-gradient(top,#fff,#f5f5f5);background-image:linear-gradient(top,#fff,#f5f5f5);background-repeat:repeat-x;border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#f5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.breadcrumb li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb .divider{padding:0 5px;color:#999}.breadcrumb .active a{color:#333}.pagination{height:36px;margin:18px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination li{display:inline}.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0}.pagination a:hover,.pagination .active a{background-color:#f5f5f5}.pagination .active a{color:#999;cursor:default}.pagination .disabled span,.pagination .disabled a,.pagination .disabled a:hover{color:#999;cursor:default;background-color:transparent}.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pager{margin-bottom:18px;margin-left:0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;content:""}.pager:after{clear:both}.pager li{display:inline}.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next a{float:right}.pager .previous a{float:left}.pager .disabled a,.pager .disabled a:hover{color:#999;cursor:default;background-color:#fff}.modal-open .dropdown-menu{z-index:2050}.modal-open .dropdown.open{*z-index:2050}.modal-open .popover{z-index:2060}.modal-open .tooltip{z-index:2070}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:50%;left:50%;z-index:1050;width:560px;margin:-250px 0 0 -280px;overflow:auto;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-ms-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:50%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-body{max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.tooltip{position:absolute;z-index:1020;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-2px}.tooltip.right{margin-left:2px}.tooltip.bottom{margin-top:2px}.tooltip.left{margin-left:-2px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px}.popover.top{margin-top:-5px}.popover.right{margin-left:5px}.popover.bottom{margin-top:5px}.popover.left{margin-left:-5px}.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.popover .arrow{position:absolute;width:0;height:0}.popover-inner{width:280px;padding:3px;overflow:hidden;background:#000;background:rgba(0,0,0,0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3)}.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.popover-content{padding:14px;background-color:#fff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:18px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075);box-shadow:0 1px 1px rgba(0,0,0,0.075)}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px}.label,.badge{font-size:10.998px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:18px;margin-bottom:18px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5',endColorstr='#f9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{width:0;height:18px;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf',endColorstr='#0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#149bdf;background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35',GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#57a957',GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#339bb9',GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0)}.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:18px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:18px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel .item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-ms-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel .item>img{display:block;line-height:1}.carousel .active,.carousel .next,.carousel .prev{display:block}.carousel .active{left:0}.carousel .next,.carousel .prev{position:absolute;top:0;width:100%}.carousel .next{left:100%}.carousel .prev{left:-100%}.carousel .next.left,.carousel .prev.right{left:0}.carousel .active.left{left:-100%}.carousel .active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:10px 15px 5px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{color:#fff}.hero-unit{padding:60px;margin-bottom:30px;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit p{font-size:18px;font-weight:200;line-height:27px;color:inherit}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/css/bootstrap-responsive.min.css b/sm-shop/src/main/webapp/resources/templates/bootstrap/css/bootstrap-responsive.min.css
new file mode 100644
index 0000000..dd134a1
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/css/bootstrap-responsive.min.css
@@ -0,0 +1,9 @@
+/*!
+ * Bootstrap Responsive v2.0.3
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}@media(max-width:767px){.visible-phone{display:inherit!important}.hidden-phone{display:none!important}.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}}@media(min-width:768px) and (max-width:979px){.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:18px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.modal{position:absolute;top:10px;right:10px;left:10px;width:auto;margin:0}.modal.fade.in{top:auto}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:auto;margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.762430939%;*margin-left:2.709239449638298%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:99.999999993%;*width:99.9468085036383%}.row-fluid .span11{width:91.436464082%;*width:91.38327259263829%}.row-fluid .span10{width:82.87292817100001%;*width:82.8197366816383%}.row-fluid .span9{width:74.30939226%;*width:74.25620077063829%}.row-fluid .span8{width:65.74585634900001%;*width:65.6926648596383%}.row-fluid .span7{width:57.182320438000005%;*width:57.129128948638304%}.row-fluid .span6{width:48.618784527%;*width:48.5655930376383%}.row-fluid .span5{width:40.055248616%;*width:40.0020571266383%}.row-fluid .span4{width:31.491712705%;*width:31.4385212156383%}.row-fluid .span3{width:22.928176794%;*width:22.874985304638297%}.row-fluid .span2{width:14.364640883%;*width:14.311449393638298%}.row-fluid .span1{width:5.801104972%;*width:5.747913482638298%}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:714px}input.span11,textarea.span11,.uneditable-input.span11{width:652px}input.span10,textarea.span10,.uneditable-input.span10{width:590px}input.span9,textarea.span9,.uneditable-input.span9{width:528px}input.span8,textarea.span8,.uneditable-input.span8{width:466px}input.span7,textarea.span7,.uneditable-input.span7{width:404px}input.span6,textarea.span6,.uneditable-input.span6{width:342px}input.span5,textarea.span5,.uneditable-input.span5{width:280px}input.span4,textarea.span4,.uneditable-input.span4{width:218px}input.span3,textarea.span3,.uneditable-input.span3{width:156px}input.span2,textarea.span2,.uneditable-input.span2{width:94px}input.span1,textarea.span1,.uneditable-input.span1{width:32px}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:30px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.564102564%;*margin-left:2.510911074638298%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145300001%;*width:91.3997999636383%}.row-fluid .span10{width:82.905982906%;*width:82.8527914166383%}.row-fluid .span9{width:74.358974359%;*width:74.30578286963829%}.row-fluid .span8{width:65.81196581200001%;*width:65.7587743226383%}.row-fluid .span7{width:57.264957265%;*width:57.2117657756383%}.row-fluid .span6{width:48.717948718%;*width:48.6647572286383%}.row-fluid .span5{width:40.170940171000005%;*width:40.117748681638304%}.row-fluid .span4{width:31.623931624%;*width:31.5707401346383%}.row-fluid .span3{width:23.076923077%;*width:23.0237315876383%}.row-fluid .span2{width:14.529914530000001%;*width:14.4767230406383%}.row-fluid .span1{width:5.982905983%;*width:5.929714493638298%}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:1160px}input.span11,textarea.span11,.uneditable-input.span11{width:1060px}input.span10,textarea.span10,.uneditable-input.span10{width:960px}input.span9,textarea.span9,.uneditable-input.span9{width:860px}input.span8,textarea.span8,.uneditable-input.span8{width:760px}input.span7,textarea.span7,.uneditable-input.span7{width:660px}input.span6,textarea.span6,.uneditable-input.span6{width:560px}input.span5,textarea.span5,.uneditable-input.span5{width:460px}input.span4,textarea.span4,.uneditable-input.span4{width:360px}input.span3,textarea.span3,.uneditable-input.span3{width:260px}input.span2,textarea.span2,.uneditable-input.span2{width:160px}input.span1,textarea.span1,.uneditable-input.span1{width:60px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top{position:static;margin-bottom:18px}.navbar-fixed-top .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 9px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#999;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#222}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:block;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222;border-bottom:1px solid #222;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}}
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/css/theme.css b/sm-shop/src/main/webapp/resources/templates/bootstrap/css/theme.css
new file mode 100644
index 0000000..5f4f25a
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/css/theme.css
@@ -0,0 +1,505 @@
+@charset "UTF-8";
+
+@font-face {
+ font-family: 'SalarymanRegular';
+ src: url('../fonts/SALARYMA-webfont.eot');
+ src: url('../fonts/SALARYMA-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/SALARYMA-webfont.woff') format('woff'),
+ url('../fonts/SALARYMA-webfont.ttf') format('truetype'),
+ url('../fonts/SALARYMA-webfont.svg#SalarymanRegular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+
+}
+
+
+body{
+ font-size: 12px;
+ font-family: 'Open Sans',sans-serif;
+}
+
+
+/* fixes css bootstrap row-fluid broken thumbnails */
+.row-fluid ul.thumbnails li.span12 + li { margin-left : 0px; }
+.row-fluid ul.thumbnails li.span6:nth-child(2n + 3) { margin-left : 0px; }
+.row-fluid ul.thumbnails li.span4:nth-child(3n + 4) { margin-left : 0px; }
+.row-fluid ul.thumbnails li.span3:nth-child(4n + 5) { margin-left : 0px; }
+
+
+a:link,a:visited{
+ color:#666;
+}
+a:hover{
+ color:#EE3C1F;
+ text-decoration:none;
+}
+
+.logoImage {
+ max-width:400px;
+}
+
+
+.logo > h1{
+ font: 24px "SalarymanRegular", Arial, sans-serif;
+ letter-spacing: 0;
+ padding:0;
+ margin-top:20px;
+ color:#a2a1a1;
+}
+
+.lbw{
+ font: 16px "SalarymanRegular", Arial, sans-serif;
+ letter-spacing: 0;
+ padding:0;
+ color:#a2a1a1;
+}
+
+.specialPrice{
+ color:#ff0000;
+}
+
+
+/* Main Menu */
+.res-menu{display: none;}
+.res-menu{
+ width: 100%;
+}
+#menu a {text-shadow: 1px 1px #f4f4f4;}
+#menu ul {margin-left:9px;}
+#menu > ul{
+ display: block;
+ margin-left:0;
+}
+#menu > ul > li{
+ list-style: none;
+ float: left;
+ position: relative;
+}
+#menu > ul > li.first,
+#menu > ul > li:first-child{
+ margin-left: 0;
+}
+#menu > ul > li > a{
+ font-size: 12px;
+ font-weight: 400;
+ color: #555;
+ display: block;
+ padding: 25px;
+ margin-top: -5px;
+}
+
+#menu > ul > li > a .name {display: block; color: #4c4c4c;}
+#menu > ul > li > a .desc {display: block; color: #808080;}
+
+#menu > ul > li > a:hover,
+
+#menu > ul a:hover .name,
+#menu .current .name {color: #ff6c00 !important;}
+
+#menu ul ul{
+ position: absolute;
+ width: 150px;
+ padding: 10px 15px;
+ background: #dfdfdf;
+
+ -webkit-box-shadow: 0px 3px 3px rgba(50, 50, 50, 0.5);
+ -moz-box-shadow: 0px 3px 3px rgba(50, 50, 50, 0.5);
+ box-shadow: 0px 3px 3px rgba(50, 50, 50, 0.5);
+
+ -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: 3px;
+ -webkit-border-bottom-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ -moz-border-radius-bottomleft: 3px;
+ -webkit-border-bottom-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+
+}
+#menu ul ul ul {
+ -webkit-box-shadow: 0 2px 3px rgba(50, 50, 50, 0.5);
+ -moz-box-shadow: 0 2px 3px rgba(50, 50, 50, 0.5);
+ box-shadow: 0 2px 3px rgba(50, 50, 50, 0.5);
+
+ -moz-border-radius-topleft: 0;
+ -webkit-border-top-left-radius: 0;
+ border-top-left-radius: 0;
+
+ -moz-border-radius-topright: 3px;
+ -webkit-border-top-right-radius: 3px;
+ border-top-right-radius: 3px;
+ -moz-border-radius-bottomright: 3px;
+ -webkit-border-bottom-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ -moz-border-radius-bottomleft: 3px;
+ -webkit-border-bottom-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+#menu > ul > li > ul{
+ margin-left:-15px;
+ margin-top:-15px;
+}
+#menu ul ul li {
+ list-style: none;
+ padding: 5px 0;
+ position: relative;
+ border-bottom: 1px solid #cfcfcf;
+}
+#menu ul ul li.last{
+ border-bottom: none !important
+}
+#menu ul ul li.menu-last{border-bottom: none;}
+#menu ul ul a{
+ display: block;
+ padding: 5px 0;
+ color: #717171;
+ font-size: 12px;
+}
+#menu ul ul a:hover{color: #ff6c00;}
+#menu li:hover {visibility: inherit;}
+#menu li:hover ul,
+#menu li.sfHover ul {
+ left: 25px;
+ top: 90px;
+ z-index: 99;
+}
+#menu li li:hover ul,
+#menu li li.sfHover ul {
+ left: 156px;
+ top: -2px;
+}
+
+#mainmenu{
+ padding:0;
+ text-transform: uppercase;
+ font-size:11px;
+ border-bottom:1px solid #EEE;
+ z-index: 1030;
+}
+#mainmenu .active a{
+ background-color:transparent;
+ color:#FF6C00;
+}
+
+#mainmenu .nav{
+ margin:0;
+ padding:0;
+}
+#mainmenu #languages{
+ position:relative;
+ left:19px;
+ background-color:#EEE;
+}
+
+
+
+.logo-title,#nav,#product-tab.home a,h2.title,.
+{
+ text-transform: uppercase;
+ font-weight:bold;
+ font-size: 11px;
+ height:18px;
+}
+#nav li.open a{
+ text-shadow: 0 1px 0 #fff;
+}
+.nav-header{
+ color:#000;
+}
+.nav-list > .active > a, .nav-list > .active > a:hover{
+ background-color:#999
+}
+.nav-list.below{
+ margin-top:15px;
+}
+
+.countItems{
+ color:#CCC;
+}
+
+.logo-title{
+ color:#8B8B8B;
+}
+.logo-title span{
+ color:#000;
+}
+.logo img{
+ margin:25px 0
+}
+
+.logon-box {
+ list-style-type: none;
+ padding-top: 8px;
+ z-index:500000;
+}
+
+
+.products-title {
+ background-color: #FBFBFB;
+ background-image: -moz-linear-gradient(center top , #FFFFFF, #F5F5F5);
+ background-repeat: repeat-x;
+ /**border: 1px solid #DDDDDD;**/
+ border-radius: 3px;
+ box-shadow: 0 1px 0 #FFFFFF inset;
+ list-style: none outside none;
+ margin: 0 0 18px;
+ padding: 7px 14px;
+}
+
+.products-title input, textarea, select {
+ margin-bottom:0px;
+}
+
+.products-title .widget-label {
+ color: #999999;
+ display: block;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 18px;
+ padding: 3px 15px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+
+
+#product-tab.home a,h2.title{
+ font-size:16px;
+}
+#product-tab li.active a{
+ color:#FF6C00;
+}
+
+
+#product-tab.home a,h2.title{
+ font-size:16px;
+}
+#product-tab li.active a{
+ color:#FF6C00;
+}
+
+
+#nav li.search_form{
+ padding-left:20px;
+}
+
+
+/** mini shopping cart **/
+
+ .minicart {
+ width: 350px;
+ }
+
+ .total-box {
+ padding: 7px 2px;
+ margin: 0 0 0px;
+ height: 18px;
+ list-style: none;
+ background-color: #fbfbfb;
+ background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
+ background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: linear-gradient(top, #ffffff, #f5f5f5);
+ background-repeat: repeat-x;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
+ box-shadow: inset 0 1px 0 #ffffff;
+ }
+
+ .total-box-label {
+ font-size: 12px;
+ }
+
+ .total-box-price {
+ color: #FF8C00;
+ font-style: bold;
+ }
+
+ .cartbox {
+
+ margin:20px 20px 20px 20px;
+
+
+ }
+
+ #shoppingcart {
+
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+
+ }
+
+
+footer {
+ background: none repeat scroll 0 0 #2D3032;
+ color: #FFFFFF;
+ margin-bottom: 0;
+ margin-top: 30px;
+ padding-top: 15px;
+}
+
+
+footer h4 {
+ font-size: 14px;
+ font-weight:bold;
+ text-transform: uppercase;
+ margin: 0 0 5px 0;
+}
+footer ul{
+ list-style-type:square;
+ margin:0 0 0 13px;
+ padding:4px;
+}
+footer div.company {
+ padding-left:10px;
+}
+
+#footer-bottom {
+ background: none repeat scroll 0 0 #2D3032;
+ color: #FFFFFF;
+ font-size: 0.9em;
+ padding-left:10px;
+ padding-top:10px;
+ font-size: 12px;
+}
+
+
+.product-list li{
+ min-height:230px;
+ background-color:#fff;
+}
+.product-list li .product-box{
+ min-height:270px;
+ padding:0 8px;
+ border:1px solid #eee;
+ border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ position: relative;
+}
+.product-list li .product-box img{
+ display:block;
+ max-height:200px;
+ margin:0 auto 5px;
+}
+.product-list li .product-box:hover{
+ border:1px solid #ccc;
+}
+.product-list li .product-box h4{
+ font-size:12px;
+ color: #808080;
+ text-shadow:1px 1px #F4F4F4;
+}
+.product-list li .product-box .bottom{
+ position: absolute;
+ bottom:0;
+ right:8px;
+ color:#666;
+ font-size:12px;
+}
+
+.listing-item {
+ width:186px;
+}
+
+/** paragraph title **/
+.p-title {
+ color: #FF8C00;
+}
+
+/** paragraph title **/
+.p-title-text {
+ color: #000000;
+}
+
+/** fonts **/
+
+
+#main-content h1, h2, h3, h4, h5, h6 {
+ color: #333333;
+ font-weight: 300;
+ margin: 0;
+}
+
+#main-content h1 {
+ font-size: 36px;
+ line-height: 43px;
+ margin: 0 0 10px;
+ padding: 0;
+}
+
+
+
+
+
+
+/*** to be revised **/
+
+
+
+#myCarousel.home .carousel-caption {
+ position: absolute;
+ right: 0;
+ bottom: 100px;
+ left: 0;
+ padding: 10px;
+ background: #333;
+ background: rgba(0, 0, 0, 0.25);
+ width:400px;
+ height:103px;
+}
+#myCarousel.home .carousel-control.right {
+ right: 20px;
+ top:290px;
+}
+#myCarousel.home .carousel-control.left {
+ left: 840px;
+ top:290px;
+}
+.bg_slider{
+ background: url(../img/bg_slider.png) center no-repeat;
+ height:18px;
+ margin:-17px 0 15px 0;
+}
+
+
+
+.manufactures img{
+ text-align:center
+}
+.pagination{
+ margin:0;
+}
+.pagination li.active{
+ background-color:#eee;
+}
+a.thumbnail:hover{
+ border:1px solid #999
+}
+.thumbnails.small{
+ margin-top:10px;
+}
+.thumbnails p{
+ padding-top:5px;
+}
+ul.social{padding:0;margin:0;list-style:none;}
+ul.social li{float:left;margin-right:10px;}
+.table td.center{
+ text-align:center;
+}
+#myModal{width:515px;}
+
+.productMainImage {
+ margin-bottom:20px;
+}
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.eot b/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.eot
new file mode 100644
index 0000000..dec7b7e
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.eot differ
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.svg b/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.svg
new file mode 100644
index 0000000..0ac0701
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.svg
@@ -0,0 +1,110 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright : 2006 Patrick Broderickwwwrotodesigncom
+</metadata>
+<defs>
+<font id="webfont5CY0JZvJ" horiz-adv-x="1923" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="559" />
+<glyph unicode=" " horiz-adv-x="559" />
+<glyph unicode="	" horiz-adv-x="559" />
+<glyph unicode=" " horiz-adv-x="559" />
+<glyph unicode="!" horiz-adv-x="272" d="M82 182q0 -57 57 -57t58 57v137q0 55 -58 56q-57 0 -57 -56v-137zM82 592q0 -57 57 -57t58 57v819q0 57 -58 57q-57 0 -57 -57v-819z" />
+<glyph unicode="," horiz-adv-x="272" d="M16 92q0 -57 58 -57q31 0 47 24l37 56q41 61 41 135v80q0 57 -58 57q-55 0 -55 -57v-80q0 -37 -23 -72l-36 -55q-11 -15 -11 -31z" />
+<glyph unicode="-" horiz-adv-x="1480" d="M61 805q0 -57 58 -57h1229q55 0 55 57t-55 57h-1229q-58 0 -58 -57z" />
+<glyph unicode="/" horiz-adv-x="1415" d="M37 195q0 -57 57 -58q23 0 39 17l1229 1228q16 16 16 41q0 55 -55 56q-25 0 -41 -17l-1229 -1229q-16 -15 -16 -38z" />
+<glyph unicode="0" horiz-adv-x="1497" d="M78 819q0 -279 196.5 -475.5t475.5 -196.5t475 197t196 475q0 279 -196.5 475.5t-474.5 196.5q-279 0 -475.5 -196.5t-196.5 -475.5zM193 819q0 231 163.5 394t393.5 163q231 0 394 -162.5t163 -394.5q0 -229 -163 -393t-394 -164q-229 0 -393 164t-164 393z" />
+<glyph unicode="1" horiz-adv-x="276" d="M76 205q0 -57 57 -58q57 0 57 58v1229q0 57 -57 57t-57 -57v-1229z" />
+<glyph unicode="2" horiz-adv-x="1497" d="M76 147h1284q57 0 57 58q0 57 -57 57h-1163q49 205 266 301q168 74 457 148q258 66 350 116q147 84 147 232q0 188 -190.5 310t-481.5 122q-270 0 -464 -129q-205 -137 -205 -338q0 -57 55 -57q57 0 57 57q0 145 163 248.5t394 103.5q240 0 400 -91t160 -226 q0 -88 -109 -141q-74 -39 -305 -99q-154 -39 -229 -63q-135 -41 -246 -90q-211 -94 -297 -283q-43 -96 -43 -178v-58z" />
+<glyph unicode="3" horiz-adv-x="1521" d="M84 512q0 -164 211 -268q195 -96 461 -97q266 0 461 97q211 104 210 268q0 164 -210 268q-31 14 -95 39q33 12 95 39q211 104 210 268q0 164 -210 269q-195 96 -461 96t-461 -96q-211 -104 -211 -269q0 -57 57 -57t58 57q0 94 155 170q166 80 402 80t401 -80 q156 -76 156 -170t-156 -170q-166 -80 -401 -79h-205q-57 0 -57 -58q0 -57 57 -57h205q236 0 401 -80q156 -76 156 -170t-156 -170q-166 -80 -401 -80q-236 0 -402 80q-156 76 -155 170q0 57 -58 57q-57 0 -57 -57z" />
+<glyph unicode="4" horiz-adv-x="1550" d="M82 557h1114v-352q0 -57 57 -58q57 0 58 58v352h147q57 0 58 57q0 57 -58 58h-147v762q0 57 -58 57q-57 0 -57 -57v-762h-956l249 743q8 29 -9 52.5t-46 23.5q-41 0 -53 -39z" />
+<glyph unicode="5" horiz-adv-x="1507" d="M78 602q0 -199 205 -336q193 -129 465 -129q274 0 466 129q205 137 205 336q0 201 -205 338q-195 129 -466 129h-420v297h1034q57 0 57 55q0 57 -57 58h-1149v-523h535q229 0 394 -104t165 -250q0 -145 -164 -248.5t-395 -103.5t-394.5 103.5t-163.5 248.5q0 57 -57 57 q-55 0 -55 -57z" />
+<glyph unicode="6" horiz-adv-x="1507" d="M84 602q0 -199 207 -336q193 -129 465 -129q274 0 467 129q205 137 204 336q0 201 -204 338q-193 129 -467 129q-270 0 -465 -129q-49 -33 -92 -76v13q0 242 159 368q152 121 398 121q152 0 283.5 -50t205.5 -136q18 -18 45 -19q55 0 56 58q0 20 -15 36 q-90 104 -242.5 164t-332.5 60q-289 0 -469 -146q-203 -164 -203 -456v-275zM199 602q0 145 163.5 249.5t393.5 104.5q229 0 393 -104t164 -250q0 -145 -163 -248.5t-394 -103.5t-394 103.5t-163 248.5z" />
+<glyph unicode="7" horiz-adv-x="1507" d="M66 1421q0 -55 55 -55h1124l-762 -1141q-10 -14 -10 -30q0 -59 57 -60q33 0 50 27l876 1317h-1335q-55 -1 -55 -58z" />
+<glyph unicode="8" horiz-adv-x="1507" d="M96 500q0 -160 211 -267q190 -96 461 -96q270 0 461 96q211 106 211 267q0 164 -211 268q-53 27 -94 39q305 115 305 307q0 162 -211 268q-190 96 -461 97q-270 0 -461 -97q-211 -106 -211 -268q0 -193 305 -307q-41 -12 -94 -39q-211 -104 -211 -268zM211 500 q0 94 156 170q166 82 401 82q236 0 401 -82q156 -76 156 -170q0 -92 -156 -168q-166 -82 -401 -82q-236 0 -401 82q-156 76 -156 168zM211 1114q0 94 156 170q166 82 401 82q236 0 401 -82q156 -76 156 -170q0 -92 -156 -168q-166 -82 -401 -82q-236 0 -401 82 q-156 76 -156 168z" />
+<glyph unicode="9" horiz-adv-x="1507" d="M78 1012q0 -199 205 -336q193 -129 467 -129q272 0 464 129q49 33 93 76v-13q0 -240 -160 -368q-150 -121 -397 -121q-152 0 -284 50t-206 136q-37 41 -80 4q-20 -16 -20 -43q0 -20 14 -37q90 -104 242.5 -163.5t333.5 -59.5q291 0 469 144q203 164 202 458v273 q0 201 -207 338q-195 129 -464 129q-274 0 -467 -129q-205 -137 -205 -338zM193 1012q0 145 163.5 249.5t393.5 104.5q229 0 393 -104.5t164 -249.5t-163 -249t-394 -104t-394 104t-163 249z" />
+<glyph unicode=":" horiz-adv-x="272" d="M78 182q0 -57 57 -57t58 57v137q0 55 -58 56q-57 0 -57 -56v-137zM78 592q0 -57 57 -57t58 57v137q0 55 -58 55q-57 0 -57 -55v-137z" />
+<glyph unicode=";" horiz-adv-x="272" d="M12 92q0 -57 58 -57q31 0 47 24l37 56q41 61 41 135v80q0 57 -58 57q-57 0 -57 -57v-80q0 -41 -21 -72l-36 -55q-11 -15 -11 -31zM80 602q0 -55 57 -55t58 55v137q0 57 -58 58q-57 0 -57 -58v-137z" />
+<glyph unicode="A" horiz-adv-x="2338" d="M66 207q0 -59 59 -60q25 0 41 21l323 389h1336l336 -389q18 -20 45 -21q55 0 55 56q0 23 -14 39l-1102 1280l-1067 -1280q-12 -15 -12 -35zM586 672l561 674l582 -674h-1143z" />
+<glyph unicode="B" horiz-adv-x="1910" d="M94 147h1389q150 0 256 107.5t106 257.5q0 199 -170 307q170 109 170 307q0 150 -106.5 257.5t-255.5 107.5h-1389v-1344zM207 262v500h1276q102 0 175 -74t73 -176t-73 -176t-175 -74h-1276zM207 877v499h1276q102 0 175 -73.5t73 -176.5q0 -102 -73 -175.5t-175 -73.5 h-1276z" />
+<glyph unicode="C" horiz-adv-x="1851" d="M72 819q0 -297 272 -504q264 -201 639 -200q227 0 428 82t326 227q17 21 17 40q0 21 -21 40q-16 14 -39 14q-25 0 -41 -18q-113 -127 -290 -200t-380 -73q-330 0 -563.5 174t-233.5 418t233.5 418t563.5 174q203 0 380 -72.5t290 -199.5q16 -18 41 -19q23 0 39 15 q22 18 21 39q0 19 -17 40q-125 145 -326 227.5t-428 82.5q-375 0 -639 -201q-272 -207 -272 -504z" />
+<glyph unicode="D" horiz-adv-x="1904" d="M86 147h1081q113 0 224 39q201 70 324.5 245t123.5 388t-124 388t-324 245q-111 39 -224 39h-1081v-1344zM201 262v1114h966q100 0 187 -30q166 -59 268 -205t102 -322t-102 -321.5t-268 -204.5q-86 -31 -187 -31h-966z" />
+<glyph unicode="E" horiz-adv-x="1904" d="M74 147h1695q57 0 58 58q0 57 -58 57h-1581v500h1581q57 0 58 57q0 57 -58 58h-1581v499h1581q57 0 58 58q0 57 -58 57h-1695v-1344z" />
+<glyph unicode="F" horiz-adv-x="1904" d="M92 205q0 -57 58 -58q57 0 57 58v557h1581q57 0 57 57t-57 58h-1581v499h1581q57 0 57 58q0 57 -57 57h-1696v-1286z" />
+<glyph unicode="G" horiz-adv-x="1857" d="M76 807q0 -297 272 -504q264 -201 639 -201q391 0 660 220v-129q0 -55 57 -56q55 0 55 56v466h-772q-57 0 -57 -57q0 -55 57 -55h660v-70q-113 -123 -287 -191.5t-373 -68.5q-330 0 -563.5 173t-233.5 417q0 246 233.5 419t563.5 173q203 0 380 -72t288 -199 q16 -20 43 -20q57 0 57 57q0 20 -14 37q-129 145 -328 228t-426 83q-373 0 -639 -202q-272 -207 -272 -504z" />
+<glyph unicode="H" horiz-adv-x="1888" d="M76 182q0 -57 57 -57t57 57v557h1524v-557q0 -57 58 -57q57 0 57 57v1229q0 57 -57 57t-58 -57v-557h-1524v557q0 57 -57 57t-57 -57v-1229z" />
+<glyph unicode="I" horiz-adv-x="305" d="M94 193q0 -55 56 -56q57 0 57 56v1228q0 57 -57 58q-55 0 -56 -58v-1228z" />
+<glyph unicode="J" horiz-adv-x="1888" d="M70 627q0 -287 297 -422q225 -102 577 -103q354 0 580 103q297 135 297 422v794q0 57 -58 58q-55 0 -55 -58v-794q0 -242 -295 -344q-193 -66 -469 -66t-467 66q-295 102 -295 344q0 55 -57 55q-55 0 -55 -55z" />
+<glyph unicode="K" horiz-adv-x="1888" d="M74 193q0 -55 57 -56q57 0 57 56v374l752 377l789 -790q16 -16 40 -17q57 0 58 58q0 23 -17 38l-763 764l749 375q31 14 31 49q0 33 -27 49q-14 9 -29 9q-13 0 -26 -6l-1557 -779v727q0 57 -57 58q-57 0 -57 -58v-1228z" />
+<glyph unicode="L" horiz-adv-x="1912" d="M98 137h1696q57 0 57 56q0 57 -57 57h-1581v1171q0 57 -57 58q-57 0 -58 -58v-1284z" />
+<glyph unicode="M" horiz-adv-x="1863" d="M55 193q0 -55 58 -56q55 0 55 56v1042l764 -1145l762 1145v-1042q0 -55 57 -56q55 0 55 56v1417l-874 -1313l-877 1313v-1417z" />
+<glyph unicode="N" horiz-adv-x="1888" d="M63 193q0 -55 58 -56q57 0 57 56v1116l1639 -1229v1341q0 57 -58 58q-57 0 -57 -58v-1114l-1639 1229v-1343z" />
+<glyph unicode="O" d="M57 807q0 -297 273 -504q264 -201 639 -201t637 201q272 209 272 504t-272 504q-266 203 -637 202q-373 0 -639 -202q-273 -207 -273 -504zM172 807q0 246 233.5 419t563.5 173t563 -173t233 -419q0 -244 -233.5 -417t-562.5 -173q-330 0 -563.5 173t-233.5 417z" />
+<glyph unicode="P" d="M84 205q0 -57 57 -58q57 0 58 58v352h1171q195 0 331 137t136 330q0 195 -136 331t-331 136h-1286v-1286zM199 672v704h1171q145 0 248.5 -103.5t103.5 -248.5t-103 -248.5t-249 -103.5h-1171z" />
+<glyph unicode="Q" d="M51 819q0 -299 273 -504q246 -184 579 -200v-273q0 -55 58 -55q57 0 57 55v273q338 16 581 200q272 207 273 504q0 297 -273 504q-264 201 -638 201q-373 0 -637 -201q-273 -207 -273 -504zM164 819q0 244 233.5 418t563.5 174t563 -174t233 -418q0 -233 -215 -403 t-524 -187v385q0 57 -57 58q-57 0 -58 -58v-385q-309 16 -524 186.5t-215 403.5z" />
+<glyph unicode="R" d="M84 205q0 -57 57 -58q57 0 58 58v352h950l600 -399q14 -10 31 -11q31 0 47 27q10 14 10 31q0 31 -25 47l-458 305h16q195 0 331 137t136 330q0 195 -136 331t-331 136h-1286v-1286zM199 672v704h1171q145 0 248.5 -103.5t103.5 -248.5t-103 -248.5t-249 -103.5h-1171z " />
+<glyph unicode="S" d="M88 614q0 -211 254 -355t623 -144q367 0 598 80q279 96 278 282q0 195 -237 281q-135 49 -527 102l-203 29q-371 53 -491 94q-180 61 -180 178q0 111 213 180.5t549 69.5q309 0 535 -114.5t226 -272.5q0 -57 58 -57q57 0 57 57q0 211 -254 355.5t-622 144.5 q-367 0 -598 -80q-279 -96 -279 -283q0 -195 248 -282q119 -41 524 -103l96 -14l105 -14q375 -51 498 -95q168 -57 167 -176q0 -111 -213 -180.5t-548 -69.5q-309 0 -535.5 115t-226.5 272q0 57 -58 58q-57 -1 -57 -58z" />
+<glyph unicode="T" horiz-adv-x="1835" d="M43 1434q0 -57 57 -58h762v-1171q0 -57 58 -58q57 0 57 58v1171h762q57 0 57 58q0 57 -57 57h-1639q-57 0 -57 -57z" />
+<glyph unicode="U" horiz-adv-x="1961" d="M113 627q0 -287 299 -422q225 -102 577 -103q354 0 580 103q297 135 297 422v794q0 57 -58 58q-57 0 -57 -58v-794q0 -242 -295 -344q-190 -66 -467 -66q-276 0 -467 66q-295 102 -295 344v794q0 57 -57 58q-57 0 -57 -58v-794z" />
+<glyph unicode="V" horiz-adv-x="1851" d="M47 1421q0 -16 10 -30l869 -1301l866 1301q10 14 10 32q0 57 -57 58q-33 0 -49 -27l-770 -1157l-772 1157q-16 27 -50 27q-57 -1 -57 -60z" />
+<glyph unicode="W" horiz-adv-x="2496" d="M37 1423q0 -12 4 -24l594 -1340l618 1235l617 -1235l596 1340q4 10 4 22q0 57 -55 58q-39 0 -54 -33l-497 -1118l-611 1222l-612 -1222l-498 1118q-14 33 -51 33q-55 -1 -55 -56z" />
+<glyph unicode="X" horiz-adv-x="1847" d="M49 195q0 -57 60 -58q18 0 32 10l785 590l784 -590q14 -10 33 -10q59 0 59 58q0 29 -22 45l-760 567l760 569q23 16 22 45q0 57 -59 58q-18 0 -33 -11l-784 -589l-785 589q-14 10 -32 11q-31 0 -48 -23q-15 -21 -15 -38q0 -23 26 -42l759 -569l-759 -567q-23 -16 -23 -45 z" />
+<glyph unicode="Y" horiz-adv-x="1847" d="M51 1421q0 -23 17 -39l800 -802v-387q0 -55 58 -56q57 0 57 56v387l803 802q16 16 16 41q0 55 -57 56q-23 0 -39 -17l-780 -778l-779 778q-16 16 -41 17q-55 -1 -55 -58z" />
+<glyph unicode="Z" horiz-adv-x="2041" d="M35 137h1808q57 0 58 56q0 57 -58 57h-1466l1638 1229h-1810q-55 0 -55 -58q0 -55 55 -55h1468z" />
+<glyph unicode="a" horiz-adv-x="2338" d="M66 207q0 -59 59 -60q25 0 41 21l323 389h1336l336 -389q18 -20 45 -21q55 0 55 56q0 23 -14 39l-1102 1280l-1067 -1280q-12 -15 -12 -35zM586 672l561 674l582 -674h-1143z" />
+<glyph unicode="b" horiz-adv-x="1910" d="M94 147h1389q150 0 256 107.5t106 257.5q0 199 -170 307q170 109 170 307q0 150 -106.5 257.5t-255.5 107.5h-1389v-1344zM207 262v500h1276q102 0 175 -74t73 -176t-73 -176t-175 -74h-1276zM207 877v499h1276q102 0 175 -73.5t73 -176.5q0 -102 -73 -175.5t-175 -73.5 h-1276z" />
+<glyph unicode="c" horiz-adv-x="1851" d="M72 819q0 -297 272 -504q264 -201 639 -200q227 0 428 82t326 227q17 21 17 40q0 21 -21 40q-16 14 -39 14q-25 0 -41 -18q-113 -127 -290 -200t-380 -73q-330 0 -563.5 174t-233.5 418t233.5 418t563.5 174q203 0 380 -72.5t290 -199.5q16 -18 41 -19q23 0 39 15 q22 18 21 39q0 19 -17 40q-125 145 -326 227.5t-428 82.5q-375 0 -639 -201q-272 -207 -272 -504z" />
+<glyph unicode="d" horiz-adv-x="1904" d="M86 147h1081q113 0 224 39q201 70 324.5 245t123.5 388t-124 388t-324 245q-111 39 -224 39h-1081v-1344zM201 262v1114h966q100 0 187 -30q166 -59 268 -205t102 -322t-102 -321.5t-268 -204.5q-86 -31 -187 -31h-966z" />
+<glyph unicode="e" horiz-adv-x="1904" d="M74 147h1695q57 0 58 58q0 57 -58 57h-1581v500h1581q57 0 58 57q0 57 -58 58h-1581v499h1581q57 0 58 58q0 57 -58 57h-1695v-1344z" />
+<glyph unicode="f" horiz-adv-x="1904" d="M92 205q0 -57 58 -58q57 0 57 58v557h1581q57 0 57 57t-57 58h-1581v499h1581q57 0 57 58q0 57 -57 57h-1696v-1286z" />
+<glyph unicode="g" horiz-adv-x="1857" d="M76 807q0 -297 272 -504q264 -201 639 -201q391 0 660 220v-129q0 -55 57 -56q55 0 55 56v466h-772q-57 0 -57 -57q0 -55 57 -55h660v-70q-113 -123 -287 -191.5t-373 -68.5q-330 0 -563.5 173t-233.5 417q0 246 233.5 419t563.5 173q203 0 380 -72t288 -199 q16 -20 43 -20q57 0 57 57q0 20 -14 37q-129 145 -328 228t-426 83q-373 0 -639 -202q-272 -207 -272 -504z" />
+<glyph unicode="h" horiz-adv-x="1888" d="M76 182q0 -57 57 -57t57 57v557h1524v-557q0 -57 58 -57q57 0 57 57v1229q0 57 -57 57t-58 -57v-557h-1524v557q0 57 -57 57t-57 -57v-1229z" />
+<glyph unicode="i" horiz-adv-x="305" d="M94 193q0 -55 56 -56q57 0 57 56v1228q0 57 -57 58q-55 0 -56 -58v-1228z" />
+<glyph unicode="j" horiz-adv-x="1888" d="M70 627q0 -287 297 -422q225 -102 577 -103q354 0 580 103q297 135 297 422v794q0 57 -58 58q-55 0 -55 -58v-794q0 -242 -295 -344q-193 -66 -469 -66t-467 66q-295 102 -295 344q0 55 -57 55q-55 0 -55 -55z" />
+<glyph unicode="k" horiz-adv-x="1888" d="M74 193q0 -55 57 -56q57 0 57 56v374l752 377l789 -790q16 -16 40 -17q57 0 58 58q0 23 -17 38l-763 764l749 375q31 14 31 49q0 33 -27 49q-14 9 -29 9q-13 0 -26 -6l-1557 -779v727q0 57 -57 58q-57 0 -57 -58v-1228z" />
+<glyph unicode="l" horiz-adv-x="1912" d="M98 137h1696q57 0 57 56q0 57 -57 57h-1581v1171q0 57 -57 58q-57 0 -58 -58v-1284z" />
+<glyph unicode="m" horiz-adv-x="1863" d="M55 193q0 -55 58 -56q55 0 55 56v1042l764 -1145l762 1145v-1042q0 -55 57 -56q55 0 55 56v1417l-874 -1313l-877 1313v-1417z" />
+<glyph unicode="n" horiz-adv-x="1888" d="M63 193q0 -55 58 -56q57 0 57 56v1116l1639 -1229v1341q0 57 -58 58q-57 0 -57 -58v-1114l-1639 1229v-1343z" />
+<glyph unicode="o" d="M57 807q0 -297 273 -504q264 -201 639 -201t637 201q272 209 272 504t-272 504q-266 203 -637 202q-373 0 -639 -202q-273 -207 -273 -504zM172 807q0 246 233.5 419t563.5 173t563 -173t233 -419q0 -244 -233.5 -417t-562.5 -173q-330 0 -563.5 173t-233.5 417z" />
+<glyph unicode="p" d="M84 205q0 -57 57 -58q57 0 58 58v352h1171q195 0 331 137t136 330q0 195 -136 331t-331 136h-1286v-1286zM199 672v704h1171q145 0 248.5 -103.5t103.5 -248.5t-103 -248.5t-249 -103.5h-1171z" />
+<glyph unicode="q" d="M51 819q0 -299 273 -504q246 -184 579 -200v-273q0 -55 58 -55q57 0 57 55v273q338 16 581 200q272 207 273 504q0 297 -273 504q-264 201 -638 201q-373 0 -637 -201q-273 -207 -273 -504zM164 819q0 244 233.5 418t563.5 174t563 -174t233 -418q0 -233 -215 -403 t-524 -187v385q0 57 -57 58q-57 0 -58 -58v-385q-309 16 -524 186.5t-215 403.5z" />
+<glyph unicode="r" d="M84 205q0 -57 57 -58q57 0 58 58v352h950l600 -399q14 -10 31 -11q31 0 47 27q10 14 10 31q0 31 -25 47l-458 305h16q195 0 331 137t136 330q0 195 -136 331t-331 136h-1286v-1286zM199 672v704h1171q145 0 248.5 -103.5t103.5 -248.5t-103 -248.5t-249 -103.5h-1171z " />
+<glyph unicode="s" d="M88 614q0 -211 254 -355t623 -144q367 0 598 80q279 96 278 282q0 195 -237 281q-135 49 -527 102l-203 29q-371 53 -491 94q-180 61 -180 178q0 111 213 180.5t549 69.5q309 0 535 -114.5t226 -272.5q0 -57 58 -57q57 0 57 57q0 211 -254 355.5t-622 144.5 q-367 0 -598 -80q-279 -96 -279 -283q0 -195 248 -282q119 -41 524 -103l96 -14l105 -14q375 -51 498 -95q168 -57 167 -176q0 -111 -213 -180.5t-548 -69.5q-309 0 -535.5 115t-226.5 272q0 57 -58 58q-57 -1 -57 -58z" />
+<glyph unicode="t" horiz-adv-x="1835" d="M43 1434q0 -57 57 -58h762v-1171q0 -57 58 -58q57 0 57 58v1171h762q57 0 57 58q0 57 -57 57h-1639q-57 0 -57 -57z" />
+<glyph unicode="u" horiz-adv-x="1961" d="M113 627q0 -287 299 -422q225 -102 577 -103q354 0 580 103q297 135 297 422v794q0 57 -58 58q-57 0 -57 -58v-794q0 -242 -295 -344q-190 -66 -467 -66q-276 0 -467 66q-295 102 -295 344v794q0 57 -57 58q-57 0 -57 -58v-794z" />
+<glyph unicode="v" horiz-adv-x="1851" d="M47 1421q0 -16 10 -30l869 -1301l866 1301q10 14 10 32q0 57 -57 58q-33 0 -49 -27l-770 -1157l-772 1157q-16 27 -50 27q-57 -1 -57 -60z" />
+<glyph unicode="w" horiz-adv-x="2496" d="M37 1423q0 -12 4 -24l594 -1340l618 1235l617 -1235l596 1340q4 10 4 22q0 57 -55 58q-39 0 -54 -33l-497 -1118l-611 1222l-612 -1222l-498 1118q-14 33 -51 33q-55 -1 -55 -56z" />
+<glyph unicode="x" horiz-adv-x="1847" d="M49 195q0 -57 60 -58q18 0 32 10l785 590l784 -590q14 -10 33 -10q59 0 59 58q0 29 -22 45l-760 567l760 569q23 16 22 45q0 57 -59 58q-18 0 -33 -11l-784 -589l-785 589q-14 10 -32 11q-31 0 -48 -23q-15 -21 -15 -38q0 -23 26 -42l759 -569l-759 -567q-23 -16 -23 -45 z" />
+<glyph unicode="y" horiz-adv-x="1847" d="M51 1421q0 -23 17 -39l800 -802v-387q0 -55 58 -56q57 0 57 56v387l803 802q16 16 16 41q0 55 -57 56q-23 0 -39 -17l-780 -778l-779 778q-16 16 -41 17q-55 -1 -55 -58z" />
+<glyph unicode="z" horiz-adv-x="2041" d="M35 137h1808q57 0 58 56q0 57 -58 57h-1466l1638 1229h-1810q-55 0 -55 -58q0 -55 55 -55h1468z" />
+<glyph unicode="­" horiz-adv-x="1480" d="M61 805q0 -57 58 -57h1229q55 0 55 57t-55 57h-1229q-58 0 -58 -57z" />
+<glyph unicode=" " horiz-adv-x="819" />
+<glyph unicode=" " horiz-adv-x="1638" />
+<glyph unicode=" " horiz-adv-x="819" />
+<glyph unicode=" " horiz-adv-x="1638" />
+<glyph unicode=" " horiz-adv-x="544" />
+<glyph unicode=" " horiz-adv-x="409" />
+<glyph unicode=" " horiz-adv-x="272" />
+<glyph unicode=" " horiz-adv-x="272" />
+<glyph unicode=" " horiz-adv-x="204" />
+<glyph unicode=" " horiz-adv-x="327" />
+<glyph unicode=" " horiz-adv-x="90" />
+<glyph unicode="‐" horiz-adv-x="1480" d="M61 805q0 -57 58 -57h1229q55 0 55 57t-55 57h-1229q-58 0 -58 -57z" />
+<glyph unicode="‑" horiz-adv-x="1480" d="M61 805q0 -57 58 -57h1229q55 0 55 57t-55 57h-1229q-58 0 -58 -57z" />
+<glyph unicode="‒" horiz-adv-x="1480" d="M61 805q0 -57 58 -57h1229q55 0 55 57t-55 57h-1229q-58 0 -58 -57z" />
+<glyph unicode="–" horiz-adv-x="1509" d="M72 805q0 -57 57 -57h1229q57 0 57 57t-57 57h-1229q-57 0 -57 -57z" />
+<glyph unicode="—" horiz-adv-x="1497" d="M72 805q0 -57 57 -57h1229q57 0 57 57t-57 57h-1229q-57 0 -57 -57z" />
+<glyph unicode="•" horiz-adv-x="571" d="M92 737q0 80 55.5 135.5t133.5 55.5q80 0 135 -55.5t55 -133.5q0 -80 -55.5 -135t-132.5 -55q-80 0 -135.5 55t-55.5 135v-2z" />
+<glyph unicode=" " horiz-adv-x="327" />
+<glyph unicode=" " horiz-adv-x="409" />
+<glyph unicode="™" horiz-adv-x="3698" d="M1890 193q0 -55 58 -56q55 0 55 56v1042l764 -1145l762 1145v-1042q0 -55 57 -56q55 0 55 56v1417l-874 -1313l-877 1313v-1417zM43 1434q0 -57 57 -58h762v-1171q0 -57 58 -58q57 0 57 58v1171h762q57 0 57 58q0 57 -57 57h-1639q-57 0 -57 -57z" />
+<glyph unicode="" horiz-adv-x="1480" d="M0 1480h1480v-1480h-1480v1480z" />
+<glyph unicode="fi" horiz-adv-x="2209" d="M1999 193q0 -55 56 -56q57 0 57 56v1228q0 57 -57 58q-55 0 -56 -58v-1228zM92 205q0 -57 58 -58q57 0 57 58v557h1581q57 0 57 57t-57 58h-1581v499h1581q57 0 57 58q0 57 -57 57h-1696v-1286z" />
+<glyph unicode="fl" horiz-adv-x="3817" d="M2003 137h1696q57 0 57 56q0 57 -57 57h-1581v1171q0 57 -57 58q-57 0 -58 -58v-1284zM92 205q0 -57 58 -58q57 0 57 58v557h1581q57 0 57 57t-57 58h-1581v499h1581q57 0 57 58q0 57 -57 57h-1696v-1286z" />
+<glyph unicode="ffi" horiz-adv-x="4114" d="M3903 193q0 -55 56 -56q57 0 57 56v1228q0 57 -57 58q-55 0 -56 -58v-1228zM1997 205q0 -57 58 -58q57 0 57 58v557h1581q57 0 57 57t-57 58h-1581v499h1581q57 0 57 58q0 57 -57 57h-1696v-1286zM92 205q0 -57 58 -58q57 0 57 58v557h1581q57 0 57 57t-57 58h-1581v499 h1581q57 0 57 58q0 57 -57 57h-1696v-1286z" />
+<glyph unicode="ffl" horiz-adv-x="5722" d="M3907 137h1696q57 0 57 56q0 57 -57 57h-1581v1171q0 57 -57 58q-57 0 -58 -58v-1284zM1997 205q0 -57 58 -58q57 0 57 58v557h1581q57 0 57 57t-57 58h-1581v499h1581q57 0 57 58q0 57 -57 57h-1696v-1286zM92 205q0 -57 58 -58q57 0 57 58v557h1581q57 0 57 57t-57 58 h-1581v499h1581q57 0 57 58q0 57 -57 57h-1696v-1286z" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.ttf b/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.ttf
new file mode 100644
index 0000000..0c121f4
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.ttf differ
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.woff b/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.woff
new file mode 100644
index 0000000..61932c7
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/templates/bootstrap/fonts/SALARYMA-webfont.woff differ
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/img/glyphicons-halflings.png b/sm-shop/src/main/webapp/resources/templates/bootstrap/img/glyphicons-halflings.png
new file mode 100755
index 0000000..79bc568
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/templates/bootstrap/img/glyphicons-halflings.png differ
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/img/glyphicons-halflings-white.png b/sm-shop/src/main/webapp/resources/templates/bootstrap/img/glyphicons-halflings-white.png
new file mode 100755
index 0000000..3bf6484
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/templates/bootstrap/img/glyphicons-halflings-white.png differ
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/img/surf-banner.jpg b/sm-shop/src/main/webapp/resources/templates/bootstrap/img/surf-banner.jpg
new file mode 100644
index 0000000..db82aec
Binary files /dev/null and b/sm-shop/src/main/webapp/resources/templates/bootstrap/img/surf-banner.jpg differ
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-alert.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-alert.js
new file mode 100755
index 0000000..57890a9
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-alert.js
@@ -0,0 +1,90 @@
+/* ==========================================================
+ * bootstrap-alert.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* ALERT CLASS DEFINITION
+ * ====================== */
+
+ var dismiss = '[data-dismiss="alert"]'
+ , Alert = function (el) {
+ $(el).on('click', dismiss, this.close)
+ }
+
+ Alert.prototype.close = function (e) {
+ var $this = $(this)
+ , selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+
+ e && e.preventDefault()
+
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
+
+ $parent.trigger(e = $.Event('close'))
+
+ if (e.isDefaultPrevented()) return
+
+ $parent.removeClass('in')
+
+ function removeElement() {
+ $parent
+ .trigger('closed')
+ .remove()
+ }
+
+ $.support.transition && $parent.hasClass('fade') ?
+ $parent.on($.support.transition.end, removeElement) :
+ removeElement()
+ }
+
+
+ /* ALERT PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.alert = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('alert')
+ if (!data) $this.data('alert', (data = new Alert(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.alert.Constructor = Alert
+
+
+ /* ALERT DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-button.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-button.js
new file mode 100755
index 0000000..7f187be
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-button.js
@@ -0,0 +1,96 @@
+/* ============================================================
+ * bootstrap-button.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* BUTTON PUBLIC CLASS DEFINITION
+ * ============================== */
+
+ var Button = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.button.defaults, options)
+ }
+
+ Button.prototype.setState = function (state) {
+ var d = 'disabled'
+ , $el = this.$element
+ , data = $el.data()
+ , val = $el.is('input') ? 'val' : 'html'
+
+ state = state + 'Text'
+ data.resetText || $el.data('resetText', $el[val]())
+
+ $el[val](data[state] || this.options[state])
+
+ // push to event loop to allow forms to submit
+ setTimeout(function () {
+ state == 'loadingText' ?
+ $el.addClass(d).attr(d, d) :
+ $el.removeClass(d).removeAttr(d)
+ }, 0)
+ }
+
+ Button.prototype.toggle = function () {
+ var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
+
+ $parent && $parent
+ .find('.active')
+ .removeClass('active')
+
+ this.$element.toggleClass('active')
+ }
+
+
+ /* BUTTON PLUGIN DEFINITION
+ * ======================== */
+
+ $.fn.button = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('button')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('button', (data = new Button(this, options)))
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
+
+ $.fn.button.defaults = {
+ loadingText: 'loading...'
+ }
+
+ $.fn.button.Constructor = Button
+
+
+ /* BUTTON DATA-API
+ * =============== */
+
+ $(function () {
+ $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ $btn.button('toggle')
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-carousel.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-carousel.js
new file mode 100755
index 0000000..551de58
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-carousel.js
@@ -0,0 +1,169 @@
+/* ==========================================================
+ * bootstrap-carousel.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* CAROUSEL CLASS DEFINITION
+ * ========================= */
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.options = options
+ this.options.slide && this.slide(this.options.slide)
+ this.options.pause == 'hover' && this.$element
+ .on('mouseenter', $.proxy(this.pause, this))
+ .on('mouseleave', $.proxy(this.cycle, this))
+ }
+
+ Carousel.prototype = {
+
+ cycle: function (e) {
+ if (!e) this.paused = false
+ this.options.interval
+ && !this.paused
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+ return this
+ }
+
+ , to: function (pos) {
+ var $active = this.$element.find('.active')
+ , children = $active.parent().children()
+ , activePos = children.index($active)
+ , that = this
+
+ if (pos > (children.length - 1) || pos < 0) return
+
+ if (this.sliding) {
+ return this.$element.one('slid', function () {
+ that.to(pos)
+ })
+ }
+
+ if (activePos == pos) {
+ return this.pause().cycle()
+ }
+
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
+ }
+
+ , pause: function (e) {
+ if (!e) this.paused = true
+ clearInterval(this.interval)
+ this.interval = null
+ return this
+ }
+
+ , next: function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ , prev: function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ , slide: function (type, next) {
+ var $active = this.$element.find('.active')
+ , $next = next || $active[type]()
+ , isCycling = this.interval
+ , direction = type == 'next' ? 'left' : 'right'
+ , fallback = type == 'next' ? 'first' : 'last'
+ , that = this
+ , e = $.Event('slide')
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
+
+ if ($next.hasClass('active')) return
+
+ if ($.support.transition && this.$element.hasClass('slide')) {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ this.$element.one($.support.transition.end, function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
+ })
+ } else {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger('slid')
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+ }
+
+
+ /* CAROUSEL PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.carousel = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('carousel')
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (typeof option == 'string' || (option = options.slide)) data[option]()
+ else if (options.interval) data.cycle()
+ })
+ }
+
+ $.fn.carousel.defaults = {
+ interval: 5000
+ , pause: 'hover'
+ }
+
+ $.fn.carousel.Constructor = Carousel
+
+
+ /* CAROUSEL DATA-API
+ * ================= */
+
+ $(function () {
+ $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
+ $target.carousel(options)
+ e.preventDefault()
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-collapse.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-collapse.js
new file mode 100755
index 0000000..fbc915b
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-collapse.js
@@ -0,0 +1,157 @@
+/* =============================================================
+ * bootstrap-collapse.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* COLLAPSE PUBLIC CLASS DEFINITION
+ * ================================ */
+
+ var Collapse = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
+
+ if (this.options.parent) {
+ this.$parent = $(this.options.parent)
+ }
+
+ this.options.toggle && this.toggle()
+ }
+
+ Collapse.prototype = {
+
+ constructor: Collapse
+
+ , dimension: function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ , show: function () {
+ var dimension
+ , scroll
+ , actives
+ , hasData
+
+ if (this.transitioning) return
+
+ dimension = this.dimension()
+ scroll = $.camelCase(['scroll', dimension].join('-'))
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
+
+ if (actives && actives.length) {
+ hasData = actives.data('collapse')
+ if (hasData && hasData.transitioning) return
+ actives.collapse('hide')
+ hasData || actives.data('collapse', null)
+ }
+
+ this.$element[dimension](0)
+ this.transition('addClass', $.Event('show'), 'shown')
+ this.$element[dimension](this.$element[0][scroll])
+ }
+
+ , hide: function () {
+ var dimension
+ if (this.transitioning) return
+ dimension = this.dimension()
+ this.reset(this.$element[dimension]())
+ this.transition('removeClass', $.Event('hide'), 'hidden')
+ this.$element[dimension](0)
+ }
+
+ , reset: function (size) {
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ [dimension](size || 'auto')
+ [0].offsetWidth
+
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
+
+ return this
+ }
+
+ , transition: function (method, startEvent, completeEvent) {
+ var that = this
+ , complete = function () {
+ if (startEvent.type == 'show') that.reset()
+ that.transitioning = 0
+ that.$element.trigger(completeEvent)
+ }
+
+ this.$element.trigger(startEvent)
+
+ if (startEvent.isDefaultPrevented()) return
+
+ this.transitioning = 1
+
+ this.$element[method]('in')
+
+ $.support.transition && this.$element.hasClass('collapse') ?
+ this.$element.one($.support.transition.end, complete) :
+ complete()
+ }
+
+ , toggle: function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+
+ /* COLLAPSIBLE PLUGIN DEFINITION
+ * ============================== */
+
+ $.fn.collapse = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('collapse')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.collapse.defaults = {
+ toggle: true
+ }
+
+ $.fn.collapse.Constructor = Collapse
+
+
+ /* COLLAPSIBLE DATA-API
+ * ==================== */
+
+ $(function () {
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
+ var $this = $(this), href
+ , target = $this.attr('data-target')
+ || e.preventDefault()
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
+ $(target).collapse(option)
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-dropdown.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-dropdown.js
new file mode 100755
index 0000000..454a968
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-dropdown.js
@@ -0,0 +1,100 @@
+/* ============================================================
+ * bootstrap-dropdown.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* DROPDOWN CLASS DEFINITION
+ * ========================= */
+
+ var toggle = '[data-toggle="dropdown"]'
+ , Dropdown = function (element) {
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
+ $('html').on('click.dropdown.data-api', function () {
+ $el.parent().removeClass('open')
+ })
+ }
+
+ Dropdown.prototype = {
+
+ constructor: Dropdown
+
+ , toggle: function (e) {
+ var $this = $(this)
+ , $parent
+ , selector
+ , isActive
+
+ if ($this.is('.disabled, :disabled')) return
+
+ selector = $this.attr('data-target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+ $parent.length || ($parent = $this.parent())
+
+ isActive = $parent.hasClass('open')
+
+ clearMenus()
+
+ if (!isActive) $parent.toggleClass('open')
+
+ return false
+ }
+
+ }
+
+ function clearMenus() {
+ $(toggle).parent().removeClass('open')
+ }
+
+
+ /* DROPDOWN PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.dropdown = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('dropdown')
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
+ * =================================== */
+
+ $(function () {
+ $('html').on('click.dropdown.data-api', clearMenus)
+ $('body')
+ .on('click.dropdown', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-modal.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-modal.js
new file mode 100755
index 0000000..38fd0c8
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-modal.js
@@ -0,0 +1,218 @@
+/* =========================================================
+ * bootstrap-modal.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#modals
+ * =========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* MODAL CLASS DEFINITION
+ * ====================== */
+
+ var Modal = function (content, options) {
+ this.options = options
+ this.$element = $(content)
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
+ }
+
+ Modal.prototype = {
+
+ constructor: Modal
+
+ , toggle: function () {
+ return this[!this.isShown ? 'show' : 'hide']()
+ }
+
+ , show: function () {
+ var that = this
+ , e = $.Event('show')
+
+ this.$element.trigger(e)
+
+ if (this.isShown || e.isDefaultPrevented()) return
+
+ $('body').addClass('modal-open')
+
+ this.isShown = true
+
+ escape.call(this)
+ backdrop.call(this, function () {
+ var transition = $.support.transition && that.$element.hasClass('fade')
+
+ if (!that.$element.parent().length) {
+ that.$element.appendTo(document.body) //don't move modals dom position
+ }
+
+ that.$element
+ .show()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element.addClass('in')
+
+ transition ?
+ that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
+ that.$element.trigger('shown')
+
+ })
+ }
+
+ , hide: function (e) {
+ e && e.preventDefault()
+
+ var that = this
+
+ e = $.Event('hide')
+
+ this.$element.trigger(e)
+
+ if (!this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = false
+
+ $('body').removeClass('modal-open')
+
+ escape.call(this)
+
+ this.$element.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ hideWithTransition.call(this) :
+ hideModal.call(this)
+ }
+
+ }
+
+
+ /* MODAL PRIVATE METHODS
+ * ===================== */
+
+ function hideWithTransition() {
+ var that = this
+ , timeout = setTimeout(function () {
+ that.$element.off($.support.transition.end)
+ hideModal.call(that)
+ }, 500)
+
+ this.$element.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ hideModal.call(that)
+ })
+ }
+
+ function hideModal(that) {
+ this.$element
+ .hide()
+ .trigger('hidden')
+
+ backdrop.call(this)
+ }
+
+ function backdrop(callback) {
+ var that = this
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+ .appendTo(document.body)
+
+ if (this.options.backdrop != 'static') {
+ this.$backdrop.click($.proxy(this.hide, this))
+ }
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ doAnimate ?
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade')?
+ this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
+ removeBackdrop.call(this)
+
+ } else if (callback) {
+ callback()
+ }
+ }
+
+ function removeBackdrop() {
+ this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ function escape() {
+ var that = this
+ if (this.isShown && this.options.keyboard) {
+ $(document).on('keyup.dismiss.modal', function ( e ) {
+ e.which == 27 && that.hide()
+ })
+ } else if (!this.isShown) {
+ $(document).off('keyup.dismiss.modal')
+ }
+ }
+
+
+ /* MODAL PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.modal = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('modal')
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option]()
+ else if (options.show) data.show()
+ })
+ }
+
+ $.fn.modal.defaults = {
+ backdrop: true
+ , keyboard: true
+ , show: true
+ }
+
+ $.fn.modal.Constructor = Modal
+
+
+ /* MODAL DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
+
+ e.preventDefault()
+ $target.modal(option)
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-popover.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-popover.js
new file mode 100755
index 0000000..39fbe35
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-popover.js
@@ -0,0 +1,98 @@
+/* ===========================================================
+ * bootstrap-popover.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * =========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* POPOVER PUBLIC CLASS DEFINITION
+ * =============================== */
+
+ var Popover = function ( element, options ) {
+ this.init('popover', element, options)
+ }
+
+
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
+ ========================================== */
+
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
+
+ constructor: Popover
+
+ , setContent: function () {
+ var $tip = this.tip()
+ , title = this.getTitle()
+ , content = this.getContent()
+
+ $tip.find('.popover-title')[this.isHTML(title) ? 'html' : 'text'](title)
+ $tip.find('.popover-content > *')[this.isHTML(content) ? 'html' : 'text'](content)
+
+ $tip.removeClass('fade top bottom left right in')
+ }
+
+ , hasContent: function () {
+ return this.getTitle() || this.getContent()
+ }
+
+ , getContent: function () {
+ var content
+ , $e = this.$element
+ , o = this.options
+
+ content = $e.attr('data-content')
+ || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
+
+ return content
+ }
+
+ , tip: function () {
+ if (!this.$tip) {
+ this.$tip = $(this.options.template)
+ }
+ return this.$tip
+ }
+
+ })
+
+
+ /* POPOVER PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.popover = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('popover')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('popover', (data = new Popover(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.popover.Constructor = Popover
+
+ $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
+ placement: 'right'
+ , content: ''
+ , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-scrollspy.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-scrollspy.js
new file mode 100755
index 0000000..dce3718
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-scrollspy.js
@@ -0,0 +1,151 @@
+/* =============================================================
+ * bootstrap-scrollspy.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* SCROLLSPY CLASS DEFINITION
+ * ========================== */
+
+ function ScrollSpy( element, options) {
+ var process = $.proxy(this.process, this)
+ , $element = $(element).is('body') ? $(window) : $(element)
+ , href
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
+ this.$scrollElement = $element.on('scroll.scroll.data-api', process)
+ this.selector = (this.options.target
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ || '') + ' .nav li > a'
+ this.$body = $('body')
+ this.refresh()
+ this.process()
+ }
+
+ ScrollSpy.prototype = {
+
+ constructor: ScrollSpy
+
+ , refresh: function () {
+ var self = this
+ , $targets
+
+ this.offsets = $([])
+ this.targets = $([])
+
+ $targets = this.$body
+ .find(this.selector)
+ .map(function () {
+ var $el = $(this)
+ , href = $el.data('target') || $el.attr('href')
+ , $href = /^#\w/.test(href) && $(href)
+ return ( $href
+ && href.length
+ && [[ $href.position().top, href ]] ) || null
+ })
+ .sort(function (a, b) { return a[0] - b[0] })
+ .each(function () {
+ self.offsets.push(this[0])
+ self.targets.push(this[1])
+ })
+ }
+
+ , process: function () {
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
+ , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
+ , maxScroll = scrollHeight - this.$scrollElement.height()
+ , offsets = this.offsets
+ , targets = this.targets
+ , activeTarget = this.activeTarget
+ , i
+
+ if (scrollTop >= maxScroll) {
+ return activeTarget != (i = targets.last()[0])
+ && this.activate ( i )
+ }
+
+ for (i = offsets.length; i--;) {
+ activeTarget != targets[i]
+ && scrollTop >= offsets[i]
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+ && this.activate( targets[i] )
+ }
+ }
+
+ , activate: function (target) {
+ var active
+ , selector
+
+ this.activeTarget = target
+
+ $(this.selector)
+ .parent('.active')
+ .removeClass('active')
+
+ selector = this.selector
+ + '[data-target="' + target + '"],'
+ + this.selector + '[href="' + target + '"]'
+
+ active = $(selector)
+ .parent('li')
+ .addClass('active')
+
+ if (active.parent('.dropdown-menu')) {
+ active = active.closest('li.dropdown').addClass('active')
+ }
+
+ active.trigger('activate')
+ }
+
+ }
+
+
+ /* SCROLLSPY PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.scrollspy = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('scrollspy')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.scrollspy.Constructor = ScrollSpy
+
+ $.fn.scrollspy.defaults = {
+ offset: 10
+ }
+
+
+ /* SCROLLSPY DATA-API
+ * ================== */
+
+ $(function () {
+ $('[data-spy="scroll"]').each(function () {
+ var $spy = $(this)
+ $spy.scrollspy($spy.data())
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-tab.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-tab.js
new file mode 100755
index 0000000..d87f350
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-tab.js
@@ -0,0 +1,135 @@
+/* ========================================================
+ * bootstrap-tab.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TAB CLASS DEFINITION
+ * ==================== */
+
+ var Tab = function ( element ) {
+ this.element = $(element)
+ }
+
+ Tab.prototype = {
+
+ constructor: Tab
+
+ , show: function () {
+ var $this = this.element
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
+ , selector = $this.attr('data-target')
+ , previous
+ , $target
+ , e
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ if ( $this.parent('li').hasClass('active') ) return
+
+ previous = $ul.find('.active a').last()[0]
+
+ e = $.Event('show', {
+ relatedTarget: previous
+ })
+
+ $this.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ $target = $(selector)
+
+ this.activate($this.parent('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $this.trigger({
+ type: 'shown'
+ , relatedTarget: previous
+ })
+ })
+ }
+
+ , activate: function ( element, container, callback) {
+ var $active = container.find('> .active')
+ , transition = callback
+ && $.support.transition
+ && $active.hasClass('fade')
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+
+ element.addClass('active')
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if ( element.parent('.dropdown-menu') ) {
+ element.closest('li.dropdown').addClass('active')
+ }
+
+ callback && callback()
+ }
+
+ transition ?
+ $active.one($.support.transition.end, next) :
+ next()
+
+ $active.removeClass('in')
+ }
+ }
+
+
+ /* TAB PLUGIN DEFINITION
+ * ===================== */
+
+ $.fn.tab = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tab')
+ if (!data) $this.data('tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tab.Constructor = Tab
+
+
+ /* TAB DATA-API
+ * ============ */
+
+ $(function () {
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ e.preventDefault()
+ $(this).tab('show')
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-tooltip.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-tooltip.js
new file mode 100755
index 0000000..b476f1c
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-tooltip.js
@@ -0,0 +1,275 @@
+/* ===========================================================
+ * bootstrap-tooltip.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TOOLTIP PUBLIC CLASS DEFINITION
+ * =============================== */
+
+ var Tooltip = function (element, options) {
+ this.init('tooltip', element, options)
+ }
+
+ Tooltip.prototype = {
+
+ constructor: Tooltip
+
+ , init: function (type, element, options) {
+ var eventIn
+ , eventOut
+
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+ this.enabled = true
+
+ if (this.options.trigger != 'manual') {
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
+ this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
+ }
+
+ this.options.selector ?
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+ this.fixTitle()
+ }
+
+ , getOptions: function (options) {
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
+
+ if (options.delay && typeof options.delay == 'number') {
+ options.delay = {
+ show: options.delay
+ , hide: options.delay
+ }
+ }
+
+ return options
+ }
+
+ , enter: function (e) {
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+ if (!self.options.delay || !self.options.delay.show) return self.show()
+
+ clearTimeout(this.timeout)
+ self.hoverState = 'in'
+ this.timeout = setTimeout(function() {
+ if (self.hoverState == 'in') self.show()
+ }, self.options.delay.show)
+ }
+
+ , leave: function (e) {
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+ if (this.timeout) clearTimeout(this.timeout)
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+ self.hoverState = 'out'
+ this.timeout = setTimeout(function() {
+ if (self.hoverState == 'out') self.hide()
+ }, self.options.delay.hide)
+ }
+
+ , show: function () {
+ var $tip
+ , inside
+ , pos
+ , actualWidth
+ , actualHeight
+ , placement
+ , tp
+
+ if (this.hasContent() && this.enabled) {
+ $tip = this.tip()
+ this.setContent()
+
+ if (this.options.animation) {
+ $tip.addClass('fade')
+ }
+
+ placement = typeof this.options.placement == 'function' ?
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
+ this.options.placement
+
+ inside = /in/.test(placement)
+
+ $tip
+ .remove()
+ .css({ top: 0, left: 0, display: 'block' })
+ .appendTo(inside ? this.$element : document.body)
+
+ pos = this.getPosition(inside)
+
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+
+ switch (inside ? placement.split(' ')[1] : placement) {
+ case 'bottom':
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'top':
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'left':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
+ break
+ case 'right':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
+ break
+ }
+
+ $tip
+ .css(tp)
+ .addClass(placement)
+ .addClass('in')
+ }
+ }
+
+ , isHTML: function(text) {
+ // html string detection logic adapted from jQuery
+ return typeof text != 'string'
+ || ( text.charAt(0) === "<"
+ && text.charAt( text.length - 1 ) === ">"
+ && text.length >= 3
+ ) || /^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(text)
+ }
+
+ , setContent: function () {
+ var $tip = this.tip()
+ , title = this.getTitle()
+
+ $tip.find('.tooltip-inner')[this.isHTML(title) ? 'html' : 'text'](title)
+ $tip.removeClass('fade in top bottom left right')
+ }
+
+ , hide: function () {
+ var that = this
+ , $tip = this.tip()
+
+ $tip.removeClass('in')
+
+ function removeWithAnimation() {
+ var timeout = setTimeout(function () {
+ $tip.off($.support.transition.end).remove()
+ }, 500)
+
+ $tip.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ $tip.remove()
+ })
+ }
+
+ $.support.transition && this.$tip.hasClass('fade') ?
+ removeWithAnimation() :
+ $tip.remove()
+ }
+
+ , fixTitle: function () {
+ var $e = this.$element
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
+ }
+ }
+
+ , hasContent: function () {
+ return this.getTitle()
+ }
+
+ , getPosition: function (inside) {
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
+ width: this.$element[0].offsetWidth
+ , height: this.$element[0].offsetHeight
+ })
+ }
+
+ , getTitle: function () {
+ var title
+ , $e = this.$element
+ , o = this.options
+
+ title = $e.attr('data-original-title')
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
+
+ return title
+ }
+
+ , tip: function () {
+ return this.$tip = this.$tip || $(this.options.template)
+ }
+
+ , validate: function () {
+ if (!this.$element[0].parentNode) {
+ this.hide()
+ this.$element = null
+ this.options = null
+ }
+ }
+
+ , enable: function () {
+ this.enabled = true
+ }
+
+ , disable: function () {
+ this.enabled = false
+ }
+
+ , toggleEnabled: function () {
+ this.enabled = !this.enabled
+ }
+
+ , toggle: function () {
+ this[this.tip().hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+
+ /* TOOLTIP PLUGIN DEFINITION
+ * ========================= */
+
+ $.fn.tooltip = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tooltip')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tooltip.Constructor = Tooltip
+
+ $.fn.tooltip.defaults = {
+ animation: true
+ , placement: 'top'
+ , selector: false
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
+ , trigger: 'hover'
+ , title: ''
+ , delay: 0
+ }
+
+}(window.jQuery);
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-transition.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-transition.js
new file mode 100755
index 0000000..5341826
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-transition.js
@@ -0,0 +1,61 @@
+/* ===================================================
+ * bootstrap-transition.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
+ * ===================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ $(function () {
+
+ "use strict"; // jshint ;_;
+
+
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
+ * ======================================================= */
+
+ $.support.transition = (function () {
+
+ var transitionEnd = (function () {
+
+ var el = document.createElement('bootstrap')
+ , transEndEventNames = {
+ 'WebkitTransition' : 'webkitTransitionEnd'
+ , 'MozTransition' : 'transitionend'
+ , 'OTransition' : 'oTransitionEnd'
+ , 'msTransition' : 'MSTransitionEnd'
+ , 'transition' : 'transitionend'
+ }
+ , name
+
+ for (name in transEndEventNames){
+ if (el.style[name] !== undefined) {
+ return transEndEventNames[name]
+ }
+ }
+
+ }())
+
+ return transitionEnd && {
+ end: transitionEnd
+ }
+
+ })()
+
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-typeahead.js b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-typeahead.js
new file mode 100755
index 0000000..ad44b90
--- /dev/null
+++ b/sm-shop/src/main/webapp/resources/templates/bootstrap/js/bootstrap-typeahead.js
@@ -0,0 +1,285 @@
+/* =============================================================
+ * bootstrap-typeahead.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function($){
+
+ "use strict"; // jshint ;_;
+
+
+ /* TYPEAHEAD PUBLIC CLASS DEFINITION
+ * ================================= */
+
+ var Typeahead = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
+ this.matcher = this.options.matcher || this.matcher
+ this.sorter = this.options.sorter || this.sorter
+ this.highlighter = this.options.highlighter || this.highlighter
+ this.updater = this.options.updater || this.updater
+ this.$menu = $(this.options.menu).appendTo('body')
+ this.source = this.options.source
+ this.shown = false
+ this.listen()
+ }
+
+ Typeahead.prototype = {
+
+ constructor: Typeahead
+
+ , select: function () {
+ var val = this.$menu.find('.active').attr('data-value')
+ this.$element
+ .val(this.updater(val))
+ .change()
+ return this.hide()
+ }
+
+ , updater: function (item) {
+ return item
+ }
+
+ , show: function () {
+ var pos = $.extend({}, this.$element.offset(), {
+ height: this.$element[0].offsetHeight
+ })
+
+ this.$menu.css({
+ top: pos.top + pos.height
+ , left: pos.left
+ })
+
+ this.$menu.show()
+ this.shown = true
+ return this
+ }
+
+ , hide: function () {
+ this.$menu.hide()
+ this.shown = false
+ return this
+ }
+
+ , lookup: function (event) {
+ var that = this
+ , items
+ , q
+
+ this.query = this.$element.val()
+
+ if (!this.query) {
+ return this.shown ? this.hide() : this
+ }
+
+ items = $.grep(this.source, function (item) {
+ return that.matcher(item)
+ })
+
+ items = this.sorter(items)
+
+ if (!items.length) {
+ return this.shown ? this.hide() : this
+ }
+
+ return this.render(items.slice(0, this.options.items)).show()
+ }
+
+ , matcher: function (item) {
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
+ }
+
+ , sorter: function (items) {
+ var beginswith = []
+ , caseSensitive = []
+ , caseInsensitive = []
+ , item
+
+ while (item = items.shift()) {
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
+ else caseInsensitive.push(item)
+ }
+
+ return beginswith.concat(caseSensitive, caseInsensitive)
+ }
+
+ , highlighter: function (item) {
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
+ return '<strong>' + match + '</strong>'
+ })
+ }
+
+ , render: function (items) {
+ var that = this
+
+ items = $(items).map(function (i, item) {
+ i = $(that.options.item).attr('data-value', item)
+ i.find('a').html(that.highlighter(item))
+ return i[0]
+ })
+
+ items.first().addClass('active')
+ this.$menu.html(items)
+ return this
+ }
+
+ , next: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , next = active.next()
+
+ if (!next.length) {
+ next = $(this.$menu.find('li')[0])
+ }
+
+ next.addClass('active')
+ }
+
+ , prev: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , prev = active.prev()
+
+ if (!prev.length) {
+ prev = this.$menu.find('li').last()
+ }
+
+ prev.addClass('active')
+ }
+
+ , listen: function () {
+ this.$element
+ .on('blur', $.proxy(this.blur, this))
+ .on('keypress', $.proxy(this.keypress, this))
+ .on('keyup', $.proxy(this.keyup, this))
+
+ if ($.browser.webkit || $.browser.msie) {
+ this.$element.on('keydown', $.proxy(this.keypress, this))
+ }
+
+ this.$menu
+ .on('click', $.proxy(this.click, this))
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+ }
+
+ , keyup: function (e) {
+ switch(e.keyCode) {
+ case 40: // down arrow
+ case 38: // up arrow
+ break
+
+ case 9: // tab
+ case 13: // enter
+ if (!this.shown) return
+ this.select()
+ break
+
+ case 27: // escape
+ if (!this.shown) return
+ this.hide()
+ break
+
+ default:
+ this.lookup()
+ }
+
+ e.stopPropagation()
+ e.preventDefault()
+ }
+
+ , keypress: function (e) {
+ if (!this.shown) return
+
+ switch(e.keyCode) {
+ case 9: // tab
+ case 13: // enter
+ case 27: // escape
+ e.preventDefault()
+ break
+
+ case 38: // up arrow
+ if (e.type != 'keydown') break
+ e.preventDefault()
+ this.prev()
+ break
+
+ case 40: // down arrow
+ if (e.type != 'keydown') break
+ e.preventDefault()
+ this.next()
+ break
+ }
+
+ e.stopPropagation()
+ }
+
+ , blur: function (e) {
+ var that = this
+ setTimeout(function () { that.hide() }, 150)
+ }
+
+ , click: function (e) {
+ e.stopPropagation()
+ e.preventDefault()
+ this.select()
+ }
+
+ , mouseenter: function (e) {
+ this.$menu.find('.active').removeClass('active')
+ $(e.currentTarget).addClass('active')
+ }
+
+ }
+
+
+ /* TYPEAHEAD PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.typeahead = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('typeahead')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.typeahead.defaults = {
+ source: []
+ , items: 8
+ , menu: '<ul class="typeahead dropdown-menu"></ul>'
+ , item: '<li><a href="#"></a></li>'
+ }
+
+ $.fn.typeahead.Constructor = Typeahead
+
+
+ /* TYPEAHEAD DATA-API
+ * ================== */
+
+ $(function () {
+ $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
+ var $this = $(this)
+ if ($this.data('typeahead')) return
+ e.preventDefault()
+ $this.typeahead($this.data())
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/android.jpg b/sm-shop/src/main/webapp/WEB-INF/classes/demo/android.jpg
new file mode 100644
index 0000000..70a2586
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/android.jpg differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/android2.jpg b/sm-shop/src/main/webapp/WEB-INF/classes/demo/android2.jpg
new file mode 100644
index 0000000..4b09bf3
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/android2.jpg differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/cloud.jpg b/sm-shop/src/main/webapp/WEB-INF/classes/demo/cloud.jpg
new file mode 100644
index 0000000..e3db530
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/cloud.jpg differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/google.jpg b/sm-shop/src/main/webapp/WEB-INF/classes/demo/google.jpg
new file mode 100644
index 0000000..3dee36c
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/google.jpg differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/html5-multimedia.jpg b/sm-shop/src/main/webapp/WEB-INF/classes/demo/html5-multimedia.jpg
new file mode 100644
index 0000000..0fe2f6c
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/html5-multimedia.jpg differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/jQuery.jpg b/sm-shop/src/main/webapp/WEB-INF/classes/demo/jQuery.jpg
new file mode 100644
index 0000000..19791fc
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/jQuery.jpg differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/live-code.jpg b/sm-shop/src/main/webapp/WEB-INF/classes/demo/live-code.jpg
new file mode 100644
index 0000000..e73587f
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/live-code.jpg differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/node.jpg b/sm-shop/src/main/webapp/WEB-INF/classes/demo/node.jpg
new file mode 100644
index 0000000..bad8f88
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/node.jpg differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/paas.JPG b/sm-shop/src/main/webapp/WEB-INF/classes/demo/paas.JPG
new file mode 100644
index 0000000..23e0529
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/paas.JPG differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/demo/spring.png b/sm-shop/src/main/webapp/WEB-INF/classes/demo/spring.png
new file mode 100644
index 0000000..4967e6f
Binary files /dev/null and b/sm-shop/src/main/webapp/WEB-INF/classes/demo/spring.png differ
diff --git a/sm-shop/src/main/webapp/WEB-INF/classes/log4j.xml b/sm-shop/src/main/webapp/WEB-INF/classes/log4j.xml
new file mode 100755
index 0000000..19ce9e9
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/classes/log4j.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+ <!-- Appenders -->
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%-5p: %c - %m%n" />
+ </layout>
+ </appender>
+
+ <logger name="com.salesmanager">
+ <level value="debug" />
+ </logger>
+
+ <!-- 3rdparty Loggers -->
+ <logger name="org.springframework.core">
+ <level value="info" />
+ </logger>
+
+ <logger name="org.springframework.beans">
+ <level value="info" />
+ </logger>
+
+ <logger name="org.springframework.context">
+ <level value="info" />
+ </logger>
+
+ <logger name="org.springframework.http">
+ <level value="debug" />
+ </logger>
+
+ <logger name="org.springframework.web">
+ <level value="debug" />
+ </logger>
+
+ <!-- Root Logger -->
+ <root>
+ <priority value="warn" />
+ <appender-ref ref="console" />
+ </root>
+
+</log4j:configuration>
diff --git a/sm-shop/src/main/webapp/WEB-INF/shopizer-functions.tld b/sm-shop/src/main/webapp/WEB-INF/shopizer-functions.tld
new file mode 100644
index 0000000..a109954
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/shopizer-functions.tld
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+ <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
+ <description><![CDATA["Shopizer functions"]]></description>
+ <display-name>"Shopizer Functions"</display-name>
+ <tlib-version>2.2</tlib-version>
+ <short-name>functions</short-name>
+ <uri>/shopizer-functions</uri>
+
+
+
+
+
+
+</taglib>
+
+
sm-shop/src/main/webapp/WEB-INF/shopizer-tags.tld 273(+273 -0)
diff --git a/sm-shop/src/main/webapp/WEB-INF/shopizer-tags.tld b/sm-shop/src/main/webapp/WEB-INF/shopizer-tags.tld
new file mode 100644
index 0000000..c19abb6
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/shopizer-tags.tld
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+ <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
+ <description><![CDATA["Shopizer tag libs"]]></description>
+ <display-name>"Shopizer Tags"</display-name>
+ <tlib-version>2.2</tlib-version>
+ <short-name>sm</short-name>
+ <uri>/shopizer-tags</uri>
+
+<tag>
+ <!-- Builds the image URL -->
+ <name>contentImage</name>
+ <tag-class>com.salesmanager.web.tags.ContentImageUrlTag</tag-class>
+ <body-content>scriptless</body-content>
+
+
+ <attribute>
+ <name>imageName</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.String</type>
+ </attribute>
+
+ <attribute>
+ <name>imageType</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.String</type>
+ </attribute>
+</tag>
+
+
+<tag>
+ <!-- Builds a content block -->
+ <name>pageContent</name>
+ <tag-class>com.salesmanager.web.tags.PageContentTag</tag-class>
+ <body-content>scriptless</body-content>
+
+
+ <attribute>
+ <name>contentCode</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.String</type>
+ </attribute>
+
+</tag>
+
+<tag>
+ <!-- Builds the manufacturer image URL -->
+ <name>manufacturerImage</name>
+ <tag-class>com.salesmanager.web.tags.ManufacturerImageUrlTag</tag-class>
+ <body-content>scriptless</body-content>
+
+
+ <attribute>
+ <name>imageName</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.String</type>
+ </attribute>
+
+ <attribute>
+ <name>manufacturer</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>com.salesmanager.core.business.catalog.product.model.manufacturer.Manufacturer</type>
+ </attribute>
+
+</tag>
+
+
+<tag>
+ <!-- Builds the product image URL -->
+ <name>productImage</name>
+ <tag-class>com.salesmanager.web.tags.ProductImageUrlTag</tag-class>
+ <body-content>scriptless</body-content>
+
+
+ <attribute>
+ <name>imageName</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.String</type>
+ </attribute>
+
+ <attribute>
+ <name>product</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>com.salesmanager.core.business.catalog.product.model.Product</type>
+ </attribute>
+
+
+</tag>
+
+
+<tag>
+ <!-- Builds the product image URL -->
+ <name>shopProductImage</name>
+ <tag-class>com.salesmanager.web.tags.ShopProductImageUrlTag</tag-class>
+ <body-content>scriptless</body-content>
+
+
+ <attribute>
+ <name>imageName</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.String</type>
+ </attribute>
+
+ <attribute>
+ <name>sku</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.String</type>
+ </attribute>
+
+ <attribute>
+ <name>size</name>
+ <required>false</required>
+ <type>java.lang.String</type>
+ </attribute>
+
+
+</tag>
+
+
+<tag>
+ <!-- Builds the product image URL -->
+ <name>shopProductGroup</name>
+ <tag-class>com.salesmanager.web.tags.ShopProductRelationshipTag</tag-class>
+ <body-content>scriptless</body-content>
+
+
+ <attribute>
+ <name>groupName</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.String</type>
+ </attribute>
+
+
+
+
+</tag>
+
+<tag>
+ <!-- Product price utility -->
+ <name>monetary</name>
+ <tag-class>com.salesmanager.web.tags.ShopProductPriceFormatTag</tag-class>
+ <body-content>scriptless</body-content>
+
+
+ <attribute>
+ <name>value</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.math.BigDecimal</type>
+ </attribute>
+
+ <attribute>
+ <name>currency</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>com.salesmanager.core.business.reference.currency.model.Currency</type>
+ </attribute>
+
+
+</tag>
+
+<tag>
+ <!-- Builds the admin product download URL -->
+ <name>adminProductDownload</name>
+ <tag-class>com.salesmanager.web.tags.AdminProductDownloadUrlTag</tag-class>
+ <body-content>scriptless</body-content>
+
+ <attribute>
+ <name>digitalProduct</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>com.salesmanager.core.business.catalog.product.model.file.DigitalProduct</type>
+ </attribute>
+
+
+</tag>
+
+<tag>
+ <!-- Builds the order product download URL -->
+ <name>orderProductDownload</name>
+ <tag-class>com.salesmanager.web.tags.OrderProductDownloadUrlTag</tag-class>
+ <body-content>scriptless</body-content>
+
+ <attribute>
+ <name>productDownload</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>com.salesmanager.web.entity.order.ReadableOrderProductDownload</type>
+ </attribute>
+ <attribute>
+ <name>orderId</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.Long</type>
+ </attribute>
+
+
+</tag>
+
+
+<tag>
+ <!-- Builds the store logo URL -->
+ <name>storeLogo</name>
+ <tag-class>com.salesmanager.web.tags.StoreLogoUrlTag</tag-class>
+ <body-content>scriptless</body-content>
+
+</tag>
+
+<tag>
+ <!-- Builds breadcrumb parameter -->
+ <name>breadcrumbParam</name>
+ <tag-class>com.salesmanager.web.tags.StoreBreadcrumbsTag</tag-class>
+ <body-content>scriptless</body-content>
+ <attribute>
+ <name>categoryId</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.Long</type>
+ </attribute>
+ <attribute>
+ <name>productId</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>java.lang.Long</type>
+ </attribute>
+
+</tag>
+
+<tag>
+ <!-- Builds the copyright -->
+ <name>storeCopy</name>
+ <tag-class>com.salesmanager.web.tags.StoreFooterTag</tag-class>
+ <body-content>scriptless</body-content>
+
+</tag>
+
+
+<tag>
+ <!-- Builds the product URL -->
+ <name>productUrl</name>
+ <tag-class>com.salesmanager.web.tags.ProductDescriptionUrlTag</tag-class>
+ <body-content>scriptless</body-content>
+
+
+
+ <attribute>
+ <name>productDescription</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ <type>com.salesmanager.core.business.catalog.product.model.description.ProductDescription</type>
+ </attribute>
+
+
+</tag>
+
+
+
+
+
+
+</taglib>
+
+
diff --git a/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/controllers.xml b/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/controllers.xml
new file mode 100755
index 0000000..4025170
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/controllers.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:mvc="http://www.springframework.org/schema/mvc"
+ xmlns:task="http://www.springframework.org/schema/task"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
+ http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
+
+
+ <context:annotation-config />
+ <context:component-scan base-package="com.salesmanager.web" />
+ <context:component-scan base-package="com.salesmanager.core.business" />
+ <context:component-scan base-package="com.salesmanager.core.utils" />
+
+ <!-- Async -->
+ <bean id="executorService" class="java.util.concurrent.Executors"
+ factory-method="newFixedThreadPool">
+ <constructor-arg value="10" />
+ </bean>
+
+ <task:executor id="threadPoolTaskExecutor" pool-size="10" />
+ <task:annotation-driven executor="executorService" />
+
+ <!-- Spring 3.2 content negociation 406 error issue (NOT WORKING) -->
+ <!--
+ <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/>
+ <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
+ <property name="favorPathExtension" value="false" />
+ <property name="mediaTypes" >
+ <value>
+ json=application/json
+ </value>
+ </property>
+ </bean>
+ -->
+
+ <!-- Maps '/' requests to the 'home' view -->
+ <mvc:view-controller path="/" view-name="shop"/>
+
+
+ <mvc:interceptors>
+ <!-- Changes the locale when a 'locale' request parameter is sent; e.g. /?locale=de -->
+ <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
+
+ <mvc:interceptor>
+ <mvc:mapping path="/shop/**"/>
+ <bean class="com.salesmanager.web.filter.StoreFilter"/>
+ </mvc:interceptor>
+
+
+ <mvc:interceptor>
+ <mvc:mapping path="/customer/**"/>
+ <bean class="com.salesmanager.web.filter.StoreFilter"/>
+ </mvc:interceptor>
+
+
+ <mvc:interceptor>
+ <mvc:mapping path="/admin/**"/>
+ <bean class="com.salesmanager.web.filter.AdminFilter" />
+ </mvc:interceptor>
+ </mvc:interceptors>
+
+
+
+</beans>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml b/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
new file mode 100755
index 0000000..698255d
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans:beans xmlns="http://www.springframework.org/schema/mvc"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:beans="http://www.springframework.org/schema/beans"
+ xmlns:task="http://www.springframework.org/schema/task"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+ http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
+
+ <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
+
+ <!-- Enables the Spring MVC @Controller programming model -->
+ <annotation-driven>
+
+ <!-- Device object in controller method -->
+ <argument-resolvers>
+ <beans:bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" />
+ </argument-resolvers>
+
+ <message-converters >
+ <beans:bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter">
+ <beans:property name="supportedMediaTypes">
+ <beans:list>
+ <beans:value>image/jpeg</beans:value>
+ <beans:value>image/gif</beans:value>
+ <beans:value>image/png</beans:value>
+ </beans:list>
+ </beans:property>
+ </beans:bean>
+ </message-converters>
+
+ </annotation-driven>
+
+ <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources/ directory -->
+ <resources mapping="/resources/**" location="/resources/" />
+
+ <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
+ <beans:property name="viewClass">
+ <beans:value>org.springframework.web.servlet.view.tiles2.TilesView</beans:value>
+ </beans:property>
+ </beans:bean>
+
+
+ <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
+ <beans:property name="definitions">
+ <beans:list>
+ <beans:value>/WEB-INF/tiles/tiles-admin.xml</beans:value>
+ <beans:value>/WEB-INF/tiles/tiles-shop.xml</beans:value>
+ </beans:list>
+ </beans:property>
+ </beans:bean>
+
+ <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
+ <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+ <beans:property name="prefix" value="/WEB-INF/views/" />
+ <beans:property name="suffix" value=".jsp" />
+ </beans:bean>
+
+
+ <!-- Only needed because we require fileupload in the org.springframework.samples.mvc.fileupload package -->
+ <beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
+ <beans:property name="maxUploadSize" value="10000000"/>
+ </beans:bean>
+
+ <beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
+ <beans:property name="basenames">
+ <beans:list>
+ <beans:value>bundles/shopizer</beans:value>
+ <beans:value>bundles/messages</beans:value>
+ <beans:value>bundles/shipping</beans:value>
+ <beans:value>bundles/payment</beans:value>
+ </beans:list>
+ </beans:property>
+ </beans:bean>
+
+ <!--
+ <beans:bean id="appConfiguration" class="com.salesmanager.web.utils.AppConfiguration">
+ <beans:property name="properties">
+ <beans:props>
+ <beans:prop key="POPULATE_TEST_DATA">false</beans:prop>
+ </beans:props>
+ </beans:property>
+ </beans:bean>
+ -->
+
+ <beans:bean id="messages" class="com.salesmanager.web.utils.LabelUtils">
+ </beans:bean>
+
+
+ <beans:import resource="controllers.xml" />
+
+</beans:beans>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/shopizer-properties.xml b/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/shopizer-properties.xml
new file mode 100644
index 0000000..4f34411
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/shopizer-properties.xml
@@ -0,0 +1,63 @@
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
+ xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
+ http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd">
+
+
+
+
+
+ <util:properties id="shopizer-properties">
+ <prop key="MULTIPLE_PRICE_AVAILABILITY">false</prop>
+ <prop key="INDEX_PRODUCTS">true</prop>
+ <!-- Images -->
+ <prop key="PRODUCT_IMAGE_WIDTH_SIZE">350</prop>
+ <prop key="PRODUCT_IMAGE_HEIGHT_SIZE">375</prop>
+ <prop key="CROP_UPLOADED_IMAGES">false</prop>
+
+ <!-- upload image validations -->
+ <prop key="PRODUCT_IMAGE_MAX_HEIGHT_SIZE">2000</prop>
+ <prop key="PRODUCT_IMAGE_MAX_WIDTH_SIZE">4000</prop>
+ <prop key="PRODUCT_IMAGE_MAX_SIZE">9000000</prop>
+ <prop key="IMAGE_FORMATS">jpg|png|gif</prop>
+
+ <prop key="POPULATE_TEST_DATA">false</prop>
+
+ <prop key="ORDER_SCHEME">http</prop>
+ <prop key="CONTEXT_PATH">sm-shop</prop>
+ <prop key="URL_EXTENSION">.html</prop>
+ <!-- #https://www.google.com/recaptcha/admin/create -->
+ <prop key="shopizer.recapatcha_public_key">6Lc1Pe0SAAAAADQDlWbv3MYYj7lGEeCEanwC42bv</prop>
+ <prop key="shopizer.recapatcha_private_key">6Lc1Pe0SAAAAAFMolDugwnZN9Xe3CnapokqoQjhg</prop>
+ <!-- express checkout url -->
+ <prop key="PAYPAL_EXPRESSCHECKOUT_SANDBOX"><![CDATA[https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=]]></prop>
+ <prop key="PAYPAL_EXPRESSCHECKOUT_PRODUCTION"><![CDATA[https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=]]></prop>
+ <prop key="PAYPAL_EXPRESSCHECKOUT_REGULAR"><![CDATA[_express-checkout&token=]]></prop>
+ <prop key="PAYPAL_EXPRESSCHECKOUT_MOBILE"><![CDATA[_express-checkout-mobile&token=]]></prop>
+ </util:properties>
+
+
+ <!-- templates -->
+ <util:list id="templates" value-type="java.lang.String">
+ <value>bootstrap</value>
+ </util:list>
+
+ <bean id="initData" class="com.salesmanager.web.init.data.InitStoreData"/>
+
+
+
+
+
+
+
+
+
+
+</beans>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/shopizer-security.xml b/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/shopizer-security.xml
new file mode 100755
index 0000000..68feb68
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/spring/appServlet/shopizer-security.xml
@@ -0,0 +1,129 @@
+<beans:beans xmlns="http://www.springframework.org/schema/security"
+ xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+ http://www.springframework.org/schema/jdbc
+ http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
+ http://www.springframework.org/schema/security
+ http://www.springframework.org/schema/security/spring-security-3.1.xsd">
+
+
+ <global-method-security secured-annotations="enabled" jsr250-annotations="enabled" pre-post-annotations="enabled"/>
+
+ <beans:bean id="customerFacade" class="com.salesmanager.web.shop.controller.customer.facade.CustomerFacadeImpl">
+ </beans:bean>
+
+ <!-- JDBC Customer details -->
+ <beans:bean id="customerDetailsService"
+ class="com.salesmanager.web.services.security.CustomerServicesImpl">
+ </beans:bean>
+
+ <!-- JDBC User details -->
+ <beans:bean id="userDetailsService"
+ class="com.salesmanager.web.admin.security.UserServicesImpl">
+ </beans:bean>
+
+ <beans:bean id="passwordEncoder"
+ class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
+ </beans:bean>
+
+ <beans:bean id="adminAccessDenied"
+ class="com.salesmanager.web.utils.AdminAccessDeniedHandler">
+ <beans:property name="accessDeniedUrl" value="/admin/denied.html" />
+ </beans:bean>
+
+
+ <!-- updates last user logon timestamp -->
+ <beans:bean id="userAuthenticationSuccessHandler" class="com.salesmanager.web.admin.security.UserAuthenticationSuccessHandler">
+ </beans:bean>
+
+
+ <beans:bean id="servicesAuthenticationSuccessHandler" class="com.salesmanager.web.services.security.ServicesAuthenticationSuccessHandler">
+ </beans:bean>
+
+ <beans:bean id="servicesAuthenticationEntryPoint" class="com.salesmanager.web.services.security.ServicesAuthenticationEntryPoint">
+ </beans:bean>
+
+
+
+ <http pattern="/admin/**" auto-config="true" use-expressions="true" authentication-manager-ref="userAuthenticationManager">
+ <intercept-url pattern="/admin/logon.html*" access="permitAll" />
+ <intercept-url pattern="/admin/denied.html" access="permitAll"/>
+ <intercept-url pattern="/admin/unauthorized.html" access="permitAll"/>
+ <intercept-url pattern="/admin/users/resetPassword.html*" access="permitAll" />
+ <intercept-url pattern="/admin/users/resetPasswordSecurityQtn.html*" access="permitAll" />
+ <intercept-url pattern="/admin" access="hasRole('AUTH')" />
+ <intercept-url pattern="/admin/" access="hasRole('AUTH')" />
+ <intercept-url pattern="/admin/*.html*" access="hasRole('AUTH')" />
+ <intercept-url pattern="/admin/*/*.html*" access="hasRole('AUTH')" />
+ <intercept-url pattern="/admin/*/*/*.html*" access="hasRole('AUTH')" />
+
+
+ <form-login
+ login-processing-url="/admin/j_spring_security_check"
+ login-page="/admin/logon.html"
+ authentication-success-handler-ref="userAuthenticationSuccessHandler"
+ authentication-failure-url="/admin/logon.html?login_error=true"
+ default-target-url="/admin/home.html" />
+
+
+ <logout invalidate-session="true"
+ logout-success-url="/admin/home.html"
+ logout-url="/admin/j_spring_security_logout" />
+ <access-denied-handler ref="adminAccessDenied"/>
+ </http>
+
+
+
+ <http pattern="/shop/**" auto-config="true" use-expressions="true" authentication-manager-ref="customerAuthenticationManager">
+
+ <intercept-url pattern="/shop" access="permitAll" />
+ <intercept-url pattern="/shop/" access="permitAll" />
+ <intercept-url pattern="/shop/**" access="permitAll" />
+ <intercept-url pattern="/shop/customer/logon.html*" access="permitAll" />
+ <intercept-url pattern="/shop/customer/registration.html*" access="permitAll" />
+ <intercept-url pattern="/shop/customer/customLogon.html*" access="permitAll" />
+ <intercept-url pattern="/shop/customer/denied.html" access="permitAll"/>
+ <intercept-url pattern="/shop/customer/j_spring_security_check" access="permitAll"/>
+ <intercept-url pattern="/shop/customer" access="hasRole('AUTH_CUSTOMER')" />
+ <intercept-url pattern="/shop/customer/" access="hasRole('AUTH_CUSTOMER')" />
+ <intercept-url pattern="/shop/customer/*.html*" access="hasRole('AUTH_CUSTOMER')" />
+ <intercept-url pattern="/shop/customer/*.html*" access="hasRole('AUTH_CUSTOMER')" />
+ <intercept-url pattern="/shop/customer/*/*.html*" access="hasRole('AUTH_CUSTOMER')" />
+ <intercept-url pattern="/shop/customer/*/*/*.html*" access="hasRole('AUTH_CUSTOMER')" />
+
+
+ <logout invalidate-session="false"
+ logout-success-url="/shop/"
+ logout-url="/shop/customer/j_spring_security_logout" />
+ <access-denied-handler error-page="/shop/"/>
+ </http>
+
+
+ <!-- REST services -->
+ <http pattern="/services/**" create-session="stateless" use-expressions="true" authentication-manager-ref="userAuthenticationManager" entry-point-ref="servicesAuthenticationEntryPoint">
+ <intercept-url pattern="/services/private/**" access="hasRole('AUTH')"/>
+ <intercept-url pattern="/services/public/**" access="permitAll"/>
+ <form-login authentication-success-handler-ref="servicesAuthenticationSuccessHandler" />
+ <http-basic />
+ </http>
+
+
+
+ <authentication-manager id="userAuthenticationManager">
+ <authentication-provider user-service-ref="userDetailsService">
+ <password-encoder hash="sha" />
+ </authentication-provider>
+
+ </authentication-manager>
+
+ <authentication-manager id="customerAuthenticationManager">
+ <authentication-provider user-service-ref="customerDetailsService">
+ <password-encoder hash="sha" />
+ </authentication-provider>
+
+ </authentication-manager>
+
+
+
+</beans:beans>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/WEB-INF/spring/root-context.xml b/sm-shop/src/main/webapp/WEB-INF/spring/root-context.xml
new file mode 100755
index 0000000..2982314
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/spring/root-context.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
+
+ <!-- Root Context: defines shared resources visible to all other web components -->
+
+</beans>
diff --git a/sm-shop/src/main/webapp/WEB-INF/tiles/tiles-admin.xml b/sm-shop/src/main/webapp/WEB-INF/tiles/tiles-admin.xml
new file mode 100644
index 0000000..57c95b2
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/tiles/tiles-admin.xml
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+-->
+<!DOCTYPE tiles-definitions PUBLIC
+ "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
+ "http://struts.apache.org/dtds/tiles-config_2_0.dtd">
+
+
+<tiles-definitions>
+ <definition name="admin-dashboard" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/home.jsp" />
+ </definition>
+ <definition name="admin-store" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/merchant/merchant.jsp" />
+ </definition>
+
+ <definition name="admin-stores" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/merchant/stores.jsp" />
+ </definition>
+
+ <definition name="admin-store-branding" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/merchant/branding.jsp" />
+ </definition>
+
+ <definition name="admin-store-landing" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/merchant/storeLanding.jsp" />
+ </definition>
+
+ <definition name="admin-customers" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/customers/customers.jsp" />
+ </definition>
+
+ <definition name="admin-customer" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/customers/customer.jsp" />
+ </definition>
+
+ <definition name="admin-customer-options-values-list" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/customers/optionsValues.jsp" />
+ </definition>
+
+ <definition name="admin-customer-options-values-details" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/customers/optionValue.jsp" />
+ </definition>
+
+ <definition name="admin-customer-options-list" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/customers/options.jsp" />
+ </definition>
+
+ <definition name="admin-customer-options-details" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/customers/option.jsp" />
+ </definition>
+
+ <definition name="admin-customer-options-set" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/customers/optionsset.jsp" />
+ </definition>
+
+ <definition name="admin-products" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/products.jsp" />
+ </definition>
+
+ <definition name="admin-catalogue-featured" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/featured.jsp" />
+ </definition>
+
+ <definition name="admin-products-groups" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/customProductGroup.jsp" />
+ </definition>
+
+ <definition name="admin-products-groups-details" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/customProductGroupDetails.jsp" />
+ </definition>
+
+ <definition name="admin-products-edit" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/product.jsp" />
+ </definition>
+
+ <definition name="admin-products-attributes" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/attributes.jsp" />
+ </definition>
+
+ <definition name="admin-products-attribute-details" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/attribute.jsp" />
+ </definition>
+
+ <definition name="admin-products-related" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/related.jsp" />
+ </definition>
+
+ <definition name="admin-products-bundles" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/bundles.jsp" />
+ </definition>
+
+ <definition name="admin-products-prices" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/prices.jsp" />
+ </definition>
+
+ <definition name="admin-products-price" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/price.jsp" />
+ </definition>
+
+ <definition name="admin-products-digital" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/digitalProduct.jsp" />
+ </definition>
+
+ <definition name="admin-products-keywords" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/keywords.jsp" />
+ </definition>
+
+ <definition name="admin-products-images" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/productImages.jsp" />
+ </definition>
+
+ <definition name="admin-products-manufacturer" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/manufacturers.jsp" />
+ </definition>
+
+ <definition name="admin-products-manufacturer-details" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/manufacturer.jsp" />
+ </definition>
+
+ <definition name="catalogue-products-categories" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/productsCategories.jsp" />
+ </definition>
+
+ <definition name="catalogue-product-categories" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/productsCategories.jsp" />
+ </definition>
+
+ <definition name="catalogue-product-reviews" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/reviews.jsp" />
+ </definition>
+
+
+ <definition name="admin-shipping-custom" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/shipping/customShippingDetails.jsp" />
+ </definition>
+
+ <definition name="catalogue-categories" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/categories/categories.jsp" />
+ </definition>
+
+ <definition name="catalogue-categories-category" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/categories/category.jsp" />
+ </definition>
+
+ <definition name="catalogue-categories-hierarchy" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/categories/hierarchy.jsp" />
+ </definition>
+
+ <definition name="catalogue-options-list" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/options.jsp" />
+ </definition>
+
+ <definition name="catalogue-options-details" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/option.jsp" />
+ </definition>
+
+ <definition name="catalogue-optionsvalues-list" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/optionsValues.jsp" />
+ </definition>
+
+ <definition name="catalogue-optionsvalues-details" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/products/optionValue.jsp" />
+ </definition>
+
+ <definition name="admin-user-profile" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/profile/profile.jsp" />
+ </definition>
+
+ <definition name="admin-user-password" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/profile/password.jsp" />
+ </definition>
+
+ <definition name="admin-user-permissions" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/profile/permissions.jsp" />
+ </definition>
+ <definition name="admin-user-permission" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/profile/permission.jsp" />
+ </definition>
+
+ <definition name="admin-user-groups" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/profile/groups.jsp" />
+ </definition>
+
+ <definition name="admin-users" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/profile/users.jsp" />
+ </definition>
+
+ <definition name="shipping-configs" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/shipping/shippingConfig.jsp" />
+ </definition>
+
+ <definition name="shipping-methods" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/shipping/shippingMethods.jsp" />
+ </definition>
+
+ <definition name="shipping-method" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/shipping/shippingMethod.jsp" />
+ </definition>
+
+ <definition name="payment-methods" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/payment/paymentMethods.jsp" />
+ </definition>
+
+ <definition name="payment-method" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/payment/paymentMethod.jsp" />
+ </definition>
+
+ <definition name="shipping-options" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/shipping/shippingOptions.jsp" />
+ </definition>
+
+ <definition name="shipping-packaging" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/shipping/packaging.jsp" />
+ </definition>
+
+ <definition name="admin-orders" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/orders/orders.jsp" />
+ </definition>
+
+ <definition name="admin-content-images" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/content/contentImages.jsp" />
+ </definition>
+
+ <definition name="admin-contentImages-add" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/content/addContentImages.jsp" />
+ </definition>
+
+ <definition name="admin-content-files" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/content/contentFiles.jsp" />
+ </definition>
+
+ <definition name="admin-content-pages" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/content/contentPages.jsp" />
+ </definition>
+
+ <definition name="admin-content-pages-details" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/content/contentPagesDetails.jsp" />
+ </definition>
+
+
+
+ <definition name="config-accounts" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/configuration/accounts.jsp" />
+ </definition>
+
+ <definition name="config-email" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/configuration/email.jsp" />
+ </definition>
+
+ <definition name="config-system" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/configuration/system.jsp" />
+ </definition>
+
+ <definition name="admin-content-filebrowser" template="/layout/admin/noSkinLayout.jsp">
+ <put-attribute name="body" value="/pages/admin/components/fileBrowser.jsp" />
+ </definition>
+
+ <definition name="admin-orders-edit" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/orders/order.jsp" />
+ </definition>
+
+ <definition name="admin-orders-transactions" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/orders/transactions.jsp" />
+ </definition>
+
+ <definition name="tax-classes" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/tax/taxClass.jsp" />
+ </definition>
+
+
+ <definition name="tax-class" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/tax/taxClassDetails.jsp" />
+ </definition>
+
+ <definition name="tax-configuration" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/tax/taxConfiguration.jsp" />
+ </definition>
+
+ <definition name="tax-rates" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/tax/taxRates.jsp" />
+ </definition>
+
+ <definition name="tax-rate" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/tax/taxRateDetails.jsp" />
+ </definition>
+
+ <definition name="admin-cache" template="/layout/admin/layout.jsp">
+ <put-attribute name="body" value="/pages/admin/configuration/cacheManagement.jsp" />
+ </definition>
+
+
+</tiles-definitions>
\ No newline at end of file
sm-shop/src/main/webapp/WEB-INF/tiles/tiles-shop.xml 196(+196 -0)
diff --git a/sm-shop/src/main/webapp/WEB-INF/tiles/tiles-shop.xml b/sm-shop/src/main/webapp/WEB-INF/tiles/tiles-shop.xml
new file mode 100755
index 0000000..24fae8c
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/tiles/tiles-shop.xml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+-->
+<!DOCTYPE tiles-definitions PUBLIC
+ "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
+ "http://struts.apache.org/dtds/tiles-config_2_0.dtd">
+
+
+<tiles-definitions>
+
+ <definition name="landing.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/templates/{1}/pages/landing.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="category.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/templates/{1}/pages/category.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="product.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/templates/{1}/pages/product.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="review.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/catalog/review.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="search.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/templates/{1}/pages/search.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="customer.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/templates/{1}/pages/customer.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="content.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/templates/{1}/pages/content.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+
+ <!-- Shopping cart TO ADD HEADER, NAV, FOOTER-->
+ <definition name="maincart.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/cart/cart.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <!-- Contact us -->
+ <definition name="contactus.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/merchant/contactus.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <!-- Rate product -->
+ <definition name="rating.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/catalog/rateProduct.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <!-- Customer registration - account - orders -->
+ <definition name="register.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/customer/register.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="customerAccount.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/customer/profile.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="customerPassword.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/customer/changePassword.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="customerAddress.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/customer/address.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="editCustomerAddress.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/customer/editAddress.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="customerOrders.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/customer/orders.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="customerOrder.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/customer/order.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="customerLogon.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/customer/logon.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <!-- One page checkout -->
+ <definition name="checkout.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/checkout/checkout.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <definition name="confirmation.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/checkout/confirmation.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+
+ <!-- page not found -->
+ <definition name="404.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/notFound.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+ <!-- timeout -->
+ <definition name="timeout.*" template="/pages/shop/templates/{1}/catalogLayout.jsp">
+ <put-attribute name="header" value="/pages/shop/templates/{1}/sections/header.jsp" />
+ <put-attribute name="navbar" value="/pages/shop/templates/{1}/sections/navbar.jsp" />
+ <put-attribute name="body" value="/pages/shop/common/timeout.jsp" />
+ <put-attribute name="footer" value="/pages/shop/templates/{1}/sections/footer.jsp" />
+ </definition>
+
+
+
+
+</tiles-definitions>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/WEB-INF/views/admin/logon.jsp b/sm-shop/src/main/webapp/WEB-INF/views/admin/logon.jsp
new file mode 100755
index 0000000..1585f83
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/views/admin/logon.jsp
@@ -0,0 +1,542 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html>
+
+ <%
+ response.setCharacterEncoding("UTF-8");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setHeader("Pragma", "no-cache");
+ response.setDateHeader("Expires", -1);
+ %>
+
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+ <%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+ <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+
+ <%@page contentType="text/html"%>
+ <%@page pageEncoding="UTF-8"%>
+
+
+
+
+
+ <head>
+ <meta http-equiv="Pragma" content="no-cache">
+ <meta http-equiv="expires" content="0">
+ <title><s:message code="label.storeadministration"
+ text="Store administration" />
+ </title>
+
+
+
+
+<style type=text/css>
+#logon {
+ margin: 0px auto;
+ width: 550px
+}
+
+#login-box {
+ width: 333px;
+ height: 352px;
+ padding: 58px 76px 0 76px;
+ color: #ebebeb;
+ font: 12px Arial, Helvetica, sans-serif;
+ background: url('<c:url value="/resources/img/admin/login-box-backg.png" />') no-repeat left top;
+}
+
+#login-box h2 {
+ padding: 0;
+ margin: 0;
+ color: #ebebeb;
+ font: bold 36px "Calibri", Arial;
+ border-bottom: 2px solid;
+ padding-bottom: 0px;
+}
+
+#login-box {
+ margin-left: 30px;
+}
+
+#controls {
+ margin-left: -50px;
+ margin-top: 30px;
+}
+
+
+
+
+</style>
+
+
+
+
+ <link
+ href="<c:url value="/resources/css/bootstrap/css/sm-bootstrap.css" />"
+ rel="stylesheet" />
+ <link
+ href="<c:url value="/resources/css/sm-bootstrap-responsive.css" />"
+ rel="stylesheet" />
+ <link href="<c:url value="/resources/css/shopizer.css" />"
+ rel="stylesheet" />
+
+
+ <style type=text/css>
+.sm label {
+ color: #EBEBEB;
+ font-size: 16px;
+}
+
+.sm a {
+ color: #EBEBEB;
+ font-size: 16px;
+}
+
+
+
+
+
+</style>
+
+ <script src="<c:url value="/resources/js/bootstrap/jquery.js" />"></script>
+ <script type="text/javascript" src="<c:url value="/resources/js/jquery-cookie.js"/>"></script>
+ <script src="<c:url value="/resources/js/bootstrap/bootstrap-modal.js" />"></script>
+
+
+
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_Core.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_Foundation.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_Containers.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_Grids.js" />"></script>
+ <script SRC="<c:url value="/resources/smart-client/system/modules/ISC_DataBinding.js" />"></script>
+
+
+
+ <script language="javascript">
+
+ function getUserInformation() {
+ // get the form values
+ $('#securityQtn1Select').empty();
+ $('#securityQtn2Select').empty();
+ $('#securityQtn3Select').empty();
+ $('#answer1').val('');
+ $('#answer2').val('');
+ $('#answer3').val('');
+ var userName = $('#username').val();
+ if(!userName){
+ alert("<s:message code="message.username.required" text="User name is required" />");
+ }else{
+ $.ajax({
+ type: 'POST',
+ dataType: "json",
+ url: "<c:url value="/admin/users/resetPassword.html" />",
+ data: "username="+ userName ,
+ success: function(response) {
+ var msg = isc.XMLTools.selectObjects(response, "/response/statusMessage");
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+ $("#getPassword").modal('hide'),
+ $('#getSecurityQtn').modal({
+ backdrop: true
+ })
+
+ var data = isc.XMLTools.selectObjects(response, "/response/data");
+ if(data && data.length>0) {
+
+ $('#question1').text(data[0].question1);
+ $('#question2').text(data[0].question2);
+ $('#question3').text(data[0].question3);
+
+ }
+ } else {
+ if(msg!=null && msg !='') {
+ alert(msg);
+ }
+ }
+
+ },
+ error: function(jqXHR,textStatus,errorThrown) {
+ alert('Error ' + jqXHR + "-" + textStatus + "-" + errorThrown);
+ }
+
+ });
+ }
+ }
+
+
+ function doSecurityQtnSubmit() {
+
+ var answer1 = $('#answer1').val();
+ var answer2 = $('#answer2').val();
+ var answer3 = $('#answer3').val();
+
+ if(!answer1){
+ alert("<s:message code="security.answer.question1.message" text="Please answer to security question 1"/>");
+
+ }else if(!answer2){
+ alert("<s:message code="security.answer.question2.message" text="Please answer to security question 2"/>");
+
+ }else if(!answer3){
+ alert("<s:message code="security.answer.question3.message" text="Please answer to security question 3"/>");
+
+ }else{
+
+ $.ajax({
+ type: 'POST',
+ dataType: "json",
+ url: "<c:url value="/admin/users/resetPasswordSecurityQtn.html" />",
+ data: "answer1="+ answer1+"&answer2="+ answer2+"&answer3="+ answer3,
+ success: function(response) {
+ //console.log("responcesajid "+response);
+ //console.log(response);
+ var msg = isc.XMLTools.selectObjects(response, "/response/statusMessage");
+ var status = isc.XMLTools.selectObjects(response, "/response/status");
+ if(status==0 || status ==9999) {
+ $("#getSecurityQtn").modal('hide')
+ $('#finalWindow').modal({
+ backdrop: true
+ })
+ $("#finaltext").val (msg);
+ var div = document.getElementById('finaltext1');
+ div.innerHTML = msg;
+ var data = isc.XMLTools.selectObjects(response, "/response/data");
+ } else {
+ if(msg!=null && msg !='') {
+ $("#getSecurityQtn").modal('hide')
+ $('#finalWindow').modal({
+ backdrop: true
+ })
+ $("#finaltext").val (msg);
+ var div = document.getElementById('finaltext1');
+ div.innerHTML = msg;
+ }
+ }
+
+ }
+ });
+
+ }
+ }
+
+ $(document)
+ .ready(
+ function() {
+
+ $('#changePassword').click(function() {
+ //$('#getPassword').show();
+ $('#username').val('');
+ $('#getPassword').modal({
+ backdrop: true
+ })
+ })
+
+
+ var username = $.cookie('usernamecookie');
+ if (username != null && username != '') {
+ $('#j_username').val(username);
+ $('#remember').attr('checked', true);
+ }
+
+
+ $("#formSubmitButton")
+ .click(
+ function() {
+
+
+
+ var hasError = false;
+ $('#j_username_help').html("");
+ $('#j_password_help').html("");
+
+
+ if ($('#remember').attr('checked')) {
+ $.cookie('usernamecookie', $(
+ '#j_username').val(), {
+ expires : 1024,
+ path : '/'
+ });
+ } else {
+ $.cookie('usernamecookie',
+ null, {
+ expires : 1024,
+ path : '/'
+ });
+ }
+ if ($.trim($('#j_username').val()) == '') {
+ hasError = true;
+ $('#j_username_help')
+ .html(
+ "<font color='red' size='4'><strong>*</strong></font>");
+ }
+
+ if ($.trim($('#j_password').val()) == '') {
+ hasError = true;
+ $('#j_password_help')
+ .html(
+ "<font color='red' size='4'><strong>*</strong></font>");
+ }
+
+ if (!hasError) {
+ $("#logonForm").submit();
+ }
+
+ });
+
+ });
+</script>
+ </head>
+
+ <body>
+
+ <div id="tabbable" class="sm">
+
+ <br />
+ <br />
+
+ <div id=logon>
+
+
+
+
+
+
+
+
+
+ <div class="row">
+ <c:if test="${not empty param.login_error}">
+ <div class="alert alert-error">
+ <s:message code="errors.invalidcredentials"
+ text="Invalid username or password" />
+ </div>
+ </c:if>
+ </div>
+
+
+
+ <div id="login-box">
+
+
+ <div class="row">
+ <div style="float: left; width: 180px;">
+ <p class="lead">
+ <s:message code="button.label.logon" text="Logon" />
+ </p>
+ </div>
+ <div style="float: right;">
+ <img alt="go to www.shopizer.com"
+ src="<c:url value="/resources/img/shopizer_small.png" />">
+ </div>
+ </div>
+
+ <div class="row">
+ <div id="controls">
+
+ <form method="post" id="logonForm" class="form-horizontal" action="<c:url value="/admin/j_spring_security_check"/>">
+ <div class="control-group">
+ <label class="control-label" for="inputUser">
+ <s:message code="label.username" text="Username" />
+ </label>
+ <div class="controls">
+ <input type="text" id="j_username" name="j_username"
+ placeholder="<s:message code="label.username" text="Username"/>">
+ <span id="j_username_help" class="help-inline"></span>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="inputPassword">
+ <s:message code="label.password" text="Password" />
+ </label>
+
+ <div class="controls">
+ <input type="password" id="j_password" name="j_password"
+ placeholder="<s:message code="label.password" text="Password"/>">
+ <span id="j_password_help" class="help-inline"></span>
+ </div>
+ </div>
+ <div class="control-group">
+ <div class="controls">
+ <label class="checkbox">
+ <input type="checkbox" id="remember">
+ <s:message code="label.logonform.rememberusername"
+ text="Remember my user name" />
+ <br/>
+ <a href="#" id="changePassword"><s:message code="label.logonform.forgotpassword" text="Forgot Password"/>?</a>
+ </label>
+ <a href="#" class="btn" id="formSubmitButton"> <s:message
+ code="button.label.logon" text="button.label.submit2" /> </a>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+
+
+
+ <!-- code for reset password-username prompt sajid shajahan -->
+ <div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="getPassword" style="display: none;">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal"
+ aria-hidden="true">
+ ×
+ </button>
+ <h3 id="myModalLabel" style="color:#333333;">
+ <s:message code="label.logonform.resetpassword" text="Password reset"/>
+ </h3>
+ </div>
+ <form method="post" id="resetPasswordForm" class="form-horizontal"
+ action="#">
+ <div class="modal-body">
+ <p>
+
+ <div class="control-group">
+ <label class="control-label" for="inputUser" style="color:#333333;">
+ <s:message code="label.username" text="Username" />
+ </label>
+ <div class="controls">
+ <input type="text" id="username" name="username"
+ placeholder="<s:message code="label.username" text="Username"/>">
+
+
+ <span id="username_help" class="help-inline"></span>
+ </div>
+ </div>
+
+
+ </form>
+ </p>
+ </div>
+ <div class="modal-footer">
+ <div class="controls">
+ <input type="button" value="<s:message code="label.generic.next" text="Next" />" onclick="getUserInformation()" class="btn" >
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+
+
+
+
+ <!-- code for reset password-security question prompt sajid shajahan -->
+ <div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="getSecurityQtn" style="display: none;">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal"
+ aria-hidden="true">
+ ×
+ </button>
+ <h3 id="myModalLabel" style="color:#333333;">
+ <s:message code="label.logonform.securityquestion" text="Password reset"/>
+ </h3>
+ </div>
+ <form method="post" id="resetPasswordForm" class="form-horizontal"
+ action="#">
+ <div class="modal-body">
+ <p>
+
+ <div class="control-group">
+
+ <label class="control-label" for="inputUser" style="color:#333333;" id="question1">
+ <s:message code="security.question1" text="" />
+ </label>
+ <div class="controls">
+ <input type="text" id="answer1" name="answer1"
+ placeholder="<s:message code="security.answer.question1.message" text="answer1"/>">
+
+
+ </div>
+
+
+ </div>
+
+ <div class="control-group">
+ <label class="control-label" for="inputUser" style="color:#333333;" id="question2">
+ <s:message code="security.question2" text="" />
+ </label>
+ <div class="controls">
+ <input type="text" id="answer2" name="answer2"
+ placeholder="<s:message code="security.answer.question2.message" text="answer2"/>">
+
+
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="control-label" for="inputUser" style="color:#333333;" id="question3">
+ <s:message code="security.question3" text="" />
+ </label>
+ <div class="controls">
+ <input type="text" id="answer3" name="answer3"
+ placeholder="<s:message code="security.answer.question3.message" text="answer3"/>">
+
+
+
+ </div>
+ </div>
+
+ </form>
+ </p>
+ </div>
+ <div class="modal-footer">
+ <div class="controls">
+ <!-- <a href="#" class="btn" id="passwordResetSubmitButton">
+ <s:message code="button.label.submit2" text="Submit" /> </a> -->
+ <input type="button" value="Submit" onclick="doSecurityQtnSubmit()" class="btn" >
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+
+
+
+ <!-- code for reset password-final window sajid shajahan -->
+ <div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="finalWindow" style="display: none;">
+ <!--<div class="modal" id="getPassword" tabindex="-1" role="dialog" class="modal hide fade" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;">-->
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal"
+ aria-hidden="true">
+ ×
+ </button>
+ <h3 id="myModalLabel" style="color:#333333;">
+ <s:message code="" text="Shopizer"/>
+ </h3>
+ </div>
+ <form method="post" id="resetPasswordForm" class="form-horizontal"
+ action="#">
+ <div class="modal-body">
+ <p>
+ <h3><center><div id="finaltext1"></div></center></h3>
+ <!-- <div class="control-group">
+
+ <label class="control-label" for="inputUser" style="color:#333333;">
+ <h3><div id="finaltext1"></div></h3>
+ </label>
+ <div class="controls">
+
+ </div>
+
+
+ </div>
+ -->
+
+ </form>
+ </p>
+ </div>
+ <div class="modal-footer">
+ <div class="controls">
+ <button data-dismiss="modal" class="btn">Close</button>
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+
+
+
+
+
+ </div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/WEB-INF/views/admin/unauthorized.jsp b/sm-shop/src/main/webapp/WEB-INF/views/admin/unauthorized.jsp
new file mode 100755
index 0000000..8e0f510
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/views/admin/unauthorized.jsp
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html>
+
+ <%
+ response.setCharacterEncoding("UTF-8");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setHeader("Pragma", "no-cache");
+ response.setDateHeader("Expires", -1);
+ %>
+
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+ <%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
+ <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+ <%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
+
+ <%@page contentType="text/html"%>
+ <%@page pageEncoding="UTF-8"%>
+
+
+
+
+
+ <head>
+ <meta http-equiv="Pragma" content="no-cache">
+ <meta http-equiv="expires" content="0">
+ <title><s:message code="label.storeadministration"
+ text="Store administration" />
+ </title>
+
+
+
+
+<style type=text/css>
+#logon {
+ margin: 0px auto;
+ width: 550px
+}
+
+
+#controls {
+ margin-left: -50px;
+ margin-top: 30px;
+}
+
+
+
+
+</style>
+
+
+
+
+ <link
+ href="<c:url value="/resources/css/bootstrap/css/sm-bootstrap.css" />"
+ rel="stylesheet" />
+ <link
+ href="<c:url value="/resources/css/sm-bootstrap-responsive.css" />"
+ rel="stylesheet" />
+ <link href="<c:url value="/resources/css/shopizer.css" />"
+ rel="stylesheet" />
+
+
+ <style type=text/css>
+.sm label {
+ color: #EBEBEB;
+ font-size: 16px;
+}
+
+.sm a {
+ color: #EBEBEB;
+ font-size: 16px;
+}
+
+
+
+
+
+</style>
+
+
+ </head>
+
+ <body>
+
+ <div id="tabbable" class="sm">
+
+ <br />
+ <br />
+
+ <div id=logon>
+
+ <div class="row">
+ <h3>
+ <s:message code="message.login.duallogin" text="Dual login not authorized on the same browser"/>
+
+ </h3>
+ </div>
+
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/sm-shop/src/main/webapp/WEB-INF/views/error/access_denied.jsp b/sm-shop/src/main/webapp/WEB-INF/views/error/access_denied.jsp
new file mode 100644
index 0000000..24f46ff
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/views/error/access_denied.jsp
@@ -0,0 +1,53 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+ <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+ <c:set var="lang" scope="request" value="${requestScope.locale.language}"/>
+
+
+ <html xmlns="http://www.w3.org/1999/xhtml">
+
+
+ <head>
+ <meta charset="utf-8">
+ <title><s:message code="message.error" text="An error occured !"/></title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="<c:url value="/resources/templates/bootstrap/css/bootstrap.min.css" />" rel="stylesheet">
+
+ </head>
+
+ <body>
+
+ <div id="pageContainer" class="container">
+
+ <table>
+ <tr>
+ <td><img src="<c:url value="/resources/img/icon_error.png"/>" width="50"></td>
+ <td><h3><s:message code="message.access.denied" text="Access denied" /></h3></td>
+ </tr>
+
+ </table>
+
+ </div>
+
+ </body>
+
+ </html>
+
diff --git a/sm-shop/src/main/webapp/WEB-INF/views/error/generic_error.jsp b/sm-shop/src/main/webapp/WEB-INF/views/error/generic_error.jsp
new file mode 100644
index 0000000..cb31218
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/views/error/generic_error.jsp
@@ -0,0 +1,57 @@
+<%
+response.setCharacterEncoding("UTF-8");
+response.setHeader("Cache-Control","no-cache");
+response.setHeader("Pragma","no-cache");
+response.setDateHeader ("Expires", -1);
+%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+ <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+ <c:set var="lang" scope="request" value="${requestScope.locale.language}"/>
+
+
+ <html xmlns="http://www.w3.org/1999/xhtml">
+
+
+ <head>
+ <meta charset="utf-8">
+ <title><s:message code="message.error" text="An error occured !"/></title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="<c:url value="/resources/templates/bootstrap/css/bootstrap.min.css" />" rel="stylesheet">
+
+ </head>
+
+ <body>
+
+ <div id="pageContainer" class="container">
+
+ <table>
+ <tr>
+ <td><img src="<c:url value="/resources/img/icon_error.png"/>" width="50"></td>
+ <td><h3><s:message code="message.error" text="An error occured with this request"/></h3></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <srong><c:out value="${stackError}"/></srong>
+ </td>
+ </tr>
+ </table>
+
+ </div>
+
+ </body>
+
+ </html>
+
diff --git a/sm-shop/src/main/webapp/WEB-INF/views/shop.jsp b/sm-shop/src/main/webapp/WEB-INF/views/shop.jsp
new file mode 100644
index 0000000..fdc0ebe
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/views/shop.jsp
@@ -0,0 +1 @@
+<meta http-equiv="refresh" content="0; URL=<%=request.getContextPath() %>/shop">
\ No newline at end of file
sm-shop/src/main/webapp/WEB-INF/web.xml 60(+60 -0)
diff --git a/sm-shop/src/main/webapp/WEB-INF/web.xml b/sm-shop/src/main/webapp/WEB-INF/web.xml
new file mode 100755
index 0000000..5a0d1b0
--- /dev/null
+++ b/sm-shop/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
+ <context-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>
+ classpath:spring/spring-context.xml
+ /WEB-INF/spring/root-context.xml
+ /WEB-INF/spring/appServlet/shopizer-properties.xml
+ /WEB-INF/spring/appServlet/shopizer-security.xml
+ </param-value>
+ </context-param>
+ <listener>
+ <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+ </listener>
+ <listener>
+ <listener-class>
+ org.springframework.web.context.request.RequestContextListener
+ </listener-class>
+ </listener>
+ <servlet>
+ <servlet-name>appServlet</servlet-name>
+ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+ <init-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>
+ classpath:spring/spring-context.xml
+ /WEB-INF/spring/appServlet/shopizer-properties.xml
+ /WEB-INF/spring/appServlet/servlet-context.xml
+ </param-value>
+ </init-param>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>appServlet</servlet-name>
+ <url-pattern>/</url-pattern>
+ </servlet-mapping>
+
+
+ <filter>
+ <filter-name>springSecurityFilterChain</filter-name>
+ <filter-class>
+ org.springframework.web.filter.DelegatingFilterProxy
+ </filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>springSecurityFilterChain</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+ <welcome-file-list>
+ <welcome-file></welcome-file>
+ </welcome-file-list>
+
+
+
+
+
+
+
+</web-app>
\ No newline at end of file
diff --git a/sm-shop/src/test/java/com/salesmanager/test/shop/controller/category/rest/CategoryManagementAPITest.java b/sm-shop/src/test/java/com/salesmanager/test/shop/controller/category/rest/CategoryManagementAPITest.java
new file mode 100644
index 0000000..2faf3e7
--- /dev/null
+++ b/sm-shop/src/test/java/com/salesmanager/test/shop/controller/category/rest/CategoryManagementAPITest.java
@@ -0,0 +1,120 @@
+package com.salesmanager.test.shop.controller.category.rest;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.ObjectWriter;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.crypto.codec.Base64;
+import org.springframework.web.client.RestTemplate;
+
+import com.salesmanager.web.entity.catalog.category.Category;
+import com.salesmanager.web.entity.catalog.category.CategoryDescription;
+import com.salesmanager.web.entity.catalog.category.PersistableCategory;
+import com.salesmanager.web.entity.catalog.category.ReadableCategory;
+
+public class CategoryManagementAPITest {
+
+ private RestTemplate restTemplate;
+
+
+ private HttpHeaders getHeader(){
+ HttpHeaders headers = new HttpHeaders();
+ MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8"));
+ //MediaType.APPLICATION_JSON //for application/json
+ headers.setContentType(mediaType);
+ //Basic Authentication
+ String authorisation = "admin" + ":" + "password";
+ byte[] encodedAuthorisation = Base64.encode(authorisation.getBytes());
+ headers.add("Authorization", "Basic " + new String(encodedAuthorisation));
+ return headers;
+ }
+
+ /**
+ * Read - GET a category by id
+ * @throws Exception
+ */
+ @Test
+ @Ignore
+ public void getCategory() throws Exception {
+ restTemplate = new RestTemplate();
+
+ HttpEntity<String> httpEntity = new HttpEntity<String>(getHeader());
+
+ ResponseEntity<ReadableCategory> response = restTemplate.exchange("http://localhost:8080/sm-shop/services/public/DEFAULT/category/100?lang=en", HttpMethod.GET, httpEntity, ReadableCategory.class);
+
+ if(response.getStatusCode() != HttpStatus.OK){
+ throw new Exception();
+ }else{
+ System.out.println(response.getBody() + " Category record found.");
+ }
+ }
+
+
+
+ /**
+ * Creates - POST a category for a given store
+ * @throws Exception
+ */
+ @Test
+ @Ignore
+ public void postCategory() throws Exception {
+ restTemplate = new RestTemplate();
+
+ PersistableCategory newCategory = new PersistableCategory();
+ newCategory.setCode("javascript");
+ newCategory.setSortOrder(1);
+ newCategory.setVisible(true);
+
+ Category parent = new Category();
+ parent.setId(4L);
+
+ newCategory.setParent(parent);
+
+ CategoryDescription description = new CategoryDescription();
+ description.setLanguage("en");
+ description.setName("Javascript");
+ description.setFriendlyUrl("javascript");
+ description.setTitle("Javascript");
+
+ List<CategoryDescription> descriptions = new ArrayList<CategoryDescription>();
+ descriptions.add(description);
+
+ newCategory.setDescriptions(descriptions);
+
+ ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = writer.writeValueAsString(newCategory);
+
+ System.out.println(json);
+
+
+ HttpEntity<String> entity = new HttpEntity<String>(json, getHeader());
+
+ ResponseEntity response = restTemplate.postForEntity("http://localhost:8080/sm-shop/services/private/DEFAULT/category", entity, PersistableCategory.class);
+
+ PersistableCategory cat = (PersistableCategory) response.getBody();
+ System.out.println("New Category ID : " + cat.getId());
+ }
+
+ @Test
+ @Ignore
+ public void deleteCategory() throws Exception {
+ restTemplate = new RestTemplate();
+
+ HttpEntity<String> httpEntity = new HttpEntity<String>(getHeader());
+
+ restTemplate.exchange("http://localhost:8080/sm-shop/services/DEFAULT/category/100", HttpMethod.DELETE, httpEntity, Category.class);
+ System.out.println("Category id 100 Deleted.");
+ }
+
+
+}
diff --git a/sm-shop/src/test/java/com/salesmanager/test/shop/controller/customer/rest/CustomerRESTControllerTest.java b/sm-shop/src/test/java/com/salesmanager/test/shop/controller/customer/rest/CustomerRESTControllerTest.java
new file mode 100644
index 0000000..54ba864
--- /dev/null
+++ b/sm-shop/src/test/java/com/salesmanager/test/shop/controller/customer/rest/CustomerRESTControllerTest.java
@@ -0,0 +1,184 @@
+package com.salesmanager.test.shop.controller.customer.rest;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.ObjectWriter;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.crypto.codec.Base64;
+import org.springframework.web.client.RestTemplate;
+
+import com.salesmanager.web.entity.customer.Address;
+import com.salesmanager.web.entity.customer.Customer;
+import com.salesmanager.web.entity.customer.PersistableCustomer;
+import com.salesmanager.web.entity.customer.ReadableCustomer;
+import com.salesmanager.web.entity.customer.attribute.CustomerOptionDescription;
+import com.salesmanager.web.entity.customer.attribute.CustomerOptionValueDescription;
+import com.salesmanager.web.entity.customer.attribute.PersistableCustomerOption;
+import com.salesmanager.web.entity.customer.attribute.PersistableCustomerOptionValue;
+
+
+public class CustomerRESTControllerTest {
+
+ private RestTemplate restTemplate;
+
+ private Long testCustmerID;
+
+
+
+ public HttpHeaders getHeader(){
+ HttpHeaders headers = new HttpHeaders();
+ //headers.setContentType(MediaType.APPLICATION_JSON);
+ MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8"));
+ headers.setContentType(mediaType);
+ //Basic Authentication
+ String authorisation = "admin" + ":" + "password";
+ byte[] encodedAuthorisation = Base64.encode(authorisation.getBytes());
+ headers.add("Authorization", "Basic " + new String(encodedAuthorisation));
+ return headers;
+ }
+
+ @Test
+ @Ignore
+ public void postCustomerOptionValue() throws Exception {
+ restTemplate = new RestTemplate();
+
+ PersistableCustomerOptionValue optionValue = new PersistableCustomerOptionValue();
+ optionValue.setCode("yes");
+ optionValue.setOrder(0);
+
+ CustomerOptionValueDescription description = new CustomerOptionValueDescription();
+ description.setLanguage("en");
+ description.setName("Yes");
+
+ List<CustomerOptionValueDescription> descriptions = new ArrayList<CustomerOptionValueDescription>();
+ descriptions.add(description);
+
+ optionValue.setDescriptions(descriptions);
+
+ ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = writer.writeValueAsString(optionValue);
+
+ System.out.println(json);
+
+
+ HttpEntity<String> entity = new HttpEntity<String>(json, getHeader());
+
+ ResponseEntity response = restTemplate.postForEntity("http://localhost:8080/sm-shop/services/private/DEFAULT/customer/optionValue", entity, PersistableCustomerOptionValue.class);
+
+ PersistableCustomerOptionValue optVal = (PersistableCustomerOptionValue) response.getBody();
+ System.out.println("New Option value ID : " + optVal .getId());
+
+ }
+
+ @Test
+ @Ignore
+ public void postCustomerOption() throws Exception {
+ restTemplate = new RestTemplate();
+
+ PersistableCustomerOption option = new PersistableCustomerOption();
+ option.setCode("subscribetonewsletter");
+ option.setOrder(0);
+
+
+ CustomerOptionDescription description = new CustomerOptionDescription();
+ description.setLanguage("en");
+ description.setName("Subscribe to newsletter?");
+
+ List<CustomerOptionDescription> descriptions = new ArrayList<CustomerOptionDescription>();
+ descriptions.add(description);
+
+ option.setDescriptions(descriptions);
+
+ ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = writer.writeValueAsString(option);
+
+ System.out.println(json);
+
+
+ HttpEntity<String> entity = new HttpEntity<String>(json, getHeader());
+
+ ResponseEntity response = restTemplate.postForEntity("http://localhost:8080/sm-shop/services/private/DEFAULT/customer/option", entity, PersistableCustomerOption.class);
+
+ PersistableCustomerOption opt = (PersistableCustomerOption) response.getBody();
+ System.out.println("New Option ID : " + opt .getId());
+
+ }
+
+
+ @Test
+ @Ignore
+ public void getCustomers() throws Exception {
+
+
+ //get customers
+ restTemplate = new RestTemplate();
+
+ HttpEntity<String> httpEntity = new HttpEntity<String>(getHeader());
+
+ ResponseEntity<ReadableCustomer[]> response = restTemplate.exchange("http://localhost:8080/sm-shop/services/private/DEFAULT/customer", HttpMethod.GET, httpEntity, ReadableCustomer[].class);
+
+ if(response.getStatusCode() != HttpStatus.OK){
+ throw new Exception();
+ }else{
+ System.out.println(response.getBody().length + " Customer records found.");
+ }
+ }
+
+ @Test
+ @Ignore
+ public void postCustomer() throws Exception {
+ restTemplate = new RestTemplate();
+
+
+ PersistableCustomer customer = new PersistableCustomer();
+ customer.setEmailAddress("carl@csticonsulting.com");
+ customer.setGender("M");
+ customer.setLanguage("en");
+ customer.setEncodedPassword("5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8");
+ customer.setUserName("testuser2");
+
+ Address address = new Address();
+ address.setAddress("123 my street");
+ address.setCity("Boucherville");
+ address.setPostalCode("H2H 2H2");
+ address.setFirstName("Johny");
+ address.setLastName("BGood");
+ address.setCountry("CA");
+ address.setZone("QC");
+
+ customer.setBilling(address);
+
+ ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = writer.writeValueAsString(customer);
+
+ HttpEntity<String> entity = new HttpEntity<String>(json, getHeader());
+
+ ResponseEntity response = restTemplate.postForEntity("http://localhost:8080/sm-shop/services/private/DEFAULT/customer", entity, PersistableCustomer.class);
+
+ Customer cust = (Customer) response.getBody();
+ System.out.println("New Customer ID : " + cust.getId());
+ testCustmerID = cust.getId();
+ }
+
+ @Test
+ @Ignore
+ public void deleteCustomer() throws Exception {
+ restTemplate = new RestTemplate();
+
+ HttpEntity<String> httpEntity = new HttpEntity<String>(getHeader());
+
+ restTemplate.exchange("http://localhost:8080/sm-shop/services/private/DEFAULT/customer/"+testCustmerID, HttpMethod.DELETE, httpEntity, Customer.class);
+ System.out.println("Customer "+testCustmerID+" Deleted.");
+ }
+
+}
diff --git a/sm-shop/src/test/java/com/salesmanager/test/shop/controller/product/rest/ProductManagementAPITest.java b/sm-shop/src/test/java/com/salesmanager/test/shop/controller/product/rest/ProductManagementAPITest.java
new file mode 100644
index 0000000..286b376
--- /dev/null
+++ b/sm-shop/src/test/java/com/salesmanager/test/shop/controller/product/rest/ProductManagementAPITest.java
@@ -0,0 +1,319 @@
+package com.salesmanager.test.shop.controller.product.rest;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.ObjectWriter;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.crypto.codec.Base64;
+import org.springframework.web.client.RestTemplate;
+
+import com.salesmanager.core.business.catalog.product.model.attribute.ProductOptionType;
+import com.salesmanager.web.entity.catalog.manufacturer.ManufacturerDescription;
+import com.salesmanager.web.entity.catalog.manufacturer.PersistableManufacturer;
+import com.salesmanager.web.entity.catalog.product.PersistableProductReview;
+import com.salesmanager.web.entity.catalog.product.ReadableProduct;
+import com.salesmanager.web.entity.catalog.product.attribute.PersistableProductOption;
+import com.salesmanager.web.entity.catalog.product.attribute.PersistableProductOptionValue;
+import com.salesmanager.web.entity.catalog.product.attribute.ProductOptionDescription;
+import com.salesmanager.web.entity.catalog.product.attribute.ProductOptionValueDescription;
+
+public class ProductManagementAPITest {
+
+ private RestTemplate restTemplate;
+
+ private Long testCategoryID;
+
+ private Long testProductID;
+
+
+ public HttpHeaders getHeader(){
+ HttpHeaders headers = new HttpHeaders();
+ MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8"));
+ //MediaType.APPLICATION_JSON //for application/json
+ headers.setContentType(mediaType);
+ //Basic Authentication
+ String authorisation = "admin" + ":" + "password";
+ byte[] encodedAuthorisation = Base64.encode(authorisation.getBytes());
+ headers.add("Authorization", "Basic " + new String(encodedAuthorisation));
+ return headers;
+ }
+
+ /**
+ * Creates a Manufacturer reference object that can be used when creating
+ * a product
+ * @throws Exception
+ */
+ @Test
+ @Ignore
+ public void createManufacturer() throws Exception {
+
+ ManufacturerDescription description = new ManufacturerDescription();
+ description.setLanguage("en");
+ description.setName("Tag Heuer");
+ description.setFriendlyUrl("tag-watches");
+ description.setTitle("Tag Heuer");
+
+ List<ManufacturerDescription> descriptions = new ArrayList<ManufacturerDescription>();
+ descriptions.add(description);
+
+ PersistableManufacturer manufacturer = new PersistableManufacturer();
+ manufacturer.setOrder(1);
+ manufacturer.setDescriptions(descriptions);
+
+
+ ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = writer.writeValueAsString(manufacturer);
+
+ System.out.println(json);
+
+/* {
+ "descriptions" : [ {
+ "name" : "Tag Heuer",
+ "description" : null,
+ "friendlyUrl" : "tag-watches",
+ "keyWords" : null,
+ "highlights" : null,
+ "metaDescription" : null,
+ "title" : "Tag Heuer",
+ "language" : "en",
+ "id" : 0
+ } ],
+ "order" : 1,
+ "id" : 0
+ }*/
+
+ restTemplate = new RestTemplate();
+
+
+ HttpEntity<String> entity = new HttpEntity<String>(json, getHeader());
+
+ ResponseEntity response = restTemplate.postForEntity("http://localhost:8080/sm-shop/shop/services/private/manufacturer/DEFAULT", entity, PersistableManufacturer.class);
+
+ PersistableManufacturer manuf = (PersistableManufacturer) response.getBody();
+ System.out.println("New Manufacturer ID : " + manuf.getId());
+
+
+ }
+
+ /**
+ * Creates a ProductReview
+ * requires an existing Customer and an existing Product
+ * @throws Exception
+ */
+ @Test
+ @Ignore
+ public void createProductReview() throws Exception {
+
+ //requires an existing product
+ //requires an existing customer
+ PersistableProductReview review = new PersistableProductReview();
+ review.setCustomerId(1L);
+ review.setProductId(1L);
+ review.setLanguage("en");
+ review.setRating(2D);//rating is on 5
+ review.setDescription("Not as good as expected. From what i understood that was supposed to be premium quality but unfortunately i had to return the item after one week... Verry disapointed !");
+ review.setDate("2013-06-06");
+
+ ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = writer.writeValueAsString(review);
+
+ System.out.println(json);
+
+ /**
+ * {
+ "description" : "Excellent product !",
+ "productId" : 1,
+ "rating" : 4.5,
+ "customerId" : 1,
+ "date" : "2013-06-06",
+ "language" : "en"
+ }
+ */
+
+
+ restTemplate = new RestTemplate();
+
+
+ HttpEntity<String> entity = new HttpEntity<String>(json, getHeader());
+
+ ResponseEntity response = restTemplate.postForEntity("http://localhost:8080/sm-shop/shop/services/private/product/review/DEFAULT", entity, PersistableProductReview.class);
+
+ PersistableProductReview rev = (PersistableProductReview) response.getBody();
+ System.out.println("New ProductReview ID : " + rev.getId());
+
+
+ }
+
+ /**
+ * Creates a product option value that can be used to create a product attribute
+ * when creating a new product
+ * @throws Exception
+ */
+ @Test
+ @Ignore
+ public void createOptionValue() throws Exception {
+
+ ProductOptionValueDescription description = new ProductOptionValueDescription();
+ description.setLanguage("en");
+ description.setName("Red");
+
+ List<ProductOptionValueDescription> descriptions = new ArrayList<ProductOptionValueDescription>();
+ descriptions.add(description);
+
+ PersistableProductOptionValue optionValue = new PersistableProductOptionValue();
+ optionValue.setOrder(1);
+ optionValue.setCode("colorred");
+ optionValue.setDescriptions(descriptions);
+
+
+ ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = writer.writeValueAsString(optionValue);
+
+ System.out.println(json);
+
+ /**
+ * {
+ "descriptions" : [ {
+ "name" : "Red",
+ "description" : null,
+ "friendlyUrl" : null,
+ "keyWords" : null,
+ "highlights" : null,
+ "metaDescription" : null,
+ "title" : null,
+ "language" : "en",
+ "id" : 0
+ } ],
+ "order" : 1,
+ "code" : "color-red",
+ "id" : 0
+ }
+ */
+
+ restTemplate = new RestTemplate();
+
+ HttpEntity<String> entity = new HttpEntity<String>(json, getHeader());
+
+ ResponseEntity response = restTemplate.postForEntity("http://localhost:8080/sm-shop/shop/services/private/product/optionValue/DEFAULT", entity, PersistableProductOptionValue.class);
+
+ PersistableProductOptionValue opt = (PersistableProductOptionValue) response.getBody();
+ System.out.println("New optionValue ID : " + opt.getId());
+
+ }
+
+ /**
+ * Creates a new ProductOption
+ * @throws Exception
+ */
+ @Test
+ @Ignore
+ public void createOption() throws Exception {
+
+ ProductOptionDescription description = new ProductOptionDescription();
+ description.setLanguage("en");
+ description.setName("Color");
+
+ List<ProductOptionDescription> descriptions = new ArrayList<ProductOptionDescription>();
+ descriptions.add(description);
+
+ PersistableProductOption option = new PersistableProductOption();
+ option.setOrder(1);
+ option.setCode("color");
+ option.setType(ProductOptionType.Select.name());
+ option.setDescriptions(descriptions);
+
+
+ ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = writer.writeValueAsString(option);
+
+ System.out.println(json);
+
+ /**
+ * {
+ "descriptions" : [ {
+ "name" : "Color",
+ "description" : null,
+ "friendlyUrl" : null,
+ "keyWords" : null,
+ "highlights" : null,
+ "metaDescription" : null,
+ "title" : null,
+ "language" : "en",
+ "id" : 0
+ } ],
+ "type" : SELECT,
+ "order" : 1,
+ "code" : "color",
+ "id" : 0
+ }
+ */
+
+ restTemplate = new RestTemplate();
+
+ HttpEntity<String> entity = new HttpEntity<String>(json, getHeader());
+
+ ResponseEntity response = restTemplate.postForEntity("http://localhost:8080/sm-shop/shop/services/private/product/option/DEFAULT", entity, PersistableProductOption.class);
+
+ PersistableProductOption opt = (PersistableProductOption) response.getBody();
+ System.out.println("New option ID : " + opt.getId());
+
+ }
+
+
+ @Test
+ @Ignore
+ public void getProducts() throws Exception {
+ restTemplate = new RestTemplate();
+
+ HttpEntity<String> httpEntity = new HttpEntity<String>(getHeader());
+
+ ResponseEntity<ReadableProduct[]> response = restTemplate.exchange("http://localhost:8080/sm-shop/shop/services/rest/products/DEFAULT/en/"+testCategoryID, HttpMethod.GET, httpEntity, ReadableProduct[].class);
+
+ if(response.getStatusCode() != HttpStatus.OK){
+ throw new Exception();
+ }else{
+ System.out.println(response.getBody().length + " Product records found.");
+ }
+ }
+
+ @Test
+ @Ignore
+ public void putProduct() throws Exception {
+ restTemplate = new RestTemplate();
+
+ //TODO: Put Product
+
+ }
+
+ @Test
+ @Ignore
+ public void postProduct() throws Exception {
+ restTemplate = new RestTemplate();
+
+ //TODO: Post Product
+
+
+ }
+
+ @Test
+ @Ignore
+ public void deleteProduct() throws Exception {
+ restTemplate = new RestTemplate();
+
+ HttpEntity<String> httpEntity = new HttpEntity<String>(getHeader());
+
+ restTemplate.exchange("http://localhost:8080/sm-shop/shop/services/rest/products/DEFAULT/en/"+testCategoryID+"/"+testProductID, HttpMethod.DELETE, httpEntity, ReadableProduct.class);
+ System.out.println("Product "+testProductID+" Deleted.");
+ }
+
+}
diff --git a/sm-shop/src/test/java/com/salesmanager/test/shop/controller/store/rest/ContactAPITest.java b/sm-shop/src/test/java/com/salesmanager/test/shop/controller/store/rest/ContactAPITest.java
new file mode 100644
index 0000000..f7b5f5b
--- /dev/null
+++ b/sm-shop/src/test/java/com/salesmanager/test/shop/controller/store/rest/ContactAPITest.java
@@ -0,0 +1,66 @@
+package com.salesmanager.test.shop.controller.store.rest;
+
+import java.nio.charset.Charset;
+
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.ObjectWriter;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import com.salesmanager.core.utils.ajax.AjaxResponse;
+import com.salesmanager.web.entity.shop.ContactForm;
+
+public class ContactAPITest {
+
+ private RestTemplate restTemplate;
+
+
+ private HttpHeaders getHeader(){
+ HttpHeaders headers = new HttpHeaders();
+ MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8"));
+ //MediaType.APPLICATION_JSON //for application/json
+ headers.setContentType(mediaType);
+ return headers;
+ }
+
+ /**
+ * Contact us email
+ * @throws Exception
+ */
+ @Test
+ @Ignore
+ public void contactUs() throws Exception {
+ restTemplate = new RestTemplate();
+
+
+ ContactForm contact = new ContactForm();
+ contact.setComment("A few good words for you!");
+ contact.setEmail("me@test.com");
+ contact.setName("Johny Depp");
+ contact.setSubject("Hello ny friend");
+
+ ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = writer.writeValueAsString(contact);
+
+ System.out.println(json);
+
+ HttpEntity<String> httpEntity = new HttpEntity<String>(json, getHeader());
+
+ ResponseEntity<AjaxResponse> response = restTemplate.exchange("http://localhost:8080/sm-shop/services/public/DEFAULT/contact", HttpMethod.POST, httpEntity, AjaxResponse.class);
+
+ if(response.getStatusCode() != HttpStatus.OK){
+ throw new Exception();
+ }else{
+ System.out.println(response.getBody() + " Success sending contact");
+ }
+ }
+
+
+}
sm-shop/src/test/resources/log4j.xml 41(+41 -0)
diff --git a/sm-shop/src/test/resources/log4j.xml b/sm-shop/src/test/resources/log4j.xml
new file mode 100755
index 0000000..1f1a0ff
--- /dev/null
+++ b/sm-shop/src/test/resources/log4j.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+ <!-- Appenders -->
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%-5p: %c - %m%n" />
+ </layout>
+ </appender>
+
+ <!-- Application Loggers -->
+ <logger name="mytld.mycompany.myapp">
+ <level value="info" />
+ </logger>
+
+ <!-- 3rdparty Loggers -->
+ <logger name="org.springframework.core">
+ <level value="info" />
+ </logger>
+
+ <logger name="org.springframework.beans">
+ <level value="info" />
+ </logger>
+
+ <logger name="org.springframework.context">
+ <level value="info" />
+ </logger>
+
+ <logger name="org.springframework.web">
+ <level value="info" />
+ </logger>
+
+ <!-- Root Logger -->
+ <root>
+ <priority value="info" />
+ <appender-ref ref="console" />
+ </root>
+
+</log4j:configuration>